基於RISC-V架構的開源處理器及SoC研究綜述(二)
2 基於RISC-V的開源處理器研究現狀
目前基於RISC-V架構的開源處理器有很多,既有標量處理器Rocket,也有超標量處理器BOOM,還有面向嵌入式領域的Z-scale、PicoRV32等。
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直接使用。
Rocket已經被流片11次之多,其效能比較參考前文表3。
2.2 超標量亂序執行處理器——BOOM
BOOM(Berkeley Out-of-Order Machine)是UCB設計的一款64位超標量、亂序執行處理器,支援RV64G,也是採用Chisel編寫,利用Chisel的優勢,只使用了9000行程式碼,流水線可以劃分為六個階段:取指、譯碼/重新命名/指令分配、發射/讀暫存器、執行、訪存、回寫。
藉助於Chisel,BOOM是可引數化配置的超標量處理器,可配置的引數包括:
- 取指、譯碼、提交、指令發射的寬度
- 重排序快取ROB(Re-Order Buffer)、物理暫存器的大小
- 取指令快取、RAS、BTB、載入、儲存佇列的深度
- 有序發射還是無序發射
- L1 cache的路數
- MSHRs(Miss Status Handling Registers)的大小
- 是否使能L2 Cache
UCB已經在40nm工藝上對BOOM進行了流片,測試結果如表4所示。可見BOOM與商業產品ARM Cortex-A9的效能要略優,體現在面積小、功耗低。
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)擴充套件,目標是超低功耗處理器。
- C-Class:32位或者64位標量處理器,3-8級流水線,支援MMU、具有容錯功能、支援RISC-V的C擴充套件,目標也是超低功耗處理器。
- 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所示。
2.5 其他開源處理器
(1)RI5CY
RI5CY是由蘇黎世聯邦理工大學和波羅尼亞大學聯合設計的一款小巧的4級流水線開源處理器,實現了RV32IC,以及RV32M中乘法指令mul,其目標是作為並行超低功耗處理器專案PULP(Parallel Ultra Low Power)的處理器核,所以RI5CY在RISC-V的基礎上增加了許多擴充套件,包括硬體迴圈、乘累加、高階算術指令等。採用UMC的65nm工藝進行流片,RI5CY主頻可以達到654MHz,動態功耗是17.5uW/MHz[6]。採用SystemVerilog編寫。
(2)RIDECORE
RIDECORE (RIsc-v Dynamic Execution CORE) 是由東京工業大學設計釋出的一款超標量亂序執行處理器,實現了RV32IM,6級流水線,分別是取指、譯碼、指令分配、發射、執行、提交,可以同時取兩條指令、對兩條指令譯碼、提交兩條指令。採用的是Gshare分支預測機制。
(3)Hwacha
Hwacha是由UCB開發的一款向量處理器,UCB將Hwacha作為RISC-V的一個非標準擴充套件Xhwacha,已經以28nm和45nm的工藝流片多次,主頻在1.5GHz以上,目前還在研發中,正在修改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系列有五種處理器,分別是單週期處理器、2級流水線處理器、3級流水線處理器、5級流水線處理器、可執行微碼的處理器。
(7)PicoRV32
PicoRV32是由RISC-V開發者Clifford Wolf設計釋出的一款大小經過優化的開源處理器,實現了RV32IMC,並且根據不同環境可配置為實現RV32E、RV32I、RV32IC、RV32IM、RV32IMC。內建一個可選擇的中斷控制器。其特點是小巧,在Xilinx7系列晶片上佔用750-2000個LUT,速度可以達到250-400MHz。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。
(未完待續)相關文章
- 基於RISC-V架構的開源處理器及SoC研究綜述(一)架構
- 基於RISC-V架構的開源處理器及SoC研究綜述(三)架構
- 處理器架構資源整理架構
- 指令集架構、arm核心、SoC、處理器、CPU、GPU等的關係架構GPU
- 分散式快取架構綜述分散式快取架構
- 文章綜述:基於結構法分析的故障檢測
- 神經架構搜尋在視訊理解中研究進展的綜述架構
- 讀“基於深度學習的影像風格遷移研究綜述”有感深度學習
- CPU處理器架構架構
- 網路廣告研究綜述
- 處理器架構和配置架構
- 處理器架構劃分架構
- 7大類深度CNN架構創新綜述CNN架構
- 基於AWS雲服務的批處理系統架構架構
- 綜述 | 水稻株型的遺傳基礎與分子調控機理研究進展
- Action Recognition——基於表示的動作識別綜述
- 基於 Serverless 架構的頭像漫畫風處理小程式Server架構
- 【智慧駕駛】基於計算機視覺的自動駕駛演算法研究綜述計算機視覺自動駕駛演算法
- 盤點.NET支援的 處理器架構架構
- 阿里架構師,講述基於微服務的軟體架構模式(附資料)阿里架構微服務模式
- 計算廣告系統演算法與架構綜述演算法架構
- RISC-V,微處理器中的 Linux :它會開啟一個開源硬體的文藝復興麼?Linux
- MIPS 架構流水線處理器架構
- GPU 架構是圖形處理器GPU架構
- 處理器指令集架構的位數架構
- OnionArch 2.0 - 基於DDD的洋蔥架構改進版開源架構
- JVM篇1:[-結構綜述-]JVM
- 自動機器學習:最近進展研究綜述機器學習
- 嘉楠基於RISC-V的端側AIoT SoC採用了芯原的ISP IP和GPU IPAIGPU
- Action Recognition——基於深度學習的動作識別綜述深度學習
- 生成對抗網路綜述:從架構到訓練技巧架構
- 敏捷開發方法綜述敏捷
- 第二章 處理器結構
- nlp文字處理開源工具,及聊天機器人實現開源工具機器人
- 如何基於開源構架設計一個影片平臺?
- 開源新聞綜述:五角大樓、好萊塢和 Sandboxie 的開源
- 【讀論文】 -- 推薦系統研究綜述
- 基於Oracle的私有云架構探析(連載二)Oracle架構