Pswitch = Ceff * Vvdd^2*Fclk,
Pshort-circuit = Isc * Vdd * Fclk,
Pleakage = f(Vdd, Vth, W/L)
盡管對電壓的scaling,可以以平方的關系減小dynamic/leakage power,但是voltage的scaling會影響gate delay,
setup/hold timing,memory access time scale。
voltage 的dynamic scaling,在processor和multi media的sys中會有明顯的作用。
但是每一個votage的產生,都需要一個regulator的配合,會造成設計的復雜。每一個votage的產生都需要額外的power rail,
造成power的浪費,所以一般都將voltage和frequency作為N個離散的pair來進行設計。
如何根據應用場景scenario,來決定voltage的大小是一個比較困難的事情。
可以通過FPGA的Prototype仿真來完成。
freq的降低,會使得處理時間增加,所以從任務處理方面來看,並沒有節能,
主要是因為電壓的降低不支持那么高的Freq,所以需要進行scaling。
常見的幾種voltage scale的技術:
1)static votage scaling(SVS):不同的block和sys,給不同的fixed voltage。
2)Multi-level votage scaling(MVS):一個block和sys的voltage可以在幾個不同值之間switch。
3)Dynamic voltage and Frequency scaling(DVFS):工作電壓根據workload進行動態的調整。
4)Adaptive voltage scaling(AVS):一個閉環的電壓調節控制。
針對DVFS來說:
在需要增加Freq,over drive的情況下:軟件首先決定最小的clock frequency,再決定最小的voltage供應。
1)cpu program power supply to new voltage。(cpu可以換為其他邏輯)
2)cpu繼續工作在現有freq,直到voltage穩定。
3)cpu program新的freq,可以是clock divider或者PLL,如果是PLL,則需要花費更多時間等待PLL穩定。
如果是要降低Freq,則執行順序:
1)cpu program新的freq。
2)等待clock divider或者PLL穩定。
3)cpu program新的voltage。
總之Freq只有在voltage增加之后,才能提高,Freq必須在voltage減小前,先降低。
針對timing/voltage的value。
很多的DVFS系統都設置一些discrete voltage/frequency pair。
如果pair太少,可能省電效果不好,太多可能造成decide邏輯冗雜。
可以根據:clock_divider可產生的值,voltage regulator的值來決定。
但是必須保證voltage的值在temperature inversion point以上。(一般情況下delay隨着voltage的增加而減小,
delay隨着temperature的增加而增加,但是,當voltage的值小於2Vt時,delay的值隨着temperature的增加而減小)
(這個voltage的值不確定???)
voltage level的switch可能需要較長的時間,在做design時,可能需要加入counter等延時單元來等待。
如果Freq的scaling涉及到PLL,在relock有效之前,可以先利用別的clock保證logic的有效執行,在lock之后,進行切換。
DVFS是一個open loop的系統,通過frequency/voltage的預留margin來保證不同的PVT下,也可以正常工作。
但是AVS是一個close loop的系統,通過voltage scaling的power supply和delay sensing的performance monitor進行工作。
在DVFS block和剩下的sys之間,最好不要使用sync interface,因為電壓的不同會導致clock的skew不同。
可以使用async邏輯或者latch