CPU如何空闲(或在低于100%的情况下运行)



我第一次了解了计算机如何在原始的单个存储程序机中工作。

现在我正在学习多任务操作系统、日程安排、上下文切换等。除了一件事,我认为我对这一切都掌握得很好。我一直认为CPU是一种不间断地向前充电的东西。它总是知道下一步该去哪里(程序计数器),并且它无限地去执行那个指令等。

显然,情况并非如此,因为我的台式机CPU并不总是100%运行。那么,CPU是如何关闭或节流的呢?操作系统在这方面扮演了什么角色?我猜CPU的某个地方有一个输入,可以让它断电。。。如果没有任何计划,操作系统可以设置它,但下一个逻辑问题是它如何重新启动?我猜有两件事:

  • 它从未完全关闭,只是以非常低的频率运行,等待调度器再次忙碌
  • 它完全关闭,但被中断唤醒

我到处寻找这方面的信息,结果一无所获。任何见解都将不胜感激。

答案取决于硬件、操作系统和操作系统的配置方式。

它可能涉及你提出的两种策略中的一种或两种。

基于x86体系结构的机器的另一种可能性是,x86有一条HLT指令,该指令会导致内核停止,直到它接收到外部中断。因此,"空闲"任务可以简单地在一个紧密的循环中执行HLT。

只需转到任务管理器的性能选项卡,在计算机上什么都不做的情况下查看cpu使用情况。它从未停止波动。运行windows这样的操作系统,cpu将始终正常工作,永远不会完全关闭。

让你的显示器显示图像需要你的cpu处理一个允许它显示任何内容的函数。等

一切都通过中央处理器,就像你的大脑一样,它控制着一切。没有它什么都不会起作用。

有些CPU确实有"等待中断"指令,它允许CPU在无事可做时停止执行指令,并且在发生中断事件之前不会重新唤醒。这在微控制器中特别有用,因为它们可以长时间等待发生什么。

  • Intel=HLT(暂停)
  • ARM=WFI(等待中断)

有时也会使用"忙等待",即CPU处于一个小的"空闲"循环中,检查要做的事情。在这种情况下,CPU仍在运行指令,但操作系统处于空闲状态。它的效率不如使用HLT。

现代CPU还可以调整其功耗,并能够降低时钟频率,或关闭CPU中未使用的部分。通过这种方式,即使核心CPU仍在运行和执行指令,活动空闲状态期间的功耗也可以小于活动处理期间的功耗。

如果在操作系统无所事事的情况下谈论x86体系结构,则可以使用HLT指令。HLT指令停止CPU直到下一次中断。看见http://en.m.wikipedia.org/wiki/HLT详细信息。

其他体系结构也有类似的指令来让CPU休息。

相关内容

最新更新