国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

RISC-V架構的開源處理器及SoC研究綜述

2017-04-19 11:00雷思磊
關鍵詞:指令集標量流水線

雷思磊

(酒泉衛(wèi)星發(fā)射中心,酒泉 735000)

RISC-V架構的開源處理器及SoC研究綜述

雷思磊

(酒泉衛(wèi)星發(fā)射中心,酒泉 735000)

RISC-V是一種新的指令集架構,發(fā)布以來得到了大量關注,在描述了RISC-V的產(chǎn)生背景、基本設計的基礎上,簡單比較了其與現(xiàn)有的開源指令集架構、商業(yè)指令集架構的優(yōu)劣,然后詳細介紹了現(xiàn)有的采用RISC-V架構的開源處理器、開源SoC,并展望了RISC-V的未來發(fā)展。

RISC-V;Rocket;BOOM;SoC

引 言

RISC-V是加州大學伯克利分校(University of California at Berkeley,以下簡稱UCB)設計并發(fā)布的一種開源指令集架構,其目標是成為指令集架構領域的Linux,應用覆蓋IoT(Internet of Things)設備、桌面計算機、高性能計算機等眾多領域。其產(chǎn)生是因為UCB的研究人員在研究指令集架構的過程中,發(fā)現(xiàn)當前指令集架構存在如下問題[1]:

① 絕大多數(shù)指令集架構都是受專利保護的,比如:x86、MIPS、Alpha,使用這些架構需要授權,限制了競爭的同時也扼制了創(chuàng)新。

② 當前的指令集架構都比較復雜,不適合學術研究,而且很多復雜性是因為一些糟糕的設計或者背負歷史包袱所帶來的。

③ 當前的指令集架構都是針對某一領域的,比如:x86主要是面向服務器、ARM主要是面向移動終端,為此對應的指令集架構針對該領域做了大量的領域特定優(yōu)化,缺乏一個統(tǒng)一的架構可以適用多個領域。

④ 商業(yè)的指令集架構容易受企業(yè)發(fā)展狀況的影響,比如:Alpha架構就隨著DEC公司的被收購而幾近消失。

⑤ 當前已有的各種指令集架構不便于針對特定的應用進行自定義擴展。

為此,UCB的研究人員Krste Asanovic、Andrew Waterman、Yunsup Lee決定設計一種新的指令級架構,并決定以BSD授權的方式開源,希望借此可以有更多創(chuàng)新的處理器產(chǎn)生,有更多的處理器開源,并以此降低電子產(chǎn)品成本[2]。RISC-V自2014年正式發(fā)布以來,受到了包括谷歌、IBM、Oracle等在內(nèi)的眾多企業(yè),以及包括劍橋大學、蘇黎世聯(lián)邦理工大學、印度理工學院、中國科學院在內(nèi)的眾多知名學府與研究機構的關注和參與,圍繞RISC-V的生態(tài)環(huán)境逐漸完善,并涌現(xiàn)了眾多開源處理器及SoC采用RISC-V架構,這些處理器既有標量處理器,也有超標量處理器,既有單核處理器,也有多核處理器。本文簡單介紹RISC-V架構的基本設計,并詳細描述目前采用RISC-V架構的開源處理器與SoC。

1 RISC-V簡介

1.1 RISC-V的基本設計

RISC-V是一個典型三操作數(shù)、加載-存儲形式的RISC架構,包括3個基本指令集和6個擴展指令集,如表1所列,其中RV32E是RV32I的子集,不單獨計算。

表1 RISC-V的指令集組成

基本指令集的名稱后綴都是I,表示Integer,任何一款采用RISC-V架構的處理器都要實現(xiàn)一個基本指令集,根據(jù)需要,可以實現(xiàn)多種擴展指令集,例如:如果實現(xiàn)了RV32IM,表示實現(xiàn)了32位基本指令集和乘法除法擴展指令集。如果實現(xiàn)了RV32IMAFD,那么可以使用RV32G來表示,表示實現(xiàn)了通用標量處理器指令集。本文只介紹RV32I的基本情況。

RV32I指令集有47條指令,能夠滿足現(xiàn)代操作系統(tǒng)運行的基本要求,47條指令按照功能可以分為如下幾類:

① 整數(shù)運算指令,實現(xiàn)算術、邏輯、比較等運算。

② 分支轉(zhuǎn)移指令,實現(xiàn)條件轉(zhuǎn)移、無條件轉(zhuǎn)移等運算,并且沒有延遲槽。

③ 加載存儲指令,實現(xiàn)字節(jié)、半字、字的加載和存儲操作,采用的都是寄存器相對尋址方式。

④ 控制與狀態(tài)寄存器訪問指令,實現(xiàn)對系統(tǒng)控制與狀態(tài)寄存器的原子讀-寫、原子讀-修改、原子讀-清零等操作。

⑤ 系統(tǒng)調(diào)用指令,實現(xiàn)系統(tǒng)調(diào)用、調(diào)試等功能。

1.2 RISC-V的優(yōu)勢

1.2.1 與開源指令集架構比較

在RISC-V發(fā)布之前,實際上已經(jīng)有幾種開源指令級架構,包括SPARC V8、OpenRISC,其中SUN發(fā)布的開源多核多線程處理器OpenSparcT1、OpenSparcT2,以及歐空局的LEON3采用的就是SPARC V8,OpenRISC也有同名的開源處理器,RISC-V與前兩者的比較如表2所列。此外,OpenRISC的許可證為GPL,這意味著所有的指令集改動都必須開源,而RISC-V的許可證是較為寬松的BSD License授權。

表2 RISC-V與SPARC V8、OpenRISC的比較[2]

1.2.2 與商業(yè)指令集架構比較

UCB的研究人員設計了一款采用RISC-V指令集架構的開源處理器Rocket,并且成功流片了11次,其中采用臺積電40 nm工藝時的性能,與采用同樣工藝的、都是標量處理器的ARM Cortex-A5的性能對比如表3所列,可見Rocket占用面積更小,且功耗更低,性能更優(yōu)。

表3 ARM Cortex-A5與采用RISC-V指令集架構的Rocket比較[2]

2 基于RISC-V的開源處理器研究現(xiàn)狀

2.1 標量處理器——Rocket

Rocket是UCB設計的一款64位、5級流水線、單發(fā)射順序執(zhí)行處理器,主要特點有:支持MMU,支持分頁虛擬內(nèi)存,所以可以移植Linux操作系統(tǒng);具有兼容IEEE 754-2008標準的FPU;具有分支預測功能,具有BTB(Branch Prediction Buff)、BHT(Branch History Table)、RAS(Return Address Stack)。

Rocket是采用Chisel(Constructing Hardware in an Scala Embedded Language)編寫的,這也是UCB設計的一種開源的硬件編程語言,是Scala語言的領域特定應用,可以充分利用Scala的優(yōu)勢,將面向?qū)ο?object orientation)、函數(shù)式編程(functional programming)、類型參數(shù)化(parameterized types)、類型推斷(type inference)等概念引入硬件編程語言,從而提供更加強大的硬件開發(fā)能力。Chisel除了開源之外,還有一個優(yōu)勢就是使用Chisel編寫的硬件電路,可以通過編譯得到對應的Verilog設計,還可以得到對應的C++模擬器。Rocket使用Chisel編寫,就可以很容易得到對應的軟件模擬器。同時,因為Chisel是面向?qū)ο蟮?,所以Rocket的很多類可以被其他開源處理器、開源SoC直接使用。

2.2 超標量亂序執(zhí)行處理器——BOOM

BOOM(Berkeley Out-of-Order Machine)是UCB設計的一款64位超標量、亂序執(zhí)行處理器,支持RV64G,也是采用Chisel編寫,利用Chisel的優(yōu)勢,只使用了9 000行代碼,流水線可以劃分為6個階段:取指、譯碼/重命名/指令分配、發(fā)射/讀寄存器、執(zhí)行、訪存、回寫。

借助于Chisel,BOOM是可參數(shù)化配置的超標量處理器,可配置的參數(shù)包括:

① 取指、譯碼、提交、指令發(fā)射的寬度。

② 重排序緩存ROB(Re-Order Buffer)、物理寄存器的大小。

③ 取指令緩存、RAS、BTB、加載、存儲隊列的深度。

④ 有序發(fā)射還是無序發(fā)射。

⑤ L1 Cache的路數(shù)。

⑥ MSHRs(Miss Status Handling Registers)的大小。

⑦ 是否使能L2 Cache。

UCB已經(jīng)在40 nm工藝上對BOOM進行了流片,測試結(jié)果如表4所列??梢夿OOM與商業(yè)產(chǎn)品ARM Cortex-A9的性能要略優(yōu),體現(xiàn)在面積小、功耗低。

表4 BOOM與ARM Cortex-A9的性能對比[3]

2.3 處理器家族——SHAKTI

SHAKTI[4]是印度理工學院的一個計劃,目標是設計一系列適合不同應用環(huán)境的、基于RISC-V的開源處理器,以及一些IP核,以便搭建SoC。這些處理器是E-Class、C-Class、I-Class、M-Class、S-Class、H-Class、T-Class、N-Class,目前已經(jīng)開源的是前三個,使用Bluespec System Verilog編寫。

E-Class:32位標量處理器,3級流水線,支持RISC-V的C(Compress)擴展,目標是超低功耗處理器。

I-Class:64位、1~8核,亂序執(zhí)行處理器,共享L2 Cache、支持雙線程、SIMD/VPU,目標是通用處理器。

M-Class:I-Class的增強版,增加了指令發(fā)射大小、支持四線程、最高支持16核,目標是通用處理器、低端服務器和移動應用。

S-Class:64位、超標量多線程處理器,支持L3 Cache、RapidIO、HMC(Hybrid Memory Cube)、向量處理單元,還有協(xié)處理器用于數(shù)據(jù)庫訪問、加密算法、機器學習,最高支持64核,目標是通用處理器、服務器。

H-Class:64位、32~128核、支持多線程、順序或者亂序執(zhí)行處理器,具有向量處理單元,目標是高性能計算。

T-Class:64或者128位處理器,其中通過為存儲器引入Tag,從而增強其安全性。

N-Class:目標是通過自定義的擴展進行網(wǎng)絡數(shù)據(jù)處理。

2.4 嵌入式應用處理器——ORCA

PicoRV32是由VectorBlox公司設計的一款32位標量處理器,目標是應用于嵌入式領域,采用VHDL編寫,實現(xiàn)了RV32IM,也可以移除其中的M擴展,也就是移除乘法除法擴展,從而減少芯片占用資源,甚至可以移除與定時器有關的指令,從而僅僅實現(xiàn)RV32E。當ORCA作為一個軟核下載到FPGA上的時候,其資源占用與主頻如表5所列。

盡管PPP項目有其獨特的優(yōu)勢,但其在智慧城市領域的實際應用中實現(xiàn)建設落地的并不多,依舊處于起步建設階段。PPP模式的運營周期主要分為識別認證、準備材料、采購落實、執(zhí)行方針和移交五個階段。而目前根據(jù)政府和社會資本合作(PPP)綜合信息平臺了解,智慧城市PPP項目有累計86個依舊處于識別認證時期,占總比例的53.4%。而在歷經(jīng)三個階段考驗后,停滯于執(zhí)行方針階段的項目累計達到24個,占比14.9%。其很大一部分原因是由于國內(nèi)尚未出臺針對PPP模式的專項稅收政策,因此在智慧城市的PPP項目推進過程中面臨諸多稅收不確定性,例如財政不同的重復征稅、優(yōu)惠政策覆蓋面有限等。

表5 ORCA不同配置時的資源占用與主頻[5](以Altera's Cyclone IV為目標FPGA)

2.5 其他開源處理器

(1) RI5CY

RI5CY是由蘇黎世聯(lián)邦理工大學和波羅尼亞大學聯(lián)合設計的一款小巧的4級流水線開源處理器,實現(xiàn)了RV32IC以及RV32M中乘法指令mul,其目標是作為并行超低功耗處理器項目PULP(Parallel Ultra Low Power)的處理器核,所以RI5CY在RISC-V的基礎上增加了許多擴展,包括硬件循環(huán)、乘累加、高級算術指令等。采用UMC的65 nm工藝進行流片,RI5CY主頻達到654 MHz,動態(tài)功耗是17.5 μW/MHz[6],采用SystemVerilog編寫。

(2) RIDECORE

RIDECORE (RIsc-v Dynamic Execution CORE)是由東京工業(yè)大學設計發(fā)布的一款超標量亂序執(zhí)行處理器,實現(xiàn)了RV32IM,6級流水線分別是取指、譯碼、指令分配、發(fā)射、執(zhí)行、提交,可以同時取兩條指令、對兩條指令譯碼、提交兩條指令,采用的是Gshare分支預測機制。

(3) Hwacha

Hwacha是由UCB開發(fā)的一款向量處理器,UCB將Hwacha作為RISC-V的一個非標準擴展Xhwacha,已經(jīng)以28 nm和45 nm的工藝流片多次,主頻在1.5 GHz以上,目前還在研發(fā)中,正在修改OpenCL的編譯器,以適合Hwacha,UCB計劃以開源的形式發(fā)布其代碼。

(4) f32c

f32c是由薩格勒布大學設計發(fā)布的32位、5級流水線、標量處理器,原本實現(xiàn)的是MIPS指令集,后來添加實現(xiàn)了RISC-V指令集,處理器包括分支預測、直接映射緩存,同時發(fā)布的還有SDRAM控制器、SRAM控制器、視頻FrameBuffer、SPI控制器、UART、GPIO等IP,使用VHDL編寫代碼。使用f32c處理器核,薩格勒布大學發(fā)布了FPGArduino項目,該項目將一塊FPGA開發(fā)板變?yōu)橐粋€Arduino板,并且可以使用Arduino IDE進行程序編譯下載。

(5) Z-scale/V-scale

Z-scale是UCB發(fā)布的針對嵌入式環(huán)境的32位、3級流水線、單發(fā)射標量處理器,實現(xiàn)了RV32IM,指令總線和數(shù)據(jù)總線都是AHB-Lite。Z-scale采用是Chisel編寫代碼,利用Rocket中的代碼,僅增加了604行代碼就實現(xiàn)了Z-scale。V-scale是Z-scale對應的Verilog版本。

(6) sodor

sodor是UCB發(fā)布的針對教學的32位開源處理器系列,采用Chisel編碼實現(xiàn),可以很容易的得到對應的C++模擬器。sodor系列有5種處理器,分別是單周期處理器、2級流水線處理器、3級流水線處理器、5級流水線處理器、可執(zhí)行微碼的處理器。

(7) PicoRV32

PicoRV32是由RISC-V開發(fā)者Clifford Wolf設計發(fā)布的一款大小經(jīng)過優(yōu)化的開源處理器,實現(xiàn)了RV32IMC,并且根據(jù)不同環(huán)境可配置為實現(xiàn)RV32E、RV32I、RV32IC、RV32IM、RV32IMC。內(nèi)置一個可選擇的中斷控制器,其特點是小巧,在Xilinx7系列芯片上占用750~2 000個LUT,速度可以達到250~400 MHz。PicoRV32采用Verilog編寫代碼。

(8) Tom Thumb

Tom Thumb是由RISC-V開發(fā)者Maikmerten設計發(fā)布的一款32位、6級流水線開源處理器,實現(xiàn)了RV32I,目標是盡量減少FPGA的資源占用,在Cyclone IV系列FPGA上大約占用資源1200 LEs,采用VHDL編寫代碼。

(9) FlexPRET

FlexPRET[7]是由UCB設計發(fā)布的5級流水線、多線程處理器,目標是使用在實時嵌入式應用中,線程數(shù)量可配置為1~8。為了提高嵌入式處理器的資源利用率,每個硬件線程被標記為硬實時(hard real-time thread)或者軟實時(soft real-time thread),硬實時線程按照固定的頻率被調(diào)度,如果當前沒有硬實時線程可調(diào)度,再調(diào)度軟實時線程。使用Chisel編寫代碼。

(10) YARVI

YARVI(Yet Another RISC-V Implementation)是由RISC-V開發(fā)者Tommy Thorn設計發(fā)布的一款簡單的、32位開源處理器,實現(xiàn)了RV32I,使用Verilog作為開發(fā)語言。其出發(fā)點不在于性能,而是要能夠清晰、準確地實現(xiàn)RV32I。

3 基于RISC-V的開源SoC研究現(xiàn)狀

3.1 Rocket-Chip

UCB為了方便用戶學習,同時也為了便于重復使用已設計好的硬件模塊,在GitHub上建立了Rocket-Chip Generator的項目,其中包括了Chisel、GCC、Rocket處理器,以及圍繞Rocket的一系列總線單元、外設、緩存等,并且采用了參數(shù)化的配置方法,從而可以方便地創(chuàng)建不同性能要求的基于Rocket處理器的SoC。采用Chisel編寫,主要的子模塊如下:

① Chisel:UCB設計的開源硬件編程語言。

② Hardfloat:參數(shù)可配置的、兼容IEEE 754-2008標準的浮點單元。

③ Riscv-tools:開發(fā)工具,包括GCC、Newlib,以及移植的Linux。

④ Rocket:Rocket處理器,包括L1 Cache。

⑤ Uncore:實現(xiàn)了需要與Rocket緊密連接的功能單元,比如L2 Cache、L1 Coherence Hub等。

⑥ Juntions:實現(xiàn)了不同協(xié)議的接口之間的轉(zhuǎn)換。

⑦ Rocketchip:頂層模塊,同時也實現(xiàn)了內(nèi)部總線TileLink向外部總線AXI或者AHB的轉(zhuǎn)換。

前文介紹的BOOM、Z-scale都可以通過配置Rocket-Chip的不同參數(shù)得到。

3.2 LowRISC

LowRISC是由劍橋大學為主的一些研發(fā)人員成立的非營利性組織,主要是設計發(fā)布基于RISC-V指令集的64位開源SoC,其成員有樹莓派的合作者,目標是希望將設計的SoC做成像樹莓派那樣價格便宜、功能豐富、擁有大量用戶的開源硬件。LowRISC發(fā)布的SoC的名稱也是LowRISC,是在Rocket-Chip的基礎上改進開發(fā)的,采用System Verilog編寫改進部分的代碼。主要特點是:

① Tagged Memory。給每一個存儲位置都增加了一個Tag,目前是雙字(64位)對應一個Tag(4位),目的是防止控制流劫持攻擊,同時也有其他的一些用處,比如:垃圾回收、設置watchpoint等。為了實現(xiàn)Tagged Memory,LowRISC為RISC-V增加了兩條指令用來讀寫Tag。2015年4月發(fā)布的0.1版本中具有該功能。

② Untethered。早期的Rocket-Chip需要依賴于一個通用處理器的協(xié)助才能夠啟動,才能夠訪問串口、網(wǎng)口、SD卡等外設,Untethered LowRISC通過實現(xiàn)(Memory mapping I/O)、片上NASTI interconnect等功能,解決了上述問題。2015年11月發(fā)布的0.2版本中具有該功能。

③ Trace Debugging。引入了Open SoC Debug,支持Trace Debugging,可以收集指令執(zhí)行記錄,便于離線或者在線分析。2016年7月發(fā)布的0.3版本中具有該功能。

3.3 PULPino

PULPino是蘇黎世聯(lián)邦理工大學和波羅尼亞大學聯(lián)合發(fā)布的基于RISC-V的開源處理器,其處理器核RI5CY在前文已述,蘇黎世聯(lián)邦理工大學和波羅尼亞大學本來設計的項目是PULP,這是一個多核SoC項目,考慮到這個項目太復雜,有許多IP、自定義工具集,不方便開源,所以開發(fā)者決定先開源一個單核SoC項目,即PULPino。PULPino直接使用了PULP項目的許多IP。

PULPino具有一個AXI互連總線,另外還有一個APB總線,用來連接低速外設,比如:GPIO、UART、I2C控制器、SPI Master控制器等。調(diào)試模塊支持Advanced Debug Unit。PULPino包括一個Boot ROM,其中可以寫入BootLoader,從而實現(xiàn)在啟動的時候從外部Flash讀入程序并執(zhí)行。

3.4 RISC-V VHDL

RISC-V VHDL是俄羅斯的GNSS Sensor公司發(fā)布的基于Rocket的開源SoC,其前身是莫斯科物理技術學院的一個項目。該項目的處理器核直接用的是Rocket,可以配置為只有L1 Cache,也可以配置為包括L2 Cache,在此基礎上,提供了大量的IP核,采用類似LEON3的GRLIB庫的方式,所有的IP核都是即插即用,RISC-V VHDL提供了一個AXI總線,IP核都掛載在該總線上。IP核包括:UART、GPIO、中斷控制器、以太網(wǎng)控制器,此外還支持DSU(Debug Support Unit),均采用VHDL編寫代碼。RISC-V VHDL中大多數(shù)IP核都是開源的,唯一商業(yè)的是GNSSLIB,這是一個與定位導航有關的庫,也是RISC-V VHDL的特色。

結(jié) 語

RISC-V的發(fā)展十分迅速,除了前文已述的基于RISC-V的開源處理器、開源SoC大量涌現(xiàn),還有很多的商用處理器也計劃采用RISC-V指令集架構,比如PulSAR[8],采用的是一個異構多處理器結(jié)構,其中包括2個標量處理器Rocket,還包括兩個超標量亂序執(zhí)行處理器BOOM。RISC-V的發(fā)展一方面得益于自身設計吸取了RISC接近40年的經(jīng)驗教訓,使得架構設計更加合理;另一方面得益于日漸成熟的軟件生態(tài),UCB提供了針對RISC-V的開源編譯器GCC、LLVM,還提供了開源仿真器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

猜你喜歡
指令集標量流水線
基于Kubernetes的RISC-V異構集群云任務調(diào)度系統(tǒng)①
3DNow指令集被Linux淘汰
流水線
一種高效的橢圓曲線密碼標量乘算法及其實現(xiàn)
一種靈活的橢圓曲線密碼并行化方法
實時微測量系統(tǒng)指令集及解析算法
報廢汽車拆解半自動流水線研究
流水線生產(chǎn)殺死藝術
什么是AMD64
單調(diào)Minkowski泛函與Henig真有效性的標量化