Sunteți pe pagina 1din 13

ARHITECTURA CALCULATOARELOR 2011 CURSUL 5 CAPITOLUL 2 : Manipularea datelor

n capitolul 1 am studiat conceptele referitoare la stocarea datelor i memoria calculatoarelor. Pe lng abilitatea de a stoca date, o main algoritmic trebuie s fie capabil s manevreze datele conform unui algoritm. Manipularea datelor cere ca maina s dispun de un mecanism att pentru efectuarea de operaii asupra datelor, ct i pentru coordonarea secvenelor de operaii. n cazul calculatoarelor uzuale de astzi acest mecanism este denumit unitate central de prelucrare (Central Processing Unit - CPU). Capitolul al doilea se concentreaz asupra acestui dispozitiv i a subiectelor legate de el.

2.1 Unitatea central de prelucrare


ntr-un calculator obinuit, circuitele care realizeaz diferite operaii asupra datelor (cum ar fi adunarea sau scderea) nu sunt conectate direct la celulele memoriei principale. De fapt, aceste circuite sunt grupate distinct ntr-o parte a calculatorului denumit unitate central de pralucrare (Central Processing Unit - CPU). Aceast unitate const din dou pri: unitatea aritmetico logic (Arithmetic/Logic Unit), care conine circuitele care realizeaz manipularea datelor, i unitatea de comand (Control Unit), care conine circuitele utilizate pentru coordonarea activitilor mainii.

2.1.1 Regitri
Pentru stocarea temporar a informaiilor, unitatea central de prelucrare conine celule, denumite regitri (registers), care sunt similare cu celulele memoriei principale a calculatorului. Aceti regitri pot fi clasificai ca fiind regitri de uz general (general purpose registers) i regitri speciali (special - purpose registers). Vom studia civa dintre regitrii speciali ntr-un alt subcapitol. Aici, ne vom opri asupra regitrilor de uz general. Regitrii de uz general servesc la stocarea temporar a datelor care sunt manipulate de CPU. Ei memoreaz intrrile circuitelor unitii aritmetico-logice i furnizeaz spaiu pentru memorarea rezultatelor produse de aceasta. Pentru a putea efectua o operaie cu nite date stocate n memoria principal, unitatea de comand trebuie s transfere datele din memorie n regitrii de uz general, s informeze apoi unitatea aritmetico-logic n care regitrii anume sunt stocate datele, s activeze circuitele adecvate din unitatea aritmetico-logic i s-i indice acesteia n ce registru s depun rezultatul operaiei. Este instructiv s studiem regitrii fcnd comparaia cu proprietile celorlalte elemente de memorie ale calculatorului. Regitrii sunt folosii pentru stocarea datelor imediat necesare pentru realizarea unei operaii; memoria principal este destinat stocrii datelor care vor fi necesare n scurt timp; iar dispozitivele de stocare de mas sunt utilizate pentru stocarea pe termen lung a datelor.
CURS 5 AC 2011 1/13

n multe calculatoare, la aceast ierarhie se adaug un nivel suplimentar, denumit memorie cache (cache memory). Memoria cache este o memorie de mare vitez, cu timpi de rspuns similari celor ai regitrilor unitii centrale de prelucrare, situat adesea n interiorul CPU. Calculatorul stocheaz n aceast memorie o copie a acelei poriuni din memoria pe care o utilizeaz n momentul respectiv. Astfel, transferurile de date care n mod normal s-ar fi fcut ntre regitri i memoria principal se fac de fapt ntre regitri i memoria cache. Modificrile sunt apoi transferate n bloc n memoria principal n momente libere.

2.1.2 Interfaa CPU/Memorie


Pentru transferarea cuvintelor binare ntre unitatea central a unui calculator i memoria principal, acestea sunt conectate printr-un grup de fire denumite magistral (bus; a se vedea figura 2.1). Prin intermediul magistralei, unitatea central de prelucrare poate s extrag (s citeasc) date din memoria principal, furniznd adresa celulei de memorie dorite, mpreun cu un semnal de citire. Similar, CPU poate plasa (scrie) date n memorie indicnd adresa celulei de memorie destinaie i datele care trebuie stocate, mpreun cu un semnal de scriere. Figura 2.1 Arhitectur unitate central de prelucrare/memorie principal

Dac analizm acest mecanism, constatm c efectuarea unei operaii cum ar fi adunarea datelor stocate n memoria principal nseamn mai mult dect execuia unei simple operaii de adunare. Procesul presupune att implicarea unitii de comand, care coordoneaz transferul informaiilor ctre regitri i memoria principal, ct i a unitii aritmetico-logice, care efectueaz operaia de adunare atunci cnd unitatea de comand i cere acest lucru.n figura 2.2 este prezentat n detaliu procesul

2.1.3 Instruciuni n cod main


Figura 2.2 prezint cteva tipuri de instruciuni pe care o unitate central de prelucrare uzual trebuie s le poate executa. Asemenea instruciuni sunt denumite instruciuni n cod main (machine instructions). Poate vei fi surprini s aflai c lista instruciunilor n cod main este destul de scurt. Unul dintre aspectele fascinante ale informaticii este acela c odat ce un calculator poate executa anumite operaii elementare, simple dar bine alese, adugarea de Figura 2.2 Adunarea unor valori stocate n memorie

Pasul 1: Se citete din memorie una dintre valorile care trebuie adunate i se plaseaz ntrun registru. Pasul 2: Se citete din memorie cealalt valoare care trebuie adunat i se plaseaz ntr-un alt registru. Pasul 3: Se activeaz circuitul de adunare avnd ca intrri regitrii utilizai la paii 1 i 2. Pasul 4: Se stocheaz rezultatul n memorie. Pasul 5: Stop
CURS 5 AC 2011 2/13

faciliti suplimentare nu duce la creterea capacitilor teoretice ale calculatorului. Cu alte cuvinte, dincolo de un anumit punct, adugarea de noi caracteristici poate duce la mbuntirea comoditii de utilizare i a vitezei de lucru, dar nu crete cu nimic abilitile primare ale calculatorului. Atunci cnd ne referim la instruciunile cunoscute de un calculator, este util ca s observm c ele pot fi clasificate n trei categorii:grupul instruciunilor de transfer, grupul instruciunilor aritmetico-logice i grupul instruciunilor de control.

Instruciuni de tranfer de date


Primul grup de instrciuni conine instruciunile necesare pentru deplasarea datelor dintr-un loc n altul. Paii 1, 2 i 4 din figura 2.2 intr n aceast categorie. Ca i n cazul memoriei principale, nu se obinuiete ca datele care sunt transferate ntr-o locaie oarecare din calculator s fie terse din locaia iniial. Din acest punct de vedere, termenul de transfer (tranfer) sau mutare (move), dei utilizat frecvent, este inadecvat, mai degrab fiind potrivii termeni, cum ar fi copiere (copy) sau clonare (clone). Legat de terminologie, trebuie s menionm c atunci cnd ne referim la transferul datelor ntre CPU i memoria principal a calculatorului se utilizeaz termeni speciali. Cererea de ncrcare a unui registru de uz general nu coninutul unei celule de memorie este desemnat ca o instruciune LOAD; invers, transferul coninutului unui registru ntr-o celul de memorie se face prin intermediul unei instruciuni STORE. n figura 2.2, paii 1 i 2 reprezint instruciuni LOAD, iar pasul 4 este o instruciune STORE. Un grup important de instruciuni din categoria celor de transfer de date este dedicat comenzilor pentru comunicaia cu dispozitive din afara binomului CPU memorie principal. Deoarece aceste instruciuni se ocup de operaiile de intrare/ieire (input/output I/O) din calculator, ele sunt denumite instruciuni de intrare/ieire (I/O) i uneori se consider c ar constitui un grup distinct de instruciuni Pe de alt parte, subcapitolul 2.6 arat c adesea aceste operaii de intrare/iesire sunt tratate utilizndu-se aceleai instruciuni ca i pentru transferul datelor ntre CPU i memoria principal, aa c plasarea lor ntr-o categorie distinct nu este pe deplin justificat.

Instruciuni aritmetice i logice


Grupul instruciunilor aritmetice i logice const din instruciunile care indica uniti de comand s solicite unitii aritmetico-logice efectuarea unei anumite operaii. Pasul 3 din figura 2.2 face parte din acest grup de instruciuni. Aa cum sugereaz i numele, unitatea aritmetico-logic este capabil s efectueze i alte operaii n afara operaiilor aritmetice elementare. Unele dintre aceste operaii sunt operaiile logice AND, OR i XOR, prezentate deja n capitolul 1 i pe care le vom aprofunda mai trziu n acest capitol. Ele sunt utilizate adesea pentru manipularea individual a biilor dintr-un registru, fr modoficarea restului registrului. Un alt grup de operaii care se pot efectua n cadrul unitii aritmetico-logice permite deplasarea la dreapta sau la stnga a coninutului regitrilor. Aceste operaii sunt denumite SHIFT sau ROTATE, dup cum sunt tratai biii care ies din registru prin deplasarea coninutului:biii sunt pur i simplu eliminai (SHIFT) sau sunt folosii pentru completarea golului care apare la cellalt capt al registrului (ROTATE).

CURS 5 AC 2011

3/13

Instruciuni de control
Grupul instruciunilor de control conine acele instruciuni care nu manipuleaz date, ci dirijeaz modul de execuie al programului. Pasul 5 din figura 2.2 face parte din aceast categorie, dei constituie un caz elementar. Aceast categorie de instruciuni conine multe dintre cele mai interesante instruciuni din limbajul calculatorului, cum ar fi familia de instruciuni de salt JUMP (sau BRANCH), care sunt utilizate pentru a face ca unitatea de comand s execute alt instruciune dect cea care urmeaz. Exist dou variante de instrucinui JUMP : salturi necondiionate i salturi condiionate. Un exemplu din primul tip este Salt la pasul 5; un exemplu de salt condiionat este urmtorul Dac valoarea obinut este 0, salt la pasul 5. Diferena este aceea c o instruciune de salt condiionat efectueaz saltul numai dac este ndeplinit o anumit condiie. De exemplu, sevcevena de instruciuni din figura 2.3 reprezint un algoritm pentru mprirea a dou valori, n care pasul 3 descrie o instruciune de salt condiionat care realizeaz protecia mpotriva mpririi cu zero. Figura 2.3 mprirea a dou valori stocate n memorie Pasul 1: Se ncarc (LOAD) un registru cu o valoare din memorie. Pasul 2: Se ncarc (LOAD) alt registru cu alt valoare din memorie. Pasul 3: Dac a doua valoare este zero, salt (JUMP) la pasul 6. Pasul 4: Se mparte coninutul primului registru la coninutul celui de-al doilea registru i se depune rezultatul ntr-un al treilea registru. Pasul 5: Se stocheaz (STORE) coninutul celui de-al treilea registru n memorie. Pasul 6: Stop.

2.2 Stocarea programelor


Primele calculatoare nu excelau n flexibilitate, deoarece programul executat de fiecare dispozitiv era cablat n unitatea de comand ca o parte a sistemului. Un asemenea sistem este similar unei cutii muzicale care cnt ntotdeauna aceeai melodie, cnd de fapt avem nevioe de posibilitile complexe oferite de un cititor de CD. Una dintre soluiile utilizate la primele calculatoare electronice pentru a dobndi mai mult flexibilitate a constituit-o proiectarea unitilor de control astfel nct diversele blocuri s poat fi reconectate dup nevoie. Acest lucru se realiza prin intermediul unei plci de conexiuni realizate pe principiul vechilor plci de comutare utilizate n centralele telefonice, la care capetele firelor de legtur erau fixate n gurile plcii.

2.2.1 Instruciunile ca iruri de bii


Un pas nainte (cu care a fost creditat, poate pe nedrept, John von Neumann - unii afirm c aceast idee a aparinut de fapt lui J.P. Eckert Jr. de la Moore School, dar c ideea a devenit parte integrant a unui efort de grup i n final a fost atribuit n mod eronat lui von Neumann) s-a fcut o dat cu nelegerea faptului c, n mod similar datelor, un program poate fi codificat i stocat n memoria principal a calculatorului. Dac unitatea de comand este proiectat astfel nct s extrag programul din memorie, s decodifice instruciunile i apoi s le execute, programul unui calculator poate fi schimbat pur i simplu prin modificarea coninutului memorie, n loc s se reconecteze blocurile unitii de comand a calculatorului.
CURS 5 AC 2011 4/13

Conceptul de program stocat n memorie a devenit n prezent soluia standard de lucru. Pentru a-l putea aplica, calculatorul este proiectat astfel nct s recunoasc anumite modele de bii ca reprezentnd diferite instruciuni.Aceast colecie de instruciuni, mpreun cu sistemul de codificare, poart numele de limbaj main (machine-language) deoarce definete modul n care comunicm calculatorului algoritmii pe care trebuie s-i execute. Versiunea codificat a unei instruciuni main const de obicei din dou pri: cmpul codului de operaie (operation code prescurtat op-code) i cmpul operandului (operand). irul de bii care apare n cmpul opcodului specific operaia elementar, ce de exemplu STORE, SHIFT, XOR sau JUMP, a crei execuie este solicitat de instruciune. Modelul de bii din cmpul operandului ofer informaii detaliate asupra operaiei respective. De exemplu, n cazul unei operaii de tip STORE, informaia din cmpul operandului precizeaz registrul care conine datele care trebuie stocate, precum i care este celula din memorie n care se vor stoca ele. Conceptul stocrii programului n memorie nu este deloc complicat. Ceea ce l-a fcut dificil de neles la nceput a fost faptul c toat lumea se gndea la programe i date ca fiind lucruri complet diferite: datele se stocheaz n memorie, programele reprezint pri componente ale unitii de comand. Este o ilustrare foarte bun a expresiei a nu vedea pdurea din cauza copacilor. Este uor s devii prizonierul unor asemenea tipare, i nu putem ti dac nu cumva dezvoltarea informaticii este i astzi ncorsetat de asemenea limitri. De care nu ne dm seama. ntr-adevr, o mare parte din frumuseea tiinei e dat de faptul c n permanen apar idei noi, care deschid ui ctre noi teorii i aplicaii.

2.2.2 Un limbaj main tipic


S vedem cum ar trebui codificate instruciunile unui calculator obinuit. Calculatorul pe care-l vom utiliza n cadrul discuiei noastre este descris n Anexa C i prezentat n figura 2.4. El are aisprezece regitri de uz general, numerotai de la 0 la F n hexazecimal, iar memoria sa conine 256 celule. n consecin, fiecare celul de memorie este desemnat individual, sau identificat, printr-un ntreg ntre 0 i 255. Dup cum am menionat anterior, de obicei se utilizeaz celule care au opt bii, aa c vom considera c i celulele de memorie ale calculatorului nostru au aceast mrime. Cum regitrii de uz general sunt utilizai pentru stocarea temporar a datelor din memorie, vom considera c fiecare registru are de asemenea dimensiunea de opt bii.

Coduri de operaie
Studiind limbajul main prezentat n Anexa C, vei constata c fiecare instruciune este codificat pe 16 bii, reprezentai cu ajutorul a patru cifre hexazecimale (ca n figura 2.5). Codul de operaie al fiecrei instruciuni este reprezentat de primii patru bii, sau, ceea ce revine la acelai lucru, de prima cifr hexazecimal. Lista complet a instruciunilor conine numai 12 instruciuni elementare, ale cror opcoduri sunt reprezentate prin cifrele hexazecimale de la 1 la C. Astfel, orice cod de instruciune care ncepe cu cifra hexazecimal 3 (irul de bii 0011) se refer la o instruciune de stocare (STORE), iar orice opcod care ncepe cu cifra hexazecimal A se refer la o instruciune ROTATE.

CURS 5 AC 2011

5/13

Figura 2.4

Arhitectura calculatorului descris n Anexa C

Figura 2.5

Formatul unei instruciuni main pentru calculatorul descris n Anexa C

Calculatorul dispune de dou instruciuni de adunare ADD: una pentru adunarea reprezentrilor n complement fa de doi i una pentru adunarea reprezentrilor n virgul mobil. Aceast tratare diferit este impus de faptul c adunarea cuvintelor binare care reprezint valori codificate cu notaia n complement fa de doi necesit executarea n interiorul unitii aritmetico-logice a unor aciuni diferite de cele de la adunarea valorilor reprezentate n virgul mobil.

Operanzi
S aruncm o privire i asupra cmpului opranzilor. El const din trei cifre hexazecimale (12 bii) i n fiecare caz (exceptnd instruciunea HALT, care nu necesit precizri suplimentare) clarific instruciunea general furnizat de cmpul codului de operaie. De exemplu, dac prima cifr hexazecimal a unei instruciuni este 1 (opcodul pentru ncrcarea datelor din memorie), urmtoarea cifr hexazecimal a instruciunii va preciza n care registru trebuie ncrcat valoarea, iar ultimele dou cifre hexazecimale vor indica din care celul de memorie este prelucrat aceasta. Astfel, instruciunea 1347 (hexazecimal) este codificat sub forma instruciunii LOAD n registrul 3 coninutul celulei de memorie de la adresa 47. n cazul
CURS 5 AC 2011 6/13

codului de operaie 7, care cere s se efectueze un SAU logic (OR) cu coninutul a doi regitri, a doua cifr hexazecimal specific registrul n care trebuie depus rezultatul, iar ultimele dou cifre hexazecimale indic regitrii implicai n operaia logic OR. Astfel, codul 70C5 se traduce prin instruciunea Se execut OR cu coninutul registrului C i al registrului 5 i se pune rezultatul n registrul 0. ntre cele dou instruciuni LOAD ale calculatorului nostru exist o diferen subtil. Aa cum se poate observa, codul de operaie 1 (hexazecimal) se refer la instruciunea care ncarc ntr-un registru coninutul unei celule de memorie, n timp ce codul de operaie 2 (hexazecimal) se refer la instruciunea care ncarc ntr-un registru o anumit valoare particular. Diferena const n faptul c n primul caz cmpul operand conine o adres, n timp ce n cel de-al doilea caz el conine valoarea binar care trebuie ncrcat n registru. O situaie interesant apare i n cazul instruciunii JUMP (codul hexazecimal B). Prima cifr hexazecimal indic registrul care trebuie comparat cu registrul 0. Dac acest registru are acelai coninut ca i registrul 0, se sare la instruciunea de la adresa indicat de ultimele cifre hexazecimale din cmpul operandului. Altfel, se continu execuia normal a programului. n general, n acest mod se realizeaz un salt condiionat. Dar dac prima cifr hexazecimal din cmpul operandului este 0, instruciunea cere ca registrul 0 s fie comparat cu el nsui. De vreme ce un registru este ntotdeauna egal cu el nsui, saltul va fi ntotdeauna efectuat. n consecin, orice instruciune al crei cod ncepe cu cifrele hexazecimale B0 va fi interpretat ca un salt necondiionat. Exemplu de program Vom ncheia acest subcapitol cu prezentarea versiunii codificate a instruciunilor redate n figura 2.2. Vom presupune c valorile care trebuie adunate sunt stocate n notaia n complement fa de doi la adresele de memorie 6C i 6D, iar suma urmeaz a fi plasat n memorie la adresa 6E. Pasul 1: 156C Pasul 2: 166D Pasul 3: 5056 Pasul 4: 306E Pasul 5: C000

2.3 Execuia programelor


Calculatorul urmrete un program stocat n memorie copiind instruciunile din memorie n unitatea de comand pe msur ce are nevoie de ele. O dat ajuns n unitatea de comand, fiecare instruciune este decodificat i executat. Ordinea n care sunt extrase instruciunile din memorie corespunde ordinii n care acestea sunt stocate, cu excepia cazului n care o instruciune JUMP specific altceva. Pentru a nelege cum se desfoar procesul de execuie a unui program trebuie s studiem mai amnunit unitatea de comand din interiorul CPU. Ea conine doi regitri cu destinaie special: contorul programului (program counter) i registrul de instruciuni (instruction register), aa cum se poate observa n figura 2.4. Registrul contorului programului conine adresa urmtoarei instruciuni care trebuie executat, permind astfel calculatorului s urmreasc locul n care se afl n program. Registrul de instruciuni este utilizat pentru stocarea instruciunii n curs de execuie.
CURS 5 AC 2011 7/13

Unitatea de comand i realizeaz sarcinile repetnd continuu un algoritm, denumit ciclul mainii (machine cycle), care const din trei pai: extragere (fetch), decodificare i execuie (figura 2.6). n timpul pasului de extragere, unitatea de comand solicit memoriei principale s-i furnizeze urmtoarea instruciune care va fi executat. Unitatea tie unde se afl urmtoarea instruciune n memorie deoarece adresa acesteia se afl n registrul contorului programului. Unitatea de comand plaseaz instruciunea recepionat din memorie n registrul su de instruciuni i incrementeaz apoi contorul programului astfel nct acesta s conin adresa urmtoarei instruciuni. Figura 2.6 Ciclul main

Avnd acum instruciunea n registrul de instruciuni, unitatea de comand ncepe faza de decodificare din ciclul mainii. n acest punct, ea analizeaz cmpurile codului de operaie i operanzilor pentru a determina ce aciuni trebuie efectuate. Dup decodificarea instruciunii, unitatea de comand intr n faza de execuie, n timpul creia activeaz circuitele adecvate pentru realizarea aciunilor solicitate. De exemplu, dac instruciunea se refer la ncrcarea datelor din memorie, unitatea de comand face s se efectueze operaia de ncrcare; dac instruciunea se refer la o operaie aritmetico-logic, unitatea de comand activeaz circuitele adecvate din unitatea aritmetico-logic, avnd ca intrri regitrii corespunztori. Dup execuia instruciunii unitatea de comand ncepe un nou ciclu al mainii cu faza de extragere. Observai c deoarece contorul programului a fost incrementat la sfritul fazei precedente de extragere, el furnizeaz din nou unitii de coman adresa corect a instruciunii. Un caz ceva mai aparte este reprezentat de execuia unei instruciuni JUMP. Considerm de exemplu instruciunea B258, care se traduce ca JUMP la instruciunea de la adresa 58 dac coninutul registrului 2 este identic cu cel al registrului 0. n acest caz, faza de execuie din ciclul main ncepe cu compararea regitrilor 2 i 0. Dac cei doi regitri difer, faza de execuie se termin i ncepe urmtoarea faz de extragere. Dac ns coninutul celor doi regitri este identic, unitatea de comand plaseaz valoarea 58 n contorul programului nainte de a termina faza de execuie. n aceast situaie, urmtoarea faz de extragere ncepe cu valoarea 58 n contorul programului, aa c instruciunea de la acea adres va deveni prima instruciune de executat.
CURS 5 AC 2011 8/13

Exemplu de execuie a unui program


S studiem ciclul mainii utilizat pentru programul pe care l-am codificat la sfritul subcapitolului 2.2. Mai nti trebuie s stocm programul n memorie. n exemplul nostru, vom presupune c programul este stocat la adrese succesive de memorie, ncepnd de la adresa A0 n hexazecimal. n figura 2.7 este prezentat un tabel care descrie coninutul acestei zone de memorie. Avnd programul astfel memorat, putem provoca execuia lui plasnd adresa primei instruciuni (A0) n registrul contorului programului i pornind calculatorul. Figura 2.7 Stocarea n memorie a programului de adunare, ncepnd de la adresa A0 Adres A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 Coninut 15 6C 16 6D 50 56 30 6E C0 00

Unitatea de comand ncepe faza de extragere ncrcnd instruciunea de la adresa A0 (156C) i plasnd-o n registrul su de instruciuni. Observai c instruciunile utilizate de calculatorul nostru au lungimea de 16 bii (doi octei). De aceea, instruciunea care trebuie extras ocup att celula de memorie de la adresa A0, ct i celula de memorie de la adresa A1. Unitatea de comand este proiectat inndu-se cont de acest lucru, aa c ea ncarc coninutul ambelor celule de memorie i plaseaz datele n registrul de instruciuni, care are o lungime de 16 bii. Apoi, unitatea de comand crete cu 2 valoarea din contorul programului, astfel nct acest registru conine acum adresa urmtoarei instruciuni. La sfritul fazei de extragere din primul ciclu al mainii, registrul contor al programului i registrul de instruciuni conin urmtoarele: Contorul programului: A2 Registrul de instruciuni: 156C Apoi, unitatea de comand analizeaz instruciunea din registrul su de la instruciuni i trage concluzia c trebuie s ncarce n registrul 5 coninutul celulei de memorie de la adresa 6C. Aceast activitate de ncrcare este efectuat n timpul fazei de extragere din urmtorul ciclu al mainii. n timpul acestei faze de extragere unitatea de comand obine instruciunea 166D din cele dou celule succesive de memorie de la adresa A2, plaseaz aceast instruciune n registrul su de instruciuni i incrementeaz apoi contorul programului la valoarea A4. Astfel, valorile din registrul contor al programului i din registrul de instruciuni devin: Contorul programului: A4 Registrul de instruciuni: 166D

CURS 5 AC 2011

9/13

Unitatea de comand decodific instruciunea 166D i afl c trebuie s ncarce n registrul 6 coninutul celulei de memorie de la adresa 6D. Se intr apoi n faza de execuie, n timpul creia registrul 6 este ncrcat cu valoarea cerut. Cum contorul programului conine acum valoarea A4, unitatea de comand extrage urmtoarea instruciune care ncepe la aceast adres. Ca rezultat, n registrul de instruciuni este plasat codul 5056, iar contorul programului este incrementat la valoarea A6. Unitatea de comand decodific acum coninutul registrului de instruciuni i intr n faza de execuie, activnd circuitele de adunare n complement fa de doi avnd ca intrri regitrii 5 i 6. n timpul fazei de execuie, unitatea aritmetico-logic efectueaz operaia de adunare cerut, las rezultatul n registrul 0 (dup cum i cere unitatea de comand) i raporteaz unitii de comand terminarea operaiei. Apoi unitatea de comand ncepe o alt faz de extracie dintrun ciclu al mainii. nc o dat, cu ajutorul contorului programului, ea extrage urmtoarea instruciune (303E) din cele dou celule succesive de memorie ncepnd de la adresa A6 i incrementeaz contorul programului la A8. Instruciunea este decodificat n timpul urmtoarei faze de decodificare i executat n urmtoarea faz de execuie. n acest moment, rezultatul adunrii este plasat n celula de memorie de la adresa 6E. Este extras apoi urmtoarea instruciune, care ncepe de la adresa de memorie A8, i contorul programului este incrementat la valoarea AA. Coninutul registrului de instruciuni (C000) este decodificat n timpul urmtoarei faze de execuie din ciclul mainii i programul se termin. Pe scurt putem observa c execuia unui program stocat n memorie nu are nimic misterios. De fapt, procesul este similar cu cel pe care l punem n practic atunci cnd trebuie s executm o list detaliat de instruciuni. n timp ce noi tim unde ne aflam n list marcnd instruciunile pe msur ce le execut, calculatorul memoreaz acest lucru cu ajutorul contorului programului. Dup ce determinm urmtoarea instruciune pe care trebuie s o executm, citim instruciunea si o interpretm, la fel cum calculatorul decodific instruciunile. n sfrit , efectum operaia cerut i revenim la urmtoarea instruciune din list, la fel ca un calculator care i execut instruciunile n faza de execuie i continu cu o noua faz de extragere. Diferena esenial dintre oameni i calculatoare n ceea ce privete execuia unor astfel de liste de instruciuni este dat de acuratee si viteza de execuie. Unitatea de comand repet mereu ciclul mainii, fr a ncerca s o ia pe scurttur i, n consecin, fr erori. Pe de alt parte, oamenii se plictisesc repede, cred c au neles exact ce au de fcut i se grbesc s treac la fapte, fr a acorda deplin atenie fiecrei instruciuni. n ceea ce privete viteza, tehnologia continu s ne uimeasc cu echipamente din ce n ce mai rapide. n prezent calculatoarele a cror vitez de lucru se msoar n milioane de instruciuni pe secunda (MIPS) nu sunt ceva neobinuit, iar domeniul uzual n care se situeaz vitezele de lucru este intre 10 MIPS si 100 MIPS. Se pare ns c exist limite n ceea ce privete viteza cu care calculatoarele pot executa instruciunile, iar tehnologia se orienteaz deja ctre alte alternative.

CURS 5 AC 2011

10/13

Programe i date
Mai multe programe pot fi stocate simultan n memoria principal a unui calculator, atta timp ct ocup zone de memorie diferite, iar prin setarea adecvat a contorului programului se poate determina care program se va executa la pornirea calculatorului . Trebuie ns s avem n vedere ca deoarece datele sunt stocate de asemenea n memorie i sunt codificate tot cu cifre binare (0 si 1), calculatorul nu poate face distincia ntre date i program. Dac n registrul contorului de program este ncrcat n loc de adresa programului o adres unei zone de date, calculatorul, extrage codurile corespunztoare datelor ca i cum ar fi instruciuni i le execut; rezultatul final depinde de datele respective. Acest lucru nu este ceva ru. nc o dat, ideea de a privi programele i datele ca fiind entiti complet diferite reprezint un punct ngust de vedere, care trebuie depit. n realitate, existena unui aspect comun pentru programele i datele stocate n memoria calculatorului s-a dovedit a fi o caracteristic util, pentru c permite unui program s manipuleze alte programe (sau chiar pe el nsui) ca pe nite date. Aa cum vom vedea, ceea ce un program consider a fi date se poate dovedi a fi de fapt un program.

CURS 5 AC 2011

11/13

CURS 5 AC 2011

12/13

CURS 5 AC 2011

13/13

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