Qu'est-ce que Localité spatiale ?

Propriété selon laquelle, après un accès à une adresse, les adresses voisines ont de fortes chances d'être accédées peu après. Exemple : lecture séquentielle d'un tableau. C'est pourquoi les données sont chargées par ligne de cache.

Nom japonais: 空間的局所性

« Localité spatiale » apparaît dans 4 questions d'entraînement réparties sur 2 thèmes, dont CPU et architecture, Hiérarchie mémoire.

Domaine: Hiérarchie mémoire

S'entraîner : questions sur Localité spatiale

Quel est le principal objectif d'une mémoire cache ?

  1. AConserver les données même hors tension
  2. BPlacer les données fréquemment utilisées près du processeur pour atténuer l'écart de vitesse avec la mémoire principale
  3. CCorriger les erreurs dans les résultats de calcul
Afficher la réponse et l'explication

Réponse : B. Placer les données fréquemment utilisées près du processeur pour atténuer l'écart de vitesse avec la mémoire principale

Pendant qu'un processeur traite un cycle d'horloge (0,2 à 0,3 ns), un accès à la DRAM prend plusieurs dizaines à 100 ns, soit plusieurs centaines de cycles. Les données et instructions fréquemment utilisées sont donc placées dans un cache en SRAM rapide pour réduire l'attente. Le cache exploite la localité temporelle, la réutilisation prochaine des mêmes données, et la localité spatiale, l'utilisation successive d'adresses voisines ; l'accès prend quelques cycles en L1 et quelques dizaines de cycles en L3.

Quelle est la taille usuelle d'une ligne de cache (bloc de cache) dans la plupart des processeurs actuels ?

  1. A1 octet
  2. B64 octets
  3. C64 MB
Afficher la réponse et l'explication

Réponse : B. 64 octets

La plupart des processeurs échangent les données entre cache et mémoire principale par lignes de 64 octets. Les données d'adresses voisines étant souvent utilisées successivement (localité spatiale), les charger en bloc est efficace, et cela correspond au transfert en rafale de la DRAM (en DDR4, 8 transferts × 8 octets = 64 octets). Dans les programmes multithreads, il faut prendre garde au « faux partage », conflit qui survient lorsque des variables distinctes se trouvent sur la même ligne.

« Localité spatiale » dans les explications

Questions mentionnant « Localité spatiale » (4)

  1. Quel est le principal objectif d'une mémoire cache ?
  2. Quelle est la taille usuelle d'une ligne de cache (bloc de cache) dans la plupart des processeurs actuels ?
  3. Quel est l’exemple le plus représentatif de la localité temporelle ?
  4. Quel est l’effet de l’augmentation de la taille de ligne du cache ?

Termes associés

Localité temporelle Mémoire cache Ligne de cache Faux partage (false sharing) Pénalité de défaut (miss penalty) Allocation en écriture (write allocate) Blocage de boucle (loop blocking) Cache associatif par ensembles Cache entièrement associatif Cache non bloquant

Retour au glossaire