CURSUL 04

Consumul de Energie în Sistemele Embedded

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

Pentru majoritatea sistemelor embedded, energia disponibilă - nu viteza procesorului - este resursa care decide dacă proiectul funcționează sau nu. Acest curs pune la un loc uneltele matematice minime pentru a gândi riguros despre consum: puterea, energia și sarcina electrică, profilul energetic al unui sistem real, metricile potrivite fiecărui tip de dispozitiv, estimarea autonomiei pe baterie, componentele consumului CMOS și tehnicile hardware/software care le reduc.

1Obiectul și structura cursului6 min

Cursurile 2 și 3 au explicat cum arată și cum se măsoară performanța unui procesor. Astăzi schimbăm axa de analiză: în loc de „cât de repede", întrebăm „cu ce preț energetic" - întrebarea centrală pentru orice sistem alimentat pe baterie, de la un senzor agricol la un pacemaker.

Recapitulare din cursurile anterioare
  • Consumul energetic redus este una dintre cele patru caracteristici fundamentale ale sistemelor embedded (Curs 01)
  • Frecvența mai mare nu înseamnă automat „mai bine" - ecuația performanței arată compromisul (Curs 02)
  • Modurile de operare și mecanismul de întreruperi din arhitectura ARM sunt exact uneltele pe care se construiesc tehnicile de consum redus discutate azi (Curs 03)

Rezultate ale învățării

  • Să deosebiți corect puterea, energia și sarcina electrică, cu unitățile lor
  • Să citiți profilul energetic al unui sistem periodic și să calculați puterea medie
  • Să alegeți metrica potrivită (per operație, per bit, per pachet) pentru un sistem dat
  • Să estimați autonomia unui dispozitiv pe baterie, pornind de la un profil de consum
  • Să explicați componentele puterii CMOS și efectul scalării tensiune/frecvență (DVFS)
  • Să recunoașteți tehnicile hardware și software de reducere a consumului și limitele lor

2Constrângeri energetice și obiective de proiectare8 min

Numeroase sisteme embedded - noduri IoT în zone greu accesibile, dispozitive medicale portabile sau implantabile, senzori industriali - trebuie să funcționeze ani de zile fără intervenție umană. Pentru acestea, energia disponibilă limitează direct funcționarea, deci consumul trebuie tratat ca o cerință de proiectare din primele faze, nu ca o optimizare de ultim moment.

Patru factori leagă, în practică, decizia de proiectare de constrângeri concrete:

  1. Autonomia - indicatorul perceput direct de utilizator. Un senzor care are nevoie de baterie nouă lunar poate costa în mentenanță mai mult decât valoarea lui; o autonomie de 5-10 ani face aceeași soluție viabilă economic.
  2. Limitările termice - puterea absorbită se transformă în căldură, iar temperatura ridicată reduce durata de viață a componentelor și poate forța procesorul să-și reducă frecvența. Sistemele embedded compacte, fără ventilator, trebuie să controleze temperatura prin consum redus și disipare pasivă.
  3. Fiabilitatea și mentenanța - consum mai mic înseamnă solicitare termică mai mică și mai puține cicluri de încărcare, deci mentenanță mai rară - esențial când mii de noduri dintr-o rețea ar necesita intervenții individuale.
  4. Impactul la scară largă - o economie nesemnificativă la un singur dispozitiv devine importantă înmulțită cu milioane de exemplare: costuri de exploatare, necesar de răcire, baterii produse și înlocuite. Eficiența energetică e deopotrivă un obiectiv tehnic, economic și ecologic.
De reținut Optimizarea energetică nu înseamnă doar alegerea componentei cu cel mai mic consum instantaneu, ci analiza întregului profil de funcționare. Creșterea frecvenței reduce timpul de execuție, dar crește puterea - efectul net asupra energiei totale depinde de durată, tensiune și cât de repede poate reveni sistemul într-un mod de consum redus. Revenim asupra acestui calcul exact în secțiunea despre DVFS.

3Putere, energie și sarcină electrică10 min

Analiza energetică cere să deosebim clar trei mărimi folosite adesea, incorect, ca sinonime.

MărimeSimbolUnitateSemnificație
TensiuneVvolt (V)diferența de potențial aplicată circuitului
CurentIamper (A)viteza de transfer a sarcinii electrice
Sarcină electricăQcoulomb (C); Ahcantitatea totală de sarcină transferată
PuterePwatt (W)viteza cu care energia e consumată/transferată
EnergieEjoule (J); Whcantitatea totală consumată sau stocată
Relațiile fundamentale
P = V · I (putere instantanee)
E = P · T (energie, la putere constantă; general, integrala puterii în timp)
Q = I · T (sarcină, la curent constant)
E ≈ V · Q (energia nominală, din tensiune și sarcină)
Exemplu - de ce mAh nu e aceeași unitate cu energia

Două baterii de 2000 mAh (aceeași sarcină, Q = 2 Ah): o baterie NiMH la 1,2 V stochează E ≈ 1,2 × 2 = 2,4 Wh; o baterie Li-Ion la 3,7 V stochează E ≈ 3,7 × 2 = 7,4 Wh - de peste trei ori mai multă energie, deși capacitatea în Ah e identică. Capacitatea în Ah descrie sarcina, nu energia - contează și tensiunea.

O convenție utilă de reținut: 1 Wh = 3600 J și 1 mAh = 3,6 C. O baterie de 10 Wh poate da, ideal, 1 W timp de 10 ore, sau 10 W timp de o oră - energia totală rămâne aceeași, doar viteza de consum diferă.

Puterea instantanee vs. energia totală

Un microcontroler la 3,3 V care absoarbe 12 mA în modul activ are puterea P = 3,3 × 0,012 = 39,6 mW - o valoare instantanee, care nu spune nimic despre autonomie fără să știm cât timp stă în acest regim. Un modul radio care consumă 100 mW timp de 10 secunde a folosit E = 0,1 × 10 = 1 J ≈ 0,278 mWh - energia depinde întotdeauna de durată, nu doar de puterea de vârf.

4Profilul energetic al unui sistem embedded10 min

Consumul unui sistem embedded nu este, în general, constant - procesorul, senzorii și interfețele de comunicație se activează doar când e nevoie. Un profil energetic descrie această variație a puterii/curentului în timp și permite identificarea stărilor care domină consumul total.

Sleep Trezire Măsurare Procesare Transmisie Sleep (restul ciclului) vârf de consum consum redus
Fig. 1 - Profilul energetic simplificat al unui nod IoT care se trezește periodic, măsoară, procesează și transmite un pachet, apoi revine în sleep.
Factorul de activitate (duty cycle)
D = t_activ / T. Pentru un sistem cu două stări: P_mediu = D · P_activ + (1 - D) · P_sleep
Exercițiu rezolvat

Un dispozitiv funcționează periodic, cu o perioadă de 1 secundă: 8 mA timp de 20 ms, apoi 10 µA în restul de 980 ms. Care este curentul mediu, și de ce e atât de mic față de 8 mA?

Vezi rezolvarea

I_mediu = (8 mA × 0,020 s + 0,010 mA × 0,980 s) / 1 s = 0,1698 mA ≈ 169,8 µA

La 3,3 V, puterea medie e P_mediu = 3,3 × 0,1698 mA ≈ 0,560 mW. Deși curentul activ e de 8 mA, media e mult mai mică datorită factorului de activitate de doar 2% - un sistem poate avea vârfuri mari de curent și totuși autonomie bună, dacă restul timpului stă în repaus profund.

Atenție Reducerea factorului de activitate nu garantează automat reducerea energiei: pornirea oscilatoarelor, inițializarea senzorilor și stabilizarea comunicației au un cost fix. Dacă sistemul se trezește prea des, energia tranzițiilor devine ea însăși semnificativă - revenim asupra acestui compromis la modurile de consum redus.
Profilul energetic al unui ciclu de masurare: puneti fazele in ordine

5Metrici energetice și estimarea autonomiei12 min

Un ciclu de masurare, faza cu faza

Nu există o singură metrică potrivită pentru toate sistemele embedded - alegerea depinde de funcția dispozitivului.

MetricăRelațieUtilizare
Putere medieP_mediu = E / Testimarea autonomiei
Putere maximăP_max = max P(t)dimensionarea sursei/convertorului
Energie per cicluE_ciclu = Σ Pᵢtᵢsisteme periodice, noduri IoT
Energie per operațieE_op = E_total / N_opcompararea procesoarelor/algoritmilor
Energie per bitE_bit = E_total / N_bitcompararea tehnologiilor de comunicație

O metrică combinată des folosită e produsul energie-întârziere: EDP = E × T_execuție - o valoare redusă indică un compromis favorabil, dar EDP nu e universală: un dispozitiv alimentat ani pe baterie poate prioritiza energia pură, în timp ce un sistem de control în timp real poate prioritiza strict respectarea termenului limită, indiferent de EDP.

Estimarea autonomiei

Autonomia ideală vs. estimată
T_ideal = E_nominal / P_mediu (presupune 100% din energie utilizabilă, fără pierderi)
T_estimat = E_nominal × k_utilizare × η_alimentare × ... / P_mediu (mai realist, cu factori de eficiență și utilizare)
Calculatorul de autonomie pe baterie
Exercițiu complet rezolvat

Dispozitivul din secțiunea anterioară (8 mA/20 ms activ, 10 µA/980 ms sleep, 3,3 V), cu baterie Li-Ion 3,7 V / 2000 mAh, eficiență convertor 90%, energie utilizabilă 80%. Care e autonomia estimată?

Vezi rezolvarea

E_nominal = 3,7 V × 2 Ah = 7,4 Wh

E_util = 7,4 × 0,8 × 0,9 = 5,328 Wh

T_estimat = 5,328 Wh / 0,560 mW ≈ 9514 h ≈ 396 zile

Rezultatul nu include autodescărcarea bateriei, consumul circuitelor de protecție sau reducerea capacității la temperaturi scăzute - autonomia reală măsurată va fi, aproape mereu, mai mică decât cea calculată. Verificați cu widgetul de mai sus cum se schimbă autonomia dacă măriți curentul de sleep de la 10 la 50 µA - o diferență care pare mică, dar contează enorm pe termen lung.

De reținut Pentru sisteme ce trebuie să funcționeze ani de zile, curentul de repaus al regulatorului și autodescărcarea bateriei pot deveni comparabile cu consumul microcontrolerului însuși - o baterie mare nu garantează autonomie mare dacă restul lanțului de alimentare consumă permanent. Calculele teoretice trebuie mereu validate prin măsurători reale, pe un ciclu reprezentativ.

6Principalii consumatori și puterea CMOS12 min

Înainte de a discuta tehnici de reducere a consumului, trebuie să știm de unde vine consumul unui procesor. Majoritatea microcontrolerelor moderne sunt realizate în tehnologie CMOS, iar consumul lor total se împarte în patru componente:

Puterea totală CMOS
P_total = P_dinamic + P_scurtcircuit + P_static + P_analogic
ComponentăSursăDomină în...
Dinamicăîncărcarea/descărcarea capacităților interne la comutareregimul activ
Scurtcircuitconducție simultană scurtă, în timpul tranziției logicede regulă minoră
Staticăcurenți de pierderi, chiar fără comutarerepaus prelungit
Analogicăoscilatoare, PLL, ADC, referințe, regulatoaredepinde de domeniul activ
Nu uitați blocurile „invizibile"

Un microcontroler „inactiv" poate consuma în continuare dacă rămân active oscilatorul principal, bucla PLL, referința ADC, detectorul brown-out, watchdog-ul, SRAM-ul sau interfețele de depanare. Un consum minim real cere analiza fiecărui domeniu funcțional, nu doar a nucleului CPU - o sursă frecventă de surprize neplăcute la măsurarea consumului real.

Principalii consumatori de energie dintr-un sistem embedded tipic, în ordine aproximativă: procesorul (mai ales în regimuri active susținute), memoria (accesările Flash/RAM repetate), periferiile analogice (ADC, comparatoare), și - adesea cel mai mare consumator dintre toate - interfața de comunicație wireless, subiectul unei secțiuni dedicate mai jos.

Puterea dinamica CMOS: P = a C V^2 f

7Puterea dinamică, puterea statică și DVFS10 min

Puterea dinamică
P_dinamic ≈ α · C_ef · V² · f, unde α = factorul de activitate, C_ef = capacitatea echivalentă comutată, V = tensiunea, f = frecvența.

Relația arată ceva esențial: puterea dinamică variază liniar cu frecvența, dar pătratic cu tensiunea. Reducerea tensiunii aduce economii mult mai mari decât reducerea frecvenței, la aceeași activitate.

Explorați scalarea tensiune/frecvență (DVFS)
Exercițiu rezolvat - de unde vin economiile reale la DVFS

Un procesor execută aceeași activitate în două configurații: (1) V=1,2 V, f=100 MHz; (2) V=0,9 V, f=70 MHz. Cum se schimbă puterea, timpul de execuție și energia totală?

Vezi rezolvarea

P₂/P₁ = (0,9/1,2)² × (70/100) = 0,5625 × 0,7 ≈ 0,394 - puterea scade cu ~60,6%.

T₂/T₁ = 100/70 ≈ 1,43 - timpul de execuție crește cu 43%, pentru că lucrăm mai încet.

E₂/E₁ = 0,394 × 1,43 ≈ 0,563 - energia totală scade cu ~43,8%.

Observația centrală: la cicluri fixe și tensiune constantă, reducerea doar a frecvenței lasă energia dinamică aproape neschimbată (timpul crește exact cât scade puterea). Economiile reale vin din scăderea tensiunii - motiv pentru care DVFS scalează întotdeauna împreună tensiunea și frecvența, nu una separat de cealaltă.

Puterea statică
P_static = V · I_pierderi - curenți de pierderi prezenți chiar fără comutare, dependenți de tehnologie, temperatură și starea internă a circuitului.

Temperatura mai mare crește pierderile, ceea ce crește puterea (deci temperatura) - o reacție pozitivă care, în tehnologiile moderne de fabricație, poate face din puterea statică o parte importantă a consumului total, mai ales în moduri cu activitate de comutare redusă.

8Tehnici hardware pentru reducerea consumului10 min

Tehnicile hardware urmăresc reducerea tensiunii, a activității de comutare, a capacității active sau a curenților de pierderi - aplicabile la nivelul procesorului, perifericelor sau întregului sistem.

TehnicăComponenta redusăAvantajLimitare
DVFSputerea dinamicăeconomii mari prin scăderea tensiuniiperformanță mai redusă, cost de tranziție
Clock gatingactivitatea de comutaretrezire rapidă, păstrează stareanu elimină puterea statică
Power gatingputerea dinamică și staticăconsum foarte redus al blocului opritpierderea stării, latență de reactivare
Domenii independenteconsum selectiv al subsistemeloroprirea doar a blocurilor neutilizatecomplexitate hardware suplimentară
Acceleratoare hardwareenergia per activitateexecuție rapidă, specializatăflexibilitate redusă, suprafață suplimentară
DMA și memorii localetransferurile și activitatea CPUmai puține treziri și accesări externecost de configurare
Clock gating Oprește semnalul de ceas pentru blocurile neutilizate. Registrele își păstrează starea (nu comută), dar rămân alimentate - curenții de pierderi continuă să existe. Potrivit pentru periferice care trebuie reactivate rapid (timer, SPI).
Power gating Deconectează complet alimentarea unui bloc - reduce și puterea statică, nu doar dinamică. Prețul: starea internă se pierde (fără registre de retenție dedicate), iar revenirea cere realimentare, stabilizare și reinițializare - latență și cost de tranziție mai mari.

Software-ul complementează tehnicile hardware prin: profilarea energetică a codului (pentru a identifica secțiunile care domină consumul), algoritmi care minimizează accesările la memorie externă (mai lente și mai costisitoare energetic decât registrele sau memoria on-chip), gruparea operațiilor pentru a permite perioade mai lungi de repaus între ele, și folosirea explicită a API-urilor de gestiune energetică oferite de producătorul microcontrolerului sau de RTOS pentru a alege corect modul de consum redus potrivit fiecărei pauze din execuție.

9Modurile de consum redus10 min

Procesoarele moderne oferă mai multe stări energetice. Denumirile diferă între producători, dar principiul e comun: cu cât consumul e mai mic, cu atât mai puțin din context e păstrat activ, și cu atât mai mare e latența de revenire.

StareElemente activePăstrarea contextuluiLatența de revenire
ActiveCPU, memorii, periferice selectatecompletnu e necesară trezirea
Idlememorie + majoritatea perifericelorcompletfoarte redusă
Sleepdomenii și surse de trezire selectatede regulă completredusă/medie
Deep Sleepdomeniu minim + memorie de retențieparțial/completmedie/ridicată
Standby/Shutdownlogică minimă de trezirelimitatăridicată; posibil reset

Sursele posibile de trezire diferă pe fiecare platformă: timer de timp real, pin extern, watchdog, comparator de consum redus, interfață de comunicație, eveniment de senzor. Dacă trezirea necesită păstrarea unui periferic activ, consumul stării de repaus crește - proiectantul trebuie să identifice mecanismul minim necesar pentru fiecare aplicație.

Timpul de rentabilizare a unei tranziții Intrarea și ieșirea dintr-un mod de consum redus necesită, la rândul lor, energie (repornirea oscilatoarelor, stabilizarea tensiunii, eventuala reinițializare). Un mod „profund" e avantajos doar dacă durata petrecută în el depășește un anumit prag - pentru pauze foarte scurte, tranziția în/din Deep Sleep poate consuma mai multă energie decât ar fi economisit modul Idle, mai puțin adânc dar mult mai rapid de intrat/ieșit.
Potriviți starea de consum cu scenariul potrivit

10Costul energetic al comunicațiilor wireless10 min

Comunicațiile wireless permit transmiterea datelor fără conexiune fizică, dar introduc un cost energetic care poate domina bugetul total al unui nod IoT. Un transceiver radio nu consumă energie doar la transmitere: activarea oscilatoarelor, sintetizarea frecvenței purtătoare, amplificarea semnalului și procesarea protocolului costă energie chiar și la recepție - recepția poate avea un consum comparabil cu transmisia.

Energia unei comunicații
E_radio = E_pornire + E_ascultare + E_transmisie + E_recepție + E_protocol + E_retransmisii

Un transceiver tipic are mai multe stări: shutdown (consum minim, reinițializare completă la trezire), sleep (unele configurări păstrate, revenire mai rapidă), standby (oscilatoare deja active, tranziție rapidă spre RX/TX), recepție și transmisie. Contrar intuiției, ascultarea continuă a canalului poate fi mai costisitoare decât transmiterea periodică a unor pachete scurte.

De ce mărimea și numărul pachetelor contează

Energia unui pachet: E_pachet = E_fix + P_TX × T_pachet, unde E_fix include pornirea și stabilizarea transceiverului. Pentru mesaje scurte, această energie fixă poate domina complet costul total - motiv pentru care gruparea mai multor măsurători într-un singur pachet (în loc de un pachet per măsurătoare) reduce semnificativ consumul, chiar dacă fiecare pachet grupat e puțin mai lung.

Exemplu - costul retransmisiilor

Dacă probabilitatea de livrare cu succes a unui pachet este p, numărul mediu de încercări este 1/p, iar energia medie necesară livrării: E_livrare = E_încercare / p. Pentru p = 0,5 (jumătate din pachete se pierd), sunt necesare în medie două încercări - energia se dublează față de o legătură fără pierderi. O legătură radio proastă nu doar întârzie sistemul, îl face și să consume vizibil mai multă energie.

Nu există o tehnologie wireless care să ofere simultan rază maximă, debit maxim, latență minimă și consum minim - alegerea (BLE, Wi-Fi, LoRaWAN, Zigbee etc.) e mereu un compromis pe aceste patru axe, în funcție de cerințele aplicației.

11Procesare locală versus transmiterea datelor4 min

O decizie de proiectare cu impact energetic direct: procesăm datele local (pe dispozitiv) sau le trimitem brute către un server? Regula practică: dacă energia necesară transmiterii datelor brute depășește energia necesară procesării lor locale pentru a extrage doar informația relevantă, procesarea locală (Edge Computing, discutat conceptual în Curs 01) câștigă net.

Exemplu conceptual

Un senzor de vibrații poate trimite brut 1000 de eșantioane pe secundă (costisitor radio), sau poate rula local un algoritm simplu care detectează doar anomaliile și trimite un singur bit „alertă/fără alertă" la fiecare câteva minute. A doua variantă cere mai multă energie de calcul, dar mult mai puțină energie de transmisie - iar radio-ul, aproape mereu, e consumatorul dominant.

12Erori frecvente5 min

  • „Capacitatea bateriei în mAh spune tot ce trebuie să știu despre energia disponibilă." Fals - mAh e o cantitate de sarcină, nu de energie. Aceeași capacitate la tensiuni diferite înseamnă energii total diferite (vezi exemplul NiMH vs. Li-Ion). Convertiți întotdeauna la watt-oră (Wh) înainte de a compara două baterii.
  • „Dacă reduc frecvența procesorului, reduc automat energia consumată." Fals, sau cel puțin incomplet - la tensiune constantă, reducerea frecvenței reduce puterea, dar crește proporțional timpul de execuție, iar energia dinamică rămâne aproape neschimbată. Economiile reale vin din reducerea tensiunii, nu doar a frecvenței. Verificați dacă tehnica aplicată (DVFS complet, sau doar scalarea frecvenței) reduce efectiv energia, nu doar puterea instantanee.
  • „Un mod de consum ultra-redus (Deep Sleep) e mereu cea mai bună alegere." Nu, dacă pauzele sunt foarte scurte - costul energetic al tranziției poate depăși economia, iar latența mare de revenire poate rata evenimente importante. Alegeți modul de consum redus pe baza duratei tipice a pauzei, nu doar a consumului nominal al stării.

13Rezumat și glosar5 min

Energia, puterea și sarcina electrică sunt mărimi distincte, cu unități diferite - confuzia lor duce direct la estimări greșite de autonomie. Profilul energetic al unui sistem periodic, combinat cu factorul de activitate, permite calcularea puterii medii reale, mult diferită adesea de puterea de vârf. Consumul CMOS se împarte în putere dinamică (∝V²f) și statică, iar DVFS exploatează exact dependența pătratică de tensiune. Tehnicile hardware (clock/power gating, domenii independente) și software (profilare, grupare de operații, moduri de consum ales corect) lucrează împreună, nu izolat. Iar pentru sistemele conectate, comunicația wireless este adesea consumatorul dominant - motiv pentru care procesarea locală și gruparea pachetelor contează atât de mult.

Duty cycle (D)
fracțiunea din perioadă în care sistemul e activ.
DVFS
Dynamic Voltage and Frequency Scaling - scalarea tensiune/frecvență.
Clock gating
oprirea ceasului unui bloc neutilizat, fără a-l dezalimenta.
Power gating
deconectarea completă a alimentării unui bloc.
EDP
Energy-Delay Product - metrică combinată energie × timp de execuție.
E_bit
energia medie consumată pentru transmiterea unui bit.
Edge Computing
procesare locală, pentru a reduce datele care trebuie transmise.

14Întrebări de verificare6 min

  1. Care este diferența dintre putere, energie și sarcină electrică? Ce unități au?
  2. Ce este factorul de activitate (duty cycle) și cum influențează puterea medie?
  3. De ce reducerea doar a frecvenței procesorului nu reduce automat energia dinamică?
  4. Care sunt componentele puterii totale CMOS?
  5. Enumerați trei tehnici hardware de reducere a consumului și limitarea fiecăreia.
  6. De ce ascultarea continuă a unui canal radio poate costa mai mult decât transmisia?
  7. Un dispozitiv are P_mediu = 2 mW și o baterie de 3 Wh. Care e autonomia ideală?

15Direcții de aprofundare2 min

Cursul următor continuă direct pe acest fir: acum că înțelegem de unde vine consumul și cum se calculează, trecem la tehnici software concrete de optimizare energetică - algoritmi, structuri de date și tipare de programare care reduc consumul măsurabil, nu doar teoretic.

Toate conceptele din acest curs (profil energetic, duty cycle, DVFS, autonomie pe baterie) se aplică direct în Laboratorul 01 și Laboratorul 02, unde le măsurați pe hardware real - un Raspberry Pi 5 și un nod ESP32-C6.