RISC-V ISAは何を目指すのか

1つのISAですべての用途をカバーし、誰もが無料で使えるオープンなISAがあれば、このような問題は無い。このような考え方から、RISC-Vは作られた。

RISC-Vはカリフォルニア大学バークレイ校の研究を元に作られたライセンス不要、ロイヤリティ無しの高品質のISAである。そして、その仕様は非営利団体であるRISC-V Foundationが管理している。

そして、RISC-VのISAは、マイクロコントローラからスーパーコンピュータまでをカバーできるデザインになっている。

そのため、産業界や大学などで利用が始まっており、ソフトウェアのエコシステムができつつある。

  • RISC-VはUC Berkeleyの研究をベースに開発されたライセンスやロイヤリティのない、高品質のRISC ISAである。そして、この仕様はRISC-V Foundationが管理する

    RISC-VはUC Berkeleyの研究をベースに開発されたライセンスやロイヤリティのない、高品質のRISC ISAである。そして、この仕様はRISC-V Foundationが管理する。RISC-VのISAは、マイクロコントローラからスーパーコンピュータまで、広い範囲の用途をカバーする設計になっている

万能ISAとしての、RISC-Vの目標は、以下のようになっている。

  • 現状のソフトウェアスタックやプログラミング言語でうまく動く
  • 仮想マシンではなく、ネイティブなハードウェアISA
  • マイクロコントローラからスーパーコンピュータまですべてのサイズのプロセサに使える
  • FPGA、ASIC、カスタム、さらに将来のテクノロジも含めて、すべての実装テクノロジに使える
  • すべてのマイクロアーキテクチャスタイルで効率的なISA
  • カスタムのアクセラレータのベースとして使える専用化が行えること
  • 変わること無く、消え去ることの無い安定したISA
  • 万能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アーキテクトが決めるのではなく、産業界や学会のリーダーやソフトウェア開発者を含んだコミュニティで行われる。

  • これまでのISAとRISC-V ISAは何が違うのか。しがらみのない完全な新設計のISAでモジュラーな設計である

    これまでのISAとRISC-V ISAは何が違うのか。しがらみのない完全な新設計のISAでモジュラーな設計である。機能拡張は改版ではなく、オプション拡張ISAの追加で行うので既存のものには変更はなく、安定している

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年に決められ、永遠にサポートされることになっており、これらの仕様が将来的に変わってしまったり、使えなくなってしまうことはない。

  • RISC-Vの仕様は、4つの基本ISAと6種の標準拡張ISAで構成されている

    RISC-Vの仕様は、4つの基本ISAと6種の標準拡張ISAで構成されている。これらの仕様は変更されることはなく、永遠にサポートされる

(次回は12月27日に掲載します)