1. 程式人生 > >低功耗設計二之Bypassing(旁路)

低功耗設計二之Bypassing(旁路)

        通過縮短部分指令流水線級數,減少IO口變化及暫存器賦值,以達到降低動態功率的目的,首先對指令進行分類如下。 

指令分類:

(1)   IF ID EX MEM WB

LOAD

(2)   IF ID EX MEM NOP

STORE JMPR BZBNZ BN BNN BC BNC

(3)   IF ID EX NOP WB

LDIH ADD ADDI ADDCSUB SUBI SUBC AND OR XOR SLL SRL SLA SRA

(4)   IF ID NOP NOP NOP

CMP

(5)   IF NOP NOP NOP NOP

JUMP(直接跳轉)

(6)   NOP NOP NOP NOP NOP

NOP

可看出,(3)類指令可將wb前移,略去流水線mem,因其對它無貢獻。但是前移的前提條件是前面未出現(1)類指令,或(1)類指令被(2)(4)(5)(6)類指令刷除其作用。

優化模擬效果圖如下:



模型轉換為實際時,時序問題應理得非常清楚,判斷狀態值與EX同步,則需在ID對狀態賦值,方可在EX時對其呼叫。

基本步驟如下:

(a)在ID內對狀態進行初始化為lower(可降低功耗)狀態,判斷下一週期內指令即ex_ir是否為(1)類指令,若是,狀態變為normal。若為(2)(4)(5)(6)類指令,狀態變為lower,否則狀態不變;

(b)在ex_ir內判斷當前指令是否為(3)類且狀態為lower(與ID時獲得此次狀態),若是則傳入mem內指令為NOP;

(c)在mem_ir內判斷ex_ir是否為(3)類指令且狀態為lower,若是則WB傳入ex_ir,且將ALUo賦值給reg_C1,否則傳入mem_ir。

模擬檢驗功耗否能夠降低(此處模擬執行語句絕大部分為能夠優化的語句以便觀察實驗現象)

        優化前:

     

優化後:

               

 整體功耗降低為原來的74%

參考:《Low-PowerPipelined MIPS Processor Design》