Systèmes électroniques
Fermer ×

Les mémoires

Présentation

Structure générale

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 :

  • lignes d’adresses :
    • accès à une donnée parmi 2m
    • lignes unidirectionnelles (entrées), reliées au bus d’adresses.
  • lignes de données :
    • qui sont organisées en n octets (nx8 bits), reliées au bus de données.
    • qui sont organisées en n octets (nx8 bits), reliées au bus de données.
    • bidirectionnelles : en entrée ou en sortie en focntion du signal R/W̅
  • lignes de contrôles :
    • CS : activation du circuit pour le fonctionnement en bus
    • CS : activation du circuit pour le fonctionnement en bus
    • R/W̅ : choix du sens de l'échange des données pour les mémoires de données

Capacité mémoire

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

Les unités de capacités mémoires ont été définies par la Commission électrotechnique internationale (CEI) pour la première fois en 1998 afin de définir les préfixes binaires des unités de capacité mémoire, mais également avec la norme définie par le Système internationnal (SI).

Norme SI

  • 1 ko = 103 octets = 1000 octets
  • 1 Mo = 106 octets = 1 000 000 octets
  • 1 Go = 109 octets = 1 000 000 000 octets

Norme CEI

  • 1 kio = 210 octets = 1024 octets = 1,024 ko
  • 1 Mio = 220 octets = 1 048 576 octets = 1,048576 Mo
  • 1 Gio = 230 octets = 1 073 741 824 octets = 1,073741824 Go

Temps d'accès

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.

  • TACS : temps d’accès aux données par rapport à l’apparition du signal de validation (logique de décodage)
  • TAA : temps d’attente avant lecture des données.

Représentation des données

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.

Voir la représentation des entiers et réels

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.

Voir la table de codage ASCII
01234567
0 0@P`p
1 !1AQaq
2 "2BRbr
3 #3CScs
4 $4DTdt
5 %5EUeu
6 &6FVfv
7 '7GWgw
8 (8HXhx
9 )9IYiy
a *:JZjz
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 :

  • $0d, qui est le retour chariot (CR pour Carriage Return), est interprété comme un retour en début de ligne.
  • $0a, qui est le saut de ligne (LF pour Line Feed), est interprété comme un passage à la ligne suivante.
  • $0c, qui est le saut de page (FF pour Form Feed), est interprété comme un saut à la page suivante sur les imprimantes.
  • $13, qui est la demande de suspension de transfert (DC3 pour DEvice Control 3 ou Xoff) et $11, qui est la demande de reprise de transfert (DC1 pour Device Control 1 ou Xon), ces codes sont utilisés dans les transmissions de données caractère par caractère.

Les mémoires mortes

Structure générale

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 : L1=A1¯.A0¯ , L2=A1¯.A0 , L3=A1.A0¯ , L3=A1.A0. 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 : D1=L1+L3 et D0=L1+L2. Ces équations donnent la table de la mémoire :

AdresseA1A0D1D0D
000113
101011
210102
311000

ROM

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.

PROM

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é.

EPROM

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 vieillissemnt 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é.

EEPROM

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.

Flash EPROM

Les Flash EPROM sont programmables et effaçables électriqument 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 programmatiion 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.

Jeu de mémoire

Exemple

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

AdresseDonnée
000000000000
101000000000
2100011010034
31111000001c1

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 N 10 = k = 0 n - 1 A k B k

La représentation sur 4 octets est donc une représentation en base B=256 et n=4.

poids2563=167772162562=655362561=2562560=1
octetc116 (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)
313029282726252423222120191817161514131211109876543210
11000001001101000000000000000000

La valeur du réel, de la forme (-1)s×(1 + m)×2ed-127 vaut -11.25

A vous de jouer

Demander un

Solution [ Voir ]

Les mémoires vives

Structure générale

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.

SRAM

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 microcontroleurs (voir atmega 8).

DRAM

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 :