L2キャッシュミスを計りたい その3
前回の続き。
RDMSR,WRMSR命令はRing0(Windowsでいうカーネルモード)でないと実行できません。
そこでWinRing0をいうライブラリを使わせてもらいます。
同じところにあるOlsMsrEditorでまず確認をしてみます。
PerfEvtSel0(0x186)に以下の設定をします。
- イネーブルカウンタ
- APIC割り込み(必要なのか不明)
- オペレーティングシステムモード
- ユーザーモード
- ユニットマスク(0xF0 = All Core, All Inclusive)
- イベント選択(0x24 = L2_LINES_IN.)
そしてWRMSRを実行します。
PerfCtr0(0xc1)に対してRDMSRを実行すると実行するたびに値が増えていきます。
なんらかの値は取れているもののこれが正しいかは不明。
さて、どうやって正しい値なのか確認しようか?