ENARM
VLSI · Low Power Design

Low Power Design

Մոտավորապես 90–65nm node-երից ցածր՝ subthreshold արտահոսքը դադարեց լինել կլորացման սխալ և դարձավ համեմատելի — երբեմն ավելի մեծ, քան — dynamic switching էներգասպառումը, և հենց դա է պատճառը, որ ժամանակակից չիպերը իրար վրա շերտավորում են հինգ-վեց տարբեր low-power տեխնիկա՝ փոխանակ որևէ մեկ հնարքի վրա հենվելու։ Այս էջը ընդգրկում է այն տեխնիկաները, որոնք գործում են արդեն UPF & IPF էջում ընդգրկված power-intent բնութագրման կողքին. multi-threshold-voltage (multi-Vt) բջիջների selection, power gating switch-երի սխեմայի մակարդակի ճարտարապետություն, adaptive body biasing և dynamic voltage/frequency scaling — իրական switch-բջիջի և control սխեմաների հետ, ոչ միայն դրանք նկարագրող SDC/UPF հրամանների։

Ինչու է դա կարևոր

Արտահոսքն ընդդեմ Dynamic էներգասպառման

Չիպի ընդհանուր էներգասպառումը երկու շատ տարբեր մեխանիզմների գումարն է։ Dynamic էներգասպառում-ը ծախսվում է միայն այն ժամանակ, երբ գեյթը իրականում switch է անում — load capacitance-ը լիցքավորելիս և պարպելիս, գումարած կարճ short-circuit հոսք, երբ և՛ PMOS-ը, և՛ NMOS-ը transition-ի ընթացքում մասամբ միացած են։ Արտահոսքային էներգասպառում-ը ծախսվում է անընդհատ՝ անկախ նրանից՝ ինչ-որ բան switch է անում, թե ոչ, ժամանակակից node-երում գերիշխվում է subthreshold conduction-ով — հոսք, որը հոսում է լիարժեք անջատված ենթադրվող տրանզիստորի միջով, որովհետև channel-ը երբեք լիովին չի ազատվում կրիչներից, երբ gate length-երն ու oxide-ի հաստությունը բավական փոքրանում են։

⤢ Սեղմեք խոշորացնելու համար Dynamic-ն ընդդեմ արտահոսքային էներգասպառման՝ տեխնոլոգիայի scale-ի ընթացքում ավելի փոքր technology node → ընդհանուր էներգասպառման մասնաբաժինը dynamic էներգասպառում արտահոսքային էներգասպառում ≈90–65nm crossover շրջան հին, ավելի մեծ node-եր. dynamic էներգասպառումը գերիշխում է առաջադեմ node-եր. արտահոսքը համեմատելի է dynamic էներգասպառմանը, երբեմն գերազանցում է այն

Հենց այս crossover-ն է պատճառը, որ արտահոսքին ուղղված տեխնիկաները — multi-Vt, power gating, body biasing — դարձան առաջնակարգ դիզայներական մտահոգություններ, ոչ թե հետին պլանի մանրուքներ, երբ node-երը scale եղան մոտավորապես 90–65nm-ից ցածր։

ՏեխնիկաՀիմնականում ուղղված էՈրտեղ է ընդգրկված
Clock gatingDynamic էներգասպառում (կանգնեցնում է ավելորդ toggling-ը)Physical Design → CTS
Multi-Vt բջիջների selectionԱրտահոսքային էներգասպառում (հիմնականում), որոշ dynamic փոխզիջումԱյս էջը
Power gatingԱրտահոսքային էներգասպառում (գրեթե ամբողջական, gated region-ների համար)Այս էջը + UPF & IPF
Adaptive body biasingԱրտահոսքային էներգասպառում (dynamic tuning)Այս էջը
Multi-voltage / voltage islandsDynamic էներգասպառում (V² անդամ)UPF & IPF
DVFS / AVSԵրկուսն էլ, adaptively runtime-ումԱյս էջը
Բջիջի մակարդակի տեխնիկա

Multi-Threshold Voltage (Multi-Vt) Design

Յուրաքանչյուր ստանդարտ բջիջների գրադարան մատակարարում է նույն logic գեյթի մի քանի ֆիզիկապես նույնական տարբերակներ, որոնք տարբերվում են միայն տրանզիստորի threshold լարմամբ (Vt) — gate-to-source լարումը, որն անհրաժեշտ է, նախքան channel-ը սկսի հաղորդել։ Vt-ի բարձրացումը տրանզիստորը switch է անել տալիս ավելի դանդաղ (ավելի վատ հապաղում), բայց էքսպոնենցիալ կերպով նվազեցնում է նրա subthreshold արտահոսքը, Vt-ի իջեցումն անում է հակառակը։ Multi-Vt design-ը շահագործում է սա՝ բջիջ առ բջիջ ընտրելով այն տարբերակը, որ չիպի տվյալ տեղակայությունն իրականում պահանջում է։

⤢ Սեղմեք խոշորացնելու համար հապաղում ↔ արտահոսք փոխզիջումը threshold լարում (Vt) → արտահոսք / հապաղում արտահոսք (նվազում է Vt-ի աճով) հապաղում (աճում է Vt-ի աճով) LVT SVT HVT Կիրառելով այն իրական path-ի վրա launch FF HVT SVT LVT capture FF Off-critical logic-ը default-ով HVT է արտահոսքի համար, միայն ժամանակային առումով critical path-ի պոչն է swap արվում LVT-ի

HVT-ն (high-Vt) արտահոսքը խնայող default ընտրությունն է չիպի մեծ մասի համար, SVT-ն (standard-Vt) հավասարակշռված միջին տարբերակն է, LVT-ն (low-Vt) ծախսվում է խնայողաբար՝ միայն այն կոնկրետ գեյթերի վրա, որոնք իրականում սահմանափակում են critical path-ը։

ՏարբերակԱրագությունԱրտահոսքԲնորոշ կիրառություն
LVT (low-Vt)ԱմենաարագԱմենաբարձրCritical ժամանակային path-եր, տակտային ազդանշանի network-ներ — կիրառվում է խնայողաբար, քանի որ ամեն LVT բջիջ ավելացնում է արտահոսք
SVT (standard-Vt)BaselineBaselineDefault ընտրություն design-ի մեծ մասի համար — հավասարակշռված միջին տարբերակը
HVT (high-Vt)ԱմենադանդաղԱմենացածրNon-critical logic՝ ավելորդ ժամանակային պահուստով — հիմնական զենքը չիպի ընդհանուր արտահոսքի դեմ

Dual-Vt և triple-Vt հոսքեր

Dual-Vt հոսքը (սովորաբար SVT + HVT) տարածված default-ն է. սինթեզը և place-and-route գործիքները օպտիմալացման ընթացքում non-critical path-երի բջիջները SVT-ից swap են անում HVT՝ զուտ արտահոսքը կրճատելու համար, քանի դեռ ժամանակային պահուստը թույլ է տալիս։ Triple-Vt հոսքը միջավայրում ավելացնում է LVT՝ իսկապես critical path-երի այն մի քանիսի համար, որոնք ուրիշ կերպ չեն կարող close անել ժամանակային պահանջները։ Քանի որ LVT արտահոսքը այնքան ավելի բարձր է per բջիջ, triple-Vt գրադարանները կիրառվում են վիրահատական ճշգրտությամբ — թիմերը հետևում են design-ում LVT բջիջների area-ի տոկոսին որպես արտահոսք-ռիսկի ցուցանիշ, ոչ միայն ժամանակային closure-ի հարմարություն։

Vt swap որպես ուշ-փուլային ECO

Քանի որ բջիջի HVT/SVT/LVT տարբերակները սովորաբար footprint-compatible են (նույն չափը, նույն pin տեղակայությունները, նույն connection-ները), բջիջի Vt տարբերակը swap անելը հնարավոր ամենաէժան engineering change-երից է — հաճախ same-layer, երբեմն նույնիսկ metal-only փոփոխություն։ Սա Vt-swap ECO-ները դարձնում է տարածված ուշ-փուլային լծակ. եթե post-route signoff-ը ցույց է տալիս արտահոսքի budget-ի գերազանցում՝ ավելորդ ժամանակային margin-ով, կամ ժամանակային violation՝ ավելորդ արտահոսքի budget-ով, ուղղումը հաճախ ազդակիր path-երի երկայնքով պարզապես Vt տարբերակների վերընտրությունն է, այլ ոչ թե որևէ բանի վերատեղադրումը կամ վերաերթուղավորումը։

Սխեմայի և ճարտարապետության մակարդակ

Power Gating-ի ճարտարապետություն

UPF & IPF էջն ընդգրկում է, թե ինչպես է power gating-ը բնութագրվում (create_power_switch, power state-եր)։ Այս բաժինն ընդգրկում է, թե ինչ է իրականում այդ switch-ը տրանզիստորի մակարդակում, և երկու շատ տարբեր եղանակները, որոնցով այն կառուցվում է իրական հատակագծի մեջ։

⤢ Սեղմեք խոշորացնելու համար Header switch (PMOS) VDD (real) PMOS sleep tx gated by SLEEP virtual VDD logic block (pull-up/pull-down) PMOS. ավելի ցածր արտահոսք per device, բայց ավելի ցածր drive → պահանջում է ավելի շատ area Footer switch (NMOS) logic block (pull-up/pull-down) virtual VSS NMOS sleep tx ավելի բարձր drive → ավելի փոքր area, բայց ավելի leaky և noisy virtual ground-ի վրա

Header-ը (PMOS, gates VDD) և footer-ը (NMOS, gates VSS) switch-երը երկու տարբերակներն են, իրական design-երը հաճախ խառնում են երկուսն էլ, կամ օգտագործում մեկը բացառապես՝ կախված նրանից, թե որ փոխզիջումն է ավելի կարևոր տվյալ block-ի համար։

Երբ SLEEP control-ը անջատված է, և՛ header, և՛ footer sleep տրանզիստորները հաղորդում են նորմալ, և block-ի «virtual» power/ground rail-երը վարվում են ճիշտ ինչպես իրական VDD/VSS-ը։ Երբ SLEEP-ը assert է անում, sleep տրանզիստորը բացվում է՝ ամբողջությամբ անջատելով block-ի միջով անցնող ուղիղ VDD-to-VSS արտահոսքի path-ը — switch բջիջներն իրենք դեռ մի քիչ leak են անում (դրանք էլ են active տրանզիստորներ), բայց այդ մնացորդային արտահոսքը փոքր է այն ամենի կողքին, ինչ ամբողջ gated block-ն այլապես կդրաներ։

Fine-grain-ն ընդդեմ coarse-grain gating-ի

Fine-grain

Sleep տրանզիստորը կառուցվում է հենց ամեն ստանդարտ բջիջի մեջ՝ virtual rail-ը երթուղավորված բջիջի ներսում։ Մշակվում է սովորական place-and-route հոսքերով՝ ինչպես ցանկացած այլ ստանդարտ բջիջ, և gating-ի granularity-ն կարող է իջնել մինչև առանձին բջիջներ կամ փոքր cluster-ներ — ամենաճկուն, ամենա-արտահոսք-արդյունավետ տարբերակը։ Գինը. ամեն մեկ gated բջիջ կրում է իր սեփական switch-տրանզիստորի area overhead-ը, և սերտորեն cluster-ված բջիջներն անկախ gating անելը կարող է ստեղծել լոկալ լարման variation, որը բարդացնում է դրանց միջև ժամանակային closure-ը։

Coarse-grain

Switch բջիջների բաշխված network-ը — կառուցված հենց power grid-ի մեջ, ոչ թե ստանդարտ բջիջների — gate է անում սնուցումն ամբողջ block-ին ընդհանուր virtual power network-ի միջոցով։ Երկու տարածված տոպոլոգիա. ring-based (switch-երը շրջանում են block-ի պարագիծը՝ պարզեցնելով ներքին grid-ը) և column-based (switch-երն անցնում են որպես column-ներ block-ի միջով՝ global grid-ը վերին metal-ի, իսկ switched rail-երը ստորին layer-ների վրա)։ Շատ ավելի ցածր area overhead և ավելի քիչ PVT-variation զգայունություն, քան fine-grain-ը, մի քիչ ավելի քիչ արտահոսքի reduction-ի և մի նոր խնդրի գնով. simultaneous switching capacitance։

Rush հոսանք և daisy-chained wake-up

Այն ակնթարթին, երբ մեծ gated block-ի sleep տրանզիստորները բոլորն միասին միանում են, այդ block-ի decoupling-ի և load capacitance-ի ամեն մասը լիցքավորվում է միանգամից — հսկայական, կարճ հոսանքի spike («rush հոսանք» կամ inrush հոսանք), որը կարող է ընդհանուր power grid-ը այնքան ցած քաշել, որ առաջացնի IR-drop violation-ներ կամ glitch-ներ չիպի այլ մասերում՝ ճիշտ այն dynamic voltage-drop failure mode-ը, որն ընդգրկված է EMIR Analysis էջում։

⤢ Սեղմեք խոշորացնելու համար Բոլոր switch-երը միանգամից հսկայական հոսանքի spike grid-ը չի կարող մատակարարել այն — IR-drop ռիսկ ամբողջ չիպում Daisy-chained, staggered բաշխված մի քանի stage-երի վրայով ամեն switch խումբ միացնում է հաջորդին կարճ հապաղումից հետո

Switch-enable ազդանշանը daisy-chaining անելը — կամ counter-ների միջոցով ընտրողական sub-block-ներ միացնելը — inrush հոսանքը բաշխում է մի քանի տակտային ազդանշանի cycle-ի վրայով՝ մեկի փոխարեն, մի փոքր ավելի երկար wake-up latency-ի գնով։

ՄոտեցումRush հոսանքը շտկում էՓոխզիջում
Daisy-chain enableԱմեն switch segment-ի enable-ը հետաձգվում է նախորդի նկատմամբ, այնպես որ ամբողջ block-ը միաժամանակ inrush չի անումՄի փոքր ավելի երկար ընդհանուր wake-up ժամանակ
Selective/counter-driven activationSwitch-երի sub-block-երը միացվում են վերահսկվող հաջորդականությամբ՝ counter-ի միջոցով, այլ ոչ թե բոլոր switch-երը կիսում են մեկ enableԼրացուցիչ control logic և wake-up sequencing-ի բարդություն
Ավելի մեծ power gridՊարզապես grid-ին տալիս է բավական headroom՝ spike-ը կլանելու համար՝ առանց IR-drop budget-ը խախտելուԵրթուղավորման resource overhead ամենուր, ոչ միայն gated block-ի մոտ
Արագ ամփոփում

Isolation-ը և Retention-ը, սխեմայի տեսանկյունից

Երկու ռազմավարությունների ամբողջական UPF syntax-ը գտնվում է UPF & IPF էջում։ Սխեմայի մակարդակում isolation cell-ը մոտ է հնարավոր ամենապարզ building block-ին. 2-input գեյթ՝ control ազդանշանով։

Isolation cell-ը որպես AND գեյթ gated-domain signal EN AND out EN=1. buffer (pass-through)։ EN=0. output-ը clamp արված logic 0-ի։ → UPF & IPF: isolation Retention register Standard FF + always-on shadow latch SAVE. պատճենում է FF state-ը ցածր-արտահոսքային shadow-ի մեջ power-down-ից առաջ RESTORE. պատճենում է shadow state-ը հետ FF-ի մեջ power-up-ից հետո Shadow latch-ը մնում է always-on սնուցման վրա — նույն սկզբունքը, ինչ dual-սնուցման retention FF-ը UPF & IPF էջում։ → UPF & IPF: retention

Սեղմեք որևէ box, որ բացեք ամբողջական UPF syntax-ը։ Isolation control ազդանշանները և retention save/restore ազդանշանները երկուսն էլ գալիս են նույն power-gating controller-ից, որը drive է անում sleep տրանզիստորները — բոլոր երեքը մեկ համակարգված հաջորդականություն են, ոչ թե երեք անկախ մեխանիզմ։

Sequencing-ի հիշեցում. isolation-ը assert է անում power-down-ից առաջ և release power-up + reset-ից հետո, retention save-ը տեղի է ունենում power-down-ից առաջ, restore-ը՝ power-up-ից հետո, isolation release-ից առաջ։ Ամբողջական sequencing դիագրամները և յուրաքանչյուրի SDC/UPF հրամանները գտնվում են UPF & IPF էջում։
Սխեմայի մակարդակի տեխնիկա

Adaptive Body Biasing

MOSFET-ի threshold լարումը միայն տոպոլոգիայով ֆիքսված չէ — այն նաև կախված է իր body-ի (well/substrate) և source-ի միջև լարումից՝ body effect-ից։ Body biasing-ը միտումնավոր կիրառում է ոչ-զրոյական body-to-source լարում՝ Vt-ն վեր կամ վար տեղաշարժելու համար այն բանից հետո, երբ չիպն արդեն արտադրված է, առանց ընդհանրապես ստանդարտ բջիջների գրադարանին կամ հանգույցների ցանկին դիպչելու։

⤢ Սեղմեք խոշորացնելու համար Forward body bias (FBB) N-well biased slightly toward source Vt decreases ավելի արագ switching, ավելի բարձր արտահոսք օգտագործվում է դանդաղ process corner-ում fab-ից վերադարձած բյուրեղիկը փոխհատուցելու համար Reverse body bias (RBB) N-well biased away from source Vt increases ավելի դանդաղ switching, ավելի ցածր արտահոսք օգտագործվում է արտահոսքի margin-ը հետ բերելու բյուրեղիկի վրա, որ վերադարձել է արագ, կամ idle period-ների ընթացքում

Երկու ուղղություններն էլ օգտագործում են նույն body-bias generator սխեման և նույն ֆիզիկական well contact-ները — փոխվում է միայն կիրառված bias-ի նշանը, ինչն էլ adaptive (ի տարբերություն ֆիքսված) body bias-ը գործնական է դարձնում։

Adaptive-ն ընդդեմ ֆիքսված body bias-ի

Ֆիքսված body bias-ը, մեկ անգամ սահմանված, կարող է փոխհատուցել միայն միջին բյուրեղիկի համար։ Adaptive body biasing (ABB)-ը փոխարենը օգտագործում է on-chip closed-loop generator՝ մոնիտորինգ անելով իրական սիլիցիումը (ring-oscillator-ի կամ նման reference structure-ի միջոցով, հայեցակարգորեն նույն բյուրեղիկի մակարդակի չափումը, որ նկարագրված է process corner-ների համար Fabrication էջում) և անընդհատ ճշգրտելով well bias-ը, որպեսզի յուրաքանչյուր առանձին բյուրեղիկ — ոչ միայն process distribution-ի միջինը — հասնի իր թիրախային speed/արտահոսք կետին։ Սա փոխհատուցում է բյուրեղիկ-to-բյուրեղիկ process variation-ը, և կարող է նույնիսկ հետևել ավելի դանդաղ drift-ի, ինչպիսին են ջերմաստիճանը և aging-ը (NBTI-driven Vt shift) ապրանքի ողջ կյանքի ընթացքում։

Որտեղ է սա միանում. ABB-ն հարձակվում է ճիշտ նույն process-variation խնդրի վրա, որ process corner-ները և on-chip variation modeling-ը (On-Chip Variation & Sigma) statistically հաշվի են առնում signoff-ում — ABB-ն runtime, per-բյուրեղիկ hardware ուղղումն է, corner/OCV analysis-ը design-time, worst-case-bounding վերլուծությունն է։
System-Level տեխնիկա

DVFS & AVS

Երկու տեխնիկան էլ փոխում են սնուցման լարումը tapeout-ից հետո, դաշտում, բայց նրանք պատասխանում են տարբեր հարցերի։ Dynamic Voltage and Frequency Scaling (DVFS)-ը փոխում է լարումը և հաճախությունը միասին, դիսկրետ քայլերով, driven workload-ի պահանջով — scheduler-ը որոշում է «ինձ հիմա ավելի շատ արագագործություն է պետք» և պահանջում ավելի բարձր V/F operating point։ Adaptive Voltage Scaling (AVS)-ը ավելի նեղ է և ավելի ինքնավար. closed feedback loop-ը անընդհատ trim է անում սնուցման լարումը մինչև նվազագույն արժեքը, որը դեռ բավարարում է թիրախային արագությանը՝ փոխհատուցելով process, լարում և temperature պայմանները, որ չիպն իրականում ապրում է հենց հիմա — ոչ թե workload-ի պահանջ, սիլիցիումի իրականություն։

⤢ Սեղմեք խոշորացնելու համար Closed-loop AVS control Հապաղման chain reference same VDD as real logic Հաճախության comparator չափում է հապաղման chain freq. vs. target Լարման regulator trim է անում VDD-ն վեր/վար supplies Real logic հապաղման chain-ը կիսում է նույն rail-ը, ուստի ապրում է նույն PVT պայմանները, ինչ իր պաշտպանած logic-ը Իրական հայտնված closed-loop AVS controller. 80kHz–20MHz operating range, ≈38µs settling time՝ standby→max-throughput քայլի համար

Քանի որ հապաղման chain-ը նստում է նույն սնուցման rail-ի վրա, ինչ real logic-ը, նրա չափված հաճախությունը ուղղակիորեն արտացոլում է, թե որքան արագ է այդ logic-ն իրականում հենց հիմա — այս կոնկրետ բյուրեղիկի վրա, այս կոնկրետ ջերմաստիճանում, իր կյանքի այս պահին — թույլ տալով loop-ին գտնել նվազագույն ապահով լարումը, այլ ոչ թե ֆիքսված worst-case ենթադրություն։

DVFSAVS
Driven byWorkload / software-ի պահանջ (արագագործության state-եր, «P-states»)Անընդհատ hardware feedback loop
Փոխում էԼարումը և հաճախությունը միասին, դիսկրետ քայլերովՄիայն լարումը, անընդհատ trim արվող
Փոխհատուցում էՑանկալի արագագործության մակարդակըProcess, լարում, temperature, aging
Բնորոշ կիրառությունCPU/GPU արագագործության governor-ներ, battery life-ի կառավարումԴուրս քամելով margin-ը, որ ֆիքսված-լարման design-ը այլապես կվատնե worst-case guardband-ի վրա

Կիրառություններ runtime էներգասպառման խնայողությունից անդին

Նույն DVFS ենթակառուցվածքը, որ կառավարում է runtime էներգասպառումը, կրկին օգտագործվում է bring-up-ի և test-ի ընթացքում. սնուցման լարումը կանոնավոր ինտերվալներով աստիճանաբար իջեցնելը standard եղանակ է բյուրեղիկի իրական minimum functional լարումը (Vmin) գտնելու, և թիթեղի sort binning-ը կարող է օգտագործել DVFS-ոճի lookup table՝ մասերը դասակարգելու ըստ իրենց իրական լարման/հաճախության կարողության, այլ ոչ թե մեկ pass/fail threshold-ի — ուղղակիորեն լրացնելով speed-binning գործընթացը, որ նկարագրված է Post-Silicon Bring-Up էջում։

Մեթոդաբանություն

Ամեն ինչ միասին հավաքելով

Այս տեխնիկաներից ոչ մեկը իրական չիպի վրա մեկուսացված չի օգտագործվում — դրանք շերտավորվում են, յուրաքանչյուրը թիրախավորելով էներգասպառման budget-ի տարբեր հատված, համակարգված նույն UPF power intent-ով և նույն power-gating controller-ով։

ՇերտՏեխնիկաԽնայում է
Բջիջների selection (սինթեզ)Multi-Vt swappingԱրտահոսք non-critical path-երում, ձրի (ոչ մի area/ժամանակային գին swap-ից անդին)
Sequential element-ներClock gating (տես CTS)Dynamic էներգասպառում idle register-ներում, ամեն cycle
Block մակարդակPower gating + isolation + retentionԳրեթե ամբողջական արտահոսք լիովին idle block-երում, երկարատև idle period-ների համար
Domain մակարդակMulti-voltage / voltage islands (տես UPF domains)Dynamic էներգասպառում՝ ավելի ցածր V²-ի միջոցով non-performance-critical domain-ներում
Բյուրեղիկի մակարդակ, staticAdaptive body biasingPer-բյուրեղիկ արտահոսքի margin, կորսված process variation-ի պատճառով
System մակարդակ, runtimeDVFS / AVSԵՒ՛ dynamic, և՛ արտահոսքային էներգասպառում, adaptively, համապատասխանեցված իրական workload-ին և իրական սիլիցիումին

Բոլոր վեց շերտերը մեկ անգամ բնութագրվում են նույն UPF ֆայլում (տես UPF in the Design Flow), միասին verified են power-aware մոդելավորման մեջ, և միասին իրականացվում են սինթեզի ու physical design-ի կողմից — չիպի power architecture-ը մեկ համակարգված համակարգ է, ոչ թե վեց առանձին հետին պլանի մանրուք, որ վերջում պտուտակված են վրան։

Աղբյուրներ