2016-05-08 11 views
3

毎回(またはほぼ毎回)キャッシュL1にミスするようにプログラムを強制したいと思います。L1キャッシュミスへの強制

私のIvyBridgeは32 KB L1キャッシュを持ち、8ウェイです。したがって、すべてのセットには8行が含まれ、すべての行には64バイトが含まれます。設定するアドレス・マップの最初の6ビット、ライン内でオフセットする最後のビット・マップ、およびその他のビットがタグを決定します。

キャッシュを見逃す方法は?私は同じセットから8(すべてのセットには8ライン)異なるロード操作を使用する必要がありますか?

+1

これは明らかではありません。キャッシュミスを起こす最も簡単な方法は、キャッシュに現在存在しないアドレスをロードすることです。 –

+0

ところで、L1キャッシュラインは64バイトです。 –

+3

なぜあなたはそれをしようとしていますか?あなたは何を達成しようとしていますか? –

答えて

4

ええ、あなたは正しい方向です。同じセット内にあるすべてのアドレスを使用すると、最小の異なるアドレスでL1キャッシュミスをテストできます。

しかし、8つの異なるアドレスは、明らかに1セットに収まるので十分ではありません。最善の方法は、LRUの追い出しアルゴリズムに戻ってくる前に、行を追い出す機会を十分に取るために、それを2倍または4倍にすることです。

あまりにも多くのページであまりにも多くの異なるアドレスを使用すると、TLBミスに注意してください。 2MBのhugeページがここで助けます。

関連する問題