CURSUL 05

Tehnici de Optimizare a Consumului Energetic

Durată: 119 min de predare Nivel: licență, anul III - recomandat după Cursul 04 Disciplină: Sisteme Încorporate Laborator asociat: Laboratorul 01 PDF: descarcă suportul EN English version

Cursul trecut a explicat de unde vine consumul unui sistem embedded și cum se măsoară. Acest curs trece la partea inginerească: cum se reduce, metodic, acest consum - de la a trata optimizarea ca o problemă cu constrângeri, la tehnici concrete (reducerea activității de comutare, DVFS avansat, paralelism cu Legea lui Amdahl, pipeline, acceleratoare VLIW) și la managementul dinamic al puterii care decide, automat, când și cum să le aplice.

1Obiectul și structura cursului6 min

Cursul 04 a răspuns la întrebarea „cât consumă sistemul și de ce". Astăzi răspundem la întrebarea următoare, mai grea: „cum reduc acest consum, fără să stric restul cerințelor sistemului?" - pentru că optimizarea energetică izolată de performanță, latență și fiabilitate nu este niciodată răspunsul corect.

Recapitulare din Cursul 04
  • Puterea dinamică CMOS ≈ αC_efV²f - reducerea tensiunii aduce economii pătratice
  • DVFS, clock gating și power gating sunt tehnicile hardware de bază
  • Autonomia depinde de puterea medie, nu de puterea de vârf

Rezultate ale învățării

  • Să formulați optimizarea energetică drept o problemă de minimizare cu constrângeri
  • Să distingeți optimizarea locală de cea globală, la nivel de sistem
  • Să alegeți între strategia „race to idle" și „pace to idle" pentru un scenariu dat
  • Să aplicați Legea lui Amdahl pentru a estima limita accelerării prin paralelism
  • Să explicați de ce un accelerator hardware sau o arhitectură VLIW pot reduce energia
  • Să calculați timpul de break-even pentru o tranziție într-un mod de consum redus

2Optimizarea energetică drept problemă cu constrângeri10 min

Obiectivul optimizării energetice nu este întotdeauna cel mai mic consum instantaneu. Un sistem poate funcționa la putere redusă, dar pentru o durată foarte mare - caz în care energia totală poate fi mai mare; în alte situații, executarea rapidă a unei activități, urmată de revenirea imediată în repaus, este mai eficientă. Optimizarea trebuie evaluată pentru întregul scenariu de funcționare, nu pentru un instantaneu izolat.

Optimizarea energetică drept problemă cu constrângeri
minimizează E(x), unde x = parametrii ajustabili (frecvență, tensiune, algoritm, număr de nuclee active, politica de management energetic), sub constrângerile:
T_execuție(x) ≤ deadline · P_max(x) ≤ P_admis · T_joncțiune(x) ≤ T_max · Q_serviciu(x) ≥ Q_min

Un punct de funcționare care minimizează energia dar nu respectă termenul limită nu este o soluție validă - la fel cum reducerea ratei de eșantionare a unui senzor nu e acceptabilă dacă duce la pierderea unor evenimente critice. Optimizarea energetică reală se joacă mereu înăuntrul acestor constrângeri, nu în locul lor.

Nivelurile la care se poate optimiza

NivelCe se poate influența
Circuit și tehnologietensiunea de alimentare, capacități comutate, curenți de pierderi
Logică digitalănumărul de tranziții, activitate inutilă, comutări produse de hazarduri
Microarhitecturăpipeline, cache, acceleratoare, paralelism, clock/power gating
Sistem de operare / runtimestări de performanță, moduri de repaus, planificarea sarcinilor
Algoritm și aplicațienumăr de operații, transferuri de memorie, volum de date, rata de activare
De reținut Optimizările la nivelurile superioare (algoritm, aplicație) au adesea impactul cel mai mare, pentru că schimbă volumul total de activitate cerut hardware-ului - dar trebuie susținute de mecanisme hardware capabile să oprească sau să adapteze efectiv resursele. Un algoritm mai eficient nu ajută dacă hardware-ul nu poate intra într-un mod de consum redus cât timp nu are de lucru.

3Optimizarea locală și optimizarea globală10 min

Reducerea consumului unei singure componente nu garantează reducerea energiei întregului sistem. Comprimarea datelor poate crește energia consumată de procesor, dar reduce mai mult energia necesară comunicației; un algoritm mai rapid poate necesita o memorie externă cu consum ridicat, devenind, la nivel de sistem, mai puțin eficient decât varianta „lentă".

Energia totală a sistemului
E_total = E_procesor + E_memorie + E_comunicație + E_senzori + E_actuatoare + E_conversie

O optimizare trebuie evaluată prin variația întregii expresii, nu doar a unui termen.

Exercițiu rezolvat

Într-un sistem, comunicația reprezintă 60% din energia totală. O tehnică de compresie reduce energia comunicației cu 40%, dar crește energia procesorului cu o valoare egală cu 5% din energia inițială a sistemului. Merită aplicată tehnica?

Vezi rezolvarea

Economia în comunicație: 0,60 × 0,40 = 0,24 (24% din energia totală inițială).

Creșterea la procesor: 0,05 (5%).

Economia netă: 0,24 - 0,05 = 0,19 → energia totală scade cu 19%, chiar dacă energia procesorului, luată izolat, a crescut. O optimizare „locală" negativă la un subsistem poate fi, totuși, corectă la nivel de sistem.

Compromisurile fundamentale ale optimizării energetice se întind dincolo de energie: performanță (debit, timp de execuție), latență (respectarea deadline-urilor), precizie și calitate, fiabilitate (margini termice), cost/suprafață, și complexitatea software-ului necesar pentru a implementa optimizarea. Nu există o tehnică universal optimă - soluția corectă depinde de profilul real al aplicației.

4Energia per activitate: o completare la metricile din Cursul 046 min

Recapitulăm, pe scurt, metricile relevante pentru compararea variantelor de implementare - subiect tratat pe larg în Cursul 04, dar cu o completare importantă aici: energia per activitate.

Energia per activitate
E_activitate = ∫ P(t) dt, integrată doar pe durata activității analizate (procesarea unui eșantion, o iterație de control, un ciclu de măsurare) - permite compararea unor implementări cu timpi de execuție diferiți, spre deosebire de puterea medie simplă.

Regula practică rămâne aceeași ca la orice metrică de eficiență: utilizarea exclusivă a puterii instantanee sau a curentului maxim, fără context, poate conduce la concluzii greșite - un sistem cu putere de vârf mare poate avea, totuși, cea mai bună energie totală, dacă termină rapid și revine în repaus.

5Race to idle și pace to idle10 min

Pentru o activitate cu deadline, două strategii opuse sunt posibile.

Race to idle Procesorul rulează la frecvență ridicată, termină rapid activitatea, apoi intră în repaus profund. Avantajoasă dacă: puterea în repaus e foarte redusă, tranziția spre repaus e rapidă, funcționarea rapidă nu cere o creștere excesivă a tensiunii, iar celelalte componente pot fi dezactivate imediat după finalizare.
Pace to idle Procesorul rulează la frecvență mai mică, folosind o parte mai mare din intervalul disponibil. Avantajoasă dacă: tensiunea poate fi redusă semnificativ, puterea de repaus nu e mult mai mică decât cea activă, există constrângeri termice sau de putere maximă, ori tranzițiile între stări sunt costisitoare.
De reținut Alegerea corectă se face pe baza energiei măsurate pentru întregul ciclu, nu prin intuiție. Cele două strategii sunt cele două extreme ale aceleiași axe (frecvență/tensiune de lucru), iar sistemele reale aleg adesea un punct intermediar, validat empiric.

Frecvența minimă necesară

Dacă o activitate are nevoie de N cicluri și un deadline relativ D, frecvența minimă ideală este f_min = N / D. În practică e nevoie de o marjă de siguranță M_f > 1, pentru întreruperi, variația timpului de execuție, accesări imprevizibile de memorie și latența schimbării frecvenței: f_selectat = M_f × N_max / D.

Efecte secundare ale reducerii frecvenței

Reducerea frecvenței nu e mereu „gratuită": poate crește latența, poate încălca deadline-uri, poate crește ponderea energiei statice (activitatea utilă scade, dar curenții de pierderi continuă), și poate necesita recalibrarea perifericelor derivate din ceasul procesorului (baud rate, timere, magistrale) - detalii ușor de omis într-o primă implementare.

6DVS, DFS și DVFS: costurile tranzițiilor10 min

Trei mecanisme distincte se ascund adesea sub eticheta „DVFS": DFS (Dynamic Frequency Scaling - modifică doar frecvența), DVS (Dynamic Voltage Scaling - modifică doar tensiunea), și DVFS propriu-zis, care le coordonează pe amândouă.

De ce nu se folosește DFS singur Reducerea exclusivă a frecvenței scade puterea dinamică, dar - așa cum am calculat în Cursul 04 - nu produce neapărat o reducere importantă a energiei, pentru că timpul de execuție crește proporțional. Reducerea tensiunii e mult mai eficientă energetic (dependență pătratică), dar limitează frecvența maximă susținută de circuit. De aceea sistemele reale folosesc perechi validate de tensiune și frecvență - puncte de operare stabilite de producător, nu combinații arbitrare.
Recapitulare: calculatorul DVFS (din Cursul 04)

Fiecare tranziție între puncte de operare are, la rândul ei, un cost: timpul necesar stabilizării tensiunii, recalibrarea ceasului, energia consumată în timpul tranziției și complexitatea algoritmului de control care decide când să schimbe punctul de operare. Pentru activități foarte scurte, costul tranziției poate depăși economia - exact motivul pentru care un sistem de management energetic bun evaluează tranzițiile pe termen mediu, nu la fiecare milisecundă.

7Când merită clock gating și power gating6 min

Cursul 04 a introdus clock gating și power gating ca tehnici hardware. Întrebarea practică rămasă: când anume merită aplicate? Răspunsul depinde de un calcul de prag, identic ca principiu cu cel pe care îl formalizăm complet în secțiunea despre managementul dinamic al puterii (DPM), mai jos: o tranziție într-un mod cu consum mai mic e rentabilă doar dacă durata petrecută acolo depășește timpul de break-even al tranziției - energia economisită prin oprire trebuie să depășească energia cheltuită pentru oprire și repornire.

Clock gating are un prag de rentabilitate mult mai mic decât power gating (nu pierde starea, deci revenirea e aproape instantanee) - potrivit pentru pauze de ordinul microsecundelor. Power gating are un prag mai mare (necesită realimentare și, adesea, reinițializare) - rentabil doar pentru pauze suficient de lungi încât să acopere acest cost.

8Paralelismul, eficiența energetică și Legea lui Amdahl13 min

Legea lui Amdahl: accelerarea se plafoneaza, oricat de multe nuclee adaugati

Paralelismul poate reduce energia, dar nu automat - mecanismul prin care ajută e adesea neintuitiv: nu execuția „mai multor lucruri deodată" economisește energie, ci posibilitatea de a reduce tensiunea păstrând același debit.

Legea lui Amdahl
Dacă q = fracțiunea paralelizabilă a unui program și (1-q) fracțiunea strict serială, accelerarea pe p procesoare este S(p) = 1 / ((1-q) + q/p), iar limita pentru p → ∞ este S_max = 1 / (1-q).
Explorați Legea lui Amdahl
Exemplu - de ce nucleele suplimentare au randamente descrescătoare

Dacă 10% dintr-o activitate e obligatoriu serială (q = 0,9), accelerarea maximă posibilă, indiferent de câte nuclee adăugați, este S_max = 1/0,1 = 10×. Adăugarea a sute de nuclee peste acest punct nu poate elimina partea serială - eficiența paralelă η_p = S(p)/p scade constant. Verificați cu widgetul de mai sus: la q = 0,9 și p = 8, S(p) e departe de 8×.

Modelul energetic al execuției paralele

Puterea dinamică totală a p nuclee identice: P_dinamic,p = p·α·C_ef·V_p²·f_p. Paralelismul e avantajos energetic doar dacă E_p < E_1 - simpla reducere a timpului de execuție nu garantează îndeplinirea acestei condiții.

Exercițiu rezolvat - reducerea tensiunii prin paralelism

Un nucleu execută o activitate la V₁=1,2 V, f₁=1 GHz. Aceeași activitate, distribuită ideal pe două nuclee la V₂=0,9 V, f₂=500 MHz (păstrând același debit total). Cum se compară puterile dinamice totale?

Vezi rezolvarea

P₂/P₁ = 2 × (0,9/1,2)² × (0,5/1) = 2 × 0,5625 × 0,5 = 0,5625

Puterea dinamică totală scade la aproximativ 56,3% din valoarea inițială - deși avem acum două nuclee active. Economia vine exclusiv din reducerea tensiunii permisă de frecvența mai mică per nucleu; dacă tensiunea ar fi rămas constantă, două nuclee la jumătate de frecvență ar fi consumat aproximativ cât un singur nucleu la frecvența maximă.

Costurile paralelismului

Execuția paralelă introduce resurse suplimentare - fire de execuție, bufere, semafoare, bariere, cozi de mesaje, mecanisme de coerență - cu propriul cost energetic (E_suplimentar = E_sincronizare + E_comunicație + E_coerență + E_control). Pentru activități foarte scurte, acest cost poate depăși economia obținută prin reducerea timpului de execuție. În plus, dacă sarcina nu e distribuită uniform, nucleele terminate mai devreme așteaptă inactive - T_p = max(T₁,...,T_p) + T_sincronizare - și continuă să consume putere statică în timpul așteptării.

Legea lui Amdahl: limita accelerarii prin paralelism

9Pipeline și eficiență energetică8 min

Un pipeline mai adânc poate crește debitul (mai multe instrucțiuni finalizate per secundă), dar introduce costuri energetice proprii: fiecare etapă suplimentară necesită registre de pipeline (care comută la fiecare ciclu, chiar dacă nu fac „muncă utilă" vizibilă), iar un hazard sau un salt greșit anticipat golește un pipeline mai adânc la un cost mai mare (mai multe instrucțiuni „pe traseul greșit" trebuie eliminate - exact mecanismul discutat în Curs 03).

Efect al unui pipeline mai adâncConsecință
Cale critică mai scurtă per etapăfrecvență maximă mai mare posibilă
Mai multe registre de pipelineenergie suplimentară la fiecare ciclu, chiar în absența hazardurilor
Penalizare mai mare la salt greșitmai multe instrucțiuni „irosite" trebuie eliminate
Reducerea tensiunii posibilă la frecvență mai marecompensează parțial costul registrelor suplimentare
De reținut Alegerea adâncimii pipeline-ului e, ca aproape orice altă decizie din acest curs, un compromis: un pipeline mai adânc ajută dacă aplicația are cod predictibil, cu puține salturi imprevizibile; un pipeline mai puțin adânc e adesea preferat în microcontrolerele embedded tocmai pentru simplitate, consum redus și penalizări mai mici la codul cu ramificații frecvente - tipic pentru codul de control, nu pentru calcul intensiv.

10Arhitecturi VLIW și acceleratoare specializate11 min

Într-un procesor superscalar, hardware-ul detectează dinamic ce instrucțiuni pot rula în paralel. O arhitectură VLIW (Very Long Instruction Word) mută această decizie la compilator: o singură instrucțiune conține mai multe operații, destinate unor unități funcționale diferite, planificate static, înainte de execuție.

vliw_conceptual.asm
ADD R1, R2, R3  |  MUL R4, R5, R6  |  LOAD R7, [R8]
; trei operații independente, lansate simultan

Avantajul energetic: logica de planificare dinamică (scumpă, prezentă în orice procesor superscalar) e înlocuită de compilator - mai puțină logică de control, deci mai puțină energie cheltuită doar pentru „a decide ce să execute". Limita: eficiența depinde direct de capacitatea compilatorului de a găsi suficiente operații independente; dacă paralelismul disponibil e redus, sloturile neutilizate se completează cu NOP, iar utilizarea U_VLIW = sloturi utile / sloturi totale scade - cod mai mare, eficiență energetică mai mică.

Acceleratoarele specializate

Un accelerator implementează direct în hardware o funcție (DSP, criptografie, DMA, procesare de imagine, rețele neuronale). Sursele eficienței energetice: elimină preluarea/decodificarea repetată a instrucțiunilor, folosește căi de date dedicate operației, reutilizează local datele (reducând transferurile costisitoare către memoria externă) și poate rula masiv paralel la frecvență redusă.

Energia deplasării datelor

În multe aplicații moderne, energia transferului de date poate depăși energia operației aritmetice în sine. De aceea o arhitectură eficientă maximizează reutilizarea locală: R_reutilizare = operații / accesări memorie externă - cu cât o valoare transferată e folosită de mai multe ori înainte să fie „aruncată", cu atât mai eficient energetic e acceleratorul. Exact tehnica din spatele acceleratoarelor pentru convoluții și filtrare.

Condiția de eficiență a unui accelerator
E_HW = E_configurare + E_transfer + E_execuție + E_reactivare. Accelerarea e avantajoasă energetic doar dacă E_HW < E_SW (energia echivalentă rulată pe procesorul general).
Exercițiu rezolvat

Un algoritm criptografic consumă pe procesor E_CPU = 20 µJ per bloc. Pe accelerator: E_configurare = 2 µJ, E_transfer = 1 µJ, E_calcul = 3 µJ. Merită accelerat?

Vezi rezolvarea

E_acc = 2 + 1 + 3 = 6 µJ

Economie = (20 - 6) / 20 × 100% = 70%

Da, categoric - dar observați că, pentru un volum foarte mic de date (un singur bloc, ocazional), energia de configurare (2 din 6 µJ, o treime din total) ar putea deveni dominantă. Acceleratoarele sunt eficiente pentru volume de date repetate, nu pentru operații izolate, rare.

11Managementul dinamic al puterii (DPM)11 min

DPM (Dynamic Power Management) controlează starea energetică a resurselor în funcție de activitatea sistemului - spre deosebire de DVFS, care adaptează performanța unei resurse active, DPM decide între stări: activ, idle, sleep, deep sleep, oprit.

Modelul bazat pe stări
Fiecărei stări S_i îi sunt asociate puterea P_i, latența de trezire, contextul păstrat și sursele de reactivare. Trecerea între stări S_i și S_j are o energie E_ij și o durată T_ij proprii - management energetic înseamnă, în esență, alegerea corectă a momentului tranziției.
Timpul de break-even
Pentru o tranziție cu energie totală (intrare+ieșire) E_tr, între o stare activă (P_A) și una de repaus (P_S): T_BE = E_tr / (P_A - P_S). Starea de repaus e avantajoasă doar dacă T_inactiv > T_BE - și dacă latența de trezire respectă limita maximă acceptată de aplicație.
De reținut O politică ce schimbă foarte frecvent stările poate consuma mai mult decât o politică mai simplă - fiecare tranziție are un cost fix, indiferent cât de scurtă a fost pauza. Exact acesta e motivul pentru care un timeout prea agresiv (intrare rapidă în sleep) poate fi mai rău decât rămânerea în idle.
Decizia unei politici DPM la aparitia unei perioade inactive: puneti pasii in ordine

Politici reactive vs. predictive

Politică reactivă (timeout) Intră în sleep dacă T_idle ≥ T_timeout. Simplă, ieftin de implementat, comportament ușor de verificat. Limitări: energie irosită în timpul așteptării timeout-ului, reacție lentă la perioade lungi de inactivitate, alegerea pragului e un compromis dificil.
Politică predictivă Estimează durata viitoare a inactivității din istoric, periodicitate, stare a aplicației sau modele statistice/învățare automată. Poate reacționa mai rapid și mai precis, dar adaugă complexitate de calcul și risc de predicție greșită (intrare prematură în sleep, cu penalizare de latență).

În sisteme reale, gestiunea energetică coordonează adesea mai multe componente simultan (procesor, radio, senzori, periferice) - fiecare cu propriile stări, praguri și surse de trezire - iar politica trebuie să echilibreze economia de energie cu respectarea calității de serviciu cerute de aplicație (latență maximă acceptabilă, rată de eșantionare minimă).

12Erori frecvente5 min

  • „Mai multe nuclee înseamnă mereu execuție mai rapidă și mai eficientă." Legea lui Amdahl arată clar limita: partea serială a programului stabilește o accelerare maximă, indiferent de câte nuclee adăugați. Peste acel punct, nucleele suplimentare doar consumă putere statică suplimentară fără beneficiu. Calculați întotdeauna S_max = 1/(1-q) înainte de a investi în paralelizare suplimentară.
  • „Un accelerator hardware e mereu mai eficient decât software-ul pe procesorul general." Fals pentru volume mici de date - energia de configurare și transfer poate domina complet energia de calcul propriu-zisă. Verificați condiția E_HW < E_SW pentru volumul de date real al aplicației, nu pentru un caz ideal cu volum mare.
  • „Intrarea în modul de consum cel mai profund disponibil e mereu cea mai bună alegere." Doar dacă T_inactiv > T_BE. Pentru pauze scurte, tranziția costă mai mult decât economisește, iar latența mare de revenire poate încălca cerințe de răspuns. Calculați timpul de break-even al fiecărei stări disponibile înainte de a proiecta politica de management energetic.

13Rezumat și glosar5 min

Optimizarea energetică e o problemă de minimizare cu constrângeri, nu o cursă spre cel mai mic consum instantaneu - trebuie evaluată pentru întregul sistem și întregul scenariu de funcționare, la niveluri care merg de la circuit până la algoritm. Race to idle și pace to idle sunt cele două strategii extreme pentru activități cu deadline. Paralelismul ajută energetic mai ales prin reducerea tensiunii permisă de frecvența mai mică per nucleu, limitat însă de Legea lui Amdahl. VLIW și acceleratoarele specializate reduc energia mutând complexitatea din hardware-ul de control în compilator sau într-o cale de date dedicată. Iar managementul dinamic al puterii formalizează, prin timpul de break-even, exact întrebarea pe care orice inginer embedded și-o pune constant: merită tranziția asta?

Race to idle / Pace to idle
strategii opuse: rapid-apoi-repaus vs. lent-constant.
DVS / DFS / DVFS
scalare doar tensiune, doar frecvență, sau ambele coordonat.
Legea lui Amdahl
S(p) = 1/((1-q)+q/p) - limita accelerării prin paralelism.
VLIW
Very Long Instruction Word - planificare statică, de compilator.
DPM
Dynamic Power Management - alegerea automată a stării energetice.
Timp de break-even
durata minimă de repaus care justifică o tranziție.

14Întrebări de verificare6 min

  1. Formulați optimizarea energetică drept o problemă de minimizare cu constrângeri.
  2. Dați un exemplu în care o optimizare „locală" negativă îmbunătățește totuși sistemul.
  3. Când este avantajoasă strategia „race to idle" față de „pace to idle"?
  4. Ce spune Legea lui Amdahl despre limita accelerării prin paralelism?
  5. De ce paralelismul poate reduce energia chiar dacă numărul total de operații rămâne neschimbat?
  6. Care este condiția de eficiență energetică a unui accelerator hardware?
  7. Ce este timpul de break-even și de ce contează pentru managementul energetic?

15Direcții de aprofundare2 min

Cursul următor trece de la tehnicile hardware/arhitecturale la nivelul software: cum scrie un programator embedded cod care exploatează activ aceste mecanisme - de la apeluri explicite către API-uri de management energetic, până la structurarea algoritmilor pentru a maximiza timpul petrecut în repaus.

Legea lui Amdahl și modelul DVFS discutate azi devin concrete în Laboratorul 01, unde măsurați direct, pe un Raspberry Pi 5 cu mai multe nuclee, cât de aproape (sau departe) ajunge accelerarea reală de limita teoretică calculată aici.