Sunteți pe pagina 1din 11

Ciclul Fetch-Execute

Funcionarea calculatorului implic n fiecare moment anumite activiti prin


care acesta execut diverse comenzi primite de la sistemul de operare sau de la
programele utilitare, comenzi ce implic de fiecare dat execuia unor instruciuni.
Operaia de baz a unui procesor este reprezentat de aa-numitul ciclu Fetch-
Decode-Execute sau, pe scurt, Fetch-Execute. Pe scurt, aceast operaie implic
faptul c pentru a executa o instruciune, de fiecare dat, procesorul citete o
instruciune de program din memorie, o decodific i apoi o execut. Acest lucru
poate prea anevoios dar viteza fantastic la care acioneaz microprocesorul face ca
procedeul de aducere din memorie, decodificare i apoi execuie s se desfoare
extrem de rapid.
Cei trei actori implicai n acest proces, microprocesorul, memoria i
magistrala de memorie acioneaz la diferite viteze, de aceea, cu ct una dintre
componente are o vitez de acionare mai mare, cu att va contribui mai mult la
scurtarea timpului de execuie a unui program. Exist aplicaii ce solicit intens lucrul
cu memoria n acest caz memoriile ieftine i rapide prezint un avantaj, n timp ce
alte aplicaii pot solicita intens activitatea procesorului desigur c n acest caz un
procesor mai rapid va crete performanele de calcul.
Din punct de vedere al tipului de memorie principal folosit de ctre
calculatoare, exist n principiu dou tipuri de baz: cipuri DRAM (Dynamic
Random Access Memory), care nu sunt att de rapide precum procesorul. Un alt tip
de memorie este memoria SRAM (Static Random Access Memory), care
funcioneaz la viteze mai mari dar are i costuri de producie mult mai ridicate;
astfel de cipuri de memorii sunt utilizate la memoriile cache. Memoriile cache sunt
utilizate pentru a reduce decalajul dintre viteza microprocesorului i aceea a
memoriei principale prin copierea i stocarea instruciunilor i datelor ce vor fi
folosite imediat de ctre procesor.
Procesoarele RISC i chiar procesoarele CISC (Intel) au introdus o serie de
tehnici noi pentru a mri eficiena ciclului Fetch-Execute prin procesarea
simultan a mai multor instruciuni; cea mai cunoscut astfel de tehnic fiind tehnica
prelucrrii n conduct (pipeline) a instruciunilor.

Ciclul fetch-execute

Computerul trebuie s citeasc i s se supun fiecrui program (inclusiv
sistemului de operare), instruciune cu instruciune. La prima vedere este un
handicap din punct de vedere al performanelor dac este comparat cu organismele
vii capabile s desfoare mii de activiti simultan.
Operaia de baz pe care o ndeplinete procesorul este operaia fetch-
execute, secven n care fiecare instruciune din cadrul unui program este citit din
memorie asociat programului n CPU, este decodificat i apoi executat. Doar
viteza extraordinar a echipamentelor electronice face ca acest ciclu obositor care se
repet ncontinuu s fie de real valoare.
n orice faz a dezvoltrii computerelor, una dintre cele trei uniti implicate
n acest ciclu memoria, magistrala i CPU a fost factorul limitativ. Acest lucru
poate afecta att parametrii cu care trebuie s lucreze inginerii i, de asemenea,
selectarea algoritmilor pentru rezolvarea problemelor. De exemplu, exist uneori
disponibile metode memory-intensive sau alteori metode compute-intensive.
Dac memoria este rapid i ieftin, atunci primele metode sunt de preferat;
n cellalt caz este preferat a doua soluie. n prezent, cipurile DRAM de memorie
nu sunt la fel de rapide precum CPU. Exist disponibile i cipuri mai rapide SRAM,
dar care sunt mult mai scumpe i de aceea sunt utilizate n mici buffere foarte rapide
denumite i memorii cache. Acest tip de memorii poate ajuta ntr-o oarecare msur la
reducerea diferenei dintre ntrzierile cauzate de accesul la memorie prin stocarea
unor cpii ale instruciunilor i datelor curente.
Pentru a reduce i mai mult gtuirea obinut datorat efectului negativ a
structurii secveniale von Neumann, noile procesoare RISC mresc viteza de
execuie a ciclului fetch-execute prin execuia simultan a (~5) instruciuni prin
intermediul unei metode pipeline.
Orict de familiari am fi cu modalitatea de lucru a computerelor, este practic
imposibil s nelegem viteza incredibil la care acestea opereaz. Tabelul urmtor ne
prezint diferenele ntre viteze ale operaiunilor uzuale din lumea real.

ns= 1 / 1000 000 000 s s = 1 / 1 000 000 s ms = 1 / 1 000 s
Ciclul fetch/execute 10 ns
Viteza luminii 300 m/s
Viteza de reacie uman
300 ms
Funcionarea unei pori logice
5 ns
Linie de scan TV 60 s
Cadru TV 20 ms
Acces la memoria SRAM 15
ns
ntrerupere 2-10 s
Acces la hard-disk 10 ms

Scnteie la motor 10 s
Rotaie complet a
motorului la main (la
3000 rpm) 20 ms

Tabelul 1. Exemple de activiti i viteza asociat acestora

Din tabel ne putem da seama de diferena existent ntre viteza de operare a
calculatorului i diferite viteze din lumea nconjurtoare. Lucrurile ce par extrem de
rapide, cum ar fi liniile de scan TV, sunt de sute de ori mai ncete dect un ciclu
fetch-execute realizat de ctre microprocesor. Dup cum tim, la cel mai de jos nivel
programele n calculator sunt formate din iruri de bii ce reprezint codificarea
binar a unor instruciuni, precum:

1000 1011 1110 1100

Acest ir de bii este echivalent cu urmtoarea instruciune a procesorului
Pentium:

MOV BP , SP

Rezultatul instruciunii anterioare este acela de a copia coninutul registrului
SP n registrul BP.

De asemenea, irul de bii:

1000 1011 0011 0100 0001 0010

este echivalent cu instruciunea urmtoare n limbaj de asamblare (pentru
Pentium):

MOV AX, 1234H

Sau, n limbajul C:

x = 4660;

Se observ astfel avantajul unui limbaj de programare de nivel nalt (n cazul
nostru limbajul C) fa de exprimarea n limbaj cod-main (iruri de bii) sau n
limbaj de asamblare. Instruciunea de mai sus va copia valoarea zecimal 4660 (1234
n hexazecimal) n registrul AX (denumit i registrul acumulator).
Ciclul fetch-execute reprezint procesul prin care microprocesorul preia din
memoria n care este stocat programul urmtoarea instruciune ce va fi executat, o
decodific i execut operaia pe care aceast instruciune o reprezint.
n continuare prezentm acest funcionarea general a acestui proces. n
figura 2 putem vedea microprocesorul cu registrul pointer de instruciune - IP
(Instruction Pointer) i registrul acumulator AX (Accumulator Register). Memoria
principal stocheaz programul aflat n execuie, n care toate instruciunile de genul:
MOV BP,SP sau MOV AX, 1234H se afl reprezentate sub form binar. Un
registru de acces la memorie este utilizat pentru a putea accesa poriunea de
memorie de unde sunt preluate datele. Registrul pointer de instruciune indic tot
timpul adresa din memorie a urmtoarei instruciuni ce va fi executat.


Figura 2. IP (Pointerul de instruciune) indic ntotdeauna adresa
urmtoarei instruciuni ce va fi executat

Figurile 3 i 4 ne nfieaz procesul de preluare a datelor din memorie (etapa
fetch). Aceast etap este aproximativ identic pentru toate tipurile de instruciuni.
Paii urmai de microprocesor n aceast etap sunt:
a) Adresa din registrul pointer de instruciune (IP) este copiat pe magistrala
de adrese de memorie de unde este transmis n registrul RAM (Registrul de Acces
la Memorie);
b) Pointerul de instruciune este incrementat (IP++), indicnd adresa de
memorie a urmtoarei instruciuni ce va fi executat;
c) Se selecteaz locaia de memorie i se copiaz coninutul acesteia n
magistrala de date;
d) Procesorul copiaz codul instruciunii din magistrala de date n registrul de
instruciune;
e) ncepe procesul de decodificare a instruciunii.




Figura 3. Ilustrarea pasului a) din ciclul fetch



Figura 4. Ilustrarea pailor b), c) i d) din ciclul fetch

Figurile 5 i 6 ne nfieaz procesul de execuie a instruciunii (etapa execute)
n cazul instruciunii Intel MOV AX, 1234H (etapa execute difer de la instruciune la
instruciune). Paii urmai de microprocesor n aceast etap sunt:
a) Coninutul registrului pointer de instruciune (IP) este copiat pe magistrala
de adrese de memorie de unde este transmis n registrul RAM (Registrul de Acces la
Memorie);
b) Pointerul de instruciune este incrementat (IP++);
c) Valoarea selectat din memorie (1234H) este copiat pe magistrala de date;
d) Procesorul copiaz valoarea de pe magistrala de date n registrul AX.



Figura 5. Ilustrarea pasului a) din ciclul execute

Acest proces reprezint, de fapt, o simplificare a procesului fetch-execute ce se
desfoar n cadrul unui microprocesor modern din zilele noastre. Unele
instruciuni au nevoie de un ciclu de execuie n plus pentru a citi valoarea unei
adrese din memorie, care este mai apoi folosit pentru a accesa valoarea variabilei
respective, valoare stocat tot n memorie. Ca o concluzie, ciclul fetch-execute
reprezint secvena prin care fiecare instruciune a unui program este citit din
memorie, decodificat i apoi executat. Acest proces poate presupune ulterior mai
multe sub-procese, cum ar fi citirea de date suplimentare din memorie i stocarea
rezultatelor operaiei/operaiilor napoi n memorie.



Figura 6. Ilustrarea pailor b), c) i d) din ciclul execute

Att sistemul de operare Windows NT/2000 ct i sistemul de operare UNIX
ofer instrumente prin care pot fi vizualizate activitile ce se afl n lucru. Pe staiile
Sun cu sistemul de operare UNIX (varianta Solaris) exist utilitarul denumit perfmeter,
pentru Linux exist xsysinfo i gsysinfo iar pentru Windows NT exist Performance
Monitor, care a fost nlocuit n Windows 2000 de System Monitor. Prezentm n
continuare caracteristicile acestor aplicaii utilizate pentru monitorizarea utilizrii
resurselor calculatorului.

1. UNIX perfmeter

Pentru o staie Sun, comanda care ne arat detaliat activitatea
microprocesorului este:

$ perfmeter t cpu &

2. Linux

xsysinfo

Conform paginii de manual, utilitarul xsysinfo afieaz parametrii kernelului
sub form grafic. Sintaxa complet este urmtoarea:
xsysinfo [-help] [-update n] [-[no]title] [-[no]labels] [-
[no]loadavg] [-[no]load] [-[no]mem] [-[no]swap]


Pe scurt, xsysinfo este o aplicaie XWindow folosit pentru afiarea unor
parametri ai kernelului Linux n format grafic, o combinaie a comenzilor top, free i
xload, cu diferena c valorile afiate (media gradului de utilizare a procesorului,
gradul de utilizare a procesorului, dimensiunea de swap) sunt prezentate ntr-o
fereastr orizontal.
Utilitarul xsysinfo afieaz urmtoarele valori:
- gradul mediu de utilizare al UCP valoarea afiat este ntre 0.000 i 8.000.
Bara orizontal a afiajului este mprit n segmente, unde fiecare segment
reprezint o valoare de 1.
- gradul de utilizare al UCP se afieaz gradul de utilizare i timpii de
neutilizare pe trei segmente: utilizator, sistem i nice. n cazul unui sistem multi-
procesor opiunea smp afieaz cte o bar orizontal pentru fiecare procesor n
parte.
- memoria bara grafic ce corespunde memoriei este mprit n dou
segmente ce reprezint dimensiunea fizic a memoriei calculatorului ce este utilizat
de procese (n partea stng) i memoria utilizat pentru paginare i memoria cache
buffer n partea dreapt. ntreaga lungime a segmentului orizontal ne arat memoria
fizic utilizat de ctre sistem la momentul respectiv.
- poriunea de swap indic dimensiunea de spaiu swap utilizat de ctre sistem
din totalul spaiului swap alocat.

gsysinfo
Gsysinfo este un utilitar conceput pentru interfaa grafic Gnome i
urmrete utilitatea programului xsysinfo. Gsysinfo este conceput sub licen GNU
GPL (General Public Licence).
Referitor la numele de GNU, acesta provine de la sintagma GNU Not
UNIX i s-a dorit a fi un sistem de operare precum UNIX ce este distribuit cu
codul surs i poate fi copiat, modificat i redistribuit. Proiectul GNU a fost iniiat n
1983 de Richard Stallman i alii ce au pus bazele Fundaiei pentru Software Liber
(FSF Free Software Foundation). Concepia lui Stallman este aceea c utilizatorii pot
face ce doresc cu software-ul achiziionat, putnd face cpii ale acestuia pentru
prieteni i modifica codul surs redistribuind-ul la un anumit cost. FSF stipuleaz
termenul copyleft care nseamn c oricine redistribuie software free trebuie s lase n
continuare libertatea de copiere i redistribuie a programului, asigurndu-se n acest
fel c nimeni nu va reclama drepturi de proprietate asupra unor versiuni viitoare i
nu va impune restricii la utilizarea acestuia.
n acest context, termenul free nseamn libertate i nu neaprat gratis. Fundaia
FSF percepe nite costuri iniiale la distribuia GNU. Redistribuitorii pot, de
asemenea, s perceap taxe pentru copiile programelor n scopul profitului sau
pentru acoperirea costurilor. Ideea de baz a software-ului liber (free software) este aceea
c se las libertatea utilizatorilor s modifice i s reasambleze produsul fr nici o
restricie n afar de aceea c nici ei, la rndul lor, nu pot impune restricii mai
departe.
Stallman crede c unul dintre rezultatele filozofiei free software este acela c mai
multe programe free vor coexista mpreun provenind din alte programe free. GNU


este un exemplu n acest sens; acesta a devenit un sistem de operare cnd n august
1996 i-a fost adugat un kernel (GNU Hurd i Mach). Fundaia FSF continu s
dezvolte software free sub form de programe de aplicaii; un program de tip
spreadsheet este acum disponibil. Sistemul de operare Linux este conceput cu
componente GNU iar kernelul este dezvoltat de Linus Torvalds.

Capturi de ecran gsysinfo

Prezentm n continuare cteva capturi de ecran gsysinfo.
- putem vedea n imaginea de mai jos utilitarul gsysinfo situat ntre bara de
volum i ceas (ncrcarea sistemului este de aproximativ 1.8):



- n continuare apare indicatorul sysinfo pentru activitatea n reea. Traficul de
date transmise de la calculator spre reea apare n culoarea verde iar traficul de
intrare este ilustrat n rou.

- n figurile 7, 8 i 9 apar ferestrele legate de setarea caracteristicilor
programului gsysinfo.

GNU s-a vrut iniial s fie o alternativ la versiunile comerciale de UNIX. Acest lucru nu s-a ntmplat nc,
dar Richard Stallman i ali programatori muncesc n continuare pentru acest ideal. Paradoxal este c primele succese
nregistrate de GNU au fost aplicaii adiionale sistemelor proprietare UNIX. Componente GNU precum GNU
Emacs, GCC (GNU C Compiler) i bash (un nlocuitor free pentru Bourne Shell) sunt instalate astzi implicit pe
majoritatea variantelor de UNIX existente.


Figura 7. Fereastra de setri pentru gsysinfo
caracteristici generale

Figura 8. Fereastra de setri pentru gsysinfo
indicatori


Figura 9. Fereastra de setri pentru gsysinfo Layout


Windows 2000 - System Monitor

n Windows 2000, cu ajutorul lui System Monitor se pot msura
performanele calculatorului local sau ale altor calculatoare din reea. Utilitarul
System Monitor asigur urmtoarele funcionaliti:
Colecioneaz i vizualizeaz n timp real date legate de performana
calculatorului local sau pentru alte calculatoare de la distan;
Vizualizeaz datele colectate n timp real sau stocate anterior;
Reprezint datele sub form de: grafic, histogram sau raport de
vizualizare;
ncorporeaz funcionaliti ale aplicaiei System Monitor n Microsoft
Word sau alte aplicaii ale suitei Microsoft Office cu ajutorul caracteristicei
denumite Automation;
Creeaz pagini HTML pentru vizualizarea performanelor;
Creeaz configuraii de monitorizare reutilizabile ce pot fi instalate pe alte
calculatoare ce folosesc MMC (Microsoft Management Console).

Cu ajutorul lui System Monitor se pot colecta i vizualiza date legate de gradul
de utilizare a componentelor hardware precum i date legate de activitile serviciilor
de sistem existente pe calculatoarele administrate. n cadrul aplicaiei se poate stabili
modalitatea de prezentare a datelor n urmtoarele moduri:
Tipul de date pentru a selecta datele ce vor fi colectate, se pot specifica
unul sau mai multe instane de contorizare pentru obiecte ale monitorului
de performane. Unele obiecte (memoria, spre exemplu) ofer contorizare
la nivelul resurselor sistemului; altele ofer posibilitate de contorizare la
nivelul execuiei aplicaiilor.
Sursa de date Aplicaia System Monitor poate strnge date de pe
calculatorul local sau de pe alte calculatoare din reea unde exist aceast
permisiune (implicit este nevoie de drepturi de administrator). n plus, se
pot include att date culese n timp real ct i date stocate anterior n
fiiere speciale de tip log.
Parametri de test se ofer posibilitatea de stabilire manual, la cerere sau
automat ntr-un interval specificat a unor teste de date. Atunci cnd se
vizualizeaz aceste date se poate alege momentul de nceput sau de sfrit
astfel nct datele pot fi vizualizate ntre intervale specificate de timp.





Magistrala de sistem

Pentru a coordona i controla ntrega activitate a calculatorului,
microprocesorul trimite nite mesaje, denumite semnale, ctre componentele acestuia.
Din punct de vedere al tipului acestor semnale, ele se pot clasifica n semnale pentru
magistrala de date (de regul cu o dimensiune de 32 sau 64 de bii), magistrala de
adrese (de asemenea, pe 32 bii sau mai mult) i magistrala de control (format din
aproximativ 15 linii de control ce au rolul de a iniia sau stopa diverse activiti din
interiorul computerului). Una dintre liniile de control este reprezentat de ceasul de
sistem, care este un oscilator de cristal de nalt frecven (pe placa de baz l
identificm ca fiind un mic cilindru argintiu, situat n apropierea microprocesorului).
Dup cum am mai artat, prin intermediul liniilor de magistral (pentru a
controla diversele activiti ale calculatorului), microprocesorul trimite semnale ctre
componentele calculatorului, componentele trimind, la rndul lor, un rspuns ctre
microprocesor. n unele cazuri o astfel de aciune este controlat de un alt dispozitiv
dect microprocesorul, care poate lua controlul asupra liniilor de magistral (n acest
mod se elibereaz i procesorul de sarcina respectiv). Secvena semnalelor
trimise prin intermediul magistralei trebuie s fie coordonate extrem de precis n
timp printr-o aciune de sincronizare. Dac aceast operaie de sincronizare este
asigurat n ntregime de ctre ceasul de sistem, atunci magistrala se numete
sincron.