Datapath de ciclo único MIPS - Agregar instrucción de intercambio

-3

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 .

    
pregunta AppreciateIt

1 respuesta

1

En RTL genérico, ambas transferencias pueden ocurrir en paralelo:

Reg[Rs] <= Reg[Rt];
Reg[Rt] <= Reg[Rs];
PC <= PC + 4;

Sin embargo, el diagrama de bloques habitual para arquitectura MIPS (se muestra a continuación) solo tiene una ruta de escritura única para el archivo de registro, lo que significa que simplemente no es posible un intercambio de registro en un solo ciclo.

    
respondido por el Dave Tweed

Lea otras preguntas en las etiquetas