8. Folyamat szinten párhuzamos architektúrák Flashcards
Csoportosítása
- Memória használat szerint:
- Közös memória használatú: van olyan, minden CPU számára látható közös memória, melyen keresztül a folyamatok kommunikálni tudnak egymással.
- Elosztott memória használatú: a folyamatok üzenetek segítségével kommunikálnak egymással. Ezek az üzenet küldésen alapuló multiprocesszoros rendszerek.
- Memória elérés ideje szerint:
-
UMA (Uniform Memory Access): a memória elérési ideje azonos minden CPU számára.
Nincs jelentősége annak, hogy egy adatot hova írunk a memóriában. - NUMA (Non-Uniform Memory Access): a memória műveletek ideje nem azonos. Ezeknél fontos, hogy egy adat az őt író és olvasó CPU-hoz közel legyen.
-
UMA (Uniform Memory Access): a memória elérési ideje azonos minden CPU számára.
Folyamat szinten párhuzamos rendszerek kifejlesztésének motivációja
- Utasítás szintű párhuzamosság korlátozott lehetőségei:
- Branch prediction soha nem 100%-os
- Általános célú alkalmazásoknál a programokban lévő utasítás szintű párhuzamosság sokszor ahhoz sem elegendő, hogy 4-6 független végrehajtó egységet elláson utasításokkal
- Energiahatékonyság: egyes CPU-knál 10-15% teljesítmény növekedéshez akár 50% fogyasztás emelkedés is szükséges lehet. Hatékonyabb lehet n darab CPU egységnyi órajelen, mint 1 darab CPU n-szere órajelen
- Költséghatékonyság: jól párhuzamosítható feladatok esetén n darab olcsóbb és lassabb CPU összekapcsolása hatékonyabb lehet, mint egy darab gyors és drága processzor.
- Egyszerű bővíthetőség: egy multiprocesszoros rendszer bővítése könnyebb lehet, ha megfelelően
van felkészítve - Hibatűrés: ha egy processzor meghibásodik, a többi átveszi a feladatait
Korlátok
Vezérlés áramlásos rendszerekben (ahol a processzorok össze vannak kapcsolva és vezérléssel kommunikálnak egymással) a párhuzamosságok felderítését és kihasználását szoftveresen kell megoldani.
Két megoldása van:
* Olyan compiler írása, ami képes felfedezni a szoftverben a párhuzamosítható részeket és ennek megfelelő kódot generálni
*A párhuzamosítást a programozóra bízzuk
Amdahl törvénye
Segítségével kiszámítható, hogy n darab CPU-ból álló rendszer mekkora teljesítmény növekedést tud nyújtani.
Egy program tartalmaz szekvenciális és párhuzamosan futtatható részeket is, így feltételezhetjük, hogy egy program P-ed része párhuzamosítható, 1-P rész pedig szekvenciálisan futtatható. Legyen a futási idő 1 darab CPU-n egy egység. Ekkor N darab CPU esetén a futási idő ideális körülmények között:(1 − 𝑃) + 𝑃/n
Ebből a teljesítmény növekedés:1 / (1-P + P/N)
UMA rendszerek
Az UMA rendszereknél a processzorok egy közös buszon keresztül érik el a memóriát. Probléma, hogy a közös buszon keresztül továbbítódik minden adat, így az szűk keresztmetszetet képez. Ezért körülbelül 8-16 CPU köthető össze a buszrendszer túlterhelése nélkül.
(KÉP JEGYZETBEN)
NUMA rendszerek
Közös, de tartományokra bontott memória címtérrel rendelkeznek. Így buszrendszerre kisebb terhelés esik, ezért a megoldás jól skálázható.
(KÉP JEGYZETBEN)
A NUMA rendszereket két csoportra oszthatjuk:
- CC NUMA: cache coherent
- NCC NUMA: non cache coherent
Cache coherent NUMA
Az adatok legfrissebb példányát tartják nyilván és frissítik a gyorsítótárakban. Így ha két CPU ugyanazzal az adattal dolgozna és mindkettő betölti a gyorsítótárába, majd az egyik módosítja, a másik CPU gyorsítótárában lévő adatot invalidálja egy figyelő rendszer és az adat frissítésére kerül. Hátránya, hogy ez komoly adminisztrációt igényel, ami a buszrendszert terheli. Körülbelül 32 CPU-ig skálázható, viszont az UMA-hoz képest a memória műveletek késleltetése 2-7-szeresére növekszik.
Non cache coherent NUMA
Az NCC rendszerek nem garantálják, hogy a processzor mindig az adat legfrissebb verziójával dolgozik, az ebből adódó problémás helyzeteket szoftveresen kell detektálni és kezelni. Ez a legjobban skálázható megoldás, tervezése és építése könnyű, viszont a programozása nehezebb. Általában sok gépes (több összekapcsolt szerver) rendszerekben használják. Pl Intel Xeon és AMD Opteron.