Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

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

Hasonló előadás


Az előadások a következő témára: "7. Multiplikatív műveletek:  : szorzás / : osztás"— Előadás másolata:

1 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 oldal. Máté: Architektúrák 8. előadás

2 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 igaz GT :  1 GT 0FFFFFFFFH hamis GE :  A66-68, de itt hibás. Javítva: a honlapomról elérhető Assembly fóliák oldal. Máté: Architektúrák 8. előadás

3 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 oldal. Máté: Architektúrák 8. előadás

4 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 oldal. Máté: Architektúrák 8. előadás

5 ... ; 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

6 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

7 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

8 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

9 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ó. Máté: Architektúrák 8. előadás

10 goto Main1 sokszor megspórolható:
á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) Máté: Architektúrák 8. előadás

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

12 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) Máté: Architektúrák 8. előadás

13 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) Máté: Architektúrák 8. előadás

14 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, ábra): 0, …, 6: állapotok, élek: események. Máté: Architektúrák 8. előadás

15 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.ö á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 // vermelés előkészítése iload3 TOS=MDR; wr; goto (MBR1) Máté: Architektúrák 8. előadás

16 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 // 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 Máté: Architektúrák 8. előadás

17 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 goto // igaz ág F H=MBR // hamis ág, eldobja offset–et F2 goto (MBR1) // a folytatás 1. utasítása Máté: Architektúrák 8. előadás

18 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. Máté: Architektúrák 8. előadás

19 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 Máté: Architektúrák 8. előadás

20 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: ábra. Máté: Architektúrák 8. előadás

21 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. Máté: Architektúrák 8. előadás

22 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. Máté: Architektúrák 8. előadás

23 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. Máté: Architektúrák 8. előadás

24 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. Máté: Architektúrák 8. előadás

25 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. Máté: Architektúrák 8. előadás

26 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 Máté: Architektúrák 8. előadás

27 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: Máté: Architektúrák 8. előadás

28 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. Máté: Architektúrák 8. előadás

29 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! Máté: Architektúrák 8. előadás

30 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. Máté: Architektúrák 8. előadás

31 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. Máté: Architektúrák 8. előadás

32 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. Máté: Architektúrák 8. előadás

33 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! Máté: Architektúrák 8. előadás

34 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! Máté: Architektúrák 8. előadás

35 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! Máté: Architektúrák 8. előadás

36 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. Máté: Architektúrák 8. előadás

37 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. Máté: Architektúrák 8. előadás

38 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. Máté: Architektúrák 8. előadás

39 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

40 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

41 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

42 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

43 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


Letölteni ppt "7. Multiplikatív műveletek:  : szorzás / : osztás"

Hasonló előadás


Google Hirdetések