RISC-V (リスク・ファイブ)について語り合おう
講師
講師
講師
コーディネータ

竹内 陽児 (イーソル)
塩谷 亮太 (東京大学)
柴田 貴康 (プライムゲート)
山崎 進(北九州市立大学)© 2019 Susumu Yamazaki

1

RISC-Vへの誘い• RISC-Vを学ぶ利点
1. なぜこのように設計したのか，理由や意図が明示されている
2. ISAがシンプル
3. なんとフリー！ 太っ腹！
1. free beer の意味の free 無償な
2. free speech の意味の free 自由な
4. ツールが充実している
5. 多くのメーカーが参入を表明している© 2019 Susumu Yamazaki2順番について• 資料の順番• 実際の発表順番(議事録順)

1. 柴田さん

1. 竹内さん2. 塩谷先生

2. 塩谷先生

3. 山崎

3. 山崎

4. 竹内さん

4. 柴田さん© 2019 Susumu Yamazaki

3

RISC-Vのゆる～い話
第2回マイコンボードもんもん会@京都（ALGYAN関西支部）
2019年01月20日(日)@shibatchii

発表を聞くにあたっての注意点
 あまり真剣に見ないでください。

 ボロが丸わかりです。
 あまり深く考えないでください。
 え～それって〇〇じゃん、こじつけだーってとこ多いです。

 笑って、和やかな心で見てください。
 その方が幸せになれます。

 メモ取って真剣に聞くような内容は出てきません。
 会社に帰って報告書書けなくっても知りません。
 @shibatchii個人の趣味のお話です。(会社ほぼ関係ナシ)@shibatchii自己紹介 名前： @shibatchii 仕事：ASIC、FPGAの設計検証

某ゲーム機のDDR I/Fとか本拠地は山口県宇部市

 趣味：オートバイでツーリング
FPGA,マイコン いじり ブログ:http://shibatchii.cocolog-nifty.com/blog/
 ホームページ:http://shibatchii.cool.coocan.jp/
 SlideShare:https://www.slideshare.net/TakayasuShibata/
edit_my_uploads
 Twitter:@shibatchii フォロー歓迎@shibatchii

さてさて、RISC-Vとは@shibatchii

突然ですが、アンケート
 RISC-Vって知ってる？

 よく知っている なんか聞いたことある。興味ある よく知らない@shibatchii

RISC-Vとは
もともとカリフォルニア大学バークレイで教育用として作られていた。今はRISC-V財団が管理
CPUの命令セット・アーキテクチャ (ISA)
グーグル、オラクル、ヒューレット・パッカード・エンタープライズ（HPE）などが開発に参加
完全にオープンで自由に使える命令セットアーキテクチャ
アドレッシングは32/64/128bitサポート
上記、Wikipedia参照しました。https://ja.wikipedia.org/wiki/RISC-V
詳細は FPGAマガジンNo.18とかRISC-VのWebページを参考にしてください。

@shibatchii

特徴
自由度が高い必要なバス幅、命令セットを選んで構成できる
バスも自由：AMBA,Sonic,VME,オレオレバス,etcメモリマップも自由：スタートベクタが途中にあってもOK

命令セット構成例
RV32I MAFDQC■ RV32I:基本命令 ■ M:乗徐算命令■ F:単精度小数点 ■ D:倍精度小数点

この並べ方にも規則があるよ■ A:アトミック命令 ■ C:圧縮
■ Q:4倍精度小数点 ■他にも L,B,J,T,P,V,Nなど有

ここまで必要ないなら、例えばRV32IMACだけでもOK@shibatchii

モジュール一覧

凍結(Freeze)となっているところは今後仕様が変わらない。
そうでないところはまだ検討中だったり、影も形もない。
注：RV32G とか”G"の場合がある。GはGeneral purpose (汎用、一般的用途)
これは G=(IMAFD) と読み替える。つまりRV32G = RV32IMAFD@shibatchii

Ｉ 基本命令一覧

全47命令、ただし簡易な実装では黄、桃、赤色の泥臭い命令所
はSYSTEM命令1個、NOPに置き換えられるので38命令でOK
CSRはコントロール・ステータス・レジスタ@shibatchii

疑似命令 みんな大好きNOP命令が無い？ nop 大丈夫 addi x0,x0,0 で置き換え
 単純JUMPしたいんだけど？ jmp oIset
 jal x0,oIset でいける
 戻ってくる命令ないじゃん？ ret jalr x0,x1,0 を使うのさ ２の補数を作りたいんだけど？ neg rd,rs sub rd,x0,rs でやってちょ
これらはアセンブラが置き換えてくれる。他にも疑似命令いろいろ有。

★ x0レジスタは0固定になっているレジスタ@shibatchii

レジスタ一覧@shibatchii

Microsemi FPGA 実装例
JTAG
CatalogからSmartDesignに持ってくるとこんな感じ

JTAG I/f

割り込
み入力
External
Interrupts
Clock
Reset

CLK
RESET
中身はSiFive's E31
Coreplex

CoreRISCV_AXI4

E31 Core
RV32IM コア
レジスタ 32本

JTAG TAP Controller
JTAGコントローラClock-Domain Crossing
クロック載せ替え

Integer Multiplier/Divider
整数 乗算／除算

Debug Transport Module

8KB Instruction Cache
8KB命令キャッシュ

Platform-Level Interrupt Controller
プラットフォームレベル割込制御

8KB IData Cache
8KBデータキャッシュ

Uncached TileLink Interconnect
TileLink To AXI Brdge
タイルリンク-AXIブリッジ

TileLink To AXI Brdge
タイルリンク-AXIブリッジ

AXI4 MMIO I/F

AXI4 Memory I/F

周辺デバイス用AXI4キャッシュ無し

メモリ用AXI4
キャッシュ有り@shibatchii細かいことはいいんだよ
ともかく、使ってみたい！

@shibatchii

シミュレータで動かす

 Cコンパイラ、ライブラリなど、ダウンロードしてがんばって環境作る https://riscv.org/software-status/#c-compilers-and-libraries
 シミュレータをダウンロードして、がんばって 略） https://riscv.org/software-status/#simulators@shibatchii

ボードで動かす SiFive の Freedomボード
 マルツエレクトロニクスで 9980円で購入可
 開発環境は Freedom E SDK とか Arduino IDE@shibatchii

FPGAで動かす

 Future Electronics の Creativeボード
 Future Electronicsから12000円位で購入可 開発環境は Microsemi LiberoSoc,CoreConsole@shibatchii

その他いろいろあるよ SiFive HiFive Unleashed
140000円位

 LoFive RISC-V
3000円位 Digilent Arty A7:
Artix-7 FPGA XilinX
15000円位 Sipeed MAIX: Fisrt
RV64 AI board for edge
600円位

 Lichee Tang RISC-V開発
ボードMini PC
3000円位 FPGA Development
Board RISC-V
Development Board@shibatchii
2500円位

オススメの書籍、Web•

FPGAマガジン No.18 Googleも推すオープンソースCPU RISC-Vづくり
CQ出版社• http://cc.cqpub.co.jp/lib/system/doclib_item/1149/• https://shop.cqpub.co.jp/hanbai/books/46/46281.html•

RISC-V原典 オープンアーキテクチャのススメ 日経BP社• https://www.nikkeibp.co.jp/atclpubmkt/book/18/269170/•

プログラマのためのFPGAによるRISC-Vマイコンの作り方 Kindle
堀江 徹也さん @tetsuya_horie• https://www.amazon.co.jp/gp/product/B07G2CHSK3/ref=oh_aui_d_detailpage_o00_?ie=UTF8&psc=1•

FPGA開発日記 msyksphinzさん @dev_msyksphinz• http://msyksphinz.hatenablog.com/@shibatchii

RISC-V仕様書
RISC-Vの仕様書はここ。英語だよ。https://riscv.org/speciÉcations/

ISA仕様そのもの

割り込みとかコントロールレジスタとか@shibatchii

日本語訳の場所 @shibatchii翻訳• GitHub• https://github.com/shibatchii/RISC-V•••

RISC-V_spec_manual_v2.2_jp.pdf
riscv-privileged-v1.10_jp.pdf
MSoÑce Word、 LibreOÑce Writer 形式も有@shibatchii

質問タイム以上ここまで。
なにか質問あればどうそ。
なんでも良いですよ。
後で聞こうとか思わずここで聞こう。
みんなで情報共有できるよ。(^^)/@shibatchii

ありがとうございました。

@shibatchii

SWEST21 RISC-V について語り合おう
東京大学大学院 情報理工学系研究科 創造情報学専攻
塩谷 亮太
shioya@ci.i.u-tokyo.ac.jp

塩谷 亮太 所属：◇ 東大 情報理工学系研究科 創造情報学専攻 准教授

 専門：コンピュータ・アーキテクチャ◇ 主に汎用 CPU のマイクロアーキテクチャを研究しています◇ 回路やセキュリティ，言語処理系とかも◇ 自動運転用 SoC の研究・開発（株 ティアフォー）

 去年着任のため，まだ学生さんがおりません◇ 修士・博士（社会人含む）の学生さん募集中！

2

今日のお題：RISC-V 最近，世界的に盛り上がっている◇ 上記は RISC-V Foundation のプラチナスポンサーのみなさん◇ 企業でも使用に向けて動いている◇ SiFive のものや中国の謎ボード等，動くものも発売されている

3

塩谷の RISC-V に対する取り組み◇ CPU シミュレータ「鬼斬」☐ C++ で実装されたサイクル・アキュレートなシミュレータ☐ 32bit/64bit 実装で，SPECCPU 2006/2017 の全ベンチマークが動作◇ プロセッサ「RSD」☐ SystemVerilog で実装された OoO スーパスカラ・プロセッサ☐ 32bit IM+特権命令の実装で，Coremark や Zephyr OS のアプリが動作4

今日のお題：RISC-V

 RISC-V◇ 比較的最近登場した，CPU の命令セットのオープンな規格

 研究者としての塩谷の立場：◇ 汎用 CPU を速く&省電力にしたい☐ 速く → 普通のプログラムのシングルスレッド性能のこと◇ RISC-V は非常に良い機会をあたえてくれている5

Alpha 21264
Pentium III Xeon
Pentium 4 processor

POWER4
Pentium 4 Processor
Pentium 4 Processor
Pentium 4 processor
Athlon (TM) 64 FX-57
Core 2 Extreme X6800
Xeon X5460
Core i7-965 Ex. Edition

Xeon W5590
Xeon X5680
Core i7-2600K
Xeon E5-2690
Xeon E5-2667 v2
Xeon E5-2643 v3Core i7-5960X
Core i7-6700K
Xeon Gold 6146
Xeon E-2186G
Xeon Gold 6244

0.1
Alpha 21164

2003年を1とした相対値

CPU のシングルスレッド性能の変化
各年ごとの SPECCPU int の最高スコア [飯沼宥光 2019]10

年率7%UP1

年率46%UP
性能

年率15%UP

クロック周波数

全部インテル

9798
9900
0102030405060708
09101112131415161718196

汎用 CPU の最近の状況
 長い間，サーバー・デスクトップ向けはインテルがほぼ独占◇ ほかがみんな自爆したので，競争がない◇ 敵がいないので性能を伸ばそうと言う動機がない

 今年に入り，AMD ZEN2 が登場◇ 性能を大きく伸ばした◇ （さっきのグラフにはまだ反映されていないです なぜ性能が伸びたのか？
◇ さまざまな研究成果の技術をアグレッシブに取り入れた◇ 研究者レベルでは，１０年以上前からわかっていたものが多い

7

研究と製品化 塩谷を含め，研究者はずっと色々な技術を提案してきた◇ 性能を上げるもの◇ 性能を保ちながらコンパクトに作る方法

 Oot-of-order スーパスカラの範疇を超えるものも多い◇ In-order との密結合ハイブリッド◇ オペランドがレジスタ番号じゃなくて命令間距離なもの

8

研究と製品化 企業は研究成果を入れてくれない◇ 競争がないので入れる動機がない☐ 「大きく変えると検証が大変なので～」☐ 基本構造は98年の Alpha 21264 から変わっていない だからといって，勝手に互換 CPU を作ると怒られる

9

RISC-V 命令セットのラインセンスがフリー◇ 実装したハードの設計を自由に公開できる◇ オープンな実装が公開されており，利用できる めいめいが勝手に CPU を作れる
◇ まず，単純にプレイヤーが増える☐ いままでは超巨大企業に限られていた◇ 攻めた設計のものが出てくる余地が生まれる◇ 塩谷も自作 CPU を RISC-V に移行

10

RISC-V の利点

 研究の上◇ 自由に実装ができるので，プレイヤーが増える◇ 新しいものを積極的に試せる・出てくる

 製品としては？

11

RISC-V を利用する際のメリット

1.

命令セットのラインセンスがフリー◇ オープンな実装が公開されており，利用できる◇ 特定のクローズドな IP に縛られない◇ 使用可能な RISC-V 搭載ボード等も販売されはじめている2.

ツール・チェインがすぐに使える状態で一通りある◇ 新しいバージョンが使えて，メンテナンスも期待できる◇ 1. も含めて，メンテナンスのコストがかからない12ツール・チェイン

これらは，すべて本家のソース・ツリーで正式に対応されています gcc (g++/gfortran)◇ 新しいものが使用可能（Ver. 8.1 まで確認）◇ まれにバグを踏むことがある clang/LLVM◇ 32bit は対応が進んでいるが，64bit はまだあやしい QEMU◇ ほぼ完全に対応が済んでいるようにみえる◇ バグを踏んだことはない

 Linux◇ いくつかのディストリビューションで対応◇ Fedora と Debian が準備を進めている･･･ らしい13

Debian のビルド済みパッケージ数
https://wiki.debian.org/RISC-V より

14

RISC-V を利用する際のメリット

1.

命令セットのラインセンスがフリー

2.

ツール・チェインがすぐに使える状態で一通りある

3.

実装の簡単さや，独自拡張への考慮◇ 「最低限の制御のための整数命令」+「アクセラレータ独自拡張」

みたいなものも作りやすい◇ ツールチェインの恩恵を受けられる

15

まとめ

 RISC-V◇ 比較的最近登場した，CPU の命令セットのオープンな規格◇ 自由に実装ができるので，プレイヤーが増える☐ 新しいものが積極的に試せる・出てくる◇ ツール・チェインがすぐに使える状態で一通りあり，実際に試せるボードも出てきている 盛り上がっていってほしい

16

RISC-V ポジショントーク 自己紹介
• 北九州市立大学 国際環境工学部 准教授• New! ナッジ社会実装研究センター
センター長• New! 学生・就職支援担当• Personal Vision Co-Creator• KK-SHiFT• SWEST実行委員• Elixir 推し / fukuoka.ex / Hastega 改めPelemay / ZEAM

• 技術相談，共同研究依頼，進路相談，適職診断など，随時受付ます© 2019 Susumu Yamazaki1プログラミング言語処理系から見たときの RISC-V• RISC-Vを学ぶ利点(下記)は，そのままプログラミング言語処理系にとっても利点です1. なぜこのように設計したのか，理由や意図が明示されている
2. ISAがシンプル
3. なんとフリー！ 太っ腹！
1. free beer の意味の free 無償な
2. free speech の意味の free 自由な
4. ツールが充実している
5. 多くのメーカーが参入を表明している© 2019 Susumu Yamazaki2Elixirからの視点 (1/3)• Hastega 改め Pelemay ではSIMD命令を用いた超並列化が可能• RISC-V には，パック形式SIMD命令標準拡張機能 RVP を制定しようとしている• また，肝いりのベクタ方式の超並列機構，ベクトル演算標準拡張機能 RVV も制定されつつある• 超並列マニアとしては，これらは制覇したい© 2019 Susumu Yamazaki3Elixirからの視点 (2/3)• Elixir の得意は並列プログラミング• 得意な理由は破壊的更新がないのでShared Data

Shared Data

3.14

3.14→1.5

余計な同期・排他制御を排除できるから• つまりコア数が多ければ多いほど，Elixir は有利になる

Core #1

Core #2

UpdateNotifyCore #1

Core #2

Stop Processing• RISC-Vはシンプルなので，他のアーキテクチャに比べてコアサイズが小さい

Shared Data

➡1,000コア以上のマルチコアCPUをRISC-Vで実現できるのでは？

Elixir の潜在能力を思いっきり発揮できるのでは？

DonʼtUpdate
Core #1

3.14

Core #2

Donʼt need tostop processing© 2019 Susumu Yamazaki

4

Kilocore• MIMD方式1000コア (cores)• 12メモリモジュール (memorymodules)• 32nm プロセスルール (process rule)• 最大 1.78GHz (1.1V) (maximum)• 0.9V 時 1.24GHz 17mW

5.3 pJ / 命令 (low energy)• Intel i7 や NVIDIA GPU と比べ，
1.1V時スループット4.3倍以上，エネルギー効率9.4倍以上

B. Bohnenstiehl et al., "KiloCore: A 32-nm 1000-Processor
Computational Array," in IEEE Journal of Solid-State Circuits,
vol. 52, no. 4, pp. 891-902, April 2017.

© 2019 Susumu Yamazaki

5The Cerebras Wafer-Scale Engine (WSE)• ウェハーサイズのチップ• 1.2兆個のトランジスタ数• 1辺が 215 mm• 18GBのオンチップメモリ(on-tip memories)• 40万コア (cores)• 消費電力 15kW
© 2019 Cerebras systems.

© 2019 Susumu Yamazaki

6Elixirからの視点 (3/3)• Elixir のプログラムはデータフローをとても解析しやすい• 理由はイミュータブルなので，変数の値が変化しない(ただし変数を再束縛することはある)➡依存関係解析をとてもやりやすい• コアサイズをより小さくしようと思うと，スーパースケイラー方式(アウトオブオーダー実行)をやめるのも一手• 代わりにレジスタ割当や命令スケジューリングを頑張り，メモリアクセスやパイプラインがストールしないようにする• あるいは合成命令を発行したり， VLIW (Very Long Instruction Word) のような静的に命令並列性を記述するプロセッサ方式を採用したりするのも一手• RISC-V をベースに，独自プロセッサを開発しやすいのが強み© 2019 Susumu Yamazaki

7

RISC-V と Elixir で拓ける
新たなシステム実装の研究への道
RISC が登場したときのように…

© 2019 Susumu Yamazaki8