文獻(xiàn)標(biāo)識碼: A
DOI:10.16157/j.issn.0258-7998.182563
中文引用格式: 鄧天傳,,胡振波. 一種超低功耗的RISC-V處理器流水線結(jié)構(gòu)[J].電子技術(shù)應(yīng)用,,2019,45(6):50-53.
英文引用格式: Deng Tianchuan,,Hu Zhenbo. An ultra-low-power processor pipeline-structure[J]. Application of Electronic Technique,,2019,45(6):50-53.
0 引言
經(jīng)過幾十年的處理器設(shè)計(jì)技術(shù)的演變和大規(guī)模集成電路設(shè)計(jì)技術(shù)的發(fā)展,,高性能處理器的硬件調(diào)度能力已經(jīng)非常強(qiáng),,主頻率已經(jīng)非常高,所以硬件設(shè)計(jì)師希望指令集能夠結(jié)構(gòu)化和簡單化,,以便來設(shè)計(jì)更高頻率和更低功耗的處理器,。另一方面,對于應(yīng)用于可穿戴系統(tǒng)和醫(yī)療保健[1-2]等IoT(Internet of Thing)應(yīng)用和其他IoT應(yīng)用如智能城市[3],、智能交通[4]的處理器對低功耗和小面積的要求更高,。然而,由于商業(yè)原因以及知識產(chǎn)權(quán)保護(hù),,傳統(tǒng)的指令集架構(gòu)如ARM和X86架構(gòu)需要高昂的授權(quán)費(fèi),。開源的指令集架構(gòu)RISC-V[5]架構(gòu)是一種新的指令集架構(gòu),是活的,、無專利的,、無歷史的指令集架構(gòu),并且是在BSD許可下發(fā)布的,。RISC-V指令集架構(gòu)具備極簡,、模塊化和可定制擴(kuò)展等優(yōu)點(diǎn)。這也使得RISC-V指令集架構(gòu)可以通過組合或擴(kuò)展指令集在幾乎所有領(lǐng)域都可以構(gòu)建微處理器,,比如云計(jì)算,、存儲、并行計(jì)算,、虛擬化/容器,、MCUs,、應(yīng)用處理器和DSP處理器。
1 蜂鳥E203的總體結(jié)構(gòu)設(shè)計(jì)
E203處理器核的結(jié)構(gòu)示意圖如圖1所示,,流水線的第一級為“取指”(由IFU完成),。“譯碼”(由EXU完成),、“執(zhí)行”(由EXU完成)和“寫回”(由WB完成)均處于同一個時鐘周期,,位于流水線的第二級。而“訪問”(由LSU完成)階段處于EXU之后的第三級流水線,,但是LSU寫回的結(jié)果仍然需要通過WB模塊寫回通用寄存器組(Register File,,Regfile)。因此,,嚴(yán)格來說,蜂鳥E203是一個變長的流水線結(jié)構(gòu),。但是蜂鳥E203處理器核的按序主體是位于第一級的“取指”和位于第二級的“執(zhí)行”及“寫回”,,因此本文非嚴(yán)謹(jǐn)?shù)囟x蜂鳥E203處理器核的流水線長度為二級。
2 蜂鳥E203的單元設(shè)計(jì)
2.1 取指(IFU)單元的設(shè)計(jì)思路
IFU微架構(gòu)如圖2所示,,Mini-Decode模塊主要用于對取回的指令進(jìn)行譯碼,。Simple-BPU模塊主要用于對取回的指令通過Mini-Decode模塊進(jìn)行譯碼后發(fā)現(xiàn)的分支跳轉(zhuǎn)指令進(jìn)行分支預(yù)測。PC生成邏輯用于產(chǎn)生下一個待取指令的PC,。地址判斷和ICB總線控制會根據(jù)PC的地址訪問ITCM或BIU,。ITCM作為指令存儲,而如果取指令的地址不落在ITCM所在的區(qū)間,,IFU則會通過BIU訪問外部的存儲器,。
IFU在取出指令后,會將其放置于和EXU單元接口的IR(Instruction Register)寄存器中,。該指令的PC值也會被放置于和EXU單元接口的PC寄存器中,,EXU單元將使用此IR和PC進(jìn)行后續(xù)的執(zhí)行操作。
2.2 執(zhí)行(EXU)單元的設(shè)計(jì)思路
EXU微架構(gòu)如圖3所示,,EXU單元的功能主要有:將IFU通過寄存器發(fā)送給EXU的指令進(jìn)行譯碼和派遣,;通過譯碼出的操作數(shù)寄存器索引讀取Regfile;維護(hù)指令的數(shù)據(jù)相關(guān)性,;將指令派遣給不同的運(yùn)算單元,;將指令交付;將指令運(yùn)算的結(jié)果寫回Regfile,。
2.2.1 譯碼與派遣模塊
譯碼(Decode)模塊主要用于將IFU通過IR寄存器發(fā)送給EXU的指令進(jìn)行譯碼,。譯碼模塊完全由組合邏輯組成,其主要邏輯即根據(jù)RISC-V指令的編碼規(guī)則進(jìn)行譯碼,,產(chǎn)生不同的指令類型信息,、操作數(shù)寄存器索引等,。
蜂鳥E203是簡單的兩級流水線架構(gòu),派遣(Dispatch)發(fā)生在流水線的執(zhí)行階段,,表示指令經(jīng)過譯碼且從寄存器組中讀取了操作數(shù)之后被派遣到不同的運(yùn)算單元(ALU,、Long Pipes、LSU和EAI)執(zhí)行的過程,。
2.2.2 整數(shù)通用寄存器模塊
整數(shù)通用寄存器組(Integer Register File,,簡稱Integer-Regfile)模塊主要用于實(shí)現(xiàn)RISC-V架構(gòu)定義的整數(shù)通用寄存器組,其微架構(gòu)如圖4所示,。RISC-V的整數(shù)指令都是單操作數(shù)或兩操作數(shù)指令,,且蜂鳥E203屬于單發(fā)射(一次發(fā)射派遣一條指令)的微架構(gòu),因此Integer-Regfile模塊只需要支持最多兩個讀端口,。同時,,蜂鳥E203的寫回策略是按順序每次寫回一條指令的微架構(gòu),因此Integer-Regfile模塊只用支持一個端口,。
2.2.3 ALU模塊
如圖5所示,,蜂鳥E203的ALU單元包括5個功能子單元。普通ALU運(yùn)算主要負(fù)責(zé)普通的ALU指令(邏輯運(yùn)算,、加減法移位等指令)的執(zhí)行,;訪問地址生成主要負(fù)責(zé)Load、Store和“A”擴(kuò)展指令的地址生成,;分支預(yù)測解析主要負(fù)責(zé)Branch和Jump指令的結(jié)果解析和執(zhí)行,;CSR讀寫控制主要負(fù)責(zé)CSR指令的執(zhí)行;多周期乘除法器主要負(fù)責(zé)乘法和除法指令的執(zhí)行,。以上5個功能子單元只負(fù)責(zé)具體指令執(zhí)行的控制,,它們均共享一份實(shí)際的運(yùn)算數(shù)據(jù)通路,因此主要數(shù)據(jù)通路的面積開銷只有一份,,這也是蜂鳥E203追求低功耗和小面積的一大亮點(diǎn),。
2.2.4 狀態(tài)寄存器(CSR)模塊
RISC-V架構(gòu)中定義了一些控制和狀態(tài)寄存器(Control and Status Register,CSR),,用于配置或記錄一些運(yùn)行的狀態(tài),。CSR寄存器是處理器核的內(nèi)部寄存器,使用其自己的地址編碼空間,,與存儲器尋址的地址區(qū)間完全無關(guān)系,。蜂鳥E203的EXU單元中的CSR寄存器模塊主要用于實(shí)現(xiàn)蜂鳥E203所支持的寄存器功能。如在ALU模塊中的CSR讀寫寄存器模塊會產(chǎn)生CSR讀寫控制信號,。
2.2.5 OITF模塊
OITF本身只是一個先進(jìn)先出的FIFO,,F(xiàn)IFO的默認(rèn)深度是2個表項(xiàng)。如圖6所示,,每條指令在派遣時,,都會將本指令的源操作數(shù)寄存器索引和結(jié)果寄存器索引與OITF中的各個表項(xiàng)進(jìn)行對比,,從而判斷本指令是否已經(jīng)派遣出以及檢查其是否與尚未寫回的長指令產(chǎn)生RAW和WAW相關(guān)性。在整個過程中,,由于蜂鳥E203主要側(cè)重于低功耗和小面積,,因此只采用了阻塞流水線而未使用快速旁路的方法。
2.2.6 交付(Commit)模塊
RISC-V指令集架構(gòu)具有指令沒有條件碼和所有的運(yùn)算指令都不會產(chǎn)生異常這兩個顯著的特點(diǎn),,因此可以大幅度簡化“交付”的硬件實(shí)現(xiàn),。無論是單周期指令還是多周期指令,在蜂鳥E203處理器中都將“交付”安排在“執(zhí)行”階段,。
2.2.7 寫回仲裁(WB-Arb)模塊
蜂鳥E203處理器的寫回策略是一種因地制宜的混合策略,。其核心思想是將指令劃分為單周期指令和長指令兩大類;以及將長指令的“交付”和“寫回”分開,,使得即便執(zhí)行了多周期指令,,仍然不會阻塞流水線,讓后續(xù)的單周期指令仍然能夠順利地寫回和交付,。
如圖3所示,,蜂鳥E203處理器有兩級寫回仲裁模塊,其一是最終寫回仲裁,,主要用于仲裁所有單周期指令的寫回(來自ALU模塊)和所有長指令的寫回(來自長指令寫回仲裁模塊),仲裁采用優(yōu)先級仲裁的方式,。在沒有長指令寫回的空閑周期,,單周期指令可以隨便寫回。而對于長指令的寫回,,則由OITF和長指令寫回仲裁模塊協(xié)同完成所有長指令的寫回操作,。
3 綜合仿真分析與跑分測試
表1為蜂鳥E203 CPU的面積分布占比報(bào)告,其中CPU核的面積為233 329.695 5 μm2,,占整個CPU面積的93.5%,,CPU的其他部分的面積為16 334.17 μm2,占整個CPU的6.5%,。
表2為CPU核的面積分布占比報(bào)告,,BIU單元、EXU單元,、IFU單元和LSU單元的面積占比分別為6.2%,、73.2%、9.8%和4.3%,,合計(jì)為CPU核的面積占比即93.5%,。
表3為EXU單元的面積占比報(bào)告,譯碼,、整數(shù)通用寄存器組,、狀態(tài)寄存器,、派遣、ALU,、交付,、OITF、長指令寫會仲裁,、最終寫回仲裁模塊的面積占比分別為1.5%,、36.5%、11.8%,、0.6%,、16.6%、2.5%,、2.9%,、0.4%和0.3%,合計(jì)為EXU單元的面積占比即73.2%,。
對表1,、2、3中的數(shù)據(jù)分析可以得出,,蜂鳥E203在滿足一定性能的情況下達(dá)到了小面積的設(shè)計(jì)目的,。
另外,為了衡量蜂鳥E203處理器的性能,,本文通過跑分程序(Benchmarks)對其進(jìn)行了跑分測試,,并與ARM Cotex-M0+處理器進(jìn)行比較。從表4可以看出,,蜂鳥E203性能均不遜色于ARM的Cotex-M0+處理器(M0+是ARM面積最小的處理器核),。
4 結(jié)論
本文介紹了一種RISC-V處理器流水線架構(gòu),綜合仿真和跑分測試結(jié)果表明蜂鳥E203可面向極低功耗與極小面積的場景,,非常適合于替代傳統(tǒng)的8051內(nèi)核或者Cortex-M系列內(nèi)核應(yīng)用于IoT或其他低功耗場景,。
參考文獻(xiàn)
[1] ISLAM S M R,KWAK D,,KABIR M H,,et al.The Internet of Things for health care: a comprehensive survey[J].IEEE Access,2017,,3:678-708.
[2] LAPLANTE P A,,LAPLANTE N.The Internet of Things in healthcare: potential applications and challenges[J].IT Professional,2016,,18(3):2-4.
[3] ZANELLA A,,BUI N,CASTELLANI A,et al.Internet of Things for smart cities[J].IEEE Internet of Things Journal,,2014,,1(1):22-32.
[4] LU N,CHENG N,,ZHANG N,,et al.Connected vehicles:solutions and challenges[J].IEEE Internet of Things Journal,2014,,1(4):289-299.
[5] WATERMAN A,,LEE Y,PATTERSON D A,,et al.The RISC-V instruction set manual, volume I:base user-level ISA[J].Eecs Department,,2011,7(9):475.
作者信息:
鄧天傳1,,2,,胡振波2
(1.武漢大學(xué) 物理科學(xué)與技術(shù)學(xué)院,湖北 武漢430071,;2.芯來科技有限公司,,湖北 武漢430072)