En un microprocesador con gestión de TLB de hardware (por ejemplo, un Intel x86-64) si se produce un error de TLB y el procesador está caminando por la tabla de páginas, ¿estos accesos de memoria (fuera del chip) pasan por la jerarquía de caché (L1, L2, etc.) )?
12
Respuestas:
Sí, por lo que puedo decir, en los procesadores Intel x86-64, cuando ocurre una falla TLB y el procesador está caminando en la tabla de páginas, esos accesos de memoria fuera del chip pasan por la jerarquía de caché.
Todavía estoy un poco confuso con algunos detalles, y espero que alguna otra respuesta los complete, ¿no hay un manual de Intel o AMD que describa el recorrido de la página con detalles insoportables? Entiendo que:
El diagrama en la página 2 de Thomas W. Barr, Alan L. Cox, Scott Rixner. "Almacenamiento en caché de traducción: Saltar, no caminar (la tabla de páginas)" que dibuja una línea entre "Entradas almacenadas por caché MMU" y "entradas almacenadas por caché de datos L2". (Este puede ser un documento útil para las personas que diseñan nuevas CPU , que es totalmente sobre el tema del "diseño electrónico").
Stephane Eranian y David Mosberger. "Memoria virtual en el kernel de Linux IA-64" y Ulrich Drepper. "Lo que todo programador debe saber sobre la memoria" (Este puede ser un documento útil para las personas que escriben sistemas operativos que se ocupan de la tabla de páginas IA-64, que está un poco fuera de tema para la disfunción eréctil, tal vez Stack Overflow con el "funcionamiento- la "etiqueta del sistema" o la etiqueta "osdev" o el wiki de OSDev.org sería un mejor lugar para ese tema).
Tabla A-10 en la página 533 de Intel. El "Manual del desarrollador de software de las arquitecturas Intel® 64 e IA-32" "PAGE_WALKS.CYCLES ... puede indicar si la mayoría de los recorridos de página están satisfechos por los cachés o si se produce una pérdida de caché L2".
fuente
invlpg
invalidar el almacenamiento en caché de TLB para un determinado controlador de virt. Si la página de HW no encuentra una entrada para esa dirección virtual, o los permisos de la entrada no permiten el acceso, obtendrá una#PF
excepción. El sistema operativo maneja eso actualizando la tabla de páginas (posiblemente después de paginar los datos del disco, o haciendo una copia en escritura), y luego reanuda para que la carga / almacenamiento con fallas se vuelva a ejecutar y la caminata HW tenga éxito.Tiendo a estar de acuerdo en que esto pertenece a un intercambio de pila de arquitectura de computadora, no a un intercambio de pila de electrónica, pero dado que esto está aquí:
@davidcary es correcto.
Algo de historia:
Los recorridos de la tabla de páginas Intel x86 NO se almacenaron en caché hasta P5, también conocido como Pentium. Más precisamente, los accesos de memoria de la tabla de la página no se almacenaron en caché, omitieron el caché. Como la mayoría de las máquinas hasta ese momento eran de escritura, recibieron valores consistentes con el caché. Pero no husmearon los escondites.
P6, también conocido como Pentium Pro, y AFAIK, todos los pasos de la tabla de la página de procesadores posteriores pudieron acceder al caché y usar un valor extraído del caché. Por lo tanto, trabajaron con cachés de reescritura. (Por supuesto, podría colocar las tablas de páginas en la memoria no almacenable en caché, definida, por ejemplo, por los MTRR. Pero eso es una gran pérdida de rendimiento, aunque puede ser útil para depurar sistemas operativos).
Por cierto, este "acceso a la memoria de recorrido de la tabla de páginas puede acceder a los cachés de datos" es independiente de "las entradas de la tabla de páginas se pueden almacenar (almacenar en caché) en un TLB Ttranslation Lookaside Buffer". En algunas máquinas, el TLB se denomina "caché de traducción".
Otro problema relacionado es que los nodos interiores de las tablas de páginas pueden almacenarse en caché en estructuras de datos aún más similares a TLB, por ejemplo, el caché PDE.
Una diferencia clave: la memoria caché de datos es coherente y se espía. Pero los cachés TLB y PDE no son indagados, es decir, no son coherentes. La conclusión es que, dado que las tablas de páginas pueden almacenarse en caché en TLB no coherentes y cachés PDE, etc., el software debe eliminar explícitamente las entradas individuales o los grupos masivos (como el TLB completo), cuando las entradas de la tabla de páginas pueden haber sido tan en caché se cambian. Al menos cuando se cambia de forma "peligrosa", pasando de RW-> R-> I, o cambiando de dirección.
Creo que es justo decir que cada vez que se agrega un nuevo tipo de almacenamiento en caché no coherente similar a TLB, algunos sistemas operativos se rompen, porque tenía suposiciones implícitas de que esto no se estaba haciendo.
fuente