Arquitectura de Computadores II Clase #7 Facultad de Ingeniería Universidad de la República

Instituto de Computación Curso 2010

Veremos 

Memoria virtual

1

Recordemos: Jerarquía de Memoria Nivel Superior Registros

Más rápido

Instr. Operandos Cache Bloques Memoria Páginas Disco Archivos Cinta

Más grande Nivel Inferior

Motivación 

Nuevamente, queremos una cantidad y costo de almacenamiento similar al del nivel inferior (disco en este caso), con un rendimiento similar al del nivel superior (memoria principal en este caso)



Se pueden ejecutar procesos más grandes que la memoria física disponible. Antiguamente esto era responsabilidad del programador (overlays)



Es posible ejecutar simultáneamente muchos procesos aunque la suma de sus requerimientos de memoria exceda la memoria principal disponible. 



Menos riesgo de CPU ociosa esperando por operaciones de E/S

Algunas arquitecturas brindan herramientas para implementar eficientemente este nivel de la jerarquía de memoria

2

Paginación   

Memoria principal dividida en frames (marcos) Procesos (instrucciones y datos) divididos en páginas Frames y páginas de igual tamaño 



Administrar bloques de tamaño variable es costoso y conduce a fragmentación

El sistema operativo administra la correspondencia entre frames y páginas 

Cada proceso direcciona sus datos e instrucciones a través de direcciones lógicas, relativas al inicio del proceso • Dirección lógica = página + desplazamiento



El procesador traduce direcciones lógicas a direcciones físicas utilizando una tabla de páginas, que es administrada por el sistema operativo • Dirección física = frame + desplazamiento

Direcciones lógicas y físicas

3

Memoria Virtual 

Paginación a demanda 

No se requiere que todas las páginas de un proceso estén en memoria principal



Se cargan bajo demanda



El mecanismo funciona transparentemente al programador, que direcciona mediante direcciones virtuales o lógicas.

• Procesos potencialmente más grande que memoria principal • Se acelera el inicio de ejecución de procesos



Fallo de Página    

Página requerida no está en memoria Sistema operativo debe traer la página nueva (swap in) Puede ser necesario descartar una página para hacer lugar (swap out) Seleccionar página a descartar basándose en la historia reciente

Mapa de Direcciones    

V = {0, 1, . . . , n - 1} espacio virtual de direcciones n>m M = {0, 1, . . . , m - 1} espacio físico de direcciones Existe una función MAP ( V --> M + {vacío} ) que toma los valores: MAP(a) = a‘ 



si el dato apuntado por la dirección virtual a está presente en la dirección física a' tal que a' pertenece a M

MAP(a) = vacío si el dato apuntado por la dirección virtual a no está presente en M fallo por falta de ítem a Espacio V manejador del fallo Procesador 

a

Mecanismo Traslación de Direcc.

0

Memoria Principal

Memoria Secundaria

a'

dirección física

Responsabilidad del sistema operativo

4

Estructura de la Tabla de Páginas (1/2) 

Tabla de páginas 



Tamaño variable, potencialmente muy grande. Ej. para 4GB con páginas de 512 bytes, 232/29=223 páginas 



Traducción de dirección virtual a dirección física

No se puede alojar en la CPU -> en memoria

Pero se debe limitar el uso de memoria principal para almacenar Tablas de Páginas….   

…en general se almacenan en memoria virtual Algunas arquitecturas organizan las tablas de páginas en niveles (directorio / tabla de páginas) Tabla invertida

Estructura de la Tabla de Páginas (2/2) 

Invertida: se utiliza un hash para indizar en la tabla 



Tabla de hash usa encadenamiento (chaining)

Recordar: n> m n bits

Ventaja: porción fija de memoria real para tablas 

Una entrada para cada frame de memoria física m bits

5

Translation Lookaside Buffer Virtual Address Physical Address Dirty

Valid

Access

En principio, cada referencia a memoria virtual causa dos accesos a memoria física



 

Lectura de la tabla de páginas para obtener dirección física Acceso a la dirección física obtenida

Para acelerar el acceso se utiliza una cache especial para la tabla de páginas



 

TLB Menor tiempo de acceso, menor tiempo de traslación

El uso de TLBs permite reducir el #ciclos/accesos a la cache mediante la superposición del acceso a la cache con el acceso al TLB



Operación del TLB y el Cache 

Dirección virtual 





Bits más significativos usados para buscar en el TLB Bits menos significativos índice en la cache

Acceso superpuesto al TLB y la cache funciona solamente si los bits de direcciones usados como índice en la cache no cambian como resultado de la traslación de DV 

Caches con pocas líneas o conjuntos / tamaño de página grande

6

Fallo de Página  

Página no está residente en memoria El Hardware detecta la situación y genera una trap, atendida por el sistema operativo 

  

elegir una página a descartar (posiblemente salvándola en disco (bit dirty)) traer la página del disco actualizar la tabla de páginas retornar el control al programa para reintentar el acceso a memoria

Diseño de un Sistema de Memoria Virtual 

Tamaño de los bloques de información que son transferidos desde almacenamiento secundario hacia memoria principal (tamaño de frames/páginas)



Qué región de memoria principal debe alojar el nuevo bloque 



política de alojamiento

Si la memoria principal está llena y es necesario traer un nuevo bloque, se debe liberar espacio  

política de reemplazo Bit de “acceso”

7

Tamaño de Página 



Páginas pequeñas aprovechan mejor los frames de memoria física (menos fragmentación interna) Páginas más grandes   



Tablas de páginas más pequeñas Posibilita operativa simultánea de cache y TLB Amortizan mejor el costo de acceso a almacenamiento secundario (pero se corre el riesgo de transferir información innecesaria) Para un tamaño de TLB fijo, páginas más grandes implican una mayor cantidad de direcciones virtuales que se traducen mediante TLB

Thrashing 

Demasiado tiempo invertido en operaciones de swap y poco “trabajo real” del sistema



Soluciones   

Más memoria real Menos procesos en ejecución Buenos algoritmos de reemplazo (sistema operativo)

8

Por qué memoria virtual? 

Generalidad 



Administración de bloques de tamaño variable es costoso y lleva a fragmentación

Protección 



posibilidad de correr programas más grandes que el tamaño de la memoria física

Manejo del Almacenamiento 



aplicar permisos diferenciados a regiones del espacio de direcciones (R/O, Ex, . . .)

Flexibilidad 

porciones del programa pueden ubicarse en cualquier lado, sin relocalización

Por qué memoria virtual? 

retener en memoria sólo las porciones de código/datos que se necesiten

E/S Concurrente 



(2/2)

Eficiencia del almacenamiento 



(1/2)

ejecución de otros procesos mientras se carga/descarta una página

Rendimiento 

impacto en multiprogramación

9

Una idea fija: mejorar el rendimiento 

Algunas ideas que ya revisamos 

Incrementar la frecuencia del reloj • Pero…los tiempos de acceso a memoria y E/S pueden ser un cuello de botella…



Ancho de los registros Ancho del bus de datos



Ancho del bus de direcciones



• Mayor tasa de transferencia • NO mejora la velocidad de acceso pero se puede direccionar más memoria directamente… • Más memoria física, menos swap de memoria virtual

 

Pipelining Jerarquía de Memoria • L1 & L2 cache • Memoria virtual

Preguntas?

10