78 4.4.1. Hazardi uzrokovani zavisnošću po podacima Pristup zajedničkim varijablama za čitanje/pisanje od strane različitih instrukcija koje se nalaze u protočnom sistemu, može dovesti do različitih rezultata ako se instrukcije izvedu različitim redoslijedom. Ovaj tip zavisnosti između instrukcija se naziva zavisnost po podacima. Mijenjanje originalnog redoslijeda instrukcija je dopustivo samo ako to mijenjanje nema uticaja na konačan rezultat izvršenja programa. Ukoliko se instrukcije, između kojih postoji zavisnost po podacima, ne izvode po originalnom redoslijedu, dolazi do logičkih hazarda (sl. 4.9). Sl. 4.9 Mogući hazardi uslijed zavisnosti po podacima Posmatrajmo dvije instrukcije I i J, pri čemu J logički slijedi instrukciju I, a između njih postoji neka od zavisnosti sa sl. 4.9. Ukoliko dođe do promjene originalnog redoslijeda instrukcija, dolazi do nekorektnog čitanja ili upisa, odnosno dolazi do hazarda. Hazardi treba da budu onemogućeni tako da se spriječi izvođenje instrukcije J prije instrukcije I. Ako se sa D(I) označi domen instrukcije I (skup varijabli koje instrukcija I čita/ koristi kao operande), a sa R(I) označi opseg/skup varijabli u koje instrukcija I upisuje vrijednosti, onda između instrukcija I i J postoji zavisnost po podacima ako je: R(I) ∩ D(J) ≠ 0 ( RAW zavisnost po podacima) R(I) ∩ R(J) ≠ 0 ( WAW zavisnost po podacima) D(I) ∩ R(J) ≠ 0 ( WAR zavisnost po podacima)
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
78
4.4.1. Hazardi uzrokovani zavisnošću po podacima
Pristup zajedničkim varijablama za čitanje/pisanje od strane različitih instrukcija koje se
nalaze u protočnom sistemu, može dovesti do različitih rezultata ako se instrukcije izvedu
različitim redoslijedom. Ovaj tip zavisnosti između instrukcija se naziva zavisnost po podacima.
Mijenjanje originalnog redoslijeda instrukcija je dopustivo samo ako to mijenjanje nema uticaja
na konačan rezultat izvršenja programa.
Ukoliko se instrukcije, između kojih postoji zavisnost po podacima, ne izvode po
originalnom redoslijedu, dolazi do logičkih hazarda (sl. 4.9).
Sl. 4.9 Mogući hazardi uslijed zavisnosti po podacima
Posmatrajmo dvije instrukcije I i J, pri čemu J logički slijedi instrukciju I, a između njih
postoji neka od zavisnosti sa sl. 4.9. Ukoliko dođe do promjene originalnog redoslijeda
instrukcija, dolazi do nekorektnog čitanja ili upisa, odnosno dolazi do hazarda.
Hazardi treba da budu onemogućeni tako da se spriječi izvođenje instrukcije J prije
instrukcije I. Ako se sa D(I) označi domen instrukcije I (skup varijabli koje instrukcija I čita/
koristi kao operande), a sa R(I) označi opseg/skup varijabli u koje instrukcija I upisuje
vrijednosti, onda između instrukcija I i J postoji zavisnost po podacima ako je:
R(I) ∩ D(J) ≠ 0 ( RAW zavisnost po podacima)
R(I) ∩ R(J) ≠ 0 ( WAW zavisnost po podacima)
D(I) ∩ R(J) ≠ 0 ( WAR zavisnost po podacima)
79
Ipak, mogućnost preuređenja redoslijeda izvršenja instrukcija je poželjna, jer se time može
postići veće iskorištenje protočnog sistema i povećati brzina obrade. Pri tome, međusobne relacije
u redoslijedu izvođenja između instrukcija između kojih postoji zavisnost po podacima treba da
budu sačuvane.
Primjer efekta preuređenja instrukcija dat je na sl. 4.10 za 7-stepeni protočni sistem. U fetch
stepenu (F), vrši se pribavljanje instrukcije iz memorije za jedan ciklus. U stepenu dekodiranja
(D), dekodira se funkcija koju treba realizovati, i identifikuju potrebni resursi (registri, magistrale,
funkcionalne jedinice). Stepen I vrši rezervisanje resursa onemogućavanjem pristupa resursima za
izvođenje drugih instrukcija. U ovoj fazi se takođe vrši očitavanje operanada iz registara i
dovođenje operanada na ulaz funkcionalnih jedinica. Instrukcije se izvode u jednom ili više
izvršnih (E)stepeni. U W stepenu se vrši upis rezultata u odredište.
Sl. 4.10 Protočno izvođenje instrukcija X = Y + Z, i A = B * C u originalnom i preuređenom
redoslijedu
80
U primjeru je ilustrovano izvođenje instrukcija visokog nivoa X = Y + Z, i A = B * C u
protočnom sistemu. Na slici 4.10 b) je predstavljeno izvođenje po originalnom redoslijedu
instrukcija. Osjenčeni kvadratići reprezentuju cikluse kada je iniciranje instrukcija blokirano ili
zbog konflikta u pristupu resursima, ili zbog zavisnosti po podacima. Iniciranje izvršenja prve
dvije Load instrukcije je u sukcesivnim ciklusima. Add instrukcija čeka na iniciranje 3 ciklusa,
dok oba operanda ne postanu raspoloživa. Sličan je slučaj i sa smještanjem rezultata sabiranja u
memoriju. S obzirom da ova instrukcija mora da čeka, s jedne strane raspoloživost D stepena (3
ciklusa) a zatim i raspoloživost rezultata (2 ciklusa), smještanje rezultata operacije sabiranja u
memoriju ima ukupno 5 ciklusa kašnjenja. Slična razmatranja su i za izvođenje operacije
množenja.
Na sl. 4.10 c), prikazano je izvođenje istih operacija sa preuređenim redoslijedom. Ideja je da
se sve 4 load operacije izvedu na početku, a operacije add i multiply kasnije, čime se obezbjeđuje
bolja raspoloživost podataka za ove instrukcije i smanjenje broja ciklusa čekanja za izvršenje
ovih instrukcija.
Raspoređivanje instrukcija za izvođenje
Planiranje redoslijeda izvršenja instrukcija je moguće u fazi prevođenja (statičko
raspoređivanje) i u toku samog izvršenja (dinamičko raspoređivanje).
Statičko raspoređivanje obavlja prevodilac, na osnovu analize programa i utvrđivanja
zavisnosti po podacima između instrukcija. Prevodilac nastoji povećati rastojanje između
iniciranja izvršenja instrukcija kod kojih postoji zavisnost po podacima. Na taj način se
obezbjeđuje raspoloživost operanada za pristup od strane instrukcije čije izvršenje zavisi od
izvršenja neke prethodne instrukcije, kao što je to ilustrovano prethodnim primjerom. Ova tehnika
je jednostavnija za implementaciju, ali se u procesorima visokih performansi primjenjuje
dinamičko raspoređivanje instrukcija za izvršenje, za što je potrebna odgovarajuća hardverska
podrška.
Dinamičko raspoređivanje je prvi put implementirano u sistemu IBM 360/91 sa višestrukim
funkcionalnim jedinicama za operacije u pokretnom zarezu. Koncept hardverske platforme je
predstavljen na sl. 4.11.
81
Sl. 4.11 Protočni procesor sa višestrukim funkcionalnim jedinicama i distribuiranim
stanicama za rezervaciju na bazi markiranja. (sl.6.12)
Šema (Tomasulov algoritam) razrješava konflikte u korištenju hardverskih resursa i
obezbjeđuje redoslijed izvršenja određen zavisnošću po podacima na bazi markacije registara
(register tagging) . Ukoliko pri iniciranju izvršenja instrukcija potrebni operandi nisu raspoloživi,
onda se instrukcija prosljeđuje u rezervacionu stanicu (RS) sa odgovarajućim markiranjem
potrebnih registara/operanada. Instrukcija čeka u RS dok se prethodno ne izvedu sve potrebne
instrukcije u cilju očuvanja zavisnosti po podacima i dok potrebni operandi ne postanu
raspoloživi. Kada se ti uslovi ispune (signaliziranjem odgovarajućom markacijom od strane tag
jedinice), instrukcija se iz RS prosljeđuje funkcionalnoj jedinici za izvršenje. Na sl. 4.12.
prikazano je izvršavanje instrukcija X = Y + Z, i A = B * C sa minimalnim brojem (3) registara,
koristeći Tomasulov algoritam. Kada se pojavi rezultat neke operacije na magistrali sa odnosnom
markacijom, onda i odredišni registar i RS koja očekuje odnosni podatak, ažuriraju svoj sadržaj.
Ako time neka instrukcija/operacija postaje raspoloživa za izvršenje, onda se ona prosljeđuje
funkcionalnoj jedinici sa potrebnim operandima.
82
Sl. 4.12 Dinamičko raspoređivanje instrukcija Tomasulovim algoritmom.
Sl. 4.13 Dinamičko raspoređivanje instrukcija za izvršenje u CDC 6600 računaru.
Slično rješenje primijenjeno takođe davno, u računaru CDC 6600 (sl. 4.13). Instrukcije koje
dolaze u protočni sistem se iniciraju za izvršenje i prosljeđuje odgovarajućoj izvršnoj jedinici bez
83
obzira na raspoloživost operanada. U izvršnim jedinicama, instrukcije sa svojim kontrolnim
informacijama čekaju u baferu na potrebne podatke, koje produkuju druge instrukcije. Za
kontrolu raspoloživosti podataka, omogućenje instrukcija i upravljanje funkcionalnim jedinicama
koristi se centralizovani kontroler (scoreboard).
4.4.2. Strukturni hazardi
Ovaj tip hazarda se javlja kada dolazi do konflikta u korištenju hardverskih resursa procesora.
Npr. ako posmatramo idealan slučaj rada skalarnog RISC procesora koji izvodi jednu instrukciju
u svakom ciklusu, onda je memorijski port stalno zauzet. Ukoliko se izvodi instrukcija
Load/Store onda će se zahtijevati (dodatno) obraćanje memoriji za pribavljanje/smještanje
operanda, što generiše konflikt u pristupu memoriji Sl. 4.14).
Sl. 4.14 Zastoji kod protočne obrade zbog strukturnih hazarda.
S obzirom na to da je procenat Load/Store instrukcija u ukupnom broju instrukcija koje se
izvršaaju visok, ovi konflikti mogu značajno da degradiraju performanse sistema. Da bi se riješio
ovaj problem RISC procesori često koriste dual-port memorije, tako da se instrukcijama i
podacima može pristupati nezavisno.
Sličan problem nastaje kada više instrukcija zahtijeva korištenje iste funkcionalne jedinice
istovremeno. U cilju eliminisanja ovakvih konflikata, kako je to prezentovano i u prethodnim
primjerima, realizuju se procesori sa višestrukim funkcionalnim jedinicama.
84
4.4.3. Upravljački hazardi
Zastoj u protočnom sistemu može biti uzrokovan i promjenom instrukcionog toka
(uzrokovanom izvođenjem instrukcijama grananja i drugih instrukcija koje mijenjaju kontrolni
tok). Pri promjeni instrukcionog toka potrebno je izračunati ciljnu adresu grananja i eventualno
uslove na osnovu kojih se odlučuje o grananju (kod instrukcija uslovnog grananja). Ciljna adresa
nije uvijek unaprijed poznata: ona se često mora izračunati/dobiti u toku izvršenja instrukcije.
Izvršavanje instrukcija grananja posjeduje određene specifičnosti koje mogu uticati na pojavu
zastoja u protočnom sistemu a to su:
• Instrukcija koja se izvodi nakon instrukcije grananja zavisi od rezultata izvršenja same instrukcije grananja,
• Operand na osnovu kojeg se procjenjuje uslov grananja može zavisiti od neke ranije instrukcije,
• Ako se grananje obavlja, pribavljanje i izvršenje naredne instrukcije ne može početi sve dok se ne sračuna BTA (branch transfer addresss),
• Sračunavanje BTA može zavisiti od neke ranije instrukcije.
Zbog navedenog, kao i zbog činjenice da je procenat izvođenja instrukcija grananja visok,
posebna pažnja se posvećuje smanjenju negativnih efekata pri izvođenju ovih instrukcija.
Efekat izvršavanje instrukcije grananja na performanse protočnog sistema je ilustrovana
slikama 4.15 i 4.16. Pretpostavimo da se izvodi niz instrukcija:
Ii
Ii+1
Ii+2 (grananje na instrukciju Ij)
Ii+3
.
.
Ij
Ij+1
.
.
Sl. 4.15 Izvršavanje instrukcije grananja u nizu instrukcija
85
S. 4.16 Izvršenje toka instrukcija u protočnom sistemu za slučaj grananja
Nakon kompletiranja instrukcije I2, izvršenje instrukcija I+3 … I+6 koje su započete se prekida
u protočnom sistemu (protočni sistem se prazni). Na taj način u ciklusima 9-12 ne dolazi do
kompletiranja instrukcija, pa su to izgubljeni ciklusi / cijena izvršenja instrukcije grananja.
U cilju analize efekata grananja, definišimo slijedeće pojmove:
• Meta grananja (branch target) je instrukcija koja se izvodi u slučaju ostvarenja grananja,
• Slotovi kašnjenja (delay slots), broj neiskorištenih ciklusa b u k-stepenom protočnom sistemu, između instrukcije u kojoj je došlo do ostvarenja grananja i mete grananja ( 0 ≤ b k-1 ). ≤
Za ilustraciju, posmatrajmo sl. 4.17, gdje ostvarenje grananja u toku izvršenja instrukcije Ib
uzrokuje pražnjenje svih instrukcija Ib+1 … Ib+k-1 iz protočnog sistema. Neka je p vjerovatnoća
instrukcije uslovnog grananja u programu, q vjerovatnoća da će se grananje ostvariti (tipične
vrijednosti su p = 20%, q = 60%). Cijena grananja je pqnbτ , jer je očekivani broj grananja pqn
a cijena jednog grananja bτ. Ukupno vrijeme izvođenja n instrukcija je:
Teff = kτ + (n – 1) τ + pqnbτ (4.2)
86
( član kτ + (n – 1) τ je vrijeme izvođenja n instrukcija bez gubitaka ciklusa u protočnom
sistemu). Efektivna propusnost protočnog sistema Heff se definiše kao broj instrukcija koje se
kompletiraju u jedinici vremena:
pqnbnk
nfTnHett
eff+−+
==1
(4.3)
Kada n → , onda je najniža granična vrijednost za Η∞ eff (b = k – 1)
1)1(
*
+−=
kpqfHeff (4.4)
Kada je p = q = 0 (nema grananja), onda se dobija da je maksimalna propusnost protočnog sistema f = 1/τ.
Degradacija performansi protočnog sistema zbog efekta grananja je
1)1(
)1(1)1(
11*
+−−
=+−
−=−
=kpq
kpqkpqf
HfD eff (4.5)
Sl. 4.17 Grananje u protočnom sistemu sa b = k – 1 slotova kašnjenja.
87
U cilju smanjenja cijene grananja koriste se različite tehnike:
A. Zakašnjeno grananje (delayed branch),
B. Predviđanje grananja,
C. Druge tehnike smanjenja cijene grananja.
A. Zakašnjeno grananje
Prilikom izvršenja instrukcije grananja, utvrđivanje da li će se grananje izvesti ili ne može se
realizovati u različitim stepenima protočnog sistema, zavisno od njegove implementacije. Zavisno
od toga u kom stepenu se donosi odluka o grananju, ciljna instrukcija se pribavlja sa određenim
brojem ciklusa zakašnjenja. Ako je to kašnjenje d ciklusa, onda se u protočnom sistemu nalazi d-
1 instrukcija između instrukcije grananja i mete - instrukcije na koju se grananje vrši (sl. 4.18).
Sl. 4.18 Koncept zakašnjenog grananja premještanjem nezavisnih ili NOP instrukcija u slot kašnjenja za 4-stepeni protočni sistem.
88
Umjesto da se u slučaju grananja prazne sve instrukcije u protočnom sistemu između
instrukcije grananja i mete ( pri čemu dolazi do gubitka b = d - 1 ciklusa ), kod ove tehnike se
nastavlja sa izvršenjem jednog broja ( b ) instrukcija iza instrukcije grananja bez obzira na to da li
je grananje izvršeno ili ne. Ono što je potrebno obezbijediti je da su to korisne instrukcije, čije je
izvođenje iza instrukcije grananja valjano i za slučaj grananja i za slučaj kada nema grananja, ili
da su to instrukcije popune tipa NOP ( No OPeration). Po statističkim analizama, vjerovatnoća
mogućnosti premještanja jedne korisne instrukcije u slot kašnjenja je ~0.6, premještanja dvije
korisne instrukcije u slot kašnjenja je ~0.2, a tri korisne instrukcije je manja od 0.1.
Instrukcije koje se umeću u slot kašnjenja mogu biti (sl. 4.19):
• Instrukcije ispred instrukcije grananja,
• Instrukcije sa puta gdje se grananje obavlja,
• Instrukcije sa puta gdje se grananje ne obavlja.
Sl. 4.19 Različite varijante umetanja instrukcija u slot od jednog ciklusa zakašnjenja.
Prilikom umetanja instrukcija potrebno je sačuvati originalne relacije zavisnosti po
podacima između instrukcija i obezbijediti da modifikovani program produkuje isti rezultat kao
originalni program.
Primijetimo da umetanje instrukcije koja se nalazi ispred instrukcije grananja u slot kašnjenja
uvijek rezultuje izvršavanjem korisne instrukcije, i za slučaj grananja smanjuje kašnjenje u slotu
89
(sl. 4.19a). Ubacivanje instrukcije sa puta grananja u slot kašnjenja je korisno samo u slučaju
grananja (sl. 4.19b), a instrukcije sa puta gdje se grananje ne obavlja ako nema grananja (sl.
4.19c). Primijetimo da je za slučaj b) originalna meta (ciljna instrukcija) grananja pomjerena u
slot kašnjenja i uvijek će se izvesti, a da je nova meta grananja slijedeća instrukcija iza originalne
mete (instrukcija na adresi L+1). Ako dođe do grananja izvešće se sekvenca:
Br > , L+1
R6 := R7 + R8 ; Jer se izvršavaju instrukcije u slotu kašnjenja
L+1: ---------------- ; Nova meta grananja,
a ako ne dođe do grananja izvela bi se sekvenca:
Br > , L+1
R6 := R7 + R8 ; Jer se izvršavaju instrukcije u slotu kašnjenja
R6 := R8 + R9 ; Instrukcija iz originalne sekvence, za slučaj da nema
grananja.
Primijetimo da će se, za slučaj kada nema grananja, u slotu kašnjenja izvesti instrukcija R6 :=
R7 + R8 koja u originalnoj sekvenci ne bi trebala da se izvede. Međutim. S obzirom na to da će
se nakon toga izvesti instrukcija R6 := R8 + R9 koja takođe modifikuje registar R6 i time
poništava efekat umetnute instrukcije R6 := R7 + R8. Dakle, umetnuta instrukcija u slučaju
grananja eliminisaće kašnjenje u slotu, a za slučaj da nema grananja izvođenje umetnute
insturkcije neće imati efekta. Slična razmatranja su i za slčučaj 4.19c).
Preuređenje programske sekvence u cilju popune slota kašnjenja je najčešće zadatak
programskog prevodioca. Međutim, problem sa prethodnom tehnikom gdje se insturkcije iz slota
kašnjenja uvijek izvode proizilaze iz teškoće da se slot popuni korisnim instrukcijama.
Alternativno rješenje je da se protočni sistem prazni ili ne u zavisnosti od toga da li se grananje
realizuje ili ne. Suštinski, postoje tri mogućnosti:
1. Instrukcije u slotu kašnjenja se uvijek izvode,
2. Protočni sistem se prazni (poništavaju se instrukcije u slotu kašnjenja), ako se grananje ne obavlja,
3. Protočni sistem se prazni (poništavaju se instrukcije u slotu kašnjenja), ako se grananje obavlja.
90
Navedene varijante se mogu specifikovati od strane kompajlera kodiranjem u dvobitno polje
instrukcije (kod procesora koji dopuštaju takvu mogućnost). Ako prevodilac ne može
implementirati efikasno varijantu 1., i ako zaključuje da će se najčešće za neku instrukciju
grananja grananje i ostvariti, onda prevodilac popunjava slot kašnjenja instrukcijama sa puta
grananja, a u dvobitno polje instrukcije kodira varijantu 2. Primijetimo da ova varijanta povećava
obim/dužinu programa zbog kopiranja instrukcija sa puta grananja u slot kašnjenja.
B. Predviđanje grananja
Predviđanje da li će se grananje desiti ili ne, može se izvršiti statički – u fazi prevođenja (na
bazi karakteristika – koda instrukcije grananja), ili dinamički, na bazi istorije grananja
registrovane za vrijeme izvođenja programa.
Statistički podaci govore, da se kod instrukcija uslovnog grananja grananje češće događa ( >
50% u odnosu na ukupan broj izvršenja instrukcije) odnosno da se povoljniji rezultati dobijaju
ako se predviđa izvršenje grananja. Eksploatacija slotova kašnjenja za slučaj ispravnog
predviđanja grananja je opisana prethodno. Statičkim predviđanjem se može postići tačnost
predviđanja koja je veća od 75%.
Kod Dinamičke strategije grananja, predviđanje da li će doći do grananja ili ne pri izvođenju
neke instrukcije grananja se bazira na prethodnoj istoriji grananja odnosne instrukcije. Primjer
dinamičkog predviđanja grananja na bazi (ograničene) prethodne istorije grananja je
predstavljeno slikom 4.20. Za implementaciju dinamičkog grananja koristi se bafer ciljnog
grananja BTB (Branch target buffer)
Dinamičkim predviđanjem grananja sa jednim bitom istorije, može se postići tačnost
predviđanja između 86% i 96%,
C. Druge tehnike smanjenja cijene grananja
U cilju eliminisanja negativnih efekata grananja primjenjuju se i druge tehnike. Jedna od
mogućnosti je da procesor pribavlja istovremeno instrukcije sa oba puta: i sa puta grananja i sa
puta kada se grananje ne izvršava. Kada se utvrdi koji je put nekorektan, onda se efekti
91
pribavljanja i izvršenja instrukcija sa tog puta poništavaju. Problem kod ovog rješenja je što kada
postoje 2 nerazriješena grananja, procesor treba da pribavlja instrukcije sa četiri puta.
Sl. 4.20 Bafer istorije grananja i dijagram stanja grananja za dinamičku predikciju grananja.
Tehnika višestrukih nezavisnih nizova instrukcija koristi nezavisne instrukcione tokove
(programski tok druge programske niti - thread, npr.) za popunjavanje slotova kašnjenja. S
obzirom da ne postoji zavisnost po podacima nezavisnih programskih niti, ove instrukcije se
mogu umetati u slotove kašnjenja, pri čemu je to izvršavanje uvijek korisno, te nema
neiskorištenih ciklusa u protočnom sistemu.
92
4.5 Superskalarne i VLWI arhitekture
Arhitektura CISC i RISC skalarnih procesora može se dalje poboljšati implementacijom
koncepata superskalarnog ili vektorskog procesiranja. Dok skalarni procesori izvode jednu
instrukciju po ciklusu, kod superskalarnih procesora se koristi više funkcionalnih protočnih
sistema, čime se omogućava da se u jednom ciklusu inicira i kompletira izvršavanje više
instrukcija. Vektorski procesori izvršavaju vektorske instrukcije na nizovima podataka što je
pogodno za protočnu obradu (izvršenje skupa operacija kojima se implementira vektorska
instrukcija se ponavlja nad nizom podataka). O vektorskim procesorima biće riječi više u dijelu o
SIMD računarima.
Superskalarni procesori
Ovi procesori su projektovani sa ciljem eksploatacije paralelizma na instrukcionom nivou:
instrukcije između kojih ne postoji zavisnost po podacima se mogu izvoditi paralelno. Međutim,
statistički pokazatelji ukazuju da se prosječno mogu izvoditi svega dvije instrukcije paralelno u
prosječnom programu, bez specifičnih softverskih adaptacija programa (razmotavanje petlji,
npr.). Ovo limitira broj iniciranja izvršenja instrukcija po ciklusu na 2-5. Superskalarni procesor
stepena m može inicirati izvršenje m instrukcija po ciklusu.
Tok izvršenja instrukcija u superskalarnom protočnom sistemu sa iniciranjem 3 instrukcije po
ciklusu, ilustrovan je na sl. 4.21.
Sl. 4.21. Tok izvršenja instrukcija u 3-stepenom superskalarnom sistemu.
93
Superskalarni procesor stepena m bi radio sa maksimalnim performansama ukoliko bi
kontinualno izvodio m instrukcija istovremeno. U praksi, zbog prethodno navedene zavisnosti
između instrukcija, u pojedinim ciklusima je broj instrukcija koje se iniciraju za izvršenje
(odnosno čije se izvršenje kompletira) manji od m. U tim ciklusima, neki segmenti nekih
protočnih sistema se mogu nalaziti u stanju zastoja. Tipična superskalarna arhitektura RISC
procesora predstavljena je na sl. 4.22. Instrukcioni keš omogućava pribavljanje i iniciranje
izvršenja više instrukcija u jednom ciklusu. Cjelobrojna jedinica i jedinica u pokretnom zarezu
sadrže više funkcionalnih jedinica, koje teoretski mogu istovremeno da vrše procesiranje. U cilju
podrške za efikasno i istovremeno izvođenje više instrukcija u različitim protočnim stepenima
implementiraju se stanice za rezervaciju i baferi preuređenja.
Primjer superskalarnih procesora su Intel i960, IBM RS/6000 i DEC 21064.
Sl. 4.22. Tipična arhitektura RISC superskalarnog procesora.
94
Intel i960 je 32-bitni, RISC bazirani superskalarni procesor (sl. 4.23) je namijenjen za
računarske sisteme koji se 'ugrađuju' u procese (embedded computer systems). Na procesorskom
čipu su ugrađeni vremenski brojači, programibilni kontroler prekida i brzi RAM veličine 2Kb,
kontroler pristupa memoriji te instrukcioni keš i keš za podatke. Koncept 'zaključavanja' resursa
na bazi tabela (scoreboarding) obezbjeđuje logički integritet sekvencijalnog redoslijeda izvršenja
instrukcija koje se izvode paralelno. Procesor omogućuje izvođenje 2 instrukcije po osnovnom
taktu (max 40MHz, interni procesorski takt do 80MHz ) kontinualno, odnosno 3 instrukcije po
osnovnom taktu maksimalno, sa maksimalnim performansama od 150 miliona instrukcija/sec.
Ugrađeni mehanizam za predviđanje grananja smanjuje negativne efekte upravljačkih hazarda na
minimum. Registarski keš (dubine 15 stanja) omogućuje čuvanje stanja registara pri pozivu
procedura i restauraciju tog stanja nakon povratka iz pozvane procedure.
Sl. 4.23 Intel i960 procesor.
IBM je lansirao 1990 god. superskalarni procesor RISC System 6000 (Sl. 4.24), baziran na
arhitekturi PowerPC procesora. Aktuelna implementacija ovog superskalarnog procesora (pod
internim nazivom NorthStar, procesor se koristi u IBM AS/400 i RS/6000 sistemima) je stepena
4, sa 5 protočnih stepena u protočnom sistemu (sl.4.25), 64kb kešom za instrukcije i podatke na
čipu. Procesor ima 5 funkcionalnih jedinica:
• Procesor grananja (branch processor),
• 2 jedinice za cjelobrojna računanja (FXU),
• Jedinicu za računanja u pokretnom zarezu (FPU).
• Load/Store jedinicu
95
Sl. 4.24 Organizacija IBM NorthStar procesora.
Raspoređivač instrukcija raspoređuje za izvršenje instrukcije na procesor grananja, te na
FXU/FPU instrukcije za cjelobrojne operacije/operacije u pokretnom zarezu. Procesor grananja
izvodi instrukcije grananja i operacije vezane za instrukcije uslovnog koda. Upravljačka jedinica
NorthStar procesora je sa direktnim (hardwired) upravljanjem. Interne magistrale su 32/64/128
bita. Trenutna radna frekvencija je 262 MHz, dok je u planu podizanje radne frekvencije na
675Mhz. Problem upravljačkih hazarda usljed instrukcija grananja je rješavan kombinacijom više
tehnika (prekoredna identifikacija grananja i rana priprema adrese grananja, pribavljanje
instrukcija sa oba puta grananja, primjena tehnike zakašnjelog grananja, sa poništavanjem
96
izvedenih instrukcija za slučaj grananja), što je omogućilo smanjenje cijene grananja za slučaj
nekorektnog predviđanja na maksimalno 1 ciklus.
Sl. 4.25 Organizacija protočnog sistema NorthStar procesora
Za vrijeme fetch faze, pribavljaju se sekvencijalne instrukcije (iz L1 keš memorije) u bafer
sekvencijalnih instrukcija, dok se instrukcije grananja pribavljaju u bafer grananja. 'Gledanjem
unaprijed' u baferu raspoređivanja (dispetch buffer) (do 6 instrukcija), obezbjeđuje se ranije
sračunavanje ciljne adrese grananja i pribavljanje instrukcija na putu grananja u bafer grananja.
Pribavljanje instrukcija je u blokovima od 32 bajta.
U fazi raspoređivanja (dispatch) vrši se dekodiranje i raspoređivanje do 4 instrukcije (iz
bafera sekvencijalnih instrukcija ili bafera grananja) u svakom ciklusu. Operandi instrukcija se
čitaju iz registara, bafera kompletiranja operacija ili magistrala. U ovoj fazi se takođe generiše
ciljna adresa grananja.
U fazi izvršenja (execute) izvršavaju se aritmetičke, pomjeračke operacije te generiše adresa
za keš podataka. Svi rezultati su raspoloživi svim drugim izvršnim jedinicama u slijedećem
ciklusu. Ukoliko neki od operanada potrebnih za operaciju u nekom protočnom stepenu nije
raspoloživ, onda se rad protočnog stepena zaustavlja.
U fazi potvrđivanja operacija (commit) vrši se potvrđivanje rezultata ili njihovo odbacivanje
(u slučaju izvršenja instrukcija u nekorektnom putu kod instrukcija grananja, u slučaju prekida ili
straničnih grešaka – page faults). Podaci koji se pribavljaju u kešu podataka, mogu se direktno
proslijediti u izvršnu jedinicu.
U fazi upisa rezultata (writeback) rezultati se upisuju u registre nakon što su svi konflikti
razriješeni i rezultati potvrđeni u prethodnom stepenu.
97
Procesori sa velikom dužinom riječi (VLIW – very large instruction word)
VLIW arhitekture su proistekle iz dva dobro profilisana i istražena koncepta: horizontalnog
mikrokodiranja i superskalarnog procesiranja. Tipični procesori ovog tipa imaju instrukcije
dužine nekoliko stotina bita, gdje različita instrukciona polja specifikuju operacije koje traba
istovremeno izvršiti u višestrukim funkcionalnim jedinicama procesora (Sl. 4.26).
Sl. 4.26 Arhitektura VLIW procesora i tok obrade u protočnim stepenima
Zadatak pakovanja operacija u VLIW instrukciju realizuje programski prevodilac. Iako je cilj,
kao i kod superskalarnih procesora, da se više operacija izvodi istovremeno u više funkcionalnih
jedinica, bitne razlike su u slijedećem:
98
• Planiranje izvršenja instrukcija se vrši u fazi prevođenja,
• VLIW procesor ne može ostvariti vertikalnu programsku kompatibilnost sa procesorima koji koriste konvencionalni kratki format instrukcija,
• S obzirom na to da instrukcija sadrži i plan izvršenja operacija, dekodiranje instrukcija je jednostavnije,
• S obzirom da nije uvijek moguće specifikovati maksimalan broj operacija za istovremeno izvođenje (zbog hazardnih okolnosti), 'gustina' koda kod superskalarnih mašina je veća nego kod VLIW procesora,
Iako su prednosti ove arhitekture jednostavnost strukture hardvera i instrukcionog skupa,
potencijalno manji CPI parametar nego kod superskalarnih procesora (Multiflow trace računar
dozvoljava izvođenje do 7 operacija istovremeno, sa 256 bita po VLIW instrukciji) i dobre
performanse kod aplikacija sa predvidljivim programskim ponašanjem (naučne aplikacije npr.),
nedostaci su ozbiljni: znatno niže performanse u aplikacijama opšte namjene, i nemogućnost
kompatibilnosti sa kodom konvencionalnih računara, što je ovaj koncept ipak izmjestilo sa
glavnog toka aktuelnosti u oblasti računarskih arhitektura.
4.6 Intelova arhitektura IA-64
Smatra se da ova arhitektura predstavlja najznačajniji napredak u oblasti mikroprocesorskih
arhitektura od uvođenja 32-birnog mikroprocesora Intel 386 1985. god. Nakon 5 godina
zajedničkog istraživanja, god. 1999. Intel i Hewlett Packard su objavili detalje nove arhitekture
IA-64 ISA (Instruction Set Architecture) sa ciljem da razvojni inžinjeri širom svijeta ubrzaju
razvoj nove generacije aplikacija za platforme koje će biti bazirane na IA-64 procesorima. Prvi
model ove arhitekture nazvan je Merced i planiran je za realizaciju 2000. godine.
Cilj razvojnih napora Intela i HP-a je bio da se razvije arhitektura sa 64-bitnim instrukcionim
skupom za radne stanice visokih performansi, serverske stanice i računarske sisteme preduzeća. U
ovom domenu postoji niz aktuelnih aplikativnih oblasti koje zahtijevaju izuzetne performanse, sa
tendencijom stalnog povećanja zahtijeva za procesne mogućnosti računara: internet aplikacije,
elektronska trgovina, data warehousing, video konferencijski sistemi, procesiranje govora itd.
Ovaj osnovni cilj se želio ostvariti tako da se prevaziđu limiti u mogućnostima tradicionalnih
arhitektura, s jedne strane, ali i da primijenjeni koncept ostavi dovoljno prostora za budući razvoj.
Iz tog razloga, IA-64 je jedinstvena kombinacija više novih karakteristika, kao što su: eksplicitni
99
paralelizam, predikacija, spekulativno izvođenje itd. Novi tehnološki koncept je nazvan EPIC:
Explicitly Parallel Instruction Computing.
IA-64 arhitektura obzbjeđuje takođe potpunu kompatibilnost sa IA-32 (Pentium)
arhitekturom, a takođe i sa Pakardovim PA-RISC procesorom. Ova kompatibilnost je bila jedan
od osnovnih projektnih zahtijeva. Procesor može raditi u IA-32 ili IA-64 okruženju, što zavisi od
operativnog sistema. IA-64 sistemsko okruženje omogućava izvođenje ili IA-32 ili IA-64
instrukcija u bilo kom trenutku: u tu svrhu su realizovane instrukcije koje prevode procesor iz
jednog moda u drugi.
• jmpe (IA-32 instrukcija) prevodi procesor u IA-64 mod, u kojem izvode IA-64
instrukcije,
• br.ia (IA-64 instrukcija) prevodi procesor u IA-32 mod, u kojem izvode IA-32 instrukcije,
• rfi (IA-64 instrukcija) 'povratak iz prekida', vraća procesor ili u IA-32 ili u IA-64 mod.
Karakteristike instrukcionog skupa
IA-64 uključuje arhitekturne karakteristike koje omogućavaju visoke performanse i koje
uklanjaju barijere za dalje poboljšanje performansi. IA-arhitektura je bazirana na slijedećim
principima:
• Eksplicitni paralelizam
− Mehanizam koji omogućuje kooperativne efekte programskog prevodioca i procesora,
− Veliki broj resursa koji mogu da iskoriste mogućnosti ILP (instruction level parallelism), npr. 128 cjelobrojnih i 128 registara u pokretnom zarezu, 64 predikatnih registara, 8 registara grananja, višestruke funkcionalne jedinice,
• Karakteristike koje poboljšavaju paralelizam na instrukcionom nivou
− Spekulativno izvođenje (minimizuje uticaj latentnosti memorije),
− Predviđanje grananja, kojim se smanjuje cijena grananja.
• Karakteristike koje poboljšavaju softverske performanse
− Specijalne multimedijalne instrukcije,
100
− Visoke performanse arhitekture za izvođenje operacija u pokretnom zarezu,
− Korištenje registarskih prozora promjenljive dužine kod poziva procedura,
− Mehanizme za nagovještavanje grananja, odnosno pogađanja keša (branch hints, cashe hints) kojima programski prevodilac može specifikovati svoju procjenu lokalnosti memorije (po mjestu i vremenu) kojoj se pristupa. Ovo omogućava povećanje mogućnosti nalaženja informacija u keš memoriji (cache hit) i smanjenje gubitaka zbog promašaja keša (cache miss).
ILP - Paralelizam na nivou instrukcija (instruction level paralelism)
ILP je mogućnost izvršavanja više instrukcija u isto vrijeme. IA-64 omogućava grupno
iniciranje izvršenja nezavisnih instrukcija (3 instrukcije u grupi, više grupa može biti inicirano za
izvršenje u jednom ciklusu). Specifikacija grupa vrši se u fazi prevođenja. Programski prevodilac,
za razliku od tradicionalnih arhitektura, ima mogućnost da koristi spekulativne informacije, koje
nisu garantovano korektne, i to bez žrtvovanja izvođenja korektnih sekvenci. Pored spekulativnog
izvođenja, i druge tehnike omogućavaju povećanje ILP (predikacija, predviđanje grananja itd.).
Spekulativno izvođenje
Postoje dva tipa spekulacije: upravljačka i spekulacija o podacima. U obe varijante kompajler
povećava ILP specifikacijom izvršenja neke operacije ranije, sa ciljem eliminisanja kašnjena na
kritičnom putu izvođenja instrukcija. Prevodilac specifikuje spekulativno izvršenje neke
instrukcije ranije, ako postoji značajna vjerovatnoća da će spekulacija biti ostvarena (da je
izvođenje instrukcije u saglasnosti sa sekvencijalnim tokom izvršenja) i ako ranijim izvršenjem
instrukcije dolazi do povećanja mogućnosti eksploatacije paralelizma. Npr. ako posmatramo
instrukciju:
if (a> b) load (ld_addr1, target1)
else load (ld_addr2, target2)
izvođenje operacije ld_addr1, target1 prije nego što je poznat uslov a > b se može
karakterizovati kao spekulacija da će uslov a> b biti istinit. Ranije izvođenje instrukcije ld_addr1,
target1 omogućava preklapanje izvođenja te instrukcije (koja traje duže zbog referenciranja
memorije) sa drugim instrukcijama, tako da su operacije specifikovane tom instrukcijom izvršene
u trenutku testiranja uslova. Nakon spekulativnog izvođenja instrukcije ld_addr1, target1 druge
instrukcije mogu takođe koristiti vrijednosti upisane u target1 i ažurirati druge elemente
101
procesorskog stanja. Ažuriranje stanja registara spekulativnom instrukcijom postavlja jedan bit u
registrima procesora (NaT – Not a Thing), i svako naredno korištenje tog sadržaja kao operanda u
drugim instrukcijama, kojim se ažuriraju vrijednosti drugih registara, takođe postavljaju bit Nat u
tim registrima. Prilikom testiranja uslova, ukoliko je spekulacija bila dobra, svi rezultati se
prihvataju i potvrđuju, a ukoliko je spekulacija bila pogrešna, onda se ide na proceduru
‘oporavka’, kojom se poništavaju efekti pogrešne spekulacije, sadržaj target1 se restaurira i
ponavlja izvršenje instrukcija koje su koristile spekulativnu vrijednost u target1.
Spekulacija o podacima
Spekulacija o podacima je dobavljanje podataka iz memorije prije operacije smještanja u
memoriju koja prethodi tom pribavljanju, ako postoji potencijalna mogućnost da load i store
operacije referenciraju isti dio memorije. Npr.
Store (st_addr, data)
Load (ld_addr, target)
Use (target)
Ukoliko load i store instrukcije referenciraju različite memorijske lokacije, onda redoslijed
izvođenja može biti promijenjen. Međutim, ako u fazi prevođenja ovo ne može da se utvrdi, onda
se izvođenje load prije store operacije može smatrati spekulativnim, sa spekulacijom da load i
store instrukcije ne referenciraju istu memorijsku lokaciju. Prevodilac, ako je specifikovao
spekulativno dobavljanje (load), postavlja instrukciju provjere spekulacije na mjestu originalne
instrukcije punjenja, tj. gornji programski kod se mijenja u sekvencu:
aload (ld_addr, target)
store (st_addr, data) acheck(target, recovery_addr) use(target) Instrukcija acheck utvrđuje da li se upis na memorijsku lokaciju preklapa sa očitavanjem, i
ako je to tačno ide se na proceduru oporavka.
Predikacija
Predikacija je uslovno izvršenje instrukcija. U tradicionalnim arhitekturama, uslovno
izvršenje se implementira instrukcijama grananja. IA-64 ahitektura implementira ovu funkciju
102
korištenjem predikatskih instrukcija. Vrijednost predikata se postavlja intrukcijom poređenja u
odnosni predikatski registar. Predikovana instrukcija se izvodi ako je vrijednost predikata 1 (1 –
bitna vrijednost u predikatskom registru), u suprotnom predikovana instrukcija ima isti efekat kao
i nop (no operation) instrukcija. Predikacijom se uklanjaju grananja koja se koriste za uslovno
izvršenje, stvaraju se veći blokovi sekvencijalnih instrukcija (bazični blokovi) i eliminišu gubici
koji nastaju zbog pogrešne procjene grananja. Npr. instrukcija bez predikata:
r1 = r2 + r3
kada je predikovana ima formu
if(p5) r1 = r2 + r3.
U ovom primjeru p5 je kontrolni predikat, koji odlučuje da li će se ili ne instrukcija izvesti i
ažurirati stanje mašine. Predikatima se, kao što je pomenuto, pridjeljuje vrijednost instrukcijama
poređenja.
Predikatskim izvođenjem se izbjegavaju grananja tako što se kontrolne zavisnosti
transformišu u zavisnost po podacima. Npr. ako je originalni kod:
if ( a > b ) c = c + 1
else d = d*e + f,
Grananje kod uslova se može eliminisati, ako se konvertuje gornji kod u predikatski kod:
pT, pF = compare (a > b )
if ( pT ) c = c + 1,
if ( pF ) d = d*e + f,
pa se originalni kod, koji sadrži grananja, transformiše u kod sa predikatskim instrukcijama,
kod kojih postoji zavisnost po podacima.
Operacije sa registrima
Cjelobrojni registri sadrže 64 bita + 1 NaT bit, registri za operacije u pokretnom zarezu
sadrže 82 bita. Registarski model procesora predstavljen je na sl. 4.27.
103
Sl. 4.27 Registarski model procesora IA-64.
Mogućnosti cjelobrojnih operacija i operacija u pokretnom zarezu su raznovrsne; ovdje ćemo
ilustrovati tehniku korištenja registarskih prozora kod poziva procedura, kojom se izbjegava
tradicionalno čuvanje i restauriranje sadržaja registara (register spill and fill) prilikom poziva na
sličan način opisan za RISC procesore, ali umjesto fiksnog broja registara koji se pridjeljuju
proceduri, vrši se dinamičko pridjeljivanje samo potrebnog broja registara.
Registarski skup od 128 registara je podijeljen na dva podskupa: statički, koji sadrži registre
0-31 i magacinski (stacked) podskup. Statički podskup je vidljiv iz svih procedura, dok se
magacinski podskup dinamički dodjeljuje procedurama, redom kako se one pozivaju. CFM
(current frame marker) pokazuje na par cjelobrojnih indikatora sof (size of frame) i sol (size of
locals) koji specifikuju ukupan broj registara magacinskog podskupa koji je pridijeljen proceduri
(sof) i broj registara pridijeljen proceduri za njene lokalne potrebe na osnovu zahtjeva iz
gdje su t1, t2, …, tn vremenski gubici (cijena u vremenskim jedinicama) koja se mora platiti
za pristupanje slijedećem višem nivou u memorijskoj hijerarhiji. Vrijeme pristupa kešu (za slučaj
da informacija nije raspoloživa u registrima) je t1, cijena (vrijeme pristupa) zbog nepostojanja
informacija u kešu prvog nivoa (promašaj bloka – block miss) je t2, cijena zbog nepostojanja
informacija u glavnoj memoriji (promašaj stranice – page fault) je t3 (ako je glavna memorija
slijedeći nivo u memorijskoj hijerarhiji) itd. t1 < t2 < …< tn. Stone (1990) je pokazao da je cijena
promašaja keša 2-4 puta skuplja od cijene pogađanja keša, dok je cijena promašaja stranice u
glavnoj memoriji (page fault) 1000 – 10 000 puta veća od cijene pogađanja.
Optimizacija hijerarhijske organizacije memorije
Ukupna cijena hijerarhijskog memorijskog sistema se procjenjuje kao
Ctotal = ∑=
•
n
iii sc
1
S obzirom na to da je c1 > c2 > c3 … > cn hijerarhijski memorijski sistem se realizuje tako
da je s1 < s2 < …< sn. Optimalno projektovana hijerarhijska organizacija memorije treba biti takva
da je Teff blisko vremenu t1 (vremenu pristupa nivou M1), i ukupna cijena bliska cijeni cn nivoa Mn.
Problem projektovanja hijerarhijskog memorijskog sistema se svodi na problem minimizacije
Teff = , ∑=
•
n
iii tf
1
111
uz slijedeća ograničenja:
si > 0, ti > 0 , za i = 1, 2, …, n,
Ctotal =∑ < C=
•
n
iii sc
10 .
Vrijednosti karakterističnih parametara za memorijski sistem tipičnog main-frame računara
dati su u tabeli 5.1 (podaci se odnose na 1993. god.).
Tabela 5.1 Karakteristične vrijednosti parametara memorijskog sistema
5.3 Koncept virtuelne memorije
Glavna memorija se često naziva i fizička memorija. U ovoj memoriji se nalaze programi u
toku izvršenja kao i podaci i rezultati koje ovi programi koriste/produkuju. S obzirom na to da je
veličina glavne memorije ograničena, svi programi ne mogu biti smješteni istovremeno u glavnoj
memoriji. Koncept virtuelne memorije omogućuje virtuelno proširenje glavne memorije
sekundarnom memorijom, čime se postiže da veći broj programa može istovremeno koristiti
fizičku memoriju. Samo aktivni programi, ili njihovi dijelovi, se nalaze u glavnoj memoriji u
jednom trenutku vremena. Programi (ili njihovi dijelovi) se učitavaju sa sekundarne memorije
(disk jedinice) u memoriju i vraćaju nazad na disk pod kontrolom operativnog sistema.
112
Skup adresa, preko kojih se može pristupiti raspoloživim memorijskim lokacijama glavne
memorije čini fizički adresni prostor. Adrese koje generiše programski prevodilac prilikom
prevođenja izvornog programa, odnosno instrukcije prilikom izvođenja su virtuelne adrese.
Virtuelni adresni prostor je po pravilu veći od fizičkog adresnog prostora. Prilikom izvođenja
programa, potrebno je obezbijediti prevođenje virtuelnih adresa sadržanih u programu, u odnosne
fizičke adrese, odnosno realizovati mapiranje virtuelnog na fizički adresni prostor.
Neka je V skup virtuelnih adresa, generisanih programom koji se izvodi, i neka je M skup
fizičkih adresa pridjeljenih programu za izvođenje. Virtuelni memorijski sistem zahtijeva
automatski mehanizam za implementaciju mapiranja:
ft : V → M ∪ {0}
Mapiranje je dinamička funkcija koja varira u vremenu, pridjeljivanje fizičke memorije
programu koji se izvodi vrši se od strane operativnog sistema. Za bilo koju virtuelnu adresu v ∈
V, imamo:
ft (v) = Munalazinevadresomomlnvirtueanreferencirpodatakseako
vadresomomlnvirtueanreferencirpodataksadrziMmakom
,0
, ∋
Dakle, funkcija ft (v) prevodi virtuelnu adresu v u jedinstvenu fizičku adresu m, ako postoji
pogodak (memory hit) u M. Kada postoji promašaj, funkcija vraća vrijednost 0, čime se indicira
da se referencirana informacija ne nalazi u memoriji. Jasno je da efikasnost mapiranja ima izražen
uticaj na performanse virtuelne memorije. Koncept virtuelne memorije je znatno teže
implementirati u multiprocesorskim sistemima gdje se javljaju drugi složeni problemi kao što su:
održavanje koherentnosti i konzistentnosti, problem zaštite pristupa i drugi. U tekstu koji slijedi,
ukratko su izložena dva virtuelna memorijska modela multiprocesorskih sistema(Sl. 5.4.).
Privatna virtuelna memorija
U ovom modelu, svakom procesoru se pridjeljuje privatni virtuelni adresni prostor. Svaki
privatni virtuelni prostor je izdijeljen na stranice. Stranice različitih virtuelnih prostora se
mapiraju u stranice iste fizičke memorije, koja je zajednička za sve procesore. Ovaj koncept
omogućava korištenje relativno malih procesorskih adresnih prostora (32-bita),
zaključavanje/zaštitu svake stranice koja se zasniva na bazi procesa i korištenje privatnih
memorijskih mapa, koje ne zahtijevaju eksluzivan pristup. Problem predstavlja referenciranje
113
istih fizičkih stranica iz različitih virtuelnih stranica istog ili različitih virtuelnih prostora
(problem sinonima). Problem koji se morao posebno rješavati je taj da iste virtuelne adrese u
različitim virtuelnim adresnim prostorima, mogu da referenciraju različite fizičke stranice u
glavnoj memoriji.
Sl. 5.4 Modeli virtuelne memorije za multiprocesorske sisteme.
Dijeljena virtuelna memorija U ovom modelu, virtuelni adresni prostori svih procesora se kombinuju u jedinstveni dijeljeni
virtuelni adresni model. Svakom procesoru se dodijeljuje dio jedinstvenog adresnog prostora.
Virtuelni adresni prostori različitih procesora mogu da se preklapaju.
Prednost ovog modela je to što su sve adrese jedninstvene. Procesori mogu da generišu adrese
veće od 32 bita a sinonimi nisu dozvoljeni.
114
Pristup tabeli straničenja mora biti omogućen od strane više procesora; u cilju zaštićenog
pristupa tabeli straničenja koristi se zaključavanje. Obično se iznad koncepta straničenja realizuje
segmentacija što omogućava da svaki proces ima svoj adresni prostor.
5.3.1 Straničenje, TLB, Segmentacija
Kod tehnike straničenja, u cilju preslikavanja virtuelnog u fizički adresni prostor i virtuelni i
fizički adresni prostor se dijele na stranice iste dužine. Različite šeme translacije virtuelnih u
fizičke adrese su predstavljene na Sl. 5.5.
Sl. 5.5 Mehanizmi translacije virtuelnih u fizičke adrese.
115
Šeme sa slike 5.5a, koriste translacione mape koje se mogu implementirati na različite
načine. Ove mape mogu biti smještene u keš memoriju, specijalnu asocijativnu memoriju ili u
glavnu memoriju. Svaka mapa sadrži određeni broj ulaza, a svakim ulazom (Sl. 5.6) se
specifikuje translacija. Pristup odgovarajućem ulazu u tabeli se vrši na bazi funkcije mapiranja,
koja se primjenjuje na virtuelnu adresu. Mapiranje se može implementirati hash ili kongruentnom
funkcijom.
Sl. 5.6 Struktura ulaza u tabelu straničenja
Varijante translacionih mapa su keš straničenja (TLB – table lookaside buffer) i tabela
straničenja (PT – page table).
TLB je brza memorija koja sadrži najčešće referencirane ulaze tabele straničenja.
Najpovoljnija varijanta je ako se translacija virtuelne u fizičku adresu realizuje preko TLB ulaza.
Ukoliko TLB ne sadrži ulaz koji specifikuje translaciju, onda se traženje nastavlja u tabeli
straničenja. Hadrverska organizacija sistema straničenja koja koristi TLB data je na Sl. 5.7.
Sl. 5.7 Straničenje sa korišćenjem TLB (St. 7.146)
116
Tabele straničenja (PT) sadrže suštinski iste ulaze kao i TLB (koji specifikuju asocijaciju
između virtuelnih i fizičkih stranica – okvira). Ove tabele se kreiraju u glavnoj memoriji nakon
kreiranja korisničkih procesa (za svaki proces se kreira posebna PT). S obzirom da broj
aplikativnih procesa može biti veliki, broj PT u memoriji može takođe biti veliki. I TLB i PT se
moraju dinamički ažurirati kako bi odražavali aktuelno stanje. Mape translacije predstavljaju
tekući snimak stanja memorijskog referenciranja.
Ukoliko se tražena stranica ne nalazi u memoriji (ne postoji par (virtuelna stranica, fizička
stranica) u PT), onda se generiše stranična greška (page fault). U tom slučaju se tekući proces
suspenduje, aktivira se novi proces (izvršava se context switch), a tražena stranica se dobavlja sa
diska/jedinice magnetne trake, u memoriju. Nakon tog transfera suspendovani proces se stavlja u
listu spremnih procesa, i nakon njegovog aktiviranja, nastavlja se izvršenje od one instrukcije
koja je generisala straničnu grešku. PT se mogu implementirati i u više nivoa. Ovim se de-facto
formira stablo za prevođenje adresa, sa mogućnošću proširenja memorijskog prostora koji se
mapira i implementacijom sofistifikovane zaštite pristupa stranicama.
Primjer prevođenja virtuelnih u fizičke adrese kod tehnike straničenja, dat je na Sl. 5.8. U
navedenom primjeru, u posebnom registru se čuva tabela straničenja procesa. Broj virtuelne
stranice se koristi kao indeks u tebeli straničenja, iz koje se čita odgovarajući broj fizičke stranice
(broj okvira). Ovaj broj se kombinuje sa pomjerajem virtuelne adrese čime se dobija željena
realna (fizička) adresa.
Prethodno opisana tehnika (direktnog) straničenja je pogodna ako virtulni adresni prostor nije
izuzetno veliki (do 32 bita). U slučaju velikog virtuelnog adresnog prostora (52 bitne virtuelne
adrese kod IBM RS/6000, npr) PT bi postale izuzetno velike. U takvim slučajevima koriste se
invertovane tabele straničenja (IPT). Kod ove tehnike (Sl. 5.5c, Sl. 5.9) invertovana tabela
straničenja (IPT) sadrži jedan ulaz za svaku fizičku stranicu (frame). Prema tome, broj ulaza je
određen brojem fizičkih umjesto virtuelnih stranica.
117
Sl. 5.8 Tehnika mapiranja virtuelnog u fizički adresni prostor straničenjem.
Polje veza formira lanac IPT ulaza koji imaju istu hash vrijednost. Npr, hash funkcija može
mapirati broj virtuelne stranice → indeks ulaza u IPT na slijedeći način:
indeks ulaza u IPT = broj virtuelne stranice mod n
gdje je n broj fizičkih stranica (frame-ova).
Sadržaj vrijednosti virtuelne adrese stranica# (vrijednost ključa) se upoređuje sa vrijednošću
str.# u ulazu u tabeli straničenja koji odgovara vrijednosti hash funkcije za datu virtuelnu
stranicu. Ako su vrijednosti iste, onda se odgovarajući broj fizičke stranice dobija u polju ulaz#.
Ako se vrijednosti ključa ne poklapaju, onda se preko polja ‘veza’ ide na slijedeći ulaz sa istom
hash vrijednošću i postupak ponavlja dok se ne pronađe fizička stranica, ili utvrdi da tekućoj
virtuelnoj adresi nije pridružena nijedna (fizička) stranica u glavnoj memoriji (frame). U
posljednjem slučaju generiše se stranična greška.
118
Sl. 5.9 Mapiranje invertovanom tabelom straničenja
Segmentiranje. U memorijskom sistemu sa segmentiranjem, korisnički programi su
strukturirani u logičke segmente (Sl. 5.10) koji mogu biti različite dužine. Dakle, segmentacija
omogućava da se programski kod organizuje na bazi korisničke predstave programa. Virtuelna
adresa specifikuje broj segmenta i pomjeraj u okviru segmenta.
Sl. 5.10 Organizacija korisničke aplikaciju po segmentima
119
Broj segmenta se koristi kao indeks u segmentnoj tabeli. Ulaz segmentne tabele sadrži pored
specifikacije bazne fizičke adrese i specifikaciju maksimalne dužine segmenta. Mehanizam
generisanja fizičke adrese predstavljen je na Sl. 5.11.
Sl. 5.11 Generisanje fizičke adrese iz virtuelne u memorijskom sistemu sa segmentacijom.
Tehnike segmentacije i straničenja moguće je kombinovati (straničenje segmenata). Kod ove
organizacije memorije, virtuelna adresa se sastoji iz tri dijela: broj segmenta, broj stranice (u
okviru segmenta), pomjeraj. Generisanje fizičke iz virtuelne adrese ovom tehnikom dato je na Sl.
5.12.
Sl. 5.12 Prevođenje adresa segmentacijom i straničenjem
120
5.3.2 Politika zamjene stranica
Ukoliko se stranica ne nalazi u memoriji, onda je potrebno učitati traženu stranicu sa
sekundarne memorije u glavnu memoriju. Problem se pojavljuje kod odlučivanja u koju fizičku
stranicu (frame) treba učitati nove podatke, odnosno koju postojeću stranicu treba zamijeniti.
Postoji više politika zamjene stranica:
1) LRU (Least recently used), zamjenjuje onu fizičku stranicu u glavnoj memoriji koja najduže nije referencirana (posmatrano do tekućeg trenutka),
2) Optimalni (OPT), zamjenjuje onu stranu koja neće biti referencirana najduži period, posmatrano od tekućeg trenutka (ova politika se realno ne može implementirati, jer se buduća referenciranja ne mogu uvijek tačno predvidjeti),
3) FIFO (first in first out), zamjenjuje onu stranu koja je najduže u memoriji,
4) LFU (least frequently used), zamjenjuje onu stranu koja je najrjeđe referencirana u prošlosti,
5) Zamjena stranice na bazi slučajnog izbora itd.
LRU tehnika je najčešće korištena i najčešće daje najbolje rezultate (tj. najmanji broj transfera stranica između diska i glavne memorije).
121
6
Vi{eprocesorske arhitekture
6.1 Ra~unarski sistemi upravqani kontrol-nim tokom
Najve}i broj ra~unarskih arhitektura koristi tradicionalni (von Neumann-ov)
sekvencijalni tok izvo|ewa ra~unawa u procesorskim elementima, odre|en kontro-
lnim tokom. Niz instrukcija, smje{tenih u memoriji, izvodi se sekvencijalno jedna
za drugom. Eksplicitni transfer kontrole na drugi sekvencijalni niz instrukcija
ostvaruje se programski, odgovaraju}om naredbom.
Po Flynn-ovoj klasifikaciji, vi{eprocesorski sistemi se dijele na:
• SIMD - ma{ine sa jednim tokom instrukcija i vi{estrukim tokom podataka,
• MISD - ma{ine sa vi{estrukim tokom instrukcija i jednim tokom podataka,
• MIMD- ma{ine sa vi{estrukim tokom i instrukcija i podataka.
122
6.1.1 SIMD ra~unarski sistemi (Single instruction-multiple data)
Kod arhitektura ovog tipa postoji jedan sekvencijalni tok instrukcija i jedna
kontrolna jedinica koja upravqa istovremenim izvr{ewem svake instrukcije na
vi{e procesnih elemenata. Svi omogu}eni procesni elementi izvode (istu) instru-
kciju nad razli~itim podacima, ~ime se realizuje paralelna obrada na odre|enom
skupu podataka. Jednim instrukcionim tokom se izbjegava ponavqawe procesa doba-
vqawa instrukcije za svaku procesnu jedinicu. S obzirom na to da svi procesori
rade sinhronizovano, na osnovu upravqa~kih signala iz kontrolne jedinice, ovakve
arhitekture su pogodne za eksploataciju sitnozrnastog paralelizma. Osnovne
varijante ovih arhitektura predstavqene su na Sl. 6.1.
Procesorska poqa (array processors)
Kod ra~unara sa ovim tipom arhitekture, procesor se sastoji iz skupa procesnih
elemenata (PE) povezanih sinhronom mre`om. Svi procesni elementi rade pod
kontrolom jedne kontrolne jedinice (CU). Program koji se izvodi mo`e da se
nalazi ili u memoriji kontrolne jedinice, ili u procesnim elementima. Skalarne
ili kontrolne instrukcije izvodi direktno CU. CU dekodira vektorske instruk-
cije, odre|uje na kojim PE se teku}a instrukcija izvodi i inicira sinhrono
izvr{ewe na svim (omogu}enim) PE.
Podaci nad kojima PE izvode zahtijevanu operaciju se ili ve} nalaze u memorijskim
modulima dostupnim PE, ili se prethodno pune u memoriju (od strane CU (emisijom)
preko kontrolne magistrale, ili od strane eksterne jedinice preko sistemske
magistrale podataka). Na taj na~in, vi{e procesnih elemenata izvr{ava paralelnu
obradu nad odre|enim skupom podataka. Obra|ene podatke PE-i smje{taju u
memoriju. Memorija u kojoj se nalaze podaci mo`e biti ili lokalna memorija (LM)
procesnih elemenata ili globalni memorijski moduli (M), kojima mogu pristupiti
razli~iti PE. U oba slu~aja realizuje se mre`a za povezivawe, kojom se omogu}ava
izmjena podataka izme|u PE, odnosno pristup zajedni~kim podacima (Sl 6.1).
Smje{tawe podataka po memorijskim elementima mora biti takvo da omogu}i da
se elementima nizova podataka, koji treba da se procesiraju paralelno, pristupi
istovremeno i bez konflikta. Za ure|ewe podataka na opisani na~in ~esto je
potrebno mijewati raspored podataka po procesnim elementima, {to se realizuje
123
mre`om za povezivawe i odgovaraju}im funkcijama usmjeravawa i prenosa (rutira-
wa).
Kontrolne linije
Linije podatakaPodaci i instrukcije
I/O
Spre`na mre`a
memorija
CU
PE0
LM0
PE1
LM1
PEN-1
LMN-1
Kontrola
a) PE-PE model.
b) PE - memorijski model.
Sl. 6.1 Varijante arhitektura SIMD ra~unara.
124
Procesor sa poqem PE-a se normalno povezuje na ra~unar op{te namjene (host-
doma}in) preko kontrolne jedinice. Ra~unar op{te namjene izvr{ava standardne
sistemske funkcije i komunikaciju sa spoqnim svijetom, tako da se procesorska
poqa mogu smatrati pridodatom procesnom jedinicom za izvr{avawe specifi~nih
aplikacija ili dijelova aplikacija kao {to je linearno programirawe, matri~na
algebra, prepoznavawe oblika itd.
Ipak, programirawe ovakvih procesora nije jednostavno. Ono se realizuje ili
ekstenzijom postoje}ih jezika ili posebnom bibliotekom funkcija koje se pozivaju
iz dijela aplikacije koji se izvodi na ra~unaru doma}inu. Izvo|ewe skalarnih
operacija na ovim ma{inama je relativno sporo. Vr{ne performanse se ostvaruju
rijetko i u posebno pogodnim aplikacijama. Ovaj tip organizacije je karakterisao
niz ra~unara, od prvog superra~unara Illiac-a IV pa do aktuelnih Thinking Machine
CM-2 i MasPar MP-1. Primjer sra~unavawa parcijalnih suma niza elemenata Sk =
, gdje je A niz elemenata {A∑=
k
iiA
0i , i = 1, …n }, dat je na Sl. 6.2
Za ilustraciju, predstavi}emo organizaciju sada ve} istorijskog ra~unara Illiac-a IV
(Sl. 6.3) i dati primjere izvo|ewa operacija na ovom ra~unaru.
Illiac-a IV je ra~unar sa 64 procesora povezanih mre`om u formi re{etke.
(karakteristike ove spre`ne mre`e bi}e izlo`ene kasnije). Kontrolna jedinica
dekodira instrukcije koje se dobavqaju iz procesnih elemenata pod kontrolom
operativnog sistema, i vr{i distribuciju instrukcija za izvr{ewe ka potrebnim
procesnim elementima. Kontrolna jedinica tako|e izvodi proste skalarne
operacije. Prosqe|ivawe podataka izme|u procesnih elemenata se vr{i
instrukcijama rutirawa.
Procesni element (Sl. 6.4) ima 4 64-bitna registra (A – akumulator, B – operand
registar, R – registar za rutirawe, S – op{ti registar za prihvat podataka), 16 –
bitni indeks registar X i 8 – bitni statusni/mod registar D. Svaki procesni
element ima vezu / mo`e rutirati podatke, ka 4 druga procesna elementa.
Maric Slavko
Ubaciti materijal sa strane 23,24 radnog materijala ( primjer rada)
Slavko Maric
Godyear MPP, Borougs BSP, AMT DAP
125
Sl. 6.2 Sra~unavawe parcijalnih suma niza elemenata na mre`nom procesoru.
126
Sl. 6.3 Organizacija ra~unara Illiac-a IV.
127
Xi
Di
Si
Sl. 6.4 Struktura procesnog elementa Illiac-a IV.
Primjer izvo|ewa proste vektorske operacije na ovom ra~unaru dat je na Sl. 6.5. i
Sl. 6.6.
128
Sl. 6.5 Sabirawe dva vektora: du`ina vektora jednaka je broju procesnih elemenata.
129
Sl. 6.6 Sabirawe dva vektora: du`ina vektora je ve}a od broja procesnih elemenata.
130
Asocijativni procesori
Za razliku od klasi~nih ra~unara, gdje se referencirawe nekog podatka u memoriji
ostvaruje na osnovu adrese, asocijativni procesori referenciraju podatke u
memoriji na osnovu wihovog sadr`aja. Na taj na~in je mogu}e referencirawe vi{e
podataka istovremeno. Memorija koja ima navedene mogu}nosti, naziva se
asocijativna memorija.
Tipi~na organizacija asocijativne memorije data je na Sl. 6.7. Kqu~ za referenci-
rawe se specifikuje preko registra za komparaciju (CR) i registra za maskirawe
(MR). Upravqa~ka logika inicira komparaciju sadr`aja svih nemaskiranih dije-
lova CR sa svim lokacijama asocijativne memorije. Komparaciju izvodi kontrolna
logika pridru`ena svakoj memorijskoj lokaciji, i za one lokacije koje zadovoqavaju
tra`eni uslov, postavqa se logi~ka jedinica u korespondentni bit registra za
indikaciju. Komparacija se mo`e izvoditi serijski, bit po bit, ili paralelno
(svi biti se istovremeno procesiraju).
Indikator Privremeniregistar
Registar maskirawa
Registar za komparaciju
Sl. 6.7 Organizacija asocijativne memorije.
Maric Slavko
(str.27 RM)
Maric Slavko
(C u 27RM)
131
Vi{e sukcesivnih selekcija se mo`e sa~uvati u podskupu privremenih
registara, a rezultantna selekcija se mo`e dobiti logi~kim operacijama nad
elementima ovog podskupa.
Asocijativni procesori se povezuju na ra~unar doma}in kao specijalizovani
procesori za odre|ene aplikacije. Modul za povezivawe sa okolinom (obi~no se
radi po korisni~kim zahtjevima) obezbje|uje {irok spektar mogu}nosti: direktan
pristup memoriji, paralelni U/I, spregu sa drugim specijalizovanim procesorima,
kori{tewe senzorskih ulaza itd. Sve ovo omogu}ava postizawe visokih performan-
si u aplikacijama kao {to su matri~ne operacije, upravqa~ki sistemi u stvarnom
vremenu, sistemi za upravqawe i manipulaciju podacima, gdje se sekvencijalno
procesirawe realizuje na konvencionalnom ra~unaru-doma}inu, a paralelne opera-
cije (prije svega selekcije na skupu podataka) na pridodatim asocijativnim
procesorima.
Zbog skupe realizacije komparatorske logike, asocijativne memorije su malog
kapaciteta i skupe, {to limitira wihovu upotrebu za specijalizovane namjene.
Zna~ajnu primjenu asocijativnih memorija imamo u realizaciji ke{ memorija, gdje
se utvr|ivawe raspolo`ivosti podatka/instrukcije u ke{u utvr|uje na bazi privje-
ska (tag) generisanog na bazi adrese. Primjeri kori{tewa asocijativne ke{ memo-
rije su IBM 3033, Motorola 88110, Intel Pentium procesori itd.
Primjer paralelne selekcije elemenata koji zadovoqavaju zahtijevani uslov dat
je na Sl. 6.8.
Slavko Maric
Kao predstavnike mo`emo navesti STARAN (Goodyear Aerospace) i PEPE (Bell Laboratories).
132
Sl. 6.8 Selekcija elemenata po uslovu tra`ewa u asocijativnoj memoriji.
133
Vektorski procesori
Mnogi, ra~unski zahtjevni algoritmi, sadr`e veliki broj operacija koje rade sa
ure|enim skupovima (nizovima) elemenata-vektorima. Ove operacije se mogu klasi-
fikovati u slijede}e osnovne grupe: f1: V → V, f2: V → S, f3: V x V → V, f4: V x S → V,
gdje su V i S vektorski odnosno skalarni operand, respektivno. Neke varijante
vektorskih instrukcija su predstavqene na Sl. 6.10. Zajedni~ka im je karakteri-
stika da se ista operacija ponavqa na svim elementima ili parovima elemenata
vektora. Izvo|ewe ovih operacija se mo`e optimizovati ako se izbjegne ponavqawe
dobavqawa i dekodirawa instrukcija za svaki element vektora, odnosno ako se
cijeli proces inicira jednom (vektorskom) instrukcijom. Vektorska instrukcija
sadr`i operacioni kod, adrese operanada, du`inu vektora i adresni inkrement.
Po{to se kod skalarnih ma{ina ove operacije implementiraju programskom
petqom, izbjegava se tako|e gubitak uslijed programske kontrole zavr{etka
petqe. Generalna organizacija vektorskog procesora prikazana je na Sl. 6.9.
Glavnamemorija
Jedinica zaprocesiraweinstrukcija
Skalarniregistri
Skalarni procesor
Ss1
Ss2
Ssn
Kontrolervektorskihinstrukcija
Kontrolervektorskog
pristupa
Vektorskiregistri
Sv1
Sv2
Svn
Vektorski procesor
Proto~ni stepeni
Sl. 6.9 Organizacija vektorskog procesora.
Svaki vektorski registar mo`e da sadr`i jedan vektor sa N elemenata. Jedinica
za procesirawe instrukcija dobavqa i dekodira instrukcije iz glavne memorije i
prosqe|uje skalarne instrukcije skalarnom procesoru, a vektorske kontroleru
vektorskih instrukcija. Skalarni i vektorski procesor se (svaki) sastoji iz vi{e
paralelnih proto~nih funkcionalnih sistema inplementiranih za efikasnu
proto~nu obradu skalarnih odnosno vektorskih instrukcija.
134 134
Sl. 6.10 Neke varijante vektorskih instrukcija.
135
Proto~ni procesori mogu biti jednofunkcionalni ili vi{efunkcionalni.
Vektorska instrukcija se inicira i izvodi pod kontrolom vektorskog instrukci-
onog kontrolera, koji vr{i raspore|ivawe izvr{ewa vektorske operacije na jedan
ili vi{e proto~nih funkcionalnih sistema vektorskog procesora, inicira priba-
vqawe operanada pod kontrolom vektorskog kontrolera pristupa, te inicira
po~etak izvr{ewa vektorske operacije u vektorskom procesoru. Vrijeme
pribavqawa operanada i postavqawa kontrolnih registara (pripremno vrijeme
vektorske operacije) je obi~no znatno ve}e od vremena procesirawa vektora tp ~ t1 *
N, gdje je t1 vrijeme izme|u sukcesivnih operanada, a N du`ina vektora. Nakon
inicirawa obrade, sukcesivni operandi ulaze u proto~ni funkcionalni sistem sa
periodom t1 i obra|uju se redom u proto~nim stepenima. Izlaz iz zadweg proto~nog
stepena se smje{ta ili u memoriju ili u vektorski registar. Kada se neki proto~ni
funkcionalni sistem i odgovaraju}i vektorski registri dodijele za izvo|ewe neke
vektorske operacije, ne mogu se dodijeliti za izvo|ewe slijede}e operacije sve
dok se teku}a operacija ne zavr{i. Da bi se mogu}nosti vektorskog procesora
iskoristile na adekvatan na~in, potrebno je generisati optimizovan izvr{ni kod,
sa ciqem maksimalnog kori{tewa proto~nih resursa i minimizacijom pripremnih
vremena vektorskih operacija, za {to su razvijeni vektoriziraju}i prevodioci.
Grafi~ki prikaz izvo|ewa operacija u vektorskom i osnovnom skalarnom
procesoru dat je na Sl. 6.11.
Prva generacija vektorskih superra~unara je razvijena krajem 60-tih godina i
reprezentuju je STAR-100 TI-ASC i CDC 6600/7600. Drugu generaciju ovih ma{ina
predstavqaju CRAY-1, Cyber-200, Fujitsu VP-200, svi procesnih mo}i ispod 500
Mfloaps-a. Posqedwe generacije ovih ma{ina reprezentuju Cray Y-MP te Fujitsu 2000,
NEC SX-X, Hitachi S800 sistemi.
136
Sl. 6.11 Grafi~ki prikaz izvo|ewa operacija u vektorskom i osnovnom skalarnom
procesoru.
137
6.1.2 MISD arhitekture (Sistoli~ni procesori)
Mnogi problemi koji zahtijevaju intenzivna ra~unawa (procesne resurse) i koji
sadr`e visok stepen paralelizma mogu se efikasno rije{iti primjenom jednosta-
vnih procesnih elemenata organizovanih u neku regularnu strukturu (mre`a,
stablo, linearno poqe i sl.). Ovakva organizacija procesirawa je pogodna za
implementaciju u VLSI tehnologiji, s obzirom na jednostavnost elemenata i
pravilnost strukture.
Informacije u ovaj (sistoli~ni) sistem se "upumpavaju" preko vawskih }elija,
preko kojih se ostvaruje i izlazna veza. Bazi~ni element naj~e{}e omogu}ava samo
jednostavne operacije, kao npr. sabirawe i mno`ewe, kako je to predstavqeno
primjerom na Sl. 6.12.
d
b
c
a b
ad = c + a * b
Sl. 6.12 Bazi~ni procesni element sistoli~nog procesora.
Procesni element mo`e da procesira podatke i ostvaruje vezu sa drugim elemen-
tima paralelno (vi{e bita odjednom) ili serijski, mo`e biti sa ili bez lokalne
memorije. Podaci ulaze u sistoli~no poqe, obra|uju se u procesnim elementima po
principu proto~ne obrade i prenose u slijede}e procesne elemente ritmi~no i
sinhrono. Komunikacija izme|u procesnih elemenata je jednostavna i lokalizovana
na najbli`e susjede, {to omogu}ava (zbog malog rastojawa) pove}awe frekvecnije
radnog takta. Primjer mno`ewa matrica koriste}i sistoli~ka poqa dat je na sl.
6.13.
Sistoli~ni procesori zahtijevaju specifi~no projektovawe algoritama za
odre|ene ra~unski intenzivne probleme i odgovaraju}u organizaciju sistoli~nog
poqa. Visoke performanse i niska cijena implementacije uticali su na primjenu
sistoli~kih poqa u mnogim oblastima (digitalna obrada signala, matri~na
izra~unavawa i sl.). Tehnolo{ki problemi u implementaciji velikog broja U/I
138
veza na VLSI kolu, limitiraju veli~inu i mogu}nost sistoli~nih procesora, a time
i oblast wihove primjene.
Sl. 6.13 Mno`ewe matrica u sistoli~kom poqu
6.1.3 MIMD arhitekture
MIMD (Multiple Instruction Multiple Data) arhitekture se sastoje od niza procesorskih
elemenata, pri ~emu svaki procesor izvodi niz "svojih" instrukcija nad vlastitim
139
tokom podataka, pod kontrolom autonomne kontrolne jedinice. Rad procesorskih
elemenata je asinhron, {to daje veliku fleksibilnost ovakvim sistemima. Ova
pogodnost MIMD arhitektura nije bez cijene, s obzirom da procesni elementi
moraju da kooperi{u u ciqu izvr{ewa jedinstvenog posla. Planirawe mehanizama
komunikacije i sihronizacije postaje od osnovne va`nosti. Budu}i da je komunika-
ciono i sinhronizaciono vrijeme znatno ve}e od vremena izvo|ewa instrukcija, od
interesa je eksploatacija paralelizma na vi{em nivou granularnosti (iako,
naravno, svaki procesor pojedina~no mo`e eksploatisati paralelizam na ni`em,
grupnom ili instrukcijskom nivou, zavisno od svoje arhitekture). MIMD arhitektu-
re se daqe dijele na visoko-paralelne (~vrsto spregnute) i labavo spregnute. U
kategorije labavo spregnutih sistema spadaju LAN (local area network) i WAN (wide
area network) ra~unarske mre`e. Sprega izme|u ra~unara u ovim sistemima se izvodi
serijskim linijama, a izme|u udaqenih ra~unara koriste se modemi i komutirane
veze. Po{to jedino visoko paralelni sistemi mogu efikasno eksploatisati
paralelizam sa vi{im nivoom granularnosti, daqa razmatrawa }emo ograni~iti na
ove arhitekture, uz napomenu da se procjep izme|u ovih arhitektura i lokalnih
ra~unarskih mre`a sve vi{e smawuje.
Visoko paralelni sistemi se daqe mogu klasifikovati na multiprocesore i
multira~unare. U prvom slu~aju procesori komuniciraju preko zajedni~ke memori-
je, a u drugom izmjenom poruka preko sistema (mre`e) za povezivawe. Ove arhitek-
ture se mogu predstaviti (sli~no SIMD) modelima na Sl. 6.14 i Sl. 6.15.
I jedne i druge arhitekture koriste brze ke{ memorije u ciqu uskla|ivawa
propusnog opsega procesora i glavne memorije (multira~unari) i u ciqu smawewa
konflikata pri pristupu memoriji i pristupu resursima spre`ne mre`e, te u ciqu
umawewa efekata ka{wewa uslijed transmisije kroz mre`u (latencije), kod
multiprocesora. Posebno su izra`eni problemi u realizaciji ke{ memorija kod
multiprocesorskih sistema, zbog potrebe o~uvawa konzistencije podataka.
Razli~ite strategije se primjewuju za implementaciju upisa i o~uvawe
konzistentnosti (sa razli~itim performansama u pogledu vjerovatno}e postojawa
podataka u ke{u, rastere}ewa pristupa glavnoj memoriji, cijeni implementacije
itd.) kao npr. upis jedanput, upis kroz ke{, upis mimo ke{a i sl.
Maric Slavko
Prvi put se upi{e (kroz ke{), u glavnu memoriju, slijede}i sukcesivni upisi su samo u ke{. Ke{ motri saobra}aj na bas-u i zna da li je podatak validan u ke{-u.
Maric Slavko
Svako obra}awe sistemskoj memoriji pri upisu ide kroz ke} , ako je podatak vaqan, ~ita se iz lokalne memorije ( Ke{-evi motre saobra}aj na magistrali).
Maric Slavko
Samo za sistemske (dijeqene) varijable, lokalne varijable se upisuju u ke}. Podjela na sistemske/lokalne varijable je poznata sistemu.
140
Sl. 6.14 MIMD PE - PE model. LM ozna~ava lokalni memorijski modul, a PE procesni element.
Sl. 6.15 MIMD PE - memorijski model. M ozna~ava globalni memorijski modul.
Multiprocesori
U multiprocesorkim sistemima (IBM ES/9000, Sequent Symmetry, IBM RP3, BBN
Butterfly, Fujitsu VPP500) svi procesorski elementi imaju pristup zajedni~koj
memoriji preko spre`ne mre`e odre|ene strukture (varijanta sa kori{tewem
memorije sa vi{e ulaza je skupa i ograni~ena na mawi broj procesora). Zajedni~ka
memorija se realizuje obi~no u vi{e modula ~ime se obezbje|uje mogu}nost
istovremenog pristupa razli~itim modulima. S obzirom na to da procesori dijele
jedinstveni (globalni) adresni prostor, konflikti pri pristupawu istim
memorijskim modulima mogu biti veoma izra`eni, a samim tim i limitiraju}i
faktor u ekspanziji ovih sistema. Naime, intenzivna kooperacija izme|u
procesora zahtijeva ~est pristup zajedni~kim memorijskim resursima
(varijablama) i mo`e rezultovati ne`eqenim efektima. U ciqu smawewa broja
konflikata, procesori mogu imati lokalne memorije u koje se smje{taju lokalni
programi i podaci. Povezivawe procesorskih i memorijskih elemenata ostvaruje se
preko spre`nih mre`a (komunikacionih podsistema). Od na~ina povezivawa u
141
znatnoj mjeri zavise performanse, mogu}nosti i naravno cijena ovakvih sistema.
Kao {to se vidi sa Sl.6.14 i Sl.6.15, spre`ne mre`e se koriste i za povezivawe i
komunikaciju izme|u ostalih dijelova sistema (PE-PE, PE-UI procesori). U tekstu
koji slijedi, opisane su razli~ite varijante i osnovne karakteristike spre`nih
mre`a.
Spre`ne mre`e
Zajedni~ka magistrala
Najjednostavniji na~in sprezawa modula paralelnog sistema je preko zajedni~ke
magistrale (Sl. 6.16).
Sl. 6.16 Povezivawe zajedni~kom magistralom.
Ovakav na~in povezivawa naj~e{}e se koristi kod multiprocesorskih paralelnih
sistema. Moduli glavne memorije su mapirani u virtuelni adresni prostor svakog
procesora i tipi~no su isprepleteni u ciqu postizawa ve}eg propusnog opsega.
Po{to samo jedan procesor mo`e zauzeti magistralu i pristupiti zajedni~koj
memoriji, broj procesora koji se mogu vezati na magistralu je ograni~en (naj~e{}e
do 20). U ciqu smawewa konflikata i pove}awa memorijskog propusnog opsega
koriste se ke{ memorije i arhitekture sa vi{estrukim magistralama (npr. Encore
Funkcije povezivawa za ovu mre`u su definisane izrazom:
N, mod )2 - (P (P) PM2 N, mod )2 (P (P) PM2 ii-
ii =+=+ (N = 2 m , ) 10 −≤≤ mi
i predstavqene su na Sl. 6.20. Ukupno ima 2m funkcija povezivawa.
U ovoj {emi povezivawa, procesor sa adresom P mo`e poslati podatke svim
drugim procesorima ~ije su adrese (P ± 2i) mod N. Odre|ivawe rute za komunika-
ciju izme|u procesora mo`e se bazirati na razlici adresa odredi{nog i
izvori{nog procesora. Npr. za komunikaciju izme|u procesora 1 i 12 (N = 16),
Slavko Maric
(Fig 9,10) str. 66 RM)
Slavko Maric
m-1, umjesto n-1 ???.
Maric Slavko
Izvr{avawe funkcije rezultuje selek ci jom izlaznog selektora za ulazni selektor USj, dok bi svaki izlazni selektor ISj selektovao ulazni selektor , za svako ( ).
Slavko Maric
Takodje poznat kao barell shifter. Ovaj tip spre`nih mre`a kori{}en je u Novel Multi proce sor Array i Omen Computer sistemima.
Slavko Maric
m-1, umjesto m?
Slavko Maric
2m ????
145
razlika adresa je 11, pa podatak mo`e sti}i na odredi{te kori{tewem funkcija
PM2I+0, PM2I+1, PM2I+3, prolaze}i kroz ~vorove 2,4. Razli~it skup funkcija
rezultova}e istim odredi{tem, ako je vrijednost ∑ i2 jednaka razlici adresa
odredi{ta i izvori{ta, gdje je i indeks PM2I funkcija iz skupa. Data manipulator
vi{estepene spre`ne mre`e su bazirane na PM2I mre`ama.
N=8
Sl. 6.20 Funkcije povezivawa PM2I spre`ne mre`e.
Re{etka (~etiri najbli`a susjeda)
0 1 2 3
4 5 6 7
8 9 10 11
12 13 14 15
a b c d
e
f
g
h
f
g
h
e
a b c d
Sl. 6.21 Re{etka (FNN).
Funkcije povezivawa za ovu mre`u predstavqene su na Sl. 6.21 i definisane sa:
FNN+1(P) = (P+1) mod N
FNN-1 (P) = (P -1) mod N
FNN+n(P) = (P + n) mod N FNN-n(P) = (P - n) mod N gdje se n = N podrazumijeva kao cijeli broj.
Maric Slavko
(str.69)
146
Sli~no kao kod PM2I mre`a, rutirawe u FNN mre`i se mo`e ostvariti na bazi
razlike adresa odredi{nog i izvori{nog procesora. Ako posmatramo PM2I i
FNN mre`u gdje obe povezuje N procesora i gdje je N = 2m za PM2I i n = N (cije-
li broj) za FNN mre`u (odnosno n = ), onda je PM2I2/m2 +0 = FNN+1, PM2I–0 = FNN–1,
PM2I+m/2 = FNN+n, PM2I– m/2 = FNN–n.
Implikacija je da su FNN funkcije povezivawa podskup PM2I funkcija. Ovaj
tip spre`nih mre`a (sa razli~itim podvarijantama) je ~esto kori{ten u
Shuffle = i )...( 0121 pppp mm −− )...( 1012 −− mm pppp
Exchange = )...( 0121 pppp mm −− )...( 0121 pppp mm −− .
Rutirawe podataka se realizuje nizom perfektnih mije{awa i izmjena, a
maksimalan broj rutirawa je 2m (m mije{awa i m izmjena).
Vi{estepene mre`e
Vi{estepene mre`e, generalno, obezbje|uju povezivawe N sistemskih resursa sa M
drugih resursa. Sastoje se iz odre|enog broja stepeni, pri ~emu se u svakom stepenu
nalazi odre|eni broj a x b krosbar prekida~kih elemenata. Naj~e{}e, vi{estepne
mre`e povezuju N ulaza sa N izlaza koriste}i 2 x 2 krosbar prekida~ke elemente,
koji mogu biti postavqeni u jedno od 4 stawa (Sl. 6.22).
Prekida~ki element
a 0 a 1
Direktna veza
Izmjena
Emisija odozdo
Emisija odozgo
a 0
a 0
a0
a0
a 1
a 1
a1
a1
b0
b0
b1
b1
b0
b1
b0
b1
b0
b1
Sl. 6.22 Funkcije stawa 2x2 krosbar prekida~kih elemenata.
Slavko Maric
Mnogi zna~ajni algoritmi se mogu realizovati primjenom funkcija mije{awa i izmjene (sra~unavawe polinoma, sortirawe i sl.). Ovaj tip povezivawa koristi OMEN ra~unar, RAP sistem, NYU Ultracomputer itd.
Maric Slavko
Funkcija mije{awa - Primjer =============== N Shuffle 0 0 1 2 2 4 3 6 4 1 5 3 6 5 7 7
Maric Slavko
(str.70RM)
147
Mre`a vr{i prenos podataka od izvori{nih do odredi{nih elemenata komunika-
cionim putovima odre|enim stawima prekida~kih elemenata u pojedinim
stepenima. Stawe prekida~kog elementa se odre|uje kontrolnim bitovima na ulazu,
koji je obi~no, za i-ti stepen, i-ti bit adresne informacije rutirawa. (Naj~e{}e se
na 2x2 prekida~kom elementu koristi 1 kontrolni bit, a drugi uzima za komplement
prvog).
U tekstu koji slijedi, izlo`ene su osnovne karakteristike vi{estepenih mre`a
na primjeru generalizovane kocke.
Generalizovana kocka
Ova mre`a se sastoji iz m = log2N stepeni, gdje je N broj ulaznih odnosno izlaz-
nih elemenata koji se povezuju. U svakom stepenu postoji N/2 prekida~kih
elemenata (ukupno m * N/2) i po N ulaznih i izlaznih veza, ozna~enih od 0 … N-1.
Ako se veze ozna~e tako da gorwi (dowi) ulazi (izlazi) prekida~kih elemenata
imaju istu oznaku, onda stepen i generalizovane kocke implementira funkciju
povezivawa Cube , jer vr{i povezivawe linija ~ije se adrese razlikuju u i-toj bit
poziciji.
i
Ako se ostvaruje veza svih ulaza na po jedan izlaz, onda se koriste samo
direktna i unakrsna stawa prekida~kih elemenata. Ako je neki prekida~ki
element u stepenu i postavqen u stawe unakrsnog povezivawa, onda on izvr{ava
funkciju povezivawa. Ako se vr{i povezivawe ulaza S =
sa izlazom D = ( , onda stawe odgovaraju}eg prekida~kog elementa
u stepenu i mora biti postavqeno za unakrsno povezivawe, ako je
iCube )...( 0121 ssss mm −−
1
)... 0121 dddd mm −−
=⊕ ii ds , u
suprotnom - za direktno povezivawe. Primjer povezivawa ulaza 1 sa izlazom 4
dat je na Sl. 6.23.
Maric Slavko
Sl. 19, str. 71
148
Sl. 6.23 Put od ulaza 1 do izlaza 4 u generalizovanoj kocki sa 8 PE.
Prekida~ki elementi su postavqeni u stawe za unakrsno povezivawe u stepenima
2 i 0 ( Cube , ) i direktno u stepenu 1. Za slu~aj prosqe|ivawa od jednog
izvora ka vi{e odredi{ta istovremeno, koristi se stawe emisije odozgo
(odozdo) prekida~kih elemenata. Za prosqe|ivawe poruka kroz mre`u, mo`e se
koristiti adresa rutirawa (routing tag) T = S ⊕ D, inicijalne du`ine m-bita, gdje
su S i D adrese izvori{ta/odredi{ta. U narednom stepenu, odnosni bit
kori{ten u prethodnom stepenu mo`e se odbaciti. Ako se koristi prenos na
vi{e odredi{ta (emisija), potrebno je 2m bita za adresu rutirawa.
2 0Cube
Topologije ekvivalentne generalizovanoj kocki su vi{estepene mre`e tipa
omega, delta i dr. Ovaj tip spre`nih mre`a kori{ten je u velikom broju paralel-
nih arhitektura: NY Ultracomputer/IBM RP3, Illinois Cedar, BBN Butterfly, i dr.
Sve navedene mre`e mogu se primijeniti u SIMD ili MIMD arhitekturama. Neke
mre`e se mogu podijeliti na nezavisne mre`e, pri ~emu svaka podmre`a ima stan-
dardne mogu}nosti odgovaraju}eg tipa i veli~ine (hiper-kocka, PM2I mre`e imaju
takvu osobinu) te mogu biti primijewene i u MSIMD (vi{estrukom SIMD) ili
razdjeqivim SIMD/MIMD sistemima. Ovakvi sistemi se mogu razdijeliti u mawe
nezavisne ma{ine razli~ite veli~ine, koje mogu raditi u SIMD ili MIMD modu
(CM-5, PASM npr.).
Spre`ne mre`e se karakteri{u na osnovu operativnog moda, upravqa~ke strate-
gije, metodologije prekidawa i topologije.
Maric Slavko
Sl. 19. Str. 71
Maric Slavko
Sl.20 [7], Siegel - promjeniti primjer).
149
Operativni mod mo`e biti sinhroni ili asinhroni. Sinhroni mod rada mre`a se
koristi kod SIMD sistema, gdje se povezivawa i transferi (instrukcija i podataka)
realizuju upravqawem iz jedne kontrolne jedinice. Asinhroni mod karakteri{e
rad MIMD sistema (multiprocesori i multira~unari). U nekim sistemima realizo-
vana je kombinacija sinhronog/asinhronog na~ina rada.
Upravqa~ka strategija defini{e na~in upravqawa prekida~kim elementima, i
mo`e biti centralizovana, gdje centralni kontroler, fizi~ki izdvojen od logike
za prenos podataka, upravqa stawem prekida~kih elemenata, i distribuirana, gdje
je upravqa~ka logika implementirana u prekida~kim elementima.
Prekida~ki metod mo`e biti paketni (packet switching) ili baziran na fizi~kom
povezivawu na nivou kola (circuit switching). U prvom slu~aju, podaci se prenose od
izvori{ta do odredi{ta u paketima odre|ene du`ine, prolaze}i kroz niz
prekida~kih elemenata. U drugom slu~aju, podskup prekida~kih elemenata se
postavqa u stawa koja omogu}avaju postojawe direktne fizi~ke veze izme|u
izvori{ta i odredi{ta za vrijeme trajawa transfera (npr. u Intel iPSC-2 sistemu,
uspostavqawe veze izme|u izvori{ta i odredi{ta zahtijeva 350 sµ , sa brzinom
transfera od 2.8 Mbyte/s).
Mre`e koje omogu}avaju da se istovremena veza izme|u vi{e parova ulazno-
izlaznih elemenata ostvaruje bez konflikata u prekida~kim elementima mre`e
ili komunikacionim linijama, nazivaju se neblokiraju}e.
Kod mre`a za paketni prenos, postoji vi{e tehnika kojima se paketi usmjeravaju
od izvori{ta do odredi{ta. Ako je {irina prenosnog puta W (bita), i ako se
podaci iz izvora ubacuju u mre`u sa periodom Tc, onda je propusni opseg kanala
W/Tc. Efektivna brzina prenosa je mawa jer, pored informacionih podataka,
paketima se dodaju adresne informacije i informacije za detekciju/korekciju
gre{aka. Dodatno, prenosnim putovima se mogu prosqe|ivati i drugi paketi u svrhu
sinhronizacije i dijagnostike u okviru mre`e, paketi potvrde prijema drugih
paketa i sl.
Tehnika "prosqe|ivawa bez pam}ewa" (wormhole routing) prosqe|uje najmawe
dijelove paketa koji se mogu prenijeti (w bita) slijede}em elementu u prenosnom
putu, ~im su oni raspolo`ivi (jedan paket koji se prenosi mo`e da ima dijelove u
svim ~vori{tima prenosnog puta). Ako je L du`ina poruke, D broj segmenata
prenosnog puta kojima se prenosi paket, a Ts vrijeme pripreme poruke i
150
inicijalizacije kanala, onda je (za slu~aj da nema ~ekawa zbog blokirawa u
prenosnom putu) vrijeme prenosa Ts + Tc * (L /W + D). Kod tehnika "zapamti pa pro-
slijedi" (store and forward), svako ~vori{te kroz koje poruka prolazi prvo primi
kompletnu poruku, a zatim je prosqe|uje slijede}em ~voru, pa je du`ina prenosa od
izvori{ta do odredi{ta (pod pretpostavkom da nema ~ekawa na resurse) Tn = Ts+Tc *
(L / W)*D.
Tehnika sa pam}ewem po potrebi (virtual cut through), omogu}ava prenos poruka bez
zadr`avawa, sve dok se po~etak poruke (adresno zaglavqe) daqe prosqe|uje. Ako je
slijede}e ~vori{te (izlazni kanal) zauzet, onda se poruka prikupqa i ~uva u
prihvatniku posqedweg dostignutog ~vora. Kako ulazni kanal ne bi bio zauzet u
slu~aju jedne blokirane poruke u ~voru, ~esto se realizuju ~vori{ta sa ve}im
brojem prihvatnika.
Topologija mre`e se mo`e opisati grafom kod kojeg ~vorovi predstavqaju
prekida~ke elemente, a lukovi komunikacione putove. Kod stati~kih topologija
(Sl. 6.24) veza izme|u ~vorova je fiksna i ustanovqene veze se ne mogu rekonfi-
gurisati, dok dinami~ke topologije dozvoqavaju dinami~ku promjenu
komunikacionih veza.
Sl. 6.24 Stati~ke topologije povezivawa.
Broj ~vorova grafa predstavqa veli~inu mre`e (network size). Osnovni
parametri koji se koriste za procjenu komunikacionih mogu}nosti, kompleksnosti
i cijene mre`e su: stepen ~vora (node degree-broj komunikacionih veza u jednom
Maric Slavko
str 64, RM
151
~voru) i dijametar mre`e (maksimalni najkra}i put izme|u bilo koja dva ~vora
mre`e).
Multira~unari
Multira~unari se sastoje iz skupa procesnih elemenata (svaki sa procesorom,
lokalnom memorijom i komunikacionom jedinicom) povezanih prema odre|enom
rasporedu (topologiji). Svaki procesni element izvodi asinhrono instrukcije iz
svoje lokalne memorije. Komunikacija sa drugim procesnim elementima u sistemu
se ostvaruje izmjenom poruka. S obzirom na to da su cijena i kompleksnost limiti-
raju}i faktori za potpuno povezivawe svih procesnih elemenata, svaki procesni
element je ograni~en na povezivawe sa odre|enim brojem susjednih elemenata.
Poruka, tipi~no, treba da pro|e kroz odre|eni broj PE prije nego {to do|e do
kona~nog odredi{ta. Topologija povezivawa se ~esto bira tako da je pogodna za
implementaciju algoritama ciqnih aplikacija na odnosnoj arhitekturi. Budu}i da
je teoretski kapacitet ovakve mre`e po ~voru srDWn *
=Γ , gdje je n stepen ~vora
topolo{kog grafa (broj veza prema susjedima), W {irina puta za prenos
informacija i du`ina sredweg puta poruke, te`i se za minimalnim dijametrom
grafa (~ime se smawuje ). U ovu klasu MIMD sistema spadaju Intel iPSC2, n-CUBE,
Paragon, Cray T3E, ASCI Red i drugi. Naj~e{}e isticana prednost multira~unara je
mogu}nost jednostavnog pro{irewa dodavawem novih elemenata ({to je bio jedan od
osnovnih projektnih parametara Inmos transpjutera), dok im je mana ka{wewe u
prenosu poruka ka udaqenim procesnim elementima.
srD
srD
U daqem tekstu date su osnovne karakteristike NYU Ultracomputer-a i Intel Paragon
ra~unara, kao primjera multiprocesorske, odnosno multira~unarske arhitekture.
152
NYU Ultracomputer
Blok {ema ovog MIMD ra~unara sa dijeqenom memorijom data je na Sl. 6.25.
Procesni elementi tako|e imaju lokalnu memoriju. Za povezivawe bilo kojeg
procesnog elementa sa bilo kojim globalnim memorijskim modulom koristi se
vi{estepena Omega spre`na mre`a, sa implementacijom koncepata objediwavawa
(combining) i Fetch & Op funkcija u prekida~kim elementima, sa ciqem pribli`ava-
wa konceptu "para-ra~unara" (PRAM, J.Schwartz: bilo koji broj PE mo`e ~itati
sadr`aj neke lokacije zajedni~ke memorije istovremeno (u jednom ma{inskom ci-
klusu); bilo koji broj PE mo`e upisivati u neku memorijsku lokaciju istovremeno).
Sl. 6.25 Blok {ema NYU Ultracomputer-a. PNI (MNI) ozna~avaju procesorski (memorisjki) mre`ni interfejs.
Dijeqenoj memoriji se pristupa indirektno, u vi{e ciklusa, preko spre`ne mre`e.
Procesni elementi su vezani na mre`u preko procesorskog mre`nog interfejsa, a
memorijski moduli preko memorijskog mre`nog interfejsa. Usmjeravawe prenosa u
zimaju programski prevodioci, a korisnici realizuju programe koriste}i standar-
dne jezike. Pored toga {to korisnik ne ula`e nikakav dodatni napor u odnosu na
sekvencijalno programirawe, ovaj pristup omogu}ava direktnu eksploataciju
postoje}ih sekvencijalnih programa (ponovo prevedenih paraleliziraju}im
prevodiocem) na paralelnim sistemima. Osnovni problem je {to paraleliziraju}i
kompajleri te{ko mogu, u op{tem slu~aju, identifikovati visok nivo paralelizma
(npr. zbog nemogu}nosti da odrede vrijednosti pokaziva~a u fazi prevo|ewa, zbog
ogromnog broja kompleksnih me|uzavisnosti i sl.). Cijena koja se pla}a za komodi-
tet programera je, ~esto, zna~ajno umawewe ubrzawa izvo|ewa aplikacije i iskori-
{tenosti resursa paralelne ma{ine.
Paraleliziraju}i kompajleri koriste razli~ite postupke transformacije
izvornog programa u ciqu postizawa {to ve}eg iznosa paralelizma u
trasformisanom kodu, naravno uz o~uvawe semanti~kog integriteta izvornog
programa.
Optimizacija po tragu (trace scheduling) npr., je tehnika globalne optimizacije,
koja se zasniva na selidbi operacija (prije/poslije granawa) u ciqu pove}awa bazi-
~nih blokova (i time iznosa paralelizma) po najvjerovatnijem putu izvo|ewa.
Optimizacija programskih petqi je od vitalnog zna~aja za eksploataciju parale-
lizma, jer petqe potencijalno sadr`e veliki iznos paralelizma i izvo|ewe petqi
je naj~e{}e dominantni dio izvo|ewa programa.
Osnovne tehnike optimizacije su vektorizacija, razmotavawe petqi i softver-
ska proto~nost. Tehnika vektorizacije nastoji iskazati operacije u petqi skupom
vektorskih operacija; razmotavawem petqi za odre|eni broj iteracija pove}ava se
170
bazi~ni blok u tijelu petqe, i na taj na~in pove}ava iznos paralelizma koji se
mo`e eksploatisati pri izvo|ewu. Tehnikom softverske proto~nosti, transfor-
mi{e se tijelo petqe u ciqu omogu}ewa direktne eksploatacije paralelizma
izme|u iteracija i u okviru jedne iteracije (Sl. 7.5).
Neki od ad-hok optimizacionih postupaka su: zamjena indukcionom varijablom u
izrazima u petqi, preimenovawe skalarnih varijabli, zamjena slijede}ih referen-
cirawa skalara wegovim izrazom, dijeqewe petqi, dijeqewe domena podataka, i sl.
a : i←i +1
b : j←i +h
c : k←i +g
d : l←j +1
0: a 1: b, c 2: d, a 3: b, c 4: d
1: a 2: b, c 3: d, a
1: a 2: b, c 3: d
a) b) c)
a) Sekvencijalna petqa b) Dvostruko razmotana petqa c) Proto~na petqa
Sl. 7.5 Optimizacija petqe.
Modulza prikaz
Analiza
Katalogtransform.
FORTRAN 77program
Internapredstava
BACK END
Paralelizovani
programSUPRENUM FORTRAN
Interakt.modul
FRONT END
Sl. 7.6 Struktura sistema SUPERB.
Kao primjer automatske identifikacije i specifikacije parelelizma, navedimo
SUPERB (Suprenum Parallelizer Bonn), interaktivni paralelizator koji
Maric Slavko
(Pod uslovom da arhitektura dozvoqava izvo|ewe svih slobodnih operacija u jednom ciklusu, 2 prolaza sekvecijalne petqe se izvode za 6 ciklusa, dvostruko razmotanee petqe za 5 ciklusa, a proto~ne petqe za 4 ciklusa?).
171
transformi{e standardne FORTRAN 77 sekvencijalne programe u semanti~ki
ekvivalentne paralelne SUPRENUM FORTRAN programe, za SUPRENUM MIMD
ma{inu . Struktura sistema je predstavqena na Sl. 7.6.
Front End trasformi{e FORTRAN 77 program u internu reprezentaciju. Modul za
analizu sadr`i alate za analizu toka programa i analizu zavisnosti: izlaz iz ovog
modula su informacije o nizovima definicija varijabli i nizovima kori{tewa,
zavisnosti izme|u naredbi, `ivotu varijabli, raspolo`ivo{}u izraza i sl. Na
osnovu tih informacija vr{i se paralelizacija, i to u dvije faze:
• identifikuje se krupnozrnasti paralelizam i raspodjequje u skup procesa
(MIMD paralelizacija). Paralelizacija se bazira na razdiobi domena
podataka, pri ~emu svaki segment predstavqa lokalni adresni prostor
procesa,
• svaki proces se analizira, identifikuju se programske petqe koje se
prestruktui{u kao vektorske operacije (SIMD paralelizacija-vektoriza-
cija). Time se posti`e visok stepen paralelne obrade u ~vorovima koji
izvode procese i koji imaju mogu}nost efikasnog procesirawa vektorskih
operacija.
Interaktivni sistem ipak dopu{ta korisniku mogu}nost pra}ewa i pode{avawa
procesa transformacije. Back End modul, na osnovu transformisane interne repre-
zentacije, generi{e paralelizovan SUPRENUM FORTRAN program. Sli~an pristup
koristi Parafrase prevodilac razvijen na univerzitetu u Ilinoisu, Buldog prevodilac
(Yale) i dr. Neka rje{ewa omogu}avaju da se odre|eni problemi specifikuju jezikom visokog
nivoa, baziranim na apstraktnim tipovima podataka - objektnim klasama, koji
sadr`e kako definiciju potrebnih struktura podataka za navedene probleme, tako
i operacija pridru`enih odnosnoj klasi. Ovakva specifikacija ne sadr`i
specifi~ne konstrukcije za paralelno programirawe. Sistem automatski prevodi
ovakvu specifikaciju visokog nivoa u paralelni programski jezik (SUPRENUM
FORTRAN).
U programskom jeziku BLAZE poku{ava se na}i kompormisno rje{ewe izme|u
sekvencijalnog programirawa i eksplicitne identifikacije i specifikacije
paralelizma u paralelnim programskim jezicima. Sa izuzetkom naredbe "forall", tok
kontrole u BLAZE jeziku je potpuno sekvencijalan. Intencija jezika je da se ostvari
172
visoko paralelizovano izvo|ewe na razli~itim SIMD i MIMD arhitekturama uz
potpuno osloba|awe korisnika od detaqa paralelnog izvo|ewa (korisnik nema
predstavu o mogu}im vi{estrukim nitima toka kontrole u fazi izvo|ewa npr.).
Realizaciju ovog ciqa u potpunosti preuzima prevodilac i run-time okru`ewe.
Jezik ima sintaksu sli~nu PASCAL-u. Da bi prevodilac mogao izvr{iti
kvalitetnu paralelizaciju, napravqene su odre|ene restrikcije: pokaziva~i nisu
implementirani jer spre~avaju efikasnu identifikaciju paralelizma. Dodatno,
procedure imaju funkcionalnu semantiku: efekat izvo|ewa procedure mo`e biti
samo pridjeqivawe povratne vrijednosti procedure. U okviru procedure dozvoqen
je pristup samo lokalnim podacima. Gnije`dewe procedura nije dozvoqeno. Ovakav
koncept procedura je karakteristi~an za funkcionalne jezike (bazirane na toku
podataka). Ipak, za razliku od funkcionalnih jezika BLAZE dopu{ta vi{estruko
pridjeqivawe istoj varijabli. Dakle, jezik omogu}ava programirawe na na~in
veoma blizak konvencionalnom, {iroko kori{tenom PASCAL-u, a s druge strane
automatsku identifikaciju i specifikaciju paralelizma u toku prevo|ewa, i
eksploataciju istog u fazi izvo|ewa programa. Sli~ne karakteristike imaju i
funkcionalni jezici SISAL, VAL ili ID.
7.4 Projektovawe i razvoj paralelnih programa
I pored toga {to kori{tewe paraleliziraju}ih prevodilaca osloba|a korisnika
dodatne dimenzije kompleksnosti programirawa u paralelnom okru`ewu, ipak ono
ima i nekoliko ozbiqnih nedostataka. Osnovni nedostatak je nemogu}nost prevodi-
laca da mijewa semantiku programa, odnosno strukturu sekvencijalnih algoritama,
koji ~esto ne sadr`e mnogo inherentnog paralelizma. Prestrukturirawem postoje-
}ih algoritama ili konstrukcijom novih, mo`e se obezbijediti znatno pove}awe
iznosa (pa prema tome i eksploatacije) paralelizma. Konkurentnost se pojavquje
kao fundamentalni zahtjev za algoritme i programe.
Daqe, mnogi postoje}i sekvencijalni jezici sadr`e konstrukcije koje
limitiraju mogu}nost detekcije paralelizma u postoje}im programima (pokaziva~i,
mnogostruko ugnije`dene procedure sa mogu}no{}u pristupa dijeqenim
varijablama, "alias" varijable i sl.). Sekvecijalni programi nisu automatski
prilagodqivi za izvo|ewe za slu~aj pove}awa broja procesora u sistemu i obima
problema. Mogu}nost pro{irewa (scalability) u navedenom smislu se tako|e name}e
Maric Slavko
SISAL - Streams and Iterations in a Single¬Asignment Language.
Maric Slavko
VAL - Value Oriented Algorithmic Longuage.
Slavko Maric
?????
173
kao jedan od bitnih zahtjeva za paralelne programe. Kompleksnost paralelnog
programirawa izrazito potencira modularnost kao fundamentalni princip
programirawa. Aspekti modularnosti sekvencijalnog programirawa moraju biti
pro{ireni, s obzirom na specifi~nost paralelnih sistema.
Prirodan ciq je da se navedena svojstva iska`u adekvatnim konstrukcijama
odgovaraju}eg programskog jezika, ne optere}uju}i programera detaqima komunika-
cije i koordinacije me|u procesorima. Pored programskog jezika, od su{tinskog
zna~aja za razvoj i realizaciju paralelnih programa je postojawe generalnog modela
paralelne ma{ine, koji bi omogu}io razvoj generalnih tehnika i metoda programi-
rawa paralelnih ma{ina, primjenqivih na najve}em broju sistema. Tako|e, ovakav
generalni model bi olak{ao proces standardizacije operativnih sistema i
razvojne radne okoline.
I pored navedenih argumenata u prilog eksplicitno paralelnog programirawa,
MIMD sistemi za sada mogu da, na me|uprocesorskom nivou, efikasno eksploati{u
samo krupnozrnasti paralelizam. Za efikasno izvo|ewe ra~unawa po procesnim
elementima novijih (RISC baziranih) arhitektura i daqe }e biti od interesa
optimalno ure|ewe niza instrukcija u fazi prevo|ewa.
7.4.1 Programski modeli paralelnih ma{ina
Robusnost i jednostavnost von-Neuman-ovog modela (sekvencijalnog) ra~unara
omogu}io je razvoj generalnih tehnika programirawa, standardizaciju programskih
jezika pa i arhitektura i operativnih sistema (UNIX npr.) sekvencijalnih ma{ina.
Odgovaraju}a paradigma neophodna je i za paralelne sisteme. U daqem tekstu dat je
kratak pregled postoje}ih varijanti.
PRAM (Paralel Random Access Machine) model je idealizovana i pojednostavqena
predstava paralelnih sistema sa dijeqenom memorijom, gdje svaki procesor u
svakom ciklusu izvodi ili jednu elementarnu operaciju, ili ~ita/pi{e iz lokalne
ili dijeqene memorije. Razli~ite varijante PRAM modela defini{u pristup
memoriji sa vi{e ili mawe restrikcija: kod EREW (Exclusive Read Exclusive Write)
PRAM modela nije dozvoqen istovremeni pristup dijeqenoj memoriji od strane
razli~itih procesora niti za ~itawe niti za upis. CREW (Concurrent Read Exclusive
Write) model dozvoqava istovremeno ~itawe ali ekskluzivan upis, dok CRCW nema
ograni~ewa na pristup zajedi~kim lokacijama. Ovakav upro{ten model nije
174
primjenqiv kao generalna platforma za paralelno programirawe, iako omogu}ava
dobijawe uvida u strukturu i kompleksnost paralelnog ra~unawa.
Model programirawa koji odgovara ovom ma{inskom modelu zasniva se na skupu
procesa koji dijele podatke u istom adresnom prostoru, i kojem pristupaju asinhro-
no. Koordinacija aktivnosti i kontrolisan pristup zajedni~kim resursima,
zahtijeva eksplicitno i pa`qivo programirawe i realizuje se sinhronizacionim
mehanizmima tipa semafora, monitora i sl. Navedeni koncept ne obezbje|uje u
su{tini zahtjeve za modularno programirawe i ne uzima u obzir druge aspekte
(lokalnost npr.), veoma zna~ajne za druge modele paralelnih ma{ina.
Multira~unar Ovaj model paralelnog sistema je idealizovana predstava
MIMD paralelnih sistema i mo`e se predstaviti istom {emom (Sl. 6.14, 6.15).
Svaki ra~unar izvodi svoj vlastiti program iz lokalne memorije. Lokalni procesi
imaju direktan pristup podacima u lokalnoj memoriji, a komunikacije sa procesima
u drugim ra~unarima se ostvaruju slawem i prijemom poruka preko spre`ne mre`e
(u op{tem smislu, ovim mehanizmom se ostvaruje pristup udaqenim memorijama,
distribuiranim po drugim procesnim elementima). U idealizovanoj mre`i, cijena
transfera poruka zavisi samo od du`ine poruke. Bitna karakteristika modela je
lokalnost tj. svojstvo sistema da je cijena pristupa lokalnoj memoriji mnogo mawa
od cijene pristupa udaqenoj memoriji.
Programi razvijeni za ovaj model, mogu se efikasno implementirati i na
multiprocesorske sisteme, budu}i da isti podr`avaju komunikacione mehanizme na
bazi poruka.
Postoji nekoliko modela programirawa koji odra`avaju arhitekturne
karakteristike multira~unarskog modela paralelnih sistema. Oni se zasnivaju na
prostim apstrakcijama kojima se mogu iskazati konkurentnost, lokalnost/global-
nost te mogu}nost pro{irewa i modularnog programirawa.
Model zasnovan na zadacima i kanalima se sastoji iz varijabilnog skupa zadataka
koji se izvode konkurentno. Zadatak se izvodi u lokalnoj memoriji nekog od
procesnih elemenata nad lokalnim podacima. Komunikacija sa zadacima na drugim
procesorima se realizuje preko U/I portova, mehanizmom poruka. U/I portovi
razli~itih zadataka mogu biti spojeni dinami~ki kreiranim kanalima. Zadaci se
mapiraju na procesore; mapirawe ne smije uticati na semantiku programa.
Slavko Maric
prevod ????
175
Sli~ne su{tinske karakteristike imaju model prosqe|ivawa poruka (message
passing model) i objektno orijentisani model u kojem objekti konceptualno
odgovaraju zadacima.
SPMD (single program multiple data) programski model se reprezentuje jednim
programom, koji se izvodi nad disjunktnim skupovima podataka. On odgovara
podskupu gore navedenih modela, za slu~aj fiksnog broja identi~nih zadataka koji
iste operacije izvode nad razli~itim podacima. Ovaj model je primjenqiv za MIMD
arhitekture sa velikim brojem procesnih elemenata. Koncepti ovog modela vodili
su razvoju FORTRAN-a 90 i High Performance Fortran-a (HPF).
SIMD model paralelnih sistema reprezentuje odgovaraju}u specijalizovanu klasu
arhitektura, koja nije pogodna kao generalna platforma za paralelno procesirawe,
iako su ovi sistemi izrazito pogodni za rje{avawe dosta {iroke klase
specijalizovanih i dobro strukturiranih nau~nih problema. Adekvatan model
programirawa za ovaj model arhitektura se zasniva na paralelizmu podataka, koji
podrazumijeva mogu}nost fine granularnosti operacija. Programer treba da
specifikuje strukture podataka nad kojima se (iste) operacije mogu izvesti para-
lelno, a prevodilac generi{e odgovaraju}i kod. Ovaj model programirawa pogodan
je i za MIMD arhitekture sa velikim brojem procesnih elemenata i regularnom
strukturom povezivawa.
Kriti~ki osvrt na aktuelne modele programirawa i arhitektura dao je
Dennis, uz tvrdwu da nijedan navedeni model ne zadovoqava principe modularnog
programirawa (a samim tim ni generalnost programirawa), te da modeli
arhitektura ne uzimaju adekvatno u obzir fundamentalna pitawa latentnosti
memorije i me|uprocesorske sinhronizacije. Predla`e se generalni semanti~ki
model predstavqen na Sl 7.7.
Predlo`eni model ima izvori{te u argumentaciji da se koncept modularnosti
najpogodnije implementira ako je mogu}e aktivirati funkcije (procedure) uz
specifikaciju korektnih parametara, bez obzira na to gdje se funkcije ili
argumenti nalazili. Svaki objekat ima jedinstven identifikator (pokaziva~ na
objekat). Aktivirawe modula se onda defini{e parom (procedure_pointer,
argument_pointer) (argument_pointer se odnosi na strukturu koja sadr`i skup
vrijednosti argumenata za proceduru).
176
EPIR
x:Z:
n
Programski DAG
Aktivnost
Pointerprocedure
Okvir
Ofset Varijableokvira
Tekst
Stablo aktivacije
Heap DAG
Zapisi
Poqe
1 n. . .
Sl. 7.7 Generalni semanti~ki model paralelnog procesirawa.
Model se sastoji iz 3 komponente (od kojih se svaka mo`e predstaviti acikli~kim
orijentisanim grafom). Prvi dio sadr`i kod procedura kojim se defini{u aktiv-
nosti. Svaki luk u grafu indicira poziv neke procedure iz nadre|enog modula.
Korespondentni graf je stablo aktivacije, gdje svaki ~vor sadr`i lokalne podatke
za aktiviranu proceduru. Tre}i dio je sistemski heap, ~iji ~vorovi reprezentuju
strukture podataka, a podre|eni ~vorovi elemente struktura. U ovakvom modelu
aktivnost se defini{e parom instrukciona_referenca (IR), pokaziva~_okru`ewa
(EP). Instrukciona referenca identifikuje programski modul i instrukciju u
modulu, spremnu za izvr{ewe. Pokaziva~ okru`ewa identifikuje aktivaciono
stablo pridru`eno programskom modulu. Neka operacija u modelu mo`e da: izvodi
lokalna ra~unawa, selektuje slijede}u operaciju na bazi neke lokalne vrijednosti,
manipuli{e strukturama na heap-u i inicira ili zavr{i aktivirawe nekog modula.
Sistem dopu{ta postojawe vi{e konkurentnih aktivnosti u istom modulu i vi{e
instanci jednog modula. Implementacione varijante za koordinaciju aktivnosti su
fork i join operacije u nitima, ili uslovi aktivacije po konceptu ma{ina upravqanih
podacima.
177
Model nije baziran na nekoj postoje}oj arhitekturi ili tehnologiji, ve}
suprotno, ima ambiciju da trasira puteve za projektovawe arhitektura koje }e
zadovoqiti fundamentalne zahtjeve za paralelno programirawe. Model tako|e
uva`ava fizi~ke limite kapaciteta memorije, fiksnu {irinu rije~i i sl. ali i
implementacione aspekte. Vi{enitni koncepti i principi upravqawa na bazi
toka podataka se predla`u kao bazni za razvoj arhitektura novih ma{ina.
7.4.2 Projektovawe paralelnih programa
Projektovawe i realizacija paralelnih programa je kompleksan zadatak, koji nije
mogu}e formalizovati skupom precizno definisanih koraka i postupaka. Stoga je
neophodan odre|eni metodolo{ki pristup koji apostrofira razmatrawe bitnih
faktora i razli~itih opcija od kojih zavisi kvalitet rje{ewa, i koji obezbje|uje
kriterijume za izbor izme|u razli~itih alternativa.
Projektovawe paralelnih programa je u uskoj vezi sa algoritamskom podlogom i
veoma ~esto zahtijeva prestrukturirawe postoje}eg algoritma ili razvoj adekva-
tnijeg. Bez obzira na ma{inski ili programski model, rezultat projekta treba da
bude skup modula (zadataka) koji obavqaju odre|ena ra~unawa i izme|u kojih
postoje precizno definisane interakcije, te wihov raspored po procesnim elemen-
tima paralelnog sistema. Naravno, konkurentno izvo|ewe modula raspodjeqenih po
procesnim elementima, mora realizovati `eqenu funkciju.
Realizacija navedenog ciqa se mo`e ostvariti strukturirawem
projektovawa u ~etiri faze: particionisawe, ustanovqavawe veza (komunikacija),
ukrupwavawe i mapirawe (Sl. 7.8). U praksi, proces nije strogo sekvencijalan:
nezadovoqavaju}e alternative u nekoj fazi mogu implicirati ponovno razmatrawe
varijanti u prethodnim fazama.
Particionisawe ima za ciq da se cijeli proces izdijeli na {to ve}i broj
zadataka izme|u kojih postoji potencijalno velika mogu}nost konkurentnog
procesirawa. Zadaci obuhvataju kako ra~unawa (skup operacija) tako i podatke nad
kojima se ra~unawa izvode. Dobra podjela implicira ravnomjernu raspodjelu, kako
ra~unawa, tako i podataka po zadacima. Osnovne komplementarne tehnike razdiobe
su dekompozicija domena (podataka) i funkcionalna dekompozicija. Generalno,
zadaci ne treba da sadr`e redundantna ra~unawa ili podatke i, broj zadataka koji
se dobijaju dekompozicijom treba da je u proporciji sa veli~inom problema.
178
Zadovoqavawem navedenih principa, dolazi se do rje{ewa sa izra`enom
konkurentno{}u i adaptibilno{}u u odnosu na obim problema.
Povezivawe je faza u kojoj se ustanovqava zavisnost izme|u zadataka i potrebni
transferi (komunikacije) podataka izme|u wih. Za specifikaciju komunikacije
potrebno je definisati, kako same podatke koji se izmjewuju odre|enim komunika-
cionim mehanizmom (porukama npr.), tako i komunikacione veze (kanale) izme|u
zadataka.
PROBLEM
Mapirawe
Komunikacija
Particionisawe
Ukrupwavawe
Sl. 7.8 Proces projektovawa paralelnih programa.
Komunikacionu strukturu dekomponovanog sistema karakteri{e lokalnost, struk-
turnost, dinami~nost i sinhronizam. Dobra dekompozicija obezbje|uje da zadaci
komuniciraju sa malim skupom susjednih zadataka (lokalnost), tj. obezbje|uje
balansiranu dekompoziciju komunikacija, tako da susjedni zadaci formiraju
regularnu strukturu. Kod stati~kih komunikacija, svaki zadatak izmjewuje podatke
samo sa unaprijed odre|enim zadacima. Za realizaciju sinhronih transfera, zadaci
Slavko Maric
Prouciti primjer
179
koji su ukqu~eni u transfer moraju da kooperi{u za realizaciju transfera (kod
asinhronih transfera slawe/prijem su nezavisni). Komunikacije tako|e treba da
imaju mogu}nost konkurentnog izvr{ewa i mogu}nost preklapawa sa ra~unawima.
Ykrypwavawe grupisawe zadataka se vr{i u ciqu smawewa komunikacionih
aktivnosti (i vremenskih gubitaka) uz zadr`avawe {to je mogu}e ve}eg iznosa
paralelizma. Dodatno, potrebno je odr`ati prilagodqivost (scalability) rje{ewa
obimu problema, i prihvatqivu cijenu programske implementacije. U ovoj fazi
potrebno je, tako|e, uzeti u obzir implementacione aspekte (broj procesora, na~in
komunikacije i sl.).
/
Smawewe odnosa komunikacija/ra~unawe po zadatku, grupisawem susjednih zada-
taka koji me|usobno komuniciraju u jedan (ve}i) zadatak, zasniva se na efektu
odnosa povr{ina i volumena (komunikacioni zahtjevi su proporcionalni povr{i-
ni, a kompjutacioni volumenu pod-domena), tako da se pove}awem pod-domena posti-
`e `eqeni efekat. Daqe, grupisawe zadataka sa sekvencijalnom zavisno{}u ne
smawuje paralelizam, a omogu}ava smawewe iznosa komunikacije (u slu~aju postoja-
wa dovoqnog broja procesnih elemenata). Smawewe komunikacionih gubitaka mo`e
se ostvariti i vi{estrukim ponavqawem izvo|ewa istog ra~unawa u razli~itim
procesnim elementima. Neki od agoritama za grupisawe datog skupa zadataka,
predstavqenog acikli~nim orijentisanim grafom (DAG), koji se baziraju na
prethodnim principima, opisani su ukratko u tekstu koji slijedi.
Grupisawe po vertikalnim slojevima je metoda koja se bazira na grupisawu sekven-
cijalnih ~vorova u ve}i ~vor. DAG, koji reprezentuje sistem zadataka, se transfo-
rmi{e u ekvivalentni graf sa horizontalnim slojevima, tako da je du`ina puta od
korijena grafa do svih ~vorova u jednom sloju ista. Zatim se svi ~vorovi koji
pripadaju kriti~nom putu grupi{u u jedan ~vor (particiju), ~vorovi iz formirane
particije se virtuelno uklawaju iz grafa i postupak ponavqa na preostalom skupu.
Grupisawe eliminisawem komunikacionog ka{wewa, se zasniva na grupisawu
~vorova, uz uslov da se ukupno vrijeme izvr{ewa ne produ`ava. Naime, grupisawem
susjednih ~vorova (nekog ~vora i wegovih prethodnika/nasqednika) pove}ava se
vrijeme ra~unawa, ali se elimini{u vremena komunikacije. Grupisawe se nastavqa
dok se ukupno vrijeme izvo|ewa ne pove}ava.
Algoritam grupisawa koji se zasniva na vi{estrukom ponavqawu izvo|ewa
Mnogi programski jezici obezbje|uju podr{ku za specifikaciju paralelizma
(identifikovanog kroz fazu projektovawa), komunikaciju izme|u zadataka, imple-
mentaciju koncepta modularnog programirawa i mapirawe zadataka po procesnim
elementima.
Maric Slavko
C* Modul je za eksternog korisnika u potpunosti definisan interfejsom - na~inom veze modula sa korisnikom. Modularnost nije samo stvar programskog jezika, nego i hw/sw podr{ke cijelog sistema, jer se modularno{}u trebaju obezbjediti - skrivawe informacija - princip Invarijantnog pona{awa (nezavisnost pona{awa modula od mjesta i konteksta izvo|ewa), - princip generalnosti podataka: prosle|ivawe bilo kog tipa podatka u bilo koji modul - sigurnost argumenta - onemogu}ewe side-efekata - Rekurzivnost - Sistemsko upravqawa resursima (manipulaciju objektima u memoriji mora izvoditi OS, a ne sam program)
182
Paralelna kompozicija
Konkurentna kompozicija
Sekvencijalna kompozicija modula
Vrijeme
Sl. 7.10 Varijante kompozicije programa u programski sistem. Sjen~ewem su ozna~ena dva programska modula koji se izvode na ~etiri procesorska elementa.
Osnovni koncept paralelnog kodirawa opisao je M.R. Conway (1963), sugeri{u}i
par instrukcija (ma{inskog jezika) FORK, JOIN za kreirawe konkurentnih procesa.
S obzirom da for petqa ~esto sadr`i nezavisne iteracije, za specifikaciju
kreirawa nezavisnih procesa za svaku interaciju koristi se varijanta parallel for
instrukcija. Blok strukturiranu konstrukciju predlo`io je Dijkstra ~ija je forma:
Primjeri: 1. “A shortest tree algorithm for optimal assignments across space and time in a distributed processor system” IEEE Trans, Softw. Eng., vol. SE-7, no.6, pp. 335-341, Nov 1981. kw: global, static, optimal, mathematical programming, intended for tree structured applications. 2. “ Task allocation in a distributed computer systems”, K. W. Doty, P. L. McEntire, Ieee InfoCom, 1982: kw: global, static, optimal, mathematical programming, \(nonlinear spatial dynamic programming\). 3. Ma \(vidi referencu: branch&bound \(mathematical programming\)
8.2 Kompleksnost raspore|ivawa 196
stati~ko raspore|ivawe. Pored ove, hijerarhijske klasifikacije metoda raspore|ivawa,
postoje i druge specifi~ne karakteristike koje pojedine metode iz navedene hijerarhije
mogu imati. Adaptivni algoritmi koriste informacije o stawu sistema za dono{ewe
odluka, dok ne-adaptivni odlu~ivawe vr{e na bazi fiksnog modela ili na bazi fiksne
distrubicije vjerovatno}a pojedinih varijanti odlu~ivawa. Dinami~ko raspore|ivawe
mo`e u fazi izvo|ewa alocirati zadatak procesoru sa ili bez mogu}nosti prealocirawa.
Metode za balansirawe optere}ewa karakteri{e dinami~ka preraspodjela optere}ewa
izme|u procesora sa ciqem da se ostvari boqe iskori{tewe resursa i vrijeme odziva.
Raspore|ivawe sa preuzimawem polazi od pretpostavke da zadatak mo`e biti prekinut u
toku izvo|ewa, uz dodjelu procesora drugom zadatku, i nastavqawe i kompletirawe
prekinutog zadatka u nekom kasnijem trenutku. Pri raspore|ivawu bez preuzimawa, bilo
koji zadatak ~ije je izvr{ewe zapo~eto na nekom procesoru izvr{ava se neprekidno do
kompletirawa izvo|ewa.
Heuristi~ki algoritmi se baziraju na parametrima koji su u korelaciji sa funkcijom
ciqa koja se `eli optimizovati. Ovi parametri se koriste za specifikaciju heuristi~ke
funkcije, na osnovu koje se donosi odluka o raspore|ivawu.
Navedena taksonomija pokazuje raznovrsnost i kompleksnost problematike, iako mnogi
algoritmi sadr`e specifi~nosti koje nisu obuhva}ene navedenom klasifikacijom (raspore-
|ivawe zadataka koje karakteri{u zahtjevi za izvo|ewe u stvarnom vremenu, npr.).
8.2 Kompleksnost raspore|ivawa
Kqu~na karakteristika algoritama za raspore|ivawe zadataka je wihova kompleksnost,
odnosno vrijeme koje je potrebno za nala`ewe rje{ewa. Sa ovog stanovi{ta, neki algoritmi
su efikasni, a neki ne. O~igledno, ova konstatacija je veoma uop{tena, i potrebno je dati
precizniju kvalifikaciju ove karakteristike algoritama.
Algoritam (u op{tem smislu) ~ini kona~na sekvenca preciznih instrukcija kojima se
dolazi do rje{ewa problema. Problem Q predstavqa relaciju na skupu X instanci problema
i skupu S rje{ewa problema.
Vrijeme sra~unavawa rje{ewa algoritmom je obi~no funkcija "veli~ine" problema, koja
se mo`e reprezentovati odre|enom karakteristikom ulazne veli~ine u problem - instance
problema x∈X: npr. broj jedna~ina/nepoznatih za problem rje{avawa sistema linearnih
jedna~ina, broj zadataka kod problema raspore|ivawa na vi{eprocesorski sistem, ili broj
elemenata u nizu za probleme sortirawa. Dakle, ulaz se mo`e na odre|eni na~in
kvantifikovati wegovom veli~inom ili du`inom, od koje zavisi vrijeme trajawa
Raspore|ivawe zadataka na procesore 197
algoritma. Da bi se procijenilo vrijeme trajawa algoritma, od interesa je odre|ivawe
gorwe granice broja koraka koje je potrebno izvesti L(n) u zavisnosti od veli~ine obima
problema n = | x |. Umjesto preciznog izraza za L(n) naj~e{}e se posmatra aproksimacija
granice: ka`e se da je gorwa granica L(n) algoritma reda O(g(n)), ako postoje konstante C i n0
takve da je L(n) C * g(n) za . Problem je rje{iv u polinomskom vremenu, ako postoji
polinom p takav da je gorwa granica algoritma O (p(n)).
≤ 0nn ≥∀
Problemi koji imaju opseg rje{ewa {da, ne} spadaju u grupu problema odlu~ivawa. Ovi
problemi se mogu smatrati funkcijama koje svaku instancu x problema mapiraju na Q(x) ∈
{da,ne}. Za probleme odlu~ivawa koji su rje{ivi u polinomskom vremenu ka`e se da spadaju
u klasu P . Problemi raspore|ivawa se mogu formulisati kao problemi odlu~ivawa, npr. o
tome da li se dati skup zadataka reprezentovan sa G = {T,A}, mo`e rasporediti na skup
procesora {Pk}, tako da je raspon izvo|ewa ≤ K. Rje{ewe sa vrijedno{}u "da" se mo`e
specifikovati sertifikatom; npr "raspored s je mogu}, sa rasponom ≤ K", gdje s specifikuje
konkretan raspored. U op{tem slu~aju, sa N P se ozna~ava klasa problema odlu~ivawa, tako
da svako rje{ewe sa odgovorom "da" za neko x ima sertifikat y, pri ~emu je | y | ograni~eno
polinomski u zavisnosti od | x |, i da postoji algoritam koji verifikuje u polinomskom
vremenu da je y vaqan sertifikat za x. Svaki problem odlu~ivawa koji je rje{iv u
polinomskom vremenu pripada skupu N P problema, odnosno P ⊆ N P (ako za neki problem
odlu~ivawa postoji algoritam koji za svaki x sra~unava u polinomskom vremenu odgovor Q(x)
{da, ne}, onda se (polinomski) algoritam kojim se rje{ava problem mo`e lako
konvertovati u algoritam za verifikaciju (verifikacija se mo`e izvr{iti samim
algoritmom u polinomskom vremenu)). Pitawe da li je P = N P , jo{ je otvoreno, iako
indikacije ukazuju da je P ≠ N P . Ako imamo dva problema odlu~ivawa P i Q, onda ka`emo da
se P mo`e reducirati na Q (P∝ Q) ako postoji funkcija g (sa polinomskom kompleksno{}u)
koja transformi{e instance problema P u instance problema Q tako da, ako je x instanca
problema P za koju je rje{ewe "da", onda g preslikava x u g(x) koji je instanca problema Q za
koju je rje{ewe tako|e "da". Lako se pokazuje da, ako su P i Q problemi odlu~ivawa i P
∈
∝ Q,
onda Q∈P = > P∈ P .
Problem Q je N P - kompletan ako je Q∈N P i ako za ∀ P ∈N P imamo P∝ Q. Klasu N P
– te{kih problema ~ine problemi na koje se mogu reducirati neki (a time i svi) N P -
kompletni problemi. Intuitivno, N P problemi nisu te`i od N P -kompletnih problema,
a N P -te{ki problemi nisu lak{i od N P –kompletnih. S obzirom na navedene definicije,
ako bi rje{ewe bilo kojeg N P -kompletnog problema bilo u P , onda bi svi N P problemi
bili u P , i analogno, ako bi se dokazalo da bilo koji N P -kompletan problem nema rje{ewa
8.3 Algoritmi za stati~ko raspore|ivawe 198
u P , onda bi to va`ilo i za sve N P -kompletne probleme. Dakle, ~iwenica da za N P -
kompletne probleme nisu prona|eni algortmi u polinomskom vremenu ne zna~i i tvrdwu
(ve} samo preovla|uju}e uvjerewe, na osnovu osobina takvih problema) da takva rje{ewa ne
postoje.
Neki problemi su N P -kompletni, ako maksimalna vrijednost pojedinih karakteristika
objekata nije ograni~ena. Ako se ograni~i maksimalna vrijednost relevantnih karakteri-
stika objekata, problem prelazi u klasu P . Odgovaraju}i algoritmi se nazivaju pseudopoli-
nomski, jer imaju polinomski ograni~eno vrijeme ra~unawa samo ako je vrijednost relevan-
tnih karakteristika objekata ograni~ena.
Primjeri N P -kompletnih problema odu~ivawa su problemi particionisawa skupa od n
cjelobrojnih elemenata u dva podskupa sa osobinom da je suma elemenata u oba podskupa
jednaka; problem utvr|ivawa da li u neorijentisanom grafu G = (T, A) (T-skup ~vorova, A-
skup lukova izme|u ~vorova) postoji podgraf C sa k ili mawe ~vorova, tako da za svaki luk
(u,v) A, barem jedan ~vor na luku (u,v) pripada podgrafu C i sl. Zna~aj ovih poznatih
problema je u tome {to se polinomskom transformacijom novog problema u neki od
navedenih, mo`e identifikovati pripadnost problema klasi N P -kompletnih problema.
∈
Problem optimalnog raspore|ivawa zadataka na skup procesora (sa minimalnim vreme-
nom izvr{ewa kao funkcijom ciqa) je poznat (u op{tem slu~aju) kao N P - kompletan
problem. Npr. raspore|ivawe skupa zadataka sa proizvoqnim vremenima izvr{ewa na dva
procesora, mo`e se jednostavno reducirati na navedeni problem particionisawa. Ovo
implicira da je problem raspore|ivawa ra~unski kompleksan, {to je i osnovni razlog za
{iroku primjenu algoritama koji daju podoptimalna, ali dovoqno kvalitetna rje{ewa u
polinomskom vremenu.
8.3 Algoritmi za stati~ko raspore|ivawe
Kao {to je prethodno pomenuto, stati~ko raspore|ivawe zadataka po procesorskim
elementima vr{i se prije po~etka izvo|ewa. Pretpostavke od kojih polazi najve}i broj
algoritama jesu: graf zadataka je orijentisan, acikli~an i stati~an; zadatak pridijeqen
nekom procesoru ne mo`e kasnije biti prealociran; svi procesori su me|usobno (direktno
ili indirektno) povezani i mogu izmjewivati podatke; zadaci imaju procesne i komunikaci-
one karakteristike koje se ne mijewaju i koje su poznate prije izvo|ewa (u fazi prevo|ewa);
zadatak koji generi{e podatke, prosqe|uje ih zadacima koji ih koriste nakon {to je wegovo
izvo|ewe zavr{eno; komunikacija podataka od jednog zadatka ka razli~itim zadacima-kori-
Slavko Maric
veli~ina
Slavko Maric
podsjetiti se
Raspore|ivawe zadataka na procesore 199
snicima se odvija paralelno. Pretpostavke koje variraju u razli~itim algoritmima su:
homogenost/heterogenost procesora; izvo|ewe zadataka bez preuzimawa/sa preuzimawem;
specifi~nosti komunikacionog podsistema i sl.
Tipi~na funkcija ciqa za koju se `eli na}i minimum je ukupno vrijeme izvo|ewa skupa
zadataka. Da bi se ovaj ciq ostvario potrebno je, s jedne strane, minimizovati komunikaci-
ona ka{wewa, a s druge strane, maksimalno paralelizovati procesirawe zadataka. Po{to se
minimizacija komunikacionih ka{wewa ostvaruje grupisawem zadataka za izvr{ewe na
istom procesoru, {to zna~i sekvencijalizacijom izvr{ewa, a s druge strane, paralelizacija
procesirawa podrazumijeva izvo|ewe zadataka na razli~itim procesorima, jasno je da
optimalno rje{ewe sadr`i kompromis dva navedena suprotna principa. Budu}i da je
problem nala`ewa optimalnog rje{ewa u op{tem slu~aju N P - kompletan, naj~e{}e se
koriste algoritmi koji daju podoptimalna rje{ewa u polinimskom vremenu. Kao {to je
prethodno navedeno, ovi algoritmi mogu biti aproksimativni i heuristi~ki. Naj~e{}e
kori{teni aproksimativni algoritmi se baziraju na metodi simulacije kaqewa, metodama
matemati~kog programirawa i ograni~enog pretra`ivawa prostora rje{ewa. Heuristi~ki
algoritmi se naj~e{}e baziraju na tehnikama raspore|ivawa po listama prioriteta (list
scheduling), te na tehnikama objediwavawa u grupe (clustering).
U daqem tekstu su ukratko opisani neki algoritmi za stati~ko raspore|ivawe.
3.3.1 Algoritmi za optimalno raspore|ivawe
Razli~iti algoritmi za optimalno raspore|ivawa podrazumijevaju odre|ene specifi~nosti
strukture i karakteristika grafova koji reprezentuju sistem zadataka.
Ako se sistem sastoji od m nezavisnih zadataka, ~ija su vremena izvo|ewa 1τ , 2τ , ... , mτ i n
procesora onda je optimalno vrijeme raspore|ivawa sa preuzimawem dato sa (Muntz i Coffman):
{ }
= ∑=≤≤
m
iii
mio nT
11
1,maxmax ττ
Deterministi~ki optimalni algoritmi raspore|ivawa sa preuzimawem, u homogenim vi{e-
procesorskim sistemima, koji produkuju rje{ewe u vremenu ograni~enom polinomskom fun-
kcijom zavisnosti od broja zadataka (bez ra~unawa komunikacionih ka{wewa) su svedeni na
slijede}e specijalne slu~ajeve:
1) Graf G se sastoji od ~vorova (zadataka) koji imaju me|usobno proporcionalna vremena
izvo|ewa, a broj procesora je ograni~en na 2.
8.3 Algoritmi za stati~ko raspore|ivawe 200
2) Svaki ~vor u grafu G ima najvi{e jednog nasqednika, odnosno, graf G ima formu
stabla (rooted tree). Vremena izvo|ewa ~vorova su me|usobno proporcionalna, a broj
procesora je ≥ 2.
Za nepreuzimaju}e raspore|ivawe, uslov dobijawa optimalnog algoritma za slu~ajeve 1) i 2)
je da zadaci imaju ista vremena izvr{ewa. Algoritmi koji daju optimalna rje{ewa za
navedene slu~ajeve predstavqaju razli~ite varijante i ekstenzije Hu-ovog bazi~nog algorit-
ma. U osnovi, ovi algoritmi formiraju sortiranu listu zadataka po pridijeqenim priori-
tetima, a zatim (dok se lista ne isprazni) dodjequju zadatak najvi{eg prioriteta iz liste,
spreman za izvo|ewe, prvom slobodnom procesoru na izvr{avawe.
Iako navedeni algoritmi nisu direktno primjenqivi u realnim sistemima, dobijeni
analiti~ki rezultati daju odre|ene smjernice o tome kako eksploatisati paralelizam u
vi{eprocesorskim sistemima. Tako|e, oni mogu pomo}i u procjewivawu granica ubrzawa
koje se posti`e paralelnim izvo|ewem, najlo{ijih slu~ajeva itd. Npr. odnos vremena
izvr{ewa (ϖ ) m zadataka (sa ograni~ewima pretho|ewa) na n procesora, raspore|enih bilo
kojim algoritmom na bazi prioritetne liste (list scheduling) koji ne uzima u obzir
komunikaciona ka{wewa, u odnosu na vrijeme optimalnog rasporeda ( 0ϖ ), dat je sa ϖ / 0ϖ
= n12 − .
Optimalni deterministi~ki algoritmi u op{tem slu~aju daju (optimalno) rje{ewe u
vremenu koje se ne mo`e ograni~iti polinomskom funkcijom zavisnosti od broja zadataka.
Iako su za prakti~nu primjenu od interesa samo algoritmi koji daju rje{ewa u vremenu
ograni~enom polinomskom funkcijom, navedeni algoritmi imaju veliki zna~aj u analizi i
procjewivawu heuristi~kih algoritama, uo~avawu i korigovawu wihovih "slabih ta~aka",
analizi najlo{ijih slu~ajeva i sl.
Algoritam koji je predlo`io Stone se bazira na primjeni Ford/Fulkersonovog (max tok/min
presjek) algoritma, kojim se maksimalni protok (robe) u mre`i dobija nala`ewem
minimalnog presjeka grafi~kog modela mre`nog toka. Mre`a kojom se mogu realizovati
razli~iti tokovi se modelira grafom, gdje postoje izvori, odredi{ta i me|u~vorovi
povezani lukovima. Lukovima se pridjequju te`ine, koje reprezentuju maksimalni protok
izme|u ~vorova.
Slavko Maric
Ullman, J.D., “Polynomial Complete Scheduling Problems”, Proc. 4th Symp. on Operating Systems Principles \(1973\), 96-101.
Raspore|ivawe zadataka na procesore 201
Specifi~ni tok se reprezentuje orijentisanim grafom, gdje te`ine na pojedinim granama
predstavqaju iznos toka (robe npr.) izme|u ~vorova. Suma ulaznih i izlaznih tokova za
unutra{we ~vorove mora biti ista, a suma (izlaznih) tokova iz izvora mora biti jednaka
sumi (ulaznih) tokova odredi{ta. Maksimalni tok u mre`i se dobije sumom te`ina na
lukovima koji pripadaju minimalnom presjeku. Presjek lukova mora biti takav da u
potpunosti dijeli izvore od odredi{ta. Ovaj model optimizacije, zasnovan na grafovima,
iskori{ten je za odre|ivawe pridjeqivawa zadataka heterogenim procesorima, sa ciqem
minimizacije ukupne cijene izvo|ewa i komunikacije. Struktura zadataka predstavqa se
grafom, gdje ~vorovi reprezentuju same zadatke, a te`ine na lukovima cijenu komunikacije
izme|u zadataka ako se oni izvode na razli~itim procesorima. Vremena izvo|ewa zadataka
na svakom procesoru se daju posebnom tabelom Sl. 8.4.
D
C
B
A
P 1 P 0
4 8
5 10
9 2
12 6
D C
B
A 2
4
3 5
Sl. 8.4. Specifikacija izvo|ewa sistema zadataka u heterogenom sistemu.
Za slu~aj izvo|ewa zadataka na dva procesora, dodaju se dva ~vora So i S1 (koji reprezentuju, s
jedne strane procesore, a s druge strane izvore/odredi{te u modelu mre`nog toka). Tako|e
se dodaju lukovi koji povezuju ~vorove So i S1 sa ~vorovima zadataka. Te`ina na luku kojem
pripada So i neki zadatak X odgovara vremenu izvo|ewa tog zadatka na P1 i obrnuto, luk koji
povezuje ~vor S1 i zadatak X ima te`inu koja je jednaka vremenu izvo|ewa zadatka X na Po. Za
prethodni primjer, pro{ireni graf izgleda kao na Sl. 8.5.
Konstrukcija grafa je takva da odgovara modelu mre`nog toka, a presjek koji dijeli
izvore i odredi{ta odre|uje alokaciju zadataka po procesorima. Suma te`ina svih lukova
na presjeku, predstavqa sumu ukupne cijene izvo|ewa (procesorske i komunikacione).
Problem alokacije zadataka, za datu funkciju ciqa, svodi se na problem nala`ewa
minimalnog presjeka mre`nog toka, {to se realizuje direktno Ford/Fulkerson-ovim algorit-
mom (koji je reda O(n5)). Odre|ivawe redoslijeda i startnih vremena izvo|ewa zadataka na
procesorima, ostavqa se za fazu izvo|ewa.
8.3 Algoritmi za stati~ko raspore|ivawe 202
53
42
A
B
C D
12
9
6
2
8
4
5
10
S0
S1
Sl. 8.5 Modifikovani graf i presjek koji odre|uje pridjeqivawe modula.
Navedeni metod, principijelno razvijen i za sistem sa n procesora, za vi{e od 3 procesora
postaje ra~unski neupravqiv. Osim toga, za slu~aj da su procesori homogeni, funkcija ciqa
je takva da se svi zadaci mapiraju na jedan procesor.
Interesantno je napomenuti da autor isti~e primjenqivost ove tehnike ne samo za
stati~ko nego i za dinami~ko raspore|ivawe zadataka.
Slavko Maric
Primjer: Stone _______________________________________________________________________________ So=Po Co Comm C1 S1=P1 total _______________________________________________________________________________ 0 0 0 29 ABCD 29 A 6 7 18 BCD 31 B 2 8 21 ACD 31 C 10 6 25 ABD 31 D 8 7 26 ABC 41 AB 8 5 9 CD 22 AC 16 9 13 BD 38 AD 14 14 14 BC 42 BC 12 14 16 AD 42 BD 10 9 17 AC 36 CD 18 5 21 AB 44 ABC 18 7 4 D 29 ABD 16 6 5 C 27 ACD 24 8 9 B 41 BCD 20 7 12 A 39 ABCD 26 0 0 0 26 __________________________________________________________________
Slavko Maric
Vlastito optimalno rasporedjivanje
Raspore|ivawe zadataka na procesore 203
3.3.2 Heuristi~ki algoritmi
Heuristi~ki algoritmi donose odluku o raspore|ivawu zadataka na bazi uticaja odre|enih
parametara na funkciju ciqa koja se optimizuje. Na primjer, kriti~ni put odre|uje raspon
izvo|ewa, i algoritmi koji se baziraju na ovom parametru u svakom koraku nastoje maksi-
malno da smawe kriti~ni put. Ovi algoritmi polaze od odre|enih, a priori pretpostavki o
strukturi zadataka i uslova eksploatacije, i naj~e{}e garantuju podoptimalno rje{ewe u
odre|enim granicama. Vrijeme raspore|ivawa je znatno kra}e u odnosu na druge tehnike,
{to ove metode ~ini najatraktivnijim za primjenu. Dva naj~e{}e kori{tena generalna
pristupa su raspore|ivawe po listama prioriteta (list scheduling) i objediwavawe u grupe
(clustering).
Raspore|ivawe po listama prioriteta
Raspore|ivawe po listama prioriteta je jednostavna i efikasna tehnika, koja u najve}em
broju slu~ajeva, daje dovoqno dobre rasporede. Princip raspore|ivawa je slijede}i:
zadacima se pridjequju prioriteti na osnovu odre|ene heuristi~ke funkcije, a zatim se oni
stavqaju u listu, sortiranu prema navedenom prioritetu. Ukoliko postoje ograni~ewa
pretho|ewa u izvo|ewu zadataka, onda, u posmatranom trenutku, zadaci ~iji su svi pretho-
dnici zavr{ili izvo|ewe se ozna~avaju spremnim za izvo|ewe, a procesori koji ne procesi-
raju zadatke se ozna~avaju raspolo`ivim. Ako u posmatranom trenutku postoje raspolo`ivi
procesori i zadaci spremni za izvo|ewe, onda se prvo vr{i pridjeqivawe spremnog zadatka
sa najvi{im prioritetom procesoru iz skupa raspolo`ivih. Zatim se pridijeqeni zadatak
uklawa iz prioritetne liste, a procesor iz skupa raspolo`ivih. Proces se u odnosnom
trenutku ponavqa za slijede}e zadatke spremne za izvo|ewe, po opadaju}em redoslijedu
prioriteta, i zavr{ava se kada se iscrpe svi spremni zadaci ili raspolo`ivi procesori.
Zatim se inkrementira globalni takt, sve do trenutka kada neki od procesora ne postaje
raspolo`iv, ili novi zadatak spreman za izvo|ewe, nakon ~ega se opisani proces
pridjeqivawa ponavqa. Najjednostavnija ilustracija raspore|ivawa po listama prioriteta
je za slu~aj nezavisnih zadataka. Na primjer, LPT (Largest Processing Time) algoritam vr{i
raspore|ivawe nezavisnih zadataka, pri ~emu je prioritet zadatka ve}i ako mu je vrijeme
izvo|ewa du`e. Opis ovog algoritma je dat u tekstu koji slijedi.
Neka je dat skup {Ti} i = 1, ... , m nezavisnih zadataka koji se izvode na n procesora. Vrije-
me potrebno za izvo|ewe zadataka Ti ozna~imo sa iτ . U svakom posmatranom trenutku postoji
parcijalni raspored zadataka na procesore. Neka je Fj teku}e vrijeme zavr{etka procesi-
rawa procesora Pj (tj. vrijeme kada procesor Pj postaje raspolo`iv).
8.3 Algoritmi za stati~ko raspore|ivawe 204
procedure LPT
1) Postavi k = 1 i Fj = 0 za 1 ≤ j ≤ n. Stavi zadatke Ti, i = 1, ... , m u listu L i sortiraj listu po opadaju}im vremenima izvo|ewa zadataka iτ .
2) Izaberi procesor Pj sa najmawim Fj (tj. procesor sa minimalnim teku}im vremenom zavr{etka).
3) Pridijeli zadatak Tk, sa k-tog ulaza liste prioriteta, procesoru Pj, i a`uriraj Fj na vrijednost Fj = Fj + kτ .
4) Ako je k m inkrementiraj k i idi na 2. U suprotnom, algoritam zavr{ava pri ~emu je raspon izvo|ewa jednak maksimalnoj vrijednosti F
≠j, j = 1, ... ,n.
end LPT
Ukoliko izme|u zadataka postoje relacije pretho|ewa, onda se samo spremni zadaci mogu
rasporediti za izvo|ewe.
Najpoznatiji heuristi~ki algoritam za raspore|ivawe zadataka izme|u kojih postoje
relacije pretho|ewa je HLFET (Highest Level First with Estimated Times), ili metod kriti~nog
puta. Algoritam ne uzima u obzir komunikaciona ka{wewa izme|u zadataka. Svakom zadatku
Ti se pridjequje prioritet, koji je jednak sumi vremena izvo|ewa svih zadataka, na najdu`em
putu od Ti do nekog zavr{nog ~vora. Raspore|ivawe po HLFET {emi realizuje se prema
slijede}oj proceduri:
procedure HLFET
1) Inicijalizacija. Svakom zadatku Ti, i = 1, ... , m , pridijeli prioritet koji je jednak sumi
vremena izvo|ewa svih zadataka na najdu`em putu od Ti do nekog zavr{nog ~vora.
Postavi k = 1 i Fj = 0 za 1 j ≤ ≤ n. Stavi zadatke Ti u listu L i sortiraj L po opadaju}oj
vrijednosti prioriteta zadataka. Iniciraj t = 0. Uz svaki Ti zadatak postavi vrijednost
INDEGREE (Ti) jednaku broju wegovih neposrednih prethodnika. Zadatak Ti je spreman za
izvo|ewe ako je vrijednost parametra INDEGREE (Ti) = 0.
2) Pridijeli zadatak Ti spreman za izvo|ewe (sa najvi{im prioritetetom u posmatranom
trenutku) slobodnom procesoru. Ukloni Ti iz liste L i procesor Pj iz skupa raspolo`i-
vih. Pove}aj k za 1 i Fj = Fj + iτ . Ponovi 2 sve dok ima zadataka spremnih za izvo|ewe i
raspolo`ivih procesora u posmatranom trenutku.
3) Ako je k = m algoritam zavr{ava. Raspon izvo|ewa je Fj
max j. U suprotnom postavi t =
Fj
min j, j pripada skupu procesora koji vr{e procesirawe. Za svaki procesor Pj koji
zadovoqava gorwi uslov i korespondentni zadatak Ti koji zavr{ava izvo|ewe na Pj u
trenutku t,
Raspore|ivawe zadataka na procesore 205
- stavi procesor Pj u listu raspolo`ivih,
- za svaki ~vor Tl koji je nasqednik Ti a`uriraj INDEGREE(Tl) = INDEGREE(Tl) – 1 a
zatim idi na korak 2.
end HLFET
HLFET algoritam nastoji u svakom koraku da smawi najdu`i put, prioritetnim raspore-
|ivawem zadatka koji se nalazi na tom putu. Takva strategija mo`e rezultovati neravno-
mjernim balansom optere}ewa procesora, i time du`im rasponom izvo|ewa. Na primjer, ako
se rasporedi zadatak sa najve}im prioritetom (na kriti~nom putu), onda je potrebno
pridijeliti izvo|ewe drugih zadataka drugim procesnim elementima za vrijeme izvo|ewa
pomenutog zadatka. Ali, ako je pomenuti zadatak "kontrolni" on mo`e da blokira
raspore|ivawe drugih zadataka dok se ne zavr{i wegovo izvo|ewe.
Predlo`ena ekstenzija HLFET algoritma [G.Sih] uzima u obzir komunikaciona ka{wewa.
Zadatku se dodjequje dinami~ki nivo/prioritet, koji se mijewa u toku procesa raspore|i-
C* DSL algoritam ne procjewuje adekvatno cijenu za ne-raspore|ivawe nekog ~vora na neki procesor. Posmatrajmo primjer grafa na slijede}oj slici koji se raspore|uje na 2 procesorskom sistemu (uz preth.navedene pretpostavke) Inicijalno DSL raspore|uje ~vor “0” na procesor P1. Nakon {to P1 zavr{i procesirawe ~vora “0”, oba procesora su slobodna i ~vorovi “1” i “2” su spremni za raspore|ivawe. Algoritam sra~unava dinami~ke prioritete za izvo|ewe ~vorova “1” i “2” na procesorima P1 i P2: “1” “2” P1 -7 -10 P2 -9 -25 i pridjequje procesoru P1 ~vor “1”, a nakon toga istom procesoru i ~vor “2” {to rezultuje rasporedom sa rasponom izvo|ewa 34. Optimalan raspored je izvo|ewe ~vorova “0” i “2” na procesoru P1 i ~vora “1” na P2 sa rasponom 29. Kao {to se vidi, povoqniji procesor i za ~vor “1” i za ~vor “2” je P1. Algoritam daje prednost izvo|ewu ~vora “1” na P1 zbog ve}eg dinami~kog prioriteta, ali na odre|ivawe dinami~kog prioriteta u odnosnom slu~aju uticaj ima samo stati~ki prioritet. Algoritam ne sagledava pri prvoj alokaciji ~vora, da neizvo|ewe ~vora “2” na P1 ko{ta 15 vremenskih jedinica ka{wewa, a ~vora “1” samo 2 jedinice vremena.
Raspore|ivawe zadataka na procesore 207
gdje je TF(Pj, najranije vrijeme kada procesor P∑) j zavr{ava procesirawe pridijeqenih
zadataka za stawe ∑ . Autor tako|e predla`e ekstenzije algoritma za stati~ko raspore|i-
vawe zadataka u heterogenom vi{eprocesorskom okru`ewu, uzimawem u obzir pogodnosti
raspore|ivawa zadatka na svakom procesoru, pogodnosti raspore|ivawa na odre|eni
procesor sa stanovi{ta nasqednika, te raspolo`ivosti vi{e istovrsnih procesora.
Tako|e, razmatra se kori{tewe drugih postupaka, kao {to su, na primjer, te`inski faktori
pojedinih ~lanova, raspore|ivawe unazad i uvo|ewe dodatnih ograni~ewa pretho|ewa koja
poboq{avaju raspored, ali i uvode dodatna re`ijska vremena.
Algoritmi na bazi grupisawa (Clustering algorithms)
U prisustvu komunikacionih ka{wewa, optimalno raspore|ivawe se ne dobija uvijek
maksimalnom eksploatacijom paralelizma. Problem dobijawa optimalnog rasporeda mo`e
se posmatrati i kao problem grupisawa zadataka, pridjeqivawa grupa procesorima i
odre|ivawa redoslijeda izvr{ewa u okviru svake grupe (procesora). Za ilustraciju, posma-
trajmo jednostavan graf zadataka na Sl. 8.7.
Dxz
x
Dxy
zτyτ
xτ
z y
Dxy, Dxz - koli~ina jedini~nih podataka koji xτ , yτ , zτ - Vrijeme potrebno za
se prosqe|uju od x ka y odnosno z. izvr{ewe zadataka x, y, z.
Sl. 8.7 Jednostavan graf zadataka sa komunikacionim ka{wewima.
Optimalan raspored grafa sa Sl. 8.7 na 2 identi~na procesora, ako je funkcija ciqa
minimalni raspon izvo|ewa, zavisi od vrijednosti Dxy, Dxz, yτ , zτ . Zbog jednostavnosti,
pretpostavimo da komunikacija D jedini~nih podataka izme|u 2 procesora zahtijeva D vre-
menskih jedinica. Vrijeme komunikacije izme|u zadataka, ako se zadaci izvedu na istom
procesoru, je zanemarqivo. Onda je
Topt = xτ + min { yτ + zτ , max { yτ , zτ + Dxz }, max { zτ , yτ + Dxy}}
Ako je ~lan yτ + zτ minimalan, onda je optimalan raspored kada se svi zadaci izvode na
jednom procesoru; ako u "min" izrazu minimalnu vrijednost ima ~lan max { yτ , zτ + Dxz}, onda
8.3 Algoritmi za stati~ko raspore|ivawe 208
se optimalan raspored dobija izvo|ewem x i y na P1 i z na P2; u suprotnom, x i z treba
izvr{iti na P1, a y na P2.
Dakle, komunikaciona ka{wewa imaju bitnu ulogu u odre|ivawu grupa zadataka
(klastera) koja se pridjequju procesorima. Algoritmi na bazi grupisawa nastoje formirati
grupe, koje }e minimizovati komunikaciona ka{wewa pri izvo|ewu, nakon wihovog
mapirawa na procesore, uz {to je mogu}e ve}u eksploataciju paralelizma.
Jasno je da su navedeni ciqevi opre~ni: eliminisawe komunikacionih ka{wewa se
ostvaruje grupisawem zadataka na jednom procesoru, dakle serijalizacijom, dok se s druge
strane eksploatacija paralelizma posti`e disperzijom konkurentnih zadataka na razli~ite
procesore (~ime se pove}avaju komunikaciona vremena). Optimalno rje{ewe je dakle
najboqi kompromis dve navedene (opre~ne) strategije i, u op{tem slu~aju, problem wegovog
nala`ewa je N P -kompletan.
Formalno, problem grupisawa, za sistem specifikovan u dijelu 3.1, se mo`e iskazati kao
problem mapirawa DAG-a na g grupa {G1, G2, ..., Gg },
map(Ti) = Gk , i = 1, ... , m, (1 ≤ k ≤ g ≤ n),
tako da se zadovoqi funkcija ciqa. Ako je funkcija ciqa minimalno vrijeme izvo|ewa
(raspon izvo|ewa - "paralelno" vrijeme) na vi{eprocesorskom sistemu sa n procesora, onda
se problem svodi na odre|ivawe grupa Gk, k = 1, ... , g, pridjeqivawe grupa procesorima i
odre|ivawe redoslijeda izvo|ewa svakog zadatka u grupi, tako da se za dati raspored ostvari
uslov
})}({max{min:1
imis
TCT=
,
gdje je CT(Ti) vrijeme kompletirawa zadatka Ti, a s skup svih mogu}ih rasporeda izvo|ewa
skupa T na P (min-max kriterijum).
Tehnike linearnog grupisawa, na osnovu polaznog DAG-a, formiraju grupe (clusters)
zadataka, pri ~emu svaka grupa sadr`i zadatke koji imaju najvi{e jednog prethodnika i
najvi{e jednog nasqednika u grupi (linearne grupe). U (linearnoj) grupi ne mogu biti
me|usobno nezavisni zadaci. Primjeri tehnika linearnog grupisawa su algoritmi koje su
predlo`ili Kim i Browne i Lee .
Prvi algoritam, u svakom koraku, identifikuje orijentisani put sa najve}om te`inom
(sumom procesnih i komunikacionih zahtjeva), i izdvaja zadatke na tom putu u linearnu
grupu. Zatim zadatke iz navedene grupe uklawa iz DAG-a i postupak ponavqa za preostale
~vorove, sve dok se kompletan graf ne razdijeli u linearne grupe. Izme|u linearnih grupa
postoje relacije pretho|ewa i komunikacioni tokovi odre|eni polaznim DAG-om. Navedeni
algoritam, za mapirawe linearnih grupa na vi{eprocesorski sistem, primjewuje tehnike
koje se zasnivaju na teoriji grafova.
Raspore|ivawe zadataka na procesore 209
Drugi pomenuti metod dobijawa linearnih grupa (dijeqewe po vertikalnim slojevima
(vertically layered partitioning)) izvodi se u dve faze: u prvoj fazi, polazni sitnozrnasti DAG se
transformi{e topolo{kim sortirawem u me|usobno disjunktne horizontalne slojeve. Svi
zadaci u sloju k su me|usobno nezavisni, i imaju barem jednog prethodnika u sloju k-1. U
modifikovanom grafu, identifikuje se direktni (vertikalni) put najve}e te`ine, i izdvaja
u linearnu grupu (Sl. 8.9). Izdvojeni ~vorovi se uklawaju iz grafa i postupak se ponavqa sa
preostalim ~vorovima modifikovanog grafa, sve dok se ne iscrpe svi ~vorovi
(modifikovanog) grafa.
0≥
Osnovna ideja navedenih algoritama je da se minimizuje kriti~ni put: zadaci koji su na
kriti~nom putu, zbog relacija pretho|ewa, moraju se izvesti sekvencijalno. Grupisawem
ovih zadataka na jednom procesoru, elimini{u se komunikaciama ka{wewa pri wihovom
izvo|ewu ~ime se nastoji dobiti najpovoqniji raspon izvo|ewa. Me|utim, grupisawem
zadataka na kriti~nom putu DAG-a, ne dobija se uvijek optimalan raspored izvo|ewa, kao
{to to pokazuje slijede}i primjer.
A
C
4
1
1
E
4
10
1 5 B
5
D
1
10
Sl. 8.8 Primjer sistema zadataka.
Kriti~ni put grafa je ABDE, jer je suma te`ina na putu 1+1+5+10+5+1+1=24 (suma te`ina na
putu ACE je 20). Ako raspore|ivawe vr{imo na 2 (identi~na) procesora, onda dodjeqivawe
grupe na kriti~nom putu (ABDE) jednom procesoru i dodjeqivawe preostalog zadatka C na
drugi procesor daje raspon izvo|ewa 20. Grupisawem zadataka BD na P1 i ACE na P2 dobija se
raspon izvo|ewa 14.
Slavko Maric
str 3.21a. Te`inu neke linije pove}avaju komunikaciono ka{wewa na sekvencijalnom dijelu gdje nema granawa i gdje nema osnova za separaciju izvo|ewa na razli~itim procesnim npr, Primjer: Ako bi grupisali P1 = AED, P2 = BC, imali bi raspon izvo|ewa 12. Te`ina komunikacije BC=10 imala bi dominantnu ulogu kod odre|ivawa kriti~nog puta, iako ona su{tinski ne igra ulogu, jer ako B,C idu u jedan klaster, efekat te linije se elimini{e.
8.3 Algoritmi za stati~ko raspore|ivawe 210
1
2
3
4
5
67
8
9 10
a) Polazni DAG
1
2
3
4
5
6
7
8
9
10
b) Modifikovani graf sa horizontalnim slojevima
1
2
3
4
5
6
7
8
9
10
V3 V1 V2
Sl. 8.9 Grupisawe dijeqewem po vertikalnim slojevima.
Raspore|ivawe zadataka na procesore 211
n2
n1
n4
n5n3
n6
n7
1
1
1
1
12.5
2.5
1
3
4
2
0.5n2
n1
n4
n5n3
n6
n7
1
1
1
1
12.5
2.5
1
3
4
2
0.5n2
n1
n4
n5n3
n6
n7
n2
n1
n4
n5n3
n6
n7
6 6
n2
n1
n4
n5
n6
n7
n2
n1
n4
n5n3
n6
n7
n2
n1
n4
n5
n6
n7
2 2
Po~etni DAG a) po~etno grupisawe b) korak 1
c) korak 2 d) korak 3
e) korak 4 f) korak 7
Sl. 8.10 Grupisawe Sarkar-ovim algoritmom
Sarkarov algoritam grupisawa se bazira na sukcesivnom poboq{awu grupisawa polaze}i od
inicijalnog, u kojem je svaki zadatak mapiran u posebnu grupu. U svakom slijede}em koraku,
algoritam nastoji da poboq{a grupisawe objediwavawem najpogodnijih grupa. Algoritam
prvo sortira lukove koji povezuju ~vorove(zadatke) po opadaju}im vrijednostima te`ina, i
onda vr{i grupisawe u a = | A | koraka (a je broj lukova). U svakom koraku se ispituje
slijede}i luk iz liste: ako se anulirawem te`ine luka ne pove}ava paralelno vrijeme
izvr{ewa, onda se zadaci povezani tim lukom (i automatski grupe kojima oni pripadaju)
objediwavaju.
8.3 Algoritmi za stati~ko raspore|ivawe 212
Po{to je odre|ivawe paralelnog vremena tako|e N P - kompletan problem, a zahtijeva se u
svakom od a koraka, Sarkov algoritam koristi slijede}u strategiju za odre|ivawe redosli-
jeda izvr{ewa u okviru grupa: zadatak sa najdu`im putem do zavr{nog ~vora (blevel) ima
najvi{i prioritet, pri ~emu se koristi blevel vrijednosti ~vora iz prethodnog koraka. U
tom slu~aju kompleksnost ra~unawa paralelnog vremena je reda O(a+m) (m je ukupan broj
zadataka/~vorova), tako da je ukupna kompleksnog algoritma reda O(a * (a+m)). Primjer gru-
pisawa kori{tewem navedenog algoritma dat je dijagramima na Sl. 8.9 i Tabeli 8.1.
Tabela 8.1 Koraci grupisawa zadataka Sarkarovim algoritmom za primjer sa Sl.8.10
Korak Ispitivani luk
par.vrijeme ako se luk anulira
Anulirawe luka
paralel. vrijeme
0 13
1 (n4,n6) 13 Da 13 2 (n1,n2) 10 Da 10
3 (n3,n6) 10 Da 10
4 (n6,n7) 10 Da 10
5 (n2,n7) 11 Ne 10
6 (n1,n3) 11 Ne 10 7 (n5,n6) 10 Da 10
Pored navedenog algoritma grupisawa, Sarkar izla`e kompletan koncept za particionisawe
i raspore|ivawe, koji strukturira u faze:
1) Procjene komunikacionih i procesnih zahtjeva,
2) Ekspanzije strukture grafa zadataka,
3) Objediwavawa,
4) Pridjeqivawa procesora.
U prvoj fazi se procjewuje cijena komunikacije i izvr{ewa na osnovu analize programske
strukture. U drugoj fazi vr{i se ra{~lawivawe krupnijih programskih modula na kompo-
nentne dijelove, kako bi se eksponiralo dovoqno potencijalnog paralelizma za eksploata-
ciju na odnosnoj vi{eprocesorskoj arhitekturi. Nakon toga vr{i se objediwavawe kompone-
nata u grupe kako je prethodno opisano, sa ciqem da se elimini{u zna~ajna komunikaciona
vremena i time smawi raspon izvo|ewa (objediwavawe se vr{i samo ako se ne pove}ava
procijeweno paralelno vrijeme izvr{ewa). U fazi 4, vr{i se pridjeqivawe formiranih
grupa procesorima kori{tewem modifikovanog raspore|ivawa po prioritetnoj listi.
Svaka grupa se redom mapira na svaki od procesora, i bira se onaj procesor, za koji je
paralelno vrijeme izvo|ewa najkra}e.
Raspore|ivawe zadataka na procesore 213
8.4 Dinami~ko raspore|ivawe
Kod dinami~kog raspore|ivawa, pridjeqivawe zadataka procesnim elementima (PE) se vr{i
u fazi izvo|ewa. Struktura i karakteristike skupa zadataka, procesnih elemenata i
komunikacionog podsistema mogu biti veoma razli~iti, a mogu se i dinami~ki mijewati.
Kao posqedicu imamo razli~ite algoritme i tehnike raspore|ivawa i funkcije ciqa koje
se `ele optimizovati.
Tehnike za dinami~ko balansirawe optere}ewa su u posqedwe vrijeme predmet intenziv-
nog istra`ivawa. One su prije svega od interesa u distrubuiranim sistemima op{te namjene
(lokalne mre`e radnih stanica npr.), gdje je od interesa efikasno kori{tewe raspolo`ivih
resursa, {to se ostvaruje ravnomjernom (balansiranom) raspodjelom optere}ewa - skupa
(nezavisnih) zadataka po procesnim elementima. Balansom optere}ewa se naj~e{}e posti`e
i minimizacija prosje~nog vremena izvr{ewa zadataka.
Dinami~ko raspore|ivawe zadataka u sistemima u stvarnom vremenu, s druge strane, ima
za ciq minimizaciju (vjerovatno}e) ka{wewa izvr{ewa zadataka u odnosu na krajwe zahti-
jevano vrijeme zavr{etka.
Svi algoritmi u osnovi sadr`e strategiju i mehanizme za:
• procjewivawe i distribuciju informacija,
• odlu~ivawe o isplativosti izvr{ewa transfera zadataka,
• lokaciju transfera,
• selekciju zadataka za transfer.
U fazi procjewivawa i distribucije informacija registruju se podaci od interesa za
slijede}u fazu algoritma: optere}ewe procesora, karakteristike zadataka (zahtjevi za
procesorskim i drugim resursima, krajwe vrijeme izvr{ewa, prioriteti) i sl.
Mehanizmi za odlu~ivawe o transferu, na osnovu registrovanih informacija i definisa-
nih kriterijuma, donose odluku o izvr{ewu transfera zadataka sa jednih PE na druge.
Kriterijumi zavise od funkcije ciqa, te stawa i karakteristika sistema. Dok se kod
tehnika za balansirawe optere}ewa odluka donosi na osnovu procjene dobitka koji se dobija
o~ekivanim balansom u odnosu na re`ijske gubitke, u sistemima u stvarnom vremenu
transfer se poduzima onda kada "negarantovani" zadatak (zadatak ~ije se vrijeme izvr{ewa
ne mo`e garantovati do zahtijevanog trenutka u nekom PE) mo`e postati "garantovan"
wegovim transferom na drugi PE.
U fazi locirawa transfera odre|uje se izvor i odredi{te transfera. Selekcija zadataka
specifikuje koji se zadaci (ili dijelovi zadataka) prebacuju iz izvora u odredi{ta.
Slavko Maric
(overhead)
8.4 Dinami~ko raspore|ivawe 214
Navedeni mehanizmi se mogu implementirati centralizovano ili distribuirano (s tim da
se obi~no procjewivawe i distribucija informacija i selekcija zadataka realizuje lokalno,
odnosno distribuirano). Centralizovani pristup ima na raspolagawu stawe cijelog sistema
na jednom mjestu i na taj na~in mogu}nost dono{ewa ta~nih procjena i odluka. Ipak,
akumulacija informacija na ovaj na~in implicira znatno re`ijsko vrijeme - gubitke, kao i
ka{wewa koja mogu biti tolika da dolazi do zastarijevawa informacija. Alternativno, kod
distrubuiranog pristupa, iako nisu sve informacije na raspolagawu prilikom
procjewivawa stawa i odlu~ivawa, re`ijski gubici su znatno mawi, a informacije (zbog
maweg ka{wewa) ta~nije. S obzirom na to da se aktivnosti potrebne za dinami~ko raspore-
|ivawe raspodjequju po procesnim elementima, ovakav pristup je adekvatan i za slu~aj
pove}awa kompleksnosti sistema (pove}awa broja zadataka i procesnih elemenata).
S obzirom na na~in dono{ewa odluka o lokaciji transfera, algoritmi mogu biti
deterministi~ki, probabilisti~ki i adaptivni. Kod deterministi~kih algoritama trans-
fer zadataka iz preoptere}enog PE se vr{i po fiksnoj {emi: npr. ako je PEi preoptere}en,
transfer vi{ka optere}ewa }e se uvijek izvr{iti u PEj. Probabilisti~ki pristup vr{i
transfer vi{ka optere}ewa iz PEi u PEj sa vjerovatno}om pij. Adaptivni pristup uzima u
obzir teku}e stawe kod dono{ewa odluka. Stawe PE mo`e da karakteri{e broj zadataka koji
~ekaju na izvr{ewe, ukupno zahtijevano vrijeme izvr{ewa teku}ih zadataka, raspolo`ivost
razli~itih resursa i sl.
S obzirom na karakteristike akvizicije i distribucije informacija, Wang kategorizuje
algoritme za dinami~ku raspodjelu optere}ewa u distribuiranim sistemima u slijede}e
grupe:
Hijerarhijski: Raspore|ivawe je distribuirano i organizovano u vi{e hijerarhijskih
nivoa. Svaki raspore|iva~ u hijerarhiji je odgovoran za raspore|iva~e ili servere na
ni`em nivou hijerarhije. Balansirawe optere}ewa se inicira zahtjevima za procesne
resurse ka vi{im/ni`im hijerarhijskim nivoima, dok se ne ostvari ravnomjerna raspodjela.
Sekvencijalni: PE sistema ~ine virtualni prsten. Svaki PE ima svoj raspore|iva~, preko
kojeg zadaci u PE dobijaju dijeqene resurse u sistemu. Po virtuelnom prstenu se prosqe|uje
kontrolni `eton kojim se obezbje|uje serijalizacija aktivnosti raspore|iva~a PE pri
(de)alocirawu dijeqenih resursa. [eme ovog tipa naj~e{}e imaju osnovni naglasak na
rje{avawu konflikata pri konkurentnom pristupu zajedni~kim resursima, a ne na raspodje-
li optere}ewa. Raspore|iva~ koji je teku}i vlasnik kontrolnog `etona, ima mogu}nost
alokacije zajedni~kih resursa.
Pogodbeni: Kod ovih algoritama preoptere}eni PE {aqu "zahtjev za licitaciju" drugim PE
u sistemu za preuzimawe dijela optere}ewa (inverzna varijanta je da neoptere}eni PE {aqu
Slavko Maric
(token)
Slavko Maric
Contract bidding ???
Raspore|ivawe zadataka na procesore 215
"zahtjev za licitaciju" drugim PE za slawe dijela optere}ewa). Po prijemu zahtjeva,
neoptere}eni PE (server) mo`e izvoru (po{iqaocu) poslati ponudu za preuzimawe posla.
Nakon dobijawa ponuda za servisirawe, izvor bira server (obi~no po kriterijumu najmawe
optere}enosti) i prosqe|uje mu vi{ak optere}ewa.
Inicirani nivoom: Optere}enost svakog PE se reprezentuje na osnovu pore|ewa teku}eg
optere}ewa i indeksa minimalnog/maksimalnog optere}ewa. Ako je optere}ewe ispod mini-
malnog, onda se {aqe informacija drugim PE o spremnosti za preuzimawe optere}ewa iz
drugih PE. Ako je PE preoptere}en, onda se poku{ava prebaciti dio zadataka na druge PE.
Ove {eme mogu generisati znatna komunikaciona re`ijska vremena, specijalno u slu~aje-
vima visokog ukupnog nivoa optere}ewa.
Sa odlu~ivawem na bazi stawa: Kod ovih {ema odlu~ivawe o transferu zadataka se vr{i
na bazi procjene stawa sistema koje se periodi~no a`urira. Algoritam nastoji proslije-
diti vi{ak optere}ewa u nekom PE ka najpovoqnijem PE, na bazi teku}e opservacije stawa i
usvojenih kriterijuma. Osnovni problem kod ovih algoritama je izbor parametara koji
odre|uju prostor stawa i wihova akvizicija. Kompleksnost prostora stawa i wegovo ~esto
a`urirawe stvara visok nivo re`ijskih gubitaka i ka{wewa. Rijetko uzorkovawe i a`uri-
rawe stawa sistema ~ini informacije zastarjelim. Potrebno je na}i kompromisno rje{ewe,
koje obezbje|uje da razlika izme|u procijewenog i stvarnog stawa sistema bude {to mawa.
U daqem tekstu, za ilustraciju, opisani su neki algoritmi za dinami~ko balansirawe
optere}ewa.
Difuzioni: Svaki PE kooperi{e sa susjedima u ciqu rje{avawa problema preraspodjele
optere}ewa iz preoptere}enih PE u neoptere}ene PE. Globalno balansirawe se posti`e na
taj na~in {to se zadaci iz preoptere}enih dijelova sistema, po principu difuzije,
prosqe|uju u malo optere}ene dijelove sistema.
Difuzija inicirana po{iqaocem {ema raspore|ivawa je potpuno distribuirana i asinhrona.
Svaki PE vodi evidenciju o optere}ewu u svom domenu, koji ~ini sam PE i wegovi najbli`i
susjedi. A`urirawe stawa optere}ewa PE iz domena vodi se na osnovu poruka, koje izmjewuju
PE iz svakog domena. Poruke se prosqe|uju ili periodi~no ili na osnovu promjene stawa
optere}ewa, kada se optere}ewe promijeni za neki iznos ∆ L, odnosno kada prelazi preko
odre|enog nivoa.
Odlu~ivawe o isplativosti balansirawa se vr{i tako da PEp prvo sra~una prosje~no
optere}ewe u svom domenu:
∑=
++
=K
kkpp ll
KL
1
)(1
1
8.4 Dinami~ko raspore|ivawe 216
gdje je K broj susjednih PE a wihova optere}ewa. kl
Kriterijum za inicirawe balansa je da je
Hpp LLl >− . LH je prag odstupawa optere}ewa iznad kojeg se PE smatra preoptere}enim. U tom slu~aju se
vi{ak optere}ewa raspodjequje na susjedne PE u domenu, proporcionalno pridijeqenoj
te`ini hk ,
,
, 0{ pkkp
pk
LljeakolL
Lljeakokh<−
≥=
Ako je ukupni mawak optere}ewa u susjednim PE iz domena
Hp = ∑=
K
kkh
1
onda se susjednom PEk iz domena pridjequje iznos optere}ewa
min;)( δδδ ≥−= kp
kppk H
hLl
Ilustracija balansirawa optere}ewa ovom tehnikom data je na Sl. 8.11.
30
10
1 5
4
5
6
90
Sl. 8.11 Balansirawe optere}ewa difuzijom iniciranom po{iqaocem.
Preklapawem domena balansirawa posti`e se difuzija vi{ka optere}ewa navedenim meha-
nizmom, iz preoptere}enih dijelova sistema u mawe optere}ene segmente, odnosno balansi-
rawe na globalnom planu.
Za a`urirawe kompletnog stawa optere}ewa, PE treba da izmijene K*N poruka (N je broj
procesnih elemenata). U najgorem slu~aju, slu~aju velikog (ta~kastog) optere}ewa jednog PE,
Slavko Maric
???? Da li je nazna~eno {ta je N ???
Raspore|ivawe zadataka na procesore 217
broj transfera je reda O(K*N). Difuzija inicirana prijemnikom je u osnovi inverzna
prethodno opisanoj tehnici, jer neoptere}eni procesori zahtijevaju optere}ewe od
preoptere}enih susjednih PE iz domena i dobijaju potvrdu za svaki zahtjev (ove poruke su
potrebne za svaki transfer).
Potrebno je napomenuti da su, s obzirom na razli~ite mogu}nosti a`urirawa stawa
optere}ewa, mogu}e varijacije ovih tehnika, kriterijuma isplativosti transfera i sl.
Gradijentni model koristi gradijentnu mapu udaqenosti neoptere}enih PE za transfer
optere}ewa sa preoptere}enih PE. Kod ovih algoritama, neoptere}eni procesori {aqu
poruke o (svom) stawu drugim procesorima u sistemu, a preoptere}eni procesori {aqu dio
svog optere}ewa najbli`em neoptere}enom procesoru. Optere}ewa se usmjeravaju na bazi
gradijenta udaqenosti. Udaqenost se defini{e kao najkra}i put od izvori{nog do
odredi{nog PE. Inicijalno, svaki PE inicijalizuje parametar udaqenosti na vrijednost
dijametra sistema (Wmax). Udaqenost PE postaje 0 ako optere}ewe PE padne ispod doweg praga
(Low-Water-Mark). Svaki PE p, ~iji su susjedni , sra~unava parametar udaqenosti inPE
proximity(PEp) = {proximity( )} + 1 i
mininPE
koji ne mo`e prema{iti vrijednost Wmax. Sistem ne zahtijeva balansirawe optere}ewa, ako
svi PE imaju vrijednost parametra udaqenosti Wmax. Ako se udaqenost PE mijewa, on mora
izvijestiti svoje susjede, {to uzrokuje lanac izmjena parametra udaqenosti u PE sistema.
Isplativnost transfera mo`e da se kontroli{e pragovima LWM i HWM (Low/High-Water-
Mark), tako {to se transfer zadataka od preoptere}enog PEp ka neoptere}enom PEq vr{i ako
je
L p - L q > HWM - LWM
gdje su L p i L q optere}ewa PEp i PEq.
Prosqe|ivawe optere}ewa (zadataka) od PEp ka PEq vr{i se na osnovu minimalnog
gradijenta udaqenosti, {to rezultuje transferom optere}ewa najkra}im putem do
najbli`eg neoptere}enog procesora. Iznos optere}ewa koji se prenosi sa preoptere}enog
na neoptere}eni PE mo`e se razli~ito selektovati u razli~itim implementacionim
varijantama: kao procenat teku}eg optere}ewa, fiksan broj zadataka i sl. Primjer ovog
modela dat je na Sl. 8.12, gdje dva preoptere}ena procesora prenose dio optere}ewa (δ )
najbli`im putem do neoptere}enog PE.
8.4 Dinami~ko raspore|ivawe 218
1 1
1
1 22
2 2
2
2
3
3
3 3 4
0
Sl. 8.12 Gradijentna difuzija.
Hijerarhijski metod balansirawa kreira hijerarhijsku strukturu domena balansirawa.
Odre|enim procesorima se dodjequje nadle`nost za balansirawe domena na razli~itim
hijerarhijskim nivoima (Sl. 8.13).
0
0
0
0
4
4
4
2
2
6
61 3 5
1
2
3
7 0
Sl. 8.13 Hijerarhijski metod balansirawa optere}ewa.
Informacije o optere}ewu pojedinih PE/domena dobijaju se na osnovu poruka o stawu
optere}ewa na ni`im nivoima. U slu~aju da dva domena istog (ni`eg) nivoa imaju razli~ita
optere}ewa, onda se na osnovu vrijednosti te razlike donosi odluka (na prvom vi{em nivou)
o balansirawu optere}ewa izme|u domena. ^vor nadle`an za balansirawe obavje{tava
Raspore|ivawe zadataka na procesore 219
preoptere}eni domen o koli~ini preoptre}ewa koje je potrebno prebaciti na neoptere}eni
domen. Svaki procesor iz preoptere}enog domena ima svoj odgovaraju}i par u koresponden-
tnom neoptere}enom domenu, kome prenosi svoj dio preoptere}ewa. Dakle, globalno balan-
sirawe se posti`e pewawem ka vrhu hijerarhije i balansirawem optere}ewa izme|u susjed-
nih domena na svakom nivou. Ova {ema ukqu~uje sve procesore u proces balansirawa, i
ostvaruje kako lokalni tako i globalni balans na nivou cijelog sistema. Odre|eni domeni
hijerarhijske strukture mogu biti u mawoj ili ve}oj mjeri izolovani iz procesa balansi-