Exploatarea activării funcţiei de calcul în virgulă mobilă la microcontrolere folosite în proiectele integrate

1 FEBRUARIE 2011

Adăugarea capacităţii de calcul în virgulă mobilă la microcontrolere extinde posibilităţile de proiectare în mai multe direcţii. Performanţa unităţii de calcul în virgulă mobilă (FPU- Floating Point Unit) poate fi exploatată pentru a lărgi gama de precizie şi de complexitate a calculelor matematice sau poate permite un tranzit mai mare de informaţie (throughput) în mai puţin timp, ceea ce face mai uşoară îndeplinirea cerinţelor în timp real sau poate să permită sistemului să execute o operaţie de rutină completă în mai puţin timp şi să-şi petreacă mai mult timp în sleep-mode, care poate economisi energie şi poate astfel prelungi durata de viaţă a bateriei.

de Skar Haakon, Director de Marketing AVR, Atmel

Numere în virgulă mobilă
Numere reprezentate în virgulă mobilă – în formatul A × 10n – sunt numite aşa, deoarece în numărul reprezentat, punctul zecimal în prima parte a numărului (partea A – numită “mantisă” sau “semnificativă”) este liberă, adică puteţi să-l puneţi oriunde, în funcţie de ceea ce se potriveşte cel mai bine, indiferent de operaţia de calcul care trebuie să fie realizată, şi puteţi ajusta valoarea exponentului (n) pentru a păstra valoarea numărului total neschimbată. De exemplu, a se vedea Figura 1, unde 1.234 × 106 este identic cu 1234 × 10³. Cea mai răspândită practică este de a prezenta – şi memora – numere într-o formă normalizată cu punctul plasat după prima cifră diferită de zero.
Pentru un inginer care lucrează cu reprezentări digitale a semnalelor din lumea reală – cum ar fi domeniul audio de înaltă calitate – o mare parte din avantajul folosirii matematicii în virgulă mobilă pentru prelucrare, nu constă în libertatea de a plasa punctul zecimal oriunde, cât în intervalul de numere pe care notaţia îl poate reprezenta. Standardul cel mai des folosit în calcul şi în prelucrarea semnalului este IEEE 754, şi în acestă schemă, un număr unic poate avea cu precizie o valoare într-un interval (zecimal) de aproximativ -1039 … + 1039. Reprezentarea în virgulă mobilă este un subiect complet în sine, şi o căutare pe internet pe acest subiect, sau pe IEEE 754, va da detalii multe, inclusiv modul în care se face memorarea de numere binare, cum sunt manipulate numere “speciale”- cum ar fi zero – şi distincţiile de detaliu între numere în virgulă mobilă, fixă şi aritmetica cu numere întregi. Indiferent unde se află numărul în intervalul global, partea de mantisă are întotdeauna 23 de biţi de rezoluţie, ceea ce asigură un bun conţinut de informaţie, cum ar fi un semnal audio convertit pe 24 biţi.

Figura 1

Menţinerea fidelităţii semnalului
Provocările fundamentale cu care se confruntă un inginer proiectant al unui lanţ de semnal audio nu s-au schimbat, deoarece contextul s-a mutat de la domeniul analogic la cel digital. Semnalele audio au game dinamice mari cu informaţii critice pentru reproducerea fidelă a conţinutului, care trebuie să rămână fără compromisuri la cele două extremităţi ale gamei semnalului – cel mai ridicat şi cel mai silenţios. De-a lungul unei căi de semnal audio, semnalul poate fi filtrat, mixat cu alte semnale, nivelul fiind mutat sau amplificat în mai multe etape de prelucrare. Atunci când sarcina de design electronic a fost în domeniul analogic, proiectantul a trebuit să monitorizeze în permanenţă nivelurile de semnal pentru a le menţine peste nivelul de zgomot, asigurând în acelaşi timp că vârfuri în conţinut nu sunt prea aproape de nivelurile de amplificare maxime (care duc la saturaţie); informaţia utilă a fost întotdeauna susceptibilă de a se fi pierdut prin adăugarea de zgomot electric la nivelul de jos sau prin tăiere de vârfuri la nivelul superior.
O situaţie similară există atunci când semnalul este manipulat în domeniul digital. Valorile de date care reprezintă conţinutul trebuie să rămână în intervalul în care numărul total de informaţii utile nu se pierde, prin exces sau trunchiere. Mai multe etape de prelucrare a semnalului, în special de filtrare, implică operaţiuni matematice succesive – în special de multiplicare – prin care se poate modifica va­loarea absolută a datelor pe intervale foarte largi.
Lucrând cu o gamă limitată de numere, trebuie luat în consideraţie faptul că „fereastra de alunecare” pe valori relative – ce corespund la nivelul audio cel mai ridicat, la cele mai silenţios – rămâne şi în limitele disponibile – similar cu domeniul analogic – deasupra nivelului inferior reprezentat nivelului de zgomot, dar mai jos de nivelul tensiunii de alimentare.

Figura 2: Schema bloc a unui lanţ semnal audio folosind FPU

Convenţional, dispozitive digitale de prelucrare a semnalului care folosesc aritmetica în virgulă mobilă au fost considerabil mai scumpe decât omoloagele lor în virgulă fixă. O metodologie utili­zată frecvent a fost aceea de a dezvolta o versiune iniţială a unui proiect de prelucrare a semnalului în mediul de calcul cu virgulă mobilă, care permite valori numerice mult mai multe, spaţiul disponibil numeric fiind mult mai mare. Apoi, când algoritmii de lucru sunt în conformitate cu caietul de sarcini, prototipul este convertit la suport hardware cu costuri mai reduse bazat pe calcule în virgulă fixă. Parte din acest proces implică inspectarea valorilor numerice pe care le generează produsul de-a lungul lanţului de semnal în timpul lucrului şi introducerea unor factori de scalare la punctele corespunzătoare pentru a menţine valorile în intervalele numerice utilizabile. Abordarea inversă este de asemenea valabilă; managerii de proiect pot opta pentru a găzdui proiecte pe un hardware mai scump având ca ţintă scurtarea timpului şi reducerea costurilor procesului de dezvoltare.

Tehnologia procesului de fabricaţie permite FPU de dimensiuni mici
Ambele abordări descrise mai sus se bazează pe presupunerea că un coprocesor lucrând în virgulă mobilă consumă cantităţi substanţiale din zona de siliciu, care va conduce la dispozitive scumpe. Cu toate acestea, tehnologia de fabricaţie actuală bazată pe siliciu arată că acest lucru nu mai este neapărat adevărat. Acum este posibil de a asocia un nucleu microprocesor pe 32 de biţi – din categoria celor care se află în centrul unui microcontroler mid-range – cu o unitate completă – IEEE754- lucrând în virgulă mobilă, într-o unitate viabilă din punct de vedere economic. De exemplu, microcontrolere Atmel AVR UC3 oferă deja foarte înaltă performanţă de procesare digitală a semnalului în virgulă fixă şi suport aritmetic prin calcule cu numere întregi; adăugarea unei unităti de calcul cu precizie simplă în virgulă mobilă, schimbă opţiunile şi deschide pentru proiectanţi multiple căi de dezvoltare a noi dispozitive digitale.

Figura 3: Exemplu de proces de codificare – matematica FPU oferă o gamă dinamică mai largă eliminând scalarea intermitentă între calcule

În primul rând, din observaţiile de mai sus pentru sistemele lucrând în virgulă mobilă, se observă libertatea de a avea multe detalii prin seriile mari de valori numerice şi la scalare. Prin etape succesive de prelucrare, având în vedere gama foarte mare de valori disponibile, se permite ca valoarea asociată semnalului (într-o mare măsură) să ia orice valoare absolută de care este nevoie; informaţiile esenţiale –în intervalul de dinamică a semnalului – vor fi întotdeauna incluse în porţi­unea de mantisă a unui număr cu virgulă mobilă reprezentat pe 24 biţi. Nevoia de a folosi în mod constant scalarea, care să menţină seria de numere în limitele unui domeniu, dispare.
Beneficiile unei FPU on-chip se extind dincolo de faptul că este posibil un design simplu, cu atât mai mult, există un câştig în transferul in-out de infor­maţie prelucrată, fiindcă FPU poate efectua în doar câteva cicluri de ceas, operaţiuni cum ar fi înmulţiri şi împărţiri de precizie, care consumă mai multe zeci de cicluri într-un nucleu MCU singur, neaugmentat cu FPU. În dispozitivele AVR UC3, un FPU efectuează mai multe instrucţiuni pe 32 de biţi în virgulă mobilă într-un singur ciclu, şi o operatie pe 32-biţi de înmulţire-adunare în doar două cicluri de ceas, în comparaţie cu 30…50 cicluri necesare pentru a finaliza aceeaşi operaţie aritmetică fără FPU. Rata de transfer de informaţie (throughput) crescută ar putea fi exploatată pentru a creşte foarte mult cantitatea de semnale pe care un microcontroler poate să o proceseze; sau, poate reprezenta o reducere semnificativă a puterii electrice necesară pentru a obţine semnalul dorit la ieşire.

MCU + FPU este egal cu un spaţiu de aplicaţii mai larg
Există numeroase exemple de proiecte de sisteme cu cerinţe “critice” (în care codul program trebuie executat în timp real ca să respecte durate limită de timp, planificate), care beneficiază de capacitatea de a efectua calcule de înaltă precizie în câteva cicluri CPU. Controlul puterii mecanice dată de motorul unui automobil este un astfel de caz; o unitate de management al motorului trebuie să utilizeze intrări de date de la senzori, cu intervale foarte mari de dinamică, dar timpul disponibil pentru a completa fiecare ciclu de calcul este complet definit de rotaţia mecanică ale motorului.
Constrângeri similare se aplică pentru alte sisteme, cum ar fi ABS (anti-blocare la frânare) sau suspensia activă. În controlul de precizie al unui motor electric, abilitatea de a gestiona numere cu domeniu mare de variaţie este, de asemenea, valoroasă deoarece solicită algoritmi care cer ca o serie de transformări complexe se aplice în mod succesiv, fără pierderi de date prin trunchiere – şi în acest caz, încă o dată, timpul de calcul este stabilit de către perioada de rotaţie a motorului. În aceste cazuri, atât precizia şi cât şi viteza sunt beneficii valoroase. Prelucrarea digitală a semnalului cu FFT (Fast Fourier Transform) este un exemplu deja familiar la mulţi ingineri, iar rezolvarea problemei se poate accelera cu matematica în virgulă mobilă. Într-un alt domeniu de aplicaţie, în întregime – sisteme grafice şi publicitate – calitatea vizuală a rezultatelor depinde de calcule geometrice precise pentru scalarea texturilor grafice şi a fonturilor de imprimare. Aici, pot exista limitări mai mici de lucru în timp real, dar performanţa sistemului şi rata de tranfer a informaţiei reflectă direct capacitatea FPU de a executa calcule în mai puţine cicluri. Fiecare dintre aceste sectoare a avut în mod tradiţional acces la calcule în virgulă mobilă, dar proiectanţii care lucrează cu nucleu de microcontroler, în general, nu au acces.
Disponibilitatea calculelor aritmetice în virgulă mobilă în această clasă de procesoare modifică dinamica de selecţie a dispozitivului pentru multe tipuri de design, în special dispozitive audio de consum. Lanţul de semnalul audio demonstrează dramatic care este beneficiul pentru designer de a utiliza o arhitectură în virgulă mobilă. În multe – probabil majoritatea – de cazuri, sursa de semnal va avea o reprezentare digitală care poate fi con­vertită într-un format numeric necesar, în câteva cicluri de calcul. La sfârşitul lanţului de semnal, semnalele audio vor fi returnate la format analogic – domeniul lumii reale – după normalizarea (o singură operaţie-ciclu). Un DAC (Digital Analog Converter) va funcţiona cu fracţiuni de numere reprezentate în mantisă, care conţine toată infor­maţia de care are nevoie. Oricare ar fi “excursiile” semnalului prin gama completă ca număr în virgulă mobilă (Floating Point), acestea sunt pur şi simplu neglijate; partea care reprezintă exponentul nu este utilizată şi precizia maximă va fi menţinută pe toată durata de transfer a informaţiei.
Proiectanţii care lucrează cu sisteme de captare a semnalelor şi sisteme de procesare, dar şi în alte domenii – sisteme industriale sau instrumentaţie medicală – au, de asemenea, necesitatea de a efectua mai multe etape de prelucrare a datelor, care au în sine un domeniu dinamic larg, vor găsi că integrarea unui nucleu MCU de uz general cu un FPU modifică opţiunile lor. Anterior, o cale de prelucrare de semnal folosea calcule în virgulă mobilă inevitabil, folosind o asociere de microprocesor sau microcontroler cu un DSP (Digital Signal Processor) dedicat, cu implicaţii în costuri, dimensiune şi consumul de energie. Opţiunea de a folosi o proiectare bazată complet pe un singur DSP a fost adesea exclusă, deoarece DSP-urile nu aveau capacitatea de a găzdui funcţiile de control pe care proiectul le-a cerut.

Concluzie
Pieţele uzuale asociate cu microcontrolere – unde considerentele cum ar fi uşurinţa de interfaţare la semnale externe şi evenimente, costul mic şi limi­tarea consumului de putere, au tendinţa să predomine – nu au avut anterior acces la matematică în virgulă mobilă. FPU aduce nuanţe complexe de multe ori, în sisteme bazate pe DSP.
Progresele actuale în tehnologia procesului de fabricaţie au făcut ca FPU sa fie accesibile la o gamă mult mai largă de proiecte, iar inginerii au acces la beneficiile preciziei de calcul cu aplicativitate la prelucrarea semnalelor având interval dinamic larg şi la codificarea sim­pli­ficată pe care o aduce matematica în virgulă mobilă.

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile necesare sunt marcate *

  • Folosim datele dumneavoastră cu caracter personal NUMAI pentru a răspunde comentariilor/solicitărilor dumneavoastră.
  • Pentru a primi raspunsuri adecvate solicitărilor dumneavoastră, este posibil să transferăm adresa de email și numele dumneavoastră către autorul articolului.
  • Pentru mai multe informații privind politica noastră de confidențialitate și de prelucrare a datelor cu caracter personal, accesați link-ul Politica de prelucrare a datelor (GDPR) si Cookie-uri.
  • Dacă aveți întrebări sau nelămuriri cu privire la modul în care noi prelucrăm datele dumneavoastră cu caracter personal, puteți contacta responsabilul nostru cu protecția datelor la adresa de email: gdpr@esp2000.ro
  • Abonați-vă la newsletter-ul revistei noastre