雷思磊
(酒泉衛(wèi)星發(fā)射中心,酒泉 735000)
RISC-V架構(gòu)的開(kāi)源處理器及SoC研究綜述
雷思磊
(酒泉衛(wèi)星發(fā)射中心,酒泉 735000)
RISC-V是一種新的指令集架構(gòu),發(fā)布以來(lái)得到了大量關(guān)注,在描述了RISC-V的產(chǎn)生背景、基本設(shè)計(jì)的基礎(chǔ)上,簡(jiǎn)單比較了其與現(xiàn)有的開(kāi)源指令集架構(gòu)、商業(yè)指令集架構(gòu)的優(yōu)劣,然后詳細(xì)介紹了現(xiàn)有的采用RISC-V架構(gòu)的開(kāi)源處理器、開(kāi)源SoC,并展望了RISC-V的未來(lái)發(fā)展。
RISC-V;Rocket;BOOM;SoC
RISC-V是加州大學(xué)伯克利分校(University of California at Berkeley,以下簡(jiǎn)稱UCB)設(shè)計(jì)并發(fā)布的一種開(kāi)源指令集架構(gòu),其目標(biāo)是成為指令集架構(gòu)領(lǐng)域的Linux,應(yīng)用覆蓋IoT(Internet of Things)設(shè)備、桌面計(jì)算機(jī)、高性能計(jì)算機(jī)等眾多領(lǐng)域。其產(chǎn)生是因?yàn)閁CB的研究人員在研究指令集架構(gòu)的過(guò)程中,發(fā)現(xiàn)當(dāng)前指令集架構(gòu)存在如下問(wèn)題[1]:
① 絕大多數(shù)指令集架構(gòu)都是受專利保護(hù)的,比如:x86、MIPS、Alpha,使用這些架構(gòu)需要授權(quán),限制了競(jìng)爭(zhēng)的同時(shí)也扼制了創(chuàng)新。
② 當(dāng)前的指令集架構(gòu)都比較復(fù)雜,不適合學(xué)術(shù)研究,而且很多復(fù)雜性是因?yàn)橐恍┰愀獾脑O(shè)計(jì)或者背負(fù)歷史包袱所帶來(lái)的。
③ 當(dāng)前的指令集架構(gòu)都是針對(duì)某一領(lǐng)域的,比如:x86主要是面向服務(wù)器、ARM主要是面向移動(dòng)終端,為此對(duì)應(yīng)的指令集架構(gòu)針對(duì)該領(lǐng)域做了大量的領(lǐng)域特定優(yōu)化,缺乏一個(gè)統(tǒng)一的架構(gòu)可以適用多個(gè)領(lǐng)域。
④ 商業(yè)的指令集架構(gòu)容易受企業(yè)發(fā)展?fàn)顩r的影響,比如:Alpha架構(gòu)就隨著DEC公司的被收購(gòu)而幾近消失。
⑤ 當(dāng)前已有的各種指令集架構(gòu)不便于針對(duì)特定的應(yīng)用進(jìn)行自定義擴(kuò)展。
為此,UCB的研究人員Krste Asanovic、Andrew Waterman、Yunsup Lee決定設(shè)計(jì)一種新的指令級(jí)架構(gòu),并決定以BSD授權(quán)的方式開(kāi)源,希望借此可以有更多創(chuàng)新的處理器產(chǎn)生,有更多的處理器開(kāi)源,并以此降低電子產(chǎn)品成本[2]。RISC-V自2014年正式發(fā)布以來(lái),受到了包括谷歌、IBM、Oracle等在內(nèi)的眾多企業(yè),以及包括劍橋大學(xué)、蘇黎世聯(lián)邦理工大學(xué)、印度理工學(xué)院、中國(guó)科學(xué)院在內(nèi)的眾多知名學(xué)府與研究機(jī)構(gòu)的關(guān)注和參與,圍繞RISC-V的生態(tài)環(huán)境逐漸完善,并涌現(xiàn)了眾多開(kāi)源處理器及SoC采用RISC-V架構(gòu),這些處理器既有標(biāo)量處理器,也有超標(biāo)量處理器,既有單核處理器,也有多核處理器。本文簡(jiǎn)單介紹RISC-V架構(gòu)的基本設(shè)計(jì),并詳細(xì)描述目前采用RISC-V架構(gòu)的開(kāi)源處理器與SoC。
1.1 RISC-V的基本設(shè)計(jì)
RISC-V是一個(gè)典型三操作數(shù)、加載-存儲(chǔ)形式的RISC架構(gòu),包括3個(gè)基本指令集和6個(gè)擴(kuò)展指令集,如表1所列,其中RV32E是RV32I的子集,不單獨(dú)計(jì)算。
表1 RISC-V的指令集組成
基本指令集的名稱后綴都是I,表示Integer,任何一款采用RISC-V架構(gòu)的處理器都要實(shí)現(xiàn)一個(gè)基本指令集,根據(jù)需要,可以實(shí)現(xiàn)多種擴(kuò)展指令集,例如:如果實(shí)現(xiàn)了RV32IM,表示實(shí)現(xiàn)了32位基本指令集和乘法除法擴(kuò)展指令集。如果實(shí)現(xiàn)了RV32IMAFD,那么可以使用RV32G來(lái)表示,表示實(shí)現(xiàn)了通用標(biāo)量處理器指令集。本文只介紹RV32I的基本情況。
RV32I指令集有47條指令,能夠滿足現(xiàn)代操作系統(tǒng)運(yùn)行的基本要求,47條指令按照功能可以分為如下幾類:
① 整數(shù)運(yùn)算指令,實(shí)現(xiàn)算術(shù)、邏輯、比較等運(yùn)算。
② 分支轉(zhuǎn)移指令,實(shí)現(xiàn)條件轉(zhuǎn)移、無(wú)條件轉(zhuǎn)移等運(yùn)算,并且沒(méi)有延遲槽。
③ 加載存儲(chǔ)指令,實(shí)現(xiàn)字節(jié)、半字、字的加載和存儲(chǔ)操作,采用的都是寄存器相對(duì)尋址方式。
④ 控制與狀態(tài)寄存器訪問(wèn)指令,實(shí)現(xiàn)對(duì)系統(tǒng)控制與狀態(tài)寄存器的原子讀-寫(xiě)、原子讀-修改、原子讀-清零等操作。
⑤ 系統(tǒng)調(diào)用指令,實(shí)現(xiàn)系統(tǒng)調(diào)用、調(diào)試等功能。
1.2 RISC-V的優(yōu)勢(shì)
1.2.1 與開(kāi)源指令集架構(gòu)比較
在RISC-V發(fā)布之前,實(shí)際上已經(jīng)有幾種開(kāi)源指令級(jí)架構(gòu),包括SPARC V8、OpenRISC,其中SUN發(fā)布的開(kāi)源多核多線程處理器OpenSparcT1、OpenSparcT2,以及歐空局的LEON3采用的就是SPARC V8,OpenRISC也有同名的開(kāi)源處理器,RISC-V與前兩者的比較如表2所列。此外,OpenRISC的許可證為GPL,這意味著所有的指令集改動(dòng)都必須開(kāi)源,而RISC-V的許可證是較為寬松的BSD License授權(quán)。
表2 RISC-V與SPARC V8、OpenRISC的比較[2]
1.2.2 與商業(yè)指令集架構(gòu)比較
UCB的研究人員設(shè)計(jì)了一款采用RISC-V指令集架構(gòu)的開(kāi)源處理器Rocket,并且成功流片了11次,其中采用臺(tái)積電40 nm工藝時(shí)的性能,與采用同樣工藝的、都是標(biāo)量處理器的ARM Cortex-A5的性能對(duì)比如表3所列,可見(jiàn)Rocket占用面積更小,且功耗更低,性能更優(yōu)。
表3 ARM Cortex-A5與采用RISC-V指令集架構(gòu)的Rocket比較[2]
2.1 標(biāo)量處理器——Rocket
Rocket是UCB設(shè)計(jì)的一款64位、5級(jí)流水線、單發(fā)射順序執(zhí)行處理器,主要特點(diǎn)有:支持MMU,支持分頁(yè)虛擬內(nèi)存,所以可以移植Linux操作系統(tǒng);具有兼容IEEE 754-2008標(biāo)準(zhǔn)的FPU;具有分支預(yù)測(cè)功能,具有BTB(Branch Prediction Buff)、BHT(Branch History Table)、RAS(Return Address Stack)。
Rocket是采用Chisel(Constructing Hardware in an Scala Embedded Language)編寫(xiě)的,這也是UCB設(shè)計(jì)的一種開(kāi)源的硬件編程語(yǔ)言,是Scala語(yǔ)言的領(lǐng)域特定應(yīng)用,可以充分利用Scala的優(yōu)勢(shì),將面向?qū)ο?object orientation)、函數(shù)式編程(functional programming)、類型參數(shù)化(parameterized types)、類型推斷(type inference)等概念引入硬件編程語(yǔ)言,從而提供更加強(qiáng)大的硬件開(kāi)發(fā)能力。Chisel除了開(kāi)源之外,還有一個(gè)優(yōu)勢(shì)就是使用Chisel編寫(xiě)的硬件電路,可以通過(guò)編譯得到對(duì)應(yīng)的Verilog設(shè)計(jì),還可以得到對(duì)應(yīng)的C++模擬器。Rocket使用Chisel編寫(xiě),就可以很容易得到對(duì)應(yīng)的軟件模擬器。同時(shí),因?yàn)镃hisel是面向?qū)ο蟮模訰ocket的很多類可以被其他開(kāi)源處理器、開(kāi)源SoC直接使用。
2.2 超標(biāo)量亂序執(zhí)行處理器——BOOM
BOOM(Berkeley Out-of-Order Machine)是UCB設(shè)計(jì)的一款64位超標(biāo)量、亂序執(zhí)行處理器,支持RV64G,也是采用Chisel編寫(xiě),利用Chisel的優(yōu)勢(shì),只使用了9 000行代碼,流水線可以劃分為6個(gè)階段:取指、譯碼/重命名/指令分配、發(fā)射/讀寄存器、執(zhí)行、訪存、回寫(xiě)。
借助于Chisel,BOOM是可參數(shù)化配置的超標(biāo)量處理器,可配置的參數(shù)包括:
① 取指、譯碼、提交、指令發(fā)射的寬度。
② 重排序緩存ROB(Re-Order Buffer)、物理寄存器的大小。
③ 取指令緩存、RAS、BTB、加載、存儲(chǔ)隊(duì)列的深度。
④ 有序發(fā)射還是無(wú)序發(fā)射。
⑤ L1 Cache的路數(shù)。
⑥ MSHRs(Miss Status Handling Registers)的大小。
⑦ 是否使能L2 Cache。
UCB已經(jīng)在40 nm工藝上對(duì)BOOM進(jìn)行了流片,測(cè)試結(jié)果如表4所列??梢?jiàn)BOOM與商業(yè)產(chǎn)品ARM Cortex-A9的性能要略優(yōu),體現(xiàn)在面積小、功耗低。
表4 BOOM與ARM Cortex-A9的性能對(duì)比[3]
2.3 處理器家族——SHAKTI
SHAKTI[4]是印度理工學(xué)院的一個(gè)計(jì)劃,目標(biāo)是設(shè)計(jì)一系列適合不同應(yīng)用環(huán)境的、基于RISC-V的開(kāi)源處理器,以及一些IP核,以便搭建SoC。這些處理器是E-Class、C-Class、I-Class、M-Class、S-Class、H-Class、T-Class、N-Class,目前已經(jīng)開(kāi)源的是前三個(gè),使用Bluespec System Verilog編寫(xiě)。
E-Class:32位標(biāo)量處理器,3級(jí)流水線,支持RISC-V的C(Compress)擴(kuò)展,目標(biāo)是超低功耗處理器。
I-Class:64位、1~8核,亂序執(zhí)行處理器,共享L2 Cache、支持雙線程、SIMD/VPU,目標(biāo)是通用處理器。
M-Class:I-Class的增強(qiáng)版,增加了指令發(fā)射大小、支持四線程、最高支持16核,目標(biāo)是通用處理器、低端服務(wù)器和移動(dòng)應(yīng)用。
S-Class:64位、超標(biāo)量多線程處理器,支持L3 Cache、RapidIO、HMC(Hybrid Memory Cube)、向量處理單元,還有協(xié)處理器用于數(shù)據(jù)庫(kù)訪問(wèn)、加密算法、機(jī)器學(xué)習(xí),最高支持64核,目標(biāo)是通用處理器、服務(wù)器。
H-Class:64位、32~128核、支持多線程、順序或者亂序執(zhí)行處理器,具有向量處理單元,目標(biāo)是高性能計(jì)算。
T-Class:64或者128位處理器,其中通過(guò)為存儲(chǔ)器引入Tag,從而增強(qiáng)其安全性。
N-Class:目標(biāo)是通過(guò)自定義的擴(kuò)展進(jìn)行網(wǎng)絡(luò)數(shù)據(jù)處理。
2.4 嵌入式應(yīng)用處理器——ORCA
PicoRV32是由VectorBlox公司設(shè)計(jì)的一款32位標(biāo)量處理器,目標(biāo)是應(yīng)用于嵌入式領(lǐng)域,采用VHDL編寫(xiě),實(shí)現(xiàn)了RV32IM,也可以移除其中的M擴(kuò)展,也就是移除乘法除法擴(kuò)展,從而減少芯片占用資源,甚至可以移除與定時(shí)器有關(guān)的指令,從而僅僅實(shí)現(xiàn)RV32E。當(dāng)ORCA作為一個(gè)軟核下載到FPGA上的時(shí)候,其資源占用與主頻如表5所列。
盡管PPP項(xiàng)目有其獨(dú)特的優(yōu)勢(shì),但其在智慧城市領(lǐng)域的實(shí)際應(yīng)用中實(shí)現(xiàn)建設(shè)落地的并不多,依舊處于起步建設(shè)階段。PPP模式的運(yùn)營(yíng)周期主要分為識(shí)別認(rèn)證、準(zhǔn)備材料、采購(gòu)落實(shí)、執(zhí)行方針和移交五個(gè)階段。而目前根據(jù)政府和社會(huì)資本合作(PPP)綜合信息平臺(tái)了解,智慧城市PPP項(xiàng)目有累計(jì)86個(gè)依舊處于識(shí)別認(rèn)證時(shí)期,占總比例的53.4%。而在歷經(jīng)三個(gè)階段考驗(yàn)后,停滯于執(zhí)行方針階段的項(xiàng)目累計(jì)達(dá)到24個(gè),占比14.9%。其很大一部分原因是由于國(guó)內(nèi)尚未出臺(tái)針對(duì)PPP模式的專項(xiàng)稅收政策,因此在智慧城市的PPP項(xiàng)目推進(jìn)過(guò)程中面臨諸多稅收不確定性,例如財(cái)政不同的重復(fù)征稅、優(yōu)惠政策覆蓋面有限等。
表5 ORCA不同配置時(shí)的資源占用與主頻[5](以Altera's Cyclone IV為目標(biāo)FPGA)
2.5 其他開(kāi)源處理器
(1) RI5CY
RI5CY是由蘇黎世聯(lián)邦理工大學(xué)和波羅尼亞大學(xué)聯(lián)合設(shè)計(jì)的一款小巧的4級(jí)流水線開(kāi)源處理器,實(shí)現(xiàn)了RV32IC以及RV32M中乘法指令mul,其目標(biāo)是作為并行超低功耗處理器項(xiàng)目PULP(Parallel Ultra Low Power)的處理器核,所以RI5CY在RISC-V的基礎(chǔ)上增加了許多擴(kuò)展,包括硬件循環(huán)、乘累加、高級(jí)算術(shù)指令等。采用UMC的65 nm工藝進(jìn)行流片,RI5CY主頻達(dá)到654 MHz,動(dòng)態(tài)功耗是17.5 μW/MHz[6],采用SystemVerilog編寫(xiě)。
(2) RIDECORE
RIDECORE (RIsc-v Dynamic Execution CORE)是由東京工業(yè)大學(xué)設(shè)計(jì)發(fā)布的一款超標(biāo)量亂序執(zhí)行處理器,實(shí)現(xiàn)了RV32IM,6級(jí)流水線分別是取指、譯碼、指令分配、發(fā)射、執(zhí)行、提交,可以同時(shí)取兩條指令、對(duì)兩條指令譯碼、提交兩條指令,采用的是Gshare分支預(yù)測(cè)機(jī)制。
(3) Hwacha
Hwacha是由UCB開(kāi)發(fā)的一款向量處理器,UCB將Hwacha作為RISC-V的一個(gè)非標(biāo)準(zhǔn)擴(kuò)展Xhwacha,已經(jīng)以28 nm和45 nm的工藝流片多次,主頻在1.5 GHz以上,目前還在研發(fā)中,正在修改OpenCL的編譯器,以適合Hwacha,UCB計(jì)劃以開(kāi)源的形式發(fā)布其代碼。
(4) f32c
f32c是由薩格勒布大學(xué)設(shè)計(jì)發(fā)布的32位、5級(jí)流水線、標(biāo)量處理器,原本實(shí)現(xiàn)的是MIPS指令集,后來(lái)添加實(shí)現(xiàn)了RISC-V指令集,處理器包括分支預(yù)測(cè)、直接映射緩存,同時(shí)發(fā)布的還有SDRAM控制器、SRAM控制器、視頻FrameBuffer、SPI控制器、UART、GPIO等IP,使用VHDL編寫(xiě)代碼。使用f32c處理器核,薩格勒布大學(xué)發(fā)布了FPGArduino項(xiàng)目,該項(xiàng)目將一塊FPGA開(kāi)發(fā)板變?yōu)橐粋€(gè)Arduino板,并且可以使用Arduino IDE進(jìn)行程序編譯下載。
(5) Z-scale/V-scale
Z-scale是UCB發(fā)布的針對(duì)嵌入式環(huán)境的32位、3級(jí)流水線、單發(fā)射標(biāo)量處理器,實(shí)現(xiàn)了RV32IM,指令總線和數(shù)據(jù)總線都是AHB-Lite。Z-scale采用是Chisel編寫(xiě)代碼,利用Rocket中的代碼,僅增加了604行代碼就實(shí)現(xiàn)了Z-scale。V-scale是Z-scale對(duì)應(yīng)的Verilog版本。
(6) sodor
sodor是UCB發(fā)布的針對(duì)教學(xué)的32位開(kāi)源處理器系列,采用Chisel編碼實(shí)現(xiàn),可以很容易的得到對(duì)應(yīng)的C++模擬器。sodor系列有5種處理器,分別是單周期處理器、2級(jí)流水線處理器、3級(jí)流水線處理器、5級(jí)流水線處理器、可執(zhí)行微碼的處理器。
(7) PicoRV32
PicoRV32是由RISC-V開(kāi)發(fā)者Clifford Wolf設(shè)計(jì)發(fā)布的一款大小經(jīng)過(guò)優(yōu)化的開(kāi)源處理器,實(shí)現(xiàn)了RV32IMC,并且根據(jù)不同環(huán)境可配置為實(shí)現(xiàn)RV32E、RV32I、RV32IC、RV32IM、RV32IMC。內(nèi)置一個(gè)可選擇的中斷控制器,其特點(diǎn)是小巧,在Xilinx7系列芯片上占用750~2 000個(gè)LUT,速度可以達(dá)到250~400 MHz。PicoRV32采用Verilog編寫(xiě)代碼。
(8) Tom Thumb
Tom Thumb是由RISC-V開(kāi)發(fā)者M(jìn)aikmerten設(shè)計(jì)發(fā)布的一款32位、6級(jí)流水線開(kāi)源處理器,實(shí)現(xiàn)了RV32I,目標(biāo)是盡量減少FPGA的資源占用,在Cyclone IV系列FPGA上大約占用資源1200 LEs,采用VHDL編寫(xiě)代碼。
(9) FlexPRET
FlexPRET[7]是由UCB設(shè)計(jì)發(fā)布的5級(jí)流水線、多線程處理器,目標(biāo)是使用在實(shí)時(shí)嵌入式應(yīng)用中,線程數(shù)量可配置為1~8。為了提高嵌入式處理器的資源利用率,每個(gè)硬件線程被標(biāo)記為硬實(shí)時(shí)(hard real-time thread)或者軟實(shí)時(shí)(soft real-time thread),硬實(shí)時(shí)線程按照固定的頻率被調(diào)度,如果當(dāng)前沒(méi)有硬實(shí)時(shí)線程可調(diào)度,再調(diào)度軟實(shí)時(shí)線程。使用Chisel編寫(xiě)代碼。
(10) YARVI
YARVI(Yet Another RISC-V Implementation)是由RISC-V開(kāi)發(fā)者Tommy Thorn設(shè)計(jì)發(fā)布的一款簡(jiǎn)單的、32位開(kāi)源處理器,實(shí)現(xiàn)了RV32I,使用Verilog作為開(kāi)發(fā)語(yǔ)言。其出發(fā)點(diǎn)不在于性能,而是要能夠清晰、準(zhǔn)確地實(shí)現(xiàn)RV32I。
3.1 Rocket-Chip
UCB為了方便用戶學(xué)習(xí),同時(shí)也為了便于重復(fù)使用已設(shè)計(jì)好的硬件模塊,在GitHub上建立了Rocket-Chip Generator的項(xiàng)目,其中包括了Chisel、GCC、Rocket處理器,以及圍繞Rocket的一系列總線單元、外設(shè)、緩存等,并且采用了參數(shù)化的配置方法,從而可以方便地創(chuàng)建不同性能要求的基于Rocket處理器的SoC。采用Chisel編寫(xiě),主要的子模塊如下:
① Chisel:UCB設(shè)計(jì)的開(kāi)源硬件編程語(yǔ)言。
② Hardfloat:參數(shù)可配置的、兼容IEEE 754-2008標(biāo)準(zhǔn)的浮點(diǎn)單元。
③ Riscv-tools:開(kāi)發(fā)工具,包括GCC、Newlib,以及移植的Linux。
④ Rocket:Rocket處理器,包括L1 Cache。
⑤ Uncore:實(shí)現(xiàn)了需要與Rocket緊密連接的功能單元,比如L2 Cache、L1 Coherence Hub等。
⑥ Juntions:實(shí)現(xiàn)了不同協(xié)議的接口之間的轉(zhuǎn)換。
⑦ Rocketchip:頂層模塊,同時(shí)也實(shí)現(xiàn)了內(nèi)部總線TileLink向外部總線AXI或者AHB的轉(zhuǎn)換。
前文介紹的BOOM、Z-scale都可以通過(guò)配置Rocket-Chip的不同參數(shù)得到。
3.2 LowRISC
LowRISC是由劍橋大學(xué)為主的一些研發(fā)人員成立的非營(yíng)利性組織,主要是設(shè)計(jì)發(fā)布基于RISC-V指令集的64位開(kāi)源SoC,其成員有樹(shù)莓派的合作者,目標(biāo)是希望將設(shè)計(jì)的SoC做成像樹(shù)莓派那樣價(jià)格便宜、功能豐富、擁有大量用戶的開(kāi)源硬件。LowRISC發(fā)布的SoC的名稱也是LowRISC,是在Rocket-Chip的基礎(chǔ)上改進(jìn)開(kāi)發(fā)的,采用System Verilog編寫(xiě)改進(jìn)部分的代碼。主要特點(diǎn)是:
① Tagged Memory。給每一個(gè)存儲(chǔ)位置都增加了一個(gè)Tag,目前是雙字(64位)對(duì)應(yīng)一個(gè)Tag(4位),目的是防止控制流劫持攻擊,同時(shí)也有其他的一些用處,比如:垃圾回收、設(shè)置watchpoint等。為了實(shí)現(xiàn)Tagged Memory,LowRISC為RISC-V增加了兩條指令用來(lái)讀寫(xiě)Tag。2015年4月發(fā)布的0.1版本中具有該功能。
② Untethered。早期的Rocket-Chip需要依賴于一個(gè)通用處理器的協(xié)助才能夠啟動(dòng),才能夠訪問(wèn)串口、網(wǎng)口、SD卡等外設(shè),Untethered LowRISC通過(guò)實(shí)現(xiàn)(Memory mapping I/O)、片上NASTI interconnect等功能,解決了上述問(wèn)題。2015年11月發(fā)布的0.2版本中具有該功能。
③ Trace Debugging。引入了Open SoC Debug,支持Trace Debugging,可以收集指令執(zhí)行記錄,便于離線或者在線分析。2016年7月發(fā)布的0.3版本中具有該功能。
3.3 PULPino
PULPino是蘇黎世聯(lián)邦理工大學(xué)和波羅尼亞大學(xué)聯(lián)合發(fā)布的基于RISC-V的開(kāi)源處理器,其處理器核RI5CY在前文已述,蘇黎世聯(lián)邦理工大學(xué)和波羅尼亞大學(xué)本來(lái)設(shè)計(jì)的項(xiàng)目是PULP,這是一個(gè)多核SoC項(xiàng)目,考慮到這個(gè)項(xiàng)目太復(fù)雜,有許多IP、自定義工具集,不方便開(kāi)源,所以開(kāi)發(fā)者決定先開(kāi)源一個(gè)單核SoC項(xiàng)目,即PULPino。PULPino直接使用了PULP項(xiàng)目的許多IP。
PULPino具有一個(gè)AXI互連總線,另外還有一個(gè)APB總線,用來(lái)連接低速外設(shè),比如:GPIO、UART、I2C控制器、SPI Master控制器等。調(diào)試模塊支持Advanced Debug Unit。PULPino包括一個(gè)Boot ROM,其中可以寫(xiě)入BootLoader,從而實(shí)現(xiàn)在啟動(dòng)的時(shí)候從外部Flash讀入程序并執(zhí)行。
3.4 RISC-V VHDL
RISC-V VHDL是俄羅斯的GNSS Sensor公司發(fā)布的基于Rocket的開(kāi)源SoC,其前身是莫斯科物理技術(shù)學(xué)院的一個(gè)項(xiàng)目。該項(xiàng)目的處理器核直接用的是Rocket,可以配置為只有L1 Cache,也可以配置為包括L2 Cache,在此基礎(chǔ)上,提供了大量的IP核,采用類似LEON3的GRLIB庫(kù)的方式,所有的IP核都是即插即用,RISC-V VHDL提供了一個(gè)AXI總線,IP核都掛載在該總線上。IP核包括:UART、GPIO、中斷控制器、以太網(wǎng)控制器,此外還支持DSU(Debug Support Unit),均采用VHDL編寫(xiě)代碼。RISC-V VHDL中大多數(shù)IP核都是開(kāi)源的,唯一商業(yè)的是GNSSLIB,這是一個(gè)與定位導(dǎo)航有關(guān)的庫(kù),也是RISC-V VHDL的特色。
RISC-V的發(fā)展十分迅速,除了前文已述的基于RISC-V的開(kāi)源處理器、開(kāi)源SoC大量涌現(xiàn),還有很多的商用處理器也計(jì)劃采用RISC-V指令集架構(gòu),比如PulSAR[8],采用的是一個(gè)異構(gòu)多處理器結(jié)構(gòu),其中包括2個(gè)標(biāo)量處理器Rocket,還包括兩個(gè)超標(biāo)量亂序執(zhí)行處理器BOOM。RISC-V的發(fā)展一方面得益于自身設(shè)計(jì)吸取了RISC接近40年的經(jīng)驗(yàn)教訓(xùn),使得架構(gòu)設(shè)計(jì)更加合理;另一方面得益于日漸成熟的軟件生態(tài),UCB提供了針對(duì)RISC-V的開(kāi)源編譯器GCC、LLVM,還提供了開(kāi)源仿真器Spike、QEMU,社區(qū)還移植了FreeBSD、Debian、Gentoo、Yocto、Genode等操作系統(tǒng)。
[1] A Waterman,Y Lee,DA Patterson, et al.The RISC-V Instruction Set Manual, Volume I: User-Level ISA[J].Eecs Department,2011, 7(9):475.
[2] Krste Asanovic, David Patterson.The Case for Open Instruction Sets[J].MICROPROCESSOR report, 2014(8): 1-7.
[3] Celio, Christopher and Patterson, David A.and Asanovic, Krste, The Berkeley Out-of-Order Machine (BOOM): An Industry-Competitive, Synthesizable, Parameterized RISC-V Processor[R].EECS Department, University of California, Berkeley, June 2015.
Research on Open Source Processor and SoC Based on RISC-V
Lei Silei
(Jiuquan Satellite Launch Center,Jiuquan 735000,China)
RISC-V is a new instruction set architecture(ISA),and it gets a lot of attention since the release.On the basis of describing the background and the basic design of RISC-V,the advantages and disadvantages with the existing open-source instruction set architecture and commercial instruction set architecture are compared.Then the existing open source processor and SoC using RISC-V architecture are described.Finally,the future development of RISC-V is prospected.
RISC-V;Rocket;BOOM;SoC
TP368.1
A