「A Pluggable Vector Unit for RISC-V Vector Extension」という論文を読んでみたのでそのメモ。 本当はRISC-Vベクトル実装の一例として内容を知っておきたかったのだが、あんまり詳細に説明がないうえに、いろいろと問題になるところを説明していないぞ?
- 評価
CVA6を拡張してベクトルを実装した。ベクトル命令にはスクラッチパッド・メモリを搭載している。
VLENの値を変えた場合の合成結果を表Iに示す。
VLEN | LUT | FF | max freq. (MHz) |
---|---|---|---|
0 | 39.5k | 21.7k | 112 |
128 | 72.4k | 27.8k | 100 |
256 | 94.8k | 31.2k | 84 |
512 | 136.5k | 37.9k | 75 |
まず、周波数に対してはベクトル拡張のベクトル長が周波数に与える影響は中程度(どういうこと?)
XTS-AES暗号を実装した場合、vrgatherei16.vvのような並べ替え命令が大量に必要となった。VLEN=256の場合は2.9倍、VLEN=512の場合は4.1倍の暗号化高速化を達成した。
- 考察
スカラコアとの緊密な結合が必要ないので、スカラコアへの影響を最小限に抑えることができる。 また、投機的な実行と正確なベクトル・トラップをサポートしている。 マイクロプログラム化されたSIMDパイプラインであるため、以前の研究[10]で観測されたクロスレーン演算を解決することを目的としている。
- 今後の課題
将来は、スカラ・ベクトルメモリアーキテクチャについても検討する。