| Capitolul IArhitectura calculatoarelor
      1.1 Modelul Von Neumann de arhitectură a calculatoarelor1.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 calculatoarelorDescrierea 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 interneMemoria 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 calculatoarelorFiecare 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.  |