ベクトル・メモリ・アクセスの関係で、以下の論文が気になったので読んでみることにした:
https://ieeexplore.ieee.org/document/10818118
概要
- SIMD命令は幅広くデータ・アプリケーションで使用されているが、インダイレクト・アクセスやストライド・アクセスなどの複雑なメモリアクセスパタンはSIMDのベクトル・メモリ・ユニットを圧迫する
- ChameSCはスーパ・スカラ側のメモリ・アクセス・ユニットを使用してデータ・ぷリフェっちゃとして活用する。
- ChameSCのにより、34.3%の性能向上が達成できた。
1. Introduction
データ・レベル並列性の抽出は、プログラム高速化により重要となっている。
SIMDアーキテクチャ、特にスーパスからから分離されたでカップル・ベクトル・エンジンが有効である。
メモリの壁の問題はますます大きくなっている。
ChameSCでは、スーパースカラプロセッサのAGUとロード・ミス・キューは、ベクトル命令実行ちゅうにはアイドル状態であるということである。
スーパ・スカラのこれらのメモリユニットを、ベクトル・メモリ・アクセスのためのプリフェッチャとして活用する(ここでは、仮想化という言葉を使っている)
ベクトル・メモリ・ユニットのキューに入っているベクトルメモリ・リクエストを、厳密なベクトルアドレス生成に使用する。プロアクティブ・キャッシュとして活用する。
以下の後見がある
- データ並列のワークロードを実行中は、スーパスカラ側のメモリ・ユニットはしばしばアイドル状態になる
- ベクトル・メモリ・アクセスのうちストールしたものは、ベクトルエンジンにより実行可能であることを示す。
- ChameSCアーキテクチャを導入する、スーパ・スカラ・コアを精密なデータ・プリフェッチャおよびプロアクティブ・キャッシュとして活用する
- ChameSCはSIMD命令の大幅な性能向上を達成する。35.4%の性能向上を達成した。
2. 背景とモチベーション
A. 背景
- AVX-512 : 64B x 32 = 2KBのレジスタを提供する
- 巨大なベクトルレジスタをサポートする場合は、Decopledさせる
- Cray BlackWidow, Andes AX46MPV, Vitvius+
- 図7は典型的なSIMDアーキテクチャを示す。

- SIMDアーキテクチャは複雑なストライドアクセスやインデックス・アクセスをサポートする必要があり、非線形的なメモリアクセうを発生させるため、性能に影響を与える。
- IndexedメモリアくせすはSIMDあアーキテクチャにおけるメモリの壁に栄光を与える。ベクトル・メモリ・アクセスが要因となるストールは35.3%で、最大では95.4%に到達する。

- データ・プリフェッチの技術は、基本的にメモリアドレスをパタンによって予測するものであるが、複雑なメモリ・アクセスの場合には適用できない。IPCPやBertiのようなデータ・ぷリフェっちゃであっても、性能向上は限定的である。

B. モチベーション
- 本論文では、SIMDレーンがベクトル・メモリ・アクセスでストールした時に、スカラメモリユニット側ののメモリアクセスを使用する。
- 図3の例で説明する。
vle32はヒット率が高い。ぐるぐる回る。したがって、スーパスカラ側のメモリ・アクセス・ユニットはアイドル状態になりがちである。

- 図4はは、ベクトル・メモリ・アクセスが集中的に生じるユニットでは、60.2%のメモリユニットがアイドル状態である。

- Obzersation 1. データ並列アプリケーションの実行中は、スーパスからコア側のメモリアクセスユニットはアイドル状態になりがちである。
- 図5に示すように、ストライド・メモリ・アクセス命令の場合は24.4%のストール率だが、ストライドアクセスの場合は69.8%である。さらに、図6に示すように、インデックスメモリアクセスの場合は、95.4%の場合でレジスタがReady状態になっている。


- このような特徴から、ストールしたベクトルメモリ命令を高精度なデータ・プリフェっちゃとして活用できる。
- Observation: ストールを発生させるストライド命令は、キュー内でReadyになると、データ・プリフェッチに使用できる。