Teoría: Memoria Virtual

Anuncio
Organización del Computador I Verano
Memoria Virtual
Basado en el capítulo 5 del libro de Patterson y Hennessy
Verano 2014
Profesora Borensztejn
Memoria Virtual
•  Memoria Virtual es la técnica que permite que un
programa (y sus datos) no necesite estar completo
en memoria para ejecutarse.
•  Esto es necesario por dos motivos:
–  Los programas suelen ser muy grandes y no caben
enteros en memoria física.
–  En un sistema multiusuario/multitarea, varios
programas comparten la misma CPU: es necesario que
todos ellos esten en memoria física al mismo tiempo, y
obviamente, no caben.
Memoria Virtual
•  Solución:
–  Todos los programas que están ejecutándose en un
momento determinado del tiempo, están en disco. Sólo
sus partes actualmente accedidas están en memoria
principal.
–  La memoria principal actúa como una caché del disco
donde están los programas completos que se están
ejecutando.
–  La técnica de memoria virtual ofrece además, un
mecanismo de protección entre programas: asegura que
ningún programa lee/escribe los datos de otro programa
Espacios de Direcciones
•  La memoria física tiene un espacio de direcciones igual a
2n bytes, siendo n el número de bits (señales) que el
procesador tiene para direccionar memoria. La memoria
física (DRAM) se accede con direcciones físicas.
•  La memoria virtual tiene un espacio de direcciones igual a
2m, siendo m la cantidad de bits que los programas utilizan
para especificar una dirección (de una instrucción o de un
dato). Estas direcciones se llaman direcciones virtuales.
dirección
virtual
Memoria
virtual
dirección
física
Memoria
física
(DRAM)
Espacios de Direcciones
•  Cuando un programa es compilado, sus direcciones son
direcciones del espacio virtual.
•  Cuando un programa es ejecutado, las direcciones con las
que se accede a memoria son direcciones del espacio físico.
•  En el medio, debe haber un proceso que traduzca una
dirección virtual a una dirección física.
•  El proceso de traducción permite que un programa cambie
muchas veces su mapeo entre dirección virtual y dirección
física durante su ejecución.
•  La técnica de memoria virtual la implementa:
–  El sistema operativo con soporte de hardware
–  La traducción de direcciones virtuales a físicas, la realiza el
hardware (en casi todos los procesadores actuales)
Memoria Virtual
V ir t u a l a d d r e s s e s
P h y s ic a l a d d re s s e s
A d d r e s s t r a n s la t io n
D is k a d d r e s s e s
•  La unidad (bloque)
de transferencia se
llama página.
•  Fallo: Fallo de
página (Page
Fault)
•  El mapeo se
realiza entre las
páginas de
memoria virtual y
las páginas de
memoria física.
Traducción
•  Una dirección de memoria virtual se compone
de:
–  Número de página
–  Offset dentro de la página
•  La función de traducción asigna un número de
página física a la página virtual.
•  La traducción se realiza cada vez que se accede a
un dato.
Virtual address
31 30 29 28 27
15 14 13 12
11 10 9 8
Virtual page number
3210
Page offset
Translation
29 28 27
15 14 13 12
11 10 9 8
Physical page number
Physical address
Page offset
3210
Páginas
•  Cuando la función de traducción encuentra que
no hay mapeo para una dirección virtualèfallo
de página
•  El fallo de página tiene una penalización
enorme: acceder al disco cuesta millones de
ciclos de proceso
•  Los sistemas de memoria virtual se diseñan de
forma de reducir esta penalización.
Páginas
–  Las páginas deben ser lo suficientemente grandes
para amortizar el tiempo de acceso: de 4KB, 16KB,
32KB y 64 KB.
–  Se usa un esquema totalmente asociativo para colocar
las páginas en memoria.
–  El software gestiona los fallos de página: el hardware
avisa que hay fallo, el SO toma el control, transfiere
la página y utiliza algún algoritmo para decidir a
quien reemplaza.
–  Cuando se escribe en memoria principal, no se
actualiza el disco: se utiliza la política de escritura
diferida. El disco se actualiza cuando la página se
elimina de memoria.
Como ubicar y encontrar una
página
•  SO gestiona la localización de las páginas:
–  Algoritmos sofisticados que llevan la cuenta de
las páginas que no se necesitarán por mucho
tiempoè totalmente asociativo
–  Dificultad: localizar la página. Una búsqueda
total es impracticable.
–  Se utiliza una Tabla de Páginas.
Tablas de Página
Virtual page
number
Page table
Physical page or
Valid disk address
Physical memory
1
1
1
1
0
1
1
0
1
Disk storage
1
0
1
•  Un registro del
procesador apunta a la
dirección en memoria de
la Tabla de Páginas
•  Tabla de Páginas
reside en Memoria
•  Se indexa con el
número de página
virtual.
•  Contiene el número
de página física o
bien una indicación
de que no está.
•  Cada programa tiene
su propia Tabla de
Páginas.
Tabla de Páginas
Page table register
Virtual address
31 30 29 28 27
15 14 13 12 11 10 9 8
Virtual page number
Page offset
20
Valid
3 2 1 0
12
Physical page number
Page table
18
If 0 then page is not
present in memory
29 28 27
15 14 13 12 11 10 9 8
Physical page number
Physical address
Page offset
3 2 1 0
•  Tamaño de página:
212 bytes (4K bytes)
•  Espacio virtual de
direcciones: 232 bytes
•  Espacio físico de
direcciones: 230 bytes
•  Tamaño de la Tabla
de Páginas: 220
entradas, de 19 bits.
•  O sea: un millón de
entradas de 32 bits
(redondeando para
hacer mas fácil el
acceso)
Programas y Procesos
•  La Tabla de Páginas, junto con el PC y los
registros representan el estado del programa que
se está ejecutando.
•  La Tabla de Páginas define el estado de la
memoria del programa.
•  Si se quiere compartir la CPU, se deberá salvar el
estado del programa.
•  El programa y su estado se denomina proceso.
•  Un proceso está activo si está en posesión de la
CPU : de lo contrario está inactivo.
•  El S.O es el que pasa los procesos del estado
inactivo a activo y viceversa
¿Donde está la página en disco?
•  Un fallo de página
provoca una excepción
que le da control al S.O
•  Este debe localizar el
lugar del disco donde se
encuentra la página que
falló.
•  Utiliza una estructura
similar a la Tabla de
Páginas, o bien la misma
Tabla de Páginas para
•  El S.O también tiene una tabla por almacenar la ubicaciónde
proceso donde guarda información la página en disco.
de sus páginas mapeadas.
•  Reemplaza, utilizando LRU.
Virtual page
number
Page table
Physical page or
disk address
Valid
Physical memory
1
1
1
1
0
1
1
0
1
1
0
1
Disk storage
Problema
•  Calcular el tamaño de la Tabla de Páginas
necesaria para soportar un sistema con páginas de
4KB, 4 bytes por entrada en la TP y direcciones
virtuales de 32 bits.
•  Respuesta: 4MB!!!!!!!!!!
•  Es decir: se necesita en memoria por cada
programa que está corriendo una tabla de 4MB
•  En una máquina con varios cientos de programas
activos ............toda la memoria de la máquina
estaría ocupada por las Tablas de Páginas!
Soluciones
1. 
2. 
3. 
4. 
5. 
Limitar el tamaño de la TP por proceso, de manera que esta crezca
solo si el proceso lo necesita. Registro Límite.
Idem que el anterior pero permitiendo que las direcciones crezcan
en los dos sentidos: de abajo hacia arriba (heap) y de arriba hacia
abajo (pila). De esta forma las direcciones virtuales pertenecen a dos
segmentos: el bit de mayor peso de la dirección identifica a cual.
Cada segmento tiene una Tabla de Páginas diferente. MIPS
Aplicar una función de hashing a la dirección virtual de forma que
el tamaño de la Tabla de Páginas escale al tamaño de la memoria
física y no al de la memoria virtual. Tabla de Páginas Invertida.
Utilizar múltiples niveles de tablas de páginas. Un directorio que
contiene direcciones de Tablas de páginas y las Tablas de Páginas
que están en el segundo nivel. Tablas Jerárquicas. INTEL
Paginar la Tabla de Páginas: es decir, permitir que las Tablas de
Páginas residan en el espacio virtual.
Escrituras
•  Escritura diferida: además solo se escribe si
la página fue modificada. Bit de sucio.
(dirty).
•  El bit de dirty se activa cuando se realiza
una escritura en la página
Traducción de direcciones
• 
Si la Tabla está en MP: un acceso a un dato requiere dos
accesos (al menos!):
– 
– 
• 
Se puede acelerar basándose en el principio de localidad
de las referencia:
– 
• 
• 
Uno para acceder a la dirección
Otro para acceder al dato
Si una página fue recientemente referenciadaè es probable que
lo vuelva a ser pronto porque los datos tienen localidad espacial
y temporal
Solución: poner una pequeña caché de las últimas
referencias traducidas a direcciones físicas: TLB
Translation LookAside Buffer
TLB: caché de direcciones
Virtual page
number
TLB
Valid
Tag
1
1
1
1
0
1
Physical page
address
Physical memory
Page table
Physical page
Valid or disk address
1
1
1
1
0
1
1
0
1
1
0
1
Disk storage
•  La TLB es una pequeña
caché, por lo tanto cada
entrada contiene un tag: el
número de página virtual.
•  Cuando hay un fallo en la
TLB, puede o no haber
fallo de página.
•  Los fallos en la TLB los
sirve el hardware por lo
general.
•  La TLB contiene también
los bits de referencia y
sucio. Si hay reemplazo,
se copian en memoria.
(escritura diferida)
TLB
•  Algunos valores normales para la TLB:
–  Tamaño: 32 a 4096 entradas
–  Bloque: 1 o 2 entradas de Tabla de Página de 4-8 bytes
cada una.
–  Tiempo de acierto: 0,5-1 ciclo
–  Penalización por fallo: 10-30 ciclos
–  Tasa de fallos: 0,01%-1%
–  Asociatividad:
•  totalmente asociativaè difícil el reemplazo. Pocas entradas.
•  Poca asociatividad (2,4)
TLB de la DECStation 3100
•  Sistema de memoria:
–  Páginas de 4KB
–  Espacio de direcciones de 32 bits
–  Espacio de direcciones virtuales de 32 bits
–  TLB:
•  de 64 entradas
•  totalmente asociativo
•  compartido entre referencias a instrucciones y a datos.
TLB de la DECStation 3100
•  Fallo en la TLB:
–  MIPS salva el número de página virtual en un registro especial y
genera una excepción.
–  El SO gestiona el fallo de la TLB, indexando la Tabla de Páginas con
los dos registros:
•  El que contiene el número de página virtual
•  El que contiene la dirección base de la TP del proceso actual
•  Hay instrucciones especiales que le permiten al SO colocar la
dirección física en la TLB
•  El hardware mantiene un índice a la siguiente entrada a ser
reemplazada (escogida al azar)
•  Un fallo en la TLB tarda alrededor de los 16 ciclos
•  Si la entrada en la TLB recientemente actualizada no contiene una
dirección física, la CPU genera otra excepción: fallo de página.
•  Cuando la operación a realizar es una escritura: se comprueba en
la TLB que la página tenga derecho de escritura: sistema de
protección.
TLBs y caches
(DECStation 3100)
Virtual address
TLB access
TLB miss
exception
No
Yes
TLB hit?
Physical address
No
Yes
Write?
Try to read data
from cache
No
Write protection
exception
Cache miss stall
No
Cache hit?
Yes
Deliver data
to the CPU
Write access
bit on?
Yes
Write data into cache,
update the tag, and put
the data and the address
into the write buffer
•  Si hay Hit en la TLBèse
accede a la caché.
•  Si es una escritura, y
hay permiso de
escritura en la página,
se sobreescribe en
caché, y se envían al
buffer de escritura
•  No hay fallos por
escritura en esta caché:
se escribe en caché en
cualquier caso.
•  Si es lectura: fallo o
acierto
•  Cuando hay fallo en la
TLBè No se accede a
caché.
Integración: memoria virtual,
cachés y TLB’s
Caché
acierto
fallo
acierto
fallo
fallo
fallo
acierto
acierto
TLB
acierto
acierto
fallo
fallo
fallo
acierto
acierto
fallo
M.Virtual
acierto
acierto
acierto
acierto
fallo
fallo
fallo
fallo
Posible?
SI. Situación Ideal!
SI. Si hay hit en TLB, no se comprueba la Tabla de Páginas
SI. La entrada se busca de la TP y luego se accede a la caché
SI. La entrada se busca de la TP y luego se falla en la caché
SI. Fallo de TLB y Fallo de Página: despues de reintentar la caché tiene que fallar
NO. No puede haber una traducción para una página que no está en memoria
NO. No puede haber una traducción ni dato para una página que no está en memoria
NO. No puede haber datos en caché que no estén en memoria
Integración
•  Sistemas con direcciones físicas traducidas ANTES de acceder
a la caché:
–  Cachés indexadas físicamente y etiquetadas físicamente
–  El tiempo necesario para acceder al dato es la suma de los
tiempos de acceso a la TLB y a la Caché.
•  Sistemas con direcciones físicas traducidas DESPUES de
acceder a la caché:
–  Cachés indexadas virtualmente y etiquetadas virtualmente
–  Se accede en paralelo a la TLB y a la Caché
–  Solo en caso de miss en caché se usa la dirección física
obtenida en la TLB
–  Problema: una misma dirección física puede tener varias
direcciones virtualesè estar contenida en varias líneas de
la caché. (páginas compartidas entre programas)
Integración
•  Sistemas mixtos:
–  Las cachés se indexan con la dirección virtual (se
pueden usar los bits de desplazamiento de página
que no se cambian en la traducción), pero se
comparan con la dirección física.
–  La caché y la TLB se acceden en paralelo. La TLB
suministra la etiqueta para los comparadores
Protección
•  Es una de las funciones del sistema de memoria
virtual: permitir la compartición de la memoria
única entre múltiples procesos: protección entre
procesos y con el SO.
•  En la TLB, el bit de escritura protege contra
accesos de escritura no deseados.
•  Lecturas:
–  El SO debe garantizar que las páginas virtuales de dos
procesos independientes se asignen a páginas físicas
disjuntas.
–  También debe garantizar que un proceso no pueda
cambiar su Tabla de Páginas, sin embargo el SO si debe
poder cambiar las Tablas de Páginas.
Protección
•  El hardware debe proporcionar:
–  Al menos dos modos de ejecución: proceso usuario y
proceso kernel (supervisor, ejecutivo)
–  Instrucciones que solo puedan ser usadas por el proceso
kernel (para actualizar las estructuras de datos)
–  Mecanismos para pasar de un modo a otro
•  De usario a kernelè excepciones, llamadas al sistema
(syscall)
•  De kernel a usuarioèretorno de excepción: restaura el estado
del proceso.
Jerarquía de Menoria
Característica
Tamaño en bloques
Tamaño en Kbytes
Tamaño de bloque
Penalización por fallo
Tasa de fallos
Cachés
1000-100000
8-8000
16-256
10-100 ciclos
0,1%- 1%
M.Virtual
2000-250000
8000-8000000
4000-64000
1 millon-10 millones
0,00001%-0,0001%
TLB
32-4000
0.25-32
4-32
10-100
0,01%- 2%
•  Ideas Comunes
•  Ideas Comunes
–  ¿qué bloque se debe reemplazar?
–  ¿dónde se encuentra un bloque?
•  cualquiera
•  En una única posición
•  El menos recientemente utilizado
•  En unas cuantas
–  ¿qué ocurre con las escrituras?
•  En cualquiera
•  Escritura a través (write through)
–  ¿cómo se encuentra un bloque?
•  Escritura diferida (write back)
•  Indexando
•  Búsqueda limitada (al conjunto)
•  Búsqueda total
•  Tabla de búsqueda
Modelo de las tres (cuatro) C
•  Clasifica las causas de los fallos en:
–  Compulsory (Inevitables):
•  fallos de arranque en frío
–  Capacidad
•  Ocurren cuando los bloques reemplazados se acceden mas
tarde: no hay lugar para todos los bloques accedidos del
programa
–  Conflicto
•  Solo ocurren en las asociativas por conjuntos o de mapeo
directo
–  Coherencia
•  Bloques desplazados de la caché para mantener coherencia con
memoria principal.
Compromiso de Diseño
Cambio de Diseño
Incrementar Tamaño
Incrementar Asociatividad
incrementar tamaño de bloque
Efecto en la tasa de fallos
decrementar los fallos por capacidad
decrementa la tasa de fallos por conflicto
decrementa la tasa de fallos
Efecto negativo en el rendimiento
puede incrementar el tiempo de acceso
puede incrementar el tiempo de acceso
puede incrementar la penalización por fallos
Modern Systems
Characteristic
Virtual address
Physical address
Page size
TLB organization
Intel Pentium Pro
32 bits
32 bits
4 KB, 4 MB
A TLB for instructions and a TLB for data
Both four-way set associative
Pseudo-LRU replacement
Instruction TLB: 32 entries
Data TLB: 64 entries
TLB misses handled in hardware
Characteristic
Cache organization
Cache size
Cache associativity
Replacement
Block size
Write policy
PowerPC 604
52 bits
32 bits
4 KB, selectable, and 256 MB
A TLB for instructions and a TLB for data
Both two-way set associative
LRU replacement
Instruction TLB: 128 entries
Data TLB: 128 entries
TLB misses handled in hardware
Intel Pentium Pro
Split instruction and data caches
8 KB each for instructions/data
Four-way set associative
Approximated LRU replacement
32 bytes
Write-back
PowerPC 604
Split intruction and data caches
16 KB each for instructions/data
Four-way set associative
LRU replacement
32 bytes
Write-back or write-through
Ejemplo: Pipeline del R3000
Fetch
TLB
D/R
I-Cache
RF
ALU
/ EA
operación
EA TLB
Memoria
D-Cache
WB
WB
WB
IDEC
IA
• 
• 
• 
• 
• 
• 
• 
• 
• 
• 
• 
Cada Etapa está dividida en dos fases. El reloj es de 60 nseg. Cada fase de 30 nseg.
TLB: TLB read
I-Cache: Fetch Instrucción
RF: Lectura de Registros (segunda fase)
IDEC: Decodificación de Instrucción
IA: Cálculo de la dirección de la Instrucción
EA: Cálculo de la Dirección Efectiva del dato
TLB: Búsqueda en el TLB de datos
operación: operación
D-Cache: Acceso al dato
WB: Escritura de Registros (primera fase)
33
Ejemplo: R3000
IF
TLB
RD
I-Cache
RF
ALU/
EA
operación
EA TLB
Memoria
D-Cache
WB
WB
WB
IDEC
IA
Etapa
Fase
Función
IF
Φ1
Usando la TLB, traduce una dirección virtual a una dirección física
IF
Φ2
Envía la dirección física a la cache de instrucciones
RD
Φ1
Llega la instrucción leída de la caché
RD
Φ2
Decodifica instrucción
Lee el Banco de Registros
Si es un salto, calcula la dirección de salto
ALU
Φ1+ Φ2
Si es R-R, se realiza la operación
ALU
Φ1
Si es salto, decide si saltar o no.
ALU
Φ2
Si es una referencia a memoria, traduce su dirección virtual a física usando la TLB
MEM
Φ1
Si es una referencia a memoria, envía la dirección a la cache de datos
MEM
Φ2
Si es una referencia a memoria, recibe el dato de la caché y chequea el tag.
WB
Φ1
Escribe en el Banco de Registros
34
R3000 vs nuestra máquina
•  Semejanzas:
–  5 etapas de pipeline.
–  Retardo del load: 1 ciclo
–  El slot delay del salto es de un ciclo.
•  Diferencias
–  El salto se ejecuta en la etapa ALU
–  La dirección de salto se calcula en RD
–  La penalización del salto es de 2 ciclos.
FIN
Memoria Virtual
Descargar