Un circuit mémoire permet de stoker des données exprimées en binaire. Ces données peuvent être des nombres entiers, réels ou encore des caractères représentés en binaire (ASCII, UTF, ...).
Un circuit mémoire est composé de :
La capacité mémoire définit le nombre d'octets ou de bits que stocker le circuit :
Exemple :
Une mémoire avec 10 lignes d'adresses et 8 bits de données à une capacité de
Norme SI
Norme CEI
Le temps d'accès à la mémoire est le temps de propagation entre adresses et données ou encore entre signal d'activation et données. Le temps d’accès aux données généralement en ns.
Les entiers ou réels sont généralement représentées sous la forme d'une suite d'octets (8 bits). Cela fait qu'il y a deux modes de représentations (boutisme ou endianness) :
Ces représentations dépendent entièrement du processeur ou du programme.
Pour comprendre la suite, il est vivement recommandé, si cela n'est déjà fait, de lire le chapitre concernant la représentation et l'addition des entiers signés et non signés en binaire.
Un entier de 32 bits est défini sur les bits de D31...D0.
Un réel en simple précision est défini avec un exposant décalé sur 8 bits ed7...ed0 et une mantisse sur 23 bits après la virgule sur m-1...m-23. La valeur du réel s'écrit R=(-1)s×(1 + m)×2Ed-127 avec 0≤m<1 et Ed sur 8 bits non signés.
Entier 32 bits little endian
Les bits 0 à 7 de l'entier sont à l'adresse 00, et ainsi de suite jusqu'au bit 31.
Entier 32 bits big endian
Les bits 24 à 31 de l'entier sont à l'adresse 00, et ainsi de suite jusqu'au bit 0.
Réel little endian
Les bits les plus faibles -23 à -16 sont à l'adresse 00, le bit de signe est le bit 7 du dernier octet, le bit 0 de l'exposant décalé est le bit 7 de l'avant dernier octet.
Réel big endian
Les bits les plus faibles -23 à -16 sont à la dernière adresse, le bit de signe est le bit 7 du premier octet, le bit 0 de l'exposant décalé est le bit 7 du deuxième octet.
Pour l'enregistrement des caractères, il n'y a pas de règle de calcul, il faut donc utiliser une table de codage, comme par exemple la table qui représente le code ASCII.
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | |
---|---|---|---|---|---|---|---|---|
0 | 0 | @ | P | ` | p | |||
1 | ! | 1 | A | Q | a | q | ||
2 | " | 2 | B | R | b | r | ||
3 | # | 3 | C | S | c | s | ||
4 | $ | 4 | D | T | d | t | ||
5 | % | 5 | E | U | e | u | ||
6 | & | 6 | F | V | f | v | ||
7 | ' | 7 | G | W | g | w | ||
8 | ( | 8 | H | X | h | x | ||
9 | ) | 9 | I | Y | i | y | ||
a | * | : | J | Z | j | z | ||
b | + | ; | K | [ | k | { | ||
c | , | < | L | \ | l | | | ||
d | - | = | M | ] | m | } | ||
e | . | > | N | ^ | n | ~ | ||
f | / | ? | O | _ | o | |
Le code ASCII, en hexadécimal, du caractère se détermine à partir du digit de la ligne pour le poids faible et du digit de la colonne pour le poids fort.
Exemple :
la colonne 3 et la ligne 8 donnent la valeur $38 en hexadécimal qui correspond au caractère '8'.
Les deux premières colonnes sont vides, car elles comprennent des caractères dit "non imprimables" qui sont des caractères de contrôle de l'affichage à l'écran ou sur l'imprimante ou encore des caractères de contrôles pour la transmission de texte :
Elles sont dites non volatile et à lecture seule. Les données stockées sont conservées lorsque le circuit n'est plus aliménté. Elles contiennent les codes des programmes ainsi que les constantes. Certaines peuvent être reprogrammables.
Elles sont composées d'un décodeur ligne qui active une ligne de la matrice en fonction de la valeur de l'adresse. Chaque colonne de la matrice mémoire correspond à un bit de donnée.
Le signal CS active les valeurs de ces colonnes en sortie.
Le détail du décodeur ligne montre une matrice de diodes réalisant des fonctions ET (voir chapitre diode). Lorsque toutes les colonnes reliées à la ligne valent 1, la ligne est à 1. Si on observe la table de vérité, on a bien une fonction combinatoire décodeur.
Pour le décodeur (réseau ET), chaque ligne correspond à l'équation booléenne d'un décodeur : , , , . Le réseau de sortie dont les connexions dépendent des données en mémoires sont des fonctions OU à diodes et donnent les équations : et . Ces équations donnent la table de la mémoire :
Adresse | A1 | A0 | D1 | D0 | D |
---|---|---|---|---|---|
0 | 0 | 0 | 1 | 1 | 3 |
1 | 0 | 1 | 0 | 1 | 1 |
2 | 1 | 0 | 1 | 0 | 2 |
3 | 1 | 1 | 0 | 0 | 0 |
Les ROM (Read Only Memory) sont programmées à la conception du circuit. Elles ne peuvent être utilisées que pour les grandes séries. Leurs utilisations est très spécifiques et de moins en moins utilisées.
Les PROM (Programmable Read Only Memory) sont programmées une seule fois. Elles sont appellées mémoires OTP (One time programmable). Le programmation se fait à l'aide d'un programmateur.
Le point de connexion ou point mémoire est, en général, un anti-fusible. A la construction le point mémoire n'est pas connecté, c'est l'application d'une tension de programmation élevée qui claque l'isolant. Ce qui a pour conséquence de connecter le point mémoire.
Ce type de mémoire est également de moins en moins utilisé.
Les EPROM (Erasable Programmable Read Only Memory) sont programmables et effaçables plusieurs fois. La programmation est électrique et l'effacement se fait à l'aide de rayons ultraviolets de longueur d'onde λ=20nm. La programmation nécessite un programmateur adapté, et l'effacement se fait avec une exposition d'environ 20mn, voir plus avec le vieillissement du composant.
Le point mémoire peut être un transistor FAMOS (Floating-gate Avalanche-injection MOS) qui utilise une grille flottante. La programmation se fait à l'aide d'une tension de programmation élevée, qui force les charges électriques à se déplacer dans la grille où elles piégées. Le transistor est passant. L'effacement par exposition aux UV permet d'évacuer ces charges et ainsi de bloquer à nouveau le transistor.
Ce type de mémoire est de moins en moins utilisé.
Les EEPROM (Electrically Erasable Programmable Read Only Memory) programmables et effaçables électriquement. Contrairement à l"EPROM, l'effacement peut être partiel. Cela nécessite un programmateur spécifique qui réalise la programmation et l'effacement.
Le point mémoire est un transistor MNOS (Metal Nitrure Oxide Semiconductor). La programmation se fait à l'aide d'une tension élevée qui déplace des charges électriques dans la grille où elles restent piégées. Le transistor est alors passant. L'effacement, qui peut être sélectif, est réalisé en appliquant une tension inverse afin d'évacuer les charges. Le transistor est à nouveau bloqué.
Ce type de mémoire est toujours utilisé, on trouve de type technologie comme mémoire de données non-volatiles dans les microcontrôleurs (voir atmega8 du chapitre précédent). Lors de l'utilisation, il ne faut pas oublier que l'écriture est une programmation avec un temps d'accès beaucoup plus long que la lecture. Il faut prendre en compte cette caractéristique dans les programmes.
Les Flash EPROM sont programmables et effaçables électriquement in situe, c'est à dire sans ôter le circuit de la carte d'application. Ce type de composant ne nécessite pas de programmateur spécifique.
Le point mémoire est un transistor MOS standard avec une grille standard et une grille flottante.
La programmation se fait à l'aide d'une tension qui déplace des charges dans la grille flottante où elles restent piégées. Dans ce cas on a un transistor MOS bloqué quelque soit la tension appliquée à la grille standard. L'effacement, qui peut être également sélectif, se fait aussi en appliquant une tension inverse qui évacue les charges piégées. Le transistor devient un transistor MOS standard qui peut être commandé par la grille standard.
Il existe deux types d'architectures de ce type de composant :
C'est la mémoire la plus utilisée. Elle sert de mémoire de programme dans les microcontrôleurs (voir atmega8). On la trouve également dans toutes les mémoires des appareils portables : SD, clé USB, .... Pour toutes ces utilisations, il faut pas oublier que l'écriture est une programmation et donc plus longue qu'une lecture.
On propose de retrouver la valeur d'un nombre entier ou réel à partir du schéma de la mémoire en s'appuyant sur l'exemple suivant :
Contenu de la mémoire en binaire et hexadécimal
Adresse | Donnée | ||
---|---|---|---|
0 | 00 | 00000000 | 0 |
1 | 01 | 00000000 | 0 |
2 | 10 | 00110100 | 34 |
3 | 11 | 11000001 | c1 |
Valeur des octets de l'entier enregistré au format little endian avec les poids correspondants.
Le passage d'un nombre en base B sur n digits vers la base 10 s'écrit
La représentation sur 4 octets est donc une représentation en base B=256 et n=4.
poids | 2563=16777216 | 2562=65536 | 2561=256 | 2560=1 |
---|---|---|---|---|
octet | c116 (19310) | 3416 (5210) | 0016 (010) | 0016 (010) |
La valeur de l'entier est : 3241410560
Répartition des bits pour un réel simple précision enregistré au format little endian
signe (s) | exposant décalé (ed) | mantisse (m) | |||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
1 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 1 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
La valeur du réel, de la forme (-1)s×(1 + m)×2ed-127 vaut -11.25
Demander un
Les RAM (Random Acces Memory) sont accessible en lecture et écriture. Elles contiennent les données volatiles du programme (variables). Les données stockées sont perdues lorsque le circuit n’est plus alimenté.
La mémoire est une matrice. Une ligne de la matrice mémoire est sélectionnée par une partie des adresses, une colonne de la matrice mémoire est sélectionnée par l’autre partie des adresses. L’intersection ligne colonne ainsi activée permet d’accéder au point mémoire. On a une matrice mémoire par bit.
L'intersection entre une ligne et une colonne de la matrice mémoire définit l'état d'un bit de donnée pour une valeur d'adresse. C'est la technologie de ce point mémoire qui définit le type de RAM.
Les points mémoires des SRAM (Static Random Access Memory) sont des bascules.
Au démarrage si la mémoire n'est pas initialisée, les bascules prennent un état aléatoire.
Un point mémoire est en général composé de 6 transistors, ce qui fait qu'il est difficile d'intégrer des mémoires de grande capacité.
Elle utilisée comme mémoire de données dans les microcontrôleurs (voir atmega 8).
Les points mémoires des DRAM (Dynamic Random Access Memory) sont des capacités associées à un transistor.
On a 1 transistor par point mémoire, ce qui fait qu'il est plus facile d'intégrer des mémoires de grande capacité. L'inconvénient est que la capacité se décharge au cours du temps, ce qui nécessite une logique de rafraîchissement qui ralentit l'accès à la mémoire.
Il existe diverses architectures de DRAM qui sont utilisées dans les ordinateurs, on peut citer :