在 CPU 上初始化性能计数器监视器控制寄存器
Initializing Performance Counter Monitor control registers on a CPU
有谁知道哪个模块负责初始化 x86 上的性能计数器监视器 (PCM) 控制寄存器 CPU?它是由复位时的硬件完成的,还是由引导加载程序或其他内核模块完成的?
性能监视器计数器 (PMC) 不需要初始化,当软件要使用该功能时需要对其进行编程(或设置)。
CPU 重置后不会对 PMC 做任何事情,至少在架构上不可见(即对程序员可见)。
引导加载程序不处理此类事情。
它是一个处理 PMC 的内核模块,因为它们是模型特定寄存器 (MSR),只能通过特权指令(如 rdmsr
、wrmsr
)访问(即它们需要内核 space 中 运行 的代码)。
然后,内核模块可以通过 OS 接口或允许非特权代码执行指令 rdpmc
来向用户 space 程序公开功能(尽管它只允许读取已经预设计数器)。
要了解有关 PMC 的更多信息,请参阅 Intel Manual 3B, Chapter 18。
有谁知道哪个模块负责初始化 x86 上的性能计数器监视器 (PCM) 控制寄存器 CPU?它是由复位时的硬件完成的,还是由引导加载程序或其他内核模块完成的?
性能监视器计数器 (PMC) 不需要初始化,当软件要使用该功能时需要对其进行编程(或设置)。
CPU 重置后不会对 PMC 做任何事情,至少在架构上不可见(即对程序员可见)。
引导加载程序不处理此类事情。
它是一个处理 PMC 的内核模块,因为它们是模型特定寄存器 (MSR),只能通过特权指令(如 rdmsr
、wrmsr
)访问(即它们需要内核 space 中 运行 的代码)。
然后,内核模块可以通过 OS 接口或允许非特权代码执行指令 rdpmc
来向用户 space 程序公开功能(尽管它只允许读取已经预设计数器)。
要了解有关 PMC 的更多信息,请参阅 Intel Manual 3B, Chapter 18。