JOVANA
Library Glossary Getting Started Three Levels Fields How it works Mission
Join the mission
All guides

漏電與多重 Vt:永不休眠的功耗

動態功耗是晶片「工作時」燒掉的能量。但還有第二筆、更狡猾的帳單——就算什麼都沒在切換、就算晶片閒置、就算在一片漆黑中,仍有電流悄悄滲過每一顆[[transistor|電晶體]]。在先進製程節點,這種[[ic-leakage-power|漏電]]可以與主動功耗分庭抗禮,一整夜默默把手機電池榨乾。本篇解釋漏電從何而來、為何隨電晶體微縮而爆炸性成長,以及設計者如何用[[ic-multi-vt|多重 Vt]] 標準元件反擊——這個日常工具讓晶片在該快的地方快、在其他每個角落都吝嗇省電。

什麼都沒做也會收到的帳單

在第 1 級我們把晶片的功耗分成兩半。動態功耗是你為了「做事」而付的錢:每當一顆電晶體翻轉,它就要對微小的電容充電與放電,這要花能量。把時脈停掉,動態功耗就降到零。它是「運動的功耗」——沒有運動,就沒有帳單。三十年來,這個直覺幾乎就是全部,工程師為切換活動率與時脈頻率傷透腦筋。

但還有第二半,而它根本不在乎時脈有沒有在跑。[[ic-leakage-power|漏電功耗]]——又稱靜態功耗——是流過一顆「理應關閉」電晶體的電流。電晶體本該是個開關:要電流時閉合、不要時斷開。現代矽晶片殘酷的真相是:斷開的開關會漏。一股微小卻不曾停歇的電流滲過去,而因為有數十億顆電晶體同時在漏,這些涓滴匯成一條河。這筆帳單在晶片閒置於你口袋裡時照樣寄來,即使螢幕全黑也一樣。

兩種漏:閘下偷溜與穿閘而過

漏電不是單一現象,而是一整族。其中兩種最為主導。第一種是次臨界漏電:電晶體名義上關閉時,電流仍從汲極流向源極。此時閘極電壓低於臨界電壓 Vt——也就是電晶體「應該」導通的門檻。你會以為低於臨界電壓就是零電流,但通道並非在 Vt 那一刻啪地關死,而是逐漸變暗。在臨界值底下一點點,仍有一小群帶電載子擁有足夠的熱能越過去。電流不會停——它呈指數衰減,而指數衰減不等於零。

它衰減得多快,由次臨界斜率描述,典型約為每十倍電流 70–100 mV。意思是 Vt 每升高約 80 mV,次臨界漏電大約砍掉十分之一。反過來看:你為了讓電晶體更快而把 Vt 每「降低」80 mV,它的漏電就乘以十倍。這一句話,就是本篇全部的戲劇張力。速度與漏電透過 Vt 牢牢綁在一起,而你騙不過指數。

第二大漏是閘極漏電——電流「直接穿過」閘極絕緣層。閘極坐在通道上方,中間僅隔著一層薄到要用原子數來量的氧化層。在較舊的節點,那層氧化層是一道從容的牆。隨著電晶體微縮,氧化層也得跟著變薄,而薄到大約 2 nm 以下,電子就完全不把這道牆當一回事了:量子力學讓它們穿隧而過。解法是改配方——以高介電常數(high-k)材料(鉿基)取代二氧化矽,用較厚的物理屏障換來相同的電氣效果;而 FinFET 與環繞閘極結構則把閘極包住通道以加強控制。閘極漏電大致是一場材料與結構之戰;次臨界漏電才是設計者要逐顆元件去打的那一場。

漏電為何爆炸——又為何嗜熱

數十年來,把電晶體做小純粹是好消息,而讓這筆交易成立的是 Dennard 微縮:當你把電晶體尺寸減半,也同步降低供應電壓與臨界電壓來配合,使電場保持不變、功率密度持平。更小、更快、更涼——一次到位。但 Vt 不能永遠往下降。降得太低,關閉的電晶體就漏得太兇;我們剛認識的那個指數會把省下的好處變成懲罰。約莫 2000 年代中期,Vt 的微縮停滯了,而其他一切照樣縮小,Dennard 微縮於是崩解。漏電——曾經只是個進位誤差——一路攀升,在最先進的節點可佔晶片總功耗的 30–50%。

漏電還有脾氣:它對溫度極其敏感。次臨界電流取決於有多少載子擁有足夠熱能越過屏障,而這群載子的數量隨晶片升溫而快速增加。一個經驗法則是:溫度每升 10–15 °C,漏電大約翻倍。這會造成一個惡性循環——熱失控:漏電讓晶片發熱,發熱抬高漏電,漏電又讓晶片更熱。一顆在涼爽工作台上看起來沒問題的零件,夏天塞進密封手機裡可能就燒了。這就是為什麼漏電總是在「高接面溫度」而非室溫下標定。

最後,漏電會隨[[process-corner|製程角點]]劇烈擺盪。製造從來不精確——Vt、氧化層厚度、通道長度在不同晶圓間都會散佈。針對漏電要擔心的角點是 FF(快-快):跑得比標稱更快的電晶體,部分原因正是它們的 Vt 偏低,所以最快的矽也最會漏。把最壞情況疊在一起——FF 製程、高電壓、高接面溫度——就得到漏電簽核工程師必須守住預算的那個角點。同一顆晶片在 SS(慢-慢)、低溫、低電壓的角點幾乎不漏電,卻遲鈍。你要設計成兩個極端都能存活。

Subthreshold leakage scales with three knobs:

  I_leak  ~  W/L * exp( -Vt / (n * kT/q) )
                    ^^^^^^^^^^^^^^^^^^^^^^
                    the exponential that rules everything

  Lower Vt  by 80 mV  ->  I_leak  x10   (faster cell, leakier)
  Raise Vt  by 80 mV  ->  I_leak  /10   (slower cell, miserly)
  +10..15 C temperature ->  I_leak  x2   (heat feeds the leak)
  FF corner vs SS corner ->  I_leak  x5..x10  (process scatter)

  kT/q at 25 C ~ 26 mV ;  at 110 C ~ 33 mV  (so slope worsens hot)
撥動次臨界漏電的三根槓桿。Vt 是設計者逐顆元件去選的那一根;溫度與角點則是你必須存活下來的條件。

多重 Vt:同一段邏輯,給你一快一慢兩種元件

這就是業界最終採用的優雅花招。回想前幾級:設計者不是徒手畫電晶體——他們用[[standard-cell|標準元件]]庫組裝晶片,那是一份預先建好的閘級目錄(反相器、NAND、正反器),全部等高,好讓它們卡進一列列的格子裡。現代的元件庫不會只出一款反相器。它把「同一款」反相器做三、四遍,每個版本用的電晶體有不同的臨界電壓。這些就是[[ic-multi-vt|多重 Vt]]口味。

  1. LVT——低 Vt:臨界值低,電晶體導通得猛、切換得快。代價是漏電很兇——常是 HVT 元件的 5–10 倍。要省著用,只用在每一皮秒都要計較的地方。
  2. SVT——標準 Vt:平衡的中間檔。速度合理、漏電合理。對大多數邏輯而言,是明智的預設選擇。
  3. HVT——高 Vt:臨界值高,所以切換慢,但漏得極少——常只有 LVT 元件的五分之一到十分之一。在所有時序寬裕的地方都用它。
  4. (有些元件庫再加上 ULVT/eLVT 衝極致速度,一路拉到好幾種口味。)它們的邏輯功能完全相同——差別只在漏電與速度的那個取捨點。

因為同一款元件的所有口味在邏輯上完全相同、接腳也相容,合成與佈局繞線工具就能在流程後期自由互換,無須重畫任何東西。這個「可互換性」正是重點所在:它把漏電變成一個工具能逐閘調節的旋鈕。

Same inverter, three thresholds — same footprint, same pins:

   LVT inverter      SVT inverter      HVT inverter
   delay  : 8 ps     delay  : 11 ps    delay  : 16 ps
   leak   : 10 nA    leak   : 2.5 nA   leak   : 1 nA
      ^ fast, thirsty    ^ balanced         ^ slow, frugal

   in --|>o-- out    in --|>o-- out    in --|>o-- out
   (drops into the SAME row slot; tool picks the flavour)
數字僅供示意,但形狀是真的:跨 Vt 口味,延遲變化約 2 倍、漏電變化約 10 倍。正是這個不對稱,讓混搭划算。

關鍵路徑配快元件,其餘的人少付帳

策略到這裡就自己寫好了。回想[[critical-path|關鍵路徑]]——兩個正反器之間最慢的那條邏輯路徑,它決定整個時脈能跑多快。一條路徑「關鍵」的條件是它「沒有寬裕(slack)」:在下一個時脈邊緣之前沒有多餘時間。其他每一條路徑都提早完工、閒在那裡等。在一條有寬裕的路徑上花用又快又漏的 LVT 元件,什麼也買不到——它讓一條本來就快的路徑更快,時脈根本察覺不到,卻為此付出漏電代價。

於是工具跑一輪漏電回收(leakage recovery)。它從「全部都快」出發(或最終收斂到那裡),然後巡遍整個設計,在任何還有寬裕可揮霍的地方把元件換成更高的 Vt,每次替換都停在「再換下去這條路徑就會違反時序」之前。快速的 LVT 元件只在真正關鍵的路徑上倖存;所有寬裕從容的地方最後都變成 HVT。結果:晶片在少數需要速度的路徑上達成頻率目標,而在絕大多數不需要速度的閘上,漏電量像一個 HVT 設計一樣低。

把取捨講具體一點。假設某個區塊有 100,000 顆元件。為保險全做成 LVT,關鍵路徑是 1.00 ns(1 GHz,達標),但區塊漏電是 100 µA。為省電全做成 HVT,漏電降到 12 µA——但關鍵路徑膨脹到 1.45 ns,在 1 GHz 下違反時序。兩個極端都不能接受。混搭方案只在落於關鍵或近關鍵路徑的那約 6% 元件上保留 LVT,其餘全做 HVT:

Block of 100,000 cells, target clock = 1.00 ns (1 GHz)

  Strategy        Critical path   Block leakage   Meets 1 GHz?
  -----------     -------------   -------------   ------------
  All LVT         1.00 ns         100  uA         YES  (but worst power)
  All HVT         1.45 ns          12  uA         NO   (45% too slow)
  Multi-Vt mix    1.00 ns          ~22 uA         YES  <-- ship this
   (6% LVT on critical paths, 94% HVT elsewhere)

  Result of the mix vs all-LVT:
    timing       : identical (still 1.00 ns, still meets 1 GHz)
    leakage      : 100 uA -> 22 uA   = ~78% leakage saved
    cost         : zero area, zero logic change, one tool pass
多重 Vt 的頭條:在達成「完全相同」頻率的前提下,把漏電大約砍掉 3–5 倍——靠的只是依每顆元件的寬裕,替它選對 Vt。

多重 Vt 在更大的漏電戰局中的位置

多重 Vt 是「日常」的漏電防線——便宜、自動、不佔面積,幾乎用在每一顆現代 SoC 的每一個區塊上。但它只是「重塑」漏電,從不把它關掉。漏電的電晶體照樣漏,只是漏少一點。當一個區塊「要閒置很久」時,重型武器就上場了——而那些是後面幾級的主題。電源閘控(power gating)插入一個頭/尾開關,把睡眠中的區塊整個從供電切開,使其漏電趨近於零(代價是喚醒時間)。基體偏壓(body biasing)在閒置時用電氣手段把 Vt 微微往上推。電壓調節則直接降低供應電壓本身——因為漏電隨電壓陡降。

把它想成一套層層防禦。多重 Vt 是你預設就佈署到處的常備軍——它讓整顆晶片隨時都漏得更少,而且免費。電源閘控與基體偏壓則是你為「可以送去睡覺」的區塊召來的特種部隊。一個真正的低功耗設計會把它們全部一起用:多重 Vt 設下地板,睡眠技術再把閒置區塊壓到地板之下。