18
Procesoare numerice de semnal - Cap. 4 23 4.5 Unitatea centrală aritmetică şi logică CALU din TMS320C2x conţine un circuit de deplasare şi scalare pe 16 biţi, un multiplicator paralel pe 16 x 16 biţi, o ALU pe 32 de biţi, un acumulator pe 32 biţi (ACC) şi circuite de deplasare suplimentare la ieşirile acumulatorului şi ale multiplicatorului. În Fig.4.9 este prezentată schema bloc care arată componentele CALU. Fig.4.9 Unitatea centrală aritmetică şi logică (CALU) SFL - rotire spre stânga SFR - rotire spre dreapta În implementarea unei instrucţiuni tipice a ALU, paşii care apar sunt următorii: 1) Data este adusă din RAM pe magistrala de date; 2) Data este trecută prin circuitul de deplasare în ALU, unde este executată operaţia aritmetică; 3) Rezultatul este transferat în acumulator.

4.5 Unitatea centrală aritmetică şi logicăpns.ac.tuiasi.ro/Doc/curs/Curs_07.pdf · biţi pentru stocarea în memoria de date: ACCH (accumulator high) şi ACCL (accumulator low)

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 4.5 Unitatea centrală aritmetică şi logicăpns.ac.tuiasi.ro/Doc/curs/Curs_07.pdf · biţi pentru stocarea în memoria de date: ACCH (accumulator high) şi ACCL (accumulator low)

Procesoare numerice de semnal - Cap. 4 23

4.5 Unitatea centrală aritmetică şi logică

CALU din TMS320C2x conţine un circuit de deplasare şi scalare pe 16 biţi, unmultiplicator paralel pe 16 x 16 biţi, o ALU pe 32 de biţi, un acumulator pe 32 biţi(ACC) şi circuite de deplasare suplimentare la ieşirile acumulatorului şi alemultiplicatorului. În Fig.4.9 este prezentată schema bloc care arată componenteleCALU.

Fig.4.9 Unitatea centrală aritmetică şi logică (CALU)

SFL - rotire spre stângaSFR - rotire spre dreapta

În implementarea unei instrucţiuni tipice a ALU, paşii care apar sunt următorii:1) Data este adusă din RAM pe magistrala de date;2) Data este trecută prin circuitul de deplasare în ALU, unde este executată

operaţia aritmetică;3) Rezultatul este transferat în acumulator.

Page 2: 4.5 Unitatea centrală aritmetică şi logicăpns.ac.tuiasi.ro/Doc/curs/Curs_07.pdf · biţi pentru stocarea în memoria de date: ACCH (accumulator high) şi ACCL (accumulator low)

24 Procesoare numerice de semnal - Cap. 4

O intrare în ALU este întotdeauna furnizată de acumulator, iar cealaltă intrarepoate fi transferată de la registrul de produs PR al multiplicatorului, sau de lascalling shifter care este încărcat din memoria de date.

4.5.1 Circuitul de deplasare şi scalare (scalling shifter)

TMS320C2x conţine un scallingshifter care are o intrare pe 16 biţi legată lamagistrala de date şi o ieşire pe 32 de biţi legată la ALU (vezi Fig.4.9). Circuitulproduce o rotire la dreapta între 0 şi 16 biţi a datelor de intrare, după cum eprogramat în instrucţiune. Cei mai puţin semnificativi biţi ai ieşirii sunt umpluţi cu0, iar cei mai semnificativi pot fi fie umpluţi cu 0, fie extinşi ca semn, în funcţie destarea SXM (sign extension mode) al registrului de stare ST1.

TMS320C2x conţine de asemenea o serie de alte registre de deplasare care-i permitsă execute deplasări numerice, extracţii de biţi, extinderea preciziei aritmetice şiprevenirea depăşirilor. Aceste registre sunt conectate la ieşirea multiplicatorului şiacumulatorului.

4.5.2 ALU şi acumulatorul

ALU şi acumulatorul pe 32 de biţi ale TMS320C2x realizează o gamă largă defuncţii aritmetice şi logice, din care majoritatea se execută într-un singur ciclu deceas. Odată ce o operaţie este executată în ALU, rezultatul este transferat înacumulator, unde pot avea loc operaţiile adiţionale, cum ar fi deplasarea. Data careintră în ALU poate fi scalată de către circuitul de deplasare şi scalare.

ALU este o unitate aritmetică de uz general care operează cu cuvinte pe 16 biţiluate din memoria RAM de date sau derivate din instrucţiuni imediate. Pe lângăinstrucţiunile aritmetice uzuale, ALU poate executa operaţii booleene, furnizândfacilităţile de manipulare la nivel de bit cerute de un controler de mare viteză. Unadin intrările ALU este furnizată totdeauna de către acumulator. Cealaltă poate fifurnizată de către registrul de produs al multiplicatorului, PR, sau de la intrarea luiscalling shifter care a adus data din memoria RAM pe magistrala de date. După ceALU a executat operaţia aritmetică sau logică, rezultatul este stocat în acumulator.

Acumulatorul pe 32 biţi (vezi Fig.4.9) este împărţit în două segmente de câte 16biţi pentru stocarea în memoria de date: ACCH (accumulator high) şi ACCL(accumulator low). Shifterii de la ieşirea acumulatorului furnizează o deplasarestânga, cu 0 - 7 poziţii la TMS320C25, şi cu 0, 1 sau 4 poziţii la TMS32020.Această deplasare este eecutată în timp ce data este transferată pe magistrala dedate pentru stocare. Conţinutul acumulatorului rămâne neschimbat. Cândconţinutul ACCH este deplasat stânga, cei mai puţin semnificativi biţi sunttransferaţi din ACCL, iar cei mai semnificativi biţi se pierd. Când ACCL este

Page 3: 4.5 Unitatea centrală aritmetică şi logicăpns.ac.tuiasi.ro/Doc/curs/Curs_07.pdf · biţi pentru stocarea în memoria de date: ACCH (accumulator high) şi ACCL (accumulator low)

Procesoare numerice de semnal - Cap. 4 25

deplasat stânga, cei mai puţin semnificativi biţi sunt umpluţi cu 0, iar cei maisemnificativi biţi se pierd.

TMS320C2x poate realiza operaţii în virgulă mobilă, pentru aplicaţii care necesităo gamă dinamică largă. Instrucţiunea NORM (normalizare) este folosită pentru anormaliza numerele în virgulă fixă din acumulator prin deplasări la stânga.

Instrucţiunea LACT (încarcă acumulatorul cu o deplasare specificată prin registrulT) denormalizează un număr scris în virgulă mobilă prin deplasarea aritmetică lastânga a mantisei, prin intrarea de scalare - deplasare. În acest caz, contoruldeplasărilor are valoarea exponentului specificat prin cei mai puţin semnificativi 4biţi ai registrului T (TR).

Instrucţiunile ADDT şi SUBT (adună la / scade din acumulator, cu deplasarespecificată prin registrul T) au fost prevăzute de asemenea pentru a permiteoperaţii aritmetice adiţionale.

Modul de lucru cu saturaţie la depăşire a acumulatorului poate fi programat prininstrucţiunile SOVM şi ROVM (set / reset overflow mode). Când acumulatoruleste în acest mod şi apare o depăşire, indicatorul de overflow (OF) este setat şiacumulatorul este încărcat fie cu cel mai pozitiv, fie cu cel mai negativ număr, înfuncţie de direcţia depăşirii. Valoarea acumulatorului după saturaţie este 7FFFFFFF (pozitiv) sau 8000 0000 (negativ).

Dacă bitul modului overflow (OVM) din registrul de stare este resetat şi apare odepăşire, rezultatele depăşite sunt încărcate în acumulator fără modificări.Operaţiile logice nu pot da naştere la depăşiri.

TMS320C2x poate executa o multitudine de instrucţiuni de salt (ramificare) caredepind de starea ALU şi a acumulatorului. În această categorie intră:- BV (salt la depăşire);- BZ (salt la atingerea valorii 0 de către acumulator). În plus, BACC (salt la

adresa din acumulator) furnizează facilitatea unui salt la o adresă specificată deacumulator;

- BIT şi BITT (instrucţiuni de testare a biţilor). Ele nu afectează acumulatorul şipermit testarea unui bit specificat dintr-un cuvânt al memoriei de date.

Acumulatorul din TMS320C25 are un bit de carry (transport), care este setat sauresetat, în funcţie de diferite operaţii din circuit. Bitul de carry permite calculul maieficient în precizie extinsă a rezultatului pentru adunare sau scădere. Este deasemenea util în gestionarea depăşirilor. Bitul de carry este afectat de majoritateainstrucţiunilor aritmetice, de deplasări şi rotaţii. Nu este afectat de încărcareaacumulatorului sau de operaţii logice şi nici de alte operaţii ne-aritmetice, sau deinstrucţiunile de control. De asemenea, nu este afectat de instrucţiunile de înmulţire

Page 4: 4.5 Unitatea centrală aritmetică şi logicăpns.ac.tuiasi.ro/Doc/curs/Curs_07.pdf · biţi pentru stocarea în memoria de date: ACCH (accumulator high) şi ACCL (accumulator low)

26 Procesoare numerice de semnal - Cap. 4

(MPY, MPYK, MPYU), dar este afectat de procesele de acumulare îninstrucţiunile MAC şi MACD. Exemple de operaţii cu bitul de carry suntprezentate în Fig.4.10.

Fig.4.10 Exemple de operaţii cu transport la TMS320C25

Valoarea adunată sau scăzută din acumulator, arătată în exemplele din Fig.4.10,poate veni fie de la intrarea circuitului de scalare, fie de la cea a circuitului dedeplasare de la ieşirea registrului P. Bitul de carry este setat dacă rezultatul uneiadunări sau "acumulări" generează un transport, sau este resetat dacă rezultatulunei scăderi generează un împrumut. În celelalte cazuri, este resetat după oadunare, sau setat după o scădere.

Instrucţiunile ADDC (adună la acumulator cu transport), şi SUBB (scade dinacumulator cu împrumut), facilitate de TMS320C25, folosesc valorile mai susmenţionate pentru CY în operaţiile lor de adunare / scădere.

Singura excepţie în operaţiile cu bitul CY, cum se vede în Fig.4.10, este în cazulfolosirii instrucţiunilor ADDH (adună la ACCH) şi SUBH (scade din ACCH).ADDH poate doar să seteze CY dacă se generează transport, iar SUBH poate doarsă reseteze CY dacă se generează împrumut. Altfel, nici o instrucţiune nu poateafecta bitul CY.

Sunt prevăzute două instrucţiuni de salt (ramificare) funcţie de starea bitului deCY: BC şi BNC. Pentru încărcarea bitului de carry există instrucţiunile C, RC şiLST1. Bitul CY este setat la 1 după resetul hard.

Instrucţiunile SFL / SFR (introduce în CY un bit prin rotire la stânga / dreapta cuun bit, la TMS320C2x) şi ROL / ROR (rotaţie a stânga / dreapta la TMS320C25)realizează deplasarea sau rotirea conţinutului acumulatorului prin bitul de CY.Bitul SXM afectează definiţia instrucţiunii SFR (deplasarea acumulatorului ladreapta). Când SXM = 1, SFR realizează o rotire aritmetică la dreapta, menţinând

Page 5: 4.5 Unitatea centrală aritmetică şi logicăpns.ac.tuiasi.ro/Doc/curs/Curs_07.pdf · biţi pentru stocarea în memoria de date: ACCH (accumulator high) şi ACCL (accumulator low)

Procesoare numerice de semnal - Cap. 4 27

semnul datelor din acumulator. Când SXM = 0, SFR efectuează o deplasare logică,deplasând afară LSB-ul şi punând MSB = 0. SFL (deplasarea acumulatorului lastânga) nu e afectată de bitul SXM şi se comportă la fel în ambele cazuri,deplasând afară MSB-ul şi punând în locul LSB valoarea 0. Instrucţiunile RPT sauRPTK pot fi folosite cu instrucţiunile de deplasare şi rotire pentru numărarea unordeplasări multiple.

4.5.3 Multiplicatorul, registrele P şi T

TMS320C2x foloseşte un multiplicator pe 16 x 16 biţi, implementat hardware, careeste capabil să calculeze un produs cu semn sau fără semn pe 32 de biţi, într-unsingur ciclu maşină. Toate instrucţiunile de înmulţire, cu excepţia lui MPYU(înmulţire fără semn) a lui TMS320C25, execută în multiplicator o operaţie deînmulţire cu semn. Aceasta înseamnă că, două numere care sunt înmulţite sunttratate ca două numere în complement faţă de 2, iar rezultatul este un număr pe 32de biţi, în complement faţă de 2. Aşa cum se arată în Fig.4.9, două registre suntasociate multiplicatorului:- un registru temporar pe 16 biţi care conţine unul din operanzii pentru înmulţire,

TR, şi- un registru de produs pe 32 de biţi care conţine produsul (rezultatul înmulţirii),

PR.

Ieşirea lui PR poate fi deplasată la stânga pe 1 sau 4 biţi. Acest lucru este utilpentru implementarea aritmeticii fracţionale sau pentru alinierea produsuluifracţional. Ieşirea lui PR poate fi de asemenea deplasată dreapta cu 6 biţi pentru apermite execuţia a până la 128 înmulţiri / acumulări fără posibilitate de depăşire.

O instrucţiune LT (încărcarea registrului T) încarcă în mod normal TR pentru afurniza un operand (de pe magistrala de date), iar instrucţiunea MPY (multiplicare)furnizează al doilea operand (tot de pe magistrala de date). O înmulţire poate firealizată de asemenea cu un operand imediat, folosind instrucţiunea MPYK. În altecazuri, un produs poate fi obţinut la fiecare 2 cicluri.

Două instrucţiuni de înmulţire / acumulare (MAC şi MACD) folosesc integralcapacitatea de calcul a multiplicatorului, permiţând ambilor operanzi să fieprelucraţi simultan. Datele pentru aceste operaţii pot fi rezidente oriunde înmemoria internă sau în cea externă, sau pot fi transferate multiplicatorului înfiecare ciclu pe magistrala de program sau de date. Acestea sunt furnizate pentrufiecare ciclu de înmulţire / acumulare când sunt folosite cu instrucţiuni repetitive(RPT / RPTK). Porţiunea DMOV a instrucţiunii MACD nu va funcţiona cu adresedin memoria de date externă.

La TMS32020, deînmulţitul şi înmulţitorul trebuie să fie rezidente în blocuri dememorie RAM separate. La TMS320C25, instrucţiunile MAC şi MACD pot fi

Page 6: 4.5 Unitatea centrală aritmetică şi logicăpns.ac.tuiasi.ro/Doc/curs/Curs_07.pdf · biţi pentru stocarea în memoria de date: ACCH (accumulator high) şi ACCL (accumulator low)

28 Procesoare numerice de semnal - Cap. 4

utilizate fie cu ambii operanzi din memoria internă sau externă, fie cu unul dinmemoria RAM de pe circuit.

Instrucţiunile SQRA (square / addition) şi SQRS (square / substraction) punaceeaşi valoare pe ambele intrări ale multiplicatorului pentru a ridica la pătrat ovaloare din memoria de date.

Instrucţiunea MPYU de la TMS320C25 execută o înmulţire fără semn, ceea cefacilitează mult extinderea preciziei în operaţiile aritmetice. Conţinutul fără semnal registrului T este multiplicat cu conţinutul fără semn al unei locaţii din memoriade date, iar rezultatul este plasat în registrul P. Aceasta permite operanzilor maimari de 16 biţi să fie împărţiţi în operanzi de 16 biţi şi prelucraţi separat pentru agenera produse mai mari de 32 de biţi.

După înmulţirea a două numere pe 16 biţi, produsul pe 32 de biţi este încărcat înregistrul PR pe 32 de biţi al lui TMS320C2x. Produsul din PR poate fi transferat înALU.

Există 4 moduri de deplasare a produsului disponibile la ieşirea PR. Aceste 4moduri sunt utile când se execută operaţii de multiplicare / acumulare, aritmeticăfracţionară, sau produse fracţionare. Câmpul PM al registrului de stare ST1specifică modurile de deplasare ale rezultatului PM, astfel:- PM = 00, rezultat fără deplasare- PM = 01, rezultat cu deplasare stânga 1 bit- PM = 10, rezultat cu deplasare stânga 4 biţi- PM = 11, rezultat cu deplasare dreapta 6 biţi

Deplasările stânga sunt folositoare pentru implementarea aritmeticii fracţionare,sau pentru alinierea produsului fracţional; de exemplu: produsul a două numerenormalizate pe 16 biţi, produsul a două numere în complement faţă de 2, produsula două numere în format Q15, conţinând 2 biţi de semn, dintre care unul esteredundant.

Formatul Q15 este unul dintre variatele tipuri ale formatului Q; este o reprezentarea numerelor folosită frecvent când se execută operaţii cu numere ne-întregi. Orotaţie stânga de un singur bit elimină bitul suplimentar de semn din produs, cândeste transferat în acumulator. Rezultatul în acumulator are astfel aceeaşi formă caşi operanzii. În mod similar, produsul unui număr normalizat pe 16 biţi sau Q15 şio constantă de 13 biţi în complement faţă de 2 conţine 5 biţi din care 4 suntredundanţi. Este cazul folosirii instrucţiunii MPYK. Aici, o deplasare de 4 biţialiniază în mod adecvat rezultatul transferat în acumulator.

Page 7: 4.5 Unitatea centrală aritmetică şi logicăpns.ac.tuiasi.ro/Doc/curs/Curs_07.pdf · biţi pentru stocarea în memoria de date: ACCH (accumulator high) şi ACCL (accumulator low)

Procesoare numerice de semnal - Cap. 4 29

Folosirea deplasării dreapta PM permite executarea a până la 128 operaţii deînmulţire / acumulare consecutive fără pericolul unei depăşiri aritmetice, astfelevitându-se problema gestionării depăşirilor.

Deplasările pot fi dezactivate ca să nu producă rotiri în produs când se lucrează cuîntregi sau operaţii cu precizie de 32 biţi. Acest lucru permite compatibilitatea cuTMS320C1x. Trebuie notat că rotirea dreapta este întotdeauna însoţită de extensiade semn, indiferent de starea SXM.

Cei mai puţin semnificativi 4 biţi ai registrului TR definesc de asemenea odeplasare variabilă prin scalling shifter pentru instrucţiunile LACT, ADDT şiSUBT. Aceste instrucţiuni sunt utile în aritmetica în virgulă flotantă, când unnumăr trebuie să fie denormalizat, ceea ce înseamnă realizarea conversiei de lavirgulă mobilă la virgulă fixă.

Instrucţiunea BITT (bit test) permite testarea unui singur bit dintr-un cuvânt dinmemoria de date pe baza valorii conţinute în cei mai puţin semnificativi 4 biţi dinTR.

4.6 Controlul sistemului

Controlul de sistem al procesorului TMS320C2x este asigurat de numărătorul deprogram (PC), stiva, conexiunie hardware, semnalul reset extern, întreruperi, timerşi un numărător de repetări. Următoarele subcapitole vor descrie funcţiile fiecăreicomponente în controlul sistemului şi funcţionarea magistralei pipeline.

4.6.1 Numărătorul de program şi stiva

TMS320C2x are un umărător de program pe 16 biţi şi o stivă hardware de 8 nivele(TMS320C25) sau 4 nivele (TMS320C20), pentru stocarea numărătorului deprogram.

Numărătorul de program (PC) adresează memoria de program internă şi externă îninstrucţiunile de fetch. Stiva este utilizată în timpul subrutinelor şi întreruperilor.PC adresează memoria program de pe circuit sau din afara acestuia prin magistralaadreselor de program. Pe această magistrală este adusă o instrucţiune din memoriade program şi încărcată în registrul de instrucţiuni (IR). Când registrul IR esteîncărcat, PC este gata să înceapă următorul ciclu de fetch. PC poate adresa bloculB0 al memoriei RAM de pe circuit, când B0 este configurat ca memorie deprogram, sau memoria ROM internă, precum şi memoria program externă prinmagistrala externă de date (liniile D15-D0) şi adrese (liniile A15-A0).

Page 8: 4.5 Unitatea centrală aritmetică şi logicăpns.ac.tuiasi.ro/Doc/curs/Curs_07.pdf · biţi pentru stocarea în memoria de date: ACCH (accumulator high) şi ACCL (accumulator low)

30 Procesoare numerice de semnal - Cap. 4

Fig.4.11 Numărătorul de program, stiva şi circuitele anexe

Memoria de date este adresată de PC în timpul instrucţiunii BLKD, când se mutăblocuri de date dintr-o zonă de memorie în alta. Conţinutul acumulatorului poate fiîncărcat în PC, utilizând instrucţiunile BACC sau CALA.

La începutul unui nou ciclu de fetch, PC este incrementat sau încărcat cu adresa desalt în cazul unor instrucţiuni de salt, întreruperi, sau subrutine. În cazulinstrucţiunilor de salt condiţionat, când nu se face saltul, PC este incrementat odată înplus, sărindu-se peste adresa de salt.

TMS320C2x permite repetarea execuţiei unei instrucţiuni de N+1 ori, încărcând înregistrul RPTC (registrul numărător de repetări) pe 8 biţi un număr N.Instrucţiunea va fi executată până când RPTC ajunge la zero, prin decrementare.Acest lucru este util în cazul multor instrucţiuni, cum ar fi: NORM, MACD, sauSUBC.

Stiva are 4 (TMS320C20) sau 8 (TMS320C25) nivele a câte 16 biţi şi este accesatăîn timpul instrucţiunilor PUSH şi POP. Când PC este depus în vârful stivei,conţinutul fiecărui nivel se deplasează în jos cu o poziţie, iar conţinutul ultimeilocaţii se pierde. Acesta se pierde şi dacă se depune succesiv în stivă de 4,respectiv de 8 ori, fără a se scoate ceva. Orice extragere din stivă, după 3 şirespectiv 7 extrageri, duce la extragerea valorii de la baza stivei. InstrucţiunilePUSHD şi POPD depun o valoare din memoria de date, respectiv refac memoriade date cu conţinutul din stivă. Aceste instrucţiuni permit construirea unei stive înmemoria de date, realizându-se nivele de imbricare ale subrutinelor pestedimensiunea stivei inferioare (4, respectiv 8 nivele).

Page 9: 4.5 Unitatea centrală aritmetică şi logicăpns.ac.tuiasi.ro/Doc/curs/Curs_07.pdf · biţi pentru stocarea în memoria de date: ACCH (accumulator high) şi ACCL (accumulator low)

Procesoare numerice de semnal - Cap. 4 31

4.6.2 Funcţionarea magistralei pipeline

"Pipelining"-ul instrucţiunilor constă din secvenţa de operaţii ale magistraleiexterne care apar în cursul execuţiei instrucţiunii. Ciclul de prefetch-decodare-execuţie al pipeline-ului este invizibil pentru utilizator, cu excepţia anumitor cazuricând pipeline-ul trebuie întrerupt (cum sunt instrucţiunile de salt). Operaţiile deprefetch, decodare şi execuţie sunt independente, ceea ce permite ca ele să sesuprapună în timp la execuţia unei instrucţiuni. În timpul oricărui ciclu, două sautrei instrucţiuni pot fi active la un moment dat, fiecare în diverse stadii de execuţie,rezultând două, respectiv trei nivele de pipeline pentru TMS320C2x şiTMS320C25. Diferenţele între nivelele de pipelining nu afectează neapărat vitezade execuţie a unei instrucţiuni, dar schimbă esenţial secvenţa extragere / decodare.Multe instrucţiuni se execută în acelaşi număr de perioade, indiferent dacă suntexecutate din memoria intenă ROM, RAM, sau din memoria de program externă.

Circuitele suplimentare ale PC asigură pentru TMS320C2x un pipelining pe 3nivele. Mai există un registru numărător de prefetch (PFC), registrul MCS pe 16biţi, registrul IR şi registrul de aşteptare a instrucţiunilor QIR). În cazul pipeline-ului pe trei nivele, PFC conţine adresa următoarei instrucţiuni ce urmează a fiexecutată. Odată pre-extrasă această instrucţiune, ea este încărcată în IR, în afarăde cazul în care IR conţine încă o instrucţiune în curs de execuţie, caz în care estedepusă în QIR. PFC este incrementat, iar după completa execuţie a instrucţiuniicurente următoarea instrucţiune este încărcată în IR din QIR pentru a intra înexecuţie.

Adresa conţinută de PC nu este utilizată în mod direct în operaţiile de fetch, eafiind utilizată de cele mai multe ori ca pointer de referinţă a poziţiei curente dinprogram. PC este incrementat după execuţia unei instrucţiuni. Când aparîntreruperi sau subrutine, conţinutul registrului PC este salvat în stivă pentru aprezerva întoarcerea în programul principal. Operaţiile de prefetch, decodare şiexecuţie ale pipeline-ului fiind independente, permit suprapunerea instrucţiunilor.În timpul oricărui ciclu, trei instrucţiuni diferite pot fi active, fiecare la alt stadiu deexecuţie. Fig.4.12 arată funcţionarea magistralei pipeline pe trei nivele pentruexecuţia instrucţiunilor de un singur cuvânt şi un singur ciclu din memoria ROMinternă sau din memoria externă, fără stări de aşteptare.

Pipeline-ul este redus la două nivele când execuţia este în memoria RAM internăde program pentru că o instrucţiune din memoria RAM poate fi extrasă şi decodatăîn acelaşi ciclu. Separarea pre-extragerii şi decodării nu mai este necesară, dupăcum se arată în Fig.4.13.

Page 10: 4.5 Unitatea centrală aritmetică şi logicăpns.ac.tuiasi.ro/Doc/curs/Curs_07.pdf · biţi pentru stocarea în memoria de date: ACCH (accumulator high) şi ACCL (accumulator low)

32 Procesoare numerice de semnal - Cap. 4

Fig.4.12 Funcţionarea magistralei pipeline cu trei nivele (TMS320C25)

Fig.4.13 Funcţionarea magistralei pipeline cu două nivele

Procesorul TMS320C2x execută majoritatea instrucţiunilor într-un singur ciclupentru că toate sunt decodate direct. Funcţionarea pipeline-ului are o adâncime de3.25 cicli, ceea ce înseamnă că într-un ciclu dat, este adusă cea de-a treiainstrucţiune, se decodează cea de-a doua şi se execută prima. Fig.4.14 aratăfuncţionarea internă a magistralei pipeline TMS320C25 raportată la fazele de unsfert de ciclu de la 1 la 4 (Q1 - Q4).

Ciclul maşină, indicat extern de frontul căzător al semnalului CLKOUT1 laTMS320C25, constă din 4 faze interne, ceea ce permite execuţia operaţiilorpipeline-ului mai repede decât o pătrime a ciclului maşină. Secvenţa de instrucţiunia pipeline-ului este arătată în tabelul următor.

CICLU FAZĂ OPERAŢIE1 1 Noul PC este depus pe magistrala de adrese

2 Citire externă a instrucţiunii3 Citire externă a instrucţiunii4 Citire externă a instrucţiunii

2 12 Decodarea instrucţiunii3 Decodarea instrucţiunii / execuţie în ARAU4 Acces la memoria RAM / execuţie în ARAU

3 1 Acces la memoria RAM / încărcarea noii valori aregistrului auxiliar / reînnoirea registrului ARP

Page 11: 4.5 Unitatea centrală aritmetică şi logicăpns.ac.tuiasi.ro/Doc/curs/Curs_07.pdf · biţi pentru stocarea în memoria de date: ACCH (accumulator high) şi ACCL (accumulator low)

Procesoare numerice de semnal - Cap. 4 33

2 Execuţie în ALU3 Execuţie în ALU4 Încărcarea acumulatorului

4 1 Încărcarea registrului de stare

Fig.4.14 Funcţionarea standard a magistralei pipeline la TMS320C25

Când se utilizează instrucţiunea de adunare, de exemplu ADD *+,12,AR4,instrucţiunea este extrasă în primul ciclu. În timpul fazelor 2, 3 a ciclului 2,instrucţiunea este decodată, fiind generată şi adresa pentru aducerea operandului,adresă ce se găseşte într-un registru auxiliar. În intervalul Q4 al ciclului 2 şi Q1 alciclului 3, operandul este adus din memoria RAM. Incrementarea registruluiauxiliar este realizată în Q3 şi Q4 al ciclului 2, iar valoarea este încărcată înregistrul auxiliar în Q1 al ciclului 3. Registrul ARP este încărcat cu noua valoarecorespunzătoare unui alt registru AR. În timpul Q2 şi Q3 al ciclului 3, data estetrecută printr-un registru de deplasare, executându-se o deplasare stânga cu 12 biţi,se adună apoi în ALU cu valoarea din acumulator. În faza Q4 a ciclului 3,rezultatul este încărcat în acumulator, iar starea operaţiei din ALU este încărcată înregistrul de stare, în Q1 a ciclului 4. Biţii care se încarcă în acest moment înregistrul de stare reflectă starea curentă a ALU şi a registrului ARP asociaturmătoarei instrucţiuni.

În cazul unei instrucţiuni de stocare (de exemplu, SACL *0-,3,AR2), funcţionareacircuitului în primii doi cicli este identică cu cazul anterior. În Q1 şi Q2 aleprimului ciclu, datele din acumulator sunt trecute prin circuitul de deplasare,deplasate cu 3 biţi la stânga şi umplute cu 0. Cei mai puţin semnificativi 16 biţi aivalorii deplasate sunt scrişi la adresa specificată de registrul auxiliar curent. Încursul Q3 şi Q4 din ciclul 3, registrul index (AR0) este adunat la conţinutulregistrului auxiliar curent şi stocat în registrul auxiliar curent în Q1 al fazei a patra.

Page 12: 4.5 Unitatea centrală aritmetică şi logicăpns.ac.tuiasi.ro/Doc/curs/Curs_07.pdf · biţi pentru stocarea în memoria de date: ACCH (accumulator high) şi ACCL (accumulator low)

34 Procesoare numerice de semnal - Cap. 4

În Q1 al fazei a patra indicatorul registrului auxiliar este schimbat în AR2. Fig.4.15arată desfăşurarea instrucţiunilor ADD şi SACL într-o secvenţă de program. Sepresupune că ambele rezidă în memoria externă, nu există stări de aşteptare, iardatele sunt situate în memoria de date internă (on-chip RAM).

Fig.4.15 Funcţionarea magistralei pipeline pentru instrucţiunea ADDurmată de instrucţiunea SACL

Când se citeşte instrucţiunea din afara memoriei ROM interne, operaţiile interne debază ale pipeline-ului sunt aceleaşi, singura diferenţă constă în faptul că liniile desemnale de control (/STRB, /PS, R//W) sunt inactive. Dacă instrucţiunea esteadusă din memoria RAM internă, pipeline-ul este scurtat la 2.5 cicli, instrucţiuneafiind adusă într-o jumătate de ciclu, spre deosebire de un ciclu întreg necesar încazul aducerii din memoria externă sau din memoria ROM internă. Instrucţiuneaeste adusă în fazele Q4 şi Q1 şi decodată în fazele Q2 şi Q3. În rest, operaţiiledecurg la fel.Unele operaţii adaugă cicluri maşină adiţionale la execuţia instrucţiunii fără aderanja funcţionarea. Stările WAIT externe, conflictele de magistrală,instrucţiunile de două cuvinte şi discontinuităţile numărătorului de program facparte din această categorie de operaţii, aşa cum se va descrie în continuare.

Stările de aşteptare

TMS320C25 poate fi utilizat pentru interfaţarea cu memorii externe lente,folosindu-se stări de aşteptare generate prin hardware. Acestea se aplică pentrumemoria program, date şi spaţiul I/O ale arhitecturii Harvard. Stările de aşteptareîntârzie în mod direct pipelining-ul instrucţiunilor. Fiecare stare de aşteptareinserată în timpul extragerii instrucţiunii contribuie la mărirea ciclului de pipelinecorespunzător instrucţiunii. Orice stare de aşteptare inserată în timpul accesăriidatelor externe sau a spaţiului I/O măreşte de asemenea ciclul de pipeline. Fig.4.16

Page 13: 4.5 Unitatea centrală aritmetică şi logicăpns.ac.tuiasi.ro/Doc/curs/Curs_07.pdf · biţi pentru stocarea în memoria de date: ACCH (accumulator high) şi ACCL (accumulator low)

Procesoare numerice de semnal - Cap. 4 35

descrie reacţia mecanismului pipeline la stări de aşteptare la accesul în memoriaexternă. Starea de aşteptare introdusă în ciclul 2 duce la neexecutarea operaţiei înciclul 4.

Fig.4.16 Funcţionarea magistralei pipeline cu stări WAIT

Magistrala de date externă multiplexată

Fig.4.17 Funcţionarea magistralei pipeline în caz de conflictpe magistrala de date externă

Magistrala de date este multiplexată pentru a putea deservi cele 3 spaţii dememorie ale procesorului. Aducerea din exterior a instrucţiunii din mai multe zonede memorie adaugă stări de aşteptare la ciclurile de pipeline corespunzătoare

Page 14: 4.5 Unitatea centrală aritmetică şi logicăpns.ac.tuiasi.ro/Doc/curs/Curs_07.pdf · biţi pentru stocarea în memoria de date: ACCH (accumulator high) şi ACCL (accumulator low)

36 Procesoare numerice de semnal - Cap. 4

datorită faptului că pentru fetch-ul din exterior este necesar un ciclu întreg, în timpce pentru cel intern e nevoie de două sferturi, putând fi inclus în pipeline-ul cu 3nivele. Accesul la memoria de date este controlat prin setarea indicatorului paginiide date sau a conţinutului registrului auxiliar utilizat. Pipeline-ul este afectat înacelaşi mod şi de accesul la magistrala I/O sau la tabelele din memoria de program.Fig.4.17 arată modul în care magistrala procesează o instrucţiune cu acces extern laprogram şi la date.

Instrucţiunile pe două cuvinte

Toate aceste instrucţiuni au un ciclu adiţional pentru aducerea operandului imediatpe 16 biţi, care urmează mnemonicii instrucţiunii.

Primul set de instrucţiuni la care se aplică aceste considerente este cel carecuprinde instrucţiuni cu operand imediat. Mnemonica instrucţiunii este urmată deoperandul imediat pe 16 biţi ce va fi utilizat de ALU. Cel de-al doilea set, includeinstrucţiunile care folosesc registrul PFC ca unitate de adresare secundară a datelorîn unele instrucţiuni optimizate, de exemplu MAC / MACD, BLKP / BLKD. În celde-al doilea set, ciclul exterior apare doar în bucla de repetare. Cel de-al treilea setinclude instrucţiunile cu salt condiţionat neexecutate.

Discontinuităţile numărătorului de program (PC)

Datorită mecanismului de pipeline, o modificare (alta decât o incrementare) anumărătorului de program necesită ştergerea pipeline-ului. Acest lucru se aplică latoate instrucţiunile de salt, apelarea de subrutine, capcanele (TRAP) software, saula întoarcerile din subrutine.

Magistrala pipeline fiind pe 3 nivele, următoarea instrucţiune este deja încărcatăcând apare un salt, dar ea nu va afecta registrele şi datele, fiind ştearsă de pipeline.Sunt inseraţi 2 cicli "morţi" în timp ce magistrala pipeline aşteaptă să fiereîncărcată.

Un singur ciclu adiţional este introdus dacă destinaţia saltului este în memoriaRAM, blocul 0. În acest caz, pipeline-ul are doar 2 nivele şi necesită un singurciclu pentru reîncărcare. Fig.4.18 arată un salt de la execuţia normală în memoriaRAM internă, iar Fig.4.19, un exemplu de întoarcere din subrutină executată dinRAM-ul intern la o locaţie din memoria externă.

Page 15: 4.5 Unitatea centrală aritmetică şi logicăpns.ac.tuiasi.ro/Doc/curs/Curs_07.pdf · biţi pentru stocarea în memoria de date: ACCH (accumulator high) şi ACCL (accumulator low)

Procesoare numerice de semnal - Cap. 4 37

Fig.4.18 Funcţionarea magistralei pipeline pentru saltexecutat în RAM-ul intern

Fig.4.19 Funcţionarea magistralei pipelinepentru RET în RAM intern

Întreruperile sunt discontinuităţi generate hardware în accesarea secvenţială anumărătorului de program (PC). Execuţia întreruperii se bazează pe execuţiacompletă a instrucţiunii în curs mai degrabă decât pe terminarea operaţiei curenteîn memorie. Instrucţiunea curentă care este executată în momentul apariţieiîntreruperii este terminată. Întreruperea aşteaptă intervalul dintre terminareainstrucţiunii în curs şi începerea instrucţiunii care urmează. În acest caz, oinstrucţiune repetată va fi considerată ca o singură instrucţiune, astfel că înainte caîntreruperea să fie acceptată se termină repetările instrucţiunii în curs. Aceasta dăprioritate algoritmului asupra servirii întreruperilor. Când vectorul de întrerupere

Page 16: 4.5 Unitatea centrală aritmetică şi logicăpns.ac.tuiasi.ro/Doc/curs/Curs_07.pdf · biţi pentru stocarea în memoria de date: ACCH (accumulator high) şi ACCL (accumulator low)

38 Procesoare numerice de semnal - Cap. 4

este situat în memoria externă cu o stare de aşteptare, se vor genera 2 impulsuri alesemnalului /IACK. Dacă acest lucru este o problemă, linia /IACK trebuiecondiţionată de /READY.

Aspecte hardware ale mecanismului pipeline

Efectele descrise mai sus la nivel hardware necesită explicaţii suplimentare datoritălipsei de vizibilitate a operaţiilor de pe circuit sau pentru optimizarea funcţionăriimecanismului pipeline. Se vor descrie efectele asupra pipeline-ului ale resetului,întreruperilor, semnalelor /HOLD//HOLDA, stocarea acumulatorului, accesul ladatele externe şi memoria program internă, a ciclurilor de repetiţie şi modul în careaceste efecte sunt vizibile pe pinii procesorului.

Reset. Resetul este o întrerupere totalmente nemascabilă şi atunci când esteexecutată opreşte funcţionarea pipeline-ului şi şterge părţile neexecutate. Impulsulde reset trebuie să fie activ timp de 3 perioade ale CLKOUT1. Înainte de cel de-altreilea front crescător al CLKOUT1, procesorul trece ieşirile sale în stare de înaltăimpedanţă. După frontul crescător al /RS, circuitul extrage vectorul de reset.Deoarece pipeline-ul este gol, saltul la vectorul de întrerupere se va executa douăperioade mai târziu. Dacă /HOLD este activat în timpul resetului activ, nu se vaextrage vectorul de întrerupere înainte de dezactivarea lui /HOLD, procesoruldezactivând apoi şi /HOLDA. Când /HOLD este activ simultan cu resetul pentru apermite preîncărcarea datelor, linia /HOLDA va fi activă în low 3 perioade de ceas,indiferent dacă /RS a trecut sau nu în high. Acest lucru este util prin faptul că linia/HOLDA poate fi utilizată pentru a elibera /RS şi a garanta astfel un ciclu de resetde minim 3 cicli.

Întreruperile devin vizibile asupra procesorului atunci când semnalul /IACKdevine valid pe frontul crescător al CLKOUT2. Acest lucru indică aducereaprimului cuvânt al vectorului de întrerupere. Dacă se generează stări de aşteptare însegmentul de memorie unde se găseşte vectorul de întrerupere, câte un impuls/IACK va mai apare în timpul fiecărei stări de aşteptare apărute. Dacă acest lucrucauzează probleme cu interfaţa externă, /IACK poate fi condiţionat de READYpentru acceptarea doar a ultimului impuls /IACK. Instrucţiunea BIOZ testeazăpinul /BIO în timpul fazei de extragere a instrucţiunii pe pipeline.

Hold / acceptare hold este cea de-a doua întrerupere prioritară în execuţia unuiprogram şi nu va fi acceptată înainte de execuţia completă a instrucţiunii (minim 3cicli), inclusiv instrucţiunile repetate. Următoarea instrucţiune va fi încărcată pepipeline la 2 perioade după ce linia /HOLDA devine inactivă. Dacă bitul HM dinregistrul de stare ST1 este setat în "1", procesorul opreşte execuţia şi aşteaptă pânăcând semnalul hold este ridicat. Acest lucru micşorează consumul prin oprireacomandării memoriei şi a semnalelor de control, oprind principalele circuite aleCPU de a comuta şi comanda. Acest mod se poate utiliza pentru modul "power-

Page 17: 4.5 Unitatea centrală aritmetică şi logicăpns.ac.tuiasi.ro/Doc/curs/Curs_07.pdf · biţi pentru stocarea în memoria de date: ACCH (accumulator high) şi ACCL (accumulator low)

Procesoare numerice de semnal - Cap. 4 39

down". Dacă HM este în "0", procesorul continuă să execute orice instrucţiune cepoate fi executată numai cu resurse de pe circuit, adică programul şi datele s găsescîn memoria de pe circuit. Operaţiile decurg normal până când apare un acces lamemoria externă, moment la care procesorul adaugă stări de aşteptare până cândsemnalul hold este ridicat. Când se apelează la resursele de pe circuit cu HM = 0,procesorul răspunde la /HOLD cu /HOLDA în timpul instrucţiunilor multiciclu.

Accesul la memoria internă de pe circuit face ca pipeline-ul să fie vizibil doar pelinia /MSC, activ pe frontul crescător al CLKOUT2. Execuţia din memoriaprogram de pe circuit nu permite instrucţiunilor accesate din memoria de dateexternă să funcţioneze într-un singur ciclu. Execuţia normală a unei instrucţiuninecesită 2 faze în cazul memoriei de date de pe circuit, în timp ce accesul înmemoria externă necesită 4 faze. Mecanismul pipeline este optimizat pentru arealiza instrucţiuni repetate care accesează memoria externă de date cu un singurciclu suplimentar la prima extragere.

Accesul la memoria de date / program externă necesită ca starea pipeline-ului săfie monitorizată de /MSC, /STRB, /PS, /DS. Linia /MSC indică pe frontul crescătoral CLKOUT2 dacă începe sau nu un ciclu de extragere pentru o nouă instrucţiune.Linia /PS indică faptul că magistrala de date este utilizată la aducerea instrucţiunii.Un pas pe pipeline nu este indicat deoarece /PS rămâne activ până când pipeline-uladuce instrucţiunea externă. Linia /PS activă low nu înseamnă neapărat că seextrage o instrucţiune. În cazul instrucţiunilor TBLR / TBLW, MAC / MACD,BLKP, linia /PS activă înseamnă accesare de tabele. Pentru urmărirea aduceriidatelor din memoria de date externă, se utilizează /STRB. Linia /DS activă pe lowindică că magistrala de date este utilizată la accesarea memoriei de date. Aceastălinie rămâne activă timp de 2 aduceri din memorie în cazul unei operaţii de stocarea acumulatorului urmată de o instrucţiune în ALU, ambele operând cu memoriaexternă. Două impulsuri /STRB identifică fiecare acces. De asemenea, linia rămâneactivă mai mulţi cicli în cazul unei instrucţiuni repetate. Accesul la spaţiul de I/Ooperează similar în cazul instrucţiunilor de I/O care înlocuiesc operaţiile de stocareacumulator şi salvare.

4.6.3 Reset

Este o întrerupere nemascabilă ce poate fi folosită oricând pentru a trece procesorulîntr-o stare cunoscută. Resetul activ forţează procesorul să termine execuţia şiforţează PC în "0". /RS afectează diferite registre şi biţii de stare. Pentrufuncţionarea corectă a sistemului după cuplare, semnalul /RS trebuie activat timpde 3 perioade de ceas pentru a garanta resetul. Procesorul execută instrucţiunileîncepând de la locaţia 0 care în mod normal conţine un salt în rutina de iniţializarea sistemului. După activarea resetului au loc următoarele iniţializări:1) CNF = 0 din ST1, fapt ce va configura toată memoria RAM ca memorie de date2) PC este setat în "0", liniile A15-A0 sunt trecute în "0" cât timp /RS este în low

Page 18: 4.5 Unitatea centrală aritmetică şi logicăpns.ac.tuiasi.ro/Doc/curs/Curs_07.pdf · biţi pentru stocarea în memoria de date: ACCH (accumulator high) şi ACCL (accumulator low)

40 Procesoare numerice de semnal - Cap. 4

3) Magistrala de date este trecută în stare de înaltă impedanţă4) Întreruperile sunt dezactivate, prin setarea bitului INTM (interrupt mode) în

"1"; registrul IFR este trecut în "0"5) Semnalele de control ale memoriei şi spaţiului de I/O (/PS, /DS, /IS, R//W,

/STRB, /BR) sunt dezafectate prin aducerea lor în high cât timp /RS este în low6) Biţii de stare au următoarele setări: OV = 0, XF = 1 (TMS32020), SXM = 1,

PM = 0, HM = 1, FO = 0, C = 1, FSM = 1 (TMS320C25)7) Registrul GREG (global memory register) este şters şi toată memoria va fi

locală8) Registrul RPTC (repeat counter) este şters9) Pinul DX este trecut în stare de înaltă impedanţă. Orice operaţie de transmisie /

recepţie este terminată de către portul serial şi bitul TXM = 0. Aceastaconfigurează pinul FSX ca intrare. Activarea operaţiilor pe portul serial are locdupă un impuls ce vine după dezactivarea resetului

10) Registrul TIM este încărcat cu FFFF. La TMS320C25 registrul PRD esteîncărcat cu aceeaşi valoare. TMS32020 cere o iniţializare soft a acestui registru.Registrul TIM începe să se decrementeze după dezactivarea /RS

11) Este generat un semnal /IACK ca la întreruperile mascabile12) Starea memoriei RAM este nedefinită13) Biţii ARB, ARP, DP, IMR, OVM, TC nu sunt iniţializaţi de reset.

4.6.4 Registrele de stare

Cele două registre de stare, ST0 şi ST1, conţin starea indicatorilor diferitelormoduri de funcţionare şi bistabilele de condiţii. Pot fi salvaţi în memoria de date şiîncărcaţi din ea, ceea ce permite ca starea procesorului să fie salvată şi restauratădupă subrutine şi întreruperi. Biţii de stare pot fi citiţi sau scrişi cu instrucţiunileLST / LST1, SST / SST1, cu excepţia bitului INTM care nu poate fi încărcat cuLST. Câmpurile ARP, ARB, DP apar ca registre separate în schema bloc şi pentrucă aceste registre nu au instrucţiuni separate pentru stocarea lor în RAM, au fostincluşi în registrele de stare. Configuraţia celor două registre de stare este dată înFig.4.20.

* La TMS32020 biţii 5, 6 şi 9 ai lui ST1 sunt în starea logică "1"

Fig.4.20 Organizarea registrelor de stare