Deux FPU dans un Mac, ça donne quoi ?

Dans mes archives, je suis retombé sur un document Apple qui expliquait un truc bizarre : il est potentiellement possible d’avoir deux FPU dans certains Mac, et le comportement est inattendu.

D’un point de vue technique, en 2022, il n’y a rien à dire : d’un point de vue technique, les coeurs de nos CPU ont plusieurs unités FPU, en réalité. Dans les années nonante, avec des puces dotées (évidemment) d’un seul coeur qui ne sont pas superscalaires, c’est différent. En cherchant un peu, je me suis rendu compte que Motorola avait prévu le coup avec la FPU 68882, mais qu’Apple n’en profite pas : il est possible de créer un système avec un 68030 et plusieurs FPU 68882… mais on ne parle pas de ça ici. D’ailleurs, j’avais déjà parlé de FPU il y a quelques années avec une petite comparaison entre la 68881 et la 68882.

Le cas LC III

Le Macintosh LC III est particulier dans le sens ou il a un emplacement pour une FPU 68882 (à la fréquence du CPU, 25 MHz) mais a aussi la possibilité d’utiliser une FPU « externe » sur une carte PDS. Quelques cartes réseau de l’époque ont un emplacement, et Siliconinsider vend aussi une carte pour ça. Mais le point à prendre en compte, expliqué dans la page Apple, c’est que le PDS fonctionne à 16 MHz… et donc la FPU aussi, par défaut. Enfin, la documentation Apple explique aussi (surtout) qu’il est possible d’avoir deux FPU – sur la carte mère ou sur la carte externe – mais qu’il est impossible de prédire la puce utilisée (et que ce n’est pas recommandé).

* Two FPUs: one on the logic board, and one on the expansion card. Both FPUs are on the processor bus. There’s no way to predict which one will respond to a given FPU cycle, and no way to assign priority.
Apple does NOT recommend removing an FPU from an expansion card and installing it on the logic board. Expansion card FPUs are 16 MHz, but the logic board requires a 25-MHz FPU.

J’ai donc effectué trois tests : une fois avec uniquement la FPU de la carte mère (25 MHz), une seconde fois avec la FPU d’une carte réseau (a priori 16 MHz) et une fois avec les deux FPU, pour voir le résultat. Le premier point, c’est que c’est assez corrélé à la fréquence : sur MacBench 3.0, on passe de 0.23 à 0.30 en passant de 16 à 25 MHz. On sent bien la différence et dans un Macintosh LC III, il semble donc logique de mettre la FPU dans l’emplacement dédié. Pour la fractel, c’est assez simple : c’est instable. Le Mac a planté lors de tous mes essais, après un temps plus ou moins long. Pour information, la FPU à 25 MHz effectue le calcul en 4 minutes et 10 secondes, et quand j’avais testé avec un Macintosh LC (le premier) avec une FPU externe (donc probablement à 16 MHz), il fallait plus de 7 minutes. J’ai aussi tenté avec une FPU 68881 dans une carte externe (plus lente) : le score MacBench est de 0.20 et la fractale est calculée en 5 minutes et 19 secondes.

Une carte réseau avec un emplacement FPU


La fractale


La fractale… plantée


FPU 68882 interne


FPU 68882 externe


FPU 68881 externe

Et avec les deux FPU ? Ca ne démarre pas. Enfin, plus exactement, ça démarre parfois et ça plante assez rapidement avant la fin du chargement de l’OS. J’ai testé avec deux cartes équipées d’une FPU sans succès. Je ne sais pas trop si ça vient de mes cartes réseau ou réellement de la présence de deux FPU (l’error type 11 est liée à la FPU) mais ça ne marche pas. Reste que dans les faits, si vous avez un Macintosh LC III, utiliser l’emplacement de la carte mère semble vraiment nécessaire, tant pour les performances que pour la stabilité.

Avec deux cartes, j’ai au mieux ceci


Ou ceci