Arhitectura Calculatoarelor - RO - Universitatea din Craiova

212 downloads 1302 Views 716KB Size Report
ARHITECTURA CALCULATOARELOR – Nivelele unui sistem de calcul. Data trecută… ▫ Calculatorul elementar didactic;. ▫ Structura generală UM (MP);.
Universitatea din Craiova Facultatea de Automatică, Calculatoare și Electronică Catedra de Ingineria Calculatoarelor și Comunicații

Arhitectura Calculatoarelor Organizarea ierarhică a sistemelor de calcul

Cătălina Mancaș [email protected]

Dan Mancaș [email protected]

Data trecută…  Calculatorul elementar didactic;

 Structura generală UM (MP);  Tehnici de adresare a memoriei.

ARHITECTURA CALCULATOARELOR – Nivelele unui sistem de calcul

2

Structura de bază a unui calculator Flux dede date Flux date

CPU = ALU + UC

Flux date alternativ Flux dede date alternativ Flux dede instructiuni Flux instrucțiuni Comenzi linii de control Linii desau control Informatii de stare sau linii de stare Linii de stare

Date de intrare si programe

Unitatea de Intrare (UI)

Unitatea de Control (UC)

Unitatea LogicoAritmeticã (ALU) Date

DMA

Unitatea de Memorie (UM)

Unitatea de Iesire (UO)

Date de iesire sau rezultate

Instructiuni DMA

ARHITECTURA CALCULATOARELOR – Nivelele unui sistem de calcul

3

Astăzi... 

Concepte fundamentale: –

Arhitectura calculatoarelor (def.);



Sistem de calcul.



Organizarea ierarhică a sistemelor de calcul;



Nivelele unui sistem de calcul;



Drumul:

Problema de rezolvat (Utilizator) -> Execuție (Mașina fizică); 

Relaţiile între nivelele unui sistem de calcul;



Arhitecturi şi limbaje;



Structura sistemelor de calcul moderne multinivel;



Compilare şi interpretare.

ARHITECTURA CALCULATOARELOR – Nivelele unui sistem de calcul

4

Programator - Mașina fizică

ARHITECTURA CALCULATOARELOR – Nivelele unui sistem de calcul

5

Concepte fundamentale  Arhitectura: o frontieră între 2 nivele ale unei organizări ierarhice a unui sistem de calcul;  Myers;

 Există mai multe tipuri de arhitecturi;  Arhitectura calculatorului (AC): Graniţa între complexul Hardware/Firmware şi nivelul limbajului cod maşină ...  O “vedere” a calculatorului aşa cum apare aceasta pentru programatorul în cod maşină;

 Include toate caracteristicile care pot fi manipulate de la acest nivel. ARHITECTURA CALCULATOARELOR – Nivelele unui sistem de calcul

6

Concepte fundamentale  Observaţie: A se face o distincţie clară între arhitectură, organizare şi implementare.  Interdependenţe;  Fiecare defineşte un concept distinct care corespunde unei discipline diferite;  În definiţia unei arhitecturi trebuie să se ţină cont de: – organizarea calculatorului; – modul de implemetare.

ARHITECTURA CALCULATOARELOR – Nivelele unui sistem de calcul

7

Concepte fundamentale  Arhitectura calculatorului: Graniţa între Hardware/Firmware şi limbajul cod maşină, ţinând seama de sistemul de operare, de compilatoarele pentru limbajele de nivel înalt, precum şi de organizarea şi de implementarea calculatorului.  Definiţie (Dasgupta): Un concept care încorporează două direcţii complementare: – proprietăţile logice şi arhitecturale ale unui calculator; – ştiinţa, arta în proiectarea acelor proprietăţi logice şi abstracte.

ARHITECTURA CALCULATOARELOR – Nivelele unui sistem de calcul

8

Sistem de calcul 

Sistem: o mulţime de obiecte abstracte interconectate;



Sistem de calcul: sisteme de prelucrare a informaţiilor;



Sisteme extrem de complexe;



Există un număr foarte mare de părţi care interacţionează;



O

interconectare

între

părţile

fizice

(Hardware)

şi

părţile

conceptuale (Software); – caracteristică unică a sistemelor de calcul.



Într-o evoluţie extraordinară;



Iniţial: o reuniune de circuite electronice alcătuind Hardware-ul sau maşina fizică.

ARHITECTURA CALCULATOARELOR – Nivelele unui sistem de calcul

9

Nivelele unui sistem de calcul

Reducerea distanţei Hardware-Operator uman: Software de sistem. ARHITECTURA CALCULATOARELOR – Nivelele unui sistem de calcul

10

Nivelele unui sistem de calcul  Un calculator digital: o maşină care poate să rezolve probleme pentru oameni ţinând cont de instrucţiunile date de aceştia;  O secvenţă de instrucţiuni descrie cum se poate rezolva o anumită sarcină numită program;  Mulţimea circuitelor electronice (Hardware) din fiecare calculator poate recunoaşte şi executa direct un set limitat de instrucţiuni simple sau primitive, cum ar fi: adunarea a două numere, transferarea unei date, verificarea dacă o dată este zero, etc.  Reuniunea acestor instrucţiuni simple formează limbajul cod-maşină.

ARHITECTURA CALCULATOARELOR – Nivelele unui sistem de calcul

11

Nivelele unui sistem de calcul  Limbajul cod maşină: limbaj binar (0 şi 1);  Foarte complicat de folosit;  Instrucţiuni cod maşină, înţelese doar de circuitele electronice;  Adăugarea “Software-ului de sistem”: – exprimarea problemei de rezolvat la un nivel mai ridicat decât acela de adresare directă la nivelul circuitelor electronice, adică la un nivel mai apropiat de modul uman de gândire;

 Adoptarea unui nou set de instrucţiuni: – mai convenabil de folosit de către utilizatorul uman.

 Reuniunea acestor instrucţiuni: un nou limbaj notat L. ARHITECTURA CALCULATOARELOR – Nivelele unui sistem de calcul

12

Nivelele unui sistem de calcul  L este diferit de limbajul cod maşină – ML;  L nu este înţeles de Hardware;  L este translatat în limbajul ML: prin mecanismelor “Software-ului de sistem”;

intermediul

 Apoi, este executat de către Hardware; Reuniunea circuitelor electronice - Hardware-ul se mai numeşte şi maşină fizică sau maşină reală.  Prin crearea software-ului de sistem: utilizatorul: – nu comunică direct cu hardware-ul adică cu maşina fizică, ci; – cu o maşină virtuală ce opereză într-un mod diferit, mai apropiat de cel al gândirii umane. ARHITECTURA CALCULATOARELOR – Nivelele unui sistem de calcul

13

Nivelele unui sistem de calcul Programator

Mașina Virtuală

L

Mașina Fizică

ML

ARHITECTURA CALCULATOARELOR – Nivelele unui sistem de calcul

14

Nivelele unui sistem de calcul  Maşina virtuală: un nou nivel deasupra maşinii fizice;  Înțelege L;  Convertește L -> ML;

 Deci, programatorii scriu programe pentru maşini virtuale;  Limbajele ML şi L nu pot diferi foarte mult: conversia ar fi foarte complexă;  Un nou limbaj P: mai puţin orientat pe maşină şi mai mult spre programator;  Programatorii scriu mult mai uşor programe în P;  P trebuie să se treacă în L şi apoi în ML prin conversii adecvate;  Noul set de instrucţiuni ale limbajului P definesc o nouă maşină virtuală. ARHITECTURA CALCULATOARELOR – Nivelele unui sistem de calcul

15

Nivelele unui sistem de calcul Programator

nivelul 2

Mașina Virtuală 2

P

nivelul 1

Mașina Virtuală 1

L

nivelul 0

Mașina Fizică

ML

ARHITECTURA CALCULATOARELOR – Nivelele unui sistem de calcul

16

Nivelele unui sistem de calcul  Nivelul cel mai de jos este întotdeauna maşina fizică, ce înțelege limbajul ML;  Acest mecanism de a inventa o serie de limbaje fiecare mai convenabil pentru programator poate continua până ce se găseşte un limbaj adecvat care se reţine;  Numărul de nivele dictează flexibilitate în aplicaţii:

gradul

de

eficienţă

şi

– Cu cât un nivel este mai coborât în ierarhie, cu atât este mai eficient în prelucrarea datelor şi în accesarea directă a resurselor maşinii fizice. – Cu cît un nivel este mai depărtat de maşina fizică creşte flexibilitatea în reprezentarea problemei de rezolvat.

ARHITECTURA CALCULATOARELOR – Nivelele unui sistem de calcul

17

nivelul 3

Masina Virtuală 3

nivelul 2

Mașina Virtuală 2

nivelul 1

Mașina Virtuală 1

nivelul 0

Mașina Fizică

Eficienta in utilizarea resurselor

Flexibilitatea in utilizare

Nivelele unui sistem de calcul

ARHITECTURA CALCULATOARELOR – Nivelele unui sistem de calcul

18

Nivelele unui sistem de calcul  Fiecare nivel: un subsistem;  Poate fi studiat independent: – prin componentele sale specifice; – prin conexiunile cu celelalte nivele.

 Fiecare nivel: dependent de nivelul inferior şi superior: – asigurând servicii nivelului superior; – apelând resurse de la nivelul inferior.

ARHITECTURA CALCULATOARELOR – Nivelele unui sistem de calcul

19

Relaţiile între nivelele unui sistem de calcul

ARHITECTURA CALCULATOARELOR – Nivelele unui sistem de calcul

20

Relaţiile între nivelele unui sistem de calcul  Fiecare nivel: conţine mai multe componente primitive structurate spre nivelul inferior;

nivelul N

nivelul N -1

ARHITECTURA CALCULATOARELOR – Nivelele unui sistem de calcul

21

Relaţiile între nivelele unui sistem de calcul  Conexiunile: procese de translatare şi interpretare;  Aceste procese descriu acţiunea de conversie de la un limbaj de nivel înalt spre un limbaj de nivel mai coborât;

 Trecerea de la limbajul L la limbajul ML;  Două metode: 1) metoda translatării; 2) metoda interpretării.

ARHITECTURA CALCULATOARELOR – Nivelele unui sistem de calcul

22

Translatarea  Presupune înlocuirea fiecărei componente de la nivelul N, printr-un grup de componente de la nivelul N-1;   Unei instrucţiuni din limbajul L îi corespunde o secvenţă echivalentă de instrucţiuni din limbajul ML;  Rezultat: un întreg program scris numai cu instrucţiuni din ML;  Calculatorul execută acest program scris în ML şi ignoră programul scris în L.

ARHITECTURA CALCULATOARELOR – Nivelele unui sistem de calcul

23

Interpretarea  Presupune scrierea unui program în ML ce consideră programul scris în L ca date de intrare şi care prin execuţie interpretează fiecare instrucţiune din L;  Nu se crează un program echivalent scris în ML;  => interpretarea implică prezenţa ambelor componente atât de nivel N cât şi N-1;  La nivelul N este programul utilizatorului, iar la N-1 este programul de interpretare numit interpretor;  Prin rularea interpretorului se execută programul scris la nivelul N.

ARHITECTURA CALCULATOARELOR – Nivelele unui sistem de calcul

24

Translatare și interpretarea  Nivelele mai coborâte sunt mai eficiente, cele mai înalte sunt mai flexibile în reprezentarea problemei;  Se recomandă: – adaptarea ridicate;

metodei

de

translatare

pentru

nivelele

mai

– adaptarea metodei de interpretare pentru nivelele mai coborâte.

 Translatarea reprezintă o modalitate de deplasare a problemei utilizatorului spre un nivel mai uşor interpretabil.

ARHITECTURA CALCULATOARELOR – Nivelele unui sistem de calcul

25

Translatare și interpretarea  Translatarea şi interpretarea sunt ca efect similare;  În ambele metode: instrucţiunile din L sunt convertite prin execuţie în ML;

 Diferenţe: – la translatare: tot programul scris în L este mai întâi convertit în program scris în ML după care se renunţă la programul scris în L şi se reţine cel scris în ML care se execută; – la interpretare: după fiecare examinare a instrucţiunii din programul scris în L, aceasta se decodifică (interpretează) şi se execută imediat de programul interpretor scris în ML.

 Ambele metode sunt larg răspândite.

ARHITECTURA CALCULATOARELOR – Nivelele unui sistem de calcul

26

Relaţiile între nivelele unui sistem de calcul  Pentru utilizator: – Există un calculator ce înţelege limbajul L; – Utilizatorul lansează în execuţie programe srise în L; – Calculatorul le execută ca şi cum L ar fi limbajul maşină al său.

 Aceasta corespunde existenţei unui calculator ipotetic numit maşină virtuală, care are limbajul maşină L.  Dacă s-ar construi un calculator care să aibă limbajul maşină L nu ar mai fi nevoie de translatare sau interpretare.  Cum o astfel de maşină este foarte scumpă se păstrează metodele de translatare şi interpretare şi utilizatorul va scrie programe pentru maşina virtuală.

ARHITECTURA CALCULATOARELOR – Nivelele unui sistem de calcul

27

Relaţiile între nivelele unui sistem de calcul  L şi ML nu pot diferi foarte mult;  => o restricţie şi chiar dacă L este mai apropiat de exprimarea umană este departe de marea majoritate a aplicaţiilor;  Limbajul P;  Utilizatorul va scrie programe în P iar maşina le va executa ca şi cum P ar fi limbajul cod maşină;

 În realitate: P este interpretat sau traslatat în L şi apoi în ML;  Această succesiune poate continua, fiecare limbaj folosind predecesorul său ca bază.

ARHITECTURA CALCULATOARELOR – Nivelele unui sistem de calcul

28

Relaţiile între nivelele unui sistem de calcul  Sistemul de calcul este văzut ca o secvenţă de straturi sau nivele, unul bazat pe celălalt;  Un sistem de calcul cu N nivele: – N maşini virtuale diferite; – fiecare cu câte un limbaj maşină diferit.

 Doar programele scrise în ML pot fi direct executate de hardware fără a fi nevoie de interpretare sau translatare;

 Programele scrise în limbajele L, P, etc. trebuie ca fiecare din ele să fie interpretate de un interpretor ce rulează pe un nivel mai jos sau translatate într-un alt limbaj corespunzător unui nivel mai scăzut.

ARHITECTURA CALCULATOARELOR – Nivelele unui sistem de calcul

29

Relaţiile între nivelele unui sistem de calcul

MV2 cu limbajul P

MV1 cu limbajul L

MF cu limbajul

ML

Program scris in P va fi translatat in L sau interpretat de un interpretor scris in L

Program scris in L va fi translatat in ML sau interpretat de un interpretor scris in ML

Program scris in ML se executa direct pe MF

ARHITECTURA CALCULATOARELOR – Nivelele unui sistem de calcul

30

Arhitecturi şi limbaje

ARHITECTURA CALCULATOARELOR – Nivelele unui sistem de calcul

31

Arhitecturi şi limbaje  Cf. Dasgupta: Orice frontieră între două nivele din organizarea ierarhică a unui sistem de calcul, corespunde unei arhitecturi.

 Există mai multe nivele în structura unui sistem de calcul  există mai multe arhitecturi;  Nivelul cel mai înalt al unui sistem de calcul este cel în tangenţă cu lumea externă;  Definiţie: Frontiera între sistemul de calcul şi lumea externă se numeşte arhitectură de sistem. ARHITECTURA CALCULATOARELOR – Nivelele unui sistem de calcul

32

Arhitectura de sistem  Orice arhitectură de sistem se prezintă sub 3 aspecte: 1) Pachete de programe de aplicaţii;

2) Limbaje de programare;

interfața utilizator-calculator

3) Comunicaţie cu alte sisteme, cu procese industriale, cu instrumente de măsură, etc. interfața cu lumea fizică

ARHITECTURA CALCULATOARELOR – Nivelele unui sistem de calcul

33

Arhitectura de sistem Arhitectura de sistem End User

Administrator de sistem Administrator de baze de date Proiectant de aplicatii

Pachete de programe de aplicații

Limbaje de programare

ARHITECTURA CALCULATOARELOR – Nivelele unui sistem de calcul

34

Arhitectura de sistem  Orice arhitectură de sistem se prezintă sub 3 aspecte: 1) Pachete de programe de aplicaţii; 2) Limbaje de programare; -> fac ca sistemul să pară ca o maşină care operează exclusiv pentru acea aplicaţie sau acel limbaj.

ARHITECTURA CALCULATOARELOR – Nivelele unui sistem de calcul

35

Arhitectura de sistem  Orice arhitectură de sistem se prezintă sub 3 aspecte: 3) Comunicaţie cu alte sisteme, cu procese industriale, cu instrumente de măsură, etc.

-> respectă un set de convenţii şi protocoale ce sunt concentrate în conceptul arhitecturii fizice I/O sau arhitecturii de reţea.

ARHITECTURA CALCULATOARELOR – Nivelele unui sistem de calcul

36

Arhitectura de sistem  Arhitectura fizică hardware-ului;

I/O

este

localizată

în

apropierea

 Limbajele de programare sunt stratificate;

 Execuţia acestor limbaje se face prin translatare sau interpretare cu interpretoare scrise în limbaje de nivel ridicat;  Limbajele simbolice (la un nivel coborât): instrucţiunile sunt simboluri-mnemonice, care au un anumit sens pentru utilizator (ADD, SUB, MOV, etc);  Atât limbaje de nivel ridicat cât şi cele de asamblare sunt în general translatate în cod maşină;

 Programele de translatare se numesc compilatoare şi asambloare. ARHITECTURA CALCULATOARELOR – Nivelele unui sistem de calcul

37

Structura sistemelor de calcul moderne multinivel

ARHITECTURA CALCULATOARELOR – Nivelele unui sistem de calcul

38

Structura sistemelor de calcul multinivel  Cele mai multe calculatoare: 2 (+) nivele;  Structurile tipice: 5 nivele + maşina fizică = 6 nivele;  La sistemele moderne: peste 5 nivele (al limbajelor de nivel foarte înalt sau nivelul pachetelor de programe de aplicaţii).

ARHITECTURA CALCULATOARELOR – Nivelele unui sistem de calcul

39

Structura sistemelor de calcul multinivel 6

Limbaje de nivel foarte inalt Translatare (pre-compilare) sau interpretare

5

Limbaje de nivel inalt Translatare (compilare) sau interpretare

4

Limbajul de asamblare Translatare (asamblare)

3

Sistemul de operare Interpretare partiala

2

Limbajul cod masina Interpretare

1

Arhitectura calculatorului

Nivelul microprogramarii Executie directa

0

Nivelul Hardware (MF)

ARHITECTURA CALCULATOARELOR – Nivelele unui sistem de calcul

40

Structura sistemelor de calcul multinivel  Nivelele inferioare: În comun (maj. calculatoarelor): setul de instrucţiuni şi organizarea generală; De obicei: în jur instrucţiuni distincte;

de

30-40

Cele mai multe instrucţiuni implică transferul datei de la un dispozitiv la altul, adunarea sau scăderea a două numere, testarea unui număr, etc.

ARHITECTURA CALCULATOARELOR – Nivelele unui sistem de calcul

41

Structura sistemelor de calcul multinivel  Nivelul 1: nivelul microprogramării; UC este de tip microprogramat;

Limbaj bazat pe microinstrucţiuni; Microinstrucţiunile sunt în corespondenţă directă cu registrele, cu ALU, cu numărătoare, multiplexoare, demultiplexoare, căi de transfer, etc. Prin acest nivel se interpretează instrucţiunile nivelului 2; Fiecărei instrucţiuni în cod maşină îi corespunde un microprogram; Ansamblul microprogramelor formează FIRMWARE-ul. ARHITECTURA CALCULATOARELOR – Nivelele unui sistem de calcul

42

Structura sistemelor de calcul multinivel  Nivelul 2: nivelul cod maşină, nivelul convenţionale sau nivelul limbajulul ML;

maşinii

Lipseşte: UC cablat; - Instrucţiunile cod maşină sunt realizate direct de circuitele electronice fără intervenţia unui interpretor; - Nivelul 1 este nivelul maşinii convenţionale (şi nu nivelul 2);

În prezent: CPU-urile se proiectează microprogramat.

ARHITECTURA CALCULATOARELOR – Nivelele unui sistem de calcul

cu

UC

43

Structura sistemelor de calcul multinivel  Nivelul 2: nivelul cod maşină, nivelul convenţionale sau nivelul limbajulul ML;

maşinii

Microprogramarea permite: - o proiectare mult mai sistematică şi flexibilă la modificări; - o uşoară extensie a setului de instrucţiuni la nivel cod maşină prin simpla adăugare de microprograme.

ARHITECTURA CALCULATOARELOR – Nivelele unui sistem de calcul

44

Structura sistemelor de calcul multinivel  Nivelul 3: nivelul sistemului de operare; Nivel hibrid; Multe din instrucţiunile limbajului său sunt din limbajul de la nivelul 2; Noi facilităţi de folosire a HW: - anumite organizări ale memoriei, - posibilitatea de a rula două sau mai multe programe în paralel, etc.;

Realizate de un interpretor ce rulează la nivelul 2 -> SO. ARHITECTURA CALCULATOARELOR – Nivelele unui sistem de calcul

45

Structura sistemelor de calcul multinivel  Nivelul 3: nivelul sistemului de operare; Instrucţiunile nivelului 3 identice cu cele ale nivelului 2 sunt realizate direct de microprograme; Celelalte sunt interpretate de SO. => hibrid

ARHITECTURA CALCULATOARELOR – Nivelele unui sistem de calcul

46

Structura sistemelor de calcul multinivel  Nivelul 3: nivelul sistemului de operare;  SO au apărut gradual;  Nu au fost prezente la primele tipuri de calculatoare;  Implicau eforturi software deosebite;  SO asigură: – gestiunea optimă a resurselor; – servicii către nivelele superioare.

 Nivelul 3 poate fi considerat: interpretor parţial al nivelelor superioare;  Acesta analizează instrucţiuni din programul utilizatorului, lăsând marea majoritate neschimbată, le transferă în jos spre nivelul 2 şi interpretează doar acele instrucţiuni care solicită folosirea resurselor. ARHITECTURA CALCULATOARELOR – Nivelele unui sistem de calcul

47

Structura sistemelor de calcul multinivel  În general:

Toate nivelele unui sistem de calcul utilizează resursele sistemului de calcul (CPU, memorie, dispozitive de I/O);  Aceste resurse depind de cantitatea de hardware deci sunt limitate sau finite;  Trebuie: – ca aceste resurse să fie utilizate raţional; – să se asigure o interfaţă uniformă între resurse şi limbaje sau aplicaţii; – să se simplifice modul lor de utilizare, adică de acces; – ca utilizatorul să depună un efort minim pentru a le apela; – să se rezolve orice conflict potenţial în folosirea resurselor când există mai mulţi utilizatori, mai multe programe etc. ARHITECTURA CALCULATOARELOR – Nivelele unui sistem de calcul

48

Structura sistemelor de calcul multinivel

ARHITECTURA CALCULATOARELOR – Nivelele unui sistem de calcul

49

Structura sistemelor de calcul multinivel 

Nu sunt proiectate pentru folosirea în rezolvarea problemei;



Ele se concentrează în special pentru rularea interpretoarelor şi translatoarelor;



Aceste interpretoare şi translatoare sunt scrise de persoane numite programatori de sistem;



Nivelele 2 şi 3 sunt întodeauna interpretate.

ARHITECTURA CALCULATOARELOR – Nivelele unui sistem de calcul

50

Structura sistemelor de calcul multinivel



Nivelul 4 şi cele superioare acestuia sunt concentrate pentru aplicaţii ale programatorului;



În scopul rezolvării problemei;



Nivelele 4, 5 şi mai sus sunt de obicei, dar nu întotdeauna suportate de translatoare.

ARHITECTURA CALCULATOARELOR – Nivelele unui sistem de calcul

51

Structura sistemelor de calcul multinivel  Nivelul 4: nivelul limbajului de asamblare ; În realitate o formă simbolică a limbajelor de bază;

O formă mai plăcută decât limbajul cod maşină (adică cu 0 şi 1); Programele în limbaj de asamblare sunt mai întâi translatate în limbaj pentru nivelul 1, 2 sau 3 şi apoi interpretate de cea mai apropiată maşină virtuală; Programul care realizează translaţia se numeşte asamblor.

ARHITECTURA CALCULATOARELOR – Nivelele unui sistem de calcul

52

Structura sistemelor de calcul multinivel  Nivelul 5: nivelul limbajelor de nivel înalt ; Conține limbaje de nivel înalt şi limbaje orientate pe problemă; Limbaje folosite în aplicaţiile programatorilor pentru rezolvarea problemei: ALGOL, BASIC, PASCAL, C, LISP, etc.; Programele scrise în aceste limbaje sunt în general translatate la nivelul 3 sau 4 de translatoare numite compilatoare; Câteodată sunt şi interpretate. ARHITECTURA CALCULATOARELOR – Nivelele unui sistem de calcul

53

Structura sistemelor de calcul multinivel  Nivelul 6: nivelul limbajelor de nivel foarte înalt ; Colecţii de programe care lucrează pe maşini specific proiectate pentru anumite aplicaţii sau limbaje de nivel foarte ridicat.

ARHITECTURA CALCULATOARELOR – Nivelele unui sistem de calcul

54

Structura pe nivele a unei instrucţiuni dintr-un limbaj de nivel înalt (FORTRAN)



  

Arhitectura calculatorului

instr. 1

Instructiune

instr. 2

instr. N

µinstr. 11

Reg. 8

µinstr. 12 Sumator

µinstr. 1K Numarator 5

µinstr. 21 Sumator

µinstr. 22 MUX

µinstr. 2L Reg. 16

µinstr. N1 µinstr. N2

Scazator

µinstr. NZ

Limbaj de nivel inalt

Limbaj cod masina

Limbaj de microprogramare

Hardware

ARHITECTURA CALCULATOARELOR – Nivelele unui sistem de calcul

55

Compilare şi interpretare

ARHITECTURA CALCULATOARELOR – Nivelele unui sistem de calcul

56

Compilare și interpretare 6

Limbaje de nivel foarte inalt Translatare (pre-compilare) sau interpretare

5

Limbaje de nivel inalt Translatare (compilare) sau interpretare

4

Limbajul de asamblare Translatare (asamblare)

3

Compilare pură

Sistemul de operare Interpretare partiala

2

Limbajul cod masina Interpretare

1

Arhitectura calculatorului

Nivelul microprogramarii Executie directa

0

Nivelul Hardware (MF)

Interpretare pură

ARHITECTURA CALCULATOARELOR – Nivelele unui sistem de calcul

57

Compilare și interpretare  Definiţie: Compilarea pură este procesul de substituire al programului scris în limbaj sursă de un program funcţional echivalent scris într-un limbaj obiect în momentul execuţiei.

ARHITECTURA CALCULATOARELOR – Nivelele unui sistem de calcul

58

Compilare și interpretare  Execuţia presupune două faze: 1) faza de compilare (compile time), în care se apelează programul compilator ce operează asupra programului sursă, rezultând un program obiect. Program sursă

Compilator

Program obiect

2) faza de execuţie (run time), în care programul obiect se execută direct, generând rezultatele.

Date

Program obiect

Rezultate

ARHITECTURA CALCULATOARELOR – Nivelele unui sistem de calcul

59

Compilare și interpretare  Compilatorul translatează programul sursă în program scris în limbaj cod maşină înainte ca acesta să fie executat.  Compilatorul este un limbaj translator încorporat în programele sistemului cu scopul de a converti programele aplicaţiilor în limbaj cod maşină.  Definiţie: Compilatorul este un program sistem care translatează un program întreg în limbaj cod maşină înainte ca programul translatat să fie executat.

ARHITECTURA CALCULATOARELOR – Nivelele unui sistem de calcul

60

Compilare și interpretare  Programul scris de utilizator se numeşte modul sursă sau program sursă.  Definiţie:

Modulul sursă (programul sursă) este forma originală în care un program este introdus într-un dispozitiv de intrare de către utilizator.  Definiţie: Modulul obiect (programul obiect) este un program în cod maşină ce rezultă dintr-un limbaj translator. ARHITECTURA CALCULATOARELOR – Nivelele unui sistem de calcul

61

Compilare și interpretare  Înainte ca programul obiect să fie executat, el este legat împreună cu alte module de care CPU poate avea nevoie în vederea executării programului;  Procesul de legare se referă la faza de link-editare (link editing sau link-edit stage) şi pachetul executabil ce se formează se numeşte load module;  Un modul load este un limbaj maşină care este pregătit să fie executat de calculator;  Pentru a realiza legătura este folosit un program special al sistemului numit Linkage Editor (editor de legături);  Un linkage editor este un program sistem care leagă împreună segmentele de program obiect aşa încât ele să se execute ca o unitate. ARHITECTURA CALCULATOARELOR – Nivelele unui sistem de calcul

62

Compilare și interpretare  Ambele programe obiect şi load pot fi salvate pe disc pentru a fi utilizate ulterior astfel încât compilarea şi linkeditarea să nu fie nevoie să se realizeze de fiecare dată când programul este executat.

ARHITECTURA CALCULATOARELOR – Nivelele unui sistem de calcul

63

Compilare și interpretare



Modul sursa

Faza de compilare

Compilator

Alte module obiect

Modul obiect



Editor de legaturi

Modul Load

Faza de Executie



Faza de Link-Editare

Procesare CPU

Rezultate

ARHITECTURA CALCULATOARELOR – Nivelele unui sistem de calcul

64

Compilare și interpretare  Un caz particular de compilator reprezintă asamblorul;  Definiţie: Asamblorul este un program care converteşte instrucţiunile din limbaj de asamblare în limbaj cod maşină.  Asambloarele sunt la fel ca şi compilatoarele, ele produc programe obiect;  Fiecare sistem de calcul are în mod normal un limbaj de asamblare;

 Astfel, doar un asamblor este recomandat. ARHITECTURA CALCULATOARELOR – Nivelele unui sistem de calcul

65

Compilare și interpretare  Definiţie: Interpretarea pură este acel mod de translatare în care programul scris în limbaj sursă rămâne în maşină în timpul execuţiei în forma sa originală şi este executat în această formă prin interpretarea instrucţiunilor una câte una de către un alt program numit interpretor.

 Astfel interpretoarele nu sunt ca şi compilatoarele, ele nu crează modulul obiect;  Ele citesc, translatează (interpretează) şi execută programul sursă tratând câte o instrucţiune o dată. ARHITECTURA CALCULATOARELOR – Nivelele unui sistem de calcul

66

Compilare și interpretare  Definiţie: Interpretorul este un program care interpretează un program în limbaj maşină linie cu linie (instrucţiune cu instrucţiune) astfel încât fiecare instrucţiune este executată.

Program (sursa) Date

Rezultate

Interpretor

ARHITECTURA CALCULATOARELOR – Nivelele unui sistem de calcul

67

Compilare și interpretare  Dezavantaj: o execuţie efectivă mai lentă a programului;  Erorile sintactice pot fi detectate doar în timpul execuţiei programului;  Pentru compilare, compilatorul detectează erorile sintactice şi le afişează în faza de compilare;  Avantaj: erorile semantice sunt uşor interpretabile şi interpretorul este uşor de folosit;  Interpretorul cere puţin spaţiu pe disc şi nu generează module obiect care trebuie stocate;  Preţul de cost al unui interpretor este mai mic decât cel al unui compilator.

ARHITECTURA CALCULATOARELOR – Nivelele unui sistem de calcul

68

Compilare și interpretare  Pe lângă interpretările şi compilările pure există versiuni mixte de translatare;  Metodele mixte sunt des implementate;  Acestea se bazează pe conceptul de limbaj intermediar.  Definiţie:

Numim limbaj intermediar un obiect pentru operaţia de compilare ce generează programul echivalent cu programul sursă ce este ulterior interpretat de interpretoare scrise în cod-maşină.

ARHITECTURA CALCULATOARELOR – Nivelele unui sistem de calcul

69

Compilare și interpretare  Procesul translatării mixte implică două etape: – compilare – interpretare

 În prima etapă: Programul sursă este translatat intermediar (program obiect);

într-un

program

 În etapa a doua: Programul intermediar este interpretat într-un program cod maşină.

ARHITECTURA CALCULATOARELOR – Nivelele unui sistem de calcul

70

Compilare și interpretare  În funcţie de nivelul limbajului intermediar există două variante: 1) Limbaj intermediar de nivel ridicat:

– În acest caz se foloseşte un compilator simplu; – Compilarea este rapidă, asemănătoare cu asamblarea; – Nu există diferenţe mari între limbajul sursă şi intermediar;

– Avantaj: detectarea erorilor sintactice în faza de compilare; – Dezavantaj: complexitatea interpretoarelor şi diferenţe mari între limbajul intermediar şi cod maşină.

ARHITECTURA CALCULATOARELOR – Nivelele unui sistem de calcul

71

Compilare și interpretare  În funcţie de nivelul limbajului intermediar există două variante: 1) Limbaj intermediar de nivel coborât:

– Limbajul intermediar este foarte apropiat de limbajul cod maşină; – Avantaje: interpretare foarte simplă, asigură o portabilitate a

compilatoarelor deoarece este foarte uşor de scris un interpretor pentru diferite maşini fizice pentru că limbajul intermediar este de nivel coborât; – Dezavantaj: există compilatoare complexe. ARHITECTURA CALCULATOARELOR – Nivelele unui sistem de calcul

72

Compilare și interpretare

Limbaj intermediar de nivel inalt Limbaj intermediar de nivel coborat

Interpretare pura

Compilare pura

Limbaje de nivel inalt

Limbaj cod masina Compilare Interpretare ARHITECTURA CALCULATOARELOR – Nivelele unui sistem de calcul

73

Compilare și interpretare  În toate cazurile, exceptând interpretarea pură, rezolvarea unei probleme implică două faze: 1) faza de compilare – căreia îi corespunde timpul de compilare şi din care provin proprietăţile statice ale unui program; 2) faza de execuţie – căreia îi corespunde timpul de execuţie şi din care provin proprietăţile dinamice ale unui program.

ARHITECTURA CALCULATOARELOR – Nivelele unui sistem de calcul

74