Quel problème la coloration du cache résout-elle?

Daprès ce que jai lu à partir de deux sources différentes, la coloration du cache est (était?) nécessaire pour:

  • Contrer le problème daliasing: Empêcher deux adresses virtuelles différentes avec la même adresse physique de mapper vers différents ensembles de cache . (Selon une Réponse CS Stack Exchange )

  • Exploiter la propriété de localité spatiale de la mémoire virtuelle : en garantissant que deux blocs adjacents de mémoire virtuelle (pas forcément adjacents en mémoire physique), ne correspondent pas au même index de cache. (Daprès Wikipedia )

Il me semble que ce sont des définitions fondamentalement différentes, et sans comprendre le motivation pour la coloration du cache, je narrive pas à comprendre le mécanisme de sélection du nombre de couleurs requises. Sont-elles vraiment une seule et même chose?

Si la localité spatiale de la mémoire virtuelle est la principale motivation, la coloration du cache est vraiment nécessaire pour les caches VIPT, où lindex du cache est dérivé de la mémoire virtuelle pour commencer? Ou la coloration du cache est-elle simplement utilisée dans les caches VIPT pour contourner laliasing?

Réponse

Éviter les alias et éviter les conflits de cache excessifs sont des raisons valables dutiliser la coloration de page. Exiger la coloration de page pour éviter les alias est impopulaire car cela impose une contrainte obligatoire à lallocation de page. les processeurs généraux et modernes non intégrés ne nécessitent pas de coloration de page pour éviter les alias.

Éviter les problèmes dalias dans le matériel i n augmente la complexité du matériel, de sorte que les anciens processeurs (et peut-être certains processeurs embarqués plus récents) ont choisi de placer la charge sur les logiciels. Le matériel peut éviter les problèmes dalias dans un cache avec plus de bits dindex + de décalage que de bits dans le décalage de page en (par exemple):

  • en vérifiant les ensembles alternatifs sur un cache manquant (comme le fait AMD « s Athlon; lorsquun alias a été détecté, le bloc a été déplacé vers lindex virtuel actuel)
  • y compris les bits dadresse virtuelle utilisés pour lindexation de L1 dans un (tag) inclus L2 (sur un échec L1 et un hit L2, si les bits dadresse virtuelle correspondent aux bits correspondants pour la requête, aucune action nest nécessaire; si les bits ne correspondent pas, lensemble approprié à sonder est connu [si le bloc est également dans L1 pourrait également être stocké dans les balises L2 pour réduire la cohérence surcharge, donc certaines sondes pourraient être évitées])
  • en utilisant la prédiction densemble pour deviner les bits dadresse physique supplémentaires utilisés pour lindexation (une erreur de prédiction serait découverte après laccès au TLB et corrigée)
  • en utilisant la traduction inverse (physique vers virtuelle) sur un cache manque pour trouver des alias possibles (je pense quune implémentation PA-RISC a utilisé la translati inverse on pour cohérence )

Lutilisation de la coloration de page pour réduire les conflits (pour les caches avec modulo simple une puissance de deux indexation) est moins impopulaire car la coloration de page nest pas obligatoire pour lexactitude. Si une couleur particulière devient rare, une page peut être mal colorée avec seulement une réduction possible des performances. Cette justification de la coloration de page signifie également que le nombre de bits colorés est moins contraint. Lidéal (moins pratique) peut être de faire correspondre tous les bits dindex physiques du cache de dernier niveau avec les bits dadresse virtuelle correspondants, mais même la coloration de seulement quatre bits peut considérablement réduire les problèmes de conflit.

cette coloration pour éviter les alias na pas besoin de faire correspondre les bits dadresse virtuelle avec les bits dadresse physique. Tant que tous les alias potentiels partagent les mêmes bits dadresse virtuelle utilisés pour lindexation, les problèmes dalias sont évités. Cependant, la correspondance des bits dadresse physique et virtuelle peut être pratique (et fournir un conflit prévisible dans les niveaux de cache adressés physiquement).

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *