sábado, 12 de enero de 2013

Práctica 6



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