Sunteți pe pagina 1din 58

Facultatea de

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 :

minimum 5 prezenţe la orele de laborator /


seminarii ale fiecărei părţi

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+4nepromovat)
– 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

• I. Introducere în Arhitectura şi organizarea


calculatorului
• II. Circuite combinaţionale şi funcţii
booleene
• III. Circuite secvenţiale şi automate
• IV. Reprezentări interne

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

• Toate calculatoarele construite conform


aceleiaşi definiţii a calculului pot calcula exact
aceleaşi lucruri
– dacă au la dispoziţie suficient timp şi memorie
FII 10
Scurtă istorie
a ideilor
• inventarea scrierii poziţionale a numerelor
– indieni, arabi
• inventarea logaritmilor
– John Napier of Edinburgh
• algebra booleană
– George Boole, 1854
• teorema de incompletitudine
– Kurt Gödel, 1935
• conceptul de calculator neumannian
– John von Neumann, 1946
• Toate sunt legate de calcul(ator) în înţelesul de astăzi

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

Limbaj de asamblare Limbaj maşină


(Assembly Language) (Machine Language)
în hexazecimal
inc result FF060A00
mov cl_size,45 C7060C002D00
and mask,128 80260E0080
add marks,10 83060F000A

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

size = value; mov AX,value


mov size,AX

sum += x + y + z; mov AX,sum


add AX,x
add AX,y
add AX,z
mov sum,AX
FII 46
Viziunea programatorului
• Arhitectura setului de instrucţiuni
(Instruction set architecture - ISA)
– Specifică funcţionarea unui procesor
• Defineşte nivelul logic al procesorului
• O ISA poate fi implementată fizic în
diverse feluri, care sunt
– identice la nivel logic (interpretarea funcţionării), dar
– pot diferi ca
• performanţă (viteză)
FII
• preţ 47
Viziunea programatorului:
avantajele limbajelor de nivel înalt
• Dezvoltarea de programe este mai rapidă
• Instrucţiuni de nivel înalt (mai puţine instrucţiuni de scris)
• Întreţinerea programelor este mai uşoară
• Aceleaşi motive ca mai sus
• Programele sunt portabile
• Conţin puţine detalii dependente de maşină
– Se pot folosi cu mici modificări sau chiar fără pe diverse
tipuri de maşini
• Traducerea în limbajul-maşină ţintă urmează să fie
făcută automat de un compilator specific
calculatorului
– Programele în limbaj de asamblare nu sunt portabile
FII 48
Viziunea programatorului:
La ce ajută programarea
în limbaj de asamblare?
• Două mari avantaje:
– eficienţă
• Spaţiu
» cod compact
» şi din limbaj de nivel înalt se ajunge la programe în limbaj-
maşină, dar compactitate mai mică
• Timp
» Legile localităţii cu mai puţine excepţii şi pe ferestre mai
mici, deci execuţie mai rapidă (mai puţine eşecuri)
– accesibilitate la resursele hardware ale sistemului
» deoarece specificităţile maşinii sunt luate în considerare

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)

• Vede trei mari componente:


• Procesorul
• Memoria
• Dispozitivele de intrare – ieşire (I/O devices)
• Legate prin interconexiuni (magistrala)
FII 51
Viziunea arhitectului

Intrări/Ieşiri

interconectare
UCP Memorie

FII 52
Viziunea arhitectului

Input/Output

Magistrala de date

CPU Magistrala de adrese


Memorie

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

• Implementarea: proiectarea acestor


componente (de nivel mai jos).

FII 54
Viziunea implementatorului

Procesor

Regiştrii Calea de UAL


date

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

• În procesor: regiştri  UAL  regiştri


• Între componente: memorie  regiştri

• Orice dată se prelucrează trecând prin


regiştri
• Unele căi sunt asimetrice

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

S-ar putea să vă placă și