Docsity
Docsity

Prepara tus exámenes
Prepara tus exámenes

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity


Consigue puntos base para descargar
Consigue puntos base para descargar

Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium


Orientación Universidad
Orientación Universidad


Introducccion a la memoria Cache, Apuntes de Introducción a Ingeniería Software

Introducción a la memoria cache explicacion y resumen.

Tipo: Apuntes

2022/2023

Subido el 29/08/2023

brandon-valle-3
brandon-valle-3 🇳🇮

1 documento

1 / 35

Toggle sidebar

Esta página no es visible en la vista previa

¡No te pierdas las partes importantes!

bg1
Arquitectura de Computadores Memoria Caché - 1
Arquitectura de Computadores Memoria Caché - 1
Arquitectura
de Computadores
7. Memoria Caché
1. Fundamento e Introducción
2. Estructura
3. Políticas de Ubicación
4. Políticas de Sustitución
5. Políticas de Escritura
6. Otras Consideraciones
En el capítulo anterior comenzamos a ver cómo mejorar las prestaciones de un ordenador
convencional. Lo hicimos empezando por ver la forma de aumentar el ritmo de ejecución de
instrucciones en la CPU.
Ahora vamos a ocuparnos de cómo mejorar el tiempo de acceso a los datos que están en memoria
principal. Para ello incorporaremos la memoria caché, un nuevo nivel en la jerarquía de memorias
situado entre la CPU y la memoria principal.
Veremos cómo una memoria tan pequeña (en comparación con la memoria principal) puede ser
tan útil, y las maneras en que se puede organizar para aprovecharla de la mejor manera posible.
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23

Vista previa parcial del texto

¡Descarga Introducccion a la memoria Cache y más Apuntes en PDF de Introducción a Ingeniería Software solo en Docsity!

Arquitectura de Computadores Memoria Caché - 1

Arquitectura

de Computadores

7. Memoria Caché

1. Fundamento e Introducción

2. Estructura

3. Políticas de Ubicación

4. Políticas de Sustitución

5. Políticas de Escritura

6. Otras Consideraciones

En el capítulo anterior comenzamos a ver cómo mejorar las prestaciones de un ordenador convencional. Lo hicimos empezando por ver la forma de aumentar el ritmo de ejecución de instrucciones en la CPU.

Ahora vamos a ocuparnos de cómo mejorar el tiempo de acceso a los datos que están en memoria principal. Para ello incorporaremos la memoria caché , un nuevo nivel en la jerarquía de memorias situado entre la CPU y la memoria principal.

Veremos cómo una memoria tan pequeña (en comparación con la memoria principal) puede ser tan útil, y las maneras en que se puede organizar para aprovecharla de la mejor manera posible.

Arquitectura de Computadores Memoria Caché - 2

Memoria Caché Jerarquías de Memoria

  • La CPU/MMU
  • El S. O.
Coste por bit Ð
Capacidad Ï
Tiempo de acceso Ï
Frecuencia de acceso Ð

Registros

Caché N1-N

Memoria Principal

Disco Magnético

Cinta Magnética Disco Óptico

Quién se ocupa del transvase

¿ entre memorias?

Como vimos en el capítulo de la memoria principal, un ordenador debe construirse con diversos niveles de memoria organizados en una jerarquía, de tal manera que se pueda obtener, como conjunto, una memoria de mucha capacidad, rápida y barata.

Recordemos la pirámide de memoria en la que, a medida que se va de arriba hacia abajo, sucede lo siguiente:

  • Disminuye el coste por bit
  • Aumenta la capacidad
  • Aumenta el tiempo de acceso
  • Disminuye la frecuencia de acceso a la memoria desde la CPU

La clave de la solución está en este último punto: la decreciente frecuencia de acceso. Esto simplemente quiere decir que no se accede a todos los datos con la misma frecuencia; obviamente se accede más a los datos del programa en ejecución que a los de uno que no se ejecuta desde hace un año; y de igual manera, en un momento dado se accede más a los datos de una expresión que se está evaluando en ese preciso instante que a otros datos del programa.

En este capítulo vamos a ocuparnos de la memoria caché. Comenzaremos por ver cómo una memoria tan pequeña (en comparación con la memoria principal) puede ser tan útil.

Arquitectura de Computadores Memoria Caché - 4

Memoria Caché …Fundamento

Es muy probable repetir instrucciones (bucles)

Localidad Temporal

Localidad Espacial

Principio de Localidad de Referencia

Es muy probable ejecutar instrucciones cercanas

Unidad de transferencia: BLOQUE

El principio de localidad se manifiesta en dos aspectos: temporal y espacial.

La localidad de referencia temporal se debe a la naturaleza repetitiva de los programas o de porciones de los programas, y significa que, tal y como hemos visto en la página anterior, una instrucción que se acaba de ejecutar recientemente es muy probable que se vuelva a ejecutar en un futuro muy próximo. Ahora, la secuencia detallada de la ejecución de las instrucciones no es significativa, lo que realmente nos importa es que muchas instrucciones localizadas en áreas concretas del programa, debido a los bucles que las encierran, se ejecutan repetidamente durante un periodo de tiempo, mientras que al resto del programa o del resto de la memoria solo se accede muy de vez en cuando.

El aspecto espacial quiere decir que las instrucciones que se encuentran en la proximidad de una instrucción recientemente ejecutada (en cuanto a sus direcciones en memoria) también es muy probable que se ejecuten muy pronto. A los datos u operandos de un programa les sucede lo mismo, no están dispersos por toda la memoria, sino que están agrupados en una zona de la misma, y ocupando direcciones contiguas.

Dado que el tiempo de acceso a la memoria principal es muy costoso y teniendo en cuenta lo que nos dice la localidad espacial, parece conveniente que cuando se accede a ella para obtener un byte o una palabra necesitada por la CPU, en lugar de transferir solamente el dato solicitado por la CPU, se aproveche “el viaje” para transferir, no solamente ese byte o palabra, sino un bloque contiguo de información que contenga dicho byte y unos pocos más que estén en las direcciones cercanas. Así, cuando se utiliza una memoria caché, la unidad de transferencia entre ésta y la memoria principal es el bloque.

El tamaño de un bloque suele ser el ancho del bus de datos o un múltiplo de él, es decir, 2, 4, 8, … bytes.

Arquitectura de Computadores Memoria Caché - 5

Memoria Caché Introducción

CPU (bytes)

Caché (Kbytes)

Memoria Principal (Mbytes)

Bloque

Palabra

El espacio de la memoria principal está dividida en bloques.

El espacio de la memoria caché está dividido en líneas

Un bloque de memoria
principal cabe
exactamente en una
línea de la caché

Conceptualmente el funcionamiento de una memoria caché es muy simple. La circuitería de control de la memoria está diseñada para aprovechar la localidad de referencia. De acuerdo con el aspecto temporal de la localidad de referencia, siempre que un dato se necesita por primera vez, se debe traer a la memoria caché, en la que permanece, de tal forma que cuando se le vuelva a necesitar, se podrá obtener muy rápidamente.

Por su parte, la localidad espacial aconseja que en lugar de traer a la caché solamente el dato referenciado, se traiga el grupo de datos que reside en direcciones adyacentes a dicho dato. En el contexto de las cachés, se emplea el término bloque para referirse a un conjunto de datos con direcciones contiguas que se utiliza como unidad de transferencia entre la memoria principal y la caché. El espacio que tiene una caché para albergar un bloque de memoria principal se denomina línea.

Como se muestra en la figura, cuando se recibe una petición de lectura de la CPU, el contenido del bloque completo de memoria principal que contiene la dirección especificada se transfiere a la caché. Posteriormente, cuando el programa referencia cualquiera de las direcciones del bloque, el contenido correspondiente se lee directamente de la caché (solamente la palabra o parte de la palabra referenciada, no el bloque completo).

Arquitectura de Computadores Memoria Caché - 7

Memoria Caché …Introducción

“Acierto de caché”

C P U → L E C T U R A / E S C R I T U R A

Política de Ubicación (función de correspondencia)

Política de Sustitución

Política de Actualización ¡ Es una escritura!

Si está llena ¿Cuál se sustituye?

“Falta de caché”

No está en la caché

¿Dónde se coloca?

Traer bloque de
memoria principal

Bloque en la caché

Como se muestra en la figura, cuando se recibe una petición de lectura de la CPU, el contenido del bloque completo de memoria principal que contiene la dirección especificada se transfiere a la caché. Posteriormente, cuando el programa referencia cualquiera de las direcciones del bloque, el contenido correspondiente se lee directamente de la caché. Normalmente la memoria caché puede almacenar un número de bloques de memoria que es muy pequeño comparado con el número de bloques de la memoria principal. La correspondencia entre los bloques de la memoria principal y los que se encuentran en la caché se denomina “función de correspondencia”. La función de correspondencia a utilizar se establece mediante la política de ubicación. Cuando la caché está llena, y se referencia una dirección cuyo bloque no está en la caché, el hardware de la caché debe decidir qué bloque deberá ser expulsado para dejar espacio al bloque que se acaba de referenciar. El conjunto de reglas que se utilizan para tomar esta decisión se denominan algoritmos o políticas de sustitución. Obsérvese que la CPU no necesita conocer explícitamente la existencia de la caché, sino que genera una petición de lectura o escritura utilizando direcciones de memoria principal, y la circuitería de la caché determina si la palabra solicitada está o no está en ese momento en la caché. Si está (se dice que se ha producido un acierto de caché), la operación de lectura o escritura se realiza sobre la dirección correspondiente en la caché, y si la operación es de lectura, la memoria principal no se ve implicada en la ejecución. Si la operación es una escritura, la palabra afectada en la memoria caché deberá actualizarse, en algún momento, en la memoria principal, para que el contenido de un bloque en la caché sea idéntico al de su correspondiente en memoria principal. En estos casos, la actualización en memoria principal de los bloques modificados en la caché se realiza según una política de escritura o de actualización. Cuando el dato referenciado por una lectura de la CPU no está en la caché, se produce una falta o fallo de caché. En este caso, el bloque que contiene la palabra referenciada se copia de la memoria principal a la caché, y a continuación, la palabra solicitada se envía a la CPU. Otra opción consiste en enviarle la palabra directamente de la memoria principal a la CPU y al mismo tiempo cargarla en la caché. Esta última técnica, denominada “carga directa” ( load through), aunque reduce el tiempo de espera de la CPU, requiere un hardware más complejo. Más adelante, al comentar las políticas de escritura, veremos las opciones a tomar cuando se produce una falta de caché en una operación de escritura. En la operación de la caché se nos plantean, por tanto, estas tres preguntas: P1 : ¿Dónde situar un bloque en la caché? (Política de ubicación). P2 : ¿Qué bloque reemplazar ante una caché llena? (Política de sustitución). P3 : ¿Qué hacer ante una operación de escritura? (Política de actualización).

Arquitectura de Computadores Memoria Caché - 8

Memoria Caché …Introducción

Efectividad de la Memoria Caché

Tacceso = T (^) C ·P (^) A + T (^) MP · (1 - Pa )

P (^) A : Probabilidad de acierto

T (^) C : Tiempo de acceso a caché

T (^) MP : Tiempo de acceso a M. P.

EJEMPLO

T (^) MP =500 ηs

T (^) C = 50 ηs

P (^) A = 0,

Tacceso = 50 · 0,99 + 500 · 0,01 = 54,5 ηs

¿ Merece la pena la caché?

Tiempo medio de acceso a memoria

Índice de mejora

T sin caché T con caché

= = (^) 9,

Hemos comentado que cuando se hace referencia a una palabra cuyo bloque está en la caché, tenemos un acierto de caché, mientras que si no lo está, se produce una falta de caché.

Ya sabemos que cuando se produce un acierto de caché, el tiempo de acceso a la palabra referenciada es mucho menor que si hubiera que traerla desde memoria principal, pero si se produce una falta de caché, el tiempo de acceso puede ser mayor que en un sistema de memoria sin caché. (Depende de si tiene carga directa o no). Por esto, se debe evaluar el comportamiento o efectividad del diseño de la caché para saber si el tiempo medio de acceso a memoria realmente mejora y justifica la presencia de la memoria caché.

Veamos un ejemplo. Supongamos una memoria principal con un tiempo de acceso de 500 ηs, y una caché con un tiempo de acceso de 50 ηs, y con una tasa de aciertos del 99%.

¿Cuál es el tiempo medio de acceso a memoria en este sistema? ¿Merece la pena la instalación de la memoria caché?

Arriba se muestra la solución.

Para este ejemplo supondremos que cuando se produce una falta de caché, la carga del bloque en la caché se produce al mismo tiempo que se lleva la palabra referenciada a la CPU, es decir , que se realiza con carga directa, con lo que la sobrecarga por el tiempo de carga del bloque resulta nula.

Si dividimos el tiempo medio de acceso sin caché, por el tiempo medio de acceso con caché, se obtiene el índice de mejora, el cual da una idea del orden de magnitud en la mejora del tiempo de acceso.

Arquitectura de Computadores Memoria Caché - 10

Memoria Caché Políticas de Ubicación

Función de correspondencia

Mem. Principal

bloque 0
bloque 1
bloque 2
bloque 3
bloque 4
bloque 5
bloque 6
bloque 7
bl. 16.
bl. 16.
bl. 16.

etiqueta

línea 0
línea 1
linea 2
línea 3
línea 1022
línea 1023

Caché

Ya que hay menos entradas o líneas de caché que bloques en memoria principal, se nos plantea un problema cuando traemos un bloque de memoria a la caché: ¿Dónde ponemos el bloque? es decir ¿en qué entrada de la caché ponemos el bloque? De igual manera, al buscar un bloque en la caché, debemos saber dónde podría estar ubicado este bloque.

Este problema se resuelve según una política de ubicación. Cada política de ubicación utiliza una función de correspondencia entre las direcciones de los bloques en memoria principal y sus direcciones en la caché. Así, diremos que las diferentes políticas de ubicación simplemente utilizan distintas funciones de correspondencia.

Arquitectura de Computadores Memoria Caché - 11

Memoria Caché …Políticas de Ubicación

Directa

En qué línea de la caché se coloca cada bloque

POLÍTICA DE UBICACIÓN (Función de Correspondencia)

¿?

Asociativa de

Conjuntos

Asociativa

Las tres funciones de correspondencia que se suelen utilizar son las siguientes:

  • Correspondencia Directa
  • Correspondencia Asociativa
  • Correspondencia Asociativa de Conjuntos

A continuación vamos a tratar con cierto detalle cada una de estas funciones de correspondencia. Para cada una de ellas veremos su estructura general acompañada de un ejemplo, que en los tres casos supondrá lo siguiente:

1. El tamaño de la caché es de 4 Kbytes. 2. Los datos se transfieren entre la memoria principal y la caché en bloques de 4 bytes. Esto quiere decir que la caché está organizada en 1024 líneas de 4 bytes cada una. 3. La memoria principal es de 64 Kbytes, pudiendo direccionar a nivel de byte mediante direcciones de 16 bits. Esto quiere decir que, a efectos de la caché, la podemos considerar como una memoria de 16 Kbloques de 4 bytes cada uno.

Arquitectura de Computadores Memoria Caché - 13

Políticas de Ubicación …Correspondencia Directa

Bloque Despl.
L 0
Comp.

... ... ... ... ...

datos

Caché

L J

Dir. de memoria

b+d
pal. 0
pal. 1
pal. 2
pal. 3

B (^0)

Memoria principal

pal. 4j
pal. 4j+
pal. 4j+
pal. 4j+

B (^) J

b
d
Falta de caché
Acierto
b-l l d
etiq. línea
etiq.
etiq.

Este algoritmo se implementa fácilmente a partir de las direcciones que genera la CPU. En lo que concierne a la caché, cada dirección de memoria consta de tres campos: Desplazamiento : Los d bits menos significativos identifican una única celda de memoria dentro de un bloque de memoria principal. Es decir, es el desplazamiento de la celda dentro de su bloque. Los restantes b bits de la dirección indican uno de los 2 b^ bloques de memoria principal. Como todos los bloques de memoria principal no caben en las L líneas de la caché, ésta interpreta estos b bits como una composición de dos campos: la línea y la etiqueta. Línea : Este campo indica la línea en la que debe ubicarse o localizarse un bloque de memoria principal. Está formado por los l bits menos significativos de los b bits de mayor peso de la dirección, e indica una de las L líneas de la caché, pues 2 l^ = L. Pero claro, va a haber muchos bloques a los que les corresponda la misma línea de caché. Concretamente, los restantes b-l bits, los de mayor peso de la dirección, indican a cuántos bloques les corresponde la misma línea en la caché. En la figura de la diapositiva anterior se puede ver que en una caché con L líneas, a la línea 0 le corresponden los bloques número 0, L, 2L, 3L, ...; a la línea 1 le corresponden los bloques 1, L+1, 2L+1, 3L+1, ... ; y a la línea L-1 le corresponden los bloques L-1, 2L-1, 3L-1, ... Etiqueta : Lo que va a diferenciar a todos los bloques a los que les corresponda la misma línea son los b-l bits de mayor peso, esto es, el campo de “etiqueta”. Obsérvese que aunque una línea de caché puede corresponder a varios bloques, todos esos bloques tendrán una etiqueta distinta. Cuando la CPU realiza una lectura, la dirección se divide en estos tres campos. Tomando los b bits del campo de bloque se obtiene el número de bloque de memoria principal. Con el algoritmo arriba indicado se obtiene la línea que le corresponde al bloque. Si la línea no está ocupada, se trae el bloque desde memoria principal a esa línea, y con el desplazamiento que indican los d bits de menor peso de la dirección se obtiene la celda dentro del bloque. Los b-l bits de mayor peso de la dirección deben ponerse en el campo de etiqueta de la línea correspondiente de la caché. En una referencia posterior, cuando se compruebe si el bloque referenciado está en la caché, si la entrada correspondiente está ocupada, hay que comprobar si el bloque de esa entrada es el que corresponde a la dirección que se está referenciando. Para ello simplemente hay que comprobar que el campo de etiqueta de la dirección es igual a la etiqueta de la línea que corresponde a ese bloque. Si no es así, habrá que traer el bloque de memoria y sustituir al que estaba en esa línea. Esto puede representar un problema.

Arquitectura de Computadores Memoria Caché - 14

Políticas de Ubicación …Correspondencia Directa

Ejemplo

Tamaño caché: 4 Kbytes

Tamaño bloque: 4 bytes

Memoria principal: 64 Kbytes (16 Kbloques de 4 bytes)

Caché de 1 Klíneas
de 4 bytes

Línea caché Bloques de memoria principal

0 0, 400, 800, C00, ..., 3C 1 1, 401, 801, C01, ..., 3C

...... 3FF 3FF, 7FF, BFF, ..., 3FFF

Dirección

M.P.

Número de bloque despl.

etiqueta línea

4 10 2

Veamos un ejemplo de ubicación mediante correspondencia directa. Para ello, supondremos los siguientes valores:

1. El tamaño de la caché es de 4 Kbytes. 2. Los datos se transfieren entre la memoria principal y la caché en bloques de 4 bytes. Esto quiere decir que la caché está organizada en 1024 líneas de 4 bytes cada una. 3. La memoria principal es de 64 Kbytes, pudiendo direccionar a nivel de byte mediante direcciones de 16 bits. Esto quiere decir que, a efectos de la caché, la podemos considerar como una memoria de 16 Kbloques de 4 bytes cada uno.

Veamos el formato de las direcciones. Los 16 Kbloques de la memoria principal se referencian mediante los 14 bits de más peso de la dirección; los dos bits de menor peso constituyen el desplazamiento de la palabra dentro del bloque. En la caché, por su parte, el número de línea se expresa mediante 10 bits. La ejecución del algoritmo de la función de correspondencia para averiguar la línea que le corresponde a un bloque de memoria (dividir un número de 14 bits entre otro de 10 y tomar el resto) es lo mismo que tomar directamente los 10 bits de menor peso del dividendo, es decir, del número de bloque.

En la parte inferior de la transparencia podemos ver las correspondencias entre bloques y líneas para este ejemplo.

Arquitectura de Computadores Memoria Caché - 16

Políticas de Ubicación Correspondencia Asociativa

Función de Correspondencia

El bloque puede ubicarse en cualquier línea de la caché

Falta de caché

Caché llena

Política de

Sustitución

Visto el problema de las colisiones que presenta la correspondencia directa, veamos otras alternativas

Con la correspondencia asociativa (o completamente asociativa) se solventan los problemas de la correspondencia directa, pues aquí se permite que cada bloque de memoria pueda estar en cualquier línea de la caché, por lo que mientras la memoria caché no esté llena, no habrá que hacer ninguna sustitución. Cuando esté llena y haya que traer un nuevo bloque, habrá que sustituir alguno de los bloques según la política de sustitución más apropiada, es decir, la que genere menos faltas de caché.

Arquitectura de Computadores Memoria Caché - 17

Políticas de Ubicación …Correspondencia Asociativa

... ...

Caché
etiq. datos
Bloque Despl.
Comp.
Acierto Fallo
Comp.
Comp.
Acierto Fallo
Acierto Fallo
Línea 0
Línea 1
Línea 2

z

z

z

z

z

z

Dir. de memoria

Con la correspondencia asociativa, la caché ve cada dirección de memoria formada solamente por dos campos: el desplazamiento dentro del bloque (los bits menos significativos) y el número de bloque o etiqueta (los más significativos). Ahora cada bloque de memoria principal tiene una única etiqueta posible, que es precisamente el número de bloque.

Así, para saber si un bloque está en la caché, su lógica de control debe comparar la etiqueta de la dirección generada por la CPU con todas las etiquetas de la caché. Para que estas comparaciones puedan realizarse rápidamente, cada entrada de la caché cuenta con un comparador, de tal manera que las comparaciones de la etiqueta de la dirección de memoria con todas las etiquetas de las líneas de la caché se realizan en paralelo. (Este tipo de memorias se denominan memorias asociativas ).

Con este esquema hay flexibilidad para ubicar un bloque en cualquier línea de la caché, y su espacio se puede aprovechar más eficientemente, pues cuando se trae un bloque a la caché nunca habrá que reemplazar a ninguno de los que ya estaban cargados a menos que todas las líneas estén ocupadas. Con esta técnica ya no deben producirse las repetidas expulsiones mutuas de dos bloques que teníamos con la correspondencia directa. Los algoritmos de sustitución que veremos más adelante se diseñarán precisamente para mejorar lo más posible la tasa de aciertos.

La desventaja obvia de la correspondencia asociativa es el incremento económico que genera la electrónica adicional necesaria.

Arquitectura de Computadores Memoria Caché - 19

Políticas de Ubicación …Correspondencia Asociativa

0000 13579246 000

0001 11223344 001

0400 12233445 002

... ... ...

334A 11223344 3FE

3FFF 22222222 3FF

Etiq. Datos Línea

Caché

Num. bloque desp. datos

Direcciones de M.P.
00001111111111 11 AB

Como hemos dicho, la dirección de 16 bits ahora solamente se descompone en dos campos: el desplazamiento, que tiene que seguir siendo de 2 bits, pues lo impone el tamaño del bloque; y el número de bloque, de 14 bits, que se utiliza como etiqueta.

Esto quiere decir que en cada línea de la caché, junto con cada bloque de 4 bytes deben almacenarse también los 14 bits de su etiqueta correspondiente.

Ya que esta correspondencia no fuerza ninguna ubicación concreta para cada bloque de memoria principal, ya no hay colisiones como en la correspondencia directa, sino que al traer un bloque a la caché, si ésta está totalmente ocupada, simplemente debe sustituirse alguno de los bloques que ya estaban por el recién traído. Puesto que no se fija de antemano cuál debe ser el bloque a sustituir, no se corre el peligro de la correspondencia directa, en la que podía darse el caso de tener que sustituir un bloque que se estaba referenciando muy a menudo. La política de sustitución se encargará de elegir el bloque que al ser sustituido genere el menor perjuicio posible a la tasa de aciertos de la caché.

Como se muestra en el ejemplo, con esta correspondencia se consigue que, normalmente, los últimos bloques referenciados por la CPU se encuentren en la caché, sin que uno de ellos haya tenido que expulsar a otro recientemente referenciado para cargarse en la caché.

Arquitectura de Computadores Memoria Caché - 20

Políticas de Ubicación Correspondencia Asociativa de Conjuntos

La caché se divide enC conjuntos deL líneas cada uno

Política de sustitución dentro de cada conjunto

A muchos bloques les corresponderá el mismo conjunto

Función de Correspondencia

Num_Conjunto = Num_bloque módulo Num_Conjuntos

C 0 C 1

C 2 C 3

El bloque se ubica en cualquier línea del conjunto

La correspondencia asociativa de conjuntos combina la economía de la correspondencia directa con la tasa de aciertos de la correspondencia asociativa. Consiste en agrupar las líneas de la caché en conjuntos, de tal forma que la función de correspondencia permita que un bloque de la memoria principal pueda ubicarse en cualquier línea de un conjunto concreto.

Con esta política, la memoria caché se divide en C conjuntos de L líneas cada uno. Así, el número M de líneas de la caché es M = C x L.

De forma similar a la correspondencia directa, para averiguar el conjunto c de la caché que le corresponde a un cierto bloque b de memoria principal, se aplica la siguiente correspondencia:

c = b módulo C

Una vez averiguado el conjunto c de la caché que le corresponde al bloque b , éste puede ubicarse en cualquiera de las líneas del conjunto c.