Procesadores para cómputo
de altas prestaciones
Abril 2008
Tema 5Jerarquía de memoria: Cache,
reducción de fallos, ocultación de latencia, memoria principal
2
o Introducción: Jerarquía de memoria
o Rendimiento: mejoras
o Reducir la tasa de fallos de la cache
o Reducir la penalización de los fallos de cache
o Reducir el tiempo de acceso a la cache
o La memoria principal
o Una visión global: Alpha 21064
o Bibliografíao Capítulo 5 de [HePa07]
o [JaMu98a] B. Jacob, T. N. Mudge. “Virtual Memory: Issues of
Implementation”. IEEE Computer Magazine. Vol. 31 (6), Junio 1998,
o Simulador X-CACHE
Contenidos
3 Introducción
1
10
100
1000
1980 1985 1990 1995 1999
DRAM
CPU
Gap memoria -procesador
El problema
La demanda de anchura de banda con memoria crece.
9% por año
50% por año
4 Introducción
Un computador típico está
formado por diversos niveles de
memoria, organizados de forma
jerárquica:
Registros de la CPU
Memoria Cache
Memoria Principal
Memoria Secundaria (discos)
Unidades de Cinta (Back-up) y
CD-ROMs
El coste de todo el sistema de
memoria excede al coste de la
CPU
Es muy importante optimizar su
uso
Niveles de la Jerarquía de memoria
Registros de la CPU
Cache(SRAMs)
Memoria Principal (DRAMs)
Almacenamiento en disco(estado sólido, magnéticos)
Almacenamiento en cinta(cintas, discos ópticos)
Tie
mpo
de
acce
so
Cos
te
Cap
acid
ad
nivel 0
nivel 1(1.1,1.2,1.3)
nivel 2
nivel 3
nivel 4
5 Introducción
Tipos de Memoria
Tipo Tamaño Velocidad
Costo/bit
Registros < 1KB < 1ns $$$$
On-chip SRAM 8KB-6MB < 10ns $$$
Off-chip SRAM 1Mb – 16Mb < 20ns $$
DRAM 64MB – 1TB < 100ns $
Disco 40GB – 1PB < 20ms ~0
6 Introducción
Optimizar el uso de la memoria Hacer que el usuario tenga la ilusión de que dispone de una memoria con:
Tiempo de acceso similar al del sistema más rápido Coste por bit similar al del sistema más barato
La mayor parte de los accesos a un bloque de información, este bloque debe encontrarse en los niveles altos (bajos) de la memoria
Se refiere a la gestión dinámica, en tiempo de ejecución de la jerarquía de memoria Esta gestión de la memoria sólo afecta a los niveles 1 (cache), 2 (mem. principal) y 3 (mem.
secund.) El nivel 0 (registros) lo asigna el compilador en tiempo de compilación El nivel 4 (cintas y CD-ROMs) se utiliza para copias de seguridad (back-up)
Objetivo de la gestión de la jerarquía de memoria
Niveles a los que afecta la gestión de la jerarquía memoria
Controla la transferencia de información entre la memoria cache y la memoria principal
Suele llevarse a cabo mediante Hardware específico (MMU o “Management Memory Unit”)
Controla la transferencia de información entre la memoria secundaria y la memoria principal
Parte de esta gestión se realiza mediante hardware específico (MMU) y otra parte la realiza el S.O
Gestión de la memoria cache
Gestión de la memoria virtual
Memoria Cache
Memoria Principal
Memoria Secundaria
Gestión de la memoria cache
Gestión de la memoria virtual
7 Introducción
Inclusión Cualquier información almacenada en el nivel de memoria Mi, debe encontrarse también
en los
niveles Mi+1, Mi+2, …, Mn. Es decir: M1⊂ M2 ⊂ … ⊂ Mn Coherencia
Las copias de la misma información existentes en los distintos niveles deben ser consistentes
Si un bloque de información se modifica en el nivel Mi, deben actualizarse los niveles Mi+1,.., Mn
Existen distintas estrategias de actualización Escritura directa (write-through): Cuando una palabra se modifica en el nivel Mi,
inmediatamente se actualiza en el nivel Mi+1 Post-escritura (write-back): La actualización del nivel Mi+1 se retrasa hasta que el bloque que
se modificó es reemplazada o eliminada en el nivel Mi
Localidad La propiedad de localidad dice que las referencias a memoria generadas por la CPU,
para acceso a datos o a instrucciones, están concentradas o agrupadas en ciertas regiones del tiempo y del espacio
Localidad temporal Las direcciones de memoria (instrucciones o datos) recientemente referenciadas, serán
referenciadas de nuevo, muy probablemente, en un futuro próximo Ejemplos: Bucles, subrutinas, accesos a pila, variables temporales, etc.
Localidad espacialTendencia a referenciar elementos de memoria (datos o instrucc.) cercanos a los últimos elementos
referenciados Ejemplos: programas secuenciales, arrays, variables locales de subrutinas, etc.
Propiedades de la jerarquía de memoria
8 Introducción
Bloque: unidad mínima de transferencia entre los dos niveles Acierto (hit): el dato solicitado está en el nivel i
Tasa de aciertos (hit ratio): la fracción de accesos encontrados en el nivel i Tiempo de acierto: tiempo de acceso del nivel i + tiempo detección de
acierto
Fallo (miss): el dato solicitado no está en el nivel i y es necesario buscarlo en el nivel i+1 Tasa de fallos (miss ratio): 1 - (Tasa de aciertos) Tiempo de penalización por fallo: tiempo de sustitución de un bloque del
nivel i + tiempo de acceso al dato
Tiempo de acierto << Penalización de fallo
Terminología
Memoria nivel inferiorMemoria
nivel superiorAl procesador
Del procesadorBlk X
Blk Y
9 Introducción
1
10
100
1000
1980 1985 1990 1995 1999
DRAM
CPU
Gap memoria -procesador
El problema
La demanda de anchura de banda con memoria crece. Segmentación, ILPEjecución especulativa1980 no caches “on chip”, 2007 2-3 niveles de cache “on chip”
No tienen valor en sí mismas. Solo para el reducir el gap
9% por año
50% por año
10 Introducción
El problema: Algunos datosTamaño de la cache Del 50 al 75 % del área. Más del 80% de los transistores
Tiempo de servicio de un fallo de cache: evolución 21064 (200Mhz) 340ns, 340/5=68 ciclos, 68x2= 136 instrucciones 21164 (300Mhz) 266ns, 266/3.3=80, 80x4=320 instrucciones 21264 (1Ghz) 180ns, 180/1=180, 180x6=1080 instrucciones
PentiumIII
Itaniun 2Madison
Latencia:1ciclo ( Itanium2) a 3 ciclos Power4-5
11 Introducción
El problemaTamaño de la cache Del 50 al 75 % del área. Más del 80% de los transistores
Pentium 4 Montecito1700Mtrans
12
La más simple: Emplazamiento directo
Memoria
Cache directa de 4 Bytes
Dirección
0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F
Cache Index
0
1
2
3
La posición 0 de la cache almacenara los datos de:
o Posiciones de memoria 0, 4, 8, ... etc.o En general: Cualquier posición de
memoria cuyos 2 LSBs de la dirección sean 0s
o Dirección<1:0> => cache index ¿Cuando se debe llevar una información a la
cache? ¿ Como localizar la información en la cache ?
Repaso de conceptos básicos
13
Cache directa de 1 KB, 32Bytes por bloque Para una cache de 2N con dirección de 32bits:
o Los (32 - N) bits más significativos son el Tago Los M bits menos significativos son el selector de bytes (Tamaño de bloque = 2M)
Cache Index
0
1
2
3
:
Cache Data
Byte 0
0431
:
Cache Tag Example: 0x50
Ex: 0x01
0x50
Valid Bit
:
31
Byte 1Byte 31 :
Byte 32Byte 33Byte 63 :Byte 992Byte 1023 :
Cache Tag
Byte Select
Ex: 0x00
9
Repaso de conceptos básicos
14
Asociativa por conjuntos N-way asociativa : N entradas por conjunto
o N caches directas operando en paralelo (N típico 2 , 4) Ejemplo: 2-way cache asociativa
o Cache Index selecciona un conjunto de la cacheo Los dos tags en el conjunto son comparados en paraleloo Se selecciona el dato en función de la comparación
Cache Data
Cache Block 0
Cache TagValid
:: :
Cache Data
Cache Block 0
Cache Tag Valid
: ::
Cache Index
Mux 01Sel1 Sel0
Cache Block
CompareAdr Tag
Compare
OR
Hit
Repaso de conceptos básicos
15
Comparación
Asociativa por conjuntos “versus” Directao N comparadores vs. 1o Retardo extra por el MUX para los datoso El dato llega después del hit del acceso
En una directa, el bloque de cache es accesible antes del hit:o Es posible asumir un acierto y continuar. Recuperación si fallo.
Cache Data
Cache Block 0
Cache Tag Valid
: ::
Cache Data
Cache Block 0
Cache TagValid
:: :
Cache Index
Mux 01Sel1 Sel0
Cache Block
CompareAdr Tag
Compare
OR
Hit
Repaso de conceptos básicos
16
Política de actualización :Write-Through vs Write-Back Write-through: Todas las escrituras actualizan la cache y la memoria
o Se puede eliminar la copia de cache – Lo datos estan en la memoriao Bit de control en la cache: Solo un bit de validez
Write-back: Todas las escrituras actualizan solo la cacheo No se pueden eliminar los datos de la cache - Deben ser escritos primero en la
memoriao Bit de control: Bit de validez y bit de sucio
Comparación:o Write-through:
Memoria ( Y otros lectores ) siempre tienen el último valor Control simple
o Write-back: Mucho menor AB, escrituras múltiples en bloque Mejor tolerancia a la alta latencia de la memoria
Repaso de conceptos básicos
Política de actualización :Asignación o no en fallo de escritura
17 Rendimiento
4 aspectos fundamentalesUbicación de un bloque(línea)
Emplazamiento directo, asociativo, asociativo por conjuntosAcceso al bloque: uso del índice
Tag y bloque(línea)Reemplazamiento del bloque(línea)
Aleatorio, LRUEstrategia de escritura
Post-escritura( write back), escritura directa ( write through)
Tiempo CPU = ( Ciclos CPU + Ciclos de espera memoria)x Tc
Ciclos de espera memoria= Accesos a memoria x Tasa de fallos x Tiempo de penalización de fallo
Multiplicando y dividiendo por Nº de instr
Tiempo CPU = Nº de instr. x (CPI+accesos por inst x Tasa de fallos x penalización de fallo) x Tc
Rendimiento de la cache
CPUtimeIC CPIExecution
Memory accesses
InstructionMiss rateMiss penalty
Clock cycle time
18 Rendimiento: Mejora
¿ Como mejorar el rendimiento de la cacheReducir la tasa de fallosReducir la penalización del falloReducir el tiempo de acceso a la cache
Tipos de fallos (3 C´s)
Cache Size (KB)
Mis
s R
ate
per
Typ
e
0
0.02
0.04
0.06
0.08
0.1
0.12
0.14
1 2 4 8
16
32
64
12
8
1-way
2-way
4-way
8-way
Capacity
Compulsory
Iniciales(Compulsory):Fallos incluso en cache infinitaLocalidad espacial
Capacidad: Tamaño de la cacheLocalidad temporal
Conflicto: Política de emplazamiento
Tasa de fallos por tipo (Average SPEC92)
Tamaño, asociatividad
CPUtimeIC CPIExecution
Memory accesses
InstructionMiss rateMiss penalty
Clock cycle time
19 Reducir la tasa de fallos
Cambiando el tamaño del bloque
• Observaciones:
1. Valor óptimo mayor según aumenta Mc
2. Caches integradas tamaño y bloque fijo
3. Caches externas tamaño y bloque variable
Tamaño de bloque1 palabra Mc
• Bloque del sig. nivel => Tecnología y organización del siguiente nivel
• Disminución de la tasa de fallos de inicio (captura mejor la localidad espacial )• Aumento de la tasa de fallos de capacidad (menor Nº Bloques => captura peor localidad temporal)
Tamaño de bloque1 palabra Mc
0
5
10
15
20
25
16 bytes 32 bytes 64 bytes 128 bytes 256 bytes
1 KB 4 KB 16 KB 64 KB 256 KB
• Tasa de fallos
• Penalización
Reduce fallosiniciales
Aumenta fallosDe capacidad
Mis
s ra
te (
%)
Tamaño cache
Tamaño bloque
20 Reducir la tasa de fallos
Cambiando la asociatividad
Cache Size (KB)
Mis
s R
ate
per
Typ
e
0
0.02
0.04
0.06
0.08
0.1
0.12
0.14
1 2 4 8
16
32
64
12
8
1-way
2-way
4-way
8-way
Capacity
Compulsory
Regla 2:1Cache directa= 2way de mitad de tamaño
8 way es igual a totalmente asociativa
Tiempo de acceso
AsociativoDirecto Asociativo por conjuntosE
1 M
• Tasa de fallos
• Disminución de la tasa de fallos de conflicto (más marcos posibles)
• Tiempo de acceso
• Coste hardware
• Número de comparadores => tecnología
AsociativoDirecto Asociativo por conjuntosE
1 M
• Observaciones:
1. Mejora menor según aumenta el tamaño Mc
- Aumenta el número de conjuntos
2. Mejora menor según aumenta asociatividad
21 Reducir la tasa de fallos
Algoritmo de reemplazamientoEspacio de reemplazamiento• Directo: Trivial
• Asociativo: Toda la cache
• Asociativo por conjuntos: Los marcos de un conjunto
Algoritmos • Aleatorio: El bloque reemplazado se escoge aleatoriamente
• LRU (Least Recented Used): Se reemplaza el bloque menos recientemente usado
- Gestión: pila
- Implementación: registros de edad, implementación de la pila y matriz de referencias- Para un grado de mayor que 4, muy costoso en tiempo y almacenamiento (actualiz.> tcache)
• LRU aproximado: Algoritmo LRU en grupos y dentro del grupo
2
1
0
3
0
2
1
3
3
0
2
1
ACIERTO
REEMPLAZ.
22 Reducir la tasa de fallos
Algoritmo de reemplazamiento
Influencia del algoritmo de reemplazamiento
Grado 2 Grado 4 Grado 8LRU AleatorioLRU AleatorioLRU Aleatorio
16 KB 5,18% 5,69% 4,67% 5,29% 4,39% 4,96%64 KB 1,88% 2,01% 1,54% 1,66% 1,39% 1,53%256 KB 1,15% 1,17% 1,13% 1,13% 1,12% 1,12%
• Observaciones:1. La diferencia disminuye al
aumentar Mc2. La diferencia aumenta con el
grado de asociatividad E
Reemplazamiento
• Tasa de fallos
ALEATORIO LRU
• Disminuye la tasa de fallos de capacidad (mejora la localidad temporal)
• Tiempo de acceso
• Coste hardwareReemplazamientoALEATORIO LRU
23 Reducir la tasa de fallos
Cache de víctimas
• Memoria cache más pequeña totalmente asociativa asociada a la memoria cache
=> Contiene los bloques que han sido sustituidos más recientemente
=> En un fallo primero comprueba si el bloque se encuentra en la cache víctima
Baja la tasa de fallos de conflicto en caches con emplazamiento directo
- Cuanto menor es la memoria cache más efectiva es la cache víctima
- En una cache de 4KB con emplazamiento directo, una cache víctima de 4 bloques elimina del 20% al 95% de los fallos, según programa.
• Ejemplo:
- HP 7200, 2 KB internos: 64 bloques de 32 bytes
- ALPHA,
- Power 4-5-6, AMD Quad, ( diferente uso)
CPUregistros
24 Reducir la tasa de fallos
Cache pseudo-asociativas
• Trata de combinar las ventaja de la cache directa y la asociativa• Memoria cache de emplazamiento directo:
=> En un fallo busca el bloque en otro marco dado por la inversión del bit MS del índice de marco
Dos tiempos de acceso a cache => Gestión por parte del procesador
Más útiles en cache “off chip” (L2) Ejemplos: R10000 L2, UltraSparc L2
Bloque: 0 (0000000)
Marcos: 0 (000000000); 2 (000001010)ETIQUETA PALMB
PALB
9
5 2 2
Hit Time
Pseudo Hit Time Miss Penalty
Time
25 Reducir la tasa de fallos
Cache pseudo-asociativas
•Cachéde correspondencia directa con una modificación para que se comporte como asociativas. •Se permite que un bloque de Mpse pueda ubicar en dos (pseudoasociativade 2 vías) marcos de Mc:
•el que le corresponde (por la correspondencia directa)•el que resulta de conmutar el bit más significativo de la dirección del bloque
26 Reducir la tasa de fallos
Idea
Ocultar la latencia de un fallo de cache solapándolo con otras instrucciones independientes
•ADD R5,R6,R6•…………………..•…………………..•LD R1, dir
PREBUSCAR: Caches con prebusqueda
Cache con prebúsqueda
Anticipa los fallos de Cache anticipando las búsquedas antes de que el procesadordemande el dato
Solapa acceso a los datos con instrucciones anteriores a la que usa el datoNo se relaciona con los registros. No genera riesgosPosibilidad de búsquedas innecesarias
Dos tiposPrebusqueda SWPrebusqueda HW
27Reducir la tasa de fallos
Prebusqueda SW
Instrucciones especiales de prebusqueda introducidas por el compilador
La eficiencia depende del compilador y del tipo de programa
Prebusqueda con destino cache (MIPS IV, PowerPC, SPARC v. 9), o registro ( HP-PA)Instrucciones de prebusqueda no producen excepciones. Es una forma de especulación.
Funciona bien con bucles y pattern de acceso a array simples. Aplicaciones de cálculo
Funciona mal con aplicaciones enteras que presentan un amplio reúso de Cache
Overhead por las nuevas instrucciones. Más búsquedas. Más ocupación de memoria
Cache con prebusqueda
28 Reducir la tasa de fallos
Cache con prebúsqueda (ejemplo)Cache 8 KB directa, bloque:16 bytes, write-back (con asignación en escritura)Datos: a(3,100), b(101,3). Elemento arrays = 8 bytes. Cache inicialmente vacía. Ordenación en memoria: por filas
•1 bloque cache = 2 palabras (elementos)
Programa (sin prebúsqueda):for (i:=0; i<3; i:=i+1)
for (j:=0; j<100; j:=j+1)
a[i][j] := b[j][0] * b[j+1][0]
Fallos•Acceso a elementos de “a”: Se escriben y acceden en cache tal como están almacenados en memoria. Cada acceso a memoria proporciona dos palabras (beneficio de localidad espacial).
Fallos “a” = (3x100)/2 = 150
•Acceso a elementos de “b” (si ignoramos fallos de conflicto): Un fallo por cada valor de j cuando i=0 => 101 fallos. Para los restantes valores de i, los elementos de b ya están en la cache.•Total fallos: 150+101 = 251
Prebúsqueda de instrucciones y datos29
•La prebúsqueda de instrucciones y datos antes de ser demandados disminuye la tasa de fallos.•Las instrucciones o datos prebuscadosson llevados directamente a la cachéo a un buffer externo•El Alpha AXP 21064 prebuscados bloques cuando ocurre un fallo, el que contiene la palabra causante del fallo y el siguiente. El primero lo coloca en MCy el segundo en el buffer de prebúsqueda•Experimentalmente se ha comprobado que un buffer de prebúsqueda simple elimina el 25 % de los fallos de una cachéde datos con correspondencia directa de 4 KB
30 Reducir la tasa de fallos
Cache con prebúsqueda (ejemplo) Suposición: La penalización por fallo es de tal duración que se
necesita iniciar la prebúsqueda 7 iteraciones antes. Idea: partir bucle
/* para i=0 (prebusca a y b) */for (j:=0; j<100; j:=j+1) {
prefetch (b[j+7][0]); /* b[j][0] para 7 iteraciones más tarde */
prefetch (a[0][j+7]); /* a[0][j] para 7 iteraciones más tarde */
a[0][j] := b[j][0] * b[j+1][0] ; }
/* para i=1,2 (prebusca sólo a, ya que b ya está en cache) */for (i:=1; i<3; i:=i+1)
for (j:=0; j<100; j:=j+1) {prefetch (a[i][j+7]); /* a[i][j] para 7 iteraciones
más tarde */a[i][j] := b[j][0] * b[j+1][0] ; }
Total fallos 3 * 7/2 + 7 = 19 fallos Instrucciones extra (los prefetch): 100*2 + 200*1 = 400 Fallos evitados = 251 -19 = 232
Fallos: 7/2 Fallos: 7
Fallos: 2 * 7/2 (para i=1,2)
31 Reducir la tasa de fallos
Prebusqueda HW
Prebusqueda secuencial de un bloque adicional
Tipos
Prebusqueda sobre falloPrebusca el bloque b+1 si el acceso b produce un fallo
Prebusqueda marcadaSe incluye un tag en cada bloque. Si un bloque marcado es buscado o prebuscado el siguiente se prebusca. Sigue bien la localidad espacial
Prebusqueda adaptativaEl grado de prebusqueda ( numero de bloques prebuscados) se ajusta en función del comportamiento
Prebusqueda con “stride” arbitrario
Cache con prebusqueda
32 Reducir la tasa de fallos
0
0.2
0.4
0.6
0.8
1
1.2
1.4
1.6
1.8
2
tomcatv swin su2cor hydro mgrid applu turb3d
Specfp95
HP7200 HP8000
ComparaciónHP 7200 Prebusqueda HW - HP8000 Prebusqueda SW
RendimientoRelativo
Cache con prebusqueda
Implementacion
Estado de los bloques prebuscados (stream buffer)Bloque prebuscado pasa a buffer Al ser referenciado pasa a CacheAlpha busca dos bloques en fallo
33 Reducir la tasa de fallos
Compilador: Optimización de código
Ejemplo: DEC Alpha 21064: Mc de 8 KB, E = 1, M = 256( numero de bloques), Bloque = 4 palabras de 64 bits (32 bytes)
- Cada 1024 palabras se repite la asignación de marcos de bloques.
1) Fusión de arrays: Mejora la localidad espacial para disminuir los fallos de conflicto
- Colocar las mismas posiciones de diferentes arrays en posiciones contiguas de memoria
A,B[0:1]
A,B[512:513]
A,B[510:511]
A,B[2:3]
A,B[4:5]
A,B[510:511]
A[0:3]
A[1020:1023]
A[1016:1019]
A[4:7]
A[8:11]
A[12:15]
B[0:3]
B[1020:1023]
B[1016:1019]
B[4:7]
B[8:11]
B[12:15]
2x1024 fallos2x256 de inicio
1536 de conflicto1024/2 fallos2x256 de inicio
Ganancia: 4
double A[1024];double B[1024];
for (i = 0; i < 1024; i = i + 1) C = C + (A[i] + B[i]);
struct fusion{ double A; double B;} array[1024];
for (i = 0; i < 1024; i = i + 1 C = C + (array[i].A + array[i].B);
34 Reducir la tasa de fallos
Compilador: Optimización de código
3) Intercambio de bucles: Mejora la localidad espacial para disminuir los fallos de conflicto
- En lenguaje C las matrices se almacenan por filas, luego se debe variar en el bucle interno la columna
2) Alargamiento de arrays: Mejora la localidad espacial para disminuir los fallos de conflicto
- Impedir que en cada iteración del bucle se compita por el mismo marco de bloque
B[1020:1023]
B[1016:1019]
A[0:3]
A[1020:1023]
A[1016:1019]
A[4:7]
A[8:11]
A[12:15]
B[0:3]
B[4:7]
B[8:11]
B[12:15]
double A[1024];double B[1024];
for (i=0; i < 1024; i=i +1) C = C + (A[i] + B[i]);
double A[1028];double B[1024];
for (i=0; i < 1024; i=i+1) C = C + (A[i] + B[i]);
double A[128][128];
for (i=0; i < 128;i=i+1) for (j=0; j < 128; j=j+1) C = C * A[i][j];
double A[128][128];
for (j=0; j < 128; j=j+1) for (i=0; i < 128;i=i+1) C = C * A[i][j];
A[0][0:3]
A[7]124:127]
A[7][120:123]v
A[0][4:7]
A[0][8:11]
A[0][12:15]
A[8][0:3]
A[8][4:7]
A[8][8:11]
A[8][12:15]
A[15][120:123]
A[15][124:127]
A[120][0:3]
A[120][4:7]
A[120][8:11]
A[120][12:15]
A[127][120:123]
A[127][124:127]
A[0:3]
A[1020:1023]
A[1016:1019]
A[4:7]
A[8:11]
A[12:15]
A[1024:1027]
A[1016:1019]
B[1012:1015]
B[0:3]
B[4:7]
B[8:11]
B[1016:1019]
B[1020:1023]
2x1024 fallos512 de inicio
1536 de conflicto
1024/2 fallos512 de inicio
Ganancia: 4
128x128 fallos16x256 de inicio
12288 de conflicto
128x128/4 fallos16x256 de inicio
Ganancia: 4
35 Reducir la tasa de fallos
Compilador: Optimización de código
4) Fusión de bucles: Mejora la localidad temporal para disminuir los fallos de capacidad
- Fusionar los bucles que usen los mismos arrays para usar los datos que se encuentran en cache antes de desecharlos
double A[64][64]; double A[64][64];
for (i=0; i < 64; i=i+1) for (i=0; i < 64;i=i+1) for (j=0; j < 64;j=j+1) for (j=0; j < 64;j=j+1) C = C * A[i][j]; {
C = C * A[i][j]; for (i=0; i < 64;i=i+1) D = D + A[i][j]; for (j=0; j < 64;j=j+1) } D = D + A[i][j];
A[0][0:3]
A[15]60:63]
A[15][56:59]
A[0][4:7]
A[0][8:11]
A[0][12:15]
A[16][0:3]
A[16][4:7]
A[16][8:11]
A[16][12:15]
A[31][56:59]
A[31][60:63]
A[32][0:3]
A[47]60:63]
A[47][56:59]
A[32][4:7]
A[32][8:11]
A[32][12:15]
A[48][0:3]
A[48][4:7]
A[48][8:11]
A[48][12:15]
A[63][56:59]
A[63][60:63]
(64x64/4)x2 fallos4x256 de inicio
4x256 de capacidad
64x64/4 fallos4x256 de inicio Ganancia: 2
36 Reducir la tasa de fallos
Compilador: Optimización de código
5) Calculo por bloques( Blocking): Mejora la localidad temporal para disminuir los fallos de capacidad
/* Antes */for (i=0; i < N; i=i+1)
for (j=0; j < N; j=j+1){r = 0; for (k=0; k < N; k=k+1){
r = r + y[i][k]*z[k][j];}; x[i][j] = r;};
Dos bucles internos: Lee todos los NxN elementos de z Lee N elementos de 1 fila y en
cada iteración Escribe N elementos de 1 fila de x
Fallos de capacidad dependen de N y Tamaño de la cache:
Idea: calcular por submatrices BxB que permita la cache
antes
Después
37 Reducir la tasa de fallos
Compilador: Optimización de código
5) Calculo por bloques( Blocking): Mejora la localidad temporal para disminuir los fallos de capacidad
/* Despues */for (jj=0;jj < N; jj=jj+B)for (kk=0;kk < N; kk=kk+B)for (i=0; i < N; i=i+1)
for (j=jj;j < min(jj+B-1,N);j=j+1){r = 0; for (k=kk;k < min(kk+B-
1,N);k=k+1){r = r + y[i][k]*z[k][j];};
x[i][j] = x[i][j]+r;};
B Factor de bloque (Blocking Factor)
1.00 1.50 2.00 2.50 3.00
vpenta
gmty
tomcatv
btrix
mxm
spice
cholesky
Fusión de array Intercambio de bucles Fusión de bucles Blocking
Mejora de rendimiento
38 Reducir la tasa de fallos
Ejemplo: Producto de matrices 6x6 (sin blocking)
X Y Z
i
j
i
jk
k
i = 0, j = 0, k = 0..5
i = 0, j = 1..5 , k = 0..5
Al procesar la 2ª fila de Y (i=1) se necesita de nuevo 1ª col de Z: ¿Está todavía en la cache? Cache insuficiente provoca múltiples fallos sobre los mismos datos
X ij = ∑ Yik Zkj k
39 Reducir la tasa de fallos
Ejemplo “blocking”: Con Blocking (B=3)
X Y Z
i
j
i
jk
k
i = 0, j = 0, k = 0..2
i = 0, j = 1..2 , k = 0..2
Evidentemente, los elementos de X no están completamente calculados
40 Reducir la tasa de fallos
Ejemplo “blocking”: Con Blocking (B=3)
X Y Z
i
j
i
jk
k
i = 1, j = 0, k = 0..2
i = 1, j = 1..2 , k = 0..2
Idea: Procesar el bloque 3x3 de Z antes de quitarlo de la cache
41 Reducir la tasa de fallos
Con Blocking (B=3). Algunos pasos después...
X Y Z
i
j
i
jk
k
i = 0, j = 0, k = 3..5
i = 0, j = 1..2 , k = 3..5
Y ya empezamos a tener elementos de X completamente calculados!
42 Reducir la tasa de fallos
CPUtimeIC CPIExecution
Memory accesses
InstructionMiss rateMiss penalty
Clock cycle time
¿ Como mejorar el rendimiento de la cache
Reducir la tasa de fallosReducir la penalización del falloReducir el tiempo de acceso a la cache
CPUtimeIC CPIExecution
Memory accesses
InstructionMiss rateMiss penalty
Clock cycle time
1) Tamaño del bloque2) Asociatividad3) Algoritmo de reemplazamiento4) Cache de víctimas5) Cache pseudo-asociativas6) Cache con prebusqueda7) Compilador: Optimización de código
Resumen
43
Política de actualización :Write-Through vs Write-Back Write-through: Todas las escrituras actualizan la cache y la memoria
o Se puede eliminar la copia de cache – Lo datos estan en la memoriao Bit de control en la cache: Solo un bit de validez
Write-back: Todas las escrituras actualizan solo la cacheo No se pueden eliminar los datos de la cache - Deben ser escritos primero en la
memoriao Bit de control: Bit de validez y bit de sucio
Comparación:o Write-through:
Memoria ( Y otros lectores ) siempre tienen el último valor Control simple
o Write-back: Mucho menor AB, escrituras múltiples en bloque Mejor tolerancia a la alta latencia de la memoria
Recordatorio
Política de actualización :Asignación o no en fallo de escritura
44 Reducir la penalización del fallo
Dar prioridad a la lecturas sobre las escriturasCon escritura directa ( write through). Buffer de escrituras. Check buffer
si no hay conflicto prioridad lecturasCon post-escritura. Buffer para bloque sucio y leer primero bloque en fallo
Reemplazamiento de subbloquesNo reemplazar el bloque completo sobre un falloLocalidad y tamaño ( Usado también para reducir almacenamiento de “tags”
Bits de validez
45 Reducir la penalización del fallo
Envío directo de la palabra solicitada al procesadorCarga anticipada ( early restart ): Cuando la palabra solicitada se
carga en memoria cache se envía al procesador
Primero la palabra solicitada ( critical word first ): Primero se lleva
al procesador y a memoria cache la palabra solicitada
El resto del bloque se carga en memoria cache en los siguientes ciclos
Su eficiencia depende del tamaño del bloque . Util con bloques
grandes
=> para bloques pequeños la ganancia es muy pequeña
Problema: localidad espacial, después la siguiente palabra
46 Reducir la penalización del fallo
Idea
Ocultar la latencia de un fallo de cache solapandolo con otras instrucciones independientes
•ADD R5,R6,R6•…………………..•…………………..•LD R1, dir•…………………..•…………………..•ADD R4,R4,R1
PREBUSCAR: Caches con prebusqueda
NO BLOQUEAR: Cache que no bloquean
Cache sin bloqueo ( non-blocking, lockup-free )
47 Reducir la penalización del fallo
•Permite que la ejecución siga aunque se produzca un fallo mientras ni se necesite el dato
•Un fallo sin servir. Sigue ejecutando y proporcionando datos que están en cache•HP7100, Alpha 21064
•Múltiples fallos sin servir. R12000 (4) , Alpha21264 (8), HP8500 (10), PentiumIII y 4 ( 4)
•Los beneficios dependen de la planificación de instrucciones
•Requiere interfase de memoria más complejo ( múltiples bancos )
Memoria
CPU
CPU
Memoria
CPU
CPU
Memoria
CPU
Memoria
Memoria
Fallo La CPU para hasta tener el dato
Fallo AciertoFallos
La CPU para cuando necesita dato
Cache sin bloqueo ( non-blocking, lockup-free )
48 Reducir la penalización del fallo
Hay que asociar un registro a la petición cuando se inicia un load sin bloqueoLD R1,dir
Información necesaria en el control de la funciónDirección del bloque que produce el falloEntrada de la Cache para el bloqueÍtem en el bloque que produce el falloRegistro donde se almacena el dato
Implementación (MSHR Miss Status Holding Register):
Direcciónbloque
Bit valido
Comparador
Bit valido Destino Formato
Bit valido Destino Formato
Bit valido Destino Formato
Bit valido Destino Formato
Palabra 0
Palabra 1
Palabra 2
Palabra 3
Fallo primarioFallo secundario
Estructura del MSHR para bloque de 32 byte, palabra 8 bytes(Solo un fallo por palabra)
Cache sin bloqueo ( non-blocking, lockup-free )
49
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
1 2 4 6 8 10 12
Latencia del Load
CP
I per
did
os
FC=0 y AE
FC=0
FC=1
FC=2
MF y 1 Bus
MF y 2 Bus
Sin limite
FC nº de fallos MF múltiples fallos y nº de búsquedasAE actualización en escritura
Reducir la penalización del fallo
Cache sin bloqueo ( non-blocking, lockup-free )
50 Reducir la penalización del fallo
Cache multinivel ( L2,L3,…)
o Más grande, más rapida Dos niveles de cache
o L2 Tiempo de acceso medio a memoria (TAMA)TAMA = Hit TimeL1 + Miss RateL1 x Miss PenaltyL1
Miss PenaltyL1 = Hit TimeL2 + Miss RateL2 x Miss PenaltyL2
TAMA = Hit TimeL1 + Miss RateL1 x (Hit TimeL2 + Miss RateL2 +Miss PenaltyL2
o Definiciones: Tasa de fallos local— fallos en esta cache dividido por el numero total de
accesos a esta cache (Miss rateL2)
Tasa de fallos global —fallos en esta cache dividido por el numero total de accesos a memoria generados por el procesador
La tasa de fallos global es lo importante - L1: Afecta directamente al procesador=> Acceder a un dato en el ciclo del
procesador - L2: Afecta a la penalización de L1 => Reducción del tiempo medio de
acceso
51 Reducir la penalización del fallo
0
10
20
30
40
50
60
70
80
4 8 16 32 64 128 256 512 1024 2048 4096
Tasa fallos local L2 Tasa fallos un nivel Tasa fallos global L2
Cache multinivel ( L2,L3,…)
Cache L1 32Kbytes, cache L2
diferentes tamaños
Tasa de fallos local no es una medida
El tiempo de acceso de L2 solo afecta
al tiempo de penalización
Tamaño de L2>>L1
Reducción de fallos en L2 igual que L1
asociatividad, tamaño de bloque,..
Costo
Local L2
global
52 Reducir la penalización del fallo
CPUtimeIC CPIExecution
Memory accesses
InstructionMiss rateMiss penalty
Clock cycle time
1) Dar prioridad a la lecturas sobre las escrituras
2) Reemplazamiento de subbloques
3) Envío directo de la palabra solicitada al procesador
4) Cache sin bloqueo ( non-blocking, lockup-free )
5) Cache multinivel ( L2,L3,…)
¿ Como mejorar el rendimiento de la cache
Reducir la tasa de fallosReducir la penalización del falloReducir el tiempo de acceso a la cache
53 Reducir el tiempo de acceso
Caches simples y pequeñasPequeña para que: Se pueda integrar junto al procesador
evitando la penalización en tiempo del acceso al exteriorTiempo de propagación versus tiempo de ciclo del procesador
Simple (grado de asociatividad pequeño) => solapamiento y tiempos de acceso menores
• Identificación+Comparación+Lectura
ETIQUETA PALMB
ACIERTO
0
1
2
3
MBDatosEtiquetaV
DATO
MULTIPLE
COMPARA
PALB
5 2 2
9ETIQUETA PALNC
0
1
NCDatosEtiquetaV
DATO
MULTIPLE
PALB
6 1 2
9
{
ACIERTO
COMPARA
Directo Asociativo por conjuntos
54 Reducir el tiempo de acceso
Cache de direcciones virtuales ( evita espera TLB )
Acceder a la cache con la dirección virtual Al cambio de contexto borrar la cache. Falsos aciertos
Costo = tiempo de borrado ( flush) + fallos iniciales No borrado, problema de sinónimos
Dos direcciones virtuales apuntan la misma dirección física Solución a los sinónimos y borrado
Añadir un identificador de proceso a cada bloque de cache.
CPU
TLB
$
MEM
DV
DF
DF
CacheConvencional
CPU
$
TLB
MEM
DV
DV
DF
Cache deDirecciones virtuales
DVTags
55 Reducir el tiempo de acceso
Caches virtualmente accedidas físicamente marcadas (evita espera TLB )
Numero de paginaEtiqueta
DesplazamientoMarco de bloque Palabra
o Se solapa la traducción del numero de pagina con el acceso a los tag del marco de bloqueo Limita el tamaño de la cache al tamaño de paginao Un modo de aumentar el tamaño máximo de la cache es aumentar la asociatividad
Marco de página
PÁGINA
Etiqueta
Dirección física
A
B C
Marco bloq. Palabra
NUMERO DE PÁGINA offset página
Dirección virtual
A= B + CA= B + CTLB
56 Reducir el tiempo de acceso
Segmentar escrituras
Las operaciones de escrituras más lentas ( se escribe después de chequear el tag)
Se segmenta el acceso: 1º se chequea el tag, 2º se actualiza el dato
Un write chequea el tag, el anterior esta escribiendo el dato en la cache
( Latencia de escrituras)
Los accesos de escritura deben usar el Delayed Write Buffer
57 Caches Resumen
Técnica TF PF TA ComplejidadTamaño grande del bloque + – 0Alta asociatividad + – 1Cache de victimas + 2Caches pseudo-Asociativas + 2Prebusqueda Hw + 2Prebusqueda Sw compilador + 3Optimizaciones del compilador + 0
Prioridad de lecturas + 1Reemplazamiento de subbloques + + 1Early Restart & Critical Word 1st + 2Caches Non-Blocking + 3Caches L2 + 2
Caches pequeñas y sencillas – + 0Evitar/solapar traducción de Dir. + 2Segmentar escrituras + 1
Tas
a d
e fa
lloT
iem
po
acce
so
Pen
aliz
ació
nd
e fa
llo
58 Caches Resumen
1
10
100
1000
1980 1985 1990 1995 1999
DRAM
CPU
El problema
1960-1985 rendimiento función de nº de operaciones1990’s Ejecución segmentada, superescalar, fuera de orden, especulación,..1999 rendimiento función de accesos fuera de la cache ¿ Que Implica?
Compiladores, SO, Algoritmos, estructuras de datos,...
59 Memoria
Conceptos básicos Rendimiento
Latencia: Penalización del fallo Tiempo de acceso : tiempo entre la petición y la llegada del dato Tiempo de ciclo : tiempo entre peticiones sucesivas
Ancho de Banda: Penalización de fallo de bloques grandes (L2) Construida con DRAM: Dynamic Random Access Memory (2007 2Gb)
Necesita ser refrescada periódicamente (2 a 8 ms, 1% tiempo) Direccionamiento en dos fases (El chip es una matriz de celdas 2D):
RAS : Row Access Strobe CAS : Column Access Strobe
Tiempo ciclo doble tiempo de acceso( 2000; 40ns acceso 90ns ciclo) Cache usan SRAM: Static Random Access Memory (2007 64Mb)
No necesitan refresco Tamaño: 4-6 transistores/bit vs. 1 transistor Capacidad: DRAM/SRAM 4-8, Costo: SRAM/DRAM 8-16 Tiempo de acceso: SRAM/DRAM 8-16
60 Memoria principal
Aumentar el ancho de banda con memoria• Aumento del ancho de banda en la transferencia de un bloque manteniendo la
misma latencia- DRAM: 1 ciclo en enviar la dirección, 10 ciclos en el acceso y 1 ciclo en el envío del dato,
tamaño depalabra 32bits.
- Cache: Bloques de tamaño 4 palabras de 4 bytesCPU
Cache
Memoria
BUS Y MEMORIA DE 1 PALABRAACCESO SECUENCIAL
1+4x(10+1)=45 => 0,35 bytes/ciclo
BUS Y MEMORIA DE 4 PALABRASACCESO SECUENCIAL (256,512)
1+1x(10+1)=12 => 1,33 bytes/ciclo
CPU
Cache
Memoria
MULTIPLEXOR
Coste del bus
TimeAccess Time
Cycle Time
61 Memoria principal
Aumentar el ancho de banda con memoria
ANCHURA DE BUS DE 1 PALABRAANCHURA DE MEMORIA DE 4 PALABRAS
ACCESO SOLAPADO A LOS MÓDULOS
1+(10+4)x1=15 => 1 byte/ciclo
Muy buena relación coste/rendimiento
CPU
M0
Cache
M1 M2 M3
ENTRELAZAMIENTO•Orden alto•Orden bajo
• Aumento del ancho de banda en la transferencia de un bloque manteniendo la misma latencia
- DRAM: 1 ciclo en enviar la dirección, 10 ciclos en el acceso y 1 ciclo en el envío del dato, tamaño de
palabra 32bits.
- Cache: Bloques de tamaño 4 palabras de 4 bytes
Funciona bien con accesos secuenciales.( Reemplazamiento de un bloque)No soluciona el problema de accesos independientes
Ac
ce
ss
Ba
nk
0
Access Bank 1
Access Bank 2
Access Bank 3
We can Access Bank 0 again
62 Memoria principal
Aumentar el ancho de banda con memoria
Distribución de direcciones con entrelazamiento de orden bajo
0
4
8
12
1
5
9
13
2
6
10
14
3
7
11
15
Banco 0 Banco 1
Banco 2 Banco 3
Accesos independientes a cada banco ( caches que no bloquean )• Cada banco necesita interfase con el sistema. Controlador, buses separados de direcciones y datos• Mezclar los tipos de entrelazamiento (entrelazamiento mixto)
0 1
2 3
4 5
6 7
8 9
10 11
12 13
14 15
Superbanco 0 Banco
Numero de superbancoDesplazamiento superbanco
Desplazamiento Numero de banco
0 a 3 (2bits)0 a 1 (1bit) 0 a 1 (1bit)
Ejemplo:4 accesos independientesCada acceso dos palabras
2 bits 2 bits
Despla Banco
DIR
63 Visión global Alpha 21064
Block addressBlockoffset
CPU addressData in
Data out
<21>
Tag Index
<8> <5>
Valid <1>
Data <256>
=?
4
3
(256 blocks)
2
1
Write buffer
Lower level memory
Tag <21>
4:1 Mux
FIGURE 5.5 The organization of the data cache in the Alpha AXP 21064 micropro-cessor.
• CACHE de primer nivel L1• Tamaño: 8 KB datos y 8 KB de instrucciones (solo
lectura)
• Tamaño del bloque: 32 bytes (4 palabras de 64 bits)
• Número de bloques: 256
1. Dirección física de 34 bits (división en campos)
- MS: cacheable o E/S (no cacheable)
2. Selección de marco de bloque por el índice
3. Comparación y lectura simultánea
4. Informar que el dato está listo en cache
En caso de fallo
4. Indica al procesador que espere
5. Lectura del bloque desde siguiente nivel
(Mp o L2)
• Política de emplazamiento: Directo
• Política de reemplazamiento: Trivial
• Política de actualización: Escritura directa
64 Visión global Alpha 21064
• División de memorias cache
• TLB asociativo
• Solapamiento de comparación y la lectura
• Solapamiento de escrituras consecutivas
• Prebúsqueda hw de instrucciones (1 bloque)
• Buffer de escritura de 4 bloques
• 2 MB L2 de cache de emplazamiento directo con cache víctima de 1 bloque
• 256 bit a memoriaV Data<1>
D<1> <13> <256>
=?
(65,536 blocks)
<13>
Tag Index
<16>
Main memory
Tag
Victim buffer
Write buffer
Block offset
Index
<8> <5>
1
1
2
2
3
5
5
6
7
89
10
11 12
12
12
13
14
15
16
17
18
18
19
19
19
20
17
21
22
23
23
23
24
25
26
27
28
28
Page-frame address <30> Instruction <64>
Data in <64>
Data Out <64>
V Physical address<1> <21>
R<2>
W<2>
Tag<30>
<21>
<64>
<64>
<29><29>
<64>
(High-order 21 bits of physical address)
Page offset<13>
Block offset
Index
<8> <5>
Data page-frame address <30>
V Physical address<1> <21>
R<2>
W<2>
Tag<30>
<21>
(High-order 21 bits of physical address)
Page offset<13>
I T L B
I C A C H E
L2 C A C H E
D C A C H E
D T L B
PC
CPU
Alpha AXP 21064
=?
Instruction prefetch stream buffer
Tag <29> Data <256>=?
Tag <29> Data <256>
Valid Data<1> <21> <64>
=?
2
4
5
9
12(256 blocks)
Tag Valid Data<1> <21> <64>
=?
(256 blocks)
Tag
Delayed write buffer
12:1 Mux
4:1 Mux
32:1 Mux
Magnetic disk
Figure 5.47Ñ Hennessy/Patterson Computer Architecture
Morgan Kaughmann Pub. 100% Ñ Illustrious, Inc. Ñ 7/11/95-rs
65 Visión global Alpha 21064
Buffer de prebusqueda de instrucciones
ICACHE
ITLB
Data<256>
=?
Tag<13> Index<16>
Main memory
Tag<13>
offset5Index8
address <30> Instruction <64> Data in <64> Data Out <64>
marco<21>Tag<30>
<21>
<64><64>
<29> <29>
<64>
offset<13>
Offset5Index8
address <30>
marco<21>Tag<30>
<21>
offset<13> PC CPU
=?Tag <29> Data <256>
=?
Tag <29> Data <256>
V
=?
Tag<21> V Data<64>
=?
Tag<21>
Magnetic disk
Data<64>
Buffer de escrituraintermedia
Buffer de escritura retrasada
Buffer víctima
DCACHE
DTLB
L2CACHE
66 Visión global Alpha 21064
Data<256>
=?
Tag<13> Index<16>
Main memory
Tag<13>
offset5NM8
pgvirtual <30> Instruction <64> Data in <64> Data Out <64>
pgfisica<21>Tag<30>
<21>
<64><64>
<29> <29>
<64>
offset<13>
Offset5Index8
address <30>
marco<21>Tag<30>
<21>
offset<13> PC
CPU
=?Tag <29> Data <256>
=?
Tag <29> Data <256>
V
=?
TagC<21> V Data<64>
=?
Tag<21>
Magnetic disk
Data<64>
Pgfisica<21>Tag dir <21>
2 ciclos2 ciclos2 ciclos2 ciclos
Acierto de lecturaAcierto de lectura primer nivelprimer nivel
67 Visión global Alpha 21064
Data<256>
=?
Tag<13> Index<16>
Main memory
Tag<13>
offset5NM8
pgvirtual <30> Instruction <64> Data in <64> Data Out <64>
pgfisica<21>Tag<30>
<21>
<64><64>
<29> <29>
<64>
offset<13>
Offset5Index8
address <30>
marco<21>Tag<30>
<21>
offset<13> PC
CPU
=?Tag <29> Data <256>
=?
Tag <29> Data <256>
V
=?
TagC<21> V Data<64>
=?
Tag<21>
Magnetic disk
Data<64>
8 bytes8 bytes2 ciclos2 ciclos
8 bytes8 bytes2 ciclos2 ciclos
16+16 bytes16+16 bytes5+5 ciclos5+5 ciclos
16+16 bytes16+16 bytes5+5 ciclos5+5 ciclos
LecturaLecturaAcierto Acierto
prebúsquedaprebúsquedaAcierto segundo Acierto segundo
nivelnivel
68 Visión global Alpha 21064
Data<256>
=?
Tag<13> Index<16>
Main memory
Tag<13>
offset5NM8
pgvirtual <30> Instruction <64> Data in <64> Data Out <64>
pgfisica<21>Tag<30>
<21>
<64><64>
<29> <29>
<64>
offset<13>
Offset5Index8
address <30>
marco<21>Tag<30>
<21>
offset<13> PC
CPU
=?Tag <29> Data <256>
=?
Tag <29> Data <256>
V
=?
TagC<21> V Data<64>
=?
Tag<21>
Magnetic disk
Data<64>
32 bytes32 bytes36 ciclos36 ciclos
32 bytes32 bytes36 ciclos36 ciclos
LecturaLecturaFallo segundo Fallo segundo
nivelnivel
69 Visión global Alpha 21064
Data<256>
=?
Tag<13> Index<16>
Main memory
Tag<13>
offset5Index8
address <30> Instruction <64> Data in <64> Data Out <64>
marco<21>Tag<30>
<21>
<64><64>
<29> <29>
<64>
offset<13>
Offset5Index8
address <30>
marco<21>Tag<30>
<21>
offset<13> PC
CPU
=?Tag <29> Data <256>
=?
Tag <29> Data <256>
V
=?
Tag<21> V Data<64>
=?
Tag<21>
Magnetic disk
Data<64>
32 bytes32 bytes5+10 ciclos5+10 ciclos
32 bytes32 bytes5+10 ciclos5+10 ciclos
Siempre se escribe en 2º nivelAcierto nivel 2:Se sobreescribeFallo nivel 2
Preferencia a la lectura
70 Visión global Alpha 21064
0,01%
0,10%
1,00%
10,00%
100,00%AlphaSort Espresso Sc Mdljsp2 Ear Alvinn Mdljp2 Nasa7
I $
D $
L2
Rendimiento SPEC92
Specint: I$ miss = 2%,D$ miss = 13%, L2 miss = 0.6%Specfp: I$ miss = 1%, D$ miss = 21%, L2 miss = 0.3%WL comercial:I$ miss = 6%, D$ miss = 32%, L2 miss = 10%
Tas
a de
fallo
s
71 Visión global Alpha 21064
Rendimiento CPI ideal 0.5Parada en el lanzamiento de instrucciones saltos,dependencias Esperas de las diferentes cachesOtros conflictos estructurales, registros,...
0.00
0.50
1.00
1.50
2.00
2.50
3.00
3.50
4.00
4.50
5.00
AlphaSort Espresso Sc Mdljsp2 Ear Alvinn Mdljp2
CPI
L2
I$
D$
I Stall
Other
72 Visión global Alpha 21264 (ES40)
• CACHE de DATOS L1• Tamaño: 64KB datos , ASOCIATIVA 2 vias
• Tamaño del bloque: 64 bytes (8 palabras de 64 bits), 1024 bloques
1. Dirección virtual de 48 bits pasa a dirección física de 44 bits
2. Selección de marco de bloque por el índice3. Comparación y lectura simultánea4. Selección e informar que el dato está listo
73 Visión global Alpha 21264 (ES40)
Caches L1 o Cache de instrucciones acceso virtualo Escritura directao Buffer de escritura intermedia para acelerar la escritura directa o Buffer de escritura retrasada para segmentar las escrituraso Buffer de prebúsqueda de un bloque de instrucciones
Cache L2o Post-escriturao Buffer víctima para dar preferencia a la lecturao Directao 8Mb, 64 bytes bloqueo Critico primero (16)
130 130 ciclosciclos130 130 ciclosciclos
15 15 ciclosciclos
15 15 ciclosciclos
74
Rendimiento SPEC95
Visión global Alpha 21264 (ES40)
Fallos por1000 instrucciones y CPI para diferentes cargas de trabajo
0
2
4
6
8
10
12
TPC- C SPECint SPECfp
CPI
I cache
L2 cache
I - TLB
75
IBM Power 5-6
Ejemplos
Power 5 Power 6
L1 Instrucciones
L1 Datos
64KB, directa, 128 bytes, read only32KB, 2 ways, 128 bytes, write-throught
64KB, 4 ways, 128 bytes, read only64KB, 8 ways, 128 bytes, write-throught
L2 Compartida, 1,92MB, 10ways, 128 bytes, pseudoLRU, copy-back
Propietaria de cada core, 4MB, 8ways, 128 bytes, pseudoLRU, copy-back
L3Off-chip
Compartida, Victimas36MB, 12 ways, 256 bytes, pseudoLRU
Compartida, Victimas32MB, 16 ways, 128 bytes, pseudoLRU
76
Sun Niagara I-II
Ejemplos
Niagara I Niagara II
L1 Instrucciones
L1 Datos
16KB, 4 ways, 32 bytes, read only, aleatorio8KB, 4 ways, 16 bytes, write-throught, aleatorio
16KB, 8 ways, 32bytes, read only, aleatorio8KB, 8 ways, 16 bytes, write-throught, aleatorio
L2 Compartida, 3MB, 12ways, 64 bytes, copy-back
compartida, 4MB, 16ways, 64 bytes, copy-back
77
Intel CORE2 AMD Opteron
Ejemplos
Opteron Core 2
L1 Instrucciones
L1 Datos
64KB, 2 ways, 64bytes, read only, LRU
64KB, 2 ways, 64bytes, LRU, copy back, no inclusiva
32KB, 8 ways, 64 bytes, read only,
32KB, 8 ways, 64 bytes, write-throught
L2 Compartida, 1MB, 16ways, 64bytes, pseudoLRU, copy-back
Compartida, 4MB, 16ways, o 6MB 24 ways, 128 bytes, copy-back
78
DRAM logical organization (4 Mbit)
Column Decoder
Sense Amps & I/O
Memory Array(2,048 x 2,048)
A0…A10
…
11 D
Q
Word LineStorage Cell
79 DRAM Rendimiento
1. Fast Page mode o Añade señales de timing para permitir repetir los accesos
al row buffer sin un nuevo acceso al array de almacenamiento.
o Este buffer existe en el array de almacenamiento y puede tener un tamaño de 1024 a 2048 bits.
2. Synchronous DRAM (SDRAM)o Añade una señal de reloj al interfase de la DRAM, de
manera que transferencias sucesivas no necesitan sincronizar con el controlador de la DRAM.
3. Double Data Rate (DDR SDRAM)o Transfiere datos en ambos flancos de la señal de reloj de la
DRAM dobla el ancho de banda ( peak data rate)o DDR2 reduce consumo, reduciendo el voltaje desde2.5 a
1.8 volts + trabaja a mayor frecuencia hasta 400 MHzo DDR3 baja el voltaje a 1.5 volts + mayor frecuencia hasta
800 MHz
Mejora en AB, no en latencia
80
DRAM: el nombre se basa en AB de chip (Peak Chip Transfers / Sec)DIMM: el nombre se basa en AB del DIMM (Peak DIMM MBytes / Sec)
Stan-dard
Clock Rate
(MHz)
M transfer
s / second
DRAM Name
Mbytes/s/
DIMMDIMM
Name
DDR 133 266 DDR266 2128 PC2100
DDR 150 300 DDR300 2400 PC2400
DDR 200 400 DDR400 3200 PC3200
DDR2 266 533 DDR2-533 4264 PC4300
DDR2 333 667 DDR2-667 5336 PC5300
DDR2 400 800 DDR2-800 6400 PC6400
DDR3 533 1066 DDR3-1066 8528 PC8500
DDR3 666 1333 DDR3-1333 10664 PC10700
DDR3 800 1600 DDR3-1600 12800 PC12800
x 2 x 8
Top Related