Az ILP feldolgozás fejlődése Sima Dezső 2010 tavaszi félév
Felépítés 1. ILP feldolgozási paradigmák 2. Az időben párhuzamos feldolgozás bevezetése 3. A kibocsájtási párhuzamosság bevezetése 3.1. VLIW feldolgozás 3.2. Szuperskalár feldolgozás 4. Az adatpárhuzamosság bevezetése 5. A fejlődés fővonalának összegzése 6. Kitekintés
1. ILP feldolgozási paradigmák
1.1. ábra: Számítógép kategóriák fejlődése 1.1. Bevezetés (1) mainframe 1950 1960 1970 1980 1990 2000 minicomputer microcomputer x UNIVAC 4004 /370 /390 z/900 server/workstation desktop PC value PC 8080 8088 80286 80386 80486 Pentium PII PIII P4 Celeron /360 PDP-8 PDP-11 VAX RS/6000 PPro Xeon super- computer ENIAC CDC-6600 ? Cray-1 Cray-2 NORC Cray-3 Cray T3E Cray-4 Altair 1.1. ábra: Számítógép kategóriák fejlődése
1.1. Bevezetés (2) 1.2. ábra: Az x86 alapú Intel processzorok fixpontos teljesítményének növekedése
1.2. ILP feldolgozási paradigmák (1) Időben párhuzamos feldolgozás Párhuzamos utasítás- kibocsájtás statikus függőség kezeléssel Futószalag processzorok VLIW processzorok
VLIW feldolgozás elve utasítások VLIW: Very Large Instruction Word független utasítások (statikus függőség kezelés) Processzor utasítások
1.2. ILP feldolgozási paradigmák (1) Időben párhuzamos feldolgozás Párhuzamos utasítás- kibocsájtás Statikus függőség kezelés Dinamikus függőség kezelés Futószalag processzorok VLIW processzorok Szuperskalár processzorok
Szuperskalár feldolgozás elve VLIW feldolgozás elve F E VLIW: Very Large Instruction Word független utasítások (statikus függőség kezelés) Processzor Szuperskalár feldolgozás elve F E dinamikus függőség kezelés Processzor függő utasítások utasítások
1.2. ILP feldolgozási paradigmák (1) Időben párhuzamos feldolgozás Párhuzamos utasításkibocsájtás Adatpárhuzamos feldolgozás statikus függőség- kezeléssel dinamikus függőségkezeléssel Futószalag processzorok VLIW processzorok Szuperskalár processzorok SIMD kiterjesztés
1.2. ILP feldolgozási paradigmák (2) Párhuzamos utasításkibocs. Adatpárhuzamos feldolgozás statikus függőségkezelés Soros feldolgozás Időben párh. feldolgozás VLIW proc. EPIC proc. Futószalag proc. dinamikus függőségkezelés Szuperskalár proc. Szuperskalár proc. SIMD kiterjesztéssel ~ ‘85 ~ ‘90 ~ ’95 -‘00 1.3 ábra: Az ILP paradigmák/ processzorok megjelenése
1.3. ILP processzorok teljesítménypotenciálja (1) Ideális esetben Valós esetben Abszolut teljesítmény Soros Futószalag VLIW/ szuperskalár SIMD kiterjesztéssel
1.3. ILP processzorok teljesítménypotenciálja (2) ILP processzorok teljesítménykomponensei Órajel frekvencia Időbeli párh. Kibocsájtási Adat Spek. végr. hatékonysága Órajel frekvencia Technológia/ μarchitektúra függő Hatékonyság ISA, μarchitektúra, rendszer architektúra, OR, fordító, alkalmazás függő
2. Az időben párhuzamos feldolgozás bevezetése
Types of temporal parallelism in ILP processors 2.1. Bevezetés (1) Types of temporal parallelism in ILP processors Overlapping all phases i +1 +3 +2 F E W D Pipelined processors Atlas (1963) 37 IBM 360/91 (1967) 38 R2000 (1988) 41 i80386 (1985) 42 M68030 (1988) 43 (F: fetch cycle, D: decode cycle, E: execute cycle, W: write cycle) 2.1 ábra: Az időben párhuzamos feldolgozás megvalósítási alternatívái
2.2. ábra: Futószalag processzorok megjelenése 2.1. Bevezetés (2) 2.2. ábra: Futószalag processzorok megjelenése
2.2. Kiváltott feldolgozási szűk keresztmetszetek és feloldásuk 2.2.1. Áttekintés Az operatív tár sávszélessége (2.2.2) Az elágazáskezelés problémája (2.2.3)
2.2.2. Az operatív tár sávszélessége (1) Szekvenciális feldolgozás Futószalag feldolgozás óraciklusonként több utasítás és adat lehívása nagyobb sávszélesség igény
2.2.2. Az operatív tár sávszélessége (2) x86 M68000 MIPS R 1980 81 82 83 84 85 86 87 88 89 1990 91 92 80386 80486 68030 68040 R3000 R6000 R4000 C(8) C(1/4,1/4) C(4,4) C(16) C(8,8) C(0,1/4) R2000 68020 80286 pipelined (scalar processors), with cache C(n) universal cache (size in kB) C(n/m) instruction/data cache (sizes in kB) pipelined (scalar processors) 2.3. ábra: Gyorsítótárak bevezetése
2.2.3. Az elágazáskezelés problémája (1) (pl: feltételes elágazások esetén) clock cycles bc ii F D E W Conditional branch bc ii+1 F D E ii+2 F D bti ii+4 F Branch target instruction bti Decode Condition checking Brach address calculation 2.4. ábra: Feltételes elágazások kezelése 4-fokozatú futószalag processzorban
2.2.3. Az elágazáskezelés problémája (2) Conditional branches Instructions other than conditional branches Guessed path Basic block Approved path 2. 5. ábra: Az elágazásbecslés elve egy feltételes elágazás esetén
2.2.3. Az elágazáskezelés problémája (3) x86 M68000 MIPS R 1980 81 82 83 84 85 86 87 88 89 1990 91 92 80386 80486 68030 68040 R3000 R6000 R4000 C(8) C(1/4,1/4) C(4,4) C(16) C(8,8) Pipelined (scalar processors) Speculative execution of branches C(0,1/4) R2000 68020 80286 2. 6. ábra: Az elágazásbecslés bevezetése skalár processzorokban
2.3. Futószalag processzorok generációi (1) Cache Speculative branch processing 1. generation pipelined no no 1.5. generation pipelined yes no 2. generation pipelined yes yes
2.3. Futószalag processzorok generációi (2) x86 80286 80386 80486 C(0,1/4) C(1/4,1/4) C(4,4) M68000 68020 68030 68040 C(4,4) C(4,4) C(16) C(8,8) MIPS R R2000 R3000 R6000 R4000 1980 81 82 83 84 85 86 87 88 89 1990 91 92 1. generation pipelined (no cache, no speculative branch processing) 1.5. generation pipelined (cache, no speculative branch processing) 2. generation pipelined (cache, speculative branch processing) 2. 7. ábra: Futószalag processzorok generációi
teljesítménynövelési lehetőségeket 2.4. Az időben párhuzamos feldolgozás bevezetésével elérhető teljesítménynövelés korlátja Futószalag feldolgozás A 2. generációs futószalag processzorok érdemben már kimerítik az időbeli párhuzamosság bevezetésével elérhető teljesítménynövelési lehetőségeket
3. A kibocsájtási párhuzamosság bevezetése
3.1. A kibocsájtási párhuzamosság megvalósításának alternatívái VLIW (EPIC) utasítás kibocsátás Statikus függőség feloldás (3.2) Futószalag feldolgozás
VLIW feldolgozás elve utasítások VLIW: Very Large Instruction Word független utasítások (statikus függőség kezelés) Processzor utasítások
3.1. A kibocsájtási párhuzamosság megvalósításának alternatívái VLIW (EPIC) utasítás kibocsátás Statikus függőség feloldás (3.2) Futószalag feldolgozás Szuperskalár utasítás kibocsátás Dinamikus függőség feloldás (3.3)
Szuperskalár feldolgozás elve VLIW feldolgozás elve F E VLIW: Very Large Instruction Word független utasítások (statikus függőség kezelés) Processzor Szuperskalár feldolgozás elve F E dinamikus függőség kezelés Processzor függő utasítások utasítások
3.2. A VLIW feldolgozás (1) 3.1. ábra: A VLIW feldolgozás elve Memory/cache VLIW instructions (static dependency resolution) independent sub-instructions VLIW processor ~ (10-30 FE) F E F E F E F E 3.1. ábra: A VLIW feldolgozás elve
Statikus függőség kezelés / párhuzamos optimalizálás 3.2. A VLIW feldolgozás (2) VLIW: Very Long Instruction Word Elnevezés: 1983 (Fisher) Részutasítás-hossz ~32 bit Utasítás hossz: ~n*32 bit n: feldolgozó egységek (FE) száma Statikus függőség kezelés / párhuzamos optimalizálás Komplex VLIW fordító
3.2. ábra: Kísérleti és forgalmazott VLIW processzorok 3.2. A VLIW feldolgozás (3) The term ‘VLIW’ 3.2. ábra: Kísérleti és forgalmazott VLIW processzorok
A statikus függőségkezelés előnye: 3.2. A VLIW feldolgozás (4) A statikus függőségkezelés előnye: Kevésbé komplex processzor Korábbi megjelenés Magasabb fc vagy nagyobb ILP
3.2. A VLIW feldolgozás (5) A statikus függőségkezelés hátrányai: Gyökeresen új ISA Új fordítók, operációs rendszer Alkalmazások újraírása A piaci elfogadtatáshoz szükséges „kritikus tömeg” elérése A fordító a függőség kezeléshez ill. párh. optimalizáláshoz technológia függő paramétereket használ (pl. a FE-k késleltetési, ismétlési ideje, cache elérési idők...) Új modellekhez új fordító verziók szükségesek
3.2. A VLIW feldolgozás (6) A statikus függőségkezelés hátrányai (folytatás): A VLIW utatítások részlegesen kitöltöttek Rossz kihasználtságú tártér és sávszélesség
3.2. A VLIW feldolgozás (7) Kereskedelmi forgalmazású VLIW processzorok: Trace (1987) Multiflow Cydra-5 (1989) Cydrome Néhány éven belül mindkét cég tönkrement Fejlesztőik: HP, IBM EPIC processzorok kezdeményezői, fejlesztői lettek
1994: Intel, HP együttműködés bejelentése 3.2. A VLIW feldolgozás (8) VLIW EPIC SIMD feldolgozás, fejlett szuperskalár vonások integrálása 1994: Intel, HP együttműködés bejelentése 1997: EPIC elnevezés 2001: IA-64 Itanium
3.3. Szuperskalár feldolgozás 3.3.1. Bevezetés (1) Futószalag feldolgozás Párhuzamos utasítás kibocsátás Szuperskalár feldolgozás jellemzői: Dinamikus függőség kezelés Kompatibilis ISA
3.3. ábra:Kísérleti szuperskalár processzorok 3.3.1. Bevezetés (2) 3.3. ábra:Kísérleti szuperskalár processzorok
3.4. ábra:Szuperskalár processzorok megjelenése 3.3.1. Bevezetés (3) 3.4. ábra:Szuperskalár processzorok megjelenése
3.3.2. Első generációs szuperskalár processzorok jellemzői (1) Szélesség 2-3 RISC utasítás/ciklus vagy 2 CISC utasítás/ciklus „széles” Proc. mag: Statikus elágazásbecslés Gyorsítótár: Egyportos, blokkoló L1 adat-gyorsítótár Processzor buszon keresztül csatolt off-chip L2 gyorsítótár Példák: Alpha 21064 PA 7100 Pentium
3.3.2. Első generációs szuperskalárok jellemzői (2) Processzorjellemzők konzisztenciája (1) Dinamikus utasításeloszlás általános célú alkalmazásokban: FX utasítások ~ 40 % Load utasítások ~ 30 % Store utasítások ~ 10 % Elágazások ~ 20 % FP utasítások ~ 1-5 % Elérhető párhuzamosság általános célú alkalmazásokban, direkt (nem pufferelt) kibocsájtás mellett: ~ 2 utasítás / ciklus (Wall 1989, Lam, Wilson 1992) Forrás: Sima et al., ACA, Addison-Wesley, 1997
3.3.2. Első generációs szuperskalárok jellemzői (3) Processzorjellemzők konzisztenciája (2) Hasznos magszélesség: 2 - 3 utasítás/ciklus Szükséges adat-cache portok száma (np): np ~ 0.4 * (2 - 3) = 0.8 – 1.2 utasítás/ciklus Egyportos adat-cache Szükséges VE-k (Minden L/S utasításhoz kell címszámítás is): FX ~ 0.8 * (2 – 3) = 1.6 – 2.4 2 – 3 FX EUs L/S ~ 0.4 * (2 – 3) = 0.8 – 1.2 1 L/S EU Elág.~ 0.2 * (2 – 3) = 0.4 – 0.6 1 B EU FP ~ (0.01 – 0.05) * (2 – 3) 1 FP EU
3.3.3. A kiváltott feldolgozási szűk keresztmetszet és feloldása (1) Icache I-buffer Instr. window (3) Issue Decode, check, Dependent instructions issue block instruction issue EU EU (a): Simplified structure of the mikroarchitecture assuming unbuffered issue (b): The issue process 3.5. ábra: A direkt kibocsájtás elve
3.3.3. A kiváltott feldolgozási szűk keresztmetszet és feloldása (2) A kibocsájtási szűk keresztmetszet feloldása (shelving, buffered issue) (a): Simplified structure of the mikroarchitecture assuming buffered issue (shelving) (b): The issue process 3.6. ábra: A pufferelt (indirekt) kibocsájtás elve
3.3.3. A kiváltott feldolgozási szűk keresztmetszet és feloldása (3) Első generációs (keskeny) szuperskalárok Második generációs (széles) szuperskalárok A kialakuló kibocsájtási szűk keresztmetszet feloldása és az egyes alrendszerek feldolgozási szélességének adekvát növelése
3.3.4. Második generációs szuperskalárok jellemzői Első generációs „keskeny” szuperskalárok Második generációs „széles” szuperskalárok Szélesség: 2-3 RISC utasítás/ciklus vagy 2 CISC utasítás/ciklus „széles” 4 RISC utasítás/ciklus vagy 3 CISC utasítás/ciklus „széles” Statikus elágazásbecslés Elődekódolás Dinamikus elágazásbecslés Pufferelt kibocsátás Reg. átnevezés ROB Proc. mag: Gyorsítótár: Egyportos, blokkoló L1 adat-gyorsítótár Processzor buszon keresztül csatolt off-chip L2 gyorsítótár Kétportos, nem blokkoló L1 adat-gyorsítótár Közvetlen csatolású off-chip L2 gyorsítótár Példák: Alpha 21064 Alpha 21264 PA 7100 PA 8000 Pentium Pentium Pro K6
3.3.4. Második generációs szuperskalárok jellemzői (2) Processzorjellemzők konzisztenciája (1) Dinamikus utasításeloszlás általános célú alkalmazásokban: FX utasítások ~ 40 % Load utasítások ~ 30 % Store utasítások ~ 10 % Elágazások ~ 20 % FP utasítások ~ 1-5 % Elérhető párhuzamosság általános célú alkalmazásokban, pufferelt kibocsájtás mellett: ~ 4 – 6 utasítás / ciklus (Wall 1990) Forrás: Sima et al., ACA, Addison-Wesley, 1997
3.7. ábra: Elérhető párhuzamosság szintje általános célú alkalmazások esetén, pufferelt kibocsájtás használatával Source: Wall: Limits of ILP, WRL TN-15, Dec. 1990
3.3.4. Második generációs szuperskalárok jellemzői (3) Processzorjellemzők konzisztenciája (2) Hasznos magszélesség: 4 - 5 utasítás/ciklus Szükséges adat-cache portok száma (np): np ~ 0.4 * (4 - 5) = 1.6 – 2 utasítás/ciklus Kétportos adat-cache Szükséges VE-k (Minden L/S utasításhoz kell címszámítás is): FX ~ 0.8 * (4 – 5) = 3.2 – 4 3 – 4 FX EUs L/S ~ 0.4 * (4 – 5) = 1.6 – 2 2 L/S EU Elágazás ~ 0.2 * (4 – 5) = 0.8 – 1 1 B EU FP ~ (0.01 – 0.05) * (4 – 5) 1 FP EU
3.3.5. A kibocsájtási párhuzamosság kimerülése A 2. generációs szuperskalárok zömében már kiaknázzák az általános célú alkalmazásokban rendelkezésre álló utasításszintű párhuzamosságot.
4. Az adatpárhuzamosság bevezetése
4. Az adatpárhuzamosság bevezetése 4.1. Áttekintés (1) 4.1. ábra: Az adatpárhuzamosság bevezetésének alternatívái
4.1. Áttekintés (2) SIMD utasítások FX/FP Szuperskalár kiterjesztés SIMD utasítások FX/FP Utasításon belüli párhuzamos műveletvégzés Szuperskalár feldolgozás EPIC kiterjesztés 4.2 ábra: SIMD utasítások bevezetésének elve szuperskalár ill VLIW(EPIC) processzorokban
4.2. SIMD utasítások megjelenése szuperskalárokban (1) Megvalósítás: az ISA kibővítésével (MMX, SSE, SSE2, SSE3, 3DNow!, 3DNowProfessional) 4.3. ábra: FX-SIMD és FP-SIMD utasítások megjelenése szuperskalárokban
A 2.5. és 3. generációs szuperskalárok (1) Második generációs szuperskalárok FX SIMD (MM) 3. generációs szuperskalárok FX SIMD + FP SIMD (MM+3D)
A 2.5. és 3. generációs szuperskalárok (2) 4.4. ábra: A 2.5. és 3. generációs szuperskalárok megjelenése
A kiváltott feldolgozási szűk keresztmetszet Rendszerarchitektúra (operatív tár,megjelenítő) On-chip L2 AGP busz
4.3. Szuperskalár- processzor generációk áttekintése Superscalars First Generation Second Generation 2.5 Generation 2-3 RISC instructions/cycle or 4 RISC instructions/cycle or Unbuffered issue No renaming Single ported data caches Static branch prediction Off-chip L2 caches attached via the processor bus No MM/3D support Examples: Alpha 21064 PA 7100 PowerPC 601 SuperSparc Pentium Alpha 21264 PA 8000 PowerPC 604 UltraSparc I, II Pentium Pro PowerPC 620 Pentium II Buffered issue (shelving) Renaming Predecoding Dual ported data caches Dynamic branch prediction Off-chip direct coupled L2 caches K6 FX-SIMD 1 1,4 2 No ROB ROB Blocking L1 data caches or nonblocking caches with up to a single pending cache miss allowed Nonblocking L1 data caches with multiple cache misses allowed Features: ("Thin superscalars") ("Wide superscalars") ("Wide superscalars with MM/3D support") 2 CISC instructions/cycle "wide" 3 CISC instructions/cycle "wide" No predecoding No renaming. Power2 3 4 Dual ported data cache, optional No off-chip direct coupled L2. Only single ported data cache. Width: Core: Caches: ISA: instructions Third Generation Power 4 Pentium III m (0.18 ) Pentium 4 Athlon (model 4) On-chip L2 caches FX- and FP-SIMD Athlon MP (model 6) dynamic branch prediction. Performance Complexity Memory Bandwidth Branch prediction accuracy
4.4. Az adatpárhuzamos feldolgozás bevezetésével elérhető teljesítménynövelés korlátja A második generációs szuperskalárokkal: az ILP kimerülése általános célú alkalmazásokban A harmadik generációs szuperskalárokkal: az ILP kimerülése dedikált (MM,3D) alkalmazásokban is Ezzel az ILP processzorok fejlődésének korszaka lezárult
4.5. SIMD utasítások megj. EPIC (VLIW) processzorokban A bevezetés módja: A VLIW architektúrák/processzorok még nem támogatták a SIMD utasításokat Az EPIC architektúrák/processzorok már eleve támogatják a SIMD utasításokat. (pl. az IA-64 ISA ill. az Itanium család processzorai)
5. A fejlődés fővonalának összegzése
5.1. Fejlődési szcenáriók a. „Szisztematikus” fejlődés (szuperskalár bővítés) (A fejlődés fővonala) A kibocsájtási párhuzamosság bevezetése/növelése Az adat-párhuzamosság bevezetése és növelése Az időbeni párhuzamosság bevezetése/növelése b. „Radikális” fejlődés (VLIW/EPIC bővítés) A VLIW feldolgozás bevezetése Az adatpárhuzamosság bevezetése (EPIC)
5.2. A fejlődés fővonala (1) A kihasznált utasítás-szintű párhuzamosság (ILP) Soros ILP feldolgozás Időbeni párhuzamosság + Kibocsátási párhuzamosság + Adat párhuzamosság Hagyományos soros proc. Futószalag processzorok Szuperskalár processzorok Superscalar processors with SIMD extension t ~ 1985/88 ~ 1990/93 ~ 1994/00 A hardver redundancia mértéke 5.1 ábra: A fejlődés fővonalának három ciklusa
5.2. A fejlődés fővonala (2) i: Időbeli kibocsájtási adat párhuzamosság bevezetése a párhuzamosság egy-egy dimenziójának bevezetése i=1:3 ennek megvalósítása szűk keresztmetszet(ek)hez vezet a kialakuló szűk keresztmetszet(ek) feloldása az adott dimenzióban rendelkezésre álló párhuzamosítási lehetőségek érdemben kimerülnek, a teljesítmény további növeléséhez a párhuzamosság újabb dimenziójának bevezetése szükséges 5.2 ábra: A fejlődés fővonalának három ciklusa
5.2. A fejlődés fővonala (3) Hagyományos soros feldolgozás Az időbeli párhuzamosság bevezetése Introduction of A kibocsátási párhuzamosság bevezetése Az adatpárhuzamosság bevezetése Hagyományos soros processzorok Futószalag processzorok Szuperskalár processzorok SIMD kiterjesztésű szuperskalárok Továbbfejlesztett memória alrendszer ISA-kiterjesztés 1. generáció 1.5. generáció Gyorsítótárak 2. generáció Elágazás becslés Továbbfejlesztett elágazás becslés 2.5. generáció FX SIMD kiterjesztés Továbbfejlesztett rendszer architektúra AGP On-chip L2 ... 3. generáció FP SIMD kiterjesztés ... 1. generáció 2. generáció Dinamikus ut. ütemezés Regiszter átnevezés Elődekódolás Dinamikus elágazás becslés ROB Kétportos adat gyorsítótár Nem blokkoló adat gyorsítótár Közvetlen csatolású L2 ~ 1985/88 ~ 1990/93 ~ 1994/97 5.3 ábra: A fejlődés három ciklusában bevezetett fontosabb technikák
5.2. A fejlődés fővonala (4) Memória sávszélesség Hardver komplexitás Teljesítmény ~ 1985 ~ 2000 t 5.4 ábra: A memória sávszélesség igény és a hardver komplexitás növekedése a teljesítmény növekedésével
Futószalag fokozatok száma 5.2. A fejlődés fővonala (5) Az elágazásbecslés pontossága Futószalag fokozatok száma fc ~ 1985 ~ 2000 t 5.5 ábra: Az elágazásbecslés pontossági igényének növekedése az órafrekvencia növekedésével
6. Kitekintés: A szálszinten párhuzamos feldolgozás bevezetése
6. Kitekintés: Szálszinten párhuzamos feldolgozás bevezetése (1) Szemcsézettség Több szál TP (thread-level parallelism) Egyetlen szál (Utasításfolyam) ILP (instruction-level parallelism)
6. Kitekintés: Szálszinten párhuzamos feldolgozás bevezetése (2) Párhuzamos szálak származtatása különböző alkalmazásokból ugyanabból az alkalmazásból Multiprogramozás (Multiprogramming) Folyamat- ill. szálszinten párhuzamos feldolgozás (Multitasking, Multithreading)
6. Kitekintés: Szálszinten párhuzamos feldolgozás bevezetése (3) A többszálas technika megvalósítási lehetőségei mikroprocesszorokban SMP: Symmetric Multiprocessing (CMP: Chip Multiprocessing) SMT: Simultaneous Multithreading (HT: Hyperthreading (Intel)) Ugyanazon a lapkán implementált két vagy több processzor-maggal Többszálas processzor-maggal L3/Operatív tár SMT Proc.-mag L2/L3 L3/Operatív tár L2/L3 Mag Lapka
6. Kitekintés: szálszinten párhuzamos feldolgozás bevezetése (4) SMT: Simultaneous Multithreading (HT: Hyperthreading (Intel)) Szuperskalár (négyszeres) Többszálas szuperskalár (négyszeres/két szálas) Szál Szál 2 Szál 1