38
1. Multi-core procesori U računarskom inženjerstvu (computer engineering), tokom zadnjih četrdesetak godina, progresi koji su bili učinjeni u domenu primene VLSI IC tehnologije uglavnom su bili iskazivani postignutim inovacijama na polju razvoja arhitektura mikroprocesora nešto manje na polju memorija, a neznatno u domenu ulaza-izlaza. Osnovni moto svakog napretka bio usmeren ka ostvarivanju sledećeg cilja: Značajnijem poboljšanju performansi, (pri tome, brzina rada predstavljala je ključni faktor u iskazivanju performansnih dobitaka skoro kod svakog elektronskog dizajna). Iz brojnih razloga na koje ćemo, u tekstu koji sledi, nešto detaljnije ukazati, multi-core (multiplecore) mikroprocesori ili chip-multiprocesori (CMP) su postali danas jedini dobar izbor koji vodi ka realizaciji visoko-performansnih mikroprocesora. Kao prvo, definisaćemo pojam: multi-core procesor ili tzv., procesor sa većim brojem jezgara Multi-core znači da postoji više od jednog procesorskog jezgra, ili CPU-a, na jedinstvenom integrisanom kolu (čipu). Tako na primer, dual-core procesor sadrži dva jezgra, quad- core procesor četiri jezgra, eight-core osam, i td. Multi-core procesor implementira multiprocesiranje na jedinstvenom fizičkom-pakovanju, tj integrisanom kolu (IC-u). Jezgra u okviru multi-core-a mogu biti čvrsto ili labavo spregnuta. Jezgra mogu ali i ne mora da dele keš memorije i da implementiraju inter-core komunikacione metode tipa prenos-poruka (message passing) ili deljiva-memorija (shared memory). Standardne mrežne topologije za interkonektiranje jezgara su: deljiva magistrala, prsten, 2D rešetka, i krozbar. Sva jezgra (cores) kod homogenih multi-core sistema su identična, dok su različita kod heterogenih multi-core sistema. Kao i kod jedno-procesorskih (single-processor)- sistema, jezgra kod multi-core sistema mogu da implementiraju sledeće tipove arhitektura: superskalrnu, VLIW, vektor procesiranje, SIMD, multithreading, i td. Many-core procesor je tip arhitekture kod koje je broj jezgara dovoljno veliki tako da tradicionalne multiprocesorske tehnike koje su do sada poznate nisu više efikasne. Razlika izmedju multi-core i many-core procesora pravi se na osnovu broja jezgara ugradjenih na čipu. Kada je broj jezgara veći od nekoliko desetina tada kažemo da je to many-core, a kada je manji tada imamo multi-core (danas, 1

Multi-core procesories.elfak.ni.ac.rs/es/Materijal/Pog.51-multi-core... · Web viewRazlika izmedju multi-core i many-core procesora pravi se na osnovu broja jezgara ugradjenih na

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Multi-core procesories.elfak.ni.ac.rs/es/Materijal/Pog.51-multi-core... · Web viewRazlika izmedju multi-core i many-core procesora pravi se na osnovu broja jezgara ugradjenih na

1. Multi-core procesori

U računarskom inženjerstvu (computer engineering), tokom zadnjih četrdesetak godina, progresi koji su bili učinjeni u domenu primene VLSI IC tehnologije uglavnom su bili iskazivani postignutim inovacijama na polju razvoja arhitektura mikroprocesora nešto manje na polju memorija, a neznatno u domenu ulaza-izlaza. Osnovni moto svakog napretka bio usmeren ka ostvarivanju sledećeg cilja: Značajnijem poboljšanju performansi, (pri tome, brzina rada predstavljala je ključni faktor u iskazivanju performansnih dobitaka skoro kod svakog elektronskog dizajna). Iz brojnih razloga na koje ćemo, u tekstu koji sledi, nešto detaljnije ukazati, multi-core (multiplecore) mikroprocesori ili chip-multiprocesori (CMP) su postali danas jedini dobar izbor koji vodi ka realizaciji visoko-performansnih mikroprocesora.

Kao prvo, definisaćemo pojam: multi-core procesor ili tzv., procesor sa većim brojem jezgara Multi-core znači da postoji više od jednog procesorskog jezgra, ili CPU-a, na jedinstvenom integrisanom kolu (čipu). Tako na primer, dual-core procesor sadrži dva jezgra, quad-core procesor četiri jezgra, eight-core osam, i td.

Multi-core procesor implementira multiprocesiranje na jedinstvenom fizičkom-pakovanju, tj integrisanom kolu (IC-u). Jezgra u okviru multi-core-a mogu biti čvrsto ili labavo spregnuta. Jezgra mogu ali i ne mora da dele keš memorije i da implementiraju inter-core komunikacione metode tipa prenos-poruka (message passing) ili deljiva-memorija (shared memory). Standardne mrežne topologije za interkonektiranje jezgara su: deljiva magistrala, prsten, 2D rešetka, i krozbar. Sva jezgra (cores) kod homogenih multi-core sistema su identična, dok su različita kod heterogenih multi-core sistema. Kao i kod jedno-procesorskih (single-processor)- sistema, jezgra kod multi-core sistema mogu da implementiraju sledeće tipove arhitektura: superskalrnu, VLIW, vektor procesiranje, SIMD, multithreading, i td.

Many-core procesor je tip arhitekture kod koje je broj jezgara dovoljno veliki tako da tradicionalne multiprocesorske tehnike koje su do sada poznate nisu više efikasne. Razlika izmedju multi-core i many-core procesora pravi se na osnovu broja jezgara ugradjenih na čipu. Kada je broj jezgara veći od nekoliko desetina tada kažemo da je to many-core, a kada je manji tada imamo multi-core (danas, krajem prve decenije ovog veka, ako je broj jezgara manji od 20 tada kažemo da je taj procesor tipa multi-core, a kada je veći za procesor kažemo da je tipa many-core). Mrežna topologija kojom se vrši povezivanje jezgara u okviru many-core sistema bazira se na konceptu Network-on-Chip (NoC), a ne na magistralama, krozbar-u, prstenu, i td.

Danas se multi-core procesori koriste u različite aplikacione domene uključujući: opšta namena (PC mašine), embedded, mreže, digitalno signal procesiranje, grafika, multimedija, elektromedicina, vojna industrija, i td.

Iznos dobitaka u performansama (performance gain) koji se može ostvariti kod multi-core procesora jako je zavisan od softverskih algoritama i njihove implementacije. Tako na primer, mogući dobici (gains) su ograničeni samo onim delom softvera koji se može paralelizirati radi istovremeno (simultano) izvršenje na većem broju jezgara (ovaj efekat je opisan od strane Amdahl-ovog zakona. Naime, delovi softvera koji se ne mogu paralelizovati izvršavaju se serijski na single-procesoru pa zbog toga oni su ti koji definišu graničnu vrednost dobitka koji se može ostvariti, tj. predstavljaju usko-grlo u ostvarivanju superiornijih performansi. Teoretski posmatrano faktor-ubrzanja treba da je blizak broju jezgara, ali kod najvećeg broja tipičnih aplikacija, zbog egzistencije programskih celina koje se moraju serijski izvršavati, velike

1

Page 2: Multi-core procesories.elfak.ni.ac.rs/es/Materijal/Pog.51-multi-core... · Web viewRazlika izmedju multi-core i many-core procesora pravi se na osnovu broja jezgara ugradjenih na

faktore ubrzanje je nemoguće postići. Ova činjenica ukazuje da paralelizacija softvera predstavlja jedan ozbiljan problem koga u budućnosti treba uspešno rešiti.

No, vratimo se sada, sa malo unazad i ukažimo na razloge koji su proizvodjače čipova uslovili da proizvodnju usmere ka multi-core rešenjima.

1.1 Zbog čega multi-core?

Prelazak sa single-core na multi-core rešenja diktiran je uglavnom fizičkim zakonima. Već duži niz godina proizvodjači čipova fabrikuju i reklamiraju sve brže i brže mikroprocesore pri ćemu se povećanje brzine njihovog rada prvenstveno oslanja na primeni sledećih rešenja: a) povečanju taktne frekvencije; i b) smanjenju dimenzija tranzistora. Efekat smanjenje dimenzije tranzistora, kao prvo, dovodi do smanjenje potrošnje energije, a kao drugo, povećava brzinu rada kola (kraće je propagaciono kašnjenje signala kroz kolo). No sada, sa druge strane, povećanje taktne frekvencije implicitno ukazuje na brži rad, ali i na radikalno povećanje potrošnje. Zadnjih godina čini se da su ovi VLSI tehnološki trendovi u razvoju mikroprocesora (nalaženje dobrog balansa izmedju brzine rada i potrošnje) dostigli zasićenje pa su projektanti arhitekture procesora bili prinudjeni da koriste razne domišljate trikove za postizanje superiornijih performansi kakve su na primer sledeće:

super-protočnost: svaka instrukcija prolazi kroz veći broj stepeni kako bi se brže izvršila, super-skalarnost: u toku svakog taktnog intervala inicira se izvršenje većeg broja instrukcija, predikcija-grananja: minimizira se efekat dugog uprotočavanja kod izvršenja instrukcija na

taj način što se unapred predvidja lokacija u programu na koju treba da se obavi grananje, preimenovanje-registara: u toku protočnog izvršenja instrukcija koriste se viruelni registri

kako bi se ostvarilo paralelno izvršenje u većem iznosu.

Pri ovome, kao ograničavajući faktor u ostvarivanju superiornijih performansi predstavljala je sledeća činjenica: Iznos paralelizma u tipičnim programima je ograničen tako da primena bilo kakvih superiornih tehničkih rešenja ne dovodi do ostvarenja nekih spektakularnih rezultata.Trenutno se došlo do tačke kada cena povećanja frekvencije i pokušaj paralelizacije sekvencijalnog niza instrukcija imaju minoran efekat. Naime, mali inkrement u poboljšanju performansi ima za posledicu dramatično povećanje potrošnje.Postoje tri faktora zbog čega se ovo dešava. Prvi je taj da je potrošnja energije direktno proporcionalna frekvenciji. Drugi se odnosi na sledeće: Da bi radili na višim frekvencijama potrebno je povećati napon napajanja kola, ali treba pri ovome imati u vidu činjenicu da je potrošnja energije srazmerna sa kvadratom napona napajanja. Treći faktor se odnosi na to da: Što je višlja taktna frekvencija sa kojom radi procesor to je veća razlika u brzini rada CPU-a, sa jedne, i magistrale, sa druge strane. To znači da sada treba ugraditi veliki broj tranzistora za realizaciju prethodno pomenutih trikova (super-protočnost, super-skalarnost, ...) kao i keš memoriju velikog kapaciteta (radi postizanja veće stope keš pogodaka) ako želimo superiornije performanse. Nema sumnje da se ugradnjom dodatnih tranzistora povećava potrošnja energije.Na slici 1 prikazano je šta se dešava sa potošnjom kada se frekvencija poveća. Prvi par stubiča pokazuje performanse i potrošnja energije kada procesor radi ’’punom brzinom’’. Drugi par prikazuje da kada se taktna frekvencija snizi na 80 % od maksimalne, potrošnja energije se smanjuje skoro na polovinu, a da pri tome još uvek nemamo tako drastičan pad (gubitak) performansi. Zadnji par prikazuje šta se dešava ako sistemu dodamo još jedno jezgro, a pri tome svako jezgro radi sa 80 % od svojih performansnih mogućnosti. Kao što se vidi sa slike 1, potrošnja energije biće ista kao i kod jezgra koje radi na maksimalnu taktnu frekvenciju (’’punom brzinom’’), ali su performanse u ovom slučaju 60 % veće.

2

Page 3: Multi-core procesories.elfak.ni.ac.rs/es/Materijal/Pog.51-multi-core... · Web viewRazlika izmedju multi-core i many-core procesora pravi se na osnovu broja jezgara ugradjenih na

Slika 1 Performanse u odnosu na potrošnju kada je radna frekvencija parametar

Rezultati koji su prikazani na slici 1 su teoretske prirode i "lepo zvuče". No, isti pokreću sada jedno ključno pitanje: Ako se sve to od ranije znalo zbog čega u prethodnom periodu nisu pokrenuti pravi koraci ka postizanju superiornijih performansi? Zadovoljavajući odgovor na ovo pitanje bio bi sledeći: Nije tačno da ova saznanja ranije nisu korišćena. Razlika izmedju prethodnog perioda i današnjeg je u tome što se ranije, za postizanje superiornijih performansi, koristio veći broj čipova, a ponekad i veći broj ploča (takva su bila standardna rešenja kod multiprocesorskih sistema na ploči od sredine 80-tih do krajem 90-tih godina prošlog veka). Od pre nekoliko godina submikronska VLSI IC tehnologija je omogućila da se na jednom čipu smesti veći broj jezgara, pa se ova mogućnost danas u značajnoj meri koristi. Sa hardverske perspektive, multicore predstavlja dobro rešenje. Veći broj MIPS-ova (milion instrukcija u sekundi,) za manju potrošnju. Problem koji se sada javlja ogleda se u sledećem: Teško je iskoristiti mogućnosti koje se pružaju, tj, postići bolje performanse i pored toga što izgleda da je sve na "dohvat ruke". Da bi ozbiljno sagledali ovo prisetimo se sledećeg: Uvek kada se, u toku proteklog perioda, neka nova generacija računara pojavljivala na tržištu, tehnikama koje su korišćene u prošlosti, nije bilo neophodno menjati programski kôd, tj strukturu programa. Prosto rečeno, programi su se izvršavali samo brže i brže na mašinama novijih generacija zahvaljujući pre svega većoj brzini rada tih mašina. No kada u procesor ugradite veći broj procesorskih jezgara, tada ako želite da ostvarite bolje performanse, neophodno je da program podelite na veći broj thread-ova (niti), tj celina, koje će se paralelno izvršavati. Kod većeg, ako ne i najveći broj, embedded aplikacija u datom trenutku procesor izvršava samo po jedan thread. To znači da ako dodate još jedan procesor (core) drugo jezgro biće pasivno (idle), a prvo zapošljeno, pa kao krajnji efekat performanse se neće povećati. Treba pri ovome uzeti u obzir i sledeću činjenicu: Klasični programeri "ne vole" paralelno programiranje, tako da oni još uvek pružaju veliki otpor neminovnim inovacijama u kreiranju programa koje će se u periodu koji nailazi postati veoma aktuelne.Evidentno je da izazov da se "ostvare što bolje performanse" kod multicore-a se može lakše prebroditi kada aplikaciju čini veči broj paralelnih zadataka koji se simultano (istovremeno) mogu izvršavati. No ipak treba naglasiti da generalno posmatrano, odredjivanje paralelizma u programu predstavlja zaista težak problem.Jedna posebno uspešna primena multicore-ova se ogleda u izvršenju specifičnih zadataka koji su u prethodnom periodu bili dodeljivani hardveru akceleratorskog tipa. Tipičan takav hardver su specijalizovani procesori, FPGA kola, i ASIC. S obzirom da se zadaci ovakvog tipa već izvršavaju od strane posebnih funkcionalnih jedinica, problem paralelizma nije više tako izrazit jer je on na neki način več rešen. Korišćenjem sada nekoliko sporih jezgara za čiji je rad potrebna manja

3

Page 4: Multi-core procesories.elfak.ni.ac.rs/es/Materijal/Pog.51-multi-core... · Web viewRazlika izmedju multi-core i many-core procesora pravi se na osnovu broja jezgara ugradjenih na

hardverska podrška (tj specifičan hradverski interfejs) kako bi se obavili ti specifični zadaci moguće je postići (ostvariti) veoma dobre performanse. Ono što je najvažnije je to da je ovaj cilj lakše ostvariti jer se njegova realizacija svodi na kreiranje programa koji će se izvršavati na multicore procesoru, a ne na projektovanju specifičnog hardverskog akceleratora, tj aplikaciono specifični procesor ili ASIC kolo.

1.2 Izazovi multiprocesiranja

Veliki broj beneficija se ostvaruje multiprocesiranjem, kao na primer: uvećana funkcionalnost, poboljšanje performansi, i povećana pouzdanost. Na slici 2 prikazani su tipični dijagrami jedno-procesorskog sistema, multiprocesorskog sistema koji koristi dva procesora, i multiprocesorskog sistema koga čine dva različita multicore procesora. Naglasimo da oba rešenja sa multicore procesorima predstavljaju istovremeno i multiprocesorske sisteme, ali da svi multiprocesorski sistemi ne koriste multicore procesore (drugi dijagram sa leve strane jeste multiprocesorski sistem, ali nije multicore, jer je svaki procesor realizovan kao jedinstveni (single) čip ili kao procesor na štampanoj ploči).

Slika 2. Primeri multiprocesiranja i multicore procesora

Kao što smo već naglasili, performansni dobitak koji se postiže korišćenjem većeg broja procesora je relativno lako postići kod nekih aplikacija, a skoro nemoguće kod drugih. Prvi korak u evaluaciji (proceni) potencijalnih beneficija koje se kod nekog specifičnog uređaja/sklopa mogu ostvariti primenom multiprocesiranja odnose se na određivanje (sagledavanje) koliko je pogodna ta aplikacija za multiprocesiranje. Inicijalna analiza maksimalnog performansnog dobitka koji se može ostvariti dostupnim paralelizmom može se odrediti primenom Amdahl-ovog zakona. Ovaj zakon definiše da je maksimalno dostupno ubrzanej određeno procentom rada koji će se izvršiti serijski, a ne paralelno.

Na slici 3 prikazani su rezultati koji se odnose na primenu Amdahl-ovog zakona za aplikacije koje zahtevaju različiti iznos serijskog rada, i na sisteme koji koriste različiti broj procesnih jedinica (core-ova). Analizom slike 3 može se zaključiti sledeće: Kada problem ili implementacija zahteva (karakteriše se) mali iznos serijskog rada (procesiranje), tada postoji značajno performansno poboljšanje ako se aplikacija implementira multiprocesiranjem, u suprotnom dobitak je minoran.

4

Page 5: Multi-core procesories.elfak.ni.ac.rs/es/Materijal/Pog.51-multi-core... · Web viewRazlika izmedju multi-core i many-core procesora pravi se na osnovu broja jezgara ugradjenih na

Slika 3. Primena Amdahl-ovog zakona

Određena aplikacija predstavlja dobrog kandidata za multiprocesiranje ako je za njeno kompletiranje potrebno da se izvrši veći broj poslova, ali pri tome, završetak jednog posla ne zavisi, ili neznatno zavisi, od završetka drugih poslova. Kada aplikaciju čini jedan (single) posao većeg obima, ali je svaki deo tog posla zavisan od drugog, a pored toga postoji i jako izražen stepen serijalizacije, tada multiprocesiranje ima ograničenu mogućnost da obezbedi neku posebnu beneficiju. Najveći broj embedded rešenja karakteriše upravo neki porsečan nivo paralelizma. Veoma važan (prvi) korak u evaluacijji potencijalnih beneficija multiprocesiranja se sastoji u dekompoziciji posla koji treba obaviti i maksimiziranju iznosa posla koji se može paralelno izvršavati. Naredni skup izazova (drgi korak) se odnosi na usklađivanje karakteristika aplikacije, pri čemu je neophodno doneti sledeće projektantske odluke: odrediti broj procesora, projektovati memorijski sistem, projektovati sprežnu mrežu koja povezuje procesore, memoriju i ulazno-izlazni podsistem, odlučiti se za tip multiporcesorske arhitekture (simetrično multiprocesiranje, asimetrično

multiprocesiranje, njihova kombinacija), izabrati metod za particiju softverskih aplikacija (procesi, thread-ovi) preslikati (mapirati) hardverske resurse (memorija, ulaz-izlaz, prekidi) individualnim mašinama

za procesiranje preslikati softver nad kojim je izvršena particija na hardverske resurse.

Svaka od pomenutih projektantskih odluka mora biti u skladu sa poznavanjem aplikacije i sa razmevanjem kako sistem radi. Treći skup izazova (treći korak) se odnosi an razvoj softvera koji bez sumnje ima veliki uticaj na performanse. U principu, od četiri osnovne komponente sistema koje imaju uticaj na brzinu izvršenja aplikacije tri pripadaju domenu softvera, a to su: operativni sistem, kompajleri, i aplikacioni softver. Hardver je četvrta osnovna kompoennta sistema čije se izmene najteže izvode. Tako na primer, promena procesora, modifikacija memorija, promena interkonekcionih arhitektura i kanala za prenos podataka zahteva mnogo veći napor od projektanta sistema u odnosu na softverske izmene, a što je najvažnije, ove izmene su skuplje. Standardni izazovi koji prate razvoj multiprocesorskog softvera su sledeći: pre nego što se startuje sa implementacijom potrebno je izabrati dobar i pouzdan

multiprocesorski sistem, a za razvoj koristiti verifikovan softver, izvršiti particiju softvera tako da je konkurentnost u radu svih procesora vidljiva, a skalbilnost, u

slučaju ako želimo ugraditi u sistem veći broj procesora, lako ostvarljiva,

5

Page 6: Multi-core procesories.elfak.ni.ac.rs/es/Materijal/Pog.51-multi-core... · Web viewRazlika izmedju multi-core i many-core procesora pravi se na osnovu broja jezgara ugradjenih na

savladati tehnike razvoja i debug-iranja softvera koje se odnose na okruženje koje omogućava konkuretno izvršenje većeg broja poslova, procesa, i thread-ova,

treba brzo uočavati i korigovati uslove-trka (race conditions), i samrtnih zagrljaja (deadlocks). Race condition može da postoji u softveru, u slučajevima kada više od jedan thread koji se tekuće izvršava ima pristup istim podacima. Ako ishod softverskog izvršenja zavisi od redosleda u kome se određeni događaji dešavaju, tada kažemo da postoji race condition. Race condition obično dovodi do toga (rezultira) da se promenljiva postavi na pogrešnu vrednost. Race condition je teško detektovati, a takođe i debug-irati, iz razloga što je njihovo ponašanje vremenski zavisno.

potrebno je evaluirati i optimizirati performanse putem eliminacije uslih grla i neiskorišćenih procesorskih ciklusa,

optimizirati alokaciju procesora i drugih hardverskih resursa u skladu sa particijom softvera, implementirati korektni balans između deljivih i privatnih podataka.

1.3 Izbor arhitekture multiprocesorskog sistema Postoji veći broj načina na koji se u arhitekturi sistema namenjenog za procesiranje mogu kombinovati hardver i softver. Dve glavne arhitekture koje se koriste za ovu namenu su simetrično-multiprocesiranje (symmetric multiprocessing - SMP) i asimetrično- multiprocesiranje (asymmetric multiprocessing - AMP).Na slici 4 prikazan je primer SMP sistema koga karakterišu sledeće osobine: svi procesori (ili jezgra) su iddentični, sva memorija je deljiva, a pristup memoriji od strane svih procesora je uniforman, jedinstveni (single) SMP operativni sistem upravlja svim procesorima, prekidima, i

aplikacijama, u okviru datog OS okruženja, konkretno se izvršava više od jedan thread, što nije moguće kod

single-processor sistema, operativni sistem dodeljuje thread-ove procesorima, operativni sistem pokušava da ostvari balans radnog opterećenja u odnosu na procesore, tj.

podjednako zaposli sve procesore, ako je neki od procesora specijalizovan za obavljanje određenih zadataka/thread-ova tada će

operativni sistem dodeliti tom procesoru taj zadatak/thread na izvršenje, sistem je pogodan za izvršenje onih aplikacija kod kojih veći broj thread-ova treba često da

pristupaju deljivim podacima, sa ciljem da se ostvare bolje performanse sistem zahteva da aplikacije budu multithreaded

orijentisane.

6

Page 7: Multi-core procesories.elfak.ni.ac.rs/es/Materijal/Pog.51-multi-core... · Web viewRazlika izmedju multi-core i many-core procesora pravi se na osnovu broja jezgara ugradjenih na

Slika 4. Simetrični multiprocesorski sistem - SMP

Na slici 5 dat je primer AMP sistema, koga karakterišu sledeće osobine: svi procesori (ili jezgra), ne mora da budu identični, ali i mogu, svaki procesor raspolaže nekom svojom privatnom memorijom, svaki procesor izvršava svoju aktivnost nezavisno, nezavisni deo operativnog sistema,

executive-a, ili standadnu softversku aplikaciju, svi operativni sistemi ne mora da su identični, tako na primer, na jednom procesoru može da se

izvršava Linux (kao OS opšte namene), a na drugom procesoru neki RTOS kakav je recimo Nucleus,

interprocesnim komunikacijama (interprocess communication - IPC) obezbeđuje se prenos podataka i sinhronizuju aktivnosti između procesora,

particija radnog opterećenja na nivou sistema mora da se odredi u fazi projektovanja sistema, tako što se specifične aktivnosti (zadaci) dodeljuju na izvršenje specijalizovanim procesorima,

AMP sistemi su pogodni za aplikacije kod kojih je potreba za deobom podataka i interakcija između podsistema relativno ogranilčena,

AMP sistem ne zahteva da aplikaicje budu multithread orijentisane, iz razloga što svaka aplikacija može da se izvršava na single procesoru (tj. podsistemu AMP-a), pri čemu se IPC koristi da koordiniše i kombinuje moć koju može da pruži višeprocesorski sistem.

Slika 5. Asimetrični multiprocesorski sistem - AMP

7

Page 8: Multi-core procesories.elfak.ni.ac.rs/es/Materijal/Pog.51-multi-core... · Web viewRazlika izmedju multi-core i many-core procesora pravi se na osnovu broja jezgara ugradjenih na

AMP i SMP arhitekture mogu da ispune zahteve velikog broja sistema/uređaja i aplikacija. Zadatak projektantskog tima je da sagleda kako se aplikacija može ubrzati korišćenjem većeg broja procesora, a da pri tome bude svestan da obe arhitekture mogu biti dostupne. Kod nekih sistema SMP i AMP arhitekture se mogu istovremeno koristiti. Tako na primer, na jednoj ploči sa četiri multiprocesora tipa four-core svaki od core-ova u okviru jednog multicore-a na nivou ploče može da izvršava različit operativni sistem. Drugim rečima, na nivou ploče imamo AMP arhitekturu a na nivou multicore čipa SMP arhitekturu. Akronimi AMP i SMP se koriste da opišu:

a) dizajn multiprocesorskog hardvera, i b) način na koji se multiprocesorske softverske aplikacije preslikavaju na dati hardver.

Ovakav način razmišljanja može da dovede do određenih konfuzija (nejasnoća). Sa tačke gledišta hardverskog domena, simetrični-multiprocesor je dizajn kod koga je svaki procesni element identičan. Sa aspekta softverskog domena, simetrično-multiprocesiranje predstavlja mogućnost koja se podržava od strane operativnog-sistema. Njen posao je da upravlja radom većeg broja procesora jedinstvenom (single) instancom operativnog sistema koji je individualnim procesorima zadužen za dodeljivanje (radi izvvršenja) procesa i thread-ova koji formiraju (čine) datu aplikaciju. Simetrično multiprocesiranje se može jedino implementirati na simetričnom multiprocesoru. Ali takođe, moguće je implementirati asimetrični multiprocessimg sistem koristeći simetrični multiprocesorski hardver. Ako ova konstatacija već na neki način ne stvara zabunu (konfuziju) postoje takođe i asimetrični multiprocesori u hardveru. Oni se razlikuju od simetričnih multiprocesora po tome što poseduju različite tipove procesnih elemenata. Ako ste projektant softvera, lekciju koju treba znati je sledeća: Kada neko govori o SMP ili AMP, treba se uveriti u to da li se njegova diskusija odnosi na dizajn procesorskog hardvera, konfiguraciju sistemskog softvera, ili i jedno i drugo.

1.4 Multicore i multi-OS sistemi

Kod velikog broja embedded SoC rešenja da bi se lakše ispunili zahtevi koji se odnose na realizaciju različitih podsistema često se javlja potreba za okruženjem kod koga heterogeni OS-mi mogu istovremeno da koegzistiraju u okviru jedinstvenog multicere sistema. Tako na primer, u okviru multicore SoC-a RTOS je potreban da pruži podršku rada podsistemu data-plane (alikacije tipa brzo DSP procesiranje, brze komunikacije), dok GPOS (general purpose operating system) kakav je embedded Linux, se koristi za potrebe izvršenja aplikacija koej se odnose na control-plane podsistema, tj. to su slučajevi kada RT rad nije imperativ (interakcija sa korisnikom, rad sa sporim periferijama). Multicore procesori i softver koji se izvršava na ovim jezgrima mogu se konfigurisati na različite načine. Kod jednog tipa konfiguracije jezgra procesne jedinice SoC-a mogu biti homogene. To znači da svako jezgro poseduje isti skup instrukcija i vidi sistem na identičan način. Druga konfiguracija predstavlja heterogeni dizajn. Kod ove konfiguracije jezgra poseduju različiti skupš instrukcija i na drugačiji način vide sistem. Softver koji se izvršava na većem broju jezgara se može kategorizirati kao simetričan (postoji jedinstvena instanca softvera za ceo SoC dizajn), ili kao asimetričan (postoji različiti softver ili veći broj instanci softvera na nivou SoC-a pri čemu se svaka instanca izvršava na različitom jezgru). Treba, pri ovome, da se podsetimo sledećih činjenica. Kao prvo, SMP sistemi se koriste za distribuciju opterećenja na homogenim jezgrima koji za spregu koriste deljive resurse. Kao drugo, AMP sistemi često koriste particiju opterećenja na veći broj instanci pri čemu se te instance izvršavaju na homogenim ili heterogenim jezgrima čiji je rad podržan od strane istog ili različitih OS-ma. Komunikacija između jezgara kod AMP sistema se ostvaruje preko IPC (Inter-Process Communication). Tipični predstavnici AMP arhitekture su: Texas Instruments OMAP i MIPS1004K procesor.

8

Page 9: Multi-core procesories.elfak.ni.ac.rs/es/Materijal/Pog.51-multi-core... · Web viewRazlika izmedju multi-core i many-core procesora pravi se na osnovu broja jezgara ugradjenih na

1.4.1 SMP hardver za AMP

U principu, SMP hardver obezbeđuje da jedinstvena (single) instanca OS-a upravlja radom resursa svih SMP jezgara. No, SMP hardver se može takođe podeliti da obezbedi uslov kada se nekoliko OS-ma izvršavaju na različitim jezgrima. I pored toga što je memorija deljiva, a vidi se kao jedinstvena, ona se može podeliti (parcelisati) između različitih OS-ma koji se izvršavaju od strane sistema – obezbeđujući uslove da se svaki OS izvršava nezavisno jedan od drugog. Na ovaj način dobijamo AMP okruženje koje se izvršava na SMP hardveru.Ilustracije radi, SMP koga čine dva jezgra se može podeliti na dve OS instance, pri čemu se po jedno jezgro dodeljuje svakom okruženju. S obzirom da oba jezgra dele istu memoriju, svakom jezgru se dodeljuje na korišćenje unapred definisani deo memorije, a pri tome se takođe i opsluživanje periferije deli između oba OS-ma. MMU jedinica je ta koj ane dozvoljava da OS jednog jezgra pristupi onoj memoriji čiji je vlasnik drugo jezgro. Kod SoC-ova sa dva jezgra i dva OS-ma, RTOS je zadužen za ispunjenje RT aspekata AMP-a kakvi su brzina odziva, determinizam u izvršenju zadataka, ispunjenje krajnjih rokova, i td., pri čemu on istovremeno koegzistira sa GPOS-om koji je zadužen za rad sa sporim periferijama, opsluživanje korisnika, i dr.

1.4.2 Hardver AMP arhitekture

Savremeni homogeni multicore SoC-ovi su veoma kompleksni sistemi jer poseduju znatno veći broj mogućnosti u odnosu na ranije generaciej multicore sistema koji su bili implementirani pomoću ASIC i FPGA kola koristeći IP-ove koji su bili bolje prilagođeni za uni-core, a ne za multicore rad. Novija generacija multicore IP-ova, kakva je recimo ARM Cortex-A9 MPcore ima ugrađeno specifičnu logiku i mogućnost da podrži rad kako simetričnih tako i asimetričnih okruženja. Pored ostalog, novije generacije multicoreSoC-ova poseduju i višenivovsku keš memoriju, power-management jedinicu, kontroler prekida, a takođe sadrže i IP blokove za umrežavanje, USB, šifrovanje/dešifrovanje podataka, veći broj magistrala (SPI, I2C, PCI), LCD/touch panel logiku, UART-e, tajmere, i dr., na jedinstvenom čipu sa većim brojem jezgara. Sva nabrojana poboljšanja imaju značajan efekat na poboljšanje performansi novih multicore SoC sistema.

1.4.3 Softver AMP arhitekture

Kao što smo već ranije naglasili rad SoC dizajna se može na takav način podeliti da obezbedi:1. GPOS-u manipulisanje control-plane aktivnostima (korisničkim interfejsom, upravljanje

aplikacijom, upravljanje složenim protokolima), i 2. RTOS-u manipulisanje data-plane aktivnostima kakve su one koje se odnose na izvršenje

HRT zadataka (upravljanje radom motora, navođenje rakete, upravljanje avionom, vozom, prihvatabnje podataka sa senzora, brza izračunavanje, vremensko kritično procesiranje, šifrovanje/dešifrovanje, i dr.).

Kod ovakvih sistema Linux je obično OS-em koji se koristi kao izbor za GPOS, dok RTOS, kakav je recimo, Nucleus predstavlja rešenje koje je pogodno za primenu kod vremensko kritičnih, determinističkih i računsko intenzivnih aplikaicija. Na slici 6 prikazana je softverska arhitektura na visokom nivou kod koje postoji jasno razdvajanje između control- i data-plane kod AMP-a.

9

Page 10: Multi-core procesories.elfak.ni.ac.rs/es/Materijal/Pog.51-multi-core... · Web viewRazlika izmedju multi-core i many-core procesora pravi se na osnovu broja jezgara ugradjenih na

Slika 6. Razdvajanje softvera kod multicore AMP SoC-a na control-plane i data-plane

1.4.4 Važnost inerprocesne komunikacije

OS-mi komuniciraju koristeći određeni metod IPC-a, koji se razlikuje od dizajna do dizajna. Danas postoje različiti standardi za IPC-ove. Dva najčešće korišćenja standarda su:

a) Transparent Inter-Process Communication (TIPC) – to je u potpunosti transparentan i heavy-weight IPC protokol koga podržavaju Linux i drugi OS-mi, i

b) Multicore Communication API (MCAPI) – je noviji pristup tipa light-weit message-passing API koji se češće koristi kod distribuiranih SoC-ova.

Izbor IPC standarda je kritičan sa aspekta skalabilnosti AMP sistema, kao i lakšeg prenošenje softvera kod ovih sistema. Drugim rečima, optimizacija IPC mehanizama između GPOS-a i RTOS-a predstavlja ključni faktor za efikasan rad AMP sistema.

1.4.5 Šta je to aplikaciono programski interfejs: API

Aplikaciono programski interfejs, API, predstavlja interfejs implementiran od strane (softverskog) programa kojim se ostvaruje (obezbedjuje) interakcija sa drugim softverom na identičan način kao što i korisnički interfejs obezbedjuje interakciju izmedju korisnika i računara. API-ovi se implementiraju od strane aplikacija, bibliotečnih programa, i operativnih sistema, a imaju za cilj da odrede rečnik (vocabulary) i konvencije pozivanja (calling conventions) koje programer treba da upotrebljava (poštuje) kako bi koristio usluge API-ova. API uključuje (sadrži u sebi sledeče celine) specifikaciju rutina, strukture podataka, klase objekata, i protokola koji se koriste za komunikaciju izmedju potrošača (consumer) i onaj koji implementira API. U suštini API predstavlja apstrakcija kojom se definiše i opisuje interfejs za potrebe interakcije sa skupom funkcionalnosti neke komponente softverskog sistema. Za softver kojim se ostvaruju ove funkcionalnosti, opisan od strane API-a, kažemo da predstavlja implementaciju API-a. API može biti:a) generički- predstavlja potpuni skup koji je deo bibliotečnih programa u okviru programskog jezika,b) specifični- odnosi se na specifični problem, c) jezičko zavisni- dostupan je samo kod pojedinih jezika, id) jezičko nezavisan- napisan tako da se može pozivati od strane nekoliko programskih jezika.

1.4.6 Integracija AMP sistema

Na slici 7 prikazana je jedna tipična particija sistemskih resursa kod multicore SoC dizajna kada su u sistem integrisana dva operativna sistema, GPOS i RTOS.

10

Page 11: Multi-core procesories.elfak.ni.ac.rs/es/Materijal/Pog.51-multi-core... · Web viewRazlika izmedju multi-core i many-core procesora pravi se na osnovu broja jezgara ugradjenih na

Slika 7 Jedna standardna particija sistemskih resursa kod multicore SoC dizajna

U fazi integracije sistema nailazimo na brojne probleme kojih treba uspešno rešiti. Neki od njih su sledeći:

Koji OS treba prvo boot-ovati, GPOS ili RTOS? Da li se na nivou sistema koristi boot-loader i koji je to? Na koji način će se izvešiti podela (particija) i zaštita memorije izmedju oba OS-ma? Na koji način se sistem može optimizirati ili podesiti za neku specifičnu platformu?

1.4.7 Tipične aplikacije AMP-ova

Streaming multimedijalne bežične komunikacije i intenzivno orijentisana korisnička interfejs tehnološka rešenja (kakve su interaktivne video igre) postaju danas sve popularnije aplikacije kod embedded sistema. Ono što je posebno izazovno kod ovakvih rešenja je to što zahtevi za realizacijom fleksibilnog i efikasnijeg softvera postaju sve naglašeniji. Efikasan AMP dizajn se bazira na konceptu dobre particije sistemskih resursa izmedju GPOS i RTOS, i optimalnom preslikavanju (mapping) tih resursa na hardverske komponente. Particija sistemskih resursa i preslikavanje varira od jednog sistema do drugog, a odnosi se na način i potrebama za korišćenjem periferija, podsistema, realizaciju tajminga, povezljivost komponenata u okviru sistema, i dr.Aplikacije koje se odnose na multimedijalno procesiranja često zahtevaju izvršenje računsko intenzivnih algoritama kakvi su oni kojima se vrši kompresija i dekompresija podataka, procesiranje slike, manipulisanje sadržajem slike (razni specijalni efekti), poboljšanje(povećanje) rezolucije slike, i dr. Kao što smo već ranije naglasili veći broj današnjih AMP SoC rešenja inkorporira u svoju strukturu akceleratore koji obavljaju zadatke tipa intenzivnog-izračunavanja pa se najčešće rad ovih gradivnih blokova kontroliše od strane RTOS-a. Korišćenjem multicore procesorske arhitekture projektanske odluke se pomeraju ka ostvarivanju sledećeg cilja: Umesto da se koriste akceleratori kao posebna ASIC rešenja u okviru SoC-a, za izvršenje istog zadatka treba koristiti veči broj core-ova koji softverskim putem treba da reše problem.

11

Page 12: Multi-core procesories.elfak.ni.ac.rs/es/Materijal/Pog.51-multi-core... · Web viewRazlika izmedju multi-core i many-core procesora pravi se na osnovu broja jezgara ugradjenih na

U skorije vreme, na nivou multocore SoC sistema koristi se i hypervisor koji ima zadatak da u zavisnosti od trenutnih potreba dinamički dodeljuje resurse GPOS-u ili RTOS-u. Ovakvim rešenjem postiže se veća efikasnost u radu sistema, ali ne treba izgubiti iz vida da je složenost hypervosor-a dosta velika.U suštini ne postoji jedinstveni dizajn pristup koji daje optimalno rešenje za svaki multicore i svako multi-OS rešenje, ali je jedna konstatacija sigurno tačna, a to je da: Razvoj i realizacija uni-core sistema u značajnoj je meri, ako ne i dijametralno, različita u odnosu na multicore.

1.4.8 Memorijske arhitekture i komunikaciono aplikacione programske interfejse kod multicore-ova

Kod multicore sistema sa deljivom memorijom (shared memory systems) svi procesori mogu da pristupaju ukupno raspoloživoj memoriji sistema na način kao da ona pripada jedinstvenom globalnom adresnom prostoru. Deljivoj memoriji se obično pristupa preko magistrale, a kontrolisani(upravljani) pristup se ostvaruje preko nekog sinhronizacionog (locking) mehanizma. Imperativ pri ovome je da se izbegne istovremeni pristup nekoj lokaciji deljive memorije od strane većeg broja jezgara (core-ova). Ovakav pristup u realizaciji omogućava da se koristi programski model kod koga svaki procesor može da ima direktno pravo pristupa, radi čitanja ili upis, svakoj lokaciji u okviru memorije. Deljiva memorija obezbedjuje da se prenos podataka vrši referenciranjem (by reference), tj, bez aktuelnog premeštanja (kopiranje) podataka (moving data) sa jedne lokacije na drugu. Sa druge strane, upravo ovakvo rešenje može da dovede da deljiva memorija postane usko-grlo u radu sistema. Do ovakvih situacija dolazimo u slučajevima kada veći broj procesora (jezgara) istovremeno pokušava da pristupi toj memoriji. Pojava uskog- grla sugeriše da arhitektura memorije ne skalira dobro sa povećanjem broja procesora.

Kod sistema koji imaju distribuiranu memoriju svaki procesor može da pristupa samo svojoj lokalnoj memoriji. Globalni memorijski prostor na nivou sistema u ovom slučaju ne postoji, a komuniciranje se ostvaruje koristeći različite oblike (tehnike) prenosa-poruka (message passing). Naime, svako jezgro ima svoju lokalnu memoriju koja nije deljiva, pa na taj način se može ostvariti efikasna skalabilna arhitektura. Kada su nekom jezgru potrebni podaci koji se nalaze (čuvaju) u drugom jezgru ili jezgrima tada je potrebno, prvo, da se postigne sinhronizacija u radu tih jezgara, a zatim da se obavi fizičko kopiranje (premeštanje- move) podataka sa jednog jezgra na drugo. Pri tome se kod kopiranja podataka ne koristi tehnika referenciranja, tj obraćanja memoriji, jer deljiva memorija na nivou sistema ne egzistira. Prenos poruka može da bude asinhroni. To znači da dok jezgro čeka da podaci pristignu ono može da obavlja neka druga izračunavanja. Alternativno, prenos-poruka može biti sinhroni, tj zadatak koji čeka podatke se blokira sve dok traženi podaci ne pristignu.Ako multicore sistem istovremeno poseduje (ima dostupnu) kako lokalnu tako i globalnu memoriju tada je moguće kreirati efikasne komunikacione strukture, koje mogu da kombinuju dobre osobine obe prethodno pomenute tehnike za prenos podataka.

1.5 Programiranje embedded MPSoC-ova

Poboljšanje performansi u brzini izračunavanja kod savremenih računarskih sistema do skoro uglavnom su se ostvarivale zahvaljujući sledećim efektom: Brzina izračunavanja se udvostručavala svakih 18 do 24 meseca prvenstveno usled povećanja taktne frekvencije rada sistema, a to je obezbedjivalo softveru uslov da se jednostavno brže izvršava. Ovakav napredak, na žalost, nije više danas moguć jer se nailazi na kraj mogućnosti koje su bile obezbedjivanje po automatizmu, tj da samo povećanjem frekvencije rada, po definiciji dolazimo do bržeg izvršenja programa. Sa stopiranim napredkom u povećanju taktne frekvencije rada sistema (uzrok je tehnološke prirode), sa jedne strane, i izuzetne procesne moći koje se nude od strane multicore sistema, sa druge strane,

12

Page 13: Multi-core procesories.elfak.ni.ac.rs/es/Materijal/Pog.51-multi-core... · Web viewRazlika izmedju multi-core i many-core procesora pravi se na osnovu broja jezgara ugradjenih na

došlo se do situacije kod koje: Serijsko izračunavanje “izumire“, a vizija za paralelno programiranje, koja je počela da se razvija još pre četrdesetak godina postaje danas stvarnost. Pojavom multicore čipova, bilo tipa hibridni-multicore ili manycore, paralelno izračunavanje postaje neophodnost. Prve industrijske MPSoC platforme, kakve su IBM Cell procesor (hibridni multicore), Texas Instruments TI6476, ARM11 Mpcore,tradicionalni AMD i Intel multicore,many-core AMD/ATI, Nividia grafičke procesne jedinicei dr., aplicirane kod embedded sistema su već ugledale svetlost dana. Ove programibilne arhitekture karakteriše velika moć izračunavanja koja predstavlja solidnu osnovu za buduće aplikacije. Osnovni problem koji se sada javlja je sledeći: Na koji način projektanti embedded sistema mogu da iskoriste snagu-izračunavanja koja se nudi od strane novijih generacija MPSoC-ova? Ovo pitanje se može preformulisati malo drugačije tako da glasi: Koji programski model treba programer da koristi kako bi efikasno i produktivno programirao savremene MPSoC arhitekture?U širem smislu reči, programski model predstavlja skup softverskih tehnologija i apstrakcija koja dozvoljavaju projektantu da prilagodi (uobliči) program ili algoritam na način koji je uskladjen sa ciljnom arhitekturom. Ove softverske tehnologije postoje na različitim nivoima apstrakcije i hijerarhijski su iznad programskih jezika, bibliotečnih programa, kompajlera, i runtime mapping komponenata (superskalarnost, predikcija grananja, i dr.).Evidentno je da projektanti ne mogu više da eksploatišu puni potencijal skalabilnosti MPSoC platforme koristeći strogo (single) sekvencjalni pristup za opisivanje programa. Da bi se uspešno eksploatisao potencijal MPSoC-a projektanti mora da koriste paralelni-programski model. To znači da bi preslikao poželjno ponašanje na dostupne resurse projektant mora da reši sledeća četiri zadatka:Podeli program koga čini jedan (single) zadatak na veći broj računsko izbalansiranih zadataka koji medjusobno mora sada da komuniciraju. Ovaj proces mora da uzme u obzir (vodi računa o) osobine ciljne platforme (arhitekture sistema). Sama aktivnost koja se odnosi na particiju zadataka i dodele opterećenja može često puta da bude uzročnik grešaka pa zbog toga mora u fazi razrade rešenja da joj se posveti posebna pažnja. Pored toga, ova aktivnost zahteva proveru korektnosti balansa opterećenja i verifikaciju rešenja pod različitim scenarijama, što za posledicu ima dugo vreme razrade ideje i realizacije koncepta.

Upravljanje komunikacijom izmedju zadataka i sinhronizacijom rada na nivou sistema. Projektant mora pažljivo da sagleda ovaj problem kako bi premostio serijalizaciju paralelnog programa i pojavljivanje race conditions. To su problemi koji prate koherentnost podataka različitih thread-ova. Ponovo kod realizacije ove akcije postoji realna opasnost od pojave grešaka, pa za uspešno rešavanje svih problema potrebno je dosta vremena, jer realno postoji i opasnost od pojave samrtnih-zagrljaja (deadlocks).

Manipulisanje sudarima kod pristupa on-chip resursima (deljiva memorija i deljivi sprežnmi putevi) sa ciljem da se poboljšaju performanse dizajna.

Debugging programa na multiprocesorskoj platformi, što je daleko izazovniji posao od debugging programa na single-procesor platformi.

Projektanzi embedded softvera mogu implementirati paralelne-programske modele na sledeća tri načina:

a) kreiranjem novog paralelnog-programskog jezika,b) proširenjem postojećeg jezika, ic) uvodjenjem bibliotečnih potprograma kod tradicionalnog sekvencijalnog jezika.

Za uspešno rešavanje svakog od pomenuta tri pristupa potrebno jevreme što u suštini kao krajnji efekat ima poskupljenje realizacije.

13

Page 14: Multi-core procesories.elfak.ni.ac.rs/es/Materijal/Pog.51-multi-core... · Web viewRazlika izmedju multi-core i many-core procesora pravi se na osnovu broja jezgara ugradjenih na

1.5.1 Savremena MPSoC programska rešenja

Postoje četiri standardna načina pomoću kojih se može rešiti problem razvoja MPSoC-ova. Prvi i najjednostavniji način koristi procesor opšte namene kao glavni procesni elemenat, a drugih (heterogenih) procesora kao akceleratore. Ovo rešenje omogućava projektantu da kreira sekvencijalni kod, a obezbeđuje da se koriste resursi MPSoC-ove platforme, što u suštini i ne zahteva od projektanat aneke velike napore (zadatke opšteg tipa obavlja glavni procesor, a specifične zadatke akcelerator). Ipak, ovaj pristup nije skalabilan jer je njegov potencijal (u toku izvršenja programa) ograničen centralizovanom raspodelom resursa. Ako su akceleratorske funkcije statički dodeljene tada ne postoji fleksibilnost u korišćenju resursa. Šta više, ovakvim pristupom ne iskorišćeva se u potpunosti puni potencijal MPSoC platformi jer se veća brzina u izvršenju programa postiže korišćenjem akceleratorskih mehanizama, a ne koristeći princip paralelnog izvršenja. To obično znači da je napredovanje izvršenja glavnog programa zaustavljeno sve dok se ne izvrše akceleratorske funkcije. Takođe, bez stvarnog paralelnog izvršenja problem koherencije podataka ne egzistira. Druga opcija se zasniva na sledećoj ideji: Kupiti komercijalni multiprocesorski RTOS (kakav je Quadros RTXC/MP-RTOS) i koristiti njegove primitive kojima se ostvaruje komunikacija, threading, i sinhronizacija. Sa aspekta embedded projektanta ova aktivnost uključuje deobu sekvencijalnog koda na thread-ove putem delimičnog razvoja programa od njegovog početka i delimičnog višestrukog korišćenja dostupnih sekvencijalnih kodnih sekvenci. Pored toga, projektant mora da sagleda i manuelno insertuje interthread sinhronizaciju. Ova aktivnost predstavlja težak problem za čije rešenje je potrebno vreme, Šta više, izabrani MP-RTOS se ponaša kao apstrakcioni nivo koji se nalazi na vrhu hardverske MPSoC platforme. Naime, MP-RTOS ne može da reši sve probleme koji se odnose na skalabilnost, fleksibilnost, i sudare oko korišćenja resursa, pa zbog toga oni ostaju kao „briga“, tj. odgovornost za koju je zadužen projektant. Projektant mora biti svestan da se hardverom rešava samo problem koherencije podataka.Treća opcija se sastoji u kreiranju paralelnog threaded koda koristeći pomoć softverskih pomagala kakvo je recimo Open MP. Jasno je da ovakav pristup utroška manuelnog rada u manjem iznosu, ali je rešenje podložno greškama. Projektant mora posebnu pažnju da posveti rešavanju problema koji se odnose na komunikaciju i sinhronizaciju između zadataka. Problemi koherentnosti i dalje egzistiraju, a projektant mora da usvoji da će se oni rešiti od strtane hardvera, što je sa druge strane skupo i neskalabilno rešenje. Sudari zbog korišćenja deljivih resursa i dalje ostaju problem, a takođe i problem dodele kao i planiranje dodele resursa (resource scheduling). Obično za ove probleme projektanti pretpostavljaju i usvajaju da će biti rešeni od strane RTOS-ma, ali kod realnih rešenja ne postoji garancija da će se oni uspešno i korektno razrešiti.Suština četvrte opcije se sastoji u sledećem: Projektant može manuelno da kreira paralelne threaded kodove koji koriste eksplicitne komunikacije bazirane na prenosu poruka, MPI, ili koriste usluge Portable Operating System Interface (Posix) biblioteke. To znači da je paralelizacija dodeljena kao zadatak projektantu. Zbog ovoga, rešenje je podložno greškama iz razloga što projektant mora eksplicitno da ubacuje delove koda za komunikaciju podacima, imajući u vidu osobine platforme sa kojom radi. Koherencija podataka ne predstavlja više problem, ali ono što je važno istaći je to da ne egzistira više koncept deljive memorije.Nezavisno od toga koja je od prethodne četiri pomenute tehnike izabrana, krajnji cilj (rezultat) projektanta MPSoC sistema se sastoji u preslikavanju ponašanaj rada sistema na procesne elemente. Kako bi verifikovao da li je preslikavanja (mapping) sa tačke gledišta funkcionalnosti korektno i da obavlja željenu funkciju, projektant mora da obavi veliki broj eksperimenata. Za slučaj da se željene performanse ne mogu ostvariti on mora da izvede nov način preslikavanja (različiti paralelizam i različita sinhronizacija). Naravno da se svakim ponavljanjem produžava vreme projektovanja. Pored toga, garantovati da će kombinacija aplikacionih komponenata raditi korektno takođe predstavlja težakk problem koga treba uspešno rešiti, jer projektant mora da koristi veliki broj

14

Page 15: Multi-core procesories.elfak.ni.ac.rs/es/Materijal/Pog.51-multi-core... · Web viewRazlika izmedju multi-core i many-core procesora pravi se na osnovu broja jezgara ugradjenih na

eksperimenata pomoću kojih će se kod različitih scenarija pokazati da je korišćenje resursa u svim kombinacijama korektno, i da ne dolazi do konflikta kod njihovog korišćenja.

1.6 Aplikaciono specifični procesori

Savremene embedded projektanske platforme sve više se suočavaju danas sa neverovatno strogim zahtevima koji se ogledaju u sledećem:

a) aplikacija da se izvršava brzo,b) ciljni proizvod da bude jevtin,c) potrošnja energije mala,d) proizvod fleksibilan, ie) proteklo vreme od momenta razrade specifikacija zahteva do trenutka plasmana proizvoda

na tržište da je kratko.

Rešenja bazirana na procesorima opšte namene jedva da mogu predstavljati pravi projektanski izbor, a takodje da ispune gore-pomenute zahteve. Razlozi su sledeći: Sistemi opšte namene kod kojih embedded proizvod treba da karakterišu visoke performanse, a istovremeno brza prilagodljivost brojnim aplikacijama su dosta skupi, imaju veliku potrošnju, i nude mnogo više od onoga što je potrebno ciljnoj aplikaciji.

Imajući u vidu prethodno-pomenuta sagledavanja, ako projektant dobro poznaje familiju aplikacija, koju taj visoko-performansi i fleksibilan proizvod treba da pokriva, tada on maksimalnu pažnju treba da posveti rešavanju problema koji se odnose na poboljšanje:

i) arhitekture memorijskog sistema,ii) mogućnosti staze-podataka,iii) efikasnosti kôda generisanog od strane kompajlera,iv) organizaciji različitih sastavnih delova SoC-a,v) arhitektura i algoritama specifičnih akceleratorskih mehanizama, ivi) rekonfigurabilnosti.

Kao posledica ogromnih potreba za aplikaciono specifičnim proizvodima diktirani zahtevima tržišta, sa jedne strane, i brojnim izazovima i mogućnostima koje se nude specijalizovanim rešenjima, sa druge strane, istraživanja u domenu aplikaciono specifičnih procesora (alternativno nazvani i namenski procesori), su postala jako intenzivna zadnjih nekoliko godina. Postignuti rezultati su zaista impresivni. Tako na primer, danas skoro svaka PC mašina ima ugradjeno namenski grafički procesor kojim se ostvaruje interaktivna 3D grafika, svaki mobilni telefon ima specijalizovan DSP procesor koji se koristi za obradu signala govora u realnom vremenu, svaka digitalna kamera ima aplikaciono specifični procesor za potrebe brzog digitalnog procesiranja signala slike, i td. Svi ovi procesori-visokih-performansi pripadaju klasi procesora-po-porudžbini (customized processors). Performanse procesora-po-porudžbini kod najvećeg broja rešenja se povećavaju nadogradnjom novih specijalizovanih instrukcija. Ipak performanse nisu jedina metrika na osnovu kojih savremene sisteme treba koncipirati. Površina na silicijumu i energetska efikasnost su podjednako važni.

15

Page 16: Multi-core procesories.elfak.ni.ac.rs/es/Materijal/Pog.51-multi-core... · Web viewRazlika izmedju multi-core i many-core procesora pravi se na osnovu broja jezgara ugradjenih na

Projektovanje procesora-po-porudžbini bazirano na proširenju skupa instrukcija (Instruction Set Extension-ISE) predstavlja danas široko prihvaćena tehnika kod visoko-performansnih embedded sistema. Jedan od ključnih izazova na polju projektovanja procesora-po-porudžbini se odnosi na to kako povećati brzinu procesora za dati (posmatrani) aplikacioni domen, a da pri tome ne replicirati već postojeću deljivu logiku (multiplicirati već implementirani hardver). Procesor koji poseduje aplikaciono-specifični skup instrukcija (Application-Specific Instruction-set Processor- ASIP) predstavlja jevtino i dobro rešenje ako može da pokrije potrebe ne samo jedne nego klase aplikacija. Tako na primer, ASIP koji je u stanju da efikasno procesira kompletan skup video standarda je daleko ekonomičniji u odnosu na onaj koji je namenjen samo za MPEG2 standard. Kada se neki skup instrukcija proširi sa namerom da se pokrije kompletna klasa aplikacija, realno je očekivati da se može identifikovati veći broj proširenja, pri čemu svako proširenje ima za efekat povećanje površine na silicijumu i povećanje potrošnje. Glavni cilj projektanta, sada, je da pronadje rešenje koje će dati zadovoljavajući odnos cena-performansi.Danas, MPSoC-ovi i CMP-ovi predstavljaju de facto standard kako za realizaciju embedded tako i arhitektura opšte namene. MPSoC-ovi projektovani po porudžbini koji podržavaju paralelno programiranje su postali dominantna računarska paradigma za realizaciju aplikaciono specifičnih procesora. U tom pogledu, MPSoC-ovi predstavlju najbolji kompromis sa aspekta stabilnosti hardverske platforme koja sada postaje softverski programibilna, ukrojiva potrebama korisnika, nadogradiva, i proširljiva. U tom smislu, MPSoC paradigma minimizira rizik koji se odnosi na neispunjenje krajnih rokova kod fabrikacije proizvoda za potrebe tržišta, a zahvaljujući većoj efikasnosti svoje arhitekture i mogućnosti korišćenja softvera garantuje dobar uspeh, kao i fleksibilan, efikasan, i jevtin proizvod.

Paralelni računarski sistemi: Motivacija

Već više od tridesetak godina ljudi koji se bave računarstvom tvrde da paralelni računari predstavljaju neizbežan korak u evoluciji računara i upozoravaju na neophodnost programiranja ovakvih računara. Medjutim u proteklom periodu njihova upozorenja nisu shvaćana ozbiljno. Paralelni računari i paralelno programiranje su predstavljali, sa jedne strane, izvor frustruacija, a sa druge, verovanje u nešto svetliju budućnost, samo malih grupa programera i naučnika koji su prvenstveno bili suočeni sa rešavanjem problema koji nadmašuju dotadašnje mogućnosti konvencionalnih računara. Ostali i največi broj programera i dalje se čvrsto držao koncepta zasnovan na sekvencijalnom programiranju. Naime, za najveći broj programera i najveći broj aplikacija, godišnja povećanja od 40% - 50% računarskih performansi, koja su pre svega bila zanovana na arhitekturnim poboljšanjima ( tu treba uvrstiti: a) povečana taktna frekvencija rada procesora; b) ugradnja keš memorije većeg obima; c) implementacija duboke protočnosti; d) uvodjenje superprotočnosti, superskalarnosti, predikcija grananja, preimenovanje registara, i td.,) su bila zadovoljavajuća, ali na žalost ona danas nisu više moguća. Drugim rečima, dobra vremena su prošla. To znaći da, negde sredinom 2004 godine, pedesetogodišnjem povećanju performansi sekvencijalnih računara došao je kraj. I pored toga što broj tranzistora na čipu i dalje raste, jer i dalje važi Moore-ov zakon, postalo je veoma teško povećati performanse sekvencijalnih računara koristeći isključivo dosadašnje primenljive pristupe. Povećanje taktne frekvencije koje dovodi do povećanja performansi nije više moguće, razlozi su povećana disipacija i hladjenje čipa.

Odziv industrije na ove promene predstavlja uvodjene (izrada) na jednom čipu paralelni računar, poznat pod imenom ’chip-multiprocessor’, ’ multi-core ’ ili ’ many-core ’ računar. Arhitektura ovih računara podrazumeva smeštanje na jednom (single) čipu dva ili veći broj nezavisnih procesora i njihovo povezivanje preko deljive (shared) memorije.Arhitekture ovih sistema slične su multiprocesorskim sistemima sa deljivom memorijom, a ono što je najvažnije je to da one nude potencijalno rešenje problema nazvan ’zastoj u poboljšanju

16

Page 17: Multi-core procesories.elfak.ni.ac.rs/es/Materijal/Pog.51-multi-core... · Web viewRazlika izmedju multi-core i many-core procesora pravi se na osnovu broja jezgara ugradjenih na

performansi ’. Drugim rečima, broj procesora koji se može fabrikovati na jednom čipu i dalje će se povećavati, shodno Moore-om zakonu to povećanje iznosi 40% godišnje, što znači da će se broj procesora duplirati na svake dve godine. Kako če se broj procesora duplirati tako i broj instrukcija koje će se izvršavati za period od jedne sekunde, bez povećanja taktne frekvencije, će se povećavati. Ovo znači da će se i performanse dobro formulisanih paralelnih programa, shodno Moore-om zakonu, takodje povećavati. Povećanje performansi dovodi do povećanja funkcionalnosti računara, a time i do njihove šire primene u novim oblastima nauke i tehnike.

Na žalost, i pored četrdesetogodišnjeg iskustva, sa paralelnim računarima, danas postoji relativno malo ’ dobro formulisanih ’ paralelnih programa. Razlog ovome je taj što programiranje paralelnih računara je znatno teže od programiranja sekvencijalnih. Naime, paralelne programe, u odnosu na sekvencijalne, je mnogo teže formulisati, a takodje je teže kreirati, i debug-irati. Nedeterminističke greške (bugs) koje se javljau kod konkurentnih programa, je teško pronaći i otkloniti. Deo ovih teškoća, pripisuju se egzotičnoj prirodi paralelnog programiranja, u koje se do sada, od strane proizvodjača softvera, relativno malo investiralo, a takodje i relativno malo pažnje posvećivalo u akademskim institucijama.

Teškoće na koje programeri nailaze kod kreiranja paralelnih programa u uskoj su vezi sa konkuretnošću i nedeterminizmom.

Multithreading: Šta je to?

Da bi objasnili pojam multithreading naophodno je prvo definisati nekoliko termina.Program koji se izvršava od strane računara naziva se proces. Računari mogu izvršavati

nekoliko procesa istovremeno (simultano): kao na primer, moguče je istovremeno slušati muziku na svom personalnom računaru, pretraživati stranice na Internet-u, ili vršiti neke druge provere. Svaki proces se sastoji od jednog ili većeg broja thread-ova koji se izvršavaju simultano. Primera radi, Word procesor ima jedan thread kojim se manipuliše prihvatanjem podataka sa tastature (unos novog teksta), drugi thread koji obavlja aktivnost tipa spell-checking dokumenta sa kojim korisnik radi, treći može se odnositi na štampanje nekog trećeg dokumenta, i td. Ovakvim pristupom korisnik ne mora da čeka, na primer, da se neki dokument u celini odštampa pre nego što može da otkuca (unese) tekst za neki novi dokument .

Kod konvencionalnih procesora, thread-ovi stvaraju iluziju istovremenog izvršenja. Thread-ovi se u suštini sekvencijalno izvršavaju od strane procesora ali redosled njihovog izvršenja definiše operativni sistem, OS. Kada jedan thread završi ili mu istekne vreme predvidjeno za njegovo izvršenje, OS prvo smešta (sačuva) njegovo arhitekturno stanje, a zatim napuni (load-uje) arhitekturno stanje novog thread-a, i nakon toga startuje sa izvršenjem narednog thread-a. Ova procedura se naziva kontekst-komutacija (context switching). S obzirom da procesor brzo komutira kroz sve thraed-ove (prebacuje se sa izvrešenje jednog thread-a na drugi), korisnik ima osečaj (iluziju) kao da se svi thread-ovi izvršavaju istovremeno.

Multithreaded procesor poseduje (raspolaže) sa više od jedne kopije svog arhitekturnog stanja, tako da u jednom trenutku više od jedan thread može biti aktivan. Tako na primer, ako proširimo MIPS procesor na takav način da procesor ima četiri programska brojača i 128 registara (4 RF polja sa po 32 registra), tada četiri thread-a mogu biti istovremeno dostupna. Ako jedan thread čeka na podatke iz memorije (recimo sa diska), tada procesor može da komutira na drugi thread bez kašnjenja, jer su programski brojač i registri RF pola već dostupni. Šta više, ako jednom thread-u nedostaje (ne poseduje) dovoljno paralelizma da bi održavao sve izvršne (funkcionalne) jedinice zauzete, tada drugi thread može da inicira izvršenje instrukcije(a) na nezauzetom(im) jedinicom(ma).

17

Page 18: Multi-core procesories.elfak.ni.ac.rs/es/Materijal/Pog.51-multi-core... · Web viewRazlika izmedju multi-core i many-core procesora pravi se na osnovu broja jezgara ugradjenih na

Multithreading ne poboljšava performanse individualnog thread-a, jer on u suštini ne povećava ILP (instruction level parallelism). Ali multithreading povećava ukupnu sistemsku propusnost (system throughput) procesora, jer veći broj thread-ova (multiple threads) mogu istovremeno koristiti raspoložive resurse procesora koji bi inače bili pasivni (idle) za slučaj da se izvršava samo jedan (single) thread. Multithreading u suštini nije skup za implementaciju jer on replicira samo programski brojač, PC, i RF polje (register file- primera radi kod MIPS procesora RF polje čine ga 32 registra), a ne izvršne (funkcionalne) jedinice (recimo, množače, deljitelje, FP jedinice, ALU-ove i dr.) i memoriju.

Paralelni programski modeli

Sledeća dva programska modela je moguće jasno identifikovati:

1. Data parallelism- je efikasan programski model kojim se jedna operacija istovremeno primenjuje na veći broj individualnih stavki (procesora). Ovakav model je pogodan za primenu kod numeričkih izračunavanja kakva su recimo matrična množenja. Kod data parallel programa paralelizam je implicitan i obilan. Kompajler je taj koji koristi svojstvenu konkurentnost samog problema aplicirajuči pri tome operaciju izračunavanja nad elementima sa kojima se manipuliše, deleći ukupan posao izmedju dostupnih procesora. To znači da problem sinhronizacije rada i balansa opterećenja izmedju dostupnih procesora su aktivnosti koje u toku rada sistema obavlja kompajler. Na nesreću, data parallelism nije univerzalni programski model. On je pogodan za neke probleme, a teško se aplicira na veći broj programskih problema.

2. Task parallelism- obavlja izračunavanja nad konkurentnim thread-ovima čiji se rad koordiniše eksplicitnom sinhronizacijom uključujući mehanizme tipa lock, semafori, redovi čekanja, i td. Ovaj nestrukturni programski model ne uvodi ograničenja koja se odnose na: 1) kôd koga svaki thread izvršava; 2) načina na koji thread-ovi komuniciraju; i 3) načina na koji se zadaci dodeljuju thread-ovima. Drugim rečima, ovaj model je univerzalan, i sposoban za izračunavanje svih oblika paralelnog izračunavanja. Na žalost veoma je teško kreirati i verifikovati korektnost paralelnih programa.

Dva glavna pravca u razvoju mikroprocesora

Počev od 2003 godine razvoj mikroprocesora se kretao u sledeća dva smera:

1. Realizaciji multicore arhitektura - ove arhitekture su prvenstveno namenjene za brže izvršenje sekvencijalnih programa. Tipična rešenja su ona bazirana na dual-core procesorima, quad-core procesorima (Intel Corei7), i td. Procesorska jezgra (processor cores) se karakterišu van-redoslednim izvršenjem instrukcija (out-of-order instruction executions), istovremenog iniciranja izvršenja većeg broja instrukcija (multiple issue), implementacijom potpunog skupa instrukcija procesora x86, podrška radu hyperthreading-u sa dva hardverska thread-a, i maksimiziranju brzine izvršenja sekvencijalnih programa.

2. Realizaciji manycore arhitektura - ove arhitekture su prvenstveno namenjene za povećanje sistemske propusnosti (system throughput) kod paralelnih aplikacija. Manycore arhitekture se sastoje od većeg broja core-ova. Tipičan primer je NVIDIA GeForce GTX 280 grafička procesorska jedinica (graphic processing unit- GPU) koja se sastoji

18

Page 19: Multi-core procesories.elfak.ni.ac.rs/es/Materijal/Pog.51-multi-core... · Web viewRazlika izmedju multi-core i many-core procesora pravi se na osnovu broja jezgara ugradjenih na

od 240 core-ova. Svaki core podržava multithreading režim rada, in-order (redosledno) izvršenje instrukcija, iniciranje izvršenja od jedne instrukcije po ciklusu (single issue), a ima zajedničku upravljačku jedinicu i instrukcioni keš sa još sedam drugih susednih core-ova.

Odnos performansi koji se može ostvariti koristeći multicore CPU i manycore GPU je prikazan na slici 1.

Slika 1 Odnos preformansi izmedju manycore GPU i multicore CPU

Kao što se vidi sa slike 1 odnos vršnih performansi koje se odnose na FP (floating point) izračunavanja izmedju manycore i multicore je reda 10:1 (teraflopls (1000 gigaflops) prema 100 gigaflops- važi za 2009 godinu).

Velika razlika u performansama izmedju manycore GPU i opšte namene multicore CPU posledica je različite filozofije projektovanja oba tipa procesora (vidi sliku 2).

19

Page 20: Multi-core procesories.elfak.ni.ac.rs/es/Materijal/Pog.51-multi-core... · Web viewRazlika izmedju multi-core i many-core procesora pravi se na osnovu broja jezgara ugradjenih na

Slika 2 CPU-ovi i GPU-ovi karakterišu različite dizajn filozofije

Dizajn multicore CPU-a je optimiziran za postizanje boljih performansi kod sekvencijalnih programa. Upravljačka jedinica (control unit) je tako projektovana da omoguči paralelno izvršenje instrukcijama single-thread-a, ili van-redoslednom izvršenju instrukcija, zadržavajući pri tome prirodu sekvencijalnog izvršenja. Šta više, ugradnjom keš memorija velikog kapaciteta redukuje se latencija pristupa instrukcijama i podacima u toku izvršenja programa. Na žalost, kako upravljačka logika CPU-a (izvedena kao hardwired control logic) tako i keš memorija velikog kapaciteta (indirektno povećava stopu keš pogodaka) nemaju značajan uticaj na vršne performanse kod izračunavanja na multicore mašinama.

Sa druge strane, dizajn filozofija manycore GPU-a je uglavnom diktirana brzim razvojem industrije video-igara. Kod savremenih video-igara broj potrebnih FP izračunavanja za generisanje nove slike je ogroman, tj. da tako kažemo-masivan. Zbog ovoga, projektanti manycore GPU-a pre svega su usmereni ka pronalaženju rešenja koja optimiziraju površinu čipa i potrošnju energije za FP izračunavanja. Cilj je pri ovome da se poboljša sistemska propusnost, tj. ostvari masovno izvršenje thread-ova. Komunikaciona propusnost (communication bandwidth) se takodje povećava ugradnjom manjeg broja keš memorija, što znači da se pristup kešu lokalizuje, a ne globalizuje kao što je to slučaj kod multicore CPU-a (keš memorija većeg obima je zajednička (deljiva) za veći broj core-ova). Direktna posledica ovog pristupa je ta da je veća površina na čipu kod manycore rešenja rezervisana sada za FP izračunavanja.

Ipak treba naglasiti da se manycore GPU-ovi prvenstveno projektuju kao mašine namenjenih za numerička izračunavanja, i da one nisu u stanju dobro (efikasno) da obavljaju neke zadatke za koje su multicore CPU-ovi namenjeni. Zbog toga, za očekivati je da će se najveći broj aplikacija efikasno izvršavati na kombinovanim CPU/GPU arhitekturama. Sekvencijalni delovi će se izvršavati na multicore CPU-ovima, a numerički intenzivni delovi na manycore GPU-ovima. Tipično takvo rešenje je CUDA programski model uveden od strane NVIDIA 2007 godine.

20

Page 21: Multi-core procesories.elfak.ni.ac.rs/es/Materijal/Pog.51-multi-core... · Web viewRazlika izmedju multi-core i many-core procesora pravi se na osnovu broja jezgara ugradjenih na

***************************************************************************Primeri

Razmatranja Gustafson-a u odnosu na Amdahl-a

Amdahl-ovim zakonom kreirani programi se vide kao fiksni (nešto što se ne može menjati), a njihove promene (modifikacije), kada je u pitanju ubrzanje rada sistema, se izvode iskljućivo na računarima (promena hardvera ili softvera). Medjutim najveći broj današnjih aplikacija ne izvršava se na računarima od pre 20 godina, a šta više mali broj od tih aplikacija se izvršava i na računarima koji su stari oko 10 godina. Ove aplikacije se ne odnose samo na video igre, nego na office aplikacije, web browser-e, softver za obradu slike, DVD produkcija, softver za editovanje, i dr.

John Gustafson sa Sandia National Laboratories u svojim razmatranjima usvojio je jedan različiti pristup u odnosu na Amdahl-a i predložio je njegovu reevaluaciju. Ideja reevaluacije se sastoji u sledećem: Oučava se da kada se posmatra porast radnog opterećenja tada paralelizam postaje znatno korisniji s obzirom da računari postaju moćniji i da oni podržavaju izvršenje programa koji obavljaju više poslova, a ne fokusiraju se samo na fiksno radno opterećenje. Naime, kod velikog broja problema, kako se obim problema povećava, serijska frakcija (deo) se smanjuje, a paralelni deo brže raste od serijskog. To znači da sa povećanjem obima problema uticaj serijskog dela se smanjuje, a shodno tome skalabilnost Amdahl-ovog zakona se poboljšava.

Da bi ilustrovali razliku izmedju Amdahl-ovog zakona i zapažanja Gustafson-a poslužićemo se ilustracijama prikazanih na slici 1. Usvojićemo pri tome da program ćine pet celina P1, P2, P3, P4, i P5 od kojih se svaka izvršava za po 100 vremenskih jedinica.

21

Page 22: Multi-core procesories.elfak.ni.ac.rs/es/Materijal/Pog.51-multi-core... · Web viewRazlika izmedju multi-core i many-core procesora pravi se na osnovu broja jezgara ugradjenih na

a) izvršenje programa bez paralelizma

b) ograničenje u saglasnosti sa Amdahl-ovim zakonom

c) Gustafson je uočio put skaliranja

Slika 1 Serijsko izvršenje programa, primena Amdahl-ovog zakona, primena zapažanja Gustafson-a

Kako Amdahl-ov zakon tako i Gustafson-ova zapažanja su korektna. Razlika se ogleda u tome da li želimo da učinimo postojeći program da se izvršava brže sa istim radnim opterećenjem ili

22

Page 23: Multi-core procesories.elfak.ni.ac.rs/es/Materijal/Pog.51-multi-core... · Web viewRazlika izmedju multi-core i many-core procesora pravi se na osnovu broja jezgara ugradjenih na

imamo viziju da radimo sa većim radnim opterećenjem. Savremene aplikacije više favorizuju složenije i obimnije programe. Pri ovome treba istaći da se zapažanja Gustafson-a bolje uklapaju sa ovakvim razmatranjima.

Skalabilnost aplikacije u direktnoj je vezi sa povećanjem posla koga treba obaviti paralelno i minimiziranjem, ili smanjenjem, posla koga treba izvršiti serijski. Drugim rečima, Amdahl-ov zakon motiviše nas da redukujemo serijski deo, dok Gustafson ukazuje da treba razmatrati obimnije probleme, kod kojih je paralelni rad relativno veći u odnosu na serijski.

Zadatak 1

Neka program čine pet celina P1, P2, P3, P4, i P5, od kojih se svaka izvršava za po 100 vremenskih jedinica, tp.

Slika 1 Izvršenje programa bez paralelizma

Primenjujući Amdahl-ov zakon odrediti ubrzanje koje se može postići u radu sistema ako se programske celine P2 i P4 mogu paralelizovati tako da se mogu izvršavati na:

a) dual-core mašini,b) quad-core mašini,c) 300-core mašini.

Programske celine P1, P3 i P5 se ne mogu paralelizovati, tj. izvršavaju se sekvencijalno.

Odogovor:

Ubrzanej sistema shodno Amdahlovom zakonu je definisano sledećom relacijom:

gde je - ukupno vreme izvršenja programa bez paralelizma, u ovom slučaju 500tp, - deo programa koji se izvršava serijski, u ovom slučaju je 300tp, - deo programa koji se može paralelizovati, u našem slučaju je 200tp.

a)

b)

23

Page 24: Multi-core procesories.elfak.ni.ac.rs/es/Materijal/Pog.51-multi-core... · Web viewRazlika izmedju multi-core i many-core procesora pravi se na osnovu broja jezgara ugradjenih na

c)

Interpretacija Amdahlovog zakona je sledeća:Brzina izvršenja programa je ograničena sumom programskih celina koje se ne mogu izvršavati paralelno, tj. od vremena izvršenja serijskih delova nezavisno od toga koliko procesora imamo instalirano u sistem.

a) ubrzanje 1,25 b) ubrzanje 1,4

Slika 2. Progres u dodavanju paralelizma

Skalabilnost programa predstavlja merilo koliko se ubrzanje uvećava ugradnjom novih jezgara u sistem. Ubrzanje predstavlja odnos vremena izvršenja programa bez paralelizma u odnosu na vreme kada se taj program izvršava paralelno.Realno je očekivati (vidi sliku 2) da se izvršenje programa na sistemu sa dva procesorska jezgra izvršava dvaput brže (slika 2a) na sistemu sa četiri procesorska jezgra četiri puta brže (vidi sliku 2b), itd. Na osnovu dobijenih rezultata smo zaključili da program ne skalira dobro iznad određene tačke kada u sistem ugrađujemo (dodajemo) procesorska jezgra. Iznad te tačke javlja se overhead zbog distribucije i sinhronizacije koja postaje sada dominantna.

Zadatak 2

Za odabranu mašinu predložena su tri nova arhitekturna poboljšanja kojima se mogu postići sledeča ubrzanja.a) S1 = 30b) S2 = 20c) S3 = 15Ako je u datom trenutku moguće istovremeno implementirati samo po jedno ubrzanje, odrediti ukupno ubrzanje Sp koje se može ostvariti u sva tri slučajeva. Neka je frakcija izračunavanja f=0.9.

Odgovor

24

Page 25: Multi-core procesories.elfak.ni.ac.rs/es/Materijal/Pog.51-multi-core... · Web viewRazlika izmedju multi-core i many-core procesora pravi se na osnovu broja jezgara ugradjenih na

Savremena verzija Amdahl-ovog zakona kaže: Ako se poboljša frakcija izračunavanja f za faktor ubrzanja S, tada će ukupno ubrzanje biti

Sp(f,S)= 1/((1 –f) + f/S)

Kada je f malo tada optimizacija nema efekat. Kada S→∞ tada Sp(f,S)≈ 1/(1 –f)

Ubrzanje n-procesorskog sistema je dato izrazom

Sp(f,n)= 1 /(( 1 –f) + f/n)

Kada n → ∞ tada

Sp(f,n) ≈ 1/( 1 –f)

U konkretnom slučajua)Sp(0.9,30)= 1 /(( 1 –0.9) + 0.9/30) = 10,75b) Sp(0.9,20)= 1 /(( 1 –0.9) + 0.9/20) = 6.89c) Sp(0.9,15)= 1 /(( 1 –0.9) + 0.9/15) = 6.25

Zadatak 3

Za odabranu mašinu predložena su tri nova arhitekturna poboljšanja kojima se mogu postići sledeča ubrzanja.a)S1 = 30b)S2 = 20c)S3 = 15i) Neka je u datom trenutku moguće implementirati sva tri ubrzanja. Ako se S1 i S2 mogu implementirati na 25% od ukupnog vremena izračunavanja, tj na frakcijama f1 i f2, odrediti kolika je vremenska frakcija f3 da bi se postiglo ukupno ubrzanje Sp= 10.ii) Neka se poboljšanja mogu koristiti na 25 %, 35% i 10% od vremena za poboljšanja a), b) i c), respektivno. Kolika je frakcija vremena za koju se ne vrši poboljšanje?Odgovori)Ako su f1, f2 i f3 vremenske frakcije na koje se odnosi poboljšanje, a S1, S2 i S3 su ubrzanja za ta poboljšanja tada na osnovu Amdahl-ovog zakona imaćemo da je ukupno ubrzanje Sp dato sledećim izrazom

Zamenom odgovarajućih vrednosti dobijamo

25

Page 26: Multi-core procesories.elfak.ni.ac.rs/es/Materijal/Pog.51-multi-core... · Web viewRazlika izmedju multi-core i many-core procesora pravi se na osnovu broja jezgara ugradjenih na

Rešavajući po f3 dobićemo

f3= 0.45

ii)

Redukovano vreme izvršenja Tr iznosi

Tr = (( f1 /S1) + ( f2 /S2) + ( f3 /S3) + (1 – f1 –f2- f3))* Tstaro

Vreme za koje poboljšanje se koristi Tpob iznosi

Tpob= (1 – f1 –f2- f3)* Tstaro

Frakcija redukovanog vremena za koje se pobolšanje koristi fr iznosi

fr = ((1 – f1 –f2- f3))* Tstaro / (( f1 /S1) + ( f2 /S2) + ( f3 /S3) + (1 – f1 –f2- f3))* Tstaro

zamenom vrednosti dobijamo

fr = ((1 – 0.25 –0.35- 0.1))* Tstaro / (( 0.25 /30) + ( 0.35 /20) + ( 0.10 /15) + (1 – 0.25 –0.35- 0.10))* Tstaro

fr = 90 %

***********************************************************************

26