Fonctionnement d'un ordinateur/Les mémoires RAM asynchrones

Un livre de Wikilivres.
Sauter à la navigation Sauter à la recherche
Microarchitecture d'une DRAM asynchrone simple.

Avant l'invention des mémoires SDRAM et DDR, il exista un grand nombre de mémoires différentes, les plus connues étant les mémoires fast page mode et EDO-RAM. Ces mémoires n'étaient pas synchronisées avec le processeur via une horloge. Quand ces mémoires ont été créées, cela ne posait aucun problème : les accès mémoire étaient très rapides et le processeur était certain que la mémoire aurait déjà fini sa lecture ou écriture au cycle suivant.

Les mémoires asynchrones à RAS/CAS : FPM et EDO-RAM[modifier | modifier le wikicode]

Les mémoires asyncrhones les plus connues étaient les mémoires FPM et EDO. Il s'agissait de mémoires à adressage par coïncidence ou à row buffer, avec une adresse découpée en deux : une adresse haute pour sélectionner la ligne, et une adresse basse qui sélectionne la colonne. Cette adresse est envoyée en deux fois : la ligne, puis la colonne. Pour savoir si une donnée envoyée sur le bus d'adresse est une adresse de ligne ou de colonne, le bus de commande de ces mémoires contenait deux fils bien particuliers : les RAS et le CAS. Pour simplifier, le signal RAS permettait de sélectionner une ligne, et le signal CAS permettait de sélectionner une colonne.

Signaux RAS et CAS.

On remarque que la mémoire va prendre en compte les signaux RAS et CAS quand ils passent de 1 à 0 : c'est à ce moment là que la ligne ou colonne dont l'adresse est sur le bus sera sélectionnée. Tant que des signaux sont à zéro, la ligne ou colonne reste sélectionnée : on peut changer l'adresse sur le bus, cela ne désélectionnera pas la ligne ou la colonne et la valeur présente lors du front descendant est conservée.

L'intérieur d'une FPM.

Les mémoires FPM[modifier | modifier le wikicode]

Les mémoires FPM possédaient une petite amélioration, qui rendait l'adressage plus simple. Avec elles, il n'y a pas besoin de préciser deux fois la ligne si celle-ci ne changeait pas lors de deux accès consécutifs : on pouvait garder la ligne sélectionnée durant plusieurs accès.

Sélection d'une ligne sur une mémoire FPM ou EDO.

Certaines FPM se passaient même du signal CAS : le changement de l'adresse de colonne était détecté automatiquement par la mémoire et suffisait à passer à la colonne suivante. Ces mémoires sont dites à colonne statique. Dans ces conditions, un délai supplémentaire a fait son apparition : le tCAS-to-CAS. C'est le temps minimum entre deux sélections de deux colonnes différentes.

Accès en colonne statique.

Les mémoires EDO-RAM[modifier | modifier le wikicode]

L'EDO-RAM a été inventée quelques années après la mémoire FPM. Elle a été déclinée en deux versions : la EDO simple, et la EDO en rafale. L'EDO simple n'apportait que de faibles améliorations vraiment mineures, aussi je me permets de la passer sous silence. Les EDO en rafale effectuent les accès à 4 octets consécutifs automatiquement : il suffit d'adresser le premier octet à lire. Les 4 octets étaient envoyés sur le bus les uns après les autres, au rythme d'un par cycle d’horloge : ce genre d'accès mémoire s'appelle un accès en rafale.

Accès en rafale.

Implémenter cette technique nécessite d'ajouter des circuits dans notre mémoire. Il faut notamment rajouter un compteur, capable de faire passer d'une colonne à une autre quand on lui demande. Le tout état accompagné de quelques circuits pour gérer le tout.

Modifications du contrôleur mémoire liées aux accès en rafale.

Le rafraichissement mémoire[modifier | modifier le wikicode]

Les mémoires FPM et EDO doivent être rafraichies régulièrement. Selon les mémoires, le rafraichissement était géré par le processeur ou de manière totalement automatique. Dans le premier cas, le rafraichissement était déclenché par une commande, provenant du processeur ou du contrôleur mémoire. Celui-ci envoyait une commande précise, qui ordonnait de rafraichir une adresse, parfois une ligne complète. Par la suite, le rafraichissement mémoire est devenu totalement automatique, ni le processeur, ni le contrôleur mémoire ne devant s'en charger. Le rafraichissement est purement le fait des circuits de la mémoire RAM et devient une simple opération de maintenance interne, gérée par la RAM elle-même.

Le rafraichissement manuel[modifier | modifier le wikicode]

Au début, le rafraichissement se faisait ligne par ligne. Le rafraichissement avait lieu quand le RAS passait à l'état haut, alors que le CAS restait à l'état bas. Le processeur, ou le contrôleur mémoire, sélectionnait la ligne à rafraichir en fournissant son adresse mémoire. D'où le nom de rafraichissement par adresse qui est donné à cette méthode de commande du rafraichissement mémoire.

Rafraichissement mémoire manuel.

Par la suite, certaines mémoires ont implémenté un compteur interne d'adresse, pour déterminer la prochaine adresse à rafraichir sans la préciser sur le bus d'adresse. Le rafraichissement était devenu automatique, dans une certaine mesure. Mais le déclenchement du rafraichissement se faisait par une commande externe, provenant du contrôleur mémoire ou du processeur. Cette commande faisait passer le CAS à 0 avant le RAS. Cette méthode de rafraichissement se nomme rafraichissement interne.

Rafraichissement sur CAS précoce.

On peut noter qu'il est possible de déclencher plusieurs rafraichissements à la suite en laissant le signal CAS dans le même état. Ce genre de choses pouvait avoir lieu après une lecture : on pouvait profiter du fait que le CAS soit mis à zéro par la lecture ou l'écriture pour ensuite effectuer des rafraichissements en touchant au signal RAS. Dans cette situation, la donnée lue était maintenue sur la sortie durant les différents rafraichissements.

Rafraichissements multiples sur CAS précoce.

Le rafraichissement automatique[modifier | modifier le wikicode]

Rapidement, les constructeurs de mémoire se sont dits qu'il valait mieux gérer ce rafraichissement de façon automatique, sans faire intervenir le contrôleur mémoire intégré à la carte mère. Ce rafraichissement a alors été délégué au contrôleur mémoire intégré à la barrette de mémoire, et est maintenant géré par des circuits spécialisés. Ce circuit de rafraichissement automatique n'est rien d'autre qu'un compteur, qui contient un numéro de ligne (celle à rafraichir).

Rafraichissement mémoire automatique.