1 / 21

ISI374 – Arquitectura de Computadores Clase 22: Jerarquía de memoria Pt.4

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

Télécharger la présentation

ISI374 – Arquitectura de Computadores Clase 22: Jerarquía de memoria Pt.4

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. ISI374 – Arquitectura de ComputadoresClase 22: Jerarquía de memoria Pt.4 Departamento de Ingeniería de Sistemas Universidad de Antioquia 2010-1

  2. Resumen • Memoria virtual

  3. 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

  4. 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

  5. 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

  6. Modelo de memoria virtual Memory Management Unit (MMU) Virtual page Physical page (Page frame)

  7. 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

  8. 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

  9. 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

  10. 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)

  11. Traducción empleando la tabla de página

  12. 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

  13. 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

  14. 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

  15. 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%

  16. Traducción rápida empleando TLB

  17. 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

  18. Interacción cache/TLB • IntrinsityFastMATH Cache direccionada físicamente: Índice y etiquetas tomados de la dirección física

  19. Interacción cache/TLB • Diagrama de flujo del proceso de paginación virtual

  20. 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)

  21. 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

More Related