MIPS R2000 y R3000: Señales de Control
En artículos anteriores vimos los diferentes tipos de instrucciones que teníamos y los caminos de datos de estas, hoy veremos las señales de control que permiten que un procesador pueda realizar múltiples instrucciones diferentes sin tener que realizar las modificaciones que fuimos haciendo en el anterior artículo. De base tomaremos el siguiente diagrama:
Este diagrama, como podemos ver, es similar a los anteriores que hemos utilizado, pero teniendo todos los componentes interconectados entre sí. Para que el procesador pueda realizar operaciones con los 3 tipos de instrucción que conocemos, cada Multiplexor y ALU recibirán diferentes señales para decidir cual será su salida, estas son las señales de control. Para ver como funciona esto más a fondo, observaremos que hace cada señal de control por orden y explicando el por que del valor que recibe esta en cada caso.Señal RegDst
Este Multiplexor recibe por la primera entrada los bits del 20 al 16 y por la segunda, los bits del 15 al 11. La salida del multiplexor entraría directamente en la entrada Escribir Registro del Banco de Registros, esto significa que, en función de la salida del multiplexor, guardaremos el valor que entre por Escribir Dato en en una dirección u otra. La principal utilidad que tiene esto es que en función de si utilizamos una instrucción de tipo R o I, el resultado se almacenará en rd o en rt, por lo que la señal RegDst tendrá un valor de 0 o 1 en función del tipo de instrucción que estemos utilizado.
Señal ALUSrc
ALUOp
Esta señal nunca toma el valor 11, si nos fijamos en esta tabla, el primer bit solo vale 1 con operaciones Tipo R, si tuviéramos que descomponer esta señal en 2, por un lado tendríamos ALUOp1, que nos indica si la operación es de Tipo R o Tipo I y ALUOp2, que nos indicaría, en caso de no ser la operación Tipo R, que operación deberá realizar la ALU.
MemRead y MemWrite
Estas 2 señales de control entran en Memoria de Datos y en encargan de indicarle a este componente si vamos a realizar una lectura y/o escritura de la Memoria de Datos. En el diagrama podemos Ubicar MemWrite arriba y MemRead abajo. Si el valor de MemWrite es 1, entonces indicamos que queremos guardar el valor que entra por la entrada Escribir Dato en la dirección indicada en Escribir Dirección.
En caso de querer Leer un dato, MemRead tendrá un valor de 1 y por la salida Lectura Dato saldrá el dato almacenado en la dirección de la entrada Leer Dirección.
MemtoReg
Esta señal de control indica que dato se enviará a la entrada Escribir Dato de los Registros, si su valor es 1, se tomara el dato saliente de memoria, en caso de que su valor sea 0, se tomará el dato que venga de la salida ALUresult de la ALU.
RegWrite
Le indica a los Registros que queremos escribir el dato que entra por Escribir Dato en la dirección Escribir Registro. Si su valor es 1 se escribe en el registro, si su valor es 0 no se realiza la escritura.
PCSrc
Indica que se va a enviar al PC al finalizar la operación, si el valor es 0 se manda PC+4, en caso de que valga 1 se envía la salida de la ALU sumadora.
0 Comentarios