Informatika | Számítógép-architektúrák » Számítógép architektúrák II.

Alapadatok

Év, oldalszám:2009, 49 oldal

Nyelv:magyar

Letöltések száma:220

Feltöltve:2012. május 25.

Méret:361 KB

Intézmény:
-

Megjegyzés:

Csatolmány:-

Letöltés PDF-ben:Kérlek jelentkezz be!



Értékelések

Nincs még értékelés. Legyél Te az első!


Tartalmi kivonat

Számítógép architektúrák II. 2009 Órai jegyzet (Dr. Broczkó Péter anyagához) AnNo és Broadcast jegyzeteinek frissített változata A jegyzet készítői az esetleges hibákért semmilyen felelősséget nem vállalnak, annak birtoklása az előadáson való részvételt nem pótolja! Created by AnNo & Broadcast, frissítette: Félix 1. Párhuzamos architektúrák • • Mindig a feldolgozás gyorsítása a cél Párhuzamos architektúrák megjelenése o Nagy számítógépek: 60 -as években, szuperskalár és futószalag o Mikrogépek: 80 -as évektől 1.1 A párhuzamosság dimenziói: 1.11 A rendelkezésre álló és a kihasznált párhuzamosság • • A rendelkezésre álló párhuzamosság: az adott programban, illetve általánosabban az adott feladatban rejtőzködő párhuzamosság A kihasznált párhuzamosság: a tényleges feldolgozás során a rendelkezésre álló párhuzamosságból hasznosított rész 1.12 Adat- és funkcionális párhuzamosság

1.121 Adat párhuzamosság Adatpárhuzamosság kihasználása: • • Adatpárhuzamos architektúrákkal Funkcionális párhuzamossággá alakítással, pl.: az adatok feldolgozását ciklusokkal dolgozzuk fel, és a ciklus iterációkat hajtjuk végre párhuzamosan 1.122 Funkcionális párhuzamosság: Fogalma: A feladat logikájában rejlő párhuzamosság, ami minden formális megjelenésben érzékelhető: folyamatábra, pszeudokód, program. 1.1221 A funkcionális párhuzamosság szintje 1.12211 Rendelkezésre álló párhuzamosság szintjei Minél komplexebb, annál durvább a szemcsézettség • Utasítás szint • Ciklus szint • Eljárás szint • Program szint => Felhasználó szint Finomszemcsézettségű párhuzamosság kihasználása tipikusan architektúrával vagy fordítóprogrammal történik, a durva pedig tipikusan OS szinten. 1.12212 Kihasználható párhuzamosság A rendelkezésre álló párhuzamosság kihasználása • Eszközei: o Architektúra o

Operációs rendszer o Fordítóprogram • Szintjei o Utasításszinten(ILP): Párhuzamos architektúrákkal vagy fordítóprogrammal o Szál és folyamat  a programkód legkisebb önállóan végrehajtható egysége  programozó, aki párhuzamos programot használ  fordítóprogram  többszálas operációs rendszer megj.: a ciklus és eljárás szintű párhuzamosságot tipikusan szál vagy folyamat szinten tudjuk kihasználni. -2- Created by AnNo & Broadcast, frissítette: Félix 2 Architektúrák osztályozása 2.1 Az architektúrák Flynn-féle osztályozása • Fogalmak: o SI – Single Instructions: a vezérlő egyetlen utasításfolyamot bocsát ki o MI – Multiple Instructions: a vezérlő több független utasításfolyamot bocsát ki o SD – Single Data: egyetlen utasításfolyamot dolgoz fel o MD – Multiple Data: A végrehajtó egység több utasításfolyamot dolgoz fel Ezek kombinációi SISD SIMD hagyományos szekv. feldolgozás MISD multimédia

feldolgozás MIMD elméleti kategória értelmetlen párhuzamos feldolgozás Értékelés: - előnye: egyszerű és jól átlátható - hátránya: nem mutatja meg a párhuzamosság fajtáját, szintjét és a kihasználásának módját 2.2 Párhuzamos architektúrák javasolt csoportosítása Adatpárhuzamos architektúrák Vektorproc. Neurális SIMD Funkcionálisan párhuzamos architektúrák Szisztolikus Utasításszinten párhuzamos architektúrák Futószalag VLIW Szálszinten Folyamatszinten párhuzamos párhuzamos Szuperskalár shared memory distributed memory (Very Long Instruction Word) Félkövérrel szedve: a félév anyaga 2000 –ig szuperskalár, utána szálszinten párhuzamosítottak. 3 Utasításszinten párhuzamos architektúrák – ILP (ILP = Instruction Level Parallelism) 3.1 Az ILP processzorok fő fejlődési iránya 1.) 2.) 3.) 4.) 1950 -től Neumann-féle hagyományos architektúra Soros kibocsátás, soros végrehajtás SISD 1985-89

Skaláris ILP 1990-93 Szuperskalár ILP Soros kibocsátás, párhuzamos végrehajtás (Gyorsítótár, elágazás feldolg.) SIMD Időbeli párhuzamosság (ez a fő csapásirány) Egyetlen, futószalag elvű processzor Intel 80286 Párhuzamos kibocsátás, párhuzamos végrehajtás (Térbeli párhuzamosság) MIMD Időbeli + térbeli párhuzamosság Több, futószalag elvű végrehajtó egységet tartalmazó processzor (VLIW) 1994-97 Szuperskalár ILP + MM/ 3D kiegészítés Párhuzamos kibocsátás, párhuzamos végrehajtás, utasításokon belüli párh. SIMD Szekvenciális feldolgozás Egyetlen, nem futószalag elvű processzor Intel 8080 -3- Időbeli, térbeli, utasításon belüli párhuzamosság Több, futószalag elvű processzor utasításon belüli párhuzamossággal kiegészítve Created by AnNo & Broadcast, frissítette: Félix 1. Hagyományos szekvenciális architektúra: soros utasítás kibocsátás és végrehajtás 2. Utasítás szintű párhuzamos

feldolgozás: Módszerei: időbeli és térbeli párhuzamosság Időbeli párhuzamosság: Futószalag utasítás Feldolgozás VE1 VE2 VEn (VE: Végrehajtó egység) A futószalag processzorok teljesítményét hatékony ugrás-előrejelzéssel és gyors memória alrendszerrel (gyorsítótárral) növelték, az ezen az úton elérhető teljesítmény határáig. 3. Kibocsátásbeli párhuzamosság - Szuperskalár ILP: Térbeli párhuzamosság: Többszörözés utasítás A végrehajtó egység szakosodott, pl.: fixpontos / lebegőpontos VE1 VE2 VEn A futószalagelvű végrehajtó egységek számát többszörözték. Párhuzamos kibocsátás bevezetése. Eredmény: I. generációs szuperskalár processzorok Probléma: nem győzték „etetni” elég utasítással. Ha kellett egy adat, leblokkol (a függőségek blokkolják a feldolgozást) Megoldás: utasítás várakoztatással (puffer, várakoztató állomás) vagy regiszter átnevezéssel (függő utasítások

függetlenné tételére) Ezzel az általános célú processzorok tekintetében az ilyen irányú teljesítménynövelés kimerült. 80 –as évek VLIW processzorok: a függőségeket a compiler kezelte (statikus) 90 –es évek szuperskalár ILP processzorok: a függőségeket a hardver kezelte (bonyolultabb, de jobb, dinamikus). 4. Utasításbeli párhuzamosság: Szuperskalárok MM/3D kiegészítéssel - Kizárólag a multimédia műveleteket gyorsít (video, audió) - SIMD elven működik - Multimédia esetén függőség nincs, nagymennyiségű adat van, és ezek előre rendelkezésre állnak. 2000 után a fejlődés 2 irányra válik: - evolúciós irány: a feldolgozási szélesség 32 bitről 64 bitre nőtt, meghagyták a korábbi utasításkészletet, a logikai architektúra változatlan. Pl: AMD - revolúciós irány: teljesen új logikai architektúra, VLIW. Pl: Intel 2003-4 körül felhagytak ezzel, többmagos processzorokban látták a jövőt. -4- Created by AnNo

& Broadcast, frissítette: Félix 3.2 Az ILP processzorok iránt támasztott követelmények A. Függőségek A függőségeket a CPU –nak és/vagy a compiler –nek kell kezelnie. Fajtái: Függőségek Adat Vezérlés Erőforrás 3.21 Adatfüggőségek Adatfüggőség Jellege szerint Utasítás szekvenciában Valós függőség (RAW) Műveleti Behívási Operandus típusa szerint Ciklusban Regiszter Memória Álfüggőség WAR WAW 3.211 Utasítás szekvenciában 3.2111 Valós adatfüggőség (RAW – Read After Write) 3.21111 Műveleti adatfüggőség Probléma felvetés: például egy összeadás eredményét duplázni akarjuk (balra léptetés = duplázás) I1 ADD r 3r 2r 1 I2 SHL r3 FADD I1 D/SOr1r2 EADD FSHL I2 r3r1+r2 Mivel az r3-ban a szorzat még nem állt elő, ezért a másik utasítás várakozni kényszerül W/Br3 NOP NOP D/SOr3 ESHL W/Br3 Fetch Decode Source Operand Execution Write Back Probléma kezelése: operandus előrehozással,

extra hardver (regiszter) segítségével, dinamikusan: r0 r1 SRC 0 SRC 1 r2 r3 ALU rslt -5- Valós függőség; csak mérsékelni tudjuk, kiküszöbölni nem CPU érzékeli, hogy szükség lesz még az adatra. Ha igen, ne csak az r3 –ba töltsük vissza, hanem az ALU –ba is. Created by AnNo & Broadcast, frissítette: Félix I1 FADD Dr1r2 I2 FSHL EADD W/Br3 FWD E SHL W/Br3 Minden mai processzor használja. Valós (RAW) műveleti adatfüggőségek mérséklésének általános formája, az operandus előrehozás: operandusok VE Regiszter 3.21112 Lehívási adatfüggőség kezelésének általános formája: gyorsítótár operandus előrehozás (extra HW) regiszter VE 3.2112 Ál-adatfüggőségek 3.21121 WAR (Write After Read) Mit tehetünk, hogy ne írja felül a o Probléma felvetése: következő operandus az előzőt? Szorzás: MUL r3r2r1 // r3  r2* r1 MUL sokkal lassabb, ADD megelőzi!! ADD r2r4r5 o Megoldás: Regiszter átnevezés CPU minden

eredményregisztert átnevez, átmeneti regisztertérbe pakol MUL r3r2r1 ADD r26r4r5 r26 – új, önálló HW (regiszter), saját címtartománnyal 3.21122 WAW (Write After Write) o Probléma felvetése MUL r3r2r1 ADD r3r4r5 o Megoldás: Szintén regiszter-átnevezéssel (történhet statikusan és dinamikusan is) MUL r3r2r1 ADD r36r4r5 -6- Created by AnNo & Broadcast, frissítette: Félix 3.212 Ciklusbeli adatfüggőségek A probléma: do i=2,n x(i):=A(i)*x(i-1)+B(i) end do x(i-1) értékére szükségünk van ahhoz, hogy az x(i) értékét megkapjuk, itt erős a függés! Amíg x(i-1) nem készült el, nem tudunk továbblépni. Kezelése: az algoritmus átalakításával. 3.22 Vezérlés–függőségek FMUL EMUL Feltétlen vezérlésátadás: késleltetett ugrás Probléma felvetése: FJMP MUL Nem az ADD fog következni JMP Címke FADD ADD Értékelése: Mivel a JMP hatására feltétlen ugrás következik be, nem az ADD hanem az SHL a következő. Az ADD utasítás

nem Címke SHL hajtódik végre, így a hátrány: - feleslegesen hívjuk le az ADD utasítást - veszélyeztetjük a regiszter-tartalmakat Nem megoldás, hanem kezelés: ugrási rés (buborék): ez a probléma, ezt kell feltölteni. A buborék mérete: 1. Kétfokozatú futószalagnál: 2-1=1 2. Négyfokozatú futószalagnál 4-1=3 3. n-fokozatú futószalagnál n-1 • Egyszerű compiler (Statikus kezelés) – kétfokozatú futószalag esetén Minden JMP utasítás után beszúr egy NOP –ot MUL JMP címke Értékelés: bár felesleges műveletet végzünk NOP (NOP), de nem veszélyeztetjük a ADD regisztertartalmat Címke SHL • Optimalizáló compiler A compiler megkísérli az ugrási rés feltöltését olyan adatmanipuláló utasításokkal, amelyek az ugrási utasítást fizikailag megelőzik. (példánkban: a MUL utasítás később hajtódik végre) FJMP FMUL FSHL Értékelés: MUL Amennyiben az ugrási rés mérete 1, akkor a feltöltés JMP Címke valószínűsége kb.

85%, ha nagyobb, rohamosan csökken ADD Manapság 15-25 fokozatú a futószalag. címke SHL Alkalmazása: a korai RISC processzoroknál. -7- Created by AnNo & Broadcast, frissítette: Félix 3.23 Erőforrás-függőségek A tervezési szempont: Ne okozzon az erőforrás függőség szűk keresztmetszetet. Kezelése: pl. többszörözéssel B. Szekvenciális (soros) konzisztencia Az utasítás-feldolgozás szekvenciális konzisztenciája Utasítás-végrehajtás Művelet-konzisztencia Kivételkezelés szekvenciális konzisztenciája Behívás Memória-konzisztencia Kivétel-konzisztencia 3.24 Művelet-konzisztencia A probléma felvetése: MUL r3,r2,r1 ADD r4,r5,r6 JZ címke (JUMP When Zero) (akkor ugrik, ha az előző utasítás eredménye 0) Szekvenciális végrehajtás: Először a MUL, aztán az ADD hajtódik végre és a címkére ugrás pedig akkor következik be, ha az ADD eredménye 0. Párhuzamos feldolgozás: A MUL utasítás fejeződik be később, tehát

biztosítani kell, hogy a címkére ugrás csak akkor következzen be, ha az ADD eredménye 0. 3.25 Memória-konzisztencia: nem fogunk foglalkozni vele 3.26 Kivételkezelés soros konzisztenciája Pontos kivételkezelés Erős konzisztencia Pontatlan kivételkezelés Gyenge konzisztencia 3.261 Pontatlan kivételkezelés Probléma felvetése: MUL r3r2r1 ADD r4r5r6 JZ címke Szekvenciális végrehajtás. A MUL utasítás után végrehajtásra kerül az ADD, majd a JZ. Párhuzamos eset: Először az ADD fejeződik be, s tegyük fel, hogy túlcsordul. Amennyiben a processzor a megszakítást soron kívül elfogadja, gyenge konzisztenciát eredményez A MUL utasítás ekkor definiálatlan állapotba kerül, nem lehet tudni, befejeződik-e, vagy sem. A megfelelő állapot helyreállítása csak bonyolult eljárásokkal lehetséges. Alkalmazása: korai szuperskalároknál -8- Created by AnNo & Broadcast, frissítette: Félix 3.262 Pontos kivételkezelés A korszerű

processzorok ezt alkalmazzák, azaz a megszakítást kizárólag az utasítások eredeti sorrendjében fogadja el. Megvalósítása: átrendező-puffer (ReOrder Buffer, ROB) használatával. A processzor csak akkor fogadja el a megszakításkérést, amikor az adott utasítást kiírjuk az átrendező-pufferből. Pl.: Intel processzorcsalád, és a mai korszerű processzorok C. Az ILP processzorok teljesítmény vizsgálata Az utasításszinten párhuzamos processzorok teljesítménynövelésének lehetőségei: 1. A kihasználható párhuzamosság: Függőségek hatása: Erőforrás-függőség: • annyi erőforrást készítünk elő, amennyi szükséges Adatfüggőségek: • az ál-adatfüggőségek nem akadályozzák a feldolgozást • a valós adatfüggőség valódi akadályt jelent • a vezérlési függőség valódi akadályt jelent A szoftverek osztályozása: • általános célú programok: OS és a nem numerikus alkalmazások • tudományos-műszaki programok:

numerikus alkalmazások, mátrix-vektor számolás Az általános célúak esetén az ILP gyorsítási lehetőség kétszeres, a tudományosaknál 2-4 x. Ez igen csekély mértékű gyorsítás, melynek magyarázata a következő: • Értelmezik az alapblokkot, mely vezérlésátadó utasítástól vezérlésátadó utasításig terjed. • Az alapblokkok viszonylag rövidek, 4-5 adatmanipuláló utasítás van bennük. 2. A várható teljesítmény meghatározása - A ciklusokban rejlő párhuzamosság kihasználása Több módszer is létezik, ezek egyike a szoftver-futószalag L L1 Ciklus L2 Ln Az n-szer kibontott ciklus Értékelés: például 2 darab végrehajtó egységgel csak maximum kétszeres gyorsítás érhető el, a ciklus végrehajtás ideje a felére csökken (függőségek lassíthatják a végrehajtást). Ebből következik, hogy a gyorsítás tényleges mértéke erőforrásfüggő -9- Created by AnNo & Broadcast, frissítette: Félix - Elágazások

kezelése • Ha a függőségeket tökéletesen tudnánk kezelni, akár 100x –ra növelhetnénk a feldolgozás sebességét. Ezt nem tudjuk megvalósítani • Végrehajthatnánk minden elágazási ágat, de n darab 2 irányú elágazás 2n elágazási irányt jelentene, ez a gyakorlatban kivitelezhetetlen • A gyakorlatban minden elágazásnak megkeressük a várható irányát, és abban az irányban hívjuk le az utasításokat. o Amennyiben a becslés helyes volt, folytatjuk a feldolgozást a megkezdett irányban. o Amennyiben a becslés helytelen volt, a hibás irányba lehívott utasításokat eldobjuk, és elkezdjük a feldolgozást a helyes irányban. • Minden feltételes utasításnál mindkét irányba elindul a feldolgozás, s amikor a feltétel kiértékelésre került, akkor a hibás irányba lehívott utasításokat eldobjuk Mindezek eredményeképpen, az elérhető gyorsulás: • Általános célú programok esetén kb. 4-szeres • Tudományos célú

programoknál 10-20 –szoros 3.3 Időbeli párhuzamosság: Futószalagos feldolgozás (pipeline) Gyakorlati példa: n: elemek száma (munkahelyek száma) t: egy munkahelyen töltött idő T: egy termék elkészítésének ideje T=n*t A termék egyidejűleg n db munkahelyen készül => t idő alatt készül el a termék! Számítástechnikai vonatkozás: • Hagyományos feldolgozás t1 t2 F1 E1 • F2 E2 F3 I1 I2 Futószalagos feldolgozás: I1 I2 I3 F1 t3 E3 I3 t1 t2 E1 F2 E2 F3 E3 F4 I4 Futószalagos feldolgozás előfeltételei: o Az F és az E szakasz időigénye egyezzen meg o F és E egymástól független, önálló hardver legyen, a független működés érdekében o Az egyik szakasz kimenete legyen a következő szakasz bemenete o Minden fokozat órajelre lép működésbe - 10 - Created by AnNo & Broadcast, frissítette: Félix Nagy utasításszám esetén elvben (függőségek) megkétszereződik az utasítás-feldolgozási sebesség

Ötlet: bontsuk 4 szakaszra az utasítás-feldolgozási ciklust: Fetch, Decoding, Execution, Write Back. Eredménye: elvben megnégyszereztük a feldolgozási sebességet (a függőségek ezt korlátozzák) 3.31 A futószalagos feldolgozás jellemzői A fokozatok száma A fokozatok számának növekedésével előbb-utóbb elkezd csökkenni a teljesítmény a függőségek miatt: Sok utasításlehívás esetén sokat is kell eldobni. Teljesítmény Fokozatok száma Példa: • • • • 1980 RISC 1982 RISC II 2000 Manapság 2 fokozatú 3 fokozatú ~10 fokozatú 15-25 fokozatú (nem nő tovább) Újrafeldolgozás: mai processzorok mind tartalmazzák F D E W/B Elveknek megfelelő megvalósítás F D E W/B Újrafeldolgozásos megvalósítás A fixpontos szorzás/osztásnál igen hosszú lenne, ha a részeredményeket műveletenként kimentenénk a regiszterekbe. Helyette a részeredményeket az E fokozat végéről visszavezetik az E fokozat bemenetére. Operandus

előrehozás: mai processzorok mind tartalmazzák Szinkron-aszinkron feldolgozás: napjainkban a processzorok mind szinkron elven működnek - 11 - Created by AnNo & Broadcast, frissítette: Félix 3.32 A futószalagos feldolgozás alkalmazási területei - Hagyományos feldolgozás (összehasonlításul): F D E W/B I1 I2 - Előlehívás: az előző utasítás visszaírási fázisát és az aktuális utasítás lehívási fázisát párhuzamosítjuk. W/B F F   Elvben maximum 1 óraciklus nyereség utasításonként, ezt a függőségek mérséklik Pl.: a 60 -as évek nagyszámítógépeinek egy része, valamint az Intel 8086 - A végrehajtási fokozat futószalagos elvű megvalósítása I1 E1 E2 E3 E4 Pl.: I2 I1 E1 E2 E3 E4 I3 E1 E2 E3 E4 I4 E1 E2 E3 E4 I5 E1 E2 E3 Nagyszámítógépek: a 60-as vektorprocesszorai Mikroprocesszoroknál ez a fejlődési lépcsőfok kimaradt. • • E4 A teljes utasítás-feldolgozási fázisban: F D E

WB I2 F D E WB I3 F D E WB I4 F D E WB I5 F D E Pl.:   Az utasításlehívás elvben óraciklusonként történik, amit a függőségek akadályoznak Példa: • 60 –as évek nagyszámítógépei • Intel 80286 WB - 12 - Created by AnNo & Broadcast, frissítette: Félix 3.33 A futószalagok logikai felépítése Két szint: I. szint: A futószalagok funkcionális kialakítása Minden utasítás kategóriában célszerű kialakítani 1-1 cél-futószalagot, pl.: FP, FX, L/S, ugrás (B) F F D /S/O E WB Aritmetikai futószalag (pl. összeadás) E Ugrási futószalag (B: Branch) II. szint: Egyes fokozatok által végrehajtandó elemi műveletek specifikálása első szint második szint (elemi műveletek) F E MAR  PC MDR  (MAR) IR  MDR PC  PC + 1 DEC  IR PC  DEC címrész 3.34 A futószalagok általános fizikai felépítése - 60-80-as évek (futószalagok) Elválasztó Regiszter VE Elválasztó Regiszter I. fokozat (F) VE

Elválasztó Regiszter II. fokozat (D) Elválasztó regiszter: rejtett regiszter - 90-es évek (szuperskalárok) Elválasztó regiszter és Multiplexer VE VE Elválasztó regiszter és Multiplexer VE VE VE Elválasztó regiszter és Multiplexer VE I. fokozat (F) II. fokozat (D) - 13 - Created by AnNo & Broadcast, frissítette: Félix  - - -  A futószalagok fizikai felépítése: Univerzális futószalag:  A hardver elemek számát minimalizálták, de emiatt lassú  Egy fizikai futószalagon több logikai futószalagot valósítanak meg  Pl. RISC I Master futószalag (Pentium I.):  Az egyik futószalag (master) minden utasítás feldolgozására alkalmas  A másik csak bizonyos utasításkörben (csak egyszerű utasítás feldolgozásoknál) Dedikált futószalagok  Minden logikai futószalagot igyekeznek külön fizikai futószalagon megvalósítani. Pl.: PowerPC 604 L / S Load, Store Alkalmazási lehetőségek: B Branch (ugrás) FP Floating Point

FX egyszerű FX egyszerű FX összetett F D CO W/B FP L/S + B L/S és B nem dedikáltak, de kettő van belőlük L/S + B Megjegyzések: • FX egyszerű: + és • FX összetett: * és / (újrafeldolgozás) • Azért kell 2 db „FX egyszerű”, hogy ne merüljön fel erőforráshiány • Konzisztencia fokozat (CO): FX gyorsabb, mint FP, ezt kezeli le Konzisztencia megvalósítása: Az eredeti programsorrendnek megfelelő sorrendben kell visszaírni az eredményeket, ezt biztosítja a CO egység (kivárja hogy a másik utasítás is megérkezzen) RISC-CISC futószalagok a CISC futószalagok tipikusan 2 fokozattal hosszabbak, mint a RISC futószalagok, mivel tartalmazniuk kell a címszámítási és a gyorsítótárban fordulást biztosító fokozatokat is. - 14 - Created by AnNo & Broadcast, frissítette: Félix 3.35 A futószalagos feldolgozás bevezetésének következményei • A memória szűk keresztmetszetének mérséklése o Probléma: A memória lassabb,

mint a processzor => szűk keresztmetszet Hagyományos feldolgozás: F D E WB F D E WB utasítás-lehívás minden negyedik óraciklusban, 1 Fetch Futószalagos feldolgozás: F D E WB 4 Fetch ugyanannyi idő alatt => szűk keresztmetszet F D E WB Míg a szekvenciális feldolgozásnál az utasításonként történik az operatív tárba fordulás, a futószalagos feldolgozásnál elvben óraciklusonként. Ezt az operatív tár (DRAM) nem képes biztosítani. o Kezelése: Gyorsítótárak (cache) bevezetésével. 80 –as évek közepén a futószalagos feldolgozás megjelenésekor robbanásszerűen terjedtek el a gyorsítótárak. • Elágazás-kezelés o Probléma:  Feltétlen elágazásnál az ugrási rés (buborék) méretének megfelelő számú utasítás lehívását blokkolja az elágazási utasítás. Ha „n” a futószalag fokozatainak száma, akkor az ugrási rés mérete n-1  Feltételes elágazás esetén ehhez hozzájön a feltétel kiértékelése

és az ugrási cím számítása is (1-2 óraciklus) o Kezelése:  A korai RISC gépek: késleltetett ugrás  A korai CISC gépek: hardveres úton (a dekódolás fokozatban megtörténik a feltétel kiértékelése és az ugrási cím kiszámítása)  A későbbi CISC gépek: fix előrejelzést (elágazás becslést) alkalmaztak: feltételezték, hogy mindig ugrik. Ennek a jelentősége meghatározó az utasításszintű párhuzamosságban, hiszen az elágazási utasítások nem blokkolják az utasítás feldolgozását, hanem az folytatódhat a becslés szerinti irányban. Pl. Intel 80486 Valós függőség: A feltétel kiértékelésében szereplő operandusok nagy késleltetésű (látenciájú) utasítás végrehajtásától függ. Pl. a:=X/Y, majd if a < 10 Ez a futószalag processzoroknál és az első generációs szuperskalár processzoroknál blokkolja a további utasítások lehívását, a 2. generációs szuperskalároknál: spekulatív elágazásbecsléssel oldják

majd fel. - 15 - Created by AnNo & Broadcast, frissítette: Félix 3.4 Párhuzamos kibocsátás, szuperskalár processzorok 3.41 Az I és II generációs szuperskalár processzorok közös jellemzői Feldolgozási ráta: óraciklusonként feldolgozott utasítások száma 1. Többszörözés: az időbeli párhuzamosság mellett megjelent a térbeli is térbeli párhuzamosság (többszörözés) időbeli párhuzamosság (futószalagos feldolgozás) VE1 VE2 VE3 2. Párhuzamos kibocsátás, hagyományos utasításfolyam feldolgozás Utasításgyorsítótár regisztertér 3. Függőségek kezelése dinamikus: extra hardver segítségével 3.42 Az I generációs szuperskalár processzorok (keskeny szuperskalár processzorok) ~ 1990-ben jelentek meg. a>0 a ≥ 0 ugrik 3.421 Jellemzői:  Közvetlen (nem pufferelt) utasítás-kibocsátás  Statikus elágazás-becslés: a programkód alapján, pl:  Gyorsítótárak (szűk keresztmetszet miatt) a < 0 soros folytatás o

Külön adat- és utasítás-gyorsítótár o Kétszintű gyorsítótár:  L1 gyorsítótár: a processzor lapkáján helyezkedik el  L2 gyorsítótár: különálló lapkán helyezkedik el o Portok száma tipikusan 1 –nél több - 16 - Created by AnNo & Broadcast, frissítette: Félix Közvetlen (nem pufferelt) utasítás-kibocsátás Elve: Utasításablak: óraciklusonként egyszerre lehívott utasítások száma Utasítás gyorsítótár • VE1 Dekódolás Függőség-ellenőrzés Kibocsátás • VE2 VEn Működési alternatívák: Utasítás-ablak feltöltése: o A kibocsátott utasításokat egyenként pótoljuk o Az utasítás-ablak teljes kiürülése után az egészet egyszerre pótoljuk Az utasítások feldolgozása történhet: o sorrendben o sorrenden kívül Gyakorlati megvalósítás: • Sorrendben dolgozzák fel az utasításokat • Egyszerre töltik fel az utasításablakot Példa: Jelölés: : Független utasítás : Függő utasítás Ci:

óraciklus i1, i2, i3: utasítások (az utasításablakban helyezkednek el) : Utasítás-kibocsátás Ci Kibocsátjuk a független i1 utasítást Ci+1 A következő óraciklusban az i2 utasítás függősége már feloldódott, ezért kibocsátható mind az i2, mind pedig az i3. Ezzel az utasításablak kiürült. Ci+2 Feltöltjük a kiürült utasításablakot 3 további utasítással. Közülük az i4 és az i5 független, ezért kibocsátjuk, míg az i6 a függőségek feloldásáig vár a kibocsátásra Ci+3 i6 Ci+4 i9 Ci+5 i6 utasítás kibocsátásra kerül i8 i7 Utasításablakot feltöltjük. I7 feloldása után nincs függőség 0 db kibocsátott utasítás i9 i8 i7 Összes kibocsátása (nincs függőség) - 17 - Created by AnNo & Broadcast, frissítette: Félix 3.422 Egy első generációs szuperskalár RISC processzor modellje Az utasítás-feldolgozási rendszert alrendszerekre bontjuk Utasításgyorsítótár Első rész Utasítások

lehívása, utasításablak feltöltése Lehívás Utasítás-ablak Dekódolás Adat-gyorsítótár Regisztertár Kibocsátás Forrásoperandusok Végrehajtás Visszaírás Store Regisztereredmény Load Hátsó rész Utasításablak ürítése utasítások végrehajtása Az ábra alrendszerek sorozatát tartalmazza. Az egész rendszer teljesítményét a legszűkebb keresztmetszet határozza meg. Jellemzők: • Az első rész az utasításokat hívja le, és az utasításablak feltöltését végzi el • A hátsó rész végzi az utasítások feldolgozását és az utasítás-ablak ürítését. 3.4221 Kibocsátási szűk keresztmetszet Eddigi szűk keresztmetszetek: • A memória okozta szűk keresztmetszet: gyorsítótárakkal kezeljük => nem blokkol • Elágazási szűk keresztmetszet: statikus becsléssel kezeljük => nem blokkol Függőségek hatásai: • Erőforrásfüggőség: nem akadály, annyit állítunk be, amennyire szükségünk van •

Adatfüggőség: valódi függőség mindig blokkol, és első generációs szuperskalároknál az ál-adatfüggőség is • Vezérlésfüggőség: statikus elágazásbecslés Az előzőek következtében: bár az utasításablak mérete o RISC esetében 3 , de a feldolgozási ráta 1 utasítás / óraciklus alatt van o CISC esetében 2 a függőségek okozta blokkolások miatt. Az első generációs szuperskalárok megvalósítása: Jellemzően kétféle: • Két univerzális végrehajtó egységgel (Pentium I) • Vagy 2-4 dedikált végrehajtó egységgel (Alpha 21064) - 18 - Created by AnNo & Broadcast, frissítette: Félix Esettanulmány: Pentium I Utasítás gyorsítótár (RISC utasítások) FP futószalag - A belső sínrendszer 64 bites - Processzor • Két futószalag: o U (master) futószalag: minden utasítás feldolgozására alkalmas (univerzális) o V futószalag: csak az Intel által egyszerűnek titulált utasítások feldolgozására alkalmas pl. FX,

L/S, B • Mindkét futószalag 5 fokozatú o F, D, gyorsítótár elérés, E, W/B • Csak akkor működik párhuzamosan, ha mindkét futószalag egyszerű utasítást dolgoz fel • Az FP utasításokat az U futószalag előfeldolgozza, s magát a számítást egy három fokozatú kiegészítő lebegőpontos futószalag végzi - Gyorsítótár: 2 db, egyenként 8KB méretű van belőle, utasítás-, ill. adatgyorsítótár - 19 - Created by AnNo & Broadcast, frissítette: Félix 3.43 Második generációs (széles) szuperskalár processzorok 3.431 Jellemzői: - Kibocsátási szűk keresztmetszet kiküszöbölése • Dinamikus utasítás-ütemezés • Regiszter-átnevezés - Elágazások kezelése: dinamikus előrejelzéssel, ugrástörténet figyelembevételével - Kifinomult gyorsítótár alrendszer 3.432 Dinamikus utasítás-ütemezés: • • Pufferelt utasítás-kibocsátás Sorrenden kívüli kiküldés Elve: RISC esetében Utasítás puffer

Utasítás-gyorsítótár Várakoztató állomások Utasítás-ablak Lehívás Dekódolás Kibocsátás Függőség vizsgálat Kiküldés VE1 Kibocsátás Első rész Függőség vizsgálat Kiküldés VE2 Függőség vizsgálat Kiküldés VEn Kiküldés Hátsó rész Működése: 1. Első rész: Mivel a kibocsátás során nincs függőségvizsgálat, ezért a lehívás-dekódolás-kibocsátás a nominális rátával működhet (RISC: 4 db utasítás / óraciklus) 2. Hátsó rész: Óraciklusonkét akár több tucat utasítás közül is kiválaszthatja a CPU a függetleneket, és azokat kiküldi a megfelelő végrehajtó egységek felé. A kiküldés sorrenden kívül történik - 20 - Created by AnNo & Broadcast, frissítette: Félix 3.433 Regiszter-átnevezés • • • • • 2. generációs szuperskalár processzoroknál jelent meg A CPU minden célregiszterhez hozzárendel egy átnevezési regisztert A CPU az adott regiszterre forrásregiszterként

történő hivatkozásokat is kezeli. Az utasítás-feldolgozás végén a processzor az átnevezési regiszterek tartalmát átmásolja az architekturális regiszterekbe, és az átnevezési regisztert felszabadítja. Regiszter átnevezések eredményeképpen az ál-adatfüggőségek teljesen kiküszöbölődnek, ennek eredményeképpen a várakoztató állomásokban lévő független regiszterek száma nő 3.434 Második generációs RISC processzorok végrehajtási modellje Utasítás gyorsítótár Lehívás Dekódolás Átnevezés Kibocsátás forrás operandusok Első rész Hátsó rész Architekturális regisztertár Utasítás-ablak Kiküldés Adatgyorsítótár Végrehajtás Store Eredmények Visszaírás az eremények átnevezése Load Működése: Átnevezési regisztertár Első rész: • Az utasításablak feltöltése • Minden alrendszer a nominális rátával működik Hátsó rész: • A várakoztató állomásból a független utasítások kiküldésre

kerülnek VE -khez • A visszaírás során o az eredményeket az átnevezési regiszterbe írják o Az átnevezési regiszterből pedig az architekturális regiszterbe - 21 - Created by AnNo & Broadcast, frissítette: Félix Jellemző átbocsátó képesség: • A kiküldési ráta tipikusan 5-8 utasítás/ciklus • A végrehajtási alrendszer rátája még nagyobb, mivel minden esetben győznie kell a feldolgozást. CISC feldolgozás • A CISC processzoron belül kialakítunk egy RISC magot • A CPU a beérkező CISC utasításokat lefordítja RISC utasításokká, majd ezeket dolgozza fel • Egy CISC utasítás ~1,2-1,5 RISC utasítássá alakítható át átlagosan • A CISC kibocsátási ráta 3 utasítás/ciklus, a RISC magon belül ez ~ 4 RISC utasítás/ciklussá alakul 3.44 Adatfolyam végrehajtási modell Központi várakoztató állomás VE VE VE VE Kiküldési feltételek áttekintése: • Erőforrás függőség • Elágazások: dinamikus

utasításfeldolgozás kezelés • Ál-adatfüggőségek: regiszter átnevezéssel feloldjuk • Valós adatfüggőségek: akadályozzák a kiküldést - 22 - Created by AnNo & Broadcast, frissítette: Félix Esettanulmány: Pentium Pro • • • 1995: eredetileg 133Mhz, 14 fokozatú fixpontos futószalag Központi várakoztató állomás 20 db RISC –szerű utasítást képes befogadni, fixpontost és lebegőpontost egyaránt. Az átnevezéseket a ROB kezeli  A szekvenciális konzisztencia szintén ROB által biztosított - 23 - Created by AnNo & Broadcast, frissítette: Félix • operandus lehívás, átnevezés, kibocsátás:  kibocsátáshoz kötött operandus lehívás  minden célregisztert átnevez, erre a ROB –ot használja fel  várakoztató állomásban RISC utasítás-szerkezet: r1 <= r2@r3 MK R1 R2 A2 R3 A3 A: állapotjelzőbit  Amennyiben a forrásoperandus értéke még nem áll rendelkezésre, akkor a regiszterazonosítót írja be

a várakoztató állomásba, és az állapotbitet 0 –ra állítja  Ha a forrásoperandus a ROB –ban is megtalálható, akkor az architekturális regiszterrel szemben a ROB –beli értéket helyezi előnybe • kiküldés  az idősebb utasításokat részesíti előnyben • végrehajtás  Azért van 6 db VE egy porton, hogy helyet takarítson meg a lapkán  IU – integer unit IDIV – egész osztás ISH – léptetés • Visszaírás: 2 helyen kell visszaírni: o Várakoztató állomásba  Kiveszi azt a regiszter azonosítót, amelynek az eredménye elkészült  Ezt felülírjuk az eredménnyel  Állapotbitet 1 –re állítjuk o ROB –ból  A későbbi utasítások számára, melyek ugyanerre a regiszterre hivatkoznak  A ROB –ba való kiírás szabályai: • Az összes megelőző utasítás már kiírásra került • RISC utasítások csak akkor írhatók ki, ha az adott CISC –hez tartozó összes RISC elkészült • Amikor a CISC eredményét kiírta a ROB

–ból az architekturális regiszterbe, akkor felszabadítja az adott utasításnak a ROB –ban elfoglalt helyét - 24 - Created by AnNo & Broadcast, frissítette: Félix A 2. és a 3 generációs szuperskalárok tervezési tere, megvalósítása, és alrendszerei átbocsátóképességének növelése Elágazásokkal kapcsolatos alapismeretek: 1. Elágazások fajtái 2. Feltételes elágazások használata - Operandusok összehasonlítása - Eredmények vizsgálata I. állapottér módszerrel és közvetlen adatvizsgálattal II. Operandusok összehasonlítása 3. Elágazás statisztika - Feltétlen elágazások aránya - A feltételes és a feltétlen utasítások aránya - A teljesülés és a nem-teljesülés aránya 1. Az elágazások fajtái Feltételes Feltétlen egyszerű feltétlen elágazás eljárás hívás visszatérés az eljárásból (GOTO, JMP) (címet menti) (címet visszatölti) cikluszáró utasítások egyéb feltételes utasítások (IF, CASE)

Feltétlen elágazások − egyszerű feltétlen elágazások mindig ugrik − eljárás hívás az ugrás előtt elmentik a visszatérési címet (LIFO elvű tárolás) − visszatérés az eljárásból felhasználva a visszatérési címet Feltételes elágazások − a cikluszáró feltételes elágazás − egyéb feltételes elágazások (if, case szerkezet) 2. A feltételes elágazások használata Két okból használjuk: • Az utasításban meghatározott művelet eredményét vizsgáljuk, pl.: nulla, negatív, átvitel • Két operandus összehasonlítása: ha megegyeznek, ugrunk, ha nem, soros folytatás = visszavezethetjük a műveletek eredményének vizsgálatára, kivonjuk egymásból őket és az eredményt vizsgáljuk, tehát gyakorlatilag visszavezettük az előző esetre = A következőekben ismertetett mindkét módszer tartalmaz kifejezetten a két operandus összehasonlítására vonatkozó utasítást. 3.44111 A műveletek eredménye alapján történő

feltétel vizsgálat I. Állapottér alkalmazásával = Kétféle tér: a művelet eredményének tere, és az eredmény által meghatározott állapottér = Az állapotvizsgálatot a CPU automatikusan végzi, és az eredményt beírja • feltétel kódba (CC) vagy • jelzőbitekbe (flag) = Működése • aktualizálása: minden művelet után a CPU karbantrtja az állapotteret a megfelelő biteket bebillenti a jelzőbitek közül (pl.: nulla az eredmény, túlcsordulás) - 25 - Created by AnNo & Broadcast, frissítette: Félix • ezt követően a programozó tesztelheti a számára szükséges jelzőbitet, és annak értékétől függően ugrás, vagy soros folytatás = Példa: A programozó szeretné elkerülni a nullával való osztást - megoldás1: a művelet elvégzése után közvetlenül kérdezzük le az állapotteret add r1,r2,r3 beq zero div r5,r4,r1 zero: // r1 ← r2+r3 // ha az r1=0, akkor ugrik a zero címkére // r5 ← r4/r1 - megoldás2: Egy korábbi

művelet során kaptuk meg az eredményt, és azt regiszterben vagy operatív tárban eltároltuk. Ehhez a vizsgálathoz minden architektúra biztosít utasítást. Legyen az eltárolt eredményünk r1 –ben: teq r1 // ez az r1 tartalma alapján beállítja az állapotteret beq zero div r4,r5,r1 // r4 ← r5/r1 zero: = Példák: IBM 360/370, Intel, Motorola, Power PC, SPARC = Értékelés  hátrányok - Ebben az esetben a tesztelés további időt igényel (párhuzamosítható) - Kiegészítő hardvert is igényel - Megszakítás esetén az adattér mellett az állapotteret is le kell menteni, s ehhez az operációs rendszerre is szükség van - Alapvetően koncepció alapvetően szekvenciális szemléletű - Párhuzamosítás esetén:  Több jelzőbit-készletet alakítanak ki, pl: • az Intel és Motorola: 2db SPARC: 3db PowerPC: 8db ▪ Minden utasításhoz hozzá kell rendelni a megfelelő jelzőbit készletet ▪ Tesztelésnél nekünk a megfelelő jelzőbit-készletet kell

tesztelni - Az állapottér aktualizálása és tesztelése szekvenciális, ami valós függőséget eredményez. Ez visszafogja a teljesítményt, lassít - (A közvetlen adatvizsgálat kíválóan alkalmas a párhuzamos feldolgozásra) előnyök - A tárgykód 1-7% -kal rövidebb (nem jelentős manapság) - A jelzőbit (flag) vizsgálata rendkívül gyors = Következtetés: A hátrányok súlyosabbak, mint az előnyök, tehát a jövőben inkább a közvetlen adatvizsgálat elterjedése várható  - 26 - Created by AnNo & Broadcast, frissítette: Félix II. Közvetlen adatvizsgálat útján Nem értelmezett az állapottér = Fajtái: - két utasításos megoldás: - Az egyik utasítással tesztelünk, és az eredményt egy regiszterben tároljuk - A másik utasítással a regiszter tartalmát vizsgáljuk Példa: add r1, r2, r3 cmpeq r7, r1 // ha az r1 tartalma 0, az r7 tartalma logikai igaz lesz beq r7, zero // ha az r7 igaz, ugrik a zero címkére div r5, r4, r1 zero

(Pl: AMD AM29000) - egy utasításos megoldás - Egyetlen utasításban hajtódik verge a tesztelés és a feltételvizsgálat Példa: add r1, r2, r3 beq r1, zero // akkor ugrik a zero címkére, ha az r1 értéke nulla div r5, r4, r1 zero (Pl: Cray szuperszámítógép, DEC Alpha processzorok) = Értékelés: - Párhuzamos feldolgozásra is kíválóan alkalmas - Jövőbeli fejlesztésekben várható az alkalmazása 3. Az elágazások statisztikája = Az általános célú programokban az utasítások 20% feltételes vezérlés-átadás, tudományos-műszaki célú programok esetén 5-10% = A feltételes elágazási utasítások alapblokkokra tagolják a programot = Ha minden 5. utasítás feltételes elágazás, akkor 4db utasítás párhuzamosítható = A gyakorlatban (ha a CPU nem képes feltárni a feloldatlan elágazásokat), Ezzel a módszerrel maximum 2x-es gyorsítást érhetünk el − A feltétlen és a feltételes elágazások aránya Grahorski szerint (1990) Feltétlen

elágazások 1/3 Cikluszáró feltételes 1/3 Egyéb feltételes 1/3 − A teljesült és a nem teljesült elágazások aránya Forrás Gromovski Fajta Feltétlen Feltételes cikluszáró Egyéb feltételes Összeg Egyéb I. Egyéb II. végeredmény Teljesült Mind n-1 (~ mind) 1/6 5/6 75% 57-99% 75% Nem teljesült 1/6 1/6 25% 1-43% 25% Következtetés: mivel az elágazások 75% -a ugrik, ezért a teljesítmény növelés során kiemelten kell foglalkozni a teljesülő ág gyorsításával, mint a nem-teljesülőével. Pl. Futószalag processzorok fix előrejelzése: tipikusan mindig ugrik - 27 - Created by AnNo & Broadcast, frissítette: Félix Az utasításlehívás alrendszer átbocsátó képességének növelése Probléma Kezelése ugrási irány becslése az elágazási cél leggyorsabb elérése feloldatlan elágazások kezelése Probléma: − Ideális esetben a 2. generációs szuperskalár processzorok lehívási rátája 4 utasítás/óraciklus − Ezt

akadályozza:  Feltételes és feltétlen elágazások (a cím kiszámítása időt vesz igénybe)  A gyorsítótáraknál a találathiány (cache miss) − Mindez tovább élesedik: 1. minél nagyobb a feldolgozási ráta 2. minél több fokozatból áll a futószalag 1. Feldolgozási ráta - 1. generációs szuperskalárok: Mivel a feldolgozási rátája 1 utasítás/óraciklus alatt van, a kibocsátási ráta 3 utasítás/óraciklus. Nagy a puffer, a vázolt probléma nem éles - 2. generációs szuperskalárok: A feldolgozási és a kibocsátási ráta is tipikusan 4 utasítás/óraciklus. Csekély a puffer, nagyon éles a probléma. 2. A futószalag hossza - hosszú futószalagnál növekszik a veszteség a hibás elágazás-becslés miatt - Pentium Pro: 12 fokozat - Pentium 4: 20 fokozat - P4 Prescott: 30 fokozat Kezelése: - az ugrási irány pontosabb becslése: dinamikus - az elágazási irány leggyorsabb elérése: BTAC és BTIC módszer - feloldatlan elágazások:

spekulatív elágazás-kezelés Az ugrási irány becslése lokális egyszintű fix statikus 1 bites globális kétszintű dinamikus 2 bites 3 bites - 28 - kombinált Created by AnNo & Broadcast, frissítette: Félix Lokális elágazás-becslés Csak az aktuális elágazási utasítást vesszük figyelembe (a globális esetében több elágazási utasítást is figyelembe vesszük, a környezetét) - Lokális egyszintű fix: tipikusan mindig ugrik a futószalag processzorok használták - Lokális egyszintű statikus: - 1. generációs szuperskalárok használták Programkód alapján működik a becslés (ciklust is jól fel lehet ismerni, ezért jó a becslés) Lokális egyszintű dinamikus: bimodal branch prediction Elve: ugrástörténeten alapján működik Megvalósítása: IFAR (Instruction Fetch Address Register): Ez felel meg a PC –nek BHT - (Branch History Table): telített számláló y IFAR BHT, kétbites telített számláló (jelen esetben) x

Jellemzői: - y tengely:  A CPU minden elágazási utasításhoz létrehoz egy bejegyzést  Ezeket indexeli az IFAR legkisebb helyiértékű bitjei szerint - x tengely:  A számláló lehet 1, 2 vagy 3 bites, mi mindig 2 bitest feltételezünk  Az egyes bejegyzések telített számlálók, azaz dekrementálás legkisebb értéke 00, inkrementáláskor pedig 11. A lehetséges értékei: 11 erős ugrás 10 gyenge ugrás 01 gyenge soros folytatás 00 erős soros folytatás a becslés az első bithelyiérték alapján történik. Működése: - Becslés: = Amennyiben az aktuális elágazási utasítás először fordul elő, akkor a táblázat aktuális értéke 11 lesz (ugrást feltételezünk, mert nagy valószínűséggel ugrik). = Ha már korábban futott az aktuális elágazási utasításunk, akkor a táblázat értékének megfelelően történik a becslés. - A táblázat aktualizálása: A becslés után, az elágazási feltétel kiértékelésekor, ha a tényleges folytatási

irány: • ugrás, akkor a telített számláló inkrementálódik, • soros folytatás, akkor a telített számláló dekrementálódik - 29 - Created by AnNo & Broadcast, frissítette: Félix A számláló mérete: 1. amennyiben a BHT viszonylag nagy (pl 1024 bejegyzés), akkor minden elágazási utasításhoz egy-egy önálló bejegyzés tartozik 2. amennyiben kicsi, akkor több elágazású utasítás osztozik egy bejegyzésen, ezért a becslés rosszabb lesz Értékelés:  Amennyiben minden elágazási utasításhoz hozzá lehet rendelni egy-egy önálló bejegyzést, akkor a becslés 93,5%-ban helyes  Pl. Pentium I - A lokális kétszintű dinamikus becslés Megvalósítása: IFAR 16 db bejegyzés 0 1 1 0 legkisebb helyiérték alapján találja meg a BHT -t telített számláló BHT Jellemzői Brench History Table 1.szint: BHT - y tengely  A CPU minden elágazási utasításhoz hozzárendel egy bejegyzést a BHT -ban  Ezeket a bejegyzéseket az IFAR

legkisebb helyiértékű bitjei szerint indexeli - x tengely  Esetünkben 4 bites léptetőregiszter  Legutóbbi 4 kiértékelés eredményét tartalmazza  Az ugrástörténet tartalmazza: • 0, ha soros folytatás volt • 1, ha ugrott 2.szint: számláló - y tengely  Ha a BHT 4 bites, akkor a számláló bejegyzéseinek száma 16  A BHT táblázatban az adott elágazási utasítás ugrástörténetét címként felhasználva történik az egyes számláló-tábla bejegyzések címzése (pl 0110) - x tengely:  2 bites telített számláló  Értékei megegyeznek a lokális egyszintű előrejelzővel - 30 - Created by AnNo & Broadcast, frissítette: Félix Működése: - Becslés: = Az aktuális elágazási utasításnak megfelelő BHT bejegyzésre ugrik; az adott BHT bejegyzésben szereplő bitmintának megfelelő számlálócímre ugrik abban a számlálóban, amely az adott bejegyzéshez tartozik. = A számláló értékének megfelelően történik a becslés. -

Aktualizálás: A becslés után, az elágazási feltétel kiértékelésekor karbantartja a • Léptetőregiszter tartalmát és a • Számláló tartalmát Példa: Váltakozva, hol ugrik, hol nem ugrik, tehát a bitmintája 01010101010 Lehetséges esetek 4 bites metszetben: - 0101, azaz 5 decimálisan: ezt mindig soros folytatás követi - 1010, azaz 10 decimálisan: ezt mindig ugrás követi A BHT tábla adott bejegyzéséhez tartozó számlálótábla lehetséges értékei: 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 00 11 Összesen 2 bejegyzést használunk, a többi üres. 100% -os pontossággal becsül az első két lefutás után (ekkor áll be a soros folytatás) Szabályos minták esetén tökéletes a becslés. Értékelés: − előny: a helyes becslés aránya 97,1% szabályos minták esetén. − hátrány: viszonylag lassú a két szint miatt további hardver szükséges hozzá Pl.: Pentium Pro, Pentium MMX - 31 - Created by

AnNo & Broadcast, frissítette: Félix Globális elágazás-becslés Elve: Az aktuális elágazási utasításon kívül a környezetének elágazási utasításait is figyelembevesszük Az egymást követő elágazások közötti kapcsolatot igyekszik kihasználni  if (a < 0)  if (a ≥ 0) ha az egyik igaz, a másik hamis! Megvalósítása: léptető regiszter 0 1 0 0 1 1 0 1 0 1 1 1 0 1 BHT Telített számláló Értékelés: − gyorsabb mint a kétszintű lokális előrejelzés − becslése jobb mint az egyszintű, de rosszabb ,mint a kétszintű lokális előrejelzés Kombinált   A lokális és a globális előrejelzés kombinálása A kétszintű pontossága és az egyszintű gyorsasága - 32 - Created by AnNo & Broadcast, frissítette: Félix Az ugrási irány lehető leggyorsabb elérése Bevezetés A. Hagyományos feldolgozás (elágazás-becslés nélkül) MAR <- PC A PC –ből a cím eljut az operatív tárba MDR <- (MAR) Az operatív

tárból eljut az utasítás az MDR –be (Utasítás lehívása) A PC forrásai: Formalizált leírás PC ← IPC PC ← PC+1 PC ← BTA Forrás CPU PC inkrementálása Elágazási utasítás Megjegyzés a program induló címe soros a folytatás Ugrás következik IPC Initial PC (kezdeti érték) BTA Branch Target Address Megvalósítása: PC MAR Processzor Memória MDR cím utasítás Operatív tár B. szuperskalár feldolgozás Az IFAR forrásai: - IIFA – Initial Instruction Fetch Address - inkrementálás - BTA – Branch Target Address Egyéb jellemző fogalmak: - IFA – Instruction Fetch Address - BTI – Branch Target Instruction o Probléma: - Az elágazási utasítások miatti blokkolódás kiküszöbölésére alkalmazzuk az elágazás-becslést. - Az elágazási cél mielőbbi elérése azért fontos, mert az elágazási utasítások többsége (~ 75% -a) ebben az irányban folytatódik. o Kezelése: - A lehető legkevesebb ciklussal próbáljuk elérni az

ugrási célt. - Részleteiben nagyon sokféle megoldás létezik, mi egy egyszerűsített változatot nézünk meg. - 33 - Created by AnNo & Broadcast, frissítette: Félix Utasítás-gyorsítótár: Address, Instruction A Branch Target Instruction I I+1 I+2 I+3 4 byte 4 byte 4 byte 4 byte ↓ BTI ↓ BTI+1 ↓ BTI+2 ↓ BTI+3 - Minden bejegyzés 16 byte hosszú - Ezek 4db, egyenként 4 byte hosszú utasítást tartalmaznak - Az utasítások igazítottak az ugrási cél utasítás mindig az első pozíción helyezkedik el - Gyors utasítás-gyorsítótár: az ugrási cím meghatározása utáni óraciklusban az utasítás-gyorsítótárból kiolvasásra kerül az ugrási cél utasítás - Lassú utasítás-gyorsítótár: Mindezt cask 2-3 óraciklus alatt képes biztosítani Számítási/lehívási módszer (Compute/Fetch scheme) Ez az ugrási cím elérésének a természetes módszere (hagyományos módszer) Megvalósítása: A IIFA inkrem. BTA I I+1

I+2 I+3 IFAR utasítás gyorsítótár lehívás BTI BTI+1 BTI+2 BTI+3 Folyamata: = a CPU meghatározza induló program kezdőcímét (IIFA), és betölti az IFAR-ba = IFAR inkrementálódik, az adatmanipuláló utasítások feldolgozásra kerülnek = Elágazási utasítás esetén futószalag fokozattal vagy címszámítóval meghatározásra kerül az ugrási cím = A kapott címmel felülírjuk az IFAR tartalmát = A vezérlés átadásra kerül az IFAR –ban lévő ugrási címre Példa: címke: i1 b címke i3 // branch it1 // target1 - 34 - Created by AnNo & Broadcast, frissítette: Félix Időigény: i1 b F D F E D W/B cím számítás ugrás b+1 F időveszteség Értékelés - előnye: = egyszerű = nem igényel extra hardvert - hátrány: = a címszámítás és az ugrás szekvenciális = például ciklus estén, ha az n-szer fut akkor n-szer kell kiszámítani ugyan azt a címet felesleges munka, időveszteség, mert ezt előre is meg tudnánk

mondani BTAC módszer (Branch Target Address Cache) Lényege: az ugrási címet cask egyszer számoljuk ki, és azt tároljuk a BTAC –ben; a következőkben az ott eltárolt címet használjuk fel Megvalósítás: IIFA inkrem. BTA A I I+1 I+2 I+3 IFAR BA utasítás gyorsítótár BTA BTAC lehívás BTI BTI+1 BTI+2 BTI+3 Működése: = az ugrási utasítások címe és a hozzájuk tartozó ugrási célcím beírásra kerül a BTAC -be = amennyiben az IFAR –ban olyan ugrási utasítás címe van, amelyhez tartozik bejegyzés a BTAC –ben, akkor - az utasítás-gyorsítótár elérésével egyidejűleg a BTAC -ből kiolvasásra kerül az ugrási cím. - a következő óraciklusban pedig már az ugrási címre adódik át a vezérlés Időigény: i1 b i+1 F D F E D F W/B Nincs időveszteség D E Értékelés: - Előny: = Nem képez szekvenciát az ugrási cím meghatározása és az ugrás. = Csak egyszer kell meghatározni az ugrási címet - Hátrány = Extra

hardvert igényel: BTAC Példa: Pentium I - 35 - Created by AnNo & Broadcast, frissítette: Félix Nullciklusú utasítás Lényege: - Feltétlen elágazás esetén nem a BA, hanem a BA-1 utasítást tároljuk a BTAC-ben - Amikor az IFAR –ban a feltétlen elágazási utasítást megelőző cím található, akkor kilo vasásra kerül a feltétlen elágazás célcíme a BTAC –ből - A következő óraciklusban a vezérlés az ugrási célcímre adódik át, tehát a feltétlen elágazási utasítás feldolgozása kimarad! Időigény: i1 it1 F D F E D W/B hiányzik a feltétlen elágazási utasítás! Értékelés: - Előnye: = Az ugrási cél elérése során egy óraciklust nyertünk (gyorsabb, mintha soros folytatási ágon mennénk tovább; 3 óraciklus veszteség helyett 1 óraciklus nyereség!) Megvalósítása: olyan mint az előző rajz, csak BA helyett BA-1-t kell írni! BTIC módszer (Branch Target Instruction Cache) Lényege: igen lassú az

utasítás-gyorsítótár, 2-3 óraciklus késéssel tudja csak szállítani az ugrási cél utasítást. Ezt a késést hasznosítjuk ezzel a módszerrel Megvalósítás: IIFA inkrem. BTA A IFA IFAR BA BTI BTA+ vagy BTI+ BTIC I utasítás gyorsítótár DEC Működése: - A BTIC egy kicsi és gyors gyorsítótár - Ebbe behívásra kerülnek a legutóbbi néhány = elágazási utasítás címe, vagy = az elágazási utasítások közül azok címe, melyek az ugrási irányban folytatódtak - A BTIC további részében = az ugrási utasítás (BTI) ÉS = az azt követő néhány utasítás címe (BTA+) VAGY = az azt követő néhány utasítás (BTI+) - Amennyiben az IFAR –ban olyan elágazási utasítás címe kerül, melyhez tartozik bejegyzés a BTIC –ben, akkor az ugrási címen lévő utasítás a BTIC –ből kerül lehívásra, sokkal gyorsabban, mint az utasítás-gyorsítótárból megtörténhetne. - Példa: AMD AM29000 - 36 - Created by AnNo &

Broadcast, frissítette: Félix A feloldatlan elágazások kezelése Probléma: Amennyiben a feltétel kiértékelése valamilyen nagy késleltetésű művelet (pl. osztás) eredményétől függ, feloldatlan vagy függő elágazásról beszélünk Példa: x:=a/b if x <0 // valós, termelő-fogyasztó függőség Ez a futószalag és az első generációs szuperskalároknál blokkol Kezelése: a 2. generációs szuperskalároknál: - Spekulatív elágazás-kezeléssel, azaz az alapblokkok kiterjesztése ún. virtuális alapblokkokká virtuális alap blokk 1.alap blokk Feltételes elágazás Adatmanipuláló utasítás Spekulatív irány 2.alap blokk Ez a becslés több alapblokkot is magába foglal! Az alapvető mutató a spekuláció mélysége, azaz hány alapblokkot foglalhat magába a spekuláció: - Ahhoz, hogy a várakoztató állomásban több tucat utasítás lehessen, igen mély spekulációra van szükség. - Másrészt mély spekuláció esetén a hibás

becslés miatti büntetés igen súlyos, azaz igen sok már lehívott utasítást kell eldobni. - Ökölszabály: minél nagyobb a várakoztató állomás kapacitása, annál pontosabb becslésre vvan szükség. Működése: - Feloldatlan elágazás esetén megbecsülik a folytatási irányt, és annak megfelelően hívják le az utasításokat. - Mikor kiértékelődik a feltétel, = amennyiben a becslés helyes volt, folytatódik a feldolgozás = amennyibeb hibás, akkor a hibás irányba lehívott utasításokat eldobják, és megkezdődik a lehívás a helyes irányban A spekulációs mélység: 2-7 Pl. Power 2 esetén: 2 Power PC esetén: 4 A spekulatív elágazás-becslés infrastruktúrális előfeltételei: - Átnevezés: ez biztosítja a spekulatív iránybeli eredmények kezelését - ROB (átrendezőpuffer): a hibás irány esetén a könnyű visszajátszás lehetőségét biztosítja - 37 - Created by AnNo & Broadcast, frissítette: Félix A dekódolási

alrendszer gyorsítása Futószalagos dekódolás utasítás gyorsítótár Szuperskalár dekódolás Utasítás puffer Utasítás puffer F D/K utasítás gyorsítótár FDK Dekódolás Kibocsátás Dekódolás Kibocsátás 1 db 4 db Probléma: A szuperskalár processzorok esetében - Többlet feladatok = CISC esetén RISC –szerű utasításra fordítás = Átnevezés = Szabad helyek meglétének ellenőrzése • az átnevezési pufferben (ROB) • a várakoztató állomáson = Megfelelő várakoztató állomás kiválasztása = Egy várakoztató állomásba egy óraciklusban több utasítás kibocsátása - Mennyiségileg is többet kell elvégezni = CISC esetében 3 utasítás / óraciklus = RISC esetében 4 utasítás / óraciklus Megoldás: elődekódolással Megvalósítás: Célja: A 2. szintű gyorsítótár és az utasítás-gyorsítótár között elvégzett műveletekkel mérsékeljük a dekódolás komplexitását és gyorsítjuk az utasítás-feldolgozás

első részét 2-es szintű gyorsítótár ↓ pl.: 128 bit/óraciklus Elődekódoló ↓ pl.: 148 bit/óraciklus utasításFeladatai: gyorsítótár - CISC esetben az utasítás kezdetének és a végének felismerése (a CISC változó hosszúságú utasítás, a RISC hossza fix) - Az utasítás típusának meghatározása (Load/Store, aritmetikai, stb) - Ugrási utasítások felismerése - A műveleti kód behatárolása Példák: az AMD K5 CISC processzor minden byte -hoz hosszá tesz 3 bitet => 60% -kal több RISC: tipikusan 4-7 bitet tesznek hozzá => 10-12% -os növekedés - 38 - Created by AnNo & Broadcast, frissítette: Félix Átnevezés - Hatóköre = Kezdetben: részleges átnevezés, cask bizonyos adattípusok esetén = Később: teljes átnevezés (napjainkban ez a jellemző) - Megvalósítása: = Összevont architekturális és átnevezési regiszterek = Külön architekturális és külön átnevezési regiszterek = Az átnevezés megvalósítása

ROB –ban - Mérete: = Összevont: 1-38 bejegyzés = Különálló: 4-12 bejegyzés = ROB esetén: 20 bejegyzés (Pl. Pentium Pro) - Átnevezési ráta: = Megegyezik a kibocsátási rátával (ha kisebb lenne a ráta, visszafogná a kibocsátást, ha nagyobb lenne, torlódást eredményezne) Kibocsátási alrendszer - A feloldatlan vezérlésfüggőségek kezelése: spekulatív elágazás-kezeléssel - Az ál-függősségek kezelése: regiszterátnevezéssel - A kibocsátási szűk keresztmetszet kezelése: várakoztató állomással - A kibocsátás sorrendben történik, utasításablakhoz illesztve Kibocsátási ráta - CISC és RISC egyaránt 4 utasítás/óraciklus (itt a CISC utasítások már RISC -szerű utasításokká vannak lefordítva) Utasítás-várakoztatás - Hatóköre: = Kezdetben: cask bizonyos utasításokat várakoztattak, pl. a lebegőpontosakat = Napjainkban már minden utasítástípust várakoztatnak Megvalósítása a várakoztató puffernek várakoztató

állomás egyedi várakoztató állomások minden végrehajtó egységhez külön várakoztató állomás ROB (ReOrder Buffer) csoportos várakoztató állomás tipikusan adattípusonként külön várakoztató állomásokat központi várakoztató állomás egyetlen végrehajtó állomás szolgálja ki az összes adattípust - A várakoztató állomások kapacitása: = egyedi: 2-4 utasítás = csoportos: 8-16 utasítás = központi: Pentium Pro esetén 20 utasítás - A bemeneti kapuk száma: = az egy óraciklus alatt beolvasható utasítások számát adja meg = egyedi: 1 = csoportos esetében pedig 2-4 - 39 - Created by AnNo & Broadcast, frissítette: Félix Operandus behívási politikák Kibocsátáshoz kötött operandus lehívás - Megvalósítása Lehívás Dekódolás Kibocsátás Forrásoperandus azonosítója ops – source (forrás) operandus opd – destination operandus v – valid bit VÁ – várakoztató állomás VE – végrehajtó egység

Architekturális regiszter VÁ 1. MK opd ops1 v ops2 v MK opd ops1 v ops2 v v VÁ n. kiküldés VE 1. VE n. - Infrastruktúra az érvényesség-jelzéshez = Az adatregiszterek után 1 bites kiegészítés, az állapotbit jelzi az érvényességet = 1, ha érvényes, 0, ha nem = Ez megtalálható mind az adatregiszterben, mind pedig a várakoztató állomás forásoperandusainál - A forrás-operandusok érvényességének ellenőrzése = A kibocsátás során a várakoztató állomásba kerül - a műveleti kód és - az eredmény regiszterazonosítója = A forrás-operandusok regiszter-azonosítói eljutnak az architektúrális regiszterbe = A lehetséges esetek: - amennyiben az adott regiszterben lévő adat valid-bitje 1, akkor maga az érték bemásolásra kerül a várakoztató állomásba, és a valid-bitet 1-re állítja - amennyiben az adott regiszterben lévő adat valid-bitje 0, akkor az adott regiszter-azonosító kerül be a várakoztató állomásba, és a

valid-bitet 0 –ra állítja. - Az eredmények frissítése két helyen is szükséges: = Az architektúrális regiszterben: az eredményt beírjuk, és a valid-bitet 1-re állítjuk = A várakoztató állomásokban: az eredménysínre fel kell helyezni mind az eredményt, mind pedig a regiszter-azonosítót; asszociatív keresést kell végrehajtani a várakoztató állomásban az adott regiszter-azonosítóval, s ahol megtaláltuk, ott a regiszter-azonosítót felülírjuk az eredménnyel, és a valid-bitet 1-re állítjuk. Ezt a keresést el kell végezni minden olyan várakoztató állomásban, ahol ez az eredmény előfordulhat (például fixpontos eredmény esetén az összes fixpontos várakoztató állomásban) - Értékelés = hátrányai • A szűk keresztmetszetet jelentő dekódolási/kibocsátási fázist terheli, lassít • A várakoztató állomásokban maguk az értékek vannak, ezért azok hosszúak • Két helyen kell az eredményekkel karbantartást végezni =

előnyei • Igen gyors a valid bitek kiértékelése - 40 - Created by AnNo & Broadcast, frissítette: Félix Kiküldéshez kötött operandus-behívás - Megvalósítása: Lehívás Dekódolás Kibocsátás kibocsátás VÁ 1. MK opd ops1 ops2 MK opd ops1 ops2 VÁ n. kiküldés architekturális regiszter VE 1. v VE n. - A forrás-operandusok érvényességének ellenőrzése = Kibocsátáskor a megfelelő várakoztató állomásba juttatjuk a műveleti kódot és a cél valamint a forrásoperandusok azonosítóit = A CPU ellenőrzi a forrás-operandusokhoz tartozó regiszterek valid-bitjét az architekturális regiszterben - Az eredmények frissítése: = Amennyiben az utasítás mindkét forrás-operandusának valid-bitje 1, akkor  Az adott utasítás műveleti kódja és eredmény azonosítója kiküldésre kerül a végrehajtóegységbe, továbbá  A forrás-operandusok azonosítói kiküldésre kerülnek az architekturális regiszterbe, ahonnan az

értékek kis késleltetéssel elindulnak a végrehajtó egységbe = Az eredményekkel kizárólag az architektúrális regisztert kell karbantartani - Értékelés = előnyei  Felszabadítja a szűk keresztmetszetet jelentő dekódolási/kibocsátási fázist  gyorsít  A várakoztató állomások csak regiszter azonosítót tartalmaznak  rövid  Az eredményekkel csak az architektúrális regisztert kell frissíteni = Hátránya = A forrás-operandusok érvényességének ellenőrzése bonyolultabb - 41 - Created by AnNo & Broadcast, frissítette: Félix Kiküldési alrendszer - - - Kiválasztási szabály • Azon utasítások küldhetők ki, melyek operandusai, rendelkezésre állnak adatfolyam számítási modell Döntési szabály • Ha ugyanazon végrehajtó egységhez több utasítás is kiküldhető, tipikusan az idősebb utasítást küldik ki Kiküldési sorrend • Sorrenden kívül történik a kiküldés (a várakoztató állomásból a VE –hez)

Kiküldési ráta - Egyedi várakoztató állomások esetén: 1 utasítás/óraciklus - Csoportos várakoztató állomások esetén: 2-4 utasítás/óraciklus Az üres várakoztató állomások kezelés - Korai időkben: az üres várakoztató állomáson is keresztülment - Napjainkban: megkerülik (bypass) - 42 - Created by AnNo & Broadcast, frissítette: Félix Szekvenciális konzisztencia: ROB (ReOrder Buffer) Megjelenése: - 1988 Smith, a pontos megszakításkezelés miatt - Napjainkban: a szekvenciális konzisztencia Infrastruktúra: - Körpuffer, melynek van: - Kezdeti mutató: az első üres helyre mutat - Végmutató: a kiírandó bejegyzésre mutat (az ábra lehet, hogy hibás, valószínűleg gond van a mutatókkal) Elve: Működése: - A kibocsátás sorrendben történik, így a kibocsátás sorrendjében folyamatosan töltjük fel a körpuffert a kezdeti mutatónak megfelelően - A processzor követi a kiküldést • Végrehajtás alatt van-e •

Befejeződött-e a végrehajtása - A kiírási feltétel (Kiírás: az adott architekturális regiszterbe vagy a memóriába írjuk ki az eredményt) • Az adott utasítás végrehajtása befejeződött • Minden, ezt megelőző utasítás kiírásra került - Megjegyzés: a RISC –szerű utasítások eredményét nem lehet kiírni, csak az eredeti CISC utasítás eredményét - A kiírt bejegyzés helyét a CPU felszabadítja Spekulatív elágazás-kezelés - - Infrastruktúra: • a ROB minden bejegyzéséhez hozzárendelünk egy állapotbitet, mely jelzi, hogy az adott bejegyzés spekulatív-e, vagy sem További kiírási feltétel: • Spekulatív utasítást nem szabad kiírni Pontos megszakítás-kezelés: • Csak az adott eredménynek az architekturális regiszterbe való kiírása után szabad elfogadni a megszakítást. - 43 - Created by AnNo & Broadcast, frissítette: Félix Utasításon belüli párhuzamosság Duál műveletes utasítások SIMD FX VLIW

FP A processzorszintű logikai architektúra kiterjesztése: Evolúciós irány korai napjaink Teljesen új processzorszintű logikai architektúra: Revolúciós irány I. Dual-műveletes utasítások - - Fogalma: egy utasításon belül két különböző művelet Például: • multiply-add: x= a*b+c • load-op: utasítás betöltés és végrehajtás • shift-add Numerikus feldolgozást gyorsítják, főleg RISC, ritkábban CISC környezetben alkalmazzák 70-es években jelentek meg II. SIMD – Simple Instruction Multiple Data - - Fogalma: egyetlen utasításon belül több operanduson ugyanazt a műveletet hajtjuk végre A SIMD megjelenése jelenti a 3. generációs szuperskalárok megjelenését Alapvető jellemzői: • A processzorszintű logikai architektúra kiterjesztése • Az L2 gyorsítótár felkerült a processzor lapkájára (a több operandus miatt) • A rendszerarchitektúra szűk keresztmetszetének bővítésére megjelent az AGP sín, kifejezetten a

videokártya számára A SIMD utasítások kizárólag a multimédia műveleteket gyorsítják, az általános célú feldolgozásra nincsenek hatással. fajtái: • fixpontos multimédia:  hang és a pixeles képfeldolgozás  2-8 operandus egy utasításban • Lebegőpontos multimédia  vektoros képfeldolgozásban  2-4 operandus egy utasításban - 44 - Created by AnNo & Broadcast, frissítette: Félix Fixpontos multimédia feldolgozás Hangfeldolgozás A probléma: A hang analóg jel, gitalizálnunk kell ún. analóg-digitális átalakítóval (A/D konverter) Y maximálisan ábrázolható érték, pl.: +127 (amplitudó) 0 t minimálisan ábrázolható érték, pl.: -128 Amplitúdó • A fixpontos ábrázolás minimális és maximális értékét hozzárendeljük a hanghullám minimális és maximális értékéhez Lehetőségek: • 8 bit  256 féle diszkrét érték • 16 bit  65536 féle diszkrét érték • 24 bit (finomabb) Felbontás: a mintavétel

gyakorisága Ha 50 kHz a mintavétel gyakorisága, akkor 1 másodperc alatt 50000 mintát veszünk Alkalmazás kHz Digitális telefon 8 Audio CD 44,1 DVD 48 DVD (minőségi) 96 Ábrázolásmód: • Korábban: fixpontos (a lejátszás gyorsaságát biztosították ezzel) • Napjainkban: már létezik lebegőpontos is (hardverfeltételek 90 –es évek végén lettek meg) A tárolóhely-igényre példa: • CD, 2 bájtos tárolásmód: 44000*22= ~ 170 kbyte/sec (sztereo esetben) • 1 perc esetén: 60*170 ~ 10 Mbyte/perc. A gyakorlatban tömörítünk, kb a tizedére Feladat: nagy mennyiségű fixpontos adat tárolása, továbbítása és feldolgozása. A tömörítés csak a tárolás problémáját oldja meg, a feldolgozását nem! - 45 - Created by AnNo & Broadcast, frissítette: Félix Pixeles képfeldolgozás A probléma: Pixelek - képpontok színmélységei: • 1 bit = fekete-fehér • 8 bit = 256 féle szín (EGA képernyők) • 16 bit = 64k féle szín

(High-Color) • 24 bit = 224 féle szín (True-Color) Felbontás: Minél sűrűbb a raszter, annál kisebb egy pixel, és annál finomabb az ábrázolás, a leképezés Pl.: 800x600 1280x1024 Példa a tárolóigényre: Képméret 1 bájt 800*600 480.000 byte 1280*1024 ~1,3 Mbyte 2 bájt 960.000 byte ~2,6 Mbyte Feladat: nagy mennyiségű fixpontos adat tárolása, továbbítása és feldolgozása - 46 - Created by AnNo & Broadcast, frissítette: Félix A probléma kezelése (feldolgozás): • • Architekturális megoldások o Multimédia kártyával o A CPU multimédiás bővítésével (csak ezzel foglalkozunk) Intel o 1997 –ben jelent meg az MMX kiterjesztés (Matrix Math eXtension vagy MultiMedia eXtension) o Logikai architektúra  pakolt adattípus: 64 bit hosszú db 8 4 2 Pakolt byte Pakolt félszó Pakolt szó Hossz 8 bit 16 bit 32 bit Teljes hossz 64 bit 64 bit 64 bit  Hagyományos feldolgozás: 2 kép összeadása 1. Első kép első pontját

betöltjük az AC –be (akkumulátor) 2. Második kép első pontját hozzáadjuk az AC -hez 3. Az AC tartalmát elmentjük a memóriába 4. Inkrementálás után vissza az 1 lépéshez 800*600 -as képnél 480 ezerszer fut le, 1280x1024 esetén 1,3 milliárdszor!  Pakolt adattípus, pl. pakolt bájt esetén MM1 + + + + + + + + = = = = = = = = MM2 ~ 8-szoros gyorsítás! MM3  • A multimédia adatok sajátosságai - A teljes adatállomány egyidejűleg rendelkezésre áll - A feldolgozás során nincsen elágazás - Tehát ez csak a multimédia feldolgozást gyorsítja fizikai architektúra - 80 bites lebegőpontos regisztereket alkalmazza a 64 bites pakolt adattípus feldolgozására - A 64 bites pakolt adattípus hossza jól illeszkedik a 64 bites belső sínhez (CPU –n belül) - A Pentium I. két darab MMX egységgel rendelkezik - 47 - Created by AnNo & Broadcast, frissítette: Félix Lebegőpontos multimédia feldolgozás Vektoros

képfeldolgozás: - A vonalakkal, görbékkel határolt objektumok a geometriai jellemzőikkel leírhatóak - 2D feldolgozás: = pl. egyenes: két ponttal, kör: középpont koordinátáival és a sugárral írható le = A CPU ezekből az adatokból meghatározza az objektumot = A képet sokszögekre, háromszögekre bontjuk, azaz objektumokká = Egy kép akár 20.000 objektumból is állhat = Műveletek: * Forgatás, kicsinyítés, nagyítás, színnel való kitöltés * Textúra: összemossa az éles határokat = Feladat: a fixpontos feldolgozáshoz képest jóval kevesebb adat, melyen műveletet kell végrehajtani, ezért a lebegőpontos formátumot választjuk (a fixpontos pontatlan) - 3D feldolgozás: = A harmadik dimenziót is kezeljük = Biztosítjuk, hogy az egyenesek a végtelenben összetartsanak = Atmoszférikus hatás: * A közelebbi tárgyak élesebbek * A távolabbi tárgyak „kékesebbek”, elmosódottabbak - 3D film: = A szemünk inerciája miatt minimum 15

kép/másodperc sebességgel kell vetíteni = Pl. 20000 objektumból álló kép * 15 kép/mp = 300.000 objektum kiszámítása / másodperc = Feladat újbóli megfogalmazása: a fixpontos feldolgozáshoz képest kevesebb, de abszolút értelemben sok lebegőpontos adattal végrehajtandó számítás A feladat kezelése: 1998 –ban megjelent az Intel Katmai (MMX2) processzor - Logikai architektúra: = Körülbelül 70 új utasítás = 128 bites adattípusai: * 4x32 bit (egyszeres pontosság) * 2x64 bit (kétszeres pontosság) = Ezek megfelelnek az IEEE lebegőpontos szabványnak - Fizikai architektúra = 8 db új, 128 bites regiszter = Az Intel 15 év után először vezett be új regisztereket = Ehhez az operációs rendszernek is együtt kell működnie, a megszakítások kezeléséhez - Teljesítmény: = 3 GHz –es számítógép egyszeres pontosság esetén kb. 12 milliárd lebegőpontos műveletet képes végrehajtani! (a HD filmekhez ez már kevés) - 48 - Created by AnNo

& Broadcast, frissítette: Félix VLIW – Very Long Instruction Word - Működési elve: utasítás gyorsítótár VE1 VLIW - - - VE2 VEn Regisztertár Függőségek kezelése • statikusan, compiler által • hátránya:  A compiler erősen technológiafüggő, azaz ismernie kell a fizikai architektúrát pl.:  a végrehajtó egységek számát  a végrehajtó egységek késleltetését  a gyorsítótár késleltetését • előnye:  Egyanolyan fokú párhuzamosítás mellett a VLIW sokkal egyszerűbben megvalósítható  Ennek köszönhetően jelenhetett meg csaknem 10 évvel korábban, mint a szuperskalár processzorok Utasítások: teljesen új logikai architektúra: teljesen új, hosszú utasításszavú utasítások Fajtái, fejlődése • Széles vagy korai VLIW-ek  80 -as években jelentek meg  Pl.: TRACE processzor:  256-1024 bit hosszú utasításszavak  7-28 utasítást tartalmaztak  Igen hamar leállították a forgalmazását, ennek oka: a

compiler nagyfokú technológiai függősége • Keskeny VLIW-ek  90 –es évek 2. felében jelentek meg, közben sokat fejlődtek a compilerek  Fajtái:  Digitális jelfeldolgozás, multimédia Az ok ugyanaz, mint SIMD esetén: nincs benne feltételes elágazás  Általános célú feldolgozás o Szerverpiac: Intel Itanium (2004 után visszatértek a szuperskalár formához, több maggal) o Hordozható gépek: Transmeta Crusoe (Változó tápfeszültség-szint; a VLIW alacsonyabb fogyasztású) - 49 -