Sunteți pe pagina 1din 25

CUPRINS:

1.

INTRODUCERE ......................................................................................................................................................... 1-1 1.1 CALCULATOR NUMERIC - SISTEM DE PRELUCRARE A INFORMAIILOR ..................................................................... 1-2 1.2 MODELUL STRUCTURAL AL UNUI CALCULATOR NUMERIC ........................................................................................ 1-3 1.2.1 Calculator numeric cu sistem de I/E cu transfer programat ......................................................................... 1-6 1.2.2 Calculator numeric cu sistem de I/E cu transfer prin acces direct la memorie ............................................ 1-6 1.2.3 Calculator numeric cu sistem de I/E cu transfer prin canal de I/E ............................................................... 1-6 1.3 MODELUL FUNCIONAL AL UNUI CALCULATOR NUMERIC ......................................................................................... 1-7 1.4 UNITI FUNCIONALE ALE UNUI CALCULATOR NUMERIC ..................................................................................... 1-10 1.4.1 Memoria ........................................................................................................................................................ 1-10 1.4.2 Unitatea central de prelucrare ................................................................................................................... 1-12 1.4.3 Unitatea de comand .................................................................................................................................... 1-14 1.4.4 Subsistemul de intrare ieire......................................................................................................................... 1-17 1.4.5 Limbaje de programare ................................................................................................................................ 1-17 1.5 ELEMENTE DE ARHITECTUR I STRUCTUR ALE UNUI CALCULATOR NUMERIC ..................................................... 1-19 1.5.1 Concepte de baz .......................................................................................................................................... 1-19 1.5.2 Moduri de adresare ...................................................................................................................................... 1-21

1. INTRODUCERE

OBIECTIVE

Principalele obiective ale acestui capitol introductiv sunt urmtoarele: caracterizarea noiunii de informaie, reprezentarea i prelucrarea acesteia n sistemele tehnice; obinerea prin rafinri succesive a unui model structural al unui Calculator Numeric; prezentarea unui model funcional al unui Calculator Numeric, ca o ierarhie de maini virtuale; analiza din punct de vedere istoric a evoluiei echipamentelor de prelucrare numeric a datelor; prezentarea funciilor primitive i unitilor funcionale ale Calculatorului Numeric, posibiliti de realizare a acestora.

1.1 Calculator Numeric - Sistem de prelucrare a informaiilor

Vom considera informaia o noiune primar, profund, similar noiunii de materie. Informaia poate fi regsit n ntregul ciclu material, ncepnd cu lumea cuantic i microscopic i continund cu lumea vie i sistemele tehnice. n legtur cu informaia, vom considera urmtoarele probleme: structurarea i reprezentarea; stocarea pe diferite suporturi de informaie; prelucrarea; transmiterea. n sistemele tehnice, informaia este reprezentat n principal sub form analogic i sub form discret (numeric). n mod corespunztor s-au dezvoltat sisteme tehnice de prelucrare a informaiilor, printre care calculatoarele analogice i calculatoarele numerice au un rol important. Dei calculatoarele analogice universale prezentau o serie de avantaje privind viteza de lucru, lucrul n timp real, supleea soluiilor unor probleme prin analogii, calculatoarele numerice au cunoscut o dezvoltare mult mai rapid n ultimii ani nlocuindu-le aproape n totalitate pe cele analogice. Datorit inovaiilor tehnologice i dezvoltrii circuitelor integrate pe scar larg i foarte larg s-a eliminat treptat handicapul privind viteza de lucru, precizia de reprezentare i prelucrare poate fi fcut orict de mare, iar posibilitile de structurare, reprezentare, i stocare a informaiilor sunt nelimitate. Desigur c informaiile sub form analogic pot fi n continuare prelucrate dup ce au fost n prealabil convertite n form numeric, rezultatele fiind supuse unei conversii inverse. Calculatoarele numerice se caracterizeaz prin faptul c asigur reprezentarea, stocarea, prelucrarea i transmiterea informaiilor sub forma discret, numeric. Astfel, mrimi electrice continue, cum ar fi tensiunea sau curentul electric pot fi memorate prin distingerea diferitelor valori ale acestor mrimi. Cu ct trebuie s se disting mai multe valori, cu att separarea dintre dou valori adiacente va fi mai mic i deci memoria va fi mai puin sigur n funcionare. Sistemul binar trebuie s disting doar dou valori, deci constituie metoda cea mai sigur de codificare numeric a informaiilor. Unitatea de informaie elementar este n acest caz cifra binar denumit "BIT". Un bit poate conine un "0" sau un "1". Exist unele calculatoare despre care se spune c folosesc sistemul zecimal, nu binar. De fapt se utilizeaz sistemul BCD - Binar Codificat Zecimal care const n reprezentarea cifrelor zecimale ntre 0 - 9 prin patru cifre binare, adic patru bii. Utiliznd 16 bii, pentru reprezentarea numrului 1992 vom obine, 0001 1001 1001 0010 n zecimal i 0111 1100 1000 n binar. Sistemul zecimal se utilizeaz doar la calculatoare cu aplicaii strict economice, financiare. Se observ c 16 bii pot reprezenta n zecimal numere cuprinse ntre 0 - 9999, deci 10000 de combinaii, pe cnd n binar se pot reprezenta 65536 combinaii diferite. Se poate spune deci c sistemul binar este mai eficient. Dar s analizm ce s-ar ntmpla dac cineva ar inventa un dispozitiv electronic, foarte sigur n funcionare, capabil s memoreze cifrele de la 0 - 9 prin mprirea domeniului de la 0V la 10V, n 10 intervale, de exemplu. Patru asemenea dispozitive ar putea memora 10000 de combinaii, adic valori ntre 0 - 9999. Utiliznd sistemul binar, aceleai 4 elemente ar putea memora 16 combinaii. Este evident c n acest caz sistemul zecimal ar fi mult mai eficient. O alt problem apare datorit faptului c informaia prezint dou aspecte: sintactic i semantic. Prin aspectul semantic al informaiei se neleg ideile ncapsulate, mesajele pe care le transmite, etc. Calculatoarele numerice n accepiunea clasic, sunt considerate principalele unelte pentru prelucrarea automat a informaiilor, ele fiind capabile s trateze informaiile numai sub aspect sintactic. Fr s cunoasc aspectul semantic al informaiilor pe care le prelucreaz, calculatoarele nu pot s ia decizii proprii, ele fiind condamnate s fac doar ceea ce a fost specificat n prealabil, precis i fr echivoc printr-o descriere care poart numele de algoritm. Prin algoritm se asigur i respectarea unui principiu de baz n prelucrarea automat a informaiilor, concordana aspectului sintactic cu cel semantic. Dificultile care apar n acest sens i-au determinat pe utilizatorii lui s afirme c, de multe ori, calculatoarele creaz mai multe probleme dect rezolv. Ideea c un calculator

nu poate face dect ceea ce i se spune este deja depit. La ora actual se fac eforturi din ce n ce mai mari pentru a reprezenta i prelucra cu ajutorul calculatoarelor informaii cu aspect semantic. Realizarea acestui deziderat n condiii de eficien acceptabile permite utilizarea calculatorului ntr-o manier cu totul nou. El este capabil s reprezinte i s prelucreze cunotine, s nvee din experiena anterioar, s mbunteasc sau s dezvolte noi metode de rezolvare a unor probleme.Oricum, multe probleme care implic prelucrarea unui volum mare de date, eventual cu limitri stricte de timp, pot s fie rezolvate numai cu ajutorul calculatorului. n mod "clasic", aplicaiile calculatorului pot s fie grupate n aplicaii cu caracter tiinific care necesit precizie i vitez mare de efectuare a calculelor matematice i aplicaii cu caracter de gestiune care necesit pstrarea i regsirea rapid a informaiilor. Pe de alt parte, aplicaii de tipul prevederii timpului probabil sau proiectrii unui avion necesit att numeroase calcule stiinifice, ct i manipularea unui volum foarte mare de informaii. s considerm de exemplu cteva tipuri de aplicaii specifice calculatoarelor: Calcule tiintifice: n experimentele stiinifice i de laborator calculatoarele pot s fie utilizate pentru culegerea, validarea i prelucrarea datelor preluate de la diferii senzori sau aparate. Domenii tipice: telemetrie, radiolocaie, spectrografie, etc. Proiectare asistat: Calculatorul este deosebit de util n multe domenii de proiectare ca de exemplu: proiectarea mtilor pentru VLSI, proiectarea circuitelor imprimate, proiectarea fuzelajelor i aripilor de avion, a caroseriilor de automobil, etc. Conducerea proceselor: Calculatorul este o unealt foarte util n fabricarea i controlul automat al produselor, de exemplu: comanda mainilor unelte, controlul proceselor de difuzie i ncapsulare ntr-o fabric de circuite integrate, conducerea roboilor din celulele flexibile de fabricaie, etc. Simulare: Datorit utilizrii calculatoarelor a aprut ntre cercetarea fundamental i cea aplicativ un nou nivel de cercetare, prin simulare. Acest tip de abordare este foarte util pentru situaiile n care experimentele pot s fie prea costisitoare n condiii reale, periculoase sau chiar imposibil de realizat. S considerm de exemplu cazul n care se dorete studiul efectului erupiei unui vulcan. Evident, vulcanul nu poate s fie convins s erup, dar se poate realiza o simulare n care s se in seama de ct mai muli factori care caracterizeaz fenomenul natural. Instruire asistat: Calculatorul poate s constituie un instrument foarte util n creterea eficienei procesului de predare - nvare - verificare, pentru stimularea gndirii creative, logice. 1.2 Modelul structural al unui calculator numeric Att funcional, ct i prin construcie, calculatorul este un sistem logic. O caracteristic esenial a unui astfel de sistem este posibilitatea de a-i descrie funcionarea independent de detaliile concrete de realizare fizic. Astfel, indiferent de domeniul de aplicaii, calculatorul poate s fie privit ntr-o prim aproximaie ca o cutie neagr avnd o comportare determinist, predictibil, primind la intrare date pe care le prelucreaz i genernd la ieire rezultate. Sistemul din Fig. 1.1 poate s fie interpretat ca realiznd o aplicaie (transformare) din domeniul de intrare n domeniul de ieire, comportarea sa fiind materializat n relaiile dintre intrri, ieiri i timp. Prin rafinri succesive ale acestui model foarte general se pot obine modele funcionale sau constructive cu diferite grade de detaliere. Sistemul are un set de terminale de intrare "I" i un set de terminale de ieire "E".
I CN E

Fig. 1.1 Modelul general al unui calculator numeric Fiecare terminal poate s fie considerat n una din cele dou stri: activ sau inactiv, respectiv ca avnd valoarea 1 sau 0. O combinaie de uniti i zerouri formeaz un vector binar. Cutia neagr poate fi

instruit ce s fac artnd care este vectorul de ieire pentru un vector de intrare fixat. Dup ce se repet acest experiment pentru mai muli vectori I/E (perechi de vectori de intrare - ieire) ar fi de dorit ca automat cutia neagr s arate vectorul corect la ieire cnd se fixeaz un vector dat la intrare. Ideal ar fi ca dac exist o regul clar de coresponden ntre vectorii de intrare i cei de ieire, calculatorul numeric s extrag aceast regul i s-o pstreze n conexiunile interne astfel nct s genereze vectorul de ieire corect pentru un vector pe care nu l-a mai avut la intrare nainte. n acest model calculatorul numeric apare ca un sistem definit prin mulimea perechilor de intrri-ieiri care se afl permanent ntr-o anumit stare, definit ca un marcaj (sau conexiuni) ataat unei submulimi de perechi de intrri-ieiri care satisfac anumite condiii de consisten. Aceast submulime va fi considerat un subsistem. n general nu este practic s se enumere toate perechile de I/E care definesc un astfel de sistem preferndu-se caracterizarea acestuia printr-o relaie de intrare-ieire, adic printr-un algoritm sau o ecuaie care se poate utiliza pentru generarea tuturor perechilor de I/E, care-i aparin. Pe de alt parte, un astfel de sistem nu implic ntotdeauna un vector unic de ieire. Dimpotriv, unui vector de intrare i va corespunde un numr de vectori de ieire posibili, fiecare coninnd un rspuns posibil al vectorului de intrare dat. Aceast neunicitate a rspunsului la o intrare dat reflect dependena ieirii att de intrare ct i de starea iniial (sau starea precedent). Aceast neunicitate a dependenei ieirii de intrare arat c un astfel de sistem este mai degrab o relaie dect o funcie sau un operator. Relund modelul din Fig. 1.1, se poate constata c relaia dintre vectorii de intrare i ieire este prea complicat pentru a fi ncapsulat ntr-un sistem cu conexiuni directe ntre intrri i ieiri. Astfel este necesar introducerea unor nivele intermediare n cutia neagr formate din uniti funcionale capabile s extrag diferite caracteristici ale vectorilor de intrare, care, eventual, s genereze ieirea corect. O prim observaie trebuie fcut n legtur cu mulimile de intrri i ieiri. Acestea nu sunt ntotdeauna sub form de vectori formai din 1 i 0 i nu au structura adecvat unui anumit tip de prelucrare. Este astfel necesar prevederea unui subsistem de intrare care asigur preluarea datelor din mediul extern i aducerea lor la o form standard de intrare n vederea prelucrrii. Dup prelucrare, datele trebuie transmise spre mediul extern n forma cerut, ceea ce implic necesitatea unui subsistem de ieire. Se obine, n acest mod, un model structural al unui calculator numeric, prezentat n Fig. 1.2.
I Subsistem de intrare Subsistem de prelucrare Subsistem de iesire E

fluxul datelor fluxul informatiilor de control care asigur interactiunea corect a celor trei subsisteme

Fig. 1.2 Modelul structural al unui calculator numeric Subsistemul de intrare trebuie s asigure att conversia n semnale electrice a datelor reprezentate pe diferite suporturi n mediul extern ct i transformarea acestor semnale n vectori binari cu structura cerut de subsistemul de prelucrare. n mod similar subsistemul de ieire trebuie s asigure operaii similare, n ordine intern, pentru rezultatele trimise spre mediul extern. Subsistemul de prelucrare trebuie s asigure reprezentarea intern, stocarea i prelucrarea datelor i schimbul de informaii cu subsistemul de I/E. Se obine astfel structura unui calculator numeric cum este cea reprezentat n Fig. 1.3.

Unitatea Memorie central Echipament periferic de intrare

Calculator numeric

Interfata intrare

Interfata iesire

Echipament periferic de iesire

fluxul datelor fluxul informatiilor de control care asigur interactiunea corect a celor trei subsisteme

Fig. 1.3 Structura unui calculator numeric Subsistemul de prelucrare, mpreun cu interfaa de I/E formeaz calculatorul propriu-zis. Subsistemul de prelucrare constituie nucleul central al calculatorului numeric, motiv pentru care va fi denumit unitatea central (UC). Unitatea central este format dintr-un subsistem de memorie intern i o unitate central de prelucrare(UCP). Din considerente de eficien i cost, memoria este n general organizat pe dou nivele. O memorie de capacitate mic i vitez mare, asociat direct unitii centrale de prelucrare, sau chiar fcnd parte din aceasta, format din registre rapide, i o memorie mai lent, de capacitate mare. Unitatea central de prelucrare are att rolul de a asigura funciile pentru prelucrri aritmetice i logice de baz ct i de a coordona transferul informaiilor ntre elementele componente. Se obine astfel, n Fig. 1.4, schema bloc a unui sistem de calcul care include calculatorul numeric propriu-zis, echipamentele periferice de I/E i sistemul de programe care asigur o utilizare eficient a ntregului sistem.
Calculator numeric Unitatea centrala Memorie Registrii Unitatea centrala de prelucrare Unitatea aritmetica logica Unitatea de comanda

Echipament periferic de intrare

Interfata intrare

Interfata iesire

Echipament periferic de iesire

fluxul datelor fluxul informatiilor de control care asigur interactiunea corect a celor trei subsisteme

unitatea central + interfa de intrare i de ieire calculator numeic + echipament periferic + programe de baza

= calculator numeric = sistem de calcul

Fig. 1.4 Schema bloc a unui sistem de calcul Conexiunile efective ntre diferite elemente funcionale ale unitii centrale de prelucrare, ntre unitatea central de prelucrare i memorie, ntre unitatea central i interfeele de I/E se pot face n diferite moduri, obinndu-se n mod corespunztor diferite structuri de calculator numeric. Astfel dac se consider fluxul informaiilor ntre unitatea central i interfeele de I/E se obin trei tipuri de transferuri de I/E : Subsistem de I/E cu transfer programat; Subsistem de I/E cu transfer prin acces direct la memorie; Subsistem de I/E cu transfer prin canal de I/E.

1.2.1

Calculator numeric cu sistem de I/E cu transfer programat Schema bloc este artat n Fig. 1.5
Memorie

Subsistem intrare

Unitate centrala de prelucrare

Subsistem iesire

Fig. 1.5. Calculator numeric cu transfer programat n aceast schem de organizare datele de I/E circul direct prin registrele unitii centrale de prelucrare sub controlul unitii centrale din unitatea central de prelucrare. Transferul se efectueaz cuvnt cu cuvnt i pentru fiecare cuvnt transferat unitatea central de prelucrare execut o secven de instruciuni, numit program de I/E. Soluia este n general simplu de implementat, i ca resurse hardware, i ca efort de programare, dar se preteaz numai la echipamente cu volum de date i rat de transfer sczute. Calculator numeric cu sistem de I/E cu transfer prin acces direct la memorie n cazul unor echipamente periferice cu viteza de transfer ridicat, discuri i benzi magnetice de exemplu, programul care se execut pentru fiecare cuvnt transferat poate s fie prea lung, ceea ce ar duce la pierderea unor cuvinte. Pe de alt parte, volumul de date fiind ridicat, unitatea central de prelucrare ar fi mult ocupat numai cu transferul datelor de I/E. n astfel de situaii se utilizeaz transferul prin acces direct la memorie (DMA - Direct Memory Access). Fluxul informaiilor n acest caz este artat n Fig. 1.6.
Memorie Unitatea centrala de prelucrare Subsistem de I/E I/E

1.2.2

Modul comanda acces direct la memorie

Fig. 1.6 Calculator numeric cu transfer prin acces direct la memorie Dup iniierea unui transfer, untatea central de prelucrare poate continua cu alte activiti. Transferul ntregului bloc se execut sub controlul modulului de acces direct la memorie. La sfritul transferului sau la apariia unor evenimente, de exemplu erori de transfer, se cere din nou intervenia unitii centrale de prelucrare. 1.2.3 Calculator numeric cu sistem de I/E cu transfer prin canal de I/E Un grad i mai mare de independen ntre unitatea central de prelucrare i subsistemul de I/E se obine prin prevederea unui procesor specializat, numit canal de I/E, capabil s execute transferul a unei nlnuiri de blocuri prin acces direct la memorie, i s rezolve unele situaii de eroare aprute n cadrul transferului, fr intervenia unitii centrale de prelucrare. Schema bloc este artat n Fig. 1.7.

Memorie

Unitatea centrala de prelucrare

Subsistem de I/E

I/E

Canal de I/E

Fig. 1.7 Calculator numeric cu transfer prin canal de I/E Procesorul de canal execut programe de canal pregtite n memorie de ctre unitatea central de prelucrare. Programele de canal specific toi parametrii transferului i pot exista mai multe programe de canal nlnuite. Productivitatea sistemului este mult mai mare n acest caz. Modelul funcional al unui calculator numeric n paragraful precedent s-a introdus modelul structural al unui calculator numeric prin rafinarea succesiv a unui model foarte general de sistem dinamic specificat ca o relaie ntre mulimea intrrilor i ieirilor. n final s-a artat c sistemul de calcul este format din resursele fizice care alctuiesc partea hardware i un sistem de programe de baz i aplicaii care alctuiesc partea de software a sistemului de calcul. Exist i un nivel intermediar ntre hardware i software, denumit firmware, care const din software incorporat n hardware n momentul fabricaiei calculatorului. Programele care controleaz direct resursele hardware, care nu se schimb atta timp ct structura hardware nu se schimb i programele care trebuie s fie prezente n calculator imediat dup alimentarea cu energie a calculatorului constituie partea de firmware.
Supervizor(CLI), Interfata cu utilizatorul Aplicatii, Biblioteci de programe Linbaje de programare Executiv, Sistem de operare, Biblioteci de programe de baza Nucleu sistem de operare (masina de baza) Masina fizica (hardware) Unitati functionale Dispozitive si circuite electronice UAL, MEM, INTERFETE Unitati functionale + structuri de interconectare BIOS MSDOS, IBMDOS PASCAL,, FORTRAN, C, MODULA2 WS, WORD, dBASE, AUTOCAD Command.com, nc, Windows, XTG

1.3

Fig.1.8. Modelul funcional al unui calculator numeric De fapt partea de hardware i cea de software sunt echivalente. Orice operaie efectuat prin software poate fi implementat direct n hardware i orice instruciune efectuat prin hardware poate fi simulat prin software. Decizia de a implementa anumite funcii n hardware i altele n software este luat avnd n vedere anumii factori cum ar fi: costul, viteza de prelucrare, raportul performane/cost, sigurana n funcionare i frecvena unor modificri posibile. La primele calculatoare aceast decizie era simplu de luat. n hardware erau implementate cteva funcii foarte simple de tipul: adun dou numere ntregi, salt la o alt instruciune. Toate celelalte operaii erau realizate explicit prin software,

aceasta din cauza constrngerilor tehnologice existente. Pe msura evoluiei tehnologiei a avut loc o tendin invers. Proiectanii de hardware au selectat din ce n ce mai multe funcii ce erau executate suficient de frecvent motivnd implementarea lor n hardware pentru a fi executate mult mai repede. Astfel la ora actual exist circuite specializate care efectueaz calcule cu numere reale cu precizie foarte mare, procesoare grafice care printr-o simpl comand execut o transformare a unei figuri complexe etc. Orict de complexe ar fi funciile realizate n hardware, utilizatorul va dori s promoveze operaii i mai complexe prin software. Astfel, din punctul de vedere al utilizatorului sistemul de calcul este privit ca o ierarhie de uniuni virtuale, fiecare oferindu-i faciliti diferite de programare. Modelul funcional prezentat n Fig.1.8 reflect att organizarea sistemului de calcul ct i funcionarea acestuia din punctul de vedere al fluxului informaiilor urmrit de la programul utilizatorului pn la obinerea informaiilor dorite. n literatura de specialitate exist i modele similare cu acesta i altele destul de diferite. n acest model s-a urmrit pe de o parte aspectul funcional, nivelele ierarhice fiind alese nct s reflecte ct mai bine fluxul datelor i aciunilor n sistemele moderne de calcul, iar pe de alt parte aspectul didactic, fiecare nivel ierarhic fiind obiectul unor cercuri clar delimitate, prin coninut i planificare n timp. NIVELUL 1. - Dispozitivele i circuitele electronice reflect att gradul de integrare tehnologic ct i clasa de performane n care se ncadreaz calculatorul. Astfel, un calculator bazat pe circuite ECL (circuite logice cu cuplaj prin emitor) va avea o vitez de prelucrare ridicat, fiind destinat unor aplicaii complexe, cu multe calcule. Un calculator bazat pe microprocesoare 80386 i 80387 i memorii de 1-2 bii pe pastil va fi un calculator performant realizat ntr-o tehnologie avansat. NIVELUL 2. - Unitile funcionale reflect ntr-o bun msur modularitatea sistemului, poziionarea i implementarea funciilor primitive n uniti funcionale avnd n vedere criterii funcionale, constructive, i aspecte privind testabilitatea. La acest nivel nc nu este posibil programarea calculatorului. Este posibil ns microprogramarea. Diferite uniti funcionale conin programe implementate sub form de firmware. Astfel unitatea central de prelucrare poate conine programe firmware pentru controlul componentelor din care este alctuit, programe pentru meninerea configuraiei de baz, pentru cazul de timp real al calculatorului, programe de depanare, etc. Un canal de I/E pentru disc include programe de testare a subsistemului de discuri magnetice, programele de I/E de nivel sczut, programarea circuitelor integrate pe scar larg care intr n componena sa. NIVELUL 3. - Maina fizic reprezint, mpreun cu echipamentele de I/E, partea de hardware propriu-zis a calculatorului. Acest nivel reflect structura i organizarea intern a calculatorului, modul de interconectare i interaciunile dintre unitile funcionale, fluxul datelor de I/E. De asemenea acest nivel reflect i arhitectura calculatorului aa cum este el vzut de un programator la nivelul funciilor primitive . NIVELUL 4. - Maina de baz reprezint calculatorul propriu-zis. Nucleul sistemului de operare trebuie vzut mai mult ca firmware dect ca software i este format dintr-o colecie de programe orientate pe maina fizic i care ofer programatorului de sistem o main de baz mai evoluat, uniform i stabil n timp, primind modelul de acces la funciile primitive. Astfel modificrile din nivelele 1, 2 i 3 vor fi preluate de acest nivel fr a fi simite de nivelele ierarhice superioare. Acest nivel asigur n principal funciile de I/E de baz (BIOS la PC) i funcii de acces direct la resursele fizice pentru testarea i punerea la punct a programelor. NIVELUL 5. - Executivul sistemului de operare reprezint o colecie de programe de baz care asigur pe de o parte o main ct mai eficient i comod de utilizat pentru programator i o utilizare ct mai eficient a resurselor hardware i software, pe de alt parte. Principalele funcii ale unui sistem de operare sunt: controlul ncrcrii i execuiei programelor, care asigur ncrcarea n memoria intern a programelor preluate din memoria extern, lansarea n execuie i supravegherea execuiei acestora; operaii de I/E mai evoluate, bazate pe funciile oferite de maina de baz;

gestiunea fiierelor, care asigur crearea, ntreinerea i utilizarea fiierelor de date pe suporturile externe (magnetice, optice, etc); gestiunea memoriei care asigur utilizarea i protecia memoriei interne n condiiile n care mai multe procese pot fi active la un moment dat n memorie; faciliti de dezvoltare a programelor privind programarea modular, deformarea; crearea, ntreinerea i utilizarea bibliotecilor de programe de baz i aplicaii. NIVELUL 6. Limbaje de programare. La acest nivel am situat limbajele de programare indiferent c sunt de nivel ridicat sau sczut, deoarece prin intermediul acestora programatorul are la dispoziie un mod esenial de comunicare cu calculatorul. Fiecare limbaj are un vocabular de aproximativ 100 de cuvinte i simboluri i este bazat pe o gramatic strict definit, fr excepii. Propoziiile dintr-un limbaj pot fi uor traduse n propoziii dintr-un alt limbaj. Operaia de conversie a unui program dintr-un limbaj n altul se numete translatare. Programul original se numete program surs i este scris n limbajul surs. Att limbajul surs ct i limbajul destinaie, n care este translatat programul, definesc nivelele mainii virtuale ntr-o schem similar celei din Fig.1.8 dar mai detaliat. Dac ar exista un procesor care s interpreteze direct limbajul surs nu ar mai fi nevoie de translatare. n prezent exist peste 100 de limbaje de programare clasificate dup diferite criterii: Limbaje orientate main sau limbaje de nivel sczut, care necesit din partea programatorului o cunoatere bun a arhitecturii calculatorului. Limbajul ofer faciliti de acces direct la aceste resurse, permind dezvoltarea unor programe foarte eficiente din punct de vedere al utilizrii resurselor pe seama unui efort mai mare din partea programatorului. Limbajele orientate main pot la rndul lor s fie clasificate n: limbaje main sau limbaje obiect care implic specificarea direct n binar, octet, sau hexazecimal a instruciunilor ce se vor executa direct de ctre maina fizic. Programarea n limbaj main este rareori utilizat, doar eventual pentru cteva instruciuni, n procesul de depanare a programelor; limbaje de asamblare care pot fi privite ca o reprezentare simbolic pentru limbajele main. Instruciunile din programul surs n limbaj de asamblare au corespondent direct n limbaj main. Utilizarea unor nume simbolice pentru instruciuni i posibilitatea definirii unor adrese simbolice uureaz mult programarea fa de programarea n limbaj main. Translatarea programelor din limbaj de asamblare n limbaj main se face de ctre asamblor. limbaje orientate pe probleme sau limbaje de nivel nalt n care utilizatorul i scrie programele ntr-o manier mai apropiat de modul de comunicare uzual. Detaliile interne ale arhitecturii i structurii mainii de baz sunt mult mai puin vizibile dect n corpul limbajelor de asamblare. Limbajele de nivel nalt sunt mai eficiente pentru programator, dar, n general, mai ineficiente pentru main. Pentru a fi excutate de ctre maina de baz programele scrise n limbajele de nivel nalt sunt n general compilate, (translatate de ctre compilatoare), direct n limbaje obiect. La rndul lor limbajele de nivel nalt pot fi clasificate dup diferite criterii, cum ar fi: limbaje orientate pe calcule tiintifice, sau limbaje pentru calcule economice. Un alt model de clasificare ar fi dup modul n care programatorul verific aciunile ce trebuie efectuate n cursul executrii programului. Acestea pot fi: limbaje imperative, n care programatorul verific, pas cu pas, ce trebuie fcut pentru rezolvarea problemei respective sau limbaje declarative n care programatorul face doar o descriere, ntr-o form dat a soluiei la problem, de exemplu. Efectuarea unor studii statistice privind timpul de execuie al programului, a sugerat ideea utilizrii unor soluii mixte de dezvoltare a programelor. Mai nti programul este scris total n limbaj de nivel nalt, apoi este evaluat i msurat i anumite poriuni rescrise n limbaj de asamblare. Unele compilatoare chiar translateaz programul surs n limbaj de asamblare pentru a fi optimizat i apoi translatat n cod main. NIVELUL 7 - nivelul aplicaiilor reprezint nivelul cel mai important pentru utilizator. Bibliotecile de programe de la acest nivel reflect modul n care poate s utilizeze direct calculatorul n diferite aplicaii i uurina cu care pot fi create noi programe de aplicaii n domenii conexe sau total noi.

NIVELUL 8 - nivelul interpretorului limbajului de comand reprezint interfaa i modul de interaciune dintre utilizatori i sistemul de calcul. Selectarea unei aciuni poate fi greoaie, prin introducerea unei serii de texte de la consola operatorului, sau din contr, foarte eficient, prin simpla indicare a unei opiuni afiate pe ecranul consolei. Se observ din aceast analiz a modelului din Fig. 1.8 c un programator de un anumit nivel necesit o cunoatere detaliat a nivelelor inferioare doar dac pentru creterea eficienei se dorete elaborarea direct a unor funcii sau controlul direct al unor resurse de pe nivele inferioare. Uniti funcionale ale unui Calculator Numeric n paragrafele anterioare s-au considerat un model structural i unul funcional al unui calculator numeric din punctul de vedere al utilizatorului. Aa cum am mai afirmat, din punct de vedere logic partea de hardware i cea de software ale unui calculator numeric sunt echivalente, n sensul c orice funcie implementat n software poate s fie implementat n hardware i orice instruciune hardware poate s fie simulat prin software. De exemplu, dac pentru structurile cele mai simple de calculatoare singura instruciune aritmetic disponibil era instruciunea de adunare pentru numere ntregi fr semn, celelate operaii aritmetice realizndu-se prin programare pe baza operaiei de adunare, n prezent coprocesoarele aritmetice sunt capabile s realizeze chiar i calculul unor funcii transcendentale. Din punct de vedere metodologic este ns de preferat s analizm structura hardware separat de sistemul de programe de baz i aplicaii. n continuare vor fi trecute n revist unitile funcionale de baz ale unui calculator numeric. 1.4

1.4.1 Memoria
Pentru realizarea funciei de memorare se utilizeaz o mare varietate de dispozitive i echipamente mergnd de la dispozitive rapide, de mic capacitate i cu un cost ridicat, pn la echipamente lente, de mare capacitate i cu un cost sczut. Un calculator poate utiliza o ierarhie de astfel de dispozitive, avnd rapoarte foarte diferite ntre performane. n general se pot identifica ntr-un sistem de calcul trei tipuri de memorii: Memorii tampon foarte rapide formate din registrele interne ale unitii centrale de prelucrare i eventual din memorii "cache" de asemenea coninute n unitatea central de prelucrare, utilizate pentru a memora instruciunile sau datele care urmeaz s fie utilizate imediat. Memorarea informaiilor n acest tip de memorii se realizeaz n avans. Aceste memorii sunt de mic capacitate, dar au un timp de acces foarte mic. Memoria principal a calculatorului este n legtur direct cu unitatea central de prelucrare i este o memorie cu acces rapid avnd n general o capacitate cu aproximativ un ordin de mrime mai mare dact memoria tampon. Memoria auxiliar (extern) este realizat pe baza unor echipamente periferice de tip disc sau band magnetic, cu capacitate mare de memorare. Se consider c memoria auxiliar face parte din subsistemul de intrare / ieire. n continuare prin termenul de memorie ne vom referi la memoria principal. Memoria conine att instruciuni ct i date i este format, la nivelul cel mai de jos, din elemente cu dou stri stabile, deci elemente care pot s memoreze un bit de informaie. Organizarea biilor n memoria principal se face sub forma unor vectori formai din uniti elementare de memorie fiecare coninnd un numr fix de bii. Operaiile care se execut n legatur cu memoria sunt operaii de citire i scriere. La execuia unei astfel de operaii UCP are acces la coninutul unei locaii de memorie (cea mai mic unitate de memorie la care se poate face acces). Orice memorie are urmtoarele caracteristici principale: Fiecare locaie de memorie are acelai numr de bii; Fiecare locaie de memorie are asociat un numr care reprezint adresa prin care locaia respectiv poate s fie referit n mod unic; Spaiul de adrese este omogen i toate locaiile de memorie sunt echivalente din punctul de vedere al accesului.

Rezult deci c o locaie de memorie este caracterizat de dou elemente: adresa care reprezinta poziia relativ n cadrul memoriei (informaie fix) i coninutul, care este dat de valoarea numeric memorat n locaia respectiv la un moment dat. Coninutul unei locaii de memorie reprezint un cuvnt de memorie, numrul de bii din cuvnt reprezentnd lungimea cuvntului. Pentru fiecare calculator lungimea cuvntului este stabilit corespunztor tipului de aplicaii n care calculatorul din care face parte prin proiectare urmeaz s fie utilizat. De exemplu primul microprocesor 4004 care a fost proiectat pentru a realiza prelucrri n BCD (codul de reprezentare a numerelor Binar Codificat Zecimal) a fost proiectat pentru a lucra cu memorii avnd lungimea cuvntului de 4 bii. Succesorul su, 8008 care a fost proiectat pentru a lucra cu caractere reprezentate conform standardului ASCII (cod de 8 bii) a fost proiectat pentru a lucra cu memorii avnd lungimea cuvntului de 8 bii. Deoarece n prezent majoritatea calculatoarelor au lungimea cuvntului un multiplu de 8, se obinuiete specificarea acestei lungimi n numr de octei (un octet = 8 bii). Capacitatea memoriei unui calculator este dat de numrul de octei sau de cuvinte din care este format aceasta. De obicei aceast capacitate se exprim n K octei ( 1K = 1024 octei) sau n M octei ( 1M = 1024 K), n gigaoctei ( 1G = 1024 M) .a.m.d. Capacitatea maxim a memoriei adresate la un moment dat de ctre un calculator este dat de numrul maxim de adrese distincte care pot s fie generate de unitatea central de prelucrare. De exemplu dac un calculator poate s genereze adrese utiliznd 16 bii atunci el va putea s adreseze 216 adrese distincte. Structura bloc a unui subsistem de memorie este prezentat n Fig. 1.9.
n Adrese AM n Matrice de D memorie E C date __ SM __ S/C Unitate de control DM date

Fig. 1.9 Structura bloc a unui subsistem de memorie

tCC adrese ___ SM date tAC date disponibile a. diagrama de timp pentru citire (ciclu de citire)

tCS adrese ___ SM _ S/C

(ciclu de scriere)

date

b. diagrama de timp pentru scriere

Fig. 1.10. Diagrame de timp Registrele de adrese AM (Adrese Memorie) i de date DM (Date Memorie) pot s fie coninute n subsistemul de memorie sau fac parte din alte subsisteme care fac acces la memorie.

operand 1 operand 2

rezultat

Fig. 1.11 Schema bloc a unei uniti aritmetice i logice(UAL)

Din punctul de vedere al interconectrii unitii aritmetice i logice cu celelalte subansamble, de fapt din punctul de vedere al mecanismului de obinere a operanzilor i al furnizrii rezultatului, exist mai multe soluii posibile: 1. Utilizarea unei magistrale unice. Schema bloc de interconectare este prezentat n Fig. 1.12
magistrala date

T1

T2

Selectie operatie UAL n

Fig. 1.12 Interconectarea unitii aritmetice i logice cu o singur magistral n acest caz operanzii sunt preluai de ctre unitatea aritmetic i logic din dou registre temporare T1 i T2. Se observ c ncrcarea datelor n registrele T1 i T2 i transmiterea rezultatului se face prin intermediul unei magistrale locale a unitii centrale de prelucrare. Sursele pentru operanzi i destinaia pentru rezultat pot s fie reprezentate de orice registru sau locaie de memorie. nainte de efectuarea operaiei valorile operanzilor trebuie s fie ncrcate n registrele temporare T1 i T2. Se observ c aceast ncrcare nu se poate realiza dect secvenial. Dac sursele celor doi operanzi sunt reprezentate de locaii de memorie iar rezultatul trebuie s se depun de asemenea n memorie, avnd n vedere c accesul la memorie nu se poate face dect pentru citirea / scrierea unei singure date la un moment dat, timpul necesar pentru efectuarea operaiei aritmetice sau logice este dat practic de timpul necesar pentru cele 3 accese la memorie. Dac operanzii sunt disponibili n registrele unitii aritmetice i logice atunci din cauza transferului secvenial al operanzilor n registrele temporare, execuia instruciunii va dura mai mult dect n cazul n care exist o legatur direct ntre registrele care conin operanzii i unitatea aritmetic i logic. 2. Utilizarea unui registru acumulator. Schema bloc de interconectare este prezentat n Fig.1.13. n acest caz unul dintre opereranzi este preluat ntodeauna dintr-un registru special numit registru acumulator. De asemenea rezultatul operaiei este memorat n registrul acumulator nlocuind vechiul coninut. Se observ c n acest caz numai sursa unuia dintre operanzi poate s fie constituit de ctre un registru din unitatea centrtal de prelucrare sau de ctre o locaie de memorie. Deoarece al doilea operand este preluat dintr-un registru al unitii centrale de prelucrare sau din registrul de date al memoriei, structura nu mai necesit utilizarea unui registru temporar. Viteza execuiei instruciunilor aritmetice i logice este mai mare n acest caz deoarece la timpul necesar pentru execuia efectiv a operaiei nu se mai adaug dect timpul necesar pentru pregtirea unui singur operand.
Magistrala de date

Acumulator

Fig. 1.13. Interconectarea unitii aritmetice i logice cu registru acumulator

De fapt aceast structur se poate generaliza i se pot considera structuri care utilizeaz mai multe registre ca registre acumulator. 3. Interconectarea unitii aritmetice i logice cu trei magistrale. Schema bloc de interconectare este prezentat n Fig. 1.14.

Mag A

Mag B

UAL Mag C

cop

Fig. 1.14 Interconectarea unitii aritmetice i logice cu 3 magistrale n acest caz fiecare operand i rezultatul circul pe alt magistral de date. Operanzii sunt preluai direct de pe cele dou magistrale de date. Rezultatul este transmis pe cea de a 3-a magistral. Ca i n prima soluie att sursele operanzilor ct i destinaia rezultatului operaiei pot s fie registre ale unitii centrale de prelucrare sau locaii de memorie. Deoarece obinerea operanzilor se poate face independent pentru fiecare n parte, n cazul n care nu amndoi operanzii provin din memorie se observ c cei doi operanzi se pot obine n paralel. Deci pentru astfel de situaii durata execuiei instruciunilor poate s fie mai mic. n cazul n care amndoi operanzii sunt preluai din memorie durata aducerii operanzilor este similar cu aceea obinut pentru prima structur. O variant a acestei soluii se obine dac se consider c ntodeauna rezultatul va nlocui unul dintre operanzi. n acest caz rezult o structur cu dou magistrale. 1.4.3 Unitatea de comand Execuia unui program rezult prin realizarea unei secvene de aduceri i execuii de instruciuni din memorie. Adresa de memorie a urmtoarei instruciuni care urmeaz s se execute este memorat ntr-un registru special din untatea central dc prelucrare, registru numit contor program (CP). Cnd se iniiaz execuia unui program, n contorul program se ncarc adresa primei instruciuni. n continuare se va executa un ciclu de operaii care poate s fie descris de organigrama din Fig. 1.15.

recunoastere tip instruciune

Nu

instructiune cu operanzi?

Da

Da

operanzi in memorie?

Nu

pregateste operanzi

se executa instructiunea

Nu

instructiune cu rezultat in memorie?

Da

memoreaza rezultat

se executa instructiunea

Fig 1.15 Fazele execuiei unei instruciuni Se observ c n timpul ciclului de aducere i execuie a instruciunii contorul program este actualizat astfel nct ori de cte ori se ncepe ciclul unei noi instruciuni coninutul acestui registru s reprezinte adresa primului cuvnt din instruciune. Evident instruciunile de control al execuiei programului pot s aib ca efect actualizarea coninutului registrului contor program conform adresei la care se face saltul. Se observ c din punctul de vedere al interpretrii realizate prin execuia programului de ctre calculator, un program const din date i instruciuni, identificarea instruciunilor se poate face numai dac se cunoate o adres de instruciune ncepnd de la care se poate face o identificare semnificativ a instruciunilor. Unitatea de comand (UCd) are rolul de a decodifica i interpreta instruciunile genernd semnale de comand care asigur fluxul de date corespunztor execuiei instruciunii respective. Rezult deci, c structura unitii de comand este realizat pe baza unitilor funcionale pe care aceasta trebuie s le comande i pe baza setului de instruciuni pe care unitatea central de prelucrare trebuie s-l execute. n general o unitate de comand este un automat complex. Exist dou soluii de implementare a UCd i anume sub form de uniti de comand convenionale i uniti de comand microprogramate. Unitile de comand convenionale sunt realizate de obicei sub forma unei reele de automate codificate sau complet decodificate.

Setul de instruciuni Orice calculator este controlat de un program, care este format dintr-o secven de instruciuni. Fiecare instruciune specific o operaie care urmeaz s fie executat de ctre unitatea central de prelucrare. n general instruciunile unui calculator pot s fie clasificate n cteva clase de baz : 1. Instruciuni pentru transferul datelor. Sursa i respectiv destinaia unui astfel de transfer pot s fie constituite de o locaie de memorie, un registru, sau elemente ale subsistemului de intrare/ieire. 2. Instruciuni aritmetice. Aceste instruciuni execut operaii aritmetice asupra unor date. n acest caz sursa operanzilor i destinaia rezultatului pot s fie memoria sau registrele din unitatea central de prelucrare. Complexitatea operaiilor care formeaz setul instruciunilor aritmetice difer mult pentru diferite calculatoare. Astfel, cel mai simplu set posibil de instruciuni aritmetice ar putea s conin numai o instruciune de incrementare a coninutului unui registru sau a coninutului unui cuvnt din memorie. Pe baza unei astfel de operaii se poate construi o aritmetic utiliznd numere fr semn. n realitate chiar i cele mai elementare calculatoare "tiu" s execute operaia de adunare ntre dou numere (eventual fr semn). La captul cellalt al scrii complexitii operaiilor aritmetice se gsesc calculatoarele n al cror set se gsesc cele patru operaii aritmetice care se pot efectua asupra numerelor cu sau fr semn reprezentate n virgul fix (numere ntregi) sau n virgul mobil (numere reale). 3. Instruciuni logice i de deplasare. Aceste instruciuni execut operaii logice (de tip I, SAU, NU, SAU EXCLUSIV) asupra unor date. Ca i la instruciunile aritmetice sursa operanzilor i destinaia rezultatului pot s fie memoria sau registrele din unitatea central de prelucrare. Toate calculatoarele care conin n setul lor de instruciuni instruciuni logice conin cel puin instruciuniile I, SAU i NU cu toate c dup cum se tie disponibilitatea unei operaii I-NU sau SAU-NU ar fi suficient pentru realizarea oricrei prelucrri de tip logic. 4. Instruciuni de comparaie. Aceste instruciuni pot fi considerate drept instruciuni aritmetice (ca efect al execuiei unei astfel de instruciuni starea unitii centrale de prelucrare este actualizat conform diferenei dintre cei doi operanzi referii n instruciune i acesta este singurul efect al execuiei instruciunii), sau ca instruciuni logice (avnd n vedere semnificaia operaiei de comparaie). 5. Instruciuni pentru controlul execuiei programelor. Aceste instruciuni permit schimbarea dinamic a secvenei n care se execut instruciunile din program producnd un salt necondiionat sau condiionat la o adres din program specificat n instruciune. Instruciunile sunt memorate n memorie mpreun cu datele asupra crora opereaz. Unitatea central de prelucrare aduce o instruciune, determin ce prelucrri trebuie s se efectueze i le execut. Fiecare calculator are forma sa proprie de reprezentare a instruciunilor, dar orice instruciune conine dou informaii: codul operaiei care specific operaia care urmeaz s se execute: adunare, comparaie, salt, etc; unul sau mai muli specificatori de operanzi care descriu modul n care se obin operanzii instruciunii i eventual unde se memoreaz rezultatul acesteia. n memorie o instruciune poate s ocupe unul sau mai multe cuvinte. Exist calculatoare la care numrul de cuvinte utilizat pentru reprezentarea instruciunilor este fix, n timp ce la alte calculatoare numrul de cuvinte utilizat pentru reprezentarea unei instruciuni depinde de tipul acesteia. De exemplu o instruciune a unui calculator ipotetic care trebuie s adune coninutul cuvntului de memorie aflat la adresa 100 cu cel care se gsete la adresa 200, memornd rezultatul la adresa 250 ar putea s fie descris n memorie cu ajutorul a 4 octei dispui la adrese consecutive, dup cum se arat n Fig.1.16. ADD 100 200 250 Fig. 1.16 Structura unei instruciuni n memorie

n memorie codul operaiei i adresele operanzilor, ca de altfel i datele, "arat la fel" i numai modul n care unitatea central de prelucrare interpreteaz un numr l face pe acesta s reprezinte codul unei operaii, adresa unui operand sau o dat. 1.4.4 Subsistemul de intrare ieire Rolul subsistemului de intrare / ieire este de a conecta echipamentele periferice la calculator. Prin intermediul acestor echipamente periferice se realizeaz de fapt schimbul de informaii cu lumea extern care poate s fie reprezentat de operatori umani, alte procesoare, memorii externe, etc. Cele mai obinuite echipamente periferice de intrare / ieire sunt: terminalele de introducere / afiare date, unitile pentru discuri magnetice, unitile pentru benzi magnetice, plotere, imprimante, etc. Se observ c aceste echipamente sunt caracterizate de forme foarte diferite de reprezentare a informaiei i de viteze diferite de transfer a informaiei. De asemenea echipamentele periferice de tip disc sau band magnetic pot s transfere la un moment dat blocuri mari de date, n timp ce echipamentele de tip terminal pot s transfere la un moment dat un singur caracter. Corespunztor n subsistemele de intrare / ieire sunt coninute interfee pentru cuplarea echipamentelor periferice. Rolul acestor interfee este de a realiza conversia de format i de vitez ntre unitatea central de prelucrare i echipamentele periferice. 1.4.5 Limbaje de programare Un calculator poate s fie utilizat pentru a rezolva orice problem pentru care se poate defini precis o rezolvare. Prin definire se nelege n acest caz posibilitatea descompunerii problemei (i deci a rezolvrii) n subprobleme a cror rezolvare presupune execuia unor comenzi specifice calculatorului. Cu alte cuvinte calculatorul poate s fie utilizat pentru orice problem pentru care rezolvarea poate s fie descris sub forma unui algoritm n termenii operaiilor specifice calculatorului. S considerm de exemplu problema realizrii unui dicionar romn - englez. Problema se rezolv foarte simplu, pentru c ceea ce se cere este de fapt cutarea unei perechi de cuvinte ntr-o list de echivalene. Dificultile reale legate de rezolvarea acestei probleme sunt cele referitoare la construirea dicionarului (formarea bazei de date) i cele referitoare la regsirea rapid a cuvntului cutat pentru cazul n care dicionarul considerat este mare. Pe de alt parte, problema traducerii din limba romn n limba englez, bineneles cu pstrarea semnificaiei textului, este o problem foarte dificil din cauza nelesului ascuns al unor combinaii de cuvinte n funcie de context. Din acest motiv algoritmizarea acestei probleme este nc un subiect de cercetare. De altfel, acesta este i motivul pentru care att n fazele de specificare a rezolvrii unor probleme cu ajutorul calculatorului, ct i pentru specificarea algoritmilor chiar i pentru cazuri n care interlocutorul este omul, se prefer utilizarea, n locul limbajului natural, a unor limbaje artificiale pentru care nelesul fiecrei construcii este precis (vezi pseudocodul, organigramele, i alte forme de specificare a algoritmilor). Desigur, ideea creerii unor limbaje artificiale nu este nou, n sensul c apariia ei nu este legat de apariia calculatoarelor. Limbajul matematic, formulele chimice nu reprezint altceva dect limbaje artificiale create n scopul comunicrii n condiiile anulrii oricror posibiliti de apariie a unor formulri ambigue. Apariia calculatoarelor a dus ns la apariia unei clase speciale de limbaje artificiale i anume limbajele de programare. Un limbaj de programare este un limbaj artificial utilizat pentru comunicarea cu calculatorul. Un limbaj de programare, ca de altfel orice limbaj, este definit prin: vocabular, sintax i semantic. Vocabularul unui limbaj este format din semnele i cuvintele din care se pot forma propoziii. Sintaxa unui limbaj este format din totalitatea regulilor de bun formare a propoziiilor, iar semantica unui limbaj este dat de totalitatea regulilor prin care se asociaz semnificaii propoziiilor. n general un calculator este o main care "tie" s execute un set de operaii simple numite instruciuni. Un program nu este altceva dect o secven de instruciuni, efectul execuiei acestei secvene de instruciuni fiind o anumit prelucrare de informaie. Instruciuniile "elementare" pe care un calculator poate s le "neleag" i deci s le execute sunt n general instruciuni foarte simple ca de

exemplu: adun dou numere, compar un numr cu altul, mut o informaie dintr-o parte a memoriei calculatorului n alta, etc. Setul instruciunilor elementare pe care calculatorul le "nelege" direct mpreun cu regulile de scriere a unor secvene de astfel de instruciuni formeaz un limbaj de programare. Acest limbaj este denumit de obicei limbaj main, fiind specific mainii respective. Exist peste o sut de limbaje de programare iar procesul de creare a noi limbaje de programare continu. n diferite perioade ale istoriei calculatoarelor diferite limbaje de programare au fost considerate ca fiind "cele mai bune". De fapt dac facem abstracie de criteriul: " cel mai bun limbaj este cel pe care l tiu", criteriul conform cruia tipul problemei determin tipul limbajului n care se descrie rezolvarea problemei, pare cel mai corect. O cerin fundamental a oricrui limbaj de programare este asigurarea unei comunicaii eficiente i comode ntre om i calculator. Problema este ns c ceea ce este comod pentru calculator este foarte nepotrivit pentru utilizator i invers. Pe de alt parte, dac la nceput elementul cel mai "pretenios" dintre cei doi parteneri era calculatorul i utilizatorul a trebuit s se adapteze, folosind limbaje de programare foarte apropiate de nivelul operaiilor pe care le poate executa calculatorul, pe msur ce progresele tehnologice au permis, au nceput s se dezvolte limbaje de programare concepute n ideea avantajrii utilizatorului. De fapt orice calculator "tie" s execute un set de operaii, s le zicem elementare. Dac descrierea algoritmului de rezolvare a problemei se face chiar n termenii acestor operaii elementare folosind coduri numerice, se spune c se face programarea n cod main. Desigur programarea unui calculator la acest nivel este foarte dificil i oamenii au scpat relativ repede de acest nivel. Se consider de fapt c exist dou nivele de limbaje de programare: limbaje de programare de nivel sczut i limbaje de programare de nivel nalt. Limbajele de programare de nivel sczut se numesc i limbaje de asamblare. Fiecare tip de calculator are propriul su limbaj de asamblare. O operaie n limbaj de asamblare corespunde unei operaii n limbaj main, deosebirea fiind c la nivelul limbajului de asamblare specificarea operaiilor se face utiliznd nume simbolice (ADD, MOV, JMP, JNZ, etc) n timp ce la nivelul limbajului main specificarea operaiilor se face utiliznd coduri numerice. Suplimentar fa de limbajul main un limbaj de asamblare dispune i de alte faciliti specifice (pseudoinstruciuni, macroinstruciuni, etc). n cazul limbajelor de nivel superior o operaie corespunde de obicei cu o secven de operaii n limbaj main, cu alte cuvinte puterea (complexitatea) operaiilor puse la dispoziia programatorilor este mult mai mare. Avnd n vedere observaia c numrul de linii de program scrise i verificate pe calculator ntr-un interval de timp dat de ctre un programator nu depinde de limbajul de programare utilizat, este evident c cu ct puterea operaiilor puse la dispoziie de ctre limbajul de programare este mai mare, complexitatea problemelor rezolvate cu acelai efort de ctre un acelai programator este mai mare. Un alt avantaj al limbajelor de programare de nivel nalt este c n majoritatea cazurilor programele scrise n astfel de limbaje sunt independente de particularitile calculatoarelor pe care sunt utilizate. Aa cum s-a mai artat, fiecare limbaj de programare a fost inventat pentru a facilita realizarea unui anumit tip de aplicaii i nu exist i probabil c nu poate s existe un limbaj de programare bun pentru orice tip de aplicaii. Se pune problema ns cum se realizeaz implementarea unui limbaj de programare pe un calculator. Exist dou ci de abordare posibile i amndou au fost considerate importante la un moment dat. Prima cale este de a realiza calculatoare care s "tie" limbaje ct mai evoluate i n istorie au existat numeroase astfel de ncercri mai mult sau mai puin ncununate de succes (ca de exemplu calculatorul Burroughs 7400 programabil direct n ALGOL, microprocesorul iAPX 432 programabil n ADA sau mai nou mainile LISP, MODULA, PROLOG, etc). A doua cale presupune utilizarea chiar a calculatorului care tie numai limbajul main (l vom numi LM) pentru a permite programatorului s se exprime ntr-un limbaj de nivel nalt (pe care l vom numi LI). Avnd n vedere c i LI este destinat efecturii unor prelucrri de date nseamn c fiecare instruciune din acesta poate s fie exprimat cu ajutorul unei secvene finite de instruciuni din LM. n acest caz procesul de trecere de la o instruciune din LI la instruciuni din LM poate s fie automatizat, cu alte cuvinte se poate scrie un program care s realizeze traducerea instruciunilor din LI n instruciuni din LM. Evident acest program va fi scris (cel puin prima dat) utiliznd instruciuni din

LM. Un astfel de program se numete translator. Exist dou tipuri de translatoare: compilatoare i interpretoare. Dac translatorul traduce ntreg programul scris n LI n instruciuni LM, obinnd un program scris n LM care va putea fi utilizat ca atare ori de cte ori este nevoie, spunem c translatorul este de tip compilator. Dac translatorul realizeaz recunoaterea unei instruciuni din LI, execut secvena de instruciuni LM corespunztoare i apoi trece la urmtoarea instruciune din LI, spunem c translatorul este de tip interpretor. Amndou tipurile de translator permit unui programator n limbajul LI s ignore faptul c calculatorul pentru care scrie programul n LI nu "nelege" direct acest limbaj. Este ca i cum la dispoziia acestui programator se gsete un alt calculator, un calculator virtual avnd o arhitectur diferit de a celui real. Pentru ca operaia de traducere s fie simpl este bine ca raportul ntre complexitatea instruciunilor disponibile n LI i n LM s nu fie foarte mare. Corespunztor, limbajul LI poate s fie nc prea simplu pentru descrierea unor aplicaii semnificative. n acest caz se poate considera un nou limbaj LI' avnd instruciunile mai aproape de situaia ideal i se poate utiliza limbajul LI pentru a construi calculatorul virtual care "tie" limbajul LI', asa cum rezult din Fig. 1.17. Desigur trei nu este n acest caz un numr fatidic, deci ierarhia de calculatoare i respectiv de limbaje poate s aib mai multe nivele. Semnificativ este relaia dintre un limbaj i un calculator virtual, i anume orice limbaj definete arhitectura unui calculator virtual care "tie" s execute programe scrise n acest limbaj. n acelasi timp orice calculator definete un limbaj de programare.
Calculatorul virtual LI Calculatorul virtual LI Calculatorul real LM C1 C2 C3 Programele scrise in LI se executa pe C3 prin compilare sau interpretare

programele scrise in limbaj masina se executa direct pe C1

Fig 1.17 Structura ierarhic de limbaje 1.5 Elemente de arhitectur i structur ale unui calculator numeric 1.5.1 Concepte de baz

Un sistem de prelucrare numeric a datelor este format dintr-o colecie de module (uniti funcionale) interconectate ntre ele. Caracteristicile constructive ale acestor uniti, modul de interconectare a acestora, cile de comunicaie a datelor formeaz structura sistemului de prelucrare numeric a datelor. Fiecare modul la rndul lui poate s fie privit ca fiind format dintr-o unitate de comand mai mult sau mai puin complex i resursele care asigur suportul prelucrrilor controlate de unitatea de comand, reunite sub numele de unitate de execuie. Resursele accesibile programatorului i modalitile de control a acestora prin interpretri concrete la nivelul setului de instruciuni formeaz arhitectura sistemului de prelucrare numeric a datelor. Un repertoriu de instruciuni este specificat prin : formatul instruciunilor; semantica instruciunilor. Prin formatul instruciunilor se specific numrul de cuvinte de memorie utilizat pentru memorarea fiecrui tip de instruciune i semnificaia cmpurilor care formeaz instruciunea. n general o instruciune este compus din dou componente :