Ek transistor jo "off" hai woh bhi subthreshold current Ileak leak karta hai:
Pstatic=VddIleak
Yeh modern nodes mein dominate karta hai aur switching par depend nahi karta — ek idle block phir bhi leak karta hai. Isi wajah se hume power gating chahiye.
HOW (naive approach, aur yeh galat kyon hai):
Pehla instinct hai gated_clk = clk AND enable. Yeh dangerous hai kyunki agar enable tab change ho jab clk high ho, toh ek glitch (ek runt pulse) milti hai jo flops ko falsely trigger kar sakti hai.
Fix — Integrated Clock Gating (ICG) cell: enable ko clock ke low phase par latch karo, taaki yeh next high edge se pehle stable ho:
enable ──▶ [ Latch (transparent when clk=0) ] ──▶ en_latched
│
clk ─────────────────────────────────────────── AND ──▶ gated_clk
Kyunki en_latched sirf tab update hota hai jab clk=0 ho, AND gate ko clk=1 ke dauran mid-cycle change kabhi nahi dikti → glitch-free.
YEH KYA HELP NAHI KARTA: static leakage. Flops abhi bhi powered baithe hain; woh sirf switch nahi karte.
VVDD ek virtual supply hai. Jab asleep ho, header off → VVDD neeche float karta hai → block starve hota hai → leakage ≈ 0.
Costs (WHY yeh free nahi hai):
Wake-up latency aur rush current — Vdd restore karne par block ke saare internal caps recharge hote hain, ek bada inrush spike draw karke.
State loss — flip-flops apna content kho dete hain. Fix karo retention registers se (ek tiny always-on shadow latch state preserve karta hai).
Floating outputs — ek sleeping block ke outputs undefined ho jaate hain aur awake blocks ko corrupt kar sakte hain. Fix karo isolation cells se jo outputs ko ek known value par clamp karti hain.
Area/IR-drop — sleep FET bada hota hai aur series resistance add karta hai.
Break-even (WHY tum choti idles ke liye gate nahi karte):
Power gating tabhi faaydemand hoti hai jab sleep mein bachi energy wake-up energy se zyada ho:
Pon⋅tidle>Ewakeup⇒tidle>tbreak−even
Ek full charge/discharge cycle CLVdd2 kyon dissipate karta hai?
Supply har charge par QVdd=CLVdd2 deliver karta hai; aadha charging mein jalta hai, aadha discharging mein → total CLVdd2 per cycle.
Clock gating kya reduce karta hai?
Dynamic switching power, ek register ka local activity factor α ~0 set karke.
Power gating kya reduce karta hai?
Static leakage power, block ko sleep transistor ke zariye Vdd se disconnect karke.
clk AND enable ek bura clock gate kyon hai?
enable ka clk=1 ke dauran change hona glitches/runt pulses create karta hai jo flops ko falsely clock kar sakte hain.
ICG cell kya hota hai?
Integrated clock gating: ek latch (clk low par transparent) jo ek AND ko feed karta hai, enable ko clk high ke dauran stable banata hai → glitch-free.
Retention register kya hota hai?
Ek flip-flop jisme ek always-on shadow latch hota hai jo state preserve karta hai jab main block power-gated ho.
Isolation cells ka purpose?
Ek sleeping block ke outputs ko ek known value par clamp karna taaki floating outputs awake logic ko corrupt na karein.
Power-gating break-even condition
Gate karo sirf agar tidle>Ewakeup/Pon ho, warna wake-up energy saved leakage se zyada ho jaati hai.
Dynamic-power reduction mein kaun zyada dominant hai, Vdd ya f?
Vdd — yeh squared hai, toh voltage scale karna zyada help karta hai (lekin gates slow ho jaate hain).
Header vs footer switch?
Header = PMOS Vdd aur virtual VDD ke beech; footer = NMOS virtual VSS aur GND ke beech.
Recall Feynman: ek 12-saal ke bachche ko explain karo
Ek bade ghar ki kalpana karo jisme bahut saari lights aur chalte naale hain. Clock gating aise hai jaise un rooms ki lights band karna jisme koi nahi hai — room abhi bhi electricity se connected hai, lekin kuch flicker nahi karta, toh tum "flickering" bill par bachate ho. Power gating aise hai jaise poori khaali wing ka main breaker flip karna — ab switched-off lights se jo thodi si electricity leak hoti thi woh bhi chali gayi. Lekin jab tum woh breaker wapas on karte ho, lights warm up hone mein thoda time lagta hai aur clocks reset ho jaate hain (state kho jaati hai) — toh tum yeh sirf tab karte ho jab wing lambe time ke liye khaali ho.