- Voltage island
字面上的意思為電壓島,
概念上是把不同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
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不僅僅只有各自的供電,還可以依據不同的使用狀況調整所需的供電

- Multi-Vt
先前如何解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
- MBFF
MBFF (Multi-bit filp flop) 顧名思義指的是有很多bits的filpflop,
和以往的single bit filpflop不同就是以前如果是宣告 [7:0] reg0 的話,
synthesis tool會利用8顆1bit的filpflop組出這個訊號,
但mbff的樣貌則是只有1顆filpflop但是提供了8bits的儲存空間,
直接從類比的電路去優化了ppa,
讓cell可以共用的部分一起share來降低area及power
想一個小問題