Top Banner

of 33

Asembler parsiranje

Jul 07, 2018

Download

Documents

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
  • 8/19/2019 Asembler parsiranje

    1/33

      158

    Programirawe paralelnihsistema 

    Iako se, iz prethodno izlo`enog, vidi izuzetna kompleksnost i raznovrsnost

    problema u podru~ju arhitektura, jo{ ve}i izazovi postoje u podru~ju programira-

    wa paralelnih sistema. Napredak u ovoj oblasti tekao je sporije iz dva osnovna

    razloga: objektivna kompleksnost problema i nepostojawe jedinstvenog modela

    paralelne arhitekture kao generalne paradigme za paralelno procesirawe, analog-

    ne modelu Von Neuman-ove ma{ine za sekvencijalno programirawe.

    Rje{ewe problema le`i u odgovoru na jednostavno pitawe: "Kako realizovati

    program, kojim se rje{ava `eqeni aplikativni problem, tako da wegovo izvo|ewe

    na paralelnoj arhitekturi bude optimalno?". Optimalno izvo|ewe podrazumijeva

    postojawe funkcije ciqa koja mo`e biti: minimalno vrijeme izvr{ewa programa

    (algoritma), ravnomjerno optere}ewe procesnih resursa, minimalna cijena izvo|e-

    wa i sl.

    Uobi~ajena funkcija ciqa za izvo|ewe neke aplikacije na paralelnom sistemu u

    teoretskim razmatrawima je minimizacija vremena izvr{ewa, a za skup nezavisnih

    programa, optimalan balans optere}ewa po procesnim elementima. U praksi,

    naj~e{}e je od interesa dobijawe najpovoqnijeg odnosa performansa/cijena, gdje

    cijena ukqu~uje ne samo cijenu procesirawa nego i razvoja aplikacije.

    Prethodno navedeno pitawe implicira inherentno postojawe paralelizma u

    aplikativnom problemu, te optimalnu eksploataciju istog u paralelnom sistemu.

    Aplikativni problem se mo`e rije{iti odre|enim ure|enim skupom operacija -

    algoritmom, koji se mo`e posmatrati na razli~itim nivoima apstrakcije: nivou

    zadataka, podzadataka, procedura, grupa instrukcija, samih instrukcija ili elemen-

    tarnih operacija. Izme|u odre|enih operacija (na svakom nivou) mo`e postojati

  • 8/19/2019 Asembler parsiranje

    2/33

      159

    zavisnost u pogledu redoslijeda izvo|ewa (proistekla iz zavisnosti po podacima

    ili kontrolnoj zavisnosti). Za operacije izme|u kojih ne postoji zavisnost,

    ka`emo da se mogu izvesti (procesirati) istovremeno (paralelno).

    Ponovimo uslove nezavisnosti grupa operacija (iz ta~ke 4.4.1  –   upravqa~ki

    hazardi) onako kako je to prvobitno definisao Bernstein (1966), koriste}i

    ulazno/izlazne skupove podataka. Varijable se klasifikuju u 4 kategorije:

    varijable koje se samo ~itaju, varijable koje se samo upisuju, varijable koje se

    prvo ~itaju, a zatim upisuju, varijable koje se prvo upisuju, a zatim ~itaju.

    Ako se skupovi ovih tipova varijabli ozna~e sa W  , onda se grupe opera-

    cije sa Sl. 7.1 a ) mogu izvesti kao na Sl. 7.1 b ), pod uslovom da je:

    iiii  Z Y  X  ,,,

    1) 0)()( 222111 = Z Y  X  Z Y W    UUIUU ,

    2) 0)()( 222111 = Z Y W  Z Y  X    UUIUU ,

    3) . 0)( 3321 =Y W  X  X    UII

    Ako navedeni uslovi nisu ispuweni, onda postoji antizavisnost, direktna

    zavisnost ili izlazna zavisnost po podacima, respektivno.

    U svakom trenutku u procesu izvo|ewa, za skup operacija izme|u kojih ne postoji

    zavisnost u pogledu redoslijeda izvo|ewa i koje su spremne za izvo|ewe ka`emo da

    ~ine slobodan skup (intuitivno, optimalan raspored treba da omogu}i izvo|ewe

    {to ve}eg broja slobodnih operacija u svakom slijede}em vremenskom intervalu).

    1P

    P3

    P2

    P1

    P3

    P2

    a) Serijska  b) Paralelno-serijska  

    Sl. 7.1 Sekvence izvo|ewa operacija.

  • 8/19/2019 Asembler parsiranje

    3/33

      160

    Bez obzira na to na kom nivou se razmatra problem, krajwi rezultat je raspodjela

    izvr{ewa bazi~nih (ma{inskih) instrukcija po procesorima. Problem optimalnog

    izvo|ewa (sa stanovi{ta zadate funkcije ciqa) u osnovi se sastoji iz:

    • problema grupisawa (podjele problema na zrna ( grains), veli~ine konkurentnih

    modula-zrna koja se raspore|uju po procesnim elementima i strukture elemen-

    tarnih operacija po zrnima),

    • problema optimalnog raspore|ivawa zrna po procesnim elementima.

    Rje{avawe ovih problema zahtijeva da se u razmatrawe ukqu~i i niz dodatnih para-

    metara: karakteristike i mehanizmi me|uprocesorske komunikacije, te mogu}nost

    preklapawa komunikacionih i ra~unskih operacija, heterogenost procesorskih i

    memorijskih elemenata i sl.

    U realnim sistemima, naglasak je na {to efikasnijoj eksploataciji parale-

    lizma, uz {to mawe optere}ewe programera. Automatska identifikacija i eksploa-

    tacija paralelizma, sofistikovano okru`ewe i alati, pogodni mehanizmi i metode

    za eksplicitnu specifikaciju i eksploataciju paralelizma su odnosni aspekti u

    ovom domenu koji su predmet kontinualnog istra`ivawa i usavr{avawa.

    7 1 Vremenski gubici u paralelnim sistemima

    Teoretski, maksimalno ubrzawe koje se mo`e posti}i izvo|ewem programa na

    paralelnom sistemu sa N procesora jednako je broju procesora. U takvom scenariju,

    svih N procesora bi izvodilo samo korisne instrukcije, i svi bi po~eli i zavr{i-

    li procesirawe u istim vremenskim trenucima. U praksi, ostvarivawe ovakvih

    maksimalnih performansi se ne posti`e zbog gubitaka vremena prouzrokovanih:

    • komunikacionim ka{wewima,

    • sinhronizacijom izme|u procesora,

    • nezaposleno{}u procesora (prazni hodovi procesora),

    • neophodnim upravqa~kim aktivnostima operativnog sistema.

    Komunikaciona ka{wewa i mehanizmi

    Kao {to smo prethodno pomenuli, izvo|ewe ra~unawa (procesa, niti, grupa instru-

    kcija) se u paralelnim sistemima raspodjequje po procesnim elementima. Proceso-

    ri koji izvode ra~unawa izme|u kojih postoji zavisnost po podacima, moraju imati

  • 8/19/2019 Asembler parsiranje

    4/33

      161

    mogu}nost me|usobne komunikacije u ciqu izmjene podataka. Procesori izmjewuju

    podatke na dva osnovna na~ina: preko zajedni~ke memorije ili preko komunikaci-

    onih kanala (kompromisni koncept je koncept po{tanskog sandu~eta). Implikacije

    me|uprocesorske komunikacije su komunikaciona ka{wewa i konflikti zbog

    kori{tewa zajedni~kih (komunikacionih) resursa. Komunikaciona ka{wewa se

    odnose na vrijeme koje je potrebno za transfer podataka od izvora do odredi{ta, a

    konflikti u kori{tewu resursa nastupaju kada se pojavi vi{e zahtjeva za

    kori{tewe jednog resursa, {to rezultuje dodjeqivawem resursa jednom zahtjevu i

    ~ekawem ostalih.

    Prilikom prenosa poruka kroz spre`nu mre`u npr., vi{e poruka istovremeno

    mo`e zahtijevati prolaz kroz jedan ~vor, uz mogu}u degradaciju komunikacionog

    saobra}aja ne samo u okolini navedenog ~vora, nego i u cijeloj mre`i. Za

    redukovawe ovih konflikata koriste se razli~ite tehnike: npr. objediwavawe

    istih komunikacionih zahtjeva u komunikacionim ~vorovima, primijeweno u  NYU

    Ultracomputer/IBM RP3, ili razli~ite softverske adaptivne tehnike usmjeravawa

    poruka koje uzimaju i obzir i teku}e stawe saobra}aja u mre`i. Prema tome,

    ka{wewa uslijed izmjene podataka izme|u procesora, mogu u znatnoj mjeri uticati

    na performanse paralelnog izvo|ewa.

    Za ilustraciju, u tabeli 7.1 za neke paralelne i distribuirane sisteme date su

    aproksimativne vrijednosti parametara komunikacionih ka{wewa Ts i Tw u [  s ] 

    (vrijeme incijalizacije kanala i vrijeme prenosa izme|u procesora po rije~i). 

    Tipi~no ka{wewe pri transferu 100 bajtne poruke izme|u procesora je, za prvu

    generaciju multira~unara (1983-1987) 6000  s , za drugu generaciju (1988-1992) 5  s  

    i tre}u (aktuelnu) generaciju ispod 0.5  s [45].

    Tabela 7.1 Aproksimativne vrijednosti parametara komunikacionih ka{wewa za nekeparalelne ra~unarske sisteme.

    Sistem  T  s [  s ]  T w [  s ] 

    Cray-T3E 0.013

    Intel Paragon 121 0.07

    Thinking Machines CM-5  82 0.44

    Intel DELTA 77 0.54

    nCUBE-2 154 2.4

    Radna stanica na Ethernet-u 1500 5.0

  • 8/19/2019 Asembler parsiranje

    5/33

      162

     

    Mehanizam komunikacije kod multiprocesora je (naj~e{}e) direktan pristup

    dijeqenim varijablama u zajedni~koj memoriji. Ovakvi mehanizmi podlo`ni su

    nepredvi|enim i ne`eqenim efektima: kod asinhronog izvo|ewa ra~unawa po

    procesorima bilo koja izmjena u sekvenci pristupa zajedni~kim varijablama mo`e

    produkovati razli~it krajwi rezultat (alternativno, procesori mogu komunici-

    rati i mehanizmom poruka).

    Kod multira~unara, komunikacija se realizuje na bazi prenosa poruka,

    kori{tewem specifi~nih naredbi odre|enog programskog jezika ili biblioteke

    funkcija. Nijedan pristup jo{ uvijek nema adekvatno rje{ewe za fundamentalne

    probleme memorijske latentnosti i komunikacionih ka{wewa. 

    Problemi sa odr`awem koherentnosti ke{ memorija i nagomilavawem

    konflikta na magistrali, kod sistema sa zajedni~kom memorijom, limitiraju

    pove}awe broja procesora u ovim sistemima. Cijena komunikacije izme|u proce-

    sora kod MIMD multira~unara sa distribuiranom memorijom name}e eksploataciju

    krupnozrnastog paralelizma na globalnom nivou: ra~unawa (implicitno) treba da

    izvedu hiqade instrukcija bez prekida (promjene konteksta) ili poziva

    operativnog sistema. Cijena kreirawa, blokirawa, destrukcije, komunikacije i

    sinhronizacije za ra~unawa, mo`e iznositi stotine (pa i hiqade) procesorskih

    ciklusa. Npr. kod sistema baziranih na standardnim mikroprocesorima,

    pristizawe poruke u neki procesni element mo`e:

    • generisati prekid za odredi{ni procesor, uz aktivirawe sekvence za obradu

    poruke,

    • detektovati sam procesor periodi~nim ispitivawem da li je poruka stigla,

    • biti detektovano strukturom programa, ako se obezbijedi, da za svako slawe

    poruke iz izvori{nog procesora, odredi{ni procesor izvede korespondentu

    prijemnu primitivu.

    Svi navedeni na~ini su relativno spori i neefikasni za sitnozrnastu

    komunikaciju, neophodnu za eksploataciju sitnozrnastog paralelizma.

    Napori za prevazila`ewe ovih problema i}i }e vjerovatno u pravcu razvoja

    vi{enitnih arhitektura, gdje }e cijena upravqawa nitima biti relativno mala.

    Sa programskog aspekta, komunikacija se realizuje odgovaraju}im

    konstrukcijama programskih jezika.

  • 8/19/2019 Asembler parsiranje

    6/33

      163

    CSP (communicating sequential programs) jezici podr`avaju iskqu~ivo komunikaciju

    preko kanala: komunikacija se realizuje eksplicitnim imenovawem odredi{ta

    komunikacije. Izlazna naredba ima format:

    : = ! < expression >

    a prijem se inicira ulaznom naredbom

    : = ? target variable.

    Osnovni koncept komunikacije u ADA programskom jeziku su randevui: randevu

    se ostvaruje sa dva doga|aja:

    • pozivom koji jedan zadatak upu}uje drugom,

    • prihvatom komunikacije od strane drugog zadatka izvo|ewem ACCEPT 

    naredbe (Sl. 7.2).

    Ipak, ADA dozvoqava i komunikaciju preko dijeqenih varijabli

    kategorizacijom varijable SHARED kvalifikatorom.

    CALL ACCEPT

    Sl. 7.2 ADA randevui. 

    H.F.Jordan , predla`e slijede}e tipove varijabli u programskim jezicima za parale-

    lno procesirawe u sistemima sa distribuiranom memorijom:

    •  private - jedno ime varijable ovog tipa referencira u memoriji svakog procesora

    specifi~nu memorijsku lokaciju,

    unique - jedna varijabla ovog tipa postoji samo u memoriji jednog procesora,• cooperative update - postoji jedna kopija varijable u svakom memorijskom modulu.

    A`urirawe se mora izvesti istovremeno nad svim kopijama.

    • replicated - a`urirawe se izvodi nad lokalnim kopijama podataka (npr. kod

    indeksne varijable koja uzima isti opseg vrijednosti u svim procesorima).

  • 8/19/2019 Asembler parsiranje

    7/33

      164

    Tako|e se predla`u globalni komunikacioni mehanizmi: emisija (broadcast ),

    univerzalna emisija i univerzalna izmjena za prosqe|ivawe i izmjenu podataka.

    Concurrent Pascal zahtijeva eksplicitnu specifikaciju dijeqenih varijabli te ko-

    ntrolisan pristup preko definisanih procedura za rad nad dijeqenim varijablama.

    Compositional C++ (CC++, Caltec/Chandy, Kesselman) ima ekstenziju standardnog C++

     jezika kojom se defini{u procesorski objekti koji se koriste za reprezentaciju

    lokalnog adresnog prostora: ra~unawa koja se izvode u procesorskom objektu i koja

    rade sa podacima definisanim u tom objektu, rade u lokalnom (i zato "jeftinom")

    adresnom prostoru. Za referencirawe podataka i funkcija u drugim procesorskim

    objektima, koriste se globalni pokaziva~i. Primjer pristupa ne-lokalnim podaci-

    ma iz nekog ra~unawa (niti) iz procesorskog objekta , dat je na Sl. 7.3.1obj p

    Svako referencirawe podataka u drugom procesorskom objektu se realizuje:

    • formirawem i slawem poruke udaqenom procesorskom objektu (uz

    blokirawe niti ra~unawa koje je iniciralo referencirawe),

    • kreirawem nove niti za pristup udaqenom objektu. Pristup se realizuje

    zavr{etkom izvo|ewa kreirane niti na udaqenom procesoru,

    • vra}awem tra`ene vrijednosti inicijalnoj niti i nastavkom izvo|ewa iste.

    pobj2 pobj1

    *gptr var   _ x

    *gptr  = 3var_x = 3 

    ? var_x 

    var_y +=*gptr

    write(*gptr ,3)

    ack 

    value = 3

    read (*gptr )

    Sl. 7.3 Udaqeno pisawe/~itawe.

    MPI (message passing interface) procesi izvode programe pisane u standardnim

    sekvencijalnim jezicima. Komunikacija izme|u procesa se realizuje u odre|enim

    ta~kama pozivom odgovaraju}ih funkcija iz  MPI biblioteke za slawe i prijem

    poruka (MPI-SEND i MPI-RECV). Grupa procesa mo`e biti istovremeno ukqu~ena u

    proces grupne komunikacije (emisije npr.) kroz MPI mehanizam komunikatora.

  • 8/19/2019 Asembler parsiranje

    8/33

      165

    Prosqe|ivawe poruka je nedeterministi~ko (ako procesi A i  B {aqu poruku

    procesu C, bez obzira na redoslijed slawa, redoslijed prijema nije odre|en).

    Sinhronizacija 

    Ra~unawa u procesnim elementima se izvode brzinom koja se ne mo`e ta~no

    predvidjeti. Posqedica toga je asinhrono generisawe akcija, doga|aja i podataka

    koji se koriste u drugim procesima u paralelnom sistemu. U ciqu ure|ivawa ovih

    doga|aja, uvodi se skup ograni~ewa (sinhronizacija) koja se koriste za odga|awe

    izvo|ewa odre|enih ra~unawa, kako bi se zadovoqili potrebni uslovi. Osnovni

    tipovi sinhronizacije kod multiprocesora su me|usobno iskqu~ivawe   i

    sinhronizacija uslova . Me|usobno iskqu~ivawe   obezbje|uje da procesi pristupaju

    ekskluzivno fizi~kim ili virtuelnim resursima. Dio koda koji se izvodi

    ekskluzivno od strane nekog procesa i u kojem se (eksluzivno) pristupa dijeqenoj

    varijabli, naziva se kriti~na sekcija .

    Sinhronizacija uslova   je tip sinhronizacije gdje procesi moraju da ~ekaju dok

    stawe dijeqene varijable, koje zavisi od rezultata izvo|ewa grupe procesa, ne

    dobije ̀ eqenu vrijednost.

    Kod me|usobnog iskqu~ivawa proces detektuje status kriti~ne sekcije, i ako je

    slobodna, postavqa status kriti~ne sekcije u zauzeto a zatim izvodi kriti~nu

    sekciju. Ako je kriti~na sekcija zauzeta, proces mo`e nastaviti sa ispitivawem

    statusa kriti~ne sekcije (kontinualno ili periodi~no) ne osloba|aju}i procesor,

    ili se mo`e implementirati mehanizam koji proces stavqa u stawe ~ekawa a

    procesor osloba|a za druge aktivnosti.

    Proces koji ekskluzivno izvodi kriti~nu sekciju, na izlasku iz kriti~ne

    sekcije postavqa indikator statusa kriti~ne sekcije u slobodno. Ako su neki

    procesi u redu ~ekawa za kriti~nu sekciju, onda se aktivira jedan od procesa sa

    liste ~ekawa, na bazi odre|enog prioriteta.

    Naj~e{}a implementacija ovog mehanizma je preko nedjeqivih  P(s) i V(s) primi-

    tiva (Dijkstra), gdje  P  primitiva osigurava ekskluzivan ulaz u kriti~nu sekciju;  s  je

    varijabla stawa zauzetosti kriti~ne sekcije, a V   primitivom se reguli{e

    napu{tawe kriti~ne sekcije. Pro{ireni semafor koji je razvio Agervala (1977)

    omogu}ava da proces zahtijeva vi{e resursa istovremeno. Uslovno kriti~na sekcija  

     je strukturirani, korisni~ki orijentisani mehanizam (csect   v do await   c:s) koji

    obezbje|uje da proces ne mo`e u}i u kriti~nu sekciju s dok se ne ispuni uslov c, i da

  • 8/19/2019 Asembler parsiranje

    9/33

      166

    ne mo`e do}i do preklapawa izvo|ewa razli~itih kriti~nih sekcija nad istim

    dijeqenim resursom v.

    Ekstenzije uslovno kriti~nih sekcija su monitori , koji ~ine skup dijeqenih

    podataka i skup funkcija preko kojih se jedino mo`e pristupiti strukturama

    dijeqenih podataka. Monitorske funkcije obezbje|uju sinhronizaciju konkuren-

    tnih procesa.

    Sinhronizacija uslova se naj~e{}e realizuje mehanizmom barijere . Svi procesi

    moraju sti}i na barrier   naredbu (koja se stavqa u kod svakog procesa). Samo jedan

    proces (nakon {to su svi stigli na barijeru), prolazi kroz barijeru, i izvodi kod  

    izme|u barrier  i endbarrier   naredbe (Sl. 7.4). Nakon toga, svi procesi mogu nastaviti

    izvo|ewe naredbe iza barijere.

     barrier

    endbarrier  

    Sl. 7.4 Sinhronizacija na barijeri. 

    Varijanta fazi-barijere   dopu{ta da izvo|ewe procesa bude u nekoj sekciji koda

    prilikom sinhronizacije.

    Sinhronizacija mehanizmom  doga|aja , koristi primitive wait   i   signal . Wait  

    primitiva obezbje|uje stavqawe procesa u stawe ~ekawa na doga|aj (ili

    kombinaciju doga|aja). Drugi, aktivni procesi, signaliziraju primitivom  signal  

    nastanak odre|enih doga|aja i kada se desi doga|aj na koji blokirani proces ~eka,

    operativni sistem ga prevodi u stawe procesa spremnog za izvo|ewe.

    U paralelnim multira~unarskim sistemima, sinhronizacija se realizuje meha-

    nizmom poruka . Neke od varijanti primitiva za izmjenu poruka, opisane su

    prethodno.

    Za implementaciju sinhronizacije pri pristupu zajedni~kim resursima

    neophodna je bila realizacija nedjeqivih operacija ispitivawa i a`urirawa

    memorijskih lokacija na hardverskom/instrukcionom nivou.  Razli~iti sistemi

    imaju razli~itu formu ovih instrukcija: TEST-AND-SET (TAS), COMPARE-AND-SWAP

  • 8/19/2019 Asembler parsiranje

    10/33

      167

    (CAS) i sl. U vi{eprocesorskim sistemima mora se obezbijediti da procesor koji

    izvodi navedene instrukcije, ima kontrolu nad pristupom memoriji za cijelo

    vrijeme izvo|ewa instrukcije.

    Fetch & add operacija omogu}ava konkurentno izvr{avawe generalizovane TAS

    instrukcije uz serijalizaciju pristupa memoriji. Kod sinhronizacionih metoda na

    bazi bit mapa (HEP sistem), svakoj dijeqenoj varijabli se pridru`uje  sync  i data 

    poqe. Svaka sinhronizaciona instrukcija je nedjeqiva i sadr`i poqe maske, koje

    sadr`i informacije potrebne za ispitivawe i modifikaciju sync poqa (forma: OP

    Address, Mask). Operacija ~itawa, npr. testira odre|eni bit  sync poqa, i ako je on

    ‘1’ (raspolo`iv) ~itawe se realizuje, a odnosni bit postavqa u ‘0’.

    Prazni hodovi procesora 

    Prazni hodovi procesora su periodi u kojima procesor ne obavqa korisne

    instrukcije. U paralelnim sistemima (zbog zavisnosti po podacima ra~unawa

    (operacija) na razli~itim procesorima) prazni hodovi su naj~e{}e uzrokovani:

    • ~ekawem na zavr{etak ra~unawa koja produkuju podatke,

    • ~ekawem na prosqe|ivawe podataka (komunikaciona ~ekawa),

    • ~ekawem na dodjelu posla.

    Navedena, ~ekawa mogu poticati od neodgovaraju}eg rasporeda ra~unawa po proces-

    nim elementima, redoslijeda izvo|ewa ra~unawa i dr. Navedene pojave produ`avaju

    vrijeme izvr{ewa programa, smawuju iskori{tewe procesora i pove}avaju cijenu.

    Gubici uslijed aktivnosti operativnog sistema

    U paralelnim sistemima operativni sistem je, kao i kod jednoprocesorskih siste-

    ma, odgovoran za upravqawe izvr{ewem programa. Ove aktivnosti podrazumijevaju

    stati~ko/dinami~ko mapirawe procesa po procesnim elementima, upravqawe

    procesima i resursima, nadgledawe aktivnosti u sistemu i sl. Iako su funkcije

    operativnih sistema visoko optimizovane, ove aktivnosti tako|e produ`avaju

    vrijeme izvo|ewa programa u paralelnom okru`ewu.

  • 8/19/2019 Asembler parsiranje

    11/33

      168

    7 2 Granularnost paralelizma

     

    Da bi se neki program izveo na paralelnoj arhitekturi konkurentnim procesira-

    wem na vi{e procesnih elemenata, on se mora razdijeliti na parcijalno ure|en

    skup zadataka (T, ). Efikasnost paralelnog izvo|ewa zavisi od vi{e parametara:

    broja i karakteristika procesora i komunikacionih resursa, broja modula na koje

    se program dijeli za izvo|ewe i strukture veza izme|u razdijeqenih modula, iznosa

    pojedinih komponenata vremenskih gubitaka itd. Pove}awe broja modula i broja

    procesora koji se pridjequju programu za izvr{ewe mo`e rezultovati degradacijom

    performansi, ako vremenski gubici (zbog intenzivirawa me|uprocesorske komuni-

    kacije) znatno rastu sa porastom broja modula i procesora.

    p

    Granularnost modula-zrna ima zna~ajan uticaj na kvalitet razdiobe i defini{e

    se kao odnos potrebnog vremena ra~unawa u odnosu na komunikaciona ka{wewa

    generisana zrnom (R/C). Ka`e se da je zrno sitno ako je odnos R/C mali (> 1). Sitna zrna su mikrooperacije i

    instrukcije; grupe instrukcija ~ine zrna sredweg nivoa granularnosti, a krupna

    zrna su funkcije i procesi (zadaci). Generalno, dekompozicija na sitna zrna

    implicira ve}i iznos paralelizma, ali i ve}e gubitke vremena, zbog pove}awa

    iznosa komunikacije i sinhronizacije. Analogno, krupnija zrna impliciraju mawi

    stepen paralelizma, ali i mawe vremenske gubitke.

    Kako je to prethodno izlo`eno paralelizam na nivou mikrooperacija i

    instrukcija eksploati{e se na hardverskom nivou, paralelizam sredweg nivoa se

    mo`e eksploatisati hardverski, softverski ili kombinovano (programske petqe,

    niti) dok se krupnozrnasti paralelizam eksploati{e softverskim tehnikama.

    Da bi se ostvarile dobre performanse izvo|ewa, potrebno je napraviti balans

    izme|u iznosa paralelizma me|u programskim modulima i odgovaraju}eg iznosa

    vremenskih gubitaka. Zato je u odre|enim slu~ajevima potrebno grupisati

    sitnozrnaste zadatke u ve}a zrna, a u drugim dekomponovati krupna zrna u

    sitnozrnaste module. Da bi se paralelizam eksploatisao, potrebno je prvo

    izvr{iti identifikaciju istog, a zatim ga na odgovaraju}i na~in specifikovati

    ma{ini.

    Identifikacija i specifikacija paralelizma, mo`e se realizovati:

  • 8/19/2019 Asembler parsiranje

    12/33

      169

    • automatski u fazi prevo|ewa, a na osnovu relacija zavisnosti po podacima

    pojedinih grupa naredbi,

    • eksplicitno od strane programera, odgovaraju}im instrukcijama programskog

     jezika,

    • kombinovano.

    7 3 Automatska identifikacija i specifikacija

    paralelizma

    U ovom pristupu, sav teret identifikacije i specifikacije na~ina na koji }e se

    eksploatisati paralelizam (prestrukturirawe, particionisawe, mapirawe) preu-

    zimaju programski prevodioci, a korisnici realizuju programe koriste}i standar-

    dne jezike. Pored toga {to korisnik ne ula`e nikakav dodatni napor u odnosu na

    sekvencijalno programirawe, ovaj pristup omogu}ava direktnu eksploataciju

    postoje}ih sekvencijalnih programa (ponovo prevedenih paraleliziraju}im

    prevodiocem) na paralelnim sistemima. Osnovni problem je {to paraleliziraju}i

    kompajleri te{ko mogu, u op{tem slu~aju, identifikovati visok nivo paralelizma

    (npr. zbog nemogu}nosti da odrede vrijednosti pokaziva~a u fazi prevo|ewa, zbog

    ogromnog broja kompleksnih me|uzavisnosti i sl.). Cijena koja se pla}a za komodi-

    tet programera je, ~esto, zna~ajno umawewe ubrzawa izvo|ewa aplikacije i iskori-

    {tenosti resursa paralelne ma{ine.

    Paraleliziraju}i kompajleri koriste razli~ite postupke transformacije

    izvornog programa u ciqu postizawa {to ve}eg iznosa paralelizma u

    trasformisanom kodu, naravno uz o~uvawe semanti~kog integriteta izvornog

    programa.

    Optimizacija po tragu (trace scheduling ) npr., je tehnika globalne optimizacije,

    koja se zasniva na selidbi operacija (prije/poslije granawa) u ciqu pove}awa bazi-

    ~nih blokova (i time iznosa paralelizma) po najvjerovatnijem putu izvo|ewa.

    Optimizacija programskih petqi je od vitalnog zna~aja za eksploataciju parale-

    lizma, jer petqe potencijalno sadr`e veliki iznos paralelizma i izvo|ewe petqi

     je naj~e{}e dominantni dio izvo|ewa programa.

    Osnovne tehnike optimizacije su vektorizacija, razmotavawe petqi i softver-

    ska proto~nost. Tehnika vektorizacije nastoji iskazati operacije u petqi skupom

    vektorskih operacija; razmotavawem petqi za odre|eni broj iteracija pove}ava se

  • 8/19/2019 Asembler parsiranje

    13/33

      170

    bazi~ni blok u tijelu petqe, i na taj na~in pove}ava iznos paralelizma koji se

    mo`e eksploatisati pri izvo|ewu. Tehnikom softverske proto~nosti, transfor-

    mi{e se tijelo petqe u ciqu omogu}ewa direktne eksploatacije paralelizma

    izme|u iteracija i u okviru jedne iteracije (Sl. 7.5).

    Neki od ad-hok optimizacionih postupaka su: zamjena indukcionom varijablom u

    izrazima u petqi, preimenovawe skalarnih varijabli, zamjena slijede}ih referen-

    cirawa skalara wegovim izrazom, dijeqewe petqi, dijeqewe domena podataka, i sl.

    a : i←i +1 

    b :  j←i +h

    c : k←i +g

    d : l← j +1

    0: a

    1: b, c

    2: d, a

    3: b, c

    4: d

    1: a

    2: b, c 

    3: d, a

    1: a

    2: b, c 3: d

    a) b) c)

      a) Sekvencijalna petqa b) Dvostruko razmotana petqa c) Proto~na petqa

    Sl. 7.5 

    Optimizacija petqe. 

    Modulza prikaz

    Analiza

    Katalogtransform.

    FORTRAN 77

    program

    Internapredstava

    BACK END

    Paralelizovani

    programSUPRENUM FORTRAN

    Interakt.modul

    FRONT END

    Sl. 7.6 Struktura sistema SUPERB.

    Kao primjer automatske identifikacije i specifikacije parelelizma, navedimo

    SUPERB (Suprenum Parallelizer Bonn), interaktivni paralelizator koji

  • 8/19/2019 Asembler parsiranje

    14/33

      171

    transformi{e standardne FORTRAN 77 sekvencijalne programe u semanti~ki

    ekvivalentne paralelne  SUPRENUM  FORTRAN programe, za SUPRENUM MIMD 

    ma{inu . Struktura sistema je predstavqena na Sl. 7.6.

     Front End   trasformi{e  FORTRAN 77  program u internu reprezentaciju. Modul za

    analizu sadr`i alate za analizu toka programa i analizu zavisnosti: izlaz iz ovog

    modula su informacije o nizovima definicija varijabli i nizovima kori{tewa,

    zavisnosti izme|u naredbi, `ivotu varijabli, raspolo`ivo{}u izraza i sl. Na

    osnovu tih informacija vr{i se paralelizacija, i to u dvije faze:

    • identifikuje se krupnozrnasti paralelizam i raspodjequje u skup procesa

    (MIMD  paralelizacija). Paralelizacija se bazira na razdiobi domena

    podataka, pri ~emu svaki segment predstavqa lokalni adresni prostor

    procesa,

    • svaki proces se analizira, identifikuju se programske petqe koje se

    prestruktui{u kao vektorske operacije (SIMD  paralelizacija-vektoriza-

    cija). Time se posti`e visok stepen paralelne obrade u ~vorovima koji

    izvode procese i koji imaju mogu}nost efikasnog procesirawa vektorskih

    operacija.

    Interaktivni sistem ipak dopu{ta korisniku mogu}nost pra}ewa i pode{avawa

    procesa transformacije.  Back End  modul, na osnovu transformisane interne repre-

    zentacije, generi{e paralelizovan SUPRENUM FORTRAN program. Sli~an pristup

    koristi Parafrase prevodilac razvijen na univerzitetu u Ilinoisu, Buldog prevodilac

    (Yale) i dr. 

    Neka rje{ewa omogu}avaju da se odre|eni problemi specifikuju jezikom visokog

    nivoa, baziranim na apstraktnim tipovima podataka - objektnim klasama, koji

    sadr`e kako definiciju potrebnih struktura podataka za navedene probleme, tako

    i operacija pridru`enih odnosnoj klasi. Ovakva specifikacija ne sadr`i

    specifi~ne konstrukcije za paralelno programirawe. Sistem automatski prevodi

    ovakvu specifikaciju visokog nivoa u paralelni programski jezik (SUPRENUM

    FORTRAN).

    U programskom jeziku BLAZE poku{ava se na}i kompormisno rje{ewe izme|u

    sekvencijalnog programirawa i eksplicitne identifikacije i specifikacije

    paralelizma u paralelnim programskim jezicima. Sa izuzetkom naredbe " forall ", tok

    kontrole u BLAZE jeziku je potpuno sekvencijalan. Intencija jezika je da se ostvari

  • 8/19/2019 Asembler parsiranje

    15/33

      172

    visoko paralelizovano izvo|ewe na razli~itim SIMD i MIMD  arhitekturama uz

    potpuno osloba|awe korisnika od detaqa paralelnog izvo|ewa (korisnik nema

    predstavu o mogu}im vi{estrukim nitima toka kontrole u fazi izvo|ewa npr.).

    Realizaciju ovog ciqa u potpunosti preuzima prevodilac i run-time okru`ewe.

    Jezik ima sintaksu sli~nu PASCAL-u.  Da bi prevodilac mogao izvr{iti

    kvalitetnu paralelizaciju, napravqene su odre|ene restrikcije: pokaziva~i nisu

    implementirani jer spre~avaju efikasnu identifikaciju paralelizma. Dodatno,

    procedure imaju funkcionalnu semantiku: efekat izvo|ewa procedure mo`e biti

    samo pridjeqivawe povratne vrijednosti procedure. U okviru procedure dozvoqen

     je pristup samo lokalnim podacima. Gnije`dewe procedura nije dozvoqeno. Ovakav

    koncept procedura je karakteristi~an za funkcionalne jezike (bazirane na toku

    podataka). Ipak, za razliku od funkcionalnih jezika BLAZE dopu{ta vi{estruko

    pridjeqivawe istoj varijabli. Dakle, jezik omogu}ava programirawe na na~in

    veoma blizak konvencionalnom, {iroko kori{tenom PASCAL-u, a s druge strane

    automatsku identifikaciju i specifikaciju paralelizma u toku prevo|ewa, i

    eksploataciju istog u fazi izvo|ewa programa. Sli~ne karakteristike imaju i

    funkcionalni jezici SISAL, VAL ili ID.

    7 4 Projektovawe i razvoj paralelnih programa

    I pored toga {to kori{tewe paraleliziraju}ih prevodilaca osloba|a korisnika

    dodatne dimenzije kompleksnosti programirawa u paralelnom okru`ewu, ipak ono

    ima i nekoliko ozbiqnih nedostataka. Osnovni nedostatak je nemogu}nost prevodi-

    laca da mijewa semantiku programa, odnosno strukturu sekvencijalnih algoritama,

    koji ~esto ne sadr`e mnogo inherentnog paralelizma. Prestrukturirawem postoje-

    }ih algoritama ili konstrukcijom novih, mo`e se obezbijediti znatno pove}awe

    iznosa (pa prema tome i eksploatacije) paralelizma. Konkurentnost se pojavquje

    kao fundamentalni zahtjev za algoritme i programe.

    Daqe, mnogi postoje}i sekvencijalni jezici sadr`e konstrukcije koje

    limitiraju mogu}nost detekcije paralelizma u postoje}im programima (pokaziva~i,

    mnogostruko ugnije`dene procedure sa mogu}no{}u pristupa dijeqenim

    varijablama, "alias" varijable i sl.). Sekvecijalni programi nisu automatski

    prilagodqivi za izvo|ewe za slu~aj pove}awa broja procesora u sistemu i obima

    problema. Mogu}nost pro{irewa ( scalability) u navedenom smislu se tako|e name}e

  • 8/19/2019 Asembler parsiranje

    16/33

      173

    kao jedan od bitnih zahtjeva za paralelne programe. Kompleksnost paralelnog

    programirawa izrazito potencira modularnost kao fundamentalni princip

    programirawa. Aspekti modularnosti sekvencijalnog programirawa moraju biti

    pro{ireni, s obzirom na specifi~nost paralelnih sistema.

    Prirodan ciq je da se navedena svojstva iska`u adekvatnim konstrukcijama

    odgovaraju}eg programskog jezika, ne optere}uju}i programera detaqima komunika-

    cije i koordinacije me|u procesorima. Pored programskog jezika, od su{tinskog

    zna~aja za razvoj i realizaciju paralelnih programa je postojawe generalnog modela

    paralelne ma{ine, koji bi omogu}io razvoj generalnih tehnika i metoda programi-

    rawa paralelnih ma{ina, primjenqivih na najve}em broju sistema. Tako|e, ovakav

    generalni model bi olak{ao proces standardizacije operativnih sistema i

    razvojne radne okoline.

    I pored navedenih argumenata u prilog eksplicitno paralelnog programirawa,

    MIMD sistemi za sada mogu da, na me|uprocesorskom nivou, efikasno eksploati{u

    samo krupnozrnasti paralelizam. Za efikasno izvo|ewe ra~unawa po procesnim

    elementima novijih (RISC baziranih) arhitektura i daqe }e biti od interesa

    optimalno ure|ewe niza instrukcija u fazi prevo|ewa.

    7 4 1 Programski modeli paralelnih ma{ina

    Robusnost i jednostavnost von-Neuman-ovog modela (sekvencijalnog) ra~unara

    omogu}io je razvoj generalnih tehnika programirawa, standardizaciju programskih

     jezika pa i arhitektura i operativnih sistema (UNIX npr.) sekvencijalnih ma{ina.

    Odgovaraju}a paradigma neophodna je i za paralelne sisteme. U daqem tekstu dat je

    kratak pregled postoje}ih varijanti.

    PRAM  (Paralel Random Access Machine) model je idealizovana i pojednostavqena

    predstava paralelnih sistema sa dijeqenom memorijom, gdje svaki procesor u

    svakom ciklusu izvodi ili jednu elementarnu operaciju, ili ~ita/pi{e iz lokalne

    ili dijeqene memorije. Razli~ite varijante PRAM modela defini{u pristup

    memoriji sa vi{e ili mawe restrikcija: kod EREW (Exclusive Read Exclusive Write)

    PRAM modela nije dozvoqen istovremeni pristup dijeqenoj memoriji od strane

    razli~itih procesora niti za ~itawe niti za upis. CREW (Concurrent Read Exclusive

    Write) model dozvoqava istovremeno ~itawe ali ekskluzivan upis, dok CRCW nema

    ograni~ewa na pristup zajedi~kim lokacijama. Ovakav upro{ten model nije

  • 8/19/2019 Asembler parsiranje

    17/33

      174

    primjenqiv kao generalna platforma za paralelno programirawe, iako omogu}ava

    dobijawe uvida u strukturu i kompleksnost paralelnog ra~unawa.

    Model programirawa  koji odgovara ovom ma{inskom modelu zasniva se na skupu

    procesa koji dijele podatke u istom adresnom prostoru, i kojem pristupaju asinhro-

    no. Koordinacija aktivnosti i kontrolisan pristup zajedni~kim resursima,

    zahtijeva eksplicitno i pa`qivo programirawe i realizuje se sinhronizacionim

    mehanizmima tipa semafora, monitora i sl. Navedeni koncept ne obezbje|uje u

    su{tini zahtjeve za modularno programirawe i ne uzima u obzir druge aspekte

    (lokalnost npr.), veoma zna~ajne za druge modele paralelnih ma{ina.

    Multira~unar

     

    Ovaj model paralelnog sistema je idealizovana predstava

    MIMD paralelnih sistema i mo`e se predstaviti istom {emom (Sl. 6.14, 6.15).

    Svaki ra~unar izvodi svoj vlastiti program iz lokalne memorije. Lokalni procesi

    imaju direktan pristup podacima u lokalnoj memoriji, a komunikacije sa procesima

    u drugim ra~unarima se ostvaruju slawem i prijemom poruka preko spre`ne mre`e

    (u op{tem smislu, ovim mehanizmom se ostvaruje pristup udaqenim memorijama,

    distribuiranim po drugim procesnim elementima). U idealizovanoj mre`i, cijena

    transfera poruka zavisi samo od du`ine poruke. Bitna karakteristika modela je

    lokalnost tj. svojstvo sistema da je cijena pristupa lokalnoj memoriji mnogo mawa

    od cijene pristupa udaqenoj memoriji.

    Programi razvijeni za ovaj model, mogu se efikasno implementirati i na

    multiprocesorske sisteme, budu}i da isti podr`avaju komunikacione mehanizme na

    bazi poruka.

    Postoji nekoliko modela programirawa koji odra`avaju arhitekturne

    karakteristike multira~unarskog modela paralelnih sistema. Oni se zasnivaju na

    prostim apstrakcijama kojima se mogu iskazati konkurentnost, lokalnost/global-

    nost te mogu}nost pro{irewa i modularnog programirawa.

    Model zasnovan na zadacima i kanalima  se sastoji iz varijabilnog skupa zadataka

    koji se izvode konkurentno. Zadatak se izvodi u lokalnoj memoriji nekog odprocesnih elemenata nad lokalnim podacima. Komunikacija sa zadacima na drugim

    procesorima se realizuje preko U/I portova, mehanizmom poruka. U/I portovi

    razli~itih zadataka mogu biti spojeni dinami~ki kreiranim kanalima. Zadaci se

    mapiraju na procesore; mapirawe ne smije uticati na semantiku programa.

  • 8/19/2019 Asembler parsiranje

    18/33

      175

    Sli~ne su{tinske karakteristike imaju model prosqe|ivawa poruka   (message

     passing model ) i objektno orijentisani model u kojem objekti konceptualno

    odgovaraju zadacima.

    SPMD ( single program multiple data)  programski model se reprezentuje jednim

    programom, koji se izvodi nad disjunktnim skupovima podataka. On odgovara

    podskupu gore navedenih modela, za slu~aj fiksnog broja identi~nih zadataka koji

    iste operacije izvode nad razli~itim podacima. Ovaj model je primjenqiv za MIMD

    arhitekture sa velikim brojem procesnih elemenata. Koncepti ovog modela vodili

    su razvoju FORTRAN-a 90 i High Performance Fortran-a (HPF).

    SIMD model paralelnih sistema reprezentuje odgovaraju}u specijalizovanu klasu

    arhitektura, koja nije pogodna kao generalna platforma za paralelno procesirawe,

    iako su ovi sistemi izrazito pogodni za rje{avawe dosta {iroke klasespecijalizovanih i dobro strukturiranih nau~nih problema. Adekvatan model

    programirawa za ovaj model arhitektura se zasniva na paralelizmu podataka, koji

    podrazumijeva mogu}nost fine granularnosti operacija. Programer treba da

    specifikuje strukture podataka nad kojima se (iste) operacije mogu izvesti para-

    lelno, a prevodilac generi{e odgovaraju}i kod. Ovaj model programirawa pogodan

     je i za MIMD arhitekture sa velikim brojem procesnih elemenata i regularnom

    strukturom povezivawa. 

    Kriti~ki osvrt na aktuelne modele programirawa i arhitektura dao je

    Dennis, uz tvrdwu da nijedan navedeni model ne zadovoqava principe modularnog

    programirawa (a samim tim ni generalnost programirawa), te da modeli

    arhitektura ne uzimaju adekvatno u obzir fundamentalna pitawa latentnosti

    memorije i me|uprocesorske sinhronizacije. Predla`e se generalni semanti~ki

    model predstavqen na Sl 7.7.

    Predlo`eni model ima izvori{te u argumentaciji da se koncept modularnosti

    najpogodnije implementira ako je mogu}e aktivirati funkcije (procedure) uz

    specifikaciju korektnih parametara, bez obzira na to gdje se funkcije ili

    argumenti nalazili. Svaki objekat ima jedinstven identifikator (pokaziva~ na

    objekat). Aktivirawe modula se onda defini{e parom (procedure_pointer,

    argument_pointer) (argument_pointer   se odnosi na strukturu koja sadr`i skup

    vrijednosti argumenata za proceduru).

  • 8/19/2019 Asembler parsiranje

    19/33

      176

    EPIR

    x:Z:

    n

    Programski DAG

    Aktivnost

    Pointerprocedure

    Okvir

    Ofset   Varijableokvira

    Tekst

    Stablo aktivacije

    Heap DAG

    Zapisi

    Poqe

    1 n. . .

    Sl. 7.7 Generalni semanti~ki model paralelnog procesirawa.

    Model se sastoji iz 3 komponente (od kojih se svaka mo`e predstaviti acikli~kim

    orijentisanim grafom). Prvi dio sadr`i kod  procedura kojim se defini{u aktiv-

    nosti. Svaki luk u grafu indicira poziv neke procedure iz nadre|enog modula.

    Korespondentni graf je stablo aktivacije, gdje svaki ~vor sadr`i lokalne podatke

    za aktiviranu proceduru. Tre}i dio je sistemski heap, ~iji ~vorovi reprezentuju

    strukture podataka, a podre|eni ~vorovi elemente struktura. U ovakvom modelu

    aktivnost se defini{e parom instrukciona_referenca (IR), pokaziva~_okru`ewa

    (EP). Instrukciona referenca identifikuje programski modul i instrukciju u

    modulu, spremnu za izvr{ewe. Pokaziva~ okru`ewa identifikuje aktivaciono

    stablo pridru`eno programskom modulu. Neka operacija u modelu mo`e da: izvodi

    lokalna ra~unawa, selektuje slijede}u operaciju na bazi neke lokalne vrijednosti,

    manipuli{e strukturama na heap-u i inicira ili zavr{i aktivirawe nekog modula.

    Sistem dopu{ta postojawe vi{e konkurentnih aktivnosti u istom modulu i vi{e

    instanci jednog modula. Implementacione varijante za koordinaciju aktivnosti su

     fork  i join operacije u nitima , ili uslovi aktivacije po konceptu ma{ina upravqanih

    podacima.

  • 8/19/2019 Asembler parsiranje

    20/33

      177

    Model nije baziran na nekoj postoje}oj arhitekturi ili tehnologiji, ve}

    suprotno, ima ambiciju da trasira puteve za projektovawe arhitektura koje }e

    zadovoqiti fundamentalne zahtjeve za paralelno programirawe. Model tako|e

    uva`ava fizi~ke limite kapaciteta memorije, fiksnu {irinu rije~i i sl. ali i

    implementacione aspekte. Vi{enitni koncepti i principi upravqawa na bazi

    toka podataka se predla`u kao bazni za razvoj arhitektura novih ma{ina.

    7 4 2 Projektovawe paralelnih programa

    Projektovawe i realizacija paralelnih programa je kompleksan zadatak, koji nije

    mogu}e formalizovati skupom precizno definisanih koraka i postupaka. Stoga je

    neophodan odre|eni metodolo{ki pristup koji apostrofira razmatrawe bitnih

    faktora i razli~itih opcija od kojih zavisi kvalitet rje{ewa, i koji obezbje|uje

    kriterijume za izbor izme|u razli~itih alternativa.

    Projektovawe paralelnih programa je u uskoj vezi sa algoritamskom podlogom i

    veoma ~esto zahtijeva prestrukturirawe postoje}eg algoritma ili razvoj adekva-

    tnijeg. Bez obzira na ma{inski ili programski model, rezultat projekta treba da

    bude skup modula (zadataka) koji obavqaju odre|ena ra~unawa i izme|u kojih

    postoje precizno definisane interakcije, te wihov raspored po procesnim elemen-

    tima paralelnog sistema. Naravno, konkurentno izvo|ewe modula raspodjeqenih po

    procesnim elementima, mora realizovati `eqenu funkciju.

    Realizacija navedenog ciqa se mo`e ostvariti strukturirawem

    projektovawa u ~etiri faze: particionisawe, ustanovqavawe veza (komunikacija),

    ukrupwavawe i mapirawe (Sl. 7.8). U praksi, proces nije strogo sekvencijalan:

    nezadovoqavaju}e alternative u nekoj fazi mogu implicirati ponovno razmatrawe

    varijanti u prethodnim fazama.

    Particionisawe   ima za ciq da se cijeli proces izdijeli na {to ve}i broj

    zadataka izme|u kojih postoji potencijalno velika mogu}nost konkurentnog

    procesirawa. Zadaci obuhvataju kako ra~unawa (skup operacija) tako i podatke nad

    kojima se ra~unawa izvode. Dobra podjela implicira ravnomjernu raspodjelu, kako

    ra~unawa, tako i podataka po zadacima. Osnovne komplementarne tehnike razdiobe

    su dekompozicija domena (podataka) i funkcionalna dekompozicija. Generalno,

    zadaci ne treba da sadr`e redundantna ra~unawa ili podatke i, broj zadataka koji

    se dobijaju dekompozicijom treba da je u proporciji sa veli~inom problema.

  • 8/19/2019 Asembler parsiranje

    21/33

      178

    Zadovoqavawem navedenih principa, dolazi se do rje{ewa sa izra`enom

    konkurentno{}u i adaptibilno{}u u odnosu na obim problema.

    Povezivawe  je faza u kojoj se ustanovqava zavisnost izme|u zadataka i potrebni

    transferi (komunikacije) podataka izme|u wih. Za specifikaciju komunikacije

    potrebno je definisati, kako same podatke koji se izmjewuju odre|enim komunika-

    cionim mehanizmom (porukama npr.), tako i komunikacione veze (kanale) izme|u

    zadataka.

    PROBLEM

    Mapirawe 

    Komunikacija 

    Particionisawe 

    Ukrupwavawe

    Sl. 7.8 Proces projektovawa paralelnih programa.

    Komunikacionu strukturu   dekomponovanog sistema karakteri{e lokalnost, struk-

    turnost, dinami~nost i sinhronizam. Dobra dekompozicija obezbje|uje da zadaci

    komuniciraju sa malim skupom susjednih zadataka (lokalnost), tj. obezbje|uje

    balansiranu dekompoziciju komunikacija, tako da susjedni zadaci formiraju

    regularnu strukturu. Kod stati~kih komunikacija, svaki zadatak izmjewuje podatke

    samo sa unaprijed odre|enim zadacima. Za realizaciju sinhronih transfera, zadaci

  • 8/19/2019 Asembler parsiranje

    22/33

      179

    koji su ukqu~eni u transfer moraju da kooperi{u za realizaciju transfera (kod

    asinhronih transfera slawe/prijem su nezavisni). Komunikacije tako|e treba da

    imaju mogu}nost konkurentnog izvr{ewa i mogu}nost preklapawa sa ra~unawima.

    Ykrypwavawe grupisawe   zadataka se vr{i u ciqu smawewa komunikacionih

    aktivnosti (i vremenskih gubitaka) uz zadr`avawe {to je mogu}e ve}eg iznosa

    paralelizma. Dodatno, potrebno je odr`ati prilagodqivost ( scalability) rje{ewa

    obimu problema, i prihvatqivu cijenu programske implementacije. U ovoj fazi

    potrebno je, tako|e, uzeti u obzir implementacione aspekte (broj procesora, na~in

    komunikacije i sl.).

    /   

    Smawewe odnosa komunikacija/ra~unawe po zadatku, grupisawem susjednih zada-

    taka koji me|usobno komuniciraju u jedan (ve}i) zadatak, zasniva se na efektu

    odnosa povr{ina i volumena (komunikacioni zahtjevi su proporcionalni povr{i-

    ni, a kompjutacioni volumenu pod-domena), tako da se pove}awem pod-domena posti-

    `e `eqeni efekat. Daqe, grupisawe zadataka sa sekvencijalnom zavisno{}u ne

    smawuje paralelizam, a omogu}ava smawewe iznosa komunikacije (u slu~aju postoja-

    wa dovoqnog broja procesnih elemenata). Smawewe komunikacionih gubitaka mo`e

    se ostvariti i vi{estrukim ponavqawem izvo|ewa istog ra~unawa u razli~itim

    procesnim elementima. Neki od agoritama za grupisawe datog skupa zadataka,

    predstavqenog acikli~nim orijentisanim grafom (DAG), koji se baziraju  na

    prethodnim principima, opisani su ukratko u tekstu koji slijedi.

    Grupisawe po vertikalnim slojevima  je metoda koja se bazira na grupisawu sekven-

    cijalnih ~vorova u ve}i ~vor. DAG, koji reprezentuje sistem zadataka, se transfo-

    rmi{e u ekvivalentni graf sa horizontalnim slojevima, tako da je du`ina puta od

    korijena grafa do svih ~vorova u jednom sloju ista. Zatim se svi ~vorovi koji

    pripadaju kriti~nom putu grupi{u u jedan ~vor (particiju), ~vorovi iz formirane

    particije se virtuelno uklawaju iz grafa i postupak ponavqa na preostalom skupu.

    Grupisawe eliminisawem komunikacionog ka{wewa ,  se zasniva na grupisawu

    ~vorova, uz uslov da se ukupno vrijeme izvr{ewa ne produ`ava. Naime, grupisawem

    susjednih ~vorova (nekog ~vora i wegovih prethodnika/nasqednika) pove}ava se

    vrijeme ra~unawa, ali se elimini{u vremena komunikacije. Grupisawe se nastavqa

    dok se ukupno vrijeme izvo|ewa ne pove}ava.

    Algoritam grupisawa koji se zasniva na vi{estrukom ponavqawu izvo|ewa

    zadataka  smawuje iznos komunikacije izme|u zadataka multiplicirawem izvo|ewa

  • 8/19/2019 Asembler parsiranje

    23/33

  • 8/19/2019 Asembler parsiranje

    24/33

      181

    7 4 3 Implementacioni mehanizmi

    Koncept rje{avawa problema paralelnog izvo|ewa skupa zadataka potrebno je

    izraziti na pogodan na~in u programskom jeziku adekvatnih mogu}nosti. Kompleks-

    nost problema implicira neophodnost modularnog programirawa, tj. izgradwe

    kompleksnih modula (i na kraju cijelog programa) od komponentnih. U sekvenci-

     jalnom programirawu module mo`emo posmatrati kroz funkcije i kroz ulazno/-

    izlazni skup podataka koji je povezan sa izvo|ewem funkcije. Kod paralelnih

    programa, u razmatrawe treba ukqu~iti tako|e zadatke-aktivnosti koji se

    generi{u u modulu i wihovo mapirawe na procesore, dekompoziciju podataka po

    zadacima, te karakteristike komunikacije.

    U paralelnim sistemima, moduli se mogu na razli~ite na~ine komponovati u

    programski sistem (Sl. 7.10).

    Sekvencijalna kompozicija je karakteristi~na za SPMD  programe, gdje se isti

    program izvodi u svim procesnim elementima tako da se razli~ite komponente

    (moduli) pozivaju i izvode sekvencijalno jedna za drugom. Paralelna kompozicija

    mapira svaku komponentu na razli~it procesor, uz paralelno izvo|ewe istih.

    Konkurentna kompozicija omogu}ava konkurentno izvo|ewe razli~itih

    komponenata na svakom od procesorskih elemenata.

    Mnogi programski jezici obezbje|uju podr{ku za specifikaciju paralelizma

    (identifikovanog kroz fazu projektovawa), komunikaciju izme|u zadataka, imple-

    mentaciju koncepta modularnog programirawa i mapirawe zadataka po procesnim

    elementima.

  • 8/19/2019 Asembler parsiranje

    25/33

      182

    Paralelna kompozicija

    Konkurentna kompozicija

    Sekvencijalnakompozicijamodula

    Vrijeme

    Sl. 7.10 Varijante kompozicije programa u programski sistem. Sjen~ewem su ozna~ena dvaprogramska modula koji se izvode na ~etiri procesorska elementa. 

    Osnovni koncept paralelnog kodirawa opisao je M.R. Conway (1963) ,  sugeri{u}i

    par instrukcija (ma{inskog jezika) FORK, JOIN za kreirawe konkurentnih procesa.

    S obzirom da  for   petqa ~esto sadr`i nezavisne iteracije, za specifikaciju

    kreirawa nezavisnih procesa za svaku interaciju koristi se varijanta  parallel for  

    instrukcija. Blok strukturiranu konstrukciju predlo`io je Dijkstra ~ija je forma: 

    beginS0;

    cobegin  S1; S2; ...., Sn; coend  

    Sn+1 ;

    end .

    S0 se izvodi prije (grupa) naredbi S1, S2, ... , Sn, koje se pak mogu izvesti konkurentno.

    Nakon kompletirawa svih naredbi S1, S2, ... , Sn izvodi se naredba . (Analogno

    ovoj konstrukciji koriste se konstrukcije  parbegin-parend ). Hoare, na temequ gorwe

    konstrukcije, defini{e paralelnu komandu za specifikaciju paralelnih procesa:

    1+nS 

    := [ { || }]

    OCAM  jezik,  koristi PAR i  SEQ naredbe za eksplicitnu specifikaciju paralel-

    nog/sekvencijalnog izvo|ewa.

    U konkurentnom Pascal-u, defini{u se tipovi i instance procesa; procesi se

    iniciraju (startuju) init  naredbom, a za sinhronizaciju pristupa dijeqenim resursi-

  • 8/19/2019 Asembler parsiranje

    26/33

      183

    ma izme|u procesa koriste se monitori. U ADA programskom jeziku paralelni

    procesi se specifikuju preko TASK konstrukcije. Svaki task  ima svoju deklaraciju

    i definiciju. Instance task -ova se kreiraju i aktiviraju pozivom procedura u

    kojima su definisani. Komunikacija izme|u task -ova se realizuje ili mehanizmom

    randevua ili preko dijeqenih varijabli.

    Pored ovih osnovnih konstrukcija za podr{ku paralelnom procesirawu, kojima

    se omogu}ava eksplicitna specifikacija paralelizma, savremeni paralelni

    programski jezici sadr`e i druge konstrukcije za podr{ku.

    CC++ (Compositional C++) je ekstenzija standardnog C++  jezika, koji pored apstrak-

    cija "procesorski objekat" i "globalni pokaziva~" pomenutih u dijelu 7.1. ima i

    apstrakcije "thread ", " sync variable", "atomic function" i "transfer  functions".

    Niti   (threads) se kreiraju i izvode u okviru procesorskog objekta. Inicijalno,

    program se izvodi sa jednom niti kotrole; vi{estruke niti se kreiraju pomo}u  par,

     parfor i  spawn  naredbi. Dok se niti formirane sa  par   i  parfor   ne kompletiraju, ne

    mo`e se izvesti slijede}a aktivnost.

    Spawn  dozvoqava kreirawe nezavisnih niti. Ovim konstrukcijama se

    implementira koncept konkurentnog izvr{ewa, a procesorska apstrakcija

    implementira koncept lokalnosti. Niti  se izvode (podrazumijevaju}e) u procesor-

    skom objektu u kojem su kreirane. Na~in komunikacije i sinhronizacije izme|u

    niti je pomenut prethodno. Za sinhronizaciju ~itawa/upisa iz dijeqene varijable

    koristi se modifikator  sync  u deklaraciji dijeqene varijable. (Ako nit ~ita iz

     sync varijable u koju vrijednost nije upisana, ona se blokira dok vrijednost ne bude

    upisana). Modifikator atomic omogu}ava implementaciju kriti~nih sekcija: dvije

    atomic  funkcije istog objekta ne mogu se izvesti istovremeno. Transfer podataka

    proizvoqnog tipa izme|u procesorskih objekata se realizuje transfer funkcijama.

    Mapirawe na fizi~ke procesore se realizuje tako da se niti mapiraju na

    procesorske objekte, a procesorski objekti na fizi~ke procesore. Za definisawe

    fizi~ke lokacije procesorskih objekata, koriste se konstruktorske funkcije ( proc-

    t  i node-t ).

    FORTRAN M  je ekstenzija standardnog FORTRAN-a 77. Omogu}ava eksplicitnu

    specifikaciju zadataka i wihovog paralelnog izvr{ewa, kanala, slawa i prijema

    poruka te mapirawa na virtuelnu ma{inu.

    Procesi se deklari{u istom sintaksnom konstrukcijom kao i potprogrami, s

    tim da se koristi kqu~na rije~ PROCESS umjesto  SUBROUTINE.  Procesi koji se

  • 8/19/2019 Asembler parsiranje

    27/33

      184

    pozivaju u bloku PROCESSES/ENDPROCESSES se aktiviraju za konkurentno

    izvr{ewe. Petqom PROCESSDO/ENDPROCESSDO se kreiraju vi{estruke instance

    istog procesa. Za komunikaciju izme|u procesa kreiraju se kanali (konstrukcijom

    CHANNEL) sa ulaznim i izlaznim vratima(portom). Procesi koji imaju adrese

    ulaznih/izlaznih vrata (up/ip) otvorenog kanala mogu da komuniciraju primitivama

    SEND(ip) i RECEIVE(up). MERGER je kanal koji omogu}ava komunikaciju tipa mnogi-

    na-jedan. Navedeni koncept kanala omogu}ava kreirawe dinami~ke strukture

    kanala i povezivawe tipa mnogi-na-mnogi, te implementaciju sinhrone/asinhrone

    komunikacije. 

    Za specifikaciju virtuelnog ra~unara sa strukturom procesora u n  dimenzija,

    koristi se direktiva PROCESSORS (I1, I2, ... , In). LOCATION (I1, I2, ... , In) direktiva

    specifikuje elemenat u vi{edimenzionalnoj strukturi procesora, na kojem se

    proces izvodi. SUBMACHINE konstrukcija, omogu}ava mapirawe procesa na

    podskup procesora virtuelne ma{ine. 

    FORTRAN 90 i wegova ekstenzija HPF ( High Performance Fortran) su jezici koji

    eksploataciju paralelizma baziraju na paralelizmu koji se dobija primjenom istih

    operacija na razli~itim segmentima nekog skupa podataka (ovaj tip paralelizma se

    ozna~ava terminom paralelizam podataka (data parallelism)).

    Strukture podataka podr`ane u navedenim jezicima za ovakav tip eksploatacije

    paralelizma su nizovi podataka. Ako su A, B, C nizovi, onda A = B * C prevodilac

    automatski prepoznaje kao operaciju sa paralelizmom podataka. Prevodilac tako|e

    poku{ava automatski detektovati paralelizam u programskim petqama. Prevodi-

    lac transformi{e program u SPMD formu, gdje vi{e procesora izvode isti pro-

    gram nad razli~itim segmentima podataka. Ako izvo|ewe na nekom procesoru zahti-

     jeva komunikaciju sa drugim procesorom, u ciqu dobijawa podataka iz susjednog pod-

    domena, u fazi prevo|ewa se automatski ume}u potrebni mehanizmi. PROCESSORS

    direktiva omogu}ava deklaraciju organizacije virtuelnih procesora (uobi~ajeno

    se deklari{e jedan apstraktni za jedan fizi~ki procesor). DISTRIBUTE direktiva

    se koristi za specifikaciju domena po virtuelnim procesorima. Pored toga {to se

    konkurentnost eksploati{e direktno iz operacija nad poqima, paralelne operaci-

     je se iniciraju FORALL (triplet, triplet, ... , triplet, mask ) assignment   naredbom

    pridjeqivawa, gdje se paralelno izvode sve naredbe pridjeqivawa sa indeksima

    definisanim tripletima, pod uslovima da je mask   izraz istinit. Za eksplicitnu

    specifikaciju nezavisnosti iteracija petqe koristi se direktiva INDEPENDENT.

  • 8/19/2019 Asembler parsiranje

    28/33

      185

    Pored navedenih paralelnih jezika, postoje i drugi paralelni programski

     jezici: paralelni logi~ki jezici (Multilisp, Concurrent Prolog i sl.) i paralelni

    funcionalni jezici (VAL, SISAL, ID, npr.).

    Funkcionalni jezici ne dozvoqavaju operacije koje mogu proizvesti grani~ne

    ( side)  efekte; funkcije ne mogu mijewati vrijednost varijabli koje nisu lokalne, a

    ulazno/izlazni parametri mogu biti samo vrijednosti, a ne reference. Pridjeqiva-

    we nekoj varijabli dozvoqeno je samo jedanput, tako da se zavisnost po podacima

    veoma jednostavno identifikuje, naravno uz cijenu znatno ve}ih memorijskih

    zahtjeva. 

    7 5 Operativni sistemi

    Da bi ostvarili generalne zahtjeve koji se postavqaju pred operativne sisteme kao{to su: obezbje|ewe programskog interfejsa prema ma{ini, upravqawe resursima,

    sinhronizacija svih aktivnosti i mehanizama za implementaciju korisni~kih

    koncepata visokog nivoa, aspekti neosjetqivosti na gre{ke itd. operativni siste-

    mi paralelnih ma{ina moraju uzeti u obzir i specifi~ne arhitekturne karakteri-

    stike kao i specifi~nosti koncepata paralelnog programirawa. Navedeni elemen-

    ti otvaraju niz dodatnih dilema, ne samo u pogledu funkcija nego i same organiza-

    cije operativnih sistema. Centralizovana organizacija se koristi uglavnom kod

    paralelnih ma{ina sa dijeqenom memorijom, sa dvije varijante: (prva) master-slave,

    gdje jedan procesor izvodi rutine operativnog sistema i dijeli posao "podre|enim"

    procesorima, i druga, gdje su procesori ravnopravni i istovremeno mogu da

    izvr{avaju rutine (jedinstvenog) operativnog sistema. U distribuiranoj varijanti

    koja se koristi kod multira~unarskih sistema, operativni sistem je jedinstven, ali

    fizi~ki distribuiran po procesnim elementima. Svaki procesni element preko

    lokalnog (mikro) jezgra operativnog sistema obezbje|uje servise lokalnim

    procesima, ali obezbje|uje i spregu sa ostalim procesorima kako u ciqu

    kooperativnog procesirawa tako i u ciqu obezbje|ewa pristupa i kori{tewa

    zajedni~kih resursa: U/I podsistema, sistema datoteka, dijeqenih objekata i

    funkcija i sl.

    U ciqu efikasne eksploatacije paralelizma u okviru jednog procesa, savremeni

    operativni sistemi moraju da podr`e koncept konkurentnog izvo|ewa vi{estrukih

    niti . Sve aktivirane niti  mogu da se izvode paralelno pod uslovom raspolo`ivosti

  • 8/19/2019 Asembler parsiranje

    29/33

      186

    procesorskih resursa. Iako postoji vi{e varijanti naj~e{}e se koristi

    implementacija niti  kao "laganih" procesa. U takvoj varijanti, sve niti  generisane

    u okviru jednog procesa dijele najve}i dio konteksta tog procesa: kod , stati~ke i

    globalne podatke, heap, i sve atribute procesa kojima manipuli{e jezgro

    operativnog sistema (identifikator vlasnika, deskriptore otvorenih datoteka i

    sl.). Privatni konteksti niti  minimalno sadr`e stawe registara, identifikator i

    prioritet niti . Rudimentarni kontekst niti   omogu}ava brzu promjenu konteksta,

    odnosno prelaz izvo|ewa sa jedne niti na drugu. Kernel ne u~estvuje u kreirawu,

    aktivirawu, sinhronizaciji i ga{ewu niti . Ove funkcije se standardno realizuju

    bibliotekom sistemskih funkcija za implementaciju vi{enitnog koncepta

    izvo|ewa.

    Varijante niti  koje raspore|uje jezgro operativnog sistema, nazivaju se "te{ke "

    niti (heavy weight threads).

    Dakle, arhitekture paralelnih sistema i principi paralelnog programirawa

    imali su presudan uticaj na evoluciju operativnih sistema u pravcu obezbje|ewa

    podr{ke za rad u navedenom okru`ewu; specijalno kroz koncepte mikrokernela

    (mikrojezgra) operativnog sistema, vi{enitnog izvo|ewa, memorijski mapiranih

    datoteka, aktivirawa funkcija na udaqenim procesorima i sl. Za ilustraciju,

    operativni sistem Intel Paragon ra~unara je multira~unarski UNIX, sa podr{kom za

    vi{enitno izvo|ewe, konceptom virtuelne memorije i strani~ewa, mogu}no{}u

    mapirawa korisni~kih procesa na jedan ili vi{e procesora. Operativni sistem

    ima jedinstvene sistemske strukture i distribuirano upravqawe procesima. Struk-

    tura programskog sistema u svakom procesnom elementu data je na Sl. 7.11.

    Sistem koristi Mach mikrokernel, razvijen na Carnegie-Mellon univerzitetu,

    OSF/1 Unix server  i NX-protokol za prosqe|ivawe poruka. Funkcije mikrokernela

    su upravqawe procesima i nitima, komunikacija izme|u procesa, upravqawe

    virtuelnom memorijom i upravqawe ure|ajima. Server obezbje|uje podr{ku za

    mre`nu komunikaciju i pristup datotekama.

  • 8/19/2019 Asembler parsiranje

    30/33

      187

    korisni~ki proces

    kernel

    serverNX

     API

    hardver

    Mach 3.0

    mikrokernel

    OSF/1 UNIX samultikorisni~kim

    pro{irewima

    NX aplikacioniinterfejs

    Sl. 7.11 Intel Paragon OSF/1 arhitektura.

    7 6 Razvojno okru`ewe

    Te{ko}e u razvoju softvera, iskazane terminom "softverska kriza" jo{ 1968

    (Int.Cont. on Software engineering, Garmish) forsirale su stvarawe metodologija i

    tehnika za razvoj softvera, ali i odgovaraju}ih sredstava za primjenu istih,

    odnosno odgovaraju}eg razvojnog okru`ewa. S obzirom na nagla{enu kompleksnost

    paralelnog programirawa, takvo okru`ewe se pojavquje kao imperativ. Pored

    programskih jezika (opisanih u prethodnom dijelu), razvojno okru`ewe ~ine

    sredstva za konstrukciju programa, analizu i izbor odgovaraju}ih varijanti

    raspore|ivawa, instrumentalizaciju i testirawe/verifikaciju.

    Sredstva za konstrukciju  u naj{irem smislu sadr`e alate za analizu, specifika-

    ciju, projektovawe, kodirawe aplikacija, vo|ewe projekta i sl. Primjeri su

    programski paketi za strukturno ili objektno orijentisanu analizu i projektova-

    we, formalni jezici za specifikaciju zahtjeva i algoritama rje{ewa, sintaksno-

    semanti~ki orijentisani procesori teksta, paketi za upravqawe i vo|ewe projekta

    i sl. Alati za raspore|ivawe zadataka u vi{eprocesorskom sistemu dobili su

    adekvatnu pa`wu tek u posqedwe vrijeme. Ovi alati poma`u korisniku u procesu

    particionisawa problema na skup zadataka te pri raspore|ivawu zadataka po pro-

    cesnim elementima date arhitekture. Ovi alati moraju imati jednostavan, grafi-

    ~ki orijentisan interfejs prema korisniku. Razli~ite implementacije sadr`e

    razli~ite varijacije komponentnih alata opisanih u tekstu koji slijedi.

  • 8/19/2019 Asembler parsiranje

    31/33

      188

    Alat za specifikaciju aplikacija  omogu}ava prezentaciju aplikacija u grafi~koj

    formi (obi~no u formi orijentisanog acikli~kog grafa). Ova predstava se

    koristi u fazi particionisawa i raspore|ivawa sistema zadataka. Kreirawe

    grafi~ke ekvivalentne forme programa mogu}e je automatskom transformacijom

    iz izvornog programa (PARSA).  Odre|eni alati koriste specijalni kod   za

    izra`avawe paralelizma u programu i specifikaciju wegove strukture (OREGAMI),

    a neki alati zahtijevaju od korisnika specifikaciju programa u formi grafa.

    Obi~no, grafi~ka reprezentacija zahtijeva i specifikaciju procjene izvo|ewa

    pojedinih aktivnosti predstavqenih u grafu.

    Alat za particionisawe  omogu}ava transformaciju grafa u ekvivalentnu formu

    u ciqu smawewa me|uprocesorske komunikacije.

    Alat za raspore|ivawe  omogu}ava mapirawe zadataka na arhitekturu, na osnovu

    odre|enog algoritma. Arhitektura i algoritmi raspore|ivawa mogu biti fiksni

    ili korisnik mo`e vr{iti selekciju na osnovu vi{e mogu}ih opcija, ili ~ak

    implementirati vlastite opcije. U sklopu ovog modula (ili kao poseban modul)

    realizuje se vizuelni prikaz performansi programa pri izvo|ewu na simuliranoj

    ili stvarnoj arhitekturi. Vizuelizacija obi~no ukqu~uje prikaz aktivirawa

    procesa i stawa procesora u toku izvo|ewa, komunikacije podataka, te parametre

    kao {to su ubrzawe, iskori{tewe procesora, ukupno vrijeme izvr{ewa i sl.

    Testirawe aplikacija u paralelnim sistemima ne ukqu~uje samo verifikaciju

    korektnosti nego i eksperimentisawe sa vi{estrukim parametarskim opcijama u

    ciqu postizawa efikasne implementacije. Prvi korak u sferi eksperimentisawa

     je instrumentalizacija: registrovawe, mjerewe, akvizicija i analiza podataka i

    doga|aja. U praksi se koriste razli~ita sredstva instrumentalizacije: softverski,

    hardverski, hibridni, mre`ni monitori; prirodni i sinteti~ki generatori

    optere}ewa; softverski alati za analizu strukture podataka i sl.

    Primjer implementacije okru`ewa za instrumentalizaciju je IIE  (Integrated

    Instrumentation Environment for Multiprocessors [108]), razvijen na Carnegie Mellon

    univerzitetu (Sl. 7.12).

  • 8/19/2019 Asembler parsiranje

    32/33

      189

    Instrumentali-

    zovana pobuda

    Menaxer{ema

    Baza pod.

    Kontroler

    pobuda

    Relacionimonitor

    Rezidentnimonitor

    Instrumentali-zovani OS

    Sl. 7.12 IIE  Programsko okru`ewe.

    IEE se zasniva na konceptu integracije vi{e instrumentalnih sredstava u

     jedinstveno okru`ewe za upravqawe eksperimentima. Za definisawe skupa

    mogu}ih eksperimenata defini{e se {ema eksperimenta, a konkretni eksperiment

    predstavqa instancu {eme. Menaxer {eme, na osnovu definisane {eme

    (eksperimenta) i podataka o stawu okoline, daje potrebne informacije za

    generisawe ulaznih vrijednosti u pojedinim ta~kama programa u toku

    eksperimenata. Rezidentni monitor u koordinaciji sa operativnim sistemom, vr{iregistrovawe i mjerewe podataka i veli~ina od interesa, koji se preko menaxera

    eksperimenata zapisuju u bazu eksperimenata za kasniju analizu.

    Pored navedenih, mnogi drugi projekti bavili su se razvojem okru`ewa za

    programirawe u paralelnim sistemima:

    • Spice projekt (CMU), sa ciqem konstrukcije programskog i radnog okru`ewa

    za nau~na istra`ivawa na mre`i ra~unara,

    • PRESTO  je sistem za objektno-orijentisano (C++ bazirano) programirawe u

    multiprocesorskom (Sequent Balance) okru`ewu,• Argus projekat (MIT), predmet istra`ivawa je okru`ewe za analizu dinami~ke

    varijacije paralelnog softvera.

    • ISSOS projekat (PARTS Labs, Ohio) se bavi razvojem jezi~kih primitiva i

    programskog sistema koji podr`ava razvoj i eksperimentisawe te pode{avawe

    paralelnih programa,

  • 8/19/2019 Asembler parsiranje

    33/33

      190

    • i drugi (Gypsy projekat (Texas/Austin), Cedar (Xerox Parc), SARA (UCLA) itd.).

    7 7 Ostali aspekti

    Ostali aspekti programirawa paralelnih sistema ukqu~uju aspekte pouzdanos-ti/(ne)osjetqivosti na gre{ke, programirawa u stvarnom vremenu, standardizacije

    (CORBA standard npr.) i sl.

    Za odre|enu klasu aplikacija (vojni sistemi, upravqawe hemijskim i

    nuklearnim procesima, elektroenergetski sistemi, komunikacioni sistemi i sl.),

    pouzdanost sistema je faktor od osnovnog zna~aja. U ciqu obezbje|ewa ve}e

    pouzdanosti i raspolo`ivosti sistema moraju postojati dodatni hardverski i

    programski moduli (dijagnosti~ki podsistem), koji mogu detektovati pojavu otkaza

    u sistemu i prebaciti funkcije sa elementa koji je otkazao na ispravan modul.

    Neosjetqivost na gre{ke ( fault tolerance) je tako|e va`na karakteristika spre`nih

    mre`a. Fault tolerance parametar f  spre`ne mre`e se defini{e kao broj ~vorova koje

     je mogu}e ukloniti iz mre`e, a da mre`a i daqe bude povezana (tj. da nijedan ~vor ne

    postaje izolovan). Drugi va`an parametar je dijametar mre`e u slu~aju otkaza ( fault

    diameter ) - maksimalni dijametar koji se dobija uklawawem iz spre`ne mre`e  f  

    ~vorova.

     f 

    nd