RISC-V ISAは何を目指すのか
1つのISAですべての用途をカバーし、誰もが無料で使えるオープンなISAがあれば、このような問題は無い。このような考え方から、RISC-Vは作られた。
RISC-Vはカリフォルニア大学バークレイ校の研究を元に作られたライセンス不要、ロイヤリティ無しの高品質のISAである。そして、その仕様は非営利団体であるRISC-V Foundationが管理している。
そして、RISC-VのISAは、マイクロコントローラからスーパーコンピュータまでをカバーできるデザインになっている。
そのため、産業界や大学などで利用が始まっており、ソフトウェアのエコシステムができつつある。
万能ISAとしての、RISC-Vの目標は、以下のようになっている。
- 現状のソフトウェアスタックやプログラミング言語でうまく動く
- 仮想マシンではなく、ネイティブなハードウェアISA
- マイクロコントローラからスーパーコンピュータまですべてのサイズのプロセサに使える
- FPGA、ASIC、カスタム、さらに将来のテクノロジも含めて、すべての実装テクノロジに使える
- すべてのマイクロアーキテクチャスタイルで効率的なISA
- カスタムのアクセラレータのベースとして使える専用化が行えること
- 変わること無く、消え去ることの無い安定したISA
オープンなISAを作るという点では、Sun MicrosystemsがSPARC V8 ISAをオープンにして、IEEE 1754という規格にした。また、GNUがOpenRISCというアーキテクチャを提案したが、万能ISAの要件を満たさず、あまりサポートが得られなかった。
RISC-V ISAはどこが優れているのか
RISC-Vがこれらの提案と異なるのは、格段にISAが簡単でサイズが小さいという点にある。完全に新規のアーキテクチャで、ユーザモードと特権モードのISAが明確に分離されており、ISAとマイクロアーキテクチャもきれいに分離されている。
RISC-V ISAは、小さな基本ISAと、複数の標準拡張ISAという形でモジュラーに作られている。基本ISAは32bit長の命令であるが、拡張ISAでは命令長を可変として、非常に広い命令コード空間を使えるように作られている。
基本ISAと標準拡張ISAは、すでに決まっているものは、今後も変わらない。必要な機能追加は、他のISAで行われているように新しい版の仕様を作るのではなく、拡張ISAを追加することで行う。
そして、RISC-V仕様の検討は、少数のRISC-Vアーキテクトが決めるのではなく、産業界や学会のリーダーやソフトウェア開発者を含んだコミュニティで行われる。
RISC-Vの仕様は、「RV32E」、「RV32I」、「RV64I」、「RV128I」という4つの基本仕様と後述の6つの標準拡張で構成されている。RV32Iは32ビットアドレス空間、RV64Iは64ビットアドレス空間、RV128Iは128ビットアドレス空間のアーキテクチャである。Flashストレージを使うシステムのメモリ空間は遠くない将来に64ビットで表せる範囲を超えると予想されるので、128ビット空間の基本アーキテクチャを用意している。
RV32IなどのIの付くISAでは汎用レジスタは32個であるが、RV32Eはレジスタ個数を16個に減らした軽量ISAである。
そして、基本ISAでは50個以下のハードウェア命令しか定義されていない。他のISAと比較すると命令の種類が非常に少ない。しかし、OSを動かすことができる命令セットになっている。
標準拡張には、以下の6種がある。
- 整数の乗除算を行うM
- アトミックメモリアクセスを行うA
- 単精度浮動小数点数を扱えるF
- 倍精度浮動小数点数を扱えるD
- 基本とすべての標準拡張を含むG
- 4倍精度浮動小数点数を扱うQ
基本とこれらの標準拡張ISAは、32ビットの固定長命令で実現されている。
そして、これらの仕様は2014年に決められ、永遠にサポートされることになっており、これらの仕様が将来的に変わってしまったり、使えなくなってしまうことはない。
(次回は12月27日に掲載します)