プリフェッチ距離とプリフェッチの程度の違いは何ですか?
2 に答える
通常、プリフェッチはキャッシュ ライン全体を処理します。したがって、特定のプリフェッチ要求は、指定されたアドレスを保持するキャッシュ ラインを取り込みます。
メモリ速度には大きな違いがあるため、データをキャッシュに取り込むのに多くのサイクルがかかる場合があります。一部のレイテンシは、それ以上ではないにしても、数十サイクルです。現在、プリフェッチを実際に活用する唯一の方法は、マシンがデータをキャッシュにプルするのに十分な時間を確保できるように、データを実際に使用するよりもかなり前にプリフェッチを発行することです。これは、データアクセスが予測可能であることを意味するため、キャッシュに必要なメモリを予測できます。最も単純なケースは、線形アレイを行進することです。現在、一般的なシナリオ (「科学コード」) は、データを読み取って処理するループです。キャッシュ ミスのペナルティが高く、プロセッサが非常に高速である可能性があります。また、データがキャッシュに到着する前に、現在のキャッシュ ラインに対応する配列の処理を終了し、隣接するキャッシュ ラインのデータを待機している可能性があるため、単に次のキャッシュ ラインをプリフェッチするだけでは不十分な場合があります。そのため、次のキャッシュ ラインよりも遠くにフェッチする必要がある場合があります。
プリフェッチする距離は、たとえば 512 バイトです。プリフェッチの程度は、キャッシュ ラインに関する距離です。つまり、キャッシュ ラインが 256 バイトの場合、プリフェッチの程度は 2 です。
プリフェッチ度は、各トリガーでプリフェッチするキャッシュ ラインの数です。
プリフェッチ距離は、ループ内の配列からの概念です。D = ceil(l / s)、l はサイクル数で表した平均メモリ レイテンシ、s は最短実行パスのサイクル タイムです。D は、特定の配列要素の反復回数であるため、メモリ レイテンシがカバーされます。