RISC-Vのユーザレベル命令セットの改版Ver.2.1が公開された。
http://www.eecs.berkeley.edu/Pubs/TechRpts/2016/EECS-2016-118.pdf
- 64ビットよりも大きいデータを扱う命令において、RDフィールドが移動しないためのフォーマット変更
- CSR命令を整数命令の章および浮動小数点の章に導入し、カウンタレジスタおよび浮動小数点システムレジスタを追加
- SCALLとSBREAKはECALLとEBREAKに正式に命名変更(注: Priviledged Instructionではすでに変更済み)。
- 浮動小数点におけるNaN処理のについての分類
- 浮動小数点から整数への変換でオーバフローが発生したときの値の取り扱い方
- LR/SC命令が成功失敗の分類。
- RV32E命令(整数レジスタの本数を削減したもの)の提案
- Calling Conversationの改定
- ソフトフロートにおける緩いスタック操作の定義
- C compressed extensionの改定
Ver2.1と2.0の違いを、ざっと比較しながら確認してみる。
ECALL, ERETの正式な掲載
ECALL, EBREAK命令はシステムレジスタ系の命令としては定義されていたが、今回初めて整数命令として掲載された。
RV32E命令セット
あまり詳細は出ていなかったけれども、x0-x15の16本のレジスタを使用し、x16-x31を使用すると不正命令例外を発生させるらしい。
浮動小数点における非正規化数のサポート
正式にSubnormal(非正規化)数のサポートについて言及された。サブノーマル数についてはサポートする。
まだまだ細かいところはあるけれど、ざっと確認した限りではこんな感じ。