Estoy confundido por el concepto de compensación de bytes. En mi libro de texto, los ejemplos siempre muestran el desplazamiento de bytes alineado con la palabra como dos bits, pero en realidad no explica cómo llegan a ese valor. Dice que están alineados con la palabra por lo que el desplazamiento es de 2 bits. Esto realmente no tiene sentido para mí porque pensé que las palabras eran de 32 bits, por lo que la compensación no tendría que ser más grande que solo 2?
Ramificando esto, ¿cuál es exactamente la diferencia entre la palabra direccionable y el byte direccionable y cómo calculo sus respectivas compensaciones?
Tengo un problema con el que estoy tratando de resolver que trata con todas estas cosas. Estoy tratando de calcular la etiqueta, el conjunto, el desplazamiento de bloque y el desplazamiento de bytes para un caché asignado directamente. Los datos tienen una longitud de 32 bits. El caché es un byte direccionable y cada acceso devuelve un solo byte. Cada línea en el caché tiene 16 bytes.
Esto es lo que tengo hasta ahora:
Creo que hay cero bits establecidos porque se asigna directamente. Creo que el desplazamiento de bytes también es cero porque devuelve 1 byte y \ $ log_2 1 = 0 \ $. Creo que el desplazamiento del bloque es 4 porque cada bloque tiene 16 bytes y \ $ log_2 (16) = 4 \ $
Entonces, en este caso, creo que tendría [tag = 28 bits] [índice = 0 bits] [offset de bloque = 4 bits] [offset de byte = 0 bits] pero no estoy seguro.
¿Estoy en el camino correcto?
¡Gracias!