ベクトル・メモリ・アクセスの関係で、以下の論文が気になったので読んでみることにした:
https://ieeexplore.ieee.org/document/10818118
前回の投稿はこちら:msyksphinz.hatenablog.com
3. ChameSCアーキテクチャ
A. マイクロアーキテクチャの概要
- 図7に、ChameSCのマイクロ・アーキテクチャを示している。プリフェッチ・コントローラおよびプロアクティブキャっっしゅとして使用できるL1キャッシュが必要である。
- ノーマルモードとプリフェッチ・メードを持っている。プリフェッチ・モードではベクトルエンジンからのデータリクエストプリフェッチを生成する。データはプロアクティブキャッシュとして活用する。
- Precise Preetcherはベクトル・メモリ・キューにアクセスしVector Load Instructionをデコードし、ベースアドレス・ストライド・インデックスなどの基本的な情報を抽出し、あらかじめメモリ・リクエストを発行しておく。
- プロアクティブ・キャッシュを導入し、ベクトルエンジンは同時にアクセスする。ChameSCのベクトル・メモリ・アクセスはプロアクティブ・キャッシュから見つけ出すことができる。

B. プリフェッチ・コントローラの設計
- プリフェッチ・コントローラはVMQから情報を抽出し、メモリ・リクエストを発生させる。
- アドレス変換のためにロード・キューに入れるというのはどういうことだ。

- Address Packing Unitによって、スカラ・ベクトル・レジスタの値を読み込んでベクトルメモリ・アクセスを読み込む。
- ベクトル・プリフェッチのビットがLQについている場合は、通常のリクエストよりも優先度が低く対応される。
C. プロアクティブ・キャッシュの設計
- ChameSCはL1キャッシュをプロアクティブ・キャッシュとして使用する。ベクトル・メモリ・ユニットはL1キャッシュとプロアクティブ・キャッシュの両方にアクセスする。
- これはL1キャッシュとプロアクティブ・キャッシュを綿密に連携させないと実装が難しいのでは?
- プロアクティブ・キャッシュ内のMSHRがLSUとベクトル・プリフェッチの関係性を制御する。
D. ベクトル・メモリ・キュー
- ベクトル命令は、VAQもしくはVMQに発行される。ストライド・ロード命令の場合は命令とスカラ・レジスタの情報をベクトル・エンジンに渡す。
- プリフェッチ・コントローラはベクトル命令をVMQ内でプローブすることから始まる。プローブウィンドウサイズが1の場合はコントローラはプリフェッチ実行後もその場所を維持し、新しい命令を待つ。
- プリフェッチ・コントローラはベクトル命令をVMQに返し、プリフェッチに使用する。
E. ノーマル・プリフェッチ・モード
F. ハードウェア・コスト
- プリフェッチ・コントローラは2つのスカラレジスタおよび512ビットベクトルレジスタを導入する。
- トータルでChameSCの導入コストは最小である。
- プロアクティブ・キャッシュは?