RISC-V の特徴と研究・開発への利用
東京大学大学院 情報理工学系研究科
創造情報学専攻塩谷 亮太
shioya@ci.i.u-tokyo.ac.jp

塩谷 亮太（しおや りょうた）◼ 所属：◇ 東京大学 情報理工学系研究科 創造情報学専攻 （准教授）◼ 専門：コンピュータ・アーキテクチャや基盤ソフトウェア◇ 特に CPU のマイクロアーキテクチャ◇ 最近は言語処理系やセキュリティ関係の研究も多いです

2

はじめに

◼ RISC-V 命令セット：◇ オープンな命令セット・アーキテクチャ◼ 状況：◇ 研究や教育の領域では，ほぼデファクトに◇ 企業でも開発や実チップの販売にまで進みつつある

3

RISC-V◼ RISC: Reduced Instruction Set Computer◇ 単純化した命令セットをもつコンピュータ◼ RISC-V:◇ 「リスク ファイブ」と発音◇ UC Berkeley における５つめの RISC 命令セット

引用は「The RISC-V Instruction Set Manual Volume I: Unprivileged ISA」 より

4

RISC-V 命令セットの基本的な特徴◼ 基本的な構造 = シンプルな RISC：◇ レジスタ・ベースのロード・ストア・アーキテクチャ◇ 32 ビット固定長の命令◇ 32 本の汎用レジスタを持ち 3 オペランドをとる

5

他の命令セットとは何が違うのか？

◼ RISC-V◇ レジスタ・ベースのロード・ストア・アーキテクチャ◇ 32 ビット固定長の命令◇ 32 本の汎用レジスタを持ち 3 オペランドをとる◼ これだけであれば，他の RISC 命令セットにも大体当てはまる◇ MIPS, Alpha◇ SPARC, ARM, POWER, SH, Open RISC ...

6

Q. RISC-V の何が良いのか？

A. 使いやすい7

RISC-V の「使いやすい」ところ

1.

フリーである◇ ラインセンスを気にせずに自由に作れる

2.

命令セットとしての使いやすさ◇ 余計な機能がなく，整理された命令セットの構造◇ モジュラー構造による機能の付け外しの自由度☐ 最小構成による単純な実装から，独自拡張までを広くカバー

3.

ソフトウェア・スタックの充実◇ コンパイラや OS，デバッガからテストスイートまで

8本日の内容
1.

RISC-V の特徴と使い安さ

2.

大学での事例：3.

1.

教育での使用例

2.

鬼斬：シミュレータ

3.

RSD：スーパスカラ・プロセッサ

企業での事例：1.

PEZY-SC シリーズ：HPC 向けプロセッサ（株式会社 PEZY Computing）

2.

HORNET：自動運転向け SIMT 型アクセラレータ（株式会社 ティアフォー）
9

RISC-V 命令セットの基本◼ 基本的な構造：◇ 命令は 32 ビット固定長◇ レジスタ・ベースのロード・ストア・アーキテクチャ◇ 32/64/128 ビット・アーキテクチャが用意◼ 雰囲気的には，Alpha や （遅延スロットをなくした） MIPS にかなり近い

10

RISC-V の固有の特徴：
必須部分がコンパクトかつ，必要に応じて機能追加できる◼ 整理された仕様：
1.

必須となる整数演算部分は非常にコンパクト

2.

用意された各拡張が独立に有効化/無効化できる

11基本整数命令：
加減算，論理演算，ロード・ストア，即値設定，分岐とジャンプなど◼ エンコーディング：R, I, S, U の4タイプがある◇ opcode によって，32 bit 中をどう区切って解釈するかが変わる◇ funct は追加の opcode (opcode が大分類，funct が小分類

◼ rs1, rs2, rd はオペランド◇ それぞれ 5bit: 2^5=32本のレジスタを指定可能◇ imm は即値

画像は下記より
The RISC-V Instruction Set Manual Volume I: User-Level ISA Document Version 2.212基本整数命令：
加減算，論理演算，ロード・ストア，即値設定，分岐とジャンプなど

13

RISC-V 拡張の概観◼ 必須部分：下図の太枠部分◇ I（基本整数）+ Machine Level（割り込み関係の特権命令）◇ （この図に描ききれていない拡張もまだ結構ありますZicsr

Bit manipulation

B

Dynamic translatedlanguages

JM

Multiplication/division

Transactional
memoryT

A

Atomic operation

Decimal floating point

L

Packed SIMDP

Zifencei

I
Base integer

CDQ

Machine level

Supervisor level

Floating point
Single/Double/QuadCompressed

V

Unprivileged ISA
Privileged ISA

F

CSR, instruction fence

VectorRatified

Hypervisor

Draft

14

拡張部分
Zicsr

Bit manipulation

B

Dynamic translated
languages

JM

Multiplication/division

Transactional
memoryT

A

Atomic operation

Decimal floating point

L

Packed SIMD

PI
Base integer

DCQ◇ M：乗除算

Floating point
Single/Double/Quad◇ A：アトミック（並列プログラム）◇ F, D, Q：浮動小数点Vector◇ Zifencei：命令メモリ書き込みフェンス

Machine level

Supervisor level

仕様が承認済み：◇ C：圧縮（ARM でいう thumb）

Compressed

V

Unprivileged ISA
Privileged ISA

F◼

CSR, instruction fence

Zifencei

Ratified

Hypervisor

Draft

◼

◇ Zicsr：制御レジスタドラフト段階：◇ L：十進浮動小数点◇ B：ビット操作◇ T：トランザクショナル・メモリ◇ J：動的コンパイル支援◇ P：パックド SIMD

◇ V：ベクトル（SIMD じゃない）15

RISC-V の拡張部分のいいところ◼ 32bit/64bit や拡張部分の全体が最初から考慮されて作られている◇ 後付けの違法増築みたいなことになっていない◼ 結果として◇ 命令コード内のオペランドのビット位置は全て共通◇ 各種の拡張も，最下位数ビットのみで容易に識別可能◼ 拡張命令のモジュール性が高い◇ 現行の GCC などで簡単にオプション指定でコードを出せるので楽16プロセッサごとのサポート命令の例
Rocket: RV64GC(IMAD C Zifencei Zicsr)

64bit I
Base integer

RSD: RV32IM(IM Zifencei Zicsr)

Zicsr

Zicsr

Zifencei

ZifenceiMM
32bit I
Base integerAF

HORNET: RV32IMFA(IMFA Zicsr)
Zicsr

M
32bit I
Base integer

DA

F

C
Machine level

Machine level

Supervisor Level◼ 拡張同士は基本的には自由に付け外し可能◇ Rocket と RSD はよくある組み合わせ☐ Linux 動作マシンと組み込み向け構成の典型◇ Hornet はかなり変則的☐ アクセラレータ目的の F（単精度 FP）とマルチスレッド対応のための A（アトミック） がある

17

ユーザーによる命令の拡張◼ opcode[6:0]: b0001011/b0101011 がユーザー用に確保されている◇ 安心して独自拡張が行える◇ 独自機能をいれつつも，既存のツールチェインの恩恵を受けれる◼ 制御レジスタ（CSR）についても，ユーザー拡張用の領域が用意

18

RISC-V の性能面での特徴◼ スーパスカラとしては Alpha とほぼほぼ同じ実装で作れる◇ ３オペランドの命令セットを普通に作れば良い◇ 典型的な RISC 命令セットの性能と特に変わらない（後述）◼ 命令コードの容量効率は，C拡張（圧縮命令）採用時は x86 よりも良い◇ x86 は可変長なので密度が高いと思われがちだが，そうでもない◇ 多くの短いコードに今は使用されない命令が割り当てられている☐ 歴史的経緯による

19

Alpha と RISC-V の IPC の比較

6命令同時発行 OoO スーパスカラ, SPECCPU 2006 20G 命令実行時
3

Alpha+gcc4.7.3

RV64+gcc8.1

2.5
21.5
10.50

◼ 全体の傾向はほぼ一致◇ hmmer のみ，RV64 の方が分岐が大きく増えて性能が落ちる◇ 一部 FP ベンチマークでは，Fused Multiply Add 命令の有無で差が付いている◇（注意：高 IPC はこの比較では直接性能がよいことを意味しない

20

RISC-V の研究や開発での利点

1.

必須部分が非常にコンパクトで，機能拡張も細かく追加可能◇ 最少の実装で，GCC などがそのまま使える◇ 目的に応じた取捨選択も自由度が高い

2.

コンパイラやツール，OS が RISC-V を正式にサポートしている◇ GCC や LLVM，GDB，QEMU，Linux などの最新版が使える◇ RISC-V 公式のテストスイートも提供☐ riscv-tests:

https://github.com/riscv/riscv-tests☐ riscv-arch-test: https://github.com/riscv/riscv-arch-test

21

Debian のビルド成功パッケージ率（2021/08/26 直近２週）
https://buildd.debian.org/stats/ より．だいたい 95% ぐらいはビルド済み

灰色が RISC-V95%55%

22ソフトウェア環境に関する所感◼ これまでにも，オープンな命令セットはあった◇ Open RISC など◼ しかし，結局盛り上がらなかった◇ 周辺のツール・チェインの持続的かつ十分な提供がなかったため◇ 特定の Linux や GCC への移植にとどまり，使用も敷居が高い◼ RISC-V は，この壁を越えた感がある◇ 主要なツールにおいて，本家のツリーでサポートされている◇ 企業が精力的・継続的にサポートに動いている

23

RISC-V の特徴と使い安さ

1.

フリーである2.

命令セットとしての使いやすさ◇ 整理された命令セットの構造◇ モジュラー構造による機能の付け外しの自由度

3.

ソフトウェア・スタックの充実◇ コンパイラや OS，デバッガからテストスイートまで24

大学での事例

1.

2.

大学での事例：1.

教育での使用2.

鬼斬：シミュレータ

3.

RSD：スーパスカラ・プロセッサ

企業での事例25

教育面での取り組み◼ 塩谷が担当する講義◇ 「先進計算機構成論」☐ https://github.com/shioyadan/advanced-computer-organization◇ CPU の仕組みを説明する際に，RISC-V を前提として説明◼ 学生実験
◇ CPU を作成する実験◇ 東大内では下記でそれぞれ実施

1.

工学部 電子情報工学科（+電気電子工学科）2.

理学部 情報科学科
26

工学部 電子情報工学科◼ 内容：◇ 単純な RISC-V のシングル・サイクル CPU を verilog で作成◇ HDL は全く知らない学生を想定し，10日間程度で実施◼ 目標：◇ GCC でコンパイルした CoreMark の RISC-V バイナリの実行◼ RISC-V 採用のメリット：◇ 基本整数命令のみのごく単純な実装で，C 言語をコンパイルしたバイナリが実行できる◇ MIPS では遅延スロットなどの再現のため，結構厳しい

27

理学部 情報科学科◼ 内容：◇ ４人一組の班で，１学期かけて実施◇ CPU とコンパイラをセットで作成◇ 命令セットは自由だが，RISC-V と Power PC ベースが多い◼ 目標：◇ 与えられた入力データに基づき，高速にレイトレーシングを行う◼ 余興がある◇ RISC-V の MMU の実装と，その上で動く Rust で実装した オリ

ジナル OS の発表など
28

教育面での今後◼ これまで MIPS 等が担っていた位置を置き換えると思う◇ 基本命令セットの単純さと実装しやすさ◇ 周辺ソフトウェアの充実◇ 教科書の存在☐ パタヘネやヘネパタの RISC-V 版の登場

◼ 東大内の自分以外の講義や，他の大学でも取り扱うことが増えている

29

大学での事例

1.

2.

大学での事例：1.

教育での使用2.

鬼斬：シミュレータ

3.

RSD：スーパスカラ・プロセッサ

企業での事例30

シミュレータ鬼斬◼ サイクル・アキュレートな CPU のシミュレータ◇ プログラマからは直接見えないマイクロアーキテクチャ部分まで再現☐ キャッシュ，分岐予測，out-of-order 実行の挙動など◇ 実行時間まで再現することができる◇ https://github.com/onikiri/onikiri2◼ 広く使われているものでは，gem5 シミュレータに近い◇ gem5 よりも，より高度なシミュレーションが可能◇ （gem5 も RISC-V をサポート

31

鬼斬への RISC-V サポート◼ RV32G と RV64G をサポート（主にユーザーモードのみ）◇ Linux 用 ELF バイナリをそのまま実行可能◼ 鬼斬自体は 2006 年ごろ?から開発◇ もともとは Alpha と Power PC をサポート◼ 命令セットへの課題：◇ Alpha：☐ 命令セットはクリーン☐ しかしツールチェインがもう使えなくなりつつある◇ Power PC：☐ Alpha が死んだ後のために実装☐ とても複雑．多数のマイクロ命令への分解が必要

32

鬼斬への RISC-V サポート

◼ RISC-V の登場は本当にありがたかった◇ Alpha は死につつあるし，PPC は複雑◇ ARM64 の実装に取りかかりつつあったが，仕様が大きくつらい◼ RISC-V サポートは比較的容易◇ フレームワークや抽象化レイヤへの機能追加は不要だった◇ マイクロ命令への分解は原則必要無かった◼ RISC-V の単純さとソフトウェア環境の恩恵を受けられる◇ 鬼斬の寿命が延びた

33

大学での事例

1.

2.

大学での事例：1.

教育での使用2.

鬼斬：シミュレータ

3.

RSD：スーパスカラ・プロセッサ

企業での事例34

プロセッサ RSD◼ コンパクトかつ高速な RISC-V OoO スーパスカラ・プロセッサ◇ RISC-V RV32IM をサポート◇ SystemVerilog で１万行に達しないぐらいの規模◼ 論文とリポジトリ◇ Susumu Mashimo et al., : An Open Source FPGA-Optimized Out-of-Order RISC-V Soft

Processor, IEEE Intl. Conf. on Field-Programmable Technology (FPT), 2019

◇ https://github.com/rsd-devel/rsd

35

パイプライン構成
Front-end Pipeline
2-way 6 stages

Back-end Pipeline
5-issue 5-7 stages

NPIFPDID

RNDSSCISRR

EX

RW

INT/Br 0NP

IF

PD

ID

RN

DS

SC

IS

RR

EX

RW

INT/Br 1SC

IS

RR

EX0

EX1

EX2

RW

SC

IS

RR

EX

MT

MARW

Load

SC

IS

RR

EX

MT

MARW

Store

◼ マイクロアーキテクチャ（以下はデフォルト構成であり，柔軟に変更可能）

Complex(mul/div)◇ 最大 64 命令までスケジューリング可能◇ ５命令同時発行可能◼ 大きさや性能等◇ FPGA 上で BOOMv2 の 1/3，MicroBlaze の 5倍ぐらいの資源量◇ Dhrystone 実行時のクロックあたり性能で，BOOMv2 の 2.5 倍ぐらい36

65nm プロセスでの ASIC 実装◼ ルネサス 65nm で実装（2020）◇ ASIC 設計が初めてなため，動作させることを目的に単純化＆低速化◇ 100 MHz/130 mW で無事動作（左が RSD，右は IO 用 FPGA）◼ 協力：VDEC，株式会社ロジックリサーチ，天野先生，奥原さん

3728nm プロセスでの ASIC 実装◼ 28nm プロセスで実装中◇ 他のプロジェクトで設計中の SoC のコントローラとして RSD が採用◼ 遅延解析では 800MHz 超相当◇ クリティカル・パスは命令キャッシュの SRAM アクセスまわり☐ レイアウトが悪い◇ スーパスカラの命令スケジューリングや並列実行部分などは非常に高速

38

RSD での RISC-V 採用◼ 経緯：◇ 元々は ARM のサブセットとして開発◇ 途中で RISC-V に移行◼ RISC-V 採用の利点
1.

公開ができる2.

大幅な簡単化39

利点１

公開ができる◼ ARM 互換時は，オープンソースとしての公開はできなかった◇ 当時の塩谷は問題ないと思い込んで ARM を選択してしまった☐ QEMU 等のエミュレータのソースが公開されていたため◇ ハードの設計は勝手に公開できない☐ 特許等で訴えられる◇ 内々で使うものになっていた◼ RISC-V 採用により，大手を振って公開可能に40利点２大幅な簡単化◼ ARM の命令
◇ 様々な機能が直交して使用できる◼ その結果，◇ ロード命令であり，◇ アドレス計算の結果にさらに加算して並列にレジスタに書き戻し，◇ さらに条件付き実行であり，◇ 間接分岐命令（PC を書き換える）でもある･･･のような命令が普通に現れる

41

利点２

大幅な簡単化◼ スーパスカラのパイプラインではまともに処理できない◇ マイクロ命令への分解ではサポートしきれない◇ アセンブリコードの時点で複数の単純な ARM 命令に分解して無理矢理対応◼ RISC-V 化により
◇ マイクロ命令への分解自体が不要に◇ 命令デコーダが実装 4000 行から 1300 行に縮小

◇ コンパイラ出力を無加工で実行可能に

42

RSD での RISC-V 採用でよかったこと◼ RISC-V がフリーであることや，その単純さ，ソフトウェア環境の恩恵を受けられた

43

企業での使用事例

1. PEZY-SC シリーズ：HPC 向けプロセッサ（株式会社 PEZY Computing）
2.

HORNET：自動運転向け SIMT 型アクセラレータ（株式会社 ティアフォー）

44

PEZY-SCx シリーズ
◼ HPC やゲノム解析などに適したプロセッサ◇ メニーコア・アーキテクチャ☐ 独自 ISA の Processing Element（PE）を持つ◇ OpenCL ライクな開発環境◼ とても高い電力効率を持つ◇ PEZY-SC2 はスパコンの電力効率を競う GREEN 500 で世界１位に
HBM2
LLC

LLC

HBM2LLC

LLC

LLC

LLC

LLC

LLC

MIPS MIPSMIPS MIPS

256 PE

256 PE

256 PE

256 PE

256 PE

256 PE

256 PE

256 PEMIPS MIPS

256 PE

256 PE

256 PE

256 PE

256 PE

256 PE

256 PE

256 PE

LLC

LLC

LLC

LLC

LLC

LLC

LLC

LLC

HBM2HBM2PCIeGen4PCIe
Gen4PCIe
Gen4PEZY-SC3 (4096PE)

45

PEZY-SCx シリーズ◼ 最新の PEZY-SC3 まで複数チップをリリース◇ これまで制御用 CPUとして ARM や MIPS を搭載してきた◼ 今後は RISC-V を搭載
RISC-V!

HBM2LLC

LLC

HBM2
LLC

LLC

LLC

LLC

LLC

LLC

MIPS MIPSMIPS MIPS

256 PE

256 PE

256 PE

256 PE

256 PE

256 PE

256 PE

256 PEMIPS MIPS

256 PE

256 PE

256 PE

256 PE

256 PE

256 PE

256 PE

256 PE

LLC

LLC

LLC

LLC

LLC

LLC

LLC

LLC

HBM2HBM2

PCIe
Gen4
PCIe
Gen4
PCIe
Gen4

PEZY-SC3 (4096PE)

46

PEZY-SCx シリーズに搭載する RISC-V◼ 制御用の CPU として，デバッグやモニタに使用◇ Rocket Core ベースのコアを採用◼ 設計中のチップ◇ 7nm プロセス / 1 GHz 動作 → 物理設計完了◇ 5nm プロセス / 1.5 GHz 動作 → 論理設計中

47

面積や性能など◼ 面積が小さい：◇ 200um 角に収まる（7nm 時）◼ 性能：MIPS 時の 60% 程度であるなら制御 CPU としては十分◇ MIPS（4-way OoO）：

CoreMark/MHz = 3.06

◇ Rocket（Scalar In-order）：

CoreMark/MHz = 2.07

48

Rocket Core 採用の目的と利点◼ 仮想メモリ方式として Sv39 と Sv48 に対応している：◇ 物理メモリのアドレス幅が広い◇ PEZY-SCx の内部バスのアドレス範囲が広く，32-bit CPUでは不足していた◼ アドレス・マップ，バス幅，ID幅，割り込み本数などの変更が容易◼ Linux のブートに対応している：◇ PCIe RootComplex の検証ができる◇ スタンドアロンなアプリの可能性もひらける49

PEZY-SCx シリーズにおける RISC-V◼ PEZY Computing としての RISC-V の魅力◇ プロジェクトに合わせた選択肢がある◇ 商用，OSS，自社開発など

50

企業での使用事例

1.

PEZY-SC シリーズ：HPC 向けプロセッサ（株式会社 PEZY Computing）

2. HORNET：自動運転向け SIMT 型アクセラレータ（株式会社 ティアフォー）

51

HORNET
RISC-V Based SIMT-Style Localization Accelerator for Autowareアクセラレータ HORNET◼ 自動運転向けのアクセラレータとして開発◇ 株式会社アクセル，株式会社ティアフォーにより開発中◇ 塩谷はマイクロアーキテクチャに関与◼ 現在の状況◇ 現状は FPGA で検証中
◇ 2022 年にテストチップの予定

53

背景：自動運転アルゴリズムと消費電力◼ アルゴリズムの発展と，消費電力の肥大化◇ 現状でも高性能な CPU や GPU を使って処理する必要がある◇ 今後もさらに処理量が肥大化し続ける見込み◼ 実際に売る車に搭載しようと思うと，相当に消費電力を削減していく
必要がある◼ アプローチ：アクセラレータで処理して消費電力を減らす◇ そのための SoC を研究・開発中

54

Autoware-Defined AI Accelerator Design Concept
Localization Accelerator
Interconnect Interface

System-on-Chip for Autonomous Driving

Primary CPU
Multi-Core
Processor

Application SpecificHardware Accelerators
Localization(NDT)

ObjectDetection(CNN)

Others

DDR

Open ISA base CPU
Real-Time NoC

Instruction
MemoryMemory Access Controller
PEPE

PEPEPE
Controller

CSR

PE Register Files

Object Detection Accelerator
Interconnect Interface

USB
3.0

GBE
MAC

Processing Cluster
via Network-on-Chip••

Map Data
Cache(etc.)

High-Speed/Low-PowerInterconnect

Real-Time
Many-Core Processor

Working Data
MemoryOther I/OFeature Map
MemoryWeight Data
Cache

CSR

IRC

Tensor Processing UnitHigh Density
Convolution
Unit

Dense
Unit
Act. Unit

TensorDMA Controller

Norm. Unit
Pool. Unit

◇ 太枠部分が RISC-V ベース◇ 今回は右上の Localization Accelerator が主題

55

自動運転の処理
1.

Sensing◇ センサー出力の前処理（フォーマット変換やノイズ除去など）

2.

Perception◇ 現在の障害物の検知と将来の予測

3. Localization ← 今回着目する部分◇ LiDAR （レーザー照射による距離測定器）出力の点群と地図データのマッチングによる自己位置の計算
4.

Planning◇ 上記を元に自分の動きをきめる

56

Localization の処理
1.

2.

NDT (Normal Distribution Transform) Scan Matching
1.

LiDAR から得られた点群から地図データ内の最近傍点を求める → ツリーのトラバース

2.

評価値の計算と更新 → ある程度小さな行列演算

Position/Pose Estimation◇ Kalman Filter → そこそこ大きい行列演算

LiDAR の高精度化による出力点数の増加により処理量が肥大化→ 自動運転の処理全体に占める割合がかなり大きい~600,000~1,200,000~2,400,000

https://velodynelidar.com/products/

57

HORNET アーキテクチャ◼ SIMT (Single Instruction Multiple Thread) ベースのアーキテクチャを採用◇ 単一命令で複数スレッドを駆動（複数データを処理）◇ 実行パスが分岐した場合は時分割でそれぞれ処理

1: NDT Scan Matching

SIMT

◼ 狙い：
◇ トラバースをマルチスレッドでThread

ThreadThreadThread

map

map

map

map

効率良く処理◇ 行列は SIMD として効率良く処理◇ 専用回路ではなくプロセッサとすることで汎用性を持たせる

2: Position/Pose Estimation (Kalman Filter)matrix*matrix=58

HORNET アーキテクチャ◼ 比較的大きな読み出し専用キャッシュを搭載◇ 地図データなどの格納◼ 汎用的な処理ができるため，その他の細かい前処理等も一括で処理可能◇ データ転送のオーバーヘッドを削減
HORNETInterconnect Interface

Working Data
MemoryMap Data
Cache

Instruction
MemoryMemory Access Controller
PEPE

PE

PE

PEController

CSR

PE Register Files

59

アーキテクチャの特色◼ ターゲットとする問題は，ある程度 GPU でも処理できるが･･･◇ GPU も SIMT アーキテクチャ◇ 既存の GPU では無駄が多い & 小回りが効かない◇ 分岐に弱い◼ HORNET の特色：
◇ ターゲットを絞って，シンプルなパイプライン構造で効率的に実現☐ GPU と比べて余計な機能を持たず，複雑なレイテンシ隠蔽機構などももたない◇ 分岐に耐性を持たせるために幅を狭く ＆ cond. move 等の拡張

60

プログラミングモデルとツールチェイン◼ 命令セットとして RISC-V を採用◇ SIMT 向けに拡張◼ SIMT 用の API 拡張をした C 言語でプログラミング◇ Open CL の様なスキームでプログラミングが可能◼ 既存の RISC-V LLVM バックエンドを拡張して実装◇ コンディショナル・ムーブの追加など◇ 同期関係は Atomic 拡張のものをそのまま使用

61

プログラミングモデルとツールチェイン◼ LLVM バックエンドへの RISC-V からの変更量はかなり少ない◇ SIMT は通常の命令セットとはかなり実行モデルが異なる･･･

ような印象があった（塩谷個人の印象です）◇ かなり異なるコード生成器が必要だと考えていた◇ 実際に必要な変更はロード・ストアのアドレッシング関係ぐらい☐ 各レーンに暗黙に異なるオフセットが足し込まれるなど◼ RISC-V がフリーであることや単純さ，ソフトウェア環境の恩恵を受けられる

62

まとめ
1.

2.

RISC-V の特徴と使い安さ
1.

フリーである2.

命令セットとしての使いやすさ

3.

ソフトウェア・スタックの充実

大学での事例
1.

3.

講義や実験，シミュレータ鬼斬，プロセッサ RSD

企業での事例：1.

PEZY-SC シリーズ：HPC 向けプロセッサ（株式会社 PEZY Computing）

2.

HORNET：自動運転向け SIMT 型アクセラレータ（株式会社 ティアフォー）
63まとめ◼ RISC-V の，個人的によかったこと◇ プロセッサを自分で作ってもよい空気にしてくれた◇ 大企業のみが作るものから，みんなが作るものに

64

謝辞

◼ 本発表に含まれる研究の一部は，東京大学ＶＤＥＣ活動を通して，シノプシス株式会社，メンター株式会社，日本ケイデンス株式会社の協力で行われたものです．
◼ 本発表に含まれる研究の一部は，JSPS 科研費 20H04153 による助成のもと行われたものです．
◼ 資料提供に協力していただいた株式会社 PEZY Computing と株式会社ティアフォーのみなさまに感謝いたします．

65