integrating virtual memory, tlb, and caches
DESCRIPTION
memoria virtualTRANSCRIPT
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
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
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.
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
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.
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
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
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
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
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
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
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
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
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