Institut Supérieur des Sciences Appliquées et de Technologie de Mateur
Gestion de la mémoire
Cours 3 « La mémoire cache »
Année universitaire 2024-2025
Définition et utilité
2 Plan du cours
I. La mémoire cache
1. Définition et utilité
2. Principe & fonctionnement de la mémoire cache
3. Gestion de la mémoire cache
4. Performance d’une mémoire
II. La hiérarchie des mémoires
05/05/2025
Définition et utilité
3 Plan du cours
I. La mémoire cache
1. Définition et utilité
2. Principe & fonctionnement de la mémoire cache
3. Gestion de la mémoire cache
4. Performance d’une mémoire
II. La hiérarchie des mémoires
05/05/2025
4 I. La mémoire cache
1 Définition & utilité
Le cache (ou antémémoire) est une mémoire
intercalée entre la mémoire et un processeur ou un
périphérique, qui est souvent fabriquée avec de la
mémoire SRAM, parfois avec de l'eDRAM.
05/05/2025
5
Figure : Exemple de mémoire cache
05/05/2025
6 1 Définition & utilité
❑ La mémoire cache est un type de mémoire RAM ultra-
rapide, conçue précisément pour stocker des fichiers,
des dossiers et des informations, ou pour exécuter des
fonctions spécifiques pour lesquelles seule cette
mémoire a été conçue.
❑ Elle exécute des fonctions très spécifiques et
fonctionne aux côtés d’autres composants permettant
à un ordinateur ou à un périphérique de fonctionner
plus efficacement.
05/05/2025
7 1 Définition & utilité
❑ La mémoire cache agit comme un tampon entre le
processeur et la mémoire principale.
❑ Elle est utilisée pour maintenir les parties de données et
programmes qui sont le plus fréquemment utilisé par les CPU.
❑ Les parties de données et les programmes sont transférés du
disque vers la mémoire cache par le système d’exploitation.
❑ Les données stockées dans une mémoire cache pourraient
être les résultats d’un calcul plus tôt, ou les doublons de
données stockées ailleurs.. 05/05/2025
8 1 Définition & utilité
Où peut-on trouver une mémoire cache?
On trouve une zone de cache dans:
✓ les disques durs ;
✓ les mémoires vives ;
✓ les serveurs de pages dynamiques ;
✓ les serveurs de bases de données ;
✓ les microprocesseurs ;
05/05/2025
9 1 Définition & utilité
Le cache interne et le cache externe
Un cache peut être :
1. situé sur la même puce que le processeur
(cache interne / onchip).
2. accessible via un bus externe au processeur
(cache externe). 05/05/2025
10 1 Définition & utilité
Mémoire cache de processeur
Exemple de mémoire cache externe
(non intégrée au processeur)
05/05/2025
11 Mémoire cache de processeur
05/05/2025
Figure Exemple de mémoire cache à deux niveaux
Définition et utilité
12 Plan du cours
I. La mémoire cache
1. Définition et utilité
2. Principe & fonctionnement de la mémoire cache
3. Gestion de la mémoire cache
4. Performance d’une mémoire
II. La hiérarchie des mémoires
05/05/2025
13 2. Principe & fonctionnement de la mémoire cache
L’accès au cache est simple :
1. on commence par vérifier si notre adresse correspond à une donnée
du cache le plus rapide (qui est souvent le plus petit) nommé le
cache L1.
2. Si elle n’y est pas, on effectue la même vérification pour le cache de
niveau inférieur (le cache L2).
3. Si une donnée est présente dans un des caches, on la charge
directement dans le séquenceur (instruction) ou en entrée des unités
de calcul (donnée).
4. Dans le cas contraire, on vérifie le cache du niveau inférieur. Et on
répète cette opération, jusqu’à avoir vérifié tous les caches : on doit
alors aller chercher la donnée en mémoire. 05/05/2025
14
05/05/2025
15
Exemple de Mémoire cache à 2 niveaux
Un cache L1 est formé de deux blocs séparés, l'un servant au
stockage des données, l'autre servant au stockage des instructions.
05/05/2025
Mémoire cache à deux niveaux (Cache L1 et Cache L2)
16
Exemple de Mémoire cache à 3 niveaux
✓ Il existe trois catégories différentes, classées par niveaux:
L1, L2 et L3.
✓ Le cache L1 est généralement intégré à la puce du
processeur et sa taille est la plus petite, allant de 8 Ko à 64
Ko. Il s’agit également du type de mémoire le plus rapide
à lire par la CPU. Les CPU multi-cœurs auront
généralement un cache L1 distinct pour chaque cœur.
✓ Les caches L2 et L3 sont plus grands que L1, mais leur
accès est plus long. Le cache L2 fait parfois partie de la
CPU, mais constitue souvent une puce séparée entre la
CPU et la RAM. 05/05/2025
17 2. Principe & fonctionnement de la mémoire cache
❑ Le microprocesseur n’a pas conscience de sa présence et lui
envoie toutes ses requêtes comme s’il s’agissait de la mémoire
principale :
1. Soit la donnée ou l’instruction requise est présente dans le cache
et elle est alors envoyée directement au microprocesseur. On
parle de succès de cache. (a) Hit
2. Soit la donnée ou l’instruction n’est pas dans le cache, et le
contrôleur de cache envoie alors une requête à la mémoire
principale. Une fois l’information récupérée, il la renvoie au
microprocesseur tout en la stockant dans le cache. On parle de
défaut de cache. (b) Miss
05/05/2025
18 2. Principe & fonctionnement de la mémoire cache
Hit
1. Succès de cache. (a)
Miss
2. Défaut de cache. (b)
Figure: Principe de la mémoire cache 05/05/2025
Définition et utilité
19 Plan du cours
I. La mémoire cache
1. Définition et utilité
2. Principe & fonctionnement de la mémoire cache
3. Gestion de la mémoire cache
4. Performance d’une mémoire
II. La hiérarchie des mémoires
05/05/2025
20 3. Gestion de la mémoire cache
Définitions
Ligne : est le plus petit élément de données qui
peut être transféré entre la mémoire cache et la
mémoire de niveau supérieur.
(Taille de la ligne = Taille du bloc)
Mot : est le plus petit élément de données qui peut
être transféré entre le processeur et la mémoire.
05/05/2025
21 3. Gestion de la mémoire cache
Le principe de localité
❑ Le principe de localité affirme que les informations auxquelles va
accéder le processeur ont une forte probabilité d’être localisées dans
une fenêtre spatiale et une fenêtre temporelle.
❑ La localité spatiale suggère de copier des blocs de mots dans le
cache plutôt que des mots isolés.
❑ La localité temporelle suggère de conserver pendant quelque temps
dans le cache les informations auxquelles on vient d’accéder.
05/05/2025
22 3. Gestion de la mémoire cache
Le principe de localité
1. La localité spatiale indique que l'accès à une donnée située à une
adresse X va probablement être suivi d'un accès à une zone très
proche de X. C'est évidemment vrai dans le cas d'instructions
exécutées en séquence, et plus vrai encore pour les boucles courtes.
(Exemple : tableaux, structures,…).
2. La localité temporelle indique que l'accès à une zone mémoire à un
instant donné a de fortes chances de se reproduire dans la suite
immédiate du programme. C'est évidemment vrai dans le cas des
boucles de quelques instructions seulement
(Exemple : structures itératives,…). 05/05/2025
23 3. Gestion de la mémoire cache
Correspondance cache et mémoire (le mappage « Mapping »)
La taille du cache est beaucoup plus petite que la taille de la mémoire. Il faut définir
une stratégie de copie des blocs de données dans le cache ; Cette méthode
s'appelle le mappage « Mapping ».
05/05/2025
Stratégies de correspondance entre cache et mémoire « Mapping »
24 3. Gestion de la mémoire cache
Correspondance cache et mémoire (le mappage « Mapping »)
1. Correspondance directe (Direct mapped cache): le bloc n de la mémoire
principale peut se retrouver seulement dans le bloc m = (n modulo sb) de la
mémoire cache, sb étant la taille en nombre de blocs de la mémoire cache ;
05/05/2025
25
Direct mapped cache
05/05/2025
26 Exemple
l’exemple inclut les éléments suivants :
• Le cache peut contenir 64 Ko.
• Les données sont transférées entre la mémoire principale et le cache par
blocs de 4 octets chacun.
Cela signifie que le cache est organisé en 16K (2¹⁴) lignes de 4 octets
chacune.
• La mémoire principale est composée de 16 Mo, chaque octet étant
directement adressable par une adresse de 24 bits (2²⁴ = 16M). Ainsi, pour
les besoins du mappage, on peut considérer que la mémoire principale est
constituée de 4M blocs de 4 octets chacun.
05/05/2025
27 Solution
s-r r w
s
Taille mémoire cache 64 ko = 2¹⁶ s+w
Taille block 4 octet = 2²
Taille mémoire principale 16 Mo = 2²⁴
Nombre de ligne 2¹⁶/2² =2¹⁴
Nombre de block 2²⁴ / 2² =2²²
2ʷ Taille de bock ou ligne donc Taille block 4 octet = 2² =>w=2
2ˢ Nombre de bock dans mémoire principale 2ˢ⁺ʷ/ 2ʷ => 2²⁴ / 2² => 2²²⁺²/ 2²
donc S=22
2ʳ Nombre de ligne 2¹⁴ => r=14
Taille tag s-r =>22-14=8
05/05/2025
28
Direct-Mapping Cache Organization
05/05/2025
29
Direct Mapping Example
05/05/2025
30 3. Gestion de la mémoire cache
Correspondance cache et mémoire (le mappage « Mapping »)
2. Correspondance totalement associative (Fully associative cache) : chaque
bloc mémoire peut être placé dans n'importe quel bloc du cache;
05/05/2025
31
totalement associative
05/05/2025
32
Fully Associative Cache Organization
05/05/2025
33 Exemple
La figure montre notre exemple en utilisant le mappage associatif.
Une adresse de mémoire principale consiste en un tag de 22 bits et un numéro
d'octet de 2 bits.
Le tag de 22 bits doit être stocké avec le bloc de données de 32 bits pour
chaque ligne du cache.
Notez que ce sont les 22 bits les plus à gauche (les plus significatifs) de l'adresse
qui forment le tag.
Ainsi, l'adresse hexadécimale de 24 bits 16339C possède le tag de 22 bits
058CE7.
Cela peut être facilement observé en notation binaire :
05/05/2025
34
Associative Mapping Example
05/05/2025
35 3. Gestion de la mémoire cache
Correspondance cache et mémoire (le mappage « Mapping »)
3. Correspondance associative par ensemble (set associative cache) : séparation de
la mémoire cache en groupes de blocs et associativité complète dans un groupe,
c.à.d. le bloc n de la mémoire principale peut se retrouver dans n'importe quel bloc
du groupe g = (n modulo sg) de la mémoire cache, sg étant le nombre total de
groupes de blocs dans la mémoire cache.
05/05/2025
m=v*k
i = j mod v
36
associative par ensemble
05/05/2025
37
2-Way Set Associative Cache Organization
05/05/2025
38 Exemple
05/05/2025
39 3. Gestion de la mémoire cache
Algorithmes de remplacement
✓ Si le cache est plein et que le processeur a besoin d’un bloc qui n’est
pas dans le cache, il faut remplacer un des blocs du cache.
✓ Les stratégies employées sont, principalement :
❑ Choisir un bloc candidat de manière aléatoire
❑ Choisir le plus ancien bloc du cache (FIFO, First In First Out)
❑ Choisir le bloc le moins récemment utilisé (LRU Least Re ently Used)
❑ Choisir le bloc le moins fréquemment utilisé (LFU Least Frequently Used)
✓ Les stratégies concernant l'utilisation (LFU, LRU) sont les plus efficace
(vient ensuite la stratégie aléatoire).
✓ Les stratégies aléatoire et FIFO sont plus faciles à implanter.
05/05/2025
40 3. Gestion de la mémoire cache
Politique d’écriture
Deux situations se présentent selon que le bloc dans lequel on souhaite écrire se trouve
dans le cache ou non.
Dans le premier cas, on peut choisir :
➢ Ecriture immédiate : écrire à la fois dans le bloc du cache et dans le bloc de la
mémoire (écriture simultanée, ou en anglais write through)
➢ Ecriture remplacement : écrire uniquement dans le bloc du cache, et différer l'écriture
de ce bloc en mémoire lorsque l'emplacement qu'il occupe sera désigné pour recevoir
un nouveau bloc mémoire (réécriture ou en anglais write back).
Dans le deuxième cas, on peut choisir
➢ Ecriture allouée : de charger le bloc de la mémoire dans le cache puis effectuer
l'opération d'écriture.
➢ Ecriture non allouée : d'effectuer l'écriture directement dans la mémoire. 05/05/2025
41
Algorithme Write-through
05/05/2025
42
Algorithme Write-back
05/05/2025
43 3. Gestion de la mémoire cache
Politique d’écriture
Deux situations se présentent selon que le bloc dans lequel on souhaite écrire se trouve
dans le cache ou non.
Politique d’écriture dans le cache
05/05/2025
Définition et utilité
44 Plan du cours
I. La mémoire cache
1. Définition et utilité
2. Principe & fonctionnement de la mémoire cache
3. Gestion de la mémoire cache
4. Performance d’une mémoire
II. La hiérarchie des mémoires
05/05/2025
45 4. Performance d’une mémoire
On peut évaluer la performance d'une mémoire utilisant un cache par le
calcul du temps d'accès mémoire moyen :
Temps d'accès mémoire moyen = temps d'accès succès + taux d'échec x pénalité d'échec
Temps d'accès succès = temps d'accès à une donnée résidant dans le cache
Taux d'échec = nombre de défaut de cache/nombre d'accès cache
Taux d'échec = 1 - taux de succès
Taux de succès = nombre de succès / nombre d'accès cache
05/05/2025
46 4. Performance d’une mémoire
Exemple:
Lors de l'exécution d'une instruction, le processeur prend du temps pour la
décoder, accéder aux données en mémoire nécessitées par cette instruction, et
déclencher les opérations sur des données. Voici un cas illustratif :
▪ Durée d'un cycle horloge : T
▪ Pénalité d'échec : 10 cycles
▪ Durée d'une instruction (sans référence mémoire) : 2 cycles
▪ Nombre de références mémoire par instruction : 1,33
▪ Taux d'échec : 2%
▪ Temps d'accès succès : négligeable
Temps d'exécution moyen d'une instruction = (2 + 1,33 x 2% x10) T = 2,27 T
Et dans le cas où il n'y a pas de cache, le temps passe à :
Temps d'exécution moyen d'une instruction = (2 + 1,33 x 10)T = 15,3 T 05/05/2025
Définition et utilité
47 Plan du cours
I. La mémoire cache
1. Définition et utilité
2. Principe & fonctionnement de la mémoire cache
3. Gestion de la mémoire cache
4. Performance d’une mémoire
II. La hiérarchie des mémoires
05/05/2025
48
II. La hiérarchie des mémoires
Figure : Hiérarchie des mémoires 05/05/2025
49 Exercice 1
Soit une mémoire cache de niveau L1 ayant les caractéristiques suivantes : - 32 mots par
lignes (mots de 2 octets) - Taille de 32ko - L1 et L2 sont inclusifs - 4- associatifs -
Remplacement LRU - Association par poids faible - Taille de bus d’adresse : 32bits
1- Combien y-a-t-il de lignes dans cette mémoire cache ?
2- Combien y-a-t-il de blocs associatifs dans cette mémoire cache ?
3- Si la mémoire cache de niveau L2 a une taille de 2 Mo, combien y-a-t-il de blocs de la
mémoire cache L2 par bloc de la mémoire cache L1 ?
4- Si la mémoire fait 1Go, combien d’adresses correspondront à un bloc du cache L1 ?
5- Si un bloc n’est pas présent en cache L1, combien de lignes de L1 aura-t-on parcouru ?
05/05/2025
50 Solution
Soit une mémoire cache de niveau L1 ayant les caractéristiques suivantes : - 32 mots par lignes (mots de 2
octets) - Taille de 32ko - L1 et L2 sont inclusifs - 4- associatifs - Remplacement LRU - Association par poids
faible - Taille de bus d’adresse : 32bits
1- Combien y-a-t-il de lignes dans cette mémoire cache ? Nombre de lignes = Taille cache /(Taille mot*
nombre de mots par ligne) = 32 KOct / (2 Oct * 32) = 2¹⁰/2 = 2⁹= 512 lignes
2- Combien y-a-t-il de blocs associatifs dans cette mémoire cache ? Nombre de blocs = Nombre de lignes/
Nombre de lignes par bloc = 2¹²/4 = 2⁹ / 2² = 2⁷ = 128 blocs
3- Si la mémoire cache de niveau L2 a une taille de 2 Mo, combien y-a-t-il de blocs de la mémoire cache L2
par bloc de la mémoire cache L1 ? Taille cache L2 / Taille cache L1 = 2 MOct/32 KOct = 2²¹ / 2¹⁵ = 2⁶ = 64
4- Si la mémoire fait 1Go, combien d’adresses correspondront à un bloc du cache L1 ? Nbre d’adresse à un
bloc = Taille mémoire / (Nbre blocs * Taille mot * Nbre de lignes d’adresse) = 1 GOct / (128*2Oct* 32) =
2³⁰ / 2¹³ = 2¹⁷ =131072 Sachant que le nombre de lignes d’adresse = taille du bus d’adresse = 32
5- Si un bloc n’est pas présent en cache L1, combien de lignes de L1 aura-t-on parcouru ? 4 lignes
05/05/2025
51 Exercice 2
A) Supposons un programme composé d’une boucle de 10 instructions et que la moitié des
instructions se trouvent en mémoire cache et l’autre moitié en mémoire centrale. Si le
temps d’accès au cache est de 5 ns et celui de la mémoire centrale est de 20 ns, calculer le
temps global d’exécution du programme (sans prise en compte du temps d’exécution des
instructions par le processeur).
B) Si le temps d’accès au cache est de 5 ns, le temps de pénalité au cache est de 10 ns, et
que le temps d’échec du cache est de 20 ns. Calculez le temps de récupération d’une
instruction
05/05/2025
52 Solution
A) Puisque la mémoire cache contient la moitié des instructions du programme, donc nous
avons 5 instructions qui se trouvent en cache. Chaque instruction dans le cache prend 5 ns
pour la récupérer. Au total pour le temps d’accès aux instructions qui se trouvent en
mémoire cache, nous avons 5 × 5 = 25 ns Nous ajoutons à ce temps, le temps d’accès aux
instructions qui se trouvent en mémoire centrale et pour lesquelles le temps d’accès est de
20 ns. Donc, nous avons 5 × 20 = 100 ns Le temps global d’exécution est de 25 + 100 =
125 ns
B) Le temps de récupération d’une instruction à partir du cache peut être calculé selon la
formule de récupération d’une instruction de la façon suivante :
Temps de récupération = T échec × T pénalité+ (1 − T échec) × T accès
Temps de récupération =20 ×10 + (1 − 20) × 5 = 200 + (-95) =105 ns
05/05/2025
53 Exercice 3
Un processeur dispose d'un espace d'adressage mémoire de 32 bits (c'est-à-dire d'adresses
32 bits). La mémoire est divisée en blocs de 32 bits. Octet schacun. L'ordinateur dispose
également d'un cache capable de stocker 16 Kooctets.
a.) Combien de blocs le cache peut-il stocker ?
b.) En supposant que le cache utilise mappage direct , divisez l'adresse en champs TAG,
BLOCK et BYTE OFFSET
05/05/2025
54 Solution
a-16 Ko / 32 octets = 214/ 25= 29= 512 blocs
b-
05/05/2025
55
Fin
05/05/2025