|
Unitatea de procesare
In capitolele precedente, s-a prezentat o imagine generala a calculatorului din punctul de vedere al programatorului. Capitolele urmatoare vor ilustra organizarea si functionarea partilor componente care alcatuiesc un computer.
Registrul index B B=A+X (a) Exemplu de adresare indexata
Fig. 2.6 Adresarea indirecta
In forma s-a cea mai simpla, un calculator are o singura unitate care executa instructiunile programului. Aceasta unitate comunica cu, si adeseori controleaza functionarea altor subsisteme din cadrul computerului. Din cauza rolului central pe care il joaca o astfel de unitate este cunoscuta sub numele de unitate centrala de procesare, sau procesor. In majoritatea calculatoarelor, un subsistem din cadrul lor, asa cum ar fi o unitate de intrare sau un disc magnetic, poate incorpora o unitate de procesare proprie. O astfel de unitate de procesare, este centrala pentru subsistemul respectiv, dar in mod evident nu este centrala pentru intreg sistemul de calcul. Cu toate acestea, principiile incluse la proiectarea si functionarea ei sunt independente de pozitia in sistem. In acest capitol se va prezenta organizarea hardware care permite procesorului sa execute functia lui principala: sa citeasca si sa execute instructiuni.
Algoritmul pentru rezolvarea oricarei probleme consta dintr-un anumit numar de pasi care trebuie executati intr-o anumita ordine. Pentru a implementa un astfel de algoritm pe un calculator, acesti pasi sunt impartiti in pasi mai mici, in care fiecare dintre acestia reprezinta o instructiune masina. Secventa de instructiuni rezultata reprezinta programul in limbaj masina care defineste algoritmul specificat. Aceeasi abordare generala se poate folosi pentru a executa de catre procesor functiile specificate de catre instructiunile individuale. Cu alte cuvinte, fiecare dintre aceste instructiuni este executata cu ajutorul unor secvente de operatii rudimentare. Aceste operatii, cat si felul in care sunt generate, va reprezenta principalul scop al acestui capitol.
1 Concepte fundamentale.
Instructiunile care alcatuiesc un program ce trebuie executat de catre computer sunt incarcate in locatii de memorie succesive. Pentru a executa acest program, procesorul citeste rand pe rand aceste instructiuni si realizeaza functiile specificate de ele. Instructiunile sunt citite din adrese succesive de memorie pana in momentul in care se ajunge la o instructiune de ramificare. Asa cum s-a prezentat in capitolele anterioare, procesorul tine minte adresa locatiei de memorie la care se afla instructiunea urmatoare intr-un registru special dedicat numit contorul programului (PC). Dupa citirea unei instructiuni PC-ul este setat pentru a indica spre instructiunea urmatoare din secventa.
Se va presupune in continuare, pentru simplitate, ca fiecare instructiune ocupa un singur cuvant de memorie. Astfel, executia unei instructiuni presupune executarea urmatorilor trei pasi de catre procesor:
1. Citirea continutului locatiei de memorie indicata de catre PC. Continutul acestei locatii este interpretat ca o instructiune ce trebuie executata si este incarcat in registrul instructiunii IR. Acest lucru se poate scrie in urmatorul mod:
IR [[PC]]
2. Se incrementeaza continutul lui PC cu 1.
PC [PC]+1
3. Se executa operatia specificata de catre instructiunea stocata in IR.
In cazul in care instructiunea ocupa mai mult de un cuvant de memorie pasi 1 si 2 pot fi repetati de atatea ori de cate ori este necesar pentru a citi instructiunea completa. Acesti doi pasi sunt numiti faza de citire iar a treilea pas este numit faza de executie.
Majoritatea blocurilor functionale ale procesorului au fost prezentate in figura 1.2. Aceste blocuri pot fi organizate si interconectate in multe variante. Una dintre acestea este prezentata in figura 1. In acest caz unitatea aritmetica si logica (ALU) si toti registri interni sunt conectati printr-o singura magistrala. Aceasta magistrala este interna procesorului si nu trebuie confundata cu magistralele externe ce leaga procesorul de memorie si de dispozitivele de I/O. Magistrala externa de memorie este prezentata in figura 1 prin conexiunile ei la registri MDR si MAR ai procesorului. Numarul si functiile registrilor R0 - Rn-1 variaza considerabil de la un procesor la altul. Ei pot fi pusi la dispozitia programatorului ca si registri generali, sau unii dintre ei pot fi dedicati anumitor scopuri specifice, asa cum ar fi registri de index sau pointeri de stiva.
Doi registri din figura 1 , Y respectiv Z, nu au fost prezentati pana acum, si ei sunt invizibili pentru programator, acesta ne avand acces la ei deoarece ei nu pot fi referiti cu ajutorul unei instructiuni. Acesti registri sunt folositi doar ca bufere temporare de catre procesor in timpul executiei unor anumite instructiuni. Semnificatia acestor registri cat si a celorlalte componente din figura 1, impreuna cu rolul lor in executarea unei instructiuni va fi scos in evidenta in urmatoarele subcapitole.
Cu cateva exceptii, majoritatea operatiilor efectuate in pasii 1, 2 si 3 mentionati mai inainte pot fi realizate prin executia uneia sau mai multora dintre urmatoarele functii intr-o anumita secventa prestabilita:
1. Citirea continutului unei locatii date si incarcarea acestuia intr-un registru al procesorului.
2. Scrierea continutului unui registru al procesorului intr-o locatie de memorie data.
3. Transferarea unui cuvant de date dintr-un registru al procesorului in altul sau in ALU.
4. Realizarea unei operatii aritmetice sau logice si stocarea rezultatului intr-un registru al procesorului.
1.1 Citirea unui cuvant din memorie.
Intr-o memorie RAM, informatiile sunt stocate in locatii identificate prin adrese. Pentru a citi un cuvant de informatie din memorie, procesorul trebuie sa specifice adresa locatiei de memorie in care este memorata acea informatie si sa ceara o operatie de citire. Acest lucru este valabil indiferent de faptul ca cuvantul reprezinta o instructiune sau un operand specificat de o instructiune. Astfel, pentru operatia de citire, procesorul transfera adresa informatiei necesare in registrul MAR. Asa cum se arata in figura 1, registrul MAR este conectat la liniile de adresa ale magistralei de memorie, si astfel adresa cuvantului necesar este trimisa memoriei.
In acelasi timp procesorul foloseste liniile de control ale magistralei de memorie pentru a indica faptul ca este ceruta o operatie de citire. In mod normal dupa efectuarea cererii procesorul asteapta pana primeste un raspuns de la memorie, prin care sa fie informat despre terminarea operatiei. Acest lucru este realizat cu ajutorul unui semnal de control al magistralei de memorie, care va fi numit functie de memorie terminata (MFC) (Memory-Function-Completed). Memoria seteaza acest semnal la 1 logic, pentru a indica faptul ca continutul locatiei specificate de memorie a fost citit si se afla pe liniile de date ale magistralei de memorie. Imediat ce semnalul MFC este pe 1, informatia de pe liniile de date este incarcata in MDR, si astfel este la dispozitia procesorului. Acest lucru incheie operatia de citire. Ca un exemplu, se presupune ca adresa locatiei de memorie ce trebuie accesata se afla in registrul R1 si datele din memorie trebuie incarcate in registrul R2. Acesta se realizeaza cu ajutorul urmatoarei secvente de operatii:
1. MAR [R1]
2. Read
3. Wait MFC
4. R2 [MDR]
Durata pasului 3 depinde de viteza memoriei utilizate. In mod normal timpul necesar citirii unui cuvant din memorie este mai lung decat cel in care se efectueaza o singura operatie in interiorul procesorului. Astfel, timpul total de executie al unei instructiuni poate fi micsorat daca secventa operatiilor este organizata in asa fel incat o operatie necesara, sa fie executata in interiorul procesorului pe durata asteptarii raspunsului de la memorie. Evident, doar functii ce nu necesita utilizarea registrilor MDR si MAR pot fi executate in aceasta perioada. O astfel de situatie apare in timpul operatiei de citire, deoarece PC-ul poate fi incrementat in timpul asteptarii terminarii operatiei Read.
In discutia anterioara s-a prezentat un exemplu despre modul in care transferul de date poate avea loc intre doua dispozitive, in acest caz procesorul si memoria. Mecanismul de transfer in care unul dintre dispozitive initiaza transferul (cerere de citire) si asteapta pana primeste raspuns (MFC) de la celalalt este numit transfer asincron. Se poate observa foarte usor faptul ca acest mecanism permite transferul de date intre doua dispozitive care au viteze diferite de operare. O schema alternativa, ce poate fi gasita in anumite calculatoare foloseste transferul sincron. In acest caz, una din liniile de control ale magistralei contine impulsuri generate de un tact de o frecventa constanta. Aceste impulsuri asigura semnale de sincronizare identice atat pentru procesor cat si pentru memorie. O operatie de memorie este realizata pe parcursul unei singure perioade a impulsului de tact. Mai mult decat atat, momentele in care adresele sunt plasate pe liniile de adresa si datele sunt incarcate in MDR sunt fixe in raport cu aceste impulsuri de tact. Schema cu magistrala sincrona genereaza de obicei o implementare mai simpla, dar nu poate sa realizeze o conlucrare eficienta intre dispozitive cu viteza mult diferita, decat reducand viteza celor mai rapide la viteza celui mai lent. In discutiile urmatoare despre procesor se va presupune utilizarea unei magistrale asincrone.
1.2 Scrierea unui cuvant in memorie.
Procedura de scriere a unui cuvant in memorie este foarte similara cu procedura de citire. Singura exceptie este faptul ca cuvantul ce trebuie scris este incarcat in MDR inainte de generarea comenzii Write. Daca cuvantul de scris este in registrul R2 iar adresa de memorie se afla in R1, operatia Write necesita urmatorii pasi:
1. MAR [R1]
2. MDR [R2]
3. Write
4. Wait MFC
Pasii 1 si 2 sunt independenti si deci se pot executa in orice ordine. De fapt acesti doi pasi se pot executa simultan daca arhitectura o permite, adica daca cele doua transferuri nu folosesc aceleasi cai pentru date. Desigur ca acest lucru nu este posibil intr-o structura cu o singura magistrala ca cea din figura 1.
3.1.3 Transferul intre registri.
Pentru a permite transferul de date intre diferitele blocuri conectate la magistrala comuna din figura 1, este necesara introducerea de porti de I/O. Acest lucru este reprezentat simbolic in figura 2.
Portile de I/O ale registrului Ri sunt controlate de semnalele si . Astfel, cand este setat la 1, datele disponibile pe magistrala comuna sunt incarcate in Ri. In mod similar cand este 1, continutul registrului Ri este pus pe magistrala. Atata timp cat este egal cu 0, magistrala poate fi utilizata pentru transferul de date din alti registri.
Se va considera in continuare transferul de date din registrul R1 in registrul R4:
Se activeaza poarta de iesire a registrului R1 prin setarea semnalului la 1. Acest lucru plaseaza continutul lui R1 pe magistrala procesorului.
Se activeaza poarta de intrare a registrului R4 prin setarea semnalului la 1. Acest lucru incarca datele de pe magistrala procesorului in registrul R4.
Acest transfer de date poate fi reprezentat simbolic prin:
3.1.4 Executarea unei operatii aritmetice sau logice.
Pentru a realiza o operatie aritmetica sau logica trebuie sa se tina cont de faptul ca ALU este un circuit combinational care nu are circuite interne de memorare. Astfel, pentru a realiza o adunare, cele doua numere de adunat trebuie sa fie disponibile la cele doua intrari ale ALU simultan. In acest scop s-a prevazut registrul Y in figura 1, el fiind folosit pentru stocarea unuia din cei doi operanzi in timp ce celalalt se introduce pe magistrala. Rezultatul operatiei este memorat temporar in registrul Z. In concluzie, secventa de operatii necesara pentru adunarea continutului registrului R1 la continutul registrului R2 si stocarea rezultatului in R3 trebuie sa fie urmatoarea:
1.
2.
3.
In pasul 2 al acestei secvente continutul registrului R2 este pus pe magistrala astfel fiind conectat prin poarta de iesire la intrarea B a ALU. Continutul registrului Y este intotdeauna disponibil la intrare A. Functia pe care trebuie sa o execute ALU depinde de semnalele aplicate la liniile de control ale ei. In acest caz linia de control Add este setata la 1, generand rezultatul ca si suma celor doua numere A si B. Aceasta suma este incarcata in registrul Z, deoarece poarta lui de intrare este deschisa. In pasul 3, continutul lui Z este transferat in registrul destinatie R Acest lucru nu se putea realiza in pasul 2 deoarece nu poate sa existe decat o iesire de registru conectata la magistrala iar in pasul 2 era deja conectata iesirea lui R2.
3.1.5 Portile registrilor si momentele de timp ale transferului de date.
Se va considera in continuare cazul in care fiecare bit al registrilor din figurile 1 si 2 consta fizic dintr-un singur bistabil asa cum se arata in figura Elementul de memorare prezentat se presupune a fi unul dintre bitii registrului Z.
Atata timp cat intrarea de control Zin este egala cu 1, starea bistabilului se schimba in functie de datele de pe magistrala. In urma unei tranzitii din 1 in 0 a acestui semnal, bistabilul ramane blocat pe ultima valoare memorata pana apare din nou valoarea 1 la intrarea de control. Astfel, cele doua porti de la intrarea bistabilului implementeaza functia intrerupatorului intrarii de control din figura 2.
O prima observatie asupra intrerupatoarelor portilor de iesire din figura 2, conduce la necesitatea unor intrerupatoare ON/OFF in aceste puncte. Cand un anume intrerupator este in starea ON, el transfera continutul registrului corespunzator pe magistrala, iar daca este in starea OFF el este din punct de vedere electric deconectat de la magistrala, adica el nu seteaza nici o stare anume pe ea, permitand astfel altui registru sa poata plasa date pe magistrala. Astfel, iesirea registrului trebuie sa permita trei stari distincte: 1, 0, si circuit deschis.
In urma acestei necesitati este evident ca intrerupatoarele electromecanice (relee) sunt incompatibile din punct de vedere al vitezei de operare si al gabaritului cu tehnologia microelectronica folosita intr-un procesor. In locul lor, se proiecteaza poarta de iesire a registrului in asa fel incat sa se comporte in mod similar cu un intrerupator mecanic, adica sa fie capabila sa se deconecteze din punct de vedere electric de la magistrala, cat si sa poata sa plaseze atat o valoare 1 logic cat si o valoare 0 logic pe ea. Deoarece suporta aceste trei posibilitati o astfel de poarta se numeste o poarta cu trei stari (three state). O intrare separata de control este necesara pentru activarea portii sau pentru punerea ei intr-o stare de impedanta ridicata (deconectare electrica) care sa corespunda cu circuitul deschis al unui intrerupator mecanic.
Nici circuitele TTL si nici cel CMOS obisnuite nu au aceasta facilitate de conectare direct la magistrala. Conectarea iesirilor a doua astfel de circuite in paralel provoaca un scurtcircuit. Aceste circuite pot fi modificate pentru a opera in trei stari prin introducerea unui semnal de intrare de control care sa opreasca toti tranzistorii din partea finala.
O alta solutie pentru aceasta problema, care nu necesita utilizarea acestor intrerupatoare de iesire prezentate este folosirea de porti cu colectorul in gol pentru TTL, sau cu drena in gol pentru CMOS. Iesirea acestor porti este echivalenta cu o legatura la masa. Intrerupatorul este deschis cand poarta de iesire este in starea 1 si inchis cand poarta este in starea 0. Structura unei magistrale cu colector in gol este prezentata in figura 4.
In starea normala, magistrala se afla la 1 logic datorita rezistentei de sarcina care este legata la sursa de alimentare. Astfel, atata timp cat intrerupatoarele portilor sunt deschise, adica toate iesirile se afla in starea 1, magistrala ramane in starea 1. Daca oricare din iesirile portilor trece in 0, intrerupatorul corespunzator va fi inchis si magistrala va trece in stare 0. Cu alt cuvinte magistrala realizeaza o functie SI intre toate portile conectate la ea. Aceasta conexiune mai poarta numele de conexiune SI cablata. Daca se foloseste aceasta metoda atunci poarta cu trei stari din figura 3 trebuie inlocuita cu un circuit SI-NU cu colector in gol ca in figura Cand Zout este 1, bitul stocat in bistabil este pus pe magistrala. Cand Zout este 0, magistrala ramane pe 1, permitand ca datele de la alt registru sa fie transferate pe ea.
In general metoda cu 3 stari permite un transfer mai rapid de informatie in comparatie cu colectorul in gol. Din acest motiv, este cea mai folosita dintre cele doua.
Se vor discuta in continuare cateva aspecte legate de momentele de timp in care au loc transferurile de date in interiorul procesorului. Se considera cazul operatiei de adunare in pasul 2 din subcapitolul 1.4. Din momentul in care semnalul este pus pe 1, o intarziere finita este necesara pentru ca poarta sa se deschida dupa care urmeaza o alta necesara ca datele sa traverseze magistrala pana la intrarea in ALU. O noua intarziere este introdusa de circuitele de adunare ale ALU. Pentru ca rezultatul sa se memoreze corect in registrul Z, datele trebuie mentinute pe magistrala o perioada suplimentara de timp egala cu timpii necesari setarii si mentinerii acestui registru. Aceasta situatie este prezentata in diagrama din figura 5. Suma celor cinci intarzieri reprezinta durata minima de timp in care semnalul trebuie sa fie activ.
3.1.6 Structuri cu magistrale multiple.
Organizarea cu o singura magistrala din figura 1 reprezinta una din posibilitatile de interconectare a diferitelor blocuri ce alcatuiesc un procesor. O structura alternativa este cea cu doua magistrale prezentata in figura 6.
Toate iesirile de registri sunt conectate la magistrala A, iar toate intrarile sunt conectate la magistrala B. Cele doua magistrale sunt conectate prin legatura G, care daca este activata transfera datele de pe magistrala A pe B. Cand G este dezactivata, cele doua magistrale sunt izolate din punct de vedere electric. Se observa faptul ca registrul de stocare temporara Z din figura 1 nu mai este necesar in aceasta organizare deoarece , daca legatura intre magistrale este inactiva, iesirea ALU poate fi transferata direct catre registrul destinatie. Ca si exemplu, se considera operatia de adunare discutata anterior poate fi realizata in urmatorul mod:
1.
2.
Este important de remarcat faptul ca, in ipoteza ca registri sunt bistabili simpli ca si in figura registrul destinatie din secventa de mai sus trebuie sa fie diferit de R2, deoarece cele doua operatii si nu pot fi executate simultan. Acest lucru se datoreaza faptului ca ALU este un circuit combinational lipsit de circuite de memorare. Operatia R2 [R1] + [R2] poate fi totusi realizata, schimband semnalele si intre ele si inlocuind semnalul cu in pasul 2. Restrictia ca semnalele si sa nu poata sa apara simultan poate fi eliminata daca se folosesc bistabile trigherabile pe front.
Se va considera in continuare inca un mod de organizare a procesorului, de data aceasta pe trei magistrale asa cum se prezinta in figura 7. Fiecare magistrala este conectata la o singura iesire si la mai multe intrari. Prin eliminarea conectarii mai multor iesiri la aceeasi magistrala se obtine un castig de viteza si un control mai simplu al magistralelor. Un multiplexor este prevazut la intrare in fiecare din cei doi registri A si B, care sa permita incarcarea lor fie de pe magistrala de date de intrare fie de pe magistrala registrilor.
Registrii de ordin general ai procesorului din figura 7, sunt prezentati ca un singur bloc. Se presupune ca sunt implementati utilizand o unitate de memorie RAM. Termenul de RAM folosit aici se refera la tipul de hardware folosit pentru implementarea registrilor si nu trebuie confundat cu memoria RAM principala a calculatorului care este conectata la magistrala externa.
3.2 Executia completa a unei instructiuni.
Se va prezenta in continuare punerea cap la cap a secventelor de operatii elementare necesare pentru executarea unei instructiuni. Ca exemplu se va considera instructiunea de adunare a continutului locatiei de memorie NUM la registrul R1. Se va presupune, pentru simplicitate ca adresa NUM este data explicit in campul de adrese al instructiunii, adica se utilizeaza modul de adresare direct. Executia acestei instructiuni necesita urmatoarele etape:
1. Citirea instructiunii.
2. Citirea primului operand (continutul locatiei de memorie indicata de campul de adresa al instructiunii).
3. Realizarea adunarii.
4. Incarcarea rezultatului in registrul R1.
Figura 8 prezinta secventa semnalelor de control necesare pentru implementarea operatiilor de mai sus intr-o arhitectura cu o singura magistrala ca cea din figura 1.
1. PCout, MARin, Read, Clear Y, Set carry-in la ALU, Add, Zin
2. Zout, PCin, Wait MFC
3. MDRout, IRin
4. Campul de adresa al lui IRout, MARin, Read
5.
Secventa de control pentru executarea
unei instructiuni de adunare a continutului unei locatii de
memorie adresata direct la registrul R1
, in, Wait MFC
Fig. 8
6. MDRout, Add, Zin
7. Zout,
8. End
In pasul 1, este pornita operatia de citire a instructiunii prin incarcarea continutului PC-ului in registrul MAR si trimiterea semnalului Read pentru cererea de citire din memorie. Acest lucru se realizeaza prin setarea uneia dintre intrarile in ALU (registrul Y) la 0 si setarea celeilalte intrari (magistrala interna a procesorului) la valoarea curenta din PC. In acelasi timp semnalul caryy-in de la ALU este setat la 1 si se realizeaza o operatie Add. Valoarea astfel modificata este incarcata din registrul Z inapoi in registrul PC pe parcursul pasului 2. Trebuie remarcat faptul ca pasul 2 este pornit imediat dupa activarea cererii de citire din memorie fara a mai astepta terminarea functiei de memorie. Pasul 3 in schimb, trebuie sa astepte aparitia semnalului MFC. In pasul 3, cuvantul citit din memorie este incarcat in registrul IR. Pasii de la 1 la 3 constituie faza de citire a instructiunii. Aceasta portiune este identica pentru toate instructiunile.
Imediat ce registrul Ir a fost incarcat, circuitele de decodificare a instructiunii interpreteaza continutul acesteia. Acest lucru permite circuitelor de control sa genereze semnalele adecvate pentru restul secventei de comenzi din pasii 4 pana la 8, care reprezinta faza de executia e a instructiunii. in pasul 4, campul de adresa al lui IR, care contine, adresa NUM, este incarcat in MAR, si se initiaza o operatie de citire din memorie. Dupa acest lucru continutul lui R1 este transferat in registrul Y. Cand operatia Read a fost terminata, operandul din memorie este disponibil in MDR. Operatia de adunare se realizeaza in pasul 6, iar rezultatul este transferat in registrul R1 in pasul 7. Semnalul End din pasul 8, indica terminarea executiei instructiunii curente si initiaza un nou ciclu de citire de instructiune repornind de la pasul 1.
2.1 Ramificari.
Asa cum s-a prezentat in capitolul 2, ramificarea este realizata prin inlocuirea continutului curent al PC-ului cu adresa de salt, adica adresa instructiunii la care sa se realizeze ramificarea. Adresa de salt se obtine de obicei prin adunarea unui ofset X, care este dat in campul de adresa al instructiunii de salt, la valoarea curenta din PC. Figura 9 prezinta secventa semnalelor de control care permite executia unui salt neconditionat folosind o structura cu o singura magistrala ca cea din figura 1.
1. PCout, MARin, Read, Clear Y, Set carry-in la ALU, Add, Zin
2. Zout, PCin, Wait MFC
3. MDRout, IRin
4. PCout, Yin
5. Campul de adresa al lui IRout, Add, Zin
6.
Secventa de control pentru executarea
unei instructiuni de salt neconditionat
Zout, PCin
Fig. 9
7. End
Executia porneste ca la o instructiune oarecare cu faza de citire, faza care se termina prin incarcarea instructiunii in IR in pasul Pentru a executa instructiunea de salt, continutul PC-ului este transferat in registrul Y in pasul 4. Dupa aceasta operatie, ofsetul X este introdus pe magistrala, si operatia de adunarea are loc. Rezultatul acestei operatii, care reprezinta adresa de salt, este incarcat in PC in pasul 6.
Este important de remarcat faptul ca in acest exemplu PC-ul este incrementat pe timpul fazei de citire indiferent de tipul instructiunii ce se executa. Astfel, in momentul in care ofsetul X este adunat la continutul PC-ului (pasii 4 si 5) din figura 9, acest continut este deja modificat pentru a indica instructiunea urmatoare instructiunii de salt din cadrul programului. Astfel, ofsetul X trebuie sa fie diferenta, dintre adresa de salt si adresa imediat urmatoare instructiunii de salt. De exemplu, daca instructiunea de salt se afla la locatia 1000, si este necesar un salt la locatia 1050, valoarea lui X trebuie sa fie 49.
Se va considera in continuare cazul unei instructiuni de salt conditionat. Singura diferenta in acest caz fata de figura 9 este necesitatea verificarii conditiei de salt in pasii 3 si 4. De exemplu, daca instructiunea decodificata este salt in caz de valoare negativa , unitatea de control procedeaza in felul urmator. In primul rand registrul care contine conditia este verificat. Daca bitul N (negativ) este egal cu 1, unitate de control va urma pasii 4 pana la 7 din figura 9. Daca, pe de alta parte N este egal cu 0, se va genera semnalul End. Acest semnal termina executia instructiunii de salt si genereaza citirea urmatoarei instructiunii de dupa instructiunea de salt. Pasul 4 modificat pentru o astfel de instructiune de salt conditionat arata in felul urmator:
4. Daca atunci End
Daca N atunci PCout, Yin
3.3 Secventierea semnalelor de control.
Pentru a executa o instructiune, procesorul trebuie sa aiba facilitatea de a genera semnalele de control discutate mai sus intr-o secventa adecvata. Exista o gama foarte larga de tehnici de rezolvare a acestei probleme. Majoritatea dintre aceste tehnici apartin unei din urmatoarele doua mari categorii:
1. Control cablat
2. Control microprogramat