Les CPU des Mac : Les PowerPC x86 !!!
IBM PowerPC 604e, Domaine Public, Merci à Henrik Wannheden
Il n'y a pas eu un mais bien deux prototypes de PowerPC capable d'exécuter du code x86, implémentés totalement différemment, et destinés à s'installer dans des PC ou des Macintosh.
Ce coup-ci vous allez être scotchés, je l'ai été en découvrant tout cela!
Début 1994, IBM fabrique des CPU x86 sous licence Intel, conçoit aussi ses CPU POWER, et fait parti de l'alliance AIM avec Apple et Motorola.
IBM aimerait à la fois continuer à vendre ses PC x86 PS/2 mais aussi faire d'une pierre deux coups en y introduisant l'architecture PowerPC mais pas sa coûteuse plateforme PReP. Apple aurait bien besoin d'une solution compatible PC pérenne et performante.
Les deux CPU conçues coup-sur-coup et totalement différentes, expliquent les rapports souvent contradictoire que l'on peut lire, la seconde ayant été bien plus confidentielle, et pire une CPU a été installée dans les Macintosh avec la même référence sans offrir les mêmes fonctions.
La force-brute d'un coté, on reconnaîtra bien là IBM, et de l'autre une solution novatrice, et on reconnaîtra là aussi IBM qui a un fabuleux historique d'innovations informatiques.
PowerPC 615 : le bicéphale
Pour avoir une puce compatible PC et PowerPC, on peut utiliser la force-brute, essentiellement mettre une CPU x86 et un CPU PowerPC sur la même puce, se partageant le bus au travers du cache L2 ainsi que peut-être d'autres unités, mais fonctionnant en alternance.
IBM visait son implémentation dans ses PC, s'installant dans un socket OverDrive.
Pas de problème de compatibilité PC avec un cœur 486 sous licence Intel et le socket OverDrive.
Du coté PowerPC, il pourrait s'agit d'un cœur de PPC 604 sans qu'on en soit certain.
En revanche un énorme problème dans un environnement hétérogène, puisque tout passage d'un environnement à l'autre se faisait via interruption avec possiblement un vidage de cache L1 pour conserver la cohérence mémoire. TLB compris, de manière logicielle avec traductions.
Et un autre problème, le prix astronomique de la puce, la rendant d'office non-concurrentielle comme CPU x86.
Un dernier, venant avec son nombre de transistors, elle chauffait énormément.
Le double du prix, pas de mode permettant l'usage en parallèle qui eu justifié celui-ci.
Si sous Windows le PowerPC avait pu être utilisé comme accélérateur mathématique pour le 486, et sur un PowerMac le 486 avait pu faire tourner DOS et Windows en parallèle et virtualisé, le tableau aurait été différent.
Annoncée début 1994 sans référence et prévue pour 1995, puis appelé PowerPC 615, une dizaine de prototypes semblent avoir été fabriqués.
À l'annonce IBM voulait aussi supporter le code 68000, tant qu'à faire!
PowerPC 604e : l'hybride
Quand le support x86 est entièrement matériel sur le PowerPC 615, à grand frais, le PPC 604e le supporte en partie matériellement et en partie logiciellement.
Le 604e est en fait un PowerPC 604 associé à un décodeur d'instructions x86 simplifié permettant de les traduire matériellement en instructions RISC réellement exécutées.
Et là sur un bus PowerPC (fini le socket overDrive pour PC) !
Pour limiter les coûts, le décodeur x86 est très limité, et les instructions 32 bits plus complexes sont émulés par logiciel, avec celui-ci chargé avant celui de l'OS, et un mécanisme d'interruption matériel se chargeant de lancer l'émulateur de manière transparente pour l'OS.
Cela aurait permis de faire tourner DOS et Windows nativement, sans nécessiter de cœur x86 ni de décodeur complexe, au prix de ralentissements sur certains codes.
Ce brevet d'IBM semble décrire sommairement l'architecture du PPC 604e: https://patents.google.com/patent/US5781750
Pour les plus anciens, IBM avait inventé cela pour simplifier l'implémentation de l'architecture S/360 sur certains modèles moins chers en émulant logiciellement des instructions complexes et rarement rencontrées, ainsi que des sous-unités comme la FPU.
Au iota près du support logiciel transparent pour l'OS car il fallait pour les S/360 que l'OS implémente l'émulation.
Quand le PPC 615 perdait un temps fou à passer d'un mode à l'autre, d'un cœur à l'autre en fait, le PPC 604e mettait seulement 5 cycles, le temps de remplir son pipeline. (pas de le vider)
Mais quand le PowerPC 615 promettait d'être un bon PC équivalent à un 486DX4-100 ou un Pentium-60, le 604e avait des performances très variables suivant le code rencontré, le rendant non-concurrentiel dans des PC sur les logiciels les plus modernes optimisés pour le 486!
Il faut noter qu'il y a eu une CPU PowerPC 604e dans nos Macintosh, avec une date de sortie correspondant, mais dont jamais la compatibilité PC x86 n'a été évoquée et surtout pas implémentée. Les dates semblent étrangement correspondre.
Est-ce cette même puce compatible x86 mais sans support, un dérivé avec la compatibilité matérielle enlevée, ou une toute autre puce malgré la même référence?!?
Microsoft dans l'affaire
IBM aurait voulu avoir des versions de Windows NT et d'OS/2 supportant à la fois le x86 et le PowerPC nativement. Pour essayer d'imposer le PowerPC sur les PC.
Windows NT avait une version PowerPC destiné à la plateforme PReP, qui n'est d'ailleurs pas celle qu'employait Apple! Courant 1995 sera dévoilée la plateforme commune CHRP.
OS/2 PowerPC ne verra le jour qu'après ces deux échecs, fin 1995.
Le problème est que l'investissement aurait été énorme pour Microsoft, je n'ai en mémoire aucun OS supportant simultanément et nativement deux architectures différentes, indistinctement et de manière interchangeable.
La seconde architecture vient par émulation, transpilation, ou implémentée matériellement séparément et discutant au travers des bus via des drivers comme certaines cartes accélératrices mathématiques, ou les puces x86 des divers Macintosh PPC compatibles PC.
Je pense que cela aurait nécessité de revoir l'architecture des noyaux de Windows NT ainsi que ses drivers et le HAL Hardware Abstraction Layer. Pour quelques ventes.
Puis de maintenir cela sur la durée!
IBM s'est vu opposer un refus poli mais ferme de Microsoft, ce qui aurait contribué à tuer les projets PPC 615 et PPC 604e.
De bons Macintosh et de bons PC?
Évacuons tout de suite le PowerPC 615 trop cher et chauffant énormément.
Ces deux puces n'ont pas été conçues pour virtualiser une architecture en démarrant sur l'autre, mais de démarrer soit sur l'une soit sur l'autre, et de mélanger du code pour l'une et l'autre au sein du même environnement. Bootcamp avant l'heure avec un truc (inutile) en plus.
Mais si le PowerPC 604e aurait fait un bon Macintosh PPC, il aurait fait un mauvais PC, on peut quand-même regretter de ne pas l'avoir eu dans nos Macintosh, ou plutôt sa compatibilité x86.
Déjà les objectifs d'IBM et d'Apple se révélaient antagonistes...
Les sources utilisées (liste partielle):
https://en.wikipedia.org/wiki/PowerPC
https://en.wikipedia.org/wiki/PowerPC_600#PowerPC_...
https://en.wikipedia.org/wiki/IBM_386SLC#IBM_486BL...(Blue_Lightning)
https://en.wikipedia.org/wiki/Cyrix_5x86
https://www.halfhill.com/byte/1995-11_cover3.html
https://www.emaculation.com/forum/viewtopic.php?t=...
https://patents.google.com/patent/US5781750
https://go.gale.com/ps/retrieve.do?tabID=T003&resu...
https://go.gale.com/ps/retrieve.do?tabID=T003&resu...
https://go.gale.com/ps/retrieve.do?tabID=T003&resu...
https://go.gale.com/ps/i.do?id=GALE%7CA16279829&si...
https://archive.org/details/199511_byte_magazine_v...
https://books.google.com.fj/books?id=djgEAAAAMBAJ&...
https://books.google.ca/books?id=WzgEAAAAMBAJ&sour...
https://books.google.ca/books?id=mjgEAAAAMBAJ&pg=P...
https://books.google.ca/books?id=sDoEAAAAMBAJ&pg=P...
https://www.os2museum.com/wp/os2-history/os2-warp-...
https://en.wikipedia.org/wiki/Common_Hardware_Refe...
https://en.wikipedia.org/wiki/PowerPC_Reference_Pl...