Mémoire principale et mémoire cache
La mémoire principale est le deuxième grand sous-système d'un ordinateur (figure ci-dessous). Elle consiste en un ensemble d'emplacements de stockage, chacun possédant un identifiant unique, appelé adresse. Les données sont transférées vers et depuis la mémoire par groupes de bits appelés mots. Un mot peut être un groupe de 8 bits, 16 bits, 32 bits ou 64 bits (et plus). Si le mot est composé de 8 bits, on parle d'un octet. Le terme "octet" est si courant en informatique qu'un mot de 16 bits est parfois appelé un mot de 2 octets, ou un mot de 32 bits un mot de 4 octets.
Espace d'adressage
Pour accéder à un mot en mémoire, il faut un identifiant. Bien que les programmeurs utilisent un nom pour identifier un mot (ou une collection de mots), au niveau matériel, chaque mot est identifié par une adresse. Le nombre total d'emplacements identifiables de façon unique dans la mémoire est appelé l'espace d'adressage. Par exemple, une mémoire de 64 kilo-octets avec une taille de mot de 1 octet a un espace d'adressage qui va de 0 à 65 535.
Le tableau ci-dessous indique les unités utilisées pour faire référence à la mémoire. Notez que la terminologie est trompeuse : elle se rapproche du nombre d'octets en puissances de 10, mais le nombre réel d'octets est en puissances de 2. Les unités en puissances de 2 facilitent l'adressage.
Unité | Nombre exact d'octets | Approximation |
---|---|---|
Kilo octet | \(2^{10}\) (1024) octets | \(10^{3}\) octets |
Méga octet | \(2^{20}\) (1 048 576) octets | \(10^{6}\) octets |
Giga octet | \(2^{30}\) (1 073 741 824) octets | \(10^{9}\) octets |
Téra octet | \(2^{40}\) octets | \(10^{12}\) octets |
Adresses sous forme de séquences binaires
Étant donné que les ordinateurs fonctionnent en stockant des nombres sous forme de modèles de bits, une adresse mémoire est également représentée sous forme de modèle de bits. Ainsi, si un ordinateur a 64 kilo-octets (\(2^{16}\)) de mémoire avec une taille de mot de 1 octet, nous avons besoin d'un modèle binaire de 16 bits pour définir une adresse. Les adresses peuvent être représentées comme des entiers non signés (nous n'avons pas d'adresses négatives). En d'autres termes, le premier emplacement est appelé adresse 0000000000000000 (adresse 0) et le dernier emplacement est appelé adresse 11111111111111111 (adresse 65535). En général, si un ordinateur a N mots de mémoire, nous avons besoin d'un entier non signé de taille \(log_2 N\) bits pour faire référence à chaque emplacement mémoire.
Types de mémoire
Il existe deux principaux types de mémoire : la RAM et la ROM.
RAM
La mémoire vive (RAM) constitue la majeure partie de la mémoire principale d'un ordinateur. Dans un dispositif à accès aléatoire, un élément de données peut être consulté de manière aléatoire - en utilisant l'adresse de l'emplacement mémoire - sans qu'il soit nécessaire d'accéder à tous les éléments de données situés avant lui. Cependant, le terme prête à confusion, car la ROM est également accessible de manière aléatoire. Ce qui distingue la RAM de la ROM, c'est que la RAM peut être lue et écrite. Le CPU peut écrire quelque chose dans la RAM et l'écraser plus tard. Une autre caractéristique de la RAM est qu'elle est volatile : les informations (programme ou données) sont perdues si l'ordinateur est éteint. En d'autres termes, toutes les informations de la RAM sont effacées si vous éteignez l'ordinateur ou s'il y a une panne de courant. La technologie RAM est divisée en deux grandes catégories : SRAM et DRAM.
SRAM
La technologie de RAM statique (SRAM) utilise des portes à bascule traditionnelles pour conserver les données. Les portes conservent leur état (0 ou 1), ce qui signifie que les données sont stockées tant que l'alimentation est sous tension et qu'il n'est pas nécessaire de rafraîchir les emplacements mémoire. La SRAM est rapide mais chère.
DRAM
La technologie RAM dynamique (DRAM) utilise des condensateurs, des appareils électriques capables de stocker de l'énergie, pour le stockage des données. Si un condensateur est chargé, l'état est 1 ; s'il est déchargé, l'état est 0. Parce qu'un condensateur perd une partie de ses charges avec le temps, les cellules de mémoire DRAM doivent être rafraîchies périodiquement. Les DRAM sont lentes mais peu coûteuses.
ROM
Le contenu de la mémoire morte (ROM) est écrit par le fabricant, et l'unité centrale peut lire la ROM, mais pas y écrire. Son avantage est qu'elle est non volatile : son contenu n'est pas perdu si vous éteignez l'ordinateur. Normalement, elle est utilisée pour les programmes ou les données qui ne doivent pas être effacés ou modifiés même si vous éteignez l'ordinateur. Par exemple, certains ordinateurs sont équipés d'une ROM qui contient le programme d'amorçage qui s'exécute lorsque nous allumons l'ordinateur.
PROM
Une variante de la ROM est la mémoire morte programmable (PROM). Ce type de mémoire est vierge lorsque l'ordinateur est expédié. L'utilisateur de l'ordinateur, avec un équipement spécial, peut y stocker des programmes. Lorsque les programmes sont stockés, il se comporte comme une ROM et ne peut pas être écrasé. Cela permet à un utilisateur d'ordinateur de stocker des programmes spécifiques dans la PROM.
EPROM
Une variante de la PROM est la mémoire morte programmable effaçable (EPROM). Il peut être programmé par l'utilisateur, mais peut également être effacé avec un dispositif spécial qui applique une lumière ultraviolette. L'effacement de la mémoire EPROM nécessite le retrait physique et la réinstallation de l'EPROM.
EEPROM
Une variante de l'EPROM est la mémoire morte programmable effaçable électriquement (EEPROM). L'EEPROM peut être programmée et effacée à l'aide d'impulsions électroniques sans être retirée de l'ordinateur.
Hiérarchie de la mémoire
Les utilisateurs d'ordinateurs ont besoin de beaucoup de mémoire, en particulier d'une mémoire très rapide et peu coûteuse. Cette demande n'est pas toujours possible à satisfaire : une mémoire très rapide n'est généralement pas bon marché. Un compromis doit être trouvé. La solution est des niveaux hiérarchiques de mémoire (la figure ci-dessous). La hiérarchie est basée sur les éléments suivants :
- Utiliser une très petite quantité de mémoire rapide coûteuse lorsque la vitesse est cruciale. Les registres à l'intérieur de l'unité centrale sont de ce type.
- Utiliser une quantité modérée de mémoire à vitesse moyenne pour stocker les données auxquelles vous accédez souvent. La mémoire cache est de ce type.
- Utiliser une grande quantité de mémoire à faible vitesse pour les données auxquelles vous accédez moins souvent. La mémoire principale est de ce type.
Mémoire cache
La mémoire cache est plus rapide que la mémoire principale mais plus lente que le CPU et ses registres. La mémoire cache, qui est normalement de petite taille, est placée entre l'unité centrale et la mémoire principale.
La mémoire cache contient à tout moment une copie d'une partie de la mémoire principale. Lorsque la CPU a besoin d'accéder à un mot de la mémoire principale, elle suit cette procédure :
- Le CPU vérifie le cache.
- Si le mot est là, il copie le mot : sinon, le CPU accède à la mémoire principale et copie un bloc de mémoire en commençant par le mot souhaité. Ce bloc remplace le contenu précédent de la mémoire cache.
- Le CPU accède au cache et copie le mot.
Cette procédure peut accélérer les opérations ; si le mot est dans le cache, on y accède immédiatement. Si le mot n'est pas dans le cache, le mot et un bloc entier sont copiés dans le cache. Comme il est probable que l'unité centrale, dans son prochain cycle, devra accéder aux mots qui suivent le premier mot, l'existence du cache accélère le traitement.
On peut se demander pourquoi la mémoire cache est si efficace malgré sa petite taille. La réponse réside dans la "règle des 80-20". Il a été observé que la plupart des ordinateurs passent généralement 80% de leur temps à accéder à seulement 20% des données. En d'autres termes, les mêmes données sont consultées encore et encore. La mémoire cache, grâce à sa grande vitesse, peut retenir ces 20% pour rendre l'accès plus rapide au moins 80% du temps.