# Fonctionnement d'un ordinateur/Les mémoires et les circuits séquentiels

Dans le chapitre précédent, nous avons vu comment mémoriser un bit, dans une bascule. Mais les bascules en elles-mêmes sont rarement utiles seules, car les données à mémoriser font généralement plusieurs bits, pas un seul. Stocker plusieurs bits est la raison d'être des mémoires, des composants qui mémorisent des plusieurs bits, que l'on peut modifier et/ou récupérer plus tard. On verra dans la suite de ce tutoriel comment les mémoires actuelles font pour stocker des bits : elles peuvent utiliser aussi bien un support magnétique (disques durs), optique (CD-ROM, DVD-ROM, etc), qu'électronique (mémoires RAM, FLASH, ROM, etc), etc. Une partie entière de ce cours sera dédié à chaque type de mémorie. Mais pour le moment, nous allons voir des mémoires électroniques construites à partir des bascules vues au chapitre précédent.
Il est possible de consulter une mémoire pour récupérer tout ou partie de son contenu : cette opération est ce qu'on appelle une opération de lecture. On peut aussi ranger des informations dans la mémoire ou les modifier : on effectue alors une opération d'écriture. Généralement, les informations lues sont disponibles sur la sortie de la mémoire, tandis que l'information à écrire dans une mémoire est envoyée sur son entrée (le circuit effectuant l'écriture sous certaines conditions qu'on verra plus tard).

## Les registres : des mémoires de plusieurs bits

Nous avons vu au chapitre précédent comment créer des bascules, des circuits capables de mémoriser un seul bit. Il se trouve que l'on peut assembler des bascules pour créer des circuits capables de mémoriser plusieurs bits : ces circuits sont appelés des registres. Les registres les plus simples sont capables de mémoriser un nombre, codé sur une quantité fixe de bits. On peut à tout moment récupérer le nombre mémorisé dans le registre : on dit alors qu'on effectue une lecture. On peut aussi mettre à jour le nombre mémorisé dans le registre, le remplacer par un autre : on dit qu'on effectue une écriture.

### L'interface d'un registre simple

Niveau entrées et sorties, les registres possèdent des entrées-sorties pour les données mémorisées, mais aussi des entrées-sorties de commande. Les entrées-sorties pour les données permettent de lire le contenu du registre ou d'y écrire. Les entrées de commande permettent de configurer le registre pour lui ordonner de faire une écriture, pour le remettre à zéro, ou toute autre opération.
Les entrées de données sont utilisées pour l'écriture, alors que les sorties de données servent pour la lecture. Le nombre mémorisé dans le registre est disponible sur les sorties du registre. Pour utiliser les entrées d'écriture, on envoie le nombre à mémoriser (celui qui remplacera le contenu du registre) sur les entrées d'écriture et on configure les entrées de commande adéquates.
Les entrées de commande varient suivant le registre, mais on trouve au moins une entrée Enable, qui a le même rôle que pour une bascule, à savoir autoriser une écriture. Si l'entrée Enable est à 1, le registre mémorise ce qu'il y a sur l'entrée de donnée. Mais si l'entrée Enable est à 0, le registre n'est pas mis à jour : on peut mettre n'importe quelle valeur sur les entrées, le registre n'en tiendra pas compte et ne remplacera pas son contenu par ce qu'il y a sur l'entrée. Pour résumer, l'entrée Enable sert donc à indiquer au registre si son contenu doit être mis à jour, quand une écriture a lieu. D'autres entrées de commandes sont parfois présentes, la plus commune étant une entrée permettant de remettre à zéro le registre. La présence d'un 1 sur cette entrée remet à zéro le contenu du registre, à savoir que celui-ci contient la valeur zéro.

### L'intérieur d'un registre simple

Un registre est composé de plusieurs bascules D qui sont toutes mises à jour en même temps. Pour cela, toutes les entrées E des bascules sont reliées à l'entrée de commande Enable.