понимание сборки MIPS с конвейерной обработкой

Со стандартным 5-ступенчатым конвейером для архитектуры MIPS и предположением, что некоторые инструкции зависят друг от друга, как пузырьки конвейера вставляются в следующий код сборки?

I1: lw   $1, 0($0)
I2: lw   $2, 4($0)
I3: add  $3, $1, $2      ; I1 & I2 -> I3
I4: sw   $3, 12($0)      ; I3 -> I4
I5: lw   $4, 8($0)
I6: add  $5, $1, $4      ; I1 & I5 -> I6
I7: sw   $5, 16($0)      ; I6 -> I7

Во-первых, что мы вставляем пузырь, мы

I1:  IF   ID   EX   MEM   WB 
I2:       IF   ID   EX    MEM
I3:            IF   ID    --
I4:                 IF    ID

Как видите, пока I3 остановлен, I4 может приступить к декодированию. Разве это не правильно? Следующий,

I1:  IF   ID   EX   MEM   WB 
I2:       IF   ID   EX    MEM   WB
I3:            IF   ID    --    EX   MEM  WB
I4:                 IF    ID    --   --   EX   MEM   WB
I5:                       IF    ID   EX   MEM  WB 
I6:                             IF   ID   --   EX    MEM   WB
I7:                                  IF   ID   --    --    EX   MEM   WB

Я думаю, что это возможно со стандартным конвейером MIPS, но некоторые говорят, что всякий раз, когда пузырь вставляется, весь конвейер останавливается. Как это можно выяснить?

Ответы на вопрос(1)

Ваш ответ на вопрос