1 / 79

MEMORIA

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

spencer
Télécharger la présentation

MEMORIA

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. MEMORIA 1

  2. MEMORIA • Estructura Jerárquica de la Memoria • Memoria Caché • Memoria Principal • Memoria Virtual 2

  3. MEMORIA • Estructura Jerárquica de la Memoria 3

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

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

  6. MEMORIA • Memoria Caché 6

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

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

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

  10. Memoria Caché 10 Memoria

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

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

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

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

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

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

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

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

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

  20. Memoria Caché Políticas de Sustitución Política de Sustitución 20 Memoria

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

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

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

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

  25. Memoria Caché Tamaño de la Caché A partir de aquí todos tienen más niveles de caché 25 Memoria

  26. Memoria Caché Tamaño del Bloque ↑ Localidad espacial ↓ Localidad Temporal 26 Memoria

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

  28. Memoria Caché Tipos de fallo de caché 28 Memoria

  29. Memoria Caché Optimización 29 Memoria

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  45. MEMORIA • Memoria principal 45

  46. Memoria Principal El problema … Performance (log) 46 Memoria

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

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

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

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

More Related