curs 09
DESCRIPTION
VHDLTRANSCRIPT
CURS 9
CURS 9
CAPITOLUL IX
MICROPROGRAMARE
9.1. Etapele dezvoltrii microprogramrii
Conceptul de microprogramare a aprut n jurul anilor 50 i a fost legat de elaborarea unor metode i mijloace tehnice noi privind proiectarea i construcia unitilor de comand ale sistemelor numerice.
Noiunea de microprogramare presupune nregistrarea semnalelor de comand n memorii, n locul generrii lor de ctre o unitate de comand cablat (sistem secvenial). Accesibilitatea programatorului ajunge pn la nivelul semnalelor de comand grupate n microinstruciuni. Conceptul a fost introdus de Maurice Wilkes de la Universitatea din Cambridge.
Modelul structurii de control microprogramate este urmtorul:
Registru
ntrziere
Semnale utile
Semnale de adres
(linii de control)
Decodificator
CLK
matricea A
matricea B
de la bistabil
de condiie
Matricea A conine linii de control, iar matricea B conine linii de adres. O linie orizontal din aceste matrici reprezint o microinstruciune. Liniile de control dau semnalele de comand necesare execuiei instruciunilor, iar liniile de adres sunt necesare urmtoarelor operaii efectuate.
Orice operaie apelat de o instruciune presupune o secven de pai care poate cuprinde transferuri registru-registru, registru-memorie, operaii aritmetice i logice. Fiecare pas se realizeaz practic prin activarea unor semnale de comand. Paii au primit numele de microoperaii.
O instruciune va fi executat n urma unor secvene de microoperaii grupate ntr-un microprogram, adic o instruciune poate fi realizat ca o succesiune de operaii elementare.
O microinstruciune este selectat corespunztor adresei din registrul de adrese. Logica de decizie i salt necesar oricrei structuri de control este asigurat prin bistabili de condiie.
Definiie: Microprogramarea este 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 numerice respective. Proiectarea unei structuri numerice este astfel mai sistematic i mai flexibil dect cea a unei structuri convenionale realizate prin logic cablat.
Microprogramarea permite realizarea emulatoarelor, care reprezint un ansamblu de resurse (elemente) hardware i software incluse ntr-un calculator cu scopul interpretrii limbajului (setului de instruciuni) altui calculator.
Termenul de firmware reprezint un ansamblu de resurse software care prin intermediul microprogramrii preia unele funcii care n mod tradiional revin software-ului (sistemului de operare), de exemplu, BIOS-ul.
Observaie: Microprogramarea nu nseamn programarea microprocesorului!!! Microprogramarea este o tehnic de proiectare a structurilor numerice, se refer la o structur, la o anumit implementare, la o arhitectur.
9.2. Structura de control microprogramat
n principiu o main microprogramat este o main n care o secven coerent de microinstruciuni grupate ntr-un microprogram, este folosit pentru execuia operaiilor mari, instruciunilor, care definesc funcionarea mainii.
Adres de
microinstruciune
Condiionri
Memoria de
Secveniator de
- circuite externe
microprogram
microprogram
- blocul cilor de date
funcia de secveniere
funcia de control propriu-zis
Structura de control microprogramat are 2 funcii importante:
a) funcia de control - definirea i controlul tuturor microoperaiilor care trebuie realizate (executate);
b) funcia de secveniere - definirea (determinarea) i controlul adresei microinstruciunii urmtoare.
Aceste funcii trebuie s se regseasc n cuvntul de microinstruciune.
Microoperaii care trebuie realizate:
selecia operanzilor pentru unitatea aritmetico-logic (ALU);
funcia executat de ALU;
destinaia rezultatului ALU;
controlul transportului;
controlul deplasrii
controlul ntreruperilor;
controlul intrrilor/ieirilor;
controlul resurselor hardware.
Structura de control microprogramat se mai poate reprezenta i astfel:
microadresa urmtoarei
rezultate
microinstruciuni
intermediare
date
condiiiRegistru de
Memorie de
Elemente
externemicroadrese
microprogram
funcionale
(intrri de
date
control)
Registru de
microinstruciuni
9.3. Memoria de microprograme
Memoria de microprograme este elementul central a unitii de comand microprogramate i se mai numete i memorie de comand. Ea conine microprogramele. Memoria de microprograme trebuie s fie de vitez mare.
Exist 2 tipuri de memorii de microprogram:
1. ROM nu poate fi modificat;
2. RAM
se ncarc cu microprograme la fiecare pornire a sistemului;
se folosesc la punerea n funciune a sistemelor noi;
se folosesc la microprogramarea dinamic.
Din punctul de vedere al organizrii memoriei de microprogram se ncearc obinerea a ct mai puine circuite i a unei viteze ct mai mari. Avem:
a. organizarea memoriei nct fiecrui cuvnt de memorie i corespunde o microinstruciune; citirea unei instruciuni presupune un singur ciclu de acces la memorie;
b. implementarea mai multor instruciuni n cadrul unui cuvnt de memorie; se reduce numrul de accese la memoria de microprogram i crete viteza de lucru a unitii de comand;
c. memoria se mparte n dou blocuri; sunt 2 tipuri de microadrese, care aparin unui bloc i care aparin celuilalt bloc; se reduce cmpul de bii din cadrul adresei, deci se micoreaz lungimea cuvntului microinstruciunii;
d. memoria de microprogram este divizat; se folosesc 2 tipuri de microinstruciuni: microinstruciuni simple (au nevoie de un numr mic de bii) i microinstruciuni complexe (au o lungime mai mare; controleaz simultan mai multe resurse);
e. memoria de microprograme se structureaz pe 2 nivele: microinstruciuni de nivel sczut (nanoinstruciuni) i microprograme de nivel mai sczut (nanoprograme) nanoprogramare.
9.4. Secveniatorul de microprogram
Secveniatorul de microprogram are rolul de a genera urmtoarea microadres.
Schema unui secveniator este dat n continuare:
PUSH/POP
4
FE Validare stiv
RE
Registru
Pointer
Validare registruAdrese AR
stiv SP
Date
4
4
Intrri directe
Stiv
CLK
S0
D AR F (PC
4 x 4
S1
MUX
X0 X1 X2 X3
Numrtor de
OR3
microprogram
OR2
(PC
OR1
OR0
4
zero
Cn+4Incrementare
(PC
OE
Cn
y3 y2 y1 y0microadrese
(pt. cascadare)
Adresa de microprogram este selectat prin intermediul unui multiplexor care are intrri: directe, din registru intern, ieirile din stiva LIFO, de la numrtorul de microprogram. Comanda este dat de S0 i S1. Registrul AR, validat de RE, acioneaz pe frontul cresctor al CLK. Numrtorul de microprogram este format dintr-un numrtor pe 4 bii i un CLC de incrementare pe 4 bii. Cnd Cn = 1, pe frontul cresctor al CLK urmtor se obine adresa curent plus 1. Dac Cn = 0 numrtorul nu-i schimb coninutul. Stiva 4 x 4 este folosit pentru memorarea adresei de revenire din microsubrutine. Pointerul de stiv SP indic ultima locaie scris. La combinaiile ntre FE i PUSH/POP se execut PUSH, se incrementeaz SP i se memoreaz n stiv adresa de revenire (adresa urmtoare adresei microinstruciunii care a efectuat operaia PUSH/POP) sau se efectueaz POP. Ieirile y indic adresa de microprogram microadresa. Cu OR se foreaz unele microadrese la 1 pentru implementarea unor microinstruciuni de salt. Semnalul zero este utilizat pentru aducere la 0 (iniializare), iar OE pentru trecerea ieirilor n starea three-state.
Structura de control microprogramat de tip pipe-line suprapune execuia microinstruciunii curente cu extragerea microinstruciunii urmtoare. Dac pentru controlul adresei urmtoare se folosete un cmp de 3 bii se pot implementa, de exemplu, urmtoarele microoperaii: step, salt, salt pe condiie, valoare PC, salt la subrutin, adres de start, revenire, test de sfrit de bucl.
Structura de control microprogramat poate fi privit ca o cutie neagr cu intrri macrooperaii i condiii de test, iar ca ieiri cmpurile de control din microinstruciuni.
Structura de control microprogramat poate fi definit ca un automat finit destinat implementrii funciei de control din sistem, care prelucreaz informaia folosind tehnica microprogramrii.
9. 5. Formatul microinstruciunii
Definiie: Prin formatul microinstruciunii se nelege mprirea microinstruciunii n diferite zone de control numite cmpuri.
Microinstruciunile se pot clasifica n verticale i orizontale.
1. Microinstruciuni verticale
efectueaz operaii simple de tip ncrcare, memorare, operaii aritmetice, salt, intrare, ieire;
lungimea este de 12-24 bii;
exist un compromis ntre lungimea cuvntului de microinstruciune i lungimea microprogramului.
Exemplu:
cod(op. cu UC
cod(op cu MEM
cod(op. cu I/O
cod(op. salt
2. Microinstruciuni orizontale
Control secveniereControl ALUControl UCControl MEMControl I/OControl ceas
controleaz mai multe resurse hardware n paralel;
lungimea tipic este de 64 de bii;
lungimea instruciunii depinde i de gradul de codificare:
a. microinstruciune fr codificare; fiecare bit reprezint o microcomand (controleaz o microoperaie)
b. microinstruciune cu codificare pe un nivel; biii care controleaz resurse mutuale exclusive (nu pot s apar simultan) sunt combinai n cmpuri diferite
cmpul A cmpul B
Decodificator Decodificator
2 : 4 4 : 16
0 3 0 15
c. microinstruciune cu codificare pe 2 niveluri; semnificaia unui cmp depinde de valoarea altui cmp de control
cmpul A cmpul B cmpul C
Decodificator Decodificator Decodificator
4 : 16 16 : 64 2 : 4
d. microinstruciune n care acelai cmp controleaz resurse hardware diferite cu funcionare separat n timp; dirijarea cmpului se face cu ajutorul unui cmp de control
A/B
validare resurs A/B
Decodificator
4 : 16
spre resursele A/B
(microoperaii)
9.6. Implementarea microinstruciunii
n cadrul unei execuii normale se succed:
1. citirea microinstruciunii
- determinarea adresei urmtoare;
- obinerea datelor i ncrcarea n registrul de microinstruciuni;
2. decodificarea microinstruciunii;
3. execuia propriu-zis a microinstruciunii.
Exist ns mai multe soluii pentru implementare.
a) Implementarea serie pentru mrirea vitezei de lucru poate exista o soluie de suprapunere a execuiei microinstruciunii curente cu citirea microinstruciunii urmtoare. n mod normal execuia unei microinstruciuni necesit 2 etape: citirea ei i execuia ei propriu-zis.
CE
CE
microinstruciunea 1microinstruciunea 2
Cele 2 etape se pot suprapune i rezult:
CEmicroinstruciunea 1
CEmicroinstruciunea 2
CEmicroinstruciunea 3
Problemele care apar n acest caz sunt din cauza salturilor. Anticiparea microadresei urmtoare se face pe baza unei estimri care trebuie s fie n general bun (de exemplu, la sfritul unei bucle se presupune c se revine la nceputul buclei). Dac anticiparea este corect nu se pierde din vitez. n caz contrar, etapa de citire a noii microinstruciuni trebuie reparcurs i se pierde un ciclu de citire.
b) Caracteristica monofaz-polifaz se refer la numrul de faze utilizate ntr-un ciclu principal de execuie a microinstruciunii.
n cazul implementrii monofazate, microinstruciunea este efectiv (dureaz) o perioad de ceas. Semnalele de control sunt generate simultan cu execuia microinstruciunii.
(I1 (I2 (I3
se ncarc
adresa
urmtoarei (I
n cazul implementrii polifazate, fiecare ciclu principal conine cicluri secundare. Semnalele de comand se genereaz secvenial.
faza1
2
3
Apar 3 faze secundare, fiecare faz genernd semnale de comand.
Exist microinstruciuni care necesit 2 impulsuri de ceas (apare un ceas anticipat).
Ceas
anticipat
(I1 (I2 (I3
9.7. Avantajele i dezavantajele microprogramrii
1. Avantaje:
flexibilitatea modului de control
adaptabilitate
uurin n dezvoltare i ntreinere
uniformitate a proiectrii
pre de cost sczut
viteza
2. Dezavantaje:
pierdere de performan putere limitat a microinstruciunii
volum, putere consumat mai mari
11