lunes, 7 de enero de 2013

Práctica 6 - Simula3MS


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.