sistemelor de calcul - catedra de ingineria ...cs.ucv.ro/staff/dmancas/ac/curs_8.pdf · include...
TRANSCRIPT
Arhitectura
Calculatoarelor
Cătălina Mancaș Dan Mancaș
[email protected] [email protected]
Universitatea din Craiova
Facultatea de Automatică, Calculatoare și Electronică
Catedra de Ingineria Calculatoarelor și Comunicații
Organizarea ierarhică a
sistemelor de calcul
ARHITECTURA CALCULATOARELOR – Nivelele unui sistem de calcul
Data trecută…
Calculatorul elementar didactic;
Structura generală UM (MP);
Tehnici de adresare a memoriei.
2
ARHITECTURA CALCULATOARELOR – Nivelele unui sistem de calcul
Structura de bază a unui calculator
3
Flux de date
Comenzi sau linii de control
Informatii de stare sau linii de stare
Flux de date alternativ
Flux de instructiuni
CPU
Date de
intrare si
programe
Unitatea
Logico-
Aritmeticã
(ALU)
Unitatea de
Intrare
(UI)
Unitatea de
Iesire
(UO)
Unitatea de
Control
(UC)
Unitatea de
Memorie
(UM)
Date de iesire
sau rezultate
DMA DMA
DateInstructiuni
Flux de date
Flux de date alternativ
Flux de instrucțiuni
Linii de control
Linii de stare
= ALU + UC
ARHITECTURA CALCULATOARELOR – Nivelele unui sistem de calcul
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.
4
ARHITECTURA CALCULATOARELOR – Nivelele unui sistem de calcul
Programator - Mașina fizică
5
ARHITECTURA CALCULATOARELOR – Nivelele unui sistem de calcul
Arhitectura: o frontieră între 2 nivele ale unei organizăriierarhice 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 laacest nivel.
6
Concepte fundamentale
ARHITECTURA CALCULATOARELOR – Nivelele unui sistem de calcul
Observaţie:
A se face o distincţie clară între arhitectură, organizare şi implementare.
Interdependenţe;
Fiecare defineşte un concept distinct care corespunde uneidiscipline diferite;
În definiţia unei arhitecturi trebuie să se ţină cont de:
– organizarea calculatorului;
– modul de implemetare.
7
Concepte fundamentale
ARHITECTURA CALCULATOARELOR – Nivelele unui sistem de calcul
Arhitectura calculatorului:
Graniţa între Hardware/Firmware şi limbajul cod maşină,ţinând seama de sistemul de operare, decompilatoarele 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.
8
Concepte fundamentale
ARHITECTURA CALCULATOARELOR – Nivelele unui 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ă.
9
Sistem de calcul
ARHITECTURA CALCULATOARELOR – Nivelele unui sistem de calcul 10
Nivelele unui sistem de calcul
Reducerea distanţei Hardware-Operator uman: Software de sistem.
ARHITECTURA CALCULATOARELOR – Nivelele unui sistem de calcul
Un calculator digital: o maşină care poate să rezolveprobleme pentru oameni ţinând cont de instrucţiunile datede aceştia;
O secvenţă de instrucţiuni descrie cum se poate rezolva oanumită sarcină numită program;
Mulţimea circuitelor electronice (Hardware) din fiecarecalculator poate recunoaşte şi executa direct un set limitatde instrucţiuni simple sau primitive, cum ar fi: adunarea adouă numere, transferarea unei date, verificarea dacă odată este zero, etc.
Reuniunea acestor instrucţiuni simple formează limbajulcod-maşină.
11
Nivelele unui sistem de calcul
ARHITECTURA CALCULATOARELOR – 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 circuiteleelectronice;
Adăugarea “Software-ului de sistem”:
– exprimarea problemei de rezolvat la un nivel mai ridicatdecât acela de adresare directă la nivelul circuitelorelectronice, adică la un nivel mai apropiat de modul uman degâ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.
12
Nivelele unui sistem de calcul
ARHITECTURA CALCULATOARELOR – 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 intermediulmecanismelor “Software-ului de sistem”;
Apoi, este executat de către Hardware;
Reuniunea circuitelor electronice - Hardware-ul se mainumeş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, maiapropiat de cel al gândirii umane.
13
Nivelele unui sistem de calcul
ARHITECTURA CALCULATOARELOR – Nivelele unui sistem de calcul 14
Nivelele unui sistem de calcul
Mașina
Fizică
Mașina
Virtuală
Programator
L
ML
ARHITECTURA CALCULATOARELOR – 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 fifoarte complexă;
Un nou limbaj P: mai puţin orientat pe maşină şi mai multspre programator;
Programatorii scriu mult mai uşor programe în P;
P trebuie să se treacă în L şi apoi în ML prin conversiiadecvate;
Noul set de instrucţiuni ale limbajului P definesc o nouămaşină virtuală.
15
Nivelele unui sistem de calcul
ARHITECTURA CALCULATOARELOR – Nivelele unui sistem de calcul 16
Nivelele unui sistem de calcul
Mașina
Fizică
Mașina
Virtuală 1
Mașina
Virtuală 2
nivelul 0
nivelul 1
nivelul 2
Programator
P
ML
L
ARHITECTURA CALCULATOARELOR – 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 fiecaremai convenabil pentru programator poate continua pânăce se găseşte un limbaj adecvat care se reţine;
Numărul de nivele dictează gradul de eficienţă şiflexibilitate în aplicaţii:
– 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.
17
Nivelele unui sistem de calcul
ARHITECTURA CALCULATOARELOR – Nivelele unui sistem de calcul 18
Nivelele unui sistem de calcul
Mașina
Fizică
Mașina
Virtuală 1
Mașina
Virtuală 2
Masina
Virtuală 3
nivelul 0
nivelul 1
nivelul 2
nivelul 3F
lexib
ilita
tea
in u
tiliz
are
Efic
ien
ta in
utiliz
are
a
resu
rse
lor
ARHITECTURA CALCULATOARELOR – 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.
19
Nivelele unui sistem de calcul
ARHITECTURA CALCULATOARELOR – Nivelele unui sistem de calcul
Relaţiile între nivelele unui sistem de calcul
20
ARHITECTURA CALCULATOARELOR – Nivelele unui sistem de calcul
Fiecare nivel: conţine mai multe componente primitivestructurate spre nivelul inferior;
21
Relaţiile între nivelele unui sistem de calcul
nivelul N
nivelul N -1
ARHITECTURA CALCULATOARELOR – 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.
22
Relaţiile între nivelele unui sistem de calcul
ARHITECTURA CALCULATOARELOR – Nivelele unui sistem de calcul
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 dinML;
Calculatorul execută acest program scris în ML şi ignorăprogramul scris în L.
23
Translatarea
ARHITECTURA CALCULATOARELOR – Nivelele unui sistem de calcul
Presupune scrierea unui program în ML ce considerăprogramul scris în L ca date de intrare şi care prin execuţieinterpretează fiecare instrucţiune din L;
Nu se crează un program echivalent scris în ML;
=> interpretarea implică prezenţa ambelor componenteatât de nivel N cât şi N-1;
La nivelul N este programul utilizatorului, iar la N-1 esteprogramul de interpretare numit interpretor;
Prin rularea interpretorului se execută programul scris lanivelul N.
24
Interpretarea
ARHITECTURA CALCULATOARELOR – Nivelele unui sistem de calcul
Nivelele mai coborâte sunt mai eficiente, cele mai înaltesunt mai flexibile în reprezentarea problemei;
Se recomandă:
– adaptarea metodei de translatare pentru nivelele mai
ridicate;
– adaptarea metodei de interpretare pentru nivelele mai
coborâte.
Translatarea reprezintă o modalitate de deplasare aproblemei utilizatorului spre un nivel mai uşorinterpretabil.
25
Translatare și interpretarea
ARHITECTURA CALCULATOARELOR – Nivelele unui sistem de calcul
Translatarea şi interpretarea sunt ca efect similare;
În ambele metode: instrucţiunile din L sunt convertite prinexecuţie în ML;
Diferenţe:
– la translatare: tot programul scris în L este mai întâiconvertit în program scris în ML după care se renunţă laprogramul scris în L şi se reţine cel scris în ML care seexecută;
– la interpretare: după fiecare examinare a instrucţiunii dinprogramul scris în L, aceasta se decodifică (interpretează) şise execută imediat de programul interpretor scris în ML.
Ambele metode sunt larg răspândite.
26
Translatare și interpretarea
ARHITECTURA CALCULATOARELOR – 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ă alsău.
Aceasta corespunde existenţei unui calculator ipoteticnumit maşină virtuală, care are limbajul maşină L.
Dacă s-ar construi un calculator care să aibă limbajulmaşină L nu ar mai fi nevoie de translatare sauinterpretare.
Cum o astfel de maşină este foarte scumpă se păstreazămetodele de translatare şi interpretare şi utilizatorul vascrie programe pentru maşina virtuală.
27
Relaţiile între nivelele unui sistem de calcul
ARHITECTURA CALCULATOARELOR – Nivelele unui sistem de calcul
L şi ML nu pot diferi foarte mult;
=> o restricţie şi chiar dacă L este mai apropiat deexprimarea umană este departe de marea majoritate aaplicaţiilor;
Limbajul P;
Utilizatorul va scrie programe în P iar maşina le va executaca şi cum P ar fi limbajul cod maşină;
În realitate: P este interpretat sau traslatat în L şi apoi înML;
Această succesiune poate continua, fiecare limbaj folosindpredecesorul său ca bază.
28
Relaţiile între nivelele unui sistem de calcul
ARHITECTURA CALCULATOARELOR – Nivelele unui sistem de calcul
Sistemul de calcul este văzut ca o secvenţă de straturi saunivele, 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 dehardware fără a fi nevoie de interpretare sau translatare;
Programele scrise în limbajele L, P, etc. trebuie ca fiecaredin ele să fie interpretate de un interpretor ce rulează peun nivel mai jos sau translatate într-un alt limbajcorespunzător unui nivel mai scăzut.
29
Relaţiile între nivelele unui sistem de calcul
ARHITECTURA CALCULATOARELOR – Nivelele unui sistem de calcul 30
Relaţiile între nivelele unui sistem de calcul
MF
cu limbajul ML
MV1
cu limbajul L
MV2
cu limbajul P
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
Arhitecturi şi limbaje
31
ARHITECTURA CALCULATOARELOR – Nivelele unui sistem de calcul
Cf. Dasgupta:
Orice frontieră între două nivele din organizareaierarhică 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 întangenţă cu lumea externă;
Definiţie:
Frontiera între sistemul de calcul şi lumea externă se numeşte arhitectură de sistem.
32
Arhitecturi şi limbaje
ARHITECTURA CALCULATOARELOR – Nivelele unui sistem de calcul
Orice arhitectură de sistem se prezintă sub 3 aspecte:
1) Pachete de programe de aplicaţii;
2) Limbaje de programare;
3) Comunicaţie cu alte sisteme, cu procese industriale, cu
instrumente de măsură, etc.
33
Arhitectura de sistem
interfața
utilizator-calculator
interfața
cu lumea fizică
ARHITECTURA CALCULATOARELOR – Nivelele unui sistem de calcul 34
End User
Pachete de programe de
aplicații
Limbaje de programare
Administrator de sistem
Administrator de baze de date
Proiectant de aplicatii
Arhitectura de
sistem
Arhitectura de sistem
ARHITECTURA CALCULATOARELOR – Nivelele unui sistem de calcul
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.
35
Arhitectura de sistem
ARHITECTURA CALCULATOARELOR – Nivelele unui sistem de calcul
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.
36
Arhitectura de sistem
ARHITECTURA CALCULATOARELOR – Nivelele unui sistem de calcul
Arhitectura fizică I/O este localizată în apropiereahardware-ului;
Limbajele de programare sunt stratificate;
Execuţia acestor limbaje se face prin translatare sauinterpretare cu interpretoare scrise în limbaje de nivelridicat;
Limbajele simbolice (la un nivel coborât): instrucţiunilesunt simboluri-mnemonice, care au un anumit senspentru 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 şiasambloare.
37
Arhitectura de sistem
ARHITECTURA CALCULATOARELOR – Nivelele unui sistem de calcul
Structura sistemelor de calcul moderne multinivel
38
ARHITECTURA CALCULATOARELOR – Nivelele unui sistem de calcul
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).
39
Structura sistemelor de calcul multinivel
ARHITECTURA CALCULATOARELOR – Nivelele unui sistem de calcul 40
Structura sistemelor de calcul multinivel
Nivelul Hardware
(MF)
Nivelul
microprogramarii
Limbajul cod
masina
Sistemul de
operare
Limbajul de
asamblare
Limbaje de nivel
inalt
Limbaje de nivel
foarte inalt
Executie directa
Interpretare
Arhitectura
calculatorului
Interpretare partiala
Translatare (asamblare)
Translatare (compilare) sau interpretare
Translatare (pre-compilare) sau interpretare
0
1
2
3
4
5
6
ARHITECTURA CALCULATOARELOR – Nivelele unui sistem de calcul
Nivelele inferioare:
41
Structura sistemelor de calcul multinivel
În comun (maj. calculatoarelor):setul de instrucţiuni şi organizareagenerală;
De obicei: în jur de 30-40instrucţiuni distincte;
Cele mai multe instrucţiuni implicătransferul datei de la un dispozitivla altul, adunarea sau scăderea adouă numere, testarea unuinumăr, etc.
ARHITECTURA CALCULATOARELOR – Nivelele unui sistem de calcul
Nivelul 1: nivelul microprogramării;
42
Structura sistemelor de calcul multinivel
UC este de tip microprogramat;
Limbaj bazat pe microinstrucţiuni;
Microinstrucţiunile sunt în corespon-denţă 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
Nivelul 2: nivelul cod maşină, nivelul maşiniiconvenţionale sau nivelul limbajulul ML;
43
Structura sistemelor de calcul multinivel
Lipseşte: UC cablat;
- Instrucţiunile cod maşină suntrealizate direct de circuiteleelectronice fără intervenţia unuiinterpretor;
- Nivelul 1 este nivelul maşiniiconvenţionale (şi nu nivelul 2);
În prezent:
CPU-urile se proiectează cu UCmicroprogramat.
ARHITECTURA CALCULATOARELOR – Nivelele unui sistem de calcul
Nivelul 2: nivelul cod maşină, nivelul maşiniiconvenţionale sau nivelul limbajulul ML;
44
Structura sistemelor de calcul multinivel
Microprogramarea permite:
- o proiectare mult mai sistematicăşi flexibilă la modificări;
- o uşoară extensie a setului deinstrucţiuni la nivel cod maşină prinsimpla adăugare de microprograme.
ARHITECTURA CALCULATOARELOR – Nivelele unui sistem de calcul
Nivelul 3: nivelul sistemului de operare;
45
Structura sistemelor de calcul multinivel
Nivel hibrid;
Multe din instrucţiunile limbajuluisău sunt din limbajul de lanivelul 2;
Noi facilităţi de folosire a HW:
- anumite organizări ale memoriei,
- posibilitatea de a rula două saumai multe programe în paralel, etc.;
Realizate de un interpretor cerulează la nivelul 2 -> SO.
ARHITECTURA CALCULATOARELOR – Nivelele unui sistem de calcul
Nivelul 3: nivelul sistemului de operare;
46
Structura sistemelor de calcul multinivel
Instrucţiunile nivelului 3 identice cu cele ale nivelului 2 sunt reali-zate direct de microprograme;
Celelalte sunt interpretate de SO.
=> hibrid
ARHITECTURA CALCULATOARELOR – Nivelele unui sistem de calcul
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 alnivelelor superioare;
Acesta analizează instrucţiuni din programul utilizatorului,lăsând marea majoritate neschimbată, le transferă în josspre nivelul 2 şi interpretează doar acele instrucţiuni caresolicită folosirea resurselor.
47
Structura sistemelor de calcul multinivel
ARHITECTURA CALCULATOARELOR – Nivelele unui sistem de calcul
În general:
Toate nivelele unui sistem de calcul utilizează resurselesistemului de calcul (CPU, memorie, dispozitive de I/O);
Aceste resurse depind de cantitatea de hardware deci suntlimitate sau finite;
Trebuie:
– ca aceste resurse să fie utilizate raţional;
– să se asigure o interfaţă uniformă între resurse şi limbaje sauaplicaţ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 resurselorcând există mai mulţi utilizatori, mai multe programe etc.
48
Structura sistemelor de calcul multinivel
ARHITECTURA CALCULATOARELOR – Nivelele unui sistem de calcul 49
Structura sistemelor de calcul multinivel
ARHITECTURA CALCULATOARELOR – Nivelele unui sistem de calcul
Nu sunt proiectate pentru folosirea în rezolvarea problemei;
Ele se concentrează în special pentru rularea interpretoarelor şitranslatoarelor;
Aceste interpretoare şi translatoare sunt scrise de persoanenumite programatori de sistem;
Nivelele 2 şi 3 sunt întodeauna interpretate.
50
Structura sistemelor de calcul multinivel
ARHITECTURA CALCULATOARELOR – Nivelele unui sistem de calcul
Nivelul 4 şi cele superioare acestuia sunt concentrate pentruaplicaţii ale programatorului;
În scopul rezolvării problemei;
Nivelele 4, 5 şi mai sus sunt de obicei, dar nu întotdeaunasuportate de translatoare.
51
Structura sistemelor de calcul multinivel
ARHITECTURA CALCULATOARELOR – Nivelele unui sistem de calcul
Nivelul 4: nivelul limbajului de asamblare ;
52
Structura sistemelor de calcul multinivel
În realitate o formă simbolică alimbajelor de bază;
O formă mai plăcută decât limbajulcod maşină (adică cu 0 şi 1);
Programele în limbaj de asamblaresunt mai întâi translatate în limbajpentru nivelul 1, 2 sau 3 şi apoiinterpretate de cea mai apropiatămaşină virtuală;
Programul care realizează translaţia se numeşte asamblor.
ARHITECTURA CALCULATOARELOR – Nivelele unui sistem de calcul
Nivelul 5: nivelul limbajelor de nivel înalt ;
53
Structura sistemelor de calcul multinivel
Conține limbaje de nivel înalt şilimbaje orientate pe problemă;
Limbaje folosite în aplicaţiileprogramatorilor pentru rezolvareaproblemei: ALGOL, BASIC, PASCAL,C, LISP, etc.;
Programele scrise în aceste limbajesunt în general translatate lanivelul 3 sau 4 de translatoarenumite compilatoare;
Câteodată sunt şi interpretate.
ARHITECTURA CALCULATOARELOR – Nivelele unui sistem de calcul
Nivelul 6: nivelul limbajelor de nivel foarte înalt ;
54
Structura sistemelor de calcul multinivel
Colecţii de programe carelucrează pe maşini specificproiectate pentru anumiteaplicaţii sau limbaje de nivelfoarte ridicat.
ARHITECTURA CALCULATOARELOR – Nivelele unui sistem de calcul 55
Structura pe nivele a unei instrucţiunidintr-un limbaj de nivel înalt (FORTRAN)
Instructiune
instr. 1
instr. 2
instr. N
Limbaj de nivel
inalt
Limbaj cod
masina
µinstr. 11
µinstr. 12
µinstr. 1K
Arhitectura
calculatorului
µinstr. 21
µinstr. 22
µinstr. 2L
µinstr. N1
µinstr. N2
µinstr. NZ
Limbaj de
microprogramareHardware
Reg. 8
Sumator
Numarator 5
Reg. 16
Scazator
MUX
Sumator
ARHITECTURA CALCULATOARELOR – Nivelele unui sistem de calcul
Compilare şi interpretare
56
ARHITECTURA CALCULATOARELOR – Nivelele unui sistem de calcul 57
Compilare și interpretare
Nivelul Hardware
(MF)
Nivelul
microprogramarii
Limbajul cod
masina
Sistemul de
operare
Limbajul de
asamblare
Limbaje de nivel
inalt
Limbaje de nivel
foarte inalt
Executie directa
Interpretare
Arhitectura
calculatorului
Interpretare partiala
Translatare (asamblare)
Translatare (compilare) sau interpretare
Translatare (pre-compilare) sau interpretare
0
1
2
3
4
5
6
Compilare pură
Interpretare pură
ARHITECTURA CALCULATOARELOR – Nivelele unui sistem de calcul
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.
58
Compilare și interpretare
ARHITECTURA CALCULATOARELOR – Nivelele unui sistem de calcul
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.
2) faza de execuţie (run time), în care programul obiectse execută direct, generând rezultatele.
59
Compilare și interpretare
Program obiectDate Rezultate
CompilatorProgram
sursă
Program
obiect
ARHITECTURA CALCULATOARELOR – Nivelele unui sistem de calcul
Compilatorul translatează programul sursă în programscris în limbaj cod maşină înainte ca acesta să fieexecutat.
Compilatorul este un limbaj translator încorporat înprogramele sistemului cu scopul de a converti programeleaplicaţ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.
60
Compilare și interpretare
ARHITECTURA CALCULATOARELOR – Nivelele unui sistem de calcul
Programul scris de utilizator se numeşte modul sursă sauprogram 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 încod maşină ce rezultă dintr-un limbaj translator.
61
Compilare și interpretare
ARHITECTURA CALCULATOARELOR – Nivelele unui sistem de calcul
Înainte ca programul obiect să fie executat, el este legatîmpreună cu alte module de care CPU poate avea nevoie învederea executării programului;
Procesul de legare se referă la faza de link-editare (linkediting sau link-edit stage) şi pachetul executabil ce seformează se numeşte load module;
Un modul load este un limbaj maşină care este pregătitsă fie executat de calculator;
Pentru a realiza legătura este folosit un program special alsistemului 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.
62
Compilare și interpretare
ARHITECTURA CALCULATOARELOR – Nivelele unui sistem de calcul
Ambele programe obiect şi load pot fi salvate pe discpentru a fi utilizate ulterior astfel încât compilarea şi link-editarea să nu fie nevoie să se realizeze de fiecare datăcând programul este executat.
63
Compilare și interpretare
ARHITECTURA CALCULATOARELOR – Nivelele unui sistem de calcul 64
Compilare și interpretare
Modul sursa
Compilator
Modul obiectAlte module
obiect
Editor de
legaturi
Modul Load
Procesare
CPU
Rezultate
Faza de
compilare
Faza de
Executie
Faza de
Link-Editare
ARHITECTURA CALCULATOARELOR – Nivelele unui sistem de calcul
Un caz particular de compilator reprezintă asamblorul;
Definiţie:
Asamblorul este un program care converteşteinstrucţiunile din limbaj de asamblare
în limbaj cod maşină.
Asambloarele sunt la fel ca şi compilatoarele, ele producprograme obiect;
Fiecare sistem de calcul are în mod normal un limbaj deasamblare;
Astfel, doar un asamblor este recomandat.
65
Compilare și interpretare
ARHITECTURA CALCULATOARELOR – Nivelele unui sistem de calcul
Definiţie:
Interpretarea pură este acel mod de translatare în care programul scris în limbaj sursă rămâne în maşină în timpulexecuţ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 nucrează modulul obiect;
Ele citesc, translatează (interpretează) şi executăprogramul sursă tratând câte o instrucţiune o dată.
66
Compilare și interpretare
ARHITECTURA CALCULATOARELOR – Nivelele unui sistem de calcul
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 esteexecutată.
67
Compilare și interpretare
Date Rezultate
Program
(sursa)
Interpretor
ARHITECTURA CALCULATOARELOR – Nivelele unui sistem de calcul
Dezavantaj: o execuţie efectivă mai lentă a programului;
Erorile sintactice pot fi detectate doar în timpul execuţieiprogramului;
Pentru compilare, compilatorul detectează erorile sintacticeşi le afişează în faza de compilare;
Avantaj: erorile semantice sunt uşor interpretabile şiinterpretorul 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 alunui compilator.
68
Compilare și interpretare
ARHITECTURA CALCULATOARELOR – Nivelele unui sistem de calcul
Pe lângă interpretările şi compilările pure există versiunimixte 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ă.
69
Compilare și interpretare
ARHITECTURA CALCULATOARELOR – Nivelele unui sistem de calcul
Procesul translatării mixte implică două etape:
– compilare
– interpretare
În prima etapă:
Programul sursă este translatat într-un programintermediar (program obiect);
În etapa a doua:
Programul intermediar este interpretat într-un programcod maşină.
70
Compilare și interpretare
ARHITECTURA CALCULATOARELOR – Nivelele unui sistem de calcul
Î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ă.
71
Compilare și interpretare
ARHITECTURA CALCULATOARELOR – Nivelele unui sistem de calcul
Î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.
72
Compilare și interpretare
ARHITECTURA CALCULATOARELOR – Nivelele unui sistem de calcul 73
Compilare și interpretare
Limbaje de nivel inalt
Limbaj cod masina
Limbaj
intermediar de
nivel inalt
Limbaj
intermediar de
nivel coborat
Co
mp
ilare
pu
ra
Inte
rpre
tare
pu
ra
Compilare
Interpretare
ARHITECTURA CALCULATOARELOR – Nivelele unui sistem de calcul
În toate cazurile, exceptând interpretarea pură, rezolvareaunei probleme implică două faze:
1) faza de compilare – căreia îi corespunde timpul decompilare şi din care provin proprietăţile statice ale unuiprogram;
2) faza de execuţie – căreia îi corespunde timpul de execuţieşi din care provin proprietăţile dinamice ale unui program.
74
Compilare și interpretare