Re: [理工] [計組]管線危障

看板Grad-ProbAsk作者 (四元)時間12年前 (2011/08/16 11:21), 編輯推噓2(204)
留言6則, 4人參與, 最新討論串3/3 (看更多)
※ 引述《okjn816 (蔡包)》之銘言: : 可是如果照我自己的解讀,那下面這題的我就看不太懂了 :   http://ppt.cc/gyG4 : 以上是我的問題有請版上各位神人幫忙我解答 : 非常感激!!! 1 add $1 $1 $2 2 add $1 $1 $3 3 add $1 $1 $4 if(MEM/WB.RegWrite and (MEM/WB.RegisterRd≠0) and not(EX/MEM.RegWrite and (EX/MEM.RegisterRd≠0) and(EX/MEM.RegisterRd=ID/EX.RegisterRs)) and(MEM/WB.RegisterRd=ID/EX.RegisterRs)) ForwardA=01 這個是張凡課本裡面的程式碼 這邊是hazard混亂的情形,line1跟line2、3都有data dependence。首先我們要知道程式碼 是依序執行,很明顯的line3當中$1的資料來源是來自於line2的結果,並不是由line1提供 所以line1的$1是不能Forwarding給line3,若Forwarding給line3,line3的結果是一定錯。 以下將MEM hazard偵測碼依照判斷式分別說明: 1.首先檢察line1在MEM/WB是否要寫入Reg 2.接著檢查MEM/WB目的暫存器是否不等於0,為何要不等於0原因如下。 add $0 $3 $4 sub $2 $1 $0 今天sub就是要把$1跟0相減,不能把add的結果Forwarding給sub。 如果add Forwarding 給sub,sub整個式子就會錯誤,跟預期sub想要做$1與0相減就不符 3.再來依照前面的敘述,檢查line2跟line3有無data hazard,如果有data hazard就是代表 line1不能 Forwarding給line3,否則line3的結果就會錯誤。 所以(EX/MEM.RegWrite and (EX/MEM.RegisterRd≠0) and(EX/MEM.RegisterRd=ID/EX.RegisterRs)) 就是檢查line2跟line3有無data hazard,也就是用EX hazard的程式碼。 課本是 EX/MEM.RegisterRdID/EX.RegisterRs,但張凡改成,其實都會對。 前面加not目的是做互斥,就是代表當line2跟line3有EX hazard時,line1跟line3自然就 不會有hazard。兩者不可能同時存在。 4.最後再判斷line1跟line3是否有hazard,所以當Line1的目的暫存器Rd與Line3的來源暫存 器Rs相同,就代表有Data hazard。 如果當上面的條件全都成立,Forwarding unit就會把ForwardA設01,Line1就會把結果 Forwarding到line3,去拯救line3。 至於圖片中你們老師是直接把最強的條件當做判斷,直接檢查line2跟line3是否有資料相依 ,只要EX/MEM.RegisterRd≠ID/EX.RegisterRs成立,就代表line2跟line3沒有資料相依。 接著就會直接判斷line1跟line3是否有資料相依。 總結: Rt跟Rs都一樣,綠色部分就我認為其實是相等的,不過你們老師有簡化白算盤的版本 套張凡一句話「一切都照課本為主,老師沒這麼的時間檢查考卷是不是寫錯。只要 長的像課本老師就會給分;若跟課本不一樣,老師還要檢查,整個心 情就會不好,考卷就有可能越改越嚴。 所以建議是以課本為主 以上,有錯歡迎大家請指證 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 125.225.140.98

08/16 12:37, , 1F
原PO給的圖是第三版 張凡給的是第四版 不都是課本嗎?
08/16 12:37, 1F

08/16 16:59, , 2F
抱歉 因為我沒買過第三版的 所以不知道那是第三版的
08/16 16:59, 2F

08/16 17:00, , 3F
如果都是課本的 那就沒問題了
08/16 17:00, 3F

08/16 17:49, , 4F
我的原文書都是舊的 QQ
08/16 17:49, 4F

08/18 02:21, , 5F
推認真
08/18 02:21, 5F

12/21 00:15, , 6F
推認真
12/21 00:15, 6F
文章代碼(AID): #1EIU9LTj (Grad-ProbAsk)
文章代碼(AID): #1EIU9LTj (Grad-ProbAsk)