13.07.2015 Views

VxWORKS i VIÅ EJEZGRENI PROCESORI

VxWORKS i VIÅ EJEZGRENI PROCESORI

VxWORKS i VIÅ EJEZGRENI PROCESORI

SHOW MORE
SHOW LESS
  • No tags were found...

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>Trendovi kod višejezgrenih procesoraProizvoĎači poluvodiča idu ka trendu višejezgrenih procesora.Godinama su veće performanse ostvarivane pakovanjem sveviše i više tranzistora na jedan čip i povećanjem frekvencijasata. MeĎutim, poluvodička industrija je sada na mjestu gdjefizika više ne dozvoljava povećanje broja tranzistora ipovećanje frekvencije sata. ProizvoĎači poluvodiča ne mogupovećavati frekvenciju a da pri tome zadrže potrošnju energijena razumnom nivou. Slika prikazuje efekte smanjivanjafrekvencije na smanjenje potrošnje električne energije.Potrošnja energije u procesoru je proporcionalna trečemstepenu napona, a napon je proporcionalan frekvenciji. Dakle,na nižoj frekvenciji možemo pokrenuti procesor sa niskimnaponom tako da se potrošnja energije bitno smanjuje. Ako sefrekvencija sata spusti za 10%, performanse idu na dolje za10% , ali je smanjenje potrošnje energije daleko veće, kao što 4


<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>se vidi na bar prikazima na slijedećoj slici.Efekti smanjivanja frekvencije na smanjenje potrošnjeelektrične energije5


<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>Malo žrtvovanje performansi čuva dosta energije. Sada, akodva ovakva procesora mogu biti stavljena na isti čip sa malimsmanjenjem frekvencije sata, u teoriji, imali bi situacijuprikazanu kao na prethodnoj slici : procesor sa istompotrošnjom energije ali sa teoretski dosta više procesorskemoći.Smanjivanje dimenzija i povećanje broja tranzistora činiekonomičnijim stavljanje više procesorskih jezgara koje radena nižim frekvencijama. Ovo je trend koji je rezultiraovišejezgrenim procesorima. Ali za softverske inženjereiskorištavanje povećane procesorske moći isporučene naovakav način je bitno drugačije nego iskorištavanje povećanjaprocesorske moći povećanjem frekvencije sata.6


<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>Intel, su usmjerili kompletnu proizvodnu liniju premavišejezgrenoj tehnologiji; dok ostali, kao što je Freescaleodržava balansiraniji protfolio jednojezgrenih i visejezgrenihprocesora, u zavisnosti od potreba tržišta.Sve više i više ureĎaja će zahtijevati veće performanseprocesora, i softverski arhitekti i developeri neće imati drugogizbora nego da se prilagode višejezgrenim procesorima kakobi postigli veće performanse u okviru ograničenja vezanih zapotrošnju energije.8


<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>Razlike u višejezgrenoj tehnologijiTri aspekta čine razvoj aplikacija za višejezgrena okruženjabitno drugačijim nego za jedno jezgrena okruženja:1. Nema garancije da će aplikacija dobiti na performansamaiz multiprocesiranja. Ne mogu se riješiti svi problemi samultiprocesiranjem. Potrebno je pronaći bitno različit algoritamkako bi se obavio posao. Postoječi algoritmi možda rade ujedno procesorskim okruženjima ali se ne skaliraju na više odjednog procesora.2. Dizajn sistema je kompliciraniji nego kod jednoprocesorskogsistema, uz pretpostavku da imamo algoritam koji se možeizvršavati konkurentno. Postoji jaka interakcija izmeĎu načinana koji hardver podržava multiprocesiranje, načina na kojioperativni sistem i sistemski softver podržavajumultiprocesiranje i načina na koji je aplikacija razdijeljena kako9bi iskoristila prednosti više procesora. Korisnici moraju


<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>determinističko zbog interakcije izmeĎu niti, aktivnostiinterapta u pozadini i načina na koji operativni sistemrasporeĎuje niti.Prikladnost aplikacije za multiprocesiranjeAko ima neki posao koji treba da se uradi i imamo naraspolaganju dva čovjeka, taj posao se može uraditi brženego sa jednom osobom. Jezgre u višejezgrenom procesorusu kao radnici koje možemo da rasporedimo na posao.Očigledno, potrebno je imati dovoljno posla kako bi svi radnicibili uposleni. Zatim trebamo biti u mogućnosti da podijelimoposao na dovoljno dijelova kako bi svaki radnik imao nešto daradi. Ali ponekad više radnika ne riješava problem brzo.Radnici moraju raditi zajedno ili će doći do pada efikasnosti.Proizvodna linija je primjer multiprocesiranja. Dosta poslamože biti obavljeno pažljivom koordinacijom više aktivnosti11tako da se mogu što je moguće više obavljati paralelno.


<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>MeĎutim, postoje zavisnosti izmeĎu trenutnih faza kroz kojeposao prolazi. Ako zavisnosti nisu dobre ili posao nije uraĎenkako treba, naredni koraci čekaju, tako da izlaz trpi.Neki zadaci se jednostavno ne mogu ubrzati dodavanjemviše ljudi ili resursa, kao što je npr. čitanje knjige. To je striktnoserijska operacija. Super računari i masivni paralelni računarise koriste samo za odreĎene vrste aplikacija kao što jevremenska prognoza, finansijsko modeliranje itd., što nijeneophodno za svaki računarski problem.12


Amdalov zakon<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>Amdalov zakon je još jedno ograničenje koje se morarazumijeti. Svaki problem ima procenat posla koji se možeparalelizovati i procenat posla koji mora biti uraĎen po nekomredoslijedu (npr. serijski). U zavisnosti od toga koliko poslamože biti uraĎeno paralelno, postoji ograničenje koliko brzoposao može biti uraĎen bez obzira koliko je procesoradodijeljeno problemu. Amdalov zakon izgleda:gdje Serijski % predstavlja procenat posla (koda) koji mora bitiuraĎen serijski, i (1 – serijski %) je procenat posla (koda) kojise može paralelizovati. Naredna slika prikazuje efekteAmdalovog zakona kod aplikacije sa različitim stepenima13serijalizacije i broja dostupnih procesora.


<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>Efekti Amdalovog zakonaSa 5% serijalizacije, ubrzanje performansi je relativno linearnokako se povećava broj procesora. Ali sa 16 procesora, dostižese maksimum ubrzanja od devet puta. Serijalizacija od 5%ograničava maksimalno moguće ubrzanje na 9 puta za 16procesorski sistem. Kako se procenat serijalizacije povećava14maksimalno ubrzanje, kao i postignute performanse se značajno


<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>smanjuje. Sa 50% serijalizacije, performanse se izravnavaju saperformansama postignutim sa četiri procesora. UreĎaj sa10% serijalizacijom neće imati bolje performanse sa osamprocesorskim sistemom koji je samo četiri puta brži od ureĎajapogonjenog procesorom sa jednim jezgrom.Čak i mala povećanja u obimu posla koji treba biti uraĎenserijski može uveliko umanjiti maksimalne performanse.Jedan primjer je umrežavanje gdje sistem rukuje savišestrukim nezavisnim tokovima dolazečih paketa. Svaki tokje nezavisan u odnosu na druge; što se više procesora možeangažovati na što više tokova podataka. Višejezgreniprocesori pomažu ovakvim sistemima iz razloga što višeprocesora na čipu pomaže sistemu koji je manji i manje trošienergije uz više uraĎenog posla u poreĎenju sajednoprocesorskim sistemom.15


<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>Multiprocesiranje i višejezgrenost imaju jak uticaj naarhitekturu hardvera, što pak odreĎuje arhitekturu sistemskogsoftvera i ima uticaj na arhitekturu aplikacije.Postoji dosta načina na koji posao u datoj aplikaciji može bitipodijeljen zbog paralelizma – paralelizovan. Paralelizacijaaplikacije je jedan od bitnijih aspekata na koje proizvoĎačiureĎaja moraju da vode računa prilikom dizajnavišeprocesorskih sistema.16


<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>Svi oblici podjele aplikacija prikazani na gornjim slikama suvalidni i odgovaraju različitim problemima. Zadatak dizajnerasistema je da pronaĎe najbolji način podjele aplikacija zaodgovarajući problem i dizajn hardvera. Na vrhu17


<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>je cijevni ( pipe) dizajn, dosta sličan proizvodnoj liniji.Na dnu je distribucija nezavisnog posla na više od jednogradnika.Najkompikovaniji dizajn podjele aplikacije je prikazana naposljednjoj slici u nizu. Ovaj dizajn radi sa fino-granuliranimparticioniranjem. Postoji jedan skup podataka, i da bi sepostigle zahtijevane performanse, više operacija mora bitiobavljeno nad tim podacima; ne postoji striktan rasporedprema kojem bi ove operacije trebale biti obavljene.Maksimiziranje performansi zahtijeva više od jednog radnikakoji će da istovremeno riješava isti problem. Ovo je kao dastavljamo više radnika da rade posao pod uslovom da posaomora biti uraĎen na način da svi rade efikasno i brzo. Svakiradnik uzima manji dio većeg posla i radi na njemu nezavisnou odnosu na druge radnike.18


<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>Podešavanja operativnog sistema za multiprocesiranjePostoje dvije vrste podešavanja operativnih sistema koja supodesna za višeprocesorske sisteme: simetričnomultiprocesiranje (SMP) i nesimetrično multiprocesiranje(AMP).AMP konfiguracijaSMP konfiguracija19


<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>Kod AMP konfiguracije operativni sistem se izvršava nasvakom procesoru ili jezgru multiprocesirajučeg sistema.Svaka kombinacija procesor/OS je jedan jedno-procesorskiračunar. Sistem se sam po sebi sastoji od više ovakvihračunara (takoĎer poznati kao čvorovi) koji treba da uradeposao koji im se rasporedi. Ono šta povezuje ove nezavisnečvorove u jedan veliki sistem je mehanizam meĎukonekcijekojeg koriste procesori kako bi meĎusobno komunicirali. Ovajmehanizam je obično dio dijeljene memorije izmeĎu procesoraali ponekad može biti mrežna konekcija ili druga periferalnasabirnica. Kod AMP sistema, posao koji obavlja svakipojedinačni čvor mora biti definisan prilikom dizajna sistema.Posao cijelog sistema je tako particionisan na dijelove koji sezatim dodijeljuju pojedinačnim čvorovima u sistemu.20


<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>AMP sistemi mogu doći u različitim kombinacijama. Mogućeje odabrati različite procesore u sistemu. TakoĎer je mogućeodabrati različite operativne sisteme u AMP sistemu, sve uzavisnosti od potreba. Na primjer, VxWorks može upravljatiosjetljivim real-time taskovima dok Wind River Linux možeupravljati nekim od interfejsa – npr. media interface. Ponekadčvorovi mogu da obavljaju veoma ograničene funkcije koje nezahtijevaju da imamo kompletan operativni sistem već samojednostavno izvršavanje direktno na hardveru. Slijedeca slikaprikazuje takvu konfiguraciju gdje je za medjujezgrenukomunikaciju koristen MCAPI ( multicore communication API )standard medjujezgrene komunikacije koji je u toku fazedefinisanja standardnog seta API poziva kojima se onaimplementira. AMP sistemi obično trebaju više memorije negoSMP sistemi kako bi držali različite operativne sisteme injihove aplikacije.21


<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>Po svojoj prirodi AMP sistemi su veoma zavisni od preciznogdizajna hardvera. Prebacivanje na drugi hardver sa nekoliko iliviše procesora ili različiti mehanizam interkonekcije, uzrokujeda moramo prepraviti aplikaciju kako bi radila na novoj22hardverskoj konfiguraciji.


<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>SMP konfiguracija je konfiguracija kod koje jedan operativnisistem kontroliše više od jednog indentičnog procesora (ilijezgra u višejezgrenom sistemu). Aplikacije „vide“ i ostvarujuinterakciju sa samo jednim operativnim sistemom, baš kao ikod jedno-procesorskog sistema. Činjenica da postoji nekolikoprocesora u sistemu je detalj koji OS krije od korisnika. U tomsmislu, SMP operativni sistem sažima detalje o hardveru.SMP operativni sistem je takoĎer simetričan; on treba da radisa više identičnih procesora, pri čemu svaki može pristupiticijeloj memorji i ureĎajima u sistemu na uniforman način.Dakle, bilo koji procesor (ili jezgro) u SMP sistemu je umogućnosti da izvrši bilo koji task baš kao i svaki drugiprocesor u sistemu. Ova simetrija u hardveru dopušta SMPoperativnom sistemu da rasporedi bilo koji posao na bilo kojiprocesor u sistemu. SMP operativni sistem pokušava da držisve procesore uposlenim izvršavanjem aplikacijskih niti sa23


<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>ciljem raspodjele opterećenja u sistemu.Kao rezultat apstrakcije hardvera i raspodjele opterećenja usistemu, SMP operativni sistem pojednostavljuje razvojsoftvera kako bi se izvršavao na SMP hardveru. Iz perspektiveprogramera, postoji samo jedan OS za pisanje aplikacije, kojaautomatski rasporeĎuje posao na sve dostupne procesore.SMP operativni sistem pruža istu semantiku programiranjakao i jednoprocesorski sistem.Svi procesori, kod SMP sistema, dijele istu memoriju koja jepod kontrolom operativnog sistema. Memorija i lokalni keševiza svaki individualni procesor se drže sinhronizovanim. Stogaaplikacije u SMP sistemu mogu dijeliti podatke sa drugimprocesorima na veoma jednostavan i efikasan način. Ovo činiSMP sisteme pogodnijim za aplikacije koje trebaju da dijelevelike količine podataka uz nisku latenciju ( kašnjenje).24


<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>,Obzirom da SMP operativni sistem mora sinhronizovati ikontrolisati više od jednog procesora, biće potrebno obavitiviše internog posla nego što je to slučaj kod operativnogsistema koji upravlja samo jednim procesorom. U poreĎenjusa jednoprocesorskim sistemom, SMP sistem je sporiji, aliSMP nadmašuje jednoprocesorske sisteme tamo gdje postojivisoki stepen paralelizma u aplikaciji koji dopušta sistemu dauradi više posla u datom vremenu u odnosu najednoprocesorski sistem.25


<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>Izbor između SMP i AMP sistemaSMP operativni sistem je najbolji izbor kada se odoperativnog sistema očekuje da efikasno rasporedi različiteparalelne dijelove aplikacije. Jedno od bitnijih osobinahardvera za SMP je da obavlja hardverski pojačanukoherenciju keša. Ovo uzrokuje da hardver automatski ažurirakopije podataka na procesorskim keševima kada se izmjeniod strane drugog procesora. Za programe koji se izvršavaju,ažuriranje je transparentno tako da su izmjenjeni podaciodmah vidljivi u memorji i dostupni. Kada taskovi dijele mnogopodataka lociranih u memorji, pristupanje podacima je brzo ilagano kod SMP operativnog sistema. SMP je takoĎer praviizbor kada aplikacija treba da bude portabilna izmeĎu sistemasa različitim brojem jezgara. U svim ovim slučajevima,hardverska apstrakcija i balansiranje opterećenja obavljeno odstrane SMP kernela će osloboditi programera od,26


<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>prilagoĎavanja aplikacije različitim hardverskimkonfiguracijama.AMP je bolji za sisteme koji su jasno podijeljeni na različitepodsisteme i koji su uglavnom autonomni, ili imaju ograničenekomunikacijske potrebe sa drugim čvorovima. Ovo sistemskimdizajnerima daje izbor dizajniranja hardvera sa mješavinomheterogenih procesora koji su idealni za operacije koje svakičvor obavlja u sistemu. AMP je takoĎer najbolji izbor zaredudantne sisteme kojima treba visoka dostupnost, obziromda je svaki čvor u AMP sistemu samostalni jednoprocesorskiračunar.27


<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>VxWorks SMPWind River VxWorks SMP je dodatak svim Wind RiverVxWorks platformama koji pruža SMP mogućnosti VxWorksoperativnom sistemu. VxWorks SMP omogućavavišejezgrenim procesorima da dostignu konkurentnoizvršavanje aplikacija, omogućavajući aplikacijama daunaprijede performanse kroz paralelizam.Slijedeća tabela objašnjava prednosti i nedostatke svake OSkonfiguracije.28


<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>29


<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>Uporedo sa pružanjem SMP mogućnosti, VxWorks SMP jedizajniran tako da bude kompatibilan sa jednoprocesorskomverzijom VxWorksa. Ovo dozvoljava VxWorks korisnicima dalakše migriraju svoje VxWorks aplikacije, drajvere i drugisoftver sa jednoprocesorskog okruženja (VxWorks UP) naSMP okruženje.VxWorks SMP se kupuje kao odvojeni dodatak bilo kojojWind River VxWorks 6.6 i kasnijim platformama (verzije 3.6Wind River General Purpose Platform, Wind River Platform forAutomotive Devices, Wind River Platform for ConsumerDevice, Wind River Platform for Industrial Devices ili WindRiver Platform for Network Equipment). Nakon instalacijekorisnici mogu po potrebi razvijati kako jednoprocesorske takoi SMP aplikacije.30


<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>VxWorks SMP osobineVxWorks SMP omogućava simetrično multiprocesiranjeVxWorks real-time operativnom sistemu. VxWorks SMP jeizgraĎen na istoj osnovi kao i VxWorks. Posebno, VxworksSMP pruža slijedeće:VxWorks pruža mogućnost VxWorks korisnicima da pokrećuaplikacije u SMP okruženju na poznatim višejezgrenimprocesorima. Ovo omogućava više funkcionalnosti, višeperformansi nego što je to slučaj sa jednoprocesorskimsistemima.KompatibilnostVxWorks SMP je API kompatibilan sa jedno-procesorskomverzijom VxWorks operativnog sistema (uz par izuzetaka).Kompatibilnost API-ja promoviše iskorištavanje postoječegVxWorks-baziranog softvera, dozvoljavajući kompanijama da31unaprijede prethodne VxWorks investicije.


<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>Glavne osobine kao što su real-time procesi, otkrivanje greškei izvještavanje su u potpunosti podržani čak i u SMPokruženju.Real-time ponašanjeVxWorks dodaje SMP mogućnosti VxWorks operativnomsistemu bez ugrožavanja real-time karakteristika i ponašanjaVxWorks operativnog sistema. Ovo omogućava VxWorksSMP-u da bude primjenjiv na ista ciljna tržišta i ciljne aplikacijekao i jednoprocesorski VxWorks sistemi. VxWorks SMP imadeterministički rasporeĎivač koji garantuje izvršavanje taskapo prioritetu. RasporeĎivač razmiješta N taskova najvećegprioriteta koji su spremni na izvršavanje, gdje je N brojprocesora u sistemu. Determinističko rasporeĎivanjezasnovano na prioritetu je takoĎer jedno od difirencirajučihosobina VxWorks operativnog sistema kod jednoprocesorskihsistema; to je ono što diferencira jedan real-time operativni32


<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>sistem od operativnih sistema opšte namjene. VxWorks SMPimplementira paralelizam na nivou interapta, sposobnost višeod jednog jezgra u sistemu da simultano rukuje različitiminteraptima. Ovo povećava vrijeme reagovanja sistema.Mnoge kritične operacije unutar operativnog sistema suzaštičene spinlock čekanjem. Ove se odvijaju udeterminističkom vremenu, što je funkcija vremena u kojem sedrži spinlock. Spin-lock takoĎer štiti kritične podatke zavrijeme procesiranja interapta.Podrška za najpoznatije višejezgrene procesoreVxWorks SMP se izvršava na svim poznatim procesorimakoji su dostupni na tržištu. Ovo uključuje višejezgreneprocesore od firmi ARM, Broadcom, Cavium, Freescale, Intel iRaza Microelectronics. Na ovaj način je korisnicima ponuĎenširok izbor hardverskih platformi na kojima mogu izgraditi novegeneracije svojih ureĎaja.33


<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>Portabilnost između različitih arhitekturaOvo je zaštitni znak VxWorks operativnog sistema odnjegovog početka. VxWorks je portabilan operativni sistemkoji se izvršava na različitim procesorima sa uniformnimkarakteristikama. SMP dakle proširuje VxWorks mogućnostina polje višeprocesorskih sistema.Dobro poznato razvojno okruženjeWind River Workbench i njegovi alati rade i sajednoprocesorskim i sa SMP verzijama VxWorksa. TakoĎer,alati imaju dodatne mogućnosti za VxWorks SMP koji sudizajnirani da vizualiziraju izvršavanje i učitavanje uzorakakoda na svim jezgrimaVxWorks SMP je pogodan za probleme koji trebaju SMPoperativni sistem i karakteristike RTOS-a kao što jedeterminizam, niska latencija i malo zauzeće memorije.34


<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>U nastavku su prikazane razlike i jedinstvene mogućnostijedne SMP konfiguracije. Sumarno, VxWorks SMP bi mogaobiti pravo riješenje kada je jedno ili više slijedečih uslovaispunjeno:1. Aplikacija je (ili će biti) dizajnirana u uslovima skupaparalelnih niti, dopuštajuči sistemu da obavi više poslasimultano nego što bi obavio jednoprocesorski VxWorkssistem. Stoga mora biti dovoljno mnogo paralelizma uaplikaciji kako bi se postigle značajnije performansekorištenjem više procesora. Podsjetimo se Amdalovog zakonai kako on postavlja gornju granicu na to kakve se performansemogu dobiti za dati nivo paralelizma.2. Niti dijele veliku kolićinu podataka, ili imaju fino granulisandizajn dijeljenja podataka.3. Dizajner sistema treba da pusti operativnom sistemu da35rasporeĎuje niti koje su spremne za izvršenje na sve dostupne


<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>procesore (tzv. load balancing).Na primjer, mrežni ruter može ostvariti bolju propusnost akoima više jezgara koja paralelno obraĎuju pakete iz višerazličitih tokova podataka ( komunikacionih kanala kojepreklapai rutira). Mrežna propusnost može takoĎer bitipovećana tako što će se imati nekoliko jezgara koji će imatiulogu sigurnosnog procesiranja, gdje jedno jezgro možeizvršavati glavnu logiku TCP/IP steka, dok su ostalekoncentrisane na funkcije rutiranja i kriptovanja. Na primjerumrežnog rutera, više jezgara mogu paralelno procesiratidodatne nezavisne tokove podataka, dok u drugom primjeru,dio mrežnog procesiranja se obavlja paralelno od stranedrugih jezgara. Obadva ova primjera izlažu mogućnosti kojenam nudi mulitprocesiranje, obavljanjem više posla u datomkvantumu vremena nego što je to moguće uraditi sa samojednim procesorom.36


<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>Nove mogućnosti u VxWorks SMP operativnom sistemuNeke od novih osobina i API funkcija u VxWorks SMP-u suopisane u nastavku. Ovo nije iscrpan spisak osobina:1. Spinlocks – Spinlock je lagani, brzi, sigurnosni mehanizamkoji se koristi da sihnronizuje niti i rukovatelje ( handlere)interpatima koji se izvršavaju na različitim procesorima u SMPsistemu. Spinlock mogu biti realizovni kao mutex semafori zaviše procesorska okruženja. Postoje dvije osnovne vrstespinlock mehanizama (na nivou taska i na nivou interapta) imogu se koristiti za ostvarivanje sinhronizacije izmeĎurazličitih taskova i izmeĎu taskova i interapt servisnih rutina.2. Atomične operacije – Atomične operacije su klasa APIpoziva koji omogućavaju brze sigurne višeprocesorskeoperacije na jednostavnim memorijskim varijablama, naprimjer, inkrement, dekrement, logičke operacije i jednostavne37


<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>aritmetičke operacije. Atomične operacije razvijene zaVxWorks SMP su takoĎer dostupne i u jednoprocesorskojvarijanti VxWorks sistema.3. Reader-writer semafori – Reader-writer semafor je novavrsta semafora u VxWorks 6.6 operativnom sistemu. Readerwritersemafor dopušta da više niti koje čitaju ostvaruje bržipristup dijeljenoj strukturi podataka. U jednom trenutku jesamo jednoj niti koja piše (writer thread) dopušteno damijenja strukturu podataka. Ovi semafori su optimizirani zasituacije sa višestrukim reader nitima i jednom writer niti.Njihova upotreba se susreće kod proizvoĎač-potrošač vrstaalgoritama i posebno je pogodna za multiprocesirajučesisteme. Kao i VxWorks mutex semafori, reader-writersemafori takoĎer podržavaju inverziju prioriteta kao opciju.38


<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>Wind River Workbench i VxWorks SMPVxWorks UP i SMP dijele isto Wind River Workbench razvojnookruženje. Workbench je nadograĎen sa ciljem da podržidebugging i analiziranje SMP okruženja. Workbench 3.2 imamogućnost da debagira VxWorks SMP kernel i real-timeprocese (RTP) kako u task (user) tako i u sistemskom modu.Workbench pojednostavljuje otkrivanje utrke za podacima(data race), meĎublokada (deadlock), što su dva najčešćapitanja koja se pojavljuju prilikom razvoja programa zavišejezgrena okruženja.• Kod Workbencha, Vxworks SMP projekti se podešavaju naidentičan način kao da se radi o jednoprocesorskoj verzijiVxWorks sistema. Korisnici mogu odabrati da razvijaju UP iSMP projekte. Kako svaki projekt ili aplikacija nije podesna zaSMP, korisnici mogu odabrati konfiguraciju OS-a koja najboljeodgovara njihovim potrebama. Workbench proširenja kao 39


<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>Workbench Debugger, System Viewer, WorkbenchPerformance Profiler, Workbench Code Coverage Analyzer,Workbench Memory Analyzer, Workbench data monitor iWorkbench Function Tracer su nadograĎeni tako da mogu bitiupotrebljeni kako kod UP tako i kod SMP sistema.Debagiranje SMP sistemaGreške i problemi sa kojima se programer susreće u SMPsistemu su ista vrsta problema koji se pojavljuju u UPvišenitnom sistemu. Neke greške će se prije pojaviti u SMPsistemu nego u UP sistemu, posebno ako softver praviodreĎene pretpostavke po pitanju koherencije, ali to nisustriktno SMP pitanja. Debagiranje SMP sistema nijeinherentno različito u odnosu na UP sisteme. Sljedeće jeneka vrsta vodiča o problemima sa kojima se susrećuprogrameri kod SMP sistema i kako treba da ih riješavaju:40


<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>• Problemi koji se javljaju iz nezaštičenih ili nedovoljnozaštičenih kritičnih sekcija, kao što je utrka za podacima iuzurpiranost memorije, se najčešće javljaju kada se nitiizvršavaju konkurentno. Ovo se dešava iz razloga što softverkoji se izvršava konkurentno je daleko skloniji greškama negosoftver koji se izvršava sa malo ili nimalo konkurentnosti.Memory Analyzator i system Viewer pomažu u otkrivanjugrešaka, na isti način kao i kod UP sistema.• Inverzija prioriteta, na primjer, kada nit niskog prioritetanasljeĎuje prioritet preko niti višeg prioriteta koja čeka naresurs, može biti uzrokovana kada druge niti napraveodreĎene pretpostavke po pitanju prioriteta niti. SystemViewer može pomoći u vizualizaciji baš kao i kod UP sistema.• Pitanja konkurentnosti interapta taska su rezultat rukovanjainterpatima na jednoj jezgri dok druga jezgra izvršava task.VxWorks aplikacije mogu pretpostaviti da je procesiranje 41


<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>taska i interapta uzajamno isključivo, što nije istina kod SMPsistema. System Viewer može pomoći da se ovo vizualizujebaš kao i kod UP sistema.Generalno, sva uobičajena pitanja koja uz pomoć run-timealata možemo observirati i razumjeti rade jednako i sa UP i saSMP sistemima. Jednako je lahko koristiti alate uvišejezgrenom kao i u jednoprocesorskom okruženju.Performance profilerPreformance profiler nadgleda tok izvršavanja real-timeprograma na funcija-po-funkcija osnovi. On dozvoljavaprogramerima sistemskih i ugraĎenih aplikacija da tačnoanaliziraju kako ugraĎeni programi iskorištavaju procesor.Preformance profiler je dizajniran tako da ostvari minimalanutjecaj na performanse real-time koda koji se analizira i nezahtijeva se posebno kompajliranje. Ovaj alat se može42iskoristiti u analizi svih procesa koji se simultano izvršavaju na


<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>ugraĎenom sistemuPregled osobina Performance ProfileraPerformanse su kritični dio svakog ugraĎenog real-timesistema. Uzroke siromašnih performansi je obično lahkoriješiti, ali teško pronaći. Performanse Profiler namomogućava da analiziramo gdje CPU troši cikluse. On pružadetaljnu funkcija-po-funkcija analizu, razbijanje pojedinačnihrutina u okviru procesa koji koriste procesor.Performance Profiler generiše statistiku iz koje možemosaznati slijedeće• Šta radi procesor• Koje su rutine pozivane• Koje rutine poziva svaka rutina43


<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>Ove informacije ukazuju na neefikasnosti koje nam dopuštajuda fino podesimo sistem za maksimalne performanse.Performanse Profiler prikazuje izvršavanje u slijedečimmodovima:• Kao stablo sa punim prikazom steka poziva –System pogled• Kao lista najviše korištenih rutina – Function pogled• Lista profiliranih procesa – Process pogledPerformanse Profile može da prikaže statistiku slijedečihkomponenti:• Cijelog sistema• Bilo kojeg skupa procesa• Jednog procesa• Jednog Linux korisnika• Individualnog procesora na višeprocesorskom Linux sistemu44


<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>Obzirom da Performance Profiler ne zahtijeva posebnokompajliranje ili poseban hardver on takoĎer može analiziratikȏd koji nismo mi napisali kao što su rutine operativnogsistema ili third-party biblioteke.Stek pozivaSvaki proces ima svoj stek. Stek se koristi kao privremeniprostor za aplikacijske varijable i stanje programa. Svaki putkad procesor pokrene funkciju, on alocira novu sekciju u stekukako bi držao informacije koje su potrebne funkciji. Ovasekcija se zove stek okvir funkcije ( function stack frame). Onasadrži privremene varijable i nekoliko ključnih informacija zafunkciju uključujući sačuvana stanja registara procesora ipovratnu adresu parent (pozivajuče) rutine.Za kȏd koji je kompajliran sa opcijom koja uključujepokazivače okvira (frame pointers – FP), specijalni registar u45procesoru koji uvijek pokazuje na stek okvira


<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>funkcije koja se trenutno izvršava.• Kada se pozove rutina, stari FP se pohranjuje na stek, kreirase novi stek okvira i FP se ažurira. Dakle, u bilo kojemtrenutku vremena, postoji cijelokupna historija poziva funkcijana steku tako da se može odrediti lanac pokazivačasmještenih na stek. Ova historija poziva funkcija je poznatakao stanje izvršavanja (execution state).• Performanse Profiler koristi tehniku nazvanu statističkoprofiliranje, koja radi tako što periodično uzima uzorke stanjaizvršavanja i koristi ih u izračunavanju gdje procesor trošisvoje vrijeme. Analiziranjem programskog brojača,Performanse Profiler može ustanoviti koja se funkcija uprogramu izvršavala u vremenu uzorka. Analiziranjem lancastek okvira, Performance Profiler može ustanoviti sekvencufunkcija koja je rezultirala u trenutnom stanju izvršavanja.46


<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>Arhitektura Performance ProfileraArhitektura Performance Profilera se sastoji od dvije glavnekomponente; agenta za sakupljanje (collection agent) koji seizvršava u realnom vremenu na ciljnoj VxWorks ili Linuxmašini i GUI-a koji se izvršava na hostu, kako je prikazano naslici47


<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>Postoje manje razlike u implementaciji ciljne arhitektureizmeĎu VxWorks i Linuxa. Te razlike su objašnjene unastavku.VxWorks target arhitektureKomponente komuniciraju kroz VxWorks Target Managerukjlučujući DFW server i ako je dostupan TCP/IP link iliopciono WTX link.Performance Profiler obavlja uzorkovanje na ciljnoj mašinikorištenjem visoko-prioritetnog taska tProfilerSampler. Ovajtask smješta uzorke u red poruka za kasnije korištenje odstrane taska za analizu koji se izvršava na hostu. Ovoomogućava efikasan mehanizam uzorkovanja koji imaminimalan uticaj na izvršavanje ciljnog sistema. Na prethodnojslici je prikazano kako Performance Profiler prima ove uzorkeiz Profile Agenta u TCP/IP režimu rada ili direktno putem DFW48servera u WTX modu.


<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>Linux ciljne arhitektureKomponente na Linux ciljnoj arhitekturi komuniciraju sa GUIjemsamo preko TCP/IP linka. ProfileAgent je sampler naciljnoj mašini pokrenut od strane Performance Profilera zaLinux. Kada je pokrenut, ProfileAgent postavlja System Clockda periodično prekida mašinu. Upravljač prekidima, takoĎerpostavljen od strane ProfileAgenta, uzorkuje proces koji seizvršava prije nego što se upravljač pozove. Upravljačprekidima sakuplja podatke od procesa i smješta ih u bafer.ProfileAgent periodično provjerava ovaj bafer i prebacujesadržaj na host-bazirani GUI preko TCP/IP konekcije.GUI na HostuGUI koristi izlaz statističke analize kako bi održavao dinamičkizapis sistemskih aktivnosti. Ovaj izlaz se sastoji od nizabrojeva za svaku rutinu pri čemu ti brojevi predstavljaju49procenat vremena koje procesor potroši na tu rutinu.


<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>Ovi brojevi su u rangu od 0.0 (nikada aktivan) do 100.0 (uvijekaktivan). Analiza računa i trenutnu (current) i kumulativnu(cumulative) statistiku. Kao dio uzorkovanih podataka,Performance Profiler uključuje i vrijednost programskogbrojača (PC), i prolazi stekom do zapisa svih rutina kako bimogao aktivirati trenutnu rutinu. PC takoĎer može pokazatigdje je svaka podrutina pozvana iz jedne funkcije (explodedmod) kako bi izračunao korištenje svake individualnepodrutine. Korištenjem ove informacije, GUI gradi proširivostablo koje prikazuje putanje do poziva svake podrutine.GUI obavlja statističku analizu nad podacima svakog procesai prikazuje analizirane informacije. MeĎutim, ako se neustanove svi simboli iz steka tada se umjesto naziva rutinestavlja hexadecimalna adresa simbola i cijeli primjer se samobaferuje i ne prikazuje se. Informacije obavljene analize se50


<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>periodično ažuriraju u grafičkom interfejsu.Postavljanje korisničkih parametaraPerformanse Performance Profilera mogu biti naštimane takoda se najefikasnije analizira izvorni kod i pomogneprogrameru da brzo identifikuje probleme. Slijedeći podesiviparametri se mogu podesiti u Performance Profileru. Tiparametri su:• Stopa uzorkovanja (sample rate)• Period analize• GUI period ažuriranja• Modovi analize• Digitalni filteri podataka51


<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>Stopa uzorkovanjaStopa uzorkovanja je frekvencija pri kojoj PerformanceProfiler uzima uzorke stanja izvršavanja taska. Standardnastopa uzorkovanja je 113 Hz. Stope prostih brojeva su najboljeiz razloga što maksimiziraju slućajnost uzoraka i minimizirajusinhronizaciju sa rasporeĎivačem. MeĎutim, u zavisnosti oddostupnog hardvera, ova stopa možda neće biti dostižna; uovim slučajevima, Performance Profiler odabire najbližu stopu.Period analizePeriod analize je vrijeme koje Performance Profiler čeka prijeobavljanja druge statističke analize uzoraka. Uobićajeni periodanalize je 2.5 sekunde. Sa uobićajenom stopom uzorkovanja iuobićajenim periodom analize, svaki period analize obićnoprocesira približno 282 uzorka.52


<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>Period ažuriranja grafičkog prikazaPredstavlja kolićinu vremena koje Performance Profiler čekaizmeĎu dva osvježavanja prikaza. Standardno vrijemeosvježavanja je 10 sekundi. Manji periodi pružaju ažurnijepodatke, ali zato troše više procesorskog vremena na hostu.Period osvježavanja mora biti proizvod perioda analize. Nemože biti manji od 2.5 sekunde.Modovi analizePerformance Profiler može nadgledati aktivnost cijelogsistema ili jednog procesa. Ova dva moda pružaju razlićitepoglede na performanse sistema. Na primjer, razmotrimojedan proces koji je blokiran većinu vremena.U sistemskom modu, Performance Profiler nadgledaaktivnosti svih procesora na ciljnom sistemu. Vrijemeiskorišteno od strane funkcija procesa se prikazuje kao53procenat ukupnog vremena.


<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>Dakle, proces koji je blokiran većinu vremena će zabilježitimali procenat iskorištenosti procesora.• U jednoprocesnom modu, Performance Profiler nadgledasamo aktivnost jednog odabranog procesa, prikazujuči namgdje proces troši svoje vrijeme. Vrijeme korišteno od stranefunkcija tog procesa se prikazuje kao procenat ukupnogvremena korištenog od strane tog procesa. Dakle, funkcijekod kojih je proces blokiran se prikazuju kao da uzimaju višeprocenata vremena. Suma korištenja procesora za svefunkcije u procesu je 100%.Digitalni filteri podatakaStatistike za svaki profil su digitalno filtrirane kako bi seeliminisao šum u podacima. Stoga, Current statistike svakefunkcije (ili niti) su prosječne vrijednosti većine nedavnihanaliza i prošlih rezultata. Iako standardni parametri filtera54rade dobro za večinu aplikacija, Performance Profiler dopušta


<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>da se podese parametri kako bi se kontrolisao odgovortrenutne statistike.Sugestije za efikasnije korištenje Performance ProfileraU nastavku ćemo dati neke sugestije vezane za odabirkolone koju želimo prikazati u Performance Profileru uzavisnosti od toga šta želimo dalje da uradimo po pitanjuoptimizacije.Da bi optimizirali kod minimiziranjem poziva „skupih“ funkcijatreba da uradimo slijedeće:• Odaberemo Cumulative Indirect %, Current Indirect % iMax Indirect % kolone, a ostale isključimo.• Lociramo funkciju koja najviše iskorištava procesor.• Proširimo funkcije kako bi utvrdili gdje se pojavljuju „skupi“pozivi funkcija.55


<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>• Pregledom izvornog koda ustanoviti da li su ti pozivineophodni.Da bi ustanovili dugoročno prosječno korištenje procesora usistemu trebamo:• Koristiti Cumulative Indirect % i Cumulative Direct %kolone. Ostale isključiti.Ovaj pogled je pogodan za sisteme koje imaju stalnojednaku aktivnost. Za ovakve sisteme, trenutna statistika bitrebala biti slična Kumulativnoj tako da nema potrebe zaprikazivanjem trenutne statistike.Da bi ustanovili kratkoročno prosječno iskorištenje sistematreba:• Koristiti Current Indirect % i Current Direct % kolone, aostale isključiti.• Uzorkovati dogaĎaj u sistemu koji inicira aktivnosti koje56želimo.


<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>• Nakon dobijanja statistike, odabrati Stop na alatnoj letvici kakobi zaustavili naredna ažuriranja.• Pregledati rezultate.• Možda će biti potrebno primjeniti filtere procesa kako biizbacili taskove koje ne želimo da posmatramo.Statistička poljaSva satistička polja (kolone) za Function pogled su Directstatistike. Polja u Function pogledu koja se mogu odabratikorištenjem Columns pogleda su:• System cumulative %Predstavlja dugoročnu prosječnu upotrebu procesora odstrane rutine, ne uključujući bilo koje njene podrutine ilidirektno korištenje procesora u procentima od ukupnogprocesorskog vremena.57


<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>• System Current %Predstavlja kratkoročnu prosječnu upotrebu procesora odstrane rutine, ne uključujući bilo koje njene podrutine, ilidirektnu upotrebu procesora izraženu u procentima odukupnog procesorskog vremena.• System Max %Predstavlja največu vrijednost kratkoročnih prosjekaupotrebe procesora od strane rutine, ne uključujući bilo kojepozive podrutina, ili direktno korištenje procesora izraženo uprocentima od ukupnog procesorskog vremena.• System Cumulative CountOvaj broj se koristi za izračunavanje procenta za SystemCumulative Direct. Resetuje se na nulu kada se pokrene novasesija, ili kada se izmijeni mod analize. Predstavlja brojačkoliko puta se neki uzorak pojavio kada je ciljna mašina58izvršila neku rutinu, ali ne i bilo koju od njenih podrutina.


<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>• System Current CountBrojač koliko se puta pojavio neki uzorak kada ciljna mašinaizvršava rutinu, ali ne i njene podrutine. Ova vrijednost sekoristi da se izračuna procenat za System Current Direct.Vrijednost brojača se resetuje na nulu svaki put kadaPerformace Profiler završi sa izračunom skupa statistika(svaki period analize).Na Linuxu baziranoj ciljnoj višeprocesorskoj mašini jemoguće vizualizirati bilo koji od ovih statističkih polja za jedanprocesor ili za cijeli sistem.Interpretacija podatakaKako bi se Performanse Profiler koristio što je mogućeefikasnije, u nastavku ćemo se osvrnuti na način kako da seinterpretiraju podaci prikupljeni sa Performance Profilerom.59


<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>Statistička tačnost u odnosu na broj uzorakaTačnost statističkih podataka je odreĎena brojem uzorakakoje prikupi Performance Profiler. Jako je bitno razumijetikoliko dugo profiler treba da sakuplja podatke kako biobezbijedio potrebnu tačnost. Dobro poznata formula koja sekoristi kod Performance Profilera je da izračuna broj uzorakapotrebnih za postizanje tačnosti sa odreĎenim nivoompovjerenja je:gdje je:N je broj uzoraka potrebnih da bi se dostigla specificiranatačnost.p je vjerovatnoča da se desi neki dogaĎaj. Vrijednost 0.01znači da smo zainteresovani za rutinu sa otprilike 1%iskorištenja procesora.60


<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>q = 1 – p (je vjerovatnoča da se dogaĎaj ne dogodi)Z- je inverzna vrijednost integrala funkcije Normalnedistribucijeg - je koeficijent pouzdanosti sa vrijednošću izmeĎu 0 i 1.Vrijednost od 0.95 znači da želimo biti 95% sigurni u rezultat.e je interval pouzdanosti, na primjer, tolerancija greškerezultata. Vrijednost od 0.005 znači da želimo da greška budeu granicama od +/-0.25%.Primjer: Tipična tačnostDa bi tačno odredili uska grla u kodu, obično je dovoljno daprikupimo statističke podatke od Performance Profilera sa95% tačnošću do najbliže pola procenta iskorištenostiprocesora. Ovo znači da smo 95% sigurni da su prikupljenipodaci u okviru plus ili minus 0.25% njihovih stvarnihvrijednosti. Ovaj nivo tačnosti je dostupan skoro pa trenutno,61kao što se može vidjeti za rutinu koja koristi 1% procesora:


<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>p = 0.01q = 0.99g = 0.95e = 0.005Z[...] = 1.96Korištenjem ovih vrijednosti u formuli daje rezultat odpribližno 1500 uzoraka ili oko 13 sekundi prikupljanjapodataka sa Performance Profilerom uz sample rate od113Hz.Primjer: Visoka tačnostDa bi dostigli tačnost od 95% pouzdanosti za istu rutinu kojakoristi 1% procesora, vrijednosti koji se koriste u formuli su:62


<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>p = 0.01q = 0.99g = 0.95e = 0.001Z[...] = 1.96Ovaj rezultat je za približno 37,000 uzoraka, ili oko 5.5 minutaprikupljanja podataka sa Performance Profilerom uz samplerate od 113Hz. Povećanjem brzine uzorkovanja na 500Hzvrijeme se skračuje na jednu minutu.Performance Profiler računa kratkoročnu i dugoročnustatistiku iskorištenja procesora. Kartakoročna statistika jepoznata kao Current prosjeci. To su vrijednosti koje pružajudinamičniji pogled na sistem.63


<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>Dugoročna statistika je poznata kao “Cumulative” prosjeci.Izračunava se korištenjem uzoraka sakupljenih za cjeokupnusesiju. Maksimalne vrijednosti prikazuju največu iskorištenostprocesora od “Current” prosjeka za svaku rutinu ili proces zavrijeme trenutne sesije.Kada analiziramo aplikacije, korisno je da se istraže slijedećiparametri:• Indirektna statistika – Ukupno vrijeme koje procesor potrošina funkciju, koje se sastoji od procenta vremena koje procesorpotroši na tu funkciju, plus procenat vremena koje se utroši naostale funkcije koje poziva ta funkcija.• Direktna statistika – Procenat vremena koje procesor potrošisamo na funkciju (na primjer, isključujući procesorsko vrijemeutrošeno na ostale funkcije koje poziva ta funkcija).64


<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>Indirektnu i direktnu statistiku treba koristiti kako bi se odredilaiskorištenost procesora od strane koda funkcije ili od stranepodrutina te funkcije.Na primjer, ako je indirektna iskorištenost funkcije 10.0%, iDirektna iskorištenost 9.9%, tada je procesor iskorišten samood strane funkcije bez bilo kojeg poziva podrutine. Na tajnačin se možemo skoncentrisati samo na tu funkciju upokušaju da je optimiziramo.65


<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>System ViewerSystem Viewer pruža mogućnost obavljanja analize kako bipomogao programerima koji razvijaju SMP kernel i aplikacije.Za SMP, System Viewer grafik dogaĎaja je popunjeninformacijama koje pomažu programerima da identifikuju iizoliraju utrkivanje za podacima, meĎublokade i izgladnjivanja,kako kod UP tako i kod SMP sistema. Ovo može biti korisnopri minimizaciji gubitka performansi. Korištenjem SystemViewera korisnici mogu vidjeti odvijanje paralelnih aktivnosti usistemu: paralelizam na nivou taska, interapt-interaptparalelizam. Ovo može biti korisno pri vizualizaciji izvršavanjaaplikacije i pomoći kod dijagnosticiranja grešaka u softverukoje proizilaze iz konkurentnog izvršavanja. System Viewerprikazuje nivo opterečenosti procesora za svaku njegovujezgru što je korisno kod podešavanja performansi irasporeĎivanja.66


<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>opterećenja na svim jezgrima u sistemu.Wind River System Viewer pruža slijedeće mogućnosti:• Detektuje utrke za podacima, meĎublokade, neiskorištenostprocesora, i druge probleme koji se odnose na taskove.• OdreĎuje brzinu aplikacije i njene performanse.• Posmatra cikličke uzorke u ponašanju aplikacije• Sprema podatke za kasniju analizu.System Viewer alatiGlavni System Viewer alati su:• System Viewer Configuration – Ovaj alat se koristi zakonfiguraciju šta želimo da upisujemo, kako da prebacimo logfajl sa target na host i da gledamo analizirane podatke.67


<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>• Triggering - koristi se da precizno odredimo kada (sa kojimdogaĎajem) da počnemo i zaustavimo upis podataka u logfajl. Većina dogaĎaja koji se upisuju takoĎer mogu bitikorišteni kao trigger.• Event Recieve – Socket listener za prikupljanje log podatakaprebačenih od strane ciljne mašine.• Log Viewer – Koristi se za analizu prikupljenih podataka.Prikupljeni podaci se mogu sačuvati sa ili bez trenutnihpostavki vezanih za način prikazivanja, u System Viewerformatu ili u tekstualnom formatu.• Analysis Suite Viewers – Koristi se za posmatranjeiskorištenosti procesora i podataka vezanih za dogaĎaje izSystem Viewer log fajlova. Ovi alati, dostupni iz SystemViewer Configuration editora, su korisni u kontektsuvišestrukih procesora.68


<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>Arhitektura System Viewer –aKao što se može vidjeti na slici, System Viewer pruža i target ihost funkcionalnosti, pri čemu se većina procesiranja obavljašto je moguće više na hostu kako bi se minimizirao efekatupisa podataka u log fajl na ostale aktivnosti:69


<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>Komunikacija izmeĎu hosta i targeta se vrši preko WDBprotokola i to preko serijske linije ili mrežne konekcije. Ovaputanja se dijeli od strane svih Wind River Workbench alatakako bi se ostvarila komunikacija sa target mašinom.VxWorks SimulatorVxWorks Simulator može simulirati SMP aplikacije na jednomili više procesora. Korištenjem simulatora korisnici moguobavljati poslove od osnovnih do složenih izmjena aplikacija,simulacija i podešavanja prije prebacivanja aplikacije nastvarni višejezgreni hardver. System Viewer je takoĎer umogućnosti da na host mašini prikuplja i vizualizuje SMPpodatke čak i kad se koristi Simulator. Treba napomenuti daSimulator ne može biti korišten u odreĎivanju performansiSMP aplikacije iz razloga što će hardver na kojem se odvija70simulacija biti bitno drugačiji od željenog ciljnog hardvera.


<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>Rad sa VxWorks SimulatoromU nastavku će biti opisana upotreba Wind River VxWorksSimulatora i Wind River Workbench alata u razvoju jedneSMP aplikacije.Kreiranje Imagea sa podrškom za SMP za VxWorksSimulatorNajprije je potrebno kreirati funkcionalni VxWorks simulatorkoji može simulirati do osam jezgara. Simulator se možekoristiti tokom faze razvoja ili kada je hardver preskup ili nijedostupan. Svi Wind River alati su u potpunosti funkcionalni saVxWorks simulatorom i ostavljaju utisak kao da smo spojenina stvarnu target ploču. Da bi kreirali image treba da uradimoslijedeće:.71


.<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>Korak 1 – Kreiranje novog VxWorks Image projekta: File –>New->VxWorks Image Project72


<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>Korak 2 – Dodijeljivanje imena SIM-SMP u VxWorks ImageProject dijalogu.73


<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>Korak 3 - U New VxWorks Image Project – Project Setupdijalogu ostaviti sve parametre na njihove defaultnevrijednosti. Obzirom da će se simulator izvršavati na Linuxu,treba da koristimo Linux kao osnovu za projekt.74


<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>Korak 4 - Provjeriti da je Tool chain postavljen na gnu.Korak 5 - U New VxWorks Image Project – Options dijalogu,odabrati SMP support in kernel opciju kako bi uključili sveneophodne module koji su potrebni za SMP VxWorks kernel.75


<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>Ovo su sve opcije koje moraju biti konfigurisane kako bi kreirali noviImage projekt. Kreirani Image projekt možemo pogledati u ProjectExploreru. Da bi izgradili novi VxWorks image, moramo odabratiSMP-SIM projekt u Project Exploreru a zatim odabrati RebuildProject. Kada je image izgrađen, u konzolnom prozoru možemovidjeti indikaciju da je proces kompletiran .76


<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>Korištenje VxWorks SimulatoraNajprije treba kreirati novi VxWorks simulator i vezu, a zatimpovezati simulator sa vezom ka VxWorks image-u koji smoranije kreirali.1. U Remote System pogledu, odabrati Define a connectionto remote system.77


<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>2. U New Connection dijalogu, pod VxWorks 6.x čvoromodabrati Wind River VxWorks 6.x Simulator Connection78


<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>3. U New Connection – VxWorks Boot Parameters dijaloguodabrati Custom simulator, a zatim odabrati slijedeći fajl:/home/fedora/WindRiver/workspace/SMP-SIM/default/vxWorks79


<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>4. Nakon što je odabran VxWorks image fajl treba odabrati AdvancedBoot Parameters kako bi se odabrao Boot device (promijenitivrijednost sa passDev na simnet). Ovo predstavlja metod kojiWorkbench koristi kako bi povezao target ploču – simulator.5. Unjeti SMP-SIM u Target Name polje80


<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>6. U New Connection – Connection Summary dijalogu unijetiSMP-SIM za Connection name. Na ovaj način možemo daidentifikujemo sesiju u slučaju većeg broja sesija.81


<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>7. Nakon ovoga pojavljuje se nova veza u Remote Systems pogledu.8. Pojavljuje se novi prozor sa VxWorks pozdravnom porukom. Topredstavlja našu simulacijsku sesiju koja pokrede VxWorks SMPImage. Možemo preuzeti krenel module (DKM) i Real-TimeAplikacije (RTP) u slučaju da želimo da radimo sa target pločom.82


<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>Verificiranje simuliranog kodaSimulator je, standardno, konfigurisan da simulira dvije jezgre.Unošenjem komande vxCpuConfiguredGet možemo vidjeti kolikojezgri je podešeno.Sa komandom i izlistavaju se svi taskovi u kernelu. Unošenjem ikomande možemo vidjeti da postoje dva idle taska (tidleTask0 itIdleTask1) jer svako jezgro u SMP sistemu ima svoj vlastiti idle task.83


<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>Dodavanje više jezgara simulatoruVxWorks simulator ima mogućnost dodavanja do 32 jezgre.Dodatne jezgre možemo dodati na slijedeći način:1. U Project Explorer pogledu duplim klikom odabrati KernelConfiguration.2. U Components pogledu pronaći operating systemcomponents -> kernel components -> kernel.3. Promijeniti vrijednost Number of CPUs to be enabled forVxWorks SMP sa 2 na 4.84


<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>4. Da bi se sačuvale promijene VxWorks Image mora biti ponovoizgraĎen – rebuild.5. Potrebno se otkopčati sa simulatora, ako je isti pokrenut, azatim se ponovo prikopčati sa nanovo ažuriranomkonfiguracijom.85


<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>6. Da bi verifikovali napravljene izmjene, ponovo unesemovxCpuConfigurationGet komandu u simulacijsku sesiju.7. TakoĎer, ponovo unesemo komandu i kako bi se uvjerili daimamo četiri idle taska, svaki za po jedno jezgro.86


<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>Do sada smo izgradili VxWorks SMP image za simulator.Početni broj jezgara je dva, ali se može lahko promijenitikorištenjem kernel configuration alata. VxWorks simulirazadati broj jezgara i kao takav može se koristiti kao izoliranookruženje za razvoj i testiranje projekta. Wind River alati kaošto je System Viewer (nadgledanje dogaĎaja i taskova),Performance Profiler (nadgledanje performansi) i SMPdebugger omogućavaju obavljanje analize aplikacije i na 87


<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>simulatoru. Ovdje treba uzeti u obzir da se simulator ne možeiskoristiti za mjerenje performansi iz razloga što superformanse simulatora zavisne od hardvera na kojem jesimulator pokrenut (vrsta i brzina procesora, dostupna kolićinaRAM-a itd.). Simulator je dobar alat za planiranje i dizajn fazemigracije sa UP na SMP s tim da ne treba obračati previšepažnje na performanse jer se radi o simuliranom okruženju.Migracija aplikacije sa jednoprocesorskog (UP) navišeprocesorsko (SMP) okruženjeRazmotrimo proces migracije aplikacije napisane zajednoprocesorske sisteme (UP) u aplikaciju koja može daiskoristi prednosti višeprocesorskog sistema (SMP). Migracijaće biti objašnjena na aplikaciji za mrežni koder. Aplikacijaprima i baferuje dolazne podatke, kodira podatke i konačno88šalje kodirane podatke. Naredna slika prikazuje gradivne


<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>blokove aplikacije.Task koji prima podatke, baferuje ih, dijeli ih na paketejednake veličine, označava svaki paket i na kraju gradi stabloiz strukture podataka. Kodirajuči task prima pakete iz drveta ikodira podatke. Na kraju task šalje podatke i uklanja sve89interne oznake.


<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>Migracija sa UP na SMPNaredni koraci se preporučuju kada migriramo aplikaciju saUP sistema na SMP sistem. Prva tri migracijska koraka će bitiobavljena dok koristimo samo jedno jezgro (jednojezgreniimage). Ovo će osigurati da SMP dizajn radi na UP okruženju.Korak 1: Analiza UP aplikacijeU ovom koraku treba analizirati i identifikovati područje kojeće donjeti korist iz SMP okruženja. Ovo znači da trebaidentifikovati područja u aplikaciji koje bi se trebala izvršavatiparalelno kada se ista izvršava na SMP sistemu.Korak 2: Redizajniranje aplikacije za SMPU ovom koraku potrebno je redizajnirati aplikaciju kako bi seizvukla korist iz SMP okruženja tako što će se kȏd koji setreba izvršavati paralelno izvršavati od strane više niti uparaleli na SMP sistemu.90


<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>Korak 3: Testiranje redizajnirane aplikacije (višenitne) uUP moduOvdje je potrebno osigurati da dio aplikacije koji jeredizajniran da se izvršava paralelno se pravilno izvršava uvišenitnom okruženju.Korak 4: Testiranje redizajnirane aplikacije u SMP moduPotvrĎivanje da aplikacija radi u SMP sistemu.Prva tri migracijska koraka će biti uraĎena dok koristimosamo jedno jezgro (single-core image). Ovo će osigurati daSMP dizajn radi na UP okruženju.Analiza UP aplikacijePrvi korak kod redizajniranja UP aplikacije za SMP sistem jeutvrĎivanje kako SMP može unaprijediti aplikaciju. Kako bi seovo uradilo, potrebno je identifikovati koji taskovi konzumirajunajviše CPU ciklusa, i kako se ti taskovi mogu razbiti na male91


<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>dijelove koji bi se mogli izvršavati simultano. Kako bi obaviliprvi korak potrebno je koristiti Wind River WorkbenchPerformance Profiler.Učitavanje i pokretanje aplikacijePrije nego što krenemo sa korištenjem Performance Profileranajprije moramo učitati aplikaciju na ciljnu mašinu (u našemslučaju simulator) i pokrenuti je. Naredni koraci opisuju kakoda se obavi ovaj zadatak.UP aplikacija koju treba analizirati je uključena kaodownloadable kernel module (DKM) pod nazivom UP-To-SMP-Migration.1. Koristiti UP simulator, TGT-VxSIM-UP, u Remote Systempogledu.2. Klikom na Connect pokrenuti simulator.92


<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>3. U Project Explorer pogledu, raširiti UP-To-SMP-Migration-Demo projekt i Built Target stavku u sklopu nje4. Odabrati 1-up-single-multi-thread a zatim iz kontekstnogmenija odabrati Debug VxWorks Kernel Task.93


<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>5. U dijalogu Launch Configuration Selection odabrati Editselected launch configuration i kliknuti na OK.94


<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>6. U Debug Configurations dijalogu verifikovati da jeArguments zadato sa numOfPacket=30000 sizeOfPacket=9numOfTask=1.95


<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>7. Klikom na dugme Debug pokrećemo aplikaciju. UWorkbench editoru bi trebali vidjeti fajl sa izvornim kodom stim da je aplikacija stopirana u Debug pogledu..96


<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>Korištenje Wind River Workbench Performance Profileralata za analizu aplikacijeWind River Workbench Performance Profiler je program zadinamičku analizu koji pruža detaljnu funkcija-po-funkcijaanalizu performansi uz prikazivanje individualnih rutina usklopu programa koje troše CPU cukluse. PerformanceProfiler kreira direktnu mapu onoga šta procesor radi, koje serutine pozivaju i koje rutine su one pozvale. On ukazuje naneefikasnosti u kodu i to je informacija koju trebamo kako bisistem podesili za optimalne performanse.Pokretanje Performance ProfileraDa bi pokrenuli Performance Profiler treba da uradimoslijedeće:1. Odabrati TGT-VxSIM-UP u Remote Systems pogledu97


<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>2. Iz kontekstnog menija odabrati Attach Performance Profiler98


<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>3. U Attach Performance Profiler dijalogu, promijenitiConnection Type sa TCP/IP na WTX99


<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>TCP/IP se koristi za spajanje Performance Profilera na targetmašinu preko Etherneta kada se koristi prava target mašina,dok se WTX koristi kada radimo sa VxWorks simulatorom.4. Performance Profiler pogled treba da se prikaže uWorkbenchu.100


<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>Podešavanje Performance Profiler pogledaKao što je ranije rečeno Performance Profiler može da prikažedosta informacija vezanih za iskorištenje procesora. Kodaplikacija uglavnom nas najviše zanimaju taskovi i funkcijekoje konzumiraju većinu procesorskog vremena. Kako bipodesili Performance Profiler da prikazuje te vrijednosti,potrebno je uraditi slijedeće:1. Desni klik nad Performance Profiler pogledom.2. Iz kontekstnog menija odabrati Properties.101


<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>3. Na System View kartici odabrati Routine, CumulativeIndirect i Max Indirect, a zatim kliknuti na OK102


<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>4. Aplikacija je sada spremna za izvršavanje. Aplikacijupokrećemo klikom na Resume dugme u Debug pogledu.5. Kada aplikacija završi sa izvršavanjem, trebali bi da vidimoslijedeći izlaz na simulatoru (vidjeti slijedeću sliku).Rezultati mogu varirati u zavisnosti od vrste i brzineprocesora, broja jezgara, memorije i opterećenja sistema namašini na kojoj je pokrenut simulator.103


<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>104


<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>6. Zaustaviti prikupljanje podataka odabirom Performancepogleda u editoru.7. Iz glavnog menija odabrati Performanse Profiler -> Pause.105


<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>Analiza prikupljenih podatakaNakon što raširimo vxWorks, Performance Profiler bi trebaoda izgleda kao na narednoj slici.106


<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>Sa slike možemo vidjeti koliko se procesorskog vremena (uprocentima) troši na svaki task u sistemu. Praktično, MaxIndirect % kolona nam prikazuje maksimalnu vrijednostkorištenja procesora za vrijeme uzorkovanja, tako da se netreba iznenaditi ako suma ukupnih vrijednosti u ovoj kolonipremaši 100%. Ovaj pogled koristimo pri istraživanju jer namdaje jasan pogled gdje se alociraju procesorski resursi zavrijeme trajanja uzorkovanja. Sa slike možemo zaključiti da jetask koji najviše koristi procesor tEncoder.TakoĎer, moguće je raširiti svaki task klikom na trougao lijevood taska kako bi vidjeli koje funkcije u tasku obavljaju najvišeposla.107


<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>.Treba primjetiti da je doEncoding() rutina najskuplja utEncoder tasku. Ovo ima smisla zbog toga što procesor trebada pokrene algoritam za kodiranje, dok taskovi koji primaju išalju podatke samo rade sa pokazivačima.108


<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>.109


<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>.110


<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>.111


<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>.112


<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>Priprema aplikacije za SMPNakon što identifikujemo koje dijelovi UP aplikacije trebaparalelizovati, potrebno je izmijeniti te dijelove i promijeniti ihkako bi bili u mogućnosti da iskoristimo prednosti SMPsistema.Razmatranja vezana za SMP dizajnKada smo identifikovali task koji najintenzivnije koristiprocesor, spremni smo da dizajniramo SMP aplikaciju. Kako jetEncoder task taj koji najviše koristi procesor, imalo bi smislada se on paralelizira i multiplicira. Na ovaj način će sepovećati performanse ako se ovi taskovi mogu konkurentnorasporeĎivati na više jezgara. Identifikacija skupih-zauzetihtaskova u kodu je ključno za SMP dizajn. Ovo su područjagdje bi se trebao iskoristiti paralelizam kako bi se unaprijedileperformanse.113


<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>Slika prikazuje SMP dizajn aplikacije.MeĎutim, ovaj redizajn uvodi novi problem: sada imamo dvatEncoder taska koji se takmiče za iste podatke. Ujednojezgrenom svijetu, tipično rješenje je da se onemogućipriempcija taska kada task pristupi dijeljenom resursu. Dakle,kada task za kodiranje pristupi podacima iz taska za primanjepodataka, task isključuje rasporeĎivač kako bi ušao u kritičnusekciju. Kada task završi sa primanjem podataka iz taska zaprihvatanje podataka, on ponovo uključuje preempciju114


<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>i to predstavlja kraj kritične sekcije. Ova vrsta uzajamnog isključivanjapodržana je u VxWorks UP aplikaciji sa taskLock() i taskUnlock().115


<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>116


<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>117


<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>API izmjene pri prelasku sa UP na SMPKod VxWorks UP dizajna, rutine za zaključavanje taska sekoriste od strane taska kako bi se spriječilo rasporeĎivanjebilo kojeg drugog taska u sistemu, sve dok se ne pozoveodgovarajuća rutina za otključavanje. Upotreba ovih rutinagarantuje pristup kritičnoj sekciji koda uzajamnimisključivanjem.Ovaj mehanizam može biti neprikladan za višeprocesorskisistem, što je razlog zašto rutine kao što taskLock() itaskUnlock() nisu podržane kod VxWorks SMP sistema.Kada se pozove API koji nije podržan u SMP kernelu,VxWorks dynamic linker javi grešku.Za zaključavanje taskova, VxWorks SMP pruža alternativnetaskCpuLock() rutine za situacije gdje svi taskovi kojiučestvuju u scenariju zaključavanja taskova imaju jednak118afinitet prema procesoru.


<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>119


<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>120


<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>121


<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>Testiranje izmjenjene aplikacije u UP režimu radaU prethodnom koraku smo identifikovali koji dijelovi UPaplikacije će iskoristiti prednost SMP dizajna. Sada jepotrebno redizajnirati te dijelove aplikacije i izmijeniti ih kako bibili u mogućnosti da iskoristimo prednost SMP dizajna.Najprije je potrebno testirati redizajniranu aplikaciju kako bi se122


<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>ustanovilo da radi u UP režimu. Ovo je bitan korak kod UP-SMP migracije, obzirom da je prvi korak u postizanjuparalelizma višenitnost (multithreading) dio koji bi se trebaoizvršavati paralelno i najlakši način da se potvrdi davišenitnost radi je da se aplikacija testira u UP režimu.Da bi ovo postigli treba da uradimo slijedeće:• Pokretanje redizajnirane verzije demo aplikacije kojaimplementira SMP dizajn (višenitnost) u UP režimu.• Korištenje Wind River System Viewera kako bi ustanovili da liredizajnirana aplikacija radi kako oćekujemo.123


<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>Pokretanje redizajnirane aplikacijeU sklopu VxWorks SMP razvojnog okruženja dolazi unaprijedmodificirana verzija demo aplikacije koja implementira SMPdizajn korištenjem dva taska za kodiranje. Da bi pokrenuliredizajniranu aplikaciju (sa dva Encoder taska) u UP režimupotrebno je uraditi slijedeće:1. Pokrenuti simulator izborom TGT-VxSMP-UP simulatora uRemote Systems pogledu, a zatim kliknuti na dugmeConnect.124


<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>2. Iz Project Explorer pogleda odabrati UP-To-SMP-Migration-Demo projekt i Build Targets stavku u sklopu toga.3. Desni klik na prvi projekt, 1-up-single-multi-thread.4. Odabrati Debug VxWorks Kernel Task iz kontekstnogmenija.5. U Launch Configuration Selection dijalogu, odabrati Editthe selected launch configuration, a zatim kliknuti na OK.6. U Debug Configuration dijalogu, potvrditi da je u Argumentsupisano numOfPacket=30000 sizeOfPacket=9numOfTask=2.125


<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>7. Odabrati Debug. Ovo pokreće aplikaciju. Sada bi trebali davidimo izvorni kod u Workbench editoru kao i to da jeaplikacija zaustavljena u Debug pogledu.126


<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>Korištenje Wind River System VieweraWind River System Viewer je run-time alat za analizunamijenjen programerima koji razvijaju softver za ureĎaje i kojitreba da istraže dinamičko ponašanje sistema sa ciljem da seustanove run-time problemi i poboljšaju performanse sistema.System Viewer zapisuje sistemske dogaĎaje koji se dese zavrijeme izvršavanja u realnom vremenu a zatim ih prikazujekao i stanja taska na grafičkom displeju koji je intuitivan iinformativan. Postoje dvije vrste dogaĎaja koji se moguprikazati u System Vieweru:• Sistemski dogaĎaji – kao što su akvizicije semafora, ilipromjena stanja taska iz running u pending.• Korisnički dogaĎaji – Ovi dogaĎaji su podešeni od stranekorisnika i mogu sadržavati podesive stringove.127


<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>Pokretanje System Viewer alataDa bi pokrenuli System Viewer potrebno je uraditi slijedeće:1. Desni klik na TGT-VxSIM-UP u Remote Systems pogledu.2. Iz kontekstnog menija odabrati System ViewerConfiguration.128


<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>3. Pojavljuje se slijededi pogled u Editoru4. Standardna velidina bafera u koji de System Viewer smještatidogađaje je 32KB. Da bi obezbijedili da se upišu svi podaci,moramo povedati bafer tako što demo odabrati Upload Mode.5. Koristiti Buffer Size kontrolu kako bi podesili velidinu na 1024KB.129


<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>Korištenje System Viewer Triggering opcijeOkidanje (triggering) počinje i završava dijagnostičkosakupljanje podataka po pozivanju. Na primjer, pretpostavimoda je aplikacija veoma duga sa stotinama dogaĎaja; meĎutim,zainteresovani smo samo za mali dijelić izvršavanja aplikacije.Uz pomoć okidanja možemo podesiti alat da počne saprikupljanjem podataka na malom dijelu aplikacije. Da bimaksimalno iskoristili System Viewer alat, treba da koristimounaprijed pripremljeni fajl za okidanje. Ovo će usredotočitiSystem Viewer na interesantno područje izvršavanja.Interesantni dio aplikacije je task za kodiranje. Potrebno jeslijediti slijedeće korake kako bi se pokrenuo fajl za okidanje:1. Desni klik na TGT-VxSIM-UP u Remote Systems pogledu.2. Iz kontekstnog menija odabrati Triggering.130


<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>3. Novi Triggering pristup je dodat Workbenchu.4. Kliknuti na novi Triggering pristup i odabrati Open.131


<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>5. U Open Trigger File dijalogu, pronaći/home/fedora/WindRiver/workspace/smp-demo-source.6. Odabrati startTrig.trig fajl.7. Kliknuti na OK.132


<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>10.Kada aplikacija završi sa izvršavanjem, bićemo u mogućnostipokrenuti aplikaciju klikom na Resume dugme u Debugprozoru.11.Vidjet ćemo slijedeći izlaz na simulatoru:133


<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>Zvjezdica (*) predstavlja podatke procesirane od straneprvog taska za kodiranje, dok znak @ predstavlja podatkeprocesirane od strane drugog taska za kodiranje. Rezultatimogu varirati u zavisnosti od računara na kojem je pokrenut134simulator, vrste i brzine procesora, broja jezgara, velićine


<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>i opterećenja sistema135


<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>Prikaz rezultata u System Viewer alatuDa bi pregledali dogaĎaje koji su se desili prilikomizvršavanja potrebno je slijediti slijedeće korake:1. Kliknuti na System Viewer Configuration traku.2. Pod System Viewer Configuration Menu stavkom, odabrati UploadThis Event Log kako bi prebacili podatke sa target mašine u ciljuanalize performansi.136


<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>3. Kada se prebace podaci o dogaĎajima, Performance Profilerkreira grafički displej aktivnosti na ciljnoj mašini.137


<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>Korištenje System Viewer alata kako bi se razumjeloizvršavanje izmjenjene aplikacijeTaskovi su prikazani na lijevoj strani. Puna linija predstavljaizvršavanje. U mogućnosti smo da pratimo svaku milisekunduizvršavanja. Radar izvršavanja je lociran na vrhu grafika inaglašava trenutno područje prikazano na grafikonu. Akoželimo da proširimo područje pogleda potrebno je daproširimo radar.138


<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>139


<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>Identifikacija System Viewer događajaTreba primjetiti da postoje dva taska za kodiranje. Brojevi uzagradama su identifikacijski brojevi taskova. Taskovi zakodiranje su zauzeti većinu vremena, i procesor se prebacujeizmeĎu izvršavanja ovih taskova. Kritična sekcija se povećalau novom SMP dizajnu iz razloga što se ista strukturapodataka dijeli izmeĎu dva taska za kodiranje. Kȏd aplikacijegeneriše korisnički dogaĎaj na mjestu ulaska u kritičnusekciju. Ovaj dogaĎaj je zabilježen od strane System Viewerai označen na grafiku sa V1. Svaki dogaĎaj je predstavljen kaoikona u System Viewer grafikonu; dodatno, svi dogaĎaji suprikazani u tabeli dogaĎaja.140


<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>Sa ciljem da uspostavimo vezu izmeĎu specifičnog dogaĎajasa ikonom tog dogaĎaja u grafikonu izvršavanja potrebno jeostvariti dvostruki klik na dogaĎaj kako bi ga označili. Trebaprimjetiti da je dodata crvena strelica u System Viewer radar.Klikom na Event Graph karticu i Zoom dugme, zumiramografik kako bi mogli detaljnije sagledati područje izvršavanja.Treba primjetiti da se na mjestu gdje task ulazi u kritičnu141sekciju boja taska mijenja iz zelene u crvenu boju.


<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>Na narednoj slici, strelica pokazuje na kritičnu sekciju.Kritična sekcija u ovoj aplikaciji počinje kada jedan odtaskova za kodiranje primi podatke iz Reciever taska. Kako jestatus taska promijenjen iz running u running+locked, bojalinije izvršavanja taska se mijenja iz pune zelene u tačkasto crvenu142


<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>Testiranje i izmjena aplikacije u SMP režimuU ovom koraku ćemo umogućiti višejezgrenost i pokrenutiaplikaciju. Ovo znači da se dva ili više taskova mogu pokrenutikonkurentno. Dakle, ako aplikacija zavisi od implicitnesinhronizacije – na primjer ako je sinhronizacija zasnovana naprioritetu taska – tada će postojati utrka za podacima, štomože dovesti do nepredvidivog ponašanja.Pokretanje izmjenjene aplikacije u SMP režimuDa bi pokrenuli novi SMP dizajn aplikacije (sa dva Encodertaska) potrebno je uraditi slijedeće:1. Kreirati i pokrenuti TGT-VxSIM-SMP simulator u RemoteSystems pogledu, a zatim kliknuti na Connect dugme.2. U Project Explorer pogledu, raširiti UP-To-SMP-Migration-Demo i Build Targets u sklopu njega.3. Desni klik na drugi projekt, 2-SMP-unsafe.143


<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>4. U kontekstnom meniju odabrati Debug VxWorks KernelTask.5. U Launch Configuration Selection dijalogu odabrati Edit theselected launch configuration a zatim klinuti na OK.6. U Debug Configurations dijalogu, promijeniti Arguments u:numOfPacket=30000 sizeOfPacket=9 numOfTask=2.7. Kliknuti na Debug. Ovo pokreće aplikaciju. Trebalo bi da sepojavi izvorni fajl u Workbench editoru s tim da je aplikacijazaustavljena u Debug pogledu.Korištenje Wind River System Viewer alataPotrebno je ponoviti istu proceduru koja je već ranije opisanaza slučaj TGT-VxSIM-UP samo što je sada potrebno odabratiTGT-VxSIM-SMP. TakoĎer je potrebno koristiti triggeringopciju na ranije opisan način.144


<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>U primjeru je dat nesinhronizovani scenario u kojem dvataska pristupaju istom resursu istovremeno. Kao rezultattoga, izvršavanje može pasti zbog greške segmentacijememorije. Ako simulator bude blokiran više od 30 sekundi,potrebno se isključiti sa istog i ponovo krenuti od prvogkoraka. Možemo primjetiti da aplikacija proizvodi neke greškeu obliku „index X, packet is missed“. Kada aplikacija završi saizvršavanjem, vidjećemo da se aplikacija nije izvršavala.145


<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>Analiza novih SMP grešaka sa System Viewer alatomTreba primjetiti da aplikacija prijavljuje da jedan ili više baferanedostaje. Da bi ustanovili u čemu je problem potrebno jeuraditi slijedeće:1. Pokrenuti System Viewer odabirom System ViewerConfiguration u glavnom meniju i izabrati Upload This EventLog iz podmenija.2. Kliknuti na Event Table karticu. Ovo će nam pomoći da sefokusiramo na odreĎeni dogaĎaj, obzirom da ima na stotinedogaĎaja koji su se desili u toku izvršavanja.3. Pronači dogaĎaj gdje se desila greška. Na primjer, ako jednagreška prikazuje da bafer 308 nedostaje, potrebno jepogledati u dogaĎaj 307 i njegove parametre.146


<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>4. Možemo primjetiti da je u radaru prikazana crvena istačkanalinija.5. Klikom na Event Graph i zumiranjem odabranog dogaĎajapočinjemo sa istraživanjem nekih rezultata:147


<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>6. Najprije zumirajmo odabrani dogaĎaj. Brojevi ispod linijeizvršavanja taska predstavljaju jezgro na koje je taskrasporeĎen. Na slici , tEncoder task sa identifikacijskimbrojem 0x607f5ce0 se izvršavao na jezgru 0.7. Svako jezgro je označeno sa bojom iscrtanom ispod glavnelinije izvršavanja. System Viewer može prikazati dogaĎaje iz32 jezgre koje se izvršavaju konkurentno i svaka jezgra možebiti obojena, što pomaže u pračenju izvršavanja taska nasvakom jezgru. Dakle, u svakom momentu možemo pratitikoje jezgro izvršava koji task.8. Kritična sekcija u aplikaciji je obojena u crveno iz razloga štose stanje taska mijenja iz running u running+locked zbogtaskCpuLock() poziva.9. Ako pogledamo pažljivo na slici možemo primjetiti da dvijejezgre istovremeno izvršavaju kritičnu sekciju. Samo148


<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>jedan task može izvršavati svoju kritičnu sekciju u bilo kojevrijeme (sve dok se ne koristi brojački semafor). Dakle, podacisu korumpirani iz razloga što dva taska istovremeno pristupajuistim podacima149


<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>Razumijevanje problema i njegovo riješenjeProblem je u tome da taskCpuLock() isključuje priempciju zaonu jezgru na kojoj se izvršava, ali ne i za ostale jezgre.Dakle, kada jedan tEncoder task pristupi kritičnoj sekciji,drugi task za kodiranje može biti rasporeĎen na drugo jezgročak i kada je pozvana taskCpuLock(), iz razloga što setaskCpuLock() primjenjuje samo na ono jezgro na kojem seizvršava.Ako oba taska pristupaju istom podatku iz taska za primanjepodataka, podaci će biti korumpirani, što je ono šta vidimoovdje. Ovo je najčešći problem u razvoju sistema sakonkurentnošću.Da bi riješili problem koristićemo spinlock umjestotaskCpuLock(). Spinlock pruža mogućnost kratkotrajnoguzajamnog isključivanja i sinhronizacije u SMP sistemima.150Task koji se izvršava na jednoj od jezgara koje dobija spinlock


<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>dobija ekskluzivan pristup kritičnoj sekciji koju štiti. Kada taskzavrši sa dijeljenim resursom, on otpušta spinlock. UmeĎuvremenu, bilo koji drugi task (na drugim jezgrama) kojipokušava da pristupi svom kritičnom resursu će čekati dadobije spinlock.U primjeru, poziv taskCpuLock() je zamijenjen saSPIN_LOCK_TASK_TAKE(), i taskCpuUnlock() jezamijenjen sa SPIN_LOCK_TASK_GIVE().151


.<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>152


.<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>153


<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>154


<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>Izmijenjenu aplikaciju pokrećemo sa argumentimanumOfPacket=30000 sizeOfPacket=9 numOfTask=2.Rezultat izvršavanja je prikazan na narednoj slici. Rezultatimogu varirati u zavisnosti od vrste i brzine procesora, brojajezgara, veličine memorije i opterećenja sistema155


<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>Ako pogledamo i usporedimo rezultate koje smo dobili naprethodnoj slici sa rezultatima na ranijoj slici za UP procesor,možemo vidjeti da je performansa na dva jezgra lošija odperformanse sa jednim jezgrom. Usporenje u odnosu na UPverziju, vjerovatno, leži u činjenicama da aplikacija mora dauradi dodatni posao u sinhronizaciji izmeĎu taskova, i/ili dase radi o lošoj optimizaciji aplikacije za paralelnoprocesiranje, i/ili da operativni sistem nije konfigurisan naadekvatan način. Naravno, treba napomenuti da rezultatimogu da variraju u zavisnosti od računara na kojem jepokrenut simulator (u ovom slučaju radi se o virtualnojmašini), od vrste i brzine procesora, broja jezgara, veličinememorije i opterećenja sistema.156


<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>Sumarni pregled rada SMP verzije VxWorks 6.8 HRTOS-aJedan od načina da se koriste sve jezgre je višenitnoprogramiranje u kombinaciji sa SMP operativnim sistemomkoji se može rasporeĎivati izmeĎu svih jezgara. Običnovišenitni programi koriste više niti koje se izvršavaju i koristesinhronizacijske primitive kako bi bili sigurni da seizvršavanje programa dešava u pravom redoslijedu.Posljednje što želimo je da dvije niti „simultano“ modifikujuistu strukturu podataka. Stvar je u tome da kod procesora sajednom jezgrom ne postoji pravi paralelizam, operativnisistem se pretvara da radi više stvari istovremeno. Kadauvedemo višejezgrene procesore imaćemo praviparalelizam, što može da dovede do problema.157


<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>Problem se pojavi kada aplikacija koristi dosta sinhronizacijei rezultat toga je da jezgre stalno čekaju jedna na drugu.Amdalov zakon diktira da imamo veoma malo ubrzanja izviše jezgara. Drugi mogući problem da aplikacija ne koristidovoljno sinhronizaciju i rezultat je da će aplikacija raditi uparaleli koje se nikada ne bi trebale paralelno izvršavati.Neke od bitnih stvari koje treba razmotriti kada gledamo navišejezgrene ugraĎene (embedded) sisteme je način na kojije konfigurisan višejezgreni softver. Najjednostavnije od ovihvišejezgrene konfiguracije koriste SMP sistemi koji dopuštajujednoj aplikaciji da koristi više jezgara. Naravno, ako jeaplikacija napisana za njih. Tranzicija sa programerskogmodela zasnovanog na jednom procesoru na modelzasnovan na više procesora zahtijeva veliki skok ukompleksnosti i iskustvu. Sa višejezgrenom paradigmom,sama aplikacija mora biti svjesna da ima na raspolaganju158


<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>više procesora/jezgara. Aplikacija mora biti ekvivalentnavišenitnom operativnom sistemu i prepoznati da posao možebiti obavljen paralelno a zatim podijeliti taskove na višeprocesora. Dio ovoga programerskog modela je u praćenjukada se svaki task završi tako da se može poduzeti slijedećaakcija. Drugi dio se odnosi na upravljanje nadmetanjima naddijeljenim resursima izmeĎu procesora. Ako jedan diomemorije treba da bude izmjenjen od strane više procesoramora postojati mehanizam reda čekanja kako bi procesoristali u red.Greške koje možemo načiniti u jednojezgrenomprogramiranju su brojne. Kod višejezgrenog modela možemozapasti u problem koji je teško debagirati i optimizirati.Ponekad posao koji je potrebno uraditi da bi se pratilokorištenje dijeljenog resursa smanjuje efikasnost aplikacije.Nekada, jedan proces zaključa dijeljeni resurs A, a zatim želi159


<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>da pristupi dijeljenom resursu B, koji je zaključan od straneprocesa koji drži resurs B i želi da pristupi dijeljenom resursuA. Ovo je poznato kao deadlock. Broj programera koji semogu nositi sa ovom vrstom problema je veoma mali. Zavećinu aplikacija, posao koji one obavljaju, nije podesan zaparalelno procesiranje. Postoji nekoliko razloga zaštovišejezgreni procesori učine dosta aplikacija sporijim. Prvo,brzina sata svakog jezgra na višejezgrenoj mašini može bitisporija nego brzina sata na procesoru sa jednim jezgrom kojise zamjenjuje. Drugo, odreĎena snaga višejezgrenogprocesora se koristi za praćenje dijeljenja resursa izmeĎuprocesora. Na primjer, što je više procesora koji su u igri, toje potrebno obaviti više posla oko sinhronizacije kešmemorije koja se koristi od strane svakog procesora. Treće,više procesora se može boriti za ista područja u memoriji.Četvrto, problem se može pojaviti kada se dosta vremena160troši u otkrivanju koji proces treba da se se izvrši slijedeći.


<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>Dakle, mašine sa više jezgara ne moraju da urade višeposla nego mašina sa jednom jezgrom. Ako imamo 10odvojenih programa koji se izvršavaju, mašina sa višejezgara će biti u mogućnosti da istovremeno pokrene više tihprograma. Ovo je prednost mašine sa više jezgara.Višejezgrene mašine obično imaju novije memorije kojima sepristupa brže. Druga korist od mašina sa više jezgara je štomogu da sadrže SSD diskove i da imaju brži pristup mreži.Čak i sa ovim prednostima, višejezgrene mašine su lošije zaodreĎene aplikacije i to će biti tako sve dok proizvoĎačisoftvera i softver developeri ne postanu eksperti uparalelnom programiranju.161


<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>VxWorks je proizvod firme Wind River Systems. To je hosttargetvrsta real-time operativnog sistema. Host može bitimašina bazirana na Windows ili Unix operativnom sistemu.VxWorks je napravljen u skladu sa POSIX-RT standardom.VxWorks UP i SMP dijele isto Wind River Workbenchrazvojno okruženje. Workbench je nadograĎen sa ciljem dapodrži debugging i analiziranje SMP okruženja. Workbench3.2 ima mogućnost da debagira VxWorks SMP kernel i realtimeprocese (RTP) kako u task tako i u sistemskom modu.Workbench pojednostavljuje otkrivanje utrke za podacima imeĎublokada, dva najčešća pitanja koja se pojavljujuprilikom razvoja programa za više-jezgrena okruženja.Kod Workbencha, VxWorks SMP projekti se podešavaju naidentičan način kao da se radi o jednoprocesorskoj verzijiVxWorks sistema. Korisnici mogu odabrati da razvijaju UP iSMP projekte. Kako svaki projekt ili aplikacija nije podesna162za SMP, korisnici mogu odabrati konfiguraciju OS-a koja


<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>najbolje odgovara njihovim potrebama. Workbench alatiWorkbench Debugger, System Viewer, WorkbenchPerformance Profiler, Workbench Code Coverage Analyzer,Workbench Memory Analyzer, Workbench data monitor iWorkbench Function Tracer su nadograĎeni tako da mogubiti upotrebljeni kako kod UP tako i kod SMP sistema.Migracija aplikacije sa UP na SMP uključuje nekoliko koraka:1. Identifikacija područja u kojima aplikacija prilikomizvršavanja troši najviše procesorskog vremena. To područjepredstavlja ono što bi trebalo biti paralelizovano. Uz pomoćWind River Performance Profiler alata smo u mogućnosti dapratimo svaki task i pozive funkcija unutar jedne aplikacije.2. Identifikacija implicitnih pitanja sinhronizacije. UP aplikacijemogu donijeti sa sobom pitanja sinhronizacije. Na primjer,sinhronizacija zasnovana na prioritetu gdje taskovi visokog163


<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>prioriteta uvijek priemptiraju taskove nižeg prioriteta. KodSMP sistema, X taskova se može izvršavati konkurentno,gdje X predstavlja broj jezgara.3. Pokretanje nove SMP aplikacije na UP sistemu, gdje postojisamo jedno jezgro. U večini slučajeva paralelizam znači višedijeljenja podataka izmeĎu taskova i zbog toga zahtijevaviše sinhronizacije i komunikacije izmeĎu taskova.4. Pokretanje SMP aplikacije na SMP sistemu gdje suukjlučena neka ili sva dostupna jezgra. Uz pomoć WindRiver System Viewer alata možemo da vizualizujemoizvršavanje taskova. System Viewer podržavavišejezgrenost i pruža detaljne informacije o dogaĎajima posvakom jezgru.164


<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>Wind River VxWorks SMP i Wind River alati pomažu kod:• Izdvajanja područja gdje je neophodan paralelizam.• SMP Debagiranja i nadzora sa VxWorks SMP alatima. Svialati su integrisani u Workbench i funkcionišu na isti načinkako za UP tako i za SMP sisteme.• Otklanjanja problema. Paralelizam uvodi pitanjasinhronizacije i komunikacije izmeĎu taskova. Ova pitanjamogu prouzročiti meĎublokadu i livelock. System Viewer jealat za nadgledanje koji prikuplja podatke sa maksimalno 32jezgra i prikazuje ih u tabeli dogaĎaja i kao grafik. Uz pomoćovog alata smo u stanju da vizualizujemo izvršavanje našegkoda.• Nadgledanja izvršavanja sistema i identifikacije run-timeproblema kao što su: izgladnjivanje, uska grla, inverzijeprioriteta itd.165


<strong>VxWORKS</strong> i VIŠEJEZGRENI <strong>PROCESORI</strong>VxWorks dolazi sa integrisanim razvojnim okruženjemzvanim Tornado. Kao dodatak standardnoj podršci za razvojaplikacije kao što je editor, cross-kompajler, cross-debugger,itd. Tornado sadrži VxSim i WindView. VxSim simuliraVxWorks target za prototipiranje i testiranje okruženja unedostatku prave ciljne (target) ploče. WindView sadrži alateza debagiranje za okruženje simulatora. VxMP jevišeprocesorska verzija VXWorksa.166

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!