¿Cuál es el historial de por qué los bytes son ocho bits?

78

¿En qué consistían las fuerzas históricas en el trabajo, las compensaciones que se debían hacer, al decidir utilizar grupos de ocho bits como la unidad fundamental?

Hubo máquinas, una vez, que utilizaban otros tamaños de palabra, pero hoy en día para no tener ocho bits debe buscar piezas de museo, chips especializados para aplicaciones incrustadas y DSP. ¿Cómo evolucionó el byte a partir del caos y la creatividad de los primeros días del diseño por computadora?

Puedo imaginar que menos bits serían ineficaces para manejar suficientes datos para hacer que la computación sea factible, mientras que demasiados habrían llevado a un hardware costoso. ¿Fueron otras influencias en juego? ¿Por qué estas fuerzas se equilibraron en ocho bits?

(Por cierto, si pudiera viajar en el tiempo, volvería a cuando se declaró que el "byte" era de 8 bits, y convencería a todos para que lo hicieran de 12 bits, sobornándolos con algunas chucherías de principios del siglo XXI). / p>     

pregunta DarenW 16.11.2011 - 20:48
fuente

7 respuestas

69

Se hizo mucho trabajo muy temprano con códigos de baudot de 5 bits, pero rápidamente se volvieron bastante limitantes (solo 32 caracteres posibles, así que básicamente solo letras mayúsculas y unos pocos signos de puntuación , pero no hay suficiente "espacio" para los dígitos).

Desde allí, bastantes máquinas fueron para caracteres de 6 bits. Sin embargo, esto seguía siendo bastante inadecuado: si querías letras y dígitos en mayúsculas y minúsculas (en inglés), eso dejaba solo dos caracteres más para la puntuación, por lo que la mayoría todavía tenía un solo caso de letras en un conjunto de caracteres.

ASCII definió un conjunto de caracteres de 7 bits. Eso fue "lo suficientemente bueno" para muchos usos durante mucho tiempo, y también ha formado la base de la mayoría de los juegos de caracteres más nuevos (ISO 646, ISO 8859, Unicode, ISO 10646, etc.)

Las computadoras binarias motivan a los diseñadores a hacer potencias de dos tamaños. Ya que el conjunto de caracteres "estándar" requería 7 bits de todos modos, no era demasiado complicado agregar un bit más para obtener una potencia de 2 (y para entonces, el almacenamiento se estaba volviendo lo suficientemente más barato que "perder" un poco para la mayoría de los personajes era más aceptable también).

Desde entonces, los conjuntos de caracteres se han movido a 16 y 32 bits, pero la mayoría de las computadoras principales se basan en gran medida en la PC original de IBM (un diseño que tendrá 30 años en los próximos meses). ). Por otra parte, una parte suficiente del mercado está lo suficientemente satisfecha con los caracteres de 8 bits que, incluso si la PC no hubiera alcanzado su nivel de dominio actual, no estoy seguro de que todos hagan todo lo posible con caracteres más grandes.

También debo añadir que el mercado ha cambiado bastante. En el mercado actual, el tamaño del carácter se define menos por el hardware que por el software. Windows, Java, etc., se trasladó a caracteres de 16 bits hace mucho tiempo.

Ahora, el obstáculo para admitir caracteres de 16 o 32 bits es solo mínimamente por las dificultades inherentes a los mismos caracteres de 16 o 32 bits, y en gran medida por la dificultad de admitir i18n en general. En ASCII (por ejemplo), detectar si una letra es mayúscula o minúscula, o convertir entre las dos, es increíblemente trivial. En Unicode completo / ISO 10646, es básicamente indescriptiblemente complejo (hasta el punto de que los estándares ni siquiera lo intentan, dan tablas, no descripciones). Luego agrega el hecho de que para algunos idiomas / conjuntos de caracteres, incluso la idea básica de mayúsculas / minúsculas no se aplica. Luego agrega el hecho de que incluso mostrar caracteres en algunos de ellos es mucho más complejo.

Todo esto es lo suficientemente complejo como para que la gran mayoría de los programas ni siquiera lo intenten. La situación está mejorando lentamente, pero lentamente es la palabra clave.

    
respondido por el Jerry Coffin 16.11.2011 - 21:13
fuente
10

Siete bits para información ASCII, y uno para paridad de detección de errores.

    
respondido por el DeadMG 16.11.2011 - 21:03
fuente
5

Echa un vistazo a la página de Wikipedia sobre arquitectura de 8 bits . Aunque los conjuntos de caracteres podrían haber sido de 5, 6, y luego 7 bits, la arquitectura subyacente de la CPU / bus de memoria siempre usó potencias de 2. El primer microprocesador (alrededor de los 70) tenía un bus de 4 bits, lo que significa que una instrucción podría moverse 4- bits de datos entre la memoria externa y la CPU.

Luego, con el lanzamiento del procesador 8080, la arquitectura de 8 bits se hizo popular y eso es lo que dio origen al conjunto de instrucciones de ensamblaje x86 que se usa incluso en estos días. Si tuviera que adivinar, el byte provino de estos primeros procesadores donde el público en general comenzó a aceptar y jugar con PC y se consideró que el tamaño estándar de una sola unidad de datos era de 8 bits.

Desde entonces, el tamaño del bus se ha duplicado, pero siempre ha mantenido una potencia de 2 (es decir, 16, 32 y ahora 64 bits). En realidad, estoy seguro de que las partes internas del bus de hoy son mucho más complicadas que simplemente 64 paralelas cables, pero la arquitectura actual de la CPU es de 64 bits.

Supongo que duplicando siempre (en lugar de aumentar un 50%) fue más fácil crear un nuevo hardware que coexista con las aplicaciones existentes y otros componentes heredados. Así, por ejemplo, cuando pasaron de 8 bits a 16, cada instrucción ahora podía mover 2 bytes en lugar de 1, por lo que se ahorra un ciclo de reloj pero el resultado final es el mismo. Sin embargo, si pasara de la arquitectura de 8 a 12 bits, terminaría dividiendo los datos originales en mitades y la gestión podría volverse molesta. Estas son solo suposiciones, no soy realmente un experto en hardware.

    
respondido por el DXM 17.11.2011 - 03:37
fuente
4

Un byte ha sido diverso (al menos) 1, 4, 6, 7, 8, 9, 12, 18, 20 y posiblemente 36 bits, dependiendo de la computadora que esté mirando. Estoy tomando "byte" aquí para significar "unidad de memoria direccionable más pequeña", en lugar de utilizar cualquier tipo de interpretación centrada en el texto. (Por ejemplo, la CPU Saturn, una CPU de 64 bits utilizada en la popular línea de calculadora HP48SX / GX, dirige la memoria en nibbles - 4 bits.)

Los bytes de 20 bits eran extremadamente comunes en las "máquinas IAS", en los años 50. 6, 12, 18 (y quizás 36) fueron bastante populares en una variedad de arquitecturas en los años 60, 70 y hasta cierto punto en los 80.

Al final, parece haber ganado una buena correspondencia entre "potencias de 2" y "bits en una unidad direccionable".

    
respondido por el Vatine 23.09.2013 - 16:55
fuente
1

De acuerdo con mi información, la palabra byte en sí misma se deriva de la frase by-eight, que era ocho (8) palabras de bits. La conveniencia que encontramos en palabras de 8 bits es la conversión a valores hexadecimales ya que el valor 00000000 = 00 & 11111111 = FF (255 de diciembre para sin firmar y -127 para firmado) es fácil realizar todas las operaciones aritméticas en dicha estructura, incluidas las operaciones de bit a bit.

Veo los bytes (palabras de 8 bits) como una evolución natural del tamaño de las palabras, desde catastróficamente pequeños de 3 bits hasta ridículamente grandes palabras de 60 bits

    
respondido por el A.Rashad 17.11.2011 - 05:54
fuente
1

Primero un poco de aclaración: los octetos (unidades de 8 bits) no son realmente una unidad fundamental en las arquitecturas de computadoras modernas. Al menos no más fundamental que otras potencias de dos: 2, 4, 16, 32, 64, 128, etc. Los octetos fueron la unidad fundamental para los procesadores de 8 bits (de ahí el nombre), pero las arquitecturas modernas normalmente funcionan con bits más grandes - Establece internamente. P.ej. x86_64 tiene registros enteros de 64 bits y registros de punto flotante de 80 bits. La RAM se lee y se escribe en fragmentos de 64 bits, y el procesador solo usa un poco de magia para hacer que parezca que puede abordar bytes individuales de 8 bits.

Para arquitecturas más antiguas, "byte" indica el tamaño del bus de datos, y como dice la pregunta original, existían muchos tamaños de bus diferentes (4, 5, 6, 8, 12, etc.). Pero desde 1993, un byte se ha definido como 8 bits, para tener una unidad SI estandarizada para los tamaños de datos. Por lo tanto, el significado de "byte" ha cambiado de ser una unidad dependiente de la arquitectura a una unidad estandarizada independiente de la arquitectura.

En estos días, los bytes son la unidad estándar para direccionar y cuantificar datos, pero en realidad no son fundamentales de lo contrario.

La unidad de octetos se convirtió en el estándar de facto para el almacenamiento, principalmente debido a las preocupaciones sobre el almacenamiento de texto. Para almacenar texto, lo ideal es que desee que un byte almacene un carácter. Dos factores fueron importantes:

  • Tener unidades con potencias de dos (2, 4, 8, 16, 32, etc.) es más conveniente al diseñar sistemas digitales.
  • 8 bits es suficiente para almacenar un solo carácter en el conjunto de caracteres ASCII (con espacio de sobra para ampliar el conjunto de caracteres para admitir, por ejemplo, cirílico).

Por supuesto, 8 bits no son suficientes para admitir todos los scripts, algo así como el japonés requiere al menos 16 bits (y para lo que vale, Unicode es de 21 bits), pero en ese momento los bits eran caros y más digitales. El texto estaba en el rango ASCII de todos modos.

En estos días, el texto normalmente se almacena en codificaciones de ancho variable como UTF-8, y con cosas como la combinación de caracteres Unicode, el "un byte es igual a un carácter" siempre ha sido cosa del pasado. Hoy en día, el byte es realmente el estándar por razones históricas.

    
respondido por el JacquesB 30.07.2018 - 17:17
fuente
0

Un byte no tiene que tener 8 bits , pero parece que C y C ++ definen un byte como al menos 8 bits (aunque podría ser más). Esta pregunta sobre el desbordamiento de pila menciona algunos sistemas donde 1 byte no es 8 bits .

    
respondido por el Thomas Owens 16.11.2011 - 21:02
fuente

Lea otras preguntas en las etiquetas