Estructura de Computadores Tema 5 Jerarquía de memoria Departamento de Informática Grupo de Arquitectura de Computadores, Comunicaciones y Sistemas UNIVERSIDAD CARLOS III DE MADRID
Contenido Tipos de memoria Jerarquía de memoria Memoria caché Memoria virtual ARCOS Estructura de Computadores 2
Una visión general (hasta ahora) 3 Procesador Memoria Principal Prog y datos en ejecución Bus Valores frecuentes e instrucción actual Módulo E/S Periférico Módulo E/S Periférico Módulo E/S Disco Prog y datos NO en ejecución ARCOS Estructura de Computadores 3
Una visión general (hasta ahora) 4 Procesador Memoria Principal Prog y datos en ejecución Bus Valores frecuentes e instrucción actual Módulo E/S Periférico Módulo E/S Periférico Módulo E/S Disco Prog y datos NO en ejecución ARCOS Estructura de Computadores 4
Tipos de memoria (hasta el momento) 5 Procesador Banco de registros Almacena pocos datos Tiempo de acceso a un registro: orden de ns Memoria principal Más capacidad (GB) Tiempo de acceso: 5-1 ns 1 acceso a memoria = cientos de ciclos de reloj Disco Capacidad de almacenamiento casi ilimitada Tiempo de acceso lento: orden de milisegundos ARCOS Estructura de Computadores 5
Tipos de memoria 6 Memorias semiconductoras RAM y ROM Memorias de estado sólido Memorias magnéticas Discos y cintas Memorias ópticas CD, DVD, HD-DVD, ARCOS Estructura de Computadores 6
Evolución del rendimiento 7 Procesadores 198-2: Incremento medio del 6% anual Memorias DRAM 198-2: Incremento medio del 7% anual La distancia entre memoria y procesador es mayor cada año ARCOS Estructura de Computadores 7
Número de accesos a memoria? int i; int s = ; for (i=; i < 1; i++) s = s + i; ARCOS Estructura de Computadores 8
Número de accesos a memoria? int i; int s = ; for (i=; i < 1; i++) s = s + i; li $t, // s li $t1, // i li $t2, 1 bucle: bgt $t1, $t2, fin add $t, $t, $t1 addi $t1, $t1, 1 b bucle ARCOS Estructura de Computadores 9
Número de accesos a memoria? int i; int s = ; for (i=; i < 1; i++) s = s + i; li $t, // s li $t1, // i li $t2, 1 bucle: bgt $t1, $t2, fin add $t, $t, $t1 addi $t1, $t1, 1 b bucle Solución: 3 + 4 1 + 1 = 44 ARCOS Estructura de Computadores 1
Número de accesos a memoria? int v[1]; // global int i; for (i=; i < 1; i++) v[i] = ; ARCOS Estructura de Computadores 11
Número de accesos a memoria? int v[1]; // global int i; for (i=; i < 1; i++) v[i] = ; data: v: space 4 text: li $t, // i li $t1, // i de v li $t2, 1 // componentes bucle: bgt $t, $t2, fin sw $, v($t1) addi $t, $t, 1 addi $t1, $t1, 4 b bucle ARCOS Estructura de Computadores 12
Número de accesos a memoria? int v[1]; // global int i; for (i=; i < 1; i++) v[i] = ; data: v: space 4 text: li $t, // i li $t1, // i de v li $t2, 1 // componentes bucle: bgt $t, $t2, fin sw $, v($t1) addi $t, $t, 1 addi $t1, $t1, 4 b bucle Solución: 3 + 5 1 + 1 + 1 = 54 ARCOS Estructura de Computadores 13
Coste ejemplos: 14 Memoria principal Módulo de 2GB: 25 Coste: 1,22 centimos/ MB Disco Disco de 3 GB: 18 Coste:,6 centimos/mb Coste por byte en disco 2 veces mayor que en memoria ARCOS Estructura de Computadores 14
Contenido Tipos de memoria Jerarquía de memoria Memoria caché Memoria virtual ARCOS Estructura de Computadores 15
Jerarquía de memoria 16 Velocidad Coste Capacidad ARCOS Estructura de Computadores 16
Memorias de semiconductores Memoria de solo lectura (ROM) No necesita alimentación Persistente Ejemplo de uso: BIOS Memoria de lectura/escritura (RAM) Necesita alimentación No persistente Más rápida que la ROM Ejemplo de uso: memoria principal ARCOS Estructura de Computadores 17
Tipos de memoria SRAM 18 Almacena un bit como interruptor Circuito más complejo 6 transistores No se descarga No necesita refresco Más rápida y cara que DRAM ARCOS Estructura de Computadores 18
Tipos de memoria DRAM 19 Almacena un bit como carga en un condensador Circuito muy simple: 1 transistor + 1 condensador Más barata Necesita ciclos de refresco para no perder el valor Más lenta que SRAM ARCOS Estructura de Computadores 19
2 Sistema de memoria con dos niveles Ejemplo: memoria caché Intenta solucionar diferencias de velocidad entre procesador y memoria Se construye con tecnología SRAM Integrada en el mismo procesador Más rápida y más cara que la memoria DRAM Mantiene una copia de partes de la memoria principal procesador Memoria caché Memoria principal ARCOS Estructura de Computadores 2
Idea de la jerarquía de memoria 21 Procesador Caché Memoria Principal Disco Registros ARCOS Estructura de Computadores 21
Funcionamiento de la caché procesador Memoria caché Memoria principal palabras bloques ARCOS Estructura de Computadores 22
Funcionamiento de la caché int i; int s = ; for (i=; i < 1; i++) s = s + i; li $t, // s l $t1, // i li $t2, 1 bucle: bgt $t1, $t2, fin add $t, $t, $t1 addi $t1, $t1, 1 b bucle Suposición: Acceso a caché: 2 ns Acceso a MP: 12 ns Bloque de MP: 4 palabras Transferencia de un bloque entre memoria principal y caché: 2 ns ARCOS Estructura de Computadores 23
Funcionamiento de la caché int i; int s = ; for (i=; i < 1; i++) s = s + i; li $t, // s l $t1, // i li $t2, 1 bucle: bgt $t1, $t2, fin add $t, $t, $t1 addi $t1, $t1, 1 b bucle Sin memoria caché: Número de accesos a memoria = 3 + 4 1 + 1 = 44 Tiempo de acceso a memoria = 44 12 = 4848 ns ARCOS Estructura de Computadores 24
Funcionamiento de la caché int i; int s = ; for (i=; i < 1; i++) s = s + i; li $t, // s l $t1, // i li $t2, 1 bucle: bgt $t1, $t2, fin add $t, $t, $t1 addi $t1, $t1, 1 b bucle Con memoria caché: Número de bloques = 2 ARCOS Estructura de Computadores 25
Funcionamiento de la caché int i; int s = ; for (i=; i < 1; i++) s = s + i; li $t, // s l $t1, // i li $t2, 1 bucle: bgt $t1, $t2, fin add $t, $t, $t1 addi $t1, $t1, 1 b bucle Con memoria caché: Número de bloques = 2 Número de fallos = 2 Tiempo para transferir 2 bloques = 2 2 = 4 ns Tiempo de acceso a la caché = 44 2 = 88 ns Tiempo total = 848 ns ARCOS Estructura de Computadores 26
Funcionamiento de la caché int i; int s = ; for (i=; i < 1; i++) s = s + i; li $t, // s l $t1, // i li $t2, 1 bucle: bgt $t1, $t2, fin add $t, $t, $t1 addi $t1, $t1, 1 b bucle Sin memoria caché: 4848 ns Con memoria caché = 848 ns Tasa de aciertos a la caché = 42 / 44 => 99,95 % ARCOS Estructura de Computadores 27
Funcionamiento de la caché int v[1]; // global int i; int s; for (i=; i < 1; i++) s = s + v[i]; Suposición: Acceso a caché: 2 ns Acceso a MP: 12 ns Bloque de MP: 4 palabras data: Transferencia de un bloque entre memoria principal y caché : 2 ns v: space 4 text: li $t, // i li $t1, // i de v li $t2, 1 // componentes li $t3, // s bucle: bgt $t, $t2, fin lw $t4, v($t1) addi $t3, $t3, $t4 addi $t, $t, 1 addi $t1, $t1, 4 b bucle ARCOS Estructura de Computadores 28
Por qué funciona? 29 Tiempo de acceso a caché mucho menor que tiempo de acceso a memoria principal La memoria principal realmente se accede por bloques Cuando un programa accede a un dato, es probable que vuelva a acceder a él en el futuro cercano proximidad temporal Cuando un programa accede a un dato, es probable que en el futuro cercano acceda a posiciones cercanas proximidad espacial Tasa de aciertos: probabilidad de que un dato accedido esté en la caché ARCOS Estructura de Computadores 29
Tiempo de acceso 3 Memoria principal Típicamente tecnología DRAM o similar Tiempo de acceso: 5-1 ns Memoria caché Típicamente tecnología SRAM o similar Tiempo de acceso: 1-1 ns ARCOS Estructura de Computadores 3
31 Tiempo medio de acceso a un sistema de memoria con dos niveles Tm = h Tc + (1-h) Tf Tc: tiempo de acceso a la caché Tf: tiempo en tratar el fallo Incluye el tiempo para traer el bloque a la caché h: tasa de aciertos Aciertos: Se producen h*1% de las veces Solo se necesita el tiempo de acceder a la caché Fallos: Se producen (1-h)*1% de las veces Se necesita el tiempo de traer el bloque a la caché ARCOS Estructura de Computadores 31
Acceso por bloques 32 Se premia el acceso a posiciones consecutivas de memoria Ejemplo 1: acceder a 5 posiciones de memoria individuales (no consecutivas) Ejemplo 2: acceder a 5 posiciones de memoria consecutivas ARCOS Estructura de Computadores 32
Accesos por bloques 33 Si se realizan acceso individuales a memoria, el coste de cada acceso es el mismo CPU Memoria principal ARCOS Estructura de Computadores 33
Acceso por bloques 34 Si se accede a un conjunto consecutivo de posiciones de memoria, los accesos siguientes al primero tienen un coste menor CPU Memoria principal ARCOS Estructura de Computadores 34
Acceso por bloques 35 La memoria principal se accede por bloques La memoria caché se accede por palabras CPU transferencia de palabras cache transferencia de bloques Memoria principal ARCOS Estructura de Computadores 35
Niveles en memorias caché 36 L1 L2 Típicamente dentro del procesador Pequeña (8KB 128KB) Pueden separarse instrucciones de datos Puede ser interna o externa Tamaño mediano (256 KB 4 MB) L3 Típicamente externa ARCOS Estructura de Computadores 36
Ejemplo 37 Computador: Tiempo de acceso a caché: 4 ns Tiempo de acceso a bloque de MP: 12 ns Si se tiene una tasa de aciertos del 9% Cuál es el tiempo medio de acceso? Tasas de acierto necesarias para que el tiempo medio de acceso sea menor de 1 ns y 5 ns ARCOS Estructura de Computadores 37
Contenido Tipos de memoria Jerarquía de memoria Memoria caché Memoria virtual ARCOS Estructura de Computadores 38
Memoria caché 39 Se construye con tecnología SRAM Integrada en el mismo procesador Más rápida y más cara que la memoria DRAM Mantiene una copia de partes de la memoria principal procesador Memoria caché Memoria principal palabras bloques ARCOS Estructura de Computadores 39
4 Tiempo medio de acceso al sistema de memoria con una memoria caché T = h Tc + (1-h) Tf Tc: tiempo de acceso a la caché Tf: tiempo en tratar el fallo Incluye el tiempo para traer el bloque a la caché h: tasa de aciertos Aciertos: Se producen h*1% de las veces Solo se necesita el tiempo de acceder a la caché Fallos: Se producen (1-h)*1% de las veces Se necesita el tiempo de traer el bloque a la caché ARCOS Estructura de Computadores 4
Acceso por bloques 41 Se premia el acceso a posiciones consecutivas de memoria Ejemplo 1: acceder a 5 posiciones de memoria individuales Ejemplo 2: acceder a 5 posiciones de memoria consecutivas ARCOS Estructura de Computadores 41
Accesos por bloques 42 Si se realizan acceso individuales (no secuenciales) a memoria, el coste de cada acceso es el mismo CPU Memoria principal ARCOS Estructura de Computadores 42
Acceso por bloques 43 Si se accede a un conjunto consecutivo de posiciones de memoria, los accesos siguientes al primero tienen un coste menor CPU Memoria principal ARCOS Estructura de Computadores 43
Acceso por bloques 44 La memoria principal se accede por bloques La memoria caché se accede por palabras El procesador solicita palabras a la M caché La M caché solicita bloques a la M principal CPU transferencia de palabras cache transferencia de bloques Memoria principal ARCOS Estructura de Computadores 44
Niveles en memorias caché 45 L1 L2 Típicamente dentro del procesador Pequeña (8KB 128KB) Pueden separarse instrucciones de datos Puede ser interna o externa Tamaño mediano (256 KB 4 MB) L3 Típicamente externa ARCOS Estructura de Computadores 45
Ejemplo: AMD Quad-core ARCOS Estructura de Computadores 46
Ejemplo 47 Computador: Tiempo de acceso a caché: 4 ns Tiempo de acceso a bloque de MP: 12 ns Si se tiene una tasa de aciertos del 9% Cuál es el tiempo medio de acceso? Tasas de acierto necesarias para que el tiempo medio de acceso sea menor de 1 ns y 5 ns ARCOS Estructura de Computadores 47
Organización de la memoria principal 48 4 8 12 16 2 24 28 32 36 4 44 La memoria principal lógicamente se divide en bloques de igual tamaño 1 bloque = k palabras Ejercicio: Cuantos bloques de 4 palabras hay en una memoria de 1 GB? 17374188 173741812 173741816 17374182 ARCOS Estructura de Computadores 48
Organización de la memoria principal 49 4 8 12 16 2 24 28 32 36 4 44 17374188 173741812 173741816 17374182 La memoria principal lógicamente se divide en bloques de igual tamaño 1 bloque = k palabras Ejercicio: Cuantos bloques de 4 palabras hay en una memoria de 1 GB? Solución: 2 3 B / 16 B = 2 3-4 B = 2 26 B = 64 megabloques 64 millones ARCOS Estructura de Computadores 49
Acceso a una palabra en memoria principal Ejemplo: Computador de 32 bits Memoria direccionada por bytes Acceso a memorial principal por palabras Acceso a la palabra con dirección x64 4 8 12 16 2 24 28 32 36 4 44 48 52 56 6 64 Palabra de 32 bits ARCOS Estructura de Computadores 5
Acceso a una palabra en memoria principal Ejemplo: Computador de 32 bits Memoria direccionada por bytes Acceso a memorial principal por palabras Acceso a la palabra con dirección x64 31 1 32 4 8 12 16 2 24 28 32 36 4 44 48 52 56 6 64 Palabra de 32 bits ARCOS Estructura de Computadores 51
Organización de la memoria caché 52 La memoria caché está organizada en bloques (líneas) Al bloque de memoria caché se le llama línea de caché El tamaño del bloque de M principal es igual al tamaño de la línea Pero el tamaño de la memoria caché es mucho menor El número de bloques que cabe en la memoria caché es muy pequeño Cuántos bloques de 4 palabras cabe en una memoria caché de 32 KB? ARCOS Estructura de Computadores 52
Organización de la memoria caché 53 La memoria caché está organizada en bloques (líneas) Al bloque de memoria caché se le llama línea de caché El tamaño del bloque de M principal es igual al tamaño de la línea Pero el tamaño de la memoria caché es mucho menor El número de bloques que cabe en la memoria caché es muy pequeño Cuántos bloques de 4 palabras cabe en una memoria caché de 32 KB? Solución: 2 5 2 1 B / 2 4 B = 2 11 bloques = 248 bloques = 248 líneas ARCOS Estructura de Computadores 53
Cómo buscar una palabra en la cache? 54 procesador Memoria caché Memoria caché Tamaño: 32 bytes Con bloques de dos palabras cuántas líneas tiene la caché? Palabra de 32 bits 4 8 x1 12 x11 16 2 24 28 32 x1 36 x111 4 44 48 52 56 6 Memoria principal de 64 bytes = 16 palabras ARCOS Estructura de Computadores 54
Cómo buscar una palabra en la cache? 55 Palabra de 32 bits procesador 1 1 11 Memoria caché Memoria caché Memoria caché Tamaño: 32 bytes 4 líneas 2 palabras por línea 4 8 x1 12 x11 16 2 24 28 32 x1 36 x111 4 44 48 52 56 6 Memoria principal de 64 bytes = 16 palabras Número de línea ARCOS Estructura de Computadores 55
Cómo buscar una palabra en la cache? 56 Palabra de 32 bits procesador Dir = 8 1 1 11 Memoria caché Palabra 1 Palabra Memoria caché Tamaño: 32 bytes 4 líneas 2 palabras por línea 4 8 x1 12 x11 16 2 24 28 32 x1 36 x111 4 44 48 52 56 6 Memoria principal de 64 bytes = 16 palabras ARCOS Estructura de Computadores 56
Cómo buscar una palabra en la cache? 57 Palabra de 32 bits procesador Dir = 8 FALLO 1 1 11 Memoria caché Palabra 1 Palabra Memoria caché Tamaño: 32 bytes 4 líneas 2 palabras por línea 4 8 x1 12 x11 16 2 24 28 32 x1 36 x111 4 44 48 52 56 6 Memoria principal de 64 bytes = 16 palabras ARCOS Estructura de Computadores 57
Cómo buscar una palabra en la cache? 58 Palabra de 32 bits procesador Dir = 8 1 1 11 Memoria caché Palabra 1 Palabra Memoria caché Tamaño: 32 bytes 4 líneas 2 palabras por línea 4 8 x1 12 x11 16 2 24 28 32 x1 36 x111 4 44 48 52 56 6 Se elige una línea en la caché Memoria principal de 64 bytes = 16 palabras ARCOS Estructura de Computadores 58
Cómo buscar una palabra en la cache? 59 Palabra de 32 bits procesador Dir = 8 Memoria caché Palabra 1 Palabra x11 x1 1 1 11 Memoria caché Tamaño: 32 bytes 4 líneas 2 palabras por línea 4 8 x1 12 x11 16 2 24 28 32 x1 36 x111 4 44 48 52 56 6 Transfiere el bloque Memoria principal de 64 bytes = 16 palabras ARCOS Estructura de Computadores 59
Cómo buscar una palabra en la cache? 6 Palabra de 32 bits procesador x1 Memoria caché Palabra 1 Palabra x11 x1 1 1 11 Memoria caché Tamaño: 32 bytes 4 líneas 2 palabras por línea 4 8 x1 12 x11 16 2 24 28 32 x1 36 x111 4 44 48 52 56 6 Transfiere la palabra Memoria principal de 64 bytes = 16 palabras ARCOS Estructura de Computadores 6
Cómo buscar una palabra en la cache? 61 Palabra de 32 bits procesador Dir = 32 Memoria caché Palabra 1 Palabra x11 x1 1 1 11 Memoria caché Tamaño: 32 bytes 4 líneas 2 palabras por línea 4 8 x1 12 x11 16 2 24 28 32 x1 36 x111 4 44 48 52 56 6 Cómo saber si está en la caché? Memoria principal de 64 bytes = 16 palabras ARCOS Estructura de Computadores 61
Cómo buscar una palabra en la cache? 62 Palabra de 32 bits procesador Dir = 32 Memoria caché Palabra 1 Palabra x11 x1 1 1 11 Memoria caché Tamaño: 32 bytes 4 líneas 2 palabras por línea 4 8 x1 12 x11 16 2 24 28 32 x1 36 x111 4 44 48 52 56 6 Memoria principal de 64 bytes = 16 palabras Es el contenido de la dirección 8 no de la 32 ARCOS Estructura de Computadores 62
Función de correspondencia 63 Un diseño de caché necesita: Un algoritmo que diga en qué lugares de la memoria caché se puede almacenar un bloque determinado de la memoria principal Un mecanismo que permita saber qué bloque concreto de memoria principal está en una línea de la memoria caché Se asocian a las líneas etiquetas ARCOS Estructura de Computadores 63
Ubicación en caché 64? Memoria Caché Memoria Principal ARCOS Estructura de Computadores 64
Ubicación en MP 65? Memoria Caché Memoria Principal ARCOS Estructura de Computadores 65
Correspondencia 66 ARCOS Estructura de Computadores 66
Alternativas 67 Función de correspondencia directa Función de correspondencia asociativa Función de correspondencia asociativa por conjuntos ARCOS Estructura de Computadores 67
Correspondencia directa Palabra de 32 bits 1 1 11 Memoria caché Tamaño: 32 bytes 4 líneas 2 palabras por línea 4 8 12 16 2 24 28 32 36 4 44 48 52 56 6 64 Memoria principal ARCOS Estructura de Computadores 68
Correspondencia directa Palabra de 32 bits 1 1 11 Bloque - línea Memoria caché Tamaño: 32 bytes 4 líneas 2 palabras por línea 4 8 12 16 2 24 28 32 36 4 44 48 52 56 6 64 Memoria principal ARCOS Estructura de Computadores 69
Correspondencia directa Palabra de 32 bits 1 1 11 Bloque 1 - línea 1 Memoria caché Tamaño: 32 bytes 4 líneas 2 palabras por línea 4 8 12 16 2 24 28 32 36 4 44 48 52 56 6 64 Memoria principal ARCOS Estructura de Computadores 7
Correspondencia directa Palabra de 32 bits 1 1 11 Bloque 2 - línea 2 Memoria caché Tamaño: 32 bytes 4 líneas 2 palabras por línea 4 8 12 16 2 24 28 32 36 4 44 48 52 56 6 64 Memoria principal ARCOS Estructura de Computadores 71
Correspondencia directa Palabra de 32 bits 1 1 11 Bloque 3 - línea 3 Memoria caché Tamaño: 32 bytes 4 líneas 2 palabras por línea 4 8 12 16 2 24 28 32 36 4 44 48 52 56 6 64 Memoria principal ARCOS Estructura de Computadores 72
Correspondencia directa Palabra de 32 bits 1 1 11 Bloque 4 - línea Memoria caché Tamaño: 32 bytes 4 líneas 2 palabras por línea 4 8 12 16 2 24 28 32 36 4 44 48 52 56 6 64 Memoria principal ARCOS Estructura de Computadores 73
Correspondencia directa En general: El bloque de memoria K se almacena en la línea: K mod número de líneas ARCOS Estructura de Computadores 74
Correspondencia directa 1 1 11 Varios bloques en la misma línea Memoria caché Tamaño: 32 bytes 4 líneas 2 palabras por línea 1 1 11 1 11 11 111 1 11 11 111 11 111 111 1111 1 11 11 111 11 111 111 1111 11 111 111 1111 111 1111 1111 11111 Palabra de 32 bits Memoria principal ARCOS Estructura de Computadores 75
Correspondencia directa 1 1 11 Memoria caché Tamaño: 32 bytes 4 líneas 2 palabras por línea Cómo se sabe el bloque de memoria en el que se encuentra una dirección? Ejemplo: la dirección 11 1 1 11 1 11 11 111 1 11 11 111 11 111 111 1111 1 11 11 111 11 111 111 1111 11 111 111 1111 111 1111 1111 11111 Palabra de 32 bits Memoria principal ARCOS Estructura de Computadores 76
Ejercicio Dado un computador de 32 bits con una memoria caché de 64 KB y bloques de 32 bytes Si se utiliza correspondencia directa En qué línea de la memoria caché se almacena la palabra de la dirección x48a? Cómo se puede obtener rápidamente? En qué línea se de la memoria caché se almacena la palabra de la dirección x148a? Cómo sabe la caché si la palabra almacenada en esa línea corresponde a la palabra de la dirección x48a o a la palabra de la dirección x148a? ARCOS Estructura de Computadores 77
Correspondencia asociativa 78 Cada bloque de MP puede almacenarse en cualquier línea de la cahé ARCOS Estructura de Computadores 78
Correspondencia asociativa por conjuntos 79 La memoria se organiza en conjuntos de líneas Una memoria caché asociativa por conjunto de K vías: Cada conjunto almacena K líneas Cada bloque siempre se almacena en el mismo conjunto El bloque B se almacena en el conjunto: B mod número de conjuntos Dentro de un conjunto el bloque se puede almacenar en cualquiera de las líneas de ese conjunto ARCOS Estructura de Computadores 79
Correspondencia asociativa por conjuntos Palabra de 32 bits Número de conjunto Conjunto Conjunto 1 1 1 11 Número de línea Memoria caché Tamaño: 32 bytes Asociativa por conjunto de 2 vías 2 líneas por conjunto 2 palabras por línea 4 8 12 16 2 24 28 32 36 4 44 48 52 56 6 64 Memoria principal ARCOS Estructura de Computadores 8
Correspondencia asociativa por conjuntos Palabra de 32 bits Conjunto Conjunto 1 1 1 11 Bloque - Conjunto Memoria caché Tamaño: 32 bytes Asociativa por conjunto de 2 vías 2 líneas por conjunto 2 palabras por línea 4 8 12 16 2 24 28 32 36 4 44 48 52 56 6 64 Memoria principal ARCOS Estructura de Computadores 81
Correspondencia asociativa por conjuntos Palabra de 32 bits Conjunto Conjunto 1 1 1 11 Bloque 1 - conjunto 1 Memoria caché Tamaño: 32 bytes 4 líneas 2 palabras por línea 4 8 12 16 2 24 28 32 36 4 44 48 52 56 6 64 Memoria principal ARCOS Estructura de Computadores 82
Correspondencia asociativa por conjuntos Palabra de 32 bits Conjunto Conjunto 1 1 1 11 Bloque 2 - conjunto Memoria caché Tamaño: 32 bytes 4 líneas 2 palabras por línea 4 8 12 16 2 24 28 32 36 4 44 48 52 56 6 64 Memoria principal ARCOS Estructura de Computadores 83
Correspondencia asociativa por conjuntos Palabra de 32 bits Conjunto Conjunto 1 1 1 11 Bloque 3 - conjunto 1 Memoria caché Tamaño: 32 bytes 4 líneas 2 palabras por línea 4 8 12 16 2 24 28 32 36 4 44 48 52 56 6 64 Memoria principal ARCOS Estructura de Computadores 84
Correspondencia asociativa por conjuntos Palabra de 32 bits Conjunto Conjunto 1 1 1 11 Bloque 4 - línea Memoria caché Tamaño: 32 bytes 4 líneas 2 palabras por línea 4 8 12 16 2 24 28 32 36 4 44 48 52 56 6 64 Habría que eliminar la línea que estaba antes Memoria principal ARCOS Estructura de Computadores 85
Correspondencia asociativa por conjuntos 86 Establece un compromiso entre flexibilidad y coste Es más flexible que la correspondencia directa Es menos costosa que la correspondencia asociativa ARCOS Estructura de Computadores 86
Sustitución de bloques 87 Cuando todas las entradas de la caché contienen bloques de memoria principal: Hace falta seleccionar una línea que hay que dejar libre para traer un bloque de la MP Asociativa: Seleccionar una línea de la caché Asociativa por conjuntos: Seleccionar una línea del conjunto seleccionado Existen diversos algoritmos para seleccionar la línea de la caché que hay que liberar ARCOS Estructura de Computadores 87
Algoritmos de sustitución 88 FIFO First-in-first-out Sustituye la línea que lleva más tiempo en la caché LRU: Least Recently Used Sustituye la línea que lleva más tiempo sin usarse LFU: Least Frequently Used Sustituye la línea que se ha usado menos veces ARCOS Estructura de Computadores 88
Políticas de escritura 89 Cuando se modifica un dato en memoria caché, hay que actualizar en algún momento la memoria principal Alternativas: Escritura inmediata Post-escritura ARCOS Estructura de Computadores 89
Escritura inmediata 9 Cada vez que se modifica un dato en caché se escribe el bloque en memoria principal Muy simple de implementar Problema: Genera mucho tráfico a memoria para escrituras ARCOS Estructura de Computadores 9
Post-escritura 91 Un bloque solamente se escribe en memoria principal cuando va a ser expulsado de caché y siempre que se haya modificado A cada bloque de la caché se le asocia un bit de modificación Cuando el bloque se trae a la caché: Modificado= Cuando se modifica el bloque: Modificado=1 Cuando se expulsa un bloque de la caché (para hacer hueco), se escribe en memoria si modificado=1 ARCOS Estructura de Computadores 91
Ejercicio Sea un computador con una memoria caché y principal con las siguientes características: Tiempo de acceso a memoria caché de 4 ns Tiempo de acceso a memoria principal de 8 ns Tiempo para servir un fallo de caché de 12 ns Política de escritura inmediata En este computador se ha observado que la tasa de aciertos a la memoria caché es del 95 % y que cada 1 accesos, 9 son de lectura Calcular el tiempo medio de acceso a memoria ARCOS Estructura de Computadores 92
Ejercicio Sea un computador dotado de una memoria cache con las siguientes características: Tamaño: 16 KB con bloques de 32 bytes (8 palabras) Tiempo de acceso: 1ns Esta memoria está conectada a través de un bus de 32 bits a una memoria principal que es capaz de transferir un bloque de 8 palabras en 12 ns Política de escritura: post-escritura o escritura diferida Se pide: Calcular la tasa de aciertos que es necesaria para que el tiempo medio de acceso al sistema de memoria sea de 2 ns ARCOS Estructura de Computadores 93
Ejercicio Se dispone de un computador con una memoria caché con un tamaño de 64 KB El tamaño de la línea es de 64 bytes La caché tiene un tiempo de acceso de 2 ns y un tiempo de penalización por fallo de 12 ns La caché es asociativa por conjuntos de dos vías Se pide: Indique el número total de líneas de caché Indique el número de conjuntos que tiene la caché Indique el número de líneas por conjunto Haga un dibujo con la estructura de la caché Diga cuánto tiempo tardaríamos en obtener un dato si se produce un fallo en la caché ARCOS Estructura de Computadores 94
Ejercicio Sea un computador de 32 bits con el juego de instrucciones del MIPS, que ejecuta el siguiente fragmento de código cargado a partir de la dirección x li $t, 1 li $t1, li $t2, bucle: addi $t1, $t1, 1 addi $t2, $t2, 4 beq $t1, $t, bucle Este computador dispone de una memoria caché asociativa por conjunto de 4 vías, de 32 KB y líneas de 16 bytes Calcule de forma razonada el número de fallos de caché y la tasa de aciertos que produce el fragmento de código anterior, asumiendo que se ejecuta sin ninguna interrupción y que la memoria caché está inicialmente vacía ARCOS Estructura de Computadores 95
Ejercicio Sea un computador de 32 bits con una memoria caché para datos de 8 KB y línea de 64 bytes, política de correspondencia directa y política de escritura diferida o aplazada Calcule la tasa de fallos global del siguiente bucle double a[124], b[124], c[124], d[124]; // considere que un double ocupa 8 bytes y que los cuatro // vectores se encuentran dispuestos en memoria de forma // consecutiva for (int i = ; i < 124; i++) a[i] = b[i] + c[i] + d[i]; ARCOS Estructura de Computadores 96
Ejercicio Resuelva el ejercicio anterior asumiendo : Que la caché es totalmente asociativa, con política de sustitución LRU Que la caché es asociativa por conjuntos de dos vías y política de sustitución LRU Que la caché es asociativa por conjuntos de cuatro vías y política de sustitución LRU ARCOS Estructura de Computadores 97
Ejercicio Sea un computador de 32 bits con una memoria caché para datos de 32 KB y línea de 64 bytes La caché es asociativa por conjuntos de 2 vías Considere los dos siguientes fragmentos de código: int m[512][512]; sum = ; for (i = ; i < 512; i ++) for (j = ; j < 512; j++) sum = sum + m[i][j]; int m[512][512]; sum = ; for (i = ; i < 512; i ++) for (j = ; j < 512; j++) sum = sum + m[j][i]; considerando que la variable sum se almacena en un registro, calcule la tasa de fallos a memoria caché de los dos fragmentos (Observación: la matriz se almacena por filas) ARCOS Estructura de Computadores 98
Contenido Tipos de memoria Jerarquía de memoria Memoria caché Memoria virtual ARCOS Estructura de Computadores 99
Imagen de memoria de un proceso Proceso: programa en ejecución Imagen de memoria: conjunto de direcciones de memoria asignadas al programa que está ejecutando instrucciones datos Imagen de memoria de un programa en ejecucion Direcciones reservadas para el crecimiento de las secciones de datos y de pila pila ARCOS Estructura de Computadores 1
Sistemas sin memoria virtual En los sistemas sin memoria virtual, el programa se carga completamente en memoria para su ejecución Memoria Principal Sistema Operativo Disco instrucciones Programa en ejecucion datos pila Fichero ejecutable ARCOS Estructura de Computadores 11
Sistemas sin memoria virtual Se inicializan los registros Memoria Principal PC Sistema Operativo instrucciones Disco Programa en ejecucion datos SP pila Fichero ejecutable ARCOS Estructura de Computadores 12
Múltiples programas cargados en memoria Memoria principal Sistema Operativo instrucciones datos pila instrucciones datos proceso 2 proceso 1 pila ARCOS Estructura de Computadores 13
Múltiples programas cargados en memoria Memoria principal PC Sistema Operativo instrucciones datos proceso 2 SP pila instrucciones datos proceso 1 pila ARCOS Estructura de Computadores 14
Múltiples programas cargados en memoria PC SP Memoria principal Sistema Operativo instrucciones datos proceso 2 pila instrucciones datos proceso 1 pila ARCOS Estructura de Computadores 15
Múltiples programas cargados en memoria Memoria principal Sistema Operativo instrucciones datos proceso 2 PC pila instrucciones datos proceso 1 SP pila ARCOS Estructura de Computadores 16
Fichero ejecutable hipotético int v[1]; // global int i; for (i=; i < 1; i++) v[i] = ; ARCOS Estructura de Computadores 17
Fichero ejecutable hipotético int v[1]; // global int i; for (i=; i < 1; i++) v[i] = ; data: v: space 4 text: li $t, li $t1, bucle: fin: li $t2, 1 bgt $t, $t2, fin sw $, v($t1) addi $t, $t, 1 addi $t1, $t1, 4 b bucle ARCOS Estructura de Computadores 18
Fichero ejecutable hipotético int v[1]; // global int i; for (i=; i < 1; i++) data: v[i] = ; v: space 4 text: li $t, li $t1, bucle: li $t2, 1 bgt $t, $t2, fin sw $, v($t1) addi $t, $t, 1 ensamblador 4 96 1 14 18 112 116 12 124 128 132 Cabecera ejecutable li $t, li $t1, li $t2, 1 bgt $t, $t2, 16 sw $, 2($t1) addi $t, $t, 1 addi $t1, $t1, 4 b -2 addi $t1, $t1, 4 b bucle Se asigna a v la dirección 2 Se asume que el programa empieza en la ARCOS Estructura de Computadores 19
Carga del programa en memoria El sistema operativo reserva un hueco libre en memoria para toda la imagen del proceso 4 ejecutable Cabecera memoria 96 1 14 18 112 116 12 124 128 132 li $t, li $t1, li $t2, 1 bgt $t, $t2, 2 sw $, 2($t1) addi $t, $t, 1 addi $t1, $t1, 4 b -24 1 14 18 112 116 12 124 128 132 ARCOS Estructura de Computadores 11
Carga del programa en memoria En el fichero ejecutable se considera como dirección de inicio la Direcciones lógicas En memoria, la dirección de inicio es la 1 Direcciones físicas Hay que realizar una traducción de direcciones De direcciones lógicas a físicas El array en memoria está En la dirección lógica 2 En la dirección física 2 + 1 A este proceso se le denomina reubicación Reubicación software Reubicación hardware ARCOS Estructura de Computadores 111
Reubicación software Se realiza la traducción en el momento de la carga 4 ejecutable Cabecera memoria 96 1 14 18 112 116 12 124 128 132 li $t, li $t1, li $t2, 1 bgt $t, $t2, 2 sw $, 2($t1) addi $t, $t, 1 addi $t1, $t1, 4 b -24 1 14 18 112 116 12 124 128 132 li $t, li $t1, li $t2, 1 bgt $t, $t2, 16 sw $, 12($t1) addi $t, $t, 1 addi $t1, $t1, 4 b -2 ARCOS Estructura de Computadores 112
Reubicación software Qué ocurre con estas instrucciones cargadas en las posiciones 112 y 128? 4 ejecutable Cabecera memoria 96 1 14 18 112 116 12 124 128 132 li $t, li $t1, li $t2, 1 bgt $t, $t2, 2 sw $, 2($t1) addi $t, $t, 1 addi $t1, $t1, 4 b -24 1 14 18 112 116 12 124 128 132 li $t, li $t1, li $t2, 1 bgt $t, $t2, 16 sw $, 12($t1) addi $t, $t, 1 addi $t1, $t1, 4 b -2 ARCOS Estructura de Computadores 113
Problema de protección de memoria Qué ocurre si en el programa ejecuta las siguientes instrucciones? li $t,8 sw $t, ($) ARCOS Estructura de Computadores 114
Problema de protección de memoria Qué ocurre si en el programa ejecuta las siguientes instrucciones? li $t,8 sw $t, ($) Acceso ilegal a la dirección física que no está asignada al programa ARCOS Estructura de Computadores 115
Multiprogramación 116 Un computador puede tener varios programas en memoria Hay que asignar un espacio de memoria a cada programa en ejecución (proceso) SO P2 Hace falta asegurar que un programa no accede a la zona de memoria asignada a otro programa P1 P3 ARCOS Estructura de Computadores 116
Reubicación hardware Se realiza la traducción durante la ejecución Necesita un hardware especial Asegura protección 4 ejecutable Cabecera memoria 96 1 14 18 112 116 12 124 128 132 li $t, li $t1, li $t2, 1 bgt $t, $t2, 2 sw $, 2($t1) addi $t, $t, 1 addi $t1, $t1, 4 b -24 1 14 18 112 116 12 124 128 132 li $t, li $t1, li $t2, 1 bgt $t, $t2, 16 sw $, 2($t1) addi $t, $t, 1 addi $t1, $t1, 4 b -2 ARCOS Estructura de Computadores 117
Ejemplo de soporte hardware Registro límite: dirección lógica máxima asignada al programa Registro base: dirección de inicio del programa en memoria memoria MAR Reg límite Reg base 1 14 18 112 116 12 124 128 132 li $t, li $t1, li $t2, 1 bgt $t, $t2, 16 sw $, 2($t1) addi $t, $t, 1 addi $t1, $t1, 4 b -2 ARCOS Estructura de Computadores 118
Ejemplo de soporte hardware Registro límite: dirección lógica máxima asignada al programa Registro base: dirección de inicio del programa en memoria Dirección lógica de inicio memoria MAR Reg límite Reg base 6 1 1 14 18 112 116 12 124 128 132 li $t, li $t1, li $t2, 1 bgt $t, $t2, 16 sw $, 2($t1) addi $t, $t, 1 addi $t1, $t1, 4 b -2 ARCOS Estructura de Computadores 119
Ejemplo de soporte hardware Registro límite: dirección lógica máxima asignada al programa Registro base: dirección de inicio del programa en memoria memoria MAR Reg límite Reg base 6 1 > si excepción 1 14 18 112 116 12 124 128 132 li $t, li $t1, li $t2, 1 bgt $t, $t2, 16 sw $, 2($t1) addi $t, $t, 1 addi $t1, $t1, 4 b -2 ARCOS Estructura de Computadores 12
Ejemplo de soporte hardware Registro límite: dirección lógica máxima asignada al programa Registro base: dirección de inicio del programa en memoria memoria MAR Reg límite Reg base 6 1 > no + 1 14 18 112 116 12 124 128 132 li $t, li $t1, li $t2, 1 bgt $t, $t2, 16 sw $, 2($t1) addi $t, $t, 1 addi $t1, $t1, 4 b -2 ARCOS Estructura de Computadores 121
Ejemplo de soporte hardware Registro límite: dirección lógica máxima asignada al programa Registro base: dirección de inicio del programa en memoria memoria MAR Reg límite Reg base 6 1 > no + 1 1 14 18 112 116 12 124 128 132 li $t, li $t1, li $t2, 1 bgt $t, $t2, 16 sw $, 2($t1) addi $t, $t, 1 addi $t1, $t1, 4 b -2 ARCOS Estructura de Computadores 122
Sistemas sin memoria virtual Principales problemas Si la imagen en memoria del programa (proceso) es mayor que la memoria disponible, no se puede ejecutar En un computador de 32 bits Cuál es el tamaño máximo teórico del programa que se puede ejecutar? Y si solo se dispone de una memoria de 512 MB? Se reduce el número de programas activos en memoria ARCOS Estructura de Computadores 123
Sistemas con memoria virtual No es necesario tener cargado todo el programa en memoria Solo se cargan aquellas partes que el programa utiliza Principales ventajas: Se puede ejecutar programas cuya imagen es mayor 1ue la memoria principal disponible Se pueden tener más programas activos en memoria Imagen de memoria instrucciones datos Memoria principal pila pila datos instr pila instr instr ARCOS Estructura de Computadores 124
Fundamentos de la memoria virtual La MV utiliza dos niveles: Memoria principal Memoria secundaria: disco Mapa de memoria virtual (direcciones generadas por el procesador) Dirección física (acierto) Memoria principal Procesador Dirección virtual MMU Fallo página El SO transfiere la página solicitada a memoria principal Memoria Secundaria (Intercambio) ARCOS Estructura de Computadores 125
Memoria virtual paginada Las direcciones que genera el procesador son direcciones virtuales El espacio de direcciones virtuales se divide en trozos de igual tamaño denominado páginas La memoria principal se divide en trozos de igual tamaño a las páginas denominados marcos de página La zona del disco que sirve de soporte a la memoria virtual se divide en trozos de igual tamaño denominados páginas de intercambio o páginas de swap ARCOS Estructura de Computadores 126
Direcciones físicas y direcciones virtuales 127 Espacio de direcciones virtuales: Direcciones de memoria con las que trabaja cada proceso Espacio de direcciones físicas: Direcciones de memoria principal en las que residen los datos Direcciones virtuales Direcciones físicas Programa Traducción HW Memoria Física ARCOS Estructura de Computadores 127
Memoria virtual paginada La imagen de memoria de los procesos reside inicialmente en disco instrucciones datos DV pila DV N Memoria secundaria ARCOS Estructura de Computadores 128
Traducción de direcciones procesador DV MMU DF La página memoria está ARCOS Estructura de Computadores 129
Traducción de direcciones procesador DV MMU memoria La página no está Excepción ARCOS Estructura de Computadores 13
Traducción de direcciones procesador DV MMU memoria La página no está Excepción (fallo de página) Sistema operativo ARCOS Estructura de Computadores 131
Traducción de direcciones procesador DV MMU memoria Sistema operativo Memoria secundaria ARCOS Estructura de Computadores 132
Traducción de direcciones procesador DV MMU DF La página está memoria ARCOS Estructura de Computadores 133
Traducción de direcciones procesador DV MMU DF memoria Se envía la palabra al procesador ARCOS Estructura de Computadores 134
Memoria virtual paginada 32 bits 111111 Dirección virtual 32 bits 111111 Dirección física División en bloques del mismo tamaño Memoria secundaria ARCOS Estructura de Computadores 135
Estructura de una dirección virtual Un computador de n bits tiene: Direcciones de n bits n-1 Puede direccionar 2 n bytes ARCOS Estructura de Computadores 136
Estructura de una dirección virtual La imagen de memoria está compuesta por páginas de igual tamaño (4 KB, 8 KB) n-1 Número de página desplazamiento m bits p bits n = m + p Memoria direccionable: 2 n bytes Tamaño de la página 2 p bytes Máximo número de páginas: 2 m ARCOS Estructura de Computadores 137
Ejemplo 32 bits 111111 Dirección virtual 32 bits 111111 Dirección física Memoria secundaria ARCOS Estructura de Computadores 138
Ejemplo 2 bits 12 bits Id página Desplazamiento Dirección virtual 2 bits Marco 12 bits Desplazamiento Dirección física Marco Con páginas de 4 KB Memoria secundaria ARCOS Estructura de Computadores 139
Traducción n-1 p p-1 Página virtual Desplazamiento Dirección virtual Traducción m-1 Página física p p-1 Desplazamiento Dirección Física ARCOS Estructura de Computadores 14
Tabla de páginas Tabla de páginas del programa en ejecución Presente ETP Si No Espacio de direcciones virtual de un programa en ejecución Página Página 1 Página 2 Página 3 Página 4 Página 5 Memoria principal Marco de página Disco ARCOS Estructura de Computadores 141
Estructura de la tabla de páginas Modificada Protección Nº de marco/ bloque de disco Presente/Ausente ARCOS Estructura de Computadores 142
Estructura de la tabla de páginas La crea el sistema operativo en memoria cuando se va a ejecutar el programa La consulta la MMU en la traducción La modifica el SO en los fallos de página ARCOS Estructura de Computadores 143
Ejemplo Páginas de 1 KB Proceso de 8 KB Número de páginas que ocupa: 8 Tamaño de las secciones: Instrucciones: 15 KB Datos: 1 KB Pila 2 KB ARCOS Estructura de Computadores 144
Ejemplo Instr Pag Instr Pag 1 Datos Pag 2 Pag 3 Pag 4 Pág 5 Pag 6 Pila Pag 7 Páginas de 1 KB Proceso de 8 KB Número de páginas que ocupa: 8 Tamaño de las secciones: Instrucciones: 15 KB -> 2 páginas Datos: 1 KB -> 1 página Pila 2 KB -> 1 página ARCOS Estructura de Computadores 145
Ejemplo Instr Pag Instr Pag 1 Datos Pag 2 Pag 3 Pag 4 Pág 5 Pag 6 Pila Pag 7 DV de inicio: DV final: 8191 Pags 3, 4, 5 y 6 no asignadas inicialmente al programa ARCOS Estructura de Computadores 146
Ejemplo Imagen inicialmente en disco Instr Pag Instr Pag 1 Datos Pag 2 Pag 3 Pag 4 Pág 5 Pag 6 Pila Pag 7 1 2 3 4 5 6 7 8 9 1 11 12 1 2 7 Swap Páginas del proceso ARCOS Estructura de Computadores 147
Ejemplo El SO crea la tabla de páginas Instr Pag Instr Pag 1 Datos Pag 2 Pag 3 Pag 4 Pág 5 Pag 6 Pila Pag 7 1 2 3 4 5 6 7 P M marco/swap 2 4 5 8 1 2 3 4 5 6 7 8 9 1 11 12 Todas las páginas Inicialmente en swap 1 2 7 Swap Páginas del proceso ARCOS Estructura de Computadores 148
Ejemplo Acceso a la DV procesador DV= MMU 1 2 3 4 5 6 7 P M marco/swap 2 4 5 8 Instr Pag Instr Pag 1 Datos Pag 2 Pag 3 Pag 4 Pág 5 Pag 6 Pila Pag 7 1 2 3 4 5 6 7 8 9 1 11 12 1 2 7 Swap Páginas del proceso ARCOS Estructura de Computadores 149
Ejemplo Acceso a la DV procesador DV= MMU 1 2 3 4 5 6 7 P M marco/swap 2 4 5 8 DV= NP D Instr Pag Instr Pag 1 Datos Pag 2 Pag 3 Pag 4 Pág 5 Pag 6 Pila Pag 7 1 2 3 4 5 6 7 8 9 1 11 12 1 2 7 Swap Páginas del proceso ARCOS Estructura de Computadores 15
Ejemplo Acceso a la DV procesador DV= MMU 1 2 3 4 5 6 7 P M marco/swap 2 4 5 8 Fallo de página La página no está en memoria DV= NP D Instr Pag Instr Pag 1 Datos Pag 2 Pag 3 Pag 4 Pág 5 Pag 6 Pila Pag 7 1 2 3 4 5 6 7 8 9 1 11 12 1 2 7 Swap Páginas del proceso ARCOS Estructura de Computadores 151
Ejemplo Tratamiento del fallo de página procesador MMU 1 2 3 4 5 6 7 P M marco/swap 2 4 5 8 1 2 3 4 5 6 7 8 9 1 Memoria DV= NP D El SO reserva un marco de página libre en memoria ( el 5) y copia el bloque 2 al marco 5 1 2 3 4 5 6 7 8 9 1 11 12 1 2 7 Swap Páginas del proceso ARCOS Estructura de Computadores 152
Ejemplo Tratamiento del fallo de página procesador MMU 1 2 3 4 5 6 7 P M marco/swap 1 5 4 5 8 1 2 3 4 5 6 7 8 9 1 Memoria DV= NP D El SO actualiza la tabla de páginas 1 2 3 4 5 6 7 8 9 1 11 12 1 2 7 Swap Páginas del proceso ARCOS Estructura de Computadores 153
Ejemplo Reanudación del proceso procesador DV= MMU 1 2 3 4 5 6 7 P M marco/swap 1 5 4 5 8 1 2 3 4 5 6 7 8 9 1 Memoria DV= NP D Se vuelve a genera la DV 1 2 3 4 5 6 7 8 9 1 11 12 1 2 7 Swap Páginas del proceso ARCOS Estructura de Computadores 154
Ejemplo Reanudación del proceso procesador DV= MMU 1 2 3 4 5 6 7 P M marco/swap 1 5 4 5 8 1 2 3 4 5 6 7 8 9 1 Memoria DV= NP D Se vuelve a genera la DV 1 2 3 4 5 6 7 8 9 1 11 12 1 2 7 Swap Páginas del proceso ARCOS Estructura de Computadores 155
Ejemplo Reanudación del proceso procesador DV= MMU 1 2 3 4 5 6 7 P M marco/swap 1 5 4 5 8 1 2 3 4 5 6 7 8 9 1 Memoria DV= NP D DF 5 NP D Página presente Se genera la DF ARCOS Estructura de Computadores 156
Ejemplo Reanudación del proceso procesador DV= MMU 1 2 3 4 5 6 7 P M marco/swap 1 5 4 5 8 1 2 3 4 5 6 7 8 9 1 Memoria DV= NP D DF 5 NP D Se accede a memoria ARCOS Estructura de Computadores 157
Traducción Memoria principal Dirección virtual página desplazamiento Registro base de la TP 1 2 3 4 5 n Tabla de páginas marco presente? No Si Fallo de página Excepción marco Dirección física desplazamiento Marco de página Dato referenciado ARCOS Estructura de Computadores 158
Protección de memoria Dirección virtual Espacio de direcciones virtual del proceso 1 Página virtual Tabla de páginas del proceso 1 Marco A Memoria principal Marco de página A Página virtual k Marco C Marco de página B Direcciones físicas diferentes Dirección virtual Espacio de direcciones virtual del proceso 2 Página virtual Tabla de páginas del proceso 2 Marco B Marco de página C Página virtual j Marco D Marco de página D ARCOS Estructura de Computadores 159
Proceso de lectura en un sistema con memoria virtual y caché palabra Si Se transfiere la línea de MP a MC No acierto? M caché DV Acceso a la TP DF de la ETP M caché acierto? No Si ETP DF si Página presente? No Se transfiere la línea de MP a MC Fallo de página Se transfiere la página a MP y se actualiza la ETP ARCOS Estructura de Computadores 16
Ejercicio 1 Sea un procesador con memoria virtual paginada de direcciones virtuales de 32 bits y páginas de 2 KB Indique el formato de la dirección virtual, así como el número máximo de páginas que puede tener un programa en ejecución en este computador ARCOS Estructura de Computadores 161
Ejercicio 2 Sea un computador con direcciones virtuales de 32 bits y una memoria principal de 512 MB, que emplea páginas de 4 KB Indique el formato de la dirección virtual y el número de marcos de página ARCOS Estructura de Computadores 162
Ejercicio 3 Sea un computador que utiliza páginas de 8 KB y que direcciona la memoria por bytes Dada la dirección virtual (en hexadecimal) x2184 Indique: El tamaño de la dirección virtual El número máximo de páginas El número de página en el que se encuentra el dato referenciado por la dirección anterior El desplazamiento dentro de la página en el que se encuentra el dato referenciado por la dirección anterior ARCOS Estructura de Computadores 163
Ejercicio 4 Un computador que direcciona la memoria por bytes emplea direcciones virtuales de 32 bits Cada entrada de la tabla de páginas requiere 32 bits El sistema emplea páginas de 4 KB Cuál es el espacio de memoria direccionable por un programa en ejecución? Cuál es el máximo tamaño de la tabla de páginas en este computador? ARCOS Estructura de Computadores 164
Ejercicio 5 Sea un sistema con un espacio de direcciones virtual de 256 Kpáginas de 8 KB cada una y una memoria física de 128 MB Cuántos bits hay en la dirección virtual? ARCOS Estructura de Computadores 165
Ejercicio 6 Si un computador trabaja con direcciones de 16 bits, y posee páginas de tamaño 2 KB Se pide: Qué tamaño de memoria virtual se puede direccionar? Cuántas páginas tiene la memoria virtual? Cuál será el tamaño del marco de página? Suponiendo que la memoria física es de 32 KB, cuántos marcos hay? Cuántos bits de la dirección de memoria virtual se utilizan para seleccionar entradas en la tabla de páginas? Para que se emplean los bits restantes de la dirección de memoria virtual? Cuántas entradas tendrá la tabla de páginas? ARCOS Estructura de Computadores 166
Ejercicio 7 Dado un hipotético computador con memoria virtual paginada con un espacio de direcciones virtuales de 64 KB, una memoria física de 16 KB En este computador, que direcciona la memoria por bytes, el número de páginas por proceso es como máximo de 512 En un instante de tiempo dado, la tabla de páginas del proceso en ejecución contiene la siguiente información: ARCOS Estructura de Computadores 167
Ejercicio 7 (cont) Se pide: Calcule el tamaño de cada página y el número de marcos de página Cuántas páginas tiene asignadas el proceso en ejecución? Para qué se utiliza el bit M? Indique el formato de las direcciones virtuales especificando el tamaño de los campos y el significado de cada uno Cuántos marcos de página tiene la memoria? Indique las direcciones físicas, en binario y hexadecimal, correspondientes a las direcciones virtuales 258 y 1224 expresadas ambas en decimal Dada una dirección virtual cuántos accesos a memoria física se requieren para obtener el dato? P M marco/bloque 1 1 1 1 1 11 1 1 1 1 1 11 1 1 11 1 11 1 111 11 11 1 1 1 111 ARCOS Estructura de Computadores 168
Ejercicio 8 Sea un computador con direcciones virtuales de 32 bits y páginas de 4 KB En este computador se ejecuta un programa cuya tabla de páginas es: P M Perm Marco/Bloque R 136 1 R 497 W 3 W 719 W 32 W 24 W 3 Se pide: Tamaño que ocupa la imagen de memoria del programa Si la primera dirección virtual del programa es x, indique la última Dadas las siguientes direcciones virtuales, indique si generan fallo de página o no x1 x11c x24 ARCOS Estructura de Computadores 169
Ejercicio 9 Considere un computador con direcciones virtuales de 32 bits y páginas de 8 KB Se pide: Formato de la dirección virtual Máximo número de entradas que puede tener la tabla de páginas Dado el siguiente fragmento de programa: int a[1]; for (i = ; i < 89; i++) a[i] = a[i] +1; y suponiendo que no hay ninguna página en memoria principal y que los datos e instrucciones se almacenan en páginas distintas, indique el número de fallos de página que se producen cuando se ejecuta el fragmento de programa anterior ARCOS Estructura de Computadores 17
Ejercicio 1 Sea un computador con direcciones virtuales de 32 bits y páginas de 4KB Según un estudio, se ha determinado que en ausencia de fallos de página, este computador es capaz de ejecutar 5 millones de instrucciones por segundo Además el porcentaje de utilización de las instrucciones (similares a la del MIPS 32) es: LOAD un 3% STORE un 1 % MOVE un 1% Operaciones aritméticas un 24 % Operaciones lógicas un 6% Bifurcaciones un 2 % Se pide: Si no hay fallos de página y las instrucciones caben en una palabra, determine el número de accesos a memoria por segundo Si la tasa de fallos de página es del 95% y el tiempo para tratar un fallos de página es de 6 ms, indique el número de instrucciones que es capaz de ejecutar este computador ARCOS Estructura de Computadores 171