You are on page 1of 14

Vektorski raunari

Smetanje podataka i odredjivanje broja


memorijskih banaka

Smetanje podataka
Jedan od kljunih faktora koji utie na vreme

izvrenja programa na paralelnom procesoru je


latentnost memorijskog sistema
vreme od trenutka izdavanja zahteva za pribavljanjem

podatka do trenutaka kada on postane dostupan

da bi se problem reio koristi se paralelne memorijske


banke
nain smetanja podataka igra vanu ulogu, jer moe
smanjiti vreme pristupa elementima polja

Smetanje podataka primer


Paralelni pristup elementima vrsta i
dijagonala
a11 a a a
a a a a
Serijski pristup
a a a a
kolonama
a a a a
12

13

21

22

23

31

32

41

42

33

43

14

24
34
44

M1 M2 M3 M4

Paralelni pristup po kolonama i


dijagonalama

a11
a
a
a
12

Serijski pristup
vrstama

13
14

a
a
a
a

21

22
23
24

a
a
a
a

31

32
33

34

a
a
a
a

41
42
43
44

M1 M2 M3 M4

Paralelni pristup elementima kolona i vrsta

a11
a
a
a
24
33

42

M1

a
a
a
a

12

21
34
43

M2

a
a
a
a

13

22
31

44

M3

a
a
a
a

14
23
32

41

M4

Konflikti kod pristupa dijagonalnim elementima!


elementima

Paralelni pristup
kolonama/vrstama/dijagonalama
(5 memorijskih banaka)

a
a
a

---

a
a
a

---

M1

M2

11

---

a
a

12
21

34
43

44

13
22
31

M3

a
a
a
a

14
23
32
41

M4

---

a
a
a

24
33
42

M5

Teorijski, da bi se obezbedio pristup proizvoljnoj strukturi


dvodimenzionalnog polja, potrebno je da broj memorijskih
banaka bude vei od dimenzije matrice

Odredjivanje broja memorijskih banaka


Poto je osnovna struktura podataka koja se koristi kod

vektorskih raunara polje, nain smetanja elemenata


polja u memorijske module mo e bitno uticati na
efikasnost vektorskog izraunavanja tako to e
smanjiti vreme pristupa elementima polja.
Primer: mnoenje matrica
do 10 i =1, 100
do 10 j =1, 100
A(i,j) = 0.0
do 10 k =1, 100
A(i,j) = A(i,j) +B(i,k) * C(k,j)
10
continue
Petlju po indeksnoj promenljivoj k je mogu e
vektorizovati tako to bi se obavilo mnoenje vrsta
matrice B kolonama matrice C .
Da bi ustanovili efikasnost vektorizacije moramo
razmotriti kako su susedni elementi u matricama B i C
adresirani.

Odredjivanje broja memorijskih banaka


(nast.)

Kada se vri smetanje elemenata


dvodimenzionalnog polja u memeoriju vri se
linearizacija .

Ako se u sukcesivne mem. lokacije smetaju elementi

kolona, znai da u primeru mnoenja matrica elementi


matrice B kojima treba pristupiti u jednoj iteraciji nisu na
sukcesvnim memorijskim adresama ve su udaljeni
medjusobno za

broj_vrsta x duina_rei_u_bajtovima
Razmak

izmedju susednih elemenata kojima treba


pristupiti sukcesivno zove se vektorski korak ili pomeraj
(vector stride).
U primeru mnoenja matrica, vektorski korak za matricu C
je 1, dok je za B jednak 100.
Kada se vektor pribavi u vektorski registar on se pona a
kao da ima logiki susedne elemente.

Odredjivanje broja memorijskih banaka


(nast.)

Vektorski procesor moe da upravlja vektorskim


korakom > 1 pomou vektorskih LOAD/ STORE
operacija.
Ova

sposobnost
da
pristupa
nesekvencijalnim
memorijskim lokacijama i da ih prevodi u strukturu sa
logiki susednim elementima je jedna od znaajnih
prednosti vektorskih procesora nad ke baziranim
procesorima.
Vektorski korak kao i startna adresa vektora mogu se
zapamtiti u neki od registara opte namene.
Zatim se instrukcija tipa LVWS (load_vector_with_stride -napuni vektor sa korakom) mo e upotrebiti da se pribavi
vektor u vektorski registar (slino i za STORE naredbu SVWS).
Kod nekih vektorskih procesora LOAD i STORE uvek imaju
vrednost koraka zapamenu u registru, pa nema posebnih
LOAD i STORE instrukcija

Odredjivanje broja memorijskih banaka


(nast.)

Komplikacije u memorijskom sistemu mogu da


nastupe kad treba podrati korake > 1.
U optem sluaju da bi se mogao pribaviti jedan

element vektora po klok ciklusu, broj memorijskih


banaka mora biti vei od latentnosti memorijskog
sistema (vreme pristupa memeoriji).
Kada postoji korak > 1 moe se desiti da se zahteva
pristup istoj memorijskoj banci veom brzinom od
brzine memorijskog ciklusa.
U takvim sluajevima jedan zahtev mora biti zakanjen
zbog postojanja konflikta.

A1 A2
A6 A7

A3
A8

A4 A5
A9 A1
0

Latentnost =4

M1 M2 M3 M4 M5
M1
M2
M3
M4
M5
t=0

Odredjivanje broja memorijskih banaka


(nast.)
Konflikt kod pristupa memorijskoj bani nastupa ako

Konflikt kod pristupa memorijskoj bani nastupa ako


vai sledei uslov

NZS (vektorski _ korak , Broj _ memorijskih _ banaka )


latentnost _ memorijskog _ sistema
vektorski _ korak
NZS je najmanji zajedniki sadralac.

PRIMER. Pretpostavimo da imamo 16 memorijskih

banaka sa latentnou od 12 clk ciklusa. Koliko


vremena e biti potrebno da se napuni 64-elementni
vektor ako se elementi koji se pribavljaju nalaze na
medjusobnom rastojanju
1 (tj. vektorski korak je 1)
32 (tj. vektorski korak je 32)

Odredjivanje broja memorijskih banaka -primer


REENJE:
a) Poto je broj memorijskih banaka (16) vei od
latentnosti memorijskog sistema (12) za korak 1
imaemo da je vreme potrebno da se pribave 64
elementa
12 + 64 = 76 clk ciklusa ili 1.2 clk/element
b)

NZS (32,16) 32

1 12
32
32

Najgori mogui vektorski korak je umnoak od broja

memeorijskih banaka, kao u ovom primeru.

U ovakvim sitacijama svi elementi kojima treba pristupiti se


nalaze u istoj memorijskoj ban ci pa je latentnost memorijskog
sistema vidljiva za svaki elelent koji treba pribaviti umesto
samo jednom kod prvog pristupa kada je korak 1.
U naem primeru to dovodi do latentnosti od 12 clk ciklusa po
elementu, tj. za ceo vektor: 12 x 64 = 768 clk

Konflikt kod pristupa memoriji nee nastupiti

ako su vektorski korak i broj memeorijskih


banaka uzajamno prosti brojevi i ako postoji
dovoljno memorijskih banaka da ne nastupi
konflikt kada je vektorski korak 1 (odnosno ako
je broj banaka vei od latentnosti
memeorijskog sistema).

You might also like