Top Banner
Máté: Architektú rák 7. előadás 1 A verem két felső szavának cseréje (4.17. ábra) Megállapodás szerint TOS tartalmazza a verem tetején lévő szót! Ez többnyire előny. swap 1 MAR = SP – 1; rd // A 2. szó címe, olvasás MAR → B swap 2 MAR = SP // MAR a verem tetejére mutat MAR → A MDR B SP → A B
74

A verem két felső szavának cseréje (4.17. ábra)

Mar 19, 2016

Download

Documents

Rafael Amador

Megállapodás szerint TOS tartalmazza a verem tetején lévő szót! Ez többnyire előny. SP → A B. A verem két felső szavának cseréje (4.17. ábra). A verem két felső szavának cseréje (4.17. ábra). SP → B B. swap4-ben előny, hogy TOS tartalmazza a verem tetején lévő szót. - PowerPoint PPT Presentation
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: A verem két felső szavának cseréje (4.17. ábra)

Máté: Architektúrák 7. előadás 1

A verem két felső szavának cseréje (4.17. ábra)

Megállapodás szerint TOS tartalmazza a verem tetején lévő szót! Ez többnyire előny.

swap1 MAR = SP – 1; rd // A 2. szó címe, olvasás MAR → Bswap2 MAR = SP // MAR a verem tetejére mutat MAR → A

MDR B

SP → AB

Page 2: A verem két felső szavának cseréje (4.17. ábra)

Máté: Architektúrák 7. előadás 2

A verem két felső szavának cseréje (4.17. ábra)

swap1 MAR = SP – 1; rd // A 2. szó címe, olvasás MAR → Bswap2 MAR = SP // MAR a verem tetejére mutat MAR → A

MDR Bswap3 H = MDR; wr // 2. szó H-ba, verem tetejére H = B

MDR (MAR)swap4 MDR = TOS // verem régi teteje MDR = A

swap4-ben előny, hogy TOS tartalmazza a verem tetején lévő szót.

SP → BB

Page 3: A verem két felső szavának cseréje (4.17. ábra)

Máté: Architektúrák 7. előadás 3

A verem két felső szavának cseréje (4.17. ábra)

swap1 MAR = SP – 1; rd // A 2. szó címe, olvasás MAR → Bswap2 MAR = SP // MAR a verem tetejére mutat MAR → A

MDR Bswap3 H = MDR; wr // 2. szó H-ba, verem tetejére H = B

MDR (MAR)swap4 MDR = TOS // verem régi teteje MDR = Aswap5 MAR = SP – 1; wr // a 2. szóba MAR → B

MDR (MAR)swap6 TOS = H; goto Main1 // TOS frissítése

swap6-ban hátrány, mert ez az utasítás csak azért kell, hogy TOS tartalmazza a verem tetején lévő szót.

SP → BA

Page 4: A verem két felső szavának cseréje (4.17. ábra)

Máté: Architektúrák 7. előadás 4

A verem két felső szavának cseréje (4.17. ábra)

Page 5: A verem két felső szavának cseréje (4.17. ábra)

Máté: Architektúrák 6. előadás 5

A WIDE utasításA WIDE utasítás valójában prefixum: önmagában nem

csinál semmit, csak jelzi, hogy a következő utasításnak 16 bites indexe van. Pl.:ILOAD varnum lokális változó a verembe varnum a lokális változó 8 bites indexe. WIDEILOAD varnum lokális változó a verembevarnum a lokális változó 16 bites indexe.

w_iload1 címe = iload1 címe + 0x100

Page 6: A verem két felső szavának cseréje (4.17. ábra)

Máté: Architektúrák 6. előadás 6

Main1 PC = PC + 1; fetch; goto(MBR) MBR = ILOAD

iload1 H = LV MBR varnumiload2 MAR = H + MBRU; rd // rd(LV+varnum)iload3 MAR = SP = SP + 1 MDR (MAR)iload4 PC = PC + 1; fetch; wr (MAR) MDRiload5 TOS = MDR; goto Main1 MBR opkód

ILOAD varnum lokális változó a verembe varnum a lokális változó 8 bites indexe.

Page 7: A verem két felső szavának cseréje (4.17. ábra)

Máté: Architektúrák 6. előadás 7

Main1 PC = PC + 1; fetch; goto(MBR) MBR = WIDEiload1 H = LViload2 MAR = H + MBRU; rd // rd(LV+varnum)iload3 MAR = SP = SP + 1 MDR (MAR)iload4 PC = PC + 1; fetch; wr (MAR) MDRiload5 TOS = MDR; goto Main1 MBR opkódwide1 PC = PC + 1; fetch; goto(MBR OR 0x100) MBR ILOADw_iload1 PC = PC + 1; fetch // index 2.

bájtjaMBR 1. bájt

w_iload2 H = MBRU << 8 // 1. bájt léptetése MBR 2. bájtw_iload3 H = H OR MBRU // H = a 16 bites indexw_iload4 MAR = LV + H; rd; goto iload3 rd(LV+varnum)

WIDEILOAD varnum lokális változó a verembe

varnum a lokális változó 16 bites indexe.

Page 8: A verem két felső szavának cseréje (4.17. ábra)

Máté: Architektúrák 6. előadás 8

Page 9: A verem két felső szavának cseréje (4.17. ábra)

Máté: Architektúrák 6. előadás 9

Az GOTO offset utasítás. PC relatív: PC értékéhez hozzá kell adni a két bájtos, előjeles offset értékét. Mic-1 program:

Main1 PC = PC + 1; fetch; goto(MBR)goto1 OPC=PC–1 // Main1-nél : PC=PC+1 MBR 1. bájtgoto2 PC=PC+1; fetch // offset 2. bájtjagoto3 H=MBR<<8 // 1. (előjeles) bájt <<8 MBR 2. bájtgoto4 H=MBRU OR H // 16 bites offsetgoto5 PC=OPC+H; fetch; goto (Main1) // PC új értéke

Main1 PC = PC + 1; fetch; goto(MBR) MBR opkód

goto5 kezdeményezi a PC új értékénél lévő bájt olvasását, Main1-ben goto(MBR) már a folytatás első opkódjának megfelelő címre ugrik!

Page 10: A verem két felső szavának cseréje (4.17. ábra)

Máté: Architektúrák 6. előadás 10

A IFLT offset utasítás (Mic-1)Kivesz egy szót a veremből és ugrik, ha negatív.iflt1 MAR=SP=SP–1; rd // 2. szó a verembőliflt2 OPC=TOS // TOS

mentéseiflt3 TOS=MDR // TOS= a verem új

tetejeiflt4 N=OPC; if(N) goto T; else goto F //elágazásT OPC=PC–1; goto goto2 // igaz ágF PC=PC+1 // hamis ág, át kell lépni offset-et F2 PC=PC+1; fetch; goto (Main1) // PC új értéke

a folytatás 1. utasításának betöltése

Fontos: T címe = F címe + 0x100

Page 11: A verem két felső szavának cseréje (4.17. ábra)

Máté: Architektúrák 6. előadás 11

INVOKEVIRTUAL disp (4.12. ábra),

• A CPP által mutatott területen a disp (2 bájt) indexű szó mutat a meghívandó metódus kezdő szavára.

• Ennek a szónak - az első két bájtja tartalmazza a

metódus paramétereinek számát, - a második két bájtja a

metódus lokális változóinak számát. • A metódus végrehajtása a metódus 5. bájtján indul.

Page 12: A verem két felső szavának cseréje (4.17. ábra)

Máté: Architektúrák 6. előadás 12

INVOKEVIRTUAL disp(~4.12. ábra) Hívó LV-je

Hívó PC-jeHívott lokális

változóinak helye3. paraméter2. paraméter1. paraméter

Kapcsoló mutatóElőző LVElőző PC

Hívó lokális változóinak helye

2. paraméter1. paraméter

Kapcsoló mutató

3. paraméter2. paraméter1. paraméter

OBJREFElőző LVElőző PC

Hívó lokális változóinak helye

2. paraméter1. paraméter

Kapcsoló mutató ← LV

← LV

← SP

← SP

A verem új alapja

Betett paraméterek

A verem alapja hívás előtt

A hívó lokális területe

verem a hívás előtt

verem a hívás után

Page 13: A verem két felső szavának cseréje (4.17. ábra)

Máté: Architektúrák 6. előadás 13

INVOKEVIRTUAL dispA CPP által mutatott táblázat disp indexű eleme a

meghívandó metódusra mutat. disp első bájtjának MBR-be olvasását már Main1 kezdeményezte.

invo1 PC = PC + 1; fetch // disp 2. bájtját olvassainvo2 H = MBRU << 8 // disp 1. bájtját léptetiinvo3 H = H OR MBRU // H = dispinvo4 MAR = CPP + H; rd // kezdő cím olvasásainvo5 OPC = PC + 1 // OldPC = visszatérési címA könyvben MBRU OR H szerepel, az OR művelet

kommutativitása miatt megengedhető.

Page 14: A verem két felső szavának cseréje (4.17. ábra)

Máté: Architektúrák 6. előadás 14

INVOKEVIRTUAL: a metódus elején lévő 2 bájt tartalmazza a paraméterek számát.

invo6 PC = MDR; fetch // PC: új metódus eleje

invo7 PC = PC + 1; fetch // paraméterek számainvo8 H = MBRU << 8invo9 H = H OR MBRU // H = paraméterek számainvo10 TOS = SP – H // OBJREF is

paraméter!invo11 TOS = MAR = TOS + 1 // OBJREF címeTOS-ban tároljuk ideiglenesen OBJREF címét, ide

mutat majd a hívott metódus LV-je.Az utasítások sorrendje más, mint a könyvben!

Page 15: A verem két felső szavának cseréje (4.17. ábra)

Máté: Architektúrák 6. előadás 15

INVOKEVIRTUAL: lokálisok száma 2 bájt a paraméterek száma után, OBJREF cseréje, ide kerül a lokális változók fölötti címre mutató Kapcsoló mutató. A mutatott címre kerül majd a Hívó PC-je.

TOS = MAR = OBJREF címe

invo12 PC = PC + 1; fetch // lokálisok száma 1. bájtinvo13 PC = PC + 1; fetch // lokálisok száma 2. bájtinvo14 H = MBRU << 8invo15 H = H OR MBRU // H = lokálisok számainvo16 MDR = H + SP + 1; wr // OBJREF cseréje

TOS = OBJREF címe

Page 16: A verem két felső szavának cseréje (4.17. ábra)

Máté: Architektúrák 6. előadás 16

← SP

INVOKEVIRTUAL disp(~4.12. ábra) Hívó LV-je

Hívó PC-jeHívott lokális

változóinak helye3. paraméter2. paraméter1. paraméter

Kapcsoló mutatóElőző LVElőző PC

Hívó lokális változóinak helye

2. paraméter1. paraméter

Kapcsoló mutató

3. paraméter2. paraméter1. paraméter

OBJREFElőző LVElőző PC

Hívó lokális változóinak helye

2. paraméter1. paraméter

Kapcsoló mutató ← LV

← LV

← SPA verem új alapja

Betett paraméterek

A verem alapja hívás előtt

A hívó lokális területe

verem a hívás előtt

verem a hívás után

← SP

Page 17: A verem két felső szavának cseréje (4.17. ábra)

Máté: Architektúrák 6. előadás 17

INVOKEVIRTUAL: a hívó PC-je és LV-jeTOS = OBJREF címe

invo17 MAR = SP = MDR // hívó PC-jének helyeinvo18 MDR = OPC; wr // hívó PC vermeléseinvo19 MAR = SP = SP + 1 // hívó LV-jének a

helye invo20 MDR = LV; wr // hívó LV-jének

vermeléseinvo21 PC = PC + 1; fetch // utasítás olvasásinvo22 LV = TOS // LV új értékeinvo23 TOS = MDR; goto Main1 // TOS=hívó LV-jeTOS = MDR nélkül TOS a Kapcsoló mutató címét

(a hívott LV-jét) tartalmazná!

Page 18: A verem két felső szavának cseréje (4.17. ábra)

Máté: Architektúrák 6. előadás 18

IRETURN~4.12. ábra

Visszatérési é.Hívó LV-jeHívó PC-je

Hívott lokális változóinak helye

3. paraméter2. paraméter1. paraméter

Kapcsoló mutatóElőző LVElőző PC

Hívó lokális változóinak helye

2. paraméter1. paraméter

Kapcsoló mutató

Visszatérési é.Előző LVElőző PC

Hívó lokális változóinak helye

2. paraméter1. paraméter

Kapcsoló mutató

← LV

← LV

← SP

← SP

Betett paraméterek

A verem alapja

IRETURN után

A hívó lokális területe

A verem alapja

IRETURN előtt

Verem IRETURN előtt

Verem IRETURN után

Page 19: A verem két felső szavának cseréje (4.17. ábra)

Máté: Architektúrák 6. előadás 19

IRETURN // ~4.13. ábra

iret1 MAR = SP = LV; rd // kapcs. mut. olvasásairet2 H = H // vár, hogy az olvasás befejeződjöniret3 LV = MAR = MDR; rd // hívó PC olvasásairet4 MAR = LV + 1; rd // hívó LV címeiret5 PC = MDR; fetch // hívó PC, opkód olv.iret6 MAR = SP // visszatérési érték címeiret7 LV = MDR // hívó LViret8 MDR = TOS; wr; goto Main1

iret3-4: MAR nem lehet SOURCE operandus!

Page 20: A verem két felső szavának cseréje (4.17. ábra)

Máté: Architektúrák 6. előadás 20

Page 21: A verem két felső szavának cseréje (4.17. ábra)

Máté: Architektúrák 6. előadás 21

Házi feladat: A 4.17. ábra többi része.

Továbbfejlesztések: több sínes rendszerek.

Page 22: A verem két felső szavának cseréje (4.17. ábra)

Máté: Architektúrák 6. előadás 22

Logikai utasításokBitenkénti logikai műveleteket végeznek.

1 az igaz, 0 a hamis logikai érték.AND op1,op2 ; op1 op1 & op2, bitenkénti ésTEST op1,op2 ; flag-ek op1 & op2 szerintOR op1,op2 ; op1 op1 | op2, bitenkénti vagyXOR op1,op2 ; op1 op1 ^ op2 (eXclusive OR),

; bitenkénti kizáró vagyNOT op ; op ~op, bitenkénti negáció,

; nem módosítja STATUS tartalmát!

Page 23: A verem két felső szavának cseréje (4.17. ábra)

Máté: Architektúrák 6. előadás 23

Bit forgató (Rotate) és léptető (Shift) utasításokForgatják (Rotate) illetve léptetik (Shift) op tartalmát. A forgatás/léptetés történhet – 1 bittel, – vagy byte illetve word esetén a CL regiszter

alsó 3 illetve 4 bit-jén megadott bittel jobbra (Right) vagy balra (Left).

Az utoljára kilépő bit lesz a Carry új tartalma.

Page 24: A verem két felső szavának cseréje (4.17. ábra)

Máté: Architektúrák 6. előadás 24

A rotálás történhet a Carry-n keresztül, ilyenkor a belépő bit a Carry-ből kapja az értékét:

RCR op,1/CL ; Rotate through Carry Right

RCL op,1/CL ; Rotate through Carry Left

C …

C …

Page 25: A verem két felső szavának cseréje (4.17. ábra)

Máté: Architektúrák 6. előadás 25

A rotálás történhet úgy, hogy Carry csak a kilépő bitet fogadja, a belépő bit értékét a kilépő bit szolgáltatja:

ROR op,1/CL ; ROtate Right

ROL op,1/CL ; ROtate Left

C …

C …

Page 26: A verem két felső szavának cseréje (4.17. ábra)

Máté: Architektúrák 6. előadás 26

Logikai léptetés jobbra: A belépő bit 0:SHR op,1/CL ; SHift Right

0

Előjel nélküli egész számok 2 hatványával történő osztására alkalmas.

Aritmetikai léptetés jobbra: A belépő bit op előjele: SAR op,1/CL ; Shift Arithmetical Right

Előjeles egész számok 2 hatványával történő osztására alkalmas. Negatív számok esetén csal!

C …

C …

Page 27: A verem két felső szavának cseréje (4.17. ábra)

Máté: Architektúrák 6. előadás 27

Balra léptetéskor a belépő bit mindig 0:SHL op,1/CL ; SHift LeftSAL op,1/CL ; Shift Arithmetical Left

SAL ≡ SHL

0

Előjel nélküli vagy előjeles egész számok 2 hatványával történő szorzására alkalmas.

C …

Page 28: A verem két felső szavának cseréje (4.17. ábra)

Máté: Architektúrák 6. előadás 28

hexa proc ; ax kiírása hexadecimálisan; legyen a példa kedvéért: ax = 1234H

xchg ah,al; ah és al felcserélése; most: ax = 3412H, al = 12H

call hexa_b ; al (az eredeti ah) kiírása; kiírtuk, hogy 12

xchg ah,al; ah és al visszacserélése; most újra: ax = 1234H, al = 34H

call hexa_b ; al kiírása; most kiírtuk, hogy 34, tehát eddig kiírtuk, hogy 1234

ret ; visszatéréshexa endp; a hexa eljárás vége

Page 29: A verem két felső szavának cseréje (4.17. ábra)

Máté: Architektúrák 6. előadás 29

hexa_b proc ; al kiírása hexadecimálisan; az első híváskor: al = 12H

pushcx ; mentés a verembemov cl,4 ; 4 bit-es rotálás előkészítéseROR al,CL ; az első jegy az alsó 4 biten

; most: al = 21Hcall h_jegy ; az első jegy kiírása

; kiírtuk, hogy 1ROR al,CL ; a 2. jegy az alsó 4 biten

; most újra: al = 12Hcall h_jegy ; a második jegy kiírása

; most kiírtuk, hogy 2, tehát eddig kiírtuk, hogy 12pop cx ; visszamentés a verembőlret ; visszatérés

hexa_bendp; a hexa_b eljárás vége

Page 30: A verem két felső szavának cseréje (4.17. ábra)

Máté: Architektúrák 6. előadás 30

h_jegy proc ; hexadecimális jegy kiírásapushax ; mentés a verembeAND al,0FH ; a felső 4 bit 0 lesz, ; a többi változatlanadd al,’0’ ; + 0 kódjacmp al,’9’ ; 9 ?jle h_jegy1 ; ugrás h_jegy1 -hez, ha igenadd al,’A’-0AH-’0’ ; A…F hexadecimális ; jegyek kialakítása

h_jegy1: mov ah,14 ; BIOS hívás: int 10H ; karakter kiíráspop ax ; visszamentés a verembőlret ; visszatérés

h_jegy endp; a h_jegy eljárás vége

Page 31: A verem két felső szavának cseréje (4.17. ábra)

Máté: Architektúrák 6. előadás 31

Processzor vezérlő utasítások I.A processzor állapotát módosít(hat)ják.

A STATUS bitjeinek módosításaFlag CLear SeT CoMplement

C CLC STC CMC

D CLD STD

I CLI STI

Page 32: A verem két felső szavának cseréje (4.17. ábra)

Máté: Architektúrák 6. előadás 32

Input, output, interfész, I/O lapkák UART (Universal Asynchronous Receiver and

Transmitter) egy bájtot tud olvasni az adatsínről, és aztán sorosan továbbítja az eszközhöz (vagy fordítva), programmal konfigurálható (belső regiszterének beállításával): 5-8 bit szélesség, sebesség (50-19.200 bps), paritás ellenőrzés (páros, páratlan, nincs).

USART (Universal Synchronous Asynchronous Receiver and Transmitter): szinkron és aszinkron módon is tud működni.

Page 33: A verem két felső szavának cseréje (4.17. ábra)

Máté: Architektúrák 6. előadás 33

PIO (Parallel Input/Output, 3.60. ábra)24 B/K vonal, amellyel TTL kompatibilis

eszközökhöz (billentyűzet, kapcsolók, nyomtatók) tud kapcsolódni. Konfigurálható. Leggyakoribb az ábrán látható használat. Aszinkron eszközökhöz „kézfogás” logika van beépítve.

8255ApárhuzamosB/K lapka

Port A

Port B

Port C88

8

82

#CSA0-A1

#WR#RD

RESETD0-D7

Page 34: A verem két felső szavának cseréje (4.17. ábra)

Máté: Architektúrák 6. előadás 34

Beviteli/Kiviteli (B/K, Input/Output, I/O) eszközök használata (chip selection):

• Valódi B/K eszköz.• Memóriára leképezett B/K (memory-mapped I/O).

Pl.: 3.61. ábra.

0 32 K 64 K

2 KB EPROM

a 0 címnél

2 KB RAM a 8000H címnél

4 B PIO az FFFCH címnél

Page 35: A verem két felső szavának cseréje (4.17. ábra)

Máté: Architektúrák 6. előadás 35

3. 61-62. ábra. Teljes cím dekódolás.A15 a legmagasabb helyértékű bit.

0 32 K 64 K

2 KB EPROM

a 0 címnél

2 KB RAM a 8000H címnél

4 B PIO az FFFCH címnél

#CS

EPROM

#CS

RAM#CS

PIO

A15

A0

A11

Page 36: A verem két felső szavának cseréje (4.17. ábra)

Máté: Architektúrák 6. előadás 36

3.61-62. ábra. Részleges cím dekódolás.

0 32 K 64 K

2 KB EPROM a 0 címnél

2 KB RAM a 8000H címnél

4 B PIO az FFFCH címnél

#CS

EPROM

#CS

RAM

#CS

PIO

A0

A15

Page 37: A verem két felső szavának cseréje (4.17. ábra)

Máté: Architektúrák 6. előadás 37

Input, output (I/O) utasítások (I8086/88)

A külvilággal történő információ csere port-okon (kapukon) keresztül zajlik. A kapu egy memória cím, az információ csere erre a címre történő írással, vagy erről a címről való olvasással történik. Egy-egy cím vagy cím csoport egy-egy perifériához kötődik. A központi egység oldaláról a folyamat egységesen az IN (input) és az OUT (output) utasítással történik.

Page 38: A verem két felső szavának cseréje (4.17. ábra)

Máté: Architektúrák 6. előadás 38

Input, output (I/O) utasítások (I8086/88)A perifériától függ, hogy a hozzá tartozó port 8 vagy 16 bites. A központi egységnek az AL illetve AX regisztere vesz részt a kommunikációban. A port címzése 8 bites közvetlen adattal vagy a DX regiszterrel történik.

IN AL/AX,port; AL/AX egy byte/word a port-ról

OUT port,AL/AX; port egy byte/word AL/AX-ből

Page 39: A verem két felső szavának cseréje (4.17. ábra)

Máté: Architektúrák 6. előadás 39

A periféria oldaláról a helyzet nem ilyen egyszerű. Az input információ „csomagokban” érkezik, az output információt „csomagolva” kell küldeni. A csomagolás (vezérlő információ) mondja meg, hogy hogyan kell kezelni a csomagba rejtett információt (adatot). Éppen ezért az operációs rendszerek olyan egyszerűen használható eljárásokat tartalmaznak (BIOS – Basic Input/Output System – rutinok, stb.), amelyek elvégzik a ki- és becsomagolás munkáját, és ezáltal lényegesen megkönnyítik a külvilággal való kommunikációt.

Page 40: A verem két felső szavának cseréje (4.17. ábra)

Máté: Architektúrák 6. előadás 40

Input/output (5.31-33. ábra)

Az I/O vezérlő regiszterei (5.31. ábra). Terminál: külön regiszterek az inputra és outputra.

Beírt karakter Megjelenítendő karakterBillentyűzet puffere Képernyő puffere

Megszakítás engedélyezett

Billentyűzet állapot Képernyő állapot

Van beírt karakterKész a következő karakter

fogadására

Page 41: A verem két felső szavának cseréje (4.17. ábra)

Máté: Architektúrák 6. előadás 41

• programozott B/K (5.32. ábra) tevékeny várakozás (pollozásos technika):

public static void output_buffer(int buf[], int count) { // count számú bájt kiírása buf-ból az eszközreint status, i, ready; for(i=0; i < count; i++) { do { status = in(display_status_reg); // az állapot lekérdezése ready = (status >> 7) & 0x01; // a kész bit elkülönítése } while(ready != 1); out(display_buffer_reg, buf[i]); }}

Page 42: A verem két felső szavának cseréje (4.17. ábra)

Máté: Architektúrák 6. előadás 42

• megszakítás vezérelt B/Kaz eszköz megkapja a feladatát, majd ha elkészült,beállítja a „Megszakítás engedélyezett” bitet, addig aközponti egység más feladatot végezhet.

• DMA (Direct Memory Access, 5.33. ábra)a DMA önállóan végzi az eszköz figyelését és azadatok mozgatását.

10032

41

CPU

DMAcím

számlálóeszköz

irány

Memória

Cikluslopás.

Page 43: A verem két felső szavának cseréje (4.17. ábra)

Máté: Architektúrák 6. előadás 43

Processzor vezérlő utasítások II.

NOP ; NO oPeration, üres utasítás, ; nem végez műveletet.

WAIT ; A processzor várakozik, amíg más ; processzortól (pl. lebegőpontos ; segédprocesszortól) kész jelzést nem kap.

HLT ; HaLT, leállítja a processzort. ; A processzor külső megszakításig ; várakozik.

Page 44: A verem két felső szavának cseréje (4.17. ábra)

Máté: Architektúrák 6. előadás 44

Megszakítás rendszer, interrupt utasítások• Az I/O utasítás lassú a CPU gyors,

a CPU várakozni kényszerül• I/O regiszter (port): a port és a központi egység

közötti információ átadás gyors, a periféria autonóm módon elvégzi a feladatát. Újabb perifériához fordulás esetén a CPU várakozni kényszerülhet.

• Pollozásos technika (~tevékeny várakozás): a futó program időről időre megkérdezi a periféria állapotát, és csak akkor ad ki újabb I/O utasítást, amikor a periféria már fogadni tudja. A hatékonyság az éppen futó programtól függ.

Page 45: A verem két felső szavának cseréje (4.17. ábra)

Máté: Architektúrák 6. előadás 45

MegszakításA (program) megszakítás azt jelenti, hogy az éppen futó program végrehajtása átmenetileg megszakad – a processzor állapota megőrződik, hogy a program egy későbbi időpontban folytatódhassék – és a processzor egy másik program, az úgynevezett megszakítás kezelő végrehajtását kezdi meg.

Miután a megszakítás kezelő elvégezte munkáját, gondoskodik a processzor megszakításkori állapotának visszaállításáról, és visszaadja a vezérlést a megszakított programnak.

Page 46: A verem két felső szavának cseréje (4.17. ábra)

Máté: Architektúrák 6. előadás 46

Pl.: nyomtatás• Nyomtatás pufferbe, később a tényleges nyomtatást vezérlő

program indítása. • Nyomtatás előkészítése (a nyomtató megnyitása), HLT. • A továbbiak során a nyomtató megszakítást okoz, ha kész

újabb adat nyomtatására. Ilyenkor a HLT utasítást követő címre adódik a vezérlés. A következő karakter előkészítése nyomtatásra, HLT. A bekövetkező megszakítás hatására a megszakító rutin mindig a következő adatot nyomtatja. Ha nincs további nyomtatandó anyag, akkor a nyomtatást vezérlő program lezárja a nyomtatót (nem következik be újabb megszakítás a nyomtató miatt), és befejezi a működését.

Page 47: A verem két felső szavának cseréje (4.17. ábra)

Máté: Architektúrák 6. előadás 47

A HLT utasítás csak akkor szükséges, ha a nyomtatást kérő program befejezte a munkáját. Ellenkező esetben visszakaphatja a vezérlést. Ilyenkor az ő feladata az esetleg szükséges várakozásról gondoskodni a program végén.

Bevitel esetén olyankor is várakozni kell, ha még a beolvasás nem történt meg, és a további futáshoz szükség van ezekre az adatokra.

Jobb megoldás, ha a HLT utasítás helyett az operációs rendszer fölfüggeszti a program működését, és elindítja egy másik program futását.

Ez vezetett a multiprogramozás kialakulásához.

Page 48: A verem két felső szavának cseréje (4.17. ábra)

Máté: Architektúrák 6. előadás 48

A megszakító rutin megszakítható-e? Gyors periféria kiszolgálása közben megszakítás kérés, …

„Alap” állapot – „megszakítási” állapot, megszakítási állapotban nem lehet újabb megszakítás.

Hierarchia: megszakítási állapotban csak magasabb szintű ok eredményezhet megszakítást.

Bizonyos utasítások csak a központi egység bizonyos kitüntetett állapotában hajthatók végre, alap állapotban nem → csapda, szoftver megszakítás.

Megoldható az operációs rendszer védelme, a tár védelem stb.

A megoldás nem tökéletes: vírus.

Page 49: A verem két felső szavának cseréje (4.17. ábra)

Máté: Architektúrák 6. előadás 49

Csapda és megszakításCsapda (trap): A program által előidézett feltétel

(pl. túlcsordulás) hatására automatikus eljárás hívás. Csapda kezelő.

Megszakítás (interrupt): Olyan automatikus eljárás hívás, amit általában nem a futó program, hanem valamilyen B/K eszköz idéz elő, pl. a program utasítja a lemezegységet, hogy kezdje el az adatátvitelt, és annak végeztével megszakítást küldjön. Megszakítás kezelő.

A csapda a programmal szinkronizált,a megszakítás nem.

Page 50: A verem két felső szavának cseréje (4.17. ábra)

Máté: Architektúrák 6. előadás 50

Pl.: Egy sornyi karakter képernyőre írása a terminálon. Előkészítés: Egy rendszerprogram összegyűjti a

kiírandó karaktereket egy pufferben, beállít egy globális változót, hogy mutasson a puffer elejére, egy másik globális változóban megadja a karakterek számát. Megnézi, hogy a terminál tud-e adatot fogadni (5.31. ábra), és ha igen, akkor elindítja az első karakter kiíratását. Ekkor a CPU fölszabadul egy másik program futtatására.

A terminál a képernyőre írja a karaktert, és megszakítást kezdeményez. A megszakítás kezelő újabb karakter kiírását kezdeményezi . . .

Page 51: A verem két felső szavának cseréje (4.17. ábra)

Máté: Architektúrák 6. előadás 51

Megszakítás kezelés (3.43. ábra)

8259AMegszakítás

vezérlő

bere

ndez

ések

CPU

INTINTA#

RD#WR#A0#CS#

D0-D7

IR0IR1IR2IR3IR4IR5IR6IR7

IRi , INT , ha CPU tudja fogadni, akkor INTA# ,i D0-D7, a CPU megszakításvektor táblázat i –edik eleméből tudja a megszakítást kiszolgáló eljárás kezdőcímét, megszakítás …

Nyolcnál több eszköz kiszolgálásához több megszakítás vezérlő kapcsolható össze.

Page 52: A verem két felső szavának cseréje (4.17. ábra)

Máté: Architektúrák 6. előadás 52

Megszakítás Hardver tevékenységek (3.42. ábra): 1. Az eszköz vezérlő megszakítás jelet tesz a sínre,2. ha a CPU fogadni tudja a megszakítást, nyugtázza,3. az eszköz vezérlője az eszköz azonosítószámát

(megszakítás-vektor) elküldi a sínen, 4. ezt a CPU átmenetileg tárolja, 5. a CPU a verembe teszi az utasításszámláló aktuális

értékét és a PSW-t, 6. a CPU az azonosító indexű megszakítás kezelő

címét teszi az utasításszámlálóba és gyakran betölti vagy módosítja PSW-t.

Page 53: A verem két felső szavának cseréje (4.17. ábra)

Máté: Architektúrák 6. előadás 53

Szoftver tevékenységek (terminálra íráskor): 7. menti a használni kívánt regisztereket, 8. kiolvassa egy eszközregiszterből a terminál számát,9. beolvassa az állapotkódot,10. ha B/K hiba történt, itt lehet kezelni, 11. aktualizálja a mutatót és a számlálót, a kimenő

pufferbe írja a következő karaktert, ha van,12. visszajelez az eszköz vezérlőnek, hogy készen van, 13. visszaállítja a mentett regisztereket, 14. visszatér a megszakításból, itt történik a PSW

eredeti értékének visszaállítása is.

Page 54: A verem két felső szavának cseréje (4.17. ábra)

Máté: Architektúrák 6. előadás 54

Átlátszóság: Amikor bekövetkezik egy megszakítás, akkor bizonyos utasítások végrehajtódnak, de amikor ennek vége, a CPU ugyanolyan állapotba kerül, mint amilyenben a megszakítás bekövetkezése előtt volt.

Ha sok eszköz van a rendszerben, akkor célszerű, ha

egy megszakítás kiszolgálása közben másik megszakítás is történhet, ilyenkor a megszakítások hierarchiába vannak rendezve (5.46. ábra).

Page 55: A verem két felső szavának cseréje (4.17. ábra)

Máté: Architektúrák 6. előadás 55

5.46. ábra ISR: Interrupt Service Routine

0 10 15 20 25 35 40

Felhasználói program

RS232 ISR

Lemez ISR

Felhasználói program

Nyom-tató ISR

Nyom-tató ISR

Nyomtató megszakítás 2-es elsőbbséggel

RS232 megszakítás 5-ös elsőbbséggel

Nyomtató ISR befejeződik

Lemez ISR befejeződik

RS232 ISR befejeződik, lemez megszakítás keletkezik

A lemez 4-es elsőbbségű megszakítási kérelme függőben marad

NyomtatóFelhasz-

nálóFelhasz-

náló

NyomtatóFelhasz-

nálóFelhasz-

náló Verem

Page 56: A verem két felső szavának cseréje (4.17. ábra)

Máté: Architektúrák 6. előadás 56

I8086/88Az i. megszakítási okhoz tartozó megszakító rutin

FAR címe a memória 4*i. címén található (0 i 255). A megszakítási ok sorszámát hardver megszakítás esetén a hardver egység installáláskor adott száma, szoftver megszakítás esetén az operandus rész szolgáltatja.

Megszakítási ok jelentkezésekor a STATUS, CS és IP a verembe kerül, az I és a T flag 0 értéket kap (az úgynevezett maszkolható megszakítások tiltása és folyamatos üzemmód beállítása), majd (CS:IP) felveszi a megszakítás kezelő kezdőcímét.

Page 57: A verem két felső szavának cseréje (4.17. ábra)

Máté: Architektúrák 6. előadás 57

Interrupt utasítások

Szoftver megszakítást eredményeznek.INT i ; 0 i 255,

; megszakítás az i. ok szerint.Az INT 3 utasítás kódja csak egy byte (a többi 2

byte), így különösen alkalmas nyomkövető (DEBUG) programokban történő alkalmazásra.

Page 58: A verem két felső szavának cseréje (4.17. ábra)

Máté: Architektúrák 6. előadás 58

A DEBUG program saját magához irányítja a 3-as megszakítást. Az ellenőrzendő program megadott pontján (törés pont, break point) lévő utasítást (annak 1. bájtját) átmenetileg az INT 3 utasításra cseréli, és átadhatja a vezérlést az ellenőrzendő programnak. Amikor a program az INT 3 utasításhoz ér, a megszakítás hatására a DEBUG kapja meg a vezérlést. Kiírja a regiszterek tartalmát, és további információt kérhetünk a program állapotáról. Később visszaírja azt a tartalmat, amit INT 3 -ra cserélt, elhelyezi az újabb törés pontra az INT 3 utasítást és visszaadja a vezérlést az ellenőrzendő programnak.

Page 59: A verem két felső szavának cseréje (4.17. ábra)

Máté: Architektúrák 6. előadás 59

Ezek alapján érthetővé válik a DEBUG program néhány „furcsasága”:

• Miért „felejti el” a töréspontot? Ha ugyanis nem

felejtené el – azaz nem cserélné vissza a töréspontra elhelyezett utasítást az eredeti utasításra – akkor a program nyomkövetésében nem tudna továbblépni.

• Miért nem lehet egy ciklus futásait egyetlen

töréspont elhelyezésével figyeltetni, stb?

Page 60: A verem két felső szavának cseréje (4.17. ábra)

Máté: Architektúrák 6. előadás 60

INTO ; megszakítás csak O=1 (Overflow) ; esetén a 4. ok szerint

Visszatérés a megszakító rutinból

IRET ; IP, CS, STATUS feltöltése a ; veremből

Page 61: A verem két felső szavának cseréje (4.17. ábra)

Máté: Architektúrák 6. előadás 61

SzemaforLegyen az S szemafor egy olyan word típusú változó, amely

mindegyik program számára elérhető. Jelentse S=0 azt, hogy az erőforrás szabad, és S0 azt, hogy az erőforrás foglalt. Próbáljuk meg a szemafor kezelését!

; 1. kísérletujra: mov cx,S

jcxz szabad. . . ; foglalt az erőforrás, várakozásjmp ujra

szabad: mov cx,0FFFFhmov S,cx ; a program lefoglalta az erőforrást

Page 62: A verem két felső szavának cseréje (4.17. ábra)

Máté: Architektúrák 6. előadás 62

; 2. kísérletujra: MOV CX,0FFFFH

XCHG CX,S ; már foglaltat jelez a ; szemafor!

JCXZ szabad ; ellenőrzés S korábbi tartalma

; szerint.. . . ; foglalt az erőforrás,

; várakozásjmp ujra

szabad: . . . ; szabad volt az erőforrás,; de a szemafor már foglalt

Page 63: A verem két felső szavának cseréje (4.17. ábra)

Máté: Architektúrák 6. előadás 63

Az XCHG utasítás mikroprogram szinten:

Segéd regiszter S; S CX; CX Segéd regiszterolvasás – módosítás – visszaírás

ujra: mov cx,0FFFFh LOCK xchg cx,S ; S már foglaltat jelez

jcxz szabad ; ellenőrzés S korábbi ; tartalma szerint. . . ; foglalt, várakozásjmp ujra

szabad: . . . ; használható az erőforrás, ; de a szemafor már foglalt . . .MOV S,0 ; a szemafor szabadra állítása

Page 64: A verem két felső szavának cseréje (4.17. ábra)

Máté: Architektúrák 6. előadás 64

FeladatokMire szolgál a SWAP utasítás?Hogy valósítható meg a SWAP utasítás?Mire szolgál a WIDE utasítás?Hogy valósítható meg a WIDE utasítás?Mire szolgál az ILOAD utasítás?Hogy valósítható meg az ILOAD utasítás?Mire szolgál a WIDE ILOAD utasítás?Hogy valósítható meg a WIDE ILOAD utasítás?Mire szolgál a GOTO utasítás?Hogy valósítható meg a GOTO utasítás?

Page 65: A verem két felső szavának cseréje (4.17. ábra)

Máté: Architektúrák 6. előadás 65

FeladatokMelyek az IJVM feltételes ugró utasításai?Mire szolgál az IFLT utasítás?Hogy valósítható meg az IFLT utasítás?Mit nevezünk metódusnak?IJVM melyik utasítása szolgál a metódus hívására?Mire szolgál az INVOKEVIRTUAL utasítás? Hol található az INVOKEVIRTUAL disp utasítással

hívott metódus?Milyen információ van a metódus elején?Hogy néz ki a veremnek egy metódus számára látható

része?

Page 66: A verem két felső szavának cseréje (4.17. ábra)

Máté: Architektúrák 6. előadás 66

FeladatokMely regiszterek tartalmát kell menteni metódus hívás

esetén?IJVM melyik utasítása szolgál a metódusból való

visszatérésre?Hogy találhatók meg a mentett regiszter tartalmak

visszatéréskor?Miért nem lenne jó IRETURN megvalósításában:

iret3: MAR = MDR; rdiret4: MAR = MAR + 1 ?

Hol található a metódus visszatérési értéke az IRETURN utasítás után?

Page 67: A verem két felső szavának cseréje (4.17. ábra)

Máté: Architektúrák 6. előadás 67

FeladatokAz IRETURN utasítás mikroprogramozását úgy is

megvalósíthattuk volna, hogy a Kapcsoló mutatót nem használjuk, hanem SP értékéből indulunk ki. Hogyan? Így 7 utasítás is elegendő lett volna. Miért jobb mégis az előadáson bemutatott megoldás?

Elemezze a 4.17. ábra programjait!

Page 68: A verem két felső szavának cseréje (4.17. ábra)

Máté: Architektúrák 6. előadás 68

FeladatokHogy működik a TEST utasítás?Mi történik a flag-ekkel NOT utasítás hatására?Milyen operandusai vannak a SAR utasításnak?Milyen szerepe van C-nek a bit forgató utasításoknál?Hogy cserélhető fel BL alsó és felső négy bitje?Mi C tartalma többszörös léptetés esetén?Szorozza be BX-et 32-vel (tegyük fel, hogy az

eredmény elfér BX-ben)!Ossza el az előjeles BX-et 16-tal!

Page 69: A verem két felső szavának cseréje (4.17. ábra)

Máté: Architektúrák 6. előadás 69

FeladatokMi az UART?Mire szolgál az UART?Paritás ellenőrzés szempontjából hogy működhet az

UART?Mi az USART?Milyen digitális áramkörök segítségével tudja

megvalósítani a párhuzamos-soros átalakítást?Mit jelent a CS# jelölés egy chip lábán?Mit jelent a PIO rövidítés?Milyen lábai vannak PIO lapkának?Hány regisztere van PIO lapkának?

Page 70: A verem két felső szavának cseréje (4.17. ábra)

Máté: Architektúrák 6. előadás 70

FeladatokMi biztosítja, hogy kapcsolók állapotának

lekérdezésére és lámpák működtetésére is használható a PIO lapka?

Mit jelent a valódi/memóriára leképezett I/O? Melyiknek mi az előnye, hátránya?

Mit nevezünk teljes/részleges cím dekódolásnak? Melyiknek mi az előnye, hátránya?

Mit nevezünk port-nak?Hogy történik egy port címzése a PC-n?Hogy működik az IN és az OUT utasítás?Mi a BIOS?

Page 71: A verem két felső szavának cseréje (4.17. ábra)

Máté: Architektúrák 6. előadás 71

FeladatokMilyen vezérlő regiszterei vannak egy terminálnak?Mire szolgál a terminál billentyűzet puffer regisztere?Hogyan történik a programozott B/K?Mit nevezünk pollozásos technikának? Mire használható a DMA?Hogy működik a DMA?Milyen regiszterei vannak a DMA-nak?Mire szolgál a NOP utasítás?Mire szolgál a WAIT utasítás?Mire szolgál a HLT utasítás?

Page 72: A verem két felső szavának cseréje (4.17. ábra)

Máté: Architektúrák 6. előadás 72

FeladatokMit nevezünk program megszakításnak?Mi a megszakítás kezelő?Hogyan történhet a nyomtatás szervezése megszakítás

segítségével?Megszakítható-e a megszakítás kezelő?Mi a csapda?Mi a különbség a csapda és a megszakítás között?Hogy működik a 8259A megszakítás vezérlő lapka?Milyen hardver és milyen szoftver tevékenységek

tartoznak a megszakításhoz?Mit jelent az átlátszóság megszakítás esetén?

Page 73: A verem két felső szavának cseréje (4.17. ábra)

Máté: Architektúrák 6. előadás 73

FeladatokHogy történik a program megszakítás a PC-n?Mire szolgál az INT utasítás, és hogy működik?Mi az INT 3 utasítás nevezetessége?Hogy működik a DEBUG program?Miért „felejti el” a töréspontot a DEBUG program? Miért nem lehet egy ciklus futásait egyetlen töréspont

elhelyezésével figyeltetni a DEBUG programmal?Mire szolgál az INTO utasítás?Hogy történik a visszatérés a megszakítás kezelőből?Hogy működik az IRET utasítás?

Page 74: A verem két felső szavának cseréje (4.17. ábra)

Máté: Architektúrák 6. előadás 74

FeladatokMire szolgál a szemafor?Miért támaszt speciális nehézséget a szemafor

kezelése?Hogy kezelhető PC-n a szemafor?