32
24

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修正)。

  • 非特権命令仕様(20250508)
    ユーザプログラムが使用する非特権命令(Unprivileged Instruction)の仕様に関する文書です。
  • 特権命令仕様(20250508)
    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)環境でプログラミングする際には特に重要です。

セキュリティ機能

アセンブリ言語

  • Easy RISC-V
    アセンブリ言語で RISC-V のプログラムを書くチュートリアルです。ベアメタルプログラミングだけでなく、RISC-V の基本的な命令(RV32I、Zcsr拡張、特権命令)と呼び出し規則などRISC-Vをローレベルで理解するのに役立ちます。疑似命令等の細かい仕様はRISC-V Assembly Programmer’s Manualを参照してください。

RISC-Vの実装

CPUの構造解説

  • 先進計算機構成論
    東大の塩谷先生の講義資料です。RISC-V に限らない CPU や GPU の一般的な構造を解説しています。最新の CPU の構造を理解するために必要な知識が得られます(2025/11/11追加)。

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

パイプラインコアの例

変わり種

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

RISC-V V拡張のオープンソース実装

  • rvv implementations
    RISC-Vのベクトル命令拡張に対応するRISC-Vのオープンソース実装へのリンク集です(2025/2/8追加)。

RISC-VでのMacro-Op Fusion

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

GPUへの応用

AIアクセラレータ

実装検証ツール

  • 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追加)(2025/2/16追記)。
  • Hypervisor in 1,000 Lines
    2025/9/6時点ではまだ書きかけのようですが、怒田氏による1000行でハイパーバイザを実装する解説です(2025/9/6追加)。

開発ツール

エミュレータ

ソフトウェアスタック

キャッシュ管理

書籍

学習資料のリンク集

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

更新履歴

  • 2025/11/11
    • 先進計算機構成論の講義の資料へのリンクを追加
  • 2025/11/2
    • RVComp へのリンクを追加
  • 2025/10/28
    • Easy RISC-V へのリンクを追加
  • 2025/9/16
    • Uros Popovic 氏のベアメタルプログラミングの資料を追加
  • 2025/9/11
    • Tenstorrent に関する情報を追加
  • 2025/9/6
    • Hypervisor in 1,000 Linesの情報を追加
  • 2025/8/9
    • mini-rv32imaの情報を追加
  • 2025/7/13
    • キャッシュ管理に関する情報を追加
  • 2025/6/1
    • Verylで作るCPU基本編 第II部 第III部に関する情報を追加
  • 2025/5/3
    • felix86へのリンクを追加
  • 2025/2/16
    • hikamiの資料を追加
  • 2025/2/8
    • RISC-Vのベクトル命令拡張のオープンソース実装へのリンク集へのリンクを追加
  • 2025/1/28
    • Verylで作るCPUへのリンクを追加
  • 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
    • 公開
32
24
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
32
24

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?