32 nm Intel Westmere プロセッサで Linux を実行しています。パフォーマンス カウンターからの DTLB ミス数に関する一見矛盾するデータに懸念があります。次のように、ランダム メモリ アクセス テスト プログラム (シングル スレッド) を使用して 2 つの実験を実行しました。
実験 (1): 次のパフォーマンス カウンターを使用して DTLB ミスをカウントしました
DTLB_MISSES.WALK_COMPLETED ((Event 49H, Umask 02H)
実験 (2): 以下の 2 つのカウンター値を合計して、DTLB ミスをカウントしました。
MEM_LOAD_RETIRED.DTLB_MISS (Event CBH, Umask 80H)
MEM_STORE_RETIRED.DTLB_MISS (Event 0CH, Umask 01H)
これらの実験の結果は似ていると予想しました。しかし、実験 (1) で報告された数は、実験 (2) のほぼ 2 倍であることがわかりました。どうしてこうなったのか途方に暮れています。
誰かがこの明らかな不一致に光を当てるのを助けることができますか?