$30 off During Our Annual Pro Sale. View Details »

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

    View Slide

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

    View Slide

  3. 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界隈で圧倒的な影響力を持つ。

    View Slide

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

    View Slide

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

    View Slide

  6. 時代は変わってきた?
    ● 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に対するアプローチが変わる

    View Slide

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

    View Slide

  8. 発表者の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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  18. 基本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

    View Slide

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

    View Slide

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

    View Slide

  21. 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

    View Slide

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

    View Slide

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

    View Slide

  24. 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

    View Slide

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

    View Slide

  26. 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

    View Slide

  27. RISC-V
    ソフトウェア環境

    View Slide

  28. オペレーティングシステムサポート状況
    最新のサポート状況は 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

    View Slide

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

    View Slide

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

    View Slide

  31. RISC-Vの実装

    View Slide

  32. 割とオープンで無償で入手できそうな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記述が旧世代すぎて地獄
    発表者の独断と偏見でリスト化

    View Slide

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

    View Slide

  34. 各種国際学会での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)
    図は論文より引用

    View Slide

  35. 各種国際学会での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/

    View Slide

  36. 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
    高性能なものから低価格のものまでそろってきた

    View Slide

  37. 今すぐ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が動くという噂の
    • 夢のようなボード。
    • 発表者は積みボードが多すぎて
    購入していない。
    • いろんな人が試しているが、
    性能はイマイチ、という話も。

    View Slide

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

    View Slide

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

    View Slide

  40. まとめ

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  45. 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

    View Slide