Vous êtes sur la page 1sur 0

Arquitectura de Computadores Memoria Cach - 1

Arquitectura de Computadores Memoria Cach - 1


Arquitectura
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
En el captulo anterior comenzamos a ver cmo mejorar las prestaciones de un ordenador
convencional. Lo hicimos empezando por ver la forma de aumentar el ritmo de ejecucin de
instrucciones en la CPU.
Ahora vamos a ocuparnos de cmo mejorar el tiempo de acceso a los datos que estn en memoria
principal. Para ello incorporaremos la memoria cach; un nuevo nivel en la jerarqua de memorias
situado entre la CPU y la memoria principal.
Veremos cmo una memoria tan pequea (en comparacin 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
Arquitectura de Computadores Memoria Cach - 2
Memoria Cach Jerarquas de Memoria
- La CPU/MMU
- El S. O.
Coste por bit
Capacidad
Tiempo de acceso
Frecuencia de acceso
Registros
Cach N1-N2
Memoria Principal
Disco Magntico
Cinta Magntica Disco ptico
Quin se ocupa
del transvase
entre memorias
?
Como vimos en el captulo de la memoria, 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 - 3
Arquitectura de Computadores Memoria Cach - 3
Memoria Cach Fundamento
Principio de la
Localidad de Referencia
La ejecucin de los programas
hace repetidas referencias a las
mismas porciones de instrucciones
o datos
CPU
(bytes)
Cach
(Kbytes)
Memoria
Principal
(Mbytes)
Por Qu !
Por qu es tan til
una memoria tan pequea
?
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 la localidad de referencia dice que los accesos a memoria que realiza la CPU no
estn uniformemente distribuidos por todo el espacio de direccionamiento de la memoria. Esto se
debe a dos motivos.
Por una parte tenemos que el contenido de cada programa no est esparcido por la memoria, sino
que sus instrucciones y datos estn contenidos en una o varias secciones de memoria contigua.
Por otra parte, 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 ejecuta repetidamente. Estas
instrucciones pueden estar formando parte de un bucle, bucles anidados, o unos cuantos
procedimientos a los que se llama iterativamente. La secuencia detallada de la ejecucin de las
instrucciones no es significativa, lo que realmente importa es que muchas instrucciones localizadas
en reas concretas del programa se ejecutan repetidamente durante un periodo de tiempo,
mientras que al resto del programa solo se accede muy de vez en cuando.
Arquitectura de Computadores Memoria Cach - 4
Arquitectura de Computadores Memoria Cach - 4
Memoria Cach Fundamento
Es muy probable
repetir
instrucciones
Localidad
Temporal
Localidad
Espacial
... los accesos a memoria que realiza la CPU
no estn uniformemente distribuidos
por todo el espacio de direccionamiento
Porque ...
Es muy probable
ejecutar
instrucciones
cercanas
Unidad de
transferencia:
BLOQUE
El Principio de Localidad de Referencia se debe a que los accesos a memoria que realiza la
CPU no estn uniformemente distribuidos por todo el espacio de direcciones, sino que se
concentran en las reas donde estn las instrucciones o los datos del programa en ejecucin, o,
ms concretamente, de la porcin del programa que en un momento determinado se est
ejecutando.
Este principio se manifiesta en dos aspectos: temporal y espacial. La localidad de referencia
temporal significa que una instruccin que se acaba de ejecutar recientemente es muy probable
que se vuelva a ejecutar en un futuro muy prximo. El aspecto espacial quiere decir que las
instrucciones que se encuentran en la proximidad de una instruccin recientemente ejecutada (en
cuanto a sus direcciones en memoria) tambin es muy probable que se ejecuten muy pronto. A los
datos u operandos de un programa les sucede lo mismo, no estn dispersos por toda la memoria,
sino que estn agrupados en una zona de la misma, y ocupando direcciones contiguas.
Si el segmento activo de un programa se puede ubicar en una rpida memoria cach, el tiempo
total de ejecucin puede reducirse drsticamente.
Arquitectura de Computadores Memoria Cach - 5
Arquitectura de Computadores Memoria Cach - 5
Memoria Cach Introduccin
CPU
(bytes)
Cach
(Kbytes)
Memoria
Principal
(Mbytes)
Bloque
Palabra
Conceptualmente el funcionamiento de una memoria cach es muy simple. La circuitera de control
de la memoria est diseada 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 rpidamente. 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 al dato referenciado. En el contexto de las cachs, se emplea el trmino 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 lnea.
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 (solamente la palabra referenciada, no
el bloque completo.
Arquitectura de Computadores Memoria Cach - 6
Arquitectura de Computadores Memoria Cach - 6
Memoria Cach Introduccin
Acierto de cach
C P U L E C T U R A / E S C R I T U R A
Poltica de Ubicacin
(funcin de correspondencia)
Poltica de Sustitucin
Es una escritura !
Poltica de Actualizacin
Si est llena
Cul se sustituye?
Falta de cach
No est en la cach
Dnde se coloca?
Traer bloque de
memoria principal
Bloque en la cach
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
Arquitectura de Computadores Memoria Cach - 7
Memoria Cach Introduccin
Efectividad de la Memoria Cach
Tacceso = Tc Pa + Tmp (1 - Pa)
Pa : Probabilidad de acierto
Tc : Tiempo de acceso a cach
Tmp : Tiempo de acceso a M. P.
EJEMPLO
Tmp = 500 s
Tc = 50 s
Pa = 0,99
Tacceso = 50 0,99 + 500 0,01 = 54,5 s
Merece la pena la cach ?
Tiempo medio de acceso a memoria
ndice
de mejora
Tsin cach
Tcon cach
=
500
54,4
= 9,19 =
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 es mayor que en un sistema de memoria sin
cach. 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
Arquitectura de Computadores Memoria Cach - 8
Memoria Cach Estructura
Extraer la palabra
con direccin D y
entregarla a la CPU
Se recibe dir. D
de la CPU
Asignar espacio en cach
para el bloque de M.P.
Leer de M.P. el bloque
y llevarlo a la cach
Operacin de lectura en un sistema con cach
Est en cach
el bloque que
contiene D
No
Si
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 - 9
Arquitectura de Computadores Memoria Cach - 9
Memoria Cach Estructura
bloque 0
(de k palabras)
2
n
-1
0
1
2
3
4
5
6
7
8
bloque 1
bloque M-1
Dir. Mem. Principal
Bloques >> Lneas
0
1
2
3
4
lnea C-1
etiqueta bloque V
k
palabras
Mem. Cach
Sabemos que la memoria principal est formada por un mximo de 2
n
palabras 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 palabras cada uno; es decir, por 2
n
/K
bloques. La cach por su parte, est formada por C entradas de K palabras 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 palabra 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 - 10
Arquitectura de Computadores Memoria Cach - 10
Memoria Cach Polticas de Ubicacin
Funcin de
correspondencia
Mem. Principal
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
etiqueta
lnea 0
lnea 1
linea 2
lnea 3
. . .
. . .
lnea 1022
lnea 1023
Cach
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 - 11
Arquitectura de Computadores Memoria Cach - 11
Memoria Cach Polticas de Ubicacin
Directa
En qu lnea de la cach
se coloca cada bloque
POLTICA DE UBICACIN
(Funcin 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 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 - 12
Arquitectura de Computadores Memoria Cach - 12
Polticas de Ubicacin Correspondencia Directa
Num_Lnea = NumBloque mdulo Lneas_en_cach
Lnea cach Bloques de memoria principal
Cach de
L lneas
0
1
. . .
L-1
0
1
. . .
L-1
, L , 2L , 3L
, 2L+1 , 3L+1
, ...
, ...
, 2L-1
, L+1
, 3L-1 , ... , 4L-1
Funcin de Correspondencia
La funcin ms sencilla de correspondencia es la conocida como correspondencia directa, segn
la cual cada bloque de memoria principal solamente puede ubicarse en una nica lnea de la
cach. La lnea que le corresponde a cada bloque se obtiene mediante este algoritmo:
Lnea_cach = Nmero_de_bloque mdulo Lneas_en_la cach
En la transparencia pueden verse los bloques de memoria principal que pueden ubicarse en cada
lnea de la cach si son referenciados por la CPU.
Arquitectura de Computadores Memoria Cach - 13
Arquitectura de Computadores Memoria Cach - 13
Polticas de Ubicacin Correspondencia Directa
Bloque Despl.
L
0
Comp.
. . .
. . .
. . .
. . .
. . .
etiq. 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+1
pal. 4j+2
pal. 4j+3
. . .
. . .
. . .
B
J
b
d
Falta de cach
Acierto
+
l d b-l
etiq. lnea
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 palabra o byte dentro de un bloque de
memoria principal. Es decir, es el desplazamiento de la palabra dentro de su bloque.
Los restantes b bits de la direccin indican uno de los 2
b
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 2
l
= 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 palabra 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 - 14
Arquitectura de Computadores Memoria Cach - 14
Polticas de Ubicacin Correspondencia Directa
Ejemplo
Tamao cach: 4 Kbytes
Tamao bloque: 4 bytes
Memoria principal: 64 Kbytes (16 Kbloques
de 4 bytes)
Cach de 1 Klnea
de 4 bytes
Lnea cach Bloques de memoria principal
0 0, 400, 800, C00, ..., 3C00
1 1, 401, 801, C01, ..., 3C01
. . . . . .
3FF 3FF, 7FF, BFF, ..., 3FFF
Direccin
M.P.
Nmero de bloque despl.
etiqueta lnea
2 10 4
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 - 15
Arquitectura de Computadores Memoria Cach - 15
Polticas de Ubicacin Correspondencia Directa
0000 13579246 000
0000 11223344 001
0110 87654321 002
... ... ...
1101 11223344 3FE
1111 22222222 3FF
Etiq. Datos Lnea
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
Num. bloque desp. datos
Direcciones de M.P.
Cach
4 32 10
...Ejemplo
Hay Colisiones !
Hay Colisiones !
Las direcciones de memoria estn descompuestas en nmero de bloque y desplazamiento. El
nmero de bloque lo mostramos dividido en dos campos, para ver claramente la etiqueta de cada
bloque y la lnea que le corresponde.
As, podemos ver cmo al bloque 0 le corresponde la lnea 0; al bloque 1, la lnea 1; y en ltimo
lugar, al bloque 3FFF le corresponde la ltima lnea, la 3FF.
Como ya sabamos, al bloque 400 H, tambin le corresponde la lnea 0, pero como se puede
apreciar, el contenido de esta lnea es el del bloque 0, y es razonable, puesto que la etiqueta de la
lnea 0 es la correspondiente al bloque 0, y no la del bloque 400 H, que tiene una etiqueta 0001.
La tcnica de la correspondencia directa es simple y econmica, pues la ubicacin se obtiene
directamente a partir del algoritmo de la funcin de correspondencia.
Sin embargo, el problema que presenta la correspondencia directa son las colisiones; es decir,
que a cada lnea de cach (donde slo cabe un bloque) le corresponden muchos bloques de
memoria principal. As, si un programa referencia repetidamente dos palabras a cuyos bloques les
corresponde la misma lnea de la cach, los dos bloques estarn continuamente expulsndose de
la cach, con lo que la tasa de aciertos descender drsticamente an cuando la cach no est
completamente ocupada.
Arquitectura de Computadores Memoria Cach - 16
Arquitectura de Computadores Memoria Cach - 16
Polticas de Ubicacin Correspondencia Asociativa
Funcin de Correspondencia
El bloque puede ubicarse en cualquier lnea
de la cach
Falta de cach
+
Cach llena
Poltica de
Sustitucin
La memoria asociativa
es muy cara
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.
La desventaja obvia de la correspondencia asociativa es el incremento econmico que genera la
electrnica adicional necesaria.
Arquitectura de Computadores Memoria Cach - 17
Arquitectura de Computadores Memoria Cach - 17
Polticas de Ubicacin Correspondencia Asociativa
. . .
. . .
Cach
etiq. datos
Bloque Despl.
Comp.
Acierto Fallo
Comp.
Comp.
Acierto Fallo
Acierto Fallo
Lnea 0
Lnea 1
Lnea 2

Dir. de memoria
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.
Arquitectura de Computadores Memoria Cach - 18
Arquitectura de Computadores Memoria Cach - 18
Polticas de Ubicacin Correspondencia Asociativa
Nuestro
Ejemplo
Tamao cach: 4 Kbytes
Tamao bloque: 4 bytes
Memoria principal: 64 Kbytes (16 Kbloques
de 4 bytes)
Cach de 1 Klnea
de 4 bytes
Lnea cach Bloques de memoria principal
0 cualquiera
1 cualquiera
. . . . . .
3FF cualquiera
Direccin
M.P.
Nmero de bloque (etiqueta) despl.
2 14
En esta transparencia mostramos la aplicacin de la funcin de correspondencia asociativa a la
arquitectura del ejemplo que estamos utilizando para ilustrar las polticas de ubicacin.
Como vemos, 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.
Arquitectura de Computadores Memoria Cach - 19
Arquitectura de Computadores Memoria Cach - 19
Polticas de Ubicacin Correspondencia Asociativa
0000 13579246 000
0001 11223344 001
0400 12233445 002
... ... ...
334A 11223344 3FE
3FFF 22222222 3FF
Etiq. Datos Lnea
Cach
14 32 10
Num. bloque desp. datos
Direcciones de M.P.
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
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 - 20
Arquitectura de Computadores Memoria Cach - 20
Polticas de Ubicacin Correspondencia Asociativa de Conjuntos
La cach se divide en C conjuntos
de L lneas cada uno
Poltica de sustitucin dentro de cada conjunto
A muchos bloques les corresponder
el mismo conjunto
Funcin de Correspondencia
Num_Conjunto = Num_bloque mdulo Num_Conjuntos
La correspondencia asociativa de conjuntos combina la economa de la correspondencia
directa con la tasa de aciertos de la correspondencia asociativa. Consiste en agrupar las lneas de
la cach en conjuntos, de tal forma que la funcin de correspondencia permita que un bloque de la
memoria principal pueda ubicarse en cualquier lnea de un conjunto concreto.
Con esta poltica, la memoria cach se divide en C conjuntos de L lneas cada uno. As, el nmero
M de lneas 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 mdulo C
Una vez averiguado el conjunto c de la cach que le corresponde al bloque b, ste puede ubicarse
en cualquiera de las lneas del conjunto c.
Arquitectura de Computadores Memoria Cach - 21
Arquitectura de Computadores Memoria Cach - 21
Polticas de Ubicacin Correspondencia Asociativa de Conjuntos
Comparador
Falta de cach
Acierto
b+d
Bloque Despl.
Dir. de memoria
d
C
0 . . .
Cach
etiq. bloques
C
1
. . .
. . .
b
d
+
+
Mem. principal
pal. 0
pal. 1
pal. 2
pal. 3
. . .
. . .
B
0
pal. 4j
pal. 4j+1
pal. 4j+2
pal. 4j+3
. . .
. . .
. . .
B
J
b-c c
etiq. conjunto
Tambin de manera equivalente a la correspondencia directa, cuando la CPU suministra una
direccin para acceder a la memoria principal, la direccin se descompone en dos campos: bloque
y desplazamiento. Ya que todos los bloques de memoria principal no caben en la cach, el campo
de bloque se divide en dos campos: conjunto y etiqueta. Ya sabemos que la operacin nmero
mdulo 2
n
es lo mismo que tomar los n bits de menor peso del nmero, por lo que el conjunto
asignado a un bloque de memoria se obtiene con los c bits siguientes al desplazamiento. Por
ltimo, los bits restantes (los de mayor peso) forman la etiqueta.
Un bloque de memoria solamente puede estar en un conjunto de la cach, pero dentro del
conjunto hay varios bloques, por sto es necesario disponer de la etiqueta, pues no puede haber
dos bloques del mismo conjunto con la misma etiqueta.
Obsrvese que si el nmero de lneas por conjunto se lleva a los casos extremos, se da lugar a
las otras dos correspondencias que hemos visto. Cuando el nmero de lneas por conjunto es 1, se
est en el caso de la correspondencia directa; mientras que si la cach est formada por un nico
conjunto que contiene todas las lneas de la cach, se trata de una correspondencia
completamente asociativa.
Normalmente se suelen utilizar 2 lneas por conjunto (memoria asociativa de dos vas), lo cual
mejora notablemente la tasa de aciertos de la correspondencia directa. A medida que se aumenta
el nmero de lneas por conjunto, aumenta el coste de la memoria pero sin conseguir una mejora
significativa.
Con esta tcnica se disminuye mucho el coste de la electrnica adicional de la correspondencia
asociativa, pues mientras que en sta se requieren tantos comparadores como lneas, en la
asociativa de conjunto de dos vas, solamente son necesarios dos comparadores.
Arquitectura de Computadores Memoria Cach - 22
Arquitectura de Computadores Memoria Cach - 22
Polticas de Ubicacin Correspondencia Asociativa de Conjuntos
Nuestro
Ejemplo
Tamao cach: 4 Kbytes
Tamao bloque: 4 bytes
Conjuntos de 4 bloques
Memoria principal: 64 Kbytes (16 Kbloques
de 4 bytes)
Cach de 1 Klnea
de 4 bytes
Cach de 256
conjuntos
Direccin
M.P.
Nmero de bloque despl.
etiqueta conjunto
2 8 6
Cjto. cach Bloques de memoria principal
0 0, 100, 200, ..., 3F00
1 1, 101, 201, ..., 3F01
. . . . . .
FF FF, 1FF, 2FF, ..., 3FFF
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 - 23
Arquitectura de Computadores Memoria Cach - 23
Polticas de Ubicacin Correspondencia Asociativa de Conjuntos
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
Num. bloque desp. datos
Direcciones de M.P.
000000 13579246
000001 AB122334
010100 32454622
010101 67524425
000000 11223344
000110 ABCD1234
000001 123ABC45
100000 98712365
... ... ...
... ... ...
000001 11223344
111111 22222222
111000 99999999
111001 88888888
Etiq. Datos Cjto.
6 32 8
CACH
00
01
FF
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 - 24
Arquitectura de Computadores Memoria Cach - 24
Memoria Cach Polticas de Sustitucin
Poltica de Sustitucin
FALLO + LNEAS OCUPADAS
Corr. Directa Corr. Asociativa Corr. Asociativa
de Conjuntos
Sustituir el Sustituir alguno Sustituir cualquiera
antiguo del conjunto de la cach
Basadas en estadstica No basadas en estadstica
LRU, LFU
Bueno en general
Falla con algunas matrices
Random, FIFO
Buena tasa de aciertos
No falla con las matrices
Fcil y econmico
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 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 - 25
Arquitectura de Computadores Memoria Cach - 25
Memoria Cach Polticas de Sustitucin
Tamao LRU Random LRU Random LRU Random
16 Kb 5,18% 5,69% 4,67% 5,29% 4,39% 4,96%
Dos Vas Cuatro Vas Ocho Vas
Memoria Asociativa de Conjuntos
Comparacin de tasa de fallos
segn diversos tamaos y polticas de sustitucin
64 Kb 1,88% 2,01% 1,54% 1,66% 1,39% 1,53%
256 Kb 1,15% 1,17% 1,13% 1,13% 1,12% 1,12%
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 - 26
Arquitectura de Computadores Memoria Cach - 26
Memoria Cach Polticas de Escritura
Cuestiones ante
una Operacin
de Escritura
Problema de la Coherencia
de las Cachs

Falta de Cach en Escritura


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 - 27
Arquitectura de Computadores Memoria Cach - 27
Memoria Cach Polticas de Escritura
Problema de la
Coherencia de las Cachs
No hay incoherencia
Sobrecarga de tiempo
Mucho trfico
Hay incoherencia
Rpida, poco trfico
Polticas de Actualizacin
Escritura Inmediata Escritura Diferida
(write through) (copy back)
Ante una escritura...
El problema de la coherencia de cachs tiene que ver con la poltica de actualizacin. Aqu hay dos
situaciones a considerar. En la primera simplemente nos encontramos con que puede haber ms de un
dispositivo que acceda a la memoria principal, por ejemplo, dispositivos de E/S con DMA. Segn esto,
cuando se modifica una palabra en la cach la correspondiente palabra en memoria principal queda
obsoleta. Esto es lo que se conoce como el problema de la coherencia de las cachs. Tambin puede
suceder que sea el dispositivo de E/S el que modifica la palabra en memoria, con lo que entonces es la
palabra en la cach la que queda obsoleta.
La situacin ms complicada surge cuando mltiples CPUs con memorias cach locales comparten la
misma memoria principal, pues cuando una CPU modifica una palabra en su cach, se debe invalidar la
palabra correspondiente de las cachs de las dems CPUs. El tratamiento de este problema con mltiples
CPUs tiene cierta complejidad, por lo que aqu vamos a limitarnos a comentar simplemente las polticas de
actualizacin en un entorno con una sola CPU.
La tcnica ms simple es la escritura o copia inmediata (write through), segn la cual todas las
escrituras se realizan tanto en la cach como en la memoria principal, asegurando as que la memoria
principal siempre est actualizada, lo cual simplifica el problema de la coherencia en entornos
multiprocesadores. El inconveniente que presenta es la sobrecarga en el tiempo de escritura y la
cantidad de trfico que genera en los buses del sistema.
La otra alternativa es la escritura o copia diferida (copy back), en la cual una operacin de escritura
solamente escribe en la cach.
En esta ltima alternativa, cuando se escribe o actualiza un bloque de la cach, se activa el bit
modificado (dirty bit) asociado a esa lnea, de tal manera que cuando hay que reemplazar un bloque,
si su bit modificado est activado entonces el bloque debe actualizarse en memoria principal, por lo
que hay que escribirlo en ella antes de ocupar la lnea de la cach con el nuevo bloque. El problema
que tiene es que, en un momento dado, hay datos en memoria principal que no estn actualizados, lo
cual puede originar problemas de coherencia de datos.
Arquitectura de Computadores Memoria Cach - 28
Arquitectura de Computadores Memoria Cach - 28
Memoria Cach Polticas de Escritura
Dos Opciones
Falta de Cach en Escritura ?
Escritura sin asignacin Escritura con asignacin
Escribir directamente 1 Traer el dato a cach
en la memoria 2 Escribir en la cach
Ante una escritura...
Escritura diferida Escritura con asignacin
Escritura inmediata Escritura sin asignacin
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
Arquitectura de Computadores Memoria Cach - 29
Memoria Cach El Tamao de la Cach
Barata y rpida
Muchas faltas de cach
Cara y lenta
No mejora
la tasa de aciertos
Velocidad aceptable
Tasa de aciertos alta
1 Kb
512 Kb
Depende de
las aplicaciones
Tamao optimo?
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
Arquitectura de Computadores Memoria Cach - 30
Memoria Cach El Tamao del Bloque
Aumenta
tasa de
acierto
Pocos
bloques
Menor probabilidad
de ser referenciadas
Muchas
sustituciones
<
Probabilidad acceso
al mismo bloque
Probabilidad acceso a un
bloque reemplazado
!
Las palabras
estn ms
distantes
Mayor tiempo
para traerlo de M.P.
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
Arquitectura de Computadores Memoria Cach - 31
Memoria Cach El Tamao de Cach/Bloque
Tamao
bloque 1K 4K 16K 64K 256K
16 15,05% 8,57% 3,94% 2,04% 1,09%
Tamao de la Cach
Tasa de faltas de cach, segn el tamao de bloque,
para distintos tamaos de cach
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%
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
Arquitectura de Computadores Memoria Cach - 32
Memoria Cach El Tamao de Cach/Bloque
32 44 6,870 4,186 2,263 1,594 1,308
Tamao Tiempo
bloque por falta 1K 4K 16K 64K 256K
16 42 7,321 4,599 2,655 1,859 1,458
Tamao de la Cach
Tiempo medio de acceso a memoria, segn el tamao
de bloque, para distintos tamaos de cach
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
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
Arquitectura de Computadores Memoria Cach - 33
Memoria Cach Nmero de Cachs
C P U
Cach N1
Cach
N2
Memoria
Principal
Gran ventaja de la cach N1
DEJA LIBRE EL BUS
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? y 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 de la propia CPU. 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 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.
Arquitectura de Computadores Memoria Cach - 34
Arquitectura de Computadores Memoria Cach - 34
Memoria Cach Nmero de Cachs
En los programas hay
dos grandes reas
- Instrucciones
- Datos
En procesadores con
prefetching y pipeline se
permite acceso a datos
mientras se extrae la
siguiente instruccin
Una cach compartida o dos separadas?
COMPARTIDA SEPARADAS
(Arquitectura Harvard) Equilibrio automtico
de instrucciones y datos
Mayor tasa de aciertos
Ms simple de disear
e implementar
Cachs compartidas o separadas.
Los diseos de los primeros sistemas que incluyeron memoria cach disponan de una nica
cach para almacenar las referencias tanto a operandos como a instrucciones.
Hay dos ventajas potenciales para mantener la cach unificada:
1. Para un tamao de cach dado, la versin unificada ofrece una mayor tasa de aciertos
que la dividida, ya que se establece automticamente el equilibrio necesario entre el
espacio utilizado para las instrucciones y para los datos (operandos). Es decir, que si, por
ejemplo, un modelo de ejecucin tiende a realizar ms referencias a instrucciones que a
datos, la cach tender a llenarse con ms instrucciones que con datos.
2. Es mucho ms simple de disear e implementar una cach compartida.
A pesar de estas ventajas, los potentes procesadores de hoy da tienden a utilizar cachs
separadas o divididas (arquitectura Harvard): una dedicada a instrucciones y otra a los datos u
operandos, pues al disponer de la lectura adelantada de instrucciones (prefetching) y de ejecucin
segmentada de las instrucciones (pipeline), con cachs separadas se permite el acceso a un dato
al mismo tiempo que la unidad de prefetching extrae la siguiente instruccin.

Vous aimerez peut-être aussi