Académique Documents
Professionnel Documents
Culture Documents
Resumen
En las computadoras actuales, los parmetros que caracterizan la arquitectura de la cache se definen en la etapa de diseo del procesador y permanecen fijos durante toda la vida til del sistema. Sin embargo, el correcto funcionamiento de la cache y de toda la jerarqua de memoria depende en muchos casos del programa en ejecucin. Esto tiene una consecuencia no deseada: para determinados tipos de programas las prestaciones de la cache son inferiores a las esperadas. El objetivo de este trabajo es presentar modelos de cache con capacidad para adaptarse dinmicamente al comportamiento de la aplicacin en ejecucin. Se estudia experimentalmente la relacin entre los fallos, los parmetros de la cache y el tipo de aplicacin. Se analizan distintas alternativas de monitorizacin para conocer el comportamiento del programa que est siendo ejecutado. Finalmente, se presentan algunas ideas para la construccin de un controlador inteligente de cache.
Palabras clave
Memorias caches, jerarqua de memoria, adaptacin dinmica.
1 Introduccin.
La jerarqua de memoria es el cuello de botella de los sistemas de cmputo. Dos son las causas de tal afirmacin: por un lado las nuevas CPU salen al mercado con rendimientos cada vez mejores y estas mejoras avanzan en el tiempo con una rapidez mucho mayor que el progreso en la tecnologa de memorias; por otro lado el software necesita cada vez ms memoria y ms rpida. Una regla emprica comprobada en distintos experimentos [Handy, 98] [Hennesy, 94] [Smith, 82], es que un programa emplea el 80% de su tiempo en ejecutar el 20% de su cdigo. Como el coste de una memoria principal de alta velocidad es muy elevado, los sistemas incorporan una memoria de alta velocidad y de reducido tamao (memoria cache) en la que reside la fraccin de cdigo y datos que se utiliza en ese instante. Esto ltimo es posible gracias a que los programas tienden a reutilizar datos e instrucciones, caracterstica que conocida como principio de localidad. Una consecuencia de la localidad es que, basndose en el pasado reciente de un programa, se puede predecir con razonable precisin las instrucciones y datos que se utilizarn en un futuro cercano. Lamentablemente, en la mayora de las aplicaciones la localidad en los datos no es tan fuerte como en las instrucciones, por lo cual un objetivo del trabajo es justamente una solucin que mejore las prestaciones de la cache de datos, acercndolas a las que se tiene en la cache de instrucciones. Una hiptesis que se intentar demostrar a lo largo de todo este artculo es que los diferentes grados de localidad que exhiben diferentes programas, e incluso las variaciones que experimenta un nico programa en sus caractersticas de localidad a lo largo de su ejecucin, justifican un modelo de cache dinmico. El trabajo est organizado en tres partes: Primero, se presenta el estado del arte y se estudian las dependencias entre la tasa de fallos y distintas alternativas de sintonizacin de los parmetros de la cache. A continuacin, se muestra un estudio experimental que confirma la factibilidad de un modelo de cache dinmico. Finalmente, se propone una arquitectura dinmica de cache en donde
1
algunos parmetros se ajustan en funcin de los datos obtenidos en la monitorizacin en tiempo de ejecucin para adaptarse al comportamiento del programa
fallos de cache
tamao nmero de caches tamao de lnea poltica de correspondencia acceso virtual o fsico algoritmo de reemplazo algoritmo de fetch poltica de escritura
tan simple e intuitiva genera innumerables alternativas al momento de implementar un controlador de cache. Como se puede ver en la figura 2.2, podemos identificar ocho parmetros de diseo para diferenciar y clasificar las diferentes arquitecturas de cache. El tamao en Kbytes es, tal vez, el parmetro ms importante. El nmero de caches que
2
forman la cache est relacionado con la cantidad de niveles y la existencia de caches separadas para datos e instrucciones. El tamao de la lnea es la mnima cantidad de informacin a transferir desde la memoria principal. La poltica de correspondencia indica el sitio donde se colocan las lneas que se traen de la memoria principal. El acceso a la cache puede ser con direcciones virtuales o direcciones fsicas. El algoritmo de reemplazo determina como elegir entre las posibles candidatas, la lnea a reemplazar. El algoritmo de bsqueda gestiona cuando y como traer lneas de la memoria principal y comprende tanto la bsqueda ante un fallo (fetch on demand) como el intento de adelantarse a posibles peticiones (prebsqueda). Por ltimo, la poltica de escritura indica cuando se realizan las actualizaciones en la memoria principal. El estudio de la relacin entre los parmetros de la cache y determinados tipos de fallos es el primer paso para comprender con profundidad las limitaciones de las actuales arquitecturas y proponer mejoras. No es de inters para este trabajo describir exhaustivamente cada uno de los ocho parmetros mencionados, para ello es posible consultar la extensa bibliografa disponible [Smith, 82]; [Handy, 98]. Se propone (tabla 2.1) aumentar las prestaciones reduciendo los fallos por conflicto y forzosos mediante una ptima configuracin dinmica de parmetros. Para reducir los fallos forzosos se actuar sobre la poltica de prebsqueda, mientras que los fallos por conflicto se minimizarn con una gestin adecuada del tamao de lnea y las polticas de correspondencia y reemplazo.
Tipo de fallo: Es posible reducirlo dinmicamente? Parmetros a sintonizar:
S No S
Cache:
Caractersticas generales
Opciones:
direct mapped con ms de una funcin de mapping direct mapped de gran tamao + asociativa pequea Intenta predecir la lnea a utilizar dentro del conjunto
Existen tantas variantes como funciones de swaping entre las localizaciones primarias y secundarias. Victim cache Asist cache Non temporal buffer By pass buffer History table para guardar los tags de las lneas referenciadas ltimamente.
Tabla 2.2 Gestin del grado de asociatividad y de la poltica de reemplazo en una cache de altas prestaciones
Con respecto a la poltica de correspondencia, se destacan actualmente dos lneas de investigacin en caches de altas prestaciones: por un lado memorias con arquitecturas direct mapped perfeccionadas para aumentar la tasa de aciertos (ej. augmented cache y multiple access cache); y por otro lado memorias de tipo asociativo con algn tipo de mejora que disminuya el tiempo de acceso (ej. asociativas por conjuntos con prediccin de lnea). La tabla 2.2 muestra las principales caractersticas y opciones de estas arquitecturas. La multiple-access cache [Peir, 99] es una memoria del tipo direct mapped que puede ser accedida ms de una vez (normalmente dos) con diferentes funciones de mapping. Si el dato se encuentra en la localizacin primaria se tiene un acceso muy rpido. Si se necesita acceder con la segunda funcin de mapping, se tiene una pequea penalizacin. Existen varias implementaciones de multiple-access caches con diferentes alternativas en la implementacin del swaping entre la localizacin primaria y secundaria. La opcin ms simple es, ante un fallo de cache, traer el dato a la localizacin primaria, desplazar la lnea de la localizacin primaria a la secundaria y desplazar la lnea de la localizacin secundaria a la memoria principal. Las caches asociativas por columnas implementan un bit para cada lnea que indica si ha sido accedida utilizando la funcin hash alternativa. Si ocurre un fallo primario y el bit est a uno, no es necesario buscar en la localizacin secundaria, y simplemente se reemplaza la lnea de la localizacin primaria. Este bit ayuda a identificar la secuencia correcta primaria/secundaria. La tercera opcin emplea una tabla para monitorizar las lneas que han sido utilizadas recientemente. Si ocurre un fallo de cache y la lnea a reemplazar ha sido usada recientemente, se mueve a un sitio alternativo seleccionado entre aquellas lneas que no se han utilizado recientemente. Las memorias caches asociativas por conjuntos de n vas pueden analizarse como n caches direct mapped en paralelo de tamao n veces menor. Una estrategia interesante es intentar predecir la lnea (dentro del conjunto considerado) donde se encuentra la palabra buscada. Una generalizacin de esta tcnica es utilizar una history table: una tabla capaz de guardar los tags de las lneas que han sido referenciadas recientemente. Las augmented caches [Jouppy, 98] tienen por objetivo sumar las ventajas de las direct mapped y las asociativas por conjuntos, evitando sus problemas. Las augmented caches son una opcin de inters en este trabajo y la organizacin de cache
4
propuesta en el apartado 4 pertenece a este tipo arquitectura. Gestionan una memoria del tipo direct mapped de gran velocidad, en paralelo con una asociativa de tamao pequeo. El comportamiento se asemeja al de una direct mapped con la posibilidad de evitar fallos por conflicto alojando lneas en la asociativa. El comportamiento de este sistema de cache puede verse como si se tuviese una cache asociativa por conjuntos en donde la mayora de los conjuntos son asociativos de una va, mientras que unos pocos conjuntos tienen un grado de asociatividad mayor Algunos ejemplos de augmented caches son: victim cache, asist cache, non temporal buffer (Ntbuffer) y by pass buffer (Bpbuffer) [Jouppy, 98], [Peir, 99]. Se diferencian en su comportamiento lgico, y son similares en cuanto a los mdulos funcionales que las constituyen. La victim cache est basada en la idea de que cuando una lnea es expulsada de la direct mapped, debera moverse a la asociativa para el caso de que se la necesite en un futuro inmediato. En la victim cache se guardan las "vctimas" de los fallos por conflicto de la direct mapped, transformando algunos fallos por conflicto en aciertos en la victim cache. La assist cache es gestionada como un buffer FIFO. Cuando hay un fallo de cache, la lnea se trae a la assist cache y la lnea que se desplaza del buffer FIFO se enva a la direct mapped. En contraste con la victim cache, los datos son llevados primeros a la memoria asociativa y luego transferidos a la direct mapped. Una tercera variante (non temporal buffer) es emplear la direct mapped nicamente para mantener los hot data. Los datos con menor probabilidad de ser accedidos nuevamente se expulsan hacia la asociativa para que no se produzcan conflictos con los primeros. Otra posibilidad (By-Pass buffer) es implementar una Memory Access Table (MAT) para guardar el comportamiento de bloques de memoria y no de lneas.
3 Estudio Experimental
Para el estudio experimental del comportamiento de la cache se pueden distinguir en la literatura tres aproximaciones diferentes: el modelado analtico, la monitorizacin hardware y la simulacin software. El modelado analtico flexibiliza el estudio paramtrico del comportamiento de la cache, pero su punto dbil ha sido tradicionalmente la dificultad de obtener resultados generales. Los trabajos basados en esta tcnica, [Fraguela, 99] se refieren solamente a patrones de acceso muy especficos, y no permiten obtener resultados generales. La monitorizacin hardware es una metodologa poco flexible respecto al diseo de los experimentos. La precisin de esta tcnica es una consecuencia de la ausencia de complejas demostraciones matemticas o validaciones de simuladores, procedimientos siempre sujetos a discusin y debate. Algunos microprocesadores proporcionan herramientas de monitorizacin hardware del rendimiento tales como contadores de fallos. Sin embargo, su uso presenta la limitacin de que sobre una arquitectura determinada no es posible medir lo que se desea sino lo que est previsto. El procedimiento elegido en este trabajo es la simulacin software [Roatta, 99], tal vez el mtodo ms extendido para conocer el rendimiento de una cache ante un determinado cdigo, emulando el efecto de la cache en cada uno de los accesos que generara. Los estudios se han efectuado con un simulador desarrollado en la Universidad Autnoma de Barcelona [Moure, 00] a partir de la versin 3.0 del SimpleScalar Tool Set de la Universidad de Wisconsin [Burger, 1997]. Es capaz de simular toda la microarquitectura de un procesador, no solamente la cache, e incluye facilidades para el diseo de experimentos, clculo de estadsticas y presentacin de resultados. Est basado en la microarquitectura del Alpha 21264 y ejecuta cdigo Alpha ISA. El SimpleScalar permite ejecutar un benchmark completo, incluir breakpoints, obtener estadsticas parciales y conocer, en un determinado punto de la ejecucin de un programa, el estado de la microarquitectura. Las modificaciones introducidas al simulador permiten modelar la arquitectura deseada de cache y obtener las estadsticas necesarias. Para asegurar que el benchmark realiza una funcin verdaderamente determinstica, el simulador ejecuta trazas de ficheros .eio en lugar de ficheros en ensamblador. Las trazas eio son una coleccin de las trazas de las operaciones de entrada/salida de manera de que, por ejemplo, una determinada llamada al sistema proporcione el mismo resultado para diferentes ejecuciones.
3.1 Metodologa
Todos los ensayos que se muestran a continuacin corresponden a la cache de datos de primer nivel. La cache de instrucciones se ha comportado de manera ms eficiente y, como ya se ha comentado en prrafos previos, este trabajo intenta buscar soluciones para acercar las prestaciones de la cache de datos a la de la cache de instrucciones. Se han tomado estadsticas para un milln, seis millones y diecisis millones de ciclos. Diecisis millones de ciclos corresponden a entre 20 y 30 millones de instrucciones, dependiendo del CPI del programa. Se han elegido cuatro benchmarks enteros: li, vortex, ijpeg y compress y dos de punto flotante: su2cor y swim [Web page 1] [Web page 2]. El objetivo de estos experimentos es estudiar los distintos grados de localidad que exhiben diferentes benchmarks, para luego evaluar si las diferencias justifican un modelo de cache dinmico. Fueron hechas mediciones para tamaos de cache de 32KBytes y 8Kbytes. En un principio se efectuaron mediciones nicamente para 32Kbytes (que es el tamao de cache que poseen los procesadores actualmente), pero luego se determin que es un tamao demasiado grande para los SPEC95, y se opt por efectuar pruebas con caches similares a las predominantes en el ao que la suite SPEC95 sali al mercado. Esto indica que, tal vez, los SPEC sean un poco antiguos para medir
6
prestaciones en los actuales procesadores. De todas maneras, se han utilizado por la gran aceptacin y reconocimiento que tienen en la comunidad cientfica y porque permiten la comparacin con los resultados obtenidos en otros trabajos. Se efectuaron mediciones de la tasa de aciertos con respecto a cuatro parmetros de cache: Tamao de cache, Poltica de Correspondencia, Tamao de lnea y Poltica de reemplazo
A = Li (8KB) B = Li (32KB) C = Vortex (8KB) D = Vortex (32KB) E = Ijpeg (8KB) F = Ijpeg (32KB) G = Compress (8KB) H = Compress (32KB)
Tasa de aciertos = f ( poltica de correspondencia) de una cache de datos (DC) para tamaos de 8kbytes y 32 Kbytes, lnea de 32 bytes, reemplazo LRU.
cache son menores. Este es un comportamiento esperado: la eficacia de polticas asociativas se pone de manifiesto en caches pequeas donde existe mayor probabilidad de conflictos. El grfico de Vortex indica gran cantidad de fallos por conflicto: se notan mejoras en las prestaciones al aumentar el grado de asociatividad en ambos tamaos de cache, incluso al pasar de la asociativa de cuatro vas a la totalmente asociativa. Para el programa de compresin de grficos Ijpeg, un tamao de cache de 32Kbytes es muy grande, y todas las arquitecturas y polticas simuladas dan similares tasas de aciertos. Por el contrario, para una cache de 8Kbytes, las organizaciones direct mapped y asociativas por conjunto de 2 y 4 vas son muy ineficientes y los fallos por conflictos muy elevados. El correcto funcionamiento de todas las arquitecturas para un tamao de cache de 32Kbytes es una consecuencia del tamao de las imgenes que maneja el benchmark. Para imgenes de mayor tamao es de esperar en la cache de 32 kbytes los pobres resultados obtenidos en la cache de 8kbytes para imgenes pequeas.
Compress es el benchmark sobre el que se han obtenido los peores resultados. Aqu el problema es, presumiblemente, la falta de localidad de los datos.
100,00% 98,00% 96,00% 94,00% 92,00% 90,00% 88,00% 86,00% 84,00% 82,00% 80,00% (A) (B) (C) (D)
Tasa de aciertos = f ( poltica de correspondencia) de una cache de datos (DC) para tamaos de 8kbytes y 32 Kbytes, lnea de 32 bytes, reemplazo LRU
La figura 3.2 corresponde a dos aplicaciones de punto flotante, Su2cor y Swim. Su2cor es el benchmark con el comportamiento ms extrao; para un tamao de cache de 32Kbytes la cache asociativa tiene una tasa de aciertos inferior a la asociativa por 2 y 4 vas, consecuencia atribuible a la poltica de reemplazo. La nica causa posible de tener prestaciones tan pobres es tener gran cantidad de fallos forzosos: el conjunto de datos sobre los que se trabaja no tiene localidad, y al igual que compress, la solucin sera implementar un prefetch inteligente. Swim es un benchmark que opera sobre datos que prcticamente residen en la cache. La tasa de aciertos es de 99,99% en todos los casos.
100,00% 95,00% 90,00% 85,00% 80,00% 75,00% (A) (B) (C) (D) (E) (F)
random LRU
Tasa de aciertos = f ( poltica de reemplazo) de una cache de datos (DC) para: tamao de 8Kbytes, lnea de 32 bytes, asociativa por dos vas
Si consideramos ahora la influencia de la poltica de reemplazo, podemos ver como la poltica LRU genera unos resultados levemente superiores en todos los casos, tal como se muestra en la figura 3.3. Finalmente, la figura 3.4 presenta la relacin entre la tasa de fallos y el tamao de la lnea. Una longitud de 32 bytes parece ptima para la mayora de las aplicaciones a excepcin de la base de datos Vortex.
100,00% 95,00% 90,00% 85,00% 80,00% 75,00% 70,00% (A) (B) (C) (D) (E) (F)
Tasa de aciertos = f ( tamao de lnea) de una cache de datos (DC) para: tamao de 8Kbytes, asociativa por dos vas, reemplazo LRU
16Bytes 32Bytes
temporal no est definido de forma cuantitativa en la literatura, haremos nuestras definiciones: "localidad temporal que ha tenido la lnea": Concepto definido para lneas que se encuentran en la cache L2 y ya han estado en la cache de datos L1, y es el nmero de veces que el procesador accedi a la lnea con instrucciones de carga o almacenamiento durante el ltimo intervalo de tiempo que ha estado en la cache L1. Si la lnea no ha estado nunca en la cache de datos L1 se asume un valor nulo. Esto se puede gestionar con un contador que se incremente en cada acceso y cuyo valor se guarde cuando la lnea es desalojada hacia la cache L2. "localidad temporal que tiene una lnea": Concepto definido para lneas que se encuentran en la cache L1 y est implementado por un contador que se incrementa de igual manera que el anterior pero se decrementa cada cierto intervalo de tiempo. De esta manera se cuantifica la idea que se tiene de localidad temporal: una lnea tiene mayor localidad temporal cuanto ms veces es accedida y cuanto ms corto es el intervalo de tiempo en el que transcurren los accesos. La determinacin de este intervalo de tiempo es posible nicamente por ensayos experimentales. (por ejemplo: primero sin decrementar, nicamente limpiando en cada acceso a la cache, decrementando luego de un determinado nmero de ciclos, etc.). En el caso de que haya un fallo de cache L2, la lnea se trae con valores iniciales de contadores nulos. Un aspecto importante a tener en cuenta es que cuanto mayor es el tamao de los contadores, mayor es el rea de silicio dedicada a estas tareas de monitorizacin con relacin al rea destinada a guardar los datos del programa. En la simulacin es posible, en una primera aproximacin, hacer los contadores tan grandes como se desee, de manera de evaluar las prestaciones ideales del sistema. Esto fija una cota de funcionamiento ideal. En el modelo propuesto, la cache de datos L1 queda formada por dos mdulos a los que el procesador accede en paralelo: una direct mapped de gran tamao y una pequea memoria asociativa de similar tiempo de acceso. El efecto que se busca es una cache asociativa por conjuntos en donde la mayora de los conjuntos sean de una va (direct mapped) con la capacidad de gestionar dinmicamente el grado de asociatividad de las lneas que lo necesiten. Cuando una lnea es desalojada de la cache de datos L1, se guarda en la cache L2 con informacin sobre el comportamiento que ha tenido durante su localizacin en el nivel superior de la jerarqua de memoria: se guarda la lnea y la localidad temporal que ha tenido la lnea El aspecto ms importante en el diseo de una augmented cache es la eleccin de las polticas de correspondencia y de reemplazo: Poltica de correspondencia: cmo llevar una lnea a la cache de datos? a.- Si hay sitio en la direct mapped, la lnea se coloca en la direct mapped y se inicializan a 1 los contadores de localidad. b.- Si no hay sitio en la direct mapped, se comparan los contadores de localidad temporal, y la lnea de mayor localidad se aloja en la direct mapped, y la de menor localidad en la asociativa. Para esta comparacin se eligen dos contadores distintos: para la lnea que ya est en la cache L1 un contador que indique la localidad temporal que tiene actualmente esa lnea: este contador se incrementa con cada acceso a la lnea, se decrementa cuando transcurre un determinado intervalo de tiempo y se limpia cada vez que la lnea se expulsa de la cache L2 a la cache L1; para la lnea que est en la L2 un contador que indique la localidad que ha tenido durante su ltima estada en la cache L1, se incrementa con cada acceso a la lnea y se limpia cada vez que la lnea se expulsa a la cache L1. Poltica de reemplazo La lnea a reemplazar se elige siempre de la memoria asociativa, y la poltica que se implementa es LRU. Cmo accede el procesador a los datos de la cache ? Si la memoria asociativa tiene un tamao de n lneas, el procesador simultneamente busca entre las n lneas de la totalmente asociativa y la correspondiente lnea de la direct mapped.
10
1. Si la lnea no se encuentra en ninguno de los dos mdulos significa que ha habido un fallo de cache y se inicia el procedimiento explicado en los dos puntos anteriores. 2. Si la lnea se encuentra en la direct mapped, se incrementa el contador. 3. Si la lnea se encuentra en la asociativa, se incrementa su contador, se lleva a la cabeza del stack y se comparan las localidades temporales para hacer un posible swap, de manera de tener siempre en la direct mapped la lnea de mayor localidad. Que contadores implementar para cada lnea ? En un sistema real no es posible tener tantos contadores como se deseara pero s es posible hacerlo en un simulador con el objetivo de conocer si el razonamiento efectuado es vlido y el algoritmo correcto. En un trabajo futuro, se puede estudiar el tamao optimo de los contadores. La posibilidad ms simple: un contador que indique el nmero de veces que se accede a una lnea.La alternativa ideal: un contador1 que con el nmero de veces que se accede a la lnea, un contador2 con el tiempo que ha transcurrido entre el primer y el ltimo acceso, y un contador3 con el tiempo que ha transcurrido desde el primer acceso. Con estos tres contadores se tiene conocimiento de la localidad temporal que ha tenido la lnea ( contador1 dividido contador2 ) y adems la localidad temporal que tiene actualmente ( contador1 dividido contador3). Una alternativa intermedia: un contador que se incremente con el nmero de veces que se accede a una lnea y se decremente cuando transcurre un determinado intervalo de tiempo (donde el valor de este intervalo de tiempo se debe determinar experimentalmente).
generales, el esperado: los aciertos aumentan con el aumento del tamao y del grado de asociatividad, la poltica LRU es ligeramente superior a la aleatoria y el tamao de lnea de 32 bytes parece ptimo. El comportamiento de la cache de datos respecto a los programas es heterogneo: LI se comporta como los libros indican. Vortex obtiene sus mejores resultados para el tamao de lnea que los dems programas generan sus peores resultados. En algunos programas, aumentar el grado de asociatividad ms all de dos no produce efectos de consideracin, en otros s. Programas como Compress, Ijpeg y Su2cor tienen tasas de aciertos inaceptablemente bajas, y la modificacin de los parmetros de la cache no produce mejoras significativas. Swim tiene una tasa de aciertos del 99%, independientemente de la configuracin de cache elegida: reside en la cache. Del anlisis de estos resultados se infiere que el comportamiento del programa tiene una influencia muy importante en la tasa de aciertos de la cache. Las caches actuales responden a un modelo, y si este modelo encaja con el modelo de comportamiento del programa, los resultados son buenos. Con programas con patrones de acceso a datos que no responden a este modelo, las prestaciones son muy bajas. Sobre la base del comportamiento exhibido por la cache, hemos desarrollado una propuesta de arquitectura de cache que sea capaz de adaptarse al comportamiento especfico (localidad temporal y espacial), mediante la modificacin de algn elemento/parmetro interno, y esta modificacin ha estado guiada por los valores cuantitativos obtenidos mediante la monitorizacin de las aplicaciones.
Bibliografa
Burger, D., Austin, T.M.: The SimpleScalar Tool Set. Univ. Wisconsin-Madison Computer Science Department, Technical Report TR-1342, 1997. Fraguela Rodrguez B.B., Modelado Analtico del comportamiento de las memorias cach, tesis doctoral, Universidad Da Corua, 1999. Handy J., The Cache Memory Book, Academic Press, 1998 Hennesy J.L., and Patterson D., Computer Architecture: a Quantitative Approach Morgan Kaufmann, 1994 Jouppi N.P., Improving Direct-Mapped Cache Perfomance by the addition of a Small FullyAssociative Cache and Prefetch Buffers, ACM, 25 Years of the International Symposia on Select Computer Architecture, Select Papers,1998, (publicacin original ISCA 17, 1990) Kroft, D., Lockup-Free Instruccin Fetch/Prefetch Cache Organization, , ACM, 25 Years of the International Symposia on Select Computer Architecture, Select Papers,1998, (publicacin original ISCA 8, 1981) Moure, J.C. A Simulator for Superscalar and Multithreaded Processors. Technical Report, University Autonoma of Barcelona. Peir, J., Hsu, W.W., Smith A.J., Functional Implementation Techniques for CPU Cache Memories IEEE Transactions on Computers, 48(2):100-110, February 1999 Roatta S., Evaluacin Experimental de Memorias Caches, tesis de master, Universidad Autnoma de Barcelona, setiembre 1999. Smith A.J., Cache Memories, Computing Surveys, 14(3):473-530, September 1982 Weiss S., Smith J. E., Power and PowerPC: Principles, Arquitecture, Implementation, Morgan Kaufmann, 1994 Wulf A. W., Hitting the Memory Wall: Implications os the Obvious, Computer Arquitecture News, ACM, 23(1):20-24, March 1995. Web pages: [Wp 1] Dasgupta S., Servan-Schreiberb E., Cache Behaviour of the SPEC95 Benchmark Suite, http://http.cs.berkeley.edu/~dasgupta/paper/rep/rep.html [Wp 2] The Spec Organization web page, http://ww.specbench.org/spec/
12