1 / 69

Történeti áttekintés Kezdetben: kevés, egyszerű utasítás.

Történeti áttekintés Kezdetben: kevés, egyszerű utasítás. Később: sok, egyre összetettebb utasítás. IBM 360 -as család. Lefelé kompatibilis, csak a nagyobb gépek hajtják végre hardveresen az utasításokat (gyors), a kicsik interpretálnak (olcsó). Interpretálás (mikroprogramozás) előnyei:

tawana
Télécharger la présentation

Történeti áttekintés Kezdetben: kevés, egyszerű utasítá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. Történeti áttekintés • Kezdetben: kevés, egyszerű utasítás. • Később: sok, egyre összetettebb utasítás. • IBM 360-as család. Lefelé kompatibilis, csak a nagyobb gépek hajtják végre hardveresen az utasításokat (gyors), a kicsik interpretálnak (olcsó). Interpretálás (mikroprogramozás) előnyei: • hibásan interpretált utasítások könnyű javítása, • új utasítások egyszerű hozzáadása, • strukturált felépítés; összetett utasítások hatékony fejlesztése. 9. előadás

  2. Hetvenes évek vége: • a csak olvasásra használható gyors memóriák (vezérlőtárak – ROM Read Only Memory) megjelenése és beépülése a CPU-ba. • az első 8 bites processzorok: - Motorola 68000 egyszerű utasításokkal nagy interpretert épít (siker), - Zilog 8000 bonyolult hardver utasításokat (kudarc). 9. előadás

  3. A nyolcvanas évek elejétől: A központi memória sebessége csaknem elérte a vezérlő tárak sebességét. RISC (Reduced Instruction Set Computer - csökkentett utasításkészletű számítógép): SPARC, DEC Alpha. Cél: minél gyorsabban indítani és átlapolni a gyors, egyszerű utasításokat. Az utasítások általában két regiszteren hajtanak végre műveletet, az eredményt egy harmadik regiszterbe tárolják. CISC (Complex Instruction Set Computer, összetett utasításkészletű számítógép): IBM nagy gépek, VAX, …. Összetett, és lassabb utasítások. 9. előadás

  4. RISC tervezési elvei • hardveres (nem mikroprogramozott) utasítások, • az utasítások indítási sebességének maximalizálása, • könnyen dekódolható utasítások, • memóriához fordulás csak betöltés (load) és tárolás (store) esetén. Sok regiszter kell! Miért nem nyert a RISC? Kompatibilitás + az elveket az Intel is részben átveszi (486-tól RISC mag). 9. előadás

  5. Betöltő/dekódoló egység Elküldő/Végrehajtó egység Befejező egység mikroművelet tár terület Pentium II CPU mikroarchitektúrája(4.46. ábra) Magas szintű csővezeték: Betöltő/Dekódoló: az utasításokat szétdarabolja, a RISC szerű mikroműveleteket ROB-ba teszi (ROB:ReOrder Buffer – mikroművelet tár terület). Elküldő/Végrehajtó: a ROB-ban lévő utasításokat – esetleg eltérő sorrendben – végrehajtja. Befejező: sorrendben befejezi az összes mikroművelet végrehajtását, frissíti a regisztereket. 9. előadás

  6. Betöltö/Dekódoló Utasítás hossz dekódoló 1. szintű I gyorsító tár gyorsító sor betöltő Utasítás sorba állító 0 1 2 IFU1 IFU0 IFU2 ID0 • IFU0: ha a puffere üres, 32 bájtos gyorsító sort tölt be. • IFU1: legfeljebb 30 utasítás határát megkeresi. • IFU2: beteszi egy sorba az utasításokat. • ID0: az egyszerű utasításokat kettő, a többit a harmadik dekódolja (mint Mic-4), mikroműveletenként: • műveleti kód, • két forrás és • egy cél regiszter. 4.47. ábra 9. előadás

  7. 4.47. ábra Következő IP Dinamikus elágazás jövendölő Mikroművelet sorba állító (qeuer) A mikroműveletek a ROB-ba mennek Utasítás sorba állító 0 1 2 Regiszter lefoglaló 1. szintű I gyorsító tár Utasítás hossz dekódoló gyorsító sor betöltő ID0 ID1 ROB IFU2 IFU0 IFU1 RAT Mikroművelet sorba állító (sequencer) Statikus elágazás jövendölő • ID1, statikus + dinamikus elágazás jövendölés (4 bites előzmény figyelés). 9. előadás

  8. RAT: 40 firkáló regiszter WAR és WAW feloldására Következő IP Dinamikus elágazás jövendölő Mikroművelet sorba állító (qeuer) A mikroműveletek a ROB-ba mennek Utasítás sorba állító gyorsító sor betöltő Regiszter lefoglaló 0 1 2 Utasítás hossz dekódoló 1. szintű I gyorsító tár ID0 RAT ROB IFU2 IFU0 IFU1 ID1 Mikroművelet sorbaállító (sequencer) Statikus elágazás jövendölő • ROB (ReOrder Buffer): maximum 3 mikroműveletet fogad ciklusonként. 9. előadás

  9. Elküldő/Végrehajtó Ütemezi és végrehajtja a mikroműveleteket, feloldja a függőségeket és erőforrás igény ütközéseket. Egy ciklusban öt művelet is kiosztható. Foglalóhely: 20 elemű sor azoknak a műveleteknek, amelyeknek minden operandusa megvan. Portok: ezekhez kapcsolódnak a végrehajtó egységek. Ha több művelet osztható ki egy végrehajtó egységnek, akkor bonyolult algoritmus dönt, pl.: egy elágazás végrehajtása elsőbbséget élvez egy aritmetikai művelettel szemben. Portonként sorbaállás lehetséges. Foglalóhely 0. port 1. port 2. port 3. port 4. port 9. előadás

  10. Foglalóhely 0. port 1. port 2. port 3. port 4. port MMX végrehajtó egység MMX végrehajtó egység Lebegőpontos végrehajtó egység Lebegőpontos végrehajtó egység ROB Egész végrehajtó egység Egész végrehajtó egység Betöltő egység Betöltések Tároló egység Tárolások Tárolások Tároló egység Elküldő/Végrehajtó(4.48. ábra) 9. előadás

  11. Betöltő/dekódoló egység Elküldő/Végrehajtó egység Befejező egység mikroművelet tár terület Befejező (4.46. ábra) Ez küldi az eredményeket a megfelelő helyre – regiszterbe és az Elküldő/Végrehajtóba, ahol az eredményre várnak RAW függőség esetén. Az utasításokat a programban lévő sorrendben fejezi be, még akkor is, ha a végrehajtás sorrendje ettől eltért.A feltételesen végrehajtott utasítások eredményét eldobja, ha ezeket az utasításokat nem kellett volna végrehajtani. 9. előadás

  12. 2. Szintű gyorsító tár felé Lokális sín a PCI hídhoz Sín illesztő egység 1. szintű I gyorsító tár 1. szintű D gyorsító tár Betöltő/dekódoló egység Elküldő/Végrehajtó egység Befejező egység mikroművelet tár terület Pentium II CPU mikroarchitektúrája(4.46. ábra) 9. előadás

  13. UltraSPARC II CPU mikroarchitektúrája A SPARC sorozat RISC elgondoláson alapul. A legtöbb utasításnak két forrás és egy cél regisztere van. PREFETCH utasítás feltételezett betöltésre, nem okoz gyorsító sor cserét gyorsító tár hiánykor. 2 bites elágazás jövendölő + statikus elágazás jövendölés. 9. előadás

  14. Előre betöltő/Elküldő (4.49. ábra): ciklusonként négy utasítást tölt be – egy fél gyorsító sort, és dekódolja. Dekódoló: Néhány „irányító” bitet ad minden utasításhoz, ezzel a későbbi folyamatot gyorsítja. Maximum 12 elemű sort épít. A kiosztás sorrendben történik. Fő memória Memória illesztő egység 2. szintű gyorsító tár Külső gyorsító tár egység Előre betöltő/Elküldő 1. szintű I gyorsító tár Dekódoló Csoportosító logika 9. előadás

  15. Egész végrehajtó Betöltő/Tároló Lebegőpontos egység Egész regiszterek 1. szintű D gyorsító FP regiszterek ALU ALU Betöltő sor Tároló sor FP ALU FP ALU Grafikai egység Csoportosító logika: egyszerre maximum 4 (2 fix- és 2 lebegőpontos) utasítást tud kiosztani a sorból. A kiosztás és befejezés a sorrendtől eltérő lehet. Az egész és lebegőpontos egység tejesen független. Betöltő/Tároló: írás áteresztő. A gyorsító tár hiány miatti várakozás elkerülésére külön sor a függőben lévő LOAD-ok és STORE-ok számára. Csoportosító logika 9. előadás

  16. Egész végrehajtó Betöltő/Tároló Lebegőpontos egység Egész regiszterek 1. szintű D gyorsító tár FP regiszterek ALU ALU Betöltő sor Tároló sor FP ALU FP ALU Grafikai egység Fő memória Memória illesztő egység 2. szintű gyorsító Külső gyorsító egység Előre betöltő/Elküldő Az UltraSPARC II mikroarchitektúrája (4.49. ábra) 1. szintű I gyorsító tár Dekódoló Csoportosító logika 9. előadás

  17. 9 szakaszos csővezeték (4.50. ábra) Betölt Dekódol Csoportosít Regiszter Végrehajt Gyorsító tár X1 FP/Grafikus csővezeték Egész csővezeték N1 X2 N2 X3 N3 ír • max. 4 utasítás az I-gyorsítóból, • irányító bitek az utasításokhoz, • kioszt annyi utasítást, ahányat tud • csapda kezelés • regiszterekbe írás 9. előadás

  18. Betölt Dekódol Csoportosít Végrehajt Regiszter Gyorsító tár X1 FP/Grafikus csővezeték Egész csővezeték N1 X2 X3 N2 N3 ír 4 - 7. szakasz • a fix pontos utasítások 1 ciklus alatt végrehajtódnak + 3 üres szakasz, • LOAD és STORE még dolgozik a gyorsító tár szakaszban + 2 üres szakasz, • a lebegőpontos utasítások a regiszterek eléréséhez általában 1 szakaszt igényelnek + 3-at a végrehajtáshoz. 9. előadás

  19. picoJava II CPU mikroarchitektúrája (4.51. ábra) Nem szuperskaláris: a mikroműveleteket a kiosztás sorrendjében hajtja végre és fejezi be (a fő cél az volt, hogy olcsó legyen). Regiszter oszlop: 64 db 32 bites regiszter, a verem tetején lévő szavakat tartalmazza. Automatikus eljárás (cselező – dribbling):a regiszter oszlop ne legyen túl tele vagy túl üres. Ciklikus puffer 2 mutatóval: nem kell másolgatni. 9. előadás

  20. picoJava II CPU mikro-architektúrája (4.51. ábra) Memória és B/K sín illesztő egység 32 32 0-16 KB I gyorsító tár 0-16 KB D gyorsító tár 32 32 Előre betöltő, dekódoló, összevonó egység Végrehajtást vezérlő egység Egész és lebegőpontos egység 2x32 3x32 64 db 32 bites regiszter Regiszter oszlop A regiszter oszlop közvetlenül, a D gyorsító egy ciklus késleltetéssel érhető el. 9. előadás

  21. Betöltés az I gyorsítótárból Dekódolás, összevonás Operandusok a veremből Utasítás végrehajtás D gyorsítóba írás Eredmények verembe írása picoJava II csővezetéke (4.52. ábra) Nem szuperskaláris, a mikroműveleteket a kiosztás sorrendjében hajtja végre. • Betöltés: egyszerre 8 bájt az I gyorsítótárból. • Dekódolás: RISC jellegű, két forrás és egy cél regisztert tartalmazó mikroutasításokat állít előa CISC utasítás folyamból. • Operandus betöltés a veremből (regiszter oszlopból). • Utasítás végrehajtás. • Ha kell, a D gyorsítóba írás. • Eredmények verembe írása, ha kell. 9. előadás

  22. Utasítás összevonás, pl.: n=k+m; (4.53. ábra) Összevont utasítás után ILOAD k után ILOAD m után ISTORE n után IADD után Kezdetben Kezdetben A dekódoló egyetlen mikroműveletté vonja össze. 9. előadás

  23. Utasítás csoportok (4.54. ábra) JVM-nek több utasítása van, mint IJVM-nek! Több utasítás tartozik egy csoportba. 9. előadás

  24. Utasítások összevonása A dekódoló figyeli, hogy a sorozat megfelel-e egy legfeljebb 4 hosszú mintának (4.55. ábra). Ha megfelel, akkor a sorozatot egyetlen mikroutasítással helyettesíti. 74 bites mikroműveleteket oszt ki, ezek legtöbbje egy kódot és három regisztert tartalmaz, és egy ciklusban végrehajtható. 9. előadás

  25. Elágazás jövendölés: nem lesz elágazás! Inkább olcsó, mint bonyolult hardver! 9. előadás

  26. Összehasonlítás Pentium II CISC gép egy CISC utasítás → több RISC mikroutasítás UltraSPARC II RISC gép picoJava II verem gép, sok memória hivatkozás több CISC utasítás → egy RISC mikroutasítás 9. előadás

  27. Makró és blokk ismétlés Makró definíció: M_név MACRO [fpar1[,fpar2...]] ; makró fej (kezdet) ... ; makró törzs ENDM ; makró vége fpar1,fpar2... formális paraméterek vagy egyszerűen paraméterek. A makró definíció nem lesz része a lefordított programnak, csupán azt határozza meg, hogy később mit kell a makró hívás helyére beírni (makró kifejtés, helyettesítés). A makró törzsön belül előfordulhat makró hívás és másik makró definíció is. 9. előadás

  28. Makró hívás: M_név [apar1[,apar2...]] apar1,apar2... aktuális paraméterek/argumentumok. A műveleti kód helyére írt M_név hatására a korábban megadott definíció szerint megtörténik a makró helyettesítés, más néven makró kifejtés. Ez a makró törzs bemásolását jelenti, miközben az összes paraméter összes előfordulása a megfelelő argumentummal helyettesítődik. A helyettesítés szövegesen történik, azaz minden paraméter – mint szöveg – helyére a megfelelő argumentum – mint szöveg – kerül. A helyettesítés nem rekurzív. Makró hívás argumentuma sem lehet makró hívás. Az argumentumnak megfelelő formális paraméternek lehet olyan előfordulása, amely a későbbiek során makró hívást eredményez. 9. előadás

  29. Dupla szavas összeadás: (DX:AX)(DX:AX)+(CX:BX) 9. előadás

  30. Ha a programban valahol dupla szavas összeadást kell végezzünk, akkor hívnunk kell az eljárást illetve a makrót: 9. előadás

  31. Látható, hogy eljárás esetén kettővel több utasítást kell végrehajtanunk, mint makró esetében (CALL EDADD és RET). Még nagyobb különbséget tapasztalunk, ha (CX:BX) helyett paraméterként kívánjuk megadni az egyik összeadandót: 9. előadás

  32. 9. előadás

  33. Most sem része a makró definíció a lefordított programnak. 9. előadás

  34. Paraméter másutt is előfordulhat a makró törzsben, nemcsak az operandus részen, pl.: PL macro p1,P2 mov ax,p1 P2 p1 endm PL Adat, INC hatása: mov ax,Adat INC Adat 9. előadás

  35. A &, %, ! karakterek továbbá a <> és ;; speciális szerepet töltenek be makró kifejtéskor. & (helyettesítés operátor): • ha a paraméter – helyettesített – értéke része egy szónak; • idézeten belüli helyettesítés: errgen macro y, x err&y db ’Error &y: &x’ endm errgen 5, <Unreadable disk> hatása: err5 db ’Error 5: Unreadable disk’ 9. előadás

  36. <> (literál szöveg operátor): Ha aktuális paraméter szóközt vagy ,-t is tartalmaz. Az előző példa eredménye <> nélkül: errgen 5, Unreadable disk kifejtve: err5 db ’Error 5: Unreadable’ adat macro p db p endm adat <’abc’,13,10,0> adat ’abc’,13,10,0 kifejtve: db ’abc’,13,10,0 db ’abc’ 9. előadás

  37. ! (literál karakter operátor): Az utána következő karaktert makró kifejtéskor közönséges karakterként kell kezelni. Pl.: a korábbi errgen makró errgen 103, <Expression !> 255> hívásának hatása: err103 db ’Error 103: Expression > 255’ de errgen 103, <Expression > 255> hívásának hatása: err103 db ’Error 103: Expression ’ 9. előadás

  38. % (kifejezés operátor): Az utána lévő argumentum (kifejezés is lehet) értéke – és nem a szövege – lesz az aktuális paraméter. Pl.: sym1 equ 100 sym2 equ 200 txt equ ’Ez egy szöveg’ kif macro exp, val db ”&exp = &val” endm kif <sym1+sym2>, %(sym1+sym2) kif txt, %txt db ”sym1+sym2 = 300” db ”txt = ’Ez egy szöveg’” 9. előadás

  39. Az alábbi példa a % használatán kívül a makró törzsön belüli makró hívást is bemutatja: s = 0 ErrMsg MACRO text s = s+1 Msg %s,text ENDM Msg MACRO sz,str msg&sz db str ENDM 9. előadás

  40. ErrMsg ’syntax error’ makró hívás hatására bemásolásra kerül (.LALL hatására látszik a listán) az s = s+1 Msg %s,’syntax error’ szöveg. s értéke itt 1-re változik. Újabb makró hívás (Msg). A %s paraméter az értékére (1) cserélődik, majd kifejtésre kerül ez a makró is, ebből kialakul: msg1 db ’syntax error’ 9. előadás

  41. Egy újabb hívás és hatása: ErrMsg ’invalid operand’ msg2 db ’invalid operand’ 9. előadás

  42. ;;(makró kommentár): A makró definíció megjegyzéseinek kezdetét jelzi. A ;; utáni megjegyzés a makró kifejtés listájában nem jelenik meg. 9. előadás

  43. LOCAL c1[,c2...] c1, c2, ...minden makró híváskor más, ??xxxx alakú szimbólumra cserélődik, ahol xxxx a makró generátor által meghatározott hexadecimális szám. A LOCAL operátort közvetlenül a makró fej utáni sorba kell írni. KOPOG macro n LOCAL ujra mov cx,n ujra: KOPP loop ujra endm Ha a programban többször hívnánk a KOPOG makrót, akkor a LOCAL operátor nélkül az ujra címke többször lenne definiálva. 9. előadás

  44. Makró definíció belsejében lehet másik makró definíció is. A belső makró definíció csak a külső makró meghívása után jut érvényre, válik láthatóvá. Pl.: shifts macro OPNAME ; makrót ; definiáló makró OPNAME&S MACRO OPERANDUS,N mov cl, N OPNAME OPERANDUS,cl ENDM endm 9. előadás

  45. shifts macro OPNAME ; makrót ; definiáló makró OPNAME&S MACRO OPERANDUS,N mov cl, N OPNAME OPERANDUS,cl ENDM endm Ha ezt a makrót felhívjuk pl.: shifts ROR akkor a RORS MACRO OPERANDUS,N mov cl, N ROR OPERANDUS,cl ENDM makró definíció generálódik. 9. előadás

  46. RORS MACRO OPERANDUS,N mov cl, N ROR OPERANDUS,cl ENDM Mostantól meghívható a RORS makró is, pl.: RORS AX, 5 aminek a hatása: mov cl, 5 ROR AX,cl 9. előadás

  47. Makró definíció belsejében meghívható az éppen definiálás alatt lévő makró is (a makró hívás ezáltal rekurzívvá válik). PUSHALL macro reg1,reg2,reg3,reg4,reg5 IFNB <reg1> ;; ha a paraméter nem üres push reg1 ;; az első regiszter mentése PUSHALL reg2,reg3,reg4,reg5 ;; rekurzió ENDIF ENDM Most pl. a PUSHALL ax, bx, cx makró hívás hatása: push ax push bx push cx 9. előadás

  48. PUSHALL macro reg1,reg2,reg3,reg4,reg5 IFNB <reg1> ;; ha a paraméter nem üres push reg1 ;; az első regiszter mentése PUSHALL reg2,reg3,reg4,reg5 ;; rekurzió ENDIF ENDM PUSHALL ax, bx, cx makró hívás hatása: push ax PUSHALL bx, cx az újabb hívás hatása: push bx PUSHALL cx az újabb hívás hatása: push cx PUSHALL ennek hatására nem generálódik semmi. 9. előadás

  49. FL_CALLELJ = 0 CALLELJ macro ;;Eljárást beépítő és felhívó makró LOCAL FIRST ;;nem lenne fontos IF FL_CALLELJ ;;a 2. hívástól igaz call Elj ;;elég felhívni az eljárást EXITM ;;makró helyettesítés vége ENDIF FL_CALLELJ = 1 ;;csak az első híváskor JMP FIRST ;;jut érvényre Elj proc ;;eljárás deklaráció ... ret Elj endp FIRST: call Elj ;;az eljárás felhívása endm 9. előadás

  50. Az első CALLELJ hívás hatására az FL_CALLELJ = 1 JMP ??0000 Elj proc ... ret Elj endp ??0000: call Elj utasítások generálódnak (??0000a FIRST-ből keletkezett). 9. előadás

More Related