Sunteți pe pagina 1din 13

Structura sistemelor de calcul Lucrarea de laborator Nr.

4. CALCULATOARE MICROPROGRAMATE

n aceast lucrare se prezint principiul calculatoarelor microprogramate i un exemplu de arhitectur microprogramat, n dou variante: prima utilizeaz microprogramarea pe orizontal, iar a
doua utilizeaz microprogramarea pe vertical. Se urmrete exemplificarea modului de alegere a
formatului microinstruciunilor, urmrirea execuiei acestora i implementarea unor instruciuni de
transfer, aritmetice i logice cu microinstruciunile prezentate.

4.1 Principiul calculatoarelor microprogramate


4.1.1. Introducere
Calculatoarele microprogramate se caracterizeaz prin faptul c semnalele de comand sunt
reunite sub forma unor succesiuni de cifre binare, n cuvinte numite cuvinte de comand. Succesiunea
cuvintelor de comand prin care se indic secvena corect a operaiilor elementare (microoperaiilor)
care trebuie executate pentru fiecare instruciune este memorat ntr-o memorie de comand (numit i
memorie de control). Fiecare cuvnt de comand memorat n memoria de control reprezint o
microinstruciune i execut una sau mai multe microoperaii. Secvena microinstruciunilor formeaz
un microprogram.
Deosebirea principal dintre un calculator cu o unitate de comand cablat i unul cu o unitate
de comand microprogramat const n modul n care unitatea de comand trece dintr-o stare n alta
pentru a genera semnalele de comand, astfel:
n cazul cablat, o stare corespunde unei faze, caracterizat prin activarea unui semnal de faz.
ntr-o faz sunt generate anumite semnale de comand necesare execuiei unei instruciuni.
n cazul microprogramat, o stare corespunde unei microinstruciuni, care codific microoperaiile care trebuie executate n timpul aceluiai ciclu de ceas. Pentru execuia unei instruciuni a calculatorului, este necesar execuia unei secvene de microinstruciuni.
O unitate de comand microprogramat are dou funcii principale:
Funcia de control propriu-zis, prin care se definesc microoperaiile care trebuie executate.
Aceast definire cuprinde de obicei selecia operanzilor, a operaiei de executat, selecia destinaiei rezultatului etc.
Funcia de secveniere, prin care se definete adresa microinstruciunii urmtoare. Aceast definire se refer la identificarea sursei pentru adresa urmtoare, la controlul condiiilor de test
sau la generarea direct a valorii adresei.

4.1.2. Microprogramarea pe orizontal i pe vertical


n cazul microprogramrii pe orizontal, o microinstruciune este format din urmtoarele
cmpuri principale (Figura 4.1):
Una sau mai multe cmpuri ale semnalelor de comand, prin care se activeaz semnalele de
comand pentru controlul circuitelor.

Structura sistemelor de calcul Lucrarea de laborator Nr. 4


Cmpul de adres, care conine adresa urmtoarei microinstruciuni care se va executa dac o
anumit condiie este adevrat. Dac aceast condiie este fals, se va executa urmtoarea
microinstruciune din memoria de control.
Cmpul de condiii, care selecteaz urmtoarea microinstruciune care va fi executat.

Figura 4.1. Formatul general al unei microinstruciuni orizontale.

Exist cte un bit pentru fiecare semnal de comand intern al UCP i un bit pentru fiecare
semnal de control al magistralei sistem. Cmpul de condiie arat condiia n care se execut un salt n
microprogram, iar cmpul de adres conine adresa la care se efectueaz saltul. O asemenea
microinstruciune este interpretat astfel:
1. Pentru execuia microinstruciunii, se activeaz toate semnalele de comand crora le corespunde un bit de 1 n cmpul semnalelor de comand, i se dezactiveaz cele crora le corespunde un bit de 0. Semnalele de comand care vor fi activate determin execuia uneia sau a
mai multor microoperaii.
2. n cazul n care condiia indicat de cmpul de condiie este fals, se execut urmtoarea
microinstruciune din microprogram.
3. n cazul n care condiia indicat de cmpul de condiie este adevrat, se execut microinstruciunea indicat de cmpul de adres.
Microprogramarea pe orizontal se mai numete microprogramare hardware. Microinstruciunile au n acest caz o lungime mare i controleaz mai multe resurse hardware care funcioneaz n
paralel. Fiecrei resurse din calculator i se aloc un cmp sau un bit prin care resursa este controlat.
Semnificaiile asociate cmpurilor microinstruciunii nu depind de semnificaiile altor cmpuri. Nici
un cmp nu poate avea, pentru valori identice coninute de cmpul respectiv, dou sau mai multe semnificaii distincte.
Dezavantajul microprogramrii pe orizontal este c nu se pot utiliza n mod eficient biii din
cuvntul de microprogram. Nu toate microinstruciunile aloc semnificaii utile tuturor cmpurilor
disponibile.
Se poate concepe un cuvnt de microprogram cu un numr mai redus de bii, a cror semnificaie s depind de microinstruciunea respectiv. La limit, se poate obine un cuvnt de
microprogram cu numai dou cmpuri: primul cmp conine un cod prin care se aloc celui de-al doilea cmp diferite semnificaii. Acest tip de microprogramare se numete microprogramare pe vertical. Toate resursele calculatorului sunt controlate de acelai cmp n momente distincte de timp,
indicate de cmpul de semnificaii. Structura unui calculator care utilizeaz microprogramarea pe vertical poate fi simpl, dar viteza de execuie scade proporional cu numrul de semnificaii distincte ale
cmpului de cod al microinstruciunii.
Microinstruciunile verticale execut operaii simple, de exemplu: ncrcare, memorare, adunare, salt. Acest tip de microinstruciuni sunt asemntoare cu instruciunile n limbaj main, care
conin un cod de operaie i unul sau mai muli operanzi, motiv pentru care microprogramarea pe vertical se mai numete microprogramare software.
n practic, se utilizeaz microinstruciuni diagonale, care combin caracteristicile microinstruciunilor orizontale i verticale: au o capacitate mrit de control simultan al resurselor hardware
ale calculatorului, i, n acelai timp, sunt uor de neles i de implementat.

Structura sistemelor de calcul Lucrarea de laborator Nr. 4

Lungimea unei microinstruciuni depinde nu numai de tipul acesteia (orizontal sau vertical),
ci i de gradul de codificare. Microinstruciunea cea mai simpl nu este codificat deloc, astfel nct
fiecrui bit i corespunde un semnal de comand. Aceast soluie ofer flexibilitate maxim, deoarece
schimbarea unui microprogram necesit numai modificarea coninutului memoriei de control. Codificarea pe grupuri presupune combinarea n cmpuri diferite a biilor care controleaz resursele mutual
exclusive ale calculatorului. Fiecrui cmp i se ataeaz un decodificator. La cealalt extrem, se poate
realiza codificarea complet a microinstruciunii. Aceast soluie necesit un numr minim de bii
pentru cuvntul de microinstruciune, dar flexibilitatea oferit este de asemenea minim.

4.1.3. Structura unei uniti de comand microprogramate


n Figura 4.2 se prezint elementele principale ale unei uniti de comand microprogramate.

Figura 4.2. Schema bloc a unei uniti de comand microprogramate.

Microinstruciunile sunt pstrate n memoria de control. Registrul de microadrese RMA conine


adresa urmtoarei microinstruciuni care se va citi din memoria de control. Dup citire,
microinstruciunea este transferat n registrul de microinstruciuni RMI. Prin acest registru se activeaz semnalele de control. Citirea unei microinstruciuni din memoria de control este echivalent cu
execuia microinstruciunii respective. Logica de secveniere ncarc registrul de microadrese i activeaz semnalul se citire.
Comparativ cu o unitate de comand cablat, unitatea microprogramat are aceleai intrri
(registrul de instruciuni RI, indicatorii de condiii ai UAL, semnalul de ceas) i ieiri (semnalele de comand). Unitatea de comand funcioneaz astfel:
1. Pentru execuia unei instruciuni, logica de secveniere activeaz semnalul de citire a memoriei de control.
2. Cuvntul a crei adres se specific n registrul de microadrese este citit n registrul de
microinstruciuni.

Structura sistemelor de calcul Lucrarea de laborator Nr. 4


3. Coninutul registrului de microinstruciuni activeaz semnalele de comand i genereaz informaii despre adresa urmtoare pentru logica de secveniere.
4. Logica de secveniere ncarc o nou adres n registrul de microadrese, pe baza informaiilor
despre adresa urmtoare de la registrul de microinstruciuni i a indicatorilor de condiii ai
UAL.

n Figura 4.2 exist dou decodificatoare. Primul decodificator translateaz codul operaiei din
registrul de instruciuni RI ntr-o adres a memoriei de control. Al doilea decodificator nu este utilizat
pentru microinstruciunile orizontale, ci pentru cele verticale. Acest decodificator translateaz codul
operaiei din cadrul microinstruciunii n semnale de comand individuale.
Memoria de control poate fi de tip ROM sau de tip RAM. n ultimul caz, coninutul acestei memorii se poate modifica sub controlul microprogramului, rezultnd o microprogramare dinamic. O
structur de acest tip este denumit n mod uzual Writable Control Store i permite utilizatorilor s
ncarce microprograme proprii n vederea extinderii setului de instruciuni existent. Unele structuri au
o configuraie mixt, existnd att o memorie ROM, ct i o memorie de tip RAM. O parte din
microprograme sunt fixe, iar altele pot fi pstrate temporar n memoria RAM. Dac trebuie executat o
anumit instruciune i microprogramul asociat acesteia nu se afl n memoria RAM, este necesar ncrcarea acestui microprogram ntr-un spaiu liber din memorie. n acest caz, trebuie s existe posibilitatea de a ncrca un microprogram la orice adres de memorie. Adresele de salt ntr-un astfel de
microprogram nu pot fi absolute, ci trebuie s fie relative, de obicei fa de adresa primei
microinstruciuni din microprogram.
Avantajul principal al utilizrii microprogramrii pentru implementarea unitilor de comand
este simplificarea proiectrii acestora. O unitate de comand cablat trebuie s conin o logic complex pentru secvenierea microoperaiilor din ciclul de instruciune. n schimb, decodificatoarele i
logica de secveniere utilizate ntr-o unitate de comand microprogramat sunt simple.
Dezavantajul principal al unitilor de comand microprogramate este c acestea sunt mai
lente dect cele cablate realizate ntr-o tehnologie comparabil. n mod obinuit, o microinstruciune
este executat pe durata a dou perioade de ceas, necesare pentru citirea microinstruciunii, respectiv
pentru activarea semnalelor de comand. La un calculator cu o unitate de comand cablat, fiecare
microoperaie se execut ntr-o perioad de ceas. Exist diferite soluii pentru creterea vitezei, dintre
care se amintesc urmtoarele:
Utilizarea unei memorii de control cu un timp de acces redus;
Suprapunerea execuiei microinstruciunii curente cu extragerea din memoria de control a
microinstruciunii urmtoare;
Reducerea numrului de microinstruciuni, executnd mai multe operaii concurente pe durata
unui ciclu de microinstruciune;
Combinarea microprogramrii cu comanda cablat, prin generarea de ctre fiecare microinstruciune a unei secvene de comand pentru mai multe cicluri de microoperaii.

4.2. Exemplu de calculator microprogramat pe orizontal


4.2.1. Structura cii de date
Microarhitectura care se prezint ca exemplu (Figura 4.3) conine 16 registre, care formeaz o
memorie de lucru. Dintre acestea, sunt accesibile la nivelul instruciunilor (macroinstruciunilor) urmtoarele registre:
PC
AC
SP

Contor de program (Program Counter);


Registru acumulator (Accumulator);
Registru indicator de stiv (Stack Pointer).

Structura sistemelor de calcul Lucrarea de laborator Nr. 4

Figura 4.3. Exemplu de microarhitectur.

Celelalte registre sunt accesibile numai la nivel de microprogramare. Acestea sunt urmtoarele:
IR
TIR
0, +1, -1
AMASK, BMASK
A, B,

..., F

Registru de instruciuni (Instruction Register);


Registru de instruciuni temporar (Temporary Instruction Register);
Registre care pstreaz constantele 0, +1, respectiv -1;
Registre care pstreaz mti utilizate pentru extragerea unor cmpuri din cadrul cuvntului de instruciune;
Registre care nu au funcii specificate.

Fiecare registru i poate depune coninutul pe una sau ambele magistrale interne A i B, i fiecare poate fi ncrcat de pe magistrala C. Magistralele A i B sunt legate la intrrile unei UAL care poate
executa urmtoarele funcii:

A + B;
A AND B;
A;
NOT A.

Structura sistemelor de calcul Lucrarea de laborator Nr. 4

Funcia UAL este selectat prin semnalele F0 i F1. UAL genereaz doi indicatori de stare: N
(Negativ) i Z (Zero).
Ieirea UAL este conectat la circuitul de deplasare, care poate efectua deplasarea la dreapta i
la stnga cu o poziie. Este posibil deplasarea la stnga cu dou poziii a unui registru R, prin calcularea sumei R+R i deplasarea sumei la stnga cu o poziie. Funcia circuitului de deplasare este selectat
prin semnalele S0 i S1.
Magistralele A i B sunt conectate la UAL prin intermediul a dou circuite latch, LA i LB.
Acestea sunt necesare deoarece UAL este un circuit combinaional care calculeaz n mod continuu
ieirea pentru intrrile curente i funcia selectat. Aceast organizare poate crea probleme n cazul
unor instruciuni de forma A := A+B. Dup memorarea rezultatului n A, valoarea de pe magistrala A se
modific, ceea ce face ca ieirea UAL i valoarea de pe magistrala C s se modifice de asemenea. n
consecin, valoarea eronat se poate memora n A. Prin inserarea circuitelor latch pe magistralele A i
B, acestea vor memora valorile iniiale A i B, astfel nct UAL este protejat fa de schimbrile de pe
magistrale atunci cnd o nou valoare este memorat n registrele de lucru. ncrcarea LA i LB este
controlat prin semnalele L0 i L1.
Pentru comunicarea cu memoria, microarhitectura conine dou registre: registrul de adrese al
memoriei MAR (Memory Address Register) i registrul de date al memoriei MBR (Memory Buffer
Register). Registrul MAR se poate ncrca din LB, n paralel cu o operaie a UAL; ncrcarea este validat de semnalul M0. Registrul MBR se poate ncrca cu ieirea circuitului de deplasare n paralel cu,
sau n locul memorrii n registre; semnalul de validare este M1. nscrierea n memorie din registrul
MBR este validat de semnalul M2, iar citirea din memorie n registrul MBR este validat de semnalul
M3. Data citit din memorie se poate aplica la intrarea din stnga a UAL prin multiplexorul AMUX.
Semnalul A0 determin dac la intrarea UAL se aplic coninutul LA sau MBR.

4.2.2. Formatul microinstruciunilor


Pentru stabilirea formatului microinstruciunilor orizontale, trebuie s se precizeze mai nti
toate semnalele necesare controlului cii de date. Acestea se pot mpri n urmtoarele grupe funcionale (se indic numrul de semnale din fiecare grup):
16
16
16
2
1
2
2
4
2

ncrcarea magistralei A;
ncrcarea magistralei B;
ncrcarea registrelor de pe magistrala C;
Controlul circuitelor latch LA i LB (L0, L1);
Controlul AMUX (A0);
Controlul funciei UAL (F0, F1);
Controlul circuitului de deplasare (S0, S1);
Controlul registrelor MAR i MBR (M0, M1, M2, M3);
Citirea sau scrierea din / n memorie (RD, WR).

Ca o prim soluie, se poate utiliza un registru de control de 61 bii, cu un bit pentru fiecare
semnal de control. Se poate reduce numrul biilor necesari pentru controlul cii de date, cu preul unei
creteri a numrului de circuite. Informaia de control pentru magistrala A se poate codifica pe 4 bii,
utiliznd un decodificator pentru a genera cele 16 semnale de control. n mod similar se poate codifica
informaia de control pentru magistrala B. n cazul magistralei C, n principiu este posibil memorarea
simultan a unei valori n mai multe registre, dar aceast facilitate nu este util n practic. De aceea,
se poate codifica i informaia de control pentru magistrala C. Se reduce astfel numrul de semnale cu
312 = 36, fiind necesare deci 25 de semnale.
Semnalele L0 i L1 se pot nlocui cu semnalul de tact, deoarece aceste semnale sunt necesare
ntotdeauna. Numrul de semnale necesare va fi atunci 23.
Un semnal adiional care poate fi util este cel pentru validarea sau invalidarea memorrii coninutului magistralei C n registre. n anumite situaii, se dorete efectuarea unei operaii prin UAL pentru a poziiona indicatorii de stare N i Z, fr memorarea rezultatului. Acest semnal se va nota cu ENC
(ENable C).

Structura sistemelor de calcul Lucrarea de laborator Nr. 4

n acest moment, exist 24 semnale de control. Semnalul RD se poate utiliza pentru a controla
ncrcarea registrului MBR de pe magistrala sistem (n locul semnalului M3), iar semnalul WR se poate
utiliza pentru a controla transferul acestui registru pe magistrala sistem (n locul semnalului M2).
Aceast observaie reduce numrul semnalelor independente de control la 22.

Figura 4.4. Formatul microinstruciunilor orizontale.

n continuare se stabilete formatul microinstruciunilor. n Figura 4.4 se indic un asemenea


format, n care exist dou cmpuri adiionale: COND i ADR. Microinstruciunea conine 13 cmpuri,
acestea fiind urmtoarele:
AMUX
COND
UAL
SH
MBR
MAR
RD
WR
ENC
C
B
A
ADR

Controleaz intrarea din stnga a UAL: 0 = LA; 1 = MBR.


Condiia de salt: 00 = fr salt; 01 = salt dac N = 1; 10 = salt dac Z = 1; 11 = salt
necondiionat.
Funcia UAL: 00 = A+B; 01 = A AND B; 10 = A; 11 = NOT A.
Funcia circuitului de deplasare: 00 = fr deplasare; 01 = deplasare la dreapta;
10 = deplasare la stnga.
ncrcarea MBR de la circuitul de deplasare: 0 = fr ncrcare; 1 = cu ncrcare.
ncrcarea MAR din LB: 0 = fr ncrcare; 1 = cu ncrcare.
Citire din memorie: 0 = fr citire; 1 = ncrcare MBR din memorie.
Scriere n memorie: 0 = fr scriere; 1 = scriere MBR n memorie.
Controlul memorrii n registre: 0 = fr memorare; 1 = cu memorare.
Selecia registrului pentru memorare, dac ENC = 1: 0000 = PC, 0001 = AC, 0010 =
SP etc.
Selecia sursei pentru magistrala B: 0000 = PC, 0001 = AC, 0010 = SP etc.
Selecia sursei pentru magistrala A: 0000 = PC, 0001 = AC, 0010 = SP etc.
Adresa de salt (0 - 255).

4.2.3. Secvenierea microinstruciunilor


Un ciclu de baz al UAL const din ncrcarea circuitelor latch LA i LB, efectuarea operaiei de
ctre UAL i circuitul de deplasare, i memorarea rezultatului. Pentru a asigura secvenierea corect a
operaiilor, se introduce un ceas cu 4 faze (subcicluri). Operaiile din fiecare subciclu sunt urmtoarele:
1. Se ncarc urmtoarea microinstruciune de executat n registrul de microinstruciuni RMI.
2. Se depune coninutul registrelor pe magistralele A i B i se memoreaz acest coninut n LA i
LB.
3. Dup ce intrrile sunt stabile, se acord timp pentru ca UAL i circuitul de deplasare s genereze o ieire stabil i se ncarc registrul MAR, dac este necesar.
4. Dup ce ieirea circuitului de deplasare este stabil, se memoreaz coninutul magistralei C n
registre i se ncarc registrul MBR, dac aceste operaii sunt necesare.
Calea de date se completeaz cu o seciune de control. Schema bloc detaliat este prezentat n
Figura 4.5. Memoria de control MC este o memorie rapid care pstreaz microinstruciunile. Microinstruciunile sunt de 32 de bii, iar spaiul de adresare este de 256 de cuvinte. Registrul de adrese al
memoriei de control este contorul de microprogram MPC (Micro Program Counter), iar registrul de
date al MC este registrul de microinstruciuni RMI.

Structura sistemelor de calcul Lucrarea de laborator Nr. 4

Figura 4.5. Schema bloc detaliat a arhitecturii care utilizeaz microprogramarea pe orizontal.

n subciclul 1 se ncarc registrul de microinstruciuni RMI din memoria de control.


n subciclul 2 coninutul RMI este stabil, diferitele sale cmpuri controlnd calea de date.
Decodificatoarele DEC A i DEC B efectueaz o decodificare 4:16 a fiecrui cmp, pentru a controla
semnalele de validare a ieirilor registrelor. n acelai subciclu, semnalul de ceas activeaz circuitele
latch LA i LB, furniznd intrri stabile pentru UAL n restul ciclului. n timpul depunerii datelor pe magistralele A i B, se incrementeaz MPC pentru a se genera adresa urmtoarei microinstruciuni.
n subciclul 3 UAL i circuitul de deplasare produc rezultate valide. Dei UAL este un circuit
combinaional, timpul necesar pentru generarea rezultatului este determinat de timpul de propagare al
transportului, i nu de ntrzierile prin pori.
n subciclul 4 coninutul magistralei C poate fi memorat n registrele de lucru i n registrul
MBR. Decodificatorul DEC C are ca intrri cmpul ENC, a patra linie a generatorului de ceas i cmpul
C, genernd 16 semnale de control. Un registru este ncrcat dac sunt ndeplinite urmtoarele condiii:
ENC = 1;
Este subciclul 4;
Registrul a fost selectat de cmpul C.
Registrul MBR este de asemenea ncrcat n subciclul 4 n cazul n care cmpul MBR este 1.
Este necesar un mecanism pentru a permite salturi condiionate, pentru a se putea lua diferite
decizii. n acest scop s-au prevzut dou cmpuri n fiecare microinstruciune: ADR, care este adresa
succesorului potenial al microinstruciunii curente, i COND, care determin dac urmtoarea microinstruciune este ncrcat din contorul de microprogram MPC sau din cmpul ADR. Fiecare
microinstruciune conine n mod potenial un salt, deoarece aceste salturi sunt des utilizate n

Structura sistemelor de calcul Lucrarea de laborator Nr. 4

microprograme. Permind ca fiecare microinstruciune s aib doi succesori, viteza de execuie va fi


mai ridicat.
Selectarea microinstruciunii urmtoare se efectueaz de circuitul de microsecveniere (MS) n
timpul subciclului 4, cnd indicatorii de stare N i Z ai UAL sunt valizi. Circuitul MS combin indicatorii N i Z cu cei doi bii ai cmpului COND, pentru a genera un semnal de ieire. Ieirea circuitului MS
controleaz multiplexorul MMUX.
Accesul la memorie dureaz considerabil mai mult dect timpul necesar pentru execuia unei
singure microinstruciuni. Pentru ca exemplul s fie mai realist, se va presupune c dac o
microinstruciune ncepe citirea memoriei, prin activarea semnalului RD, trebuie ca acest semnal s fie
activ i n timpul urmtoarei microinstruciuni executate. Data devine disponibil dup dou microinstruciuni din momentul n care este iniiat citirea.

4.2.4. Limbajul de microasamblare


Pentru scrierea microprogramelor este nevoie de un limbaj simbolic. O notaie posibil este
specificarea unei microinstruciuni n fiecare linie, indicnd fiecare cmp cu valoarea diferit de zero.
De exemplu, pentru adunarea registrelor AC i A i memorarea rezultatului n registrul AC, se poate
scrie:
ENC = 1, C = 1, B = 1, A = 11

O alt posibilitate este utilizarea unei notaii de tipul unui limbaj de nivel nalt. n limbajul de
microprogramare ales, denumit MAL, se vor utiliza notaii asemntoare limbajului Pascal.
Memorrile n registre sunt notate prin instruciuni de atribuire. Exemplul anterior devine:
ac := ac + a;

Pentru a indica funcia executat de UAL, se poate scrie:


ac
a
ac
a

:=
:=
:=
:=

ac + a;
band (ir, amask);
a;
inv (a);

{adunare}
{I logic}
{funcia identic}
{complement logic}

Deplasrile sunt notate prin funciile lshift i rshift, de exemplu:


tir := lshift (tir + tir);

Salturile necondiionate sunt indicate prin instruciunea goto. Salturile condiionate pot testa
indicatorul N sau Z, de exemplu:
if n then goto 15;

Asignrile i salturile pot fi combinate n aceeai linie.


Pentru testarea unui registru fr memorarea acestuia ntr-un alt registru, se introduce
pseudovariabila alu. Acesteia i se poate asigna o valoare care este aplicat la una din intrrile UAL, de
exemplu:
alu := tir; if n then goto 40;

Registrul TIR este trecut prin UAL, nemodificat, selectnd pentru aceasta funcia identic
(transferul magistralei A), astfel nct se poate testa bitul cel mai semnificativ. Utilizarea variabilei alu
implic ENC = 0.
Citirea i scrierea memoriei se indic prin rd, respectiv wr.
Ordinea diferitelor pri ale liniilor surs este arbitrar. Fiecare linie este etichetat cu adresa
de memorie.
n Tabelul 4.1 se prezint unele microinstruciuni orizontale n limbajul MAL, mpreun cu
coninutul cmpurilor din cuvntul de microinstruciune.

10

Structura sistemelor de calcul Lucrarea de laborator Nr. 4


Tabelul 4.1. Exemple de microinstruciuni orizontale n limbajul MAL.
A
M
U
X

C
O U
N A
D L

S
H

M M R
B A D
R R

W E
R N
C

A
D
R

mar:=pc; rd;

00

rd;

00

ir:=mbr;

00

pc:=pc+1;

00

mar:=ir; mbr:=ac; wr;

00

alu:=tir; if n then goto 9;

09

ac:=inv(mbr);

00

tir:=lshift(tir); if n then goto 25;

25

alu:=ac; if z then goto 22;

22

ac:=band(ir,amask); goto 0;

00

tir:=lshift(ir+ir); if n then goto 30;

30

Microinstruciune

4.3. Exemplu de calculator microprogramat pe vertical


Pentru a clarifica distincia dintre microprogramarea pe orizontal i cea pe vertical, se va
reproiecta microarhitectura prezentat, astfel nct s se utilizeze microinstruciuni verticale.

4.3.1. Microinstruciunile verticale


Microinstruciunile verticale vor conine trei cmpuri de cte 4 bii, cu un total de 12 bii. Primul cmp, notat cu OP, conine codul operaiei. Celelalte dou cmpuri sunt notate cu R1 i R2, specificnd dou registre. Cmpul R1 controleaz att magistrala A, ct i magistrala C. Pentru microinstruciunile de salt, aceste dou cmpuri sunt combinate pentru a forma un singur cmp de 8 bii,
notat prin R.
Fiecare microinstruciune vertical execut o singur funcie. Sunt necesare microinstruciuni
diferite pentru operaiile UAL, citirea i scrierea memoriei, efectuarea salturilor n microprogram etc.,
deoarece cmpurile care controleaz aceste funcii nu mai sunt prezente. Lista microinstruciunilor
verticale este prezentat n Tabelul 4.2.
Tabelul 4.2. Lista microinstruciunilor verticale.
Cod op.

Mnemonic

Semnificaie

Operaii

0000

ADD

Adunare

r1:=r1+r2

0001

AND

I logic

r1:=r1 AND r2

0010

MOVE

Transfer ntre registre

r1:=r2

0011

COMPL

Complement logic

r1:=inv(r2)

0100

LSHIFT

Deplasare la stnga

r1:=lshift(r2)

0101

RSHIFT

Deplasare la dreapta

r1:=rshift(r2)

0110

STMBR

Memorare MBR n registru

r1:=mbr

0111

TEST

Test registru

if r1<0 then n:=1,


if r1=0 then z:=1

1000

BEGRD

nceput citire

mar:=r1; rd

1001

BEGWR

nceput scriere

mar:=r1; mbr:=r2; wr

1010

CONRD

Continuare citire

rd

1011

CONWR

Continuare scriere

wr

Structura sistemelor de calcul Lucrarea de laborator Nr. 4


Cod op.

Mnemonic

Semnificaie

Operaii

1100

JUMPN

Salt dac N = 1

if n then goto r

1101

JUMPZ

Salt dac Z = 1

if z then goto r

1110

JUMP

Salt necondiionat

goto r

1111

11

4.3.2. Structura seciunii de control


Calea de date este identic cu cea a arhitecturii care utilizeaz microprogramarea pe orizontal. Structura seciunii de control este modificat (Figura 4.6).

Figura 4.6. Schema bloc detaliat a arhitecturii care utilizeaz microprogramarea pe vertical.

O mare parte a seciunii de control este aceeai. Memoria de control i registrul de microinstruciuni RMI conin cuvinte de 12 bii. Decodificatoarele 4:16 DEC R1 i DEC R2 pentru cmpurile
R1, respectiv R2, sunt similare cu cele pentru cmpurile A, B i C ale microinstruciunilor orizontale.
Diferenele principale sunt reprezentate de circuitele notate cu AND, NZ i DEC OP.
Circuitul AND este necesar deoarece cmpul R1 controleaz acum att magistrala A, ct i magistrala C. Magistrala A este ncrcat n timpul subciclului 2, dar registrele nu pot fi ncrcate de pe
magistrala C doar dup ce coninutul circuitelor latch LA i LB este stabil, n subciclul 3. Se execut
funcia I logic ntre cele 16 semnale decodificate de ctre circuitul DEC R1, semnalul de ceas corespunztor subciclului 4, i un semnal de la circuitul DEC OP, semnal care este echivalent cu vechiul
semnal ENC. Rezultatul este c cele 16 semnale care valideaz ncrcarea datelor n registre sunt activate n aceleai condiii ca i la utilizarea microinstruciunilor orizontale.

12

Structura sistemelor de calcul Lucrarea de laborator Nr. 4

NZ este un registru de 2 bii care este utilizat pentru memorarea indicatorilor N i Z ai UAL.
Aceast memorare este necesar deoarece UAL va executa operaia pe durata unei microinstruciuni,
dar indicatorii de stare nu vor fi testai dect n urmtoarea microinstruciune. Deoarece UAL nu are
memorie intern, iar indicatorii de stare sunt actualizai la o nou operaie n care este implicat UAL,
valoarea indicatorilor se poate pierde dac acetia nu se memoreaz.
Circuitul DEC OP are ca intrri cei 4 bii ai cmpului OP din microinstruciune, i genereaz 13
semnale distincte, care controleaz circuitul AND, circuitul de microsecveniere MS, circuitul NZ,
multiplexorul AMUX, UAL, circuitul de deplasare DEPL, registrele MAR i MBR. Circuitul DEC OP genereaz de asemenea semnalele RD i WR.
Pentru fiecare microinstruciune, trebuie s se determine care din cele 13 semnale sunt active.
Pentru controlul UAL, a circuitului de deplasare i a circuitului de microsecveniere exist cte dou
semnale, care sunt notate cu indicii 0 i 1. Valorile semnalelor generate de circuitul DEC OP pentru
fiecare microinstruciune sunt indicate n Tabelul 4.3. De exemplu, microinstruciunile ADD, AND,
MOVE i COMPL utilizeaz funcia de adunare, funcia I logic, funcia identic, respectiv funcia de
complementare logic a UAL. Funcia UAL este selectat cu semnalele UAL1 i UAL0. Ca un alt exemplu, microinstruciunea BEGRD utilizeaz funcia identic a UAL, ncarc registrul MAR i activeaz
semnalul RD. Pentru ca circuitul de microsecveniere s fie compatibil cu cel utilizat la cealalt variant de microarhitectur, semnalele MS1, MS0 trebuie s fie 00 pentru cazul n care nu se execut salt,
01 pentru un salt condiionat de indicatorul N (JUMPN), 10 pentru un salt condiionat de indicatorul Z
(JUMPZ), i 11 pentru un salt necondiionat (JUMP).
Pentru scrierea microprogramelor utiliznd microinstruciunile verticale, se poate utiliza fie o
notaie tipic pentru un limbaj de asamblare, fie un limbaj de tipul limbajului MAL. De notat c instruciunea MAL de forma alu:=registru utilizeaz microinstruciunea TEST pentru a seta indicatorii
N i Z.

Tabelul 4.3. Semnalele de comand generate de circuitul DEC OP.


Cod op.

Mnemonica UAL1 UAL0

SH1

SH0

NZ

AMUX

AND MAR MBR

RD

WR

MS1

MS0

0000

ADD

0001

AND

0010

MOVE

0011

COMPL

0100

LSHIFT

0101

RSHIFT

0110

STMBR

0111

TEST

1000

BEGRD

1001

BEGWR

1010

CONRD

1011

CONWR

1100

JUMPN

1101

JUMPZ

1110

JUMP

4.4. Aplicaii
4.4.1. Lansai n execuie programul de simulare a arhitecturii care utilizeaz
microprogramarea pe orizontal (MICRO.EXE). Urmrii execuia unei secvene de microinstruciuni
orizontale.

Structura sistemelor de calcul Lucrarea de laborator Nr. 4

13

4.4.2. Presupunem c microarhitectura care utilizeaz microinstruciuni orizontale este o parte


a unui calculator cu dimensiunea memoriei de 64 K cuvinte, lungimea cuvntului fiind de 24 bii.
Formatul instruciunilor acestui calculator este urmtorul:
23
COD

19 18
I

17
X

16
IM

15

0
ADR

Cmpurile au semnificaia urmtoare:


ADR
IM
X
I
COD

Cmpul de adres al operandului (16 bii);


Indicatorul de adresare imediat: dac IM = 1, cmpul ADR conine o dat imediat;
Indicatorul de adresare indexat: dac X = 1, adresa operandului este suma dintre coninutul registrului de index i coninutul cmpului ADR;
Indicatorul de adresare indirect: dac I = 1, cmpul ADR conine adresa cuvntului de
memorie care conine adresa operandului;
Cmpul de cod al operaiei (5 bii).

Dac I = X = IM = 0, adresarea este direct, deci cmpul ADR conine adresa operandului de
memorie. Adresele reprezint adrese de cuvinte i nu adrese de octei.
Implementai cu microinstruciunile orizontale existente diferite instruciuni ale calculatorului
didactic.
4.4.3. Alegei un set minimal de instruciuni ale calculatorului i codificai instruciunile din
acest set. Scriei microprogramul care realizeaz decodificarea instruciunilor pentru setul de instruciuni ales, utiliznd microinstruciuni orizontale.
4.4.4. Extindei setul de instruciuni al calculatorului didactic cu o instruciune de nmulire i
una de mprire. Scriei secvenele de microinstruciuni pentru implementarea acestor instruciuni.
4.4.5. Rescriei secvenele de implementare a instruciunilor calculatorului didactic utiliznd
microinstruciuni verticale.

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