Sunteți pe pagina 1din 13

Cap.4.

UNITATEA DE COMAND l CONTROL


Funciile principale ale unitii de comand i control (UCC) sunt urmtoarele:
Decodificarea codului operaiei;
Calculul adresei operanzilor care particip la operaie i extragerea lor din
memorie;
Generarea secvenei de comenzi necesare execuiei instruciunii;
Generarea secvenei de comenzi necesare memorrii rezultatului i a
informaiilor de stare;
Calculul adresei instruciunii urmtoare i citirea acesteia din memorie.
4.1. Microoperaii
Prelucrrile efectuate de UCP pentru execuia unei singure instruciuni
reprezint un ciclu de instruciune. Fiecare ciclu de instruciune const din
urmtoarele subcicluri:
Subciclul de extragere a instruciunii din memorie;
Subciclul de execuie;
Subciclul de ntrerupere.
Pe lng aceste subcicluri, la execuia unei instruciuni mai poate aprea
subciclul de indirectare. Execuia unei instruciuni poate necesita extragerea
unuia sau a mai multor operanzi din memorie. Aceti operanzi pot fi adresai
direct sau indirect. Dup extragerea instruciunii, se verific dac operandul
necesar este adresat n modul indirect. In caz afirmativ, se ncarc operandul
respectiv utiliznd adresarea indirect.
Ciclul de instruciune, completat cu subciclul de indirectare, este reprezentat
simplificat n figura 4.1.
Subciclul de
extragere

Subciclul de
ntrerupere

Subciclul de
indirectare

Subciclul de
execuie

Fig.4.1
Fiecare subciclu al unei instruciuni poate fi descompus ntr-o serie de
operaii elementare. O asemenea operaie elementar, care realizeaz o
prelucrare numeric a informaiei sau un transfer al acesteia, pe durata unui
singur impuls al generatorului de tact, se numete microoperaie. Unitatea de

comand i control are rolul de a genera succesiunea semnalelor de comand


care asigur secvena corect de execuie a fiecrei microoperaii. Aceast succesiune este specific fiecrei instruciuni, fiind determinat att de codul operaiei
ct i de recepionarea unor semnale de stare de la circuitele controlate, prin care
se verific ndeplinirea unor condiii.
In continuare se analizeaz subciclurile care intr n componena unei
instruciuni i microoperaiile din care se compune fiecare subciclu. Pentru
aceasta s presupunem c UCP utilizeaz urmtorii regitri:
- Registrul de adrese al memoriei (RA). Acest registru este conectat la liniile
de adres ale magistralei sistem i conine adresa din memorie a unei
instruciuni sau a unei date.
- Registrul de date al memoriei (RD). Acest registru este conectat la liniile
de date ale magistralei sistem i conine valoarea care trebuie depus n
memorie sau ultima valoare citit din memorie.
- Contorul de program (PC) conine adresa urmtoarei instruciuni care se va
executa.
- Registrul de instruciuni (Rl) conine ultima instruciune citit.
4.1.1. Subciclul de extragere
In acest subciclu este adus n UCP o instruciune din memorie. Operaiile
executate n acest subciclu sunt indicate n figura 4.2. Registrul PC conine adresa
instruciunii care urmeaz s fie executat. Aceast adres este depus n RA [1]
i apoi este plasat pe magistrala de adrese (MA) [2]. Unitatea de comand
solicit o operaie de citire a memoriei, trimind pe magistrala de comand (MC)
o comand ctre Unitatea de memorie [3]. Coninutul locaiei de memorie a
crei adres a fost transmis Unitii de memorie este plasat pe magistrala de
date (MD) i reinut n registrul de date (RD) [4]. In acelai timp UCC elaboreaz
comanda de incrementare a registrului Program Counter (PC) [5], pregtind
astfel urmtorul ciclu de extragere. Registrul, RD fiind unica poart de
intrare/ieire n UCP, trebuie golit de informaiile pe care le conine, astfel nct
instruciunea care se afl n acesta este transferat n registrul de instruciuni
(RI) [6]. In RI instruciunea este decodificat i este pstrat pe toat perioada
executrii acesteia.
Generatorul de tact al sistemului de calcul genereaz impulsuri de tact
(ceas) la intervale constante. Fiecare impuls de ceas definete o unitate de timp.
Aceast unitate de timp este aleas astfel nct fiecare microoperaie s poat fie
executat pe durata unui singur impuls de ceas. Unitile de timp sunt notate cu
t1, t 2 , t3 .
Simbolic, secvena de microinstruciuni care descrie microoperaiile
prezentate anterior se poate scrie astfel:

MA

UCP
1
PC

MD

MC

2
RA

Memorie

3
UCC

6
RI

RD

Fig.4.2 Subciclul de extragere


RA PC
RD Mem
PC PC+1
t3 : RI RD
A treia microoperaie se poate executa i n unitatea de timp t3, fr a afecta
subciclul de extragere.
t1 :
t2 :

4.1.2. Subciclul de indirectare


Dup extragerea instruciunii din memorie, urmeaz s se ncarce
operanzii care particip la operaie specificat de aceast instruciune. O
instruciune este format din cel puin dou cmpuri. Primul cmp conine
codul operaiei ce trebuie executat iar cel de al doilea cmp conine adresa
din memorie a operandului implicat n operaie.
Unitatea de comand examineaz cmpul de adres a instruciunii din
registrul Rl i, dac este indicat o adresare direct, aduce n RD coninutul
locaiei de memorie a crei adres este specificat n cmpul de adres a
instruciunii. Adresarea direct se refer la situaia n care cmpul de adres
conine adresa efectiv a operandului (Figura 4.3):

Instruciune

CO

Adres

Memorie

Operand

Fig. 4.3
Acest mod de adresare presupune o singur referire la memorie i nu
necesit un calcul de adres. In acest caz dup subciclul de extragere urmeaz
subciclul de execuie.
In cazul adresrii indirecte, naintea subciclului de execuie este necesar
un subciclu de indirectare. Adresarea indirect se refer la situaia n care n
cmpul de adres al instruciunii se gsete o referin ADR1 la un cuvnt de
memorie, care conine adresa complet ADR2 a operandului. Vezi figura 4.4.
Instruciune

CO

ADR 1

Memorie
ADR 2

Operand

Fig. 4.4
Adresa ADR1 din cmpul de adres al registrului de instruciuni Rl este
transferat n RA [1] i este apoi depus pe magistrala de adrese [2]. Unitatea
de comand genereaz semnalele de comand [3] necesare pentru aducerea
n registrul de date RD a adresei ADR2 a operandului [4]. In continuare, cmpul
de adres din Rl este actualizat pentru a conine adresa direct a operandului [5].
Aceast adres este utilizat apoi pentru ncrcarea operandului n registrul de
date RD.

MA

UCP
1
RA

MD

MC

2
Memorie

UCC

RI

RD

Fig.4.5 Subciclul de indirectare


Dup executarea acestor operaii urmeaz subciclul de execuie. Operaiile
executate n subciclu de indirectare sunt indicate n figura 4.5.
Descrierea simbolic a microoperaiilor prezentate este urmtoarea:
t1 :
t2 :
t3 :

RA RI(cmpul de adres)
(ADR1 n RA)
RD Mem (ADR2 din memorie n RD)
Rl(cmpul de adres) RD
(ADR2 n RI)

4.1.3. Subciclul de execuie


Subciclurile de extragere i de indirectare, ca i subciclul de ntrerupere,
implic secvene fixe de microinstruciuni. Subciclul de execuie difer n funcie
de instruciune, pentru fiecare instruciune existnd o secven proprie de
microinstruciuni care trebuiesc executate.
Considerm ca exemplu instruciunea:
ADD X
care adun valoarea variabilei X din memorie la coninutul registrului A, rezultatul
fiind memorat tot n A. Acest registru cu funcie special este numit registru
acumulator. In acest context X reprezint adresa din memorie a valorii variabilei
X.
Execuia acestei instruciuni poate fi descris prin urmtoarea secven de
microinstruciuni:
RA RI(cmpul de adres) (ADR X n RA)
t1 :
RD Mem
t2 :
A A+RD
t3 :
Rl conine codul instruciunii ADD. La primul pas (t1), partea de adres din
Rl, care reprezint adresa variabilei X, este ncrcat n RA. La pasul t2 se copie,

din locaia de memorie adresat, valoarea variabilei X i se depune n RD. In


final (t3), coninutul registrului A (registru acumulator) i al RD sunt adunate de
UAL i rezultatul este memorat tot n registrul A.
4.1.4. Subciclul de ntrerupere
Sistemul de ntreruperi este acea parte a unui sistem de calcul care
permite detectarea unor evenimente externe sau interne i declanarea unor
aciuni corespunztoare pentru tratarea lor. Aceste evenimente pot fi: tentativa
de execuie a unui cod de instruciune nepermis, terminarea unei anumite
operaii de ctre un dispozitiv de I/E, o eroare produs n timpul execuiei unei
operaii aritmetice (mprire la zero, depire superioar sau inferioar),
situaii critice in funcionarea unui sistem de calcul (ex: eroare de paritate,
fluctuaii ale tensiunii de alimentare, etc.).
Pentru a stabili ordinea de deservire a cererilor concurente de
ntrerupere, sistemele de ntrerupere utilizeaz o ierarhie de prioriti.
Prioritatea unei ntreruperi se stabilete pe baza importantei acordate
evenimentului tratat si a restriciilor de timp n soluionarea acesteia. Sistemul
de ntreruperi al unui calculator poate s identifice mai multe niveluri de
ntrerupere. Adresele de nceput ale acestor rutine se pstreaz intr-un tabel
din memorie. In funcie de cerinele programului executat, anumite niveluri de
ntrerupere pot fi invalidate, temporar sau pe toat durata aplicaiei.
La terminarea subciclului de execuie, n cazul n care ntreruperile sunt
validate, se testeaz dac a aprut o cerere de ntrerupere. In caz afirmativ, se
execut un subciclu de ntrerupere. Secvena de operaii executate este
urmtoarea:
1. Se salveaz contextul programului curent. Prin context se nelege
coninutul registrului PC, n care se gsete adresa instruciunii ce urmeaz s fie
executat dup reluarea execuiei programului, coninutul registrului de stare
PSW, precum i a altor registre care conin date semnificative pentru programul
respectiv.
2. Se ncarc n contorul de program adresa programului de servire a
ntreruperii. UCP va executa n continuare instruciunile din rutina de servire, dup
care va reveni la programul ntrerupt.
Transferurile de date din subciclul de ntrerupere se prezint n figura
4.6.

UCP

MA

MD

MC
6
6

PC

RA
Memorie
2
3

UCC

4
RD

Fig.4.6 Subciclul de ntrerupere


Subciclul de ntrerupere poate fi descris prin urmtoarea secven de
microinstruciuni:
RD PC
t1 :
RA Adresa_salvare
t2 :
PC Adresa_rutina
Mem RD
t3 :
Dup cum se constat, n momentul t2, adresa rutinei de tratare a
ntreruperii se transfer n PC. Ca urmare, urmtorul ciclu de instruciune va
ncepe prin extragerea primei instruciuni din rutina de tratare a ntreruperii.
Procesoarele actuale au extins sistemul de ntreruperi pentru a
eficientiza funcionarea UCP. De exemplu, cele mai multe periferice sunt mult
mai lente n comparaie cu UCP i aceasta ar trebui s rmn inactiv pn
la terminarea unei operaii de transfer cu un dispozitiv I/E. Prin mecanismul
ntreruperilor, n timpul unei operaii de I/E, UCP poate executa instruciunile
altui program.
Sistemul de ntreruperi este utilizat de asemenea pentru rularea mai
multor programe n acelai timp (time sharing). Datorit vitezei mari de lucru a
procesorului se lanseaz n execuie mai multe programe, pentru fiecare dintre
acestea alocndu-se o anumit cuant de timp. In acest mod utilizator are
senzaia c programele sunt executate simultan.
4.2.1 Semnale de control ale UCC
Pentru a-i realiza funciile, unitatea de comand trebuie s primeasc o
serie de semnale care s-i permit determinarea strii sistemului iar pe baza
acestor informaii elaboreaz semnale care controleaz funcionarea sistemului.
Intrrile i ieirile unei uniti de comand i control sunt prezentate n figura
4.7. UCC are urmtoarele intrri:
- Semnalul de ceas. UCC comand execuia unei microinstruciuni (sau a

unui set de microinstruciuni simultane) la fiecare impuls de ceas. Perioada


semnalului de ceas se mai numete ciclu de ceas.
- Codul operaiei este citit din registrul de instruciuni, care pstreaz
instruciunea curent, i se utilizeaz pentru a determina microinstruciunile care
trebuie executate n timpul ciclului de execuie.
- Indicatorii de condiii sunt necesari pentru a determina starea UCP i
rezultatul operaiei precedente executate de UAL, n scopul executrii
instruciunilor de salt condiionat.
- Semnale de control. Magistrala de control transmite ctre UCC semnale
de ntrerupere, sau de achitare (terminare) a unei ntreruperi.
MC
RI
Semnale de
control UCP
Indicatori
de condiie

UCC

Semnale de la
MC

Semnale de
control la MC
Ceas

Fig. 4.7 Semnale de control UCC


UCC elaboreaz urmtoarele semnale de ieire:
- Semnale prin care se comand funcionarea UCP. Acestea sunt de dou
tipuri: semnalele care determin transferul datelor dintr-un registru n altul i
semnalele care activeaz funcii specifice ale UAL.
- Semnale de control transmise pe magistrala de control. Acestea sunt tot
de dou tipuri: semnale de control ctre memorie i semnale de control ctre
modulele de I/E.
Pentru a nelege funcionarea UCC s considerm din nou ciclul de
ncrcare al unei instruciuni. Adresa instruciunii care urmeaz s fie executat
este pstrat n registrul PC. Primul pas const n transferul:
RA PC
Acest transfer se efectueaz prin activarea unui semnal de control care
deschide (activeaz) porile dintre cele dou registre.
Urmtorul pas const n citirea din memorie a instruciunii de la adresa
indicat, aducerea acesteia n registrul de date i incrementarea contorului de
program PC:
RD Mem
PC PC + 1
Aceste operaii se efectueaz prin activarea simultan de ctre UCC a
urmtoarelor semnale de control:

1. un semnal de control care valideaz depunerea coninutului RA pe


magistrala de adrese.
2. un semnal de control trimis pe magistrala de control, pentru citirea
memoriei.
3. un semnal de control care valideaz memorarea coninutului de pe
magistrala de date n registrul de date RD.
4. semnale de control prin care se incrementeaz cu 1 coninutul PC i se
depune rezultatul napoi n PC.
Ultimul pas const n transferul:
RI RD
pentru care se activeaz un alt semnal de control care valideaz transferul.
In continuare UCC trebuie s decid dac urmeaz un ciclu de indirectare
sau un ciclu de execuie. Pentru aceasta, examineaz coninutul registrului de
instruciuni Rl i testeaz dac se utilizeaz o adresare indirect, caz n care
stabilete secvena corespunztoare de microoperaii.
Pentru ciclul de execuie, UCC testeaz codul de operaie al instruciunii,
pe baza cruia decide secvena de microoperaii care va fi executat.
4.2.2. Implementarea UCC
Pentru implementarea UCC se utilizeaz diferite metode, care se pot
ncadra ntr-una din urmtoarele dou categorii:
UCC cablat;
UCC microprogramat.
O unitate de comand cablat este, n principiu, un circuit secvenial care
transform semnalele logice de intrare ntr-un set de semnale electrice de ieire,
ce reprezint semnalele de control. Modificarea funciilor unei astfel de uniti de
comand necesit modificri ale structurii hardware a circuitului.
4.2.3. UCC cablat care utilizeaz un decodificator
UCC preia de la registrul RI codul instruciunii curente i pe baza acestuia
va stabili aciunile ce urmeaz s fie executate. In cazul unitii de comand, luat
n discuie, codul instruciunii este decodificat cu ajutorul unui decodificator care
activeaz la un moment dat un singur semnal de ieire.
Impulsurile generatorului de ceas al sistemului acioneaz asupra unui
generator de faze, care genereaz semnalele de intrare T1,T2 ,...,Tn ce asigur
secvenierea n timp a semnalelor de comand. In fiecare din aceste momente
UCC activeaz semnalele de comand cerute de codul instruciunii. La sfritul
fiecrui ciclu de instruciune, UCC reiniializeaz generatorul de faze pentru a
relua generarea secvenei T1,T2 ,...,Tn .
Structura unei UCC cu decodificator este prezentat n figura 4.8. Codul
instruciunii este preluat din registrul RI i transformat de circuitul de decodificare n
semnalele binare D1, D2, Dn. La fiecare din momentele T1,T2,Tn UCC va
elabora cte un semnal de comand C1, C2, Cn, care vor declana aciunile
implicate de execuia instruciunii decodificate.

RI

Decodificator
Dn

D2

D1

T1
Ceas

Generator
de
faze

T2

Indicatori de
condiii

UCC
Tn

Cn

C2 C1

Fig. 4.8 UCC cu decodificator


4.2.4. Uniti de comand microprogramate
Semnalele de comand elaborate de UCC pot fi reunite sub forma unei
succesiuni de cifre binare, numit cuvnt de comand. Fiecare microoperaie se
caracterizeaz printr-un cuvnt specific de comand, iar succesiunea cuvintelor
de comand prin care se indic secvena corect a microoperaiilor, pentru fiecare
operaie, poate fi memorat ntr-o memorie de comand.
O unitate de comand n care succesiunea cuvintelor de comand, este
memorat, se numete unitate de comand microprogramat. Fiecare cuvnt de
comand memorat n memoria de comand formeaz o microinstruciune, iar
secvena de microinstruciuni formeaz un microprogram.
O unitate de comand microprogramat are dou funcii principale:
- Funcia de control propriu-zis, prin care se stabilesc microinstruciunile
care trebuiesc executate pentru instruciunea decodificat.
- Funcia de secveniere, prin care se determin adresa microinstruciunii
urmtoare.
In conformitate cu aceste funcii pe care trebuie s le ndeplineasc
unitatea ce comand microprogramat, o microinstruciune este format din
urmtoarele cmpuri principale (Fig. 4.9):
- Cmpul semnalelor de comand generate pentru controlul UCP. Acest
cmp conine cte un bit pentru fiecare semnal de comand intern al UCP.
- Cmpul semnalelor de comand pentru magistrala sistem. Acest cmp
conine cte un bit pentru fiecare semnal de comand al magistralei sistem.
- Cmpul de condiii, de care depinde urmtoarea microinstruciune care va
fi executat.
- Cmpul de adres, care conine adresa urmtoarei microinstruciuni care
se va executa, dac o anumit condiie este adevrat. De exemplu, dac bitul de
indirectare din codul instruciunii este 1 (condiia aste adevrat), se va executa
secvena de microinstruciuni pentru calcularea adresei efective a operandului.

Dac acest bit este 0 (condiia este fals), se va executa urmtoarea


microinstruciune din memoria de comand, a crei adres este indicat n cmp.

Adres microinstruciune
Cmp de condiii
- Salt necondiionat
- Zero
- Depire
- Bit de indirectare
Semnale de control pentru
magistrala sistem
Semnale de control pentru
UCP

Fig. 4.9
Acest tip de microinstruciune se numete microinstruciune orizontal. Spre
deosebire de acestea se utilizeaz i microinstruciuni verticale care utilizeaz un
cod pentru fiecare operaie care trebuie executat.
Totalitatea microinstruciunilor care constituie o unitate logic formeaz un
microprogram.
O microinstruciune orizontal este interpretat n modul urmtor:
1. Pentru execuia unei microinstruciuni, se activeaz toate semnalele de
control crora le corespunde un bit de 1 n cmpul semnalelor de comand i se
dezactiveaz cele crora le corespunde un bit de 0.
2. In cazul n care condiia indicat de cmpul de condiie este fals, se
trece la execuia urmtoarei microinstruciuni din microprogram. In cazul n care
condiia indicat de cmpul de condiie este adevrat, se trece la execuia
microinstruciunii indicat de cmpul de adres.
In figura 4.10 se prezint amplasarea microprogramelor n memoria de
comand.
Fiecare rutin este constituit dintr-un microprogram. Microinstruciunile din
fiecare rutin sunt executate secvenial. Fiecare rutin se termin cu o
instruciune de salt care indic urmtoarea rutin care va fi executat. Exist o
rutin special pentru nceputul unui subciclu de execuie, care dup ncrcare i
decodificare indic rutina care va fi executat pentru diferitele instruciuni (ADD,
AND, ..., JMP), n funcie de codul instruciunii.
Memoria de comand reprezint o descriere complet a funcionrii UCC,
deoarece definete secvena de microinstruciuni care trebuie executate n timpul
fiecrui subciclu (de extragere, de indirectare, de execuie, de ntrerupere) i
specific secvenierea acestor subcicluri.

.
.

Salt la indirectare sau execuie.


.
.

Rutina pentru
ciclul de extragere
Rutina pentru
ciclul de indirectare

Salt la execuie
.
.

Salt la extagere

Rutina pentru
ciclul de ntrerupere

Salt la decodificarea codului op.

nceput ciclu de execuie

.
.

Salt la ntrerupere sau extragere


.
.

Rutina pentru ADD

Rutina pentru AND

Salt la ntrerupere sau extragere


.
.
.
.
.

Rutina pentru JMP

Salt la ntrerupere sau extragere

Fig. 4.10
In figura 4.11 se prezint elementele principale ale unei uniti de comand
microprogramate.
Registrul de microadrese RMA conine adresa urmtoarei microinstruciuni
care va fi citit din memoria de comand. Dup citirea din memoria de comand,
microinstruciunea este transferat n registrul de microinstruciuni RMI.
Unitatea microprogramat are aceleai intrri (Rl, indicatori de condiii ai
UAL, ceas) i ieiri (semnale de comand) ca i o unitate de comand cablat.
Unitatea de comand microprogramat funcioneaz astfel:
1. Instruciunea din RI este decodificat de decodificatorul 1 rezultnd
adresa din memoria de comand a urmtoarei microinstruciuni.
2. Pentru extragerea microinstruciunii a crei adres se gsete n
RMA, logica de secveniere activeaz un semnal de citire a memoriei de
comand.
3. Microinstruciunea extras din memoria de comand este depus n
registrul de microinstruciuni (RMI).
4. Dup decodificarea microinstruciunii din RMI sunt activate semnalele
de control pentru UCP, magistrala de control i pentru blocul de secveniere.
5. Logica de secveniere ncarc o nou adres n registrul de microadrese,
pe baza informaiilor despre adresa urmtoare de la registrul de microinstruciuni
RMI i a indicatorilor de condiii ai UAL.
Dezavantajul unitilor microprogramate este c sunt mai lente dect cele
cablate realizate ntr-o tehnologie comparabil.

RI

Decodificator 1

Indicatori de
condiii
Logic de
secveniere

RMA

Ceas

READ

Memorie de
comand

RMI

Decodificator 2

Semnale de
control UCP

Semnale de control
pe magistrala

Fig. 4.11 Unitate de comand microprogramat


Cu toate acestea, micro-programarea este tehnica cea mai utilizat pentru
implementarea unitilor de comand.

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