Implementar la instrucción BGEZAL-MIPS-32 en verilog

1

Quiero implementar la microarquitectura de ciclo único MIPS-32 usando Verilog. Tengo pocas dudas con respecto a la instrucción BGEZAL.

Hace GPR[31] = PC + 8.

El formato de la instrucción BGEZAL es

  • Losbitsdel16al20sedanpararegistrarelarchivo.Es10001,queeseldecimal17.PeroladescripcióndeBGEZALdicequeescribeenelregistro31.¿LosvaloresIntruction[20:16]nodeberíanser11111?¿EntoncesPC+8debeescribirseenGPR[17]oGPR[31]?

  • Ytambién,lainstrucciónhacePC+8,peroPCnosedacomoentradaaALUen estas notas de la conferencia . Así que he planeado tener un MUX en la primera entrada (entrada superior) de ALU. Si la instrucción es BGEZAL, el MUX alimentará a la PC más, alimentará los datos1 desde el archivo_registro. ¿Esto está bien?

pregunta user3219492

1 respuesta

1
  

Los bits del 16 al 20 se dan para registrar el archivo. Es 10001, que es el decimal 17. Pero la descripción de BGEZAL dice que se escribe en el registro 31. ¿Los valores Intruction [16:20] no deberían ser 11111? ¿Entonces PC + 8 se debe escribir en GPR [17] o GPR [31]?

Si los bits [26:31] son iguales a 000001 , entonces esta es una instrucción REGIMM , y los bits [16:20] no se asignan directamente al archivo de registro. Por ejemplo, BGEZ y BGEZAL especifican que los bits [26:31] son 000001 , pero BGEZ tiene bits [16:20] como 00001 , mientras que BGEZAL tiene bits [16:20 ] igual a 10001 .

  

Y también, la instrucción hace PC + 8, pero PC no se da como entrada a ALU en estas notas de clase. Así que he planeado tener un MUX en la primera entrada (entrada superior) de ALU. Si la instrucción es BGEZAL, el MUX alimentará a la PC más, alimentará los datos1 desde el archivo_registro. ¿Esto está bien?

Si está implementando una tubería de 5 etapas como la que usualmente usa MIPS, entonces, cuando la instrucción BGEZAL haya alcanzado la fase de "ejecución" de la tubería (etapa 3 de la tubería), la PC se habrá incrementado en 8 Solo puede almacenar la PC actual para registrar 31 en ese punto. Para obtener más información sobre lo que quiero decir con esto, consulte estas diapositivas .

Si está intentando implementar una arquitectura MIPS sin canalización de un solo ciclo, podría hacer algo similar a this (diapositiva 56): se inserta un bloque fijo PC+4 después del PC+4 regular para avanzar a la siguiente instrucción, luego este valor se escribe en el archivo de registro para el registro 31. Para futuras referencias, este es el diseño al que me refiero (desde el enlace):

    
respondido por el helloworld922

Lea otras preguntas en las etiquetas