Cálculo de la memoria caché

Estoy aprendiendo la lógica de las memorias caché. Me pregunto si puedes verificar que entendí correctamente. Si una memoria caché en el campo de etiqueta tiene 16 bits, el campo establecido tiene 10 bits y el byte en el campo del bloque es 6 bits, entonces puedo deducir solo de esa información que la capacidad es de 128 kbyte y es un conjunto de 2 vías asociativo con un tamaño de bloque de 64 bytes porque 2⁶ = 64 bytes del byte en el campo de bloque. 2¹⁰ = 1024 pero ¿podría alguna otra capacidad con algún otro número de asociatividad satisfacer los requisitos?

Aprendí que las fórmulas son

número de bloques = capacidad / tamaño del bloque

número de conjuntos = número de bloques / #asociatividad

Por lo tanto Podría duplicar tanto la asociatividad a 4 vías, pero no pude satisfacer los requisitos con una caché de 4 vías porque no uld requeriría otro número de bits en el campo establecido.

¿Entendí correctamente?

Responder

¿Esta imagen le ayuda a comprender cómo funcionan los cachés asociativos? estructuralmente?

ingrese la descripción de la imagen aquí prestada de aquí

En pocas palabras, los bits de desplazamiento del bloque determinan el tamaño de su bloque (cuántos bytes hay en una fila de caché, cuántas columnas si lo desea). Los bits de índice determinan cuántas filas hay en cada conjunto. Por tanto, la capacidad de la caché es 2 ^ (blockoffsetbits + indexbits) * #sets. En este caso, es 2 ^ (4 + 4) * 4 = 256 * 4 = 1 kilobyte.

Para el mismo tamaño de caché (capacidad), si tuviera que pasar de 4 vías a dos way set asociativo, es bidireccional asociativo, puede hacerlo duplicando las filas en cada conjunto o duplicando las columnas en cada conjunto, es decir, duplicando el número de líneas de caché o duplicando el tamaño del bloque.

Si tuviera que elegir duplicar el número de filas, terminaría dividiendo su dirección de 12 bits en un índice de 5 bits y un desplazamiento de bloque de 4 bits, dejando una etiqueta de 3 bits.

Si tuviera que elegir duplicar el tamaño del bloque, terminaría dividiendo su dirección de 12 bits en un índice de 4 bits, un desplazamiento de bloque de 5 bits, dejando una etiqueta de 3 bits.

Entonces, para reiterar, creo que las fórmulas que gobiernan las cachés asociativas son:

Cache Capacity = (Block Size in Bytes) * (Blocks per Set) * (Number of Sets) Index Bits = LOG2(Blocks per Set) Block Offset Bits = LOG2(Block Size in Bytes) Tag Bits = (Address Bits) - (Index Bits) - (Block Offset Bits) 

En su ejemplo original, no » No creo que pueda deducir el tamaño de la caché en función del tamaño de sus respectivos campos de bits de dirección sin hacer una suposición sobre ut la asociatividad. Si es asociativo bidireccional, entonces podría decir:

Capacidad de caché = (2 ^ 6) * (2 ^ 10) * (2) = 2 ^ 18 = 2 ^ 8 kilobytes = 256 kilobytes. No estoy seguro de cómo se le ocurrieron 128 kilobytes. Ese sería el caso si fuera asociativo unidireccional (mapeado directo).

Para una capacidad de caché de 128 kB (2 ^ 17 bytes), podría hacer un caché asociativo de 4 vías con un tamaño de bloque de 64 bytes diciendo:

2^17 = 2^6 * (Blocks per Set) * 4 Blocks per Set = 2^17 / 2^6 / 2^2 = 2^9 = 512 

… y por lo tanto asignando 9 bits de índice, 4 bits de desplazamiento de bloque , y el resto (19) bits de etiquetas.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *