この記事は ハードウェア開発、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というハードウェア記述言語で実装されている。
XilinxのFPGA向けに、Zybo, Zedboard, ZC706 向けの実装パッケージが提供されている。
BOOM
性能を重視したコア。2-wide版と4-wide版が存在する。またコアの実装自体はChiselというハードウェア記述言語で実装されている。
- 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のコア。パイプライン段数は短かく、最も面積性能を重視したコア。
- 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 Project http://rise.cse.iitm.ac.in/shakti.html
シリーズとしては以下が計画されている。
- 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.
ちなみに、実装は以下から確認できるようだ。
さっそく、cloneしてみた。結構サイズがある。C-Class, I-Class, E-Classの実装がある。E-Classは、Cクラスよりもより小さなコアとのこと。 I-Classはアウトオブオーダまで組んであるらしいので、高性能が好きな人は良いんじゃないかな。
PicoRV32 (実装公開済)
実装としてはかなり小さい方。RV32IMをサポートとしている。CPI=4.081と、パイプライン組んでいないんじゃないの?クラス。ただし取っ掛かりとしてはかなりお手頃かもしれない。
RIDECORE (実装公開済)
東京工業大学 吉瀬研究室が開発したプロセッサ。MIPSの実装とか昔は作っていたようだが、最近はRISC-Vに切り替えたのかな。
検索してみると論文も出てくる。ただしDhrystone値もCoremark値も計測していないようなので、性能としては未知数。あんまり特定のアプリケーションでは、比較する気にならない。
http://www.arch.cs.titech.ac.jp/a/thesis/Bthesis-2016-02-fujinami.pdf
RI5CY (実装公開済)
2016/12/12追記。 @muo_jp 様より指摘頂きました。
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
Hwacha Project
id:Worldforward 様より指摘頂きました。追記します。
RISC-VのRocket Chipを拡張して、ベクトル演算のアクセラレータを搭載したもの。ベースはUC BerkeleyのRocketだが、それを拡張する形でベクトル命令をオフロードできるようになっている。
そして、兎に角資料が詳細で凄い。これをきちんと読み進めるのは、相当な時間がかかりそうだ。
- The Hwacha Vector-Fetch Architecture Manual, Version 3.8.1 https://www2.eecs.berkeley.edu/Pubs/TechRpts/2015/EECS-2015-262.pdf
- The Hwacha Microarchitecture Manual, Version 3.8.1 https://www2.eecs.berkeley.edu/Pubs/TechRpts/2015/EECS-2015-263.pdf
3. 実機
ちょうど近ごろ、RISC-Vのチップのリリースがありましたね。
これによると動作周波数は320MHz、1.61 DMIPs/MHz, 2.73 Coremark/MHz、Arduinoのプラットフォームを採用している。
ソースコードはこちらで公開されている。
入手してみる価値は、あるかも?