You are on page 1of 4

Poglavlje 63

1. Multi-core programiranje trendovi


Vodei proizvoai poluprovodnikih ipova, kakvi su Intel, AMD, IBM, i drugi, ne
usmeravaju danas vie svoje napore ka proizvodnji mikroprocesora koji e raditi na taktnoj
frekvenciji od 10 GHz, ve na poveanju broja izvrnih jezgara koja se kao integrisane celine, ili
tzv., multicore, izvode na jedinstvenoj monolitnoj ploici. U budunosti raunarske platforme,
kakve su desktopovi, mobilni ureaji, serveri, ili neke druge embedded specijalizovane platforme,
bez sumnje e sve vie biti multicore po svojoj prirodi. injenica da se industrija hardvera
pomera u novom pravcu predstavlja nove izazove za projektante softvera. Prethodne hardverske
platforme nudile su programeru sekvencijalan programski model. Operativni sistemi i drugi
sistemski softveri su bili ti koji su simulirali multitasking okruenje (prividno istovremeno
izvrenje veeg broja zadataka), pre svega zahvaljujui velikoj brzini rada CPU-a, sa jedne strane, i
spore ljudske percepcije, sa druge. Kao rezultat multi-threading je pruao efikasno iluziju o
prividnom paralelizmu. Kod savremenih multicore arhitektura, projektantima se danas nude
prave paralelne raunarske platforme, a to od projektanata softvera zahteva da iznalaze nove metode
kako bi na efikasniji nain mogli da implamentiraju svoj softver.
U tekstu koji sledi ukazaemo u kratkim crtama na nekoliko razliitih aspekata koji se odnose
na arhitekture multicore sistema kao i kreiranje softvera za multicore platforme.
1.1 Razlika izmeu termina konkurentni i paralelni
Na polju paralelnog programiranja termini konkurentni i paralelni se ne mogu poistovetiti.
Kada se vei broj softverskih niti-izvrenja (threads of execution) izvravaju
paralelno, to znai da se aktivni thread-ovi izvravaju simultano na razliitim hardverskim
resursima ili procesorskim vremenima. Ovo ukazuje da vei broj thread-ova ini istovremeni
progres.
Kada se vei broj softverskih niti izvrenja izvrava konkurentno, izvrenje thread-ova se
preklapa (interleave) na jedinstvenom hardversakom resursu vei broj aktivnih thread-ova je
spreman za izvrenje, ali progres, u datom trenutku, ini samo jedan thread. Sa ciljem da se
ostvari paralelizam mora da postoji konkurentna eksploatacija veeg broja hardverskih resursa.
1.2 Paralelne raunarske platforme
Sa ciljem da se postigne paralelno izvrenje u softveru, hardver mora da obezbedi platformu za
simultano izvrenje veeg broja thread-ova. U principu, raunarske arhitekture se mogu
klasifikovati na osnovu dve razliite dimenzije. Prva dimenzija se odnosi na broj nizova instrukcija
(instruction streams) kojih je u datom vremenskom trenutku pojedina raunarska
arhitektura u stanju da procesira. Druga dimenzija ukazuje na broj nizova podataka (data
streams) koji se u datom trenutku mogu procesirati.
Na osnovu prethodno dve uvedene dimenzije, rad bilo kog raunarskog sistema se moe opisati
u zavisnosti od toga koliko instrukcija i koliko podataka se moe istovremeno procesirati. Ovaj
klasifikacioni sistem je poznat kao Flynn-ova taksonomija. Shodno ovoj taksonomiji raunarske
platforme se mogu svrstati u jednu od sledee etiri kategorije: SISD, MISD, SIMD i MIMD.

Slika 1. Flynn-ova taksonomija


1.3 Paralelno izraunavanje kod mikroprocesora
Najee koriena metrika za procenu performansi kod izraunavanja bazirala se na tome
kolika je taktna frekvencija CPU-a. U prilog tome je i sledea injenica: U toku proteklih 30
godina, jedna od najvanijih metoda za poboljanje performansi raunarskih ureaja (prevenstveno
maine tipa PC) oslanjala se na poveanje brzine rada CPU-a. Primera radi, poev od prve PC
maine, ranih 80-ih godina, iji je CPU radio na frekvenciji od 1 MHz, pa sve do dananjeg dana
(30 godina kasnije), kada brzina rada desktop procesora iznosi od 1 GHz do 4 GHz, uoava se da
je uinjen napredak na ppolju breg taktovanja od 1000 puta. I pored toga to poveanja taktne
frekvencije CPU-a ne predstavlja jedini put za poboljanje raunarskih performansi, ovaj pristup je
oduvek predstavljao pouzdan izvor za ostvarivanje tog cilja koga su proizvoai PC maina
masovno koristili.
Od skoro, zbog brojnih razliitih osnovnih fizikih ogranienja u fabrikaciji integrisanih kola
(prvenstveno poveana disipacija) proizvoai ipova primorani su bili da pronalaze alternativna
reenja za poveanje performansi raunarskih sistema. U tekstu koji sledi ukazaemo na neke
glavne pravce razvoja koji su uinjeni i tom smeru.
Sa ciljem da se ostvari efikasnije korienje procesorskih resursa, projektanti arhitekture
raunara, da bi poboljali performanse, koristitili su ILP (Instruction Level
Parallelization) tehnike. ILP, takoe poznato kao dinamiko, van-redosledno izvrenje
(out-of-order execution), sa namerom da eliminie zastoj u radu protonog sistema, prua
CPU-u mogunost da preuredi instrukcije na jedan optimalan nain. Cilj ILP-a je da povea broj
instrukcija koji e se u jednom taktnom intervalu izvravati od strane procesora. Da bi ove tehnike
bile efikasne, potrebno je da se izvrava vei broj nezavisnih injstrukcija. Za sluaj redoslednog
izvrenja programskih instrukcija (in-order program execution), zavisnosti izmeu
instrukcija su te konice koje ograniavaju broj dostupnih instrukcija za izvrenje, redukujui na taj
nain paralelizam u radu. Alternativni pristup koji pokuava da ostvari potpuno iskorienje
funkcionalnih jedinica procesora bazira se na preureenju redosleda instrukcija, na takav nain to
e se nezavisne instrukcije izvravati simultano. U ovom sluaju, instrukcije se izvravaju van
programskog redosleda. Dinamiko planiranje izvrenja insrtrukcija (dynamic instruction
scheduling) obavlja se od strane samog procesora. U sutini ovaj vid paralelizma se ostvaruje
na hardverskom nivou i transparentan je za softveriste.
Evolucijom softvera, aplikacije su sve vie bile usmerene ka simultanom izvrenju veeg broja
zadataka. Dananje server aplikacije esto ini vei broj thread-ova ili procesa. Sa namerom da
se podri paralelizam u radu na nivou thread-ova, predloeno je nekoliko kako softverskih tako i
hardverskih pristupa.

Jedno od reenja se bazira na korienju koncepta istiskivanja (preemting), ili timesliced, multitasking operativnog sistema. Time-slice multithreading omoguava
projektantima da sakriju (uine nevidljivim) latencije koje se odnose na U/I aktivnosti,
preklapajui (interleaving) pri tome izvrenje veeg broja thread-ova. Ipak ovaj model ne
obezbeuje paralelno izvrenje, jer se samo jedan niz instrukcija, u datom trenutku, izvrava od
strane procesora.
Drugo reenje, koje je namenjeno za korienje pomenutog thread-level paralelizma,
zasniva se na poveanju broja fizikih procesora u raunaru. Multiprocesorski sistemi su ti koji
obezbeuju pravo paralelno izvrenje, tj. vei broj thread-ova ili procesa simultano se izvrava na
veem broja procesora. Kompromis koji je uinjen u ovom sluaju predstavlja vea vena sistema.
Projektanti procesorskih arhitektura koji su bili usvojili thread-level paralelizam kao dalji
pravac u razvoju, uoili su da, u najveem broju sluajeva, vei broj resursa savremenih procesora
ostaje neiskorien. No, da bi se pronalo bolje reenje, mora prvo da se razjasni ta predstavlja (na
ta se odnosi) pojam nit-izvrenja (thread of execution). Thread se moe definisati kao
osnovna jedinica iskorienje CPU-a. Pre svega thread sadri programski broja koji ukazuje na
tekuu instrukciju u nizu, ali thread takoe uva informaciju o stanju CPU-a, kao i druge resurse
kakvi su magacina (stack).
Fiziki procesor ini vei broj hardverskih resursa, ukljuujui arhitekturno stanje registri
CPU-a opte namene, registri kontrolera prekida, ke memorije, magistrale, izvrne funkcionalne
jedinice, i logiku za predikciju grananja. Kada se definie thread treba da se sagleda samo
arhitekturno stanje. To znai da se logiki procesor moe kreirati dupliciranjem arhitekturnog
stanja. Izvrni resursi se nakon toga dele izmeu razliitih logikih procesora. Ova tehnika je
poznata kao simultaneous multi-threading, ili SMT, ili HT (hyper threading)
technology. HT tehnologija ini da se single procesor, sa softverske take gledita vidi kao
vei broj logikih procesora. Ovakav koncept omoguava operativnim sistemima i aplikacijama da
planiraju izvrenje (schedule) veeg broja thread-ova ili logikih procesora kao to je to sluaj
kod multiprocesorskog sistema. Sa mikroarhitekturne perspektive, instrukcije logikih procesora su
perzistentne i simultano se izvravaju na deljivim izvrnim jedinicama. Drugim reima, mogue je
planirati izvrenje veeg broja thread-ova, ali poto su izvrne jedinice deljive, zadatak
mikroarhitekture se sastoji u tome kako da se odredi koliko i kada da se obavi preklapanje u
izvrenju dva thread-a. Kada se jedan thread zaustavi (stalls) drugom thread-u je
dozvoljeno napredovanje (progres). Dogaaji tipa zastoj odnose se na manipulacije kod ke
promaaja i pogrenih predikcij agrananja.
Naredni logiki korak u odnosu na SMT predstavlja multicore procesor. Multicore
procesori koriste chip-multiptocessing, CMP. Naime, umesto da se kod single core
procesora ponovo iskoriste (reuse) selektovani procesorski resursi, proizvoai procesora koriste
prednosti tehnologije gde implamentiraju dva ili vei broj izvrnih jezgara (execution cores)
u okviru jedinstvenog procesora. Ova dva jezgra u sutini predstavljaju dva individualna procesora
na monolitnom ipu. Execution-cores izvravaju sopstveni skup instrukcija i poseduju
sopstvene arhitekturne resurse. U zavisnosti od reenja procesori mogu da dele ili da ne dele onchip ke. Pored toga, individualna jezgra (core-ovi) se mogu kombinovati sa SMT; pa se na taj
nain efektivno poveava broj logikih procesora putem dupliciranja broja execution core-ova.
Razliite procesorske arhitekture prikazane su na slici 2.

Slika 2. Uporeenje izmeu single-core, multi-procesor, i multi-core arhitektura.

You might also like