物理設計

電源閘控(power gating)

時脈閘控(clock gating)讓一個區塊「安靜下來」,靠的是把它的時脈停住不動;可電晶體依然連在電源上,於是即便閒著不做事,它們也還在一點一點地漏掉電流。電源閘控則做得更徹底:它把這個區塊的電源開關整個「關掉」,就像不是只把燈關了,而是直接拉掉房子裡那一整間空廂房的總開關。沒有電源軌給它供電,閒置的邏輯就不再漏電——這正面打擊的是漏電(靜態)功耗:哪怕什麼都沒切換,只要電晶體通著電,就會有這股持續不斷的電流流走,而在如今的先進節點上,它已經占到一顆晶片總功耗裡很大的一塊。

這個開關本身,是插在那條真正、始終通電的電源,和區塊自己那條本地電源軌之間的一排大尺寸電晶體(佈局裡把這條本地軌叫做虛擬 VDD 或虛擬地)。頭開關(header switch)是一顆 PMOS 元件,夾在 VDD 和區塊的虛擬 VDD 之間;腳開關(footer switch)則是一顆 NMOS 元件,夾在區塊的虛擬地和真正的地之間。當你拉起睡眠(sleep)訊號,這些開關就關斷,本地電源軌隨之懸空,於是幾乎沒有電流再流過。要讓這件事在實際中安全可靠,得靠兩個搭檔:隔離單元(isolation cell)把睡眠區塊那些此刻懸空的輸出箝位到一個確定的 0 或 1,免得周圍的電路讀到一堆亂碼;保持暫存器(retention register,或者一套儲存-還原機制)則替你守住那少數幾個絕不能丟的狀態位元——否則一斷電,裡面的東西就全沒了。

電源閘控只是低功耗工具箱裡的一件工具。多閾值(multi-Vt)設計的做法,是在那些時序裕量還有餘裕的路徑上,摻進一些高閾值的單元——它們漏電少得多(代價是切換稍微慢一點);而 DVFS(動態電壓頻率調節,dynamic voltage and frequency scaling)則是根據當前負載,把電源電壓和時脈頻率往上調或往下調,從而削減動態的、由切換帶來的功耗。正因為這一切都在改變「晶片的哪些部分在什麼時候通電」,設計的功耗意圖(power intent)——電源域分布在哪裡、由哪些開關供電、哪些要隔離、哪些要保持——會在一開始就寫進一份 UPF(IEEE 1801)或 CPF 檔案裡,讓整條後端流程——合成、佈局、CTS、繞線、驗證——都去讀取並照著執行。

P_leak ≈ V_DD × I_leak, and I_leak grows roughly exponentially as the threshold voltage V_t falls

為什麼「關斷電源」和「高 V_t 單元」兩手都重要:漏電隨電源電壓成正比變化,卻會隨著電晶體閾值在更小節點上不斷降低而急劇暴增——所以把 V_DD 砍到零(電源閘控)或者抬高 V_t(多閾值),都能各自狠狠削掉那股靜態電流。

電源閘控不是白來的:那些開關電晶體要占面積,還會和區塊串聯著多出一小段 IR 壓降;把一個電源域喚醒既要花時間,又會帶來一陣湧浪電流(inrush current)的衝擊;而且只有當區塊睡得夠久、足以把這筆開銷賺回來,你才算真正划算——所以它只留給那些確實存在閒置模式的區塊,而不是給任何時刻都在不停翻轉的電路用。

又稱
power switchingMTCMOSsupply gating电源门控電源閘控