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

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

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

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

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

Digitális rendszerek. Mikroarchitektúra szintje

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

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

Bevezetés az informatikába

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

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

Mutatók és mutató-aritmetika C-ben március 19.

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

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

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

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

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

A verem (stack) A verem egy olyan struktúra, aminek a tetejéről kivehetünk egy (vagy sorban több) elemet. A verem felhasználása

Assembly utasítások listája

Assembly. Iványi Péter

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

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

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

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

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

Digitális technika VIMIAA01 9. hét

A 32 bites x86-os architektúra regiszterei

Paraméter átadás regisztereken keresztül

SzA19. Az elágazások vizsgálata

Egyszerű RISC CPU tervezése

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

Mi az assembly? Gyakorlatias assembly bevezető. Sokféle assembly van... Mit fogunk mi használni? A NASM fordítóprogramja. Assembly programok fordítása

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

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

SZORGALMI FELADAT. 17. Oktober

Adatok ábrázolása, adattípusok

Rekurzió. Dr. Iványi Péter

S z á m í t ó g é p e s a l a p i s m e r e t e k

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

Alprogramok fordítása. Kódgenerálás II. (alprogramok, memóriakezelés) Függvény, eljárás. Alprogramok írása assemblyben

C programozás. 6 óra Függvények, függvényszerű makrók, globális és

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

VEZÉRLŐEGYSÉGEK. Tartalom

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

DSP architektúrák dspic30f család

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

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

Hardver Ismeretek IA32 -> IA64

Java II. I A Java programozási nyelv alapelemei

Az interrupt Benesóczky Zoltán 2004

Balaton Marcell Balázs. Assembly jegyzet. Az Assembly egy alacsony szintű nyelv, mely a gépi kódú programozás egyszerűsítésére született.

A programozás alapjai

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.

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

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.

Teljesítmény Mérés. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) Teljesítmény Mérés / 20

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

A C programozási nyelv II. Utasítások. A függvény.

Programozás C- és Matlab nyelven C programozás kurzus BMEKOKAM603 Mutatók. Dr. Bécsi Tamás 7. Előadás

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

Magas szintű optimalizálás

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

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

Tömbök kezelése. Példa: Vonalkód ellenőrzőjegyének kiszámítása

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

Architektúra, megszakítási rendszerek

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

Dr. Oniga István DIGITÁLIS TECHNIKA 8

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. A mai témák. A teljesítmény fokozás. A processzor teljesítmény növelése

A MiniRISC processzor

Bonyolultságelmélet. Monday 26 th September, 2016, 18:50

1 Doszpi

1. ábra: Perifériára való írás idődiagramja

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

C memóriakezelés. Mutató típusú változót egy típus és a változó neve elé írt csillag karakterrel hozhatjuk létre.

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

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

8. gyakorlat Pointerek, dinamikus memóriakezelés

Informatika 1 2. el adás: Absztrakt számítógépek

Programozott soros szinkron adatátvitel

Objektumorientált Programozás VI.

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ógép architektúra

Nagy Gergely április 4.

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

Programozási nyelvek JAVA EA+GY 1. gyakolat

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

Bevezetés a programozásba. 8. Előadás: Függvények 2.

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

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

.Net adatstruktúrák. Készítette: Major Péter

Java programozási nyelv

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

Assembly Utasítások, programok. Iványi Péter

Aritmetikai utasítások I.

Verem Verem mutató 01

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

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ási nyelvek Java

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

Átírás:

Az GOTO offset utasítás. P relatív: P értékéhez hozzá kell adni a két bájtos, előjeles offset értékét. Mic 1 program: Main1 P = P + 1; fetch; goto() goto1 OP=P 1 // Main1 nél : P=P+1 1. bájt goto P=P+1; fetch // offset. bájtja goto3 =<<8 // 1. (előjeles) bájt <<8. bájt goto4 =U OR // 1 bites offset goto5 P=OP+; fetch; goto Main1 // P új értéke Main1 P = P + 1; fetch; goto() opkód goto5 kezdeményezi a P új értékénél lévő bájt olvasását, Main1 ben goto() már a folytatás első opkódjának megfelelő címre ugrik! 1 Gyakorlásra mic1_5.swf A IFLT offset utasítás (Mic 1) Kivesz egy szót a veremből és ugrik, ha negatív. iflt1 == 1; rd //. szó a veremből iflt OP= // mentése iflt3 = // = a verem új teteje iflt4 =OP; if() goto T; else goto F //elágazás T OP=P 1; goto goto // igaz ág F P=P+1 // hamis ág, át kell lépni offset et F P=P+1; fetch; goto (Main1) // P új értéke, az offset utáni utasításának betöltése Fontos: T címe = F címe + 0x100 3 Gyakorlásra mic1_5.swf 4 (4.1. ábra), A PP által mutatott területen a disp ( bájt) indexű szó mutat a meghívandó metódus kezdő szavára. Ennek a szónak az első két bájtja tartalmazza a metódus paramétereinek számát, a második két bájtja a metódus lokális változóinak számát. A metódus végrehajtása a metódus 5. bájtján indul. 5 (~4.1. ábra) ívó je ívó P je etett paraméterek A hívó lokális területe verem a hívás előtt. paraméter OJREF új alapja alapja hívás. paraméter előtt verem a hívás után ívott lokális. paraméter. paraméter 1

4.17. ábra A PP által mutatott táblázat disp indexű eleme a meghívandó metódusra mutat. disp első bájtjának be olvasását már Main1 kezdeményezte. invo1 P = P + 1; fetch // disp. bájtját olvassa invo = U << 8 // disp 1. bájtját lépteti invo3 = U OR // =disp invo4 = PP + ; rd // kezdő cím olvasása invo5 OP = P + 1 // OldP = visszatérési cím 7 IVOKEVIRTUAL: a metódus elején lévő bájt tartalmazza a paraméterek számát. invo P = ; fetch // P: új metódus eleje invo7 P = P + 1; fetch // paraméterek száma invo8 = U << 8 invo9 = OR U // = paraméterek száma invo10 = // OJREF is paraméter! invo11 = = + 1 // OJREF címe ban tároljuk ideiglenesen OJREF címét, ide mutat majd a hívott metódus je. A μutasítások sorrendje más, mint a könyvben! 8 (~4.1. ábra) ívó je ívó P je etett paraméterek A hívó lokális területe verem a hívás előtt. paraméter OJREF új alapja alapja hívás. paraméter előtt verem a hívás után ívott lokális. paraméter. paraméter 9 IVOKEVIRTUAL: lokálisok száma bájt a paraméterek száma után, OJREF helyére kerül a lokális változók fölötti címre mutató Kapcsoló mutató. A mutatott címre kerül majd a ívó P je. = = OJREF címe invo1 P = P + 1; fetch // lokálisok száma 1. bájt invo13 P = P+ 1; fetch // lokálisok száma. bájt invo14 = U << 8 invo15 = OR U // = lokálisok száma invo1 = + + 1; wr // OJREF cseréje = ívó P jének címe 10 etett paraméterek A hívó lokális területe verem a hívás után (~4.1. ábra) ívó je ívó P je verem a hívás előtt. paraméter OJREF új alapja alapja hívás. paraméter előtt ívott lokális. paraméter. paraméter 11 IVOKEVIRTUAL: a hívó P je és je = OJREF címe invo17 = = // hívó P jének helye invo18 = OP; wr // hívó P jének vermelése invo19 = = + 1 // hívó jének a helye invo0 = ; wr // hívó jének vermelése invo1 P = P + 1; fetch // utasítás olvasás invo = // új értéke (a verem új alapja) invo3 = ; goto Main1 // =hívó je = nélkül a címét (a hívott jét) tartalmazná! 1

etett paraméterek A hívó lokális területe Verem IRETUR előtt Visszatérési é. ívó je ívó P je ívott lokális. paraméter IRETUR ~4.1. ábra alapja IRETUR előtt Verem IRETUR után Visszatérési é i é.. paraméter alapja IRETUR után. paraméter 13 IRETUR // ~4.13. ábra iret1 = = ; rd // kapcs. mut. olvasása iret = // vár, hogy az olvasás befejeződjön iret3 = = ; rd // hívó P olvasása iret4 = + 1; rd // hívó címe iret5 P= ; fetch //hívó P, opkód olv. iret = // visszatérési érték címe iret7 = // hívó iret8 = ; wr; goto Main1 iret3 4: nem lehet SOURE operandus! 14 ázi feladat: A 4.17. ábra többi része. Továbbfejlesztések: több es rendszerek. 15 Gyakorlásra mic1_.swf 1 A mikroarchitektúra szint tervezése Mic 1: olcsó, de lassú. Sebesség növelés: rövidebb óraciklus, kevesebb μutasítás az utasítások végrehajtásához, az utasítások végrehajtásának átlapolása. 9 regiszterét 4 bittel címeztük: dekódolóra van szükség, növeli az adatút ciklus idejét! (4.. ábra) Úthossz (path length, a szükséges ciklusok száma) rövidítése: Main1 néha megspórolható, jobb mikroprogram vagy pl. P növelésére (ez legtöbbször fetch csel együtt történik) külön áramkör. A Main1 néha megspórolható: Minden IJVM utasítás értelmezése akkor fejeződik be (kezdődik), amikor a fetch; goto() végrehajtásra kerül (ez a Main1 ben volt). Ilyenkor nek a következő IJVM utasítás kódját kell tartalmaznia, és megkezdődik ennek az utasításnak az értelmezése. Ez a fetch az utasítás kódja utáni bájt olvasását kezdeményezi. Korábbi μutasítás ezt nem kezdeményezheti, mert akkor tartalmát fölülírná a goto() végrehajtása előtt. A következő IJVM értelmezésének első μutasítása nem használhatja taz adatúton, mert ilyenkor ben még az IJVM utasítás kódja található. 17 18 3

Main1 néha megspórolható (4.3 4. ábra): 0x57 POP legfelső szavát eldobja. pop1 == 1; rd //. szó címe, olvas pop // vár pop3 =; goto main1 //=a verem teteje Mi1P Main1 P=P+1;fetch;goto() //következő k ő ut. Új változat pop1 == 1; rd pop P=P+1; fetch pop3 =; fetch; goto() //következő ut. 19 P PP OP A ALU ALU P PP OP ALU ALU 4.1. ábra Mic 1 ~4.9. ábra áromes architektúra A 0 árom es architektúra Sok regiszter csatlakozhat az A hez, nemcsak (4.1., 4.9. ábra). A három es architektúra előnye a két es architektúrával szemben: pl. iload banb nem kll kell = (4.5. 5 ábra). ) ILOAD varnum // lokális változó a verembe varnum a lokális változó 8 bites indexe. 1 Mic 1 kód (4.5. ábra) iload1 = iload = U + ; rd iload3 = = + 1 iload4 P = P + 1; fetch; wr iload5 = ; goto main1 main1 P = P + 1; fetch; goto() árom es kód(4.. ábra) iload1 = U + ; rd iload = = + 1 iload3 P = P + 1; fetch; wr iload4 = iload5 P = P + 1; fetch; goto() ibás a könyvben lévő kód (4.. ábra), mert még nem áll rendelkezésre U értéke, mert az előző utasítás utolsó μutasításában volt az a fetch, amely az ILOAD operandusát olvassa. árom es kód(4.. ábra) iload1 = U + ; rd iload = = + 1 iload3 P = P + 1; fetch; wr iload4 = iload5 P = P + 1; fetch; goto() 3 Mic 1 kód (4.5. ábra) iload1 = iload = U + ; rd iload3 = = + 1 iload4 P = P + 1; fetch; wr iload5 = ; goto main1 main1 P = P + 1; fetch; goto() árom es kód(4.. ábra) iload1 P = P + 1; fetch iload = U + ; rd iload3 = = + 1 iload4 = ; wr iload5 P = P + 1; fetch; goto() 4 4

A P vel kapcsolatos teendők: P növelése 1 gyel, fetch, bájtos operandus olvasás a memóriából. ALU nál egyszerűbb áramkörrel megvalósíthatók. Utasításbetöltő egység (IFU Instruction Fetch Unit) ~4.7. ábra Memória felől Utasításbetöltő egység (IFU Instruction Fetch Unit) értelmezhet minden kódot, hogy kell e operandus, de egyszerűbb, ha a kódtól függetlenül előkészíti a következő 8 és 1 bites részt (4.7. ábra). Memória felé regiszter Legalacsonyabb bit I +1 P +1, 5 Utasításbetöltő egység (IFU Instruction Fetch Unit) ~4.7. ábra A memóriából szavanként történik az olvasás a léptető regiszter utolsó 4 bájtjára, amint lehetséges. A léptető regiszterből újra föltöltésre kerül és, amint olvasás történik ből, vagy ből, ilyenkor a léptető regiszter tartalma 1 vagy bájttal balra lép. Memória felől regiszter I mutatja a legközelebb betöltendő szó címét. I módosul, amint a léptető regiszterbe írta a következő 4 bájtot, de P csak akkor, ha 1 vagy olvasása történik. Memória felől Memória felé regiszter Legalacsonyabb bit I +1 P +1, 7 8 a P értéket kap a ről, azt I is megkapja. Ilyenkor a mikroprogramnak várnia kell a léptető regiszter, 1 és feltöltésére. Memória felől Véges állapotú gép FSM Finite State Machine (4.8. ábra) 0,, : állapotok, élek: események. Szó olvasás Szó olvasás Szó olvasás Memória felé regiszter Legalacsonyabb bit I +1 P +1, 1 1 1 1 1 1 0 1 3 4 5 9 30 5

IFU P 1 PP OP ALU ALU A Mic (4.9. ábra) Main1 fölösleges, P növeléséhez nem kell az ALU, a 8 és 1 bites operandusokat IFU adja (nincs fetch). Mic (4.9. ábra) Több hardver kell az A címzése és IFU miatt, de kevesebb μutasítás kell, pl. WIDE ILOAD hoz az eddigi 9 helyett csak 4 (v.ö. 4.17. ábra). WIDE ILOAD varnum //beteszi a 1 bites varnum indexű lokális változót a verembe: wide1 goto (1 OR 0x100) w_iload1 =+U; rd; goto iload iload1 =+1U; rd // változó olvasása iload ==+1 // vermelés előkészítése iload3 =; wr; goto (1) 31 3 Vezérlés átadáskor várni kell, míg az IFU elkészül (a léptető megkapja az új értékét, 1 és feltöltése megtörténik). GOTO offset az utasítás P relatív: P értékéhez hozzá kell adni a két bájtos, előjeles offset értékét. Mic program: goto1 =P 1 // IFU már csinált P=P+1 et goto P=+ // itt folytatódik a program goto3 // IFU még nincs kész, várni kell! goto4 goto (1) // a folytatás 1. utasítása Az IFLT offset utasítás (Mic ) Kivesz egy szót a veremből és ugrik, ha negatív. iflt1 == 1; rd //. szó a veremből iflt OP= // mentése iflt3 = // = a verem új teteje iflt4 =OP; if() goto T; else goto F //elágazás T =P 1; goto goto // igaz ág F = // hamis ág, eldobja offset et F goto (1) // a folytatás 1. utasítása 33 34 IFU P 1 PP OP ALU ALU A A Mic adatút idejének összetevői (4.9. ábra): az A és ek feltöltése a regiszterekből, az ALU és a léptető munkája, az eredmények tárolása a ről. IFU P 1 PP OP A ALU ALU A sővonalas terv: Mic 3 (4.31. ábra) A, és tároló. 3 mikrolépés (μlépés): A, feltöltése, feltöltése az ALU és a léptető eredménye alapján, tárolása regiszterbe. 3 μlépés egyidejűleg (párhuzamosan) végrehajtható! 35 3

Pl.: a verem két felső szavának cseréje Mic 3 on (4.33. ábra): swap1 swap swap3 swap4 swap5 swap cy = 1;rd 1 = = =; wr = 1 = 3 = = Várni kell! 4 rd = Várni kell! = = 1;wr =; goto(1) Valódi függőség RAW Read After Write! Elakadás 5 = = = 7 = = = 8 wr = = 1 = 9 = = 10 wr = 11 eldugaszolja a csővezetéket! goto(1) Mire szolgál a GOTO utasítás? ogy valósítható meg a GOTO utasítás Mic 1 en? Melyek az IJVM feltételes ugró utasításai? Mire szolgál az IFLT utasítás? ogy valósítható meg az IFLT utasítás Mic 1 en? 37 38 Mit nevezünk metódusnak? IJVM melyik utasítása szolgál a metódus hívására? Mire szolgál az IVOKEVIRTUAL utasítás? ol található az utasítással hívott metódus? Milyeninformáció információ van a metódus elején? ogy néz ki a veremnek egy metódus számára látható része? 39 Mely regiszterek tartalmát kell menteni metódus hívás esetén? IJVM melyik utasítása szolgál a metódusból való visszatérésre? ogy találhatók meg a mentett regiszter tartalmak visszatéréskor? Miért nem lenne jó IRETUR megvalósításában: iret3: = ; rd iret4: = + 1? ol található a metódus visszatérési értéke az IRETUR utasítás végrehajtása után? Elemezze a 4.17. ábra programjait! 40 Az IRETUR utasítás mikroprogramozását úgy is megvalósíthattuk volna, hogy a t nem használjuk, hanem értékéből indulunk ki. ogyan? Így 7 utasítás is elegendő lett volna. Miért jobb mégis az előadáson bemutatott megoldás? Mi az úthossz? Milyen lehetőségek vannak a Mic 1 gyorsítására? Jellemezze a 3 es architektúrát! Mi az előnye a három es architektúrának a Mic 1 gyel szemben? Soroljafel a Mic 1 ésmic közötti különbségeket! Miért eredményeznek ezek gyorsítást? 41 4 7

Mi az utasítás betöltő egység (IFU) feladata? Milyen részei vannak az IFU nak? Mi az I szerepe az IFU ban? Írja le az I és a P regiszter kapcsolatát? ogy működik az IFU? ogyábrázolható véges állapotú géppel (FSM) az IFU működése? Mi a különbség a Mic és Mic 3 között? Miért eredményez ez gyorsítást? A SWAP utasítás (a verem két felső szavának cseréje) Mic 3 on négy μutasítással megoldható kilenc μlépésben. ogyan? A megoldás nem vihető át Mic re. Miért? A feladat nehéz! Élesen ki kell használni az adatút szakaszainak időzítését. Ezt ugyan nem tárgyaltuk, de kikövetkeztethető abból, hogy az egyesszakaszokszakaszok egyidejűleg működhetnek. 43 44 Az előadáshoz kapcsolódó Fontosabb témák Feltétlen és feltételes elágazó utasítás megvalósítása Mic 1 en. Utasítás betöltő egység. Mic. sővonalas terv: Mic 3. 45 8