IPB

Bienvenue invité ( Connexion | Inscription )

 
Reply to this topicStart new topic
> Les CPU des Mac : IBM POWER, Réactions à la publication du 24/03/2024
Options
Paul Emploi
posté 24 Mar 2024, 23:44
Message #1


Macbidouilleur de bronze !
**

Groupe : Rédacteurs
Messages : 351
Inscrit : 19 Nov 2020
Membre no 212 895



Nous voici en 1994 avec l'arrivée au printemps des premiers Macintosh PowerPC, les PowerMac, le second volet de notre parcours des CPU au cœur des Mac.
En guise de préambule, il me parait indispensable d'aborder l'origine des PowerPC, les IBM POWER nés en 1990, leurs inspirations, et ce que peut signifier "RISC".

IBM, Pionnier du RISC?

Il y a un beau narratif, présentant l'IBM 801 comme le premier processeur RISC.
Le projet 801 démarré en 1974 consistait en un processeur destiné aux autocommutateurs à grande échelle, nécessitant une puissance de traitement très élevé, énorme pour l'époque!

La voie choisie par IBM a été de réduire cette CPU au maximum en éliminant tout ce qui ne correspondait pas au cœur des besoins, incluant les instructions redondantes ou remplaçables par une série d'instructions plus simples tant que ça n'impactait pas négativement les performances dans l'usage ciblé.

Malheureusement le 801 resta à l'état de prototype et ne fut jamais produit ou utilisé.

Je suis en désaccord avec la présentation du 801 comme un processeur RISC, car si effectivement il avait très peu d'instructions, il n'était destiné qu'à un usage dédié très spécialisé, à l'inverse des CPU RISC qu'on a vu fleurir à la fin des années 80 et durant les années 90.
C'est une puce spécialisée programmable, tout comme un DSP est une puce spécialisée programmable, ou l'Intel 8089 une puce d'entrée/sortie programmable.

IBM pionnier du RISC!

Si le 801 n'était pas pour moi une CPU RISC par sa spécialisation, et surtout par l'absence de production et d'utilisation, IBM sorti en 1981 le ROMP au nom barbare, pour le coup une vraie CPU RISC 32 bits pipelinée sur 3 étages avec des instructions codées sur 16 bits.
16 registres 32 bits, du luxe en 1981, un espace virtuel adressable de 40 bits (1 To!!!), et le support de la mémoire virtuelle.
Il comportait 118 instructions, deux fois le nombre d'un Motorola 68000, avec 71% d'entre elles qui s'exécutaient avec un seul cycle de latence.

Il a servi pour le PC RT, une machine qui d'un certain coté aurait du marquer son époque tellement elle est passionnante, mais que peu d'entre nous connaissent.

Pour moi ROMP est un succès technique phénoménal, encore compétitif en 1986, 5 ans après sa sortie!

Qu'est-ce que le RISC

La définition a changé plusieurs fois, et n'a plus aucun sens aujourd'hui sur les CPU récentes aux milliers d'instructions, que ça soit x86 ou ARM.

Initialement RISC signifiait Reduced Instruction Set Computer, ordinateur à jeu d'instruction réduit, mais pour moi c'était plus la conséquence d'une optimisation de l'architecture qu'un but en soi. Avoir moins de transistors était le but premier.

On le retrouvera sur le 6502, qui se passait de ADD ou SUB pour se contenter des variantes avec retenue (Carry) ADC et SBC respectivement, moins de transistors se traduisant par une énorme économie de conception et la possibilité de le faire en petite équipe ayant peu de moyens.
De manière similaire le premier ARM et l'ARM2 ont été conçus en petite équipe, avec peu de moyens, et là aussi moins de transistors pour les mêmes performances, et une puce moins chère à produire.

La définition a évolué rapidement, puisque les CPU RISC des uns et des autres avaient de plus en plus d'instruction, pour définir un but d'exécuter une instruction par cycle dans plus de 90% des cas via un pipeline, pour cela il fallait passer au maximum par des registres et non des échanges mémoires, donc de nombreux registres qui n'étaient pas un but mais un moyen, et finalement séparer les instructions accédant à la mémoire ou la modifiant de celles effectuant des traitements, ce qui a donné le concept actuel du load-store à des iotas près.

Aujourd'hui, toutes les micro-architectures performantes sont de type load-store, même sur du x86 dont l'architecture et l'ISA sont appelés "CISC".
De la même manière, si le 68000 avait 56 instructions et l'ARM 2 seulement 27, dès le 68060 on était autour de 150 et le PowerPC 601 sorti un an avant était à plus de 200!
Si, au début, les CPU dites "RISC" avaient moins d'instruction c'était un moyen et non un but, une caractéristique émergente, mais dès 1993 ça n'était plus nécessairement le cas.
En revanche, là aussi un moyen et non un but, les instructions des CPU RISC étaient généralement plus simples, en privilégiant l'usage de plusieurs instructions à la suite sur la création d'instructions complexes. Le but, alors, était de diminuer la complexité.

Il y aurait beaucoup à dire sur les philosophies CISC, RISC, load-store, aussi aborder le VLIW qui est une troisième voie qui a échouée en beauté avec l'Intel Itanium destiné à remplacer le x86 pour le 64 bits, je n'irais certainement plus les opposer, car si on regarde une implémentation performante des x86 ou ARM 64 bits on verra des jeux d'instructions très riches en frontend, plus ou moins CISC, avec un backend de type load-store qui vient en droite ligne des micro-architectures RISC.
Plus aucune guéguerre à avoir entre CISC et RISC, aucun des deux n'a réellement gagné, ce qu'on utilise au quotidien a pris le meilleur de chacun!

POWER1 en 1990

IBM a sorti le premier POWER en 1990, destiné initialement aux nouveaux RS/6000, POWERstation et POWERserver, appelé POWER1 ou RS/6000 CPU.

On est dans les classiques RISC de l'époque, avec une architecture de type Harvard, 32 registres généraux 32 bits, et un pipeline sur 3 étages.
Exécution out-of-order (en désordre), et même renommage de registres qui fut une première, FPU intégrée et pipelinée capable de faire des FMAD, le POWER1 vise haut, tout comme avec son espace adressable virtuel de 52 bits (4000 To!).

Il serait descendant du ROMP, mais si c'est vrai pour le pipeline à 3 étages, le reste est tellement étendu, notamment les unités d'exécution interne qu'on peut écrire qu'il en est inspiré.

Une voie royale!

"On n'a jamais été viré pour avoir acheté IBM" - ancien mantra

Apple a choisi avec IBM un partenaire qui avait une superbe architecture de CPU, conçues pour des serveurs, des minis, mais aussi capable de les décliner jusqu'aux stations d'entrée-de-gamme avec des implémentations spécifiques comme le RSC (Risc Single Chip) monopuce.

Et IBM était un acteur majeur de la micro-informatique avec l'IBM PC 5150, les PS/2 et successeurs, immortel et pour longtemps!

IBM a vraiment été un pionnier de l'informatique et du RISC, depuis leurs premiers systèmes de fichage sous la houlette du CEO Watson, en passant par les 360 (Apollo 11!), 370, S/36, S/38, PC, PS/2, et les RS/6000 représentait son avenir du coté mini et stations de travail, mais aussi potentiellement celui d'Apple...

Lien vers le billet original

Go to the top of the page
 
+Quote Post
jeandemi
posté 25 Mar 2024, 10:29
Message #2


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 1 904
Inscrit : 20 Aug 2020
Lieu : Belgique
Membre no 212 269



Citation (Paul Emploi @ 24 Mar 2024, 23:44) *
En revanche, là aussi un moyen et non un but, les instructions des CPU RISC étaient généralement plus simples, en privilégiant l'usage de plusieurs instructions à la suite sur la création d'instructions complexes. Le but, alors, était de diminuer la complexité.

Si je comprends, ils simplifient le CPU pour complexifier le travail des programmeurs, c'est ça ?
Go to the top of the page
 
+Quote Post
zarck
posté 25 Mar 2024, 11:10
Message #3


Macbidouilleur de vermeil !
****

Groupe : Membres
Messages : 893
Inscrit : 30 Jun 2002
Lieu : Ile d'Yeu - France
Membre no 2 805



IBM ou la longue marche vers le néant...

dry.gif
Go to the top of the page
 
+Quote Post
Paul Emploi
posté 25 Mar 2024, 12:04
Message #4


Macbidouilleur de bronze !
**

Groupe : Rédacteurs
Messages : 351
Inscrit : 19 Nov 2020
Membre no 212 895



Citation (jeandemi @ 25 Mar 2024, 10:29) *
Citation (Paul Emploi @ 24 Mar 2024, 23:44) *
En revanche, là aussi un moyen et non un but, les instructions des CPU RISC étaient généralement plus simples, en privilégiant l'usage de plusieurs instructions à la suite sur la création d'instructions complexes. Le but, alors, était de diminuer la complexité.

Si je comprends, ils simplifient le CPU pour complexifier le travail des programmeurs, c'est ça ?

Ce paradigme d'essayer de garder les instructions simples n'a pas vraiment complexifié le travail des programmeurs en assembleur à cette époque.
C'est une autre façon de faire les choses, qui était déjà présente dans le 6502 où l'équivalent d'un simple ADD sur un 8080 ou 6800 devient CLC puis ADC, une entrée d'interruption comporte généralement son CLD destiné aux ADC ou SBC ultérieurs, etc.

Avec le recul le plus grand soucis pour les programmeurs en assembleur est venu de la taille des jeux d'instructions, le sous-ensemble MMX contenant 57 instructions dès le départ soit autant que celui du 68000 au complet, et deux fois plus que celui du ARM2!
On compte maintenant en milliers d'instructions, et mis à part quelques fous géniaux, l'usage de l'assembleur a disparu, remplacé par du C, Rust et quelques autres langages de bas-niveau.

Les années 90 ont aussi amené la supériorité du compilateur et de C face à l'assembleur.
Mon dernier projet signifiant en assembleur a d'ailleurs été en 1990, pour me tourner vers le C mais aussi du Basic de plus haut-niveau (Garbage Collecting et gestion d'erreurs) avant d'aborder d'autres langages dans la décennie suivante.
Go to the top of the page
 
+Quote Post
Hebus
posté 25 Mar 2024, 15:24
Message #5


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 7 173
Inscrit : 24 Sep 2015
Lieu : Pays d'Aix
Membre no 196 570



Citation (jeandemi @ 25 Mar 2024, 10:29) *
Citation (Paul Emploi @ 24 Mar 2024, 23:44) *
En revanche, là aussi un moyen et non un but, les instructions des CPU RISC étaient généralement plus simples, en privilégiant l'usage de plusieurs instructions à la suite sur la création d'instructions complexes. Le but, alors, était de diminuer la complexité.

Si je comprends, ils simplifient le CPU pour complexifier le travail des programmeurs, c'est ça ?


C’est plutôt que l’architecture traditionnelle était simple au départ et on l’a complexifié à loisir en définissant des instruction assembleur associé à du micro code nécessitant de nombreux cycles d’horloges pour être exécuté, certains ont considéré en étudiant les statistiques d’usage des instruction que la complexité du CISC était allé trop loin et que la conception et la consommation pouvait être réduite au prix d’une complexité du codage en assembleur que dans certains cas assez rares en général et que le jeu en valait donc la chandelle, ce qui a été largement démontré.

PS: ma compréhension de codeur plutôt de language haut niveau à partir de 1990/93

Ce message a été modifié par Hebus - 25 Mar 2024, 17:46.


--------------------
Bobo du Pays d'Aix et Fanboy Apple
Go to the top of the page
 
+Quote Post
MooMarama
posté 28 Mar 2024, 09:05
Message #6


Nouveau Membre


Groupe : Membres
Messages : 27
Inscrit : 8 Oct 2005
Membre no 47 492



Citation
La définition a changé plusieurs fois, et n'a plus aucun sens aujourd'hui sur les CPU récentes aux milliers d'instructions, que ça soit x86 ou ARM.


Une principale difference entre un RISC et un CISC n'est (n'etait) pas tant la quantite d'instruction mais comment sont encodees les instructions (OPCODE).

Sur un RISC, la taile est fixe, par example sur 8bit avec un processeur 32bit.
Sur un CISC la taille peut-etre variable, et faire plusieurs actions "en meme temps".

Les RISC sont je crois aussi toujours alignes (sur des multiple de 4mots ou 8mots) ce qui n'etaient pas forcement le cas pour les CISC.

Il semblerait qu'avec la complexite des processeurs d'aujourd'hui et le besoin d'assurer de bonnes performances, les CISC se sont RISCifies.
Go to the top of the page
 
+Quote Post
Laszlo Lebrun
posté 28 Mar 2024, 09:21
Message #7


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 2 190
Inscrit : 1 Nov 2021
Membre no 214 848



Citation (jeandemi @ 25 Mar 2024, 10:29) *
Si je comprends, ils simplifient le CPU pour complexifier le travail des programmeurs, c'est ça ?

Non, c'est le compilateur qui est plus complexe. Le code des programmeurs est le même.


--------------------
"Les gens douteront toujours de la vérité sur Internet car l'erreur est constamment prêchée autour de nous" Johann Wolfgang von Goethe
MBP 15" 2014 Retina ( Win11 + Mojave), Macbook Air 2013 (en voyage), iMac 2015 27" Retina (Mojave + Win11), Macbook blanc 2008 (Mate), pour ne citer que les Macs.
Go to the top of the page
 
+Quote Post
Paul Emploi
posté 28 Mar 2024, 22:21
Message #8


Macbidouilleur de bronze !
**

Groupe : Rédacteurs
Messages : 351
Inscrit : 19 Nov 2020
Membre no 212 895



Citation (MooMarama @ 28 Mar 2024, 09:05) *
Citation
La définition a changé plusieurs fois, et n'a plus aucun sens aujourd'hui sur les CPU récentes aux milliers d'instructions, que ça soit x86 ou ARM.

Une principale difference entre un RISC et un CISC n'est (n'etait) pas tant la quantite d'instruction mais comment sont encodees les instructions (OPCODE).

Sur un RISC, la taile est fixe, par example sur 8bit avec un processeur 32bit.
Sur un CISC la taille peut-etre variable, et faire plusieurs actions "en meme temps".

Ça n'est pas un critère en fait, par exemple le jeu d'instruction RISC V qui pourrait devenir une architecture majeure dans la prochaine décennie, s'encode avec des longueurs variables.

Il n'y a pas vraiment de règle valable pour différencier les uns des autres, à part probablement le load-store, séparation des instructions d'accès ou d'écriture mémoire des instructions de traitement.
Mais un x86 "CISC" est maintenant load-store aussi au niveau de la micro-architecture, même si des instructions de traitement mémoire existent.

Il y avait une règle sur le micro-code, mais toutes les CPU modernes intègrent du micro-code, non-seulement une partie figée dans le silicium, mais aussi une partie programmable au démarrage, cette dernière destinée à pouvoir combler des failles ou corriger des erreurs après coup comme celle de la division des premiers Pentium.

Donc plus de CISC, plus de RISC, plus de VLIW, uniquement du load-store!
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
2 utilisateur(s) sur ce sujet (2 invité(s) et 0 utilisateur(s) anonyme(s))
0 membre(s) :

 



Nous sommes le : 27th April 2024 - 13:55