FPGA開発日記

カテゴリ別記事インデックス https://msyksphinz.github.io/github_pages , English Version https://fpgadevdiary.hatenadiary.com/

RISC-V 拡張命令の命名ポリシについて

RISC-Vの仕様書27章にある「ISA Extension Naming Convensations」が面白かったので纏めてみる。

  • RISC-Vの命名文字列(つまり、RV64IMAFDCやRV32IMCなど)は、大文字小文字を区別しない。
  • 標準拡張、つまり以下の拡張命令には表記の順序がある。以下の表において、上から下に文字列を並べる必要がある。つまり、"RV64IMACV"は有効だが"RV64IMAVC"は無効となる。
f:id:msyksphinz:20210824004212p:plain
  • 拡張命令にはバージョン番号を付けることができる。実はRISC-Vバージョン1.0では、正式な名称を、以下のように表記する。
    • RV64I1p0M1p0A1p0F1p0D1p0
    • アルファベットの次にメジャーバージョン、pの次にマイナーバージョンを示す。メジャーバージョンを変更せずにマイナーバージョンのみを変更した場合、後方互換性を維持する必要がある。
  • アンダースコアを使って可読性を上げることができる。特に、Packed SIMDを示す"P"はマイナーバージョンの"p"と区別するために必ずアンダースコアを付ける。
  • "RV32I2p2" : 32ビットRISC-Vバージョン2.2
  • "RV32I2_p2" : 32ビットRISC-Vバージョン2とP拡張バージョン2.0
  • スーパーバイザレベル命令の拡張には"S"を接頭語とする。
  • ハイパーバイザレベル命令の拡張には"H"を接頭語とする。
  • マシンレベル命令セットの拡張には"Zxm"を接頭語とする。
  • 非標準の拡張には"X"を接頭語として付ける。例えばHwachaベクトルフェッチISAの拡張の場合には"Xhawacha2"とする。