5

一部のアーキテクチャには、実際に書き込む前にメモリ位置に書き込むことを CPU に示す「プリフェッチ書き込み」命令があります。マルチコア マシンでは、コアが指定されたキャッシュ ラインの所有権を取得して、後でより迅速にその場所に書き込むことができるようにするヒントとして、これを使用できることを理解しています。ただし、AFAICT は、2 つのコアがキャッシュ ラインをめぐって競合する可能性がある状況でのみ問題になるはずです。単一のコアによってのみ読み書きされるキャッシュ ラインの場合、プリフェッチ書き込みは何の役にも立ちませんか?

4

2 に答える 2

3

他のすべてが等しい場合、プリフェッチ書き込みは、単一のコアによってのみアクセスされる行のプリフェッチ読み取りよりも利点がありません。あらゆる種類のプリフェッチの後、コアは排他的状態でラインを所有します。その後の書き込みで、ラインはModified状態に変わります。Exclusive-to-Modified 遷移は、定義により他のコアにラインがないため自由です。E->M 状態の変更は、スヌーピングなしでローカルに完了します。

コアには独自のハードウェア プリフェッチ ロジックがあることに注意してください。行にアクセスすると、コアが隣接する行を自動的に取得する場合があります。グローバル変数またはその他のデータが近くにある場合、SMP システムで予期しないクロススヌーピングが多数発生する可能性があります。

于 2012-08-22T20:19:15.117 に答える
1

キャッシュラインがメモリ内になく、書き込みプリフェッチフラグが今から数サイクル必要になる場合に役立つと思います。書き込みのためにラインを解放するなどのハウスキーピングの雑用は、より邪魔にならない可能性があります. 確かに、これにより、キャッシュのラップに突然書き込みをアンロードした場合よりも、CPU がより速く書き込みを完了することができるはずですか?

それとも、何か基本的なことを見逃していますか?

于 2012-09-09T21:46:14.257 に答える