¿Cuál es el tamaño de la memoria principal?
El tamaño lo calculas como 2 elevado a la cantidad de bits de la dirección, recordando que \[2^{10}\ bytes\ = KB\ \ \ 2^{20}\ bytes= MB\ \ \ \ 2^{30}\ bytes = GB\ \ y\ \ 2^{40}\ bytes = TB\] nos queda \[ 2^{32}\ bytes= 2^2*2^{30}\ bytes = \ 4GB\]
2.
(22-02-2011 13:40)Anirus escribió: Acá tenés varios resueltos:
http://www.utnianos.com.ar/foro/showthre...8#pid24998
http://www.utnianos.com.ar/foro/showthread.php?tid=5113
Totalmente asociativa:
La direccion se divide en Etiqueta y posición, y la memoria en bloques de tamaño determinado. Cada bloque puede ir en cualquier lugar de la caché. Si te dan una direccion y te preguntan si el dato está, solo tenés que fijarte si en el grafico aparecen los bits de la etiqueta en cualquiera de las lineas.
Etiqueta: La obtenés dividiendo la memoria principal por el tamaño de los bloques, expresas el resultado como potencia de 2 y el exponente es la cantidad de bits de la dirección que se usan como etiqueta.
Posición: Expresas el tamaño de los bloques como potencia de 2, el exponente es la cantidad de bits que se necesitan.
Asociativa de 1 via (Correspondencia directa):
La direccion se divide en Etiqueta, Linea y Posición. El lugar que ocupa cada bloque en la caché depende de los bits de linea. Si te dan una direccion, mirás los bits de linea, supone que son 011, en decimal eso es 3, por lo tanto te tenés que fijar si en la linea 3 del gráfico aparece la misma etiqueta de la dirección, si no aparece ahi, es porque el dato no está, si está, usas los bits de posición para indicar el dato.
Etiqueta: Se obtiene dividiendo la memoria principal por el tamaño total de la memoria caché. Se expresa como potencia de 2 y tomas el exponente.
Linea: En el enunciado te van a decir la cantidad de lineas del caché, casi siempre ponen 8, así que la cantidad de bits que se necesitan es 3 porque 2^3 es 8.
Posición: Se obtiene igual en todas las caché.
Asociativa de n vías
La dirección se divide en Etiqueta, Grupo y Posición.
Si te dan una dirección, una vez dividida, para fijarte si aparece en la caché mirás el Grupo, supongamos que es 010, o sea grupo 2. Entonces tenés que fijarte si en alguna de las vías, aparece tu etiqueta en la linea 2. Acordate de que si aparece en otro lugar NO es el que buscás.
Etiqueta: Como en la anterior pero dividiendo por el tamaño de las vías en lugar del tamaño total de la caché.
Grupo: Tambien como en la de 1 vía, excepto porque en lugar de tener en cuenta el total de lineas del caché, usás la cantidad de lineas que hay por vía, es decir, si hay tres vías de 8 lineas, la cantidad de bits que se necesitan es 3.
Posición: Como en todas.
¿Cuántos bits tiene el campo etiqueta en el caso de correspondencia totalmente asociativa?
En una cache totalmente asociativa la dirección se divide en etiqueta y posición, para sacar la cantidad de bits que ocupa la etiqueta dividís la memoria por el tamaño de las lineas(8 bytes según el enunciado) y te quedás con el exponente.
\[\frac{2^{32}\ bytes}{2^{3}\ bytes} = 2^{29}\] (que es lo mismo que calcular cuantos bits necesito para la posición y restarselo a la cantidad de bits de la dirección de la memoria principal)
Rta: 29 bits
¿Cuántos bytes tiene el campo etiqueta en el caso de correspondencia directa?
Dividimos el tamaño de la memoria por el tamaño de la cache y nos quedamos con el exponente:
\[tamaño\ cache=512*8\ bytes = 2^{12}\ bytes\newline \frac{2^{32}\ bytes}{2^{12}\ bytes} = 2^{20}\]
Rta: 20 bits (supongo que preguntaba por bits y no bytes)