Hiérarchie mémoire
Lorsqu’une ligne d’un tableau à deux dimensions mesure 4096 octets (une puissance de 2), le parcours des éléments par colonne peut provoquer de nombreux défauts même si la capacité du cache est suffisante. Quelle mesure est efficace ?
- AAjouter un remplissage en fin de chaque ligne pour que la taille de ligne ne soit plus une puissance de 2
- BRemplacer le type du tableau par un autre type de même taille
- CRéaligner le tableau entier sur une grande frontière d’adresse en puissance de 2
Afficher la réponse et l'explication
Réponse : A. Ajouter un remplissage en fin de chaque ligne pour que la taille de ligne ne soit plus une puissance de 2
Si une ligne mesure exactement 4096 octets, les éléments parcourus par colonne sont espacés de multiples de 4096 : leurs bits d’index sont identiques et ils se concentrent dans le même ensemble. Dès que le nombre de lignes parcourues dépasse l’associativité, des défauts de conflit apparaissent malgré une capacité suffisante. Ajouter à chaque ligne un remplissage (padding) d’environ une ligne de cache décale l’ensemble associé à chaque élément et répartit les accès. Un alignement sur une puissance de 2 ne change rien, et un type de même taille n’a aucun effet.