TLB (Translation Lookaside Buffer)
Comme nous l’avons vu au chapitre précédent, la table de page est stockée dans la mémoire DRAM des systèmes modernes. Le problème avec le DRAM c’est qu’elle n’est pas particulièrement rapide et si, pour chaque accès mémoire, le MMU doit aller lire une entrée dans la table de page, les performances vont en souffrir. Et avec les tables de pages à plusieurs niveaux, le problème est encore plus important, car il ne faut pas lire une entrée, mais plusieurs.
Pour résoudre ce problème, le MMU utilise une mémoire cache de type SRAM pour stocker les dernières entrées de la table de pages. Dans le contexte de la mémoire virtuelle, cette mémoire cache est appelée TLB (Translation Lookaside Buffer). La figure suivante illustre l’emplacement du TLB dans le MMU.
Les adresses virtuelles émises par le CPU sont traitées en parallèle par le TLB et par la table de pages en RAM. Si le TLB contient l’entrée correspondante, alors le MMU utilise le cadre de page physique indiqué par le TLB et court-circuite l’utilisation de la table de pages. Si, par contre, le TLB ne contient pas l’entrée, le MMU doit utilise la table de pages en RAM pour trouver le cadre de page physique correspondant. Le MMU met alors à jour le TLB avec l’entrée correspondante pour accélérer les prochains accès à cette page.
Sur les Cortex-A, le TLB est un cache de type fully associative et il contient 64 entrées (32 pour les instructions et 32 pour les données). Ça peut sembler peu, mais en pratique, c’est suffisant pour couvrir la plupart des cas d’utilisation.