計算機組織與結構›Ch5 管線化(Pipeline)第 3 題/共 58 題
3. Load Delay Slot、RISC-V、Pipeline Hazard
#CC-05-003中Load Delay SlotRISC-VPipeline Hazard
考慮一個有 load delay slot 的處理器:意即載入到目的暫存器(Rd)的值,在緊接在該 load 指令後的指令中無法使用。假設下列程式碼在這個處理器(RISC-V ISA)上執行:
addi x3, x0, 0x18 // x0 為 zero register
lw x3, 8(x3)
add x4, x3, x3
假設 MEM[32] = -4,且 load delay slot 被忽略(ignored)。程式碼全部執行完後,暫存器 x4 中儲存的值(十進位)為何?
參考答案與解析
答案 (A) 48。
addi x3, x0, 0x18 讓 x3 = 24。lw x3, 8(x3) 從 MEM[24 + 8] = MEM[32] 讀出 −4,要寫回 x3。
題目說這台處理器有 load delay slot:load 的結果不能給緊接在後面的那一個指令使用。「load delay slot is ignored」指這段程式沒有理會這個限制,沒有在 lw 後面插入 nop 或無關的指令。所以緊接著的 add x4, x3, x3 落在 delay slot 裡,讀到的是 x3 的舊值 24,x4 = 24 + 24 = 48。
如果處理器沒有 load delay slot(或程式在中間插入一個 nop),add 才會讀到 −4、得到 (C) −8;這正是本題要考的差別。
📄 台大114
▤完整推導請見《WH 資工筆記 · 計算機組織與結構》Ch5 管線化(Pipeline)