V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
BigDogWang
V2EX  ›  问与答

各位,我有一个问题:为什么 cpu 执行空闲任务时的消耗和密集型的任务消耗不一样

  •  
  •   BigDogWang · 2019-05-24 21:14:18 +08:00 · 1609 次点击
    这是一个创建于 1770 天前的主题,其中的信息可能已经有所发展或是发生改变。

    cpu 在空闲的时候会执行操作系统里的空闲任务,那么既然空闲的时候 cpu 也在跑,运行密集型任务的时候 cpu 也在跑,为什么二者的功耗不一样呢?是因为频率变了吗?

    9 条回复    2019-05-31 10:24:19 +08:00
    goreliu
        1
    goreliu  
       2019-05-24 21:27:27 +08:00 via iPhone
    不只和频率有关。cpu 工作量越大,就越耗电,一个明显现象就是温度会升高,这热都是电转化来的。微观层面的话,cpu 有空指令,空闲的时候是执行空指令,很少消耗资源,而执行其他指令是需要消耗更多资源的,比如访问缓存、寄存器、内存、硬盘等等都需要电力驱动。
    billlee
        2
    billlee  
       2019-05-24 21:41:11 +08:00
    空闲任务指示操作系统的一个逻辑表示,实际上 CPU 根本就没在执行指令。
    leloext
        3
    leloext  
       2019-05-24 21:48:33 +08:00
    https://www.zhihu.com/question/266776516 供参考,前几天在 u2b 上面看到过这么讲解的。
    sujin190
        4
    sujin190  
       2019-05-24 21:50:20 +08:00
    更细微的,就算 cpu 一直在运行,不同指令的功耗也不可能一样吧
    bearqq
        5
    bearqq  
       2019-05-24 21:53:50 +08:00 via Android
    其实是施加的电压不一样,闲置的时候频率降低,可以用更低的电压跑,从而省电
    SuperMild
        6
    SuperMild  
       2019-05-24 21:53:59 +08:00
    简单来说,通电并不消耗能量,做功才消耗能量。
    msg7086
        7
    msg7086  
       2019-05-24 22:00:36 +08:00   ❤️ 2
    执行指令最少需要译码器,然后根据指令不同还要调用 ALU FPU 甚至是 AVX 计算单元,不同的单元耗电不同。
    比如只是执行算术运算的话,就是 ALU 负责,耗电很小。
    而 AVX 单元耗电很大,发热很高,甚至会达到撞功耗墙需要降频的程度。
    如果 CPU 空闲的话,操作系统会让核心休眠,降低运行频率,频率降低就等于每秒执行的运算减少,功耗自然小了,没用到的计算单元也会关闭。
    Lax
        8
    Lax  
       2019-05-25 10:10:53 +08:00
    空闲任务只是个逻辑的说法,并不额外消耗系统资源。变频是另一个话题了,一般在桌面版 CPU 上比较常用。
    服务器变频容易造成莫名其妙的性能问题,如果为了省电可以选择关机而不是降频率
    BigDogWang
        9
    BigDogWang  
    OP
       2019-05-31 10:24:19 +08:00
    感谢各位大佬~
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5369 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 08:01 · PVG 16:01 · LAX 01:01 · JFK 04:01
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.