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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0864—Addressing 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.
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é.
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.
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.
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;
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;
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.
figura 8.
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.
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.
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.
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.
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.
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.
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.
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)
| 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)
| 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 |
-
1994
- 1994-08-11 US US08/288,923 patent/US5548742A/en not_active Expired - Lifetime
- 1994-11-10 TW TW083110421A patent/TW275689B/zh not_active IP Right Cessation
-
1995
- 1995-05-11 AU AU17991/95A patent/AU701467B2/en not_active Expired
- 1995-05-25 GB GB9510677A patent/GB2292237A/en not_active Withdrawn
- 1995-06-14 KR KR1019950015723A patent/KR100382821B1/ko not_active Expired - Lifetime
- 1995-08-04 JP JP8508099A patent/JPH10504124A/ja active Pending
- 1995-08-04 EP EP95928310A patent/EP0775345B1/en not_active Expired - Lifetime
- 1995-08-04 ES ES95928310T patent/ES2201114T3/es not_active Expired - Lifetime
- 1995-08-04 DE DE69530776T patent/DE69530776T2/de not_active Expired - Lifetime
- 1995-08-04 AU AU32127/95A patent/AU3212795A/en not_active Abandoned
- 1995-08-04 WO PCT/US1995/009896 patent/WO1996006390A2/en not_active Ceased
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 |