PROCESOARE DE SEMNAL IV A 2023-2024 PDF

Summary

Aceste note de curs cuprind informatii despre cursul Procesoare de Semnal pentru anul 2023-2024, include subiecte cum ar fi Introducere, Caracteristici ale procesoarelor PDS, Caracteristici ale sistemelor PDS, Folosirea procesoarelor PDS, si Problematica proiectării sistemelor PDS.

Full Transcript

PROCESOARE DE SEMNAL IV A 2023 - 2024 Cuprins Curs 1 - Procesoare digitale de semnal si sisteme PDS. Curs 2 - Procesoare DSP. Încapsulări. Alternative. Curs 3 - Reprezentarea numerelor. Aritmetici. Verificarea 1 Curs 4 - Calea de date Curs 5 - Arhitectura m...

PROCESOARE DE SEMNAL IV A 2023 - 2024 Cuprins Curs 1 - Procesoare digitale de semnal si sisteme PDS. Curs 2 - Procesoare DSP. Încapsulări. Alternative. Curs 3 - Reprezentarea numerelor. Aritmetici. Verificarea 1 Curs 4 - Calea de date Curs 5 - Arhitectura memoriei Curs 6 – Adresarea datelor Curs 7 – Setul de instrucțiuni Curs 8 – Mecanisme de control al funcționării Verificarea 2 Curs 9 – Funcționarea pipeline Curs 10 – Dispozitivele IO și perifericele Curs 11 – Facilități pentru depanare și gestionarea consumului 2 Curs 1 - Procesoare digitale de semnal si sisteme PDS. Cuprins 1.1. Introducere 1.2. Caracteristici ale procesoarelor PDS 1.3. Caracteristici ale sistemelor PDS 1.4. Folosirea procesoarelor PDS 1.5. Problematica proiectării sistemelor PDS 3 1.1. Introducere (1/2) 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. 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. 4 1.1. Introducere (2/2) In prezent aproape toate firmele care activeaza in domeniul microelectronicii produc si circuite VLSI pentru prelucrarea numerica a semnalelor. Cei mai importanti producatori de circuite PDS sunt: -Texas Instruments -AT&T -Motorola -NEC -Analog Devices 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. 5 1.2. Caracteristici ale procesoarelor PDS (1/6) 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:  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 6 1.2. Caracteristici ale procesoarelor PDS (2/6) Aceste cerinte specifice 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);  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.); 7 1.2. Caracteristici ale procesoarelor PDS (3/6) 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; 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; Se presupune ca circuitele PDS single-cip vor avea o arie de utilizare comparabila cu cea a procesoarelor conventionale. 8 1.2. Caracteristici ale procesoarelor PDS (4/6) 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) 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). - Programarea bazata pe meniuri. Exista 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 Din acest motiv se folosesc compilatoare pentru limbaje de nivel inalt si sisteme de operare specifice circuitelor PDS. 9 1.2. Caracteristici ale procesoarelor PDS (5/6) 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). 10 1.2. Caracteristici ale procesoarelor PDS (6/6) Procesoarele de semnal actuale permit realizarea unor sisteme de prelucrare flexibile, suficient de rapide si la un pret de cost competitiv. 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. 11 1.3. Caracteristici ale sistemelor PDS (1/5) Sistemele PDS au cateva caracteristici comune care se refera la: a) Algoritmii b) Rata de esantionare c) Tactul d) Reprezentarea numerelor 12 1.3. Caracteristici ale sistemelor PDS (2/5) a) Algoritmii Specifica operatiile aritmetice care trebuie efectuate dar nu arata si cum sunt implementate aceste operatii. 13 1.3. Caracteristici ale sistemelor PDS (3/5) b) Rata de esantionare Reprezinta viteza cu care esantioanele sunt achizitionate, prelucrate si generate. Impreuna cu complexitatea algoritmilor, rata de esantionare determina cerintele de viteza ale tehnologiei de implementare. 14 1.3. Caracteristici ale sistemelor PDS (4/5) c) Tactul Frecventa de tact corespunde uzual cu frecventa cu care sistemul executa operatiile elementare. Pentru produsele comerciale 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. 15 1.3. Caracteristici ale sistemelor PDS (5/5) d) Reprezentarea numerelor Operatiile aritmetice elementare de adunare si de inmultire sunt comune majoritatii algoritmilor PDS. 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 mobile: 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). 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). N = M x 2E 16 1.4. Folosirea procesoarelor PDS (1/1) Prelucrarea digitala in general, si procesoarele PDS in particular, sunt folosite intr-o gama larga de aplicatii, ce pot fi grupate in urmatoarele categorii: Sistemele dedicate ieftine Aplicatii de inalta performanta Aplicatii multimedia pe calculatoare PC 17 PROCESOARE DE SEMNAL IV A 2023 - 2024 Cuprins Curs 1 - Procesoare digitale de semnal si sisteme PDS. Curs 2 - Procesoare DSP. Încapsulări. Alternative. Curs 3 - Reprezentarea numerelor. Aritmetici. Verificarea 1 Curs 4 - Calea de date Curs 5 - Arhitectura memoriei Curs 6 – Adresarea datelor Curs 7 – Setul de instrucțiuni Curs 8 – Mecanisme de control al funcționării Verificarea 2 Curs 9 – Funcționarea pipeline Curs 10 – Dispozitivele IO și perifericele Curs 11 – Facilități pentru depanare și gestionarea consumului 2 Curs 2 - Procesoare DSP. Încapsulări. Alternative. Cuprins 2.1 Procesoare PDS 2.2 Variante constructive de procesoare PDS 2.3 Alternative pentru procesoarele PDS 3 2.1 Procesoare PDS (1/7) In prezent sunt disponibile pe piață câteva zeci de familii de procesoare PDS. In tabelul 2.1 sunt sintetizate câteva dintre cele mai reprezentative caracteristici ale unor familii uzuale de procesoare PDS. 4 2.1 Procesoare PDS (2/7) Multe procesoare PDS au unele caracteristici comune pentru a putea executa activități repetitive si cu un volum mare de calcule. Cele mai importante dintre aceste caracteristici sunt prezentate în tabelul de mai jos. Operatia rapida de multiplicare si acumulare Arhitectura multiacces a memoriei Moduri de adresare specializate Controlul specializat al functionarii Periferice si interfete I/O 5 2.1 Procesoare PDS (3/7) 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 includ 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. 6 2.1 Procesoare PDS (4/7) 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. 7 2.1 Procesoare PDS (5/7) 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, calculand 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 accesarea bufferelor de date. Unele procesoare permit modul de adresare cu inversarea bitilor, utilizata in calculul Transformatei Fourier Rapida - TFR. 8 2.1 Procesoare PDS (6/7) 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. 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. 9 2.1 Procesoare PDS (7/7) Periferice si interfete I/O Pentru a obtine un cost redus si performante I/O inalte multe procesoare PDS incorporeaza una 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). Interfetele 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) 10 2.2. Variante constructive de procesoare PDS (1/7) 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: Module multichip Cipuri multiprocesor Seturi de circuite Nuclee PDS Procesoare PDS personalizate Multiprocesoarele 11 2.2. Variante constructive de procesoare PDS (2/7) Module multichip 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 tehnologiilor de incapsulare in ultimii ani producatorii au inceput sa ofere si module multicip continand procesoare PDS. 12 2.2. Variante constructive de procesoare PDS (3/7) 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 multichip, cipurile multiprocesor asigura cresterea performantelor si reduc consumul fata de sistemele realizate cu componente separate. 13 2.2. Variante constructive de procesoare PDS (4/7) Seturi de circuite O alta varianta de impachetare a procesoarelor PDS este de a “împărți” 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 (vândut mai târziu si de firma Sharp Microelectronics). Aceasta divizare functionala este justificata atunci când 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. Se sporeste de asemenea flexibilitatea, permitind proiectantului de sistem sa combine circuitele individuale in configuratia adaptata cel mai bine aplicatiei. 14 2.2. Variante constructive de procesoare PDS (5/7) Nuclee PDS (1/2) O abordare interesanta pentru productia de masa este imperecherea intr-un sigur chip 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). Doua variante pentru o astfel de abordare sunt: un ASIC (application-specific integrated circuit ) avind la baza un nucleu PDS un procesor PDS realizat la cerere. 15 2.2. Variante constructive de procesoare PDS (5/7) Nuclee PDS (2/2) 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. 16 2.2. Variante constructive de procesoare PDS (6/7) 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). 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.). 17 2.2. Variante constructive de procesoare PDS (7/7) Multiprocesoarele Indiferent 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. Daca programabilitatea este importanta o solutie buna o pot reprezenta sistemele multiprocesor cu procesoare comerciale (aproape orice procesor comercial poate fi utilizat in configuratii multiprocessor) 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 arbitraj a magistralei, porturi multiple dedicate pentru comunicatii interprocesor) care simplifica proiectarea hardware si imbunatatesc performantele. 18 2.3. Alternative pentru procesoarele PDS (1/3) 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 decât procesoarele PDS pentru aplicatii PDS exista inca motive puternice pentru folosirea lor in aplicatii. In primul rind, pentru ca multe produse electronice 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. 19 2.3. Alternative pentru procesoarele PDS (2/3) 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. 20 2.3. Alternative pentru procesoarele PDS (3/3) Hardware personalizat Exista doua ratiuni importante pentru care hardware-ul dezvoltat la cererea clientului este uneori o alegere mai buna decit o implementare având la baza un procesor PDS: performantele si pretul de productie. Pentru produse de masa hardware-ul realizat la cerere este mai putin costisitor decât 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. 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. Una dintre abordarile comune pentru hardware-ul la cerere in aplicatiile PDS este de a proiecta placi de circuite imprimat care incorporeaza diverse componente. 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. Cu cât 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. 21 PROCESOARE DE SEMNAL IV A 2023 - 2024 Cuprins Curs 1 - Procesoare digitale de semnal si sisteme PDS. Curs 2 - Procesoare DSP. Încapsulări. Alternative. Curs 3 - Reprezentarea numerelor. Aritmetici. Verificarea 1 Curs 4 - Calea de date Curs 5 - Arhitectura memoriei Curs 6 – Adresarea datelor Curs 7 – Setul de instrucțiuni Curs 8 – Mecanisme de control al funcționării Verificarea 2 Curs 9 – Funcționarea pipeline Curs 10 – Dispozitivele IO și perifericele Curs 11 – Facilități pentru depanare și gestionarea consumului 2 Curs 3 - Reprezentarea numerelor. Aritmetici. Cuprins 3.1 Virgula fixa si virgula mobila 3.2 Largimea nativa a cuvintelor pentru date 3.3 Precizia extinsa 3.4 Emularea virgulei mobile si a virgulei mobile pe bloc 3.5 Standardul IEEE 754 pentru reprezentarea in virgula mobila 3.6 Relatia intre marimea cuvintelor pentru date si a celor pentru instructiuni 3 3.1 Virgula fixa si virgula mobila Primele procesoare DSP au folosit aritmetica in virgula fixa; procesoarele DSP cu virgula fixa inca sunt utilizate. 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, procesoarele DSP cu virgula fixa suporta atit aritmetica fractionara, cit si cea cu intregi. 5 3.1 Virgula fixa si virgula mobila Virgula fixa Aritmetica intreaga 6 3.1 Virgula fixa si virgula mobila Virgula fixa Aritmetica fractionara 7 3.1 Virgula fixa si virgula mobila 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 initial. 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 si in multe cazuri la o precizie mai buna. 8 3.1 Virgula fixa si virgula mobila Exemplu de conversie in virgula mobila a unui numar pozitiv cu Mantisa pe 10 biti si Exponent pozitiv pe 6 biti: 9 3.1 Virgula fixa si virgula mobila Exemplu de conversie in virgula mobila a unui numar pozitiv cu Mantisa pe 10 biti si Exponent negativ pe 6 biti: 10 3.1 Virgula fixa si virgula mobila Exemplu de conversie in virgula mobila a unui numar negativ cu Mantisa pe 10 biti si Exponent pozitiv pe 6 biti: 11 3.1 Virgula fixa si virgula mobila Exemplu de conversie in virgula mobila a unui numar negativ cu Mantisa pe 10 biti si Exponent negativ pe 6 biti: 12 3.1 Virgula fixa si virgula mobila Precizia (1/2) Definitia data preciziei este bazata pe ideea erorii de cuantizare. Eroarea de cuantizare este eroarea numerica introdusa atunci cand 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. Precizia maxima [in biti] = log2 (|valoarea maxima|/|eroarea maxima de cuantizare|) 13 3.1 Virgula fixa si virgula mobila Precizia (2/2) 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. 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. 14 3.1 Virgula fixa si virgula mobila Gama dinamica (1/2) Gama dinamica este definita ca raportul dintre cel mai mare si cel mai mic numar reprezentabil intr-un anumit format de date. De exemplu, consideram 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. 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. 15 3.1 Virgula fixa si virgula mobila Gama dinamica (2/2) 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. Procesoarele DSP cu virgula mobila sunt, in general, mai scumpe decit cele cu virgula fixa, dar mai usor de programat. 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. 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. Cea mai mare parte a aplicatiilor dedicate folosesc procesoare cu virgula fixa pentru ca prioritatea o reprezinta costul scazut. 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. 16 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. DSP-urile cu virgula mobila uzuale folosesc o lungime nativa de 32 biti. Pentru procesoarele cu virgula fixa lungimea poate fi de 16 sau 32 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. 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. 17 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. 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. 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. 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. 18 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. 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. 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. 19 3.5 Standardul IEEE 754 pentru reprezentarea in virgula mobila Institutul de inginerie electrica si electronica a lansat standardul IEEE-754 [IEE85], care defineste formatele standard pentru reprezentarea 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 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 (atat mantisa cat 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. Alte procesoare cu virgula mobila, 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. 20 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. 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. 21 PROCESOARE DE SEMNAL IV A 2023 - 2024 Cuprins Curs 1 - Procesoare digitale de semnal si sisteme PDS. Curs 2 - Procesoare DSP. Încapsulări. Alternative. Curs 3 - Reprezentarea numerelor. Aritmetici. Verificarea 1 Curs 4 - Calea de date Curs 5 - Arhitectura memoriei Curs 6 – Adresarea datelor Curs 7 – Setul de instrucțiuni Curs 8 – Mecanisme de control al funcționării Verificarea 2 Curs 9 – Funcționarea pipeline Curs 10 – Dispozitivele IO și perifericele Curs 11 – Facilități pentru depanare și gestionarea consumului 2 Curs 4 - Calea de date Cuprins 4.1 Calea de date la procesoarele cu virgulă fixă 4.2 Calea de date la procesoarele cu virgulă mobilă 3 Curs 4 - Calea de date Calea de date (data path) a unui procesor DSP este locul din structură unde au loc operațiile de prelucrare a datelor. La procesoarele DSP, calea de date este foarte specializată pentru a atinge performanțe înalte la execuția operațiilor cerute de algoritmii DSP, cum ar fi operațiile de transfer de date, de multiplicare și acumulare, scalare, ș.a. Facilitățile căii de date, împreună cu arhitectura memoriei (analizată în capitolul 5), sunt caracteristicile care diferențiază cel mai clar procesoarele DSP de alte tipuri de procesoare. Calea de date la procesoarele DSP în virgulă mobilă este semnificativ diferită de cea de la procesoarele DSP în virgulă fixă datorită cerințelor diferite ale aritmeticilor folosite. 4 4.1 Calea de date la procesoarele cu virgulă fixă Fig. 4.1 Calea de date la procesorul cu virgulă fixă pe 24 de biți DSP 5600x (Motorola) 5 4.1 Calea de date la procesoarele cu virgulă fixă Multiplicatorul Multiplicarea este o operație esențială în toate aplicațiile DSP. În multe situații, jumătate sau chiar mai multe operații executate de procesor implică multiplicarea. Din acest motiv aproape toate procesoarele DSP conțin un multiplicator hardware de tip paralel care poate înmulți doi operanzi de mărime nativă într-un singur ciclu instrucțiune. Cu toate că procesoarele DSP sunt echipate cu un multiplicator care produce un nou rezultat la fiecare ciclu instrucțiune, pipeline-ul intern al multiplicatorului poate duce la o întârziere mai mare de un ciclu de la aplicarea operanzilor la intrările multiplicatorului și până cand este disponibil rezultatul. Această întârziere este numită timp de latență. Operația de multiplicare efectuată de procesoarele DSP cu virgulă fixă produce un rezultat de două ori mai mare față de mărimea operanzilor de intrare. Programatorul selectează un subset din biții de la ieșirea multiplicatorului care sunt folosiți la următorul pas de calcul. Sau, dacă un șir de produse urmează să fie adunate, adunarea poate fi făcută păstrând toți biții produselor, și reducând în final lungimea datei rezultate, înainte de a trece la următoarea etapă de calcul. 6 4.1 Calea de date la procesoarele cu virgulă fixă Multiplicatorul Când două numere binare sunt înmulțite, poziția virgulei în rezultatul cu lungime completă depinde de poziția virgulei operanzilor. Dacă este folosită aritmetica întreagă, ieșirea nemodificată a multiplicatorului este de asemenea un întreg, și programatorul reține în general cei mai puțin semnificativi biți ai rezultatului. În acest caz, mărimea operanzilor trebuie constrânsă de operator astfel încât valoarea semnificativă a rezultatului multiplicării să ocupe jumătatea de ordin inferior a cuvântului care va fi selectat pentru următorul pas. 7 4.1 Calea de date la procesoarele cu virgulă fixă Multiplicatorul Dacă este folosită aritmetica fracționară, rezultatul cu precizie completă al multiplicării are de două ori mai multi biți la dreapta virgulei decât operanzii multiplicării, iar programatorul descarcă în general jumătatea cea mai puțin semnificativă a acestor biți, posibil prin rotunjire. Deosebirea dintre care parte a rezultatului multiplicării este selectată pentru a fi folosită în următorul pas al calculelor constituie diferența principală între aritmetica întreagă și cea fracționară la procesoarele DSP cu virgula fixă. 8 4.1 Calea de date la procesoarele cu virgulă fixă Regiștrii acumulator Regiștrii acumulator rețin rezultate parțiale și finale ale operației de multiplicare-acumulare și ale altor operații aritmetice. Majoritatea procesoarelor DSP posedă doi sau mai mulți acumulatori. În mod ideal, pentru a păstra precizia de reprezentare, mărimea regiștrilor acumulator trebuie să fie mai mare decât mărimea cuvântului de la ieșirea multiplicatorului cu câțiva biți. Biții suplimentari, numiți biți de gardă, permit programatorului să adune un număr de valori fără riscul apariției depășirii de scală în acumulator și fără să fie necesară scalarea rezultatelor intermediare pentru a evita depășirea scalei (overflow). Un acumulator cu n biți de gardă face posibilă adunarea a până la 2n valori fără să apară depășirea scalei. Într-un procesor fără biți de gardă, datele de intrare sau rezultatele intermediare trebuie adesea să fie scalate înainte să fie adunate în acumulator, dacă dorim să eliminăm posibilitatea apariției depășirii. În general, aceasta implică scalarea rezultatului înmulțirii prin deplasarea sa la dreapta cu câțiva biți. 9 4.1 Calea de date la procesoarele cu virgulă fixă UAL (ALU) Unitățile logice aritmetice ale procesoarelor DSP execută operațiile logice și aritmetice de bază într-un singur ciclu instrucțiune. Operațiile obișnuite includ adunarea, scăderea, incrementarea, și operațiile logice ȘI, SAU, NU. Unitățile UAL diferă între ele prin mărimea cuvintelor folosite pentru operații logice. Unele procesoare realizează operații logice asupra operanzilor care au lărgimea completă a acumulatorului, în timp ce altele pot face operații logice numai asupra cuvintelor de date de lărgime nativă. Dacă UAL nu poate executa operații logice simultan asupra datelor de lungimea acumulatorului, programatorii care au nevoie de această facilitate trebuie să execute operațiile logice în mai multe etape, ceea ce complică programarea și consumă suplimentar cicluri instrucțiune. În unele procesoare, UAL este folosită pentru a executa adunarea pentru operația de multiplicare- acumulare. În alte procesoare, este executată în acest scop o adunare separată. 10 4.1 Calea de date la procesoarele cu virgulă fixă Deplasatorul Multiplicarea și acumularea duc la creșterea numărului de biți al rezultatelor operațiilor aritmetice. În majoritatea cazurilor, programatorul va alege un set particular de biți ai rezultatului pe care să-l folosească la următoarea etapă de calcul. Un deplasator (shifter) pe calea de date ușurează această selecție scalând (multiplicând) ieșirea cu o dată care este putere a lui doi. Scalarea este o operație importantă în aplicații DSP implementate cu aritmetica cu virgulă fixă, deoarece multe operații produc expandarea sau contractarea gamei valorilor semnalelor pe care le procesează. Se observă că scalarea este complementară folosirii biților de gardă ai acumulatorului deoarece ambele tehnici sunt folosite pentru a elimina sau reduce posibilitatea de apariție a depășirii scalei. În timp ce scalarea reduce gama rezultatelor intermediare sau finale la domeniul valorilor reprezentabile, biții de gardă asigură o reprezentare intermediară care are o gamă dinamică mai largă. Adesea este prevăzut un registru de deplasare (shifter) imediat după multiplicator și UAL. Unele procesoare posedă un deplasator între multiplicator și UAL care permite scalarea produsului. Există procesoare DSP care posedă mai multe shiftere plasate în diferite locuri ale căii datelor. 11 4.1 Calea de date la procesoarele cu virgulă fixă Depășirea și saturația Multe aplicații DSP implică acumularea (adunarea unui șir de date). Aceasta se întâmplă, de exemplu, în algoritmii de filtrare, unde elementele unui șir de date sunt multiplicate cu coeficienți, iar produsele parțiale sunt adunate. Când un șir de numere este adunat, numărul de biți ai sumei poate crește. Ca urmare, suma poate depăși valoarea maximă care poate fi reprezentată în registrul acumulator. În această situație, numită depășire de scală (overflow), este înmagazinată o valoare incorectă. Când apare depășirea, data existentă în acumulator poate fi foarte îndepărtată de valoarea corectă. Chiar dacă registrul acumulator nu intră în depășire, efectul poate apărea când valorile acumulate sunt transferate memoriei, dacă acumulatorul are biți de gardă. Dacă sunt folosiți biți de gardă, acumulatorul poate reprezenta numere mai lungi decât poate stoca o locație de memorie. Există două modalități obișnuite de tratare a depășirii. Prima tehnică este aceea de a scala cu grijă toate rezultatele calculelor, eliminând astfel posibilitatea de apariție a depășirii, indiferent de mărimea datelor de la intrare. O alternativă este folosirea aritmeticii cu saturare (saturation arithmetic). În această aritmetică, un circuit special detectează apariția depășirii scalei și înlocuiește valoarea eronată de la ieșire cu cel mai mare număr pozitiv care poate fi reprezentat (în cazul depășirii în direcție pozitivă) sau cu cel mai mic număr negativ care poate fi reprezentat (în cazul depășirii în direcție negativă). 12 4.1 Calea de date la procesoarele cu virgulă fixă Trunchierea si rotunjirea Trunchierea: descărcarea unui număr din cei mai puțin semnificativi biți ai reprezentării (de exemplu, pentru a trunchia o valoare pe 36 biți la 16 biți, cei mai puțin semnificativi 20 de biți sunt descărcați, păstrând numai cei mai semnificativi 16 biți). Când datele sunt semnale, trunchierea introduce un deplasament (bias sau offset) sau o componentă continuă. Tehnicile de rotunjire reduc eroarea aritmetică și bias-ul introdus de această reducere a preciziei. Cea mai simplă modalitate de rotunjire este cea așa-numită tehnică de rotunjire la valoarea cea mai apropiată: numerele sunt rotunjite la cea mai apropiată valoare reprezentabilă în formatul de ieșire (cu precizie redusă); numerele care se află exact la mijlocul distanței dintre două valori de ieșire consecutive sunt întotdeauna rotunjite la valoarea mai mare (pozitivă). O schemă îmbunătățită de rotunjire, care reduce bias-ul și care apare la tehnica de rotujire descrisă anterior, este “rotunjirea convergentă”: când un număr care urmează să fie rotunjit este situat exact la mijlocul dintre două valori de ieșire consecutive, poate fi rotunjit la o valoare mai mare sau mai mică. Direcția rotunjirii depinde de valoarea bitului aflat în poziția care va deveni cel mai puțin semnificativ bit (LSB) al cuvântului de la ieșire. Dacă acest bit este 0, atunci numărul este rotunjit în jos (în direcția negativă), dacă acest bit este 1, numărul este rotunjit în sus. 13 4.1 Calea de date la procesoarele cu virgulă fixă Operanzii și regiștrii operand În majoritatea procesoarelor DSP cu virgulă fixă, operanzii de pe calea de date sunt obținuți de la un mic număr de regiștri operand sau de la acumulator. Înainte de a fi prelucrate datele trebuie să fie transferate din memorie în regiștrii operand folosind instrucțiuni “move”. Celelalte instrucțiuni nu pot adresa direct operanzi din memorie. Un procesor care prelucrează datele numai din regiștrii operand este considerat ca având o arhitectură “load-store” (încarcă-stochează). Regiștrii pentru operanzi sunt accesați folosind modul de adresare directă la registru (register-direct). 14 4.2 Calea de date la procesoarele cu virgulă mobilă Multiplicatorul UAL (ALU) Overflow, underflow și alte excepții Rotunjirea Regiștrii accumulator Deplasatorul Operanzii și regiștrii operand 15 4.2 Calea de date la procesoarele cu virgulă mobilă Multiplicatorul Multiplicatoarele DSP cu virgulă mobilă acceptă doi operanzi cu virgulă mobilă de mărime nativă (de obicei 32 biți). Spre deosebire de multiplicatoarele procesoarelor DSP cu virgulă fixă, multiplicatoarele pentru operații în virgulă mobilă nu produc la ieșire un cuvânt suficient de mare pentru a evita pierderea preciziei. De exemplu, când sunt înmulțite două date în virgulă mobilă cu precizie simplă, fiecare dată de intrare are lărgimea efectivă a mantisei de 24 biți. Pentru a menține întreaga precizie, data de ieșire ar necesita o mantisă de lărgime efectivă de 48 biți. Majoritatea DSP-urilor cu virgulă mobilă nu admit cuvinte de această lungime. Totuși formatul datelor de ieșire la multiplicatoarele în virgulă mobilă este în general ceva mai lung decât formatul de la intrare, asigurând 8 sau 12 biți în plus pentru reprezentarea mantisei. 16 4.2 Calea de date la procesoarele cu virgulă mobilă UAL (ALU) UAL a procesorului DSP cu virgulă mobilă execută operații simple: adunări, scăderi, și alte operații aritmetice cum ar fi calculul valoarii absolute, negări, calculul valorii minime sau/și a valorii maxime. Procesoarele cu virgulă mobilă folosesc UAL pentru a executa adunarea în operațiile de multiplicare-acumulare. În plus față de operația de multiplicare-acumulare, unele procesoare execută o operație de multiplicare-adunare. Operația de multiplicare-adunare este diferită de cea de multiplicare-acumulare prin faptul că rezultatul este scris într-un acumulator diferit de cel care furnizează data care este adunată cu produsul. Operațiile logice pe bit cum ar fi operațiile logice ȘI, SAU, NEGARE nu sunt semnificative când sunt aplicate datelor cu virgulă mobilă și în general nu sunt executate de către UAL destinat numai operațiilor în virgulă mobilă (floating-point-only ALU). 17 4.2 Calea de date la procesoarele cu virgulă mobilă Overflow, underflow și alte excepții La aritmetica în virgulă mobilă, depășirea de scală (overflow) și alte situații asemănătoare sunt numite excepții. Excepțiile sunt situații neobișnuite care pot cauza rezultate aritmetice eronate. Procesorul semnalizează apariția unei excepții setând un bit într-un registru de stare sau generând o întrerupere (situație opțională la unele procesoare) care antrenează execuția unei rutine de prelucrare a excepției, furnizată de programator. Depășirea este o situație mai puțin gravă la procesoarele DSP cu virgulă mobilă decât pentru cele cu virgulă fixă datorită gamei dinamice mai mari asigurată de formatele cu virgule. Majoritatea procesoarelor DSP cu virgulă mobilă înregistrează apariția depășirii setând un bit de stare și limitând automat rezultatul operației care a cauzat depășirea (setându-l la cea mai pozitivă sau la cea mai negativă valoare reprezentabilă la ieșire). Altă situație excepțională întâlnită la proceosarele cu virgulă mobilă este cea de “underflow”: apare când rezultatul unei operații aritmetice este prea mic pentru a fi reprezentat. Aceasta se întâmplă, de exemplu, când înmulțim două numere subunitare mici. În acest caz, acțiunea obișnuită pentru mai multe procesoare este setarea rezultatului la zero, iar pentru a indica apariția underflow-lui este setat un bit într-un registru de stare. Și alte situații excepționale sunt de asemenea semnalate; de exemplu, împărțirea la zero cauzează o excepție pentru procesoarele care execută operația “reciprocal seed”. 18 4.2 Calea de date la procesoarele cu virgulă mobilă Rotunjirea Ca și la aritmetica cu virgulă fixă, multiplicarea, adunarea și alte operații aritmetice cu virgulă mobilă tind să crească numărul de biți al rezultatelor. Majoritatea procesoarelor DSP cu virgulă mobilă rezolvă problema creșterii preciziei rotunjind automat rezultatele aritmetice la un format intermediar de 40÷44 biți. Acest format intermediar este folosit pentru calcule care au loc în interiorul căii datelor. Când datele sunt transferate în memorie, ele pot fi scrise fie ca valori de precizie extinsă (ceea ce necesită mai multe locații de memorie și mai multe operații “move” de la registru la memorie), fie pot fi rotunjite la formatul nativ de precizie redusă, în general 32 de biți. Ca și procesoarele cu virgulă fixă, majoritatea procesoarelor cu virgulă mobilă asigură cel mai simplu mod de rotunjire, rotunjirea la nivelul cel mai apropiat. Unele procesoare oferă două sau mai multe opțiuni pentru rotunjirea datelor cu virgulă mobilă. Exista procesoare care asigură toate modurile de rotunjire specificate de standardul IEEE 754 pentru valorile de precizie simplă: rotunjirea convergentă, rotunjirea către plus infinit, rotunjirea către zero și rotunjirea către minus infinit. 19 4.2 Calea de date la procesoarele cu virgulă mobilă Regiștrii acumulator În general, procesoarele cu virgulă mobilă au regiștri mai mulți și de capacitate mai mare decât cele cu virgulă fixă. În unele procesoare cu virgulă mobilă un mic număr de regiștri sunt special proiectați pentru a fi folosiți ca acumulatori. Alte procesoare oferă o serie de regiștri de uz general, un subset al celor ce pot primi rezultatele operației de multiplicare-acumulare sau ale altor operații aritmetice. 20 4.2 Calea de date la procesoarele cu virgulă mobilă Deplasatorul Ca și în cazul aritmeticii cu virgulă fixă, o operație de multiplicare-acumulare cu virgulă mobilă poate să ducă la creșterea numărului de biți a rezultatului. La aritmetica cu virgulă mobilă hardware-ul scalează automat rezultatele pentru a conserva maximul de precizie posibil. Acesta este principalul avantaj al aritmeticii în virgulă mobilă. Calea de date încorporează un deplasator pentru a executa scalarea, dar deplasatorul fie nu este vizibil, fie nu este explicit controlabil de către programator la operațiile în virgulă mobilă. La procesoarele cu o singură cale a datelor care execută atât operațiile în virgulă mobilă cât și pe cele în virgulă fixă, deplasatorul poate fi explicit controlat de programator pentru deplasarea datelor reprezentate în virgulă fixă. 21 4.2 Calea de date la procesoarele cu virgulă mobilă Operanzii și regiștrii operand Majoritatea procesoarelor cu virgulă mobilă folosesc operanzi pentru căile de date provenind de la regiștri operand sau de la acumulatoare. Pentru aceste date este folosită adresarea directă la registru. Datele sunt încărcate din memorie în regiștrii operand cu instrucțiuni explicite “move”. (Unele procesoare pot executa aceste instrucțiuni “move” în paralel cu instrucțiuni aritmetice). Câteva procesoare transferă operanzi pe calea de date direct din memorie folosind adresarea indirectă cu registru. 22 PROCESOARE DE SEMNAL IV A 2023 - 2024 Cuprins Curs 1 - Procesoare digitale de semnal si sisteme PDS. Curs 2 - Procesoare DSP. Încapsulări. Alternative. Curs 3 - Reprezentarea numerelor. Aritmetici. Verificarea 1 Curs 4 - Calea de date Curs 5 - Arhitectura memoriei Curs 6 – Adresarea datelor Curs 7 – Setul de instrucțiuni Curs 8 – Mecanisme de control al funcționării Verificarea 2 Curs 9 – Funcționarea pipeline Curs 10 – Dispozitivele IO și perifericele Curs 11 – Facilități pentru depanare și gestionarea consumului 2 Curs 5 - Arhitectura memoriei Cuprins 5.1 Organizarea memoriei 5.2 Metode de reducere a numărului de accesări ale memoriei 5.3 Stările de așteptare 5.4 Memoria ROM 5.5 Interfețele cu memoria externă 3 Curs 5 - Arhitectura memoriei Căile de date ale PDS sunt optimizate pentru a oferi performanțe ridicate la implementarea algoritmilor de prelucrare a semnalelor. Pentru a menține fluxul de date și pentru a memora rezultatul operațiilor efectuate este necesar ca procesoarele de semnal să transfere cantități mari de date în și din memorie. În consecință, alți factori importanți în stabilirea performanțelor procesorului sunt organizarea memoriei și modul de interconectare a acesteia cu calea de procesare a datelor. Aceste caracteristici sunt reunite sub numele de arhitectura memoriei procesorului. 4 Curs 5 - Arhitectura memoriei Datorită arhitecturii căii de date procesoarele de semnal execută operația complexă de multiplicare și adunare de regulă într-un singur ciclu de tact. Pentru fiecare instrucțiune de multiplicare-adunare procesorul trebuie să execute patru accesări ale memoriei într-un ciclu de tact. 5 5.1 Organizarea memoriei Arhitectura von Neumann Cea mai simplă structură de memorie este cea formată dintr-un singur bloc pe care procesorul îl accesează printr-un singur set de magistrale de adrese și date. Această memorie conține atât instrucțiunile programului cât și datele. 6 5.1 Organizarea memoriei Arhitectura Harvard Reprezintă o structură în care procesorul este conectat la două blocuri independente de memorie prin două magistrale separate: un bloc de memorie conține instrucțiunile programului, iar celălalt conține datele. În cazul PDS se folosește o variantă modificată a arhitecturii Harvard în sensul că un bloc de memorie conține instrucțiunile programului cât și date, iar celălalt conține numai date. 7 5.1 Organizarea memoriei Memoriile cu acces multiplu Alte soluții care permit mai multe accesări ale memoriei într-un ciclu-mașină: - folosirea de memorii rapide care permit mai multe accesări secvențiale pe ciclu-mașină, printr-un singur set de magistrale (bus); - utilizarea de memorii multiport care permit mai multe accesări concurente ale memoriei prin două sau mai multe seturi de magistrale (bus). 8 5.1 Organizarea memoriei Operații specializate de scriere în memorie Unele procesoare de semnal oferă mecanisme specializate care permit ca scrierea în memoria de date să fie executată în paralel cu o citire din aceasta și cu o citire din memoria de program. Aceste procesoare au instrucțiuni speciale care permit executarea de scrieri în paralel cu operațiile de citire, dar cu anumite circumstanțe restrictive. Operațiile de scriere pot fi folosite pentru deplasarea datelor în lungul liniei de întârziere pentru implementarea filtrului RFI din exemplul anterior. 9 5.2 Metode de reducere a numărului de accesări ale memoriei Memoria cache pentru program Este o memorie de capacitate mică în interiorul procesorului, folosită pentru memorarea instrucțiunilor, eliminând astfel necesitatea accesării blocului de memorie de program de câte ori este executată o instrucțiune. Prin eliminarea ciclilor de acces la memorie pentru citirea instrucțiunii se pot efectua accesări ale memoriei pentru citirea sau scrierea datelor și astfel se poate reduce timpul de execuție al instrucțiunii prin eliminarea întârzierilor asociate memoriei de program externe. Memoria cache a procesoarelor digitale de semnal variază mult prin capacitate și mod de operare. Ea este în general mai mică și mai simplă decât memoria cache internă folosită de procesoarele de uz general. 10 5.2 Metode de reducere a numărului de accesări ale memoriei Adresarea modulo n Adresarea modulo n permite implementarea unei linii de întârziere, ca cea folosită de filtrele RFI, fără ca datele să fie mutate efectiv în memorie. Datele rămân scrise în aceeași locație de memorie atâta timp cât este nevoie de ele. Efectul deplasării datelor de-a lungul liniei de întârziere este simulat prin modificarea pointerilor de accesare a zonei de date folosind aritmetica modulo n. În cazul implementării filtrului RFI acestă tehnică reduce numărul de accesări a memoriei de la patru accesări pe un ciclu-mașină la doar trei. 11 5.3 Stările de așteptare Stările de așteptare (Wait States) sunt stări în care procesorul nu poate continua execuția programului deoarece așteaptă finalizarea unei activități începute. Stările de așteptare pot avea următoarele cauze: apariția unor conflicte la accesarea resurselor, folosirea unor memorii lente, împărțirea magistralei (bus-ului) cu alte dispozitive. Stările de așteptare datorate conflictelor sunt necesare când procesorul încearcă să realizeze mai multe accesări simultane ale unei memorii care nu suportă acces multiplu. Unele procesoare de semnal conțin unul sau mai multe blocuri mici de memorie RAM și/sau ROM care permit unul sau mai multe accesări pe ciclu-mașină. Uneori este necesar să se extindă aceste resurse, utilizând memorie externă, care însă este prea lentă pentru a se putea obține mai multe accesări într-un ciclu-mașină. În aceste cazuri, procesorul trebuie să introducă stări de așteptare programate în timpul accesului la memoria externă. 12 5.4 Memoria ROM Procesoarele de semnal destinate pentru aplicații ieftine, ca electronica de uz general și echipamentele de telecomunicații, au o memorie ROM internă pentru programe și constante. Unii producători oferă versiuni diferite de procesoare: o versiune cu memorie RAM internă pentru prototipuri și producție de volum scăzut și o versiune cu memorie ROM programabilă la fabricarea circuitului, pentru producție de volum mare. Pentru aplicații care cer mai multă memorie ROM decât cea prevăzută pe chip, poate fi conectată o extensie de memorie ROM cu ajutorul interfeței cu memoria externă. În mod normal, sunt folosite mai multe chipuri de memorie ROM pentru a crea un bloc de memorie a cărui lățime corespunde cu cea a unei instrucțiuni a procesorului. 13 5.5 Interfețele cu memoria externă Interfețele cu memoria externă ale procesoarelor de semnal diferă prin trei caracteristici principale: numărul de porturi de memorie, flexibilitatea & complexitatea interfeței și constrângerile privitoare la timpii de acces. Cele mai multe procesoare de semnal oferă un singur port extern pentru memorie, care constă dintr-o magistrală de adrese, una de date si un set de semnale de control, chiar dacă majoritatea procesoarelor de semnal au mai multe blocuri de memorie independente pe chip. Există și procesoare care au mai multe porturi de memorie în afara chip-ului. Interfețele cu memoria în cazul procesoarelor de semnal diferă prin complexitate și prin flexibilitate. Unele sunt relativ simple și directe, cu numai câțiva pini de control. Altele sunt mult mai complexe, oferind posibilitatea de interconectare cu o diversitate mare de dispozitive și bus-uri de memorie fără hardware suplimentar. Aplicațiile cu performanțe ridicate folosesc de multe ori memorii externe SRAM rapide. În aceste situații este important pentru inginerul de sistem să consulte timpii de acces pentru porturile de memorie externă. 14 5.5 Interfețele cu memoria externă Posibilitatea de a lucra cu memorie cache manual Chiar dacă procesorul nu conține o zonă de memorie cache specializată, este posibil pentru programatori să mărească performanța prin copierea unei secțiuni de cod din memoria lentă sau mai folosită (în termeni de acces) într-o memorie mai rapidă sau mai puțin accesată. De exemplu, dacă o secțiune de cod foarte folosită este stocată într-o memorie externă ROM lentă, atunci se poate copia acea regiune în memoria RAM internă, fie la pornirea procesorului, fie la prima accesare a acelei zone de program. 15 5.5 Interfețele cu memoria externă Suportul pentru interfețele cu memoria externă Procesoarele de semnal proiectate pentru folosirea lor în sisteme multiprocesor oferă de obicei caracteristici speciale pentru interfețele lor cu memoria externă pentru a simplifica proiectarea și pentru a mări performanțele acestor sisteme. Prima și cea mai evidentă dintre aceste caracteristici constă în existența a două porturi pentru memoria externă. Unul dintre porturi poate fi conectat la o memorie locală, utilizată doar de acest procesor, în timp ce al doilea este conectat la o memorie partajată cu alte procesoare. Când un sistem multiprocesor conține două sau mai multe procesoare care folosesc în comun o singură magistrală externă pentru memorie, trebuie prevăzut un mecanism care să permită procesoarelor să negocieze controlul magistralei (mecanism de arbitrare a magistralei) și să împiedice procesoarele care nu dețin controlul magistralei să transfere date pe aceasta. 16 5.5 Interfețele cu memoria externă Memoria dinamică Memoria statică (SRAM) este mai ușor de folosit și mai rapidă decât memoria dinamică (DRAM), dar necesită o suprafață mai mare pentru integrarea pe chip, și este mai scumpă decât alte tipuri de memorie, pentru aceeași capacitate de stocare. Deosebirea principală dintre cele două tipuri de memorie este accea că memoria statică reține datele atât timp cât este alimentată, în timp ce memoria dinamică trebuie să fie periodic reîmprospătată. În plus, interfețele cu memoria statică sunt mai simple decât cele cu memoria dinamică; folosirea memoriilor dinamice presupune de regulă folosirea unui controller de DRAM separat care generează semnalele de control. 17 5.5 Interfețele cu memoria externă Accesul direct la memorie (Direct Memory Access) Aceasta este o tehnică cu ajutorul căreia datele pot fi transferate în și din memoria internă a procesorului de semnal fără intervenția acestuia. Cererea de acces direct la memorie (DMA = Direct Memory Access) constituie un tip aparte de întrerupere, fiind o tehnică pur hardware care nu presupune nici un fel de pregătiri în programele microcalculatorului/procesorului DSP. DMA este folosit pentru a oferi performanțe mai bune pentru dispozitivele I/O. În loc să fie folosit procesorul pentru a citi datele de la un dispozitiv I/O și a le transfera în memoria internă sau invers este folosit un controler separat numit controler DMA și care poate face acest lucru mai eficient. Acest controler DMA poate fi un dispozitiv periferic pe același chip cu procesorul sau poate fi un dispozitiv extern acestuia. Multe din procesoarele de semnal actuale includ unul sau mai multe controlere DMA integrate care pot accesa atât memoria internă, cât și pe cea externă. Aceste controlere diferă prin performanțe și flexibilitate. 18 The memory architecture for DSPs is: a) Harvard architecture b) a single memory area for both data and instructions c) split in separate memory blocks for data and instructions d) Von Neumann architecture

Use Quizgecko on...
Browser
Browser