La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Jerarquía de memoria: Cache,

Presentaciones similares


Presentación del tema: "Jerarquía de memoria: Cache,"— Transcripción de la presentación:

1 Jerarquía de memoria: Cache,
Tema 5 Jerarquía de memoria: Cache, reducción de fallos, ocultación de latencia, memoria principal

2 Contenidos Introducción: Jerarquía de memoria Rendimiento: mejoras
Reducir la tasa de fallos de la cache Reducir la penalización de los fallos de cache Reducir el tiempo de acceso a la cache La memoria principal Una visión global: Alpha 21064 Bibliografía Capítulo 5 de [HePa07] [JaMu98a] B. Jacob, T. N. Mudge. “Virtual Memory: Issues of Implementation”. IEEE Computer Magazine. Vol. 31 (6), Junio 1998, Simulador X-CACHE

3 El problema Introducción
50% por año Gap memoria -procesador 9% por año La demanda de anchura de banda con memoria crece.

4 Introducción 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) Tiempo de acceso Coste Capacidad nivel 0 nivel 1(1.1,1.2,1.3) nivel 2 nivel 3 nivel 4 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

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 Objetivo de la gestión de la jerarquía de memoria
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 Niveles a los que afecta la gestión de la jerarquía 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) Gestión de la memoria cache 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”) Memoria Cache Gestión de la memoria cache Gestión de la memoria virtual Memoria Principal 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 virtual Memoria Secundaria

7 Introducción Propiedades de la jerarquía de memoria 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 espacial Tendencia a referenciar elementos de memoria (datos o instrucc.) cercanos a los últimos elementos referenciados Ejemplos: programas secuenciales, arrays, variables locales de subrutinas, etc.

8 Introducción Terminología
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 Memoria nivel inferior Al procesador Memoria nivel superior Blk X Del procesador Blk Y

9 El problema Introducción
50% por año Gap memoria -procesador 9% por año La demanda de anchura de banda con memoria crece. Segmentación, ILP Ejecución especulativa 1980 no caches “on chip”, niveles de cache “on chip” No tienen valor en sí mismas. Solo para el reducir el gap

10 El problema: Algunos datos
Introducción El problema: Algunos datos Tamaño de la cache Del 50 al 75 % del área. Más del 80% de los transistores PentiumIII Itaniun 2 Madison 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, /1=180, 180x6=1080 instrucciones Latencia: 1ciclo ( Itanium2) a 3 ciclos Power4-5

11 El problema Introducción Tamaño de la cache
Del 50 al 75 % del área. Más del 80% de los transistores Montecito 1700Mtrans Pentium 4

12 La más simple: Emplazamiento directo
Repaso de conceptos básicos La más simple: Emplazamiento directo Dirección Memoria Cache directa de 4 Bytes 1 Cache Index 2 3 1 4 2 5 3 6 7 La posición 0 de la cache almacenara los datos de: Posiciones de memoria 0, 4, 8, ... etc. En general: Cualquier posición de memoria cuyos 2 LSBs de la dirección sean 0s Dirección<1:0> => cache index ¿Cuando se debe llevar una información a la cache? ¿ Como localizar la información en la cache ? 8 9 A Let’s look at the simplest cache one can build. A direct mapped cache that only has 4 bytes. In this direct mapped cache with only 4 bytes, location 0 of the cache can be occupied by data form memory location 0, 4, 8, C, ... and so on. While location 1 of the cache can be occupied by data from memory location 1, 5, 9, ... etc. So in general, the cache location where a memory location can map to is uniquely determined by the 2 least significant bits of the address (Cache Index). For example here, any memory location whose two least significant bits of the address are 0s can go to cache location zero. With so many memory locations to chose from, which one should we place in the cache? Of course, the one we have read or write most recently because by the principle of temporal locality, the one we just touch is most likely to be the one we will need again soon. Of all the possible memory locations that can be placed in cache Location 0, how can we tell which one is in the cache? +2 = 22 min. (Y:02) B C D E F

13 Cache directa de 1 KB, 32Bytes por bloque
Repaso de conceptos básicos Cache directa de 1 KB, 32Bytes por bloque Para una cache de 2N con dirección de 32bits: Los (32 - N) bits más significativos son el Tag Los M bits menos significativos son el selector de bytes (Tamaño de bloque = 2M) 31 9 4 Cache Tag Example: 0x50 Cache Index Byte Select Ex: 0x01 Ex: 0x00 Valid Bit Cache Tag Cache Data : Byte 31 Byte 1 Byte 0 : 0x50 Byte 63 Byte 33 Byte 32 1 Let’s use a specific example with realistic numbers: assume we have a 1 KB direct mapped cache with block size equals to 32 bytes. In other words, each block associated with the cache tag will have 32 bytes in it (Row 1). With Block Size equals to 32 bytes, the 5 least significant bits of the address will be used as byte select within the cache block. Since the cache size is 1K byte, the upper 32 minus 10 bits, or 22 bits of the address will be stored as cache tag. The rest of the address bits in the middle, that is bit 5 through 9, will be used as Cache Index to select the proper cache entry. +2 = 30 min. (Y:10) 2 3 : : : : Byte 1023 Byte 992 31

14 Asociativa por conjuntos
Repaso de conceptos básicos Asociativa por conjuntos N-way asociativa : N entradas por conjunto N caches directas operando en paralelo (N típico 2 , 4) Ejemplo: 2-way cache asociativa Cache Index selecciona un conjunto de la cache Los dos tags en el conjunto son comparados en paralelo Se selecciona el dato en función de la comparación Cache Index Valid Cache Tag Cache Data Cache Data Cache Block 0 Cache Tag Valid : Cache Block 0 : : : This is called a 2-way set associative cache because there are two cache entries for each cache index. Essentially, you have two direct mapped cache works in parallel. This is how it works: the cache index selects a set from the cache. The two tags in the set are compared in parallel with the upper bits of the memory address. If neither tag matches the incoming address tag, we have a cache miss. Otherwise, we have a cache hit and we will select the data on the side where the tag matches occur. This is simple enough. What is its disadvantages? +1 = 36 min. (Y:16) Compare Adr Tag Compare 1 Sel1 Mux Sel0 OR Cache Block Hit

15 Repaso de conceptos básicos
Comparación Asociativa por conjuntos “versus” Directa N comparadores vs. 1 Retardo extra por el MUX para los datos El dato llega después del hit del acceso En una directa, el bloque de cache es accesible antes del hit: Es posible asumir un acierto y continuar. Recuperación si fallo. Cache Data Cache Block 0 Cache Tag Valid : Cache Index Mux 1 Sel1 Sel0 Cache Block Compare Adr Tag OR Hit First of all, a N-way set associative cache will need N comparators instead of just one comparator (use the right side of the diagram for direct mapped cache). A N-way set associative cache will also be slower than a direct mapped cache because of this extra multiplexer delay. Finally, for a N-way set associative cache, the data will be available AFTER the hit/miss signal becomes valid because the hit/mis is needed to control the data MUX. For a direct mapped cache, that is everything before the MUX on the right or left side, the cache block will be available BEFORE the hit/miss signal (AND gate output) because the data does not have to go through the comparator. This can be an important consideration because the processor can now go ahead and use the data without knowing if it is a Hit or Miss. Just assume it is a hit. Since cache hit rate is in the upper 90% range, you will be ahead of the game 90% of the time and for those 10% of the time that you are wrong, just make sure you can recover. You cannot play this speculation game with a N-way set-associatvie cache because as I said earlier, the data will not be available to you until the hit/miss signal is valid. +2 = 38 min. (Y:18)

16 Política de actualización :Write-Through vs Write-Back
Repaso de conceptos básicos Política de actualización :Write-Through vs Write-Back Write-through: Todas las escrituras actualizan la cache y la memoria Se puede eliminar la copia de cache – Lo datos estan en la memoria Bit de control en la cache: Solo un bit de validez Write-back: Todas las escrituras actualizan solo la cache No se pueden eliminar los datos de la cache - Deben ser escritos primero en la memoria Bit de control: Bit de validez y bit de sucio Comparación: Write-through: Memoria ( Y otros lectores ) siempre tienen el último valor Control simple Write-back: Mucho menor AB, escrituras múltiples en bloque Mejor tolerancia a la alta latencia de la memoria Política de actualización :Asignación o no en fallo de escritura

17 Rendimiento 4 aspectos fundamentales Rendimiento de la cache
Ubicación de un bloque(línea) Emplazamiento directo, asociativo, asociativo por conjuntos Acceso al bloque: uso del índice Tag y bloque(línea) Reemplazamiento del bloque(línea) Aleatorio, LRU Estrategia 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

18 ¿ Como mejorar el rendimiento de la cache
Rendimiento: Mejora ¿ Como mejorar el rendimiento de la cache Reducir la penalización del fallo Reducir la tasa de fallos Reducir el tiempo de acceso a la cache Tipos de fallos (3 C´s) Tasa de fallos por tipo (Average SPEC92) Tamaño, asociatividad Iniciales(Compulsory): Fallos incluso en cache infinita Localidad espacial Capacidad: Tamaño de la cache Localidad temporal Conflicto: Política de emplazamiento

19 Reducir la tasa de fallos
Cambiando el tamaño del bloque Tasa de fallos Tamaño de bloque 1 palabra Mc 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) Reduce fallos iniciales Observaciones: Valor óptimo mayor según aumenta Mc Caches integradas tamaño y bloque fijo Caches externas tamaño y bloque variable Aumenta fallos De capacidad Miss rate (%) Tamaño bloque Tamaño cache Penalización Tamaño de bloque 1 palabra Mc Bloque del sig. nivel => Tecnología y organización del siguiente nivel

20 Reducir la tasa de fallos
Cambiando la asociatividad Tasa de fallos Asociativo Directo Asociativo por conjuntos E 1 M Disminución de la tasa de fallos de conflicto (más marcos posibles) Regla 2:1 Cache directa= 2way de mitad de tamaño 8 way es igual a totalmente asociativa Tiempo de acceso Observaciones: 1. Mejora menor según aumenta el tamaño Mc - Aumenta el número de conjuntos 2. Mejora menor según aumenta asociatividad Tiempo de acceso Coste hardware Asociativo Directo Asociativo por conjuntos E 1 M Número de comparadores => tecnología

21 Reducir la tasa de fallos
Algoritmo de reemplazamiento Espacio 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 3 ACIERTO REEMPLAZ.

22 Reducir la tasa de fallos
Algoritmo de reemplazamiento Influencia del algoritmo de reemplazamiento Tasa de fallos ALEATORIO Reemplazamiento LRU Disminuye la tasa de fallos de capacidad (mejora la localidad temporal) Grado Grado Grado 8 LRU 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 Mc 2. La diferencia aumenta con el grado de asociatividad E Tiempo de acceso Coste hardware Reemplazamiento ALEATORIO 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) CPU registros

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 B PAL Bloque: 0 ( ) 9 ETIQUETA PAL MB Marcos: 0 ( ); 2 ( ) 5 2 2 Hit Time Pseudo Hit Time Miss Penalty Time 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

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
Cache con prebúsqueda Idea Ocultar la latencia de un fallo de cache solapándolo con otras instrucciones independientes PREBUSCAR: Caches con prebusqueda ADD R5,R6,R6 ………………….. LD R1, dir Anticipa los fallos de Cache anticipando las búsquedas antes de que el procesador demande el dato Solapa acceso a los datos con instrucciones anteriores a la que usa el dato No se relaciona con los registros. No genera riesgos Posibilidad de búsquedas innecesarias Dos tipos Prebusqueda SW Prebusqueda HW

27 Reducir la tasa de fallos
Cache con prebusqueda 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

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: = 251

29 Prebúsqueda de instrucciones y datos
•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 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) 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* *1 = 400 Fallos evitados = = 232 Fallos: 7/2 Fallos: 7 Fallos: 2 * 7/2 (para i=1,2)

31 Reducir la tasa de fallos
Cache con prebusqueda Prebusqueda HW Prebusqueda secuencial de un bloque adicional Tipos Prebusqueda sobre fallo Prebusca el bloque b+1 si el acceso b produce un fallo Prebusqueda marcada Se incluye un tag en cada bloque. Si un bloque marcado es buscado o prebuscado el siguiente se prebusca. Sigue bien la localidad espacial Prebusqueda adaptativa El grado de prebusqueda ( numero de bloques prebuscados) se ajusta en función del comportamiento Prebusqueda con “stride” arbitrario

32 Reducir la tasa de fallos
Cache con prebusqueda Comparación HP 7200 Prebusqueda HW - HP8000 Prebusqueda SW Implementacion Rendimiento Relativo Estado de los bloques prebuscados (stream buffer) Bloque prebuscado pasa a buffer Al ser referenciado pasa a Cache Alpha 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 double A[1024]; double B[1024]; for (i = 0; i < 1024; i = i + 1) C = C + (A[i] + B[i]); A[0:3] B[0:3] struct fusion{ double A; double B; } array[1024]; for (i = 0; i < 1024; i = i + 1 C = C + (array[i].A + array[i].B); A,B[0:1] A[4:7] B[4:7] A,B[2:3] A[8:11] B[8:11] A,B[4:5] A[12:15] B[12:15] A,B[510:511] A,B[512:513] A[1016:1019] B[1016:1019] 2x1024 fallos 2x256 de inicio 1536 de conflicto A[1020:1023] B[1020:1023] A,B[510:511] 1024/2 fallos 2x256 de inicio Ganancia: 4

34 Reducir la tasa de fallos
Compilador: Optimización de código 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 double A[1024]; double B[1024]; for (i=0; i < 1024; i=i +1) C = C + (A[i] + B[i]); A[0:3] B[0:3] double A[1028]; double B[1024]; for (i=0; i < 1024; i=i+1) C = C + (A[i] + B[i]); A[0:3] A[1024:1027] A[4:7] B[4:7] A[4:7] B[0:3] A[8:11] B[8:11] A[8:11] B[4:7] A[12:15] B[12:15] A[12:15] B[8:11] 2x1024 fallos 512 de inicio 1536 de conflicto 1024/2 fallos 512 de inicio A[1016:1019] B[1016:1019] B[1016:1019] Ganancia: 4 A[1016:1019] B[1012:1015] A[1020:1023] B[1020:1023] B[1020:1023] A[1020:1023] A[1016:1019] 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 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]; 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]; A[0][0:3] A[8][0:3] A[120][0:3] A[0][4:7] A[8][4:7] A[120][4:7] A[0][8:11] A[8][8:11] A[120][8:11] A[0][12:15] A[8][12:15] A[120][12:15] 128x128 fallos 16x256 de inicio 12288 de conflicto 128x128/4 fallos 16x256 de inicio Ganancia: 4 A[7][120:123]v A[15][120:123] A[127][120:123] A[7]124:127] A[15][124:127] A[127][124:127]

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[16][0:3] A[32][0:3] A[48][0:3] A[0][4:7] A[16][4:7] A[32][4:7] A[48][4:7] A[0][8:11] A[16][8:11] A[32][8:11] A[48][8:11] A[0][12:15] A[16][12:15] A[32][12:15] A[48][12:15] A[15][56:59] A[31][56:59] A[47][56:59] A[63][56:59] A[15]60:63] A[31][60:63] A[47]60:63] A[63][60:63] (64x64/4)x2 fallos 4x256 de inicio 4x256 de capacidad 64x64/4 fallos 4x256 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 Mejora de rendimiento /* 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)

38 Reducir la tasa de fallos
Ejemplo: Producto de matrices 6x6 (sin blocking) X Y Z j k j k i i i = 0, j = 0, k = 0..5 X ij = ∑ Yik Zkj k 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

39 Reducir la tasa de fallos
Ejemplo “blocking”: Con Blocking (B=3) X Y Z j k j k i i i = 0, j = 0, k = 0..2 Evidentemente, los elementos de X no están completamente calculados i = 0, j = 1..2 , k = 0..2

40 Reducir la tasa de fallos
Ejemplo “blocking”: Con Blocking (B=3) X Y Z j k j k i i i = 1, j = 0, k = 0..2 Idea: Procesar el bloque 3x3 de Z antes de quitarlo de la cache i = 1, j = 1..2 , k = 0..2

41 Reducir la tasa de fallos
Con Blocking (B=3). Algunos pasos después... X Y Z j k j k i i i = 0, j = 0, k = 3..5 Y ya empezamos a tener elementos de X completamente calculados! i = 0, j = 1..2 , k = 3..5

42 Reducir la tasa de fallos
Resumen 1) Tamaño del bloque 2) Asociatividad 3) Algoritmo de reemplazamiento 4) Cache de víctimas 5) Cache pseudo-asociativas 6) Cache con prebusqueda 7) Compilador: Optimización de código ¿ Como mejorar el rendimiento de la cache Reducir la tasa de fallos Reducir la penalización del fallo Reducir el tiempo de acceso a la cache

43 Política de actualización :Write-Through vs Write-Back
Recordatorio Política de actualización :Write-Through vs Write-Back Write-through: Todas las escrituras actualizan la cache y la memoria Se puede eliminar la copia de cache – Lo datos estan en la memoria Bit de control en la cache: Solo un bit de validez Write-back: Todas las escrituras actualizan solo la cache No se pueden eliminar los datos de la cache - Deben ser escritos primero en la memoria Bit de control: Bit de validez y bit de sucio Comparación: Write-through: Memoria ( Y otros lectores ) siempre tienen el último valor Control simple Write-back: Mucho menor AB, escrituras múltiples en bloque Mejor tolerancia a la alta latencia de la memoria 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 escrituras Con escritura directa ( write through). Buffer de escrituras. Check buffer si no hay conflicto prioridad lecturas Con post-escritura. Buffer para bloque sucio y leer primero bloque en fallo Reemplazamiento de subbloques No reemplazar el bloque completo sobre un fallo Localidad 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 procesador Carga 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
Cache sin bloqueo ( non-blocking, lockup-free ) 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

47 Reducir la penalización del fallo
Cache sin bloqueo ( non-blocking, lockup-free ) 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 ) La CPU para cuando necesita dato CPU Memoria CPU CPU Fallo La CPU para hasta tener el dato Memoria Memoria CPU CPU Memoria Memoria Fallos Fallo Acierto

48 Reducir la penalización del fallo
Cache sin bloqueo ( non-blocking, lockup-free ) Hay que asociar un registro a la petición cuando se inicia un load sin bloqueo LD R1,dir Información necesaria en el control de la función Dirección del bloque que produce el fallo Entrada de la Cache para el bloque Ítem en el bloque que produce el fallo Registro donde se almacena el dato Implementación (MSHR Miss Status Holding Register): Fallo primario Fallo secundario Estructura del MSHR para bloque de 32 byte, palabra 8 bytes (Solo un fallo por palabra) Bit valido Bit valido Dirección bloque Destino Formato Palabra 0 Bit valido Destino Formato Palabra 1 Bit valido Destino Formato Palabra 2 Comparador Bit valido Destino Formato Palabra 3

49 Reducir la penalización del fallo
Cache sin bloqueo ( non-blocking, lockup-free ) FC nº de fallos MF múltiples fallos y nº de búsquedas AE actualización en escritura

50 Reducir la penalización del fallo
Cache multinivel ( L2,L3,…) Más grande, más rapida  Dos niveles de cache 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 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
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
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 fallos Reducir la penalización del fallo Reducir el tiempo de acceso a la cache

53 Reducir el tiempo de acceso
Caches simples y pequeñas Pequeña para que: Se pueda integrar junto al procesador evitando la penalización en tiempo del acceso al exterior Tiempo 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 PAL MB ACIERTO 1 2 3 Datos Etiqueta V DATO MULTIPLE COMPARA B 5 9 ETIQUETA PAL NC 1 Datos Etiqueta V DATO MULTIPLE B 6 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 Cache de Direcciones virtuales Tags CPU TLB $ MEM DV DF Cache Convencional

55 Reducir el tiempo de acceso
Caches virtualmente accedidas físicamente marcadas (evita espera TLB ) Numero de pagina Etiqueta Desplazamiento Marco de bloque Palabra A B C Marco bloq. Palabra NUMERO DE PÁGINA offset página Dirección virtual Marco de página PÁGINA TLB A= B + C Dirección física Etiqueta Se solapa la traducción del numero de pagina con el acceso a los tag del marco de bloque Limita el tamaño de la cache al tamaño de pagina Un modo de aumentar el tamaño máximo de la cache es aumentar la asociatividad

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 Complejidad
Tamaño grande del bloque + – 0 Alta asociatividad + – 1 Cache de victimas Caches pseudo-Asociativas Prebusqueda Hw Prebusqueda Sw compilador Optimizaciones del compilador + 0 Prioridad de lecturas Reemplazamiento de subbloques Early Restart & Critical Word 1st Caches Non-Blocking Caches L Caches pequeñas y sencillas – + 0 Evitar/solapar traducción de Dir Segmentar escrituras + 1 Tasa de fallo Penalización de fallo Tiempo acceso

58 El problema Caches Resumen
rendimiento función de nº de operaciones 1990’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 ( Mb) 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 BUS Y MEMORIA DE 4 PALABRAS BUS Y MEMORIA DE 1 PALABRA
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 de palabra 32bits. - Cache: Bloques de tamaño 4 palabras de 4 bytes BUS Y MEMORIA DE 4 PALABRAS ACCESO SECUENCIAL (256,512) 1+1x(10+1)=12 => 1,33 bytes/ciclo CPU Cache Memoria MULTIPLEXOR CPU Cache Memoria BUS Y MEMORIA DE 1 PALABRA ACCESO SECUENCIAL 1+4x(10+1)=45 => 0,35 bytes/ciclo Coste del bus Time Access Time Cycle Time

61 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 de palabra 32bits. - Cache: Bloques de tamaño 4 palabras de 4 bytes ENTRELAZAMIENTO Orden alto Orden bajo Access Bank 0 Access Bank 1 Access Bank 2 Access Bank 3 We can Access Bank 0 again CPU M0 Cache M1 M2 M3 ANCHURA DE BUS DE 1 PALABRA ANCHURA 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 Funciona bien con accesos secuenciales.( Reemplazamiento de un bloque) No soluciona el problema de accesos independientes

62 Desplazamiento superbanco
Memoria principal Aumentar el ancho de banda con memoria Distribución de direcciones con entrelazamiento de orden bajo 4 8 12 1 5 9 13 2 6 10 14 3 7 11 15 Banco 0 Banco 1 Banco 2 Banco 3 DIR 2 bits 2 bits Despla Banco 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) Numero de superbanco Desplazamiento superbanco Desplazamiento Numero de banco 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Superbanco 0 Banco Ejemplo: 4 accesos independientes Cada acceso dos palabras 0 a 3 (2bits) 0 a 1 (1bit) a 1 (1bit)

63 Visión global Alpha 21064 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 Política de emplazamiento: Directo Política de reemplazamiento: Trivial Política de actualización: Escritura directa 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)

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 memoria

65 Visión global Alpha 21064 =? =? =? =? =? address <30>
offset<13> CPU address <30> offset<13> PC Instruction <64> Data Out <64> Data in <64> Tag<30> marco<21> Tag<30> marco<21> <64> <64> <64> DTLB ITLB Buffer de escritura retrasada <21> <21> Index8 offset5 Index8 Offset5 V Tag<21> Data<64> V Tag<21> Data<64> ICACHE DCACHE =? =? <29> Tag <29> Data <256> Tag <29> Data <256> <29> =? =? Buffer de prebusqueda de instrucciones Buffer de escritura intermedia Tag<13> Index<16> Tag<13> Data<256> Main memory L2CACHE =? Buffer víctima Magnetic disk

66 2 ciclos Visión global Alpha 21064 Acierto de lectura primer nivel =?
CPU pgvirtual <30> offset<13> address <30> offset<13> PC Instruction <64> Data Out <64> Data in <64> Tag<30> pgfisica<21> Tag<30> marco<21> <64> <64> <64> <21> <21> NM8 offset5 Index8 Offset5 V TagC<21> Data<64> V Tag<21> Data<64> =? =? <29> <29> Tag <29> Data <256> Tag <29> Data <256> =? =? Pgfisica<21> Tag dir <21> 2 ciclos Tag<13> Index<16> Tag<13> Data<256> Main memory Acierto de lectura primer nivel =? Magnetic disk

67 Visión global Alpha 21064 8 bytes 2 ciclos 16+16 bytes 5+5 ciclos
Data<256> =? Tag<13> Index<16> Main memory Tag<13> offset5 NM8 pgvirtual <30> Instruction <64> Data in <64> Data Out <64> pgfisica<21> Tag<30> <21> <64> <29> offset<13> Offset5 Index8 address <30> marco<21> PC CPU Tag <29> Data <256> V TagC<21> Data<64> Tag<21> Magnetic disk 8 bytes 2 ciclos 16+16 bytes 5+5 ciclos Lectura Acierto prebúsqueda Acierto segundo nivel

68 Visión global Alpha 21064 32 bytes 36 ciclos =? =? =? =? Lectura
CPU pgvirtual <30> offset<13> address <30> offset<13> PC Instruction <64> Data Out <64> Data in <64> Tag<30> pgfisica<21> Tag<30> marco<21> <64> <64> <64> <21> <21> NM8 offset5 Index8 Offset5 V TagC<21> Data<64> V Tag<21> Data<64> =? =? <29> <29> Tag <29> Data <256> Tag <29> Data <256> =? 32 bytes 36 ciclos =? Tag<13> Index<16> Tag<13> Data<256> Main memory Lectura Fallo segundo nivel =? Magnetic disk

69 Visión global Alpha 21064 32 bytes 5+10 ciclos
Data<256> =? Tag<13> Index<16> Main memory Tag<13> offset5 Index8 address <30> Instruction <64> Data in <64> Data Out <64> marco<21> Tag<30> <21> <64> <29> offset<13> Offset5 PC CPU Tag <29> Data <256> V Tag<21> Data<64> Magnetic disk 32 bytes 5+10 ciclos Siempre se escribe en 2º nivel Acierto nivel 2:Se sobreescribe Fallo nivel 2 Preferencia a la lectura

70 Visión global Alpha 21064 Rendimiento SPEC92 Tasa de fallos
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%

71 Rendimiento CPI ideal 0.5 Visión global Alpha 21064
Parada en el lanzamiento de instrucciones saltos,dependencias Esperas de las diferentes caches Otros conflictos estructurales, registros,...

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 índice 3. Comparación y lectura simultánea 4. Selección e informar que el dato está listo

73 Visión global Alpha 21264 (ES40)
Caches L1 Cache de instrucciones acceso virtual Escritura directa Buffer de escritura intermedia para acelerar la escritura directa Buffer de escritura retrasada para segmentar las escrituras Buffer de prebúsqueda de un bloque de instrucciones Cache L2 Post-escritura Buffer víctima para dar preferencia a la lectura Directa 8Mb, 64 bytes bloque Critico primero (16) 15 ciclos 130 ciclos

74 Visión global Alpha 21264 (ES40)
Rendimiento SPEC95 Fallos por1000 instrucciones y CPI para diferentes cargas de trabajo

75 Ejemplos IBM Power 5-6 Power 5 Power 6 L1 Instrucciones L1 Datos
64KB, directa, 128 bytes, read only 32KB, 2 ways, 128 bytes, write-throught 64KB, 4 ways, 128 bytes, read only 64KB, 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 L3 Off-chip Compartida, Victimas 36MB, 12 ways, 256 bytes, pseudoLRU 32MB, 16 ways, 128 bytes, pseudoLRU

76 Ejemplos Sun Niagara I-II Niagara I Niagara II L1 Instrucciones
L1 Datos 16KB, 4 ways, 32 bytes, read only, aleatorio 8KB, 4 ways, 16 bytes, write-throught, aleatorio 16KB, 8 ways, 32bytes, read only, aleatorio 8KB, 8 ways, 16 bytes, write-throught, aleatorio L2 Compartida, 3MB, 12ways, 64 bytes, copy-back compartida, 4MB, 16ways, 64 bytes, copy-back

77 Ejemplos Intel CORE2 AMD Opteron 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 1 1 Sense Amps & I/O D Memory Array Q A0…A1 (2,048 x 2,048) Storage W ord Line Cell

79 DRAM Rendimiento Fast Page mode Synchronous DRAM (SDRAM)
Añade señales de timing para permitir repetir los accesos al row buffer sin un nuevo acceso al array de almacenamiento. Este buffer existe en el array de almacenamiento y puede tener un tamaño de 1024 a 2048 bits. Synchronous DRAM (SDRAM) 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. Double Data Rate (DDR SDRAM) Transfiere datos en ambos flancos de la señal de reloj de la DRAM  dobla el ancho de banda ( peak data rate) DDR2 reduce consumo, reduciendo el voltaje desde2.5 a 1.8 volts + trabaja a mayor frecuencia hasta 400 MHz 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 transfers / second DRAM Name Mbytes/s/ DIMM DIMM Name DDR 133 266 DDR266 2128 PC2100 150 300 DDR300 2400 PC2400 200 400 DDR400 3200 PC3200 DDR2 533 DDR2-533 4264 PC4300 333 667 DDR2-667 5336 PC5300 800 DDR2-800 6400 PC6400 DDR3 1066 DDR3-1066 8528 PC8500 666 1333 DDR3-1333 10664 PC10700 1600 DDR3-1600 12800 PC12800 x 2 x 8


Descargar ppt "Jerarquía de memoria: Cache,"

Presentaciones similares


Anuncios Google