999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

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

2017-04-19 11:00:26雷思磊
單片機與嵌入式系統應用 2017年2期
關鍵詞:指令設計

雷思磊

(酒泉衛星發射中心,酒泉 735000)

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

雷思磊

(酒泉衛星發射中心,酒泉 735000)

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

RISC-V;Rocket;BOOM;SoC

引 言

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

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

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

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

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

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

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

1 RISC-V簡介

1.1 RISC-V的基本設計

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

表1 RISC-V的指令集組成

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

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

① 整數運算指令,實現算術、邏輯、比較等運算。

② 分支轉移指令,實現條件轉移、無條件轉移等運算,并且沒有延遲槽。

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

④ 控制與狀態寄存器訪問指令,實現對系統控制與狀態寄存器的原子讀-寫、原子讀-修改、原子讀-清零等操作。

⑤ 系統調用指令,實現系統調用、調試等功能。

1.2 RISC-V的優勢

1.2.1 與開源指令集架構比較

在RISC-V發布之前,實際上已經有幾種開源指令級架構,包括SPARC V8、OpenRISC,其中SUN發布的開源多核多線程處理器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 與商業指令集架構比較

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

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

2 基于RISC-V的開源處理器研究現狀

2.1 標量處理器——Rocket

Rocket是UCB設計的一款64位、5級流水線、單發射順序執行處理器,主要特點有:支持MMU,支持分頁虛擬內存,所以可以移植Linux操作系統;具有兼容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的優勢,將面向對象(object orientation)、函數式編程(functional programming)、類型參數化(parameterized types)、類型推斷(type inference)等概念引入硬件編程語言,從而提供更加強大的硬件開發能力。Chisel除了開源之外,還有一個優勢就是使用Chisel編寫的硬件電路,可以通過編譯得到對應的Verilog設計,還可以得到對應的C++模擬器。Rocket使用Chisel編寫,就可以很容易得到對應的軟件模擬器。同時,因為Chisel是面向對象的,所以Rocket的很多類可以被其他開源處理器、開源SoC直接使用。

2.2 超標量亂序執行處理器——BOOM

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

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

① 取指、譯碼、提交、指令發射的寬度。

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

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

④ 有序發射還是無序發射。

⑤ L1 Cache的路數。

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

⑦ 是否使能L2 Cache。

UCB已經在40 nm工藝上對BOOM進行了流片,測試結果如表4所列。可見BOOM與商業產品ARM Cortex-A9的性能要略優,體現在面積小、功耗低。

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

2.3 處理器家族——SHAKTI

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

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

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

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

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

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

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

N-Class:目標是通過自定義的擴展進行網絡數據處理。

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

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

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

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

2.5 其他開源處理器

(1) RI5CY

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

(2) RIDECORE

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

(3) Hwacha

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

(4) f32c

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

(5) Z-scale/V-scale

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

(6) sodor

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

(7) PicoRV32

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

(8) Tom Thumb

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

(9) FlexPRET

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

(10) YARVI

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

3 基于RISC-V的開源SoC研究現狀

3.1 Rocket-Chip

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

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

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

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

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

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

⑥ Juntions:實現了不同協議的接口之間的轉換。

⑦ Rocketchip:頂層模塊,同時也實現了內部總線TileLink向外部總線AXI或者AHB的轉換。

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

3.2 LowRISC

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

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

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

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

3.3 PULPino

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

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

3.4 RISC-V VHDL

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

結 語

RISC-V的發展十分迅速,除了前文已述的基于RISC-V的開源處理器、開源SoC大量涌現,還有很多的商用處理器也計劃采用RISC-V指令集架構,比如PulSAR[8],采用的是一個異構多處理器結構,其中包括2個標量處理器Rocket,還包括兩個超標量亂序執行處理器BOOM。RISC-V的發展一方面得益于自身設計吸取了RISC接近40年的經驗教訓,使得架構設計更加合理;另一方面得益于日漸成熟的軟件生態,UCB提供了針對RISC-V的開源編譯器GCC、LLVM,還提供了開源仿真器Spike、QEMU,社區還移植了FreeBSD、Debian、Gentoo、Yocto、Genode等操作系統。

[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

猜你喜歡
指令設計
聽我指令:大催眠術
何為設計的守護之道?
現代裝飾(2020年7期)2020-07-27 01:27:42
《豐收的喜悅展示設計》
流行色(2020年1期)2020-04-28 11:16:38
ARINC661顯控指令快速驗證方法
測控技術(2018年5期)2018-12-09 09:04:26
LED照明產品歐盟ErP指令要求解讀
電子測試(2018年18期)2018-11-14 02:30:34
瞞天過海——仿生設計萌到家
藝術啟蒙(2018年7期)2018-08-23 09:14:18
設計秀
海峽姐妹(2017年7期)2017-07-31 19:08:17
有種設計叫而專
Coco薇(2017年5期)2017-06-05 08:53:16
殺毒軟件中指令虛擬機的脆弱性分析
電信科學(2016年10期)2016-11-23 05:11:56
一種基于滑窗的余度指令判別算法
主站蜘蛛池模板: 色综合狠狠操| 四虎精品国产AV二区| 久久99这里精品8国产| 又粗又大又爽又紧免费视频| 视频一本大道香蕉久在线播放| 日本人妻一区二区三区不卡影院| 无码专区国产精品第一页| 国产成人三级| 久久精品视频亚洲| 免费毛片全部不收费的| 成年免费在线观看| 伊人成人在线| 国产精品免费电影| 亚洲精品国产成人7777| 久久亚洲精少妇毛片午夜无码 | 一区二区三区国产精品视频| 婷婷开心中文字幕| 国产成人无码久久久久毛片| AV不卡国产在线观看| 国产精品综合色区在线观看| 少妇人妻无码首页| 国产精品一区二区国产主播| 国产女人爽到高潮的免费视频| 亚洲精品无码抽插日韩| 99国产精品一区二区| 欧美日韩一区二区在线播放| 狼友视频国产精品首页| 精品视频在线观看你懂的一区| 久久久久青草大香线综合精品| 色男人的天堂久久综合| 女同国产精品一区二区| 欧美日韩动态图| 国产丝袜无码精品| 无码日韩视频| 中文成人无码国产亚洲| 亚洲高清无在码在线无弹窗| 日韩久草视频| 国产第一页亚洲| 国产精品一区二区在线播放| 国产黑人在线| 69国产精品视频免费| 亚洲AV电影不卡在线观看| 色综合五月婷婷| 久久无码高潮喷水| 91国语视频| 天天操精品| 欧洲成人在线观看| 国产精品成人观看视频国产 | 欧美a在线视频| 成人小视频网| 久久精品欧美一区二区| 国产原创演绎剧情有字幕的| 国产欧美精品专区一区二区| 欧美区在线播放| 国产精品亚洲天堂| 中文字幕在线日本| 国产欧美专区在线观看| 999国内精品视频免费| 国产91视频免费观看| 三区在线视频| 亚洲黄网在线| 91在线精品麻豆欧美在线| 夜夜拍夜夜爽| 国产女人综合久久精品视| 毛片手机在线看| 成年A级毛片| 亚洲欧美天堂网| 亚洲无码久久久久| 日韩免费中文字幕| 婷婷伊人五月| 成人午夜视频网站| 久久亚洲中文字幕精品一区| 四虎亚洲国产成人久久精品| 国产一区二区精品高清在线观看| 欧美在线国产| 91久久天天躁狠狠躁夜夜| 中文字幕亚洲无线码一区女同| 国产无码高清视频不卡| 亚洲色大成网站www国产| 国产人成午夜免费看| 亚洲AV电影不卡在线观看| 国产在线八区|