L2キャッシュミスを計りたい その2

前回の続き。
まずはCPUのマニュアルからおさらい。
Core2Duoに話を限定します。
Core2Duoのパフォーマンスカウンタは英語版の最新マニュアルにしか記述がなかったのでそっちをペラペラみてみると、取れるイベント数がPentium4から減ってます。
減っているというかPentiumProと同等に戻っているというか、P6系の改良アーキテクチャと言われる所以というか。
なので日本語版のPentiumProの項目をベースに取得方法を見ていきます。

まず取得したい項目の設定はPerfEvtSel0(0x186)とPerfEvtSel1(0x187)に行います。
結果値はPerfCtr0(0xc1),PerfCtr1(0xc2)に反映されます。
2項目しか同時にカウントできない、ということですね。
PerfEvtSelは以下のビットパターンを設定します。

「イベント選択」に指定できる項目がCPUのアーキテクチャで異なるため、汎用の指定はできません。
見たいカウンタの「イベント選択」「ユニットマスク」などを設定し、「イネーブル・カウンタ」に1をたてるとPerfCtrのカウントアップが始まるようです。

次回はデータの試し取りをするつもり。