王麗霞,孫長秋
(1.青島港灣職業技術學院,山東青島,266404;2.青島職業技術學院,山東青島,266555)
32位RlSC嵌入式微處理器流水線設計
王麗霞1,孫長秋2
(1.青島港灣職業技術學院,山東青島,266404;2.青島職業技術學院,山東青島,266555)
介紹了一32位RISC嵌入式微處理器(取名為 MoonCore)的5級流水線的結構,即取指&譯碼(IF&ID)、讀寄存器堆(RF)、執行(EXEC)、訪存(DMEM)和寫回(WB),詳細介紹了各個流水級的主要部件的設計并分析了流水線相關問題及解決辦法。
微處理器;精簡指令集計算機;流水線
由于嵌入式微處理器大多應用于便攜式設備和通訊設備等用電池供電的設備中,因此要提高微處理器的速度和降低功耗設計對于嵌入式微處理器的設計尤為重要,而采用流水線技術是解決上面兩個問題的很重要的方法。MoonCore是一32位RISC的嵌入式微處理器,本著節省資源,控制簡單的原則,采用5級流水線結構,即取指&譯碼(IF&ID)、讀寄存器堆(RF)、執行(EXEC),訪存(DMEM),寫回(WB)。數據通路就嵌入到這5級流水線之中。
MoonCore指令集共有49條指令,全部來自于MIPS I指令集,所有指令均為32位的定長指令,指令地址按字對齊。存貯器訪問指令Load和Store指令都為立即數類型指令,用于在存儲器和通用寄存器之間傳遞數據;計算類指令用于完成算術、邏輯、移位運算;跳轉/轉移控制指令用于改變程序的順序執行次序;專用指令:用于執行一些特殊任務。

圖1 基本的地址形成邏輯圖
MoonCore的5級流水線結構分別為取指&譯碼(IF&ID)、讀寄存器堆(RF)、執行(EXEC),訪存(DMEM),寫回(WB)。
2.1IF&ID級設計
在這一級,程序計數器PC獲得指令地址,從指令存儲器取出指令,解碼并產生各種控制信號。這一級主要部件有指令存儲器,PC寄存器和解碼器等。
PC寄存器的位寬為32位,因為每條指令的長度是4個字節。需要注意的是,PC寄存器和普通的寄存器不同,不能直接對其進行讀寫操作,在本設計中,各種控制信號均由有限狀態機產生。
2.2RF級設計
RF級是MoonCore設計中結構最為復雜的一級。在這部分主要完成下面的幾個操作:
(1)計算產生下一條指令的地址。
(2)取寄存器堆的操作數。
(3)對指令中的立即數進行擴展。
(4)產生目標寄存器地址。
RF級的主要部件有指令地址形成器PC_GEN,數據擴展器EXT,數據比較器CMP和目標寄存器地址形成器等。
2.2.1指令地址形成器PC_GEN的設計
在MoonCore結構中默認的下一條地址是PC+4,而轉移指令將改變程序的順序執行,因此必須在離IF近的流水級實現,因此將其放在RF級。因為編譯器支持延遲轉移,這要求必須是地址形成邏輯模塊的輸出接PC的輸入,而PC寄存器的輸出又直接接在地址生成器模塊上。基本邏輯如圖1所示。
2.2.2數據擴展器EXT的設計
MoonCore指令集的基本指令格式有三種:R-type、I-type和J-type。其中I、J類型都是在字的后16位帶有立即數,其中J類型中的指令J(AL)后26位是立即數,以及R指令類型的移位指令SRLV、SLLV后5位是立即數。這些立即數要根據實際的指令擴展為32位的字。
2.2.3數據比較器CMP的設計
條件轉移指令如BEQ,BLEZ等指令要根據寄存器的數據進行相關的比較,比較的結果給地址產生器PC_GEN以用來產生新的指令地址。因此需要有一個數據比較器CMP。CMP有兩個32位數據輸入,分別是RS_IN 和RT_IN和一條由解碼器產生的經過指令流水線傳輸的控制信號CMP_CTL,輸出端輸出1位信號,指示轉跳條件是否成立。
通常,比較器是放在和ALU同一級的流水段中,在本設計中如果也采用這種方式就會造成轉移指令延遲多個時鐘周期的浪費。結合存儲部件的特征,加在RF段。
2.2.4目標寄存器地址形成器的設計
在R-type指令中,運算結果最終寫回到RD(指令中的20-16位為目標寄存器索引)寄存器,而在I-type指令中運算結果寫回到RT中(指令中的25-21位為目標寄存器索引),比較特別的是在JAL指令中把PC的數值通過ALU傳遞給R31號寄存器。因此這個選擇器的輸入需要RNS和RNT,以及一個控制信號。目的寄存器地址選擇器的結構如如圖2所示。

圖2 目的寄存器地址選擇器
由于0號寄存器件總是輸出為常數0,因此可以將0號寄存器改為默認的寄存器地址。目的寄存器地址選擇器件的模塊實現代碼如下:

2.3EXEC級設計
EXEC執行級主要完成以下的任務:
(1)使用ALU完成各種算術邏輯運算。
(2)把運算結果保存到寄存器中,供DMEM執行階段使用。
主要部件有ALU和兩個多路選擇器。算術邏輯運算器ALU是微處理器的核心部件,所有的算術運算,如有符號數,無符號數的加減乘除,邏輯運算的與或以及移位運算都在這里完成。本設計中ALU分為三個并行的部分:
(1)基本算術邏輯運算部分;
(2)算術邏輯移位部分;
(3)乘除法部分。
這三部分的連接如圖3所示。

圖3 ALU的三部分

圖4 存儲控制器與存儲器件連接
2.4DMEM級設計
DMEM數據存儲器訪問級專為Load/Store指令而設,要存儲的數據來自寄存器堆,訪問存儲器的地址由ALU計算得出。Load指令讀存儲器,并把讀出的數據寫入流水線寄存器。Store指令把來自寄存器堆的數據寫入存儲器。DMEM級主要完成的任務有:
(1)給出各種存取存儲器的控制信號,并完成存儲器的存取任務。
(2)把從存儲器中讀入的數據保存到寄存器中,供WB寫回階段使用。
數據存儲控制器包含三部分:數據輸入控制和地址輸入控制以及數據輸出控制。
存儲控制器與存儲器件連接如圖4所示。
由圖可以清晰地看出數據和控制的前后邏輯,藍色部分表示有寄存器的延遲,指令控制信號和地址信號要延遲一個周期后加在輸出控制上,設計中通過加入一級D鎖存器實現。
2.5WB級設計
在WB寫回級主要完成的任務:
(1)指令執行結果寫回到寄存器堆中。
(2)將乘法運算和除法運算的執行結果寫入到寄存器HI和寄存器LO中。
這一級的主要部件就是一個寫回的多路選擇器,WB級把指令執行的結果寫回到寄存器堆。
相關是指指令流中的一條指令在指定的時鐘周期內停止執行。相關的發生將會引起流水線的斷流或延遲,降低微處理器的性能。存在下面三種相關:結構相關(Structural Hazards)、控制相關(Control Hazards)和數據相關(Data Hazards)。
采用指令存儲器和數據存儲器分離的結構,避免了結構相關的產生;采用數據旁路的技術解決了數據相關;采用延遲槽技術,由編譯器負責向延遲槽填入指令,解決了控制相關。
嵌入式微處理器多采用流水線技術。 MoonCore微處理器采用5級流水線的結構,取指&譯碼(IF&ID)、讀寄存器堆(RF)、執行(EXEC)、訪存(DMEM)和寫回(WB),提高微處理器的速度和降低功耗。
[1] Dominic Sweetman.See MIPS Run(Second Edition). San Francisco,ca,USA:Morgan Kaufmann Publishers Inc.,2006
[2]M I P S 3 2 A r c h i t e c t u r e f o r P r o g r a m m e r s VolumeⅠ:Introduction to the MIPS32 Architecture
[3]易建勛.微處理器(CPU)的結構與性能.北京:清華大學出版社,2003
[4] 張奕.32位5級流水線嵌入式處理器設計:[碩士學位論文].成都:電子科技大學, 2007
[5]呂睿.HOPE-MIPS流水線功能段的設計:[碩士學位論文].西安:西安電子科技大學,2007
[6]朱子玉,利亞民.CPU芯片邏輯設計技術.北京:清華大學出版社,2005
Pipeline Design of 32-bit RISC Embedded Microprocessor
Wang Lixia1,Sun Changqiu2
(1.Qingdao Harbour Vocational&Technical College,Shandong Qingdao,266404;2.Qingdao Technical College,Shandong Qingdao,266555)
The Project introduced five-stage pipeline design of a 32 bit RISC mMicroProcessor (named MoonCore) which includes IF&ID(Instruction Fetch &Instructions Decode)、RF(Register Fetch)、EXEC(Execute),DMEM(Data MEMory access)and WB(Write Back) and introduced the design of main modules of microprocessor in detail, analyzed three kinds of hazards of pipeline and solutions.
Microprocessor;RISC;Pipeline