Por qué hay dos registros diferentes (MAR y MDR) asociados a la memoria?

No estoy seguro de haber entendido del todo la pregunta, pero aun así intentaría responderla.

El Registro de Dirección de Memoria (MAR) contiene la dirección de un bloque de memoria en el que se lee o escribe.

El Registro de Datos de Memoria (MDR) contiene los datos que esperan ser escritos en o los datos leídos desde la ubicación apuntada por el MAR.

Hay varios ejemplos en los que, cuando se trata de informática, la calidad gana a la cantidad. Este es uno de ellos.

Aunque hipotéticamente posible, añadir registros extra en la interfaz de memoria no aportaría ningún beneficio. Sólo unos pocos de ellos, incluso uno, se utilizarían realmente mientras otros estarían a la espera. Además, este punto de vista añadiría complejidad a la arquitectura, ya que habría que diseñar un sistema para decidir qué palabra utilizar entre las muchas.

Por otro lado, el uso de un solo registro introduciría problemas de distinta naturaleza:

  • La CPU no es capaz de distinguir si una palabra es un dato o una dirección. Se necesitaría una señal de control adicional;
  • Para almacenar un dato, deberíamos sobrescribir su dirección, perdiendo su ubicación. Si introducimos la dirección sólo después, perderíamos el dato en su lugar. Se necesitarían entonces dos ciclos de CPU para resolver el problema.

En el primer caso, añadiríamos complejidad y carga de trabajo, en el segundo recortaríamos el rendimiento.