RISC-V(リスク ファイブ)はカリフォルニア大学バークレー校で開発されオープンソースで提供されている命令セットアーキテクチャ(英: instruction set architecture、ISA)である"RISC-V is an open standard Instruction Set Architecture (ISA) enabling a new era of processor innovation through open collaboration" RISC-V International. About RISC-V. 2023-06-17閲覧.。

本稿ではISAであるRISC-Vの実装(RISC-Vコア)およびエコシステム(対応OS、開発ツール)を含めて解説する。

概要

オープンソースライセンス 他の多くの命令セットアーキテクチャ(ISA)設計とは異なり、RISC-V ISAは、使用料のかからないオープンソースライセンスで提供されている。多くの企業がRISC-Vハードウェアを提供したり、発表したりしており、RISC-Vをサポートするオープンソースのオペレーティングシステムが利用可能であり、いくつかの一般的なソフトウェアツールチェーンで命令セットがサポートされている。

命令セット(ISA)がRISC RISC-Vは縮小命令セットコンピュータ (RISC) の原則に基づいている。RISC-V ISAの注目すべき特徴は、ロードストア・アーキテクチャ、CPU内のマルチプレクサを簡素化するビットパターン、IEEE 754浮動小数点、アーキテクチャ的に中立な設計、符号拡張を高速化するために最上位ビットを固定位置に配置することなどである。命令セットは、幅広い用途に対応できるように設計されている。可変幅で拡張可能なので、常により多くのエンコーディングビットを追加することができる。32、64、128ビットの3つのワード幅と、さまざまなサブセットをサポートしている。各サブセットの定義は、3つのワード幅によって若干異なる。サブセットは、小型の組み込みシステム、パーソナルコンピュータ、ベクトルプロセッサを搭載したスーパーコンピュータ、倉庫規模の19インチラックマウント並列コンピュータをサポートしている。

命令セットスペースの拡張 ISAに、128ビット伸張版の命令セットスペースが確保されたのは、60年にわたる業界の経験から、最も回復不可能な命令セット設計上の誤りはメモリに対するアドレス空間の不足であることが示されているからであるゴードン・ベルらの1976年の「Computer Structures: What Have We Learned from the PDP-11」という報告の2.1節にある、There is only one mistake that can be made in a computer design that is difficult to recover from -- not providing enough address bits for memory addressing and memory management. という文から始まる記述が、これを示すものとしてよく引用される。。2016年時点で、128ビットISAは意図的に未定義のままであるが、これは、このような大規模なメモリシステムでの実用的な経験がまだほとんどないためである。

実用的な使用に使える設計 このプロジェクトは2010年にカリフォルニア大学バークレー校で開始されたが、貢献者の多くは大学とは関係のないボランティアである。他のアカデミックな設計は、一般的に説明を簡単にするためだけに最適化されているのに対し、RISC-Vの命令セットは、実用的なコンピュータで使用できるように設計されている。

2019年6月の時点で、ユーザスペースISAのバージョン2.2と特権ISAのバージョン1.11は凍結されており、ソフトウェアとハードウェアの開発を進めることができる。デバッグ仕様は、ドラフトとしてバージョン0.13.2が用意されているPrivileged ISA Specification - RISC-V International。

開発動機

オープンなISA 命令セットアーキテクチャはコンピュータにおけるハードウェアとソフトウェアのインターフェースである。良いISA/インターフェースはソフトウェアの再利用性を上げコストを低減する。また、ハードウェア製造者間の競争が促進され、ハードウェア製造者は、より多くのリソースを設計に使えるようになり、ソフトウェア・サポートに使うリソースは少なくできる。

これまでは商業的に成功し広く用いられていたISAはクローズドにライセンシングされてきた。たとえばARMホールディングスやミップス・テクノロジーズは、彼らの特許を利用するにあたり、相当のライセンス料を課する。彼らはまた、設計の優位性や命令セットを記した文書を渡す前に秘密保持契約(NDA)を要求する。クローズドなISAおよびIPは改変を禁止されるケースが多く、性能向上を目的としたISAの改良や教育を目的としたISAの変更が妨げられていた。このような背景から、オープンかつフリーなISAには一定の需要があった。

RISC-V以前のオープンISAのほとんどはGNU General Public License(GPL)を使用し、ユーザーにコピーや利用するにあたって実装をオープンにするようにさせていた。RISC-Vでは自由に利用可能なCPUデザインをBSDライセンス下で提供することを目指している。BSDライセンスであれば、RISC-Vチップの設計や派生成果物の作成は、RISC-V自身と同様にオープンかつ自由にも、あるいは クローズドで独占的にもできる。

実用可能かつシンプルなISA プロジェクトの主張によれば、命令セットの設計では新しい設計原理が現れることはほとんどなく、過去40年間で最も成功した設計はますます似通ってきている。失敗した設計のほとんどは、出資した企業が商業的に失敗したのであり、命令セットが技術的に劣っていたからではない。よって、よく設計されたオープンな命令セットが十分に確立された設計原理を用いて設計されたならば、多くのベンダーが長期間に渡ってサポートする気になるだろう。

他の学術目的の設計とは異なり、RISC-V命令セットは、研究内容の説明のための簡略化に向けて最適化するのではなく、実用的なコンピュータに向けて最適化した簡略化にすると宣言されている。この簡略化はコンピュータの速度向上を目的とするが、コストや電力使用量も削減される。この命令セットに含まれるものは、ロード/ストア アーキテクチャ、CPU内部のマルチプレクサを単純化するビット・パターン、簡略化された標準に基づいた浮動小数点数、アーキテクチャに中立な設計、および、最上位の符号ビットを固定にすることで得られる符号拡張の高速化である。符号拡張は、しばしば、クリティカル・タイミング・パスになると言われている。

命令セットは3種類のワード幅 命令セットは、幅広い層のユーザー向けに設計されている。32-、64-、128-ビットの3つのワード幅、様々なサブセットをサポートする。各サブセットの定義は、3つワード幅間で、わずかに変化する。サブセットは、小さな組み込みシステム、パーソナルコンピュータ、ベクタプロセッサを持つスーパーコンピュータ、および、ウェアハウス・スケールのラック・マウント型並列計算マシンをサポートする。

命令セットは可変長幅 命令セットは、可変長幅で、拡張可能であるため、より多くのエンコード・ビットが追加可能である。ISAには128ビットまで拡張されたバージョンまで予約されている。これは、過去60年の業界の歴史の中で、過去の命令セットでメモリアドレス空間が不足していたことが原因で、取り返しのつかない失敗が起きたことを反映している。2016年現在、128-ビットのISAは、その巨大なメモリシステムに関する知見がほとんどないために、意図的に未定義にされている。

教育上も有効 RISC-Vのシンプルさは教育上有効でもある。整数命令のサブセットは単純であるため、学生が初歩的な練習をすることができ、整数命令サブセットはシンプルなISAであるため、ソフトウェアによる研究用マシンの制御にも利用できる。可変長のISAは、学生の練習と研究のための拡張を可能にする。別定義の特権命令セットを用いれば、OSの研究を、コンパイラを再設計せずにサポートできる。RISC-Vのオープンな知的財産によって、設計を公開したり、再利用したり、修正が可能になる。

歴史 先行開発 「RISC」という用語は1980年頃に作られた。それ以前は、よりシンプルな設計のコンピュータは効率的な可能性があるといういくつかの知見は存在したが、そのような設計指針はまだ広まってはいなかった。単純で効率的なコンピュータは、常に学術的な関心にとどまっていた。

研究者は、RISC命令セットのDLXを、1990年に初版の『コンピュータ・アーキテクチャ 設計・実現・評価の定量的アプローチ』のために作成した。著者のデイビッド・パターソンは、後にRISC-Vを支援した。しかし、DLXは教育目的用だったため、研究者やホビーストはDLXをFPGAを使って実装したが、商業的には成功しなかった。

ARM CPUのバージョン2とその前は、パブリックドメインの命令セットであり、現在もまだGNUコンパイラコレクションによってサポートされている。このISA向けに、3つのオープンソースのコアが存在するが、もはや製造されていない。

OpenRISCは、DLXをベースとしたオープンソースのISAであり、RISCの実装の1つである。OpenRISCはGCCとLinuxの実装を完全にサポートしているが、商業的な実装は少ない。

RISC-Vという名称は、カリフォルニア大学バークレー校が発表したRISC ISAの5番目のメジャー・バージョンであることを表している。RISC-Vの前の4つのバージョンは、それぞれRISC-I、RISC-II、SOAR、およびSPURである。

RISC-V財団とRISC-V International カリフォルニア大学バークレー校のクルステ・アサノヴィッチは、オープンソースのコンピュータシステムが広く普及している状況を認識していた。2010年、彼は「夏の3ヶ月の短期間プロジェクト」の中で、RISC-Vを開発、公開することを決意した。この計画は、研究者や企業のユーザーに役立つものだったため、バークレー校のデイビッド・パターソンも協力した。もともとパターソンは、バークレーRISCの特性を定めた人物であり、RISC-Vは、彼のRISC-Vの研究プロジェクトの長い経歴の一つである。初期の開発では、DARPAが財政支援を行っていた。

RISC-V財団は2015年に設立された。RISC-V財団をサポートしている組織としては、アドバンスト・マイクロ・デバイセズ、Andes Technology、BAEシステムズ、Berkeley Architecture Research、Bluespec, Inc.、Cortus、Google、GreenWaves Technologies、ヒューレット・パッカード・エンタープライズ、華為技術、IBM、Imperas Software、中国科学院、IIT Madras、ラティスセミコンダクター、Mellanox Technologies、Microsemi、マイクロンテクノロジー、NVIDIA、NXPセミコンダクターズ、オラクル、クアルコム、Cryptography Research、ウェスタン・デジタル、SiFiveなどがある。

2019年11月に、RISC-V財団は米国の貿易制限に対する懸念からスイスへの移転を表明し、2020年3月にはスイスの国際交流協会RISC-V Internationalが設立された。

RISC-V Internationalは、RISC-Vをソフトウェアおよびハードウェア設計に自由に利用できるようRISC-Vの仕様を公開している。仕様の策定はRISC-V Internationalの会員により行われる。さらに、会員組織は製品に対して「RISC-V Compatible™」ロゴの使用を許可される。

表彰 2017年、Linley Groupにより、ベスト・テクノロジー(命令セット)賞に選定された。

命令セット RISC-Vはモジュラーデザインを採用しており、基本仕様に必要に応じて拡張機能を加えることで構成される。これらISAは産業、研究、教育コミュニティが共同で開発を進めている。基本仕様は制御フロー、レジスタとそのサイズ、メモリとそのアドレシング、ロジック操作(整数演算等)等の命令とそのエンコーディングを定める。基本仕様のみでも基礎的な汎用コンピュータを実装可能であり、汎用コンパイラを含む完全なソフトウェアサポート環境を構築できる。

標準拡張 標準拡張はすべての標準化された基本機能と互換性を持ち、互いに競合することなく動作するように設計されている。

RV基本命令セットのどれか(I付きの物、つまり組み込み用途でないもの)とG拡張セットを組み合わせたRVG命令セットにスーパーバイザ拡張(S)を加えると、汎用オペレーティングシステムをサポートするために必須の命令をすべて定義できる。

+ 命令セット 名前 説明 バージョン 承認状況命令数 基本 弱メモリオーダリング 2.0 基本整数演算命令セット、 32-bit 2.1 40 基本整数演算命令セット(組み込み)、32-bit、16レジスタ 2.0 40 基本整数演算命令セット、 64-bit 2.1 52 基本整数演算命令セット(組み込み)、64-bit 2.0 52 基本整数演算命令セット、128-bit 1.7 64 拡張 整数乗算/除算標準拡張 2.0 8 ()13 () アトミック命令標準拡張 2.1 11 ()22 () 単精度浮動小数点数演算標準拡張 2.2 26 ()30 () 倍精度浮動小数点数演算標準拡張 2.2 26 ()32 () 制御レジスタ (Control and status register, CSR) 命令 2.0 6 命令フェッチフェンス 2.0 1 基本/拡張命令セットの組み合わせ IMAFD_Zicsr_Zifencei の省略記法 四倍精度浮動小数点数演算標準拡張 2.2 28 ()32 () 十進浮動小数点数演算標準拡張 0.0 圧縮命令標準拡張 2.0 40 ビット操作標準拡張 1.0 29 ()41 () 動的命令変換標準拡張 0.0 トランザクショナルメモリ標準拡張 0.0 Packed-SIMD命令標準拡張 0.9.10 ベクタ操作標準拡張 1.0 187 スカラ暗号処理標準拡張 1.0.1 49 ハイパーバイザ標準拡張 1.0 15 スーパーバイザレベル命令標準拡張 1.12 4 非アラインアトミック操作 0.1 一時停止ヒント命令 2.0 低時間的局所性ヒント 0.3 拡張浮動小数点命令 1.0 半精度浮動小数点数演算 1.0 半精度浮動小数点数操作の最小セット 1.0 整数レジスタの単精度浮動小数点数演算 1.0 整数レジスタの倍精度浮動小数点数演算 1.0 整数レジスタの半精度浮動小数点数演算 1.0 整数レジスタの半精度浮動小数点数操作の最小セット 1.0 M拡張の乗算サブセット 1.0 完全メモリストアオーダリング 1.0

+ 32-bit RISC-V 命令フォーマット Format Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 ストア(S-type) imm[11:5] rs2 rs1 funct3 imm[4:0] opcode 分岐(B-type) imm[10:5] imm[4:1] 2レジスタ入力(R-type) funct7 rd 即値(I-type) imm[11:0] 上位ビット即値(U-type) imm[31:12] ジャンプ(J-type) imm[10:1] imm[19:12] opcode (7 bits): 6タイプの命令フォーマットのうち1つを指定し、命令を部分的に指定する。 ''funct7 (7 bits) / funct3 (3 bits): opcodeフィールドを拡張して実行する操作を指定する。 rs1 (5 bits) / rs2 (5 bits): 第1/第2オペランドレジスタ(ソースレジスタ)をインデックスにより指定する。 rd'' (5 bits): 計算結果を出力するディスティネーションレジスタをインデックスにより指定する。

実装する機能の組み合わせを表記するため、非特権命令セット仕様に規定された命名法が定義されている。まず基本命令セットがRISC-Vのコード、レジスタのビット幅、バリアントの組で示される(例: , )。それに続く文字で、拡張を上記の表の順番で指定する。各文字にはオプションとしてメジャーバージョンとマイナーバージョンを"p"で繋いだ番号を続けることができる。マイナーバージョンが示されない場合は0、バージョンが全く示されない場合は1.0とみなされる。したがってはやのように表記することもできる。のように、可読性のために拡張の間にアンダースコアを使用できる。

整数/浮動小数点数の基本/拡張計算とマルチコアコンピューティングにおける同期プリミティブは汎用コンピューティングに必須の要素として"G"という省略記法が設けられている。

組み込みシステム向け小型32-bitコンピュータはのようになり、64-bit大型コンピュータは (の略)のようになる。

拡張の数が増加するのに対応して、"Z"の後に名前を続ける記法とバージョン番号の記法が提供された。たとえばは命令フェッチ拡張である。やはともにバージョン2.0を表す。慣例により、Zの後に続く最初の文字はのうち最も近い拡張カテゴリを表すようになっている。つまり(非アラインアトミック命令)拡張は"A"標準拡張に関連している。1文字の拡張と異なり、Z拡張はアンダースコアで区切らなければならない。また、カテゴリ別にまとめ、カテゴリ内ではアルファベット順に並べなければならない。たとえば、のようになる。

スーパーバイザ特権レベルに関する拡張は"S"を、ハイパーバイザレベルに関するものは"H"を接頭辞として使い上述の命名規則に従う。マシンレベル拡張は"Zxm"という3文字の接頭辞が付く。スーパーバイザ、ハイパーバイザ、マシンレベル命令セット拡張はより権限レベルの低い拡張の後に配置する。

RISC-V開発者は非標準の命令セット拡張を作成することができる。この場合"X"を接頭辞として"Z"と同じ命名規則に従う。この拡張は全標準拡張の後に配置すべきであり、複数の非標準拡張がある場合はアルファベット順に並べるべきである。

プロファイルとプラットフォーム

標準的なISAの組み合わせを定めるプロファイルとプラットフォームは協議が進められている。

RISC-Vのモジュラー設計による柔軟性は、専用設計を高度に最適化するために有用である一方、ISAの組み合わせが実装により異なり、ソフトウェアがそのすべての組み合わせに対応しなければならない組み合わせ爆発を引き起こす要因ともなる。プロファイルは大多数のユーザーにとって価値の高い共通のISAの組み合わせの定義であり、これによりソフトウェア開発コミュニティのリソースを集中させる狙いがある。

プラットフォーム仕様はソフトウェアとハードウェアの間の相互運用性に関する要件を定めたものである。プラットフォームポリシーではプラットフォーム仕様において使われる各種用語の定義を定め、プラットフォーム仕様におけるスコープ、カバレッジ、命名規則、バージョン管理、構成、ライフサイクル、互換性に関する要求を提供している。

2026年4月時点でRISC-Vプロファイルとして RVA20、RVI20、RVA22, RVB23, RVA23 がバージョン1.0となっている。

実装 RISC-Vオーガニゼーションは、RISC-VのCPUとSoCの実装リストを管理している。

既存 既存の商用実装には以下のようなものがある。

Xuantie-910: 2019年7月発表、アリババグループ (T-Head) による。2.5GHz 16コア64ビット(RV64GCV)、アウトオブオーダー型。2021年10月、T-Headはこれを含む4プロセッサ (C910, C906, E906, E902) をオープンソース化した。 N25/NX25: 2017年リリース、RISC-V Internationalの創設メンバーであるAndes Technology Corporationによる CodasipとUltraSoCは、CodasipのRISC-VコアなどのIPとUltraSoCのデバッグ、最適化、アナリティクスを組み合わせたRISC-V組み込みSOC向けに完全にサポートされた知的財産を開発している。 GD32Vシリーズ: GigaDeviceによる。RV32IMAC実装。中国の電子企業Sipeed社が製造したLongan Nanoボードに採用。 GAP8: 2018年2月発表、GreenWaves Technologiesによる。32ビット1コントローラ+8個のコンピュートコア、32ビットSoC(RV32IMC)。GAPuino GAP8開発ボードは2018年5月に出荷を開始。 SCR1: Syntacoreによる。RV32I/E[MC] 実装。 UltraSOCは標準トレースシステムを提案し、実装を寄贈した。 SweRV Core: 2018年12月発表、Western Digitalによる。インオーダー2ウェイスーパースカラと9ステージのパイプライン設計を特徴とする。WDは、SweRVベースのプロセッサをフラッシュコントローラやSSDに採用する予定で、2019年1月にサードパーティ向けにオープンソースとして公開している。 ESP32-S2 ULPコプロセッサ: Espressifによる。

開発環境

IAR Systemsは、RV32 32ビットRISC-Vコアと拡張機能をサポートする「IAR Embedded Workbench for RISC-V」の最初のバージョンをリリースした。今後のリリースでは、64ビットのサポートとより小型のRV32Eベース命令セットのサポート、機能安全認証とセキュリティソリューションが含まれる予定。 SEGGERは、同社のデバッグ・プローブJ-Link、同社の統合開発環境Embedded Studio、RTOSのembOSと組み込みソフトウェアにRISC-Vコアのサポートを追加した。 FPGAコアのインスタントSoCRISC-Vコア。C++で定義されたRISC-Vコアを含むSystem On Chip。

開発会社

RISC-Vハードウェアの開発に特化して設立されたSiFiveは、2017年にリリースされたプロセッサモデルを持っている。これらには、Linuxなどの汎用OSを実行可能なクアッドコア、64ビット(RV64GC)のシステムオンチップ(SoC)が含まれている。 CloudBEARは、さまざまなアプリケーション向けに独自のRISC-Vコアを開発するプロセッサIP企業である。 SyntacoreはRISC-V Internationalの創設メンバーであり、最初の商用RISC-V IPベンダーの1社である。2015年からRISC-V IPファミリーの開発とライセンス供与を行っている。2018年現在、製品ラインにはオープンソースのSCR1を含む8つの32コアと64ビットコアが含まれている。2016年にはSyntacore IPをベースにした最初の商用SoCがデモされた。

開発中

ASTCは、組み込みIC用のRISC-V CPUを開発した。 Centre for Development of Advanced Computing, India(C-DAC)は、64ビットのアウトオブオーダーのクアッドコアRISC-Vプロセッサを開発している。 Cobham GaislerのNOEL-V 64ビット。 ケンブリッジ大学コンピューター研究所が、FreeBSDプロジェクトと共同で、そのオペレーティングシステムを64ビットRISC-Vに移植し、ハードウェア・ソフトウェア研究プラットフォームとして使用していると発表している。 Esperanto Technologiesは、RISC-Vベースの高性能コア「ET-Maxion」、エネルギー効率の高いコア「ET-Minion」、グラフィックスプロセッサ「ET-Graphics」の3つのプロセッサを開発していると発表した。 チューリッヒ工科大学とボローニャ大学は、エネルギー効率の高いIoTコンピューティングのための並列超低電力(PULP)プロジェクトの一環として、オープンソースのRISC-V PULPinoプロセッサを共同開発した。 European Processor Initiative(EPI)、RISC-V Accelerator Stream。 インド工科大学マドラス校は、IoT用の小型32ビットCPUから、RapidIOやHybrid Memory Cube技術をベースにしたサーバーファームなどの倉庫規模のコンピュータ向けに設計された大規模64ビットCPUまで、6つの用途に合わせて6つのRISC-VオープンソースCPU設計を開発している。 lowRISCは、64ビットのRISC-V ISAをベースにした完全オープンソースのハードウェアSoCを実装する非営利プロジェクトである。 Nvidiaは、GeForceグラフィックスカードのFalconプロセッサを置き換えるためにRISC-Vを使用する計画。 SiFiveは、同社初のRISC-Vアウトオブオーダー高性能CPUコア「U8シリーズプロセッサIP」を発表した。

オープンソース 以下のように多くのオープンソースのRISC-V CPUの設計(IP)がある。 +表. オープンソースRISC-V IP名称開発者ISA用途開発ツールリンクRocketスティーブンソンのロケットにちなんで命名バークレーRV64?小型/低消費電力の中間的コンピュータChiselBOOMバークレーRV64GC個人用、スパコン、倉庫規模ChiselSodor「きかんしゃトーマス」を題材にした童話に出てくる架空の列車の島に由来バークレーRV32?picorv32Claire WolfRV32IMCMCUVerilogscr1SyntacoreRV32IMCMCUVerilogPULPinoチューリヒ工科大学 / ボローニャ大学RV32IMC/RV32IMFCMCU・DSPカスタムmmRISC-1Munetomo MaruyamaRV32IM[A][F]CMCUVerilog

ソフトウェア 新しい命令セットの通常の問題は、CPU設計とソフトウェアの不足であり、この2つの問題はその使いやすさを制限し、採用を減少させる。RISC-Vのソフトウェアには、ツールチェーン、オペレーティングシステム、ミドルウェア[vague]、設計ソフトウェアなどがある。

新しい命令セットを作る際に一般的な問題点は、CPUの設計とソフトウェアが存在しないことである。

現在利用可能なRISC-Vソフトウェアのツールとしては以下が挙げられる:

GNU Compiler Collection(GCC)ツールチェーン(GDBおよびデバッカーを含む) LLVMツールチェーン simulator(およびRISC-V Fast Processor Modelsのライブラリ) Spike simulator QEMU内のシミュレータ