¿Por qué es x86 pequeño endian?

Una pregunta real que me he estado preguntando últimamente es: ¿qué opciones de diseño llevaron a x86 a ser una pequeña architecture endia en lugar de una gran architecture endian?

En gran parte, por la misma razón, comienza con el dígito menos significativo (el extremo derecho) cuando agrega, porque lleva a propagarse hacia los dígitos más significativos. Colocar el byte menos significativo primero permite que el procesador comience con el complemento después de haber leído solo el primer byte de un desplazamiento.

Una vez que hayas hecho suficiente encoding y depuración del conjunto, puedes llegar a la conclusión de que no es un pequeño endian esa es la extraña elección: es extraño que los humanos usemos big endian.

Esto es bastante arqueológico, pero lo más probable es que no haya sido la elección de Intel. Los procesadores diseñados por Intel con compatibilidad hacia atrás son una preocupación principal, por lo que es fácil traducir mecánicamente el código ensamblador de la architecture anterior a la nueva. Eso hace retroceder el reloj de 8086 a 8080 al primer microprocesador donde importaba la endianancia, el Intel 8008 .

Ese procesador se inició cuando CTC (más tarde llamado DataPoint) llegó a Intel para pedir ayuda con su producto de terminal de datos. Originalmente diseñado por Victor Poor y Harry Pyle, tenía un diseño de procesador lógico en MSI (muchos chips). Le pidieron a Intel que les proporcione una solución de almacenamiento, utilizando registros de desplazamiento de 512 bits.

Ese no era el producto favorito de Intel, aceptaron este tipo de trabajos de diseño personalizado para sobrevivir al tiempo de aceleración de su chip RAM de 1024 bits. Tedd Hoff, Stan Mazor y Larry Potter observaron el diseño y propusieron un procesador LSI con RAM. Con el tiempo se convirtió en el 8008. A los pobres y a Pyle se les atribuye el diseño del conjunto de instrucciones.

Que hayan elegido little-endian es creíble en esta entrevista con Poor . Se salta rápidamente y la entrevista es bastante dispersa, pero la parte relevante en la página 24:

Shustek : Entonces, por ejemplo, almacenar primero los bytes menos significativos, vino del hecho de que esto era en serie y primero se necesitaban procesar los bits más bajos.
Pobre: Tuviste que hacerlo de esa manera. No tienes elección.

La observación “no tenía opción” es impar, que parece aplicarse solo al diseño bit-serial del procesador MSI. También la razón por la que compraron registros de turno en lugar de RAM. Viene nuevamente en la página 34:

Hendrie: ¿Te acuerdas de alguno de los repliegues de ellos sobre el diseño o cualquiera de esos detalles …
Pobre: uno de ellos fue el bit frente a 8 bits. Querían una parte ancha de 8 bits y, en definitiva, así fue como la construyeron.
Pobre: Pero todavía estaba recirculando. Pero, ya ves, hay puntos interesantes sobre si habrá un gran final o una pequeña parte final podría haber sido cambiada en ese punto, pero no fue así. Lo dejamos …
Hendrie: ¿ Incluso después de que fuiste a ocho bits?
Pobre: Correcto. Por eso la línea de productos Intel es así hoy

En última instancia, CTC no utilizó el 8008, se terminó un año demasiado tarde y para entonces ya habían implementado el procesador MSI. El diseño del microprocesador fue sin duda la propiedad intelectual de CTC, sin embargo, intercambió los derechos con Intel por el costo del diseño. Un poco de error 🙂 Le siguieron los juicios sobre los derechos de patente más adelante.

Entonces, como se dijo, Intel terminó con little-endian debido a la forma en que funcionaban los puertos serie.

Refleja la diferencia entre considerar que la memoria siempre se organiza un byte a la vez, considerando que se organiza una unidad a la vez, donde el tamaño de la unidad puede variar (byte, palabra, dword, etc.)