Tema 6: Memoria virtual Óscar David Robles Sánchez Sofía Bayona Beriso David Miraut Andrés Luis Rincón Córcoles
Contenidos Introducción. Localización de páginas. Fallos de página. TLB. Gestión de fallos de página y de TLB. Marco común para jerarquías de memorias
Bibliografía D. A. PATTERSON, J. L. HENNESSY. Estructura y Diseño de Computadores. Reverté, 20 (cuarta edición original). D.A. PATTERSON, J.L. HENNESSY. Estructura y Diseño de Computadores. Reverté, 2000. D.A. PATTERSON, J.L. HENNESSY. Computer Organization and Design. Morgan Kauffman, 2005 (tercera edición). DORMIDO, S. CANTO M.A., MIRA J., DELGADO A.E. Estructura y Tecnología de Computadores. 2ª edición. Sanz y Torres, 2000. J.L. HENNESSY, D.A. PATTERSON. Computer Architecture. Morgan Kauffman, 2003. P. DE MIGUEL. Fundamentos de los Computadores. 7ª edición. Paraninfo, 999. W. STALLINGS. Organización y Arquitectura de Computadores. 5ª edición, Prentice Hall, 2000.
MOTIVACIÓN
Convivencia Lo que hemos visto hasta ahora parece que funciona con un solo programa, pero y si tenemos varios ejecutándose simultáneamente? no cabrán en memoria? cómo hacemos para que no se pisen?
Introducción La memoria principal contiene las partes activas de los programas en ejecución. Espacio pequeño y limitado. Expansión utilizando almacenamiento secundario. La memoria principal actúa como una cache para el almacenamiento secundario. Esto es la memoria virtual.
Introducción La memoria virtual permite traducir el espacio de direcciones disponible a direcciones físicas. El proceso de traducción asegura la protección del espacio de direcciones de un programa de los demás programas en ejecución. Los conceptos de cachés y mem. virtual tienen muchos puntos en común, pero la terminología es distinta por razones históricas
Introducción La memoria virtual gestiona automáticamente los dos niveles de la jerarquía de memorias implicados: La memoria principal (también llamada memoria física para distinguirla de la virtual) Almacenamiento masivo. Aunque comparte conceptos con la cache Un bloque en memoria virtual se llama página. Un fallo en memoria principal se llama fallo de página. Con memoria virtual, la CPU produce direcciones virtuales, que se traducen a direcciones físicas.
Introducción V i r t u a l a d d r e s s e s A d d r e s s t r a n s l a t i o n P h y s i c a l a d d r e s s e s D i s k a d d r e s s e s
Introducción La memoria virtual simplifica la carga de problemas al aportar reubicación. Traducción de direcciones virtuales antes de utilizarlas para acceder a memoria. Esto permite cargar un programa en cualquier parte de la memoria principal. En memoria virtual, una dirección se puede dividir en número de página virtual y desplazamiento dentro de la página.
Introducción V i r t u a l a d d r e s s 3 3 0 2 9 2 8 2 7 5 4 3 2 0 9 8 3 2 0 V i r t u a l p a g e n u m b e r P a g e o f f s e t T r a n s l a t i o n 2 9 2 8 2 7 5 4 3 2 0 9 8 3 2 0 P h y s i c a l p a g e n u m b e r P a g e o f f s e t P h y s i c a l a d d r e s s
Introducción El número de página física constituye la parte alta de la dirección física. El desplazamiento dentro de la página es la parte baja. El número de bits de desplazamiento determinan el tamaño de la página.
Introducción El coste de los fallos lo condiciona todo: un fallo de página invertirá millones de ciclos de proceso. El tamaño de las páginas debe ser suficientemente grande para amortizar el tiempo de acceso. Las técnicas que reducen la tasa de fallos interesan mucho. Ejemplo: asociatividad. Los fallos de página se pueden gestionar con software, ya que la sobrecarga es menor en comparación con el tiempo de acceso a disco. La técnica de write-through no interesa porque las escrituras tardarán mucho. Mejor escritura diferida o write-back.
Localización de páginas Deseo: contrarrestar la penalización por fallo de página. Objetivo: reducir el número de fallos de página optimizando la distribución de las páginas. Ideal: asignar una página virtual a cualquier página física. Ante un fallo se podrá reemplazar cualquiera. Problema: los esquemas totalmente asociativos plantean búsquedas impracticables. MMU
Localización de páginas Las páginas se localizan usando una tabla que indexa la memoria: la tabla de páginas. Reside en memoria. Se indexa con el número de página de la dirección virtual y contiene el número de página física que le corresponde. Esta tabla es única por programa. Hay que ubicar la propia tabla de páginas en la memoria: su dirección de comienzo está en el registro de tabla de páginas.
Localización de páginas P a g e t a b l e r e g i s t e r V i r t u a l a d d r e s s 3 30 29 28 27 5 4 3 2 0 9 8 3 2 0 V a l i d V i r t u a l p a g e n u m b e r P a g e o f s e t 20 2 P h y s i c a l p a g e n u m b e r P a g e t a b l e I f 0 t h e n p a g e i s n o t p r e s e n t i n m e m o r y 8 2 9 2 8 2 7 5 4 3 2 0 9 8 3 2 0 P h y s i c a l p a g e n u m b e r P a g e o f f s e t P h y s i c a l a d d r e s s
Localización de páginas Cada entrada de la tabla de páginas tiene un bit de validez, como una cache. Si 0, la página no está presente en memoria principal y se produce un fallo de página. Si, la página es válida y la entrada contiene el número de página física. No se necesitan etiquetas: la tabla contiene una asignación para cada página virtual posible. El índice es toda la dirección de un bloque, que es el número de página virtual.
Localización de páginas Con una dirección virtual de 32 bits, páginas de 4KB y 4 bytes por entrada de la tabla de páginas se puede calcular el tamaño total de la tabla de páginas. 32 2 Número de entradas en la tabla de páginas 2 Tamaño de la tabla de páginas 2 entradas 2 2 bytes entrada 4 MB!!! La mayoría o toda la memoria correspondería a tablas de páginas!! Existen técnicas para controlar ese tamaño. 20 2 2 20 4 MB
Pregunta abierta Qué podemos hacer para controlar el tamaño de la tabla de páginas?
Fallos de página Se tiene que pasar el control al sistema operativo. Se ha de encontrar la página en el siguiente nivel de la jerarquía de memoria. Se debe decidir dónde colocar la página en la memoria principal. El S. O. no sabe cuándo se reemplazará una página de memoria. Crea: Espacio necesario en disco para todas las páginas de un proceso. Una estructura de datos para indicar el lugar donde se guarda en disco cada página virtual.
Fallos de página V i r t u a l p a g e n u m b e r V a l i d P a g e t a b l e P h y s i c a l p a g e o r d i s k a d d r e s s P h y s i c a l m e m o r y 0 0 0 D i s k s t o r a g e
Fallos de página: Política de reemplazamiento Reemplazo de una página en memoria principal: política LRU (Less Recently Used). Si las referencias más recientes a páginas (en orden) fueron 0, 2, 9, 7, 0, 9. Al referenciar la 8 se reemplazaría la 2. Si se genera otro fallo se reemplazaría la 9. Un esquema LRU perfecto es demasiado caro.
Fallos de página: Escrituras En escritura: Write-through impracticable. Se utiliza escritura retardada, que se llama copia retardada o copy back. Se copia la página a disco cuando ésta se reemplaza en memoria. Copiar una página entera es más eficiente que escribir palabras (T. transferencia < T. acceso). La técnica de copy-back es todavía muy costosa. Se añade un bit de suciedad (dirty bit).
Esto es un timo no? Si cada vez que queremos acceder a un dato o instrucción en memoria tenemos que hacer un acceso a memoria extra para leer su posición física en memoria, el rendimiento se queda en la mitad (o menos porque la latencia es grande) no?
TLB La tabla de páginas está en memoria principal: accesos costosos. Incremento del rendimiento: aplicar el principio de localidad en las referencias a la tabla de páginas. Se puede utilizar una cache especial de traducciones. TLB: buffer de traducción de direcciones o Translation-Lookaside Buffer.
TLB La TLB contiene sólo las correspondencias de tablas de páginas. Cada etiqueta contiene una parte del número de página virtual. Cada campo de datos contiene un número de página físico. Ya no se accede directamente a la tabla de páginas. La TLB asumirá: Bit de referencia. Bit de suciedad.
TLB V i r t u a l p a g e n u m b e r V a l i d T a g T L B P h y s i c a l p a g e a d d r e s s 0 P h y s i c a l m e m o r y P a g e t a b l e P h y s i c a l p a g e V a l i d o r d i s k a d d r e s s 0 0 0 D i s k s t o r a g e
En cada referencia: TLB Se busca el número de página virtual en la TLB. Acierto: el número de página física se usa como dirección y se activa el bit de referencia. Fallo: sólo de TLB o también de página? Página en memoria: sólo traducción no presente. Se carga la traducción en la TLB y se repite la referencia. Fallo de página: lo resuelve el S. O. Los fallos de TLB serán más frecuentes que los de página: cuestión de tamaño.
Gestión de fallos de página y de TLB Fallo de TLB o de página? Ver bit de validez en la tabla de páginas. Si fallo de página, se debe interrumpir la ejecución de la instrucción en la que se ha producido. Se debe encargar el S. O. Ha de buscar la dirección virtual que ha causado el fallo.
Gestión de fallos de página y de TLB Una vez conocida la dirección virtual que causó el fallo de página, el S. O. tiene que: Buscar una entrada en la tabla de páginas usando la dirección virtual y encontrar la posición de la página en disco. Escoger página física para reemplazarla. Si modificada, escribirla en disco. Iniciar una lectura de disco para traer la página referenciada. Mientras se trae de disco, el S. O. puede decidir que el procesador ejecute otros programas.
Marco común para jerarquías de memorias. Dónde se puede ubicar un bloque? Esquema Número de conjuntos Bloques por conjunto Corresp. directa Nº de bloques de la cache Asociativa por conj. Nº bloques de la cache/asociatividad Asociatividad (2-8) Totalmente asociativa Nº bloques de la cache Mayor grado de asociatividad supone menor tasa de fallos. Esto se debe a disminuir la competencia por ocupar cada posición.
M Marco común para jerarquías de memorias. 5 % 2 % i s s r a t e 9 % 6 % 3 % 0 % O n e - w a y T w o - w a y A s s o c i a t i v i t y F o u r - w a y K B 2 K B 4 K B 8 K B E i g h t - w a y 6 K B 3 2 K B 6 4 K B 2 8 K B
Marco común para jerarquías de memorias. Cómo se encuentra un bloque? Asociatividad Método de selección Comp. necesarias Corresp. directa Índice Asociativa por conj. Totalmente asociativa Índice conjunto; búsqueda dentro del conjunto. Buscar todas las entradas Grado asociatividad Tamaño cache Tabla de búsqueda 0 Grado de asociatividad: comparar coste de fallo con coste de la asociatividad. Asociatividad total: coste excesivo salvo tamaños muy reducidos.
Marco común para jerarquías de memorias. Cómo se encuentra un bloque? Asociatividad total utilizando una tabla de correspondencias: Reducción de fallos. Permite algoritmos sofisticados por software (mayor reducción de tasa de fallos). Fácil indexación sin circuitería ni búsquedas adicionales. En caso de páginas, el sobredimensionamiento es relativamente pequeño. Caches y TLBs: asociatividad por conjuntos e índices.
Marco común para jerarquías de memorias. Qué bloque debe ser reemplazado ante un fallo? Correspondencia directa: sólo un candidato. Asociatividad por conjuntos: Aleatorio. LRU (Less Recently Used). En la práctica, LRU excesivamente costoso. En caches grandes, el aleatorio funciona bien. En memoria virtual, se busca un LRU: coste de los fallos.
Marco común para jerarquías de memorias. Write-through: Qué ocurre con las escrituras? Fallos menos costosos: no se escribe en nivel inferior. Más fácil de implementar, pero necesita de un buffer de escrituras para ser rápido. Write-back o copy-back: Las palabras se pueden escribir más rápido en el procesador. Múltiples escrituras en un bloque son una escritura en nivel inferior. Al escribir en nivel inferior: ancho de banda.
Dirección virtual Acceso a TLB Excepción Fallo TLB No Acierto TLB Si Dirección física No Escritura? Si Leer en cache No Bit acceso escritura Si Bloqueo fallo cache No Acierto Cache? Si Entregar datos CPU Excepción protección escritura Escribir en cache, cambiar etiqueta, poner datos y dirección en buffer escrituras