210 likes | 327 Views
ISI374 – Arquitectura de Computadores Clase 22: Jerarquía de memoria Pt.4. Departamento de Ingeniería de Sistemas Universidad de Antioquia 2010-1. Resumen. Memoria virtual. Memoria virtual. Contextualización
E N D
ISI374 – Arquitectura de ComputadoresClase 22: Jerarquía de memoria Pt.4 Departamento de Ingeniería de Sistemas Universidad de Antioquia 2010-1
Resumen • Memoria virtual
Memoria virtual Contextualización • La memoria cache proporciona un acceso rápido a porciones de código y datos de un programa usados recientemente • De la misma manera, la memoria principal puede actuar como una “cache” para el almacenamiento secundario (normalmente implementado con discos magnéticos) Memoria virtual • El principio de localidad se aplica tanto a la memoria virtual como la memoria cache • Los programas comparten la memoria principal • Cada programa posee su propio espacio de direcciones (espacio virtual) • Mecanismo de protección • Durante la ejecución, cada dirección virtual se traduce en una dirección física (una dirección en memoria principal) • La memoria virtual (hardware de CPU y SO) realiza la traducción del espacio virtual de direcciones de un programa al espacio de direcciones físicas
Memoria virtual Definiciones • Virtual address • Dirección que corresponde a una posición en el espacio virtual de direcciones usado por un programa • El procesador genera direcciones virtuales • Physicaladdress • Dirección para acceder a memoria principal • Addresstranslation (Addressmapping) • Proceso mediante el cual una dirección virtual se traduce en una dirección física para acceder a la memoria principal • Page • Bloque de memoria virtual • Page fault • Fallo de memoria virtual: la página accedida no está en memoria principal
Modelo de memoria virtual • Páginas de memoria se mapean de un espacio de direcciones virtual a un espacio de direcciones físico • El procesador genera direcciones virtuales • La memoria principal se accede usando direcciones físicas • Una página virtual se mapea en una página física • Una página virtual puede no estar presente en memoria principal (no estar mapeada a una dirección física) y residir en disco • Las páginas físicas pueden compartirse haciendo que sus direcciones virtuales apunten a la misma dirección física
Modelo de memoria virtual Memory Management Unit (MMU) Virtual page Physical page (Page frame)
Traducción de dirección virtual a dirección física • En memoria virtual, la dirección se divide en dos campos: • Virtual page number: fragmento de la dirección virtual que se traduce en dirección física • Page offset: campo que no se modifica en el espacio de direcciones físicas y que determina el tamaño de la página • El número de páginas direccionables usando la dirección virtual no tiene porqué ser igual que el número de páginas direccionables usando la dirección física • Tener un número de páginas virtuales mayor que el de páginas físicas produce la ilusión de una cantidad de memoria virtual enorme
Fallo de página (Page fault) • Cada solicitud de acceso a memoria por parte del procesador requiere primero de una traducción de dirección virtual a dirección física • Cuando la página que contiene la palabra solicitada por el procesador no está en la memoria principal y tiene que ser traída desde el disco se dice que hay un fallo de página • Puede tomar millones de ciclos de reloj en procesarse (recordar que la memoria es casi 100 mil veces más veloz que el disco!!!) • El tratamiento del fallo lo hace el SO • Aspectos a tener en cuenta en el diseño del sistema de memoria virtual: • La página debe ser suficientemente grande para amortizar el elevado tiempo de acceso (tamaño típicos de 4 KB a 16 KB) • Emplear organizaciones que reduzcan la tasa de fallos de página • Emplazamiento completamente asociativo • El tratamiento de los fallos de página se puede hacer mediante software (el costo es muy pequeño comparado con el tiempo de acceso al disco) • Algoritmos de emplazamiento ingeniosos • La política de escritura write-through no funciona en memoria virtual • Se emplea write-back
Tabla de página • Debido a la alta penalización de un fallo de página, es importante reducir la tasa de fallos de página • Optimización del emplazamiento de páginas • El mapeo completamente asociativo le permite al SO reemplazar cualquier página que él quiera cuando ocurre un fallo • Se emplean algoritmos sofisticados y estructuras de datos complejas para mantener un registro del uso de las páginas • Una dificultad del emplazamiento completamente asociativo es localizar una entrada en memoria (una búsqueda completa no es práctica) • Es posible localizar una página usando una tabla que indexe la memoria • Esta estructura se llama tabla de páginay reside en memoria • La tabla de página se direcciona usando el número de página virtual para conocer el número de página física correspondiente
Tabla de página • Cada programa posee su propia tabla de página, que mapea el espacio de direcciones virtual de ese programa a memoria principal • Para indicar la ubicación de la tabla de página en memoria se emplea un registro que apunta al comienzo de la tabla Page tableregister • Estado de un programa (Proceso) Tabla de página, contador de programa y registros • Un proceso se considera activo cuando está en posesión del procesador • Es el SO quien se encarga de hacer activo o inactivo a un proceso • El espacio de direcciones del proceso (todos los datos que puede acceder en memoria) está definido por su tabla de página • En lugar de cargar toda la tabla de página, el SO carga el registro de tabla de página del proceso que quiere hacer activo (además del banco de registros y el contador de programa)
Mapeo de páginas a disco • La dirección virtual no dice exactamente dónde está la página en el disco • Por lo tanto, es necesario mantener un registro que permita conocer la ubicación en disco de cada página en el espacio virtual de direcciones • Swap space: espacio en el disco reservado por el SO para todo el espacio de memoria virtual de un proceso • El SO también crea una estructura de datos para saber en qué parte del disco está almacenada cada página virtual
Esquema de reemplazo • El SO crea una estructura de datos para saber cuáles procesos y cuáles direcciones virtuales usan cada página física • Cuando ocurre un fallo de página, si todas las páginas en memoria están en uso, el SO debe elegir una página a reemplazar • Para reducir la tasa de fallos de página, el SO intenta elegir una página a reemplazar asumiendo que no será requerida en un futuro cercano Esquema Least-recentlyused (LRU) • La página reemplazada se escribe en el espacio swap en disco • Implementar un esquema LRU completamente preciso es muy costoso • Sería necesario actualizar una estructura de datos en cada referencia a memoria • Para estimar las páginas LRU, el SO se vale de un bit de uso o referencia que se activa cuando se accede a la página • El SO limpia (pone en cero) periódicamente los bits de referencia y luego los lee para determinar cuáles páginas han sido accedidas • La página que conserve el bit de uso en cero no ha sido accedida recientemente
Tratamiento de las escrituras • La escritura en el disco puede tomar millones de ciclos de reloj • Un buffer de escritura, como en el caso de la cache, no sería práctico • En memoria virtual se implementa el esquema de escritura write-back (copy-back) • Copia la página completa en el disco cuando es reemplazada en memoria • La operación write-back, siendo más eficiente que escribir palabras individuales en el disco, aún es costosa • ¿Cómo sabemos si una página en memoria debe ser escrita en disco cuando decidimos reemplazarla? • Se agrega un bit dirty en cada entrada de la tabla de página • Este bit se activa cuando se escribe cualquier palabra en la página • Si el SO decide reemplazar una página, el bit dirty indica si la página debe escribirse en disco antes de que su ubicación en memoria sea cedida a otra página
Traducción rápida empleando TLB • Cada acceso a memoria por parte de un programa consta de: • Un acceso a memoria para obtener la dirección física • Recordar que la tabla de página reside en memoria • Un segundo acceso a memoria para obtener el dato • Pero los accesos a la tabla de página tienen buena localidad • Cuando se realiza una traducción de un número de página virtual, probablemente ésta sea requerida otra vez en un futuro cercano • Los procesadores modernos emplean una cache para almacenar las traducciones hechas recientemente y evitar el acceso a la tabla de página • Esta cache de traducción se llama Translation-lookaside buffer (TLB) • Valores típicos para un TLB: • Tamaño: 16 – 512 entradas • Tamaño de bloque: 1 – 2 entradas de la tabla de página • Tiempo de acierto: 0.5 – 1 ciclo de reloj • Penalización de fallo: 10 – 100 ciclos de reloj • Tasa de fallos: 0.01% – 1%
Fallos en TLB • Cuando ocurre un fallo en TLB es necesario determinar si es un fallo de página o un simple fallo en TLB • Si la página está en memoria: • El procesador carga la traducción desde la tabla de página en TLB y repite la referencia • Si la página no está en memoria: • El fallo en TLB implica un fallo de página • El procesador invoca el SO mediante una excepción para que éste traiga la página a memoria y actualice la tabla de página y TLB • Luego, repite la referencia
Interacción cache/TLB • IntrinsityFastMATH Cache direccionada físicamente: Índice y etiquetas tomados de la dirección física
Interacción cache/TLB • Diagrama de flujo del proceso de paginación virtual
Protección de memoria • Una de las funciones más importantes de la memoria virtual es permitir que muchos procesos compartan la memoria, ofreciendo mecanismos de protección entre los procesos y el SO • Diferentes procesos pueden compartir partes de sus espacios de direcciones virtuales • Pero es necesario protegerlos ante accesos erráticos • Los mecanismos de protección deben asegurar que aunque varios procesos compartan la misma memoria, ninguno de ellos pueda escribir en el espacio de otro, con o sin intención • Requiere asistencia del SO • Soporte hardware para que el SO implemente protección • Por lo menos dos modos de operación: modo usuario y modo supervisor privilegiado (kernelmode) • Instrucciones especiales para modificar el estado de un proceso (sólo en modo supervisor) • Mecanismos para el paso de modo usuario a supervisor y viceversa (Ej: instrucción syscall en MIPS)
Lecturas recomendadas • Computer organization and architecture. Designing for performance, 6th ed., Chapter 4. W. Stallings. Pearson Education • Computerorganization and design. The hardware/software interface, 3rd ed., Chapter 7. D. Patterson and J. Hennessy. Morgan KaufmannPublishers • The essentials of computer organization and architecture, Chapter 6. L. Null and J. Lobur. Jones and Batlett Publishers • Hardware and computerorganization. The software perspective, Chapter 14. A. Berger. Elsevier • Virtual memorysimulator. I. Koren. Dept. of ECS. University of Massachusetts (Armherst) http://www.ecs.umass.edu/ece/koren/architecture/Vmemory/try.html