ES2201114T3 - Memoria cahce de asociacion de conjuntos bilateral. - Google Patents

Memoria cahce de asociacion de conjuntos bilateral.

Info

Publication number
ES2201114T3
ES2201114T3 ES95928310T ES95928310T ES2201114T3 ES 2201114 T3 ES2201114 T3 ES 2201114T3 ES 95928310 T ES95928310 T ES 95928310T ES 95928310 T ES95928310 T ES 95928310T ES 2201114 T3 ES2201114 T3 ES 2201114T3
Authority
ES
Spain
Prior art keywords
cache
data
line
state
mentioned
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
ES95928310T
Other languages
English (en)
Inventor
Wen-Hann Wang
Konrad K. Lai
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Application granted granted Critical
Publication of ES2201114T3 publication Critical patent/ES2201114T3/es
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0864Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

UNA MEMORIA DE CACHE ASOCIATIVA DE CONJUNTOS DE DOS VIAS INCLUYE TANTO UNA MATRIZ DE CONJUNTOS COMO UNA MATRIZ DE DATOS EN UNA REALIZACION. LA MATRIZ DE DATOS COMPRENDE ELEMENTOS MULTIPLES, CADA UNO DE LOS CUALES PUEDE CONTENER UNA LINEA DE CACHE. LA MATRIZ DE CONJUNTOS COMPRENDE MULTIPLES CONJUNTOS, CON CADA CONJUNTO EN LA MATRIZ DE CONJUNTOS CORRESPONDIENDOSE CON UN ELEMENTO EN LA MATRIZ DE DATOS. CADA CONJUNTO EN LA MATRIZ DE CONJUNTOS CONTIENE INFORMACION QUE INDICA CUANDO UNA DIRECCION RECIBIDA POR LA MEMORIA DE CACHE CONCUERDA CON LA LINEA DE CACHE CONTENIDA EN SU ELEMENTO CORRESPONDIENTE DE LA MATRIZ DE DATOS. LA INFORMACION ALMACENADA EN CADA CONJUNTO INCLUYE UNA ETIQUETA Y UN ESTADO. LA ETIQUETA CONTIENE UNA REFERENCIA A UNA DE LAS LINEAS DE CACHE EN LA MATRIZ DE DATOS. SI LA ETIQUETA DE UN CONJUNTO PARTICULAR CONCUERDA CON LA DIRECCION RECIBIDA POR LA MEMORIA DE CACHE, ENTONCES LA LINEA DE CACHE ASOCIADA CON ESE CONJUNTO PARTICULAR ES LA LINEA DE CACHE PEDIDA. EL ESTADO DE UN CONJUNTO PARTICULAR INDICA EL NUMERO DE LINEAS DE CACHE MAPEADAS DENTRO DE ESE CONJUNTO PARTICULAR.

Description

Memoria caché de asociación de conjuntos bilateral.
Antecedentes de la invención Campo de la invención
La presente invención pertenece al campo del almacenamiento de datos. Más en particular, la invención está relacionada con los subsistemas de memoria caché.
Antecedentes
La tecnología de los ordenadores está avanzando continuamente, dando lugar a que los microprocesadores operen a velocidades cada vez más rápidas. Con el fin de aprovechar totalmente la ventaja de estos microprocesadores de alta velocidad, las capacidades de almacenamiento de los datos tiene que estar acompasada con la velocidad incrementada. La memoria de alta velocidad, no obstante, es muy costosa, en que el costo se amplia más todavía por la gran cantidad de memoria que requieren muchos programas de software modernos.
Una solución al problema de la memoria costosa es la de un subsistema de memoria caché. Un subsistema de memoria caché es una unidad de memoria que es generalmente más pequeña que la unidad de memoria del sistema, pero que opera a una velocidad significativamente más alta que la memoria del sistema. El objetivo de la memoria caché es contener la información (que pueden ser datos o instrucciones) que el microprocesador va a utilizar a continuación. Esta información puede ser retornada al microprocesador mucho más rápidamente, debido a la velocidad más alta de la memoria caché.
La operación de los subsistemas de memoria caché varia, no obstante, en general, según los datos se intercambian entre la memoria del sistema y la memoria caché. Cuando el microprocesador solicita información de la memoria, por ejemplo, una instrucción va a ser ejecutada o los datos relacionados con una instrucción, envía la dirección de la memoria de la información deseada a la memoria caché. Si la memoria caché contiene la información, emite una señal al microprocesador indicándolo así; esta señal se denomina generalmente como "acierto". La memoria caché retorna entonces la información solicitada al microprocesador. Así pues, el microprocesador recibe la información solicitada de forma más rápida debido a la mayor velocidad de la memoria caché.
No obstante, si la memoria caché no contiene la información solicitada por el microprocesador, entonces se retorna una señal denominada generalmente como "fallo" al microprocesador. La señal de "fallo" indica al microprocesador que tiene que recuperar la información de la memoria más lenta del sistema. Alternativamente, el controlador de la memoria caché puede recuperar la información de la memoria del sistema, y retornarla al microprocesador. Independientemente de cual sea el sistema que recupere la información de la memoria del sistema, la información recuperada se almacena también en la memoria caché. Con el fin de almacenar esta información en la memoria caché, no obstante, otros datos en la memoria caché tienen que ser sobrescritos. Es decir, otra información puede estar contenida en el lugar en que tenga que sobrescribirse la nueva información. En algunos sistemas, esta situación se resuelve mediante la transferencia de la información almacenada en una posición en particular de la memoria caché en la memoria del sistema y transferir la información almacenada en la memoria del sistema a la posición en particular de la memoria caché.
Si la memoria caché tiene que transferir la información en una posición en particular a la memoria del sistema, esto depende también la política utilizada en la memoria caché. Por ejemplo, algunas políticas de la memoria caché transfieren la información a la memoria del sistema cuando la información en la memoria caché sea actualizada. Así pues, al recuperar la nueva información desde el sistema de memoria, la información en la memoria caché no necesita ser transferida a la memoria del sistema.
La memoria caché es generalmente mucho más pequeña que la memoria del sistema. Así pues, solo una parte de la dirección de la memoria, referida como el índice de la memoria caché, se utiliza como un índice dentro de la memoria caché. Una segunda parte de la dirección de la memoria, generalmente referida como la "parte de etiquetas", se utiliza para determinar si la información almacenada en la memoria caché es la información solicitada. Así pues, laas múltiples direcciones de la memoria del sistema se refieren al mismo intervalo en la memoria caché. Cuando el microprocesador solicita una dirección de la memoria que corresponde a un intervalo en la memoria caché que ya está utilizada por otra línea caché, entonces se produce un conflicto.
Los subsistemas de memoria caché se dividen frecuentemente en múltiples líneas caché, en que la parte del índice de la memoria caché de la dirección de memoria corresponde a una de estas líneas caché. Cada línea caché incluye múltiples bytes, con el byte en particular solicitado por el microprocesador estando indicado en la dirección de memoria como un desplazamiento. La memoria del sistema está también dividida a menudo con el mismo tamaño de líneas que la memoria caché. Estas líneas en la memoria del sistema son referidas como líneas de datos.
Otro tipo de subsistema de memoria caché para resolver los conflictos de las líneas caché es conocido en el arte como caché de correlación directa. En una caché de correlación directa, cuanto tiene lugar un conflicto, la línea caché almacenada en la caché es transferida a la memoria del sistema y la línea de datos correspondiente a la petición del microprocesador es transferida a dicha posición en la memoria caché. Dicho sistema caché tiene varias ventajas. Primeramente, la complejidad del hardware para implementar la caché es relativamente simple. La etiqueta de la posición se compara con la petición, y la línea caché es retornada al microprocesador si coinciden, o bien los datos se recuperan de la memoria del sistema si no coinciden.
En segundo lugar, el costo del subsistema de memoria caché es relativamente pequeño. El razonamiento de esto es doble. La reducida complejidad de la lógica expuesta anteriormente reduce el costo financiero del sistema. Además de ello, la baja complejidad permite que la memoria caché utilice las células de memoria de acceso aleatorio estáticas (SRAM). Las memorias SRAM están disponibles ampliamente, y son relativamente económicas con respecto a muchos otros tipos de células de memoria.
La caché de correlación directa, no obstante, tiene una ejecución deficiente bajo ciertas circunstancias. Por ejemplo, la dirección de memoria A y la dirección de memoria B pueden hacer referencia ambas a la misma posición de memoria, posición X. Si el microprocesador solicita inicialmente la dirección de memoria A, entonces los datos en la dirección A se almacenan en la posición X. Si el microprocesador solicita la dirección B en el siguiente ciclo de reloj, entonces los datos en la posición X son devueltos a la memoria del sistema (en la dirección A), y los datos en la dirección B se almacenan en la posición X. La siguiente petición por el microprocesador puede ser entonces para la dirección A otra vez. Así pues, los datos en la posición X son devueltos a la memoria del sistema (en la dirección B), y los datos en la dirección A se almacenan otra vez en la posición X. En consecuencia, tendrán lugar una tasa de aciertos muy deficiente (es decir, el número de aciertos de la memoria caché con respecto al número total de accesos a la memoria caché), si el microprocesador efectúa las peticiones en el orden siguiente: dirección A, dirección B, dirección A, dirección B, dirección A, dirección B, etc. Así pues, puede verse que el rendimiento de una memoria caché de correlación directa se resiente cuando el microprocesador solicita alternativamente las direcciones A y B.
Un segundo tipo de memoria caché que resuelve este inconveniente en su rendimiento es una memoria caché de asociación de conjuntos bilateral. La memoria caché de asociación de conjuntos bilateral incluye dos "vías", que pueden considerarse como dos memorias caché de correlación directa que operan conjuntamente (por esta razón, la memoria caché de correlación directa se denomina a veces como una memoria caché unilateral). En una memoria caché bilateral, si se produce un conflicto, entonces los datos almacenados en la primera vía de la memoria caché son transferidos a la segunda vía de la memoria caché, y los nuevos datos son recuperados de la memoria del sistema en la primera vía de la memoria caché. Así pues, ambas líneas de datos se almacenan en la memoria caché. En consecuencia, si el microprocesador conmuta continuamente entre la petición de la dirección A y la dirección B según se ha descrito anteriormente, cada petición dará un"acierto" en la memoria caché, dando lugar a una tasa de aciertos más alta. Ambas líneas de datos permanecen en la memoria caché hasta que tenga lugar un segundo conflicto; es decir, una tercera petición que tenga acceso a la misma posición.
Así pues, puede observarse que la memoria caché bilateral resuelve algunos de los problemas de rendimiento en la memoria caché de correlación directa. No obstante, este rendimiento incrementado tiene varios costos. En primer lugar, la complejidad de la lógica para hacer operar a la memoria caché bilateral es mayor. Tiene que añadirse una lógica adicional para monitorizar ambas líneas de la memoria caché en ambas vías, y retornar los datos apropiados cuando una petición del microprocesador genere un acierto en la memoria caché. En segundo lugar, las memorias caché bilaterales utilizan generalmente células de memoria personalizadas, en lugar de memorias SRAM estándar. Así pues, se incrementa el costo financiero del sistema de la memoria caché.
Una tercera consideración del costo es que el consumo de energía en una memoria caché bilateral es mayor que el correspondiente a una memoria caché de correlación directa. La memoria caché de correlación directa tiene acceso solo a una línea de la memoria caché para determinar si tiene lugar un acierto. No obstante, en una memoria caché bilateral, se tiene acceso a ambas líneas de la memoria caché para determinar si se ha generado un acierto, en la que la línea apropiada es retornada al microprocesador si tiene lugar un acierto. Así pues, puede observarse que la memoria caché bilateral utiliza el doble de energía de la memoria caché de correlación directa, puesto que tiene un acceso doble según las distintas líneas de la memoria caché.
Un ejemplo de una memoria caché de columnas del arte previo es el que se expone en la solicitud de patente internacional número WO94 03856A (Instituto de Tecnología de Massachusetts), mientras que se exponen estudios adicionales con respecto a la memoria caché en la solicitud de patente europea número EP-A-0581425 (Sun Microsystems, Inc.), y también en un artículo titulado "Implementaciones económicas de asociación de conjuntos" de Kessler R. E. y otros, publicado en Computer Arquitecture News, vol. 17, 3 de junio de 1989, págs. 131-139, XP000035297.
Así pues, sería ventajoso proporcionar un subsistema de memoria caché que opere rápidamente para aprovechar la ventaja de la velocidad incrementada de los modernos microprocesadores. La presente invención proporciona dicha solución.
Adicionalmente, sería ventajoso proporcionar un subsistema de memoria caché que tuviera las ventajas tanto de la memoria caché de correlación directa como el rendimiento incrementado de la memoria caché bilateral. La presente invención proporciona una memoria caché caracterizada porque es menos compleja, teniendo un costo más bajo, y con un menor consumo de energía que la memoria caché bilateral. La presente invención proporciona también unas tasas de aciertos más altas en comparación con las memorias caché de correlación directa convencionales.
Sumario de la invención
Se describe aquí una memoria caché de asociación de conjuntos bilateral, siendo reivindicada en las reivindicaciones adjuntas.
En una realización, la memoria caché incluye conjuntamente una matriz de conjuntos y una matriz de datos. La matriz de datos comprende múltiples elementos, en la que dada uno contiene una línea caché. La matriz de conjuntos comprende múltiples conjuntos, correspondiendo cada uno a un elemento en la matriz de datos. Cada conjunto en la matriz de conjuntos contiene información que indica si la dirección recibida por la memoria caché coincide con la línea caché een su elemento correspondiente de la matriz de datos (suponiendo que el elemento contiene una línea caché).
Cada conjunto incluye información de la etiqueta y la información del estado. La información de la etiqueta es una referencia a una de las líneas caché en la matriz de datos. Si la etiqueta de un conjunto en particular coincide con la parte de la etiqueta de la dirección recibida por la memoria caché, entonces la línea caché asociada con dicho conjunto en particular es la línea caché solicitada. La información de estado de un conjunto en particular indica el número de líneas caché correlacionadas en dicho conjunto en particular.
Breve descripción de los dibujos
Se muestra la presente invención a modo de ejemplo, y no como limitación, en las figuras de los dibujos adjuntos, en los que las referencias iguales indican elementos similares, en los que:
la figura 1 muestra una vista general de un sistema de ordenador a modo de ejemplo de la presente invención;
la figura 2 muestra una matriz de conjuntos y una matriz de datos correspondiente de una memoria caché en una realización de la presente invención;
la figura 3A muestra un mapa de bits para determinar la información del conjunto utilizado más recientemente en una realización de la presente invención;
la figura 3B muestra el circuito lógico para determinar la información del conjunto más recientemente utilizado en una realización alternativa de la presente invención;
la figura 4 es un diagrama de bloques de un subsistema de memoria caché en una realización de la presente invención;
las figuras 5A y 5B muestran las etapas seguidas por una realización de la presente invención en la operación del subsistema de memoria caché de la
figura 4;
la figura 6 es un diagrama de bloques de un subsistema de memoria caché en una realización alternativa de la presente invención;
las figuras 7A y 7B muestran las etapas seguidas por una realización de la presente invención en la operación de un subsistema de memoria caché de la
figura 6;
la figura 8 es un diagrama de bloques de un subsistema de memoria caché en otra realización de la presente invención; y
las figuras 9A y 9B muestran las etapas seguidas por una realización de la presente invención en la operación de un subsistema de memoria caché de la
figura 8.
Descripción detallada
En la siguiente descripción detallada se exponen numerosos detalles específicos, con el fin de proporcionar una comprensión global de la presente invención. No obstante, se comprenderá por los técnicos especializados en el arte que la presente invención puede ser realizada sin estos detalles específicos. En otros ejemplos no se han descrito métodos bien conocidos, procedimientos, componentes y circuitos con detalle, con el fin de no obscurecer los aspectos de la presente invención.
La figura 1 muestra una vista general de un sistema de ordenador como ejemplo de la presente invención. El sistema de ordenador comprende generalmente un bus del sistema o bien otro dispositivo de comunicaciones 100 para comunicar la información, y una unidad de proceso central (CPU) 101 acoplada con el bus 100 para procesar la información y las instrucciones. En una implementación, la presente invención incluye un microprocesador Intel® tal como la CPU 101; no obstante, la presente invención puede utilizar cualquier tipo de arquitectura del microprocesador. En una realización, el bus 100 incluye los buses de direcciones, datos y control. El sistema de ordenador incluye también una memoria del sistema o memoria de acceso aleatorio (RAM) 104 acoplada al bus 100 para almacenar información e instrucciones para la CPU 100, una memoria de solo lectura (ROM) 105 acoplada al bus 100 para almacenar información estática e instrucciones para la CPU 101, un dispositivo de almacenamiento de datos 106 tal como un disco magnético y una unidad de disco acoplada con el bus 100 para almacenar información e instrucciones, un dispositivo de visualización 107 acoplado al bus 100 para visualizar información para el usuario del ordenador, un dispositivo de entrada de tipo alfanumérico 108 que incluye teclas alfanuméricas y de función, acoplado al bus 100 para comunicar la información y la selección de órdenes a la CPU 101, un dispositivo de control del cursor 109 acoplado al bus 100 para comunicar la información de entrada del usuario y las selecciones de ordenes a la CPU 101, y un dispositivo de copia impresa 111, tal como un trazador de gráficos o impresora, acoplados al bus 100 para proporcionar una representación visual de las imágenes del ordenador.
El dispositivo de visualización 107 utilizado con el sistema de ordenador de la presente invención puede ser un dispositivo de cristal líquido, un tubo de rayos catódicos, o bien otro dispositivo de visualización adecuado para crear imágenes de gráficos y caracteres alfanuméricos (y juegos de caracteres ideográficos) reconocibles por el usuario. El dispositivo de control del curso 109 permite al usuario del ordenador señalizar dinámicamente el movimiento de dos dimensiones de un símbolo visible (por ejemplo, un cursor o puntero) sobre una pantalla de visualización del dispositivo de visualización 107. Son conocidas en el arte muchas implementaciones de dispositivo de control del cursor, incluyendo una bola de seguimiento, ratón, palanca de control, o teclas especiales en el dispositivo de entrada alfanumérico 108 capaz de señalizar el movimiento de una dirección dada o una forma de desplazamiento. Se observará que el cursor puede ser dirigido y/o activado a través de la entrada del teclado utilizando teclas especiales y ordenes de secuencia de teclas. Alternativamente, el cursor puede ser dirigido y/o activado a través de la entrada de varios dispositivos de dirección del cursor especialmente adaptados, incluyendo aquellos que están desarrollados exclusivamente para minusválidos.
La CPU 101 incluye un bus interno o bien otro dispositivo de comunicaciones 115 para comunicar la información entre los componentes dentro de la CPU 101, así como también los componentes externos a la CPU 101. Se incluye también en la CPU 101 una unidad de ejecución de instrucciones 116. La unidad de ejecución de instrucciones 116 recupera y ejecuta instrucciones, y recupera datos, de los dispositivos de almacenamiento de datos dentro del sistema del ordenador. Estos datos e instrucciones pueden almacenarse en la memoria del sistema 104, ROM 105, dispositivo de almacenamiento de datos 106, etc. Puede incluirse también en la CPU 101 una memoria caché de nivel uno (L1) 117, para almacenar datos e instrucciones para ser utilizados por la unidad de ejecución 116. Se observará que la CPU 101 contiene componentes adicionales, aunque no se han mostrado a fin de no complicar los dibujos y complicar la presente invención.
La CPU 101 está acoplada a una memoria caché de nivel dos (L2) 118 a través del bus L2 119. La memoria caché L2 118 es una memoria caché adicional para almacenar datos e instrucciones para ser utilizados por la unidad de ejecución 116. En una realización de la presente invención, la memoria caché L2 118 es mayor y más lenta que la memoria caché L2 117. La memoria caché L2 118 incluye el controlador L2 120 para controlar la operación de la memoria caché L2 118, y también la memoria RAM L2 121 para almacenar datos e instrucciones contenidos en la memoria caché L2 118. En la realización mostrada, el controlador L2 120 está incluido en la memoria caché L2 118. Alternativamente, el controlador L2 120 podría estar incluido en la CPU 101.
Se observará que el sistema de ordenador de la figura 1 es solo a modo de ejemplo. En algunas implementaciones de la presente invención, pueden ser incluidos procesadores adicionales o bien otros componentes en el sistema de ordenador. Adicionalmente, ciertas implementaciones de la presente invención pueden no precisar ni incluir todos los componentes anteriores. Por ejemplo, el dispositivo de visualización 107 o el dispositivo de copia impresa 111 pueden no estar acoplados al bus 100. Adicionalmente, ciertas implementaciones pueden acoplar componentes de una forma diferente. Por ejemplo, la memoria caché L2 118 puede estar conectada directamente al bus del sistema 100 en lugar de hacerlo al bus
interno 115.
La figura 2 muestra un índice de caché o matriz de conjuntos 201 y una matriz de datos correspondientes 221 de una memoria caché en una realización de la presente invención. La matriz de conjuntos 201 incluye 2-n conjuntos de datos, y la matriz de datos 221 incluye 2-n elementos. Cada conjunto de datos de la matriz de conjuntos 201 corresponde a un único elemento en la matriz de datos 221.
La matriz de conjuntos 201 según se muestra es una única matriz contigua físicamente. No obstante, la matriz de conjunto 201 puede ser tratada como una memoria caché de asociación de conjuntos bilateral. Esto se muestra en la figura 2 mediante la vía 0 y la vía 1, en la que cada vía comprende n conjuntos. Una dirección recibida por la memoria caché contiene una parte que es un índice de conjuntos, tal como el índice de conjuntos 205. El índice de conjuntos 205 identifica exclusivamente un conjunto en particular dentro de la matriz de conjuntos 201, estando dicho conjunto en la vía 0 en la vía 1. Así pues, el tamaño (es decir, el número de bits) del índice de conjuntos 205 se determina por el número de conjuntos dentro de la matriz de conjuntos 201.
Dada la división de la vía 0 y la vía 1 mostradas en la figura 2, la diferencia entre un índice de conjuntos que identifica un conjunto en la vía 0 y un índice de conjuntos que identifica un conjunto en la vía 1, es el bit más significativo del índice de conjuntos. Por ejemplo, si todos los bits del índice de conjuntos 205 son ceros, incluyendo el bit más significativo, entonces el índice de conjuntos 205 se correlaciona con el conjunto 1 de la vía 0 de la matriz de conjuntos 201. No obstante, si el bit más significativo del índice de conjuntos 205 es un uno y todos los demás bits son ceros, entonces dicho índice de conjuntos 205 se correlaciona en el conjunto 1 de la vía 1 de la matriz de conjuntos 201.
Así pues, puede observarse que la matriz de conjuntos 201 puede operar esencialmente como una memoria caché de correlación directa. Es decir, cada índice de conjuntos se correlaciona con un conjunto en particular de la matriz de conjuntos 201. No obstante, deberá observarse que para acceder al conjunto correspondiente de una forma diferente, el bit más significativo del índice de conjuntos solo necesita ser cambiado. Así pues, por ejemplo, dado el índice de conjuntos para el conjunto 4 de la vía 1, si el usuario decide tener acceso al conjunto 4 de la vía 0, el bit más significativo del índice de conjuntos necesitaría sencillamente cambiar a 0.
En una realización de la presente invención, cada conjunto en una matriz de conjuntos 201 incluye un campo de etiqueta y un campo de estado. El campo de etiqueta de un conjunto en particular identifica la línea caché almacenada en el elemento correspondiente de la matriz de datos 221. Por ejemplo, el campo de etiqueta del conjunto 2 de la vía 0 en la matriz de conjuntos 201 indica la dirección de la memoria del elemento 2 de la matriz de datos 221. La información almacenada en el campo de etiqueta de un conjunto en particular es recibida como parte de la petición de la dirección de memoria del procesador. El campo de estado de un conjunto en particular dentro de la matriz de conjuntos 201 indica el número de líneas caché que están correlacionadas en el conjunto, según se describe con más detalle a continuación. En una realización alternativa de la presente invención, se utilizan dos matrices de conjuntos. Una matriz de conjuntos contiene los campos de etiqueta, mientras que la segunda matriz de conjuntos contiene los campos de estado. Esta realización se expone con más detalle más adelante con referencia a la figura 4.
Se observará por los técnicos especializados en el arte que las realizaciones alternativas de la presente invención pueden utilizar matrices de conjuntos con información adicional. Por ejemplo, en una realización de la presente invención, la matriz de conjuntos 201 incluye los bits de paridad para cada conjunto utilizado para la comprobación de errores, e incluye también los bits de estado que reflejan la validez de la línea caché (por ejemplo, utilizando el protocolo MESI bien conocido).
En una implementación de la presente invención, la matriz de conjuntos 201 comprende 1024 conjuntos en total. Así pues, cada vía incluye 512 conjuntos, y el índice de conjuntos 205 comprende diez bits. En consecuencia, la matriz de datos 221 incluye también 1024 elementos. En una realización de la presente invención, cada elemento dentro de la matriz de datos 221 es una sola línea caché para el sistema de ordenador. En una implementación, el tamaño de esta línea caché es de 32 bytes. No obstante, se apreciará que estos tamaños para la matriz de conjuntos, matriz de datos, y línea caché, son solo a modo de ejemplo; esos componentes pueden ser de cualquier tamaño.
Tal como se ha mencionado anteriormente, cada conjunto dentro de la matriz de conjuntos 201 puede incluir un campo de estado. En una realización de la presente invención, el campo de estado indica el número de líneas caché que están correlacionadas dentro de este conjunto en particular. Cada índice del conjunto identifica exclusivamente un conjunto de la matriz de conjuntos 201. No obstante, puesto que múltiples líneas de datos pueden tener el mismo índice de conjuntos, cuando las líneas de datos son transferidas a la memoria caché como líneas caché, la presente invención permite que un índice de conjuntos esté correlacionado con múltiples líneas caché. En esta realización, estos posibles estados existen para el campo de estado. Estos tres estados son: directo, pareado, y prestado.
El estado directo indica que solo una sola línea caché está correlacionada dentro de este conjunto. Es decir, solo una línea caché está asociada con el conjunto. Un conjunto en estado directo puede efectuar la transición al estado prestado o al estado pareado, o bien permanecer en estado directo.
Un conjunto en estado pareado indica que dos líneas caché están correlacionadas dentro de este conjunto. Es decir, dos líneas caché están asociadas con este conjunto. En esta situación, la información asociada con una de las líneas caché (es decir, la etiqueta, estado, datos, etc.) es almacenada en este conjunto y sus correspondientes elementos de la matriz de datos. Este conjunto se denomina entonces conjunto "primario". La información asociada con la segunda línea caché es almacenada en el conjunto correspondiente y en el elemento de la matriz de datos de la otra vía, que se denomina conjunto "socio". Se puede acceder al conjunto socio mediante sencillamente el cambio del bit más significativo del índice de conjuntos para el conjunto primario. Por ejemplo, si el conjunto primario es el conjunto 4 de la vía 0, entonces el conjunto socio es el conjunto 4 de la vía 1. Un conjunto que está en estado pareado puede efectuar la transición al estado directo, o permanecer en estado pareado.
Si un conjunto se encuentra en estado prestado no existen líneas correlacionadas dentro de este conjunto. Esto indica una de dos cosas; primeramente, este conjunto puede ser utilizado por el correspondiente conjunto de la otra vía. Es decir, el conjunto correspondiente de la otra vía se encuentra en estado pareado y la segunda línea caché está correlacionada dentro de este conjunto. En segundo lugar, el conjunto correspondiente de la otra vía puede estar también en estado prestado, indicando que no existen líneas caché correlacionadas dentro de este conjunto ni en el correspondiente conjunto de la otra vía (es decir, el conjunto socio del conjunto). Un conjunto en estado prestado puede efectuar la transición al estado directo o permanecer en estado prestado. Al inicializar el sistema, todos los conjuntos en la matriz de conjuntos 201 se inicializan hacia el estado prestado.
Deberá observarse que cada par de conjuntos correspondientes (en donde los índices de losconjuntos de un par de conjuntos correspondientes difieren solamente en el bit más significativo) es una combinación de conjunto primario/socio). Cualquier conjunto puede ser el conjunto primario y cualquier conjunto puede ser el conjunto socio. Lo que determine cual será el conjunto primario o el conjunto socio será el conjunto indexado por el índice de conjuntos. El conjunto indexado por el índice de conjuntos es el conjunto primario; el conjunto correspondiente en la otra vía es el conjunto socio. Deberá observarse también que lo que determina cual será el conjunto primario puede depender también de cual de los dos conjuntos haya sido utilizado más recientemente, según se expone más adelante con más detalle.
Se observará además que cuando un conjunto en particular se encuentra en estado pareado, el conjunto socio del conjunto se encuentra en estado prestado. Mediante la utilización de los estados de pareado/prestado, se crea una memoria caché bilateral. Es decir, si un conjunto en particular se encuentra en estado pareado, entonces contiene la información para una línea caché, y su conjunto socio contiene la información para la segunda línea caché correlacionada con este conjunto.
Así pues, puede observarse que la memoria caché se comporta como una memoria caché de correlación directa hasta que tiene lugar un conflicto entre dos líneas caché. Cuando se produce dicho conflicto, la memoria caché se comporta como una memoria caché de asociación de conjuntos bilateral.
Mediante la utilización de los campos de estado dentro de la matriz de conjunto 201, se puede realizar para algunas peticiones una determinación preliminar de si una petición acierta en la caché o falla en la caché. Si la petición recibida del procesador indexa un conjunto que se encuentra en estado prestado, entonces la petición está garantizada que será un fallo. Es decir, el estado prestado indica que no existen líneas caché correlacionadas en este conjunto. Así pues, no hay necesidad de comparar la etiqueta de la petición con la etiqueta bien sea del conjunto primario o del conjunto socio de la matriz de conjuntos 201.
Si la petición del procesador se indexa dentro de un conjunto, el cual se encuentra en estado directo, entonces la petición puede ser un acierto o un fallo en la memoria caché. El campo de la etiqueta para el conjunto indexado tiene que ser comparado con el campo de la etiqueta de la petición del procesador, para determinar si tiene lugar un acierto o no. No obstante, el conjunto socio no necesita ser comprobado debido a que el estado directo indica solo que una única línea se encuentra correlacionada dentro de este conjunto. Así pues, el campo de la etiqueta de solo un único conjunto necesita que sea comparado con el campo de la etiqueta de la dirección recibida del procesador. Así pues, se comprenderá por aquellos técnicos especializados en el arte, que cuando cada uno de los conjuntos de la matriz de conjuntos 201 se encuentran estado directo o prestado, la caché se comporta como una caché de correlación directa.
Si la petición del procesador indexa un conjunto dentro de una matriz de conjuntos 210 que se encuentra en estado pareado, entonces la petición puede tener un acierto o un fallo en la caché. En una implementación de la presente invención, el campo de la etiqueta de la petición se compara primeramente con el campo de la etiqueta en el conjunto primario. Si los campos de las etiquetas coinciden, entonces la línea caché asociada con el conjunto primario es retornada al procesador. No obstante, si el campo de la etiqueta del conjunto primario no coincide con el campo de la etiqueta de la petición, entonces el campo de la etiqueta del conjunto socio se compara con el campo de la etiqueta de la petición. Si la etiqueta del conjunto socio y el campo de la etiqueta de la petición coinciden, entonces la línea caché asociada con el conjunto socio es retornada al procesador. De lo contrario, se retornará una indicación de fallo al procesador.
Así pues, cuando un conjunto se encuentra en estado pareado, dicho conjunto y su conjunto socio se comportan notablemente de forma similar a una memoria caché bilateral. No obstante, los dos conjuntos no operan exactamente como una memoria caché bilateral porque se tiene acceso al segundo conjunto solo cuando el primer conjunto se tiene un fallo.
En una implementación de la presente invención, el conjunto primario es el conjunto más recientemente utilizado (MRU). El conjunto MRU es el conjunto al que se haya tenido acceso más recientemente por el procesador. Así pues, el conjunto primario podría ser cualquier conjunto bien sea el conjunto primario o el conjunto socio, según se ha expuesto con más detalle más adelante.
En las realizaciones de la figura 4 y figura 6, la lógica MRU se utiliza al tener acceso a la memoria caché L2. La lógica MRU (o indicador) indica cual es del par de conjuntos del conjunto primario/conjunto socio al que se ha tenido acceso más recientemente por parte del procesador. En las dos realizaciones de las figuras 4 y 6, el conjunto MRU se denomina el conjunto primario, y al conjunto menos utilizado recientemente (LRU) se denomina como conjunto socio. Cuando la petición desde el procesador se convierte en un fallo, la línea caché bien sea del conjunto primario o del conjunto socio es transferida a la memoria del sistema, para proporcionar una posición libre para la línea caché entrante desde la memoria del sistema. En una implementación, la línea caché que menos se haya utilizado recientemente (es decir, el conjunto socio) es aquella que se haya intercambiado con la línea caché entrante en procedente de la memoria del sistema. Así pues, mediante la utilización de la lógica MRU, se conoce la línea caché apropiada de transferencia a la memoria del sistema.
La figura 3A muestra un mapa de bits para determinar la información del conjunto más utilizado recientemente en una realización de la presente invención. la figura 3A muestra un mapa de bits 310 que tiene diez líneas de entrada y una línea de salida. Las diez líneas de entrada al mapa de bits 310 son los diez bits del índice del conjunto dentro de la matriz de conjuntos 201. Así pues, con diez entradas, el mapa de bits 310 se puede tener acceso a 1024 posiciones exclusivas. Dadas estas diez entradas, el mapa de bits 310 da salida a un solo bit, el bit MRU 311, el cual es el indicador MRU para el conjunto en particular, el cual fue la entrada al mapa de bits 310. En una implementación, si el bit MRU 311 es un "0", entonces el conjunto más recientemente utilizado se determina no mediante el cambio del bit más significativo de este índice de conjuntos. No obstante, si el bit MRU 311 es un "1", entonces el conjunto utilizado más recientemente está indicado por el cambio del bit más significativo del índice de conjuntos. Por ejemplo, el índice de conjuntos indexa un conjunto dentro de la matriz de conjuntos 201. Si el bit MRU 311 es un "0", entonces dicho índice de conjuntos es el índice del conjunto primario. No obstante, si el bit MRU 311 es un "1", entonces dicho índice de conjuntos es el índice del conjunto socio.
La figura 3B muestra el circuito lógico para determinar la información del conjunto utilizado más recientemente en una realización alternativa de la presente invención. La figura 3B muestra un mapa de bits 320 que tiene nueve líneas de entrada. Estas nueve líneas de entrada son los nueve bits menos significativos del índice de conjuntos de la dirección recibida desde el procesador. El bit más significativo del índice de conjuntos es introducido en una puerta O-Exclusiva convencional 322, junto con la salida del mapa de bits 320. La salida de la puerta O-Exclusiva 322 se utiliza entonces como el bit más significativo del índice de conjuntos (es decir, el bit 14), en lugar del bit más significativo que fue introducido en la puerta 322. Así pues, el resultado del circuito de la figura 3B indica el bit más significativo en curso, en lugar de cambiar el bit más significativo tal como se expuso en la
figura 3A.
En una realización de la presente invención, la lógica MRU se inicializa mediante la configuración de cada posición en el mapa de bits (bien sea el mapa de bits 310 de la figura 3A o el mapa de bits 320 de la figura 3B) al valor "0" en la inicialización del sistema. En esta realización, la lógica MRU puede ser implementada utilizando el circuito lógico bien sea de la figura 3A o de la figura 3B. La lógica MRU se actualiza entonces cuando un conjunto efectúa la transición desde el estado directo al estado pareado, tal como se expone con mayor detalle más abajo.
La figura 4 es un diagrama de bloques de un subsistema de memoria caché en una realización de la presente invención. En esta realización, tanto la lógica MRU como la información de estado se almacenan en la misma cápsula del circuito integrado (CI) que la CPU, y la memoria caché de nivel dos (L2) está contenida en una cápsula CI independiente. La figura 4 muestra el circuito lógico tanto para la CPU 402 como para la memoria caché L2 403. La separación entre estas dos cápsulas del CI se muestra mediante la línea de delimitación 401.
La CPU 402 incluye una unidad de ejecución de instrucciones 405, una memoria caché de nivel uno (L1) y el controlador 406, la lógica MRU 407, el controlador L2 408, y una matriz de estados 409. El bus interno 404 está incluido también dentro de la CPU 402, para comunicar la información entre los distintos componentes de la CPU 402. Se comprenderá por aquellos técnicos especializados en el arte que son necesarios varios componentes adicionales para la operación de la CPU 402, tal como una unidad aritmético-lógica, que están incluidos también dentro de la CPU 402. Estos componentes adicionales, no obstante, no se han mostrado en la figura 4, a fin de no complicar el dibujo y obscurecer la presente invención.
La unidad de ejecución de instrucciones 405 ejecuta las instrucciones recuperadas a partir de los programas que operan en el sistema del ordenador. Esta ejecución incluye la recuperación de las instrucciones y de los datos de la memoria del sistema del ordenador. Cuando la unidad de ejecución 405 requiere instrucciones adicionales de datos, solicita primeramente la información de la memoria caché L1 y el controlador 406. Si la petición de la unidad de ejecución 405 acierta en la caché L1 406, entonces la información solicitada es retornada a la unidad de ejecución 405. No obstante, si la petición de la unidad de ejecución 405 falla en la memoria caché L1 406, entonces la dirección recibida por el controlador 406 de la caché L1 es introducida en el controlador 408 de estado de L2. En una realización de la presente invención, la caché L1 y el controlador 406 es una memoria convencional. En una realización alternativa, la caché L1 y el controlador 406 es una memoria caché de acuerdo con la presente invención.
La lógica 407 es el circuito lógico que proporciona la información MRU, tal como se muestra en las figuras 3A y 3B. La petición de la unidad de ejecución 405 es introducida en la lógica MRU 407 al mismo tiempo que es introducida en la caché L1 406, permitiendo por tanto que la información MRU para el conjunto en particular dentro de la caché L2 403 se tenga acceso en paralelo con la caché L1 406. Así pues, la información MRU, tal como el bit MRU 311 expuesto anteriormente en la figura 3A o el bit 14 expuesto en la figura 3B, se encuentran disponibles para el controlador de estado 408 de L2 al mismo tiempo que la caché L1 y el controlador 406 dan salida a la dirección de la petición al controlador de estado 408 L2.
El controlador de estado L2 408 recibe la entrada de la caché L1 406 y de la lógica MRU 407. El controlador de estado 408 L2 combina la información MRU recibida de la lógica MRU 407 con los bits menos significativos del índice del conjunto solicitado recibido de la caché L1 406. Así pues, el controlador de estado 408 L2 genera la dirección para el conjunto primario (es decir, el conjunto más recientemente usado del par del conjunto socio - conjunto primario).
El controlador de estado L2 408 está acoplado también a la matriz de estado 409. La matriz de estado 409 incluye el campo de estado para cada conjunto dentro de la caché L2. El campo de estado para un conjunto en particular indica si dicho conjunto se encuentra en estado directo, pareado o prestado. Así pues, si la petición da lugar a un fallo en la caché L1, entonces el controlador de estado 408 de L2 determina el estado del conjunto primario para la petición. Así pues, la información preliminar, tal como si el conjunto se encuentra en estado prestado y por tanto garantizado para que se produzca un fallo, puede tener acceso en la misma cápsula del CI que la CPU 402, sin acceder a la caché L2 403. En consecuencia, bajo ciertas circunstancias, una indicación de fallo puede ser retornada a la unidad de ejecución 405 sin incurrir en el retardo de tiempo en el acceso a la cápsula del CI independiente de la caché L2 403.
Si la petición falla, la caché L1 406 y el controlador de estado 408 de la L2 determinan que el conjunto se encuentra en estado directo o en estado pareado, teniendo acceso entonces a la caché L2 403. La dirección solicitada desde la unidad de ejecución 405 es introducida en la caché L2 403 desde el controlador de estado 408 de la L2. Esta dirección se muestra como la dirección 420, que comprende 32 bits. Los 16 bits más significativos de la dirección 420 contienen el campo de la etiqueta de la petición procedente de la unidad de ejecución 405. Este campo de la etiqueta se emplea para determinar si la línea caché asociada con el conjunto primario coincide con la petición, según se expone con más detalle más adelante. Los bits [14:5] de la dirección 420 son el índice dentro de la matriz de conjuntos 422, según se expuso anteriormente con referencia a la figura 2. Los cinco bits menos significativos de la dirección 420 corresponden al desplazamiento dentro de la línea caché de la matriz de datos 424. Es decir, los bits [4:0] indican cual es el byte dentro de cada línea caché solicitada que deberá ser retornado a la unidad de ejecución 405 primeramente, en el caso de que se produzca un acierto.
Se tiene acceso al conjunto primario, basado en la dirección 420, y la etiqueta para dicho conjunto es introducida al circuito lógico de comparación de la etiqueta 426. La etiqueta del conjunto primario es comparada con el campo de la etiqueta de la dirección 420 mediante la lógica de comparación de etiquetas 426. El resultado de esta comparación es introducido después en la lógica de control 428. Se observará que los bits [14:5] de la dirección 420 son introducidos también en la matriz de datos 424. Así pues, la salida de la matriz de datos 424 es la línea caché asociada con el conjunto indexado por la dirección 420. Si la lógica de comparación de las etiquetas 426 indica que la etiqueta del conjunto primario y la etiqueta de la dirección 420 coinciden, entonces se retornará una indicación de acierto por la lógica de control 428 a la CPU 402, junto con la línea caché de la matriz de datos 424.
No obstante, si la lógica de comparación de la etiqueta 425 indica que las etiquetas no coinciden, entonces la lógica de control 428 comprueba el conjunto socio o retorna un fallo, dependiendo de si el estado del conjunto primario es directo o pareado. El estado del conjunto primario es recibido como entrada desde el controlador de estado 408 de L2. Si el estado del conjunto primario es directo, entonces la lógica de control 428 retorna una indicación de fallo. No obstante, si el estado del conjunto primario es pareado, entonces la lógica de control 428 tiene acceso a la matriz de conjuntos 422 y a la matriz de datos 424, utilizando el índice de conjuntos del conjunto menos utilizado recientemente (LRU). Tal como se ha expuesto anteriormente, esto se efectúa mediante el cambio del bit más significativo del índice de conjuntos, por ejemplo el bit [14] de la dirección 420. La etiqueta de la matriz de conjuntos 422 del conjunto LRU se compara mediante la lógica de comparación de etiquetas 426 con la etiqueta recibida de la dirección 420. El resultado de esta comparación se obtiene a la salida hacia la lógica de control 428. Si la lógica de comparación de etiquetas 426 indica un acierto, entonces la línea caché de la matriz de datos 424 asociada con el conjunto LRU es retornada a la CPU 402, junto con una indicación de acierto. No obstante, si la lógica de comparación de la etiqueta 426 indica un fallo, la lógica de control 428 retorna una indicación de fallo a la CPU 402.
En una realización de la presente invención, la lógica de control 428 recupera cualesquiera líneas de datos de la memoria del sistema que sean necesarias para la caché L2 403. En una realización alternativa, la caché L1 y el controlador 406 recuperan cualesquiera líneas de datos necesarias de la memoria del sistema. En otra realización alternativa, la unidad de ejecución 405 recupera cualesquiera líneas de datos necesarias de la memoria del sistema.
Las figuras 5A y 5B muestran las etapas seguidas por una realización de la presente invención al operar el subsistema de la memoria caché de la figura 4. La petición de información se emite primeramente desde la unidad de ejecución de la CPU, etapa 505. En una implementación de la presente invención, esta petición es de la forma de una dirección, tal como la dirección 420 mostrada en la figura 4. Esta petición de la unidad de ejecución se utiliza para acceder a la caché L1, etapa 506, y para acceder a la lógica MRU, etapa 508. Tal como se muestra en la figura 5A, las etapas 506 y 508 se ejecutan en paralelo.
Al recibir la petición de la unidad de ejecución, la caché L1 y el controlador determinan si la petición ha acertado en la caché L1, etapa 510. Si la petición acierta en la caché L1, entonces la línea caché solicitada es retornada a la unidad de ejecución desde la caché L1, etapa 512, cumpliendo por tanto con la petición. No obstante, si la petición falla en la caché L1, entonces el controlador de estado de L2 determina si el conjunto primario indexado por la petición desde la unidad de ejecución se encuentra en estado prestado, etapa 515. El conjunto primario es el conjunto indexado por la dirección del conjunto recibida desde la unidad de ejecución según lo modificado por la información MRU obtenida en la etapa 508. El conjunto socio es el conjunto indexado utilizando los bits menos significativos de la dirección del conjunto primario y el bit más significativo de la dirección del conjunto primario cambiada. Así pues, el conjunto primario es el conjunto utilizado más recientemente, y el conjunto socio es el conjunto menos utilizado recientemente.
Si el conjunto primario se encuentra en estado prestado, entonces el controlador de estado de L2 sabe inmediatamente que la petición de la unidad de ejecución ha fallado en la caché L2. Así pues, la línea de datos solicitada es recuperada desde la memoria del sistema, etapa 520. La línea de datos recuperada de la memoria del sistema es retornada entonces a la unidad de ejecución y también a la caché L2, etapa 525. La línea caché es entonces almacenada en la caché L2 en la línea de la matriz de datos que corresponde al conjunto primario, y el estado del conjunto primario y el conjunto socio son actualizados ambos al estado directo, etapa 530. En una implementación de la presente invención, la línea caché se almacena también en la caché L1.
Volviendo a la etapa 515, si el conjunto primario no se encuentra en el estado prestado, entonces el controlador de estado de L2 da salida tanto a la dirección del conjunto primario como a una indicación de si el conjunto primario se encuentra en estado directo o pareado a la caché L2, etapa 535. La lógica de comparación de etiquetas en la caché L2 determina entonces si coinciden la etiqueta del conjunto primario y la dirección solicitada, etapa 540. Si las etiquetas coinciden, entonces la petición acierta en la caché L2, y la línea caché correspondiente al conjunto primario es retornada desde la matriz de datos en la caché L2 a la unidad de ejecución, etapa 542.
No obstante, si las etiquetas no coinciden en la etapa 540, entonces la lógica de control en la caché L2 determina si el conjunto primario está en el estado directo, basándose en la entrada recibida desde el controlador de estado de L2, etapa 544 de la figura 5B. Si el conjunto primario se encuentra en estado directo, entonces la línea de datos solicitados es recuperada de la memoria del sistema, etapa 545. Esta línea de datos es retornada a la unidad de ejecución, y siendo almacenada también en el conjunto socio, etapa 550. En una implementación de la presente invención, la línea de datos es almacenada también en la caché L1. La lógica MRU se actualiza entonces, etapa 555, para indicar que el conjunto socio está en el conjunto más utilizado recientemente. El estado del conjunto primario se actualiza entonces al estado pareado, y el conjunto socio se actualiza al estado prestado,
etapa 560.
En una realización de la presente invención, la lógica MRU incluye un mapa de bits con diez líneas de entrada, tal como se muestra en la figura 3A. En esta realización, la lógica MRU es acuatizada para indicar que el conjunto socio es el conjunto MRU (etapa 555) mediante el almacenamiento de un "1" en el mapa de bits en la posición determinada por los diez bits del índice de conjuntos del conjunto primario y un "0" en el mapa de bits en la posición determinada por los diez bits del índice del conjunto del conjunto socio. En una realización alternativa de la presente invención, la lógica MRU incluye un mapa de bits con nueve líneas de entrada, tal como se muestra en la figura 3B. En esta realización, la lógica MRU se actualiza para indicar que el conjunto socio es el conjunto MRU mediante el cambio del bit en el mapa de bits en la posición determinada por los nueve bits menos significativos del índice de conjuntos del conjunto primario.
Volviendo a la etapa 544, si el estado del conjunto primario no es ni el directo ni el prestado, entonces el conjunto primario tiene que estar en estado pareado. La etiqueta del conjunto primario se encontró que con coincidía con la etiqueta de la petición en la etapa 540. Así pues, la lógica de comparación de etiquetas determina si la etiqueta del conjunto socio coincide con la etiqueta de la petición, etapa 575. Si la petición acierta en el conjunto socio en la etapa 575 (es decir, coinciden las etiquetas), entonces la línea caché asociada con el conjunto socio es retornada desde la caché L2 a la unidad de ejecución, etapa 580. La lógica MRU es actualizada entonces para indicar que el conjunto utilizado menos recientemente en forma previa es ahora el conjunto utilizado más recientemente, etapa 585. La lógica MRU se actualiza tal como se expuso anteriormente en la etapa 555.
Volviendo a la etapa 575, si la petición falla en el conjunto socio (es decir, las etiquetas no coinciden), entonces la línea de datos solicitada es recuperada de la memoria del sistema, etapa 590. Esta línea de datos es retornada tanto a la unidad de ejecución como a la caché L2, etapa 595. En una implementación, la línea de datos es retornada también y almacenada en la caché L1. La caché L2 almacena esta línea de datos en el conjunto socio. La lógica MRU es entonces actualizada para indicar que el conjunto menos utilizado recientemente en forma previa es ahora el conjunto más utilizado recientemente, etapa 585.
La figura 6 es un diagrama de bloques de un subsistema de memoria caché en una realización alternativa de la presente invención. La realización mostrada en la figura 6 es similar a la realización mostrada en la figura 4, no obstante, la información de estado para cada conjunto dentro de la matriz de conjuntos se almacena en la misma cápsula del CI que la caché L2 603, en lugar de hacerlo en la misma cápsula del CI que la CPU 602. La figura 6 muestra la CPU 602 y la caché L2 603, separadas por la línea de
delimitación 601.
La CPU 602 incluye un bus interno 604, una unidad de ejecución de instrucciones 605, y una caché L1 y el controlador 606. La operación de estos componentes es tal como se ha expuesto anteriormente con referencia a la figura 4. La CPU 602 incluye también la lógica 607, la cual es similar a la lógica MRU 407 de la figura 4. No obstante, la lógica MRU 607 determina si se cambia el bit más significativo del índice de conjuntos recibido de la caché L1 606, y también cambiar el bit más significativo, si es necesario, para obtener el índice del conjunto primario. Así pues, la parte del índice de conjuntos de la dirección 620, que es introducido en la caché L2 603 de la lógica MRU 607, contiene el índice del conjunto del conjunto primario (es decir, el conjunto utilizado más recientemente). Tal como se expuso anteriormente con referencia a la dirección 420 de la figura 4, la dirección 620 de la figura 6 comprende 32 bits. Los bits [31:15] son el campo de la etiqueta de la dirección, los bits [14:5] son el índice del conjunto, y los bits [4:0] son el desplazamiento de la línea caché.
Cada conjunto de la matriz de conjuntos 622 incluye un campo de etiqueta y un campo de estado. La matriz de conjuntos 622 está indexada por los bits [14:5] de la dirección 620, en la que la información de la etiqueta y la información de estado del conjunto indexado son introducidas en la lógica de comparación de etiquetas 626 y en la lógica de comparación de estados 627, respectivamente. La lógica de comparación de etiquetas 626 compara la etiqueta del conjunto indexado con la etiqueta de la dirección 629, y da salida al resultando a la lógica de control 628. De forma similar, la lógica de comparación de estados 627 determina el estado del conjunto indexado, y da salida a esta información hacia la lógica de control 628. La lógica de comparación de estado 627 indica que el conjunto se encuentra bien en el estado directo, en el estado pareado o en el estado prestado.
La lógica de control 628 recibe como entrada el resultado de la comparación de etiquetas de la lógica de comparación de etiquetas 626, y el estado del conjunto indexado desde la lógica de comparación de estados 627. Basándose en esta información, la lógica de control 628 determina si la petición de la unidad de ejecución 605 acierta o falla en la caché L2 603.
La lógica de control 628 retorna bien una indicación de acierto o una indicación de fallo a la unidad de ejecución 605, dependiendo del resultado de la lógica de comparación de etiquetas 626, y el estado del conjunto indexado según lo recibido de la lógica de comparación de estado 627. Se observará que si el estado del conjunto indexado es el estado pareado, entonces puede ser necesario tener acceso al conjunto primario y el conjunto socio por la lógica de control 628. Si se tiene acceso a ambos conjuntos por la lógica de control 628, y si se retorna una indicación de acierto o de fallo a la unidad de ejecución 605, es lo que se expondrá con más detalle más adelante con referencia a las figuras 7A y 7B.
En una realización de la presente invención, la lógica de control 628 recupera cualesquiera líneas de datos necesarias de la memoria del sistema. En una realización alternativa, la caché L1 y el controlador 606 recuperan cualesquiera líneas de datos necesarias de la memoria del sistema. En otra realización alternativa, la unidad de ejecución 605 recupera cualesquiera líneas de datos necesarias a partir de la memoria del sistema.
Las figuras 7A y 7B muestran las etapas seguidas por una realización de la presente invención al operar en el subsistema de memoria caché de la figura 6. Se emite inicialmente una petición desde la unidad de ejecución en el procesador, etapa 705. Esta petición de información es una petición para una línea de datos, o una línea caché, y puede comprender información de instrucciones o información de datos para el uso del procesador. En una implementación de la presente invención, esta petición es una dirección.
La petición de la unidad de ejecución es introducida tanto en la caché L1, etapa 706, como en la lógica MRU, etapa 708. El acceso a la lógica MRU en la etapa 708 indica el conjunto primario (es decir, el conjunto utilizado más recientemente) del conjunto indexado en la caché L2, el cual se emplea por la presente invención si fuera necesario de la forma expuesta más adelante. Al recibir la petición de la unidad de ejecución, la caché L1 determina si la petición acierta en la caché L1, etapa 710. Si la petición acierta en la caché L1, entonces la línea caché solicitada es retornada a la unidad de ejecución desde la caché L1, etapa 712.
Si la petición falla en la caché L1, entonces la lógica de comparación de etiquetas determina si las etiquetas del conjunto primario y la petición coinciden, etapa 715. Esto se ejecuta según se ha expuesto anteriormente, mediante la comparación del campo de la etiqueta de la petición de la unidad de ejecución con el campo de la etiqueta de conjunto primario dentro de la matriz de conjuntos de la caché L2. Si coinciden las etiquetas, entonces la línea caché solicitada es retornada a la unidad de ejecución desde la caché L2, etapa 720.
No obstante, si las etiquetas no coinciden, entonces la lógica de control dentro de la caché L2 determina si el conjunto primario se encuentra en estado prestado, etapa 725. Si el conjunto primario se encuentra en estado prestado, entonces la petición falla en la caché L2. Así pues, la línea de datos solicitada es recuperada de la memoria del sistema perteneciente al sistema del ordenador, etapa 730. Esta línea de datos es retornada tanto a la unidad de ejecución como a la caché L2, etapa 735. La línea de datos recuperada de la memoria del sistema es almacenada en la matriz de datos de la caché L2, que corresponde al conjunto indexado por la petición original de la unidad de ejecución (es decir, el conjunto primario). El estado del conjunto primario es actualizado entonces al estado directo, y el estado del conjunto socio es actualizado también al estado directo, etapa 740. En una implementación de la presente invención, la línea de datos se almacena también en la caché L1 y en el
controlador.
Retornando a la etapa 725, si el conjunto primario no se encuentra en estado prestado, entonces se efectúa una determinación para comprobar si el conjunto primario está en estado directo, etapa 745 de la figura 7B. Si el conjunto primario está en estado directo, entonces la línea de datos solicitada es recuperada de la memoria del sistema, etapa 750. Esta línea de datos es retornada entonces a la unidad de ejecución y almacenada en el conjunto socio en la caché L2, etapa 755. En una implementación, la línea de datos es almacenada también en la caché L1. La lógica MRU para el conjunto primario es actualizada entonces para indicar que el conjunto socio es el conjunto utilizado más recientemente, etapa 760. La lógica MRU es actualizada según se expuso anteriormente con referencia a las figuras 5A y 5B. El estado del conjunto primario es actualizado entonces al estado pareado, y el estado del conjunto socio es actualizado al estado prestado , etapa 765.
Volviendo a la etapa 745, si el conjunto socio no se encuentra en el estado directo ni en el estado prestado, entonces tiene que estar en el estado pareado. Puesto que ya se efectuó una determinación para comprobar si la petición acertó en el conjunto primario en la etapa 715, se efectúa ahora una determinación para ver si la petición acierta en el conjunto socio, etapa 770 (es decir, si coinciden las etiquetas del conjunto socio y de la petición). Si las etiquetas no coinciden, entonces la línea caché solicitada es retornada de la caché L2 a la unidad de ejecución, etapa 775. La lógica MRU es entonces actualizada, para indicar que el conjunto socio es el conjunto utilizado más recientemente 780. La lógica MRU es actualizada según se ha expuesto anteriormente con referencia a las figuras 5A y 5B.
No obstante, si las etiquetas no coinciden, entonces la línea de datos solicitada es recuperada de la memoria del sistema, etapa 785. Esta línea de datos es retornada a la unidad de ejecución y almacenada en el conjunto socio en la caché L2, etapa 790. En una implementación, la línea de datos es almacenada también en la caché L1. La lógica MRU es entonces actualizada para indicar que el conjunto socio es el conjunto utilizado más recientemente, etapa 780, según se expuso anteriormente.
La figura 8 es un diagrama de bloques de un subsistema de memoria caché en otra realización de la presente invención. El subsistema de memoria caché de la figura 8 es similar al sistema de la figura 6, incluyendo una CPU 802 y una caché L2 803 separada por la línea de delimitación 801. La CPU 802 incluye un bus interno 804, una unidad de ejecución de instrucciones 805, y la caché L1 y el controlador 806. La operación de estos componentes es según lo expuesto anteriormente, con referencia a las figuras 4 y 6. Se observará, no obstante, que la CPU 802 no incluye la lógica MRU análoga a la lógica MRU 607 de la figura 6. La realización de la figura 8 asegura que el conjunto utilizado más recientemente es el conjunto primario, mediante el intercambio de las líneas caché cuando sea necesario, según lo expuesto con más detalle más adelante.
La caché L2 803 es similar a la caché L2 603 de la figura 6. La caché L2 803 incluye una matriz de conjuntos 822, matriz de datos 824, lógica de comparación de etiquetas 826, lógica de comparación de estados 827, y la lógica de control 828, análoga a la caché L2 603 de la figura 6. La lógica de comparación de etiquetas 826 compara el campo de la etiqueta de la petición 820 con el campo de la etiqueta del conjunto indexado de la matriz de conjuntos 822 y da salida del resultado hacia la lógica de control 828. De forma similar, la lógica de comparación de estados 827 determina el estado del conjunto indexado en la matriz de conjuntos 822, y da salida del resultado hacia la lógica de control 828. En la realización de la figura 8, el conjunto primario es el conjunto indexado por la petición de la unidad de ejecución 805, sin ninguna modificación basándose en la lógica MRU.
La caché L2 803 incluye también la lógica de intercambio 830, que está acoplada a la lógica de control 828, matriz de conjunto 822 y matriz de datos 824. En la realización de la figura 8, el conjunto utilizado más recientemente se mantiene siempre en el conjunto que esté en estado pareado. Así pues, no se precisa ningún indicador MRU adicional tal como el mapa de bits para determinar cual es el conjunto utilizado más recientemente.
La lógica de intercambio 830 incluye la lógica de control de intercambio 831, la memoria temporal de la matriz de conjuntos 832, y la memoria temporal de la matriz de datos 833. La memoria temporal de la matriz de conjuntos 832 es una memoria temporal que es una posición de almacenamiento temporal para el campo de la etiqueta y para otros datos almacenados en un conjunto de la matriz de conjuntos 822. La memoria temporal de la matriz de datos 833 es una memoria temporal que es una posición de almacenamiento temporal para la línea caché almacenada en un elemento de la matriz de datos 824. La lógica de control de intercambio 831 controla la transferencia de la información desde la matriz de conjuntos 822 y matriz de datos 824 desde un conjunto a otro conjunto. La lógica de intercambio 820 conmuta dos conjuntos cuando esté indicado para hacerlo así por la lógica de control 828. Esto puede tener lugar en dos situaciones. La primera es cuando el conjunto indexado se encuentra en el estado directo, pero la petición falla en la caché. En esta situación, la línea solicitada es recuperada de la memoria del sistema y almacenada en el conjunto socio de la caché L2 803. El conjunto socio y el conjunto indexado son entonces intercambiados según se expone como más detalle más adelante con referencia a las figuras 9A y 9B. De forma similar, si el conjunto indexado se encuentra en estado pareado, y la petición falla en el conjunto primario, la línea caché es recuperada de la memoria del sistema en el conjunto socio y tiene lugar un intercambio, o bien la petición acierta en el conjunto socio, en cuyo caso el conjunto socio es el más utilizado recientemente y entonces tiene lugar un intercambio. Esto se expone con más detalle con referencia a las figuras 9A y 9B.
Las figuras 9A y 9B muestran las etapas seguidas por una realización de la presente invención al operar el subsistema de la memoria caché de la figura 8. Se emite una petición originalmente desde la unidad de ejecución en el procesador, etapa 905. En una implementación de la presente invención, esta petición es de la forma de una dirección. Basándose en esta petición, se tiene acceso a la caché L1, etapa 908. Si la petición acierta en la caché L1, etapa 910, entonces la línea caché solicitada es retornada a la unidad de ejecución desde la caché L1, etapa 912.
No obstante, si la petición falla en la caché L1, entonces la petición es enviada a la caché L2, y la lógica de comparación de etiquetas determina si coinciden las etiquetas de la petición y del conjunto primario, etapa 915. Si las etiquetas coinciden, entonces la petición acierta en la caché L2, y la línea caché solicitada es retornada desde la caché L2 a la unidad de ejecución, etapa 917. No obstante, si las etiquetas no coinciden, entonces la caché L2 examina el estado del conjunto primario.
La lógica de comparación de estados determina si el conjunto primario se encuentra en estado prestado, etapa 920. Si el conjunto primario se encuentra en el estado prestado, entonces la línea de datos es recuperada de la memoria del sistema, etapa 925. La línea de datos es retornada entonces a la unidad de ejecución de la caché L2, etapa 930. En una implementación, la línea de datos es almacenada también en la caché L1. La caché L2 almacena esta línea de datos en el conjunto primario, y actualiza el estado del conjunto primario y del conjunto socio al estado directo,
etapa 935.
Volviendo a la etapa 920, si el conjunto primario no está en el estado prestado, entonces la lógica de comparación de estados determina si el conjunto se encuentra en estado directo, etapa 940 de la figura 9B. Si el conjunto primario está en el estado directo, entonces la línea de datos es recuperada desde la memoria del sistema, etapa 945. La línea de datos es retornada entonces a la unidad de ejecución y almacenada también en el conjunto socio en la caché L2, etapa 950. En una implementación, la línea de datos es almacenada también en la caché L1. La lógica de intercambio dentro de la caché L2 intercambia entonces las líneas entre el conjunto primario y el conjunto socio, etapa 955. El estado del conjunto primario es entonces actualizado al estado pareado, y el estado del conjunto socio se actualiza al estado prestado, etapa 960. Así pues, puede verse que mediante la recuperación de la línea de datos de la memoria del sistema en el conjunto socio e intercambiando entonces el conjunto socio y el conjunto primario, el conjunto primario contiene la línea caché utilizada más recientemente.
La lógica de control de intercambio intercambia las líneas del conjunto primario y del conjunto socio mediante la conmutación de las dos líneas de datos en la matriz de datos, así como también las etiquetas asociadas (y cualesquiera otros bits de paridad) de la matriz de conjuntos. Se observará que la información de estado almacenada en la matriz de conjuntos no está conmutada. Este intercambio puede ejecutarse en cualquiera de una amplia variedad de formas convencionales. Por ejemplo, en una implementación de la presente invención, la información en las matrices de datos y conjuntos del conjunto primario a intercambiar, se transfiere desde las dos matrices a memorias temporales dentro de la lógica de control de intercambio. La información en las matrices de datos y conjuntos del conjunto socio a intercambiar, se transfiere entonces al conjunto primario de las matrices. La información almacenada en las memorias temporales de intercambio es transferida entonces al conjunto socio de las matrices, conmutando por tanto los datos y la información contenidos en los conjuntos primario y socio.
Volviendo a la etapa 940, si el conjunto primario no está en estado directo, entonces la lógica de comparación de etiquetas determina si coinciden las etiquetas de la petición y del conjunto socio, etapa 965. Si coinciden las etiquetas, entonces la línea caché solicitada es retornada desde el conjunto socio a la unidad de ejecución, etapa 970. La lógica de control de intercambio dentro de la caché L2 efectúa entonces el intercambio de la línea en el conjunto primario y en el conjunto socio, etapa 975. Así pues, el conjunto primario permanece en estado pareado, y el conjunto socio permanece en estado prestado, en que el conjunto primario contiene la línea caché utilizada más recientemente.
Volviendo a la etapa 965, si las etiquetas no coinciden, entonces la línea de datos solicitada es recuperada de la memoria del sistema, etapa 980. La línea de datos solicitada es recuperada de la memoria del sistema y retornada a la unidad de ejecución y almacenada en el conjunto socio en la caché L2, etapa 985. En una implementación, la línea de datos se almacena también en la caché L1. La lógica de control de intercambio dentro de la caché L2 intercambia entonces las líneas del conjunto primario y del conjunto socio, etapa 975.
Así pues, en la realización mostrada en las figuras 9A y 9B puede observarse que la petición falla tanto en el conjunto primario como en el conjunto socio, en que la línea de datos es recuperada de la memoria del sistema, almacenada en el conjunto socio del conjunto indexado, e intercambiándose entonces las líneas caché de los conjuntos primario y socio. Así pues, el conjunto primario permanece en estado pareado, el conjunto socio permanece en estado prestado, y el conjunto primario contiene la línea caché utilizada más recientemente.
En una realización alternativa de la presente invención, la caché L2 almacena las líneas de datos de la memoria del sistema directamente en el conjunto primario, en lugar del conjunto socio tal como se expuso anteriormente. Mediante el almacenamiento de las líneas de datos en el conjunto primario, la caché L2 evita el intercambio de los conjuntos primario y socio.
Se observará que aunque las descripciones anteriores no exponen la actualización de la caché L1 cuando la petición falla en la caché L1 sino que acierta en la caché L2, la línea caché que acierta en la caché 2 puede ser almacenada en la caché L1 además de ser retornada a la unidad de ejecución de instrucciones de la CPU. Si la caché L1 se actualiza en esta situación depende de la política de la caché utilizada, tal como se comprenderá por aquellos técnicos especializados en el arte.
Se observará también que las descripciones anteriores exponen un sistema de ordenador que tiene la caché L1 y la caché L2. No obstante, se comprenderá que los sistemas que tienen solo una caché pueden utilizar la memoria caché de la presente invención.
De forma similar, las descripciones anteriores exponen la memoria caché de la presente invención según se implementa en la caché L2. No obstante, se observará que las enseñanzas de la presente invención son aplicables a una caché de cualquier nivel, y no específicamente limitada a las cachés L2. Por ejemplo, un sistema que tenga solo una caché L1 sería implementado tal como se ha expuesto anteriormente, aunque la petición de la unidad de ejecución de instrucciones se comprobará para ver si acierta en solo una caché en lugar de hacerlo en dos cachés. Se comprenderá por aquellos técnicos especializados en el arte que cuando se utiliza la presente invención en una caché L1, que la información MRU no está disponible desde el indicador MRU simultáneamente con la dirección introducida en la caché.
Adicionalmente, las descripciones anteriores describen una memoria caché que transfiere una línea caché a la memoria del sistema cuando una línea de datos necesita ser traída desde la memoria del sistema. No obstante, pueden utilizarse otras políticas de la caché dentro del espíritu y alcance de la presente invención. Por ejemplo, en una realización de la presente invención, cuando una línea caché se actualiza en la memoria caché, la línea caché puede ser actualizada también en la memoria del sistema. Así pues, no tiene lugar transferencia alguna de la línea caché cuando se transfiere una línea de datos en dicha posición caché, porque la memoria del sistema ya contiene una copia de la línea caché.
Así pues, el subsistema de la memoria caché de la presente invención proporciona las ventajas de tanto una memoria caché de mapeado directo como una memoria caché de asociación de conjuntos bilateral. El menor consumo de energía y la complejidad lógica de la memoria caché de mapeado directo se combinan con las mejores tasas de aciertos de la memoria caché de asociación de conjuntos bilateral. Además de ello, en una realización de la presente invención, pueden determinarse ciertas peticiones pueden ser determinadas como fallos en la caché sin tener que acceder a la cápsula del CI que contiene la caché, incrementándose así la velocidad de la respuesta de la indicación de fallo.
Además de ello, se comprenderá por los técnicos especializados en el arte que aunque las descripciones anteriores exponen una caché que puede comportarse como una caché de dos vías, otras cachés de múltiples vías se encuentran dentro del espíritu y alcance de la presente invención. Por ejemplo, las enseñanzas de la presente invención pueden ser aplicadas a una caché de dos vías convencionales, creándose por tanto una caché de cuatro vías, que combina las ventajas de una caché de dos vías y las de una caché de cuatro vías.
Mientras que muchas alteraciones y modificaciones de la presente invención serán comprendidas por un técnico especializado en el arte después de leer la descripción anterior, se comprenderá que las realizaciones mostradas en particular, y que se han descrito a modo de ilustración, no tienen por objeto que sean consideradas como una limitación. En consecuencia, las referencias a los detalles de las realizaciones en particular no tienen por objeto el limitar el alcance de las reivindicaciones, los cuales en sí exponen aquellas características consideradas como esenciales para la invención.
Así pues, se ha descrito una memoria caché de asociación de conjuntos bilateral.

Claims (6)

1. Un índice de memoria caché para indicar si una línea de datos direccionada por una dirección de entrada está contenida en una matriz de datos (221) de un sistema de memoria caché, en el que la matriz de datos mencionada (221) comprende una pluralidad de elementos, comprendiendo el índice de memoria caché (201):
una pluralidad de conjuntos de datos, correspondiendo cada conjunto de datos a uno o más elementos de la mencionada matriz de datos (221);
un primer conjunto de la mencionada pluralidad de conjuntos de datos que tiene una primera etiqueta y un primer estado;
una mencionada primera etiqueta que indica la identidad de una primera línea caché almacenada en un primer elemento de la mencionada pluralidad de elementos de la mencionada matriz de datos (221);
caracterizado porque:
el mencionado primer estado comprende un primer indicador de estado que indica un número de líneas caché que están asociadas con el mencionado primer conjunto, en el que el mencionado primer estado en un estado directo indica una sola línea que está correlacionada con el mencionado primer conjunto, estando el mencionado primer estado en un estado pareado indicando tanto una primera línea como una segunda línea que están correlacionadas dentro del mencionado primer conjunto, y el mencionado primer estado estando en una estado prestado que indica que no existen líneas correlacionadas con el mencionado primer conjunto.
2. Un índice de memoria caché de la reivindicación 1, que comprende además un segundo conjunto, en el que el mencionado segundo conjunto es uno de la mencionada pluralidad de conjuntos de datos, incluyendo el mencionado segundo conjunto una segunda etiqueta y un segundo estado.
3. Un índice de memoria caché de la reivindicación 2, en el que una primera línea y una segunda línea están correlacionadas dentro del mencionado primer conjunto, en el que la mencionada primera etiqueta hace referencia a la mencionada primera línea, y la mencionada segunda etiqueta hace referencia a la mencionada segunda línea.
4. Un índice de memoria caché de la reivindicación 1, en el que el mencionado índice de la memoria caché (201) comprende una matriz de etiquetas y una matriz de estados.
5. Un subsistema de memoria caché que incluye un índice de memoria caché (201) según una de las reivindicaciones 1-4.
6. Un ordenador que incluye un subsistema de memoria caché según la reivindicación 5.
ES95928310T 1994-08-11 1995-08-04 Memoria cahce de asociacion de conjuntos bilateral. Expired - Lifetime ES2201114T3 (es)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US288923 1994-08-11
US08/288,923 US5548742A (en) 1994-08-11 1994-08-11 Method and apparatus for combining a direct-mapped cache and a multiple-way cache in a cache memory

Publications (1)

Publication Number Publication Date
ES2201114T3 true ES2201114T3 (es) 2004-03-16

Family

ID=23109244

Family Applications (1)

Application Number Title Priority Date Filing Date
ES95928310T Expired - Lifetime ES2201114T3 (es) 1994-08-11 1995-08-04 Memoria cahce de asociacion de conjuntos bilateral.

Country Status (10)

Country Link
US (1) US5548742A (es)
EP (1) EP0775345B1 (es)
JP (1) JPH10504124A (es)
KR (1) KR100382821B1 (es)
AU (2) AU701467B2 (es)
DE (1) DE69530776T2 (es)
ES (1) ES2201114T3 (es)
GB (1) GB2292237A (es)
TW (1) TW275689B (es)
WO (1) WO1996006390A2 (es)

Families Citing this family (69)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07271672A (ja) * 1994-03-30 1995-10-20 Toshiba Corp マルチウェイセットアソシアティブキャッシュシステム
US6170047B1 (en) 1994-11-16 2001-01-02 Interactive Silicon, Inc. System and method for managing system memory and/or non-volatile memory using a memory controller with integrated compression and decompression capabilities
US6002411A (en) * 1994-11-16 1999-12-14 Interactive Silicon, Inc. Integrated video and memory controller with data processing and graphical processing capabilities
US7190284B1 (en) 1994-11-16 2007-03-13 Dye Thomas A Selective lossless, lossy, or no compression of data based on address range, data type, and/or requesting agent
US5893146A (en) * 1995-08-31 1999-04-06 Advanced Micro Design, Inc. Cache structure having a reduced tag comparison to enable data transfer from said cache
US5794243A (en) * 1995-12-11 1998-08-11 International Business Machines Corporation Method and apparatus for executing a binary search in a data cache
US5710905A (en) * 1995-12-21 1998-01-20 Cypress Semiconductor Corp. Cache controller for a non-symetric cache system
US5943691A (en) * 1995-12-27 1999-08-24 Sun Microsystems, Inc. Determination of array padding using collision vectors
US5845308A (en) * 1995-12-27 1998-12-01 Vlsi Technology, Inc. Wrapped-line cache for microprocessor system
US5918245A (en) * 1996-03-13 1999-06-29 Sun Microsystems, Inc. Microprocessor having a cache memory system using multi-level cache set prediction
ES2128938B1 (es) * 1996-07-01 2000-02-01 Univ Catalunya Politecnica Procedimiento para determinar en que via de una memoria rapida intermedia en la jerarquia de memoria de un computador (cache) asociativa por conjuntos de dos vias se encuentra un dato concreto.
US5974471A (en) * 1996-07-19 1999-10-26 Advanced Micro Devices, Inc. Computer system having distributed compression and decompression logic for compressed data movement
US5916314A (en) * 1996-09-11 1999-06-29 Sequent Computer Systems, Inc. Method and apparatus for cache tag mirroring
US6078995A (en) * 1996-12-26 2000-06-20 Micro Magic, Inc. Methods and apparatus for true least recently used (LRU) bit encoding for multi-way associative caches
US6879266B1 (en) 1997-08-08 2005-04-12 Quickshift, Inc. Memory module including scalable embedded parallel data compression and decompression engines
US5956746A (en) * 1997-08-13 1999-09-21 Intel Corporation Computer system having tag information in a processor and cache memory
US6247094B1 (en) 1997-12-22 2001-06-12 Intel Corporation Cache memory architecture with on-chip tag array and off-chip data array
JP3732637B2 (ja) 1997-12-26 2006-01-05 株式会社ルネサステクノロジ 記憶装置、記憶装置のアクセス方法及び半導体装置
US6321375B1 (en) * 1998-05-14 2001-11-20 International Business Machines Corporation Method and apparatus for determining most recently used method
US7219217B1 (en) 1998-10-16 2007-05-15 Intel Corporation Apparatus and method for branch prediction utilizing a predictor combination in parallel with a global predictor
US6425056B2 (en) * 1998-10-26 2002-07-23 Micron Technology, Inc. Method for controlling a direct mapped or two way set associative cache memory in a computer system
US6145069A (en) * 1999-01-29 2000-11-07 Interactive Silicon, Inc. Parallel decompression and compression system and method for improving storage density and access speed for non-volatile memory and embedded memory devices
US6208273B1 (en) 1999-01-29 2001-03-27 Interactive Silicon, Inc. System and method for performing scalable embedded parallel data compression
US7129860B2 (en) * 1999-01-29 2006-10-31 Quickshift, Inc. System and method for performing scalable embedded parallel data decompression
US6819271B2 (en) 1999-01-29 2004-11-16 Quickshift, Inc. Parallel compression and decompression system and method having multiple parallel compression and decompression engines
US6822589B1 (en) 1999-01-29 2004-11-23 Quickshift, Inc. System and method for performing scalable embedded parallel data decompression
US7538694B2 (en) * 1999-01-29 2009-05-26 Mossman Holdings Llc Network device with improved storage density and access speed using compression techniques
US6885319B2 (en) * 1999-01-29 2005-04-26 Quickshift, Inc. System and method for generating optimally compressed data from a plurality of data compression/decompression engines implementing different data compression algorithms
US6581139B1 (en) * 1999-06-24 2003-06-17 International Business Machines Corporation Set-associative cache memory having asymmetric latency among sets
KR100373849B1 (ko) * 2000-03-13 2003-02-26 삼성전자주식회사 어소시어티브 캐시 메모리
US6523102B1 (en) 2000-04-14 2003-02-18 Interactive Silicon, Inc. Parallel compression/decompression system and method for implementation of in-memory compressed cache improving storage density and access speed for industry standard memory subsystems and in-line memory modules
US6857049B1 (en) * 2000-08-30 2005-02-15 Unisys Corporation Method for managing flushes with the cache
US7685372B1 (en) 2005-01-13 2010-03-23 Marvell International Ltd. Transparent level 2 cache controller
US8347034B1 (en) * 2005-01-13 2013-01-01 Marvell International Ltd. Transparent level 2 cache that uses independent tag and valid random access memory arrays for cache access
US7475192B2 (en) * 2005-07-12 2009-01-06 International Business Machines Corporation Cache organization for power optimized memory access
CN101449256B (zh) 2006-04-12 2013-12-25 索夫特机械公司 对载明并行和依赖运算的指令矩阵进行处理的装置和方法
US8677105B2 (en) 2006-11-14 2014-03-18 Soft Machines, Inc. Parallel processing of a sequential program using hardware generated threads and their instruction groups executing on plural execution units and accessing register file segments using dependency inheritance vectors across multiple engines
US20090157968A1 (en) * 2007-12-12 2009-06-18 International Business Machines Corporation Cache Memory with Extended Set-associativity of Partner Sets
US8327040B2 (en) * 2009-01-26 2012-12-04 Micron Technology, Inc. Host controller
EP3156896B1 (en) 2010-09-17 2020-04-08 Soft Machines, Inc. Single cycle multi-branch prediction including shadow cache for early far branch prediction
CN108376097B (zh) 2011-03-25 2022-04-15 英特尔公司 用于通过使用由可分割引擎实例化的虚拟核来支持代码块执行的寄存器文件段
CN103635875B (zh) 2011-03-25 2018-02-16 英特尔公司 用于通过使用由可分区引擎实例化的虚拟核来支持代码块执行的存储器片段
CN103547993B (zh) 2011-03-25 2018-06-26 英特尔公司 通过使用由可分割引擎实例化的虚拟核来执行指令序列代码块
EP2710481B1 (en) 2011-05-20 2021-02-17 Intel Corporation Decentralized allocation of resources and interconnect structures to support the execution of instruction sequences by a plurality of engines
US9442772B2 (en) 2011-05-20 2016-09-13 Soft Machines Inc. Global and local interconnect structure comprising routing matrix to support the execution of instruction sequences by a plurality of engines
KR101832679B1 (ko) 2011-11-22 2018-02-26 소프트 머신즈, 인크. 마이크로프로세서 가속 코드 최적화기
CN104040490B (zh) 2011-11-22 2017-12-15 英特尔公司 用于多引擎微处理器的加速的代码优化器
US8930674B2 (en) 2012-03-07 2015-01-06 Soft Machines, Inc. Systems and methods for accessing a unified translation lookaside buffer
US8966327B1 (en) * 2012-06-21 2015-02-24 Inphi Corporation Protocol checking logic circuit for memory system reliability
US9710399B2 (en) * 2012-07-30 2017-07-18 Intel Corporation Systems and methods for flushing a cache with modified data
US9916253B2 (en) 2012-07-30 2018-03-13 Intel Corporation Method and apparatus for supporting a plurality of load accesses of a cache in a single cycle to maintain throughput
US9229873B2 (en) 2012-07-30 2016-01-05 Soft Machines, Inc. Systems and methods for supporting a plurality of load and store accesses of a cache
US9740612B2 (en) 2012-07-30 2017-08-22 Intel Corporation Systems and methods for maintaining the coherency of a store coalescing cache and a load cache
US9430410B2 (en) 2012-07-30 2016-08-30 Soft Machines, Inc. Systems and methods for supporting a plurality of load accesses of a cache in a single cycle
US9678882B2 (en) 2012-10-11 2017-06-13 Intel Corporation Systems and methods for non-blocking implementation of cache flush instructions
US9886279B2 (en) 2013-03-15 2018-02-06 Intel Corporation Method for populating and instruction view data structure by using register template snapshots
WO2014150971A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for dependency broadcasting through a block organized source view data structure
US9904625B2 (en) 2013-03-15 2018-02-27 Intel Corporation Methods, systems and apparatus for predicting the way of a set associative cache
US9811342B2 (en) 2013-03-15 2017-11-07 Intel Corporation Method for performing dual dispatch of blocks and half blocks
US10275255B2 (en) 2013-03-15 2019-04-30 Intel Corporation Method for dependency broadcasting through a source organized source view data structure
CN105210040B (zh) 2013-03-15 2019-04-02 英特尔公司 用于执行分组成块的多线程指令的方法
US9569216B2 (en) 2013-03-15 2017-02-14 Soft Machines, Inc. Method for populating a source view data structure by using register template snapshots
WO2014150991A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for implementing a reduced size register view data structure in a microprocessor
EP2972836B1 (en) 2013-03-15 2022-11-09 Intel Corporation A method for emulating a guest centralized flag architecture by using a native distributed flag architecture
US10140138B2 (en) 2013-03-15 2018-11-27 Intel Corporation Methods, systems and apparatus for supporting wide and efficient front-end operation with guest-architecture emulation
WO2014150806A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for populating register view data structure by using register template snapshots
US9891924B2 (en) 2013-03-15 2018-02-13 Intel Corporation Method for implementing a reduced size register view data structure in a microprocessor
US9582430B2 (en) * 2015-03-27 2017-02-28 Intel Corporation Asymmetric set combined cache
KR102017135B1 (ko) * 2017-11-21 2019-09-02 주식회사 한화 멀티코어 캐시를 이용한 해싱 처리 장치 및 그 방법

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4631660A (en) * 1983-08-30 1986-12-23 Amdahl Corporation Addressing system for an associative cache memory
DE3751642T2 (de) * 1986-10-17 1996-09-05 Amdahl Corp Verwaltung von getrennten Befehls- und Operanden-Cachespeichern
US5257360A (en) * 1990-03-23 1993-10-26 Advanced Micro Devices,Inc. Re-configurable block length cache
CA2044689A1 (en) * 1990-06-15 1991-12-16 Roger E. Tipley Multilevel inclusion in multilevel cache hierarchies
DE69127773T2 (de) * 1990-06-15 1998-04-02 Compaq Computer Corp Vorrichtung zur echten LRU-Ersetzung
GB2256512B (en) * 1991-06-04 1995-03-15 Intel Corp Second level cache controller unit and system
US5228134A (en) * 1991-06-04 1993-07-13 Intel Corporation Cache memory integrated circuit for use with a synchronous central processor bus and an asynchronous memory bus
US5367659A (en) * 1991-09-30 1994-11-22 Intel Corporation Tag initialization in a controller for two-way set associative cache
US5353425A (en) * 1992-04-29 1994-10-04 Sun Microsystems, Inc. Methods and apparatus for implementing a pseudo-LRU cache memory replacement scheme with a locking feature
US5392414A (en) * 1992-06-30 1995-02-21 Sun Microsystems, Inc. Rapid data retrieval from data storage structures using prior access predictive annotations
WO1994003856A1 (en) * 1992-08-07 1994-02-17 Massachusetts Institute Of Technology Column-associative cache

Also Published As

Publication number Publication date
EP0775345B1 (en) 2003-05-14
US5548742A (en) 1996-08-20
WO1996006390A3 (en) 1996-05-09
DE69530776D1 (de) 2003-06-18
EP0775345A4 (en) 1997-07-16
EP0775345A2 (en) 1997-05-28
AU1799195A (en) 1996-02-22
KR100382821B1 (ko) 2003-07-18
JPH10504124A (ja) 1998-04-14
AU3212795A (en) 1996-03-14
KR960008546A (ko) 1996-03-22
TW275689B (es) 1996-05-11
GB2292237A (en) 1996-02-14
GB9510677D0 (en) 1995-07-19
WO1996006390A2 (en) 1996-02-29
DE69530776T2 (de) 2004-03-25
AU701467B2 (en) 1999-01-28

Similar Documents

Publication Publication Date Title
ES2201114T3 (es) Memoria cahce de asociacion de conjuntos bilateral.
US5832534A (en) Method and apparatus for maintaining cache coherency using a single controller for multiple cache memories
EP0253824B1 (en) Paged memory management unit capable of selectively supporting multiple address spaces
US6401174B1 (en) Multiprocessing computer system employing a cluster communication error reporting mechanism
US5809524A (en) Method and apparatus for cache memory replacement line identification
US6918015B2 (en) Scalable directory based cache coherence protocol
US6195729B1 (en) Deallocation with cache update protocol (L2 evictions)
US5113514A (en) System bus for multiprocessor computer system
US8001330B2 (en) L2 cache controller with slice directory and unified cache structure
US7814292B2 (en) Memory attribute speculation
US4424561A (en) Odd/even bank structure for a cache memory
US4378591A (en) Memory management unit for developing multiple physical addresses in parallel for use in a cache memory
EP0380853A2 (en) Write back buffer with error correcting capabilities
EP1278125A2 (en) Indexing and multiplexing of interleaved cache memory arrays
EP0303661B1 (en) Central processor unit for digital data processing system including write buffer management mechanism
US5966722A (en) Method and apparatus for controlling multiple dice with a single die
US5701503A (en) Method and apparatus for transferring information between a processor and a memory system
JPH09259036A (ja) ライトバックキャッシュおよびライトバックキャッシュ内で整合性を維持する方法
BRPI1005259A2 (pt) vetores simd sincronizadores
JP2002373115A (ja) 共有キャッシュメモリのリプレイスメント制御方法及びその装置
US4392201A (en) Diagnostic subsystem for a cache memory
US7366841B2 (en) L2 cache array topology for large cache with different latency domains
US6591393B1 (en) Masking error detection/correction latency in multilevel cache transfers
KR101123378B1 (ko) 인덱스 검사를 사용하는 저장-로드 포워딩 버퍼
US7308537B2 (en) Half-good mode for large L2 cache array topology with different latency domains