FPGA開発日記

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

TenstorrentのオープンソースRISC-Vベクトルプロセッサ実装Ocelotを試す (4. 内部構造について概観する)

github.com

TenstorrentのOcelotの実装について多少情報が出てきているようだ。

https://github.com/tenstorrent/riscv-ocelot/blob/ocelot/README-TT.md

RVVユニット自体はインオーダパイプラインであり、投機的実行はサポートしていない。BOOMでの実行をサポートするために、ベクトル命令は投機的状態が解消され、すべての分岐命令が解決するまで実行されない。

ベクトルロード・ストア命令は、各要素のメモリアクセスに分解されて実行される。

ベクトルロード命令はLDQエントリに格納される。

ベクトルストア命令はSTQエントリに格納される。各ベクトルストア命令はSTQエントリ割り当てられ、すべてのストアリクエストが実行され(コミット状態になった)時点で開放される。

現在の制約について

  1. 除算・逆数・平方根命令などはサポートしてない。1. vdiv, vdivu, vfsqrt, vfsqrt7, vfrec7, vfdiv, vfrdiv, vremu, vremなど
  2. 整数演算ユニットはvxrm==0(round-to-nearest-up)モードしかサポートしていない
  3. ベクトル命令における例外はサポートしていない
  4. 順序付きセグメントロード・ストア命令は、セグメント方向での実行ではなく、通常の要素準のロード命令として実行される

うーん、かなり制約の大きい、あまり本気度の感じられない実装だ。たぶんこれは正式版ではないのだろう。