# Rafraîchissement de la mémoire

Le rafraîchissement de la mémoire est un processus qui consiste à lire périodiquement les informations d'une mémoire vive d'ordinateur et les réécrire immédiatement sans modifications, dans le but de prévenir la perte de ces informations.
Le rafraîchissement de la mémoire est requis dans les mémoires de type DRAM (dynamic random access memory), le type de mémoire vive le plus largement utilisé, et le rafraîchissement est une des caractéristiques principales de ce type de mémoire.
Dans une mémoire DRAM, un bit de données est codé par la présence ou l'absence d'une charge électrique sur un petit condensateur$^,$. Avec le temps, les charges électriques des condensateurs se dispersent et, sans rafraîchissement, les données seraient perdues. Pour éviter cette perte, un circuit lit périodiquement chaque bit de donnée et le réécrit, restaurant ainsi la charge du condensateur à son niveau initial. Chaque opération de rafraîchissement de la mémoire régénère une nouvelle zone de la mémoire, parcourant ainsi toutes les zones de la mémoire. Ce procédé est réalisé automatiquement, en arrière-plan, par un circuit intégré à la mémoire, aussi longtemps que l'ordinateur est sous tension. Ce procédé ne requiert aucune intervention de l'utilisateur et n'est pas visible par l'utilisateur. Pendant le rafraîchissement, la mémoire n'est pas disponible pour les opérations de lecture et d'écriture, mais dans les mémoires modernes, cela ne ralentit pas la mémoire de façon significative.
Il existe des mémoires qui ne nécessitent pas de rafraîchissement : les mémoires SRAM (static random access memory). Les mémoires SRAM prennent plus de place sur les puces électroniques, car chaque cellule de mémoire SRAM nécessite de 4 à 6 transistors, comparativement à un seul transistor et un condensateur pour la mémoire DRAM. Pour cette raison, à superficie égale, la capacité de stockage des mémoires SRAM est bien moindre que pour la mémoire DRAM, de sorte que la mémoire SRAM est beaucoup plus coûteuse par bit. Par conséquent, la mémoire DRAM est utilisée comme mémoire principale dans les ordinateurs, les jeux vidéo et la plupart des autres appareils utilisant une mémoire à semi-conducteurs. Le besoin de circuits supplémentaires pour effectuer le rafraîchissement de la mémoire rend les mémoires DRAM plus complexes que les mémoires SRAM, mais la grande densité des mémoires DRAM compense largement ce désavantage.

## Fonctionnement

Aussi longtemps que l'ordinateur est en fonctionnement, chaque cellule de mémoire doit être rafraîchie de façon répétée, à des intervalles spécifiés par le fabricant, qui est habituellement de l'ordre de la milliseconde. Le rafraîchissement ne fait pas appel aux opérations normales de lecture et d'écriture utilisées pour accéder aux données de la mémoire, mais des cycles spécialisés appelés cycles de rafraîchissement générés par des circuits de la mémoire et intercalés entre les accès de lecture et d'écriture de la mémoire$^,$.
Les cellules de mémoire sur une puce de mémoire sont disposées en un tableau rectangulaire de lignes et de colonnes. Le processus de lecture de la mémoire DRAM est destructeur, c'est-à-dire qu'il supprime les charges des cellules de mémoire de la rangée de mémoire qui est lue. Au cours d'une opération de lecture, des amplificateurs de détection (sense amplifiers ) de la puce, après avoir lu et verrouillé les données, réécrivent les données de la ligne accédée avant de fournir le bit de la seule colonne demandée$^,$. Donc, le mécanisme électronique de lecture a la capacité de rafraîchir toute une rangée de mémoire en parallèle, ce qui accélère considérablement le processus de rafraîchissement. Une opération de lecture ou d'écriture normale rafraîchit une rangée de mémoire, mais on ne peut se fier aux opérations normales de lecture et d'écriture pour toucher toutes les lignes dans le temps nécessaire, ce qui nécessite un processus de rafraîchissement séparé. Plutôt que d'utiliser le cycle normal de lecture pour rafraîchir la mémoire, un cycle abrégé, appelé cycle de rafraîchissement, est utilisé pour accélérer le processus.
Le cycle de rafraîchissement est similaire au cycle de lecture, mais s'exécute plus rapidement pour deux raisons :
* pour un rafraîchissement, seule l'adresse de la ligne est nécessaire, il n'est donc pas nécessaire de transmettre l'adresse de la colonne aux circuits de rafraîchissement ;
* les données lues dans les cellules de mémoire n'ont pas besoin d'être transférées dans les tampons de sortie ou le bus de données pour être envoyées au microprocesseur.
Le circuit de rafraîchissement doit effectuer un cycle d'actualisation sur chacune ligne de la mémoire dans l'intervalle de temps de rafraîchissement pour qu'aucune donnée ne soit perdue.

## Types de circuits de rafraîchissement

De nombreux types de circuits de rafraîchissement ont été utilisés. Dans certains anciens ordinateurs, le microprocesseur contrôlait le rafraîchissement au moyen d'une minuterie déclenchant une interruption périodique qui lançait un programme de rafraîchissement. Cela impliquait que le microprocesseur ne pouvait pas être mis en pause, ne pouvait pas exécuter les instructions une à une sous le contrôle d'un programmeur pour faciliter le débogage d'un ordinateur et ne pouvait pas être mis en veille pour économiser l'énergie de la pile, car cela aurait arrêté le rafraîchissement et entrainé une perte des données de la mémoire.
Dans les systèmes modernes, le rafraîchissement est géré par des circuits situés dans le contrôleur mémoire, ou de plus en plus, par des circuits situés sur la puce de mémoire elle-même. Certaines puces DRAM, telles les puces RAM pseudo-statique (PSRAM), ont tous les circuits de rafraîchissement sur la puce et fonctionnent comme une mémoire RAM statique (SRAM) du point de vue du reste du système.
Le circuit de rafraîchissement inclut un compteur de rafraîchissement qui contient l'adresse de la ligne à rafraîchir et un additionneur qui incrémente le compteur pour rafraîchir toutes les lignes à tour de rôle. Le compteur peut être dans le contrôleur mémoire ou sur la puce de mémoire elle-même. Deux stratégies de rafraîchissement sont utilisées :
* rafraîchissement de salve (burst refresh) - une longue série de cycles de rafraîchissement sont effectués l'un après l'autre jusqu'à ce que toutes les lignes de mémoire aient été rafraîchies, après quoi la mémoire effectue des opérations normales de lecture et d'écriture jusqu'à la prochaine salve de rafraîchissements ;
* rafraîchissement distribué (distributed refresh) - de courtes séries de cycles de rafraîchissement sont effectuées à intervalles réguliers, entrecoupées d'opérations normales de lecture et d'écriture.
Les rafraîchissements de salve occasionnent de longues périodes durant lesquelles la mémoire n'est pas disponible. Conséquemment, le rafraîchissement distribué est utilisé dans la plupart des systèmes modernes, en particulier dans les systèmes temps réel. Dans les rafraîchissements distribués, l'intervalle de temps entre les courtes séries de cycles de rafraîchissement est
    ${\text{intervalle}}={\text{temps maximal entre les rafraichissements}}\,/\,{\text{nombre de rangées à rafraichir}}\,$
Par exemple, la génération actuelle (2012) de puces DDR SDRAM a un temps maximal entre les rafraîchissements de 64 ms et 8192 lignes. L'intervalle entre les courtes séries de cycles de rafraîchissement est donc de 7,8 μs$^,$.

## L'overhead de rafraîchissement

La fraction de temps que la mémoire passe à faire les rafraîchissements, appelée l'overhead de rafraîchissement, peut être calculée comme suit :
    ${\text{overhead de rafraichissement}}={\frac {\text{temps requis pour le rafraichissement (en ms)}}{\text{intervalle maximum entre les rafraichissements (en ms)}}}\,$
Par exemple, une puce récente (2012) de SDRAM a 2$^{13}$ = 8 192 lignes et un intervalle maximum entre les rafraîchissements de 64 ms ; le bus mémoire fonctionne à 133 MHz et le cycle de rafraîchissement prend 4 cycles d'horloge. L'overhead de rafraîchissement est donc :
    ${\text{durée d'un cycle de rafraichissement}}=4/f={\frac {4}{1.33(10^{8})\,{\text{Hz}}}}=30\,{\text{ns ;}}\,$
    ${\text{temps requis pour le rafraichissement}}=({\text{durée d'un cycle de rafraichissement}}).({\text{nombre de rangées}})=(30\,{\text{ns}}).(8192)=0.246\,{\text{ms ;}}\,$
    ${\text{overhead de rafraichissement}}={\frac {0.246\,{\text{ms}}}{64\,{\text{ms}}}}=.0038=0.38\%.\,$
Donc, moins de 0,4 % du temps de la puce mémoire est utilisé par les cycles de rafraîchissement. De plus, dans les puces SDRAM, la mémoire de chaque puce est divisée en banques qui sont rafraîchies en parallèle, ce qui permet de réduire encore l'overhead de rafraîchissement. Ainsi, le nombre de cycles de rafraîchissement nécessaires est le nombre de lignes dans une seule banque, qui dans les générations récentes (2012) de puces a été gelé à 8 192.

## L'intervalle de rafraîchissement

L'intervalle de temps maximal entre les rafraîchissements est normalisé par le JEDEC pour chaque technologie DRAM et est mentionné dans les spécifications de la puce par le fabricant. L'intervalle est, en général, de l'ordre des millisecondes. Pour les puces DDR2 SDRAM sorties en 2012, l'intervalle est de 64 ms. L'intervalle de rafraîchissement dépend du rapport entre la charge stockée dans les condensateurs des cellules de mémoire et les courants de fuite. Bien que la taille des condensateurs a été réduite à chaque nouvelle génération de puces de mémoire, les intervalles de rafraîchissement n'ont pas eu à être réduits. Des intervalles de rafraîchissement plus courts auraient signifié qu'une plus grande partie du temps de l'appareil est occupé par le rafraîchissement, laissant moins de temps pour les opérations de lecture et d'écriture. L'overhead de rafraîchissement qui occupait jusqu'à 10 % du temps des premières puces DRAM occupe aujourd'hui (2012) moins de 1 % du temps des puces.
Étant donné que les courants de fuite dans les semi-conducteurs augmentent avec la température, le temps entre les rafraîchissements doit être réduit à haute température. La génération actuelle de puces SDRAM DDR2 modifie l'intervalle entre les rafraîchissements en fonction de la température. Ainsi, l'intervalle est réduit de moitié lorsque la température dépasse 85 °C (185 °F).
La persistance des charges électriques détectables et donc des données dans la plupart des cellules de mémoire DRAM est beaucoup plus longue que l'intervalle de rafraîchissement et peut même être de l'ordre de 1 à 10 secondes. L'intensité des courants de fuite des condensateurs varie considérablement entre les différentes cellules de mémoire sur la même puce. Les manufacturiers doivent utiliser des intervalles de rafraîchissement courts pour garantir le bon fonctionnement des condensateurs les moins performants (c'est-à-dire ceux qui perdent leurs charges le plus rapidement).
Le rafraîchissement de la mémoire DRAM consomme le tiers de la puissance utilisée par les appareils électroniques de faible puissance en mode veille. Des chercheurs ont proposé différentes approches pour étendre l'autonomie des appareils électroniques en réduisant la fréquence des rafraîchissements. Des expériences ont montré que dans une puce DRAM typique, seulement quelques cellules faibles exigent vraiment la fréquence de rafraîchissement spécifié par le fabricant, et ce, seulement dans le haut de la gamme de température spécifiée. À la température ambiante (24 °C), ces mêmes cellules faibles n'ont besoin d'être rafraîchies que toutes les 500 ms pour fonctionner correctement. Si une mémoire peut éviter d'utiliser le 1 % le plus faible de ses pages, cette mémoire n'a besoin d'être rafraîchie qu'une fois par seconde, même à 70 °C, pour fonctionner correctement. Certaines expériences combinant ces deux techniques ont donné de bons résultats à la température ambiante avec des intervalles de rafraîchissement de 10 secondes.

## Autres technologies de mémoire ayant utilisé le processus de rafraîchissement

Plusieurs technologies de mémoire utilisées dans les premiers ordinateurs ont employé des processus de rafraîchissement périodiques, par exemple, les mémoires à ligne de délai et les tubes de Williams.
Dans les mémoires à tores magnétiques, une autre technologie de mémoire du début de l'histoire de l'informatique, la lecture des données effaçait le contenu de la cellule de mémoire, de sorte que chaque cellule de mémoire devait être réécrite après avoir été lue.