Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Clase #6
Facultad de Ingeniería
Universidad de la República
Instituto de Computación
Curso 2009
Recapitulando:
donde estamos?
Datapath Salida
Control Tertiary
Secondary Storage
Storage (Disk/Tape)
Second Main
(Disk)
On-Chip
Registers
Level Memory
Cache
Principio de Localidad:
Los programas acceden una porción relativamente
pequeña del espacio de direcciones en un determinado
instante de tiempo.
Se aplica también al acceso a datos (en menor %)
Localidad temporal
• Si un ítem es referenciado, tenderá a ser referenciado
nuevamente a la brevedad
Localidad Espacial
• si un ítem es referenciado, los items con direcciones
“cercanas” tenderán a ser referenciados a la brevedad
Jerarquía de Memoria:
Cómo Funciona?
Localidad Temporal
Mantener los datos más recientemente accedidos
“cercanos” al procesador
Localidad Espacial
Mover bloques de palabras contiguas al nivel superior
Memoria
Al Procesador Memoria Nivel Inferior
Nivel Superior
Blk X
Del Procesador Blk Y
Jerarquía de Memoria:
Terminología
Hit: los datos están en algún bloque del nivel superior
(ejemplo: Bloque X)
Hit Rate: fracción de accesos a memoria encontrados en el
nivel superior
Hit Time: Tiempo de acceso al nivel superior
• Tiempo de acceso a RAM + tiempo para determinar hit/miss
Miss: los datos deben ser traídos desde un bloque en el
nivel inferior (Bloque Y)
Miss Rate = 1 - (Hit Rate)
Miss Penalty
• Tiempo para reemplazar un bloque en el nivel superior + Tiempo
para entregarlo al procesador
Hit Time << Miss Penalty
Como se maneja la jerarquía?
Accesso “Aleatorio”
El tiempo de acceso es el mismo para cualquier posición
DRAM: Dynamic Random Access Memory
• Alta densidad, baja potencia, barata, lenta
• Dinámica: necesita ser “refrescada” regularmente
SRAM: Static Random Access Memory
• Baja densidad, alta potencia, cara, rápida
• Estática: su contenido queda almacenado “para siempre” (hasta que se
corte la alimentación)
Tecnología de Acceso “Non-so-random”
Tiempo de acceso varía según la posición y el momento
Ejemplos: Disco, CDROM
Tecnología de Acceso Secuencial: tiempo de acceso lineal con
la posición (ej. Cinta)
Jerarquía de Memoria:
Performance
Tiempo de Acceso
Tiempo transcurrido entre presencia de direcciones y obtención de
datos válidos
Tiempo de Ciclo de Memoria
La memoria debe “recuperarse” antes del próximo acceso
Tiempo de Ciclo: acceso + recuperación
Tasa de Transferencia
Tasa a la que se mueven los datos
Ejemplo:
Acceso a DRAM del orden de 50 ns
Estos tiempos no incluyen la demora en manejar el bus de
direcciones y el overhead del controlador de memoria
• Manejo de DRAMs en paralelo, controlador de memoria externa, bus,
módulos SIMMs …
Tiempos de latencia del procesador a la memoria del orden de
100ms para DRAM de “50 ns”
Qué diferencia a la RAM de un conjunto de flip-flops?
Densidad
Memoria Principal:
La organización mejora la performance
Simple:
CPU, Cache, Bus, Memoria mismo ancho(32 bits)
Ancho (Wide):
CPU/Mux 1 palabra; Mux/Cache, Bus, Memory N palabras
Entrelazado (Interleaved):
CPU, Cache, Bus 1 palabra: Memoria N Módulos; el ejemplo en
de 4 módulos, word interleaved ( estrelazado de palabra)
Interleaving
Patrón de Acceso sin Interleaving: CPU Memoria
D1 disponible
InicioAcceso de D1 InicioAcceso de D2
Memoria
Patrón de Acceso con Interleaving de 4 vías: Banco 0
Memoria
Banco 1
CPU
Memoria
Banco 2
Acceso Banco 0
Memoria
Banco 3
Acceso Banco 1
Acceso Banco 2
Acceso Banco 3
Podemos Acceder Banco 0 nuevamente
Performance de la Memoria
Principal
Modelo de Tiempos
1 u. para enviar direcciones,
10 u. de tiempo de acceso, 1 u. para enviar datos
Cache con Bloque de 4 palabras
• Simple M.P. = 4 x (1+10+1) = 48
• Wide M.P. = 1 + 10 + 1 = 12
• Interleaved M.P. = 1+10+ 1+1+1+1 = 15
Cache de 64kByte
Bloque de 4 bytes
• cache de 16k (214) líneas de 4 bytes
16MBytes de memoria principal
24 bits de direcciones
• (224=16M)
Correspondencia Directa
Cada bloque de memoria principal se corresponde a una línea
del cache
Se considera la dirección en dos partes
w bits menos significativos identifican una palabra única
s bits más significativos especifican un bloque de memoria
Los MSBs se dividen en un campo línea de cache de r bits y
un tag de s-r bits (más significativos)
Tag s-r Line or Slot r Word w
8 14 2
Ejemplo
13 bit de conjunto
Número de bloque en memoria es modulo 213
000000, 00A000, 00B000, 00C000 … corresponden al mismo
conjunto
Organización del cache con
correspondencia “Two Way Set
Associative”
Ejemplo correspondencia “Two
Way Set Associative”
Resumen correspondencia “Set
Associative”
Dirección = (s + w) bits
Unidades direccionables = 2s+w words o bytes
Tamaño bloque = tamaño línea = 2w words o bytes
Cantidad de bloques en memoria principal = 2d
Cantidad de líneas en conjunto = k
Cantidad de conjuntos = v = 2d
Cantidad de líneas en cache = kv = k * 2d
Tamaño del tag = (s – d) bits
Algoritmos de sustitución (1/2)
Correspondencia Directa
No hay opciones
Cada bloque corresponde a una línea
Se debe reemplazar esa línea
Algoritmos de sustitución (2/2)
Correspondencia Asociativa & “Set
Associative”
Implementado en hardware (velocidad)
Least Recently Used (LRU)
Ej. en 2 way set associative
• El bit de USO determina cual línea del conjunto debe ser
reemplazada
First in first out (FIFO)
Reeemplazar bloque “más viejo”
• Round-robin, buffer circular
Least frequently used
Reemplazar bloque con menos hits
• Contador?
Random
Política de escritura
No se debe sobreescribir un bloque del cache a
menos que esté actualizado en memoria
principal!
Posibles conflictos
En sistemas con múltiples CPUs, estos pueden tener
caches individuales
E/S puede acceder a memoria directamente
Política “Write through”
Todas las escrituras se hacen en memoria y
cache
Múltiples CPUs pueden monitorizar el tráfico de
memoria principal para actualizar cache local
Mucho tráfico!
Enlentece escrituras
Política “Write back”
Actualización se hace inicialmente solo en el cache
Set de “bit de actualización” cuando se hace una escritura
Cuando se reemplaza el bloque, se escribe en memoria
principal solo si el “bit de actualización” está seteado
Problemas
Sincronismo con otros caches
E/S debe accedes memoria principal usando el cache
• Cuello de botella potencial
Experiencia
15% de referencias a memoria son escrituras
Tamaños de Caches
Processor Type
Year of
L1 cachea L2 cache L3 cache
Introduction
IBM 360/85 Mainframe 1968 16 to 32 KB — —
PDP-11/70 Minicomputer 1975 1 KB — —
VAX 11/780 Minicomputer 1978 16 KB — —
IBM 3033 Mainframe 1978 64 KB — —
IBM 3090 Mainframe 1985 128 to 256 KB — —
Intel 80486 PC 1989 8 KB — —
Pentium PC 1993 8 KB/8 KB 256 to 512 KB —
PowerPC 601 PC 1993 32 KB — —
PowerPC 620 PC 1996 32 KB/32 KB — —
PowerPC G4 PC/server 1999 32 KB/32 KB 256 KB to 1 MB 2 MB
IBM S/390 G4 Mainframe 1997 32 KB 256 KB 2 MB
IBM S/390 G6 Mainframe 1999 256 KB 8 MB —
Pentium 4 PC/server 2000 8 KB/8 KB 256 KB —
High-end server/
IBM SP 2000 64 KB/32 KB 8 MB —
supercomputer
CRAY MTAb Supercomputer 2000 8 KB 2 MB —
Itanium PC/server 2001 16 KB/16 KB 96 KB 4 MB
SGI Origin 2001 High-end server 2001 32 KB/32 KB 4 MB —
Itanium 2 PC/server 2002 32 KB 256 KB 6 MB
IBM POWER5 High-end server 2003 64 KB 1.9 MB 36 MB
CRAY XD-1 Supercomputer 2004 64 KB/64 KB 1MB —
a) instrucciones/datos
b) solo caches de instrucciones, NO datos
Resumen:
Causas de los “Cache Misses”
Compulsivo ( Obligatorio ) (arranque, primera referencia):
primer acceso a un bloque
Es un “hecho de la vida”: no se puede hacer nada por evitarlo
Nota: Si se van a ejecutar “millones” de instrucciones, los
Compulsory Misses son insignificantes.
Conflicto (colisión):
Múltiples zonas de memoria mapeadas a la misma ubicación del
cache.
Solución 1: incrementar tamaño del cache
Solución 2: incrementar la asociatividad
Capacidad:
El cache no puede contener todos los bloques accedidos por el
programa
Solución: incrementar el tamaño del cache
Coherencia (Invalidez): otros procesos (ej. E/S) actualizan la
memoria
Pipeline:
Qué pasa en un Cache miss?