FPGA開発日記

カテゴリ別記事インデックス https://msyksphinz.github.io/github_pages , English Version https://fpgadevdiary.hatenadiary.com/

RISC-Vアーキテクチャの実装についてまとめ

f:id:msyksphinz:20160605215109p:plain

この記事は ハードウェア開発、CPUアーキテクチャ Advent Calendar 2016 - Qiita の2日目の記事です。

Advent-Calendarを埋めてくれるかた、今からでも募集中です!是非参加してください! 僕一人では、クオリティのある記事を続けられそうにありません。。。(弱音)

1. RISC-Vの実装について (Berkeley編)

UC Berkeleyが実装した、RISC-Vの実装は以下のようなものが挙げられる。

Rocket Chip BOOM 2-wide BOOM 4-wide Z-scale
UCB UCB UCB UCB
ISA 64-bit RISC-V v2 64-bit RISC-V 64-bit RISC-V 32-bit RISC-V
RV32IM
Pipeline Single-Issue
In-Order
5-stage
2-wide, 3-Issue
Out-of-Order
6-stage
4-wide, 4-issue
Out-of-Order
6-stage
Single-Issue
In-order
3-stage
L1 cache Configurable Configurable Configurable -
L2 cache Configurable Configurable Configurable -
Performance[DMIPS/MHz] 1.72 - - 1.35
IPC 0.76 1.25 1.5 -
Max Frequency[MHz] 1500 1500 1500 500
CoreMark[CMK/MHz] 2.32 3.91 4.7 -
Area [mm2] 0.39 (with 16k cache) 1.1 (with 32k cache) 1.4 (with 32k cache) 0.0098
Area Efficiency[DMIPS/MHz/mm2] 4.41 - - 138

Rocket Core

最も一般的なRISC-V実装。シングル命令発行で5パイプラインステージを持つ。またコアの実装自体はChiselというハードウェア記述言語で実装されている。

github.com

XilinxFPGA向けに、Zybo, Zedboard, ZC706 向けの実装パッケージが提供されている。

github.com

BOOM

性能を重視したコア。2-wide版と4-wide版が存在する。またコアの実装自体はChiselというハードウェア記述言語で実装されている。

github.com

  • The Berkeley Out-of-Order Machine (BOOM): An IndustryCompetitive, Synthesizable, Parameterized RISC-V Processor

http://digitalassets.lib.berkeley.edu/techreports/ucb/text/EECS-2015-167.pdf

  • The Berkeley Out-of-Order Machine (BOOM!): An Open-source Industry-CompeEEve, Synthesizable, Parameterized RISC-V Processor

https://riscv.org/wp-content/uploads/2016/01/Wed1345-RISCV-Workshop-3-BOOM.pdf

Z-scale

32-bitのコア。パイプライン段数は短かく、最も面積性能を重視したコア。

github.com

github.com

  • Z-scale: Tiny 32-bit RISC-V Systems With Updates to the Rocket Chip Generator

https://riscv.org/wp-content/uploads/2015/06/riscv-zscale-workshop-june2015.pdf

2. RISC-V実装 (UC Berkeley以外)

UC Berkeley以外の実装には、調査したところ以下のような実装が存在した。

本当はWorkshopの発表内容とか全部チェックしていくともっと沢山あるんだろうけど。。。そこまで気力が無かった(笑)

SHAKTI Processor (一部実装公開済)

Indian Institute of Technologyが開発しているプロセッサ。特徴としては「とにかく目標が壮大なこと」。

2016/12/02 追記。@ogawa_tter 様より指摘あり。

SHAKTIの特徴の一つに Interconnectとして RapidIO実装があります (ざっと見たところ 2014年頃から進んでないようですが)。さらに S classは HMC対応です。

申し訳ありません。あまりにも説明が雑過ぎましたね。。。

シリーズとしては以下が計画されている。

  • SHAKTI Processor C-Class : マイクロコントローラクラス
  • SHAKTI Processor I-Class
  • SHAKTI Processor M-Class
  • SHAKTI Processor S-Class
  • SHAKTI Processor H-Class : 3-5 + Tflopsクラス
  • SHAKTI Processor T-Class : Experimental security oriented 64-bit variants with tagged ISA, single address space support, decoupling of protection from memory management.

ちなみに、実装は以下から確認できるようだ。

bitbucket.org

さっそく、cloneしてみた。結構サイズがある。C-Class, I-Class, E-Classの実装がある。E-Classは、Cクラスよりもより小さなコアとのこと。 I-Classはアウトオブオーダまで組んであるらしいので、高性能が好きな人は良いんじゃないかな。

PicoRV32 (実装公開済)

実装としてはかなり小さい方。RV32IMをサポートとしている。CPI=4.081と、パイプライン組んでいないんじゃないの?クラス。ただし取っ掛かりとしてはかなりお手頃かもしれない。

github.com

RIDECORE (実装公開済)

東京工業大学 吉瀬研究室が開発したプロセッサ。MIPSの実装とか昔は作っていたようだが、最近はRISC-Vに切り替えたのかな。

  • Verilog HDLで記述するRISC-V命令セットの教育用アウトオブオーダ実行プロセッサ

github.com

検索してみると論文も出てくる。ただしDhrystone値もCoremark値も計測していないようなので、性能としては未知数。あんまり特定のアプリケーションでは、比較する気にならない。

http://www.arch.cs.titech.ac.jp/a/thesis/Bthesis-2016-02-fujinami.pdf

RI5CY (実装公開済)

2016/12/12追記。 @muo_jp 様より指摘頂きました。

github.com

PULPinoというプラットフォームは、オープンソースRISC-V SoCプラットフォームのようだ。4ステージのシンプルなパイプラインに、様々な独自命令を拡張している。例えば、

  • ハードウェアループ
  • ポストインクリメント、デクリメントメモリアクセス命令
  • MAC命令

など。ちなみに、この辺りのコンパイラ生成も独自に拡張を加えているようだ。やるなあ。

The ETH version supports all the ISA extensions that were incorporated into the RI5CY core.

Pulsar (実装非公開)

CeaTechという企業?が開発したプロセッサ。結構早い段階からRISC-V Workshopにて実装を発表している。ただし、こちらも性能面での言及があまり無く、概念の話が多い。

まあどちらかというと、FD-SOIプロセスを利用するということに焦点が当てられている気がするね。

  • Heterogeneous Multicore Based on RISC-V Processors and FD-SOI Silicon Platform

https://riscv.org/wp-content/uploads/2016/07/Tue1000_Heterogeneous_multicore_based_on_RISC-V_processors_and_FD-SOI_silicon_platform.pdf

Hwacha Project

id:Worldforward 様より指摘頂きました。追記します。

RISC-VのRocket Chipを拡張して、ベクトル演算のアクセラレータを搭載したもの。ベースはUC BerkeleyのRocketだが、それを拡張する形でベクトル命令をオフロードできるようになっている。

そして、兎に角資料が詳細で凄い。これをきちんと読み進めるのは、相当な時間がかかりそうだ。

3. 実機

ちょうど近ごろ、RISC-Vのチップのリリースがありましたね。

www.sifive.com

これによると動作周波数は320MHz、1.61 DMIPs/MHz, 2.73 Coremark/MHz、Arduinoのプラットフォームを採用している。

ソースコードはこちらで公開されている。

github.com

入手してみる価値は、あるかも?