Buenas noches!
Tengo una duda sobre un ejercicio de teórico de este examen.
Esta es la letra:
y esta es la respuesta:
Mi duda sería en relación al Hit rate final, tenía entendido que en este caso sería 0, ya que la dirección final tiene el mismo conjunto y tag que la primera dirección, pero no estaría cargada en el conjunto ya que para la primera (0xC34A6), se cargarían los siguientes 64 Bytes.
Y la tercera instrucción (0xC3480) es anterior a (0xC34A6).
Está mal asumir que se cargan los siguientes bytes a la dirección de memoria del miss?
Y también me surgió la siguiente duda para este contexto: en un mismo conjunto, pueden haber 2 direcciones con el mismo tag, pero ocupando lineas distintas? (nos podemos suponer un caso que haya lugares vacíos en el conjunto, y como en correspondencia asociativa por 2 vías, una dirección de memoria puede estar en cualquier linea del conjunto que le corresponde).
Gracias!
En respuesta a Lucas Samuel Fontes Vega
Re: Consulta examen febrero 2018
Hola Lucas.
No entendí por qué afirmás que la caché carga los siguientes 64 bytes. La forma en que la localidad se implementa en caché es que, al leer un byte, se carga la linea entera que lo contiene en caché. Por eso es que la última lectura es un hit: la primera lectura trae a caché la linea que contiene a ese byte.
No entiendo bien la segunda pregunta. Se puede generar dos direcciones con el mismo valor de tag y diferente valor de linea, es fácil de hacer, y efectivamente van a ocupar lineas diferentes (no necesariamente ambas en la misma vía). Si clarificás un poco más la consulta a lo mejor me oriento mejor.
Saludos.
No entendí por qué afirmás que la caché carga los siguientes 64 bytes. La forma en que la localidad se implementa en caché es que, al leer un byte, se carga la linea entera que lo contiene en caché. Por eso es que la última lectura es un hit: la primera lectura trae a caché la linea que contiene a ese byte.
No entiendo bien la segunda pregunta. Se puede generar dos direcciones con el mismo valor de tag y diferente valor de linea, es fácil de hacer, y efectivamente van a ocupar lineas diferentes (no necesariamente ambas en la misma vía). Si clarificás un poco más la consulta a lo mejor me oriento mejor.
Saludos.
P.D.: No tiene que ver estrictamente con este ejercicio pero me puse a comparar este caso con un caso hipotético de caché completamente asociativa, y en ese caso no hay linea/conjunto. No me queda claro en este caso cómo se decide la localidad.
En respuesta a Juan Manuel Rivara De Leon
Re: Consulta examen febrero 2018
Me respondo a mí mismo (respecto a la totalmente asociativa): todos los bytes que sean direccionables con un mismo tag forman parte del mismo bloque y se cargan en caché al mismo tiempo.
Estimados,
Complemento lo que dice Juan.
Efectivamente, al realizarse un acceso a cache que resulte en miss, no se traen los 64 bytes siguientes, sino que se trae todo el bloque al que corresponda dicha dirección. Un bloque es un conjunto de direcciones que comparte todos los bits menos el campo byte. De esta forma, un bloque va a estar conformado por las direcciones:
xxxxxxxxxxxx000000
xxxxxxxxxxxx000001
xxxxxxxxxxxx000010
...
...
xxxxxxxxxxxx111110
xxxxxxxxxxxx111111
O sea que si la dirección accedida (la que genera el miss), termina en 111111, se busca el bloque correspondiente, el cual está formado por esa dirección y los 63 bytes anteriores. De forma análoga, si se accede a una dirección del medio del bloque, se traerá el contenido de algunas direcciones posteriores y otras anteriores.
---------------------------
Complemento lo que dice Juan.
Efectivamente, al realizarse un acceso a cache que resulte en miss, no se traen los 64 bytes siguientes, sino que se trae todo el bloque al que corresponda dicha dirección. Un bloque es un conjunto de direcciones que comparte todos los bits menos el campo byte. De esta forma, un bloque va a estar conformado por las direcciones:
xxxxxxxxxxxx000000
xxxxxxxxxxxx000001
xxxxxxxxxxxx000010
...
...
xxxxxxxxxxxx111110
xxxxxxxxxxxx111111
O sea que si la dirección accedida (la que genera el miss), termina en 111111, se busca el bloque correspondiente, el cual está formado por esa dirección y los 63 bytes anteriores. De forma análoga, si se accede a una dirección del medio del bloque, se traerá el contenido de algunas direcciones posteriores y otras anteriores.
---------------------------
Con respecto a la segunda pregunta. NO, en un mismo conjunto no pueden haber dos bloques con el mismo tag. En correspondencia asociativa por conjuntos de N vías, la dirección se divide en tag | conjunto | byte. Para que dos bloques caigan en el mismo conjunto tienen que compartir los bits del campo conjunto, y si luego además comparten el tag, resulta que solo se diferencian en el campo byte, o sea que son el mismo bloque!
Saludos,
Federico
Perfecto, muchas gracias a ambos!
Saludos!
Saludos!