2009. 09. 23. 1
2
3
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. A value PC hez hasonló idővonalat kell elképzelni hozzá. Túlnyomórészt szerverek, desktopok, olcsó PC k, mobil gépek. Manapság az eladásra jellemző arány: ~70% a mobil és ~30% a desktop. Szerverek fajtái: MP (multi processor), DP (dual processor), UP (uni processor). Történelem: UNIVAC ot gyártották először sorozatban. ENIAC (1946): Kívülről vezérelte program. Ennek a fejlesztésébe Neumann nem szólhatott bele (idevágó irodalom: Számítógépfejlődés Pascaltól Neumannig). A belső programvezérlés csapatmunka eredménye. Ez lett az EDVAC (1949). Neumann 45 ben összefoglalta a munkákat, tisztán leírta a számítógép működését, és publikálta azt (ezért nem lehetett szabadalmaztatni sem). Eckert és Mauchly. IAS: Institute of Advanced Studies rövidítése. UNIVAC: fixpontos + decimális + karakteres, gazdasági célokra. Tárolás: ferritgyűrűs tár. IAS: fixpontos + bináris + lebegőpontos, tudományos célra. Tárolás: képcsöves módszer. IBM bevonta tanácsadónak Neumannt, csak az UNIVAC után kezdtek el gépeket gyártani. 50 es években vették át a vezetést. A régi, híres gépeket tudni kell időben elhelyezni! IBM 360: Mind az ötféle formátumot támogatta. Család fogalma megjelenik: egy egész sor CPU t mutattak be, különböző teljesítmény/ár arányban. I/O rendszer (csatorna) fájl szervezésű, önálló logikai egység. N*100.000$ -ba került. IBM 370: Virtuális memória (~tár) bevezetése (memória volt a szűk keresztmetszet). 360 nál még ferritgyűrűs memória volt, 70 es évek elejéig. Magyarázat: amint az integrált áramkörök megjelentek ( 60 ban indult el), tranzisztorok száma adott területen évenként duplázódott (Moore törvénye). 1 Kbyte os memória megjelenése volt az áttörés (1971. Könnyű megjegyezni: mivel évente duplázódik, és 10 év telt el, 2^10=1024 byte) => kb. 11 év alatt vált elég komplexé. DEC: PDP-8: még éppenhogy működött, ez már csak 20.000$ -ba került. 12 biten címezhető RAM. PDP-11: 16 biten címezhető a RAM. VAX. Mikroprocesszor: 71 körül, párezer tranzisztorral. ~400 dolláros kit, forrasztgatás után működőképes. 4004 es teljesítménynövekedés: 10 évenként 100x!! 81: IBM PC megjelenése (Apple, Commodore már korábban megjelentette a gépeit). Elterjedése: 1. A piac meghódítása 2. Mindent publikáltak => Klónok megjelenése, minden eszköz IBM kompatibilis lett. 4
2009. 09. 30. Y tengely: ár helyett most teljesítmény érték. Logaritmus skála (1,10,100,1000, ) - idő skála (1,2,3,4,5, ). 10 év alatt ~100x teljesítménynövekedés 2003-2005 -ig. SPEC: teljesítménymérési módszer eljárásból fakadó számérték. Abszolút teljesítmény: hány utasítást dolgoz fel másodpercenként. Fc és IPC függő. 8088: Az Intel 8086 ból redukálták vissza (16 helyett 8 bites I/O adatbusz!, a 16 bites regiszterek megmaradtak! feldolgozás). Az IBM PC alap processzora. Az I/O határozza meg leginkább a számítógép árát. IBM PC azért 8 bites I/O val rendelkezik, hogy olcsóbb legyen. (8086: már ehhez is lehetett csatolni co-processort matematikai lebegőpontos társprocesszor) 80286: protected mode megjelenése 386(1985): 32 bites architektúra. SX: 16 bites adatbusz és 32 bites regiszterek, DX: 32-32 bit. Cache még nem a CPU ban volt benne, 1. generációs futószalag. Virtuális mód megjelenése. 486(1988): DX: integrált, működőképes lebegőpontos co-processzor. SX: ugyanez le volt tiltva (később bele sem tették már) 2. Generációs futószalag (CPU ban cache, + elágazásbecslés). (1.5 generációs: van cache, nincs elágazásbecslés. Intel nem gyártott ilyet) DX2, DX4: nem az Intel gyártotta, hanem a Cyrix és az AMD, nem referenciamodellek. EDO RAM. On-die (CPU lapkára rákerült) L1. L2 külön, rendszerbuszon. Pentium(1993): 64 bit szélességű adatbusz. A feldolgozás 32 biten történik. SDRAM itt jelent meg. 66-166 MHz. Első generációs (keskeny) szuperskalár (2-3 RISC utasítás/óraciklus). A buszfrekvencia lassabban fejlődött, mint az órafrekvencia Az AMD ekkoriban fejlesztette ki a DDR elvet: Double Data Rate. Mindkét élen adat: FSB: pl. 100 Mhz ->400 megatranszfer, Intel a Pentium 4 ben már használta a DDR-t és a DDR2-t: 4-800 megatranszfer. A DDR technológia tehát nem csak a memóriához köthető Pentium 66 Mhz ig órajel = FSB. Utána: szorzók megjelenése. A 100 MHz es Pentium esetében pl. még 66 MHz es FSB volt. A PC-66 MHz es SDRAM ot a Pentium 66 MHz es processzorhoz hozzá lehetett illeszteni. L1 cache: külön Instruction és külön Data. Pentium MMX(1995): az első generációs szuperskalár processzor ISA kiterjesztése. 133->233 MHz L1 cache: külön Instruction és külön Data. Pentium Pro(1996): Széles szuperskalár (~4 RISC utasítás / óraciklus), általános célú alkalmazásban körülbelül ennyi utasítás párhuzamosítható pufferelt kibocsájtás esetén. Direkt kibocsátásnál: ~2). Eddig az IPC 10x -növekedés, órajel szintén => 100x összesen. Utána az IPC stagnált (elérték a 4 es szélességet), az órajelnek kellett 100x ra nőni. Dedikált buszon csatlakozik az L2 Pentium II(1997): 2,5. generációs szuperskalár processzor. Gyakorlatilag a Pentium Pro kiegészítése a MMX kiterjesztéssel, és néhány egyéb fejlesztés. 233 MHz en jött ki az első. Az FSB kezdetben 66, később 100 MHz => PC-66 és PC-100 SDRAM. Az Intel Celeron itt jelent meg kisebb cache -el (66 MHz) és a Celeron A (100 MHz) Dedikált buszon csatlakozik az L2, de volt olyan mag, ahol már a CPU lapkájára bekerült. Aktív hűtés megjelenése. Pentium III (1999): 450 MHz től 1.3 GHz. 2 féle tokozás: Slot-1 és FCPGA. On-die L2 cache (CPU lapkáján). Pentium 4(2000): Netburst architektúra. Prescott mag hőtermelése 103 Watt! Ez a léghűtés fizikai határa. Willamette, Northwood, Prescott magok. Northwood: HyperThreading, Prescott: 64 bit (feldolgozás, eleinte nem aktiválták) A Pentium D 3,8 GHz (Dual Core) kétféle magja a Prescott és a Cedar Mill volt. Kétmagos változatokban jelent meg az L3. 2004 ben a 4 GHz es CPU bejelentéseket vissza kellett vonni (be volt tervezve még 10 GHz is, a disszipáció miatt megrekedt). 2004-5 környékén a fejlődés megállt (csak a magok számában lehet effektíven növelni a teljesítményt, lásd Sokmagos processzorok jegyzet eleje). 5
Pai: Performance(absolute-instruction) Pao: Performance(absolute-operation) Pr: Performance(relative) tv: vizsgált rendszer futási ideje IPC: utasítások száma / ciklus Pa nehezen mérhető: 1. Performance Counter (pl. lehívott, végrehajtott utasítások, elágazási utasítások) segítségével történik, minden CPU nak ezen keresztül mérhető a teljesítménye. A benchmark programok tudják kezelni ezt, így szolgálnak információkkal. 2. A Performance Counter alkalmazásfüggő is, pl. a lebegőpontos utasítások lassabbak. Relatív teljesítmény: benchmark programcsomag. Különféle műveletekre a futási időt összehasonlítja egy referenciarendszer értékeivel. Azért van alul a vizsgált rendszer ideje, hogy a tört minél nagyobb lehessen (mert a rendszer valószínűleg gyorsabb a referenciánál. A tört így nagyobb lesz 1 nél. Segíti az eladást). Amit kapunk, az a gyorsítás mértani közepe. Ezt a SPEC cég definiálta. SPEC int: fixpontos. SPEC base: standard, szabványos compiler beállításokkal mért (base nélküli: lehet trükközni, pl flagekkel). IPC hatékonyság feldolgozási szélesség (példák: szekvenciálisnál pl: 1/10, futószalag: ~1, szuperskalár: ~2-4). Pár évente újra definiálják a referenciaértékeket, pl. 89, 92, 95, 2000, 2006 -> más-más programokat tartalmaznak. Hatékonysági korlát: általános célú alkalmazásoknál általában max. 4-5 utasítás Párhuzamosítható. Legkisebb komplexitás (~tranzisztorszám) a futószalaghoz kell. VLIW egy új utasításszintű architektúrát (ISA) igényel. Szuperskalár: evolúciós irány, komptatibilitás. EPIC VLIW: forradalmat igényelt, de a felhasználók nem álltak át rá. 6
Bottleneck: szűk keresztmetszet. Itt a futószalag is behozott szűk keresztmetszetet, ezt feloldották. Innentől új paradigmára van szükség. Emlékeztető: Térbeli kibocsájtás = Párhuzamos kibocsájtás. Statikus függőségkezelés: architektúrát tekintve legegyszerűbb, ha a compiler re bízzuk a függőségkezelést. VLIW esetén ez elvárás. Amit a compiler egyszerre kibocsát, az legyen független. Baloldalra még órán fel volt rajzolva a szekvenciális (soros) feldolgozás, de mivel az nem ILP, így itt nincs feltüntetve. 7
VLIW működése. 10-20 feldolgozó egység. Ez határozza meg a VLIW hosszát (az utasításszó mezőinek számát) -> 320-640 bit hosszúak (32 bit * 10-20 FE) is lehetnek. Annyi utasítás lehetséges a VLIW -ben, ahány feldolgozó egység található a processzorban. Emlékeztető: Ha van ~100 féle utasítás, akkor 8 bit hosszú a műveleti kód. Ha ~32 regiszterünk van, azt 5 biten lehet megcímezni. Amennyiben regiszter-regiszter architektúráról van szó, akkor 8 (MK) + 3(forrás,forrás,cél)*5 => 32 bit hosszú egy mező (utasítás) a VLIW ben. 8
Alapelv: Új technológia => szűk keresztmetszetek => ezek feloldása, majd a technológia határához elérkezünk => új technológia => A kibocsátott utasítások közt lehetnek olyanok, amelyek egymástól függenek, a függőségkezelés a CPU ra hárul. Compiler segítheti a párhuzamos feldolgozást, például utasítás sorrend megváltoztatásával (a legdurvább függőség a LOAD nál lép fel. A compiler minél előrébb helyezi el, hogy a kívánt adat megérkezzen, mikor szükség lesz rá. Az időigénye akár többszáz óraciklus is lehet). Ez a 2. generációs szuperskalárok Továbbfejlesztési lehetőségek: Vektoros, azaz: több utasítás / művelet (SIMD). Multimédia, grafika, matematikai számítások esetén nyújt segítséget. Tehát csak dedikált alkalmazásokra tudunk hatékonyságot növelni, általános célúaknál már nem! 9
10
Komplexitás determinálja a sorrendet. Futószalag => Szuperskalár => kiterjesztés. Az utasítások több műveletet kezdeményeznek. Csak akkor előny, ha azt az alkalmazás támogatja (pl. multimédia, grafika, matematika) => dedikált alkalmazások. 11
CPI: Cycles per Instruction (IPC reciproka) IP: egy ciklusban kibocsátott utasítások OPI: Operation per Instruction EPIC: a VLIW új neve, Intel Itanium processzor. 12
CPIi = 1 / IPCi Szekvenciális: CPIi: pl. 3 (-> IPC ~ 0.33) Futószalag: első ábra jelenti az ideális állapotot, a második az átlagos esetet (IPCi pl. 0.8 -> CPI ~ 1.25) VLIW: Még nem támogatja a SIMD et EPIC: Már támogatja a SIMD et. 13
A spekuláció alapvető az elágazáskezelésben és a LOAD oknál (sokáig tart az adatok beolvasása a memóriából). η: Spekulatívan végrehajtott utasítások hatékonysága = Jó utasítások száma / összes utasítás száma. ~0.8-0.9. A lebegőpontos osztás n*10 ciklusig is eltarthat. Fénysebesség: 30 cm / ns; az elektronok a szilíciumlapkán: 20 cm/ns! 1 GHz 1 ns óraciklus. Alapvető, hogy mennyi a csíkszélesség! A kisebb méretek (csíkszélesség) gyorsulást idéznek elő. Egy futószalag fokozata: puffer -> logika -> puffer. Logikai hossz: hány NAND kapun kell keresztülmenni. FO4: Fan-out: egy NAND kapu késleltetési ideje Növelték a fokozatok számát -> csökken a logikai hossza az egyes fokozatoknak. Korábban volt 100 FO4 is, ma ~10-15 FO4. Prescott mag: 30 fokozatot is elérték. A spekulatív elágazásbecslés miatt a rossz irányba lehívott utasítások száma ilyen mértékben túlságosan nagy veszteséget okoz (túl nagy a buborék). Eredmény: napjainkban ~15 fokozat jellemző. Mikroarchitektúra: manapság ez a döntő, ettől függ az órafrekvencia sebessége. Napjainkban a hatékonyság növelése csak pár százalék különbséget okozhat. 14
2009. 10. 07. Időben párhuzamos ~ temporális Futószalag. Bevezetés: Az utasítás-szintű párhuzamosság fejlődésének jellemzése - 100x növekedés 10 évenként (utóbbi időben stagnálás) - Oka: 3 különböző párhuzamosság megjelenés (időbeli, térbeli párhuzamos utasítás kibocsájtás, utasításon belüli - több művelet/utasítás) => a feldolgozási szélesség növekedése - Teljesítmény = órafrekvencia * ciklusonkénti eredményesen végrehajtott utasítások száma, Pai = Fc * IPCeff (FONTOS!!) 15
Pipelined EUs: A lebegőpontos utasítások végrehajtásánál az Execute fokozatok párhuzamosítása (a kitevők azonos alakra hozása, mantissza, ) Jellemzően tudományos célú gépeken alkalmazzák. 2 db 64-128 bites fixpontos szám összeadása 0,5-1 óraciklust igényel. Ez ~ 0,3 ns idő (megj.: ezalatt a fény ~10 cm t halad). Ilyen rövid időtartamnál erre nincs szükség. Lebegőpontos osztás a legrosszabb műveletek egyike, ugyanis kivonásokra vezethető vissza. A lebegőpontos összeadás ~0.3 ns időt vesz igénybe. Pipelined processors: Futószalag. Minden óraciklusban be tud fogadni egy új utasítást. Az ábrán láthatóak a futószalag bevezetéseinek lépései, a futószalag tehát fokozatosan jelent meg. 16
80 as évek közepétől a 80-as évek végéig minden gyártó áttért a futószalag technológiára (80386 tól). Intel/AMD: x86 (ez a domináns: az eladott processzorok 80-90% -a) Motorola: M68000 (CISC) MIPS R: RISC 17
Mint minden paradigmaváltásnál, itt is új, szűk keresztmetszetek jelentek meg. 18
- RAM sávszélesség szűk keresztmetszete: A gyorsabb processzort (minden óraciklusban képes utasítást befogadni, ellentétben a korábban általánosan elterjedt ~4 óraciklusnyi időtől) az amúgyis lassú RAM nem tudta olyan gyorsan követni, és még jobban is terheljük. Megoldás: cache. és adat : CISC processzoroknál. 19
Futószalag cache nélkül: 80386 (I. generációs futószalag processzor) Futószalag cache használatával: 80486 (II. generációs futószalag processzor) Volt olyan gyártó, amelyik előbb vezette be a cache t, mint a futószalagot (pl. Motorola, MIPS R) A zárójelek értelmezése: Ha egy változó van, akkor univerzális cache, ha kettő, akkor Instruction/Data cache (kilobyte). A cache a szekvenciális feldolgozást kifejezetten hátráltatja! Csak a ciklusokat támogatja, azokat is csak akkor, ha azok beleférnek a cache-be. Ebből következik, hogy minél nagyobb a cache, annál jobb, DE: ekkor az elérési idő is megnő -> optimumra van szükség. Ez kb: 64K, 3 óraciklus. L1: jellemzően 64 Kb (3 óraciklus) megj.: AMD nél 32 Kb is. L2: fél-2 Mb (10-15 ciklus) L3: 6-12 Mb (30 ciklus is akár) 20
- Második szűk keresztmetszet: az elágazáskezelés problémája. Futószalag esetén ugrási résről beszélünk, azaz körülbelül annyi utasítást hívhatunk le feleslegesen ugrás esetén, ahány fokozatunk van (n fokozat esetén n-1). Ezért kiemelkedő fontosságú az ugrási irány lehető legjobb becslése. Az ugrás folyamata a következő: 1. Az ugrási irány becslése 2. Az utasításlehívást folytatjuk a becslés alapján 3. Ellenőrizzük a becslés helyességét 4. A valós irányban folytatjuk (jóváhagyjuk vagy eldobjuk) a végrehajtást Feltétlen elágazásnál is fellép, de nem olyan jelentős. Execute fokozatnál vizsgálja a Flaget. Ciklusoknál nagyon jó a becslés (ha a ciklusváltozó n, a becslés n-1 szer jó lesz) Nem-szuperskalár processzoroknál a fix (rögzített, mindig ugrunk ) elágazásbecslés jellemző, az első generációs szuperskalároknál a statikus a jellemző. Statikus elágazásbecslés esetén a feltétel kiértékelésekor Displacement vizsgálat történik: ha D<0, ugrik, ha nagyobb, akkor soros folytatás. Kód alapján történik a becslés, ezért primitív elágazásbecslési technika, a jobb rendszerek a múlt alapján becsültek. Dinamikus esetén a címet vizsgáljuk. 21
Ismétlés: Az elágazási utasítások alapblokkokra osztják fel a kódot. Az alapblokkok általában 3-4 adatmanipuláló utasítást tartalmaznak. 22
80486 tól jelenik meg az elágazásbecslés. (II. generációs futószalag processzor) Minden gyártó bevezette. 1989: futószalag technika kimerülése 23
Cache megjelenése azért előzte meg az elágazásbecslést, mert azt egyszerűbb volt megvalósítani (komplexitás ~ tranzisztorok száma). 24
Fontos, összefoglalás. A másfeledik generáció azokra a processzorokra vonatkozik, amelyeknek már volt cache e, de még nem volt bennük elágazásbecslés. 25
Megoldás: kibocsájtásbeli párhuzamosság 26
2009. 10. 07. 27
EPIC: a VLIW mai neve. Explicitly Parallel Instruction Computer. A statikus függőségfeloldás a compiler feladata. 28
Az ábrán például 6 utasítás található egy VLIW -ben. Gyakorlatilag: az utasítások továbbra is 32 bitesek, de maga a hosszú utasításszó (VLIW) akár 10-20x 32 bit hosszú is lehet. 29
A compiler ma is kezel függőségeket, pl. az összes LOAD utasítást előrébb hozza, hogy a lassú, RAM ból való betöltés eredménye már kéznél legyen, ha szükség van rá -> dinamikus függőségkezelésnél is van szerepe. 30
Szuperskalárok esetén a szekvenciális konzisztenciát meg kell őrizni! ROB segítségével. 31
32
33
Fontos: TRACE, CYDRA, és azok elődei (prototípusok). ELI-512: a szám a VLIW hosszát jelöli. 16*32 bit. 1980-as évek elején kezdték el fejleszteni, és ~5 évre volt szükség ahhoz, hogy a piacon bevezethessék. 34
Kevésbé komplex processzor: gyorsabb, hamarabb meg tud jelenni (szuperskalár csak később jelent meg) 35
Teljesen más utasításrendszer (ISA: Instruction Set Architecture) Új compiler -eket és operációs rendszereket kell írni Nem érte el a kritikus tömeget Az alkalmazásokat nem kell mindenképpen újraírni, de a VLIW lehetőségeit csak így tudjuk kihasználni. 36
Például nincs mindig 30 utasítás, amivel ki lehetne tölteni => részlegesen lesz kitöltve, hézagos lesz. Ez vezet a rossz sávszélesség kihasználáshoz. 37
A két cég nevét nem kell tudni, csak azt, hogy minden VLIW fejlesztő cég tönkrement. Ezektől a cégektől a fejlesztők az Intelhez és a HP hoz mentek. HP nál kezdeményezték az VLIW processzorok továbbfejlesztését, mert ez a jövő. A partner az Intel lett. HP lett a fősodrásban, az IBM mellékvágányra futott. 38
1997 ben egy konferencián már EPIC néven szerepel, a VLIW már el volt használva. 1999 re ígérték az elsőt Merced néven (Mercedes). 2 évett késett. Átkeresztelték Itanium ra. A Merced (2001) 600 MHz en működött, miközben a 2000-ben kijött Pentium 4 már 1.5 GHz en, 400 (FSB: 100 Mhz, 4 transzfer/órajel) megatranszferrel. bukás. A nagy processzorszámú, nagy megbízhatóságú, drága rendszerek szintjére emelkedett, és halad felfelé. Támogatja a SIMD et. 39
Kompatibilis ISA: A korábbi fejlesztésekkel kompatibilis! Nem igényel változtatást a korábban megírt programokban. A függőségeket a processzor kezeli. 40
Két nagy cég: IBM és DEC, az előbbi a piacvezető. Az IBM nyeresége megegyezett a DEC forgalmával! IBM Cheetah: IBM 360 (CISC) utáni fejlesztés első munkaállomás, amely RISC chip et használt. America project: Ennek a keretében használták először a szuperskalár fogalmat, 1987 ben DEC Multititan project: VAX (CISC) leváltására indították - RISC. Az egyetemi rendszerek jellemzően csak szimulált rendszerek voltak ("Mi lenne, ha.. ) A japánok bejelentették az 5. generációs számítógép programot, hogy itt is átvegyék a vezetést. A memóriagyártás terén sikerült is, a 6 legnagyobb gyártóból csak a Texas bírta ki a piacon. Dél-koreai Samsung lett a vezető. A zárójeles értékek a kibocsájtási rátát mutatják. 41
RISC: A legelső szuperskalár processzor egy beágyazott rendszerben volt található az Intel által gyártva, nincs nagy jelentősége. M, HP, SPARC, MIPS, AM: meglévő rendszereket szuperskalárosítottak, fejlesztették tovább. IBM, DEC, Power PC: új rendszerek, erre a célra készítve. IBM Power: az igazi kommersz, első szuperskalár Mindegyik kimúlt, kivéve: Power CISC: Eltolódás tapasztalható megjelenések tekintetében (~3 év). Intel a vezető gyártó, Motorola egy ideig vetélytárs, AMD kezd megjelenni a piacon. Cyrix -ből lett később a VIA. Az Intel és az AMD maradt meg a piacon. A családokat nem kell tudni, de kommentálni kell, ha a képet mutatják. CISC: a memóriában bitfolyamként látszódnak az utasítások, nincs eleje, sem vége. Ezek az utasítások komplexebbek is (megjelenik a memória, mint operandus) Az összes rendszer néhány év alatt ( 90-95) szuperskalárrá változott. 42
Alpha 21064: a legtisztább RISC Pentium: a legtisztább CISC 43
FX utasítások a dominánsak! Memóriaműveletek: Load + Store = 30%+10% = 0,4. FP utasítás általános célú alkalmazásokban meglehetősen ritka (ennek ellenére számításba kell venni) Hasznos szélesség általános célú alkalmazások esetén nem pufferelt kibocsájtás mellett: ~2-3 utasítás / ciklus. Direkt (nem pufferelt) kibocsájtás esetén kb 2 utasítás / óraciklus => általános célú alkalmazásoknál 2-3 -nál nagyobb szélességben nincs értelme gondolkodni 44
Adat-cache portok számolásához az előző dián található memóriaműveletekből vettük a 0.4 értéket, ez tehát a memóriához nyúlást jelképezi. FX itt azért van duplázva, mert ezeket a végrehajtó egységeket terhelik a Load/Store címszámítások is. A címszámítást tehát rejtett, fixpontos regiszterek segítségével végezzük el. EU: Execution Unit(végrehajtó egység, VE) Összesen tehát 5-6 VE szükséges. 45
Kibocsájtási szűk keresztmetszet: a kibocsájtás (Issue) az első függő utasításig történik. A függőségek miatt nem tudunk annyit kibocsátani, amekkora az utasítás-ablak mérete. Megoldás: pufferekbe tesszük a kibocsátott utasításokat, és ott vizsgáljuk meg a függőségeket. 46
2009. 10. 14. A kibocsátáshoz nem kell függőségvizsgálat! Azt a Shelving buffer -ekhez csatolt függőségvizsgálók végzik. A függetleneket ki lehet bocsájtani. Shelving buffer: várakoztató állomás. A kibocsátási szűk keresztmetszet megszűnt. Ezzel nem biztos, hogy gyorsul a rendszer; amennyiben volt szűkebb keresztmetszet is, maradhat ugyanolyan sebességű, mint korábban. A kibocsátás 2 fázisú: 1. Pufferbe kerül dispatch, kiküldés. 2. Pufferből VE be kerül Issue, kibocsátás. Komplikációk: ha a puffer megtelik, vagy az adatút szélessége kicsi (ha egy típusúak az utasítások), akkor nem lehet 4 utasítást egyszerre kibocsátani. Megoldási módok az adatutak szélességére: 1. Minden adatút worst case: legjobb teljesítmény (mert a legrosszabbra készülnek, 4 széles legyen minden) 2. Fixpontosnak pl. 2-szeres szélességű, lebegőpontok egyszeres (statisztikai közép: 2 vagy 3 (nem nagy a veszteség, és olcsó)) Egyéb megoldások: Több FP VE hez 1 puffer: csoportpuffer Mindent közös pufferből: centralizált puffer (univerzális; Pentium Pro). 47
Mindig a legszűkebb keresztmetszetű alrendszer határozza meg a rendszer teljesítményét. Azt a sínt, amely a processzort köti össze az északi híddal, Front Side Bus (FSB) nek nevezzük (régebben: rendszerbusz) 48
Ismétlés: 3 fajta adatfüggőség: RAW, WAW, WAR. Az utóbbi kettő regiszterátnevezéssel megoldható. Neumann elvű rendszer->imperatív programozás (Pascal, C,..): változók értéket kapnak, átíródhatnak ->szekvenciális végrehajtás->a beírás sorrendje meg kell feleljen az utasítások sorrendjének! Szuperskalár esetben ez nem egyértelmű -> ROB Sok utasítást kell kiküldeni egyszerre->lassú->elődekódolás! (pl. megállapítja az utasításcsoportot, kiszűri az elágazásokat, akár a címet is kiszámítja. L2 -> elődekódolás -> L1) Első generációs szuperskalár: Rendszerbusz a CPU és az északi híd között, erre csatlakozott az L2 Második generációs szuperskalár: FSB (Északi híd felé, ez volt korábban a rendszerbusz, ezen van az L3) és BSB (L2 cache felé, dedikált busz) Harmadik generációs szuperskalár: L2 a CPU ban. 49
50
A két kiugró érték: csak a tudományos célú programoknál (ilyen esetekben nagy párhuzamosság érhető el) 51
52
Általános célú programoknál nem lehet tovább javítani! 53
RISC: 64 bit. 2000 környékén kiszorultak a piacról. Egyszerű struktúra, gyorsan pörgetve. Nem volt esélyük olyan magas frekvenciát elérni, hogy versenyezhessenek a CISC ekkel. Példa: Alpha, 300 MHz. CISC: 32 bit. Intel+HP. Hatékonyabb, de lassabb. IA: Intel Architecture Intel bejelentése 1997 -ben: Azt állították, hogy az IA32 (CISC) et felváltja az IA64 (EIPC). A Merced et 1999-re ígérték, 2001 ben jelent meg, 6-700 MHz el. Bukás volt, mert egy évvel korábban a P4 1,5 GHz el jött ki! AMD(2000): x86-64 bites ISA bejelentése (kompatibilis volt a korábbi változattal) Direct Connection, RAM vezérlő a lapkán, soros buszok. - Opteron: Szerverre - Athlon64: Desktopra Microsoft megtámogatta, az Intelnek muszáj volt utánoznia. 54
Kétműveletes utasítások: 90 es években. Jellemzően lebegőpontos műveletek. Kicsi a hatékonysága. 3 operandus, két művelet. Ismétlés: SIMD: Single Instruction Multiple Data. Egy utasításban több művelet => vektorutasítások. MM: Multimédia, képfeldolgozás, jellemzően FX feldolgozás(2d, pixelek tárolási módja, stb.). FP: lebegőpontos (3D grafika: térpontok miatt) Első rendszerek: 64 bit, napjainkban: 128 bit hosszú lehet egy vektorutasítás. Nemsokára 256 bit hosszú lesz. 64 biten 2/4/8/16/32 db utasítás eltárolása lehetséges. LP: szimplapontos: 32, duplapontos: 64 bit. Pentium II: A lebegőpontos regisztertárba rakták be a multimédiát, MMX (MultiMedia extension). 55
A kiterjesztés fejlődése: I. Intel: MMX (FX SIMD). 1997 ben, PII II. AMD: 3DNow! (FX, FP is + extra SIMD regiszterblokk), 1999 ben, K6-2+ III. Intel: SSE (FX, FP, SIMD regiszter), 2000-ben, P4 IV. AMD: 3DNow! Professional (innentől rákényszerültek, hogy lemásolják az Intelt) Egy ritka alkalom, hogy az Intel az AMD t másolja: Ismétlés, előzmények: - RISC processzorok egyszerűek, de gyorsak, a CISC ek pedig lassabbak, de hatékonyabbak (pl. Alpha: 300 MHz, Pentium: 166 MHz) - CISC elhúzott teljesítményben (a magas órajelen járó RISC et nehéz továbbgyorsítani észlelhető mértékben). 5 év alatt a RISC kiszorult ( 95-2000) - Intel és HP 1997 ben bejelentik a Merced et. Azt jósolták, az IA-32 (CISC) t felváltja az IA- 64 (EPIC). 2001 ben bemutatták, bukás. - AMD: bevezette a korábbi fejlesztésekkel kompatibilis, x86-64 et: 2000: 64 bites ISA bejelentés 2003: Opteron Athlon 64 megjelenése. Direkt csatolt: a CPU tartalmazza a memóriavezérlőt, és vannak soros linkjei: hyper transport bus, 3 db van belőle, és I/O vagy CPU köthető mindegyikre => akár 4 CPU is összeköthető, MP rendszer kialakítható belőle. Az AMD elnyerte a Microsoft együttműködését (x86-64 támogatású OS). Az Intel az IA-64 el szintén ezt akarta elérni, de a Microsoft nem tett eleget ennek, így rákényszerültek az AMD ISA jára. 56
Módosított dia: szaggatott vonal választja el kb a generációkat. 1997: FX-SIMD megjelenése, az átállás éve. AGP busz megjelenése. Előtte: 2,5. generáció Utána: 3. generáció Amelyek nincsenek színezve, azok nem támogatják a SIMD et. Órán nem beszéltünk az SSE3 ról. Intel P4 magok: Willamette(2000) Northwood(2002): HyperThreading, 55 millió tranzisztor Prescott (2004): már bennevolt a 64 bit, de még nem publikálták. 110 millió tranzisztor (a 64 bit re való áttérés növelte meg ennyire) 57
58
Ugyanaz, mint az előző ábra. 59
60
Branch prediction accuracy: Elágazásbecslés pontosságának javítása Ha a futószalagok fokozatainak logikai hosszát csökkentjük, akkor a fokozatok száma nő, ezáltal a helytelen elágazásbecslés hibája nagyobb súlyosságú (több utasítást kell eldobni) 90-2003: ~10 év Pentium Pro: 1995 61
62
63
64
65
66
Az, hogy melyik újítás mikor lépett be, az a rendelkezésre álló hardver komplexitásától függött! 67
Nem blokkoló cache: olyan cache, amely cache miss esetén, az adat memóriából történő betöltése közben is ki tud elégíteni igényeket. FONTOS ÁBRA! 68
69
70
71
72
73
- Bal oldal: Brute Force, nyers erő. Továbblépés. Szélesség növelése: 4 helyett 8 as kibocsátás. - Jobb oldal: Ügyességen alapuló megoldás. A mag több szálat tud egyszerre kezelni. Több bemeneti tölcsér. Minden fájlnak külön adattere (regisztertere) van. 74
75