La alineación de la memoria es siempre potencia de 2

2

Descubrí que la alineación de la memoria es siempre igual a la potencia de 2. Google dijo que esa cantidad de alineación permite que las computadoras modernas realicen la lectura más rápido. Ok, ¿cuál es exactamente el problema que obtendríamos si estableciéramos una cantidad de alineación con un poder de 3? Para ser más específico, me gustaría saber qué aspecto exacto del arquitecto de hardware requiere que la alineación sea una potencia de 2.

    
pregunta Dmitrii Bundin

2 respuestas

5

La memoria de la computadora moderna se trata conceptualmente como bytes, pero la transferencia de hardware real se realiza en un múltiplo (una potencia de 2) de bytes. Para hacer esto, los últimos bits de la dirección no participan en la transferencia real, pero se usan (opcionalmente) dentro de la CPU para seleccionar uno (o más) de los bytes transferidos.

Una consecuencia de este esquema es que lo que se transfiere es un bloque de bytes (el tamaño es una potencia de 2) que se alinea en un múltiplo del tamaño del bloque. Si la CPU desea un bloque de datos que no se ajusta a esta restricción, se necesita más de un bloque de lectura, y la CPU debe reorganizar el contenido de los bloques para obtener los datos que necesita. Una CPU puede prescindir de dicho hardware de reorganización (y la pérdida de tiempo asociada) al requerir que los datos estén alineados adecuadamente.

En resumen: la alineación 2 ^ N coincide con lo que es fácil y rápido en hardware.

    
respondido por el Wouter van Ooijen
1

Intente contar en múltiplos de 10. Es muy fácil: 10, 20, 30, 40, 50, 60, ...

Ahora intente contar en múltiplos de algún otro número, como, digamos, 7: 7, 14, 21, 28, 35, 42, ...

Notarás que, en la base 10, es mucho más fácil contar en múltiplos de 10 (o 100 o 1000) porque puedes contar en incrementos de uno y agregar uno o más ceros al final de los números. Contar en múltiplos de 7 es mucho más difícil, porque no existe una regla tan fácil, y terminará teniendo que hacer una aritmética no trivial (especialmente después de superar los múltiplos de 7 que puede haber memorizado al aprender el tabla de multiplicar en la escuela preliminar).

Funciona de la misma manera para las computadoras, excepto que todas las computadoras modernas usan la base 2 en lugar de la base 10 internamente (porque los dígitos binarios son fáciles de representar electrónicamente; solo tiene dos estados: 1/0, encendido / apagado, alto / bajo). Por lo tanto, para las computadoras, contar en pasos de 2 (o 4 u 8 o 16, etc.) es muy fácil, mientras que contar en pasos que no son potencias de 2 requiere una aritmética más compleja.

    
respondido por el Ilmari Karonen

Lea otras preguntas en las etiquetas