Upload
kristijan-gasparac
View
473
Download
4
Embed Size (px)
DESCRIPTION
Završni rad na stručnom studiju elektrotehnike pri Tehničkom fakultetu Sveučilišta u Rijeci. Tema: Višeprocesorski računalni sustavi.
Citation preview
SVEUČILIŠTE U RIJECI
TEHNIČKI FAKULTET
Stručni studij elektrotehnike
Završni rad
VIŠEPROCESORSKI RAČUNALNI SUSTAVI
Rijeka, srpanj 2011. Kristijan Gašparac
0069030957
SVEUČILIŠTE U RIJECI
TEHNIČKI FAKULTET
Stručni studij elektrotehnike
Završni rad
VIŠEPROCESORSKI RAČUNALNI SUSTAVI
Mentor: prof.vis.šk.dr.sc. Predrag Domijan, dipl.ing.
Rijeka, srpanj 2011. Kristijan Gašparac
0069030957
IZJAVA
U skladu s člankom 9. Pravilnika o završnom radu, završnom ispitu i završetku studija
Tehničkog fakulteta Sveučilišta u Rijeci od 4. srpnja 2011. godine, izjavljujem da sam
samostalno izradio završni rad pod naslovom „Višeprocesorski računalni sustavi“, prema
zadatku broj 602-04/11-14/12.
U Rijeci, 14. srpnja 2011. Kristijan Gašparac
0069030957
…………………….
i
Sadržaj
Predgovor ........................................................................................................................................ 1
Pregled poglavlja ........................................................................................................................ 2
1. UVOD U VIŠEPROCESORSKE SUSTAVE ........................................................................ 3
1.1. Terminologija .................................................................................................................. 5
1.2. Tehnološka dostignuća .................................................................................................... 6
1.2.1. Von Neumannov model računala ............................................................................. 7
1.3. Kratki pregled tehnoloških dostignuća ............................................................................ 8
1.3.1. Osvrt unatrag radi pogleda u budućnost .................................................................. 8
1.4 Novi pristup – višeprocesorska tehnologija .................................................................. 12
2. VIŠEPROCESORSKI RAČUNALNI SUSTAVI ................................................................ 14
2.1. Paralelno računalstvo .................................................................................................... 14
2.1.1. Poteškoće pri stvaranju paralelnih programa ........................................................ 15
2.1.2. Amdahlov zakon ................................................................................................... 16
2.1.3. Gustafson – Barsisov zakon .................................................................................. 20
2.1.4. Implementacije paralelizma .................................................................................. 22
2.2. Organizacija paralelnih računala ................................................................................... 23
2.2.1. Flynn-ova taksonomija .......................................................................................... 23
2.2.2. Dijeljenje memorije u višeprocesorskim sustavima .............................................. 25
2.2.3. Višeprocesorski sustavi sa zajedničkom memorijom - UMA ............................... 26
2.2.4. Višeprocesorski sustavi s raspodijeljenom memorijom - NUMA ........................ 28
2.2.5. Sprega procesora u višeprocesorskim sustavima .................................................. 29
2.2.6. Simetrija u višeprocesorskim sustavima ............................................................... 29
2.3. Komunikacija među paralelnim procesorima ............................................................... 31
2.3.1. Tipovi komunikacije ............................................................................................. 31
ii
2.3.2. Mehanizam komunikacije prosljeđivanjem poruka .............................................. 34
2.4. Međuvezne mreže ......................................................................................................... 34
2.4.1. Klasifikacija međuveznih mreža prema logičkim topologijama ........................... 35
2.4.2. Preusmjeravanje (Routing) .................................................................................... 40
2.4.3. Kontrola toka (Flow control) ................................................................................. 43
2.5. Vrste višeprocesorskih računalnih sustava .................................................................... 44
2.5.1. Višejezgreni procesorski sustavi ........................................................................... 44
2.5.2. Cluster računala ..................................................................................................... 47
2.5.3. Grid računala ......................................................................................................... 48
3. POTEŠKOĆE I IZAZOVI U VIŠEPROCESORSKIM RAČUNALNIM SUSTAVIMA ... 49
3.1. Koherentnost priručne memorije ................................................................................... 49
3.1.1. Direktorijski protokoli (directory protocols) ........................................................ 54
3.1.2. Protokoli prisluškivanja (snoopy protocols) ......................................................... 55
3.2. Snaga ............................................................................................................................. 56
3.3. Softverski stog ............................................................................................................... 58
3.3.1. Operativni sustav ................................................................................................... 58
3.3.2. Aplikacijski softver ............................................................................................... 59
4. IMPLEMENTACIJE VIŠEJEZGRENIH PROCESORA ..................................................... 61
4.1. Osnove IBM Cell arhitekture ........................................................................................ 61
4.1.1. Struktura Cell procesora ........................................................................................ 61
4.1.2. Power Processor Element (PPE) ........................................................................... 62
4.1.3. Synergistic Processing Elements (SPE) ................................................................ 62
4.1.4. Element Interconnect Bus (EIB) ........................................................................... 63
4.2. Intel Nehalem ................................................................................................................ 64
4.2.1. Integrirani memorijski kontroler ........................................................................... 65
4.2.2. Tri razine priručne memorije ................................................................................. 66
4.2.3. Upravljanje snagom ............................................................................................... 67
iii
4.2.4. Turbo Boost ........................................................................................................... 69
4.2.5. Hyper-Threading tehnologija ................................................................................ 69
4.3. AMD Bulldozer arhitektura .......................................................................................... 70
4.3.1. Gradivni „višejezgreni“ moduli ............................................................................ 71
4.4. Intel Sandy Bridge – korak u budućnost ....................................................................... 72
4.4.1. Ring arhitektura ..................................................................................................... 74
4.4.2. Nova generacija Turbo Boost tehnologije ............................................................. 75
4.4.3. Integrirani grafički procesor .................................................................................. 75
4.5. Zaključne misli: budućnost – CPU ili GPU? ................................................................ 77
5. Zaključak ............................................................................................................................... 78
6. Literatura ............................................................................................................................... 79
iv
Popis slika
Slika 1.1. Mikroprocesor Intel 4004 ....................................................................................................................... 9
Slika 1.2. Evolucija brzina mikroprocesora ............................................................................................... 7
Slika 1.3. Ilustracija Moore-ovog zakona za Intelove mikroprocesore .......................................................... 10
Slika 1.4. Disipacija snage na primjeru Intelovih mikroprocesora ............................................................... 11
Slika 2.1. Amdahlov zakon ................................................................................................................................... 19
Slika 2.2. Gustafson-Barsisov zakon ..................................................................................................................... 21
Slika 2.3. Protočna struktura za izvršavanje instrukcija ........................................................................................ 22
Slika 2.4. Flynn-ova taksonomija .......................................................................................................................... 25
Slika 2.5. Arhitektura UMA višeprocesorskih sustava sa zajedničkom memorijom ............................................... 27
Slika 2.6. Arhitektura NUMA višeprocesorskih sustava s raspodijeljenom memorijom ......................................... 28
Slika 2.7. Dijagram simetričnog višejezgrenog procesora ..................................................................................... 30
Slika 2.8. Dijagram asimetričnog višejezgrenog procesora ................................................................................... 30
Slika 2.9. Različiti tipovi komunikacije među paralelnim procesorima .................................................................. 32
Slika 2.10. Sabirnička mrežna topologija .............................................................................................................. 35
Slika 2.11. Zvjezdasta mrežna topologija ............................................................................................................. 36
Slika 2.12. Prstenasta mrežna topologija ............................................................................................................. 37
Slika 2.13. Isprepletena mrežna topologija .......................................................................................................... 38
Slika 2.14. Torusni oblik isprepletene mreže ......................................................................................................... 38
Slika 2.15. Matrična mrežna topologija ................................................................................................................ 39
Slika 2.16. Konfiguracije sjecišta u matričnoj mreži) ............................................................................................. 40
Slika 2.17. Routing algoritmi u NoC mrežama ...................................................................................................... 41
Slika 2.18. Potpuni zastoj (deadlock) .................................................................................................................... 42
Slika 2.19. Vremena prijenosa za kontrolu toka ................................................................................................... 44
Slika 2.20. Principijelni model višejezgrenih sustava ............................................................................................ 45
Slika 2.21. Osnovni model višejezgrenog procesora ............................................................................................. 46
Slika 2.22. Arhitektura računalnog clustera.......................................................................................................... 47
Slika 3.1. Odnos podataka pohranjenih u glavnoj memoriji i njihovih kopija u priručnoj memoriji ....................... 51
Slika 3.2. Komponente sustava pri korištenju direktorijskih protokola ................................................................. 54
Slika 3.3. Model full-map direktorijskog protokola............................................................................................... 55
Slika 3.4. Komponente sustava pri korištenju protokola prisluškivanja ................................................................ 56
Slika 4.1. Struktura Cell procesora ........................................................................................................................ 62
Slika 4.2. Element Interconnect Bus ...................................................................................................................... 63
Slika 4.3. FSB sabirnica (lijevo) i integrirani memorijski kontroler (desno) ............................................................ 66
Slika 4.4. Razine priručne memorije u Nehalem mikroarhitekturi ......................................................................... 67
Slika 4.5. Power Gate tehnika .............................................................................................................................. 68
Slika 4.6. Turbo Boost način optimizacije ............................................................................................................. 69
v
Slika 4.7. Hyper-Threading tehnologija ................................................................................................................ 70
Slika 4.8. Gradivni modul AMD Bulldozer arhitekture .......................................................................................... 71
Slika 4.9. Intelova Tick-Tock strategija ................................................................................................................. 73
Slika 4.10. Sandy Bridge mikroarhitektura s pripadajućom Ring prstenastom sabirnicom ................................... 75
Slika 4.11. Sandy Bridge integrirana grafička jedinica .......................................................................................... 76
Popis tablica
Tablica 2.1. Usporedba višeprocesorkih i višejezgrenih sustava ........................................................................... 45
Tablica 3.1. Terminologija u opisivanju koherentnosti priručne memorije ............................................................ 50
Tablica 3.2. Primjer problema koherentnosti priručne memorije s write-through načinom ažuriranja ................. 52
Tablica 3.3. Primjer problema koherentnosti priručne memorije s write-back načinom ažuriranja ...................... 53
1
Predgovor
U računalnom svijetu jedna je konstanta oduvijek prisutna – neutaživa glad za boljim
performansama, zahtjev koji nikada nije zadovoljen. Svaki novi napredak u poboljšanju
učinkovitosti procesora istovremeno podiže i korisničke zahtjeve na novu razinu.
Postojeće računalne arhitekture nalaze se na prekretnici. Prve temeljite promjene pojavile su
se 80-ih godina prošlog stoljeća kada je Reduced Instruction Set Computer (RISC) filozofija,
dobrim dijelom potaknuta akademskim istraživanjima, prožela računalnu industriju, kao reakcija
na složenost Complex Instruction Set Computer (CISC) računalne arhitekture. Tijekom dugog
niza godina, evolucija računala bila je obilježena prvenstveno razvojem sve bržih i bržih
uniprocesora1, iz generacije u generaciju okarakteriziranih sve većim brojem tranzistora i sve
višom frekvencijom, tj. taktom rada. Danas, tri desetljeća kasnije, to razdoblje doživljava svoj
zalazak.
Čak i tijekom sljedećeg desetljeća, Moore-ov zakon će jamčiti kontinuirano povećanje
gustoće tranzistora, na taj način omogućujući integraciju milijardi tranzistora na istom
silicijskom čipu. Međutim, čip multiprocesori2, poznatiji kao višejezgreni procesori, sada su
jedini način izgradnje mikroprocesora visokih performansi. Era višeprocesorskih sustava je
svanula.
Takve promjene u računalnoj industriji nisu stvar izbora – posljedica su ograničenja
tehnološkog razvoja jednojezgrenih procesora. Naime, tehnologija izrade uniprocesora dostigla
je točku u kojoj fizička ograničenja poput broja tranzistora na silicijskom čipu, kompleksnost
dizajna i disipacija snage onemogućuju napredak sljedećih generacija jednojezgrenih procesora u
vidu povećanja frekvencije rada, odnosno brzine i učinkovitosti.
Na koji način su navedeni problemi riješeni, jesu li riješeni, po čemu su višeprocesorski
sustavi bolji od jednoprocesorskih, te konačno, što su uopće višeprocesorski sustavi, tek su neka
od pitanja kojima će ovaj završni rad ponuditi odgovor.
1 Uniprocessor – engleski naziv za klasične, jednojezgrene procesore, odnosno procesore s jednom CPU jedinicom.
2 Čip multiprocesori (engl. Chip Multiprocessors, CMP) – naziv za mikroprocesore koji na jednom silicijskom čipu
mogu sadržavati veći broj cjelovitih CPU jedinica.
2
Namjera i misao vodilja pri kreiranju ovog završnog rada bila je ponuditi jednostavan, ali
stručan pregled vrlo kompleksnog područja tehnologije višeprocesorskih računalnih sustava.
Također, rad istražuje prve generacije višeprocesorskih sustava, kao i višeprocesorske
arhitekture trenutno prisutne na tržištu, uključujući i mnoge teme povezane uz tehnološka
dostignuća, nove računalne arhitekture, softverske i programerske probleme te buduće
tehnološke izazove.
Pregled poglavlja
Rad je uređen oko četiri glavne teme, odnosno poglavlja: (1) Uvod u višeprocesorske sustave,
poglavlje je koje će ponuditi kratak uvod u temu, razjasniti postojeću terminologiju
višeprocesorske tehnologije te sumirati tehnološka dostignuća i postojeće trendove u razvoju
mikroprocesora. Poglavlja (2) i (3), Višeprocesorski računalni sustavi, te Poteškoće i izazovi u
višeprocesorskim računalnim sustavima, sačinjavaju samu srž tematike kojom se rad bavi. U
navedenim poglavljima bit će objašnjena višeprocesorska tehnologija, aktualna postignuća,
arhitekture i implementacije, prednosti i nedostaci, ali i brojne poteškoće, problemi i izazovi
kojima je višeprocesorska tehnologija izvrgnuta. (4) Implementacije višejezgrenih procesora,
zaključno je poglavlje rada koje će pružati jednostavan pregled suvremenih višejezgrenih
arhitektura, kratak uvid u budućnost same tehnologije te pokušati odgovoriti na pitanje: Što
donosi budućnost računalne tehnologije?
Naravno, svako od ovih poglavlja bavi se temama i područjima koja su kompleksnija i šira no
što bi jedan ovakav rad, pa i više njih, ikada mogao biti. Ipak, nadam se da sam i na ovako
skromnom broju stranica uspio ponuditi stručan uvod i pregled osnova ove suvremene
tehnologije.
3
1. UVOD U VIŠEPROCESORSKE SUSTAVE
Računalna tehnologija uspjela je ostvariti nevjerojatan napredak u otprilike 65 godina od
proizvodnje ENIAC-a, prvog elektroničkog računala opće namjene. Danas, iznos manji od $500
osigurat će nam kupnju osobnog računala koje je snažnije, te posjeduje više glavne memorije i
podatkovnog prostora od računala koje je 1985. godine vrijedilo 1 000 000 američkih dolara.
Štoviše, današnje popularno Apple-ovo3 tablet računalo
4 iPad 2 (vrijedno $499) ima približno
iste performanse kao vektorsko superračunalo5 Cray 2 iz 1985. godine koje je vrijedilo, iz
današnje perspektive, nevjerojatnih 17 milijuna američkih dolara. Ovakav nagli napredak
posljedica je uvijek prisutnih noviteta i inovacija na području tehnologije izrade i dizajniranja
računala.
Iako su nova tehnološka dostignuća bila stalno prisutna u povijesti elektroničkih računala,
značajniji napredak u vidu poboljšanja performansi i izgradnje novih računalnih arhitektura
osigurao je izum mikroprocesora, 70-ih godina prošloga stoljeća. Otkrićem mikroprocesora, a
samim time i izvanrednih mogućnosti integracije složenih elektroničkih sklopova, započelo je
razdoblje jednojezgrenih procesora, takozvanih uniprocesora, čija je svaka nova generacija bila
obilježena porastom radnog takta, odnosno frekvencije, što je postalo i sinonim za sirovu snagu
procesora.
Upravo zbog rapidnog, gotovo nekontroliranog porasta performansi ovakvih procesora,
brojni su inženjeri i znanstvenici još tijekom 1980-ih godina predviđali skori kraj jednojezgrenih
procesorskih arhitektura. Ovakva su predviđanja, naravno, bila neutemeljena i preuranjena.
Naime, tijekom razdoblja 1986-2002, porast performansi jednojezgrenih procesora, temeljen na
mikroprocesoru, imao je najvišu stopu od vremena prvih tranzistorskih računala iz kasnih 1950-
ih i ranih 1960-ih.
Ipak, danas smo svjedoci smjene među generacijama procesorskih arhitektura. Jednojezgreni
procesori, dovedeni do samih granica svojih mogućnosti, polako postaju dio povijesti.
3 Apple Inc. – američka multinacionalna korporacija pod vodstvom Stevea Jobsa, koja se bavi proizvodnjom i
prodajom potrošačke elektronike, računalnog softvera i osobnih računala. Tvrtka je poznata po svojim popularnim
proizvodima kao što su iMac, MacBook, iPhone i iPad. 4 Tablet računalo – mobilno, tj. prijenosno računalo, dimenzijama malo većim od mobilnog telefona. Računalom se
upravlja pomoću ekrana osjetljivog na dodir. 5 Superračunalo (engl. supercomputer) – skupine najsnažnijih računala za izvršavanje najzahtjevnijih računskih
operacija u primjenama poput simulacija kvantne fizike, vremenske prognoze, molekularnog modeliranja i sl.
4
Dosadašnji trendovi u proizvodnji mikroprocesora bili su bazirani na praksi integracije sve većeg
broja tranzistora na silicijskim čipovima sve manjih dimenzija, uz usporedno podizanje radne
frekvencije, što je za posljedicu dovelo do prevelike disipacije snage, odnosno topline.
Konvencionalni načini hlađenja i odvođenja topline, uz pomoć hladnjaka i ventilatora, postali su
nedostatni i neučinkoviti, čak i neprihvatljivi zbog svojih sve većih dimenzija. S druge strane,
modernije i kvalitetnije tehnike hlađenja, poput vodenih rashladnih sustava, još su uvijek
preskupe da bi bile ekonomski prihvatljive širem krugu korisnika.
Jednojezgrena procesorska tehnologija time je dosegla svoj plato, nemoćna da zadovolji sve
veće zahtjeve računalne budućnosti. Moore-ov zakon ipak nije ugrožen, barem još neko vrijeme
– ondje gdje su jednojezgreni procesori stali, jednakom će agilnošću nastaviti višeprocesorski
sustavi. Tehnologija je to koja obilježava prekretnicu i budućnost računalne tehnologije.
Prvo, uvodno poglavlje ovog završnog rada predstavlja jednostavan uvod u samu temu, razjasnit
će nejasnoće u nazivlju, te ponuditi opći pregled dostignuća u tehnologiji i dosadašnjim
trendovima proizvodnje mikroprocesora.
„Sve naše buduće aktivnosti usmjeravamo
razvoju višejezgrenih procesora.
Vjerujemo da oni čine prekretnicu u
računalnoj industriji.“
Predsjednik Intela, Paul Otellini,
opisujući Intelove buduće planove
na Intel Developers Forumu, 2005.
5
1.1. Terminologija
Vrlo je bitno u ovom trenutku pobliže definirati stručnu terminologiju koja se upotrebljava na
području višeprocesorskih računalnih sustava, kako bi se izbjegle moguće nejasnoće, a samim
time i ukratko predstavile solucije koje ova tehnologija nudi. Naime, pojam „Višeprocesorski
računalni sustavi“ odnosi se na vrlo široko i kompleksno područje primjene u mnogočemu
sličnih, a opet različitih tehnoloških rješenja i implementacija.
Višeprocesorski računalni sustavi u osnovi su svi sustavi koji posjeduju najmanje dvije
CPU6, odnosno središnje računalne jedinice, neovisno o samom tehničkom rješenju, tj.
arhitekturi. Takvi sustavi mogu biti multi CPU, višejezgreni (multicore), mnogojezgreni
(manycore), MPSoC sustavi, te serveri i clusteri. U sljedećim redcima bit će predstavljen kratki
opis svakog navedenog sustava.
Multi CPU solucije odnose se na sustave bazirane na najmanje dva fizički odvojena
jednojezgrena procesora koja su locirana na zajedničkoj matičnoj ploči. Takva rješenja korištena
su najčešće na serverskim platformama gdje je potreba za boljim performansama uvijek veća.
Ovakvi sustavi, vrlo skupi i zbog fizičkih čimbenika vrlo složeni, predstavljaju zastarjelu
tehnologiju i način poboljšanja performansi sustava.
Mnogo naprednija, praktičnija i ekonomski prihvatljivija rješenja su višejezgreni i
mnogojezgreni sustavi. Ove sustave karakterizira integracija nekoliko CPU jedinica, odnosno
jezgara, unutar istog kućišta, na jednom silicijskom čipu. U osnovi jednaki, razlikuje ih tek broj
jezgara – dok višejezgreni procesori predstavljaju popularna komercijalna rješenja s dvije, četiri i
više jezgara, termin mnogojezgreni sustavi se odnosi na procesore s desecima i stotinama
jezgara, korištenim u naprednijim rješenjima (superračunala, znanstveno-istraživačke aktivnosti i
sl.).
MPSoC, odnosno Multi Processor System on Chip sustavi, predstavnici su VLSI7 tehnologije
koji se temelje na primjeni embedded8 aplikacija i integraciji cjelovitog sustava na jednom
silicijskom čipu (integracija višejezgrenih CPU i GPU jedinica, zvučnih kontrolera i ostale
logike, memorije, operativnog sustava i sl.). Sve popularniji u različitim primjenama tijekom
6 CPU – centralna procesna jedinica (engl. Central Processing Unit).
7 VLSI (engl. Very Large Scale Integration) – termin predstavlja tehnologiju vrlo visokog stupnja integracije
koja omogućuje integraciju velikog broja tranzistora na silicijskom čipu. Od 2008. godine, broj integriranih
tranzistora na čipu je reda veličine 109.
8 Embedded sustavi – računalni sustavi za izvršavanje dodijeljenih i specifičnih zadaća.
6
proteklog desetljeća, predviđa se da upravo ovi sustavi umnogome čine budućnost računalne
tehnologije.
Clusteri su skupine računala organiziranih tako da sva računala djeluju zajednički te na taj
način formiraju vrlo napredne računalne sustave koji mogu biti alternativa superračunalima.
Činjenica da se radi o sustavu načinjenom od više povezanih računala clustere svrstava u
pripadnike višeprocesorskih sustava.
Kao što je vidljivo iz prethodnih opisa, sva navedena rješenja u osnovi predstavljaju
višeprocesorske sustave. Ipak, bitno je napomenuti kako će se ovaj završni rad ograničiti na opće
područje višeprocesorskih sustava, te na predstavljanje široj publici korisnika najzanimljivijih i
ekonomski najprihvatljivijih rješenja, dok će zastarjele opcije, poput multi CPU sustava, te
kompleksni sustavi poput clustera i servera biti tek kratko opisani.
Također, pojedini će pojmovi, zbog nedostatka prikladnog hrvatskog nazivlja, biti zadržani u
izvornoj, engleskoj verziji.
1.2. Tehnološka dostignuća
Suvremeni računalni sustavi, izgrađeni iz najsofisticiranijih mikroprocesora i naprednih
memorijskih hijerarhija, postižu svoje visoke performanse kroz kombinaciju dramatičnih
tehnoloških dostignuća i napredaka u računalnoj arhitekturi. Tehnološki napredci rezultirali su
eksponencijalnom stopom rasta sirove snage (tj. taktne frekvencije) i količine logičkih sklopova
(broja tranzistora) koja se može integrirati na jednom čipu.
Mikroprocesori postoje već 40 godina: Intel-ov 4004 (slika 1.1) predstavljen je 1971.
Funkcionalnost mikroprocesora 4004, u usporedbi s mainframe9 računalima tog razdoblja
(primjerice IBM System/370), bila je zanemariva. Danas, 40 godina kasnije, radne stanice
pogonjene procesorima kao što su AMD Athlon, IBM PowerPC, Intel Core, i Sun UltraSPARC
mogu parirati preostalim mainframe računalima, pa čak ih i nadmašiti funkcionalnošću i
performansama, i to po značajno nižoj cijeni. Moderni serveri i superračunala svoju snagu
najčešće temelje upravo na kombinacijama takvih „osnovnih“ mikroprocesorskih sustava.
9 Mainframe računala – velika, snažna računala najčešće korištena od strane velikih organizacija, za kritične
primjene, kao što su procesiranja velikih količina podataka, financijskih transakcija, te industrijskih i korisničkih
statistika.
7
Slika 1.1. Mikroprocesor Intel 4004
Ipak, bilo bi pogrešno pretpostaviti da su tri načela: protočnost, paralelizam i princip
lokaliteta, kojima su današnji računalni arhitekti vođeni pri dizajniranju novih računalnih
sustava, bila utvrđena pri samom otkriću mikroprocesora. Otkrića u tehnologiji omogućila su
praktičniju primjenu i implementaciju tih načela te potaknula njihova buduća usavršavanja. Na
tim načelima upravo počivanju i mikroarhitekturalne tehnike predstavljene u ovom radu.
1.2.1. Von Neumannov model računala
Suvremeni mikroprocesori posjeduju najnaprednije tehničke značajke. Ipak, i današnja
računala u osnovi još uvijek prate konvencionalan von Neumannov model računala. Von
Neumannov model računala s pohranjivanjem programa čine četiri bloka:
Centralna procesna jedinica (CPU) koja sadrži aritmetičko-logičku jedinicu (ALU)
zaduženu za obavljanje aritmetičkih i logičkih operacija, registre s osnovnom zadaćom
vrlo brzog pohranjivanja operandi, kontrolnu jedinicu koja interpretira instrukcije i
omogućuje njihovo izvršavanje, te programsko brojilo (PC) koje označava adresu
sljedeće instrukcije koja se treba izvršiti.
Memorija za pohranu instrukcija, podataka te međurezultata i konačnih rezultata.
Memorija se implementira hijerarhijski.
Ulaz (Input) zadužen za prijenos podataka i instrukcija iz „vanjskog svijeta“ prema
memoriji.
Izlaz (Output) koji prenosi konačne rezultate i poruke prema „vanjskom svijetu“.
8
U von Neumannovom modelu, ciklus izvršavanja instrukcija teče prema algoritmu, kako
slijedi:
1. Sljedeća instrukcija (na koju ukazuje programsko brojilo) pribavlja se iz memorije.
2. Kontrolna jedinica dekodira instrukciju.
3. Instrukcija se izvršava. Takva instrukcija može biti ALU-bazirana instrukcija, pohrana
podataka iz memorije u registar i obratno, ili naredba za uvjetno grananje.
4. Stanje programskog brojila (PC) se obnavlja.
5. Postupak se vraća na korak br. 1.
1.3. Kratki pregled tehnoloških dostignuća
Naravno, tijekom više od 60 godina povijesti računala s pohranom programa, konfiguracija
navedenih blokova, kao i sadržaj sekvence za izvršavanje instrukcija, bili su podvrgnuti
temeljitim optimizacijama. Centralna procesna jedinica poboljšana je protočnom (pipelining)
strukturom; ALU jedinica segmentirana je na nekoliko manjih funkcionalnih jedinica; niže
razine memorijske hijerarhije, poput priručne memorije (cache memorija) integrirane su na čipu.
Odnedavno, tehnološka dostignuća omogućuju integraciju nekoliko mikroprocesora s
pripadajućim priručnim memorijama na istom čipu, na taj način tvoreći čip multiprocesore (chip
multiprocessors), tj. CMP-e. Osim navedenih (mikro)arhitekturalnih dostignuća, temeljni
instrukcijski ciklus proširen je do mjere gdje je moguće istovremeno izvršavati više instrukcija u
svakom pojedinačnom koraku.
1.3.1. Osvrt unatrag radi pogleda u budućnost
Dva su područja u kojima su tehnološka dostignuća ostvarila najveći utjecaj na performanse
mikroprocesorskih sustava: povećanje radne frekvencije i povećanje broja tranzistora, odnosno
logike u sustavu. Najjednostavnije rečeno, viša frekvencija znači brže izvršavanje zadaća, a više
logike omogućuje implementaciju naprednijih funkcija u sustavu.
9
Slika 1.2 prikazuje evoluciju taktnih frekvencija Intelovih mikroprocesora od začetaka
mikroprocesorske tehnologije (Intel 4004), pa sve do višejezgrenih mikroprocesorskih rješenja
2003. godine i kasnije.
Slika 1.2. Evolucija brzina mikroprocesora (izvor: [2])
Može se uočiti da je u razdoblju od 1971. do 2003. godine sirova snaga procesora rasla
eksponencijalnom mjerom. Frekvencija mikroprocesora 4004, koji se u skali prikazanog
dijagrama gotovo ne vidi, bila je 1,08 MHz, što je više od 3000 puta manje od popularnog
Pentiuma 4 frekvencije 3,4 GHz. Takvo povećanje otprilike odgovara trendu udvostručavanja
frekvencije svakih 30 mjeseci. Međutim, iako je Pentium 4 bio najbrži procesor svoje generacije,
to ne vrijedi i za 4004. Tada su, naime, postojala mnoga mainframe računala znatno brža od
4004. Poneka superračunala iz razdoblja kasnih 60-ih godina prošloga stoljeća, poput IBM-ovog
System 360/91 i Control Data 6600/7600, imala su frekvencije od preko 100 MHz. Pa ipak, iako
su bila dva reda magnitude jača od 4004, bila su također i 6 redova magnitude skuplja, što ih
čini apsolutno neusporedivima s korisnicima prihvatljivim komercijalnim rješenjima.
Nakon 2003. godine radne frekvencije su se ustalile na području oko 3GHz, a uskoro će biti
navedeni i razlozi zbog kojih je tehnologija postigla takav plato.
10
Broj tranzistora koji je bilo moguće postaviti na čip rastao je usporedno s rastom frekvencija,
ali bez ikakvih promjena u reduciranju dimenzija samih tranzistora. Godine 1965., Gordon
Moore, jedan od osnivača Intela, predvidio je da će „broj tranzistora na komadiću silicija biti
udvostručen svake dvije godine“. Iako ponekad s manjim vremenskim odstupanjima, ova
pretpostavka ostala je u suštini istinita, i danas je opće poznata kao Moore-ov zakon. Slika 1.3
vrlo zorno prikazuje Moore-ov zakon, tj. eksponencijalni napredak u broju tranzistora na
primjeru Intelovih mikroprocesora (uočiti logaritamsku skalu). Od najjednostavnijeg Intelovog
4004 mikroprocesora sa samo 2300 tranzistora do dvojezgrenog Itanium procesora iz 2006. koji
integrira 1,7 milijardu tranzistora, postignut je faktor rasta 2000. Vjeruje se Moore-ov zakon
može biti održati takav trend rasta do 2025. godine.
Slika 1.3. Ilustracija Moore-ovog zakona za Intelove mikroprocesore (izvor: [2])
Osim što je omogućio implementaciju više logike (samim time i naprednijih funkcija) te više
podatkovnog prostora (ublaživši tako neuravnoteženost između brzine procesora i latencije
memorije), Moore-ov zakon je također reducirao troškove i osigurao veću pouzdanost.
Ipak, takav eksponencijalni rast ne dolazi bez poteškoća i izazova. Jedna od tih poteškoća jest
veličina samog proizvodnog procesa. Naime, proces proizvodnje poluvodičkih komponenata,
koji je uznapredovao od 10 µm procesa iz 1971. godine, do današnjeg 28 nm (odnosno 32 nm u
slučaju aktualnih procesora) proizvodnog procesa, ne može se reducirati beskonačno. Samim
time, i broj tranzistora koji se mogu postaviti na čip je fizički ograničen veličinom proizvodnog
procesa.
11
Drugi, i trenutno najvažniji izazov, jest količina disipirane snage, odnosno topline. Slika 1.4
vrlo slikovito prikazuje postojeći problem.
Treće, na frekvencijama reda veličine nekoliko GHz, udaljenosti na čipu (tj. zbroj duljina
vodova, ili kanala), između izvora informacije i korisnika, postaju ograničavajući faktor i utječu
na mikroarhitekturalne odluke.
Slika 1.4. Disipacija snage na primjeru Intelovih mikroprocesora (izvor: [2])
Sada je poznat razlog postizanja frekvencijskog platoa 2003. godine. Energetski zahtjevi,
prikazani slikom 1.4, i rast broja tranzistora predviđen Moore-ovim zakonom ograničavaju
brzine koje se mogu postići zbog toga što dinamička disipacija snage raste eksponencijalno i
izravno je ovisna o visini frekvencije. S druge strane, statička disipacija (curenje) ovisi o broju
tranzistora na čipu. Nažalost, dimenzije tranzistora sada su toliko reducirane da je njihovo
djelovanje podložno kvantno-mehaničkim pojavama. Prema pravilima kvantne mehanike, sitne
čestice poput elektrona, na kratkim udaljenostima mogu spontano i nasumično tunelirati. Baza i
emiter tranzistora sada su dovoljno blizu da bi izvjesna količina elektrona mogla tunelirati
između njih, samim time uzrokujući malu struju curenja između baze i emitera, odnosno mali
kratki spoj.
Smanjenjem dimenzija tranzistora, struja curenja se povećava. Ukoliko su radni naponi
preniski, razlika između logičke jedinice i logičke nule postaje prebliska samoj visini i rad
procesora je onemogućen. Naposljetku, ovaj složeni skup problema neće onemogućiti daljnji rast
broja tranzistora na određenoj površini, no tada radna frekvencija mora ostati ista, odnosno mora
se sniziti da bi se disipacija snage držala pod kontrolom, a procesor ostao „hladan“.
12
Stoga su Intel i ostali proizvođači zaustavili kontinuirani porast frekvencija na razini iz 2003.
godine. Iznimka je IBM-ov Power6 procesor predstavljen 2007. godine, s frekvencijom od 4.7
GHz, no čak i uz takvo dostignuće, može se reći da je eksponencijalan rast brzine zaustavljen.
Međutim, to ne znači da je time ujedno zaustavljen i rast performansi mikroprocesora.
Ustrajnost Moore-ovog na povećanju količine logike na čipovima dovela je do pojave posve
novog trenda u razvoju mikroprocesora – višeprocesorskih tehnologija i čip multiprocesora, tj.
CMP-a.
1.4 Novi pristup – višeprocesorska tehnologija
Navedene poteškoće i ograničenja doveli su do situacije u kojoj je sve veće i brže uniprocesore
jednostavno bilo nemoguće izgraditi. Računalni inženjeri i dizajneri, stavljeni pred nove izazove,
sada se okreću novoj paradigmi u dizajnu mikroprocesora: višeprocesorskim sustavima.
Dodavanje još jedne procesne jedinice na isti čip bi, u teoriji, trebalo rezultirati udvostručenjem
performansi i redukcijom disipirane topline; u praksi, realna brzina svake jezgre je uvijek manja
od najbržeg jednojezgrenog procesora, što će biti razmotreno u sljedećim poglavljima.
Istodobno, da bi višeprocesorski sustavi bili učinkoviti, moraju u svojoj arhitekturi
uključivati tehnike i metode paralelizma kako bi za rad kojeg je potrebno izvršiti mogli koristiti
sve raspoložive resurse, tj. procesorske jedinice. Budući da se višeprocesorski sustavi u osnovi
sastoje od više pojedinačnih procesora, ili jezgara, programeri te procesore „vide“ kao zasebne
entitete, te je stoga potrebno konvencionalan von Neumannov računalni model zamijeniti novim
modelom paralelnog programiranja. Pomoću ovog modela, programeri moraju svoje aplikacije
podijeliti na polu-nezavisne dijelove, ili dretve (engl. threads, niti), koji se mogu istovremeno
izvršavati s raspoloživim procesorima u sustavu, ili njihovi programi neće biti u mogućnosti
iskoristiti procesorsku snagu koju nudi višeprocesorska arhitektura. Naime, ukoliko aplikacija
nije multi-threaded tipa, tj. višedretvena, te nije programirana metodama paralelnog
programiranja, višeprocesorski sustavi ne mogu ponuditi znatno poboljšanje; dapače, moguća je
čak i pojava pada performansi. Jednom kada se izvrši proces threadinga, programi mogu koristiti
prednosti thread-level paralelizma (TLP) usporednim pokretanjem i izvršavanjem odvojenih niti
instrukcija.
Sljedeći faktor koji utječe na performanse cjelokupnog sustava je operativni sustav.
Memorijska arhitektura višeprocesorskih sustava je složenija, a samim time i upravljanje
13
memorijom. Drugim riječima, operativni sustav mora biti posebno dizajniran za višeprocesorske
sustave, kako bi iste mogao prepoznati, te naposljetku iskoristiti njihov potencijal.
Upravo navedena područja, kao i mnoga druga, usko vezana uz njih, glavna su tema narednih
poglavlja.
14
2. VIŠEPROCESORSKI RAČUNALNI SUSTAVI
Poglavlje započinje definiranjem paralelnog računalstva, paralelnih računalnih sustava te njihove
organizacije uz pomoć Flynn-ove taksonomije10
, kako bi se čim bolje mogla shvatiti
kompleksnost višeprocesorskih arhitektura i razlozi koji su doveli do njihova razvoja.
Budući da su predmet izučavanja prvenstveno višeprocesorski sustavi, posebna pažnja bit će
posvećena kategoriji multiple-instruction multiple-data (MIMD) sustava koji su sposobni
iskoristiti paralelizam na razini dretava (engl. thread-level paralelism) i čine temelj suvremenih
višeprocesorskih sustava. Također, s hardverskog gledišta će biti proučeni sustavi s
ravnomjernim adresiranjem memorije (uniform memory access – UMA) i simetrični
višeprocesorski sustavi (symmetric multiprocessors – SMP), kao i sustavi s neravnomjernim
adresiranjem memorije (nonuniform memory access – NUMA). Vrlo bitno je razmotriti i
područje interkonekcija unutar višeprocesorskih sustava, tj. načine međusobnog povezivanja
procesora, memorija i ostatka sustava.
2.1. Paralelno računalstvo
Paralelno računalstvo je oblik računanja koji se zasniva na istovremenom izvršavanju velikog
broja kalkulacija. Osnovno načelo jest podjela većih problema i zadataka na čitav niz manjih koji
se zatim rješavaju konkuretno (tj. usporedno, „u paraleli“). Paralelno računalstvo, odnosno
paralelizam, primjenjuje se već dulje vrijeme, no tek su nedavno računalni inženjeri počeli s
njegovim pomnijim istraživanjem. Zbog fizičkih ograničenja na koja je naišao razvoj
jednoprocesorskih sustava, računalni su inženjeri počeli razmatrati nove načine povećavanja
propusnosti i učinkovitosti računalnih sustava, a iskorištavanje različitih razina paralelizma
unutar koda pokazalo se dominantnom paradigmom, posebice korisnom u višeprocesorskim
sustavima.
Podjela paralelnih računala najčešće se vrši prema fizičkoj, sklopovskoj konfiguraciji
dotičnog sustava, odnosno prema razini na kojoj sklopovlje podržava paralelizam. Razlikujemo
tako višeprocesorske i višejezgrene računalne sustave koji raspolažu s nekoliko procesnih
10 Klasifikacija računalnih arhitektura. Kreirao ju je Michael j. Flynn, 1966. godine.
15
elemenata unutar istog računala, dok clusteri, MPP-i11
i gridovi12
koriste nekoliko cjelovitih
računala za rad na istom zadatku.
Tradicionalno, računalni programi su osmišljeni za izvršavanje u serijskom, sekvencijalnom
obliku. To znači da se za rješavanje određenog problema koriste algoritmi koji se sastoje od
serijskog toka instrukcija koje, jednu po jednu, obrađuje centralna procesna jedinica – tek nakon
što se jedna instrukcija izvrši, može se početi s izvršavanjem sljedeće.
S druge strane, pri paralelnom računanju istovremeno se koristi veći broj procesnih jedinica
koje zajednički djeluju na rješavanju određenog zadatka. Takav se način rada osigurava
raspodjelom problema na niz manjih nezavisnih segmenata kako bi svaki dostupni procesni
element mogao obrađivati svoj dio algoritma usporedno s ostalim procesnim elementima.
2.1.1. Poteškoće pri stvaranju paralelnih programa
Poteškoće pri iskorištavanju paralelizma ne predstavlja snaga računala, već potreba da se
aplikacije i programi prilagode paralelnom načinu rada, kako bi mogli biti brže izvršavani na
višeprocesorskim sustavima. Pisanje softvera za višeprocesorske sustave vrlo je kompleksno, a
problem se povećava s povećanjem broja procesora u sustavu.
Koji je razlog? Zašto je razvoj programa za paralelno procesiranje toliko složeniji od pisanja
tradicionalnih, sekvencijalnih programa?
Prvo, izvršavanje paralelnih programa na višeprocesorskim sustavima mora osigurati bolje
performanse i učinkovitost; u suprotnom, čemu koristiti takve programe, ako će nam
sekvencijalni program na jednoprocesorskom sustavu ponuditi jednake performanse, uz
višestruko jednostavnije programiranje. Budući da bi paralelno programiranje prvenstveno
trebalo biti učinkovito programiranje, to ga čini mnogo složenijim – paralelni program ne mora
samo biti točan, biti u mogućnosti riješiti složeni problem, i osigurati korisno sučelje prema
korisniku i ostalim programima, već mora biti i brz.
Drugi razlog, da bi se osigurala brzina koju podrazumijeva uporaba paralelnih i
višeprocesorskih sustava, programer mora aplikaciju podijeliti tako da svaki procesor
istovremeno izvršava približno jednaku količinu posla, pritom pazeći da trošak raspoređivanja
11 MPP (eng. Massively Parallel Processor) – računalni sustav koji se sastoji od velikog broja zasebnih računala,
koja su povezana sa svrhom paralelnog izvršavanja zahtjevnih zadaća. 12
Grid računala – povezana skupina heterogenih, geografski udaljenih računala.
16
(engl. schedule overhead) i koordinacija ne reduciraju potencijalne dobrobiti paralelizma u
prevelikoj mjeri.
Navedene poteškoće mogu se prikazati sljedećom vrlo praktičnom analogijom.
Pretpostavimo da je zadatak napisati novinski članak, reportažu. Osam novinara koji rade na istoj
reportaži potencijalno bi mogli reportažu napisati osam puta brže. Da bi se takvo ubrzanje
ostvarilo, zadatak bi trebalo podijeliti tako da svaki novinar ima svoj dio zadatka i da svi
novinari rade istovremeno. Stoga, potrebno je rasporediti (engl. schedule) pod-zadatke. Ukoliko
bi nešto pošlo po krivu, i samo jedan novinar bi kasnio s obavljanjem svog zadatka, sve
prednosti raspolaganja s tolikim brojem novinara bile bi umanjene. Upravo radi toga, teret se
mora rasporediti ravnomjerno (engl. balance the load), kako bi se postiglo željeno ubrzanje.
Također, ukoliko bi novinari previše vremena proveli dogovarajući se o redoslijedu pisanja,
pojedini dijelovi reportaže nedostajali bi dok se oni prethodni ne napišu. Drugim riječima, mora
se voditi računa i o reduciranju komunikacijskog i sinkronizacijskog troška (engl. reducing the
communication and synchronization overhead).
Kao što se vidi iz navedene analogije, izazovi paralelnog programiranja uključuju pravilno
raspoređivanje, ravnomjernu raspodjelu zadatka, vrijeme za obavljanje sinkronizacije, te trošak
komunikacije između stranaka. Intuitivno se nameće zaključak da je izazov tim veći, što je veći
broj novinara, odnosno procesora u paralelnom sustavu.
Sljedeću prepreku predstavlja Amdahlov zakon, koji podsjeća da čak i mali dijelovi
programa moraju biti paralelizirani ukoliko se želi da program iskoristi snagu višeprocesorskih
sustava u odgovarajućoj (ciljanoj) mjeri.
2.1.2. Amdahlov zakon
Posebno zanimljivu stavku metrike performansi računalnog sustava predstavlja ubrzanje (engl.
speedup). Ubrzanje se definira kao odnos performansi poboljšanog sustava i njegove izvorne
implementacije:
( )
Odnosno, ukoliko je riječ o vremenima izvršavanja zadataka:
17
( )
Povijesno gledano, ubrzanje se je definiralo za paralelne procesore. Potencijalna dobrobit
paralelnog računanja mjeri se odnosom vremena koje je potrebno da bi se određeni zadatak
izvršio na jednom procesoru i vremena koje je potrebno da bi se isti zadatak izvršio na većem
broj procesora. Ukoliko predstavlja vrijeme izvršavanja na procesora ( ) , tada
ubrzanje za procesora iznosi:
( )
( ) ( )
U idealnom slučaju, za potpuno paralelizirani algoritam, te uz zanemarivo vrijeme
komunikacije između procesora, vrijedi ( ) ( )
, pa gornji izraz daje:
( )
To znači da bi optimalno ubrzanje korištenjem paralelnog sustava bilo linearno – svako
udvostručavanje broja procesnih elemenata (tj. procesora) prepolovilo bi trajanje izvršavanja
zadatka.
Ipak, ovako linearno ubrzanje je zaista rijetkost i postižu ga tek najnapredniji paralelni
algoritmi. Većina algoritama može postići približno linearno ubrzanje za mali broj procesnih
elemenata, a koje zatim s povećanjem njihova broja prelazi u konstantnu vrijednost. Razlozi
zbog kojih je linearno ubrzanje gotovo neostvarivo uglavnom su vezani uz problem
komunikacije i sinkronizacije među procesorima, te uz pojavu memorijskih i interkonekcijskih
kašnjenja.
Dobitak na performansama koji se može osigurati poboljšanjem određenog dijela računalnog
sustava moguće je izračunati korištenjem Amdahlovog zakona, kojeg je utvrdio Gene Amdahl,
1960. godine.
Amdahlov zakon tvrdi da je ubrzanje paralelnog programa ograničeno sekvencijalnim
dijelom programa. Pretpostavimo da je algoritam ili zadatak sastavljen od frakcije koju je
18
moguće paralelizirati, i od serijske (sekvencijalne) frakcije . Također, pretpostavimo da je
vrijeme koje je potrebno da bi dotični zadatak bio izvršen na jednom procesoru dano sa:
( ) ( ) ( )
Gdje je:
( )
Ukoliko bi isti zadatak bio izvršen na paralelnih procesora, vrijeme izvršavanja bi tada bilo
definirano kao:
( ) ( ) (2.6),
gdje se vidi da je uzrok ubrzanja distribucija paralelnog dijela na procesora. Amdahlov zakon
za ubrzanje ( ) korištenjem sustava s procesora, glasi:
( ) ( )
( )
( )
( ) ( )
Da bi se postiglo bilo kakvo ubrzanje potrebno je zadovoljiti sljedeći izraz:
( )
Ova nejednadžba diktira da paralelni dio algoritma ( ) bude čim bliži jedinstvu, posebice kada
je velik. Slika 2.1 prikazuje funkciju ubrzanja u ovisnosti o za različite vrijednosti broja
procesora .
19
Slika 2.1. Amdahlov zakon (izvor: [1])
Puna linija je za , iscrtana linija za , a točkasta za . Može se uočiti da
veći pridonosi većem ubrzanju. Ubrzanje je, dakle, ovisno o iznosu parametra i intuitivno se
može zaključiti da upravo predstavlja stupanj paralelizma određenog programa, odnosno
sposobnost sustava da ga iskoristi. Također, iz slike se može primijetiti da ubrzanje najviše
dolazi do izražaja za , te da dolazi do zasićenja kada , odnosno broj procesora, postane
velik.
Za velike brojeve , ubrzanje se aproksimira kao:
( )
( )
Iz svega navedenog nameće se zaključak da višeprocesorski sustavi, a pogotovo oni s vrlo
velikim brojem procesora, mogu donijeti ubrzanje i poboljšanje performansi tek ukoliko se vrlo
vješto iskoriste i primijene tehnike paralelizma unutar programa i aplikacija, što potvrđuje
poteškoće navedene u odjeljku 2.1.2.
20
U ekstremnim slučajevima, Amdahlov zakon postaje:
( )
( )
Navedene jednakosti su ustvari očite. Kada je program u potpunosti paralelan, ubrzanje će
odgovarati upravo broju procesora koje koristimo u paralelnom sustavu.
2.1.3. Gustafson – Barsisov zakon
Vrlo važan zakon u području paralelnih računalnih sustava je i Gustafson – Barsisov zakon,
kojeg su opisali John L. Gustafson i njegov kolega Edwin H. Barsis. Zakon ukazuje na
nedostatke Amdahlovog zakona, s kojim je usko povezan.
Dok Amdahlov zakon pretpostavlja fiksnu duljinu dijela paralelnog koda i ne ovisi o veličini
problema, Gustafson je opazio da se paralelizam unutar aplikacije povećava usporedno s rastom
veličine problema.
Da bi se izveo Gustafson-Barsisov zakon, valja najprije započeti s procesora. Vrijeme
potrebno da bi se zadatak izvršio na procesora dano je sa:
( ) ( ) ( )
Kada se ovaj zadatak izvršava na jednom procesoru, serijski dio ostaje nepromijenjen, ali
paralelni dio će se povećati, prema sljedećem izrazu:
( ) ( ) ( )
Ubrzanje je sada:
( ) ( )
( ) ( ) ( ) ( )
21
Slika 2.2 ponovno prikazuje funkciju ubrzanja u ovisnosti parametru za različite
vrijednosti broja procesora . Puna linija je za , iscrtana linija za , a točkasta za
. Primjećuje se da, u usporedbi s Amdahlovim zakonom, Gustafson-Barsisov zakon nudi
mnogo linearniji porast ubrzanja, čak i za vrlo male vrijednosti paralelizma , a ubrzanje
nastavlja rasti i za veliki broj procesora .
Slika 2.2. Gustafson-Barsisov zakon (izvor: [1])
Da bi se postiglo ubrzanje u bilo kojoj mjeri, potrebno je osigurati sljedeći uvjet:
( ) ( )
Može se uočiti da je uz Gustafson-Barsisov zakon moguće postići vrlo dobro ubrzanje čak i kada
je razina paralelizma mala, uz veliki broj procesora . Općenito, Gustafson-Barsisov zakon
nudi mnogo optimističnije predviđanje ubrzanja sustava od Amdahlovog zakona.
22
2.1.4. Implementacije paralelizma
Prije no što bude definirana klasifikacija računala prema Flynn-u, valja proučit nekoliko
osnovnih načina implementacije paralelizma u paralelnim računalnim sustavima, koji se mogu
ostvariti primjenom različitih hardverskih i softverskih tehnika, a nazivaju se još i razinama
paralelizma (engl. levels of parallelism):
1. Paralelizam podatkovne razine (engl. data-level parallelism) – omogućuje operacije nad
skupinama bitova podataka ili nad višestrukim podacima istovremeno. Primjeri ovakvog
paralelizma su bit-paralelno zbrajanje, množenje i dijeljenje binarnih brojeva, te
sistolička polja13
za upravljanje nekolicinom uzoraka podataka.
2. Paralelizam instrukcijske razine (engl. instruction-level parallelism, ILP) – procesor
izvršava više od jedne instrukcije istovremeno. Primjer je korištenje protočnih struktura
(engl. pipelining structures), kao što je prikazano na slici 2.3.
Slika 2.3. Protočna struktura za izvršavanje instrukcija
3. Paralelizam dretvene razine (engl. thread-level parallelism, TLP). Dretva, ili nit (engl.
thread), dio je programa koji procesorske resurse dijeli s ostalim dretvama. Korištenjem
ove razine paralelizma, višestruke softverske dretve izvršavaju se istovremeno na jednom
ili više procesora. TLP se najčešće susreće u aplikacijama koje istovremeno moraju
izvršavati više nezavisnih i nepovezanih zadataka, primjerice kod web servera. Ova
razina paralelizma je trenutno vrlo zanimljivo područje istraživanja zbog razvoja sve
popularnijih višejezgrenih i višeprocesorskih sustava, koji omogućuju stvarno usporedno
izvršavanje dretava.
4. Paralelizam procesne razine (engl. process-level parallelism). Procesom se
najjednostavnije može nazvati program koji se odvija na računalu. Proces rezervira
13 Matrična polja sastavljena od podatkovnih procesnih jedinica koje se nazivaju ćelijama. Sistolička polja
predstavljaju poseban oblik paralelnog računalstva, u kojem pojedine ćelije (procesori) računaju s podacima i
pohranjuju ih neovisno o drugim ćelijama.
23
vlastite računalne resurse, poput memorijskog prostora i registara. Ova razina paralelizma
pripada klasičnom višezadaćnom (engl. multitasking) i vremenski dijeljenom (engl. time-
shared) računalstvu gdje se nekoliko programa izvršava istovremeno na jednom računalu
ili na više računala (procesora ili procesnih elemenata).
2.2. Organizacija paralelnih računala
2.2.1. Flynn-ova taksonomija
Ideja korištenja višestrukih procesora u svrhu poboljšanja performansi i povećanja korisnosti
sustava datira još iz razdoblja najranijih elektroničkih računala. Flynn je 1966. godine predstavio
jednostavan model klasifikacije računala koji je i danas, nakon 45 godina, još uvijek koristan.
Klasifikaciju je izradio proučavajući jedinstvenost i mnogostrukost instrukcijskih i podatkovnih
tokova. Instrukcijskim tokom smatra se sekvencija instrukcija koju pojedini procesor izvršava,
dok se pod pojmom podatkovnog toka podrazumijeva niz podataka kojim upravlja pojedini
instrukcijski tok.
Promatrajući paralelizam unutar podatkovnih i instrukcijskih tokova, Flynn je sve računalne
arhitekture svrstao u sljedeće četiri kategorije, prema Kartezijevu produktu:
( ) ( )
1. Single instruction, single datastream (SISD) – kategorija SISD arhitekture odgovara
uobičajenim jednoprocesorskim sustavima s kojima smo se donedavno susretali. Model
se primjenjuje kod tradicionalnih sekvencijalnih računala koja ne posjeduju paralelizam
na sklopovskoj razini. Instrukcije se kod ovakvih sustava izvršavaju serijski, a tijekom
svakog taktnog ciklusa procesor može obraditi tek jedan podatkovni tok. Primjeri
ovakvih sustava uključuju većinom starija računala, poput izvornog IBM PC-a, starija
mainframe računala te mnoga 8-bitna računala poput popularnog Commodore-a 64 iz
1980-ih.
2. Single instruction, multiple datastreams (SIMD) – kod SIMD arhitektura, ista
upravljačka jedinica prihvaća, dekodira i izdaje instrukcije koje izvršavaju procesni
elementi (PE-i) – CPU jedinice bez upravljačkih jedinica. Nekoliko procesora obrađuje
različite podatkovne tokove koristeći istu instrukciju, odnosno instrukcijski tok. SIMD
24
računala iskorištavaju paralelizam podatkovne razine usporedno primjenjujući jednake
operacije nad različitim dijelovima podataka. Svaki procesor posjeduje vlastitu
podatkovnu memoriju (stoga, multiple data), ali u sustavu postoji samo jedna
instrukcijska memorija i upravljačka jedinica koji prihvaća i otprema instrukcije. Kod
sustava koji zahtijevaju znatnu količinu paralelizma podatkovne razine, SIMD pristup
može biti vrlo učinkovit - SIMD metode su vrlo popularne kod grafički zahtjevnih
aplikacija, posebice kod računalnih igara, zbog mogućnosti postizanja visokih
performansi pri generiranju trodimenzionalnih okružja u pravom vremenu. Nekoliko
superračunala iz 80-ih i 90-ih godina prošlog stoljeća, od kojih popularna Illiac IV i
ConnectionMachine CM-1, izgrađena su prema SIMD modelu, a smatra se i da vektorska
računala pripadaju upravo ovoj arhitekturi.
3. Multiple instruction, single datastream (MISD) – ovakva računala mogu procesirati jedan
podatkovni tok, koristeći više instrukcijskih tokova istovremeno. Međutim, trenutno ne
postoji niti jedan suvremeni višeprocesorski sustav temeljen na MISD arhitekturi, tj.
takav koncept (još) nije realiziran, stoga se ovaj tip paralelnih računala koristi tek kao
teoretski model.
4. Multiple instruction, multiple datastreams (MIMD) – MIMD organizacija je
najopćenitija. Nekoliko procesora s pripadajućim hijerarhijama priručne memorije djeluje
usporedno u asinkronom načinu rada. Jednostavnije rečeno, MIMD računalo je sposobno
izvršavati višestruke instrukcijske tokove, istodobno obrađujući višestruke podatkovne
tokove – svaki procesor prihvaća svoje instrukcije i obrađuje svoje podatke. Ovakve
sustave razlikuje način komunikacije među procesorima, ovisno o tome dijele li
zajedničku memoriju i komuniciraju putem učitaj-pohrani instrukcija (engl. load-store)
ili komuniciraju prosljeđivanjem poruka (engl. message passing communication). Osim
toga, sustavi s dijeljenom memorijom (engl. shared-memory systems) se razlikuju i prema
načinu pristupanja glavnoj memoriji – pristup memoriji može biti ravnomjeran, s
pristupom cjelokupnoj memoriji, ili se svakom procesoru dodjeljuje dio zajedničke,
raspodijeljene memorije. Štoviše, broj procesora u sustavu, njihova homogenost,
interkonekcije između procesora te procesora i memorije, načini osiguravanja
sinkronizacije i koherentnosti priručne memorije, faktori su koji doprinose bezbrojnim
mogućnostima dizajniranja MIMD višeprocesorskih sustava. Primjeri ovakvih procesora
su višejezgreni procesori, te općenito višedretveni višeprocesorski sustavi.
25
Slika 2.4. Flynn-ova taksonomija (izvor: [4])
U MIMD sustavima, svaki procesor izvršava vlastiti tok instrukcija i u većini slučajeva, radi
se o izvršavanju različitih procesa. Proces je segment programskog koda koji se može izvršavati
nezavisno; stanje procesa sadrži sve potrebne informacije potrebne procesoru da bi izvršio taj
program. U višeprogramskom okružju, gdje procesori mogu izvršavati različite nezavisne
zadaće, svaki proces je najčešće nezavisan o ostalim procesima.
Također, korisno je raspolagati s višestrukim procesorima koji će izvršavati isti program te
dijeliti kod i većinu njihovog adresnog prostora. Više procesa koji dijele kod i podatke na ovaj
način nazivamo dretvama ili nitima. Danas, pojam dretva se često usputno koristi kada se želi
ukazati na višestruke lokacije izvršavanja koja se mogu odvijati na različitim procesorima, čak i
kada ne dijele adresni prostor. Primjerice, višedretvena arhitektura ustvari omogućuje istodobno
izvršavanje višestrukih procesa, bez obzira dijele li višestruke dretve isti zajednički adresni
prostor ili se radi o potencijalno odvojenim adresnim prostorima.
2.2.2. Dijeljenje memorije u višeprocesorskim sustavima
U sustavima s dijeljenom memorijom, paralelni procesori (prvenstveno MIMD procesori) dijele
zajednički fizički adresni prostor, a protok podataka između procesora odvija se putem
uobičajenih učitaj-pohrani instrukcija. Glavna memorija može biti zajednička i jednako udaljena
od svakog procesora ili može biti fizički raspodijeljena sa svakim procesorom. Ovisno o tome,
razlikujemo dva sustava: višeprocesorske sustave sa zajedničkom memorijom (engl. shared-
memory multiprocessors) i višeprocesorke sustave s fizički raspodijeljenom memorijom (engl.
distributed-memory multiprocessors) koji će biti opisani u sljedećim odjeljcima.
26
Također, postoje i paralelni računalni sustavi koji ne dijele zajednički fizički adresni prostor,
a samim time niti memoriju, već svaki procesor posjeduje vlastiti, privatni fizički adresni
prostor. Za razliku od prethodnog pristupa, koji se najčešće koristi unutar istog računalnog
sustava, ovaj se model koristi za spregu fizički potpuno odvojenih računala, najčešće clustera,
kao što će kasnije biti kratko opisano.
2.2.3. Višeprocesorski sustavi sa zajedničkom memorijom - UMA
Višeprocesorski sustavi sa zajedničkom memorijom14
, poznati još i kao sustavi s ravnomjernim
pristupom memoriji, ili UMA sustavi (engl. Uniform Memory Access), vrlo su popularni zbog
svojeg jednostavnog i općeg programerskog modela, koji omogućuje brzi razvoj paralelnog
softvera s podrškom dijeljenja koda i podataka. Zajednička memorija, ili zajednički adresni
prostor, koriste se kao sredstvo komunikacije između procesora. Svi procesori u arhitekturi sa
zajedničkom memorijom mogu pristupati istom adresnom prostoru zajedničke memorije preko
međuveza, kao što je prikazano na slici 2.5. Najčešće, međuveze sačinjava sabirnica, međutim
kod većih sustava, sabirnice će zamijeniti mreže, u svrhu poboljšanja performansi, poput količine
procesorsko/memorijskih pristupa koji se mogu obaviti po jedinici vremena (propusnost) te
vremenskog kašnjenja zbog čekanja na dozvolu pristupa memoriji.
Vrlo brzo može se doći do zaključka da će usko grlo sustava sa sabirnicom predstavljati
memorijska propusnost (engl. bandwidth), budući da samo jedan procesor može pristupiti
memoriji u danom trenutku.
Da bi se takve poteškoće izbjegle, umjesto sabirnica se koriste konfiguracije s međuveznim
mrežama (slika 2.5 b), što će većem broju procesora omogućiti istovremeni pristup mreži. Osim
toga, u ovakvim je konfiguracijama jedan memorijski modul zamijenjen nizom memorijskih
blokova, čime se omogućuje više istovremenih memorijskih čitaj/piši operacija.
Sljedeći problem, vezan ne samo uz sustave sa zajedničkom memorijom, već i uz paralelna
računala općenito, jest problem koherentnosti priručne memorije (engl. cache memory). Naime,
u paralelnim sustavima, primjerak podatka koji se nalazi u zajedničkoj memoriji mora se
podudarati sa svim kopijama tog istog podataka koje se mogu nalaziti u lokalnim priručnim
memorijama pojedinih procesora. Koherentnost priručne memorije osigurava se različitim
protokolima koji će biti kasnije opisani.
14 Manje poznati naziv za ovakve procesore jest i Paralelni strojevi s izravnim pristupom (engl. Parallel Random
Access Machine, PRAM)
27
Slika 2.5. Arhitektura UMA višeprocesorskih sustava sa zajedničkom memorijom. (a) Procesori su
povezani sa zajedničkom memorijom koristeći jednu jedinstvenu sabirnicu. (b) Procesori i memorijski
moduli koriste međuveznu mrežu (izvor: [1])
U višeprocesorskom sustavu sa zajedničkom memorijom, bilo koji procesor može pristupiti
bilo kojem memorijskom modulu. Slika 2.5b prikazuje implementaciju arhitekture s višestrukim
memorijskim modulima u sustavu sa zajedničkom memorijom. Također, dostupnost višestrukih
memorijskih modula omogućuje većem broju procesora da pristupe većem broju različitih
memorijskih modula istovremeno. Ovakvo rješenje povećava memorijsku propusnost, međutim
ne adresira probleme vezane uz memorijske kolizije do koji dolazi kada više od jednog procesora
pokušava pristupiti istom memorijskom modulu. Glavni nedostatak kod svih implementacija
memorijskih modula jest postojanje samo jedne pristupne točke, tj. porta. Stoga, bez obzira na
veličinu memorijskog modula, u svakom trenutku je moguće pristupiti tek jednoj podatkovnoj
riječi.
Budući da je ovakav sustav najčešće sastavljen od identičnih, homogenih procesnih
elemenata, te od jedinstvene glavne memorije koja ima simetričnu vezu sa svim dostupnim
procesorima i ravnomjerno vrijeme pristupa za sve procesore, ovaj model višeprocesorskih
sustava se često naziva i simetričnim višeprocesorskim sustavima (engl. symmetric (shared-
memory) multiprocessors – SMPs), i trenutno je najpopularniji model višeprocesorskih sustava,
sa širokom primjenom u višejezgrenim procesorima.
28
2.2.4. Višeprocesorski sustavi s raspodijeljenom memorijom - NUMA
U višeprocesorskim sustavima s raspodijeljenom memorijom svakom je procesoru dodijeljen
njegov vlastiti memorijski modul, kao što je prikazano slikom 2.6. Procesori mogu izravno
pristupiti svojim vlastitim memorijama, dok se za pristup memorijskim modulima ostalih
procesora koriste mehanizmi prosljeđivanja poruka (engl. message passing mechanism).
Slika 2.6. Arhitektura NUMA višeprocesorskih sustava s raspodijeljenom memorijom (izvor: [1])
Podsjetimo se, pojedini procesori mogu pristupati memorijskim modulima ostalih procesora
jer sustavi ovog tipa, iako s fizički raspodijeljenom memorijom, i dalje pripadaju
višeprocesorskim sustavima sa zajedničkim adresnim prostorom.
U odnosu na prethodno opisane UMA sustave, pristup memoriji kod ovakvih sustava nije
ravnomjeran, budući da glavna memorija nije centralizirana, stoga se sustavi još nazivaju i
višeprocesorskim sustavima s neravnomjernim pristupom memoriji, tj. NUMA sustavima (engl.
Nonuniform Memory Access).
Ukoliko je NUMA višeprocesorski sustav sastavljen od identičnih procesora, tada kažemo da
se radi o homogenom ili simetričnom višeprocesorskom sustavu (symmetric multiprocessor,
SMP), kao što je bio slučaj kod UMA sustava. Suprotno tome, ako sustav sačinjavaju različiti, tj.
heterogeni procesori, tada se radi o asimetričnom višeprocesorskom sustavu, ili ASMP-u (engl.
asymmetric multiprocessor). Obje implementacije opisat ćemo u sljedećem potpoglavlju.
Model NUMA višeprocesorskih sustava najčešće se koristi u sustavima s vrlo velikim brojem
procesora, gdje se memorija decentralizira i fizički raspodjeljuje na procesore, kako bi se zbog
velikog broja procesora osigurala čim veća propusnost i što manja memorijska latentnost.
29
2.2.5. Sprega procesora u višeprocesorskim sustavima
Nakon podjele višeprocesorskih sustava prema načinu podjele memorije među procesorima u
višeprocesorskom sustavu, isto se može učiniti i s podjelom prema načinu sprege između
procesora u takvim sustavima.
Takva podjela je krajnje jednostavna, i ovisi tek o fizičkoj konfiguraciji sustava, odnosno o
fizičkoj lokaciji procesora unutar sustava.
Naime, procesori koji osim zajedničkog adresnog prostora dijele i fizički prostor, tj. nalaze se
unutar istog računalnog sustava ili čak kućišta, pripadaju skupini usko spregnutih (engl. tightly-
coupled) sustava. Takva računala sadržavaju veći broj procesora koji su najčešće povezani
sabirnicom, te mogu imati zajedničku ili raspodijeljenu memoriju, što odgovara upravo
prethodno definiranim UMA i NUMA modelima računala. Najekstremniji, i najsuvremeniji
oblik usko spregnutih računala jesu čip multiprocesori, poznatiji i kao višejezgreni procesori,
koji uključuju veći broj jednakih procesora na istom čipu, unutar istog kućišta.
Sljedećoj skupini pripadaju računalni sustavi koji su fizički potpuno odvojeni i udaljeni, ne
dijele zajednički adresni prostor niti resurse, a veza se ostvaruje uz pomoć komunikacijskih
sustava visoke brzine, poput gigabitnih lokalnih mreža. Takve sustave nazivamo široko
spregnutim (engl. loosely coupled) sustavima. Sustave najčešće sačinjavaju cjelovita, fizički
udaljena računala, poput clustera, koja se dovode u spregu s ciljem povećanja učinkovitosti pri
izvršavanju zajedničkog zadatka.
Usko spregnute sustave, u usporedbi sa široko spregnutim, odlikuju mnogostruko manje
dimenzije, a samim time i energetski zahtjevi te cijena. Međutim, u područjima primjene gdje su
potrebne enormno visoke performanse, odabir čine uvijek široko spregnuti sustavi poput
clustera, kao što će biti predstavljeno u odjeljku posebno namijenjenom tom obliku
višeprocesorskog računalstva.
2.2.6. Simetrija u višeprocesorskim sustavima
Odnos procesora u vidu njihovih sličnosti i razlika bit će razmotren na modelu višejezgrenih
procesora, koji je primjenjiv i na ostale višeprocesorske sustave.
Dva su načina implementacije višejezgrenih procesora. Prvi način obuhvaća primjenu
simetričnog višejezgrenog procesora, što uključuje geometrijsko povećavanje broja jezgara sa
svakim novim napretkom. To najčešće znači udvostručavanje broja potpuno identičnih
30
procesorskih jezgara te njihovo povezivanje u svrhu tvorbe jačeg procesora. Drugi način su
asimetrični višejezgreni procesori, koji se sastoje od jedne jače jezgre, te niza slabijih jezgara.
1. Simetrični višejezgreni procesori – kao što samo ime podrazumijeva, ovaj model
višejezgrenih procesora uključuje povezivanje dvije, ili više identičnih jezgara na istom
čipu, poštujući pravilo da broj jezgara na čipu uvijek odgovara višekratniku broja dva.
Primjer takvog čipa prikazan je slikom 2.7.
Slika 2.7. Dijagram simetričnog višejezgrenog procesora
Zbog simetrije u broju procesora i njihovim karakteristikama, ovaj se model još naziva i
modelom homogenih višejezgrenih procesora i danas je vodeći pristup u proizvodnji
višejezgrenih procesora.
2. Asimetrični višejezgreni procesori – poznati još i kao heterogeni višejezgreni procesori,
ovi procesori se sastoje od većeg broja jezgara različitih stupnjeva složenosti.
Slika 2.8. Dijagram asimetričnog višejezgrenog procesora
U ovom primjeru, asimetrični višejezgreni procesor čine blokovi s dvije velike jezgre
visokih performansi, blok s četiri jezgre srednjih performansi, te blok s devet
jednostavnih jezgara. Koristeći ovakvu konfiguraciju, izvršavanje aplikacija, ovisno o
njihovoj kompleksnosti i stupnju paralelizma, može se dodijeliti odgovarajućim
31
jezgrama. Primjerice, potpuno serijske aplikacije će se najbrže izvršavati na jačim
jednojezgrenim procesorima, stoga se te aplikacije dodjeljuju nekoj od najvećih jezgara.
S druge strane, paralelne aplikacije mogu se izvršavati na više procesora istovremeno, pa
je njih stoga moguće dodijeliti bloku s manjim jezgrama.
Bitno je napomenuti da se, naročito pri korištenju literature na stranom jeziku, pojam prethodno
definiranih asimetričnih i simetričnih višejezgrenih procesora (engl. asymmetric and symmetric
multiprocessors) ne smije zamijeniti s pojmom asimetričnog i simetričnog multiprocesiranja
(engl. asymmetric and symmetric multiprocessing) koji se odnosi na softverske implementacije
višeprocesorske tehnologije i upravljanje načinom izvršavanja zadataka u operacijskom sustavu.
2.3. Komunikacija među paralelnim procesorima
U ovom potpoglavlju bit će opisano na koji način paralelni procesori komuniciraju, te koji
modeli komunikacije postoje. Komunikacija među paralelnim procesorima mora postojati kako
bi takvi procesori mogli djelovati kao cjelina i izvršavati zajedničke zadatke koji im se
dodjeljuju.
2.3.1. Tipovi komunikacije
Mogu se definirati sljedeći načini komunikacije među paralelnim procesorima, prikazani slikom
2.9. :
1. Unicast (jedan prema jednome)
2. Multicast (jedan prema mnogima)
3. Broadcast (jedan prema svima)
4. Prikupi
5. Reduciraj
32
Slika 2.9. Različiti tipovi komunikacije među paralelnim procesorima: (a) jedan prema jednome, (b)
jedan prema mnogima, (c) jedan prema svima, i (d) prikupi i reduciraj (izvor: [1])
Jedan prema jednome (Unicast)
Unicast komunikacija uvijek uključuje samo dva procesora: pošiljatelja i primatelja. Unicast
komunikacija se ponekad još naziva i točka-prema-točki komunikacijom, ili P2P (engl. point to
point). S ovakvim načinom komunikacije se često susrećemo kod SIMD računala gdje svaki
procesor razmjenjuje podatke sa svojim susjedom. Slika 2.9a prikazuje unicast način
komunikacije među procesorima. Iako slika prikazuje samo komunikaciju između jednog para
procesora, u stvarnosti svi procesori mogu sudjelovati u unicast komunikaciji istovremeno.
Komunikacija se najčešće izvodi iterativno, i stoga mora biti izvedena efikasno. U većini
slučajeva, ovom komunikacijom se u svakom koraku omogućuje jednostavna razmjena podataka
između izvora i odredišnog registra, uz pretpostavku da je osigurana sinkronizacija između
udaljenih procesora. U ostalim slučajevima, potrebno je osigurati dvostruko rukovanje (engl.
two-way handshaking) ili čak četverostruko rukovanje (engl. four-way handshaking). Kod
dvostrukog rukovanja, komunikacija se između primatelja i pošiljatelja odvija u dva koraka – za
svaki primljeni podatak, primatelj mora pošiljatelju poslati potvrdu o primitku, pa se radi o data-
ackonowledgement komunikaciji. U drugom slučaju, komunikacija se odvija u četiri koraka, gdje
se pošiljatelju najprije mora odobriti zahtjev za slanjem podataka, a po primitku podatka,
primatelj ponovno šalje potvrdu, tzv. request-grant-data-acknowledge komunikacija.
Jedan prema mnogima (Multicast)
Multicast komunikacija uključuje jedan procesor u ulozi pošiljatelja i nekolicinu procesora-
primatelja, kao što je prikazano na slici 2.9b. Kao i u prethodnom slučaju, slika prikazuje
33
multicast komunikaciju između samo jednog pošiljatelja i skupine primatelja, no u stvarnosti, svi
procesori mogu obavljati ovakav vid komunikacije istovremeno. Broj procesora-primatelja ovisi
o detaljima algoritma, te o načinu na koji je mapiranje procesora realizirano. Kao i u prethodnom
primjeru, i ova se komunikacija obavlja u koracima, tj. iterativno, na opisani način.
Jedan prema svima (Broadcast)
Kod broadcast načina komunikacije, prikazanog na slici 2.9c, isti se podatak šalje svim
procesorima u sustavu. Ovaj način može biti koristan kada je svim procesorima u sustavu
potrebno osigurati istovremeni pristup istoj informaciji.
Prikupi (Gather)
Prikazan na slici 2.9d, ovaj vid međuprocesorske komunikacije uključuje prikupljanje podataka
od nekolicine, ili svih procesora u sustavu. Uz pretpostavku da sustav raspolaže s procesora,
vrijeme prikupljanja svih podataka može se procijeniti sljedećim izrazom:
( ),
gdje je vrijeme potrebno da se jedan podatak pošalje i primi.
Reduciraj (Reduce)
Operacija reduciranja vrlo je slična prethodno opisanoj operaciji prikupljanja, osim što se u
ovom slučaju izvršavaju i pojedine operacije nad prikupljenim podacima. Primjer operacije
reduciranja jest tvorba konačnog ishoda na temelju podataka koje su svi procesori poslali, što
može potrajati dulje vrijeme ukoliko se prikupi mnogo podataka koje treba reducirati. Uz
ponovnu pretpostavku da sustav raspolaže s procesora, vrijeme reduciranja procjenjuje se sa:
( ) (2.15),
gdje je vrijeme potrebno da procesor obradi jedan par dobivenih podataka.
34
2.3.2. Mehanizam komunikacije prosljeđivanjem poruka (Message
Passing Communication)
Komunikacija mehanizmom prosljeđivanja poruka najčešće se koristi u sustavima s
raspodijeljenom memorijom (NUMA), te posebice kod sustava koji ne dijele zajednički adresni
prostor, poput clustera. Kod takvih sustava, budući da memorijske lokacije nisu fizički povezane,
sav promet podataka mora se odvijati eksplicitnim prosljeđivanjem poruka između pojedinih
procesora.
Ovaj mehanizam komunikacije karakteriziraju poruke kojima udaljeni procesori zahtijevaju
određenu radnju, dostavu podataka ili pristup memorijskoj lokaciji u okolini nekog drugog
procesora. Komunikacija prosljeđivanjem poruka može se objasniti sljedećim jednostavnim
primjerom – procesor koji želi obraditi podatak u udaljenoj memorijskoj lokaciji poslat će
poruku procesoru u čijoj se memoriji dotični podatak nalazi. Prozvani će procesor tada, u ime
procesora koji je inicirao prijenos, izvršiti tražene radnje nad podatkom u svojoj memoriji, te u
konačnici polaznom procesoru poslati povratnu poruku s ishodom.
2.4. Međuvezne mreže
Kao što se može vidjeti u prethodnim odjeljcima, višeprocesorski sustavi zahtijevaju određeni
vid komunikacije i povezivanja kako bi se omogućila sinkronizacija i razmjena podataka između
procesora, te procesora i pripadajućih zajedničkih ili raspodijeljenih memorija. U ovakvim
sustavima ta se komunikacija ostvaruje putem međuveznih mreža (engl. interconnection
networks).
Mogućnosti i obilježja međuveznih mreža imaju izravan utjecaj na rezultirajući učinak
višeprocesorskih sustava. Kod višejezgrenih procesora, međuvezne mreže se nazivaju još i
mrežom-na-čipu (engl. Network-on-chip, NoC), budući da su kod takvih procesora međuvezne
mreže implementirane na istom čipu na kojem se nalaze i procesorske jezgre. NoC arhitekture
mogu se definirati pomoću četiri parametra: svojom topologijom, algoritmom preusmjeravanja,
protokolom kontrole toka, te mikroarhitekturom preusmjerivača podataka.
Topologija definira strukturu mreže, načine povezivanja čvorova te određuje sve raspoložive
putanje između čvorova, u ovom slučaju procesora ili jezgara. Također, vrsta topologije uvelike
utječe na parametre učinkovitosti sustava, poput razine propusnosti podataka, kašnjenja i
energetskih zahtjeva mreže. I dok topologija definira sve raspoložive putanje u mreži, algoritam
35
preusmjeravanja (engl. routing algorithm) odabire najpovoljniju, odnosno najkraću putanju
(rutu) za prijenos poruka između pošiljatelja i primatelja. Protokol kontrole toka (engl. flow
control protocol) određuje na koji način poruka ustvari putuje dodijeljenom rutom, te u kojem
trenutku poruka mora biti poslana, a u kojem primljena u međuspremnik (engl. buffer). Drugim
riječima, ovaj protokol osigurava prohodnost veze, kako ne bi došlo do zagušenja ili čekanja
ukoliko postoji razlika u brzini kojom pošiljatelj šalje, odnosno primatelj prima poruke.
Naposljetku, mikroarhitektura preusmjerivača podataka (engl. micro architecture of a router)
realizira sve prethodno navedene stavke: fizičku vezu, te protokole i algoritme.
2.4.1. Klasifikacija međuveznih mreža prema logičkim topologijama
Topologija međuvezne mreže se najčešće prikazuje grafom na kojem su prikazani odgovarajući
čvorovi, tj. procesori (na grafovima u nastavku označeni slovom P), i prospojnici (engl. switch) s
pripadajućim vezama (linkovima).
Pojam koji je često prisutan pri definiranju mrežnih topologija je pojam mrežnog dijametara,
koji predstavlja najveću udaljenost između dva čvora u mreži, odnosno broj čvorova i
prospojnika kroz koje poruka mora proći pri svom putu od polazišta do odredišta. Pojam se često
definira i kao broj skokova, ili hopova, koji poruka obavi pri svojem putu kroz mrežu.
U nastavku će biti predstavljene najčešće mrežne topologije u višeprocesorskim, a posebice
višejezgrenim procesorskim sustavima. Te su topologije: sabirnička (engl. bus), zvjezdasta (engl.
star), prstenasta (engl. ring), isprepletena (engl. mesh) i matrična (engl. crossbar).
Sabirnička topologija (Bus)
Najjednostavniji oblik međuvezne mreže je sabirnica, prikazana slikom 2.10. Zasjenjeni
kvadratići predstavljaju kontrolere za upravljanje pristupom mediju, tj. MAC kontrolere (engl.
Medium Access Contol).
Slika 2.10. Sabirnička mrežna topologija (izvor: [1])
36
Osim jednostavnosti, ovu topologiju karakteriziraju i niska cijena, jednostavnost uporabe, te
mogućnost korištenja jednostavnih protokola za osiguravanje koherentnosti priručne memorije,
koje će biti predstavljene u sljedećem poglavlju.
Svi procesori u sustavu i njihovi memorijski moduli priključeni su na sabirnicu. Međutim,
sabirnica u svakom trenutku dozvoljava pristup zajedničkom mediju isključivo jednom
procesoru, kako bi se spriječila pojava kolizija, tj. sukoba (engl. collisions). Svaku jedinicu,
odnosno procesor koji je priključen na sabirnicu, karakterizira njegova jedinstvena MAC adresa,
koja služi kao svojevrstan vid identifikacije i raspoznavanja u mreži.
Na učinkovitost sabirničke mreže umnogome utječu sljedeći čimbenici:
Skalabilnost mreže, odnosno broj procesora – sa širenjem mreže učinkovitost opada,
prvenstveno zbog fizičkih ograničenja kao što je duljina i propusnost linije;
Učestalost zahtjeva za pristupanje mreži – preveliki broj pristupa može dovesti do
zagušenja;
MAC protokol upravljanja pristupom – pristup mediju se određenom procesoru može
osigurati na temelju lokacije, prioriteta operacije, kružnim redoslijedom ili slučajnim
odabirom.
Zvjezdasta topologija (Star)
Slika 2.11 prikazuje primjer zvjezdaste međuvezne mreže, sa svim procesorima povezanima na
središnji uređaj, tzv. parični obnavljač (engl. hub).
Sav promet u mreži sa zvjezdastom topologijom odvija se putem središnjeg uređaja, što ga
čini najslabijom točkom ovakve topologije. Naime, središnji uređaj mora biti u stanju
istovremeno komunicirati sa svim procesorima u sustavu i odgovarati na njihove zahtjeve.
Slika 2.11. Zvjezdasta mrežna
topologija (izvor: [1])
37
Prstenasta topologija (Ring)
Prstenasta topologija, prikazana na slici 2.12., predstavlja jednostavno poboljšanje ranije opisane
sabirničke mrežne topologije.
Slika 2.12. Prstenasta mrežna topologija (izvor: [1])
Za razliku od sabirničke topologije, u mrežama ovog tipa omogućena je istovremena
komunikacija većeg broja procesora. Svi procesori povezani su u prsten pomoću prospojnika koji
većem broju procesora omogućuju da šalju i primaju podatke u istom trenutku, jer procesori
nemaju izravan pristup mediju, već se sva komunikacija odvija posredno, putem prospojnika.
Također, niti međusobna komunikacija između procesora se ne odvija izravno, nego preko
prospojnika koji u tu svrhu procesore prozivaju na osnovu procesorskih MAC adresa.
Isprepletena mrežna topologija (Mesh)
U isprepletenim mrežama poruke putuju od polazišnog do odredišnog procesora korištenjem
naprednih routing algoritama koji su implementirani u svakom prospojniku i preusmjerivaču.
Radi se o algoritmima koji će utvrditi najpovoljniju i najbržu putanju (rutu) kroz isprepletenu
mrežu, kako bi se osiguralo najkraće moguće vrijeme putovanja poruke. Takvi algoritmi mogu
biti deterministički, s unaprijed predefiniranim rutama, ili adaptivni, koji će dinamički prilagoditi
rutu, ovisno o stanju u mreži.
38
Zašto su routing algoritmi vrlo bitni u ovakvim mrežama može se vidjeti i na samom
primjeru isprepletene mreže koja je prikazana na slici 2.13.
Slika 2.13. Isprepletena mrežna topologija (izvor: [1])
Naime, dva susjedna procesora mogu komunicirati izravno, korištenjem najkraće moguće
rute između njih. Međutim, jednako tako, oni mogu komunicirati i korištenjem bilo koje druge, i
mnogostruko duže rute u mreži, što dovodi do velikih gubitaka u vidu kašnjenja i usporavanja
komunikacije. Upravo zato je bitna upotreba naprednih routing algoritama.
Napredniji od dvodimenzionalnih isprepletenih mreža jesu isprepletene mreže u obliku
torusa.
Slika 2.14. Torusni oblik isprepletene mreže (izvor: [2])
Kao što se vidi iz slike, procesori koji se nalaze na rubovima sada mogu izravno
komunicirati, što u prethodnom slučaju nije bilo moguće. Samim time, ovakav oblik isprepletene
39
mreže omogućuje višestruko bržu komunikaciju među najudaljenijim procesorima, zbog manjeg
broja skokova koje poruka mora obaviti pri svojem putu kroz mrežu.
Matrična topologija (Crossbar)
Matrična mreža dimenzija sastoji se od ulaza i izlaza, od kojih svaki ulaz može biti
spojen s bilo kojim slobodnim izlazom.
Primjer matrične mreže dimenzija prikazan je na slici 2.15. Mrežu sačinjava polje
sjecišta (engl. crosspoints) povezanih u rešetku, ili matricu. Pozicija svakog sjecišta u matrici
jednoznačno je definirana njegovim retkom , i stupcem .
Slika 2.15. Matrična mrežna topologija dimenzija (izvor: [1])
Sjecišta mogu raditi u jednom od načina prikazanih na slici 2.16. X konfiguracija je izvorna
konfiguracija koja omogućuje istovremeni protok podataka u okomitom i vodoravnom smjeru,
bez interferencije. Kada bi sjecište (3,5) bilo u X konfiguraciji, tada bi vodoravni prijenos
podataka započinjao u izvoru 3 i podaci bi bili dostavljeni svim sjecištima u tom retku.
Istovremeno, okomita komunikacija u stupcu 5 može započeti u bilo kojem ulazu ispod ili iznad
retka 3.
40
Slika 2.16. Konfiguracije sjecišta u matričnoj mreži (izvor: [1])
Korištenjem T konfiguracije, protok podataka može se odvijati vodoravno, ali se prekida
okomiti protok podataka. Podaci koji putuju okomito prema izlazu su ustvari kopije podataka u
horizontalnoj komunikaciji. Na primjer, ukoliko bi sjecište (3,5) bilo u T konfiguraciji,
vodoravni protok podataka bi započinjao u izvoru 3. Podaci koji bi putovali silazno, prema
izlazu, bili bi kopija podataka iz vodoravne komunikacije. Na ovaj način, izlaz 5 vidi kopiju
podataka koji putuju kroz redak 3.
Multicast podataka u ovakvim je mrežama vrlo lako ostvariti. Pretpostavimo da ulaz 3
zahtijeva multicast svojih podataka prema izlazima 1, 2 i 5. Ulaz 3 će tada od sjecišta (3,1), (3,2)
i (3,5) zahtijevati T konfiguraciju, uz sva ostala sjecišta u retku 3 u X konfiguraciji.
Matrične mreže su mreže vrlo velikog kapaciteta, zbog činjenice da mogu podržati N
istovremenih konekcija. Međutim, to ide na trošak vrlo velikog broja sjecišta, koji se rapidno
povećava s kvadratom broja ulaza, odnosno izlaza, zbog čega se komunikacija u mreži može
usporiti. Stoga se ovakve mreže najčešće koriste u zahtjevnim aplikacijama koje zahtijevaju
relativno mali broj ulaza i izlaza (do 10). Ipak, napredci u VLSI tehnologiji te elektro-optici čine
matrične mreže vrlo atraktivnom alternativom.
2.4.2. Preusmjeravanje (Routing)
Preusmjeravanje u mrežama vrši se pomoću algoritama za preusmjeravanje. Cilj algoritama za
preusmjeravanje, odnosno routing algoritama, jest ravnomjerna raspodjela prometa među
putanjama koje definira odabrana mrežna topologija.
Takvu raspodjelu prometa je potrebno osigurati kako bi se poboljšala propusnost i smanjila
latentnost mreže. Također, routing algoritmi su kritična komponenta u slučaju pogrešaka: nakon
identifikacije pogreške, algoritam mora biti sposoban pronaći novu odgovarajuću rutu i zaobići
čvorove i veze u kvaru, bez znatnijeg narušavanja mrežnih performansi.
41
Postoje brojni routing algoritmi, međutim najzastupljeniji algoritam u NoC mrežama je
dimension-ordered routing (DOR), zbog svoje jednostavnosti. Kod DOR algoritma, poruka
putuje kroz mrežu po dimenzijama, dostižući odredište prije ponovne promjene dimenzije. Broj
promjena dimenzija, odnosno smjera, ovisi o broju dimenzija od kojih se mreža sastoji. To znači
da će u dvodimenzionalnoj X-Y mrežnoj topologiji, kao što je isprepletena mreža na slici 2.17,
DOR algoritam podatke najprije slati po X dimenziji, a zatim po Y dimenziji, bez ponovne
promjene dimenzije.
Slika 2.17. Routing algoritmi u NoC mrežama (izvor: [3])
Podatak koji putuje od (0,0) do (2,3) najprije će učiniti dva skoka po X dimenziji, do pozicije
(2,0), a zatim će učiniti tri skoka po Y dimenziji, što će ga dovesti do odredišne lokacije (2,3).
Budući da broj promjena dimenzija ovisi o samom broju dimenzija u mreži, podatak će uvijek
načiniti najveći broj skokova po pojedinoj dimenziji prije no što promjeni dimenziju.
DOR algoritam pripada skupini determinističkih routing algoritma, kod kojih će svi podaci iz
čvora A prema čvoru B uvijek putovati istom putanjom. Drugu skupinu routing algoritama čine
promjenjivi (zaboravljivi, engl. oblivious) algoritmi koji koriste različite rute između čvorova A i
B, ali odabir rute ne ovisi o trenutnoj situaciji u mreži, što znači da ovakvi algoritmi ne
predviđaju moguće prekide u komunikaciji. Štoviše, ovakvi algoritmi mogu koristiti potpuno
42
nasumičan pristup odabiru putanje. Slika 2.17 prikazuje primjenu promjenjivih algoritama, gdje
podaci do odredišta mogu putovati ili Y-X putanjom, ili X-Y putanjom.
Mnogo naprednije routing algoritme čine adaptivni (prilagodljivi) algoritmi koji odabir
putanje vrše isključivo na temelju stanja i pojava u mreži. Takvi algoritmi ujedno vrše i
dinamičku prilagodbu putanje, čime je isporuka podataka na odredište zajamčena. Na primjer,
podatak može putovati X-Y putanjom, međutim na lokaciji (1,0) „vidi“ prekid koji mu
onemogućuje da nastavi vodoravnim smjerom. Adaptivni algoritam tada će dinamički prilagoditi
putanju podatka tako što će ga preusmjeriti alternativnim pravcem, kao što je prikazano na slici
2.17. Takve mogućnosti ove algoritme čine potpuno imunima na poteškoće koje se mogu
pojaviti u mreži.
Pri odabiru routing algoritama, u obzir se osim njegova utjecaja na kašnjenje, trošak energije,
propusnost i pouzdanost, mora uzeti i sposobnost algoritma da izbjegne potpune zastoje u mreži.
Do potpunih zastoja (engl. deadlocks) dolazi kada nekoliko poruka u mreži napravi kružnu
putanju. Slika 2.18 prikazuje četiri poruke u potpunom zastoju, koje čekaju da se oslobode veze
koje su trenutno zauzete preostalim porukama.
Slika 2.18. Potpuni zastoj (deadlock) (izvor: [3])
Paket koji u preusmjerivač A ulazi s južnog ulaza, čeka svoj odlazak kroz istočni izlaz , ali
drugi paket se nalazi na istoj vezi dok čeka na odlazak kroz južni izlaz preusmjerivača B. Taj
izlaz je ponovno zauzet sljedećim paketom koji čeka na odlazak preko zapadnog izlaza
preusmjerivača C, i tako dalje.
Izbjegavanje potpunih zastoja se može osigurati korištenjem algoritama koji ne generiraju
kružne putanje u mreži. DOR algoritam nije podložan pojavi potpunih zastoja budući da on ne
može generirati kružne putanje – kao što je objašnjeno, promjena smjera kod ovakvog algoritma
ovisi o broju dimenzija u mreži. Primjerice, u dvodimenzionalnoj mreži bi za kružnu putanju bilo
43
potrebno izvršiti tri promjene dimenzije, što DOR algoritam ne dopušta – u takvoj mreži
dozvoljena je tek jedna X-Y ili Y-X promjena dimenzije korištenjem DOR algoritma.
S druge strane, promjenjivi i adaptivni algoritmi su zbog svoje prirode modificiranja putanja
skloni stvaranju potpunih zastoja. Korištenje takvih algoritama zahtijeva prisustvo protokola
kontrole toka, koji će biti opisani u sljedećem odjeljku.
2.4.3. Kontrola toka (Flow control)
Kontrola toka uređuje alokaciju mrežnih međuspremnika i veza. Određuje kada će
međuspremnici i veze biti dodijeljene određenim porukama, te kako se mrežni resursi dijele
među mnogim porukama koje koriste mrežu, kako bi se osigurala što veća propusnost i što bolje
funkcioniranje mreže. Također, kontrola toka usklađuje brzinu komunikacije između pošiljatelja
i primatelja. Naime, ukoliko pošiljatelj šalje poruke većom brzinom no što primatelj može
osloboditi međuspremnik, doći će do zagušenja, odnosno zastoja. Zadatak kontrole toka je
izbjegne pojavu takvih situacija.
Kod kontrole toka metodom pohrani-i-proslijedi (engl. store-and-forward), svaki čvor čeka
da prihvati cijeli paket, prije no što bilo koji od njegovih dijelova proslijedi idućem čvoru.
Posljedica su velika kašnjenja pri svakom skoku, što ovaj model čini neprikladnim za upotrebu u
NoC mrežama. Da bi se kašnjenja pri svakom skoku smanjila, koristi se kontrola toka modelom
virtualnog presijecanja (engl. virtual cut-through) koja omogućuje da slanje paketa započne
prije primitka cijelog paketa. Latentnost se u tom slučaju drastično smanjuje, kao što je
prikazano na slici 2.19.
Sljedeća metoda kontrole toka koja je široko primijenjena u NoC mrežama, a koja je vrlo
slična virtualnom presijecanju, jest metoda crvotočine (engl. wormhole). U usporedbi s
navedenom metodom kontrole toka, koja šalje podatke i alocira međuspremnike na razini paketa,
kod metode crvotočine se komunikacija i alokacija međuspremnika odvija na razini flit-ova
(engl. flit – flow control digit). Flit je vrlo mala podatkovna jedinica, nastala dijeljenjem velikih
mrežnih paketa.
44
Slika 2.19. Vremena prijenosa za kontrolu toka metodom (a) pohrani-i-proslijedi, i (b) presijecanja. tr
predstavlja vrijeme slanja vodećeg flita, ts predstavlja vrijeme slanje preostalih flitova u paketu, a tw
predstavlja vrijeme propagacije signala kroz mrežu (izvor: [3])
2.5. Vrste višeprocesorskih računalnih sustava
U sljedećim odjeljcima bit će predstavljeni najčešće korišteni tipovi višeprocesorskih računalnih
sustava,
2.5.1. Višejezgreni procesorski sustavi
Višejezgreni sustav najčešće podrazumijeva višeprocesorski sustav u kojem su sve procesorske
jedinice smještene na istom čipu, unutar istog kućišta. Ova bliska konfiguracija i smještaj
procesorskih jedinica omogućuje vrlo brzu međuprocesorsku komunikaciju bez prevelikog
troška energije. Dvojezgreni i četverojezgreni sustavi, zbog svojeg malog broja jezgara, najčešće
koriste načine povezivanja jednostavnom sabirnicom, dok sustavi s većim brojem jezgara koriste
NoC mreže. Oba načina povezivanja opisana su u prethodnim odjeljcima.
Višejezgreni sustavi su se počeli razvijati prvenstveno zbog potrebe da se omogući povećanje
performansi u sustavu, istovremeno ograničujući trošak energije u sustavu, odnosno disipaciju
snage. Drugim riječima, višejezgreni sustav postiže visoke performanse iako su jezgre koje ga
sačinjavaju ustvari klasični procesori niske učinkovitosti. S druge strane, višeprocesorski sustavi
koji koriste zasebne jednojezgrene procesore u sklopu istog sustava, visoke performanse
45
ostvaruju uz mnogo viši trošak energije. Tablica 2.1 sumira temeljne razlike između takvog
višeprocesorskog te višejezgrenog pristupa u građenju računalnih sustava.
Tablica 2.1. Usporedba višeprocesorkih i višejezgrenih sustava
Višeprocesorski sustav Višejezgreni sustav
Jedan procesor po čipu Svi procesori na istom čipu
Visoke Niske
Vrlo visoke Vrlo visoke
Visok Nizak
Relativno visok Relativno nizak
Razina integracije
Performanse procesora
Performanse sustava
Trošak energije procesora
Ukupni trošak energije
Slika 2.20. predstavlja principijelnu shemu i teorijski model višejezgrenih sustava, čija
konfiguracija može uključivati sljedeće elemente:
1. Programabilne jezgre opće namjene,
2. Akceleratorske jezgre posebne namjene,
3. Dijeljeni memorijski moduli,
4. NoC (međuvezne mreže),
5. Ulazno/Izlazno sučelje
Slika 2.1. Principijelni model višejezgrenih sustava (izvor: [1])
Prije no što u četvrtom poglavlju budu opisane konkretne višejezgrene arhitekture pojedinih
proizvođača, nužno je predstaviti osnovni model višejezgrenog procesora. Iako se pristupi u
dizajniranju višejezgrenih procesora mogu razlikovati od proizvođača do proizvođača, postoje
46
određene osnovne značajke koje su zajedničke svim višejezgrenim procesorima i čine temelj
višejezgrenih arhitektura.
Osnovni model konfiguracije višejezgrenog procesora prikazan je na slici 2.21. Srce samog
sustava čine procesori, odnosno jezgre. Ovisno o tome je li višejezgreni procesor homogen ili
heterogen, jezgre će biti jednakih, odnosno različitih mikroarhitektura i značajki.
Slika 2.21. Osnovni model višejezgrenog procesora (izvor: [4])
Najbliže samom procesoru nalaze se priručne memorije kroz nekoliko razina (engl. levels,
stoga oznaka L). Najraniji višejezgreni procesori sadržavali su L1 memoriju u sklopu samog
procesora (jezgre), dok je L2 memorija bila zajednička svim procesorima. U modernijim
višejezgrenim procesorima uvedena je još jedna razina priručne memorije, L3 memorija, koja je
sada zajednička svim raspoloživim jezgrama, a L1 i L2 memorije se nalaze u sklopu svake
pojedine jezgre.
L1 priručna memorija je vrlo brza memorija koja se koristi za pohranu i pristup podacima
koje procesor najčešće koristi. Priručne memorije druge i treće razine imaju sličnu ulogu, ali uz
nešto nižu brzinu pohrane i pristupa podacima.
Organizacija priručne memorije kroz nekoliko razina izvršava se iz više razloga. Prvo,
izvedba priručne memorije sastavljene od samo jedne veće L1 memorije preskupa je i presložena
– razdioba priručne memorije na više razina neće generirati prevelike gubitke u učinkovitosti, a
izvedba će biti mnogo jednostavnija i jeftinija. Drugo, svi podaci koji su procesoru potrebni
nemaju jednaku važnost. Drugim riječima, procesor ne pristupa svim bitnim podacima jednako
47
često, stoga je vrijedni prostor L1 memorije poželjno osigurati podacima koji su procesoru
najčešće potrebni, dok se L2 i L3 memorije dodjeljuju podacima koje procesor koristi manje
često.
Glavna memorija predstavlja ustvari RAM memoriju, odnosno memorije s izravnim
pristupom podacima. U usporedbi s priručnom memorijom, ova memorija je mnogo sporija i
veća – RAM memorija je najčešće reda veličine nekoliko GB, dok priručne memorije u novijim
višejezgrenim procesorima mogu biti, kako slijedi: L1 – 32 KB, L2 – 256 KB i L3 – 8 MB.
2.5.2. Cluster računala
Računalni cluster je skupina koju čine najmanje dva računala povezana za svrhom zajedničkog
rješavanja zadanog problema.
Računala, odnosno procesori u clusteru mogu komunicirati međusobno ili putem dijeljene
memorije. Komunikacija se najčešće ostvaruje slanjem poruka i paketa korištenjem
komunikacijskih veza kao poput LAN mreža, kao što je prikazano na slici 2.22. LAN mreže se
pritom obično implementiraju u vidu serverskog računala velike brzine koje će biti u stanju
komunicirati sa svim dostupnim procesorima istovremeno. Osim samih računala i procesora koji
se u clusteru koriste isključivo za izvršavanje zadataka, u sustavu mora postojati i dijeljena
memorija koja će biti sposobna odgovarati na zahtjeve svih računala istovremeno, te client
računalo koje je zaduženo za raspodjelu zadataka među računalima i prikupljanje njihovih
rezultata.
Slika 2.22. Arhitektura računalnog clustera
(izvor: [1])
48
Cluster računala, kao i grid računala koja su predstavljena u nastavku, zbog načina na koji
realiziraju tehnike paralelnog i višeprocesorskog računalstva, spadaju u skupinu široko
spregnutih paralelnih računala o kojima je bilo riječi u odjeljku 1.2.5.
2.5.3. Grid računala
Grid računalstvo, poznato još i kao cloud računalstvo, ili računalstvo u oblaku, odnosi se na
sustave pružanja pristupa računalnim resursima koji su distribuirani preko WAN (Wide Area
Network) mreže. U tom smislu, grid računalo je skup velikog broja procesora raspodijeljenih
preko širokog geografskog područja. Grid računala su, zbog enormnog broja procesora koje
posjeduju (deseci tisuća računala), sposobna rukovati problemima velikih razmjera, kao što su N-
body simulacije15
, te simulacije seizmičkih, atmosferskih i oceanskih pojava. U usporedbi s
cluster računalima, grid računalo je poput mnogo većeg clustera, koji umjesto LAN mreža
koristi WAN mreže, poput Interneta.
Ono što clustere i grid računala čini različitima od ostalih paralelnih višeprocesorskih sustava
i superračunala, jest upravo činjenica da se radi o cjelovitim i geografski udaljenim računalima
koja kao vid povezivanja koriste komunikacijske mreže poput LAN i WAN mreža, dok ostali
višeprocesorski podrazumijevaju čvrstu spregu procesora i njihovo lociranje unutar istog
računalnog sustava.
15 Simulacija dinamičkog sustava čestica, najčešće pod utjecajem sila poput gravitacijske sile. Velika primjena u
simulacijama kozmičkih pojava.
49
3. POTEŠKOĆE I IZAZOVI U VIŠEPROCESORSKIM
RAČUNALNIM SUSTAVIMA
Nedvojbeno je da višeprocesorski pružaju mnoge dobrobiti i prednosti u odnosu na
konvencionalne, jednoprocesorske sustave. Međutim, da bi se takve prednosti osigurale,
višeprocesorski se sustavi susreću s mnogo složenijim poteškoćama i izazovima od svojih
prethodnika.
O kakvim se poteškoćama i izazovima radi, te jesu li, i na koji način riješeni, pitanja su na
koja odgovor valja potražiti kroz primjere najvažnijih problema koji se pojavljuju u
višeprocesorskim sustavima.
3.1. Koherentnost priručne memorije
Upotreba većeg broja procesora, osim brojnih pogodnosti, dovela je i do pojave potpuno novih
poteškoća, nepoznatih u prethodnim jednoprocesorskim sustavima. Veći broj procesora
podrazumijeva i veći broj njihovih privatnih memorija, što dosljednost i koherentnost podataka
na tim memorijama dovodi u pitanje, no prije opisivanja samog problema koherentnosti među
podacima, bit će kratko opisan koncept priručne memorije.
Priručna (engl. cache) memorija je mala i brza memorija u sklopu procesora, koja služi kao
posrednik između procesora i glavne, u ovom slučaju dijeljene, memorije. Ova memorija je
ujedno i najbrža memorija u hijerarhiji što je čine priručna, glavna te sekundarna memorija.
Budući da centralna procesna jedinica podatke i instrukcije obrađuje brže nego što se oni
mogu izravno pribaviti iz glavne memorije, priručna memorija će uskladiti brzinu procesora i
latentnost glavne memorije, čime će se omogućiti brži rad procesora. Stoga, čitaj/piši operacije
uz korištenje priručne memorije traju približno isto vrijeme kao i same aritmetičko-logičke
operacije.
Tablica 3.1 sumira terminologiju koja se koristi pri opisivanju koherentnosti priručne
memorije. Priručna memorija je vrlo korisna jer uz pomoć nje brojni zadaci i aplikacije prikazuju
i definiraju svoj vremenski i prostorni lokalitet (engl. temporal and spatial locality). Vremenski
lokalitet predviđa ponovno korištenje trenutnog podatka u bliskoj budućnosti, dok se prostornim
lokalitetom predviđa korištenje podataka u budućnosti koji se nalaze u blizini trenutno
50
Pojam (engl.) Značenje
Block
Broadcast
Cache
Cache coherence
Cache coherence protocol
Coherent system
Global data
Line
Local data
Modified block
Multicast
Replacement
Spatial locality
Temporal locality
Unicast
Valid
Write-back
Write-thorugh
Prostorni lokalitet - podatak unutar istog bloka će biti uskoro korišten
Vremenski lokalitet - definiranje podatka koji će se uskoro koristiti
Slanje podataka samo jednoj priručnoj memoriji
Ispravnost - sadržaj bloka je ažuriran
Blok u dijeljenoj memoriji je ažuriran tek nakon što se isti blok premjesti iz priručnem memorije
Blok u dijeljenoj memoriji je ažuriran čim se modificira sadržaj istog bloka u priručnoj memoriji
Podatak pohranjen u dijeljenoj memoriji
Linija - blok pohranjen u priručnoj memoriji, zajedno sa svojom oznakom i bitom ispravnosti
Lokalni podatak - podatak pohranjen u priručnoj memoriji
Modificirani blok - podaci iz bloka u priručnoj memoriji koji nisu ažurirani u dijeljenoj memoriji
Slanje podataka odabranoj skupini priručnih memorija, ali ne svima
Zamjena - premještanje bloka iz priručne memorije zbog osiguravanja prostora za novi blok
Blok - skupina graničnih riječi ili podataka pohranjenih u dijeljenoj memoriji
Slanje podataka svim dostupnim priručnim memorijama
Priručna memorija - mala memorija velike brzina implementirana na istom čipu s procesorom kojemu pripada. Koristi
se kako bi se skratilo vrijeme pristupa memoriji i kako bi se izbjegle kolizije između procesora pri pristupanju dijeljenoj
memoriji
Koherentnost priručne memorije - povezanost sadržaja blokova u dijeljenoj memoriji i pojedinim priručnim
memorijama
Način osiguravanja kojerentnosti priručne memorije
Koherentan sustav - pravovaljano ažuriranje podataka u dijeljenoj i priručnoj memoriji pri svakom pristupu pojedinog
procesora
korištenog podatka. Takva analiza podataka uvijek će procesorima osigurati trenutni pristup
najpotrebnijim i najčešće korištenim podacima. Iz ovog razloga, operacije učitavanja i pohrane
podataka između dijeljene memorije i priručnih memorija odvijaju se putem blokova podataka,
umjesto pojedinačnih podataka ili riječi (engl. words), kako procesor ne bi morao pristupati
svakoj riječi pojedinačno. Slika 3.1 prikazuje odnos blokova pohranjenih u dijeljenoj memoriji i
njihovih kopija u priručnim memorijama pojedinih procesora. Priručna memorija pohranjuje
pojedine blokove koristeći oznaku (engl. tag), koja sadrži adresu dotičnog bloka u dijeljenoj
memoriji. Svaki blok koji se nalazi u priručnoj memoriji, pohranjen je u obliku retka, ili linije
(engl. line).
Linija sadrži sljedeće elemente:
1. Bit ispravnosti (engl. valid bit, V) koji ukazuje na koherentnost podatka u liniji i bloka
pohranjenog u dijeljenoj memoriji
2. Indeks, koji sadržava adresu linije u priručnoj memoriji
3. Oznaku, s adresom bloka u dijeljenoj memoriji
4. Podatak, koji sastoji od podataka iz dotičnog bloka u dijeljenoj memoriji
Tablica 3.1. Terminologija u opisivanju koherentnosti priručne memorije
51
U sustavima s dijeljenom memorijom, priručna memorija pomaže i u eliminaciji memorijskog
nadmetanja pri kojem dva ili više procesora istovremeno pokušavaju pristupiti istom
memorijskom modulu.
Slika 3.1. Odnos podataka pohranjenih u glavnoj memoriji i njihovih kopija u priručnoj memoriji
(izvor: [1])
Kopije podataka pohranjenih u dijeljenoj memoriji moraju se podudarati s kopijama
pohranjenim u lokalnim priručnim memorijama pojedinih procesora, što se definira kao
koherentnost priručne memorije (engl. cache coherency). Kopije dijeljene varijable će biti
koherentne ukoliko su sve kopije identične. Sukladno tome, priručne memorije će biti
koherentne ukoliko svaka operacija čitanja koju procesor izvrši pronađe vrijednost generiranu
prethodnim pisanjem.
Koherentnost priručne memorije vrlo je bitna, kako bi se zajamčilo točno izvršavanje
programa i osigurale visoke performanse sustava. Pretpostavimo da dva procesora, i ,
koriste istu dijeljenu varijablu koja je pohranjena u njihove dvije različite priručne memorije.
Ukoliko bi modificirao svoju lokalnu vrijednost, mora se osigurati da bude „svjestan“ te
promjene.
Razmotrimo slučaj sustava s dijeljenom memorijom sastavljen od četiri procesora i jednog
memorijskog modula. Tablica 3.2 ilustrira probleme do kojih dolazi kada blok iz dijeljene
52
memorije učitaju svi procesori, a zatim ga jedan ili više procesora modificira. Pretpostavlja se
write-through način ažuriranja podataka (pogledati tablicu 3.1).
Tablica 3.2. Primjer problema koherentnosti priručne memorije s write-through načinom ažuriranja
Tablica 3.3. prikazuje sličan problem, uz korištenje write-back načina ažuriranja podataka.
Sadržaj različitih priručnih memorija u različitim trenucima, prema tablicama 3.2 i 3.3, je
objašnjen u nastavku.
Trenutak 0. Priručna memorija C0 u procesoru P0 učitava blok b za korištenje tijekom obrade
podataka.
Trenutak 1. Isti blok iz dijeljene memorije sada učitavaju i priručne memorije C1 i C3. Sada u
sustavu postoje tri kopije bloka b.
Trenutak 2. Procesor P3 mijenja svoju kopiju b u priručnoj memoriji C3. U ovom trenutku
više ne postoji dosljednost između podataka u dijeljenoj memoriji i podataka u priručnoj
memoriji.
Trenutak 3. P3 izvršava write-through ažuriranje kako bi podatke u C3 i dijeljenoj memoriji
učinio dosljednima.
Trenutak 4. Koji procesor bi trebao ažurirati dijeljenu memoriju (tablica 3.3)? Pri korištenju
write-back načina ažuriranja, to je onaj procesor koji uradi premještanje ili zamjenu bloka iz
priručne memorije. U ovom slučaju, to je procesor P1.
Trenutak 5. Procesor P2 želi učitati blok b, ali središnji kontroler sada obavještava sve
procesore o novoj vrijednosti b1. Što P0 i P3 moraju učiniti? Zamijeniti svoje podatke, ili
obavijestiti dijeljenu memoriju da koriste svoje vlastite verzije bloka b.
C 0 C 1 C 2 C 3
0 b b - - -
1 b b b - b
2 b b b - b 3
3 b 3 b b - b 3
4 b 3 b 3 b 3 - b 3
Procesor P3 modificira svoju kopiju b. Sustav postaje nekoherentan.
Procesor P3 izvršava write-through ažuriranje. Sustav je i dalje
nekoherentan budući da C0 i C1 posjeduju neažurirane kopije.
Kontroler dijeljene memorije ažurira C0 i C1. Sustav je sada koherentan.
Dijeljena
memorijaVrijeme
Priručne memorije
Stanje
Blok b se učitava u C0
Blok b se učitava u C1 i C3
53
Tablica 3.3. Primjer problema koherentnosti priručne memorije s write-back načinom ažuriranja
Jasno je iz prethodne dvije situacije (tablice 3.2 i 3.3) da osiguravanje koherentnosti priručne
memorije predstavlja veliki problem, posebice u višeprocesorskim sustavima. Ispravna
vrijednost memorijskog sadržaja ne bi se smjela definirati prema prvom procesoru koji je učinio
zapisivanje sadržaja svoje priručne memorije u dijeljenu. Na primjer, u tablici 3.2, se vidi da je
P3 prvi učinio ažuriranje bloka b, a zatim su slijedili P0 i P1. Ovo ne mora biti ispravan redoslijed
ažuriranja bloka b u dijeljenoj memoriji, iz razloga što procesori nisu međusobno sinkronizirani i
raspodjela zadataka i dretava u svakom procesoru nije usklađena s istima u nekom drugom
procesoru. Stoga, postavlja se pitanje – koji je ispravan redoslijed ažuriranja bloka b? Dva su
načina koja mogu ponuditi odgovor na to pitanje:
1. Ispravno ažuriranje bloka temeljeno na sekvencijalnom tijeku izvršavanja aplikacije
2. Ispravno ažuriranje bloka temeljeno na međuovisnosti podataka
Sekvencijalni tijek izvršavanja programa podrazumijeva pokretanje programa na
jednoprocesorskom sekvencijalnom stroju, koji ne posjeduje višeprocesne i višedretvene
mogućnosti. Točnost redoslijeda pristupanja i ažuriranja varijabli unaprijed je određena od strane
programera koji je aplikaciju osmislio. Takvog redoslijeda bi se trebalo pridržavati pri
implementaciji iste aplikaciju u višeprocesorskim sustavima, te pri određivanju načina ažuriranja
dijeljene varijable u memoriji i svim priručnim memorijama. Ispravan pristup
priručnoj/dijeljenoj memoriji je osiguran ukoliko su rezultati koji su prikupljeni u paralelnom
sustavu uvijek identični rezultatima prikupljenim u sekvencijalnom sustavu.
Točno ažuriranje bloka b temeljeno na međuovisnostima podrazumijeva definiciju odnosa i
veza među podacima, te korištenje naprednih algoritama raspodjele podataka među različitim
C 0 C 1 C 2 C 3
0 b b - - -
1 b b b - b
2 b b b - b 3
3 b b 0 b 1 - b 3
4 b 1 b 0 b 1 - b 3
5 b 1 ? b 1 b 1 ?
Vrijeme
Priručne memorije
Stanje
Blok b se učitava u C0
Koju vrijednost b je potrebno koristiti da bi se ažurirala dijeljena i
priručna memorija?
Blok b se učitava u C1 i C3
Procesor P3 modificira svoju kopiju b. Sustav postaje nekoherentan.
Procesori P0 i P1 modificiraju svoje kopije bloka b
P1 izvršava write-back ažuriranje prema dijeljenoj memoriji
Dijeljena
memorija
54
priručnim memorijama. Drugim riječima, ukoliko se određeni podatak podijeli na međusobno
ovisne dijelove A, B i C i rasporedi na tri različite priručne memorije, tada će primjerice brisanje
dijela A uzrokovati istovremeno brisanje dijelova B i C iz preostale dvije priručne memorije.
Koherentnost priručne memorije u višeprocesorskim sustavima moguće je osigurati
korištenjem protokola koji će osigurati dosljednost podataka u priručnoj i dijeljenoj memorije.
Dva su osnovna protokola za ostvarivanje koherentnosti priručne memorije:
1. Direktorijski protokoli (engl. directory protocols)
2. Protokoli prisluškivanja (engl. snoopy protocols)
3.1.1. Direktorijski protokoli (directory protocols)
Osnovne komponente uz pomoć kojih direktorijski protokoli osiguravaju koherentnost priručne
memorije prikazane su slikom 3.2 Lokalne priručne memorije, povezane s procesorima,
posjeduju lokalne kontrolere koji koordiniraju ažuriranjem kopija dijeljenih varijabli u pojedinim
priručnim memorijama. Središnji kontroler je zadužen za održavanje koherentnosti priručne
memorije u cijelom sustavu. Direktorij je dio dijeljene memorije što pohranjuje unose koji
označavaju stanje svakog dijeljenog bloka. Struktura svakog unosa u direktoriju ovisi o detaljima
implementacije samog direktorijskog protokola koji se koristi. Također, središnji kontroler
rukuje zahtjevima lokalnih priručnih memorija te je zadužen za pravovremeno obavještavanje
lokalnih kontrolera o svim promjenama stanja dijeljenih varijabli. Međuvezna mreža omogućuje
komunikaciju između kontrolera te između priručnih memorija i dijeljene memorije.
Slika 3.2. Komponente sustava pri korištenju direktorijskih protokola
(izvor: [1])
55
Sljedeća slika prikazuje detalje tzv. full-map direktorijskog protokola. Svaki unos sadrži
bita, gdje označava broj procesora. U konkretnom primjeru sa slike pretpostavljeno je
. Bit s oznakom D ukazuje je li podatak ispravan (0) ili modificiran (1).
Slika 3.3. Model full-map direktorijskog protokola (izvor: [1])
Bit s oznakom X ukazuje je li potrebno svim procesorima (broadcast komunikacija, B)
poslati poruku o ažuriranju podatka, ili se radi o no-broadcast komunikaciji (NB). Iz primjera sa
slike je vidljivo da će, ukoliko je blok koji odgovara prikazanom unosu modificiran, samo
procesori 1 i 4 morati biti obaviješteni o toj promjeni.
Full-map model direktorijskog protokola u svakom trenutku poznaje točne lokacije kopija
dijeljenih blokova. Priručne memorije koje su povezane s tim kopijama su uključene u radnje
kojima se osigurava koherentnost danog podatkovnog bloka. Ipak, ovakvo rješenje nije
fleksibilno budući da se sve transakcije vezane uz koherentnost preusmjeravaju na središnji
kontroler, koji stoga može predstavljati slabu točku sustava. Također, veličina svakog unosa je
izravno proporcionalna o broju procesora i mora se mijenjati s promjenom broja procesora.
3.1.2. Protokoli prisluškivanja (snoopy protocols)
Slika 3.4 prikazuje osnovne komponente pri osiguravanju koherentnosti priručne memorije
pomoću snoopy protokola, odnosno protokola prisluškivanjem.
Može se primijetiti da, u odnosu na prethodno opisane protokole, protokoli prisluškivanja ne
koriste direktorije u dijeljenoj memoriji, kao ni središnji kontroler. O aktivnostima i mjerama
osiguravanja koherentnosti se komunicira između lokalne priručne memorije i dijeljene
memorije. Istovremeno, ovu komunikaciju prate ostale lokalne priručne memorije . Međuvezna
mreža mora biti u stanju podržati broadcast komunikaciju kako bi svi prisutni procesori mogli
pratiti mrežne aktivnosti. Za te svrhe je prikladno korištenje zajedničke sabirnice, budući da svi
56
procesori povezani na sabirnicu mogu na taj način vrlo lako opaziti svaku mrežnu aktivnost. U
sustavima sa sabirnicom, ovi se protokoli često nazivaju i protokolima prisluškivanja sabirnice
(engl. bus snooping protocols). Ipak, valja se podsjetiti, zajednička sabirnica ima vrlo ograničenu
propusnost, zbog mogućnosti obavljanja tek jedne podatkovne transakcije u svakom trenutku.
Slika 3.4. Komponente sustava pri korištenju protokola prisluškivanja (izvor: [1])
Kada određeni procesor izvršava operacije memorijskog pisanja (write), svi ostali procesori
povezani na sabirnicu bit će „svjesni“ te radnje te će imati priliku odlučiti je li ta radnja njima
relevantna ili nije. Operacija pisanja procesora Pi je relevantna procesoru Pj ukoliko taj procesor
posjeduje kopiju bloka b kojemu Pi pristupa. Postoje dvije opcije za Pj, ovisno o njegovoj metodi
ažuriranja priručne memorije. Ukoliko Pj koristi metode poništavanja (engl. invalidation-based
policy), poništit će vlastitu kopiju bloka b čim prisluškivanjem sabirnice uoči da drugi procesor
modificira dotični blok. U slučaju korištenja metode ažuriranjem (engl. updated-based policy),
Pj će vlastitu kopiju b zamijeniti s podacima prisutnima na sabirnici u trenutku ažuriranja
dijeljene memorije od strane nekog drugog procesora.
3.2. Snaga
Kao što je opisano u uvodnom poglavlju, upravljanje troškovima energije i snage postalo je
vodećom poteškoćom i ograničenjem u gotovo svim vrstama računalnih sustava. Ovo se
posebice odnosi na višejezgrene procesorske sustave, budući da oni podrazumijevaju pružanje
visokih performansi uz održavanje relativno niske i ekonomski prihvatljive razine troška
energije.
Kada su višestruke jezgre integrirane na istom čipu, raspoloživi izvor energije mora se dijeliti
sa svim raspoloživim jezgrama i ostalim resursima na čipu. Potrošnja energije je funkcija
kapaciteta, frekvencije sklapanja i kvadrata visine napona. Posljedično, čak i malo sniženje
57
razine napona može rezultirati dramatičnim smanjenjem troška energije. Istovremeno, snižavanje
napona uzrokuje i linearan pad radne frekvencije, a samim time i pad performansi
jednojezgrenog sustava16
. Proizvođači čipova ubrzo su shvatili da mogu žrtvovati nekoliko
stupnjeva brzine (otprilike 10% radne frekvencije) po jezgri kako bi se omogućila proizvodnja
višejezgrenih procesora koji će imati jednaki trošak energije kao i jednojezgreni procesori.
Ipak, s porastom broja jezgara po procesoru, energetska ograničenja postaju sve izraženija.
Na primjer, četverojezgreni procesori moraju dijeliti energetske resurse na četiri jezgre, a
šesterojezgreni na čak šest. U svakom od ovih slučajeva, radni naponi i frekvencija, kao i
performanse pojedinih jezgara, moraju nastaviti opadati kako bi se trošak energije održao pod
nadzorom. Međutim, još je bitnije prepoznati praktično ograničenje CMOS tehnologije u vidu
minimalnog radnog napona (Vddmin). Ako višejezgreni procesori budu nastavili snižavati radne
napone kako bi osigurali prostor za veći broj jezgara, eventualno će dostići ovu granicu. Iza te
točke, redukcija troška snage postaje linearnom funkcijom snižavanja radne frekvencije. Drugim
riječima, jednom kada se postigne razina Vddmin, udvostručavanje broja jezgri po procesoru
rezultirat će otprilike upola nižim radnim frekvencijama.
Postaje jasno da razvoj višejezgrenih procesora podiže potrebe za učinkovitom optimizacijom
energetskih potreba na sasvim nove razine. Određene fine-grain i coarse-grain tehnike
smanjivanja radnog takta (engl. clock gating) postoje u većini današnjih višejezgrenih procesora,
međutim te tehnike zahtijevaju kontinuirano usavršavanje sa svakom novom generacijom
procesora. Također, potrebno je koristiti i tehnike smanjivanja radnog napona (engl. voltage
gating) koje će omogućiti potpuno isključivanje neiskorištenih dijelova procesora (npr. jezgara)
u bilo kojem trenutku. Naravno, primjena ovakvih tehnika podrazumijeva i određene ustupke u
vidu smanjenog odziva sustava te povećanih latentnosti koju uzrokuju ciklusi uključivanja i
isključivanja. Osim toga, ovakvo upravljanje radnim naponima može utjecati i na naponsku
stabilnost cjelokupnog sustava. Svi ovi čimbenici čine pouzdano dizajniranje budućih
višejezgrenih sustava vrlo složenim.
U pojedinim pristupima dizajniranju višejezgrenih procesora, upravljanje energetskim
zahtjevima je podignuto na novu razinu korištenjem dinamičkog rezerviranja snage kao resursa.
U ovakvim sustavima, sustav upravljanja snagom nadzire trošak snage po pojedinim
komponentama sustava, te vrši dinamičku prilagodbu radne frekvencije i napona u ovisnosti o
potrebama promatrane komponente. Ranije izvedbe takvih upravljačkih sustava omogućile su
16 Zanimljivo je spomenuti da su se u prvoj polovini prošlog desetljeća visoke performanse procesora osiguravale
podizanjem napona, dok je današnji trend spuštanje napona.
58
podizanje radne frekvencije jedne jezgre ukoliko bi druge jezgre bile u stanju mirovanja (engl.
idle).
Vjeruje se da upravo ove tehnike, iako složene, predstavljaju vodeći trend pri dizajniranju
novih generacija višejezgrenih procesora.
3.3. Softverski stog
Proširena skalabilnost višeprocesorskih i višejezgrenih sustava, osim novog načina postizanja
visokih performansi, istovremeno znači i potpuno nove zahtjeve na softverski stog. Štoviše,
višejezgreni pristup može omogućiti bolji odziv i propusnost sustava, brže izvođenje zadataka, te
veću učinkovitost u izvršavanju višedretvenih aplikacija – ali isključivo ako ta poboljšanja mogu
omogućiti softverski stog i alati. U ovom potpoglavlju, bit će razmotreno nekoliko ključnih
stavki u softverskom stogu.
3.3.1. Operativni sustav
Kernel, odnosno jezgra operativnog sustava (OS) je zadužena za upravljanje resursima,
raspoređivanje (engl. scheduling), umrežavanje, integraciju komponenti i upravljanje
mnogobrojnim sklopovskim sučeljima niže razine. Dok mnogi suvremeni OS-i uvelike koriste
vremenski raspoređenu višezadaćnost (engl. time-sliced multitasking), dodatak višestrukih
procesora i jezgara dodaje sasvim novu dimenziju područja djelovanja kojim OS mora upravljati.
U unutrašnjosti OS-a, nekoliko ključnih podatkovnih struktura OS-u pomaže pratiti nadzor
nad dinamičkim stanjem računalnog sustava. Podatkovne strukture (engl. data structures)
upravljaju raspoređivanjem procesa, migracijom procesa, prijevodima virtualne memorije,
granicama zaštite, ulazno/izlaznim zahtjevima te ostalim oblicima raspodjele resursa. U
simetričnim višeprocesorskim sustavima, OS se može raditi na bilo kojem procesoru u sustavu, a
u pojedinim slučajevima, OS može raditi i na svim dostupnim procesorima u sustavu. Da bi se u
ovakvim situacijama izbjeglo podatkovno nadmetanje (engl. data races) na ključnim
podatkovnim strukturama, te kako bi se dotične podatkovne strukture zaštitile, OS upotrebljava
mehanizme zaključavanja, tzv. brave (engl. locks). S porastom broja procesora u sustavu, raste i
potencijalni broj nadmetanja na bravama tih ključnih podatkovnih struktura, što može ugroziti
cjelokupnu stabilnost i propusnost sustava.
59
Da bi riješili ovakve poteškoće, suvremeni operativni sustavi moraju biti usmjereni korištenju
sofisticiranijih brava na ključnim podatkovnim strukturama. Prošlost i iskustvo pokazali su da
ostvarivanje prikladne optimizacije na takvim sofisticiranim bravama nije nimalo trivijalan
zadatak. Napredni operativni sustavi pokazuju brojne napretke u skalabilnosti i općim
performansama, međutim, za postizanje takve razine potrebne su godine usavršavanja i finih
podešavanja od strane mnogobrojnih stručnjaka, a izazovi postaju još složeniji sa svakom novom
i naprednijom generacijom višeprocesorskih sustava.
Osim podatkovnih struktura, moraju se usavršiti i mehanizmi raspoređivanja (engl.
schedulers) unutar operativnog sustava. Umjesto vremenskog raspoređivanja aktivnog procesa
na jednoj CPU jedinici, ovi mehanizmi sada moraju „shvatiti“ kako otpremati, te kako upravljati
višestrukim procesima na većem broju CPU jedinica. Relativno mali broj procesora ponudit će
značajni napredak u razini odziva sustava. Međutim, kod vrlo velikog broja procesora, sam
mehanizam raspoređivanja može postati kritična točka zbog nemogućnosti da u istom trenutku
rasporedi mnogobrojne aktivne procese.
Štoviše, dostupnost višestrukih procesora u sustavu otvara vrata i paralelnim aplikacijama
koje, pored procesa, postavljaju dodatne zahtjeve na mehanizme raspoređivanja. U idealnom
slučaju, ove aplikacije podrazumijevaju istovremeno odvijanje višestrukih dretvi na različitim
procesorima ili jezgrama. Međutim, da bi se osiguralo optimalno izvršavanje paralelnih
aplikacija, potrebno je implementirati naprednije metode dinamičke raspodjele i preraspodjele
resursa, kao i mogućnosti grupnog raspoređivanja.
U svjetlu navedenih rastućih zahtjeva, može se zaključiti da će operativni sustavi posebnu
pažnju morati posvetiti arhitekturi i strukturi mehanizama raspoređivanja u budućim
višeprocesorskim i višejezgrenim sustavima.
3.3.2. Aplikacijski softver
U višeprocesorskim sustavima, više aplikacija bi trebalo biti u mogućnosti koristiti prednosti
pravog paralelnog procesiranja. Međutim, razvoj i osiguravanje kvalitete paralelnih aplikacija
vrlo je teško, iz nekoliko razloga. Prvo, iako su tehnike paralelnog programiranja danas već vrlo
razvijene, polazišna točka većine programera i dalje je vezana uz serijske programe. Naime,
izuzetno je teško, čak i neprirodno, program koji je prvotno osmišljen i realiziran kao serijski,
pretvoriti u paralelni oblik. Kao što je ranije spomenuto, Amdahlov zakon, formuliran 1960.,
tvrdi da je maksimalno ubrzanje izvođenja programa pomoću većeg broja procesora ograničeno
60
njegovom sekvencijalnom, odnosno serijskom frakcijom. Na primjer, ukoliko 80% programa
može biti paralelizirano, maksimalno ubrzanje može biti 5, bez obzira koliko je velik broj
procesora prisutan u sustavu (izraz (2.7)). Drugo, zbog nedeterminizma u interakciji dretava, vrlo
je teško utvrditi da će svi programi biti točni pod različitim okolnostima. Treće, optimiziranje
paralelnih programa je vrlo složeno zbog među-dretvene sinkronizacije i komunikacije.
Ispostavlja se da su primitivi17
koji čine paralelne programe jedni od najsporijih i, što je ironično,
u najvećoj mjeri serijski izvedeni upravo u suvremenim računalnim sustavima. Iako su se
tijekom proteklih godina učinili značajni pomaci nabolje u razvoju paralelnih aplikacija, svjetska
računalna industrija je još uvijek u velikoj mjeri nespremna za širi razvoj potpuno paralelnih
aplikacija.
17 U računalstvu, primitivi su najjednostavniji elementi dostupni u programskom jeziku. Primitiv se može definirati
kao „najmanja procesna jedinica“ određenog sustava, koja je dostupna programeru.
61
4. IMPLEMENTACIJE VIŠEJEZGRENIH PROCESORA
Kao i kod ostalih tehnologija, implementacije višejezgrenih arhitektura se uvelike razlikuju od
proizvođača do proizvođača. Iako pripadaju istoj tehnologiji, različiti pristupi u dizajniranju
procesorskih mikroarhitektura rezultirat će u konačnici potpuno različitim proizvodima.
Budući da je područje višejezgrenih procesorskih arhitektura mnogo kompleksnije i šire no
što bi ga i cijeli ovakav rad mogao obuhvatiti, ovo poglavlje će predstaviti jednostavan pregled
suvremenih mikroarhitektura višejezgrenih procesora te njihovih osnovnih i najzanimljivijih
karakteristika, ali i ponuditi uvid u trendove razvoja na području višejezgrenih procesora te
pokušati otkriti što donosi budućnost višeprocesorskih računalnih sustava.
4.1. Osnove IBM Cell arhitekture
Cell arhitektura, punim imenom Cell Broadband Engine Architecture, udruženi je projekt IBM-a,
Sony-a i Toshibe, započeo s razvojem 2000. godine. Namjera je bila definirati arhitekturu Sony-
eve igraće konzole PlayStation 3, koja je trebala biti dva reda magnitude brža od tada vrlo
popularne konzole Playstation 2.
Cell arhitektura koristi heterogenu višejezgrenu procesorsku konfiguraciju, što znači da
umjesto konvencionalnih višenamjenskih jezgara, koje su identične, Cell arhitektura koristi dva
tipa jezgri koje su optimizirane za različite primjene: veliku upravljačku jezgru, koja se ističe
naprednim rukovanjem dretvama, te je stoga prikladna za uporabu s operativnim sustavom, i niz
manjih, jednostavnih SIMD jezgara zaduženih za procesiranje multimedijskih zadataka.
Ovakvom konfiguracijom, svaka jezgra ima svoju posebnu zadaću, kojoj u potpunosti može
posvetiti svoju procesorsku snagu.
4.1.1. Struktura Cell procesora
Heterogena Cell arhitektura u osnovi se sastoji od jedne upravljačke procesorske jezgre, Power
Processor Element (PPE), i 8 računskih procesorskih jezgara, Synergistic Processing Element
(SPE) s pripadajućim lokalnim spremnicima, Local Storage (LS). Sabirnica velike brzine, zvana
62
Element Interconnect Bus (EIB), koristi se za međusobno povezivanje ovih procesora unutar Cell
arhitekture, te za vezu procesora s glavnom memorijom i vanjskim ulazno/izlaznim jedinicama.
Slika 4.1. Struktura Cell procesora (izvor: [2])
Detalji svakog elementa strukture opisani su u nastavku.
4.1.2. Power Processor Element (PPE)
PPE implementiran u Cell arhitekturi je procesor opće namjene, radne frekvencije 3.2 GHz, s
funkcijama ekvivalentnim onima u 64-bitnoj Power PC arhitekturi18
. Poput konvencionalnih
procesora, PPE omogućuje izvršavanje operativnog sustava i aplikacija, te ulazno/izlaznu
komunikaciju i upravljanje kada procesor pristupa glavnoj memoriji i vanjskim jedinicama, ali i
koordinira radom dostupnih SPE jedinica.
4.1.3. Synergistic Processing Elements (SPE)
Osam sinergističkih SPE elemenata je dizajnirano kako bi optimiziralo SIMD procesiranje. SPE
se sastoji od izvršne jedinice koja izvršava dodijeljene zadatke– Synergistic Execution Unit
18 Power PC (Performance Optimization With Enhanced RISC – Performance Computing) – RISC arhitektura
dizajnirana 1992. u udruženom Apple-IBM-Motorola projektu.
63
(SXU), lokalnog spremnika – Local Store (LS), koji nije priručna memorija, te od globalne
memorije i sabirničkih sučelja za izravni pristup memoriji (Direct Memory Access, DMA).
SPE su mnogo jednostavnije procesorske jedinice od PPE elemenata, budući da nisu
dizajnirane za izvršavanje upravljačkih zadaća, već isključivo za obavljanje jednostavnih
operacija nužnih za procesiranje multimedijskih podataka.
Lokalni spremnik, LS, veličine 256 KB je programibilna lokalna memorija koja se koristi
umjesto priručne iz nekoliko razloga. Prvo, može se bolje optimizirati za protočne namjene, tj. za
rukovanje velikim brojem sekvencijalnih podataka putem programiranih blokovskih prijenosa iz
glavne memorije. Drugo, sama fizička veličina (veličina čipa) ovakve memorije upola je manja
od ekvivalentne priručne memorije, jer je pristupna i upravljačka logika pojednostavljena i nema
potrebe za korištenjem oznaka (tags). Treće, u usporedbi s priručnom memorijom, programibilni
DMA omogućuje konkurentnost većeg broja različitih programa. Naime, lokalni spremnik
uključuje uski (16 byte) i široki (128 byte) podatkovni tok. Uski podatkovni tok namijenjen je
izravnoj učitaj-pohrani komunikaciji s izvršnom SXU jedinicom; široki podatkovni tok koristi se
za istovremeni prihvat instrukcija, te DMA transakcije s glavnom memorijom, PPE elementom, i
ostalim SPE elementima.
4.1.4. Element Interconnect Bus (EIB)
Sva komunikacija između PPE i osam SPE elemenata, memorijskog kontrolera, te
ulazno/izlaznih sučelja, odvija se putem sabirnice koja se naziva Element Interconnect Bus
(EIB). Sabirnica je donekle nepravilan naziv za ovakav pristup, budući da se EIB sastoji od četiri
kružna prstena, po dva za komunikaciju u suprotnim smjerovima.
Slika 4.2. Element Interconnect Bus (izvor: [20])
64
Svaki prsten može podržavati do tri transakcije istovremeno, pod pretpostavkom da su
pravilno razmaknute (korištenjem prikladnih metoda multipleksiranja). Svakom se transakcijom
može prenijeti 16 byte-ova podataka, radnim taktom dvostruko manjim od procesorskog.
Teoretski, propusnost EIB je
byte-ova podataka po procesorskom taktu. Ipak, u
stvarnosti se takva propusnost ne može dostići zbog različitih ograničavajućih čimbenika, poput
konfliktnih transakcija i fizičkih ograničenja ulazno/izlaznih sučelja i memorijskog kontrolera.
4.2. Intel Nehalem
Nehalem je naziv Intelove mikroarhitekture višejezgrenih procesora iz 2008. godine. Procesori
bazirani na ovoj mikroarhitekturi predviđeni su za uporabu u računalima opće namjene, tj.
osobnim i prijenosnim računalima, ali i u posebnim namjenama, poput serverskih platformi.
U odnosnu na prethodne višejezgrene mikroarhitekture, imenom Core, Nehalem
mikroarhitektura posjeduje integrirani memorijski kontroler s podrškom 3 DDR3 kanala, tri
razine priručne memorije, obnovljenu Hyper-Threading tehnologiju, novu vanjsku sabirnicu pod
imenom QuickPath, i ostale novosti koje će biti predstavljene u nastavku.
Osnovne značajke Nehalem mikroarhitekture, od kojih će one najbitnije biti detaljnije
opisane u nastavku, sažete su u sljedećoj listi:
Bazirana na Intel Core mikroarhitekturi
Dvije do osam jezgara
Integrirani trokanalni DDR3 memorijski kontroler
Zasebna L2 priručna memorija veličine 256 KB po jezgri
8 MB priručne memorije treće razine, L3
Novi SS4 4.2 set instrukcija (sedam novih instrukcija)
Obnovljena Hyper-Threading tehnologija
Turbo Boost način rada (automatsko podizanje radnog takta procesora)
Nova QuickPath vanjska sabirnica
PCU upravljačka jedinica (power control unit)
Proizvodni proces u 45 nm tehnologiji, odnosno 32 nm za buduće procesore (Westmere
arhitektura)
Novi 1366 pinski socket
65
4.2.1. Integrirani memorijski kontroler
Još od najranijih procesora, Intelova rješenja su koristila vanjsku sabirnicu, zvanu Front Side Bus
(FSB), koja je bila dijeljena između memorijskih i ulazno/izlaznih zahtjeva. Međutim,
višejezgrene arhitekture zbog same svoje paralelne prirode mogu propusnost zajedničke
sabirnice opteretiti znatno više od jednojezgrenih, stoga je bilo potrebno pronaći novi pristup.
Procesori bazirani na Nehalem mikroarhitekturi koriste ugrađene, tj. integrirane memorijske
kontrolere i stoga raspolažu s dvije vanjske sabirnice: memorijskom sabirnicom za povezivanje
CPU jedinica s memorijom, i I/O sabirnicu za povezivanje CPU jedinica s ulazno/izlaznim
sučeljem, odnosno „vanjskim svijetom“.
Ova promjena donosi značajno poboljšanje performansi sustava, iz dva razloga. Prvo, sada
postoje razdvojeni podatkovni tokovi za memorijske i ulazno/izlazne pristupe čime je osigurana
veća propusnost. Drugo, pristup memoriji je mnogo brži, budući da CPU ne mora više
komunicirati s vanjskim memorijskim kontrolerom. Slika 4.1 uspoređuje konvencionalan
pristup, s jednom vanjskom sabirnicom, te novi trend s korištenjem dvije vanjske sabirnice i
integriranim memorijskim kontrolerom. Valja pritom napomenuti da ova tehnologija, strogo
gledano, ustvari ne predstavlja način komunikacije sabirnicom, već P2P (point-to-point) vezama.
Novo rješenje, pod nazivom QuickPath Inteconnect (QPI), osigurava dva odvojena
podatkovna toka što CPU jedinici omogućuje da istovremeno šalje („piše“) i prima („čita“)
ulazno/izlazne podatke.
Svaki od tokova može prenositi 20 bitova u taktu. Od tih 20 bitova, 16 bitova sačinjava
podatak, dok se preostala 4 bita koriste za CRC korekcijski kod (Cyclic Redundancy Check), koji
primatelju omogućuje da provjeri ispravnost primljenog podatka.
Najranija verzija QuickPath-a imala je radni takt od 3.2 GHz, šaljući dva podatka po taktu
(tehnika poznata kao DDR, Double Data Rate), što je ekvivalentno korištenju radnog takta od
6.4 GHz za slanje pojedinačnih podataka. Budući da se šalje 16 bita po taktu, maksimalna
teoretska brzina prijenosa iznosi 12.8 GB/s po toku ( ). Teoretski, takva
brzina prijenosa odgovara brzini FSB sabirnice, međutim dok se FSB sabirnica istovremeno
koristi svu međuprocesorsku i ulazno/izlaznu komunikaciju, te pristupe memoriji, kod QPI
pristupa ti su zadaci podijeljeni na zasebne tokove.
66
Slika 4.3. FSB sabirnica (lijevo) i integrirani memorijski kontroler (desno) (izvor: [13])
Integrirani memorijski kontroler omogućuje podršku za tri memorijska kanala istovremeno,
što znači da procesor može paralelno pristupiti trima memorijskim modulima, kako bi se
osiguralo poboljšanje performansi u sustavu. U teoriji, trokanalna memorijska arhitektura nudi
50% povećanje propusnosti, u odnosu na dvokanalne arhitekture koje djeluju na istim radnim
frekvencijama.
4.2.2. Tri razine priručne memorije
Dvorazinske hijerarhije priručne memorije, kojima su se koristili raniji dvojezgreni procesori,
nisu prikladne za višejezgrene procesore koji sadrže više od dvije jezgre. Naime, u takvim
hijerarhijama, L2 priručna memorija je zajednička svim procesorima, odnosno jezgrama.
Intuitivno se nameće zaključak da kod takvih pristupa može doći do velikih poteškoća ukoliko
dijeljenoj memoriji istovremeno pristupa velik broj procesora – zagušenje sabirnica, prevelik
broj memorijskih nadmetanja, koherentnost priručne memorije, niska propusnost – tek su neki od
problema s kojima bi se ovakve arhitekture susrele.
Nehalem mikroarhitektura te poteškoće izbjegava korištenjem nove razine priručne
memorije. L2 memorija sada se dodjeljuje svakoj dostupnoj jezgri, i uz L1 postaje privatna
priručna memorija, dok najniže mjesto u hijerarhiji zauzima nova razina priručne memorije – L3
memorija. L3 memorija zajednička je svim jezgrama i koristi se za međuprocesorsku
komunikaciju i ažuriranje dijeljenih podataka. Također, ova memorija uključuje i sadržaje
privatnih memorija, što znači da procesori ne moraju posezati za određenim podatkom u privatnu
priručnu memoriju drugog procesora, već je sav sadržaj dostupan na zajedničkoj L3 memoriji.
67
Drugim riječima, ukoliko određeni procesor ne pronađe traženi podatak u L3 memoriji, ne mora
tražiti ni u privatnim memorijama ostalih procesora, što znatno ubrzava rad u ovakvim
arhitekturama. Naravno, L3 memorija ne sadržava cjelovite podatke pojedinih privatnih
memorija, već samo određene bitove – točnije, po bit za svaku jezgru – koji će ukazivati na
lokaciju traženog podatka.
Slika 4.4. Razine priručne memorije u Nehalem mikroarhitekturi
Ova tehnika ujedno osigurava i koherentnost privatnih priručnih memorija budući da
ograničava potrebu za razmjenom podataka između procesora. Kao što se može primijetiti, kod
ovakvog pristupa postoji izvjesna redundancija, budući da se sadržaj privatnih priručnih
memorija ponovno pohranjuje u L3 memoriji, no taj se nedostatak donekle može zanemariti
veličinom L3 memorije u usporedbi s privatnim memorijama – svi podaci u privatnim
memorijama četverojezgrenog procesora zauzet će tek 1,25 MB od ukupno 8 MB veličine kojom
L3 raspolaže.
4.2.3. Upravljanje snagom
Jednu od poteškoća prilikom dizajniranja procesora svakako predstavljaju struje curenja. Struje
curenja se pojavljuju kod tranzistora, koji su primarni gradivni element svakog procesora.
Naime, tranzistori u procesorima se ponašaju kao sklopke koje djeluju kroz dva stanja: stanje
68
Slika 4.5. Power Gate tehnika
(izvor: [13])
vođenja (zasićenja) kada vode struju i stanje zapiranja kada nema protoka struje. Problem
predstavlja upravo stanje zapiranja, kada teoretski ne bi smjelo doći do pojave bilo kakvog
protoka struje. Ipak, u stvarnim okolnostima dolazi do protoka vrlo slabih struja koje nazivamo
strujama curenja. Uzevši u obzir enorman broj tranzistora od kojih je procesor izgrađen,
kumulativan utjecaj ovakvih struja može biti značajan, te dolazi do neželjenih pojava u vidu
suvišne disipacije snage i topline, a problem postaje još i veći sa sve manjim dimenzijama
tranzistora.
Kako bi izbjegla takve poteškoće, Nehalem arhitektura posjeduje napredne mehanizme
upravljanja naponom i snagom procesora, u obliku PCU jedinice (Power Control Unit) Power
Gate jedinice koje su integrirane u sklopu samog procesora. Upravljačka jedinica u osnovi
dinamički upravlja visinama napona pojedinih jezgara, ali i ostalih komponenata, poput
memorijskog kontrolera, priručnih memorija i ulazno/izlaznih jedinica. U prethodnim
arhitekturama, sve su jezgre morale raditi na istom radnom taktu, no procesori bazirani na
Nehalem arhitekturi posjeduju modularne jezgre koje svoje radne taktove mogu prilagoditi
opsegu radnog opterećenja. Štoviše, upravljačka jedinici može po potrebi u potpunosti isključiti
pojedine jezgre, koje su u stanju mirovanja. S druge strane, Power Gate tehnika, u odnosu na
Clock Gate tehniku iz prethodnih arhitektura, eliminira gubitke uzrokovane strujama curenja i
omogućuje da jezgre u stanju mirovanja generiraju zanemarive troškove snage, gotovo jednake
nuli.
Kao što je ranije spomenuto, struje curenja postaju sve veći problem sa svakim novim
smanjenjem dimenzija tranzistora, odnosno duljina kanala, te Power Gate tehnologija
upravljanja snagom postaje esencijalnom komponentom svake nove generacije procesora.
69
4.2.4. Turbo Boost
Napredno upravljanje snagom i Power Gate, obje prethodno opisane metode, osnovne su
komponente Intelove Turbo Boost tehnologije. Turbo Boost način rada se koristi kada je
operativnom sustavu potrebno osigurati bolje performanse, odnosno, jednostavnije rečeno, više
snage. Intelov Turbo Boost tada, uz pomoć Power Gate tehnike i PCU jedinica podiže radnu
frekvenciju aktivnih jezgara (ali i potrošnju snage) i njihovu učinkovitost, a samim time i ukupnu
učinkovitost sustava.
Slika 4.6. Turbo Boost način optimizacije (izvor: [13])
Ovakva poboljšanja mogu pružiti rast performansi od 3% do 11%, što nije mnogo, međutim
može biti od velike važnosti u aplikacijama koje posjeduju malenu, ili nikakvu, razinu
višedretvenosti, i gdje se ne mogu sve jezgre koristiti usporedno. Frekvencija se podiže
inkrementalno, u koracima od 133 MHz, do granice koja je određena mnogo puta dosada
spomenutim poteškoćama – disipacijom snage i topline.
4.2.5. Hyper-Threading tehnologija
Intelova Hyper-Threading tehnologija omogućava istodobno izvršavanje višestrukih dretava na
pojedinoj jezgri. Točnije, u slučaju Nehalem arhitekture, Hyper-Threading omogućuje
istovremeno izvršavanje dvije dretve po jezgri, te na taj način poboljšava performanse i
energetsku učinkovitost sustava.
70
Slika 4.7. Hyper-Threading tehnologija (izvor: [13])
Osnovna zamisao ove tehnologije jest što bolje iskoristiti složenost svake jezgre, odnosno
razinu paralelizma koju ovakve arhitekture nude, kako bi procesorske jezgre bile konstantno
zaposlene". Umjesto korištenja preklopljenih, zajedničkih dretvi, svaka jezgra sada može
izvršavati dvije zasebne dretve, što uvelike povećava učinkovitost i iskoristivost sustava u
teškim, višedretvenim primjenama.
Pregledom opisanih značajki Nehalem mikroarhitekture, može se zaključiti da se radi o vrlo
modularnom rješenju, čije osobine i parametri nisu jednoznačno definirani, već se na
inteligentan način dinamički prilagođavaju prisutnom radnom opterećenju.
4.3. AMD Bulldozer arhitektura
Arhitektura kodnog imena Bulldozer, najnovija je arhitektura tvrtke AMD19
, potpuno različita od
trenutne AMD64 arhitekture koja je u uporabi još od prvog Athlon 64 procesora iz 2003. godine.
U ovome odjeljku bit će na jednostavan način objašnjeno kako ova nova arhitektura izgleda, te
koja je njezina osnovna značajka.
19 AMD – Advanced Micro Devices, poput Intela, proizvođač popularnih procesorskih rješenja za osobna i
prijenosna računala, te servere.
71
4.3.1. Gradivni „višejezgreni“ moduli
AMD je kod svoje najnovije, Bulldozer arhitekture, odlučio uzeti potpuno novi pristup pri
dizajniranju višejezgrenih procesora. Nova arhitektura u potpunosti je usmjerena većem stupnju
integracije i dijeljenju resursa unutar višejezgrenih procesora u najvećoj mogućoj mjeri, kako bi
se osigurale visoke performanse, a istodobno smanjile dimenzije samih čipova i troškovi
energije.
Slika 4.8. Gradivni modul AMD Bulldozer arhitekture (izvor: [16])
Tradicionalan pristup dizajniranju višejezgrenih procesora je vrlo jasan: svaka jezgra djeluje kao
samostalna jedinica i s ostalim jezgrama dijeli samo najnužnije: sabirnicu, memorijski kontroler,
L3 priručnu memoriju i slično. Međutim, kod Bulldozer arhitekture, jezgre dinamički dijele
blokove za prihvat i dekodiranje instrukcija, priručne memorije i ostale jedinice.
Temelj arhitekture čini „dvojezgreni“ modul, koji se sastoji od dvije Integer izvršne jedinice,
odnosno „jezgre“ (dijele funkcionalnosti prihvata, dekodiranja i L2 memorije) s dodijeljenim
jedinicama za raspoređivanje (engl. schedulers), te dvije 128-bitne FMAC „cijevi“ s jednom FP
(Floating Point) jedinicom za raspoređivanje. Bitno je napomenuti da, iako AMD ovakve
module naziva dvojezgrenim CPU jedinicama, ustvari se ne radi o klasičnom dvojezgrenom
procesoru, jer ne postoje dvije cjelovite CPU jedinice u istom procesorskom kućištu.
Integer izvršne jedinice su dvije potpuno identične grupe sastavljene od AGU i ALU jedinica.
Kao što se iz naziva može zaključiti (engl. Integer – cjelobrojni), ove jedinice izvršavat će
većinu cjelobrojnih operacija u sustavu. Točnije, AGU jedinice (Adress Generation Unit,
72
jedinica za generiranje adresa) izvršavat će kalkulacije adresa koje će zatim slati u hijerarhiju
priručne memorije, dok će ALU jedinice (Arithmetic Logic Unit, aritmetičko-logička jedinica)
izvršavati cjelobrojne operacije u sustavu.
Slično kao Integer izvršne jedinice, FP jedinice zadužene su za raspoređivanje operacija s
pomičnim zarezom, a srce tog bloka čine dvije FMAC jedinice (Floating point Multiply-
Accumulate) koje su sposobne izvršavati 128 bitne floating point operacije, zajedno s
operacijama korijena i dijeljenja.
Priručna memorija je, kao i kod Intelove Nehalem arhitekture, organizirana u 3 razine, s time
da se L1 i L2 nalaze na modulu i L2 je dijeljen između jezgara, a L3 memorija je izvan modula i
ona je zajednička svim modulima.
Ovakav „dvojezgreni“ modul neće biti učinkovit kao dvije tradicionalne jezgre, ali će trošiti
znatno manje snage te zahtijevati manje prostora na čipu, što znači da će proizvođači moći
implementirati više takvih modula unutar istog procesorskog kućišta. Navedene karakteristike
čine Bulldozer arhitekturu vrlo skalabilnom – dva Bulldozer modula, koja bi s konvencionalnim
pristupom činila dvojezgreni procesor, sada čine „četverojezgreni“.
4.4. Intel Sandy Bridge – korak u budućnost
Sandy Bridge je ime najnovije mikroarhitekture Intelovih procesora koja je s primjenom
započela 2011. godine. Radi se o evoluciji opisane Nehalem arhitekture, koja je korištena u
popularnim Core i3, Core i5 i Core i7 procesorima.
Budući da se radi o posljednjoj Intelovoj višeprocesorskoj arhitekturi, vrijedi učiniti kratak
pregled rješenja koja su joj prethodila. Nakon Pentium 4 procesora, koji je bio temeljen na
Intelovoj mikroarhitekturi sedme generacije, imenom Netburst, Intel je odlučio vratiti se svojoj
šestoj generaciji arhitekture (korištenoj na Pentium Pro, Pentium II i Pentium III procesorima)
koja se pokazala učinkovitijom. Iz te mikroarhitekture, Intel je razvio Core arhitekturu koja se je
koristila u popularnoj seriji Core 2 procesora (Core 2 Duo, Core 2 Quad i slični). Nakon daljnjih
usavršavanja, stvorena je Nehalem arhitektura, a iz nje zatim i najnovija Sandy Bridge
mikroarhitektura.
Sa svakom novom generacijom Intelovih procesora, do izražaja dolazi njihova Tick-Tock
strategija. Princip je u stvari krajnje jednostavan: Intel naizmjenično usavršava svoje proizvode,
najčešće u razdobljima od dvije godine, koristeći potpuno novu mikroarhitekturu, ili evoluciju
73
trenutnog proizvodnog procesa (nanometarske tehnologije). Tick pritom označava usavršeni
(smanjeni) proizvodni proces, a Tock predstavljanje potpuno nove mikroarhitekture. Drugim
riječima, ukoliko je nova Nehalem mikroarhitektura bila predstavljena 2008. godine (Tock), u 45
nanometarskom proizvodnom procesu, a 2010. su se počeli proizvoditi Westmere procesori
temeljeni na istoj mikroarhitekturi, ali u 32 nanometarskom procesu (Tick), sada je red na
potpuno novu mikroarhitekturu – Sandy Bridge (Tock). Istovremeno, to znači da će sljedeća
generacija procesora biti temeljena na Sandy Bridge mikroarhitekturi, ali će biti izrađeni u
manjem proizvodnom procesu od trenutnog 32 nm procesa.
Slika 4.9. Intelova Tick-Tock strategija (izvor: [13])
U nastavku se nalazi sažetak osnovnih značajki Sandy Bridge mikroarhitekture (slika 4.10), od
kojih će pojedine biti detaljnije opisane:
Integrirani sjeverni most (engl. northbridge) – memorijski, grafički i PCI Express
kontroler nalazi se na istom čipu s ostatkom CPU jedinice, što nije bio slučaj kod
prethodne, Nehalem arhitekture
32 nm proizvodni proces
Integrirana grafička procesna jedinica
Ring arhitektura
Mikroinstrukcijska priručna memorija L0, veličine 6 kB, što je dostatno za pohranu 1536
mikroinstrukcija
32 kB instrukcijske i 32 kB podatkovne priručne memorije po jezgri (bez promjene u
odnosu na Nehalem)
74
L2 priručna memorija se sada zove „priručnom memorijom srednje razine“ (engl. mid-
level cache, MLS) i veličine je 256 kB po jezgri.
L3 priručna memorija postaje „priručnom memorijom posljednje razine“ (engl. last-level
cache, LLC), dijeljena između CPU jezgri i grafičke jedinice. Veličine je od 3 MB do 15
MB, ovisno o izvedbi procesora, i podijeljena je u blokove jednakih veličina
Turbo Boost tehnologija nove generacije
Novi AVX (Advanced Vector Extensions) set instrukcija
1155 pinski socket
4.4.1. Ring arhitektura
Trend povećanog stupnja integracije, koji je Intel započeo s Nehalem mikroarhitekturom,
zahtijeva i naprednije oblike komunikacije među komponentama u procesoru. Naime,
konvencionalne sabirnice nisu dostatno rješenje za najnoviju, Sandy Bridge mikroarhitekturu,
koja na istom čipu integrira procesorske i grafičke jezgre, priručne memorije i odgovarajuće
kontrolere.
Procesori bazirani na Sandy Bridge mikroarhitekturi stoga koriste Ring arhitekturu za
ostvarivanje komunikacije među internim procesorskim komponentama. Komunikaciju ovakvom
prstenastom sabirnicom mogu koristiti sve komponente integrirane u Sandy Bridge procesoru:
procesorske jezgre s pripadajućim priručnim memorijama, L3, odnosno LLC priručne memorije,
System Agent (integracija memorijskog i PCI Express kontrolera, PCU jedinice (display
jedinice), te grafička jezgra (kontroler).
Slika 4.10 prikazuje Intelovu Ring arhitekturu (crna linija) sa svojim „stanicama“ (crveni
pravokutnici). Važno je shvatiti da je Ring arhitektura fizički smještena iznad blokova LLC
memorije, iako bi se prema slici mogao steći dojam da prsten prolazi kroz memoriju, što nije
slučaj.
Također, svaki LLC blok nije jednoznačno vezan uz određenu procesorsku jezgru – svaka
jezgra može koristiti bilo koji blok LLC memorije.
Ring arhitektura ustvari se sastoji od četiri prstena: podatkovnog prstena (engl. data ring),
prstena za zahtjeve (engl. request ring), prstena za potvrde (engl. acknowledgement ring), te
prstena za prisluškivanje kanala (engl. snoop ring). Arhitektura se temelji na ranije opisanom
QPI protokolu (QuickPath InterConnect).
75
Slika 4.10. Sandy Bridge mikroarhitektura s pripadajućom Ring prstenastom sabirnicom (izvor: [13])
4.4.2. Nova generacija Turbo Boost tehnologije
Sandy Bridge mikroarhitektura uvela je i određene novosti u Turbo Boost tehnologiju, opisanu
kod pregleda Nehalem mikroarhitekture.
Kao što je opisano, Turbo Boost tehnologija omogućuje automatsko podizanje radnog takta
procesora, u cilju postizanja boljih performansi kada je to potrebno. Dok je kod prethodne
izvedbe takvo podizanje radnog takta bilo dozvoljeno samo do definiranih granica disipacije
snage i topline, tj. do definiranog TDP (Thermal Design Power), nova verzija omogućuje jezgri
da prekorači tu granicu, u trajanju do 25 sekundi. Drugim riječima, pojedinoj jezgri je
dozvoljeno da disipira više topline, no što je to službeno dozvoljeno, ali samo u slučajevima kada
su procesorske komponente, tj. procesor u cjelini, dovoljno ohlađene.
4.4.3. Integrirani grafički procesor
Integrirani grafički procesori unutar CPU jedinica nisu novost. Međutim, tek sa novom, Sandy
Bridge mikroarhitekturom, grafički procesori su u potpunosti integrirani s procesorskim
jezgrama i ostalim komponentama na istom silicijskom čipu, s mogućnošću korištenja
zajedničke prstenaste sabirnice u svrhu međusobne komunikacije. Usporedbe radi, prethodna
rješenja su koristila zasebne procesorske jezgre i grafičke module unutar istog CPU kućišta, što
ih je činilo tek „prividno“ integriranima.
76
Slika 4.11. Sandy Bridge integrirana grafička jedinica (izvor [13])
Primarni element grafičkog procesora su izvršne jedinice (engl. execution units, EU na slici
4.9) čiji broj ovisi o samoj izvedbi procesora (na primjer, Core i5 procesori će imati više izvršnih
jedinica od slabijih, Core i3 procesora). Općenito, Sandy Bridge procesori mogu sadržavati do
12 grafičkih izvršnih jedinica.
Također, pomnijim proučavanjem slika 4.8 i 4.9, može se uočiti da se „Display“ i „Graphics“
jedinice nalaze u zasebnim dijelovima procesora. Takva organizacija može se protumačiti kao
„2D“ i „3D“ konfiguriranje procesora, koje omogućuje da se grafički (Graphics) procesor
isključi kada grafički zahtjevne, ili 3D, aplikacije nisu prisutne, i na taj način smanji disipaciju
snage i topline.
Sljedeća karakteristika ovakve inovacije jest izravan pristup grafičkog procesora dijeljenoj
LLC memoriji. Na taj način grafički procesor može pohraniti podatke, posebice teksture, što
uvelike poboljšava 3D performanse, budući da grafički procesor ne mora posezati za udaljenom
RAM memorijom za prihvat podataka, već ih izravno prihvaća iz priručne memorije (naravno,
ukoliko se ondje nalaze).
Zbog činjenice da se procesorske jezgre nalaze na 32 nanometarskom poluvodičkom čipu,
radne frekvencije takvih grafičkih jedinica mogu dosezati i 1.35 GHz, što ih čini izravno
usporedivima s jeftinijim zasebnim grafičkim karticama. Intel u budućim izvedbama planira
implementirati i naprednije grafičke funkcije poput FSAA algoritama ( Full-scene Anti-aliasing)
za poboljšanje prikaza, zbog čega se predviđa da bi procesori temeljeni na Sandy Bridge
mikroarhitekturi mogli eliminirati tržište slabijih i jeftinijih grafičkih kartica.
77
4.5. Zaključne misli: budućnost – CPU ili GPU?
Općenitu budućnost računalne tehnologije uvijek je teško predvidjeti. Međutim, što nam donosi
bliska budućnost najčešće se može naučiti iz prošlosti.
Pomnijim promatranjem prethodno opisanih mikroarhitektura i tehnologija, može se uočiti da
su trendovi razvoja usmjereni sve većem stupnju integracije na procesorima. Dok su raniji
procesori imali tek dvije razine priručne memorije, s novijim procesorima (poput opisanih
Nehalem procesora) na čip se je integrirala još jedna razina memorije i memorijski kontroleri,
zatim i veći broj jezgara s naprednim tehnologijama, te naposljetku i grafički procesori, kojima
je vrata otvorila najsuvremenija Sandy Bridge mikroarhitektura. Pretpostavlja se da će upravo
daljnje povećavanje stupnja integracije, i korištenje heterogenih CPU/GPU procesora, biti budući
trend razvoja višejezgrenih procesora.
Štoviše, predviđa se da će integracija otići toliko daleko da više neće postojati klasična
CPU/GPU podjela, pa čak ni konvencionalna CPU jedinica, već će sav posao obavljati napredna
GPU jedinica. Sklopovski gledano, GPU jedinice jesu složenije i naprednije od CPU jedinica, i
mogu ponuditi znatno veće performanse pri izvršavanju zadataka, jer su u svom uobičajenom
radu prilagođene za izvršavanje težih paralelnih zadataka i obradu zahtjevnih grafičkih
aplikacija.
Takav koncept naziva se GPU računalstvom, ili točnije, GPGPU računalstvom (engl. General
Purpose computation on Graphic Processing Units) koje koristi GPU jedinice za svrhe
računanja u općim i znanstveno-istraživačkim primjenama. GPU računalstvo temelji se na
zajedničkoj upotrebi CPU i GPU jedinica u heterogenom ko-procesnom računalnom modelu.
Sekvencijalni, odnosno serijski dio aplikacije izvršavala bi CPU jedinica, dok bi za računski
zahtjevniji, paralelni dio aplikacije, bila zadužena GPU jedinica. Iz korisničke perspektive,
aplikacija bi se izvršavala brže jer koristi visoke performanse GPU jedinica.
Ipak, proći će još mnogo vremena dok GPU koncept u potpunosti ne zamijeni sadašnje
pristupe u dizajniranju procesora – integrirane CPU/GPU konfiguracije koje polako ulaze na
tržište još uvijek nisu dovoljno snažne da bi u potpunosti eliminirale tržište klasičnih grafičkih
kartica, a tek nakon što se to dogodi, potpuna integracija u vidu GPU računalstva će moći postati
temelj računalnih arhitektura.
78
5. Zaključak
Kao što je spomenuto u samom predgovoru, osnovna namjera pri izradi ovog završnog rada bila
je ponuditi jednostavan i kratak, a opet stručan pregled suvremene tehnologije višeprocesorskih
računalnih sustava. Jednostavan i kratak, jer sama područja koja su bila predmet izučavanja, a u
to sam se i sam uvjerio prilikom prikupljanja literature i proučavanja materije, mnogo su šira i
kompleksnija no što bi ih jedan završni rad ovakvog opsega u potpunosti mogao obuhvatiti.
Upravo zbog te širine područja višeprocesorske tehnologije, vodeći motiv pri izradi ovog
zadatka bio je napisati rad koji će čitatelju, a u konačnici i meni samom, ponuditi temelje,
polazišnu točku za daljnje proučavanje ove vrlo zanimljive i atraktivne tehnologije.
Rad je ponudio opise temeljnih značajki višeprocesorskih računalnih sustava, njihovih
osnovnih modela i arhitektura, načela rada te poteškoća i ograničenja. Osim toga, rad je proučio i
razloge iz kojih je došlo do pojave višeprocesorske tehnologije i nestanka jednoprocesorskih
rješenja, ali i ponudio uvid u blisku budućnost tehnologije, čime je zaokruženo područje
višeprocesorskih računalnih sustava.
79
Literatura
[1] Fayez, G.: „Algorithms and Parallel Computing“, John Wiley & Sons, Inc., Hoboken,
New Jersey, USA, 2011.
[2] Baer, J-L.: „Microprocessor Architecture – From Simple Pipelines to Chip
Multiprocessors“, Cambridge University Press, New York, USA, 2010.
[3] Keckler, Stephen W.; Olukotun K.; Hofstee, Peter H.: “Multicore Processors and
Systems“, Springer, New York, USA, 2009.
[4] Hennessy, John L.; Patterson, David A.: “Computer Architecture: A Quantitative
Approach (fourth edition)“, Morgan Kaufmann Publishers, San Francisco, USA, 2007.
[5] Patterson, David A.; Hennessy, John L.: „Computer Organization and Design: The
Hardware / Software Interface (fourth edition)“, Morgan Kaufmann Publishers,
Burlington, USA, 2009.
[6] Olukotun, K.; Hammond, L.; Laudon, J.: „Chip Multiprocessor Architecture:
Techniques to Improve Throughput and Latency“, Morgan & Claypool, Wisconsin,
USA, 2007.
[7] Tanenbaum, Andrew S.: „Modern Operating Systems (third edition)“, Pearson
Education International, Upper Saddle River, NJ, USA, 2009.
[8] Books LLC: „Flynn's Taxonomy“, Books LLS, Memphis, Tennesee, USA, 2010.
[9] Culler, D.; Pal Singh, J.; Gupta, A.: „Parallel Computer Architecture: A Hardware /
Software Approach“, Morgan Kaufmann Publishers, USA, 1997.
[10] Ribarić, S.: „Arhitektura Mikroprocesora (četvrto dopunjeno izdanje)“, Tehnička
knjiga, Zagreb, 1990.
[11] Ribarić, S.: „Naprednije Arhitekture Mikroprocesora (četvrto, neizmijenjeno
izdanje)“, Element, Zagreb, 2006.
[12] Schauer, B.: „Multicore Processors“, Internet,
http://www.csa.com/discoveryguides/discoveryguides-main.php, 2008.
[13] Intel: http://www.intel.com
[14] Mueller, P.: „Basics of Cell Architecture“, Internet,
http://moss.csc.ncsu.edu/~mueller/cluster/ps3/doc/, 2006.
[15] Torres, G.:„Inside AMD Bulldozer Architecture“, Internet,
http://www.hardwaresecrets.com, 24. kolovoza 2010.
80
[16] Shilov, A.:„AMD Reveals Details About Bulldozer Microprocessors“, Internet,
http://www.xbitlabs.com, 24. kolovoza 2010.
[17] Torres, G.: „Inside Intel Nehalem Microarchitecture“, Internet,
http://www.hardwaresecrets.com, 26. kolovoza 2008.
[18] Torres, G.: „Inside Intel Sandy Bridge Microarchitecture“, Internet,
http://www.hardwaresecrets.com, 30. prosinca 2010.
[19] Andersson, R.; Gai, S.; Salli, T.: „Cisco Data Center Virtualization Server
Architectures“, Internet, http://www.informit.com, 1. srpnja 2010.
[20] Nvidia: „What is GPU Computing“, Internet,
http://www.nvidia.com
[21] Roberts, T.: „Multicomputer Programming, Cell BE Processor Boost Signal
Processing“, Internet, http://www.cotsjournalonline.com/, svibanj 2007.