ちょっと古い論文だが、"Decoupled Vector Architectures"という論文を読んでいる。
https://ieeexplore.ieee.org/document/501193
次に性能について。Decoupled Vector Architectureと、リファレンス・アーキテクチャの性能を比較する。以下の図は、選択したプログラムのシミュレーション結果である。
IDEALは依存関係の全くない場合の、リソース制約のみを考慮した性能の最大値を示している。一方で、REFはリファレンス・アーキテクチャ、DVAはDecoupled Vector Architectureである。
- 命令キュー:16命令長
- スカラ・キュー:256スロット
- ベクトル・ロード・キュー (AVDQ) : 256スロット (APからVPへのデータ・転送キュー)
- ベクトル・ストア・キュー (VADQ):16スロット (VPからAPへのデータ・転送キュー)
これらの値は、キューの値を最大値に設定し高速化の限界の境界を求め、徐々にキューの大きさを縮めていって性能の変化を観測した。命令キューについては、シミュレーションの結果長さを16スロットに削減しても最終的な性能に影響がないことが示された。
- DVAアーキテクチャは、メモリレイテンシがわずかに1サイクルの場合でも、REFアーキテクチャよりも高速である。理由は、メモリシステムにレイテンシがなくても、デカップリングによりAPがどのデータをロードしなければならないかを知っているため、プリフェッチ技術と同様の効果をもたらす。
- REFアーキテクチャとDecoupled Vector Architectureが実行時間曲線の傾きが大幅に異なることである。デカップリングが長いメモリ遅延を許容することができることを示している。
ベクトル・キューについて、AVDQを256要素としたが、Figure.6のビジー・スロットの分布に基づいている。例えば、BDNAの場合、AVDQが完全に空であるのは4億サイクル以上であった。
すべてのベンチマークにおいて、ビジー・スロットは9エントリを超えることはない。また、ベクトル演算のループにおいて、ボトルネックとなるリソースはVPIQであり、16スロットに制限されていることからボトルネックになる。
次に、ベクトルストアからベクトルロードへのバイパスについて。ベクトルロード・ベクトルストアの間で、VADQとADVQの間でバイパスを行う可能性がある。これにより、ストアからロードへのペナルティを回避することができる。
このような状況が発生する可能性があるのは、1つはベクトル・レジスタのスピル・コードであると思われる。もう一つは、異なるイタレーションでのデータ間でのバイパスが発生する可能性があることである。
重要なポイントは、バイパスは適度な大きさのキューで有効であるということであり、すべてのプログラムにおいて、8スロットから16スロットのキューと同じ性能を達成することができている。