0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

while(1)到底占了多少CPU功耗呢?這些功耗去哪里了呢?

冬至子 ? 來源:UEFI社區(qū) ? 作者:Wolf ? 2023-06-29 17:30 ? 次閱讀

CPU耗能的基本原理

我們將CPU簡單看作場效應晶體管FET的集合。這么多個FET隨著每一次的翻轉(zhuǎn)都在消耗者能量。一個FET的簡單示意圖如下:

圖片

圖1

當輸入低電平時,CL被充電,我們假設a焦耳的電能被儲存在電容中。而當輸入變成高電平后,這些電能則被釋放,a焦耳的能量被釋放了出來。因為CL很小,這個a也十分的小,幾乎可以忽略不計。但如果我們以1GHz頻率翻轉(zhuǎn)這個FET,則能量消耗就是a × 10^9,這就不能忽略了,再加上CPU中有幾十億個FET,消耗的能量變得相當可觀。

從這里我們可以看出CPU的能耗和有多少個晶體管參與工作有關,似乎還和頻率是正相關的。我們下面分別來看一下。

指令功耗

如果我們將CPU簡單看作單核的,是不是運行while(1);就能讓該CPU達到TDP呢?實際上并不會。每條指令所要調(diào)動的晶體管數(shù)目不同,而功耗是被調(diào)動晶體管功耗的總和。

《動物莊園》有一句話很經(jīng)典:“所有動物生來平等 但有些動物比其他動物更平等”。是不是指令都是平等的呢?當然不是了,有些指令更平等!每條指令需要調(diào)動的晶體管數(shù)目有很大不同,一條新指令和已經(jīng)在L1指令Cache中的指令也不同。一個簡化版Hesswell CPU的流水線示意圖如下:

圖片

一個指令要不要調(diào)度運算器,要不要訪問外存,要不要回寫,在不在L1中都會帶來不少的區(qū)別。綜合下來,流水線中各個階段的功耗餅圖如下:

圖片

可以看到Fetch指令和decode占據(jù)了大頭,而我們的執(zhí)行才占據(jù)%9?。hile(1);編譯完的指令們,這時已經(jīng)在L1中,F(xiàn)etch會節(jié)省不少能耗。這也是達成同樣功能,ASIC很省電,而CPU很費電的原因:

圖片

如果我們不討論指令的差異,在平均意義上來看指令的功耗,它有個專有的名詞:指令功耗(EPI,Energy per Instruction)。

EPI和CPU制程、設計息息相關。Intel的CPU在P4的EPI達到一個高峰,后來在注重每瓦功耗的情況下,逐年在下降:

圖片

Intel CPU EPI(數(shù)據(jù)較老)

耗能和頻率的關系

從圖1中,也許你可以直觀的看出,能耗和頻率是正相關的。這個理解很正確,實際上能耗和頻率成線性相關。能耗關系公示是(參考資料2):

圖片

P代表能耗。C可以簡單看作一個常數(shù),它由制程和設計等因素決定;V代表電壓;而f就是頻率了。理想情況,提高一倍頻率,則能耗提高一倍??雌饋聿⒉皇謬乐兀皇菃??但實際情況卻沒有這么簡單。

我們這里要引入門延遲(Gate Delay)的概念。簡單來說,組成CPU的FET充放電需要一定時間,這個時間就是門延遲。只有在充放電完成后采樣才能保證信號的完整性。而這個充放電時間和電壓負相關,即電壓高,則充放電時間就短。也和制程正相關,即制程越小,充放電時間就短。讓我們?nèi)コ瞥痰母蓴_因素,當我們不斷提高頻率f后,過了某個節(jié)點,太快的翻轉(zhuǎn)會造成門延遲跟不上,從而影響數(shù)字信號的完整性,從而造成錯誤。這也是為什么超頻到某個階段會不穩(wěn)定,隨機出錯的原因。那么怎么辦呢?聰明的你也許想到了超頻中常用的辦法:加壓。對了,可以通過提高電壓來減小門延遲,讓系統(tǒng)重新穩(wěn)定下來。

讓我們回頭再來看看公式,你會發(fā)現(xiàn)電壓和功耗可不是線性相關,而是平方的關系!再乘以f,情況就更加糟糕了。我們提高頻率,同時不得不提高電壓,造成P的大幅提高!我們回憶一下初中學過的y=x^3的函數(shù)圖:

圖片

Y在經(jīng)過前期緩慢的提高后在a點會開始陡峭的上升。這個a就是轉(zhuǎn)折點,過了它,就劃不來了。功耗和頻率的關系也大抵如此,我們看兩個實際的例子:

圖片

i7-2600K頻率和功耗的關系

圖片

Exynos頻率和功耗的關系

ARM和X86陣營來看,他們能耗曲線是不是和冪函數(shù)圖很像?

其他因素

一個while(1);最多讓某個內(nèi)核占有率100%,其他內(nèi)核呢?CPU近期的目標是提供越來越精細的電源管理策略。原來不跑的部分就讓它閑著,后來改成它降頻運行,接著改成不提供時鐘信號,這樣猶嫌不足?,F(xiàn)在CPU的電源管理由PMC負責,它會完全切斷不用部分的電路。

操作系統(tǒng)層面,它會盡力將不用的內(nèi)核設置成CState,從而讓PMC等電源控制模塊有足夠的提示(hint)來關閉電源。

結論

拉拉雜雜的說了這許多,我們可以看出,while(1);并不會耗掉整個CPU的TDP。就算一個內(nèi)核,它的耗能也不會達到該內(nèi)核的能耗上線(現(xiàn)在都是Turbo Mode,內(nèi)核能耗上限是個動態(tài)的結果)。它可以把該內(nèi)核拉入Turbo Mode的最高頻率,但因為指令都在L1中,耗能也不會很高。

至于消耗的能量都到哪里去了,根據(jù)能量守恒定律,一定是變成熱量散發(fā)出去了。這個過程中也許會產(chǎn)生動能(風扇轉(zhuǎn)動等等),光能(GPIO驅(qū)動LED發(fā)光),但在最后的最后,都會變成熱能。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 電源管理
    +關注

    關注

    115

    文章

    6100

    瀏覽量

    143355
  • FET
    FET
    +關注

    關注

    3

    文章

    617

    瀏覽量

    62678
  • 場效應晶體管

    關注

    5

    文章

    350

    瀏覽量

    19417
  • LED發(fā)光
    +關注

    關注

    0

    文章

    23

    瀏覽量

    8226
  • 調(diào)度器

    關注

    0

    文章

    98

    瀏覽量

    5210
收藏 人收藏

    評論

    相關推薦

    DAC功耗數(shù)據(jù)計算 功耗數(shù)字到底包括什么?

    電子發(fā)燒友網(wǎng)提供正確的DAC功耗數(shù)據(jù)計算方法,詳細講解了每個功耗數(shù)字到底包括什么?數(shù)字電路功耗
    發(fā)表于 11-30 16:11 ?4233次閱讀

    使用這些設計技巧降低FPGA功耗

       新一代 FPGA的速度變得越來越快,密度變得越來越高,邏輯資源也越來越多。那么如何才能確保功耗不隨這些一起增加?很多設計抉擇可以影響系統(tǒng)的功耗
    發(fā)表于 01-11 11:59

    關于降低功耗在編程時的建議

    暫停指令,使系統(tǒng)進入休眠狀態(tài),較while(1)方式能極大的降低整體功耗;設置定時中斷或事件中斷,可以在需要處理時將CPU喚醒 這種方式對于電池供電的產(chǎn)品來說非常必要,如果沒事做的時候
    發(fā)表于 03-27 11:21

    【精選】STM32功耗測試筆記

    功耗是永恒的話題,STM32的功耗到底怎么樣?
    發(fā)表于 03-03 12:45

    請問動態(tài)功耗怎么仿真?

    DAC的靜態(tài)功耗容易仿真,隨便給一個碼值仿真dc看直流電流總和,乘以電源電壓。請問動態(tài)功耗怎么仿真
    發(fā)表于 06-24 06:55

    到底該怎么去使用KEIL的這些調(diào)試方法

    為什么要虛擬串口,這里的虛擬串口又是什么意思?到底該怎么去使用KEIL的這些調(diào)試方法?
    發(fā)表于 12-21 07:20

    如何對STOP的休眠功耗模式進行調(diào)試

    STOP模式休眠功耗的調(diào)試過程是怎樣的?如何對STOP的休眠功耗模式進行調(diào)試?
    發(fā)表于 02-21 06:39

    請問TICKLESS是如何去實現(xiàn)功耗降低的

    什么是TICKLESS?怎么能實現(xiàn)功耗的降低?TICKLESS是如何去實現(xiàn)功耗降低的?
    發(fā)表于 02-24 08:02

    小米MIUI8.2你到底好在哪里到底值不值得升級?

    小米 MIUI8.2 穩(wěn)定版已經(jīng)更新,也有很多的米粉已經(jīng)體驗上了新功能。相比以往的MIUI版本到底好在哪里
    發(fā)表于 02-18 08:52 ?3w次閱讀

    從微架構設計和制造工藝低功耗CPU的實現(xiàn)

    隨著智能手機等移動應用的興起,目前的處理器設計不僅要提供高性能,還必須要符合另一個重要指標,那就是低功耗。通過簡單地降低電壓或頻率來實現(xiàn)低功耗不可取——試問有誰會去買性能打過折的產(chǎn)品?那么,低
    的頭像 發(fā)表于 02-01 11:48 ?7152次閱讀
    從微架構設計和制造工藝低<b class='flag-5'>功耗</b><b class='flag-5'>CPU</b>的實現(xiàn)

    如何知道真正的CPU功耗 功率墻問題怎么解決

    降速都有可能是達到了功率墻。那么,怎么知道真正的CPU功耗?是時候呼叫HWINFO這款小軟件。 首先,我們要從官網(wǎng)https://www.hwinfo.com處下載HWINFO。這
    的頭像 發(fā)表于 08-26 11:10 ?4w次閱讀
    如何知道真正的<b class='flag-5'>CPU</b><b class='flag-5'>功耗</b> 功率墻問題怎么解決

    CPU內(nèi)部到底是如何工作的?

    眾所周知CPU是中央處理器,它是控制處理中心,我們的電腦、手機等電子產(chǎn)品都離不開CPU。 那么,CPU內(nèi)部到底是如何工作的?我們一起來看看
    的頭像 發(fā)表于 04-04 14:36 ?5480次閱讀
    <b class='flag-5'>CPU</b>內(nèi)部<b class='flag-5'>到底</b>是如何工作的<b class='flag-5'>呢</b>?

    在Linux系統(tǒng)中系統(tǒng)變量存在哪里?

    上面講了很多系統(tǒng)變量,那么在Linux系統(tǒng)中,這些變量存在哪里?為什么用戶一登錄shell就自動有這些變量
    的頭像 發(fā)表于 11-16 09:46 ?1747次閱讀

    什么是低功耗設計?

    想必各位ICer們在招聘JD上專門看到低功耗設計經(jīng)驗的要求,什么是低功耗設計?對于后端工程 師來講,在物理實現(xiàn)方面就是引入多條電源線
    的頭像 發(fā)表于 05-15 11:42 ?1074次閱讀
    什么是低<b class='flag-5'>功耗</b>設計<b class='flag-5'>呢</b>?

    CPU的低功耗與高功耗的區(qū)別

    CPU的低功耗與高功耗之間存在多方面的區(qū)別,這些區(qū)別主要體現(xiàn)在功耗水平、性能表現(xiàn)、應用場景、成本效益以及技術實現(xiàn)等多個維度。
    的頭像 發(fā)表于 08-07 15:43 ?1133次閱讀