2015-05-30 109 views
1

我有關於MIPS代碼和依賴關係的問題。 如果我有以下MIPS代碼。MIPS sw依賴關係

它如何在沒有任何轉發單元的情況下工作?

需要插入幾個檔位?

7 ADD $t5, $t4, $t5 
8 SUB $t5, $t5, $t3 
9 SW $t5, 24($t0) 

在我看來:

線7-8 WAW,RAW依賴T5 2週期的暫停

線8-9 RAW依賴T5,1個週期的暫停

是嗎?還是我錯過了什麼?

第7行和第9行之間是否存在任何依賴關係?

回答

1

我想你靠近

ADD $t5, $t4, $t5 

執行ALU,並需要寫回下一行$t5。這意味着MEM和WB失速,因此2個週期。

SUB $t5, $t5, $t3 

也在ALU中執行,這就是爲什麼它停滯了2個週期。

SW $t5, 24($t0) 

現在問題來了。我相信寄存器是在ID上讀取的,這意味着這裏的停頓將再次是2個週期,等待WB的$t5。它可能不是如此,但直到SUB的WB,SW可能不得不在ID等待。 MIPS pipeline

編輯: 我寫下的管道,使其更容易看到的。

+----+-----+-------+-------+ 
| | ADD | SUB | SW | 
+----+-----+-------+-------+ 
| 1 | IF | -  | -  | 
| 2 | ID | IF | -  | 
| 3 | EX | ID | IF | 
| 4 | MEM | stall | stall | 
| 5 | WB | stall | stall | 
| 6 | - | EX | ID | 
| 7 | - | MEM | stall | 
| 8 | - | WB | stall | 
| 9 | - | -  | EX | 
| 10 | - | -  | MEM | 
| 11 | - | -  | WB | 
| 12 | - | -  | -  | 
+----+-----+-------+-------+ 
+0

感謝回答,如果添加5個的NOP 7 ADD $ T5,$ T4,$ T5 2nops 8 SUB $ T5,$ T5,$ T3 3nops 9 SW $ T5,24($ T0 ) 那麼它工作正常? – eclipse0922

+1

呃,在第9行之前,我還會放2個nops,原因在最後一段。 – user35443

+0

對不起,只是困惑。 SUB的結果在WB階段回寫。如果我在第9行之前放2個節點,第9行的ID節將與SUB的WB節點處於同一個週期。 – eclipse0922