2009-05-27 20 views
11

¿Por qué algunas manifacturers procesador deciden utilizar¿Cuáles son los beneficios de las diferentes endiannesses?

  • Little Endian
  • Big Endian
  • Media endian
  • Algún otro?

?

He oído que con big endian uno puede encontrar a cabo más rápido, si un número es negativo o positivo, debido a que el bit es la primera. (Esto no tiene importancia en las CPU modernas, ya que no se puede acceder a un bit individual).

+5

¿Está el endian medio donde tienes el huevo en su costado y lo rompes por la mitad? – workmad3

+0

Middle endian es el esquema utilizado por el PDP-11: Bits 15..8, luego 7..0, 31..24, 23..16. – finnw

+0

Así que middle endian es solo 16 bit little endian –

Respuesta

15

El beneficio de poca endianness es que una variable se puede leer como cualquier longitud con la misma dirección.

Por ejemplo, una variable de 32 bits se puede leer como una variable de 8 bits o 16 bits sin cambiar la dirección. Esto puede tener un beneficio limitado en estos días, pero en los días de ensamblador y memoria limitada que podría ser una ventaja significativa

+1

¿Qué hay de Big Endian? –

+0

No estoy seguro de que haya un beneficio real para Big Endian, aparte de la compatibilidad con otros sistemas. En la mayoría de los lenguajes de alto nivel, la endianidad es irrelevante de todos modos –

+8

Uno de los beneficios de big-endian es que se pueden leer valores de 16 y 32 bits como la mayoría de los humanos; de izquierda a derecha. Un volcado de memoria de 4 bytes que dice 'ffaa8800' es en realidad' 0xffaa8800' no '0x0088aaff' como podría ser little-endian. – PeyloW

1

Usar la endianidad de la CPU (no importa si es pequeño o grande) le da la ventaja de velocidad en aritmética: puede agregar restar etc. enteros multibyte directamente en la memoria.

El uso de una endianidad predefinida y prescripta (no pequeña o grande) en un formato de archivo le da la ventaja de poder leer el archivo en cualquier sistema, sin importar la endianidad de la CPU del otro sistema. Los sistemas con el endianness correcto pueden leer el archivo más rápido (si la rutina de lectura está escrita y optimizada correctamente), pero incluso los sistemas con el endianness incorrecto pueden leerlo. Por lo general, la diferencia de velocidad es insignificante (excepto para archivos muy grandes con muchos enteros), por lo que es una buena idea primero medir la ganancia de velocidad máxima posible de la optimización de la rutina de lectura.

Algunos formatos de archivo (por ejemplo, TIFF) son compatibles con ambos endianness. En este caso, es una buena idea generar el archivo con la endianidad de la CPU, suponiendo que el archivo se procesará posteriormente en la misma máquina o en una máquina similar.

+2

En realidad, para un archivo grande, incluso si solo es un número entero, usted estará limitado por la velocidad a la que puede leerlo desde el disco o la red si el único procesamiento que necesita es do es swap termina. De hecho, en CPU modernas puede hacer mucho más trabajo que antes de que sea más lento que su E/S, que es la razón por la que a menudo almacenar archivos comprimidos en el disco y descomprimirlos sobre la marcha mientras los procesa es más rápido que solo procesando un archivo descomprimido –

+0

¿Puedes explicar por qué Endianness es importante para leer archivos? ¿Qué importa si leo un archivo de texto? – Geek

+2

Bueno, por ejemplo, si está leyendo un archivo que es un archivo de texto que almacena caracteres UTF16LE (little endian), entonces, si su formato original era UTF16BE (grande), tendría que invertir el sentido de los caracteres tal como se leían. Sin embargo, como señala Curt Samson, esto probablemente hace poca diferencia ya que la velocidad de la CPU y la memoria principal es mucho mayor que el disco –

3

No hay ningún beneficio particular de endian grande o pequeño como tal, excepto usando endianness CPU nativo o manipulación endianness archivo especificado.

La razón por la cual tanto grandes y pequeños coexisten endian es que los diferentes fabricantes de CPU utilizan diferentes convenciones para representar datos de varios bytes, y hay un estándar surgieron en el momento.

+0

habiendo estudiado electrónica, estoy familiarizado con el orden de bits, pero el orden de bytes parece realmente exótico. – user2284570

0

En endian pequeño que no se molestan en cambiar la dirección, pero en big endian usted tiene que: http://www.noveltheory.com/techpapers/endian.asp

Realmente no sé si todavía little endian tiene ventaja sobre big endian en CPU modernas. Me -naively- creo que el cambio de la dirección de los costes de picovatios CPU de poder :)

0

Ciertas operaciones se benefician de tener partes de un valor disponible antes de que otra parte. Cuando se agregan dos números sin signo o complemento de dos que son demasiado grandes para leerlos todos a la vez, los bits más bajos del resultado se pueden calcular antes de que los bits superiores estén disponibles, pero no al revés, lo que implica que el orden little-endian es ventajoso allí. Al acceder a un chip flash serial, la decodificación de fila solo puede comenzar cuando estén disponibles todos los bits que definen la fila (típicamente todos excepto los menos significativos 8-12 bits, dependiendo del chip), lo que implica que el orden big-endian es ventajoso ahí.

+0

La lógica moderna de RAM, descodificación y ejecución suele ser de más de 8 bits de ancho. Solo tiene sentido en PIC antiguos o angostos de bus/serie. – Barry

+0

@Barry: Los casos que conozco donde little-endian es ventajoso se derivan de la capacidad de iniciar operaciones en los bits inferiores de un número antes de que estén disponibles todos los bits superiores. Tales casos surgen con mucha menos frecuencia hoy que en años pasados, pero el hecho de que el hardware se haya beneficiado de tales habilidades es casi seguramente la razón por la que el pequeño endian es común hoy en día. – supercat

Cuestiones relacionadas