21
Integración Virtual de memoria, TLBs y cachés Nuestros sistemas de memoria y caché virtuales trabajan juntos como una jerarquía, por lo que los datos no pueden estar en el caché a menos que se presente en la memoria principal. El sistema operativo tiene un papel importante en el mantenimiento de esta jerarquía vaciando el contenido de cualquier página de la caché, cuando decide migrar esa página en el disco. Al mismo tiempo, la que modifica las tablas de páginas y TLB, de manera que un intento de acceder a todos los datos de la página generará un error de página. Bajo las mejores circunstancias, una dirección virtual es traducida por el TLB y se envía a la memoria caché en donde se encuentran los datos procede, recuperada, y enviado de vuelta al procesador. En el peor de los casos, una referencia puede faltar en los tres componentes de la jerarquía de memoria: el TLB, la tabla de páginas y la caché. El siguiente ejemplo ilustra estas interacciones con más detalle ... Figura 7.24 el TLB y caché Implementar el proceso de pasar de una dirección virtual a un artículo Datos En el Intrlnslty • Rápido MATH. Esta figura muestra la org.1nization de la TLB y la caché de datos suponiendo un 4 KB de tamaño de página. Este diagrama se centra

Integrating Virtual Memory, TLB, And Caches

Embed Size (px)

DESCRIPTION

memoria virtual

Citation preview

Page 1: Integrating Virtual Memory, TLB, And Caches

Integración Virtual de memoria, TLBs y cachés

Nuestros sistemas de memoria y caché virtuales trabajan juntos como una

jerarquía, por lo que los datos no pueden estar en el caché a menos que se

presente en la memoria principal. El sistema operativo tiene un papel

importante en el mantenimiento de esta jerarquía vaciando el contenido de

cualquier página de la caché, cuando decide migrar esa página en el disco. Al

mismo tiempo, la que modifica las tablas de páginas y TLB, de manera que un

intento de acceder a todos los datos de la página generará un error de página.

Bajo las mejores circunstancias, una dirección virtual es traducida por el TLB y

se envía a la memoria caché en donde se encuentran los datos procede,

recuperada, y enviado de vuelta al procesador. En el peor de los casos, una

referencia puede faltar en los tres componentes de la jerarquía de memoria: el

TLB, la tabla de páginas y la caché. El siguiente ejemplo ilustra estas

interacciones con más detalle ...

Figura 7.24 el TLB y caché Implementar el proceso de pasar de una dirección

virtual a un artículo Datos En el Intrlnslty • Rápido MATH. Esta figura muestra la

org.1nization de la TLB y la caché de datos suponiendo un 4 KB de tamaño de

página. Este diagrama se centra en una lectura; Figura 7.25 describe cómo

manejar escrituras. Tenga en cuenta que a diferencia de la figura 7.9 en la

página 486, las memorias RAM de la etiqueta y de datos se dividen. Al abordar

la larga pero estrecha RAM de datos con el índice de caché concatenado con el

desplazamiento de bloques, seleccionamos la palabra deseada en el bloque sin

16: 1 multiplexor. Mientras que la memoria caché se asigna directa, la TLB es

totalmente asociativa. La implementación de una TLB totalmente asociativa

requiere que cada etiqueta TLB se compara con el número p.1ge virtual, desde

la entrada de interés puede estar en cualquier lugar en el TLB. Si el bit de

validez de la entrada coincidente está activado, el acceso es un éxito TLB, y los

Page 2: Integrating Virtual Memory, TLB, And Caches

bits del número de página física junto con los bits en la página compensar

formar el índice que se utiliza para acceder a la memoria caché. (El Intrlnslty

realidad tiene un tamaño de página de 16 KB; la elaboración de la página 528 se

explica cómo funciona.)

FIGURA 7.25 Procesamiento de una lectura o una escritura a través de En el

Intrinsity FastMATH TLB y la memoria caché. Si la TLB genera un éxito, la caché

se puede acceder con la dirección física resultante. Para una lectura, la

memoria caché genera impredecible y suministra los datos o cause un puesto,

mientras que los datos se trajo de la memoria. Si la operación es una escritura,

una parte de la entrada de caché se sobrescribe para un golpe y los datos se

envían a la memoria intermedia de escritura si asumimos escritura a través.

Una falta de escritura es como un fallo de lectura, excepto que el bloque se

modifica después de que se lee de la memoria. Escriba devolución requiere

escrituras para establecer un poco sucio para el bloque de caché y un buffer de

escritura se carga con todo el bloque sólo en un fallo de lectura o escritura se

pierda si el bloque que ser reemplazado está sucio. Tenga en cuenta que un

golpe TLB y un golpe de caché son eventos independientes, pero un golpe

caché sólo puede ocurrir después de que ocurra un golpe TLB., Lo que significa

que los datos deben estar presentes en la memoria. La relación entre fallos TLB

y fallos de caché se examina con más detalle en el siguiente ejemplo y los

ejercicios al final de este capítulo.

Operación Global de una jerarquía de memoria

En una jerarquía de memoria, como la de la figura 7.24, que incluye una TLB y

un caché organizada como se muestra, una referencia de memoria puede

encontrarse con tres tipos diferentes de fallos: un TLB pierda, un fallo de

página, y un error de caché. Considere todas las combinaciones de estos tres

Page 3: Integrating Virtual Memory, TLB, And Caches

eventos con uno o más ocurren (siete posibilidades). Para cada posibilidad,

indicar si este evento realmente puede producirse y en qué circunstancias.

La figura 7.26 muestra las posibles circunstancias y si puede surgir en la práctica

o no.

Elaboración: Figura 7.26 supone que todas las direcciones de memoria se

traducen a direcciones físicas antes se accede a la caché. En esta organización,

la caché es físicamente indexado y físicamente etiquetado (tanto el índice de

caché y la etiqueta son físicos, en lugar de virtual, direcciones). En tal sistema,

la cantidad de tiempo para acceder a la memoria, suponiendo un acierto de

caché, debe dar cabida a la vez un acceso TLB y un acceso a la caché; por

supuesto, estos accesos se pueden pipeline.

Por otra parte, el índice de procesador lata el caché con una dirección que es

completamente o parcialmente virtual. Esto se conoce como prácticamente

dirigida caché, y utiliza las etiquetas que son direcciones virtuales; por lo tanto,

una caché como es prácticamente indexado y prácticamente etiquetado. En

esos cachés, el hardware de traducción de direcciones (TLB) no se utiliza

durante el acceso a la caché normal, ya que se accede a la memoria caché con

una dirección virtual que no ha sido traducida a una dirección física. Esto toma

la TLB de la ruta crítica, lo que reduce la latencia de memoria caché. Cuando se

produce un error de caché, sin embargo, el procesador tiene que traducir la

dirección a una dirección física para que pueda buscar el bloque de caché de la

memoria principal.

Prácticamente abordado caché :Una caché al que se accede con una dirección

virtual en lugar de una dirección física.

Page 4: Integrating Virtual Memory, TLB, And Caches

Possible, although the page table is never

really checked if TLB hits.

TLB misses, but entry found in page table;

after retry, data is found in cache.

TLB misses but entry found in page table;

after retry, data misses in cache.

TLB misses and is followed by a page fault;

after retry, data must miss in cache.

Impossible: cannot have a translation in TLB if

page is not present in memory.

Impossible: cannot have a translation in TLB if

page is not present in memory.

Impossible: data cannot be allowed in cache if

the page is not in memory.

Posible, aunque la tabla de páginas es en realidad nunca comprobó si

TLB golpea.

TLB echa de menos, pero la entrada se encontró en la tabla de la

página; después de reintento, los datos se encuentra en la memoria

caché.

TLB echa de menos, pero la entrada se encontró en la tabla de la

página; después de reintento, los datos se pierde en la memoria caché.

TBL Page

table

cache

hit hit miss

miss hit hit

miss hit miss

miss miss miss

hit miss miss

hit miss hit

miss miss hit

Page 5: Integrating Virtual Memory, TLB, And Caches

TLB se pierde y es seguido por un fallo de página; después de

reintento, los datos pueden perderse en la memoria caché.

Imposible: no se puede tener una traducción en TLB si la página no

está presente en la memoria.

Imposible: no se puede tener una traducción en TLB si la página no

está presente en la memoria.

 

Imposible: los datos no pueden ser permitidos en caché si la página no

está en la memoria.

FIGURA 7.26 Las combinaciones posibles de los acontecimientos en la TLB,

sistema de memoria virtual y caché. Tres de estas combinaciones son

imposibles, y uno es posible (TLB golpeado, golpe memoria virtual, memoria

caché fallo) pero nunca detectada.

Cuando se accede a la memoria caché con una dirección virtual y las páginas

son compartidas entre los programas (que pueden acceder a ellos con

diferentes direcciones virtuales), existe la posibilidad de aliasing. Aliasing ocurre

cuando el mismo objeto tiene dos nombres en este caso, dos direcciones

virtuales para la misma página. Esta ambigüedad crea un problema porque una

palabra en una página de este tipo puede ser almacenado en caché en dos

lugares diferentes, cada uno correspondiente a diferentes direcciones virtuales.

Esta ambigüedad podría permitir que un programa para escribir los datos sin el

otro programa que se está consciente de que los datos habían cambiado.

Completamente prácticamente dirigidas cachés o bien introducen limitaciones

de diseño en la memoria caché y TLB para reducir los alias o requieren el

sistema operativo, y posiblemente el usuario, a tomar medidas para garantizar

que los alias no se produzcan.

Page 6: Integrating Virtual Memory, TLB, And Caches

aliasing. Una situación en la que se accede al mismo objeto por dos direcciones;

puede ocurrir en la memoria virtual cuando hay dos direcciones virtuales para

la misma página física.

Figura 7.24 asumió un 4 KB de tamaño de página, pero en realidad es 16KB. El

Intrinsity FastMATH utiliza una organización de este tipo de memoria del

sistema. El caché y TLB todavía se accede en paralelo, por lo que los 2 bits

superiores del índice de caché deben ser virtual. Por lo tanto, un máximo de

cuatro entradas de caché podría ser un alias a la misma dirección de memoria

física. A medida que el caché L2 en el chip incluye todas las entradas en las

cachés L1, L1 en una te lo pierdas comprueba los otros tres posibles

ubicaciones de caché en la memoria caché L2 para los alias. Si encuentra uno,

se vuelca desde las cachés para evitar los alias que se produzcan.

Un compromiso común entre estos dos puntos de diseño es cachés que están

prácticamente indexados (a veces utilizando sólo la parte compensado página

de la dirección, que es realmente una dirección física, ya que es sin traducir),

pero utilizan etiquetas físicas. Estos diseños, que son prácticamente indexados

pero etiquetados físicamente, intento de lograr las ventajas de rendimiento de

cachés prácticamente indexadas con las ventajas arquitectónicamente más

simples de una física dirigidas caché. Por ejemplo, no hay ningún problema alias

en este caso. El caché de datos L1 del Pentium 4 es un ejemplo al igual que la

intensidad si el tamaño de página fue 4 KB. Para llevar a cabo este truco, tiene

que haber una cuidadosa coordinación entre el tamaño mínimo de la página, el

tamaño de caché, y asociatividad.

Dirigida físicamente caché. Una caché que está dirigida por una dirección física.

Elaboración: El FastMATH TLB es un poco más complicado que en la figura 7.24.

MIPS incluye dos asignaciones de página física por número de página virtual, la

Page 7: Integrating Virtual Memory, TLB, And Caches

cartografía de esta manera un par incluso impar de números de páginas

virtuales en dos números de página físicos. Por lo tanto, la etiqueta es 1 poco

más estrecho desde cada entrada corresponde a dos páginas. El bit menos

significativo del número de página virtual selecciona entre los dos páginas

físicas. Hay trozos de mantenimiento de libros separados para cada página

física. Esta optimización se duplica la cantidad de memoria asignada por

entrada TLB. Como la elaboración en la página 530 explica, el campo de la

etiqueta en realidad incluye un campo ID de espacio de direcciones B-bit para

reducir el costo de cambios de contexto. Para apoyar a los tamaños de página

variables mencionadas en la página 537, también hay un campo de máscara de

32 bits que determina la línea divisoria entre la dirección de la página virtual y

el desplazamiento de página.

Protección Implementar con la memoria virtual

Una de las funciones más importantes para la memoria virtual es permitir el

intercambio de una sola memoria principal por múltiples procesos, mientras

que proporciona protección de memoria entre estos procesos y el sistema

operativo. El mecanismo de protección debe asegurarse de que, si bien varios

procesos están compartiendo la misma memoria principal, un proceso

renegado no puede escribir en el espacio de direcciones de otro proceso de

usuario o en el sistema operativo, ya sea con o sin intención. Por ejemplo, si el

programa que mantiene las calificaciones del estudiante se ejecuta en un

equipo al mismo tiempo que los programas de los estudiantes en el primer

curso de programación, nos no quiere que el programa errante de un

principiante a escribir sobre los grados de alguien. El poco acceso de escritura

en el TLB puede proteger una página se escriban. Sin este nivel de protección,

los virus informáticos serían aún más generalizados.

Interfaz Hardware Software

Page 8: Integrating Virtual Memory, TLB, And Caches

Modo de núcleo también llamado modo de supervisor. A modo de lo que indica

que un proceso en ejecución es un proceso del sistema operativo.

Para permitir que el sistema operativo para implementar la protección en el

sistema de memoria virtual, el hardware deba proporcionar al menos las tres

capacidades básicas se resumen a continuación.

1. soportar al menos dos modos que indican si el proceso en ejecución es un

proceso de usuario o un proceso del sistema operativo, llamado diversamente

un proceso supervisor, un proceso de kernel, o un proceso ejecutivo.

2. Proporcionar una porción del estado del procesador que un proceso de

usuario puede leer pero no escribir. Esto incluye el bit de modo de usuario /

supervisor, que dicta si el procesador está en el modo de usuario o supervisor,

el puntero de la tabla de páginas, y la TLB. Para decreto judicial e estos

elementos el sistema operativo utiliza instrucciones especiales que sólo están

disponibles en el modo de supervisor.

3. Proporcionar mecanismos por los que el procesador puede ir desde el modo

usuario al modo de supervisor, y viceversa. La primera dirección es tipica y

realizada por una excepción de la llamada al sistema, implementado como una

instrucción especial (syscall en el MIPS) que transfiere el control a una

ubicación específica en el espacio código de supervisor. Al igual que con

cualquier otra excepción, el contador de programa desde el punto de la

llamada al sistema se guarda en el PC excepción (EPC), y el procesador se coloca

en el modo supervisor. Para volver al modo de usuario de la excepción, utilice

Page 9: Integrating Virtual Memory, TLB, And Caches

el "retllrn de excepción" (ERET) la instrucción, que restablece a modo de

usuario y salta a la dirección en la EPE.

Sistema de llamada Una instrucción especial que transfiere el control de modo

de usuario a una ubicación específica en el espacio código de supervisor,

invocar el mecanismo de excepción en el proceso.

Mediante el uso de estos mecanismos y almacenar las tablas de páginas en el

espacio de direcciones del sistema operativo, el sistema operativo puede

cambiar las tablas de páginas, mientras que la prevención de un proceso de

usuario de cambiarlas, lo que garantiza que un proceso de usuario puede

acceder sólo el almacenamiento proporcionado a ella por el sistema operativo .

También queremos evitar que un proceso de la lectura de los datos de otro

proceso. Por ejemplo, no queremos un programa de estudiantes a leer las

notas mientras estaban en la memoria del procesador. Una vez que

comenzamos compartiendo memoria principal, debemos proporcionar la

capacidad de un proceso para proteger sus datos de la lectura y la escritura por

otro proceso; de lo contrario, el intercambio de la memoria principal será una

bendición a medias!

Recuerde que cada proceso tiene su propio espacio de direcciones virtuales.

Por lo tanto, si el sistema operativo mantiene las tablas de páginas organizadas

para que las páginas virtuales independientes asignan a desarticular páginas

físicas, un solo proceso no será capaz de acceder a los datos de los otros. Por

supuesto, esto también requiere que un proceso de usuario no podrá cambiar

la asignación de la tabla de páginas.El sistema operativo puede garantizar la

seguridad si se evita que el proceso de usuario de modificar sus propias tablas

Page 10: Integrating Virtual Memory, TLB, And Caches

de páginas. Sin embargo, el sistema operativo debe ser capaz de modificar las

tablas de páginas. Colocación de las tablas de páginas en el espacio de

direcciones protegido del sistema operativo satisface ambos requisitos.

Cuando los procesos quieren compartir información de una manera limitada, el

sistema operativo debe ayudar a ellos, ya que el acceso a la información de otro

proceso requiere cambiar la tabla de páginas del proceso de Acceso. El poco

acceso de escritura se puede utilizar para restringir el intercambio de

simplemente leer el compartir, y, como el resto de la tabla de páginas, este bit

sólo se puede cambiar por el sistema operativo. Para permitir que otro proceso,

digamos PI, para leer una página de propiedad de proceso P2, P2 pediría el

sistema operativo para crear una entrada de tabla de páginas para una página

virtual en el espacio de direcciones IP que apunta a la misma página física que

P2 quiere compartir. El sistema operativo puede utilizar el bit de protección

contra escritura para evitar la PI de escribir los datos, si ese era el deseo de P2.

Todos los bits que determinan los derechos de acceso de una página deben

incluirse tanto en la tabla de páginas y el TLB porque la tabla de páginas se

accede sólo en un fallo de TLB.

Elaboración: Cuando el sistema operativo decide cambiar de correr proceso Pi a

correr P2 proceso (llamado un cambio de contexto o el interruptor de proceso),

debe asegurarse de que P2 no puede tener acceso a las tablas de páginas de Pi

porque eso Compromiso protección. Si no hay TLB, es suficiente para cambiar

el registro de la tabla de páginas para que apunte a la tabla de páginas de P2

(En lugar de a Pi de); con un TLB, debemos borrar las entradas TLB que

pertenecen a Pi-tanto para proteger los datos de Pi y para forzar el TLB para

cargar las entradas para P2. Si el tipo de interruptor de proceso eran altos, esto

podría ser bastante ineficiente. Por ejemplo, P2 puede cargar sólo unas pocas

entradas TLB antes de que el sistema operativo cambió de nuevo a Pi.

Desafortunadamente, Pi sería entonces encontrar que todas sus entradas TLB

Page 11: Integrating Virtual Memory, TLB, And Caches

se ha ido y tendrían que pagar TLB se pierde por volver a cargarlos. Este

problema surge porque las direcciones virtuales utilizados por Pi y P2 son los

mismos, y hay que limpiar el TLB para evitar confundir estas direcciones.

Cambio de Contexto: Un cambio de estado interno del procesador para

permitir un proceso diferente a utilizar el procesador que incluye guardar el

estado necesario para rellenar con el proceso que se está ejecutando...

Una alternativa común es extender el espacio de direcciones virtuales mediante

la adición de un identificador de proceso o identificador de tarea. El Intrinsity

MATEMÁTICAS rápida tiene un ID B bits espacio de direcciones (AS ID) de

campo para este propósito. Este pequeño campo identifica el proceso

actualmente en ejecución; se mantiene en un registro cargado por el sistema

operativo cuando se conmuta procesos. El identificador de proceso se

concatena a la parte variable del TLB, por lo que se produce un golpe TLB sólo si

tanto el número de página y el partido identificador de proceso. Esta

combinación elimina la necesidad de limpiar la TLB. Salvo en raras ocasiones.

Problemas similares pueden ocurrir por una caché, ya que en un proceso de

cambiar la caché contendrá los datos del proceso en ejecución. Estos

problemas se presentan de diferentes maneras para dirigirse física y

virtualmente dirigido cachés, y una variedad de diferentes soluciones, como

identificadores de proceso, se utilizan para asegurar que un proceso obtiene

sus propios datos.

Manipulación TLB Misses y errores de página

Page 12: Integrating Virtual Memory, TLB, And Caches

Aunque la verdadera traducción de virtual para direcciones físicas con un TLB es

sencillo cuando lleguemos un éxito TLB, manejo TLB echa de menos y fallos de

página son más complejos. Un fallo TLB se produce cuando no hay ninguna

entrada en el TLB coincide con una dirección virtual. TLB fallo puede Indica te

una de dos posibilidades:

I. La página está presente en la memoria, y sólo necesitamos crear la

entrada TLB desaparecidos.

II. La página no está presente en la memoria, y tenemos que transferir el

control al sistema operativo para hacer frente a un fallo de página.

¿Cómo sabemos cuál de estas dos circunstancias se ha producido? \ Cuando

procesamos la señorita TLB, vamos a buscar una entrada de la tabla de páginas

para poner en el TLB. Si la entrada de la tabla de páginas a juego tiene un poco

la tapa va que se apaga, la página correspondiente no está en la memoria y

tenemos un error de página, en lugar de sólo un fallo de TLB. Si el bit de validez

está en, simplemente puede recuperar la ira entrada d des.

Un fallo de TLB puede ser manejado en el software o hardware, ya que sólo se

necesita una corta secuencia de operaciones para copiar una entrada de tabla

de página válido de memoria en la TLB. MIPS tradicionalmente manejado un

TLB se pierda en el software. Trae en la entrada de la tabla de páginas de la

memoria y vuelva ejecuta la instrucción que causó el fallo de TLB. Al volver a

ejecutarlo obtendrá un TLB golpeó. Si la entrada de la tabla de página indica

que la página no está en la memoria, esta vez va a obtener una excepción error

de página.

Manejo de un fallo TLB o un fallo de página requiere utilizando el mecanismo

de excepción para interrumpir el proceso activo, transfiriendo el control al

Page 13: Integrating Virtual Memory, TLB, And Caches

sistema operativo, y posteriormente reanudar la ejecución del proceso

interrumpido. Un error de página será reconocer algún momento durante el

ciclo de reloj se utiliza para acceder a la memoria. Para reiniciar la instrucción

después de que se manejó el error de página, el contador de programa de la

instrucción que causa d la falta de página debe ser salvado. Así como en los

capítulos 5 y 6, el contador de programa excepción (EPC) se utiliza para

mantener este valor.

Además, un TLB pierda o excepción error de página debe ser afirmado a finales

del mismo ciclo de reloj que se produce el acceso a la memoria, por lo que el

próximo ciclo de reloj comenzará el procesamiento de excepciones en vez de

continuar la ejecución normal de instrucciones. Si el error de página no se

reconoció en este ciclo de reloj, una instrucción de carga podría sobrescribir un

registro, y esto podría ser desastroso cuando tratamos de reiniciar la

instrucción. Por ejemplo, considere la instrucción 1w $ 1, 0 ($ 1): el equipo

debe ser capaz de prevenir la etapa de canalización de escritura que se

produzcan; de lo contrario, no podría reiniciar correctamente el ce instrucción,

el pecado el contenido de 1 dólar tendría abeja n destruidos. Una complicación

similar surge en las historias. Debemos evitar que la escritura en la memoria del

hecho de completar cuando hay un error de página; esto se suele hacer

mediante la afirmación de la línea de control de escritura a la memoria.

EPC 14where to restart after exception

Cause 13 Cause of exception

BadVAddr 8 Address that caused exception

Index 0 Location in TLB to be read or written

Random 1 Pseudorandom location in TLB

EntryLo 2 Phsical page address and flags

EntryHi 10 Virtual page address

Page 14: Integrating Virtual Memory, TLB, And Caches

Context 4 Page table address and page number

EPC 14 donde para reiniciar después de excepción

Cause 13 Causa de la excepción

BadVAddr 8 Dirección que causó la excepción

Index 0 Ubicación en TLB para leer o escribir

Random 1 Ubicación Pseudo Random en TLB

EntryLo 2 Dirección de la página Física y banderas

EntryHi 10 Dirección de la página virtual

Context 4Página dirección de la tabla y el número de

la página

FIGURA 7.27 MIPS controlan registros. Estos se consideran en coprocesador 0,

y por lo tanto se leen utilizando MFCC y escriben utilizando MTCO.

Hardware Software Interface