基於RISC-V架構的開源處理器及SoC研究綜述(三)
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:開發工具,包括
- 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指令集的
(1)Tagged Memory:給每一個儲存位置都增加了一個Tag,目前是雙字(64bit)對應一個Tag(4bit),目的是防止控制流劫持攻擊,同時也有其他的一些用處,比如:垃圾回收、設定watchpoint等。為了實現Tagged Memory,LowRISC為RISC-V增加了兩條指令用來讀寫
(2)Untethered:早期的Rocket-Chip需要依賴於一個通用處理器的協助才能夠啟動,才能夠訪問串列埠、網口、SD卡等外設,Untethered LowRISC通過實現(Memory mapping I/O)、片上NASTI interconnect等功能,解決了上述問題。2015年11月釋出的0.2版本中具有該功能。
(3)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,可以配置為只有L1Cache,也可以配置為包括L2Cache,在此基礎上,提供了大量的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等作業系統。
在第4屆RISC-V專題研討會上宣佈成立了RISC-V基金會,吸納了眾多實力雄厚的商業公司和知名研究機構,其中包括中國科學院,可以預見RISC-V即將進入一個快速發展的階段,應該會在以下幾個方面有突破進展。
(1)有若干成熟的、可商業化的、採用RISC-V架構的晶片問世,並得到大規模應用。
(2)效能逼近主流桌面處理器。
(3)主流處理器與採用RISC-V架構的開源處理器組成的異構系統。
(4)移植到RISC-V架構的作業系統更加穩定可靠。
(5)採用上百個簡單RISC-V核的多核平行計算。
(6)計算機教學中採用RISC-V作為範例教學。
(7)除錯功能得到進一步加強。
對於國內而言,RISC-V提供了一個很好的參考,也是一個很好地機遇,有很多可借鑑的地方,用來實現自主可控的處理器。
參考文獻
[1]Waterman, A. et al. The RISC-V Instruction Set Manual, Volume I: User-Level ISA, Version 2.1[S], 2016
[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 Asanović, 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.
[4]N. Gala, A. Menon, R. Bodduna, G. S. Madhusudan, V. Kamakoti, SHAKTI Processors: An Open-Source Hardware Initiative[C], 29th International Conference on VLSI Design and 2016 15th International Conference on Embedded Systems (VLSID), Kolkata, India, January, 2016
[5]PULPino User Manul[EB/OL], http://www.pulp-platform.org/documentation/, 2016-8
[6]Michael Zimmer, David Broman, Chris Shaver, Edward A. Lee, FlexPRET: A Processor Platform for Mixed-Criticality Systems[C], Proceedings of the 20th IEEE Real-Time and Embedded Technology and Application Symposium (RTAS), April, 2014.
[7]PEYRET Thomas, VENTROUX Nicolas, OLIVIER Thomas, HETEROGENEOUS MULTICORE BASED ON RISC-V PROCESSORS AND FD-SOI SILICON PLATFORM[C], 4th RISC-V Workshop Proceedings, July, 2016.