Está en la página 1de 45

Arquitectura de Computadores II

Clase #6

Facultad de Ingeniería
Universidad de la República

Instituto de Computación
Curso 2009
Recapitulando:
donde estamos?

 Componentes Clásicos de un Computador


Procesador
Entrada
Control
Memoria

Datapath Salida

 Veremos otras ideas para mejorar la performance


 Localidad y Jerarquía de Memoria
 Memorias SRAM, DRAM
 Organización de la Memoria
 Caches, Memoria Virtual
Recordemos las tendencias
tecnológicas…

Capacidad Velocidad (latencia)


Lógica 2x en 3 años 2x en 3 años
DRAM 4x en 3 años 2x en 10 años
Disco 4x en 3 años 2x en 10 años
Jerarquía de memoria
 Objetivo: mucha memoria, rápida y barata
 Jerarquía
 Paralelismo
Processor

Control Tertiary
Secondary Storage
Storage (Disk/Tape)
Second Main
(Disk)
On-Chip
Registers

Level Memory
Cache

Datapath Cache (DRAM)


(SRAM)

Speed (ns): 1s 10s 100s 10,000,000s 10,000,000,000s


(10s ms) (10s sec)
Size (bytes): 100s Ks Ms Gs Ts
Jerarquía de memoria: otra
visión
 Registros
 Cache L1
 Cache L2
 Memoria Principal
 Disco (c/cache)
 Alm. óptico
 Cintas
Por qué funciona la jerarquía ?

 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?

 Registros <-> Memoria


 por el compilador (programador?)
 cache <-> memoria
 por el hardware
 memoria <-> discos
 por el hardware y el sistema operativo (memoria virtual)
 por el programador (archivos)
Jerarquía de Memoria:
Tecnologí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

address address address address


0 1 2 3
4 5 6 7
8 9 10 11
12 13 14 15
Bank 0 Bank 1 Bank 2 Bank 3
Resumen hasta el momento
 Dos Tipos de Localidad:
 Temporal
 Espacial
 Tomando ventaja del principio de localidad:
 Construir un sistema con mucha memoria de tecnología baratas
 Proveer acceso a la velocidad ofrecida por las tecnologías más
rápidas
 La DRAM es lenta, pero de alta densidad y barata:
 Presenta al usuario un sistema de memoria GRANDE.
 La SRAM es rápida, pero de baja densidad y cara:
 Presentar al usuario un sistema de memoria RÁPIDO.
 El Arte del diseño de un Sistema de Memoria consiste en
Optimizar la organización para minimizar el tiempo de acceso
promedio para las cargas de trabajo típicas
Cache
 Memoria rápida, escasa
 Se instala entre la memoria principal y la CPU
 Puede esta en el chip de la CPU (L1) o módulo
externo (L2)
Operativa del cache
 CPU requiere el contenido de una posición de
memoria
 Se busca en el cache
 Si está, se lee del cache (rápido)
 Si no está, se lee el bloque requerido desde la memoria
principal al cache
 Luego se entrega desde el cache a la CPU
 El cache incluye “tags” (etiquetas) para
identificar que bloque de memoria principal está
en cada slot
Operativa del cache: lectura
Diseño del Cache
 Tamaño
 Costo
• Más cache, caro
 Velocidad
• Más cache, más velocidad (hasta cierto punto)
• Buscar datos en la cache lleva tiempo…
 Función de correspondencia (Mapping Function)
 Entre bloques de memoria principal y palabras del cache
 Algoritmo de sustitución
 Qué bloque se desecha cuando se lee un bloque nuevo?
 Política de escritura
 Hubo modificaciones?
 Tamaño del bloque
 Cantidad de caches
Organización típica del cache
Función de correspondencia
 Para todos los casos consideraremos un
ejemplo:

 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

 24 bit address: 2 bit word identifier (4 byte block) + 22 bit block


identifier
• 8 bit tag (=22-14)
• 14 bit slot or line
 Bloques en la misma línea tienen tag único. Se chequea el
contenido del cache mediante el tag de línea
Tabla de líneas del Cache con
Correspondencia Directa
 Correspondencia:
 i=j modulo m
• i línea del cache
• j número de bloque de memoria principal
• m=2^r (cantidad de líneas del cache)

Línea de Cache Bloque contenido


0 0, m, 2m, 3m…2s-m
1 1,m+1, 2m+1…2s-m+1

m-1 m-1, 2m-1,3m-1…2s-1


Organización del cache con
correspondencia directa
Ejemplo correspondencia
directa
Resumen correspondencia
directa
 Direcciones = (s + w) bits
 Unidades direccionables = 2s+w words o bytes
 Tamaño del bloque = tamaño de línea = 2w words o bytes
 Cantidad de bloques en memoria principal = 2s+ w/2w = 2s
 Cantidad de líneas del cache = m = 2r
 Tamaño del tag = (s – r) bits

 Pros & contras


 Simple
 Barato
 Localización fija de cada bloque
• Si un programa accede a 2 bloques que se corresponden a una
misma línea repetidamente, numerosos “cache misses”
Correspondencia Asociativa
 Un bloque de memoria principal se puede cargar
en cualquier línea del cache
 Dirección de memoria se interpreta como un tag
y un word
 C/tag identifica unívocamente un bloque de
memoria
 Cada tag debe ser examinado para ver si hay
coincidencia
 Búsqueda se encarece
Organización del cache con
correspondencia asociativa
(fully associative)
Ejemplo correspondencia
asociativa
Estructura de direccionamiento
correspondencia asociativa
Word
Tag 22 bit 2 bit

 Tag de 22 bits almacenada con cada bloque de


datos de 32 bits
 S compara el campo tag con la tag guardada en
el cache para chequear un hit
 2 bits menos significativos de la dirección
identifican la palabra
Resumen correspondencia
asociativa
 Direcciones = (s + w) bits
 Unidades direccionables = 2s+w words o bytes
 Tamaño bloque = tamaño de línea = 2w words o bytes
 Cantidad de bloques en memoria principal = 2s+ w/2w = 2s
 Cantidad de líneas del cache = indeterminado
 Tamaño del tag = s bits
Correspondencia asociativa de
conjuntos
(Set Associative)
 Cache dividida en conjuntos
 Cada conjunto contiene una cantidad de líneas
 Un bloque determinado corresponde a cualquier
línea de un conjunto
 Bloque B puede estar en cualquier línea del conjunto i
 Ejemplo 2 líneas por conjunto
 2 way associative mapping
 Un bloque determinado puede estar en alguna de las
dos líneas de un conjunto
Estructura de direccionamiento
“Set Associative Mapping”
Word
Tag 9 bit Set 13 bit 2 bit
 Se usa el campo de conjunto para determinar en cual
buscar
 Comparar con campo tag para chequear hit

 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?

 Para un pipeline in-order , 2 opciones:


 Congelar el pipeline en paso Mem (popular en los inicios: Sparc,
R4000)
IF ID EX Mem stall stall stall … stall Mem Wr
IF ID EX stall stall stall … stall stall Ex Wr

 Usar una cola de estados de los distintos operandos en uso y de


sus dependencias con la memoria/cache de manera de bloquear
en el paso ID las instrucciones que dependen de un resultado (
lockup-free instruction fetch/prefetch cache organization - Kroft)

 Ejecución “out-of-order” limitada con respecto a loads.


Popular en las arquitecturas superescalares de ejecución “in-
order”.
 Los pipelines “out-of-order” tienen esta funcionalidad
incluída… (colas de loads, etc).
Preguntas?
 Próxima clase: memoria virtual

También podría gustarte