Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Memoriacache PDF
Memoriacache PDF
de Computadores
7. Memoria Cach
1. Fundamento e Introduccin
2. Estructura
3. Polticas de Ubicacin
4. Polticas de Sustitucin
5. Polticas de Escritura
6. Otras Consideraciones
Arquitectura de Computadores
Memoria Cach - 1
Arquitectura de Computadores
Memoria Cach - 1
Jerarquas de Memoria
Memoria Cach
Registros
Capacidad
Cach N1-N2
Tiempo de acceso
Frecuencia de acceso
Memoria Principal
Disco Magntico
Cinta Magntica
Quin se ocupa
del transvase
entre memorias
Disco ptico
- La CPU/MMU
- El S. O.
Arquitectura de Computadores
Memoria Cach - 2
Como vimos en el captulo de la memoria principal, un ordenador debe construirse con diversos
niveles de memoria organizados en una jerarqua, de tal manera que se pueda obtener, como
conjunto, una memoria de mucha capacidad, rpida y barata.
Recordemos la pirmide 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 solucin 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 ms a los datos del programa en ejecucin que a los de uno que no se ejecuta desde
hace un ao; y de igual manera, en un momento dado se accede ms a los datos de una expresin
que se est evaluando en ese preciso instante que a otros datos del programa.
En este captulo vamos a ocuparnos de la memoria cach. Comenzaremos por ver cmo una
memoria tan pequea (en comparacin con la memoria principal) puede ser tan til.
Arquitectura de Computadores
Memoria Cach - 2
Fundamento
Memoria Cach
Principio de la
Localidad de Referencia
Los accesos a memoria que realiza la CPU
no estn uniformemente distribuidos
por todo el espacio de direccionamiento,
sino que se concentran, temporalmente,
solamente en ciertas reas de la
memoria.
Arquitectura de Computadores
CPU
(bytes)
Cach
(Kbytes)
Memoria
Principal
(Mbytes)
Memoria Cach - 3
La efectividad del mecanismo de la memoria cach se basa en una propiedad de los programas
denominada localidad de referencia y que comentamos a continuacin.
El Principio de Localidad de Referencia dice que los accesos a memoria que realiza la CPU no
estn uniformemente distribuidos por todo el espacio de direcciones, sino que, temporalmente, se
concentran en reas de la memoria.
Lo que establece este principio se debe a que el contenido de cada programa no est esparcido
por toda la memoria, sino que sus instrucciones y datos estn contenidos en una o varias
secciones de memoria contigua, por lo que los accesos a la memoria se concentran en las reas
donde estn las instrucciones o los datos del programa en ejecucin.
El anlisis de los programas muestra que la mayora del tiempo de ejecucin se dedica a rutinas
en las que una serie de instrucciones se ejecutan repetidamente. Estas instrucciones pueden estar
formando parte de un bucle, bucles anidados, o unos cuantos procedimientos a los que se llama
iterativamente. Por esto, las referencias a memoria en una porcin de tiempo dada, se concentran,
concretamente, no en todo el programa que se est ejecutando, sino, ms especficamente, en el
fragmento del bucle que en ese momento se est ejecutando.
Segn esto, si el segmento activo de un programa se puede ubicar en una memoria rpida,
aunque pequea, el tiempo total de ejecucin puede verse drsticamente reducido.
Arquitectura de Computadores
Memoria Cach - 3
Fundamento
Memoria Cach
Principio de
Localidad de Referencia
Localidad
Temporal
Es muy probable
repetir
instrucciones
(bucles)
Localidad
Espacial
Es muy probable
ejecutar
instrucciones
cercanas
Unidad de
transferencia:
BLOQUE
Arquitectura de Computadores
Memoria Cach - 4
Arquitectura de Computadores
Memoria Cach - 4
Introduccin
Memoria Cach
CPU
(bytes)
Palabra
Cach
(Kbytes)
El espacio de la memoria
cach est dividido en lneas
Bloque
Memoria
Principal
(Mbytes)
Arquitectura de Computadores
Un bloque de memoria
principal cabe
exactamente en una
lnea de la cach
El espacio de la memoria
principal est dividida en
bloques.
Memoria Cach - 5
Arquitectura de Computadores
Memoria Cach - 5
Introduccin
Memoria Cach
No
Extraer la palabra
con direccin D y
entregarla a la CPU
Arquitectura de Computadores
Memoria Cach - 6
Cuando la CPU intenta leer una palabra de memoria principal, se le presenta la direccin a la
memoria cach y sta comprueba si tiene el dato correspondiente a esa direccin. Si es as,
entrega el dato; si no, se produce una falta de cach, con lo que hay que acudir a la memoria
principal para leer un bloque de varias palabras adyacentes en memoria. Como ya hemos
comentado, el hecho de leer un bloque, y no solamente la palabra concreta referenciada, se debe
al principio de localidad de referencia espacial, pues cuando en la CPU se genera una referencia a
una palabra concreta, es muy fcil que en las prximas lecturas se haga referencia a otras
palabras cercanas a esa palabra.
Arquitectura de Computadores
Memoria Cach - 6
Memoria Cach
Introduccin
No est en la cach
Falta de cach
Acierto de cach
Traer bloque de
memoria principal
Poltica de Ubicacin
Dnde se coloca?
Poltica de Sustitucin
Si est llena
Cul se sustituye?
Poltica de Actualizacin
Es una escritura !
(funcin de correspondencia)
Arquitectura de Computadores
Memoria Cach - 7
Como se muestra en la figura, cuando se recibe una peticin de lectura de la CPU, el contenido del bloque completo de
memoria principal que contiene la direccin 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 nmero de bloques de memoria que es muy pequeo comparado
con el nmero 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 funcin de correspondencia. La funcin de correspondencia a utilizar se
establece mediante la poltica de ubicacin. Cuando la cach est llena, y se referencia una direccin 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 decisin se denominan algoritmos o
polticas de sustitucin.
Obsrvese que la CPU no necesita conocer explcitamente la existencia de la cach, sino que genera una peticin de
lectura o escritura utilizando direcciones de memoria principal, y la circuitera 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
operacin de lectura o escritura se realiza sobre la direccin correspondiente en la cach, y si la operacin es de
lectura, la memoria principal no se ve implicada en la ejecucin. Si la operacin es una escritura, la palabra afectada en
la memoria cach deber actualizarse, en algn momento, en la memoria principal, para que el contenido de un bloque
en la cach sea idntico al de su correspondiente en memoria principal. En estos casos, la actualizacin en memoria
principal de los bloques modificados en la cach se realiza segn una poltica de escritura o de actualizacin.
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 continuacin,
la palabra solicitada se enva a la CPU. Otra opcin consiste en enviarle la palabra directamente de la memoria
principal a la CPU y al mismo tiempo cargarla en la cach. Esta ltima tcnica, denominada carga directa (load
through), aunque reduce el tiempo de espera de la CPU, requiere un hardware ms complejo.
Ms adelante, al comentar las polticas de escritura, veremos las opciones a tomar cuando se produce una falta de
cach en una operacin de escritura.
En la operacin de la cach se nos plantean, por tanto, estas tres preguntas:
P1: Dnde situar un bloque en la cach? (Poltica de ubicacin).
P2: Qu bloque reemplazar ante una cach llena? (Poltica de sustitucin).
P3: Qu hacer ante una operacin de escritura? (Poltica de actualizacin).
Arquitectura de Computadores
Memoria Cach - 7
Introduccin
Memoria Cach
PA : Probabilidad de acierto
TC : Tiempo de acceso a cach
EJEMPLO
TMP =500 s
TC = 50 s
PA = 0,99
Arquitectura de Computadores
Memoria Cach - 8
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 diseo 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%.
Cul es el tiempo medio de acceso a memoria en este sistema?
Merece la pena la instalacin de la memoria cach?
Arriba se muestra la solucin.
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 - 8
Estructura
Memoria Cach
Mem. Cach
bloque 0
(de k palabras)
bloque 1
etiqueta
2n-1
Arquitectura de Computadores
0
1
2
3
4
lnea C-1
bloque M-1
bloque
k
palabras
Sabemos que la memoria principal est formada por un mximo de 2n celdas direccionables, cada
una con una nica direccin de n bits. Desde el punto de vista de la cach, esta misma memoria
principal se considera formada por M bloques de K celdas cada uno; es decir, por 2n/K bloques. La
cach por su parte, est formada por C entradas de K celdas cada una, tal que el nmero de
entradas de la cach es mucho menor que el nmero de bloques de la memoria principal. Cuando
se lee una celda de un bloque de memoria, ese bloque se transfiere a la cach, por lo que en un
momento dado, la cach est cargada con un subconjunto de los bloques de memoria.
Ya que hay ms bloques de memoria que entradas o lneas en la cach, cada entrada de la
cach no puede estar permanentemente dedicada a un bloque concreto de la memoria principal.
Por esto, cada entrada de la cach tiene una etiqueta que identifica al bloque que tiene cargado
en ese momento. Una etiqueta es algo que diferencia a todos los bloques que pueden estar en una
misma lnea. Como veremos, esta etiqueta suele estar formada por los bits ms significativos de la
direccin del bloque en memoria principal..
Cada entrada de la cach tambin debe disponer de un bit V que indique si esa entrada est
ocupada por algn bloque (entrada vlida) o todava no se ha cargado con ningn bloque desde
que se arranc la mquina. Este bit se pone a cero en la inicializacin de la cach, y se activa
cuando se trae un bloque a la lnea por primera vez.
Arquitectura de Computadores
Memoria Cach - 9
Polticas de Ubicacin
Memoria Cach
Mem. Principal
Cach
etiqueta
bloque 0
bloque 1
bloque 2
bloque 3
bloque 4
bloque 5
bloque 6
bloque 7
...
...
...
bl. 16.381
bl. 16.382
bl. 16.383
lnea 0
lnea 1
linea 2
lnea 3
...
...
lnea 1022
lnea 1023
Funcin de
correspondencia
Arquitectura de Computadores
Memoria Cach - 10
Ya que hay menos entradas o lneas de cach que bloques en memoria principal, se nos plantea
un problema cuando traemos un bloque de memoria a la cach: Dnde 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 dnde podra estar ubicado este bloque.
Este problema se resuelve segn una poltica de ubicacin. Cada poltica de ubicacin utiliza una
funcin de correspondencia entre las direcciones de los bloques en memoria principal y sus
direcciones en la cach. As, diremos que las diferentes polticas de ubicacin simplemente utilizan
distintas funciones de correspondencia.
Arquitectura de Computadores
Memoria Cach - 10
Polticas de Ubicacin
Memoria Cach
lnea de la cach
Ensequ
coloca cada bloque ?
POLTICA DE UBICACIN
(Funcin de Correspondencia)
Directa
Asociativa
Asociativa de
Conjuntos
Arquitectura de Computadores
Memoria Cach - 11
Las tres funciones de correspondencia que se suelen utilizar son las siguientes:
Correspondencia Directa
Correspondencia Asociativa
Correspondencia Asociativa de Conjuntos
A continuacin vamos a tratar con cierto detalle cada una de estas funciones de correspondencia.
Para cada una de ellas veremos su estructura general acompaada de un ejemplo, que en los tres
casos supondr lo siguiente:
1. El tamao 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 lneas 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 - 11
Correspondencia Directa
Polticas de Ubicacin
Funcin de Correspondencia
Num_Lnea = NumBloque mdulo Lneas_en_cach
Lnea cach
Cach de
L lneas
,L
, 2L
, 3L
, ...
1
...
L-1
Arquitectura de Computadores
Memoria Cach - 12
Arquitectura de Computadores
Memoria Cach - 12
Correspondencia Directa
Polticas de Ubicacin
Cach
b+d
etiq.
datos
Dir. de memoria
Bloque
etiq.
b-l
Memoria
principal
L0
Despl.
lnea
l
...
Acierto
b
LJ
Falta de cach
...
...
B0
...
...
Arquitectura de Computadores
pal. 2
pal. 3
...
etiq.
Comp.
pal. 0
pal. 1
...
pal. 4j
pal. 4j+1
pal. 4j+2
pal. 4j+3
...
BJ
...
...
Memoria Cach - 13
Este algoritmo se implementa fcilmente a partir de las direcciones que genera la CPU. En lo que concierne a la cach,
cada direccin 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 direccin indican uno de los 2b bloques de memoria principal. Como todos los
bloques de memoria principal no caben en las L lneas de la cach, sta interpreta estos b bits como una
composicin de dos campos: la lnea y la etiqueta.
Lnea: Este campo indica la lnea 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 direccin, e indica una de las L
lneas de la cach, pues 2l = L.
Pero claro, va a haber muchos bloques a los que les corresponda la misma lnea de cach. Concretamente,
los restantes b-l bits, los de mayor peso de la direccin, indican a cuntos bloques les corresponde la misma
lnea en la cach.
En la figura de la diapositiva anterior se puede ver que en una cach con L lneas, a la lnea 0 le
corresponden los bloques nmero 0, L, 2L, 3L, ...; a la lnea 1 le corresponden los bloques 1, L+1, 2L+1,
3L+1, ...; y a la lnea 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 lnea son los b-l bits de
mayor peso, esto es, el campo de etiqueta. Obsrvese que aunque una lnea de cach puede corresponder
a varios bloques, todos esos bloques tendrn una etiqueta distinta.
Cuando la CPU realiza una lectura, la direccin se divide en estos tres campos. Tomando los b bits del campo de
bloque se obtiene el nmero de bloque de memoria principal. Con el algoritmo arriba indicado se obtiene la lnea que le
corresponde al bloque. Si la lnea no est ocupada, se trae el bloque desde memoria principal a esa lnea, y con el
desplazamiento que indican los d bits de menor peso de la direccin se obtiene la celda dentro del bloque. Los b-l bits
de mayor peso de la direccin deben ponerse en el campo de etiqueta de la lnea 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 direccin
que se est referenciando. Para ello simplemente hay que comprobar que el campo de etiqueta de la direccin es igual
a la etiqueta de la lnea que corresponde a ese bloque. Si no es as, habr que traer el bloque de memoria y sustituir al
que estaba en esa lnea. Esto puede representar un problema.
Arquitectura de Computadores
Memoria Cach - 13
Correspondencia Directa
Polticas de Ubicacin
Ejemplo
Cach de 1 Klneas
de 4 bytes
Direccin
M.P.
Nmero de bloque
4
etiqueta
Lnea cach
0
1
...
3FF
10
lnea
despl.
2
Arquitectura de Computadores
Memoria Cach - 14
Veamos un ejemplo de ubicacin mediante correspondencia directa. Para ello, supondremos los
siguientes valores:
1. El tamao 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 lneas 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 ms peso de la direccin; los dos bits de menor peso constituyen el
desplazamiento de la palabra dentro del bloque. En la cach, por su parte, el nmero de lnea se
expresa mediante 10 bits. La ejecucin del algoritmo de la funcin de correspondencia para
averiguar la lnea que le corresponde a un bloque de memoria (dividir un nmero 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 nmero de bloque.
En la parte inferior de la transparencia podemos ver las correspondencias entre bloques y lneas
para este ejemplo.
Arquitectura de Computadores
Memoria Cach - 14
Polticas de Ubicacin
Direcciones de M.P.
Num. bloque
desp. datos
0000 0000000000 00 13
0000 0000000000 01 57
0000 0000000000 10 92
0000 0000000000 11 46
0000 0000000001 00 11
0000 0000000001 01 22
0000 0000000001 10 33
0000 0000000001 11 44
0000
...
...
...
...
...
0000 1111111111 11 AB
0001 0000000000 00 12
0001 0000000000 01 23
0001 0000000000 10 34
0001 0000000000 11 45
...
...
...
1111 1111111111 00 22
1111 1111111111 01 22
1111 1111111111 10 22
1111 1111111111 11 22
Arquitectura de Computadores
Correspondencia Directa
...Ejemplo
Cach
Etiq.
Datos
Lnea
...
...
32
10
Hay Colisiones !
Memoria Cach - 15
Arquitectura de Computadores
Memoria Cach - 15
Correspondencia Asociativa
Polticas de Ubicacin
Funcin de Correspondencia
El bloque puede ubicarse en cualquier lnea
de la cach
Falta de cach
+
Cach llena
Arquitectura de Computadores
Poltica de
Sustitucin
Memoria Cach - 16
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 lnea de la cach, por lo que mientras la memoria cach no est llena, no habr que
hacer ninguna sustitucin. Cuando est llena y haya que traer un nuevo bloque, habr que sustituir
alguno de los bloques segn la poltica de sustitucin ms apropiada, es decir, la que genere
menos faltas de cach.
Arquitectura de Computadores
Memoria Cach - 16
Polticas de Ubicacin
Correspondencia Asociativa
Dir. de memoria
Bloque
Despl.
Cach
etiq. datos
Comp.
Lnea 0
Acierto Fallo
Comp.
Lnea 1
Acierto Fallo
Comp.
Acierto Fallo
Arquitectura de Computadores
Lnea 2
...
...
Memoria Cach - 17
Con la correspondencia asociativa, la cach ve cada direccin de memoria formada solamente por
dos campos: el desplazamiento dentro del bloque (los bits menos significativos) y el nmero de
bloque o etiqueta (los ms significativos). Ahora cada bloque de memoria principal tiene una nica
etiqueta posible, que es precisamente el nmero de bloque.
As, para saber si un bloque est en la cach, su lgica de control debe comparar la etiqueta de la
direccin generada por la CPU con todas las etiquetas de la cach. Para que estas comparaciones
puedan realizarse rpidamente, cada entrada de la cach cuenta con un comparador, de tal
manera que las comparaciones de la etiqueta de la direccin de memoria con todas las etiquetas
de las lneas 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 lnea de la cach, y su
espacio se puede aprovechar ms 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
lneas estn ocupadas. Con esta tcnica ya no deben producirse las repetidas expulsiones mutuas
de dos bloques que tenamos con la correspondencia directa. Los algoritmos de sustitucin que
veremos ms adelante se disearn precisamente para mejorar lo ms posible la tasa de aciertos.
La desventaja obvia de la correspondencia asociativa es el incremento econmico que genera la
electrnica adicional necesaria.
Arquitectura de Computadores
Memoria Cach - 17
Correspondencia Asociativa
Polticas de Ubicacin
Nuestro
Ejemplo Tamao bloque: 4 bytes
Cach de 1 Klnea
de 4 bytes
Arquitectura de Computadores
Memoria Cach - 18
Polticas de Ubicacin
Correspondencia Asociativa
Direcciones de M.P.
Num. bloque desp. datos
00000000000000 00 13
00000000000000 01 57
00000000000000 10 92
00000000000000 11 46
00000000000001 00 11
00000000000001 01 22
00000000000001 10 33
00000000000001 11 44
0000
...
...
...
...
...
00001111111111 11 AB
00010000000000 00 12
00010000000000 01 23
00010000000000 10 34
00010000000000 11 45
...
...
...
11111111111111 00 22
11111111111111 01 22
11111111111111 10 22
11111111111111 11 22
Arquitectura de Computadores
Cach
Etiq.
Datos
Lnea
...
...
32
10
Memoria Cach - 19
Como hemos dicho, la direccin de 16 bits ahora solamente se descompone en dos campos: el
desplazamiento, que tiene que seguir siendo de 2 bits, pues lo impone el tamao del bloque; y el
nmero de bloque, de 14 bits, que se utiliza como etiqueta.
Esto quiere decir que en cada lnea de la cach, junto con cada bloque de 4 bytes deben
almacenarse tambin los 14 bits de su etiqueta correspondiente.
Ya que esta correspondencia no fuerza ninguna ubicacin 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 recin trado. Puesto que no se fija de antemano cul debe ser el bloque a
sustituir, no se corre el peligro de la correspondencia directa, en la que poda darse el caso de
tener que sustituir un bloque que se estaba referenciando muy a menudo. La poltica de sustitucin
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 - 19
Polticas de Ubicacin
C0
C1
C2
C3
Funcin de Correspondencia
Num_Conjunto = Num_bloque mdulo Num_Conjuntos
El bloque se ubica en cualquier lnea del conjunto
A muchos bloques les corresponder el mismo conjunto
Poltica de sustitucin dentro de cada conjunto
Arquitectura de Computadores
Memoria Cach - 20
Arquitectura de Computadores
Memoria Cach - 20
Polticas de Ubicacin
b+d
Dir. de memoria
pal. 0
pal. 1
pal. 2
etiq. bloques
Bloque
Despl.
etiq.
conjunto
b-c
c
d
...
...
Comparador
Mem. principal
Cach
Acierto
Falta de cach
...
C0
C1
B0
pal. 3
b
d
...
...
pal. 4j
pal. 4j+1
pal. 4j+2
BJ
pal. 4j+3
...
...
...
Arquitectura de Computadores
Memoria Cach - 21
Arquitectura de Computadores
Memoria Cach - 21
Polticas de Ubicacin
Nuestro
Tamao bloque: 4 bytes
Ejemplo
Conjuntos de 4 bloques
Cach de 1 Klnea
de 4 bytes
Cach de 256
conjuntos
Direccin
M.P.
Nmero de bloque
6
etiqueta
8
conjunto
despl.
2
Cjto. cach
0
1
...
FF
Arquitectura de Computadores
Memoria Cach - 22
Veamos ahora cmo aplicar la correspondencia asociativa de conjuntos a nuestro ejemplo tipo.
Ahora la direccin de 16 bits vuelve a descomponerse en tres campos. El desplazamiento sigue
estando indicado por los dos bits de menor peso, puesto que los bloques siguen siendo de 4
palabras. En cuanto al nmero de bloque, queda indicado por los 14 bits de mayor peso, aunque
en este caso, para conocer la ubicacin de cada bloque en la cach solamente necesitamos los 8
bits de menor peso del nmero de bloque, que es el resultado de la operacin Num_Bloque
mdulo Num_Conjuntos. As, tenemos que los bloques con nmero 0, 100H, 200H, etc., deben
ubicarse en el conjunto 0 de la cach; los que tienen nmero 1, 101H, 201H, etc., corresponden al
conjunto 1, y as sucesivamente.
Arquitectura de Computadores
Memoria Cach - 22
Polticas de Ubicacin
Direcciones de M.P.
Num. bloque
desp. datos
000000 00000000 00 13
000000 00000000 01 57
000000 00000000 10 92
000000 00000000 11 46
000000 00000001 00 11
000000 00000001 01 22
000000 00000001 10 33
000000 00000001 11 44
000000
...
...
...
...
...
000000 11111111 11 77
000001 00000000 00 AB
000001 00000000 01 12
000001 00000000 10 23
000001 00000000 11 34
...
...
...
111111 11111111 00 22
111111 11111111 01 22
111111 11111111 10 22
111111 11111111 11 22
Arquitectura de Computadores
CACH
Etiq.
000000
000001
010100
010101
000000
000110
000001
100000
...
...
000001
111111
111000
111001
6
Datos
Cjto.
13579246
AB122334
00
32454622
67524425
11223344
ABCD1234
01
123ABC45
98712365
...
...
...
...
11223344
22222222
FF
99999999
88888888
32
Memoria Cach - 23
Al igual que en la correspondencia directa, nos encontramos con que hay colisiones, es decir, hay
muchos bloques que les corresponde el mismo conjunto. Sin embargo, mientras que en la
correspondencia directa solamente poda haber un bloque en una direccin, ahora tenemos que en
una misma direccin de la cach puede haber tantos bloques como permita el tamao del
conjunto. En nuestro ejemplo los conjuntos son de 4 bloques, como el Motorola 68040 y el
PowerPC 604, que tambin utilizan una memoria asociativa con conjuntos de 4 bloques (memoria
asociativa de conjuntos de 4 vas). Los Pentium, sin embargo, disponen de una cach asociativa
de conjuntos de 2 vas.
Volviendo a nuestro ejemplo, podemos ver que al primer bloque de memoria principal (el bloque 0)
le corresponde el conjunto 0 de la cach, y al segundo bloque, el conjunto 1. Como ya sabamos,
nos encontramos con que al bloque 100H tambin le corresponde el conjunto 0, pero en esta
ocasin, para cargar el bloque 100H no hay que expulsar al bloque 0 (como suceda en la
correspondencia directa), ya que ahora en cada conjunto se pueden ubicar hasta 4 de los bloques
a los que la funcin de correspondencia otorga la misma direccin. Para diferenciar los distintos
bloques que corresponden al mismo conjunto se utiliza la etiqueta de 6 bits que tiene cada bloque.
No puede haber dos bloques con la misma etiqueta que les corresponda el mismo conjunto.
De esta manera se evita en gran medida el problema de la correspondencia directa, en la que dos
bloques muy usados en un bucle podan estar expulsndose mtuamente, desaprovechando as la
eficacia de la memoria cach.
Arquitectura de Computadores
Memoria Cach - 23
Polticas de Sustitucin
Memoria Cach
Corr. Asociativa
de Conjuntos
Corr. Asociativa
Sustituir el
antiguo
Sustituir alguno
del conjunto
Sustituir cualquiera
de la cach
Poltica de Sustitucin
Basadas en estadstica
LRU, LFU
Bueno en general
Falla con algunas matrices
Arquitectura de Computadores
No basadas en estadstica
Random, FIFO
Buena tasa de aciertos
No falla con las matrices
Fcil y econmico
Memoria Cach - 24
Cuando se produce una falta de cach y hay que traer el bloque desde memoria principal, si no hay una lnea libre para
el bloque, habr que sustituir alguno de los que estn en la cach por el recin referenciado.
Si se utiliza correspondencia directa, no hay ninguna eleccin, hay que sustituir el bloque de la nica lnea en la que se
puede ubicar el bloque referenciado. Si se trata de correspondencia asociativa de conjuntos, se puede elegir entre
cualquiera de los bloques del conjunto que le corresponde al bloque referenciado. Y si la funcin de correspondencia
es la completamente asociativa, se puede elegir para sustituir cualquiera de los bloques que estn en la cach. As,
tenemos que en los dos ltimos tipos de correspondencias necesitamos una poltica de sustitucin. Esta cuestin es
extremadamente importante, pues la poltica utilizada es un factor determinante para la tasa de aciertos del sistema.
Hay dos enfoques a la hora de elegir una poltica de sustitucin: el que tiene en cuenta la estadstica de utilizacin de
los bloques (la historia de uso), y el que no lo tiene en cuenta. Entre los primeros se encuentran las polticas LRU y
LFU, y como representantes del segundo enfoque est la poltica random y la FIFO.
LRU (Least Recently Used). En general, el objetivo es mantener en la cach los bloques que tienen ms
probabilidades de ser accedidos en un futuro prximo, pero no resulta nada fcil saber esto. No obstante, el principio
de localidad nos dice que en ciertas reas de memoria, y durante un periodo razonable de tiempo, hay una alta
probabilidad de que los bloques que acaban de ser referenciados recientemente sean referenciados otra vez en un
futuro prximo. Por eso, cuando hay que seleccionar un bloque vctima, parece razonable elegir el que lleva ms
tiempo sin ser referenciado (el menos recientemente referenciado, the least recently used).
Para implementar este sistema se requiere aadir un contador a cada lnea de la cach, de tal manera que cada vez
que se referencia un bloque su contador se pone a cero, y los de los dems (del conjunto o de toda la memoria) se
incrementan en uno. Cuando se trae un nuevo bloque, se elige como vctima el que tiene el contador ms alto, y al
nuevo bloque se le pone el contador a cero.
Esta poltica de sustitucin falla cuando se est accediendo de forma secuencial y cclica a elementos de una matriz
que no cabe completamente en la cach.
Una poltica parecida es la LFU (Least Frequently Used), en la cual se sustituye el bloque menos referenciado. sta
tambin se implementa con ayuda de contadores.
Como polticas no basadas en la estadstica de uso, tenemos la FIFO (First In, First Out) que ofrece unos resultados
ligeramente inferiores a la LRU, y que se implementa con ayuda de un buffer circular. Los problemas que presenta se
deben al hecho de que solamente tiene en cuenta el tiempo que lleva un bloque en la cach, y no cules han sido las
ltimas referencias; por esto tambin puede fallar con algunas matrices.
La poltica Random, que elige al azar el bloque a sustituir, ofrece una buena tasa de aciertos, no tiene el problema de
la LRU con las matrices, y es fcil y econmico de implementar.
Arquitectura de Computadores
Memoria Cach - 24
Polticas de Sustitucin
Memoria Cach
Cuatro Vas
LRU Random
Ocho Vas
LRU Random
16 Kb
5,18% 5,69%
4,67%
5,29%
4,39%
4,96%
64 Kb
1,88% 2,01%
1,54%
1,66%
1,39%
1,53%
1,13%
1,13%
1,12%
1,12%
256 Kb 1,15%
1,17%
Memoria Cach - 25
Las estadsticas dicen que la poltica de ubicacin influye mucho ms en las prestaciones de la
cach que la poltica de sustitucin. A su vez, no hay una poltica de sustitucin claramente mejor
que otra, pues dependen de la poltica de ubicacin utilizada y del tamao de la cach.
En la tabla de arriba podemos observar el porcentaje de fallos de cach con distintos tamaos de
cach y diversas configuraciones de nmero de vas y polticas de sustitucin.
Merece la pena comentar la drstica cada al pasar de una cach de 16 Kbytes a una de 64;
bajando muy poco al aumentarla hasta 256 Kbytes. Esto es razonable, ya que cuando en la cach
cabe el conjunto de trabajo que se est utilizando (conjunto de bloques muy accedidos durante la
ejecucin de la porcin de un programa), no se consigue nada por aumentar el tamao de la
cach.
Tambin se puede apreciar la poca diferencia de tasa de fallos que hay entre las polticas LRU y
al azar o Random.
Parece que aumentando el nmero de vas disminuye ligeramente la tasa de fallos. No obstante,
las memorias cachs sueles ser de 2 o 4 vas.
Arquitectura de Computadores
Memoria Cach - 25
Polticas de Escritura
Memoria Cach
Problema de la Coherencia
de las Cachs
Cuestiones ante
una Operacin
de Escritura
Arquitectura de Computadores
Memoria Cach - 26
Hay dos cuestiones que tratar en relacin con la operacin de escritura en un sistema con
memoria cach:
Problema de la Coherencia de Cachs
Falta de Cach en Escritura
Vemoslas en las siguientes pginas.
Arquitectura de Computadores
Memoria Cach - 26
Polticas de Escritura
Memoria Cach
CPU
CPU
CPU
Cach
Cach
Cach
DMA
Memoria
Principal
E/S
buses
Arquitectura de Computadores
Memoria Cach - 27
Arquitectura de Computadores
Memoria Cach - 27
Polticas de Escritura
Memoria Cach
Problema de la
Coherencia de las Cachs
Polticas de Actualizacin
Escritura Inmediata
(write through)
No hay incoherencia
Mucho trfico
Arquitectura de Computadores
Escritura Diferida
(copy back)
Hay incoherencia
Rpida, poco trfico
Memoria Cach - 28
Arquitectura de Computadores
Memoria Cach - 28
Polticas de Escritura
Memoria Cach
Escribir directamente
en la memoria
Escritura diferida
Escritura inmediata
Arquitectura de Computadores
Memoria Cach - 29
La otra pregunta es qu hacer cuando se produce una falta de cach en escritura? La cuestin
concreta es si ante una falta de cach en escritura, se debe escribir directamente en la memoria
principal (escritura sin asignacin de cach), o se debe traer el dato a la cach y escribir en la
cach (escritura con asignacin).
Aunque cualquiera de estas opciones se puede utilizar con las dos polticas de actualizacin, la
escritura diferida suele utilizar la escritura con asignacin, esperando as que las subsiguientes
escrituras a ese bloque se realicen directamente en la cach. Las escrituras inmediatas suelen ser
sin asignacin, ya que las siguientes escrituras a ese bloque tendrn que realizarse forzosamente
sobre memoria principal.
Arquitectura de Computadores
Memoria Cach - 29
El Tamao de la Cach
Memoria Cach
Cara y lenta
No mejora
la tasa de aciertos
Velocidad aceptable
Tasa de aciertos alta
512 Kb
Tamao optimo?
1 Kb
Barata y rpida
Muchas faltas de cach
Arquitectura de Computadores
Depende de
las aplicaciones
Memoria Cach - 30
Adems de las cuestiones generales que hemos tratado, hay otras consideraciones que se deben
tener en cuenta en el diseo de una memoria cach: el tamao total de la memoria cach y el
tamao de cada bloque.
Tamao de la cach. Ya hemos comentado que nos gustara que el tamao de la cach fuera lo
suficientemente pequeo como para que el coste medio por bit de memoria total (cach ms
memoria principal) fuera muy cercano al de la memoria principal, y lo suficientemente grande como
para que el tiempo medio de acceso a memoria fuera casi el mismo que el tiempo de acceso a la
cach.
Cuanto ms grande sea la cach, mayor es el nmero de puertas necesarias para su
direccionamiento, por lo que las grandes cachs tienden a ser ligeramente ms lentas que las
pequeas.
Por el principio de localidad temporal, a mayor nmero de lneas de cach, mayor probabilidad de
acierto. No obstante, un programa solamente direcciona unas cuantas reas de memoria durante
un cierto intervalo de tiempo, por lo que a partir de un cierto nmero de lneas, no se mejorar la
tasa de aciertos.
Las prestaciones de la cach dependen mucho de las caractersticas del programa en ejecucin,
por lo que no se puede establecer un tamao ptimo, aunque algunos estudios estadsticos
sugieren que el tamao ptimo de la cach debe estar entre 1 y 512 Kbytes.
Arquitectura de Computadores
Memoria Cach - 30
Memoria Cach
de acceso
Probabilidad de acceso a
Probabilidad
< un bloque reemplazado !
al mismo bloque
Aumenta
tasa de
acierto
Pocos
bloques
Muchas
sustituciones
Las palabras
estn ms
distantes
Menor probabilidad
de ser referenciadas
Mayor tiempo
para traerlo de M.P.
Arquitectura de Computadores
Memoria Cach - 31
Tamao de bloque. Cuando se trae un bloque a la cach no solo se trae la palabra referenciada,
sino tambin unas cuantas adyacentes. As, debido al principio de localidad espacial, a medida que
el tamao del bloque aumenta, tambin aumenta la probabilidad de acierto. Sin embargo, esta
probabilidad empezar a disminuir si el tamao del bloque crece hasta el punto de que la
probabilidad de acceder a otras palabras del bloque sea menor que la probabilidad de reutilizar la
informacin que hay que reemplazar al traer un bloque grande a la cach.
Estas son las consecuencias negativas de los bloques de gran tamao:
1. Al ser los bloques ms grandes, se reduce el nmero de bloques de la cach. Ya que cada
bloque que se trae a la cach reemplaza a otro, si tenemos pocos bloques en la cach la
frecuencia de sustituciones de bloques ser muy alta, es decir, que un bloque se
reemplazar poco despus de haberse cargado, lo cual, segn el principio de localidad, no
es nada bueno.
2. A medida que el tamao del bloque se hace mayor, cada palabra adicional est ms
alejada de la que se ha referenciado, por lo que tiene menor probabilidad de ser
referenciada en un futuro prximo.
3. Cuando se trae un bloque a la cach desde la memoria principal, cuanto mayor sea el
bloque, ms tiempo se tarda en leerlo.
Arquitectura de Computadores
Memoria Cach - 31
El Tamao de Cach/Bloque
Memoria Cach
Tamao de la Cach
Tamao
bloque
1K
4K
16K
64K
256K
16
15,05%
8,57%
3,94%
2,04%
1,09%
32
13,34%
7,24%
2,87%
1,35%
0,70%
64
13,76%
7,00%
2,64%
1,06%
0,51%
128
16,64%
7,78%
2,77%
1,02%
0,49%
256
22,01%
9,51%
3,29%
1,15%
0,49%
Memoria Cach - 32
Los datos que se muestran en estas tablas estn extrados del texto de Hennessy & Patterson, en
el cual se indican los supuestos de los tiempos de acceso a memoria bajo los cuales se extraen
estas conclusiones.
Mediante los datos comparativos que mostramos en esta tabla se comprueba que para un tamao
de cach dado, la tasa de faltas disminuye a medida que aumenta el tamao del bloque. No
obstante, a partir de cierto tamao, esta tasa de faltas vuelve a crecer con el tamao del bloque.
Al principio, al aumentar el tamao de bloque disminuye la tasa de faltas debido al principio de la
localidad espacial. Sin embargo, ya que a medida que aumenta el tamao de bloque disminuye el
nmero de estos en la cach, se empieza a hacer notar el perjuicio debido al principio de la
localidad temporal, ya que resulta muy fcil que un bloque recin utilizado haya que expulsarlo
para sustituirlo por otro.
Se aprecia que a medida que aumenta el tamao de la cach se puede ir aumentando el tamao
de bloque. Esto quiere decir que, obviamente, el tamao ptimo del bloque tambin depende del
tamao de la cach. Tambin se aprecia que para las cachs de gran tamao, la mejora que se
consigue aumentando el tamao del bloque cada vez es ms pequea, mientras que en las
cachs de tamao pequeo o medio, las mejoras son mucho ms substanciales.
Arquitectura de Computadores
Memoria Cach - 32
El Tamao de Cach/Bloque
Memoria Cach
Tamao de la Cach
Tamao
bloque
Tiempo
por falta
1K
4K
16K
64K
256K
16
42
7,321
4,599
2,655
1,859
1,458
32
44
6,870
4,186
2,263
1,594
1,308
64
48
7,605
4,360
2,267
1,509
1,245
128
56
10,318
5,357
2,551
1,571
1,274
256
72
16,847
7,847
3,369
1,828
1,353
Memoria Cach - 33
En esta tabla podemos ver los tiempos medios de acceso a memoria que se obtienen para los
correspondientes casos de la tabla arriba mostrada.
En la segunda columna se muestra el tiempo de acceso a memoria en caso de producirse una falta
de cach. Como puede apreciarse, la penalizacin por falta de cach aumenta a medida que crece
el tamao y la complejidad de la cach.
Tambin se puede apreciar que el tiempo ptimo de acceso para cada tamao de cach no se
obtiene con el bloque ms grande, pues la tasa de aciertos disminuye cuando la probabilidad de
que se vuelva a referenciar un bloque que se ha expulsado de la cach (localidad temporal) es
mayor que la probabilidad de acceder a una palabra cercana a otra ya referenciada (localidad
espacial).
Se advierte que a medida que aumenta el tamao de la cach, disminuye el tiempo ptimo de
acceso (en negrita), pero obsrvese tambin que al principio, pequeos incrementos en el
tamao de la cach generan grandes mejoras en el tiempo, mientras que al final, podemos ver
que al pasar de una cach de 64K a otra de 256K, la mejora es ya muy pequea, sobre todo
comparada con el gran incremento de tamao. Por eso actualmente los tamaos de las cachs
oscilan entre 32 y 512 Kbytes.
Por ltimo, ntese que la combinacin tamao cach-bloque que ofrece el menor tiempo
medio de acceso no es la que tiene la menor tasa de faltas. Esto se debe a que en una cach
grande, al incrementar el tamao del bloque, mejora muy poco la tasa de aciertos y empeora
mucho la penalizacin por falta de cach.
Arquitectura de Computadores
Memoria Cach - 33
Nmero de Cachs
Memoria Cach
CPU
Cach
N2
Memoria
Principal
Cach N1
Arquitectura de Computadores
Memoria Cach - 34
Cuando apareci la memoria cach cada sistema dispona de una nica cach, pero ltimamente resulta
normal que se disponga de mltiples cachs. Hay dos cuestiones a considerar sobre el nmero de cachs
de un sistema:
cuntos niveles de cach debe haber?
se debe compartir una nica cach para instrucciones y datos o debe haber cachs separadas?
Niveles de cach.
La tecnologa actual de construccin de chips ha conseguido tal nivel de densidad de componentes que
permite la inclusin de una memoria cach dentro del mismo chip de la CPU. As, el acceso a una cach
interna no solamente es ms rpido que a una externa, sino que adems reduce la actividad de la CPU con
el bus, dejndolo libre para otros dispositivos que puedan necesitarlo, con lo que se incrementa la velocidad
general del sistema.
Al incluir la cach dentro del mismo chip de la CPU surge la cuestin merece la pena disponer de otra
cach externa? La respuesta es s. Por una parte ya hemos visto que no conviene que las cachs sean muy
grandes, pues se pierde velocidad de acceso; por otra parte, resulta que el espacio disponible en el chip
que contiene la CPU es muy reducido, lo cual limita mucho la capacidad de la cach interna. As pues, las
faltas de cach generan accesos a memoria principal con un tiempo de acceso que es varios rdenes de
magnitud ms lenta. Para paliar las faltas de la cach interna (primaria o de nivel 1) se instala una cach
externa (secundaria o de nivel 2), ms grande y ms lenta, aunque mucho ms rpida que la memoria
principal.
Aunque la mejora en el tiempo de acceso que conlleva la cach de nivel 2 no es comparable a la del nivel
1, diversos estudios estadsticos demuestran que merece la pena la instalacin de los dos niveles de
memoria cach.
Los microprocesadores actuales, como Pentium e Itanium, tienen 2 o tres niveles de cach. La de nivel 1 es
del orden de 32 Kbytes; la de nivel 2, de uno o dos MBytes; y la de nivel 3, de 6 a 24 MBytes.
Arquitectura de Computadores
Memoria Cach - 34
Nmero de Cachs
Memoria Cach
- Instrucciones
- Datos
SEPARADAS
(Arquitectura Harvard)
En procesadores con
prefetching y pipeline se
permite acceso a datos
mientras se extrae la
siguiente instruccin
Arquitectura de Computadores
Memoria Cach - 35
Arquitectura de Computadores
Memoria Cach - 35