2012-05-04 9 views
19

¿Podría alguien explicar la diferencia entre un error de TLB (Translation lookaside buffer) y un error de caché?TLB se pierde frente al caché falla?

Creo que descubrí que TLB se refiere a algún tipo de dirección de memoria virtual, pero no estaba demasiado claro qué significaba realmente.

Entiendo que se produce un error de caché cuando se carga un bloque de memoria (el tamaño de una línea de caché) en la caché (L3?) Y si una dirección requerida no se mantiene dentro de las líneas de caché actuales. .

+1

Comprender la búsqueda http://stackoverflow.com/a/18431262/895245, y ver la sección TLB. –

Respuesta

26

Bueno, todos los sistemas operativos modernos usan algo llamado memoria virtual. Cada dirección generada por la CPU es virtual. Hay tablas de página que asignan tales direcciones virtuales a direcciones físicas. Y un TLB es solo un caché de entradas de la tabla de la página.

Por otro lado, L1, L2, L3 almacena en caché el contenido de la memoria principal del caché.

Se produce un error de TLB cuando la asignación de virtual memory address => physical memory address para una dirección virtual solicitada por la CPU no está en TLB. Luego, esa entrada debe buscarse en la tabla de páginas en el TLB.

Una falta de caché se produce cuando la CPU requiere algo que no está en la memoria caché. Los datos luego se buscan en la memoria primaria (RAM). Si no está allí, los datos deben obtenerse de la memoria secundaria (disco duro).

+0

¿Cuál es el propósito de la dirección de memoria virtual y a qué se refiere en realidad, sigue siendo la memoria principal (RAM)? – mezamorphic

+5

Bueno, las CPU anteriores de 32 bits se usaban para generar direcciones de 32 bits ~ 4 GB de memoria direccionable. Pero la cantidad de RAM a menudo era menos de 4 GB. Ahora, si tiene 1 GB de RAM, no puede ejecutar un programa que necesite más de 1 GB de memoria direccionable. Entonces, ¿por qué no engañar al programa haciéndole creer que tiene 4 GB de RAM? Donde solo una fracción de los datos del programa reside en la RAM y el resto en el disco duro. Eso es lo que hace la memoria virtual. Puede leerlo al respecto en este [artículo de Wikipedia] (http://en.wikipedia.org/wiki/Virtual_memory). Las CPU actuales de 64 bits también usan memoria virtual. Solo la longitud de la dirección virtual ahora es de 48 bits. – Hindol

2

La siguiente secuencia después de cargar la primera dirección de instrucción (es decir, la dirección virtual) en la PC hace que el concepto de falta de TLB y la falta de la memoria caché sean muy claros.

La primera instrucción • Acceso a la primera instrucción

  • aprobar el PC a partir
  • acceso iTLBwith la VPN extraído de PC: iTLBmiss
  • manejador
  • invocación iTLBmiss dirección
  • Calcular PTE
  • Si los archivos PTE se almacenan en caché en los datos L1 y en los cachés L2, búsquelos con la dirección PTE: también extrañará
  • tabla de páginas
  • acceso en la memoria principal: PTE no es válido: error de página
  • Invocar el manejador error de página
  • Asignar marco de página, lee la página desde el disco, actualizar PTE, PTE carga en ITLB, reinicie ir a buscar • Ahora usted tiene la dirección física

  • acceso Icaché: olvida

  • Enviar solicitud de recarga a niveles más altos: se olvida de todas partes
  • Enviar solicitud al controlador de memoria (puente norte)
  • acceso a la memoria principal
  • Leer línea de caché
  • Recarga todos los niveles de caché como la línea de caché devuelve al procesador
  • Extracto de la instrucción apropiada de la línea de caché con el bloque compensado • Esta es la latencia más larga posible en se mencionan un acceso de instrucciones/datos

fuente https://software.intel.com/en-us/articles/recap-virtual-memory-and-cache

0

Como el cómo de tanto los procesos. En la nota de rendimiento, una falla de caché no necesariamente paraliza la CPU. Se puede tolerar un pequeño número de errores de caché utilizando técnicas algorítmicas de precarga. Sin embargo, una falla TLB hace que la CPU se bloquee hasta que el TLB se haya actualizado con la nueva dirección. En otras palabras, la captación previa puede enmascarar una falla de caché pero no una falla de TLB.

+0

Esto no es estrictamente cierto. Con la ejecución fuera de servicio y el recorrido de la tabla de la página de hardware (x86, ARM, alguna versión MIPS 5, etc.), una falla TLB puede no detener el procesador de inmediato. Además, los documentos académicos han propuesto la captación previa de hardware para los TLB. También sería posible que un procesador precargue entradas de TLB con una instrucción ordinaria de captación previa de memoria. –

Cuestiones relacionadas