7. Multiplikatív műveletek:  : szorzás / : osztás

Slides:



Advertisements
Hasonló előadás
Szerver oldali programozás
Advertisements

Egyszerűsített lexikális elemző
C++ programozási nyelv Gyakorlat hét
A mikroprocesszor 1. rész.
3. A programozás eszközei, programozás-technikai alapismeretek
Számítógépek felépítése 3. előadás CPU, utasítás ciklus, címzés
Állapotgépek (state machines)
Benczúr Zsolt VBA gyorstalpaló Benczúr Zsolt
4. Helyes zárójelezés algoritmusa
A számítógép felépítése
Máté: Architektúrák7. előadás1 A verem két felső szavának cseréje (ábra) Megállapodás szerint TOS tartalmazza a verem tetején lévő szót! Ez többnyire előny,
Máté: Architektúrák7. előadás1 A verem két felső szavának cseréje (ábra) Megállapodás szerint TOS tartalmazza a verem tetején lévő szót! Ez többnyire előny,
Máté: Architektúrák5. előadás1 String kezelő utasítások Az s forrás területet (DS:SI), a d cél területet pedig (ES:DI) címzi. A mnemonik végződése (B /
Máté: Architektúrák7. előadás1 A verem két felső szavának cseréje (4.17. ábra) Megállapodás szerint TOS tartalmazza a verem tetején lévő szót! Ez többnyire.
Máté: Architektúrák7. előadás1 A verem két felső szavának cseréje Megállapodás szerint TOS tartalmazza a verem tetején lévő szót! Ez többnyire előny, de.
RISC – CISC RISC: Reduced Instruction Set Computer csökkentett utasításkészletű számítógép CISC: Complex Instruction Set Computer összetett utasításkészletű.
Máté: Architektúrák7. előadás1 RISC – CISC RISC: Reduced Instruction Set Computer csökkentett utasításkészletű számítógép CISC: Complex Instruction Set.
C A C nyelv utasításai. Ismétlés Utasítások csoportosítása.
A verem működése fpga-n
Jt Java Kifejezések,precedencia. jt 2 Egy kifejezés operandusokból és operátorokból (műveletekből) áll. A kifejezésben szerepelhet egy vagy több operandus,
Mikroszámítógépek I 8085 processzor.
Mikroszámítógépek I 8085 processzor.
Utasítás végrehajtás lépései
1 Programozás alapjai GEIAL312B (ANSI C) BSc (Bachelor of Science) / Alap képzés 2005/2006. őszi félév Miskolci Egyetem Általános Informatikai Tanszék.
CISC - RISC processzor jellemzők
C++ Alapok, első óra Elemi típusok Vezérlési szerkezetek
Programozás I. Egymásba ágyazott szelekciók, többágú szelekció
Vizuális és web programozás II.
Egy egyszerű gép vázlata
C nyelv utasításai.
Operációs Rendszerek II.
Egyszerűsített lexikális elemző
Dinamikus elágazás jövendölés
Máté: Architektúrák5. előadás1 String kezelő utasítások Az s forrás területet (DS:SI), a d cél területet pedig (ES:DI) címzi. A mnemonik végződése (B /
Máté: Architektúrák7. előadás1 A verem két felső szavának cseréje (4.17. ábra) Megállapodás szerint TOS tartalmazza a verem tetején lévő szót! Ez többnyire.
Számítógép architektúra Címzésmódok. 2007Címzésmódok2-21 Operandusok egy operandus hossza lehet: –1 byte –2 byte (szó) –4 byte egy operandus lehet: –az.
Beolvasó utasítás Console.Read();  Int típusú adatot kapunk. Console.ReadLine();  String típusú adatot kapunk. Console.ReadKey();  Tetszőleges billentyű.
Számítógép architektúrák
1.4. Fordítás, szerkesztés, az objektumkönyvtár használata.
Operátorok Értékadások
Egy második generációs gép (az IBM 7094) felépítése
Egy első generációs gép (az IAS) felépítése
A Mikroprocesszor Harmadik rész.
CUDA C/C++ programozás
A központi egység Informatika alapjai Készítette: Senkeiné B. Judit.
Mikroprocesszor.
Ismerkedjünk tovább a számítógéppel
Pipeline példák. Pipe 1. feladat Adott a következő utasítás sorozat i1: R0 MEM [R1+8] i2: R2 R0 * 3 i3: R3 MEM [R1+12] i4: R4 R3 * 5 i5: R0 R2 + R4 A.
Török Katalin és Marosi Nóra 11/c. Pascal: Az es években megjelent magas szintű programozási nyelv, közel áll az emberi gondolkodáshoz. Nevét.
Számítógépek felépítése 3. előadás CPU, utasítás ciklus, címzés
BIOLÓGUS INFORMATIKA 2008 – 2009 (1. évfolyam/1.félév) 3. Előadás.
Írja fel a tizes számrendszerbeli
Algoritmusok és Adatszerkezetek Egy kifejezés lengyelformára hozása - bemutató.
Máté: Architektúrák5. előadás1 PCI (Peripheral Component Interconnect): 32 bites adat átvitel (33,3 MHz, sávszélesség: 133 MB/s) szabadon felhasználható.
IT ALAPFOGALMAK HARDVER.
HEFOP 3.3.1–P /1.0A projekt az Európai Unió társfinanszírozásával, az Európa terv keretében valósul meg. 1 Számítógép architektúrák dr. Kovács.
ifin811/ea1 C Programozás: Hardver alapok áttekintése
Memóriakezelés feladatok Feladat: 12 bites címtartomány. 0 ~ 2047 legyen mindig.
Pentium 4 logikai lábkiosztása (3.45. ábra)
Máté: Architektúrák9. előadás1 Pentium 4 (2000. november) Felülről kompatibilis az I8088, …, Pentium III-mal , …, 42 → 55 M tranzisztor, 1,5 → 3,2.
Számítógépek felépítése 4. előadás ALU megvalósítása, vezérlő egység
1 Számítógépek felépítése 5. előadás a CPU gyorsítása, pipeline, cache Dr. Istenes Zoltán ELTE-TTK.
1 A számítógépek tárolói. 2 Memória Memóriaszó  A tárak olyan egységei, melyek egyetlen művelettel kezelhetők.  A legrövidebb memóriaszó a byte (bájt)
RISC – CISC RISC: Reduced Instruction Set Computer csökkentett utasításkészletű számítógép CISC: Complex Instruction Set Computer összetett utasításkészletű.
Számítógép architektúrák
Informatikai gyakorlatok 11. évfolyam
Algoritmus készítés.
Fejlett pipeline megoldások IMSC 2019
Pipeline példák (IMSC, 2019).
Cache példák 2019 (IMSC).
Előadás másolata:

7. Multiplikatív műveletek:  : szorzás / : osztás MOD: (modulo) a legkisebb nem negatív maradék, pl.: mov al,20 MOD 16 ; al  4 kifejezés SHL lépés: kifejezés léptetése balra lépés bittel kifejezés SHR lépés: kifejezés léptetése jobbra lépés bittel lépés is lehet kifejezés! A kifejezésben előforduló műveleti jelek (SHL, SHR, és a később előforduló NOT, AND, OR, és XOR) nem tévesztendők össze a velük azonos alakú műveleti kódokkal: az előbbieket a fordító program, az utóbbiakat a futó program hajtja végre! A66-68, de itt hibás. Javítva: a honlapomról elérhető Assembly fóliák 43-46. oldal. Máté: Architektúrák 8. előadás

EQ : = // -1 EQ 0FFFFFFFFH igaz NE :  // -1 NE 0FFFFFFFFH hamis 8. Additív műveletek: + : összeadás - : kivonás 9. Relációs operátorok (igaz=-1, hamis=0): általában feltételes fordítással kapcsolatban fordulnak elő EQ : = // -1 EQ 0FFFFFFFFH igaz NE :  // -1 NE 0FFFFFFFFH hamis LT :  33 bites argumentumok! LE :  1 GT -1 igaz GT :  1 GT 0FFFFFFFFH hamis GE :  A66-68, de itt hibás. Javítva: a honlapomról elérhető Assembly fóliák 43-46. oldal. Máté: Architektúrák 8. előadás

10. NOT : bitenkénti negálás 11. AND : bitenkénti és művelet 12. Bitenkénti vagy és kizáró vagy művelet: OR : bitenkénti vagy művelet XOR : bitenkénti kizáró vagy művelet A66-68, de itt hibás. Javítva: a honlapomról elérhető Assembly fóliák 43-46. oldal. Máté: Architektúrák 8. előadás

SHORT : 8 bites IP relatív címzés kikényszerítése 13. SHORT : 8 bites IP relatív címzés kikényszerítése .TYPE kifejezés: 0, ha kifejezés érvénytelen, különben: Bit sorszám Ha a bit = 0 Ha a bit = 1 Nem a programmal kapcsolatos A programmal kapcsolatos 1 Nem adattal kapcsolatos Adattal kapcsolatos 5 Nem definiált Definiált 7 Lokális v. PUBLIC EXTERN A66-68, de itt hibás. Javítva: a honlapomról elérhető Assembly fóliák 43-46. oldal. Máté: Architektúrák 8. előadás

... ; lefordul, ha a feltétel igaz ELSE ; el is maradhat Feltételes fordítás A fordító programok általában – így az assembler is – feltételes fordítási lehetőséget biztosít. Ez azt jelenti, hogy a program bizonyos részeit csak abban az esetben fordítja le, ha – a fordítóprogram számára ellenőrizhető – feltétel igaz illetve hamis. IFxx feltétel ... ; lefordul, ha a feltétel igaz ELSE ; el is maradhat ... ; lefordul, ha a feltétel hamis ENDIF A69 Máté: Architektúrák 8. előadás

Pl.: IF kifejezés ; igaz, ha ; kifejezés0 IFE kifejezés ; igaz, ha ; kifejezés=0 Pl.: IF debug GT 20 call debug1 ELSE call debug2 ENDIF A69-70 Máté: Architektúrák 8. előadás

Pl. Csak akkor definiáljuk buff–t, ha a hossza ismert: IF1 ; igaz a fordítás ; első menetében IF2 ; igaz a fordítás ; második menetében IFDEF Szimbólum ; igaz, ha Szimbólum ; definiált IFNDEF Szimbólum ; igaz, ha Szimbólum ; nem definiált Pl. Csak akkor definiáljuk buff–t, ha a hossza ismert: IFDEF buff_len buff db buff_len dup (?) ENDIF A69-70 Máté: Architektúrák 8. előadás

IFIDN arg1,arg2 ; igaz, ha ; arg1arg2 teljesül IFB arg ; igaz, ha ; arg üres (blank) IFNB arg ; igaz, ha ; arg nem üres IFIDN arg1,arg2 ; igaz, ha ; arg1arg2 teljesül IFDIF arg1,arg2 ; igaz, ha ; arg1arg2 nem teljesül A70 Máté: Architektúrák 8. előadás

A mikroarchitektúra-szint tervezése Mic-1: olcsó, de lassú. Sebesség növelés: rövidebb óraciklus, az utasításokat kevesebb óraciklussal megvalósítani, átlapolni az utasítások végrehajtását. B sín 9 regiszterét 4 bittel címeztük: dekódolóra van szükség, növeli az adatút ciklusidejét! (4.6. ábra) Úthossz (path length) rövidítése: jobb microprogram vagy pl. PC növelésére külön áramkör, de ez legtöbbször fetch-csel együtt történik! goto Main1 sokszor megspórolható. 267-269 Máté: Architektúrák 8. előadás

goto Main1 sokszor megspórolható: 4.23-24. ábra pop1 MAR=SP=SP-1; rd //2. szó címe, olvas pop2 // vár pop3 TOS=MDR; goto main1 //TOS=a verem teteje main1 PC=PC+1;fetch;goto(MBR) //következő ut. MAR=SP=SP-1; rd PC=PC+1;fetch //következő ut. olvasása TOS=MDR; goto(MBR) 267-269 Máté: Architektúrák 8. előadás

Három sínes architektúra Minden regiszter csatlakozhat az A sínhez, nemcsak H (4.1., 4.29. ábra). Előnye: a két sínes architektúrával szemben pl. iload -ban nem kell H = LV (4.25-26. ábra). 269-271 Máté: Architektúrák 8. előadás

PC = PC + 1; fetch; goto(MBR) Mic-1 kód 4.25. ábra iload1 H = LV iload2 MAR = MBRU + H; rd iload3 MAR = SP = SP + 1 iload4 PC = PC + 1; fetch; wr iload5 TOS = MDR; goto main1 main1 PC = PC + 1; fetch; goto(MBR) 260-261 Máté: Architektúrák 8. előadás

PC = PC + 1; fetch; goto(MBR) Három sínes kód 4.26. ábra iload1 MAR = MBRU + LV; rd iload2 MAR = SP = SP + 1 iload3 PC = PC + 1; fetch; wr iload4 TOS = MDR iload5 PC = PC + 1; fetch; goto(MBR) 260-261 Máté: Architektúrák 8. előadás

Utasításbetöltő egység (IFU – Instruction Fetch Unit) A PC-vel kapcsolatos teendők: PC növelése 1-gyel, fetch, 2 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) értelmezhet minden kódot, hogy kell-e operandus, a kódtól függetlenül előkészítheti a következő 8 és 16 bites részt (4.27. ábra). IMAR, szóhatár, ugró utasítások. Véges állapotú gép (FSM – Finite State Machine, 4.28. ábra): 0, …, 6: állapotok, élek: események. 272-276 Máté: Architektúrák 8. előadás

PC növeléséhez nem kell az ALU, Mic-2 (4.29. ábra) Main1 fölösleges, PC növeléséhez nem kell az ALU, a 8 és 16 bites operandusokat IFU adja. Több hardver kell az A sín címzése és IFU miatt, de kevesebb mikroutasítás kell, pl. WIDE ILOAD –hoz az eddigi 9 helyett csak 4 (v.ö. 4.17. ábra): wide1 goto (MBR1 OR 0x100) w_iload1 MAR=LV+MBR2U; rd; goto iload2 iload1 MAR=LV+MBR1U; rd // változó olvasása iload2 MAR=SP=SP+1 // vermelés előkészítése iload3 TOS=MDR; wr; goto (MBR1) 276-280 Máté: Architektúrák 8. előadás

Mic-2 adatútja és IFU kapcsolata: Ha PC értéket kap a C sínről, azt IMAR is megkapja. Ilyenkor a mikro-programnak várnia kell a léptető regiszter, MBR1 és MBR2 feltöltésére. IMAR módosul, amint a léptető regiszterbe írta a következő 4 bájtot, de PC csak akkor, ha MBR1vagy MBR2 olvasása történik. goto1 H=PC-1 // IFU már csinált PC=PC+1-et goto2 PC=H+MBR2 // itt folytatódik a program goto3 // IFU még nincs kész, várni kell! goto4 goto (MBR1) // a folytatás 1. utasítása 276-280 Máté: Architektúrák 8. előadás

A IFLT offset utasítás (Mic-2) Kivesz egy szót a veremből és ugrik, ha negatív. iflt1 MAR=SP=SP-1; rd // 2. szó a veremből iflt2 OPC=TOS // TOS mentése iflt3 TOS=MDR // TOS= a verem új teteje iflt4 N=OPC; if(N) goto T; else goto F //elágazás T H=PC-1; goto goto2 // igaz ág F H=MBR2 // hamis ág, eldobja offset–et F2 goto (MBR1) // a folytatás 1. utasítása 276-280 Máté: Architektúrák 8. előadás

A Mic-2 adatút idejének összetevői (4.29. ábra): Csővonalas terv: Mic-3 A Mic-2 adatút idejének összetevői (4.29. ábra): A és B sínek feltöltése a regiszterekből, az ALU és a léptető munkája, az eredmények tárolása a C sínről. Gyorsítás (4.31. ábra): A, B és C tároló. Az adatút használata (3 ciklus, mikrolépés): A, B feltöltése, C feltöltése az ALU és a léptető eredménye alapján, C tárolása regiszterbe. Valóban gyorsít: rövidebb ciklus + párhuzamosítás. 276-282 Máté: Architektúrák 8. előadás

Pl.: a verem két felső szavának cseréje Mic-3-on (4.33. ábra): swap1 swap2 swap3 swap4 swap5 swap6 cy MAR= SP-1;rd SP H=MDR; wr MDR= TOS SP-1;wr TOS=H; goto(MBR1) 1 B=SP 2 C=B-1 3 MAR=C;rd C=B Várni kell! 4 MDR=mem MAR=C 5 B=MDR 6 B=TOS 7 H=C;wr 8 mem=MDR MDR=C B=H 9 MAR=C;wr 10 TOS=C 11 282-286 Máté: Architektúrák 8. előadás

Valódi függőség, RAW – Read After Write! Elakadás. Pl: a verem két felső szavának cseréje (4.33. ábra): swap3 csak az 5. ciklusban indulhat: Valódi függőség, RAW – Read After Write! Elakadás. Gyorsabb: 11 T kell 6 * (3 T) = 18 T helyett. Probléma: pl. swap6 eldugaszolja a csővezetéket! A csővezeték illusztrálása: 4.34. ábra. 282-286 Máté: Architektúrák 8. előadás

Hétszakaszú csővezeték: Mic-4 (4.35. ábra) Az IFU a bejövő bájtfolyamot a dekódolóba küldi. A dekódolónak van egy táblázata, amely minden utasításnak tudja a hosszát (a WIDE prefixumot felismeri és pl. WIDE ILOAD –ot átalakítja WIDE_ILOAD –dá : pl. 9 bites utasítás kód), el tudja különíteni az utasítás kódokat és az operandusokat. 286-289 Máté: Architektúrák 8. előadás

A dekódoló egy másik táblázata megmutatja, hogy a sorba állító egységben lévő ROM melyik címén kezdődnek a kódhoz tartozó mikroműveletek. Nincs NEXT_ADDRESS és JAM mező. Nincs feltétlen ugrás a mikroprogramban (goto mikroutasítás). Az egyes IJVM utasításokat megvalósító mikroműveleteket egymás után kell írni a ROM-ban, az utolsó mikroműveletnél Final be van állítva. 286-289 Máté: Architektúrák 8. előadás

Néhány IJVM utasítás (pl. IFLT) elágazást kíván Néhány IJVM utasítás (pl. IFLT) elágazást kíván. Ha létrejön az elágazás, akkor a csővezeték nem folytatódhat. A feltételes mikroutasítások speciális utasítások, külön mikroutasításban kell megadni őket. Tartalmazzák a JAM biteket és a Goto bitet. Ha az ugrás feltétele nem teljesül, akkor a következő utasítással folytatódhat a dekódolás. Ha teljesül, akkor „tiszta lapot” kell csinálni IFU–ban és a dekódolóban, majd az offset –nek megfelelő címtől folytatódik a betöltés. 286-289 Máté: Architektúrák 8. előadás

A sorba állító egység a ROM-ból a RAM-ba másolja a mikroműveleteket, amint van hely a RAM-ban. A kódhoz tartozó utolsó mikroművelet Final bitje jelzi, hogy nincs több mikroművelet. Ha a mikroműveletek között nem volt olyan, amelyik Goto bitje be volt állítva, akkor nyugtázó jelet küld a dekódolónak, hogy folytathatja a munkáját. Ha valamelyik mikroművelet Goto bitje be volt állítva, akkor ez a nyugtázó jel elmarad. Később, amikor eldőlt, hogy létrejött-e az ugrás, akkor a megfelelő módon folytatódik a betöltés, dekódolás. 286-289 Máté: Architektúrák 8. előadás

MIR1 az A, B regiszterek feltöltését, Az adatutat 4 független MIR vezérli. Minden óraciklus kezdetekor MIRi föltöltődik a fölötte lévőből, MIR1 pedig a RAM-ból. MIR1 az A, B regiszterek feltöltését, MIR2 az ALU és a léptető működését, MIR3 az eredmény tárolását, MIR4 pedig a memória műveleteket vezérli. Megjegyzés: Az IJVM feltétlen ugrását elvileg a dekódoló is feldolgozhatja. 286-289 Máté: Architektúrák 8. előadás

IFLT offset programozása Mic-4-en: iflt4 (Final=1, Goto=1) cy MAR=SP= SP-1; rd OPC= TOS TOS=MDR N=OPC; if(N) GOTO offset 1 B=SP 2 C=B-1 B=TOS 3 MAR=SP=C; rd C=B Várni kell! 4 MDR=mem OPC=C 5 B=MDR 6 B=OPC 7 TOS=C 8 N PC=PC-1+MBR2; „tiszta lap”, majd a PC által mutatott címtől utasítás betöltés, … #N MBR2 –t eldobni, folytatódhat a dekódolás 282-286 Máté: Architektúrák 8. előadás

Elágazás jövendölés 4.40. ábra if(i==0) CMP i,0 összehasonlítás BNE else feltételes ugrás k=1; then: MOV k,1 k=1 else BR next feltétlen ugrás k=2; else: MOV k,2 k=2 next: 296-298 Máté: Architektúrák 8. előadás

Eltolás rés (delay slot) Az ugró utasítás utáni pozíció. Legkorábban a dekódoló veheti észre, hogy ugró utasítást kell végrehajtani, de addigra a következő utasítás már a csővezetékben van (4.36. ábra)! A BR next utasítással is probléma van! Megoldási lehetőségek: UltraSPARC II: a felhasználóra (fordítóra) bízza a problémát, az eltolás résben lévő utasítás végrehajtásra kerül (legrosszabb esetben NOP), Pentium II: bonyolult hardver gondoskodik a csővezeték helyreállításáról. 296-298 Máté: Architektúrák 8. előadás

Több feltételes elágazás egymás után! Sok gép megjövendöli, hogy egy ugrást végre kell hajtani vagy sem. Egy triviális jóslás: a visszafelé irányulót igen (ilyen van a ciklusok végén), az előre irányulót nem (jobb, mint a semmi). Ha a jóslat bejött, akkor minden rendben, ha nem: a gép tovább futhat, amíg nem ír regiszterbe, csak „firkáló” regiszterekbe írhat. Több feltételes elágazás egymás után! 296-298 Máté: Architektúrák 8. előadás

Dinamikus elágazás jövendölés Statikus elágazás jövendölés Elágazás előzmények tábla (4.41. ábra), hasonló jellegű, mint a gyorsító tár. Egy jövendölő bit: mi volt legutóbb, Két jövendölő bit: mi várható és mi volt legutóbb. A várható bitet csak akkor írja át, ha egymás után kétszer téves volt a jóslat (4.42. ábra). Statikus elágazás jövendölés A feltételes utasításoknak néha olyan változata is van, amely tartalmaz bitet a jóslásra. A fordító ezt a bitet valahogy beállítja. 298-302 Máté: Architektúrák 8. előadás

Sorrendtől eltérő végrehajtás, regiszter átnevezés Szuperskaláris architektúra (2.6. ábra). A dekódoló egység az utasításokat mikroutasításokra darabolhatja. Legegyszerűbb, ha a végrehajtás sorrendje megegyezik a betöltés sorrendjével, de ez nem mindig optimális (RAW függőség). Néhány gép bizonyos utasításokat átugorva függőben hagy, előbb későbbi utasításokat hajt végre, és később tér vissza a függőben hagyott utasítás végrehajtására. 302-307 Máté: Architektúrák 8. előadás

C= ciklus, I=indítás, B=befejezés (~4.43. ábra). Pl. Tegyük fel, hogy az n. ciklusban dekódolt utasítás végrehajtása legkorábban az n+1-ikben kezdődhet, ezután egy ciklussal később fejeződik be (n+2), a szorzás kettővel (n+3); a dekódoló ciklusonként két utasítást tud kiosztani (a valóságban 4-6 utasítást). Először az utasítás indítása és befejezése az eredeti sorrendben történjék! C= ciklus, I=indítás, B=befejezés (~4.43. ábra). Regiszterenként két számláló, hogy hány végrehajtás alatt lévő mikroutasítás használja a regisztert olvasásra illetve írásra. 302-307 Máté: Architektúrák 8. előadás

Ha egy utasítás írni/olvasni akar egy regisztert, akkor meg kell várja azon korábbi utasítások befejezését, amelyek ezt a regisztert olvasni/írni akarták! Egy utasítást nem osztunk ki végrehajtásra, ha még nem fejeződött be egy regiszter írása, ahonnan olvasni akarunk (operandus) RAW függőség (Read After Write), olvasása, ahova az eredményt írni szeretnénk WAR függőség (Write After Read), írása, ahova az eredményt írni szeretnénk WAW függőség (Write After Write). Ne boruljon föl az írások sorrendje! 302-307 Máté: Architektúrák 8. előadás

A 4. utasítás RAW függőség miatt (R4) csak az 5. ciklusban, a 6. utasítás WAR függőség miatt (R1) csak a 9. ciklusban, a 8. utasítás WAR függőség miatt (R1) csak a 13. ciklusban indulhat. A 4. ciklusban több utasítás fejeződik be, de a regiszterek csak a ciklus végén szabadulnak fel! 302-307 Máté: Architektúrák 8. előadás

I7 R3=R3*R1 helyett R3=R3*S1 I6 eredménye előbb lesz meg S1 -ben! Sorrendtől eltérő végrehajtás (kezdés és befejezés) esetén (4.44. ábra) I4 RAW függőség I5 indítása megelőzheti a I4 -ét, de külön adminisztrációt igényel, hogy az átugrott utasítás melyik regiszterbe írt volna. I6 R1=R0-R2 helyett S1=R0-R2 Az S1 segéd regisztert használja R1 helyett (regiszter átnevezés). Az eredményt később átmásolhatja R1 -be, ha R1 fölszabadul. I7 R3=R3*R1 helyett R3=R3*S1 I6 eredménye előbb lesz meg S1 -ben! 302-307 Máté: Architektúrák 8. előadás

R1 -et még használja I1, I3, S1 -et I6. I8 R1=R4*R4 helyett S2=R4*R4 R1 -et még használja I1, I3, S1 -et I6. I8 eredménye a 9. ciklusban átkerülhet S2 -ből R1 -be, de jobb, ha a hardver nyilvántartja, hogy hol van. A modern CPU-k gyakran titkos regiszterek tucatjait használják regiszter átnevezésre, gyakran kiküszöbölhető vele a WAR és WAW függőség. 302-307 Máté: Architektúrák 8. előadás

Feltételezett végrehajtás (Speculative Execution) 4.45. ábra Alap blokk (basic block): lineáris kód sorozat. Emelés: egy utasítás előre hozatala egy elágazáson keresztül (lassú műveletek esetén nyerhetünk vele). Ha valamit nem biztos, hogy meg kell csinálni, de nincs más dolga a gépnek, akkor megteheti, de csak „firkáló” regiszterekbe írhat. Ha később kiderül, hogy kell, akkor átírja az eredményeket a valódi regiszterekbe, ha nem kell, elfelejti. 307-309 Máté: Architektúrák 8. előadás

Feltételezett végrehajtás (Speculative Execution) Mellékhatások: fölösleges gyorsító sor csere, SPECULATIVE_LOAD csapda (pl. x=0 esetén if(x>0) z=y/x;), mérgezés bit. 307-309 Máté: Architektúrák 8. előadás

Melyik címet jelenti az ES:5[BX:DI] hivatkozás? Miért hibás a Feladatok a dw 5 dup (1,2) b record x:3,y:4,z:5 c dw 10 dup (1,3 dup (?)) d db ”szoveg” Alkalmazza a, b, c, d, x, y,és z-re a LENGTH, SIZE, WIDTH, MASK és a NOT MASK, operátort (ha lehet)! Milyen eredményeket kap? Melyik címet jelenti az ES:5[BX:DI] hivatkozás? Miért hibás a MUL ES:[DI] utasítás? Hogy javítható ki? Máté: Architektúrák 8. előadás

esetén, mi lesz AX, BL és BH tartalma a mov AX, word ptr a mov c, AX Feladatok a db 12H b db 23H C dw ? esetén, mi lesz AX, BL és BH tartalma a mov AX, word ptr a mov c, AX mov BL, low c mov BH, byte ptr c utasítások után? Máté: Architektúrák 8. előadás

esetén, mi lesz cx tartalma? Feladatok a = 7 b equ a shl 2 mov cx, not b mod 5 or 8 esetén, mi lesz cx tartalma? Máté: Architektúrák 8. előadás

Mi a különbség Mic-2 és Mic-3 között? Miért eredményez ez gyorsítást? Feladatok Sorolja fel a Mic-1 és Mic-2 közötti különbségeket! Miért eredményeznek ezek gyorsítást? Mi a különbség Mic-2 és Mic-3 között? Miért eredményez ez gyorsítást? Milyen szakaszai vannak a Mic-4 csővezetékének? Melyik szakasz milyen feladatokat lát el? Mire szolgál a Final bit? Mire szolgál a Goto bit? Miért gyorsabb a Mic-4, mint a Mic-3? Milyen speciális feladatokat kell megoldani Mic-4 esetén a feltételes elágazásnál? Máté: Architektúrák 8. előadás

Mit jelent az elágazás jövendölés? Feladatok Mit jelent az elágazás jövendölés? Milyen módszereket ismer elágazás jövendölésre? Mi az eltolás rés (delay slot)? Milyen függőségeket ismer? Milyen lehetőségeket ismer a függőség feloldására? Mit nevezünk emelésnek? Mit nevezünk feltételezett végrehajtásnak? Milyen mellékhatásai lehetnek a feltételezett végrehajtásnak? Mi a SPECULATIVE_LOAD lényege? Mi a mérgezés bit? Máté: Architektúrák 8. előadás