Escolar Documentos
Profissional Documentos
Cultura Documentos
La jerarqua de memoria
Memoria cach
El tamao del banco de memoria cache debe ser:
Suficientemente grande para que el procesador resuelva
Localidad
Es el principio que hace que la
Si un dato es referenciado:
Localidad temporal:
temporal volver a ser
referenciado pronto
Localidad espacial:
espacial datos cercanos al
actual sern inmediatamente
referenciados
Localidad secuencial: Las instrucciones
suelen accederse en secuencia
Localidad
La localidad es una caracterstica de
Cache
Es una memoria pequea y rpida ubicada
guardar o esconder.]
Cache
1KB
256 KB
1ns
5 ns
1 GB
80 GB
100 ns
5 ms
Cache
Cach:
Mantiene las palabras (datos o
instrucciones) de memoria de mayor uso
Reduce tiempo de acceso promedio.
Controlador adivina aplicando
localidad
Caractersticas:
Alta velocidad
Capacidad pequea
Fsicamente: SRAM (varias veces ms
rpidas que DRAM)
Cache
Uso:
1. Cuando la CPU lee una posicin de memoria, primero
verifica si esta memoria se encuentra en la memoria
cach.
2. Si se encuentra en la cach (hit) la CPU la lee
directamente de ella.
3. Si no est en la memoria (miss) cach la CPU la busca en
la memoria principal, y la copia en la cach para futuras
lecturas.
Operacion de lectura de
Cache
Cache
Elementos de diseo:
Tamao
Funcin
de correspondencia
Algoritmo de sustitucin
Poltica de escritura
Tamao de lnea
Nmero de cachs
[ Memoria ]
N
Dir
Etiqueta Bloque
CK<<2n
C-1
K palabras
2n-1
Datos
Bloque:
K palabras
Memoria principal:
Cach:
[ Memoria ]
N
0
1
2
3
Dir
Etiqueta Bloque
Datos
0
Como hay menos lneas de cach que
bloques
de memoria principal, se necesita un1 algoritmo
2
que haga corresponder bloques de memoria
3
principal a lneas de cach.
:
K palabras
2n-1
Bloque:
K palabras
Memoria principal:
Cach:
[ Memoria ]
2. Funcin de correspondencia:
Algoritmo que hace corresponder bloques de
memoria con lneas de cach.
Existen tres formas de establecer esta
correspondencia:
directa (mapeo directo)
asociativa y
asociativa por conjuntos.
000
001
010
011
100
101
110
111
Cache
00001
00101
01001
01101
10001
Memory
10101
11001
11101
13 12 11
210
Byte
offset
Hit
10
20
Tag
Index
Index Valid Tag
Data
0
1
2
1021
1022
1023
20
32
Un bit de validez se
agrega para saber si la
entrada es vlida
Data
Hit
16
Tag
12
2 Byte
offset
Data
Index
V
Block offset
16 bits
128 bits
Tag
Data
4K
entries
16
32
32
32
Mux
32
32
Correspondencia Directa
Cache line
held
0
1
m+1
0, m, 2m, 3m2s-m
1,m+1, 2m+12s-
m-1
m-1, 2m-1,3m-12s-
[ Memoria ]
Correspondencia asociativa:
Permite que cada bloque de memoria principal pueda
cargarse en cualquier lnea de la cach.
La etiqueta (tag) identifica unvocamente un bloque de la
memoria principal.
Para determinar si un bloque est en la cach se debe
examinar todas las etiquetas de las lneas para buscar
coincidencia.
Esta bsqueda se hace en paralelo por hardware.
[ Memoria ]
Correspondencia asociativa:
La principal desventaja es la compleja circuitera necesaria
para examinar en paralelo las etiquetas de todas las lneas
de la cach.
[ Memoria ]
Correspondencia asociativa por conjuntos:
Es una solucin que agrupa las ventajas de los mtodos
anteriores.
La cach se divide en k conjuntos de n lneas.
asignacin de entradas es
totalmente asociativa.
Los conjuntos son de n-vias: es decir,
el bloque se asigna en cualquiera de
las n vas del conjunto
La asignacin de un bloque a un
conjunto es por mapeo directo.
directo
T ag
D a ta
0
T w o - w a y se t a s s o c ia t iv e
Set
Tag
D a ta
Tag
D a ta
4
5
F o u r- w a y s e t a s s o c ia tiv e
S et
T ag
D a ta
T ag
D a ta
Tag
D a ta
Tag
D a ta
0
1
E ig h t - w a y s e t a s s o c ia t iv e ( fu l ly a s s o c ia tiv e )
Tag
D a ta
Tag
D a ta
Tag
D a ta
Tag
D a ta
Tag
D a ta
Tag
D a ta
Ta g
D a ta
T ag
D a ta
Implementacin
Address
31 30
12 11 10 9 8
8
22
Index
0
1
2
Tag
Data
321 0
Tag
Data
Tag
Data
Tag
Data
253
254
255
22
4-to-1 multiplexor
Hit
Data
32
[ Memoria ]
3. Algoritmos de reemplazo:
1.
2.
3.
4.
[ Memoria ]
LRU (least recently used: menos recientemente usada):
Probablemente los bloques ms usados seguirn usndose
en el futuro cercano.
Probablemente los bloques no muy usados no se usarn
mucho en el futuro cercano.
Con esta poltica se desaloja de la cach el bloque que tiene
ms tiempo sin usarse.
Implementacin por hardware: cada vez que se usa un
bloque se debe almacenar alguna referencia al tiempo. Se
sustituye aquel bloque que tenga la referencia ms antigua.
[ Memoria ]
FIFO (first input first output):
Se hace una lista de la secuencia de la entrada de los
bloque a la memoria cach. Se desaloja la ms antigua.
Warning: no se desaloja aquella cuyo uso sea el ms
antiguo (eso es LRU), se desaloja aquella que su ingreso a
la cach es el ms antiguo. Es decir se sustituye aquel
bloque que ha estado ms tiempo en la cach.
Implementacin: se usa una lista circular con una manecilla
que indica el ms antiguo.
[ Memoria ]
LFU (least frecuently used: utilizado menos frecuentemente):
Se sustituye aquel bloque que ha experimentado menos
referencias.
Implementacin: cada bloque posee un contador, el que se
incrementa cada vez que el bloque ha sido referenciado. Se
sustituye aquel que tenga su contador ms bajo.
[ Memoria ]
Random (aleatorio):
Se sustituye un bloque cualquiera segn una funcin
aleatoria.
Estudios realizados mediante simulacin han mostrado que
la sustitucin aleatoria proporciona un desempeo
ligeramente menor a un algoritmo de reemplazo como los
anteriores basados en el grado de utilizacin.
[ Memoria ]
3. Polticas de escritura
Antes de que pueda ser reemplazado un bloque de la cach
es necesario comprobar si ha sido alterado en la cach y
no en la memoria principal. Si la memoria principal se
encuentra actualizada, el bloque puede ser sobreescrito. En caso contrario habr que actualizar la
memoria principal antes de sobre-escribir el bloque.
[ Memoria ]
Problemas de diseo:
1KB
256 KB
1ns
5 ns
1 GB
80 GB
100 ns
5 ms
[ Memoria ]
3. Polticas de escritura
Cundo escribir (de la cach a la memoria principal):
Hay dos tcnicas principales
1.
Inmediatamente
2.
Post-escritura
[ Memoria ]
Escritura inmediata:
Todas las operaciones de escritura se hacen tanto en la
cach como en la memoria principal inmediatamente. As se
asegura que el contenido de la memoria principal sea
siempre vlido.
Desventaja: se genera un trfico de sustancial a la memoria
principal que puede disminuir el desempeo.
Estudios sealan que el porcentaje de referencias a
memoria para escritura es del orden del 15%.
[ Memoria ]
Post-escritura:
Cada bloque de la cach posee un bit de actualizacin que
se inicializa en 0 cuando se carga un bloque nuevo en la
cach.
Cada vez que se escriba en el bloque el bit de actualizacin
se pone en 1.
Cuando se desee reemplazar el bloque, el bloque se copia a
la memoria principal slo si el bit de actualizacin es 1.
Desventaja: muchas veces hay porciones de la memoria
principal que no son vlidos. Los mdulos de I/O deben
acceder a ella a travs de la cach.
Cache Multinivel
Incialmente, se usaba slo una cach externa
(off-chip) a la CPU.
Si habia un miss se acceda directo a memoria
rapidas).
Idea: Colocar una cache ms grande detrs de
la cache, antes de la memoria principal
Actualmente se tienen sistemas de con
caches on-chip y off-chip.
Cache Multinivel
Adems, existe una clasificacin de cachs unificadas y
otras partidas:
Cache Multinivel
[ Memoria ]
5. Tamao del bloque
[ Memoria ]
5. Tamao del bloque
Qu tan grande debe ser el bloque? cuntas palabras
contiguas deben cargarse tambin en la cach?
Ni pocas, ni muchas!! La tasa de aciertos aumenta a
medida que aumenta el tamao del bloque, pero
empieza a disminuir si aumenta demasiado esto
porque las palabras ya dejan de estar tan contiguas y
nunca o casi nunca son referenciadas.
Estudios sealan que lo mejor est entre 4 y 8 palabras.
Pentium 4 Cache
80386 no on chip cache
80486 8k using 16 byte lines and four way
L1 caches
8k bytes, 64 byte lines, four way set associative
L2 cache
Feeding both L1 caches, 256k, 128 byte lines, 8 way set
associative
L3 cache on chip
Referencias
Captulo 4 y 5 Stallings
Captulo 6 Null
Captulo 4 - Tanenbaum