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
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
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
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
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
Máté: Architektúrák 7. előadás 4
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
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.
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.
Máté: Architektúrák 6. előadás 8
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!
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
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.
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ő.
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!
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
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á!
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
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
; bitenkénti kizáró vagyNOT op ; op ~op, bitenkénti negáció,
; nem módosítja STATUS tartalmát!
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.
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 …
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 …
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 …
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 …
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
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
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
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
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.
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
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
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
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
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.
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
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.
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
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]); }}
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.
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.
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.
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.
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.
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.
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.
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.
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 . . .
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.
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.
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.
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).
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
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.
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.
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.
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?
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
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
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
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
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?
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?
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?
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!
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!
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?
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?
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?
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?
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?
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