linyunwen
raygoah
contributed by <LinYunWen
, raygoah
>
上圖紅色的 1
, 2
, 3
對 MIPS 做了對應的修改,請考慮以下狀況,分別解釋對應的程式碼是否能運作。
1
1: Stuck at 0 left of cut
的修改,sw $s1, 0($s2)
能否運作?在 1
切斷的電路中,關係到寫入 reg 的指令能不能運作
由上圖可以看到,第一列是 R-type 指令,第二列是 lw ,第三列是 sw ,第四列是 beq,所以切斷 1
後,會影響到 R-type 以及 lw ,而 sw 則不會受到影響,因為 sw 不用將值寫入reg,而是相反的將值從 reg 中寫入 memory
因此 Q11 是能運作的,但在 Q12 中,因為有使用到 lw,且 add 為 R-type 指令,所以不能正常運作
根據上面的這張圖(參考連結在最下方),知道了這條線是控制 MemtoReg RegWr 這兩條訊號線,因此若沒有了這條線,Reg永遠不能被寫入, lw 、 add 等需要寫入 reg 的指令都會失效。
而sw不會失效,因為他不牽涉到寫回 reg 的動作。因此這題的答案是可以運作。
rex662624
2
Q21: 做了 2: Cut here
的修改後,以下程式能否運作?
2
中切掉的電路,會影響到 RS 的 forwarding3
3: Cut here
的修改後,以下程式能否運作? (exit
為某個副程式)阻斷了 "shift left 2" 這個 unit,這會造成採取
- Base or displacement addressing (如 lw,sw)
- PC-relative addressing (如:beq ,bne)
等採取上述定址模式的指令無法正常運作。
而 j, jal , jr 等指令採取 Pseudodirect addressing ,其跳躍目的位址為指令的後 26 位元和 Program-counter 高位(前 4 bits)結合而成,不涉及需要 shift 2 的運作,仍可正常運作。
workat60474
在 3
中切斷的電路,會影響到 PC + 4 + (imm*4)
的部份,也就是 I 型指令 beq,而對於 R 型指令:jr ,或是 J 型指令: j,都是沒有影響的
因此在 Q31 中,沒有使用到 beq,使用了 jr 以及 j,所以可以正常執行
而在 Q32 中,因為使用到了 beq 所以沒有辦法順利執行
延伸問題: