文獻(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)化和簡單化,以便來設(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)具備極簡、模塊化和可定制擴(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è)變長的流水線結(jié)構(gòu)。但是蜂鳥E203處理器核的按序主體是位于第一級(jí)的“取指”和位于第二級(jí)的“執(zhí)行”及“寫回”,因此本文非嚴(yán)謹(jǐn)?shù)囟x蜂鳥E203處理器核的流水線長度為二級(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ù)測。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是簡單的兩級(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,簡稱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ù)測解析主要負(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)派遣出以及檢查其是否與尚未寫回的長指令產(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),因此可以大幅度簡化“交付”的硬件實(shí)現(xiàn)。無論是單周期指令還是多周期指令,在蜂鳥E203處理器中都將“交付”安排在“執(zhí)行”階段。
2.2.7 寫回仲裁(WB-Arb)模塊
蜂鳥E203處理器的寫回策略是一種因地制宜的混合策略。其核心思想是將指令劃分為單周期指令和長指令兩大類;以及將長指令的“交付”和“寫回”分開,使得即便執(zhí)行了多周期指令,仍然不會(huì)阻塞流水線,讓后續(xù)的單周期指令仍然能夠順利地寫回和交付。
如圖3所示,蜂鳥E203處理器有兩級(jí)寫回仲裁模塊,其一是最終寫回仲裁,主要用于仲裁所有單周期指令的寫回(來自ALU模塊)和所有長指令的寫回(來自長指令寫回仲裁模塊),仲裁采用優(yōu)先級(jí)仲裁的方式。在沒有長指令寫回的空閑周期,單周期指令可以隨便寫回。而對(duì)于長指令的寫回,則由OITF和長指令寫回仲裁模塊協(xié)同完成所有長指令的寫回操作。
3 綜合仿真分析與跑分測試
表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、長指令寫會(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)行了跑分測試,并與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)