Next: 5.2.2 Paralelni programski modeli
Up: 5.2 Paralelno procesiranje
Previous: 5.2 Paralelno procesiranje
Vsebina:
Za razumevanje distriburiranega procesiranja je potrebno poznati
razlicne algoritme paralelnega procesiranja, ki pa so v veliki
meri odvisni od arhitekture sistema na katerem problem resujemo.
Arhitekture sistemov locimo po naslednjih bistvenih
znacilnostih:
- Odvisnost nalog
- govori o odvisnosti podnalog, za izvrsitev
skupnega cilja. Naloge se locijo na med seboj odvisne in
neodvisne naloge, kar zahteva sinhronizacijo nalog. Tu se pojavijo
tudi casovni zastoji in slaba uravnotezenost procesov, ki jo
lahko z vecjo povezanostjo procesorjev in ustrezno delitvijo
zmanjsamo.
- Povezanost procesorjev
- zajema nacin komunikacije med
procesorji. Tesno vezani procesorji si delijo spomin preko skupnega
vodila ali pa celo uporabljajo t.i. multi-port spomin, ki je
obicajno sinhronega znacaja. Ohlapno vezani procesorji imajo
porazdeljen spomin in nadzor. Komunikacija med takimi procesorji
mora upostevati zakasnitve in nepredvidene tezave pri
komunikaciji.
- Razdrobljenost procesov
- opisuje velikost paralelnih procesov.
Groba delitev obicajno zajema manjse stevilo procesorjev
z vecjimi zmogljivostmi. Zaradi velikih delezev nalog, je
pri grobi delitvi opaziti trenutne in goste pretoke informacij. Pri
grobi delitvi je odgovornost programerja, da pravilno razdeli naloge.
Pri fini delitvi pa je delitev na procesorje lahko izvedena ze
na nivoju prevajalnika oz. specializiranega programskega jezika za
ciljno arhitekturo racunalnika.
Glede na gornje pojme se delijo tudi algoritmi, ki jih uporabljamo pri
paralelnem procesiranju:
- Skupno procesiranje ( Concurrent processing) povezuje
vec med seboj odvisnih procesov, ki komunicirajo med seboj. To
je obicajno vec procesorjev, ki si izmenjujejo podatke s
skupnim spominom ( Multi-port RAM).
- Vecprocesni paralelizem ( Multi-processing parallelism)
se izvaja na vecih procesorjih, ki so med seboj neodvisni, vsak
s svojim spominom in procesno enoto. Tako procesiranje pa ni
misljeno kot procesiranje vecjih racunalnikov s
pocasnimi komunikacijami, ampak hitri procesorji z malimi
kolicinami spomina, kot so na primer transputerska omrezja.
- Cevovodje ( Pipelining) je najenostavnejsi nacin
medprocesne komunikacije in s tem tudi paralelnega procesiranja.
Poleg prakticne uporabe v razlicnih operacijskih sistemih,
se tak postopek uporablja za komunikacijo med osnovnimi elementi
racunalnika. Zaradi pogoste enosmerne komunikacije med procesi
je mozno izdelati tudi zaporednja, kjer procesorji med seboj
niso sinhronizirani; mozno je tudi to, da procesorji spoh nimajo
ure, ampak delajo v analogno/digitalnem nacinu.
- Kombinirano procesiranje zajema iskanje razlicnih
algoritmov, ki resujejo podprobleme za nacine kot so
prepletanje, cevovodje, vecprocesno obdelavo. Problemi, ki jih
zelimo resevati obicajno najveckrat niso
enoznacno resljivi, zato je lahko tak pristop zelo
ucinkovit, vendar tezko izvedljiv in ozko namenski, ce
je implementiran v strojni opremi.
- Vektorsko procesiranje uporablja vec tesno povezanih
procesorjev, ki delujejo tako, da vsi skupaj uporabijo isto
operacijo, vsak na svojem delu podatkov. Tak tip procesiranja je
znan pod imenom SIMD ( Single Instruction, Multiple Data).
Tipicen problem, ki ga taksno procesiranje enostavno
resuje je racunanje diferencialnih enacb z zacetnimi
pogoji, kar je najveckrat simulacija sistemov.
- Distribuirano procesiranje vkljucuje vec ohlapno
povezanih procesorjev, ki so povezani s pocasnim medijem, kot je
npr. omrezje ethernet. Nadzor je izveden po omrezju in mora
zato upostevati tudi lastnosti medija. Tako je potrebna
vecja kontrola pri komunikaciji, kar pa pri prej navedenih tipih
paralelizma ni bil pogoj. Procesorji so avtonomni, vsak s svojim
spominom in logiko. Tako procesiranje je tipicno za MIMD
procesorje ( Multiple Instructions, Multiple Data). Lokalna
omrezja so tipicen primer MIMD procesiranja.
Copyright © 1995 Leon Kos, Univerza v Ljubljani