Intel X86的turboboost 动态变频

turboboost是Intel在iCore平台引入的动态变频技术。

在这之前,或者说大约20+年前,在Intel奔腾处理器的时代,在那个CPU性能主要决定于主频的时代,各大院校的高年级学生非常热衷于购买Intel的赛扬处理器,因为它具有超强的超频能力,比如200MHz的CPU,通过主板跳线就可以超频到300MHz,甚至更高。在大家Hi的不亦乐乎的时候,也面临着CPU玩完的风险,因为超频太高,温度高,导致CPU的永久损坏。

到了iCore之后,Intel把变频技术design-inCPU,这样就不用在打开机箱,拨弄跳线了。这个变频技术就是turboboost。它不仅仅是超频,也包括了降频,为啥要降频?这就好像家里的空调,晚上睡觉了就希望空调吹的小一些,温柔一些,既省电,还能安静睡眠。所以,降频也是为了节约系统的功耗,在系统负载小的时候就把CPU的总频率降下来,节约用电,save the earth。

简单来说,Intel的turboboos就是根据目前CPU的功耗/温度特性,动态调整CPU核心频率的技术。

比如一个4核心的CPU,标称频率2.4GHz,当其中core1被一个任务占用而忙,其余三个core的负载很轻的情况下,CPU会把core1的频率提到到2.8GHz,甚至更高,只要总的温度/功耗特性仍然在CPU的设计范围之内就可以。如果很不幸,所有的4个core都很忙,CPU使用率都很高,那么这个时候大家都还是按照CPU出厂的标称频率2.4GHz进行工作。

具体的turboboost的描述,请参考Intel的文档。

还是用测试来形象地展示一下它的工作。

测试系统是在Intel Xeon E7-EX上测试的,系统一共72个核心,18*4,没有超线程,标称频率2.4GHz。

首先看缺省的情况,

Socket [0] - [physical cores=18, logical cores=18, max onlinecores ever=18]

  CPU Multiplier 24x ||Bus clock frequency (BCLK) 100.00 MHz

  TURBO ENABLED on 18Cores, Hyper Threading OFF

  Max Frequency withoutconsidering Turbo 2500.00 MHz (100.00 x [25])

  Max TURBO Multiplier (ifEnabled) with 1/2/3/4/5/6/7/8/9/10/11/12/13/14/15 cores is  33x/33x/31x/30x/29x/28x/28x/28x/28x/28x/28x

  Real Current Frequency2798.83 MHz (Max of below)

        Core [core-id]  :Actual Freq (Mult.)      C0%  Halt(C1)%  C3 %   C6 % Temp

        Core 1 [0]:       2798.83 (27.99x)       100      0       0       0   34

        Core 2 [1]:       2798.80 (27.99x)        25   70.8       0       0   34

        Core 3 [2]:       2798.80 (27.99x)      24.2   71.7       0       0   34

        Core 4 [3]:       2798.83 (27.99x)      99.5      0       0       0   33

        Core 5 [4]:       2798.83 (27.99x)      65.5   23.6       0       0   32

需要关注的是第5行,它显示了,如果一个或者两个core工作的情况下,它可以有3.3GHz(33x100MHz),如果有4个core工作的情况下,最高可以到3.0GHz(30x100MHz),以此类推。

而现在的工作频率是2.8GHz。

现在看关掉turboboost之后的情况(通过BIOS或者其他手段关闭)。

Socket [0] - [physical cores=18, logical cores=18, max onlinecores ever=18]

  CPU Multiplier 24x ||Bus clock frequency (BCLK) 99.96 MHz

  TURBO ENABLED on 18Cores, Hyper Threading OFF

  Max Frequency withoutconsidering Turbo 2498.96 MHz (99.96 x [25])

  Max TURBO Multiplier (ifEnabled) with 1/2/3/4/5/6/7/8/9/10/11/12/13/14/15 cores is33x/33x/31x/30x/29x/28x/28x/28x/28x/28x/28x/28x/28x/28x/28x

  Real Current Frequency2399.03 MHz (Max of below)

  Core [core-id] :ActualFreq (Mult.) C0% Halt(C1)% C3 % C6 % Temp

  Core 1 [0]: 2399.01(24.00x) 28.2 71.8 0 0 29

  Core 2 [1]: 2399.01(24.00x) 27.6 72.4 0 0 28

  Core 3 [2]: 2399.01(24.00x) 28.6 71.4 0 0 30

  Core 4 [3]: 2399.00(24.00x) 42.9 57.1 0 0 30

  Core 5 [4]: 2399.02(24.00x) 25.1 74.9 0 0 29

  Core 6 [5]: 2399.01(24.00x) 43.1 56.9 0 0 29

可以看到,目前所有的core都工作在标称频率2.4GHz的情况下。

再来看一下,如果只使能了4个CPU core,在打开turboboost的情况下会怎么样。

Socket [0] - [physical cores=4, logical cores=4, max onlinecores ever=4]

  CPU Multiplier 24x ||Bus clock frequency (BCLK) 99.96 MHz

  TURBO ENABLED on 4Cores, Hyper Threading OFF

  Max Frequency withoutconsidering Turbo 2498.96 MHz (99.96 x [25])

  Max TURBO Multiplier (ifEnabled) with 1/2/3/4 cores is 33x/33x/31x/30x

  Real Current Frequency3000.00 MHz (Max of below)

        Core[core-id]  :Actual Freq (Mult.)      C0%  Halt(C1)%  C3 %   C6 % Temp

        Core 1 [0]:       3000.00 (30.01x)       100      0       0       0   32

        Core 2 [1]:       3000.00 (30.01x)       100      0       0       0   27

        Core 3 [2]:       3000.00 (30.01x)      99.4      0       0       0   31

        Core 4 [3]:       2999.98 (30.01x)      42.5   46.9       0       0   29

这个时候,仅仅列出了4个CPU core,而且每个都工作在3.0GHz,和第5行描述的一样。

“Intel,诚不我欺也”。

Linux系统中引入了cpufreq机制来支持turboboost以及用户的配置。还有工具turbostat用来查看当前系统的CPU变频情况。

总的来说Linux里面会结合当前系统对于功耗,性能的要求(profile)以及CPU自身的特性为用户提供符合其业务特性的支持。

下一次讲讲Intel X86的SMP吧。

你可能感兴趣的:(Intel X86的turboboost 动态变频)