SNSで見つけた、Linux on RISC-Vが現状のRISC-Vを非常に端的に説明していて勉強になると思ったので、読んでみることにした。 以下は読書メモ。といってもほぼ一対一に翻訳してしまっている。
前回の続き。最後はQEMUとか評価ボードとか。
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
QEMUによるRISC-Vのエミュレーション
- RISC-VマシンはQEMUでサポートされている
- 32ビットおよび64ビットのLinuxカーネルをブート可能
- 複数のRISC-V開発ボードのマシンコンフィグレーションで、同一のバイナリをブート可能
- ハイパーバイザとVector拡張をサポート済み
Linuxカーネル内でのRISC-Vサポート
- Palmer Dabbeltによる最初の実装が2018年にLinux 4.15にマージされた
- 「まだ小さなコミュニティだが、楽しく、フレンドリーだ」 - Bjorn Topel
- Palmerはriscv_treeのメンテナンスを継続している
- linux-riscvメーリングリストで開発が行われている
- lore.kernel.orgでアーカイブを参照可能
- IRC: libera.chat 上の#riscv
Linuxに最近追加された機能
- KVM RISC-Vサポート (Anup Patel) Linux 5.16
- ハイパーバイザ拡張のためのKVMサポート
- SBI SRST拡張のサポート (Anup Patel) Linux 5.17
- SBI SRST (System Reset)拡張をサポートし、システムリセットのためのLinux内の明確なドライバが不要になった。
Linux 5.18でサポートされた新たな機能
- Sv57ページテーブルサポート (Qinglin Pan)
- RISC-V Perfサポートの向上 (Atish Patra)
- Perf on RISC-V: The Past, the Present and the Future
- RISC-V CPU Idleサポート (Anup Patel)
- cpuidleとssupendがSBI HSM拡張にてサポートされた
- RISC-V ISA拡張のフレームワークサポート (Atish Patra)
Linux 5.19に向けて
- Linux 5.19マージに向けてRISC-Vのパッチのマージウィンドウ
- ページベースのメモリ属性 (以降で少し説明する)
- rv32バイナリをrv64システムで動作させる (compat subsystem)
- kexec_file()のサポート
- チケットベースのスピンロックをサポートし、qrwlockをサポートする
- アトミックとXIPのためのクリーンアップと修正
作業中
- Add vector ISA support (Greentime Hu)
- RISC-V IPIの拡張 (Anup Patel)
- RISC-V S-modeソフトウェアはM-modeのランタイムを呼び出してOpenSBIのIPIを呼び出す
- AIA (advanced interrupt architecture) により、S-modeでもIPIを投げれるようになる。
- Sstc拡張のサポート (Atish Patra)
Linuxディストリビューション: Fedra
Linuxディストリビューション: Debian
Linuxディストリビューション: Ubuntu
- riscv64がUbuntu 20.04 LTSでサポートされている
- Ubuntu 22.04がプリインストールされたSD-CardがSiFiveの開発ボードおよびQEMU向けに配布されている
- Ubuntu 22.04より、サーバインストールイメージがSiFive UnmatchedボードのNVMe向けに配布されている。
その他のLinuxディストリビューション
- OpenSuSE
- RISC-VサポートはTumbleweedイメージにていくつかのボードサポートとして開発中
- Arch Linux
- RISC-V向けにコアパッケージの95%はビルド済み
- Gentoo
- riscv64ステージはGentooダウンロードページにおいてダウンロード可能
OpenEmbeddedとYocto
- meta-riscv: 一般的なハードウェア向けのBSPによりRISC-Vデバイスをオーバレイする
- 異なるOpenEmbedded/Yoctディストリビューションとレイヤスタックにおいて動作する
- QEMUとRISC-V開発ボードをサポートしている
Buildroot
- RISC-Vの移植により、BuldRootプロジェクトでRISC-Vがサポートされている
- “Embedded Linux from Scratch in 45 minutes (on RISC-V)”
SiFive Freedom Unleashed
Microchip PolarFire SoC
- RISC-VコアはSiFive FU540 SoCを使用している
Kendryte K210
- RV64GCをサポートした400MHzのコア
- 8MBのSRAMを持っているが、DRAMはない
- 14ドルから入手可能
- Linuxとu-bootがサポートされている
- Buildrootがサポートされている
Sifive Unmatched
- SiFive Freedom FU740 SoC
- 4x U74 RV64GCアプリケーションコア
T-Head Xuantie C910
- T-Head
- 高性能RV64GC、最大16コア
AndroidをRISC-Vに移植する
T-HeadのRVB-ICE開発ボード
- ICE SoC 2コアのC910、1.2GHz
- 4GB LPDDR4, 16GB eMMC
RISC-V Android SIG (Special Interest Group)
T-Head Xuantie C906
- シングルコア RV64GC, 1.0GHz, 5ステージパイプライン
Allwinner D1 SoC
- T-HeadのC906コアが使用されている