Curs 1: Procesoare Digitale de Semnal si Sisteme PDS PDF
Document Details
Uploaded by AvidMountRushmore
Universitatea Politehnica din București
Tags
Related
- Fast Fourier Transform PDF
- digital_signal_processing_principles_algorithms_and_applications_third_edition.pdf
- Digital Signal and Image Processing Lecture Notes PDF
- Digital Signal Processing Lecture 1 PDF
- Digital Signal Processing for Machine Learning (BME 596) PDF
- Digital Signal Processing Applications PDF
Summary
This document is a course on digital signal processors (DSP). It presents an introduction to the topic, highlighting the initial impulse of using numerical techniques in signal processing, and the development of specialized signal processing equipment. It discusses the characteristics of DSP microprocessors, their architectures, and applications.
Full Transcript
Curs 1 Procesoare digitale de semnal si sisteme PDS Introducere Impulsul initial pentru folosirea tehnicilor numerice in domeniul prelucrarii semnalelor l-au dat calculatoarele numerice de uz general. Implementarea algoritmilor de prelucrare numerica pe aceste s...
Curs 1 Procesoare digitale de semnal si sisteme PDS Introducere Impulsul initial pentru folosirea tehnicilor numerice in domeniul prelucrarii semnalelor l-au dat calculatoarele numerice de uz general. Implementarea algoritmilor de prelucrare numerica pe aceste sisteme prezinta anumite inconveniente: flexibilitate redusa, gabaritul mare, pret de cost mare, s.a., ceea ce limiteaza domeniile de aplicabilitate. Ulterior, elemente ale tehnicii de calcul numerice au fost utilizate pentru realizarea echipamentelor specializate in prelucrarea semnalelor. Dezvoltarea intensa a circuitelor cu grad mare de integrare (VLSI, GLSI, avind peste 106 tranzistoare/cip) a deschis o noua etapa in domeniul prelucrarii digitale a semnalelor (PDS), etapa a care a debutat in anul 1979 cu lansarea familiei de procesoare Intel 2920. Acest microprocesor specializat, avind incorporate convertoare A/D si D/A a permis implementarea filtrelor numerice de ordin mic, operind in banda audio (la frecvente de citiva zeci de kHz), folosind doar un numar restrins de componente aditionale. Aproape simultan, firma Texas Instruments a inceput producerea procesorului TMS 320, cu o productivitate deosebita in executarea algoritmilor PDS, gratie unui nou tip de arhitectura interna. In acelasi timp firma AMD a lansat procesorul de tip bit-slice AMD 29500, care impreuna cu microprocesoarele AMD 2900 sunt destinate unor aplicatii care implica prelucrarea numerica a semnalelor. In prezent aproape toate firmele care activeaza in domeniul microelectronicii produc si circuite VLSI pentru prelucrarea numerica a semnalelor. Cei mai importanti producatori1) de circuite PDS sunt: -Texas Instruments 57% -AT&T 13% -Motorola 13% -NEC 8% -Analog Devices 6% -Alti producatori 3% Productia include circuite PDS de uz general cit si circuite destinate unor aplicatii specifice. Pentru usurarea implementarii aplicatiilor, firmele producatoare de circuite PDS ofera si o gama intrega de compomente hardware (sisteme de dezvoltare, module de evaluare, interfete specifice) si software (compilatoare pentru limbaje de nivel inalt, asambloare, editoare, programe de depanare, 1 biblioteci de programe aplicative, cod pentru diversi algoritmi, etc). Datorita performantelor deosebite, procesoarele PDS reprezinta la ora actuala un concurent redutabil pentru microprocesoarele de uz general sau pentru microcontrolere in multe aplicatii. Procesoarele digitale de semnal actuale sunt optimizate in raport cu urmatorii parametri: viteza de prelucrare, consumul de energie si pretul de cost. Circuitele PDS sunt folosite in prezent in: telecomunicatii (modemuri, echipamente radio, sistemele de televiziune, sistemele pentru transmisiuni de date, telefonie celulara), medicina, industria automobilelor, instrumentatie, echipamentele periferice (drievere de disc flexibil si optic, imprimente, sisteme de achizitie), robotica, electronica de consum, s.a. 1.1 Caracteristici ale procesoarelor PDS Procesoarele PDS sunt circuite integrate specializate pentru implementarea algoritmilor de prelucrare numerica a semnalelor. Caracteristicile structurale si functionale ale acestor microprocesoare sunt adaptate particularitatilor impuse de algoritmii de prelucrare: N 1 Convolutie y ( n ) k 0 h ( k ) x ( n k ) N 1 M 1 filtrare recursiva y (n) k 0 ak x (n k ) i 1 bi y (n i ) TFD N 1 nk X (k ) n 0 x (n)W K prelucrare neliniara y (n) k 1 ak x k (n) prelucrare logica y (n) [ x(n), x(n 1), x (n 2), x (n N 1)] viteza mare de prelucrare pentru asigurarea posibilitatii de lucru in timp real; executarea unui volum mare de operatii aritmetice si logice simple; asigurarea unei precizii mari de prelucrare; semnalele de intrare sunt in multe cazuri semnale analogice Aceste cerinte sunt satisfacute pe urmatoarele cai: adoptarea unor arhitecturi cu grad mare de paralelism in prelucrare combinata cu executia pipeline a instructiunilor pentru cresterea vitezei de executie, multe instructiuni fiind executate intr- un singur tact; 2 includerea in circuit a unor module care faciliteaza cresterea productivitatii: multiplicator hardware de tip paralel, circuite pentru deplasari binare, memorii interne pentru date si programe, stiva interna; existenta unor facilitati hardware pentru executia eficienta a buclelor de inctructiuni; implementarea in logica cablata a unitatii de comanda; includerea circuitelor pentru conversia A/D si D/A precum si a unor intefete rapide pentru transferul datelor cu exteriorul (porturi seriale si paralele, controlere DMA); prevederea unor interfete specifice (timmere, circuite PLL, controlere pentru intreruperi); precizia de prelucrare este 16 sau 32 de biti, cu date reprezentate in virgula fixa sau in virgula mobila; setul de instructiuni este adaptat operatiilor cerute de algoritmii PDS (instructiuni pentru inmultire si acumulare a rezultatului, instructiuni pentru manipularea blocurilor de date, un set mai bogat de instructiuni pentru lucrul cu dispozitivele periferice, s.a.); folosirea unor moduri de adresare specifice (adresare cu pre/post incrementare/decrementare, adresare cu inversarea bitilor, adresare modulo, s,a.); a)- Prelucrarea in timp real necesita in multe situatii executarea rapida a unui volum mare de calcule intr-o perioada de esantionare, la o viteza mare de intrare a datelor. In plus algoritmii de prelucrare se caracterizeaza printr-un mare grad de regularitate. De aceea, multe procesoare PDS folosesc o arhitectura de tip paralel care combina avantajele prelucrarii pipeline cu cele ale structurii Harvard. Organizarea pipeline a operatiilor consta in fragmentarea activitatilor si executarea acestora pe unitati functionale distincte. Arhitectura Harvard se caracterizeaza prin faptul ca sunt folosite memorii separate pentru coduri si pentru date, precum si cai separate pentru transferul acestor informatii. In acest mod este posibil transferul operanzilor simultan cu extragerea codurilor. b)- Partea operationala a procesoarelor PDS consta de regula dintr-o unitate aritmetica si logica (UAL) rapida cu acumulator, multiplicator paralel si circuite pentru deplasare binara cu unul sau mai multe ranguri intr-un singur tact (barell shifter). Unele circuite PDS executa operatia de inmultire prin metoda adunarilor si a deplasarilor succesive (de exemplu, I-2920). Operatiile de scadere se executa prin adunarea operanzilor reprezentati in cod complement fata de doi. Procesoarele digitale de semnal functioneaza fie in virgula fixa (pe 16 biti) fie in virgula mobila (pe 32 de biti). O alternativa la virgula mobila este aritmetica in virgula mobila pe bloc. c)- Pentru accelerarea transferului de date cu memoria si pentru reducerea numarului operatiilor de transfer cu exteriorul multe procesoare PDS sunt prevazute cu arii de memorie RAM sau/si ROM/EPROM/flash pentru stocarea interna a datelor sau/si a codurilor. Pentru a elimina 3 necesitatea prevederii unei memorii ROM suplimentare pentru pastrarea coeficientilor algoritmilor de prelucrare sau a constantelor sistemului procesoarele de semnal prevad posibilitatea pastrarii acestor date in memoria pentru programe (care este memorie fixa). La pornirea sistemului aceste constante sunt transferate in memoria de date de unde vor fi preluate de unitatile de prelucrare. In scest scop arhitectura Harvard traditionala (in care cele doua tipuri de memorii erau complet separate) a fost modificata prevazindu-se posibilitatea unor transferuri de date intre cele doua tipuri de memorii cu instructiuni speciale. Exista si posibilitatea de extindere a capacitatii de memorie in exterior, cu care procesoarele pot opera la viteza maxima. Procesoarele PDS sunt prevazute si cu registre interne de uz general care sunt de tip RAM, cu capacitatea de pina la 128 cuvinte sau chiar mai mult. De mentionat ca exista totusi unele diferente intre arhitectura Harvard a memoriei folosita de procesoarele de uz general (PUG) moderne (Pentium, Power PC) si procesoarele PDS. Ca si in cazul procesoarelor PDS, PUG necesita executia mai multor cicluri de acces la memorie intr-un ciclu instructiune datorita functionarii superscalare. In cazul PUG, la o frecventa a tactului de peste 200-300 MHz este dificil de realizat memorii care sa raspunda la viteza procesorului. In consecinta PUG nu pot accesa memoria externa la viteza completa. Solutia acestei probleme consta in folosirea memoriilor cache interne. PUG moderne folosesc memorii cache interne, atit pentru coduri cit si pentru date, cuplate direct la nucleul procesorului. Daca informatiile accesate se afla in memoria cache transferul acestora catre nucleul procesorului se executa cu viteza completa, fara a accesa memoria externa mai lenta. Memoriile cache interne se comporta ca o memorie duala, aproape identic cu arhitectura Harvard. Exista totusi si diferente intre cele doua arhitecturi: - La procesoareele PDS programatorul controleaza explicit datele si instructiunile stocate in memoriile interne. In schimb la PUG, transferul cu memoriile cache este executat automat de logica de comanda, in mod transparent pentru programator. - Chiar daca majoritatea procesoarelor de semnal nu poseda memorii cache interne, la unele este folosita o arie de memorie cache pentru instructiuni, inclusa in nucleul procesorului, separata de bancurile de memorie ale arhitecturii Harvard, folosita pentru executia buclelor de instructiuni. In general procesoarele de semnal nu folosesc memorii cache pentru date. d)- Existenta unor unitati hardware specializate (multiplicator intern de tip paralel, circuite pentru deplasarea datelor binare, unitati aritmetice separate pentru calculul adreselor, s.a. sunt facilitati specifice procesoarelor de semnal. e)- O alta particularitate a procesoarelor PDS o reprezinta existenta unor interfete specializate pentru prelucrarea si achizitia semnalelor. In structura lor exista circuite pentru conversia A/D si D/A sau interfete pentru conectarea acestor circuite. Alte procesoare, ca de exemplu cele din familia TMS 320 (TI) contin, in locul convertoarelor A/D si D/A, controlere 4 pentru intreruperi, care ofera o legatura activa cu dispozitivele exterioare (timmere, interfete programabile, etc.). f)- Implementarea hardware a stivei permite salvarea/restaurarea rapida a contextului procesorului la intreruperi sau la accesarea unor subrutine. Intrucit dimensiunea stivei hardware interna este limitata exista posibilitatea de extensie a stivei in memoria RAM pentru date. g)- O caracteristica a procesoarelor PDS o reprezinta realizarea unitatii de comanda a procesorului in logica cablata, in timp ce procesoarele de uz general au unitatea de comanda realizata prin microprogramare. Aceasta metoda de realizare este mai putin flexibila dar permite in schimb obtinerea unei viteze mai mari de lucru. h)- Setul de instructiuni a procesoarelor de semnal cuprinde atit instructiuni generale cit si instructiuni strict specializate: instructinui de tip MAC pentru realizarea operatiei de multiplicare si acumulare, instructiuni pentru executarea unor operatii strict specializate, instructiuni pentru reperare, s.a. i)- Lungimea cuvintelor pentru efectuarea calculelor este de 8, 16, 25 si chiar de 40 de biti. Pentru marirea gamei dinamice, anumite operatii interne se executa in precizie dubla. Precizia de calcul este impusa de obtinerea unor performante dorite a operatiilor de prelucrare, ca de exemplu, un raport semnal /zgomot convenabil. Daca la circuitele PDS din prima generatie, din dorinta de a obtine o productivitate ridicata precum si o economie de spatiu pe pastila de material semiconductor, s-a renuntat la unele functiuni importante, precum realizarea ciclurilor programabile, un sistem dezvoltat de intreruperi, metode de transfer eficiente, la circuitele din generatia a doua sunt realizate din acest punct de vedere performantele celor mai bune microprocesoare single-cip de uz general. Una din caile de realizare a circuitelor PDS a fost inzestrarea microprocesoarelor de uz general cu facilitati pentru prelucrarea semnalelor. Exemplul cel mai cunoscut este includerea instructiunilor specializate pentru prelucarea imaginilor la nivel de pixel in setul de instructiuni al procesoarelor de uz general (instructiunile MMX si SSE la procesoarele Pentium-Intel). De aceea procesoarele PDS actuale au facilitatile microprocesoarelor de uz general performante. De exemplu, facilitati specifice procesoarelor de uz general (posibilitatile pentru comanda memoriei virtuale, pentru lucrul in regim de multiprogramare, folosirea memoriilor cache, s.a.) au inceput sa fie folosite si de catre procesoarele de semnal. Astfel ca in prezent diferentele dintre diferitele variante de microprocesoare nu mai sunt la fel de nete. Un exemplu de dezvoltare a unui procesor PDS plecind de la un microcontroler il reprezinta circuitul 68HC16 (Motorola). Un alt exemplu il reprezinta procesorul Z89C00 (Zilog), creeat plecind de la microcontrolerul Z8. La fel a procedat si firma National Semiconductors. Aproape 5 toate procesoarele produse de aceasta au facilitati PDS. Fiecare versiune este dedicata unui anumit segment de piata (unei anumite aplicatii), cum sunt masinile pentru sinteza automata a vocii, modemuri, faxuri, printere, echipamente de birou, s.a. Fiecare circuit are anumite facilitati PDS, in functie de cerintele algoritmului aplicatiei concrete. Cresterea constanta a cerintei de procesoare PDS impulsioneaza evolutia lor si cresterea continua a performantelor. Dintre tendintele care se manifesta in acest domeniu pot fi mentionate: - Marirea vitezei de operare prin adoptarea unor noi tehnologii. Au fost realizate deja structuri logice pe baza de Ga-As cu timpi de propagare de 33 psec. Firma Bell-Labs a creeat multiplicatoare de 8x12 biti cu 548 jonctiuni Josefson cu intirzieri de 2 nsec; - Cresterea randamentului circuitelor PDS universale se obtine si prin interconectarea lor cu coprocesoare, orientate pe executarea unor calcule matematice complexe; - Pentru realizarea unor sisteme performante este necesar sa se puna in concordanta, cu acuratete, algoritmii PDS cu arhitectura sistemelor de prelucrare; - Folosirea in locul arhitecturilor traditionale, care presupune existenta unei unitati centrale si a unei memorii, a arhitecturilor bazate pe flux de date (data flow), pentru prelucrarea paralela, sau a retelelor dedicate; - Sporirea eficientei sistemelor PDS se poate obtine si prin perfectionarea circuitelor, cresterea gradului lor de universalitate, introducerea sistemului de intreruperi, a modului de functionare in virgula mobila, imbunatatirea parametrilor electrici, scaderea pretului de cost, etc. - O tendinta care usureaza realizarea functiunilor PDS o reprezinta existenta circuitelor PDS la cerere. Acestea pot fi realizate plecind de la un nucleu PDS la care pot fi atasate dupa necesitati memorie si componente periferice. Toti fabricantii de procesoare PDS procedeaza in acest mod. Firma TI, de exemplu, vinde intre 10÷20% din productia sa sub forma de circuite la cerere, realizate plecind de la un nucleu de procesor in virgula fixa. Se presupune ca circuitele PDS single-cip vor avea o arie de utilizare comparabila cu cea a procesoarelor conventionale. Trebuie insa mentionate si unele inconveniente ale procesoarelor PDS, din punct de vedere a posibilitatilor de implementare a aplicatiilor: Datorita particularitatilor structurale, functionale si de programare, folosirea procesoarelor PDS este ceva mai dificila decit a altor tipuri de microprocesoare. Pentru a usura folosirea acestor circuite au fost create “seturi PDS” ( un astfel de “set” cuprinde circuitul sau placheta cu acesta si software-ul pentru programare), care acopera diverse segmente de aplicatii. De exemplu, firma 6 AT&T a creeat un set PDS pentru implementarea modemurilor cu viteza mai mare de 9600 bps. Firma Motrola colaboreaza cu utilizatori de circuite PDS care pot furniza direct cod pentru diverse aplicatii. Exista si firme specializate in elaborarea de algoritmi pentru deverse aplicatii. Firma IAV (Independent Algorithm Vendors) creeaza cod pentru diverse circuite PDS. Pentru dezvoltarea software-ului chiar de catre utilizatorul sistemelor PDS sunt disponibile 2 tipuri de metode de programare: - Programarea la nivel de blocuri (Block-Level Programing). Intii se realizeaza sistemul care implementeaza algoritmul de prelucrare, sub forma unui graf, folosind blocuri functionale standard, cu ajutorul unor programe pentru grafica (de exemplu, ORCAD, PROTEL, etc.). Dupa definitivarea sistemului se poate executa simularea functionarii pentru a-l adapta la aplicatia concreta. Programul poate genera apoi codul pentru un procesor specificat, pentru un circuit FPGA sau pentru un ASIC. Astfel de sisteme de programare utilizeaza firmele Comdisco, Mentor, Star Semiconductor. - Programarea bazata pe meniuri. Firma Array Microsistems abordeaza proiectarea cu circuite PDS intr-o maniera similara. Pachetul de programe “Array so FFT”, de exemplu, permire selectia unui set de circuite dintr-un menu. Acest set este mai limitat decit gama circuitelor PDS de uz general, insa programul poate implementa un program pentru calculul TFR in 1024 de puncte in maximum 132 microsecunde. Exista totusi situatii cind utilizatorul trebuie sa-si creeze codul pentru un algoritm propriu. Sau alte situatii in care utilizatorul trebuie sa scrie o anumita cantitate de cod pentru a adapta algoritmul preluat dintr-o biblioteca la particularitatile sistemului (controlul indicatorilor de comunicatie, interfata cu operatorul, controlul anumitor linii, etc.) Din acest motiv se folosesc compilatoare pentru limbaje de nivel inalt si sisteme de operare specifice circuitelor PDS. Cele mai folosite sunt compilatoarele pentru limbajul C. Unele compilatoare sunt prevazute si cu programe de optimizare a codului generat. De exemplu, Procesoarele evoluate ale firmei TI (TMS 320C3x, TMS 320C4x ) au si compilatoare pentru limbajul ADA. Un ajutor important pentru folosirea circuitelor PDS il ofera sistemele de operare. Cel mai popular sistem de operare este Spox, al firmei Spectron Microsystems Inc. El contine un nucleu de multiprocesare de timp real, module pentru gestionarea memoriei, biblioteca de functii matematice specifice algoritmilor PDS, o biblioteca C, plus facilitati pentru depanarea programelor. Sistemul Spox este instalat pe platforme cu procesoarele 21000 (Analog Devices), 96002 (Motorola), TMS320C3x si TMS 320C4x (Texas Instr.). O versiune noua, MicroSpox, in virgula fixa, ruleaza 7 pe platforme cu procesoarele 56000 (Motorola), APDS 2100 (AD), TMS 320C2x si TMS 320C5x (TI). Familia 56000 ruleaza si sub sistemul VRTX al firmei Ready Systems, un sistem de operare care poate fi utilizat de majoritatea familiilor de microprocesoare. Pentru evaluarea calitatilor diveselor familii de procesoare PDS se folosesc informatii ca: - timpul de realizare a operatiei de inmultire si adunare (pentru majoritatea procesoarelor PDS acesta este de ordinul a 200 nsec.); - multe dispozitive precizeaza timpul in care este realizata o sarcina precisa, de exemplu un algoritm de filtrare numerica sau de calcul a TFR intr-un numar specificat de puncte (de regula 1024 puncte). Procesoarele de semnal actuale permit realizarea unor sisteme de prelucrare flexibile, suficient de rapide si la un pret de cost competitiv. Caracterizind comparativ sistemele multiprocesor, procesoarele matriciale, microcalculatoarele si sisteme avind la baza procesorul TMS 320, pentru realizarea unei sarcini tipice, cum ar fi calculul TFR in 1024 de puncte, in virgula fixa, a rezultat un cost pe operatie foarte mic in cazul sistemelor cu procesoare PDS, in raport cu celelalte tehnici de calcul (de exemplu, in cazul folosirii calculatorului CRAY1 costul este de 1$/operatie, iar pentru un sistem cu procesorul TMS 320 este de numai 0,00066$/operatie) Sintetizind, avantajele folosirii procesoarelor de semnal in realizarea sistemelor PDS sunt urmatoarele: Posibilitatea de realizare a unor sisteme PDS in timp real, universale si flexibile, cu posibilitati de programare rapida, pentru a obtine o functie predeterminata; Precizie mare de lucru, care depinde de precizia de reprezentare interna a datelor; Stabilitate mare la variatii de temperatura, a tensiunii de alimentare sau a parametrilor componentelor; Lipsa problemelor legate de zgomotul introdus de sursele de alimentare; existenta unor modele matematice pentru proiectarea si analiza sistemelor; Costul redus al componentelor si folosirea procedeelor standard de fabricatie a acestora. 1.2 Caracteristici ale sistemelor PDS Sistemele PDS au citeva caracteristici comune care se refera la algoritmi, rata de esantionare, frecventa de tact si tipul aritmeticii 8 Algoritmii Sistemele PDS sunt deseori caracterizate de algoritmii implementati. Algoritmul specifica operatiile aritmetice care trebuie efectuate dar nu arata si cum sunt implementate aceste operatii. Un anumit algoritm poate fi implementat pe un sistem cu microprocesor de uz general, cu un procesor de semnal sau cu un circuit integrat dedicat. Selectia tehnologiei de implementare este determinata si de alti factori cum ar fi viteza de lucru si precizia. In tabelul 1.1 sunt enumerati algoritmi comuni PDS si unele aplicatii tipice ale acestora. Rata de esantionare O caracteristica de baza a sistemelor PDS este rata de esantianare. Aceasta este viteza cu care esantioanele sunt achizitionate, prelucrate si generate. Impreuna cu complexitatea algoritmilor, rata de esantionare determina cerintele de viteza ale tehnologiei de implementare. Un exemplu familiar este unitatea pentru disc compact audio digital (CD) care genereaza esantioane cu o rata de 44,1 kHz pe doua canale. 9 Sistemele PDS pot utiliza una sau mai multe rate de esantionare; acestea sunt denumite sisteme PDS multirata. Un exemplu este un sistem pentru conversia de la rata de esantionare de 44,1 kHz a CD la rata de esantionare a unitatii de banda audio digitala (DAT) de 48 kHz. Deoarece raportul dintre cele doua rate nu este un numar intreg in mod uzuat conversia se executa in etape, utilizindu-se in acest scop cel putin doua rate intermediare. Alt exemplu de algoritm multirata este bancul de filtre folosit de exemplu pentru codarea vorbirii, audio si video sau pentru unii algoritmi de analiza a semnalelor. Bancurile de filtre constau din etaje care separa din semnal partile de joasa si de inalta frecventa. Aceste noi semnale sunt apoi subesantionate (rata de esantionare este redusa prin eliminarea periodica a unor esantioane) si apoi din nou separate. In aplicatiile de tip multirata raportul dintre cea mai mica rata folosita si rata cea mai mare variaza in limite largi, depasind uneori cinci ordine de marime. La sistemele PDS uzuale rata de esantionare variaza in limite largi. In Fig. 1.1 este prezentata pozitia citorva clase de aplicatii PDS in raport cu rata de esantionare si cu complexitatea algoritmilor. Ratele de esantionare folosite acopera 12 ordine de marime!. Totusi aplicatiile care cer rate inalte sunt rare. Aceasta deoarece pretul de cost si dificultatile de implementare a unui algoritm dat cresc atunci cind rata de esantionare creste. De aceea algoritmii PDS folositi la rate de esantionare ridicate tind sa fie mai simpli decit cei care folosesc rate de esantionare mai reduse. Multe sisteme PDS trebuie sa satisfaca cerinte de viteza foarte stricte pentru ca ele opereaza cu semnale din lumea reala. Aceste sisteme de timp real trebuie sa satisfaca cerintele de viteza in 10 orice conditii. Alte tipuri de sisteme (cum ar fi bazele de date) trebie sa satisfaca cerintele de viteza pe ansamblu. De exemplu, sa presupunem ca un sistem PDS care trebuie sa efectueze conversia de rata de esantionare de la rata CD la rata DAT este implementat ca un sistem de timp real care primeste de la CD esantioane cu rata de 44,1 kHz si produce semnale digitale pentru DAT cu rata de 48 kHz. Convertorul trebuie sa fie pregatit sa primeasca un nou esantion de la CD la fiecare 22,6 s, si sa produca un nou esantion de iesire pentru DAT la fiecare 20,8 s. Daca sistemul se defecteaza sunt piedute date iar semnalul rezultat la iesire este distorsionat. Pentru a satisface astfel de constringeri severe de timp real trebuie efectuata o proiectare atenta a sistemului. Tactul Sistemele digitale folosesc o anumita frecventa de tact. Frecventa de tact corespunde uzual cu frecventa cu care sistemul executa operatiile elementare. Pentru produsele comerciale, de masa, sunt comune frecvente de tact de pina la 100 MHz, cu unele exceptii in cazul produselor performante. Pentru sistemele PDS raportul dintre rata de esantionare si cea a tactului este una dintre caracteristicile folosite pentru a stabili modul de implementare. Acest raport determina cantitatea de hardware necesara pentru a implementa un anumit algoritm, cu o complexitate data, in timp real. Pe masura ce raportul creste si cantitatea si complexitatea structurii hardware creste de asemenea. Reprezentarea numerelor Operatiile aritmetice elementare de adunare si de inmultire sunt comune majoritatii algoritmilor PDS. In consecinta, reprezentarea numerelor si tipul aritmeticii folosit au o influenta puternica asupra comportarii si performantelor sistemului PDS. Cea mai importanta decizie pe care trebuie sa o ia proiectantul sistemului este optiunea pentru o aritmetica in virgula fixa sau una in virgula mobila. Aritmetica in virgula fixa asigura reprezentarea numerelor intr-o gama fixa (de exemplu, intre –1.0 si +1.0), prin cuvinte cu un numar finit de biti (denumit lungimea cuvintului). De exemplu, un numar reprezentat cu opt biti in virgula fixa asigura o rezolutie de 1/256 din valoarea maxima pe care o poate avea numarul. Numerele din afara domeniului specificat nu pot fi reprezentate. Daca operatiile aritmetice produc un numar mai mare de biti, se excuta fie saturarea (marimile sunt limitate la cea mai mica sau cea mai mare valoare reprezentabila), fie elminarea bitilor excedentari (operatie denumita wrap around). Reprezentarea in firgula mobila (floating point) extinde mult domeniul de lucru. In cazul virgulei mobile fiecare numar este reprezentat prin doua cantitati: mantisa (M) si exponentul (E). In fapt mantisa acopera domeniul intre –1.0 si +1.0, iar exponentul indica valoarea cu care trebuie 11 inmultita mantisa (sub forma unei puteri a lui doi) pentru a obtine marimea reprezentata. Valoarea reprezentata este: N = Mx 2E Reprezentarea in virgula fixa asigura o gama dinamica mult mai mare decit reprezentarea in virgula fixa (gama dinamica este raportul dintre valoarea cea mai mare si cea mai mica care poate fi reprezentata). Intrucit aceasta reprezentare reduce probabilitatea de aparitie a depasirilor de scala precum si executia operatiilor de normare, ea simplifica considerabil proiectarea algoritmului si a software-ului. In schimb aritmetica in virgula mobila este mai lenta si mai scumpa decit cea in virgula fixa, iar structura hardware a sistemului este mai complicata. 1.3 Folosirea procesoarelor PDS Prelucrarea digitala in general, si procesoarele PDS in particular, sunt folosite intr-o gama larga de aplicatii, de la sistemele radar la echipamentele electronice de larg consum. Evident ca nici un procesor PDS nu poate satisface cerintele tuturor aplicatiilor. In consecinta, sarcina initiala a proiectantului este de a selecta un procesor PDS care satisface din punct de vedere a performantelor, costului, posibilitatilor de integrare, consumului si a altor factori, pentru aplicatia avuta in vedere. In continuare sunt enumerate citeva categorii de aplicatii PDS (Tabelul 1.2): Sistemele dedicate ieftine Cele mai multe aplicatii pentru procesoarele PDS sunt reprezentate de sisteme ieftine, reproduse intr-un numar mare, precum telefoanele celulare, driever-ele de disc si modemurile. In aceste aplicatii costul si considerentele legate de simplitatea integrarii sunt factori predominanti. Pentru produsele portabile, alimentate de la baterie, puterea consumata este de asemenea un parametru critic. 12 Aplicatii de inalta performanta O alta clasa de aplicatii implica prelucrarea unui volum mare de date cu algoritmi complecsi, pentru cerinte speciale. Aici sunt incluse aplicatiile din domeniul sonar si al explorarilor seismice, unde numarul de produse este mic, algoritmii folositi sunt mai sofisticati, iar proiectarea produsului este mai complexa si mai dificila. Proiectantul exploateaza la maximum performantele procesorului, si asigura suport pentru configuratii multiprocesor. In unele situatii, in loc de a dezvolta propriul sistem proiectantul poate alege un sistem standard de dezvoltare si foloseste bibliotecile existente pentru elaborarea programelor. Aplicatii multimedia pe calculatoare PC O clasa larga de aplicatii PDS o reprezinta calculatoarele PC cu facilitati multimedia. In calculatoarele Pc au fost incorporate procesoare PDS care asigura o varietate de facilitati cum ar fi: mesageria vocala, modemuri de date si faximil, sinteza de muzica si de voce, compresie de imagini. Ca in cazul aplicatiilor dedicate, de volum mare, calculatoarele PC multimedia impun un cost redus si un grad mare de integrare. De asemenea, ca si in cazul altor aplicatii dedicate, calculatoarele PC multimedia cer performante inalte deoarece procesorul PDS trebuie sa asigure functii multiple simultan. In plus, datorita caracterului de multiprocesare al acestor aplicatii, alaturi de realizarea eficienta a fiecarei functiuni, procesorul PDS trebuie sa execute eficient comutarea intre aceste functiuni. Capacitatea de memorie este de asemenea importanta in aceste aplicatii care manipuleaza un volum mare de date. O tendinta de actualitate este incororarea in procesoarele de uz general a unor functiuni specifce PDS pentru a executa mai eficient operatii de prelucrare a semnalelor. In anumite cazuri, astfel de procesoare imbunatatite pot executa anumite operatii fara a mai folosi un procesor PDS separat. 1.4 Problematica proiectarii sistemelor PDS Proiectarea sistemelor de prelucrare digitala a semnalelor in timp real implica studierea principiilor si a metodelor de constructie a algoritmilor, programelor si a mijloacelor hardware de realizare a acestora si cuprinde urmatoarele etape: I. Studierea si elaborarea metodelor de sinteza a operatorilor de prelucrare fizic realizabili, pentru diverse probleme aplicative (de exemplu, construirea functiilor de transfer (sinteza) a filtrelor numerice, a operatorilor pentru conversii spectrale, s.a.); 13 II. Elaborarea si optimizarea a algoritmilor efectivi de calcul a operatorilor stabiliti in etapa anterioara, proces prin care este determinata eficienta necesara a procesorului, prin volumul de calcule care sunt cerute de realizarea operatorului. Optimizarea algoritmului de calcul poate avea ca efect reducerea volumului de calcul si in consecinta simplificarea sau reducerea necesarului de elemente hardware; III. Analiza calitatii algoritmilor prin estimarea preciziei de executie, a influentei lungimii cuvintelor, analiza stabilitatii, a diverselor efecte neliniare; IV. Stabilirea principiilor de realizare hardware si software a algoritmilor PDS. Se fixeaza cu acest prilej arhitectura structurii, a blocurilor functionale, mijloacele software necesare; V. Elaborarea mijloacelor de proiectare automata a sistemelor PDS in timp real. De mentionat aici ca un rol deosebit il are modelul functional al procesorului specializat, a carui nivel de detaliere a structurii si a algoritmilor poate fi diferit. Cele mai bune rezultate se obtin prin folosirea in etapa de proiectare a modulelor de simulare speciale (emulatoare de procesoare specializate) care modeleaza particularitatile de functionare a blocurilor operationale ale procesorului specializat. 14 Curs 2 Procesoare DSP. Incapsulari. Alternative In capitulul anterior procesoarele de semnal au fost prezentate in termeni generali, atentia concentrindu-se pe caracteristicile lor de baza, pe acelea ale sistemelor PDS si pe domeniile de folosire. In acest capitol vor fi prezentate caracteristicile procesoarelor PDS. Intii este facuta o prezentare la nivel inalt a caracteristicilor comune ale tuturor procesoarelor PDS, iar in continuare vor fi prezentate variante constructive de procesoare PDS precum si alternative ale acestora, cum ar fi microprocesoarele de uz general. Urmatoarele capitole vor trata in detaliu aspecte arhitecturale si caracteristici ale procesoarelor PDS. 2.1 Procesoare PDS In prezent sunt disponibile pe piata citeva zeci de familii de procesoare PDS. In tabelul 2.1 sunt sintetizate citeva dintre cele mai reprezentative caracteristici ale unor familii uzuale de procesoare PDS. Aceste familii vor fi utilizate pe cuprinsul prezentarii drept exemple pentru a ilustra aspecte de arhitectura si caracteristici ale procesoarelor PDS comerciale. Multe procesoare PDS au unele caracteristici comune pentru a putea executa activitati repetitive si cu un volum mare de calcule. Cele mai importante dintre aceste caracteristici sunt sintetizate in Tabelul 2.2. In capitolele urmatoare aceste caracteristici si altele vor fi analizate in detaliu. Operatia rapida de multiplicare si acumulare Una dintre caracteristicile cele mai reprezentative ale procesoarelor PDS este posibilitatea de a executa operatia de multiplicare-acumulare (cunoscuta sub abrevierea MAC) intr-un singur ciclu instructiune. Operatia de multiplicare-acumulare este utila in algoritmii care necesita calculul produsului a doi vectori (de exemplu, filtrarea digitala, corelatia, calculul transformatei Fourier). Pentru a realiza acest lucru procesoarele PDS include un multiplicator si un acumulator integrat in unitatea aritmetica de prelucrare (denumita calea de date). In plus aceasta permite efectuarea operatiilor de multiplicare si acumulare fara a produce depasire de scala aritmetica (overflow). Procesoarele PDS permit stocarea unui numar de biti suplimentari in registrii de acumulare pentru a le adapta la dimensiunea rezultatului. Calea de date a procesoarelor PDS este analizata in detaliu in Cap. 4. 1 Tabelul 2.1 Tabelul 2.2 2 Arhitectura multiacces a memoriei O alta caracteristica comuna multor procesoare PDS este posibilitatea de a executa citeva cicluri de acces la memorie intr-un singur ciclu instructiune. Acesta permite procesorului sa extraga simultan o instructiune si operanzii pentru instructiune sau sa stocheze rezultatul instructiunii anterioare in memorie. Pentru aceasta este necesara o largime de banda mare intre memorie si procesor pentru o performanta buna, de exemplu atunci cind intr-un algoritm sunt executate intensiv operatii repetitive cu date, cum este cazul multor aplicatii PDS. La multe procesoare PDS, accesarea multipla a memoriei intr-un singur ciclu este restrictionata. In mod curent toate locatiile de memorie accesate sunt localizate in cip si operatiile de accesare multipla a memoriei pot fi executate doar cu anumite instructiuni. Pentru a putea executa acesarea simultana a mai multor locatii de memorie procesoarele PDS poseda magistrale interne multiple, memorii interne multicip si, in unele situatii, mai multe bancuri de memorie independente. Arhitectura memoriei la procesoarele PDS este putin diferita de cea existenta la procesoarele de uz general. Aspecte ale arhitecturii procesoarelor PDS sunt detaliate in Cap. 5. Moduri de adresare specializate Pentru ca procesorul sa execute operatiile cu viteza maxima si pentru a permite specificarea operanzilor multipli cu ajutorul unor cuvinte instructiune scurte procesoarele PDS contin unitati dedicate pentru adresare. Odata ce registrii pentru adresare au fost configurate, unitatea de generare a adresei lucreaza in background, calculind adresele necesare pentru accesarea operanzilor in paralel cu executarea operatiilor aritmetice. Unitatile pentru generarea adreselor accepta si moduri de adresare adaptate aplicatiilor PDS. Cel mai comun dintre acestea este adresarea indirecta cu post- incrementare, care este folosit atunci cind sunt executate operatii repetitive pe siruri de date stocate la adrese succesive in memorie. In plus sunt prevazute si moduri de adresare speciale (cum este adresarea circulara sau modulo care simplifica acessarea bufferelor de date. Unele procesoare permit modul de adresare cu inversarea bitilor, utilizata in calculul Transformatei Fourier Rapida - TFR. Modurile de adresare sunt prezentate in detaliu in Cap. 6. Controlul specializat al functionarii Pentru ca multi algoritmi PDS implica executarea unor calcule repetitive, unele procesoare PDS ofera un suport eficient pentru executarea buclelor. Deseori este prevazuta o instructiune de buclare sau o instructiune “repeat” pentru a asigura programatorului posibilitatea implementarii ciclurilor for-next fara marirea ciclului instructiune prin actualizarea si testarea contorului de bucla sau pentru executarea saltului inapoi la inceputul buclei. 3 Unele procesoare PDS poseda si alte facilitati de comanda pentru imbunatatirea performantelor cum ar fi: comutarea rapida a contextului si latenta redusa, executarea intreruperilor cu incarcare minima si pentru executarea rapida a operatiilor de intrare-iesire. Periferice si interfete I/O Pentru a obtine un cost redus si performante I/O inalte multe procesoare PDS incorporeaza unul sau mai multe interfete I/O seriale sau/si paralele precum si mecanisme speciale pentru operatiile I/O cum ar fi accesul direct la memorie (DMA). Interfatele procesorului PDS cu perifericele sunt proiectate deseori pentru o interfatare directa cu perifericele I/O comune cum ar fi convertoarele A/D si D/A. Odata cu imbunatatirea tehnologiilor de fabricatie a circuitelor integrate prin cresterea densitatii de integrare si a flexibilitatii, comerciantii de procesoare PDS au inceput sa includa in procesor nu numai interfete noi ci si dispozitive periferice complete. De exemplu, circuitele pentru telefoanele celulare au convertoare A/D si D/A in cip. 2.2 Variante constructive de procesoare PDS Varianta cea mai comuna de microprocesor PDS este procesorul single-cip. Odata cu proliferarea aplicatiilor PDS, cresterea nivelului de integrare pentru toate produsele electronice si dezvoltarea unor noi tehnici de incapsulare au facut ca in prezent procesoarele PDS sa fie disponibile in multe variante constructive, care vor fi prezentate in continuare. Module multicip Modulele multicip (MCM) sunt un fel de “supercipuri”. In loc de a incapsula un singur circuit integrat intr-o capsula din plastic sau din ceramica, cum este cazul procesoarelor conventionale, un MCM contine mai multe cipuri incapsulate impreuna. Un prim avantaj este obtinerea unei densitati mari de incapulare (mai multe circuite pe unitatea de suprafata a plachetei de circuit imprimat). Aceasta conduce la cresterea vitezei de operare si la scaderea consumului. Odata cu dezvoltatea tehnologiileor de incapsulare in ultimii ani producatorii au inceput sa ofere si module multicip continund procesoare PDS. De exemplu Texas Instruments produce un MCM care include doua procesoare TMS 320C40 si 128 kcuvinte de 32 biti de memorie SRAM. 4 Cipuri multiprocesor Pe masura ce tehnologia de fabricatie a circuitelor a avansat, proiectantii de procesoare PDS doresc sa creeze mai multe facilitati si performante intr-un procesor single-cip si de aceea cauta sa incorporeze mai multe procesoare intr-un singur circuit integrat. De exemplu, Motorola si Zilog ofera dispozitive care combina intr-un singur cip un microprocesor si un microcontroler, o combinatie foarte intilnita in multe aplicatii. Firma Siemens a produs circuitul Tricore care contine un procesor de uz general, un procesor PDS si un microcontroler. Ca in cazul modulelor multicip cipurile multiprocesor asigura cresterea performentelor si reduc consumul fata de sistemele realizate cu componente separate. Totusi oferta de cipuri multiprocesor este limitata la citeva dispozitive. Seturi de circuite In timp ce unii producatori combina mai multe procesoare intr-un singur cip si altii folosesc module multicip pentru a combina mai multe cipuri in aceeasi capsula, o alta varianta de impachetare a procesoarelor PDS este de a “imparti” un procesor PDS in doua sau mai multe capsule separate. Aceasta abordare a fost utilizata de compania Butterfly PDS pentru a realiza setul de circuite PDS care contine generatorul de adrese LH 9320 si procesorul LH 9124 (vindut mai tirziu si de firma Sharp Microelectronics). Aceasta divizare functionala este justificata atunci cind procesorul este foarte complex si daca numarul de pini de intrare/iesire este foarte mare si nu poate fi asigurat de o singura capsula. Prin aceasta divizare functionala in mai multe cipuri se pot folosi capsule mai ieftine si deci se reduce pretul de cost. Aceasta abordare sporeste de asemenea flexibilitatea, permitind proiectantului de sistem sa combine circuitele individuale in configuratia adaptata cel mai bine aplicatiei. De exemplu, cu setul de circuite realizate de Butterfly PDS pot fi utilizate mai multe circuite pentru generarea adresei impreuna cu un singur procesor. Rezulta un set de circuite care ofera mai multi pini decit un circuit individual. In cazul setului Butterfly folosirea separata a generatorului de adrese si a procesorului permite realizarea unui procesor care are opt magistrale externe de 24 de biti, mult mai mult decit poate oferi capsula unui procesor single-cip. Nuclee PDS O abordare interesanta pentru productia de masa este imperecherea intr-un sigur cip a unui procesor PDS programabil cu un circuit definit de utilizator. Aceasta abordare combina beneficiile procesoarelor PDS (programabilitatea, existenta unor instrumente pentru dezvoltare si a bibliotecilor de software) cu avantajele unor circuite realizate la cerere (costurile reduse de productie, gabaritul redus, puterea consumata redusa). In continuare vor fi prezentate doua variante pentru o astfel de abordare: un ASIC avind la baza un nucleu PDS si un procesor PDS realizat la cerere. 5 Un nucleu PDS este un procesor PDS destinat folosirii ca un bloc de constructie la realizarea unui circuit mai complex, in loc de a fi incapsulat de sine statator intr-un cip. Un ASIC bazat pe un nucleu PDS permite proiectantului de sistem sa integreze un PDS programabil, logica de interfata, perifericele, memoria precum si alte componente cerute de client intr-un singur circuit integrat. In Fig. 2.1 si 2.2 este prezentat conceptul de ASIC cu nucleu PDS. Fig. 2.1 Fig. 2.2 6 Mai multi furnizori de procesoare PDS folosesc astfel de abordari bazate pe nuclee pentru a realiza propriile versiuni de procesoare, orientate pe un anumit segnemt de aplicatii, cum ar fi telecomunicatiile. In tabelul 2.3 sunt prezentate citeva versiuni disponibile de nuclee PDS precum si firmele producatoare: AT&T, Texas Instruments, SGS-Thomson Microelectronics, PDS Group, Clarkspur Design, 3Soft, Tensleep Design. Firmele definesc in mod diferit ce include un nucleu PDS. De exemplu, pentru Texas Instruments nucleul PDS contine nu numai procesorul, ci si memorie si periferice. Nucleele firmelor Clarkspur Design si PDS Group includ memorie dar nu si periferice. Nucleul produs de SGS-Thomson include numai procesorul. Serviciile pe care le asigura aceste companii pot fi impartite in doua categorii. Furnizorii din prima categorie asigura si producerea circuitului ASIC care contine nucleul PDS. Furnizorii din categoria a doua furnizeaza clientului licenta pentru nucleu care isi alege singur fabricantul de cip. Firmele Texas Instruments si SGS-Thomson sunt furnizori din prima categorie. Texas Instruments are citeva versiuni de nuclee PDS. Pentru volume de productie mici TI ofera produsul TEC320C52, care combina procesorul de 16 biti TMS 320C52 cu o arie continind 15.000 porti. Clientul isi proiecteaza circuitul propriu in jurul nucleului (folosind in mod curent instrumente pentru sinteza logica) folosind aria de porti logice existenta in cip. Apoi TI fabrica cipul pentru client. Aceste abordari de “nuclee PDS completate cu arie de porti” ofera avantajul ieftinirii costului de proiectare, de productie si scurteaza ciclul de fabricatie. Datorita complexitatii reduse a proiectarii ariei de porti procesul de proiectare a circuitului este mai rapid decit folosind alte tipuri de circuite integrate. Pentru productie de volum mare TI asigura facilitati pentru proiectarea totala sau partiala folosind ca nuclee procesoarele PDS standard (TMS 320C1x, TMS320C2x, TMS320C2xx, TMS 320C3x, TMS320C5x). Aceste nuclee pot fi combinate cu parti definite complet de catre client, realizate fie cu arii de porti logice, sau cu diverse combinatii ale acestor variante. SGS-Thomson ofera nucleul PDS de 16 biti, D950-CORE, ca o macrocelula in libraria sa de circuite ASIC standard. Hardware-ul specific aplicatiilor clientului poate fi creat cu celule standard sau cu arii de porti. Firmele PDS Group, Clarkspur Design, Infinite Solutions, Tensleep Design, TCSI si 3Soft ofera nuclee sub licenta. Clientul primeste descrierea completa a nucleului PDS. Acest nucleu poate fi produs ca parte a unui ASIC, folosind facilitatile de productie alese de client. In plus clientul poate modifica nucleul, daca doreste. Nuclele sub licenta sunt disponibile in general intr-o forma optimizata complet pentru cerintele unui anumit client si compatibile cu particularitatile unui 7 anumit fabricant de circuite. Deseori sunt disponibile la furnizor si descrieri VHDL sau Verilog HDL. Procesoare PDS personalizate In unele situatii este nevoie ca insasi nucleul PDS sa fie modificat sau extins (o alternativa la adaugarea in jurul nucleului de circuite externe). De exemplu, un proiectant poate adauga o noua unitate functionala (de exemplu o unitate pentru corectia erorilor de codare sau o unitate pentru manipularea bitilor) la cale de date a nucleului pentru a-i imbunatati performantele intr-o anumita aplicatie. Procesoarele PDS care pot suferi astfel de modificari sunt denumite “customizabile" sau personalizate. Dupa cum s-a mentionat diferiti furnizori folosesc termenul de nucleu in mod diferit, de la posibilitatea de a adauga periferice si memorie pina la posibilitatea de a modifica chiar unitatea de executie a procesorului. Desi nucleele PDS au un mare potential de folosire ele au si citeva limitari. In primul rind, in cazul nucleelor la care productia este asigurata chiar de furnizor cumparatorul nu are acces la proiectul intern al circuitului. Ca rezultat, toate modificarile trebuie facute de catre furnizor, solutie deseori costisitoare. In cazul nucleelor cu licenta proiectul intern al circuitului este disponibil la client care poate face modificari dupa necesitati. Este nevoie insa de experienta pentru a executa aceste modificari. In plus modificarea arhitecturii nucleului impune si modificarea instrumentelor pentru dezvoltarea software-ului (asamblor, linker, simulator, etc.). In prezent firmele cel mai bine plasate pe piata procesoarelor PDS pesonalizate sunt AT&T Microelectronics si Philips, ambele oferind nuclee PDS intr-o gama diversa. In particular, nucleul de procesor PDS 1600 produs de AT&T a fost proiectat sa permita atasarea facila a unor noi unitati de executie la calea de date, iar instrumentele sale software au fost de asemenea proiectate pentru adaugarea suportului pentru unitati noi de executie. In mod similar, nucleul EPICS – Philips, a fost proiectat pentru a permite dezvoltarea; Philips a produs versiuni ale nucleului cu diferite lungimi ale cuvintelor. Multiprocesoarele Indferent cit de performante devin procesoarele PDS, nevoile pentru o larga clasa de aplicatii nu pot fi satisfacute de un singur procesor. Unele aplicatii pot fi realizate cel mai bine cu procesoare dedicate. Insa daca programabilitatea este importanta o solutie buna o pot reprezenta sistemele multiprocesor cu procesoare comerciale. Aproape orice procesor comercial poate fi utilizat in configuratii multiprocesor. Unele firme au creat insa procesoare speciale pentru sisteme multiprocesor. Exemple: TMS320C4x – TI, PDS96002 – Motorola, APDS-2106 – Analog Devices. Aceste procesoare au facilitati suplimentare (cum sunt magistrale externe multiple, logica de 8 arbitraj a magistralei, porturi multiple dedicate pentru comunicatii interprocesor) care simplifica proiectarea hardware si imbunatatesc performantele. 2.3 Alternative pentru procesoarele PDS Exista mai multe alternative pentru procesoarele PDS comercialecare vor fi prezentate in continuare. Microprocesoarele de uz general Pe masura ce microprocesoarele de uz general au devenit mai rapide ele sunt capabile sa realizeze si functiuni de prelucrare a semnalelor. Cu toate ca procesoarele de uz general sunt mai lente si mai putin eficiente decit procesoarele PDS pentru aplicatii PDS exista inca motive puternice pentru folosirea lor in aplicatii. In primul rind, pentru ca multe produse electronice, de la telefoane la controlere pentru automobile, sunt proiectate in prezent folosind microprocesoare pentru control, interfata cu utilizatorul si comunicare. Daca o aplicatie PDS trebuie adaugata la un produs existent care contine un microprocesor de uz general, atunci aceasta abordare este avantajoasa din punctul de vedere a costului. In al doilea rind, pentru ca instrumentele software pentru dezvoltare, deja existente pentru microprocesoarele de uz general, sunt in general mai sofisticate si mai puternice decit cele pentru procesoarele PDS. Pentru aplicatii la care performantele nu sunt foarte stricte aceasta abordare este importanta. Cu cit aplicatiile de prelucrare a semnalelor sunt incorporate intr- un numar din ce in ce mai mare de produse microprocesoarele de uz general au inceput sa fie inzestrate cu caracteristici ale procesoarelor PDS pentru a le face mai adecvate pentru aplicatii PDS intensive. De exemplu, procesoarele de uz general Motorola/IBM PowerPC 601, MIPS R10000, Sun UltraSPARC si Hewelett-Packard PA-7100LC sunt toate capabile sa execute operatia de multiplicare-acumulare in virgula mobila intr-un singur ciclu instructiune. In plus, unele dintre aceste procesoare au si facilitati pentru aplicatii de prelucrare a semnalelor multimedia. In mod asemanator, Intel realizat o versiune a procesorului Pentium care are facilitati suport pentru operatii PDS. Nu este inca clar daca procesoarele hibride sau procesoarele de uz general si procesoarele PDS separate vor deveni o abordare comuna. Se asteapta ca pentru urmatorii ani aplicatiile cu o cantitate semnificativa de operatii PDS sa fie realizate cu procesoare PDS specializate. 9 Calculatoare personale si statii de lucru Aplicatiile PDS pot beneficia de avantajele platformelor realizate cu procesoare de uz general. Calculatoarele personale si statiile de lucru care folosesc cel mai mult aceste platforme ofera posibilitati deosebite pentru aplicatiile care incorporeaza prelucrari de semnale. Unele aplicatii PDS pot fi implementate direct pe calculatoare sau statii de lucru care nu sunt prevazute cu procesoare PDS. Ele au multe din calitatile si limitarile mentionate deja. Dar in unele situatii, platforma cu procesorul ei de uz general este adecvata ea insasi pentru a implementa o aplicatie completa. Produsele unde prelucrarile PDS sunt executate numai soft sunt viabile acolo unde cerintele pentru prelucrari nu sunt stricte si unde este deja disponibila o statie de lucru sau un calculator personal pentru acest scop. Multe aplicatii stiintifice sau ingineresti care implica operatii de analiza sau sinteza fara restrictii de timp real pot fi executate in acest mod. Poate cel mai vizibil exemplu de abordare de acest gen la prelucrarea semnalelor este initiativa firmei Intel denumita NST (native signal processing). NSP se refera la folosirea procesorului gazda din calculatorul personal (“native”) pentru aplicatii multimedia de baza cum ar fi compresia si decompresia audio, sinteza muzicii si a sunetelor si altele. Avantajul acestei abordari este reducerea costului prin eliminarea folosirii unor componente hardware complexe. In acest sens exista tendinta producatorilor de calculatoare personale si de statii de lucru de a adauga mai multe facilitati PDS la produsele lor, fie introducind procesoare PDS pe placile de baza fie prin adaugarea de periferice precum convertoare A/D si D/A sau interfete pentru linia telefonica. Hardware custom Exista doua ratiuni importante pentru care hardware-ul dezvoltat la cererea clientului este uneori o alegere mai buna decit o implementare avind la baza un procesor PDS: performantele si pretul de productie. Practic pentru orice aplicatie poate fi proiectat hardware la cererea clientului care sa asigure performante mai bune decit un procesor PDS comercial. La fel cum procesoarele PDS sunt mai eficiente privind costul pentru aplicatii PDS decit procesoarele de uz general datorita caracterului lor specializat, hardware-ul realizat la cererea clientului este mai eficient privitor la cost din acelasi motiv. In aplicatiile care cer o frecventa de esantionare mare hardware-ul realizat la cerere este unica optiune. Pentru produse de masa hardware-ul realizat la cerere este de asemenea mai putin costisitor decit un procesor PDS. Aceasta pentru ca o implementare la cererea clientului plaseaza in hardware numai acele functiuni care sunt necesare aplicatiei, in timp ce pentru un procesor PDS se plateste de fiecare data pentru toate functiunile, chiar daca unele sunt foarte putin folosite. Desigur insa ca proiectarea hardware-ului la cerere ridica anumite probleme si dificultati. Cele mai evidente sunt costurile proiectarii, in special pentru cipurile realizate la cerere. 10 Componentele hardware la cerere pot avea diferite forme. Acesta poate fi o mica placa de circuit imprimat cu citeva componente sau un sistem complex care incorporeaza circuite integrate realizate la cerere. Aceasta depinde de cerintele aplicatiei. Una dintre abordarile comune pentru hardware-ul la cerere in aplicatiile PDS este de a proiecta placi de circuite imprimat care incorporeaza diverse componente. Acestea pot include dispozitive logice standard, unitati aritmetice cu functii fixe sau configurabile, arii de porti FPGA, si circuite integrate pentru functii sau specifice aplicatiilor (FASIC). Dupa cum arata numele, FASIC este un circuit proiectat pentru a realiza o functie specifica, probabil pentru o singura aplicatie. Exemple de FASIC sunt circuitele pentru filtru digital configurabil, care poate fi organizat pentru a satisface o gama larga de aplicatii si circuitele pentru modem-faximil care sunt proiectate special pentru a asigura functii de prelucrarea semnalului pentru modemurile de fax si care nu pot fi utilizate in alt scop. Multe circuite integrate oferite de producatori pentru aplicatii PDS sunt procesoare PDS standard care contin programe realizate la cerere, stocate in memoria ROM. Unele din aceste circuite au la baza procesoare PDS comerciale. De exemplu, circuitele pentru modem fabricate de firma Phylon au la baza procesoare Analog Devices si Texas Instruments. Altele au la baza arhitecturi proprii; cel mai bun exemplu sunt circuitele modem pentru date si fax produse de Rockwell. Cu cit instrumentele pentru proiectarea circuitelor devin mai performante si inginerii sunt mai familiarizati cu tehnicile de proiectare, tot mai multe firme isi dezvolta circuitele necesare pentru aplicatii. Proiectarea circuitului propriu asigura maximum de flexibilitate deorece acestea sunt adaptate nevoilor aplicatiei pina la nivelul fiecarei porti logice. 11 Capitolul 3 Reprezentarea numerelor si aritmetici Una dintre cele mai importante caracteristici, care determina disponibilitatea procesoarelor DSP pentru o aplicatie anume, este tipul de reprezentare numerica binara folosita de procesor. Cele mai folosite reprezentari binare a datelor numerice de procesoarele DSP comerciale sunt reprezentate in Fig. 3.1. 3.1 Virgula fixa si virgula mobila Primele procesoare DSP au folosit aritmetica in virgula fixa, si de fapt procesoarele DSP cu virgula fixa inca sunt dominante. In procesoarele cu virgula fixa, numerele sunt reprezentate fie ca intregi (aritmetica intreaga), fie ca fractii cu valoarea intre –1,0 si +1,0 (aritmetica fractionara). Algoritmii si hardware-ul utilizat pentru a implementa aritmetica fractionara sunt virtual identici cu aceia folositi pentru aritmetica cu intregi. Principala diferenta intre cele doua reprezentari este legata de modul in care sunt manipulate rezultatele operatiilor de multiplicare. In practica, majoritatea procesoarelor DSP cu virgula fixa suporta atit aritmetica fractionara cit si cea cu intregi. Prima este mai folositoare pentru algoritmii de procesare a semnalului, in timp ce a doua este utilizata pentru operatii de control, calculul adreselor si pentru alte operatii care nu au legatura cu semnalele. Figurile 3.2 si 3.3 ilustreaza reprezentari simple ale intregilor si fractiilor. Se observa ca folosind aritmetica cu intregi pe un DSP cu virgula fixa uneori calculele consuma mai mult timp sau sunt supuse unor constringeri decit atunci cind este folosita aritmetica fractionara. 1 Exemplu de calcul in virgula fixa cu aritmetica intreaga Exemplu de calcul in virgula fixa cu aritmetica fractionara 2 Alta clasa de procesoare DSP foloseste aritmetica cu virgula mobila, unde numerele sunt reprezentate prin mantisa si exponent. Mantisa este de obicei valoarea fractionara a semnalului. Exponentul este un intreg care reprezinta numarul de ranguri binare cu care virgula mantisei (similar cu virgula intr-un numar in baza 10) trebuie deplasata la stinga sau la dreapta pentru a obtine valoarea numarului original. Valoarea zecimala reprezentata este data de relatia: valoare = mantisa x 2exponent In general, procesoarele cu virgula mobila accepta si date cu virgula fixa (de obicei intregi). Aceasta este necesara pentru a facilita operatiile cu date care sunt inerent intregi, cum ar fi adrese ale memoriei. Aritmetica cu virgula mobila este un mecanism mai flexibil si mai general decit cea cu virgula fixa. Cu virgula mobila, utilizatorii sistemului au acces la o gama dinamica mai larga (raportul intre cel mai mare si cel mai mic numar care poate fi reprezentat) si in multe cazuri la o precizie mai buna. Exemplu de conversie in virgula mobila a unui numar pozitiv cu Mantisa pe 10 biti si Exponent pozitiv pe 6 biti: 3 Exemplu de conversie in virgula mobila a unui numar pozitiv cu Mantisa pe 10 biti si Exponent negativ pe 6 biti: Exemplu de conversie in virgula mobila a unui numar negativ cu Mantisa pe 10 biti si Exponent pozitiv pe 6 biti: Exemplu de conversie in virgula mobila a unui numar negativ cu Mantisa pe 10 biti si Exponent negativ pe 6 biti: 4 Precizia. Definitia data preciziei este bazata pe ideea erorii de cuantizare. Eroarea de cuantizare este eroarea numerica introdusa atunci cind un format de numar mai lung (cu mai multi biti) este convertit la unul mai scurt. De exemplu, in cazul numerelor zecimale, cind rotunjim valoarea 1,325 la 1,33, introducem o eroare de cuantizare de 0,005. Cu cit eroarea de cuantizare posibila este mai mare fata de marimea valorii reprezentate, cu atit precizia este mai mica. Pentru un format cu virgula fixa, definim precizia maxima posibila ca fiind egala cu numarul de biti din format. De exemplu, un format fractionar pe 16 biti are o precizie maxima de 16 biti. Aceasta definitie este bazata pe calculul raportului dintre marimea valorii reprezentate si marimea erorii maxime de cuantizare, la convertirea de la o reprezentare mai precisa prin rotunjire. Formal aceasta poate fi scrisa: Precizia maxima [in biti] = log2 (|valoarea maxima|/|eroarea maxima de cuantizare|) Pentru reprezentarea fractionara pe 16 biti, valoarea maxima care poate fi reprezentata este – 1,0. Cind convertim aceasta data la un format fractionar pe 16 biti, de la unul mai precis, prin rotunjire, eroarea maxima de cuantizare este 2-16. Folosind relatia de mai sus, putem calcula precizia maxima pentru acest format, respectiv log2 (1/2-16), sau 16 biti, deci aceeasi cu lungimea totala a formatului. Se observa ca, daca data care este reprezentata are o marime mai mica decit cea maxima, precizia obtinuta este mai mica decat precizia maxima posibila. Aceasta subliniaza importanta scalarii atente a semnalului cind folosim aritmetica cu virgula fixa. Scalarea este folosita pentru a mentine precizia dorita, prin modificarea intervalului de valori ale datelor astfel incat sa fie apropiat de intervalul maxim oferit de reprezentarea numerica folosita. Scalarea este discutata in detaliu in cap. 4,” Calea datelor”. Folosind aceeasi definitie pentru formatul cu virgula mobila, precizia maxima posibila este numarul de biti din mantisa. Procesoarele cu virgula mobila mentin o precizie foarte buna fara efort suplimentar din partea programatorului. In practica, procesorele DSP cu virgula mobila folosesc in general un format pe 32 de biti, cu o mantisa pe 24 de biti si un bit intreg, care furnizeaza o precizie de 16 biti. Deci, in timp ce in teorie alegerea intre aritmetica in virgula fixa si in virgula mobila poate fi independenta de alegerea preciziei, in practica procesorul cu virgula mobila, asigura o precizie mai inalta. Gama dinamica. Asa cum am mentionat, gama dinamica este definita ca raportul dintre cel mai mare si cel mai mic numar reprezentabil intr-un anumit format de data. In aceasta privinta formatele cu virgula mobila au avantajul major. De exemplu, consideram 5 reprezentarea fractionara in virgula fixa pe 32 de biti. Valoarea minima care poate fi reprezentata de acest format este 2-31; iar valoarea maxima este 1,0 – 2-31. Raportul dintre acestea, care este gama dinamica a acestui format de data, este aproxmativ 2,15 x 109, sau aproximativ 187 decibeli (dB). Un format in virgula mobila tot cu 32 de biti (cu o mantisa de 24 de biti si un exponent pe 8 biti) poate reprezenta numere de la aproximativ 5,88 x 10 -39 la 3,40 x 1038, acoperind o gama dinamica de aproximativ 5,79 x 1076, sau peste 1535 dB. Deci, folosind acelasi numar de biti, formatul cu virgula mobila asigura o gama dinamica mult mai mare. In aplicatii, gama dinamica se traduce intr-un interval de amplitudini ale semnalului care pot fi prelucrate, mentinind o fidelitate suficient de mare. Aplicatii diferite au nevoie de game dinamice diferite. Pentru aplicatii in telecomunicatii o gama dinamica de 50 dB este in general suficienta. Pentru aplicatii audio de fidelitate inalta este nevoie de un domeniu de 90 dB. Adesea este utila o gama dinamica mai mare decit cerintele minime ale aplicatiei, daca reprezentarea numerica si hardware-ul aritmetic al procesorului o permit, aceasta degrevind programatorul de o parte din problemele de scalare care pot sa apara. Scalarea este discutata in capitolul 4 - “Calea de date“. Procesoarele DSP cu virgula mobila sunt, in general, mai scumpe decit cele cu virgula fixa, dar mai usor de programat. Costul ridicat este datorat circuitului mai complex necesar procesorului cu virgula mobila, care implica un cip mai mare. In plus, lungimea mai mare a cuvintelor procesoarelor cu virgula mobila necesita cresterea dimensiunii magistralelelor externe si a memoriilor externe, marind costul total al sistemului. Avantajul folosirii mai simple a procesoarelor cu virgula mobila este datorat faptului ca in multe cazuri programatorul este degrevat de sarcina controlului gamei dinamice si preciziei. Din contra, la un procesor cu vigula fixa, programatorul trebuie sa fie atent adesea la scalarea datelor in diverse stadii ale programului pentru a asigura o performanta numerica echivalenta cu gama dinamica si precizia limitata a procesorului cu virgula fixa. Cu toate ca reprezentarea in virgula mobila ofera performante superioare, trebuie mentionat ca, din cauza dificultatilor de implementare, potentialul acestei reprezentari nu este deplin valorificat. Doar prin folosirea unor arhitecturi complet paralele combinate cu logica combinationala pipeline, pentru obtinerea unei viteze mari de prelucrare, va fi valorificat potentialul acestei reprezentari. Cea mai mare parte a aplicatiilor dedicate folosesc procesoare cu virgula fixa pentru ca prioritatea o reprezinta costul scazut. Programatorii si proiectantii de algoritmi stabilesc gama dinamica si precizia necesara in aplicatia lor, fie analitic, fie prin simulare, si apoi adauga operatii de scalare in cod daca este necesar. Pentru aplicatii care sunt mai putin sensibile la cost, sau care au cerinte stricte pentru gama dinamica si de precizie, sau unde programarea mai usoara este mai importanta, sunt mai potrivite procesoarele cu virgula mobila. 6 3.2 Largimea nativa a cuvintelor pentru date Lungimea nativa a cuvintelor pentru reprezentarea datelor intr-un procesor DSP este lungimea datelor pe care magistralele procesorului si calea datelor o pot manipula intr-un singur ciclu instructiune. Toate DSP-urile cu virgula mobila uzuale folosesc o lungime nativa de 32 biti. Pentru procesoarele cu virgula fixa cea mai folosita lungime este 16 biti. Familiile de procesoare DSP5600x si DSP563xx (Motorola), folosesc cuvinte pe 24 biti, in timp ce procesorul ZR3800x (Zoran), foloseste cuvinte de lungime 20 biti. Marimea cuvintelor are un impact major asupra costului procesorului pentru ca influenteaza marimea cipului si numarul de pini ai capsulei (package pins) precum si marimea si numarul de dispozitive de memorie externa conectate la procesor. De aceea, proiectantii incearca sa foloseasca cipuri cu cea mai mica lungime a cuvintelor pe care o poate accepta aplicatia respectiva. Nucleul DSP - CD2450 (Clarkspur Design) este unic in privinta posibilitatilor proiectantului cipului de a alege orice marime a cuvantului intre 16 si 24 de biti. In ceea ce priveste alegerea intre procesoarele cu virgula fixa si cele cu virgula mobila, exista adesea un compromis (trade-off) intre marimea cuvantului si cresterea complexitatii. O aplicatie care pare sa necesite date pe 24 biti pentru o performanta adecvata, poate fi uneori obtinuta cu un procesor pe 16 biti cu pretul folosirii unor algoritmi mai complecsi si/sau programare mai complexa. 3.3 Precizia extinsa Precizia extinsa inseamna folosirea reprezentarilor pentru date care asigura o precizie mai mare decat aceea oferita de formatul de date nativ procesorului. Precizia extinsa poate fi obtinuta in doua moduri. In primul rind, multe procesoare cu virgula fixa si cu virgula mobila asigura suport incorporat pentru un format cu precizie extinsa pentru operatii care au loc exclusiv in interiorul caii de date a procesorului (vezi cap.4 pentru o discutie asupra cailor datelor). Aceasta inseamna ca atata timp cat o serie de operatii aritmetice sunt realizate exclusiv in interiorul caii de date si nu implica transferul de date intermediare la si de la memorie, este posibila o marime a cuvantului mai mare decat marimea cuvantului nativ pentru date. Aceasta permite ca o serie de operatii aritmetice sa fie executate folosind precizie extinsa si/sau o gama dinamica mai mare, cu o operatie finala de rotunjire executata cand rezultatul este inmagazinat in memorie. In al doilea rind, este posibil de a obtine o precizie aritmetice extinsa prin construirea unor cuvinte mai mari din secvente de cuvinte de date native. De exemplu, cu un procesor in 7 virgula fixa pe 16 biti, un programator poate forma cuvinte pe 32 de biti prin legarea unor perechi de cuvinte pe 16 biti. Programatorul poate implementa operatii aritmetice cu precizie extinsa folosind o serie de instructiuni de adunare in precizie simpla. Desigur, deoarece fiecare operatie aritmetica in precizie extinsa necesita o secventa de instructiuni in precizie simpla, aritmetica cu precizie extinsa este mult mai lenta decat precizia simpla. Unele precesoare asigura suport pentru aritmetica in precizie extinsa. Aceasta include posibilitatea de a pastra bitul de transport (carry bit), rezultat de la o operatie de adunare de precizie simpla, pentru a fi folosit ca intrare intr-o adunare ulterioara, si posibilitatea de a considera operanzii multiplicarii ca fiind numere cu sau fara semn, sub controlul programului. Daca cea mai mare parte a unei aplicatii poate fi executata cu aritmetica in precizie simpla, dar este necesara o precizie mai mare pentru o mica sectiune a codului, atunci folosirea selectiva a aritmeticii de precizie extinsa are sens. Daca cea mai mare parte a aplicatiei necesita precizie ridicata, atunci un procesor cu o lungime nativa mai mare a datelor ar fi o alegere mai buna, daca este disponibil. 3.4 Emularea virgulei mobile si a virgulei mobile pe bloc Cand folosim un procesor cu virgula fixa, este posibil sa obtinem precizia si gama dinamica caracteristice aritmeticii de precizie extinsa prin folosirea unor rutine software care emuleaza comportamentul unui procesor cu virgula mobila. Unii producatori de procesoare furnizeaza o biblioteca de rutine de emulare a virgulei mobile pentru procesoarele lor cu virgula fixa. Daca o astfel de biblioteca nu este disponibila, rutinele de emulare trebuiesc scrise de utilizator. Rutinele de virgula mobila sunt in general foarte scumpe de executat in termenii numarului de tacte ale procesorului. Aceasta implica faptul ca emularea virgulei mobile este potrivita doar daca o parte foarte mica a calculelor aritmetice necesare unei aplicatii implica virgula mobila. Daca o parte semnificativa de aritmetica in virgula mobila este necesara, atunci un procesor cu virgula mobila este alegerea mai potrivita. O cale pentru a obtine o gama dinamica si o precizie crescuta pentru anumite date in implementarea cu procesor cu virgula fixa este o reprezentare cu virgula mobila pe bloc. Cu acest tip de reprezentare, un grup de numere cu mantise diferite dar un singur exponent, este tratat ca un bloc de date. In loc ca exponentul sa fie stocat ca o parte a fiecarui cuvant de date, asa cum se face in cazul virgulei mobile de uz general, exponentul comun este inmagazinat intr-un cuvant de data separat. De exemplu, pentru un bloc de opt valori de data au acelasi exponent mantisele pot fi stocate separat, iar exponentul comun ar fi stocat intr-un cuvant de data unic. In acest caz, stocarea intregului bloc de opt valori de data ar necesita noua locatii de memorie (opt pentru mantise si una pentru exponent). 8 Virgula mobila pe bloc este folosita pentru a mentine o gama dinamica si o precizie ridicata, specifica formatelor aritmetice de virgula mobila native ale procesorului. De exemplu, o rutina pentru un filtru care poate produce o serie de valori de date pe 32 de biti poate fi redusa de programator la o reprezentare cu virgula mobila pe bloc folosind mantise de 16 biti si un exponent de 4 biti pentru fiecare bloc de date. Din prezentarea anterioara asupra formatelor in virgula mobila a rezultat ca valoarea reprezentata printr-un numar in virgula mobila este calculata printr-o expresie de forma: valoare = mantisa x 2exponent Cu acest format, exponentul pentru un bloc de date este in general determinat de elementul datei din bloc cu cea mai mare magnitudine. Daca un anumit bloc de date este constituit in totalitate din valori mici, atunci aceste valori mici pot fi deplasate sapte pozitii la stanga, rezultind un exponent negativ relativ mare. Deplasarea la stanga muta bitii de ordin inferior in pozitii unde vor fi protajati cand largimea datei va fi redusa. Daca un bloc de date contine valori mari ale datei, valorile sunt deplasate la stanga doar cateva pozitii sau chiar nici una, si va rezulta un mic exponent negativ (sau chiar un exponent nul). Daca data nu poate fi deplasata, atunci precizia rezultata este aceeasi ca si cand ar fi fost folosit direct formatul nativ in virgula fixa. Conversia intre formatul nativ in virgula fixa al procesorului si formatul in virgula mobila pe bloc este executat de programator prin software. Unele procesoare au hardware specializat pentru conversia datelor in acest format. Cea mai cunoscuta este instructiunea de “detectie a exponentului”. Aceasta instructiune calculeaza deplasarea necesara pentru a converti un rezultat intermediar de precizie inalta (de exemplu, o valoarea dintr-un acumulator) in format virgula mobila pe bloc. Instructiunile specializate, suport pentru acest format, sunt discutate in capitolul 7. Procesoarele familiei TMS320C54 (TI) poseda doua instructiuni support pentru reprezentarea datelor in virgula mobila pe bloc: - instructiunea EXP pentru calculul exponentului unei date; - instructiunea NORM separa mantisa de exponent dupa ce a fost executata instructiunea EXP. 3.5 Standardul IEEE 754 pentru reprezentarea in virgula mobila In 1985, Institutul de inginerie electrica si electronica a lansat standardul IEEE-754 [IEE85], care defineste formatele standard pentru reprezenatarea datelor in virgula mobila si un set de reguli pentru aritmetica in virgula mobila. Regulile specifica de exemplu, algoritmii de rotunjire care ar trebui executati intr-un procesor in virgula mobila si modul in care procesorul 9 ar trebui sa manipuleze conditiile de exceptie aritmetica, precum impartirea la zero sau depasirea. Standardul specifica doua formate de baza pentru reprezentare: - Precizia simpla pe 32 de biti cu 24 de biti mantisa si 8 biti exponentul; - Precizia dubla pe 64 de biti cu 52 de biti mantisa si 12 biti exponentul Atit mantisa cit si exponentul sunt reprezentate ca numere cu semn. Cateva procesoare DSP comerciale asigura suport hardware partial pentru aritmetica si formatele pentru virgula mobila IEEE-754. Procesorul DSP96002 (Motorola) asigura suportul hardware pentru aritmetica in virgula mobila cu precizie simpla asa cum este specificat in IEEE-754. Procesoarele din familia ADSP-210xx (Analog Devices) asigura suport hardware aproape complet pentru aritmetica in virgula mobila cu precizie simpla asa cum se specifica in standard. Alte procesoare cu virgula mobila, cum ar fi DSP32xx (AT&T), nu respecta standardul IEEE-754, dar asigura hardware special pentru conversia rapida a numerelor intre reprezentarea in virgula mobila din interiorul procesorului si reprezentarea IEEE-754. Suportul hardware pentru conversia formatului poate fi important in aplicatii care cer un DSP care sa nu fie in conformitate cu IEEE-754 pentru a-l interfata cu alte procesoare care folosesc reprezentarea IEEE-754. Fara suport hardware de conversie, DSP-ul in virgula mobila neconform cu standardul, trebuie sa foloseasca rutine software pentru a converti intre diversele formate in virgula mobila, si acesta conversie software poate consuma ceva timp. De aceea, cei care dezvolta aplicatii care necesita un DSP care sa fie interfatat cu alte procesoare care folosesc reprezentarea IEEE-754 ar trebui sa evalueze cu grija eficienta conversiei software, sau sa aleaga un procesor cu capacitati hardware de conversie (sau unul care foloseste intern formatele IEEE in virgula mobila). 3.6 Relatia intre marimea cuvintelor pentru date si a celor pentru instructiuni In timp ce majoritatea procesoarelor DSP folosesc cuvinte pentru instructiuni de lungime egala cu cea a cuvintelor pentru date, exista si unele care nu fac acest lucru. De exemplu, familia ADSP-21xx (Analog Devices) si MDSP2780 (IBM) folosesc cuvinte de date pe 16 biti si cuvinte instructiune pe 24 biti. In mod similar, ZR3800x (Zoran) de 20 biti Zoran, foloseste cuvinte instructiune pe 32 biti. Procesoarele cu marimi diferite ale cuvintelor iau in general masuri de prevedere pentru a permite datelor sa fie stocate in memoria programului, de exemplu, folosirea a 16 biti dintr-o locatie de memorie a programului de 24 biti. Daca acest aranjament functioneaza, in schimb e clar ca nu este cel mai eficient mod de folosire a memoriei, deoarece o parte importanta din memoria pentru programe, folosita pentru a stoca date, este irosit, si aceasta poate avea impact asupra costului total al sistemului. 10 Curs 4 Calea de date Calea de date (data path, eng.) a unui procesor DSP este locul din structura unde au loc operatiile de prelucrare a datelor. La procesoarele DSP calea de date este foarte specializata pentru a atinge performante inalte la executia operatiilor cerute de algoritmii DSP, cum ar fi operatiile de transfer de date, de multiplicare si acumulare, scalare, s.a.. Facilitatile caii de date, impreuna cu arhitectura memoriei (analizata in capitolul 5), sunt caracteristicile care diferentiaza cel mai clar procesoarele DSP de alte tipuri de procesoare. Calea de date la procesoarele DSP in virgula mobila este semnificativ diferita de cea de la procesoarele DSP in virgula fixa datorita cerintelor diferite ale aritmeticilor folosite. Vom analiza mai intai structura caii de date pentru procesoarele cu virgula fixa si apoi pentru procesoarele cele cu virgula mobila. 4.1 Calea de date la procesoarele cu virgula fixa Calea de date la procesoarele DSP cu virgula fixa contine: multiplicator, ALU (unitate logica-aritmetica), unul sau mai multe registre pentru deplasatori (shifters), registre de lucru, acumulatoare, precum si alte unitati specializate. Unii producatori denumesc intreaga cale de date ALU sau unitate aritmetica. In continuare vom folosi termenul ALU pentru combinatia de unitati functionale sumator/scazator/partea logica a caii de date. Denumirea de “cale de date” este folosita pentru traseul complet de procesare, incluzind multiplicator, acumulatori, s.a.m.d.. Figura 4-1 prezinta calea de date pentru un procesorul cu aritmetica cu virgula fixa pe 24 de biti, DSP5600x (Motorola). In general, calea de date la procesoarele DSP nu este folosita si pentru efectuarea calculelor legate de adresarea memoriei. In schimb, procesoarele DSP cu virgula fixa poseda o unitate hardware separata pentru calculul adresei, denumita unitate de generare a adresei (address generation unit). Acest modul executa o varietate de calcule pentru adresare, cum ar fi adresarea modulo, adresarea cu inversarea bitilor, etc.. Gama larga de moduri de adresare specializate existente la procesoarele DSP reprezinta unul dintre factorii care deosebesc procesoarele DSP de alte procesoare, cum ar fi procesoarele de uz general. Unitatile de generare a adresei ale si modurile de adresare sunt discutate in detaliu in Capitolul 6. Vom analiza in continuare principalele unitati ale caii de date. 1 Fig. 4.1 Calea de date la procesorul cu virgula fixa pe 24 de biti DSP 5600x (Motorola) Multiplicatorul Multiplicarea este o operatie esentiala in toate aplicatiile DSP. In multe situatii, jumatate sau chiar mai multe operatii executate de procesor implica multiplicarea. Din acest motiv aproape toate procesoarele DSP contin un multiplicator hardware de tip paralel care poate inmulti doi operanzi de marime nativa intr-un singur ciclu instructiune. Exista insa diferente importante in ceea ce priveste modul de efectuare a operatiei de multiplicare intre diferite procesoare DSP. Cu toate ca procesoarele DSP sunt echipate cu un multiplicator care produce un nou rezultat la fiecare ciclu instructiune, pipeline-ul intern al multiplicatorului poate duce la o intarziere mai mare de un ciclu de la aplicarea operanzilor la intrarile multiplicatorului si pana cand este disponibil rezultatul. Aceasta intarziere este numita timp de latenta. Multiplicatoarele cu pipeline furnizeaza un rezultat la fiecare ciclu de tact doar atunci cand sunt executate siruri lungi de operatii de multiplicare. Daca sunt executate inmultiri izolate, urmate de alte operatii, rezultatele sunt disponibile dupa unul sau mai multe cicluri de tact. Un exemplu de procesor DSP cu multiplicator pipeline este nucleul DSP CD2450 (Clarkspur Design). 2 In unele cazuri (DSP5600x - Motorola) multiplicatorul este integrat cu un sumator formind o unitate multiplicator-acumulator. In alte cazuri (DSP16xx - AT&T) multiplicatorul este separat; iesirea este stocata intr-un registru de produs, si de acolo poate fi trimis la un sumator pentru adunare. Aceasta diferenta se observa in cresterea timpului de latenta a operatiei de multiplicare- acumulare. Daca multiplicarea si adunarea sunt separate, rezultatul operatiei de multiplicare- acumulare este in general intarziat cu un ciclu instructiune inainte de a putea fi folosit de instructiunea urmatoare. Alta diferenta intre multiplicatoarele procesoarelor DSP cu virgula fixa se refera la marimea produsului fata de marimea operanzilor. Intotdeauna cand inmultim doua numere in virgula fixa de marime n biti, sunt necesari 2 n biti pentru a reprezenta produsul rezultat fara a introduce o eroare. Aceasta proprietate este asa-numita legea de conservare a bitilor. Pentru a intelege de ce se intampla asa, sa consideram reprezentarea intregilor pe 8 biti, prezentata in figura 3-2 din capitolul 3. Acest format este capabil sa reprezinte numere intre –128 si +127. Daca inmultim doua numere pe 8 biti de amplitudine mare rezultatul devine prea mare pentru a fi reprezentat intr-un format pe 8 biti. De exemplu, 128 x 128 = 16.384; pentru a reprezenta acest rezultat, avem nevoie de un format de reprezentare de 16 biti. Prin urmare operatia de multiplicare efectuata de procesoarele DSP cu virgula fixa produc un rezultat de doua ori mai mare fata de marimea operanzilor de intrare. Daca pot fi reprezentati toti bitii rezultatului multiplicarea nu introduce erori de calcul. Totusi unele procesoare cu virgula fixa, din motive de viteza si economie, folosesc multiplicatoare care produc rezultate cu un numar de biti mai redus si astfel introduc erori in unele calcule. De exemplu, la procesorul Zilog - Z893xx (si la nucleul Clarkspur CD2400, pe care este bazat Z893xx), multiplicatorul accepta operanzi pe 16 biti, dar produce un rezultat pe 24 biti si nu unul pe 32 de biti cum ar fi necesar pentru functionarea cu precizie maxima. Desi este posibila folosirea rezultatului multiplicarii nemodificat la urmatorul pas de calcul, in general nu se procedeaza asa deoarece operatii ulterioare de multiplicare sau adunare ar produce rezultate si mai lungi. Totusi, in majoritatea cazurilor nu este necesar sa retinem rezultatul intreg al multiplicarii, deoarece exista adesea un punct dincolo de care cresterea gamei dinamice si a preciziei nu mai prezinta interes. De aceea, programatorul selecteaza un subset din bitii de la iesirea multiplicatorului care sunt folositi la urmatorul pas de calcul. Sau, daca un sir de produse urmeaza sa fie adunate, adunarea poate fi facuta pastrind toti bitii produselor, si reducind in final lungimea datei rezultate, inainte de a trece la urmatoarea etapa de calcul. Daca nu trebuie pastrati toti bitii rezultatului multiplicarii sau adunarii, programatorul trebuie sa selecteze partea rezultatului care sa fie retinuta. Aceasta selectie este facuta astfel incat virgula portiunii de rezultat selectata sa fie in aceeasi pozitie in care este virgula in formatul cu 3 virgula fixa folosit peste tot in program. In acest fel iesirea multiplicatorului poate fi tratata ca orice alt operand in decursul prelucrarii. Cand doua numere binare sunt inmultite, pozitia virgulei in rezultatul cu lungime completa depinde de pozitia virgulei operanzilor. Aceast lucru este ilustrat in Fig. 4.2 si 4.3. Daca este folosita aritmatica intreaga, iesirea nemodificata a multiplicatorului este de asemenea un intreg, si programatorul retine in general cei mai putin semnificativi biti ai rezultatului. In acest caz, marimea operanzilor trebuie constransa de operator astfel incat valoarea semnificativa a rezultatului multiplicarii sa ocupe jumatatea de ordin inferior a cuvintului care va fi selectat pentru urmatorul pas. Cand acest lucru este realizat, cei mai semnificativi n/2+1 biti din cei n biti ai rezultatului sunt egali cu valoarea bitului de semn (uneori sunt numiti biti de extensie a semnului). Astfel nu este pierduta nici o informatie cand cei n/2 biti de ordin superior sunt eliminati (pastrind un singur bit de semn in cuvantul final de la iesire). Daca este folosita aritmetica fractionara, rezultatul cu precizie completa al multiplicarii are de doua ori mai multi biti la dreapta virgulei decat operanzii multiplicarii, iar programatorul descarca in general jumatatea cea mai putin semnificativa a acestor biti, posibil prin rotunjire. Deosebirea dintre care parte a rezultatului multiplicarii este selectata pentru a fi folosita in urmatorul pas al calculelor constituie diferenta principala intre aritmetica intreaga si cea fractionara la procesoarele DSP cu virgula fixa. O optimizare obisnuita folosita la efectuarea multiplicarii in aritmetica cu virgula fixa consta in a interzice unuia din operanzi de a lua cea mai negativa valoare care poate fi reprezentata cu formatul numeric folosit (aceasta valoare este uneori numita NMAX). Daca acesta optimizare este facuta, marimea rezultatului nemodificat este redusa cu un bit. Cand doua numere binare pe n biti sunt inmultite, daca cel putin unul nu este cel mai negativ numar reprezentabil, largimea in biti a rezultatului este 2n-1 biti, in loc de 2n biti. Asa cum este aratat in figura 4-3, cand este folosita aritmetica fractionara, aceasta optimizare conduce la un cuvant de iesire care contine un singur bit de semn si nici un bit intreg la stanga virgulei. Aceasta permite programatorului sa selecteze un subset din rezultatul nemodificat care produce un cuvant la iesire cu acelasi format ca si operanzii de intrare. Fara acesta optimizare, ar exista un singur bit de semn plus un singur bit intreg la stanga virgulei in rezultatul nemodificat. Programatorul ar trebui atunci sa scaleze rezultatul nemodificat inainte sa selecteze un cuvant de iesire cu acelasi format cu operanzii de intrare. Procesorul poate efectua aceasta scalare fara instructiuni suplimentare, scalarea avand efectul de reducere a gamei dinamice a datelor. 4 Fig. 4.2 5 Adesea procesarele DSP cu virgula fixa poseda hardware specific care ajuta programatorul sa selecteze eficient subsetul de biti de la iesirea multiplicatorului. O caracteristica obisnuita consta in a considera registrul de la iesirea multiplicatorului (de lungime 2n biti) sau registrul acumulator, ca doi registri de n biti, adresabili independent. Aceasta permite programatorului sa selecteze direct cea mai semnificativa jumatate (pentru multiplicarea fractiilor) sau cea mai putin semnificativa jumatate (pentru multiplicarea intregilor) a cuvintului de la iesirea multiplicatorului sau din accumulator pentru a fi folosita la urmatorul pas de calcul. Alta particularitate obisnuita consta in executarea unei deplasari automate la stanga cu un bit dupa multiplicare. In cazul in care optimizarea largimii cuvintelor, discutata mai sus, este folosita pentru multiplicarea fractiilor, operatia de deplasare la stanga aliniaza iesirea multiplicatorului astfel incat subsetul dorit al rezultatului nemodificat sa se alinieza cu portiunea mai semnificativa a registrului rezultatului. Daca jumatatea mai semnificativa a registrului rezultatului este adresabila independent, atunci programatorul poate selecta bitii doriti din rezultatul nemodificat citind direct jumatatea semnificativa a acestui registru. Fara aceasta deplasare, programatorul ar trebui sa execute explicit o operatie de deplasare inainte de a citi portiunea dorita din rezultat. La unele procesoare, acesta deplasare la stanga poate fi activata sau dezactivata prin folosirea unui bit de mod, simplificind trecerea intre aritmetica fractionara si cea cu intreagi. Registrii acumulator Registrii acumulator retin rezultate partiale si finale ale operatiei de multiplicare-acumulare si ale altor operatii aritmetice. Majoritatea procesoarelor DSP poseda doi sau mai multi acumulatori. Cateva procesoare au insa un singur acumulator, ceea ce poate reprezenta o limitare pentru multe aplicatii. Cand este disponibil doar un acumulator, acesta devine deseori o “gituire” in arhitectura; deoarece acumulatorul este in general folosit pentru unul din operanzii sursa si ca operand destinatie pentru operatiile executate de ALU, continutul sau trebuie sa fie incarcat sau stocat frecvent intrucit ALU este folosit si pentru alte scopuri. Aceste transferuri limiteaza rata la care datele pot trece prin ALU. In mod ideal, pentru a pastra precizia de reprezentare, marimea registrilor acumulator ar trebui sa fie mai mare decat marimea cuvantului de la iesirea multiplicatorului cu cativa biti. Bitii suplimantari, numiti biti de garda, permit programatorului sa adune un numar de valori fara riscul aparitiei depasirii de scala in acumulator si fara sa fie necesara scalarea rezultatelor intremediare pentru a evita depasirea scalei (overflow). Un acumulator cu n biti de garda face posibila adunarea a pana la 2n valori fara sa apara depasirea scalei. Majoritatea procesoarelor furnizeaza fie patru, fie opt biti de garda. De exemplu, procesoarele DSP16xx (AT&T) asigura patru biti de garda (acumulatoarele au capacitatea de 36 biti, iar multiplicatorul lucreaza pe 32 biti), in timp ce ADSP- 6 21xx (Analog Devices) asigura opt biti de garda (acumulatoare pe 40 biti cu multiplicatoare pe 32 biti). Intr-un procesor fara biti de garda, datele de intrare sau rezultatele intermediare trebuie adesea sa fie scalate inainte sa fie adunate in acumulator, daca dorim sa eliminam posibilitatea aparitiei depasirii. In general aceasta implica scalarea rezultatului inmultirii prin deplasarea sa la dreapta cu cativa biti. Unele procesoare care nu poseda biti de garda in acumulator sunt capabile sa deplaseze valoarea registrului produsului inainte de a o aduna la acumulator fara ca aceasta sa implice cicluri instructiune suplimentare. De exemplu, TMS320C2x si TMS320C5x (Texas Instruments) permit deplasarea automata la dreapta cu sase biti a continutului registrului de produs. Asa cum este aratat in continuare o asemenea scalare duce la o pierdere a preciziei. Oricum, cu exceptia cazului in care marimea scalarii folosite este extrema sau numarul de produse acumulate este foarte mare, pierderea de precizie introdusa de operatia de scalare este mica. Un alt argument in favoarea deplasarii produsului la dreapta inaintea adunarii este faptul ca atunci cand este folosita aritmetica fractionara, deseori doar cea mai importanta jumatate a rezultatului adunarii este retinuta dupa o serie de operatii de multiplicare-adunare. In acest caz, pierderea preciziei valorilor intermediare datorata scalarii nu afecteaza rezultatul final. Aceasta se intampla deoarece erorea de cuantizare prezenta in rezultat din cauza scalarii este continuta in totalitate in jumatatea mai putin semnificativa a acumulatorului care este descarcata. Bitii de garda asigura o mai mare flexibilitate in evitarea depasirilor de scala decat scalarea produsului multiplicarii deoarece permit ca precizia maxima sa fie mentinuta in etapele intermediare ale calculului. Totusi, posibilitatea de scalare a rezultatului multiplicarii in lipsa bitilor de garda este suficienta pentru multe aplicatii. Cateva procesoare, cum ar fi TMS320C1x (Texas Instruments), sunt lipsite de ambele posibilitati. Aceasta impune ca iesirea multiplicatorului sa fie scalata pentru a evita depasirea, ceea ce poate duce la o reducare semnificativa a preciziei. Lipsa, atat a bitilor de garda, cat si a suportului pentru scalarea continutului registrului produs poate fi o limitare serioasa in multe situatii. ALU Unitatile logice aritmetice ale procesoarelor DSP executa operatiile logice si aritmetice de baza intr-un singur ciclu instructiune. Operatiile obisnuite includ adunarea, scaderea, incrementarea, negarea, si operatiile logice SI, SAU, NU. Unitatile ALU difera intre ele prin marimea cuvintelor folosite pentru operatii logice. Unele procesoare realizeaza operatii logice asupra operanzilor care au largimea completa a acumulatorului, in timp ce altele pot face operatii logice numai asupra cuvintelor de date de largime nativa. De exemplu, DSP16xx (AT&T) realizeaza operatii logice asupra tuturor bitilor acumulatorului pe 36 biti, in timp ce DSP5600x (Motorola), care are un acumulator pe 56 biti, realizeaza operatii logice doar asupra cuvintelor de date native pe 24 biti. 7 Daca ALU nu poate executa operatii logice simultan asupra datelor de lungimea acumulatorului, programatorii care au nevoie de aceasta facilitate trebuie sa execute operatiile logice in mai multe etape, ceea ce complica programarea si consuma suplimentar cicluri instructiune. Asa cum am mentionat, in unele procesoare ALU este folosita pentru a executa adunarea pentru operatia de multiplicare-acumulare. In alte procesoare, este executata in acest scop o adunare separata. Deplasatorul (shifter)