2011-03-03 20 views
33

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

+0

Design tradeoffs. Consulte http://en.wikipedia.org/wiki/Endianness#Optimization para ver un par de ejemplos. –

Respuesta

2

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

51

En gran parte, por la misma razón, comienza con el dígito menos significativo (el extremo derecho) cuando agrega, porque lleva la propagación 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.

Después de haber hecho suficiente codificación y depuración del conjunto, puede llegar a la conclusión de que no es un pequeño endian esa es la elección extraña; es extraño que los humanos usamos big endian.

+12

Una nota al margen: los humanos generalmente leen números y solo a veces los usan para el cálculo. Además, a menudo no necesitamos los números exactos cuando se trata de grandes cantidades, teniendo esto en cuenta, Big Endian es una opción sensata para los humanos. – qff

+0

@qff ¿Está diciendo que en big endian, porque se puede leer de izquierda a derecha desde el dígito más significativo, hace que sea más fácil comprender el orden de magnitud del número? ¿Y para las personas que normalmente leen de derecha a izquierda? –

+12

El árabe está escrito de derecha a izquierda, lo que podría explicar la orientación de nuestro sistema de numeración: ¡para ellos, en efecto, es un pequeño endian! – pyon

33

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 arquitectura anterior a la nueva. Eso hace retroceder el reloj de 8086 a 8080 para el primer microprocesador donde importaba la endianidad, 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 de 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 eligieron little-endian es creíble desde this interview with Poor. Se salta a través de él con bastante rapidez y la entrevista es más bien dispersión de disparo y la parte correspondiente de la página 24:

Shustek: números Así, por ejemplo, que almacenan menos significativo primer byte, vino del hecho que esto era serial y que primero era necesario procesar los bits bajos.
Pobre: ​​ Debes hacerlo de esa manera. No tienes elección.

La observación "no tenía elección" es impar, que parece aplicarse únicamente al diseño bit-serial del procesador MSI. También la razón por la que compraron registros de turno en lugar de RAM. Se trata de nuevo en la página 34:

Hendrie: ¿Recuerdas alguna de las partes posteriores de inserción de ellos sobre el diseño o cualquiera de esos detalles ...
Pobre: ​​ Uno de ellos fueron el bit frente a 8 bits. Querían una parte ancha de 8 bits y, en última instancia, eso es cómo lo construyeron.
Pobre: ​​ Pero todavía estaba recirculando. Pero, como ve, hay puntos interesantes sobre si va a haber un extremo grande o una parte pequeña podría haberse cambiado en ese punto, pero no fue así. Simplemente lo dejamos ...
Hendrie: ¿Incluso después de que pasó a ocho bits?
Pobre: ​​ Derecha. Por lo que la línea de productos de Intel es de esa manera hoy

En última instancia CTC no utilizaron el 8008, se terminó un año demasiado tarde y ya había puesto en marcha el procesador de MSI para entonces. 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.

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

+0

Hmm, esa es una muy buena respuesta, podría decir correctamente que el puerto serial funciona como serial y que es una pérdida de CPU atravesar en cada operación si el caso es big-endian. Creo que entiendo correctamente, por lo que la segunda pregunta, ¿sigue siendo little-endian es un requisito? Creo que los puertos seriales son legado ahora, ¿no? ¿O todavía hay alguna otra razón que obligue a diseñar como pequeño endian? – FZE

+2

Sin duda, es un requisito seguir la opción de endianness para mantener los programas compatibles en todos los cambios de arquitectura. Los puertos seriales aún no son exactamente heredados, aún son comunes en diseños integrados y muchos proveedores de dispositivos USB y BlueTooth exponen una interfaz a su dispositivo a través de la API del puerto serie al emular un puerto serie en el controlador de su dispositivo. –

+0

Gracias señor para una explicación más detallada. – FZE

Cuestiones relacionadas