¿Qué determina el número de bits para el campo de dirección en una memoria caché?

0

Entiendo que una memoria caché está construida para un bloque básico como este

bit válido | Bits de dirección | Datos / Instrucción

¿Pero qué determina la longitud de los bits de dirección? Entiendo que para un sistema de 32 bits, los bits de dirección siempre terminan con dos ceros y, por lo tanto, estos dos ceros se omiten. ¿Los 64 últimos dígitos de 64 bits serán cero? ¿Depende esto del tamaño de la memoria primaria? ¿Cómo es la fórmula?

    

2 respuestas

3

Los datos se almacenan en cachés en forma de "líneas". Cada línea puede ser de un solo byte o solo una palabra de 32 bits, pero por lo general, es una cantidad mucho mayor, como 32 palabras (128 bytes), que a menudo coincide con el tamaño máximo de "ráfaga" disponible desde la primaria (SDRAM DDR) memoria.

Además, la mayoría de los cachés tienen una cantidad limitada de "asociatividad", que es otra forma de decir que los datos de una dirección en particular solo se pueden almacenar en un número limitado de lugares en el caché. En las CPU modernas, la asociatividad de 4 y 8 vías es común, ya que proporciona un buen equilibrio entre rendimiento y complejidad.

Si tiene un caché de 1 MB que tiene líneas de 128 bytes, eso significa que tiene 8K líneas en el caché. Si tiene una asociatividad de 8 vías, eso significa que las líneas se dividen en grupos de 1K de 8. El número de grupo generalmente se define por los bits de dirección de orden inferior para esa línea de memoria en particular. En este caso, se necesitarían 10 bits para indexar el caché.

Los bits de dirección almacenados con cada línea se denominan "etiqueta", y la etiqueta se utiliza para decidir si la dirección solicitada actualmente por la CPU se encuentra en esa línea del caché.

El número de bits requerido en la etiqueta es simplemente el número de bits de dirección que salen de la CPU (bits de dirección virtual para un caché virtual, bits de dirección física para un caché físico), menos log2 el tamaño de la línea de caché (es decir, el número de bits necesarios para direccionar un byte dentro de una línea), menos log2 el número de grupos de líneas en el caché (el número de bits necesarios para seleccionar un grupo de asociatividad).

Por ejemplo, si tiene un espacio de direcciones físicas de 4 GB (32 bits de dirección) y un caché de 8 MB y 8 vías con un tamaño de línea de 128 B (7 bits de dirección), las etiquetas necesitarían 32 - 7 - 10 = 15 bits.

    
respondido por el Dave Tweed
2

La razón por la que se pueden ignorar los dos últimos bits es que los sistemas operativos y los compiladores de idiomas y los sistemas de tiempo de ejecución asignan y alinean la memoria en los límites de al menos 4 bytes. No tiene nada específico que ver con el número de bits de dirección.

    
respondido por el user207421

Lea otras preguntas en las etiquetas