Hiérarchie mémoire
Découvrez la hiérarchie mémoire et les performances avec des QCM : organisation des caches, calculs tag/set/offset, politiques de remplacement et d'écriture, les trois types de défauts de cache et le temps d'accès mémoire moyen.
Découpage d’adresse du cache →
Hiérarchie mémoire : points clés
Une opération du CPU prend moins d'une nanoseconde, alors que la lecture de données dans la mémoire principale DRAM prend de quelques dizaines à 100 nanosecondes. Pour combler cet écart, les ordinateurs empilent une hiérarchie allant de petits caches rapides jusqu'à une grande mémoire principale lente et au stockage, en conservant les données fréquemment utilisées dans les niveaux rapides.
Les caches fonctionnent parce que les programmes présentent une localité temporelle et spatiale. Comprendre les organisations à correspondance directe et associatives par ensembles, le découpage d'une adresse en tag, index et offset, les trois types de défauts de cache et le calcul du temps d'accès mémoire moyen explique pourquoi la disposition des données et l'ordre des boucles peuvent multiplier ou diviser les performances.
Toutes les questions sur Hiérarchie mémoire (50)
- Quel est l’exemple le plus représentatif de la localité temporelle ?
- Parcourir le tableau à deux dimensions a[i][j] du langage C avec j dans la boucle interne, comme ci-dessus, est généralement plus rapide qu’avec i dans la boucle interne. Pour quelle raison ?
- 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 ?
- 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 ?
- Dans un cache totalement associatif, combien de bits de l’adresse sont utilisés pour l’index (partie qui sélectionne l’ensemble) ?
- Avec un temps de succès L1 de 1 ns, un taux de défauts L1 de 5%, un temps de succès L2 de 10 ns, un taux de défauts local L2 de 20% et un temps d’accès à la mémoire principale de 100 ns, quel est le temps moyen d’accès mémoire ?
- Dans un cache à correspondance directe, les éléments de deux tableaux correspondent au même emplacement du cache et s’évincent mutuellement à chaque accès alterné. Dans quelle catégorie se classe ce défaut ?
- Quelle méthode est efficace pour réduire les défauts de cache qui surviennent lorsqu’un programme accède pour la première fois à une donnée ?
- Quel type de défaut ne diminue pas même si le cache devient totalement associatif ?
- Quel est l’effet de l’augmentation de la taille de ligne du cache ?
- Dans un cache à écriture immédiate, quel est le but principal d’un tampon d’écriture ?
- Dans un cache à écriture différée, quel est le rôle du bit modifié (dirty bit) associé à chaque ligne ?
- Quelle politique, lors d’un défaut d’écriture, écrit directement au niveau inférieur sans charger la ligne ?
- Un cache totalement associatif de 2 lignes avec remplacement LRU est initialement vide. Si les blocs sont référencés dans l’ordre A, B, A, C, B, A, combien de défauts se produisent ?
- Pour quel type d’accès le préchargement matériel est-il particulièrement efficace ?
- Lors de l’insertion d’instructions de préchargement logiciel, quelle description de la distance de préchargement (jusqu’où en avance lire les données) est correcte ?
- Dans la boucle ci-dessus, avec un int de 4 octets, des lignes de cache de 64 octets et un tableau absent du cache aligné sur une frontière de ligne, quel est le taux de défauts de la lecture du tableau en l’absence de préchargement ?
- Quel est le but principal du blocage de boucles (tiling), utilisé notamment pour le produit de matrices ?
- Pourquoi le traitement ci-dessus, qui additionne uniquement les coordonnées x, devient-il généralement plus rapide une fois réécrit sous forme de structure de tableaux (chaque composante dans un tableau séparé) ?
- Quel est le principal avantage d’un cache L1 séparé en cache d’instructions (cache I) et cache de données (cache D) ?
- Dans un système à pages de 4 KB et lignes de 64 octets, le cache L1 est à index virtuel et étiquette physique (VIPT), et l’index et le déplacement doivent n’utiliser que des bits internes à la page. Avec une associativité à 8 voies, quelle est la capacité maximale du cache ?
- Pourquoi le schéma à index virtuel et étiquette physique (VIPT) est-il couramment utilisé pour les caches L1 ?
- 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 ?
- Un processeur a un CPI moyen de 1.0 avec un cache idéal. Il effectue en moyenne 1.3 accès mémoire par instruction, avec un taux de défauts de 2% et une pénalité de défaut de 100 cycles. Quel est le CPI moyen réel ?
- Quel est le principal avantage d’un cache non bloquant (cache qui accepte d’autres accès pendant le traitement d’un défaut) ?
- Si le taux de défauts du cache L1 (rapporté à tous les accès) est de 4% et le taux de défauts global du cache L2 (proportion de tous les accès qui échouent aussi dans le L2) est de 1%, quel est le taux de défauts local du L2 ?
- Avec un TLB de 64 entrées et des pages de 4 KB, quelle est l’étendue mémoire accessible sans défaut de TLB (portée du TLB) ?
- Quelle combinaison d’avantage et d’inconvénient de l’utilisation de grandes pages (huge pages) est correcte ?
- 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 ?
- Combien de fois environ le temps d’accès à la DRAM de la mémoire principale est-il supérieur au temps de succès du cache L1 ? (CPU typique de PC ou de serveur)
- Quel est le rôle du bit de validité (valid bit) associé à chaque ligne de cache ?
- Quel est l’effet principal d’un cache de victimes, petit tampon totalement associatif qui conserve temporairement les lignes évincées du cache L1 ?
- Dans un cache multiniveau où un cache L2 est placé sous le cache L1, quel est le rôle principal du cache L2 ?
- Quelle est la caractéristique d’un schéma inclusif, dans lequel le cache inférieur (L2, etc.) contient tout le contenu du cache supérieur (L1) ?
- Quel changement se produit lors du passage d’un cache à correspondance directe à un cache associatif par ensembles ?
- Dans un cache associatif à 8 voies, combien d’étiquettes sont comparées en parallèle à chaque accès ?
- Dans un cache à lignes de 64 octets et à 64 ensembles, à quel numéro d’ensemble correspond la donnée d’adresse 0x1234 ?
- Pour un traitement qui écrit de nombreuses fois dans la même ligne, quelle est la principale raison pour laquelle l’écriture différée est plus avantageuse que l’écriture immédiate ?
- Par opposition à LRU, qui évince l’élément inutilisé depuis le plus longtemps, quelle description du remplacement optimal (OPT), qui évince l’élément qui restera inutilisé le plus longtemps à l’avenir, est correcte ?
- Comment évolue en général le temps de succès lorsque la capacité du cache augmente ? Quelle réponse est correcte, raison comprise ?
- Pourquoi le parcours de la liste chaînée ci-dessus est-il généralement bien plus lent que la lecture séquentielle d’un tableau comportant le même nombre d’éléments ?
- Chaque défaut lit une ligne de 64 octets et la latence de la mémoire principale est de 100 ns ; si un seul défaut peut être traité à la fois, la bande passante de lecture plafonne à environ 0.64 GB/s. Si 10 défauts peuvent être traités simultanément, quelle est approximativement la bande passante ? (aucune autre contrainte)
- Pour écrire de gros volumes de données qui ne seront pas relus avant longtemps, quel est le principal avantage des écritures qui contournent le cache (écritures non temporelles) ?
- Si le taux de succès du cache est de 95%, quel est le taux de défauts ?
- Quelle technique, lors du chargement depuis la mémoire principale d’une ligne en défaut, envoie d’abord le mot requis par le CPU puis le reste de la ligne ?
- Pourquoi la fusion des deux boucles ci-dessus en une seule (fusion de boucles) accélère-t-elle généralement le traitement lorsque N est grand ?
- Quelle combinaison de cause et de remède typique est correcte pour expliquer les nombreux défauts de cache lors de la transposition d’une grande matrice (b[j][i] = a[i][j]) ?
- Dans la hiérarchie mémoire d’un ordinateur classique, quelle propriété est vérifiée par les niveaux supérieurs (plus proches du CPU) ?
- Pourquoi faut-il comparer les caches selon le temps moyen d’accès mémoire, et pas seulement selon le taux de défauts ?
- Exécuter alternativement deux programmes sur le même cœur peut les rendre plus lents que s’ils étaient exécutés seuls. Quelle est l’explication la plus appropriée du point de vue du cache ?
Comparatifs sur ce thème
- Cache write-through vs write-back : les différences expliquéesCaches write-through et write-back comparés dans un tableau : politique d'écriture, trafic mémoire, vitesse, …
- Cache à correspondance directe vs associatif par ensembles vs totalement associatifCaches à correspondance directe, associatifs par ensembles et totalement associatifs comparés dans un tableau…
Autres thèmes de Systèmes informatiques
- Arithmétique des ordinateurs IEEE 754, virgule fixe, erreur d'arrondi
- ISA et assembleur RISC-V, modes d'adressage, conventions d'appel
- Compilateurs Analyse syntaxique, SSA, optimisation, registres
- Éditeurs de liens, chargeurs et exécutables ELF, symboles, relocalisation, liaison dynamique
- Système d'exploitation et matériel Interruptions, appels système, défauts de page
- Multicœur et synchronisation MESI, instructions atomiques, barrières mémoire
- Programmation GPU Warps, mémoire partagée, coalescence, occupation
- Pile matérielle et logicielle de l'IA Inférence/entraînement, quantification, roofline
- Systèmes embarqués et firmware GPIO, UART/SPI/I2C, RTOS
- HDL et vérification Verilog, latches, machines à états, testbenches
- Interfaces d'E/S et bus PCIe, USB, SerDes, CXL
- Analyse des performances Loi d'Amdahl, CPI, goulots d'étranglement
- Sécurité matérielle Canaux auxiliaires, secure boot, TEE, PUF
- Gestion de l'énergie DVFS, power gating, états de veille