Práctica 3 (Tema 4)

Resumen

En esta práctica trabajaremos en relación al tema cuatro de teoría, teniendo en cuenta las siguientes instrucciones dadas en el guion de la práctica:

a) ADD $t0, $t1, $t2
b) ADDI $s0,$s1, 0x0011
c) ORI $t0, $t2, 0x00A1
d) SLL $t0, $t0, 0x0002
e) SLR $t1, $t0, 0x0002
f) LUI $s0,0x0011
g) SW $t4, 0x0111
h) SLT $t1, i) J 0x000001A
j) JR $S0

En el primer apartado se nos pide que pasemos ha hexadecimal las instrucciones anteriores, tal como quedaría en memoria. Para ello, lo primero que debemos hacer es conocer el valor de los registros, los cuales se pueden ver en la siguiente tabla, extraída del PDF “Tema 2. Referencia MIPS”:


Ahora debemos saber el método de codificación, cuyo formato de codificación viene dado por las instrucciones, que dependiendo de cual sean nos indica: la manera de codificar, el orden de los registros y el número de bits que se emplea en cada uno. Esto variará de una instrucción a otra, según lo especificado en el tema 2 -en cuya diapositiva se encuentra le formato de cada instrucción-, como en la siguiente imagen de ejemplo referente a la primera instrucción ADD:


Un dato a tener en cuenta es que 0x20 está en hexadecimal, por lo que habría que pasarlo a binario junto con los demás números para poder hacer bien el paso a hexadecimal de la instrucción.

En el segundo apartado se nos pide realizar la secuencia de transferencia de acciones, para lo cual se nos presenta el siguiente esquema de una CPU para realizarlo:

 
Para desarrollar este ejercicio deberemos tener en cuenta lo que realiza cada función, percatándonos que, realmente, las cuatro primeras secuencias son iguales para todas las funciones, siendo lastres primeras referentes a la lectura de instrucciones y la cuarta a la decodificación. Teniendo eso en cuenta, podemos centrarnos en el resto de las secuencias sucesivas y las operaciones que realizan, ahorrando algo de tiempo así.

En el último ejercicio de la práctica se pide, básicamente, comprobar que lo realizado anteriormente es correcto. Para ello hay que recrear la CPU en Logisim y activarlo según las funciones realizadas anteriormente, y comprobar que las señales activadas de este modo corresponder a las obtenidas en pasos anteriores.
Para ello en el guion de práctica se nos ofrece el esquema de la CPU que debemos crear en logisim:

 

Trabajo realizado por Jose Luis Rey Martinez


FAQ

1ª)Qué es la unidad de control y de que se encarga?
La unidad de control esta compuesta de 3 bloques, uno la CPU (unidad central de procesamiento) ,la unidad de proceso y el bus de entrada/salida. Su función es buscar las instrucciones en la memoria principal, decodificarlas (interpretación) y ejecutarlas, empleando para ello la unidad de proceso.

2ª) ¿Dónde puedo encontrar una tabla con los valores de los diferentes registros?
La tabla la podemos encontrar en el PDF del tema 2 Referencia a MIPS, también puede encontrarse en el resumen del tema 4 de este blog, donde hay una tabla con los diferentes valores de los registros.

3ª) ¿Por qué cuando utilizamos en logisim la CPU falla en algunas operaciones?
Esto es debido a que la CPU subida contiene errores, para poder realizar correctamente los ejercicios tenemos primero que corregir la CPU.

4ª) ¿En que falla la CPU errónea y como podemos arreglarla?
Por ejemplo al realizar la operación de la resta nos damos cuenta de que falla el complemento, además puede verse que las 2 últimas operaciones no están implementadas. Otro dato importante es que la carga de algunos registros se hacían en el flanco de bajada en lugar del de subida y puede dar lugar a confusión. Para arreglar los fallos primero tenemos que poner el registro en el flanco de subida es decir, elegir Rising Edge, se encuentra en la opción Trigger, en el menú de la parte izquierda. Y para el complemento sólo tenemos que llevar un cable desde el pin de entrada S/R hasta el pin del circuito sumador.

5ª) ¿Cómo funcionan los diferentes ciclos de las instrucciones?
En el primer ciclo, nos situamos en el registro PC el cual es el contador del programa, aquí se
guarda la dirección de memoria a la que queremos acceder para utilizar el código de instrucción en
memoria. Luego nos ubicamos en la dirección MAR que es donde se guardan las direcciones que
luego se envian al bus de direcciones activando señales.
En el segundo ciclo, activamos otra señal para poder leer la memoria principal y lo llevamos al bus
de direcciones para pasarlo al registro MBR que es donde guardamos la instrucción.
En el tercer ciclo pasamos la instrucción al registro de instrucciones activando otras señales.
En el cuarto ciclo tenemos que pasar esta instrucción a la unidad de control para poder
decodificarla.
 
Trabajo realizado por Antonio Coro Córdoba

No hay comentarios:

Publicar un comentario