¿Dónde están las fuerzas históricas en el trabajo, las compensaciones a realizar, al decidir usar grupos de ocho bits como unidad fundamental?
Hubo máquinas, alguna vez, que usaban otros tamaños de palabras, pero hoy en día, para obtener un tamaño que no sea de ocho bits, debe buscar piezas de museo, chips especializados para aplicaciones integradas y DSP. ¿Cómo evolucionó el byte del caos y la creatividad de los primeros días del diseño de computadoras?
Me imagino que menos bits serían ineficaces para manejar suficientes datos para hacer factible la computación, mientras que demasiados habrían llevado a un hardware costoso. ¿Hubo otras influencias en juego? ¿Por qué estas fuerzas se equilibraron a 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 de que lo hicieran en 12 bits, sobornándolos con algunas baratijas de principios del siglo XXI).
Respuestas:
Se realizó una gran cantidad de 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 algunos signos de puntuación, pero no suficiente "espacio" para los dígitos) .
A partir de ahí, bastantes máquinas utilizaron caracteres de 6 bits. Sin embargo, esto todavía era bastante inadecuado: si deseaba letras y dígitos en mayúsculas y minúsculas (inglés), eso dejaba solo dos caracteres más para la puntuación, por lo que la mayoría todavía tenía solo un 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 conjuntos 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. Como el juego de caracteres "estándar" requería 7 bits de todos modos, no fue demasiado difícil 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 "desperdiciar" un poco para la mayoría de los personajes fue más aceptable también).
Desde entonces, los juegos de caracteres se han movido a 16 y 32 bits, pero la mayoría de las computadoras convencionales se basan en gran medida en la PC original de IBM. Por otra parte, una parte suficiente del mercado está suficientemente satisfecha con los caracteres de 8 bits que, incluso si la PC no hubiera alcanzado su nivel actual de dominio, no estoy seguro de que todos hagan todo con caracteres más grandes de todos modos.
También debo agregar que el mercado ha cambiado bastante. En el mercado actual, el tamaño de los caracteres se define menos por el hardware que por el software. Windows, Java, etc., se movieron 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 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 / ISO 10646 completo, 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 aún.
Todo eso es lo suficientemente complejo como para que la gran mayoría del software ni siquiera lo intente. La situación está mejorando lentamente, pero lentamente es la palabra clave.
fuente
Siete bits para información ASCII y uno para la paridad de detección de errores.
fuente
Echa un vistazo a la página de Wikipedia sobre arquitectura de 8 bits . Aunque los conjuntos de caracteres podrían haber sido 5-, 6-, luego 7 bits, la arquitectura subyacente de la CPU / bus de memoria siempre usaba potencias de 2. El primer microprocesador (alrededor de los años 70) tenía un bus de 4 bits, lo que significa que una instrucción podría mover 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 el comienzo del conjunto de instrucciones de ensamblaje x86 que se utiliza incluso en estos días. Si tuviera que adivinar, el byte vino 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 sido una potencia de 2 (es decir, 16, 32 y ahora 64 bits). De hecho, estoy seguro de que los componentes internos del bus de hoy son mucho más complicados que simplemente 64 cables paralelos, pero La arquitectura actual de la CPU principal es de 64 bits.
Supongo que al duplicar siempre (en lugar de crecer un 50%) fue más fácil crear un nuevo hardware que coexista con las aplicaciones existentes y otros componentes heredados. Entonces, 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 una arquitectura de 8 a 12 bits, terminaría dividiendo los datos originales por la mitad y gestionarlos podría resultar molesto. Estas son solo conjeturas, no soy realmente un experto en hardware.
fuente
Un byte ha sido variado (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 "la unidad de memoria direccionable más pequeña", en lugar de usar cualquier tipo de interpretación centrada en texto. (Por ejemplo, la CPU Saturn, una CPU de 64 bits utilizada en la popular línea de calculadora HP48SX / GX, aborda la memoria en mordiscos: 4 bits).
Los bytes de 20 bits eran extremadamente comunes en las "máquinas IAS", en los años 50. 6, 12, 18 (y tal vez 36) fueron bastante populares en una variedad de arquitecturas en los años 60, 70 y hasta cierto punto 80.
Al final, parece haber ganado una buena correspondencia entre "potencias de 2" y "bits en una unidad direccionable".
fuente
Primero un poco de aclaración: los octetos (unidades de 8 bits) no son realmente una unidad fundamental en las arquitecturas informáticas modernas. Al menos no más fundamental que otras potencias de dos: 2, 4, 16, 32, 64, 128, etc. Los octetos eran la unidad fundamental para los procesadores de 8 bits (de ahí el nombre), pero las arquitecturas modernas generalmente funcionan con bits más grandes. -conjuntos internos. Por ejemplo, el x86_64 tiene registros enteros de 64 bits y registros de coma flotante de 80 bits. La RAM se lee y escribe en fragmentos de 64 bits, y el procesador solo usa un poco de magia para que parezca que puede direccionar bytes individuales de 8 bits.
Para arquitecturas antiguas, "byte" indicaba 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 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.
Así que en estos días, los bytes son la unidad estándar para direccionar y cuantificar datos, pero de lo contrario no son realmente fundamentales.
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 un byte para almacenar un carácter. Dos factores fueron importantes:
Por supuesto, 8 bits no son suficientes para admitir todos los scripts: algo 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 la mayoría del texto digital estaba en la gama ASCII de todos modos.
En estos días, el texto generalmente se almacena en codificaciones de ancho variable como UTF-8, y con elementos como la combinación de caracteres Unicode, el "un byte es igual a un carácter" ha sido algo del pasado. Hoy el byte es realmente el estándar por razones históricas.
fuente
De acuerdo con mi información, el byte de la palabra en sí se deriva de la frase by-eight, que era una palabra de ocho (8) bits. La conveniencia que encontramos en las palabras de 8 bits es la conversión a valores hexadecimales ya que el valor 00000000 = 00 & 11111111 = FF (Dec 255 para sin signo y -127 para firmado) es fácil de hacer todas las operaciones aritméticas en dicha estructura, incluyendo bits sabios operaciones
Veo bytes (palabras de 8 bits) como una evolución natural del tamaño de las palabras desde palabras catastróficamente pequeñas de 3 bits hasta palabras ridículamente grandes de 60 bits.
fuente
Un byte no tiene que ser de 8 bits , pero parece que C y C ++ definen un byte como de al menos 8 bits (aunque podría ser más). Esta pregunta sobre desbordamiento de pila menciona algunos sistemas en los que 1 byte no es 8 bits.
fuente
CHAR_BITS
macro)