Documente Academic
Documente Profesional
Documente Cultură
SSC04
SSC04
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.
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.
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.
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.
Celelalte registre sunt accesibile numai la nivel de microprogramare. Acestea sunt urmtoarele:
IR
TIR
0, +1, -1
AMASK, BMASK
A, B,
..., F
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.
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.
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).
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.5. Schema bloc detaliat a arhitecturii care utilizeaz microprogramarea pe orizontal.
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;
:=
:=
:=
:=
ac + a;
band (ir, amask);
a;
inv (a);
{adunare}
{I logic}
{funcia identic}
{complement logic}
Salturile necondiionate sunt indicate prin instruciunea goto. Salturile condiionate pot testa
indicatorul N sau Z, de exemplu:
if n then goto 15;
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
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
00
09
ac:=inv(mbr);
00
25
22
ac:=band(ir,amask); goto 0;
00
30
Microinstruciune
Mnemonic
Semnificaie
Operaii
0000
ADD
Adunare
r1:=r1+r2
0001
AND
I logic
r1:=r1 AND r2
0010
MOVE
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
r1:=mbr
0111
TEST
Test registru
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
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
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
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.
SH1
SH0
NZ
AMUX
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.
13
19 18
I
17
X
16
IM
15
0
ADR
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.