Sunteți pe pagina 1din 27

CUPRINS

9. MICROPROGRAMARE ........................................................................................................................................... 9-1 9.1 NOIUNI I CONCEPTE DE BAZ ................................................................................................................................. 9-2 9.1.1 Organizarea memoriei de control................................................................................................................... 9-4 9.1.2 Suportul fizic pentru pstrarea microprogramelor ........................................................................................ 9-7 9.1.3 Organizarea logic a instruciunilor .............................................................................................................. 9-8
9.1.3.1 9.1.3.2 9.1.3.3 9.1.3.4 9.1.3.5 9.1.3.6 Codificare vertical ....................................................................................................................................................... 9-8 Codificarea orizontal ................................................................................................................................................... 9-9 Codificarea minimal .................................................................................................................................................... 9-9 Codificarea cu control rezidual ................................................................................................................................... 9-10 Codificarea cu control prin adrese............................................................................................................................... 9-11 Codificare mixt .......................................................................................................................................................... 9-11

9.1.4 Implementarea microinstruciunilor ............................................................................................................. 9-12 9.2 PROIECTAREA UNITII DE COMAND MICROPROGRAMAT A CALCULATORULUI DIDACTIC ................................. 9-14 9.2.1 Specificarea caracteristicilor unitii de comanda microprogramate pentru calculatorul didactic ........... 9-14 9.2.2 Specificarea detaliat a structurii calculatorului didactic ........................................................................... 9-15 9.2.3 Stabilirea operaiilor elementare pentru controlul resurselor calculatorului didactic................................ 9-17 9.2.4 Stabilirea variabilelor de stare (condiiilor de test) ..................................................................................... 9-18 9.2.5 Stabilirea formatului microinstruciunilor.................................................................................................... 9-19 9.2.6 Proiectarea microsecveniatorului ............................................................................................................... 9-22
9.2.6.1 Descrierea microprogramului...................................................................................................................................... 9-24

9. MICROPROGRAMARE

Obiective: Obiectivele acestui capitol sunt orientate spre aprofundarea principiilor de realizare a unitii centrale miroprogramate. Pentru exemplificare se proiecteaz n mod efectiv o unitate central microprogramat pentru calculatorul didactic. Sunt dezvoltate microprogramele pentru citireinterpretare i execuie a instruciunilor calculatorului didactic.

9-1

9.1 Noiuni i concepte de baz Din punct de vedere structural unitile de comand sunt de dou tipuri: convenionale n sensul propus de Von Newmann ; microprogramate conform conceptului introdus de M.Wilkes. Conceptul de microprogramare a fost introdus de Maurice Wilkes, de la Universitatea din Cambridge, n anul 1951, ca o alternativ sistematic de proiectare a unitilor de comand ale calculatoarelor numerice sau, n general, a procedurilor de control asupra primitivelor funcionale ale unui sistem numeric. Microprogramarea poate fi considerat o tehnic de proiectare i implementare a funciilor de control al sistemelor de prelucrare a datelor numerice, ca o secven de semnale de control ce interpreteaz static sau dinamic funciile de prelucrare a datelor. Semnalele de comand, necesare la un moment dat pentru controlul primitivelor funcionale, sunt organizate ntr-un cuvnt de control, memorat ntr-o memorie PROM sau RAM. Structura cuvntului de control este influenat de semnificaia atribuit noiunii de microoperaie . Microoperaia ( O ) este o primitiv a funciilor de prelucrare a datelor, care reprezint o operaie elementar asupra unei primitive funcionale (transfer, aciune de nscriere sau de incrementare, activare pe magistral, etc. ), ce se desfaoar de obicei ntr-o perioad de timp (perioada de tact sau de ceas). Microoperaia implic existena unui operator, care corespunde unei uniti funcionale i a operanzilor asupra crora acioneaz. Cuvntul de control este pus n coresponden cu noiunea de microinstruciune. Microinstruciunea (I) este un set de microoperaii independente de date, fr conflict de resurse, care se pot executa simultan (pe intervalul unei perioade de sincronizare). n general, microinstruciunile sunt de dou tipuri: microinstruciuni operaionale care controleaz primitivele funcionale ale unitii de execuie a sistemului numeric, asigurnd fluxul de informaie i aciunile asupra resurselor; microinstruciune de ramificaie (de salt) care inspecteaz starea primitivelor funcionale i asigur ramificaia n algoritmul de control, constituind suportul pentru implementarea deciziilor. Prin microprogram se nelege o secven de microinstruciuni ce implementeaz un algoritm care descrie : citirea interpretarea i execuia unui set de instruciuni main; primitive ale sistemului de operare ; primitive ale limbajelor de programare ; etc. Structura general a unui sistem de calcul cu unitate de comand microprogramat este prezentat n Fig. 9.1. Primitivele funcionale au urmtoarele semificaii : M - memoria principal a sistemului, n care se pstreaz programele ca secven de instruciuni main i datele care se prelucreaz ; ML - memoria local a sistemului, reprezentat de registrele generale de lucru accesibile sau nu utilizatorului; UAL - unitatea aritmetic logic ; S I/E MC - subsistemul de intrri / ieiri ; - memoria de control n care se pstreaz microprogramul ca secven de microinstruciuni ; 9-2

RI S

- registrul de microinstruciuni, care pstreaz microinstruciunea curent ce se execut. Coninutul su specific toate microoperaiile care se execut n acel moment n unitatea de execuie ; - microsecveniatorul, unitatea de comand convenional, elementar, care asigur citirea interpretarea i execuia microinstrucinilor din memoria de control precum i nlnuirea acestora pe baza registrului de instruciuni main RI i a strii primitivelor funcionale.
SI/E

ML/RG

UAL AM

cod instructiune

stari

O microoperatii

Unitate de executie Unitate de comanda RI MC

RI

Figura 9.1 Structura generala a unui sistem microprogramat Din punctul de vedere al proiectantului de sistem, unitatea de comand microprogramat reprezint un calculator primar capabil s interpreteze (emuleze) orice alt pseudo-calculator (calculator virtual) aflat la un nivel superior celui al calculatorului primar. Structura simplificat prezentat n Fig. 9.1 are rolul de a scoate n eviden faptul c microprogramul conine informaiile (semnalele) de control ale primitivelor funcionale i c acestea sunt memorate n memoria de control n acelai fel cum instruciunile main sunt memorate n memoria principal a sistemului. O instruciune main este citit, interpretat i executat de o secven de microinstruciuni care controleaz i comand aciunile asupra primitivelor funcionale . Implementarea sub form microprogramat a unitilor de comand a permis dezvoltarea conceptului de emulare, care a aprut ca urmare a ncercrilor de a soluiona ntr-un mod eficient problema transportabilitii programelor, adic de a executa programele de baz i de aplicaii ale unui sistem pe alt sistem. Astfel, folosind aceleai resurse fizice, este posibil ca prin diferite microprograme s se realizeze diverse structuri, care din punct de vedere funcional s se comporte diferit sau s corespund unor calculatoare existente (dintr-o anumit clas). n general, o structur microprogramat se caracterizeaz prin: organizarea memoriei de control ; suportul fizic pentru pstrarea microprogramelor ; 9-3

organizarea logic a microinstruciunilor ; implementarea microinstruciunilor ; 9.1.1 Organizarea memoriei de control Organizarea memoriei de control poate fi privit din dou puncte de vedere i anume: relaia poziional ntre memoria de control MC i memoria principal M ; structura memoriei de control MC . Folosind drept criteriu de analiz relaia MC fa de M se ntlnesc trei tipuri de organizare a memoriei de control : 1. memorie de control separat de memoria principal, att din punct de vedere fizic ct i punct de vedere al adresrii logice, Fig. 9.2 . Raportul dintre viteza de lucru a memoriei de control i cea a memoriei principale este de circa 10 n favoarea memoriei de control, Vmc >> Vm . O asfel de organizare ntlnim la calculatoarele din familia CORAL, I100, PDP 11, IBM 360/50, etc.
M MC

Figura 9.2 Organizare cu memoria de control separat de memoria principal 2. memoria de control este implementat n acelai spaiu fizic i de adresare cu cel al memoriei principale, Fig. 9.3 . Ambele au acelai ciclu de memorie i sunt adresate prin aceeai logic . Divizarea n memorie de control i memorie principal se poate face la nivel fizic sau la nivel logic. Acest tip de organizare cere ca memoria s fie suficient de rapid pentru a fi folosit ca MC i destul de ieftin pentru a fi folosit ca memorie principal. O astfel de organizare ntlnim la calculatoarele IBM 370/145; IBM 360 /25 .
M

MC

Figura 9.3 Organizarea memorie de control n cadrul memoriei principale 3. memoria de control este implementat separat de memoria principal ns este ncrcat din aceasta. Se utilizeaz un sistem de memorie ierarhic, Fig.9.4. Memoria MC este ncrcat din memoria principal prin intermediul memoriei tampon MT. Acest tip de organizare este curent utilizat la calculatoarele mari cum ar fi IBM 370/145. Performanele acestui tip de organizare depind de structura mainii de baz i de algoritmul de lucru cu memoria tampon.

9-4

MT

MC

Figura 9.4 Organizarea MC separat de MP dar ncrcabil din aceasta Din punctul de vedere al structurii memoriei de control MC aceasta poate fi organizat n mai multe moduri i anume : 1. memorie de control cu o microinstruciune pe cuvnt, n care fiecrui cuvnt de memorie i corespunde o singur microinstruciune, Fig. 9.5. Citirea unei microinstruciuni presupune un singur acces la MC.

MC

Figura 9.5 Organizare cu memorie de control cu microinstruciune pe cuvnt 2. memorie de control cu organizare pe pagini, Fig. 9.6. Unei adrese din memoria de control i se asociaz mai multe microinstruciuni, din pagini diferite. n acest fel se asigur la nivel de microprogram execuia unei microinstruciuni de tip CASE, care introduce facilitatea de decizii multiple . O adres de MC va adresa aceeai locaie n toate paginile memoriei de control iar vectorul de condiii de test va activa pagina ce specific microinstruciunea urmtoare care se va executa.

MC0

MC1

MCn

Figura 9.6 Memorie de control cu organizare pe pagini 3. memorie de control cu organizare pe blocuri, Fig. 9.7. Pentru acest tip de organizare exist dou feluri de adrese: -adrese de microinstruciuni din acelai bloc cu microinstruciunea curent ; -adrese de blocuri . mprirea memoriei de microprograme n blocuri se face innd seama att de structura microprogramului ct i de resursele fizice disponibile. O organizare de acest fel conduce, n general, la micorarea lungimii microinstruciunii ns introduce timp suplimentar cu comutarea adreselor de blocuri. 9-5

MC0

MC1

MCn

Figura 9.3 Memorie de control cu organizare pe blocuri 4. memorie de control divizat, Fig. 9.8. Memoria de microprograme divizat este alctuit din dou uniti de memorie distincte: MI - memorie de microinstruciuni, care pstreaz toate microinstruciunile distincte posibile necesare pentru controlul resurselor fizice ; MA - memorie de adrese de microinstruciuni, care pstreaz programul specificat, nu prin microinstruciuni ce controleaz resursele fizice, ci prin adrese de microinstruciuni (adrese pentru memoria MI). n general numrul de tipuri de microinstruciuni distincte este mult mai redus dect microprogramul n sine, ceea ce implic ca numrul de bii necesari pentru adresarea memoriei MI s fie i el redus. n acest fel, lungimea cuvntului din memoria MA este mult mai mic dect al memoriei MI, ceea ce conduce la o reducere substanial a memoriei de control. n schimb, pentru a executa o microinstruciune trebuie fcute dou adresri, una la memoria MA i una la memoria MI ceea ce conduce la un ciclu mai mare de microinstruciune.

MA P

MI I

semnale de comanda

Figura 9.4 Memorie de control divizat 9-6

5. memorie de control structurat pe dou niveluri, Fig. 9.9 La o astfel de organizare mecanismul citirii interpretrii i execuiei unei instruciuni main este urmtorul : - o instruciune main este interpretat de un set de microinstruciuni rezident n memoria de control MC (I) ; - la rndul ei, o microinstruciune este interpretat de o secven de nanoinstruciuni rezident n memoria MC (nI) .

MC(I)

MC(nI)

Figura 9.9 Memorie de control structurat pe dou niveluri Aceast tehnic a nanoprogramrii este conceptual echivalent cu microprogramarea, structurarea pe dou niveluri ofer o flexibilitate mai mare i posibilitatea implementrii unor structuri de control foarte complexe. O astfel de organizare ntlnim la calculatorul NANODATA QM1. 9.1.2 Suportul fizic pentru pstrarea microprogramelor Memoria de microprograme MC este o unitate de memorie de mare vitez care pstreaz microprogramele ce se execut . n ceea ce privete suportul fizic, pentru pstrarea microprogramelor, acesta poate fi realizat cu memorii PROM sau cu memorii RAM. Realizarea memoriei de control cu componente de tip PROM confer o caracteristic static structurii microprogramate, n timp ce utilizarea componentelor de tip RAM ofer o caracteristic dinamic . Caracteristica dinamic permite utilizatorului ca printr-un ansamblu de mijloace software s aib acces la microprogramul din memoria de control. Accesul poate consta n modificarea parial, n completarea microprogramului pentru a creea noi primitive software sau chiar n modificarea total a microprogramului, ceea ce nseamn schimbarea arhitecturii mainii de baz. Este foarte important n a face deosebire ntre : maini microprogramate, i maini microprogramabile eventual.

9-7

Prima categorie se refer la modalitatea de implementare a unitii de comand n sensul conceptului introdus de Wilkes, fr a oferi resursele hardware i suportul de programe pentru accesul utilizatorului la nivelul microprogramului. Cea de a dou categorie ofer att resursele hardware ct i facilitile software pentru accesul utilizatorului la nivelul microinstruciunilor. Dintre calculatoarele cu memorie de control inscriptibil amintim BURROUGH 1700, MICRODATA 1600, I102F, etc. 9.1.3 Organizarea logic a instruciunilor Un cuvnt din memoria de control specific un set de microoperaii ce constituie componentele primitive ale controlului resurselor sistemului. Organizarea logic a microinstruciunilor este influenat de : gradul de paralelism ntre microoperaii, care se dorete realizat; structura mainii de baz ; gradul de codificare sau de flexibilitate dorit ; gradul de optimizare al lungimii cuvntului de control . Presupunnd c microprogramele sunt specificate ca o secven de seturi disjuncte de microoperaii, se pot distinge mai multe modaliti de codificare a acestora i anume: codificare vertical sau maximal ; codificare orizontal sau cu control direct ; codificare minimal ; codificare cu control rezidual ; codificare cu control prin adrese ; codificare mixt. 9.1.3.1 Codificare vertical n cadrul codificrii verticale, fiecare microinstruciune operaional specific o singur microoperaie. Setul de microoperaii (MO) necesar pentru controlul primitivelor funcionale se codific n [ log2 | (MO) ] bii, care constituie lungimea cuvntului din MC. Pentru identificarea microoperaiei specificate de I se utilizeaz un decodificator, Fig. 9.10. Aceast codificare reprezint un caz extrem, deoarece elimin orice posibilitate de desfurare paralel a operaiilor elementare. Din punctul de vedere al minimizrii cuvntului de control, codificarea vertical implic numrul cel mai mic de bii. Dimensiunea mare a decodificatorului face ca realizarea fizic a acestuia s aib loc pe mai multe niveluri, ceea ce conduce la introducerea de ntrzieri. Un dezavantaj major al codificrii maximale l reprezint eliminarea controlului paralel asupra resurselor precum i inflexibilitatea dezvoltrii sau completrii sistemului n ceea ce privete introducerea de noi microoperaii. Este aplicabil numai n sisteme dedicate care au o structur specific.

9-8

0 I

[log2 |(0)|]-1

DEC

O0 O1

O|(0)| -1

Figura 9.10 Codificarea vertical a microoperaiilor 9.1.3.2 Codificarea orizontal n cadrul acestei codificri, fiecare microoperaie din setul (MO) este pus n coresponden cu un bit din cadrul cuvntului de control. Controlul microoperaiilor se face n mod direct, Fig. 9.11.
0 I 1 |(0)|-1

O0 O1

O|(0)| -1

Figura 9.11 Codificarea orizontal Codificarea orizontal realizeaz controlul tuturor microoperaiilor paralele, posibile, ce se pot desfura n sistem. Dei ofer o flexibilitate mare i asigur paralelismul maxim, utilizarea acestei codificri este un caz extrem din cauza folosirii ineficiente a memoriei de control. 9.1.3.3 Codificarea minimal Combin flexibilitatea i paralelismul potenial oferite de codificarea orizontal cu eficiena codificrii verticale. Ideea de baz este de a grupa n clase de compatibilitate setul de microoperaii care se exclud reciproc (O dintr-o clas de compatibilitate nu se vor efectua niciodat simultan). Microinstruciunea este mprit n cmpuri. Un cmp corespunde unei clase de compatibilitate. La nivel de cmpuri se realizeaz o codificare orizontal iar n cadrul cmpurilor se realizeaz o codificare vertical, Fig 9.12 a).

9-9

C0

C1 [log2|C0|]

C|C|-1

DEC0

DEC1 |C0|

DEC|C|-1

Figura 9.12 a)Codificare minimal Pentru un cmp Cj care codific |Cj| microoperaii sunt necesari |log2(|Cj|+1)| bii, deoarece trebuie s se prevad i posibilitatea de a nu specifica nici o microoperaie din cadrul cmpului. O variant a acestei codificri o reprezint codificarea pe dou niveluri sau indirect. n codificarea pe dou niveluri, validarea unor cmpuri depinde de valoarea altui cmp de control din microinstruciune, Fig 9.12 b).
I C0 C1 Ci C|C|-1

DEC DEC DEC

DEC

Fig. 9.12 b) Codificare minimal pe dou niveluri 9.1.3.4 Codificarea cu control rezidual Aceast metod de codificare folosete registre de control rezidual pentru controlul primitivelor funcionale. Cuvntul de control nu controleaz resursele direct ci, prin intermediul registrelor de control rezidual ncrcate sub aciunea microinstruciunilor, Fig. 9.13
MC

RCRZ0

RCRZ1 |C0|

RCRZn

Figura 9.13 Codificare cu control rezidual Microinstruciunile pot s nlocuiasc sau s modifice valoarea unuia sau mai multor registre de control. Aceast tehnic, a controlului rezidual, asigur o economie de memorie de control atunci cnd 9-10

unele primitive funcionale realizeaz aceeai operaie n mod repetat sau cnd un set de microoperaii este activ o perioad mare de timp, iar alte seturi de microoperaii se modific. Registrele de control rezidual RCRZj, care specific microoperaiile de control al resurselor hardware, pot fi manevrate cu ajutorul unor microinstruciuni de dimensiuni reduse. 9.1.3.5 Codificarea cu control prin adrese O modalitate de implementare a microinstruciunilor operaionale este aceea n care nu se specific direct microoperaiile care trebuie s se desfoare, ci se specific o adres n cadrul unei memorii, unde sunt memorate toate microinstruciunile distincte posibile ce controleaz sistemul, Fig. 9.14.
I Adr.

Adrresa

MI distincte

Figura 9.14 Codificare cu control prin adrese Aceast modalitate reprezint o form simplificat a conceptului de nanoprogramare. Numrul de microinstruciuni distincte nu depinde de numrul de resurse controlate ci de numrul de O disticte, de mrimea P i de numrul de variabile de stare testate . Memoria care pstreaz microinstruciunile distincte va avea lungimea cuvntului suficient de mare pentru a controla toate microoperaiile care se pot efectua simultan. Trebuie notat c fiecare I este memorat o singur dat. O astfel de implementare face ca microprogramul s fie format dintr-o secven de adrese care apeleaz I pstrate n memoria de I. Un dezavantaj al acestei metode const n faptul c necesit dou accese la memorie n cadrul unui ciclu de microinstruciune, dar n schimb se realizeaz o economie important de memorie. 9.1.3.6 Codificare mixt O variant utilizat mult n practic este aceea n care microinstruciunea este mprit n cmpuri. Unele cmpuri controleaz direct microoperaiile (sub form codificat sau direct) iar altele specific adrese de memorie ce conin un subset de microinstruciuni distincte, Fig. 9.15.
I C0 C1 Adr. DEC O MI O O Cn

Figura 9.15 Codificare mixt 9-11

9.1.4 Implementarea microinstruciunilor Microinstruciunile sunt citite, interpretate i executate de ctre microsecveniator (S) n acelai fel n care o unitate de comand convenional execut instruciuni main. Se poate defini o caracteristic serie-paralel care msoar cantitatea de suprapunere ntre faza de execuie a I curente i citirea, interpretarea I urmtoare. Din punctul de vedere al caracteristicii serie-paralel distingem trei tipuri de implementri : implementare serie; implementare serie-paralel ; implementare paralel. Fie CI-faza de citire interpretare i E-faza de execuie a unei I. n implementarea serie, citirea microinstruciunii urmtoare nu ncepe dect dup ce s-a terminat execuia microinstruciunii curente, Fig. 9.16.
I nr.

i+2 i+1 i CI E CI E

CI

Figura 9.16 Implementare serie n implementarea paralel, Fig. 9.17, faza de citire a I urmtoare se desfoar n acelai timp cu execuia I curente.
I nr.

i+2 i+1 i CI CI E

CI E

Figura 9.17 Implementare paralel Se observ c ciclul de execuie al microprogramului se reduce. O astfel de implementare impune existena unor resurse fizice de comand (microsecveniator, etc.) mai complexe, care s poat anticipa adresa microinstruciunii urmtoare chiar i n cazul salturilor condiionate. O mbinare a performanelor implementrii paralele i a costului redus al implementrii serie este realizat de implementarea serie-paralel a microinstruciunilor, Fig. 9.18. 9-12

I nr.

i+2 i+1 i CI CI E E

CI

Figura 9.18 Implementare serie-paralel Faza de citire a I urmtoare se desfoar fie n timpul execuiei I curente, fie dup terminarea ei, n funcie de tipul microinstruciunii curente. Succesiunea de microinstruciuni operaionale se desfoar prin suprapunerea fazelor de citire i execuie, iar cele imediat urmtoare unor ramificaii se citesc dup terminarea execuiei I curente (de ramificaie). Implementarea serie-paralel este caracteristic arhitecturilor "pipe line", i este cea mai folosit. Referitor la implementarea microinstruciunilor se poate defini i o caracteristic monofaz-polifaz care se refer la numrul de faze utilizate ntr-un ciclu de microinstruciune. ntr-o implementare monofaz, microoperaiile sunt generate simultan, toate semnalele de control specificate de microinstruciune fiind active n acelai timp (pentru cele de tip impuls se ine seama de front), Fig. 9.19.

CI

CI

CI

CI

CI

CI

TACT t a. b. t

Figura 9.19 Implementare monofaz a. ciclul macroinstruciunii CI constant b. ciclul macroinstruciunii CI variabil ntr-o implementare polifazic, microinstruciunea este activ o perioad de tact ns semnalele de control sunt repartizate pe faze ale ciclului, Fig. 9.20.

9-13

CI

CI

CI

CI

CI

CI

Faza 2 Faza 3 Faza 1 t a. b. t

Figura 9.20 Implementare polifaz a. ciclul microinstruciunii constant b. ciclul microinstruciunii variabil Ciclul unei microinstruciuni poate fi constant sau variabil n sensul c poate avea aceeai durat pentru toate I, respectiv o durat pentru un grup de microinstruciuni i alt durat pentru un alt grup de I. 9.2 Proiectarea unitii de comand microprogramat a calculatorului didactic Proiectarea unitii de comand microprogramat a calculatorului didactic implic rezolvarea urmtoarelor aspecte: specificarea caracteristicilor unitii de comand microprogramate pentru calculatorul didactic ; specificarea detaliat a structurii calculatorului didactic; stabilirea operaiilor elementare pentru controlul resurselor calculatorului didactic; stabilirea variabilelor de stare (condiii de test); stabilirea formatului microinstruciunilor; proiectarea microsecveniatorului; descrierea microprogramului. 9.2.1 Specificarea caracteristicilor unitii de comanda microprogramate pentru calculatorul didactic Aspectele principale care trebuie considerate n vederea specificrii unitii de comand microprogramat au fost prezentate n paragraful 9.1. Analiznd aceste aspecte se constat c exist o mare varietate de soluii i opiuni pentru specificarea unitii de comand. Avnd n vedere structura calculatorului didactic se poate proiecta unitatea sa de comand sub forma microprogramat cu urmtoarele atribute generale: din punctul de vedere al relaiei poziionale ntre MC i memoria principal se va alege o memorie de control separat de memoria principal; implementarea memoriei de control se va face cu memorii de tip PROM; memoria de control se va organiza asfel nct s se specifice o singur microinstruciune ntr-un cuvnt de control; 9-14

organizarea logic a microinstruciunilor va fi de tip minimal (microinstruciunea mprit n cmpuri ); implementarea microinstruciunilor va fi de tip serie-paralel; se va considera o implementare monofaz a microinstruciunilor. Avnd n vedere caracteristicile prezentate, structura general a unitii de comand microprogramat pentru calculatorul didactic se prezint n Fig. 9.21 unde: MC - memoria de control pstreaz microprogramul care implementeaz fazele de citire, interpretare i execuie ale instruciunilor main. Este de tip PROM. Un cuvnt de control din MC, echivalent cu o microinstruciune, genereaz toate semnalele de comand (microoperaiile) ce sunt active la un moment dat pe durata unei perioade de sincronizare. RI - registrul de microinstruciuni pstreaz microinstruciunea curent ce se execut. CP - registrul de adrese al MC pstreaz adresa microinstruciunii urmtoare care se va citi. S - microsecveniatorul reprezint unitatea de comand convenional care asigur citirea, interpretarea i validarea aciunilor microinstruciunilor. Pe baza tipului microinstruciunii curente, a strii primitivelor funcionale ale calculatorului didactic precum i a codului operaie al instruciunii main curente (ce interpreteaz i se execut), S formeaz adresa I urmtoare i valideaz (activeaz spre resursele unitii de execuie) microoperaiile din I curent.

MC PROM

CP

RI

Logica de decodificare si validare stare primitive functionale a CD registrul RI

S Logica de conditii de salt

MUX

Figura 9.21 Structura general a unitii de comand microprogramat pentru calculatorul didactic 9.2.2 Specificarea detaliat a structurii calculatorului didactic

Pentru a stabili formatul microinstruciunilor i a proiecta microsecveniatorul este necesar s detaliem structura prii operaionale (unitii de execuie) a calculatorului didactic. n Fig.9.22 se prezint structura detaliat a unitii de execuie a calculatorului didactic, fr a include subsistemul de intrri/ieiri.

9-15

dep AIE

AIE

___ cie

___ sie

actADR I

MAG

act M a ct RG smux T1

mux T1 T2
dep T2

0:2

dep T1 0 1 2

MAP
ADRR A( 0) ADRIS(3) R EG RM

3:5

M M U X
ADR a ct UAL 3

RG

selUAL 0:3 sR G UAL 4

AM

3 4 5

Log, BC
3

M AG

sm ux RG

smux IND 0

dep AM a ct AM set I cm sm

mux
dep IND

reset I

act IND

dep RI

RI

act R I PR IL resetbi

setip ip

cinm c intr

setai ai

inc C P

id

inm

intr

CP
init

dep CP ac t CP

Schema detaliata a unitatii de executie a CD

Figura 9.5

16

Este necesar s precizm c toate resursele care au acces la magistrala MAG trebuie s fie prevzute cu ieiri cu trei stri. Acest deziderat se poate realiza n dou moduri : alegem resurse cu ieiri cu trei stri (dac exist) ; alegem resurse care nu au ieiri cu trei stri ns intercalm ntre ieirile lor i magistral circuite separatoare cu trei stri ("buffere tri state "). n schema detaliat nu se precizeaz tipul componentelor cu care se face implementarea ci se stabilesc numai resursele i operaiile elementare asupra lor. Se pun n eviden funciile logice pe care trebuie s le efectueze primitivele funcionale. De exemplu, registrul CP, indiferent de componenta cu care se implementeaz, trebuie s fie controlat de semnale (microoperaii) care specific : iniializarea (tergerea)- initl ; incrementarea - incCP ; ncrcarea cu o valoare specificat de coninutul magistralei MAG -depCP ; activarea pe magistrala MAG - actCP . 9.2.3 Stabilirea operaiilor elementare pentru controlul resurselor calculatorului didactic Analiznd schema detaliat a unitii de execuie a calculatorului didactic, unde s-a precizat modul de utilizare a primitivelor funcionale, rezult lista semnalelor de comand: - activeaz registrul de adrese al memoriei pe liniile de adrese spre memorie (s-a considerat c trebuie s fie dezactivat cnd intervine DMA-ul); 2.depAM - depune (ncarc) coninutul magistralei MAG n AM; 3.cm - comand operaia de citire din memorie; 4.sm - comand operaia de scriere n memorie; 5.actM - activeaz coninutul celulei de memorie adresate pe magistrala MAG; 6.incCP - incrementeaz CP ; 7.depCP - depune n CP coninutul magistralei MAG ; 8.actCP - activeaz coninutul registrului CP pe magistrala MAG ; 9.depRI - depune n RI coninutul magistralei MAG ; 10.actRI - activeaz coninutul registrului RI pe magistrala MAG; 11.smuxRG0:2 - selecteaz adresa memoriei locale RG, specificnd astfel registrul general implicat n operaia curent ; 12.sRG - comand scrierea n memoria local RG ; 13.actRG - activeaz coninutul memoriei locale RG pe magistrala MAG (coninutul registrului general selectat de smuxRG) ; 14.smuxT10:1 - selecteaz informaia care se nscrie n registrul T1; 15.depT1 - depune date (ncarc) n registrul T1 ; 16.depT2 - depune date (ncarc) n registrul T2 ; 17.selUAL0:3 - specific operaia ce trebuie efectuat de UAL ; 18.actUAL - activeaz rezultatul din UAL pe magistrala MAG ; 19.smuxC - selecteaz informaia pentru transportul de intrare n UAL 20.smuxIND - selecteaz informaia ce se nscrie n indicatorii de condiii ; 21.depIND - depune (ncarc) datele selectate de multiplexorul smuxIND n indicatorii de condiii IND (t,s,z,p,d,I) ; 22.actIND - activeaz pe magistrala MAG coninutul indicatorilor de condiii IND ; 23.depAIE -depune (ncarc) n registrul AIE informaia ce se gsete pe magistrala MAG (adresa portului de intrare/ieire implicat n transfer); 24.cie - activeaz pe magistrala MAG coninutul portului de intrare (citete port de intrare) ; 25.sie - comand scrierea ntr-un port de ieire ; 26.setI - nscrie "1" (seteaz) n indicatorul I ; 1.actAM

27.resetI 28.setip 29.setai 30.resetbi 31.actADRI

- nscrie "0" (reseteaz) n indicatorul I; - nscrie "1" (seteaz) n bistabilul ip de cerere de ntrerupere prin program ; - nscrie "1" n bistabilul de achitare ntrerupere ai; - nscrie "0" (reseteaz) n bistabilul de cerere de ntrerupere corespunztor cererii luate n considerare i n bistabilul de achitare ntrerupere (ai) ; - activeaz pe magisrala MAG adresa celulei capcan corespunztoare nivelului de ntrerupere ce urmeaz s fie tratat.

9.2.4 Stabilirea variabilelor de stare (condiiilor de test) Pentru a asigura ramificaiile n cadrul microprogramului, microsecveniatorul (S) testeaz starea primitivelor funcionale (caracterizat prin valoarea indicatorilor de condiii) i biii din registrul de instruciuni (cod operaie, mod de adresare). Lista variabilelor de stare (semnalelor testate) n fazele de citire, interpretare i execuie a instruciunilor main rezult din analiza programului AHPL descris n capitolul 5 i este prezentat n cele ce urmeaz . n lista semnalelor testate se precizeaz semnalul sau combinaia de semnale analizate precum i pasul AHPL n care are loc testul. Lista semnalelor testate (sau a funciilor logice testate) n programul ce descrie fazele de citire, interpretare i execuie ale instruciunilor main ale calculatorului didactic se prezint n tabelul 9.1. n lista semnalelor testate s-au pus n clar toate condiiile care au aprut n programul AHPL. Aceast list se poate reduce din mai multe puncte de vedere i anume: s se specifice numai semnalele directe iar decizia de testare pe "0" logic sau pe "1" logic s fie luat prin microprogram; grupurile de semnale specificate prin funcii logice pot fi testate individual, ns n mai multe microinstruciuni de salt, ceea ce conduce la scderea performantelor unitii de comand microprogramat.

9-18

Tabelul 9.1 Nume semnal sau funcie logic testat _____________ 1.SL(SYN(starta) 2.id v inm v ip _______________________ 3.inm id ip (intrI) 4.RI0 5.RI8 ^ RI9 __ 6.RI8 ^ RI9 ^ RI13 ^ RI14 __ 7.RI9 ^ RI13 8.RI9 ^ RI13 9.RI9 __ 10.RI8 __ 11.RI15 12.RI1 13.RI3 14.RI4 15.RI5 16.RI2 __ 17.RI7 ___________ 18.RI7 ^ RI8 ^ RI9 19.RI7 ^ RI8 ^ RI9 20.RI7 __ _______ 21.RI7 ^ RI8 ^ RI9 __ 22.RI7 ^ RI8 ^ RI9 ______ 23.RI8 ^ RI9 24.RI6 25.RI4:6 __ 26.RI2 __ 27.RI4 ^ RI5 __ 28.RI4 ^ RI5 29.RI4 ^ RI5 __ 30.RI6 31.indicatori condiii + funcii de indicatori condiii 32.salt necondiionat "1"

pas AHPL

1 2 2 4 5,37,39,54 5 7 7 10 11 22 26 27,60,66 28 28 29,57,60 30,59 30,59 30,59 31,58 31,58 31,58 37,39,54 38,53,69,72 55,60 60 67 67 67 81 85 15,16,18,32,37,42,47,53,56,65,70,71,75,78,83,88

9.2.5 Stabilirea formatului microinstruciunilor Pentru unitatea de comand microprogramat a calculatorului didactic vom defini dou tipuri de microinstruciuni i anume: 9-19

microinstruciune operaional, care specific controlul primitivelor funcionale ale unitii de execuie ; microinstruciune de ramificaie, care permite testarea strii primitivelor funcionale i asigur ramificaia n microprogram . Pentru a putea stabili structura microinstruciunilor trebuie analizate urmtoarele aspecte: lista semnalelor care controleaz primitivele funcionale ale unitii de execuie ; programul AHPL care descrie secvena de comand a fazelor de citire interpretare i execuie a instruciunilor main pentru a stabili setul de microoperaii elementare ce trebuie s se desfoare n paralel ; lista semnalelor (funciilor logice de semnale) care reprezint condiiile de test n cadrul algoritmului ce se implementeaz n microprogram . Listele de semnale care controleaz primitivele funcionale respectiv condiiile de test au fost prezentate anterior. Din analiza programului AHPL care descrie fazele de citire, interpretare i execuie a instruciunilor main pentru calculatorul didactic (prezentat n capitolul 5) rezult seturile de operaii elementare ce trebuie s se desfoare n paralel. n cele ce urmeaz se prezint seturile de operaii elementare ce se desfoar n paralel i paii AHPL cnd ele sunt active (lista este alctuit numai pentru faza de citire- interpretare pas 1:25). Lista seturilor de microoperaii elementare paralele: Nr. crt. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. Seturi de microoperaii paralele setai actCP;depAM actAM;cm;actM;depRI smuxRG=0;actRG;smuxT1=0;depT1 smuxRG=1;actRG;depT2 selUAL=5;actUAL;smuxT1=0;depT1 incCP actAM;cm;actM;depT2 selUAL=0BH;actUAL;smuxRG=1;sRG smuxRG=1;actRG;depT2 selUAL=0CH;actUAL;smuxRG=1;sRG;depT2 actAM;cm;actM;smuxT1=0;depT1 selUAL=4;actUAL;depAM etc pentru paii pas AHPL 2.1 2.2;13;20 3 6 8 9;15 12;19 14 16 17 18 21;24 23;25 25...

Formatul microinstruciunilor este prezentat n Fig 9.24, cele operaionale Fig.9.24 a) iar cele de ramificaie n Fig.9.24 b).

9-20

0 O operationala 0-cit mem 0-scr mem 0-cit I/E 0-scr I/E 0-s RG

10

11

12

13

14

15

cm sm cie sie srg

nop =0 act RI = 1 act CP = 2 act IND = 3 act M = 4 act RG = 5 act UAL = 6

smux RG MAP0:2 = 0 MAP 3:5= 1 ADRRA = 2 ADRIS = 3 REG =4 RM =5

set UAL INC(T1)= 0 DEC(T1)= 1 _ T1+1 = 2 _ T1 =3 T1 =4 T1+T2 = 5 T1-T2 = 6 T1T2 = 7 T1T2 = 8 T1T2 = 9 T1+T1 = A INC(T2) = B DEC(T2)= C T2 =D

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30 X

31 X

smux T1 0 - T1 1-0,T1 2-T1,T10:14 smux C 0-0 1- t smux IND 0 - log BC 1- MAG

nop = 0 nop =0 dep RI = 1 dep T1 = 1 dep CP = 2 dep T2 = 2 dep IND = 3 dep AM = 4 act AM dep AIE = 5 inc CP = 6

nop setI resetI setip setai resetbi

=0 =1 =2 =3 =4 =5

act ADRI

a)

Figura 9.24 a) Structura microinstruciunilor operaionale

9-21

0 1 conditionala

6 -

7 I/F

10

11

12

13

14

15

conditie de test _____________ SL(SYN(starta) =0 id inm ip =1 inm id ip (intr I) =2 RI0 =3 RI8 RI9 =4 RI8 RI9 R13 R14 = 5

0 = salt la conditie adevarata 1 = salt la conditie falsa

adresa de salt

16

17

18

19 X

20 X

21 X

22 X

23 X b)

24 X

25 X

26 X

27 X

28 X

29 X

30 X

31 X

Fig 9.24 b) Structura microinstruciunilor condiionale n proiectarea microinstruciunilor s-a inut seama c microoperaiile paralele prezentate anterior s fac parte din cmpuri distincte i de faptul c anumite microoperaii se exclud reciproc (cum ar fi activarea unor resurse pe magistrala MAG ). De asemenea s-a considerat, pentru a mri flexibilitatea n elaborarea microprogramelor, c decizia n funcie de testarea unei condiii s poat fi luat la valoare adevrat sau fals. Pentru aceasta s-a prevzut bitul 7 n microinstruciunea de ramificaie care face un "sau exclusiv " cu condiia de test. Lungimea microprogramului s-a considerat de maximum 2048 de locaii, rezultnd astfel un numr de 11 bii n formatul microinstruciunii de ramificaie pentru adresa de salt (biii 8..18). Observaie: Avnd n vedere faptul c n general memoriile de tip PROM sunt organizate pe 4 sau 8 bii, desi lungimea exact a microinstruciunii este de 30 de bii, s-a preferat s se lucreze cu o lungime de 32 de bii. 9.2.6 Proiectarea microsecveniatorului Avnd n vedere structura microinstruciunilor se poate descrie funcionarea microsecveniatorului (S) care asigur citirea interpretarea i execuia microinstruciunilor (activarea microoperaiilor spre unitatea de execuie a CD ). Programul AHPL de descriere a unitii de comand microprogramat a calculatorului didactic este : MODULE: Unitatea de comand microprogramat MEMORY: MC [2048;32]; RI [32]; CP [11] INPUTS: lista condiiilor de test 9-22

OUTPUTS: lista semnalelor de comand 1. RI BUSFN(MC;DCD(CP)) /* se citete microinstruciunea curent n registrul de microinstruciuni RI */ 2. RI0 /(4) /* se separ microinstruciunile de ramificaie la pas 4 i se continu cu cele operaionale */ 3. cm,sm,cie,sie,sRG = RI1:5 ; actRI,actCP,actIND,actM,actRG,actUAL = DCD1:6(RI6:8) ; smuxRG0:2 = RI9:11 ; selUAL0:3 = RI12:15 ; smuxT10:1 = RI16:17 ; smuxC = RI18 ; smuxIND = RI19 ; depRI,depCP,depIND,depAM,depAIE,incCP = DCD1:6(RI20:22) ; depT1,depT2 = DCD1:2(RI23:24) ; actAM = RI25 ; setI,resetI,setip,setai,resetbi =DCD1:5(RI26:28) ; actADRI = RI29 ; CP INC(CP) ; (1) /* se activeaz cmpurile de microoperaii spre unitatea de execuie, se incrementeaz contorul de adrese microinstruciuni i se revine la pas 1 pentru citire microinstruciunii urmtoare _ 4. CP (INC(CP) ! RI8:18) * (g,g) (1) /* se formeaz adresa microinstruciunii urmtoare care poate fi adresa curent incrementat (dac condiia de salt nu este ndeplinit) sau adresa de salt din microinstruciune (dac condiia de salt este ndeplinit) dup care se merge la citirea microinstruciunii urmtoare */ END SEQUENCE 9-23

S-a considerat c funcia g reprezint condiia de test i are urmtoarea form : g = RI7(SL(SYN(starta))!(idinm)!(inmid (intrI))!RI0!RI8RI9!.......RI6! COND! 1) *DCD0:31(RI1:6) Semnalul de test COND reprezint ieirea unui multiplexor care are ca intrri indicatorii de condiii sau funcii logice dintre acetia conform descrierii din tabelul 5.5, iar ca selecie biii RI4:7 din codul operaie al instruciunii de salt condiionat. 9.2.6.1 Descrierea microprogramului Descrierea microprogramului care implementeaz unitatea de comand microprogramat a calculatorului didactic se poate face utiliznd un limbaj de microasamblare. Pentru aprofundarea relaiei ntre cuvntul de control i semnalele de comand ce controleaz primitivele funcionale ale unitii de execuie se exemplific descrierea unei seciuni de microprogram specificnd direct biii din microinstruciune. ______________ 1. -> SL(SYN(starta)) /(1) ____________________ 2. -> (inm id ip, inm id ip (intr I )) / (91,2.2) 2.1 ai 1 ; (91) 2.2 AM CP Trebuie remarcat faptul c stabilindu-se microinstruciuni de tip operaional i de tip condiional, paii AHPL care specific aciune i salt vor fi implementai n dou microinstruciuni distincte iar paii AHPL care specific salturi multiple se implementeaz prin mai multe microinstruciuni de ramificaie. Imaginea memoriei de control pentru secvena prezentat anterior este urmtoarea:

9-24

Pas

00

01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

1. 2. 2. 2.1 2.1 2.2

1 1 1 0 1 0

0 0 0 1 0 1

0 0 0 1 1 1

0 0 0 1 1 1

0 0 0 1 1 1

0 0 1 1 1 1

0 1 0 0 1 0

0 0 1 0 0 1

0 0 0 0

0 0 x x

0 0 x x

0 0 0 0 adresa pasului 91 0 0 0 0 0 x x x x x adresa pasului 91 x x x x x

0 1 x x

0 0 x x

0 1 x x

x x x x x x

x x x 0 x 1

x x x 0 x 0

x x x 0 x 0

x x x 0 x 0

x x x 0 x 0

x x x 0 x 0

x x x 1 x 0

x x x 0 x 0

x x x 0 x 0

x x x 0 x 0

x x x x x x

x x x x x x

9-25

9-26

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