Dos direcciones que sólo difieran en la parte del tag mapearán para el mismo conjunto de caché, esto recibe el nombre de conflicto. Cuando se accede repetidamente a direcciones en conflicto y el numero de conjuntos supera la asociatividad de la caché la misma dirección generará repetidamente un fallo de caché, ya que las referencias en conflicto harán que se desaloje antes de que se pueda referenciar de nuevo.
Esta es la razón por la que una caché asociativa
bidireccional pueda resultar tan efectiva como una directamente mapeada que le
duplique el tamaño.
Hasta ahora, se ha hablado de la dirección de un determinado item que está copiado en la caché o en la memoria. De hecho, los sistemas utilizan dos tipos de dirección, la virtual y la física, y dos tipos de caché, según el tipo de dirección que se utilice.
Pero en realidad cada byte de RAM tiene una sola
dirección. El sistema operativo y el hardware colaboran en la creación de este
efecto al definir dos tipos de dirección la virtual y la física y hacerse
cargo de la conversión entre ambas. Los programas utilizan direcciones
virtuales, mientras que el controlador de memoria de sistema exige direcciones
físicas.
El uso de una caché direccionada virtualmente
presenta varias ventajas. El controlador de caché no tiene que esperar a que
finalice la conversión de dirección para poder consultar la dirección en la
caché, lo que significa que la caché pueda proporcionar datos mas rápidamente.
Asimismo, debido a que se esta utilizando las direcciones virtuales del
programa, ejecuciones idénticas de un programa conducirán a idénticos modelos
de uso de caché.
Si bien las caches direccionadas físicamente padecen de variaciones de rendimiento, presentan dos ventajas claras.
PRIMERA.- Si se esta diseñando una caché fuera del chip para una CPU que tenga una unidad MNU (unidad de gestión de memoria) en el chip, la dirección que trasmite la CPU ya se ha convertido y la única opción es una caché direccionada físicamente.
SEGUNDA.- Debido a que todas las direcciones son para un único espacio de dirección física en vez de para un espacio diferente de dirección virtual para cada aplicación, se pueden dejar los datos en la caché cuando el sistema operativo transfiere el control de una aplicación a otra. Con una caché direccionada virtualmente hay que limpiar los datos cada vez que tiene lugar una transferencia de control o una conmutación de contexto.
(c) 2000 Carlos Urzua Ruiz