2008/12/14

Intel CPU: Fixed Performance Counter (FPC)

Fixed Performance Counter(FPC) // 勝手な命名
は固定のパフォーマンスイベントをカウントするMSR.
最大で3つで,CPUがいくつサポートしているかは,以前のエントリ
パフォーマンスカウンタの情報を表示
の "Number of fixed-function PCs" で得られる.

以下FPCの詳細.

[IA32_FIXED_CTR0(MSR_PERF_FIXED_CTR0)]
Register Address: 0x309
Performance Event: Inst_Retired.Any
実行した命令数をカウントする.

[IA32_FIXED_CTR1(MSR_PERF_FIXED_CTR1)]
Register Address: 0x30A
Performance Event: CPU_CLK_Unhalted.Core
CPUがHalt状態でない時のCPUサイクル数をカウントする.

[IA32_FIXED_CTR2(MSR_PERF_FIXED_CTR2)]
Register Address: 0x30B
Performance Event: CPU_CLK_Unhalted.Ref
CPUがHalt状態でない時のバスクロック数をカウントする.


【使用時の注意】
FPCはデフォルトではdisableになっている.
enableにするには,FPCの動作をコントロールするMSRである
IA32_FIXED_CTR_CTL(MSR_PERF_FIXED_CTR_CTL)
Register Address: 0x3BD
の値を変更する必要がある.
IA32_FIXED_CTR_CTLは,3つのFPCのenable/disableの設定を行う.


[bit fields]
0-4: IA32_FIXED_CTR0の設定
0: EN0_OS(CPL=0の時にenable)
1: EN0_Usr(CPL>0の時にenable)
2: Reserved
3: EN0_PMI(カウンタがオーバーフローした時にPMIを発生)
4-7: IA32_FIXED_CTR1の設定,0-3と同様
8-11: IA32_FIXED_CTR2の設定,0-3と同様


[Reference]
IntelR 64 and IA-32 Architectures Software Developer’s Manual Volume 3B: APPENDIX B
MODEL-SPECIFIC REGISTERS (MSRS)

0 件のコメント: