TenstorrentのOcelotの実装について多少情報が出てきているようだ。
https://github.com/tenstorrent/riscv-ocelot/blob/ocelot/README-TT.md
RVVユニット自体はインオーダパイプラインであり、投機的実行はサポートしていない。BOOMでの実行をサポートするために、ベクトル命令は投機的状態が解消され、すべての分岐命令が解決するまで実行されない。
ベクトルロード・ストア命令は、各要素のメモリアクセスに分解されて実行される。
ベクトルロード命令はLDQエントリに格納される。
ベクトルストア命令はSTQエントリに格納される。各ベクトルストア命令はSTQエントリ割り当てられ、すべてのストアリクエストが実行され(コミット状態になった)時点で開放される。
現在の制約について
- 除算・逆数・平方根命令などはサポートしてない。1.
vdiv, vdivu, vfsqrt, vfsqrt7, vfrec7, vfdiv, vfrdiv, vremu, vrem
など - 整数演算ユニットはvxrm==0(round-to-nearest-up)モードしかサポートしていない
- ベクトル命令における例外はサポートしていない
- 順序付きセグメントロード・ストア命令は、セグメント方向での実行ではなく、通常の要素準のロード命令として実行される
うーん、かなり制約の大きい、あまり本気度の感じられない実装だ。たぶんこれは正式版ではないのだろう。