Az ILP feldolgozás fejlődése Sima Dezső 2006. szeptember
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
? x 1. ILP feldolgozási paradigmák 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ő
Types of temporal parallelism in ILP processors 2. Az időben párhuzamos feldolgozás bevezetése 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 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.1. A kibocsájtási párhuzamosság megvalósításának alternatívái 3. A kibocsájtási párhuzamosság bevezetése 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)
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 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 csatoltoff-chip L2 gyorsítótár Példák: Alpha 21064 PA 7100 Pentium
3.3.3. A kiváltott feldolgozási szűk keresztmetszet és feloldása (1) A kibocsájtási szűk keresztmetszet értelmezése (a): Simplified structure of the mikroarchitekture assuming direct 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 3.6. ábra: A pufferelt (out of order) 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.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.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 adatpárhuzamosság bevezeté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
5.2. A fejlődés fővonala (1) A kihasznált utasítás-szintű párhuzamosság (ILP) mértéke Soros ILP feldolgozás Időbeni párhuzamosság + kibocsájtási párhuzamosság + Adat párhuzamosság Hagyományos soros processzorok Futószalag processzorok Szuperskalár processzorok Szuperskalár processzorok SIMD kiterjesztéseel 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 fő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ájtási párhuzamosság bevezetése Az adat pá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 1. generáció 2. generáció Dinamikus utasítás ü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ó gyorsítótárak Közvetlen csatolású L2 2.5. generáció FX SIMD kiterjesztés Továbbfejlesztett rendszer architektura AGP On-chip L2 ... 3. generáció FP SIMD kiterjesztés ... ~ 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
5.2. A fejlődés fővonala (5) Az elágazásbecslés pontossága A 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: 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)
Folyamat illetve szálszinten párhuzamos feldolgozás 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 Folyamat illetve szálszinten párhuzamos feldolgozás
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