Documente Academic
Documente Profesional
Documente Cultură
Informatică - Iaşi
Arhitectura
Calculatoarelor
Curs pentru anul I Informatică
FII 2008-2011
hluchian@infoiasi.ro
Structura cursului
• Prelegeri
• 2 ore pe săptămână: marţi 10-12 / 12-14, sala C2
• Ore de laborator / seminar
• 2 ore pe săptămână
• Două jumătăţi de semestru:
• Săptămânile 1-7 – prof.dr. Henri Luchian
– Probă finală în săptămâna a şaptea
– Verificare pe parcurs: nu poate fi repetată decât odată cu
întregul curs!!
• Săptămânile 8-14 – lect.dr. Vlad Rădulescu
– Probă finală în sesiunea de examene – ianuarie
– Poate fi repetată doar în anul academic curent !!
FII 2
• Cerinţă eliminatorie pentru
prezentarea la examen :
FII 3
Notare
• 3 note de ponderi egale:
1. activitate şi test la laborator / seminar
2. proba scrisă din săptămâna a şaptea
3. proba scrisă din sesiunea de examene
• Nota finală:
– trei note de promovare: media aritmetică, rotunjire
– două note de promovare şi un 4: media aritmetică,
trunchiere (exemple: 9 + 10 + 4 7; 5+5+4nepromovat)
– două note de promovare şi un 3 (2): idem, minus 1
• Exemple: 10 + 10 + 3 6 ; 7 + 8 + 2 nepromovat
– mai puţin de atât sau mai puţin de 5 prezenţe la
laborator/seminar: nepromovat
• Eventuală re-examinare (unică!) sau mărire:
doar proba din sesiune
FII 4
Autori ale căror
prezentări publice au fost folosite pentru
pregătirea acestei forme a cursului
• Sivarama Dandamundi
• Jerry Breecher
• Randy Katz
• Michel Allemand
• Daniel Amyot
• John Morris
• Mikko Lipasti
• Gregory Byrd
FII 5
CUPRINS
FII 6
Capitolul I
INTRODUCERE
FII 7
&I.1. EVOLUŢIE
FII 8
Când au apărut
maşinile de calcul?
• După fiecare redefinire a noţiunii de calcul
– abac: adunări
– roţi dinţate Leibniz (2) şi Pascal (10): adunări,
înmulţiri
– Babbage: instrucţiuni din exterior, calcul ramificat
– von Neumann: program memorat; execuţie în
secvenţă de instrucţiuni; ierarhii de memorii
– calculatoare “paralele” (de fapt, calcul paralel)
– calcul(atoare) probabilist(e), neuronal(e),
evolutiv(e), cuantic(e) …
• Încearcă automatizarea calculului în înţelesul
din acel moment
FII 9
Maşini de calcul universale
• O maşină de calcul universală se poate
comporta ca oricare maşină de calcul particulară
– Exemple:
• Introducând în calculator un program corect de lucru cu
» matrici, calculatorul se va comporta ca o maşină de calcul
cu matrici
» linii, unghiuri, forme – maşină de proiectare grafică
» cuvinte, paragrafe, texte – maşină de tehnoredactat
FII 11
Scurtă istorie
- invenţii abstracte şi concrete
• 1850: George Boole inventează algebra booleană
– propoziţii logice sunt transformate în simboli
– calcule cu propoziţii logice, folosind reguli de tip matematic
• 1938: Claude Shannon leagă algebra booleană de circuite
(comutatoare)
– în teza sa de dizertaţie
• 1945: John von Neumann proiectează primul calculator cu program
memorat
– comutatoarele erau lămpi
• 1946: ENIAC – primul calculator electronic
– 18,000 de lămpi
– 5000 de adunări, sute de înmulţiri pe secundă
• 1947: Shockley, Brittain şi Bardeen inventează tranzistorul
– permite integrarea mai multor circuite într-un modul
– deschide drumul electronicii moderne
FII 12
Scurtă istorie
a calculatoarelor
• 1642-1945 : Calculatoare mecanice
– Leibniz, Pascal, Babbage; Z1, Mark I
• 1945-1955 : Lămpi
– ENIAC, EDSAC, UNIVAC, IBM 70x
• 1952: primul succes comercial – 19 calculatoare IBM
vâdute
• 1955-1965 : Tranzistori
– PDP-1, IBM 7094, CDC 6600,
• 1965-1980 : Circuite integrate
– IBM 360, PDP-11, 4004, 8008, VAX
– VLSI, ULSI
FII 13
Scurtă istorie
a microprocesoarelor
• IBM-PC (8088) : 1980
• Mac Plus (68000) : 1984
• 80486 : 1990
• Pentium : 1994
• Pentium II : 1997
• Pentium III : 1999
• Pentium IV : 2001
FII 14
&I.2.
CALCULATOARE VON NEUMANN
FII 15
Calculatoare von Neumann
• program memorat
– memorie infinită (ideal), timp de acces egal
• realizată practic prin ierarhii de memorie
• la execuţie, după o instrucţiune i urmează
– instrucţiunea memorată imediat după ea (regula)
– instrucţiunea indicată de i , dacă i este instrucţiune
de control (excepţia)
• adresa instrucţiunii următoare se află într-un
registru – PC
• în fiecare moment, o singură instrucţiune nouă
este încărcată pentru execuţie
FII 16
Calculatoare von Neumann
• Anterior:
– conceptul de automatizare a operaţiilor luate
separat (Pascal, Leibniz)
– conceptul de program – exterior (Babbage)
– conceptul de calcul ramificat / control
• Conceptul de program memorat
– John von Neumann e.a. (1946)
– Concept arhitectural fundamental -
procesoarele moderne
FII 17
Calculatoare von Neumann
• Programul şi datele - stocate în (aceeaşi)
memorie
• ideal: infinită, omogenă (locaţii la fel de rapid accesabile)
• practic: o ierarhie de memorii, fiecare fiind omogenă
• Program counter (PC) indică locul din memorie
al instrucţiunii de executat
• conţinutul PC este actualizat la execuţia fiecărei
instrucţiuni
• o dată sau de două ori
• Instrucţiunile programului sunt aduse pe rând
din locaţii de memorie în procesor
• regula: locaţii succesive incrementare PC
• excepţia: instrucţiuni de salt
• ordine fizică şi ordine logică
FII 18
Arhitectura
unui sistem de calcul
programe utilizator
sistem de
compilatoare operare
LIMBAJ MAŞINĂ
procesor-
memorie intrări / ieşiri
proiectare digitală
circuite
FII 19
Componentele hardware ale unui
calculator
Procesor
Intrări (Input)
Control
Memorie
Calea de date
Ieşiri (Output)
FII 20
Organizarea unui calculator
Magistrala sistem
Cache N2
Memorie
Procesor centrală
Adaptor
CPU Cache N1
Magistrala de intrări/ieşiri
Controler Controler Controler
Reţea
FII 21
&I.3. LEGI EMPIRICE
FII 22
Legi empirice
• Legi ale oricărei ştiinţe depind într-un fel sau
altul de experiment sau de observaţii în lumea
concretă
– unele ştiinţe sunt – sau au capitole – preponderent
empirice (medicina)
• Repetabilitatea, inerentă noţiunii de
experiment, duce la ideea de legi empirice:
adevăruri valabile de cele mai multe ori,
conform observaţiilor
• Formulate în Informatică încă de la începuturi
– inginerie
FII 23
Legi empirice în informatică
• Există legi empirice aplicabile hard-ului
sau soft-ului:
– legea “90:10” (Donald Knuth): 90% din timpul
de execuţie al unui program, este utilizat
pentru 10% din instrucţiuni;
– legea lui Amdahl: eficienţa maximă în
îmbunătăţirea unui sistem (concret sau
abstract) se atinge dacă se optimizează
subsistemul cel mai folosit
– legile localizării – spaţială, temporală.
FII 24
Legea lui Amdahl
• Îmbunătăţirea unui sistem trebuie făcută în
partea cel mai frecvent folosită.
1
A(a, fa )
fa
(1 fa )
a
• Pentru creşteri semnificative, trebuie ca a şi fa
să fie cât mai mari.
– Exemplu: Dacă procesorul lucrează 50% din timp
şi devine de două ori mai rapid, atunci A = 4/3.
– Observaţie. Sumatorul va fi cel mai intens
îmbunătăţit.
FII 25
Legile localizării (pentru instrucţiuni)
• Localizare spaţială:
– dacă la un moment dat se execută o
instrucţiune i, atunci este probabil ca la
momente apropiate să se execute
instrucţiuni din apropierea lui i (în ordine
fizică)
• spaţiul de memorie, în care se află instrucţiunile.
• Localizare temporală:
– dacă la un moment dat se execută
instrucţiunea i, atunci este probabil ca
instrucţiunea i să se execute la momente
apropiate în timp
FII 26
Ordine fizică şi ordine logică
• Instrucţiunile de executat se află în memorie într-
o anumită ordine: ordinea fizică.
• Ele se citesc din memorie şi se execută
• regula: în ordinea în care sunt memorate
• excepţia: sărind peste un număr de instrucţiuni
• Rezultă ordinea logică a instrucţiunilor
• În ordinea logică la o anumită rulare, fiecare instrucţiune din
ordinea fizică poate să apară de 0, 1, 2, … ori
• Legile localizării indică un tip esenţial de relaţie
între ordinea fizică şi ordinea logică:
» Secvenţa de instrucţiuni din ordinea logică este
alcătuită în general din sub-secvenţe construite din
porţiuni restrânse ale secvenţei de instrucţiuni din
ordinea fizică.
FII 27
• Legile localizării: în fiecare interval “mic”
de timp, programul utilizează o mică
porţiune din spaţiul de adrese
• Valabil pentru instrucţiuni ca şi pentru date
– Temporală: iteraţii (program), reutilizări
– Spaţială: ordinea fizică; tablouri de date
• De mai bine de 25 de ani, soluţiile
hardware se bazează pe legile localităţii
pentru a câştiga viteză
• Un exemplu: ierarhia de memorii
FII 28
&I.4. IERARHIA DE MEMORII
FII 29
Ierarhia de memorii
• Soluţionează două probleme:
1. Programele foarte mari nu încap în
memoria principală
Nivelul inferior al ierarhiei (memoria
secundară)
2. Necesitatea creşterii vitezei de execuţie
a programelor
Nivel superior al ierarhiei (memoria cache)
FII 30
Ierarhia de memorii
• Niveluri:
1. regiştrii-generali – procesor ( 1/4 Ko)
2. memoria cache ( 1 Mo)
3. memoria RAM ( 4 Go)
4. memoria secundară – disc (1 To)
• Preţul pe bit scade pe măsura depărtării de procesor.
• Timp de comunicare şi capacitate de
memorare foarte mici pe primele două niveluri
• corespunzând “ferestrelor” din legile localizării
• dar comparativ foarte mari pe ultimul
• permiţând memorarea programelor foarte mari
FII 31
Nivelurile ierarhiei de memorii
Capacitate Nivel superior
Timp de acces
Cost Controlul transferului Viteză
Unitatea de transfer mai mare
Regiştrii CPU
4-64 octeţi Regiştri
1 ns
Instr. / operanzi Program utilizator
Memorie Cache 1-8 octeţi
Nivel 1: <16 Kilo-octeţi Cache
Nivel 2: < 2Mega-octeţi
3 ns; 15 ns Hardware
0.1 cenţi/bit Blocuri (Controller cache)
Memorie principală 8-128 octeţi
< 4Giga-octeţi Memorie principală
150 ns
.01-.001 cenţi/ bit Sistemul de operare
Pagini 512-4 Kilo-octeţi
Disc
100 Giga-octeţi Disc
5 ms Utilizator
(5,000,000 ns) Fişiere Mega-octeţi
10-5 - 10-6 cenţi/bit Capacitate
Bandă ? bandă mai mare
secunde-minute
10-8 cenţi/bit Nivel inferior
32
Ierarhia de memorii
• Programul întreg se află în memoria secundară
• Cu fiecare nivel urcat în ierarhie, sunt aduse de pe
nivelul inferior “ferestre” din ce în ce mai mici ale
programului.
• Execuţia – direct din cache.
– succes: instrucţiunea următoare este găsită în cache
– eşec : instrucţiunea următoare trebuie adusă de pe un
nivel inferior
– eşecuri dese ar cauza o execuţie mai lentă decât dacă
instrucţiunile ar fi aduse direct din memoria secundară
• Legile localizării fac ca ierarhiile de memorii să
accelereze execuţia programelor
• pe porţiuni.
• O valoare uzuală a ratei de succes poate fi de ordinul a
95%.
FII 33
&I.5.
ARHITECTURA
CALCULATORULUI:
VIZIUNI POSIBILE
FII 34
Arhitectura calculatorului
(Computer Architecture)
• Ce este arhitectura unui calculator?
Arhitectura setului
Arhitectura de instrucţiuni (ISA)
calculatorului = +
organizarea maşinii
Viziunea
Arhitectura setului programatorului
=
de instrucţiuni asupra maşinii
FII 35
&I.5.1.
PROGRAMATOR ŞI UTILIZATOR
FII 36
Viziunea utilizatorului
Sistemul
hardware
FII 37
Viziunea programatorului
• Depinde de tipul şi nivelul limbajului utilizat
• O ierarhie a limbajelor:
– Limbajul maşină
– Limbajul de asamblare creşterea
nivelului
– Limbaje de nivel înalt de abstracţie
• Programe - aplicaţii
• Independente de maşină:
– Limbaje de nivel înalt / programe - aplicaţii
• Specifice maşinii:
– Limbajele maşină şi de asamblare
FII 38
Viziunea programatorului
Independente
de maşină
Limbaje de
nivel scăzut
Specifice
fiecărei
maşini
FII 39
Viziunea programatorului
• Limbajul maşină
– Caracteristic fiecărui procesor
– Constă din cuvinte peste alfabetul {0, 1}
1111 1111 0000 0110 0000 1010 0000 0000
• Limbajul de asamblare
– Nivel ceva mai înalt
• mnemonice, adrese simbolice
– Mai apropiat de modul de înţelegere al omului
– Corespondenţă 1-la-1 cu majoritatea
instrucţiunilor din limbajul maşină
inc count
FII 40
Comparaţie
FII 41
Viziunea programatorului
• Asambloarele (assemblers) traduc din
limbaj de asamblare în limbaj maşină
• Dual: dez-asamblare
• Compilatoarele traduc din limbaje de
nivel înalt în limbaj maşină
– Direct sau
– Indirect, via limbaj de asamblare
• interpretoare
FII 42
Viziunea programatorului
Compilator
Assembler
FII 43
Viziunea programatorului
• Limbaj de nivel înalt
În C:
result =
count1 + count2 + count3 + count4
• Limbaj de nivel jos
În limbaj de asamblare Pentium:
mov AX,count1
add AX,count2
add AX,count3
add AX,count4
mov result,AX
FII 44
Niveluri de limbaje
• Unele instrucţiuni simple de nivel înalt pot
fi exprimate printr-o singură instrucţiune în
limbaj de asamblare:
Limbaj de asamblare C
inc result result++;
mov size,45 size = 45;
and mask1,128 mask1 &= 128;
add marks,10 marks += 10;
FII 45
Niveluri de limbaje
• Cea mai frecventă situaţie este cea în care o
instrucţiune de nivel înalt este echivalentă cu o
secvenţă de instrucţiuni în limbaj de asamblare:
C Limbaj de asamblare
FII 49
&I.5.2.
ARHITECT ŞI IMPLEMENTATOR
FII 50
Viziunea arhitectului
• Proiectarea la nivel înalt
» ca şi arhitectul unei clădiri.
• Foloseşte “blocuri de construcţie” de nivel înalt, pe
care nu le detaliază până la ultimul nivel
» d.e., Unitatea Aritmetică şi Logică (UAL)
Intrări/Ieşiri
interconectare
UCP Memorie
FII 52
Viziunea arhitectului
Input/Output
Magistrala de date
Magistrala de control
FII 53
Viziunea implementatorului
• De la proiectul arhitectului coboară la
nivelul porţilor logice digitale / al circuitelor
• Exemplu: Procesorul constă din:
– Unitatea de control
– Calea de date (Datapath)
» UAL
» Regiştri
FII 54
Viziunea implementatorului
Procesor
Unitate de
control
FII 55
Viziunea implementatorului – calea de date
Bus C Bus A Bus B
Magistrala
sistem
Regiştrii generali
PC
IR
MAR
MDR
Regiştrii de interfaţă A B
cu memoria Control UAL UAL
C
FII 56
Sensul transferurilor de date
FII 57
Viziunea implementatorului
B A Cin F1 F0
I0 S1 S0
I1
M
I2 U O F
I3 X
A Sum
B Sumator
F0
Cin Cout Cout
FII 58