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. ^

[cuprins]
(C) IntegraSoft 1996-1998