11
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

RISC-V技術資料集

Last updated at Posted at 2023-12-09

RISC-V技術資料集

カリフォルニア大学バークレー校で開発され現在普及しつつあるRISC-Vの技術仕様や資料についてのまとめです。特に公式資料の日本語訳や日本語での解説について積極的に載せています。

基本的には自分用のメモですがRISC-Vの技術資料のまとめとして参考にしてください。必要に応じて適宜更新します。

RISC-V技術仕様

RISC-Vの技術仕様一覧より必要な情報をピックアップしました。

命令セットアーキテクチャ

CPUの命令セットアーキテクチャ(Instruction Set Architecture、 ISA)の仕様書です(2024/12/20修正)。

  • 非特権命令仕様(20240411)
    ユーザプログラムが使用する非特権命令(Unprivileged Instruction)の仕様に関する文書です。
  • 特権命令仕様(20240411)
    OSやファームウェアなどは非特権命令に加え特権命令(Privileged Instruction)も使用します。またRISC-Vではシステムを制御するために様々なControl and Status Registers(CSR)が使われています。さらにシステムを保護するためにユーザプログラムを動かすU-ModeとOSを動かすS-Modeなど複数の実行モードを持ち、メモリ保護のための機構を持ちます。外部機器の管理のための割り込み機構なども持ちます。これらOSやファームウェアに関するCPU側に必要な機能の仕様を規定しています。

RISC-V Profiles

RISC-Vは最低限必要な基本命令セットに対して乗算除算命令のM拡張など様々な標準拡張を追加することで他の一般的なCPUと同等の機能を実現しています。RV64IMAC等拡張名を並べただけだと、組み込み向けCPUなのか、LinuxのようなOSが動くパソコン向けCPUなのかわかりにくいので、用途ごとに対応すべき拡張をまとめたものがRISC-V Profiles
になります(2024/12/20修正)。

承認済み拡張

承認済み拡張(Ratified Extension)以前の承認済み拡張集 のうち重要だと自分が思うものを抜き出しました(2024/12/20修正)。

命令セット外の技術仕様

呼び出し規則(Calling Convention)や割り込み処理、デバッグやトレース、ファームウェアがOSに提供する機能など、システムを実装するのに必要な命令セット外の機能の仕様に関する文書です。承認済み拡張以前の承認済み拡張より重要だと自分が思うものを抜き出しました(2024/12/20修正)。

UEFIとACPIとDevicetreeの仕様

ファームウェアとOSとのソフトウェアインターフェースに関する仕様であるUnified Extensible Firmware Interface(UEFI)と、ハードウェアの構成要素を集めて管理するAdvanced Configuration and Power Interface(ACPI)と、ハードウェアの構成要素を静的に管理するDevicetreeの仕様です。ACPIは電源管理だけの仕様ではなくハードウェア全般の管理に関する仕様です。

これらはRISC-V固有ではなくx86_64やARMでも広く使われており、OSを実装する場合やOSがないベアメタル(baremetal)環境でプログラミングする際には特に重要です。

セキュリティ機能

RISC-Vの実装

アウトオブオーダースーパースカラの高性能コア

パイプラインコアの例

変わり種

  • SERV
    1bit単位で処理することで非常に少ないリソースでRISC-Vの命令を実行できるようにしたコアです。これを非シリコン素材で実装したFlex-RVというCPUがあるようです(2024/9/27追加)。

RISC-VでのMacro-Op Fusion

RISC-Vでは上記のように色々な拡張が提案されていますが、Christopher Celio氏の論文では少ない命令でもMacro-Op Fusionで複数の命令をまとめることができるから余計な拡張命令は不要だという話があります。Macro-Op Fusionの資料が少ないので自分が調べたことをリストしておきます。

GPUへの応用

実装検証ツール

  • riscv-test
    Verilog 等でRISC-V CPUを実装した際に適切に命令を実装できているか確認するためのツールです。正常に動作しない場合なにか間違って実装している可能性が高いです。スーパースカラの場合などではこのツールが正常に動作しても必ずしも正しく実装できているとは限らないので、CoreMarkのようなベンチマークなどが正常に動くかなどでも確認したほうがいいです(2024/12/22追加)。
  • RISCOF
    別の互換性検証ツールです。

ソフトウェア

ファームウェア

RISC-Vコンピュータを起動したときに最初に実行するファームウェアに関する資料です。

ベアメタル

OSなしでプログラムを実行するベアメタル環境でのプログラミングに関する資料です。

OS

RISC-VにはLinuxなど様々なOSが実装されています。

ハイパーバイザ

ハイパーバイザはシステムを仮想化するソフトウェアです。OSの下で動き、複数のOSを同時に動かすことができます。

  • RISC-V ハイパバイザを作ろう
    VA LinuxによるRISC-Vで動くハイパーバイザの解説です。
  • hikami
    RISC-Vのさまざまな拡張をハードウェアで実装するのは大変ですが、多くの拡張はハイパーバイザ上でエミュレーション可能です。RISC-Vの拡張をソフトウェア的に実装して検証等を行う目的で作られたハイパーバイザがこちらになります。未踏プロジェクト2024年度で採択(2024/11/9追加)。

開発ツール

エミュレータ

書籍

学習資料のリンク集

  • Learn RISC-V
    英語で書かれたRISC-Vを学ぶための資料集です。さらなる情報を得たい場合にはこちらを参照してください。

更新履歴

  • 2024/12/22
    • riscv-testsやRISCOFなど実装検証ツールの情報を追加
  • 2024/12/20
    • RISC-Vの仕様などへのリンクを中心に古くなっていた箇所を修正し、項目配置を全体的に修正
  • 2024/11/24
    • UEFIベアメタルプログラミングがx86_64でのものであることを追記
  • 2024/11/18
    • UEFIでの開発関連をベアメタルでのプログラミングへ移動
  • 2024/11/17
    • 大神 祐真氏のUEFIベアメタルプログラミングへのリンクを追加
  • 2024/11/9
    • kikamiというハイパーバイザを追加
  • 2024/10/18
    • ハイパーバイザの解説へのリンクを追加
  • 2024/10/1
    • tanakmura氏によるCache-As-Ramの解説を追加
  • 2024/9/27
    • SERVの実装例としてFlex-RVを追加
  • 2024/8/10
    • メモリーオーダリングに解説のリンクを追加し記述の修正
  • 2024/8/9
    • RISC-Vの実装にHazard3を追加
  • 2024/8/1
    • Trusted Execution Environmentに関する内容を中心にRISC-Vのセキュリティ関連の情報を追加
  • 2024/6/20
    • A Primer on Memory Consistency and Cache Coherenceへのリンクを追加
  • 2024/6/10
    • RISC-VのGPUへの応用に関する資料へのリンクを追加
  • 2024/6/9
    • Learn RISC-Vへのリンクを追加
  • 2024/6/2
    • ARMでのMacro-Op Fusionの資料追加
    • 書籍『RISC-VとChiselで学ぶ はじめてのCPU自作』の関連資料を見つけたので追加
  • 2024/3/19
    • RISC-Vのアウトオブオーダースーパースカラの高性能コアにXiangShanに関する情報を追加
  • 2024/3/17
    • RISC-V原典について文章の修正と関連資料を追加
  • 2024/3/07
    • RISC-V カスタムのためのツールチェーン拡張へのリンクを追加
    • 細かい内容の追加・修正
  • 2024/3/02
    • 書籍2冊追加
    • 細かい内容の追加・修正
  • 2024/1/08
    • 細かい表現の修正
  • 2023/12/17
    • TSO関連でメモリモデル入門へのリンクを追加
  • 2023/12/09
    • 公開
11
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?