文獻(xiàn)標(biāo)識(shí)碼: 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)化和簡(jiǎn)單化,,以便來設(shè)計(jì)更高頻率和更低功耗的處理器,。另一方面,對(duì)于應(yīng)用于可穿戴系統(tǒng)和醫(yī)療保健[1-2]等IoT(Internet of Thing)應(yīng)用和其他IoT應(yīng)用如智能城市[3],、智能交通[4]的處理器對(duì)低功耗和小面積的要求更高,。然而,由于商業(yè)原因以及知識(shí)產(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)具備極簡(jiǎn),、模塊化和可定制擴(kuò)展等優(yōu)點(diǎn)。這也使得RISC-V指令集架構(gòu)可以通過組合或擴(kuò)展指令集在幾乎所有領(lǐng)域都可以構(gòu)建微處理器,,比如云計(jì)算,、存儲(chǔ)、并行計(jì)算,、虛擬化/容器,、MCUs、應(yīng)用處理器和DSP處理器,。
1 蜂鳥E203的總體結(jié)構(gòu)設(shè)計(jì)
E203處理器核的結(jié)構(gòu)示意圖如圖1所示,,流水線的第一級(jí)為“取指”(由IFU完成)?!白g碼”(由EXU完成),、“執(zhí)行”(由EXU完成)和“寫回”(由WB完成)均處于同一個(gè)時(shí)鐘周期,位于流水線的第二級(jí),。而“訪問”(由LSU完成)階段處于EXU之后的第三級(jí)流水線,,但是LSU寫回的結(jié)果仍然需要通過WB模塊寫回通用寄存器組(Register File,Regfile),。因此,,嚴(yán)格來說,蜂鳥E203是一個(gè)變長(zhǎng)的流水線結(jié)構(gòu),。但是蜂鳥E203處理器核的按序主體是位于第一級(jí)的“取指”和位于第二級(jí)的“執(zhí)行”及“寫回”,,因此本文非嚴(yán)謹(jǐn)?shù)囟x蜂鳥E203處理器核的流水線長(zhǎng)度為二級(jí)。
2 蜂鳥E203的單元設(shè)計(jì)
2.1 取指(IFU)單元的設(shè)計(jì)思路
IFU微架構(gòu)如圖2所示,,Mini-Decode模塊主要用于對(duì)取回的指令進(jìn)行譯碼,。Simple-BPU模塊主要用于對(duì)取回的指令通過Mini-Decode模塊進(jìn)行譯碼后發(fā)現(xiàn)的分支跳轉(zhuǎn)指令進(jìn)行分支預(yù)測(cè)。PC生成邏輯用于產(chǎn)生下一個(gè)待取指令的PC,。地址判斷和ICB總線控制會(huì)根據(jù)PC的地址訪問ITCM或BIU,。ITCM作為指令存儲(chǔ),而如果取指令的地址不落在ITCM所在的區(qū)間,,IFU則會(huì)通過BIU訪問外部的存儲(chǔ)器,。
IFU在取出指令后,會(huì)將其放置于和EXU單元接口的IR(Instruction Register)寄存器中,。該指令的PC值也會(huì)被放置于和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是簡(jiǎn)單的兩級(jí)流水線架構(gòu),派遣(Dispatch)發(fā)生在流水線的執(zhí)行階段,,表示指令經(jīng)過譯碼且從寄存器組中讀取了操作數(shù)之后被派遣到不同的運(yùn)算單元(ALU,、Long Pipes、LSU和EAI)執(zhí)行的過程,。
2.2.2 整數(shù)通用寄存器模塊
整數(shù)通用寄存器組(Integer Register File,,簡(jiǎn)稱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模塊只需要支持最多兩個(gè)讀端口,。同時(shí),,蜂鳥E203的寫回策略是按順序每次寫回一條指令的微架構(gòu),因此Integer-Regfile模塊只用支持一個(gè)端口,。
2.2.3 ALU模塊
如圖5所示,,蜂鳥E203的ALU單元包括5個(gè)功能子單元。普通ALU運(yùn)算主要負(fù)責(zé)普通的ALU指令(邏輯運(yùn)算,、加減法移位等指令)的執(zhí)行,;訪問地址生成主要負(fù)責(zé)Load、Store和“A”擴(kuò)展指令的地址生成,;分支預(yù)測(cè)解析主要負(fù)責(zé)Branch和Jump指令的結(jié)果解析和執(zhí)行,;CSR讀寫控制主要負(fù)責(zé)CSR指令的執(zhí)行;多周期乘除法器主要負(fù)責(zé)乘法和除法指令的執(zhí)行,。以上5個(gè)功能子單元只負(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)部寄存器,,使用其自己的地址編碼空間,與存儲(chǔ)器尋址的地址區(qū)間完全無關(guān)系,。蜂鳥E203的EXU單元中的CSR寄存器模塊主要用于實(shí)現(xiàn)蜂鳥E203所支持的寄存器功能,。如在ALU模塊中的CSR讀寫寄存器模塊會(huì)產(chǎn)生CSR讀寫控制信號(hào)。
2.2.5 OITF模塊
OITF本身只是一個(gè)先進(jìn)先出的FIFO,,F(xiàn)IFO的默認(rèn)深度是2個(gè)表項(xiàng),。如圖6所示,每條指令在派遣時(shí),,都會(huì)將本指令的源操作數(shù)寄存器索引和結(jié)果寄存器索引與OITF中的各個(gè)表項(xiàng)進(jìn)行對(duì)比,從而判斷本指令是否已經(jīng)派遣出以及檢查其是否與尚未寫回的長(zhǎng)指令產(chǎn)生RAW和WAW相關(guān)性,。在整個(gè)過程中,,由于蜂鳥E203主要側(cè)重于低功耗和小面積,因此只采用了阻塞流水線而未使用快速旁路的方法,。
2.2.6 交付(Commit)模塊
RISC-V指令集架構(gòu)具有指令沒有條件碼和所有的運(yùn)算指令都不會(huì)產(chǎn)生異常這兩個(gè)顯著的特點(diǎn),,因此可以大幅度簡(jiǎn)化“交付”的硬件實(shí)現(xiàn)。無論是單周期指令還是多周期指令,,在蜂鳥E203處理器中都將“交付”安排在“執(zhí)行”階段,。
2.2.7 寫回仲裁(WB-Arb)模塊
蜂鳥E203處理器的寫回策略是一種因地制宜的混合策略。其核心思想是將指令劃分為單周期指令和長(zhǎng)指令兩大類,;以及將長(zhǎng)指令的“交付”和“寫回”分開,,使得即便執(zhí)行了多周期指令,仍然不會(huì)阻塞流水線,,讓后續(xù)的單周期指令仍然能夠順利地寫回和交付,。
如圖3所示,蜂鳥E203處理器有兩級(jí)寫回仲裁模塊,,其一是最終寫回仲裁,,主要用于仲裁所有單周期指令的寫回(來自ALU模塊)和所有長(zhǎng)指令的寫回(來自長(zhǎng)指令寫回仲裁模塊),仲裁采用優(yōu)先級(jí)仲裁的方式,。在沒有長(zhǎng)指令寫回的空閑周期,,單周期指令可以隨便寫回。而對(duì)于長(zhǎng)指令的寫回,,則由OITF和長(zhǎng)指令寫回仲裁模塊協(xié)同完成所有長(zhǎng)指令的寫回操作,。
3 綜合仿真分析與跑分測(cè)試
表1為蜂鳥E203 CPU的面積分布占比報(bào)告,其中CPU核的面積為233 329.695 5 μm2,,占整個(gè)CPU面積的93.5%,,CPU的其他部分的面積為16 334.17 μm2,占整個(gè)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、長(zhǎng)指令寫會(huì)仲裁,、最終寫回仲裁模塊的面積占比分別為1.5%,、36.5%、11.8%,、0.6%,、16.6%、2.5%,、2.9%,、0.4%和0.3%,合計(jì)為EXU單元的面積占比即73.2%,。
對(duì)表1,、2、3中的數(shù)據(jù)分析可以得出,,蜂鳥E203在滿足一定性能的情況下達(dá)到了小面積的設(shè)計(jì)目的,。
另外,為了衡量蜂鳥E203處理器的性能,,本文通過跑分程序(Benchmarks)對(duì)其進(jìn)行了跑分測(cè)試,,并與ARM Cotex-M0+處理器進(jìn)行比較。從表4可以看出,,蜂鳥E203性能均不遜色于ARM的Cotex-M0+處理器(M0+是ARM面積最小的處理器核),。
4 結(jié)論
本文介紹了一種RISC-V處理器流水線架構(gòu),綜合仿真和跑分測(cè)試結(jié)果表明蜂鳥E203可面向極低功耗與極小面積的場(chǎng)景,,非常適合于替代傳統(tǒng)的8051內(nèi)核或者Cortex-M系列內(nèi)核應(yīng)用于IoT或其他低功耗場(chǎng)景,。
參考文獻(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)