1. XenForo 1.5.14 中文版——支持中文搜索!现已发布!查看详情
  2. Xenforo 爱好者讨论群:215909318 XenForo专区

CPU 为什么会有高频低负载的状态?

本帖由 漂亮的石头2022-01-13 发布。版面名称:知乎日报

  1. 漂亮的石头

    漂亮的石头 版主 管理成员

    注册:
    2012-02-10
    帖子:
    486,020
    赞:
    46
    [​IMG] 老狼,UEFI固件、服务器、嵌入式产品(公众号:UEFIblog) 阅读原文

    先说结论,这样做是为了更加省电。现在 CPU 内核的频率控制由一个叫做 PCU(Package Control Unit)的微处理器来控制。PCU 从 Nehalem CPU 开始就嵌入在 CPU 的封装中。

    PCU 控制内核频率本着省电和提高响应度来进行调节。完成一项工作,为了节省能耗,是不是就是低频慢慢干就好了呢?答案是否定的。我们排除浪费时间等因素,只从能耗上考量,如果我们衡量干完某件事需要消耗的整体能量,实际上有两种策略:

    1. 保持固定频率,将事情干完,然后 CPU 进入休息状态。
    2. 加速干事情,忍受短时功耗上升,尽快干完事情,尽早让 CPU 休息。

    这和人一样,有些人是慢性子,徐徐图之;而有些人性子急,希望早干完早休息。很难判断哪种好,这就需要量化分析了,好在 Intel 的工程师已经为我们找到这个平衡点:

    [​IMG]

    在这个平衡点附近,按照工作量(workload demand)被分成 Low Range 和 High Range,PCU 采取两种策略。

    [​IMG]
    策略一

    在 Low Range 的区间,CPU 的主频低于 Pe 就没有任何意义了,PCU 总是让内核工作在 Pe 频率上,尽快干完事,进入休眠状态(CState)。这就是有时计算机比较清闲,我们打开任务管理器时,会发现有些 CPU 既不是工作在最低主频上,也不是工作最高主频上的原因。

    [​IMG]

    在 High Range 中,提高内核频率尽管可以让任务完成的更快,但是因为能耗和频率 f 是 3 次方的关系,对能耗比来说并不合算。这就需要操作系统来提示支持 Speed Shift 的 PCU,采取激进的高频高功耗模式,来提供更好的相应;还是保守的能耗优先模式。

    结论

    为什么低负载还高频呢,就是因为负载落在 low Range 中,内核会被加速到 Pe 来尽快完成,从而尽快进入省电的 Cstate,即省电,有快速响应,何乐而不为呢?

    阅读原文
     
正在加载...