1.2 Mémoires et Caches
Sur les architectures modernes, le système gère de manière transparente différents types de mé-
moire dont la taille et les temps de réponse varient de manière significative. Afin de bien comprendre
les limites des algorithmes existants et les avantages de l’approche proposée par Sandeep Tata &
Al, il nous a semblé nécessaire d’effectuer un rapide rappel sur la pagination à la demande et le
fonctionnement des caches.
1.2.1 Principe général de la pagination à la demande
Une application n’a, à un instant donné, besoin que d’un sous ensemble de ses informations. Plutôt
que de charger l’intégralité du programme et de ses données en mémoire, va-et-vient global couteux
en temps et en espace, le systeme découpe les programmes en morceaux de taille fixe (les pages) et
ne charge dans la mémoire physique que celles qui sont référencées à l’instant courant. Le système
éffectue donc un va-et-vient au niveau des pages en fonction des besoins.
D’autre part, les temps d’accès à la mémoire vive et au disque dur étant trop importants au regard
des cycles processeur, l’utilisation de différents niveaux de cache entre celui-ci et la mémoire vive s’est
généralisée. Ces caches, d’une taille équivalente à quelques pages (plusieurs dizaines de kilo-octets)
ayant en effet des temps de réponse beaucoup plus proches de la cadence des processeurs.
1.2.2 Principe général du mécanisme de cache
Soient deux niveaux contigus de la hiérarchie mémoire : mémoire rapide et mémoire lente. Ces
deux niveaux sont respectivement joués par le cache et la mémoire vive et/ou par la mémoire vive
et le disque dur.
Accès en lecture : L’ adressage se fait sur la mémoire lente, mais les accès sont toujours réalisés
sur la mémoire rapide. Lors des accès, si l’information voulue n’est pas présente dans la mémoire
rapide il y a défaut de cache. Il faut alors la transferer de la mémoire lente vers la mémoire rapide
(chargement).
Accès en écriture : L’écriture s’effectue dans la mémoire rapide, on recopie ensuite l’information
en mémoire lente, éventuellement de maniere différée. Il y a un défaut de cache quand la mémoire
rapide est pleine, il faut alors enlever préalablement à toute écriture une partie de l’information
présente en mémoire rapide en essayant de maintenir les informations les plus "utiles" (politique de
remplacement).
Afin de minimiser le nombre de défauts de page et donc le nombre d’accès en lecture/écriture à
la mémoire lente, les politiques de chargement et de remplacement des pages tiennent compte de
deux principes fondamentaux, la localité spatiale et la localité temporelle.
Localitéspatiale: Si un élément xest référencé à un instant t, les emplacements voisins ont de
fortes probabilités d’être référencés dans un futur proche.
– accès(x, t) ⇒probabilité forte d’accés (x+d, t +)
Localité temporelle : Un élément xréférencé à un instant donné a une forte probabilité d’être
à nouveau référencé dans un futur proche.
– accès(x, t) ⇒probabilité forte d’accés (x, t +)
Dans le cas d’une politique LRU (Least Recently Used), on utilise ainsi la propriété de localité
temporelle, la page victime est celle dont la dernière référence est la plus ancienne.
Le rapport entre le nombre d’accès provoquant un défaut et le nombre total d’accès est une manière
courante de mesurer l’efficacité du cache et la bonne exploitation de celui-ci par les programmes.
2