PROCESOARE NUMERICE DE SEMNAL

Documente similare
PROCESOARE NUMERICE DE SEMNAL

1. ARHITECTURA MICROPROCESOARELOR 1.1. Microprocesorul. Noțiuni generale Progresele tehnologice și electronice, înregistrate în ultimele decenii, au d

Adresarea memoriei Modurile de adresare constituie un instrument principal pentru reprezentarea în memorie a imaginii datelor, aşa cum este ace

Microsoft Word - intro_msp430.doc

SSC-Impartire

Slide 1

Interfețe și Protocoale de Comunicații Arduino-Port Paralel Arduino. Laborator 1- Portul Paralel 1 Caracteristici generale Arduino UNO este o placă de

Microsoft Word - 4-Interfete paralele.doc

PowerPoint-Präsentation

1. Operatii cu matrici 1 Cerinte: Sa se realizeze functii pentru operatii cu matrici patratice (de dimensiune maxima 10x10). Operatiile cerute sunt: A

Lucrarea 10

Slide 1

Microsoft Word - 2 ES RO.doc

PowerPoint Presentation

Microsoft Word - Notiuni de arhitectura calculatoarelor.doc

4. Creşterea vitezei de execuţie a algoritmilor intensiv computaţio-nali cu ajutorul coprocesoarelor ataşate, bazate pe structuri logice reconfigurabi

Microsoft Word - IngineriF_A.DOC

Controlerul LCD

Microsoft Word - O problema cu bits.doc

PowerPoint-Präsentation

Caraivan George-Alexandru Grupa 431A Interfața driver-kernel la Linux Introducere Deși pentru unii dintre noi acest lucru poate fi o supriză, cei mai

Kein Folientitel

PowerPoint-Präsentation

Guns N' Roses Video Slots Regulile jocului Guns N' Roses Video Slots este un slot video cu 5 role, 3 rânduri și 20 de linii care conține substituții W

Modul Modbus ASCII SISTEME DE COMUNICATIE CURS 5 - Constantinescu Catalin Atunci cand se foloseste modul MODBUS ASCII fiecare octet din mesaj

ALGORITMII ŞI REPREZENTAREA LOR Noţiunea de algoritm Noţiunea de algoritm este foarte veche. Ea a fost introdusă în secolele VIII-IX de către Abu Ja f

1

Cartelele telefonice

Sisteme de calcul în timp real

Operatorii in C Expresii Operatori aritmetici Operatori de asignare Operatori de incrementare si decrementare Operatori relationali Operatori logici O

Microsoft Word - Lab1a.doc

Ch

Platformăde e-learning și curriculăe-content pentru învățământul superior tehnic Sisteme de operare 13. Planificarea proceselor

Înregistrator de temperatură şi umiditate AX-DT100 Instrucţiuni de utilizare

VLT® AQUA Cascade Contr. Manual SW1.00

Microsoft Word - Lucrarea_10_t.doc

E_d_Informatica_sp_SN_2014_bar_10_LRO

Microsoft Word - Prelegere 1 - Bratu C. - Microcontrolerul.doc

PPSD

Microsoft Word - Curs_10.doc

SEKA GPRS BUS Modul GPRS BUS nativ S.C. SECPRAL COM SRL Mihai Limbăşan Revizie manual: v iulie 2009 Rezumat Documentul de faţă descrie instalare

Microsoft Word - Curs1.docx

Microsoft Word - Tema 06 - Convertoare analog-numerice.doc

Microsoft Word - FiltrareaNyquist-rezumat.doc

Regulile jocului Hotline Hotline este un slot video cu 5 role, 3 rânduri și 30 de linii (fixe) care conține simboluri Wild și Expanding Wild, Re-Spins

proiectarea bazelor de date

Sisteme cu FPGA şi Soft Processors

PROBLEME PRIVIND INSTABILITATEA UNOR CALCULE ALE MECANISMELOR

Diapositive 1

LABORATOR I

Universitatea Transilvania Braşov Facultatea de Inginerie Electrică şi Ştiinţa Calculatoarelor Catera de Electronică şi Calculatoare Construcţia şi de

CD180 Romanian quick start guide

Paradigme de programare

PowerPoint Presentation

LUMINIŢA SCRIPCARIU

Cuprins

Paradigme de Programare

Logică și structuri discrete Limbaje regulate și automate Marius Minea marius/curs/lsd/ 24 noiembrie 2014

Limbaje de Programare Curs 6 – Functii de intrare-iesire

VI. Achiziția datelor în LabVIEW

Secţiunea 7-8 începători Concurs online de informatică Categoria PROGRAMARE PROBLEMA 1 ID 100 puncte Calculatoarele trebuie să se recunoască în rețeau

XL30 Romanian quick start guide

tehnologii web

Microsoft PowerPoint - Curs_SDA_9_RO_2019_v2.pptx

Programarea şi utilizarea calculatoarelor

Fâciu N. Maria-Ema CASA CORPULUI DIDACTIC BRĂILA PROGRAM DE FORMARE INFORMATICĂ ȘI TIC PENTRU GIMNAZIU CLASA A V-A SERIA 1 GRUPA 2 CURSANT: Fâciu N. M

PowerPoint Presentation

L4. TEOREMELE ALGEBREI BINARE. FUNCȚII LOGICE ELEMENTARE. OPERAȚII LOGICE PE BIT. SINTEZA FUNCȚIILOR LOGICE DIN TABELE DE ADEVĂR 1. Obiective Prin par

Microsoft Word - Algoritmi genetici.docx

Manual de utilizare Room Booking System

FILTRE DE REALIZARE CU CIRCUITE DE INTEGRARE

MANUAL DE UTILIZARE TERMOSTAT DE CAMERĂ EBERLE INSTAT PLUS 3R Cod produs: I. Instrucţiuni de utilizare Manevrarea produsului (privire de ansamb

Slide 1

PowerPoint Presentation

Slide 1

Microsoft Word - Curs_07.doc

Microsoft Word - Curs_09.doc

ALGORITMICĂ. Seminar 3: Analiza eficienţei algoritmilor - estimarea timpului de execuţie şi notaţii asimptotice. Problema 1 (L) Să se determine număru

AVS5010.indd

De la BIT la procesor

Dispozitiv de deschidere a porţilor batante PKM-C02 Manual de utilizare Atenţie: acest dispozitiv trebuie instalat de către profesionişti calificaţi b

1

Linie automata de taiat sticla format jumbo producator: INTERMAC Italia Linia de compune din: 1. Statie automata de incarcare GENIUS 61 LS-BL 2. Masa

Concepte de bază ale Tehnologiei Informației

Microsoft PowerPoint - ARI_R_c9-10_IP_part2 [Compatibility Mode]

Microsoft PowerPoint - TDRC_II-10-TCP.ppt

Microsoft Word - C05_Traductoare de deplasare de tip transformator

Microsoft Word - Manual_GTA_470_ROU.doc

2 BAZE TEORETICE ALE REȚELELOR DE CALCULATOARE CAPITOLUL 2 BAZE TEORETICE ALE REŢELELOR DE CALCULATOARE 2.1. Necesitatea standardizării (referenţierii

TM200 Live Tour guide Sistem audio mobil Sistemul de comunicare audio Tour guide este util in cel putin 3 situatii si vine cu avantaje clare: 1) Cand

programă şcolară pentru clasa a 11a, liceu

Slide 1

Slide 1

Microsoft Word - 01_Introducere.doc

Informatică aplicată TEST GRILA TEST GRILĂ - REZOLVAT 1.Structura de principiu a unui sistem de calcul contine urmatoarele componente principale: A. u

Proiectarea Sistemelor Software Complexe

Microsoft Word - Curs_08.doc

Lab6LCD

Slide 1

Microsoft PowerPoint - ImplementareLimbaj [Read-Only] [Compatibility Mode]

Transcriere:

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. SFL - rotire spre stânga SFR - rotire spre dreapta Fig.4.9 Unitatea centrală aritmetică şi logică (CALU) Î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. Procesoare numerice de semnal - Cap. 4 23

O intrare în ALU este întotdeauna furnizată de acumulator, iar cealaltă intrare poate fi transferată de la registrul de produs PR al multiplicatorului, sau de la scalling 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ă la magistrala de date şi o ieşire pe 32 de biţi legată la ALU (vezi Fig.4.9). Circuitul produce o rotire la dreapta între 0 şi 16 biţi a datelor de intrare, după cum e programat în instrucţiune. Cei mai puţin semnificativi biţi ai ieşirii sunt umpluţi cu 0, iar cei mai semnificativi pot fi fie umpluţi cu 0, fie extinşi ca semn, în funcţie de starea SXM (sign extension mode) al registrului de stare ST1. TMS320C2x conţine de asemenea o serie de alte registre de deplasare care-i permit să execute deplasări numerice, extracţii de biţi, extinderea preciziei aritmetice şi prevenirea depăşirilor. Aceste registre sunt conectate la ieşirea multiplicatorului şi acumulatorului. 4.5.2 ALU şi acumulatorul ALU şi acumulatorul pe 32 de biţi ale TMS320C2x realizează o gamă largă de funcţii aritmetice şi logice, din care majoritatea se execută într-un singur ciclu de ceas. Odată ce o operaţie este executată în ALU, rezultatul este transferat în acumulator, unde pot avea loc operaţiile adiţionale, cum ar fi deplasarea. Data care intră î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ţi luate 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ând facilităţile de manipulare la nivel de bit cerute de un controler de mare viteză. Una din intrările ALU este furnizată totdeauna de către acumulator. Cealaltă poate fi furnizată de către registrul de produs al multiplicatorului, PR, sau de la intrarea lui scalling shifter care a adus data din memoria RAM pe magistrala de date. După ce ALU 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 16 biţi pentru stocarea în memoria de date: ACCH (accumulator high) şi ACCL (accumulator low). Shifterii de la ieşirea acumulatorului furnizează o deplasare stâ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 de date pentru stocare. Conţinutul acumulatorului rămâne neschimbat. Când conţinutul ACCH este deplasat stânga, cei mai puţin semnificativi biţi sunt transferaţi din ACCL, iar cei mai semnificativi biţi se pierd. Când ACCL este 24 Procesoare numerice de semnal - Cap. 4

deplasat stânga, cei mai puţin semnificativi biţi sunt umpluţi cu 0, iar cei mai semnificativi 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 a normaliza numerele în virgulă fixă din acumulator prin deplasări la stânga. Instrucţiunea LACT (încarcă acumulatorul cu o deplasare specificată prin registrul T) denormalizează un număr scris în virgulă mobilă prin deplasarea aritmetică la stânga a mantisei, prin intrarea de scalare - deplasare. În acest caz, contorul deplasărilor are valoarea exponentului specificat prin cei mai puţin semnificativi 4 biţi ai registrului T (TR). Instrucţiunile ADDT şi SUBT (adună la / scade din acumulator, cu deplasare specificată prin registrul T) au fost prevăzute de asemenea pentru a permite operaţii aritmetice adiţionale. Modul de lucru cu saturaţie la depăşire a acumulatorului poate fi programat prin instrucţiunile SOVM şi ROVM (set / reset overflow mode). Când acumulatorul este în acest mod şi apare o depăşire, indicatorul de overflow (OF) este setat şi acumulatorul este încărcat fie cu cel mai pozitiv, fie cu cel mai negativ număr, în funcţie de direcţia depăşirii. Valoarea acumulatorului după saturaţie este 7FFF FFFF (pozitiv) sau 8000 0000 (negativ). Dacă bitul modului overflow (OVM) din registrul de stare este resetat şi apare o depăş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) care depind 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ă de acumulator; - BIT şi BITT (instrucţiuni de testare a biţilor). Ele nu afectează acumulatorul şi permit testarea unui bit specificat dintr-un cuvânt al memoriei de date. Acumulatorul din TMS320C25 are un bit de carry (transport), care este setat sau resetat, în funcţie de diferite operaţii din circuit. Bitul de carry permite calculul mai eficient în precizie extinsă a rezultatului pentru adunare sau scădere. Este de asemenea util în gestionarea depăşirilor. Bitul de carry este afectat de majoritatea instrucţiunilor aritmetice, de deplasări şi rotaţii. Nu este afectat de încărcarea acumulatorului sau de operaţii logice şi nici de alte operaţii ne-aritmetice, sau de instrucţiunile de control. De asemenea, nu este afectat de instrucţiunile de înmulţire Procesoare numerice de semnal - Cap. 4 25

(MPY, MPYK, MPYU), dar este afectat de procesele de acumulare în instrucţiunile MAC şi MACD. Exemple de operaţii cu bitul de carry sunt prezentate î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 de deplasare de la ieşirea registrului P. Bitul de carry este setat dacă rezultatul unei adunări sau "acumulări" generează un transport, sau este resetat dacă rezultatul unei scăderi generează un împrumut. În celelalte cazuri, este resetat după o adunare, sau setat după o scădere. Instrucţiunile ADDC (adună la acumulator cu transport), şi SUBB (scade din acumulator cu împrumut), facilitate de TMS320C25, folosesc valorile mai sus menţ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 cazul folosirii instrucţiunilor ADDH (adună la ACCH) şi SUBH (scade din ACCH). ADDH poate doar să seteze CY dacă se generează transport, iar SUBH poate doar să reseteze CY dacă se generează împrumut. Altfel, nici o instrucţiune nu poate afecta bitul CY. Sunt prevăzute două instrucţiuni de salt (ramificare) funcţie de starea bitului de CY: BC şi BNC. Pentru încărcarea bitului de carry există instrucţiunile C, RC şi LST1. Bitul CY este setat la 1 după resetul hard. Instrucţiunile SFL / SFR (introduce în CY un bit prin rotire la stânga / dreapta cu un 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 la dreapta). Când SXM = 1, SFR realizează o rotire aritmetică la dreapta, menţinând 26 Procesoare numerice de semnal - Cap. 4

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 la stâ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 sau RPTK pot fi folosite cu instrucţiunile de deplasare şi rotire pentru numărarea unor deplasări multiple. 4.5.3 Multiplicatorul, registrele P şi T TMS320C2x foloseşte un multiplicator pe 16 x 16 biţi, implementat hardware, care este capabil să calculeze un produs cu semn sau fără semn pe 32 de biţi, într-un singur 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 sunt tratate ca două numere în complement faţă de 2, iar rezultatul este un număr pe 32 de biţi, în complement faţă de 2. Aşa cum se arată în Fig.4.9, două registre sunt asociate 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 util pentru implementarea aritmeticii fracţionale sau pentru alinierea produsului fracţional. Ieşirea lui PR poate fi de asemenea deplasată dreapta cu 6 biţi pentru a permite 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 a furniza 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 fi realizată de asemenea cu un operand imediat, folosind instrucţiunea MPYK. În alte cazuri, un produs poate fi obţinut la fiecare 2 cicluri. Două instrucţiuni de înmulţire / acumulare (MAC şi MACD) folosesc integral capacitatea de calcul a multiplicatorului, permiţând ambilor operanzi să fie prelucraţi simultan. Datele pentru aceste operaţii pot fi rezidente oriunde în memoria internă sau în cea externă, sau pot fi transferate multiplicatorului în fiecare ciclu pe magistrala de program sau de date. Acestea sunt furnizate pentru fiecare 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 adrese din memoria de date externă. La TMS32020, deînmulţitul şi înmulţitorul trebuie să fie rezidente în blocuri de memorie RAM separate. La TMS320C25, instrucţiunile MAC şi MACD pot fi Procesoare numerice de semnal - Cap. 4 27

utilizate fie cu ambii operanzi din memoria internă sau externă, fie cu unul din memoria RAM de pe circuit. Instrucţiunile SQRA (square / addition) şi SQRS (square / substraction) pun aceeaşi valoare pe ambele intrări ale multiplicatorului pentru a ridica la pătrat o valoare din memoria de date. Instrucţiunea MPYU de la TMS320C25 execută o înmulţire fără semn, ceea ce facilitează mult extinderea preciziei în operaţiile aritmetice. Conţinutul fără semn al registrului T este multiplicat cu conţinutul fără semn al unei locaţii din memoria de date, iar rezultatul este plasat în registrul P. Aceasta permite operanzilor mai mari de 16 biţi să fie împărţiţi în operanzi de 16 biţi şi prelucraţi separat pentru a genera 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 în registrul PR pe 32 de biţi al lui TMS320C2x. Produsul din PR poate fi transferat în ALU. Există 4 moduri de deplasare a produsului disponibile la ieşirea PR. Aceste 4 moduri 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 ST1 specifică 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ă numere normalizate pe 16 biţi, produsul a două numere în complement faţă de 2, produsul a două numere în format Q15, conţinând 2 biţi de semn, dintre care unul este redundant. Formatul Q15 este unul dintre variatele tipuri ale formatului Q; este o reprezentare a numerelor folosită frecvent când se execută operaţii cu numere ne-întregi. O rotaţie stânga de un singur bit elimină bitul suplimentar de semn din produs, când este 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 şi o constantă de 13 biţi în complement faţă de 2 conţine 5 biţi din care 4 sunt redundanţi. Este cazul folosirii instrucţiunii MPYK. Aici, o deplasare de 4 biţi aliniază în mod adecvat rezultatul transferat în acumulator. 28 Procesoare numerice de semnal - Cap. 4

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, astfel evitâ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 cu TMS320C1x. Trebuie notat că rotirea dreapta este întotdeauna însoţită de extensia de semn, indiferent de starea SXM. Cei mai puţin semnificativi 4 biţi ai registrului TR definesc de asemenea o deplasare variabilă prin scalling shifter pentru instrucţiunile LACT, ADDT şi SUBT. Aceste instrucţiuni sunt utile în aritmetica în virgulă flotantă, când un număr trebuie să fie denormalizat, ceea ce înseamnă realizarea conversiei de la virgulă mobilă la virgulă fixă. Instrucţiunea BITT (bit test) permite testarea unui singur bit dintr-un cuvânt din memoria de date pe baza valorii conţinute în cei mai puţin semnificativi 4 biţi din TR. 4.6 Controlul sistemului Controlul de sistem al procesorului TMS320C2x este asigurat de numărătorul de program (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ărei componente î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 de program. Numărătorul de program (PC) adresează memoria de program internă şi externă în instrucţiunile de fetch. Stiva este utilizată în timpul subrutinelor şi întreruperilor. PC adresează memoria program de pe circuit sau din afara acestuia prin magistrala adreselor de program. Pe această magistrală este adusă o instrucţiune din memoria de 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 blocul B0 al memoriei RAM de pe circuit, când B0 este configurat ca memorie de program, sau memoria ROM internă, precum şi memoria program externă prin magistrala externă de date (liniile D15-D0) şi adrese (liniile A15-A0). Procesoare numerice de semnal - Cap. 4 29

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 de salt în cazul unor instrucţiuni de salt, întreruperi, sau subrutine. În cazul instrucţiunilor de salt condiţionat, când nu se face saltul, PC este incrementat o dată înplus, sărindu-se peste adresa de salt. TMS320C2x permite repetarea execuţiei unei instrucţiuni de N+1 ori, încărcând în registrul 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, sau SUBC. 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 ultimei locaţ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 şi respectiv 7 extrageri, duce la extragerea valorii de la baza stivei. Instrucţiunile PUSHD şi POPD depun o valoare din memoria de date, respectiv refac memoria de date cu conţinutul din stivă. Aceste instrucţiuni permit construirea unei stive în memoria de date, realizându-se nivele de imbricare ale subrutinelor peste dimensiunea stivei inferioare (4, respectiv 8 nivele). 30 Procesoare numerice de semnal - Cap. 4

4.6.2 Funcţionarea magistralei pipeline "Pipelining"-ul instrucţiunilor constă din secvenţa de operaţii ale magistralei externe care apar în cursul execuţiei instrucţiunii. Ciclul de prefetch-decodareexecuţie al pipeline-ului este invizibil pentru utilizator, cu excepţia anumitor cazuri când pipeline-ul trebuie întrerupt (cum sunt instrucţiunile de salt). Operaţiile de prefetch, decodare şi execuţie sunt independente, ceea ce permite ca ele să se suprapună în timp la execuţia unei instrucţiuni. În timpul oricărui ciclu, două sau trei 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 şi TMS320C25. Diferenţele între nivelele de pipelining nu afectează neapărat viteza de 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ă sunt executate din memoria intenă ROM, RAM, sau din memoria de program externă. Circuitele suplimentare ale PC asigură pentru TMS320C2x un pipelining pe 3 nivele. Mai există un registru numărător de prefetch (PFC), registrul MCS pe 16 biţi, registrul IR şi registrul de aşteptare a instrucţiunilor QIR). În cazul pipelineului pe trei nivele, PFC conţine adresa următoarei instrucţiuni ce urmează a fi executată. 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 este depusă în QIR. PFC este incrementat, iar după completa execuţie a instrucţiunii curente următoarea instrucţiune este încărcată în IR din QIR pentru a intra în execuţie. Adresa conţinută de PC nu este utilizată în mod direct în operaţiile de fetch, ea fiind utilizată de cele mai multe ori ca pointer de referinţă a poziţiei curente din program. PC este incrementat după execuţia unei instrucţiuni. Când apar întreruperi sau subrutine, conţinutul registrului PC este salvat în stivă pentru a prezerva întoarcerea în programul principal. Operaţiile de prefetch, decodare şi execuţ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 de execuţie. Fig.4.12 arată funcţionarea magistralei pipeline pe trei nivele pentru execuţia instrucţiunilor de un singur cuvânt şi un singur ciclu din memoria ROM internă 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. Procesoare numerice de semnal - Cap. 4 31

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 ciclu pentru că toate sunt decodate direct. Funcţionarea pipeline-ului are o adâncime de 3.25 cicli, ceea ce înseamnă că într-un ciclu dat, este adusă cea de-a treia instrucţ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 un sfert de ciclu de la 1 la 4 (Q1 - Q4). Ciclul maşină, indicat extern de frontul căzător al semnalului CLKOUT1 la TMS320C25, constă din 4 faze interne, ceea ce permite execuţia operaţiilor pipeline-ului mai repede decât o pătrime a ciclului maşină. Secvenţa de instrucţiuni a pipeline-ului este arătată în tabelul următor. CICLU FAZĂ OPERAŢIE 1 1 Noul PC este depus pe magistrala de adrese 2 Citire externă a instrucţiunii 3 Citire externă a instrucţiunii 4 Citire externă a instrucţiunii 2 1 2 Decodarea instrucţiunii 3 Decodarea instrucţiunii / execuţie în ARAU 4 Acces la memoria RAM / execuţie în ARAU 3 1 Acces la memoria RAM / încărcarea noii valori a registrului auxiliar / reînnoirea registrului ARP 32 Procesoare numerice de semnal - Cap. 4

2 Execuţie în ALU 3 Execuţie în ALU 4 Î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 al ciclului 3, operandul este adus din memoria RAM. Incrementarea registrului auxiliar este realizată în Q3 şi Q4 al ciclului 2, iar valoarea este încărcată în registrul auxiliar în Q1 al ciclului 3. Registrul ARP este încărcat cu noua valoare corespunzătoare unui alt registru AR. În timpul Q2 şi Q3 al ciclului 3, data este trecută 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ă în registrul de stare, în Q1 a ciclului 4. Biţii care se încarcă în acest moment în registrul de stare reflectă starea curentă a ALU şi a registrului ARP asociat următoarei instrucţiuni. În cazul unei instrucţiuni de stocare (de exemplu, SACL *0-,3,AR2), funcţionarea circuitului în primii doi cicli este identică cu cazul anterior. În Q1 şi Q2 ale primului 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 ai valorii deplasate sunt scrişi la adresa specificată de registrul auxiliar curent. În cursul Q3 şi Q4 din ciclul 3, registrul index (AR0) este adunat la conţinutul registrului auxiliar curent şi stocat în registrul auxiliar curent în Q1 al fazei a patra. Procesoare numerice de semnal - Cap. 4 33

În Q1 al fazei a patra indicatorul registrului auxiliar este schimbat în AR2. Fig.4.15 arată desfăşurarea instrucţiunilor ADD şi SACL într-o secvenţă de program. Se presupune că ambele rezidă în memoria externă, nu există stări de aşteptare, iar datele sunt situate în memoria de date internă (on-chip RAM). Fig.4.15 Funcţionarea magistralei pipeline pentru instrucţiunea ADD urmată de instrucţiunea SACL Când se citeşte instrucţiunea din afara memoriei ROM interne, operaţiile interne de bază ale pipeline-ului sunt aceleaşi, singura diferenţă constă în faptul că liniile de semnale de control (/STRB, /PS, R//W) sunt inactive. Dacă instrucţiunea este adusă din memoria RAM internă, pipeline-ul este scurtat la 2.5 cicli, instrucţiunea fiind adusă într-o jumătate de ciclu, spre deosebire de un ciclu întreg necesar în cazul aducerii din memoria externă sau din memoria ROM internă. Instrucţiunea este adusă în fazele Q4 şi Q1 şi decodată în fazele Q2 şi Q3. În rest, operaţiile decurg la fel. Unele operaţii adaugă cicluri maşină adiţionale la execuţia instrucţiunii fără a deranja funcţionarea. Stările WAIT externe, conflictele de magistrală, instrucţiunile de două cuvinte şi discontinuităţile numărătorului de program fac parte 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ă pentru memoria 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şteptare inserată în timpul extragerii instrucţiunii contribuie la mărirea ciclului de pipeline corespunzător instrucţiunii. Orice stare de aşteptare inserată în timpul accesării datelor externe sau a spaţiului I/O măreşte de asemenea ciclul de pipeline. Fig.4.16 34 Procesoare numerice de semnal - Cap. 4

descrie reacţia mecanismului pipeline la stări de aşteptare la accesul în memoria externă. Starea de aşteptare introdusă în ciclul 2 duce la neexecutarea operaţiei în ciclul 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 conflict pe magistrala de date externă Magistrala de date este multiplexată pentru a putea deservi cele 3 spaţii de memorie ale procesorului. Aducerea din exterior a instrucţiunii din mai multe zone de memorie adaugă stări de aşteptare la ciclurile de pipeline corespunzătoare Procesoare numerice de semnal - Cap. 4 35

datorită faptului că pentru fetch-ul din exterior este necesar un ciclu întreg, în timp ce pentru cel intern e nevoie de două sferturi, putând fi inclus în pipeline-ul cu 3 nivele. Accesul la memoria de date este controlat prin setarea indicatorului paginii de date sau a conţinutului registrului auxiliar utilizat. Pipeline-ul este afectat în acelaş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 la program şi la date. Instrucţiunile pe două cuvinte Toate aceste instrucţiuni au un ciclu adiţional pentru aducerea operandului imediat pe 16 biţi, care urmează mnemonicii instrucţiunii. Primul set de instrucţiuni la care se aplică aceste considerente este cel care cuprinde instrucţiuni cu operand imediat. Mnemonica instrucţiunii este urmată de operandul imediat pe 16 biţi ce va fi utilizat de ALU. Cel de-al doilea set, include instrucţiunile care folosesc registrul PFC ca unitate de adresare secundară a datelor în unele instrucţiuni optimizate, de exemplu MAC / MACD, BLKP / BLKD. În cel de-al doilea set, ciclul exterior apare doar în bucla de repetare. Cel de-al treilea set include 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) a numărătorului de program necesită ştergerea pipeline-ului. Acest lucru se aplică la toate instrucţiunile de salt, apelarea de subrutine, capcanele (TRAP) software, sau la î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ă fie reîncărcată. Un singur ciclu adiţional este introdus dacă destinaţia saltului este în memoria RAM, blocul 0. În acest caz, pipeline-ul are doar 2 nivele şi necesită un singur ciclu pentru reîncărcare. Fig.4.18 arată un salt de la execuţia normală în memoria RAM internă, iar Fig.4.19, un exemplu de întoarcere din subrutină executată din RAM-ul intern la o locaţie din memoria externă. 36 Procesoare numerice de semnal - Cap. 4

Fig.4.18 Funcţionarea magistralei pipeline pentru salt executat în RAM-ul intern Fig.4.19 Funcţionarea magistralei pipeline pentru RET în RAM intern Întreruperile sunt discontinuităţi generate hardware în accesarea secvenţială a numărătorului de program (PC). Execuţia întreruperii se bazează pe execuţia completă 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 terminarea instrucţiunii în curs şi începerea instrucţiunii care urmează. În acest caz, o instrucţ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 Procesoare numerice de semnal - Cap. 4 37

este situat în memoria externă cu o stare de aşteptare, se vor genera 2 impulsuri ale semnalului /IACK. Dacă acest lucru este o problemă, linia /IACK trebuie condiţ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ării mecanismului pipeline. Se vor descrie efectele asupra pipeline-ului ale resetului, întreruperilor, semnalelor /HOLD//HOLDA, stocarea acumulatorului, accesul la datele externe şi memoria program internă, a ciclurilor de repetiţie şi modul în care aceste efecte sunt vizibile pe pinii procesorului. Reset. Resetul este o întrerupere totalmente nemascabilă şi atunci când este executată opreşte funcţionarea pipeline-ului şi şterge părţile neexecutate. Impulsul de reset trebuie să fie activ timp de 3 perioade ale CLKOUT1. Înainte de cel de-al treilea 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 va extrage vectorul de întrerupere înainte de dezactivarea lui /HOLD, procesorul dezactivând apoi şi /HOLDA. Când /HOLD este activ simultan cu resetul pentru a permite 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 reset de minim 3 cicli. Întreruperile devin vizibile asupra procesorului atunci când semnalul /IACK devine valid pe frontul crescător al CLKOUT2. Acest lucru indică aducerea primului cuvânt al vectorului de întrerupere. Dacă se generează stări de aşteptare în segmentul 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 lucru cauzează probleme cu interfaţa externă, /IACK poate fi condiţionat de READY pentru 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 unui program şi nu va fi acceptată înainte de execuţia completă a instrucţiunii (minim 3 cicli), inclusiv instrucţiunile repetate. Următoarea instrucţiune va fi încărcată pe pipeline la 2 perioade după ce linia /HOLDA devine inactivă. Dacă bitul HM din registrul 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 oprirea comandării memoriei şi a semnalelor de control, oprind principalele circuite ale CPU de a comuta şi comanda. Acest mod se poate utiliza pentru modul "power- 38 Procesoare numerice de semnal - Cap. 4

down". Dacă HM este în "0", procesorul continuă să execute orice instrucţiune ce poate 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 la memoria externă, moment la care procesorul adaugă stări de aşteptare până când semnalul 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 pe linia /MSC, activ pe frontul crescător al CLKOUT2. Execuţia din memoria program de pe circuit nu permite instrucţiunilor accesate din memoria de date externă să funcţioneze într-un singur ciclu. Execuţia normală a unei instrucţiuni necesită 2 faze în cazul memoriei de date de pe circuit, în timp ce accesul în memoria externă necesită 4 faze. Mecanismul pipeline este optimizat pentru a realiza instrucţiuni repetate care accesează memoria externă de date cu un singur ciclu 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ător al 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-ul aduce instrucţiunea externă. Linia /PS activă low nu înseamnă neapărat că se extrage o instrucţiune. În cazul instrucţiunilor TBLR / TBLW, MAC / MACD, BLKP, linia /PS activă înseamnă accesare de tabele. Pentru urmărirea aducerii datelor din memoria de date externă, se utilizează /STRB. Linia /DS activă pe low indică 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 stocare a acumulatorului urmată de o instrucţiune în ALU, ambele operând cu memoria externă. Două impulsuri /STRB identifică fiecare acces. De asemenea, linia rămâne activă mai mulţi cicli în cazul unei instrucţiuni repetate. Accesul la spaţiul de I/O operează similar în cazul instrucţiunilor de I/O care înlocuiesc operaţiile de stocare acumulator ş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 şi forţează PC în "0". /RS afectează diferite registre şi biţii de stare. Pentru funcţionarea corectă a sistemului după cuplare, semnalul /RS trebuie activat timp de 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ţializare a 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 date 2) PC este setat în "0", liniile A15-A0 sunt trecute în "0" cât timp /RS este în low Procesoare numerice de semnal - Cap. 4 39

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 low 6) 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 şters 9) 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. Aceasta configurează pinul FSX ca intrare. Activarea operaţiilor pe portul serial are loc după 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 mascabile 12) 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 diferitelor moduri 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ţiunile LST / LST1, SST / SST1, cu excepţia bitului INTM care nu poate fi încărcat cu LST. Câmpurile ARP, ARB, DP apar ca registre separate în schema bloc şi pentru că aceste registre nu au instrucţiuni separate pentru stocarea lor în RAM, au fost incluşi în registrele de stare. Configuraţia celor două registre de stare este dată în Fig.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 40 Procesoare numerice de semnal - Cap. 4