Qu'est-ce que Préchargement (prefetch) ?

Chargement dans le cache, avant qu'elles ne soient demandées, de données qui seront probablement nécessaires prochainement. Il existe une méthode matérielle, qui détecte la régularité des accès, et une méthode logicielle, commandée par instruction.

Nom japonais: プリフェッチ

« Préchargement (prefetch) » apparaît dans 9 questions d'entraînement réparties sur 3 thèmes, dont Hiérarchie mémoire, DRAM, CPU et architecture.

Domaine: Hiérarchie mémoire

S'entraîner : questions sur Préchargement (prefetch)

Quel est le principe correct du « préchargement 8n » (8n prefetch) utilisé notamment par la DDR4 SDRAM ?

  1. ALire en une fois dans la matrice interne des données huit fois plus larges et les sortir séquentiellement à haute vitesse sur les broches externes
  2. BEffectuer huit rafraîchissements d'un coup
  3. CÉcrire les mêmes données dans huit puces
Afficher la réponse et l'explication

Réponse : A. Lire en une fois dans la matrice interne des données huit fois plus larges et les sortir séquentiellement à haute vitesse sur les broches externes

La vitesse de la matrice de cellules variant peu d'une génération à l'autre, la DDR4 lit en interne, en un accès, des données de huit fois la largeur des broches (8n) et les envoie successivement par l'interface externe rapide. La longueur de rafale est donc de 8. La DDR5 utilise un préchargement 16n et double le débit externe sans accélérer l'intérieur. Ce mécanisme a doublé à chaque génération : DDR (2n), DDR2 (4n), etc.

Pour quel type d’accès le préchargement matériel est-il particulièrement efficace ?

  1. ALa lecture séquentielle d’un tableau avec un pas (stride) constant
  2. BLe parcours d’une liste chaînée élément par élément depuis la tête
  3. CLa consultation d’une table de hachage avec des clés aléatoires
Afficher la réponse et l'explication

Réponse : A. La lecture séquentielle d’un tableau avec un pas (stride) constant

Le préchargeur matériel détecte une régularité (contiguïté ou pas constant) dans les adresses des accès récents, prédit l’adresse suivante et la charge à l’avance. La lecture d’un tableau avec un pas constant est facile à prédire et l’effet est important. Dans une liste chaînée, l’adresse de l’élément suivant n’est connue qu’après lecture de l’élément courant ; sans régularité, aucune prédiction n’est possible. La consultation d’une table de hachage avec des clés aléatoires ne présente pas non plus de régularité d’adresse, et l’effet est faible.

« Préchargement (prefetch) » dans les explications

Questions mentionnant « Préchargement (prefetch) » (9)

  1. Quel est le principe correct du « préchargement 8n » (8n prefetch) utilisé notamment par la DDR4 SDRAM ?
  2. Pour quel type d’accès le préchargement matériel est-il particulièrement efficace ?
  3. 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 ?
  4. 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 ?
  5. Comment appelle-t-on la limitation de performances due au fait que l'amélioration de la bande passante et de la latence mémoire ne suit pas celle des performances des processeurs ?
  6. Quelle combinaison correspond à la classification des défauts de cache dite des « trois C » ?
  7. 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 ?
  8. 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)
  9. 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 ?

Termes associés

Débit (throughput) Chargeur (loader) Précharge Pénalité de défaut (miss penalty) Mur de la mémoire (memory wall) HBM Défaut obligatoire (compulsory miss) Débordement (spill) Allocation en écriture (write allocate) Blocage de boucle (loop blocking)

Retour au glossaire