turboboost是Intel在iCore平臺引入的動態(tài)變頻技術(shù)。
在這之前,或者說大約20+年前,在Intel奔騰處理器的時代,在那個CPU性能主要決定于主頻的時代,各大院校的高年級學(xué)生非常熱衷于購買Intel的賽揚處理器,因為它具有超強(qiáng)的超頻能力,比如200MHz的CPU,通過主板跳線就可以超頻到300MHz,甚至更高。在大家Hi的不亦樂乎的時候,也面臨著CPU玩完的風(fēng)險,因為超頻太高,溫度高,導(dǎo)致CPU的永久損壞。
到了iCore之后,Intel把變頻技術(shù)design-inCPU,這樣就不用在打開機(jī)箱,撥弄跳線了。這個變頻技術(shù)就是turboboost。它不僅僅是超頻,也包括了降頻,為啥要降頻?這就好像家里的空調(diào),晚上睡覺了就希望空調(diào)吹的小一些,溫柔一些,既省電,還能安靜睡眠。所以,降頻也是為了節(jié)約系統(tǒng)的功耗,在系統(tǒng)負(fù)載小的時候就把CPU的總頻率降下來,節(jié)約用電,save the earth。
簡單來說,Intel的turboboos就是根據(jù)目前CPU的功耗/溫度特性,動態(tài)調(diào)整CPU核心頻率的技術(shù)。
比如一個4核心的CPU,標(biāo)稱頻率2.4GHz,當(dāng)其中core1被一個任務(wù)占用而忙,其余三個core的負(fù)載很輕的情況下,CPU會把core1的頻率提到到2.8GHz,甚至更高,只要總的溫度/功耗特性仍然在CPU的設(shè)計范圍之內(nèi)就可以。如果很不幸,所有的4個core都很忙,CPU使用率都很高,那么這個時候大家都還是按照CPU出廠的標(biāo)稱頻率2.4GHz進(jìn)行工作。
具體的turboboost的描述,請參考Intel的文檔。
還是用測試來形象地展示一下它的工作。
測試系統(tǒng)是在Intel Xeon E7-EX上測試的,系統(tǒng)一共72個核心,18*4,沒有超線程,標(biāo)稱頻率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
需要關(guān)注的是第5行,它顯示了,如果一個或者兩個core工作的情況下,它可以有3.3GHz(33x100MHz),如果有4個core工作的情況下,最高可以到3.0GHz(30x100MHz),以此類推。
而現(xiàn)在的工作頻率是2.8GHz。
現(xiàn)在看關(guān)掉turboboost之后的情況(通過BIOS或者其他手段關(guān)閉)。
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都工作在標(biāo)稱頻率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系統(tǒng)中引入了cpufreq機(jī)制來支持turboboost以及用戶的配置。還有工具turbostat用來查看當(dāng)前系統(tǒng)的CPU變頻情況。
總的來說Linux里面會結(jié)合當(dāng)前系統(tǒng)對于功耗,性能的要求(profile)以及CPU自身的特性為用戶提供符合其業(yè)務(wù)特性的支持。
下一次講講Intel X86的SMP吧。