字面上的意思為電壓島,
概念上是把不同function的module給予不同的driving volatge
然而在ic design中有個rule, driving voltage 越高就能讓logic動的越快
也就是說,當你希望邏輯運算的越快,原則上就需要給他越大的電壓,造成較大的耗電
當fuction面上如果沒有高速運算的需求,則給他較低的電壓,即可達成省電的效果
以下圖為範例
cpu上切成一塊一塊不同功能的block
2個high-performance cores
4個high-efficency cores
1個usb controller
6個gpu cores
因為各個function所需最快的clk period皆不同
以usb來說data的吞吐量一定遠小於cpu和gpu
因此如果和cpu使用一樣的driving voltage就會產生多餘的耗電
以high performance cpu和gpu來說
資料運算晾一定非常的大,因此必須提供他最高的driving volatge,好確保data運算的效能無虞
以effifiency cpu來說
功能上的配置可能希望達到一個power和算力的平衡,運作在較輕載的場景下,因此不用給到像high performance cpu一樣的電壓即可滿足spec
因此voltage island最大的精神就在說
不希望所有的module都用一樣的driving voltage,因為實際上並不是所有的module在使用上都需要有一樣的throghput,因此可以根據module的特性給予他足夠的driving voltage即可
DVFS 全名為 dynamic voltage and frequency scaling
意思為對於電壓及頻率上根據不同的場景做一個動態的切換調整
前面voltage island提到說,
high performance cpu因為需要運算龐大的資料量所以需要給他一個較高的driving volatge,好讓他可以在高頻下正常運作,假設為Vhp=0.9V配工作頻率1200MHz
但是應用上不不會永遠都會需要這種極端的運算能力,
有時候只是單純觀看影片或玩輕載的遊戲時,或許只需要他最高算力的一半而已
因此這時候給他0.9V,1200MHz極為效能過剩,
有沒有機會不要殺雞用牛刀呢
這時除了用high efficiency core之外還有個方法
就是我們嘗試降地它的driving voltage和frequency
可能只需要給他0.75V和800MHz即可滿足目前的需求
因此就省下了效能過剩導致的供電浪費
因此當voltage island和DVFS都應用於設計中時,
上圖的範例看起來可能就會變成這樣
每個block不僅僅只有各自的供電,還可以依據不同的使用狀況調整所需的供電
先前如何解hold time violation文章中曾提及過
同樣的製程來說,每個cell都會提供不同type讓使用者作挑選,
其本質上的差異即為製造時對CMOS doping的濃度
製造出不同threshold voltage的cell
速度越快的cell有著耗電越大的特性
這樣的話,我想省電是不是全部都用HVT type的cell就好?
答案是理論上確實是這樣沒錯,
但是有個很重要的關鍵,
前面提到說DVFS可以根據不同的場景做電壓和頻率的挑選,
在ic deisgn中cell的driving voltage越高可以跑得越快
因此如果我的DVFS定的不合哩,讓cell處於一個低壓卻要跑高頻的時候,
此時的cell type就會因為要滿足setup time / hold time sign off的需求
被迫使用Low Vt的cell,藉由將低Cell的反應時間來盡可能的滿足timing 需求,
因此為了要達到真正的省電,DVFS各個檔位和頻率的選擇非常重要,
沒有選好會出現代償效應,靠Multi-Vt的方式來解決timing issue
想一個小問題
是不是有辦法把power gating的概念也融入DVFS的範例圖中呢?
另外有沒有一種方法是可以做到power gating
卻在需要喚醒時可以迅速恢復成前一刻的狀態呢?
..
..
.
實際上是有的