Grado en Ingeniería Informática
Arquitectura de Computadores – Prácticas Curso 2012-13
Práctica 6:Simulación de
ejecución en la realización monociclo del procesador MIPS.
Para la
realización de esta práctica utilizaremos el simulador SIMULA3MS con el
objetivo de identificar el camino de datos del procesador monociclo MIPS. Este
simulador implementa un subconjunto de instrucciones basadas en el repertorio
de instrucciones del procesador MIPS.
REALIZACIÓN
DE LA PRÁCTICA.
1.
Primeramente cargamos en el
simulador el programa Programa1.
Ensamblamos
y comprobamos que no se produce ningún error. Una vez comprobamos que no
contiene errores, damos a ejecutar para iniciar el proceso de simulación de
ejecución del programa.
2.
Una vez hecho esto, avanzamos hacia
la última instrucción lw haciendo uso del botón “Ciclo siguiente” y respondemos
a las siguientes cuestiones:
2.1. Localice
e indique los elementos necesarios del camino de datos que realiza esta instrucción
de tipo I:
Los elementos necesarios para la
realización de esta instrucción son:
-
El Contador de
Programa (PC).
-
La Memoria de
Instrucciones.
-
El Banco de
Registros.
-
La Unidad
Aritmético – Lógica.
-
La Memoria de
Datos.
-
Un mecanismo
para la extensión de signo, ya que se trata de una instrucción de tipo I.
-
La Unidad de
Control (UC), para el control de los distintos multiplexores.
2.2.
Describa con palabras y
con lenguaje RTL todas las operaciones que tienen lugar hasta completar esta
instrucción lw $s0,0($t1).
Primero se incrementa el contador de
programa. De la Memoria de Instrucciones se lee la instrucción (32 bits) de la
cual los 6 bits más significativos se pasan a la UC, que decodifica la
instrucción y determina la salida de cada Multiplexor.
Al ser una instrucción de tipo I, los
bits de 25 – 21 se emplean para el Registro Fuente, los del 20 – 16 para el
Registro destino y los del 15 – 0 de offset necesarios, junto al Registro
Fuente, para obtener el dato a almacenar. Este dato se almacenará en el
Registro Destino.
Del Banco de Registros se le pasa a la
ALU la dirección del R. Fuente y la
dirección de offset, que debe pasar por la extensión de signo para que la ALU
pueda operar con él. Éstas direcciones se suman y da como resultado la dirección
del dato almacenado en la Memoria de Datos. El dato obtenido se escribe en el
registro indicado por los bits 20 – 16 de la instrucción.
2.3.
Indique el valor, en hexadecimal, que toman los siguientes registros y buses:
PC:
0040000c
Instrucción
[31-0]: 8d300000
Instrucción
[25-21]: 09
Instrucción
[20-26]: 10
Instrucción
[15-0]: 0000
Bus
de 32 bits tras la extensión de signo: 00000000
Dato
leído 1: 00000009
Resultado
de la ALU (ó dirección de memoria de datos): 00000009
Dato
leído en memoria de datos: 0000000a
Dato
a escribir en el banco de registros: 0000000a
3. Ahora,
avanzamos hacia la úlima 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?
Observando
el camino de datos, podemos ver que
es idéntico al de la primera instrucción lw, por tanto, el proceso de
realización de la instrucción es el mismo.
Instrucción
[15-0]: 000c
Bus de 32
bits tras la extensión de signo: 0000000c
4.
En este ejercicio avanzamos hasta
la instrucción add y respondemos a las siguientes cuestiones:
4.1. Indique las
operaciones que tienen lugar para la ejecución de dicha instrucción.
Primero se incrementa el contador de
programa. De la Memoria de Instrucciones se lee la instrucción (32 bits) de la
cual los 6 bits más significativos se pasan a la UC junto con los 6 bits menos
significativos, utilizados para el código de la función que determina la
operación a realizar en la ALU. La UC decodifica la instrucción y determina la
salida de cada Multiplexor.
Al ser una instrucción de tipo II, los
bits de 25 – 21 se emplean para el primer Registro Fuente, los del 20 – 16 para
el segundo Registro Fuente, los del 15 –
11 para el Registro Destino, los del 10 – 6 no se utilizan, y por último, los
bits 5- 0 para el código de la función.
Del Banco de Registros se le pasa a la
ALU la dirección del primer R. Fuente y
la dirección del segundo R. Fuente. De ahí se leen los dos daos que se
transfieren a la ALU, dónde se opera con ellos. El resultado se escribe en el
R. Destino indicado por los bits 15 – 11.
4.2.
¿Se trata del mismo camino de datos utilizado para la instrucción Lw?.
No, no es el mismo camino de datos. En el caso de la
instrucción lw, sólo tenemos un registro Fuente, y en este caso son dos los
registros a acceder en el banco de registros. No necesitamos los bits de offset
necesarios en una instrucción lw. Cuando en una instrucción add operamos en la
ALU, el resultado no ni se escribe ni se lee en memoria de datos, por lo que no
tenemos que acceder a ella. En la imagen se muestra el camino de datos de la
instrucción add.
5. 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: MemRead, MemSrc, ALUsrc, RegWrite.
Add: RegDest,
ALU operation, RegWrite.
No hay comentarios:
Publicar un comentario