# Mémoire (informatique)

En informatique, la mémoire est un dispositif électronique numérique qui sert à stocker des données. C'est un dispositif capable d'enregistrer, de conserver et de restituer des informations.
La mémoire est un composant essentiel, présent dans tous les ordinateurs, les consoles de jeux, les GPS et de nombreux appareils électroniques.
Les mémoires sont vendues sous forme de pièces détachées de matériel informatique, ou de composants électroniques. Les différences entre les pièces sont la forme, l'usage qui en est fait, la technique utilisée, la capacité de stockage et le rapport entre le coût et la capacité.
La technique la plus courante utilise des semi-conducteurs parfois associés à des composants mécaniques. On distingue mémoire vive, mémoire morte et mémoire de masse.
Les capacités de mémoire et la miniaturisation de ses supports ont depuis quelques décennies grandi au rythme de la loi de Moore, laquelle pourrait, éventuellement, être bientôt dépassée, grâce à l'utilisation de skyrmions et d'antiskyrmions pour stabiliser les nanosystèmes spintroniques, au profit du pouvoir de traitement des ordinateurs$^,$.

## Organisation de l'information

Les informations en mémoire sont présentes de manière binaire pour l'ordinateur. L'unité de base, le plus petit élément de stockage, est le bit. Ceux-ci sont généralement groupé par octet (parfois appelé selon le mot anglais byte), c'est-à-dire groupe de huit bits. Enfin les octets peuvent être regroupés en mots. Dans la plupart des mémoires, les informations sont classées par adresses. Une adresse est une valeur numérique référençant un élément de mémoire.

## Caractéristiques
### Capacité (taille)

La capacité désigne le nombre d'information que peut contenir la mémoire. Elle s'exprime en nombre de mots ou d'octets.

### Type d'accès

Le type d'accès à la mémoire peut être séquentiel ou direct. Dans un accès séquentiel, on doit parcourir toutes les informations une à une avant d'accèder à l'information qui nous intéresse. Ce type d'accès est plus lent et on le retrouve dans des techniques comme les bandes magnétiques ou les cartes perforées. En accès direct, chaque information a une adresse propre, on y accède directement. C'est le type d'accès utilisé par la mémoire centrale de l'ordinateur.
L'accès semi-séquentiel existe également. C'est le cas de l'accès au disque-dur, qui a un accès direct au cylindre et un accès séquentiel au secteur sur un cylindre.
L'accès associatif, utilisé par la mémoire cache, caractérise une mémoire organisée par couple de valeurs. En envoyant la première valeur du couple, si celle-ci existe, la mémoire va renvoyer la seconde valeur.

### Temps d'accès

Le temps d'accès est un élément essentiel permettant de caractériser un type de mémoire. Il définit le temps entre le lancement d'une opération de lecture/écriture et son accomplissement.

### Cycle mémoire

Le cycle mémoire désigne le temps minimal entre 2 accès successifs à la mémoire. Le cycle est un temps plus important que le temps d'accès car la mémoire peut nécessiter des opérations entre deux accès (stabilisation des signaux, synchronisation ...).

### Mémoire vive ou mémoire morte

La propriété vive ou morte de la mémoire permet de caractériser la possibilité de modifier ou non cette mémoire.
La mémoire vive est un type de mémoire où chaque information stockée peut à tout moment être consultée, ou modifiée (voir adressage mémoire). La mémoire centrale des ordinateurs est la plupart du temps une mémoire vive volatile bien que le SSD remplisse de plus en plus souvent ce rôle ;
La mémoire morte à l'inverse est une mémoire où les informations sont écrites une fois mais ne peuvent pas être modifiées. Les mémoires mortes sont utilisées par exemple pour stocker définitivement des logiciels enfouis. La mémoire morte fournit des données invariables. Anciennement, les mémoires mortes contenaient des programmes complets « prêt à l’emploi » pour un démarrage éclair. Avec l'évolution rapide des techniques, seul un système minimaliste tout juste suffisant au démarrage, le BIOS puis le UEFI, a été maintenu.

### Volatilité et rémanence

Un mémoire est dite volatile lorsque les informations qu'elle contient sont perdues lors de la mise hors tension de l'appareil. Il ne faut pas confondre mémoire volatile et mémoire vive : bien que la mémoire vive soit généralement volatile, il existe cependant des mémoires vives non-volatiles (NVRAM).
Par opposition, une mémoire rémanente ou non volatile est une mémoire où les informations sont conservées même après la mise hors tension de l'appareil. Les mémoires rémanentes sont utilisées pour les téléphones portables, les autoradios, les GPS, ou les appareils photo numériques. Une mémoire est dite rémanente quand l'extinction temporaire du système n'en détruit pas le contenu, comme dans le cas des téléphones portables ou des autoradios. Cette mémoire n'est pas toujours gérée comme un système de fichiers et est parfois intégrée dans le même espace logique que la mémoire vive. Ainsi, certains systèmes d'exploitation tel que VAX-11/VMS ou OpenVMS proposent un adressage virtuel, appelé VMS, dans lequel les disques durs apparaissaient comme de la mémoire vive.

## Hiérarchie de mémoire

Pour des raisons économiques, les mémoires sont en général divisées en plusieurs familles traitées, la plupart du temps, différemment par le système d'exploitation. Par ordre de coût croissant (c'est-à-dire de la plus lente à la plus rapide), on peut distinguer :
* Mémoire de masse ou mémoire de stockage : mémoire non volatile, de grande capacité (plusieurs centaines de Mo à plusieurs centaines de Go), sert à stocker à long terme des grandes quantités d'informations. La mémoire de masse est très lente (temps d'accès de l'ordre de la dizaine de millisecondes pour un disque magnétique). Les techniques les plus courantes de mémoires de masse sont électromécaniques, elles visent à obtenir une capacité de stockage élevée à faible coût et ont généralement une vitesse inférieure aux autres mémoires. Les disques durs, bandes magnétiques, SSD ou CD/DVD sont des mémoires de masse ;
* Mémoire centrale : Mémoire vive (RAM), espace principal de stockage du microprocesseur, mais dont le contenu disparaît lors de la mise hors tension de l'ordinateur. La RAM peut être de type DRAM ou SRAM, selon qu'elle doit ou non être rafraichie périodiquement. La SRAM, qui n'a pas besoin d'être rafraîchie, est plus rapide, mais aussi plus coûteuse ;
* Mémoire cache : Il s'agit d'une mémoire intermédiaire entre la mémoire centrale et le processeur, de type SRAM. Elle sert à conserver un court instant des informations fréquemment consultées. Les techniques des mémoires caches visent à accélérer la vitesse des opérations de consultation. En effet, le débit de la mémoire centrale est très lent par rapport au débit requis par le processeur. En plaçant les informations en avance dans le cache, on accélère la vitesse de lecture des informations par le processeur. La mémoire de cache a une très grande vitesse, et un coût élevé pour une faible capacité de stockage ;
* Registre de processeur : intégré au processeur. Ce type de mémoire est très rapide (temps d'accès du même ordre de grandeur qu'un cycle de processeur) mais aussi très cher et est donc réservé à une très faible quantité de données (capacité de quelques dizaines d'octets).

## Ordinateur parallèle et mémoire partagée

Un ordinateur parallèle est équipé de plusieurs unités de calcul. Selon sa construction, il peut être équipé d'une seule unité de mémoire utilisée de manière commune par toutes les unités de calcul, c'est la mémoire partagée, ou chaque unité de calcul est équipée de sa propre unité de mémoire, cette configuration est dite à mémoire distribuée.

## Matériel informatique

En 2015, les ordinateurs sont équipés de plusieurs types de mémoires, utilisées alternativement, pour des raisons de vitesse et de coût : le processeur utilise en priorité la mémoire cache, puis la mémoire vive (RAM), et enfin la mémoire de masse.
On peut trouver les mémoires sous différentes formes :

### Circuits intégrés

    La plupart des mémoires électroniques sont sous forme de circuits intégrés, ou sont directement intégrées dans les puces des processeurs ou contrôleurs (par exemple
    assemblage en stacked die).

### Barrettes RAM

    Les barrettes de mémoire sont des circuits imprimés normalisés, des formats tels SIMM ou DIMM sont largement utilisés dans les ordinateurs. Il s'agit généralement de mémoires volatiles rapides mais de relativement faible capacité.

### Disques durs

    mémoires de masse composées de disques en métal enfermés dans un boîtier blindé. Les informations sont conservées sur les surfaces magnétiques des disques. C'est un type de mémoire de masse de grande capacité encore largement utilisé en 2009 dans nos ordinateurs. Des supports novateurs voient le jour (supports flash de grande capacité, dits Solid State Drive, ou supports holographiques).

### Disquettes

    mémoires de masse composées d'un disque souple à surfaces magnétiques protégées par un étui en matière plastique. Les disquettes étaient largement utilisées jusqu'aux années 1990.

### Bandes magnétiques

    utilisées comme mémoires de masse de grande capacité depuis 1950. DAT, DLT ou LTO sont des formats de bandes magnétiques. Celles-ci ne peuvent être lues que dans un ordre donné et sont couramment utilisées pour effectuer des copies de secours des disques durs.

### Disques optiques

    supports optiques de stockage équipés d'une surface réfléchissante. Les informations sont conservées sous forme de creux microscopiques et lues par la réflexion d'un faisceau monochromatique. Les premiers disques compacts ont été construits en 1980 et les premiers DVD en 1995. Contrairement aux disques durs, les modifications des informations stockées sur ces supports sont restreintes voire impossibles (mémoires mortes), ils sont alors utilisés essentiellement pour le stockage à long terme des données informatiques.

### Clé USB

    boîtier équipé d'une mémoire flash, d'un composant électronique et d'une prise conforme à la norme USB. Les premières clés USB ont été construites au début des années 2000. Les clés USB peuvent être utilisées au même titre que les disquettes magnétiques comme support de transfert de données, de stockage à long terme, voire de mémoire de masse.
Les techniques de stockage mécaniques, par exemple par rubans perforés ont été largement utilisés dès le début de l'informatique, puis abandonnés au profit de supports plus pratiques et plus rapides.

## Autres types de mémoire
### Différentes cartes mémoire, telles qu'une carte SD, xD et CompactFlash.Mémoire flash

    mémoire rémanente dont le contenu peut être intégralement effacé en une seule opération. Certaines mémoires de ce type pouvaient être effacées par une exposition aux ultraviolets.

### Mémoire virtuelle

    mécanisme qui permet de donner plus de mémoire au processeur pour travailler, en simulant la présence d'un type de mémoire tout en utilisant un autre type (par exemple un disque dur). Il est utilisé par exemple pour simuler la présence de mémoire vive en utilisant de la mémoire de masse.

### Mémoires adressable par contenu

    Celles-ci sont utilisées notamment pour créer des tableaux associatifs.

## Histoire

Au cours de l’histoire, diverses techniques de mémoire ont vu le jour. L’amélioration des techniques de création a produit des mémoires toujours plus petites, moins coûteuses, consommant moins d'énergie, avec une capacité toujours plus grande, et une vitesse plus élevée.
* L’usage de la mémoire dans les ordinateurs a été introduit par le concept de l'architecture de von Neumann, en 1944;
* Les premiers disques durs ont été construits en 1956. Le disque DEC RP07, construit en 1970, pesait 180 kg. Un disque dur des années 2000 pèse moins de 1 kg, tout en ayant une capacité de stockage supérieure.
Les mémoires à tores de ferrite sont des mémoires vives non volatiles utilisées dans les années 1960 à 1970. Ces composants sont faits d’un réseau de fils de cuivre dans lequel sont entremêlés des anneaux en céramique ferromagnétique. Les mémoires utilisant cette technique sont volumineuses et lourdes. Cette technique a été remplacée par des semi-conducteurs et des circuits intégrés.
Les premières générations de mémoires vives consommaient beaucoup d’électricité. L’utilisation de la technique CMOS a permis de concevoir et produire des composants beaucoup moins gourmands. Ces composants, associés à une minuscule pile, ont permis la construction de mémoires rémanentes, utilisées par exemple dans les cartes à puce.
La diminution du nombre d’électrons nécessaires au stockage d’un bit accroît la vitesse de la mémoire. La recherche vise des techniques qui n’utiliseraient qu’un seul électron (ou quelques-uns) à la place de près d’un demi-million nécessaires aujourd’hui au stockage d’un bit, et combineraient la grande miniaturisation et la vitesse des mémoires dynamiques actuelles, avec la rémanence des mémoires mortes.

## Techniques
### Mécanique

Le boulier est une forme primaire de stockage d'information numérique mécanique. À partir du XVIIe siècle, on construit des calculatrices mécaniques dont les rouages conservent en mémoire au moins une variable. Les rubans et cartes perforées ont été historiquement les premiers supports informatiques de masse. Ils ont été utilisés depuis le XVIIIe siècle. Un palpeur actionnait le mécanisme quand il rencontrait un trou. En télégraphie, le palpeur ouvre ou ferme un circuit électrique. Plusieurs palpeurs en parallèle permettent l'enregistrement d'un code Baudot.
Au XXe siècle, la lecture optique améliore la longévité des cartes et la rapidité de lecture. Les enregistrements magnétiques et électroniques supplantent définitivement les cartes et rubans.

### Électromécanique

Les systèmes électromécaniques à base de relais et sélecteurs rotatifs ont été parmi les premiers systèmes fiables destinés à mémoriser des informations. Les relais enregistrent un bit, les sélecteurs rotatifs enregistrent une valeur numérique, souvent de 0 à 9, parfois de 0 à 7 (octal), 11 (format horaire), 15 (hexadécimal), 23 (format horaire), ou 99. Des mécanismes semblables à ceux des calculatrices mécaniques permettent la manipulation des informations. Ces systèmes président les autocommutateurs téléphoniques.

#### Support magnétique

De nombreux systèmes de stockage d'information utilisent des supports magnétiques : disque dur, disquette, bande magnétique, etc. Du fait de la baisse du prix des systèmes électroniques qui sont à la base des clés USB et disques SSD, les supports magnétiques ont tendance à être désormais principalement employés pour stocker de gros volumes de données auxquels la rapidité d'accès n'est pas primordiale : sauvegarde, fichiers médias, etc. Ont aussi existé les mémoires à bulles qui, après avoir suscité de grands espoirs, n'ont été que brièvement commercialisées.

#### Support optique

D'abord employés uniquement en lecture de cartes et rubans perforés, le support optique sert aussi pour les films à son digital à la fin du XXe siècle. Tant que seule la photographie permet d'utiliser la lumière pour l'écriture, le support optique reste peu répandu. Le disque à lecture et écriture par laser permet dans les années 1990 l'utilisation plus générale du support optique pour l'informatique.
Depuis cette époque, les supports utilisant des lasers sont généralisés : CD-ROM, DVD, Blu-ray et formats propriétaires.

### Tore magnétique

La technique du tore magnétique utilisait la capacité d'un tore de ferrite à conserver une information magnétique binaire. Associé à une gestion électronique, les ordinateurs des années 1960-1970, avaient accès à un système mémoire performant (pour l'époque), quoique quelque peu encombrant par rapport à celui de la mémoire dynamique. Il présente par contre un énorme avantage : conserver ces informations pendant plusieurs années sans aucune alimentation électrique.
La photo ci-contre représente la tranche d'un byte (64×64×1). Les mémoires avaient la forme d'un bloc de 20 cm de côté, comportant de 19 à 25 tranches pour former environ 4 K-mots de 19 à 25 bits$^,$. Chaque tore était traversé par trois fils :
* 2 fils pour l'adressage (1 par ligne et 1 par colonne) ;
* 1 fil par bloc pour la commande (lecture ou écriture).
La fabrication des blocs de tore étant entièrement manuelle le coût est devenu trop élevé, surtout lorsque la fabrication des mémoires électroniques a pu être automatisée.

### Support électronique
#### Condensateur

Les condensateurs ont comme première propriété de stocker l'énergie électrique. Ils ont été très tôt utilisés comme mémoires, mais leurs faibles performances les ont cantonnés longtemps à des rôles subalternes de filtrage.
Depuis les progrès de la micro-électronique, c'est la capacité de microscopiques condensateurs organisés en trames, agencés et gérés au sein de puces électroniques qui sert de mémoire numérique rapide pour les ordinateurs modernes. Ces circuits intégrés spécialisés se nomment mémoire dynamique ou DRAM. Le gros défaut est dû à la taille des condensateurs qui sont tellement minuscules que l'information ne peut être conservée intacte que quelques fractions de seconde, ce qui nécessite en permanence de rafraîchir les informations, qui nécessite des circuits annexes.

#### Circuit logique à bascule

Les circuits logiques (bascule) permettent de fabriquer des mémoires. Les mémoires ainsi réalisées peuvent être classées en deux familles : les SRAM et les ROM :
* les SRAM (Static Random Access Memory) : Elles sont réputées très rapides, mais ne peuvent pas être suffisamment intégrées pour rivaliser avec les mémoires dynamiques à condensateurs ;
* les techniques utilisées, pour les « mémoires flash » et autres appellations de mémoire de poche, ont permis de dépasser allègrement les performances des anciennes SRAM au prix de quelques concessions à la vitesse de transfert ;
* les ROM (Read Only Memory) ont l'avantage de ne pas être volatiles : les données qu'elles contiennent restent intactes en absence d'alimentation électrique. Par contre, elles sont lentes d'accès et la modification des données n'est pour certains modèles pas possible.

#### Antifuse

La technique antifuse est utilisée pour les mémoires dites OTP (One Time Programmable), telles les PROM. Chaque case mémoire est constituée d'un fusible éventuellement grillé lors de la programmation, par l'application d'une tension adéquate. Ces mémoires ont un certain nombre d'avantages par rapport à des mémoires plus volatiles, comme leur robustesse en milieu agressif (ex. spatial) ; leur contenu est toutefois inaltérable après leur première programmation.