1. Számítógép architektúrák osztályozása Flashcards
Párhuzamosság típusai
- Funkció szerint
- Elhelyezkedés szerint
- Típus szerint
Párhuzamosság típusai (funkció szerint)
- rendelkezésre álló párhuzamosság: a feladatokban rejlő párhuzamosság
- kihasználható párhuzamosság: a végrehajtás során valóban kihasználható párhuzamosság
Párhuzamosság típusai (elhelyezkedés szerint)
-
időbeli párhuzamosság: több végrehajtó egység működése csak időben elcsúsztatva egymás mellett és általában nem ugyanazt a feladatot csinálják. Például: futószalag
(KÉP JEGYZETBEN) -
térbeli párhuzamosság: több, azonos típusú végrehajtó egység egyidejű működése.
(KÉP JEGYZETBEN)
Párhuzamosság típusai (típus szerint)
-
adatpárhuzamosság:
- adatpárhuzamos architektúrák: adat elemeken párhuzamos vagy futószalag elvű műveletek végrehajtását teszik lehetővé
- átalakítható funkcionális párhuzamossággá: az adat elemeken végrehajtandó műveletek ciklus formájában történő megfogalmazása
- funkcionális párhuzamosság: a feladat logikájából következő párhuzamosság.
Funkcionális párhuzamosság szintjei
- Utasítás szintű párhuzamosság (ILP – Instruction Level Parallelism): program utasítások párhuzamos végrehajtása
- Ciklus szintű párhuzamosság: egymást követő iterációk párhuzamos végrehajtása. Ezt a függőségek akadályozhatják.
- Eljárás szintű párhuzamosság: párhuzamosan végrehajtható eljárások formájában jelenik meg. Mértéke leginkábban a feladat jellegétől függ.
- Program szintű párhuzamosság: egymástól független programok párhuzamos futtatása
- Felhasználó szintű párhuzamosság: több, egymástól független felhasználó egyidejű kiszolgálása. Például szerverek, időosztásos rendszerek.
Funkcionális párhuzamosság kihasználása
- Utasítás szintű:
- utasítás szinten párhuzamos architektúrával
- erre a célra szolgáló fordítóprogrammal
2 - 3. Ciklus és eljárás szintű:
Szálak vagy folyamatok formájában használhatóak ki. A szál vagy folyamat a tárgykód legkisebb önállóan végrehajtható része.
Szálakat létrehozhat:
Programozó: párhuzamos nyelveket használva, amiben lehet elágazásokat és párhuzamosan végrehajtható részeket létrehozni (FORK, JOIN)
OS, ami támogatja a többszálas vagy többfeladatos végrehajtást
Párhuzamos fordító: magas szintű programnyelvek esetében
4 - 5. Program és felhasználói szint
Programok vagy párhuzamos rendszerek segítségével használható ki. Szükséges hozzá megfelelő hardver és szoftver, ami ezt támogatja.
Funkcionális párhuzamosság szemcsézettsége
- Finom szemcsézettség -> Utasítás szint (alacsony szintű párhuzamosság) Szál szint Folyamat szint - Durva szemcsézettség -> Felhasználó szint (magas szintű párhuzamosság)
Általában kijelenthető, hogy alacsony szinteken rendelkezésre álló párhuzamosság nagy valószínűséggel párhuzamos architektúrákkal vagy párhuzamos compilerekkel közvetlenül használhatóak ki. Míg a magasabb szintű párhuzamosság inkább többszálas vagy többfeladatos OS-ek alatti konkurens végrehajtással.
Compiler
A fordítóprogram, ami lefordítja a magas szintű programnyelven írt programot a processzor számára érthető formátumra.
Compiler feladatai
- Kódanalízis
Részei:
- Lexikális elemzés (konstansok, változók, operátorok)
- Szintaktikai elemzés
- Szemantikai elemzés - Létrehozni a tárgykódot
Részei:
- Kódgenerálás: ez lehet assembly kód vagy gépi kód
- Kódoptimalizálás: párhuzamos végrehajtásnál független részeket keres, amiket végre lehet hajtani mindenféle előfeltétel nélkül
Párhuzamos architektúrák osztályozása
- Klasszikus modell (Flynn-féle osztályozás)
- Új modell
Klasszikus modell (Flynn-féle osztályozás)
A vezérlő és a feldolgozási egységek számán alapul.
4 fogalmat vezetett be:
- SI (single instruction stream): egyszeres utasításfolyam. Az architektúra egyetlen vezérlő egységgel rendelkezik.
- MI (multiple instruction stream): többszörös utasításfolyam. Az architektúra több egymástól elkülönülő utasításfolyamot tud egyidőben végrehajtani. Olyan vezérlőegységgel rendelkezik, mely egy időben több utasításfolyamot tud generálni.
- SD (single data stream): egyszeres adatfolyam. Egyetlen CPU egyetlen adatfolyamot dolgoz fel.
- MD(multiple data stream): többszörös adatfolyam. Több végrehajtó egység dolgoz fel több, egymástól független adatfolyamot.
Ezekre építve a szempontok kombinálásával 4 osztályba lettek sorolva az architektúrák:
- SISD: Neumann modell (szekvenciális végrehajtás)
- SIMD: Multimédia feldolgozás (ugyanazon műveletek végrehajtása sok adaton)
- MISD: Elméleti kategória
- MIMD: Teljes párhuzamos feldolgozás
Új modell
Megkülönböztet adatpárhuzamos és funkcionálisan párhuzamos architektúrákat.
(JEGYZET KÉPPEL ÉRTHETŐBB)
Adatpárhuzamos architektúrák:
(első 3 tudományos kutatási szinteken léteznek)
- Vektor architektúrák
- Asszociatív vagy neurális architektúrák
- Szisztolikus architektúrák
- SIMD architektúrák (hétköznapi életben használatosak)
Funkcionálisan párhuzamos architektúrák:
- Utasítás szinten párhuzamos architektúrák (ILP)
– futószalag
– VLIW
– szuperskalár
- Szál szinten párhuzamos architektúrák (SMT)
- Folyamat szinten párhuzamos architektúrák
– Elosztott memória használatú
– Közös memória használatú
(A tárgy keretében a funkcionálisan párhuzamos architektúrák vannak tárgyalva.)
Utasítás végrehajtás elemi műveletei
Utasítás végrehajtás négy elemi műveletre osztható:
* F (fetch) - lehívás
* D (decode) – dekódolás
* S/O (source operand) – forrás operandus lehívás
* E (execute) – végrehajtás
* W/B (writeback) – visszaírás
Kibocsátási párhuzamosság
A kibocsátás a CPU dekódoló egységéből történik, ezeket a dekódolt utasításokat hajtja végre a végrehajtó egység. Ha a CPU képes párhuzamosan több utasítás végrehajtására, a kibocsátási kapacitást is növelni kell. Kibocsátási párhuzamosságnak nevezzük, ha dekódoló egység óraciklusonként egynél több utasítás kibocsátására képes. Ennek viszont következményei vannak:
1. Az utasítások párhuzamos végrehajtása során minden ILP CPU-nak figyelembe kell vennie az
utasítások között fennálló függőségeket.
2. Meg kell őrizni a soros végrehajtás konzisztenciáját (párhuzamos végrehajtás esetén is ugyanúgy
kell viselkednie a programozó által írt soros végrehajtású programnak).