procesadores para cómputo de altas prestaciones abril 2008 tema 5 jerarquía de memoria: cache,...

80
Procesadores para cómputo de altas prestaciones Abril 2008 Tema 5 Jerarquía de memoria: Cache, reducción de fallos, ocultación de latencia, memoria principal

Upload: inigo-vasco

Post on 16-Feb-2015

7 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: Procesadores para cómputo de altas prestaciones Abril 2008 Tema 5 Jerarquía de memoria: Cache, reducción de fallos, ocultación de latencia, memoria principal

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

Page 2: Procesadores para cómputo de altas prestaciones Abril 2008 Tema 5 Jerarquí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

Page 3: Procesadores para cómputo de altas prestaciones Abril 2008 Tema 5 Jerarquía de memoria: Cache, reducción de fallos, ocultación de latencia, memoria principal

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

Page 4: Procesadores para cómputo de altas prestaciones Abril 2008 Tema 5 Jerarquía de memoria: Cache, reducción de fallos, ocultación de latencia, memoria principal

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

Page 5: Procesadores para cómputo de altas prestaciones Abril 2008 Tema 5 Jerarquía de memoria: Cache, reducción de fallos, ocultación de latencia, memoria principal

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

Page 6: Procesadores para cómputo de altas prestaciones Abril 2008 Tema 5 Jerarquía de memoria: Cache, reducción de fallos, ocultación de latencia, memoria principal

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

Page 7: Procesadores para cómputo de altas prestaciones Abril 2008 Tema 5 Jerarquía de memoria: Cache, reducción de fallos, ocultación de latencia, memoria principal

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

Page 8: Procesadores para cómputo de altas prestaciones Abril 2008 Tema 5 Jerarquía de memoria: Cache, reducción de fallos, ocultación de latencia, memoria principal

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

Page 9: Procesadores para cómputo de altas prestaciones Abril 2008 Tema 5 Jerarquía de memoria: Cache, reducción de fallos, ocultación de latencia, memoria principal

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

Page 10: Procesadores para cómputo de altas prestaciones Abril 2008 Tema 5 Jerarquía de memoria: Cache, reducción de fallos, ocultación de latencia, memoria principal

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

Page 11: Procesadores para cómputo de altas prestaciones Abril 2008 Tema 5 Jerarquía de memoria: Cache, reducción de fallos, ocultación de latencia, memoria principal

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

Page 12: Procesadores para cómputo de altas prestaciones Abril 2008 Tema 5 Jerarquía de memoria: Cache, reducción de fallos, ocultación de latencia, memoria principal

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

Page 13: Procesadores para cómputo de altas prestaciones Abril 2008 Tema 5 Jerarquía de memoria: Cache, reducción de fallos, ocultación de latencia, memoria principal

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

Page 14: Procesadores para cómputo de altas prestaciones Abril 2008 Tema 5 Jerarquía de memoria: Cache, reducción de fallos, ocultación de latencia, memoria principal

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

Page 15: Procesadores para cómputo de altas prestaciones Abril 2008 Tema 5 Jerarquía de memoria: Cache, reducción de fallos, ocultación de latencia, memoria principal

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

Page 16: Procesadores para cómputo de altas prestaciones Abril 2008 Tema 5 Jerarquía de memoria: Cache, reducción de fallos, ocultación de latencia, memoria principal

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

Page 17: Procesadores para cómputo de altas prestaciones Abril 2008 Tema 5 Jerarquía de memoria: Cache, reducción de fallos, ocultación de latencia, memoria principal

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

Page 18: Procesadores para cómputo de altas prestaciones Abril 2008 Tema 5 Jerarquía de memoria: Cache, reducción de fallos, ocultación de latencia, memoria principal

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

Page 19: Procesadores para cómputo de altas prestaciones Abril 2008 Tema 5 Jerarquía de memoria: Cache, reducción de fallos, ocultación de latencia, memoria principal

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

Page 20: Procesadores para cómputo de altas prestaciones Abril 2008 Tema 5 Jerarquía de memoria: Cache, reducción de fallos, ocultación de latencia, memoria principal

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

Page 21: Procesadores para cómputo de altas prestaciones Abril 2008 Tema 5 Jerarquía de memoria: Cache, reducción de fallos, ocultación de latencia, memoria principal

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.

Page 22: Procesadores para cómputo de altas prestaciones Abril 2008 Tema 5 Jerarquía de memoria: Cache, reducción de fallos, ocultación de latencia, memoria principal

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

Page 23: Procesadores para cómputo de altas prestaciones Abril 2008 Tema 5 Jerarquía de memoria: Cache, reducción de fallos, ocultación de latencia, memoria principal

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

Page 24: Procesadores para cómputo de altas prestaciones Abril 2008 Tema 5 Jerarquía de memoria: Cache, reducción de fallos, ocultación de latencia, memoria principal

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

Page 25: Procesadores para cómputo de altas prestaciones Abril 2008 Tema 5 Jerarquía de memoria: Cache, reducción de fallos, ocultación de latencia, memoria principal

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

Page 26: Procesadores para cómputo de altas prestaciones Abril 2008 Tema 5 Jerarquía de memoria: Cache, reducción de fallos, ocultación de latencia, memoria principal

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

Page 27: Procesadores para cómputo de altas prestaciones Abril 2008 Tema 5 Jerarquía de memoria: Cache, reducción de fallos, ocultación de latencia, memoria principal

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

Page 28: Procesadores para cómputo de altas prestaciones Abril 2008 Tema 5 Jerarquía de memoria: Cache, reducción de fallos, ocultación de latencia, memoria principal

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

Page 29: Procesadores para cómputo de altas prestaciones Abril 2008 Tema 5 Jerarquía de memoria: Cache, reducción de fallos, ocultación de latencia, memoria principal

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

Page 30: Procesadores para cómputo de altas prestaciones Abril 2008 Tema 5 Jerarquía de memoria: Cache, reducción de fallos, ocultación de latencia, memoria principal

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)

Page 31: Procesadores para cómputo de altas prestaciones Abril 2008 Tema 5 Jerarquía de memoria: Cache, reducción de fallos, ocultación de latencia, memoria principal

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

Page 32: Procesadores para cómputo de altas prestaciones Abril 2008 Tema 5 Jerarquía de memoria: Cache, reducción de fallos, ocultación de latencia, memoria principal

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

Page 33: Procesadores para cómputo de altas prestaciones Abril 2008 Tema 5 Jerarquía de memoria: Cache, reducción de fallos, ocultación de latencia, memoria principal

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);

Page 34: Procesadores para cómputo de altas prestaciones Abril 2008 Tema 5 Jerarquía de memoria: Cache, reducción de fallos, ocultación de latencia, memoria principal

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

Page 35: Procesadores para cómputo de altas prestaciones Abril 2008 Tema 5 Jerarquía de memoria: Cache, reducción de fallos, ocultación de latencia, memoria principal

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

Page 36: Procesadores para cómputo de altas prestaciones Abril 2008 Tema 5 Jerarquía de memoria: Cache, reducción de fallos, ocultación de latencia, memoria principal

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

Page 37: Procesadores para cómputo de altas prestaciones Abril 2008 Tema 5 Jerarquía de memoria: Cache, reducción de fallos, ocultación de latencia, memoria principal

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

Page 38: Procesadores para cómputo de altas prestaciones Abril 2008 Tema 5 Jerarquía de memoria: Cache, reducción de fallos, ocultación de latencia, memoria principal

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

Page 39: Procesadores para cómputo de altas prestaciones Abril 2008 Tema 5 Jerarquía de memoria: Cache, reducción de fallos, ocultación de latencia, memoria principal

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

Page 40: Procesadores para cómputo de altas prestaciones Abril 2008 Tema 5 Jerarquía de memoria: Cache, reducción de fallos, ocultación de latencia, memoria principal

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

Page 41: Procesadores para cómputo de altas prestaciones Abril 2008 Tema 5 Jerarquía de memoria: Cache, reducción de fallos, ocultación de latencia, memoria principal

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!

Page 42: Procesadores para cómputo de altas prestaciones Abril 2008 Tema 5 Jerarquía de memoria: Cache, reducción de fallos, ocultación de latencia, memoria principal

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

Page 43: Procesadores para cómputo de altas prestaciones Abril 2008 Tema 5 Jerarquía de memoria: Cache, reducción de fallos, ocultación de latencia, memoria principal

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

Page 44: Procesadores para cómputo de altas prestaciones Abril 2008 Tema 5 Jerarquía de memoria: Cache, reducción de fallos, ocultación de latencia, memoria principal

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

Page 45: Procesadores para cómputo de altas prestaciones Abril 2008 Tema 5 Jerarquía de memoria: Cache, reducción de fallos, ocultación de latencia, memoria principal

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

Page 46: Procesadores para cómputo de altas prestaciones Abril 2008 Tema 5 Jerarquía de memoria: Cache, reducción de fallos, ocultación de latencia, memoria principal

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 )

Page 47: Procesadores para cómputo de altas prestaciones Abril 2008 Tema 5 Jerarquía de memoria: Cache, reducción de fallos, ocultación de latencia, memoria principal

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 )

Page 48: Procesadores para cómputo de altas prestaciones Abril 2008 Tema 5 Jerarquía de memoria: Cache, reducción de fallos, ocultación de latencia, memoria principal

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 )

Page 49: Procesadores para cómputo de altas prestaciones Abril 2008 Tema 5 Jerarquía de memoria: Cache, reducción de fallos, ocultación de latencia, memoria principal

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 )

Page 50: Procesadores para cómputo de altas prestaciones Abril 2008 Tema 5 Jerarquía de memoria: Cache, reducción de fallos, ocultación de latencia, memoria principal

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

Page 51: Procesadores para cómputo de altas prestaciones Abril 2008 Tema 5 Jerarquía de memoria: Cache, reducción de fallos, ocultación de latencia, memoria principal

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

Page 52: Procesadores para cómputo de altas prestaciones Abril 2008 Tema 5 Jerarquía de memoria: Cache, reducción de fallos, ocultación de latencia, memoria principal

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

Page 53: Procesadores para cómputo de altas prestaciones Abril 2008 Tema 5 Jerarquía de memoria: Cache, reducción de fallos, ocultación de latencia, memoria principal

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

Page 54: Procesadores para cómputo de altas prestaciones Abril 2008 Tema 5 Jerarquía de memoria: Cache, reducción de fallos, ocultación de latencia, memoria principal

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

Page 55: Procesadores para cómputo de altas prestaciones Abril 2008 Tema 5 Jerarquía de memoria: Cache, reducción de fallos, ocultación de latencia, memoria principal

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

Se cambia "Conjunto" por "Marco bloq." por coherencia con el formato de dirección inicia (cache directa). Así tb es correcta la afirmación sobre el lí,ite del tamaño de la cache.
Se añade tercera fila de texto
Page 56: Procesadores para cómputo de altas prestaciones Abril 2008 Tema 5 Jerarquía de memoria: Cache, reducción de fallos, ocultación de latencia, memoria principal

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

Page 57: Procesadores para cómputo de altas prestaciones Abril 2008 Tema 5 Jerarquía de memoria: Cache, reducción de fallos, ocultación de latencia, memoria principal

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

Page 58: Procesadores para cómputo de altas prestaciones Abril 2008 Tema 5 Jerarquía de memoria: Cache, reducción de fallos, ocultación de latencia, memoria principal

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,...

Page 59: Procesadores para cómputo de altas prestaciones Abril 2008 Tema 5 Jerarquía de memoria: Cache, reducción de fallos, ocultación de latencia, memoria principal

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

Page 60: Procesadores para cómputo de altas prestaciones Abril 2008 Tema 5 Jerarquía de memoria: Cache, reducción de fallos, ocultación de latencia, memoria principal

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

Page 61: Procesadores para cómputo de altas prestaciones Abril 2008 Tema 5 Jerarquía de memoria: Cache, reducción de fallos, ocultación de latencia, memoria principal

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

Page 62: Procesadores para cómputo de altas prestaciones Abril 2008 Tema 5 Jerarquía de memoria: Cache, reducción de fallos, ocultación de latencia, memoria principal

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

Se añade interpretación de la dirección
Se añade texto entre paréntesis
Page 63: Procesadores para cómputo de altas prestaciones Abril 2008 Tema 5 Jerarquía de memoria: Cache, reducción de fallos, ocultación de latencia, memoria principal

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

Page 64: Procesadores para cómputo de altas prestaciones Abril 2008 Tema 5 Jerarquía de memoria: Cache, reducción de fallos, ocultación de latencia, memoria principal

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

Page 65: Procesadores para cómputo de altas prestaciones Abril 2008 Tema 5 Jerarquía de memoria: Cache, reducción de fallos, ocultación de latencia, memoria principal

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

Page 66: Procesadores para cómputo de altas prestaciones Abril 2008 Tema 5 Jerarquía de memoria: Cache, reducción de fallos, ocultación de latencia, memoria principal

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

Page 67: Procesadores para cómputo de altas prestaciones Abril 2008 Tema 5 Jerarquía de memoria: Cache, reducción de fallos, ocultación de latencia, memoria principal

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

Page 68: Procesadores para cómputo de altas prestaciones Abril 2008 Tema 5 Jerarquía de memoria: Cache, reducción de fallos, ocultación de latencia, memoria principal

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

Page 69: Procesadores para cómputo de altas prestaciones Abril 2008 Tema 5 Jerarquía de memoria: Cache, reducción de fallos, ocultación de latencia, memoria principal

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

Page 70: Procesadores para cómputo de altas prestaciones Abril 2008 Tema 5 Jerarquía de memoria: Cache, reducción de fallos, ocultación de latencia, memoria principal

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

Page 71: Procesadores para cómputo de altas prestaciones Abril 2008 Tema 5 Jerarquía de memoria: Cache, reducción de fallos, ocultación de latencia, memoria principal

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

Page 72: Procesadores para cómputo de altas prestaciones Abril 2008 Tema 5 Jerarquía de memoria: Cache, reducción de fallos, ocultación de latencia, memoria principal

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

Page 73: Procesadores para cómputo de altas prestaciones Abril 2008 Tema 5 Jerarquía de memoria: Cache, reducción de fallos, ocultación de latencia, memoria principal

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

Page 74: Procesadores para cómputo de altas prestaciones Abril 2008 Tema 5 Jerarquía de memoria: Cache, reducción de fallos, ocultación de latencia, memoria principal

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

Page 75: Procesadores para cómputo de altas prestaciones Abril 2008 Tema 5 Jerarquía de memoria: Cache, reducción de fallos, ocultación de latencia, memoria principal

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

Page 76: Procesadores para cómputo de altas prestaciones Abril 2008 Tema 5 Jerarquía de memoria: Cache, reducción de fallos, ocultación de latencia, memoria principal

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

Page 77: Procesadores para cómputo de altas prestaciones Abril 2008 Tema 5 Jerarquía de memoria: Cache, reducción de fallos, ocultación de latencia, memoria principal

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

Page 78: Procesadores para cómputo de altas prestaciones Abril 2008 Tema 5 Jerarquía de memoria: Cache, reducción de fallos, ocultación de latencia, memoria principal

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

Page 79: Procesadores para cómputo de altas prestaciones Abril 2008 Tema 5 Jerarquía de memoria: Cache, reducción de fallos, ocultación de latencia, memoria principal

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

Page 80: Procesadores para cómputo de altas prestaciones Abril 2008 Tema 5 Jerarquía de memoria: Cache, reducción de fallos, ocultación de latencia, memoria principal

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