1 / 50

A mikroarchitektúra szint tervezése Mic-1: olcsó, de lassú. Sebesség növelés:

A mikroarchitektúra szint tervezése Mic-1: olcsó, de lassú. Sebesség növelés: rövidebb óraciklus, kevesebb óraciklus az utasítások végrehajtásához, az utasítások végrehajtásának átlapolása.

satya
Download Presentation

A mikroarchitektúra szint tervezése Mic-1: olcsó, de lassú. Sebesség növelés:

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. A mikroarchitektúra szint tervezése Mic-1: olcsó, de lassú. Sebesség növelés: • rövidebb óraciklus, • kevesebb óraciklus az utasítások végrehajtásához, • az utasítások végrehajtásának átlapolása. 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) Main1 sokszor megspórolható. Úthossz (path length) rövidítése: jobb microprogram vagy pl. PC növelésére külön áramkör (ez legtöbbszörfetch-csel együtt történik). 8. előadás

  2. goto Main1 sokszor megspórolható (4.23-24. ábra): 0x57 POP A verem legfelső szavát eldobja. 8. előadás

  3. memória MAR MDR PC MBR SP LV CPP TOS OPC H Bsín Csín N 6 6 ALU Z ALUvezérlés ALUvezérlés 2 2 Léptető MAR MDR PC MBR SP LV CPP TOS OPC H memória Bsín Csín Asín B A N ALU Z Léptető 8. előadás

  4. Három sínes architektúra Sok 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). ILOAD varnum // lokális változó a verembe varnum a lokális változó 8 bites indexe. 8. előadás

  5. Mic-1 kód (4.25. ábra) 8. előadás

  6. 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, • de egyszerűbb, ha a kódtól függetlenül előkészíti a következő 8 és 16 bites részt (4.27. ábra). 8. előadás

  7. Memória felől Léptető regiszter MBR B sín MBR2 Legalacsonyabb 2 bit IMAR C sín +1 PC +1, 2 Utasításbetöltő egység (IFU – Instruction Fetch Unit) 8. előadás

  8. Szó olvasás Szó olvasás Szó olvasás MBR1 MBR1 MBR1 MBR1 MBR1 MBR1 1 3 5 6 0 2 4 MBR2 MBR2 MBR2 MBR2 MBR2 Véges állapotú gép (FSM – Finite State Machine, 4.28. ábra): 0, …, 6: állapotok, élek: események. 8. előadás

  9. Mic-2 (4.29. ábra) • Main1 fölösleges, • PC növeléséhez nem kell az ALU, • a 8 és 16 bites operandusokatIFU adja. memória MAR MDR PC MBR1 MBR2 SP LV CPP TOS OPC H IFU Bsín Csín Asín 6 N ALU ALUvezérlés Z 2 Léptető 8. előadás

  10. Mic-2 (4.29. ábra) 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). WIDE ILOADvarnum //beteszi a 16 bites varnum indexű lokális változót a verembe: 8. előadás

  11. 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. 8. előadás

  12. A IFLT offset utasítás (Mic-2) Kivesz egy szót a veremből és ugrik, ha negatív. 8. előadás

  13. A Mic-2adatú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. memória MAR MDR PC MBR MBR2 SP LV CPP TOS OPC H IFU Bsín Csín Asín 6 N ALU ALUvezérlés Z 2 Léptető 8. előadás

  14. Csővonalas terv: Mic-3 (4.31. ábra) • A, B és C tároló. • 3mikrolé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. • 3 mikrolépés egyidejűleg (párhuzamosan) végrehajtható! memória MAR MDR PC MBR MBR2 SP LV CPP TOS OPC H IFU Bsín Csín Asín A B C 6 N ALU ALUvezérlés Z 2 Léptető 8. előadás

  15. Pl.: a verem két felső szavának cseréje Mic-3-on (4.33. ábra): Valódi függőség RAW – Read After Write! Elakadás eldugaszolja a csővezetéket! 8. előadás

  16. 2 1 Dekódoló m e m ó r i a IFU MBR MBR2sor • A dekódolóban van egy táblázat, amely minden utasításnak tudja a hosszát. A WIDE prefixumot felismeri, 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. Az egy bájtos operandusokat az MBR, a két bájtosakat az MBR2 sorba teszi. IJVM hossz Hétszakaszú csővezeték: Mic-4 (4.35. ábra) • Az IFU a bejövő bájtfolyamot a dekódolóba küldi. 8. előadás

  17. Sorba állító egység 2 3 Mikroművelet ROM Dekódoló Final IADD ISUB IFLT Goto A függő mikroműveletek sora (RAM) 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ást végző mikroművelet. Az egyes IJVM utasításokat megvalósító mikroműveletek egymás után vannak a ROM-ban, az utolsónál a Final be van állítva. 8. előadás

  18. Sorba állító egység 2 3 Mikroművelet ROM Dekódoló Final IADD ISUB IFLT Goto A függő mikroműveletek sora (RAM) • 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 átmásolandó 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. 8. előadás

  19. Néhány IJVM utasítás (pl. IFLT) elágazást kíván. A feltételes mikroutasítások speciális utasítások, külön mikroműveletként kell megadni őket. Tartalmazzák a JAM biteket és a Goto bitet. A Goto bit arra szolgál, hogy a sorba állító egység le tudja állítani további utasítások dekódolását. Mindaddig nem lehet tudni, hogy melyik utasítás következik a feltételes utasítás után, amíg a feltétel ki nem értékelődött. • Ha létrejön az elágazás, akkor a csővezeték nem folytatódhat. „Tiszta lapot” kell csinálni IFU-ban, dekódolóban és a sorba állító egységben, majd az offset-nek megfelelő címtől folytatódik a betöltés. • Ha az ugrás feltétele nem teljesül, akkor a dekódoló megkapja a nyugtázó jelet, és a következő utasítással folytatódhat a dekódolás. 8. előadás

  20. 6 5 4 7 6 4 5 7 ALU C M A B ALU C M A B ALU C M A B ALU C M A B MIR2 MIR1 MIR3 MIR4 Regisz-terek C A B ALU Léptető 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. memória 8. előadás

  21. Sorba állító egység 2 3 1 5 7 4 5 4 7 6 6 Mikroművelet ROM Dekódoló Final IADD ISUB IFLT IFU Goto A függő mikroműveletek sora (RAM) MBR MBR2sor ALU C M A B ALU C M A B ALU C M A B ALU C M A B MIR2 MIR3 MIR1 MIR4 Regisz-terek B C A ALU Léptető m e m ó r i a Hétszakaszú csővezeték: Mic-4 (4.35. ábra) 8. előadás

  22. IFLT offset programozása Mic-4-en: A 8. ciklus feladata túl bonyolult! MBR2-1 előre kiszámítható. 8. előadás

  23. IFLT offset programozása Mic-4-en: Az IJVM feltétlen ugrását a dekódoló is feldolgozhatja. 8. előadás

  24. Elágazás jövendölés (4.40. ábra) 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! ABR nextutasítással is probléma van! 8. előadás

  25. Elágazás jövendölés (4.40. ábra) Eltolás rés (delay slot): Az ugró utasítás utáni pozíció. Az ugró utasítás végrehajtásakor ez az utasítás már a csővezetékben van! Megoldási lehetőségek: • Pentium II: bonyolult hardver gondoskodik a csővezeték helyreállításáról • 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 (!), a legrosszabb esetben NOP. 8. előadás

  26. 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 végre kell hajtani (ilyen van a ciklusok végén), • az előre irányulót nem (jobb, mint a semmi). Feltételes elágazás esetén a gép tovább futhat, • amíg nem ír regiszterbe, • csak „firkáló” regiszterekbe írhat. Ha a jóslat bejött, akkor minden rendben, ha nem, akkor sincs baj. Több feltételes elágazás egymás után! 8. előadás

  27. Elágazás van/nincs Valid Bejegy-zés N-1 … 3 2 1 0 Elágazási cím/tag 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. Lehet több utas is! • Egy jövendölő bit: mi volt legutóbb, 8. előadás

  28. Jövendölő bitek Valid Bejegy-zés Elágazási cím/tag N-1 … 3 2 1 0 • Két jövendölő bit: mi várható és mi volt legutóbb. Ha egy belső ciklus újra indul, akkor az várható, hogy a ciklus végén vissza kell ugrani, pedig legutóbb nem kellett. 8. előadás

  29. elágazás nincs elágazás elágazás elágazás elágazás 00 Jóslás: nincs elágazás 10 Jóslás: újra elágazás lesz 01 Jóslás: nem lesz újabb elágazás 11 Jóslás: elágazás nincs elágazás nincs elágazás nincs elágazás A várható bitet csak akkor írja át, ha egymás után kétszer téves volt a jóslat (4.42. ábra). 8. előadás

  30. 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 (pl. UltraSPARC II). A fordító ezt a bitet valahogy beállítja. 8. előadás

  31. S4 ALU ALU operandus beolvasó egység utasítás beolvasó egység utasítás dekódoló egység eredményvisszaíró egység LOAD STORE Lebegő-pontos egység Sorrendtől eltérő végrehajtás, regiszter átnevezés S1 S2 S3 S5 2. 6. ábra 8. előadás

  32. Szuperskaláris architektúra esetén a dekódoló egység az utasításokat mikroutasításokra darabolhatja. Legegyszerűbb, ha a mikroutasítások végrehajtási sorrendje megegyezik a betöltés sorrendjével, de ez nem mindig optimális: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 (függőségek)! 8. előadás

  33. Függőségek Egy utasítás nem hajtható végre az alábbi esetekben: • RAW (valódi) függőség (Read After Write): Onnan akarunk olvasni (operandus), ahova még nem fejeződött be egy korábbi írás. • WAR függőség (Write After Read):Olyan regiszterbe szeretnénk írni az eredményt, ahonnan még nem fejeződött be egy korábbi olvasás. • WAW függőség (Write After Write): Olyan regiszterbe szeretnénk írni az eredményt, ahova még nem fejeződött be egy korábbi írás. Ne boruljon föl az írások sorrendje! 8. előadás

  34. Függőségek: nem olvashatjuk, aminek az írása még nem fejeződött be (RAW), és nem írhatjuk felül, amit korábbi utasítás olvasni (WAR) vagy írni akar (WAW). Regiszterenként egy-egy számláló, hogy hány végrehajtás alatt lévő mikroutasítás használja a regisztert olvasásra illetve írásra. Pl. Tegyük fel, hogy az n. ciklusban dekódolt utasítás végrehajtása legkorábban az n-ben kezdődhet, ezután két ciklussal később fejeződik be (n+2), a szorzás hárommal (n+3) - nem életszerű, de így a legegyszerűbb az ábra javítása; a dekódoló ciklusonként két utasítást tud kiosztani (a valóságban 4-6 utasítást). Az utasítások 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). 8. előadás

  35. RAW R4 miatt I2 csak I1 után fejeződhet be Csak a ciklus végére történik meg a visszaírás R4-be WAR R1 miatt RAW R1 miatt WAR R1 miatt megjegyzés hiba 8. előadás

  36. RAW R1 miatt WAR R1 miatt „A hagyományos matematika tanár … A-t mond, B-t ír, C-re gondol és D lenne a helyes” Pólya György 8. előadás

  37. 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ások végrehajtására (~4.44. ábra). 8. előadás

  38. Sorrendtől eltérő végrehajtás(kezdés és befejezés) esetén (4.44. ábra) I4 RAW függőség (R4) I2 miatt, de adminisztrációt igényel, hogy melyik regisztereket használja (függőséget okozhat). I5 megelőzheti a I4 –et. 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ölszabadult. RAW I5 megelőzi I4-et WAR: R1 helyettS1 8. előadás

  39. RAW I5 megelőzi I4-et WAR: R1 helyettS1 I6 eredménye R1 helyettS1-ben képződik (regiszter átnevezés)!Mostantól R1 helyettS1-et kell használni! I7 RAW és WAW függőség R3 miatt (I1), RAW függőség R1 (S1) miatt (I6), regiszter átnevezés miatt: R3=R3*R1 helyett R3=R3*S1 I8 WAR függőség: R1-et I1, I3 olvassa,S1-be I7 ír (WAW) ezért R1=R4*R4 helyett S2=R4*R4 (mostantól R1 helyettS2). 8. előadás

  40. RAW I5 megelőzi I4-et WAR: R1 helyettS1 RAW WAR 8. előadás

  41. I8eredménye a 7. 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, sokszor kiküszöbölhető vele a WAR és WAW függőség. 8. előadás

  42. evensum = 0; oddsum = 0; i = 0; evensum = 0; oddsum = 0; i = 0; while(i < limit) { k = i * i * i; if((i/2) == 0) evensum = evensum + k; else oddsum = oddsum + k; i = i + 1; } Feltételezett végrehajtás (4.45. ábra) i >= limit while(i < limit) k = i * i * i; if((i/2) == 0) igaz hamis evensum = evensum + k; oddsum = oddsum + k; i = i + 1; 8. előadás

  43. Feltételezett végrehajtás (4.45. ábra) Speculative Execution Alap blokk (basic block): lineáris kód sorozat. Sokszor rövid, nincs elegendő párhuzamosság, hogy hatékonyan kihasználjuk. Emelés: egy utasítás előre hozatala egy elágazáson keresztül (lassú műveletek esetén nyerhetünk vele). Pl. evensum és oddsum regiszterbe tölthető az elágazás előtt. Az egyik LOAD – természetesen – fölösleges. 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. 8. előadás

  44. 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. 8. előadás

  45. 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 8. előadás

  46. 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 8. előadás

  47. 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 8. előadás

  48. 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 8. előadás

  49. 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? 8. előadás

  50. 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? 8. előadás

More Related