Sunteți pe pagina 1din 25

Procesoare Numerice de Semnal - CURS 1

4. Structura hardware a generaţiei TMS320C2x

4.1 Descrierea semnalelor


4.2 Privire generală asupra arhitecturii
4.3 Structura internă
4.4 Organizarea memoriei
4.5 Unitatea centrală aritmetică şi logică
4.6 Controlul sistemului
4.7 Memoria externă şi interfaţa I/O
4.8 Întreruperile
4.9 Portul serial
4.10 Multiprocesare şi accesul direct la memorie
Procesoare Numerice de Semnal - CURS 2

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-decodare-execuţ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 timpul execuţiei 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ă.
Procesoare Numerice de Semnal - CURS 3

4.6.2 Funcţionarea magistralei pipeline

Circuite suplimentare ale PC asigură pentru TMS320C2x un


pipelining pe 3 nivele.
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 pipeline-ului 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.
Procesoare Numerice de Semnal - CURS 4

4.6.2 Funcţionarea magistralei pipeline


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. Figura 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.
Procesoare Numerice de Semnal - CURS 5

4.6.2 Funcţionarea magistralei pipeline


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 Figură.
Procesoare Numerice de Semnal - CURS 6

4.6.2 Funcţionarea magistralei pipeline


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. Figura arată funcţionarea internă a magistralei pipeline TMS320C25
raportată la fazele de un sfert de ciclu de la 1 la 4 (Q1 - Q4).
Procesoare Numerice de Semnal - CURS 7

4.6.2 Funcţionarea magistralei pipeline


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
2 Execuţie în ALU
3 Execuţie în ALU
4 Încărcarea acumulatorului
4 1 Încărcarea registrului de stare
Procesoare Numerice de Semnal - CURS 8

4.6.2 Funcţionarea magistralei pipeline

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 ale 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.
Procesoare Numerice de Semnal - CURS 9

4.6.2 Funcţionarea magistralei pipeline

Î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. În Q1 al fazei a patra
indicatorul registrului auxiliar este schimbat în AR2. Figura următoare
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).
Procesoare Numerice de Semnal - CURS 10

4.6.2 Funcţionarea magistralei pipeline


Procesoare Numerice de Semnal - CURS 11

4.6.2 Funcţionarea magistralei pipeline

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.
Procesoare Numerice de Semnal - CURS 12

4.6.2 Funcţionarea magistralei pipeline

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. Figura următoare 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.
Procesoare Numerice de Semnal - CURS 13

4.6.2 Funcţionarea magistralei pipeline


Procesoare Numerice de Semnal - CURS 14

4.6.2 Funcţionarea magistralei pipeline

Magistrala de date externă multiplexată

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 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. Figura următoare arată modul în care magistrala procesează o
instrucţiune cu acces extern la program şi la date.
Procesoare Numerice de Semnal - CURS 15

4.6.2 Funcţionarea magistralei pipeline


Procesoare Numerice de Semnal - CURS 16

4.6.2 Funcţionarea magistralei pipeline

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.
Procesoare Numerice de Semnal - CURS 17

4.6.2 Funcţionarea magistralei pipeline

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. Figurile următoare arată
un salt de la execuţia normală în memoria RAM internă şi respectiv, un
exemplu de întoarcere din subrutină executată din RAM-ul intern la o
locaţie din memoria externă.
Procesoare Numerice de Semnal - CURS 18

4.6.2 Funcţionarea magistralei pipeline


Procesoare Numerice de Semnal - CURS 19

4.6.2 Funcţionarea magistralei pipeline


Procesoare Numerice de Semnal - CURS 20

4.6.2 Funcţionarea magistralei pipeline

Î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 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.
Procesoare Numerice de Semnal - CURS 21

4.6.2 Funcţionarea magistralei pipeline

Aspecte hardware ale mecanismului pipeline

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.
Procesoare Numerice de Semnal - CURS 22

4.6.2 Funcţionarea magistralei pipeline

Aspecte hardware ale mecanismului pipeline

Întreruperile devin vizibile pentru procesor 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.
Procesoare Numerice de Semnal - CURS 23

4.6.2 Funcţionarea magistralei pipeline

Aspecte hardware ale mecanismului 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-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.
Procesoare Numerice de Semnal - CURS 24

4.6.2 Funcţionarea magistralei pipeline

Aspecte hardware ale mecanismului pipeline

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.
Procesoare Numerice de Semnal - CURS 25

4.6.2 Funcţionarea magistralei pipeline

Aspecte hardware ale mecanismului pipeline

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.

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