2015-11-19 34 views
0

我正在查看以下MIPS代碼中有無轉發的停頓數。我試圖更好地理解數據路徑中何時需要數據。MIPS管道有無轉發

lw $10, 0($4) 
sw $10, 24($5) 

隨着轉發,我得到的理解是值從負載字指令進入寄存器10後的記憶階段之後是可用的,並且被存儲字指令內存階段之前需要的價值。因此,零攤位。直到它被寫在時鐘週期的前半部分的回寫階段

F D E M W 
    F D E M W 

如果沒有轉發,註冊10不會有從負載字指令正確的值。

它是正確的說,存儲字指令需要寄存器10在解碼階段的時鐘週期的後半部分正確的值,產生以下兩個檔位:

F D E M W 
    F F F D E M W 

或者是該存儲字指令需要它生產的兩個檔位這個順序執行階段:

F D E M W 
    F D D D E M W 

我想,我想在我的腦海措辭目的是更好地我的理解的一種方式。

回答

1

沒有轉發,加載字指令將在寫回階段的時鐘週期的前半部分之後更新寄存器10。存儲字指令需要在解碼階段的第二個半時鐘週期讀取寄存器10中的值,在解碼階段產生以下2個停止位:

F D E M W 
    F D D D E M W