ちょっと諸事情で、Spatial Memory Streamingの論文を読んでいる。
https://ieeexplore.ieee.org/document/1635957
あまり時間をかけて読みたくなかったので、概要を理解するためにChatGPTにお願いした。以下はほとんどChatGPTで生成されたもの:
空間的メモリストリーミング (Spatial Memory Streaming, SMS)
- SMSは、キャッシュブロックを超えたデータ間の空間的関係を利用して、科学的および商業的なサーバーアプリケーションのパフォーマンスを向上させる。
- システム設計者はキャッシュブロックのサイズを選択する際に、空間的局所性、転送遅延、キャッシュの使用率、帯域幅の使用率、偽共有などの要因を考慮する必要がある。
- 一般的なデータ構造には、ストライドプリフェッチングなどのシンプルなプリフェッチング手法を用いて空間的関係を利用することができる。
- しかし、商業アプリケーションには、シンプルなプリフェッチングやストリーミング手法に適していない複雑なアクセスパターンが存在する。それでも、これらのアプリケーションのデータ構造はキャッシュブロック間の空間的関係を頻繁に示す。
- SMSは、ランタイムで空間的に相関するアクセスパターンを抽出し、これらのパターンを使用して未来のアクセスを予測する。SMSは、利用可能なリソースと帯域幅に応じて、予測されたキャッシュブロックをプロセッサの主キャッシュに迅速にストリームすることで、メモリレベルの並列性を向上させ、下位レベルのキャッシュとチップ外アクセスの遅延を隠蔽する。
- 空間的パターンとジェネレーションの概念を導入し、キャッシュ内でのアクセスのレイアウトを捉える。
- ジェネレーションの定義は、予測されたブロックが使用される前にキャッシュから追い出されたり無効化されたりしないように、必要なブロックが同時にキャッシュ内に存在していたことを確認するためのものである。
- SMSは、トリガーアクセス時に、空間的に相関するブロックの部分集合を予測する。このため、SMSにとってのキーとなる問題は、再帰的な空間パターンに強く相関する予測インデックスを見つけることである。
- アドレスとプログラムカウンタを組み合わせてインデックスを作成することで、データ構造の異なる走査に対して異なるパターンを生成する。
- PC+offset インデックスは、ストレージ要件を大幅に削減するだけでなく、冷却ミスを排除できるため、アドレスベースのインデックスよりも基本的に強力である。
空間メモリストリーミングの設計
- 背景
- 既存の提案と異なり、マルチプロセッサ環境の高性能商用サーバアプリケーションを対象としている。
- 伝統的なキャッシュ階層との統合を目指して、SMS (Spatial Memory Streaming) を設計した。
- 主要コンポーネント
- Active Generation Table (AGT): プロセッサが空間領域にアクセスする際の空間パターンを記録し、予測をトレーニングする。
- Pattern History Table (PHT): 以前に観察された空間パターンを保存し、各空間領域の生成の開始時に未来のアクセスパターンを予測するためにアクセスされる。
- 空間パターンの観察
- SMSは、AGTで空間領域の生成の間にアクセスされるブロックを記録することで空間パターンを学習する。
- AGTは論理的には一つのテーブルだが、サイズを削減するために2つのCAM、Accumulation Table, Filter Tableとして実装されている。
- 空間パターンの予測
- PHT(Pattern History Table)は空間パターンの長期保存と次の空間領域生成時のブロックアクセスの予測に使用される。
- PHTはキャッシュに似たセットアソシアティブ構造として組織され、予測インデックスを使用してアクセスされる。