Documente Academic
Documente Profesional
Documente Cultură
Curs
Dr
agulici Dumitru Daniel
Facultatea de matematic
a si informatic
a,
Universitatea Bucuresti
2014
Cuprins
1 Performata calculatoarelor
Conceptul de performant
a
M
asurarea performantei
Bibliografie:
Adrian Atanasiu:
Arhitectura calculatorului,
Ed. InfoData, 2006
Cuprins
1 Performata calculatoarelor
Conceptul de performant
a
M
asurarea performantei
Cuprins
1 Performata calculatoarelor
Conceptul de performant
a
M
asurarea performantei
Conceptul de performanta
Performanta poate avea mai multe acceptiuni:
(1) la un PC, suntem interesati de timpul de r
aspuns al unui program:
este timpul fizic scurs ntre momentul c
and lans
am cererea si momentul c
and
primim rezultatul; el trebuie s
a fie c
at mai mic;
(2) la un centru de calcul, suntem interesati de productivitate (throughput):
num
arul de sarcini executate n unitatea de timp; el trebuie s
a fie c
at mai mare.
Obs: (1) = (2) dar (2) =
6
(1).
De exemplu, centrul de calcul poate avea calculatoare lente dar multe; atunci
pe fiecare calculator vom avea timpi de r
aspuns mari, dar num
arul de sarcini
executate n unitatea de timp n centrul de calcul va fi tot mare.
Ambele acceptiuni ale performantei necesit
a abord
ari complexe, asa c
a pentru
simplitate trebuie s
a ne limit
am la una din ele.
In cele ce urmeaz
a, performanta se va referi la timpul de r
aspuns.
El priveste rularea unui program cu niste date si depinde de mai multi factori:
codul programului, datele cu care se ruleaz
a, promptitudinea cu care utilizatorul
introduce datele c
and sunt cerute, sistemul de operare, nc
arcarea sistemului
(activitatea concomitent
a a altor utilizatori), arhitectura hardware, etc.
Conceptul de performanta
(P) si a descrie dependenta
ei descresc
atoare n raport cu timpul de r
aspuns (T ), adopt
am formula:
P=
1
(1)
T
Deja putem s
a compar
am performantele sau s
a calcul
am un raport al
performantelor unui program cu niste date fixate, pe dou
a masini X si
def
PX > PY TX < TY ,
Y:
PX
def TY
= n
= n (2)
PY
TX
Conceptul de performanta
Timpul de r
aspuns (al unui program cu niste date) are urm
atoarele
componente:
(1) Timpul consumat cu executarea unor operatii din program;
(2) Timpul consumat cu executarea unor operatii din sistemul de operare, dar
legate de programul nostru (ex: apeluri sistem cerute de program);
(3) Timpul consumat de program n asteaptarea unor evenimente/resurse (ex:
programul este adormit n scanf() astept
and ca utilizatorul s
a introduc
a date
de la consol
a);
(4) Timpul n care programul este suspendat de sistemul de operare, pentru a
executa operatii adminstrative si sarcini legate de alte programe (care ruleaz
a
n paralel cu al nostru).
Not
am (1) + (2) = Timpul CPU
Deci timpul CPU este timpul consumat de program cu executarea unor operatii
(calcule), fie ele din program sau din sistemul de operare dar legate de
program. El este inclus n timpul de r
aspuns, iar ceea ce r
am
ane este timpul
consumat de program n asteptare, fie c
a asteapt
a un eveniment/resurs
a, fie c
a
este suspendat de sistemul de operare pentru a executa operatii adminstrative
si sarcini legate de alte programe.
Conceptul de performanta
Pe anumite sisteme exist
a comenzi cu ajutorul c
arora se pot m
asura si afisa
diferite componente ale timpului de r
aspuns pentru o anumit
a cerere. De
exemplu, n Linux comanda:
time cmd
afisaz
a diferite componente ale timpului de r
aspuns obtinute la executarea
comenzii cmd . De exemplu, poate afisa:
real
user
sys
2m39.000s
1m30.700s
0m12.900s
(timpul de r
aspuns)
(timpul utilizator, (1))
(timpul sistem, (2))
Conceptul de performanta
Distingem ntre:
performanta sistemului = timpul de r
aspuns pe un sistem nenc
arcat;
performanta CPU = timpul CPU.
In cele ce urmeaz
a restr
angem si mai mult domeniul abord
arii si vom considera
c
a performant
a nseamn
a performanta CPU (deci n formula (1) este vorba
de timpul CPU).
Cuprins
1 Performata calculatoarelor
Conceptul de performant
a
M
asurarea performantei
Masurarea performantei
Timpul (CPU) se poate m
asura n:
secunde (s)
cicli de ceas (c)
Leg
atura dintre cele dou
a este dat
a de peroada de ceas (durata ciclului) D
(m
asurat
a n secunde (s), nanosecunde (ns), etc.) sau frecventa F (m
asurat
a
n herzi (Hz), megaherzi (MHz), etc.), dup
a formula:
F =
1
D
C
and m
asur
am n cicli nu mai conteaz
a fizica circuitelor (durata ciclului) ci
doar mp
artirea programului n operatii masina (logica programului) si a
operatiilor masin
a n ciclii (logica circuitelor) - avem astfel posibilitatea s
a
compar
am d.p.v. logic o gam
a mai larg
a de masini.
Masurarea performantei
O m
arime care ne d
a indicatii asupra performantei este num
arul total de cicli
executati C .
El depinde de program, de date si de mp
artirea instructiunilor n cicli (am
presupus programul scris n limbaj masin
a); nu depinde de durata ciclului.
Performanta este cu at
at mai mare cu c
at C este mai mic.
Dac
a presupunem programul scris ntr-un limbaj de nivel nalt, conteaz
a si
mp
artirea codului surs
a n instructiuni masin
a - deci intervine si performanta
compilatorului.
Atunci putem calcula timpul CPU
dup
a formula:
C
(3)
F
Aceast
a formul
a arat
a c
a putem reduce timpul T (deci m
ari performanta)
reduc
and num
arul de cicli executatiC sau/si durata ciclului D .
T =C D =
Este dificil ns
a de redus simultan ambii factori - de obicei reducera unuia
atrage cresterea celuilalt.
Masurarea performantei
Pentru exemplificare, s
a consider
am urm
atorul model simplificat de circuit, care
execut
a c
ate o operatie la fiecare ciclu:
zW
}| {
H
CK
El este construit prin conectarea altor circuite mai simple, n serie, n paralel,
etc. (a se vedea capitolul de circuite logice), are o anumit
a l
atime w , dat
a de
num
arul de intr
ari si de conect
ari n paralel, si o anumit
a naltime H , dat
a de
num
arul de niveluri de conectare n serie; W este cu at
at mai mare cu c
at
datele de prelucrat au o dimensiune mai mare (mai multi biti), iar H este cu
at
at mai mare cu c
at operatia este mai complex
a.
La fiecare tact de ceas (CK ), datele de intrare sunt prelucrate prin circuit si
transformate n niste date de iesire, care la urm
atorul tact vor fi preluate ca
date intrare de un circuit conectat n continuare. Aceast
a prelucrare necesit
a
un anumit timp, iar D trebuie s
a fie acest timp - altfel, dac
a urm
atorul
tact vine prea devreme (nainte ca iesirile s
a fie stabile), vor fi culese (si trimise
mai departe) niste date eronate.
Masurarea performantei
Cresterea D nu este influientat
a de W , deoarece intr
arile sunt procesate n
paralel, ci de H (lungimea traseelor ce trebuie parcurse); n capitolul de circuite
logice vom vedea, de exemplu, c
a o adunare pe 32 biti se face la fel de repede
ca o adunare pe 64 biti, dar o adunare se face mai repede dec
at o nmultire.
S
a consider
am acum c
a circuitul desenat mai sus execut
a o operatie pe
parcursul mai multor cicli - deci sunt necesare mai multe treceri prin el pentru a
se efectua toate prelucr
arile necesare.
Intruc
at efectuarea unei anumite operatii necesit
a o anumit
a cantitate de
prelucr
ari (care depinde de natura matematic
a a operatiei), proiectantul
circuitului va avea de ales ntre dou
a variante:
- va mp
arti prelucrarea n etape putine, realizate c
ate una la ficare ciclu, dar
atunci la fiecare etap
a trebuie f
acute calcule multe, deci H va fi mare si astfel
D va fi mare; atunci, la executarea programului vom avea C mic si D mare;
- va mp
arti prelucrarea n etape multe si atunci la fiecare etap
a trebuie f
acute
calcule putine, deci H si D vor fi mici; atunci, la executarea programului vom
avea C mare si D mic.
Exercitiu rezolvat
Exercitiu rezolvat:
Un program (cu niste date fixate) dureaz
a pe masina A, av
and frecventa
400 MHz , 10 secunde. Dorim o masina B pe care rularea sa dureze
secunde. Proiectantul spune c
a poate creste frecventa, dar programul va
necesita de 1.2 ori mai multi cicli. Care va fi frecventa masinii B ?
Exercitiu rezolvat
Rezolvare:
Din enunt ni se dau:
(3)
ip
A
FB = TCBB = 1.2C
=
TB
= 800 MHz
Comentariu:
Exercitiu rezolvat
Sfat:
In redactarea rezolv
arilor, la efectuarea calculelor, mentionati la fiecare pas si
unit
atile de m
asur
a; utilitatea este urm
atoarea:
Conventie:
In cele ce urmeaz
a, m
arimea fizic
a va fi notat
a cu liter
a mare iar unitatea de
m
asur
a cu liter
a mic
a, pe c
at posibil acceasi liter
a.
De exemplu, C = 10 c nseamn
a c
a num
arul total de cicli executati este
10 (cicli).
Masurarea performantei
Alte dou
a m
arimi care ne dau indicatii asupra performantei sunt num
arul total
de instructiuni executate I si num
arul mediu ce cicli per instructiune
executati (engl: cycles per instruction) CPI , calculat dup
a formula:
CPI =
C
(4)
I
CPI
Masurarea performantei
CPI
ne permite s
a compar
am dou
a implement
ari hardware diferite ale unui
acelasi set de instructiuni.
De exemplu, s
a presupunem c
a avem de implementat o list
a ce contine
instructiunile + (adunare) si (nmultire).
Presupunem c
a avem dou
a implement
ari, n care num
arul de cicli necesari
fiec
arei instructiuni este dat de tabelul:
Implementare 1
Implementare 2
Nr. cicli
10 c
12 c
Nr. cicli
100 c
70 c
Masurarea performantei
Din formulele
I CPI
(5)
F
Ea leag
a cei trei factori cheie ai performantei: num
arul de instructiuni
executate I , num
arul mediu de cicli pe instructiune executati CPI si durata
ciclului D (sau frecventa F ).
Exist
a interdependente ntre factori; de exemplu, sc
aderea CPI poate atrage
cresterea D (deoarece la fiecare ciclu se vor executa operatii mai multe si/sau
mai complexe).
Acesti factori trebuie considerati simultan atunci c
and analiz
am un sistem,
altfel putem trage concluzii eronate privind performanta - a se vedea urm
atorul
exercitiu rezolvat.
Masurarea performantei
este greu de m
asurat - el depinde de program, de date si de arhitectur
a
(mp
artirea instructiunilor n cicli).
CPI
este ns
a greu de m
asurat - el depinde de program, de date si de
arhitectur
a (mp
artirea instructiunilor n cicli).
Masurarea performantei
Uneori poate fi suficient
a o aproximare a lui C , obtinut
a urm
arind executia
programului pe clase de instructiuni. Mai exact:
Consider
am n clase de instructiuni.
De exemplu: clasa instructiunilor de salt (din care face parte goto), clasa
instructiunilor aritmetice aditive (din care fac parte adunarea, sc
aderea), clasa
instructiunilor aritmetice multiplicative (din care fac parte nmultirea,
mp
artirea).
Pentru fiecare clasa
media numerelor
Masurarea performantei
Atunci pentru programul, datele si arhitectura considerate, vom avea:
C'
n
X
(CPIk Ik ) (6)
k=1
Valorile n si CPIk , k {1, . . . , n}, depind doar de arhitectur
apentru o masin
a dat
a ele sunt fixate si pot fi comunicate prin documentatia
masinii.
Valorile Ik ,
arhitectur
a.
Astfel, pe o masin
a dat
a, dac
a vrem s
a afl
am (cu aproximatie) num
arul de cicli
C consumati la rularea unui anumit program cu anumite date, este suficient sa
afl
am valorile Ik , k {1, . . . , n}, iar acestea sunt mai usor de aflat,
deoarece instructiunile se num
ar
a mai usor dec
at ciclii.
Masurarea performantei
Valoarea
calculat
a cu formula (6) este ns
a doar una aproximativ
a.
De exemplu, presupunem c
a pe o masin
a dat
a avem:
Clasa
aditive
multiplicative
Rezult
a
Instructiuni
adunare
sc
adere
nmultire
mp
artire
Consider
am un program si niste date a.. la rulare se execut
a o adunare si o
nmultire.
Valoarea exact
a a lui C este: 1 + 10 = 11.
Valoarea lui C calculat
a cu formula (6) este: 2 + 20 = 22.
Consider
am acum un program si niste date a.. la rulare se execut
a o sc
adere si
o mp
artire.
Valoarea exact
a a lui C este: 3 + 30 = 33.
Valoarea lui C calculat
a cu formula (6) este tot: 2 + 20 = 22.
Masurarea performantei
Intr-adev
ar, cu formula (6) am considerat de fiecare dat
a c
a se execut
ao
instructiune aditiv
a si o instructiune multiplicativ
a, nesesiz
and c
a la primul
program se execut
a cele mai rapide instructiuni din cele dou
a clase, iar la al
doilea program cele mai lente.
Valoarea lui C calculat
a cu formula (6) se apropie de valoarea exact
a cu at
at
mai mult cu c
at din fiecare clas
a instructiunile se execut
a cu ponderi mai
apropiate (cam tot at
atea adun
ari c
ate sc
aderi, cam tot at
atea nmultiri c
ate
mp
artiri).
Exercitiu rezolvat
Exercitiu rezolvat:
Pe o masin
a dat
a, avem urm
atoarele clase de instructiuni si
clasa
A
B
C
CPI
asociate:
CPIclasa
1
2
3
Consider
am dou
a programe si niste date, pentru care s-au m
asurat:
Program
programul
programul
1
2
A
2
4
B
1
1
C
2
1
Exercitiu rezolvat
Rezolvare:
a) Not
am:
Exercitiu rezolvat
b) Not
am:
Exercitiu rezolvat
c) Not
am:
CPI 1 =
CPI 2 =
C1
I1
C2
I2
=
=
c
10c
5i = 2 i (sau 2cpi ).
9c
c
6i = 1.5 i (sau 1.5cpi ).
Comentariu:
1
2
Am obtinut CPI > CPI , ceea ce pare s
a arate c
a programul 2 este
mai performant, ca la b) (si n contradictie cu a)).
Intruc
at am v
azut c
a b) ofer
a r
aspunsul corect, rezult
a c
a, cel putin n acest
caz, m
arimea CPI descrie performanta mai bine dec
at m
arimea I .
R
aspunsul de la c) era de asteptat, deoarece programul 2 este mai rapid desi
execut
a mai multe instructiuni si de aceea trebuie ca instructiunile executate de
el s
a fie mai rapide.
Oricum, acest exercitiu ilustreaz
a ce am spus mai devreme, c
a factorii care
influienteaz
a performanta trebuie considerati simultan atunci c
and analiz
am un
sistem, altfel putem trage concluzii eronate privind performanta.
Masurarea performantei
O alt
a m
arime care ne d
a indicatii asupra performantei este frecventa de
executare a instructiunilor:
FI =
Intruc
at de obicei valorile lui
FI
I
(7)
T
(m
asurate n instructiuni pe secund
a) sunt
MIPS =
106 la numitor,
I
(8)
T 106
m
asurat
a n milioane de instructiuni pe secund
a (millions instructions per
second).
Masurarea performantei
Ca si n cazul altor m
arimi discutate mai devreme, FI si MIPS trebuie
considerate mpreun
a cu ceilalti factori atunci c
and analiz
am un sistem, altfel
putem trage concluzii eronate privind performanta - a se vedea urm
atorul
exercitiu rezolvat.
Exercitiu rezolvat
Exercitiu rezolvat:
Pe o masin
a dat
a, av
and frecventa de
de instructiuni si CPI asociate:
clasa
A
B
C
Consider
am dou
a programe si niste date, pentru care s-au m
asurat:
Program
programul
programul
1
2
A
5
10
B
1
1
C
1
1
Exercitiu rezolvat
Rezolvare:
Situatia seam
an
a cu cea din exercitiul precedent si atunci la fel ca acolo putem
afla num
arul total de cicli executati. Acum stim n plus si frecventa, iar aceasta
ne va permite ca din num
arul de cicli s
a afl
am timpii CPU.
Not
am:
Exercitiu rezolvat
a) Folosind formula (6), avem:
T 1 = CF = 50010c
MHz =
= 2 2 108 s
T 2 = CF = 50015c
MHz =
1
10c
500106 Hz
15c
500106
2
c
s
10c
500106
c
s
= 3 108 s
Exercitiu rezolvat
b) Avem:
I1
T 1 106 mips
I2
T 2 106 mips
7i
= 2108
106 mips = 350 mips
= 31012i
8 106 mips = 400 mips
1
2
Comentariu: am obtinut MIPS < MIPS , ceea ce pare s
a arate c
a
programul 2 este mai performant, n contradictie cu a).
MIPS 1 =
MIPS 2 =
Am v
azut ns
a c
a r
aspunsul corect este cel dat de a). Explicatia erorii de la b)
const
a n faptul c
a programul 2 execut
a instructiuni rapide (deci execut
a multe
instructiuni pe secund
a), dar foarte multe (si astfel necesit
a multe secunde, mai
multe dec
at programul 1).
Asadar, un MIPS mare nu nseamn
a neap
arat un timp mai scurt.
Deci, parametrii performantei trebuie analizati mpreun
a, nu izolat.