RISC-Vの仕様において、20210922でいくつかの新規拡張命令がPublic Reviewになっている。 これらの命令について、存在は知っていたし概要は知っていたのだけれども、そろそろマニュアルを眺めてどういうものなのか確認することにした。
- Zfh : 半精度浮動小数点命令
既存のRISC-Vの仕様には単精度、倍精度の浮動小数点命令は入っていたものの、半精度は入っていなかった。Zfhは半精度浮動小数点命令をサポートする。 サポートしている範囲は単精度、倍精度と変わらない。ロード・ストア、加減算、乗算除算、データ型変換命令など。
- Zfhmin : 最小半精度浮動小数点命令
これはまだドラフト仕様ではあるが、最小機能の半精度命令をサポートする。Zfhminは半精度対応のロード・ストア命令に加え、レジスタ間移動、他の精度の浮動小数点への変換のみをサポートする。 この目的は、データを半精度で格納するだけで内部処理する場合は単精度・倍精度に展開する、という「メモリの節約」的な意味があるのだと思う。
4種類の拡張命令は、それぞれ
- F: 単精度浮動小数点の整数レジスタ使用バージョン
- D: 倍精度浮動小数点の整数レジスタ使用バージョン
- Zfh: 半精度浮動小数点の整数レジスタ使用バージョン
- Zfhmin: 半精度浮動小数点(最小版)の整数レジスタ使用バージョン
にそれぞれ相当する。これらは専用の浮動小数点レジスタを持たずに、演算のオペランドと結果を整数レジスタから取り出す。これらは整数・浮動小数点レジスタ移動命令とロードストア命令を除いて通常の浮動小数点命令と同じものがサポートされる。