オープンソースソフトウェアに続き、オープンソースの命令セットアーキテクチャとしてRISC-Vが注目されています。 RISC-V Internationalには、名だたる半導体企業から新進気鋭のベンチャー企業まで、多くのメンバが参入して注目度が高まっています。 半導体開発およびそれを取り囲むソフトウェアエコシステムの構築に関して、RISC-Vがどのような問題を解決することができるかについて解説します。 また、RISC-Vを囲む業界の最新動向について解説します。
次世代を担うオープン命令セットアーキテクチャRISC-Vの最新動向FPGA開発日記 著者 msyksphinz
View Slide
RISC-Vのアップデート最近アツい新規命令たちRISC-Vのソフトウェアソフトウェアのサポート状況RISC-Vの実装RISC-Vのハードウェア実装・最近の話本日の発表について
Tenstorrent と Jim Keller がRISC-V CPUコアとしてSiFiveのプロダクトを使用Apple が RISC-V HighPerformance Engineerを募集IntelがSiFiveを買収するといううわさが流れるAlibabaがRISC-Vコアをオープンソースとして公開SiFive Unmatchedが出荷HuaweiのグループがAndroidをRISC-Vに移植RISC-V In the news 20213たった一万円のRISC-V CPU搭載+Linuxの動作に対応したお手軽ボード BeagleV登場ルネサスエレクトロニクスがRISC-Vコアの採用を発表注: SiFiveはUCB(University of California Berkeley)のRISC-V草創期開発メンバが立ち上げたRISC-V IPコアを販売する企業RISC-V界隈で圧倒的な影響力を持つ。
発表者とRISC-VFPGA + 自作CPUにハマるMIPSアーキテクチャ+5段パイプラインを実装してFPGAに載せて遊ぶ特定用途向け汎用CPUの実装ハードウェア実装とか性能分析とかRISC-Vで自作CPU+情報発信オープンな情報オープンなツールセットオープンな検証環境RISC-Vに出会う就職学生時代
自作CPUをMIPSでやっていた時代● 複雑な命令セット群に悩まされ続けた● ISAのバリエーション = 歴史 であり、どの命令までをサポートすればよいのか非常に複雑○ 命令に「モジュール性」が無かった● 古いしがらみにとらわれ続けていた○ Delayed Branchが存在し続け、アウトオブオーダ実行の際に対処に苦しみ続けた● 検証できなさ過ぎた○ Linuxを立ち上げるために検証用のISSがそもそも公開されていなかった○ ISSによる命令動作チェックができず、各命令の仕様は「非常に分厚い」仕様書の読み解きに頼るしかなかった● これらを、「趣味のCPU自作」で学生がやるには荷が重すぎた
時代は変わってきた?● RISC-V対応の命令セットシミュレータの開発○ https://github.com/msyksphinz-self/swimmer_riscv○ ISAの勉強をしたいなら、まずは命令セットシミュレータから○ 最初のエンジンはMIPSとして実装・のちにRISC-Vに移植○ Linuxをブートできる。自作CPUの検証用シミュレータとして大活躍○ Rust再実装版■ https://github.com/msyksphinz-self/swimmer_rustRISC-V登場により発表者の自作CPUに対するアプローチが変わる
発表者のRISC-Vに対するアプローチ (2)● 自作CPU○ 超本気のRISC-V アウトオブオーダコアの実装■ 時々ブログにちまちまと成果を書いている○ RV64GCサポートを目指す○ Linuxブートを目指す○ これができるのも、ISS、コンパイルツールチェイン、テストケースが充実しているから■ 一昔前のISAはこれらのどれもが揃っていなかった...○ MIPSをベースにしていた時は遅延スロットの取り扱いに苦労し地獄のようだった○ → RISC-VはISAがかなり洗練されているため助かる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
多くの大学が講義でのサンプルISAにRISC-Vを使用慶應義塾の授業:https://www.am.ics.keio.ac.jp/parthenon/東大理学部CPU実験多くの班がRISC-V採用発表者のブログを見てくださっている(謝辞ももらってうれしい)世界的にCPU系の講義ネタがRISC-Vに移行もはや大学でのサンプルISAはx86でもMIPSでもなくRISC-V大学での活用事例
なぜ大学ではx86でもなくARMでもなくMIPSでもなくRISC-Vなのか教育観点からのメリット 〇 教育観点からのデメリット ×x86 ワールドワイドで使用されている仕様が複雑すぎるなんだよMod/RMってARM ワールドワイドで使用されている仕様が複雑すぎる下手にCPU自作して授業で使用するとArmから怒られるMIPS 仕様が比較的簡単(一部分野を除き)だれも使っていない古臭い仕様が残っているDelayed Branch死すべしRISC-V仕様が比較的簡単古臭い仕様が残っていないこれから普及する...かも
どうして私たちはRISC-Vに惹かれるのか
突然ですが、「半導体設計」のフロー、ご存知ですか?● 発表者は複数の半導体設計会社で複数のテープアウトを経験● → 半導体設計のノウハウは各社(そして各個人)に大きく依存する● → 設計情報・EDAツールなどの初期投資が非常に膨大○ そしてEDAツール自体も「数10年前から全く進化していない」■ 例:デジタル回路設計において、Verilog記述→スタンダードセル記述に変換することを「論理合成」と言いますが、論理合成後の記述とVerilog記述が一致することを確認するために同じEDAベンダの別のツールで検証する■ 雰囲気としては「GCCの吐き出したアセンブリ命令がC言語と等価であることを確認するようなもの」● 私「なんでS社が出力した回路をS社のツールで検証してるの?」● 私「RTLシミュレーション遅すぎない?マルチコア使えないの?」○ 営業「あ、あのツールですか。買収した後お取り潰ししました。」半導体設計自体が抱える、「参入障壁の高さ」(高コスト・ノウハウの塊・オープン性の無さ、など)※ テープアウト: ASICを作るための設計データをリリースすること。一般的に地獄である。
RISC-Vが変えるものは、「ISA」だけではないオープンなISARISC-V半導体設計自体の「民主化」 FPGA設計のオープン化「OSFPGA.org」 ASICをOSSで設計しテープアウトするRISC-Vにより「半導体もOSSで何とかできんだろうか」という流れが出てきた→ いつでも、だれでも半導体を作れる時代を目指す「半導体設計の民主化」
msyksphinz(詩人), 2021小川のほとりにて (嘘)半導体は「お金を積まなければ作れないもの」から、「誰でも気軽に作れるもの」になるべき。そのための流れの一端が”RISC-V”
RISC-V命令の基本と2021年仕様アップデート
RISC-V=「仕様書」IP=デザインそのものhttps://msyksphinz.hatenablog.com/entry/2020/10/04/040000
よくある誤解:「RISC-V」はIPであるIPはデザイン(回路)のこと。RISC-Vは「仕様」ですよ19◼ 天下の日経BPさんですら、こんな間違えしちゃう◼ RISC-Vは「ISA」であり、IPはそのISAを実装した成果物◼ でもこんなのは半導体の専門用語であり、半導体の専門家以外が間違えるのは当たり前◼ 情報を発信しない半導体屋さんにも責任がある◼ 「半導体業界における「IP」とは何なのかを説明したい」◼ https://msyksphinz.hatenablog.com/entry/2020/10/04/040000 (手前みそ)
基本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
ISAは誰が決めているのかhttps://riscv.org/community/directory-of-working-groups/ より抜粋
Privileged Spec 1.12 Public Review!https://riscv.org/blog/2021/09/privileged-specification-version-1-12-now-open-to-public-review/
1.12で追加される新規仕様Privileged ISAに対してさらなる修正拡張PMPキャッシュ無効化命令キャッシュ操作命令Page-Based Memory TypesNAPOT Translation ContiguityChapters 3 & 4 - Sm1-12 & Ss1-12State EnableハイパーバイザePMPSvinvalCMOSvpbmtSVnapotSmstateenCount Overflow & FilteringTime CompareHalf Precision ZfhScalar CryptoSv56
ハイパーバイザ命令動作モードU ユーザモードSスーパーバイザーモードM マシンモード仮想モード(V) 通常動作モード 新動作モード0 ユーザモード ユーザモード0スーパーバイザーモードHSモード(ハイパーバイザ拡張スーパバイザモード)0 マシンモード マシンモード1 ユーザモード 仮想ユーザモード1 スーパバイザモード 仮想スーパバイザモード
KVMが動く● 手前味噌○ https://msyksphinz.hatenablog.com/entry/2020/10/02/000000● シミュレータ(ISS/QEMU)では動作している● Rocket-Chipが現在ハイパーバイザーを実装中?○ “h-ext” ブランチで実装が見える
CMO (Cache Management Operation)キャッシュを操作する命令群 https://github.com/riscv/riscv-CMOsCMO命令種管理命令 CBO.INVAL, CBO.CLEAN, CBO.FLUSHZero命令 CBO.ZEROプリフェッチ命令 PREFETCH.R, PREFETCH.W, PREFETCH.ICBO : Cache Block Operation
ePMP (Enhanced PMP)PMP : Physical Memory Protectionスーパーバイザーモードでのみ有効 → マシンモードでも有効になるように仕様変更セキュリティ対策
Half Precision半精度浮動小数点演算:16ビット浮動小数点データのロードストア・演算命令半精度演算命令メモリアクセス FLH, FSH演算命令FADD, FSUB, FMUL, FDIV, FMIN, FMAX, FSQRTF[N]MADD, F[N]MSUBデータ変換命令 FCVT.int.H, FCVT.H.int, FSGNJデータ移動命令 FMV.X.H, FMV.H.X比較命令 FCMP分類命令 FCLASS
RISC-Vソフトウェア環境
オペレーティングシステムサポート状況最新のサポート状況は https://riscv.org/exchange/software/ を参照のこと種類 主なサポートOSベアメタル Linux Kernel, Yocto Project/OpenEmbedded, BuildrootLinux Fedora, Debian, OpenSUSE, Gentoo, Slacware, Ubuntu …リアルタイムOS RT-Thread, FreeRTOS, Zephyr, NuttX, seL4 ,VxWorks, …BSD FreeBSD, NetBSD
一番進んでいるのはDebian?● Debianパッケージの、RISC-Vビルドサポート状況○ https://buildd.debian.org/stats/● おおよそ95%がサポート済み○ 2018年頃に急激にサポートが進んだ。○ (SiFiveのCo-Founderの一人であるYunsup Lee曰く)わずか一人のエンジニアがここまでサポートを進めた?
Android on RISC-V● 手前ミソ ブログ参照○ 中国Alibaba (実際はT-Head)によるAndroid移植○ https://msyksphinz.hatenablog.com/entry/2021/03/04/040000○ ビルドに猛烈に時間がかかるが何とかなる。○ Androidエミュレータが立ち上がるところまでは確認できるが、まだまだ猛烈に遅い。
RISC-Vの実装
割とオープンで無償で入手できそうなRISC-V実装開発元 仕様 特徴Rocket SiFive RV64GCインオーダ最もオーソドックス実装はこれを見ていれば間違いないChiselというハードウェア記述言語が地獄BOOM UCB RV64GCアウトオブオーダ最もオーソドックスなアウトオブオーダ実装はこれを見て(ryChiselという(ryCVA6 OpenHW Group RV64IMACインオーダ旧ArianeというコアChipyardという環境が結合されており使いやすいSwerRV EL/EH Western Digital RV32IM{A}CインオーダImagination Technologiesの教育コンテンツに結合されているOpen910 Alibaba/T-Head RV64???アウトオブオーダC910と呼ばれている超高性能コアの公開性能不明、Verilog記述が旧世代すぎて地獄発表者の独断と偏見でリスト化
Rocket-Chip● 非常に一般的な実装○ 5段パイプライン● 入門用には....Chiselという言語が立ちはだかる● “Chisel入門” 的な本を読んでRocketの実装が理解できるか?○ No○ 比べ物にならない高レベルの実装● 何故Chiselで書いてあるか?○ 非常に高いConfigurability○ 1つの実装から大量の構成バリエーション○ バス接続も思いのまま● Verilogの「カスタマイズのしにくさ」から生まれた実装
各種国際学会でのRISC-V実装Xuantie-910: A Commercial Multi-Core 12-Stage Pipeline Out-of-Order 64-bit HighPerformance RISC-V Processor with Vector Extension2020 ACM/IEEE 47th Annual International Symposium on Computer Architecture (ISCA)図は論文より引用
各種国際学会でのRISC-V実装SonicBOOM: The 3rd Generation Berkeley Out-of-Order MachineFourth Workshop on Computer Architecture Research with RISC-V (CARRV 2020)図は論文より引用ちなみに、BOOMv3はマイクロアーキテクチャの資料が充実している。https://docs.boom-core.org/en/latest/
RISC-Vの開発ボードSipeed MaixduinoLoFive RISC-V SoC Evaluation KitGigadevice GD32VF103 RV-STARGAPduino Development BoardSipeed Maix GOSiFive UnleashedSiFive HiFive1 SiFive HiFive1 Rev.BSiFive Unmatched発表者が持っているやつMicrochip PolarFire Icicle Kit高性能なものから低価格のものまでそろってきた
今すぐRISC-V実機で遊びたいならHiFive Unmatched (SiFive)開発元 仕様SoC SiFive Freedom U740 SoCMemory 16GB DDR4Flash Memory 32MB Quad SPI FLushRemovable Storage MicroSD CardNetworking Gigabit Ethernet PortUser I/O4x USB 3.2 Gen 1 Type A Ports(1 Charging Port)1x MicroUSB Console Port• Linux + GUIが動くという噂の• 夢のようなボード。• 発表者は積みボードが多すぎて購入していない。• いろんな人が試しているが、性能はイマイチ、という話も。
今すぐRISC-V実機で遊びたいならPolarFire SoC Icicle Kit (Microchip)
今すぐRISC-V実機で遊びたいならVisionFive V1 (StarFive)かつてBeagleVと呼ばれていたやつ。JH7100の実体は内部にSiFive U74 x22022年発売予定?
まとめ
2021もRISC-Vは進化を続ける主に拡張命令セットについて、現在の動向をご紹介しましたハードウェア開発全体の大きな潮流CHIPS Alliance やSkywater PDKなど開発ボードお好きなものを使って、簡単にRISC-Vを使える時代が来ていますRISC-Vの現在
RISC-V 日本のコミュニティご紹介
RISC-V勉強会● 日本のRISC-V Ambassadorによる主催● 実はRISC-V Internationalによる公認● 現在はオンライン (Zoomで100名限定)● 毎回1名のゲストによるトーク● RISC-VのISA仕様に関するマニアックな話https://risc-v.connpass.com/
RISC-V Days Tokyo● オンライン+オフライン混載のイベント● 割と企業の宣伝向け○ 技術的なトークは期待できない● 2020年から春と秋の2回開催+複数日○ 1トラックしかないのでこうなるhttps://riscv.or.jp/risc-v-days-tokyo-2021-autumn/
CREDITS: This presentation template was createdby Slidesgo, including icons by Flaticon, andinfographics & images by FreepikTHANKS!「FPGA開発日記」 : https://msyksphinz.hatenablog.com/@dev_msyksphinzhttps://github.com/msyksphinz-self