¿Cómo se calcula la compensación de bytes?

-1

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!

    
pregunta Indigo

2 respuestas

1

Para entender la diferencia entre bytes y direccionables por palabra, entienda que un byte siempre es de 8 bits, mientras que una palabra puede diferir de un sistema a otro. Tomemos, por ejemplo, un sistema de 8 bits con palabras de 2 bytes. El tamaño de la instrucción es una palabra, pero el ancho de banda del sistema es solo 1/2 palabra. El sistema debe ser direccionable en bytes para que pueda cargar la instrucción de 1 byte a la vez. No puede ser direccionable por palabra porque no puede manejar una palabra completa de datos a la vez. En este sistema, el desplazamiento de bytes solo sería de 1 bit, para elegir entre el primer o el segundo byte de la palabra.

Me gustaría ayudar con el direccionamiento de la memoria caché, pero ha pasado un tiempo y esos son cálculos muy detallados. ¡Mucha suerte!

    
respondido por el Andrew
0

Los bytes de una palabra de cuatro bytes se pueden numerar 0, 1, 2 y 3. En binario, estos valores se ajustan en dos bits: 00, 01, 10, 11.

Si una palabra de cuatro bytes está alineada, entonces su dirección de bytes en la memoria es un entero divisible por cuatro. Esta dirección tiene una representación binaria que termina en 00 : XXXX....XXXX00 . Las direcciones de los cuatro bytes dentro de la palabra son ...XXX00 , ...XXX01 , ...XXX10 y ...XXX11 . En otras palabras, la codificación binaria de las compensaciones 0, 1, 2 y 3 se ajusta a los campos de dos bits menos significativos: estas compensaciones se pueden expresar sin cambiar ninguno de los otros bits en la dirección.

Por lo tanto, "desplazamiento de dos bits".

    
respondido por el Kaz

Lea otras preguntas en las etiquetas