SzA19. Az elágazások vizsgálata

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

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

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

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

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

Összeadás BCD számokkal

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

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

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

Bevezetés az informatikába

Architektúra, megszakítási rendszerek

Magas szintű optimalizálás

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

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

Adatok ábrázolása, adattípusok

Aritmetikai utasítások I.

Programozási nyelvek 6. előadás

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.

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

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

A 32 bites x86-os architektúra regiszterei

Máté: Assembly programozás

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

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

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

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

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

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

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

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

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

7. Fejezet A processzor és a memória

DSP architektúrák dspic30f család

Egyszerű RISC CPU tervezése

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

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

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

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

Központi vezérlőegység

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

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

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

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

Programozás BMEKOKAA146. Dr. Bécsi Tamás 2. előadás

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

Digitális technika VIMIAA01

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

VEZÉRLŐEGYSÉGEK. Tartalom

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

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

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

Adatszerkezetek 1. Dr. Iványi Péter

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

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

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

Digitális technika VIMIAA01 9. hét

Nyíregyházi Egyetem Matematika és Informatika Intézete. Fájl rendszer

A számítógép alapfelépítése

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

Mikrorendszerek tervezése

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

A programozás alapjai

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

Processzor (CPU - Central Processing Unit)

The Architecture of Computer Hardware and Systems Software: An InformationTechnology Approach 3. kiadás, Irv Englander John Wiley and Sons 2003

Digitális technika VIMIAA hét

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

1 Doszpi

Assembly utasítások listája

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

Assembly. Iványi Péter

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

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

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

Assembly programozás levelező tagozat

Programozás alapjai C nyelv 4. gyakorlat. Mit tudunk már? Feltételes operátor (?:) Típus fogalma char, int, float, double

Számítástechnika I. BMEKOKAA152 BMEKOKAA119 Infokommunikáció I. BMEKOKAA606. Dr. Bécsi Tamás 2. előadás

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

DSP architektúrák dspic30f család memória kezelése

Digitális technika VIMIAA hét

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

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.

A számok kiírása is alapvetően karakterek kiírásán alapul, azonban figyelembe kell venni, hogy a számjegyeket, mint karaktereket kell kiírni.

Dr. Illés Zoltán

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

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

Az interrupt Benesóczky Zoltán 2004

Bepillantás a gépházba

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

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

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.

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

Irányítástechnika Elıadás. PLC-k programozása

ATMEL ATMEGA MIKROVEZÉRLŐ-CSALÁD

Mit tudunk már? Programozás alapjai C nyelv 4. gyakorlat. Legnagyobb elem keresése. Feltételes operátor (?:) Legnagyobb elem keresése (3)

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

2. Fejezet : Számrendszerek

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

Digitális Rendszerek és Számítógép Architektúrák (BSc államvizsga tétel)

Digitális rendszerek. Mikroarchitektúra szintje

Átírás:

SzA19. Az elágazások vizsgálata (Az elágazások csoportosítása, a feltételes utasítások használata, a műveletek eredményének vizsgálata az állapottér módszerrel és közvetlen adatvizsgálattal, az elágazási utasítások aránya az utasítás-mixben, a feltétlen és feltételes elágazási utasítások arányai, az elágazások teljesülési és nem teljesülési arányai) 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) 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. A műveletek eredménye alapján történő feltételvizsgálat a) Á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 Condition Code) vagy jelző bitekbe (flag) Működése: aktualizálása: minden művelet után a CPU karbantartja az állapotteret a megfelelő biteket bebillenti a jelzőbitek közül (pl.: nulla az eredmény, túlcsordulás) 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 // r1 r2+r3 beq zero // ha az r1=0, akkor ugrik a zero címkére div r5,r4,r1 // r5 r4/r1 zero: 1

-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 beq zero div r4,r5,r1 zero: //ez az r1 tartalma alapján beállítja az állapotteret // r4 r5/r1 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 -A 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 kivá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ó b) Közvetlen adatvizsgálat útján -a processzoron belül nem értelmezünk állapotteret -kétféle lehetőség: 1) két utasításos módszer 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) 2) egy utasításos módszer Egyetlen utasításban hajtódik végre 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 kiválóan alkalmas 2

Elágazások statisztikája -Jövőbeli fejlesztésekben várható az alkalmazása -Az általános célú programokban az utasítások 20% feltételes vezérlés-átadás, tudományosmű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: Feltétlen elágazások: 1/3 Cikluszáró feltételes: 1/3 Egyéb feltételes: 1/3 -Az ugrás/soros folytatás aránya: fajtái ugrás soros folytatás feltétlen elágazás 1/3 cikluszáró utasítás 1/3 egyéb feltételes 1/6 1/6 összesen 5/6 1/6 más felmérés 75% 25% SUM 75% 25% Következmény: mivel az elágazások 75%-a ugrik, ezért a gyorsításnál kiemelten fontos a teljesülő ág gyorsítása 3

SzA23. Első generációs (keskeny szuperskalár) processzorokra esettanulmány (Pentium I: Megvalósítás és jellemzők) -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. 4

SzA25. Utasításlehívás I. (A lokális elágazás előrejelzés fogalma, a lokális egyszintű és kétszintű dinamikus elágazás előrejelzés) Lokális elágazás-becslés Minden egyes elágazási utasítást külön-külön vizsgálunk Egyszintű lokális Fix elágazásbecslés: tipikusan az ugrási irányban folytatjuk a feldolgozást Statikus elágazásbecslés: a programkód alapján, a compiler által, sok ciklus esetén biztosít jobb becslést Dinamikus elágazásbecslés: ugrástörténeten alapul a becslés megvalósítása: IFAR - Instruction Fetch Address Register BHT Branch History Table BHT jellemzői: y-tengely: -a számlálóban minden elágazási utasításhoz létrehozunk egy-egy bejegyzést -ezeket az IFAR legkisebb bitjei szerint indexeljük x-tengely: -a hossza lehet 1,2,3 bit, mi a 2 bites változatot vizsgáljuk -telített számláló: a dekrementálásnál a legkisebb érték a 00, inkrementálásnál a legnagyobb érték az 11 értelmezés: 11 erős ugrás 10 gyenge ugrás 01 gyenge soros folytatás 00 erős soros folytatás Működése: a becslés az első bithelyiérték alapján történik becslés: ha a következő végrehajtandó utasítás elágazás, akkor: -a processzor eldönti, hogy a számlálótáblában megtalálható-e az adott elágazási utasítás -ha nem, akkor létrehozza a vonatkozó bejegyzést és az értékét 11-re állítja -ha benne van, akkor a számlálótábla első bitjének értéke alapján következik be a folytatás 5

karbantartás: független a becslési iránytól, amikor kiértékelésre kerül az adott feltétel, akkor: -amennyiben ugrás, akkor az adott bejegyzés értékét inkrementálja -amennyiben soros folytatás, akkor az adott bejegyzés értékét dekrementálja A számlálótábla bejegyzéseinek száma: -1024 (1k) bejegyzést befogadni képes tábla már nagynak számít -nagy tábla esetén minden elágazási utasításhoz egy bejegyzés tartozik -kisebb tábla esetén több elágazási utasítás osztozik egy bejegyzésen -> rosszabb becslés -amennyiben a számlálótábla nagy, akkor a pontosság 93,5% -előnye ennek a módszernek, hogy az ismételt ugrási sorozatokat ugrásként jelzi előre (ciklusok) -pl: Pentium I. Kétszintű lokális Jellemzői: 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 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 6

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: Ö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 7