Memorias cache

Anuncio
Sistema de memoria
Memorias cache
• Almacena datos e instrucciones durante
ejecución de un programa
• Incidencia dramática en desempeño
global del sistema
• Ejecución de código accesa memoria de
instrucciones
• Instrucciones de movimiento de datos
accesan memoria de datos
Mario Medina C.
[email protected]
Modelo de memoria
Jerarquía de memoria
• Modelo de memoria utilizado hasta ahora
• Vector lineal de bytes
• Almacena datos e instrucciones
• Tiempo de acceso constante a cualquier
posición
• En la práctica, jerarquía de dispositivos
• Diferentes capacidades
• Diferentes costos
• Diferentes tiempos de acceso
Jerarquía de memoria
• Requerimientos
• Entregar gran cantidad de memoria,
permitida por tecnología más barata
• Proveer alta velocidad de acceso,
permitido por tecnología más rápida
• “El tiempo de acceso más rápido
posible al costo más barato posible”
Costo
Capacidad
Tiempo de acceso
Jerarquía de memoria
• Principio de funcionamiento
• Jerarquía de almacenamiento de
creciente tamaño y tiempo de acceso
• Mientras más grandes, más lentas
• Niveles más rápidos de la jerarquía
contienen una copia del subconjunto de
datos más utilizados de los niveles de
mayor tamaño
• Principio de inclusión
® 2014 Mario Medina C.
1
Principio de inclusión
Nivel k:
4
9
14
3
Dispositivo más rápido,
pequeño y caro en nivel k
almacena un subconjunto de
los bloques del nivel k+1
Los datos se transfieren
entre niveles en bloques
Nivel k+1:
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Dispositivo más grande,
barato y lento del nivel k+1
está dividido en bloques
Registros
• Registros
•
•
•
•
•
•
•
Internos al chip
Rápidos (a la velocidad de la CPU)
Pocos (Pentium 4 tiene 128)
Elementos individuales
Escritura sincronizada por reloj
Muy alta velocidad y baja densidad
Utilizados en banco de registros: múltiples
puertas de lectura y escritura
Memoria dinámica (DRAM)
• Almacena bit como carga en un capacitor
• Sólo 1 transistor y 1 capacitor por bit
• Capacitor necesita ser refrescado ~8ms
• Sensibles a perturbaciones como luz y ruido
• Memoria puede ser muy densa
• Organizada como matriz de filas y columnas
• Utilizada para memoria principal y gráfica
• Algunas usan códigos correctores de errores
Jerarquía de memoria
• Registros en la CPU
• Memoria RAM (Random-Access Memory)
• RAM estática (Static RAM ó SRAM)
• RAM dinámica (Dynamic RAM ó DRAM)
• Almacenamiento secundario
• Medios magnéticos y/o ópticos
• Memorias Flash
• Memoria en la nube?
• Almacenamiento terciario (off-line)
• Medios magnéticos y/o ópticos
Memoria estática (SRAM)
• Almacena un bit en una celda biestable
• Circuito de 6 transistores por bit
• Consume más energía que DRAM
• Mantiene estado mientras tenga energía
• Memoria más rápida y cara que DRAM
• Tiempo de acceso cercano a TCPU
• Organizada como vector
• Utilizada en memorias cache
• Tanto dentro como fuera del chip
Memorias cache
• Memorias intermedias entre la CPU y la
memoria RAM principal
• Almacenan bloques de las instrucciones y
datos más frecuentemente usados
• Aprovechan el principio de localidad
• Localidad temporal y espacial
• Base del diseño de sistemas de memoria
computacionales
• Tiempo de acceso cercano a 10xTCPU
® 2014 Mario Medina C.
2
Principio de localidad
Memorias cache
• Primer nivel en la jerarquía de memoria
• Típicamente en el mismo chip del procesador
• Varios niveles: L1, L2, a veces L3
• Tiempo de acceso acorde a velocidad CPU
• Objetivo
• Mantener el subconjunto de datos más utilizado
por el programa dentro del cache
• Principio de localidad
Principio de localidad
• Localidad espacial
• Ejemplo: Leer instrucción N, luego N+1,
luego N+2, etc., elementos de un vector
• Mover bloques de datos contiguos a los
niveles superiores de la jerarquía de memoria
Nivel k
be memoria
Desde CPU
Nivel k+1
de memoria
Bloque X
Bloque Y
Ejemplo de localidad espacial
int sumaFilas(int a[m][n]) {
int i, j, suma = 0;
for (i = 0; i < m; i++){
for (j = 0; j < n; j++)
suma += a[i][j];
}
return suma;
}
• Localidad temporal en i, j, suma
• No hay localidad temporal en a[][]
• Cada elemento de a[][] se accesa una vez
• Localidad espacial en a[][]
® 2014 Mario Medina C.
0
Espacio de direcciones
2n - 1
• Localidad temporal
• Pequeña y rápida
• 1-3 ciclos para cache L1
A CPU
Probabilidad
de referencia
• Ejemplo: instrucción en lazo iterativo se lee
varias veces, variables se reutilizan
• Mantener los datos referenciados más
recientemente cerca del procesador
Ejemplo de localidad espacial
int sumaVector(int v[n]) {
int i, suma = 0;
for (i = 0; i < n; i++)
suma += v[i];
return suma;
}
• Localidad espacial en v[]
• Patrón de acceso secuencial
• Localidad temporal en suma e i
• Cada elemento de v[] se lee sólo una vez
• Localidad temporal y espacial en
instrucciones
Terminología
• Acierto (Hit): dato presente en bloque de
nivel superior
• Tasa de acierto (Hit rate): fracción de
accesos a memoria encontrados en nivel
superior
• Tiempo de acierto (Hit time): tiempo de
acceso al nivel superior
• Tiempo para determinar si hay acierto +
tiempo de acceso a memoria de nivel
superior
3
Terminología
Principio de funcionamiento
• Fallo (Miss): dato debe traerse de bloque
de nivel inferior
• Tasa de fallas (Miss rate): 1 – (Hit rate)
• Penalidad de fallo (Miss Penalty): tiempo
para reemplazar el bloque en nivel superior
+ tiempo para entregar dato a CPU
• Generalmente, se da que el tiempo de
acierto es mucho menor que la penalidad
de fallo
• Razón τ = TRAM/Tcache
Principio de funcionamiento
•
Secuencia de acceso a memoria
1. Procesador genera dirección efectiva del dato
2. Dato se busca primero en memoria cache
3. Si dato se encuentra en el cache, se entrega
al procesador
4. Si dato no se encuentra en el cache, se busca
en el siguiente nivel de la jerarquía de
memoria (ej. DRAM)
Desempeño de una cache
• Aprovechar localidad temporal
• Sea τ la razón τ = TRAM/Tcache
• Sea β la tasa de aciertos
• El aumento en el desempeño del sistema de
memoria por tener una cache es
• Si dato no se encuentra en el cache, traerlo
al cache desde DRAM
• Porque es probable que se vuelva a
direccionar pronto
• Aprovechar localidad espacial
• En vez de traer palabra referenciada, traer un
bloque de varias palabras
• Porque es probable que se direccione pronto
palabra cercana
G (   
RAM


CACHE   (1   )
• Mientras más lenta la RAM, más importante la
cache!
• A mayor β, más importante la cache!
Desempeño de una cache
Aumento de desempeño en función de τ
5
10
20
30
40
50
50
45
Aumento de desempeño
40
35
30
25
20
15
10
5
0
0.7
0.75
0.8
0.85
0.9
0.95
1
Tasa de aciertos β
® 2014 Mario Medina C.
4
Descargar