Practico 12 Ejercicio 5 Parte B

Practico 12 Ejercicio 5 Parte B

de Mario Nicolas Sanchez Carreras -
Número de respuestas: 3

Hola,

No entiendo como la dirección de memoria en la que comienza la matriz A 0X00100000 se llega a traducir en (TAG|LINEA|BYTE):

0000 0000 0001 000|0 0000 0000 000|0 0000

Gracias.

En respuesta a Mario Nicolas Sanchez Carreras

Re: Practico 12 Ejercicio 5 Parte B

de Gustavo Brown -

Primero tenes que ver cómo se va a decodificar una dirección de memoria en sus componentes TAG, LINEA y BYTE.

Para ello tenes que ver cómo está dispuesta la memoria cache. La letra en este caso dice que se tiene una memoria cache de 128Kbytes, de correspondencia directa y líneas de 32 bytes.

  • El computador es de 32 bits por lo que tomamos direcciones de 32 bits.
  • Cada línea tiene 32 bytes, es decir 2^5 bytes
  • La memoria es de 128KBytes = 2^7 * 2^10 bytes = 2^17 bytes

Del dato de la cantidad de bytes por línea obtenemos la cantidad de bits que se precisan para el campo BYTE (es la cantidad de bits necesaria para direccionar los 32 bytes) o sea 5 bits.

Del dato del tamaño de la cache 2^17 bytes y la cantidad de bytes por línea obtenemos la cantidad de líneas en la cache. Esto es 2^17bytes dividido 2^5 bytes/línea nos da 2^12 líneas. Es decir que el campo LINEA tiene 12 bits (necesarios para direccionar una línea)

El resto de bits de la direccion de memoria se utiliza para identificar el bloque, es decir se usa como TAG. 32 bits - 5 bits - 12 bits = 15 bits. Es decir que el tag será de 15 bits.

TAG(15 bits)|LINEA(12 bits)|BYTE(5 bits)

Ahora podes decodificar la dirección de interés (matriz A comienza en 0x1000000) como pusiste en tu pregunta.

Saludos,
  Gustavo

En respuesta a Gustavo Brown

Re: Practico 12 Ejercicio 5 Parte B

de Mario Nicolas Sanchez Carreras -

Gracias Gustavo por tu respuesta.

Paradójicamente quizás lo más complicado de entender que es lo que me explicaste anteriormente lo había razonado así y me ha servido para verificarlo.

Mi duda que quizás sea lo más trivial de este problema es como:

0X00100000 = 0000 0000 0001 000|0 0000 0000 000|0 0000 ¿?

Como es que:

0000 0000 0001 000 es el TAG ¿?

0 0000 0000 000 LINEA ¿?

0 0000 BYTE ¿?