Utastsrendszerarchitektra szintje ISA Amit a fordt program ksztjnek

  • Slides: 72
Download presentation
Utasításrendszer-architektúra szintje (ISA) Amit a fordító program készítőjének tudnia kell: memóriamodell, regiszterek, adattípusok, utasítások.

Utasításrendszer-architektúra szintje (ISA) Amit a fordító program készítőjének tudnia kell: memóriamodell, regiszterek, adattípusok, utasítások. A hardver és szoftver között helyezkedik el, 5. 1 ábra. FORTRAN program C program Fordítás szoftver ISA szint hardver ISA szint végrehajtása microprogram vagy hardver által Hardver Általában a mikroarchitektúra nem tartozik hozzá. Máté: Architektúrák 10. előadás 1

Utasítások szintje (ISA) A jóság két kritériuma: • hatékony hardver megvalósítási lehetőség, • jó

Utasítások szintje (ISA) A jóság két kritériuma: • hatékony hardver megvalósítási lehetőség, • jó médium a fordítóknak. Továbbfejlesztéseknél ügyelni kell a kompatibilitásra! Nyilvános definíció: van: SPARC, JVM (tervezők); nincs: Pentium 4 (gyártók). kernelmód Máté: Architektúrák (user) felhasználói mód 10. előadás 2

Memória modellek ASCII kód 7 bit + paritás → Byte (bájt) Szó: 4 vagy

Memória modellek ASCII kód 7 bit + paritás → Byte (bájt) Szó: 4 vagy 8 byte. Igazítás (alignment), 5. 2. ábra: hatékonyabb, de probléma a kompatibilitás (a Pentium 4 -nek két ciklusra is szüksége lehet egy szó beolvasásához). cím 0 8 16 24 8 bájt cím 0 8 16 24 Nem igazított 8 bájtos szó a 12 -es címtől 8 bájtos szó 8 határra igazítva Néha (pl. 8051) külön memória az adatoknak és az utasításoknak (nem ugyanaz, mint az osztott gyorsítótár!). Máté: Architektúrák 10. előadás 3

Memória modellek Memória szemantika: STORE A -t közvetlenül követő LOAD A mit ad vissza?

Memória modellek Memória szemantika: STORE A -t közvetlenül követő LOAD A mit ad vissza? A memória műveletek végrehajtása: • kötött sorrendben, • definiálatlan sorrendben (ez a trend, mert hardver szinten egyszerűbb és gyorsabb). A hardver segítséget nyújthat: – SYNC utasítás: befejeztet minden megkezdett memória műveletet, – függőség esetén a hardver vár. Máté: Architektúrák 10. előadás 4

Regiszterek ISA-szinten a mikroszint nem minden regisztere látszik (TOS, MAR), de van közös is

Regiszterek ISA-szinten a mikroszint nem minden regisztere látszik (TOS, MAR), de van közös is (PC, SP). Speciális regiszterek: PC, SP, … Általános célú regiszterek: a gyakran használt adatok gyors elérésére. Jó, ha szimmetrikusak: fordítók, konvenciók. RISC gépen általában legalább 32 általános célú. Kernelmódban továbbiak: gyorsítótár vezérlés, memória védelem, … PSW (Program Status Word): az eredmény negatív, nulla, . . . mód, prioritásszint, megszakítás-állapot, . . . Máté: Architektúrák 10. előadás 5

Utasításkészlet LOAD, STORE, MOVE, aritmetikai, logikai, feltétlen, feltételes elágazó utasítások, … Máté: Architektúrák 10.

Utasításkészlet LOAD, STORE, MOVE, aritmetikai, logikai, feltétlen, feltételes elágazó utasítások, … Máté: Architektúrák 10. előadás 6

Pentium 4 Nagyon sok előd (kompatibilitás!), a fontosabbak: • 4004: 4 bites, • 8086,

Pentium 4 Nagyon sok előd (kompatibilitás!), a fontosabbak: • 4004: 4 bites, • 8086, 8088: 16 bites, 8 bites adat sín. • 80286: 24 bites (nem lineáris) címtartomány (16 K darab 64 KB-os szegmens). • 80386: IA-32 architektúra, az Intel első 32 bites gépe, lényegében az összes későbbi is ezt használja. • Pentium II –től MMX utasítások. Máté: Architektúrák 10. előadás 7

A Pentium 4 üzemmódjai real (valós): az összes 8088 utáni fejlesztést kikapcsolja (valódi 8088

A Pentium 4 üzemmódjai real (valós): az összes 8088 utáni fejlesztést kikapcsolja (valódi 8088 -ként viselkedik). Hibánál a gép egyszerűen összeomlik, lefagy. virtuális 8086: a 8088 -as programok védett módban futnak (ha WINDOWS-ból indítjuk az MS-DOS-t, és abban hiba történik, akkor nem fagy le, hanem visszaadja a vezérlést a WINDOWS-nak). védett: valódi Pentium 4. 4 védelmi szint (PSW): 0: kernelmód (operációs r. ), 1, 2: ritkán használt, 3: felhasználói mód. Máté: Architektúrák 10. előadás 8

Memóriaszervezés: • 16 K db szegmens lehetséges, de a WINDOWS-ok és UNIX is csak

Memóriaszervezés: • 16 K db szegmens lehetséges, de a WINDOWS-ok és UNIX is csak 1 szegmenst támogatnak, és ennek is egy részét az operációs rendszer foglalja el, • minden szegmensen belül a címtartomány: 0 - 232 -1 • Little endian tárolási mód: az alacsonyabb címen van az alacsonyabb helyértékű bájt. Máté: Architektúrák 10. előadás 9

Regiszterek (5. 3. ábra): • (majdnem) általános regiszterek: 32 EAX EBX ECX EDX 16

Regiszterek (5. 3. ábra): • (majdnem) általános regiszterek: 32 EAX EBX ECX EDX 16 8 8 AH AX AL BH BX BL CH CX CL DH DX DL Accumulator Base index Count Data Ezek 8 és 16 bites részei önálló regiszterként használhatók. Máté: Architektúrák 10. előadás 10

Regiszterek (5. 3. ábra): • ESI, EDI (mutatók tárolására, szöveg kezelésre), • EBP (keretmutató,

Regiszterek (5. 3. ábra): • ESI, EDI (mutatók tárolására, szöveg kezelésre), • EBP (keretmutató, verem kezelésre), • ESP (verem mutató), • EIP (utasítás számláló), • EFLAGS (PSW), • CS, SS, DS, ES, FS, GS (16 bites regiszterek. A kompatibilitást biztosítják a régebbi gépekkel. Mivel a Windows, Unix csak egy címtartományt használ, ezekre csak a visszafelé kompatibilitás miatt van szükség). Máté: Architektúrák 10. előadás 11

Ultra. SPARC III SPARC 1987 még 32, a Version 9 már 64 bites architektúra,

Ultra. SPARC III SPARC 1987 még 32, a Version 9 már 64 bites architektúra, az Ultra. SPARC ezen alapul. Memóriaszervezés: 64 bites (lineáris) címtartomány (jelenleg maximum 44 bit használható). Big endian, de little endian is beállítható. Regiszterek: • 32 általános (5. 4. ábra) 64 bites, a használatuk részben konvención, részben a hardveren alapul), • 32 lebegőpontos (32 vagy 64 bites, de lehetséges két regiszterben egy 128 bites számot tárolni). Máté: Architektúrák 10. előadás 12

Általános regiszterek • R 0 -R 7 (G 0 -G 7) Globális változók: minden

Általános regiszterek • R 0 -R 7 (G 0 -G 7) Globális változók: minden eljárás használhatja, G 0 huzalozott 0, minden tárolás eredménytelen. • R 8 -R 15 (O 0 -O 7, ): Kimenő paraméterek, de R 14 (O 6) = SP: verem mutató O 7 csak ideiglenes tárolásra használható. • R 16 -R 23 (L 0 -L 7) Lokális regiszterek • R 24 -R 31 (I 0 -I 7) Bejövő paraméterek, de R 30 (I 6) = FP az aktuális veremkeret mutatója, R 31: visszatérési cím. Máté: Architektúrák 10. előadás 13

CWP (Current Window Pointer, 5. 5. ábra) mutatja az aktuális regiszter ablakot (több regiszter

CWP (Current Window Pointer, 5. 5. ábra) mutatja az aktuális regiszter ablakot (több regiszter készlet létezik, de mindig csak egy látszik). Ha kifogy a regiszter készlet, memóriába mentés, … Globális CWP = 6 SP CWP = 7 R 14=SP R 30=FP Kimenő Átlapolás R 30=FP Kimenő Lokális Bemenő Lokális Korábbi Bemenő Korábbi Máté: Architektúrák 10. előadás 14

Load/store architektúra: csak ezek az utasítások fordulhatnak a memóriához. A többi utasítás operandusa regiszterben

Load/store architektúra: csak ezek az utasítások fordulhatnak a memóriához. A többi utasítás operandusa regiszterben vagy az utasításban van. Az eredmény is regiszterbe kerül. Máté: Architektúrák 10. előadás 15

5. 6. ábra. A 8051 memória szervezése, fő regiszterei Külön címtartományú program és adat

5. 6. ábra. A 8051 memória szervezése, fő regiszterei Külön címtartományú program és adat memória. Vannak lapkán kívüli bővítési 4095 lehetőségek. Van nagyobb Program memória (ROM) (8052) és programozható (8751 és 8752) „rokona” 0 (ROM helyett EPROM). 127 C A Munkaterület EA 48 32 Bit-címezhető memória O P PSW E 2 ES E 1 X 1 E 0 X 0 IE E 2 ES E 1 X 1 E 0 X 0 IP O 1 R 1 O 0 R 0 E 1 X 1 E 0 X 0 TCON 4 regiszterkészlet 1. időzítő 2. időzítő ← 8 bit → 0 Máté: Architektúrák RS 10. előadás TMOD 16

8 regiszter: R 0, … , R 7. A regiszterek a memóriában vannak. 4

8 regiszter: R 0, … , R 7. A regiszterek a memóriában vannak. 4 regiszter készlet, de egyszerre csak egy használható. PSW RS mezeje mondja meg, hogy melyik az aktuális. Bit-címezhető memória (32 -47. bájt): címzésük: 0 -127 Bit utasítások: beállítás, törlés, ÉS, VAGY, tesztelés. PSW: Carry, Auxiliary carry, Register. S, Overflow, Parity 127 C A Munkaterület EA 48 32 Bit-címezhető memória O P PSW E 2 ES E 1 X 1 E 0 X 0 IE E 2 ES E 1 X 1 E 0 X 0 IP O 1 R 1 O 0 R 0 E 1 X 1 E 0 X 0 TCON 4 regiszterkészlet 1. időzítő 2. időzítő ← 8 bit → 0 Máté: Architektúrák RS 10. előadás TMOD 17

IE (Interrupt Enable): EA=1: megszakítás engedélyezve, 0: tiltva ES=1: megszakítás engedélyezve a soros vonalon,

IE (Interrupt Enable): EA=1: megszakítás engedélyezve, 0: tiltva ES=1: megszakítás engedélyezve a soros vonalon, 0: tiltva E 0 -2=1: a 0 -2 időzítő csatorna engedélyezve, 0: tiltva X 1 -2=1: külső eszköz megszakítás engedélyezve, 0: tiltva Az engedélyezett számlálók egyszerre futhatnak, és ezek megsz IP (Interrupt Priority): 0 (alacsony), 1 (magas). C A EA RS O P PSW E 2 ES E 1 X 1 E 0 X 0 IE E 2 ES E 1 X 1 E 0 X 0 IP O 1 R 1 O 0 R 0 E 1 X 1 E 0 X 0 TCON 1. időzítő 2. időzítő ← 8 bit → Máté: Architektúrák 10. előadás TMOD 18

TCON: a 0. és 1. időzítőt vezérli (ezek a fő időzítők). O 0 -1:

TCON: a 0. és 1. időzítőt vezérli (ezek a fő időzítők). O 0 -1: beáll az időzítő túlcsordulásakor. R 0 -1: ezzel ki- és bekapcsolható az időzítő futása. A többi az időzítő él- vagy szintvezérlésével kapcsolatos. TMOD: a fő időzítők üzemmódját határozza meg 8, 13 vagy 16 bites, valódi időzítő vagy számláló, hardver jelek szintje. C A EA RS O P PSW E 2 ES E 1 X 1 E 0 X 0 IE E 2 ES E 1 X 1 E 0 X 0 IP O 1 R 1 O 0 R 0 E 1 X 1 E 0 X 0 TCON 1. időzítő 2. időzítő ← 8 bit → Máté: Architektúrák 10. előadás TMOD 19

Az eddig említett és még néhány speciális regiszter (ACC, B/K Pl. ACC a 240

Az eddig említett és még néhány speciális regiszter (ACC, B/K Pl. ACC a 240 -en. A 8052 valódi memóriát tartalmaz a 128 -255 tartományban, a sp – Direkt címzéssel a speciális regisztereket, – Indirekt címzéssel a RAM-ot érhetjük el. Máté: Architektúrák 10. előadás 20

Címzési módszerek 3, 2, 1, 0 címes utasítások. Címzési módok: • közvetlen operandus, •

Címzési módszerek 3, 2, 1, 0 címes utasítások. Címzési módok: • közvetlen operandus, • direkt címzés, • regiszter címzés • regiszter-indirekt címzés, • indexelt címzés, • bázisindex címzés, • verem címzés. Máté: Architektúrák 10. előadás 21

Verem címzés Fordított Lengyel Jelölés (Postfix Polish Notation - Lukasiewicz) Postfix jelölés: a kifejezéseket

Verem címzés Fordított Lengyel Jelölés (Postfix Polish Notation - Lukasiewicz) Postfix jelölés: a kifejezéseket olyan formában adjuk meg, hogy az első operandus után a másodikat, majd ezután adjuk meg a műveleti jelet: infix: x + y, postfix: x y +. Előnyei: nem kell zárójel, sem precedencia szabályok, jól alkalmazható veremcímzés esetén. Máté: Architektúrák 10. előadás 22

Dijkstra algoritmusa Infix jelölés konvertálása postfix-re (5. 21, 22. ábra): • az infix elemek

Dijkstra algoritmusa Infix jelölés konvertálása postfix-re (5. 21, 22. ábra): • az infix elemek egy váltóhoz (switch) érkeznek - a változók és konstansok Kaliforniába mennek ( ), • a többi esetben a verem tetejétől függően (5. 22. ábra): váltó Máté: Architektúrák A * ( B + C ) – a kocsi Texas felé megy (1: ), – a verem teteje Kaliforniába megy (2: ), – a kocsi eltűnik a verem tetejével együtt (3: ), – vége az algoritmusnak (4: ), – hibás az infix formula (5: ? ). 10. előadás 23

Minden változó és konstansok menjen Kaliforniába ( ), a többi esetben a döntési tábla

Minden változó és konstansok menjen Kaliforniába ( ), a többi esetben a döntési tábla szerint járjunk el (5. 21. ábra): A verem teteje váltó A * ( B A váltó előtti kocsi + - * / ( ) ? + * / ( ? + C ) változó Kaliforniába New Yorkból Texasba Texasból Kaliforniába Törlődjön a következő és az utolsó texasi kocsi „ Kaliforniában” kész a postfix forma ? Hibás az infix formula A döntési tábla tartalmazza a prioritási szabályokat. Máté: Architektúrák 10. előadás 24

A*(B+C) B+C) Máté: Architektúrák A verem teteje ▼ A ▼ * A ▼ (

A*(B+C) B+C) Máté: Architektúrák A verem teteje ▼ A ▼ * A ▼ ( * AB ▼ ( * 10. előadás A váltó előtti kocsi + - * / ( ) ? + - * / ( ? 25

ABC ABC+ ▼ + ( * ▼ ( * Máté: Architektúrák C) ) )

ABC ABC+ ▼ + ( * ▼ ( * Máté: Architektúrák C) ) ) A verem teteje AB + * / ( A váltó előtti kocsi + - * / ( ) ? ABC+* 10. előadás ▼ * ▼ 26

Fordított lengyel jelölésű formulák kiértékelése Pl. (5. 24. ábra): (8 + 2 * 5)/(1

Fordított lengyel jelölésű formulák kiértékelése Pl. (5. 24. ábra): (8 + 2 * 5)/(1 + 3 * 2 – 4) // infix 825*+132*+4–/ // postfix Olvassuk a formulát balról jobbra! Ha a következő jel • operandus: rakjuk a verembe, • műveleti jel: hajtsuk végre a műveletet (a verem tetején van a jobb, alatta a bal operandus!). Máté: Architektúrák 10. előadás 27

(8 + 2 * 5)/(1 + 3 * 2 – 4) Lépés Maradék formula

(8 + 2 * 5)/(1 + 3 * 2 – 4) Lépés Maradék formula Utasítás 1 8 2 5 * + 1 3 2 * + 4 - / BIPUSH 2 2 5 * + 1 3 2 * + 4 - / BIPUSH 3 5*+132*+4 -/ BIPUSH 4 *+132*+4 -/ IMUL 5 +132*+4 -/ IADD 6 132*+4 -/ BIPUSH 7 32*+4 -/ BIPUSH 8 2*+4 -/ BIPUSH 9 *+4 -/ IMUL 10 + 4 - / IADD 11 4 - / BIPUSH 12 - / ISUB 13 / IDIV Máté: Architektúrák 10. előadás 8 2 5 1 3 2 4 // infix Verem 8 8, 2, 5 8, 10 18 18, 1, 3, 2 18, 1, 6 18, 7, 4 18, 3 6 28

Az ISA szint tervezési szempontjai • Hosszú távú: később is jó legyen az architektúra,

Az ISA szint tervezési szempontjai • Hosszú távú: később is jó legyen az architektúra, Rövid távú: addig is piacon kell maradni. • Rövidebb utasítások: kevesebb helyet foglalnak el, gyorsabban betölthetők. Hosszabb utasítások: több lehetséges műveleti kód, nagyobb memória címezhető. • Bájt címzés: hatékonyabb szöveg feldolgozásnál, Szó címzés: nagyobb memória címezhető. • … Máté: Architektúrák 11. előadás 29

Utasításformák, utasításhossz (5. 10 -11. ábra). Műveleti kód cím Műv. kód cím 1 cím

Utasításformák, utasításhossz (5. 10 -11. ábra). Műveleti kód cím Műv. kód cím 1 cím 2 M. k. cím 1 cím 2 cím 3 1 szó utasítás utasítás utasítás Máté: Architektúrák 11. előadás 1 szó utasítás ut. utasítás 30

A műveleti kód kiterjesztése k bites műveleti kód esetén 2 k különböző utasítás lehet,

A műveleti kód kiterjesztése k bites műveleti kód esetén 2 k különböző utasítás lehet, n bites címrésznél 2 n memória címezhető, fix utasítás hossz esetén egyik csak a másik rovására növelhető (5. 12. ábra). 15 14 13 12 11 10 9 műv. kód 8 7 1. cím 6 5 2. cím 4 3 2 1 0 3. cím Lehetőségek: • fix utasításhossz: rövidebb kód mellett hosszabb operandus rész, • minimális átlagos utasításhossz: a gyakori kódok rövidek, a ritkán használtak hosszabbak. Máté: Architektúrák 10. előadás 31

A műveleti kód kiterjesztése (5. 13. ábra) 16 bit 1111 0000 yyyy 0000 xxxx

A műveleti kód kiterjesztése (5. 13. ábra) 16 bit 1111 0000 yyyy 0000 xxxx yyyy zzzz 1111 0001 yyyy 0001 xxxx yyyy zzzz 1111 0010 yyyy 0010 xxxx yyyy zzzz 8 bites 4 bites 15 db. . műveleti 3 címes műveleti. . kód utasítás. . 1111 1011 yyyy 1100 xxxx yyyy zzzz 1111 1100 yyyy 1101 xxxx yyyy zzzz 1111 1101 yyyy 1110 xxxx yyyy zzzz 14 db 2 címes utasítás zzzz Az 1111 kódot nem használtuk ki 3 címes utasításnak (menekülő kód), és ez lehetővé teszi, hogy további – igaz, nem 3 címes – utasításokat adjunk meg. 1111 1110 és 1111 is menekülő kód. Máté: Architektúrák 10. előadás 32

A műveleti kód kiterjesztése 16 bit 1111 1110 0000 zzzz 1111 1110 0001 zzzz

A műveleti kód kiterjesztése 16 bit 1111 1110 0000 zzzz 1111 1110 0001 zzzz 1111 1110 0010 zzzz 1111. 16 bites. . műveleti. . kód. 12 bites 1111 1110 zzzz 31 db 1111 műveleti 1111 1110 1111 zzzz 1 címes 1111 kód 1111 0000 zzzz utasítás 1111 1111 0001 zzzz. . . 1111 1101 zzzz 1111 1110 zzzz 0000 0001 0010 16 db 0 címes utasítás 1101 1110 1111 is menekülő kód. Máté: Architektúrák 10. előadás 33

Ortogonalitási elv: Jó architektúrában a műveleti kódok és a címzési módszerek (majdnem) szabadon párosíthatók.

Ortogonalitási elv: Jó architektúrában a műveleti kódok és a címzési módszerek (majdnem) szabadon párosíthatók. Három címes elképzelés (5. 25. ábra): 8 1 5 5 5 1 Műv. kód 0 cél forrás 1 forrás 2 2 Műv. kód 3 Műv. kód 1 cél forrás 1 8 Műv. kód eltolás 1. típus: aritmetikai utasítások. 2. típus: közvetlen adat megadás, index módú LOAD és STORE utasítás. 3. típus: elágazó, eljárás hívó utasítások, LOAD és STORE, ezek R 0 -t használnák. Máté: Architektúrák 10. előadás 34

Két címes elképzelés (5. 26. ábra). 8 3 5 4 Műv. kód mód reg

Két címes elképzelés (5. 26. ábra). 8 3 5 4 Műv. kód mód reg eltolás Feltételes 32 bites direkt operandus vagy eltolás A mód 3 bitje lehetővé teszi a közvetlen operandus, direkt, regiszter indirekt, index és verem címzési módokat Két további mód bevezetésére is lehetőség van. Máté: Architektúrák 10. előadás 35

Pentium 4 utasításformái (5. 14. ábra) Több generáción keresztül kialakult architektúra. Csak egy operandus

Pentium 4 utasításformái (5. 14. ábra) Több generáción keresztül kialakult architektúra. Csak egy operandus lehet memória cím. Prefix, escape (bővítésre), MOD, SIB (Scale Index Base) 0 -5 prefix 1 -2 műv. kód 6 utasítás 0 -1 mód 0 -4 eltolás 0 -4 bájt közvetlen 2 3 3 bit skála index bázis 1 1 bit Melyik operandus bájt/szó a forrás? Máté: Architektúrák 0 -1 SIB 2 3 3 bit mód REC R/M 10. előadás 36

Címzési módok (5. 27. ábra): nagyon szabálytalan. Baj: nem minden utasításban használható minden mód,

Címzési módok (5. 27. ábra): nagyon szabálytalan. Baj: nem minden utasításban használható minden mód, nem minden regiszter használható minden módban (nincs EBP indirekt, ESP relatív címzés). 32 bites címzési módok: R/M 000 001 010 011 100 101 110 111 00 M[EAX] M[ECX] M[EDX] M[EBX] SIB direkt M[ESI] M[EDI] Máté: Architektúrák 01 M[EAX+offset 8] M[ECX+offset 8] M[EDX+offset 8] M[EBX+offset 8] SIB offset 8 -cal M[EBP+offset 8] M[ESI+offset 8] M[EDI+offset 8] MÓD 10 M[EAX+offset 32] M[ECX+offset 32] M[EDX+offset 32] M[EBX+offset 32] SIB offset 32 -vel M[EBP+offset 32] M[ESI+offset 32] M[EDI+offset 32] 10. előadás 11 EAX v. AL ECX v. CL EDX v. DL EBX v. BL ESP v. AH EBP v. CH ESI v. DH EDI v. BH 37

Verem keret ← EBP Egyéb lokális változók a[0] a[1] a[2] ← EBP+8 ← EBP+12

Verem keret ← EBP Egyéb lokális változók a[0] a[1] a[2] ← EBP+8 ← EBP+12 ← EBP+16 2 3 3 bit skála index bázis Legyen i az EAX regiszterben SIB módú hivatkozás: M[4*EAX+EBP+8] SIB (5. 28. ábra): jó, de megéri? Máté: Architektúrák 10. előadás 38

Ultra. SPARC utasításformái (5. 15. ábra) 32 bites egyszerű utasítások. Form. 2 1 a

Ultra. SPARC utasításformái (5. 15. ábra) 32 bites egyszerű utasítások. Form. 2 1 a m. k. 1 b m. k. 5 cél 6 m. k. 5 1 8 5 forrás 1 0 FP-m. k. forrás 2 3 címes forrás 1 1 közvetlen konst. 2 címes Aritmetikai utasítások: 1 cél és 2 forrás regiszter vagy 1 cél, 1 forrás regiszter és 1 közvetlen konstans. LOAD, STORE (csak ezek használják a memóriát): a cím két regiszter összege vagy egy regiszter + 13 bites eltolás. Processzorokat szinkronizáló utasítás. Máté: Architektúrák 10. előadás 39

Form. 2 2 m. k. 5 cél 3 m. k. 22 közvetlen konstans SETHI

Form. 2 2 m. k. 5 cél 3 m. k. 22 közvetlen konstans SETHI 32 bites közvetlen adat megadása: SETHI – megad 22 bitet, a következő utasítás a maradék 10 bitet. Form. 2 1 4 3 3 m. k. A felt m. k. 3 22 (19) PC relatív cím UGRÁS Az ugrások PC-relatívok, szót (4 -gyel osztható bájt címet) címeznek. Jósláshoz 3 bitet elcsíptek. Az A bit az eltolás rést akadályozza meg bizonyos feltételek esetén. Form. 2 4 m. k. 30 PC relatív cím CALL Eljárás hívás: 30 bites PC-relatív (szó) cím Máté: Architektúrák 10. előadás 40

Ultra. SPARC címzési módjai Memóriára hivatkozó utasítások: betöltő, tároló, multiprocesszor szinkronizáló index + 13

Ultra. SPARC címzési módjai Memóriára hivatkozó utasítások: betöltő, tároló, multiprocesszor szinkronizáló index + 13 bit eltolás, bázis-index A többi utasítás általában 5 bites regiszter címzést használ Máté: Architektúrák 10. előadás 41

A 8051 utasításformátumai 1 2 3 4 1. 2. 3. 4. 5. 6. Műv.

A 8051 utasításformátumai 1 2 3 4 1. 2. 3. 4. 5. 6. Műv. kód 5 Műv. kód 6 Műv. kód Pl. ACC növelő R R 3 bites regisztercím Operandus 11 bites cím 16 bites cím Operandus 1 Operandus 2 Implicit regiszter általában ACC, … Regiszter és ACC tartalmán végzett művelet, mozgatás, … Operandus: közvetlen, eltolás, bitsorszám Ugrás, szubrutin hívás Pl. közvetlen operandus memóriába töltése, … Máté: Architektúrák 10. előadás 42

A 8051 címzési módjai Implicit: ACC Regiszter: akár forrás, akár cél operandus lehet Direkt:

A 8051 címzési módjai Implicit: ACC Regiszter: akár forrás, akár cél operandus lehet Direkt: 8 bites memóriacím Regiszter-indirekt: 8 bites memóriacím Indirekt címzés a 16 bites DPTR-rel Közvetlen operandus: általában 8 bites, de 11 ill. 16 bites abszolút cím ugráshoz, eljárás híváshoz Máté: Architektúrák 10. előadás 43

Összefoglaló: 5. 29. ábra. Címzési mód Pentium 4 Ultra. SPARC III 8051 Akkumulátor X

Összefoglaló: 5. 29. ábra. Címzési mód Pentium 4 Ultra. SPARC III 8051 Akkumulátor X Közvetlen X X X Direkt X X Regiszter X X X Regiszter indirekt X X Index X X Bázis-index X X Verem A bonyolult címzési módok tömörebb programokat tesznek lehetővé, de nehezítik a párhuzamosítást. Ha a párosítás nem történhet szabadon, akkor jobb, ha csak egy választási lehetőség van (egyszerűbb hatékony fordítóprogramot írni). Máté: Architektúrák 10. előadás 44

 • • Utasítástípusok Adatmozgató (másoló) utasítások. Diadikus: +, -, *, /, AND, OR,

• • Utasítástípusok Adatmozgató (másoló) utasítások. Diadikus: +, -, *, /, AND, OR, NOT, XOR, … Monadikus: léptetés, forgatás, CLR, INC, NEG, … Összehasonlítás, feltételes elágazás: Z, O, C, … Eljáráshívás. Visszatérési cím: rögzített helyre (rossz) - az eljárás első szavába (jobb) - verembe (rekurzív eljárásokhoz is jó). Ciklusszervezés (5. 30. ábra): számláló Input/output (5. 31 -33. ábra): - programozott I/O: tevékeny várakozás, 5. 32. ábra - megszakítás vezérelt I/O - DMA I/O (5. 33. ábra): cikluslopás Máté: Architektúrák 10. előadás 45

Ciklusszervezés (5. 30. ábra) L 1: i=1; első utasítás. . . utolsó utasítás i

Ciklusszervezés (5. 30. ábra) L 1: i=1; első utasítás. . . utolsó utasítás i = i + 1; if(i ≤ n) goto L 1; L 1: L 2: Végfeltételes ismétlés Máté: Architektúrák i=1; if(i > n) goto L 2; első utasítás. . . utolsó utasítás i = i + 1; goto L 1; … Kezdő feltételes ismétlés 10. előadás 46

Feltételes végrehajtás (5. 51 -52. ábra): if(R 1 == 0) R 2 = R

Feltételes végrehajtás (5. 51 -52. ábra): if(R 1 == 0) R 2 = R 3; if(R 1 == 0) { R 2 = R 3; R 4 = R 5; } else { R 6 = R 7; R 8 = R 9; } CMP BNE MOV L 1: … CMP BNE MOV BR L 1: MOV L 2: … CMOVZ R 2, R 3, R 1 csak R 1, 0 L 1 R 2, R 3 CMOVZ R 2, R 3, R 1, 0 L 1 R 2, R 3 R 4, R 5 L 2 R 6, R 7 R 8, R 9 CMOVZ CMOVN R 2, R 3, R 1 R 4, R 5, R 1 R 6, R 7, R 1 R 8, R 9, R 1 akkor hajtja végre R 2 = R 3 -t, ha R 1= 0. Máté: Architektúrák 10. előadás 47

Predikáció, IA – 64 (5. 53. ábra) 64 predikátum regiszter: 1 bites regiszterek, többnyire

Predikáció, IA – 64 (5. 53. ábra) 64 predikátum regiszter: 1 bites regiszterek, többnyire párban. Az IA – 64 minden utasítása predikátumos. CMPEQ R 1, R 2, P 4 beállítja P 4 -et és törli P 5 -öt, ha R 1 = R 2, különben P 5 -öt állítja be és P 4 -et törli. if(R 1 == R 2) R 3 = R 4 + R 5; else R 6 = R 4 – R 5; Máté: Architektúrák CMP BNE MOV ADD BR L 1: MOV SUB L 2: … R 1, R 2 L 1 R 3, R 4 R 3, R 5 L 2 R 6, R 4 R 6, R 5 10. előadás CMPEQ <P 4>ADD <P 5>SUB R 1, R 2, P 4 R 3, R 4, R 5 R 6, R 4, R 5 48

A Pentium 4 utasításai • Egész utasítások legnagyobb része: 5. 34. ábra. • Egyéb

A Pentium 4 utasításai • Egész utasítások legnagyobb része: 5. 34. ábra. • Egyéb utasítások (pl. lebegőpontosak). Az Ultra. SPARC III utasításai Összes egész utasítás: 5. 35. ábra. A utasításnévben CC: beállítja a feltételkódot. Szimulált utasítások (5. 36. ábra), pl. : MOV SRC, DST ≡ OR SRC, G 0, DST A 8051 utasításai (5. 37. ábra) Bit utasítások, pl. a 43. bit 1 -re állítása: SETB 43 Máté: Architektúrák 10. előadás 49

Kifejezés A kifejezés szimbólumokból és konstansokból épül fel az alább ismertetendő műveletek segítségével. Kifejezés

Kifejezés A kifejezés szimbólumokból és konstansokból épül fel az alább ismertetendő műveletek segítségével. Kifejezés az operátorok, pszeudo operátorok operandus részére írható. Értékét a fordítóprogram határozza meg, és a kiszámított értéket alkalmazza operandusként. Szimbólumok értékén konstansok esetében természetesen a konstans értékét, címkék, változók esetében a hozzájuk tartozó címet – és nem a tartalmat – értjük. Máté: Architektúrák 10. előadás 50

Kifejezés A kifejezés értéke nemcsak számérték lehet, hanem minden, ami az utasításokban megengedett címzési

Kifejezés A kifejezés értéke nemcsak számérték lehet, hanem minden, ami az utasításokban megengedett címzési módok valamelyikének megfelel. Pl. [BX] is kifejezés és értéke a BX regiszterrel történő indirekt hivatkozás, és ehhez természetesen a fordító programnak nem kell ismernie BX értékét. Máté: Architektúrák 10. előadás 51

Természetesen előfordulhat, hogy egy kifejezés egyik szintaktikus helyzetben megengedett, a másikban nem, pl. :

Természetesen előfordulhat, hogy egy kifejezés egyik szintaktikus helyzetben megengedett, a másikban nem, pl. : mov mul ax, [BX]; [BX] megengedett [BX] ; [BX] hibás, de WORD PTR [BX] ; megengedett Egy kifejezés akkor megengedett, ha az értéke fordítási időben meghatározható és az adott szintaktikus helyzetben alkalmazható, pl. az adott utasítás lehetséges címzési módja megengedi. A megengedett kifejezés értékeket az egyes utasítások ismertetése során megadtuk. Máté: Architektúrák 10. előadás 52

A műveletek, csökkenő precedencia szerinti sorrendben: 1. ( ) és [ ] (zárójelek) továbbá

A műveletek, csökkenő precedencia szerinti sorrendben: 1. ( ) és [ ] (zárójelek) továbbá < >: míg a ( ) zárójel pár a kifejezés kiértékelésében csupán a műveletek sorrendjét befolyásolja, addig a [ ] az indirekció előírására is szolgál. Ha a [ ] -en belüli kifejezésre nem alkalmazható indirekció, akkor a ( ) -lel egyenértékű – LENGTH változó: a változó-hoz tartozó adat terület elemeinek száma – SIZE változó: a változó-hoz tartozó adat terület hossza byte-okban – WIDTH R/F: az R rekord vagy az F (rekord) mező szélessége bitekben – MASK F: az F (rekord) mező bitjein 1, másutt 0 Máté: Architektúrák 10. előadás 53

Pl. : v rec table str dw record dw db 20 dup (? )

Pl. : v rec table str dw record dw db 20 dup (? ) x: 3, y: 4 10 dup (1, 3 dup (? )) ” 12345” mov mov ax, LENGTH v ; ax ax, LENGTH rec ; ax ax, LENGTH table ; ax ; a belső DUP ignorálva! ax, LENGTH str ; ax ; str egy elem esetén: mov Máté: Architektúrák 10. előadás 54 20 1 10 1

v rec table str dw record dw db 20 dup (? ) x: 3,

v rec table str dw record dw db 20 dup (? ) x: 3, y: 4 10 dup (1, 3 dup (? )) ” 12345” mov mov ax, SIZE v ; ax 40 ax, SIZE rec ; ax 1 ax, SIZE table ; ax 20 ; a belső DUP ignorálva ax, SIZE str ; ax 1 ; str bájtos esetén: mov Máté: Architektúrák 10. előadás 55

v rec table str dw record dw db 20 dup (? ) x: 3,

v rec table str dw record dw db 20 dup (? ) x: 3, y: 4 10 dup (1, 3 dup (? )) ” 12345” mov mov ax, WIDTH rec ax, WIDTH x ax, MASK x esetén: Máté: Architektúrák 10. előadás ; ax 7 ; ax 3 ; ax 70 H 56

2. . (pont): struktúra mezőre hivatkozásnál használatos 3. : mező szélesség (rekord definícióban) és

2. . (pont): struktúra mezőre hivatkozásnál használatos 3. : mező szélesség (rekord definícióban) és explicit szegmens megadás (segment override prefix). Az explicit szegmens megadás az automatikus szegmens regiszter helyett más szegmens regiszter használatát írja elő, pl. : mov ax, ES: [BX] ; ax (ES: BX) címen lévő szó Nem írható felül az automatikus szegmens regiszter az alábbi esetekben: – CS program memória címzésnél, – SS stack referens utasításokban (PUSH, POP, . . . ), – ES string kezelő utasításban DI mellett, de az SI-hez tartozó DS átírható. Máté: Architektúrák 10. előadás 57

4. – típus PTR cím: (típus átdefiniálás) ahol típus lehet BYTE, WORD, DWORD, QWORD,

4. – típus PTR cím: (típus átdefiniálás) ahol típus lehet BYTE, WORD, DWORD, QWORD, TBYTE, illetve NEAR, FAR (előre hivatkozás esetén fontos) és PROC. Pl. : MUL BYTE PTR [BX] ; a [BX] címet ; byte-osan kell kezelni – OFFSET kifejezés: a kifejezés OFFSET címe (a szegmens kezdetétől számított távolsága byte-okban) – SEG kifejezés: a kifejezés szegmens címe (abban az értelemben, ahogy a szegmens regiszterben szokásos tárolni, tehát valós üzemmódban a szegmens tényleges kezdőcímének 16 -oda) Máté: Architektúrák 10. előadás 58

– TYPE változó: az elemek hossza byte-okban, ha változó, de TYPE string = 1,

– TYPE változó: az elemek hossza byte-okban, ha változó, de TYPE string = 1, TYPE konstans = 0, TYPE NEAR címke = -1, TYPE FAR címke = -2 JMP (TYPE cím) PTR [BX] ; NEAR vagy FAR ugrás –. . . THIS típus: a program szöveg adott pontján adott típusú szimbólum létrehozása Máté: Architektúrák 10. előadás 59

Pl. : ADATB EQU THIS BYTE ; BYTE típusú változó, helyfoglalás nélkül dw 1234

Pl. : ADATB EQU THIS BYTE ; BYTE típusú változó, helyfoglalás nélkül dw 1234 H ; ez az adat ADATB-vel byte-osan érhető el ADATW. . . mov mov al, BYTE PTR ADATW ; al 34 H, helyes al, ADATB ; al 34 H, helyes ah, ADATB+1 ; ah 12 H, helyes Emlékeztetünk arra, hogy szavak tárolásakor az alacsonyabb helyértékű byte kerül az alacsonyabb címre! Máté: Architektúrák 10. előadás 60

5. – LOW kifejezés: egy szó alsó (alacsonyabb helyértékű) byte-ja – HIGH kifejezés: egy

5. – LOW kifejezés: egy szó alsó (alacsonyabb helyértékű) byte-ja – HIGH kifejezés: egy szó felső (magasabb helyértékű) byte-ja Pl. : ADATW dw 1234 H mov al, LOW ADATW ; al 34 H mov ah, HIGH ADATW ; ah 12 H 6. Előjelek: + : pozitív előjel – : negatív előjel Máté: Architektúrák 10. előadás 61

7. Multiplikatív műveletek: – : szorzás – / : osztás – MOD: (modulo) a

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őbbiket a fordító program, az utóbbikat a futó program hajtja végre! Máté: Architektúrák 8. előadás 62

Feladatok Miért kitüntetett szint a gépi utasítások szintje (ISA)? Mikor jó egy gép ISA

Feladatok Miért kitüntetett szint a gépi utasítások szintje (ISA)? Mikor jó egy gép ISA szintje? Mi a különbség a felhasználói (user) és a kernel mód között? Mit jelent az igazítás 4 bájtos szavak tárolásánál? Mi az igazítás előnye? Mit jelent a memória szemantika? Milyen hardver megoldásokat ismer a memória műveletek végrehajtási sorrendjére vonatkozóan? Mi a SYNC utasítás hatása? Miért van szükség a SYNC utasításra? Máté: Architektúrák 10. előadás 63

Feladatok Mondjon olyan regisztert, amely a mikro utasítások szintjén és ISA szinten is látszik!

Feladatok Mondjon olyan regisztert, amely a mikro utasítások szintjén és ISA szinten is látszik! Mondjon olyan regisztert, amely csak ISA szinten látszik! Mondjon olyan regisztert, amely csak kernel módban érhető el! Milyen utasítás típusokat ismer? Melyek a Pentium 4 processzor legfontosabb elődjei? Milyen üzemmódjai vannak a Pentium 4 -nek? Milyen a Pentium 4 memória szervezése? Milyen regiszterei vannak a Pentium 4 -nek? Mit jelent a Little endian tárolási mód? Máté: Architektúrák 10. előadás 64

Feladatok Mit jelent a Load/store architektúra? Milyen az Ultra. SPARC III memória szervezése? Milyen

Feladatok Mit jelent a Load/store architektúra? Milyen az Ultra. SPARC III memória szervezése? Milyen regiszterei vannak az Ultra. SPARC III-nak? Mit tud az Ultra. SPARC III G 0 regiszteréről? Mi a CWP (Current Window Pointer) szerepe? Hogy működik az Ultra. SPARC III regiszter ablak technikája? Hány regiszter készlete van a 8051 -nek? Hol helyezkednek el a 8051 regiszterei? Mire jó a bit-címezhető memória? Írja le a 8051 RAM-jának a szerkezetét! Mire szolgál a 8051 IE, IP, TCON, és TMOD regisztere? Máté: Architektúrák 10. előadás 65

Feladatok Hány címes utasítások lehetségesek? Adjon mindegyikre példát! Milyen címzési módokat ismer? Részletezze ezeket!

Feladatok Hány címes utasítások lehetségesek? Adjon mindegyikre példát! Milyen címzési módokat ismer? Részletezze ezeket! Mit jelent a fordított lengyel jelölés? Milyen előnyei vannak a postfix jelölésnek? Írja át postfix alakúra az alábbi formulákat! A+B, A+B+C, A+B*C, A*B+C. Írja át infix alakúra az alábbi postfix formulákat! AB+, AB–C/, AB*C+, AB*CD/E+–. Hogy működik Dijkstra algoritmusa? Hogy értékelhetők ki a postfix alakú formulák? Máté: Architektúrák 10. előadás 66

Feladatok Mik az ISA szint fő tervezési szempontjai? Hogy viszonyulhat egymáshoz az utasítás és

Feladatok Mik az ISA szint fő tervezési szempontjai? Hogy viszonyulhat egymáshoz az utasítás és a memória cella hossza? Mit értünk műveleti kód kiterjesztésen? Mit nevezünk menekülő kódnak? Mi az ortogonalitási elv? Milyen utasítás formájú 3 címes gépet tervezne? Milyen utasítás formájú 2 címes gépet tervezne? Teljesül-e az ortogonalitási elv a Pentium 4 -en? Milyen utasítás formái vannak a Pentium 4 -nek? Mire szolgál a prefix bájt a Pentium 4 -en? Mire szolgál a címzési mód bájt a Pentium 4 -en? Mire szolgál a SIB bájt a Pentium 4 -en? Máté: Architektúrák 10. előadás 67

Feladatok Teljesül-e az ortogonalitási elv az Ultra. SPARC III-on? Milyen utasítás formái vannak az

Feladatok Teljesül-e az ortogonalitási elv az Ultra. SPARC III-on? Milyen utasítás formái vannak az Ultra. SPARC III-nak? Milyen formátumú LOAD utasításai vannak az Ultra. SPARC III-nak? Hogy adható meg 32 bites közvetlen adat az Ultra. SPARC III-on? Milyen formátumú CALL utasítása van az Ultra. SPARC III-nak? Teljesül-e az ortogonalitási elv a 8051 -en? Milyen utasítás formái vannak a 8051 -nek? Milyen formátumú ugró utasításai vannak a 8051 -nek? Hogy érhető el 256 -nál magasabb memória cím a 8051 en? Máté: Architektúrák 10. előadás 68

Feladatok Milyen utasítás típusokat ismer? Mondjon diadikus/monadikus utasításokat! Hogy néz ki a vég-/kezdőfeltételes ciklus?

Feladatok Milyen utasítás típusokat ismer? Mondjon diadikus/monadikus utasításokat! Hogy néz ki a vég-/kezdőfeltételes ciklus? Mit értünk feltételes végrehajtáson? Mi a feltételes végrehajtás előnye? Mit értünk predikáción? Hogy küszöböli ki a feltételes végrehajtás és a predikáció a csővezeték elakadását? Jelent-e ez késleltetést a program futásában? Máté: Architektúrák 10. előadás 69

Feladatok Mit értünk kifejezésen? Mit értünk kifejezés értékén? Mikor kerül meghatározásra a kifejezés értéke?

Feladatok Mit értünk kifejezésen? Mit értünk kifejezés értékén? Mikor kerül meghatározásra a kifejezés értéke? Szerepelhet-e regiszter egy kifejezésben? Befolyásolhatja-e egy regiszter értéke egy kifejezés értékét? Mikor mondjuk, hogy egy kifejezés megengedett? Ha A és B szimbólum, akkor lehet-e helyes kifejezés A + B, A – B, A * B, A / B? Milyen esetekben? Ha A és B változónév, akkor lehet-e helyes kifejezés A + B, A – B, A * B, A / B? Lehet-e helyes kifejezés A + B – C, ha A + B nem helyes kifejezés? Máté: Architektúrák 10. előadás 70

Feladatok a dw 5 dup (1, 2) b record x: 3, y: 4, z:

Feladatok a dw 5 dup (1, 2) b record x: 3, y: 4, z: 5 c dw 10 dup (1, 2 dup (3)) d db ”szoveg” Alkalmazza a, b, c, d, x, y, és z-re a LENGTH, SIZE, WIDTH, MASK, TYPE é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 10. előadás 71

Feladatok a db 12 H b db 23 H c dw ? esetén, mi

Feladatok a db 12 H b db 23 H 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 10. előadás 72