430 likes | 540 Views
Mikroprocesszorok. X86 – amit mi is használunk. Eredetileg 16 bites CISC Először 8, 16, majd 32 bitesre bővítve IA32 néven Kívül CISC, belül RISC (Pentium Pro) Dinamikus szuperskalár (Pentium Pro) Lebegőpontos elágazásbecslés
E N D
X86 – amit mi is használunk • Eredetileg 16 bites CISC • Először 8, 16, majd 32 bitesre bővítve IA32 néven • Kívül CISC, belül RISC (Pentium Pro) • Dinamikus szuperskalár (Pentium Pro) • Lebegőpontos elágazásbecslés • Előnyök: olcsó, könnyen programozható, viszonylag nagy teljesítmény • Probléma: memória-késleltetés növekszik, függőség
x86 – fejlődés • Szuperskalár: a Pentium óta megszokott egy processzorba több utasítás-végrehajtó egységet tervezni, így lehetőség van egy órajel alatt több utasítás végrehajtására. • Szorzó: Eredetileg a processzor és a RAM órajele azonos volt, a 80486-tal kezdődően vezették be az FSB-t (Front Side Bus), és a processzor belső szorzóját. • FSB: A processzor és a memóriavezérlő közötti gyors busz. • Szorzó: Azt határozza meg, hogy FSB órajelenként a processzor hány órajel-ciklust végez el. A processzor belső szorzójával megszorozva a FSB-t megkapjuk a processzor belső órajelét. Példák: • Intel Celeron 300 MHz: FSB: 66 Mhz szorzó: 4.5x • AMD Duron 1000 MHz: FSB:100(200 effektív) MHz szorzó:10x • Intel Pentium 4 3200 MHz: FSB: 200MHz(800 effektív) szorzó: 16x
Kívül CISC, belül RISC • A 80486-os processzorok idején az x86 architektúra elérte a korlátait. A Pentium Pro (később Pentuium - II) processzorok voltak az első kívül CISC, belül RISC processzorok: • Az egyszerűbb utasításokat egy órajel alatt végrehajtják • A bonyolultabb, de gyakran használt utasításokat huzalozottan hajtották végre • A nagyon bonyolult és ritkán használt utasításokat jóval több órajel (esetleg több 10) alatt hajtják végre (mikrokóddal) • Bár ezen utasításokat ma is támogatják a processzorok (kompatibilitási okokból), az új fordítóprogramok már igyekeznek kikerülni ezeket, így általában nem jelentenek nagy problémát.
Függőség problémája • Példa: (10 lépcsős futószalag) • A 3. utasítás függ a 2. végeredményétől • 10 lépcsős futószalag -> 10 órajel alatt lesz kész a második végeredmény • Amikor a program a 3. utasításhoz ér, meg kell várnia az előző végeredményét, azaz 9 órajel-ciklus alatt nem végez utasítást. • Példa: a := 1 b := 2 c := a + b A harmadik utasítás végrehajtása optimális esetben is csak a második után 10 órajellel kezdődik el.
Konkrét Példa: AMD Athlon XP 2500+ (Barton) • Végrehajtóegységek: • 3 db egész(10 fokozat) • 1 db Lebegő pontos(12 fokozat) • 2 db MMX • 2 db 3Dnow! • 1 db SSE • Memóriák (késleltetés) • 64 Kbyte L1 gyorsítótár(utasítások)(1 órajel) • 64 Kbyte L1 gyorsítótár(adatok)(1 órajel) • 512 Kbyte L2 gyorsítótár(2-4 órajel) • Rendszermemória (típustól függően minimum100-125 órajel)
Memóriakésleltetés • Az itt közölt adatok csak példák, nem pontosak. • Rendszermemória késleltetés: ~100-125 órajel • Megtalálás a gyorsítótárakban (optimális esetben, egyszerűsített példa): • L1: 80% • L2: 90% • „Cache miss” : 2% • 100 átlagos utasítás memória igénybevétele (egyszerűsített példa): • 80*1+18*3+2*120=374 órajel (átlagosan) • Azon 98 utasításra, melyekhez a szükséges adatok valamely gyorsító-tárban voltak kevesebbet kellett várni, mint arra a kettőre, mely a rendszermemóriából érte el az adatait
A tendencia • 1994 : Pentium 75 MHz, 50MHz SDRAM • Órajel/RAM : 1.5 • 2003: Athlon Xp 3200+ :~400 MHz DDR SDRAM (DDR 200MHz) • Órajel/RAM : 5.5 • 2003: Pentium 4 3200 MHz-800 MHz DDR SDRAM (kétcsatornás DDR 200 Mhz) • Órajel/RAM : 8(4) • Bár a RAM sávszélessége nagyjából 800 Mhz-nek felel meg, a kétcsatornás kialakítás miatt a nagyobb problémát jelentő késleltetés több, mint a 400MHz-eseknél.
Konklúzió • A probléma : az x86 utasításkészletek problémája abban a felépítésben rejlik, hogy az adat a memóriából abban a pillanatban rendelkezésre áll, ahogy arra szükség van. (ez az 8088-nál még így volt, sőt a 80386-nál is majdnem) • Ez komoly gátat a fejlődésnek a nálam okosabbak szerint olyan 10 év múlva jelent majd. • Ugyan ez a probléma a RISC architektúrák esetében is jelentkezik, de kisebb mértékben, és később fog gondot okozni.
Lehetséges megoldások • Utasításkészlet bővítés: SIMD utasításkészletek : Single Instruction Multiple Data (egy utasítás több adattal) • Ezek vektorműveletek, előreolvasott, regiszterekben tárolt adatokkal. • Működése független az ALU-tól -> előreolvasott adatokkal dolgozik • Fordítóprogramok nem nagyon tudják használni, csak Assembly, ezért korlátozottan használható. • Pl. : MMX, SSE(1,2,3) 3DNow! • Adat-előolvasás megvalósítása a nem SIMD műveleteknél is megjelenik, de körülményesebb
Egy másik út:SMT • SMT : Simultaneous Multithreading • 2 „program” (thread=szál) párhuzamos futtatása. • Az elmélet: Ha az egyik szál „Cache-miss”-el akkor amíg megérkezik az adat egy másik szál fut, aminek elő vannak készítve az adatai a gyorsítótárban • A megvalósítása ennél sokkal bonyolultabb, tulajdonképpen a szálak néha tényleg párhuzamosan futnak, csak más-más végrehajtóegységeken. • Intel Pentium 4(közül az újabbak) támogatja • Az operációs rendszer 2 processzort „lát”
Miért is jó a 64Bit? • A megcímezhető memória 4 GByte fölé emelkedik • Ez az otthon használt gépekben jelenleg nem jelent gondot, de sok professzionális alkalmazás sokkal többet is tudna használni • A Pentium - III ill. Athlon óta lehetőség van egy különleges 36 bites címzésre • Lassú, körülményes a használata, kevéssé elterjedt. • Utasítások operandusza általában 64bites lesz • Ez bizonyos esetekben teljesítménynövekedést jelenthet.
64 Bites megoldások • AMD Hammer • Intel Itanium • HP Pa-RISC • DEC Alpha • IBM Power sorozat • SUN ULTRASparc
AMD Hammer • AMD64 utasításkészlet (az x86 64 bitre bővített változata) • Előnyei: • A jelenleg használt programokat is futtathatjuk rajta, felülről kompatibilis (nagyon nagy előny) • Rendkívül gyors processzor „olcsón” • Kimagasló többprocesszoros megoldás • Hátrányai: • Cipeli magával az X86 hibáit, és az imént említett problémákat. • Jövője: rövidtávon valószínűleg siker, hosszabb távon attól függ, meg tudják-e oldani az AMD mérnökei a memóriakésleltetési problémát.
CISC/RISC vs. VLIW CISC/RISC program felépítése: INT1 INT2 INT3 MMX4 INT5 MMX6 INT7 INT8 FP9 INT10 MMX11 INT12 FP13 Processzor A végrehajtás ideális sorrendje A végrehajtás valós menete … INTEGER INT1 INT5 INT10 INT1 INT5 INT2 INT7 INT12 INT2 INT7 INTEGER INT3 INT8 INT3 INTEGER FPU FP9 FP13 FPU MMX1 MMX4 MMX6 MMX11 MMX4 MMX6
Okai • Pl. nincs a gyorsítótárakban a kívánt adat, ekkor több, mint 100 órajelet vár a kérdéses utasítás. (A processzor megpróbál előreolvasni több kevesebb sikerrel) • Lehet, hogy INT3 egyik operandusza INT2 végeredménye. • A kódot szekvenciálisan olvassa a processzor • A párhuzamosítás általában távol van a tökéletestől.
VLIW program 1. Utasítás- Szó 2. Utasítás- Szó 3. Utasítás- Szó 4. Utasítás- Szó 5. Utasítás- Szó … INT1 INT6 INT11 INT16 … Az utasítások végrehajtása is hasonló módon történik, egy utasításszó végrehajtása a másikat követi. A párhuzamosítást a fordító (programozó) végzi, ez hatékonyabb működést tesz lehetővé, és egyszerűsíti a processzor felépítését. Az utasításokhoz szükséges adatokat előre beolvassa regiszterekbe, így a memóriakésleltetés problémája jóval kisebb. Az utasításszavakban vannak különböző vezérlőjelek is, amelyek a processzor felépítésének további egyszerűsítését teszik lehetővé. INT2 INT7 INT12 INT17 INT3 INT8 INT13 INT18 FP4 FP9 FP14 FP19 FP5 FP10 FP15 FP20
Újabb gnereációs VLIW processzor … 1. Utasítás- Szó 2. Utasítás- Szó 3. Utasítás- Szó 4. Utasítás- Szó 5. Utasítás- Szó INT1 INT6 INT11 INT16 … INT2 INT7 INT12 INT17 INT3 INT8 INT13 INT18 FP4 FP9 FP14 FP19 FP5 FP10 FP15 FP20 Új végrehajtó- egységek kihasználatlanul
VLIW: VERY LONG INSTRUCTION WORD • VLIW elv: Olyan szuperskalár processzor, ahol a az utasításszó az összes utasítás végrehajtó egység számára tartalmaz utasításokat. • RISC/CISC szuperskalár • A párhuzamosítást a processzor végzi a futás közben, dinamikusan. Mivel ez futás időben történik, a párhuzamosítás nem tökéletes, és nagyon erőforrás igényes • VLIW szuperskalár • A párhuzamosítást a fordító végzi ez sokkal hatékonyabb, és egyszerűbb processzor felépítést tesz lehetővé.
CISC/RISC Egyszerűbb fordító Egy lefordított program újrafordítás nélkül használható egy újabb generációjú processzoron futtatva is gyorsabban fut majd. VLIW Nagyon bonyolult fordító. Egy lefordított program újrafordítást igényel, hogy újabb processzorgeneráción gyorsabb legyen, bizonyos esetekben újrafordítás nélkül lassulhat is. VLIW vs. CISC/RISC
VLIW a gyakorlatban • VLIW processzorokat (nem általános célúakat) használnak ott, ahol speciális programoknak viszonylag nagy teljesítménye van szüksége: • Mp3 lejátszók • DVD lejátszók • Routerek,HUBok • CD/DVD olvasók (CRC ellenőrzés) • CD/DVD írók (CRC kód generálás) • (DVD felvevők: MPEG kódolás valós időben) • Kézi kamerák (digitális jelrögzítés) • Autók vezérlő elektronikája • Kriptográfiai (kódoló/dekódoló) processzorok • Digitális kamerák (JPEG kódolás) • ECC RAM vezérlők • Transmeta Crusoe • Transmeta Efficeon
Transmeta Crusoe/Efficeon • Nagyon alacsony fogyasztású hordozható gépekbe fejlesztett mobil processzorok. • Hagyományos X86 utasításokat hajt végre, ezeket egy úgynevezett Code-morphing szoftver fordít le furás közben a processzor belső VLIW urasításaira. • Viszonylag kis teljesítmény, és nagyon kis fogyasztás. • A VLIW utasítások sokkal könnyebben végrehajthatóak, mint az X86 utasítások, jóval egyszerűbb processzormagot használhatnak. • Transmeta Efficeon 1 Ghz: Fogyaztás: 4-5 W (Intel Pentium 4 3.2 Ghz: 85W) 256-bites utasításszavak Integrált memória, videó, AGP, PCI, IDE, USB vezérlő (nincs szükség chip-setre) Sebessége egy 1-1.2 Ghz körüli PentiumIII-hoz hasonló
Intel VLIW (EPIC a fantázianeve) • A fordító 9 év fejlesztés után sem túl jó, ez a VLIW szerű architektúra számára nagyon nagy hátrány. • Nincs dinamikus elágazásbecslés, a fordító próbálja „megjósolni” hogy melyik ág fog végrehajtódni. • Ez nagy előny lehet, mert a fordítónak jóval több információja, és ideje van a párhuzamosságot, és a függőséget vizsgálni, de nincsen semmilyen információja arról, hogy a program milyen környezetben fog futni, mekkora lesz a processzor kihasználtsága. Előre kell terveznie, hogy mikorra lesz kész egy utasítás eredménye… • Gyakran a processzor az elágazás mindkét ágát elkezdi végrehajtani, majd amikor meg lesz az eredmény, a feleslegeset eldobja.
EPIC(Extreemly Paralell Instruction Computer) • A VLIW átalakítása, ami a programok rugalmatlanságát próbálta meg javítani bizonyos átalakításokkal. Bár a programok a CISC/RISC társaiknál még mindig jóval rugalmatlanabbak, de jobbak, mint a hagyományos VLIW architektúrák esetén.
Intel Itanium • Az Intel a HP-vel közösen fejleszti • Most a 2. generációnál tart, eddig összesen 50000-60000 darabot adtak el, ez nagyon kevés. (a HP a kifutó Alpha processzorokból többet ad el) • Nem CISC vagy RISC, hanem VLIW(EPIC) processzor • Sokkal kevésbé jelentkezik a memóriakésleltetés problémája, mint a versenytársainál • Jövője kérdéses: • Mivel senki sem veszi, nem is fejlesztenek rá szoftvereket. • Mivel nincsenek rá szoftverek, senki sem veszi.
Itanium: statikus elágazásbecslés • Az elágazásoknál a fordító próbálja megjósolni, hogy melyik ág fog nagyobb valószínűséggel végrehajtódni. • Ma is kérdéses, hogy ez a megoldás, vagy a dinamikus elágazásbecslés a hatékonyabb. A tények: Az Itaniumon kívül minden más processzor dinamikus elágazásbecslést használ (IBM, SUN, AMD, HP). A VLIW- processzoroknál nehezen megoldható a dinamikus elágazásbecslés.
Itanium (Itanic?) • Összegzés: • Rendkívül innovatív technológia, hosszú távú jövőt az architektúra biztosítja • Alacsony eladások • Sok optimalizációt igényel, költséges a szoftverfejlesztés hozzá • Drága • Az Intel szerint a piaci siker 5-10 éven belül várható (Bár 1997ben váltig állították, hogy 2005-ben már piaci fölényben lesznek, amire semmi esély)
HP-PaRISC • Klasszikus RISC architektúra • A HP az Itanium társfejlesztője, a Pa-RISC jövője kétséges. (Bár ha az Itanium eladásai nem változnak, valószínűleg marad) • Jó többprocesszoros teljesítmény, Adatbázis és web szervereknél használják előszeretettel.
DEC Alpha • A DEC • Az első 64bites általános célú RISC processzor. • Első szuperskalár processzor. • Rendkívül nagy lebegőpontos teljesítmény • 10 évig piacvezető volt, 2003-ban jelent meg az utolsó generáció(EV-7), a Compaq és a HP fúziója megpecsételte a sorsát.
IBM Power 4 • Az IBM egyik processzor-architektúrája, 64bites szuperskalár CMP RISC • CMP single Chip Multi Processor : Egy szilicium-lapkán két processzormag található, így egy egyprocesszoros Power4 rendszer tulajdonképpen kétprocesszoros. • Maximum 128 Mbyte L3 Cache • Hamarosan érkezik a Power5( 2 processzormaggal, magonként 2 szál egyidejű végrehajtásával)
IBM PowerPC G5 • Power4-en alapuló, egy processzormagos PPC processzor, az Apple legújabb gépeiben találkozunk vele • Kiegészítették 4 db Különböző SIMD egységgel, de ezekkel elég jól boldogulnak a fordítók • Teljesítményben felveszi a versenyt a legújabb Intel, illetve AMD processzorokkal, multimédiás alkalmazások területén gyakran megveri azokat, de jóval drágább. • Csak az Apple árul erre épülő számítógépeket. (a legolcsóbb alapmodell kb. 500000Ft)
Sun Ultrasparc IIIi • SPARC: Scaleable Processor ARChitecture • Kb. 30 éves archiektúra, ennek ellenére nem avult el, mint az X86 nagy része • Jelenleg Ultrasparc IIIi a legújabb • Egyprocesszoros környezetben viszonylag alacsony teljesítmény, nagygépekbe tervezték • 8+ processzoros gépekben kiemelkedően skálázódik, a leggyorsabb „nem-szuperszámítógép” nagygépeket a Sun gyártja ezzel a processzorral.
Sun: egy másik út • A Sun processzorai nem egyenként gyorsak, a többprocesszoros képességeik kiemelkedők. Ennek fényében a SUN másképp képzeli el a jövőt: Ők nem akár a frekvenciát az egekbe tornászni, mint a versenytársaik, ők egy processzorba szeretnének több magot ültetni. (hasonlóan az IBM POWER4-hez). • Az első processzoruk, mely erre az új megközelítésre épül kb. 1 év múlva várható, 2 maggal, de hosszú távú terveik között szerepel egyetlen Processzorra 16-64 (!) processzormagot integrálni 5 éven belül. Mivel az órajel nem lesz magas, a memória késleltetés nem jelent majd problémát, a sok processzor ellátása adattal pedig egyszerűen megoldható többcsatornás memóriavezérlőkkel.
Első lépés • 2005ben jelenik meg, már meg vannak a prototípusok • 8 processzormag egy szilíciumlapon • 1 processzormag 4 programszál futtatására képes • Programszál váltás: minden Load/Store műveletnél • 4 db. 128bites DDR memóriavezérlő • I/O, processzor-processzor sín: Hyper Transport
Többprocesszoros gépek megvalósítása a gyakorlatban • Intel Pentium 4 • AMD Opteron • DEC Alpha EV7
Klasszikus felépítés Processzor FSB C H I P S E T Videó- kártya AGP Északi híd Memória Mem csatorna ATA Merevlemez Déli híd PCI Bővítőkártyák USB ISA … Bővítőkártyák
Intel Pentium4 XEON Ez nagyon nem hatékony Processzor C H I P S E T Egyéb eszközök: Hálózati vezérlő… 6.4 Gbyte/s 1 Gbyte/sec) Processzor 6.4 Gbyte/sec MEMÓRIA Processzor Processzor
AMD OPTERON Memória 6.4 Gbyte/sec Processzor Memóriavezérlő 6.4 Gbyte/sec 6.4 Gbyte/sec Hyper transport vezérlő 6.4 Gbyte/sec AGP vezérlő, déli híd
AMD Opteron Processzor Memória Processzor Memória Processzor Memória Processzor Memória Chipset Chipset Processzor Memória Processzor Memória Processzor Memória Processzor Memória Processzor Memória Processzor Memória Chipset Processzor Memória Processzor Memória Processzor Memória Processzor Memória
CLUSTER(hálózatos megoldás) Node Node Node Node Node Node Node Node Node Node Node Node Ez 2 dimenziós háló.Sok esetben kevésbé hatékony, mint ugyanannyi processzor egy gépben, de egy bizonyos szint felett már csak ez a megoldás lehetséges. Olcsóbb, mint az egy-gépbe-sok-processzor megoldás,, ezért egyre elterjedtebb. Adatbázis kezelésben például jelentéktelen a különbség.