Les CPU des Mac : Intel 80860
En 1990, pendant qu'Apple explorait les différentes options permettant de sortir de la famille "CISC" Motorola 68k la tête haute en préservant l'avenir du Macintosh, et de la même manière que Motorola explorait les CPU "RISC" avec sa nouvelle famille 88k, Intel avait fait un choix plus original avec le 80860 VLIW.
Et Apple l'a essayé, parmi d'autres idées assez farfelues comme le Scorpius du projet Aquarius, pour en faire la CPU principale de potentiels Macintosh.
80860 ou i860, on comprend dès le nommage que cette nouvelle famille Intel avait été conçue pour remplacer les x86, ce qui évidemment n'arriva pas.
i860 "64 bits"
Intel présenta le i860 comme 64 bits, mais il était en fait une CPU 32 bits avec un bus de données 64 bits ainsi que des capacités vectorielles qu'on retrouvera plus tard dans le MMX du Pentium.
Le bus de données 64 bits était indispensable au vu de ses performances théoriques, atteignables dans certains rares cas d'usage.
Pour le reste, on retrouvera un cache d'instruction de 4Ko et un cache de données de 8Ko avec un bus interne carrément 128 bits destiné à accélérer les traitements vectoriels, une unité de calcul entier, une unité de calcul flottant capable de réaliser une multiplication et une addition en parallèle ainsi qu'une unité graphique dédiée à la manipulation d'images.
Et un beau volume de registres, avec 32 registres entiers 32 bits auxquels s'ajoutent 32 registres flottants 32 bits aussi utilisables comme 16 registres 64 bits ou 8 registres 128 bits.
VLIW: exécution parallèle "dual-instruction"
On a abordé le "CISC" et le "RISC" au cours de cette série, mais VLIW quésaco?!?
Le plus intéressant est le mode dual-instructions où deux d'entre elles sont empaquetées dans un mot 32 bits, permettant d'utiliser à la fois l'unité "core" entière et soit l'unité flottante ou l'unité "graphique" à la fois, l'unité flottante pouvant exécuter une multiplication et une addition en parallèle, permettant alors d'exécuter 3 instructions à la fois!
De là vient le nom VLIW, car les deux micro-instructions sont empaquetées dans un mot 32 bits, ce qui pour l'époque était assez énorme si on compare cela avec les x86 32 bits où beaucoup d'instructions sont 8 bits.
Un immense progrès théorique: jusqu'à 3 opérations lancées par cycle via 2 instructions!
Plus de détails dans le manuel de référence du i860, mais en Anglais.
Optimisations par le compilateur et le développeur
Le premier problème c'est que le compilateur doit optimiser le code pour regrouper des instructions entre elle de manière efficace, et au début c'était très loin d'être parfait pour le i860.
On termine donc avec de l'optimisation à la main du code, on retrouvera cela chez NeXT par exemple avec ses routines graphiques, pour essayer de s'approcher des performances théoriques promises par Intel.
On peut y rajouter les "delayed branch", où l'instruction de branchement se trouve avant une ou plusieurs instructions qui sont quand-même exécutées dans tous les cas, des fois même au début de la boucle, et où il est quasi-impossible d'appeler une routine entre celle-ci et le saut effectif
Totalement ingérable pour les compilateurs de l'époque: la génération de code dépends du code suivant et non uniquement précédent. Un casse-tête pour les Dev en assembleur.
Performances théoriques et réelles
Les performances théoriques du i860 étaient incroyablement prometteuses, mais dans la pratique les compilateurs étaient incapable de délivrer plus qu'une fraction de ces performances car non-conçus pour ce type d'architecture, un problème qui ne se résoudra pas vraiment et qui affectera aussi l'Itanium 64 bits des années plus tard!
Même optimisé à la main, le code sera loin de tourner aussi vite que promis, et seules certaines routines spécifiques dont des routines graphiques, permettront d'exploiter son potentiel, mais en aucun cas des logiciels généralistes.
Non seulement le i860 est plus lent du coté CPU que ses concurrents RISC ou CISC mais aussi plus complexe à programmer!
Unité graphique
Outre le fonctionnement VLIW avec deux micro-instructions empaquetées et lancées par cycle, le i860 contient une unité graphique orientée vers la génération d'image 2D, avec des capacités 3D limitées par rapport à ce que l'on connait depuis 25 ans.
Cette unité est probablement sa plus grande force, permettant de gérer des rendus en monochrome, 256 couleurs et plus encore 16 millions de couleurs, avec des performances inégalées et surtout entièrement programmable.
Apple
Apple a créé un prototype, probablement comme pour d'autres sur la base des performances théoriques mais aussi des capacités de gestion de mémoire graphique de cette CPU, permettant d'avoir des rendus de qualité en 16 millions de couleur sans trop de ralentissements, promettant de pouvoir créer une station de travail graphique avec une superbe intégration.
Très certainement Apple s'est heurté aux limites de l'exercice, c'est à dire des performances pratiques moyennes voire inférieures en tant que CPU même si bien meilleures en terme de rendus graphiques sur du code optimisé à la main et invariant.
NeXTDimension pour NeXTCube
Next a aussi utilisé l'Intel i860, mais pour le coup là où il brille vraiment en créant une carte graphique 2D+3D en 16 millions de couleurs, avec en plus des entrées/sorties vidéo et de l'incrustation en temps réel.
Une bête, le véritable marché du i860 et sa grande force.
Pour résumer
Le i860 est une des premières CPU avec une GPU (2D + 3D limitée) intégrée, extrêmement capable, qui lui ouvrira des marchés comme sur la carte couleur NeXTDimension pour les NeXTCube, mais en aucun cas une CPU capable de se mesurer aux meilleures.
Je comprends pourquoi Apple l'a essayé, avoir un ensemble CPU avec des capacités de GPU même partiellement 3D, intégrée et permettant de pousser les Macintosh en avant sur les marchés nécessitant ce type de fonctionnalité.
Le Intel i860 n'aura aucun avenir comme CPU générale et surtout pas comme remplaçant du x86, et son successeur VLIW Itanium qui était pour Intel l'avenir en 64 bits via IA-64 (Intel Architecture 64 bits) se heurtera aux mêmes limites du VLIW et sera la fin de ce type d'architecture chez Intel avec encore un échec cuisant, qui permettra à AMD d'offrir une architecture x86 64 bits qu'Intel adoptera un an plus tard.
Il y aura beaucoup plus lourd dans le prochain épisode, où Apple s'attaque à NeXT!