2010-09-20 14 views
51

¿Qué es un derribo de TLB en SMPs?¿Qué es el derribo de TLB?

No puedo encontrar mucha información sobre este concepto. Cualquier buen ejemplo sería muy apreciado.

+1

¿Es esta una cuestión de programación? – Gabe

+0

@Gabe, supongo que es una pregunta de programación si @mousey está tratando de implementar un kernel. Alguna aclaración de su parte sería muy apreciada. –

+2

sí, estoy tratando de implementar un kernel. – mousey

Respuesta

49

Un ejemplo rápido:

  1. Usted tiene algo de memoria compartida por todos los procesadores del sistema.

  2. Uno de los procesadores restringe el acceso a una página de esa memoria compartida.

  3. Ahora, todos los procesadores tienen que purgar sus TLB, de modo que aquellos a los que se les permitió acceder a esa página ya no puedan hacerlo.

Las acciones de un procesador que causan las TLB a ser eliminados en otros procesadores es lo que se llama un derribo TLB.

86

A TLB (Translation Lookaside Buffer) es un caché de las traducciones de direcciones de memoria virtual a direcciones de memoria física. Cuando un procesador cambia el mapeo virtual a físico de una dirección, necesita decirle a los otros procesadores que invaliden ese mapeo en sus cachés.

Ese proceso se denomina "derribo de TLB".

+11

+1 para expandir TLB – pmg

3

Creo que la pregunta exige una respuesta más detallada.

tabla página: una estructura de datos que almacena la correspondencia entre la memoria virtual (software) y la memoria física (hardware) sin embargo

, la tabla de páginas puede ser bastante grande y atravesando la tabla de páginas (para encontrar la dirección física correspondiente de la dirección virtual) puede ser un proceso lento. Para que este proceso sea más rápido, se utiliza un caché llamado TLB (Translation Lookaside Buffer), que almacena las direcciones de memoria virtual a las que se accedió recientemente.

Como se puede ver claramente, las entradas de TLB deben estar sincronizadas con sus respectivas entradas de la tabla de páginas en todo momento. Ahora los TLB son un caché por núcleo, es decir. cada núcleo tiene su propio TLB.

Cada vez que una entrada de tabla de página se modifica por cualquiera de los núcleos, esa entrada TLB particular se invalida en todos los núcleos. Este proceso se llama derribo de TLB.

TLB lavado puede ser provocada por diversas operaciones de memoria virtual que cambian las entradas de la tabla de páginas como la migración página, liberando páginas etc.