• Aucun résultat trouvé

Construction des mémoires

Dans le document Architecture, Système, Réseau 1 Protopoly (Page 42-47)

Remerciements : Toutes les figures compliquées de ce chapitre sont coupées d’un corrigé de TD rédigé par Jérémie Detrey. Des étudiants comme cela, on n’en fait plus.

4.2. CONSTRUCTION DES MÉMOIRES 43

4.2.1 Le verrou (latch) et le registre (Flip-Flop)

La figure 4.2 montre un petit circuit, construit à partir d’un multiplexeur, qui n’est absolument pas un circuit combinatoire bien formé (pourquoi ?).

On l’appelle verrou. Il recopie D (data) sur Q lorsque Keep vaut 0, et garde l’état précédent lorsque Keep vaut 1. Remarquez que ce n’est pas encore mon registre : il ne mémorise que la moitié du temps.

Et pourquoi la sortie s’appelle Q ? Je ne sais pas, elle s’appelle toujours comme ça2.

1 0

Q D

Keep

FIGURE4.2 – Un verrou. Exercice : mettez des flèches sur les fils.

Sur la figure 4.3, on colle l’un derrière l’autre deux verrous fonctionnant sur les états différents de Keep. Sauf que du coup Keep est renommé Horloge (clockou Ck).

1

e 0 1

0

Ck

1 0

s

FIGURE4.3 – Construction du flip-flop. Exercice : mettez des flèches sur les fils.

Convaincons-nous qu’on obtient le registre (ou Flip Flop) de la figure 4.1 p.41.

Le premier verrou est passant sur l’horloge basse, le second sur l’horloge haute. Ainsi, lorsque l’horloge vaut 0, la valeur de e est placée à l’entrée du second verrou (flip). Mais le second verrou ne la laisse pas passer. Jusqu’à ce que l’horloge passe de 0 à 1 (flop) : alors la valeur de e est mémorisée dans le premier verrou (et transférée à la sortie par le second verrou, qui est devenu passant). Lorsque l’horloge repasse à 0, c’est le second verrou qui mémorise à son tour la valeur (qui est toujours la valeur qu’avait e au front montant précédent). Le premier redevient passant mais on s’en fiche : on est revenu au début du paragraphe.

Ce flip-flop est une mémoire statique (l’information est stable, on peut alimenter une autre porte avec) mais volatile (elle disparaît quand on coupe l’alimentation).

On aura souvent besoin d’y ajouter une entrée resetqui définit son état initial. Ce sera un multiplexeur sur l’entrée e.

On aura aussi souvent besoin d’y ajouter une entréeclock enable(ou ce). Comme son nom ne l’indique pas, ce sera également un multiplexeur sur l’entrée e. On verra dans la suite qu’il vaut mieux s’interdire de mettre de la logique sur l’horloge.Parfois cette entrée s’appelle WE pour Write Enable. Parfois elle s’appelle Load.

2. Dans la vraie vie, c’est à dire dans les vieux bouquins recopiés sur Wikipedia, vous trouverez des circuits qui sont des verrous mais qui sont appelés bascule RS et bascule JK, et des variantes de flip-flop qui sont appelés bascule D. C’est historique mais je n’aime pas car cela prête à confusion : le mot “bascule” est pour cette raison banni de ce poly. Pour les 0.5% d’entre vous qui auront besoin de se frotter à la vraie vie, comprenez bien la différence entre un verrou et un flip-flop, et tout ira bien.

4.2.2 Autres technologies de point mémoire

On sait faire des points mémoiredynamiques: en stockant l’info juste dans une capacité. Des-sin. Avantage : c’est plus petit. Inconvénient : la lecture est destructrice. De plus la capacité se décharge lentement, il faut la regénérer périodiquement.

Question : laquelle est la plus rapide ?

Réponse si vous avez suivi les transistors de la dernière fois : le point mémoire statique est plus rapide, puisqu’il peut fournir plus de courant (dans un point mémoire dynamique, on utilise le condensateur le plus petit possible).

On sait aussi faire des mémoiresnon volatiles: par exemple la surface d’un disque dur, avec des particules qui peuvent être aimantées dans un sens ou dans l’autre. Dans le CDRW on a deux états stables d’un alliage (amorphe ou cristallin).

Mémoire flash: on isole la grille d’un transistor, et on y piège des électrons par claquage. C’est une mémoire statique et non volatile, haute densité, à lecture non destructrice (puisque le transis-tor reste bloqué ou passant). Inconvénient : écriture relativement lente (haute tension), seulement 100 000 cycles d’écriture.

Actuellement, il y a pas mal d’agitation pour trouver la mémoire ”idéale” :

— petit point mémoire

— rapide

— non volatile, 10 ans de rétention d’information

— résistante à1015cycles de lecture/écritures

— pas chère à construire

Aucune des solutions existantes (googlez MRAM, FeRAM, RRAM, etc.) ne réunit toutes ces qua-lités... mais il y a un gros gros marché pour le premier qui y arrive.

4.2.3 Mémoire adressable, première solution

L’interface d’une mémoire2k×mcomprend :

— un signal d’adresseAsurkbits,

— un signal de données entrantesDI surmbits,

— un signal de données sortantesDOsurmbits,

— un signal d’horlogeClk, et

— un signalwrite enableWE.

On la schématise de la manière suivante :

WE k A

DO m DI m

Elle repose sur une grille de2klignes demregistres/flip-flops munis declock enable. Chacun desmbits deDI est distribué aux2kregistres correspondants, le choix du registre dans lequel la donnée sera écrite étant réalisé grâce auxCE.

En effet, en démultiplexant le signalWEselon l’adresseA, on obtient2ksignauxWEi, chacun distribué aux registres de la ligne correspondante.

Enfin, les2ksortiesDOides lignes de registres sont multiplexée selonApour sélectionner la valeur de la ligne demandée.

4.2. CONSTRUCTION DES MÉMOIRES 45

En détail ici, la construction du démultiplexeur pourWE :

...

On se donne désormais aussi la porte trois-états (aussi appelée porte de transmission). Elle agit comme un interrupteur. Ci-dessous son schéma et sa réalisation à l’aide d’un inverseur et de deux transistors CMOS :

Ctrl

In Out In

Ctrl

Out

On se donne ce coup-ci une interface sensiblement différente pour la mémoire. On supprime le signal d’horloge Clk et on rajoute un signalenable notéEN qui contrôle le moment où les données sont lues ou écrites.

C’est ce signalEN qui va être démultiplexé selon l’adresseAen2k−1lignesENi. De même que pour la version précédente, le signalENide chaque ligne va être distribué auxmcellules mémoire composant cette ligne.

Pour éviter d’utiliser un multiplexeur pour sélectionner la bonne valeur de DO, on fait ici appel aux portes trois-états : on se donnemfils verticauxDOj, correspondant chacun à un bit de DO. Grâce aux portes trois-états, on peut isoler ce filDOjde la sortieQde chacun des éléments de mémorisation correspondant au bit de rangj, sauf pour la ligneisélectionnée par le signal ENi.

Pour pouvoir écrire dans un élément de mémorisation, on peut réutiliser ces fils verticaux DOj et imprimer la valeurDIjdessus, avec suffisamment de puissance pour écraser l’ancienne valeurQcontenue dans les cellules sélectionnées. Comme les éléments de mémorisation choisis ici sont de simples bistables, il faut aussi changer la valeur de Qen même temps que celle de Q. On dédouble donc les fils verticaux pour former les pairesDIjetDIj. L’amplification de ces deux signaux est réalisée avec de gros buffers / inverseurs. Enfin, le signalWE vient contrôler des portes trois-états sur ces fils pour les déconnecter des colonnes de mémorisation en cas de lecture.

Et pourquoi on a fait tout cela ? Eh bien comptez les transistors par point mémoire : on est passé de 18 (un flip-flop) à 8 (2 par inverseur, 2 par porte de transmission).

Par ailleurs, une mémoire dynamique va ressembler beaucoup à cette seconde solution.

Enfin, pour obtenir un circuit plus carré, on peut découper les fils d’adresse en deux moitiés, qui vont adresser lignes et colonnes.

Dans le document Architecture, Système, Réseau 1 Protopoly (Page 42-47)