Slide 1

Slide 1 text

次世代を担う オープン命令セットアーキテクチャ RISC-Vの最新動向 FPGA開発日記 著者 msyksphinz

Slide 2

Slide 2 text

RISC-Vの アップデート 最近アツい 新規命令たち RISC-Vの ソフトウェア ソフトウェアの サポート状況 RISC-Vの実装 RISC-Vのハードウェア 実装・最近の話 本日の発表について

Slide 3

Slide 3 text

Tenstorrent と Jim Keller が RISC-V CPUコアとしてSiFiveのプ ロダクトを使用 Apple が RISC-V High Performance Engineerを募集 IntelがSiFiveを買収すると いううわさが流れる AlibabaがRISC-Vコアをオ ープンソースとして公開 SiFive Unmatchedが出荷 Huaweiのグループが AndroidをRISC-Vに移植 RISC-V In the news 2021 3 たった一万円のRISC-V CPU搭載 +Linuxの動作に対応したお手軽 ボード BeagleV登場 ルネサスエレクトロニクスが RISC-Vコアの採用を発表 注: SiFiveはUCB(University of California Berkeley)の RISC-V草創期開発メンバが立ち上げたRISC-V IPコアを販売する企業 RISC-V界隈で圧倒的な影響力を持つ。

Slide 4

Slide 4 text

発表者とRISC-V FPGA + 自作CPU にハマる MIPSアーキテクチャ+ 5段パイプラインを実装して FPGAに載せて遊ぶ 特定用途向け 汎用CPUの実装 ハードウェア実装とか 性能分析とか RISC-Vで 自作CPU+情報発信 オープンな情報 オープンなツールセット オープンな検証環境 RISC-Vに 出会う 就職 学生時代

Slide 5

Slide 5 text

自作CPUをMIPSでやっていた時代 ● 複雑な命令セット群に悩まされ続けた ● ISAのバリエーション = 歴史 であり、どの命令までをサポート すればよいのか非常に複雑 ○ 命令に「モジュール性」が無かった ● 古いしがらみにとらわれ続けていた ○ Delayed Branchが存在し続け、アウトオブオーダ実行の際に対処に苦 しみ続けた ● 検証できなさ過ぎた ○ Linuxを立ち上げるために検証用のISSがそもそも公開されていなかった ○ ISSによる命令動作チェックができず、各命令の仕様は「非常に分厚 い」仕様書の読み解きに頼るしかなかった ● これらを、「趣味のCPU自作」で学生がやるには荷が重すぎた

Slide 6

Slide 6 text

時代は変わってきた? ● RISC-V対応の命令セットシミュレータの開発 ○ https://github.com/msyksphinz-self/swimmer_riscv ○ ISAの勉強をしたいなら、まずは命令セットシミュレータから ○ 最初のエンジンはMIPSとして実装・のちにRISC-Vに移植 ○ Linuxをブートできる。自作CPUの検証用シミュレータとして大活躍 ○ Rust再実装版 ■ https://github.com/msyksphinz-self/swimmer_rust RISC-V登場により発表者の自作CPUに対するアプローチが変わる

Slide 7

Slide 7 text

発表者のRISC-Vに対するアプローチ (2) ● 自作CPU ○ 超本気のRISC-V アウトオブオーダコアの実装 ■ 時々ブログにちまちまと成果を書いている ○ RV64GCサポートを目指す ○ Linuxブートを目指す ○ これができるのも、ISS、コンパイルツール チェイン、テストケースが充実しているから ■ 一昔前のISAはこれらのどれもが 揃っていなかった... ○ MIPSをベースにしていた時は遅延スロットの 取り扱いに苦労し地獄のようだった ○ → RISC-VはISAがかなり洗練されて いるため助かる 8

Slide 8

Slide 8 text

発表者のRISC-Vに対するアプローチ (3) ● ISAマニュアルの日本語化 ○ これは向学の面が大きい ○ RISC-V命令セット一覧 ■ https://msyksphinz-self.github.io/riscv-isadoc/html/index.html ○ RISC-Vベクトル拡張命令マニュアル日本語化 ■ https://msyksphinz-self.github.io/riscv-v-spec-japanese/html/index.html ○ RISC-Vハイパーバイザー拡張マニュアル日本語化 ■ https://msyksphinz-self.github.io/riscv-hv-japanese/html/index.html ○ (本当はRISC-V仕様書をほぼ日本語化したプロジェクトもあるのだけれども... 非公開) 9

Slide 9

Slide 9 text

多くの大学が講義 でのサンプルISA にRISC-Vを使用 慶應義塾の授業: https://www.am.ics.kei o.ac.jp/parthenon/ 東大理学部 CPU実験 多くの班がRISC-V採用 発表者のブログを見てくだ さっている (謝辞ももらってうれしい) 世界的にCPU系の 講義ネタがRISC-Vに移行 もはや大学でのサンプルISAは x86でもMIPSでもなくRISC-V 大学での活用事例

Slide 10

Slide 10 text

なぜ大学では x86でもなくARMでもなく MIPSでもなくRISC-Vなのか 教育観点からのメリット 〇 教育観点からのデメリット × x86 ワールドワイドで使用されている 仕様が複雑すぎる なんだよMod/RMって ARM ワールドワイドで使用されている 仕様が複雑すぎる 下手にCPU自作して授業で使用すると Armから怒られる MIPS 仕様が比較的簡単 (一部分野を除き)だれも使っていない 古臭い仕様が残っている Delayed Branch死すべし RISC-V 仕様が比較的簡単 古臭い仕様が残っていない これから普及する...かも

Slide 11

Slide 11 text

どうして私たちは RISC-Vに惹かれるのか

Slide 12

Slide 12 text

突然ですが、「半導体設計」のフロー、ご存知ですか? ● 発表者は複数の半導体設計会社で複数のテープアウトを経験 ● → 半導体設計のノウハウは各社(そして各個人)に大きく依存する ● → 設計情報・EDAツールなどの初期投資が非常に膨大 ○ そしてEDAツール自体も「数10年前から全く進化していない」 ■ 例:デジタル回路設計において、Verilog記述→スタンダードセル記述に変換 することを「論理合成」と言いますが、論理合成後の記述とVerilog記述が 一致することを確認するために同じEDAベンダの別のツールで検証する ■ 雰囲気としては「GCCの吐き出したアセンブリ命令がC言語と等価であるこ とを確認するようなもの」 ● 私「なんでS社が出力した回路をS社のツールで検証してるの?」 ● 私「RTLシミュレーション遅すぎない?マルチコア使えないの?」 ○ 営業「あ、あのツールですか。買収した後お取り潰ししました。」 半導体設計自体が抱える、「参入障壁の高さ」 (高コスト・ノウハウの塊・オープン性の無さ、など) ※ テープアウト: ASICを作るための 設計データをリリースすること。 一般的に地獄である。

Slide 13

Slide 13 text

RISC-Vが変えるものは、 「ISA」だけではない オープンなISA RISC-V 半導体設計自体の 「民主化」 FPGA設計の オープン化 「OSFPGA.org」 ASICをOSSで設計し テープアウトする RISC-Vにより「半導体もOSSで何とかできんだろうか」という流れが出てきた → いつでも、だれでも半導体を作れる時代を目指す「半導体設計の民主化」

Slide 14

Slide 14 text

msyksphinz(詩人), 2021 小川のほとりにて (嘘) 半導体は 「お金を積まなければ作れないもの」 から、 「誰でも気軽に作れるもの」 になるべき。 そのための流れの一端が”RISC-V”

Slide 15

Slide 15 text

RISC-V命令の基本と 2021年仕様アップデート

Slide 16

Slide 16 text

RISC-V=「仕様書」 IP=デザインそのもの https://msyksphinz.hatenablog.com/entry/2020/10/04/040000

Slide 17

Slide 17 text

よくある誤解:「RISC-V」はIPである IPはデザイン(回路)のこと。RISC-Vは「仕様」ですよ 19 ◼ 天下の日経BPさんですら、こんな間違えしちゃう ◼ RISC-Vは「ISA」であり、IPはそのISAを実装した成果物 ◼ でもこんなのは半導体の専門用語であり、半導体の専門家以外が間違えるのは当たり前 ◼ 情報を発信しない半導体屋さんにも責任がある ◼ 「半導体業界における「IP」とは何なのかを説明したい」 ◼ https://msyksphinz.hatenablog.com/entry/2020/10/04/040000 (手前みそ)

Slide 18

Slide 18 text

基本ISAと拡張ISA ● 基本ISAと拡張ISAが直交する ● 拡張ISAどうしは(基本的には)依存しない ○ 高い拡張性を有する “A” atomic拡張 “C” 16bit短縮命令 “F” 単精度浮動小数点 “D” 倍精度浮動小数点 “L” 10進数浮動小数点 “Q” 4倍精度浮動小数点 “M” 乗除算命令 “S” スーパバイザモード “P” Packed SIMD “V” Vector拡張 “N” ユーザレベル割り込み RV32I RV32E RV64I RV128I 拡張命令 基本命令 riscv-privileged-20210922.pdfより抜粋 RVWMO

Slide 19

Slide 19 text

ISAは誰が決めているのか https://riscv.org/community/directory-of-working-groups/ より抜粋

Slide 20

Slide 20 text

Privileged Spec 1.12 Public Review! https://riscv.org/blog/2021/09/privileged-specification-version-1-12-now-open-to-public-review/

Slide 21

Slide 21 text

1.12で追加される新規仕様 Privileged ISAに対してさらなる修正 拡張PMP キャッシュ無効化命令 キャッシュ操作命令 Page-Based Memory Types NAPOT Translation Contiguity Chapters 3 & 4 - Sm1-12 & Ss1-12 State Enable ハイパーバイザ ePMP Svinval CMO Svpbmt SVnapot Smstateen Count Overflow & Filtering Time Compare Half Precision Zfh Scalar Crypto Sv56

Slide 22

Slide 22 text

ハイパーバイザ命令 動作モード U ユーザモード S スーパーバイザー モード M マシンモード 仮想モード(V) 通常動作モード 新動作モード 0 ユーザモード ユーザモード 0 スーパーバイザー モード HSモード (ハイパーバイザ拡張 スーパバイザモード) 0 マシンモード マシンモード 1 ユーザモード 仮想ユーザモード 1 スーパバイザモード 仮想スーパバイザモード

Slide 23

Slide 23 text

KVMが動く ● 手前味噌 ○ https://msyksphinz.hatenablog.com/entr y/2020/10/02/000000 ● シミュレータ(ISS/QEMU)では動作している ● Rocket-Chipが現在ハイパーバイザーを実装中? ○ “h-ext” ブランチで実装が見える

Slide 24

Slide 24 text

CMO (Cache Management Operation) キャッシュを操作する命令群 https://github.com/riscv/riscv-CMOs CMO命令種 管理命令 CBO.INVAL, CBO.CLEAN, CBO.FLUSH Zero命令 CBO.ZERO プリフェッチ命令 PREFETCH.R, PREFETCH.W, PREFETCH.I CBO : Cache Block Operation

Slide 25

Slide 25 text

ePMP (Enhanced PMP) PMP : Physical Memory Protection スーパーバイザーモードでのみ有効 → マシンモードでも有効になるように仕様変更 セキュリティ対策

Slide 26

Slide 26 text

Half Precision 半精度浮動小数点演算:16ビット浮動小数点データのロードストア・演算命令 半精度演算命令 メモリアクセス FLH, FSH 演算命令 FADD, FSUB, FMUL, FDIV, FMIN, FMAX, FSQRT F[N]MADD, F[N]MSUB データ変換命令 FCVT.int.H, FCVT.H.int, FSGNJ データ移動命令 FMV.X.H, FMV.H.X 比較命令 FCMP 分類命令 FCLASS

Slide 27

Slide 27 text

RISC-V ソフトウェア環境

Slide 28

Slide 28 text

オペレーティングシステムサポート状況 最新のサポート状況は https://riscv.org/exchange/software/ を参照のこと 種類 主なサポートOS ベアメタル Linux Kernel, Yocto Project/OpenEmbedded, Buildroot Linux Fedora, Debian, OpenSUSE, Gentoo, Slacware, Ubuntu … リアルタイムOS RT-Thread, FreeRTOS, Zephyr, NuttX, seL4 ,VxWorks, … BSD FreeBSD, NetBSD

Slide 29

Slide 29 text

一番進んでいるのはDebian? ● Debianパッケージの、 RISC-Vビルドサポート状況 ○ https://buildd.debian.org/stats/ ● おおよそ95%がサポート済み ○ 2018年頃に急激にサポートが進んだ。 ○ (SiFiveのCo-Founderの一人である Yunsup Lee曰く) わずか一人のエンジニアがここまでサポ ートを進めた?

Slide 30

Slide 30 text

Android on RISC-V ● 手前ミソ ブログ参照 ○ 中国Alibaba (実際はT-Head)によるAndroid移植 ○ https://msyksphinz.hatenablog.com/entry/2021/0 3/04/040000 ○ ビルドに猛烈に時間がかかるが何とかなる。 ○ Androidエミュレータが立ち上がるところまでは確認で きるが、まだまだ猛烈に遅い。

Slide 31

Slide 31 text

RISC-Vの実装

Slide 32

Slide 32 text

割とオープンで無償で入手できそうなRISC-V実装 開発元 仕様 特徴 Rocket SiFive RV64GC インオーダ 最もオーソドックス 実装はこれを見ていれば間違いない Chiselというハードウェア記述言語が地獄 BOOM UCB RV64GC アウトオブオーダ 最もオーソドックスなアウトオブオーダ 実装はこれを見て(ry Chiselという(ry CVA6 OpenHW Group RV64IMAC インオーダ 旧Arianeというコア Chipyardという環境が結合されており使いやすい SwerRV EL/EH Western Digital RV32IM{A}C インオーダ Imagination Technologiesの教育コンテンツに結合され ている Open910 Alibaba/T-Head RV64??? アウトオブオーダ C910と呼ばれている超高性能コアの公開 性能不明、Verilog記述が旧世代すぎて地獄 発表者の独断と偏見でリスト化

Slide 33

Slide 33 text

Rocket-Chip ● 非常に一般的な実装 ○ 5段パイプライン ● 入門用には....Chiselという言語が立ちはだかる ● “Chisel入門” 的な本を読んでRocketの実装が 理解できるか? ○ No ○ 比べ物にならない高レベルの実装 ● 何故Chiselで書いてあるか? ○ 非常に高いConfigurability ○ 1つの実装から大量の構成バリエーション ○ バス接続も思いのまま ● Verilogの「カスタマイズのしにくさ」から 生まれた実装

Slide 34

Slide 34 text

各種国際学会でのRISC-V実装 Xuantie-910: A Commercial Multi-Core 12-Stage Pipeline Out-of-Order 64-bit High Performance RISC-V Processor with Vector Extension 2020 ACM/IEEE 47th Annual International Symposium on Computer Architecture (ISCA) 図は論文より引用

Slide 35

Slide 35 text

各種国際学会でのRISC-V実装 SonicBOOM: The 3rd Generation Berkeley Out-of-Order Machine Fourth Workshop on Computer Architecture Research with RISC-V (CARRV 2020) 図は論文より引用 ちなみに、BOOMv3はマイクロアーキテクチャの 資料が充実している。 https://docs.boom-core.org/en/latest/

Slide 36

Slide 36 text

RISC-Vの開発ボード Sipeed Maixduino LoFive RISC-V SoC Evaluation Kit Gigadevice GD32VF103 RV-STAR GAPduino Development Board Sipeed Maix GO SiFive Unleashed SiFive HiFive1 SiFive HiFive1 Rev.B SiFive Unmatched 発表者が持っているやつ Microchip PolarFire Icicle Kit 高性能なものから低価格のものまでそろってきた

Slide 37

Slide 37 text

今すぐRISC-V実機で遊びたいなら HiFive Unmatched (SiFive) 開発元 仕様 SoC SiFive Freedom U740 SoC Memory 16GB DDR4 Flash Memory 32MB Quad SPI FLush Removable Storage MicroSD Card Networking Gigabit Ethernet Port User I/O 4x USB 3.2 Gen 1 Type A Ports (1 Charging Port) 1x MicroUSB Console Port • Linux + GUIが動くという噂の • 夢のようなボード。 • 発表者は積みボードが多すぎて 購入していない。 • いろんな人が試しているが、 性能はイマイチ、という話も。

Slide 38

Slide 38 text

今すぐRISC-V実機で遊びたいなら PolarFire SoC Icicle Kit (Microchip)

Slide 39

Slide 39 text

今すぐRISC-V実機で遊びたいなら VisionFive V1 (StarFive) かつてBeagleVと呼ばれていたやつ。 JH7100の実体は内部にSiFive U74 x2 2022年発売予定?

Slide 40

Slide 40 text

まとめ

Slide 41

Slide 41 text

2021もRISC-Vは 進化を続ける 主に拡張命令セットに ついて、現在の動向を ご紹介しました ハードウェア開発全体の 大きな潮流 CHIPS Alliance や Skywater PDKなど 開発ボード お好きなものを使って、 簡単にRISC-Vを使える 時代が来ています RISC-Vの現在

Slide 42

Slide 42 text

RISC-V 日本の コミュニティご紹介

Slide 43

Slide 43 text

RISC-V勉強会 ● 日本のRISC-V Ambassadorによる主催 ● 実はRISC-V Internationalによる公認 ● 現在はオンライン (Zoomで100名限定) ● 毎回1名のゲストによるトーク ● RISC-VのISA仕様に関するマニアックな話 https://risc-v.connpass.com/

Slide 44

Slide 44 text

RISC-V Days Tokyo ● オンライン+オフライン混載のイベント ● 割と企業の宣伝向け ○ 技術的なトークは期待できない ● 2020年から春と秋の2回開催+複数日 ○ 1トラックしかないのでこうなる https://riscv.or.jp/risc-v-days-tokyo-2021-autumn/

Slide 45

Slide 45 text

CREDITS: This presentation template was created by Slidesgo, including icons by Flaticon, and infographics & images by Freepik THANKS! 「FPGA開発日記」 : https://msyksphinz.hatenablog.com/ @dev_msyksphinz https://github.com/msyksphinz-self