Számítógép Architektúrák



Hasonló dokumentumok
SZÁMÍTÓGÉP ARCHITEKTÚRÁK

SZÁMÍTÓGÉP ARCHITEKTÚRÁK

SZÁMÍTÓGÉP ARCHITEKTÚRÁK

Számítógép Architektúrák

SzA19. Az elágazások vizsgálata

Számítógép architektúrák záróvizsga-kérdések február

Számítógép architektúrák. A mai témák. A teljesítmény fokozás. A processzor teljesítmény növelése

Operandus típusok Bevezetés: Az utasítás-feldolgozás menete

A mai témák. Számítógép architektúrák. CISC és RISC. A teljesítmény fokozás. További előnyök. A RISC gondolat

8. Fejezet Processzor (CPU) és memória: tervezés, implementáció, modern megoldások

Számítógépek felépítése

Számítógép Architektúrák

Számítógép Architektúrák

Hardver Ismeretek IA32 -> IA64

SZÁMÍTÓGÉP ARCHITEKTÚRÁK

8. Fejezet Processzor (CPU) és memória: tervezés, implementáció, modern megoldások

Számítógép Architektúrák

Számítógép Architektúrák

Architektúra, cache. Mirıl lesz szó? Mi a probléma? Teljesítmény. Cache elve. Megoldás. Egy rövid idıintervallum alatt a memóriahivatkozások a teljes

VLIW processzorok (Működési elvük, jellemzőik, előnyeik, hátrányaik, kereskedelmi rendszerek)

Számítógép Architektúrák

Bevezetés. Többszálú, többmagos architektúrák és programozásuk Óbudai Egyetem, Neumann János Informatikai Kar

Számítógép felépítése

Számítógép architektúrák. A processzor teljesítmény növelése

Számítógépek felépítése, alapfogalmak

Adatok ábrázolása, adattípusok

5-6. ea Created by mrjrm & Pogácsa, frissítette: Félix

Magas szintű optimalizálás

Készítette: Trosztel Mátyás Konzulens: Hajós Gergely

Módosított ábra: szaggatott nyíl: a fejlődési ív Az ábrából kimaradt a mobil szegmens (hordozható számítógépek). Y tengely: ár.

Grafikus csővezeték 1 / 44

Összeadás BCD számokkal

Digitális rendszerek. Digitális logika szintje

Dr. Illés Zoltán

Bevezetés az informatikába

Vezérlésfolyam gráf és X86 utasításkészlet

VI. SZOFTVERES PROGRAMOZÁSÚ VLSI ÁRAMKÖRÖK

A processzor hajtja végre a műveleteket. összeadás, szorzás, logikai műveletek (és, vagy, nem)

Teljesítmény: időegység alatt végrehajtott utasítások száma. Egységek: MIPS, GIPS, MFLOPS, GFLOPS, TFLOPS, PFLOPS. Mai nagyteljesítményű GPGPU k: 1-2

(11) Lajstromszám: E (13) T2 EURÓPAI SZABADALOM SZÖVEGÉNEK FORDÍTÁSA

Szenzorhálózatok programfejlesztési kérdései. Orosz György

Számítógép architektúra

Máté: Számítógép architektúrák

Számítógép Architektúrák

Flynn féle osztályozás Single Isntruction Multiple Instruction Single Data SISD SIMD Multiple Data MISD MIMD

ARM Cortex magú mikrovezérlők

elektronikus adattárolást memóriacím

Számítógép architektúrák II.

* 800 MHz/PC-3200/ATA-100. SPECint_base2000/f c Pentium III. Pentium * 800 MHz/PC-2667/ATA-100 * * * * *

Processzor (CPU - Central Processing Unit)

Assembly. Iványi Péter

Első sor az érdekes, IBM PC ra alapul: 16 bites feldolgozás, 8 bites I/O (olcsóbb megoldás). 16 kbyte RAM. Nem volt háttértár, 5 db ISA foglalat

Számítógép Architektúrák

Digitális rendszerek. Mikroarchitektúra szintje

ATMEL ATMEGA MIKROVEZÉRLŐ-CSALÁD

Számítógépes alapismeretek

5. KOMBINÁCIÓS HÁLÓZATOK LEÍRÁSÁNAK SZABÁLYAI

Digitális rendszerek. Utasításarchitektúra szintje

Digitális technika VIMIAA01 9. hét Fehér Béla BME MIT

Digitális technika VIMIAA01 9. hét

VEZÉRLŐEGYSÉGEK. Tartalom

egy szisztolikus példa

Elvonatkoztatási szintek a digitális rendszertervezésben

GPU Lab. 4. fejezet. Fordítók felépítése. Grafikus Processzorok Tudományos Célú Programozása. Berényi Dániel Nagy-Egri Máté Ferenc

Programozási nyelvek (ADA)

Mikrorendszerek tervezése

Szűrő architektúrák FPGA realizációjának vizsgálata

Ismerkedjünk tovább a számítógéppel. Alaplap és a processzeor

Digitális Rendszerek és Számítógép Architektúrák (BSc államvizsga tétel)

Memóriák - tárak. Memória. Kapacitás Ár. Sebesség. Háttértár. (felejtő) (nem felejtő)

SZÁMÍTÓGÉPES ARCHITEKTÚRÁK

Máté: Számítógép architektúrák

Multimédia hardver szabványok

Központi vezérlőegység

Labor gyakorlat Mikrovezérlők

Utasításfajták Memóriacímzés Architektúrák Végrehajtás Esettanulmányok. 2. előadás. Kitlei Róbert november 28.

Labor gyakorlat Mikrovezérlők

Párhuzamos programozási modellek

SZÁMÍTÓGÉP ARCHITEKTÚRÁK

1. Milyen eszközöket használt az ősember a számoláshoz? ujjait, fadarabokat, kavicsokat

Cache, Cache és harmadszor is Cache

FPGA áramkörök alkalmazásainak vizsgálata

Digitális technika VIMIAA01

SZÁMÍTÓGÉPES ARCHITEKTÚRÁK

Mikrorendszerek tervezése

Nagy adattömbökkel végzett FORRÓ TI BOR tudományos számítások lehetőségei. kisszámítógépes rendszerekben. Kutató Intézet

Számítógép Architektúrák I-II-III.

Jelfeldolgozás a közlekedésben

DSP architektúrák dspic30f család

UNIX / Linux rendszeradminisztráció

SZÁMÍTÓGÉPEK BELSŐ FELÉPÍTÉSE - 1

Laborgyakorlat 3 A modul ellenőrzése szimulációval. Dr. Oniga István

Nagy Gergely április 4.

Architektúra, megszakítási rendszerek

Bepillantás a gépházba

MSP430 programozás Energia környezetben. Kitekintés, további lehetőségek

sallang avagy Fordítótervezés dióhéjban Sallai Gyula

Fordító részei. Fordító részei. Kód visszafejtés. Izsó Tamás szeptember 29. Izsó Tamás Fordító részei / 1

Bevitel-Kivitel. Eddig a számítógép agyáról volt szó. Szükség van eszközökre. Processzusok, memória, stb

Szimuláció RICHARD M. KARP és AVI WIGDERSON. (Készítette: Domoszlai László)

Átírás:

Az utasítás-pipeline szélesítése Horváth Gábor 2015. április 23. Budapest docens BME Hálózati Rendszerek és Szolgáltatások Tsz. ghorvath@hit.bme.hu

Aktuális 2. ZH jövő csütörtök Memória technológiák, virtuális memória, cache memória, lokalitástudatos programozás, utasításkészlet architektúrák Csak az elméleti részben: egyszerű pipeline utasításfeldolgozás Távközlési klub: FÉNYJÁTÉK Nagysebességű fejlődés, extrém sebességű átvitel Házigazda: Babics Emil (Magyar Telekom) Vendégek: Kolozs Csaba (ügyvezető, Equicom) Szepesi Zoltán (nemzetközi mérnöktanácsadó csoportvezető, Cisco) Rétsán Dániel (fejlesztési munkatárs, Magyar Telekom) Időpont: 2015. április 30. (csütörtök) 18:00-20:00 Helyszín: BME I épület, IB017 (1117, Bp. Magyar tudósok krt. 2.) 2

Utasításfeldolgozás gyorsítása 1. Lehetőség: Mélyebb pipeline Ciklusidőt felére csökkentjük (órajel 2x) Ehhez minden fázist két részre kell bontanunk Megdupláztuk az átviteli sebességet! 3

Utasításfeldolgozás gyorsítása 2. Lehetőség: Szélesebb pipeline Minden fázisban több utasítást dolgozunk fel 4

Értékelés Mélység: k-szoros, szélesség: m-szeres Elméletileg m*k-szoros gyorsulás Gyakorlatilag több korlát: m*k nagy: sok utasítás fut egyszerre sok az egymásrahatás sokszor kell megállni a feloldáshoz romló hatékonyság széles pipeline m-el négyzetesen növő forwarding utak k hiába nagy órajel nem lehet tetszőlegesen nagy pl. pipeline regiszter írás/olvasás bele kell férjen k nagy: rossz spekulatív döntések drasztikus hatása pl. rossz elágazásbecsléskor sor tévesen elkezdett utasítás Tipikus értékek: Mélység: 5-30 Szélesség: 1-6 5

Példák Mélység Szélesség Pentium 5 1 Pentium Pro 14 1-3 (1 bármilyen + 2 egyszerű) Pentium 4 Prescott 31 3 Intel Core 14 4 Intel Core i7 Nehalem 16 4 Intel Core i7 Haswell 14 4 Intel Atom 16 2 Alpha 21264 7 4 ARM Cortex A9 8 2 ARM Cortex A15 15 3 POWER7? 6 6

A pipeline szélesítése Hatékonyság kulcsa: Elég sok független utasítás Ki válogatja össze? Fordító: Statikus ütemezés VLIW/EPIC Processzor: Dinamikus ütemezés Szuperskalár processzor 7

Utasítások ütemezése A tisztán dinamikus és tisztán statikus megoldás között vannak köztes lehetőségek is Párhuzamosan végrehajtható csoportok kiválasztása Hozzárendelés a műveleti egységekhez Végrehajtás idejének meghatározása Szuperskalár Hardver Hardver Hardver EPIC Fordító Hardver Hardver Dinamikus VLIW Fordító Fordító Hardver VLIW Fordító Fordító Fordító 8

Széles pipeline dinamikus ütemezéssel 9

Szuperskalár processzorok A processzor több utasítást is le tud hívni egyszerre A processzor végzi a Párhuzamosan végrehajtható utasítások kiválogatását Az utasítások végrehajtó egységhez rendelését A függőségi analízist (mikor hajtható végre egy utasítás) Ha minden fázisban m új utasítás végrehajtása kezdődik meg m-utas szuperskalár processzor Kétféle megoldás: In-order: végrehajtási sorrend: program követése Out-of-order: átrendezi az utasításokat, hogy gyorsabb legyen program szemantikáját megtartja 10

In-order vs. Out-of-order Példa: i1: R1 R2 + R3 i2: R4 R1 R5 i3: R7 R8 R9 i4: R0 R2 R3 2-utas esetben: In-order: Out-of-order: Órajel Utasítások Órajel Utasítások 1: i1 1: i1, i3 2: i2, i3 2: i2, i4 3: i4 11

In-order szuperskalár pipeline Hagyományos egy-utas nem szuperskalár processzor Két-utas in-order szuperskalár processzor 12

IF Utasítás lehívás Most m utasítást kell lehívnia Ha az m utasítás sorban jön: Semmi gond: Memória szószélesség növelése (eddiginél több bájt lehívása a cache-ből) Ha ugrást tartalmaz: Ez már nehezebb Kiolvas elágazást becsül kiolvas: nincs rá idő! Az elágazásig hívjuk le az utasításokat Romlik a hatékonyság 13

ID Dekódolás Most m utasítást kell dekódolnia. Mik is a dekódolás feladatai? ALU vezérlőjelek előállítása Nem nehezebb m-re mint 1-re Operandusok kiolvasása Csak 1 regiszter tárolónk van! 2*m kiolvasásra nincs idő Több portos regisztertároló kell Bonyolult Adatfüggőségek detektálása...folyt... 14

ID Dekódolás Adatfüggőségek detektálása m-el négyzetesen bonyolódik! Az 1-es úton lévő utasítás: 1-es operandusreg. == 1-es úton az előbbi utasítás eredm. reg.? 2-es operandusreg. == 1-es úton az előbbi utasítás eredm. reg.? 1-es operandusreg. == 1-es úton a kettővel előbbi utasítás eredm. reg.? 2-es operandusreg. == 1-es úton a kettővel előbbi utasítás eredm. reg.? 1-es operandusreg. == 2-es úton az előbbi utasítás eredm. reg.? 2-es operandusreg. == 2-es úton az előbbi utasítás eredm. reg.? 1-es operandusreg. == 2-es úton a kettővel előbbi utasítás eredm. reg.? 2-es operandusreg. == 2-es úton a kettővel előbbi utasítás eredm. reg.? A 2-es úton lévő utasítás: ugyanez... 15

EX Végrehajtás Most m utasítást kell végrehajtania. m db ALU OK, nem probléma. Forwarding utak m2 van belőle 32 64 bites sínek! Nem OK. Komoly probléma! 16

MEM Memóriaműveletek Most m utasítás akarja egyszerre. Két lehetőség: 2 portos adat cache Csak 1 memóriaműveletet engedünk egyszerre Ha az m-ből több is igényel MEM fázist, a többi vár (feldolgozási egymásrahatás) 17

WB Eredmény regiszter tárolás Több portos regiszter tároló kell 18

Az ARM Cortex A8 pipeline-ja 2-utas in-order 14 fázisú futószalag Utasításlehívás: 3 fázisú, külön életet él F0: utasításszámláló inkrementálás, ugráskor számolás F1: cím kiadása az utasításcache-nek. F2: Megjön az adat az utasításcache-től utasítássorba 19

Az ARM Cortex A8 pipeline-ja Dekódolás: 5 fázisú D0-D1: dekódolás (művelet, cél és forrásoperandusok) D2: utasítást pending/replay sorba teszi, vagy kivesz onnan D3: ellenőrzi, végrehajtjató-e a köv. 2 utasítás egyszerre D4: ALU vezérlőjelek előállítása 20

Az ARM Cortex A8 pipeline-ja Dekódolás: Pending sor: Itt várják be az utasítások a párjukat Replay sor: Végrehajtás alatt álló be nem fejezett utasításokat tárol Egymásrahatáskor megbecsli, mikor múlik el, és úgy időzíti Ha téved, újraindítja a replay sorból 21

Az ARM Cortex A8 pipeline-ja Végrehajtás: Műveleti egységek: 2x egész ALU 1x szorzó 1x load/store Korlátozások az utasításpárokra: Csak az egyik lehet ugrás Csak az egyik lehet load/store Csak az egyik lehet szorzás (csak az öregebb) 22

Az ARM Cortex A53 pipeline-ja 2-utas in-order 8 fázisú futószalag Fejlesztések: Dekódolás: 1 órajel Több műveleti egység Jóval kevesebb korlátozás az utasításpárokra szinte tökéletesen kihasználható a 2-utas futószalag Több forwarding út A TLB nagyobb és asszociatívabb Fejlettebb cache előbetöltő Jobb elágazásbecslés 23

Out-of-order szuperskalár pipeline Egy utas esetet már láttuk Nyilvántartásokat kell vezetni: Az utasítások végrehajtási állapotáról Műveleti egységek foglaltságáról Döntéseket kell hozni Utasítások műveleti egységekhez rendelése Bonyolúlt processzor Nem nehéz több utasra kiterjeszteni! Több IF és DS egység kell Egy ciklusban több utasítás lép be a tárolóba Egy ciklusban több utasítás végrehajtása is elindulhat 24

Az Intel Haswell pipeline-ja Széles, sorrenden kívüli szuperskalár 25

Az Apple Cyclone pipeline-ja 26

Szuperskalár összefoglaló In-order: egyszerűbb Out-of-order: bonyolúltabb Adatáramlásos elven történő utasításvégrehajtás Táblázatok tartják nyilván a műveleti egységek, utasítások és regiszterek állapotát Miért szereti a programozó az out-of-order processzort? Mert nem kell kézzel optimalizálni az utasítás sorrendet (lásd: gyakorlat) A CPU automatikusan összeszedi és végrehajtja, amit végre lehet 27

Széles pipeline statikus ütemezéssel 28

A másik véglet Szuperskalár: a CPU keresgéli a független, párhuzamosan végrehajtható utasításokat A fordítóprogram is megteheti! Sőt, jobban! Több utasítást lát! Kapjunk vérszemet: Csináljon mindent a fordító! Párhuzamosan végrehajtható utasítások gyűjtése Utasítások műveleti egységhez rendelése Egymásrahatások detektálása és feloldása 29

A VLIW architektúra VLIW = Very Long Instruction Word 1 pipeline, de Nem utasításokon dolgozik, hanem utasításcsoportokon Ezek egy egységként haladnak a pipeline-ban Csoporton belüli utasításoknak nincs külön címe, az egész csoportnak közös címe van Csoportok szerepe: Független utasítások kijelölése Utasítások műveleti egységhez rendelése 30

A VLIW architektúra Nem használt pozíciókban: Meddig tart a végrehajtása? Amíg a benne lévő leglassabbé Döbbenet: A VLIW processzorok nem foglalkoznak egymásrahatásokkal! Mi van, ha adat-egymásrahatás van, és szünetet kellene beiktatni? Processzor fütyül rá Vegye észre a fordító! Iktasson be egy csupa csoportot 31

A VLIW architektúra Példa: Késleltetések: egész 1, memória 3, lebegőpontos 4 i1: R3 MEM[R1+0] i2: R4 MEM[R1+4] i3: D1 MEM[R1+8] i4: R5 R3 + R4 i5: R6 R3 R4 i6: D2 D1 * D1 i7: MEM[R2+0] R5 i8: MEM[R2+4] R6 i9: MEM[R2+8] D2 Egész 1. Egész 2. Mem 1. Mem 2. FP 1. 1. i1 i2 2. i3 3. 4. i4 i5 5. i7 i8 i6 6. 7. 8. 9. i9 FP 2. 32

A VLIW architektúra Nem sikerült elég sok párhuzamosítható utasítást találni rossz kihasználtság Tehát a fordítóprogram feladatai: Utasítások csoportokba rendezése A lehető legnagyobb kitöltöttségre törekedve Csoport utasításai párhuzamosan végrehajthatók legyenek Utasítások ütemezése Egymásrahatások felismerése Szükséges csupa szünetek beiktatása 33

A VLIW architektúra Tipikus utasításcsoport-méretek: 3-4, extrém esetben akár 28 utasítás Minden nehezet a fordító csinál processzornak alig marad dolga! VLIW processzorok tipikus alkalmazása: Olcsó, kis fogyasztású beágyazott rendszerek Ha fontos a kiszámítható, spekuláció és predikciómentes működés: DSP (pl. TMS320C6x 8 utasítás/csoport) Grafikus processzorok: sok egyszerű feldolgozóegység kell pl. ATI a Radeon HD óta napjainkig: VLIW3 ill. VLIW4 34

A VLIW architektúra Hátrányok: A program csak azon a processzoron fut, amire lefordították Nem lehet a processzorcsalád új tagjába Több műveleti egységet tenni Gyorsabb műveleti egységeket tenni Nagy probléma a transzparens cache megvalósítása! Memóriaműveletek sebessége nem lesz állandó Fordítóprogram nem tudja, hogyan ütemezzen VLIW processzorokban nincs cache Programok mérete igen nagy a sok miatt 35

A dinamikus VLIW architektúra A fordító csak csoportosít A processzor ütemez Észleli az egymásrahatásokat Szüneteket tud beiktatni Előnyök: Lehet cache-t csinálni! Lehet gyorsabb műveleti egységeket bevezetni Nem kell újrafordítani a programot 36

Az EPIC architektúra HP & Intel közös kutatási projektje Kezdés: 1994, első implementáció: 2002 (Intel Itanium) Cél: Fordítóra nagyobb feladatot bízni a párhuzamosság felderítésében A VLIW korlátai nélkül 37

Az EPIC architektúra VLIW-ben az utasítás csoportbeli helye a műveleti egységet is kijelölte: EPIC-ben nem. Utasításcsoport: párhuzamosan végrehajtható utasítások halmaza 38

Az EPIC architektúra Csoport összetétele: sablon meghatározza Pl. M memória, I egész, F lebegőpontos, B ugrás MFI: egy memória, ehy lebegőpontos és egy egész van benne MFI, MMI, MII, MIB, MMF, MFB, stb. Specifikáció rögzíti a megengedett kombinációkat Processzorcsalád bővítésekor ez csak bővülhet Egymásrahatásokat a processzor kezeli Utasításcsoport méretének semmi köze a műveleti egységek számához! 39

Az EPIC architektúra Lehet EPIC szuperskalár processzort készíteni: Több műveleti egységgel A CPU több csoport egyidejű végrehajtását végzi Lehet csoportokat láncolni Így jelezheti a fordító, hogy nem 3, hanem 6, 9, stb. független utasítást talált nem kell újrafordítani a programot, ha bővül és/vagy gyorsul a processzor 40

Összegzés 41

Összegzés Statikus ütemezés (VLIW és barátai): Fordító több utasítást tud áttekinteni, hogy feltöltse a pipeline-t Súlyos korlát: Csak egyazon basic blokk-on belüli utasításokat csoportosíthat! Hiszen nem tudja előre a feltételes elágazások kimenetelét Dinamikus ütemezés (szuperskalár): A processzor kevesebb utasítást tud áttekinteni Korlát: utasítástároló mérete Az utasítások csoportosításakor át tud lépni a basic blokk-ok határain! Hiszen van elágazásbecslője, rátanul az elágazások viselkedésére (lásd: spekulatív végrehajtás) 42