1 MEMORIA 1
2 Estructura Jerárquica de la Memoria Memoria Caché Memoria Principal Memoria Virtual 2
3 Estructura Jerárquica de la Memoria3 3
4 Estructura Jerárquica de la MemoriaNo es única Registros Caché N1-N2 Memoria Principal Disco Magnético Cinta Magnética Disco Óptico Coste por bit Capacidad Tiempo de acceso Frecuencia de acceso Quién se ocupa del transvase entre memorias ? - La CPU/MMU - El S. O. Memoria 4
5 Estructura Jerárquica de la MemoriaMemoria Multinivel Memoria Principal CPU Bus de Memoria Bus de E/S 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. Memoria 5
6 MEMORIA Memoria Caché 6 6
7 ¿ ? Fundamento Principio de la Localidad de Referencia Memoria CachéPor qué es tan útil una memoria tan pequeña ? Principio de la Localidad de Referencia Los accesos a memoria que realiza la CPU no están uniformemente distribuidos por todo el espacio de direccionamiento, sino que se concentran, temporalmente, solamente en ciertas áreas de la memoria. Memoria 7
8 Fundamento Memoria Caché Principio de Localidad de ReferenciaLocalidad Temporal Localidad Espacial Es muy probable repetir instrucciones Es muy probable ejecutar instrucciones cercanas Unidad de Transferencia: BLOQUE Memoria 8
9 Memoria Principal (GB-TB)Memoria Caché 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 CPU (bytes) Palabra Caché (KB-MB) Funcionamiento Buscar en la caché Bloque Acierto Fallo Asignar Línea Memoria Principal (GB-TB) Traer Bloque Entregar Dato Memoria 9
10 Memoria Caché Cuestiones de Diseño Memoria Políticas de UbicaciónCorrespondencia Directa Asociativa Asociativa de Conjuntos Políticas de Sustitución Tipo Estadístico Tipo NO Estadístico Políticas de Actualización Escritura Inmediata Escritura Diferida Tamaños Nº Caches Memoria 10
11 NumBloque módulo Líneas_en_cachéMemoria Caché Políticas de Ubicación Correspondencia Directa Num_Línea = NumBloque módulo Líneas_en_caché b+d Caché etiq. datos pal. 0 pal. 1 pal. 2 pal. 3 . . . B0 Memoria principal pal. 4j pal. 4j+1 pal. 4j+2 pal. 4j+3 BJ Dir. de memoria L0 Bloque Despl. l d b-l etiq. línea . . . b LJ + d Comp. pal. 4j+2 Acierto . . . Falta de caché Memoria 11
12 Memoria principal de 16 palabras Memoria caché de 4 líneasEjemplo: 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 Memoria principal de 16 palabras Bloque 0 Bloque 1 Bloque 2 Bloque 3 Bloque 4 Bloque 5 Bloque 6 Bloque 7 Bloques de 2 palabras Línea 0 Línea 1 Línea 2 Línea 3 Memoria caché de 4 líneas Arquitectura de Computadores Memoria 12
13 0 0 0 0 Línea 0 Desplazamiento 0 0 0 0 1 Línea 0 Desplazamiento 1Memoria Caché Línea 0 Desplazamiento 0 Línea 0 Desplazamiento 1 Línea 0 Línea 1 Línea 2 Línea 3 Línea 1 Desplazamiento 0 Línea 1 Desplazamiento 1 Línea 0 Línea 1 Línea 2 Línea 3 Línea 2 Desplazamiento 0 Línea 2 Desplazamiento 1 Línea 0 Línea 1 Línea 2 Línea 3 Línea 3 Desplazamiento 0 Línea 3 Desplazamiento 1 Línea 0 Línea 1 Línea 2 Línea 3 Línea 0 Desplazamiento 0 Línea 0 Desplazamiento 1 Línea 0 Línea 1 Línea 2 Línea 3 Línea 1 Desplazamiento 0 Línea 1 Desplazamiento 1 Línea 0 Línea 1 Línea 2 Línea 3 Línea 2 Desplazamiento 0 Línea 2 Desplazamiento 1 Línea 0 Línea 1 Línea 2 Línea 3 Línea 0 Línea 1 Línea 2 Línea 3 Línea 3 Desplazamiento 0 Línea 3 Desplazamiento 1 Memoria 13
14 0 0 0 0 Línea 0 Desplazamiento 0 0 0 0 1 Línea 0 Desplazamiento 1 Memoria Caché Línea 0 Desplazamiento 0 Línea 0 Desplazamiento 1 Línea 1 Desplazamiento 0 Línea 1 Desplazamiento 1 Línea 2 Desplazamiento 0 Línea 2 Desplazamiento 1 Línea 3 Desplazamiento 0 Línea 3 Desplazamiento 1 Línea 0 Desplazamiento 0 Línea 0 Desplazamiento 1 Línea 1 Desplazamiento 0 Línea 1 Desplazamiento 1 Línea 2 Desplazamiento 0 Línea 2 Desplazamiento 1 Línea 3 Desplazamiento 0 Línea 3 Desplazamiento 1 14 Arquitectura de Computadores Memoria
15 0 0 0 0 Línea 0 Desplazamiento 0 0 0 0 1 Línea 0 Desplazamiento 1 Memoria Caché Línea 0 Desplazamiento 0 Línea 0 Desplazamiento 1 Línea 1 Desplazamiento 0 Línea 1 Desplazamiento 1 Línea 2 Desplazamiento 0 Línea 2 Desplazamiento 1 Línea 3 Desplazamiento 0 Línea 3 Desplazamiento 1 Línea 0 Desplazamiento 0 Línea 0 Desplazamiento 1 Línea 1 Desplazamiento 0 Línea 1 Desplazamiento 1 Línea 2 Desplazamiento 0 Línea 2 Desplazamiento 1 Línea 3 Desplazamiento 0 Línea 3 Desplazamiento 1 15 Arquitectura de Computadores Memoria
16 0 0 0 0 Línea 0 Desplazamiento 0 0 0 0 1 Línea 0 Desplazamiento 1 Memoria Caché Línea 0 Desplazamiento 0 Línea 0 Desplazamiento 1 Línea 1 Desplazamiento 0 Línea 1 Desplazamiento 1 Línea 2 Desplazamiento 0 Línea 2 Desplazamiento 1 Línea 3 Desplazamiento 0 Línea 3 Desplazamiento 1 Línea 0 Desplazamiento 0 Línea 0 Desplazamiento 1 Línea 1 Desplazamiento 0 Línea 1 Desplazamiento 1 Línea 2 Desplazamiento 0 Línea 2 Desplazamiento 1 Línea 3 Desplazamiento 0 Línea 3 Desplazamiento 1 ¡ Etiqueta ! Arquitectura de Computadores Memoria 16
17 Formato de una dirección en correspondencia directa:Memoria Caché Formato de una dirección en correspondencia directa: Etiqueta Línea Desp. 1 2 En el ejemplo 17 Arquitectura de Computadores Memoria
18 El bloque puede ubicarse en cualquier línea de la cachéMemoria Caché Políticas de Ubicación Correspondencia Asociativa El bloque puede ubicarse en cualquier línea de 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é Memoria 18
19 Num_Conjunto = Num_bloque módulo Num_ConjuntosMemoria Caché Num_Conjunto = Num_bloque módulo Num_Conjuntos Políticas de Ubicación Correspondencia Asociativa de Conjuntos b+d Bloque Despl. Dir. de memoria d pal. 0 pal. 1 pal. 2 pal. 3 . . . Etiq B0 C0 b-c c etiq. conjunto . . . b + pal. 4j pal. 4j+1 pal. 4j+2 pal. 4j+3 . . . . . . . C1 Comparador + d BJ Acierto Caché Mem. principal Falta de caché Memoria 19
20 Políticas de SustituciónMemoria Caché Políticas de Sustitución Caché llena Directa Quitar el Bloque Antiguo Asociativa Sustituir alguna línea Asociativa Conj. Sustituir línea del conjunto Política de Sustitución Memoria 20
21 Memoria Caché Políticas de Sustitución LRU De Tipo Estadístico LFULeast Recently Used De Tipo Estadístico Bueno en general Falla con algunas matrices 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 Memoria 21
22 Coherencia de la información entre las distintas memoriasMemoria 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 Memoria 22
23 solapa con la ejecuciónMemoria 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 Memoria 23
24 Memoria Caché Tamaño de la Caché MemoriaSPEC CPU 2000 Benchmarks (2003) Tasa de Fallos Tamaño de la caché Barata Rápida Muchas faltas Pocas faltas Cara No tan Rápida Poca mejora Memoria 24
25 AMD Athlon ThunderbirdMemoria Caché Tamaño de la Caché CPU TAMAÑO CACHÉ L1 80486DX and DX2 8 KB L1 80486DX4 16 KB L1 Pentium Pentium Pro Pentium MMX 32 KB L1 AMD K6 and K6-2 64 KB L1 Pentium II and III Celeron Pentium III Cumine AMD K6-3 AMD K7 Athlon 128 KB L1 AMD Duron AMD Athlon Thunderbird PowerPC G4 64 KB L1 ( ) PowerPC G5 96KB L1 (64+32) Pentium IV 104 KB (96 + 8) A partir de aquí todos tienen más niveles de caché Memoria 25
26 Memoria Caché Tamaño del Bloque ↑ Localidad ↓ Localidad Memoriaespacial ↓ Localidad Temporal Memoria 26
27 Tasa de Fallo = Nº Fallos / Nº AccesosMemoria 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 Memoria 27
28 Memoria Caché Tipos de fallo de caché Memoria 28
29 Memoria Caché Optimización Memoria 29 optimizaciónReducción del tiempo de acceso Reducción de la penalización por fallo Reducción de la tasa de fallos Incremento del paralelismo Incremento del ancho de banda Memoria 29
30 Correspondencia Directa yMemoria 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 Memoria 30
31 Memoria Caché Optimización Acceso a Memoria L1: L2: Caches MultinivelReducción del tiempo de acceso: Caches Pequeñas C a c h é L 1 Memoria Principal CPU Caché L2 Acceso a Memoria Fallo Acierto L1: TL1 * PAL1 (1-PAL1) TMP TL1 PAL1 TL2 PAL2 Acierto Fallo L2: PAL2 * (1-PAL1)* TL2 (1-PAL1)* (1-PAL2 )* TMP TMEDIO = TL1 * PAL1 + PAL2 * (1-PAL1)* TL2 + (1-PAL1)* (1-PAL2 )* TMP Memoria 31
32 Memoria Caché OptimizaciónReducció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 Memoria 32
33 Memoria Caché Optimización Similar a una caché de instruccionesReducció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) Memoria 33
34 Caché L1 Unificada Caché L1 Caché L1Memoria Caché Optimización Incremento del ancho de banda: Caches de nivel 1 separadas Caché L1 Unificada Instrucciones y Datos Caché L1 Instrucciones Caché L1 Datos Arquitectura Harvard Equilibrio automático de instrucciones y datos Más simple de diseñar e implementar En procesadores segmentados evita riesgos estructurales Todos los procesadores modernos la utilizan Memoria 34
35 Memoria Caché Optimización Segmentar los accesos a la caché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 Load 1 1 ciclo Mayor frecuencia de Reloj Load 1 1 ciclo 1 ciclo 1 ciclo Load 2 Load 2 Load 3 Load 3 Memoria 35
36 Memoria Caché OptimizaciónIncremento 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 Memoria 36
37 Memoria Caché Optimización Banco = Bloque MOD 4 Dir. de memoriaIncremento del ancho de banda: Caches Multibanco Línea 0 1 2 3 4 5 6 7 8 9 10 11 12 13 Caché Monolítica Banco 0 Banco 1 Banco 2 Banco 3 Línea 0 Línea 0 Línea 0 1 2 3 Bloque 3 Línea 0 Bloque 0 1 1 Bloque 1 1 2 2 2 3 3 3 Bloque 2 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 Memoria 37
38 expulsados de la caché L1 Caché L1 CorrespondenciaMemoria 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 4 Línea 0 5 1 6 2 3 7 8 Caché Asociativa 9 Últimos bloques expulsados de la caché L1 10 11 12 13 Caché L1 Correspondencia Directa Memoria 38
39 Memoria Caché Optimización Memoria CPU Principal MemoriaReducció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 Memoria 39
40 Memoria Caché Optimización Sin Write Merging Con Write MergingReducció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 100 100 100 100 108 116 124 1 108 1 108 108 LLENO LIBRES 116 116 116 2 2 124 3 3 124 124 Posiciones Consecutivas 32 octetos 32 octetos Sin Write Merging Con Write Merging Memoria 40
41 Memoria Caché Optimización CPU) CPU) Rearranque RápidoReducció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 Palabra Crítica primero Rearranque Rápido CPU) CPU CPU) CPU 1. load 4. Word (M) 1. load CACHE CACHE 3. Word 4. Update 2. Get Block 3. Update (0,..,M,..N-1) 2. Get Block MEMORIA PRINCIPAL MEMORIA PRINCIPAL Memoria 41
42 Memoria Caché Optimización MemoriaReducció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 (j=0; j<50; j++) for (i=0; i<10; i++) 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]; Se accede por filas $80 $84 $88 0,0 0,1 0,2 9,47 9,48 9,49 Disposición en memoria de x (almacenamiento por filas) Memoria 42
43 Memoria Caché Optimización MemoriaReducció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 3. Block (N) Memoria Principal 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 Memoria 43
44 Memoria Caché Optimización MemoriaReducció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++) for (j=0; j<50; j++) x[i][j] = 2*x[i][j]; compilador 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]; } 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) Memoria 44
45 MEMORIA Memoria principal 45 45
46 Memoria Principal El problema … Performance (log) Memoria 46
47 Parámetros rendimiento de la memoriaMemoria 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é Memoria 47
48 Memoria Principal DRAM Memoria Dynamic Random Access MemoryPrimera 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 Memoria 48
49 Memoria Principal DRAM DRAM CPU Memoria Estructura FrontsideBus NORTH BRIDGE Backside Bus CACHÉ L2 DRAM Controller CACHÉ L1 DRAM Bus PCI SOUTH BRIDGE USB DRAM APM Otros Dispositivos Memoria 49
50 Memoria Principal DRAM 64 x1bit Memoria Estructura Bit LineDecodificador de 3 a 8 (Row) Buffer de Direcciones Word Line Decodificador de 3 a 8 (Column) Celda de memoria Memoria 50
51 Memoria Principal DRAM x8 DRAM x2 DRAM x4 DRAM 8M bit 2M bit 4M bitEstructura: Organización Física x8 DRAM Column x2 DRAM Column x4 DRAM Column Array de Celdas Row Array de Celdas (1024x1024bits) Row Array de Celdas (1024x1024bits) Row Array de Celdas (1024x1024bits) 8M bit 2M bit 4M bit Memoria 51
52 Memoria Principal DRAM Año Tamaño T. Acceso(ns) Ciclo (ns) MemoriaPrestaciones Año Tamaño T. Acceso(ns) Ciclo (ns) 1980 64K bit 250 1983 256K bit 220 1986 1M bit 190 1989 4M bit 80-100 165 1992 16M bit 60-80 120 1996 64M bit 50-70 110 1998 128M bit 100 2000 256M bit 45-65 90 2002 512M bit 40-60 80 2004 1G bit 35-55 70 2006 2G bit 30-50 60 Tamaño x4 cada tres años T. Acceso x25% cada tres años Ciclo x15% cada tres años Memoria 52
53 Latencia DRAM = A + B + C + D + E + FMemoria Principal DRAM Latencia DRAM B D Controlador de Memoria CPU A C E F Encolado de la petición de acceso a memoria (posible espera) Petición de acceso enviada al Controlador de Memoria Conversión de la petición de acceso a órdenes para la DRAM (posible espera) Envío de órdenes a la DRAM Fijar Fila (RAS) y Columna (CAS) en la matriz de celdas Resultado del acceso Latencia DRAM = A + B + C + D + E + F Memoria 53
54 Memoria Principal DRAM Memoria Ciclo de Lectura: Modo Normal RAS CASDirección FILA COL FILA COL Datos DATO DATO Memoria 54
55 Memoria Principal DRAM Memoria Ciclo de Lectura: Modo Fast PageExplota la localidad de los datos Página = FILA El tiempo de acceso al primer dato idéntico al de la DRAM convencional RAS CAS Dirección FILA COL COL COL Datos DATO DATO DATO Memoria 55
56 Memoria Principal DRAM MemoriaCiclo de Lectura: Modo Extended Data Out (EDO) Reduce el tiempo de acceso a posiciones consecutivas de memoria Solapa datos con direcciones CAS cambia antes de que la memoria haya entregado el dato anterior RAS CAS Dirección FILA COL COL COL COL Datos DATO DATO DATO DATO Memoria 56
57 Memoria Principal DRAM Memoria Ciclo de Lectura: Modo Ráfaga (Burst)Utiliza un mecanismo de autoincremento para calcular la siguiente columna Los accesos aleatorios no son más rápidos Muy útil para ciertas aplicaciones (streaming) Tiempos de acceso (primeros 64 bits y sucesivos) RAS CAS Dirección FILA COL Datos DATO DATO DATO DATO Memoria 57
58 Memoria Principal SDRAM DRAM FPM y DRAM EDO son asíncronasSynchronous DRAM DRAM FPM y DRAM EDO son asíncronas Controlador de memoria y DRAM utilizan un protocolo mediante señales para realizar/sincronizar los accesos a memoria El protocolo de acceso introduce varios ciclos de latencia Se sustituye el protocolo de acceso por uno nuevo basado en la señal de reloj de la placa base Los eventos suceden de acuerdo a esta nueva señal (CLK) Se simplifica el controlador de memoria Suelen disponer de Varios bancos de memoria (entrelazada). De 2 a 4 bancos Mayor ancho de banda Bus de Datos de 64 bits Memoria 58
59 Memoria Principal SDRAM Memoria Ciclo de lectura CLK RAS CASActivar Banco Comandos ACT READ Direcciones FILA COL Datos DATO DATO DATO DATO Memoria 59
60 Memoria NO entrelazadaMemoria Principal SDRAM Bancos de memoria (entrelazada) Banco 0 Banco 1 Banco 0 Banco 1 N 1 1 N+1 2 3 2 N+2 4 5 N-2 2N-2 2N-4 2N-3 N-1 2N-1 2N-2 2N-1 BUFFER BUFFER BUFFER BUS BUS Memoria NO entrelazada Memoria Entrelazada Memoria 60
61 Accesos No EntrelazadaMemoria Principal SDRAM Bancos de memoria (entrelazada) Banco 0 Banco 1 Banco 2 …… Banco N CLK Oct. 1 Oct. 2 Accesos No Entrelazada CLK Oct. 1 Oct. 2 Palabra Banco Oct. 3 Oct. 4 m bits k bits Accesos Entrelazada Dirección Memoria 61
62 Memoria Principal DDR-SDRAM Aparece en los procesadores AMD AthlonDouble Data Rate SDRAM Aparece en los procesadores AMD Athlon Transfieren más información por cada ciclo Utilizan ambos flancos de la señal de reloj Prefetching para aumentar el nº de bits transferidos entre la matriz de celdas de memoria y el buffer de memoria Señalización más rápida DDR SDRAM 64 bits Matriz de Memoria Buffer Bus de memoria Bus de Datos DDR1 DDR2 DDR3 Bits por ciclo x2 x4 x8 Memoria 62
63 Memoria Principal DDR-SDRAM Memoria Double Data Rate SDRAM 100 MhzPREGUNTA 3 Memoria Principal DDR-SDRAM Double Data Rate SDRAM 100 Mhz x 2 Datos por ciclo x 8 Octetos Tipo Nombre Nombre del módulo Bus de memoria Ancho de banda máx. 100 Mhz 133 Mhz 166 Mhz 200 Mhz 100 Mhz 133 Mhz 166 Mhz 200 Mhz 100 Mhz 133 Mhz 166 Mhz 200 Mhz Memoria 63
64 Mover pocos datos muy rápidamenteMemoria Principal RDRAM Rambus DRAM Mover pocos datos muy rápidamente Aparece en los procesadores Intel Pentium III y IV Mayor frecuencia de reloj que las memorias DDR Bus de datos de 16 bits Peticiones de acceso simultáneas Ancho de banda (pico) de 2.4 GB/s Hasta 32 memorias en un único canal Mayor precio que DDR Memoria 64
65 Módulos de Memoria DIMMMemoria Principal Módulos de Memoria DIMM Dual In-line Memory Module Bus de datos de 64 bits Cada DIMM contiene de 8 a 16 chips DRAM (más uno de paridad) 8 chips DRAM si son de 8 bits (x8) 16 chips DRAM si son de 4 bits (x4) Configuraciones disponibles: Una cara, un bloque (una única señal de selección CS*) Doble cara, un bloque (una única señal de selección) Doble cara, doble bloque (dos señales de selección) Doble cara, cuatro bloques (cuatro señales de selección) Número de contactos: SDRAM 168 pines DDR1 184 pines DDR2 y DDR3 240 pines Memoria 65
66 Módulos de Memoria DIMMMemoria Principal Módulos de Memoria DIMM Dual In-line Memory Module Chip DRAM de 8 bits Memoria 66
67 Resumen Caché SRAM Static DRAM – Fast Page Memoria DRAM – EDORandom Access Memory DRAM – Fast Page Memoria DRAM – EDO Asíncrona DRAM – Burst Principal DRAM Dynamic Random Access Memory DDR1 SDRAM DDR2 Síncrona DDR3 Rambus Memoria 67
68 MEMORIA Memoria virtual 68 68
69 Utilizando la memoria secundaria como si fuera memoria principalMemoria Virtual Desde hace tiempo ... Los sistemas informáticos son capaces de tener más de un programa en memoria (multiprogramación) Las necesidades de memoria de todos los programas de un sistema son superiores a la memoria física disponible ¿Cómo lo hacen? Utilizando la memoria secundaria como si fuera memoria principal Memoria 69
70 Memoria Virtual ConceptoSeparar espacio de direcciones de posición de memoria Direcciones lógicas Direcciones físicas INDIRECCIÓN Mantener en memoria principal las instrucciones y los datos que con mayor frecuencia se utilizan. Examinando los programas se observa que ... Existe código que raramente se utiliza Y variables sobredimensionadas Dejar en el disco la parte del programa que no se necesite Antes de que la CPU pueda extraer una instrucción o acceder a un dato es necesario que estén en memoria principal Memoria 70
71 La Paginación es una forma de implementar la Memoria VirtualDir. Virtuales CPU Bus del sistema Memoria Principal LD R1,4(R10) Forman el espacio de Direccionamiento Virtual En los microprocesadores actuales entre 232 y 264 direcciones Dir. Virtual $100 MMU Dir. Física La Paginación es una forma de implementar la Memoria Virtual Los procesos generan Direcciones Virtuales (lógicas) Permite que los procesos estén parcialmente cargados y en posiciones no contiguas de memoria Memoria 71
72 Memoria Principal (Dir. Físicas) Espacio Dir. VirtualMemoria Virtual Memoria Principal (Dir. Físicas) Dividido en páginas Cuyo tamaño sea múltiplo del bloque de disco Pág 0 Pág 1 Pág 2 Pág 3 Pág 4 ... Pág N Dividido en Marcos Marco N Marco 1 Marco 0 ¿Cómo conocer dónde están las páginas? Espacio Dir. Virtual Memoria 72 Tema 4 Gestión de
73 El tamaño de la entrada es múltiplo de la palabra del procesadorMemoria Virtual Tabla de Páginas Formada por una entrada por cada página virtual Indexada por el número de página Nº Pág. P E R PR Marco 1 ... El tamaño de la entrada es múltiplo de la palabra del procesador N Bits de Protección R W X Bit de Ensuciado Tabla de páginas Bit de Referencia Marco de memoria principal Bit de Presencia Memoria 73
74 Traducción de DireccionesMemoria Virtual Traducción de Direcciones M.P. Marcos 1 ... N Dir. Física Dir. Virtual CPU Pág. Desplazamiento + Disco Pág 0 Pág 1 Pág 2 ... Pág N Reg. Base TP Marco 1 1 ... N Tabla de páginas Memoria 74
75 Memoria Virtual Falta de página ........................ ld R1, 10(R2)4 ld R1, 10(R2) Continuar S.O. FaltaPág 3 3 $2312 1 P Actualizar Tab. Pág 2 Página: 2 Despl.: 312 1 N 1 3 Pág 1 X 2 Pág 2 Pág 2 3 Pág 2 Pág 2 1 Cargar Pág.2 4 ... ... 5 Pág N ... N Pág 0 Tabla de páginas Memoria Principal Disco Memoria 75
76 MMU Memoria Virtual Traducción de direcciones: TLB TLBTranslation Lookaside Buffer Utilizando una caché con la traducción de las direcciones más frecuentes MMU Dir. Virtual Pág. Despl. TLB Dir. Física Acierto + Marco Etiqueta Marco Etiq. -- Marco Actualizar Tabla de Páginas Fallo Reg. Base TP Memoria 76
77 ¿Qué ocurre cuando hay un cambio de contexto?Memoria Virtual TLB Estructura Suelen tener un número reducido de entradas (de 128 a 256) Correspondencia directa o asociativa Los procesadores disponen de instrucciones especiales para manipularla (insertar e invalidar entradas) Entrada de la TLB Id. de Proceso Bit de Validez Nº de Página ETIQUETA Bit de Ensuciado ¿Qué ocurre cuando hay un cambio de contexto? Marco de M.P. Bits de Protección Memoria 77
78 Esquema general de TraducciónMemoria Virtual Esquema general de Traducción Dir. Virtual Acceder TLB Fallo Acierto Acceso No Permitido Buscar en Tab. Pág. Traducir Dirección Acceso Permitido Excepción Excepción Pág. No encontrada Actualizar TLB Pág. encontrada Dir. Física Memoria 78
79 Memoria Virtual Memoria Dir. Virtual <64> Dir. Real <40>L1 cache tag <27> L1 data<64B> Dir. Real <40> Mem. Vir. Tamaño Pág: 8KB TLB 256 entradas Corresp. Directa Caché L1 Tamaño 8 KB Corr. Directa Caché L2 Tamaño 4 MB Corr. Directa Bloque 64 octetos L2 tag <18> L2 línea <16> L2 Des <6> L2 cache tag <18> L2 data <64B> Memoria 79