2016-11-02 141 views
2

一直在學習關於mips數據路徑並且有幾個問題。MIPS數據路徑混淆

  1. 爲什麼會有回寫階段?如果沒有增加更多延遲或使時鐘週期更長,似乎可以將寫回階段中的多路複用器移入Mem階段,並移除Mem/Writeback緩衝區並完全擺脫寫回階段。爲什麼不是這種情況?

  2. 關於分支預測和停頓的困惑。 - 思考:如果一個add指令跟隨beq指令進入管道(在ID階段beq,加入獲取階段),但是分支被採用,那麼add指令如何轉換爲no-op? (設置了什麼控制信號,怎麼辦?)

  3. 何時更新了級間緩衝區? 想法:我認爲他們在時鐘週期結束時更新,但一直無法驗證這一點。此外,我正試圖瞭解在攤位期間究竟發生了什麼。當需要停頓時,IF/ID級間緩衝區是否被鎖定?如果是的話,這是如何做到的?然後,指令是否從緩衝區中讀取,以確定ID階段應該有哪些指令?

感謝所有幫助

這裏的管道的圖片:

MIPS DATAPATH

+2

我想我可以回答#2。分支後面的inst在「分支延遲槽」中,並且在分支被執行或不執行時執行_always_。所以,考慮到:「6美元,7美元,標籤」,「添加8美元,9美元,7美元,」3美元,4美元,2美元,「標籤:MUL」。對於採取的分支,執行順序可以是'add,beq,sub,mul'或者'add,beq,mul'。這個概念是'add'_had_被inst獲取單元預取(因爲它運行「一個」),所以爲什麼要「浪費」呢? –

回答

0
  1. 回寫階段是編寫的結果返回給寄存器。 MEM/WB緩衝器用於保存前一階段的任何數據。通過擺脫回寫階段,你將會做的事情基本上延伸了舞臺。例如,在類似的指令中, LW R1, 8(R2)8(R2)尋址的存儲器位置的內容將被存儲在MEM/WB緩衝器中。通過將內容複製到緩衝區,MEM階段現在可以接受另一個LW指令,因此更多的ILP。

  2. @Craig Estey已經爲此回答正確。然而,即使你不做交換@Craig已經提到過,如果IF,ID階段用於以下指令,你總是可以使用控制信號和刷新東西。

  3. 我不確定是否有一個準確的答案,何時更新一個階段緩衝區。我看到它的方式是,在時鐘週期開始時,級間緩衝區中的數據不相關,並且在時鐘週期結束時它是相關的。控制信號被用來控制流水線每個階段發生了什麼,這意味着它們可以用來告訴IF階段不要取任何一個。