【发布时间】:2016-12-04 16:26:05
【问题描述】:
有谁知道负责在 x86 CPU 上初始化性能计数器监视器 (PCM) 控制寄存器的模块是什么?它是由复位时的硬件完成的,还是由引导加载程序或其他内核模块完成的?
【问题讨论】:
标签: x86 operating-system cpu-architecture performancecounter
有谁知道负责在 x86 CPU 上初始化性能计数器监视器 (PCM) 控制寄存器的模块是什么?它是由复位时的硬件完成的,还是由引导加载程序或其他内核模块完成的?
【问题讨论】:
标签: x86 operating-system cpu-architecture performancecounter
性能监视器计数器 (PMC) 不需要初始化,当软件要使用该功能时,需要对其进行编程(或设置)。
复位后 CPU 不会对 PMC 做任何事情,至少在架构上不可见(即对程序员可见)。
引导加载程序不处理此类事情。
这是一个处理 PMC 的内核模块,因为它们是模型特定寄存器 (MSR),只能通过特权指令(例如 rdmsr、wrmsr)访问(即它们需要代码才能在其中运行)内核空间)。
然后,内核模块可以通过操作系统接口或允许指令rdpmc 由非特权代码执行(尽管它只允许读取已经预设的计数器)将功能公开给用户空间程序。
要了解有关 PMC 的更多信息,请参阅 Intel Manual 3B, Chapter 18。
【讨论】:
rdpmc 进行阅读。不过值得一提,谢谢!