1. Párhuzamosság a számítástechnikában, modellek Flashcards
Miről is van szó?
Esetünkben az a lényeg, hogy egy feladat megoldását mennyire tudjuk párhuzamosítással gyorsítani. Így kétféle párhuzamosságról beszélhetünk:
Rendelkezésre álló: a feladatban rejlő párhuzamosság, csak elméleti
Kihasználható: a végrehajtás során valóban hasznosított párhuzamosság
A cél természetesen, hogy a kihasznált párhuzamosságot minél jobban közelítsük a rendelkezésre állóhoz.
Architektúrák, operációs rendszerek, fordító programok (compilerek) törekednek a rendelkezésre álló párhuzamosság kihasználására.
Ezek alapján a számítástechnikában beszélhetünk két kategóriáról
- Adatpárhuzamosság
2. Funkcionális párhuzamosság
Adatpárhuzamosság
Lényege: az adatelemeken párhuzamos/futószalag elvű műveletvégzés.
Ehhez vannak kifejezetten adatpárhuzamos architektúrák.
Az adatpárhuzamosság átalakítható funkcionálissá úgy, hogy a műveleteket ciklus iterációkban fogalmazzuk meg.
Funkcionális párhuzamosság
Lényege: ez a feladat logikájából adódó párhuzamosság. Egy feladat megoldása során mindig ott van, kisebb, nagyobb mértékben.
Innentől a funkcionális párhuzamosságot parancsnyelveken írt programokon értelmezzük.
Parancsnyelv
Kérelmet fogalmaz meg az OS kernel kiszolgáló rutinja felé.
Parancsnyelvek esetén különböző szinteken értelmezhetjük a funkcionális párhuzamosságot:
- Utasításszintű párhuzamosság: programutasítások párhuzamosan, akadály » függőségek
- Ciklusszintű párhuzamosság: ciklus iterációk párhuzamosan ahelyett, hogy egymás után
hajtódnának végre. A függőségek itt is akadályt jelentenek. - Eljárásszintű párhuzamosság: eljárások párhuzamosan
- Programszintű párhuzamosság: egymástól független programok egymás mellett,
párhuzamosan futtatva (time sharing) - Felhasználószintű párhuzamosság: több felhasználó egyidejű kiszolgálása
Ez csak a parancsnyelvek esetén való ÉRTELMEZÉS!
Valóban KIHASZNÁLHATÓ funkcionális párhuzamosságok
- Utasítás szinten való kihasználás lehetőségei
- Szálakkal és folyamatokkal való kihasználás
- Felhasználói szinten hasznosított párhuzamosság
Utasítás szinten való kihasználás lehetőségei
a. utasítás szinten párhuzamos architektúrák (ILP)
b. erre a célra szolgáló fordítóval (VLIW)
Szálakkal és folyamatokkal való kihasználás
Szál: a tárgykód legkisebb önállóan végrehajtható egysége. Ezek mivel kis, elemi egységek bizonyos feltételek mellett párhuzamosíthatók.
Szál és folyamat létrehozásának lehetőségei:
Párhuzamos nyelvet használ a programozó (Pl.: Fork-Join modell)
A többszálas vagy többfeladatos működést támogató operációs rendszer gondoskodik róla
Magas szintű programnyelvek párhuzamos fordítója gondoskodik a
párhuzamosságról
A ciklus és eljárás szintű párhuzamosságot is szálak és folyamatok formájában hasznosítjuk!
Felhasználói szinten hasznosított párhuzamosság
Ez egyértelmű, több felhasználó egyidejű kiszolgálása.
Szemcsézettség (felbontás) [lehet alacsony-magas is] (A kihasználható funkcionális párhuzamosság szintjei)
(Szemcsézettség: fentről lefelé Finom » Durva)
- Utasításszint
- Szál szint
- Folyamat szint
- Felhasználói szint
Rendelkezésre álló párhuzamosság és annak kihasználása
Rendelkezésre álló párhuzamosság - Annak kihasználása:
Utasítás szinten - Utasítás szinten
Ciklus szinten - Szál szinten
Eljárás szinten - Folyamat szinten
Felhasználói szinten - Felhasználói szinten
Vagyis alacsony szinten közvetlenül tudjuk kihasználni a rendelkezésre álló párhuzamosságot (utasításszintű párhuzamos architektúrák segítségevel). Magasabb szinten már „trükközni” kell, többszálas, többfeladatos OS-ek alatti konkurens vagy párhuzamos végrehajtásra van szükség.