Mémoires
La mémoire permet de stocker des informations
- dans le processeur : bascules, registres ($< 1 \textsf{ns}$)
- dans ou hors du processeur : mémoire statique ($\approx 10\textsf{ns}$)
- hors du processeur : mémoire dynamique ($\approx 100 \textsf{ns}$)
- hors du processeur : mémoire flash ($\approx 10 \mu\textsf{s} / 50\textsf{ns}$)
- hors du processeur : disque magnétique ($\approx 10 \textsf{ms}$)
- hors du processeur : disque optique ($\approx 150 \textsf{ms}$)
Mémoires
Non volatile
Le contenu est préservé en l'absence d'alimentation
- ROM (Read Only Memory), mémoire morte
contenu figé à la conception
- PROM (Programmable ROM)
contenu programmable une seule fois (fusibles)
- EPROM (Erasable PROM)
contenu programmable et effaçable (par UV)
- EEPROM (Electrically Erasable PROM)
contenu programmable et effaçable électriquement
- Mémoire flash (Electrically Erasable PROM)
effaçable électriquement par page (grille flottante)
Mémoires
Volatile
Le contenu est perdu en l'absence d'alimentation
- SRAM (Static Random Access Memory)
contenu stable (bascules RS, 6 transistors), rapide
- DRAM (Dynamic RAM)
contenu évanescent (capacité), lecture destructrice
- SDRAM (Synchronous DRAM)
Mémoire dynamique fonctionnant de manière synchrone
- DDR SDRAM (Double Data Rate SDRAM)
SDRAM permettant deux accès par cycle d'horloge (un par front)
Mémoires
Structure d'un boîtier
Les cellules de mémoire sont organisées en matrice
- une partie de l'adresse sélectionne une ligne, l'autre une colonne
- pour la mémoire dynamique, on rafraîchit colonne par colonne
Mémoires
Modules
Les boîtiers de mémoire sont organisées en modules
- SIMM (Single Inline Memory Module)
- DIMM (Dual Inline Memory Module)
Mémoires
Mémoire centrale
- mémoire située près du processeur
- RAM, mémoire flash
- de quelques Mo à quelques Go
Mémoire de masse
- stockage de longue durée
- disques durs magnétiques, SSD
- plusieurs centaines de Go à quelques To
Archivage
- stockage de très longue durée
- bandes magnétiques
- centaines de To
- lent, accès séquentiel, faible coût
Hiérarchies de mémoires
Le problème
- rapide $\Rightarrow$ cher + faible capacité (SRAM)
- grande capacité $\Rightarrow$ lent (DRAM, disque)
Solution
- combiner une petite mémoire rapide…
- … avec une grande mémoire lente
- et faire en sorte que les données voulues
soient souvent dans la mémoire rapide !
Hiérarchies de mémoires
Principes
Localité temporelle
Quand on accède à une donnée, il y a des chances
qu'on y accède de nouveau bientôt :
- boucles
- usage répété de variables
Localité spatiale
Quand on accède à une donnée, il y a des chances
qu'on accède ensuite à des données voisines :
- séquentialité du code, boucles
- tableaux, codage contigu de l'information
Hiérarchies de mémoires
Application
Localité temporelle
- on conserve dans une mémoire rapide
les données que l'on consulte
- quand la mémoire rapide est pleine,
on élimine les données les plus anciennes
Localité spatiale
- on charge dans la mémoire rapide les données
voisines de celle que l'on consulte
On mémorise d'où viennent les données présentes
dans la mémoire rapide (descripteur)
Hiérarchies de mémoires
Cache
- petite mémoire statique, grande mémoire dynamique
- caches L1 séparés pour les instructions et les données
Cache de disque
-
mémoire dynamique, disque dur :
but = accélerer les accès au disque
Mémoire virtuelle
-
mémoire dynamique, disque dur :
but = augmenter la capacité mémoire