1. 基本原則
根據(jù)指令需求序攘,連接組件,建立數(shù)據(jù)通路
2. 指令的需求
指令的需求簡單分為以下兩類寻拂,
<1> 所有指令的共同需求
<2> 不同指令的不同需求
2.1 所有指令的共同需求 - 取指令
程序計數(shù)器PC的內(nèi)容是指令的地址
用PC的內(nèi)容作為地址程奠,訪問指令存儲器獲得指令編碼
需要更新PC,順序執(zhí)行時祭钉,PC = PC+4瞄沙,發(fā)生分支時,PC = 分支目標的地址
2.2 加法和減法指令的需求
addu rd,rs,rt 和 subu rd,rs,rt
下圖所示朴皆,一個時鐘周期就可以完成加減法操作帕识,其中ALUCtr和RegWr是由指令譯碼生成的控制信號。
2.3 邏輯運算指令的需求
ori rt,rs,imm16
現(xiàn)在再看加減法的數(shù)據(jù)通路圖遂铡,如果想實現(xiàn)ori指令肮疗,還存在以下幾個問題,
<1> 目的寄存器是rt扒接,而不是rd
<2> 立即數(shù)是ALU的一個輸入
<3> 立即數(shù)是16-bit
針對上面3個問題伪货,提出以下解決方案,增加了兩個2選1多路器和1個零擴展部件钾怔,如下圖所示碱呼,
2.4 訪存指令的需求
lw rt,imm16(rs)
再看上面的數(shù)據(jù)通路,如果想實現(xiàn)訪存指令宗侦,仍存在以下問題愚臀,
<1> 如何進行符號擴展
<2> 從何處裝載數(shù)據(jù)
針對上面的兩個問題,對數(shù)據(jù)通路進行改造矾利,方案是將原有的零擴展部件添加符號擴展的功能姑裂,增加數(shù)據(jù)存儲器和相應(yīng)的2選1多路器馋袜,如下圖所示,
sw rt,imm16(rs)
觀察sw指令舶斧,需要將rt的數(shù)據(jù)存入數(shù)據(jù)存儲器欣鳖,因此增加一條數(shù)據(jù)線連接RegFile的busB和數(shù)據(jù)存儲器的DataIn,并給數(shù)據(jù)存儲器增加寫使能控制信號MemWr茴厉。
3. 總結(jié)
將IFU和數(shù)據(jù)通路放在一起泽台,如下圖所示,