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.
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.
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