Específicamente:
1) Un caché de mapeo directo con 4096 bloques / líneas en el que cada bloque tiene 8 palabras de 32 bits. ¿Cuántos bits se necesitan para los campos de etiqueta e índice, suponiendo una dirección de 32 bits?
2) ¿La misma pregunta que 1) pero para caché totalmente asociativo ?
Corrígeme si me equivoco, ¿es así?
bits de etiqueta = longitud de bit de dirección - exponente de índice - exponente de desplazamiento?
[¿El desplazamiento = 3 se debe a 2 ^ 3 = 8 o es 5 de 2 ^ 5 = 32?]
computer-architecture
cpu-cache
compski
fuente
fuente
Respuestas:
La pregunta como se indicó no es del todo respondible. Una palabra se ha definido como 32 bits. Necesitamos saber si el sistema es "direccionable por byte" (puede acceder a una porción de datos de 8 bits) o "direccionable por palabra" (la porción accesible más pequeña es de 32 bits) o incluso "direccionable por media palabra" (el La porción más pequeña de datos a la que puede acceder es de 16 bits.) Debe saber esto para saber qué le dice el bit de orden más bajo de una dirección.
Entonces trabajas de abajo hacia arriba. Supongamos que el sistema es byte direccionable.
Luego, cada bloque de caché contiene 8 palabras * (4 bytes / palabra) = 32 = 2 5 bytes, por lo que el desplazamiento es de 5 bits.
El índice para un caché mapeado directo es el número de bloques en el caché (12 bits en este caso, porque 2 12 = 4096).
Entonces la etiqueta es todos los bits que quedan, como usted ha indicado.
A medida que el caché se vuelve más asociativo pero se mantiene del mismo tamaño, hay menos bits de índice y más bits de etiqueta.
fuente
Su fórmula para los bits de etiqueta es correcta.
Si el desplazamiento es de tres o cinco bits depende de si el procesador utiliza el direccionamiento de bytes (octetos) o el direccionamiento de palabras. Fuera de los DSP, casi todos los procesadores recientes usan el direccionamiento de bytes, por lo que sería seguro asumir el direccionamiento de bytes (y cinco bits de desplazamiento).
fuente
Estoy aprendiendo para el examen final de la asignatura Sistema informático, busqué en Google por un tiempo y encontré esta pregunta. Y esta parte de la pregunta es confusa: "en el que cada bloque tiene 8 palabras de 32 bits". Una palabra tiene 4 bytes (o 32 bits), por lo que la pregunta solo debe ser "... en la que cada bloque tiene 8 palabras"
La respuesta es: cada bloque tiene 32 bytes (8 palabras), por lo que necesitamos 5 bits de desplazamiento para determinar qué byte en cada bloque: mapeado directo => número de conjuntos = número de bloques = 4096 => necesitamos 12 bits de índice para determinar qué conjunto
=> bit de etiqueta = 32 - 12 - 5 = 15
Para totalmente asociativo, el número de conjunto es 1 => sin bit de índice => bit de etiqueta = 32 - 0 - 5 = 27
fuente
No hay bits de índice en un caché totalmente asociativo. Los bits de índice se utilizan para identificar de forma exclusiva a qué conjunto pertenece el bloque. En un caché totalmente asociativo, todos los bloques son esencialmente parte del mismo conjunto.
fuente
en el índice de mapeo asociado completo es 0 b / s como dice set = 1, entonces index = log of 1 en base 2 = 0 set offset = log del tamaño de bloque de byte base 2, así que use 8 = 2 ^ 3 o 32 = 2 ^ 5 etiquetas = 32-0-5 = 27 para índice directo = 2 ^ 12 = 12 offset = etiqueta de 0 bits = 32-12-0 = 20
fuente