No estoy entendiendo bien la solución del examen y me gustaría que me expliquen un poco el funcionamiento de la TLB con páginas multinivel.
En la letra se accede a un array que ocupa 10000 byte contiguos y por ende 3 páginas contiguas en memoria.
Sean las direcciones que se acceden de ejemplo las siguientes : p1 0 0 …. p1 0 4096-1
P1 1 0 …. p1 1 4096-1
P1 2 0 …. P1 2 1808-1
Yo pensaba que al resolver las direcciones se tomaba p1 como índice de la tabla de páginas del primer nivel (un acceso a memoria) y se pasaba a obtener el frame en dónde esta la tabla de páginas de segundo nivel y luego se tomaba el índice de la tabla de segundo nivel y se obtenía el frame(otro acceso a memoria) y se actualizaba la TLB agregando un tag, en el caso de la primera dirección del array la P1 0 0 un tag con P1 0 f1, dónde f1 es el frame que esta en el índice 0 de la tabla de segundo nivel.
Luego se pasaría a la siguiente dirección la p1 0 1 , la que produce un TLB hit y se realiza solo un acceso a memoria.Lo mismo para todo el rango de direcciones de p1 0 2 al p1 0 4096-1.Solo generarían un acceso a memoria debido a cache hits y la TLB quedaría así:
Generándose un total de 2 + 4096 accesos. Si repetimos esto para las dos otras páginas se darían en total 2 + 4096 + 2 + 4096 + 2 + 1808 accesos y la TLB quedaría:
Pero al mirar la solución esto no es correcto y veo que ponen lo siguiente:
Dado que las páginas son de 4096 bytes y queremos acceder a 10000 bytes contiguos, los mismos serán almacenados en 3 páginas contiguas. De esa forma, se tiene un acceso para acceder a la página que contiene la tabla de primer nivel y leer la entrada que corresponde, esta entrada queda almacenado en la TLB.
No entiendo bien esta parte, que se almacena en la TLB un entrada de qué tipo, tendría que asociar p1 al frame fx, pero como quedaría la entrada de la TLB?
La solución es 1 + 1 + 4096 + 1 + 4096 + 1 + 1808 = 10004