![]() | ![]() |
![]() |
| ![]() |
| ||||||||||||||||||||||||||||||||
Programi za višejezgarne procesore
Softveraši su dosad samo uživali u napretku hardvera. Međutim, uvođenjem višejezgarnih procesora, lopta je sada u polju programera i potrebna im je potpuno nova taktika za pobedu, a ne samo novi dresovi
Proizvođači softvera dosad su uživali u jednoj zanimljivoj vožnji, i to besplatnoj. Naime, kako su procesori postajali sve brži i brži, njihovi programi su umeli i te kako da cene i iskoriste svaki MHz „viška”. Tako je ista aplikacija skoro uvek bila brža na modelu od 1 GHz nego na onom od 500 MHz. Najavljivani su i modeli do 10 GHz, ali najviša brojka do koje su velike kompanije za proizvodnju procesora došle nije prešla 4 GHz. Vožnja više nije besplatna Filozofija koja se previše često koristila u prošlosti neprestano je uveravala potrošače da će procesori budućnosti doneti odgovarajuću brzinu i efikasnost, ukoliko sadašnji to ne mogu. Zaista, tako je i bilo sve do pre tri godine, ali od tada ovakve tvrdnje ne stoje. Ako pogledamo dvadesetak godina unazad, otkrićemo da se razvoj procesora svodi na povećanje radnog takta, veličine keš memorije i usavršavanje efikasnosti u radu. Prva i treća metoda donose gotovo linearan napredak u performansama. Povećanjem radnog takta procesora na raspolaganju nam je više ciklusa, što direktno znači da možemo da uradimo više operacija za isto vreme u odnosu na po taktu slabiji procesor. Usavršavanje efikasnosti u radu omogućava više rada po ciklusu, bilo korišćenjem ekstenzija procesora, moćnih instrukcija, izvršavanja više instrukcija u jednom taktu, pajplajnova ili predikcija skoka. Sve će ovo iscediti iz procesorske jedinice svaki atom snage koji poseduje, istovremeno smanjujući kašnjenja i povećavajući količinu operacija koje mogu da se ostvare u jednom ciklusu. Povećanjem keš memorije sve smo dalje od RAM-a, što je vrlo dobro za performanse. Ako uzmemo u obzir činjenicu da, u slučaju da se podatak ne pronađe u kešu, izvršavanje operacije može biti usporeno i do 50 puta, jasno je da veći keš znači i manje „promašaja”. Naravno da sve ne leži u veličini keš memorije, već i u algoritmima zamene i zahvatanja podataka. Sva ova ubrzanja skratiće vreme aplikacijama koje koriste sekvencijalno i konkurentno izvršavanje. Sekvencijalnim aplikacijama nazivamo one programe čiji se delovi kôda izvršavaju neparalelno (samo jedan deo kôda izvršava se u jednom trenutku), što znači da u suštini predstavljaju samo jednu nit ili proces, dok konkurentnim aplikacijama zovemo one kod kojih se više delova kôda može izvršavati istovremeno. Savremeni procesori kao nov put Trka brzine takta izgleda je završena i savremeni procesori su krenuli u potpuno drugom pravcu. Budući dobici u performansama biće postignuti isključivo pomoću osobina Hyper Threadinga, povećanja broja jezgara i količine keša koji im je dostupan. Tehnika Hyper Threadinga predstavlja mogućnost pokretanja nekih operacija u paraleli. Intel koristi ovu tehniku od pojave Pentium 4 procesora i, prema analizama, ubrzanja koja ona donosi veoma zavise od aplikacije. Brojke kažu da je ubrzanje 5–15% kod relativno dobro napisanih aplikacija koje koriste paralelizam, ali dostiže i 40% kod onih koje se mogu nazvati savršeno napisanim konkurentnim aplikacijama. Ali, gde su tu sekvencijalni programi? Povećanje broja jezgara više nije samo priča iz naučnofantastičnih filmova. Već tri godine posmatramo najveće svetske proizvođače u trci da što brže predstave nove mikroarhitekture i sve veći broj jezgara na jednoj pločici. Intel je za 2011. godinu najavio 80 jezgara! Ovakav razvoj procesora bi trebalo, u teoriji, da donese linearni dobitak u performansama, no opet, samo za konkurentne aplikacije. Veličina keša na čipovima dostigla je, nekada neverovatnih 4 MB. Očekuje se dalji rast količine raspoloživog prostora za ovu veoma brzu, asocijativnu memoriju. Ovo je, zapravo, jedina oblast od koje će sve aplikacije imati koristi. Ali, da li je to dovoljno ubrzanja? Većina današnjih programa nisu konkurentni, već sekvencijalni. Kao i nebrojeno puta dosad u istoriji, rešenje je samo jedna reč – revolucija! Nova softverska era Nekada se objektno orijentisano programiranje smatralo revolucionarnim, a danas ta titula prelazi u ruke konkurentnog, paralelnog programiranja. Ovaj način programiranja već je odavno prisutan, još od šezdesetih godina prošlog veka. Zašto onda i dalje pišemo sekvencijalne aplikacije? Zato što je konkuretno programiranje teško! U sekvencijalnom programiranju programski tok se lako prati, a samim tim se relativno lako ispravljaju i greške, što nije slučaj kod paralelnog. Najveći broj problema kod konkurentnog programiranja leži u nedeterminističkom izvršavanju programa. Više niti ili procesa koji se istovremeno izvršavaju znači bezbroj mogućih scenarija zavisno od toga ko kada „dobija” procesor. Dve osnovne prednosti konkurentnog programiranja su: logičko odvajanje prirodno nezavisnih tokova izvršavanja nekog programa i iskorišćenje više fizičkih procesora, pogotovu kada su oni pasivni, zbog čekanja na neku ulazno-izlaznu operaciju ili slično. Idealan slučaj za paralelizovanje bila bi obrada slika i videa jer je lako podeliti posao na frejmove i segmente svake slike, te je stoga DivX kompresija među prvima iskoristila višejezgarne procesore. Ipak, mane konkurentnog programiranja, pored njegove težine, leže u činjenici da nisu sve aplikacije pogodne za paralelizam. Na primer, od Beograda do Smedereva automobilom se stigne za oko 45 minuta. To ne znači da ćete korišćenjem 45 automobila stići za jedan minut, ali znači da ćete prevesti 45 puta više putnika za isto vreme. Ovo navodi da je potrebno posmatrati proizvodnju softvera na drugačiji način, uvažavajući i kvantitet i efikasnost prenosa podataka.
Jedan od sistema za konkurentno programiranje sa skrivenom implementacijom koje programeri danas često koriste jesu futures. Najbolje ih je shvatiti kao delove kôda koje programer želi da izvrši i umesto da poziva funkciju koja sadrži kôd i čeka na povratnu vrednost odmah nakon izvršavanja, on odvaja poziv i čekanje. Najpre se biblioteci saopšti namera za korišćenje ovog mehanizma. Dalji mogući scenariji su: izvršavanje, stavljenje u red čekanja koji se aktivira radom neke niti, ili pak ignorisanje poziva, a na programeru je da zatraži rezultat kada zaželi. Ukoliko je rezultat spreman, vraća se, a ukoliko ne, čeka se. S obzirom na to da ovaj sistem ne eliminiše brigu oko zaključavanja deljenih promenljivih, teško da će predstavljati ozbiljniji paket u budućnosti. Planovi velikih i malih
U taboru AMD-a odlučeno je da se krene nešto drugačijim putem. U ovoj kompaniji odlučili su da prošire set instrukcija kako bi softverskim kompanijama i pojedincima olakšali iskorišćenje snage višejezgarnih procesora. Tehnika je dobila ime Light Weight Profiling (LWP) i predstavlja set proširenih instrukcija AMD64 arhitekture. Ovaj sistem bi trebalo da omogući procesima da dohvate sopstvene podatke i proslede ga kasnije softveru u cilju optimizacije. Trebalo bi da bude omogućeno i lakše dohvatanje grešaka u izvršavanju, koje garantuje tesniju vezu hardvera i softvera. Vremenom, dodavane bi bile i druge instrukcije za saradnju sa transakcionalnim memorijama, brzim sistemima za razmenu poruka i promenu konteksta za paralelizam na nivou niti. Implementacija LWP-a ne očekuje se pre 2010. godine, što znači da neće biti deo nastupajućeg čipa Barcelona. Detalji su objavljeni na sajtu developer. Kompanija GigaSpaces je ponudila gamu jako zanimljivih softverskih proizvoda. Iza slogana „Write once, scale anywhere” (piši jednom, deli bilo gde) krije se moćan softverski alat, platforma koja nudi mogućnost deljenja kôda na delove koji će se prilagoditi arhitekturi na kojoj se izvršavaju. Uz mogućnost korišćenja Plain Old Java Objects, .Net platforme ili C++ bez ikakvog potrebe za posebnim API-jem, ovo rešenje garantuje fleksibilan pristup rešavanju problema raspoređivanjem delova kôda na odgovarajuće niti i procese. Sa sajta kompanije www. Na sajtu cag. • • • Sekvencijalne aplikacije polako postaju prošlost u svetu savremenog softvera, a titulu vodećeg preuzimaju rešenja optimizovana za izvršavanje na višejezgarnim procesorima. Dugo je softver uživao povlašćenu ulogu u svetu informacionih tehnologija, sada je vreme za nove paradigme, nove ideje i realizacije. Tesna saradnja sa hardverom je neophodna i samo će vreme pokazati koji pristup donosi najefikasnije iskorišćenje savremenih procesora. Upravo je vreme i najznačajniji faktor u ovoj priči, jer svaki aspekt konkurentnog pristupa programiranju traži više vremena i u razvoju i u testiranju novih aplikacija. Ipak, dobit koju će ova revolucija doneti je zapanjujuća i definitivno vredi uloženog truda, novca i vremena. Momir ĐEKIĆ |
![]()
![]()
![]()
![]()
| ||||||||||||||||||||||||||||||||||
![]()
|
![]() | |
![]() | ![]() |
Home / Novi broj | Arhiva • Opšte teme | Internet | Test drive | Test run | PD kutak | CeDeteka | WWW vodič • Svet igara Svet kompjutera Copyright © 1984-2018. Politika a.d. • Redakcija | Kontakt | Saradnja | Oglasi | Pretplata • Help • English | |
SKWeb 3.22 |