• Aucun résultat trouvé

2.4 Analyse statique des hiérarchies de caches inclusives

2.4.1 Fonctionnement et propriétés

Le comportement des hiérarchies de caches inclusives est similaire aux hiérar- chies de caches non-inclusives. Lors d’un accès à une référence mémoire, la ligne de cache contenant la référence mémoire est chargée dans tous les niveaux de cache où un défaut de cache se produit. Une hiérarchie de caches inclusive fournit tout de même une propriété supplémentaire entre les différents niveaux de caches de la hiérarchie : l’inclusion. Plus précisément, tout le contenu d’un niveau de cache est inclus dans le contenu de chacun des niveaux inférieurs de la hiérarchie. Pour assurer la propriété d’inclusion, poser des hypothèses sur la structure des différents caches de la hiérarchie n’est pas une condition suffisante [7] pour des caches associatifs par ensembles disposant tous d’une politique de remplacement LRU. Afin d’illustrer ce propos, prenons la chaîne d’accès [a, b, a, c] ainsi que deux niveaux de caches disposant chacun d’un degré d’associativité de deux. Chacune des références mémoire est projetée dans le même ensemble dans les deux niveaux. La figure 2.5 présente la chaîne d’accès ainsi que le contenu des caches (concrets) avant et après chaque référence, en considérant initialement que les deux niveaux de caches sont vides. Le fait de référencer en alternance a permet son maintien dans le cache de premier niveau sans propager l’accès et donc sans mettre à jour son âge dans le second niveau. Ainsi, après l’accès à la référence c, la

54 Analyse du contenu des hiérarchies de caches référence a est évincée du second niveau alors qu’elle est toujours présente dans le premier niveau, mettant ainsi en défaut la propriété d’inclusion. Ce phénomène est reproductible pour des degrés d’associativité plus grands en augmentant le nombre d’alternances à la référence a montrant ainsi qu’aucune propriété sur la structure des caches associatifs par ensembles ne permet de garantir la propriété d’inclusion. Références mémoires a a a b a c c a c b a b b a b a b a L1 L2 Caches concrets

Fig. 2.5: Exemple du traitement d’une chaîne d’accès montrant que des hypothèses sur la

structure de la hiérarchie de caches ne permettent pas de garantir la propriété d’inclusion. Après avoir effectué tous les accès, la référence a est présente dans le cache L1 mais ne l’est pas dans le cache L2.

Afin de maintenir l’inclusion, un mécanisme additionnel est alors requis par rapport aux hiérarchies de caches non-inclusives. Un procédé d’invalidation des lignes de caches est généralement employé pour maintenir cette propriété.

La figure 2.6 reprend l’exemple précédent en illustrant le mécanisme d’inva- lidation requis lors de l’accès à la référence mémoire c pour garantir l’inclusion. Cet exemple montre une méthode performante d’invalidation évitant la création de blocs de cache vides dans le cache de premier niveau. Pour ce faire, lorsque l’accès produit un défaut dans le cache de premier niveau, l’accès est propagé au second niveau. La référence mémoire étant également absente du second niveau, la ligne de cache, qui sera évincée lors du chargement de la référence c, est d’ores et déjà connue, grâce à la politique de remplacement, permettant ainsi de faire l’invalidation de cette ligne dans le niveau supérieur. La ligne de cache contenant la référence c peut alors prendre le bloc de cache libéré par l’invalidation dans le cache de premier niveau, évitant ainsi de laisser des blocs de cache vides issus du mécanisme d’invalidation.

Les hypothèses, précédemment introduites, sur le fonctionnement des hiérar- chies de caches non-inclusives ne sont pas toutes directement utilisables pour les hiérarchies de caches inclusives dû à l’ajout du mécanisme d’invalidation. Nous considérons des hiérarchies de cache inclusives vérifiant les propriétés suivantes : P1. Une information est recherchée dans le cache de niveau ℓ si et seulement si un défaut de cache se produit dans le cache de niveau ℓ − 1 sauf pour le cache de premier niveau qui est toujours accédé ;

P2. L’âge des lignes de cache contenues dans le niveau ℓ est mis à jour, en fonction de la politique de remplacement de cache, à chaque fois qu’un accès est propagé au niveau ℓ ;

Analyse statique des hiérarchies de caches inclusives 55 b a b b a [c] [c] a b b c a éviction invalidation L1 L2 b c c

Fig.2.6:Exemple du mécanisme d’invalidation servant à forcer l’inclusion lorsqu’une référence

est évincée d’un niveau de cache. Sur cet exemple, la référence a est évincée du cache L2 lors de l’accès à la référence c. Le mécanisme d’invalidation libère le bloc de cache du L1 contenant cette référence, et permet ainsi d’y stocker la référence c tout en garantissant l’inclusion.

P3. A chaque fois qu’un défaut de cache se produit au niveau ℓ, la ligne de cache contenant l’information provoquant ce défaut est intégralement chargée dans le cache de niveau ℓ ;

P4. L’invalidation d’une ligne de cache cl au niveau ℓ se produit quand cl est évincée d’un niveau ℓ′

> ℓ;

P5 Il n’y a aucune autre action sur le contenu des caches (i.e. recherches, modifications. . . ) autres que celles mentionnées ci-dessus.

Les propriétés P1, P2 et P3 sont inchangées par rapport à celles définies pour les hiérarchies de caches non-inclusives tandis que les propriétés P4 et P5 sont une relaxation de la propriété P4 afin d’autoriser le mécanisme d’invalidation. Concernant la propriété P2, l’invalidation d’une ligne de cache dans un niveau ℓ n’est pas assimilable à un accès propagé dans le niveau ℓ et ne modifie donc pas l’âge des autres lignes de caches présentes dans ce niveaux.