Memoria caché

51
Memoria Memoria CACHÉ 1 https://goo.gl/RRmsli Chapter 2 - Computer Architecture - A quantitative approach Hennessy & Patterson, Fifth edition, 2013

description

Presentación sobre el funcionamiento de memoria caché

Transcript of Memoria caché

Page 1: Memoria caché

MemoriaMemoria CACHÉ

1https://goo.gl/RRmsli

Chapter 2 - Computer Architecture - A quantitative approach Hennessy & Patterson, Fifth edition, 2013

Page 2: Memoria caché

2

Page 3: Memoria caché

3

Page 4: Memoria caché

Un cuello de botella entre el procesador y la memoria

4

Page 5: Memoria caché

5

Page 6: Memoria caché

Caché

Un espacio oculto para el almacenamiento de provisiones, armas, tesoros, etc.

Una memoria de rápido acceso a los datos o instrucciones recientemente usados o de uso más frecuente

De manera general:

Optimizar transferencias de datos entre diferentes elementos de sistemas

6

Page 7: Memoria caché

7

Page 8: Memoria caché

Acierto: Comunicación procesador - caché

8

Page 9: Memoria caché

Al no encontrar el bloque 12, se produce un Fallo,

9

Page 10: Memoria caché

10

Page 11: Memoria caché

Principio de localidad

11

Page 12: Memoria caché

12

Page 13: Memoria caché

13

Page 14: Memoria caché

Jerarquía de Memoria

14

Page 15: Memoria caché

Métricas de desempeño CACHÉ

Tasa de aciertos

Porcentaje de accesos encontrados en la caché

Tasa de Fallos

Fracción de referencias a memoria no encontradas en caché (fallos/accesos) = 1-Tasa de aciertos

Típicamente (en porcentajes):

3% -10% para L1

Tiempo de acierto

Tiempo para entregar al procesador una línea encontrada en la caché

Incluyendo el tiempo para determinar si esa línea está en la caché

Típicamente, el tiempo de acierto es de 1 a 2 ciclos de reloj para L1

Penalidad por fallo

Tiempo adicional debido a un fallo

Típicamente entre 50 a 200 ciclos de reloj

15

Page 16: Memoria caché

→ Costo de los fallos de CACHÉ

Hay una enorme diferencia entre un acierto (hit) y un fallo (miss)

por ejemplo de hasta 100x

Considere lo siguiente: 99% de aciertos es dos veces mejor que 97% de aciertos:

Con un tiempo de acierto de un ciclo y un tiempo de fallo de 100 ciclos

Tendremos una Tasa Promedio de Acceso:

97% aciertos: 1 ciclo + 0.03 * 100 ciclos = 4 ciclos

99% aciertos: 1 ciclo + 0.01 * 100 ciclos = 2 ciclos

Entonces, usamos el concepto: Tasa de fallos, en vez de tasa de aciertos

16

Page 17: Memoria caché

Jerarquías de Memoria

Algunas propiedades perdurables de sistema de hardware y software:

Tecnologías de almacenamiento más rápidas casi siempre cuestan más por byte y tienen menor capacidad

La brecha entre tecnologías de memoria respecto a Velocidad es amplia

registros ↔ caché(SRAM) ↔ DRAM ↔ HDD, …

Programas bien escritos tienden a hacer uso apropiado del principio de localidad

Esto sugiere un enfoque para organizar la memoria y los sistemas de almacenamiento conocido como Jerarquía de Memoria 17

Page 18: Memoria caché

Jerarquías de Memoria

principio fundamental:

Cada nivel k sirve como caché para el nivel k+1 más grande, pero más lento

Funcionamiento

Debido al principio de localidad, los programas tienden a acceder a los datos en el nivel k, mas a menudo que a los datos en un nivel k+1

por lo que, el almacenamiento a nivel k + 1 puede ser más lento, y por lo tanto más grande y más barato por bit

Idea principal

La Jerarquía de Memoria crea un pool de recursos de almacenamiento que cuesta tanto como el almacenamiento barato cercano en el nivel inferior, pero que sirve datos a una tasa similar a la del almacenamiento rápido cercano por la parte superior

18

Page 19: Memoria caché

19

Page 20: Memoria caché

20

Page 21: Memoria caché

21

Page 22: Memoria caché

22

Page 23: Memoria caché

Tarea: ¿Qué tecnología se usa en la construcción de m. Caché?

¿y, en las memorias RAM?

guía: DRAM / SRAM

23

Page 24: Memoria caché

Organización de la Memoria Caché

24

Page 25: Memoria caché

25

Page 26: Memoria caché

Función de mapeo

1. Directo: Cada bloque de memoria principal es asignado a una única línea de caché, pero cada línea puede recibir más de un bloque

2. Asociativa: Cada bloque de memoria principal puede ser cargado en cualquier línea de la caché

3. Asociativo por conjuntos: Toma lo mejor de cada uno de los dos tipos

26

Page 27: Memoria caché

Mapeo directoMod 4

bloques

27

Page 28: Memoria caché

28

Page 29: Memoria caché

29

Page 30: Memoria caché

Tamaño típico de un bloque o línea de caché: 32 o 64 bytes

30

Page 31: Memoria caché

Analicemos:

¿Qué puede inferir de?

1. Inicialmente, la memoria CACHÉ está vacía 2. Flujos de acceso: (addr, hit/miss)

(10, miss), (11, hit), (12, miss), ….

31

Page 32: Memoria caché

Problemas con caché de mapeo directo

32

Page 33: Memoria caché

Mapeo Asociativo↔Mapeo Directo

Que pasa si pudiéramos almacenar datos en cualquier parte de la caché?

Esto relentizaría la caché

Revisemos:

conflictos más cara

00100110

33

Page 34: Memoria caché

Mapeo Directo - Direccionamiento

Ejemplo: Considere 2² bloques con 2¹ byte por bloque y direcciones de 4 bit. ¿Cuál sería la dirección caché del byte número 13 (1101)

Desplazamiento (n-bits) = 1: un bit es suficiente para conocer el desplazamiento (2¹ byte)

Index (k bits) = 2: con dos bits, podemos identificar los 2² bloques

Tag: Por diferencia, 1 bit para identificar qué byte de la memoria

1 10 1

34

Page 35: Memoria caché

Mapeo Asociativo por conjuntos

¿Dónde irá el contenido de la dirección 0x1833?

Tamaño de bloque o línea de caché de 16 bytes

0x1833 en binario es 00...0001 1000 0011 0011Desplazamiento

4 bits

35

Page 36: Memoria caché

Reemplazo de bloques

Un bloque vacío en el conjunto correcto puede ser usado

Si no hay bloques vacíos, ¿Cuál deberíamos reemplazar?

Reemplacemos alguno, por supuesto, pero ¿Cual?

Típicamente, la caché usa algo cercano al Usado Menos Reciente (LRU -Least Recently Used)

Con la intención de maximizar la localidad temporal

36

Page 37: Memoria caché

Analicemos ahora:

¿Qué puede inferir de?

1. Inicialmente, la memoria CACHÉ está vacía 2. Flujos de acceso: (addr, hit/miss)

(10, miss), (12, miss), (10, miss)

37

Page 38: Memoria caché

Organización General de CACHÉ (S,E,B)

38

Page 39: Memoria caché

Lecturas de caché

39

Page 40: Memoria caché

Ejemplo: Caché de mapeo directo (E=1 bloque/ conjunto)

Mapeo directo: Una línea por conjunto / Asuma tamaño de bloque: 8 byte

1

40

Page 41: Memoria caché

Ejemplo: Caché de mapeo directo (E=1 bloque/ conjunto)

Mapeo directo: Una línea por conjunto / Asuma tamaño de bloque: 8 byte

2

3 41

Page 42: Memoria caché

Ejemplo: Caché de mapeo directo (E=1 bloque/ conjunto)

Mapeo directo: Una línea por conjunto / Asuma tamaño de bloque: 8 byte

Si no hay coincidencia, la línea entera es reemplazada

42

Page 43: Memoria caché

Ejemplo: Caché de conjunto asociativo(E vías)

E = 2: Dos líneas por conjunto / Asuma tamaño de bloque: 8 byte

1

43

Page 44: Memoria caché

Ejemplo: Caché de conjunto asociativo(E vías)

E = 2: Dos líneas por conjunto / Asuma tamaño de bloque: 8 byte

2

344

Page 45: Memoria caché

Ejemplo: Caché de conjunto asociativo(E vías)

E = 2: Dos líneas por conjunto / Asuma tamaño de bloque: 8 byte

Si no hay coincidencia:

La línea es reemplazada ( no todo el conjunto)

Políticas de reemplazo: Ramdom, Least Recently Used (LRU)

45

Page 46: Memoria caché

Tipos de fallos de caché (3 C’s)

Cold miss (Obligatorio)

Ocurre en el primer acceso a un bloque

Conflict miss ( Fallo por conflicto)

Debido a la organización de la caché

El hardware de caché limita los bloques a un pequeño subconjunto (a veces sólo uno) de los espacios de caché disponibles

mapeo directo (solo a uno): el bloque i debe ser puesto en (i mod size)

asociativa por conjuntos (a varios): n es potencia de 2

Ocurre cuando múltiples objetos son mapeados al mismo espacio

Capacity miss (Fallo por capacidad)

Ocurre cuando el conjunto de bloques de caché activa (conjunto de trabajo) es mayor que el total de memoria caché (simplemente no encaja)

46

Page 47: Memoria caché

¿Qué sucede en las escrituras (write caché)?

Existen múltiples copias de los datos

L1, L2, posiblemente en L3 y Memoria Principal

¿Cuál es el mayor problema con este enfoque?

coherencia: La no concordancia entre las diferentes copias

47

Page 48: Memoria caché

Aciertos (hit) en la Escritura

Políticas para Acierto de escritura

Write-through → Escritura Inmediata: Escribe inmediatamente a la Memoria Principal

Desventaja, cada escritura implica ir hasta la Memoria principal

Write-back → Escritura diferida:

Escritura diferida a la Memoria principal hasta que la línea se va a reemplazar

Necesita un bit (dirty bit - bit sucio) que indica si la línea es o no diferente de la línea en memoria principal

48

Page 49: Memoria caché

Fallos (miss) en la Escritura (No)

Políticas para fallos de escritura

Write-allocate →:

Carga en caché, actualiza la línea en caché

Bueno si siguen más escrituras en el mismo lugar

No-Write-allocate →:

Simplemente, escribir de inmediato a la Memoria principal

49

Page 50: Memoria caché

políticas típicas de escritura (no)

Usualmente: Write-back + write-allocate

Ocasionalmente: Write-through + No-Write-Allocate

50

Page 51: Memoria caché

Créditos

51