En esta práctica,
al igual que en la anterior, utilizaremos el Simula3MS.
El
objetivo de esta práctica es que
el alumno/a identifique el camino de datos del procesador monociclo
MIPS y compruebe su funcionamiento mediante el simulados SIMULA3MS.
Requisitos:
-
Nos descargamos el programa llamado programa1:
-
Tambien nos descargamos el Simula3MS (http://simula3ms.des.udc.es).
La
práctica consta de 12 ejercicios que veremos a continuación.
EJERCICIO
1
1.-
Abra el programa de nombre Programa1.
Nos
descargamos el programa que requeríamos al comienzo de la práctica.
2.-
Pinche sobre el botón ensamblar y compruebe que no se produce ningún
error.
Pulsamos
y vemos que no nos da ningún error en el recuadro de abajo.
3.-
Si ha habido errores repase la sintaxis de las instrucciones
ayudándose del manual. En caso contrario, pique sobre ejecutar para
iniciar el proceso de simulación de ejecución del programa recién
creado.
Al
no producirse ningún error podemos seguir con el siguiente punto. Si
se produce alguno nos fijamos bien en el código y vemos que hemos
copiado bien el programa.
Pinchamos
en ejecutar y nos saldrá algo como esto:
4.-
Observe en la nueva ventana la zona que se destacan en la figura 2
además del código ubicado en el segmento de texto, figura 1:
5.-
Haciendo uso del botón “Ciclo siguiente” avance hasta la
primera instrucción lw.
6.-
Localice e indique los elementos necesarios del camino de datos que
realiza esta instrucción de tipo I:
Para realizar la
instrucción lw $s0,0($t1) entran en juego la memoria de datos, dos
multiplexores y el banco de registro.
7.-
Las conexiones entre los elementos del camino de datos aparecen
resaltados en verde. Describa con palabras y con lenguaje RTL todas
las operaciones que tienen lugar hasta completar esta instrucción lw
$s0,0($t1).
El dato se encuentra
en memoria de datos, pasa por dos multiplexores a través del bus de
datos hasta llegar al banco de registro donde dicho dato se cargará
en el registro especificado ($s0).
8.-
Indique el valor, en hexadecimal, que toman los siguientes registros
y buses:
PC: 0x0040001c
Instrucción[31-0]:
0x8d300000
Instrucción[25-21]:0x00000008
Instrucción[20-16]:0x00000006
Instrucción
[15-0]: 0x00000000
Bus
de 32 bits tras la extensión de signo: 0xfffffffe
Dato
leído 1: 0x10010000
Resultado
de la ALU (ó dirección de memoria de datos): 0x00000000
Dato
leído en memoria de datos: 0x0000000a
Dato a escribir en el banco de
registros: $s3
9.-
Haciendo uso del botón “Ciclo siguiente” avance hasta la última
instrucción lw.¿Cambia
en algo el proceso ya descrito de realización de la instrucción
lw?.
¿Qué valores toman ahora los siguientes registros y buses?
El proceso es el mismo, simplemente se
carga el siguiente valor del array.
Instrucción[15-0]:0x
FFFFFFFE
Bus de 32 bits tras
la extensión de signo: 1216
10.-
Haciendo uso del botón “Ciclo siguiente” avance hasta la
instrucción add.
Observando el camino de datos destacado en verde, explique con sus
palabras qué operaciones tienen lugar para la realización de la
instrucción add.
El
camino de datos es el rosa.
Los datos se cargan en diferentes
registros($S1,$s2). Uno de ellos($s1) entra en la ALU. Cuando éste
entra el segundo registro($S2) ocupa el bus de datos y se dirige
hacia la ALU. Se produce la operación de suma(ADD) y el resultado se
envía a un nuevo registro.
11.-
¿Se trata del mismo camino de datos utilizado para la instrucción
Lw?
Justifique su respuesta.
La instrucción LW
no tiene el mismo camino que la instrucción ADD ya que LW no
necesita el uso de la ALU. Simplemente un dato de memoria se carga en
un registro del banco de registros de la CPU.
12.-
Vuelva a la instrucción lw
y observe cómo algunas
líneas de control aparecen destacadas sobre las demás usando otro
tono del color naranja. ¿Qué líneas de control actúan para cada
una de las instrucciones analizadas?
Lw: LeerMem,MemaReg,
FuenteALU,EsorReg.
Add:
RegDect,ALUCp,EscorReg.







