Sunteți pe pagina 1din 8

10

SISTEME
MICROPROGRAMATE

10.1 Procesorul
Apariia conceptului de procesor este strns legat de apariia conceptului de
microprogramare. Conceptul de microprogramare, ca metod de proiectare a structurilor
de control numerice, este prezentat pentru prima dat n 1951 de Maurice Wilkes de la
Universitatea din Cambridge. El a enunat ideile principale care stau la baza
microprogramrii i a propus primul model al unei structuri de control microprogramate.
Modelul lui Wilkes este reprodus n figura 10.1, dup lucrarea [Lupu, 1995].
Vom lsa autorul s descrie funcionarea schemei concepute de el, pentru stilul clar i
concis folosit n exprimare, iar noi ne vom limita la precizarea sensului actual al unor
termeni folosii de autor, prin scrierea lui n paranteze.
ntrziere

Registru R(n)

Linii de control

Impuls
de ceas

Decodificator

Adres

..

..
MATRICEA A

MATRICEA B

De la bistabilul de condiie

Fig. 10.1 Structura de control microprogramat propus de Wilkes

166

10 SISTEME MICROPROGRAMATE

Sigur c i pn la acea dat au fost proiectate i realizate procesoare, dar controlul


propriu-zis, adic "partea mainii care genereaz impulsurile necesare validrii porilor
asociate registrelor aritmetice sau de control" erau realizate de proiectant "ntr-o manier adhoc, proiectnd scheme-bloc pn cnd ajunge la un aranjament care i satisface cerinele
tehnice i pare a fi acceptabil din punct de vedere economic." Meritul lui Wilkes este de a
oferi o metod sistematic i clar n locul abordrilor euristice sau intuitive folosite pn la
el la proiectarea procesoarelor.
"Orice operaie apelat de un ordin care corespunde codului de ordin (instruciunii)
al mainii presupune o secven de pai ce poate cuprinde transferuri ntre memorie i
registrele de control sau aritmetice i transferuri ntre registre. Fiecare din aceti pai este
realizat prin pulsarea (tranziii logice) unor anumite semnale asociate cu registrele de
control sau aritmetice. Vom numi aceti pai microoperaii. O operaie-main propriu-zis
(instruciune) este deci compus dintr-o secven sau un microprogram de microoperaii.
Figura (la noi 10.1) reprezint o schem cu ajutorul creia se obin microoperaiile. Impulsul
care genereaz o microoperaie intr n arborele de decodificare i este condus la una din
ieiri n funcie de coninutul registrului R. El trece prin matricea A i genereaz impulsuri
la unele din ieirile matricei n funcie de aranjamentul impedanelor de cuplaj. Aceste
impulsuri valideaz porile asociate registrelor de control sau aritmetice i deci realizeaz o
microoperaie. Impulsul generat n arborele de decodificare trece de asemenea i prin
matricea B genernd impulsuri la unele din ieirile acestei matrice. Aceste impulsuri sunt
conduse printr-o scurt linie de ntrziere la registrul R, schimbnd coninutul acestuia. Ca
rezultat, urmtorul impuls care intr n arbore va fi condus la alte ieiri i n consecin va
realiza o alt microoperaie. Se vede deci c fiecare rnd din matricea A corespunde unei
microoperaii din secvena necesar realizrii unei operaii-main".
Wilkes a observat c instruciunile-main pot fi implementate ca secvene de mai
multe operaii elementare care s specifice transferul de informaie ntre diferitele elemente
ale unei uniti centrale. Cu ajutorul unor pori de control proiectantul mainii poate
comanda circulaia informaiei ntre aceste elemente.
Decodificatorul accept ieirea registrului R, un registru pe n bii, care constituie
intrrile de selecie ale decodificatorului. n acest fel va fi validat o singur linie din cele 2 n
linii de ieire ale decodificatorului. Matricea de control A are 2 n linii orizontale i un numr
variabil de linii verticale(liniile de control), conectate n anumite puncte cu cele orizontale,
conform secvenelor de comand dorite. Matricea A este o memorie ROM, care constituie
memoria de microprograme. O linie orizontal poate fi conceput ca o microinstruciune,
care, atunci cnd este selectat, va activa un set predeterminat de linii de control (fiecare
valideaz la rndul ei anumite pori de control din sistem).
Matricea B este o matrice de secveniere, comandat tot de ieirea decodificatorului.
Ieirea acestei memorii stabilete coninutul registrului R pentru extragerea urmtoarei
microinstruciuni (adresa urmtoarei microinstruciuni). Linia de ntrziere are rolul de a
asigura prelungirea duratei n care informaia de control este stabil, dup schimbarea
coninutului registrului de adres R.
Logica de decizie i salt, existent n orice algoritm de control, este asigurat de un
bistabil de condiie, a crui valoare logic depinde de realizarea unui anumit test din sistem.
n funcie de rezultatul testului, bistabilul selecteaz una din cele dou ci alternative n
microprogram. Schema logic de principiu a circuitului care alege una din cele dou
variante posibile este dat n figura 10.2. Se vede uor c valoarea ieirii bistabilului de
condiie alege una din cele dou linii, dac linia de test condiie este activat.

167

10.1 Procesorul
Test condiie
(pe 1 logic)

De la bistabilul
de condiie

Matricea B

Fig.10.2 Modul de selecie a unei variante din dou posibile


Modelul propus de Wilkes folosete deci dou matrice: una pentru specificarea
microoperaiilor executate ntr-un ciclu, iar cealalt pentru determinarea adresei
microinstruciunii urmtoare. De fapt este vorba de dou memorii PROM, dar aceast
separare este convenabil din punct de vedere funcional. n practic folosim de regul o
singur memorie, lucru realizabil datorit faptului c cele dou memorii au aceeai adres.
Separarea ieirilor memoriei n linii de control i linii de adres se face prin fixarea
cmpurilor din formatul unei microinstruciuni.
[Lupu 1995] stabilete esena metodei, cu ajutorul conceptelor de microoperaie,
microinstruciune i microprogram, introduse de Wilkes: "microprogramarea nseamn
controlul unei structuri numerice prin intermediul unor cuvinte "citite" secvenial, pas cu
pas, dintr-o memorie. Prin citirea succesiv a acestor cuvinte, microinstruciunile, se
genereaz semnalele de control, microoperaiile, necesare funcionrii corecte a structurii
respective. Proiectarea unei structuri microprogramate este astfel mult mai sistematic i
mai flexibil dect cea a unei structuri convenionale realizate prin logic cablat."
n principiu, o main microprogramat este o main n care o secven coerent
de microinstruciuni este folosit pentru execuia operaiilor mari ce definesc funcionarea
mainii. Ea este alctuit din dou blocuri principale: secveniatorul de microprograme,
care genereaz adresa de microinstruciune i memoria de microprograme. Dac maina
este un procesor, atunci cele dou blocuri sunt nite automate finite numite automat de
procesare (sau unitate de tratare, dup [Stauffer 1989]), respectiv automat de comand
(sau unitate de comand, dup [Stauffer 1989]). Interconectarea celor dou blocuri este
prezentat n figura 10.3.
La un ordin (instruciune) aplicat din exterior, automatul de comand genereaz o
secven de comenzi (microinstruciuni) spre automatul de procesare. Automatul de
procesare prelucreaz datele de intrare n funcie de comenzile primite i prin indicatori ai
rezultatelor (flag-uri) influeneaz evoluia ulterioar a automatului de comand. Rezultatele
.

Ordine

Date de intrare
Automat de
procesare

Date de ieire

Comenzi
Indicatori
(flag - uri)

Automat de
comand

Semnale de
intrare
PROCESOR

Semnale de ieire

Fig. 10.3 Structura procesorului elementar

168

10 SISTEME MICROPROGRAMATE
DI
WE

RAM

CLK

Comenzi

ADR

Comenzi

DO

Date intrare

DO
RAM

WE
DO

ALU

Indicatori

O
ALU

CLK

RAM
Date
intrare
OALU

LATCH

Date ieire
RAM (ADR)

Date ieire

Fig. 10.4 Structura automatului de procesare (RALU)


prelucrrii sunt livrate ca date de ieire. Semnalele de intrare aplicate automatului de
comand sunt necesare pentru sincronizarea procesorului cu evenimente externe, iar
semnalele de ieire pot fi comenzi spre alte subsisteme externe sau semnale de sincronizare
pentru alte dispozitive externe.
Automatul de procesare este de fapt o structur ce conine o unitate aritmetico-logic
(ALU) i un set de registre, structur numit pe scurt RALU. Schema de principiu a acestui
automat i formele de und care explic funcionarea sunt date n figura 10.4. Strile
automatului sunt date de coninutul memoriei RAM, funciile de tranziie ale automatului
sunt calculate de ALU, iar LATCH-ul permite definirea structurii de tip master-slave pentru
comutarea pe front a ntregii structuri. n practic apar de cele mai multe ori structurri
suplimentare ale automatului, de tip serie (multiplexoare pe intrrile n ALU pentru selecia
operanzilor, precedate de structuri "circuit combinaional i latch" pentru memorarea unor
operanzi intermediari), paralel (extinderea numrului de operanzi prin multiplexarea
intrrilor n ALU, sau extinderea numrului ALU), sau mixt.
Automatul de comand are o structur complex i din acest motiv se prefer o
descriere funcional. Scopul automatului de comand este generarea unei secvene de
comenzi spre alt circuit (de exemplu RALU), astfel nct s se realizeze o aciune complex
prin serializarea unor aciuni elementare. Evoluia automatului este determinat de starea
proprie i de intrri i poate fi modelat, pentru n perioade de ceas, cu un arbore cu n nivele,
n care se parcurge un anumit drum, ca n figura 10.5.
(S ,C )
0 0
( S 10, C10 )
(S ,C )
11 11

(S ,C )
12 12
(S ,C )
22 22

S - starea 0
0
C 0 - comenzi generate
n starea 0
Succesiune
particular
de comenzi
(microprogram)

Fig. 10.5 Parcurgerea unei secvene de microprogram

169

10.1 Procesorul
Indicatori

Ordine
m
ROM /PLA

ROM / PLA
CLK
CLR

CLK
CLR

REGISTRU

n
MUX

Ordine

n
1

REGISTRU

Comenzi

1
n -1

Comenzi
Semnale ieire

CONVERTOR
COD

MUX

Indicatori
k
2

Semnale ieire

Fig. 10.6 Dou structuri posibile pentru automatul de comand (CROM)


Cea mai simpl schem pentru automatul de comand poate fi conceput pornind de
la schema general a unui automat cu stri finite de tip Mealy cu ntrziere: circuit logic
combinaional (CLC) i registru, n care ieirile (comenzile) se iau de la ieirea registrului
(pentru evitarea hazardului combinaional).
Circuitul combinaional trebuie s conin memoria de microprograme i schema
automatului poate fi construit folosind o memorie ROM, sau o arie logic programabil de
tip PLA, ca n figura 10.6. Se observ ns c este necesar o memorie de mare capacitate,
care nu este folosit eficient. Pentru reducerea complexitii memoriei, schema poate fi
modificat, aa cum se poate vedea n aceeai figur. Preul pltit pentru reducerea
complexitii circuitului combinaional este creterea mrimii registrului. Acest lucru nu
este ns un dezavantaj major, deoarece adugarea unui numr de k bistabile n structura
registrului nu modific semnificativ complexitatea circuitului, care este stabilit n esen de
complexitatea memoriei. Pentru c elementul central al automatului de comand este
memoria ROM, iar funcionarea lui controleaz modul n care se ncarc registrul cu date
din memorie, structura se mai numete i controler i ROM, sau CROM.
n exemplul considerat, fiecrui cuvnt din memorie i corespunde o singur
microinstruciune. Dei aceasta este cea mai obinuit structur de memorie de
microprograme, exist i alte moduri de organizare a memoriei (cu 2 microinstruciuni pe
cuvnt, structurat pe blocuri, sau pe 2 nivele n tehnica nanoprogramrii) ([Lupu 1995]).
mprirea cuvntului de microprogram n diferite zone de control numite cmpuri
definete formatul microinstruciunii. Pentru exemplul considerat n figura 10.6, structura
cmpurilor rezult din ieirile registrului de stare i este dat n figura 10.7.
Tehnica microprogramrii a fost folosit cu succes n domeniul minicalculatoarelor i
a microprocesoarelor de tip bit-slice microprogramabile i este n continuare folosit de
proiectanii procesoarelor cu arhitecturi de tip CISC (Complex Instruction Set Computer)
(printre care i procesoarele Pentium) sau a structurilor implementate cu circuite FPGA
([Bomar, 2002]).
Cuplajul dintre CROM i RALU genereaz un procesor elementar. Procesarea
presupune prelucrare n RALU i control n CROM. Microinstruciunile asociate
procesorului elementar sunt de cel puin dou feluri: de execuie i de salt. Denumirea de
.

Comenzi

Semnale de ieire

Selecie condiie
test ( k bii)

Adresa urm
toare (n 1 bii)

Selecie
MUX
adres (1 bit)

Fig. 10.7 Alocarea cmpurilor unei microinstruciuni

170

10 SISTEME MICROPROGRAMATE

elementar se datoreaz faptului c procesorul poate s execute o singur funcie, cum ar fi


cea de filtru numeric sau cea de transformator Fourier.
Pentru a realiza un procesor universal, la care ne vom gndi de acum ncolo cnd
vom auzi cuvntul simplu procesor, trebuie s construim un automat de comand care s
poat genera secvenele de comenzi asociate tuturor funciilor calculabile, adic un automat
cu o infinitate de stri. Chiar dac ne-am restrnge preteniile la un numr rezonabil de
funcii, acest lucru ar presupune un automat de foarte mare complexitate ([tefan, 1991]).
Reducerea complexitii acestui automat se poate face prin definirea unui set relativ
redus de funcii elementare, care au proprietatea c, prin combinarea lor se poate calcula
orice funcie parial recursiv. Acest lucru nu se realizeaz printr-o structurare suplimentar,
care ar consta din introducerea unei bucle suplimentare, ci prin faptul c elemente din
RALU pot comanda declanarea unor secvene n CROM.
Structura unui procesor este deja suficient de complex pentru ca evoluia sa ctre
sistemele de ordin superior s se fac pe dou ci distincte:
- definirea unui nivel funcional inferior microprogramrii, ce are asociat o bucl
suplimentar intern
- stimularea funciilor programabile ce implic o bucl suplimentar exterioar.
n primul caz nivelului microprogramrii i se adaug cel al nanoprogramrii.
Automatul de comand se mparte n dou automate: unul care genereaz microprograme i
altul care genereaz nanoprograme i comunic direct cu RALU. Printre avantajele
nanoprogramrii se numr implementarea distribuit a structurii CROM, automatele de
nanoprograme fiind mai simple funcional, deci mai rapide i mai ieftine, apoi posibilitatea
de a declana paralelisme ntr-o structur de procesare i realizarea unor funcii mai
puternice la nivelul automatului de microprograme ([tefan, 1983]).
n al doilea caz se introduce o bucl extern suplimentar prin care se conecteaz la
procesor o memorie, de regul de tip RAM, care este folosit n bun parte pentru stocarea
programelor. Aceast nou structur este forma cea mai rudimentar a unui calculator.

10.2 Calculatorul
n memoria RAM extern procesorului se afl date i programe. Aceast memorie
este rezultatul unei exteriorizri a memoriei din RALU ntr-o structur n afara procesorului,
degrevndu-l pe acesta de o capacitate de stocare mult prea mare.
Una din ideile cele mai importante ce au propulsat vertiginos din anii 40 tiina
calculatoarelor a fost aceea de a stoca n aceeai memorie datele i instruciunile. Ideea
aparine matematicianului John von Neumann i ea a folosit la realizarea calculatoarelor,
fiind modelul dominant n realizrile concrete de calculatoare. Reprezentarea simplificat a
calculatorului tip von Neumann este dat n figura 10.8, unde procesorul se conecteaz cu
memoria printr-un canal bidirecional de comunicaie.
PROCESOR

CANAL

MEMORIE

Fig. 10.8 Reprezentarea simplificat a calculatorului tip von Neumann

171

10.2 Calculatorul

Implementarea acestui model n maini concrete s-a fcut fie prin realizarea
procesorului n maniere ct mai compacte i configuraii ct mai standardizate n paralel cu
creterea posibilitilor de a construi memorii cu capaciti ct mai mari, fie prin definirea
funciilor calculatorului exclusiv pe seama programelor stocate n memorie ([tefan, 1991]).
Modelul procesor-canal-memorie s-a constituit ntr-o main universal
particularizat exclusiv prin informaia stocat n memorie. Anularea corelaiei dintre
structura fizic i funcia mainii, acionndu-se exclusiv la palierul informaional, a permis
dezviltarea spectaculoas a domeniului calculatoarelor prin definirea a dou domenii net
distincte: domeniul hardware care avea drept scop maina universal realizat pornind de
la tehnologii ct mai performante i domeniul software care pornea de la maina universal
particulariznd-o funcional prin programare ([tefan, 1991]).
Conceptul de main universal a fost o interfa de maxim flexibilitate care a
permis dezvoltarea paralel i independent a celor dou domenii mult timp. Dar evoluia
lor nu s-a fcut uniform. n domeniul hardware tehnologia a avut o evoluie spectaculoas
care a dus la creterea extraordinar a performanelor procesoarelor i memoriilor. n
paralel, domeniul software prolifereaz abordnd o problematic deosebit de bogat,
diversitatea problemei fiind stimulat de distana mare ce exista ntre clasa imens a
aplicaiilor i maina universal. Sigur c tehnologiile de realizare a programelor nu au avut
o evoluie la fel de spectaculoas ca n cazul domeniului hardware, costul realizrii
programelor rmnnd ridicat ([tefan, 1991]).
Aceast incompatibilitate ntre ritmul de evoluie al tehnologiilor n cele dou
domenii va submina conceptul de calculator ca main universal programabil. Vinovat de
acest lucru este considerat canalul de legtur ntre cele dou uniti. Denumit von
Neumann bottleneck el pare a fi responsabil de ineficiena calculatoarelor clasice, n primul
rnd datorit stilului de programare pe care la stimulat, dac nu chiar l-a impus.
Von Neumann bottleneck este o limitare att fizic ct i conceptual. Fizic
decupleaz suportul informaiei de structura care opereaz cu i asupra ei, iar conceptual
mpiedic declanarea unor paralelisme care sunt posibile pentru categorii largi de
probleme. Stilul n care sunt realizate programele este stingherit de configuraia fizic a
modelului discutat ([tefan, 1991]).
Concluzia care se impune este c pentru structuri cu performane medii modelul von
Neumann va continua s fie valabil. Pentru structuri care impun o cretere a performanelor
peste o anumit limit, sau pentru necesiti de abordare a unor clase noi de probleme, cum
ar fi de exemplu cele din domeniul inteligenei artificiale, se impune elaborarea unor modele
diferite. Dar ce fel de modele? O soluie poate fi oferit de paralelism.
nainte de ncheierea acestui paragraf trebuie s mai spunem c structura complet de
calculator n arhitectur von Neumann mai conine blocul de comunicaie cu exteriorul prin
intrri/ieiri. Canalul de comunicaie ntre toate cele trei blocuri este bidirecional i se
numete magistral de date i adrese.
PROCESOR

MEMORIE

INTRARE /
IEIRE

Magistrala de date i adrese

Fig. 10.9 Structura complet de calculator von Neumann

INTRARE
IEIRE

172

10 SISTEME MICROPROGRAMATE

10.3 Paralelismul
Dei ne-am obinuit foarte mult cu prelucrarea secvenial a informaiei, ea nu este
absolut obligatorie. Singura justificare pentru abordarea secvenial o constituie limitrile
tehnologice. Totui, funciile definite recursiv, de exemplu, presupun n continuare existena
secvenelor. n consecin, la ora actual, nu se poate pune problema unei structuri pur
paralele. Ceea ce este realizabil, i de altfel s-a i realizat, este abandonarea structurilor pur
secveniale i nlocuirea lor prin structuri ce presupun funcionarea n paralel a mai multor
maini secveniale.
Pentru conectarea mai multor procesoare n paralel se conecteaz mai multe maini
von Neumann ale cror canale de comunicaie ntre procesor i memorie se nlocuiesc
printr-o reea de interconectare. Paralelismul aprut genereaz ns un nou efect i anume
concurena ntre resursele disponibile.
n principiu exist dou posibiliti de conectare a procesoarelor: arhitectura de tip
MIMD (Multiple Instruction Multiple Data) n care se execut simultan mai multe
instruciuni folosind mai multe date, i arhitectura de tip SIMD (Single Instruction Multiple
Data) n care se aplic aceeai instruciune mai multor operanzi. n realitate aceast
clasificare este pur teoretic. Mainile reale construite pn acum se situeaz pe poziii
intermediare i chiar noi modele teoretice nu mai respect strict aceast separare net.
Reeaua de interconectare de care am vorbit mai sus este o resurs fizic care n
anumite cazuri poate deveni mpovrtoare pentru o main paralel. S-au conceput diverse
reele cu conectare direct, sau indirect. Pentru reelele cu conectare direct nodurile reelei
asigur procesarea i transferul datelor ntre noduri. Reelele cu conectare indirect
presupun existena unor noduri n care are loc procesarea i noduri care asigur transferul
ntre nodurile procesoare.
Se pare c un grad avansat de paralelism i o eficien maxim se obine atunci cnd
granularitatea sistemului este maxim, adic atunci cnd folosim foarte multe elemente de
procesare foarte mici i simple. Exemplul cel mai bun l ofer Connection Machine construit
de Thinking Machines i care conine 65535 procesoare. Din memoria total asociat reelei
un numr mare de bii pot fi procesai n orice moment. Reeaua este conectat totui la un
calculator gazd care rezolv acele poriuni de program care sunt mai eficient rulate pe un
singur procesor, dar nu pe unul foarte simplu ([tefan, 1991]).
Ne amintim c structurile programabile de tip FPGA sunt formate din celule care pot
realiza prin interconectare arhitecturi paralele. n acest fel, utilizatorul i poate crea
propriile arhitecturi paralele, optimizate pe ct posibil pe aplicaia dorit. Pe de alt parte,
astfel de structuri pot fi configurate cu ajutorul unor algoritmi evolutivi care, avnd ca baz
modelul evoluiei din lumea vie, urmresc generarea unor structuri care s optimizeze o
anumit funcie obiectiv. Care ar putea fi aceast funcie obiectiv? Fie corectarea unei erori
care poate apare datorit defectrii unui tranzistor din structur, prin reconfigurarea
circuitului, adic refacerea unor conexiuni pentru nlocuirea componentei defecte cu alta,
aflat ntr-o arie nefolosit din circuitul integrat, fie modificarea unei configuraii de circuit
prin reconfigurare dinamic, n scopul adaptrii structurii programabile la mediul n care se
afl. Adaptare poate nsemna aici o modificare automat de circuit destinat implementrii
unor funcii noi, poate chiar neprevzute de proiectant ([Popa, 1998]).