首页 文章

CPU如何空闲(或运行低于100%)?

提问于
浏览
8

我首先了解了计算机如何在原始单个存储程序机器方面工作 .

现在我正在学习多任务操作系统,日程安排,上下文切换等等 . 我认为除了一件事之外,我对这一切都有相当好的把握 . 我一直认为CPU是一种不间断充电的东西 . 它总是知道接下来要去哪里(程序计数器),并且无限制地进入该指令等 .

显然情况并非如此,因为我的台式计算机CPU并非始终以100%运行 . 那么CPU如何自行关闭或自行关闭,以及操作系统在这方面扮演什么角色?我猜测CPU上有一个输入允许它掉电......如果没有什么可以安排,操作系统可以设置它,但下一个逻辑问题是它如何重新启动?我猜两件事中的任何一件:

  • 它永远不会完全关闭,只是以非常低的频率运行,等待调度程序再次忙碌

  • 它完全关闭但被中断唤醒

我搜索了所有关于这方面的信息并且相当空手而归 . 任何见解都会非常感激 .

4 回答

  • 1

    如果在操作系统无关时谈到x86架构,可以使用HLT指令 . HLT指令停止CPU直到下一次中断 . 有关详细信息,请参阅http://en.m.wikipedia.org/wiki/HLT .

    其他架构也有类似的指令给CPU休息 .

  • 3

    答案是,这取决于硬件,操作系统以及操作系统的配置方式 .

    它可能涉及您提出的其中一种或两种策略 .

    基于x86架构的机器的另一种可能性是x86具有HLT instruction,导致核心停止直到它收到外部中断 . 所以"Idle"任务可以简单地在紧密循环中执行HLT .

  • 1

    只需转到任务管理器,性能选项卡,并在计算机上完全没有任何操作时观察CPU使用情况 . 它永远不会停止波动 . 有一个像Windows运行的操作系统,CPU将始终运行,它永远不会完全关闭 .

    让显示器显示图像需要您的CPU处理一个允许它显示任何内容的功能 . 等等

    一切都在CPU中运行,就像你的大脑一样,它控制着一切 . 没有它就没有任何功能 .

  • 2

    有些CPU确实有一个'等待中断'指令,允许CPU在没有任何操作时停止执行指令,并且在发生中断事件之前不会重新唤醒 . 这在微控制器中特别有用,在微控制器中,它们可以长时间等待某些事情发生 .

    • Intel = HLT(暂停)

    • ARM = WFI(等待中断)

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

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

相关问题