Línea

Anuncio
Memoria Cache
Memorias: Evolución
Pioneros:
Maurcice Wilkes con la primer memoria de tanque
de mercurio para la computadora EDSAC. 2 bytes:
1947.
Visionarios….
"640K debe ser suficiente para cualquiera.”
Bill Gates, 1981
Tecnología de memorias: RAM Dinámica
CAS
RAS
Cd
Buffer
Bit de datos de salida al bus
Transistor
Diagrama de un bit elemental de DRAM (Dynamic RAM).
 Almacena la información como una carga en una capacidad espuria
de un transistor.
 Una celda (un bit) se implementa con un solo transistor ⇒ máxima
capacidad de almacenamiento por chip.
 Ese transistor consume mínima energía ⇒ Muy bajo consumo.
 Al leer el bit, se descarga la capacidad ⇒ necesita regenerar la carga
⇒ aumenta entonces el tiempo de acceso de la celda.
Tecnología de memorias: RAM Estática
Línea de Bit
Línea de Bit
Selección
1
3
4
2
5
6
Diagrama del biestable de un bit básico de SRAM (Static RAM).
 Almacena la información en un biestable.
 Una celda (un bit) se compone de seis transistores ⇒ menor
capacidad de almacenamiento por chip.
 3 transistores consumen energía máxima en forma permanente y los
otros 3 consumen mínima energía ⇒ Mayor consumo
 La lectura es directa y no destructiva ⇒ tiempo de acceso muy bajo
Estructura de Bus clásica
Desde fines de los años 80,
los procesadores
desarrollaban velocidades
muy superiores a los
Bus Local del tiempos de acceso a
Procesador memoria.

Procesador
Procesador
Buffer
Buffer
de
de
Datos
Datos
ADDRESS
DATOS
CONTROL
Bus
Bus de
de
Control
Control
Buffer
Buffer
de
de
Address
Address
BUS DEL SISTEMA
Memoria
Memoria del
del
Sistema
Sistema
E/S
E/S del
del
Sistema
Sistema

En este escenario, el
procesador necesita generar
wait states para esperar
que la memoria esté lista
(“READY”) para el acceso.

¿Tiene sentido lograr altos
clocks en los procesadores si
no puede aprovecharlos por
tener que esperar (wait) a
la memoria?
Crecimiento de la velocidad de clock de
las CPU versus memoria
1100
1000
Pentium III
1GHz
900
800
700
600
Pentium II
400 MHz.
500
400
486 DX4
100 MHz.
300
Memorias
200
386 DX
33 MHz
100
89
90
91
92
93
94
95
96
97
98
99
00
El problema

RAM dinámica (DRAM)






Consumo mínimo.
Capacidad de almacenamiento comparativamente alta.
Costo por bit bajo.
Tiempo de acceso alto (lento), debido al circuito de regeneración
de carga.
Si construimos el banco de memoria utilizando RAM dinámica, no
aprovechamos la velocidad del procesador.
RAM estática (SRAM)





Alto consumo relativo.
Capacidad de almacenamiento comparativamente baja.
Costo por bit alto.
Tiempo de acceso bajo (es mas rápida).
Si construimos el banco de memoria utilizando RAM estática, el
costo y el consumo de la computadora son altos.
La solución: Memoria cache

Se trata de un banco de SRAM de muy alta velocidad, que
contiene una copia de los datos e instrucciones que están
en memoria principal

Se busca que esta copia esté disponible justo cuando el
procesador la necesita permitiéndole acceder a esos
ítems sin recurrir a wait states.

Combinada con una gran cantidad de memoria DRAM,
para almacenar el resto de códigos y datos, resuelve el
problema mediante una solución de compromiso típica.

Requiere de hardware adicional que asegure que este
pequeño banco de memoria cache contenga los datos e
instrucciones mas frecuentemente utilizados por el
procesador.
Referencias




El tamaño del banco de memoria cache debe ser:

Suficientemente grande para que el procesador resuelva la mayor
cantidad posible de búsquedas de código y datos en esta
memoria asegurando una alta performance

Suficientemente pequeña para no afectar el consumo ni el costo
del sistema.
Se dice que se logra un hit cuando se accede a un ítem
(dato o código) y éste se encuentra en la memoria cache.
En caso contrario, se dice que el resultado del acceso es
un miss.
Se espera un hit rate lo mas alto posible
hit rate=
Cantidad de accesos con presencia en Memoria Cache
Cantidad total de accesos a memoria
Operación de Lectura de memoria
Inicio
CPU envía señal
de lectura
Hit!!
Busca ítem
en cache
Busca ítem en
cache y envía a la
CPU
Miss
Busca ítem en
memoria del
sistema
Escribe ítem en el
cache
Actualiza
directorio cache
Fin
Envía ítem a la
CPU
Estructura de Bus del sistema con cache
Procesador
Procesador
ADDRESS
DATOS
CONTROL
Memoria
MemoriaCONTROLControlador
Controlador de
de
cache
Memoria
caché
cache
Memoria caché
Buffer
Buffer
de
de
Datos
Datos
Bus Local del
procesador
Buffer
Buffer
de
de
Bus Local del
Address
Address controlador
cache
Bus
Bus de
de
Control
Control
BUS DEL SISTEMA
Memoria Cache
Procesador
Procesador
Bus del Procesador
(Bus local)
Baja capacidad, pero ¡¡accesible
a la velocidad del procesador!!
Subsistema caché
Controlador
Controlador de
de
Memoria
caché
Memoria caché
Memoria
Memoria
SRAM
SRAM
ultrarrápida
ultrarrápida
(cache)
(cache)
Bus del Sistema
Control del bus local
del controlador cache
Memoria
DRAM
Hardware adicional. Mantiene el
cache con los datos mas
frecuentemente utilizados por el
procesador
Interfaz
con el
Arbitración del Bus
Bus Local
Control del bus Local
del Procesador
Interfaz con
el
Procesador
Decodificaciones del bus
local del procesador
Configuración
Bus de Address
del procesador
Directorio
de Cache
Control del
Cache
Bus de Snoop
Bus de Control
de la Memoria
Cache
Como trabaja el controlador cache

El controlador cache trabaja mediante dos principios que surgen de
analizar el comportamiento de los algoritmos de software que se
emplean habitualmente.

Principio de vecindad temporal:
temporal Si un ítem es referenciado, la
probabilidad de ser referenciado en el futuro inmediato es alta.

Principio de vecindad espacial:
espacial Si un ítem es referenciado, es
altamente probable que sean referenciados sus ítems vecinos.

Ejemplo:
for (i = 0 ; i < 256 ; i++ ){
suma = 0.0f;
for (j = 0 ; (j <= i && j < 256) ; j++)
suma += v0[i-j] * v1[j];
fAux[i] = suma;
}

i, j, suma, se utilizan a menudo. Por lo tanto si se mantienen en el cache,
el tiempo de acceso a estas variables por parte del procesador es óptimo.
Estructura de memoria cache
Tag
Línea
Dirección
0
1
2
3
4
5
6
7
8
9
Línea: Elemento mínimo de palabra de datos
dentro del cache.
Corresponde a un múltiplo del tamaño de la
palabra de datos de memoria.
Set: Conjunto de líneas.
En el cache se actualiza el set completo
(Principio de vecindad espacial)
Línea
Ancho de palabra
Organización del caché: Mapeo Directo
Bit de validez del Tag
1 Línea = 4 bytes
1 Set = 8 líneas
Línea
Tag
17 bits
Set 0
Línea
Bits de validez
de las líneas
32 Kbytes
(igual tamaño
Que el del cache)
Set 1
Pag.217 -1
Set 1023
Directorio de Caché Interno
Memoria Caché
32 KB
Pag.0
4 Gbytes de Memoria Principal
Organización del caché de mapeo directo
Caché Address (1 de 8 KLíneas)
A 15 A 14
A 31
Tag de 17 bits (1 de las 217 páginas)
A5A4 A 2
Set Address (1 de 1024 sets) Selector de
Línea
(1 de 8 líneas)
Bit de validez del Tag
0
Nro de Set
Bits de validez de la línea
1
1023
Directorio de
Caché Interno
Organización del caché: Asociativo de dos
vías
Bit de validez del Tag
Línea
Tag
Set 0
18 bits
Bits de Bits
validez LRU
de las
líneas
Bits
LRU
Línea
Línea
18 bits
18 bits
Set 1
18 bits
Bits
LRU
16 Kbytes
(igual tamaño Que el de
cada banco del cache)
18 bits
1 Línea = 4 bytes
1 Set = 8 líneas
Pag.218 -1
18 bits
Set 511
Directorio de Caché Interno
Memoria Caché 2 x 16 KB
Pag.0
4 Gbytes de Memoria Principal
Organización del caché asociativo de dos
vías
Caché Address (1 de 4 KLíneas)
A31
A14 A13
Tag de 18 bits (1 de las 218 páginas)
A5 A4
Set Address (1 de 512 sets) Selector de
Línea
(1 de 8 líneas)
Bit de validez del Tag
0
Nro de Set
Bits de validez de la línea
1
512
Directorio de
Caché Interno
A2
Descargar