有谁知道哪个模块负责在x86 CPU上初始化性能计数器监视器(PCM)控制寄存器?它是由硬件在复位时完成还是由引导加载程序或其他内核模块完成的?
答案 0 :(得分:2)
性能监视器计数器(PMC)不需要初始化,需要在软件要使用该功能时进行编程(或设置)。
CPU在复位后不对PMC做任何事情,至少在架构上看不到任何东西(即程序员可见)。
引导加载程序不处理这些事情。
它是一个处理PMC的内核模块,因为它们是模型特定寄存器(MSR),只能通过特权指令(如rdmsr
,wrmsr
)访问(即它们需要代码在内核空间中运行)。
然后,内核模块可以通过OS接口向用户空间程序公开功能,或者允许指令rdpmc
由非特权代码执行(尽管它只允许读取已经预设的计数器)。
要详细了解PMC,请参阅Intel Manual 3B, Chapter 18。