Fonctionnement d'un ordinateur/L'interface avec le bus mémoire

Un livre de Wikilivres.
Sauter à la navigation Sauter à la recherche

Pour rappel, les mémoires RAM et ROM sont connectées à trois bus : le bus d'adresse, le bus de commandes et le bus de données. Si l'interface avec les bus d'adresse et de commande n'ont rien de sorcier, celle avec le bus de données recèle quelques petites surprises. Pourquoi comprendre pourquoi, il faut se rappeler de l'existence du bit Output Enable, qui permet de connecter/déconnecter la mémoire du bus de données selon les besoins. Lorsque ce bit est à 1, il désactive les broches du bus de données, ce qui stoppe les lectures, mais laisse cependant le bus de commande fonctionner. Comme on le devine rapidement, cette déconnexion est prise en charge par l'interface avec le bus, en sortie du plan mémoire.

Illustration de l'interface d'entrée-sortie en lecture/écriture. On voit que le bit OE (ici noté EN) communique avec un circuit d'interface avec le bus. Celui-ci connecte ou déconnecte la mémoire du bus selon les besoins, selon la valeur du bit OE.

Les composants trois-états[modifier | modifier le wikicode]

Quand on parle de déconnecter la mémoire du bus, il ne faut pas interpréter cela comme une véritable déconnexion, comme on en aurait avec un interrupteur. A la place, les sorties de la mémoire sont mises dans un état dit de haute impédance, qui n'est ni un 0 ni un 1 : quand une sortie est en haute impédance, celle-ci n'a pas la moindre influence sur les composants auxquels elle est reliée. Un composant dont les sorties sont en haute impédance ne peut pas influencer le bus et ne peut donc pas y écrire. Pour mettre une sortie en état de haute impédance, on utilise des circuits trois états, qui possèdent une entrée de donnée, une entrée de commande, et une sortie : suivant ce qui est mis sur l'entrée de commande, la sortie est soit en état de haute impédance (déconnectée du bus), soit dans l'état normal (0 ou 1).

Commande Entrée Sortie
0 0 Haute impédance/Déconnexion
0 1 Haute impédance/Déconnexion
1 0 0
1 1 1

Pour simplifier, on peut voir ceux-ci comme des interrupteurs :

  • si on envoie un 0 sur l'entrée de commande, ces circuits trois états se comportent comme un interrupteur ouvert ;
  • si on envoie un 1 sur l'entrée de commande, ces circuits trois états se comportent comme un interrupteur fermé.
Tampons 3 états.

L'interface du bus de données[modifier | modifier le wikicode]

Avec des circuits trois-états, on peut gérer l'interface mémoire du bus de données. Il suffit d'ajouter des circuits trois-états pour déconnecter la mémoire du bus de données en sortie des bitlines, ainsi qu'un circuit combinatoire pour commander les circuits trois-états. Ce circuit reçoit les bits CS, OE et R/W en entrée et fournit les bits de commande des circuits trois-états sur sa sortie.

L'interface mémoire d'une ROM[modifier | modifier le wikicode]

Pour une mémoire ROM, il n'y a qu'un seul sens de transfert, ce qui nécessite un seul circuit trois-états en sortie de chaque bitline, à l'endroit ou celle-ci se connecte sur le bus. Le bit Output Enable est juste envoyé sur l'entrée de commande de tous les composants trois-états. Ce faisant, tous sont activés ou désactivés en même temps, ce qui est le bus recherché.

Bus en écriture seule.

L'interface mémoire d'une RAM[modifier | modifier le wikicode]

Les mémoires RAM peuvent aussi bien émettre que recevoir des données sur le bus quand elle s'y connecte. Pour cela, il faut ajouter des circuits trois-états pour autoriser les écritures. On doit alors utiliser deux circuits trois états, un pour l'émission/écriture et un autre pour la réception/lecture. Dans ce cas, les circuits trois-états doivent être commandés par le bit OE (qui connecte ou déconnecte la mémoire du bus), mais aussi par le bit R/W qui décide du sens de transfert. Pour faire la traduction entre ces deux bits et les bits à placer sur l'entrée de commande des circuits trois-états, on utilise un petit circuit combinatoire assez simple.

Bus en lecture et écriture.