El sistema de la cache usualmente busca
las posiciones candidatas
en un set en el orden de importancia. Las caches MRU mantienen sólo
un orden por cada set en la cache. Esto significa que para cada
referencia mapeada en el set, la búsqueda comienza desde
la misma posición -la posición MRU para el set (figura
1a). Lamentablemente este esquema sufre de una baja proporción de
aciertos al primer intento en algunos casos. El problema es que un bloque
en un set puede tener distinta importancia para distintas referencias
mapeadas en el mismo set, y este esquema no considera esto. Para
solucionar esto se propone la técnica de bloque MRU multiple.
Para
este caso, como para las caches directamente mapeadas, la posición
principal es la posición en la cual una referencia esta mapeada.
Las otras posiciones dentro del mismo set son posiciones no-principales
para la referencia. Se clasifican las referencias para un set en
diferentes grupos en términos de sus posiciones principales, cada
grupo de referencias corresponde a una posición principal. Manteniendo
un orden de búsqueda independiente para cada grupo de referencias,
en vez de un orden de búsqueda para todos, podría optimizar
la performance. El bloque MRU es el más importante en el orden de
búsqueda, y la posibilidad que una referencia encuentre un acierto
en una posición distinta a el bloque MRU es muy pequeña.
Por lo tanto, solo se guarda la información sobre los bloque MRU
multiples.
Cuando la cache responde una referencia, la posición
principal para la referencia sirve como punto de entrada para comenzar
la búsqueda. Tenemos múltiples puntos de entrada, cada uno
corresponde a un grupo de referencias (figura 1b). Usamos swapping
para garantizar que el bloque MRU siempre quede en la posición principal
después de una referencia, aunque otros bloques de datos puedan
reemplazarlo luego. El sistema realiza una operación de swap sólo
cuando no se acierta en el primer intento o no se encuentra la referencia
en la cache. Por lo tanto, en la mayoría de los casos, el swap no
es necesario.
Durante es swapping la cache no puede responder los accesos desde la
CPU. Con ayuda del hardware se puede reducir el tiempo requerido para realizar
swaps. Usamos el mismo hardware que se usa en la cache de columnas asociativas,
este consiste primariamente de una buffer adicional, cuyo costo es muy
bajo. Un swap requiere, en promedio, de solo un ciclo. Se ha considerado
para el diseño y la simuación solo un ciclo.
Con la técnica de bloque MRU multiple, todos los aciertos para
los dos esquemas de secuencias de referencias que siguen a continuación
serán aciertos al primer intento, incluyendo el peor caso. Los diseñadores
pueden usar este esquema para extender las caches MRU originales u otros
esquemas para un mejoramiento de la performance.
Volver al índice