Download as pdf or txt
Download as pdf or txt
You are on page 1of 26

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
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.
1
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
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
hardverska podrška (tj specifičan hradverski interfejs) kako bi se obavili ti specifični zadaci moguće

3
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
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
• 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
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
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
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
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, i
d) 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
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

11
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.
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

12
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,
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, i
c) uvodjenjem bibliotečnih potprograma kod tradicionalnog sekvencijalnog jezika.

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

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

14
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
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, i
e) 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, i
vi) 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

15
na osnovu kojih savremene sisteme treba koncipirati. Površina na silicijumu i energetska efikasnost
su podjednako važni.

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

16
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
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ć

17
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).
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.

18
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
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
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
***************************************************************************
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
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
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:


Ttot
S=
Tser + T p
gde je Ttot - ukupno vreme izvršenja programa bez paralelizma, u ovom slučaju 500tp, Tser - deo
programa koji se izvršava serijski, u ovom slučaju je 300tp, T p - deo programa koji se može
paralelizovati, u našem slučaju je 200tp.
500t p
a) S1 = = 1.25
200
300t p + tp
2
500t p
b) S 2 = = 1.4
200
300t p + tp
4

23
500t p
c) S 3 = = 1.7
200
300t p + tp
300

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 = 30
b) S2 = 20
c) S3 = 15
Ako 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
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čaju
a)
Sp(0.9,30)= 1 /(( 1 –0.9) + 0.9/30)
= 10,75
b)
Sp(0.9,20)= 1 /(( 1 –0.9) + 0.9/20)
= 6.89
c)
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 = 30
b)S2 = 20
c)S3 = 15
i) 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?
Odgovor
i)
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
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

You might also like