+ All Categories
Home > Documents > ARHITECTURA MICROPROCESOARELOR

ARHITECTURA MICROPROCESOARELOR

Date post: 26-Jan-2016
Category:
Upload: daniel-anton
View: 67 times
Download: 2 times
Share this document with a friend
Description:
caracteristicile sistemelor de prelucrare digitala a semnalelor vedere generala asupra unui procesor de semnalprocesare de virgula fixa
78
1 Caracteristicile sistemelor de prelucrare digitală a semnalelor . Majoritatea aplicaţiilor de procesare a semnalelor ( Digital Signal Processing - DSP) necesită o prelucrare în timp real cu o intîrziere minimă între momentele de timp ale achizitiei semnalului de intrare şi generarea semnalului de iesire. Pentru aceste aplicaţii datele de intrare nu pot fi stocate (pentru a fi prelucrate " off line" ) deci procesorul trebuie sa fie suficient de rapid pentru a se evita pierderea de date. Pe de altă parte algoritmii DSP sînt caracterizaţi de paralelism în ceea ce priveşte organizarea calculelor; acest paralelism poate fi exploatat de arhitectura procesorului de semnal . Vedere generală asupra unui procesor de semnal În figura 1. este prezentată o configuratie generică a unui procesor de semnal constituit din: unitatea de procesare, memorie, unitatea detransfer a datelor, procesorul de intrare / ieşire şi procesorul de control. În structură pot exista mai multe unităti de prelucrare distribuite, cu memorii private sau comune. Transferul datelor şi conflictele de acces la memorie pot constitui elemente de reducere a vitezei globale de operare a procesorului. Pentru evitarea acestui fenomen se utilizează proiectarea modularizată, cu partajarea sarcinilor între unitătile de prelucrare. Acest lucru este valabil atît pentru procesoarele de semnal nou create cît şi pentru structurile de prelucrare cu mai multe procesoare integrate interconectate. Procesorul de intrare - iesire (I /O) asigură preluarea semnalului de intrare şi generarea semnalului de ieşire (filtrare de bandă, conversii, stocare a datelor, protocolul de comuniţie cu exteriorul). Memoria este caracterizată prin: capacitatea de stocare a datelor, lărgimea cuvîntului de date, modurile de adresare a datelor, timpul de acces).
Transcript
Page 1: ARHITECTURA MICROPROCESOARELOR

1

Caracteristicile sistemelor de prelucrare digitală a

semnalelor .

Majoritatea aplicaţiilor de procesare a semnalelor ( Digital Signal Processing - DSP)

necesită o prelucrare în timp real cu o intîrziere minimă între momentele de timp ale achizitiei

semnalului de intrare şi generarea semnalului de iesire. Pentru aceste aplicaţii datele de intrare

nu pot fi stocate (pentru a fi prelucrate " off line" ) deci procesorul trebuie sa fie suficient de

rapid pentru a se evita pierderea de date.

Pe de altă parte algoritmii DSP sînt caracterizaţi de paralelism în ceea ce priveşte

organizarea calculelor; acest paralelism poate fi exploatat de arhitectura procesorului de

semnal .

Vedere generală asupra unui procesor de semnal

În figura 1. este prezentată o configuratie generică a unui procesor de semnal constituit

din: unitatea de procesare, memorie, unitatea detransfer a datelor, procesorul de intrare / ieşire

şi procesorul de control.

În structură pot exista mai multe unităti de prelucrare distribuite, cu memorii private

sau comune. Transferul datelor şi conflictele de acces la memorie pot constitui elemente de

reducere a vitezei globale de operare a procesorului. Pentru evitarea acestui fenomen se

utilizează proiectarea modularizată, cu partajarea sarcinilor între unitătile de prelucrare. Acest

lucru este valabil atît pentru procesoarele de semnal nou create cît şi pentru structurile de

prelucrare cu mai multe procesoare integrate interconectate.

Procesorul de intrare - iesire (I /O) asigură preluarea semnalului de intrare şi generarea

semnalului de ieşire (filtrare de bandă, conversii, stocare a datelor, protocolul de comuniţie cu

exteriorul).

Memoria este caracterizată prin: capacitatea de stocare a datelor, lărgimea cuvîntului

de date, modurile de adresare a datelor, timpul de acces).

Page 2: ARHITECTURA MICROPROCESOARELOR

2

I / O

Intrare

Iesire

MemorieRetea de

transfer

a datelor

Procesor

de control

Procesor

Unitate

prelucrare

de

Figura 1 Procesor de semnal generic

Reţeaua de transfer a datelor asigură transmiterea datelor către toate unitătile

funcţionale ale procesorului de semnal (transmisie de date, rutarea datelor, controlul asupra

erorilor ).

Procesorul de control este caracterizat de: capacitatea de stocare a instrucţiunilor,

viteza de execuţie , setul de instrucţiuni.

Unitatea de prelucrare asigură efectuarea operaţiilor de bază (operaţii aritmetice,

logice) şi este caracterizată de: timpul de execuţie a intrucţiunilor, gradul de flexibilitate.

Funcţiile procesorului de control sînt: interpretarea comenzilor primite din exterior,

controlul transferului de date, controlul unităţilor de prelucrare şi controlul interfeţelor de

intrare-ieşire.

Aceste funcţii pot fi distribuite şi către alte elemente ale sistemului. De exemplu

unităţile de prelucrare au posibilitatea de a controla local transferul datelor şi funcţiile

aritmetice - logice proprii.

Procesorul de control poate efectua prelucrări complementare aplicaţiei DSP (de uz

general care nu au cerinte critice de timp : monitorizare , întreţinere etc. )

Resursele procesorului de control includ capacitatea de stocare a datelor şi

instrucţiunilor, setul de instrucţiuni, capabilitatea aritmetică.

Elementele de prelucrare execută algoritmul DSP în timp real . Aceste elemente sînt

specializate în efectuarea prelucrărilor specifice algoritmilor DSP.

Page 3: ARHITECTURA MICROPROCESOARELOR

3

Reţeaua de transfer a datelor reprezintă un bloc esenţial în sistem; acest bloc poate

avea influenţe majore în viteza de prelucrare globală a sistemului.

Resursele reţelei de transfer a datelor includ: căile de rutare a datelor, lărgimea

busurilor de transfer a datelor, viteza de transmisie, posibilitatea de transfer pe blocuri de date.

Cerinţele de control a retelei de transfer includ protocoalele de comunicaţie şi modurile de

adresare. Numărul de busuri reprezintă o problemă care diminuează capacitatea de transfer a

datelor între blocurile din figura 1; nu este convenabilă realizarea unei interconectări totale

între blocuri datorită complexitătii tehnologice şi a necesităţii introducerii unor blocuri

suplimentare de arbitare a cererilor de acces multiple.

Resursele memoriilor includ: capacitatea de stocare , lărgimea cuvintului de date,

modurile de adresare şi controlul general al memoriei ( decodificare , comenzi ).

Unităţi aritmetice şi de control pentru procesoare DSP

Unitatea aritmetica poate fi organizata în 3 moduri prezentate mai jos:

1.Unitate aritmetica fara multiplicator (numai sumator şi shifter); este prezentată în figura 2.

Figura 2.

Notaţii: Acc - acumulator

Mux - multiplexor

Page 4: ARHITECTURA MICROPROCESOARELOR

4

În acest caz inmulţirea se realizează prin deplasări şi adunări (conform unui algoritm

secvenţial de înmultire implementat prin program); solutia este foarte economică, dar de

viteză mica.

2.Unitate aritmetică cu multiplicator şi sumator

a) structura în cascada (figura 3 a)

Structura este potrivită pentru sume de produse; se pot efectua înmulţiri rapide. Timpul

de efectuare al unei sume de produs (înmulţire şi acumulare la suma anterioră) este destul de

mare. Pentru îmbunatăţirea performanţelor acestei structuri se pot folosi în paralel înmultitorul

şi sumatorul. Multiplicatorul se poate folosi în mod secvenţial (se efectuează cîte un produs

apoi se face acumularea rezultatului) sau în timp ce se efectueaza un produs se acumuleaza

rezultatul anterior (utilizarea în paralel a multiplicatorului şi a sumatorului).

Dezavantajele acestei structuri sînt: efectuarea sumelor simple se face cu utilizarea

suplimentară a multiplicatorului (ceea ce măreşte timpul de calcul) şi efectuarea produselor

multiple se face cu utilizarea suplimentară a sumatorului.

Figura 3 a)

Page 5: ARHITECTURA MICROPROCESOARELOR

5

b) structura paralelă (figura 3 b)

Figura 3 b)

Avantajul acestei structuri este posibilitatea efectuării unor calcule, de tip x.y+z, cu

viteză foarte mare datorită faptului ca sumatorul şi multiplicatorul pot lucra paralel.

Dezavantajele structurii sînt: numărul de busuri interne mare; pentru reducerea

numărului de busuri se alege varianta transferurilor pe busuri comune sumatorului şi

multiplicatorului: paralelismul nu mai este total.

Unitatea de control a unui procesor de semnal poate fi realizată microprogramat

utilizînd tehnica pipe-line pentru a mari viteza de lucru. În figura 3.c este ilustrată realizarea

unei unităţi de control microprogramate fără pipe-line. Modificările introduse prin tehnica

pipe line sînt ilustrate în figura 3d.

Notaţiile utilizate sînt: tsecv - timp de calcul al adresei pentru memoria demicroprograme tacc - timp de acces la memoria de microprograme tPR,tSR - timp de încărcare a registrelor R1,R2 tstat - timp de stabilire a stării unitătii aritmetice (în avans) tc - timp de calcul efectiv (operaţii interne în unitatea aritmetică) În timp ce unitatea aritmetică execută instructiunea (n) secventorul calculează deja adresa pentru instructiunea (n+1) folosind ca informaţie instructiunea (n) şi starea unităţii aritmetice de la instructiunea (n-1).

Page 6: ARHITECTURA MICROPROCESOARELOR

6

Figura 3 c)

Figura 3 d)

Page 7: ARHITECTURA MICROPROCESOARELOR

7

Exemple de arhitecturi de procesoare de semnal

Această secţiune prezintă cîteva exemple de familii de procesoare de semnal.

Procesoare de virgulă fixă

ADSP 2100 ( Analog Devices )

Caracteristici

-ciclul masină 13 – 33 ns

-memorie on-chip ( maxim 16 k x24 pentru program şi 16 k x 16 pentru date,

adresabilitate directă, posibilitate de extindere prin overlay )

-porturi seriale ,timer

-stive hardware

-6-12 niveluri de întrerupere

-aritmetică în virgulă fixă (C2)

-sumator pe 16 biti

-înmultitor 16 x 16 biţi cu acumulare pe 40 de biţi

-adresare directă, indirectă, circulară, bit-reverse

Page 8: ARHITECTURA MICROPROCESOARELOR

8

DSP 56001/56002 Motorola

Caracteristici

-ciclul masină 30 ns

-memorie on chip

-port serial şi port paralel (pe 8 biti)

-interfaţă paralelă cu un microcalculator (PC)

-stivă hardware

-aritmetică în virgulă fixă

-operaţii aritmetice pe 56 biti , logice pe 24 biţi

-32 niveluri de întrerupere

Page 9: ARHITECTURA MICROPROCESOARELOR

9

TMS 320C2X / 320C5X (Texas Instruments)

Caracteristici

-ciclu masină 20 ns

-memorie on chip

-porturi seriale

-stivă hardware

-aritmetică în virgula fixă

-ALU pe 32 biţi

-înmultitor 16 x 16 biti cu acumulare pe 32 biti

Page 10: ARHITECTURA MICROPROCESOARELOR

10

Comentarii despre arhitecturi

DSP 56000/56001

Secţiunea aritmetică

-Unitate aritmetică rapidă pe 24 (în)/48 (out)/56 (ext) biţi

-Execută operaţiile ALU într-un singur ciclu

Părţile componente sînt:

-4 registre de 24 biţi

-unitate MAC (înmultitor paralel) - într-un singur ciclu

- 2 acumulatoare de 48 biţi

- 2 registre de extensie de 8 biţi

- 1 shifter (1 poziţie)

- 2 circuite de shiftare/limitare (pentru saturarea aritmetică); de exemplu:

operandul sursă este 01.100 (+1.5), destinaţia are 4 biţi deci rezultă suma 1.100 (bitii

LSB) adică (-1.5) rezultat eronat! Pe 4 biti a apărut o depăşire care prin limitare dă 0.111 adica

+0.875 - eroarea este mai mică.

- acumulator separat pentru MAC

Registrele servesc pentru introducerea operanzilor în ALU sau MAC. Se pot citi /scrie

direct de pe bus-ul de date - se elimină astfel problemele anunţate anterior (înmultiri multiple

şi adunări multiple - vezi schema b) de unitate aritmetică). După înmultire se poate face

rotunjire.

Concluzii:

-Unitatea aritmetică este destinată efectuării calculelor aritmetico-logice, inmultiri şi

sume de produse cu operanzi din 2 zone de date diferite (X sau Y).

-Nu există pipe-line;

-Există un set de indicatori condiţionali.

Page 11: ARHITECTURA MICROPROCESOARELOR

11

Unitatea de adresare a datelor

-Permite adresare liniară, modulo,cu inversarea bitilor, bit-reverse.

-Poate adresa date din memoria de program.

-Generează adresa pentru 2 operanzi într-un singur ciclu

-Adresa este de 16 biţi

-Calculul adresei se face astfel: adresa = (R+N) mod M

Secvenţorul de program

Funcţiuni:

-generarea adresei de instrucţiune (prefetch)

- decodarea instrucţiunii

- bucle DO (implementate HW, fara "overhead")

- controlul programului

-controlul întreruperilor (32 întreruperi pe 4 nivele de prioritate: 'fast ' şi 'long ';

pentru intreruperile 'fast ' se executa maxim 2 intrucţiuni de la adresa fixă apoi se revine în

programul întrerupt în mod automat fără instructiunea de revenire din intrerupere -RETI)

Exista stivă HW (extensibilă SW). Instructiunile sînt de tip "pipe-line" cu 3 nivele

(fetch,decodificare,executie); acest lucru permite execuţia într-un singur ciclu a majorităţii

instrucţiunilor.

TMS 320C25

Secţiunea aritmetică

- un singur acumulator pentru operatii aritmetice/logice şi MAC;

Nu se pot încarcă simultan 2 operanzi simultan în ALU ci:

- un operand din acumulator;

- un operand - prin bus-ul de date;

- ieşirea multiplicatorului;

Page 12: ARHITECTURA MICROPROCESOARELOR

12

O adunare presupune ştergerea acumulatorului, încarcarea cu o dată din memorie şi

apoi adunarea cu altă dată din memorie (2 cicluri pentru o singură adunare).

ex.: ZALH <data mem adr>

ADDH <data mem adr>

- nu toate operaţiile ALU se desfăsoară într-un singur ciclu;

- nu toate operatiile ALU se desfăsoară cu prefixul REP (de repetare);

- nu are înmulţitor/acumulator dedicat pentru MAC;

- înmultirea nu se desfăsoară într-un singur ciclu:

- mai intii se incarcă registrul TR al MPY;

- apoi se efectueaza înmulţirea cu un operand din memoria de date sau de

program.

- înmulţirea cu acumulare se efectueaza într-un singur ciclu .

Shifter-ul efectuează deplasări cu:

- 0-16 biţi la stînga/dreapta (înaintea efectuării operaţiilor aritmetice);

- 6 biţi la dreapta (pentru protecţie overflow) sau 1-4 biţi la stînga după

efectuarea unei înmultiri ( după înmulţitor).

- 0-7 biti la stînga după acumulator (înainte de stocarea în memorie, după

efectuarea operaţiilor aritmetice).

Adresarea datelor

- foloseşte registre auxiliare pentru stocarea adreselor ( adresare indirectă);

- are un singur registru modificator (+/-1 numai);

- nu pot fi adresate 2 date (operanzi) simultan;

- nu are adresare "modulo" (deci nu are "buffere circulare");

- adresare directă: pagini de 128 cuvinte de 16 biţi (un registru de pagina memoreaza pagina

curentă de date);

- numărul registrului auxiliar care conţine adresaă este stocat în ARP (auxiliar register

pointer) citit prin ARB (auxiliar register buffer);

- registrele auxiliare pot fi utilizate pentru stocarea unor date;

Page 13: ARHITECTURA MICROPROCESOARELOR

13

- există modul bit-reverse.

Secventorul de program

- instructiuni cu "pipe-line" (instructiunile sînt "citite" cu adresa generată de "prefetch

counter" şi sînt depuse în "coada de instrucţiuni"). În funcţie de execuţia intrucţiunii curente

mai multe instrucţiuni pot fi depuse în coada de instrucţiuni (controlul programului este dificil

de înteles; apar 3 cicluri suplimentare în cazul salturilor, necesare pentru stergerea cozii de

instructiuni).

- stiva pe 8 niveluri;

- nu se salvează complet starea microprocesorului la aparitia unei întreruperi;

- nu se pot implementa hardware bucle de tip DO UNTIL; aceste bucle se pot implementa

numai prin software (apare un ciclu suplimentar pentru tratarea condiţiei de terminare a

buclei).

ADSP 2101

Secţiunea aritmetică:

- incărcare a 2 operanzi ( pe busul de date al memoriei de program PMD şi pe busul de

date al memoriei de dateDMD);

- instrucţiuni într-un singur ciclu;

- instructiuni condiţionale;

- structură foarte flexibilă;

- MAC cu rotunjire aritmetică;

- deplasări cu 0-32 poziţii stînga / dreapta într-un singur ciclu;

Secţiunea de adresare a datelor

- adresare a 2 operanzi simultan (din memoria de date DM şi din memoria de program

PM) intr-un singur ciclu;

- adresare - directă;

- indirectă;

Page 14: ARHITECTURA MICROPROCESOARELOR

14

- adresare liniară, modulo, bit-reverse;

- adrese pe 14 biţi - 16k cuvinte de memorie.

Secvenţorul de program

Selectează adresa pentru PM

- din registrul program counter PC

- adresa liniară;

- adresa de salt (jump, call);

- stiva PC (reintoarcere din subrutine şi intreruperi);

- vector de intrerupere.

- controler de întreruperi (exista o stivă hardware pentru salvarea completă a stării

procesorului);

- bucle DO UNTIL implementate hardware (sînt permise pînă la 4 bucle înlanţuite,

există o stivă hardware pentru contorul de iteraţii şi stivă hardware pentru salvarea condiţiei

de terminare a buclei - 4 niveluri fiecare);

- nu apar cicluri suplimentare (nici la bucle nici la salturile condiţionate);

- este usor de calculat timpul de execuţie al programului.

Comparaţia între cele trei arhitecturi este centralizată în tabelele următoare:

Posibilităţi aritmetice ADSP 2101 TMS 320C50 DSP 56000/1 Toate operaţiile ALU într-un singur ciclu DA NU DA Multiplicarea într-un singur ciclu DA NU DA MAC într-un singur DA (în mod ciclu DA repetitiv) DA Shiftare într-un 0-32 biti 0-16 biti 0-56 sau 0-24b singur ciclu stinga/dreapta stînga/dreapta stînga/dreapta Protecţie la overflow a acumulatorului 8 biti 1 bit 8 biti Multiplicări mod cu şi nu are mod nu are mod fara semn şi mixt DA mixt mixt

Page 15: ARHITECTURA MICROPROCESOARELOR

15

Normalizări într-un singur ciclu DA NU DA Posibilităţi de adresare a datelor ADSP2101 TMS320C50 DSP56000/1 Încarcare a 2 operanzi într-un singur ciclu din memoria on-chip DA NU DA Modificarea 2 adrese cu 2 valori diferite la fiecare ciclu DA NU DA Mod "bit-reverse" DA DA DA Buffere circulare cu pas numai cu variabil (+/-) DA pas 1 DA Posibilitati de control al programului ADSP 2101 TMS 320C50 DSP56000/1 Adîncimea stivei PC 16 8 32x16 (globala PC,bucle, etc.) Bucle înlantuite 4 NU DA în limita stivei globale Instructiuni aritmetice DA NU NU(numai condiţionale de transfer şi salt) Salturi şi bucle fără cicluri suplimentare DA NU NU (cu excepţia buclelor hardware) Salvare automată a stării maşinii la DA NU DA întrerupere Vitezele de lucru ale (*) (*) celor 3 procesoare DSP DSP 56000 TMS 320C25 ADSP 2101 Inmultire matrici 3x3 1659ns 1800ns 1600ns FFT în 1024 puncte 3,231ms 9,08ms 4,23ms Filtru IIR cu 8 poli 2800ns 3520ns 3280ns

Page 16: ARHITECTURA MICROPROCESOARELOR

16

DTMF - - 12 canale LPC ord 10 - - 0,36ms ADPCM full-duplex - - 0,068ms

Procesoare de semnal de virgulă mobilă

Formatul datelor utilizate de un procesor de semnal determină capacitatea de a prelucra

semnale cu o anumită precizie, gamă dinamică şi raport semnal zgomot. Totuşi trebuie luate în

considerare şi aspectele referitoare la modul de manevrare a datelor şi la costul structurii de

prelucrare.

Precizia de prelucrare este corelată cu precizia convertorului A/D şi cu cerinţele

impuse de algoritmul DSP .

Algoritmii de compresie şi decompresie utilizaţi în dispozitivele de eşantionare

operează pentru semnale de bandă cunoscută şi au avantajul că permit utilizarea unor structuri

de prelucrare de precizie mai mică , deci mai ieftine şi mai usor de implementat. Există totuşi

situaţii în care o gamă dinamică mare este necesară (de exemplu filtrarea adaptivă şi

prelucrarea imaginilor). De asemenea o gamă dinamică mare permite obţinerea unui raport

semnal / zgomot mare (de exemplu pentru recunoaşterea vorbirii).

Familia de procesoare de semnal ADSP 21010 / 21020

Arhitectura procesorului de semnal ADSP 21020 este prezentată în figura 4

Se observă faptul că arhitectura procesorului ADSP 21020 nu diferă , ca principiu de

organizare, de arhitectura procesorului ADSP 2100 ( de virgulă fixă ).

Există cele 3 unităti de prelucrare ( MAC, ALU, SHIFTER) conectate în parelel.

Busul de date este de 32 biţi ( extins la 40 biţi ), iar busul de instructiuni este de 48 biţi.

Unitatea MAC poate opera atît în virgulă mobilă cît şi în virgulă fixă, în ceea ce

priveşte înmulţitorul. Registrul de acumulare al unităţii MAC este de virgulă fixa. Utilizînd ca

registru acumulator orice registru de virgulă mobilă se pot efectua operaţii de tip suma de

produse ( cu ajutorul unor instrucţiuni multifuncţie ) .

Se menţin ca principiu toate caracteristicile familiei de procesoare ADSP 2100

(implementate diferit ) şi se adaugă noi facilităţi pentru realizarea unor structuri hardware şi a

unor programe mai simple şi mai flexibile.

Page 17: ARHITECTURA MICROPROCESOARELOR

17

Tendinţa de viitor este realizarea unor procesoare de semnal cu un grad de integrare

foarte ridicat - ca de exemplu procesoarele de semnal SHARC ( Super Harvard Architecture

Computer).

Procesorul SHARC - ADSP 21060

Acest procesor preia arhitectura procesorului ADSP 21020 şi înglobează suplimentar

următoarele:

- memorie internă SRAM ( configurabilă ca memorie de program sau ca memorie de

date)

- un procesor de intrare / ieşire

- interfată cu un calculator gazdă

Procesorul de intrare / ieşire are structura din figura 5.

MultiplicatorFX/FP cu

acumulator FX

Registre

FX / FP

Shifter ALUFX/FP

Interschimbare

DAG1 DAG2 Cache

JTAG

FLAG

Secventorde programPMA

DMA

PMD

DMD

(24)(32)

(48)

(40)

Timer

Memorie

Figura 4. Arhitectura procesorului de semnal ADSP21020

Page 18: ARHITECTURA MICROPROCESOARELOR

18

Registre

ControlerDMA

Porturi

seriale

Porturilink

Figura 5. Procesorul I/O din structura circuitului SHARC - ADSP21060

Interfaţa cu calculatorul gazda permite conectarea procesorului ADSP 21060 cu

procesoare de uz general standard pe 16 sau 32 biti cu hardware adiţional minim.

Controlerul DMA poate fi utilizat pentru transferuri directe cu memoria (internă şi

externă sau memoria calculatorului gazdă).

Procesorul ADSP 21060 este optimizat pentru interconectarea în sisteme

multiprocesor cu procesoare de semnal.

De asemenea porturile "link" permit comunicaţia între procesoare în sisteme

multiprocesor.

Considerente pentru proiectarea procesorului de semnal

Prelucrarea digitală a semnalelor presupune utilizarea unor procesoare de semnal cu

performante ridicate.

Performantele nu pot fi masurate numai prin viteza de multiplicare/acumulare (MIPS).

Deoarece o instrucţiune pentru un procesor de semnal (DSP) nu este echivalentă cu o

instructiune pentru un alt procesor de semnal, rata MIPS poate să nu fie concludentă şi poate

conduce la erori de apreciere.

Arhitectura unui DSP şi performanţele pentru fiecare bloc funcţional din aceasta

arhitectură (cum ar fi unitatea aritmetică, unitatea de adresare şi secvenţorul de program) pot

fi mult mai importante în stabilirea caracteristicilor unui procesor de semnal. Ceea ce distinge

un procesor de semnal de un procesor de uz general este reprezentat de următoarele:

Page 19: ARHITECTURA MICROPROCESOARELOR

19

1. Aritmetica rapidă şi flexibilă

Un procesor de semnal trebuie sa permita calcule într-un singur ciclu (multiplicări,

multiplicări şi acumulări, deplasări, operaţii aritmetice şi logice). Unitatea aritmetică trebuie

sa permita implementarea unui algoritm de prelucrare a semnalelor fara ca acesta sa fie

reformulat (modificat) pentru a putea fi implementat.

2. Dinamica extinsa pentru multiplicari/acumulari

Dinamica extinsă este fundamentală pentru algoritmii de prelucrare a semnalelor.

Aceasta asigură protecţia la depăşirile aritmetice care apar în decursul sumelor parţiale (de

exemplu efectuarea calculelor pe 40 biţi cu 8 biti de extensie a bitului de semn).

3. Încărcarea a 2 operanzi într-un singur ciclu (din memoria interna sau externa)

În calculele cu sumă de produse (convoluţii numerice) trebuie încărcati 2 operanzi

pentru a efectua calculele. Capacitatea de adresare flexibilă pentru 2 date din memorie este

importantă.

4. Buffere circulare hardware (în memoria internă sau externă)

O clasă largă de algoritmi de prelucrare a semnalelor necesită buffere de memorie

circulare; dacă există posibilitatea hardware de a utiliza astfel de buffere se reduce timpul de

execuţie (de prelucrare) şi se simplifică implementarea algoritmului.

5.Bucle hardware şi salturi condiţionate fără cicluri suplimentare ("zero overhead

")

Algoritmii de prelucrare sînt în mod natural repetitivi şi pot fi exprimaţi simplu prin

bucle de program. Secventorul de program trebuie să permită implementarea buclelor şi a

salturilor conditionate fără ciclii maşină suplimentari datoraţi testării condiţiei de terminare a

buclei sau testării condiţiei de salt; aceasta conduce la performanţe mai bune din punct de

vedere al timpului de prelucrare.

Proiectarea unui procesor de semnal trebuie sa ia în considerare tipul algoritmilor DSP

ce urmează a fi implementaţi de procesor.

Procesorul de semnal nu trebuie sa aibă un bloc de control centralizat deoarece

majoritatea grafurilor DFG pot fi gîndite cu prelucrări paralele ( astfel încit fiecare unitate de

Page 20: ARHITECTURA MICROPROCESOARELOR

20

prelucrare sa fie utilizată în paralel cu alte unităţi - acest lucru este posibil dacă graful

aplicaţiei este realizat cu un anumit grad de paralelism ). Ideea principală este aceea ca fiecare

unitate de prelucrare să posede un bloc de control propriu (pentru operaţia specifică ); blocul

de control centralizat se distribuie către fiecare unitate de prelucrare.

În funcţie de complexitatea aplicaţiei se poate opta pentru una din formele de procesor

de semnal prezentate anterior ( pipe-line , vectoriale , matriciale , paralele). Apar insă

probleme în ceea ce priveşte interconectarea elementelor funcţionale în cadrul acestor

procesoare ( sincronizare, comunicaţie ).

Pentru aplicaţiile specifice în telecomunicaţii ( cu excepţia aplicaţiilor multimedia )

sistemele "clasice" cu un procesor integrat specializat performant conduc la rezultate bune.

Exista doua categorii de arhitecturi de procesoare de semanl : organizate în timp (time-

line) şi organizate după date ( data-driven).

Pentru arhitecturile organizate în timp execuţia fiecărei operaţii se realizează

într-un punct specificat al secvenţei de prelucrare. Deoarece prelucrarea este modificată în

timp în sensul ştergerii unor operaţii sau inserării unor operaţii noi în secvenţa de prelucrare

rezultă algoritmi de planificare şi distribuire a operaţiilor destul de complexi , ceea ce necesită

un timp de execuţie mare; aplicaţia poate să nu mai fie de timp real.

Arhitecturile organizate după date preiau datele de intrare într-o coada de intrare ;

apariţia datelor în cozile de intrare determină planificarea şi distribuirea operaţiilor ;

rezultatele sint plasate într-o coadă de iesire. Daca dimensionarea cozilor este corectă

caracterul de aplicaţie de timp real se menţine chiar şi pentru secvenţe de operaţii complexe.

În procesorul de semnal poate apare o intirziere între momentul în care unitatea de

prelucrare este pregatită de operare şi momentul cînd începe execuţia operaţiei. Această

întîrziere apare în mod aleator datorită faptului că blocul de control este dinamic.

Page 21: ARHITECTURA MICROPROCESOARELOR

ELEMENTE DE GESTIUNE A MEMORIEI

De regulă la microprocesoarele de 8 biţi, adresa generată şi depusă pe magistrala externă de adreseeste folosita direct în adresarea unei locaţii de memorie sau a unui dispozitiv de I/O. Începând cumicroprocesoarele de 16 biţi apar noţiunile de adresă logică şi adresă fizică. Adresele generate de unprogram sunt considerate adrese logice şi totalitatea acestora formează spaţiul adreselor logice. Totalitateaadreselor ce corespund memoriei (şi/sau dispozitivelor de I/O) formează spaţiul adreselor fizice. Cele 2spaţii, al adreselor logice şi fizice, pot să fie egale sau inegale. Ca urmare, trebuie să existe un mecanism deconversie a adreselor, de translatare din adrese logice în adrese fizice. La microprocesoarele Intel din seriax86 mecanismul de translatare este inclus pe acelaşi substrat de siliciu cu microprocesorul. La unele dinmicroprocesore (ca de exemplu Motorola MC68000) mecanismul de translatare din adresele logice în celefizice este preluat de un circuit extern microprocesorului denumit "unitate de administrare a memoriei"(MMU - Memory Management Unit).

În general, tehnicile folosite pentru lucrul cu sistemul de memorie într-un calculator, fie că estevorba de selecţie, adresare, alocare de spaţiu în memoria principală, folosesc un ansamblu de resursehardware şi software, operaţiile executate de acestea fiind incluse în noţiunea generală de management almemoriei. Administrarea întregii memorii (de pe toate nivelurile ierarhice) a calculatorului, incluzând şimodalităţile de partiţionare logică şi adresare în spaţiul adreselor logice (L) şi în spaţiul de memorare (M,adrese fizice) se face cu ajutorul unei unităţi hardware pe care o notăm în continuare MMU (Figura 1).Când un program trebuie rulat (lansat în execuţie), el este mai întâi adus din memoria auxiliară înmemoriaprincipală (în întregime sau parţial).Pentru MMU se impun următoarele cerinţe de bază:1. să realizeze translatarea adreselor şi să susţină alocarea dinamică a memoriei

Înainte ca un program să fie executat, este necesar ca acestuia să i se aloce un spaţiu în memoriaprincipală (spaţiu de adrese în memoria fizic existentă în calculator). Dacă această atribuire de spaţiu(adrese) se face doar la încărcarea programului în memoria principală, procedeul este numit alocarestatică şi prezintă dezavantajul că adresele de încărcare sunt fixe. Alocarea dinamică a memoriei secaracterizează prin atribuirea spaţiului necesar programelor, sau proceselor, în timpul execuţiei acestora.Adresa la care se încarcă programul în memoria principală nu mai este fixă, ea putând fi modificată, lamomente de timp diferite.

Figura 1. Organizarea ierarhica a memorieiSe folosesc trei procedee de translatare a adreselor logice în adrese fizice toate bazându-se pe o divizare aspaţiului adreselor logice în blocuri de adrese logice continue, după cum urmează:

• segmente de lungime arbitrară;• pagini (în spaţiul adreselor logice) şi cadre-pagină / blocuri (în cadrul adreselor fizice),

de lungime fixă;• combinaţii de adresare segmentat-paginată.

adrese fizice

MP MA (auxiliara)MMU Cache

UCP

adrese logice

control

date

(accesdirect)

(accesindirect)

(accesdirect)

Page 22: ARHITECTURA MICROPROCESOARELOR

Mecanismul de translatare, indiferent că se folosesc pagini sau segmente, se produce în faza de execuţie aprogramului şi include printre altele, un tabel de translatare prin care se face corespondenţa între adreselogice şi adrese fizice (principiul este prezentat în fig. 2).

Figura 2. Principiul tehnicilor de translatare a adreselor

De la microprocesor se recepţionează adresa logică L. Dacă elementul adresat nu se găseşte în memoriaprincipală, atunci registrul (de adresă) L va conţine adresa din memoria externă unde se găseşteelementul respectiv şi el va fi adus de rutine ale sistemului de operare în memoria principală, la o adresăfizică a cărei valoare M se înscrie în registrul de adresă L din tabela de translatare. Daca elementuladresat este în memoria principală rezultă că adresa fizică este M. Acest mecanism este totuşi ineficient,căci tabela de translatare are dimensiunile egale cu ale memoriei principale. Pentru micşorareadimensiunii tabelelor se foloseşte divizarea spaţiului logic în segmente / pagini, iar referirile se fac doarla nivelul de adresă logică de bloc. Trebuie menţionat că dacă sunt lansate două procese în execuţie,fiecare cu spaţiul său de adrese logice, există două tabele de translatare spre memoria principală.Sistemul de operare va reactualiza conţinutul tabelei de translatare ori de câte ori va avea loc o relocare(schimbare de poziţie în spaţiul adreselor fizice) a programelor în memorie.

2. să susţină mecanismele de implementare ale memoriei virtualeMecanismul memoriei virtuale permite programelor să fie executate chiar dacă numai o parte dininstrucţiunile lor se încarcă în memoria principală, iar restul se găsesc în memoria auxiliară de tipdisc magnetic. Adresele logice sunt numite adrese virtuale, în cazul implementării memorieivirtuale, pentru că nu există fizic în memoria principală ci ele se găsesc în memoria auxiliară.

3. să poată furniza protecţie şi securitate pentru memorieCerinţa se referă la protecţia informaţiei, la alocarea de drepturi de acces la zone din memoriaprincipală şi la zone din spaţiul adreselor logice, (protecţie la citire, scriere, ştergere, copiere,execuţie). Se protejează memoria disponibilă alocată programelor de sistem şi programelorutilizator, asigurându-se securitatea informaţiei (acces limitat la informaţii), prin controlul accesuluila resursele sistemului.

Aşa cum s-a pomenit şi mai sus există două strategii folosite pentru implementarea MMU:a) MMU se află pe chip-ul procesorului; se aplică la microprocesoarele cu spaţiul segmentat al

adreselor logice. De exemplu: Intel x86, Pentium, Zilog Z800, Z8000)b) MMU este construită separat de UCP, variantă aleasă la microprocesoarele cu spaţiu liniar

(organizare liniară a) al adreselor logice. De exemplu: MC 680x0, Z8001).În cazul în care organizarea logică a memoriei este liniară, adresele încep în mod obişnuit de la 0 şiavansează liniar. Memoria poate fi apoi structurată prin software, la nivelul translaţiei de adrese. În cazul încare organizarea memoriei este segmentată, programele nu sunt scrise ca secvenţe liniare de instrucţiuni şidate, ci ca segmente separate de cod, date, sau stivă. Spaţiul adreselor logice este spart în mai multe spaţii cuadresare liniară, fiecare cu lungime diferită, definită de compilator sau de programator. O adresă logicăefectivă este calculată ca o combinaţie între numărul segmentului (care indică adresa de bază a unui bloc dememorie) şi un deplasament (offset) în cadrul segmentului.

Tabelă detranslatare

Adresa logicăde la UCP

Adresafizică

Cuvântadresat

Memoriaprincipală

MML

Page 23: ARHITECTURA MICROPROCESOARELOR

În general schemele de adresare liniară sunt mai potrivite pentru manipularea structurilor mari dedate, în timp ce segmentarea facilitează programarea, permiţând programatorului să structureze programeleîn module segment. În plus adresarea segmentată simplifică protecţia şi relocarea obiectelor în memorie.Segmentarea facilitează gestiunea memoriei în sistemele de calcul multiuser, multitasking.

TRANSLATAREA ADRESELORIndiferent de schema de organizare a memoriei (liniară sau segmentată) procesorul trebuie să aibă

un mecanism de translatare a adreselor, util în implementarea memoriei virtuale. Acest mecanism este deasemenea util pentru protejarea informaţiei din memorie. Translatarea de adrese este un proces atribuire şiorganizare (“mapare”) a adreselor logice în adrese fizice de memorie. Mecanismul de translatare împartememoria principală în blocuri (cadre pagină). Aşa cum am amintit mai sus se folosesc 2 scheme detranslatare:

(1) translatare prin paginare(2) translatare prin segmentare

În sistemele paginate, memoria principală este împărţită în blocuri de lungime fixă în timp ce însistemele segmentate blocurile sunt de lungime variabilă.Paginile au în general lungimi de ordinul 256 - 4096 cuvinte, în timp ce segmentele cu lungimea definită decompilator sau programator au 64 K-cuvinte, sau mai mult. În sistemele cu multiprogramare şi time-sharing1, mai mulţi utilizatori folosesc aceleaşi programe cum sunt editoare, compilatoare, programeutilitare, biblioteci de programe etc. Atât sistemele cu paginare cât şi cele cu segmentare permit mecanismede partajare, între procesele utilizator, a paginilor, respectiv a segmentelor. Aceste mecanisme se bazează peintrări în tabele de mapare de pagină (sau segment) în care intrările diferitelor procese indică către acelaşibloc din memoria principală. Combinaţia între segmente şi pagini presupune că un segment conţine una saumai multe pagini virtuale. Mecanismul de segmentare administrează spaţiul virtual, împărţind programele însegmente, în timp ce paginarea este destinată administrării memoriei fizice care este împărţită în cadrepagina (blocuri). Vom descrie în continuare mecanismele folosite pentru maparea segmentelor şi paginilor.

Maparea adreselor folosind paginiÎn cazul paginării, implementarea tabelului pentru maparea adreselor este simplă pentru că

informaţia din spaţiile de adresare şi memorare este divizată în blocuri de dimensiune fixă. Memoria fizicăeste împărţită logic în blocuri de aceeaşi dimensiune (64-4096 cuvinte fiecare). Termenul pagină se refera lablocuri, de aceeaşi dimensiune, de adrese din spaţiul de adresare. De exemplu, presupunem un calculatorcare are 20 de biţi de adresă şi foloseşte doar 32KB în memoria principală (memorie implementată fizic princircuite de memorie); dacă o pagină, respectiv un bloc, au dimensiuni egale cu 1 kB, atunci spaţiul de adresee divizat în 1024 pagini, iar spaţiul de memorie e divizat în 32 de blocuri.Se consideră că şi programele sunt împărţite în pagini. Porţiuni din programe sunt mutate din memoriaauxiliară în memoria principală în înregistrări egale cu mărimea paginii. În loc de bloc de memorie e folosituneori termenul de cadru pagină (“page frame”).

În cazul mapării prin paginare adresa virtuală este reprezentată printr-un singur cuvânt de adresăîmpărţit într-un câmp corespunzător numărului paginii (adresa paginii) şi un câmp pentru deplasament. Lamaparea prin segmentarea un singur cuvânt de adresă nu mai este suficient; dimensiunea variabilă asegmentelor conduce la existenţa a două cuvinte de adresare, în care primul indică numărul (adresa)segmentului, iar cel de-al doilea deplasamentul în cadrul segmentului.

Într-un calculator cu 2p cuvinte pe pagină, p biţi sunt folosiţi pentru a specifica o adresă de linie iarcei mai semnificativi biţi rămaşi în adresa virtuală specifică numărul de pagină. Fie de exemplu un sistemsimplu cu o adresă virtuală cu dimensiunea de 16 biţi şi pagini cu 4096 cuvinte. Pentru că o pagină are 212

cuvinte, cei patru biţi mai semnificativi vor specifica una din cele 16 pagini, iar cei 12 biţi mai puţinsemnificativi indică adresa liniei în cadrul paginii.

1 time-sharing = partajarea timpului UCP

Page 24: ARHITECTURA MICROPROCESOARELOR

Figura 3. Paginarea memoriei

Ca urmare maparea trebuie făcută doar de la un număr de pagină la un număr de bloc din memoriaprincipală, pentru că adresa liniei e aceeaşi pentru ambele spaţii. Organizarea de principiu a tabelului demapare a memoriei într-un sistem paginat poate arăta ca în figura 3.

În tabelul paginii de memorie, adresa conduce la numărul paginii, iar conţinutul indică numărulblocului unde pagina este stocată în memoria principală. Se observă că paginile virtuale 2, 3, 5 şi 8 se află înmemoria principală, în blocurile 3, 0, 1 şi respectiv 2. Un bit de prezenţă adăugat fiecărei locaţii a tabeluluiindică dacă pagina respectivă a fost mapată în memoria principală (i s-a alocat spaţiu şi a fost transferată dinmemoria auxiliară în memoria principală). Valoarea 0 a bitului de prezenţă indică că pagina nu este înmemoria principală. În exemplul dat, cei 4 biţi ai adresei virtuale specifică atât numărul paginii cât şi adresaîn tabelul paginilor de memorie. Conţinutul tabelului este citit în registrul ce indică blocul de memorie. Dacăbitul de prezenţă este 1, numărul de bloc e transferat în registrul ce păstrează adresa fizică din memoriaprincipală. Dacă bitul de prezenţă este 0 rezultă că adresa virtuală se referă la un articol ce nu se găseşte înmemoria principală. În acest caz, se generează o cerere (în forma unei întreruperi software, de tip “eroare depagină2”) către sistemul de operare (SO) pentru a aduce pagina cerută din memoria auxiliară în memoriaprincipală, înainte de reluarea programului care a accesat adresa din pagina respectivă.

O astfel de organizare în memoria principală a tabelului de translatare este însă ineficientă, căcitabelul are multe locaţii goale. Dacă presupunem un calculator cu spaţiul de adrese de 4 GB (232), cu paginide memorie de 32 KB (215), iar spaţiul memoriei fizice este 32 MB (225) rezultă 128 K-pagini virtuale dememorie şi 1024 blocuri (1 K-blocuri). Conform principiului din figura 6.24 tabelul de translatare ar avea

2 page fault = eroare de pagină

Adresătabel

Tabelpagini

dememorie

Registru blocde memorie

Memoria principală

BLOCK 0BLOCK 1BLOCK 2BLOCK 3

1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1

0000 0

Adresa virtuală

Numărpagină Număr linie

Adresa fizică(reală) de memorieprincipală

1 0 0 0 0 0 0 0 0 0 0 0 0 1

00011011

Bitprezenţă0001 0

0010 11 10011 00 10100 00101 01 10110 00111 01000 10 11001 01010 01011 01100 01101 01110 01111 0

10 0

Page 25: ARHITECTURA MICROPROCESOARELOR

Sistemul de memorie 151

131071 (217 = 128 K) linii şi doar 1024 locaţii ar fi ocupate (cu bit de prezenţă 1), restul fiind goale,neutilizate. O soluţie a acestei probleme o constituie folosirea unei memorii asociative, ca în figura 4,(tabel asociativ de pagini de memorie) cu număr de locaţii egal cu numărul de blocuri din memoriaprincipală.

Figura 4. Translatarea adresei de pagină cu memorie adresabila prin continut

În fiecare locaţie de memorie se stochează numărul paginii virtuale şi numărul corespunzător alblocului de memorie principală alocat.

Adresa logică se compară combinaţional cu conţinutul tabelului asociativ, doar pentru poziţiilebinare ce corespund la 1 logic în registrul de mascare, deci în figura 4, doar pentru câmpul de adresă alnumărului de pagină virtuală. Dacă la apelarea unei pagini virtuale, aceasta nu este mapată în memoriaprincipală, operaţia de adresare este o ratare (miss) şi evenimentul este rezolvat printr-o rutina de servire asistemului de operare care aduce pagina respectivă din memoria auxiliară. Şi acest tabel asociativ detranslatare poate avea dimensiuni mari uneori. De aceea se folosesc tabele asociative de mare viteză la carenumărul liniilor este mai mic decât numărul de blocuri (cadre pagină) şi în care se salvează numai o partedin mapările realizate. Acest registru asociativ este numit TLB (Translation lookaside buffer) şi este descrismai jos.

Mapare prin segmentareLa acest tip de mapare spaţiul adreselor logice este împărţit în segmente, care spre deosebire de

pagini, nu au o dimensiune fixă. Segmentele sunt spaţii de adrese continue (liniare), care includ programesau porţiuni din programe cu atribute comune. Mecanismul de translatare este prezentat în schema deprincipiu din figura 5.

Spre deosebire de operaţia de paginare, la segmentare nu se mai face concatenarea (alăturarea)adresei de deplasament (din adresa logică) la adresa fizică. Aici adresa de deplasament este adunată cuadresa fizică a segmentului (adresa sa de bază) citită din tabelul de translatare al segmentelor, specific unuianumit proces.

1111 0 0

0010 110011 000101 011000 10

1000 Număr linie

Număr pagină

Adresă logică

Registru argument

Registru mască

Număr pagină Număr bloc

Page 26: ARHITECTURA MICROPROCESOARELOR

Figura 5: Segmentarea memoriei

Adresã logicã

Adresă liniarã(fizicã)

Adresa de bazã asegmentului

Adresã fizicãsegment

Nr.segment Offset

Segment

Tabel de translatare a segmentelor

Page 27: ARHITECTURA MICROPROCESOARELOR

Noţiuni privind protecţia memoriei

Inventarea multiprogramării, la care un procesor este partajat între mai multe programe aflate înexecuţie, a condus la noi cerinţe privind protecţia între programe. Mecanismele de protecţie sunt strânslegate de implementarea memoriei virtuale.

Multiprogramarea conduce la conceptul de proces. Un proces este constituit dintr-un program aflatîn execuţie plus orice stare necesară pentru continuarea rulării sale. Partajarea timpului (“time-sharing”) esteo variantă a multi-programării care partajează UCP şi memoria între diferiţi utilizatori simultani, iarmecanismul de partajare dă iluzia că toţi utilizatorii au propriile maşini. Astfel că, în oricare dintre variante,trebuie să fie posibil să se comute de la un proces la altul. Această comutare este numită comutare de processau comutare de context.

Un proces trebuie să se execute corect indiferent dacă se execută continuu de la start până laterminare, sau dacă este întrerupt în mod repetat pentru a se face comutarea către alte procese.Responsabilitatea menţinerii comportării corecte a proceselor cade atât în sarcina resurselor hardware, careasigură salvarea şi restaurarea corectă a proceselor ce rulează pe UCP cât şi în sarcina sistemului de operarecare trebuie să garanteze că un proces nu interferează cu celelalte şi că un proces nu poate modifica datelealtor procese. Aceasta înseamnă asigurarea protecţiei datelor de către sistemul de operare. În afară deprotecţie, sistemul de operare permite, în anumite condiţii, şi partajarea codului şi a datelor între diferiteprocese pentru salvare de spaţiu de memorie prin reducerea numărului de copii de informaţii identice.

Cel mai simplu mecanism de protecţie este constituit de o pereche de registre care verifică fiecareadresă, astfel încât să nu se permită accesul în afara unor limite alocate în spaţiul de adrese. Aceste registresunt numite registru - bază şi registru limită. O adresă este validă dacă se încadrează între cele două adreseconţinute în registre:

Bază ≤ Adresă ≤ LimităLa unele sisteme adresa este considerată ca un număr fără semn, care se adună întotdeauna la o adresă debază, astfel că testul de adresă limită se reduce la:

(Bază + Adresă) ≤ LimităDacă proceselor utilizator li s-ar permite să modifice registrele de adrese de bază şi limită, atunci

acest mecanism de protecţie nu ar putea funcţiona. Modificarea respectivelor registre este permisă doarsistemului de operare, pentru asigurarea protecţiei între procese.Pentru asigurarea protecţiei sistemul de operare (SO) are trei responsabilităţi principale:1. Să furnizeze cel puţin două moduri de execuţie indicând că procesul aflat în rulare este un proces

utilizator, sau un proces al sistemului de operare. La diferite SO ultimul tip de proces este numit îndiferite feluri: proces kernel (nucleu), proces supervizor, sau proces executiv.

2. Să prevadă o porţiune a stării CPU pe care procesul utilizator o poate doar citi, dar nu o poate scrie.Aceasta include registrele bază / limită, indicatori (biţi) pentru moduri utilizator / supervizor şiindicatori pentru validare / invalidare evenimente de tip excepţie.

Page 28: ARHITECTURA MICROPROCESOARELOR

Capitolul 6 158

3. Să prevadă un mecanism prin care UCP poate trece din mod utilizator (user) în mod supervizor şiviceversa. Primul sens de trecere este specific apelurilor sistem (“system calls” – apeluri de serviciioferite de SO), implementate ca instrucţiuni speciale care transferă temporar controlul la o locaţieprecisă din spaţiul de cod al supervizorului. Registrul contor de program corespunzător locului undese face un apel sistem este salvat, iar UCP trece în mod supervizor. Revenirea la modul utilizator estesimilară cu cea produsă la o revenire din procedură.

Adresele de bază şi limită constituie minimul unui sistem de protecţie. Mecanismul memoriei virtualeoferă alternative mai complexe şi mai sigure decât modelul simplu prin bază şi limită. Aşa cum s-a văzut,adresele virtuale sunt translatate în adrese fizice pe baza unor tabele de translatare. Acest mod de mapare,prin tabele, oferă posibilitatea introducerii de informaţii pentru controlul erorilor de program (intenţionatesau nu) care încearcă să treacă peste mecanismele de protecţie. Cea mai simplă cale este introducerea unorindicatori de permisie pentru fiecare pagină sau segment. De exemplu pot exista indicatori care să permitădoar citire, doar execuţie, sau care să interzică accesul unui proces utilizator la anumite pagini / segmente.Fiecare proces poate face adresare doar către paginile proprii de memorie, procesul utilizator neavânddreptul să modifice tabelele sale de pagină / segment.

Protecţia poate fi extinsă chiar pe mai mult decât două niveluri (nu doar utilizator şi supervizor),privite ca şi inele concentrice de protecţie, în centru găsindu-se nivelul de protecţie cel mai înalt. În aceastăierarhie de niveluri de protecţie un program poate accesa doar date de pe nivelul său de protecţie şi de penivelurile inferioare în ierarhie. Poate face însă operaţii de apelare (call) a serviciilor sistemului de operare,servicii oferite de rutine ce se află pe niveluri superioare de protecţie. Adesea se face comparaţia, înoarecare măsură nefericită, cu clasificări de tip militar ale sistemelor: top – secret, secret, confidenţial şineclasificat. Programele utilizator (“civilii” în exemplul militar) au doar dreptul de acces la nivelul deprotecţie cel mai de jos: “ne-clasificat. La sistemele de protecţie de tip inele concentrice, deosebirea faţă deexemplul anterior, este că se pot face apelări la rutine situate pe niveluri superioare de protecţie, dacă există“chei” de acces către acele niveluri. Poate exista dreptul de apelare a unor servicii ale sistemului de operare,prin mecanismul de comutare a proceselor.

Aşa cum am pomenit şi mai sus, informaţia de protecţie este setată în registre speciale ataşate fiecăreiintrări în tabelele de translatare, registre setate doar de rutine de control al sistemului de operare. Drepturilede acces pot fi de tipul:a. Atribuirea de privilegii complete de citire şi scriere. Aceste drepturi se atribuie programului atunci când

execută propriile instrucţiuni.b. Read-only (protecţie la scriere). Protecţia la scriere este utilă la operaţiile de partajare a unor rutine de

sistem (utilitare, biblioteci, etc.).c. Execute only (program protection). Protejează programul la copiere. Restricţionează referirea la

segment doar în timpul fazei de fetch a instrucţiunii şi nu şi în timpul fazei de execuţie. Asta permiteutilizatorului să execute instrucţiunile segmentului de program, dar nu permite citirea instrucţiunilor cadate cu scopul de a copia conţinutul lor.

Sistemul de protecţie a memoriei, în sensul celor spuse mai sus, se construieşte pentru:(a) memorie (detectează orice eroare de adresare înainte ca aceasta să creeze erori accidentale sau

voite);(b) programe (previne ca programele utilizator (de aplicaţii) să facă modificări ilegale în rutinele SO);(c) utilizatori (programele utilizatorilor între ele);(d) securitate informaţie (acces limitat la informaţiile unde utilizatorul nu are drept de acces).

Page 29: ARHITECTURA MICROPROCESOARELOR

Selectia porturilor de intrare iesire Porturile IO sunt selectate printr-o shema de selectie asemanatoare selectiei memoriei. Spre deosebire de selectia memoriei, decodificarea porturilor poate fi incompleta (datorita faptului ca numarul de porturi din sistem este suficient de mare si nu se va dori extinderea acestora – de exemplu cu 8 biti de adrese se selecteaza 256 de portur ceea ce reprezint aun numar relativ suficient de porturi IO). Selectia porturilor poate fi facuta cu maparea porturilor in spatiul de adrese al memoriei sau cu adresare intr-un spatiu diferit de adrese (denumite adrese IO). Avantajele maparii in memorie a porturilor constau in posibilitatea utilizarii instructiunilor de adresare a memoriei ( cu moduri mai sofisticate de adresare, ceea ce ofera o flexibilitate ridicata in utilizarea porturilor). Dezavantajul maparii in memorie consta in ocuparea ineficienta a unui bloc de memorie pentru selectia unui singur port. Acest dezavantaj poate fi ameliorat prin utilizarea unor circuite de decodificare ce selecteaza o zona “ingusta” de memorie. Acet lucru este posibil insa daca chipul de memorie are o capacitate mica. Exemple de porturi simple

Cu ajutorul unor circuite simple (buffer, registre) se pot implementa porturi de intrare – iesire simple. Aceste porturi nu implementeaza protocoale de comunicatie, dar pot fi utilizate in cazul transferurilor de date de viteza mica.

In figura 1 se ilustreaza modalitatea de realizare a porturilor IO simple.

Figura 1. Porturi de intrare/iesire simplificate

a) Port de intrare fara memorie

SEL

DATEIN INDATE

SEL

SEL

DATEREG

REG

OUT

LD

b) Port de intrare cu memorie

c) Port de iesire

Page 30: ARHITECTURA MICROPROCESOARELOR

Selectia porturilor poate fi facuta cu utilizarea decodificatoarelor si/sau a portilor logice. Adresarea liniara a porturilor Adresarea liniara a porturilor IO este o metoda simpla de selectie care foloseste cite un singur bit de adresa pentru selectia unui port. Adresarea liniara a porturilor de intrare este prezentata in figura 2.

Figura 2. Selectia liniara a porturilor de intrare Fiecare port de intrare, PI_i, este selectat de bitul de adresa Ai=0. Semnalul IORD/ indica un semnal general de citire a porturilor de intrare. Pentru selectia liniara a porturilor de intrare nu este permis ca doua sau mai multe adrese sa fie in starea de zero logic; in acest caz va apare un conflict electric pe magistrala de date. Selectia liniara a porturilor de iesire este ilustrata in figura 3. Fiecare port de iesire, PO_i, este selectat de bitul de adresa Ai=0. Semnalul IOWR/ indica un semnal general de scriere a porturilor de iesire. Pentru selectia liniara a porturilor de iesire doua sau mai multe adrese pot fi in starea de zero logic; in acest caz se pot scrie (cu aceeasi valoare) mai multe porturi de iesire simultan.

PI_0

PI_1

PI_2

PI_n

IORD/

A0 A1 A2 An

DATE

Page 31: ARHITECTURA MICROPROCESOARELOR

Figura 3. Selectia liniara a porturilor de iesire

Fiecare familie de microprocesoare are porturi asociate. Se vor studia porturile

specifice familiei Intel 80x86 ( port paralel 8255, port serial 8251, timer 8253, controler de intreruperi 8259 si controler DMA 8237). Exemplu de schema de porturi de I/O

Pentru a studia porturile de intrari/iesire, se prezinta o interfata I/O pentru un sistem microprocesor de tipul IBM-PC (compatibil 8086).

Standardul PC prevede ca spatiul de adrese pentru porturi sa fie intre 0H si 3FFH. Din aceasta cauza in decodificare au fost folosite numai adresele A0 ÷ Α9 (3FFH este reprezentabil pe 10 biti). Figura 4 prezinta schema de decodificare pentru generarea semnalelor de selectie de chip pentru un numar de 6 porturi . Jumperii JP1, JP2, JP3, JP4, JP5, JP6 permit modificarea adresei de baza.

Fig.4. Schema de decodificare a porturilor de intrare-iesire

PO_0

PO_1

PO_2

PO_n

IOWR/

A0 A1 A2 An

DATE

Page 32: ARHITECTURA MICROPROCESOARELOR

In figura 4 a fost aleasa ca adresa de baza 2A0H (JP2, JP4, JP6 - inchise).

Tabelul de decodificare este: A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 IOR /

IOW AEN CS Adresa Port

1 0 1 0 1 0 0 0 0 0 0 0 CS0 2A0 PORT_0 1 0 1 0 1 0 0 0 0 1 0 0 CS1 2A1 PORT_1 1 0 1 0 1 0 0 0 1 0 0 0 CS2 2A2 PORT_2 1 0 1 0 1 0 0 0 1 1 0 0 CS3 2A3 PORT_3 1 0 1 0 1 0 0 1 0 0 0 0 CS4 2A4 PORT_4 1 0 1 0 1 0 0 1 0 1 0 0 CS5 2A5 PORT_5

Semnalul IODECODE/ din figura.4 indica un acces de scriere/citire de la orice

port din intervalul 2A0 H ÷ 2Α7Η. Practic nu exista nici un port care sa fie selectat pentru adresele 2A6H si 2A7H.

In decodificarea propriu-zisa sunt folosite numai adresele A0, A1, A2. Celelalte adrese sunt folosite pentru sintetizarea semnalului IODECODE, iar A3 este folosit ca validare pentru decodificatorul U6 de tip 3 la 8. Iesirile sale sunt active in starea “low” (0 logic).

Semnalele IOR/ si IOW/ sunt formate din semnalele M/IO si RD/ respectiv M/IO si WR astfel: IOR = M/IO + RD

IOW = M/IO + WR

Semnalul AEN/ este format din liniile de adresa superioare (A15 pina la A10) astfel: AEN = A15+ A14+ A13+ A12+ A11 +A10

Page 33: ARHITECTURA MICROPROCESOARELOR

1

Interfete de intrare-iesire. Porturi I/O

Structura tipica a oricarui microcalculator contine urmatoarele sectiuni de baza:

Unitatea centrala de prelucrare (UCP), compusa din unitatea de comanda (UC) si unitatea artitmetica (Arithmetic and Logic Unit-ALU), memoria si sectiunea de intrare iesire (ca in figura 1).

Figura 1. Schema bloc a unui microcalculator

Sectiunea de intrare asigura accesul informatiilor din lumea exterioara spre

calculator (tastatura, cititor de banda, disc, echipamente de masura, semnalizari dintr-un proces etc). In memorie se gasesc atit programul (instructiunile, operatiile ce se executa de catre sistem), cit si datele (valori numerice reprezentind constante, rezultate etc). In unitatea aritmetica si logica (ALU) se efectueaza diversele operatiuni matematice cu datele din memorie, conform programului. Prin sectiunea de iesire se transmit spre exterior rezultate, comezi, marimi catre echipamente de executie, etc. Toata functionarea sistemului este coordonata de catre unitatea de control, care supervizeaza si sincronizeaza toate operatiile, transferul de informatie, decodifica instructiunile programului si determina executia acestora.

Memoria si elementele de intrare/iesire vor fi realizate cu circuite speciale, in exteriorul microprocesorului. De multe ori, producatorii de microprocesoare vor furniza asa numite familii de circuite integrate, asociate (compatibile ca functionare), cu tipurile de microprocesoare pe care le realizeaza.

Transferul de intrare iesire repezinta schimbul de informatii dintre dispozitivele periferice (exterioare sistemului cu microprocessor) si este realizat prin intermediul unor cicuite de interfata numite porturi de intrare-iesire sau porturi I/O.

Porturile I/O sunt accesate in mod similar unor locatii de memorie. Adresele acestor porturi pot fi inglobate in spatial de adrese al memoriei sau pot fi separate.

Transferul datelor intre diversele sectiuni ale sistemului se face pe magistralele de date ale sistemului. Diferentierea diferitelor surse de informatie de la care/catre care se vehiculeaza datele in sistem se face prin existenta adreselor distincte ale acestora. Astfel fiecare cuvint de date al memoriei sistemului are o adresa unica. Microprocesorul genereaza aceasta adresa daca se efectueaza transferuri de informatie de la/la cuvintul de date respectiv pe asa numita magistrala de adrese a sistemului. Similar si porturile

UCP= UC+ALU

Memorie Interfata de intrare iesire

(I/O) Dispozitiv periferic

Magistrale de sistem (Date, Adrese, Control)

Page 34: ARHITECTURA MICROPROCESOARELOR

2

sistemului au adrese unice. Aparitia unei anumite adrese va conduce la selectia unica a portului dorit, care va fi activat si cu care va opera sistemul. Diferentierea intre memorie si porturi cit si indicarea sensului transferului datelor (de la microprocesor inspre memorie sau porturi - scriere; la microprocessor dinspre memorie sau porturi - citire) va fi facuta prin semnale specifice ale sectiunii de control. Porturile de la care se face citirea datelor se numesc porturi de intrare (INPUT). Porturile la care se face scrierea datelor se numesc porturi de iesire (OUTPUT). Transferul de date. Protocoale de comunicatie Transferurile de date pot fi clasificate dupa urmatoarele criterii:

1. dupa gradul de implicare a microprocesorului in realizarea transferului - transfer comandat prin program (transfer programat) - transfer cu acces direct la memorie ( transfer DMA - Direct Memory

Access) 2. dupa dispozitivul care solicita transferul

- transfer solicitat de CPU - transfer solicitat de dispozitivul periferic

3. dupa gradul de serializare - transfer serial - transfer paralel

Performantele sistemului in ceea ce priveste transferul de date sunt influentate de modul in care se realizaeaza sincronizarea dintre CPU si dispozitivul extern.

Transferul programat presupune ca procesorul initiaza, controleaza desfasurarea transferului si incheie transferul de date, ca in organigrama din figura 2.

Acest tip de transfer presupune existenta unei bucle de asteptare active in care UCP interogeaza dispozitivul periferic pentru a determina cind acesta are date gata de transfer. Portul I/O are este compus dintr-un port de stare ( care indica printer altele si faptul ca datele sunt pregatite de transfer) si un port de date care contine informatia dorita. Transferul programat cu bucla de asteptare active nu este foarte efficient deoarece “blocheaza” procesorul in bucla de interogare. Organigrama din figura 2 poate fi modificata prin utilizarea intreruperilor generate de dispozitivul perifeic atunci cind datele sunt pregatite de transfer. Bucla de asteptare active se transforma intr-o bucla de asteptare pasiva ce poate fi inlocuita cu alte prelucrari utile.

Citirea efectiva a datelor si stocarea acestora se vor face in rutina de servire a intreruperilor generate de dispozitivul periferic (portul I/O).

Avantajul utilizarii intreruperilor este acela ca UCP poate fi utilizata pentru prelucari utile; este necesar ca UCP sa aiba in componenta un bloc de raspuns la intreruperi ( creste complexitatea hardware).

Page 35: ARHITECTURA MICROPROCESOARELOR

3

Figura 2. Transferul programat (port de intrare) In cazul transferului de tip DMA, procesorul initiaza transferul – prin

programarea unui circuit specializat numit controler DMA (DMAC) – dupa care desfasurarea transferului si incheierea acestuia se vor face sub controlul DMAC. Transferul DMA este guvernat de principiul cererii si acceptarii magistralelor (Bus Request-Bus Grant) ilustrat in figura 3.

Port_stare = READY ?

Citeste starea portului de intrare (Port_stare)

Citeste datele (Port_data)

Stocheaza datele

Incrementeaza contor

Contor = N ? Incheie

transferul

NU DA

NU DA

Bucla de asteptare activa

Rutina de servire a intreruperii (SCI) – daca se utilizeaza intreruperi

Se inlocuieste cu o bucla de asteptare pasiva sau cu alte prelucrari in cazul utilizarii intreruperilor

Page 36: ARHITECTURA MICROPROCESOARELOR

4

Figura 3. Principiul cererii si acceptarii magistralelor Dupa programarea circuitului DMAC, acesta asteapta o cerere de transfer de la

dispozitivul periferic (REQ); cind aceasta este generata, DMAC confirma acceptarea cererii (catre dispozitivul periferic) prin semnalul ACK si genereaza o cerere de magistrala (Bus Request – BR) catre UCP; se asteapta confirmarea cedarii magistralelor de catre processor (prin semnalul Bus Grant – BG), dupa care procesorul isi trece magistralele in starea de inalta impedanta (HiZ) si devine slave in system. Controlerul DMA este master in sistem si controleaza magistralele, efectuind transferuri de date cu memoria sau dispozitivele periferice, fara interventia UCP (care poate sa efectueze numai operatii ce nu necesita magistralele sistemului). Aceasta situatie este mentinuta pina ciand semnalul de cerere de magistrala este inhibat, dupa care UCP redevine master iar DMAC slave. Figura 4 ilustreaza etapele desfasurarii transferului DMA.

Figura 4. Diagrama de operare a transferului DMA

UCP DMAC Dispozitiv periferic

REQ

ACK BR

BG

master

master slave

slave

Invalideaza BR

slave master

Transfer de date DMA

UCP (slave)

Memorie Controler DMA

(DMAC) (master)

Dispozitiv periferic

Magistrale de sistem (Date, Adrese, Control)

Bus Grant

Bus Request

HiZ

Page 37: ARHITECTURA MICROPROCESOARELOR

5

Transferul serial Pentru a putea realiza transferuri pe distante mai mari se utilizeaza interfete speciale care

transforma informatia paralela - cuvintul de date - intr-o succesiune de impulsuri, transmise pe un singur fir de legatura ca in figura 5.

Figura 5. Transferul serial

Transmisia in acest mod se face cu viteza mai mica decit transmisia simultana a tuturor

bitilor (transmisie paralela) ,dar probleme de zgomot si pretul echipamentelor sunt mai reduse.

Transmisia seriala se va face prin emiterea unor impulsuri de tensiune, cu doua nivele, corespunzatoare valorilor logice "0" sau "1" ale bitilor ce se transmit. Durata acestor pulsuri este fixa, fiind fixata de semnalul de "ceas", care va impune viteza de serializare a datelor. Este evident ca pentru o functionare corecta va fi necesar ca ambele circuite, atit cel emitator (transmitator) cit si receptorul, sa functioneze cu aceeasi frecventa a ceasului. De aceea aceste viteze de transmisie/receptie seriala sint standardizate. Ele se masoara in numarul de biti ce se transmit/receptioneaza pe secunda, unitate numita baud. Viteze standard tipice sint: 110,300,600, 1200, 2400, 4800, 9600 pina la 115000 de biti pe secunda. Exista doua moduri principale de transmisie a datelor: modul asincron (cel mai utilizat) si modul sincron.

Pentru a ameliora deformarea pulsurilor in linia seriala (datorate atenuarilor si capacitatii parazite a liniei) se pot utilizeze urmatoarele metode:

- introducerea unor circuite de conversie a pulsurilor din gama 0÷5 V in gama 0÷12V sau (-12) ÷ (+12 )V

- esantionarea multipla a bitului ( pina la de 64 de ori durata de bit) si determinarea prin logica majoritara a valorii acestuia

In figura 6 sunt ilustrate cele doua metode. Pentru distante foarte mari se pot utiliza in locul convertoarelor de nivel circuite de tip modem (modulator – demodulator) care transforma (moduleaza) sirul de pulsuri in semnal analogic (mai putin modificat de canalul de comunicatie) care va fi demodulat la receptie si refacut in forma binara.

Page 38: ARHITECTURA MICROPROCESOARELOR

6

a) Utilizarea convertoarelor de linie

b) esantionarea multipla si decizia majoritara

Figura 6. Imbunatatirea transmisiei seriale Formatul transmisiei seriale asincrone este prezentat in figura 7:

Figura 7. Formatul transmisiei seriale asincrone

Transmisia este declansata in mod asincron; semnalizarea inceperii acesteia se realizeaza prin bitul de START (cu valoarea logica "0" ). Acesta va declansa la receptor, operatia de receptie si deserializare a urmatorilor biti, ce reprezinta informatia propriu-zisa ce se transmite (b0 pina la b7 in figura 7). Transmisia se va incheia cu un numar precizat (cel putin 1) de biti de stop (valoarea logica "1"). Abia apoi se va putea emite eventual un alt cuvint de date, in aceeasi succesiune a operatiilor.

Transmitator Receptor Convertor 0-5V / 0 – 12V

Convertor 0-12V / 0 – 5V

1 0 0 1 1

0 0 1 0 1

0 1 1 0 0 0 1 0 0 0 1 1 1 1 0

Page 39: ARHITECTURA MICROPROCESOARELOR

7

Transferul paralel

Transferul paralel al datelor se realizeaza prin transmiterea simultana a datelor prin intermediul unui cablu format din N conductori, fiecare conductor purtind un bit, ca in figura 8.

Figura 8. Transferul paralel

Transmiterea datelor in mod paralel intre doua calculatoare sau intre un calculator si o consola nu se poate face pe distante mai mari de citiva metri in paralel datorita problemelor deosebite legate de ecranarea acestor cabluri si a pretului de cost ridicat. Nu se pot - sau nu este convenabil - realiza magistrale de date care sa permita transferul simultan al tuturor bitilor cuvintelor de date intre doua asemenea echipamente.

Transferurile de date in mod paralel pot fi clasificate astfel: - transferuri fara protocol electric ( se transmit numai datele, fara alte semnale

de comanda) - transferuri cu protocol electric ( pe langa date se transmit si semnale de

comanda a transferului) - transferurile cu protocol electric pot fi cu sau fara confirmare - transfer paralel asincron sau sincron (dupa modul de sincronizare intre

transmitator si receptor) Pentru transferul fara protocol, UCP are sarcina interogarii porturilor de intrare

(pentru a determina momentele in care datele sunt pregatite); pentru iesire, dispozitivul periferic are drept sarcina urmarirea modificarii datelor. Dezavantajele transferului de date fara protocol sunt: nu exista sincronizare, nu se confirma faptul ca datele au ajuns la destinatie si incarcarea suplimentara a UCP pentru realizarea transfrului programat.

In cazul transferurilor cu protocol electric fara confirmare transmisia poate fi initiata fie de transmitator fie de receptor. Daca transmisia este initiata de transmitator, acesta va emite catre receptor un semnal (RDY) care indica faptul ca datele sunt pregatite de transfer.

Page 40: ARHITECTURA MICROPROCESOARELOR

8

Receptorul asteapta semnalul RDY dupa care preia datele de pe magistrala de date. Acest protocol este ilustrat in figura 9.

Figura 9. Transfer paralel cu protocol asincron fara confirmare (transfer initiat de transmitator)

Transferul de date poate fi initiat si de receptor; acesta va emite un semnal de cerere de date (REQ) catre tranmitator. Dupa primirea semnalului REQ, transmitatorul va transmite datele pe magistala de date de unde acestea vor fi preluate de catre receptor. Protocolul este ilustrat in figura 10. Pentru ambele tipuri de protocoale fara confirmare nu se rezolva decit determinarea momentelor de timp la care se vor transmite datele pe magistrala de date. Transmitatorul si receptorul trebuie sa functioneze la aceeasi viteza pentru a se evita pierderea de date sau receptionarea acelorasi date de mai multe ori. Nu exista o confirmare a faptului ca datele au fost receptionate si nu este posibil ca transmitatorul si receptorul sa opereze cu viteze diferite. Aceste dezavantaje sunt eliminate prin utilizarea protocolului cu confirmare ilustrat in f igura 11.

Port de iesire

Transmitator Port de intrare

Receptor

RDY

Data valida

RDY

Date

Date

0

1

2

Data

RDY

0

1

RDY

Transmitator Receptor

Page 41: ARHITECTURA MICROPROCESOARELOR

9

Figura 10. Transfer paralel cu protocol asincron fara confirmare (transfer initiat de receptor)

In cazul protocolului cu confirmare, de exemplu cu initierea transferului de catre transmitator, acesta emite un semnal (RDY) care indica receptorului ca datele sunt pregatite de transfer, plaseaza datele pe magistrala de date, dar nu se initiaza un nou transfer pina cind transmitatorul nu receptioneaza un semnal de confirmare (ACK) emis de receptor si care indica faptul ca datele au fost preluate. Protocolul cu confirmare se mai numeste protocol cu hand-shaking.

Port de iesire

Transmitator Port de intrare

Receptor

REQ

Data valida

REQ

Date

Date

0

1

2Data

REQ0

1

REQ

Transmitator Receptor

Page 42: ARHITECTURA MICROPROCESOARELOR

10

Figura 11. Transfer paralel cu protocol asincron cu confirmare (hand-shaking)

Port de iesire

Transmitator Port de intrare

Receptor

ACK

Data valida

ACK

Date

Date

ACK

ACK

Transmitator Receptor

RDY

RDY

0

1

3

Data

RDY

0

1

RDY

Asteapta ACK

Genereaza ACK

Page 43: ARHITECTURA MICROPROCESOARELOR

1

Microarhitectura PENTIUM

Arhitectura Pentium a fost introdusă de firma Intel pentru procesoarele IA-32. Acest tip de arhitectură se regăseşte în procesoarele Pentium III ( arhitectura P6) şi în procesoarele Pentium IV ( arhitectura P4).

Arhitectura Pentium este o arhitectură superscalară şi pipe-line. Se utilizează tehnici de prelucrare paralelă astfel încît, în medie, procesoarele

Pentium sînt capabile să execute complet 3 instrucţiuni într-o perioadă de tact. Arhitectura Pentium utilizează o structură pipe-line cu 12 stagii. Principalele caracteristici ale arhitecturii P6 sînt următoarele: 1. Structura pipe-line a arhitecturii este divizată în 4 secţiuni : memoria cache

(primul şi al doilea nivel), încărcare/decodificare (fetch/decode), unitatea de execuţie (inclusiv execuţia instrucţiunilor “out of order” – adică a instrucţiunilor care nu urmează ordinea de la încărcare ci se execută înainte de instrucţiuni încăcate anterior, dar care aşteaptă eliberarea anumitor resurse pentru a fi încheiate) şi secţiunea de asteptare (retirement) pentru instrucţiunile completate care asteapta reasamblarea lor in fluxul normal de instructiuni..

2. Există două nilele de memorie cache. Primul nivel ( 8ko de instrucţiuni şi 8 ko de date) este imediat lîngă structura pipe-line. Al doilea nivel (de dimensiune 256ko pînă la 1Mo) este conectat direct cu procesorul printr-un bus de 64 de biţi.

3. Partea centrală a arhitecturii P6 este dată de mecanismul performant de execuţie a intrucţiunilor ( inclusiv a intrucţiunilor “out of order”) numit şi execuţie dinamică. Execuţia dinamică încorporează trei concepte de procesare a datelor:

- predicţia salturilor - analiza dinamică a fluxurilor de date şi instrucţiuni - execuţia speculativă

Predicţia salturilor reprezintă o tehnică modernă pentru obţinerea unei performanţe ridicate în structurile pipe-line. Aceastătehnică permite procesorului să decodifice instrucţiuni în afara buclelor de program pentru a ţine ocupată tot timpul structura pipe-line. Arhitectura P6 implementează un algoritm optimizat de predicţie a direcţiei salturilor.

Analiza dinamică a fluxului de date şi instrucţiuni se realizează în timp real; se determină dependenţa dintre date şi registre şi se detectează oportunităţile pentru execuţia instrucţiunilor “out of order”.

Unitatea de execuţie poate monitoriza simultan mai multe instrucţiuni şi va executa instrucţiunile în ordinea în care se optimizează utilizarea multiplă a unităţilor de execuţie ale procesorului, evident cu menţinerea integrităţii datelor şi a corectitudinii programului. În acest mod se menţin unităţile de execuţie ocupate cît mai mult timp chiar atunci cînd apar dependenţe între instrucţiuni şi situaţii de cache miss (negasire a informaţiei dorite în memoria cache).

Page 44: ARHITECTURA MICROPROCESOARELOR

2

Execuţia speculativă se referă la abilitatea procesorului de a executa instrucţiuni în afara unei bucle condiţionale care nu a fost încă rezolvată şi în final de a produce rezultatele în ordinea execuţiei originale a fluxului de instrucţiuni. Pentru a face execuţia speculativă posibilă, arhitectura P6 decuplează fazele de transmitere şi execuţie în raport cu faza de producere a rezultatelor finale.

Unitatea de execuţie va analiza fluxul de date şi instrucţiuni şi va executa toate instrucţiunile pregătite pentru aceasta ( cu toate resursele şi datele disponibile). Rezultalele vor fi stocate în registre temporare urmînd ca ulterior să fie asamblate în mod corespunzător ordinii originale de execuţie a fluxului de instrucţiuni.

Unitatea de aşteptare (retirement ) va conţine toate instrucţiunile care datorită unor depeendenţe a datelor (operanzilor) sau a faptului că unităţile de calcul necesare nu sînt disponibile (sînt ocupate de alte instrucţiuni) nu pot fi executate sau completate.

Prin combinarea predicţiei salturilor, analizei dinamice a fluxului de date şi

instrucţiuni şi a execuţiei speculative, arhitectura P6 înlătură constrîngerea unei secvenţări lineare a instrucţiunilor între fazele tradiţionale de încărcare (fetch) şi execuţie. Procesorul poate continua să decodifice şi să execute instrucţiuni chiar dacă există mai multe nivele de salturi în program. Implementarea predicţiei salturilor şi a decodificatoarelor de instrucţiuni performante menţin structura pipe-line plină. Pe de altă parte execuţia speculativă permite utilizarea, în paralel, a tutiror unităţilor de calcul ale

procesorului. În final rezultatele temporare vor fi asamblate în aşa fel încît să se

menţină integritatea datelor şi coerenţa programului. Arhitectura P6 de bază este prezentată în figura 2.1. În figura 2.2 este prezentată arhitectura P6 cu adaugarea nivelului 2 al memoriei

cache.

Page 45: ARHITECTURA MICROPROCESOARELOR

3

Figura 2.1 Microarhitectura P6

Page 46: ARHITECTURA MICROPROCESOARELOR

4

Figura 2.2 Microarhitectura P6 cu 2 nivele de memorie cache

Page 47: ARHITECTURA MICROPROCESOARELOR

Arhitectura P4 (NetBurst Micro-architecture) reprezintă îmbunătăţire a arhitecturii P6 ( IA-32). Elementele principale ale arhitecturii P4 sînt :

- unitatea de execuţie în ordine (“in order front end”) - unitatea de execuţie în afara ordinii (“out of order execution core”) - unităţile de calcul pentru întregi şi virgulă mobilă - subsistemul de memorie

Arhitectura de bază P4 este ilustrată în figura 1:

Figura 1 Arhitectura P4 ( NetBurst Micro-architecture)

Unitatea de execuţie în ordine conţine următoarele blocuri funcţionale:

- ITLB ( Instruction Translate Lookahead Buffer) – memorie cache nivel 2 (level 2 - L2) pentru instrucţiuni

- Blocul pentru predicţia salturilor ( predicţia statică şi dinamică a salturilor; se utilizează un algoritm îmbunătăţit de predicţie a salturilor în raport cu algoritmul de predicţie utilizat în arhitectura P6)

- Decodorul de instrucţiuni

Page 48: ARHITECTURA MICROPROCESOARELOR

- Memorie cache nivelul 1 (level 1 - L1). Această memeorie stochează instrucţiunile cele mai recente. Posedă un predictor de salturi propriu.

- Memorie de microinstrucţiuni ( micro-operaţii) – necesară pentru instrucţiuni complexe cu mai mult de 4 micro-operaţii

Unitatea de execuţie în afara ordinii are ca principale funcţiuni alocarea resurselor, reasignarea registrelor şi planificarea execuţiei. Se utilizează buffere de dimensiuni mai mari ca la arhitectura P6. Există un bloc de alocare în buffer-ul de reordonare (ROB) care urmăreşte starea fiecărei micro-operaţii în decursul desfăşurării ei. Blocul de alocare alocă registrele necesare şi o intrare în coada de aşteptare a planificatorului execuţiei micro-operaţiilor. Se realizează o redenumire (reasignare) a registrelor logice ale arhitecturii IA-32. Această redenumire realizează o corespondenţă (mapare) între registrele logice şi registrele fizice ale procesorului. Se utilizează o tabelă de mapare (RAT – Register Alias Table). Alocarea se realizează diferit fată de arhitectura P6. Figura 2 ilustrează modul de alocare a registrelor pentru arhitectura P4 ( Pentium III) şi arhitectura P4 (Pentium 4).

Figura 2. Alocarea registrelor în arhitectura Pentium În arhitectura P6, rezultatele parţiale şi intrările în ROB sînt stocate ca singură entitate ce conţine atît date cît şi informaţie de stare. După decizia de completare a micro-operaţiei rezultatul final este stocat în RRF (Retirement Register File). În arhitectura P4, intrările în ROB şi rezultatele sînt stocate separat. În bufferul ROB sînt stocate doar informaţiile de stare, iar în RF (Register File) sînt stocate datele. Există 2 tabele de alocare RAT : pentru instrucţiunile în curs de execuţie şi pentru instrucţiunile în aşteptare. Unitatea de execuţie are ca element central o unitate de planificare a execuţiei. Aceasta permite reordonarea instrucţiunilor astfel încît execuţia instrucţiunilor să se desfăşoare cît mai curînd posibil după ce operanzii de intrare şi resursele necesare prelucrării sînt disponibile.

Page 49: ARHITECTURA MICROPROCESOARELOR

Unitatea de planificare are în componenţă cozi de micro-operaţii şi palnificatoare de micro-operaţii. Există cozi pentru operaţii cu memoria şi cozi pentru operaţii care nu utilizează memoria. Toate cozile sînt cozi FIFO. Planificatoarele de micro-operaţii se referă la operaţii cu memoria, opearţii ALU rapide, operaţii ALU lente şi operaţii generale de virgulă mobilă. Există 4 porturi de distribuţie ( dispatch ports) ca în figura 3.

Figura 3. Porturi de distribuţie în arhitectura P4

Unităţile de calcul utilizează tehnica pipe line ( usual cu 3 stagii de prelucrare). Se lucrează pe 32 de biţi pentru întregis şi pe 64-128 de biţi pentru numerele în virgulă mobilă. Operaţiile cu memoria utilizează tehnici pentru mărirea vitezei de prelucrare:

- execuţia speculativă a încărcării din memorie - rearanjarea operaţiilor de încărcare şi stocare - utilizarea buffere-lor pentru scriere - tehnica “forwarding” ( scurtcircuitării) pentru încărcările de date

dependente La încheierea execuţiei instrucţiunii se vor re-executa instrucţiunile executate în mod incorect datorită tehnicilor de execuţie speculativă sau instrucţiunile dependente. Arhitectura P$ are 2 nivele de memorie cache; metoda de mapare este asociativă pe seturi ( 4 sau 8 seturi) iar politica de reamplasare este pseudo-LRU ( Least Recentlly Used). Structura pipe line a arhitecturii P4 are 20 de stagii de prelucrare după cum urmează: Stagiul

pipe line

Descriere

1 – 2 - determină valoare pointer-ului de instrucţiuni - predicţie salturi

3 - 4 - încărcarea instrucţunii din memoria cache 5 - transmiterea micro-operaţiilor la alocator 6 - alocarea resurselor pentru fiecare micro-operaţie 7-8 - reasignarea registrelor 9 - plasarea în cozile de aşteptare 10-12 - planificarea micro - operaţiilor

Page 50: ARHITECTURA MICROPROCESOARELOR

13-14 - distribuţia micro- operaţiilor către unităţile de calcul 15-16 - citirea registrelor de date ( a operanzilor de intrare) 17 - execuţia micro-operaţiilor 18 - actualizarea flagurilor de stare a micro-operaţiilor ( instrucţiunilor) 19 - verificarea corectitudinii execuţiei salturilor 20 - stocarea rezultatului Performanţele arhitecturii P4 sînt comparate cu performanţele arhitecturii P6 în figura 4.

Figura 4. Performanţele arhitecturii P4 comparativ cu performanţele arhitecturii P6

Page 51: ARHITECTURA MICROPROCESOARELOR

Arhitectura P6 utilizează tehnica pipe line cu 14 stagii de prelucrare după cum urmează: Stagiul

pipe line

Descriere

1 - determină valoare pointer-ului de instrucţiuni - predicţia dinamică a salturilor ( se utilizeaza un algoritm adaptive cu 2 niveluri : primul nivel pe 4 biti al doilea nivel cu contor cu saturare pe 2 biti – figura 1)

2-4 - încărcarea instrucţunii din mamoria cache ( maxim 2 instrucţiuni de 32 biti fiecare) - determinarea limitelor fiecărei instrucţiuni - transferul instrucţiunilor către decodorul de instrucţiuni ( în cuvinte de 16 biţi)

5-6 - decodificarea instrucţiunilor într-o serie de micro-operaţii - pregătire pentru execuţia “out-of order” - trei decodificatoare operează în paralel : - 2 decodificatoare simple ( pentru majoritatea operaţiilor pe întregi) - 1 decodificator complex ( pentru instrucţiuni complexe) - rezultatul final este o secvenţă de micro-operaţii - fiecare micro-operaţie conţine 3 operanzi: 2 operanzi sursă şi 1 operand destinaţie - micro-operaţiile au lungime mai mare decît în cazul arhitecturii RISC deoarece trebuie să acopere şi cazul operaţiilor de virgulă mobilă - majoritatea instrucţiunilor sînt translatate în 1 pînă la 4 micro-operaţii - dacă sînt necesare mai mult de 4 micro-operaţii atunci instrucţiunea este transferată la secvenţorul de microinstrucţiuni ( Microcode Instruction Sequencer) - se efectuează predicţia salturilor statice

7-8 - reasignarea registrelor logice cu registre fizice cu ajutorul unei tabele de asociere - procesorul are doar 8 registre de întregi şi 8 registre de virgulă mobilă ca register de uz general, vizibile de către programator - redenumirea registrelor adaugă 40 de registre de uz general - micro-operaţiile sînt transferate în buffer-ul de reordodare ( Reorder Buffer) - buffer-ul de reordonare (ROB) este o memorie adresabilă prin conţinut organizată după o politică FIFO - micro-operaţiile sînt stocate în ROB în diferite stadii de execuţie (în aşteptarea rezolvării dependenţei între instrucţiuni sau a eliberării resurselor necesare) - micro-operaţiile sînt transferate unităţii de rezervare (“reservation station”)

9-10 - unitatatea de rezervare are 20 de intrări - unitatea de rezervare distribuie micro-operaţiile către 1 pînă la 5 unităţi de execuţie: - două unităţi aritmetice pentru întregi - două unităţi de adresare a datelor ( pentru instrucţiuni load / store) - o unitate aritmetică de virgulă mobilă - unitatea de rezervare poate distribui micro-operaţiile într-o perioadă de ceas pîna la 3 perioade de ceas ( dacă unităţile de calcul sînt ocupate) - distribuţia micro-instrucţiunilor către unităţile de calcul este determinată de biţii de stare din ROB - dacă mai mult de o singură micro-operaţie este gata pentru transfer în unitatea de rezervare, se vor allege acele micr-operaţii care sînt generate în secvenţă

11 - se execută micro-operaţiile

Page 52: ARHITECTURA MICROPROCESOARELOR

12-14 - se semnalizează ( printr-un flag) completarea micro-operaţiile - cînd unitatea de aşteptare (“retirement unit”) găseşte o micro-operaţie completată atunci unitatea de aşteptare stochează rezultatele în RRF ( Retirement Register File); RRF reprezintă un set de 8 registre de întregi şi 8 registre de virgulă mobilă - unitatea de aşteptare rearanjează micro-operaţiile în ordinea originală şi monitorizează apariţia întreruperilor, excepţiilor, punctelor de întrerupere şî a salturilor prezise în mod eronat

Figura 1 Predicţia salturilor cu algoritm adaptive cu 2 niveluri

Page 53: ARHITECTURA MICROPROCESOARELOR

1

Predicţia salturilor Predicţia salturilor este o cerinţă importantă în sistemele de calcul ce utilizează intens tehnica pipe-line. Prin predicţia salturilor se optimizează utilizarea structurii pipe-line evitîndu-se reiniţializarea acesteia dacă intrucţiunile corespunzătoare saltului în program au fost încărcate în mod eronat. În situaţia unei instrucţiuni de salt condiţionat instrucţiunea ţintă nu poate fi încarcată în pipe-line decît după ce s-a calculat adresa de salt şi nu s-a evaluat condiţia de salt. Pentru salturile necondiţionate trebuie calculată numai adresa de salt. Pînă cînd aceste informaţii sînt disponibile structura pipe-line aşteaptă sau încarcă o instrucţiune tintă posibilă; în momentul cînd informaţiile sînt disponibile se poate decide o reiniţializare a structurii (în situaţia în care în pipe-line s-au încărcat instrucţiuni ţintă în mod eronat). În ambele situaţii apare o degradare a performanţei structurii pipe-line. Utilizarea predicţiei salturilor conduce la o atenuare a acestei degradări de performanţă datorităfaptului că în majoritatea cazurilor instrucţiunile ţintă sînt încărcate correct. Instrucţiunile de salt se impart în două categorii:

- salturi statice ( care se regăsesc în codul binar şi sînt cunoscute înainte de execuţia programului)

- salturi dinamice ( care apar în urma execuţiei şi nu sînt cunoscute înainte de execuţie)

Predicţia salturilor dinamice este mai dificilă decît predicţia salturilor statice. Ideea de bază a predicţiei salturilor este memorarea istoriei fiecărui salt (dacă s-a efectuat sau nu s-a efectuat) şi luarea deciziei (salt efectuat / salt ne-efectuat) pe baza acestei istorii. Se definesc anumite tipare (pattern) de diferite lungimi care indică în timp dacă saltul; s-a efectuat sau nu. Aceste tipare sînt dependente de tipul de program care se execută. Există mai multe tipuri de programe (task-uri): T1 – procesarea bazelor de date T2 – programe de căutare, editare, compilare şi testare T3 – programe de rezervare hotelieră, tranzacţii bancare T4 – programe utilitare pentru manevrarea de date În tabelul 1 sînt prezentate numărul de isnstrucţiuni de salt pentru fiecare tip de task: T1 T2 T3 T4

Numărul total de instrucţiuni

1,300,881 1,325,359 1,309,178 1,667,468

Numărul salturilor dinamice

285,528 321,441 312,865 359,550

Numărul salturilor statice

19,176 27,878 21,202 15,491

Predicţia salturilor utilizează un buffer de memorie ( BTB – Branch Target Buffer) care conţine adresele instrucţiunilor ţintă pentru fiecare salt precum şi informaţia necesară predicţiei. Bufferul BTB este adresat cu ajutorul adresei instrucţiunii de salt. Deoarece în mod evident nu se poate utilize un BTB excesiv de mare se vor utilize tehnici de mapare a adresei instrucţiunii de salt în spaţiul de adresabilitate al BTB ( tehnici similare mapării memoriei cache). Dimensiunea bufferului BTB influenţează rata de predicţie (figura 1).

Page 54: ARHITECTURA MICROPROCESOARELOR

2

Figura 1. Variaţia ratei de predicţie funcţie de dimensiunea BTB

Dimensiunea mare a BTB poate fi în aparenţă un avantaj. Totuşi un BTB mare are următoarele dezavantaje:

- se reduce din dimensiunea memoriei sistemului - se stochează adrese effective ( nu adrese fizice) ceea însemnă că la comutarea task-

urilor tot conţinutul BTB este inutil sau chiar contraproductiv

Metoda de mapare a BTB ( similară memoriei cache ) influenţează rata de predicţie ca în figura 2.

Figura 2. Variaţia ratei de predicţie funcţie de metoda de mapare a BTB

Page 55: ARHITECTURA MICROPROCESOARELOR

3

În situaţia în care procesorul încarcă mai mult de o singură instrucţiune într-un ciclu atunci bufferul BTB trebuie accesat pe blocuri de date. Rata de predicţie va scadea uşor ca în figura 3.

Figura 3. Variaţia ratei de predicţie funcţie de modul de adresare a BTB

Predicţia direcţiei salturilor Salturile condiţionate sînt prezise utilizînd informaţia anterioară despre modul cum s-au efectuat aceste salturi. Cea mai simplă cale de predicţie a saltului este aceea de a presupune că un nou salt se va efectua în aceeaşi direcţie ca salturile anterioare. O asemenea predicţie se numeşte predicţie locală cu o istorie de 1 bit ( local prediction 1 bit history). Evident metoda este mai bună dacă istoria are mai mulţi biţi care memorează direcţia saltului ( 1 se efectuează saltul, 0 nu se efectuează saltul). Tabelul 1 ilustrează modul de predicţie a salturilor pentru un tipar de 3 biţi.

Tabelul 1 Tiparul (pattern) Predicţie Saltul urmator efectuat

este efectuat(%) 000 ne-efectuat (0) 7.8 001 ne-efectuat (0) 34.1 010 efectuat (1) 51.9 011 efectuat (1) 67.9 100 ne-efectuat (0) 32.6 101 efectuat (1) 64.4 110 efectuat (1) 79.1 111 efectuat (1) 97.7

Se utilizează un registru de deplasare ( cu n biţi pentru un predictor local cu istorie de n biţi). Acest registru de deplasare conţine ultimele n decizii. Cel mai din stînga bit reprezintă

Page 56: ARHITECTURA MICROPROCESOARELOR

4

decizia cea mai veche. Construirea istoriei presupune ca bucla să se fi executat de un anumit număr de ori timp în care saltul nu este predictibil). Istoria fiecărui salt este stocată în bufferul BTB. Analizele pe o gamă variată de programe indică faptul că dacă numărul de biţi din tipar creşte rata de predicţie creşte. Totuşi prin adăugarea unui bit ( de la o istorie cu 2 biţi la o istorie cu 3 biţi) creşterea nu este semnificativă. Se poate utiliza, pentru fiecare salt, un contor de 2 biţi care este incrementat ori de cite ori saltul se efectuează şi este decrementat ori de cite ori saltul nu se efectuează. Operaţiile de incrementare, respectiv decrementare, se efectuează cu saturare astfel încît contorul ia valorile 0,1,2 sau 3. Predicţia se efectuează astfel : dacă valoare contorului este 0 sau 1 – saltul nu se efectuează, dacă valoarea contorului este 2 sau 3 – saltul se efectuează. Această schemă de predicţie poate fi asimilată unui automat cu 4 stări ca în figura 4.

Figura 4. Schema de predicţie cu contor de 2 biţi cu saturare

Rezultatele experimentale obţinute în literatură pentru un predictor local cu istorie de 3 biţi şi pentru un predictor cu contor de 2 biţi cu saturare sînt ilustrate în figurile 5 şi 6.

Figura 5. Predicţia cu un predictor local cu istorie de 3 biţi

Page 57: ARHITECTURA MICROPROCESOARELOR

5

Figura 6. Predicţia cu un predictor cu contor de 2 biţi cu saturare

O schemă de predicţie a salturilor mai eficientă este schema de predicţie adaptivă cu 2 niveluri. Această schemă presupune existenţa a 2 tabele: o tabelă BTB şi o tabelă de contori de 2 biţi cu saturare. Tabela BTB conţine istoria pe n biţi a fiecărui salt; conţinutul BTB adresează tabela de contori; decizia se ia ca în cazul schemei de predicn cazul schemei de predicţie cu contor cu saturare; se actualizează contorii şi tabela BTB. Schema de predicţie adaptivă cu 2 niveluri este ilustrată în figura 7.

Figura 7. Predicţia adaptivă cu 2 niveluri

În figura 8 este ilustrată rata de predicţie pentru un predictor adaptive cu 2 niveluri funcţie de numărul de biţi de adresă.

Page 58: ARHITECTURA MICROPROCESOARELOR

6

Figura 8. Evoluţ ratei de predicţie pentru predicţia adaptivă cu 2 niveluri Predicţia direcţiei salturilor bazată pe istoria globală Predicţia bazată pe istoria globală a salturilor utilizează un singur registru în care se memorează istoria pentru toate salturile, în loc să se înregistreze această istorie separat pentru fiecare salt. Pentru fiecare salt executat direcţia acestuia este înregistrată în acest registru global (GR – Global Register) şi formează un tipar (pattern) global. Pentru a prezice un anumit salt trebuie luată în considerare calea prin program urmată pentru a se executa saltul. În mod similar metodei de predicţie adaptive cu 2 niveluri acest tipar global este utilizat pentru a adresa o tabelă de contori cu saturare. Metoda de predicţie globală este ilustrată în figura 9.

Figura 9. Predicţia globală a salturilor

Avantajul metodei de predicţie globale este acela că se reduce dimensiunea tabelelor utilizate pentru memorarea informaţiilor necesare predicţiei. Se pot prezice mai multe salturi utilizînd o dimensiune de memorie specificată.

Page 59: ARHITECTURA MICROPROCESOARELOR

7

Problema care apare pentru această metodă de predicţie este aceea informaţiile pentru diferite salturi interferă între ele. Există două scheme pentru predicţia globală a salturilor: gselect şi gshare. Ambele metode încearcă să resolve problema interferării informaţiilor între salturi printr-o adresare mai precisă a saltului. Metoda gselect este ilustrată în figura 10.

Figura 10. Metoda de predicţie globală – gselect Adresarea tabelei de contori se realizează utilizînd concatenarea unor biţi din registrul GR şi a bitilor mai puţin semnificativi din adresa instrucţiunii de salt ca în tabelul 3.

Tabelul 3 Adresa instrucţiunii de salt Registrul GR Index în tabela de contori

(gselect) 0000 0000 0000 0001 0000 0001 0000 0000 0000 0000 0000 0000 1111 1111 0000 0000 1111 0000 1111 1111 1000 0000 1111 0000

Metoda gshare este prezentată în figura 11.

Figura 11. Metoda de predicţie globală – gshare

Page 60: ARHITECTURA MICROPROCESOARELOR

8

Metoda gshare calculează indexul pentru tabela de contori ca un XOR logic între biţii din registrul GR şi biţii mai puţin semnificativi ai adresei instrucţiunii de salt, ca în tabelul 4.

Tabelul 4 Adresa instrucţiunii de salt Registrul GR Index în tabela de contori

(gshare ) 0000 0000 0000 0001 0000 0001 0000 0000 0000 0000 0000 0000 1111 1111 0000 0000 1111 1111 1111 1111 1000 0000 0111 1111

Metoda gshare elimină situaţiile în care indexul pentru tabela de contori ia aceeaşi valoare pentru salturi diferite (tabelul 5).

Tabelul 5 Adresa instrucţiunii

de salt Registrul GR Index în tabela de

contori (gselect ) Index în tabela de contori (gshare )

0000 0000 0000 0001 0000 0001 0000 0001 0000 0000 0000 0000 0000 0000 0000 0000 1111 1111 0000 0000 1111 0000 1111 1111 1111 1111 1000 0000 1111 0000 0111 1111

Performanţele metodelor de predicţie globală gselect şi gshare sînt illustrate în figurile 12. şi 13.

Figura 12. Rata de predicţie pentru metoda de predicţie globală gselect

Page 61: ARHITECTURA MICROPROCESOARELOR

9

Figura 12. Rata de predicţie pentru metoda de predicţie globală gshare

În practică se utilizează metode hibride care utilizează 2 predictori ( de tipuri diferite). În figura 13 este ilustrată o metodă de predicţie cu selecţia predictorului.

Page 62: ARHITECTURA MICROPROCESOARELOR

10

Figura 13. Metoda de predicţie a salturilor cu selecţia predictorului

Analiza comparativă a diferitelor metode de predicţie este ilustrată în figurile 14 -

Figura 14. Comparaţie între predicţia locală cu BTB şi predicţia adaptivă cu 2 niveluri (bimodală)

Page 63: ARHITECTURA MICROPROCESOARELOR

11

Figura 15. Comparaţie între predicţia locală cu BTB,predicţia adaptivă cu 2 niveluri (bimodală) şi predicţia globală

Figura 16. Comparaţie între predicţia locală cu BTB, predicţia adaptivă cu 2 niveluri

(bimodală), predicţia globală şi metoda gselect

Figura 17. Comparaţie între predicţia locală cu BTB, predicţia adaptivă cu 2 niveluri

(bimodală), predicţia globală, metoda gselect şi metoda gshare

Page 64: ARHITECTURA MICROPROCESOARELOR

12

Figura 18. Comparaţie între predicţia locală cu BTB, predicţia adaptivă cu 2 niveluri (bimodală), predicţia globală, metoda gselect, metoda gshare şi predicţia selectivă

În concluzie predicţia salturilor este influenţată de următorii factori:

- identificarea corectă a saltului curent ( pentru metodele de predicţie globale) - metodele de predicţie trebuie să fie testate pe o gamă largă de programe - diferite metode de predicţie operează mai efficient pe diferite structuri de

instrucţiuni de salt - predicţia este influenţată de combinarea mai multor tipuri de predictori

Page 65: ARHITECTURA MICROPROCESOARELOR

Structura internă de bază a procesoarelor Intel

Structura de bază este cea din figura 1. Microprocesorul include două componente majore: unitatea de execuţie şi unitatea de interfaţă cu magistrala. Structura de bază este considerată ca fiind cea a modelului x86.

Unitatea de interfaţă cu magistrala execută toate ciclurile de magistrală (read, write, întrerupere), fie la cererea unităţii de execuţie, fie pentru umplerea cozii de instrucţiuni. Coada de instrucţiuni este un registru FIFO alcătuit din 6 cuvinte, instrucţiunile aşteptând aici intrarea în execuţie. Ciclurile de încărcare ale instrucţiunilor sunt executate în intervalele de timp în care unitatea de execuţie nu solicită magistrala. Dacă unitatea de execuţie nu solicită magistrala şi coada de instrucţiuni este plină, atunci au loc cicluri inactive pe magistrală. Execuţia instrucţiunilor de salt duce la resetarea cozii, deoarece trebuie extrase instrucţiuni din altă zonă de memorie.

Page 66: ARHITECTURA MICROPROCESOARELOR

Figura 1. Structura internă de bază a microprocesoarelor Intel

Unitatea de interfaţă cu magistrala execută toate ciclurile de magistrală (read, write, întrerupere), fie la cererea unităţii de execuţie, fie pentru umplerea cozii de instrucţiuni. Coada de instrucţiuni este un registru FIFO alcătuit din 6 cuvinte, instrucţiunile aşteptând aici intrarea în execuţie. Ciclurile de încărcare ale instrucţiunilor sunt executate în intervalele de timp în care unitatea de execuţie nu solicită magistrala. Dacă unitatea de execuţie nu solicită magistrala şi coada de instrucţiuni este plină, atunci au loc cicluri inactive pe magistrală. Execuţia instrucţiunilor de salt duce la resetarea cozii, deoarece trebuie extrase instrucţiuni din altă zonă de memorie.

Unitatea de execuţie obţine instrucţiuni de la unitatea de interfaţă cu magistrala, iar în cazul în care coada este vidă, aşteaptă, şi apoi le execută lucrând cu adrese şi date. Registrul de flags este actualizat în funcţie de rezultatul fiecărei operaţii executate. După execuţia instrucţiunii, furnizează date şi adrese către unitatea de interfaţă cu magistrala. De asemenea, unitatea de execuţie calculează adresele efective ale operanzilor, conform modului de adresare, prin relocarea adresei efective.

Fiecare ciclu de magistrală constă în intervale de timp date de semnalul de tact, suplimentate cu un timp de aşteptare, dacă semnalul nu este Ready. Pe

Registre generale

Registre temporale (buffers)

Magistrala locală – bus intern – 16 bi i

UAL

Coprocesor matematic

Comanda unităţii de execuţie

Registru flag

Reg. segment Contor program

Logica de comandă de magistrală

1 2 3 4 5 6

Sumator

16 biţi

20 biţi

8 biţi

Page 67: ARHITECTURA MICROPROCESOARELOR

durata ciclurilor inactive, se realizează demultiplexarea prin generarea stării anterioare în latch-uri (CBB-RS) externe, pe frontul descrescător al impulsului de tact.

Registrele generale

Registrele generale cuprind: 1) registre de utilizare generală. AX, BX, CX, DX adresabile direct pe 16

biţi, fiecare putând servi ca destinaţie a datelor (acumulator); registrele pot fi adresate şi pe bytes, prin specificarea byte-ului inferior (AL-ALow) sau superior (AH-AHigh) corespunzătoare biţilor 0-7 (L), respectiv 8-15 (H). Începând cu microprocesoarele I80386 şi până la Pentium, acestea se pot adresa şi pe dublu cuvânt (32 de biţi) prin specificarea registrului precedat de E (Extended): EAX, BOX, BCX, EOX. Registrele de ulilizare generală au fost proiectate să aibă o destinaţie specifică, în concordanţă cu operaţiile pe care le execută:

(E - Extended - pentru microprocesoarele I80386 şi ulterioare, care lucrează pe 32 de biţi.)

AX - este utilizat pentru operaţiile de înmulţire şi împărţire, pe 16 biţi, respectiv pentru operaţii de intrare/ieşire pe 16 biţi;

AL - este utilizat, pentru aceleaşi operaţii ca şi AX dar pe 8 biţi; în plus se utilizează pentru operaţii BCO (binary coded decimal) şi conversii de cod;

AH - este folosit pentru înmulţire şi împărţire pe 8 biţi; BX - se utilizează în conversii de cod şi ca registru de bază la adresare;

Figura 2. Registrele generale

AH EAX AX AL BH EBX BX BL CH ECX CX CL DH EDX DX DL

ESP SP – stack pointer EBP BP – base pointer ESI SI – source index EDI DI – destination index

Page 68: ARHITECTURA MICROPROCESOARELOR

Registrele de segment

Registrele de segment permit microprocesorului să adreseze direct

memoria: CS (Code Segment) pentru segmentul de program; DS (Data Segment) pentru segmentul de date curent; SS (Stack Segment) pentru segmentul de stivă; ES (Extra Segment) pentru segmentul de date auxiliar; FS, GS - segmente de date la microprocesoare ulterioare I 80386. Aceste registre pot defini la un moment dat patru segmente de memorie de

câte 64 K fiecare (64 K = 26*210) în mod direct.

Fig. 3. Tehnica de segmentare

Adresarea în modul real permite microprocesorului să acceseze un spaţiu

de adrese fizice de până la 1 M (220) prin tehnica de segmentare, tehnică ce nu adresează direct locaţiile de memorie, ci printr-un procedeu care se desfăşoară în două etape:

Reg. de segment 15 12 11 0

15 4 3 0

Sumator 19 16 15 11 10 8 7 4 3 0

adresa efectivă - offset

adresa fizică de memorie

Page 69: ARHITECTURA MICROPROCESOARELOR

Fig. 4. Adresarea în modul real

- în prima etapă se încarcă un registru de segment cu adresa unui bloc de memorie de 64 K, constituind adresa de bază a segmentului;

- la adresa fizică de bază a segmentului se adună adresa de offset, care constituie deplasarea relativă (offset-ul) faţă de adresa de bază în interiorul segmentului, rezultând adresa fizică de memorie.

Dezavantajul major constă în aceea că programatorii trebuie să aibă grijă deoarece atunci când se depăşesc limitele unui segment este necesară o nouă reîncărcare a registrelor de segment.

Fig. 5. Registrul contor de program

Adresarea memoriei în mod protejat

Segmentarea Mecanismul de generare a adreselor în mod protejat este ilustrat în figura

6.

31 15 0

EIP IP

CS DS SS ES IP

64k

64k

64k

Registre de

segment 15

Memorie internă RAM de 1M

segment de cod

segment de date

segment de stivă

00000

offset

Page 70: ARHITECTURA MICROPROCESOARELOR

Fig. 6. Adresarea în mod protejat (1) Registrele de segment în acest mod de adresare nu conţin adresa fizică

de bază a segmentului, ci au rol de selectoare cu structura:

Fig. 7. Registrul selector

RPL (Register Privilege) indică nivelul privilegiat al registrului selector; acesta dispune de patru niveluri de protecţie în funcţie de softul care solicită adresarea memoriei ca în figura 8.

Protecţia constă în capacitatea sistemului de a face ca erorile de software ale unui program să nu afecteze alte programe. În acest scop, microprocesorul dispune de un mecanism de protecţie privilegiat de tip inelar crescător, pe patru niveluri, în vederea izolării aplicaţiilor software de eventuale erori ale software-ului de bază.

Controlul comunicării între programe şi sistemul de operare este implementat prin separarea spaţiului de adresă şi mecanismul privilegiat. Controlul spaţiului de adresă separă programele de aplicaţie unele faţă de altele, în limp ce mecanismul privilegiat izolează software-ul de bază de cel de aplicaţie.

Index Ti RPL 15 3 2 1 0

selector offset 15 0 31 (15) 0

Sumator (4) (4)

Registru descriptor segment

(3) segment selectat

Descriptor segment

(2)

(1)

baza segment

Tabela descriptori de segment

adresă fizică

Page 71: ARHITECTURA MICROPROCESOARELOR

Fig. 8. Nivelurile de protecţie

Protecţia se bazează pe "ierarhia de prioritati", organizată inelar pe cele 4 niveluri din figura 8:

- nivelul 0 - cea mai mare prioritate, - nivelul 3 - nivelul cu cea mai mică prioritate. De remarcat că nivelul privilegiat este un atribut de protecţie afectat în

toate segmentele din software-ul de bază; acesta determină care proceduri pot accesa segmentul. Drepturile de acces şi limitele sunt realizate prin hardware.

Codul sistemului de operare şi segmentele de date plasate pe cel mai privilegiat nivel (nivelul 0) nu pot fi accesate direct prin programe situate pe alt nivel privilegiat; fiecare program poate accesa date de pe un nivel mai mare sau egal cu nivelul privilegiat care îi este asociat.

TI - indicatoruI tabelului de descriptori de segment. Tabelele descriptorilor de segment definesc toate segmentele utilizate,

existând trei tipuri de tabele ale căror adrese sunt păstrate în registre dedicate:

- tabela descriptorilor globali, GOT (Global Description Table), conţine descriptorii disponibili tuturor task-urilor din sistem (TI= 0) şi anume:

- descriptorii segmentelor de date şi cod folosite de sistemul de operare; - descriptorii segmentelor de stare a taskurilor; - descriptorii pentru tabelele de descriptori locali ale sistemului.

Adresa GOT este păstrată în registrul GOTR. - tabelul deacriptorilor locali, LDT (Local Description Table) - conţine

descriptorii de segmente ale unui task dat: descriptorul segmentului de cod, date, stivă şi al segmentului ce conţine tabela vectorilor de întrerupere (TI = 1). Adresa LDT este reţinută în registrul LDTR.

RPL=11 RPL=10 RPL=01

RPL=00

Page 72: ARHITECTURA MICROPROCESOARELOR

- tabelul vectorilor de întrerupere, IDT (Interrupt Description Table) conţine descriptorii ce localizează rutinele de tratare a întreruperii, a căror adresă este păstrată în IDTR.

Indexul este un pointer de intrare în tabelul corespunzător de descriptori. Un descriptor de segment dintr-un tabel accesat prin index, are

următoarea structură descrisă în figura 9: A (Accessed) = 0 - segmentul nu poate fl accesat 1 - selectorul de segment va fi încărcat în

registrul segment S (segment descriptor) = 1 - descriptor segment de cod sau date 0 - descriptor segment de sistem sau

întrerupere

Adresă de bază

15 8 7 6 5 4 3 0 Lungimea

15 14 13 12 11 9 8 7 0 Adresă de bază segm.

G D O U S

Lungime segment P RPL S E

ED C

WR A Adresă de

bază

drepturi de acces

Fig. 9. Descriptor de segment

E (Executable) = 1 - segment de cod 0 - alt segment decât cod Dacă S = 1, E = 0, atunci este un descriptor de segment de date. ED (expansion direction)= 0 - extindere în sus, offset ≤ limita 1 - extindere în jos, offset > limita W (writeable) = 0 – scriere neautorizată 1 – scriere autorizată Dacă S = 1, E = 1, atunci este un descriptor de segment de cod: C (conforming) = 1 - se execută dacă are o prioritate ≤ RPL 0 - nu se execută deoarece prioritatea > RPL R (readable)= 0 - nu autorizează citirea 1 - autorizează citirea P (present) = 1 - segmentul se află în memorie 0 - segmentul nu se află în memorie

Page 73: ARHITECTURA MICROPROCESOARELOR

{U S} segment folosit de utilizator sau de sistemul de operare O - pentru compatibilitatea cu procesoarele ulterioare D (dimension) = 0 - segment pe 16 biţi 1 - segment pe 32 biţi G (granularity) = 0- lungimea segmentului este specificată în

bytes 1 - lungime exprimată în pagini (1 pag. = 4 K). (2) Din tabelul de descriptori segmente, se încarcă automat registrul de

descriptor segment (fig. 10), având structura:

Fig. 10. Registru descriptor de segment

(3) Adresa de bază a segmentului, identifică segmentul din memoria internă,

(4) Adresa fizică se obţine relativ la adresa de bază prin intermediul sumatorului, la care se adună offsetul comunicat prin magistrala de adrese de 24 biţi ((I80286, I80386, SX ⇒ 224 = 220 . 24 = 16 M RAM) sau 32 biţi (ulterioare I80386 DX => 232 = 230.22 = 4 GRAM).

O altă modalitate de gestiune a memoriei pentru microprocesoarele pe 32

de biţi, utilizată pentru sistemele de operare multitasking o constituie paginarea. Spre deosebire de segmentare, care modularizează programele şi datele în segmente de lungime variabilă, ţinând seama de logica prelucrării datelor şi a modulelor ce alcătuiesc codul, paginarea divide datele şi programele în zone de dimensiune fixă, numite pagini.

Tehnica paginării, ilustrată în figura 11, preia adresa liniară pe 32 de biţi furnizată de magistrala de adrese, conţinând:

1) indexul unei intrări în directorul ce conţine adresele tabelelor de pagini; pentru a identifica o adresă a unui tabel de pagini, acesta se va aduna cu adresa fizică de bază a directorului de pagini (numărul de intrări este 210 = 1024);

(2) adresa relativă a unui tabel de pagini (210 - 1024 tabele), care se adună

Adresă de bază

Lungime segment

Drepturi de acces

47 16 15 0 7 0

Page 74: ARHITECTURA MICROPROCESOARELOR

la adresa de bază a tabelului determinat anterior pentru a obţine adresa paginii;

(3) offset-ul relativ la adresa paginii selectate anterior, care adunat la această adresă, conduce la obţinerea adresei fizice pe 32 de biţi.

Paginarea O altă posibilitate de gestionare a memoriei la microprocesoarele pe 32 de

biţi, utilizată de către sistemele de operare multitasking, o constituie tehnica paginării. Dacă prin segmentare se modularizează programele şi datele în segmente de lungime variabilă în funcţie de logica prelucrării datelor şi a modulelor ce alcătuiesc codul, paginarea împarte datele şi programele în zone de dimensiune fixă numite pagini.

Tehnica paginării este reprezentată în figura 11. Adresa liniară preluată de pe magistrala de adrese, formată din 32 de biţi, conţine în acest caz trei câmpuri: offset, adresa relativă de tabel şi un index.

Fig. 11. Tehnica paginării (procesoarele Intel) Semnificaţia celor trei câmpuri este următoarea: 1) indexul unei intrări în directorul ce conţine adresele tabelelor de pagini;

pentru a identifica o adresă a unui tabel de pagini, acesta se va aduna cu adresa fizică de bază a directorului dc pagini (numărul de intrări este 210 = 1024);

(2) adresa relativă a unui tabel de pagini (210 - 1024 tabele), care se adună

Director adrese tabele pag. Tabelă Offset

31 22 21 12 11 0

+

+ pagină selectată

adresă fizică

adresă fizică a pag. selectare

adresă de bază a tabelelor de pagini

12 10

21

0 21

0 + Adresă fizică de

bază

adresă liniară 32 biţi

10 RAM

Page 75: ARHITECTURA MICROPROCESOARELOR

la adresa de bază a tabelului determinat anterior pentru a obţine adresa paginii;

(3) offset-ul relativ la adresa paginii selectate anterior, care adunat la această adresă, conduce la obţinerea adresei fizice pe 32 de biţi.

Adresarea memoriei interne pe 32 de biţi La microprocesoarele pe 32 de biţi, memoria internă nu mai este conectată

la magistrala de 16 biţi a sistemului, ci este ataşată direct la magistrala locală a microprocesorului. Aceast fapt a extins modurile de adresare a memoriei interne la 232 = 4G RAM prin adresarea complet liniară (fig. 13).

De asemenea, este folosită tehnica paginării pentru a implementa mecanismul de memorie virtuală prin care un bloc de memorie poate fi încărcat din memoria externă în mod automat, dacă la momentul referirii nu se află în memoria internă. În acest caz, un registru de segment este alcătuit din două câmpuri conform figurii 12.

Fig. 12 Structura registrului de segment

Cu 14 biţi ai câmpului Selector se pot selecta 214 = 210 . 24 = 16K adrese a câte 232 off-seturi, deci spaţiul de adrese virtuale va fi 214 . 232 = 246 = 64 T.

Selector RPL

Page 76: ARHITECTURA MICROPROCESOARELOR

Fig. 13. Adresarea complet liniară

La microprocesoarele pe 32 de biţi apare adresarea în mod real virtual, prin care microprocesorul poate simula comportamentul mai multor procesoare care lucrează în mod real. Urmarea este că fiecare utilizator sau task poate să lucreze ca şi când ar avea la dispoziţie un întreg mediu real de 1 M.

Modalităţile de adresare a memoriei la microprocesoarele pe 32 de biţi sunt redate succint în figura 14.

Fig. 14. Adresarea memoriei interne la microprocesoarele pe 32 de biţi

Adresă fizică 32 biţi

RPL

Offset

Adresă efectivă 31 0

Unitate de segmentare

15 2 1 0

Adresă liniară 32 biţi

Unitate de paginare

Adresă virtuală sau

index descriptor

Memoria fizică

232

+ Segment selectat

Adresă liniară

Memorie Drepturi acces

Offset

Lungime segment

Adresă de bază

Selector RPL

CS DS ES FS GS SS

Registre descriptor

de segment

15 2 1 0

Registre de Segment Adresă efectivă

Page 77: ARHITECTURA MICROPROCESOARELOR
Page 78: ARHITECTURA MICROPROCESOARELOR

124

Bibliografie

1. Anderson, D., Shanley, T., „Pentium Pro and Pentium II System Architecture”, Addison-Wesley, Reading, MA, 1998.

2. Brey, B., „The Intel Microprocessors”, Fifth Edition, Prentice Hall, New Jersey, 2000.

3. Bryant, R., O’Hallaron, D., „Computer Systems – A Programmer’s Perspective”, , Prentice Hall, New Jersey, 2003.

4. Mărşanu, R., „Calculatoare persoanale-elemente arhitecturale”, Editura BIC ALL, Bucureşti 2001.

6. Murdocca, M.J., Heuring, V.P., „Principles of Computer Arhitecture”, Prentice Hall, 1999.

7. Norton, P., „Sectrete PC”, Editura Teora, Bucureşti 1998 (traducere după SAMS Publisluig, USA, 1995).

8. Patterson, D., Hennessy, J., „Organizarea şi proiectarea calculatoarelor: interfaţa hardwarw/software”, Editura ALL, Bucureşti, 2002.

9. Stallings, W., „Computer Organization and Architecture”, Fifth Edition, Prentice Hall, New Jersey, 1999.

10. Tamenbaum, A. S., „Organizarea structurată a calculatoarelor”, Ediţia a IVa, Editura Agora, Tg. Mureş, 1999.

11. Wilkinson, B., „Computer Architecture”, Second Edition, Prentice Hall Europe, 1996.


Recommended