Documente Academic
Documente Profesional
Documente Cultură
Calcul Curs 4
Cuprins
2
Imbunatatirea Performantelor
Memoriei
Optimizari de Compilator
4
int a[100][100];
int a[100][100];
for (i=0;i<100;i++) {
for (j=0;j<100;j++) {
for (j=0;j<100;j++) {
for (i=0;i<100;i++) {
a[i][j] = 11;
a[i][j] = 11;
Linia 1
Linia 2
Linia 3
Linia 4
Row-Major:
Liniile sunt stocate continuu
Coloana 1 Coloana 2 Coloana 3 Coloana 4
Column-Major:
Coloanele sunt stocate continuu
Row-Major
9
Row-Major
10
inta[100][100];
for(i=0;i<100;i++)
for(j=0;j<100;j++)
a[i][j]=11;
inta[100][100];
for(j=0;j<100;j++)
for(i=0;i<100;i++)
a[i][j]=11;
Numarul de Miss-uri
11
Definim:
linie de memorie/cache
Initializarea Matricelor in C
12
inta[100][100];
for(i=0;i<100;i++)
for(j=0;j<100;j++)
a[i][j]=11;
Buna Localitate
A Datelor
inta[100][100];
for(j=0;j<100;j++)
for(i=0;i<100;i++)
a[i][j]=11;
Masurarea Performantelor
13
Prima implementare
inta[100][100];
for(i=0;i<100;i++)
for(j=0;j<100;j++)
a[i][j]=11;
A doua implementare
inta[100][100];
for(j=0;j<100;j++)
for(i=0;i<100;i++)
a[i][j]=11;
Experimente pe un PC normal
Asezarea Memoriei
15
vector de m pointeri
Henri Casanova, U of Hawaii
Asezarea Memoriei
16
a[8][2]
vector de m intregi
vector de n pointeri
Vectori Dinamici
17
Liste Inserarea
20
Inserarea:
1
2
3
4
1.
2.
3.
4.
5.
6.
1
2
3
1.
2.
3.
4.
5.
Liste Concluzii
22
O optimizare simpla:
In C, puteti utiliza realloc pentru a minimiza copierea elementelor
Trade-off
Inserarea poate dura considerabil mai mult decat in implementarea
traditionala
Au loc mai multe copieri de date
a[0]: miss
(incarcam o noua linie de cache)
a[1]: hit (in linie de cache)
...
a[L-1]: hit(in linie de cache)
a[L]: miss
(incarcam o noua linie de cache)
...
Masurarea L-ului?
25
Pas 1
X X X X X X X X X
Pas 2
Masurarea L-ului?
26
X
Henri Casanova, U of Hawaii
Masurarea L-ului?
27
Timp mediu
de acces la
memorie
pas
1 2 3 4 5 6 7 . . . . . L-2 L-1 L L+1 L+2 . . .
Masurarea L-ului?
28
Exemplificare:
linie de cache
x x x x x x x x x x x
vector
cache
cache
x x x x x x x x x x x x x x x x x x x
array
Astfel:
Daca vectorii sunt mici si intra in cache hit-rate = 100%
Daca vectorii sunt mai mari decat cache-ul hit rate <
100%
Performanta
Dimensiunea
vectorului
1k 2k
Performanta
L2
Dimensiunea
vectorului
L3
1k 2k
Totul intra in L1
Totul intra in L2
Totul intra in L3
Performanta
L1
L2
Dimensiunea
vectorului
L3
1k2k4k8k16k32k64k128k256k512k1M
Henri Casanova, U of Hawaii
Liniile de cache aveau in mod normal 32-byte, dar acum exista foarte
des linii de 64- si 128-bytes
Cache-uri neblocante
La un miss, nu bloca procesorul ci executa instructiuni de dupa load/store-ul
curent
Blocheaza procesorul doar daca aceste operatii utilizeaza date din load
Cache-urile trebuie sa poata sa serveasca multiple accese invechite
Henri Casanova, U of Hawaii
Performanta Cache-urilor
36
Formula e simpla:
timpul de acces la memorie = hit time + miss rate * miss penalty
Miss-rate este procentul de miss-uri pe acces la date si NU la
instructiuni!
Impactul Miss-urilor
37
De ce ne intereseaza?
Pentrru ca putem rescrie/rearanja codul pentru a
utiliza mai bine localitatea datelor
Henri Casanova, U of Hawaii
De ce ne Intereseaza?
38
Cuprins
39
SBC
Addr Data Cmd
SBC
Addr Data Cmd
Bus Addr/Data/Cmd
KS
PL
KBUS
BUS Data
S
TT
S
TI
BUS Addr
S
TS
S
TP
S
MPR - EPROM
SA0
SA1
Cmd
SC
KML
SD1
SA2
S
MLD - DRAM
KLD
SD2
SA3
Cuprins
45
KBUS
46
A
Da
BUS Ocupat
Adr Locala?
Activ Adr/Date
Nu
BUS Ocupat
Activ Adr/Date
Nu
Cerere
Acceptata?
Activ Cmd SC
Da
Da
Transfer in exec
sau acces
exlusiv?
Nu
Descriere KBUS
47
Cuprins
48
KML
49
A
C
Exista cerere
PL la MLD?
Activ Cmd SC
Nu
Nu
Exista cerere
PEXT la MLD?
Da
B
Activ SD2, SA3
Da
Magistrala
ocupata?
Nu
Descriere KML
50
Next
51
Q & A?
Next time:
Structuri de calcul cu prelucrare paralela
Clasificarea sistemelor de calcul:
SISD, SIMD, MISD, MIMD