1. 程式人生 > >基於RISC-V架構的開源處理器及SoC研究綜述(三)

基於RISC-V架構的開源處理器及SoC研究綜述(三)

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

3.1 Rocket-Chip

  UCB為了方便使用者學習,同時也為了便於重複使用已設計好的硬體模組,在GitHub上建立了Rocket-Chip Generator的專案,其中包括了ChiselGCCRocket處理器,以及圍繞Rocket的一系列匯流排單元、外設、快取等,並且採用了引數化的配置方法,從而可以方便的建立不同效能要求的基於Rocket處理器的SoC。採用Chisel編寫,主要的子模組如下。

  •  ChiselUCB設計的開源硬體程式語言。
  •  Hardfloat:引數可配置的、相容IEEE 754-2008標準的浮點單元。
  •  Riscv-tools:開發工具,包括
    GCCNewlib,以及移植的Linux
  •  RocketRocket處理器,包括L1 Cache
  •  Uncore:實現了需要與Rocket緊密連線的功能單元,比如L2 CacheL1 Coherence Hub等。
  •  Juntions:實現了不同協議的介面之間的轉換。
  •  Rocketchip:頂層模組,同時也實現了內部匯流排TileLink向外部匯流排AXI或者AHB的轉換。

  前文介紹的BOOMZ-scale都可以通過配置Rocket-Chip的不同引數得到。

3.2 LowRISC

  LowRISC是由劍橋大學為主的一些研發人員成立的非營利性組織,主要是設計釋出基於RISC-V指令集的

64位開源SoC,其成員有樹莓派的合作者,所以其目標是希望將設計的SoC做成類似於樹莓派那樣價格便宜、功能豐富、擁有大量使用者的開源硬體。LowRISC釋出的SoC名稱也是LowRISC,是在Rocket-Chip的基礎上改進開發的,採用System Verilog編寫改進部分的程式碼。主要特點是:

  (1)Tagged Memory:給每一個儲存位置都增加了一個Tag,目前是雙字(64bit)對應一個Tag4bit,目的是防止控制流劫持攻擊,同時也有其他的一些用處,比如:垃圾回收、設定watchpoint等。為了實現Tagged MemoryLowRISCRISC-V增加了兩條指令用來讀寫

Tag20154月釋出的0.1版本中具有該功能。

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

  (3)Trace Debugging:引入了Open SoC Debug,支援Trace Debugging,可以收集指令執行記錄,便於離線或者線上分析。20167月釋出的0.3版本中具有該功能。

3.3 PULPino

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

  PULPino具有一個AXI互連匯流排,另外還有一個APB匯流排,用來連線低速外設,比如:GPIOUARTI2C控制器、SPI Master控制器等。除錯模組支援Advanced Debug UnitPULPino包括一個Boot ROM,其中可以寫入BootLoader,從而實現在啟動的時候從外部Flash讀入程式並執行

3.4 RISC-V VHDL

  RISC-V VHDL是俄羅斯的GNSS Sensor公司釋出的基於Rocket的開源SoC,其前身是莫斯科物理技術學院的一個專案。該專案的處理器核直接就用的是Rocket,可以配置為只有L1Cache,也可以配置為包括L2Cache在此基礎上,提供了大量的IP核,採用類似LEON3GRLIB庫的方式,所有的IP核都是即插即用,RISC-V VHDL提供了一個AXI匯流排,IP核都掛載在該總線上。IP核包括:UARTGPIO、中斷控制器、乙太網控制器,此外還支援DSUDebug 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的開源編譯器GCCLLVM,還提供了開源模擬器SpikeQEMU,社群還移植了FreeBSDDebianGentooYoctoGenode等作業系統。

  在第4RISC-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.