動態功耗(dynamic power)
把晶片裡的每條導線想成一個小水桶,要裝滿才能代表 1、要倒空才能代表 0。每次一個位元翻轉,你就得灌入電荷或把它倒出來,而灌注是要費力的。一顆晶片每秒在數百萬條導線上做數十億次這種翻轉。動態功耗就是所有這些翻轉的能量代價——因為晶片正在主動切換、在做工而花掉的功率。
經典公式捕捉了它:動態功耗大致正比於電容乘以電壓平方乘以頻率(P 約等於 C 乘以 V^2 乘以 f)。電容 C 是每條導線能裝多少電荷;電壓 V 是你必須把它灌到多高;頻率 f 是你每秒翻轉幾次。其中兩項是著名的槓桿。電壓是平方項,所以稍微降低電壓就能大幅削減功率——把 V 砍半,這一項變成四分之一。頻率是線性項,所以時脈越快,功率就按比例增加。(更講究的版本還要乘上一個活動因子,也就是每週期實際翻轉的導線比例,因為閒置的導線在動態上不花成本。)
這道公式是幾乎每種功率技巧背後的引擎。它解釋了動態電壓頻率調整為何有效:不需要全速時把 V 和 f 一起降下,功率就陡降,因為 V^2 那一項讓降電壓特別有威力。它解釋了百萬赫茲陷阱:為了追逐時脈速度的頭條而拉高頻率,會燒掉隨 f 上升的功率,而且因為最高的時脈需要更高的電壓,上升得甚至比 f 還快。而這只是故事的一半——隨著電晶體變小,靜態(漏電)功耗不再可忽略,兩者加起來訂出了那個終結 Dennard 微縮的功率預算。
一個核心跑在 V = 1.0 V、f = 3 GHz。把電壓降到 0.8 V、時脈降到 2 GHz。動態功耗因子 V^2 乘以 f 從 1.0^2 x 3 = 3.0 降到 0.8^2 x 2 = 0.64 x 2 = 1.28——約是原本功率的 0.43,而速度只慢了 1.5 倍。平方的電壓項貢獻了大部分的節省。
因為電壓是平方項,把它(連同頻率)降低削減動態功耗的速度,遠快於它削減速度的速度。
P 約等於 C 乘以 V^2 乘以 f 是一個模型、不是精確的物理,而且它略去了漏電。在現代製程下,靜態(漏電)功耗是一個很大的第二項,所以你不能只靠動態公式推論一顆晶片的功率。