Capitolul I
Arhitectura calculatoarelor
1.1 Modelul Von Neumann de arhitectură a calculatoarelor
1.2 Organizarea memoriei interne
1.3 Reprezentarea informațiilor în memoria internă
1.4 Modelul funcțional al calculatoarelor
1.1 Modelul Von Neumann de arhitectură a calculatoarelor
Descrierea care urmează este o descriere a modelului Von Neumann de construcție a
calculatoarelor. Se pot aduce destule critici acestui model care domină sever încă de
la începuturile mașinilor de calcul electronic, dar el continuă să fie singurul model
funcțional.
Modelul Von Neumann definește calculatorul ca pe un ansamblu format dintr-o unitate
centrală și o memorie internă. Unitatea centrală sau procesorul este
responsabilă cu administrarea și prelucrarea informațiilor în timp ce memoria
internă servește la depozitarea acestora. În terminologia calculatoarelor,
depozitarea informațiilor în memoria internă a calculatorului se numește memorare.
Acest ansamblu unitate centrală plus memorie internă comunică cu exteriorul prin
intermediul unor dispozitive periferice. Dispozitivele periferice pot fi de intrare
sau de ieșire în funcție de direcția în care se mișcă datele. Dacă datele
sunt furnizate de dispozitivul periferic și transferate spre unitatea centrală, atunci
dispozitivul este de intrare precum sunt tastatura sau mausul. Dacă datele sunt generate
de unitatea centrală și transmise spre dispozitivul periferic atunci dispozitivul este
de ieșire precum sunt ecranul sau imprimanta. Există și dispozitive mixte de
intrare/ieșire precum sunt discurile pentru memorarea externă a informațiilor.
Tastatura calculatorului reprezintă un set de butoane (taste) inscripționate
care ne permite transmiterea către unitatea centrală a unor litere, cifre, semne de
punctuație, simboluri grafice sau comenzi funcționale. Mausul reprezintă un
dispozitiv simplu, mobil, care ne permite indicarea unor regiuni ale ecranului cu ajutorul
unui cursor.
În plus, mausul ne permite activarea regiunilor respective cu ajutorul celor 1-2-3
butoane ale sale.
Ecranul este un dispozitiv cu ajutorul căruia calculatorul comunică
informații spre exterior. Aceste informații apar sub formă de litere, cifre, semne de
punctuație, simboluri grafice sau desene oarecare într-o varietate mai mare sau mai
mică de culori. Informația de pe ecran se pierde odată cu redesenarea acestuia. Pentru
transferul acestor informații pe hârtie și îndosarierea lor s-au creat alte
dispozitive periferice, numite imprimante.
Memoria internă pierde informațiile odată cu oprirea alimentării calculatorului.
Pentru a salva informațiile utile, precum și programele de prelucrare ale acestora este
nevoie de dispozitive de memorare permanente. Din această categorie fac parte discurile
calculatorului. Există mai multe modele de discuri precum discurile fixe, discurile
flexibile sau compact-discurile, fiecare dintre acestea având caracteristici, viteze de
acces și capacități de memorare diferite. Informațiile salvate pe discuri pot fi
încărcate din nou în memoria internă la o pornire ulterioară a calculatorului. Vă
veți întreba desigur de ce este nevoie de două tipuri distincte de memorie: pentru că
discurile au viteze de acces mult prea mici pentru a putea fi folosite direct de către
unitatea centrală.
Figura 1.1 Modelul constructiv al calculatoarelor Von Neuman.
Deși modelul constructiv de bază al calculatoarelor nu a evoluat prea mult,
componenta tehnologică a acestora s-a aflat într-o permanentă evoluție. Transformarea
vizează la ora actuală viteza de lucru și setul de instrucțiuni ale unității
centrale, capacitatea și viteza de stocare a memoriei interne precum și tipurile și
calitatea dispozitivelor periferice.
1.2 Organizarea memoriei interne
Memoria calculatoarelor actuale este, din punct de vedere logic, o înșiruire de cifre
binare, 0 sau 1. Alegerea bazei 2 de numerație are în principal rațiuni
constructive: este mult mai ușor și mult mai fiabil să reprezinți un principiu binar
ca absența/prezența sau plus/minus decât unul nuanțat. O cifră binară este numită,
în termeni de calculatoare, bit.
Biții sunt grupați, opt câte opt, în unități de memorare numite octeți.
Iarăși, alegerea cifrei opt are rațiuni istorice: era nevoie de o putere a lui doi
care să fie cât mai mare, pentru a putea permite transferuri rapide între diversele
componente ale calculatorului (unitate centrală, memorie, dispozitive periferice), dar
totodată suficient de mică pentru ca realizarea dispozitivelor implicate, cu tehnologia
existentă, să fie posibilă. Cifra opt avea în plus avantajul că permitea
reprezentarea tuturor caracterelor tipăribile necesare la ora respectivă precum:
literele, cifrele sau semnele de punctuație. Într-un octet se pot reprezenta până la
256 (28) astfel de caractere. În prezent octetul este depășit datorită
necesității de reprezentare a caracterelor tuturor limbilor scrise din lume.
Pentru a accesa o informație în memorie este nevoie de un mod de a referi poziția
acesteia. Din acest motiv, octeții memoriei au fost numerotați unul câte unul
începând de la 0 până la numărul maxim de octeți în memorie. Numărul de ordine al
unui octet îl vom numi pentru moment adresă. Noțiunea de adresă și-a extins
semnificația în ultimul timp dar, pentru înțelegerea acestui capitol, explicația de
mai sus este suficientă.
Zona fizică de memorie rezervată unei anumite informații se numește locația
informației respective în memorie. În unele dintre locațiile din memorie putem păstra
chiar adresa unor alte locații din memorie. Informația memorată în aceste locații se
numește referință. Cu alte cuvinte, o referință este o informație memorată
într-o locație de memorie care ne trimite spre (se referă la) o altă locație de
memorie. O locație de memorie se poate întinde pe mai mult decât un octet.
1.3 Reprezentarea informațiilor în memoria internă
După cum ați putut observa din cele prezentate până acum, în memoria
calculatorului nu se pot înscrie decât numere naturale. Mai precis, fiecare octet de
memorie poate memora un număr de la 0 la 28-1, adică 255. Orice altă
informație pe care dorim să o reprezentăm în memoria calculatorului trebuie redusă la
unul sau mai multe numere naturale mici.
Această trăsătură a modelului actual de memorare introduce un pas suplimentar de
abstractizare în procesul de proiectare de aplicații, și anume pasul în care se
construiește un model de reprezentare în memorie a datelor, necesar aplicației.
Să presupunem, de exemplu, că o aplicație necesită reprezentarea în memoria
calculatorului a unui set de culori. Pentru memorarea acestor culori este nevoie de o
convenție care să stabilească o corespondență biunivocă între setul de culori și
setul de numere naturale folosite la reprezentarea acestora. Corespondența este
biunivocă pentru că ea trebuie să ofere posibilitatea de a regăsi în mod unic o
culoare plecând de la un număr și, în același timp, să ofere o reprezentare unică,
sub formă de număr, pentru fiecare culoare. De exemplu, putem pune în corespondență
culoarea neagră cu numărul 0, culoarea roșie cu numărul 1, culoarea albastră cu
numărul 2 și așa mai departe. Ori de câte ori vom memora 2 vom memora albastru și ori
de câte ori vom dori să memorăm roșu, vom memora 1.
Ca rezultat al folosirii acestei abstractizări, datele aplicației devin dependente de
convenția de reprezentare utilizată. Presupunând că o aplicație construiește în
memorie o imagine grafică folosindu-se de o anumită corespondență dintre culori și
numere, oricare altă aplicație care vrea să utilizeze imaginea respectivă trebuie să
folosească aceeași convenție.
O cale similară de rezolvare vom întâlni și la reprezentarea caracterelor. Caracterele
sunt denumirea într-un singur cuvânt a literelor, cifrelor, semnelor de punctuație sau
simbolurilor grafice reprezentate în memorie. Este nevoie de o convenție prin care
atașăm fiecărui caracter câte un număr natural memorabil într-un octet.
În cazul reprezentării caracterelor, există chiar un standard internațional care
definește numerele, reprezentabile pe un octet, corespunzătoare fiecărui caracter în
parte, numit standardul ASCII. Alte standarde, cum ar fi standardul Unicode,
reprezintă caracterele pe doi octeți, ceea ce le dă posibilitatea să ia în
considerare o gamă mult mai largă de caractere.
Caracter |
Reprezentare pe un octet (ASCII) |
A-Z |
65-90 |
a-z |
97-122 |
0-9 |
48-57 |
Ă,ă |
195,227 |
Î,î |
206,238 |
Â,â |
194,226 |
Ș,ș |
170,186 |
Ț,ț |
222,254 |
Tabelul 1.1 Un fragment din codurile ASCII și Unicode
de reprezentare a caracterelor grafice în memoria calculatoarelor.
Desigur, este greu să ținem minte codul numeric asociat fiecărui caracter sau
fiecărei culori. Este nevoie de pași suplimentari de codificare, care să pună
informația în legătură cu simboluri mai ușor de ținut minte decât numerele. De
exemplu, este mult mai ușor pentru noi să ținem minte cuvinte sau imagini. Dar să nu
uităm niciodată că, pentru calculator, cel mai ușor este să memoreze și să lucreze
cu numere.
1.4 Modelul funcțional al calculatoarelor
Fiecare calculator definește un număr de operații care pot fi executate de unitatea
sa centrală. Aceste operații sunt în principal destinate memorării sau recuperării
informațiilor din memoria internă, calculelor aritmetice sau logice și controlului
dispozitivelor periferice. În plus, există un număr de instrucțiuni pentru controlul
ordinii în care sunt executate operațiile.
O instrucțiune este o operație elementară executabilă de către unitatea centrală
a unui calculator. O secvență de mai multe instrucțiuni executate una după cealaltă o
vom numi program.
Instrucțiunile care compun un program trebuiesc și ele reprezentate în memorie, la
fel ca orice altă informație, din cauza faptului că unitatea centrală nu are
posibilitatea să-și păstreze programele în interior. Pentru memorarea acestor
instrucțiuni este nevoie de o nouă convenție de reprezentare care să asocieze un
număr sau o secvență de numere naturale fiecărei instrucțiuni a unității centrale.
Execuția unui program de către calculator presupune încărcarea instrucțiunilor în
memoria internă și execuția acestora una câte una în unitatea centrală. Unitatea
centrală citește din memorie câte o instrucțiune, o execută, după care trece la
următoarea instrucțiune. Pentru păstrarea secvenței, unitatea centrală memorează în
permanență o referință către următoarea instrucțiune într-o locație internă
numită indicator de instrucțiuni.
Modelul de execuție liniară a instrucțiunilor, în ordinea în care acestea sunt
așezate în memorie, este departe de a fi acceptabil. Pentru a fi util, un program
trebuie să poată să ia decizii de schimbare a instrucțiunii următoare în funcție de
informațiile pe care le prelucrează. Aceste decizii pot însemna uneori comutarea
execuției de la o secvență de instrucțiuni la alta. Alteori, este necesar să putem
executa o secvență de instrucțiuni în mod repetat până când este îndeplinită o
anumită condiție exprimabilă cu ajutorul informațiilor din memorie. Numărul de
repetări ale secvenței de instrucțiuni nu poate fi hotărât decât în momentul
execuției. Aceste ramificări ale execuției se pot simula destul de ușor prin
schimbarea valorii referinței memorate în indicatorul de instrucțiuni. |