Számítógép architektúrák II.

Hasonló dokumentumok
SzA19. Az elágazások vizsgálata

SZÁMÍTÓGÉP ARCHITEKTÚRÁK

Számítógép architektúrák záróvizsga-kérdések február

Számítógép architektúrák. A mai témák. A teljesítmény fokozás. A processzor teljesítmény növelése

A mai témák. Számítógép architektúrák. CISC és RISC. A teljesítmény fokozás. További előnyök. A RISC gondolat

Operandus típusok Bevezetés: Az utasítás-feldolgozás menete

5-6. ea Created by mrjrm & Pogácsa, frissítette: Félix

Összeadás BCD számokkal

Számítógép architektúrák. A processzor teljesítmény növelése

Számítógépek felépítése

Számítógép Architektúrák

Digitális rendszerek. Utasításarchitektúra szintje

VLIW processzorok (Működési elvük, jellemzőik, előnyeik, hátrányaik, kereskedelmi rendszerek)

Számítógép Architektúrák

8. Fejezet Processzor (CPU) és memória: tervezés, implementáció, modern megoldások

SZÁMÍTÓGÉP ARCHITEKTÚRÁK

Számítógépek felépítése, alapfogalmak

SZÁMÍTÓGÉP ARCHITEKTÚRÁK

8. Fejezet Processzor (CPU) és memória: tervezés, implementáció, modern megoldások

Számítógép felépítése

Számítógép Architektúrák I-II-III.

egy szisztolikus példa

Hardver Ismeretek IA32 -> IA64

Bevezetés az informatikába

A mikroprocesszor egy RISC felépítésű (LOAD/STORE), Neumann architektúrájú 32 bites soft processzor, amelyet FPGA val valósítunk meg.

A fordítóprogramok szerkezete. Kódoptimalizálás. A kódoptimalizálás célja. A szintézis menete valójában. Kódoptimalizálási lépések osztályozása

Nagy adattömbökkel végzett FORRÓ TI BOR tudományos számítások lehetőségei. kisszámítógépes rendszerekben. Kutató Intézet

Számítógép architektúrák. Korszerű architektúrák

Számítógép Architektúrák I-II-III.

Programozási nyelvek 6. előadás

Flynn féle osztályozás Single Isntruction Multiple Instruction Single Data SISD SIMD Multiple Data MISD MIMD

Processzor (CPU - Central Processing Unit)

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.

Máté: Számítógép architektúrák

Számítógép architektúrák Korszerű architektúrák Mai program Pentium P6 processzor (esettanulmány) Párhuzamosítások a CPU-n kívül

Központi vezérlőegység

SZÁMÍTÓGÉPEK BELSŐ FELÉPÍTÉSE - 1

A processzor hajtja végre a műveleteket. összeadás, szorzás, logikai műveletek (és, vagy, nem)

Számítógépek felépítése, alapfogalmak

Architektúra, megszakítási rendszerek

Adatok ábrázolása, adattípusok

Assembly. Iványi Péter

Digitális rendszerek. Mikroarchitektúra szintje

5. KOMBINÁCIÓS HÁLÓZATOK LEÍRÁSÁNAK SZABÁLYAI

találhatók. A memória-szervezési modell mondja meg azt, hogy miként

Memóriák - tárak. Memória. Kapacitás Ár. Sebesség. Háttértár. (felejtő) (nem felejtő)

Egyszerű RISC CPU tervezése

Párhuzamos programozási platformok

Számítógép architektúrák. Korszerű architektúrák

7. Fejezet A processzor és a memória

VEZÉRLŐEGYSÉGEK. Tartalom

Számítógép architektúra

Programozási nyelvek a közoktatásban alapfogalmak I. előadás

Máté: Számítógép architektúrák

1. Az utasítás beolvasása a processzorba

Készítette: Trosztel Mátyás Konzulens: Hajós Gergely

Magas szintű optimalizálás

VI. SZOFTVERES PROGRAMOZÁSÚ VLSI ÁRAMKÖRÖK

Párhuzamos programozási platformok

Első sor az érdekes, IBM PC ra alapul: 16 bites feldolgozás, 8 bites I/O (olcsóbb megoldás). 16 kbyte RAM. Nem volt háttértár, 5 db ISA foglalat

elektronikus adattárolást memóriacím

4. Fejezet : Az egész számok (integer) ábrázolása

Adatszerkezetek Tömb, sor, verem. Dr. Iványi Péter

Architektúra, cache. Mirıl lesz szó? Mi a probléma? Teljesítmény. Cache elve. Megoldás. Egy rövid idıintervallum alatt a memóriahivatkozások a teljes

Grafikus csővezeték 1 / 44

Utasításszintű architektúra Adattér

A 32 bites x86-os architektúra regiszterei

Mikroprocesszor CPU. C Central Központi. P Processing Számító. U Unit Egység

A mikroszámítógép felépítése.

Bevezetés. Többszálú, többmagos architektúrák és programozásuk Óbudai Egyetem, Neumann János Informatikai Kar

Szekvenciális hálózatok és automaták

Véges állapotú gépek (FSM) tervezése

Adatszerkezetek Adatszerkezet fogalma. Az értékhalmaz struktúrája

Számítógép architektúrák I. Várady Géza

Utasításfajták Memóriacímzés Architektúrák Végrehajtás Esettanulmányok. 2. előadás. Kitlei Róbert november 28.

Mikrorendszerek tervezése

Járműfedélzeti rendszerek I. 3. előadás Dr. Bécsi Tamás

Laborgyakorlat Logikai áramkörök számítógéppel segített tervezése (CAD)

Digitális technika II. (vimia111) 5. gyakorlat: Tervezés adatstruktúra-vezérlés szétválasztással, vezérlőegység generációk

Programozás alapjai. 10. előadás

Számítógép Architektúrák

Mintavételes szabályozás mikrovezérlő segítségével

Bevezetés a számítástechnikába

Digitális technika VIMIAA01 9. hét Fehér Béla BME MIT

Digitális technika VIMIAA01 9. hét

Adatelérés és memóriakezelés

SZÁMÍTÓGÉP-ARCHITEKTÚRÁK I

Aritmetikai utasítások I.

2. Számítógépek működési elve. Bevezetés az informatikába. Vezérlés elve. Külső programvezérlés... Memória. Belső programvezérlés

2017/12/16 21:33 1/7 Hardver alapok

Gábor Dénes Főiskola Győr. Mikroszámítógépek. Előadás vázlat. 2004/2005 tanév 4. szemeszter. Készítette: Markó Imre 2006

6. óra Mi van a számítógépházban? A számítógép: elektronikus berendezés. Tárolja az adatokat, feldolgozza és az adatok ki és bevitelére is képes.

7.hét: A sorrendi hálózatok elemei II.

ATMEL ATMEGA MIKROVEZÉRLŐ-CSALÁD

GPGPU: Általános célú grafikus processzorok cgpu: computational GPU GPGPU = cgpu Adatpárhuzamos gyorsító: dedikált eszköz, ami eleve csak erre

SZÁMÍTÓGÉPES ARCHITEKTÚRÁK

A mikroprocesszor felépítése és működése

Dr. Sima Dezső. Architektúrák III. Készítette: Kappel Krisztián. komment by Krysz, Felix (2010, 2009 ősz)

Assembly utasítások listája

Ismerkedjünk tovább a számítógéppel. Alaplap és a processzeor

Átírás:

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!

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 Created by AnNo & Broadcast, frissítette: Félix 1.1 A párhuzamosság dimenziói: 1.1.1 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.1.2 Adat- és funkcionális párhuzamosság 1.1.2.1 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.1.2.2 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.1.2.2.1 A funkcionális párhuzamosság szintje 1.1.2.2.1.1 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.1.2.2.1.2 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 -

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 MISD MIMD hagyományos multimédia elméleti kategória párhuzamos szekv. feldolgozás feldolgozás értelmetlen 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 Funkcionálisan párhuzamos architektúrák Vektorproc. Neurális SIMD Szisztolikus Utasításszinten párhuzamos Szálszinten Folyamatszinten architektúrák párhuzamos párhuzamos - 3 - shared distributed Futószalag VLIW Szuperskalár memory memory 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 1985-89 1990-93 1994-97 Neumann-féle hagyományos architektúra Skaláris ILP Szuperskalár ILP Szuperskalár ILP + MM/ 3D kiegészítés Soros kibocsátás, soros végrehajtás SISD Soros kibocsátás, párhuzamos végrehajtás (Gyorsítótár, elágazás feldolg.) Párhuzamos kibocsátás, párhuzamos végrehajtás (Térbeli párhuzamosság) Párhuzamos kibocsátás, párhuzamos végrehajtás, utasításokon belüli párh. SIMD SIMD MIMD Szekvenciális feldolgozás Időbeli párhuzamosság (ez a fő csapásirány) Időbeli + térbeli párhuzamosság Időbeli, térbeli, utasításon belüli párhuzamosság Egyetlen, nem futószalag elvű processzor Intel 8080 (Very Long Instruction Word) Egyetlen, futószalag elvű processzor Intel 80286 Több, futószalag elvű végrehajtó egységet tartalmazó processzor (VLIW) Több, futószalag elvű processzor utasításon belüli párhuzamossággal kiegészítve

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 VE 1 VE 2 VE n (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 VE 1 VE 2 VE n 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 -

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 3.2.1 Adatfüggőségek Adat Vezérlés Erőforrás Jellege szerint Adatfüggőség Operandus típusa szerint Utasítás Ciklusban Regiszter Memória szekvenciában Valós függőség (RAW) Álfüggőség Műveleti Behívási WAR WAW 3.2.1.1 Utasítás szekvenciában 3.2.1.1.1 Valós adatfüggőség (RAW Read After Write) 3.2.1.1.1.1 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) I 1 ADD r 3 r 2 r 1 r 3 r 1 +r 2 I 2 SHL r 3 I 1 I 2 F ADD D/SO r1r2 E ADD W/B r3 Mivel az r 3 -ban a szorzat még nem állt elő, ezért a másik utasítás várakozni kényszerül F SHL NOP NOP D/SO r3 E SHL W/B r3 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 r2 r3 SRC 0 SRC 1 ALU rslt 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. - 5 -

I 1 F ADD D r1r2 E ADD W/B r3 I 2 F SHL FWD E SHL W/B r3 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.2.1.1.1.2 Lehívási adatfüggőség kezelésének általános formája: gyorsítótár operandus előrehozás (extra HW) VE regiszter 3.2.1.1.2 Ál-adatfüggőségek 3.2.1.1.2.1 WAR (Write After Read) o Probléma felvetése: Mit tehetünk, hogy ne írja felül a Szorzás: MUL r 3 r 2 r 1 // r 3 r 2 * r 1 következő operandus az előzőt? ADD r 2 r 4 r 5 MUL sokkal lassabb, ADD megelőzi!! o Megoldás: Regiszter átnevezés CPU minden eredményregisztert átnevez, átmeneti regisztertérbe pakol MUL r 3 r 2 r 1 ADD r 26 r 4 r 5 r 26 új, önálló HW (regiszter), saját címtartománnyal 3.2.1.1.2.2 WAW (Write After Write) o Probléma felvetése MUL r 3 r 2 r 1 ADD r 3 r 4 r 5 o Megoldás: Szintén regiszter-átnevezéssel (történhet statikusan és dinamikusan is) MUL r 3 r 2 r 1 ADD r 36 r 4 r 5-6 -

3.2.1.2 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.2.2 Vezérlés függőségek Feltétlen vezérlésátadás: késleltetett ugrás Probléma felvetése: Nem az ADD fog következni Címke MUL JMP Címke ADD SHL 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 NOP ADD Címke SHL Optimalizáló compiler F MUL É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 hajtódik végre, így a hátrány: - feleslegesen hívjuk le az ADD utasítást - veszélyeztetjük a regiszter-tartalmakat 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) E MUL F JMP F ADD Értékelés: bár felesleges műveletet végzünk (NOP), de nem veszélyeztetjük a regisztertartalmat F JMP F MUL F SHL MUL Értékelés: JMP Címke Amennyiben az ugrási rés mérete 1, akkor a feltöltés ADD valószínűsége kb. 85%, ha nagyobb, rohamosan csökken. Manapság 15-25 fokozatú a futószalag. címke SHL Alkalmazása: a korai RISC processzoroknál. - 7 -

3.2.3 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 Kivételkezelés szekvenciális konzisztenciája Utasítás-végrehajtás Behívás Kivétel-konzisztencia Művelet-konzisztencia Memória-konzisztencia 3.2.4 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.2.5 Memória-konzisztencia: nem fogunk foglalkozni vele 3.2.6 Kivételkezelés soros konzisztenciája Pontatlan kivételkezelés Gyenge konzisztencia Pontos kivételkezelés Erős konzisztencia 3.2.6.1 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 -

3.2.6.2 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 L 1 Ciklus L 2 L n 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 -

- 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 2 n 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 t 1 t 2 t 3 F 1 E 1 F 2 E 2 F 3 E 3 I 1 I 2 I 3 Futószalagos feldolgozás: t 1 t 2 I 1 F 1 E 1 I 2 I 3 I 4 F 2 E 2 F3 E 3 F 4 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 -

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.3.1 A futószalagos feldolgozás jellemzői Teljesítmény 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. 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 -

3.3.2 A futószalagos feldolgozás alkalmazási területei - Hagyományos feldolgozás (összehasonlításul): F D E W/B I 1 I 2 - 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. F W/B 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 I 1 E 1 E 2 E 3 E 4 I 2 E 1 E 2 E 3 E 4 I 3 E 1 E 2 E 3 E 4 Pl.: Nagyszámítógépek: a 60-as vektorprocesszorai Mikroprocesszoroknál ez a fejlődési lépcsőfok kimaradt. I 4 E 1 E 2 E 3 E 4 I 5 E 1 E 2 E 3 E 4 - A teljes utasítás-feldolgozási fázisban: I 1 F D E W B I 2 F D E W B I 3 F D E W B I 4 F D E W B 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 I 5 F D E W B - 12 -

3.3.3 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 W B E Aritmetikai futószalag (pl. összeadás) Ugrási futószalag (B: Branch) II. szint: Egyes fokozatok által végrehajtandó elemi műveletek specifikálása első szint F E második szint (elemi műveletek) MAR PC MDR (MAR) IR MDR PC PC + 1 DEC IR PC DEC címrész 3.3.4 A futószalagok általános fizikai felépítése - 60-80-as évek (futószalagok) Elválasztó Regiszter VE Elválasztó Regiszter VE Elválasztó Regiszter Elválasztó regiszter: rejtett regiszter - 90-es évek (szuperskalárok) I. fokozat (F) II. fokozat (D) Elválasztó regiszter és Multiplexer VE VE Elválasztó regiszter és Multiplexer VE VE Elválasztó regiszter és Multiplexer VE I. fokozat (F) II. fokozat (D) VE - 13 -

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 Alkalmazási lehetőségek: L / S Load, Store 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 -

3.3.5 A futószalagos feldolgozás bevezetésének következményei A memória szűk keresztmetszetének mérséklése Created by AnNo & Broadcast, frissítette: Félix 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 F D E WB 4 Fetch ugyanannyi idő alatt => szűk keresztmetszet 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 -

3.4 Párhuzamos kibocsátás, szuperskalár processzorok 3.4.1 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 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 térbeli párhuzamosság (többszörözés) Utasításgyorsítótár 3. Függőségek kezelése dinamikus: extra hardver segítségével regisztertér 3.4.2 Az I. generációs szuperskalár processzorok (keskeny szuperskalár processzorok) ~ 1990-ben jelentek meg. 3.4.2.1 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) o Külön adat- és utasítás-gyorsítótár o Kétszintű gyorsítótár: a > 0 a 0 ugrik 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 a < 0 soros folytatás - 16 -

Elve: Utasítás gyorsítótár Közvetlen (nem pufferelt) utasítás-kibocsátás Dekódolás Függőség-ellenőrzés Kibocsátás Utasításablak: óraciklusonként egyszerre lehívott utasítások száma 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 VE 1 VE 2 VE n 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 : Utasítás-kibocsátás Ci: óraciklus i 1, i 2, i 3 : utasítások (az utasításablakban helyezkednek el) C i Kibocsátjuk a független i 1 utasítást C i+1 C i+2 C i+3 i 6 A következő óraciklusban az i 2 utasítás függősége már feloldódott, ezért kibocsátható mind az i 2, mind pedig az i 3. Ezzel az utasításablak kiürült. Feltöltjük a kiürült utasításablakot 3 további utasítással. Közülük az i 4 és az i 5 független, ezért kibocsátjuk, míg az i 6 a függőségek feloldásáig vár a kibocsátásra i 6 utasítás kibocsátásra kerül C i+4 i 9 i 8 i 7 Utasításablakot feltöltjük. I 7 feloldása után nincs függőség. 0 db kibocsátott utasítás C i+5 i 9 i 8 i 7 Összes kibocsátása (nincs függőség) - 17 -

3.4.2.2 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 Lehívás Első rész Utasítások lehívása, utasításablak feltöltése Utasítás-ablak Adat-gyorsítótár Dekódolás Kibocsátás Regisztertár Store Végrehajtás Visszaírás Load Forrásoperandusok Regisztereredmény 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.4.2.2.1 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 o CISC esetében 2 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), de a feldolgozási ráta 1 utasítás / óraciklus alatt van a függőségek okozta blokkolások miatt. - 18 -

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 -

3.4.3 Második generációs (széles) szuperskalár processzorok 3.4.3.1 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.4.3.2 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-gyorsítótár Utasítás puffer Utasítás-ablak Várakoztató állomások Lehívás Dekódolás Kibocsátás Kibocsátás Első rész Függőség vizsgálat Kiküldés Függőség vizsgálat Kiküldés Függőség vizsgálat Kiküldés VE 1 VE 2 VE n 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 -

3.4.3.3 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.4.3.4 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 Első rész Kibocsátás forrás operandusok Hátsó rész Adatgyorsítótár Utasítás-ablak Store Kiküldés Végrehajtás Visszaírás Eredmények Architekturális regisztertár az eremények átnevezése Load Működése: Első rész: Átnevezési regisztertár 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 -

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.4.4 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 -

Esettanulmány: Pentium Pro Created by AnNo & Broadcast, frissítette: Félix 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 -

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 R 1 R 2 A 2 R 3 A 3 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 -

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étlen Feltételes egyszerű eljárás visszatérés cikluszáró egyéb feltételes feltétlen elágazás hívás az eljárásból utasítások utasítások (GOTO, JMP) (címet menti) (címet visszatölti) (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.4.4.1.1.1 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 -

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 r 1,r 2,r 3 // r1 r2+r3 beq zero // ha az r1=0, akkor ugrik a zero címkére div r 5,r 4,r 1 // r 5 r 4 /r 1 zero: - 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 r 4,r 5,r 1 // r 4 r 5 /r 1 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 -

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 r 1, r 2, r 3 cmpeq r 7, r 1 // ha az r 1 tartalma 0, az r 7 tartalma logikai igaz lesz beq r 7, zero // ha az r 7 igaz, ugrik a zero címkére div r 5, r 4, r 1 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 r 1, r 2, r 3 beq r 1, zero // akkor ugrik a zero címkére, ha az r 1 értéke nulla div r 5, r 4, r 1 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 Fajta Teljesült Nem teljesült Gromovski Feltétlen Mind Feltételes cikluszáró n-1 (~ mind) Egyéb feltételes 1/6 1/6 Összeg 5/6 1/6 Egyéb I. 75% 25% Egyéb II. 57-99% 1-43% végeredmény 75% 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 -

Az utasításlehívás alrendszer átbocsátó képességének növelése Created by AnNo & Broadcast, frissítette: Félix Probléma Kezelése ugrási irány az elágazási cél feloldatlan becslése leggyorsabb elérése 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 globális kombinált egyszintű kétszintű fix statikus dinamikus 1 bites 2 bites 3 bites - 28 -

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: y IFAR (Instruction Fetch Address Register): Ez felel meg a PC nek BHT - (Branch History Table): telített számláló 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 -

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ó Jellemzői 1.szint: BHT - y tengely BHT Brench History Table 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 -

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 00 0110 0111 1000 1001 1010 11 1011 1100 1101 1110 1111 Ö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 -

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 -

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 Forrás Megjegyzés PC IPC CPU a program induló címe PC PC+1 PC inkrementálása soros a folytatás PC BTA Elágazási utasítás Ugrás következik IPC Initial PC (kezdeti érték) BTA Branch Target Address Megvalósítása: PC Processzor Memória MAR cím Operatív tár MDR utasítás 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 -

Utasítás-gyorsítótár: Address, Instruction A I I+1 I+2 I+3 4 byte 4 byte 4 byte 4 byte Branch Target Instruction 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: IIFA inkrem. BTA IFAR A I I+1 I+2 I+3 utasítás gyorsítótár BTI BTI+1 BTI+2 BTI+3 lehívás 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: i 1 b címke i 3 // branch címke: i t1 // target1-34 -

Időigény: i 1 F D E W/B b F D 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 IFAR BA BTA A I I+1 I+2 I+3 utasítás gyorsítótár 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: i 1 F D E W/B b F D i+1 F D E Nincs időveszteség É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 -

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: i 1 F D E W/B i t1 F D 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 IFAR IFA BA BTI BTIC BTA+ vagy BTI+ A I utasítás gyorsítótár Működése: DEC - 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 -

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 2.alap blokk Feltételes elágazás Adatmanipuláló utasítás Spekulatív irány 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 -

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 gyorsítótár Utasítás puffer Utasítás puffer F D/K Dekódolás Kibocsátás F D K 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 Dekódolás Kibocsátás 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 utasítás- Feladatai: 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 Elődekódoló pl.: 128 bit/óraciklus pl.: 148 bit/óraciklus 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 -