看板 Grad-ProbAsk 關於我們 聯絡資訊
Given the following MIPS instruction code segment, please answer each question below. L1: addi $t0 ,$t0,4 lw2 $s1 ,0($t0) sw $s1 ,32($t0) lw1 $t1 ,64($t0) slt $s0 ,$t1,$zero bne $s0 ,$zero,L1 Assume a forwarding unit is available to only forward data from ME and/or WB to EX. Please reorder/rewrite the code to maximize its performance.Note that you should consider maximizing the performance based on the assumption that the loop might be iterated a few times.You may insert no-ops in the code segment to resolve inevitable hazards if any. 解答: L1: addi $t0,$t0,4 lw1 $t1,64($t0) lw2 $s1,0($t0) slt $s0,$t1,$zero nop nop bne $s0,$zero,L1 sw $s1,32($t0) 疑問:想請問大家在解類似這種reorder code時,尤其有control hazard時, 是都如何思考,下手去做的。雖然課本上有三種from before,from target, from fall through方法,可是碰到這種題目真的不是很清楚該如何去作答。 不曉得有沒有能說明一下您在碰到這種題目的做法,讓我參考看看... 我只會先解control hazard,然後在用課本三種方法隨便亂試...或是交換指令 然後找到data hazard,就畫成pipeline stage了...看要不要插入nop 問題:請問為什麼不是插一個nop,而是兩個。我只會畫圖,以下是我畫的圖 ,不曉得又是哪裡出錯了...(看完上篇d大解說,現在懂了。可是都打了就... 請問大家都是怎麼做這類題型吧。) addi IF ID EX ME-| WB lw2 IF ID EX | ME-| WB lw1 IF ID |- EX | ME WB slt IF ID |-EX ME WB-| nop X X X X | X nop X X X | X X bne IF ID-| EX ME WB sw IF ID EX ME WB (addi和lw用有hazard:forwarding解,slt和bne有hazard) ※ 編輯: numin 來自: 123.193.221.223 (09/20 22:19)
Bearcome:先做from before 不行在試其他兩個 09/20 23:02
Bearcome:跳的機率很高用from target 低就用另一個 09/20 23:03
numin:想請問一下,如果題目沒有特別說明跳的機率的話,若做from 09/20 23:18
numin:before失敗,接下來就是用交換指令嗎?還是也可以用另外兩個 09/20 23:19
numin:去測試看行不行? 09/20 23:19
ddczx:先想code到底在做啥,以這題,是將a[i]值拿到a[i+8] 09/20 23:57
ddczx:再拿出a[i+16],若負則i++重複loop 09/20 23:57
ddczx:找出hazard, MIPS只與下個指令或下下個指令有相依 09/20 23:58
ddczx:(addi,lw2),(addi,sw),(lw2,sw),(lw1,slt),(addi,bne) 09/20 23:58
ddczx:去掉可解決(lw2,sw):2 ,(lw1,slt):1 ,(slt,bne):2 09/20 23:59
ddczx:addi是為了拿到正確i故先做,2個lw分別是拿出a[i],a[i+16] 09/20 23:59
ddczx:因bne在EX才決定是否跳,故下面放個總是要做的指令,選sw 09/21 00:00
ddczx:這樣就不管跳不跳都不需flush下一指令 09/21 00:00
ddczx:最後再靠一點點的靈感就排出來了XD 09/21 00:00
cola1230:...好強的靈感 09/21 00:32
ddczx:我翻了課本,許多MIPS機器是將分支執行移到ID,我前面弄錯了, 09/21 00:39
ddczx:一般沒說應該是在ID才是,所以bne下面才是塞1指令而不是2指令 09/21 00:40
numin:感謝d大的做法,這靈感真的也太強了XDD。 09/23 20:45