Des registres aux mémoires


Une des limitations principales des registres vus dans le cours précédent est la complexité de chaque cellule. Lorsque l'on souhaite implémenter des milliers (Kilo-bit), millions (Méga-bit) ou milliards de points mémoires (Giga-bit), les cellules et les systèmes de contrôle doivent être les plus compacts possible pour limiter la taille des puces, donc leur coût. Il est par exemple possible d'acheter des cartes mémoire Flash de 32Go (soit 32 milliards d'octets soit 256 millards de bits) à faible coût et encombrement très réduit, comme cité en exemple ci dessous.


Mémoire 32 Go Flash du commerce [https://www.kingston.com/fr/memory-cards] ©2019 Kingston Technology Europe Co LLP

Mémoire 32 Go Flash du commerce [https://www.kingston.com/fr/memory-cards] ©2019 Kingston Technology Europe Co LLP

Une architecture spécifique a été imaginée pour regrouper le plus de cellules possible dans un espace donné, en étant performant autant pour l'écriture que la lecture de chaque cellule.


L'organisation matricielle de la mémoire


La figure ci-dessous illustre une organisation type des mémoires. Celles-ci sont le plus souvent organisées sous forme de matrices de points mémoire élémentaires (memory cell), chaque point pouvant stocker une information binaire, 0 ou 1. La matrice de points mémoire comporte aussi :

  • un décodeur de ligne, à gauche sur le schéma (Row Select),
  • un décodeur de colonne, en bas sur le schéma (Column Select),
  • un circuit de lecture (Read) / écriture (Write), mentionné en bas à droite de la figure.
Organisation de la mémoire en matrice de points élémentaires - A gauche en haut, sélecteur de lignes, en bas à gauche, adresse des colonnes, en bas à droite, circuits de lecture/écriture. Plan de 2^N x 2^M bits de mémoire, avec 2^N lignes et 2^M c

Organisation de la mémoire en matrice de points élémentaires - A gauche en haut, sélecteur de lignes, en bas à gauche, adresse des colonnes, en bas à droite, circuits de lecture/écriture. Plan de 2^N x 2^M bits de mémoire, avec 2^N lignes et 2^M c

Le décodeur de ligne sélectionne une ligne parmi \(2^N\)grâce à un circuit démultiplexeur de N bits.

Le décodeur de colonne sélectionne une colonne sur \(2^M\), grâce à un circuit démultiplexeur de M bits.

La matrice de mémoire est composée de \(2^N*2^M\) cellules mémoire de base adressables en ligne et en colonne. Une valeur typique pour N et M est 10, conduisant à 1024 lignes et 1024 colonnes, ce qui correspond à 1048576 cellules mémoire élémentaires (1 Mega-bit).

Barrette de mémoire du commerce - [https://www.kingston.com/fr/memory-cards] ©2019 Kingston Technology Europe Co LLP

Barrette de mémoire du commerce - [https://www.kingston.com/fr/memory-cards] ©2019 Kingston Technology Europe Co LLP


Concevez et simulez un circuit de décodage de ligne


Le circuit de sélection de ligne décode l'adresse Address[i] et active une seule ligne à la fois. Le circuit de sélection de ligne est basé sur un circuit démultiplexeur. Une ligne passe à 1, tandis que toutes les autres lignes restent à 0. Un exemple de circuit à base de deux fils d'adresse (permettant de coder des nombres de 0 à 3) est donné ci-dessous à gauche, et à base de 3 fils d'adresse (nombres de 0 à 7) à droite. On note l'utilisation de portes ET à n bits, où n est le nombre de bits d'adresse.

Décodeur d'adresse de ligne à 2 bits (gauche, Address[0..1]) et 3 bits (droite, Address[0..2])

Décodeur d'adresse de ligne à 2 bits (gauche, Address[0..1]) et 3 bits (droite, Address[0..2])

En rentrant l'adresse au clavier, le fil correspondant WL[i] passe à 1, tous les autres sont à 0.

 Simulation du décodeur de lignes au moyen d'un clavier hexadécimal

Simulation du décodeur de lignes au moyen d'un clavier hexadécimal


Concevez le circuit de sélection de colonne


Le décodeur de colonne sélectionne une colonne particulière dans la matrice de mémoire pour lire le contenu de la cellule de mémoire sélectionnée (cycle de lecture) ou pour modifier son contenu (cycle d'écriture).

Le sélecteur de colonne est basé sur les mêmes principes que ceux du décodeur de ligne. La principale modification est que les données peuvent circuler verticalement dans les deux sens, soit de la cellule de mémoire au signal DataOut (cycle de lecture, transfert des données de haut en bas), soit du signal DataIn à la cellule (cycle d'écriture, transfert des données de bas en haut).


Simulation du circuit de sélection de colonne (Row decoder) - A gauche, bus d'adresse Address_Col[0..1], en bas sortie du Buffer DataIn ainsi que la sortie inversée ~DataIn

Simulation du circuit de sélection de colonne (Row decoder) - A gauche, bus d'adresse Address_Col[0..1], en bas sortie du Buffer DataIn ainsi que la sortie inversée ~DataIn

L'architecture proposée ici est basée sur des transistors MOS, qui fonctionnent ici comme des interrupteurs. Nous considérons ici 4 colonnes de cellules mémoire BL[0..3] et leur inverse ~BL[0..3], ce qui nécessite 2 signaux d'adresse Address_Col [0] et Address_Col [1], situées à gauche. En mode écriture, Write est à 1, ce qui active les inverseurs 3 états. La donnée DataIn circule vers la droite puis vers le haut, dans la colonne sélectionnée (ici BL[1]), tandis que la donnée inverse est appliquée sur ~BL[1]. Ces données atteignent et modifient la mémoire sélectionnée par le décodeur de ligne, dont le circuit a été vu juste avant.

En mode lecture, Write doit être remis à 0. Les inverseurs 3 états connectés à DataIn et ~DataIn sont alors désactivés, ce qui permet de lire les informations de la cellule mémoire qui transitent via BL[1] et ~BL[1] vers DataOut

L'inverseur trois état est commandé par deux entrées (cf schéma ci-dessous) :

  • la donnée "Dataln" qui va être inversée en sortie,
  • la commande "Write" qui permet :
    • si Write=1 d'activer l'inverseur (le PMOS relié à VDD et le NMOS relié à la masse GND sont passant),
    • si Write=0 de placer la sortie en état haute impédance, en inhibant le PMOS relié à VDD et le NMOS relié à la masse GND. 

Structure d'un inverseur 3 états

Structure d'un inverseur 3 états

Dans  ce chapitre, vous avez découvert l'organisation générale d'une mémoire comprenant l'organisation matricielle, le point mémoire, les circuits de sélection des lignes et des colonnes.

Dans le chapitre suivant, vous apprendrez qu'il existe différents types de mémoire liés à la structure de leur point mémoire élémentaire.