En el libro de Patterson & Hennessy,
Esto es para estas 4 instrucciones, si necesito implementar instrucciones como andi, addi, ori, j, etc., ¿las agrego a esta tabla? O hago otra cosa?
ACTUALIZAR
Si agrego, creo que la parte difícil es el ALUOp. Solo hay 2 bits, creo que necesito las siguientes operaciones. Y agregué cuál es mi idea de una implementación. ¿Cuál es la implementación correcta de MIPS?
instr ALUOp
--------+------
AND 0000
OR 0001
add 0100
sub 0101
slt 0111
funct 1xxx
Donde el MSB (bit 3) es un bit de "ver función" (instrucciones de tipo R). el bit 2 será el bit "usar ALU". Luego, los últimos 2 son los bits de operación. Vi varias implementaciones, donde hay más instrucciones como NOR, XOR, shift, etc. ¿No hay un estándar o un estándar más utilizado?
Si el hardware definido en su ruta de datos admite las nuevas instrucciones sin agregar nuevas señales de control, entonces sí, ¡simplemente continúe y extienda la tabla a la derecha!
Respuesta aumentada por pregunta aumentada:
La respuesta depende completamente de la ruta de datos y de lo que significan sus señales de control... Supongo que los bits ALUOp son, respectivamente, la señal de selección para un MUX 2x1, cada uno de los cuales, a su vez, selecciona las entradas de operandos a su ALU. De esa forma pueden usarse para seleccionar un valor de un registro o el inmediato de la instrucción misma. Entonces, para instrucciones inmediatas, probablemente elegirá la entrada "registro" para el operando 1 y la entrada "inmediata" para el operando 2...
Evité este problema agregando 2 líneas de bits más a ALUOp. Entonces, ahora todas las instrucciones de tipo I que no pudieron ser decodificadas por el bloque ALUContol, tenían 2 bits ALUOp adicionales y ahora podía decodificar 24 instrucciones más.
brian carlton
AndrejaKo
Jiew Meng