800 likes | 1.14k Views
MEMORIA. 1. MEMORIA. Estructura Jerárquica de la Memoria Memoria Caché Memoria Principal Memoria Virtual. 2. MEMORIA. Estructura Jerárquica de la Memoria. 3. Estructura Jerárquica de la Memoria. Coste por bit Capacidad Tiempo de acceso Frecuencia de acceso . Registros
E N D
MEMORIA 1
MEMORIA • Estructura Jerárquica de la Memoria • Memoria Caché • Memoria Principal • Memoria Virtual 2
MEMORIA • Estructura Jerárquica de la Memoria 3
Estructura Jerárquica de la Memoria Coste por bit Capacidad Tiempo de acceso Frecuencia de acceso Registros Caché N1-N2 Memoria Principal Disco Magnético Cinta Magnética Disco Óptico No es única ¿ ? Quién se ocupa del transvase entre memorias - La CPU/MMU - El S. O. 4 Memoria
Estructura Jerárquica de la Memoria Memoria Multinivel Memoria Principal Bus de Memoria Bus de E/S CPU Dispositivos de E/S Registros C a c h e Tamaño: Oct-KB KB-MB GB TB Velocidad: 250 ps. 1 ns. 100 ns. 10 ms. 5 Memoria
MEMORIA • Memoria Caché 6
Memoria Caché ¿ Por qué es tan útiluna memoria tan pequeña ? Fundamento Principio de laLocalidad de Referencia Los accesos a memoria que realiza la CPUno están uniformemente distribuidospor todo el espacio de direccionamiento, sino que se concentran, temporalmente, solamente en ciertas áreas de la memoria. 7 Memoria
Memoria Caché Unidad deTransferencia:BLOQUE Fundamento Principio deLocalidad de Referencia LocalidadEspacial LocalidadTemporal Es muy probable ejecutar instrucciones cercanas Es muy probable repetir instrucciones 8 Memoria
Memoria Caché CPU(bytes) • El espacio de la memoria caché está dividido en líneas • Nº Líneas << Nº Bloques • Tamaño Bloque potencia de 2 • Tamaño Línea = Tamaño Bloque Palabra Caché(KB-MB) Funcionamiento Buscar en la caché Bloque Acierto Fallo Asignar Línea MemoriaPrincipal(GB-TB) Traer Bloque Entregar Dato 9 Memoria
Memoria Caché 10 Memoria
Memoria Caché b+d pal. 0 pal. 1 pal. 2 pal. 3 . . . . . . B0 etiq.línea b-l l d b pal. 4j pal. 4j+1 pal. 4j+2 pal. 4j+3 . . . BJ d + Memoriaprincipal Políticas de Ubicación Correspondencia Directa Num_Línea = NumBloquemóduloLíneas_en_caché Caché etiq. datos Dir. de memoria L0 BloqueDespl. . . . . . . . . . LJ pal. 4j+2 Comp. . . . . . . Acierto Falta de caché 11 Memoria
Memoria Caché Memoria principal de 16 palabras 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 Bloque 0 Bloques de 2 palabras Bloque 1 Bloque 2 Bloque 3 Memoria caché de 4 líneas Bloque 4 Línea 0 Bloque 5 Línea 1 Bloque 6 Línea 2 Línea 3 Bloque 7 Ejemplo: 12 Memoria Arquitectura de Computadores
Memoria Caché 0 0 0 0 Línea 0 Desplazamiento 0 0 0 0 1 Línea 0 Desplazamiento 1 Línea 0 Línea 1 Línea 2 Línea 3 0 0 1 0 Línea 1 Desplazamiento 0 0 0 1 1 Línea 1 Desplazamiento 1 Línea 0 Línea 1 Línea 2 Línea 3 0 1 0 0 Línea 2 Desplazamiento 0 0 1 0 1 Línea 2 Desplazamiento 1 Línea 0 Línea 1 Línea 2 Línea 3 0 1 1 0 Línea 3 Desplazamiento 0 0 1 1 1 Línea 3 Desplazamiento 1 Línea 0 Línea 1 Línea 2 Línea 3 Línea 0 1 0 0 0 Línea 0 Desplazamiento 0 1 0 0 1 Línea 0 Desplazamiento 1 Línea 1 Línea 2 Línea 3 Línea 0 1 0 1 0 Línea 1 Desplazamiento 0 1 0 1 1 Línea 1 Desplazamiento 1 Línea 1 Línea 2 Línea 3 Línea 0 1 1 0 0 Línea 2 Desplazamiento 0 1 1 0 1 Línea 2 Desplazamiento 1 Línea 1 Línea 2 Línea 3 Línea 0 1 1 1 0 Línea 3 Desplazamiento 0 1 1 1 1 Línea 3 Desplazamiento 1 Línea 1 Línea 2 Línea 3 13 Memoria
Memoria Caché 0 0 0 0 Línea 0 Desplazamiento 0 0 0 0 1 Línea 0 Desplazamiento 1 0 0 1 0 Línea 1 Desplazamiento 0 0 0 1 1 Línea 1 Desplazamiento 1 0 1 0 0 Línea 2 Desplazamiento 0 0 1 0 1 Línea 2 Desplazamiento 1 0 1 1 0 Línea 3 Desplazamiento 0 0 1 1 1 Línea 3 Desplazamiento 1 1 0 0 0 Línea 0 Desplazamiento 0 1 0 0 1 Línea 0 Desplazamiento 1 1 0 1 0 Línea 1 Desplazamiento 0 1 0 1 1 Línea 1 Desplazamiento 1 1 1 0 0 Línea 2 Desplazamiento 0 1 1 0 1 Línea 2 Desplazamiento 1 1 1 1 0 Línea 3 Desplazamiento 0 1 1 1 1 Línea 3 Desplazamiento 1 14 Memoria Arquitectura de Computadores
Memoria Caché 0 0 0 0 Línea 0 Desplazamiento 0 0 0 0 1 Línea 0 Desplazamiento 1 0 0 1 0 Línea 1 Desplazamiento 0 0 0 1 1 Línea 1 Desplazamiento 1 0 1 0 0 Línea 2 Desplazamiento 0 0 1 0 1 Línea 2 Desplazamiento 1 0 1 1 0 Línea 3 Desplazamiento 0 0 1 1 1 Línea 3 Desplazamiento 1 1 0 0 0 Línea 0 Desplazamiento 0 1 0 0 1 Línea 0 Desplazamiento 1 1 0 1 0 Línea 1 Desplazamiento 0 1 0 1 1 Línea 1 Desplazamiento 1 1 1 0 0 Línea 2 Desplazamiento 0 1 1 0 1 Línea 2 Desplazamiento 1 1 1 1 0 Línea 3 Desplazamiento 0 1 1 1 1 Línea 3 Desplazamiento 1 15 Memoria Arquitectura de Computadores
Memoria Caché 0 0 0 0 Línea 0 Desplazamiento 0 0 0 0 1 Línea 0 Desplazamiento 1 0 0 1 0 Línea 1 Desplazamiento 0 0 0 1 1 Línea 1 Desplazamiento 1 0 1 0 0 Línea 2 Desplazamiento 0 0 1 0 1 Línea 2 Desplazamiento 1 0 1 1 0 Línea 3 Desplazamiento 0 0 1 1 1 Línea 3 Desplazamiento 1 1 0 0 0 Línea 0 Desplazamiento 0 1 0 0 1 Línea 0 Desplazamiento 1 1 0 1 0 Línea 1 Desplazamiento 0 1 0 1 1 Línea 1 Desplazamiento 1 1 1 0 0 Línea 2 Desplazamiento 0 1 1 0 1 Línea 2 Desplazamiento 1 1 1 1 0 Línea 3 Desplazamiento 0 1 1 1 1 Línea 3 Desplazamiento 1 ¡ Etiqueta ! 16 Memoria Arquitectura de Computadores
Memoria Caché 1 2 1 En el ejemplo Formato de una dirección en correspondencia directa: Etiqueta Línea Desp. 17 Memoria Arquitectura de Computadores
Memoria Caché Políticas de Ubicación Correspondencia Asociativa El bloque puede ubicarse en cualquier líneade la caché Dir. de memoria Bloque Despl. etiq Línea 0 Comp. Acierto Fallo etiq Línea 1 Comp. Acierto Fallo etiq Línea 2 Comp. Acierto Fallo Caché 18 Memoria
Memoria Caché b+d Dir. de memoria BloqueDespl. etiq. conjunto b-c c d b d + + Num_Conjunto = Num_bloquemóduloNum_Conjuntos Políticas de Ubicación Correspondencia Asociativa de Conjuntos pal. 0 pal. 1 pal. 2 pal. 3 . . . . . . Etiq B0 C0 . . . pal. 4j pal. 4j+1 pal. 4j+2 pal. 4j+3 . . . . . . . C1 BJ Comparador Acierto Caché Mem. principal Falta de caché 19 Memoria
Memoria Caché Políticas de Sustitución Política de Sustitución 20 Memoria
Memoria Caché LRU Least Recently Used Bueno en general Falla con algunas matrices De Tipo Estadístico LFU Least Frequently Used Políticas de Sustitución FIFO First In First Out • Buena tasa de aciertos • No falla con las matrices • Fácil y económico De Tipo NO Estadístico Random Nº aleatorio entre 0 y Nº Líneas-1 21 Memoria
Memoria Caché Políticas de Actualización Propiedad de la caché Coherencia de la información entre las distintas memorias Actualizar MP Acierto Escritura Inmediata (Write Through) Retrasar la actualización Escritura en caché Traer bloque a caché Escritura Diferida (Write Back) Fallo Escribir dato en MP 2 accesos a MP 22 Memoria
Memoria Caché Políticas de Actualización Escritura Inmediata No hay incoherencia Mucho tráfico: cada escritura en caché una actualización en MP Escritura Diferida • Menos tráfico: muchas escrituras en caché una sola actualización en MP • Incoherencia Multiprocesadores DMA • Al reemplazar un bloque “sucio” se penaliza el acceso actual con la escritura del bloque Buffer de escritura Su actualización se solapa con la ejecución de las instrucciones 23 Memoria
Memoria Caché Tamaño de la Caché SPEC CPU 2000 Benchmarks (2003) Tasa de Fallos Tamaño de la caché • Pocas faltas • Cara • No tan Rápida • Poca mejora • Barata • Rápida • Muchas faltas 24 Memoria
Memoria Caché Tamaño de la Caché A partir de aquí todos tienen más niveles de caché 25 Memoria
Memoria Caché Tamaño del Bloque ↑ Localidad espacial ↓ Localidad Temporal 26 Memoria
Memoria Caché Tipos de fallo de caché • Por Carga inicial (Compulsory) • Carga inicial de la caché. • Estos fallos se producen aun con una caché de tamaño infinito • De Capacidad (Capacity) • Cuándo la caché no puede almacenar todos los bloques de un programa en ejecución • Por Conflicto (Conflict) • Aun habiendo líneas libres no se puede cargar un bloque • Suele suceder en cachés con un grado bajo de asociatividad (correspondencia directa o asociativa por conjuntos de pocas vías) Tasa de Fallo = Nº Fallos / Nº Accesos 27 Memoria
Memoria Caché Tipos de fallo de caché 28 Memoria
Memoria Caché Optimización 29 Memoria
Memoria Caché Optimización Reducción del tiempo de acceso: Caches Pequeñas • Consume tiempo: • Búsqueda del bloque • Etiquetas grandes • Nº Comparadores Tiempo acceso (ns) Correspondencia Directa y Cachés multinivel Tamaño Caché Configuración: bloque 64 bytes y un banco 30 Memoria
Memoria Caché Caches Multinivel Optimización Reducción del tiempo de acceso: Caches Pequeñas Acceso a Memoria Fallo Acierto Memoria Principal Caché L2 L1: C a c h é L 1 CPU TL1 * PAL1 (1-PAL1) TMP TL1 PAL1 TL2 PAL2 Fallo Acierto L2: PAL2 * (1-PAL1)* TL2 (1-PAL1)* (1-PAL2 )* TMP TMEDIO = TL1 * PAL1 + PAL2 * (1-PAL1)* TL2 + (1-PAL1)* (1-PAL2 )* TMP 31 Memoria
Memoria Caché Optimización Reducción del tiempo de acceso: Predicción Se parte de una caché con correspondencia asociativa de conjuntos (menos conflictos de colisiones que la correspondencia directa) Se intenta obtener el tiempo de acceso de una memoria de correspondencia directa Se predice que línea del conjunto va a ser accedida Mediante la predicción se consigue que la comparación de etiquetas y la lectura de bloque se realice en paralelo La predicción tiene un acierto elevado (85%) Cuando la predicción falla se busca el bloque en el resto de líneas del conjunto (penalización) Cada línea tiene asociados unos bits para realizar la predicción Pentium 4 y MIPS R10000 utilizan este esquema 32 Memoria
Memoria Caché Optimización Reducción del tiempo de acceso: Caché de Trazas • Similar a una caché de instrucciones • En lugar de almacenar bloques de código (localidad espacial) almacena las secuencias de instrucciones que van a ejecutarse (localidad temporal) • Los saltos pueden provocar que se almacenen en la caché dos secuencias de código de acuerdo al sentido del salto • Mayor dificultad en los mecanismos de gestión de direcciones (ubicación) • Bloques de mayor tamaño • Cara y poco utilizada • Pentium 4 la utiliza para almacenar micro-ops (instrucciones ya decodificadas) 33 Memoria
Memoria Caché Optimización Incremento del ancho de banda: Caches de nivel 1 separadas Caché L1 Datos Caché L1 Instrucciones Caché L1 Unificada Instrucciones y Datos Arquitectura Harvard • En procesadores segmentados evita riesgos estructurales • Todos los procesadores modernos la utilizan • Equilibrio automáticode instrucciones y datos • Más simple de diseñar • e implementar 34 Memoria
Memoria Caché 1 ciclo Load 1 1 ciclo 1 ciclo 1 ciclo Load 1 Optimización Incremento del ancho de banda: Caches segmentadas • Segmentar los accesos a la caché • Consiguiendo que se lleven a cabo varios accesos a memoria • No se reduce el tiempo de acceso • La duración de la etapa está en función de la duración total y del nº de etapas Mayor frecuencia de Reloj 1 ciclo 1 ciclo Load 2 Load 2 Load 3 Load 3 35 Memoria
Memoria Caché Optimización Incremento del ancho de banda: Caches No Bloqueantes • Un fallo de caché provoca que no se atiendan más accesos • Comportamiento pernicioso en procesadores superescalares • Una falta de caché en escritura provoca que otras instrucciones no puedan terminar aunque su acceso sea un acierto • Las caches no bloqueantes siguen atendiendo peticiones en presencia de un fallo • Cuantos más accesos se solapen mayor reducción de la penalización por fallo de caché en los programas 36 Memoria
Memoria Caché Caché Monolítica Línea 0 Línea 0 1 1 2 2 3 3 4 5 6 7 8 9 10 11 12 13 Optimización Incremento del ancho de banda: Caches Multibanco Banco 1 Banco 2 Banco 3 Banco 0 Bloque 3 Línea 0 Línea 0 Línea 0 Bloque 0 1 1 Bloque 1 1 2 2 2 3 3 Bloque 2 3 Bloque 4 Dir. de memoria • Funciona bien cuando • los accesos están repartidos • L2 AMD Opteron 2 bancos • L2 SUN Niagara 4 bancos Bloque Despl. Banco = Bloque MOD 4 37 Memoria
Memoria Caché Optimización Reducción de la penalización por fallo: Caché de victimas Línea 0 1 2 • Memoria muy pequeña • Fallo L1 • Comprobar victimas • LRU cuando está llena • Admite algún esquema predictivo 3 Caché Nivel 2 Línea 0 4 1 5 2 6 3 7 8 Caché Asociativa 9 Últimos bloques expulsados de la caché L1 10 11 12 13 Caché L1 Correspondencia Directa 38 Memoria
Memoria Caché Optimización Reducción de la penalización por fallo: Buffer de Escritura Cache L1 Memoria Principal CPU store Buffer Escritura • Para caches de escritura directa (Write Through), aunque también se emplea con escritura diferida • El procesador escribe en la caché y en el Buffer continuando con la ejecución de instrucciones • El controlador de memoria vuelca el Buffer a memoria (L2 o principal) • El Buffer suele tener 4 entradas y política FIFO • Funciona bien cuando la frecuencia de las escrituras es menor que 1 / Tacceso memoria • Cuando el Buffer está lleno el procesador espera por una entrada libre 39 Memoria
Memoria Caché Optimización Reducción de la penalización por fallo: Buffer de Escritura y Write Merging • En el Buffer se van introduciendo las palabras (store) generadas por el procesador una en cada entrada • Una optimización del Buffer consiste en comprobar si cada nueva palabra puede combinarse con las ya existentes para formar bloques completos Escrituras Escrituras 124 0 108 100 116 100 100 100 0 1 108 1 108 108 LLENO LIBRES 2 116 116 116 2 3 124 124 3 124 Posiciones Consecutivas 32 octetos 32 octetos Sin Write Merging Con Write Merging 40 Memoria
Memoria Caché CPU) CPU) Optimización Reducción de la penalización por fallo: Palabra crítica primero y rearranque rápido • El procesador en un acceso a memoria sólo necesita una palabra no el bloque completo • Por lo tanto no es necesario que espere por todo el bloque Rearranque Rápido Palabra Crítica primero CPU CPU 1. load 1. load 4. Word (M) CACHE CACHE 2. Get Block 3. Word 2. Get Block 3. Update (0,..,M,..N-1) 4. Update MEMORIA PRINCIPAL MEMORIA PRINCIPAL 41 Memoria
Memoria Caché Optimización Reducción de tasa de fallos: Optimizaciones del compilador • No modifica la estructura de la caché • Reordenación de código para explotar la localidad tanto espacial como temporal • Se optimiza la disposición del código y el acceso a los datos int x[10][50]; for (i=0; i<10; i++) for (j=0; j<50; j++) x[i][j] = 2*x[i][j]; int x[10][50]; for (j=0; j<50; j++) for (i=0; i<10; i++) x[i][j] = 2*x[i][j]; Se accede por filas $80 $84 $88 9,48 9,49 9,47 0,0 0,1 0,2 Disposición en memoria de x (almacenamiento por filas) 42 Memoria
Memoria Caché Optimización Reducción de tasa de fallos y penalización: HW prefetch • Cargar los bloques en caché antes de ser usados sin interferir en el funcionamiento normal 2. Get Block (N) 1. Fetch Cache L1 Instrucciones Memoria Principal 3. Block (N) CPU 4. Block (N+1) 4. Instr. Stream Buffer if Fallo_Cache then if Block (X) in Stream Buffer Update_Cache (Block (X)) GetBlock_MP (X+1) else // No está en Stream Buffer GOTO “Paso 2” // GetBlock(N) endif 43 Memoria
Memoria Caché Optimización Reducción de tasa de fallos y penalización: SW prefetch • La carga anticipada de bloques en la caché la realiza el compilador insertando instrucciones especiales de pre-carga de bloques • Al igual que la técnica anterior la memoria debe tener el suficiente ancho de banda para soportar este mecanismo int x[10][50]; for (i=0; i<10; i++) { PRE_FECTH (x[i+1][0]); for (j=0; j<50; j++) { PRE_FETCH (x[i][j+5]); x[i][j] = 2*x[i][j]; } } int x[10][50]; for (i=0; i<10; i++) for (j=0; j<50; j++) x[i][j] = 2*x[i][j]; compilador • Elementos de x de tamaño 64 bits • Almacenamiento por filas • Bloques de caché de 128 bits • 50 % tasa de fallo (1 de cada 2 accesos) 44 Memoria
MEMORIA • Memoria principal 45
Memoria Principal El problema … Performance (log) 46 Memoria
Memoria Principal Parámetros rendimiento de la memoria • Latencia • Tiempos de acceso: Tiempo entre solicitar y recibir un dato • Ciclo: Tiempo entre dos accesos • Ancho de Banda • Transferencia de grandes cantidades de información (bloques, páginas, etc.) Tipos de memoria • DRAM • Memoria Principal • SRAM • Memoria Caché 47 Memoria
Memoria Principal DRAM Dynamic Random Access Memory • Primera DRAM Intel 1103 – 1 Kbit en un único Chip • Hoy en día más de 4 GB por chip • Un transistor y un condensador por bit • Necesitan refresco (cada 8 ms, <5% del tiempo) • No permite accesos • Tras una lectura es necesario volver a refrescar la información • Ciclo de memoria mayor que el tiempo de acceso • Organizada en una matriz de N Filas x N columnas de M bits • Reducir el nº de pines al multiplexar Filas y Columnas • Cada acceso un ciclo de RAS/CAS • RAS: Row Access Strobe • CAS: Column Access Strobe • Encapsulada en pequeñas tarjetas DIMM (Dual Inline Memory Modules) • De 4 a 16 DRAM 48 Memoria
Memoria Principal DRAM Estructura CPU NORTH BRIDGE Frontside Bus Backside Bus CACHÉ L2 DRAM Controller CACHÉ L1 DRAM Bus PCI SOUTH BRIDGE USB DRAM APM Otros Dispositivos 49 Memoria
Memoria Principal DRAM Estructura 64 x1bit Bit Line Decodificador de 3 a8 (Row) Buffer de Direcciones Word Line Decodificador de 3 a 8 (Column) Celda de memoria 50 Memoria