Pourquoi y a-t-il deux registres différents (MAR et MDR) associés à la mémoire ?


Je ne suis pas sûr d'avoir bien compris la question, mais j'essaierais tout de même d'y répondre.

Le registre d'adresses mémoire (MAR) détient l'adresse d'un bloc mémoire dans lequel lire ou écrire.


Le registre de données mémoire (MDR) détient les données en attente d'être écrites ou les données lues à partir de l'emplacement pointé par le MAR.

Il existe plusieurs exemples où, en informatique, la qualité l'emporte sur la quantité. C'est l'un de ceux-là.

Bien qu'hypothétiquement possible, l'ajout de registres supplémentaires dans l'interface mémoire n'apporterait aucun avantage. Seuls quelques-uns d'entre eux, même un seul, seraient réellement utilisés tandis que d'autres seraient en attente. De plus, cette vision ajouterait de la complexité à l'architecture, puisqu'il faudrait concevoir un système pour décider quel mot utiliser parmi les nombreux.

En revanche, l'utilisation d'un seul registre introduirait des problèmes d'une autre nature :

  • Le CPU n'est pas en mesure de distinguer si un mot est une donnée ou une adresse. Un signal de commande supplémentaire serait nécessaire;
  • Pour stocker une donnée, nous devrions écraser son adresse, perdant ainsi son emplacement. Si nous ne saisissions l'adresse que plus tard, nous perdrions plutôt la donnée. Deux cycles de CPU seraient alors nécessaires pour résoudre le problème.

Dans le premier cas, nous ajouterions de la complexité et de la charge de travail, dans le second, nous réduirions les performances.

.