![]() |
Bienvenue invité ( Connexion | Inscription )
![]() |
![]()
Message
#1
|
|
![]() Macbidouilleur d'Or ! ![]() ![]() ![]() ![]() ![]() Groupe : Rédacteurs Messages : 1 659 Inscrit : 19 Nov 2020 Membre no 212 895 ![]() |
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#IB...Blue_Lightning) https://en.wikipedia.org/wiki/Cyrix_5x86 https://www.halfhill.com/byte/1995-11_cover3.html Lien vers le billet original -------------------- La liberté d'expression c'est l'extrémisme. La censure c'est la liberté.
|
|
|
![]() |
![]()
Message
#2
|
|
Adepte de Macbidouille ![]() Groupe : Membres Messages : 240 Inscrit : 6 Sep 2004 Lieu : entre la chaise et le clavier Membre no 23 160 ![]() |
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. ... 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. Pour continuer mes élucubrations sur le 604e, je suis globalement d'accord avec toi sur l’intérêt d'avoir un décodeur x86, même partiel. Cependant, toi, tu imagines une petite usine à gaz pour faire tourner nativement Windows sur un Mac PowerPC. Un peu comme sur les Mac Intel avec Bootcamp, au démarrage tu choisis Windows ou MacOS. C'est dur à concevoir, idéalement ça devrait pouvoir tourner avec plusieurs versions de Windows, dont celles à venir; sachant qu'à l'époque il y avait encore deux familles de Windows totalement différentes, la branche NT, et la branche 95 disparue après l'innommable windows Meuuuh, et je ne parle pas de la branche 3 en 16 bits déjà abandonnée. Il aurait fallu faire en sorte que Windows, ayant accès à toute la mémoire et pouvant donc allouer toute partie de celle-ci, ne puisse pas écraser l'émulateur x86. Il y a un moyen sûr pour ceci: que windows tourne dans une machine virtuelle, ainsi il n'a pas le contrôle de la mémoire , donc il faut un hyperviseur. Ce dernier est de plus nécessaire pour émuler l'architecture PC (les chipsets sur la carte mère) et le BIOS, les hardware et firmware mac étant rigoureusement incompatibles. Ma vision est beaucoup plus simple: sur les Mac de l'époque du 604, qui tournaient donc sous MacOS 8 puis 9, il existait déjà une appli: Virtual PC; elle faisait déjà tout le nécessaire, création d'une machine virtuelle, émulation du hardware PC et du BIOS. bien sûr ce logiciel émulait un Pentium et donc traduisait le code X86 en code PPC à la volée, avec un ralentissement de 4 fois, selon wikipédia. C'est là qu'aurait pu entrer en jeux le 604 avec décodeur x86. L’émulateur x86 software de Virtual PC aurait juste été modifié - tout en gardant cette version pour les autres PPC : 603 et 604 sans x86. Plutôt que de traduire toutes les instructions x86 "à la main", il exécute directement celles connues du décodeur x86, et ne traduit que les instructions inconnues de ce décodeurs, mais étant plus rarement utilisées, le ralentissement induit par cette traduction serait plus léger. Bien sur ce n'est pas l'émulateur qui trie les instruction connues et inconnues, sinon ça ralentirait trop , et là autant tout traduire "à la main"; tout le code x86 est balancé au 604e qui exécute celles qu'il connait et sinon il génère une interruption matérielle, que le gestionnaire intercepte et l'émulateur traduit l'instruction fautive en une ou plusieurs instructions PPC et rend la main. On pourrait même imaginer un système encore plus simple, où on ne passe même plus par le gestionnaire d’interruptions; mais où le 604e sauterait directement à l'émulateur (son adresse serait connue car inscrite dans un registre supplémentaire affecté à cette tache). Dans le cadre d'une boucle, au deuxième passage, on appellerait même plus l'émulateur mais les instructions déjà traduites en PPC qui seraient dans un cache. Ainsi, le ralentissement, du aux instructions x86 inconnues du décodeur partiel, seraient minimes On aurait donc un mac pouvant exécuter des programmes windows (pas en natif mais dans une machine virtuelle) à une vitesse proche de celle d'un vrai PC, et pour pas cher, beaucoup moins en tout cas qu'une carte d'extension PC avec chipset et CPU et ram etc... -------------------- "What else?" - George Clooney
|
|
|
![]() ![]() |
Nous sommes le : 2nd August 2025 - 06:20 |