# Mémoire tampon de prélecture

Une mémoire tampon de prélecture (en anglais, prefetch buffer) est une mémoire tampon utilisée dans les mémoires DRAM pour permettre un accès rapide à plusieurs mots situés sur la même rangée de la mémoire.

## Description

Une mémoire DRAM est composée de cellules (chaque cellule contient un bit) regroupées en plusieurs matrices. Chaque matrice contient des rangées et des colonnes. Une opération de lecture sur une mémoire DRAM est la lecture du contenu de la cellule à l'intersection d'une rangée et d'une colonne. En lisant simultanément les bits contenus dans 8 matrices, on obtient un mot de 8 bits en une seule lecture. De même, en lisant simultanément les bits contenus dans 16 matrices, on obtient un mot de 16 bits en une seule lecture. Dans ce contexte, un mot est donc l'ensemble des bits qui sont lus en une seule lecture. Le nombre de bits lus en une seule lecture est une des caractéristiques de l'architecture de la mémoire.
Le tampon de prélecture tire parti des caractéristiques des lectures de la mémoire DRAM. Les opérations de lecture de mémoire DRAM se déroulent en trois phases : la précharge des bit-lines, l'accès à la rangée, l'accès à la colonne. L'accès à la rangée est le cœur d'une opération de lecture, car elle implique la détection minutieuse des petits signaux dans les cellules de mémoire DRAM ; c'est la phase la plus lente du fonctionnement de la mémoire. Cependant, une fois qu'une rangée est lue, les accès subséquents aux colonnes de cette rangée peuvent être très rapides. Par exemple, une rangée d'une mémoire DDR3 de 1 gigaoctet a une largeur de 2048 bits lus grâce à 2048 amplificateurs au cours de la phase d'accès à la rangée. L'accès à la rangée peut prendre 50 ns, alors que l'accès à une colonne d'une rangée ouverte prend moins de 10 ns.
Les architectures traditionnelles de mémoires DRAM ont longtemps fourni un accès rapide à des mots dans une rangée ouverte. Pour une puce de mémoire de 8-bits de large avec une rangée de 2048 bits, l'accès à un des 256 octets (2048/8) sur la rangée ouverte peut être très rapide, à condition qu'aucun accès à une autre rangée ne soit intervenu.
L'inconvénient de l'ancienne méthode d'accès rapide à la colonne était qu'une nouvelle adresse de colonne devait être envoyée pour chaque mot de données supplémentaire à lire sur la ligne. Le bus d'adresse devait opérer à la même fréquence que le bus de données. Une mémoire tampon de prélecture simplifie ce processus en permettant à une sélection d'une seule colonne de déclencher le transfert de plusieurs mots.
Dans une architecture de mémoire avec tampon de prélecture, quand un accès à la mémoire se produit sur une rangée, le tampon reçoit un groupe de mots adjacents au mot qui est lu, sans qu'il ne soit nécessaire de fournir les adresses de colonne de ces mots. Évidemment, les mots additionnels ne sont utiles que si le microprocesseur a besoin de ces mots adjacents en mémoire, mais cela est très souvent le cas. Par exemple, quand un microprocesseur à 64 bits accède à une puce DRAM de 16 bits de large, il lui faut 4 mots adjacents de 16 bits pour obtenir 64 bits. Un tampon de prélecture de 4n permettrait d'obtenir ces 64 bits en une lecture (n est le nombre de mots qui sont transférés au tampon de prélecture lors d'une lecture ; n multiplié par le nombre de bits par mot donne le nombre total de bits transférés). Un tampon de prélecture de 8n sur une puce DRAM de 8 bits de large accomplirait le même résultat.
La profondeur de la mémoire tampon de prélecture (c'est-à-dire le n) peut également être considérée comme étant le rapport entre la fréquence de la lecture et la fréquence de la mémoire. Dans une architecture de prélecture de 8n (tel que dans la DDR3), la lecture se fait 8 fois plus rapidement que la fréquence mémoire (chaque accès à la mémoire fournissant 8 mots). Ainsi, un bloc de mémoire 200 MHz permet une lecture 8 fois plus rapide (1 600 mégabits par seconde). Si la mémoire dispose de 16 blocs de mémoire fonctionnant en parallèle, la bande passante de lecture totale sera de 200 MHz x 8 bits / accès x 16 blocs = 25,6 gigabits par seconde (Gbit/s), ou 3,2 gigaoctets par seconde (Gbit/s).

## Types de mémoires

Les différentes générations de mémoire SDRAM ont des largeurs de tampon de prélecture différentes :
* la largeur du tampon de prélecture de la mémoire DDR est de 2n (deux mots par accès mémoire) ;
* la largeur du tampon de prélecture de la mémoire DDR2 est de 4n (quatre mots par accès mémoire) ;
* la largeur du tampon de prélecture de la mémoire DDR3 est de 8n (huit mots par accès mémoire) ;
* la largeur du tampon de prélecture de la mémoire DDR4 est de 8n ;
* la largeur du tampon de prélecture de la mémoire DDR5 est de 8n, avec un mode additionnel de 16n.