RISC-Vの命名コードの活用

RISC-Vの命令セットアーキテクチャ(ISA)は、ユニークな機会を提供します。その構造により、開発者は、今までにないソフトウェアの互換性を提供するさまざまなサイズと性能のプロセッサを使用することができるようになります。この互換性を活用するには、RISC-Vコアの命名コードを理解することが重要です。

多くのプロセッサアーキテクチャとは異なり、RISC-Vはオープンソースであり、ライセンス料やロイヤリティを支払うことなく利用できます。また、ISAは柔軟に設計されているため、開発者は実装したい命令ブロックを選択し、不要なものを省き、必要に応じてカスタム命令を追加することができます。目的は、共通の基盤を持ちサイズや性能特性が異なる複数のプロセッサコアの開発を促進することです。

この共通の基盤により、機能セットの違いに関わらず、プロセッサ間で高レベルのソフトウェア互換性が提供されます。たとえば、整数命令セットのみを実装する最小のRISC-Vプロセッサのコードは、整数と浮動小数点の両方の機能を持つより強力なプロセッサ上では変更されずに実行されます。浮動小数点命令を使用するコードは、もちろん整数のみのマシンでは動作しませんが、プロセッサをクラッシュさせることもありません。実装されていない命令は、不正な命令トラップを生成するだけです。

RISC-V ISAは、重複しないマシンコードを持つ本質的に独立したグループに命令を分割することで、この柔軟性を実現します。これらの命令群は「標準拡張」と呼ばれ、ISAは開発者が必要とするほとんどの機能を提供する数多くの標準拡張を定義しています。それぞれの標準拡張は、文字コードで識別されます。たとえば、「M」標準拡張は、レジスタに保持されている2つの整数の乗算や除算を行う命令を提供します。同様に、「F」標準拡張は、単精度浮動小数点演算のための命令を提供します。

プロセッサの開発者は、RISC-Vコアを実装する際に標準拡張を組み合わせることができるため、ユーザーは設計を意図しているプロセッサの実際の性能を判断するために、仕様書やプログラミングマニュアルを注意深く読む必要があると思われるかもしれません。しかし、もっと簡単な解決策があります。RISC-Vでは、コアの機能がユーザーに一目でわかるように、コアの番号付け規則を使用しています。

番号付け規則は、基本仕様から始まります。RISC-Vでは、以下4つの基本仕様を定義しています。

  • RV32Iは、32ビットの整数命令セットを持ち、32個の汎用レジスタを備えています
  • RV32Eは、組み込みアプリケーションを対象とした32ビットの命令セットを使用し、16個のレジスタを備えています
  • RV64Iは、64ビットの整数命令セットを持ち、32個のレジスタを備えています
  • RV128Iは、128ビットの整数命令セットを持ち、32個のレジスタを備えています

これらの基本仕様は、ベアボーンであっても完全に機能するプロセッサを定義しています。しかし、ほとんどの開発者は、1つ以上の標準命令セット拡張を設計に追加することを選択するでしょう。これらの標準拡張とその識別文字を図1に示します。

図1:RISC-Vプロセッサの標準命令セット拡張は、コアの番号付け規則で文字コードを使用してその存在を示しています。(画像提供:DigiKey)

図1に示すように、完全なRISC-Vコアの名称は、基本仕様と実装する標準拡張の文字を加えたものです。最小限のリソースを使用する小型のSoCは、「RV32EMAB」という名称になります。これは、コアが組み込みデバイス向けの32ビット整数命令セットを実装し、16個のレジスタを備え、整数の乗算と除算、およびアトミック命令を実行することを意味しています。浮動小数点演算はありませんが、ビット操作をサポートしています。

このように、設計においてRISC-Vチップを選択する際、ユーザーはコアの名称を見るだけで、どんな機能が提供されるかを理解できます。たとえば、SparkFun ElectronicsDEV-15799 FE310 Thing Plus RISC-V評価ボードに搭載されているプロセッサは、RV32IMACコアと記載されています(図2)。

図2:DEV-15799ボードのRISC-Vプロセッサは「RV32IMAC」と名付けられています。これは、32ビット整数命令セット、32個のレジスタ、アトミック命令などの機能を備えていることを意味します。(画像提供: SparkFun Electronics)

つまり、このプロセッサは、32ビットの整数命令セットと32個のレジスタを備え、整数の乗算と除算を実装し、アトミック命令およびコードスペースを最小化する圧縮(16ビット)命令をサポートしています。このボードで開発されたコードは、積和(MAC)標準拡張を備えた他のRV32Iコアでも実行可能です。

別の例として、Seeed Technology114991684 Sipeed MAXIX-I RISC-V SoCモジュールでは、RISC-VコアがRV64IMAFDCと記載されています。このモジュールは、64ビットの命令セットを持ち、整数の乗除算、アトミック命令、単/倍精度浮動小数点、および圧縮命令を備えています。このプロセッサ用に開発されたコードは、同じコア名称のRISC-Vプロセッサであれば実行可能です。ただし、ペリフェラルなどのメモリマッピングを調整する必要があります。

まとめ

RISC-Vの命名コードを活用することで、ユーザーは自信を持ってこの強力なアーキテクチャによる実験を始めることができます。コアコードを一致させることで、ユーザーは特定のプロセッサで行ったプログラミングを他のRISC-Vプロセッサへ間違いなく移植できるのです。

この実験を開始する前に、さまざまなRISC-V評価ボードの初期設定と使用方法を説明したRISC-Vガイドを確認してください。

著者について

Image of Richard A. Quinnell

Richard Quinnell氏は、エンジニアおよびライターとして45年の長きにわたり活動を続けており、さまざまな出版物でマイクロコントローラ、組み込みシステム、通信などのテーマを扱っています。技術ジャーナリストになる前は、ジョンズホプキンス大学の応用物理学研究所(JHU/APL)などで企業向けの組み込みシステム設計者およびエンジニアリングプロジェクトマネージャーとして10年以上を過ごしました。氏は電気工学と応用物理学の学位を取得しています。また、大学院では通信、コンピューター設計、量子エレクトロニクスを研究しました。

More posts by Richard A. Quinnell(リチャード・A・クィネル)氏
 TechForum

Have questions or comments? Continue the conversation on TechForum, Digi-Key's online community and technical resource.

Visit TechForum