Découpage d’adresse d’un cache et temps d’accès mémoire moyen

Saisissez la taille du cache, la taille de ligne et l’associativité pour voir comment une adresse se découpe en étiquette, index et offset, sous forme de nombres de bits et d’une barre. Le calculateur donne aussi le temps d’accès mémoire moyen (AMAT) à partir du temps de succès, du taux de défauts et de la pénalité de défaut, pour voir l’effet de l’organisation du cache sur les performances.

Organisation du cache

Résultats

Découpage de l’adresse (bits de poids fort à gauche)

Lignes
–
Ensembles
–
Étiquette
–
Index
–
Offset
–
Temps d’accès mémoire moyen (AMAT)
–

Découper une adresse en trois champs

Un cache conserve les données de la mémoire principale par unités appelées lignes (blocs). Le nombre de lignes vaut taille ÷ taille de ligne, et le nombre d’ensembles vaut lignes ÷ associativité. En partant des bits de poids faible de l’adresse, l’offset sélectionne un octet dans la ligne et occupe log₂(taille de ligne) bits, l’index sélectionne un ensemble et occupe log₂(ensembles) bits, et les bits de poids fort restants forment l’étiquette (tag). Avec les valeurs par défaut de 32 bits, 32 KB, 64 B et 8 voies, on obtient 512 lignes et 64 ensembles, soit un offset de 6 bits, un index de 6 bits et une étiquette de 32 − 6 − 6 = 20 bits.

Ce que change l’associativité

Doubler l’associativité à taille et taille de ligne égales divise par deux le nombre d’ensembles : l’index perd un bit et l’étiquette en gagne un. Une seule voie correspond à un cache à correspondance directe (direct-mapped), et un nombre de voies égal au nombre de lignes (512 avec les valeurs par défaut) donne un cache entièrement associatif, avec un seul ensemble et un index de 0 bit. Une associativité plus élevée réduit les défauts de conflit, dus à des adresses qui se concentrent dans le même ensemble, mais davantage d’étiquettes doivent être comparées en parallèle, ce qui coûte en surface de comparateurs, en consommation et en temps de succès.

Temps d’accès mémoire moyen (AMAT)

Les caches doivent se comparer sur le temps d’accès mémoire moyen, et non sur le seul taux de défauts. AMAT = temps de succès + taux de défauts × pénalité de défaut, soit 4 + 0,05 × 100 = 9 cycles avec les valeurs par défaut. Même un taux de défauts de 5 % fait plus que doubler la moyenne, car la pénalité est importante. Abaisser le taux de défauts avec un cache plus grand ou plus associatif ne sert à rien si le temps de succès augmente, puisque chaque accès le paie. Pour des caches à plusieurs niveaux, remplacez la pénalité de défaut de L1 par temps de succès L2 + taux de défauts L2 × pénalité de défaut L2.

Usage en conception et pièges

Des lignes plus longues exploitent la localité spatiale et réduisent le taux de défauts, mais chaque défaut transfère davantage de données, ce qui augmente la pénalité de défaut, et un nombre de lignes plus faible accroît les conflits ; la plupart des CPU actuels utilisent 64 B. Les caches L1 adoptent souvent une organisation à index virtuel et étiquette physique (VIPT), qui lit l’ensemble pendant que le TLB traduit l’adresse. Maintenir l’index et l’offset à l’intérieur de l’offset de page limite la taille à taille de page × associativité, par exemple 4 KB × 8 voies = 32 KB. La largeur de l’étiquette détermine aussi la taille de la mémoire des étiquettes.

S’entraîner sur la hiérarchie mémoire

Pour un cache à correspondance directe avec des adresses de 32 bits, une capacité de 32 KB et des lignes de 64 octets, combien de bits comporte l’étiquette ?

  1. A15 bits
  2. B19 bits
  3. C17 bits
Afficher la réponse et l'explication

Réponse : C. 17 bits

Une ligne de 64 octets = 2⁶ donne un déplacement de 6 bits. Le nombre de lignes est 32 KB ÷ 64 B = 32768 ÷ 64 = 512 = 2⁹ ; en correspondance directe, le nombre de lignes est égal au nombre d’ensembles, d’où un index de 9 bits. Le reste constitue l’étiquette : 32 − 9 − 6 = 17 bits. La valeur de 19 bits correspond à un cache associatif à 4 voies dont l’index perd 2 bits ; elle ne s’applique pas à la correspondance directe.

Combien d’ensembles comporte un cache associatif à 4 voies avec des adresses de 32 bits, une capacité de 32 KB et des lignes de 64 octets ?

  1. A128
  2. B512
  3. C32
Afficher la réponse et l'explication

Réponse : A. 128

Le nombre de lignes est 32 KB ÷ 64 B = 512. Avec 4 voies, chaque ensemble contient 4 lignes ; le nombre d’ensembles est donc 512 ÷ 4 = 128 = 2⁷, d’où un index de 7 bits et une étiquette de 32 − 7 − 6 = 19 bits. 512 est le nombre de lignes lui-même, c’est-à-dire le nombre d’ensembles en correspondance directe. Augmenter l’associativité réduit le nombre d’ensembles, ce qui accroît d’autant la taille de l’étiquette et le nombre de comparateurs. 32 résulte de la division erronée de la taille de ligne 64 par le nombre de voies.

Avec un temps de succès de 2 cycles, un taux de défauts de 4% et une pénalité de défaut de 150 cycles, quel est le temps moyen d’accès mémoire en cycles ?

  1. A8 cycles
  2. B6 cycles
  3. C152 cycles
Afficher la réponse et l'explication

Réponse : A. 8 cycles

Temps moyen d’accès mémoire = temps de succès + taux de défauts × pénalité de défaut = 2 + 0.04 × 150 = 2 + 6 = 8 cycles. Le temps de succès s’applique à tous les accès, et la pénalité de défaut ne s’ajoute qu’en cas de défaut. 6 cycles ne compte que la part des défauts et oublie le temps de succès. 152 cycles est la durée d’un accès en défaut, et non la moyenne. Même avec un taux de défauts de seulement 4%, la moyenne est multipliée par 4.

Dans un cache à lignes de 64 octets et à 64 ensembles, à quel numéro d’ensemble correspond la donnée d’adresse 0x1234 ?

  1. A4
  2. B52
  3. C8
Afficher la réponse et l'explication

Réponse : C. 8

Le déplacement occupe les 6 bits de poids faible (64 = 2⁶) et l’index les 6 bits suivants (64 ensembles = 2⁶). 0x1234 = 4660 divisé par 64 donne 4660 ÷ 64 = 72, reste 52 ; le numéro de ligne est donc 72. Le numéro d’ensemble est le reste de la division du numéro de ligne par le nombre d’ensembles : 72 mod 64 = 8. 52 est le reste de la division par 64, c’est-à-dire la position dans la ligne (déplacement). 4 n’est que le dernier chiffre hexadécimal de l’adresse et n’a aucun rapport avec l’ensemble.

Questions fréquentes

Combien de bits d’étiquette compte un cache à correspondance directe de 32 KB avec des lignes de 64 B et des adresses de 32 bits ?

L’offset fait log₂64 = 6 bits, et 32 KB ÷ 64 B = 512 lignes donnent un index de 9 bits ; l’étiquette fait donc 32 − 9 − 6 = 17 bits. En passant à 8 voies, le nombre d’ensembles tombe à 64, ce qui donne un index de 6 bits et une étiquette de 20 bits.

Combien de bits d’index compte un cache entièrement associatif ?

Zéro. Il n’y a qu’un seul ensemble : tous les bits sauf l’offset forment l’étiquette, qui est comparée à celle de chaque ligne. Vous pouvez le vérifier ici en réglant l’associativité sur le nombre de lignes.

Qu’est-ce qui aide le plus : diviser le taux de défauts par deux ou réduire le temps de succès d’un cycle ?

Avec les valeurs par défaut (temps de succès de 4 cycles, taux de défauts de 5 %, pénalité de défaut de 100 cycles), un taux de défauts de 2,5 % abaisse l’AMAT de 9 à 6,5 cycles, tandis qu’un temps de succès de 3 cycles donne 8 cycles : ici, le taux de défauts compte davantage. Avec une faible pénalité de défaut, la réponse peut s’inverser ; comparez donc à l’aide de la formule de l’AMAT.

Termes associés

Mémoire cache Ligne de cache Correspondance directe (direct-mapped) Cache associatif par ensembles Cache entièrement associatif Temps d'accès mémoire moyen (AMAT) Pénalité de défaut (miss penalty) Défaut de conflit

Calculateurs pour semi-conducteurs

Calculateur de dies par wafer et de rendementPuces par plaquette, rendement (Poisson, Murphy, binomiale négative) et coût par puce bonne, avec carte de plaquetteCalculateur de résolution et de profondeur de foyer en lithographieRésolution (demi-pas), profondeur de foyer et découpage du pas à partir de λ, NA et k1Calculateur de timing setup et holdMarges (slack) de setup et de hold et fréquence d'horloge maximale d'un chemin bascule à basculeCaractéristiques I-V du MOSFET (ID–VDS)Modifiez Vth, W/L et λ et voyez les courbes ID–VDS et le point de fonctionnement : régime, ID, gm et roCréer une série de questionsChoisissez des thèmes et un nombre de questions pour obtenir un lien de quiz à partager en cours ou en formationCalculateur de température de jonction et de résistance thermiqueTempérature de jonction, marge jusqu’à Tj(max) et puissance maximale d’après la puissance dissipée et la résistance thermiqueCalculateur de bande passante mémoireBande passante crête et effective de DDR, LPDDR, GDDR et HBM d’après le débit de transfert et la largeur de busSNR et nombre effectif de bits (ENOB) d’un ADCSNR et nombre effectif de bits d’un ADC d’après la résolution, la gigue d’horloge et le suréchantillonnageLoi d’Amdahl et accélération parallèleFacteur d’accélération et efficacité parallèle d’après la fraction parallèle et le nombre de processeurs, selon les lois d’Amdahl et de GustafsonConsommation d’un circuit CMOS (dynamique et statique)Consommation dynamique et statique d’après le facteur d’activité, la capacité, la tension, la fréquence et la fuite, et puissance après DVFSPotentiel de diffusion et largeur de la zone de déplétion d’une jonction PNPotentiel de diffusion, largeur de la zone de déplétion, champ maximal et capacité d’une jonction PN d’après le dopage et la polarisation inverseÉpaisseur d’oxyde thermique (modèle de Deal-Grove)Épaisseur d’oxyde de silicium et silicium consommé d’après la température, la durée, l’atmosphère sèche ou humide et l’orientation, avec le modèle de Deal-Grove