CPU數據通路設計


指令的格式如下:

 

對於R型指令:

 可以完成的功能包括add、sub、and、or、xor等指令,用三個寄存器:rs、rt、rd進行運算,rd用來數據結果的存儲,rs,rt則存運算的兩個數據,簡單的數據通路設計如下:

對於R指令op字段提供類型(R,I,J),func字段提供具體的運算類型,每個操作都有一個具體的類型碼,通過這兩個字段,控制單元產生對應的信號。

aluc:運算器控制信號      wreg:寄存器寫信號

 

 對於R型移位指令,移位位數由指令字段給出,兩個操作數分別為Rt和sa給出,通過寫寄存器指令將結果寫到寄存器Rd中。PC為指令,其中含有指令格式,PC將op與func子段的值給控制單元,控制單元產生指令對應的信號,下一條指令的PC=PC+4。

shift:產生移位信號,控制多路選擇器選擇移位的數據還是正常的數據。

 對於I型指令:

 

 操作數兩位由Rs與立即數給出,結果存放在rt中。imm只有16位所以對於的位用0或符號擴展法進行擴展。

e:控制符號擴展或者0擴展    aluimm:控制信號,表明進行立即數的運算

 

對於I型指令的訪存與寫回指令:

地址=邏輯地址+物理地址

LW:將存儲器某一地址單元的數據加載到寄存器Rt中

SW:將寄存器Rt數據寫到存儲器某一地址單元中

對於寄存器尋址的計算方法:某一通用寄存器的值Rs+16位符號擴展的立即數=ADDR

wmem:寫存儲器信號  m2reg:存儲器向寄存器寫信號

0:PC+4

1:分支指令

2:寄存器尋址指令,寄存器Rt的值為PC執行的地址

3:跳轉指令

對於I型指令中的條件轉移指令,跳轉的PC值=PC+4+SignEXT(imm),但是計算的時候我們還要對擴展后的imm進行左移兩位的操作,其原因為:mips的指令長度為4個字節,所以指令地址一定為4的倍數,因而地址后兩位一定為0,因此offset左移兩位使偏移量變為4的倍數,保持地址最后兩位為0。跳轉指令影響標志位,送到控制單元。

對於J型指令,跳轉的目標地址有target給出,jump target 是26位的。

j指令,跳轉指令,跳到target給出的目標地址,高地址4位由PC給出,低地址由addr給出,二者拼接成為32位地址。addr是26位,通過左移兩位成28位,因為所有指令在內存中都是4字節對齊的,因此最低的2個比特位是無需存儲的,最低為“00”。

 

 

jal指令與jr指令與子程序調用返回有關系。jr指令是使用寄存器跳轉是R型指令。jal進行函數調用,函數完成后要返回到指令之前進行的位置,所以要把跳轉之前的下一條指令的地址存儲起來,即將PC+4存到寄存器中。

regrt:控制將結果寫到Rt還是Rd中  jal:控制是否進行函數調用,若進行調用,將PC的值存到寄存器中

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM