Next: Protection Up: Support des systèmes Previous: Segmentation et traduction

Cache de traduction d'adresses

Les mécanismes de traduction d'adresse décrits précédemment sont très lourds. Pour pouvoir atteindre des performances correctes, un cache de traduction d'adresses, généralement appelé le TLB (Translation Lookaside Buffer), est utilisé. Suivant le même principe que les caches étudiés précédemment, le TLB est consulté à chaque fois que le microprocesseur produit une adresse virtuelle et permet, en cas de succès, de déterminer immédiatement l'adresse physique sans avoir à traverser la logique complexe de traduction décrite plus haut.

MIPS R10000

Le mécanisme de traduction d'adresses du MIPS R10000 traduit les adresses virtuelles sur 44 bits en adresses physiques sur 40 bits. Le MIPS R10000 met en oeuvre un TLB de 64 entrées entièrement associatif (Joint TLB, JTLB) et un sous-TLB pour les instructions (Instruction TLB, ITLB) de 8 entrées (en cas de défaut sur le ITLB, celui-ci est rechargé à partir du JTLB). Les entrées du TLB contiennent les adresses physiques de deux pages virtuelles consécutives. Chaque entrée des TLBs peut sélectionner une taille de page allant de 4 Koctets à 16 Moctets, par puissance de quatre. La gestion du JTLB est faite par le système d'exploitation : en cas de défaut sur le JTLB, une exception est générée, le remplacement est fait par logiciel.

UltraSPARC

L'UltraSPARC met en oeuvre un TLB pour les données et un TLB pour les instructions. Ces TLB ont chacun 64 entrées et sont entièrement associatifs. Ils peuvent traduire une adresse à chaque cycle d'horloge. Les TLBs supportent de plus l'opération Demap permettant d'invalider une entrée. Il est possible de forcer le maintien d'une ou plusieurs pages dans un TLB à travers l'utilisation du bit locked.

La gestion du TLB est faite par matériel. L'UltraSPARC utilise un algorithme de remplacement à un bit de type pseudo-LRU appelé Not Last Used (NLU). Cet algorithme est similaire à celui du SuperSPARC [2]. À chaque entrée du TLB, on associe les bits valid, used et lock. L'algorithme de remplacement suivant est utilisé :

  1. la première entrée invalide est remplacée, s'il en existe ;
  2. sinon, la première entrée inutilisée et ayant le bit lock positionné à zéro est remplacée. S'il n'y en a pas :
  3. tous les bits used sont remis à zéro et on recommence l'étape 2.

Remarque :

L'UltraSPARC implémente un mécanisme matériel permettant de traiter rapidement les défauts de TLB. Ce mécanisme s'appuie sur un cache de tables de pages (appelé Translation Storage Buffer (TSB)) de 64 Koctets géré par logiciel et sur des mécanismes matériels permettant de calculer rapidement l'entrée possible de la page dans ce TSB.

PentiumPro

Le PentiumPro utilise deux TLBs distincts pour les instructions et les données : l'un de 64 entrées pour les données, et l'autre de 32 entrées pour les instructions. Les deux TLBs sont organisés par ensembles à quatre voies et sont gérés par matériel. Le système d'exploitation peut invalider une entrée de TLB.



Next: Protection Up: Support des systèmes Previous: Segmentation et traduction


flloansi@IRISA.irisa.fr
Tue Jun 4 09:57:56 MET DST 1996