x86 CPUのパフォーマンスカウンタモニタ(PCM)制御レジスタを初期化するのは、それはリセット時にハードウェアによって行われるのでしょうか、それともブートローダーや他のカーネルモジュールによって行われますか?パフォーマンスカウンタの初期化CPUのモニタ制御レジスタ
0
A
答えて
2
パフォーマンスモニタカウンタ(PMC)は、初期化する必要はありません。ソフトウェアが機能を使用する場合は、PMCをプログラム(または設定)する必要があります。
CPUはリセット後、少なくともアーキテクチャ上は何も表示されません(プログラマが見ることができます)。
このようなことは、ブートローダは処理しません。
彼らは命令のみ(のようなrdmsr
、wrmsr
)でアクセスできるモデル固有レジスタ(MSRを)しているので、それは(すなわち、それらはカーネル空間で実行するためのコードが必要)特権であることのPMCをhandleaカーネルモジュールであります。 カーネルモジュールは、OSインターフェイスを介して、または命令rdpmc
が特権のないコードによって実行されるようにすることで、機能をユーザー空間プログラムに公開することができます。
PMCの詳細については、Intel Manual 3B, Chapter 18を参照してください。
関連する問題
- 1. モニタ制御プロパティ
- 2. ARM - ドメインアクセス制御レジスタ
- 3. MXCSR制御レジスタの範囲は?
- 4. LLVM IRによるx86レジスタの制御?
- 5. 外部クラスを制御/初期化する[AS3]
- 6. CPUレジスタのサイズ
- 7. 制御の転送は以下の初期化をバイパスします。
- 8. CPUレジスタとマルチタスク
- 9. ベクトルのレジスタを初期化するには?
- 10. C++ CPUレジスタの使用
- 11. d3.jsフォースレイアウトの初期アニメーションを制御する
- 12. handstontablesオートコンプリートエディターの初期値を制御できますか?
- 13. デフォルト初期化と値の初期化
- 14. 初期化子の初期化子
- 15. すべてのコアに制御レジスタを設定
- 16. メモリーマップドI/O:制御レジスタI/O空間内のメモリ空間が
- 17. キャッシュの有効期限の制御
- 18. PythonでのCPU使用率とスレッディングの制御
- 19. アクセス制御 - 最大有効期限とキャッシュ制御
- 20. 遅延初期化と初期化
- 21. perf-report CPUレジスタの値を表示
- 22. AngularJSカスタムフォームでの制御の有効化
- 23. 制御の上でのPrologグループ化
- 24. Springブートユニットの初期化前の@Configurationの初期化
- 25. C++ 11の値の初期化子とリストの初期化子
- 26. ユーザーフォームクラスの初期化
- 27. Arraylistの初期化
- 28. GridSearchCVの初期化
- 29. リストオブジェクトの初期化
- 30. QByteArrayの初期化
IIRCの場合、カーネルはperfカウンタへの直接のユーザー空間アクセスを可能にすることができます。 (すなわち、[RDPMC命令](http://www.felixcloutier.com/x86/RDPMC.html)がユーザー空間で動作するように設定する) –
@PeterCordes私が間違っていない場合、ユーザー空間プログラムは読むために 'rdpmc'を使います。しかし、それは言及する価値がある、ありがとう! –
私はRDPMCを手作業で使用していませんが、実際のカウンターを読むためだけだと思います。あなたが数えたいものを選択するには、あなたはWRMSRが必要だと思います。それでも、非常に低いオーバーヘッド測定には十分であり、RDTSCよりも低い。 (また、ウォールクロックのリファレンスサイクルではなく、コアクロックサイクルをカウントすることができます)。 –