Descargar

Jerarquía de memoria: cache, reducción de fallos, ocultación de latencia, memoria principal (página 2)

Enviado por Pablo Turmero


Partes: 1, 2
edu.red

54 Reducir el tiempo de acceso Caches virtualmente accedidas físicamente marcadas (evita espera TLB ) (Gp:) Numero de pagina Etiqueta (Gp:) Desplazamiento Marco de bloque Palabra

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

(Gp:) Marco de página (Gp:) PÁGINA

Etiqueta Dirección física (Gp:) A (Gp:) B (Gp:) C (Gp:) Marco bloq. Palabra (Gp:) NUMERO DE PÁGINA offset página (Gp:) Dirección virtual

A= B + C TLB

edu.red

55 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

edu.red

56 Caches Resumen Técnica TF PF TA Complejidad Tamañ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 Tasa de fallo Tiempo acceso Penalización de fallo

edu.red

57 Caches Resumen El problema 1960-1985 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,…

edu.red

58 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

edu.red

59 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 (Gp:) CPU (Gp:) Cache

(Gp:)

Memoria

(Gp:) BUS Y MEMORIA DE 1 PALABRA ACCESO SECUENCIAL (Gp:) 1+4x(10+1)=45 => 0,35 bytes/ciclo

(Gp:) BUS Y MEMORIA DE 4 PALABRAS ACCESO SECUENCIAL (256,512) (Gp:) 1+1x(10+1)=12 => 1,33 bytes/ciclo (Gp:) CPU (Gp:) Cache (Gp:) Memoria (Gp:) MULTIPLEXOR

Coste del bus (Gp:) Time (Gp:) Access Time (Gp:) Cycle Time

edu.red

60 Memoria principal Aumentar el ancho de banda con memoria 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 (Gp:) CPU (Gp:) M0 (Gp:) Cache

(Gp:) M1 (Gp:) M2 (Gp:) 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 (Gp:) Access Bank 0 (Gp:) Access Bank 1 (Gp:) Access Bank 2 (Gp:) Access Bank 3 (Gp:) We can Access Bank 0 again

edu.red

61 Memoria principal Aumentar el ancho de banda con memoria Distribución de direcciones con entrelazamiento de orden bajo (Gp:) 0 4 8 12 (Gp:) 1 5 9 13 (Gp:) 2 6 10 14 (Gp:) 3 7 11 15 (Gp:) Banco 0 (Gp:) Banco 1 (Gp:) Banco 2 (Gp:) 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) (Gp:) 0 1 2 3 (Gp:) 4 5 6 7 (Gp:) 8 9 10 11 (Gp:) 12 13 14 15 (Gp:) Superbanco 0 (Gp:) Banco

(Gp:) Numero de superbanco (Gp:) Desplazamiento superbanco (Gp:) Desplazamiento Numero de banco

(Gp:) 0 a 3 (2bits) (Gp:) 0 a 1 (1bit) 0 a 1 (1bit)

Ejemplo: 4 accesos independientes Cada acceso dos palabras 2 bits 2 bits Despla Banco DIR

edu.red

62 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 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

edu.red

63 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

edu.red

64 Visión global Alpha 21064 Buffer de prebusqueda de instrucciones ICACHE ITLB 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> < 64> < 29> < 29> < 64> offset< 13>

Offset5 Index8

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 escritura intermedia Buffer de escritura retrasada Buffer víctima DCACHE DTLB L2CACHE

edu.red

65 Visión global Alpha 21064 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> < 64> < 29> < 29> < 64> offset< 13>

Offset5 Index8

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 ciclos Acierto de lectura primer nivel

edu.red

66 Visión global Alpha 21064 (Gp:) Data< 256> (Gp:) =? (Gp:) Tag< 13> Index< 16> (Gp:) Main (Gp:) memory (Gp:) Tag< 13> (Gp:) offset5 (Gp:) NM8 (Gp:) pgvirtual < 30> (Gp:) (Gp:) Instruction < 64> (Gp:) (Gp:) Data in < 64> (Gp:) (Gp:) Data Out < 64> (Gp:) (Gp:) pgfisica< 21> (Gp:) Tag< 30> (Gp:) < 21> (Gp:) < 64> (Gp:) < 64> (Gp:) < 29> (Gp:) < 29> (Gp:) < 64> (Gp:) offset< 13> (Gp:) (Gp:) Offset5 (Gp:) Index8 (Gp:) (Gp:) address < 30> (Gp:) (Gp:) marco< 21> (Gp:) Tag< 30> (Gp:) < 21> (Gp:) offset< 13> (Gp:) (Gp:) PC (Gp:) CPU (Gp:) =? (Gp:) Tag < 29> Data < 256> (Gp:) =? (Gp:) Tag < 29> Data < 256> (Gp:) V (Gp:) =? (Gp:) TagC< 21> (Gp:) V (Gp:) Data< 64> (Gp:) =? (Gp:) Tag< 21> (Gp:) Magnetic (Gp:) disk (Gp:) Data< 64> (Gp:) 8 bytes 2 ciclos (Gp:) 16+16 bytes 5+5 ciclos

Lectura Acierto prebúsqueda Acierto segundo nivel

edu.red

67 Visión global Alpha 21064 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> < 64> < 29> < 29> < 64> offset< 13>

Offset5 Index8

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 bytes 36 ciclos Lectura Fallo segundo nivel

edu.red

68 Visión global Alpha 21064 (Gp:) Data< 256> (Gp:) =? (Gp:) Tag< 13> Index< 16> (Gp:) Main (Gp:) memory (Gp:) Tag< 13> (Gp:) offset5 (Gp:) Index8 (Gp:) address < 30> (Gp:) (Gp:) Instruction < 64> (Gp:) (Gp:) Data in < 64> (Gp:) (Gp:) Data Out < 64> (Gp:) (Gp:) marco< 21> (Gp:) Tag< 30> (Gp:) < 21> (Gp:) < 64> (Gp:) < 64> (Gp:) < 29> (Gp:) < 29> (Gp:) < 64> (Gp:) offset< 13> (Gp:) (Gp:) Offset5 (Gp:) Index8 (Gp:) (Gp:) address < 30> (Gp:) (Gp:) marco< 21> (Gp:) Tag< 30> (Gp:) < 21> (Gp:) offset< 13> (Gp:) (Gp:) PC (Gp:) CPU (Gp:) =? (Gp:) Tag < 29> Data < 256> (Gp:) =? (Gp:) Tag < 29> Data < 256> (Gp:) V (Gp:) =? (Gp:) Tag< 21> (Gp:) V (Gp:) Data< 64> (Gp:) =? (Gp:) Tag< 21> (Gp:) Magnetic (Gp:) disk (Gp:) Data< 64> (Gp:) 32 bytes 5+10 ciclos

Siempre se escribe en 2º nivel Acierto nivel 2:Se sobreescribe Fallo nivel 2 Preferencia a la lectura

edu.red

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

edu.red

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

edu.red

71 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

edu.red

72 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) 130 ciclos 15 ciclos

edu.red

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

edu.red

74 IBM Power 5-6 Ejemplos

edu.red

75 Sun Niagara I-II Ejemplos

edu.red

76 Intel CORE2 AMD Opteron Ejemplos

edu.red

77 DRAM logical organization (4 Mbit) Column Decoder Sense Amps & I/O Memory Array (2,048 x 2,048) A0…A1 0 … 1 1 D Q W ord Line Storage Cell

edu.red

78 DRAM Rendimiento Fast Page mode 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

edu.red

79 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) (Gp:) x 2 (Gp:) x 8

Partes: 1, 2
 Página anterior Volver al principio del trabajoPágina siguiente