Memoria virtual Ubicación de bloque en paginación • ¿Dónde puede ubicarse un bloque en memoria principal? – Los sistemas operativos permiten que los bloques se coloquen en cualquier parte de la memoria principal (totalmente asociativa) – Al ser muy alta la penalización por fallo en la memoria virtual, los diseñadores de S.O. optan por reducir la frecuencia de fallos en vez de utilizar un algoritmo de ubicación más sencillo Arquitectura de Sistemas Paralelos (69) Memoria virtual Identificación de bloque en paginación • ¿Cómo se encuentra un bloque si está en memoria principal? – La dirección virtual se descompone en dos campos: número de página virtual y desplazamiento de página – La dirección física se obtiene concatenando simplemente la dirección física de la página con el desplazamiento de página – Se utiliza una estructura de datos (tabla de páginas) que contiene la dirección física de la página y es indexada por la dirección virtual Arquitectura de Sistemas Paralelos (70) 1 Identificación de bloque en paginación Correspondencia entre dirección virtual y física Arquitectura de Sistemas Paralelos (71) Memoria virtual Sustitución de bloque en paginación • ¿Qué bloque debería sustituirse en un fallo de memoria virtual? – Con objeto de minimizar los fallos de página, se intenta sustituir la página que menos recientemente ha sido usada (LRU) – Implementación de una política LRU: Muchas máquinas proporcionan un bit de uso o bit de referencia para cada página, que se pone a uno siempre que dicha página es accedida. El S.O. borra periódicamente los bits de uso y más tarde los registra para poder determinar qué páginas fueron accedidas durante un periodo de tiempo determinado. De esta manera, el S.O. puede seleccionar una página que se encuentre entre la menos recientemente referenciadas Arquitectura de Sistemas Paralelos (72) 2 Memoria virtual Política de escritura en paginación • ¿Qué ocurre en una escritura? – La estrategia de escritura es siempre la post-escritura (write back) debido a la gran diferencia que existe entre los tiempos de acceso en uno y otro nivel – Los sistemas de memoria virtual incluyen un bit de modificado o sucio (dirty) para que sólo los bloques que han sido alterados desde que se cargaron sean escritos en la memoria secundaria Arquitectura de Sistemas Paralelos (73) Memoria virtual Tabla de páginas (I) • Permite traducir direcciones virtuales a direcciones físicas • Está indexada por el número de página virtual y contiene la dirección física de la página. Se requiere un bit de válido para indicar que la entrada contiene un página física válida (se encuentra en memoria principal y no se produce fallo de página) • El tamaño de la tabla de páginas es inversamente proporcional al tamaño de página • Las tablas de páginas son habitualmente tan grandes que se almacenan en memoria principal y, con frecuencia, paginadas ellas mismas: se requiere un acceso a memoria para obtener la dirección física y otro para obtener el dato • Bits de control: válido, uso, sucio, permiso lectura y permiso escritura • Optimización: Jerarquía de tablas de página, técnicas hashing (tablas de páginas invertidas) y Buffer de Traducción Anticipada (TLB) Arquitectura de Sistemas Paralelos (74) 3 Memoria virtual Tabla de páginas (II) Ejemplo: Dirección virtual de 28 bits, páginas de 4Kb y 4 bytes/entrada (256Mb/4Kb)*4 = 256Kb Arquitectura de Sistemas Paralelos (75) Memoria virtual Buffer de traducción anticipada o TLB (I) • De nuevo el principio de localidad: Si las referencias tienen localidad entonces la traducción de direcciones también debe tener localidad • El buffer de traducción anticipada (translation-lookaside buffer) o TLB es una cache, habitualmente totalmente asociativa o asociativa por conjuntos, cuyas entradas contienen: en la parte de la etiqueta, el número de página virtual (o parte) y en la parte del dato, el número de página física y los bits de control • Un tamaño de página mayor hace que más memoria pueda estar mapeada con una entrada, por lo que se reduce el numero de fallos en la TLB • Hay TLBs unificadas y separadas (datos e instrucciones) Tamaño de bloque 4-8 bytes (una entrada de tabla de página) Tiempo de acierto 1 ciclo de reloj Penalización de fallos 10-30 ciclos de reloj Frecuencia de fallos 0.1%-0.2% Tamaño TLB 32-8192 Valores típicos de parámetros Arquitectura de Sistemas Paralelos (76) 4 Memoria virtual Buffer de traducción anticipada o TLB (II) Arquitectura de Sistemas Paralelos (77) Buffer de traducción anticipada o TLB (III) Ejemplo: TLB del VAX-11/780 Tamaño de página de 512bytes Entrada de TP de 4bytes TLB de 512bytes asociativa por conjuntos de 2 vías Pasos: 1: Envío del índice de la dirección virtual 2: Comprobación de válido y tipo de acceso a memoria 3: Comparación de etiquetas 4: Envío de la dirección física a través del multiplexor 5: Combinación del número y desplazamiento de página Arquitectura de Sistemas Paralelos (78) 5 Buffer de traducción anticipada o TLB (IV) TLB y cache • Cuando se combinan caches y memoria virtual, la dirección virtual debe ser traducida a una dirección física mediante la TLB antes de que pueda acceder a la cache (elevado tiempo de acierto) • Una forma de reducir el tiempo de acierto es: – acceder a la cache únicamente con el desplazamiento de página (no necesita ser traducido) y mientras se están leyendo las etiquetas de dirección de la cache, el número de página virtual es enviado a la TLB para ser traducido – como la TLB es habitualmente más pequeña y rápida que la memoria de etiquetas de la cache, la lectura de la TLB puede hacerse de forma simultánea a la lectura de la memoria de etiquetas sin ralentizar los tiempos de acierto de la cache – después la comparación de direcciones se realiza entre la dirección física de la TLB y la etiqueta de la cache • Inconveniente: una cache de correspondencia directa no puede ser mayor que una página • Otra alternativa es utilizar caches virtuales (transparencia 59) Arquitectura de Sistemas Paralelos (79) 6