FPGA開発日記

カテゴリ別記事インデックス https://msyksphinz.github.io/github_pages , English Version https://fpgadevdiary.hatenadiary.com/

Linux on RISC-V 2022を読む (1)

SNSで見つけた、Linux on RISC-Vが現状のRISC-Vを非常に端的に説明していて勉強になると思ったので、読んでみることにした。 以下は読書メモ。といってもほぼ一対一に翻訳してしまっている。

連続で投稿する。何回かに分けて読んでいこうと思う。

kernel-recipes.org

mobile.twitter.com


RISC-V: フリーでオープンなISA

  • カリフォルニア大学バークレイ校の新しいコンピュータアーキテクチャ研究グループで開発された命令セットアーキテクチャ
  • Vはローマ数字の5の意味であり、UCバークレイから開発された5番目のRISCである、という意味。
  • フリーでオープンというのは、仕様書がオープンソースライセンスで配布されているということを意味する: Creative Commons Attribution 4.0 International

RISC-Vはこれまでと何が違うのか

  • シンプルで白紙のデザイン
    • マイクロアーキテクチャのスタイルに関する依存性を除去する(インオーダ、アウトオブオーダなど)
  • モジュラーデザイン
    • マイクロコントローラからスーパーコンピュータまでに適用できる。
  • 安定したベースライン
    • ベースとなる整数ISAと標準拡張は完全に決定された。
    • オプションとなる拡張については、最新ではない。

RISC-Vベース整数ISA

  • RV32I: 32ビット
    • 50命令以下で実現可能!
  • RV64I: 64ビット
    • Linuxにおいて、もっとも重要
  • RV128: 128ビット

RISC-Vベース整数レジスタ

RISC-V ABI

  • x1からx31はプロセッサにとって、同様に扱われる。
  • RISC-V psABIによると、これらのレジスタの機能が定義されている。
    • s0からs11までを関数コール内で予約して使用している。
    • a0からa7までの引数レジスタ、テンポラリレジスタであるt0からt6は異なる。

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 Readerを読んでRISC-Vについて知ろう。

RISC-Vについてより深く知りたい方には

  • Computer Organization and Design, RISC-V Edition

産業界におけるRISC-V

  • RISC-V Internationalが仕様自体を制御している。
    • 70か国以上から非営利団体や大学含む2,700を超えるメンバが参入している。
    • 非営利団体や個人は無料で加入できる
    • RISC-V InternationalがYoutubeチャネルを公開しており多くの発表が聞ける
  • 数百万以上のRISC-Vコアが企業により出荷されている

RISC-Vと産業界

  • ISAのライセンス料とロイヤリティが必要ない
    • リーガルコストと複雑なライセンス同意による遅延を防ぐ
  • マイクロアーキテクチャの実装が自由
    • オープンISAというのは、すべての人がアーキテクチャライセンスを持っているということ。
  • 既存のオープンソース実装を向上させる自由

RISC-Vはオープンソースプロセッサなのか?

RISC-Vのオープンソースコア

  • アカデミア
    • Rocket / BOOM / PULP
  • 産業界
    • SweRV / Core-V / OpenTitan
  • FPGAソフトコア
    • PicRV32, RVfpga, SERV, VexRiscV
  • FOSSI Fondation
    • EI Correo Libre : 月間のニュースレターにて、最新のオープンソースコアについてレポート
  • オープンソースSoCをオープンソースシリコンツールチェインにて実装

RISC-Vソフトウェアエコシステム

RISC-V特権アーキテクチャ

制御と状態レジスタ (CSR)

  • CSRは読み書きのために専用の命令を持っている。
  • CSRはそれぞれのモード(m-mode, s-mode)で専用のレジスタを持っている。
  • マシン状態 (mstatus) は重要なCSRである。

RISC-V仮想メモリ

  • satp(Supervisor Address Translation and Protection)CSRによってスーパーバイザモードのアドレス変換が制御されている。
  • Sv32: 3レベルのページテーブル
  • Sv39: 3レベルのページテーブル
  • Sv48: 4レベルのページテーブル
  • Sv57: 5レベルのページテーブル