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

Máté: Architektúrák8. előadás1 7. Multiplikatív műveletek: –  : szorzás  –/ : osztás  –MOD : (modulo) a legkisebb nem negatív maradék, pl.: moval,20.

Hasonló előadás


Az előadások a következő témára: "Máté: Architektúrák8. előadás1 7. Multiplikatív műveletek: –  : szorzás  –/ : osztás  –MOD : (modulo) a legkisebb nem negatív maradék, pl.: moval,20."— Előadás másolata:

1 Máté: Architektúrák8. előadás1 7. Multiplikatív műveletek: –  : szorzás  –/ : osztás  –MOD : (modulo) a legkisebb nem negatív maradék, pl.: moval,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!

2 Máté: Architektúrák8. előadás2 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 0FFFFFFFFHigaz –NE :  // -1 NE 0FFFFFFFFHhamis –LT :  33 bites argumentumok! –LE :  1 GT -1 igaz –GT :  1 GT 0FFFFFFFFHhamis –GE : 

3 Máté: Architektúrák8. előadás3 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 

4 Máté: Architektúrák8. előadás4 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 0 Nem a programmal kapcsolatos A programmal kapcsolatos 1 Nem adattal kapcsolatosAdattal kapcsolatos 5 Nem definiáltDefiniált 7 Lokális v. PUBLICEXTERN

5 Máté: Architektúrák8. előadás5 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. IFxxfeltétel...; lefordul, ha a feltétel igaz ELSE; el is maradhat...; lefordul, ha a feltétel hamis ENDIF

6 Máté: Architektúrák8. előadás6 IF kifejezés; igaz, ha ; kifejezés  0 IFEkifejezés; igaz, ha ; kifejezés=0 Pl.: IFdebug GT 20 calldebug1 ELSE calldebug2 ENDIF

7 Máté: Architektúrák8. előadás7 IF1; igaz a fordítás ; első menetében IF2; igaz a fordítás ; második menetében IFDEFSzimbólum; igaz, ha Szimbólum ; definiált IFNDEFSzimbólum; igaz, ha Szimbólum ; nem definiált Pl. Csak akkor definiáljuk buff –t, ha a hossza ismert: IFDEFbuff_len buffdbbuff_len dup (?) ENDIF

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

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

10 Máté: Architektúrák8. előadás10 goto Main1 sokszor megspórolható: ábra pop1MAR=SP=SP-1; rd //2. szó címe, olvas pop2 // vár pop3TOS=MDR; goto main1 //TOS=a verem teteje main1PC=PC+1;fetch;goto(MBR) //következő ut. pop1MAR=SP=SP-1; rd pop2PC=PC+1;fetch //következő ut. olvasása pop3TOS=MDR; goto(MBR)

11 Máté: Architektúrák8. előadás11 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).

12 Máté: Architektúrák8. előadás12 Mic-1 kód ábra iload1H = LV iload2MAR = MBRU + H; rd iload3MAR = SP = SP + 1 iload4PC = PC + 1; fetch; wr iload5TOS = MDR; goto main1 main1PC = PC + 1; fetch; goto(MBR)

13 Máté: Architektúrák8. előadás13 Három sínes kód ábra iload1MAR = MBRU + LV; rd iload2MAR = SP = SP + 1 iload3PC = PC + 1; fetch; wr iload4TOS = MDR iload5PC = PC + 1; fetch; goto(MBR)

14 Máté: Architektúrák8. előadás14 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.

15 Máté: Architektúrák8. előadás15 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): wide1goto (MBR1 OR 0x100) w_iload1MAR=LV+MBR2U; rd; goto iload2 iload1MAR=LV+MBR1U; rd // változó olvasása iload2MAR=SP=SP+1 // vermelés előkészítése iload3TOS=MDR; wr; goto (MBR1)

16 Máté: Architektúrák8. előadás16 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. goto1H=PC-1 // IFU már csinált PC=PC+1-et goto2PC=H+MBR2 // itt folytatódik a program goto3 // IFU még nincs kész, várni kell! goto4goto (MBR1) // a folytatás 1. utasítása

17 Máté: Architektúrák8. előadás17 A IFLT offset utasítás (Mic-2) Kivesz egy szót a veremből és ugrik, ha negatív. iflt1MAR=SP=SP-1; rd // 2. szó a veremből iflt2OPC=TOS // TOS mentése iflt3TOS=MDR // TOS= a verem új teteje iflt4N=OPC; if(N) goto T; else goto F //elágazás TH=PC-1; goto goto2 // igaz ág FH=MBR2 // hamis ág, eldobja offset –et F2goto (MBR1) // a folytatás 1. utasítása

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

19 Máté: Architektúrák8. előadás19 Pl.: a verem két felső szavának cseréje Mic-3-on (4.33. ábra): swap1swap2swap3swap4swap5swap6 cyMAR= SP-1;rd MAR= SP H=MDR; wr MDR= TOS MAR= SP-1;wr TOS=H; goto(MBR1) 1B=SP 2C=B-1B=SP 3MAR=C;rdC=BVárni kell! 4MDR=memMAR=CVárni kell! 5B=MDR 6C=BB=TOS 7H=C;wrC=BB=SP 8mem=MDRMDR=CC=B-1B=H 9MAR=C;wrC=B 10mem=MDRTOS=C 11goto(MBR1)

20 Máté: Architektúrák8. előadás20 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.

21 Máté: Architektúrák8. előadás21 Hétszakaszú csővezeték: Mic-4 (4.35. ábra) 1.Az IFU a bejövő bájtfolyamot a dekódolóba küldi. 2.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.

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

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

24 Máté: Architektúrák8. előadás24 3.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.

25 Máté: Architektúrák8. előadás25 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. 4. MIR1 az A, B regiszterek feltöltését, 5. MIR2 az ALU és a léptető működését, 6. MIR3 az eredmény tárolását, 7. MIR4 pedig a memória műveleteket vezérli. Megjegyzés: Az IJVM feltétlen ugrását elvileg a dekódoló is feldolgozhatja.

26 Máté: Architektúrák8. előadás26 IFLT offset programozása Mic-4-en: iflt1iflt2iflt3iflt4 (Final=1, Goto=1) cyMAR=SP= SP-1; rd OPC= TOS TOS=MDRN=OPC; if(N) GOTO offset 1 B=SP 2 C=B-1B=TOS 3 MAR=SP=C; rdC=BVárni kell! 4 MDR=memOPC=CVárni kell! 5 B=MDR 6 C=BB=OPC 7 TOS=CC=B 8N 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

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

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

29 Máté: Architektúrák8. előadás29 Feltételes elágazás 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!

30 Máté: Architektúrák8. előadás30 Dinamikus 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.

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

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

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

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

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

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

37 Máté: Architektúrák8. előadás37 Feltételezett végrehajtás (Speculative Execution) á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.

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

39 Máté: Architektúrák8. előadás39 Feladatok adw5 dup (1,2) brecordx:3,y:4,z:5 cdw10 dup (1,3 dup (?)) ddb”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 MULES:[DI] utasítás? Hogy javítható ki?

40 Máté: Architektúrák8. előadás40 Feladatok adb12H bdb 23H Cdw? esetén, mi lesz AX, BL és BH tartalma a movAX, word ptr a movc, AX movBL, low c movBH, byte ptr c utasítások után?

41 Máté: Architektúrák8. előadás41 Feladatok a= 7 bequa shl 2 movcx, not b mod 5 or 8 esetén, mi lesz cx tartalma?

42 Máté: Architektúrák8. előadás42 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?

43 Máté: Architektúrák8. előadás43 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?


Letölteni ppt "Máté: Architektúrák8. előadás1 7. Multiplikatív műveletek: –  : szorzás  –/ : osztás  –MOD : (modulo) a legkisebb nem negatív maradék, pl.: moval,20."

Hasonló előadás


Google Hirdetések