En un microprocesador con hardware TLB de gestión (es decir, una Intel x86-64) si un TLB miss se produce y el procesador es caminar en la tabla de la página, son estos (off-chip) accesos a la memoria que va a través de la jerarquía de caché (L1,L2,etc.)?
Respuestas
¿Demasiados anuncios?Sí, como lo que yo puedo decir, en Intel x86-64 procesadores, cuando un TLB miss se produce y el procesador es caminar en la tabla de la página, de los de fuera del chip de memoria de los accesos de ir a través de la caché de la jerarquía.
Todavía estoy un poco difusa en un par de detalles, y espero que alguna otra respuesta llenará en -- ¿no hay un procesador Intel o AMD manual que describe la página de pie con doloroso detalle? Mi entendimiento es que:
- La dirección virtual en algunas registro de dirección es la primera entrega a un rápido TLB para ser convertida a una dirección física -- la dirección en la PC se entrega a la L1 ITLB, la dirección en cualquier otro registro que se entrega a la L1 DTLB.
- Si el primero de búsqueda de falla, hay otro nivel de más lentas, de mayor TLB que se intenta. (Es este TLB L2 dividido en un ITLB y un DTLB también, o es un unificada TLB caché? ¿Hay más TLB niveles -- L3 ? L4 ?)
- Si el TLB de búsqueda completamente falla, y las arquitecturas x86 y x86-64 VHPT walker está deshabilitada, la CPU las señales de un TLB miss culpa, que es interceptado por el núcleo del sistema operativo. Mi entendimiento es que prácticamente todos los no-CPUs x86 hacer la misma cosa -- manejar errores TLB completamente en software. Si está habilitado, x86 y x86-64 procesadores tienen asistida por hardware VHPT tabla de walker que se encarga de los próximos pasos. (Hacer las arquitecturas x86 y x86-64 chips tienen un poco de lo que deshabilita completamente VHPT, o hay cantidad de bits que puede permitir VHPT para algunos rangos de direcciones y desactivar VHPT para otros rangos de direcciones? ¿Dónde están los bits que se encuentran?)
- si el TLB de búsqueda completamente falla, el original (probablemente de modo de usuario) de direcciones virtuales V1 es convertida a V2, la dirección virtual de la página de entrada de la tabla de PTE que contiene el número de página física para V1.
- Debido a que V2 es de nuevo una dirección virtual, la CPU pasa a través de la normal virtual-para-traducción de dirección física, salvo que se salta L1 y va derecho a la L2.
- El hardware busca de direcciones virtuales V2 en el TLB en paralelo con la recuperación que el PTE de la (prácticamente reajustables) de caché L2.
- Porque la V2 no es la dirección de una instrucción, no ir a través de la L1 caché de instrucciones; y porque la V2 no es la dirección de la normal de datos de usuario, no va a través de la L1 caché de datos. V2 es alimentado inicialmente en la L2 caché unificada (unified instrucciones+datos+PTE de la caché). Ver el "caché ejemplo de jerarquía".
- Si la memoria caché L2 (o L3 o cualquier otro prácticamente indexados en caché) contiene el PTE, entonces el VHPT recupera el PTE de la memoria cache e instala el PTE de V1 en el TLB, y la dirección física en la que el PTE se utiliza para traducir el original de direcciones virtuales V1 en la física de la dirección de memoria RAM, finalmente, a que la obtención de los datos o instrucciones completamente en hardware sin ningún tipo de ayuda desde el sistema operativo.
- Si todos los niveles de prácticamente indexados cache error, pero esta segunda TLB de búsqueda tiene éxito por V2, entonces la VHPT recupera el PTE de física-indexado de caché o de la memoria principal, se instala el PTE de V1 en el TLB, y la dirección física en la que el PTE se utiliza para traducir el original de direcciones virtuales V1 en la física de la dirección de memoria RAM, finalmente, a que la obtención de los datos o instrucciones completamente en hardware sin ningún tipo de ayuda desde el sistema operativo.
- Si esta segunda TLB búsqueda falla, el hardware VHPT walker da con un VHPT TRADUCCIÓN CULPA.
- Cuando un VHPT TRADUCCIÓN se produce el error de la CPU trampas para el sistema operativo. El sistema operativo tiene que averiguar lo que salió mal y arreglar las cosas:
- (a) tal vez la página que contiene V2 es actualmente swapped out en el disco, el sistema operativo lee en la memoria RAM y se re-inicia el error de la instrucción, o
- (b) tal vez un buggy programa intenta leer o escribir o ejecutar una ubicación no válida, y el sistema operativo termina el proceso, o
- (c) una variedad de trucos que OS hacen los escritores para utilizar este mecanismo para atrapar a los distintos tipos de acceso, la carga de la página que contiene V1 cual puede ser intercambiado-al disco; varias trampas utilizadas para la depuración de programas nuevos; para simular "W^X" en la Cpu que no apoyan directamente; para apoyar copy-on-write, etc.
El diagrama en la página 2 de Thomas W. Barr, Alan L. Cox, Scott Rixner. "La traducción de Caché: Saltar, no a Pie (la Tabla de la Página)" que dibuja una línea entre "las Entradas almacenadas por la MMU caché" y "entradas almacenadas por L2 caché de datos". (Esto puede ser un útil papel para la gente de diseño de nuevos CPUs, lo cual está totalmente en el tema de "diseño de la Electrónica").
Stephane Eranian y David Mosberger. "La Memoria Virtual en el IA-64 Kernel de Linux" y Ulrich Drepper. "Lo que todo programador debería saber acerca de la memoria" (Esto puede ser un útil papel para la gente de la escritura de los sistemas operativos que lidiar con el IA-64 de la tabla de páginas, que es un poco off-topic para ED-tal vez Stack Overflow con el "sistema operativo" de la etiquetao el "osdev" tago el OSDev.org wiki sería un lugar mejor para ese tema ).
Tabla a-10 en la Página 533 de Intel. "Intel 64 e IA-32 Arquitecturas Manual para Desarrolladores de Software" "PAGE_WALKS.Los CICLOS ... puede sugerencia si la mayoría de la página-paseos son satisfechos por las cachés o causar una caché L2 de perderse."
Tiendo a estar de acuerdo que esto pertenece en un equipo de arquitectura de stackexchange, no de la electrónica stackexchange, pero ya que está aquí:
@davidcary es correcta.
Un poco de historia:
Intel x86 de la tabla de páginas paseos NO estaban en caché todo el camino hasta P5, también conocido como el Pentium. Más precisamente, la tabla de la página de pie accesos a la memoria no estaban en caché, omite la memoria caché. Dado que la mayoría de las máquinas que hasta ese momento eran de escritura, que los valores recibidos coherente con la memoria caché. Pero no snoop los cachés.
P6, también conocido como el Pentium Pro, y AFAIK todos los siguientes procesadores de la tabla de páginas paseos podían acceder a la caché, y el uso de un valor extrae de la memoria caché. Por lo tanto, se trabajó con la escritura de la caché. (Usted podría, por supuesto, el lugar de las tablas de la página en almacenable de memoria, se define, por ejemplo, por la MTRRs. Pero que es una gran pérdida de rendimiento, aunque puede ser útil para la depuración de los sistemas operativos.)
Por cierto, esta "tabla de página pie de accesos a la memoria puede tener acceso a la memoria caché de datos" es independiente de "entradas de tabla de páginas puede ser almacenada (en caché) en un TLB Ttranslation Búfer de direcciones)." En algunas máquinas el TLB es llamado un "Caché de Traducción".
Otro problema relacionado es que los nodos interiores de las tablas de la página pueden ser almacenados en memoria caché en aún más TLB-como datastructures, por ejemplo, los inhibidores de la PDE-caché.
Una diferencia clave: la caché de datos es coherente, y snooped. Pero la TLB y de la PDE cachés no snooped, es decir, no son coherentes. La conclusión es que, desde las tablas de la página pueden ser almacenados en memoria caché en noncoherent TLBs y de la PDE escondites, etc., el software debe explícitamente a ras de cualquiera de las entradas individuales o masivas de los grupos (por ejemplo, la totalidad de la TLB), cuando las entradas de tabla de página que puede haber sido tan caché se cambian. Al menos cuando se cambia en un "peligroso", que va desde RW->R->I, o cambiando de dirección.
Creo que es justo decir que cada vez que un nuevo tipo f no coherentes TLB-como el almacenamiento en caché se ha añadido, a algunos OS ha roto, porque tenía supuestos implícitos que este estaba llevando a cabo.