Pourquoi x86 little endian?

Une vraie question que je me posais dernièrement: quels choix de conception ont permis à x86 d’être une petite architecture endian au lieu d’une architecture big endian?

En grande partie, pour la même raison, vous commencez au chiffre le moins significatif (le côté droit) lorsque vous ajoutez – car les résultats se propagent vers les chiffres les plus significatifs. Mettre le plus petit octet en premier permet d’abord au processeur de démarrer l’ajout après avoir lu uniquement le premier octet d’un décalage.

Une fois que vous avez effectué suffisamment de codage et de débogage de l’assemblage, vous pouvez en venir à la conclusion que ce n’est pas un choix étrange, ce qui est étrange: nous, les humains, utilisons le big endian.

C’est assez archéologique, mais ce n’était probablement pas le choix d’Intel. Intel a conçu les processeurs avec une compatibilité ascendante comme une préoccupation majeure, facilitant ainsi la traduction mécanique du code d’assemblage de l’ancienne à la nouvelle architecture. Cela ramène le temps de 8086 à 8080 au premier microprocesseur où l’endianness était important, l’ Intel 8008 .

Ce processeur a été lancé lorsque CTC (plus tard nommé DataPoint) est venu sur Intel pour demander de l’aide avec son terminal de données. Conçu à l’origine par Victor Poor et Harry Pyle, il était doté d’un processeur logique MSI (beaucoup de puces). Ils ont demandé à Intel de leur fournir une solution de stockage utilisant des registres à décalage de 512 bits.

Ce n’était pas le produit préféré d’Intel, ils ont pris ce genre de travaux de conception personnalisés pour survivre à la montée en puissance de leur puce RAM de 1024 bits. Tedd Hoff, Stan Mazor et Larry Potter ont examiné la conception et proposé un processeur LSI avec RAM.instead. Cela devint finalement le 8008. Les pauvres et Pyle sont crédités de la conception du jeu d’instructions.

Le fait qu’ils aient choisi little-endian est crédible à partir de cet entretien avec Poor . Il passe rapidement au travers et l’interview est plutôt dispersée, mais la partie pertinente de la page 24:

Shustek : Ainsi, par exemple, le stockage des numéros d’octets les moins significatifs en premier lieu vient du fait qu’il s’agissait de séries et que vous deviez d’abord traiter les bits bas.
Pauvre: il fallait le faire comme ça. Tu n’avais pas le choix.

La remarque “n’ayant pas le choix” est étrange, et semble ne s’appliquer qu’à la conception série du processeur MSI. Aussi la raison pour laquelle ils ont acheté des registres à décalage au lieu de RAM. Il revient à la page 34:

Hendrie: Vous souvenez-vous de l’un des repères de leur conception ou de l’un de ces détails …
Pauvre: l’ un d’eux était le bit versus le bit 8. Ils voulaient une partie large de 8 bits et, finalement, c’est comme ça qu’ils l’ont construite.
Pauvre: Mais il était encore en recirculation. Mais, voyez-vous, il y a des points intéressants à savoir s’il y aura une grande fin ou si une petite partie finale aurait pu être modifiée à ce moment-là, mais nous ne l’avons pas fait. Nous venons de le laisser …
Hendrie: Même après vous être rendu à huit bits?
Pauvre: Bien. C’est pourquoi la gamme de produits Intel est aujourd’hui comme ça

En fin de compte, CTC n’a pas utilisé le 8008, il a été terminé un an trop tard et ils avaient déjà mis en œuvre le processeur MSI. La conception du microprocesseur était certainement la propriété intellectuelle de CTC, mais ils ont néanmoins échangé les droits avec Intel pour le coût de conception. Un peu d’erreur 🙂 Les poursuites judiciaires concernant les droits de brevet ont suivi plus tard.

Donc, comme on l’a dit, Intel a fini avec peu d’endian en raison du fonctionnement des ports série.

Cela reflète la différence entre considérer que la mémoire doit toujours être organisée un octet à la fois plutôt que de considérer celle-ci comme une unité à la fois, où la taille de l’unité peut varier (octet, mot, dword, etc.)