CPU是怎麼調節輸入電壓的?為什麼要這麼做?
有知友問我CPU的核心電壓Vcore是多少,我的答案是 大概 1V左右。這個回答引起了爭議,”到底是左還是右,電腦科學這種事可容不得模糊!“,我也很無奈,核心電壓是個動態變化的過程,會隨著執行頻率不同會被動態調節,1V只是箇中位數。核心電壓也曾經小而美,但隨著CPU電源管理的演進早已十分複雜。今天我們就一起來了解一下為什麼要隨著頻率不同而改變電壓?怎麼和由誰改變電壓?電壓調節的演進等等,也就是從Why,How,Who和When來全面掌握CPU電壓調節的知識。
WHY?為什麼要調節電壓?
除了提供更高的效能之外,CPU們的戰場還有一個:誰的能效比更好。現代CPU往往採用低電壓大電流的供電方案,也是為了改善能效比:低電壓帶來低功耗。要理解這點,要從原理上談起。
從含有1億4000萬個場效應電晶體FET的奔騰4到高達80多億的Kabylake,Intel忠實的按照摩爾定律增加著電晶體的數目。這麼多個FET隨著每一次的翻轉都在消耗者能量。一個FET的簡單示意圖如下:

當輸入低電平時,CL被充電,我們假設a焦耳的電能被儲存在電容中。而當輸入變成高電平後,這些電能則被釋放,a焦耳的能量被釋放了出來。因為CL很小,這個a也十分的小,幾乎可以忽略不計。但如果我們以1GHz頻率翻轉這個FET,則能量消耗就是a × 10^9,這就不能忽略了,再加上CPU中有幾十億個FET,消耗的能量變得相當可觀。
從圖示中,也許你可以直觀的看出,能耗和頻率是正相關的。這個理解很正確,實際上能耗和頻率成線性相關。能耗關係公示是(參考資料1):

P代表能耗。C可以簡單看作一個常數,它由製程等因素決定,製程越小,C越小;V代表電壓, 和P是二次方的關係 ;而f就是頻率了。理想情況,提高一倍頻率,則能耗提高一倍。而V的冪函式關係對P來說更至關重要。
通俗的來講,CPU可以看作由幾十億到上百億個小開關組成的。開關切換的速度f決定了計算機的效能。為了高效能,必須提高開關速度f,這才是大家關心的。而V則因為省電的原因越小越好。那為什麼不把v定成很低很低呢?
我們這裡要引入門延遲(Gate Delay)的概念。簡單來說,組成CPU的FET充放電需要一定時間,這個時間就是門延遲。只有在充放電完成後取樣才能保證訊號的完整性。而這個充放電時間和電壓負相關,即電壓高,則充放電時間就短。也和製程正相關,即製程越小,充放電時間就短。讓我們去除製程的干擾因素,當我們不斷提高頻率f後,過了某個節點,太快的翻轉會造成門延遲跟不上,從而影響數字訊號的完整性,從而造成錯誤。這也是為什麼超頻到某個階段會不穩定,隨機出錯的原因。那麼怎麼辦呢?聰明的你也許想到了超頻中常用的辦法:加壓。對了,可以通過提高電壓來減小門延遲,讓系統重新穩定下來。
也就是說, 為了省電,要降低V,但為了達到數G的主頻,而不得不提高電壓V到一個可以接受的最小值,達到一個平衡 。
我們來總結一下,對於一定頻率,需要保證一定的最低電壓,雖然不同晶片這個值不同,但同一種晶片卻有著明確的對應關係,我們把它叫做頻率電壓對照表T1。它是一個靜態表,T1往往存貯在PCU裡面。PCU是什麼可以參考我的這篇文章:
老狼:CPU中的電源管家:PCU zhuanlan.zhihu.com
怎麼和由誰改變電壓?
在曾經那個什麼都很簡單的年代,CPU一開機就是一個頻率,當然沒有動態調整電壓的需求,這一切隨著EIST的引入( 老狼:CPU省電的祕密(一):EIST )而不得不發生了改變。
有了EIST,隨著工作量不同,作業系統可以動態調節頻率。而光調頻率不調電壓,節能的目的就大半浪費了。於是Intel提出來VRM(Voltage Regulator Module, 電壓調節模組)標準,對位於主機板上的VRM建立了標準,以期規範其電氣特性和CPU和VRM的通訊協議。

VRM負責將8/4 pin的CPU 12V供電轉成CPU的低電壓輸入。最新的VRM已經是11.1了,可以在Intel官網上下載到,我也在參考資料2裡面附上了它的連結。
對於其中的電氣標準我們這裡不再詳述,CPU和VRM如何通訊才是我們感興趣的地方:


可以看到,CPU傳入VID給VRM,VRM根據VID給出不同的Vcore。VID原來有5 bit,現在被擴充套件到了8 bit。不同的VID根據標準對應不同的電壓,對應關係太長,我這裡只列出最大和最小值:


有同學會問最小值只有0.03125v, 這麼小能夠驅動CPU核心嗎?這個是理論上VRM可以提供的最小值,而真實條件下,PCU並不會輸入11111101的VID值。
電壓調節模組VRM根據傳入引數不同,根據標準提供不同的電壓。那麼誰來提供VID呢?還記得我們前面說的表T1嗎?PCU在改變頻率的同時,根據頻率找到響應VID,傳給VRM來得到相應電壓。
VRM在哪裡?
看到VRM有spec,有些人認為它是一個模組,實際上它是由幾部分組成的:

包括MOSFETs,Chokes(電感), 電容和PWM晶片。 PWM晶片實現了VID==>電壓的邏輯,常見的是ISL6334,支援VRM 11.1標準。
最開始VRM只有一個,給CPU核心供電。隨著北橋和GPU被整合進CPU,VRM也由一個變成了5+1,分別是給CPU的:Core VR、Graphics VR、PLL VR、System Agent VR和IO VR,加上另外的記憶體VR。
高階VRM效果不錯,但低端主機板VRM十分糟糕,Intel在Haswell將為CPU服務的VRM全部整合進了CPU,變成了FIVR(Fully Integrated Voltage Regulator,全整合式電壓調節模組)或者ISVR(Integrated Silicon Voltage Regulator),只在主機板上留下了為記憶體服務的VR:

FIVR的電氣特性很好,同時也大大簡化了主機板的設計,收到很大歡迎。但是因為發熱的問題,後期被移出CPU,再後面又被重新加入。FIVR不可或缺的一個重要原因是如果希望CPU中各個核心工作頻率不同,又要省電,最好它們都有自己的VR,FIVR可以做到這一點,每個core都有自己的Vcore:

這也是現在EIST和睿頻的Domain不再是整個CPU的一個原因。
超頻怎麼辦?
VR都被整合進CPU變成FIVR了,超頻需要的加壓怎麼辦?其實還可以做:

FIVR需要的輸入電壓VccIn可以提高,這樣他們給出的VccCorex也就會相應提高。
結論
CPU的核心電壓Vcore隨執行頻率不同,在1V左右波動。CPU內部的各個核心的Vcore因為它們頻率不同,也不一樣。
本專欄還有很多電源相關文章:
老狼:電源是如何提供電力給主機板的,又是如何切斷的? zhuanlan.zhihu.com

其他CPU硬體文章:
老狼:為什麼CPU的頻率止步於4G?我們觸到頻率天花板了嗎? zhuanlan.zhihu.com














歡迎大家關注本專欄和用微信掃描下方二維碼加入微信公眾號"UEFIBlog",在那裡有最新的文章。同時歡迎大家給本專欄和公眾號投稿!