Mémoire cache

La mémoire cache (ou tout type de cache) est une mémoire intermédiaire dans laquelle se touvent stockés toutes les informations que le processeur central est le plus susceptible de demander.

Elle sert donc à accélérer la communication entre un élément fournisseur (disque dur par exemple) plus lent que l'élément demandeur (processeur par exemple). Comme ces informations sont immédiatement disponibles, le temps de traitement se trouve diminué d'autant, ce qui mécaniquement accroît notablement les performances de l'ordinateur.

Il existe souvent plusieurs niveaux de mémoire cache : une interne au processeur, une autre intégrée sur la carte mère, mais on peut en avoir aussi sur le disque dur.

Mémoire cache est la traduction littérale de l'expression anglaise cache memory, mais la traduction plus académique est antémémoire. La langue anglaise aurait emprunté au français canadien le mot « cache » (féminin) qui désigne la cachette où le trappeur entrepose des provisions. La différence entre mémoire cache et mémoire tampon réside dans le fait que la mémoire cache duplique l'information, tandis que le tampon exprime l'idée d'une salle d'attente, sans impliquer nécessairement une duplication. Le cache buffer (tampon de cache) du disque ou disk cache (cache de disque) est à la fois un tampon où transite l'information et une mémoire cache qui recopie sous forme électronique les données stockées dans le disque sous forme magnétique.

Sommaire

Fonctionnement

Le cache contient une copie des données originelles lorsqu'elles sont coûteuses (en terme de temps d'accès) à récupérer ou à calculer par rapport au temps d'accès au cache. Une fois les données stockées dans le cache, l'utilisation future de ces données peut être réalisée en accédant à la copie en cache plutôt qu'en récupérant ou recalculant les données, ce qui abaisse le temps d'accès moyen.

Le processus fonctionne ainsi :

  1. L'élément demandeur demande une information ;
  2. Le cache vérifie s'il possède cette information. S'il la possède, il la retransmet à l'élément demandeur. S'il ne la possède pas il la demande à l'élément fournisseur 
  3. L'élément fournisseur traite la demande et renvoie la réponse au cache ;
  4. Le cache la stocke pour utilisation ultérieure et la retransmet à l'élément demandeur.

Divers niveaux de mémoire cache

On trouve une zone de cache :

Mémoire cache des microprocesseurs

Elle est souvent subdivisée en niveaux qui peuvent aller jusqu'à trois. Elle est très rapide, et donc très chère. Il s'agit souvent de Static RAM.

En programmation, la taille de la mémoire cache revêt un attrait tout particulier, car pour profiter de l'accélération fournie par cette mémoire très rapide, il faut que les parties de programme tiennent le plus possible dans cette mémoire cache. Comme elle varie suivant les processeurs, ce rôle d'optimisation est souvent dédié au compilateur. De ce fait, plus la taille de la mémoire cache est grande, plus la taille des programmes accélérés peut être élevée.

C'est aussi un élément souvent utilisé par les constructeurs pour faire varier les performances d'un produit sans changer d'autres matériels. Par exemple, pour les microprocesseurs, on trouve des séries bridées (avec une taille de mémoire cache volontairement réduite), tels que les Duron chez AMD ou Celeron chez Intel, et des séries haut de gamme avec une grande mémoire cache comme les processeurs Optéron chez AMD, ou Pentium 4EE chez Intel.

Un exemple de boucles très courtes qui tient entièrement dans les caches de données et d'instruction, par exemple le calcul suivant (écrit en langage C) :

      long i; double s;
       s=0.;
       for (i = 1; i<50000000; ++i) s+=1./i;
 

Voir aussi


See also: Mémoire cache, AMD, Carte mère, Celeron, Disque dur, Duron, Français québécois, Glossaire informatique, Intel, Langage C