Pregunta

Tenemos arquitecturas de hardware y sistemas operativos de 8 bits, 16 bits, 32 bits y 64 bits. Pero no, digamos, los de 42 o 69 bits.

¿Por qué? ¿Es algo fundamental lo que hace que 2 ^ n bits sea una mejor opción, o se trata simplemente de la compatibilidad con los sistemas existentes? (Obviamente, es conveniente que un registro de 64 bits pueda contener dos punteros de 32 bits, o que una unidad de datos de 32 bits pueda contener 4 bytes).

¿Fue útil?

Solución

Eso es sobre todo una cuestión de tradición. Ni siquiera es siempre cierto. Por ejemplo, las unidades de punto flotante en los procesadores (incluso los contemporáneos) tienen registros de 80 bits. Y no hay nada que nos obligue a tener bytes de 8 bits en lugar de bytes de 13 bits.

A veces esto tiene razonamiento matemático. Por ejemplo, si decide tener un byte de N bits y desea realizar la multiplicación de enteros, necesita exactamente 2N bits para almacenar los resultados. Luego, también desea sumar / restar / multiplicar esos enteros de 2N bits y ahora necesita registros de propósito general de 2N bits para almacenar los resultados de suma / resta y registros de 4N bits para almacenar los resultados de multiplicación.

Otros consejos

http://en.wikipedia.org/wiki/Word_%28computer_architecture % 29 # Word_size_choice

  

Se utilizan diferentes cantidades de memoria para almacenar valores de datos con diferentes grados de precisión. Los tamaños de uso común suelen ser una potencia de 2 múltiplos de la unidad de resolución de la dirección (byte o palabra). Convertir el índice de un elemento en una matriz en la dirección del elemento requiere solo una operación de cambio en lugar de una multiplicación. En algunos casos, esta relación también puede evitar el uso de operaciones de división. Como resultado, la mayoría de los diseños de computadoras modernas tienen tamaños de palabras (y otros tamaños de operandos) que son una potencia de 2 veces el tamaño de un byte.

Parcialmente, es una cuestión de direccionamiento. Tener N bits de dirección le permite direccionar 2 ^ N bits de memoria como máximo, y los diseñadores de hardware prefieren aprovechar al máximo esta capacidad. Por lo tanto, puede usar 3 bits para direccionar el bus de 8 bits, etc.

El venerable PDP-10 era de 36 bits.

Muchas CPU (con la mayoría?) anteriores al microprocesador tienen una cantidad de bits por palabra que no son una potencia de dos.

En particular, Seymour Cray y su equipo construyeron muchas máquinas altamente influyentes con tamaños de palabras y direcciones sin poder de potencia de dos: 12 bits, 48 ??bits, 60 bits, etc.

Un número sorprendentemente grande de computadoras tempranas tenían palabras de 36 bits, debido completamente al hecho de que los humanos tienen 10 dedos. La Wikipedia " 36-bit " El artículo tiene más detalles sobre la relación entre 10 dedos y 36 bits, y enlaces a artículos sobre muchos otros tamaños de bits históricamente importantes pero que ya no son populares, la mayoría de ellos no son una potencia de dos.

Yo especulo que

(a) La memoria direccionable de 8 bits se hizo popular porque era un poco más conveniente para almacenar BCD de 4 bits ASCII y de 7 bits, sin empaquetar de forma incómoda o desperdiciar varios bits por carácter; y ningún otro ancho de memoria tenía una gran ventaja.

(b) Como lo señala Stephen C. Steel, esa ligera ventaja se multiplica por las economías de escala y las fuerzas del mercado: se utilizan más memorias de 8 bits de ancho, por lo que las economías de escala las hacen un poco más baratas, lo que lleva a incluso más memorias de 8 bits de ancho se utilizan en nuevos diseños, etc.

(c) En teoría, los anchos de bus más amplios hacen que la CPU sea más rápida, pero poner la CPU completa en un solo chip lo hizo mucho más barato y quizás un poco más rápido que cualquier otro sistema de CPU de múltiples partes de cualquier ancho de bus. Al principio, apenas había suficientes transistores para una CPU de 4 bits, y luego una CPU de 8 bits. Más tarde, apenas había suficientes transistores para una CPU de 16 bits, para una enorme fanfarria y " 16 bit " CAMPAÑA de Marketing. Justo en el momento en que uno esperaría una CPU de 24 bits ...

(d) La revolución RISC golpeó. Los primeros dos chips RISC eran de 32 bits, por cualquier razón, y la gente estaba condicionada a pensar que "más bits son mejores", por lo que todos los fabricantes se subieron al carro de 32 bits. Además, IEEE 754-1985 se estandarizó con números de punto flotante de 32 bits y 64 bits. Hubo algunas CPU de 24 bits, pero la mayoría de las personas nunca han oído hablar de ellas.

(e) Por razones de compatibilidad de software, los fabricantes mantuvieron la ilusión de un bus de datos de 32 bits, incluso en procesadores con un bus frontal de 64 bits (como Intel Pentium y AMD K5, etc.) o en placas base con una Bus ancho de 4 bits (bus LPC).

Su sistema de memoria quiere ser un byte múltiple, lo que hace que su caché quiera ser un byte múltiple, lo que hace que todo su sistema quiera ser un byte múltiple.

Hablando como un diseñador de HW, generalmente desea diseñar CPU para los límites de bytes de algún tipo, es decir, múltiplos de 8. De lo contrario, tendrá que agregar muchos circuitos incómodos a un sistema de 49 bits para hacer que utilice el mod. -8 bits, o terminas ignorando los bits adicionales, en cuyo caso era un desperdicio, a menos que necesitaras el bit adicional para las instrucciones, lo que nunca ocurre en sistemas de 16 bits o más amplios.

Como han señalado otros, en los primeros días, las cosas no eran tan claras: las palabras llegaban en todo tipo de tamaños extraños.

Pero el impulso para estandarizar en bytes de 8 bits también fue impulsado por la tecnología de chip de memoria. En los primeros días, muchos chips de memoria se organizaron como 1 bit por dirección. La memoria para las palabras de n bits se construyó mediante el uso de chips de memoria en grupos de n (con las correspondientes líneas de dirección unidas, y cada bit de datos del chip contribuyó a un bit de la palabra de n bits).

A medida que aumentaban las densidades de los chips de memoria, los fabricantes empaquetaban varios chips en un solo paquete. Debido a que los tamaños de palabra más populares en uso eran múltiplos de 8 bits, la memoria de 8 bits era particularmente popular: esto significaba que también era la más barata. A medida que más y más arquitecturas se subieron al carro de 8 bits, el precio superior para los chips de memoria que no usaban bytes de 8 bits se hizo más y más grande. Argumentos similares explican movimientos desde 8- > 16, 16- > 32, 32- > 64.

Aún puede diseñar un sistema con memoria de 24 bits, pero esa memoria probablemente será mucho más costosa que un diseño similar que use memoria de 32 bits. A menos que haya una buena razón para mantener los 24 bits, la mayoría de los diseñadores optarían por 32 bits cuando sea más barato y más capaz.

Al mismo tiempo, la longitud de las palabras de las computadoras solía ser un múltiplo de 6 bits, porque las computadoras normalmente usaban conjuntos de caracteres de 6 bits, sin soporte para letras minúsculas.

IBM hizo una computadora de alto rendimiento, la STRETCH, para Los Alamos, que tenía una palabra de 64 bits. Tenía la característica inusual de que los bits individuales en la memoria de la computadora podían ser direccionados directamente, lo que obligaba a que la longitud de la palabra fuera una potencia de dos. También tenía un conjunto de caracteres más extendido, que permitía incluir símbolos matemáticos (además de minúsculas); se utilizaron en un lenguaje especial de nivel superior llamado COLASL.

Cuando IBM salió con el popular sistema / sistema central 360, a pesar de que no tenía direccionamiento de bits, mantuvo el byte de ocho bits, principalmente para permitir el almacenamiento eficiente de cantidades decimales empaquetadas en cuatro bits hasta el dígito decimal. Debido a que esa máquina era tan popular, fue muy influyente, y la computadora PDP-11 de DEC fue diseñada con una palabra de 16 bits y caracteres de 8 bits. La PDP-11 también fue la primera máquina de little endian, y también fue muy popular e influyente.

Pero no es solo por seguir la moda. Los caracteres de 8 bits permiten el texto en minúsculas y, a medida que las computadoras se abaratan, se valora la posibilidad de usarlas fácilmente para el procesamiento de textos. Y así como el STRETCH necesitaba tener una palabra que tuviera una potencia de dos tamaños en bits para permitir el direccionamiento de los bits, las computadoras de hoy tenían que tener una palabra que fuera una potencia de dos múltiplos de 8 (lo que resulta que es dos a la tercera potencia en sí) para permitir que los caracteres sean fácilmente abordados.

Si todavía utilizáramos caracteres de 6 bits, las computadoras tenderían a tener palabras de 24, 48 o 96 bits.

Relacionado, pero posiblemente no sea la razón, escuché que la convención de 8 bits en un byte es porque es así como IBM manipuló la arquitectura IBM System / 360.

Una razón común es que puedes numerar tus bits en binario. Esto es útil en bastantes situaciones. Por ejemplo, en bitshift o rotate operaciones. Puede rotar un valor de 16 bits de 0 a 15 bits. Un intento de rotar más de 16 bits también es trivial: eso es equivalente a una rotación de más de 0 bits. Y una rotación sobre 1027 bits es igual a una rotación sobre 3 bits. En general, la rotación de un registro de ancho W sobre N bits equivale a una rotación sobre N módulo W, y la operación "módulo W" es trivial cuando W es una potencia de 2.

El 80186, 8086, 8088 y " Modo real " en 80286 y posteriores, los procesadores utilizaron un sistema de direccionamiento de memoria segmentado de 20 bits. El 80286 tenía 24 líneas de direcciones nativas y luego el 386 y luego 32 o 64.

Otro ejemplo de contador: los microcontroladores de la serie PIC16C8X tienen un conjunto de instrucciones de 14 bits de ancho.

El byte está relacionado con la codificación de caracteres principalmente del mundo occidental, por lo tanto, de 8 bits. Word no está relacionado con la codificación relacionada con el ancho de la dirección, por lo que varía de 4 a 80, etc., etc.

Mi vieja y confiable calculadora HP 32S era de 12 bits.

Porque el espacio reservado para la dirección es siempre un número fijo de bits. Una vez que haya definido el tamaño de la dirección fija (o puntero), querrá aprovecharla al máximo, por lo que tendrá que usar todos sus valores hasta el número más alto que pueda almacenar. El número más alto que puede obtener de un múltiplo de un bit (0 o 1) siempre es una potencia de dos

Puede que encuentres algo aquí: Binary_numeral_system

Los ICL 1900 eran todos de 24 bits (palabras). Apuesto a que no hay mucha gente que recuerde esto. Haces ??

Tenemos, solo mira los microcontroladores PIC.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top