Download memoria - dia/UPM
Document related concepts
no text concepts found
Transcript
7. MEMORIA 1 MEMORIA 1. Estructura Jerárquica de la Memoria 2. Memoria Caché 3. Memoria Principal 4. Memoria Virtual 2 MEMORIA 1. Estructura Jerárquica de la Memoria 3 Estructura Jerárquica de la Memoria No es única Coste por bit Capacidad Registros Caché N1-N2 Tiempo de acceso Frecuencia de acceso Memoria Principal Disco Magnético Cinta Magnética ¿ Memoria Quién se ocupa del transvase entre memorias Disco Óptico ? - La CPU/MMU - El S. O. 4 Estructura Jerárquica de la Memoria Registros Cache Memoria Multinivel Tamaño: Oct-KB KB-MB GB TB Velocidad: 250 ps. 1 ns. 100 ns. 10 ms. CPU Memoria Bus de Memoria Memoria Principal Bus de E/S Dispositivos de E/S 5 MEMORIA 2. Memoria Caché 6 Memoria Caché Fundamento 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 Memoria Caché Fundamento Principio de Localidad de Referencia Localidad Temporal Es muy probable repetir instrucciones Memoria Localidad Espacial Es muy probable ejecutar instrucciones cercanas Unidad de Transferencia: BLOQUE 8 Memoria Caché CPU (bytes) Palabra • 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 Caché (KB-MB) Bloque Funcionamiento Buscar en la caché Acierto Memoria Principal (GB-TB) Fallo Asignar Línea Traer Bloque Entregar Dato Memoria 9 Memoria Caché Correspondencia Directa Políticas de Ubicación Asociativa Asociativa de Conjuntos Políticas de Sustitución Cuestiones de Diseño Tipo Estadístico Tipo NO Estadístico Políticas de Actualización Escritura Inmediata Escritura Diferida Tamaños Nº Caches Memoria 10 Memoria Caché Políticas de Ubicación Correspondencia Directa Caché etiq. b+d datos Dir. de memoria Bloque L0 Despl. etiq. línea b-l l ... d ... ... LJ + Comp. Acierto ... ... Falta de caché Memoria b d pal. 0 pal. 1 pal. 2 pal. 3 ... ... pal. 4j pal. 4j+1 pal. 4j+2 pal. 4j+2 pal. 4j+3 ... B0 BJ Memoria principal 11 Memoria Caché Ejemplo: Bloque 0 Bloque 1 Bloque 2 Bloque 3 Bloque 4 Bloque 5 Bloque 6 Bloque 7 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 Memoria Arquitectura de Computadores Memoria principal de 16 palabras Bloques de 2 palabras Memoria caché de 4 líneas Línea 0 Línea 1 Línea 2 Línea 3 12 Memoria Caché 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 Memoria 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 Línea Línea Línea Línea Línea Línea Línea Línea Línea Línea Línea Línea Línea Línea Línea Línea 0 0 1 1 2 2 3 3 0 0 1 1 2 2 3 3 Desplazamiento Desplazamiento Desplazamiento Desplazamiento Desplazamiento Desplazamiento Desplazamiento Desplazamiento Desplazamiento Desplazamiento Desplazamiento Desplazamiento Desplazamiento Desplazamiento Desplazamiento Desplazamiento 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 Línea Línea Línea Línea 0 1 2 3 Línea Línea Línea Línea 0 1 2 3 Línea Línea Línea Línea 0 1 2 3 Línea Línea Línea Línea 0 1 2 3 Línea Línea Línea Línea 0 1 2 3 Línea Línea Línea Línea 0 1 2 3 Línea Línea Línea Línea 0 1 2 3 Línea Línea Línea Línea 0 1 2 3 13 Memoria Caché 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 Memoria Arquitectura de Computadores Línea Línea Línea Línea Línea Línea Línea Línea Línea Línea Línea Línea Línea Línea Línea Línea 0 0 1 1 2 2 3 3 0 0 1 1 2 2 3 3 Desplazamiento Desplazamiento Desplazamiento Desplazamiento Desplazamiento Desplazamiento Desplazamiento Desplazamiento Desplazamiento Desplazamiento Desplazamiento Desplazamiento Desplazamiento Desplazamiento Desplazamiento Desplazamiento 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 14 Memoria Caché 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 Memoria Arquitectura de Computadores Línea Línea Línea Línea Línea Línea Línea Línea Línea Línea Línea Línea Línea Línea Línea Línea 0 0 1 1 2 2 3 3 0 0 1 1 2 2 3 3 Desplazamiento Desplazamiento Desplazamiento Desplazamiento Desplazamiento Desplazamiento Desplazamiento Desplazamiento Desplazamiento Desplazamiento Desplazamiento Desplazamiento Desplazamiento Desplazamiento Desplazamiento Desplazamiento 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 15 Memoria Caché 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 Memoria Arquitectura de Computadores Línea Línea Línea Línea Línea Línea Línea Línea Línea Línea Línea Línea Línea Línea Línea Línea 0 0 1 1 2 2 3 3 0 0 1 1 2 2 3 3 Desplazamiento Desplazamiento Desplazamiento Desplazamiento Desplazamiento Desplazamiento Desplazamiento Desplazamiento Desplazamiento Desplazamiento Desplazamiento Desplazamiento Desplazamiento Desplazamiento Desplazamiento Desplazamiento 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 16 Memoria Caché Formato de una dirección en correspondencia directa: Etiqueta Línea Desp. 1 2 1 En el ejemplo Memoria Arquitectura de Computadores 17 Memoria Caché Políticas de Ubicación Correspondencia Asociativa Dir. de memoria Bloque Despl. Acierto Fallo etiq Comp. Acierto Fallo Comp. Acierto Fallo Memoria etiq Línea 1 Comp. Línea 2 etiq Línea 0 Caché 18 Memoria Caché Políticas de Ubicación Correspondencia Asociativa de Conjuntos b+d Etiq Dir. de memoria Despl. Bloque etiq. b-c ... conjunto c C0 d ... C1 Comparador + Acierto Caché Falta de caché Memoria pal. 0 pal. 1 B0 pal. 2 pal. 3 ... ... b pal. 4j + pal. 4j+1 d BJ pal. 4j+2 pal. 4j+3 . Mem. principal ... 19 Memoria 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 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 Memoria 21 Memoria Caché Políticas de Actualización Propiedad de la caché Coherencia de la información entre las distintas memorias Actualizar MP Acierto Retrasar la actualización Escritura en caché Traer bloque a caché Fallo Escribir dato en MP Memoria Escritura Inmediata (Write Through) Escritura Diferida (Write Back) 2 accesos a MP 22 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 Memoria Buffer de escritura Su actualización se solapa con la ejecución de las instrucciones 23 Memoria Caché SPEC CPU 2000 Benchmarks (2003) Tasa de Fallos Tamaño de la Caché Tamaño de la caché • Barata • Rápida • Muchas faltas Memoria • • • • Pocas faltas Cara No tan Rápida Poca mejora 24 Memoria Caché Tamaño de la Caché Memoria CPU TAMAÑO CACHÉ L1 80486DX and DX2 8 KB L1 80486DX4 16 KB L1 Pentium 16 KB L1 Pentium Pro 16 KB L1 Pentium MMX 32 KB L1 AMD K6 and K6-2 64 KB L1 Pentium II and III 32 KB L1 Celeron 32 KB L1 Pentium III Cumine 32 KB L1 AMD K6-3 64 KB L1 AMD K7 Athlon 128 KB L1 AMD Duron 128 KB L1 AMD Athlon Thunderbird 128 KB L1 PowerPC G4 64 KB L1 (32 + 32) PowerPC G5 96KB L1 (64+32) Pentium IV 104 KB (96 + 8) A partir de aquí todos tienen más niveles de caché 25 Memoria Caché Tamaño del Bloque ↑ Localidad espacial ↓ Localidad Temporal Memoria 26 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 Memoria 27 Memoria Caché Tipos de fallo de caché 0.14 1-way Miss Rate per Type 0.12 2-way 0.1 4-way 0.08 8-way 0.06 Capacity 0.04 0.02 Cache Size (KB) Memoria 128 64 32 16 8 4 2 1 0 Compulsory 28 Memoria Caché Optimización Reducción del tiempo de acceso Reducción de la penalización por fallo optimización Reducción de la tasa de fallos Incremento del paralelismo Incremento del ancho de banda Memoria 29 Memoria Caché Optimización Reducción del tiempo de acceso: Caches Pequeñas 2.5 Tiempo acceso (ns) 2 1.5 1-way Consume tiempo: • Búsqueda del bloque • Etiquetas grandes • Nº Comparadores 2-way 4-way 1 8-way 0.5 0 16 KB 32KB 64KB 128KB Tamaño Caché 256KB 512KB 1MB Correspondencia Directa y Cachés multinivel Configuración: bloque 64 bytes y un banco Memoria 30 Memoria Caché Optimización Caches Multinivel Acierto L1: Fallo TL1 * PAL1 (1-PAL1) Acierto L2: CPU PAL2 * (1-PAL1)* TL2 Fallo Caché L2 Acceso a Memoria Caché L1 Reducción del tiempo de acceso: Caches Pequeñas TL1 PAL1 TL2 PAL2 Memoria Principal TMP (1-PAL1)* (1-PAL2 )* TMP TMEDIO = TL1 * PAL1 + PAL2 * (1-PAL1)* TL2 + (1-PAL1)* (1-PAL2 )* TMP Memoria 31 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 Memoria 32 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) Memoria 33 Memoria Caché Optimización Incremento del ancho de banda: Caches de nivel 1 separadas Caché L1 Unificada Instrucciones y Datos Caché L1 Caché L1 Instrucciones Datos Arquitectura Harvard Equilibrio automático de instrucciones y datos En procesadores segmentados evita riesgos estructurales Más simple de diseñar e implementar Todos los procesadores modernos la utilizan Memoria 34 Memoria Caché 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 1 ciclo Load 1 Load 2 Load 3 1 ciclo 1 ciclo 1 ciclo 1 ciclo 1 ciclo Mayor frecuencia de Reloj Load 1 Load 2 Load 3 Memoria 35 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 Memoria 36 Memoria Caché Optimización Incremento del ancho de banda: Caches Multibanco Caché Monolítica Línea 0 1 2 3 4 5 Banco 1 Banco 0 Línea 0 Bloque 0 1 2 3 Bloque 4 Línea 0 1 Bloque 1 2 3 Banco 2 Línea 0 1 2 3 Bloque 2 Banco 3 Línea 0 Bloque 3 1 2 3 6 7 8 9 10 11 Dir. de memoria Bloque Despl. 12 13 Memoria Banco = Bloque MOD 4 • Funciona bien cuando los accesos están repartidos • L2 AMD Opteron 2 bancos • L2 SUN Niagara 4 bancos 37 Memoria Caché Optimización Reducción de la penalización por fallo: Caché de victimas Línea 0 Memoria muy pequeña Fallo L1 Comprobar victimas LRU cuando está llena Admite algún esquema predictivo 1 2 3 4 5 Línea 0 1 2 3 6 7 8 Caché Nivel 2 Caché Asociativa 9 10 11 Últimos bloques expulsados de la caché L1 12 13 Caché L1 Correspondencia Directa Memoria 38 Memoria Caché Optimización Reducción de la penalización por fallo: Buffer de Escritura CPU Cache L1 store Memoria Principal 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 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 100 0 100 100 0 108 1 108 108 1 116 2 116 116 2 124 3 124 124 3 Posiciones Consecutivas LLENO 32 octetos Sin Write Merging Memoria 100 108 116 124 LIBRES 32 octetos Con Write Merging 40 Memoria Caché 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 Palabra Crítica primero CPU CPU) CPU CPU) 1. load 4. Word (M) CACHE 3. Word 4. Update 1. load CACHE 2. Get Block MEMORIA PRINCIPAL Memoria Rearranque Rápido 3. Update (0,..,M,..N-1) 2. Get Block MEMORIA PRINCIPAL 41 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]; int x[10][50]; for (j=0; j<50; j++) for (i=0; i<10; i++) x[i][j] = 2*x[i][j]; $80 0,0 for (i=0; i<10; i++) for (j=0; j<50; j++) x[i][j] = 2*x[i][j]; Se accede por filas $84 $88 0,1 0,2 9,47 9,48 9,49 Disposición en memoria de x (almacenamiento por filas) Memoria 42 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 CPU Cache L1 Instrucciones 4. Instr. 3. Block (N) 4. Block (N+1) Memoria Principal 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 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]; compilador for (i=0; i<10; i++) for (j=0; j<50; j++) 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 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]; } } 44 MEMORIA 3. Memoria principal 45 Memoria Principal Performance (log) El problema … Memoria 46 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é Memoria 47 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 Memoria 48 Memoria Principal DRAM Estructura CACHÉ L2 Backside Bus CPU CACHÉ L1 Memoria NORTH BRIDGE DRAM Controller DRAM Bus PCI USB APM Otros Dispositivos Frontside Bus SOUTH BRIDGE DRAM 49 Memoria Principal DRAM 64 x1bit Estructura Bit Line Decodificador de 3 a 8 (Row) Buffer de Direcciones Word Line Celda de memoria Decodificador de 3 a 8 (Column) Memoria 50 Memoria Principal DRAM Estructura: Organización Física R o w x2 DRAM x4 DRAM x8 DRAM Column Column Column Array de Celdas (1024x1024 bits) 2M bit Memoria R o w Array de Celdas (1024x1024 bits) 4M bit R o w Array Arraydede Celdas Celdas (1024x1024 bits) 8M bit 51 Memoria Principal DRAM Prestaciones Tamaño x4 cada tres años T. Acceso x25% cada tres años Ciclo x15% cada tres años Memoria Año Tamaño T. Acceso(ns) Ciclo (ns) 1980 64K bit 150-180 250 1983 256K bit 120-150 220 1986 1M bit 100-120 190 1989 4M bit 80-100 165 1992 16M bit 60-80 120 1996 64M bit 50-70 110 1998 128M bit 50-70 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 52 Memoria Principal DRAM Latencia DRAM B D Controlador de Memoria CPU A C E F A. Encolado de la petición de acceso a memoria (posible espera) B. Petición de acceso enviada al Controlador de Memoria C. Conversión de la petición de acceso a órdenes para la DRAM (posible espera) D. Envío de órdenes a la DRAM E. Fijar Fila (RAS) y Columna (CAS) en la matriz de celdas F. Resultado del acceso Latencia DRAM = A + B + C + D + E + F Memoria 53 Memoria Principal DRAM Ciclo de Lectura: Modo Normal RAS CAS Dirección FILA Datos Memoria COL FILA DATO COL DATO 54 Memoria Principal DRAM Ciclo de Lectura: Modo Fast Page Explota 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 Datos Memoria COL COL DATO COL DATO DATO 55 Memoria Principal DRAM Ciclo 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 Datos Memoria COL COL DATO COL DATO COL DATO DATO 56 Memoria Principal DRAM Ciclo de Lectura: Modo Ráfaga (Burst) RAS 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 6-1-1-1 (primeros 64 bits y sucesivos) CAS Dirección FILA Datos Memoria COL DATO DATO DATO DATO 57 Memoria Principal SDRAM Synchronous 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 Memoria Principal SDRAM Ciclo de lectura CLK RAS CAS Activar Banco Comandos ACT READ Direcciones FILA Datos Memoria COL DATO DATO DATO DATO 59 Memoria Principal SDRAM Bancos de memoria (entrelazada) Banco 0 Banco 1 Banco 0 Banco 1 0 1 2 N N+1 N+2 0 2 4 1 3 5 N-2 N-1 2N-2 2N-1 2N-4 2N-2 2N-3 2N-1 BUFFER BUFFER BUFFER BUS BUS Memoria NO entrelazada Memoria Entrelazada Memoria 60 Memoria Principal SDRAM Oct. 1 …… Banco N Banco 2 CLK Banco 1 Banco 0 Bancos de memoria (entrelazada) Oct. 2 Accesos No Entrelazada CLK Oct. 1 Oct. 2 Oct. 3 Oct. 4 Accesos Entrelazada Memoria Palabra m bits Banco k bits Dirección 61 Memoria Principal DDR-SDRAM Double 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 Matriz de Memoria Bits por ciclo Memoria 64 bits Buffer Bus de memoria Bus de Datos DDR1 DDR2 DDR3 x2 x4 x8 62 Memoria Principal PREGUNTA 3 100 Mhz x 2 Datos por ciclo x 8 Octetos DDR-SDRAM Double Data Rate SDRAM 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 Memoria 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 Memoria 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 Memoria Principal Módulos de Memoria DIMM Dual In-line Memory Module Chip DRAM de 8 bits Memoria 66 Resumen Caché Memoria SRAM Static Random Access Memory DRAM – Fast Page Asíncrona DRAM – EDO DRAM – Burst Principal DRAM Dynamic Random Access Memory SDRAM Síncrona Rambus Memoria DDR1 DDR2 DDR3 67 MEMORIA 4. Memoria virtual 68 Memoria 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 Memoria Virtual Concepto Separar 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 Memoria Virtual CPU Memoria LD R1,4(R10) Principal Dir. Virtual $100 MMU Dir. Física Bus del sistema Dir. Virtuales Forman el espacio de Direccionamiento Virtual En los microprocesadores actuales entre 232 y 264 direcciones 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 Memoria Virtual Espacio Dir. Virtual Memoria Principal (Dir. Físicas) Pág 0 Pág 1 Pág 2 Pág 3 Pág 4 ... ... Marco 0 Marco 1 ... Marco N Dividido en Marcos ... Pág N Dividido en páginas ¿Cómo conocer dónde están las páginas? Cuyo tamaño sea múltiplo del bloque de disco Memoria Tema 4 Gestión de 72 Memoria 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. 0 P E R PR Marco 1 ... N Tabla de páginas El tamaño de la entrada es múltiplo de la palabra del procesador Memoria Bit de Ensuciado Bit de Presencia Bits de Protección RWX Bit de Referencia Marco de memoria principal 73 Memoria Virtual Traducción de Direcciones Marcos 0 Dir. Física Dir. Virtual Pág. 1 ... Desplazamiento CPU N M.P. + Reg. Base TP 0 1 1 ... Pág 0 Pág 1 Marco N Tabla de páginas Pág 2 ... Pág N Disco Memoria 74 Memoria Virtual Falta de página ........................ ld R1, 10(R2) ........................ 1 Página: 2 Despl.: 312 Continuar P 1 N 0 X 0 FaltaPág $2312 2 0 1 2 3 4 5 ... Tabla de páginas Memoria 4 S.O. 3 3 Actualizar Tab. Pág 3 0 Pág Pág 22 Cargar Pág.2 1 ... N Pág 0 Memoria Principal Pág 1 Pág 22 ... Pág N Disco 75 Memoria Virtual Traducción de direcciones: TLB Translation Lookaside Buffer Utilizando una caché con la traducción de las direcciones más frecuentes MMU Dir. Virtual Pág. Despl. Etiqueta Acierto Marco Etiq. -- Marco Dir. Física + Marco Actualizar TLB Tabla de Páginas Fallo Reg. Base TP Memoria 76 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 ¿Qué ocurre cuando hay un cambio de contexto? Memoria Bit de Ensuciado Nº de Página ETIQUETA Bit de Validez Marco de M.P. Bits de Protección 77 Memoria Virtual Esquema general de Traducción Dir. Virtual Acceder TLB Fallo Buscar en Tab. Pág. Pág. No encontrada Excepción Memoria Acierto Acceso Permitido Traducir Dirección Acceso No Permitido Excepción Pág. encontrada Actualizar TLB Dir. Física 78 Memoria Virtual Dir. Virtual <64> 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 Memoria L2 tag <18> L2 línea <16> L2 Des <6> L2 cache tag <18> L2 data <64B> 79