SNSで見つけた、Linux on RISC-Vが現状のRISC-Vを非常に端的に説明していて勉強になると思ったので、読んでみることにした。 以下は読書メモ。といってもほぼ一対一に翻訳してしまっている。
連続で投稿する。何回かに分けて読んでいこうと思う。
mobile.twitter.comSlides from my Linux on @RISC_V talk at @KernelRecipes https://t.co/6Jw5Lyv6eN #kr2022 #riscv pic.twitter.com/xT8MO457ug
— Drew Fustini 🐧📣 pdp7@mastodon.social 🐘 (@pdp7) June 3, 2022
RISC-V: フリーでオープンなISA
- カリフォルニア大学バークレイ校の新しいコンピュータアーキテクチャ研究グループで開発された命令セットアーキテクチャ。
- Vはローマ数字の5の意味であり、UCバークレイから開発された5番目のRISCである、という意味。
- フリーでオープンというのは、仕様書がオープンソースライセンスで配布されているということを意味する: Creative Commons Attribution 4.0 International
RISC-Vはこれまでと何が違うのか
- シンプルで白紙のデザイン
- マイクロアーキテクチャのスタイルに関する依存性を除去する(インオーダ、アウトオブオーダなど)
- モジュラーデザイン
- マイクロコントローラからスーパーコンピュータまでに適用できる。
- 安定したベースライン
- ベースとなる整数ISAと標準拡張は完全に決定された。
- オプションとなる拡張については、最新ではない。
RISC-Vベース整数ISA
RISC-Vベース整数レジスタ
- XLENはレジスタサイズを指定する
- RV32IはXLEN=32
- RV64IはXLEN=64
- 32本のレジスタはx0からx31で表現する
- PCレジスタは専用レジスタ
- Base ISAのトークで、Andrew Watermanが命令エンコーディングの方式について説明している。
RISC-V ABI
RISC-V標準拡張
- M: 整数乗算・除算
- A: アトミックメモリアクセス
- F, D, Q: 浮動所数点、単精度、倍精度、4倍精度
- G: 「標準仕様」、IMAFDと同一
- C: メモリとキャッシュを節約するための圧縮命令
- 多くのLinuxディストリビューションはRV64GCをターゲットとしている。
2021年に標準化された使用
- 新たに15個の命令仕様により、40以上の拡張が定義された
- ベクトル
- ハイパーバイザー
- スカラ暗号化
- ビット操作
RISC-Vのプロファイル
- RISC-Vは高いモジュラリティと拡張性のあるアーキテクチャである
- プロセッサのデザインによって、適切な命令仕様を柔軟にピックアップできるようになっているが、それに応じて多くの命令仕様の組み合わせが生じてしまう。
- RISC-Vのプロファイルは多くのユースケースにおいて代表的な最小限のISAを定義している。
- RVM: ベアメタルコードもしくはRTOSが動作することを目的としたもの
- RVA: Linuxなどのオペレーティングシステムが動作することを目的としたアプリケーションプロセッサ向けの仕様
- RISC-V Summit TalkにてGreg Favorが説明を行っている。
RISC-Vについてより知りたい方には
RISC-Vについてより深く知りたい方には
- Computer Organization and Design, RISC-V Edition
産業界におけるRISC-V
RISC-Vと産業界
- ISAのライセンス料とロイヤリティが必要ない
- リーガルコストと複雑なライセンス同意による遅延を防ぐ
- マイクロアーキテクチャの実装が自由
- オープンISAというのは、すべての人がアーキテクチャライセンスを持っているということ。
- 既存のオープンソース実装を向上させる自由
- 多くのオープンソースコアがすでに入手可能となっている。
RISC-Vはオープンソースプロセッサなのか?
- RISC-Vはオープンソースライセンスに基づいた仕様である。
- RISC-Vの実装はオープンソースでも、proprietaryでも構わない。
- オープンな仕様に基づいてオープンな実装をすることも可能である。
- オープンISAはオープンソースプロセッサを作ることが可能
RISC-Vのオープンソースコア
- アカデミア
- Rocket / BOOM / PULP
- 産業界
- SweRV / Core-V / OpenTitan
- FPGAソフトコア
- PicRV32, RVfpga, SERV, VexRiscV
- FOSSI Fondation
- EI Correo Libre : 月間のニュースレターにて、最新のオープンソースコアについてレポート
- オープンソースSoCをオープンソースシリコンツールチェインにて実装
RISC-Vソフトウェアエコシステム
- RISC-Vはすでに優れたソフトウェアソフトウェアエコシステムを持っている。
- オペレーティングシステム: Linux, BSD, FreeRTOS, Zephyr
- ツールチェイン&ライブラリ: gcc, glibc, gdb, binutils, clang/llvm, newlib
- 言語とランタイム: V8, Node.js, Rust, Go, OpenJDK, Python
RISC-V特権アーキテクチャ
- 3つの特権モード
- Environment Call (ECALL)命令
制御と状態レジスタ (CSR)
RISC-V仮想メモリ
- satp(Supervisor Address Translation and Protection)CSRによってスーパーバイザモードのアドレス変換が制御されている。
- Sv32: 3レベルのページテーブル
- Sv39: 3レベルのページテーブル
- Sv48: 4レベルのページテーブル
- Sv57: 5レベルのページテーブル