Digamos que quiero hacer una nueva instrucción MIPS llamada: swap $ rs $ rt, que intercambia los contenidos de los registros $ rs y $ rt. Usando una variable auxiliar auxiliar, esta nueva instrucción se especifica de la siguiente manera en el lenguaje RTL:
aux←Reg[Rs];
Reg[Rs]←Reg[Rt];
Reg[Rt]←aux;
PC←PC + 4;
¿Cómo puedo modificar los bloques funcionales para permitir que esta instrucción se ejecute en un solo ciclo? Estoy pensando que debería agregar otro RegFile / ALU. No puedo acceder a ningún registro adicional. Además, necesito saber si se necesitarían señales de control adicionales y para qué serían.
Así es como se ve la arquitectura actual.
Los bloques funcionales incluyen el RegFile, la memoria de datos (para instrucciones como cargar / almacenar), etc. En cuanto a mis esfuerzos para resolver esto, he considerado todos los bloques funcionales y no estoy seguro de qué bloques proporcionarían la variable auxiliar .