對於現在的IC來說,
除了追求性能外另外一個重點就是如何降低功耗,
除了電池考量外,高功耗帶來較高的溫度,然而隨著溫度升高有可能會導致IC燒毀,
以及cooling的設計會替產品帶來較高的成本,
因此對於如何降低chip的功耗逐漸成為了ic design的顯學
以APPLE 最新的A18 Core來說對比A16的power consumption降低了35%,

那對於ic design的過程中有甚麼手法有機會讓chip的功耗降低呢
在這邊來探討一下
以現今主流的low power 技術大致上有幾種
- clk gating
- power gating
- volatge island
- DVFS
- Multi-Vt
- MBFF
這裡來上述的item做更深一點的介紹讓各位了解到其內涵,
首先對於logic power consumption計算來說,
有一個屬於他的model
Total power = Dynamic power + Static power
這個公式淺而易懂,
意思就是logic power消耗的總和 = 因為變化造成的power消耗 + 底電提供的power消耗
舉個好懂一點例子,
就像是電動車一樣,
當發動後,即使沒有踩油門,也會因為必須讓汽車處於一個可正常工作的條件下,
電池會對發電機等周遭的設備提供一定的電源供應,這個基礎的供電消耗就是屬於static power的部分
而因為油門加速所造成額外的電力消耗則是屬於dynamic power.
又或是我們日常在使用手機一樣,
相信大家都有注意到,即使我手機擺著不用,一段時間後電池的電量還是會隨著時間降低,
因為手機處於一個待機的狀態,電池必須提供他最低的一個用電需求,讓他處於一個功能正常隨時可用的狀態,這就像是底電的部分,屬於static power consumption,又稱為leakage power
對於我們在划手機時,會使的螢幕等一直不斷地更新去update最新的data,
在為了要更新狀態所消耗的電就屬於dynamic power consumption,亦為switching power + internal power (short circuit power)
那我們把觀察的scale 縮小
縮到剩一個CMOS來說,
CMOS 屬於電路中的最基本元件,
在操作上,必須提供他一個最基本的工作電壓,也就是底電的部分,讓他可以處於一個待命的狀態,隨時都可以運作,這時所消耗的最基本電量即為static power
對於trigger cmos output從0變成1或是從1變成0,
因為這個轉換的過程所造成的電量即為dynamic power
Total power = Dynamic power + Static power
= (Switching power + Internal power) + leakage power
- switching power : 驅動output 0->1 or 1->0過程對負載或電容充放電所耗的電量
- internal power : cmos在從0->1 or 1->0 過程中,會有短暫的時間處於transition( nmos+pmos全導通的狀態),形成一個短路電流
- leakage power : 半導體製程特性,trun on後即使沒有做任何行為依然會出現一個微小的電流從substrate或gate oxide流出

1.clk gating
clk gating屬於ic design中最常見的手法,
IC在運作過程中,所有的register或latch皆是由clk來trigger,
每當active clk來臨,就會去更新data
假如我function都劃分得很開,
每塊module都有自己特定的功能,
像是對於手機運作來說,
如果我只想要用藍芽耳機聽串流音樂,
此時我使用到的module可能有blue tooth module , DAC module , wifi module ,
此外像是display ,camera module等是完全不用被用到的
因此這些不會用到的module基本上就算該區域個regiser一直被clk trigger也不會需要update任何東西,
所以我們就說,那不如直接把這些沒用到的module clk直接停掉吧
這樣這些idle的register就不會再動了,直接切掉了dynamic power
只會剩下讓他們維持待命所需的基本電量消耗 static power
因此對於做了clk gating的register來說
基本上可以看成Total power = static power = leakage power
此外於clk source to register上的 clock tree cell也會一併停止toggle
- power gating
power gating 和clk gating一樣常見的技術,
對於power gating來說,使屬於一個簡單暴力的省電方法,
對於那些不需要使用的module,我直接把他的供電給關了,
等到下次要被使用時,再把他開起來,表面是就是幫module的供電上裝一個開關,
不用時可以把電關掉,
和我們生活中一樣,隨手關燈達到省電的效果,
以clk gating使用的例子來說,
我用藍芽耳機來聽串流音樂,
就只會用到某幾個module而已,
對於剩下處於idle狀態的register來說雖然因為使用了clk gating來省掉了dynamic power,不過最終還是剩下了static power
因此我狠一點在這些module 供電的地方裝一個開關,
在不用的時候除了把dynamic power掐掉外,連底電都不給他了,
直接達到沒有耗電的狀態
Total power = 0
等到下次會需要使用時,我們在把power給他開回來