Unidad de Control.
En esta práctica el objetivo central era comprender como
funcionaba la ALU, la gestión de los buses y la forma en la que interactúan los
diferentes componentes.
En las practicas se nos proponía una serie de instrucciones
diferentes para codificarlas en hexadecimal, posteriormente realizar la
secuencia para ejecutar dichas instrucciones y por ultimo comprobar, con ayuda
del software logisim y el circuito proporcionado en el Campus Virtual ,que la
secuencia que hemos realizado con anterioridad estaba correcta y no creamos
ningún conflicto con el uso del Bus.
A la hora de realizar la secuencia tenemos que mucha
atención con el uso que le damos al bus y no intentar trasmitir dos datos
diferentes al mismo tiempo por el bus ya que eso ocasionaría graves errores.
Para realizar todo el resumen utilizare la primera
instrucción que nos plantean como ejemplo, todas las demás instrucciones
variarían según la codificación que tengan y según la función que hagan habrá
que hacer el seguimiento acorde a su función.
La instrucción que utilizaremos será la ADD $t0, $t1, $t2. Para la codificación de la instrucción
utilizaremos el siguiente esquema que nos dice cuantos bits tenemos que dedicar
a cada parte de la operación. Para la instrucción ADD se seguirá el siguiente
esquema.
De tal manera habrá que sustituir según el valor que tengan
nuestros registros en los correspondientes. Una vez tenemos todo el numero en
binario agrupamos los bits de 4 en 4 para que nos dé el numero en hexadecimal
que sería el 0x012A4020.
Para la realización del seguimiento tenemos que usar el
esquema proporcionado en el Campus virtual.
La secuencia se
podría dividir en tres apartados, el primer apartado corresponde a la lectura
de la instrucción, la segunda fase es la fase de la decodificación y por ultimo
seria la fase de ejecución. En la fase de decodificación solo se puede
descodificar la señal y no se pueden ejecutar varias acciones a la vez en el
mismo ciclo.
A partir de ahora cuando nos refiramos a los ciclos estaremos
haciendo referencia a todas las señales y operaciones que se pueden hacer en un
solo ciclo de reloj.
Primero para leer la instrucción tendremos que pasar la dirección
de PC hasta MAR, posteriormente leer en la memoria principal la dirección que está
en MAR y llevarlo hasta MBR, en este paso también incrementaremos el contador
PC en 4. El siguiente paso sería pasar el contenido de MBR hasta RI, todo esto sería
la fase de lectura de instrucción y después tendríamos la fase de decodificación
en la que se decodifica la instrucción que está en RI. Todo esto visto en
ciclos quedaría de esta manera:
C1:
|
MAR ← PC
|
T4,C1
|
C2:
|
MBR ← Ml(MAR)
|
Td,L,C2
|
PC ← PC+4
|
C4
|
|
C3:
|
RI ← MBR
|
T3,C6
|
C4:
|
Decodificación
|
Después de la decodificación se pasaría a la fase de
ejecución que sería propia de cada instrucción y en nuestro caso habría que
pasar el registro $t1 y el registro $t2 a la ALU para llevar a cabo la
operación y el resultado tendríamos que almacenarlo en $t0, todo esto visto en
ciclos quedaría de la siguiente forma:
C5:
|
ALU ← $t1
|
RA=01001,MA=0
|
ALU ← $t2
|
RB=01010,MB=0
|
|
$t0 ← ALU
|
OP=Suma,T5,RC=01000,SC
|
|
RE ← ALU
|
C8
|
Una vez tenemos la secuencia realizada procedemos a
comprobar el correcto funcionamiento con el software y el esquema
proporcionado. La realización es simple y sirve para ver de una manera directa
que lo que hemos realizado en teoría si lo llevamos a la práctica se cumple sin
ningún error.
Una vez hecho todo el proceso y verificado que realmente
siguiendo los pasos que hemos descrito en la secuencia escrita con
anterioridad, habría que repetir el proceso con cada una de las instrucciones
hasta terminar la práctica completa.
.
No hay comentarios:
Publicar un comentario