¿Cómo se ejecutan las instrucciones en una arquitectura segmentada?

1

Vi este solución de HW en CMU Comp Arch curso sitio web . Estoy leyendo ComputerArchitecture por mi cuenta. Solo tengo una duda.

Aquí está la pregunta de HW:

Dado el siguiente código ( MIPS ):

MUL R3, R1, R2
ADD R5, R4, R3
ADD R6, R4, R1
MUL R7, R8, R9
ADD R4, R3, R7
MUL R10, R5, R6
Fetch (one clock cycle)
Decode (one clock cycle)
Execute (MUL takes 6, ADD takes 4 clock cycles). The multiplier and the adder are not pipelined.
Write-back (one clock cycle)

Calcule la cantidad de ciclos que se tarda en ejecutar el código dado en una máquina canalizada con marcador y cinco sumadores y cinco multiplicadores sin el reenvío de datos.

Aquí está la solución real:

Mi duda:

  • Por qué la segunda instrucción ADD R5, R4, R3 está en el estado de decodificación dos ¿veces? (en 3er ciclo y nuevamente en 10mo ciclo)

  • Por qué la tercera instrucción ADD R6, R4, R1 no hizo su estado DECODE 4to ciclo?

pregunta user3219492

1 respuesta

1
  

¿Por qué la segunda instrucción ADD R5, R4, R3 está en estado de decodificación dos veces? (en 3er ciclo y nuevamente en 10mo ciclo)

La etapa de decodificación incluye la lectura de los operandos del archivo de registro. En el segundo ciclo, el decodificador descubre que uno de los operandos para la segunda instrucción aún no está disponible: la decodificación de la primera instrucción marcó R3 como "ocupado". Por lo tanto, la decodificación de la segunda instrucción debe repetirse después de que la escritura de la primera instrucción hace que R3 "no esté ocupado". La escritura ocurre en el ciclo 9, lo que significa que la lectura puede ocurrir en el ciclo 10.

  

¿Por qué la tercera instrucción ADD R6, R4, R1 no realizó su 4º ciclo de estado DECODE?

Porque la decodificación de la segunda instrucción no se había completado. Las instrucciones deben decodificarse en secuencia, porque así se establecen las dependencias de datos.

    
respondido por el Dave Tweed

Lea otras preguntas en las etiquetas