Upgrade to Pro — share decks privately, control downloads, hide ads and more …

次世代を担うオープン命令セットアーキテクチャRISC-Vの最新動向

msyksphinz
December 02, 2021

 次世代を担うオープン命令セットアーキテクチャRISC-Vの最新動向

オープンソースソフトウェアに続き、オープンソースの命令セットアーキテクチャとしてRISC-Vが注目されています。 RISC-V Internationalには、名だたる半導体企業から新進気鋭のベンチャー企業まで、多くのメンバが参入して注目度が高まっています。 半導体開発およびそれを取り囲むソフトウェアエコシステムの構築に関して、RISC-Vがどのような問題を解決することができるかについて解説します。 また、RISC-Vを囲む業界の最新動向について解説します。

msyksphinz

December 02, 2021
Tweet

More Decks by msyksphinz

Other Decks in Technology

Transcript

  1. 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界隈で圧倒的な影響力を持つ。
  2. 発表者とRISC-V FPGA + 自作CPU にハマる MIPSアーキテクチャ+ 5段パイプラインを実装して FPGAに載せて遊ぶ 特定用途向け 汎用CPUの実装

    ハードウェア実装とか 性能分析とか RISC-Vで 自作CPU+情報発信 オープンな情報 オープンなツールセット オープンな検証環境 RISC-Vに 出会う 就職 学生時代
  3. 自作CPUをMIPSでやっていた時代 • 複雑な命令セット群に悩まされ続けた • ISAのバリエーション = 歴史 であり、どの命令までをサポート すればよいのか非常に複雑 ◦

    命令に「モジュール性」が無かった • 古いしがらみにとらわれ続けていた ◦ Delayed Branchが存在し続け、アウトオブオーダ実行の際に対処に苦 しみ続けた • 検証できなさ過ぎた ◦ Linuxを立ち上げるために検証用のISSがそもそも公開されていなかった ◦ ISSによる命令動作チェックができず、各命令の仕様は「非常に分厚 い」仕様書の読み解きに頼るしかなかった • これらを、「趣味のCPU自作」で学生がやるには荷が重すぎた
  4. 時代は変わってきた? • 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に対するアプローチが変わる
  5. 発表者のRISC-Vに対するアプローチ (2) • 自作CPU ◦ 超本気のRISC-V アウトオブオーダコアの実装 ▪ 時々ブログにちまちまと成果を書いている ◦

    RV64GCサポートを目指す ◦ Linuxブートを目指す ◦ これができるのも、ISS、コンパイルツール チェイン、テストケースが充実しているから ▪ 一昔前のISAはこれらのどれもが 揃っていなかった... ◦ MIPSをベースにしていた時は遅延スロットの 取り扱いに苦労し地獄のようだった ◦ → RISC-VはISAがかなり洗練されて いるため助かる 8
  6. 発表者の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
  7. 多くの大学が講義 でのサンプルISA にRISC-Vを使用 慶應義塾の授業: https://www.am.ics.kei o.ac.jp/parthenon/ 東大理学部 CPU実験 多くの班がRISC-V採用 発表者のブログを見てくだ

    さっている (謝辞ももらってうれしい) 世界的にCPU系の 講義ネタがRISC-Vに移行 もはや大学でのサンプルISAは x86でもMIPSでもなくRISC-V 大学での活用事例
  8. なぜ大学では x86でもなくARMでもなく MIPSでもなくRISC-Vなのか 教育観点からのメリット 〇 教育観点からのデメリット × x86 ワールドワイドで使用されている 仕様が複雑すぎる

    なんだよMod/RMって ARM ワールドワイドで使用されている 仕様が複雑すぎる 下手にCPU自作して授業で使用すると Armから怒られる MIPS 仕様が比較的簡単 (一部分野を除き)だれも使っていない 古臭い仕様が残っている Delayed Branch死すべし RISC-V 仕様が比較的簡単 古臭い仕様が残っていない これから普及する...かも
  9. 突然ですが、「半導体設計」のフロー、ご存知ですか? • 発表者は複数の半導体設計会社で複数のテープアウトを経験 • → 半導体設計のノウハウは各社(そして各個人)に大きく依存する • → 設計情報・EDAツールなどの初期投資が非常に膨大 ◦

    そしてEDAツール自体も「数10年前から全く進化していない」 ▪ 例:デジタル回路設計において、Verilog記述→スタンダードセル記述に変換 することを「論理合成」と言いますが、論理合成後の記述とVerilog記述が 一致することを確認するために同じEDAベンダの別のツールで検証する ▪ 雰囲気としては「GCCの吐き出したアセンブリ命令がC言語と等価であるこ とを確認するようなもの」 • 私「なんでS社が出力した回路をS社のツールで検証してるの?」 • 私「RTLシミュレーション遅すぎない?マルチコア使えないの?」 ◦ 営業「あ、あのツールですか。買収した後お取り潰ししました。」 半導体設計自体が抱える、「参入障壁の高さ」 (高コスト・ノウハウの塊・オープン性の無さ、など) ※ テープアウト: ASICを作るための 設計データをリリースすること。 一般的に地獄である。
  10. RISC-Vが変えるものは、 「ISA」だけではない オープンなISA RISC-V 半導体設計自体の 「民主化」 FPGA設計の オープン化 「OSFPGA.org」 ASICをOSSで設計し

    テープアウトする RISC-Vにより「半導体もOSSで何とかできんだろうか」という流れが出てきた → いつでも、だれでも半導体を作れる時代を目指す「半導体設計の民主化」
  11. 基本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
  12. 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
  13. ハイパーバイザ命令 動作モード U ユーザモード S スーパーバイザー モード M マシンモード 仮想モード(V)

    通常動作モード 新動作モード 0 ユーザモード ユーザモード 0 スーパーバイザー モード HSモード (ハイパーバイザ拡張 スーパバイザモード) 0 マシンモード マシンモード 1 ユーザモード 仮想ユーザモード 1 スーパバイザモード 仮想スーパバイザモード
  14. 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
  15. ePMP (Enhanced PMP) PMP : Physical Memory Protection スーパーバイザーモードでのみ有効 →

    マシンモードでも有効になるように仕様変更 セキュリティ対策
  16. 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
  17. オペレーティングシステムサポート状況 最新のサポート状況は 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
  18. Android on RISC-V • 手前ミソ ブログ参照 ◦ 中国Alibaba (実際はT-Head)によるAndroid移植 ◦

    https://msyksphinz.hatenablog.com/entry/2021/0 3/04/040000 ◦ ビルドに猛烈に時間がかかるが何とかなる。 ◦ Androidエミュレータが立ち上がるところまでは確認で きるが、まだまだ猛烈に遅い。
  19. 割とオープンで無償で入手できそうな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記述が旧世代すぎて地獄 発表者の独断と偏見でリスト化
  20. Rocket-Chip • 非常に一般的な実装 ◦ 5段パイプライン • 入門用には....Chiselという言語が立ちはだかる • “Chisel入門” 的な本を読んでRocketの実装が

    理解できるか? ◦ No ◦ 比べ物にならない高レベルの実装 • 何故Chiselで書いてあるか? ◦ 非常に高いConfigurability ◦ 1つの実装から大量の構成バリエーション ◦ バス接続も思いのまま • Verilogの「カスタマイズのしにくさ」から 生まれた実装
  21. 各種国際学会での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) 図は論文より引用
  22. 各種国際学会での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/
  23. 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 高性能なものから低価格のものまでそろってきた
  24. 今すぐ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が動くという噂の • 夢のようなボード。 • 発表者は積みボードが多すぎて 購入していない。 • いろんな人が試しているが、 性能はイマイチ、という話も。
  25. 2021もRISC-Vは 進化を続ける 主に拡張命令セットに ついて、現在の動向を ご紹介しました ハードウェア開発全体の 大きな潮流 CHIPS Alliance や

    Skywater PDKなど 開発ボード お好きなものを使って、 簡単にRISC-Vを使える 時代が来ています RISC-Vの現在
  26. RISC-V勉強会 • 日本のRISC-V Ambassadorによる主催 • 実はRISC-V Internationalによる公認 • 現在はオンライン (Zoomで100名限定)

    • 毎回1名のゲストによるトーク • RISC-VのISA仕様に関するマニアックな話 https://risc-v.connpass.com/
  27. RISC-V Days Tokyo • オンライン+オフライン混載のイベント • 割と企業の宣伝向け ◦ 技術的なトークは期待できない •

    2020年から春と秋の2回開催+複数日 ◦ 1トラックしかないのでこうなる https://riscv.or.jp/risc-v-days-tokyo-2021-autumn/
  28. 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