ISA ne pardonne pas les erreurs

–X86 est un malentendu historique, - le maĂźtre et en 80 n'a pas perdu l'enthousiasme polĂ©mique.
"En fait, elle détient 95% du marché des serveurs", répondis-je lentement. Je ne voulais pas discuter sur un sujet cent fois galvaudé
- et je suis déjà confus dans ces préfixes, - l'académicien n'a pas cédé. - 15 octets par instruction, c'est impensable!
- Pas de glace, bien sûr. Mais qui est le meilleur?
- Oui, n'importe qui, au moins ARM-a.
"Je ne comprends toujours pas." Les ajouts avec multiplications devraient ĂȘtre?
- Devrait.
- Et des décalages avec des opérations logiques?
- Oui.
- Et les téléchargements avec sauvegardes aussi. Quelle est la différence dans la façon dont ils sont appelés et encodés?

Comme d'habitude, j'ai réalisé l'exactitude de l'enseignant beaucoup plus tard. Quand je me suis assis pour écrire un décodeur de commandes dans une morne soirée d'hiver afin de m'amuser en quelque sorte. J'ai réussi à représenter un simple décodeur pour ARM sur VHDL (et je le connais pas mal) en quelques jours. C'est vrai, je me repens, j'avais une feuille de triche. :)

image

Pour X86 ce n'Ă©tait pas possible pendant une semaine, ni pour deux, ni pour un mois ... MĂȘme pour le set de base.

Ici, la diffĂ©rence n'est pas seulement dans RISC (Reduced Instruction Set Computing) pour ARM et CISC (Complex Instruction Set) pour X86. La diffĂ©rence est plutĂŽt dans le chemin du dĂ©veloppement historique. Il y a plus de 40 ans, et tout a commencĂ© en 1978, le X86 ISA (Instruction Set Architecture) Ă©tait un ensemble de commandes assez compact avec sa propre logique interne. Mais le temps a passĂ©, la capacitĂ© des bus a augmentĂ©, les registres ont augmentĂ© (y compris SIMD), le nombre d'Ă©quipes n'a cessĂ© d'augmenter. Puis un gars a fait une tentative intĂ©ressante pour simplement compter le nombre d'instructions dans X86. S'il Ă©tait trop paresseux pour ouvrir le manuelet les compter, soit il connaissait l'existence d'opcodes «sans nom» (Ă©quipes qui n'ont mĂȘme pas de nom), soit il croyait Ă  l'omnipotence de la logique. Il est facile de comprendre que la logique s'est avĂ©rĂ©e impuissante. :) Au fait, j'ai essayĂ© de trouver un graphique de la croissance du nombre d'instructions X86 par annĂ©e (ou par gĂ©nĂ©ration). Je ne pourrais pas encore (peut-ĂȘtre que quelqu'un l'a?). Mais j'ai trouvĂ© ici une telle photo .

image

Pour ĂȘtre honnĂȘte, je ne sais pas combien d'instructions il y a dans l'ISA X86. Mais je me souviens bien de tous ceux que j'ai investis dans le dĂ©veloppement moi-mĂȘme, sans rĂ©aliser que chaque nouveau bit dans ISA est Ă©tiquetĂ© «garder pour toujours». Et il y avait plusieurs milliers de «crĂ©ateurs» comme moi chez Intel. Et les morceaux pour encoder tous leurs fantasmes manquaient constamment. :) Tous les nouveaux prĂ©fixes ont Ă©tĂ© ajoutĂ©s au jeu de commandes existant: REX, VEX ... La derniĂšre extension de quatre octets (EVEX) a Ă©tĂ© introduite pour l'AVX-512. Par ailleurs, l'ensemble des commandes ARM (mĂȘme en tenant compte de SVE ) est supprimĂ© dans ces mĂȘmes 4 octets. ARM est initialement allĂ© dans l'autre sens, construisant son systĂšme de commande sur les principes de base de simplicitĂ©, compacitĂ© et extensibilitĂ©.

La diffĂ©rence peut ĂȘtre comprise si nous passons du point de vue du programmeur au point de vue du concepteur de circuits. Et on sait que le transistor est une bonne chose, mais il commute lentement et dissipe l'Ă©nergie sans vergogne. Et toutes choses Ă©tant Ă©gales par ailleurs, il serait prĂ©fĂ©rable qu'il y en ait moins. Maintenant, jetez un Ɠil Ă  l'algorithme de dĂ©codage des instructions x86 (le problĂšme que j'essayais de rĂ©soudre).

image

Et comme on dit, ressentez la diffĂ©rence dans les chemins d'entrĂ©e (frontal) pour ARM et X86. Ici, on peut faire valoir que l'extrĂ©mitĂ© avant est une trĂšs petite partie du noyau, seulement environ 10%. Oui, mais n'oubliez pas que toute cette logique est multipliĂ©e par le nombre de cƓurs sur la puce. Et c'est grave.

Une autre considĂ©ration est que le frontal n'est que la partie responsable de la compatibilitĂ© descendante. Vous pouvez pelleter en toute sĂ©curitĂ© ou mĂȘme lancer l'arriĂšre. Intel, soit dit en passant, en a profitĂ© au dĂ©but des annĂ©es 2000, remplaçant l'architecture NetBurst (P4) par Core-M (P3). Mais l'extrĂ©mitĂ© avant ne peut pas ĂȘtre considĂ©rablement rĂ©duite. Bien que parfois je le veuille vraiment, Ă  cause de l'ISA X86 existant, environ 20% est maintenant utilisĂ©. Les autres sont des vestiges du passĂ©.

Un autre inconvĂ©nient de la longueur Ă©norme des instructions est le manque relativement frĂ©quent dans le cache d'instructions. Grosso modo, avec une taille Ă©gale de caches, le nombre de ratĂ©s sera d'autant plus important que la durĂ©e de l'instruction sera grande. Bien sĂ»r, la taille des caches peut ĂȘtre augmentĂ©e. Mais lĂ  encore, ce sont des transistors qui n'auraient pas pu l'ĂȘtre si les instructions Ă©taient plus courtes. Pour la mĂȘme raison, je me mĂ©fie beaucoup des diffĂ©rents types d'architectures VLIW (Very Long Instruction World). Cependant, ils ont Ă©galement l'inconvĂ©nient qu'il leur est trĂšs difficile de dĂ©velopper des compilateurs. Jusqu'Ă  prĂ©sent, j'ai dĂ©libĂ©rĂ©ment Ă©vitĂ© le sujet des compilateurs, car je ne les ai jamais dĂ©veloppĂ©s moi-mĂȘme. Je voudrais Ă©couter ce que les personnes compĂ©tentes diront sur les dĂ©lices de dĂ©velopper des compilateurs pour RISC, CISC et VLIW.

Et pourtant, malgrĂ© l'Ă©norme charge accumulĂ©e de l'hĂ©ritage, et peut-ĂȘtre grĂące Ă  lui, les dĂ©veloppeurs X86 Ă©taient dans le principal. Le principe de la compatibilitĂ© descendante a Ă©tĂ© respectĂ© en architecture depuis le tout dĂ©but. Tous les logiciels existants fonctionnent sur le nouveau matĂ©riel prĂȘt Ă  l'emploi. C'est ce qui a permis de construire un Ă©cosystĂšme aussi profond et dĂ©veloppĂ© autour de l'architecture. Et il ne reste plus qu'Ă  dĂ©coller devant les ingĂ©nieurs Intel et AMD qui, malgrĂ© la conception ISA pas du tout parfaite, ont conservĂ© leur leadership dans le segment des serveurs pendant de nombreuses annĂ©es. Cependant, la charge hĂ©ritĂ©e devient plus difficile.

All Articles