# Stalling Stalling是指通過讓指令保持在同一階段並插入一個 NOP(無操作)來暫停流水線。當流水線中的某個階段無法執行指令時,該階段將保持原狀並在流水線中插入一個 NOP 指令。這樣可以使得後續指令在之後的階段繼續正常執行,而不會受到之前階段無法執行指令的影響。Stalling通常發生在需要等待某些數據或條件的情況下,以確保流水線的正確執行。 ## Control: Handling Stalls 在 ID 階段中的危害檢測單元會在載入指令和其使用之間插入Stalling: 如果(ID/EX.MemRead 和 ((ID/EX.RegisterRt = IF/ID.RegisterRs) 或 (ID/EX.RegisterRt = IF/ID.registerRt))),則在流水線中Stalling一個周期(ID/EX.MemRead=1 表示載入指令)。 如何Stalling? 要實現Stalling,可以採取以下步驟: 1. 在 IF 和 ID 階段Stalling指令:當檢測到需要Stalling的情況時,在 IF 和 ID 階段不改變程序計數器(PC)和 IF/ID 寄存器。這樣做可以讓這些階段重新執行前面的指令,從而等待必要的條件或數據。 2. 在 EX 階段插入 NOP:在 ID/EX 流水線寄存器中將 EX、MEM、WB 控制字段設置為 0,以插入一個無操作指令(NOP)到執行(EX)階段。這樣做可以防止在Stalling期間寫入寄存器或內存,確保不會影響後續指令的執行。
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up