每个CPU内核处于C0电源状态的时间

本教程将介绍每个CPU内核处于C0电源状态的时间的处理方法,这篇教程是从别的地方看到的,然后加了一些国外程序员的疑问与解答,希望能对你有所帮助,好了,下面开始学习吧。

每个CPU内核处于C0电源状态的时间 教程 第1张

问题描述

如果有人帮我弄清楚怎么做到这一点,那就更好了:过去一秒内每个CPU核心处于C0电源状态的时间。

这是针对Mac应用程序的,因此需要使用Objective-C、Cocoa和C。

推荐答案

OS X没有任何公开cpuc状态的API。然而,您似乎可以使用英特尔CPU上的MWAIT/MONITOR指令来实现这一点。英特尔在参考手册的第14.4节中提到,您可以使用此技术跟踪C状态驻留情况:

软件应使用CPUID来发现目标处理器是否支持MWAIT扩展的枚举。如果CPUID.05H.ECX[位0]=1,则目标处理器支持MWAIT扩展及其枚举(请参阅英特尔®64与IA-32体系结构软件开发人员手册第2A卷的第3章,《指令集参考,A-M》)。

如果CPUID.05H.ECX[位1]=1,则目标处理器支持将中断用作MWAIT的中断事件,即使中断被禁用。使用此功能测量C状态驻留情况,如下所示:

当发出MWAIT以进入处理器特定的C状态或子C状态时,软件可以写入MWAIT扩展寄存器(ECX)的位0。

当处理器退出非活动C状态或子C状态时,软件可以在潜在地执行中断服务例程(ISR)之前读取时间戳。

您可以在同一手册中找到有关MWAIT说明的更多信息。祝你好运!

Intel's Reference Manual

好了关于每个CPU内核处于C0电源状态的时间的教程就到这里就结束了,希望趣模板源码网找到的这篇技术文章能帮助到大家,更多技术教程可以在站内搜索。