Almacenamiento en caché de tablas de páginas

La paginación es un esquema de administración de memoria que permite que el espacio de direcciones físicas de un proceso no sea contiguo. La idea básica de la paginación es dividir la memoria física en bloques de tamaño fijo llamados marcos y la memoria lógica en bloques del mismo tamaño llamados páginas . Mientras se ejecuta el proceso, las páginas requeridas de ese proceso se cargan en los marcos disponibles desde su fuente, que es un disco o cualquier dispositivo de almacenamiento de respaldo. 

La CPU genera una dirección lógica para el proceso que se divide en número de página y desplazamiento de página . La tabla de páginas contiene la dirección base de cada página en la memoria física. La dirección base combinada con el desplazamiento de página define la dirección de memoria física. El número de página se utiliza como índice en una tabla de páginas. La tabla de páginas se mantiene en la memoria principal y un registro base de tabla de páginas (PTBR) apunta a la tabla de páginas. 

Para acceder a una ubicación x, busque la entrada en la tabla de páginas, usando el valor en el PTBR compensado por el número de página para x. La entrada de la tabla de páginas proporciona el número de marco, que se combina con el desplazamiento de página para producir la dirección real. Entonces podemos acceder a la ubicación de memoria requerida. Por lo tanto, para acceder a una ubicación x, se requieren dos accesos a la memoria, lo que reduce la velocidad de la operación. 

Una memoria caché de hardware de búsqueda especial, pequeña y rápida llamada Translation Lookaside Buffer (TLB) se utiliza para almacenar en caché una pequeña cantidad de entradas de la tabla de páginas. Cada entrada de TLB consta de dos partes: clave (o etiqueta) y valor, aquí la clave es el número de página y el valor es el número de cuadro. Todas las entradas de TLB se comparan simultáneamente con el número de página, por lo que la búsqueda es rápida. Una TLB normalmente contiene de 32 a 1024 entradas. TLB es un caché de hardware y las computadoras modernas lo implementan como parte de la canalización de instrucciones, por lo que no genera una sobrecarga en la búsqueda de TLB. 

Si un número de página no se encuentra en TLB, se llama como una falta de TLB , el número de marco correspondiente se toma de la tabla de páginas y se actualiza TLB. Ahora, si TLB ya está lleno, se debe reemplazar una entrada de TLB con esta nueva entrada. Se utilizan varias políticas para dicho reemplazo, como LRU, LRU, round-robin o reemplazo aleatorio. 

La CPU de hoy proporciona TLB de varios niveles. En caso de que se pierda el TLB de L1, se busca en el TLB de L2 y luego en la tabla de páginas si el TLB de L2 también es un error . y el porcentaje de veces que no se encuentra en la TLB se denomina miss ratio (tasa de fallos) . Los sistemas modernos tienen una tasa de fallas de TLB de 0.1–1%, lo que reduce en gran medida la sobrecarga de acceso a las tablas de páginas. 

Algunos TLB también almacenan identificadores de espacio de direcciones (ASIDS) en cada entrada de TLB. Identifica de manera única cada proceso y cuando se realiza la traducción de la dirección lógica a la dirección física, solo se verifican las entradas de TLB que pertenecen a ese proceso, si no se encuentra dicha entrada, se considera TLB perdida. Esto permite que TLB tenga entradas para varios procesos simultáneamente. Si TLB no permite ASIDS, entonces cada vez que ocurre un cambio de contexto (cambiar el proceso de ejecución de un proceso a otro), el TLB debe vaciarse o borrarse para garantizar que la próxima ejecución proceso no utilice la información de traducción del proceso anterior. 

Cada entrada de TLB tiene asociado un bit válido/no válido que indica si la entrada de TLB es válida o no. Esto es particularmente útil cuando se vacía TLB, no se elimina la entrada de TLB, solo se invalidan todas las entradas de TLB. Por tanto, antes de utilizar la entrada TLB para la traducción, se comprueba si la entrada es válida o no. Además, en caso de que se pierda TLB al actualizar una entrada de TLB, las entradas no válidas se actualizan primero. 

Hay varios otros bits en una entrada TLB como bit global (G) que se usa para páginas que se comparten globalmente entre procesos, varios bits para ASID (ignorado para páginas compartidas), bit sucio (para determinar si la página debe escribirse ), etc. Todos estos bits se utilizan en una entrada TLB general. Sin embargo, el tamaño real de la entrada, varios bits de protección en la entrada de TLB, el número de niveles en TLB, el número de entradas de TLB en cada nivel, etc., varía de una arquitectura a otra.
 

Publicación traducida automáticamente

Artículo escrito por zarenidhi5 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *