Duda con el funcionamiento de la MAR en lenguaje MAL

Duda con el funcionamiento de la MAR en lenguaje MAL

de Gianluca Giordano Pignatta -
Número de respuestas: 1

Hola, ¿todo bien?.
Tengo una duda respecto al siguiente codigo que aparece en las notas.
mar:=pc; rd
 rd
 ir:=mbr
 pc:=pc + 1

No entiendo como funciona el mar y porque tengo que guardar ahí el pc.
Me podrían explicar?.


Muchas gracias.

En respuesta a Gianluca Giordano Pignatta

Re: Duda con el funcionamiento de la MAR en lenguaje MAL

de Gustavo Brown -

Gianluca,

   Esa secuencia de microsinstrucciones corresponde a una etapa de FETCH.

En esa etapa tenes que ir a buscar el contenido de la dirección PC a memoria y colocarlo en el registro IR. Además actualiza el PC para que apunte a la siguiente instrucción.

Pero para acceder a la memoria la interfaz en la MIC-1 requiere que almacenes la dirección que querés leer o escribir en un registro especial (el MAR). Fijate en el dibujo esquemático de la MIC-1 donde se ven los registros MAR y MBR que estan "en medio" de los buses de dirección y datos respectivamente. Al MBR hay una manera de saltearselo (mediante uno de los bits de control del mismo) pero al MAR no.

Además la MIC-1 también requiere 2 ciclos de reloj para completar una lectura. Veamos entonces lo que hace ese trozo de código:

Entonces en la primer microinstrucción

mar:=pc; rd 

se carga el contenido del PC en el MAR y se da inicio a la lectura (se prende la señal rd)

La siguiente microinstrucción mantiene la señal RD para completar la lectura (que trae el contenido de memoria apuntado por el MAR y lo carga en el registro MBR):

rd

Ahora se copia el contenido del MBR al registro IR para poder luego empezar la decodificación de la instrucción:

 ir:=mbr 

y finaliza actualizando el PC a la siguiente instrucción:

 pc:=pc + 1

Saludos,
  Gustavo