Carte Arh Calculatoarelor

  • View
    100

  • Download
    5

Embed Size (px)

Text of Carte Arh Calculatoarelor

  • Mihai ROMANCA Gyula SZEKELY

    Calculatoare Arhitectur i organizare

    Universitatea Transilvania Braov

    2004

  • Mihai ROMANCA Gyula SZEKELY

    CALCULATOARE

    - Arhitectur i organizare -

    2004

  • 2004 EDITURA UNIVERSITII TRANSILVANIA BRAOV

    Adresa: 500030 Braov, B-dul Eroilor, Nr. 9 Tel/Fax: 0268 47 53 48

    E-mail: [email protected]

    Tiprit la: Tipografia Universitii Transilvania din Braov B-dul Eroilor 9 tel/fax: 0268 47 53 48

    Toate drepturile rezervate Editur acreditat de CNCSIS Adresa nr. 1615 din 29 mai 2002 Refereni tiinifici: Prof. dr. ing. Gheorghe TOACE Prof. dr. ing. Petre OGRUAN Tehnoredactare: Autorul Corectur: Autorul

    Descriere CIP a Bibliotecii Naionale a Romniei ROMANCA, MIHAI Calculatoare: arhitectur i organizare/ Romanca Mihai, Szekely Gyula. Braov: Editura Universitii Transilvania, 2004

    Bibliogr. ISBN 973-635-309-5

    004

  • CUVNT NAINTE

    Cartea de fa prezint principalele aspecte ale arhitecturii i organizrii calculatoarelor numerice. Materialul este organizat astfel nct cunotinele s poat fi ctigate gradual pornind de la aspectele elementare ale organizrii pn la extensiile actuale ale arhitecturii calculatorului. Materialul este dedicat n special studenilor din nvmntul ingineresc de profil electric, constituind suportul pentru cursul de Calculatoare predat studenilor de la specializrile Electrotehnic i Electromecanic, din cadrul Facultii de Inginerie Electric i tiina Calculatoarelor de la Universitatea TRANSILVANIA din Braov. Obiectivele generale pe care ni le-am propus n realizarea materialului sunt: Prezentarea principalelor noiuni privind arhitectura setului de instruciuni, principii de

    funcionare i de organizare ale diferitelor variante de implementare a calculatoarelor numerice.

    Clasificarea i exemplificarea arhitecturilor moderne actuale, descrierea i analiza organizrii calculatoarelor.

    n urma asimilrii cunotinelor predate la aceast disciplina, viitorul inginer electrotehnician i va putea asuma responsabilitatea punerii n funciune a diferitelor sisteme de comand cu calculatorul numeric, a ntreinerii sau a proiectrii i construciei diferitelor interfee (acestea fiind realizabile i prin studiul suplimentar al documentaiilor de firm).

    n cadrul cursului se prezint conceptele generale privind arhitectura mainilor electronice de calcul numeric, concepte aplicabile la orice main particular. Se fac, de asemenea, dese referiri, cu titlu de exemplu, la arhitecturi particulare, de calculatoare existente pe pia. S-a ales aceasta metod de abordare, pentru c domeniul este extrem de dinamic. Arhitecturile specifice diferitelor procesoare, necesare eventual n practica viitorului inginer, sunt tratate n documentaiile de firm, i chiar dac n viitorul apropiat vor aprea noi implementri sau chiar noi arhitecturi, conceptele de baz, relativ "stabile" vor fi cele care vor uura nelegerea. Materialul cursului de fa este destinat sistemelor uni-procesor, ca o cale ctre studierea ulterioar de ctre studeni a principiilor de organizare i de utilizare a sistemelor de procesare paralel. Am organizat cartea 7 capitole, cuprinznd materia ce se pred n cele 14 sptmni ale semestrului 7 studenilor electrotehnicieni. Cartea cuprinde numeroase note de subsol, mai ales cu explicaii ale unor denumiri provenite din limba englez. Unele din noiunile englezeti din domeniul calculatoarelor sunt deja clasice, dar altele nc nu au cptat o traducere exact i apar adesea ca barbarisme n limba romn. Chiar dac se face explicarea n limba romn pentru termenii folosii peste tot se indic i termenul original din limba englez. Ne-am ferit astfel de a clca n pcatul unei traduceri care s se ndeprteze de la sensul iniial, pentru c aa cum spun italienii Tradutore - traditore!. Ateptm cu interes observaiile studenilor i colegilor la materialul de fa prin adresele noastre de e-mail: [email protected] i [email protected]

    Autorii

  • CUPRINS

    1. INTRODUCERE N ARHITECTURA CALCULATOARELOR ...............1 1.1. Calculatorul numeric ......................................................................................2 1.2. Arhitectura calculatorului numeric.................................................................4 1.3. Organizarea general a unui sistem uni procesor........................................5 1.4. Tendine ale tehnologiei .................................................................................7 1.5. Dezvoltare a aplicaiilor calculatoarelor numerice.........................................8 1.6. Software (programe de sistem i aplicaii) 9 1.7. Clasificarea n ordine a sistemelor numerice .................................................10 1.8. Reprezentarea funcional a unui calculator ..................................................11

    1.9. Reprezentarea structural a unui calculator ...................................................15 1.10. Scurt privire istoric asupra dezvoltrii mainilor de calcul ........................18

    2. MODALITI DE EVALUARE A PERFORMANELOR CALCULATOARELOR ......................................................................................31 2.1. Timpul, ca msur a performanelor ................................................................32 2.2. Alte uniti de msur.......................................................................................37 2.3. Programe etalon de testare a performanelor....................................................39 2.4. Compararea performanelor prin mediere ........................................................42 2.5. Legea lui Amdahl .............................................................................................46

    3. FUNDAMENTE PRIVIND ARHITECTURA UNITII CENTRALE DE PROCESARE (UCP) ......................................................................................49

    3.1. Structura de procesor........................................................................................50 3.2. Structura unei Uniti Centrale de Procesare elementare.................................56

    3.3. Perfecionarea Unitii Centrale de Procesare elementare ...............................59 3.4. Alte registre interne semnificative pentru UCP ...............................................61 3.5. Exemple privind operaiile UCP ......................................................................64 3.6. Semnale la interfaa UCP cu exteriorul ............................................................67

    3.6.1. Magistrala de adrese ..........................................................................67 3.6.2. Magistrala de date..............................................................................70 3.6.3. Magistrala de control .........................................................................70

    3.7. Reprezentarea numerelor n calculator.............................................................77 3.7.1. Reprezentarea cu virgul fix ............................................................77 3.7.2. Coduri binare folosite pentru reprezentarea numerelor cu semn.......78

    3.8. Reprezentarea numerelor n virgul mobil .....................................................83

    4. ARHITECTURA SETULUI DE INSTRUCIUNI........................................89 4.1. Introducere n arhitectura setului de instruciuni..............................................90 4.2. Formatul instruciunilor....................................................................................91 4.3. Interdependena set de instruciuni - organizare intern a procesorului ..........94 4.4. Scurt privire comparativ ntre arhitecturile RISC i CISC ...........................98 4.5. Tipuri de instruciuni ........................................................................................99

    4.5.1. Instruciuni aritmetice........................................................................100 4.5.2. Instruciuni logice ..............................................................................100 4.5.3. Instruciuni pentru transferul informaiei ..........................................101 4.5.4. Instruciuni pentru deplasarea i rotirea datelor ................................102 4.5.5. Instruciuni de ramificare (pentru controlul secvenei de program)..103

  • 4.5.6. Instruciuni pentru controlul procesorului .........................................105 4.5.7. Instruciuni pentru lucrul cu iruri .....................................................105

    4.6. Moduri de adresare...........................................................................................106 4.6.1. Adresare imediat ..............................................................................107 4.6.2. Adresare direct .................................................................................108 4.6.3. Adresare indirect..............................................................................110 4.6.4. Adresare relativ................................................................................112 4.6.5. Adresare indexat ..............................................................................113

    5. UNITATEA DE CONTROL A UCP ...............................................................115 5.1. Funciile principale ale unitii de control a UCP ............................................116 5.2. Control cablat ...................................................................................................118

    5.2.1. Metoda tabelului de tranziie a strilor..............................................119 5.2.2. Metoda sincronizrii prin numrtoare de secvene..........................120

    5.3. Controlul microprogramat ................................................................................122 5.3.1. Metode de optimizare a UC microprogramate ..................................125

    5.4. Paralelism n execuia instruciunilor prin tehnici pipeline..............................129 5.5. ntreruperi i excepii........................................................................................132 5.6. Rolul memoriei stiv 139 5.7. Utilizarea ferestrelor de registre .......................................................................143 6. SISTEMUL DE MEMORIE ............................................................................147 6.1. Organizarea ierarhic a sistemului de memorie ...............................................148 6.2. Caracteristici principale ale dispozitivelor de memorie ...................................151 6.3. Structura si organizarea memoriilor statice cu acces aleator (SRAM) ............154 6.4. Structura i funcionarea memoriilor dinamice cu acces aleator (DRAM)......159

    6.4.1. Structura i modul de lucru al unei DRAM convenional .................160 6.4.2. Moduri de lucru de mare vitez ale DRAM ......................................162 6.4.3. Moduri de remprosptare .................................................................165 6.4.4. Exemple de circuite DRAM cu interfa asincron...........................167 6.4.5. Circuite DRAM sincrone (SDRAM).................................................168

    6.5. Memoria cache .................................................................................................169 6.6. Tehnici de adresare i alocare a memoriei .......................................................173 6.7. Tehnici de translatare a adreselor.....................................................................175

    6.7.1. Maparea adreselor folosind pagini ....................................................176 6.7.2. Mapare prin segmentare ....................................................................178 6.7.3. Mapare segmentat-paginat ...............................................................179 6.7.4. Memoria virtual ...............................................................................181 6.7.5. Noiuni privind protecia memoriei ...................................................184

    7. SISTEMUL DE INTRARE IEIRE.............................................................187 7.1. Circuite de interfa ..........................................................................................188 7.2. Organizarea ierarhic a magistralelor...............................................................191 7.3. Transferuri asincrone de date ...........................................................................193

    7.3.1. Transmisie asincron cu un singur semnal de control.......................193 7.3.2. Transmisie asincron cu dou semnale de control ............................194

    7.4. Modaliti de transfer de intrare-ieire .............................................................196 7.4.1. Transferul de I/O prin program .........................................................196 7.4.2. Transferul I/O prin ntreruperi...........................................................198 7.4.3. Transferul prin acces direct la memorie ............................................201

    BIBLIOGRAFIE ...................................................................................................204

  • CAPITOLUL 1

    INTRODUCERE N ARHITECTURA CALCULATOARELOR

    Coninut: 1.1. Calculatorul numeric 1.2. Arhitectura calculatorului numeric 1.3. Organizarea general a unui sistem uni - procesor 1.4. Tendine ale tehnologiei 1.5. Dezvoltare a aplicaiilor calculatoarelor numerice 1.6. Software (programe de sistem i aplicaii) 1.7. Clasificarea n ordine a sistemelor numerice 1.8. Reprezentarea funcional a unui calculator 1.9. Reprezentarea structural a unui calculator 1.10. Scurt privire istoric asupra dezvoltrii mainilor de calcul

    Obiective educaionale: a. Definirea calculatorului numeric, a modului general de organizare i identificarea

    principalelor aspecte privind noiunea de arhitectur a calculatorului b. Clasificarea domeniilor de aplicaie pentru calculatoarele numerice c. Definirea unor termeni cheie pentru arhitectura calculatorului d. Descrierea principalelor elemente privind evoluia calculatoarelor numerice.

  • Capitolul 1 2

    1.1. CALCULATORUL NUMERIC

    Un calculator numeric este constituit dintr-un ansamblu de resurse fizice (hardware) i de programe de sistem (software de sistem) care asigur prelucrarea automat a informaiilor, n conformitate cu algoritmii specificai de utilizator prin programele de aplicaii (software utilizator).

    Descrierea unui calculator, ca sistem digital complex, se poate face innd cont de diferite aspecte [Nicula97]. Astfel, la nivel nalt, calculatorul poate fi definit ca o main care uureaz o anumit activitate uman. Acest aspect uman al calculatorului a condus la studii care vizeaz uurarea utilizrii calculatorului, ergonomia locului de munc, creterea accesibilitii calculatorului pentru utilizatorul uman ce are o pregtire divers.

    Calculatorul poate fi definit, de asemenea, ca fiind o main care ruleaz programe. Studiile efectuate pe acest nivel vizeaz optimizarea calculatorului n scopul minimizrii timpului de execuie a programelor (aplicaiilor). Modul de scriere al unui program trebuie s permit ca aplicaiile s fie portabile1 de pe o main pe alta. Importana aspectului software al calculatorului este determinat de necesitatea de a proteja investiia n programare, n condiiile mediului deosebit de dinamic al calculatoarelor.

    Calculatorul poate fi definit ca fiind un sistem digital care realizeaz un set de funciuni. Studiile efectuate pe acest nivel vizeaz realizarea unor funcii date la viteze maxime i resurse fizice (suprafa pe chip) minime, ntr-o tehnologie accesibil la un moment dat. Acesta este aspectul "hardware" al calculatorului. Hardware este termenul general care desemneaz resursele fizice (circuitele, dispozitivele i echipamentele componente) ale unui calculator numeric; Cele trei aspecte, uman, software i hardware, nu sunt independente. Perfecionarea unuia dintre aspecte determin i progresul celorlalte dou, chiar dac nu n acelai ritm. De exemplu, randamentul muncii unui utilizator de calculator (mbuntire a aspectului uman) va crete dac acesta i schimb tastatura cu una optimizat ergonomic, n condiiile pstrrii resurselor hardware i a programelor rulate (software). Randamentul muncii va crete mai mult dac se ruleaz, programe mai puternice, de exemplu prin algoritmi mai rapizi sau sisteme de operare mai performante (mbuntire software), n condiiile pstrrii acelorai resurse hardware. O cretere remarcabil a randamentului muncii se obine, ns, dac se nlocuiete calculatorul cu unul mai performant (mbuntire a aspectului hardware), n condiiile pstrrii tastaturii i a aplicaiilor rulate. Aspectele software i hardware se ntreptrund i nu pot exista independent. Studiul unui calculator numeric poate fi realizat la diferite niveluri, organizate ierarhic n schema din figura 1.1. De menionat c, pe toate aceste niveluri, aspectele software i hardware coexist.

    Figura 1.1. Reprezentare ierarhic simplificat a nivelurilor de descriere a unui calculator numeric.

    1 Portabil - aplicaia este portabil dac este capabil s funcioneze pe mai multe platforme hardware.

    Nivelul aplicaiei (programare)

    Nivelul arhitectural

    Nivelul organizrii

    Nivelul implementrii

  • Introducere n arhitectura calculatoarelor 3

    Prin nivelul de programare (al aplicaiilor) calculatorul este vzut ca un ansamblu de resurse care particip la executarea unui program. Este nivelul pe care lucreaz programatorul ntr-un limbaj de nivel nalt, avnd la dispoziie un compilator care deine informaiile detaliate despre nivelele inferioare. Pe acest nivel se opereaz cu noiuni ca multiprocesoare, memorie distribuit, reele de interconectare.

    Pe nivelul arhitectural, care materializeaz, n mod tradiional, interfaa software-hardware, se ncearc maximizarea performanelor prin optimizarea setului de instruciuni, tratrii ntreruperilor, managementului i a proteciei memoriei. Este nivelul de pe care programatorul poate accesa toate resursele microprocesorului2, prin instruciuni specifice. Deoarece att domeniul hardware ct i cel software evolueaz rapid, n foarte puine cazuri arhitecii unui procesor au posibilitatea s nceap "de la zero" proiectarea unui procesor. De cele mai multe ori, proiectanii primesc ca "date de intrare" arhitectura i chiar setul de instruciuni cu care noul procesor trebuie s fie compatibil. Meninerea compatibilitii, dei ngreuneaz proiectarea, este obligatorie datorit faptului c nimeni nu este dispus s renune, de exemplu din trei n trei ani, la toate datele acumulate i toat investiia fcut n software. Pe acest nivel se definete noiunea de compatibilitate binar, ca fiind posibilitatea unei maini de a rula un program scris pentru un procesor dintr-o generaie mai veche. Meninerea compatibilitii binare implic, pe lng motenirea setului de instruciuni, i pstrarea modelului secvenial de execuie a instruciunilor. Aceste dou constrngeri se dovedesc a fi foarte dure n cazul procesoarelor moderne, superscalare, care ncearc s elimine o mare parte din secvenialitatea programului i s l transforme ntr-un program paralel, de nalt performan, dar care s pstreze aparena de program secvenial.

    Pe nivelul organizrii, denumit uneori i nivelul de microarhitectur, se precizeaz modul de implementare a arhitecturii microprocesorului. O arhitectur de microprocesor poate avea diferite organizri, obinndu-se astfel procesoare cu performane optimizate pentru un anumit tip de aplicaii dar compatibile la nivelul programatorului n limbaj de asamblare. Dintre noiunile cu care se opereaz la acest nivel se pot preciza:

    Numrul, tipul i localizarea unitilor funcionale; Descrierea setului de registre; Structura pipeline a cii de date; Ierarhia memoriei, localizarea i configuraia memoriei cache.

    Pe nivelul de implementare, microprocesorul este vzut ca un sistem digital implementat ntr-o tehnologie specific. Aspectele tehnologice limiteaz deciziile de pe nivele superioare. Aici se stabilete bugetul de tranzistoare pus la dispoziie, buget ce trebuie cunoscut de ctre proiectanii de arhitecturi. ntrebrile care i gsesc rspunsul pe acest nivel sunt:

    Cum se plaseaz unitile funcionale pe chip (floorplan) Cum se poate implementa o unitate funcional cu un numr minim de tranzistoare, pe o

    suprafa minim de circuit ? De-a lungul timpului, performanele calculatoarelor nu au crescut n ritm constant. Exist dou fore care stimuleaz dezvoltarea calculatoarelor:

    mbuntirea tehnologic i inventarea unor noi arhitecturi. n primii 25 de ani ai calculatoarelor electronice (1945-1970), ambele fore au determinat n

    egal msur creterea performanelor. Dup 1970, tehnologia (numrul redus de tranzistoare posibil de utilizat) a limitat ritmul de cretere, care a continuat totui s rmn la 25-30% pe an n domeniul minicalculatoarelor i mainframe3-urilor. Apariia microprocesorului a adus posibilitatea

    2 Microprocesor = Unitate Central de procesare implementat ntr-un singur circuit integrat. Conine pe aceeai achie de siliciu: Unitate de control, Unitate aritmetic i logic i registre de uz general folosite ca memorie local de mare vitez. 3mainframes = calculatoare de mari dimensiuni, cu putere mare de calcul, avnd de obicei o arhitectur multi-procesor i uniti funcionale multiple.

  • Capitolul 1 4

    de integrare a unui numr mare de tranzistoare ceea ce a permis un ritm de cretere a performanelor de 35% pe an. Ritmul de cretere a fost i mai mare dup 1980, atunci cnd a fost determinat de apariia unor idei arhitecturale noi, ce au condus la crearea procesoarelor RISC.

    ntre procesoarele existente n prezent pe pia i de asemenea ntre calculatoarele construite cu ajutorul acestor procesoare exist o mare diversitate, diversitate ce se manifest din mai multe puncte de vedere:

    al tehnologiei folosite pentru implementarea lor, al caracteristicilor funcionale (proprieti i funcii observabile din exterior) i al organizrii structurii4 lor interne.

    Toate aceste trei aspecte principale constituie ceea ce este cunoscut sub numele de arhitectura unui calculator.

    1.2. ARHITECTURA CALCULATORULUI NUMERIC Termenul "arhitectur" este o abstractizare a proprietilor unui calculator. Ca urmare a evoluiei funciilor i structurii calculatoarelor i noiunea de arhitectura a evoluat, reprezentnd n prezent mai mult dect "interfaa" ntre hardware i software definit iniial de cercettorii de la firma IBM5 n deceniul al aselea al acestui secol. Un arhitect de calculatoare proiecteaz maini care vor rula programe, iar sarcinile sale de proiectare vor include: proiectarea setului de instruciuni, organizarea funcional, proiectarea logic i implementarea. Implementarea cuprinde totul ncepnd de la circuitele integrate utilizate, pn la aspectele privind puterea consumat i tipul de rcire.

    Arhitectura, n sensul iniial de definire, ca interfa ntre hardware i software, ngloba funciuni n hardware, prin micro-programare (microcod). Orice main ulterioar unei maini din aceeai serie, este obligat - prin arhitectura definit - s recunoasc setul de instruciuni al celei vechi, chiar dac are i funciuni suplimentare, [Patterson94]. La momentul introducerii sale, noiunea de arhitectur a calculatorului se referea doar la ceea ce astzi se nelege prin arhitectura setului de instruciuni. Aceasta este o interfaa ntre resursele hardware i resursele cele mai rudimentare de software (cod maina - forma binar a programelor neleas de main). Arhitectura setului de instruciuni este ceea trebuie s tie un programator pentru a scrie programe n limbaj de asamblare, respectiv pentru a concepe i construi un program de tip compilator, sau rutine destinate sistemului de operare. Setul de instruciuni, ca i component arhitectural, permite att proiectantului ct i utilizatorului procesorului, s vorbeasc despre funcii, independent de suportul hardware specific care le realizeaz. Arhitectura setului de instruciuni (notat n continuare cu ASI6), ca interfa ntre hardware i software, permite mai multor implementri, cu costuri i performane diferite, s ruleze acelai software. Noiunea de arhitectur trebuie privit, prin analogie cu nelesul clasic al noiunii de arhitectura7, care se refera la construcii, nu numai n sens declarativ al ASI (care definete un set de proprieti abstracte, un plan) dar i n sens procedural, al unei discipline de proiectare, care implic procesul de producere i implementare a acestor proprieti abstracte. Aceasta a doua componenta a noiunii de arhitectura, care se refera la aspectele de implementare a funciilor (proiectare i realizare a circuitelor ce realizeaz funciile), are la rndul su dou componente: organizare i hardware.

    4 Structur [MDE72] = Alctuirea intern a unui corp sau sistem fizic, mod de dispunere a elementelor componente ale unui ansamblu, mod specific de organizare a elementelor constitutive ale unei limbi, mod de organizare a unei mulimi de elemente, prin definirea uneia sau mai multor operaii care au anumite proprieti. 5 IBM = International Business Machine 6 ASI = Arhitectura Setului de Instruciuni (n limba englez ISA = Instruction Set Architecture) 7 Arhitectur [MDE72] = tiina i arta de a proiecta i a construi cldiri.

  • Introducere n arhitectura calculatoarelor 5

    Termenul organizare include aspectele de nivel nalt ale unui proiect de calculator, ca de exemplu organizarea sistemului de memorie, structura i organizarea magistralelor i proiectul intern al UCP. De exemplu, [Patterson90], doua maini cu aceeai arhitectur a setului de instruciuni, dar organizri diferite, sunt VAX - 11/780 i VAX 8600. Noiunea de hardware (resurse fizice) e utilizat pentru a ne referi la aspectele specifice ale implementrii mainii. Acestea includ proiectul logic de detaliu i tehnologia de realizare a mainii de calcul. n concluzie arhitectura calculatorului cuprinde dou componente principale:

    1. arhitectura setului de instruciuni (ASI) 2. implementarea mainii, cu cele dou sub-componente:

    organizare hardware

    1.3. ORGANIZAREA GENERAL A UNUI SISTEM UNI - PROCESOR

    Ca organizare general, independent de tehnologia de realizare, resursele fizice (hardware) ale unui calculator numeric uni-procesor cuprind (figura 1.2.):

    a. Procesorul. Procesorul central (de uz general) al unui calculator este numit Unitate Centrala de Prelucrare (UCP) i este format din cale de date i unitate de control. Calea de date cuprinde unitatea aritmetic i logic (ALU8), setul de registre interne, eventuale blocuri de memorie temporar i magistralele interne procesorului, necesare transferului informaiei. Componentele cii de date execut, n fiecare moment, operaii elementare conform comenzilor primite de la Unitatea de Control (UC). Unitatea de control a procesorului este automatul care, n funcie de informaiile primite din exterior, comand celelalte uniti funcionale ale procesorului, cu scopul execuiei instruciunilor;

    Figura 1.2. Organizarea general a unui calculator uni-procesor. ALU = Unitate aritmetic i logic. Liniile punctate reprezint semnale de comand i sincronizare interne procesorului.

    b. Memoria principal (numit i memorie intern sau memorie operativ). Este

    adresabil, prin adres lansat de UCP, la nivel de cuvnt (octet sau multiplu de octet) i este selectat i prin semnale de comand de ctre procesor. n memoria principal, dac se consider arhitectura cu memorie unic de date i instruciuni, se stocheaz

    8 ALU - Arithmetic and Logic Unit (engl.)

    Unitate de Control

    Memoria principal

    instruciuni

    date

    Calculator

    Registre ALU

    adrese i comenzi

    UCP Sistem de intrare / ieire

    Echipamente periferice

  • Capitolul 1 6

    instruciunile programelor rulate de procesor i se pot scrie / citi date aferente programelor. Este o memorie de tip semiconductor, putnd fi memorie doar cu citire (ROM - Read Only Memory), sau memorie cu citire scriere (RAM - Random Access Memory). Din punctul de vedere al modului de funcionare i construcie al celulelor de memorie se pot folosi dou tipuri de memorie RAM semiconductoare: RAM static i RAM dinamic.

    c. Sistemul de intrare / ieire. Sistemul de intrare - ieire este, "poarta" prin care se face legtura calculatorului cu lumea extern, pentru a citi i furniza date. Echipamentele cuplate la acest sistem sunt numite echipamente periferice, iar conversaia ntre calculator i aceste echipamente se face prin logic adresabil. Fiecare circuit de comunicare cu exteriorul adresabil printr-o adres unic, este numit "port". Dintre echipamentele periferice standard pentru un calculator de uz general amintim: tastatura, echipamentul de afiare alfanumeric (display) i memoria extern (Hard-disc).

    Dup cum se observ din figur Unitatea de Control i Calea de date (registre, ALU, registre

    de adresare, registre de interfa cu magistralele) formeaz Unitatea Central de Procesare - UCP (procesorul calculatorului numeric). Calculatorul numeric cuprinde cel puin o unitate UCP i memoria principal. Un sistem de calcul este format dintr-un calculator numeric i diferite dispozitive periferice.

    Figura 1.3. Organizarea general a unui procesor, cu prezentarea interaciunilor principale dintre unitile funcionale (prin linie punctat s-au simbolizat comenzile interne procesorului)

    Toat aceast structur hardware a procesorului (fix - ncastrat n siliciu) poate realiza

    funciuni pentru utilizatorul uman, prin aplicaii dedicate, doar dac pe suportul hardware se execut un set coerent de instruciuni care indic funciile elementare ce trebuie executate de suportul hardware. Funciile pot fi foarte diverse i de aceea se poate spune c instruciunile ce alctuiesc un program realizeaz o reconfigurare logic periodic a cii de date a procesorului, pentru a se realiza funciunile cerute. Pentru a prezenta la modul foarte general informaii

    Banc de registre de uz

    general

    Contor de program pentru adresarea i aducerea instruciunilor (fetch)

    ALU

    Registru adrese de memorie (pentru adresare date)

    Registru pentru stocarea codului instruciunii curente

    spre memoria principal

    Logic de control

    spre memoria principal

    de la memoria principal

    de la memoria principal

    Registru tampon pentru date

  • Introducere n arhitectura calculatoarelor 7

    elementare ce se vehiculeaz ntre procesor i memoria principal n figura 1.3. se prezint schematic interaciunea dintre principalele componente ale unui procesor i memoria principal (extern procesorului).

    Conform figurilor 1.2. i 1.3. informaiile principale pe care procesorul le schimb cu exteriorul sunt: date (operanzi i rezultate) , instruciuni, adrese, informaii de control. Toate acestea se transmit ca semnale electrice prin linii conductoare grupate n magistrale. n mod tradiional magistralele externe procesorului sunt clasificate n: magistral de date (Bus de date) magistral de adrese (Bus de adrese) magistral de control (Bus de control)

    Legarea diferitelor componente ale calculatorului la aceste trei magistrale este simbolizat n

    figura 1.4. Se va folosi i termenul mprumutat din limba englez pentru magistral: "bus"

    Figura 1.4. Schem bloc general ce indic conectarea componentelor calculatorului la cele trei tipuri de magistrale externe UCP. Prin I/O sau simbolizat circuitele de interfa cu echipamentele de intrare / ieire.

    1.4. TENDINE ALE TEHNOLOGIEI LEGEA LUI MOORE

    n 1965, Dr. Gordon E. Moore, la acel moment vicepreedinte executiv la Intel Corporation, a prezis c numrul de tranzistoare echivalente pe un singur chip va crete n ritm constant i se prevedea o cretere n acelai ritm pentru urmtoarele decenii. Aceast predicie, numit Legea lui Moore, spune c puterea de calcul va crete exponenial, dublndu-se la fiecare 18 - 24 luni, pentru un viitor previzibil. Legea lui Moore este adesea criticat, pentru c utilizatorii sunt interesai n primul rnd de creterea performanelor procesoarelor. Este greu s se echivaleze creterea numrului de tranzistoare pe un chip cu creterea performanei procesoarelor. n plus adesea creterea numrului echivalent de tranzistoare nu a produs o cretere a performanelor n aceeai msur - de aceea criticii spun c n ultimele decenii mbuntirile aduse circuitelor (procesoare, memorii) au fost dictate mai mult de sistemul de operare Windows al firmei Microsoft, dect de cerinele de putere de calcul din partea utilizatorilor. Creterea gradului de integrare reflectat n creterea puterii procesoarelor reprezint doar un procent al afacerilor din domeniul dezvoltrii tehnologiei - procent care se reduce continuu - i de obicei exist mai mult putere disponibil dect cea necesar.

    Tehnologia calculatoarelor electronice a evoluat ntr-un ritm incredibil n ultimii 60 de ani, de la conceperea primului calculator electronic. n prezent un calculator de tip PC9 cu pre mai mic de 1000 de dolari, are vitez i capacitate de memorare mult mai mare dect un calculator din anii 80 al crui pre era la nivelul sutelor de mii sau milioanelor de dolari. Aa cum s-a menionat

    9 PC = Personal Computer

    UCP

    Bloc Memorie principal

    Bloc Memorie principal

    I/O

    I/O

    Magistral de control

    Magistral de date

    Magistral de adrese

  • Capitolul 1 8

    anterior aceast dezvoltare rapid s-a fcut nu numai pe baza dezvoltrilor tehnologice (ce au permis mrirea gradului de integrare i reducerea puterii consumate i a preului) dar i pe baza inovaiilor n domeniul proiectrii arhitecturale.

    Apariia microprocesoarelor, n anii 70 ai secolului trecut, a permis apariia unor dezvoltri arhitecturale eseniale pentru performana calculatoarelor dintre care amintim aici doar cteva: generalizarea utilizrii limbajelor de programare de nivel nalt i a sistemelor de operare, organizri ce permit execuie paralel a instruciunilor i generalizarea utilizrii memoriilor temporare (cache)

    1.5. DEZVOLTARE A APLICAIILOR

    n prezent lumea calculatoarelor numerice este dominat de unitile centrale de procesare (UCP) numite microprocesoare. Acestea constituie UCP nu numai pentru calculatoarele personale, att de rspndite, dar i pentru supercomputere, staii de lucru, calculatoare de bord la mijloacele de transport auto, aeronautice i spaiale, sau navale. Principalele domenii de aplicare a UCP sub form de microprocesor integrat pe un singur circuit integrat sunt:

    Calculatoare desktop i staii de lucru (calculatoare de uz general ce se pot aeza pe birou)

    Servere de reele sau pentru Web Calculatoare integrate n sisteme dedicate aplicaiilor specifice10

    Calculatoarele de tip desktop sunt construite pentru utilizare general, ct mai larg, att n

    domeniul procesrii de tip text, sau baze de date ct i al realizrii de calcule matematico-tiinifice, principalul scop urmrit fiind obinerea unui raport pre / performan ct mai mic.

    Calculatoarele de tip server, conin procesoare cu putere mare de calcul, sunt relativ scumpe, iar principalele obiective ale proiectrii sunt furnizarea de servicii de calcul i de transfer al fiierelor, cu asigurarea unei cantiti ct mai mari de operaii pe unitatea de timp. Aceste calculatoare trebuie s prezinte n plus o mare siguran n funcionare i s aib calitatea de scalabilitate (de extindere simpl a resurselor pe msura creterii cerinelor).

    Sistemele cu calculator integrat aplicaiei (Embedded) sunt sisteme pe baz de microprocesor construite pentru a controla o funcie sau un domeniu de funcii particulare i nu sunt proiectate pentru a fi programate de ctre utilizatorul final, aa cum se ntmpl de exemplu cu un PC. Sigura interaciune cu utilizatorul se face n scopul realizrii funciilor impuse sistemului - aplicaiei. Pentru cele mai multe aplicaii aceste sisteme trebuie s rspund n timp real la evenimentele din mediul extern. Sistemele de acest tip au constrngeri mari de proiectare n ceea ce privete costurile, consumul de putere i gabaritul. Au un domeniu de aplicaii extrem de vast:

    Sistemele de comunicaii cu i fr fir (wireless), Sisteme de transport (auto, feroviar, naval, aeronautic) Aplicaiile casnice i electronica de larg consum, Sistemele de control n industrie, finane Echipamente medicale

    Lucrarea de fa nu se refer la domeniul Embedded systems ci doar la calculatoarele de uz

    general i la descrierea arhitecturii i organizrii acestora.

    10 Termenii consacrai n literatura tiinific de limb englez sunt: Embedded Computers i Embedded Systems.

  • Introducere n arhitectura calculatoarelor 9

    1.6. SOFTWARE

    n ceea ce privete partea de program rulat pe suportul hardware exist mai multe tipuri de programe rulate de un calculator numeric. Vom folosi termenul de "software", mprumutat din limba englez prin care vom nelege totalitatea programelor de sistem i aplicaii. Seturile de programe dintr-un sistem de calcul pot fi denumite dup utilizarea lor. Astfel programele ce furnizeaz servicii utile tuturor proceselor i resurselor sistemului de calcul, n mod general, sunt numite programe de sistem (software de sistem). Exemple de software de sistem sunt: sistemele de operare, compilatoare, asambloare etc.

    Exist ns i software - destinat programatorilor - software de asisten pentru dezvoltarea aplicaiilor (numit uneori i software de aplicaii). Exemple de software de asisten pentru dezvoltarea aplicaiilor: editoare de text, programe de proiectare asistat, programe pentru baze de date etc.

    Figura 1.5. Clasificare general a componentelor software ale unui calculator.

    Ultimul tip de software n clasificarea prezentat n figura 1.5. este reprezentat de programele utilizator ce rezolv anumite probleme specifice (software utilizator sau aplicativ). O clasificare foarte general a sub-sistemului software al calculatorului numeric, sub forma de niveluri ierarhice, este prezentat n figura 1.5. De observat c la sistemul de operare s-au trecut doar funciile principale, "vizibile" utilizatorului: administrarea sistemului de fiiere (administrarea memoriei auxiliare - MA) gestiunea memoriei principale (MP) i asigurarea tehnicilor software pentru implementarea

    memoriei virtuale, gestionarea programelor de control (drivere) pentru dispozitivele de ntrare / ieire (I/O).

    n cadrul programelor de sistem, n afara sistemului de operare s-au specificat programele de sistem ce ofer servicii generale programatorilor (compilatoare, asambloare, editoare de legturi11, programe de depanare i corectare a erorilor, bibliotecari, etc.) Este important de observat ca aceste programe nu fac parte din sistemul de operare, chiar daca sunt furnizate n mod obinuit de productorii de calculatoare, mpreun cu sistemul de operare. Sistemul de operare este, n general, acea poriune din software ce ruleaz n "kernel 11 linker (engl.): tradus prin link-editor, sau editor de legturi

    - software de sistem

    - software utilizator

    - software de asisten (pentru dezvoltarea aplicaiilor) Software

    sistem de fiiere memorie virtual drivere dispozitive de I/O

    interpretoare de comenzi sisteme de operare

    compilatoare

  • Capitolul 1 10

    mode" (mod nucleu) sau n mod supervizor. El este astfel protejat (ignorm aici procesoarele ce nu ofer suport hardware suficient pentru rularea unui sistem de operare n mod protejat, cum ar fi procesoarele Intel din seria 80x86 lucrnd n "mod real") mpotriva stricciunilor ce ar putea fi provocate de programele de aplicaii sau de programele utilizator.

    Tipurile de software incluse n categoria "software de asisten" se refer la resursele logice numite adesea i programe utilitare pentru dezvoltarea de aplicaii.

    1.7. CLASIFICAREA N ORDINE A SISTEMELOR NUMERICE Calculatorul numeric este un sistem digital, cu o serie de funcii ce corespund organizrii sale interne. n literatura romneasc a fost introdus n 1983, [Stefan83], o modalitate sugestiv de clasificare a sistemelor digitale n ordine, clasificare care ne va ajuta s ncadrm calculatorul n clasa mai general a sistemelor numerice i totodat s exemplificam ulterior corelaia ce exist ntre gradul de dezvoltare structural i funciile calculatoarelor numerice.

    n mod tradiional, sistemele digitale sunt mprite n: sisteme logice combinaionale (ieirile la momentul de timp t, depind numai de

    valorile ntrrilor la momentul t) i sisteme logice secveniale (la care ieirile la momentul t depind att de ntrrile la

    momentul t ct i de starea sistemului la momentul t, stare determinat ntrrile i ieirile circuitului la momente anterioare lui t).

    Aceast clasificare general nu evideniaz deosebirile de structur i funcionare a circuitelor ce sunt incluse n cadrul celor secveniale. Criteriul de clasificare propus [Stefan93] mparte sistemele digitale n ordine, fiecrui ordin fiindu-i asociat o anumit clas de funcii.

    Figura 1.6. Exemplificare a interconectrii sistemelor digitale: a) sistem de ordinul n serie, b) sistem de ordinul n paralel, c) sistem de ordinul n serie - paralel, d) sistem de ordinul n+1 (dezvoltare structural prin introducerea reaciei). Prin X s-a indicat intrarea n sistem iar prin Y ieirea. Prin niS , i = 1...4 n figur, s-

    a indicat sistemul digital de ordinul n cu indicele i.

    nS2

    nS1

    Y

    X

    nS2 nS1

    X

    Y

    X

    Y

    nS4nS3

    nS2 nS1

    X

    Y

    nS4nS3

    nS2nS1

    (a) (b) (c) (d)

  • Introducere n arhitectura calculatoarelor 11

    Ordinele sunt determinate de gradul de structurare (organizare intern), numrul ordinului crescnd pe msura creterii structurale.

    Clasificarea se face conform urmtoarelor definiii:

    1. Sistemul de ordinul zero cel mai simplu este reprezentat de o poart logic (circuit combinaional elementar).

    2. Extensiile serie (figura 1.6. a), paralel (figura 1.6.b) sau serie-paralel (figura 1.6.c), ale unor sisteme ce au ordinul maxim n genereaz tot un sistem de ordinul n;

    3. Un sistem de ordinul n+1 poate fi generat prin interconectarea unor sisteme cu ordin mai mic sau egal cu n, dar ntre care cel puin unul este de ordinul n, ntr-o configuraie ce prezint o bucl de reacie (figura 1.6.d); n clasificarea descris pe scurt mai sus, ordinele sunt numerotate de la 0 la n, teoretic n

    putnd fi orict de mare. Unui anumit ordin i corespunde o anumit clas de funcii, funcii ce pot fi realizate i pe oricare din sistemele de ordin superior.

    ncercnd s exemplificm corespondena ntre ordine, funcii i circuite existente pe pia, vom observa c ncepnd de la ordinul cinci n sus nu mai putem s dm nite exemple concrete [Stefan91], nu numai pentru c realizrile tehnologice actuale sunt limitate, ci i pentru c funcia nu mai este dictat strict de structura fizic ci i de posibile structuri informaionale:

    Ordinul n =

    Funcii Exemplificare circuite

    0 funcii combinaionale circuite logice combinaionale 1 funcii de memorare circuite de memorare, (latch RS, latch D,

    registre, RAM, structura master-slave) 2 funcii de automat finit bistabile JK, T, numrtoare digitale 3 funcii de prelucrare structura de procesor (automate cu stiva,

    automate microprogramabile); 4 funcii de prelucrare programabile calculator 5 funcii de prelucrare n reea reele de prelucrare digital

    1.8. REPREZENTAREA FUNCIONAL A UNUI CALCULATOR Un calculator poate fi descris att sub aspect funcional ct i structural. Circuitele electronice ale unui calculator recunosc i execut doar un set limitat de instruciuni elementare, codificate n form binar. Aceste instruciuni sunt doar succesiuni de bii (1 i 0) pe care procesorul le nelege - decodific i le execut. Indiferent de tipul de main, instruciunile recunoscute sunt rareori mai complicate dect [Tanenbaum99]:

    adun dou numere verific dac un numr este egal cu zero copiaz date dintr-o zon a memoriei calculatorului n alt zon. De exemplu, la procesoarele Intel din seria 80x86 codul binar al instruciunii urmtoare:

    0000 0100 0000 0110

    comand adunarea coninutului unui registru intern de 8 bii (numit registrul al) cu valoarea imediat 6. Adesea, cnd utilizatorul uman este obligat s lucreze cu valori numerice binare, se folosete reprezentarea n hexazecimal, care este mai compact i mai uor de citit. Codul, n hexazecimal, al instruciunii corespunztoare succesiunii binare de mai sus este 04 06 hex. i acest mod de scriere a instruciunilor este ns complicat pentru programator.

  • Capitolul 1 12

    Instruciunile elementare, recunoscute de un procesor formeaz limbajul main al procesorului. Vom nota acest limbaj cu L0, el corespunznd mainii fizice M0. Limbajul main cuprinde ns doar instruciuni codate sub form de cuvinte binare i de aceea este dificil de utilizat de ctre om.

    Presupunem c programatorul poate scrie programele sale ntr-un limbaj L1, format din instruciuni simbolice (succesiuni de litere i cifre) mai apropiat de limbajul uman. Pentru a putea executa acest program pe maina M0 fiecare instruciune din L1 a programului trebuie translatat n instruciuni din limbajul L0. De exemplu programatorul poate scrie n L1 instruciunea:

    add al,6 iar programul de translatare va genera succesiunea binar, corespunztoare lui L0:

    0000 0100 0000 0110

    Se poate spune c limbajul L1 corespunde unei maini virtuale programabile numit M1. Numele acestui limbaj simbolic de programare este limbaj de asamblare, iar programul de translatare este numit asamblor.

    Translatarea presupune c tot programul scris n L1 este mai nti transformat n program scris n L0. Apoi programul n L0 este ncrcat n memoria calculatorului i executat, iar programul n L1 este abandonat. Calculatorul este controlat de programul n L0, lansat n execuie. Exemple de programe de translatare: compilator, asamblor.

    Exist ns i varianta rulrii programelor pe M0 prin interpretare, de ctre un program numit interpretor. Interpretorul este un program n L0 care ruleaz pe maina M0 i care preia instruciunile programului n L1 ca pe date de intrare. Interpretorul citete i decodific fiecare instruciune din L1 i apoi trece imediat la execuia acesteia. n cazul interpretorului nu se genereaz un program executabil ca la translatare. n acest caz calculatorul este controlat de programul interpretor.

    Figura 1.7. O main de calcul organizat din punct de vedere funcional ca o succesiune de mai multe niveluri de maini virtuale.

    Nivelul 0: Programele n L0 pot fi executate direct de ctre circuitele

    electronice

    Maina fizic (real) M0, cu limbajul

    main L0

    Maina virtual M1, cu limbajul main L1

    Maina virtual M2, cu limbajul main L2

    Maina virtual Mn, cu limbajul main Ln

    Nivelul 1: Programele n L1 pot s fie interpretate de un interpretor ce ruleaz pe

    M0, sau pot s fie translatate n L0

    Nivelul 2: Programele n L2 pot s fie interpretate de un interpretor ce ruleaz pe M1 sau M0, sau pot s fie translatate n L1

    sau L0

    Nivelul n: Programele n Ln pot s fie interpretate de un interpretor ce ruleaz pe

    o main de nivel inferior, sau pot s fie translatate ctre limbajul main al unei

    maini inferioare

  • Introducere n arhitectura calculatoarelor 13

    Programatorii doresc adesea s dispun de un limbaj de programare mult mai apropiat de limbajul uman, n care s existe comenzi de genul: tiprete un ir la imprimant, afieaz un text pe ecranul calculatorului, extrage radical dintr-un numr etc. Diferenele dintre un limbaj de acest fel i L0 sunt mari, iar la transformarea direct ctre L0 a instruciunilor noului limbaj fiecrei instruciuni i va corespunde o succesiune de instruciuni elementare din L0. Dac noul limbaj ar fi numit L1, iar transformarea s-ar face direct n L0 programul de translatare ar fi extrem de complex. De aceea programul scris n noul limbaj, s-l numim limbajul L2, corespunztor mainii virtuale M2, va fi translatat mai nti ctre un program n L1 i apoi ctre programul n L0. Conform ierarhiei de limbaje descrise mai sus, un calculator poate fi privit, din punct de vedere funcional, ca o succesiune de maini virtuale Mi, fiecare corespunztoare unui limbaj Li (i = 1, n), ca n figura 1.7. Fiecare nivel are un set de funciuni specifice care prelucreaz un set de intrri specifice i genereaz un set de ieiri specifice. O main virtual de pe un anumit nivel poate utiliza toate funciile oferite de maina de pe nivelul inferior.

    Structura ierarhic a mainii de calcul indic c ntre fiecare dou niveluri vecine exist o interfa, deci exist i o ierarhie vertical de interfee. Pentru un calculator de uz general, cu procesor avnd unitatea de control microprogramat, aceast ierarhie de maini virtuale i ierarhie de interfee se indic n figura 1.8. n partea dreapt a figurii s-a exemplificat aspectul programului la nivelul respectiv.

    n figura 1.7. nivelurile succesive de maini virtuale au fost imbricate. Aceasta pentru c o maina virtual12 de pe un nivel superior folosete toate funciile oferite de nivelurile inferioare. Un nivel este constituit din mulimea aplicaiilor asupra elementelor mulimii de intrare pentru nivelul dat, ct i asupra elementelor mulimilor de intrare i ieire de la nivelul imediat inferior. Aplicaiile de la un nivel dat pot constitui aplicaii i pentru nivelul superior urmtor. Cele mai multe calculatoare moderne au 2 sau mai multe niveluri. Exist ns i maini de calcul la care se pot identifica mai mult de 5 niveluri ierarhice de maini virtuale.

    n figura 1.8. se observ c la nivelul cel mai de jos se gsesc dispozitivele i circuitele electronice digitale care alctuiesc structura hardware a calculatorului. La urmtoarele dou niveluri se exemplific existena unui nivel combinat hardware - software (firmware) care cuprinde pe lng unitile logice funcionale (set de registre, ALU, unitate de control, etc.) i un nivel de microprogram, ncastrat ntr-o memorie local de control. Acest nivel face parte din unitatea de control microprogramat, iar microprogramele se constituie ca un interpretor al instruciunilor de la nivelul inferior al unitilor funcionale. n cazul n care unitatea de control este cablat, nivelul de microprogram nu apare explicit n ierarhia mainilor virtuale.

    La urmtorul nivel se observ nivelul instruciunilor elementare recunoscute de procesor. Este nivelul funciilor de baz pe care le ofer un anumit procesor de calculator i el este descris de ctre productori n manualele de descriere a procesoarelor. Acesta este nivelul ASI (nivelul arhitecturii setului de instruciuni), iar maina virtual maina de baz.

    Dei maina "nelege" setul specific de instruciuni binare i toate unitile funcionale sunt asamblate, la acest nivel maina poate fi folosit cu greu i numai dac utilizatorul scrie n cod main nu numai programul de aplicaie utilizator, dar i rutinele necesare pentru accesul la perifericele de intrare i de ieire (tastatur, display13, disc magnetic, etc.). La acest nivel, dispozitivele de intrare / ieire (I/O) pot fi controlate prin ncrcarea de valori n registre speciale ale circuitelor de control ale acestor dispozitive I/O (controllere I/O). De exemplu, controlul unei uniti de disc, pentru citirea informaiei de pe disc, se poate face prin ncrcarea valorilor corespunztoare adresei de pe disc, adresei memoriei principale, a numrului de octei de transferat, i alte informaii de stare i sincronizare. n practic, sunt necesari mult mai muli parametrii dect

    12 virtual, pentru c utilizatorul unui anumit nivel lucreaz cu instruciuni specifice, vede doar nivelul la care lucreaz, fr s conteze pentru el ce se ntmpl mai jos 13 display (engl.) = dispozitiv de afiare

  • Capitolul 1 14

    cei pomenii, iar informaia de stare returnat de circuitul de control al discului dup o operaie este foarte complex. Mai mult, pentru multe dispozitive de I/O, timpul joac un rol important n programare. Una din funciile majore ale unui sistem de operare este s ascund toate aceste complexiti i s pun la dispoziia programatorului un set de instruciuni simple cu care s lucreze. De exemplu o comand de genul: "citete blocul X din fiierul Y" e mult mai simpl pentru c nu trebuie s ne mai facem probleme privind detaliile micrii capetelor de citire/scriere i timpul de ateptare pentru stabilizarea lor. Figura 1.8. Ierarhia mainilor virtuale i a interfeelor pentru un calculator de uz general cu procesor avnd

    control microprogramat.

    Nivelul mainii virtuale a sistemului de operare este de fapt un sistem hibrid. [Tanenbaum99], pentru c cele mai multe dintre instruciunile (funciile) oferite sunt de asemenea instruciuni i pentru nivelul imediat inferior. Funciile suplimentare oferite se refer la administrarea resurselor hardware i software ale calculatorului (alocarea memoriei principale, administrarea memoriei secundare, posibilitatea de execuie concurent a programelor etc.). Uneori acest nivel este numit nivelul mainii extinse, pentru c la acest nivel calculatorul este vzut de utilizator prin intermediul sistemului de operare (SO). Comunicarea utilizatorului, sau programului utilizator, cu SO se realizeaz pe dou niveluri: prin intermediul limbajului de comand cu ajutorul cruia utilizatorul solicita diferite resurse ale sistemului i prin intermediul unor instruciuni speciale (apeluri sistem) la execuia crora sunt activate unele componente ale SO

    Sistemul de operare nu este doar o interfa ntre utilizator i maina de calcul. El are i sarcina de administrator al resurselor calculatorului. El trebuie sa administreze toate procesele (programele n cursul execuiei, mpreun cu contextul de lucru), memoriile intern i extern, discurile magnetice, dispozitive de intrare / ieire, etc. Sarcina sistemului de operare este s fac o alocare ordonat i controlat a proceselor, blocurilor de memorie, dispozitivelor de I/O, ntre diferitele programe ce se afl n competiie pentru a le folosi. Atunci cnd un calculator are

    Pachete de aplicaii

    Limbaj de nivel nalt

    Asamblor

    Maina virtual a sistemului de operare

    Instruciuni main

    Microprogram

    Uniti funcionale

    Dispozitive electronice

    Translatare sau interpretare

    Translatare

    Translatare

    Interpretare

    Implementare

    Interpretare parial

    Interpretare

    aux=z[k]; for (j=k;j

  • Introducere n arhitectura calculatoarelor 15

    utilizatori multiplii, sarcinile de administrare i protecie ale sistemului de operare sunt i mai evidente. Sistemele de operare au o componenta de nivel inferior (un nucleu central, monitor, executiv, sau supervizor), care depinde de arhitectura mainii de baz (de nivelul ASI) i care controleaz maina de baz tot timpul cu excepia momentelor cnd se ruleaz un program de aplicaie (care ns poate folosi rutine ale executivului), iar la terminare, controlul e preluat din nou de executiv. Colecia de rutine ce formeaz nucleul SO este componenta cea mai apropiat de hardware care realizeaz gestiunea la nivel fizic a operaiilor de I/O, tratare a ntreruperilor, ncrcarea i lansarea programului, citirea/scrierea unui caracter pe disc sau pe monitor etc. Orice modificare a configuraiei mainii de baz implic modificarea acestui nucleu al SO dar nu implic i modificarea nivelurilor superioare. Nucleul SO este pstrat de obicei n memorie de tip ROM, dar n unele cazuri se poate stoca pe discul magnetic. De exemplu, sistemul de operare MS-DOS, are o component numit BIOS (Basic Input Output System) stocat n memorie de tip ROM, sau memorie RAM cu baterie tampon pentru pstrarea datelor i la oprirea calculatorului. BIOS conine programe de control ("drivers") pentru dispozitivele standard de I/O, acestea putnd oferii o serie de servicii care degreveaz programatorul i rutinele sistemului DOS, de toate detaliile hardware ale circuitelor de interfaa cu dispozitivele I/O. La PC aceste servicii pot fi apelate prin mecanismul ntreruperilor software (INT nn), dup o ncrcare prealabil cu valori adecvate, ale registrelor mainii. Celelalte componente ale sistemului MS DOS numite io.sys (conine programele de control de I/O) i msdos.sys (care conine rutine de gestionare a proceselor, memoriei i a sistemului de fiiere de pe discul magnetic, interpretarea apelurilor sistem) se ncarc de pe discul magnetic. Programele aplicative pot cere servicii sistemului de operare DOS (pot apela funciile DOS), prin intermediul ntreruperii soft INT 21H, codul corespunztor funciei dorite fiind ncrcat n registrul AH.

    1.9. REPREZENTAREA STRUCTURAL A UNUI CALCULATOR

    Structural, un calculator este format din uniti funcionale interconectate pentru a putea prelucra informaia, pe baza comenzilor transmise prin program. Pentru un calculator uni-procesor, structura general este cea din figura 1.9., ea corespunznd structurii propuse de von Neumann n 1945 pentru calculatorul secvenial, cu program memorat. n cadrul structurii calculatorului secvenial din figura 1.9. se disting urmtoarele uniti [Sztojanov87]:

    unitatea de intrare, format din echipamente periferice de intrare i sistemul de intrare al calculatorului,

    unitatea central a calculatorului, format din memoria principal (memorie ce conine date i instruciuni) i Unitatea Central de Procesare (UCP),

    unitatea de ieire, format din echipamente periferice de ieire i sistemul de ieire al calculatorului.

    Echipamentul periferic de intrare, preia datele din exterior (prin diverse traductoare) i le transform ca natur fizic i format de reprezentare, n aa fel nct informaia s fie compatibil cu nivelurile de tensiuni i formatul de reprezentare binar folosit de sistemul de intrare al calculatorului. Echipamentul periferic de ieire are funcia invers perifericului de intrare, el prelund datele de la sistemul de ieire al calculatorului. Echipamentul periferic de ieire transform datele primite ntr-o form corespunztoare elementului de execuie comandat de calculator. Dac este vorba de dispozitive de memorie extern informaia se stocheaz pe suportul extern, conversia informaiei binare fcndu-se n conformitate cu tipul circuitului de control i cu natura fizic a suportului de stocare (hrtie, semiconductor, material magnetic etc.).

  • Capitolul 1 16

    Sistemul de intrare / ieire (I/O) al calculatorului este locul prin care se face schimbul de informaii ntre unitatea central i echipamentele periferice. Acest transfer se face prin intermediul unor locaii adresabile de ctre procesor (UCP), numite porturi, ele fcnd parte din sistemul I/O al calculatorului. Sistemul I/O realizeaz operaii de genul: modific formatul de reprezentare a datelor (din serie n paralel, sau invers), verific corectitudinea informaiei transferate, asigur sincronizarea dintre echipamentul periferic i UCP din punctul de vedere al vitezelor de transfer (sincronizarea este necesar datorit vitezelor de lucru mult diferite ntre UCP i echipamentele periferice).

    Figura 1.9. Reprezentare structural a unui calculator uni-procesor de uz general. Cu linie punctat s-au reprezentat comenzile (C) transmise de la unitatea de control i semnalele de stare-sincronizare ca rspuns

    al unitilor comandate ctre unitatea de control. n cadrul semnalelor de control pentru memoria principal a fost inclus i informaia de adresare (A) a memoriei. Cile de transfer pentru date (D) i

    instruciuni (I) sunt reprezentate cu linie plin. ALU = Unitate Aritmetic i Logic. Unitatea central asigur prelucrarea automat a datelor, prin interpretarea instruciunilor unui program. Programul rulat (aflat n execuie) este stocat mpreun cu datele aferente n memoria principal (intern calculatorului). Introducerea datelor iniiale, comanda lansrii n execuie, afiarea, tiprirea sau transmisia la alte dispozitive a rezultatelor se face prin unitile de intrare, respectiv de ieire ale sistemului de calcul.

    Ca structur intern, unitatea central este format din memoria principal i din Unitatea Central de Procesare (UCP). La rndul ei UCP include calea de date (ALU, registre, magistrale interne pentru transferul informaiilor) i unitatea de control.

    Unitatea de control (UC), adreseaz (A) i citete din memorie instruciunile binare ale programului, le interpreteaz i genereaz n consecin semnale de comand ctre toate celelalte uniti funcionale ale calculatorului. Ca urmare a acestor semnale instruciunea curent (I) este executat. n plus UC analizeaz semnale de stare i sincronizare, ce provin de la celelalte uniti funcionale i ca urmare poate schimba succesiunea semnalelor de control pe care le genereaz, sau poate modifica momentele de timp ale succesiunii semnalelor de comand, pentru a realiza sincronizarea cu celelalte uniti. Exist dou moduri de implementare a unitii de control:

    control cablat: dac unitatea de control este realizat ca un automat secvenial convenional, la care algoritmul de interpretare a fiecrei instruciuni binare este inclus n

    Sistem de calcul cu program memorat (von Neumann)

    Periferice de intrare

    Periferice de ieire

    Sistem de intrare

    Sistem de ieire

    Memoria principal

    ALU i registre

    Unitatea de

    control

    I D

    UCP

    Calculator

    C

    C+A

  • Introducere n arhitectura calculatoarelor 17

    circuitele fizice (hardware). Pentru modificarea setului de instruciuni recunoscut unitatea de control trebuie re-proiectat complet.

    control microprogramat (micro-codat): dac succesiunea de semnale de comand specifice fiecrei instruciuni (succesiune numit microprogram) se nscrie ntr-o memorie de control local, de obicei, memorie numai cu citire. Pentru modificarea setului de instruciuni recunoscut trebuie doar rescris coninutul memoriei de control.

    Tot n cadrul unitii de control includem i circuitele pentru generarea adreselor, care

    calculeaz adresele corecte (adrese pentru memoria principal, pentru porturi de I/O, sau pentru registrele interne ale UCP) pe baza informaiilor binare din corpul instruciunilor. Figura 1.10. Memoria principal prezentat ca o succesiune de locaii de memorie, fiecare locaie avnd o adres specific. S-a presupus c adresa de memorie are a bii, iar n fiecare locaie, cu adres unic, se

    poate stoca un cuvnt binar cu lungimea de d bii.

    Unitatea aritmetic i logic (ALU14), realizeaz operaii logice sau aritmetice cu operanzii adresai de UC. nainte de prelucrare, operanzii se stocheaz ntr-un set de registre de uz general, folosite ca memorie temporar. Registrele reprezint o memorie local UCP, de foarte mare vitez. Setul de registre de uz general poate fi folosit ns i pentru salvarea diferitelor informaii privind adresarea memoriei principale.

    n funcie de rezultatul operaiilor efectuate, ALU seteaz anumii indicatori de condiii (indicatori de stare, fanioane15) care pot fi citii de UC i pot astfel modifica secvena de tranziie a strilor acestui automat. Unitatea de memorie principal (sau memorie intern) are funcia de stocare a programelor i datelor aferente acestora. Transferul datelor cu registrele UCP se face conform comenzilor date de unitatea de control. Memoria principal este realizat n prezent exclusiv n tehnologie semiconductoare. Aceasta unitate de stocare a informaiei are, n principiu, o organizare liniar, constnd din locaii (registre) de memorare, fiecare de cte d bii, locaia fiind selectabil printr-o

    14 ALU = Arithmetic and Logic Unit (engl.) - Unitate aritmetic i logic 15 flag (engl.) = fanion, indicator de condiii / de stare

    Adresa 0

    Adresa 1

    Adresa k

    Adresa 2a-1-1

    Adresa 2a-1

    d bii

  • Capitolul 1 18

    adres unic. Adresa poate lua valori cuprinse ntre 0 i 2a-1, unde prin a s-a notat numrul de bii ai cuvntului de adres fizic.

    Din punctul de vedere al denumirilor folosite facem urmtoarele observaii: Ansamblul format din UC, ALU i registre este numit Unitate Centrala de Procesare

    (UCP) fiind o structur de procesor de uz general cu set de instruciuni. UCP mpreun cu memoria principal formeaz Unitatea Central, iar Unitatea central mpreun cu sistemul de I/O i setul de programe de sistem constituie

    structura de calculator. Un calculator mpreun cu diversele echipamente periferice formeaz un sistem de

    calcul. Structura logic de baz a calculatorului uni-procesor, prezentat anterior, conform figurii 1.9. corespunde , n bun msur, celei stabilite de John von Neumann n 1945. n lucrarea "Prima schi de Raport asupra lui EDVAC", el a definit structura logic de baz a calculatorului cu program memorat, menionnd cinci criterii necesare a fi ndeplinite de acesta [Hayes88]: 1. s posede un mediu de intrare care s permit introducerea unui numr nelimitat de operanzi i

    instruciuni. 2. s posede o memorie din care s se citeasc operanzi i instruciuni i n care s se poat

    introduce, n ordinea dorit, rezultatele. 3. s dispun de o seciune de calcul, capabil s efectueze operaii aritmetice i logice asupra

    operanzilor citii din memorie. 4. s posede un mediu de ieire, care s permit livrarea unui numr nelimitat de rezultate ctre

    utilizator. 5. s posede o unitate de comand capabil s interpreteze instruciunile citite din memorie i s

    selecteze diverse variante de desfurare a operaiilor, n funcie de rezultatele obinute pe parcurs.

    Marea majoritate a calculatoarelor construite pn n prezent se bazeaz pe principii rezumate mai sus, fiind numite calculatoare de tip von Neumann, sau cu arhitectur von Neumann.

    1.10. SCURT PRIVIRE ISTORIC ASUPRA DEZVOLTRII MAINILOR DE CALCUL

    Un calculator modern reprezint un sistem complex care nglobeaz n construcia s mai multe tehnologii: electronice, magnetice, electromecanice etc. Evoluia calculatoarelor este strns legat de progresele nregistrate n aceste tehnologii. Astfel, n prezent, pentru realizarea unitii centrale a unui calculator se utilizeaz, cu precdere, tehnologii microelectronice. Att memoria principal ct i UCP (microprocesorul) sunt construite ca circuite integrate pentru toate calculatoarele moderne. Pentru stocarea datelor i a programelor pe termen lung se folosesc suporturi magnetice sub forma de discuri sau benzi, bazate pe diverse tehnologii magnetice / optice. Pentru implementarea dispozitivelor periferice de intrare / ieire sunt folosite n principal tehnologiile electromecanice. n evoluia mijloacelor de calcul se pot evidenia patru etape [Hayes88]:

    etapa calculului manual etapa mainilor mecanice de calcul etapa mainilor electromecanice de calculat etapa mainilor electronice de calcul

  • Introducere n arhitectura calculatoarelor 19

    Nu ne vom referi aici la calculul manual i la eventualele ajutoare pentru acest calcul, ajutoare de tip abac (primul numrtor de tip abac se pare c a aprut la chinezi cu 2600 de ani nainte de Cristos). Calcularea manual are dou limitri serioase [Hayes88]:

    a. viteza la care poate lucra calculatorul uman este limitat. Unele probleme ce presupun foarte multe operaii nu pot fi rezolvate manual niciodat ntr-o perioad rezonabil sau la un cost rezonabil;

    b. fiinele umane sunt nclinate s fac greeli (n calcule !) astfel c rezultatul obinut cu mna, n cazul unor calcule complexe nu prezint ncredere, dect dac s-au luat precauii sofisticate de nlturare a greelilor.

    1.10.1. Etapa mainilor mecanice de calcul

    La aceste maini roata dinat a jucat rolul elementului cu mai multe stri stabile. Fiecare cifr zecimal poate fi exprimat printr-o poziie a roii. La reprezentarea numerelor zecimale se foloseau attea roi cte cifre erau necesare pentru reprezentarea unui numr. Ca evenimente semnificative ale mainilor mecanice de calcul amintim: 1642 - filozoful francez Blaise Pascal (1623 - 1662) a proiectat i realizat maina automat de

    adunat i sczut. Avea 2 seturi a cte 6 roi numrtoare pentru cei doi operanzi reprezentai fiecare cu 6 cifre zecimale. Poziia specific a roilor indica valoarea zecimal stocat. Cele dou seturi de roi erau interconectate prin angrenaje i roi dinate. Pentru realizarea acestei maini Pascal a introdus mai multe inovaii: clichet de blocare care fcea automat transferul transportului sau mprumutului ntre rangurile zecimale vecine, cnd roata trecea de la 9 la 0 sau invers. Numerele negative erau reprezentate printr-un cod complementar.

    n jurul anului 1671 filozoful i matematicianul german Gottfried Leibniz (1646 - 1716) a construit un calculator mecanic care aduga la maina de adunat i sczut a lui Pascal mecanismele necesare pentru a realiza automat operaiile de nmulire i mprire. nmulirea a fost implementat prin intermediul unor scripei i lanuri de transmisie. Aceast main, predecesorul mainilor mecanice cu patru operaii, a rmas o curiozitate academic pn n secolul XIX cnd s-au produs i comercializat primele maini de calcul mecanice.

    n 1823 Charles Babbage profesor de matematic la Cambridge, Marea Britanie, ncepe proiectarea unei maini de calcul, cu execuie automat a programului, numit Maina diferenial (Difference Engine). Proiectul prevedea structura principalelor elemente ale calculatoarelor moderne (unitile de memorie, de calcul, de intrare, ieire i comand) i era destinat calculului automat al tabelelor matematice. Maina diferenial trebuia s calculeze automat valorile unor tabele matematice i s le transfere prin perforatoare, unor plci litografice, de pe care ulterior tabelele puteau fi tiprite. Singura operaie efectuat era adunarea, prin care se calculau o mulime de funcii utile prin metoda diferenelor finite. Proiectul mainii difereniale a fost abandonat n 1842. Un motiv este c proiectul mainii era mult prea avansat fa de tehnologia mecanic existent atunci. Al doilea motiv, a fost scderea interesului lui Babbage care concepuse deja o main mult mai puternic i pe care o numise maina analitic.

    Proiectul mainii analitice (Analytical Engine) a nceput n 1834. Din diverse motive nici una din mainile proiectate de Babbage nu a fost terminat n secolul su. Ulterior, n secolul XX, mainile au fost construite pentru a fi expuse n muzee ale tehnicii. Structura propus pentru Maina Analitic este cea din figura 1.11. ([Hayes88]):

    Proiectul mainii analitice cuprinde funciunile generale pe care le are i n prezent oricare main de calcul de uz general. Pentru a controla succesiunea operaiilor mainii, Babbage a propus, pentru prima oar, folosirea de cartele perforate, de genul celor folosite la rzboaiele de esut Jacquard. Cartelele cu operaii ("operation cards") erau utilizate pentru controlul operaiilor

  • Capitolul 1 20

    unitii de calcul. Fiecare cartel selecta una din cele 4 operaii elementare (adunare, scdere, nmulire, mprire) ce urma s fie realizat la fiecare pas din program.

    Figura 1.11. Structura mainii analitice a lui Babbage. n figur s-au pstrat i denumirile originale, n limba englez, ale unor componente ale mainii, trecndu-se n parantez i funcia corespunztoare n limba romn. Unitate de calcul (the mill - moara) avnd funciuni similare cu unitatea aritmetic i logic din structurile moderne de procesoare. Memoria (the store - magazia) cu rol de stocare a datelor. Echipamentul de ieire al mainii de calcul este unitatea de imprimare i perforare rezultate. Cartele cu operaii (de comand) memoreaz codul operaiei cerute, iar cartelele de variabile furnizeaz valorile, sau adresele datelor ce vor fi prelucrate - date de intrare n tabele.

    Cartelele cu variabile ("variable cards") se foloseau pentru a selecta locaiile de memorie utilizate de o anumit operaie (de exemplu sursa operandului de intrare i destinaia rezultatului). Informaiile numerice constante se puteau furniza fie prin cartele perforate, fie prin setarea manual a roilor dinate numrtoare. Alta contribuie important a lui Babbage a fost concepia mecanismului care s permit unui program s-i modifice automat secvena liniar de operaii. n termenii actuali putem spune ca el a conceput mecanismul de execuie a instruciunilor de salt condiional, prin testarea semnului unui numr.

    1912. ncepe producia industrial, de mas, a mainilor mecanice de calculat, cu patru operaii aritmetice.

    1.10.2. Maini electromecanice de calculat

    Aceste maini de calcul erau construite cu roi dinate, electromagnei i maini electrice de acionare a roilor dinate. Principalele momente n dezvoltare sunt urmtoarele: 1896 -Herman Hollerith, care anterior inventase o main comercial cu cartele perforate pentru

    calcul, sortare, i catalogare a cantitilor mari de date, a nfiinat "The Tabulating Machine Company " pentru a fabrica echipamentul inventat de el. n 1911 aceast companie s-a unit cu altele i a format "Computing-Tabulating-Recording Company" redenumit n 1924 "International Business Machines ( IBM ). Este interesant de menionat ca prototipul mainii de sortare i catalogare construit de Hollerith, a fost folosit n calcularea rezultatelor pentru recensmntul populaiei SUA din 1890.

    1904 - inventarea tubului electronic (dioda) de ctre John Fleming, menionat aici ca prim dispozitiv electronic ce va permite apariia calculatoarelor electronice.

    The mill

    (Unitatea de calcul)

    The store (Memoria)

    Imprimare i

    perforare rezultate

    Cartele cu operaii

    Cartele cu variabile

    Program

    Instruciuni

    Date

  • Introducere n arhitectura calculatoarelor 21

    1930 - Producie de mas a mainilor electromecanice de calculat cu cele patru operaii aritmetice elementare.

    1937 - 1945. n SUA s-au dezvoltat mai multe maini electromecanice de calculat, bazate pe relee electromagnetice, majoritatea funcionnd n aritmetic zecimal, dei electromagnetul putea fi suport pentru aritmetica binar. Astfel, Howard Aiken fizician la Universitatea Harvard a propus n 1937 proiectul unui calculator electromecanic de uz general, bazat pe principiile enunate de Charles Babbage. Construcia calculatorului, numit MARK 1, a nceput n 1939 i s-a terminat n 1944. Era programat cu informaii nscrise pe band de hrtie perforat, sau cu cartelele de comand i variabile.

    In 1938 Konrad Zuse a construit, n Germania, calculatorul electromecanic, numit Z1, care utiliza aritmetica binar n loc de cea zecimal. n 1941 Zuse realizeaz o variant mbuntit a calculatorului su, pe care o numete Z3 i care se consider c a fost primul calculator operaional de uz general controlat prin program. Unitatea aritmetic era construit cu relee i utiliza reprezentarea numerelor n virgul mobil.

    1.10.3. Maini electronice de calcul

    Mainile electronice de calcul, s-au dezvoltat n strns legtur cu dezvoltarea tehnologiilor

    de realizare a dispozitivelor electronice i a circuitelor integrate i de asemenea pe msur dezvoltrii tiinei calculatoarelor (organizare, arhitectura setului de instruciuni, limbaje de programare, programe de sistem etc.). Un element revoluionar pentru dezvoltarea resurselor fizice ale sistemelor de calcul l-a constituit perfecionarea tehnologiilor de producere a circuitelor integrate i apariia circuitelor integrate pe scar foarte mare (VLSI). Amintim ca n funcie de gradul de integrare circuitele integrate pot fi clasificate n: circuite integrate pe scar mic (SSI- aproximativ 1-10 pori logice convenionale pe chip-ul

    de siliciu; o poart se consider a avea aproximativ 5 tranzistoare echivalente) circuite integrate pe scar medie (MSI - pn la o sut de pori / chip) circuite integrate pe scar mare (LSI - mii de pori / chip) circuite integrate pe scar foarte mare (VLSI - sute de mii de pori / chip)

    Pentru a clasifica mainile de calcul electronice, n literatura de specialitate se vorbete adesea despre generaii de calculatoare electronice. Aceast clasificare pe generaii succesive, dei util, este totui bazat pe criterii destul de vagi, astfel c pentru unele calculatoare este destul de dificil ncadrarea ntr-o generaie sau alta. Trebuie inut cont aici, c pe lng dezvoltrile tehnologice, inovaiile n proiectare, dezvoltarea limbajelor i a tehnicilor de programare, un efect important asupra dezvoltrii calculatoarelor l-a avut piaa - criteriul comercial.

    Avnd n vedere tehnologiile utilizate n construcia calculatoarelor, ncepnd cu anul 1945, se pot evidenia cinci generaii de calculatoare, ce vor fi descrise pe scurt n continuare ([Hayes88]). Generaia I de calculatoare electronice (aproximativ 1945-1954) Caracteristici principale ale calculatoarelor de generaia I: Utilizarea tuburilor electronice pentru realizarea circuitelor electronice Folosirea memoriilor interne cu tub catodic (CRT16) i linii de ntrziere cu mercur; Capacitatea memoriei principale de aproximativ 1-2 kilo-cuvinte Aritmetica n virgul fix Viteza de operare: mii sau zeci de mii de instruciuni pe secund. Programarea se fcea iniial doar n cod maina, iar apoi i n limbaje de asamblare.

    Ca evenimente principale menionm n ordine cronologic: 16 CRT = Cathode Ray Tube (engl.) = tub catodic. Este aceeai tehnologie utilizat i n televiziune.

  • Capitolul 1 22

    In 1943 la Universitatea din Pennsylvania a nceput construcia primului calculator bazat pe tuburi electronice, numit ENIAC (Electronic Numerical Integrator And Computer), ce va fi terminat n 1946. Echipa de proiectani i constructori a fost condus de Presper Eckert, John Mauchly i John von Neumann. Calculatorul avea 18000 de tuburi electronice, cntrea 30 tone i era folosit pentru generarea automat a tabelelor balistice pentru armata SUA. Era cel mai rapid calculator construit pn atunci, putnd realiza cam 5000 de operaii de adunare ntr-o secund. ENIAC a fost construit pentru a funciona n aritmetic zecimal. Pentru memorarea n acumulatori a unei cifre zecimale se utiliza un cerc constnd din 10 bistabile cu tuburi. Contorul n cerc cu tuburi electronice era echivalentul roilor contoare mecanice din generaiile anteriore de maini de calcul. Maina putea efectua operaii de adunare i scdere, dar avea uniti suplimentare pentru nmulire, mprire i rdcin ptrat. Programarea se fcea manual prin comutatoare i cuple pentru cabluri de legtur la diferite module. De exemplu pentru adunarea a dou numere din acumulatoarele A1 i A2 trebuia stabilit manual o cale de date ntre A1 i A2. Introducerea datelor se fcea prin cartele perforate. Mai cuprindea nite memorii speciale, numite tabele de funcii, utilizate pentru stocarea tabelelor i constantelor. Rezultatele se obineau fie pe cartele perforate, fie la maina electric de scris. La aceast main de calcul datele i programele erau stocate separat.

    n timpul realizrii lui ENIAC, n 1945, John von Neumann a lansat ideea de a stoca n aceeai memorie att datele ct i programul, descriind arhitectura unui "calculator cu program memorat".

    n 1945 a nceput construcia unui alt calculator electronic, EDVAC (Electronic Discrete Variable Automatic Computer ) pe baza lucrrii lui von Neumann "Prima schi de Raport asupra lui EDVAC". Pe lng facilitarea procesului de programare, conceptul de program stocat, fcea posibil ca un program s-i modifice propriile instruciuni, proprietate rar utilizat n prezent. nainte ca programul s fie executat, toate instruciunile i datele se stocau n memoria principal.

    In 1946 un colectiv condus de von Neumann a nceput proiectarea unei noi maini, numit IAS, la Institute for Advanced Studies din Princeton (calculatorul a fost terminat n 1951). Aceast main utiliza o memorie principal cu acces aleator cu tub catodic, care permitea s se acceseze ntr-o operaie un ntreg cuvnt. Spre deosebire de EDVAC se utilizau circuite binare paralele. Calculatorului IAS, avea posibilitatea de a-i modifica partea de adres din instruciune. Aceasta permitea utilizarea aceluiai program pentru prelucrarea mai multor seturi de date, reducndu-se astfel spaiul ocupat de program n memorie. UCP coninea cteva registre cu tuburi electronice, folosite ca locaii de stocare rapid, implicit a operanzilor i rezultatelor. Dei avea faciliti limitate de intrare-ieire, maina IAS era destul de modern n concepie. Ea poate fi privit ca un prototip pentru toate calculatoarele de uz general ce au urmat. n cadrul memoriei auxiliare, se folosea un dispozitiv cu fir magnetic i se puteau stoca aproximativ 20 k-cuvinte.

    n 1948 cercettorii americani John Bardeen, Walter Brattain i William Shockley au inventat tranzistorul (cu contact punctiform), deschiznd era miniaturizrii n circuitele electronice. Pentru descoperirea lor au primit n 1956 premiul Nobel n domeniul fizic.

    Pe baza proiectului EDVAC, Eckert i Mauchly, n cadrul unei companii proprii (Eckert-Mauchly Computer Corporation), au produs n 1951, primul calculator comercial, numit UNIVAC17 1. Memoria principala era realizat cu linie de ntrziere cu mercur, iar memoria auxiliar cu band magnetic.

    In 1953 firma IBM construiete calculatorul cu program memorat, IBM 701, dup ce anterior construise doar echipamente pentru cartele perforate i doar o main de calcul, modelul Howard Mark I (relee electronice i program cablat). Memoria principal era de tip electrostatic

    17 UNIVAC = Universal Automatic Computer

  • Introducere n arhitectura calculatoarelor 23

    (tub catodic), iar pentru memoria auxiliar se foloseau tamburul magnetic i banda magnetic. Programele erau scrise n limbaj main, iar prin anii '50 n limbaj de asamblare.

    n 1954 a nceput producia (la firma Texas Instruments) primelor tranzistoare cu siliciu destinate comercializrii.

    1958 - la firma Texas Instruments se produce primul circuit care integreaz mai mult dect un singur tranzistor n acelai chip de siliciu.

    Generaia a II-a de calculatoare electronice (aproximativ anii 1955 - 1964) Din punct de vedere al tehnologiei de realizare este generaia caracterizat de folosirea tranzistoarelor discrete. Totodat n aceast generaie se dezvolt limbajele de nivel nalt pentru a uura munca programatorilor, i se dezvolt sisteme de operare, pentru a gestiona resursele hardware i software ale sistemului. Caracteristici principale ale calculatoarelor din generaia a doua: Utilizarea tranzistoarelor n locul tuburilor electronice Apariia cablajului imprimat. Apariia memoriilor interne cu miezuri de ferit i tambur magnetic; Utilizarea registrelor index i implementarea cablat (n hardware) pentru aritmetica n

    virgul mobil; Se rspndesc limbajele de nivel nalt, independente de main, care simplific munca de

    programare: ALGOL, COBOL, FORTRAN; Introducerea procesoarelor de intrare-ieire (IOP18) pentru a supraveghea operaiile de I/O i

    pentru a elibera UCP de aceste sarcini. Procesoarele de intrare-ieire (au fost numite i "canale", sau "sincronizatoare de date") au acces direct la memoria principal (prin multiplexarea adreselor ntre IOP i UCP). Ele recunosc un set redus de instruciuni i ruleaz programe specifice, independent i simultan cu UCP, iniierea oricrui transfer avnd ns nevoie de iniializarea fcut de UCP;

    Productorii de calculatoare au nceput s furnizeze i software de sistem, ca de exemplu: compilatoare, biblioteci de subrutine i monitoare pe loturi;

    Performane principale: capacitatea memoriei principale de aproximativ 32 kilo-octei i vitez de operare de aproximativ 2 MIPS. Multe din mbuntirile pomenite mai sus au aprut sporadic n unele calculatoare cu tuburi,

    deci ncadrate formal n generaia anterioar. De la generaia a 2-a se vorbete despre sisteme de calcul, pentru c numrul unitilor de memorie, al procesoarelor, al dispozitivelor de I/O i alte componente de sistem puteau varia ntre diferite instalaii, chiar dac se utiliza acelai calculator de baz. La unele calculatoarele din aceast generaie apare pentru prima oar memoria stiv19 (Electric KDF-9 i Burroughs B5000). Pentru aceast memorie de tip LIFO20, la maina B5000 primele dou cuvinte din stiv reprezint registre rapide ale UCP n timp ce restul stivei se gsete n memoria principal. Memoria stiv era folosit n aa fel nct toate instruciunile i operanzii erau preluate din vrful stivei, iar rezultatele erau de asemenea plasate n vrful stivei. De aici rezult c n cele mai multe din instruciuni nu este nevoie de specificarea adresei operanzilor.

    O dat cu mbuntirea echipamentelor de I/O (din punctul de vedere al vitezei), a aprut necesitatea de a se pregti loturi de lucrri21 pentru execuie. nainte de rulare acestea erau stocate pe band magnetic, iar apoi calculatorul le prelucra ntr-o secven continu plasnd rezultatele pe o alt band magnetic, de ieire. Prin lucrare / job, nelegem o nlnuire a execuiei mai multor programe: compilator, programe de legare i ncrcare, programe utilitare, lansare n execuie, cu

    18 IOP = Input-Output Processor 19 stack / stack memory (engl.) = stiv / memoria stiv 20 LIFO = Last-In First-Out; ultimul articol introdus este primul ieit-citit din memorie. 21 batch of jobs (engl.) = loturi de lucrri.

  • Capitolul 1 24

    scopul satisfacerii cererilor de servicii formulate de utilizator. Acestea sunt exprimate cu ajutorul unor comenzi, interpretate de o component a sistemului de operare. Fiecare comand genereaz o faz a lucrrii: compilare, legare, ncrcare, execuie, etc. nainte de apariia sistemelor de operare denumirea s-a referit la cereri lansate de utilizatori ctre echipamentele sistemului de calcul., cum ar fi de exemplu cererea pentru o sarcin de tiprire de la compartimentul de tiprire. Acest mod de administrare a operaiilor de I/O e numit prelucrare n loturi (batch processing22), sau prelucrare serial. Prelucrarea pe loturi cere utilizarea unui program supervizor numit monitor, care e permanent rezident n MP. Un monitor de loturi (batch monitor) este un exemplu de program de sistem, proiectat pentru a furniza un set de servicii comune ctre toi utilizatorii unui calculator, el fiind un sistem de operare (SO) rudimentar. Prelucrarea pe loturi a permis utilizarea mai bun a timpului UCP, componenta cea mai scump la acel moment. Apoi, o dat cu scdere continu a costurilor de realizare a UCP, prelucrarea batch (pe loturi) a fost nlocuit de sistemele cu partajarea timpului UCP, ca un ajutor al productivitii programatorilor, existnd un rspuns rapid pentru mai muli utilizatori. Astfel, cu sprijinul sistemului de operare, se permitea unui singur procesor (UCP) s prelucreze concurent, un set de programe independente, tehnica fiind numit multiprogramare. Aceasta se realizeaz n felul urmtor: UCP suspend temporar execuia programului curent, ncepe execuia unui alt program i se ntoarce la primul mai trziu. Se realizeaz deci o multiplexare n timp a resursei UCP ntre diferitele programe. Acolo unde este necesar programul suspendat este transferat ctre un IOP pentru un transfer I/O. n acest fel multiprogramarea ine UCP i unul sau mai multe IOP-uri ocupate prin suprapunerea operaiilor efectuate de UCP i IOP. Acest tip de sisteme multiprogramate se numesc sisteme timesharing (cu partajare n timp).

    Tot n perioada de timp n care sunt ncadrate calculatoarele de generaia a doua, au aprut calculatoare foarte puternice, numite supercomputere, folosite pentru prevederea vremii, cercetare n domenii militare, tehnic spaial, tehnic nuclear, inteligen artificial, domenii la care se cere un volum foarte mare de pai de calcul (de exemplu UNIVAC LARC - Livermore Atomic Research Computer i IBM 7030 - numit i Strech Computer). La supercalculatoare apare pentru prima oar noiunea de procesare paralel. Dou din tehnicile de prelucrare paralel dezvoltate la aceast generaie de supercalculatoare sunt:

    1. Suprapunerea operaiilor de aducere (fetch) i execuie a instruciunilor din cadrul unui program. Se realizeaz prin hardware special ce cuprinde procesoare pipeline (tip conduct, sau band de asamblare) sau uniti ALU multiple;

    2. Suprapunerea execuiei diferitelor programe. Asta se face prin proiectarea unor sisteme multiprocesor (sistem cu mai multe uniti UCP). Ca i multiprogramarea multiprocesarea necesita un program supervizor relativ complex. Att LARC cit i Strech au constituit dezastre financiar-comerciale, dar au influenat

    considerabil urmtoarele generaii de calculatoare. Supercalculatoarele au introdus unele soluii de mbuntire a arhitecturii, pentru creterea vitezei de calcul, proprii mai degrab generaiei urmtoare dect generaiei din care fac parte din punctul de vedere al tehnologiei. Generaia a treia (aproximativ anii 1965-1978)

    Anul 1965 poate fi considerat ca marcnd nceputul celei de-a trei