Sunteți pe pagina 1din 78

Caracteristicile sistemelor de prelucrare digital a

semnalelor .

Majoritatea aplicaiilor de procesare a semnalelor ( Digital Signal Processing - DSP)


necesit o prelucrare n timp real cu o intrziere minim ntre momentele de timp ale achizitiei
semnalului de intrare i generarea semnalului de iesire. Pentru aceste aplicaii 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 snt caracterizai de paralelism n ceea ce privete
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 / ieire
i procesorul de control.
n structur pot exista mai multe unitti 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 unittile de prelucrare. Acest
lucru este valabil att pentru procesoarele de semnal nou create ct 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 ieire (filtrare de band, conversii, stocare a datelor, protocolul de comuniie cu
exteriorul).
Memoria este caracterizat prin: capacitatea de stocare a datelor, lrgimea cuvntului
de date, modurile de adresare a datelor, timpul de acces).

Intrare

Procesor
I / O

Procesor
de control

Iesire

Retea de
Unitate de

Memorie
transfer

prelucrare

a datelor

Figura 1 Procesor de semnal generic


Reeaua de transfer a datelor asigur transmiterea datelor ctre toate unittile
funcionale ale procesorului de semnal (transmisie de date, rutarea datelor, controlul asupra
erorilor ).
Procesorul de control este caracterizat de: capacitatea de stocare a instruciunilor,
viteza de execuie , setul de instruciuni.
Unitatea de prelucrare asigur efectuarea operaiilor de baz (operaii aritmetice,
logice) i este caracterizat de: timpul de execuie a intruciunilor, gradul de flexibilitate.
Funciile procesorului de control snt: interpretarea comenzilor primite din exterior,
controlul transferului de date, controlul unitilor de prelucrare i controlul interfeelor de
intrare-ieire.
Aceste funcii pot fi distribuite i ctre alte elemente ale sistemului. De exemplu
unitile de prelucrare au posibilitatea de a controla local transferul datelor i funciile
aritmetice - logice proprii.
Procesorul de control poate efectua prelucrri complementare aplicaiei DSP (de uz
general care nu au cerinte critice de timp : monitorizare , ntreinere etc. )
Resursele procesorului de control includ capacitatea de stocare a datelor i
instruciunilor, setul de instruciuni, capabilitatea aritmetic.
Elementele de prelucrare execut algoritmul DSP n timp real . Aceste elemente snt
specializate n efectuarea prelucrrilor specifice algoritmilor DSP.

Reeaua de transfer a datelor reprezint un bloc esenial n sistem; acest bloc poate
avea influene majore n viteza de prelucrare global a sistemului.
Resursele reelei de transfer a datelor includ: cile de rutare a datelor, lrgimea
busurilor de transfer a datelor, viteza de transmisie, posibilitatea de transfer pe blocuri de date.
Cerinele de control a retelei de transfer includ protocoalele de comunicaie i modurile de
adresare. Numrul de busuri reprezint o problem care diminueaz capacitatea de transfer a
datelor ntre blocurile din figura 1; nu este convenabil realizarea unei interconectri totale
ntre blocuri datorit complexittii tehnologice i a necesitii introducerii unor blocuri
suplimentare de arbitare a cererilor de acces multiple.
Resursele memoriilor includ: capacitatea de stocare , lrgimea cuvintului de date,
modurile de adresare i controlul general al memoriei ( decodificare , comenzi ).
Uniti 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.
Notaii:

Acc - acumulator
Mux - multiplexor

n acest caz inmulirea se realizeaz prin deplasri i adunri (conform unui algoritm
secvenial 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 nmuliri rapide. Timpul
de efectuare al unei sume de produs (nmulire i acumulare la suma anterior) este destul de
mare. Pentru mbunatirea performanelor acestei structuri se pot folosi n paralel nmultitorul
i sumatorul. Multiplicatorul se poate folosi n mod secvenial (se efectueaz cte 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 snt: efectuarea sumelor simple se face cu utilizarea
suplimentar a multiplicatorului (ceea ce mrete timpul de calcul) i efectuarea produselor
multiple se face cu utilizarea suplimentar a sumatorului.

Figura 3 a)

b) structura paralel (figura 3 b)

Figura 3 b)
Avantajul acestei structuri este posibilitatea efecturii unor calcule, de tip x.y+z, cu
vitez foarte mare datorit faptului ca sumatorul i multiplicatorul pot lucra paralel.
Dezavantajele structurii snt: numrul de busuri interne mare; pentru reducerea
numrului de busuri se alege varianta transferurilor pe busuri comune sumatorului

multiplicatorului: paralelismul nu mai este total.


Unitatea de control a unui procesor de semnal poate fi realizat microprogramat
utiliznd tehnica pipe-line pentru a mari viteza de lucru. n figura 3.c este ilustrat realizarea
unei uniti de control microprogramate fr pipe-line. Modificrile introduse prin tehnica
pipe line snt ilustrate n figura 3d.
Notaiile utilizate snt:
tsecv - timp de calcul al adresei pentru memoria demicroprograme
tacc - timp de acces la memoria de microprograme
tPR,tSR - timp de ncrcare a registrelor R1,R2
tstat - timp de stabilire a strii unittii aritmetice (n avans)
tc - timp de calcul efectiv (operaii interne n unitatea aritmetic)
n timp ce unitatea aritmetic execut instructiunea (n) secventorul calculeaz deja
adresa pentru instructiunea (n+1) folosind ca informaie instructiunea (n) i starea unitii
aritmetice de la instructiunea (n-1).

Figura 3 c)

Figura 3 d)

Exemple de arhitecturi de procesoare de semnal

Aceast seciune prezint cteva 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 bii cu acumulare pe 40 de bii
-adresare direct, indirect, circular, bit-reverse

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
-operaii aritmetice pe 56 biti , logice pe 24 bii
-32 niveluri de ntrerupere

TMS 320C2X / 320C5X (Texas Instruments)

Caracteristici
-ciclu masin 20 ns
-memorie on chip
-porturi seriale
-stiv hardware
-aritmetic n virgula fix
-ALU pe 32 bii
-nmultitor 16 x 16 biti cu acumulare pe 32 biti

Comentarii despre arhitecturi


DSP 56000/56001
Seciunea aritmetic
-Unitate aritmetic rapid pe 24 (n)/48 (out)/56 (ext) bii
-Execut operaiile ALU ntr-un singur ciclu
Prile componente snt:
-4 registre de 24 bii
-unitate MAC (nmultitor paralel) - ntr-un singur ciclu
- 2 acumulatoare de 48 bii
- 2 registre de extensie de 8 bii
- 1 shifter (1 poziie)
- 2 circuite de shiftare/limitare (pentru saturarea aritmetic); de exemplu:
operandul surs este 01.100 (+1.5), destinaia are 4 bii deci rezult suma 1.100 (bitii
LSB) adic (-1.5) rezultat eronat! Pe 4 biti a aprut o depire 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 anunate anterior (nmultiri multiple
i adunri multiple - vezi schema b) de unitate aritmetic). Dup nmultire se poate face
rotunjire.
Concluzii:
-Unitatea aritmetic este destinat efecturii 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 condiionali.

10

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 bii
-Calculul adresei se face astfel: adresa = (R+N) mod M
Secvenorul de program
Funciuni:
-generarea adresei de instruciune (prefetch)
- decodarea instruciunii
- 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 intruciuni de la adresa fix apoi se revine n
programul ntrerupt n mod automat fr instructiunea de revenire din intrerupere -RETI)
Exista stiv HW (extensibil SW). Instructiunile snt de tip "pipe-line" cu 3 nivele
(fetch,decodificare,executie); acest lucru permite execuia ntr-un singur ciclu a majoritii
instruciunilor.
TMS 320C25
Seciunea 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;
- ieirea multiplicatorului;

11

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 operaiile ALU se desfsoar ntr-un singur ciclu;


- nu toate operatiile ALU se desfsoar cu prefixul REP (de repetare);
- nu are nmulitor/acumulator dedicat pentru MAC;
- nmultirea nu se desfsoar ntr-un singur ciclu:
- mai intii se incarc registrul TR al MPY;
- apoi se efectueaza nmulirea cu un operand din memoria de date sau de
program.
- nmulirea cu acumulare se efectueaza ntr-un singur ciclu .
Shifter-ul efectueaz deplasri cu:
- 0-16 bii la stnga/dreapta (naintea efecturii operaiilor aritmetice);
- 6 bii la dreapta (pentru protecie overflow) sau 1-4 bii la stnga dup
efectuarea unei nmultiri ( dup nmulitor).
- 0-7 biti la stnga dup acumulator (nainte de stocarea n memorie, dup
efectuarea operaiilor aritmetice).
Adresarea datelor
- folosete 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 bii (un registru de pagina memoreaza pagina
curent de date);
- numrul registrului auxiliar care conine adresa este stocat n ARP (auxiliar register
pointer) citit prin ARB (auxiliar register buffer);
- registrele auxiliare pot fi utilizate pentru stocarea unor date;

12

- exist modul bit-reverse.


Secventorul de program
- instructiuni cu "pipe-line" (instructiunile snt "citite" cu adresa generat de "prefetch
counter" i snt depuse n "coada de instruciuni"). n funcie de execuia intruciunii curente
mai multe instruciuni pot fi depuse n coada de instruciuni (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 condiiei de terminare a
buclei).
ADSP 2101
Seciunea aritmetic:
- incrcare a 2 operanzi ( pe busul de date al memoriei de program PMD i pe busul de
date al memoriei de dateDMD);
- instruciuni ntr-un singur ciclu;
- instructiuni condiionale;
- structur foarte flexibil;
- MAC cu rotunjire aritmetic;
- deplasri cu 0-32 poziii stnga / dreapta ntr-un singur ciclu;
Seciunea 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;

13

- adresare liniar, modulo, bit-reverse;


- adrese pe 14 bii - 16k cuvinte de memorie.
Secvenorul 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 strii
procesorului);
- bucle DO UNTIL implementate hardware (snt permise pn la 4 bucle nlanuite,
exist o stiv hardware pentru contorul de iteraii i stiv hardware pentru salvarea condiiei
de terminare a buclei - 4 niveluri fiecare);
- nu apar cicluri suplimentare (nici la bucle nici la salturile condiionate);
- este usor de calculat timpul de execuie al programului.
Comparaia ntre cele trei arhitecturi este centralizat n tabelele urmtoare:
Posibiliti aritmetice

ADSP 2101

TMS 320C50

DSP 56000/1

Toate operaiile ALU


ntr-un singur ciclu

DA

NU

DA

Multiplicarea ntr-un
singur ciclu

DA

NU

DA

MAC ntr-un singur


ciclu

DA

DA (n mod
repetitiv)

DA

Shiftare ntr-un
singur ciclu

0-32 biti
stinga/dreapta

0-16 biti
0-56 sau 0-24b
stnga/dreapta stnga/dreapta

Protecie la overflow
a acumulatorului

8 biti

1 bit

8 biti

DA

nu are mod
mixt

nu are mod
mixt

Multiplicri mod cu i
fara semn i mixt

14

Normalizri ntr-un
singur ciclu

DA

Posibiliti de adresare a datelor

ADSP2101

NU

DA

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

DA

numai cu
pas 1

DA

ADSP 2101

TMS 320C50

Buffere circulare cu pas


variabil (+/-)
Posibilitati de control
al programului
DSP56000/1
Adncimea stivei PC

16

32x16 (globala
PC,bucle, etc.)

Bucle nlantuite

NU

DA n limita
stivei globale

Instructiuni aritmetice
condiionale

DA

NU

NU(numai
de transfer i salt)

DA

NU

NU (cu excepia
buclelor hardware)

DA

NU

Salturi i bucle fr
cicluri suplimentare
Salvare automat a
strii mainii la
ntrerupere
Vitezele de lucru ale
celor 3 procesoare DSP

(*)
DSP 56000

(*)
TMS 320C25

DA

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

15

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. Totui 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 cerinele
impuse de algoritmul DSP .
Algoritmii de compresie i decompresie utilizai n dispozitivele de eantionare
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 totui
situaii n care o gam dinamic mare este necesar (de exemplu filtrarea adaptiv i
prelucrarea imaginilor). De asemenea o gam dinamic mare permite obinerea unui raport
semnal / zgomot mare (de exemplu pentru recunoaterea 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 unitti de prelucrare ( MAC, ALU, SHIFTER) conectate n parelel.
Busul de date este de 32 bii ( extins la 40 bii ), iar busul de instructiuni este de 48 bii.
Unitatea MAC poate opera att n virgul mobil ct i n virgul fix, n ceea ce
privete nmulitorul. Registrul de acumulare al unitii MAC este de virgul fixa. Utiliznd ca
registru acumulator orice registru de virgul mobil se pot efectua operaii de tip suma de
produse ( cu ajutorul unor instruciuni multifuncie ) .
Se menin ca principiu toate caracteristicile

familiei de procesoare ADSP 2100

(implementate diferit ) i se adaug noi faciliti pentru realizarea unor structuri hardware i a
unor programe mai simple i mai flexibile.
16

Tendina 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
urmtoarele:
- memorie intern SRAM ( configurabil ca memorie de program sau ca memorie de
date)
- un procesor de intrare / ieire
- interfat cu un calculator gazd
Procesorul de intrare / ieire are structura din figura 5.

Memorie
DAG1

Cache

DAG2

JTAG
FLAG
Secventor
de program

PMA

Timer
(24)
(32)

DMA
PMD
DMD

Multiplicator
FX/FP cu
acumulator FX

(48)
Interschimbare
(40)

Registre

Shifter

ALU
FX/FP

FX / FP

Figura 4. Arhitectura procesorului de semnal ADSP21020

17

Controler
DMA
Registre

Porturi
seriale
Porturi
link

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


Interfaa cu calculatorul gazda permite conectarea procesorului ADSP 21060 cu
procesoare de uz general standard pe 16 sau 32 biti cu hardware adiional 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 comunicaia 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 instruciune 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 performanele pentru fiecare bloc funcional din aceasta
arhitectur (cum ar fi unitatea aritmetic, unitatea de adresare i secvenorul 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 urmtoarele:

18

1. Aritmetica rapid i flexibil


Un procesor de semnal trebuie sa permita calcule ntr-un singur ciclu (multiplicri,
multiplicri i acumulri, deplasri, operaii 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 protecia la depirile aritmetice care apar n decursul sumelor pariale (de
exemplu efectuarea calculelor pe 40 bii cu 8 biti de extensie a bitului de semn).
3. ncrcarea a 2 operanzi ntr-un singur ciclu (din memoria interna sau externa)
n calculele cu sum de produse (convoluii numerice) trebuie ncrcati 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
execuie (de prelucrare) i se simplific implementarea algoritmului.
5.Bucle hardware i salturi condiionate fr cicluri suplimentare ("zero overhead
")
Algoritmii de prelucrare snt n mod natural repetitivi i pot fi exprimai simplu prin
bucle de program. Secventorul de program trebuie s permit implementarea buclelor i a
salturilor conditionate fr ciclii main suplimentari datorai testrii condiiei de terminare a
buclei sau testrii condiiei de salt; aceasta conduce la performane 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 implementai de procesor.
Procesorul de semnal nu trebuie sa aib un bloc de control centralizat deoarece
majoritatea grafurilor DFG pot fi gndite cu prelucrri paralele ( astfel ncit fiecare unitate de

19

prelucrare sa fie utilizat n paralel cu alte uniti - acest lucru este posibil dac graful
aplicaiei 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 operaia specific ); blocul
de control centralizat se distribuie ctre fiecare unitate de prelucrare.
n funcie de complexitatea aplicaiei se poate opta pentru una din formele de procesor
de semnal prezentate anterior ( pipe-line , vectoriale , matriciale , paralele). Apar ins
probleme n ceea ce privete interconectarea elementelor funcionale n cadrul acestor
procesoare ( sincronizare, comunicaie ).
Pentru aplicaiile specifice n telecomunicaii ( cu excepia aplicaiilor 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 (timeline) i organizate dup date ( data-driven).
Pentru arhitecturile organizate n timp execuia fiecrei operaii se realizeaz
ntr-un punct specificat al secvenei de prelucrare. Deoarece prelucrarea este modificat n
timp n sensul tergerii unor operaii sau inserrii unor operaii noi n secvena de prelucrare
rezult algoritmi de planificare i distribuire a operaiilor destul de complexi , ceea ce necesit
un timp de execuie mare; aplicaia poate s nu mai fie de timp real.
Arhitecturile organizate dup date preiau datele de intrare ntr-o coada de intrare ;
apariia datelor n cozile de intrare determin planificarea i distribuirea operaiilor ;
rezultatele sint plasate ntr-o coad de iesire. Daca dimensionarea cozilor este corect
caracterul de aplicaie de timp real se menine chiar i pentru secvene de operaii complexe.
n procesorul de semnal poate apare o intirziere ntre momentul n care unitatea de
prelucrare este pregatit de operare i momentul cnd ncepe execuia operaiei. Aceast
ntrziere apare n mod aleator datorit faptului c blocul de control este dinamic.

20

ELEMENTE DE GESTIUNE A MEMORIEI


De regul la microprocesoarele de 8 bii, adresa generat i depus pe magistrala extern de adrese
este folosita direct n adresarea unei locaii de memorie sau a unui dispozitiv de I/O. ncepnd cu
microprocesoarele de 16 bii apar noiunile de adres logic i adres fizic. Adresele generate de un
program sunt considerate adrese logice i totalitatea acestora formeaz spaiul adreselor logice. Totalitatea
adreselor ce corespund memoriei (i/sau dispozitivelor de I/O) formeaz spaiul adreselor fizice. Cele 2
spaii, al adreselor logice i fizice, pot s fie egale sau inegale. Ca urmare, trebuie s existe un mecanism de
conversie a adreselor, de translatare din adrese logice n adrese fizice. La microprocesoarele Intel din seria
x86 mecanismul de translatare este inclus pe acelai substrat de siliciu cu microprocesorul. La unele din
microprocesore (ca de exemplu Motorola MC68000) mecanismul de translatare din adresele logice n cele
fizice 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 este
vorba de selecie, adresare, alocare de spaiu n memoria principal, folosesc un ansamblu de resurse
hardware i software, operaiile executate de acestea fiind incluse n noiunea general de management al
memoriei. Administrarea ntregii memorii (de pe toate nivelurile ierarhice) a calculatorului, incluznd i
modalitile de partiionare logic i adresare n spaiul adreselor logice (L) i n spaiul de memorare (M,
adrese fizice) se face cu ajutorul unei uniti hardware pe care o notm n continuare MMU (Figura 1).
Cnd un program trebuie rulat (lansat n execuie), el este mai nti adus din memoria auxiliar nmemoria
principal (n ntregime sau parial).
Pentru MMU se impun urmtoarele cerine de baz:
1. s realizeze translatarea adreselor i s susin alocarea dinamic a memoriei
nainte ca un program s fie executat, este necesar ca acestuia s i se aloce un spaiu n memoria
principal (spaiu de adrese n memoria fizic existent n calculator). Dac aceast atribuire de spaiu
(adrese) se face doar la ncrcarea programului n memoria principal, procedeul este numit alocare
static i prezint dezavantajul c adresele de ncrcare sunt fixe. Alocarea dinamic a memoriei se
caracterizeaz prin atribuirea spaiului necesar programelor, sau proceselor, n timpul execuiei acestora.
Adresa la care se ncarc programul n memoria principal nu mai este fix, ea putnd fi modificat, la
momente de timp diferite.
(acces
direct)

date

UCP

control

MMU

Cache

(acces
direct)

MP

(acces
indirect)

MA (auxiliara)

adrese logice
adrese fizice

Figura 1. Organizarea ierarhica a memoriei


Se folosesc trei procedee de translatare a adreselor logice n adrese fizice toate bazndu-se pe o divizare a
spaiului adreselor logice n blocuri de adrese logice continue, dup cum urmeaz:
segmente de lungime arbitrar;
pagini (n spaiul adreselor logice) i cadre-pagin / blocuri (n cadrul adreselor fizice),
de lungime fix;
combinaii de adresare segmentat-paginat.

Mecanismul de translatare, indiferent c se folosesc pagini sau segmente, se produce n faza de execuie a
programului i include printre altele, un tabel de translatare prin care se face corespondena ntre adrese
logice i adrese fizice (principiul este prezentat n fig. 2).
Memoria
principal

Tabel de
translatare

Adresa logic
de la UCP
M
L

Adresa
fizic
M

Cuvnt
adresat

Figura 2. Principiul tehnicilor de translatare a adreselor


De la microprocesor se recepioneaz adresa logic L. Dac elementul adresat nu se gsete n memoria
principal, atunci registrul (de adres) L va conine adresa din memoria extern unde se gsete
elementul respectiv i el va fi adus de rutine ale sistemului de operare n memoria principal, la o adres
fizic a crei valoare M se nscrie n registrul de adres L din tabela de translatare. Daca elementul
adresat este n memoria principal rezult c adresa fizic este M. Acest mecanism este totui ineficient,
cci tabela de translatare are dimensiunile egale cu ale memoriei principale. Pentru micorarea
dimensiunii tabelelor se folosete divizarea spaiului logic n segmente / pagini, iar referirile se fac doar
la nivelul de adres logic de bloc. Trebuie menionat c dac sunt lansate dou procese n execuie,
fiecare cu spaiul su de adrese logice, exist dou tabele de translatare spre memoria principal.
Sistemul de operare va reactualiza coninutul tabelei de translatare ori de cte ori va avea loc o relocare
(schimbare de poziie n spaiul adreselor fizice) a programelor n memorie.
2. s susin mecanismele de implementare ale memoriei virtuale
Mecanismul memoriei virtuale permite programelor s fie executate chiar dac numai o parte din
instruciunile lor se ncarc n memoria principal, iar restul se gsesc n memoria auxiliar de tip
disc magnetic. Adresele logice sunt numite adrese virtuale, n cazul implementrii memoriei
virtuale, pentru c nu exist fizic n memoria principal ci ele se gsesc n memoria auxiliar.
3. s poat furniza protecie i securitate pentru memorie
Cerina se refer la protecia informaiei, la alocarea de drepturi de acces la zone din memoria
principal i la zone din spaiul adreselor logice, (protecie la citire, scriere, tergere, copiere,
execuie). Se protejeaz memoria disponibil alocat programelor de sistem i programelor
utilizator, asigurndu-se securitatea informaiei (acces limitat la informaii), prin controlul accesului
la resursele sistemului.
Aa 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 spaiul segmentat al
adreselor logice. De exemplu: Intel x86, Pentium, Zilog Z800, Z8000)
b) MMU este construit separat de UCP, variant aleas la microprocesoarele cu spaiu 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 obinuit de la 0 i
avanseaz liniar. Memoria poate fi apoi structurat prin software, la nivelul translaiei de adrese. n cazul n
care organizarea memoriei este segmentat, programele nu sunt scrise ca secvene liniare de instruciuni i
date, ci ca segmente separate de cod, date, sau stiv. Spaiul adreselor logice este spart n mai multe spaii cu
adresare liniar, fiecare cu lungime diferit, definit de compilator sau de programator. O adres logic
efectiv este calculat ca o combinaie ntre numrul segmentului (care indic adresa de baz a unui bloc de
memorie) i un deplasament (offset) n cadrul segmentului.

n general schemele de adresare liniar sunt mai potrivite pentru manipularea structurilor mari de
date, n timp ce segmentarea faciliteaz programarea, permind programatorului s structureze programele
n module segment. n plus adresarea segmentat simplific protecia i relocarea obiectelor n memorie.
Segmentarea faciliteaz gestiunea memoriei n sistemele de calcul multiuser, multitasking.
TRANSLATAREA ADRESELOR
Indiferent 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 de
asemenea util pentru protejarea informaiei din memorie. Translatarea de adrese este un proces atribuire i
organizare (mapare) a adreselor logice n adrese fizice de memorie. Mecanismul de translatare mparte
memoria principal n blocuri (cadre pagin). Aa cum am amintit mai sus se folosesc 2 scheme de
translatare:
(1) translatare prin paginare
(2) translatare prin segmentare
n sistemele paginate, memoria principal este mprit n blocuri de lungime fix n timp ce n
sistemele segmentate blocurile sunt de lungime variabil.
Paginile au n general lungimi de ordinul 256 - 4096 cuvinte, n timp ce segmentele cu lungimea definit de
compilator sau programator au 64 K-cuvinte, sau mai mult. n sistemele cu multiprogramare i timesharing1, mai muli utilizatori folosesc aceleai programe cum sunt editoare, compilatoare, programe
utilitare, biblioteci de programe etc. Att sistemele cu paginare ct i cele cu segmentare permit mecanisme
de partajare, ntre procesele utilizator, a paginilor, respectiv a segmentelor. Aceste mecanisme se bazeaz pe
intrri n tabele de mapare de pagin (sau segment) n care intrrile diferitelor procese indic ctre acelai
bloc din memoria principal. Combinaia ntre segmente i pagini presupune c un segment conine una sau
mai multe pagini virtuale. Mecanismul de segmentare administreaz spaiul virtual, mprind programele n
segmente, n timp ce paginarea este destinat administrrii memoriei fizice care este mprit n cadre
pagina (blocuri). Vom descrie n continuare mecanismele folosite pentru maparea segmentelor i paginilor.
Maparea adreselor folosind pagini
n cazul paginrii, implementarea tabelului pentru maparea adreselor este simpl pentru c
informaia din spaiile de adresare i memorare este divizat n blocuri de dimensiune fix. Memoria fizic
este mprit logic n blocuri de aceeai dimensiune (64-4096 cuvinte fiecare). Termenul pagin se refera la
blocuri, de aceeai dimensiune, de adrese din spaiul de adresare. De exemplu, presupunem un calculator
care are 20 de bii de adres i folosete doar 32KB n memoria principal (memorie implementat fizic prin
circuite de memorie); dac o pagin, respectiv un bloc, au dimensiuni egale cu 1 kB, atunci spaiul de adrese
e divizat n 1024 pagini, iar spaiul de memorie e divizat n 32 de blocuri.
Se consider c i programele sunt mprite n pagini. Poriuni din programe sunt mutate din memoria
auxiliar n memoria principal n nregistrri egale cu mrimea paginii. n loc de bloc de memorie e folosit
uneori termenul de cadru pagin (page frame).
n cazul maprii prin paginare adresa virtual este reprezentat printr-un singur cuvnt de adres
mprit ntr-un cmp corespunztor numrului paginii (adresa paginii) i un cmp pentru deplasament. La
maparea prin segmentarea un singur cuvnt de adres nu mai este suficient; dimensiunea variabil a
segmentelor conduce la existena a dou cuvinte de adresare, n care primul indic numrul (adresa)
segmentului, iar cel de-al doilea deplasamentul n cadrul segmentului.
ntr-un calculator cu 2p cuvinte pe pagin, p bii sunt folosii pentru a specifica o adres de linie iar
cei mai semnificativi bii rmai n adresa virtual specific numrul de pagin. Fie de exemplu un sistem
simplu cu o adres virtual cu dimensiunea de 16 bii i pagini cu 4096 cuvinte. Pentru c o pagin are 212
cuvinte, cei patru bii mai semnificativi vor specifica una din cele 16 pagini, iar cei 12 bii mai puin
semnificativi indic adresa liniei n cadrul paginii.

time-sharing = partajarea timpului UCP

Numr
pagin

Numr linie

1000000000000001

Adresa virtual

Adres
tabel

0000

Tabel
pagini
de
memorie

0001
0010

11

0011

00

0100
0101
0110

01

0111
1000

10

1001
1010
1011
1100
1101
1110
1111

Registru bloc
de memorie

10

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

Bit
prezen

Adresa fizic
(real) de memorie
principal
10 000000000001

Memoria principal
00
01
10
11

BLOCK 0
BLOCK 1
BLOCK 2
BLOCK 3

Figura 3. Paginarea memoriei


Ca urmare maparea trebuie fcut doar de la un numr de pagin la un numr de bloc din memoria
principal, pentru c adresa liniei e aceeai pentru ambele spaii. Organizarea de principiu a tabelului de
mapare a memoriei ntr-un sistem paginat poate arta ca n figura 3.
n tabelul paginii de memorie, adresa conduce la numrul paginii, iar coninutul indic numrul
blocului unde pagina este stocat n memoria principal. Se observ c paginile virtuale 2, 3, 5 i 8 se afl n
memoria principal, n blocurile 3, 0, 1 i respectiv 2. Un bit de prezen adugat fiecrei locaii a tabelului
indic dac pagina respectiv a fost mapat n memoria principal (i s-a alocat spaiu i a fost transferat din
memoria auxiliar n memoria principal). Valoarea 0 a bitului de prezen indic c pagina nu este n
memoria principal. n exemplul dat, cei 4 bii ai adresei virtuale specific att numrul paginii ct i adresa
n tabelul paginilor de memorie. Coninutul tabelului este citit n registrul ce indic blocul de memorie. Dac
bitul de prezen este 1, numrul de bloc e transferat n registrul ce pstreaz adresa fizic din memoria
principal. Dac bitul de prezen este 0 rezult c adresa virtual se refer la un articol ce nu se gsete n
memoria principal. n acest caz, se genereaz o cerere (n forma unei ntreruperi software, de tip eroare de
pagin2) ctre sistemul de operare (SO) pentru a aduce pagina cerut din memoria auxiliar n memoria
principal, 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, cci
tabelul are multe locaii goale. Dac presupunem un calculator cu spaiul de adrese de 4 GB (232), cu pagini
de memorie de 32 KB (215), iar spaiul memoriei fizice este 32 MB (225) rezult 128 K-pagini virtuale de
memorie i 1024 blocuri (1 K-blocuri). Conform principiului din figura 6.24 tabelul de translatare ar avea
2

page fault = eroare de pagin

Sistemul de memorie

151

131071 (217 = 128 K) linii i doar 1024 locaii ar fi ocupate (cu bit de prezen 1), restul fiind goale,
neutilizate. O soluie a acestei probleme o constituie folosirea unei memorii asociative, ca n figura 4,
(tabel asociativ de pagini de memorie) cu numr de locaii egal cu numrul de blocuri din memoria
principal.
Adres logic

Numr pagin
1000

Numr linie

Registru argument

1111

00

Registru masc

0010

11

0011

00

0101

01

1000

10

Numr pagin

Numr bloc

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


n fiecare locaie de memorie se stocheaz numrul paginii virtuale i numrul corespunztor al
blocului de memorie principal alocat.
Adresa logic se compar combinaional cu coninutul tabelului asociativ, doar pentru poziiile
binare ce corespund la 1 logic n registrul de mascare, deci n figura 4, doar pentru cmpul de adres al
numrului de pagin virtual. Dac la apelarea unei pagini virtuale, aceasta nu este mapat n memoria
principal, operaia de adresare este o ratare (miss) i evenimentul este rezolvat printr-o rutina de servire a
sistemului de operare care aduce pagina respectiv din memoria auxiliar. i acest tabel asociativ de
translatare poate avea dimensiuni mari uneori. De aceea se folosesc tabele asociative de mare vitez la care
numrul liniilor este mai mic dect numrul de blocuri (cadre pagin) i n care se salveaz numai o parte
din maprile realizate. Acest registru asociativ este numit TLB (Translation lookaside buffer) i este descris
mai jos.
Mapare prin segmentare
La acest tip de mapare spaiul adreselor logice este mprit n segmente, care spre deosebire de
pagini, nu au o dimensiune fix. Segmentele sunt spaii de adrese continue (liniare), care includ programe
sau poriuni din programe cu atribute comune. Mecanismul de translatare este prezentat n schema de
principiu din figura 5.
Spre deosebire de operaia de paginare, la segmentare nu se mai face concatenarea (alturarea)
adresei de deplasament (din adresa logic) la adresa fizic. Aici adresa de deplasament este adunat cu
adresa fizic a segmentului (adresa sa de baz) citit din tabelul de translatare al segmentelor, specific unui
anumit proces.

Nr.segment

Offset

Adres fizic
segment

Adres logic

Adres liniar
(fizic)
Adresa de baz a
segmentului

Tabel de translatare
a segmentelor

Figura 5: Segmentarea memoriei

Segment

Noiuni privind protecia memoriei


Inventarea multiprogramrii, la care un procesor este partajat ntre mai multe programe aflate n
execuie, a condus la noi cerine privind protecia ntre programe. Mecanismele de protecie sunt strns
legate de implementarea memoriei virtuale.
Multiprogramarea conduce la conceptul de proces. Un proces este constituit dintr-un program aflat
n execuie plus orice stare necesar pentru continuarea rulrii sale. Partajarea timpului (time-sharing) este
o variant a multi-programrii care partajeaz UCP i memoria ntre diferii utilizatori simultani, iar
mecanismul de partajare d iluzia c toi utilizatorii au propriile maini. 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 proces
sau comutare de context.
Un proces trebuie s se execute corect indiferent dac se execut continuu de la start pn la
terminare, sau dac este ntrerupt n mod repetat pentru a se face comutarea ctre alte procese.
Responsabilitatea meninerii comportrii corecte a proceselor cade att n sarcina resurselor hardware, care
asigur salvarea i restaurarea corect a proceselor ce ruleaz pe UCP ct i n sarcina sistemului de operare
care trebuie s garanteze c un proces nu interfereaz cu celelalte i c un proces nu poate modifica datele
altor procese. Aceasta nseamn asigurarea proteciei datelor de ctre sistemul de operare. n afar de
protecie, sistemul de operare permite, n anumite condiii, i partajarea codului i a datelor ntre diferite
procese pentru salvare de spaiu de memorie prin reducerea numrului de copii de informaii identice.
Cel mai simplu mecanism de protecie este constituit de o pereche de registre care verific fiecare
adres, astfel nct s nu se permit accesul n afara unor limite alocate n spaiul de adrese. Aceste registre
sunt numite registru - baz i registru limit. O adres este valid dac se ncadreaz ntre cele dou adrese
coninute n registre:
Baz Adres Limit
La unele sisteme adresa este considerat ca un numr fr semn, care se adun ntotdeauna la o adres de
baz, 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 protecie nu ar putea funciona. Modificarea respectivelor registre este permis doar
sistemului de operare, pentru asigurarea proteciei ntre procese.
Pentru asigurarea proteciei sistemul de operare (SO) are trei responsabiliti principale:
1. S furnizeze cel puin dou moduri de execuie indicnd 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 n
diferite feluri: proces kernel (nucleu), proces supervizor, sau proces executiv.
2. S prevad o poriune a strii CPU pe care procesul utilizator o poate doar citi, dar nu o poate scrie.
Aceasta include registrele baz / limit, indicatori (bii) pentru moduri utilizator / supervizor i
indicatori pentru validare / invalidare evenimente de tip excepie.

Capitolul 6

158

3. S prevad un mecanism prin care UCP poate trece din mod utilizator (user) n mod supervizor i
viceversa. Primul sens de trecere este specific apelurilor sistem (system calls apeluri de servicii
oferite de SO), implementate ca instruciuni speciale care transfer temporar controlul la o locaie
precis din spaiul de cod al supervizorului. Registrul contor de program corespunztor locului unde
se face un apel sistem este salvat, iar UCP trece n mod supervizor. Revenirea la modul utilizator este
similar cu cea produs la o revenire din procedur.
Adresele de baz i limit constituie minimul unui sistem de protecie. Mecanismul memoriei virtuale
ofer alternative mai complexe i mai sigure dect modelul simplu prin baz i limit. Aa cum s-a vzut,
adresele virtuale sunt translatate n adrese fizice pe baza unor tabele de translatare. Acest mod de mapare,
prin tabele, ofer posibilitatea introducerii de informaii pentru controlul erorilor de program (intenionate
sau nu) care ncearc s treac peste mecanismele de protecie. Cea mai simpl cale este introducerea unor
indicatori de permisie pentru fiecare pagin sau segment. De exemplu pot exista indicatori care s permit
doar citire, doar execuie, sau care s interzic accesul unui proces utilizator la anumite pagini / segmente.
Fiecare proces poate face adresare doar ctre paginile proprii de memorie, procesul utilizator neavnd
dreptul s modifice tabelele sale de pagin / segment.
Protecia poate fi extins chiar pe mai mult dect dou niveluri (nu doar utilizator i supervizor),
privite ca i inele concentrice de protecie, n centru gsindu-se nivelul de protecie cel mai nalt. n aceast
ierarhie de niveluri de protecie un program poate accesa doar date de pe nivelul su de protecie i de pe
nivelurile inferioare n ierarhie. Poate face ns operaii de apelare (call) a serviciilor sistemului de operare,
servicii oferite de rutine ce se afl pe niveluri superioare de protecie. Adesea se face comparaia, n
oarecare msur nefericit, cu clasificri de tip militar ale sistemelor: top secret, secret, confidenial i
neclasificat. Programele utilizator (civilii n exemplul militar) au doar dreptul de acces la nivelul de
protecie cel mai de jos: ne-clasificat. La sistemele de protecie de tip inele concentrice, deosebirea fa de
exemplul anterior, este c se pot face apelri la rutine situate pe niveluri superioare de protecie, dac exist
chei de acces ctre acele niveluri. Poate exista dreptul de apelare a unor servicii ale sistemului de operare,
prin mecanismul de comutare a proceselor.
Aa cum am pomenit i mai sus, informaia de protecie este setat n registre speciale ataate fiecrei
intrri n tabelele de translatare, registre setate doar de rutine de control al sistemului de operare. Drepturile
de acces pot fi de tipul:
a. Atribuirea de privilegii complete de citire i scriere. Aceste drepturi se atribuie programului atunci cnd
execut propriile instruciuni.
b. Read-only (protecie la scriere). Protecia la scriere este util la operaiile de partajare a unor rutine de
sistem (utilitare, biblioteci, etc.).
c. Execute only (program protection). Protejeaz programul la copiere. Restricioneaz referirea la
segment doar n timpul fazei de fetch a instruciunii i nu i n timpul fazei de execuie. Asta permite
utilizatorului s execute instruciunile segmentului de program, dar nu permite citirea instruciunilor ca
date cu scopul de a copia coninutul lor.
Sistemul de protecie a memoriei, n sensul celor spuse mai sus, se construiete pentru:
(a) memorie (detecteaz orice eroare de adresare nainte ca aceasta s creeze erori accidentale sau
voite);
(b) programe (previne ca programele utilizator (de aplicaii) s fac modificri ilegale n rutinele SO);
(c) utilizatori (programele utilizatorilor ntre ele);
(d) securitate informaie (acces limitat la informaiile unde utilizatorul nu are drept de acces).

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.

REG

DATE

IN

DATE

IN

SEL

SEL

a) Port de intrare fara memorie

b) Port de intrare cu memorie

REG

DATE

OUT
SEL
LD
c) Port de iesire

Figura 1. Porturi de intrare/iesire simplificate

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.

DATE

PI_0

PI_1

PI_2

PI_n

IORD/

A0

A1

A2

An

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.

DATE

PO_0

PO_1

PO_2

PO_n

IOWR/

A0

A1

A2

An

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

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

1
1
1
1
1
1

0
0
0
0
0
0

1
1
1
1
1
1

0
0
0
0
0
0

1
1
1
1
1
1

0
0
0
0
0
0

0
0
0
0
0
0

0
0
0
0
1
1

0
0
1
1
0
0

0
1
0
1
0
1

IOR /
IOW
0
0
0
0
0
0

AEN

CS

Adresa

Port

0
0
0
0
0
0

CS0
CS1
CS2
CS3
CS4
CS5

2A0
2A1
2A2
2A3
2A4
2A5

PORT_0
PORT_1
PORT_2
PORT_3
PORT_4
PORT_5

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


port din intervalul 2A0 H 27. 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

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).
Magistrale de sistem
(Date, Adrese, Control)

UCP=
UC+ALU

Memorie

Interfata de
intrare iesire
(I/O)

Dispozitiv
periferic

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

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).

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

Citeste starea portului


de intrare (Port_stare)

NU

DA
Port_stare =
READY ?

Bucla de asteptare activa

Citeste datele
(Port_data)

Stocheaza
datele

Incrementeaza
contor

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

DA

NU
Contor =
N?

Incheie
transferul

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.

Magistrale de sistem
(Date, Adrese, Control)

UCP
(slave)
HiZ
Controler
DMA
(DMAC)
(master)

Memorie

Bus Grant

Dispozitiv
periferic

Bus Request
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.
UCP

Dispozitiv periferic

DMAC
REQ

master

BR
ACK
slave
BG
master

slave

Transfer de date DMA


Invalideaza BR
master

slave

Figura 4. Diagrama de operare a transferului DMA

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 05 V in
gama 012V 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.

Convertor
0-5V / 0 12V

Transmitator

Convertor
0-12V / 0 5V

Receptor

a) Utilizarea convertoarelor de linie

1 0 0

1 1

0 0

1 1

1 1 0

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.

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.

Receptorul asteapta semnalul RDY dupa care preia datele de pe magistrala de


date. Acest protocol este ilustrat in figura 9.
Transmitator
Receptor
Date
Port de
intrare

Port de
iesire

RDY

0
RDY

Data
1

RDY
2
Transmitator

Date

Receptor

Data valida

RDY

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.

Transmitator

Receptor

Date

Port de
intrare

Port de
iesire

REQ

0
REQ

REQ
1

Data
2
Transmitator

Receptor

REQ
Date

Data valida

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.

Transmitator

Receptor

Date

Port de
intrare

Port de
iesire

RDY
ACK

0
RDY

Data
Genereaza
ACK

1
RDY

ACK

Asteapta
ACK

1
ACK

Transmitator
Date

Receptor

Data valida

RDY

ACK

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

10

Microarhitectura PENTIUM
Arhitectura Pentium a fost introdus de firma Intel pentru procesoarele IA-32.
Acest tip de arhitectur se regsete 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 nct, n medie, procesoarele
Pentium snt capabile s execute complet 3 instruciuni ntr-o perioad de tact.
Arhitectura Pentium utilizeaz o structur pipe-line cu 12 stagii.
Principalele caracteristici ale arhitecturii P6 snt urmtoarele:
1. Structura pipe-line a arhitecturii este divizat n 4 seciuni : memoria cache
(primul i al doilea nivel), ncrcare/decodificare (fetch/decode), unitatea de
execuie (inclusiv execuia instruciunilor out of order adic a
instruciunilor care nu urmeaz ordinea de la ncrcare ci se execut nainte de
instruciuni nccate anterior, dar care ateapt eliberarea anumitor resurse
pentru a fi ncheiate) i seciunea de asteptare (retirement) pentru
instruciunile completate care asteapta reasamblarea lor in fluxul normal de
instructiuni..
2. Exist dou nilele de memorie cache. Primul nivel ( 8ko de instruciuni i 8 ko
de date) este imediat lng structura pipe-line. Al doilea nivel (de dimensiune
256ko pn la 1Mo) este conectat direct cu procesorul printr-un bus de 64 de
bii.
3. Partea central a arhitecturii P6 este dat de mecanismul performant de
execuie a intruciunilor ( inclusiv a intruciunilor out of order) numit i
execuie dinamic. Execuia dinamic ncorporeaz trei concepte de procesare
a datelor:
-

predicia salturilor
analiza dinamic a fluxurilor de date i instruciuni
execuia speculativ

Predicia salturilor reprezint o tehnic modern pentru obinerea unei


performane ridicate n structurile pipe-line. Aceasttehnic permite procesorului s
decodifice instruciuni n afara buclelor de program pentru a ine ocupat tot timpul
structura pipe-line. Arhitectura P6 implementeaz un algoritm optimizat de predicie a
direciei salturilor.
Analiza dinamic a fluxului de date i instruciuni se realizeaz n timp real; se
determin dependena dintre date i registre i se detecteaz oportunitile pentru execuia
instruciunilor out of order.
Unitatea de execuie poate monitoriza simultan mai multe instruciuni i va
executa instruciunile n ordinea n care se optimizeaz utilizarea multipl a unitilor de
execuie ale procesorului, evident cu meninerea integritii datelor i a corectitudinii
programului. n acest mod se menin unitile de execuie ocupate ct mai mult timp chiar
atunci cnd apar dependene ntre instruciuni i situaii de cache miss (negasire a
informaiei dorite n memoria cache).

Execuia speculativ se refer la abilitatea procesorului de a executa instruciuni


n afara unei bucle condiionale care nu a fost nc rezolvat i n final de a produce
rezultatele n ordinea execuiei originale a fluxului de instruciuni.
Pentru a face execuia speculativ posibil, arhitectura P6 decupleaz fazele de
transmitere i execuie n raport cu faza de producere a rezultatelor finale.
Unitatea de execuie va analiza fluxul de date i instruciuni i va executa toate
instruciunile pregtite pentru aceasta ( cu toate resursele i datele disponibile).
Rezultalele vor fi stocate n registre temporare urmnd ca ulterior s fie asamblate
n mod corespunztor ordinii originale de execuie a fluxului de instruciuni.
Unitatea de ateptare (retirement ) va conine toate instruciunile care datorit
unor depeendene a datelor (operanzilor) sau a faptului c unitile de calcul necesare nu
snt disponibile (snt ocupate de alte instruciuni) nu pot fi executate sau completate.
Prin combinarea prediciei salturilor, analizei dinamice a fluxului de date i
instruciuni i a execuiei speculative, arhitectura P6 nltur constrngerea unei
secvenri lineare a instruciunilor ntre fazele tradiionale de ncrcare (fetch) i execuie.
Procesorul poate continua s decodifice i s execute instruciuni chiar dac exist mai
multe nivele de salturi n program. Implementarea prediciei salturilor i a
decodificatoarelor de instruciuni performante menin structura pipe-line plin. Pe de alt
parte execuia speculativ permite utilizarea, n paralel, a tutiror unitilor de calcul ale
procesorului. n final rezultatele temporare vor fi asamblate n aa fel nct s se
menin integritatea datelor i coerena 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.

Figura 2.1 Microarhitectura P6

Figura 2.2 Microarhitectura P6 cu 2 nivele de memorie cache

Arhitectura P4 (NetBurst Micro-architecture) reprezint mbuntire a arhitecturii P6


( IA-32).
Elementele principale ale arhitecturii P4 snt :
-

unitatea de execuie n ordine (in order front end)


unitatea de execuie n afara ordinii (out of order execution core)
unitile 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 execuie n ordine conine urmtoarele blocuri funcionale:
-

ITLB ( Instruction Translate Lookahead Buffer) memorie cache nivel 2


(level 2 - L2) pentru instruciuni
Blocul pentru predicia salturilor ( predicia static i dinamic a salturilor;
se utilizeaz un algoritm mbuntit de predicie a salturilor n raport cu
algoritmul de predicie utilizat n arhitectura P6)
Decodorul de instruciuni

Memorie cache nivelul 1 (level 1 - L1). Aceast memeorie stocheaz


instruciunile cele mai recente. Posed un predictor de salturi propriu.
Memorie de microinstruciuni ( micro-operaii) necesar pentru
instruciuni complexe cu mai mult de 4 micro-operaii

Unitatea de execuie n afara ordinii are ca principale funciuni alocarea resurselor,


reasignarea registrelor i planificarea execuiei. Se utilizeaz buffere de dimensiuni mai mari
ca la arhitectura P6.
Exist un bloc de alocare n buffer-ul de reordonare (ROB) care urmrete starea
fiecrei micro-operaii n decursul desfurrii ei. Blocul de alocare aloc registrele necesare
i o intrare n coada de ateptare a planificatorului execuiei micro-operaiilor.
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 pariale i intrrile n ROB snt stocate ca singur entitate
ce conine att date ct i informaie de stare. Dup decizia de completare a micro-operaiei
rezultatul final este stocat n RRF (Retirement Register File).
n arhitectura P4, intrrile n ROB i rezultatele snt stocate separat. n bufferul ROB
snt stocate doar informaiile de stare, iar n RF (Register File) snt stocate datele. Exist 2
tabele de alocare RAT : pentru instruciunile n curs de execuie i pentru instruciunile n
ateptare.
Unitatea de execuie are ca element central o unitate de planificare a execuiei.
Aceasta permite reordonarea instruciunilor astfel nct execuia instruciunilor s se
desfoare ct mai curnd posibil dup ce operanzii de intrare i resursele necesare prelucrrii
snt disponibile.

Unitatea de planificare are n componen cozi de micro-operaii i palnificatoare de


micro-operaii. Exist cozi pentru operaii cu memoria i cozi pentru operaii care nu
utilizeaz memoria. Toate cozile snt cozi FIFO.
Planificatoarele de micro-operaii se refer la operaii cu memoria, opearii ALU
rapide, operaii ALU lente i operaii generale de virgul mobil. Exist 4 porturi de
distribuie ( dispatch ports) ca n figura 3.

Figura 3. Porturi de distribuie n arhitectura P4


Unitile de calcul utilizeaz tehnica pipe line ( usual cu 3 stagii de prelucrare). Se
lucreaz pe 32 de bii pentru ntregis i pe 64-128 de bii pentru numerele n virgul mobil.
Operaiile cu memoria utilizeaz tehnici pentru mrirea vitezei de prelucrare:
- execuia speculativ a ncrcrii din memorie
- rearanjarea operaiilor de ncrcare i stocare
- utilizarea buffere-lor pentru scriere
- tehnica forwarding ( scurtcircuitrii) pentru ncrcrile de date
dependente
La ncheierea execuiei instruciunii se vor re-executa instruciunile executate n mod
incorect datorit tehnicilor de execuie speculativ sau instruciunile 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:
Descriere
Stagiul
pipe
line
12
- determin valoare pointer-ului de instruciuni
- predicie salturi
3-4
- ncrcarea instrucunii din memoria cache
5
- transmiterea micro-operaiilor la alocator
6
- alocarea resurselor pentru fiecare micro-operaie
7-8
- reasignarea registrelor
9
- plasarea n cozile de ateptare
10-12 - planificarea micro - operaiilor

13-14
15-16
17
18
19
20

- distribuia micro- operaiilor ctre unitile de calcul


- citirea registrelor de date ( a operanzilor de intrare)
- execuia micro-operaiilor
- actualizarea flagurilor de stare a micro-operaiilor ( instruciunilor)
- verificarea corectitudinii execuiei salturilor
- stocarea rezultatului
Performanele arhitecturii P4 snt comparate cu performanele arhitecturii P6 n figura

4.

Figura 4. Performanele arhitecturii P4 comparativ cu performanele arhitecturii P6

Arhitectura P6 utilizeaz tehnica pipe line cu 14 stagii de prelucrare dup cum urmeaz:
Descriere
Stagiul
pipe
line
1
- determin valoare pointer-ului de instruciuni
- predicia 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
- ncrcarea instrucunii din mamoria cache ( maxim 2 instruciuni de 32 biti fiecare)
- determinarea limitelor fiecrei instruciuni
- transferul instruciunilor ctre decodorul de instruciuni ( n cuvinte de 16 bii)
5-6
- decodificarea instruciunilor ntr-o serie de micro-operaii
- pregtire pentru execuia out-of order
- trei decodificatoare opereaz n paralel :
- 2 decodificatoare simple ( pentru majoritatea operaiilor pe ntregi)
- 1 decodificator complex ( pentru instruciuni complexe)
- rezultatul final este o secven de micro-operaii
- fiecare micro-operaie conine 3 operanzi: 2 operanzi surs i 1 operand destinaie
- micro-operaiile au lungime mai mare dect n cazul arhitecturii RISC deoarece
trebuie s acopere i cazul operaiilor de virgul mobil
- majoritatea instruciunilor snt translatate n 1 pn la 4 micro-operaii
- dac snt necesare mai mult de 4 micro-operaii atunci instruciunea este transferat
la secvenorul de microinstruciuni ( Microcode Instruction Sequencer)
- se efectueaz predicia 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 ctre programator
- redenumirea registrelor adaug 40 de registre de uz general
- micro-operaiile snt transferate n buffer-ul de reordodare ( Reorder Buffer)
- buffer-ul de reordonare (ROB) este o memorie adresabil prin coninut organizat
dup o politic FIFO
- micro-operaiile snt stocate n ROB n diferite stadii de execuie (n ateptarea
rezolvrii dependenei ntre instruciuni sau a eliberrii resurselor necesare)
- micro-operaiile snt transferate unitii de rezervare (reservation station)
9-10
- unitatatea de rezervare are 20 de intrri
- unitatea de rezervare distribuie micro-operaiile ctre 1 pn la 5 uniti de
execuie:
- dou uniti aritmetice pentru ntregi
- dou uniti de adresare a datelor ( pentru instruciuni load / store)
- o unitate aritmetic de virgul mobil
- unitatea de rezervare poate distribui micro-operaiile ntr-o perioad de ceas pna la
3 perioade de ceas ( dac unitile de calcul snt ocupate)
- distribuia micro-instruciunilor ctre unitile de calcul este determinat de biii de
stare din ROB
- dac mai mult de o singur micro-operaie este gata pentru transfer n unitatea de
rezervare, se vor allege acele micr-operaii care snt generate n secven
11
- se execut micro-operaiile

12-14

- se semnalizeaz ( printr-un flag) completarea micro-operaiile


- cnd unitatea de ateptare (retirement unit) gsete o micro-operaie completat
atunci unitatea de ateptare stocheaz rezultatele n RRF ( Retirement Register File);
RRF reprezint un set de 8 registre de ntregi i 8 registre de virgul mobil
- unitatea de ateptare rearanjeaz micro-operaiile n ordinea original i
monitorizeaz apariia ntreruperilor, excepiilor, punctelor de ntrerupere a
salturilor prezise n mod eronat

Figura 1 Predicia salturilor cu algoritm adaptive cu 2 niveluri

Predicia salturilor
Predicia salturilor este o cerin important n sistemele de calcul ce utilizeaz intens
tehnica pipe-line. Prin predicia salturilor se optimizeaz utilizarea structurii pipe-line
evitndu-se reiniializarea acesteia dac intruciunile corespunztoare saltului n program au
fost ncrcate n mod eronat.
n situaia unei instruciuni de salt condiionat instruciunea int nu poate fi ncarcat
n pipe-line dect dup ce s-a calculat adresa de salt i nu s-a evaluat condiia de salt. Pentru
salturile necondiionate trebuie calculat numai adresa de salt.
Pn cnd aceste informaii snt disponibile structura pipe-line ateapt sau ncarc o
instruciune tint posibil; n momentul cnd informaiile snt disponibile se poate decide o
reiniializare a structurii (n situaia n care n pipe-line s-au ncrcat instruciuni int n mod
eronat). n ambele situaii apare o degradare a performanei structurii pipe-line. Utilizarea
prediciei salturilor conduce la o atenuare a acestei degradri de performan datoritfaptului
c n majoritatea cazurilor instruciunile int snt ncrcate correct.
Instruciunile de salt se impart n dou categorii:
- salturi statice ( care se regsesc n codul binar i snt cunoscute nainte de execuia
programului)
- salturi dinamice ( care apar n urma execuiei i nu snt cunoscute nainte de
execuie)
Predicia salturilor dinamice este mai dificil dect predicia salturilor statice.
Ideea de baz a prediciei salturilor este memorarea istoriei fiecrui 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 snt dependente de tipul de program care se execut.
Exist mai multe tipuri de programe (task-uri):
T1 procesarea bazelor de date
T2 programe de cutare, editare, compilare i testare
T3 programe de rezervare hotelier, tranzacii bancare
T4 programe utilitare pentru manevrarea de date
n tabelul 1 snt prezentate numrul de isnstruciuni de salt pentru fiecare tip de task:

Numrul total de
instruciuni
Numrul salturilor
dinamice
Numrul salturilor
statice

T1
1,300,881

T2
1,325,359

T3
1,309,178

T4
1,667,468

285,528

321,441

312,865

359,550

19,176

27,878

21,202

15,491

Predicia salturilor utilizeaz un buffer de memorie ( BTB Branch Target Buffer)


care conine adresele instruciunilor int pentru fiecare salt precum i informaia necesar
prediciei. Bufferul BTB este adresat cu ajutorul adresei instruciunii de salt. Deoarece n mod
evident nu se poate utilize un BTB excesiv de mare se vor utilize tehnici de mapare a adresei
instruciunii de salt n spaiul de adresabilitate al BTB ( tehnici similare maprii memoriei
cache). Dimensiunea bufferului BTB influeneaz rata de predicie (figura 1).

Figura 1. Variaia ratei de predicie funcie de dimensiunea BTB


Dimensiunea mare a BTB poate fi n aparen un avantaj. Totui un BTB mare are
urmtoarele dezavantaje:
- se reduce din dimensiunea memoriei sistemului
- se stocheaz adrese effective ( nu adrese fizice) ceea nsemn c la comutarea taskurilor tot coninutul BTB este inutil sau chiar contraproductiv
Metoda de mapare a BTB ( similar memoriei cache ) influeneaz rata de predicie ca
n figura 2.

Figura 2. Variaia ratei de predicie funcie de metoda de mapare a BTB

n situaia n care procesorul ncarc mai mult de o singur instruciune ntr-un ciclu
atunci bufferul BTB trebuie accesat pe blocuri de date. Rata de predicie va scadea uor ca n
figura 3.

Figura 3. Variaia ratei de predicie funcie de modul de adresare a BTB


Predicia direciei salturilor
Salturile condiionate snt prezise utiliznd informaia anterioar despre modul cum sau efectuat aceste salturi.
Cea mai simpl cale de predicie a saltului este aceea de a presupune c un nou salt se
va efectua n aceeai direcie ca salturile anterioare. O asemenea predicie se numete
predicie local cu o istorie de 1 bit ( local prediction 1 bit history). Evident metoda este mai
bun dac istoria are mai muli bii care memoreaz direcia saltului ( 1 se efectueaz saltul, 0
nu se efectueaz saltul). Tabelul 1 ilustreaz modul de predicie a salturilor pentru un tipar de
3 bii.

Tiparul (pattern)

Predicie

000
001
010
011
100
101
110
111

ne-efectuat (0)
ne-efectuat (0)
efectuat (1)
efectuat (1)
ne-efectuat (0)
efectuat (1)
efectuat (1)
efectuat (1)

Tabelul 1
Saltul urmator efectuat
este efectuat(%)
7.8
34.1
51.9
67.9
32.6
64.4
79.1
97.7

Se utilizeaz un registru de deplasare ( cu n bii pentru un predictor local cu istorie de


n bii). Acest registru de deplasare conine ultimele n decizii. Cel mai din stnga bit reprezint

decizia cea mai veche. Construirea istoriei presupune ca bucla s se fi executat de un anumit
numr de ori timp n care saltul nu este predictibil).
Istoria fiecrui salt este stocat n bufferul BTB.
Analizele pe o gam variat de programe indic faptul c dac numrul de bii din
tipar crete rata de predicie crete. Totui prin adugarea unui bit ( de la o istorie cu 2 bii la o
istorie cu 3 bii) creterea nu este semnificativ.
Se poate utiliza, pentru fiecare salt, un contor de 2 bii care este incrementat ori de cite
ori saltul se efectueaz i este decrementat ori de cite ori saltul nu se efectueaz. Operaiile de
incrementare, respectiv decrementare, se efectueaz cu saturare astfel nct contorul ia valorile
0,1,2 sau 3. Predicia 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
predicie poate fi asimilat unui automat cu 4 stri ca n figura 4.

Figura 4. Schema de predicie cu contor de 2 bii cu saturare


Rezultatele experimentale obinute n literatur pentru un predictor local cu istorie de
3 bii i pentru un predictor cu contor de 2 bii cu saturare snt ilustrate n figurile 5 i 6.

Figura 5. Predicia cu un predictor local cu istorie de 3 bii

Figura 6. Predicia cu un predictor cu contor de 2 bii cu saturare


O schem de predicie a salturilor mai eficient este schema de predicie adaptiv cu 2
niveluri. Aceast schem presupune existena a 2 tabele: o tabel BTB i o tabel de contori
de 2 bii cu saturare. Tabela BTB conine istoria pe n bii a fiecrui salt; coninutul BTB
adreseaz tabela de contori; decizia se ia ca n cazul schemei de predicn cazul schemei de
predicie cu contor cu saturare; se actualizeaz contorii i tabela BTB. Schema de predicie
adaptiv cu 2 niveluri este ilustrat n figura 7.

Figura 7. Predicia adaptiv cu 2 niveluri


n figura 8 este ilustrat rata de predicie pentru un predictor adaptive cu 2 niveluri
funcie de numrul de bii de adres.

Figura 8. Evolu ratei de predicie pentru predicia adaptiv cu 2 niveluri


Predicia direciei salturilor bazat pe istoria global
Predicia 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 direcia 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 predicie adaptive cu 2 niveluri acest tipar global este
utilizat pentru a adresa o tabel de contori cu saturare.
Metoda de predicie global este ilustrat n figura 9.

Figura 9. Predicia global a salturilor


Avantajul metodei de predicie globale este acela c se reduce dimensiunea tabelelor
utilizate pentru memorarea informaiilor necesare prediciei. Se pot prezice mai multe salturi
utiliznd o dimensiune de memorie specificat.

Problema care apare pentru aceast metod de predicie este aceea informaiile pentru
diferite salturi interfer ntre ele.
Exist dou scheme pentru predicia global a salturilor: gselect i gshare.
Ambele metode ncearc s resolve problema interferrii informaiilor ntre salturi
printr-o adresare mai precis a saltului.
Metoda gselect este ilustrat n figura 10.

Figura 10. Metoda de predicie global gselect


Adresarea tabelei de contori se realizeaz utiliznd concatenarea unor bii din registrul
GR i a bitilor mai puin semnificativi din adresa instruciunii de salt ca n tabelul 3.
Adresa instruciunii de salt

Registrul GR

0000 0000
0000 0000
1111 1111
1111 1111

0000 0001
0000 0000
0000 0000
1000 0000

Tabelul 3
Index n tabela de contori
(gselect)
0000 0001
0000 0000
1111 0000
1111 0000

Metoda gshare este prezentat n figura 11.

Figura 11. Metoda de predicie global gshare

Metoda gshare calculeaz indexul pentru tabela de contori ca un XOR logic ntre biii
din registrul GR i biii mai puin semnificativi ai adresei instruciunii de salt, ca n tabelul 4.

Adresa instruciunii de salt

Registrul GR

0000 0000
0000 0000
1111 1111
1111 1111

0000 0001
0000 0000
0000 0000
1000 0000

Tabelul 4
Index n tabela de contori
(gshare )
0000 0001
0000 0000
1111 1111
0111 1111

Metoda gshare elimin situaiile n care indexul pentru tabela de contori ia aceeai
valoare pentru salturi diferite (tabelul 5).
Tabelul 5
Adresa instruciunii
Registrul GR
Index n tabela de Index n tabela de
de salt
contori (gselect )
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
Performanele metodelor de predicie global gselect i gshare snt illustrate n figurile
12. i 13.

Figura 12. Rata de predicie pentru metoda de predicie global gselect

Figura 12. Rata de predicie pentru metoda de predicie global gshare

n practic se utilizeaz metode hibride care utilizeaz 2 predictori ( de tipuri diferite).


n figura 13 este ilustrat o metod de predicie cu selecia predictorului.

Figura 13. Metoda de predicie a salturilor cu selecia predictorului


Analiza comparativ a diferitelor metode de predicie este ilustrat n figurile 14 -

Figura 14. Comparaie ntre predicia local cu BTB i predicia adaptiv cu 2 niveluri
(bimodal)

10

Figura 15. Comparaie ntre predicia local cu BTB,predicia adaptiv cu 2 niveluri


(bimodal) i predicia global

Figura 16. Comparaie ntre predicia local cu BTB, predicia adaptiv cu 2 niveluri
(bimodal), predicia global i metoda gselect

Figura 17. Comparaie ntre predicia local cu BTB, predicia adaptiv cu 2 niveluri
(bimodal), predicia global, metoda gselect i metoda gshare

11

Figura 18. Comparaie ntre predicia local cu BTB, predicia adaptiv cu 2 niveluri
(bimodal), predicia global, metoda gselect, metoda gshare i predicia selectiv
n concluzie predicia salturilor este influenat de urmtorii factori:
-

identificarea corect a saltului curent ( pentru metodele de predicie globale)


metodele de predicie trebuie s fie testate pe o gam larg de programe
diferite metode de predicie opereaz mai efficient pe diferite structuri de
instruciuni de salt
predicia este influenat de combinarea mai multor tipuri de predictori

12

Structura intern de baz a procesoarelor Intel


Structura de baz este cea din figura 1. Microprocesorul include dou
componente majore: unitatea de execuie 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 unitii de execuie, fie pentru
umplerea cozii de instruciuni. Coada de instruciuni este un registru FIFO
alctuit din 6 cuvinte, instruciunile ateptnd aici intrarea n execuie.
Ciclurile de ncrcare ale instruciunilor sunt executate n intervalele de timp
n care unitatea de execuie nu solicit magistrala. Dac unitatea de execuie
nu solicit magistrala i coada de instruciuni este plin, atunci au loc cicluri
inactive pe magistral. Execuia instruciunilor de salt duce la resetarea cozii,
deoarece trebuie extrase instruciuni din alt zon de memorie.

Sumator

Registre
generale

Reg. segment
Contor
program

Magistrala local bus intern 16


bi i
Registre
temporale
(buffers)
UAL

Coprocesor
matematic

16 bii

20 bii
Logica de
comand de
magistral

Comanda
unitii de
1 2 3 4 5 6
execuie 8 bii

Registru
flag

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 unitii de execuie, fie pentru
umplerea cozii de instruciuni. Coada de instruciuni este un registru FIFO
alctuit din 6 cuvinte, instruciunile ateptnd aici intrarea n execuie.
Ciclurile de ncrcare ale instruciunilor sunt executate n intervalele de timp
n care unitatea de execuie nu solicit magistrala. Dac unitatea de execuie
nu solicit magistrala i coada de instruciuni este plin, atunci au loc cicluri
inactive pe magistral. Execuia instruciunilor de salt duce la resetarea cozii,
deoarece trebuie extrase instruciuni din alt zon de memorie.
Unitatea de execuie obine instruciuni de la unitatea de interfa cu
magistrala, iar n cazul n care coada este vid, ateapt, i apoi le execut
lucrnd cu adrese i date. Registrul de flags este actualizat n funcie de
rezultatul fiecrei operaii executate. Dup execuia instruciunii, furnizeaz
date i adrese ctre unitatea de interfa cu magistrala. De asemenea, unitatea
de execuie 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 ateptare, dac semnalul nu este Ready. Pe

durata ciclurilor inactive, se realizeaz demultiplexarea prin generarea strii


anterioare n latch-uri (CBB-RS) externe, pe frontul descresctor al impulsului
de tact.

Registrele generale
Registrele generale cuprind:
1) registre de utilizare general. AX, BX, CX, DX adresabile direct pe 16
bii, fiecare putnd servi ca destinaie a datelor (acumulator); registrele pot fi
adresate i pe bytes, prin specificarea byte-ului inferior (AL-ALow) sau
superior (AH-AHigh) corespunztoare biilor 0-7 (L), respectiv 8-15 (H).
ncepnd cu microprocesoarele I80386 i pn la Pentium, acestea se pot
adresa i pe dublu cuvnt (32 de bii) prin specificarea registrului precedat de
E (Extended): EAX, BOX, BCX, EOX. Registrele de ulilizare general au fost
proiectate s aib o destinaie specific, n concordan cu operaiile pe care le
execut:
(E - Extended - pentru microprocesoarele I80386 i ulterioare, care lucreaz
pe 32 de bii.)
AX - este utilizat pentru operaiile de nmulire i mprire, pe 16 bii,
respectiv pentru operaii de intrare/ieire pe 16 bii;
AL - este utilizat, pentru aceleai operaii ca i AX dar pe 8 bii; n plus se
utilizeaz pentru operaii BCO (binary coded decimal) i conversii de cod;
AH - este folosit pentru nmulire i mprire pe 8 bii;
BX - se utilizeaz n conversii de cod i ca registru de baz la adresare;
EAX
EBX
ECX
EDX
ESP
EBP
ESI
EDI

AH
BH
CH
DH

AL
BL
CL
DL

AX
BX
CX
DX
SP stack pointer
BP base pointer
SI source index
DI destination index

Figura 2. Registrele generale

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
cte 64 K fiecare (64 K = 26*210) n mod direct.

15

12 11

Reg. de segment
15

43 0

adresa efectiv - offset

Sumator
19

16 15

11 10

8 7

4 3

adresa fizic de memorie

Fig. 3. Tehnica de segmentare


Adresarea n modul real permite microprocesorului s acceseze un spaiu
de adrese fizice de pn la 1 M (220) prin tehnica de segmentare, tehnic ce nu
adreseaz direct locaiile de memorie, ci printr-un procedeu care se desfoar
n dou etape:

Memorie intern
RAM de 1M

Registre
de
segment
15
CS
DS
SS
ES
IP

64k

offset

segment de
cod

64k

segment de
date

64k

segment de
stiv
00000

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, rezultnd adresa fizic de memorie.
Dezavantajul major const n aceea c programatorii trebuie s aib grij
deoarece atunci cnd se depesc limitele unui segment este necesar o nou
rencrcare a registrelor de segment.

31

EIP

15

IP

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.

15

0 31 (15) 0

offset

selector

(4)
Sumator

(3)
Registru
descriptor
segment

(4)
segment
selectat

(2)

(1)

adres fizic
baza segment

Descriptor
segment

Tabela
descriptori
de segment

Fig. 6. Adresarea n mod protejat


(1) Registrele de segment n acest mod de adresare nu conin adresa fizic
de baz a segmentului, ci au rol de selectoare cu structura:

15
Index

3 2 1 0
Ti RPL

Fig. 7. Registrul selector


RPL (Register Privilege) indic nivelul privilegiat al registrului selector;
acesta dispune de patru niveluri de protecie n funcie de softul care solicit
adresarea memoriei ca n figura 8.
Protecia 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 protecie privilegiat de tip inelar cresctor, pe
patru niveluri, n vederea izolrii aplicaiilor software de eventuale erori ale
software-ului de baz.
Controlul comunicrii ntre programe i sistemul de operare este
implementat prin separarea spaiului de adres i mecanismul privilegiat.
Controlul spaiului de adres separ programele de aplicaie unele fa de
altele, n limp ce mecanismul privilegiat izoleaz software-ul de baz de cel de
aplicaie.

RPL=11
RPL=10
RPL=01
RPL=00

Fig. 8. Nivelurile de protecie


Protecia 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 protecie 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,
existnd trei tipuri de tabele ale cror adrese sunt pstrate n registre
dedicate:
- tabela descriptorilor globali, GOT (Global Description Table), conine
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 pstrat n registrul GOTR.
- tabelul deacriptorilor locali, LDT (Local Description Table) - conine
descriptorii de segmente ale unui task dat: descriptorul segmentului de cod,
date, stiv i al segmentului ce conine tabela vectorilor de ntrerupere (TI = 1).
Adresa LDT este reinut n registrul LDTR.

- tabelul vectorilor de ntrerupere, IDT (Interrupt Description Table)


conine descriptorii ce localizeaz rutinele de tratare a ntreruperii, a cror
adres este pstrat n IDTR.
Indexul este un pointer de intrare n tabelul corespunztor de descriptori.
Un descriptor de segment dintr-un tabel accesat prin index, are
urmtoarea structur descris n figura 9:
A (Accessed) =
0 - segmentul nu poate fl accesat
1 - selectorul de segment va fi ncrcat n
registrul segment
S (segment descriptor) =
1 - descriptor segment de cod sau date
0 - descriptor segment de sistem sau
ntrerupere

15
8
Adres
de baz
segm.

Adres de baz
7 6 5
4 3
G D O

U
S

Lungime
segment

15 14
P

Lungimea
13 12 11
9 8 7
0
E
W
Adres de
RPL
S E D
A
baz
R
C
drepturi de acces

Fig. 9. Descriptor de segment


E (Executable) =

1 - segment de cod
0 - alt segment dect 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

{U S}
segment folosit de utilizator sau de sistemul de operare
Opentru compatibilitatea cu procesoarele ulterioare
D (dimension) =
0 - segment pe 16 bii
1 - segment pe 32 bii
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), avnd structura:

47

16 15

Adres
de baz

0 7

Lungime Drepturi
segment de acces

Fig. 10. Registru descriptor de segment


(3) Adresa de baz a segmentului, identific segmentul din memoria
intern,
(4) Adresa fizic se obine relativ la adresa de baz prin intermediul
sumatorului, la care se adun offsetul comunicat prin magistrala de adrese de
24 bii ((I80286, I80386, SX 224 = 220 . 24 = 16 M RAM) sau 32 bii (ulterioare
I80386 DX => 232 = 230.22 = 4 GRAM).
O alt modalitate de gestiune a memoriei pentru microprocesoarele pe 32
de bii, utilizat pentru sistemele de operare multitasking o constituie
paginarea. Spre deosebire de segmentare, care modularizeaz programele i
datele n segmente de lungime variabil, innd seama de logica prelucrrii
datelor i a modulelor ce alctuiesc codul, paginarea divide datele i
programele n zone de dimensiune fix, numite pagini.
Tehnica paginrii, ilustrat n figura 11, preia adresa liniar pe 32 de bii
furnizat de magistrala de adrese, coninnd:
1) indexul unei intrri n directorul ce conine 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 (numrul de intrri este 210 =
1024);
(2) adresa relativ a unui tabel de pagini (210 - 1024 tabele), care se adun

la adresa de baz a tabelului determinat anterior pentru a obine adresa


paginii;
(3) offset-ul relativ la adresa paginii selectate anterior, care adunat la
aceast adres, conduce la obinerea adresei fizice pe 32 de bii.
Paginarea
O alt posibilitate de gestionare a memoriei la microprocesoarele pe 32 de
bii, utilizat de ctre sistemele de operare multitasking, o constituie tehnica
paginrii. Dac prin segmentare se modularizeaz programele i datele n
segmente de lungime variabil n funcie de logica prelucrrii datelor i a
modulelor ce alctuiesc codul, paginarea mparte datele i programele n zone
de dimensiune fix numite pagini.
Tehnica paginrii este reprezentat n figura 11. Adresa liniar preluat
de pe magistrala de adrese, format din 32 de bii, conine n acest caz trei
cmpuri: offset, adresa relativ de tabel i un index.

31
adres
liniar 32 bii

22 21

Director adrese
tabele pag.

12 11

Tabel

0
Offset

10

12
RAM

10

21
+
Adres
fizic de
baz

21
0

adres
fizic

pagin
selectat

adres fizic a
pag. selectare

adres de baz a
tabelelor de pagini

Fig. 11. Tehnica paginrii (procesoarele Intel)


Semnificaia celor trei cmpuri este urmtoarea:
1) indexul unei intrri n directorul ce conine 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 (numrul de intrri este 210 =
1024);
(2) adresa relativ a unui tabel de pagini (210 - 1024 tabele), care se adun

la adresa de baz a tabelului determinat anterior pentru a obine adresa


paginii;
(3) offset-ul relativ la adresa paginii selectate anterior, care adunat la
aceast adres, conduce la obinerea adresei fizice pe 32 de bii.

Adresarea memoriei interne pe 32 de bii


La microprocesoarele pe 32 de bii, memoria intern nu mai este conectat
la magistrala de 16 bii a sistemului, ci este ataat 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 paginrii pentru a implementa
mecanismul de memorie virtual prin care un bloc de memorie poate fi ncrcat
din memoria extern n mod automat, dac la momentul referirii nu se afl n
memoria intern. n acest caz, un registru de segment este alctuit din dou
cmpuri conform figurii 12.

Selector

RPL

Fig. 12 Structura registrului de segment


Cu 14 bii ai cmpului Selector se pot selecta 214 = 210 . 24 = 16K adrese a
cte 232 off-seturi, deci spaiul de adrese virtuale va fi 214 . 232 = 246 = 64 T.

Registre de Segment

Adres efectiv

CS DS ES FS GS SS
15

2 1
Selector

Registre
descriptor
de segment

Offset
0

RPL

Adres Lungime Drepturi


de baz segment
acces

Memorie

Adres
liniar

Segment
selectat

Fig. 13. Adresarea complet liniar


La microprocesoarele pe 32 de bii 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 cnd ar avea la dispoziie un ntreg mediu real de 1 M.
Modalitile de adresare a memoriei la microprocesoarele pe 32 de bii
sunt redate succint n figura 14.

Adres efectiv

31
Offset

Unitate de
segmentare
Adres virtual
sau
index descriptor

Adres
liniar
32 bii

Unitate de
paginare

Adres
fizic
32 bii

232

Memoria
fizic

RPL
15

2 1

Fig. 14. Adresarea memoriei interne la microprocesoarele pe 32 de bii

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., OHallaron, D., Computer Systems A Programmers Perspective, ,
Prentice Hall, New Jersey, 2003.
4. Mranu, R., Calculatoare persoanale-elemente arhitecturale, Editura BIC ALL,
Bucureti 2001.
6. Murdocca, M.J., Heuring, V.P., Principles of Computer Arhitecture, Prentice Hall,
1999.
7. Norton, P., Sectrete PC, Editura Teora, Bucureti 1998 (traducere dup SAMS
Publisluig, USA, 1995).
8. Patterson, D., Hennessy, J., Organizarea i proiectarea calculatoarelor: interfaa
hardwarw/software, Editura ALL, Bucureti, 2002.
9. Stallings, W., Computer Organization and Architecture, Fifth Edition, Prentice
Hall, New Jersey, 1999.
10. Tamenbaum, A. S., Organizarea structurat a calculatoarelor, Ediia a IVa,
Editura Agora, Tg. Mure, 1999.
11. Wilkinson, B., Computer Architecture, Second Edition, Prentice Hall Europe,
1996.

124