Sunteți pe pagina 1din 111

Capitolul 7

Setul de instructiuni

Setul de instructiuni al unui procesor este un factor cheie care determina nu numai ce
operatii sunt posibile, dar si ce operatii sunt naturale si eficiente. Instructiunile controleaza modul in
care datele circula pe calea de date a procesorului, modul in care sunt citite si scrise in memorie, si
asa mai departe. De aici rezulta ca setul de instructiuni al unui procesor are o influenta determinanta
asupra sarcinilor la care un procesor este potrivit.
In acest capitol sunt trecute in revista diverse aspecte ale setului de instructiuni. Vom vedea
diferite tipuri de instructiuni (si, in stransa relatie, tipurile de registre) intalnite la procesoarele DSP
si vom analiza suportul setului de instructiuni pentru deplasarea datelor in paralel cu operatiile
aritmetice si de multiplicare. Vom analiza ortogonalitatea setului de instructiuni si usurinta in
programare si vom incheia prin examinarea executiei conditionate si a instructiunilor cu functii
speciale.

7.1 Tipuri de instructiuni


In paragrafele urmatoare sunt prezentate tipurile de instructiuni (pentru transferul datelor,
aritmetice, logice, de salt, etc.) existente pe circuitele programabile DSP. Este de retinut ca un
procesor cu un set de instructiuni mai bogat nu inseamna neaparat un procesor mai capabil. Intr-
adevar, instructiunile specializate pot fi si un dezavantaj, deoarece necesita o suprafata de siliciu
mai mare si pot sa nu fie folosite in aplicatia dorita. Aceasta sectiune va evidentia si ce tipuri de
instructiuni sunt utile intr-o anumita aplicatie.

 Instructiuni aritmetice
Dupa cum a fost evidentiat anterior, instructiunile de adunare, multiplicare si multiplicare cu
acumulare sunt operatii absolut necesare in aplicatii DSP. Majoritatea procesoarelor pun la
dispozitie un set bogat de instructiuni aritmetice (adunare, scadere, incrementare, decrementare,
negare, rotunjire, valoare absoluta) si multiplicare. Cu exceptia procesoarelor Texas Instruments -
TMS320C1x, toate procesoarele moderne implementeaza instructiuni de multiplicare cu acumulare.
De obicei aceste instructiuni se executa intr-un singur ciclu de instructiune.
Unele procesoare (cum ar fi PineDSPCore si OakDSPCore - DSP Group sau TMS320C5x -
Texas Instruments) ofera instructiuni de ridicare la patrat. Instructiunile de multiplicare de pe aceste
procesoare utilizeaza de obicei date din memorie adresate indirect drept operanzi. Alte procesoare
care utilizeaza registre pentru operatia de multiplicare nu necesita instructiuni speciale pentru
ridicarea la patrat. De exemplu la DSP5600x (Motorola) operatia de ridicare la patrat se
implementeaza printr-o instructiune „MPY X0,X0,A”.
1
Unele procesoare au instructiuni pentru aritmetica cu precizie extinsa. De exemplu,
instructiuni de inmultire a valorilor cu semn si fara semn sunt disponibile la D950-CORE (SGS-
Thomson), TMS320C54x (TI) si ZR3800x (Zoran). Multe procesoare executa adunarea cu transport
si scaderea cu imprumut, ambele fiind extrem de importante pentru aritmetica cu precizie extinsa.

 Operatii logice
Majoritatea procesoarelor DSP ofera instructiuni pentru efectuarea operatiilor logice,
incluzand operatiile logice SI, SAU, SAU-EXCUSIV si NEGARE. Acestea sunt utile in corectii de
erori si in aplicatiile cu procesare a deciziilor care sunt din ce in ce mai intalnite la DSP-uri. De
remarcat faptul ca procesoarele pot avea si instuctiuni de manipulare a bitilor (sau a campurilor de
biti), care vor fi discutate in continuare.

 Deplasari
Operatiile de deplasare sunt de doua categorii: aritmetice si logice. O deplasare logica spre
stanga cu un bit insereaza un zero in pozitia celui mai putin semnificativ bit, in timp ce o deplasare
logica spre dreapta cu un bit insereaza un zero in pozitia celui mai semnificativ bit. Pe de alta parte,
o deplasare aritmetica la dreapta copiaza bitul de semn (un unu sau un zero, in functie de semnul
numarului) in cel mai semnificativ bit. Chiar daca se utilizeaza termenul „deplasare aritmetica spre
stanga”, deplasarile la stanga aritmetice si logice sunt identice: ambele deplaseaza cuvantul la
stanga si insereaza un zero in pozitia celui mai putin semnificativ bit.
Deplasarile aritmetice ofera o modalitate de a scala datele fara a utiliza instructiunea de
multiplicare a procesorului. Scalarea este deosebit de utila pentru procesoarele cu virgula fixa unde
este necesara o scalare corespunzatoare pentru a obtine rezultate precise la efectuarea operatiilor
matematice. De asemenea operatia de deplasare pote fi privita si ca o inmultire cu o data care este o
putere a lui 2.
Practic toate DSP-urile pun la dispozitie instructiuni de deplasare in diverse variante. Unele
procesoare ofera doar un set minim, respectiv instructiuni pentru efectuarea deplasarilor aritmetice
spre stanga si spre dreapta cu un bit. Alte procesoare pot oferi in plus instructiuni de deplasare cu
doi sau patru biti. Acestea se pot combina cu deplasarile cu un singur bit pentru a forma deplasari
cu n biti, dar cu mai multe cicluri de instructiune.
Din ce in ce mai multe procesoare DSP pun la dispozitie un registru de deplasare reversibil
si instuctiuni care il utilizeaza pentru a realiza deplasari aritmetice sau logice cu orice numar de biti
(denumite barell shifter). Exemplele includ DSP16xx (AT&T), ADSP-21xx si ADSP-210xx
(Analog Devices), OakDSPCore (DSP Group), DSP563xx (Motorola), D950-CORE (SGS-
Thomson) si TMS320C5x si TMS320C54x (Texas Instruments).

2
 Rotatii
Rotatia poate fi considerata drept o deplasare circulara: o deplasare in care bitii de la un
capat sunt deplasati la celalalt capat. De exemplu, la o rotatie spre stanga cu un bit, bitul cel mai
semnificativ este dus pe pozitia bitului cel mai putin semnificativ, iar ceilalti biti sunt deplasati cate
o pozitie la stanga. Rotatia este utila in diverse cazuri, cum ar fi la codarea cu corectie a erorilor
(care foloseste „intreteserea bitilor”). De asemenea operatia mai poate fi utilizata la generarea
adreselor cu bitii inversati de catre procesoarele care nu accepta operatia de inversare a bitilor
implementata in unitatea de generare a adreselor.
Majoritatea procesoarelor au instructiuni pentru rotirea unui cuvant la stanga sau la dreapta
cu un bit. Exceptiile includ DSP16xx (AT&T), PD7701x (NEC), Z893xx (Zilog) si ZR3800x
(Zoran).

 Comparatii
Multe procesoare pun la dispozitie un set de biti de stare care dau informatii despre
rezultatele operatiilor aritmetice. De exemplu, bitii de stare includ un bit de zero (setat daca
rezultatul ultimei operatii aritmetice a fost zero), un bit de minus (setat daca rezultatul ultimei
operatii aritmetice a fost negativ), un bit de depasire si asa mai departe. Acesti biti de stare sunt
setati ca rezultat al unei operatii aritmetice si pot fi apoi utilizati in salturi conditionate sau in
instuctiuni cu executie conditionata (discutate mai jos).
Intr-o instructiune in care se iau decizii un procesor poate avea nevoie sa compare rapid o
serie de valori cunoscute cu o data dintr-un registru. O modalitate de a face acest lucru este de a
scadea valoarile ce urmeaza a fi comparate din valoarea de referinta pentru a seta bitii de stare. La
unele procesoare aceasta operatie modifica valoarea referintei in timp ce pe altele rezultatul ei poate
fi stocat intr-un alt registru. La procesoarele cu putine registre (incluzand majoritatea procesoarelor
DSP in virgula fixa), nici una dintre acestea nu poate fi o solutie. Drept alternativa, unele
procesoare ofera instructiuni de comparare a valorilor care efectueaza aceasta scadere fara a
modifica valoarea referinta si fara a utiliza un alt registru pentru stocarea rezultatului. O
imbunatatire interesanta a operatiei normale de comparare este compararea in valoare absoluta care
permite determinarea rapida a incadrarii unei valori intr-un domeniu.

 Executarea buclelor
Majoritatea aplicatilor DSP necesita executarea repetata a unui numar mic de operatii
aritmetice sau de multiplicare. Deoarece numarul de instructiuni dintr-o bucla este de obicei mic,
instructiunile de decrementare a unui contor, de testare a acestuia si de salt la inceputul buclei pot
adauga o cantitate relativ mare de operatii suplimentare. Astfe, practic toate procesoarele DSP ofera
instructiuni de efectuare a buclelor implementate hardware. Aceste instructiuni permit repetarea
3
unei instructiuni sau a unui bloc de instructiuni fara a adauga operatiile suplimentare ale secventei
de decrementare, test sau de salt de la sfarsitul buclei.
Facilitatiile buclelor hardware sunt discutate detaliat in Capitolul 8.

 Salturi, apeluri de subrutine si reveniri


Toate procesoarele ofera variante de instructiuni de salt, si majoritatea pun la dispozitie
instructiuni de salt in subrutine si de revenire. Formele suportate de diverse procesoare includ:
- Conditionat/neconditionat. Un salt neconditionat se executa la adresa specificata
mereu, in timp ce un salt conditionat se executa doar daca o anumita conditie (sau conditii, la unele
procesoare) este indeplinita.
- Intarziat/multiciclu. Un salt multiciclu necesita cateva cicluri de instructiune pentru a
fi executat, in acest timp procesorul nu poate efectua o alta operatie. Un salt intarziat permite
procesorului sa execute un numar de instructiuni aflate imediat dupa instructiunea de salt inainte de
a efectua saltul la adresa destinatie. Aceasta reduce numarul de cicluri de instructiune necesare
executarii saltului. Salturile intarziate sunt discutate in detaliu in Capitolul 8.
- Salt intarziat cu anulare. Familia de TMS320C4x (Texas Instruments) ofera un salt
intarziat conditionat pentru care instructiunile aflate dupa instructiunea de salt si care se executa
inaintea saltului pot fi executate conditionat in functie de executia sau neexecutia saltului.
- Relativ la PC. Un salt relativ la PC sare la o locatie determintata de un offset relativ
la locatia instructiunii curente. Acest aspect este important in aplicatiile ce necesita cod independent
de pozitia ocupata in memorie, adica programe ce pot fi rulate indiferent la adresa de la care sunt
incarcate. Acest tip de salturi este discutat in Capitolul 8.

 Instructiuni cu executie conditionata


Instructiunile cu executie conditionata permit programatorului sa specifice faptul ca o
instructiune va fi executata numai daca o anumita conditie este indeplinita. Executia conditionata
poate fi foarte utila in implementarea codului care trebuie sa ia o cantitate mare de decizii, deoarece
elibereaza programatorul de sarcina de a folosi instructiuni de salt pentru executia unei simple
instructiuni parte a unei constructii de tip if-then-else. Executia conditionata este deosebit de utila
pe procesoare cu un pipeline cu multe etaje deoarece evita golirea pipeline-ului pe care o implica un
salt.
Unele procesoare implementeaza executia conditionata doar cu unele instructiuni. De
exemplu, majoritatea instructiunilor de pe familiile ADSP-21xx si ADSP-210xx (Analog Devices)
permit specificarea de catre programator a conditiilor in care se executa. Alte procesoare, cum ar fi
DSP16xx (AT&T) si PineDSPCore (DSP Group), pun la dispozitie mult mai putine instructiuni cu
executie conditionata. De obicei, aceste instructiuni sunt cele ce modifica acumulatorul, cum ar fi
4
incrementarea, decrementarea, deplasarea, rotunjirea etc. Deoarece codurile de conditie sunt
incorporate in codul instructiunii, nu exista o penalizare in timp de executie la folosirea
instructiunilor conditionate.
In contrast, TMS320C5x si TMS320C54x (TI) au o instructiune speciala de executie
conditionata, XC. Daca conditia specificata drept argument pentru XC este adevarata, urmatoarea
instructiune sau urmatoarele doua instructiuni de lungime un cuvant (sau urmatoarea instructiune de
doua cuvinte) se executa. Instructiunea XC necesita un ciclu pentru executie, dar pune la dispozitie
un mod mai general de executie conditionata.

 Instructiuni cu functii speciale


Exista o varietate de instructiuni specializate disponibile pe anumite DSPuri. Urmatoarele
reprezinta cazurile cel mai des intalnite:
- Instructiuni pentru virgula mobila pe bloc
Dupa cum a fost discutat in Capitolul 3, operatiile pentru reprezentarea in virgula mobila pe
bloc reprezinta o forma de aritmetica in virgula mobila care este uneori folosita pe procesoarele in
virgula fixa. Exemplele de aplicatii ce folosesc instructiunile pentru virgula mobila pe bloc includ
codarea vorbirii si unele implementari ale transformatei Fourier rapida.
Acest tip de instructiuni utilizeaza masiv doua operatii: detectia exponentului si
normalizarea. Detectia exponentului determina numarul de biti de semn redundanti intr-o valoare.
Normalizarea consta dintr-o operatie de detectie a exponentului urmata de o deplasare stanga care
scaleaza datele astfel incat sa nu contina biti de semn redundanti. Detectia exponentului este uneori
folosita separat de normalizare pentru a determina exponentul maxim intr-un bloc de numere. Dupa
ce exponentul maxim a fost gasit, se poate efectua o deplasare stanga cu acel numar de biti asupra
fiecarui numar din bloc pentru a le scala pe toate la acelasi exponent. Pentru detalii referitor la
aritmetica in virgula flotanta, revedeti Capitloul 3.
Procesoarele DSP care suporta detectia exponentului si normalizarea se impart in trei
categorii de baza:
a) Detectia exponetului in bloc. Detectia exponentului in bloc se foloseste
(de obicei intr-o bucla hardware) pentru a determina exponentul maxim intr-un bloc de date.
Aceasta instructiune este foarte utila la manipularea tablourilor de date in virgula flotanta. ADSP-
21xx (Analog Devices) si ZR3800x (Zoran) sunt singurele procesoare DSP care poseda instructiuni
de detectie a exponentului in bloc.
b) Detectia exponentului. Multe procesoare ofera instructiuni care pot calcula
exponentul unei valori intr-un singur ciclu instructiune. Procesoarele cu astfel de instructiuni includ
ADSP-21xx (Analog Devices), OakDSPCore (DSP Group), PD7701x (NEC), D950-CORE (SGS-
Thomson), TMS320C54x (Texas Instruments) si ZR3800x (Zoran).
5
c) Normalizarea. Multe procesoare executa de asemenea normalizarea (detectia
exponentului combinata cu deplasarea), dar forma acestei operatii variaza de la procesor la
procesor. Procesoarele DSP16xx (AT&T) (in afara DSP1602 si DSP1605) sunt singurele
procesoare care pun la dispozitie o instructiune de normalizare intr-un singur ciclu. Majoritatea
procesoarelor ce efectueaza detectia exponentului intr-un singur ciclu pot executa dupa aceasta o
instructiune de deplasare rezultand o operatie de normalizare executata in doua cicluri. In fine, alte
procesoare, cum ar fi PineDSPCore (DSP Group), DSP5600x si DSP561xx (Motorola),
TMS320C2x si TMS320C5x (TI), pun la dispozitie instructiuni de normalizare iterative. Aceste
instructiuni normalizeaza un numar de n biti in n cicluri instructiune. Aceste instructiuni de obicei
calculeaza si exponentul valorii respective si il stocheaza intr-un registru.

- Instructiuni de manipulare a bitilor


Instructiunile de manipulare a bitilor sunt utile atat in procesul de luare a deciziilor, cat si in
corectia erorilor. Acestea se pot imparti in doua categorii: instructiuni de manipulare a unui singur
bit si instructiuni de manipulare multibit (sau al campurilor de biti).
Instructiunile de manipulare a unui singur bit includ setarea bitului, resetarea bitului,
inversarea bitului si testarea bitului. Familia DSP5600x (Motorola), este una din primele care a
introdus instructiuni pentru aceste operatii, chiar daca aceste se executa in doua cicluri.
Procesoarele Motorola ofera instructiuni de salt in functie de valoarea unui bit, utile in aplicatiile de
control.
Instructiunile de manipulare a campurilor de biti opereaza pe mai multi biti odata. De
exemplu, TMS320C5x (TI) are instructiuni care folosesc unitatea sa logica paralela pentru a executa
operatii logice (SI, SAU, negare, SAU-EXCLUSIV) asupra unei locatii de memorie specificata. In
mod similar familia DSP561xx (Motorola) are instructiuni de testare, setare, resetare a campurilor
de biti.
Procesoarele DSP16xx (AT&T) au o unitate speciala de manipulare a bitilor care pune la
dispozitie instructiuni de extragere si inlocuire (inserare, in exprimarea AT&T). Prima instructiune
extrage un numar de biti consecutivi de la o pozitie specificata dintr-un cuvant si ii depune aliniati
la dreapta intr-un registru. A doua instructiune ia un numar specificat de biti, aliniati la dreapta,
aflati intr-un registru si ii insereaza la o anumita pozitie in cuvantul destinatie. Aceste instructiuni
sunt foarte utile la „procesarea protocoalelor” in aplicatii de comunicatii.

- Alte instructiuni cu functii speciale


Exista o mare varietate de alte instructiuni cu functii speciale, dintre care o parte vor fi
enumerate in continuare.

6
Unele procesoare pun la dispozitie instructiuni de impartire iterativa care calculeaza doar un
bit al rezultatului la fiecare executie.
ADSP-210xx (Analog Devices) si TMS320C4x (TI) ofera o instructiune de aflare a valorii
aproximative a radacinii patrate, care poate fi folosita ca o baza la aflarea mai exacta a valorii
radacinii patrate a unui numar.
Multe procesoare pun la dispozitie instructiuni specializate de implementare a operatiilor cu
stive, push si pop fiind cele mai intalnite instructiuni.
Instructiunile de activare si dezactivare a intreruperilor sunt utilizate de unele procesoare
pentru controlul intreruperilor.

7.2 Registrele
Registrele principale dintr-un procesor sunt strans legate de setul sau de instructiuni,
deoarece instructiunile folosesc deseori registre drept operanzi sursa sau destinatie, sau le folosesc
pentru a genera adrese pentru operanzii lor sursa sau destinatie. In paragrafele ce urmeaza vom trece
in revista tipurile de registre ce se gasesc pe DSP-urile programabile si functiile acestora. La fel ca
in cazul altor facilitati ale procesoarelor, un numar mare de registre face programarea mai usoara,
dar mareste dimensiunea instructiunilor si a pastilei de siliciu a procesorului, rezultand un chip mai
scump.
 Registre acumulatoare
Fiecare procesor DSP de pe piata are cel putin un registru acumulator, cu toate ca la anumite
procesoare poate avea alta denumire. Un registru acumulator este cel putin suficient de larg pentru a
cuprinde cel mai mare rezultat aflat pe calea de date, produs de ALU sau de multiplicator. Unele
procesoare, cum ar fi TMS320C1x, TMS320C2x si TMS320C5x (TI) au un singur acumulator.
Altele, ca DSP16xx (AT&T), PineDSPCore si OakDSPCore (DSP Group), DSP5600x si DSP561xx
(Motorola) si TMS320C54x (TI) au doua sau mai multe registre acumulatoare, ceea ce simplifica
codarea algoritmilor ce folosesc numere complexe. Unele procesoare ce opereaza in virgula mobila
au numar mare de registre cu precizie extinsa, din care o parte se pot folosi drept registre
acumulatoare.
 Registre de uz general si special
Unele procesoare, cum ar fi ADSP-210xx (Analog Devices), DSP32xx (AT&T), PD7701x
(NEC), TMS320C3x si TMS320C4x (TI), si ZR3800x (Zoran), pun la dispozitie un grup de registre
de uz general. De obicei acestea se pot utiliza ca operanzi pentru majoritatea operatiilor aritmetice si
de multiplicare.
La polul opus se gasesc procesoarele ce au registre dedicate anumitor unitati de executie din
cadrul procesorului. De exemplu, la familia ADSP-21xx (Analog Devices), ALU, multiplicatorul si
unitatea de deplasare au fiecare propriile registre dedicate de intrare si iesire. Multe DSPuri, cum ar
7
fi DSP16xx (AT&T), Z893xx (Zilog) si PineDSPCore (DSP Group) au registre dedicate de iesire a
unitatii de multiplicare.
La unele procesoare registrele de intrare/iesire a unitatii de executie pot servi de asemenea
drept registre de uz general. De exemplu, DSP5600x (Motorola) foloseste registrele X0, X1, Y0, Y1
drept intrari pentru multiplicare, dar si ca intrari pentru ALU sau in alte scopuri. Aceasta abilitate
mareste flexibilitatea procesorului.
Majoritatea programatorilor prefera procesoarele cu registre de uz general ce pot fi folosite
pentru sarcini variate fata de procesoarele cu registre specializate, dedicate unei singure functii de
pe calea de date. Totusi procesoarele cu registre generale au si dezavantaje: implementarea acestor
registre este mai costisitoare.

 Registre pentru adresa


Dupa cum am discutat in Capitolul 6 despre adresare, registrele pentru adresa (si registrele
modificatoare si de offset asociate) sunt folosite la generarea adreselor in cazul adresarii indirecte
prin registru. Numarul de registre pentru adresa intalnite la procesoare variaza de la 2 (in cazul
Texas Instruments - TMS20Cx1) la 22 (AT&T - DSP32xx).
Multi programatori de DSP-uri reclama faptul ca anumite procesoare au prea putine registre
adresa, in acest caz un numar mai mare de registre este de obicei de preferat.

 Alte registre
Alte registre intalnite la DSP-uri includ:
- Pointerul de stiva. De obicei se gaseste la procesoarele ce suporta stive software, un
pointer de stiva este un registru dedicat indicarii varfului curent al stivei.
- Numaratorul de program. Numaratorul de program stocheaza adresa urmatoarei
instructiuni ce urmeaza a fi decodata.
- Registre de bucla. Aceste contin informatii despre buclele hardware, cum ar fi adresa
de start, ce de sfarsit si numarul de repetari.
In majoritatea cazurilor interactiunea programatorului cu aceste registre este mult mai
limitata decat ce cu registrele principale ale procesorului.

7.3 Suportul pentru transfer paralel


Dupa cum am discutat in Capitolul 5, una dintre cele mai importante facilitati a unui DSP
este abilitatea de a efectua accesari multiple la memorie intr-un singur ciclu instructiune. Aceste
accesari ale memoriei se numesc deseori operatii de transfer paralel deoarece au loc deseori in
paralel cu o intructiune aritmetica sau de multiplicare.

8
Instructiunile pentru transfer paralel utilizate de DSP-uri pot sa aiba doua forme, dupa cum
datele deplasate sunt sau nu in relatie directa cu operanzii instructiunii care se refera la ALU sau la
multiplictor.
Setul de instructiuni de pe PineDSPCore (DSP Group) este tipic pentru operatia de transfer
paralel in relatie directa cu operanzii. La acest procesor, doar instructiunile care au operanzi din
surse multiple pot efectua accesari multiple de date din memorie intr-un ciclu instructiune si accesul
este limitat la datele necesare unei operatii aritmetice sau de multiplicare. De exemplu, o
instructiune de inmultire poate fi:
MPY (R0), (R4)
Aceasta instructiune ia continutul locatiilor de memorie la care indica R0 si R4, inmulteste aceste
valori si depune rezultatul in registrul produs. De remarcat ca pentru a obtine operanzii instructiunii
MPY sunt executate doua accesari la memorie.
In contrast, un exemplu de transfer paralel care nu este in relatie directa cu operanzii este
prezenta la familia DSP5600x (Motorola). La acest procesor, operatiile ALU si de multiplicare iau
operanzii din registre ce au fost in prealabil incarcate cu valori de intrare si depun rezultatul in
registre acumulatoare. In paralel cu o instructiune ALU sau de multiplicare, DSP5600x poate accesa
(pentru scriere sau citire) doua locatii de memorie care pot sa nu se afle in relatie directa cu
operanzii instructiunii. O posibila instructiune de inmultire pe DSP5600x:
MPY X0, Y0, A X:(R0)+,X0 Y1,Y:(R4)+
Aceasta instructiune inmulteste X0 cu Y0 si depune rezultatul in acumulatorul A. In paralel
incarca continutul locatiei din blocul de memorie X indicat de R0 in X0, si stocheaza Y1 in blocum
de memorie Y indicata de R4.
Transferul paralel care nu este in relatie directa cu operanzii permite programatorului sa
foloseasca mai eficient latimea de banda a memoriei oferita de procesor. In cazul anterior, daca
instructiunea nu necesita doua accesari ale memoriei, cele doua accesari sunt pierdute, chiar daca
componenta hardware are latimea de banda necesara executarii lor. Transferul paralel care nu este
in relatie directa cu operanzii permite utilizatorului sa utilizeze aceste doua accesari pentru a stoca
rezultate de la instructiunea anterioara sau pentru a incarca date pentru instructiunea urmatoare.
Transferul paralel care nu este in relatie directa cu operanzii este util pentru executia algoritmilor
care necesita acces frecvent, nesecvential, la memorie, cum ar fi transformarea Fourier rapida.
Procesoarele ce pun la dispozitie acest al doilea tip de acces includ DSP16xx (AT&T), toate
procesoarele Analog Devices, toate procesoarele Motorola, PD7701x (NEC), D950-CORE (SGS-
Thomson) si ZR3800x (Zoran). Procesoarele ce folosesc primul tip de acces includ DSP32C si
DSP32xx (AT&T), PineDSPCore si OakDSPCore (DSP Group), TMS320C2x si TMS320C5x (TI),
si familia Z893xx (Zoran). Alte procesoare, cum ar fi TMS320C3x, TMS320C4x si TMS320C54x

9
suporta ambele tipuri de acces pentru instructiuni diferite. TMS320C1x nu ofera transfer paralel de
nici un fel, permitand doar un acces la memorie pe ciclu instructiune.
Cele doua tipuri de transfer paralel sunt corelate cu tipurile de codare in limbaj de
asamblare, stationare temporal si cu stationare in date, discutate in Capitolul 9.

7.4 Ortogonalitatea setului de instructiuni


Ortogonalitatea se refera la consistenta setului de instructiuni al unui procesor. In general, cu
cat setul de instructiuni al uni procesor este mai ortogonal, cu atat este acesta mai usor de
programat, deoarece exista mai putine inconsistente si cazuri speciale pe care programatorul trebuie
sa le retina. Ortogonalitatea este subiectiva si nu poate fi masurata. Acest aspect trebuie avut in
vedere la formulare unei critici a ortogonalitatii unui procesor.
Cei doi parametri ce influenteaza cel mai mult ortogonalitatea setului de instructiuni al unui
procesor sunt consistenta, precum si gradul in care in care modurile de adresare sunt disponibile in
mod uniform pentru diverse operatii. De exemplu, in primul caz, programatorii considera un
procesor ce are o instructiune de adunare, dar nu si una de scadere drept neortogonal. In cel de al
doilea caz, un procesor ce permite adresarea indirecta prin registru pentru instructiunea de adunare,
dar nu si pentru cea de scadere este considerat de asemenea neortogonal.
Procesoarele cu o dimensiune a cuvantului de instructiune mai mare tind sa fie mai
ortogonale decat cele cu o dimensiune a cuvantului de instructiune mai mica. In principiu, acest
lucru se intampla deoarece ortogonalitatea rezulta din codarea independenta a operatiilor si
operatorilor in cuvantul de instructiune. Cu cat sunt disponibili mai multi biti intr-un cuvant
instructiune, cu atat este mai usor de proiectat un procesor ortogonal.
Drept exemplu, se poate considera un procesor ipotetic cu 32 de instructiuni ce suporta trei
operanzi (de exemplu „ADD R0,R1,R2”, care ar putea efectua operatia de adunare intre R0 si R1 si
ar plasa rezultatul in R2). Fiecare operand poate fi unul din cele opt registre (R0-R7). In plus, sa
presupunem ca procesorul suporta doua deplasari de date in paralel cu oricare instructiune, si ca
procesorul are opt registre pentru adresare ce se pot utiliza pentru a genera adrese indirecte prin
registru pentru aceste deplasari. Procesorul poate de asemenea executa actualizarea registrelor de
adrese in trei moduri (fara actualizare, cu postincrementare cu unu sau cu postdecrementare cu unu).
Tabelul 7-1 arata repartizarea bitilor pentru codarea instructiunii. Un set de instructiuni
codat in acest mod ar fi destul de ortogonal, deoarece fiecare aspect al setului de instructiuni este
codat independent. Totusi, aceasta modalitate de codare necesita cuvinte de instructiuni de 30 de
biti. Cu toate ca utilizand cuvinte instructiune cu mai multi biti se poate obtine o ortogonalitate mai
mare si care permite programatorului sa controleze mai multe operatii pe instructiune, este insa
necesar un bus si o memorie mai mare, ceea ce mareste costul sistemului. In plus, doar putine
aplicatii vor putea sa exploateze toate posibilitatile si flexibilitatea fiecarei instructiuni. Fiecare

10
instructiune executata care nu utilzeaza toata puterea setului de instructiuni constituie un argument
pentru un set de instructiuni mai mic, mai putin ortogonal, mai greu de programat dar mult mai
eficient din punct de vedere al utilizarii memoriei.

Exista cateva modalitati frecvent folosite pentru a obtine o functionalitate mai mare cu un
set de instructiuni cu latime a cuvantului de instructiune mai mic la procesoarele DSP cu
instructiuni codate cu 16 biti:
- Reducerea numarului de operatii. Executind mai putine operatii se elibereaza biti din
cuvantul de instructiune pentru alte scopuri. De exemplu, DSP16xx (AT&T) nu are instructiuni de
rotatie.
- Reducerea numarului de moduri de adresare. Procesoarele cu lungimi ale cuvantului
instructiune mai mare pun la dispozitie o mare varietate de moduri de adresare disponibile pentru
toate instructiunile. Procesoarele cu o lungime mai mica a cuvantului instructiune au mai putine
moduri de adresare si un numar limitat de moduri de actualizare pentru adresarea indirecta prin
registre. De asemenea pot fi limitate combinatiile valide de operatii si moduri de adresare.
- Restrictii asupra operanzilor sursa/destinatie. Familia DSP561xx (Motorola) este
tipica pentru justificarea acestei solutii. De exemplu, a doua deplasare paralela intr-o instructiune
poate folosi doar un anumit registru (R3) pentru generarea adreselor. Similar, alegerea sursei
operanzilor la o instructiune de multiplicare determina cate scrieri sau citiri paralele sunt permise.
- Utilizarea bitilor de mod. Texas Instruments foloseste aceasta abordare la familiile
TMS320C1x si TMS320C2x, dar mai ales la TMS320C5x. Aceste procesoare folosesc bitii de mod
stocati in registre dedicate pentru a determina partial ce face o instructiune. De exemplu,
TMS320C5x nu are instructiuni separate de deplasare aritmetica si logica. In schimb un bit de
deplasare intr-un registru de control determina daca instructiunea de deplasare este aritmetica sau

11
logica. Similar, instructiunea de deplasare a acumulatorului ia numarul de biti cu care are loc
deplasarea dintr-un registru special si nu dintr-o valoare codata in cuvantul instructiune.
Majoritatea acestor optiuni cresc dificultatea de programare, dar cuvantul instructiune este mai scurt
ceea ce reduce pretul total al procesorului si sistemului.

7.5 Formatul limbajului de asamblare


Exista doua variante principale de limbaj de asamblare pentru procesoare DSP: cel
traditional- opcode-operand si cel asemanator functional limbajului C, sau algebric. In prima
varianta instructiunile sunt codate sub forma de mnemonice (un cod scurt ce indica instructiunea, de
exemplu MPY) impreuna cu operanzii sai, de exemplu:
MPY X0, Y0
ADD P, A
MOV (R0), X0
JMP LOOP
In cealalta varianata, cea a limbajului de asamblare asemanator limbajului C, se foloseste
sintaxa limbajului de nivel inalt si conventiile sale aritmetice. Fragmentul de cod de mai sus se
poate scrie astfel:
P = X0 * Y0
A=P+A
X0 = *R0
GOTO LOOP
Fiecare varianta de scriere are adeptii lui care sustin ca abordarea lor este mai naturala, clara
sau productiva. Un avantaj al sintaxei asemanatoare C-ului este acela ca algoritmii se exprima in
limbaj de asamblare intr-o forma asemanatoare celei matematice. Dezavantajul acestei sintaxe este
faptul ca limbajul de asamblare nu este cod C propriu-zis, oricat de mult ar semana superficial cu
acesta. Drept urmare, programatorii obisnuiti cu limbajul C pot gasi programarea in acest mod
frustranta, deoarece sintaxa poate sugera disponibilitatea unor operatii posibile in C dar imposibile
in limbajul assembler.
In final, trebuie remarcat faptul ca sintaxa limbajului de asamblare folosit la programarea
unui procesor DSP este de fapt nelegata de setul de instructiuni. Astfel, nu exista nici un motiv
pentru care un procesor nu poate avea doua limbaje de asamblare, unul care foloseste metoda
opcode-operands si unul care foloseste sintaxa asemanatoare C. Atata timp cat ambele coduri
genereaza acelasi cod binar, cele doua sintaxe sunt echivalente din punct de vedere al procesorului.

12
Capitolul 8

Mecanisme de control a functionarii procesorului

Controlul functionarii procesorului se refera la regulile sau mecanismele folosite intr-un


procesor pentru determinarea modului de secventiere a instructiunilor unui program. In acest
capitol, sunt analizate cateva din particularitatile transferului controlului executiei care sunt
importante pentru procesoarele DSP. Aceste caracteristici sunt legate de: executia hardware a
buclelor, controlul intreruperilor, mecanismele pentru stiva si suportul pentru salturi relative.
Controlul executiei este strans legat de functionarea pipe-line-ului, care este analizata in detaliu in
Capitolul 9.

8.1 Mecanismele hardware pentru executarea buclelor

Algoritmii DSP implica adesea executia repetata a unui numar mic de instructiuni numite
cicluri interne (kernels). Filtrele FIR si IIR, FFT, inmultirea matricilor si o multime de alte aplicatii
elementare sunt toate realizate prin executarea repetata a unei instructiuni sau a unei secvente de
instructiuni. Procesoarele DSP au evoluat pentru a include caracteristici care sa le permita
manevrarea eficienta a acestor tipuri de activitati repetate. Pentru a intelege aceasta evolutie,
trebuie analizate problemele asociate abordarilor traditionale ale acestor forme de executie repetata
a instructiunilor.
In primul rand, o abordare naturala a ciclului foloseste o instructiune de salt (branch
instruction) pentru a reveni la punctul de inceput a ciclului. Cum este mentionat in Capitolul 7 si
discutat in amanuntime in Capitolul 9, de obicei instructiunile de salt necesita cateva cicluri de tact
pentru fi executate. In special pentru cicluri mici incarcarea buclei (respectiv cresterea timpului de
executie) datorata instructiunilor de salt poate fi considerabila.
In al doilea rand, deorece majoritatea ciclurilor sunt executate de un numar fix de ori,
procesorul trebuie sa foloseasca un registru index pentru a contoriza numarul de instructiuni din
bucla si un registru index pentru a contoriza numarul de parcurgeri a ciclului. Calea de date a
procesorului trebuie folosita pentru a incrementa/decrementa indexul si pentru testarea valorii sale,
pentru a stabili daca au fost executate toate instructiunile si pentru a aduce procesorul la inceputul
buclei. Toate aceste activitati sporesc incarcarea buclei si folosesc in plus registre care ar putea fi
utilizate in alte scopuri.
Procesoarele DSP au evoluat, pentru a evita problemele datorate ciclurilor asistate software,
spre tehnici cunoscute sub numele “zero-overhead looping”. Mecanismele hardware de control a
1
buclelor sunt unitati speciale de control hardware care repeta de un anumit numar de ori o singura
instructiune sau un grup de instructiuni. Principala diferenta intre ciclurile hardware si cele software
este aceea ca ciclurile hardware nu consuma timp pentru incrementarea sau decrementarea
contoarelor si pentru a verifica daca ciclul este incheiat, pentru a reveni la inceputul ciclului. De
exemplu, figurile 8.1 (a) si 8.1 (b) prezinta un filtru FIR implementat in limbaj de ansamblare pe
doua procesoare DSP, unul cu cicluri asistate software si celalalt cu cicluri executate hardware.
Ciclul software necesita in general de trei ori mai mult timp pentru a fi executat, presupunand ca
toate instructiunile sunt executate intr-un singur ciclu de tact. De fapt, instructiunile de salt necesita
cateva cicluri de tact pentru a fi executate, deci avantajul ciclurilor hardware este si mai evident.

Cu exceptia nucleelor DSP CD24xx si CD245x (Clarkspur Design), MDSP2780 (IBM),


TMS 3201x (Texas Instruments), Z893xx (Zilog), toate procesoarele DSP ofera un anumit suport
pentru cicluri hardware. Forma exacta a acestui suport poate varia foarte mult de la un procesor
DSP la altul. Paragrafele urmatoare analizeaza cateva din caracteristicile cele mai importante ale
ciclurilor hardware.

 Cicluri hardware mono si multi-instructiune


Majoritatea procesoarelor DSP ofera doua tipuri de cicluri hardware: cicluri cu o singura
instructiune si cicluri multi-instructiune. Un ciclu hardware mono-instructiune repeta o singura
instructiune de un anumit numar de ori in timp ce un ciclu multi-instructiune repeta un grup de
instructiuni de un anumit numar de ori. Dintre procesoarele care suporta cicluri hardware, toate, in
afara de TMS320C2x (Texas Instruments) si variantele sale , ofera cicluri hardware mono si multi-
instructiune (TMS320C2x executa doar cicluri hardware mono-instructiune). Unele procesoare, ca
de exemplu ADSP21xx (Analog Devices) permit folosirea ciclurilor hardware multi-instructiune
pentru a repeta o singura instructiune.
Procesoarele familiei TMS320C5x ofera suport atit pentru cicluri mono-instructiune cit si
pentru cicluri multi-instructiune. Registrul numarator RPTC poate fi incarcat cu ajutorul
instructiunilor de repetare RPT/RPTZ cu valoarea N (cu valoarea maxima 65.536), pentru a stabili
2
executia de N+1 ori a instructiunii care urmeaza. Pot fi repetate doar anumite instructiuni cum sunt:
instructiunile de multiplicare si acumulare (MAC/MACD), pentru transfer de blocuri
(BLDD/BLPD), pentru transferuri I/O (IN/OUT), pentru citirea/scrierea tablourilor (TBLR/TBLW),
etc. Executarea buclelor multi-instructiune asigura o incarcare zero a buclei pentru implementarea
ciclurilor for si do. Operatia este controlata cu ajutorul a trei registre (PASR, PAER si BRCR) si a
bitului BRAF din registrul PMST. Registrul BRCR este contorul pentru numarul de repetari a
ciclului (maximum 65.535 ori). Instructiunea RPTB (repeat block) incarca in registrul PASR adresa
instructiunii care urmeaza si care reprezinta adresa de inceput a blocului si in registrul PAER adresa
de sfirsit a blocului reprezentata ca un operand lung imediat al instructiunii. Blocul repetat contine
cel putin trei cuvinte instructiune. Executia instructiunii RPTB seteaza automat activ bitul BRAF
(Block Active Repeat Flag).
Deoarece o bucla hardware mono-instructiune executa in mod repetat o singura instructiune,
instructiunea este citita o singura data din memoria pentru program. Pentru executarile ulterioare in
ciclul de repetare, magistrala de program poate fi folosita pentru accesarea memoriei si pentru alte
scopuri decat aducerea unei instructiuni; de exemplu, pentru transferul datelor sau a coeficientilor
stocati in memoria de progam. Cateva procesoare (TMS320C2x si TMS320C5x) folosesc acest
mecanism pentru a castiga in plus posibilitati de acces a memoriei in cadrul ciclului instructiune.
In contrast, pentru un procesor care executa cicluri hardware multi-instructiune, de fiecare
data cand procesorul reia ciclul trebuie sa readuca din memoria de program instructiunile care sunt
repetate. Din aceasta cauza, bus-ul de program al procesorului nu mai poate accesa alte date. O
exceptie o constituie procesorul DSP16xx (AT&T) care poseda un buffer special de 15 cuvinte care
este folosit pentru a retine instructiunile care sunt repetate. La prima iteratie a ciclului, instructiunile
sunt copiate in acest buffer. La trecerile ulterioare prin ciclu, procesorul aduce instructiunile din
buffer-ul de 15 cuvinte, eliberand bus-ul programului pentru accesul datelor.
Majoritatea procesoarelor permit ca un numar arbitrar de instructiuni sa fie repetate intr-un
ciclu hardware multi-instructiune. De exemplu, ciclul hardware al procesorului DSP16xx suporta
maximum 15 instructiuni, iar procesorul DSP32C (AT&T) suporta maximum 32 de instructiuni.
Dupa cum s-a mentionat, majoritatea ciclurilor interne tind sa contina un numar mic de instructiuni,
astfel incit asemenea limitari sunt acceptabile pentru multe aplicatii.

 Contorizarea numarului de repetari a ciclului


O alta caracteristica care diferentiaza posibilitatile de executare a ciclurilor hardware de
catre procesoarele este numarul de minim si maxim de cicluri care pot fi repetate. Aproape toate
procesoarele accepta ca numar minim de repetari o singura repetare, iar limita superioara de 65536
este una obisnuita. Exista si procesoare (DSP16xx - AT&T sau PineDSPCore - DSP Group) care
au limite superioare relativ mici (127 si respectiv 256). Frecvent, numarul maxim cicluri care pot fi

3
repetate este mai scazut daca contorizarea numarului de repetari este specificata folosind datele
imediate (alta solutie ar consta in folosirea unui contor de repetare mapat in memorie).
O varianta a ciclurilor hardware, intalnita la unele procesoare (de exemplu, Motorola-
DSP5600x si Zoran - ZR3800x) este urmatoarea: un ciclu numarat ca zero determina procesorul sa
repete ciclul de un numar maxim de ori. Atata timp cat dimensiunea buclelor este fixa aceasta nu ar
fi o problema; poate fi o problema daca in timpul rularii programul determina dinamic numarul de
repetitii. Daca zero este o numarare posibila a repetitiilor (adica nu se repeta deloc ciclul), un test
conditional si o instructiune de salt trebuiesc plasate inainte de startul ciclului pentru a evita
executia buclei daca numararea executiei ar fi zero.

 Efectele executarii ciclurilor asupra latentei intreruperilor


Pe durata executiei, ciclurile hardware mono-instructiune dezactiveaza intreruperile. In
consecinta, proiectantii de sistem care folosesc atat ciclurile hardware mono-instructiune cat si
intreruperile trebuie sa aiba in vedere timpul maxim de intrerupere pe care il pot accepta si sa
modifice corespunzator codul ciclului mono-instructiune. Alternativele includ folosirea ciclurilor
multi-instructiune asupra unei singure instructiuni si divizarea unui ciclu mono-instructiune intr-un
numar de cicluri mai mici, unul dupa altul, fiecare cu un numar mai mic de repetari.
Trei familii de procesoare DSP ( DSP32C, DSP32xx, DSP16xx - AT&T) dezactiveaza
intreruperile chiar si in timpul executiei ciclurilor hardware multi-instructiune. Programatorii
acestor dispozitive trebuie sa aiba in plus grija sa determine maximul timpului de intrerupere in
aplicatiile lor si sa organizeze ciclurile hardware in functie de aceasta.

 Adancimea de intrepatrundere
Un ciclu imbricat (nested loop) este un ciclu plasat in interiorul altui ciclu. Majoritatea
aplicatiilor care folosesc cicluri hardware au nevoie doar de unul singur. In unele aplicatii,
introducerea unui ciclu in altul poate fi eficienta si convenabila. De exemplu, calculul transformatei
Fourier rapide are nevoie de trei cicluri imbricate.
Cele mai comune abordari pentru executia ciclurilor hardware imbricate sunt:
- Imbricare directa. Unele procesoare, inclusiv toate procesoarele DSP de la
Motorola, Analog Devices si NEC - PD7701x, permit ca ciclurile hardware sa fie imbricate prin
introducerea instructiunilor unui ciclu hardware in interiorul altui ciclu. Adancimea de intre-
patrundere variaza de la trei (NEC - PD7701x) pana la sapte nivele (procesoarele Motorola).
Procesoarele care pot executa cicluri hardware direct imbricate folosesc cite o stiva separata (doar
pentru ciclurile hardware) care contine adresa de inceput a ciclului, adresa de sfarsit si numarul de
repetitii.

4
- Imbricare partiala. Procesoarele care executa cicluri hardware mono si multi-
instructiune permit ca un ciclu mono-instructiune sa fie introdus intr-un ciclu multi-instructiune,
chiar daca ciclurile multi-instructiune nu pot fi imbricate.
- Imbricare software. La procesoarele TMS320C3x si TMS320C5x (TI) ciclurile
hardware pot fi imbricate salvand starea diversilor registri ai ciclului ( startul, sfarsitul ciclului si
indexul ciclului) si apoi executand o noua instructiune din ciclu. In functie de numarul de cicluri
interioare si exterioare, aceasta ar fi o abordare mai buna decat folosirea unei instructiuni de salt
pentru ciclul interior. Reamintim ca o instructiune de ramificare produce o incarcare suplimentara la
fiecare iteratie in timp ce salvarea restaurarea registrelor ciclului trebuie facuta doar odata la fiecare
parcurgere a ciclului.
- Lipsa imbricarii. Exista procesoare DSP (TMS320C2x, DSP16xx, DSP32xx –
AT&T) care nu accepta cicluri hardware imbricate .

 Cicluri hardware asistate software


O alternativa pentru ciclurile hardware imbricate este introducerea unui singur ciclu
hardware in interiorul unuia software care foloseste instructiuni specializate pentru cicluri software.
De exemplu, procesoarele DSP16xx, TMS320C3x si TMS320C4x accepta o instructiune de tip
“decrement-and-branch-if-not-zero“. Chiar daca aceasta instructiune necesita doar un singur ciclu
de tact (la TMS320C3x, TMS320C4x) si trei cicluri instructiune la DSP16xx, numarul de cicli de
tact este mai mic decat cel consumat pentru a executa o decrementare individuala, a testa si a face
un salt.
De multe ori acesta este un compromis rezonabil intre costul hardware-ului necesar pentru a
realiza ciclurile hardware imbricate si costul timpului de executie pentru implementarea numai prin
software a ciclurilor.

8.2. Sistemul de intreruperi

Sistemul de intreruperi permite sincronizarea functionarii procesorului cu evenimente


externe sau interne. O intrerupere este un generata de un eveniment extern/intern care determina
procesorul sa opreasca executia programului curent si sa execute un salt la o subrutina de servire a
evenimentului care a generat-o, denumita subrutina de intreruperi. De exemplu, daca un dispozitiv
periferic doreste initierea unui transfer de date cu sistemul cu microprocesor, el comanda printr-o
cerere de intrerupere suspendarea programului in curs si executarea unei subrutine care, in acest
caz, este programul de executare a transferului de date. Dupa executarea subrutinei de intrerupere
este reluat programul suspendat la primirea cererii de intrerupere. Toate procesoarele DSP poseda

5
un sistem propriu de intreruperi, folosit ca mijloc principal de dialog cu dispozitivele periferice sau
pentru tratarea unor situatii anormale de functionare.
In continuare vor fi analizate aspecte privind functionarea sistemului de intreruperi la
procesoarele DSP.

 Sursele de intreruperi
Intreruperile provin din surse variate, incluzind:
- perifericele incorporate. Majoritatea procesoarelor poseda o varietate de periferice
incorporate (on-chip peripheral) cum ar fi porturi seriale, paralele, timere, etc., care genereaza
intreruperi cand sunt indeplinite anumite conditii.
- Linii de intreruperi externe. Sunt linii de comanda care pot fi utilizate de elementele
externe pentru a comanda o intrerupere.
- Intreruperi software. Numite si exceptii sau capcane (traps), acestea sunt intreruperi
generate sub control software sau datorate unei operatii initiate prin software. Exemplele includ:
capcanele pentru cod ilegal, exceptiile pentru functionarea in virgula mobila (division by zero,
overflow, underflow, etc.) si altele
Atat perifericele incorporate cat si liniile de intrerupere sunt discutate in detaliu in Capitolul
10.

 Vectorii de intrerupere
Fiecarei surse de intrerupere ii este asociat un vector de intrerupere cu ajutorul caruia
microprocesorul stabileste legatura intre sursa intreruperii si subrutina de tratare asociata. Dupa cum
am mentionat mai sus, o intrerupere face ca procesorul sa inceapa executia de la o anumita locatie
de memorie, alta decit cea indicata de valoarea curenta a PC. De fapt, toate procesoarele asociaza o
adresa diferita de memorie cu fiecare intrerupere. Intreruperile vectorizate simplifica programarea
deoarece programatorul nu mai trebuie sa cunoasca care sursa de intreruperi a generat intreruperea;
aceasta informatie este continuta implicit in vectorul de intrerupere. Fara vectorizarea intreruperilor
programatorul trebuie sa verifice fiecare sursa posibila de intrerupere pentru a vedea cine a generat
respectiva intrerupere, crescand timpul de raspuns la intrerupere.
Vectorii de intrerupere tipici au o lungime de unul sau doua cuvinte si sunt localizati in zona
inferioara de memorie (low memory). Locatia accesata cu vectorul de intrerupere contine de obicei
un salt sau o instructiune de apel a unei subrutine care poate fi plasata oriunde in memoria de
program. La unele procesoare locatiile corespunzatoare vectorilor de intrerupere sunt distantate la
cateva cuvinte. Aceasta permite ca scurte rutine de intreruperi sa fie localizate direct la adresa
indicata de vectorul de intrerupere, eliminand instructiunile de salt si de revenire. La alte

6
procesoare, locatia indicata de vectorul de intrerupere nu contine de fapt o instructiune; ea contine
doar adresa rutinei de intrerupere.

 Activarea intreruperilor
Toate procesoarele ofera mecanisme pentru activarea/dezactivarea globala a intreruperilor.
Pe anumite procesoare aceasta s-ar putea face prin instructiuni de speciale de activare sau
dezactivare, in timp ce pe altele ar implica scrierea intr-un registru special de control. Majoritatea
procesoarelor permit activarea individuala a intreruperilor pentru fiecare sursa de intreruperi.

 Prioritatea intreruperilor si intreruperi imbricate automat


Procesoarele cu mai multe surse de intrerupere folosesc conceptul de priorizare a
intreruperilor. Definitia data prioritatatii este similara la toti furnizorii: daca doua intreruperi apar
simultan (in acelasi ciclu de ceas), cea cu prioritate mai mare va fi executata, iar cea cu prioritate
mai mica trebuie sa astepte ca procesorul sa incheie executarea intreruperii cu prioritata mai mare.
Conform acestei definitii prioritatile intreruperilor sunt folosite pentru a arbitra intreruperile
simultane. Ele nu sunt folosite pentru a permite unei intreruperi mai importante sa intrerupa
realizarea unei intreruperi mai putin importanta. Cand procesorul permite unei intreruperi cu
prioritate mai mare sa intrerupa executia unei intreruperi cu prioritate mai mica numim aceasta
operatie imbricare automata a intreruperilor. Majoritatea DSP-urilor nu accepta intreruperi
imbricate automat; procesoarele de la Analog Devices si Motorola sunt exceptii. La unele
procesoare, o rutina de intrerupere poate reactiva explicit intreruperi pentru a permite altor
intreruperi sa acceseze rutina de intrerupere.

 Latenta intreruperilor
Latenta intreruperii este timpul de raspuns al procesorului la aparitia unei intreruperi.
Latenta intreruperilor poate varia semnificativ de la o familie de procesoare la alta. Latenta mica a
intreruperii poate fi un factor important in special pentru controlul aplicatiilor in timp real. Aceasta
deoarece furnizorii de procesoare folosesc definitii gresite, vagi sau contradictorii ale latentei
intreruperilor (sau a conditiilor in care este masurata). Definitia formala a latentei intreruperii
precizeaza timpul minim garantat in anumite conditii de la aparitia unei cereri de intrerupere externa
si pana la executia primului cuvant din vectorul de intrerupere. Acest timp este masurat in cicluri
instructiune. Citeva detalii legate de aceasta definitie:
- Majoritatea procesoarelor testeaza starea liniilor externe de intrerupere la sfirsitul
fiecarui ciclu instructiune. Pentru a recunoaste aparitia unei intreruperi intr-un anumit ciclu
instructiune, linia de intreruperi trebuie sa fie activata un anumit cu un anumit timp inainte de
inceputul ciclului instructiune, acest timp fiind numit timp de stabilire (set-up). Deoarece

7
dispozitivul de intrerupere nu are cum sa garanteze ca va indeplini conditiile timpului de set-up al
procesorului, presupunem ca aceste conditii de set-up nu sunt indeplinite. Aceasta mareste latenta
intreruperii cu un ciclu.
- Dupa ce o linie de intreruperi a fost testata cu tactul procesorului este tipic trecuta
prin cateva etape de retinere pentru a evita problemele de metastabilitate. Aceasta etapa este numita
sincronizare. In functie de procesor, aceasta poate adauga unul pana la trei cicluri instructiune
latentei intreruperii.
- Din acest moment intreruperea este tipic recunoscuta ca valida si nerezolvata
depinzind de procesor. Daca procesorul nu este intr-o stare intreruptibila, procesarea intreruperii
este intarzaiata pana cand procesorul intra intr-o stare intreruptibila. Exemplele de stari
neintreruptibile includ dezactivarea unei intreruperi sub control software, executia de catre procesor
a unei alte intreruperi, executia unui ciclu hardware care dezactiveaza intreruperile, executia unui
ciclu multi-instructiune sau procesorul este intarziat datorita starilor de asteptare cand acceseaza
memoria externa. In definitia data latentei intreruperii s-a presupus ca procesorul se afla intr-o stare
intreruptibila care tipic inseamna ca poate executa instructiunea cea mai scurta.
- Procesorul trebuie apoi sa termine executia instructiunilor care sunt deja procesate in
pipeline. Presupunem ca aceste instructiuni reprezinta toate instructiunile care se executa intr-un
singur ciclu instructiune. In paralel cu aceasta, procesorul poate incepe sa incarce si procese din
primul cuvant al vectorului de intrerupere. Definitia data latentei intreruperii include timpul in care
primul cuvant al vectorului de intrerupere este trecut prin prima etapa de executie a pipeline-ului.
Conform descrierii de mai sus unele procesoare nu stocheaza un cuvant instructiune chiar in
locatia vectorului de intrerupere. La aceste procesoare, locatia vectorului de intrerupere contine mai
degraba numai adresa rutinei de intrerupere, iar procesorul executa salt la aceasta adresa. Pe aceste
tipuri de procesoare, definitia latentei de intrerupere include timpul de salt la rutina de intreruperi.
Acest timp nu este inclus pentru procesoarele care contin instructiuni la vectorul de intrerupere,
aceasta deoarece rutina de intreruperi poate in unele situatii sa se afle chiar la locatia indicata de
vectorul de intrerupere. In alte situatii acest lucru nu este posibil si timpul necesar procesorului
pentru a executa o instructiune de salt trebuie luat in consideratie in calculul latentei intreruperii.
Unele procesoare (AT&T - DSP32C si DSP32xx) ofera intreruperi rapide (fast). La
procesoarele Motorola o intrerupere este clasificata ca fiind rapida daca primele doua instructiuni
de la locatia vectorului de intrerupere nu sunt inserate direct in pipeline si executate fara salt,
reducand latenta intreruperii. Latenta intreruperii este strans legata de managementul si adancimea
pipeline-ului.

8
 Mecanisme pentru reducerea intreruperilor
Unele procesoare, ca cele din familia DSP-21xx (Analog Devices) sau TMS 320C54x
(Texas Instruments) poseda etaje tampon (autobuffering) la porturile lor seriale. Aceasta
caracteristica permite portului serial sa-si salveze direct in memoria procesorului datele primite, fara
a-l intrerupe. Dupa ce un anumit numar de date a fost transferat, portul serial intrerupe procesorul.
De fapt aceasta este o forma specializata de DMA.

8.3 Stiva

Stiva procesorului este strans legata de controlul executiei. De exemplu, apelurile


subrutinelor isi plaseaza in stiva, de obicei, adresele de revenire, in timp ce intreruperile folosesc
stiva si pentru informatiile de stare (astfel incat schimbarile facute de rutina de intreruperi asupra
cuvantului de stare al procesorului nu va afecta codul intrerupt).
Procesoarele DSP folosesc de obicei unul din urmatoarele tipuri de stiva:
- Shadow registers. Shadow registers sunt registri dedicati de backup care retin
continutul registrilor cheie ai procesorului in timpul procesarii intreruperii.
- Stiva hardware. O stiva hardware este un bloc special situat pe chip-ul de memorie,
de obicei avand o lungime de cateva cuvinte. Aceasta stiva contine starea registrilor selectati in
timpul procesarii intreruperilor sau a apelurilor subrutinelor.
- Stiva software. O stiva software este o stiva conventionala care foloseste memoria
procesorului pentru a stoca date in timpul executiei intreruperilor sau la apelurile de subrutine.
Dintre cele trei tipuri de mai sus, in general cele mai folositoare sunt stivele software si
shadow registers. Shadow registers pot fi folosite pentru a oferi o incarcare redusa a manipularii
intreruperii, deoarece ele salveaza automat registrii cheie ai procesorului intr-un singur ciclu.
Avantajul principal al stivei software fata de stiva hardware este ca adancimea ei poate fi
configurata de programator rezervand o regiune adecvata de memorie. In contrast, stivele hardware
sunt relativ mai putin adanci si programatorul trebuie sa aiba grija ca stiva sa nu fie depasita.

8.4 Facilitatile pentru executarea salturilor relative

Toate procesoarele DSP poseda instructiuni de salt ca una dintre cele mai simple forme de
control al executiei. In unele aplicatii (calculatoarele personale multimedia multitasking) o forma de
salt, cunoscuta ca saltul relativ la PC, poate fi extrem de utila. In salturile relative la PC, adresa la
care procesorul executa saltul este specificata ca offset la adresa curenta. Adresarea relativa la PC

9
este utila pentru crearea programelor independente de pozitie. Un program independent de pozitie
este acela care poate fi localizat oriunde in memorie. Daca toate referintele la memorie sunt
specificate relativ la alte locatii din codul programului, atunci nu este nici o greutate daca programul
este incarcat in alta parte a memoriei de fiecare data cand este rulat. Pe de alta parte, daca un
program contine referinte absolute la o alta locatie de memorie atunci programul nu mai pote fi
realocat fara a modifica aceste referinte.
In plus, prin folosirea codului independent de pozitie, saltul relativ la PC poate economisi
memorie de program in anumite situatii. In majoritatea programelor, salturile tind sa fie neglijabil
de scurte. Ca rezultat, frecvent offset-ul de la instructiunea curenta la instructiunea destinatie nu are
nevoie sa fie reprezentat de o instructiune cu lungime maxima. Ca urmare, offset-ul, poate fi
continut chiar in instructiunea de salt, rezultand o semnatura de offset de lungime redusa. De
exemplu, OakDSPCore (DSP Group) ofera o instructiune de salt cu o valoare a semnaturii de offset
de 7-biti.

10
Capitolul 9
Functionarea pipeline

Pentru a obtine o productivitate ridicata procesoarele de semnal combina avantajele


arhitecturii Harvard cu folosirea tehnicii pipeline de functionare. Pipeline-ul este o tehnica de
crestere a performantei unui procesor (sau a altor dispozitive electronice) prin impartirea unei
secvente de operatii in parti mai mici si executarea in paralel a acestora, pe unitati functionale
distincte, reducand astfel timpul necesar pentru a executa aceste operatii. Astazi aproape toate
procesoarele DSP de pe piata folosesc intr-o anumita masura tehnica pipeline. Totusi, folosirea
tehnicii de functionare pipeline din dorinta de imbunatati performantele, complica frecvent
programarea. De exemplu, pe anumite procesoare pipeline-ul conduce, in unele cazuri, la executia
mai lenta a unor instructiuni. Pe alte procesoare, anumite secvente de instructiuni trebuie evitate
pentru o executie corecta a programului. Cu toate acestea, tehnica pipeline reprezinta un
compromis intre eficienta si usurinta in utilizare.
Acest capitol prezinta conceptele tehnicii pipeline si explica un numar de probleme legate
de aceasta, furnizand exemple legate de modul in care sunt utilizate aceste concepte la
procesoarele DSP.

9.1 Principiul functionarii pipeline. Performante


Pentru a ilustra modul in care tehnica pipeline spereste nivelul de performanta, sa
consideram un procesor ipotetic care foloseste unitati de executie separate pentru a executa
secvential urmatoarele actiuni pentru o singura instructiune:
 Aducerea codului instructiunii din memoria de program
 Decodarea instructiunii (determinarea operatiei pe care trebuie sa o execute)
 Citirea operandului/operanzilor din memoria de date
 Executia instructiunii
Presupunand ca fiecare din cele patru etape de mai sus necesita pentru a fi executate
aproximativ 20 ns si ca ele trebuie realizate secvential, in Figura 9.1 este aratata executia unei
secvente de citorva instructiuni pe un procesor fara pipeline. Din figura putem observa ca folosind
aceasta abordare procesorul poate executa o instructiune la fiecare 80ns. Putem constata de
asemenea ca hardware-ul asociat fiecarei etape de executie (citirea codului, decodarea, incarcarea
operandului, executia instructiunii) este nefolosit 75 la suta din timp (presupunand ca pentru
fiecare etapa este folosit un hardware diferit). Aceasta pentru ca procesorul nu incepe executia
instructiunii urmatoare pana cind nu este complet incheiata executia instructiunii curente.

1
Intr-o implementare pipeline a acestui procesor imediat dupa ce prima instructiune a fost
incarcata, incepe incarcarea urmatoarei instructiuni, s.a.m.d. Similar, imediat ce a fost decodata
instructiunea curenta incepe decodarea urmatoarei instructiuni. Rezulta ca in cazul folosirii tehnicii
pipeline procesorul executa o noua instructiune la fiecare 20 ns, ceea ce inseamna o crestere de 4
ori a vitezei de lucru. In Figura 9.2 este aratat un lucru interesant: cu toate ca fiecare instructiune
este executata pe durata a mai multi cicli instructiune ele apar pentru programator ca fiind
executate intr-un singur ciclu.
Exemplul de functionare considerat este asemanator cu cel folosit de procesorul
TMS320C3x (Texas Instruments).

9.2 Adincimea pipeline-ului


Cu toate ca marea majoritate a procesoarelor folosec tehnica pipeline, adancimea (numarul
de etaje) pipeline-ului poate varia de la un procesor la altul. In general, un pipeline mai „adanc”
permite procesorului sa execute mai rapid, dar il face mai greu de programat. Majoritatea
procesoarelor folosesc trei etaje (extragerea instructiunii, decodarea, incarcarea operandului si
executia). In pipeline-ul cu trei etaje incarcarea operandului are loc de obicei mai tarziu, ulterior
etapei de decodare. Procesoarele Analog Devices sunt cunoscute pentru pipeline-ul putin adinc, cu
doua etaje in timp ce procesorul TMS329C54x (Texas Instruments) are o adancime relativ mare,
respectiv un pipeline cu cinci etaje.

2
9.3 Interblocarea

Secventa de lucru aratata in Figura 9.2 prezinta o suprapunere perfecta, deoarece fazele
pipeline-ului se imbina perfect si ofera o utilizare de suta la suta a etajelor functionale ale
procesorului. In realitate, procesoarele nu lucreaza atat de bine ca in exemplul dat. Cea mai
comuna explicatie pentru aceasta este conflictul accesului la resurse. De exemplu, presupunem ca
procesorul considerat are nevoie de doua cicluri instructiune (40ns) pentru a scrie date in memorie.
(acesta este cazul procesoarelor AT&T - DSP16xx.) Daca instructiunea I2 incearca sa scrie in
memorie si instructiunea I3 are nevoie sa citeasca din memorie, al doilea ciclu instructiune pentru
I2 prezinta un conflict in faza de scriere a datelor cu operatia de citire a datelor ceruta de I3.
Aceasta este ilustrata in Figura 9.3, ciclul extins de scriere este evidentiat printr-un chenar negru si
conflictul dintre I2 scriere/I3 citire este redat prin casuta hasurata.

O solutie a acestei probleme consta in folosirea tehnicii de interblocare (interlocking). Un


pipeline cu interblocare intirzie parcurgerea pipeline-ului de catre instructiunile care pot genera
conflicte. In exemplul din Fig. 9.3 instructiunea I3 poate fi mentinuta in stadiul de decodare pana
cand etajul de citire/scriere termina operatia de scriere a instructiunii I2. Aceasta modificare este
prezentata in Figura 9.4. Evident ca oprirea instructiunii I3 implica mentinerea instructiunii I4 in
etapa de incarcare (aceasta poate insemna ca I4 este reancarcata din memorie sau tinuta pur si
simplu intr-un registru). Un efect secundar al interblocarii pipeline-ului este acela ca nu exista nici
o instructiune care sa fie executata in ciclul 6 de instructiuni; in locul acesteia procesorul executa
un NOP. Aceasta are ca urmare o intarziere de un ciclu insructiuni a programului.

3
O observatie importanta care se desprinde din aceasta este ca timpul de executie al unui
procesor cu pipeline cu interblocare variaza in functie de instructiunile pe care le executa. De
exemplu, daca insructiunea I3 din exemplul nostru nu ar fi avut nevoie sa citeasca date din
memorie atunci nu ar mai fi aparut un conflict, deci nu ar mai fi fost necesara interblocarea. Acesta
complica optimizarea codului pe un procesor cu interblocare deoarece nu este usor sa se determine
momentele in care trebuie facuta interblocarea doar citind codul programului.
De asemenea, pot fi prevazute si alte scenarii de conflict la accesarea resurselor. De
exemplu, unele procesoare poseda instructiuni cu date imediate cu format lung. Acestea sunt datele
care fac parte din instructiune, dar care nu au loc in cuvantul instructiune. Pentru aceste date
procesorul foloseste un ciclu suplimentar de citire din memorie pentru a extrage datele. In
consecinta citirea datelor imediate cu format lung intra in conflict operatia de extragere a codului
urmatoarei instructiuni rezultand o interblocare.
Exemplele de mai sus arata sursele de conflicte care apar in pipeline si unde interblocarea
este singura solutie posibila; fara interblocare, in aceste exemple ar aparea rezultate eronate. In alte
cazuri lipsa interblocarii poate genera rezultate care nu sunt eronate, dar nu corespund intentiilor
programatorului. Vom ilustra acest lucru cu un exemplu pentru procesorul DSP5600x (Motorola),
un procesor care foloseste foarte putin operatia de interblocare.
Ca majoritatea procesoarelor DSP, DSP5600x are registri de adrese care sunt folositi
pentru “adresarea indirecta cu registru”. Un efect interesant la nivelul pipeline-ului apare la
executia urmatoarei secvente de instructiuni:
MOVE #$1234, R0
MOVE X: (R0), X0
Prima instructiune incarca adresa hexazecimala 1234 in registrul de adrese R0. A doua
instructiune transfera continutul locatiei din bancul de memorie X, indicata de registrul de adrese
R0, in registrul X0. De asteptat ar fi ca instructiunile de mai sus sa transfere valoarea stocata la
adresa 1234 a memoriei X in registrul X0. Totusi, datorita efectelor de pipeline, instructiunile de

4
mai sus nu sunt executate in modul in care ne-am fi asteptat. Pentru a intelege de ce, este necesara
o scurta examinare a pipeline-ului procesorului DSP5600x.
Procesorul DSP5600x foloseste un pipeline cu trei etaje. Operatiile executate de ALU
(adunare, inmultire, etc.), accesarea datelor (citirea si scrierea datelor din memorie, ca in exemplul
de mai sus) si incarcarea registrilor sunt realizate in etapa de executie. Adresele folosite pentru
accesarea datelor sunt generate in etapa de decodare. Acest lucru creaza o stare nedeterminata a
pipeline-ului (hazard) – apare o problema datorata pipeline-ului, pe care programatorul trebuie sa
o evite pentru a obtine rezultate corecte. In acest exemplu, prima instructiune MOVE modifica un
registru de adrese folosit in generarea adreselor, dar modificarea nu este reflectata in adresele
folosite in timpul acesului datelor pentru a doua instructiune MOVE.
Figura 9.5 prezinta in detaliu acest hazard. Se remarca ca aceasta figura este usor diferita
fata de figura precedenta in felul cum arata folosirea resurselor procesorului (inclusiv memoria si
unitatile de executie). O astfel de situatie este denumita uzual “tablou de rezervare” (rezervation
table).

Sa presupunem ca la inceput R0 contine valoarea hexazecimala 5678. In timpul ciclurilor


1 si 2, prima instructiune MOVE este incarcata si decodata, iar instructiunea MOVE a doua este
incarcata. In timpul celui de-al treilea ciclu instructiune este decodata a doua instructiune MOVE.
In acest timp, unitatea de generare a adreselor genereaza o adresa folosita de a doua instructiune
MOVE pentru citirea datelor, adresa 5678. Prima instructiune MOVE este executata dar rezultatele
nu sunt inca disponibile pentru unitatea de generare a adreselor. Ca rezultat, in timpul ciclului 4 al
instructiunilor, procesorul citeste din memoria X de la adresa 5678, iar registrul R0 contine acum
1234. Aceasta probabil ca nu este ceea ce intentiona programatorul. Pentru a evita aceasta situatie,

5
pot fi inserate alte cateva instructiuni (sau chiar NOP) intre cele doua instructiuni MOVE, pentru a
da pipeline-ului timp sa obtina valoarea corecta in R0.
Procesoarele TMS320C3x, TMS320C4x, TMS320C5x (Texas Instruments) prezinta
aceasta problema dar folosesc interblocarea pentru a proteja programatorul de hazard. De exemplu,
TMS320C3x detecteaza scrierea in oricare dintre registrii sai de adrese si opreste inaintarea in
pipeline a altor instructiuni care folosesc orice registru de adrese pana cind scrierea a fost
terminata. Aceasta este ilustrata in Figura 9.6. In acest exemplu, o instructiune LDI (“incarca
imediat”) incarca o valoare intr-un registru de adrese, la fel ca prima instructiune MOVE din
exemplul cu DSP5600x. A doua instructiune este MPYF (“inmultire in virgula mobila”) care
foloseste adresarea indirecta cu registru pentru a extrage unul din operanzi. Deoarece instructiunea
MPYF foloseste unul din registrii de adrese, prin interblocare este oprita etapa de decodare pana
cand instructiunea LDI este finalizata. Aceasta pentru ca procesorul executa doua instructiuni
NOP.

Procesoarele care folosesc interblocarea in astfel de situatii il scutesc pe programator de a


avea grija ca unele secvente de instructiuni sa nu produca valori incorecte. Pe de alta parte
interblocarea obliga programatorul sa scrie cod mai lent decat optimal.

9.4 Efectele ramificarii


Un alt efect al folosirii tehnicii pipeline apare la executarea salturilor sau la alte schimbari
din fluxul programului. Pana cand o instructiune ajunge in etapa de decodare in pipeline si
procesorul realizeaza ca trebuie sa inceapa sa execute la o noua adresa, urmatorul cuvant
instructiune a fost deja incarcat in pipeline. O posibilitate de a rezolva aceasta situatie este a ignora
sau a elimina instructiunea nedorita si de a inceta incarcarea noilor instructiuni pana cand saltul are
loc. Aceasta este ilustrat in Figura 9.7, unde procesorul executa un salt (BR) la o noua locatie de
memorie. Dezavantajul acestei abordari este ca procesorul trebuie sa execute cicluri NOP pe
intervalele invalidate ale pipeline-ului, avand ca rezultat executia instructiunilor de salt in mai

6
multe cicluri de instructiuni. In mod curent, un salt multi-ciclu se executa intr-un numar de cicluri
egal cu adancimea pipeline-ului, desi pentru a economisi un ciclu de instruciuni, unele procesoare
folosec artificii pentru executa saltul tarziu in etapa de decodare.

O alternativa a saltului multi-ciclu este “saltul intarziat” care nu goleste pipeline-ul. Atunci
cateva dintre instructiunile care urmeaza saltului sunt executate nomal, dupa cum este ilustrat in
Figura 9.8. Un efect secundar al saltului intarzaiat este ca instructiunile care vor fi executate
inainte de salt trebuie sa fie localizate in memorie dupa instructiunea de salt:
BRD NEW_ADDR ; Salt la o noua adresa.
INST 2 ; Aceste trei instructiuni sunt executate inainte de aparitia
INST 3 ; saltului
INST 4 ;

Salturile intarzaiate sunt numite astfel deoarece, pentru programator, efectul saltului pare a
fi intarzaiat cu cateva cicluri instructiune.

Aproape toate procesaorele DSP folosesc salturi multi-ciclu. De asemenea, multe ofera
salturi intarziate, inclusiv TMS320C3x, TMS320C4x si TMS320C5x (Texas Instruments).
Procesoarele ADSP-210xx (Analog Devices), DSP32C si DSP32xx (AT&T) si ZR3800x (Zoran)
executa doar salturi intarziate.
Impreuna cu interblocarea, salturile multi-ciclu si intarziate reprezita un compromis intre
o programare usoara si una eficienta. In cel mai rau caz, programatorul poate intodeauna sa plaseze

7
instructiuni NOP dupa o instructiune de salt intarzaiat si sa obtina acelasi efect ca al saltului multi-
ciclu, dar aceasta cere multa atentie din partea programatorului.
Efectele de salt apar de fiecare data cand apare o schimbare in desfasurarea programului si
nu doar pentru instructiuni de salt. De exemplu: instructiunile de apelare a subrutinelor,
instructiunile de revenire din subrutine si instructiunile de revenire din intreruperi sunt toate
posibile surse de efecte de pipeline ca in prezentarea anterioara. Procesoarele care executa salturi
intarziate poseda de asemenea si reveniri intarziate.

9.5 Efectele pipeline-ului asupra intreruperilor


Intreruperile implica de obicei o schimbare in fluxul programului pentru a executa saltul la
rutine de servire a intreruperii. De obicei pipeline-ul mareste timpul de raspuns al procesorului la
intreruperi, cu cit executia saltului este mai intirziata. Cand apare o intrerupere, aproape toate
procesoarele permit terminarea executiei instructiunilor din pipeline, instructiuni aflate in stadiul
de decodare sau chiar mai departe, deoarece aceste instructiuni pot fi partial executate. Ce se
intampla dupa acest punct variaza de la un procesor la altul. Vom analiza cateva exemple in
continuare.
Figura 9.9 prezinta pipeline-ul instructiunilor in timpul aparitiei unei intreruperi la familia
de procesoare TMS320C5x. La un ciclu dupa ce intreruperea a fost recunoscuta, procesorul
introduce in pipeline o instructiune INTR. INTR este o instructiune de salt specializat care face ca
procesorul sa inceapa executia la vectorul de intreruperi corespunzator. Deoarece INTR se
comporta ca un salt multi-instructiune, ea produce o intirziere de patru instructiuni inainte de a
executa primul cuvant din vectorul de intrerupere (V1 din figura). De remarcat ca instructiunile
care erau sau sunt in pipeline in etapa de decodare au permisiunea de a termina executia cand
intreruperea a fost recunoscuta (I3-I5). Instructiunea I6 este ignorata dar va fi reincarcata la
revenirea din intrerupere. De asemenea se remarca faptul ca figura nu arata timpul pentru
sincronizarea intreruperii, dupa cum s-a discutat in Capitolul 8.

8
Figurile 9.10 si 9.11 arata doua dintre cele cateva scenarii posibile de procesare a
intreruperilor de catre procesorul DSP5600x (Motorola). Se observa imediat anumite diferente fata
de procesorul TMS320C5x.
In primul rand, pentru a incepe procesarea, procesorul are nevoie de doua cicluri de
instructiuni dupa recunoasterea intreruperii. In al doilea rand, DSP5600x nu foloseste instructiuni
INTR pentru a comuta executia la adresa specificata de vectorul de intrerupere. In schimb,
procesorul incepe pur si simplu extragerea codurilor de la adresa data de vector dupa ce o
intrerupere a fost recunoscuta. Cu toate acestea, cel mult doua cuvinte sunt incarcate de la aceasta
adresa. Daca unul dintre cele doua cuvinte este apelul unei subrutine (Figura 9-10), procesorul
elimina instructiunea incarcata anterior si apoi executa saltul la la o adresa specificata printr-un
vector lung de intrerupere (long interrupt vector). Daca nici un cuvant nu este un apel al unei
subrutine, procesorul executa cel mult doua cuvinte si continua sa execute din programul original,
cum este ilustrat in Figura 9-11. Aceasta a doua forma a rutinei de intreruperi este numita
intrerupere rapida. Intreruperile au fost analizat in Capitolul 8.

9
Capitolul 10

Dispozitivele I/O si perifericele

Majoritatea procesoarelor DSP poseda un numar corespunzator de dispozitive periferice


integrate si de interfete pentru periferice externe. Aceasta permite folosirea procesorului intr-un
sistem integrat cu un minim de componente electronice externe, care sa asigure operarea si interfata
sa cu exteriorul. In acest capitol vor fi prezentate dispozitivele periferice integrate in cip si
interfetele pentru perifericele externe care sunt intilnite in mod obisnuit la procesoarele DSP.

10.1 Porturile seriale

O interfata seriala transmite si primeste datele bit cu bit. Spre deosebire, porturile paralele
trimit si primesc date in format paralel, sub forma de cuvinte de 8, 16 sau 32 de biti. Desi
interfetele seriale nu sunt la fel de rapide ca cele paralele (in ceea ce priveste numarul de biti
transferati pe secunda), ele folosesc un numar mai redus de pini de interfata (numai 3 sau 4 pentru o
interfata seriala completa).
Porturile seriale prezente pe chip-urile DSP sunt folosite pentru aplicatii variate, incluzind:
 transmiterea si primirea esantioanelor de date catre si de la convertoarele si codecurile
(codoare/decodoare) A/D si D/A
 trimiterea si primirea de date catre si de la alte microprocesoare sau DSP-uri
 comunicatia cu alte periferice si componente externe
Exista doua mari categorii de interfete seriale: sincrone si asincrone. Un port serial sincron
transmite bitii de date impreuna cu un semnal de ceas. Receptorul foloseste acest semnal pentru a
decide cand sa preia datele primite serial.
In cazul interfetelor seriale asincrone datele nu sunt insotite de un semnal de ceas
suplimentar. Ele se bazeaza pe faptul ca receptorul va recupera semnalul de ceas din datele primite,
lucru care complica interfata seriala si limiteaza viteza maxima de transmisie a datelor. Porturile
seriale asincrone sunt de obicei folosite pentru comunicatii conform standardelor RS-232 sau RS-
422. Desi exista procesoare care poseda porturi seriale asincrone (de exemplu, Motorola -
DSP5600x si cateva procesoare din familia μPD7701x - NEC), numarul lor este redus.
Aproape toate procesoarele DSP asigura unul sau mai multe porturi de interfata seriala
sincrona pe chip. Tipic, fiecare port permite transmisia si receptionarea de informatii in mod serial.
In continuare sunt prezentate unele particularitati ale interfetelor seriale sincrone.

1
 Datele si tactul
Dupa cum s-a mentionat, un transmitator serial sincron trimite un semnal de ceas sub forma
unui bit pe care interfata seriala de la receptie il foloseste pentru a determina intervalul in care bitii
de date sunt valizi. Figura 10.1 reprezinta formele de unda pentru o transmisie seriala sincrona.
Toate interfetele sincrone presupun ca transmitatorul modifica datele pe unul din fronturile
semnalului de ceas (fie pe frontul crescator fie pe cel descrescator) si ca datele devin stabile (nu se
mai modifica) pe celalalt front. In figura, datele se schimba pe frontul crescator al ceasului si sunt
citite la receptie pe frontul descrescator. Totusi, diferite interfete seriale sau periferice pot prezenta
relatii diferite intre semnalul de ceas si date. Ca rezultat, unele porturi seriale incorporate in DSP-uri
permit programatorului sa aleaga “polaritatea” ceasului, de fapt care dintre fronturi controleaza
momentul schimbarii datelor.

Fig 10.1

Majoritatea, dar nu toate circuitele de interfata seriala, folosesc o logica pozitiva, respectiv
o tensiune pozitiva (tipic 3,3 V sau 5 V) pe linia seriala de date reprezinta un “1” logic, iar o
tensiune scazuta (aproape 0 V) reprezinta un “0” logic. La unele circuite DSP polaritatea datelor
poate fi selectata de programator.
O alta problema o reprezinta ordinea in care sunt transferati bitii de date. In figura 10.1 se
presupune ca, cuvintele de date au 8 biti lungime si sunt transmise cu cel mai putin semnificativ bit
(LSB) primul. Nu toate echipamentele care folosesc protocoale de comunicatii seriale accepta
aceasta conventie; la unele primul bit transmis este cel mai semnificativ bit (MSB). Prin urmare,
interfetele seriale ale unor DSP-uri permit selectarea directiei, respectiv a ordinii de transmisie.
Porturile seriale permit diverse lungimi ale cuvintelor de date. Valorile obisnuite sunt: 8 biti
(folosit in aplicatii din telefonie) si 16 biti (folosit la reprezentarea semnalului audio digital); totusi
unele porturi seriale accepta si alte lungimi ale cuvintelor.

 Sincronizarea cadrelor
Interfetele seriale sincrone folosesc un al treilea semnal, in plus fata de date si ceas, numit
semnal de sincronizare a cadrelor (frame sync.). Acest semnal indica receptorului primul bit al unui
2
cuvant de date transmis pe o linie seriala. Semnalul de sincronizare de cadre este cunoscut si sub
alte denumiri: unii producatori il numesc semnal de sincronizare de cuvinte (“word sync”) sau
semnal de inceput de cuvant (“start of word”).
Pentru semnalele de sincronizare de cadre sunt disponibile doua formate: lungime de bit
(“bit length”) si lungime de cuvant (“word length”). Aceste denumiri se refera la durata semnalului
de sincronizare de cadre raportata la durata unui bit de date. Un semnal de sincronizare de cadru de
tip „lungime de bit” dureaza timp de un bit si este transmis de obicei cu un bit inainte de
transmiterea primului bit al cuvantului de date, dar poate poate fi transmis si simultan cu
transmiterea primului bit al cuvantului de date. Semnalul de sincronizare de cadre aratat in figura
10.1 este un semnal de tip “lungime de bit”. Spre deosebire, un semnal un semnal de sincronizare de
cadre de tip “lungime de cuvant” dureaza intreaga lungime a cuvantului de date. Un exemplu de
astfel de semnal este aratat in figura 10.2. Majoritatea DSP-urilor ofera semnale de sincronizare de
cadre “lungime de bit” , dar exista si multe care ofera semnale de tip “lungime de cuvant”.
Anumite echipamente externe pot sa accepte un semnal de sincronizare de cadre cu polaritae
inversa, respectiv are un nivel logic 0 pe durata cuvintului de date si 1 pe durata pauzei dintre
cuvinte. Relativ putine DSP-uri permit alegerea polaritatii semnalului de sincronizare de cadre.

Fig. 10.2 si 10.3

 Cuvinte multiple per cadru


Unele porturi seriale pot transmite doar un cuvant pentru fiecare puls de sincronizare de
cadru. Exista si posibilitatea ca sa nu fie transmis un semnal de sincronicare de cadru pentru fiecare
cuvant de date. (De fapt, daca transferurile sunt periodice, sincronizarea de cadre este necesara doar
la initializarea transferului). Unele porturi seriale ale DSP transfera cuvinte multiple de date per
cadru, dupa cum se arata in figura 10.3. Acesta posibilitate este utila in special pentru convertoarele
stereo A/D si D/A deoarece ele transfera doua cuvinte de date per cadru: un esantion de pe canalul
3
stang si un esantion de pe canalul drept. Folosirea unui semnal de sincronizare de cadre de tip
“lungime de cuvant” este normala in acest caz deoarece starea semnalului de sincronizare de cadru
(ridicat sau scazut), poate fi folosita pentru identificarea canalului sursa sau destinatie (stang sau
drept).

 Sectiunile de receptie si transmisie independente


Un port serial este alcatuit de obicei dintr-o sectiune de receptie si una de transmisie. La
unele DSP-uri sectiunile de transmisie respectiv receptie sunt independente (adica transmitatorul si
receptorul pot avea semnale de ceas si de sincronizare de cadre independente), in timp ce pe altele
exista doar un semnal de sincronizare si unul de tact folosite in comun pentru transmisie si pentru
receptie. Prima solutie este insa cea mai flexibila (de exemplu, procesoarele TMS320C54).

 Generarea ceasului serial


Cand doua echipamente oarecare sunt conectate printr-o legatura seriala sincrona, ambele
trebuie sa foloseasca acelasi semnal de ceas. De aceea fie unul dintre cele doua echipamente trebuie
sa genereze ceasul sau acesta este generat de un al treilea echipament extern.
Unele DSP-uri au circuite pentru generarea unui semnal de ceas serial care este folosit de
portul serial sincron. Acesta se numeste suport de generarea ceasului serial sau de generare a ratei
de baud. Mecanismul de generare a tactului serial variaza mult intre DSP-uri; unele nu pot sa-si
genereze propriul ceas, altele au ceas propriu dar numai pentru transmisie dar nu si pentru receptie,
altele pot fi capabile sa genereze ceasuri multiple.
Generatoarele de ceas serial produc de obicei un semnal de ceas prin divizarea ceasului
principal al procesorului cu o valoare intraga. Gardul de control pe care utilizatorul il are asupra
frecventei ceasului generat variaza mult; unele DSP-uri asigura o plaja mare de reglare a frecventei
ceasului, in timp ce altele permit utilizatorului sa aleaga valori numai dintr-un set limitat de
frecvente.
Uzual generatoarele de ceas serial sunt constituite dintr-un circuit de prescalare, care
realizeaza o divizare cu un factor intreg a semnalului de ceas si un numarator programabil care
divizeaza mai fin frecventa ceasului principal. Prescalarea este realizata cu un numarator, care de
obicei poate diviza ceasul numai prin cateva valori fixate prin hardware, dintre care programatorul
poate sa aleaga. De exemplu familia Motorola DSP5600x permite utilizatorului sa selecteze un
factor de prescalare cu valoarea unu (nici o schimbare) sau 8, iar prescalarea folosita de
procesoarele AT&T DSP16xx asigura impartirea la 4, 12, 16 sau 20.
Partea de numarator a generatorului de ceas este de obicei un numarator descrescator
programabil, la care intrarea este iesirea circuitului de prescalare. De fiecare data cind numaratorul

4
ajunge la zero la iesire este generat un impuls, dupa care numaratorul se reincarca cu valoarea de
numarat.
Unele generatoare de ceas de pe DSP-uri nu includ un numarator programabil, fortand
utilizatorul sa selecteze una dintre frecvente de ceas disponibile. Altele asigura numai un numarator
(fara prescalare), care s-ar putea sa nu poata reduce frecventa de ceas la valoarea dorita.

 Suportul de multiplexare prin divizarea timpului


Porturile seriale sincrone sunt uneori folosite pentru conectarea in paralel a doua sau a mai
multor procesoare DSP la o magistrala comuna. Aceasta se face de obicei, folosind multiplexarea
prin divizarea timpului (TDM). Intr-o retea TDM, timpul este impartit in ferestre de timp (slots). Pe
durata unei ferestre, doar un singur un procesor poate transmite, iar celelalte trebuie sa receptioneze.
Figura 10.4 prezinta o retea TDM clasica. Procesoarele comunica printr-o magistrala de 3
linii: o linie de date, o linie de ceas si una de sincronizare cadre. Linia de sincronizare si cea de ceas
a fiecarui DSP este legata la linia corespondenta de pe bus, iar liniile de transmisie si de receptie ale
DSP-ului sunt ambele legate la linia de date.

Fig. 10.4 a, b

Figura 10.4(b) prezinta un set tipic de semnale seriale care sunt prezente intr-o retea TDM.
Un procesor (sau un circuit extern) este responsabil cu generarea semnalului de ceas si de
sincronizare de cadre. Semnalul de sincronizare de cadre este folosit pentru a indica inceputul unui
nou set ferestre de timp. Dupa sincronizarea de cadru, fiecare procesor trebuie sa tina cont de

5
numarul ferestrei de timp curente si sa transmita numai in fereastra atribuita lui. Un cuvant de date
(16 biti in figura) ar putea contine un numar de biti care sa indice DSP-ul destinatie (de exemplu 2
biti pentru 4 procesoare) in timp ce restul contin date. O alta varianta foloseste o a doua linie de date
pentru a transmite adresele de sursa si destinatie in paralel cu cuvantul de date.
Intr-o varianta minima, suportul TDM presupune ca procesorul este capabil sa-si puna linia
de transmisie de date a portului serial in stare de impedanta inalta atunci cand procesorul nu
transmite. Aceasta permite altor DSP-uri sa transmita date in timpul ferestrelor atribuite fara a
produce conflicte. Unele porturi seriale au un suport aditional, ca de exemplu un registru care face
portul serial sa transmita in timpul unei anumite ferestre de timp. Fara acest suport, procesorul ar
trebui sa primeasca datele transmise catre toate celelalte procesoare si sa elimine datele care nu ii
sunt adresate si pentru a stabili cand ii vine randul sa transmita.

 Suportul pentru compresie/decompresie


Porturile seriale sincrone sunt utilizate frecvent pentru interfatare cu codec-uri care nu sunt
pe chip, acestea fiind convertoare A/D si D/A cu scop special, folosite in telefonie si in aplicatiile
de voce de fidelitate scazuta. Codec-urile folosesc in mod normal cuvinte de date de 8 biti
reprezentand esantionare de 14 sau 16 biti de date audio comprimate. Schema de compresie este de
obicei bazata pe standardul μ-law (in SUA) sau A-law (in Europa). Procesul de compresie si
decompresie a datelor este numit compandare si este efectuat de obicei prin software cu tabele de
cautare. Unele DSP-uri ca de exemplu familia Analog Devices - ADSP-21xx si Motorola -
DSP56156 asigura suport de compandare integrat in interfetele lor seriale. Acest lucru poate
economisi timp de executie si memorie, eliberand procesorul de functiile de cautare in tabele. Este
interesant ca procesoarele AT&T - DSP32C si DSP32xx executa aceste conversii de format cu
suport integrat pe calea de date.

 Implicatii pentru proiectantul de sisteme


Dupa cum s-a aratat mai sus exista un mare numar de variante pentru comunicatia seriala
sincrona. De la variante obisnuite (care indica ordinea de transmitere a bitilor, forma semnalului de
sincronizare de cadre, polaritatea ceasului) pana la sisteme complexe (care asigura suport TDM sau
suport de compandare). Porturile seriale existente pe unele procesoare DSP sunt multiplu
configurabile, altele nu sunt. Aceasta sugereaza ca proiectantul de sisteme trebuie sa verifice cu
atentie compatibilitatea intre formatele de date suportate de portul serial al unui procesor si
perifericele cu care intentioneaza sa-l foloseasca, inainte de a lua decizii de proiectare care s-ar
putea dovedi greu de corectat mai tarziu in caz ca apare o incompatibilitate.

6
10.2 Porturile paralele

Un port paralel transmite si primeste simultan mai multi biti de date (tipic 8 sau 16 biti), pe
linii separate. Porturile paralele pot sa transfere de obicei date, mult mai repede decat cele seriale,
insa au nevoie de mai multe linii si pini pentru aceasta. Pe langa un numar mai mare de linii de
date, un port paralel de obicei include si linii de comanda a transferului (denumite linii de
handshake sau de strobe). Aceste linii indica unui echipament extern ca datele au fost transmise
catre port de catre DSP, sau invers.
Unele DSP-uri folosesc principala magistrala de date a procesorului ca port paralel. De
obicei fac aceasta rezervand o parte a spatiului lor de adrese (sau folosesc o instructiune speciala)
pentru acces I/O prin magistrala externa. Cand este accesata acea adresa de memorie (sau cind
instructiunea I/O este executata) este activat un pin special de strobe sau handshake, iar procesorul
executa un ciclu pe magistrala externa de citire sau scriere a unei date de la/catre un dispozitiv I/O.
Un echipament extern care monitorizeaza acest pin va sti ca trebuie sa citeasca sau sa scrie de la sau
catre pinii de date externi ai procesorului. Aceasta abordare este destul de obisnuita si este folosita
de majoritatea DSP-urilor Texas Instruments.
Alte DSP-uri, ca de exemplu familia AT&T DSP16xx, asigura porturi paralele separate de
magistrala externa a procesorului. Acesti pini pot fi folositi doar de portul paralel sau pot fi pusi in
comun cu alte periferice. Separand portul paralel de magistrala externa de date a procesorului se
poate simplifica interfatarea cu alte echipamente externe.

10.3 Porturi I/O de bit

Aceste intrari/iesiri se refera la un port paralel de I/O unde liniile pot fi programate
individual sa fie linii de intrare sau de iesire. Spre deosebire de porturile I/O traditionale, porturile
de I/O de bit nu au de obicei asociate linii de strobe sau handshake si pot sa nu aiba suport de
intreruperi. Prin program procesorul trebuie sa verifice portul pentru a stabili daca valorile de
intrare s-au schimbat. Acest port I/O este folosit in scop de control insa uneori este folosit si pentru
transfer de date.
Majoritatea DSP-urilor asigura cel putin una sau doua linii I/O de bit, desi altele pot sa aiba
citeva zeci. Pe unele procesoare porturile I/O de bit sunt puse in comun cu alti pini de periferice.
De exemplu pe Motorola DSP5600x unii dintre pinii asociati unui port serial pot fi configurati
pentru folosire ca port I/O de bit daca aplicatia nu are nevoie sa foloseasca portul serial. Pe alte
procesoare porturile I/O de bit pot sa foloseasca pini dedicati.
Multe procesoare au instructiuni speciale a caror executie depinde de starea portului I/O de
bit. De exemplu majoritatea procesoarelor Texas Instruments in virgula fixa, au un pin de intrare de

7
bit numit “BIO” si de asemenea poseda o instructiune speciala (BIOZ – „ramifica daca starea
portului I/O de bit este zero”) care se transfera controlul la adresa specificata de instructiune daca
starea pinului BIO este zero. In felul acesta poate fi monitorizata starea unui dispozitiv extern.
Procesorul TMS320C14 (Texas Instruments) si familia de DSP-uri AT&T DSP16xx au
porturi de I/O de bit mai sofisticate. Pe langa posibilitatea de a configura individual liniile ca intrari
sau iesiri si posibilitatea de a seta sau reseta bitii, aceste porturi I/O de bit verifica in mod continuu
starea porturilor I/O de bit pentru a stabili daca bitii de intrare se potrivesc unui model
preprogramat. Pe DSP16xx, rezultatul acestei comparatii seteaza starea a 4 fanioane: toti bitii se
potrivesc modelului, unii dintre biti se potrivesc modelului, unii dintre biti nu se potrivesc
modelului si nici un bit nu se potriveste modelului. Aceste fanioane pot fi apoi folosite in
instructiuni cu executie conditionata. De exemplu, folosind o unitate I/O de bit, o instructiune
DSP16xx poate incrementa conditionat un registru daca unul din doi biti specificati este setat.
Unitatea I/O de bit a procesorului TMS320C1x poate intrerupe procesorul cand modelul intrarilor
se potriveste cu modelul memorat.

10.4 Porturile gazda

De obicei sistemele multiprocesor complexe folosesc un procesor gazda pentru supervizare.


De aceea unele DSP-uri asigura un port gazda pentru conexiunea cu un microprocesor de uz general
sau cu un alt DSP. Porturile gazda sunt de obiciei porturi paralele bidirectionale specializate de 8
sau 16 biti care pot fi folosite pentru transferul de date intre DSP si procesorul gazda. In unele
cazuri portul gazda poate fi de asemenea folosit pentru a controla DSP-ul (adica sa-l forteze sa
execute instructiuni sau rutine de serviciu de intrerupere, sa citeasca sau sa scrie registrii sau
memoria, etc). Poate fi de asemenea folosit si pentru initializare.
Uzual portul gazda lucreaza in regim DMA; data prezenta la port este scrisa automat in
memoria DSP fara a-l opri, cu sau fara intreruperi. De asemenea este posibila receptia si transmisia
simultana a datelor. Portul gazda are instructiuni dedicate care usureaza folosirea. De exemplu
procesorul DSP32C (Lucent) poseda un port gazda care reprezinta efectiv o magistrala ISA de 6 sau
16 biti. Procesoarele DSP56301 (Motorola) si ADSP21060 (Analog Devices) au porturi gazda care
implementeaza magistrala PCI. In acest mod portul gazda asigura o interfata standardizata pentru
conectarea placilor DSP la diferite platforme gazda.
Exemple de procesoare care ofera porturi gazda: toate procesoarele Motorola, unele
procesoare Analog Devices, NEC μPD7701x, si procesoarele in virgula fixa recente de la Texas
Instruments. DSP Group asigura o macrocelula de port gazda pentru nucleele PineDSPCore si
OakDSPCore.

8
10.5 Porturi de comunicatie

Comunicatiile interprocesoare sunt necesare cind o aplicatie DSP necesita mai multe
procesoare sau acolo unde sunt folosite mai multe procesoare pentru a manipula mai multe secvente
de date interconectate. Un port de comunicatii este un port paralel special destinat pentru
comunicatia multiprocesor. Un port de comunicatii difera de un port gazda sau de un port paralel
obisnuit in doua feluri: In primul rand este facut pentru comunicatia interprocesor intre acelasi tip
de DSP-uri (spre deosebire de conectarea unor diferite tipuri de procesoare sau conectarea la
periferice). In al doilea rand porturile de comunicatii nu asigura in general functii speciale pentru
controlul procesorului DSP, cum este cazul porturilor gazda.
Procesoarele TMS320C4x (Texas Instruments) si ADSP-2106x (Analog Devices) sunt
singurele DSP-uri cu porturi de comunicatii. TMS320C40 si ADSP-2106x au 6 porturi de
comunicatii in timp ce TMS320C44 are 4; porturile TMS320C4x sunt fiecare de 8 biti latime in
timp porturile ADSP-2106x sunt de 4 biti latime. Din moment ce ambele procesoare au o lungime
a cuvantului de date de 32 de biti, porturile de comunicatii ale ambelor procesoare asigura suport
FIFO pentru fragmentarea si reasamblarea cuvintelor mai mari cand acestea sunt transmise prin
porturile de comunicatii relativ inguste.
Porturile de comunicatie au instructiuni dedicate care usureaza folosirea lor. Uzual ele
lucreaza in regim DMA; datele prezente la port sunt scrise automat in memoria DSP.

10.6 Circuitele timer

Practic toate DSP-urile au circuite timer programabile. Acestea sunt folosite de obicei ca o
sursa de intreruperi periodice (adica semnal de ceas pentru un sistem de operare in timp real), dar
sunt posibile si alte aplicatii. De exemplu, unele DSP-uri contin un pin de iesire care furnizeaza un
semnal rectangular cu o frecventa generata de catre timer. Deoarece frecventa este controlata
software, aceasta iesire poate fi considerata ca un oscilator controlat software, util pentru
implementarea unor cicluri de faza constanta
In esenta, un timer seamana mult cu un generator de ceas al unui port serial, fiind compus
dintr-o sursa de semnal de ceas, un cicuit de prescalare si un numarator dupa cum se arata in fig.
10.5. Sursa de semnal de ceas este de obicei ceasul principal al DSP-ului, insa unele DSP-uri
folosesc si un semnal extern ca sursa de semnal de ceas.
Scopul prescalatorului este de a reduce frecventa sursei de ceas astfel incat numaratorul sa
poata numara perioade mai lungi de timp. El face acest lucru divizand frecventa sursei de ceas cu
una din mai multe valori selectabile. De exemplu, familia de procesoare Analog Devices - ADSP-
21xx, prescalatorul foloseste o valoare pe 8 biti , divizand ceasul cu un factor de la 1 la 256, iar la

9
familia AT&T - DSP16xx prescalatorul foloseste o valoare reprezentata cu 4 biti pentru a diviza
ceasul.
Numaratorul foloseste acest semnal prescalat ca o sursa de semnal de ceas, in mod obisnuit
numarand descrescator de la o valoare prestabilita pe fiecare front crescator al ceasului.
Numaratorul intrerupe de obicei procesorul cind ajunge la zero. In acest moment numaratorul poate
sa se reancarce cu valoarea anterioara sau poate sa se opreasca, functie de configuratie.
Majoritatea registrilor numarator folosite de circuitele DSP au 16 biti, ceea ce asigura un
domeniu larg de frecvente care pot fi generate. Pe majoritatea circuitelor, utilizatorul poate citi
valoarea stocata in registrul numarator. Aceasta permite DSP-ului sa citeasca registrul numarator la
inceputul si la sfarsitul unui eveniment, calculand astfel durata acestuia.
La procesoarele DSP56000 si DSP56001 (Motorola), generatorul de tact este conectat cu
generatorul de ceas serial asincron. Pentru a folosi si generatorul de tact si generatorul serial de
ceas, pe aceste DSP-uri utilizatorul trebuie sa aleaga o frecventa comuna acceptabila pentru ambele
aplicatii.
Dupa cum s-a mentionat, unele DSP-uri, in mod optional, pot oferi pe un pin de iesire
semnalul de ceas generat. Acest lucru poate fi folositor fie pentru un circuit PLL controlat software
fie pur si simplu pentru un sintetizator de frecventa. Totusi majoritatea DSP-urilor au generatoare
de tact capabile sa genereze doar intreruperi si care nu au pini de iesire.

Fig. 10.5

10.7 Convertoarele A/D si D/A integrate

Unele DSP-uri folosite in aplicatii de voce (de exemplu telefoane digitale celulare sau roboti
telefonici) au convertoare A/D si D/A integrate (numite codec–uri), care pot realiza si compandarea
esantioanelor. Astfel esantioanele semnalului reprezentate in mod normal cu 14÷16 biti sunt
comprimate de regula la 8 biti. Compandarea se efectueaza dupa o anumita regula (uzual legea A
sau legea µ).
Exista un numar de criterii de evaluare a performantelor codec-urilor incorporate:

10
- rezolutia (exprimata in biti) de reprezentare binara a valorii esantioanelor. Tipic, codec-
urile asigura o rezolutie de 8 sau de 16 biti;
- rata de esantionare. Majoritatea codec-urilor produc si accepta esantioane la o rata de 8
Kes/s. Procesoarele din familia Motorola DSP561xx, produc sau primesc esantioane la o rata
cuprinsa intre 16 si 24 Kes/s. In unele cazuri procesorul DSP poate sa proceseze datele pentru a le
reesantiona la o rata dorita;
- raportul semnal/zgomot+distorsiuni. Acest parametru este raportul dintre puterea
semnalului (tipic o sinusoida) si puterea zgomotului si a distorsiunilor introduse de codec. El
reprezinta o masura a fidelitatii codec-ului. Valoarea acestui raport creste odata cu semnalul de
intrare pina la o valoare maxima si apoi scade rapid. De obicei producatorii indica aceasta valoare
maxima care este apropiata de 65 dB. Valoarea acestui parametru poate fi specificata si separat
pentru canalul de intrare respectiv iesire a codec-ului;
- numarul canalelor de intrare analogice. Majoritatea codec-urilor pe incorporate au la
intrare un circuit de multiplexare analogic care permite DSP-ului sa accepte mai multe surse de
semnal;
- castigul de iesire programabil. Codec-urile asigura de obicei castig de iesire programabil
insa domeniul de castig si dimensiunea pasului poate varia;
- oprirea analogica. Un avantaj semnificativ pentru controlul puterii consumate de procesor
este posibilitatea de a opri portiunea analogica a codec-ului cand aceasta nu este folosita.
Doua familii de procesoare cu suport A/D si D/A incorporat in chip sunt DSP561xx
(Motorola) si ADSP-21msp5x (Analog Devices). Ambele familii poseda codec-uri cu rezolutie de
16 biti si o rata de esantionare efectiva de 8 kHz.

10.8 Intreruperile externe

Majoritatea DSP-urilor poseda linii de intreruperi externe. Acestea linii care pot fi activate
de un dispozitiv pentru a comanda intreruperea procesorului. Liniile de intrerupere sunt de doua
categorii:
- cu declansare de front. Un front crescator sau descrescator pe pin activeaza intreruperea.
- cu declansare pe palier. Un nivel inalt sau scazut pe pin activeaza intreruperea.
Unele DSP-uri asigura linii numai cu declansare de nivel sau de front, in timp ce altele
permit liniei de intrerupere sa fie configurata sa fie oricare din cele doua. In general, intreruperile
declansate pe front sunt executate mai rapid decit intreruperile declansate de palier care pot pune
restrictii asupra duratei minime de activare a liniei pentru ca cererea sa fie recunoscuta.
Numarul de linii de intrerupere variaza pentru diferite procesoare, dar majoritatea poseda
intre una si patru linii de intrerupere externe. In general nucleele DSP poseda un numar mai mare de

11
linii de intrerupere decat procesoarele incapsulate. Aceasta deoarece majoritatea DSP-urilor
incapsulate au si un numar de periferice incorporate care folosesc propriile linii de intrerupere
interne. Spre deosebire, majoritatea nucleelor DSP nu au periferice incorporate pe nucleu. Cand
periferice sunt adaugate in afara nucleului, ele folosesc propriile linii de intrerupere.

10.9 Implicatiile pentru proiectantul de sisteme

Perifericele incorporate si interfetele pentru perifericele externe sunt consideratii importante


la selectia unui DSP. Performantele si numarul interfetelor asigurate de diferite DSP-uri pot avea un
impact semnificativ asupra posibilitatii de folosire in aplicatii specifice. Totusi, prezenta unor
interfete I/O prea flexibile sau nenecesare sporesc costul procesorului. Ca si in cazul altor facilitati
ale procesoarelor DSP, mai mult nu inseamna neaparat mai bine. Perifericele incorporate si
interfetele pentru periferice trebuie evaluate cu grija impreuna cu alte specificatii ale procesorului
cum ar fi performanta aritmetica, latimea de banda a memoriei, s.a.m.d.

10.10 Exemple

I. Familia TMS320C54 (TI)

12
Periferice incorporate:
 Generator de stari de wait programabil si comutator de bancuri de memorie programabil
 Generator de tact programabil oscilator intern si cu circuit PLL
 Port serial ful duplex cu transfer pe 8/16 biti
 Port serial cu multiplexare prin divizarea timpului
 Port serial cu buffer
 Port paralel gazda pe 8 biti
 Timmer pe 16 biti
Generatorul de stari de wait programabil poate fi utilizat pentru extensia ciclului extern de
magistrala cu pina la 7 cicli masina pentru sincronizarea procesorului cu memoriile externe sau cu
dispozitivele I/O mai lente. Starile de wait generate prin software nu necesita hardware extern
suplimentar.
Comutarea programabila a bancurilor de memorie poate fi utilizata pentru a insera automat un
ciclu atunci cind se face comutarea de la un banc de memorie de cod sau de date la alt banc. Acest
ciclu suplimentar permite bancului de memorie sa elibereze magistrala inainte ca un alt dispozitiv sa
o foloseasca. In felul acesta se elimina posibilitatea aparitiei conflictelor de magistrala.
Portul gazda de 8 biti este folosit pentru conectarea procesorului gazda cu un alt dispozitiv DSP.
Prin intermediul unei memorii interne de 2KB asociate portului gazda sunt schimbate informatii
intre gazda si un dispozitiv DSP. Memoria portului gazda poate fi accesata atit de procesorul gazda
cit si de circuitul DSP.
Procesorul are 3 porturi seriale: un port serial ful duplex standard, un port serial cu multiplexare
prin divizarea timpului (TDM), un port serial cu buffer.
Sectiunile pentru transmisie si pentru receptie ale portului serial standard au semnale de tact, de
sincronizare a cadrelor si registre pentru serializsare/deserializare separate. Functionarea poate fi
gestionata prin software si cu ajutorul sistemului de intreruperi mascabile.
Portul serial cu multiplexare TDM permite circuitului sa comunice cu pina la 7 dispozitive care
poseda port TDM.
Portul serial cu buffer este o varianta mai performanta a portului serial standard. Prin intermediul
unei unitati speciale autobuffer portul poate citi/scrie direct date din/in memoria circuitului folosind
o magistrala proprie. In acest fel se accelereaza transferul de date cu memoria. Portul poate
transfera pachete de date de 8, 10, 12, 16 biti.
Procesorul are un timmer de 16 biti cu circuit de prescalare de 4 biti. Timmerul lucreaza prin
decrementare. Cind ajunge la valoarea zero timmerul genereaza o cerere de intrerupere.
Generatorul de tact este constituit dintr-un oscilator si un circuit PLL. Generatorul de tact necesita
un semnal de referinta care poate fi generat intern cu un cristal de cuart sau este primit din exterior.
Semnalul de referinta poate fi divizat intern sau poate fi multiplicat cu circuitul PLL pentru a obtine

13
tactul procesorului. Circuitul PLL este un sistem adaptiv care mentine semnalul de tact in
sincronism cu semnalul de referinta. Cind se folosesc instructiunile pentru reducerea consumului
(IDLE1/IDLE2/IDLE3) circuitul PLL realizeaza reducerea frecventei de tact pentru scaderea
consumului.

14
15
II. DSP 56002 (Motorola)

Dispozitive periferice:

 Port gazda de 15 biti cu acces DMA. Liniile pot fi folosite si ca porturi I/O de uz general
 Port serial sincron/asincron cu 6 canale, cu sectiuni separate de transmisie sau receptie
 Port serial de comunicatie cu 3 canale
 Timer/contor de evenimente de 24 de biti
 Suport TDM cu pina la 32 de sloturi de timp selectabile
 Sintetizator de frecventa cu bucla PLL pentru frecvente cuprinse intre 12,2 KHz si 80 MHz.

III. ADSP 21xx (Analog Devices)

1.3 ON-CHIP PERIPHERALS


This section describes the additional functional units which are included
in various processors of the ADSP-2100 family.
1.3.1 Serial Ports
Most ADSP-21xx processors have two bidirectional, double-buffered serial
ports (SPORTs) for serial communications. The SPORTs are synchronous
and use framing signals to control data flow. Each SPORT can generate its
serial clock internally or use an external clock. The framing sync signals
may be generated internally or by an external device. Word lengths may
vary from three to sixteen bits. One serial port, SPORT0, has a

16
multichannel capability that allows the receiving or transmitting of
arbitrary data words from a 24-word or 32-word bitstream. The other
serial port, SPORT1, may optionally be configured as two additional
external interrupt pins (IRQ1 and IRQ0)and the Flag Out (FO) and Flag In
(FI) pins.
1.3.2 Timer
The programmable interval timer provides periodic interrupt generation.
An 8-bit prescaler register allows the timer to decrement a 16-bit count
register over a range from each cycle to every 256 cycles. An interrupt is
generated when this count register reaches zero. The count register is
automatically reloaded from a 16-bit period register and the count
resumes immediately.
1.3.3 Host Interface Port (ADSP-2111, ADSP-2171, ADSP-21msp5x)
The host interface port (HIP) is a parallel I/O port that allows for an easy
connection to a host processor. Through the HIP, an ADSP-21xx DSP can
be used as a memory-mapped peripheral of the host. The HIP operates in
parallel with and asynchronous to the ADSP-21xx’s computational core
and internal memory. The host interface port consists of registers through
which the ADSP-21xx and the host processor pass data and status
information. The HIP can be configured for: an 8-bit data bus or 16-bit
data bus; a multiplexed address/data bus or separate address and data
buses; and separate read and write strobes or a read/write strobe and a
data strobe.
1.3.4 DMA Ports (ADSP-2181)
The ADSP-2181 contains two DMA ports, and Internal DMA Port and a
Byte DMA Port. The IDMA port provides an efficient means of
communication between a host system and the DSP. The port is used to
access the on-chip program memory and data memory of the DSP with
only one cycle per word of overhead. The IDMA port has a 16-bit
multiplexed address and data bus and supports 24-bit program memory.
The IDMA port is completely asynchronous and can be written to while
the ADSP-2181 is operating at full speed.
The internal memory address is latched and then automatically
incremented after each IDMA transaction. An external device can
therefore access a block of sequentially addressed memory by specifying
only the starting address of the block.
The byte memory DMA controller allows loading and storing of program
instructions and data using the byte memory space. The BDMA circuit is
able to access the byte memory space while the processor is operating
normally and steals only one processor cycle per 8-, 16- or 24-bit word
transferred.
1.3.5 Analog Interface
The analog interface of the ADSP-21msp58/59 consists of input amplifiers
and a 16-bit sigma-delta analog-to-digital converter (ADC) as well as a
sigma-delta digital-to-analog converter (DAC) and a differential output
amplifier.

17
Capitolul 11

Facilitati pentru depanare si gestionarea consumului

Depanarea reprezinta una dintre cele mai dificile etape ale proiectarii. Acest lucru este
valabil in mod special pentru sistemele integrate care lucreaza in timp real, la care accesul la
componentele depanate poate fi foarte limitat si la care poate fi dificil de rulat in alt mod, decat in
timp real. Ca rezultat, elementele care faciliteaza depanarea au devenit tot mai importante pe
masura ce a crescut complexitatea sistemelor.
Una dintre cele mai importante inovatii in acet sens este emularea in circuit bazata pe
scanare (ICE), care combina circuitele de depanare de pe procesor cu pini dedicati pentru
depanare/testare, pentru a permite depanarea functionarii DSP-ului in timp ce acesta este instalat in
sistemul tinta. Depanarea prin emulare in circuit a devenit destul de populara la DSP-uri in ultimii
ani, desi multe alte abordari relative la depanare sunt inca in folosinta (emularea in circuit pe baza
de pod, depanarea bazata pe monitorizare).
In capitol vor fi prezentate facilitatile de depanare bazate pe verificare oferite pe chip.

11.1 Facilitatile de depanare/emulare

Emularea bazata pe verificare foloseste un mic numar de pini dedicati (pana la 4) si o logica
dedicata pentru depanare si emulare in circuit, dupa cum se arata in figura 11.1. Interfetele bazate
pe verificare se conecteaza de obicei la un calculator (PC sau statie de lucru) gazda cu o placa de
interfata speciala. Software-ul de depanare executat pe PC sau pe statia de lucru permite
utilizatorului sa descarce programe, sa examineze si sa modifice registrii si memoria, sa puna sau sa
stearga puncte de intrerupere si sa efectueze alte functii pe DSP in timp ce este instalat in sistemul
tinta.

1
Emularea bazata pe verificare este mult mai putin invaziva decat alte abordari referitoare la
emularea in circuit. Nu are nevoie de scoaterea fizica a procesorului din sistemul tinta si de
inlocuirea acestuia cu un procesor emulator impreuna cu componentele anexa. In loc de aceasta,
placa de interfata pentru depanare din computerul gazda se conecteaza la un conector dedicat din
sistemul tinta, rezultand mai putine legaturi fizice si probleme electrice.
Alt avantaj al depanarii pe baza de verificare este acela ca circuitul de depanare dedicat de
pe chip asigura vizibilitatea unor aspecte ale executiei procesorului care nu sunt disponibile cu
tehnicile conventionale. De exemplu circuitele de depanare pe baza de pod de la Motorola permit
utilizatorului sa examineze continutul liniei de transmisie a procesorului dupa generarea unei
intreruperi.
Emularea pe baza de verificare este frecvent asociata cu “verificarea pe granita” o tehnica
de testare devenita populara in anii 1980. Testarea prin verificarea pe granita (boundary-scan test),
cunoscuta si ca standardul JTAG, se refera la standardul IEEE 1149.1 care defineste un set de reguli
de proiectare pentru facilitarea testarii, programarii si depanarii dispozitivelor semiconductoare la
nivel de cip, de placa si la nivel de sistem. Testarea prin verificarea pe granita presupune
introducerea in cip a unor circuite speciale de test care sa faciliteze testarea circuitului la nivel de
placa si a placii insasi. Aceste circuite suplimentare permit scanarea intrarilor si a iesirilor intr-o
maniera seriala, prevazind circuitul doar cu un numar mic de pini de acces. Beneficiile acestei
tehnici de testare sunt mai multe: reducerea semnificativa a numarului de puncte fizice de testare de
pe placa, cresterea densitatii componentelor pe placa, reducerea timpului de acces pe piata a
produsului, reducerea costului legat de operatiile de testare, cresterea eficientei productiei,
automatizarea operatiei de testare, s.a. Un dispozitiv care satisface cerintele standardului JTAG
poseda: 1) o celula de margine la fiecare linie I/O, 2) o cale de scanare care conecteaza aceste celule
in serie, 3) 4 sau 5 pini suplimentari pentru manipularea semnalelor JTAG, 4) un port pentru
accesare care controleaza semnalele de testare (Test Access Port – TAP), 5) un controler cu 16 stari
a acestui port pentru controlul stadiului operatiei de testare. In mod normal de functionare celulele
de margine permit trecerea semnalelor de intrare/iesire catre/de la pinii I/O. Cind dispozitivul este
plasat in modul „Test” celulele de margine devin active permitind introducerea sau captura
semnalelor de test. Celulele de margine sunt realizate din registre de deplasare cu multiplexare
localizate la periferia circuitului. Caracteristicile logicii de testare a unui circuit care satisface
cpecificatiile standardului JTAG sunt definite intr-un fisier extern denumit BSDL (Boundary-Scan
Description Language) care este oferit de producatorul circuitului si este folosit pentru definirea si
generarea algoritmilor pentru realizarea operatiei de testare. Testarea unui dispozitiv sau a unei
placi pe baza acestei tehnologii consta din urmatoarele etape: a) testerul extern aplica la intrarile
dispozitivului secventele de test, b) celulele de margine de la intrari capteaza semnalele de intrare,

2
c) datele de intrare sunt scanate sau deplasate serial in nucleul dispozitivului, d) datele de iesire
rezultate sunt preluate serial de la nucleul dispozitivului si e) testerul extern compara datele de
iesire cu valorile martor. In felul acesta pot fi identificate defecte de tipul: scurtcircuite sau
intreruperi, lipsa unor componente, componente prost plasate sau defecte. Verificarea pe granita
asigura un mijloc neinvaziv de testare a interconectarii intre circuite, simplu si eficient.
Este interesant ca majoritatea procesoarelor DSP care suporta depanarea pe chip bazata pe
interfata JTAG nu permite verificarea pe granita. Microprocesoarele si DSP-urile au din ce in ce
mai mult capabilitati de depanare pe baza de verificare. DSP-urile care folosesc JTAG pentru
depanarea pe baza de verificare includ: familia ADSP-210xx (Analog Devices), familia DSP16xx
(AT&T), familia μPD7701x (NEC), familiile TMS320C2xx, TMS320C3x, TMS320C4x,
TMS320C5x, TMS320C54x, TMS320C80 (Texas Instruments). Toate procesoarele Motorola cu
exceptia familiilor DSP56000, DSP56001 si noua familie DSP563xx, au o facilitate de depanare
bazata pe verificare numita OnCE (On Chip Emulation) care foloseste un protocol serial propriu,
similar cu JTAG. (DSP56000 si DSP56001 nu au emulare pe chip, iar familia DSP563xx foloseste
JTAG pentru a accesa propriile facilitati de emulare de pe chip).
Capabilitatile de depanare hardware existente pe chip variaza foarte mult. Ca un minim,
toate procesoarele cu depanare hardware pe chip permit utilizatorului sa citeasca si sa scrie
registrele procesorului si memoria. Majoritatea asigura unul sau doua puncte de intrerupere (numite
si puncte de intrerupere cu potrivire de adresa). Aceste puncte de intrerupere sunt implementate
incarcand o adresa in componentele de depanare de pe chip, spre deosebire de inlocuirea unei
instructiuni din programul procesorului cu o instructiune software capcana. Un avantaj al punctelor
de intrerupere hard pe unele procesoare este ca pot fi de asemenea folosite pentru a opri procesorul
cand acesta incearca sa acceseze o locatie de memorie de date (spre deosebire de o locatie a
memoriei de program). Componentele de depanare de pe chip asigura un “tampon de urmarire a
discontinuitatilor de program”, care economiseste valorile numaratorului de program pentru
ultimele cateva momente de ramificare sau cand procesorul a raspuns unei intreruperi. Aceasta
informatie de anterioritate poate fi folositoare in a intelege de ce procesorul a ajuns sa execute o
anumita portiune de cod.
Furnizorii de procesoare DSP nu descriu de obicei posibilitatile exacte ale componentelor de
emulare pe chip in documentatia de procesor. (Motorola este o exceptie, asigurand o documentatie
detaliata asupra portului “OnCE”). In loc de aceasta, utilizatorul trebuie sa isi dea seama de
capabilitatile prezente dupa ceea ce ofera uneltele de emulare software ale procesorului.

3
11.2 Consumul de energie si managementul acestuia

Numarul de aplicatii DSP portabile a crescut dramatic in ultimii ani. DSP-urile sunt acum
folosite in mod obisnuit in echipamentele portabile (telefoanele celulare, pagere, PDA-uri,
computere laptop si echipamente audio). Toate aceste aplicatii necesita alimentare de la baterii, iar
viata bateriei este o diferentiere cheie intre produse. Ca rezultat, proiectantii cauta mereu noi moduri
de a reduce consumul.
Furnizorii de DSP-uri au raspuns acestei provocari in multiple feluri. In primul rand,
aproape toti producatorii au introdus DSP-uri care functioneaza la tensiune scazuta, capabile de a fi
folosite la tensiune de alimentare nominala de 3 sau 3,3 V. In al doilea rand, multi furnizori au
adaugat capabilitati de management al puterii sub control soft sau hard. Ambele variante sunt
discutate in continuare.

11.2.1 Functionarea la tensiuni scazute


O prima cale de reduceere a consumului consta in folosirea unor tehnologii adecvate de
fabricatie a circuitelor. Din acest punct de vedere tehnologiile CMOS sunt caracterizate printr-un
consum redus de energie.
Unul dintre primii pasi pe care furnizorii de DSP-uri i-au facut pentru a reduce consumul de
putere a fost de a reduce tensiunea de alimentare a circuitului. Practic toate procesoarele DSP
actuale sunt fabricate cu tehnologie CMOS. Deoarece consumul de energie in circuite CMOS este
proportional cu patratul tensiunii, s-au realizat economii mari reducand tensiunea de alimentare.
Majoritatea producatorilor de DSP-uri ofera acum procesoare care folosesc o sursa nominala de
3,3V (numita three-volt parts), care reduce consumul de putere cu 56% comparativ cu acelasi
procesor operand la 5V. Unele DSP-uri de tensiune scazuta (ca de exemplu cele de la AT&T si
Texas Instruments) pot functiona cu o tensiune de alimentare nominala de pana la 3V, reducand si
mai mult consumul de putere.

Nota
Folosim termenul “nominal” cand ne referim la tensiunea de alimentare ale DSP-urilor. In
mod tipic, componentele electronice cum sunt procesoarele DSP, pot functiona intr-o gama de +/-
10% in jurul tensiunii de alimentare nominale. Astfel, un echipament de 3,3V poate opera intre 3 si
3,6V. Similar un echipament de 3V poate opera intre 2,7 si 3,3V. Intr-o incercare de a castiga un
avantaj pe piata, unii comercianti au declarat tensiunea de alimentare minima in descrierea
procesoarelor. Acest lucru poate crea o confuzie: o componenta descrisa ca functionand la 3V

4
inseamna ca tensiunea sa nominala de alimentare este 3V sau 3,3V? Pentru consistenta, vom folosi
valori de tensiuni nominale pe parcursul prezentarii.
In unele cazuri, DSP-uri de tensiune scazuta, sunt de fapt componente de 5V capabile de a
functiona la tensiuni mai scazute. In astfel de cazuri, tactul sistemului trebuie redus, pentru a
permite operarea la tensiuni mai joase. Furnizorii de DSP-uri au inceput de asemenea sa introduca
variante “adevarate” de 3V a DSP-urilor lor, capabile de a functiona la viteza maxima la 3 sau 3,3V.
Procesoare DSP cu tensiune scazuta includ: familiile AT&T - DSP16xx si DSP32xx;
ADSP-2103 ADSP-2173, ADSP-2183 si ADSP-2106x (Analog Devices), PineDSPCore si
OakDSPCore (DSP Group), IBM - MDSP2780, Motorola - DSP56L002 si DSP563xx; NEC -
μPD77015, μPD77017 si μPD77018, SGS-Thomson - D950-CORE, Texas Instruments -
TMS320LC3x, TMS320LC5x, TMS320VC54x si TMS320C80.

11.2.2 Posibilitatile de management a energiei


Pe langa functionarea la tensiune scazuta, multe procesoare incorporeaza posibilitati de
management a energiei. Aceste capabilitati asigura controlul asupra frecventei tactului principal al
procesorului sau asupra unor parti ale procesorului care primesc semnalul de tact. Aceste abordari
functioneaza din doua motive. In primul rand circuitele CMOS consuma energie proportionala
liniar cu frecventa de tact. Cu cat frecventa tactului este mai mare, cu atat echipamentul consuma
mai multa energie. Astfel, reducand frecventa de tact sau limitand portiunile din procesor care
primesc semnal de tact se reduce consumul de energie.

 Modurile adormit si asteptare


Aceste moduri, in mod tipic, opresc ceasul procesorului la toate sectiunile procesorului (cu
cateva exceptii). In timp ce este adormit (sleep mode), procesorul nu functioneaza; pur si simplu sta
in asteptare, pentru un eveniment care produce „trezirea”. In majoritatea cazurilor acest eveniment
poate fi orice tip de intrerupere nemascabila. Daca intreruperea vine de la perifericele de pe chip,
asta implica ca acele periferice sunt active si primesc un semnal de tact, crescand consumul de
putere. Ca rezultat, unele procesoare au doua moduri de adormit: unul in care perifericele de pe chip
sunt activate (si pot intrerupe, deci „trezi”, procesorul) si unul in care perifericele de pe chip sunt
dezactivate. In ultimul mod, numai o intrerupere externa (care poate veni de la unul sau doi pini
speciali), poate „trezi” procesorul. De fapt, unele procesoare pot fi „trezite” din anumite moduri
adormit, numai prin activarea semnalului RESET.
In modurile adormit se intra in mod normal prin executia unei instructiuni speciale (IDLE,
sau alt nume similar), sau prin setarea unui bit intr-un registru de control. Unele procesoare asigura
si pini pe care ii poate folosi un echipament extern pentru a forta aducerea procesorului intr-o stare

5
de consum redus. Procesoarele care au pini de comanda a regimului de consum redus pot avea si un
pin de confirmare a regimului de consum redus prin care semnaleaza circuitelor externe ca
procesorul a intrat in modul adormit.
Procesoarele din familia TMS320C5x (TI) au un regim de consum redus (power-down
mode) in care consumul este sensibil mai redus decit in regimul normal de lucru. Procesorul intra
in acest regim prin executia instructiunilor IDLE1/IDLE2 sau prin activarea liniei HOLD cind bitul
de stare HM este setat. Cind procesorul este comutat in regimul de consum redus toata starea
interna este conservata; aceasta permite reluarea functionarii cind procesorul iese din acest regim.
Dupa executia instructiunii IDLE1 perifericele interne continua sa functioneze; in schimb, cind este
executata instructiunea IDLE2 tot procesorul, inclusiv perifericele interne, intra in regim de consum
redus.
Latenta de trezire poate fi o preocupare in unele aplicatii. Latenta de trezire este timpul
necesar pentru a iesi dintr-un mod adormit si a relua executia normala. In cazurile cand procesorul
foloseste un ceas extern ca ceas principal, aceasta latenta este de obicei de 1 sau 2 cicluri
instructiune. Dupa cum se va discuta ulterior, un procesor poate folosi un oscilator intern in
combinatie cu un cristal extern pentru a genera un semnal de ceas. In acest caz, daca modul adormit
dezactiveaza oscilatorul intern, o latenta de trezire de mii (chiar zeci de mii) de cicluri de
instructiuni poate fi necesara pana cand oscilatorul se stabilizeaza. O problema similara are loc cu
ceasurile comandate cu circuite PLL (oscilatoare cu calare de faza) de pe chip: oprirea PLL-ului
reduce consumul de putere, insa PLL-ul poate avea nevoie de un interval semnificativ de timp cand
reporneste.

 Controlul frecventei ceasului


Multe aplicatii nu au nevoie de toata viteza de executie a procesorului la toate momentele de
timp. De exemplu, un telefon celular sta majoritatea timpului in asteptare. Chiar atunci cand este
folosit, are nevoie de toata puterea de procesare doar cand se vorbeste nu si in perioadele de liniste.
Pentru a exploata aceasta observatie, mai multe DSP-uri permit programatorului un anumit
control soft asupra frecventei ceasului principal al DSP-ului. Aceasta reprezinta un compromis intre
operarea la intreaga viteza si un mod adormit, din moment ce DSP-ul executa inca instructiuni si
consuma energie, insa la o rata redusa.
Cele doua mecanisme pentru controlul ceasului sunt: divizoarele de ceas si sursele de ceas
de viteza mica. Un divizor de ceas, permite reducerea frecventei ceasului sistemului cu un factor
programabil, care reduce viteza de executie si consumul de putere proportional. De exemplu,
familiile DSP5600x si DSP56166 (Motorola), asigura divizoare de ceas de 4 biti care permit
frecventei ceasului principal sa fie impartita in una din cele 16 valori. Similar, DSP Group ofera

6
macrocelule de divizare a ceasului pentru nucleele DSP, PineDSPCore si OakDSPCore.
TMS320LC31 si TMS320C32 (Texas Instruments) au o instructiune LOPOWER care reduce
frecventa de ceas cu factorul 16.
Unele DSP-uri (de exemplu, procesoarele familiei AT&T - DSP16xx) pot folosi un oscilator
pe chip de mica viteza ca sursa de ceas principal. Desi nu e la fel de flexibil ca un divizor de ceas,
care suporta multiple viteze, totusi e suficient pentru multe aplicatii.

 Perifericele si controlul operatiilor I/O


Dupa cum s-a mentionat, cu cat exista mai multe circuite CMOS cu semnal de ceas, cu atat
cipul va consuma mai multa energie. Deoarece multe aplicatii nu folosesc (simultan) toate
perifericele de pe chip, aproape toate DSP-urile asigura cai de a dezactiva perifericele nefolosite.
Pe langa acestea, sectiunile analogice ale unor periferice cum ar fi convertoare A/D si D/A
de pe chip pot sa consume putere chiar daca nu mai beneficiaza de semnal de ceas. Pentru a evita
acest lucru, unele DSP-uri au moduri speciale adormit pentru circuitele lor analogice. DSP-urile cu
aceasta capabilitate includ: procesoarele Analog Devices - ADSP-21msp5x si familia Motorola -
DSP561xx.

 Dezactivarea pinilor de iesire de ceas nefolositi


Un numar de chipuri DSP asigura un pin de iesire de ceas. Acest pin asigura un semnal de
ceas dreptunghiular la frecventa ceasului principal al procesorului (sau o frecventa apropiata – de
exemplu, o jumatate din aceasta) si e folosit pentru furnizarea unui semnal ce ceas pentru circuitele
externe, sincronizat cu semnalul de ceas principal al procesorului.
Unele DSP-uri pot dezactiva selectiv acest pin. Daca semnalul de ceas generat nu este
folosit, sau este folosit numai ocazional, dezactivarea liniei respective reduce consumul; puterea
economisita depinde de sarcina capacitiva externa de pe pin. Pe langa aceasta, dezactivarea ceasului
de iesire reduce si interferentele electromagnetice generate de DSP.
Familiile Motorola - DSP5600x, DSP56166 si AT&T - DSP16xx sunt exemple de
procesoare care isi pot dezactiva liniile de iesire.

7
Capitolul 13

Procesoare digitale de semnal in virgula fixa

Dezvoltarea rapida a procesoarelor digitale de semnal (DSP) este in parte explicata de


flexibilitatea, rapiditatea si pretul de cost scazut oferit pentru dezvoltarea aplicatiilor. Printre
domeniile majore de utilizare se numara cel al retelelor precum si domeniul
telecomunicatiilor. Procesoarele de semnal sunt folosite in infrastructura sistemelor fara/cu
fir pentru comunicatia de voce (sau video) pe Internet. De asemenea, in domeniul
comunicatiilor, aplicatiile DSP se regasesc pe scara larga in infrastructura, in echipamentele
portabile si in produsele de larg consum.
Familia de procesoare in virgula fixa oferita de Texas Instruments cuprinde trei
generatii: TMS320C2000 (C24x si C28x), TMS320C5000 (C54x si C55x) si TMS320C6000
(C62x si C64x). Fiecare generatie din familia TMS320 consta dintr-un nucleu (CPU) similar
impreuna cu diferite configuratii de memorie si dispozitive periferice. Generatia
TMS320C2000 integreaza facilitati de calcul si periferice similare microcontrolerelor si este
optimizata pentru aplicatii de control, cum sunt: comanda a motoarelor electrice, sursele de
alimentare cu comanda digitala, sisteme de senzori inteligenti. Generatia TMS320C5000 este
destinata pentru realizarea eficienta a produselor de larg consum, permitind totodata
adaugarea unor noi facilitati cum sunt aplicatiile pentru Internetul mobil si pentru alte produse
electronice portabile. TMS320C6000 este generatia destinata aplicatiilor de inalta
performanta, optimizata pentru usurarea programarii in limbaje de nivel inalt. Procesoarele
familiei sunt destinate aplicatiilor care cer un volum mare de calcule, cum sunt cele legate de
prelucarea imaginilor, infrastructura retelelor de comunicatie multicanal de banda larga din
generatia 3G, echipamente digitale de abonat si de cablu.

Familia TMS320C2000
TMS320C2000 este o familie de procesoare care opereaza in virgula fixa pe 16/32
biti. Arhitectura Harvard a familiei TMS320 este destinata special aplicatiilor de prelucrare
digitala a semnalelor in timp real. Procesoarele din generatia C2000 ofera facilitati de
prelucrare de inalta preformanta cu periferice de tip microcontroler la un pret de cost redus.
In prezent familia contine doua tipuri de procesoare: TMS320C24x (procesoare pe 16 biti,
care executa 40 MIPS) si TMS320C28x (procesoare pe 32 biti cu o productivitate de pina la
400 MIPS). Structura lor este data in Fig. 1 si in Tabelul 1 sunt date principalele caracteristici
ale procesoarelor din fiecare familie.

1
Fig. 1

Tabelul 1

2
Arhitectura C2000 foloseste doua magistrale principale: una pentru coduri si una pentru date.
Magistrala pentru coduri este destinata transferului codului instructiunilor si a operanzilor de
tip imediat din memoria de program. Magistrala pentru date interconecteaza elementele
functionale, cum ar fi CPU si memoria pentru date. In felul acesta arhitectura Harvard
maximizeaza puterea de prelucrare asigurind accesarea simultana a codurilor si a datelor cu
viteza mare. Prin modificarea arhitecturii Harvard clasice la procesoarele familiei C2000 pot
fi executate transferuri intre memoria pentru coduri si memoria pentru date. Aceasta face
posibila stocarea coeficientilor in memoria pentru program, eliminind necesitatea folosirii
unei memorii ROM separate pentru coeficienti.
Procesoarele C2000 contin trei unitati functionale care lucreaza concurent: controlerul
pentru program, CPU si generatorul de adrese pentru date (DAGEN). Unele functiuni DSP
critice (de exemplu, multiplicarea 16x16 biti intr-un singur ciclu de tact, deplasarea datelor,
prelucrarea adreselor) sunt executate de unitati hardware in timp ce la microprocesoarele de
uz general aceste operatii sunt executate prin software sau prin microcod. De asemenea
procesoarele incorporeaza citeva dispozitive periferice avansate, optimizate pentru functiuni
de control, ceea ce confera procesoarelor calitatile unor microcontrolere performante
(procesoarele din aceasta generatie sunt denumite de firma Digital Signal Controllers). In plus
pentru cresterea performentelor procesoarele C2000 folosesc un pipeline cu patru etaje.

3
Formatul instructiunilor in limbajul de asamblare al procesoarelor C2000 este
urmatorul:
[label] ADD dma[,shift1] ;adresare directa
[label] ADD ind [,shift1[ARn]] ;adresare indirecta
[label] ADD #k ;adresare imediata scurta
[label] ADD #1k[,shift2] ;adresare imediata lunga
unde:
0≤ dma ≤127 -este o adresa pentru memoria de date (sau un simbol definit cu
directiva asamblorului .equ sau .set folosind modul de adresare direct);
0≤ shift1 ≤16 (default 0) -reprezinta numarul de ranguri pentru deplasare la
stinga;
0≤ ARn ≤7 -specifica registrul de adresa pentru urmatoarea instructiune;
0≤ k ≤255 -reprezinta o data imediata de 8 biti;
-32768≤ 1k ≤32767 -este o data imediata de 16 biti;
0≤ shift2 ≤15 -reprezinta numarul de ranguri pentru deplasare la stinga
ind -semnifica modul de adresare indirecta
Acestia sunt operanzii cei mai frecvent folositi de instructiunile limbajului de asamblare a
procesoarelor C2000. Operanzii pot fi constante sau expresii temporare ale asamblorului
referitoare la memorie, porturi I/O, registre, pointeri, contoare pentru deplasari sau diferite
alte constante.

Unitatea centrala de prelucrare – CPU


Dupa cum este aratat in Fig. 2 principalele componente ale CPU sunt: deplasatorul
(shifter) de la intrare, multiplicatorul hardware paralel, deplasatorul pentru produs de la
iesirea multiplicatorului, unitatea aritmetica si logica - ALU, acumulatorul – ACC,
deplasatorul de la iesirea ACC si din unitatea aritmetica pentru registrele auxiliare – ARAU.
Pentru stocarea in memorie pe 16 biti acumulatorul de 32 de biti poate fi impartit in doua
registre de 16 biti, ACCH (bitii b31-b16), respectiv ACCL (bitii b15-b0).

4
5
Fig. 2

 Deplasatorul de intrare
Produce o deplasare la stinga cu 0 pina la 16 ranguri a datelor de 16 biti din memoria
pentru program sau pentru date. Deplasarea poate fi indicata fie de un cimp special de biti din
codul instructiunii fie de cei mai putin semnificativi 4 biti ai registrului temporar TREG. Bitii
de ordin inferior ai deplasatorului de 32 de biti sunt completati cu zerouri, iar bitii mai
semnificativi liberi sunt completati fie cu zerouri fie reprezinta o extensie a semnului in
functie de valoarea bitului de extensie a semnului (SXM) din registrul de stare ST1. Bitul
SXM poate fi setat cu instructiunea SETC SXM sau resetat cu instructiunea CLRC SXM.
Deplasatorul de intrare poate fi invocat cu o instructiune de incarcare, cu una de adunare sau
de scadere referitoare la acumulator. De exemplu, instructiunea
LACC dma,shift1
incarca in acumulator data din memorie de la adresa dma, deplasata in prealabil la stinga cu
shift1 ranguri. Similar actioneaza si instructiunea ADD dma, shift1. In ambele cazuri operatia de
deplasare este inclusa in instructiune si nu necesita timp suplimentar pentru executie. In cazul
anterior deplasarea este specificata de codul instructiunii. Exista si posibilitatea ca deplasarea
sa fie indicata de 4 biti de ordin inferior ai registrului TRAG, ca in exemplul urmator:
LACT dma

6
Folosind registrul TRAG este posibil ca factorul de scalare sa fie stabilit in mod dinamic. De
asemenea, deplasatorul de intrare poate fi utilizat pentru multiplicarea unor date cu intregi
care sunt puteri ale lui 2.

 Multiplicatorul
Este constituit din patru unitati: matricea de multiplicare de 16x16 biti care genereaza
un produs de 32 de biti intr-un singur ciclu, registrul TREG de 16 biti care furnizeaza unul
dintre operanzii multiplicatorului, registrul pentru produs de 32 de biti – PREG si deplasatorul
pentru produs. Produsul din registrul PREG poate fi transferat in acumulator cu instructiunea
PAC, sau poate fi stocat in memoria de date de 16 biti cu instructiunile SPH (cuvintul mai
semnificativ din PREG), respectiv SPL (cuvintul mai putin semnificativ din PREG).

Multiplicatorul accepta doua intrari, una de la registrul TREG, iar cealalta de la


memoria pentru date sau program. Daca ambii operanzi sunt localizati in memoria pentru
date, unul dintre ei trebuie transferat intii in TREG folosind instructiunea LT dma. Instructiuni
mai puternice pentru incarcarea registrului TREG sunt: LTA dma - incarca TREG si
acumuleaza produsul anterior, LTP dma – incarca TREG si stocheaza PREG in ACC, respectiv
LTS dma – care incarca TREG si scade din acumulator produsul anterior.
De exemplu, instructiunea:
LTA dma

7
incarca in TREG data de la adresa dma, deplaseaza continutul registrului PREG dupa cum
este specificat de bitii de mod pentru deplasarea produsului – PM, si apoi il aduna la
acumulator. In plus, instructiunea:
LTD dma
realizeaza operatia LTA plus o operatie de tip DMOV. Aceasta instructiune extrage operandul
pentru multiplicare de la adresa dma si apoi incarca aceasta data in memorie la adresa imediat
superioara. Aceasta operatie este eficienta pentru recircularea datelor dintr-un buffer cum este
cazul filtrelor RFI. Pentru a executa recircularea datelor cu una dintre instructiunile DMOV,
LTD sau MACD esantioanele semnalului trebuie incarcate in buffer dupa cum urmeaza: la
adresa cea mai mica esantionul cel mai recent - x(n), la adresa mai mare urmatoare - x(n-1),
s.a.m.d.
Instructiunea MPY dma aduce cel de al doilea operand al multiplicarii din memorie de
la adresa dma si executa operatia de multiplicare. Deoarece inmultirea a doua numere binare
de 16 biti cu semn produce un rezultat de 32 de biti cu doi biti de semn, stocarea in memoria
de 16 biti a rezultatului impune o deplasare la stinga cu un bit pentru eliminarea bitului
suplimentar de semn si apoi stocarea celor mai semnificativi 16 biti.
Deplasatorul de produs deplaseaza la stinga datele din registrul de PREG. Bitii PM din
registrul de stare ST1 indica modul de functionare a acestui deplasator dupa cum este aratat in
tabelul urmator:

PM Felul deplasarii
00 fara deplasare
01 deplasare stinga 1 bit
10 deplasare stinga 4 biti
11 deplasare dreapta 6 biti

Bitii PM pot fi setati cu instructiunea:


SPM constant ;set product shift mode
unde 0≤ constant ≤3. Iesirea PREG poate fi de asemenea deplasata la dreapta cu 6 biti pentru a
putea executa minimum 128 de operatii succesive de multiplicare si acumulare fara ca sa
apara depasire de scala.
Cele mai puternice instructiuni pentru multiplicare si acumulare (sau scadere) a
produsului anterior sunt: MPYA (multiplica si acumuleaza produsul anterior) si MPYS
(multiplica si scade produsul anterior). De exemplu, la instructiunea:
MPYA dma

8
data din registrul TREG este inmultita cu data din memorie si apoi produsul este stocat in
PREG. In acelasi timp, produsul anterior din PREG este deplasat dupa cum indica bitii PM si
apoi este adunat la ACC.

 Unitatea aritmetica si logica


Unitatea aritmetica si logica (ALU) executa operatii de adunare, scadere, operatii
logice si operatii de manipulare a bitilor (testare, deplasare, rotatie). Dupa cum este aratat in
Fig. 3, unitatea contine ALU propriu-zis, acumulatorul si deplasatorul de la iesire. Rezultatul
operatiilor efectuate de ALU este stocat in ACC. De exemplu:
ADD dma[,shift1] ;add data in memory to ACC with shift
APAC ;add PREG to ACC
In primul exemplu, continutul locatiei de memorie de la adresa dma este deplasat stinga cu
shift1 biti de deplasatorul de la intrare si apoi este adunat la ACC. In exemplul al doilea
continutul lui PREG este deplasat de deplasatorul de produs dupa cum este indicat de bitii PM
si apoi este adunat la ACC.

Dupa cum este aratat in Fig. 3, acumulatorul ACC de 32 de biti este impartit in doua
segmente de 16 biti: ACCH (bitii b31-B16) si ACCL (bitii b15-b0). ACC poate sa execute
deplasarea sau rotirea continutului. Bitul de transport – C este afectat de operatiile de
adunare/scadere din ACC si de operatiile de deplasare/rotatie a continutului ACC. Bitul C
permite o realizare mai eficienta a operatiilor in precizie extinsa.

9
Deplasatorul de la iesirea ACC poate executa deplasarea la stinga cu 0 pina la 7 biti.
Deplasarea este executata cind data este transferata din ACC in memorie. Cind deplasatorul
este folosit pentru ACCH bitii mai semnificativi sunt pierduti, iar bitii mai putin semnificativi
sunt incarcati cu bitii mai semnificativi deplasati din ACCL. Cind deplasatorul este folosit
pentru ACCL, bitii mai semnificativi sunt pierduti, iar bitii mai putin semnificativi sunt
incarcati cu zero.
Inmultirea a doua numere de 16 biti cu semn produce un rezultat cu 32 de biti ditre
care doi biti sunt bitii de semn. Fixind bitii PM pentru o deplasare stinga cu un bit poate fie
eliminat unul dintre bitii suplimentari de semn. O alternativa consta in a aduna produsele in
ACC fara deplasare si de a elimina bitul suplimentar de semn atunci cind data din ACC este
salvata in memorie cu instructiunea:
SACH yn,1 ;left shift one bit and save ACCH to yn
Avantajul este ca exista un bit de garda in acumulator pentru operatii consecutive de inmultire
si acumulare.

 Registrele auxiliare
Dupa cum este aratat in Fig. 4, procesoarele C2000 au 8 registre auxiliare de 16 biti
pentru adresarea datelor din memorie (AR ÷ AR7). In modul de adresare indirecta cu registru,
registrul auxiliar curent, specificat de registrul pointer ARP, este folosit ca pointer pentru
memoria de date. Oricare dintre cele 8 registre auxiliare poate fi utilizat ca pointer pentru
accesarea memoriei de date. Continutul registrelor auxiliare este actualizat de o unitate
aritmetica speciala (ARAU) in paralel cu operatiile executate de ALU. Una din intrarile
ARAU poate fi: cei 8 biti mai putin semnificativi din codul instructiunii, continutul registrului
AR0, sau o data din memorie, iar cealalta este continutul registrului auxiliar curent specificat
de ARP. Prin urmare, accesarea unei secvente de date din memorie nu solicita ALU care
executa in paralel operatii cu datele. Registrele auxiliare si ARP pot fi incarcate cu date din
memorie, ACC, PREG sau cu date imediate. Registrul auxiliar curent este selectat incarcind
in ARP un pointer de adresa de 3 biti. De exemplu, instructiunea MAR *,AR2 incarca 2 in ARP
astfel ca registrul curent folosit de instructiune este AR2. De asemenea, ARP este fixat
indirect de multe instructiuni care folosesc modul de adresare indirect, cu urmatoarea sintaxa:
mnemonic ind[,shift[,ARn]]
unde ultimul cimp optional ARn incarca valoarea lui n in ARP pentru a specifica urmatorul
registru auxiliar. In felul acesta urmatorul AR este stabilit fara a necesita un ciclu suplimentar.
AR poate fi initializat cu instructiunea LAR (Load Auxiliary Register), ca in exemplul
urmator:

10
LAR AR1,#k (sau#1k)
AR1 este incarcat cu constanta de 8 biti k (sau cu valoarea 1k de 16 biti).
De exemplu, daca ARP = 1, instructiunea:
ADD *+
aduna la acumulator data din memorie adresata cu AR1 si apoi incrementeaza cu 1 continutul
lui AR1. La fel, instructiunea:
ADD *0+
aduna continutul registrului AR curent cu o valoare intreaga fara semn de 16 biti continuta in
AR0 si apoi aduna la ACC data din memorie de la adresa rezultata. Operanzii *BR0+ si *BR0-
genereaza adrese cu inversarea bitilor pentru implementarea algoritmilor TFR.

11
ARAU poate executa sase operatii cu adresare indirecta, secificate in tabelul urmator:

Operand Operatia executata


* None
*+ ARn  ARn+1
*- ARn  ARn-1
*0+ ARn  ARn+AR0
*0- ARn  ARn-AR0
*BR+ ARn  ARn+AR0 with bit-reversed carry
*BR- ARn  ARn-AR0 with bit-reversed carry

In cazul modului de adresare directa, codul instructiunii contine cei 7 biti mai putin
semnificativi ai dma. Pentru a genera o adresa de 16 biti pentru memoria de date acestia sunt
concatenati cu 9 biti furnizati de registrul de selectie a paginii (DP). DP poate selecta una din
512 pagini de memorie fiecare avind 128 de cuvinte. DP poate fi initializat cu instructiunea
LDP (Load Data Page Pointer) sau cu instructiunea LST (Load Status Register).

 Registrele de stare

Procesoarele C2000 au doua registre de stare, ST0 si ST1, care contin bitii de stare si de
control. Aceste registre pot fi stocate sau incarcate din memoria pentru date, astfel incit starea
procesorului poate fi salvata/restaurata in vederea executarii subrutinelor. Pentru aceasta sunt
disponibile instructiunile: LST (Load Status Register) si SST (Store Status Register). Bitii
individuali din aceste registre pot fi setati/resetati cu instructiunile SETC/CLRC. De exemplu:

12
SETC INTM ;set interrupt mode bit
SETC OVM ;set overflow saturation mode

Controlul programului
Controlerul de program este o unitate functionala independenta care stabileste ordinea
de executie a instructiunilor. El include: contorul de program – PC, stiva si registrii de stare.
Elementele software care pot modifica fluxul programului sunt instructiunile de salt, apelare
si revenire din subrutine, instructiunile conditionate, de repetare si intreruperile.

 Contorul de program si stiva


Procesoarele C2000 poseda un contor de program de 16 biti. Cind codul este executat
secvential PC este incrementat cu 1 sau cu 2, dupa cum instructiunea curenta contine unul sau
doua cuvinte. Cind este executata o instructiune de salt PC este incarcat cu o adresa “lunga”,
operand a instructiunii. Cind este executata o instructiune de apelare intii este salvata in stiva
adresa urmatoarei instructiuni si apoi este incarcata adresa de salt specificata de instructiune.
Stiva este folosita pe durata executarii intreruperilor si a apelurilor de subrutine.
Procesoarele C2000 folosesc o stiva hardware cu 8 nivele. Cind procesorul executa o
instructiune de apelare sau o intrerupere adresa de revenire este automat salvata in stiva. La
executarea instructiunii de revenire adresa de revenire este transferata din virful stivei in PC.
De asemenea, stiva poate fi accesata si cu instructiunile PUSH si POP. Instructiunile PSHD si
POPD transfera o data din memorie in stiva si invers. Aceste instructiuni pot fi utilizate pentru
organizarea unei stive software in memoria de date pentru imbricarea subrutinelor sau a
intreruperilor care necesita mai mult de 8 nivele pentru stiva.
Continutul ACCL poate fi incarcat in PC pentru a implementa operatii de salt sau de
apelare conditionate de rezultatele calculului. Pentru aceasta sunt disponibile instructiunile
BACC (branch to address specified by ACC) sau CALA (call subroutine at location specified by
ACC).

 Executarea salturilor
Procesoarele C2000 poseda citeva instructiuni de salt pentru implementarea
structurilor pentru controlul programului folosite in programele C. Exista doua tipuri de
salturi: neconditionate, respectiv conditionate. Instructiunea de salt neconditionat determina
incarcarea in PC a adresei memoriei pentru program specificata de instructiune. De exemplu:
B dst_label ;branch unconditionally to dst_label

13
Adresa incarcata in PC, dst_label, este operandul instructiunii. In cazul saltului conditionat
intii sunt evaluate conditiile care determina efectuarea saltului, si in situatia cind aceste
conditii sunt indeplinite acesta este executat. De exemplu, instructiunea:
BCND pma [,cond1][,cond2][,.....] ;branch conditionally
Determina saltul la adresa pma daca toate conditiile specifiate sunt indeplinite. Conditiile care
pot fi specificate sunt prezentate in Tabelul 2.

 Executarea buclelor
Cea mai simpla metoda pentru implementarea buclelor consta in folosirea instructiunii
BANZ a carei sintaxa este:
[label] BANZ pma[,ind[,ARn]]
Adresa pma de 16 biti a memoriei de program poate fi o eticheta folosita de limbajul de
asamblare sau o adresa numerica. Programul executa salt la adresa specificata cind ARn nu
este zero. Pentru ca o secventa de program sa fie executata de N ori, secventa este incheiata cu
instructiunea BANZ, iar registrul auxiliar folosit drept contor este initializat cu valoarea N-1
inaintea de a incepe executarea buclei.

Tabelul 2
Operand Conditia Descriere
EQ ACC=0 None
NE ACC≠0 ACC not equal to 0
LT ACC<0 ACC less then 0
LEQ ACC≤0 ACC less then or equal to 0
GT ACC>0 ACC greater then 0
GEQ ACC≥0 ACC greater then or equal to 0
C C=1 Carry bit set to 1
NC C=0 Carry bit set to 0
OV OV=1 ACC overflow detected
NOV OV=0 No overflow detected
BIO BIO is low BIO pin is low
TC TC=1 Test/control flag set to 1
NTC TC=0 Test/control flag set to 0

Particularitati de programare
Implementarea algoritmilor DSP necesita realizarea unor operatii speciale, cum sunt
cele de multiplicare si acumulare. De aceea arhitectura si setul de instructiuni a fost optimizat
pentru realizarea eficienta a acestor operatii.

14
 Repetarea instuctiunilor
Instructiunea RPT determina executarea de N-1 ori a instructiunii care urmeaza. De
exemplu, secventa:
RPT #k ;repeat next instruction k+1 time
ADD *+ ;add k+1 samples to the ACC
incarca valoarea k de 8 biti in contorul de repetare (RPTC) determinind executarea
instructiunii ADD de k+1ori. RPTC poate fi incarcat si cu o data din memorie de 16 biti
determinind executarea instructiunii urmatoare de maximum 65536 ori. Dupa extragerea
codului din memoria de program el este introdus intr-un buffer de repetare astfel incit la
repetarea executiei codul este citit din acest buffer. De exemplu, instructiunea TBLR (Table
Read) necesita trei sau mai multi cicli pentru executie dar cind instructiunea este repetata
acest lucru are loc intr-un singur ciclu. De notat ca nu toate instructiunile pot fi repetate.

 Operatia de multiplicare si acumulare


Instructiunile de multiplicare si adunare, MAC si MACD, folosesc deplin capacitatea
multiplicatorului permitind prelucrarea simultana a ambilor operanzi. Instructiunea MAC
aduna intii la ACC produsul anterior dupa cum este indicat de PM, incarca TREG cu
operandul din memoria de date, inmulteste valoarea din TREG cu continutul locatiei
memoriei de program specificate si stocheaza rezultatul in PREG. Cind instructiunea este
repetata, adresa memoriei de program continuta in PC este incrementata cu unu dupa fiecare
repetare facilitind astfel executarea instructiunii de inmultire si adunare intr-un singur ciclu
cind este folosita instructiunea RPT. Instructiunea MACD realizeaza toate functiunile
instructiunii MAC si in plus executa recircularea datelor in memoria de date.

Configuratia sistemului
Procesoarele familiei C2000 sunt destinate unei game largi de aplicatii care includ
controlul digital al motoarelor si aplicatiile de control dedicate. Procesoarele sunt prevazute
cu periferice incorporate si cu resurse de memorie ROM (sau memorii flash), plus memorii
DARAM sau optional SARAM.

 Configurarea memoriei
Capacitatea de adresare a memoriei la procesoarele C2000 este de 192 kcuvinte,
memoria fiind organizata in trei spatii independente: (1) 64 kcuvinte memoria de program, (2)
64 kcuvinte memoria pentru date si (3) 64 kadrese pentru dispozitivele I/O. Cele trei spatii
sunt selectate cu semnalele P S, D S si I S . Dupa cum este aratat in Fig. ... procesoarele

15
familiei C2000 poseda memorie interna cu diferite capacitatati si moduri de organizare.
Memoria pentru date poate fi configurata prin software in sau in afara spatiului de adrese
pentru aceasta memorie. Cind aceste memoriile pentru date sunt in spatiul propriuprocesorul
executa automat accesul cind adresele sunt in limitele spatiului rezervat. Cind adresele exced
limitele procesorul genereaza o adresa pentru memoria externa. Performantele memoriei
interne sunt mai bune decit ale memoriei externe deoarece nu sunt necesare stari de asteptare
(wait), fluxul in pipeline este mai bun, iar consumul este mai redus.
Memoria interna poate fi configurata cu urmatoarele module de memorie: DARAM,
SARAM, flash (ROM) si ROM pentru pornire (boot). De exemplu, la procesoarele LF2407,
544 cuvine de memorie DARAM sunt inmpartite in trei blocuri: blocul 0 (B0 – 256 cuvinte),
blocul 1 (B1 – 256 cuvinte) si blocul 2( B2 – 32 cuvinte). B1 si B2 sunt localizate in spatiul
memoriei pentru date. B0 poate fi configurat ca memorie pentru date (CNF=1) la adresele
200h - 2FFh sau ca memorie pentru program (CNF=0) la adresele 0FF00h - 0FFF0h. Dupa
initializare blocul 0 este configurata ca memorie pentru date.
Memoria flash ocupa pina la 32 kadrese in spatiul pentru program si reprezinta o
alternativa la memoria ROM realizata prin mascare. Memoria flash este utila pentru etapa de
dezvoltare a produselor.
Cu toate ca procesoarele familiei pot accesa un spatiu relativ mare de memorie
capacitatea memoriei interne este limitata. De aceea sunt disponibile citeva instructiuni pentru
transferul blocurilor de date sau program din memoria externa mai lenta in memoria interna.
De exemplu, instructiunea:
BLDD source ,destination
transfera date din memoria de date (interna sau externa) in memoria de date. Folosind
instructiunea RPT impreuna cu BLDD pot fi transferate blocuri de date. Similar, instructiunea
BLPD transfera date din memoria pentru program in memoria pentru date. Urmatoarea
secventa :
LAR AR7,#300h ;AR7←300h
MAR *,AR7 ;ARP←7
RPT #255 ;repeat next instruction 256 times
BLDD #8800h ;block move of 256 data
muta o secventa de 256 coeficienti din memoria externa incepind cu adresa 8800h in blocul
B1 din memoria interna pentru date incepind cu adresa 300h.
O alta metoda pentru transferul unui cuvint din memoria pentru program in cea pentru
date consta in folosirea instructiunii TBLR. TBLW executa transferul invers. Pentru aceste
instructiuni cei 16 biti ai ACCL reprezinta adresa memoriei de program, iar instructiunea
specifica adresa memoriei de date.

16
 Intreruperile
Procesoarele familiei folosesc o intrerupere nemascabila si sase intreruperi mascabile,
controlate prin software. Sursele pentru intreruperi sunt: initializarea (comandata prin
hardware su software), intreruperile generate prin software (cerute pe linii externe sau de la
perifericele incorporate) si intreruperi initiate prin software. Deoarece procesoarele C2000 nu
au suficiente resurse pentru a manipula toate cererile perifericelor, nucleul celor sase
intreruperi (INT1 ÷ INT6) poate fi extins prin folosirea unui controler extern.

Aplicatie (bucla PLL digitala)


Un circuit PLL (Phase-Locked Loop) este un circuit care sincronizeaza un semnal de
iesire produs de un oscilator cu un semnal de referinta, in faza sau in frecventa. In regim de
sincronism eroarea de faza intre semnalul de iesire a oscilatorului si semnalul de referinta este

17
zero sau foarte mica. Daca eroarea de faza creste circuitul actioneaza asupra oscilatorului
pentru a reduce aceasta eroare.
Circuitul PLL este constituit din trei blocuri. Detectorul de faza care compara faza
semnalului oscilatorului controlat in tensiune, y(n), cu faza semnalului de referinta x(n), si
produce semnalul de eroare e(n), proportional cu eroarea de faza. Semnalul e(n) are o
componenta continua (componenta utila) si o componenta nedorita de zgomot care trebuie
redusa prin filtrare. Semnalul de eroare filtrat, c(n), este folosit pentru controlul fazei si a
frecventei oscilatorului comandat in tensiune.
Primele circuite PLL integrate au fost analogice. Detectia de faza este realizata cu un
multiplicator analogic, iar filtrul din bucla este un filtru activ sau pasiv de tip RC. Primul
circuit PLL digital a aparut in jurul anului 1970 si folosea porti logice XOR si circuite
bistabile JK pentru realizarea detectorului de faza. Ulterior au fost realizate circuite PLL
complet digitale. In continuare va fi prezentat un circuit PLL realizat cu procesorul de semnal
TMS320F2407.

x(n)
Detector de e(n) Etaj de c(n)
faza filtrare

Oscilatorcomandat
Oscilator comandatin
intensiune
tensiune
y(n)
a)

e(n) e'(n) c(n)


Filtru median Filtru trece-jos

b)

Fig. ... Circuit PLL digital; a)- schema bloc, b)- etajul de filtrare

Interferentele prezente in e(n) contin doua componente: zgomot de impulsuri si


zgomot de banda larga. Un filtru median este necesar pentru reducerea zgomotului de
impulsuri, iar filtrul trece-jos este foarte eficient pentru atenuarea zgomotului la frecvente mai

18
mari decit componenta dorita de curent continuu. Prin urmare etajul de filtrare necesar pentru
eliminarea interferentelor este format din din doua filtre conectate in cascada (Fig. …b).
Filtrul median este un filtru liniar de ordinul 5, constituit dintr-un buffer de tip FI-FO
cu cinci celule folosit pentru memorarea esantioanelor e(n), e(n-1), …, e(n-4). Aceste
esantiane sunt mutate intr-un nou buffer, denumit buffer de sortare, unde elementele sunt
ordonate dupa marime. Iesirea filtrului median este simplu elementul median din bufferul de
sortare. Pentru reducerea zgomotului de banda larga se foloseste un filtru neliniar cu medie
alunecatoare (moving-average) al carui raspuns este dat de ecuatia:
c(n)  (1   )c(n  1)  e(n)  c(n  1)  c(n  1)  e(n)

Daca coeficientul  este o putere negativa a lui 2 (   2  m ), atunci produsul e(n) poate fi
implementat prin deplasarea lui e(n) cu m biti la dreapta. Deoarece acumulatorul
procesorului TMS320C2000 are 32 biti deplasarea cu m biti la dreapta si incarcarea
rezultatului in cuvintul de ordin superior al acumulatorului poate fi facuta deplasind-ul cu 16-
m biti la stinga si incarcind rezultatul in cuvintul inferior al acumulatorului. Semnalul de iesire
este reprezentat cu 32 de biti si este memorat la adresele cn_low (cuvintul de ordin inferior),
respectiv cn_high (cuvintul de ordin superior). Subrutina in limbajul de asamblare a
procesorului C2000 care executa aceste operatii este:

FTJ: LACC cn_high,16 ;ACCH  c(n-1), high word


ADDS cn_low ;ACC=c(n-1)
SUB cn_high,m8 ;-  *c(n-1)
ADD sort1_buf2,m8 ;+  * e(n)
SACH cn_high ;save c(n), high word
SACL cn_low ;save c(n), low word

unde m8 este numarul de ranguri binare cu care este deplasata data, echivalentul operatiei de
inmultire.

19
Familia TMS320C5000

Procesoarele TMS320C54x
Familia de procesoare de semnal in virgula fixa TMS320C54x este orientata pe
aplicatii portabile precum telefoane celulare, sisteme pentru comunicatii de date cordless si
wireless, PDA, playere MP3, aparate foto digitale, telefonie VoIP, modemuri.

Caracteristici arhitecturale

Ca si generatia C2000 procesoarele C54x au la baza arhitectura Harvard modificata,


cu spatii de adrese separate pentru coduri si date. Procesoarele sunt disponibile cu diferite
configuratii de memorie si dispozitive I/O (vezi Tabelul 1). Memoriile DARAM si SARAM
pot fi configurate ca memorii de date sau ca memorii de date/program. Memoria DARAM
este folosita pentru stocarea celor mai frecvent folosite date si coduri deoarece permite doua
accesari per ciclu instructiune. Memoria ROM interna este folosita la pornirea programului
(boot) pentru initializarea procesorului intr-o stare predeterminata si pentru pornirea aplicatiei.
Aceste memorii sunt accesate cu patru seturi de magistrale interne: o magistrala pentru citirea
codurilor, doua magistrale pentru citirea datelor si o magistrala pentru scrierea datelor. La
frecventa tactului de 100 MHz procesoarele C54x pot executa 200 milioane de citiri de
cuvinte pe secunda si pot scrie 100 milioane de cuvinte pe secunda. Comparativ cu familia
C2000, procesoarele C54x folosesc doua porturi pentru accesarea memoriei de date la citire.
Nucleul procesoarelor C54x consta din urmatoarele unitati functionale: (1) ALU de 40 biti,
(2) 2 acumulatoare, ACCA si ACCB, de cite 40 biti, (3) un registru pentru deplasari binare
(barell shifter), (4) un multiplicator de 17x17 biti si un sumator de 40 biti, (5) o unitate pentru
comparare, selectie si stocare, (6) un codor pentru exponent si (7) unitati de generare a
adreselor pentru programe (PAGEN) si date (DAGEN).

 Unitatea ALU
ALU de 40 de biti executa operatii aritmetice in complement fata de doi si operatii
logice. ALU poate sa lucreze in regim saturat sau cu extensia semnului. De exemplu, in
regimul de lucru cu extensia semnului numarul negativ de 16 biti, F000h, este inregistrat ca
un numar de 32 biti de forma FFFFF000h (SXM=1) sau 0000F000h (SXM=0).

20
 Acumulatoarele
Comparativ cu familia C2000 procesoarele C54x poseda cite doua acumulatoare de 40
de biti. Cei opt biti de garda asigura o protectie mai buna la depasirea scalei.

21
 Registrul pentru deplasare
Datele de la iesirea acumulatoarelor sau din memorie pot fi deplasate la stinga cu 0
pina la 31 de biti sau la dreapta cu 0 pina la 16 biti cu registrul barell shifter. Registrul barell
shifter este folosit pentru scalarea semnalelor, pentru deplasarea aritmetica sau logica a
acumulatorului, pentru extragerea bitilor, pentru operatii in precizie extinsa si pentru
prevenirea depasirilor de scala.

 Unitatea de multiplicare si acumulare


Procesorul C54x are un multiplicator hardware de 17x17 biti si un sumator de 40 de
biti care formeaza impreuna o unitate de multiplicare si acumulare. Procesorul foloseste
instructiuni speciale pentru a executa o operatie complexa de multiplicare si acumulare intr-un
singur ciclu (MAC, MACA, MACD MACP si MACSU). Iesirea sumatorului este trecuta
printr-un circuit care detecteaza o valoare zero sau depasirea de scala in rezultat si realizeaza
saturarea sau rotunjirea in functie de regimul de lucru programat.

 Unitatea de comparare, selectie si stocare


Procesorul contine o unitate de comparare, selectie si stocare folosita pentru
implementarea eficinta a algoritmului Viterbi. Sunt comparate cuvintele de ordin inferior si
superior din acumulator, este selectat cel mai mare dintre ele care este stocat in memoria de
date.

 Unitatea de generare a adreselor


Unitatea PAGEN genereaza adresele pentru memoria de program, adrese care sunt
stocate in PC. Cele mai noi versiuni ale procesoarelor C54x pot adresa pina la 8 Mcuvinte.
Pentru adresarea unui spatiu mare de memorie este folosit un registru selector de pagini de 7
biti, XPC, care poate selecta pina la 128 pagini. PC poate adresa in limitele unui spatiu de 64
kcuvinte.
Unitatea DAGEN calculeaza adresele operanzilor folosind urmatoarele surse:
registrele auxiliare AR0÷AR7, registrul pentru dimensiunea blocurilor, BK (folosit pentru a
stabili dimensiunea unui buffer circular) si registru pointer pentru stiva, SP. Registrul auxiliar
poate fi utilizat si pentru adresarea modulo in cazul unui buffer circular.

22
Moduri de adresare
Procesoarele C54x folosesc urmatoarele moduri de adresare:
- Adresare indirecta. Ca pointer de adresa sunt folosite registrele auxiliare AR0÷AR7.
Simbolul * in fata unui registru auxiliar indica registrul auxiliar curent si folosirea modului de
adresare indirect. In plus fata de procesoarele C2000, familia C54x asigura suplimentar
adresare cu pre-incrementare/decrementare si adresare circulara.
- Adresare absoluta. Adresa este specificata explicit de instructiune printr-un cuvint
suplimentar.
Pentru optimizarea codului C54x foloseste doua moduri de adresare speciale:
adresarea circulara si adresarea cu inversarea bitilor.
Arhitectura C54x foloseste un singur buffer circular dimensiunea acestuia fiind
indicata de registrul BK (Buffer size). Dimensiune buffer-ului este limitata doar de
dimensiunea spatiului de memorie. De exemplu, pentru a defini un buffer de 32 de cuvinte,
BK se incarca cu 32. Modul de folosire a unui buffer circular este urmatorul:

STM #32,BK ;initialize circular buffer size


……
RPT
MAC *AR2+0%,*AR3,A

Semnul % arata ca AR2 este registrul pentru adresarea buffer-ului.


Adresarea cu inversarea bitilor este o tehnica pentru reordonarea datelor intr-un buffer
pentru algoritmii TFR. In cazul C54x operatia de inversare a bitilor poate fi executata
incarcind AR0 cu jumatate din lungimea transformatei si adunind aceasta la un index, cu
propagarea la dreapta a transportului. De exemplu, pentru a executa inversarea bitilor la un
TFR in 8 puncte, AR0 este incarcat cu valoarea 4, iar AR2 este folosit pentru adresare, cu
operandul *AR2+0B (B specifica adresarea cu inversarea bitilor).

Accesarea datelor de 32 biti


C54x poseda si instructiuni care accepta operanzi de 32 de biti. Datele de 32 de biti
sunt aliniate big endian, cu cel mai semnificativ cuvint la o adresa para.

Setul de instructiuni
C54x poseda urmatoarele tipuri de instructiuni:
- Operatii load/store
- Operatii aritmetice
- Operatii logice

23
- Instructiuni pentru controlul programului
- Instructiuni speciale
C54x foloseste un numar de instructiuni specifice aplicatiilor:
- FIRS (filtru FIR simetric). Sintaxa instructiunii FIRS este urmatoarea:
FIRS *AR3,*AR4,#coeff
Efectul acestei instructiuni este echivalent cu cel al secventei urmatoare:
MACA #coeff,B,B ;B=B+(AH*coeff)
||ADD *AR3+,*AR4+,A ;A=(*AR3+*AR4)<<16
Valoarea din AH este multiplicata cu o valoare din memoria de program, iar rezultatul este
adunat la ACC B. In acelasi timp, instructiunea aduna operanzii din memoria de date accesati
cu registrele AR3 si AR4, deplaseaza suma la stinga cu 16 biti si stocheaza rezultatul in ACC
A.
- LMS (Least Mean Square). Este o instructiune speciala folosita pentru ajustarea
coeficientilor unui filtru adaptiv pe baza calculului erorii medii patratice, denumita metoda
gradientului stocastic. Sintaxa instructiunii este:
LMS *AR3+,*AR4+
iar efectul este acelasi cu cel dat de secventa urmatoare:
MAC *AR3+,*AR4+,B ;B=B+(*AR3+**AR4+)
||ADD *AR3,16,A ;A=(*AR3+A)<<16
RND A ;A=round(A)
Prima instructiune executa operatia de multiplicare si acumulare specifica operatiei de filtrare
FIR asupra primului coeficient si plaseaza rezultatul in ACC B. In acelasi timp, cel de al
doilea coeficient este adunat la ACC A. Rezultatul este deplasat la stinga cu 16 biti si este
rotunjit inainte de a fi plasat in ACC A. In acest mod filtrarea si adaptarea coeficientilor este
executata in ACC B si respectiv in ACC A.
- SQDST (patratul diferentei). Instructiunea calculeaza patratul diferentei dintre
doi vectori. De exemplu:
SQDST *AR3+,*AR4+
efectul fiind echivalent cu al secventei:
SQUR A,A ;A=AH*AH
ADD A,B ;B=A+B
||SUB *AR3,*AR4,A ;A=((*AR3)-(*AR4))<<16

Configuratia sistemului
Procesoarele C54x sunt folosite in multe aplicatii ieftine si cu consum redus. Aceste
aplicatii necesita viteza mare de prelucrare, o mare varietate de memorii si de dispozitive
periferice.

24
 Memoria
La fel ca C2000, C54x au un spatiude memorie de 192 kcuvinte. Acest spatiu este
impartit in trei blocuri: (1) 64 kcuvinte –memoria pentru program si constante, (2) 64 kcuvinte
– memoria pentru date si (3) 64 kcuvinte – spatiul de adrese pentru dispozitivele I/O.
Unele procesoare C54x folosesc tehnica paginarii memoriei pentru extinderea
memoriei de program. De exemplu procesorul C5402 are posibilitatea extinderii acesui spatiu
pina la 1 Mcuvinte folosind 20 de linii de adresa. Spatiul este impartit in 16 pagini, iar o
pagina din spatiul memoriei de program contine 64 Kcuvinte.
 Dispozitivele periferice interne
Toate procesoarele au porturi I/O de uz general, un timmer, un generator de tact si un
generator de stari de asteptare (wait) programabil. Perifericele pentru dispozitive specifice
sunt: (1) un port de interfatare gazda (HPI – Host-Port Interfacing) de 8 sau de 16 biti, (2) un
port serial care poate fi o combinatie de porturi seriale sincrone, BSP (Buffered Serial Port),
McBSP sau porturi seriale multiplexate in timp.
HPI permite procesorului gazda sa citeasca sau sa scrie 1kcuvinte din memoria interna
a procesorului C54x. Procesoarele C54x au patru interfete de tip port serial. Portul serial de
baza este de tip serial sincron si lucreaza la o viteza egala cu cea a tactului master.
BSP lucreaza fie ca port serial sincron fie ca port cu autobuffer-are. Portul serial
sincron este asemanator cu portul serial de baza, dar foloseste si un buffer de 2 kcuvinte in
memoria DARAM interna. La C54x unitatea de autobuffer-are transfera 2kcuvinte de date
intre port si memorie automat si semnalizeaza printr-o intrerupere cind buffer-ul este gol sau
plin.
McBSP este similar cu BSP dar are o functionalitate mai complexa. El accepta pina la
128 de canale si este destinat conectarii mai multor dispozitive rapide. McBSP poseda un
numar de facilitati avansate: ceas separat pentru emisie si receptie, generator de tact flexibil,
comunicatie full-duplex, registre multiple tip buffer, hardware de compresie/decompresie
dupa legile A si  .
Procesoarele C54x au trei moduri de lucru cu consum redus configurabile prin
software (IDLE1, IDLE2 si IDLE3). Atunci cind este activat oricare din cele 3 moduri este
blocat tactul. In modul IDLE3 sunt blocate dispozitivele periferice incorporate, inclusiv
oscilatorul si circuitul PLL.

25
Procesoarele TMS320C55x
Este un procesor de semnal in virgula fixa, compatibil software cu familia C54x,
avind insa o viteza superioara de lucru si o densitate a codului superioara. Procesorul este
destinat aplicatiilor care cer consum mic si inalta performanta de calcul cum sunt: telefoanele
celulare, dispozitivele digitale audio portabile, aparatele foto digitale, protezele audio, etc.
Diferentele hardware fata de familia C54x constau in: (1) doua unitati MAC, fiecare
capabila sa execute o multiplicare de 17x17 biti, o adunare/scadere pe 40 de biti si optional o
saturare intr-un singur ciclu, (2) patru acumulatoare de 40 de biti, (3) un ALU suplimentar de
16 biti, (4) patru noi registre de 16 biti, (5) stiva software cu salvarea/restaurarea automata a
contextului la intreruperi.
Procesoarele C55x accepta instructiuni cu lungime variabila (8/16/24/32/40/48 biti)
pentru imbunatatirea denstitatii codului. Setul de instructiuni cuprinde sase tipuri de operatii:
(1) transfer, (2) aritmetice, (3) manipulare a bitilor, (4) lucru cu registrele extinse, (5) logice,
si (6) control a programului. Sintaxa de baza a unor instructiuni poate fi schimbata prin
adaugarea unor prefixe. De exemplu, instructiunea MOV poate fi schimbata in AMOV astfel ca
instructiunea poate fi executata in paralel cu o alta.
Procesoarele C55x pot executa doua operatii (instructiuni) in paralel in cadrul
aceluiasi ciclu, daca acestea folosesc resurse diferite. Exista trei tipuri de paralelism:
a) Paralelism intrinsec. Unele instructiuni pot realiza doua operatii diferite in
paralel.Paralelismul intrinsec in cadrul unei singure instructiuni este indicat prin semnul ::
pentru a separa cele doua operatii. De exemplu:
MPY *AR0,*CDP,AC0
::MPY *AR1,*CDP,AC1
Aceasta este o singura instructiune care foloseste unitatile MAC. Data adresata cu AR0 este
inmultita cu coeficientul adresat cu CDP, iar produsul este salvat in AC0. In acelasi timp, data
adresata cu AR1 este inmultita cu acelasi coeficient adresat cu CDP, iar produsul este salvat
in AC1.
b) Paralelism definit de utilizator. Programatorul sau compilatorul de C poate plasa
doua instructiuni in paralel astfel incit cele doua instructiuni sunt executate intr-un singur
ciclu. Semnul || este folosit pentru a delimita cele doua inastructiuni executate in paralel. De
exemplu:
MPYM *AR+,*CDP,AC1
||XOR AR2,T1
In acest exemplu, prima instructiune executa inmultirea in unitatea de calcul, iar cea de a doua
executa operatia logica in unitatea de adresare.

26
c) Paralelism combinat. Acesta apare atunci cind una din doua instructiuni definite de
utilizator au si paralelism intrinsec. De exemplu:
MPY *AR0,*CDP,AC0
::MPY *AR1,*CDP,AC0
||RPT CSR
Procesoarele C55x poseda citeva facilitati arhitecturale importante: o unitate MAC duala,
facilitati pentru adresarea circulara si pentru executarea buclelor cu incarcare zero. Unitatea
MAC este exploatata optim atunci cind algoritmul prezinta simetrii cum este cazul filtrelor
FIR. In plus operatiile MAC duale pot fi aplicate pentru inmultirea vectorilor, inmultirea
matricilor, filtrarea FIR pe bloc si pentru sistemele multicanal. Adresarea circulara poate fi
utilizata cu orice mod de adresare indirecta. Fiecare registru auxiliar ARn poate fi configurat
pentru a fi un pointer liniar sau circular.

27
TMS320C5x – pag. 56, Venkatamarani – de dezvoltat

28
Capitolul 14

Procesoare digitale de semnal in virgula mobila

Principalele limitari ale procesoarelor in virgula fixa sunt precizia si gama


dinamica redusa. De aceea in cazul implementarilor in virgula fixa este necesara
scalarea atenta a valorii datelor pentru a evita depasirile de scala. Deoarece scalarea
implica reducerea gamei dinamice ea este insotita de scaderea raportului
semnal/zgomot in sistemele pentru prelucrarea semnalelor. In schimb folosirea
aritmeticii in virgula mobila ofera o precizie si o gama dinamica mai buna decit
aritmetica in virgula fixa, utila in special in aplicatiile care cer o precizie mare de
calcul cum ar fi actionarile electrice, sistemele pentru comanda robotilor, grafica pe
calculator, s.a. O comparatie privind avantajele si dezavantajele celor doua mari
familii de procesoare de semnal este data in Tabelul 1.

Tabelul 1
Virgula fixa Virgula mobila
 Arhitectura de sistem mai simpla  Arhitectura de sistem complexa
 Programare mai dificila  Programare eficienta in
limbajele de nivel inalt
 Memorie interna extinsa  Necesita extinderea memoriei in
afara cipului
 Cost mai redus  Cost mai ridicat
 Precizie limitata  Precizie ridicata si mentinuta
fara operatii suplimentare
 Gama dinamica redusa  Gama dinamica ridicata
 Erorile de calcul sunt rapid
acumulabile

Procesoarele cu aritmetica in virgula mobila folosesc de regula cuvinte de 32


de biti. De exemplu, un procesor pe 32 de biti care foloseste 24 de biti pentru
reprezentarea mantisei si 8 biti pentru reprezentarea exponentului ofera o gama
dinamica de 1530 dB. Procesoarele in virgula mobila executa operatiile cu viteza de
prelucrarea a datelor intregi, evitind totodata aparitia unor situatii delicate (de
exemplu, depasirea de scala, scalarea semnalelor, alinierea operanzilor) care se
manifesta in cazul virgulei fixe. Datorita gamei dinamice mari oferita de aceasta
reprezentare, anumite operatii (calculul TRF, realizarea filtrelor RII in cascada) care

1
conduc la cresterea valorii datelor la propagarea de la etaj la etaj nu produc usor
depasirea scalei cum se intimpla in cazul virgulei fixe. In plus efectele de cuantizare
sunt mai putin prezente.
Deoarece lungimea cuvintelor cu care opereaza procesoarele in virgula mobila
este mai mare decit la virgula fixa, aceste procesoare accepta un numar mai mare de
moduri de adresare precum si un grad mai mare de paralelism in executie. Folosirea
limbajelor de nivel inalt pentru programare este mai eficienta datorita arhitecturii
orientate pe registri, a folosirii instructiunilor in virgula mobila, a spatiului mai mare
de adrese, a numarului mai mare de moduri de adresare, a flexibilitatii setului de
instructiuni, etc. In plus virgula mobila permite o trecere mai directa de la mediul de
simulare pe un calculator gazda folosind programele MatLab sau C, catre o
implementare in timp real pe un sistem tinta cu procesor DSP. In mod curent
procesoarele in virgula mobila sunt folosite pentru aplicatii performante, ca de
exemplu sisteme pentru videoconferinta, retele de comunicatii cu comutare de
pachete, statii de baza pentru telefonia celulara, sisteme radar si sonar, imagistica
digitala, etc.
Familia TMS320 contine trei generatii de procesoare in virgula mobila,
respectiv C3x, C4x si C67x.

TMS320C3x
Structura interna este prezentata in Fig. 1 (5.1). Generatia C3x foloseste o
arhitectura Harvard pe 32 de biti, cu registre de 40 de biti pentru extinderea preciziei.
Aceste procesoare includ unitati de prelucrare in virgula mobila (de exemplu,
multiplicator, ALU, deplasator), facilitati pentru managementul rapid al memoriei cu
controler DMA incorporat, un cache intern pentru instructiuni de 64 cuvinte si un
spatiu de adrese de 16 Mcuvinte. Procesorul are un fisier de registre de uz general, un
cache pentru program, doua unitati aritmetice dedicate pentru registrele auxiliare
precum si o memorie interna cu acces dublu.
Viteza de executie este optimizata prin implementarea hardware a unor
operatii frecvent utilizate, cum sunt operatiile repetitive cu blocuri de date, adresarea
circulara, multiplicarea. Sistemul de magistrale interne permite executarea in paralel a
operatiilor de extragere a codurilor, a accesarii datelor (pentru citiri/scrieri) si a
transferurilor DMA. Procesorul foloseste adrese de 24 de biti pentru accesarea
cuvintelor de cod si de date de 32 de biti.

2
Pentru functionarea in sisteme multiprocesor, cu memorie globala partajata,
C3x foloseste cinci instructiuni si doua fanioane I/O externe, care pot fi configurati
prin software ca intrari sau iesiri pentru executarea operatiei de interblocare.
Desi procesorul este folosit mai ales ca procesor pentru operatii in virgula
mobila, operatiile in virgula fixa sunt utile pentru anumite aplicatii, cum sunt
prelucrarile de imagini. Procesoarele C3x executa operatii in virgula fixa, in virgula
mobila si operatii logice folosind instructiuni cu doi sau cu trei operanzi. De asemenea
C3x poate executa in paralel multiplicati si operatii cu ALU cu numere intregi
reprezentate in virgula fixa sau cu numere reale reprezentate in virgula mobila intr-un
singur ciclu. Procesoarele familiei pot executa mai multe tipuri de bucle (buclare
hardware pentru instructiuni sau pentru blocuri de program, buclare intirziata pentru
multiprocesare, buclare standard pentru golirea pipeline-ului). De asemenea pot fi
executate conversii din virgula fixa in virgula mobila. Procesoarele familiei pot
executa pina la 150 milioane de instructiuni in virgula mobila pe secunda (150
Mflops).
C3x foloseste trei formate de date: intregi cu semn, intregi fara semn si
numere in virgula mobila. Pentru numerele in virgula mobila este disponibil si un
format in precizie extinsa. Numerele intregi pot fi reprezentate cu 16 biti (formatul
scurt) sau cu 32 de biti (formatul lung). Pentru reprezentarea in virgula mobila sunt
folosite trei formate de date: formatul scurt (16 biti), formatul standard (32 de biti) si
formatul extins (40 de biti). Formatele de reprezentare nu respecta standardul IEEE
754. Pentru anumite aplicatii de timp real datele de intrare sunt esantioane de semnal
furnizate de convertoare A/D. Procesoarele C3x convertesc datele intregi intr-un
format cu virgula mobila, le prelucreaza, iar la sfirsit convertesc rezultatul in format
intreg si le transefera la CDA.

3
TMS320C4x
Generatia C4x contine primele procesoare DSP proiectate pentru prelucrari
paralele. Procesoarele C4x sunt compabibile la nivel de cod cu C3x. Procesoarele
familiei includ sase porturi de comunicatie, un controler DMA cu sase canale, doua
unitati independente de 32 de biti pentru interfatarea memoriei. Dupa cum s-a
mentionat pot fi conectate direct pina la sase procesoare C4x pentru prelucrari
paralele.

TMS320C67x
Cel mai recent procesor in virgula mobila din familia TMS320 este
TMS320C67x. C67x are la baza arhitectura VLIW prezentata anterior. Setul de
instructiuni al procesorului C67x este un superset al setului de instructiuni al
procesoarelor C62x, fiind adaugate instructiuni pentru operatii in virgula mobila.

4
Procesorul este capabil sa execute pina la 1350 Mflops la un tact de 225MHz. C67x
este optimizat pentru executarea eficienta a programelor scrise in limbajul C.
Procesoarele C67x sunt destinate aplicatiilor care cer precizie ridicata de calcul, gama
dinamica mare si viteza mare de calcul (radar, sonar, grafica 3D, statii de baza
wireless, linii de abonat digitale, imagistica medicala, s.a.)
Arhitectura C67x accepta date reprezentate in virgula mobila pe 32 de biti sau
pe 64 biti. Fiecare din cele doua cai de date contin cite patru unitati de executie, cite
un fisire de registre de uz general si cai de transfer de date intre registre si memorie.
Arhitectura C67x este prezentata in Fig. 2 (5.6).

Fig. 2 Arhitectura procesoarelor C67x


Procesoarele C67x au doua cai de date in virgula mobila, o unitate pentru
controlul programului, un controller DMA, memorie interna precum si interfete
pentru extensia memoriei pentru programe si date. Cele doua cai de date accepta
operanzi de 32/64 biti in virgula mobila si contin cite patru unitati de executie fiecare
(.L, .S, .M si .D), un fisier de registre precum si cai de transer a datelor intre memorie

5
si registre. Procesoarele C67x pot executa pina la opt instructiuni intr-un ciclu,
incluzind doua operatii de multiplicare in precizie simpla sau o multiplicare in
precizie dubla. Fata de procesoarele C62x arhitectuta C67x a fost modificata pentru a
permite incarcarea operanzilor cu precizie dubla pe 64 biti. Procesoarele contin doua
fisiere de cite 16 registre de uz general de 32 biti (A si B). Grupuri de cite doua
registre adiacente pot stoca si operanzi pe 64 biti pentru operatii realizate cu precizie
dubla. Operatiile realizate in precizie dubla necesita mai mult timp decit cele
executate in precizie simpla.
Memoria interna are o arhitectura Harvard modificata ccare asigura spatii
separate pentru coduri si date. Cele doua cai de date sunt conectate la memoria de date
prin magistrale de adrese (32 biti) si de date (64 biti) separate. Memoria pentru
programe este accesata printr-o magistrala de adrese de 32 biti si una pentru date de
256 biti. O varianta mai performanta din familia C67x (C6713) ofera posibilitatea de a
configura memoria interna ca memorie cache de nivel 1 (L1), iar memoria externa ca
memorie cache de nivel 2 (L2), atit pentru coduri cit si pentru date.
Procesoarele C67x poseda un sistem de periferice similar cu cel existent la
procesoarele C62x/64x.
C67x accepta toate instructiunile procesoarelor C62x plus un numar de
instructiuni noi incluzind: multiplicari de numere intregi pe 32 de biti, incarcari de
date de 64 biti, instructiuni pentru operatii in virgula mobila, etc. C67x realizeaza o
folosire intensa a memoriei deoarece arhitectura VLIW produce “pachete” de pina la
opt instructiuni de 32 de biti.

6
Capitolul 17

Stadiul actual si perspectivele procesoarelor de semnal

In ultimii ani numarul aplicatiilor cere includ prelucrarea digitala a semnalelor a crescut in
mod constant. Pentru implementare sunt folosite circuite diverse, de la arii de porti programabile
prin cimp (FPGA) pina la circuite integrate dedicate (custom IC). Procesoarele digitale de semnal
(DSP) reprezinta o clasa de microprocesoare optimizate pentru implementarea algoritmilor DSP.
Comparativ cu alte tipuri de microprocesoare, procesoarele DSP prezinta avantaje din punct de
vedere a vitezei de operare, a costului si a consumului.

12.1 Stadiul actual


12.1.1 Procesoare DSP conventionale
Performantele si pretul de cost pentru procesoarele DSP sunt foarte diferite.
 Procesoarele cu performante reduse si ieftine sunt cele mai utilizate in aplicatiile
curente. Aceste procesoare au o arhitectura similara cu cea a primelor procesoare DSP. Ele extrag si
prelucreaza o singura instructiune intr-un ciclu de tact si poseda instructiuni complexe care codifica
mai multe operatii. Aceste procesoare includ un singur multiplicator sau o unitate MAC (Multiply
and Accumulate) si un ALU. Din aceasta categorie fac parte familiile ADSP-21xx (Analog
Devices), TMS320C2x (Texas Instruments), DSP560xx (Motorola), s.a.. Aceste procesoare
opereaza in general la frecvente de 20÷50 MHz si asigura performante bune pentru operatiile DSP
in conditiile unui consum energetic relativ mic si cu cerinte de memorie reduse. Ele sunt folosite in
mod curent la bunurile de larg consum si la produsele pentru telecomunicatii care cer performante
reduse pentru operatiile DSP (drievere de disc, roboti telefonici).
 In domeniul performantelor medii se situeaza procesoarele DSP care folosesc
arhitecturi mai performante si care lucreaza cu frecvente de tact mai mari. Procesoarele DSP din
familiile DSP563xx (Analod Devices), TMS320C54x (Texas Instruments) lucreaza la frecvente de
100÷150 MHz si includ in structura lor unitati functionale noi (registre pentru deplasari binare –
barell shifter, memorii cache, interfete I/O suplimentare) care imbunatatesc performantele de calcul
pentru unii algoritmi DSP. Unele procesoare din aceasta categorie folosesc un pipeline cu adincime
mai mare decit primele procesoare DSP. Chiar daca aceste procesoare contin anumite imbunatatiri
arhitecturale ele nu se deosebesc esential de procesoarele traditionale. Procesoarele cu performante
medii sunt folosite in echipamentele de telecomunicatii wireless si pentru realizarea modemurilor de
mare viteza.

1
12.1.2 Variante imbunatatite ale procesoarelor DSP conventionale
O posibilitate pentru imbunatatirea performantelor procesoarelor DSP este extinderea
arhitecturii prin adaugarea unor unitati de executie in paralel a operatiilor, frecvent a unui
multiplicator si a unui sumator. Aceste imbunatatiri arhitecturale sunt completate cu extinderea
setului de instructiuni care exploateaza aceste facilitati noi prin codarea mai multor operatii intr-o
instructiune si executarea acestora in paralel. Datorita gradului crescut de paralelism procesoarele
din aceasta categorie pot executa mai multe operatii intr-un ciclu de tact; de exemplu, doua operatii
de multiplicare si acumulare in locul unei singure operatii. In Fig. 12.1-a) si b) este comparat un
procesor coneventional (DSP16xx – Lucent Tech.) cu un procesor cu arhitectura imbunatatita
(DSP16xxx – Lucent Tech.).

Fig. 12.1

In mod curent, procesoarele DSP imbunatatite au o magistrala de date mai larga pentru a
transfera mai multe cuvinte de date pentru unitatile de executie intr-un ciclu. De asemenea, ele
folosesc cuvinte instructiune mai mari pentru a coda un numar sporit de operatii care sunt executate
in paralel. Cresterea costului si a puterii consumate sunt compensate de cresterea nivelului de
performante.

12.1.3 Arhitecturile VLIW si superscalare


Procesoarele cu performante imbunatatite realizeaza acest lucru in special prin posibilitatea
de a executa mai multe operatii intr-un ciclu instructiune. Totusi, folosirea unui hardware si a unor
instructiuni mai complexe creeaza probleme suplimentare pentru programarea in limbaj de
asamblare.
Cresterea gradului de paralelism in functionare este o alta cale de crestere a performantelor
procesoarelor DSP. Au fost create noi arhitecturi care folosesc instructiuni simple pentru codarea

2
operatiilor, dar care extrag simultan grupuri de instructiuni pe care le executa in paralel. Folosirea
instructiunilor simple simplifica decodarea si executia ceea ce conduce la o crestere a frecventei
tactului fata de procesoarele conventionale.
Texas Instruments a fost primul producator care a folosit aceasta abordare pentru
procesoarele DSP comerciale. In 1996 TI a creat primul procesor, TMS320C62xx, care
implementeaza acest concept, si care a depasit in momentul aparitiei viteza procesoarelor existente.
Ulterior si alti producatori au folosit acest concept pentru realizarea unor procesoare cu performante
inalte (Analog Devices, Motorola, Lucent Technologies). In prezent exista doua categorii de
procesoare care executa in paralel mai multe instructiuni: procesorele VLIW (Very Long Instruction
Word) si procesoarele superscalare. Cele doua arhitecturi sunt similare, diferenta constind in
modul in care sunt grupate instructiunile care sunt executate in paralel.
Cele doua arhitecturi folosesc mai multe unitati de executie, fiecare comandata de propria
instructiune. In Fig. 12.2 este prezentata unitatea de executie si magistrala procesorului
TMS320C62xx (TI) care contine opt unitati de executie independente. Un procesor DSP de tip
VLIW extrage in mod curent pina la opt instructiuni, care sunt parti ale unei intructiuni codate cu un
cuvint instructiune “lung”. Pe dealta parte, procesoarele superscalare manipuleaza si executa de
asemenea citeva instructiuni intr-un ciclu, de regula intre doua si patru.

Fig. 12.2

Intr-o arhitectura VLIW limbajul de asamblare stabileste care instructiuni sunt executate in
paralel. Deoarece instructiunile sunt grupate in momentul in care este asamblat programul,
ordonarea nu se modifica cind programul este executat. Prin contrast, procesoarele superscalare
contin unitati hardware specializate care stabilesc care instructiuni sunt executate, in functie de
disponibiltatea resurselor, schimbind astfel sarcina de manipulare in paralel a instructiunilor de la
programator la procesor. Procesorul poate grupa instructiunile in mod diferit in momentul executiei.

3
Diferentele in modul in care sunt manipulate in paralel instructiunile sunt importante in contextul
folosirii lor in aplicatiile DSP executate in timp real.
Deoarece procesoarele superscalare manipuleaza dinamic operatiile executate in paralel este
foarte greu pentru programator sa stabileasca timpul de executie a unui segment de program.
Timpul de executie poate diferi mult in functie de datele care sunt accesate; de exemplu, timpul de
executie difera atunci cind procesorul executa o bucla prima data sau cind o executa a treia oara.
Aceasta incertitudine in ceeea ce priveste timpul de executie poate crea probleme pentru utillizator
atunci cind conditiile de operare in timp real sunt critice. Masurarea timpului de executie la nivel
hardware nu rezolva problema deoarece timpul de executie difera deseori. Stabilirea timpului de
executie in conditiile cele mai defavorabile si folosirea acestuia pentru a aprecia conditiile de timp
real este o alta cale de a rezolva problema. Dar aceasta poate conduce la o optiune pentru
procesoare care poseda o viteza de lucru mult peste necesitati. Caracterul dinamic al functionarii
ingreuneaza si operatia de optimizare a software-ului. De aceea procesoarele DSP evita folosirea
unor facilitati dinamice, cum sunt executia superscalara si incarcarea dinamica a cache-ului.
Cu toate ca instructiunile sunt simple si ele codifica in mod curent un singur tip de operatie,
multe procesoare VLIW folosesc cuvinte instructiune mai lungi pentru codarea operatiilor decit
procesoarele DSP conventionale (de exemplu, 32 biti in loc de 16 biti). Intr-o arhitectura VLIW
cuvintele instructiune mai lungi sunt folosite pentru a specifica informatii pentru unitatile
functionale care executa operatiile. Cuvintele instructiune mai lungi permit specificarea uniforma a
unui set mai extins de registre (fata de setul redus de registre specializate folosite de procesoarele
DSP conventionale). De asemenea folosirea cuvintelor instructiune mai lungi imbunatateste
consistenta si regularitatea setului de instructiuni. Aceste instructiuni au mai putine restrictii in
privinta folosirii registrelor si a modurilor de adresare, usurind in felul acesta sarcina
compilatorului.
Exista si unele dezavantaje datorate folosirii intense a instructiunilor simple. Deoarece
fiecare instructiune VLIW estre mai simpla decit la un procesor DSP conventional, procesoarele
VLIW au tendinta sa foloseasca mai multe instructiuni decit este necesar pentru o sarcina data.
Combinat cu faptul ca instructiunile sunt codate cu cuvinte mai lungi rezulta un necesar mai mare
de memorie de program; in consecinta, prin marirea resurselor de memorie, circuitul devine mai
scump.
Cind un procesor manipuleaza mai multe instructiuni intr-un ciclu el trebuie sa stabileasca
care unitate de executie va manipula fiecare instructiune. In mod curent procesoarele VLIW
identifica unitatea functionala care executa o anumita operatie pe baza pozitiei instructiunii simple
in cadrul cuvintului instructiune lung. Arhitecturile VLIW recente folosesc mecanisme de

4
redirectionare a informatiilor continute de fiecare subinstructiune catre unitatea functionala care va
executa operatia respectiva.
Pentru a executa instructiuni in paralel, procesoarele VLIW si superscalare trebuie sa posede
facilitati pentru decodare, magistrale, registre si largime de banda suficienta. In mod curent
procesoarele VLIW folosesc fie magistrale largi fie un numar mai mare de magistrale pentru
accesul memoriei, pentru a alimenta cu date unitatile multiple de executie. Arhitectura
procesoarelor VLIW seamana atit cu cea a procesoarelor de uz general cit si cu cea a procesoarelor
DSP conventionale. Deseori din structura procesoarelor VLIW lipsesc facilitati functionale prezente
la procesoarele DSP conventionale. De exemplu, procesorul TMS320C62xx nu poseda instructiuni
de executarea a buclelor cu incarcare zero; toate operatiile de executare a buclelor sunt realizate
prin software. Reducerea performantelor din acest motiv este nesemnificativa deoarece procesoarele
VLIW sunt capabile sa execute mai multe operatii in paralel. Operatiile necesare pentru executarea
buclei pot fi executate in paralel cu alte tipuri de operatii. Un alt avantaj al acestor arhitecturi
consta in marirea vitezei de operare folosind o arhitectura mai simpla si mai regulata si cu un set de
instructiuni care permite obtinerea unui cod eficient dupa compilare. Totusi procesoarele VLIW si
superscalare prezinta un consum mai mare fata de procesoarele conventionale deoarece atentia a
fost concentrata spre obtinerea unei viteze cit mai mari de operare.
Deoarece aceste categorii de procesoare folosesc o cantitate mai mare de memorie si
consuma mai multa energie, ele sunt folosite in aplicatiile care cer o mare putere de calcul dar care
nu sunt foarte sensibile la consumul energetic. Un procesor VLIW poate fi utilizat la o statie pentru
telefonie mobila, dar nu poate fi inclus intr-un telefon celular. O exceptie o constituie procesorul
VLIW, SC140, realizat de firmele Motorola si Lucent, care datorita consumului redus poate fi
utilizat si in aplicatiile portabile.

12.1.4 Arhitectura SIMD


SIMD (Single-Instruction Multiple-Data) este o tehnica arhitecturala care poate fi utilizata
de oricare din categoriile de procesoare prezentate anterior. Arhitectura SIMD permite
imbunatatirea performantelor pentru anumiti algoritmi prin executarea de mai multe ori a unei
operatii folosind diferite date. De exemplu, o instructiune de multiplicare SIMD poate executa doua
sau mai multe inmultiri cu diferite seturi de date de intrare, in paralel, intr-un singur ciclu de tact.
Aceasta tehnica poate conduce la o crestere semnificativa a vitezei de calcul pentru unele operatii
cu vectori care sunt folosite in aplicatii multimedia si de prelucrare a semnalelor.
Particularitatile hardware pentru realizarea posibilitatilor SIMD variaza mult la diferite
procesoare. De exemplu, firma Analog Devices a modificat aritectura DSP conventionala pentru
operatii in virgula mobila in cazul procesoarului ADSP-2106x, adaugind o noua unitate de executie

5
identica cu cea originala. Noul procesor este ADSP-2116x. Fiecare set de unitati de executie a
procesorului ADSP 2116x contine o unitate MAC, un ALU si un shifter, fiecare cu propriul set de
registre. Arhitectura imbunatatita poate manipula o singura instructiune si o poate executa in paralel
pe ambele cai de date folosind date diferite, rezultind practic o dublare a performantelor pentru
executarea anumitor algoritmi.
Din contra, in loc de a fi prevazute mai multe unitati de executie identice, unele procesoare
DSP pot “imparti” unitatile de executie existente (unitatea ALU sau MAC) in mai multe subunitati
care prelucreaza date de format mai redus. De exemplu, procesoarele care prelucreaza operanzi
stocati in registre “lungi” (de exemplu, 32 biti) pot trata aceste registre ca un set de registre de
lungime mai mica (doi operanzi de 16 biti sau patru de 8 biti). Un exemplu de procesor cu facilitati
SIMD este TigerSHARC de la Analog Devices, care combina doua tehnici SIMD: o instructiune
poate controla functionarea celor doua unitati functionale ale procesorului si acceasi instructiune
poate comada functionarea unei unitati de executie impartita in unitati mai mici (un ALU sau un
MAC divizat). Folosid aceste capabilitati SIMD ierarhizate procesorul poate executa opt
multiplicari pe 16 biti intr-un ciclu, dupa cum se observa din Fig. 12.3.

Fig. 12.3

Totusi valorificarea posibilitatilor SIMD necesita un efort suplimentar din partea


utilizatorului. Programatorul trebuie sa organizeze datele in memorie astfel incit prelucrarea SIMD
sa poata fi executata cu viteza maxima, iar algoritmii trebuie modificati pentru a exploata la
maximum resursele procesorului. Tehnica SIMD este productiva acolo unde pot fi prelucrare date in
paralel; in cazul algoritmilor seriali rezultatele nu justifica folosirea ei.

12.2 Alternative pentru procesoarele DSP


12.2.1 Procesoare de uz general performante
Multe din procesoarele de uz general (Pentium, Power PC) au fost imbunatatite cu facilitati
pentru sporirea posibilitatilor de calcul. Cea mai comuna modificare o reprezinta adaugarea unor
instructiuni SIMD setului de baza (de exemplu, instructiunile MMX sau SSE pentru procesorul
Pentium sau AltiVec pentru Power PC). Aceasta abordare este buna pentru procesoarele care au

6
multe resurse (magistrale, registre, ALU), care pot fi tratate ca resurse multiple, dar mai mici. De
exemplu, un CPU cu magistrala de date de 64 de biti, registre de 64 de biti si ALU de 64 de biti
poate fi considerat ca avind de patru ori mai multe magistrale (respectiv registre sau ALU) de 16
biti, precizia curent folosita de algoritmii DSP. Folosind aceasta abordare procesoarele de uz
general pot realiza operatii DSP mai rapid decit un procesor DSP performant datorita eficientei
tratarii SIMD si a vitezei de lucru superioare specifica procesoarelor de uz general. Procesoarele de
uz general opereaza in prezent la frecvente mai mari de 2 GHz, in timp ce procesoarele DSP
performante folosesc frecvente de 200÷250 MHz.

12.2.2 Procesoare hibride


O analiza a unui sistem digital complex arata ca nici una dintre categoriile de
microprocesoare existente nu satisface in totatiltate cerintele aplicatiilor.
Arhitecturile RISC sunt folosite intens in aplicatiile dedicate, in primul rind datorita
suportului pentru programarea in limbaj de nivel inalt de care dispun, pentru existenta
compilatoarelor cu optimizare a codului si pentru performantele lor in aplicatiile de timp real. Cu
toate ca viteza de lucru este mare ele au posibilitati limitate pentru operatiile de prelucrare a
semnalelor.
Folosirea unui procesor de uz general pentru realizarea operatiilor de control are de
asemenea multe limitari. Microcontrolerele sunt procesoare destinate operatiilor de control, cerute
de multe aplicatii. Aceste procesoare au o putere de prelucrare redusa si au un pret de cost relativ
scazut.
Procesoarele DSP sunt potrivite pentru a executa rapid bucle repetitive de instructiuni
specializate (de exemplu, operatii de multiplicare si acumulare) dar nu au aceleasi posibilitati pentru
multiprogramare. De asemenea, raspunsul la intreruperi nu este intotdeauna suficient de rapid
pentru a satisface cerintele unei aplicatii de timp real. De aceea, in multe situatii este necesara
integrarea celor trei categorii de procesoare pentru a satisfacte toate cerintele unei aplicatii.
Exista aplicatii unde cuplarea unui microcontroler cu un procesor de semnal este naturala.
Un exemplu este cel al telefoanelor celulare care trebuie sa realizeze atit activitati de supervizare cit
si operatii de prelucrare a vocii. Activitatile de supervizare sunt executate de un microcontroler, iar
cele de prelucrare a semnalului vocal sunt executate de procesorul DSP. De aceea au fost realizate
procesoare duale care contin un microcontroler si un procesor DSP in acelasi cip. Aceasta abordare
a fost folosita de firmele Hitachi, ARM, Lexra, Siemens. Multe din aceste procesoare hibride ofera
performante de prelucrare care exista la procesoarele DSP uzuale dar au si facilitatile
microcontrolerelor din care au provenit.

7
12.3 Arhitectura TriCore – Siemens

Arhitectura TriCore dezvoltata de firma Siemens reprezinta cel mai bun exemplu de
imbinare a facilitatilor celor trei clase de microprocesoare: procesoarele de uz general,
microcontrolerele si procesoarele DSP. Aceasta simbioza este intilnita in cazul multor aplicatii
complexe, unde folosirea unui singur tip de microprocesor nu asigura performantele dorite. In Fig.
12.4 este sunt prezentate etapele integrarii celor trei unitati intr-un procesor unic.
TriCore-1 este primul nucleu pe 32 de biti care integreaza functionalitatea unui
microcontroler cu un procesor DSP si care este destinat realizarii sistemelor care opereaza in timp
real. Alte avantaje oferite de acest procesor hibrid sunt: consumul energetic redus, gabaritul mai mic
decit al unui sistem realizat cu componente separate, pretul de cost competitiv. Cerintele
arhitecturale care sunt satisfacute de TriCore-1 sunt sintetizate in Tabelul 12.1. Arhitectura setului
de instructiuni TriCore defineste un procesor optimizat pentru operare multitasking, cu resurse mari
de memorie interna si facilitati de comutare rapida a contextului. TriCore-1 lucreaza ca un
multiprocesor virtual, capabil sa execute in timp real operatii complexe, comandate prin intreruperi.
Nivelul ridicat al performantelor este datorat urmatorilor factori:
- Setul unificat de instructiuni. Procesorul poate executa atit activitati de control cit si
operatii DSP cu un set de bogat de formate de date, de moduri de adresare si cu un numar mare de
registre.
- Comutarea rapida a contextului. Largimea mare a magistralei pentru accesul
memoriei (tipic 256 de biti) permite comutarea functionarii de la o activitate de control la o
activitate DSP in mai putin de 100 ns.
- Resurse mari de memorie interna. Nucleul poseda pina la 2 Mbytes memorie DRAM
si pina la 512 Kbytes memorie flash.
- Viteza de operare mare. Procesorul executa controlul direct al perifericelor interne,
poseda mecanisme de protectie a memoriei si pentru depanare software.

Principalele beneficii ale noii arhitecturi sunt:


 Multiprocesare virtuala. Combinatia dintre facilitatile arhitecturii hibride, comutarea
rapida a contextului si memoria interna de mare capacitate reprezinta un suport puternic pentru
lucrul in regim de multiprogramare.
 Functionarea in timp real. Arhitectura procesorului TriCore-1 este dedicata aplicatiilor de
timp real. Viteza de prelucrare si timpul de raspuns la intreruperi sunt principalii factori care
definesc un procesor de timp real.

8
 Sistem unitar de instrumente software. Proiecatntul de sistem are la dispozitie un sistem
unic de instrumente software pentru programarea nucleului constind din compilatoare, biblioteci de
functii si pentru algoritmi de prelucrare, sisteme de operare de timp real, emulatoare, etc.
 Sistem integrat on-chip. Deoarece contine majoritatea componentelor unui sistem (unitate
centrala hibrida, memorie, periferice) nucleul reprezinta un sistem integrat. Folosirea procesorului
TriCore reduce sensibil costul sistemului fata de implementarile care folosesc procesoare diferite
pentru control si pentru prelucrarea semnalelor.

Fig. 12.4

In Fig. 12.5 este prezentat un sistem pentru comanda unui periferic multifunctional complex
(printer-scanner-fax-copiator) care foloseste posibilitatile procesorului TriCore-1. Sunt utilizate
posibilitatile RISC si DSP pentru a executa in timp real cele trei operatii de baza: printarea,
scanarea si comunicatia cu fax-modem. Memoria DRAM interna asigura memoria de cadru pentru
operatia de scanare.
Un alt exemplu de folosire a posibilitatilor procesorului hibrid este dat in Fig. 12.6. Cresterea
capacitatii de stocare pentru unitatea HDD implica cresterea performantelor DSP pentru algoritmii
de comanda. In plus cresterea largimii de banda pentru transferul datelor necesita performante
superioare pentru controler. TriCore-1 satisfece deplin cele doua cerinte. De exemplu, o parte din
memoria cache pentru disc poate fi localizata in memoria DRAM a nucleului TriCore.

9
Fig. 12.5

Fig. 12.6

10
Tabelul 12.1

11
Capitolul 19

Aplicatii ale procesoarelor digitale de semnal

Cel mai bun mod de a înţelege impactul tehnologiei digitale de prelucrare a


semnalelor este de a analiza unele din aplicaţiile unde PDS –ul a stabilit un
avantaj clar în faţa altor tehnologii. Trecând în mediul digital, dezvoltatorii au
depăşit propriile aşteptări şi au obţinut rezultate mult superioare decât erau
posibile cu prelucrarea analogică de semnal. Unele din domeniile în care
procesoarele digitale de semnal şi-au dovedit pe deplin avantajele sunt :
- Procesarea video digitală
- Procesarea audio digitală
- Controlul digital al echipamentelor electronice
- Sisteme de securitate
- Echipamente biometrice de securitate

Prelucrarea video digitală

Câteva din echipamentele electronice care au la baza funcţionării principiile


prelucrării digitale de semnal sunt :
1. DVD Player şi Recordere
2. Televizoarele LCD
3. Camerele foto digitale
4. Camerele video digitale
5. Telefoanele mobile, PDA-urile
6. Echipamentele de video conferinţă bazate pe IP
7. Camerele de supraveghere bazate pe IP
Cu ceva timp în urmă, standardul MPEG-2 a fost cel care a stârnit interesul
şi provocările în lumea video digitală. Cu timpul, performaţele prelucrărilor video
s-au îmbunătăţit şi au luat diverse forme .Windows Media Video oferă o puternică
alternativă în mediul video digital prin standardul H.264 (cunoscut şi ca MPEG-4
Part 10 sau AVC, de la Codare Video Avansată), oferind îmbunătăţiri
semnificative ale benzii de transfer în comparaţie cu MPEG-2, pentru aplicaţiile cu
şi fără fir, unde calitatea imaginii şi calitatea serviciilor sunt esenţiale.
Complicarea problemei apare din faptul că fiecare standard suportă diferite
rezoluţii de afişare, latenţă şi anumite condiţii de bandă de transfer. Televiziunile
trebuie să furnizeze rezoluţii înalte, în timp ce echipamentele portabile cu
conectivitate wireless au nevoie de procesări rapide pentru a reduce consumul de
energie. La acestea adaugăm faptul că standardele multimedia sunt schimbate
constant pe masură ce sunt descoperite noi tehnici avansate de compresie.
Abilitatea de a suporta standardele existente şi la fel de bine de a suporta
interoperabilitatea sau chiar upgradarea la noile standarde care apar, este critică
în adoptarea unei anumite infrasctructuri video digitală.
Mai complicate decât standardele video sunt mecanismele de management
ale drepturilor digitale (DRM- Digital Rights Management), proiectate pentru a
proteja informaţia digitală împotriva copiilor neautorizate. Caracteristici precum
deplasarea unei secvenţe video în timp, cum ar fi, de exemplu, pauza într-o
secvenţa transmisă live sau reproducerea unui material înregistrat, depind de
DRM. Producătorii de conţinut video din zilele noastre tind spre dezvoltarea
propriilor mecanisme DRM, în timp ce standardizarea lor este înca la început.
Pagina 1 din 11
Fără un suport flexibil al diverselor mecanisme DRM, echipamentele ar fi limitate
la conţinutul pe care îl pot reproduce, reducând astfel atracţia cumpărătorilor
pentru astfel de echipamente.
Bazele flexibilităţii stau în programarea software, oferind soluţiile cu cele
mai mici costuri pentru a întreţine viabilitatea hardware. ASIC-urile (Application
Specific Integrated Circuit – circutite integrate specializate) oferă performanţe
mari, consum redus de energie şi costuri reduse pentru a implementa producţia
de volum a echipementelor video, dar pentru a suporta standarde multiple este
necesar un număr proporţional de ASIC-uri, conducând astfel la echipamente
mari ca dimensiuni, putere consumată mai mare, costuri mai mari şi creşterea
dificultăţii în migrarea către standardele următoare.
Cu o arhitectură programabilă de Procesor Digital de Semnal (PDS),
dezvoltatorii pot folosi acelaşi chip de silicon pentru orice standard. Schimbarea
software-ului poate duce la obţinerea unui echipament complet diferit.
Echipamentele programabile pot fi upgradate pentru a îmbunătăţi performanţele
aplicaţiilor. Important de ştiut este faptul că echipamantele programabile pot
suporta noile standarde ce se dezvolta din cele precedente implementate deja de
echipament. Suportul standardelor succesive în cazul ASIC, presupune existenţa
mai multor chip-uri. PDS-urile programabile din infrastructurile video digitale duc
la furnizarea unei înalte calităţi pe diverse pieţe , folosind aceeaşi infrastructură
hardware. În loc de a avea diferite carduri pentru fiecare standard video, este de
preferat folosirea unui singur card generic care poate fi modelat software pentru
a servi tuturor cerinţelor fluxului de date video.
În consecinţă, cardurile programabile pot prelucra echilibrat fluxurile de
date video, crescând asfel eficienţa, în timp ce cardurile specializate rulează la
capacitate maximă chiar dacă un standard particular are o cerinţă de sistem mai
mică. De exemplu, un producător poate configura un sistem să suporte
standardul MPEG-2 şi pe măsură ce clienţii migrează către standardul H.264, se
poate introduce un nou software pentru a folosi acelaşi echipament hardware cu
noul standard.
Mulţi producători îşi îndreaptă atenţia către sistemele “Triple Play” care
suportă voce, video şi date. O arhitectură programabilă PDS face posibilă
îmbinarea eficientă a acestor tipuri diferite de trafic în reţea şi, în acelaşi timp,
duce la îmbunătăţirea serviciilor oferite.
Având în vedere că există o gamă variată de produse video şi un număr
mare de furnizori, devine esenţial ca echipamentele video să aibă suficiente
resurse pentru a fi capabile de a converti conţinutul între diversele standarde
video. De exemplu, un semnal de intrare poate fi de înaltă definiţie, dar
echipamentul poate să ruleze doar formate standard. În acest caz, echipamentul
respectiv trebuie să fie capabil să redea imaginea cu o pierdere cât mai mică de
calitate.
Pentru multe aplicaţii, conversia are loc în infrastructura reţelei într-un
punct numit “poarta” (gateway), unde performanţa este totul. Pentru a conserva
lăţimea de bandă, poarta poate transforma o secvenţă voluminoasă MPEG-2 într-
o secvenţă redusă H.264. Cardul trebuie să decodeze formatul MPEG-2 şi apoi
să-l codeze în formatul H.264. Arhitecturile unde decodarea şi codarea sunt
integrate, aşa cum sunt în cazul sistemelor programabile, oferă o performanţă
ridicată, calitate, eficienţă şi utilizarea optimă a lărgimii de bandă.
De exemplu, atât MPEG-2 cât şi H.264 utilizează cadrele I pentru a stabili
imaginea de referinţa de înaltă calitate şi cadrele B pentru a descrie micile

Pagina 2 din 11
diferenţe între cadrele asemănătoarea sau chiar similare. Prin procesarea
integrată, decoderul MPEG-2 poate transfera informaţiile critice către codorul
H.264, incluzând aici locaţiile cadrelor I şi care sunt vectorii de mişcare care au
fost folosiţi pentru a coda cadrele. Dacă această conversie este acceptabil de
simplă, cum ar fi reducerea rezoluţiei sau reducerea vitezei cadrelor, codorul
poate furniza cadre B mai puţin calitative în favoarea cadrelor I, pentru a
îmbunătăţi calitatea codării.
Prin conversia cu ASIC, unde decodarea si codarea se fac independent,
astfel de informaţii nu sunt disponibile. Ca rezultat, codorul trebuie să creeze un
nou vector de mişcare şi să selecteze propriile cadre I. Selectarea unor vectori de
mişcare diferiţi decât cei care au fost folosiţi de codarea iniţială, duc la
degradarea calitaţii imaginii şi în acelaşi timp la un consum mai mare a lărgimii
de bandă. Pierderea de calitate este dată de posibilitatea ca un codor să se
desicronizeze faţă de decoder şi să fie tentat să folosească un cadru B ca şi cadru
I.
Pierderea sincronizării şi crearea unor vectori de mişcare diferiţi duc atât la
o pierdere semnificativă de calitate cât şi la o creştere a lărgimii de bandă.
Pierderile din conversie pot fi neglijate atunci când informaţia poate fi prelucrată
atât de decodor cât şi de codor.
Pentru echipamentele video de uz general, TI oferă familia DM64X, o
generaţie de procesoare media digitale flexibile. Acestea oferă procesare digitală
de semnal cu o performanţă superioară pentru o gamă largă de aplicaţii. Sunt
potrivite pentru prelucrea video, sunt construite pe o arhitectură VLIW (Very
Long Instruction Word) îmbunătăţită cu instrucţiuni video specifice, asigurând
performanţe excelente şi un flux optimizat de date. Echipat cu suficientă memorie
pentru a prelucra aplicaţii video, un modul DMA (Direct Memory Acces) optimizat
pentru a creşte concurenţa datelor de intrare/iesire, periferice video esenţiale
integrate şi abilitatea de a prelucra doua fluxuri de 64 de biţi pe fiecare ciclu,
generaţia DM64X oferă performanţe superioare pentru prelucrare video digitală.
De asemenea, pentru a furniza un produs eficient, este esenţială alegerea
unei combinaţii corecte de periferice pentru aplicaţii. PDS-urile trebuie să fie
capabile să interacţioneze cu diverse tipuri de memorie, standarde de BUS de
sistem şi conectivitate cu diverse porturi: USB şi 1394. Procesoarele de semnal
avansate, au implementate module de securitate prin care utilizatorii nu pot
rescrie soft-ul, decât cu utilizarea unui ID, pe care nu-l au decât dezvoltatorii şi
producătorii. Aceste module de securitate ajută dezvoltatorii să prevină ugrade-
urile neautorizate ale echipamentelor care distrug mecanismele DRM.
Noua tehnologie de la Texas Instruments, DaVinci, face inovaţia posibilă în
mediul digital pentru echipamentele mobile. DaVinci este optimizat pentru
sistemele video digitale şi include un procesor digital de semnal bazat pe SoC (
System on Chip), codecuri multimedia, ASP (Advanced Simple Profile), cadre şi
instrumente de dezvoltare. Astfel se pot crea aplicaţii unice optimizate pentru
nevoile particulare ale fiecărui sistem.

Prelucrare audio digitală

Sunt multe modalităţi prin care se poate ajunge la calitate. Unul din ele
este să prelucrezi cât mai bine un semnal de înalte definiţie. De exemplu,
utilizând un PDS performant, putem trece de la secvenţe de 48 KHz la secvenţe
de 96 KHz sau chiar 192 KHz. Calitatea este de asemenea bazată pe numarul de

Pagina 3 din 11
canale pe care echipamentul poate să-l suporte. Oricum, dublarea frecvenţei unei
secvenţe sau a numărului de canale, necesită dublarea cerinţelor de procesare.
Ceea ce îi stimulează pe dezvoltatorii de echipamente audio profesionale, din
punct de vedere al calităţii, este numărul mare de modalităţi de procesare a
semnalului: multiplele filtrări ce se pot aplica semnalului duc la un rezultat mai
bun al calităţii sunetului. În timp ce sute de algoritmi de prelucrare audio sunt
disponibili, mulţi producători de echipamente originale îşi diferenţiază
profesionalismul prin propriile filtre audio speciale, demonstrând că
programabilitatea este cerinţă esenţială.
Modalitatea clasică de a măsura performanţele unui echipament audio
profesional este numărul de biquad-uri (un anumit tip de filtrare liniară, ce
implementează funcţia de transfer ca raport a doua funcţii quadratice) pe care
poate să le realizeze pe secundă. În timp ce MFLOPS (millions of floating-point
operations per second) este un etalon de măsură pentru procesoarele în virgulă
mobilă, filtrul biquad este etalonul pentru mulţi algortimi audio, ce poate da
informaţii precise cu privire la performanţă. Mulţi producători, în loc să folosească
propriile teste, rulează testul biquad pentru a evalua performanţele hardware şi
software, având astfel un raport de calitate precis chiar dacă implementarea se
face pe diverse platforme.
Filtrarea standard biquad necesită cinci multiplicări, de aceea procesoarele
digitale de semnal, cum este de exemplul generaţia C67X de la Texas
Instruments, necesita 2.5 cicli pe biquad. Unii producatori afişează caracteristici
de calitate utilizând testul biquad modificat, cu doar patru multiplicări, dar
această practică generează informaţii inexacte cu privire la performanţele reale
ale aplicaţiilor. Cu cât testul biquad este mai bun, cu atât mai multe filtrări pot fi
implementate, obţinându-se astfel o calitate mai bună a semnalului audio.
Familia C67X de procesoare digitale de semnal de la Texas Instruments
este o platformă ideală pentru aplicaţiile audio profesionale. Arhitectura pe 32 de
biţi în virgulă mobilă dă posibilitatea dezvoltatorilor să realizeze rapid prototipuri
de algoritmi audio complecşi. Având o arhitectură pe 32 de biţi – 24 de biti
pentru mantisă şi 8 biţi pentru exponent – oferă dezvoltatorilor posibilitatea de a
captura mai mult din gama dinamică a sunetului; calitatea CD-ului audio pe 16
biti nu are acelaşi raport de calitate al semnalului – SNR – faţă de cel ce poate fi
obţinut pe 24 biţi. Combinând instrucţiuni precise şi permiţând operaţii pe 32 de
biţi, se îmbunătăţeşte foarte mult eficienţa procesului de prelucrare.
Lucrând în virgulă mobilă, producătorii au abilitatea de crea rapid algoritmi,
de a-i evalua şi de a-i îmbunătăţi. Nu trebui să-şi faca griji pentru depăşirile
numerice şi se pot focaliza pe obţinerea rapidă a prototipurilor. Pentru a ajuta la
dezvoltarea rapidă de aplicaţii, mulţi producători preferă să creeze prototipuri de
algoritmi în virgulă mobilă şi apoi să facă trecerea către virgula fixă pentru a
reduce costul hardware ( procesoarele în virgulă fixă sunt de obicei mai ieftine
decat cele în virgulă mobilă). Pentru acest timp de trecere de la virgula mobilă la
virgula fixă, Texas Instruments oferă instrumente specifice care uşurează mult
procesul.
În realitate, chipurile de silicon pentru modulele de memorie şi periferice
sunt mai scumpe decât procesoarele de semnal. Marii producatori şi-au îndreptat
atenţia către producţia de procesoare în virgulă mobilă, pentru ca dezvoltatorii să
poată trece peste procesul de conversie a aplicaţiilor de la virgula mobilă la
virgula fixă, care de obicei durează între 4 şi 6 luni. Astfel dezvoltatorii trec direct

Pagina 4 din 11
la producţia în virgulă mobilă, obţinând astfel o reducere a costurilor, a timpului
de lucru şi o îmbunătăţire a poziţiei pe piaţă.
Arhitectura VLIW (very long instruction word) a familiei de procesoare
C67X este bazată pe cel mai avansat, optimizat şi cunoscut compilator C pentru
PDS-uri, furnizând performanţe superioare ale aplicaţiilor şi uşurinţă în
programare. Avantajul de a fi posibilă programarea în C în detrimentul
programării în assembler nu poate fi trecut cu vederea. Optimizarea manuală în
assembler este una din cele mai dificile proceduri .
Codul algoritmului este proprietatea intelectuală a companiei care l-a creat,
iar acest lucru nu trebuie ascuns. Algoritmii de procesare audio tind să fie din ce
în ce mai complicaţi, iar pentru a-i controla este nevoie de un limbaj de
programare de nivel înalt, aşa cum este C. Lucrand în C, oricine altcineva în afară
de dezvoltatorul care a scris prima dată algoritmul, poate modifica şi îmbunătăţi
codul sursă.
Dezvoltarea rapidă a prototipurilor software reprezintă jumătate din
provocările proiectanţilor. Din acest motiv, marii producători de procesoare de
semnal pun la dispoziţia dezvoltatorilor seturi complete de instrumente atât
hardware (flexibilitatea porturilor de intrare/ieşire, flexibiliate în configurare) cât
şi software (module şi biblioteci predefinite) care ajută foarte mult la proiectarea
rapidă a aplicaţiilor.

Controlul digital al echipamentelor electronice

De obicei, controlul unui motor implică funcţionarea mai multor


componente analogice coordonate de un microcontroler. Implementările normale
se fac în cascadă, încercându-se obţinerea unor rezultate bune şi rapide prin
folosirea unor prelucrări matematice cât mai puţin complexe, care să poată fi
rulate de microcontrolerele ieftine. Schimbarea oricărui aspect al proiectării, de
obicei, necesită remodelarea algorimului. Controlerele digitale de semnal sunt o
combinaţie între tehnologia procesoarelor digitale de semnal şi cea a
microcontrolerelor, obţinându-se o componentă electronică de prelucare a
semnalului în timp real, cu sensibilitatea şi cu capacitatea de a prelucra algoritmi
complecşi de control caracteristice PDS-urilor, în acelaşi timp cu controlul
perifericelor şi al întreruperilor, caracteristic microcontrolerelor. Rulând algoritmi
sofisticaţi, eficienţa controlerului poate fi controlată dinamic. În loc de a regla
manual un motor să funcţioneze la anumiţi parametrii, cum se întâmplă în cazul
implementărilor analogice în cascadă, un controler digital de semnal poate
determina automat care sunt parametrii actuali ai unui motor şi poate îmbunatăţi
aceşti parametrii prin algoritmi de control.
Mutând controlul în mediul digital, dezvoltatorii pot obţine diverse niveluri
de eficientizare. Cu ajutorul performanţelor ridicate ale procesoarelor digitale de
semnal, dezvoltatorii pot implementa algoritmi complecşi, cum ar fi controlul
parametrilor de funcţionare, care cresc eficienţa motorului, făcând astfel posibilă
utilizarea motoarelor mai mici, mai puţin zgomotoase, mai ieftine şi mai puţin
consumatoare de energie, pentru a ajunge la mai mulţi cai putere, decât ar fi fost
posibil folosind prelucrările analogice.
Trecând din analog în digital, de asemenea, devine posibilă eficientizarea
aplicaţiilor prin integrarea diverselor module adiţionale. Controlerele digitale de
astăzi oferă o gamă variată de periferice optimizate pentru diverse aplicaţii de
control, reducând astfel costurile de producţie. În plus, datorită posibilitaţilor de

Pagina 5 din 11
modelare software a proceselor analogice, dezvoltatorii pot modela proiectele
fără să fie nevoiţi să refacă arhitectura platformei de producţie.
Controlerele digitale fac, de asemnea, posibilă şi eficientizarea altor
operaţii. De exemplu, dezvolatorii pot implementa cuplul la zero rotaţii pe minut.
Cu alte cuvinte, sistemul poate avea cuplu înainte ca motorul să înceapă rotirea.
Acest lucru este posibil doar cu algoritmi sofisticaţi, imposibil de realizat cu
componente analogice. Dezvoltatorii pot, de asemenea, să corecteze orice
deficienţă de energie cu PFC (Power Fact Correction), aceasta fiind o altă funcţie
intens folosită.
Controlul digital oferă posibilitatea unei funţionări simple, nerealizabile cu
componente analogice. În afară de dirijarea motorului, controlerul digital poate
monitoriza răspunsul senzorilor şi îl poate încorpora în operaţiile motorului. De
exemplu, răspunsul sistemului de ştergătoare la o maşină poate fi folosit pentru a
determina cât de multă apă este prezenta pe parbriz. Astfel viteza de ştergere
poate fi ajustată ducând la o mai bună vizibilitate pentru sofer.
Analiza rezultatelor în detaliu poate duce la obţinerea de funcţii ce nu există
în sistemele analogice. De exemplu, SawStop a dezvoltat un tip de senzor pentru
maşinile de tăiat lemne, care, folosind procesoare de semnal, poate citi
caracteristicile lamei de tăiat de 1000 de ori pe secundă. Senzorul este capabil să
determine când fierăstrăul taie un lemn şi când taie un deget. Senzorii SawStop
funţionează în timp real, procesând rapid informaţia şi activând întreruperea în
cazul în care apare un eveniment. Poate opri lama fierăstrăului în mai puţin de 2
ms de la detectarea faptului ca lama taie altceva decat un material din lemn.
Un exemplu de controler digital avansat este Texas Instruments C2000,
caracterizat prin:
- viteza de execuţie, bucle rapide;
- comunicaţia cu perifericele prin liste FIFO, care reduc substanţial
încărcarea CPU-ului;
- convertoare analogice digitale ultra rapide;
- arhitectură pipeline, ce dă posibilitatea citirii şi scrierii în acelaşi timp, pe
acelaşi ciclu;
Un punct forte pentru aplicaţiile de control al motorului prin procesoare
digitale de semnal este asemănarea cu caracteristicile microcontrolerelor la
partea de întreruperi şi la interfaţa cu utilizatorul. Dezvoltatorii au nevoie de
puterea de procesare a procesoarelor de semnal fără a renunţa la controlul şi
uşurinţa în programare oferite de microcontrolere. Managementul întreruperilor
este foarte important în controlul digital. Un procesor trebuie să fie capabil să
reacţioneze rapid, primind date de la senzori în acelaşi timp ce prelucrează
instrucţiuni de control. În consecinţă, întreruperile de prioritate mare trebuie să
fie capabile să oprească întreruperile de prioritate scăzută pentru a asigura lipsa
priederilor de date şi securitatea controlului integrat.
Procesoare de semnal au nevoie de un singur ciclu pentru a citi, modifica şi
scrie o dată (RMW- Read Modify Write). La acest tip de arhitectură este nevoie ca
mascarea întreruperii să fie oprită în timpul acestor operaţii. Acest mecanism
previne citirea unei valori, atunci când apare o întrerupere care poate să schimbe
o valoare tocmai citită. Astfel PDS-ul ar fi prelucrat vechea valoare în loc sa
prelucreze noua valoare, ducând astfel la obţinerea unui rezultat nedorit. Oprirea
mascării întreruperilor duce la întârzieri în prelucrare şi astfel se pot pierde date
şi se poate altera integritatea controlului. Procesoarele avansate evită această
problemă prin mecanisme ce capacitează controlerul să acorde atenţie rapidă

Pagina 6 din 11
atât întreruperilor cât şi structurii RMW. Memorarea şi restaurarea automată a
contextului ajută producătorii să dezvolte aplicaţii software de control prin
proceduri şi funcţii specifice.
Procedura RMW se face în asa fel încât o întrerupere nu poate apărea în
mijlocul unuei sarcini de citire-modificare-scriere, fără a fi o întrerupere mascată.
În acest fel, operaţiile RMW critice nu pot fi întrerupte sau corupte nici dacă este
vorba de întreruperi cu prioritate ridicată.
Avantajele controlerelor digitale de semnal vin din intrumentele de
dezvoltare software puse la dispoziţie de producători. Limbajele de programare
suportate C, C++ ajută şi mai mult dezvoltatorii de aplicaţii, eliminând
dificultăţile din optimizare şi complexitate caracteristice assembler-ului.
Unul din principale avantaje ale controlerelor digitale de semnal este
creşterea rezoluţiei numerice care duce la creşterea acurateţei datelor. Cu o
arhitectură pe 32 de biti, dezvoltatorii pot realiza calcule mult mai precise şi pot
menţine uşor gama dinamică de valori.
Combinaţia optimizată de capacităţi impresionante de procesare de semnal
pentru stăpânirea complexităţii, controlul în timp real al motorului şi combinaţia
optimă de periferice, fac din controlerele digitale de semnal, arhitecturi ideale
pentru un mare număr de aplicaţii de control, de la domeniul industrial la
domeniul auto, de la controlul avansat de energie la senzori avansaţi, incluzând:
- reglarea puterii şi consumului automobilelor;
- controlul digital al vitezei motoarelor în cazul compresoarelor de răcire,
îmbunătăţind eficienţa şi reducând consumul de energie.

Sisteme de securitate

Utilizând procesarea digitală de semnal, a devenit posibilă conversia unei


secvenţe video analogică, pe care nu o poate percepe decât o fiinţă umană, într-o
secvenţă digitală de zero şi unu pe care o poate înţelege un computer. Prin
selectarea unui PDS cu capacitate de procesare mai mare decât este necesar
pentru a converti semnalul video analogic, este posibilă crearea unei inteligenţe
programabile prin care se pot obţine produse cu caracteristici variate şi multe
funcţionalităţi.
Altfel spus, camerele nu mai sunt limitate doar la a înregistra un
eveniment. Prin tehnologia oferită de PDS-uri, camerele pot acum să evalueze
importanţa si relevanţa evenimentelor făra intervenţia omului.
În sistemele de securitate, principalele costuri permanente sunt cele cu
personalul. O persoană poate monitoriza doar un număr limitat de ecrane şi doar
o perioadă de timp limitată. Creşterea numărului de camere pe care o persoană
le poate supraveghea, reduce foarte mult costul unui sistem de securitate.
Modalitatea prin care se poate creşte capacitatea unei persoane de a monitoriza
mai multe ecrane este de a dispune de camere care pot evalua evenimentele şi
pot alerta utilizatorul doar daca evenimentul este cu adevarat important:
- prin mecanismele de detecţie a mişcării, o cameră inteligentă poate
urmări mişcarea în timp real;
- prin micşorarea ariei de interes, camera poate determina dacă mişcarea
are loc lângă uşa securizată (acesta este un eveniment) sau de partea
cealaltă a străzii (nu prezintă interes şi nu este un eveniment);

Pagina 7 din 11
- apoi camera începe recunoaşterea de formă pentru a evalua dacă
obiectul este o presoană (eveniment importat) sau un câine (eveniment
lipsit de importanţă);
- cu o tehnologia de recunoaştere, camera poate verifica indetitatea
persoanei ;
- din acest punct, doar când sunt suficiente probe că evenimentul este
relevant şi cu potenţiale consecinţe, camera porneşte sistemul de alarmă
şi este implicat personalul de supravegere;
Înţelegând semnificaţia a ceea ce monitorizează, o cameră inteligentă
poate lua decizii despre cum să captureze o imagine:
- cand nu se întâmpla nimic, camera poate face capturi la o rezoluţie mai
mică sau poate reduce numărul de cadre. În acest fel, camera
minimizează impactul său asupra reţelei şi poate economisi spaţiul de pe
mediile de stocare;
- când apare o modificare între imaginile capturate, camera poate creşte
automat calitatea ori de câte ori un eveniment este potenţial important.
În loc de a alerta o personă şi de a aştepta o comanda, camera poate
face propriile determinări prin creşterea automată a rezoluţiei, a calităţii
compresiei şi a vitezei cadrelor;
- camera poate de asemenea să mărească inteligent zona de interes
pentru a obţine mai multe detalii, ceea ce camerele analogice nu pot
face fără intervenţia unei persoane;
- în timpul urmăririi obiectului, camera se poate roti şi poate chiar
transfera urmărirea pe camerele din apropiere;
- camerele inteligente pot controla utilizarea lor în locuri unde intimitatea
este esenţiala, de exemplu, o camera ce supravegheaza o parcare şi are
vedere şi la apartamentele de la blocul din apropiere: imaginile din acea
direcţie pot fi automat estompate pentru ca cineva să nu le poată vedea
sau înregistra.
Sistemele video digitale reduc şi alte costuri. De exemplu, un sistem cu 10
camere utilizat 10 ore pe zi timp de un an, necesita 1100 de casete. Un singur
DVD poate memora peste 60 de ore de imagini video digitale compresate,
aceeaşi arhivă pe un an necesitând mai puţin de 150 de DVD-uri.
Prin proiectarea modulară, inginerii pot realiza proiecte de investiţii pe mai
multe linii de produse şi diverse pieţe. Tehnicienii în domeniu pot personaliza o
placă pentru un anumit client prin introducerea în socheturile libere a
componentelor configurate corespunzător: senzor de imagine, procesor şi
conexiune de reţea. În timp ce componentele analogice încep să piardă din teren,
partea digitală din sistem poate să avanseze, reţinând o parte semnificativă din
costul totalul al sistemului. În plus, sistemul video digital poate înlocui sistemul
analogic instalat deja într-un spaţiu, protejând invesţiile în infrastructura deja
existentă.
Costul proiectării este redus prin folosirea aceluiaşi software atât pentru
aplicaţiile simple cât şi pentru aplicaţiile complexe. În plus, o mare parte a
software-ului care să permită prelucrări video digitale este disponibil deja gratis.
Diferenţierea produselor este administrată de caracteristicile care sunt activate
din software. Împreună, proiectarea modulară şi refolosirea software-ului va
permite inginerilor să dezvolte aplicaţii din ce în ce mai complexe, scăzând
substanţial costurile de dezvoltare.

Pagina 8 din 11
Din perspectiva unui utilizator, camerele video digitale bazate pe standarde
comune îşi vor schimba problema de interoperabilitate de la una hardware la o
chestiune de aplicare a software-ului de compatibilitate. Având în vedere că
inteligenţa este distribuită în întreaga reţea de securitate, nu este nevoie de o
consolă de management analogică scumpă. Personalul va avea posibilitatea de a
vizualiza şi controla orice cameră de la orice calculator din reţea (cu permisiunea
corespunzătoare şi cu o parolă, bineînţeles).
Avantajele securităţii video digitale se pot evidenţia şi peste internet. Au
fost create platforme complete de hardware şi software pentru a dezvolta aplicaţii
cu camere intelingente într-o reţea, care au performanţe deosebite.

Echipamente biometrice de securitate

Securitatea biometrică ia multe forme:


- potrivirea amprentelor,
- recunoaşterea facială,
- scanarea irisului,
acestea fiind doar câteva din tehnologiile promiţătoare. Indiferent de
tehnologie, oricare din aceste sisteme de recunoaştere foloseşte senzori pentru a
colecta imagini – fie amprentă, fie caracteristicile feţei, fie irisul ochiului – şi
potrivirea lor cu o bază de date de utilizatori înregistraţi.
Acurateţea recunoşterii este o îmbinare de mai mulţi factori, dar cel mai
important este calitatea imaginii. Încercarea de a potrivi o imagine cu cea a unui
utilizator dintr-o bază de date, poate deveni extrem de dificilă dacă apar zgomote
şi alţi factori ce pot obstrucţiona detaliile critice. Din acest punct de vedere,
calitatea imaginii este esenţială.
Toate imaginile scanate sunt sensibile la zgomote. Zgomotul poate lua
forma unei pete de grăsime pe deget, a unui fir de păr pe deget, a unei mişcări
rapide a ochiului. Este esenţial ca atunci când capturăm astfel de imagini să
scăpam de zgomote. Fără a curăţa zonele respective, o imagine a unei amprente
cu zgomot va cauza un tipar defectuos care va duce la o nerecunoaştere a
utilizatorului. Curăţarea unei imagini înainte de a încerca să o procesăm se face
pentru a înlătura detaliile false şi prin urmare va creşte, în general, acurateţea şi
corectitudinea recunoşterii.
De exemplu, un fir de praf pe deget apare ca o crestătură când este scanat
şi, când este analizată imaginea, este foarte greu de distins un fir de praf de o
crestătură normală de amprentă. Mizeria, de exemplu, are alt spectru de
frecvenţe decât pielea umană, aşa că scanerul poate folosi un filtru pentru a o
elimina.
Curăţarea şi filtrarea imaginii sunt factori cheie diferenţiatori între diferitele
sisteme biometrice de scanare. Multe companii se diferenţiază de competitori prin
propriile setări şi prin proprii algoritmi de filtrare care îmbunătăţesc semnificativ
acurateţea recunoşterii. Astfel devine esenţial ca arhitectura din spatele
scanerului să ofere flexibilitatea de a suporta diverşi algoritmi prin programare.
Un alt mod de a îmbunătăţi acurateţea scanării este de a captura imagini
multiple ale unei amprente. În timp ce degetul se mişcă de-a lungul scanerului,
unghiul său de vizualizare se modifică uşor. Această mişcare dă scanerului
posibilitatea de a construi amprenta finală din mai multe unghiuri şi din mai
multe părţi, reducând astfel mărimea senzorului de scanare.

Pagina 9 din 11
În medie, scanerele de amprente capturează între 5 şi 15 cadre pe
secundă. Scanerul are nevoie de un procesor puternic cu o arhitectură de
memorie rapidă, atât pentru a captura imagini multiple, cât şi pentru a împreuna
părţile scanate, şi apoi să analizere rezultatul final, toate acestea realizându-se în
timp real. Împreunarea trebuie făcută cu atenţie pentru a evita introducerea de
forme false şi curăţarea imaginii devine pe cât de importantă pe atât de
complicată. Toate procesele trebuie să se întâmple în timp real pentru că
întârzierea este un factor important pentru clienţii finali.
Este important să existe flexibilitate în sistemele biometrice, atât din
perspectiva tehnologiei cât şi din perspectiva utilizatorilor. Procesările de imagine
tradiţionale folosesc FFT (transformata Fourier rapidă) pentru a extrage
caracteristicile imaginii. Algoritmii mai avansaţi folosesc transformata wavelet
discretă sau algoritmi proprii. Industria securităţii biometrice este departe de a se
stabiliza atâta timp cât cercetătorii continuă să dezvolte algoritmi rapizi, cu
acurateţe din ce în ce mai mare pentru procesarea şi recunoaşterea imaginilor.
Fără o arhitectură programabilă, echipamentele ar fi blocate în algoritmul
pus din fabrică, în timp ce restul industriei merge înainte. În plus, pentru a
implementa noi servicii şi caracteristici, sistemele biometrice ar necesita
intervenţia service-ului şi înlocuiri de hardware chiar şi pentru îmbunătăţiri
simple. La arhitecturile programabile, îmbunătăţirile complexe sunt atât de
simple pe cât este descărcarea unui nou software.
Multe scanere biometrice, cum ar fi cele care blochează uşile cu cititoare de
amprentă, folosesc baterii, deci consumul de energie este un factor important de
luat în seamă. Familia de procesoare digitale de semnal C55X de la Texas
Instruments oferă un consum eficient de energie şi suportă activarea rapidă
astfel încât procesarea datelor poate începe imediat ce un deget a atins senzorul.
Tehnologiile biometrice sunt un domeniu promiţător care îşi face uşor şi
rapid loc în industrie şi printre utilizatori. De exemplu, sisteme de acces cu
cititoare de amprentă elimină nevoia codurilor de acces nesigure. Utilizatorii sunt
nevoiţi să memoreze atât de multe coduri câte uşi sunt protejate. Cu scanerele
biometrice, utilizatorii au nevoie doar de un deget pentru accesa orice uşă. În
plus, atunci când un angajat care avea acces peste tot este demis, nu mai este
nevoie de schimbarea tuturor codurilor de acces, ci doar de ştergerea lui din baza
de date.
Un alt domeniu de interes unde tehnologiea biometrică îşi face simţită
prezenţa este projarea datelor de pe PC. Multe sisteme se bazează pe sistemul de
operare al PC-ului pentru a încărca şi activa protecţia biometrică. Chiar şi aşa, din
moment ce sistemul de operare este activ, hackerii pot învinge sistemul
biometric. De aceea, scanerele de securitate biometrice, trebuie să se activeze
îmainte ca bios-ul PC-ului să se încarce. În consecinţă, scanerele biometrice
trebuie să fie sisteme independente cu propriul sistem de operare securizat,
pentru a proteja într-un mod mult mai sigur toate datele.

Concluzionând, avantajele oferite de procesoarele digitale de semnal, de


microcontrolere, de controlerele digitale, într-un cuvânt de sistemele electronice
programabile, rezultă din flexibilitatea oferită de componenta software a fiecăruia
dintre ele. Programarea joacă un rol important în ţinerea pasului cu noile cerinţe
şi nevoi ale utilizatorilor finali.
De asemnea, nu trebuie neglijată nici condiţia financiară a fiecărui
echipament: costul de producţie a unui sistem electronic programabil (procesor

Pagina 10 din 11
digital de semnal sau microcontroler) este mult mai mic dacă se optează pentru
realizarea în masă a unei familii de astfel de sisteme, urmând ca diferenţierea
caracteristicilor funţionale să se facă prin algoritmii şi programele software
implementate. Astfel se ajunge la utilizare unui singur model de astfel ce chip în
mai multe echipamente electronice cu funcţionalităţi diferite, ceea ce diferă fiind
doar programul instalat.
Tehnologia din ce în ce mai avansată, caracteristicile fizice din ce în ce mai
bune, consumul de energie din ce în ce mai mic şi viteza de execuţie din ce în ce
mai mare, fac posibile prelucrarea unui volum din ce în ce mai mare de date şi
realizarea unor operaţii, asura datelor, din ce în ce mai complexe.
În doar câţiva ani s-a trecut de la procesări de date pe 8 şi 16 biţi, la
procesări pe 32 şi chiar 64 de biţi. Calculul paralel, posibil a fi implementat la
procesoarele de semnal cu două sau chiar patru unităţi centrale de prelucrare, îşi
face simţită contribuţia la aplicaţiile cu viteză, eficienţa şi randament sporite.
Nevoiele de mobilitate, de prelucrare rapidă, de calitate superioară, de
consum tot mai mic de energie şi resurse, vor fi din ce în ce mai bine satisfăcute
de noile generaţii de procesoare digitale de semnal cu arhitecturi avansate şi de
algoritmii tot mai eficienţi, mai complexi şi mai rapizi ce vor fi implementaţi.

Bibliografie:
www.microchip.com
www.ti.com
www.atmel.com

Pagina 11 din 11

S-ar putea să vă placă și