Title: Pertrauktys (Interrupts)
1Pertrauktys(Interrupts)
2(No Transcript)
3(No Transcript)
4Programa be pertraukciu
- Vykdoma keletas WRITE instrukciju, iterptu i
vartotojo programa. 1, 2, 3 kodo segmentuose
pertraukciu nera. - Pagal WRITE instrukcijas kreipiamasi i I/I
sistemine paslaugu programa (utility), kuri
atlieka tam tikra operacija. - 4 sekcija parengia tam tikra I/I operacija
(duomenu išvedimas i specialu buferi, parametru
periferinio irenginio komandoms parengimas ir
pan.) - I/I komanda jeigu petrauktys nenumatytos, tai
bus vykdomos tik šios komandos. - 5 sekcija pagal šia kodo seka vykdoma I/I
operacija. Gali buti numatytas veiksmaženklis
(flag), kuris rodo, ar sekmingai atlikta
operacija.
5Petrauktys (Interrupts)
- Pertrauktys yra mechanizmas, kuriuo naudodamiesi
ivairus kompiuterio irenginiai ir programos
atkreipia CPI demesi, reikalaudami juos
aptarnauti.
6Pertraukciu klases
- Programines pertrauktys. Jos generuojamos,
susidarius tam tikroms salygoms, vykdant
instrukcija, pvz dalyba iš nulio, aritmetine
perpilda ir pan. - Laikmacio (timer) Generuoja laikmatis, CPI
nedalyvaujant. Taip pertrauktys. sistema
atlieka tokias periodines funkcijas, kaip
operatyviosios atminties regeneravimas ir
pan. - I/I pertrauktys. I/I valdiklis signalizuoja
apie užduoties baigima ar klaida. - Technines irangos Generuojamos, esant avarijoms
arba gedimams, gedimo pertrauktys. pvz.
atminties lyginumo (parity) klaida.
Pertrauktys didina instrukciju apdorojimo
efektyvuma. Be ju CPI turetu šimtus ir
tukstancius ciklu laukti, kol spaudintuvas baigs
spausdinti ir pan.
7Programa su pertrauktimistrumpasis I/I laukimas
- Vykdoma keletas WRITE instrukciju, iterptu i
vartotojo programa. 1, 2, 3 kodo segmentuose
pertraukciu nera. - Pagal WRITE instrukcijas kreipiamasi i I/I
sistemine paslaugu programa (utility), kuri
atlieka tam tikra operacija. - 4 sekcija parengia tam tikra I/I operacija
(duomenu išvedimas i specialu buferi, parametru
periferinio irenginio komandoms parengimas ir
pan.) - I/I komanda jeigu petrauktys nenumatytos, tai
bus vykdomos tik šios komandos. - 5 sekcija pagal šia kodo seka vykdoma I/I
operacija. Gali buti numatytas veiksmaženklis
(flag), kuris rodo, ar sekmingai atlikta
operacija.
Žymi pertraukti
8Programa su pertrauktimisilgasis I/I laukimas
- Vykdoma keletas WRITE instrukciju, iterptu i
vartotojo programa. 1, 2, 3 kodo segmentuose
pertraukciu nera. - Pagal WRITE instrukcijas kreipiamasi i I/I
sistemine paslaugu programa (utility), kuri
atlieka tam tikra operacija. - 4 sekcija parengia tam tikra I/I operacija
(duomenu išvedimas i specialu buferi, parametru
periferinio irenginio komandoms parengimas ir
pan.) - I/I komanda jeigu petrauktys nenumatytos, tai
bus vykdomos tik šios komandos. - 5 sekcija pagal šia kodo seka vykdoma I/I
operacija. Gali buti numatytas veiksmaženklis
(flag), kuris rodo, ar sekmingai atlikta
operacija.
9Instrukcijos ciklas su pertrauktimis
Pertraukti paprastai apdoroja operacine sistema.
10Programos laiko diagrama
Del pertraukciu našumas padideja, nes yra laiko
tarpas, kai I/I operacija yra vykdoma kartu su
vartotojo programa (pažymeta raudonai).
11Valdymo keitimas vykdant pertrauktis
Pertrauktis IRQ signalas iš I/I modulio
-gtCPI CPI stabdo programa, isimena konteksta ir
iškviecia pertraukties apdorojimo procedura
(interrupt handler). Vartotojo programoje nera
kodo, susijusio su pertrauktim (jis patalpintas
atskirai ir nurodomas pertraukties vektoriumi).
Programos stabdyma ir atnaujinima tame paciame
taške užtikrina CPI ir operacine sistema,
naudojant atmintines elementus.
12(No Transcript)
13Pertrauktimis valdomos proceduros
- skirtingos pertraukciu linijos
- programinis sarašas deizi (daisy) grandines
(dar vadinama technines irangos sarašu arba
vektoriuotaja) magistrales arbitravimo
(vektoriuotoji).
14Pertrauktimis valdomos proceduros
skirtingos pertraukciu linijos
Akivaizdžiausias ir tiesioginis pertraukciu
problemos sprendimo budas yra užtikrinti butina
pertraukciu liniju skaiciu tarp CPI ir I/I
modulio. Taciau skirti daugiau negu kelias
magistrales linijas arba CPI kontaktus
pertraukciu linijoms labai neracionalu.
Reiškia, net jeigu naudojamos kelios linijos
labai tiketina, kad kiekviena linija aptarnauja
kelis, prie jos prijungtus I/I modulius. Taigi,
kiekvienoje linijoje turi buti taikomas vienas iš
triju likusiuju metodu.
15Pertrauktimis valdomos proceduros
programinis sarašas
Tai yra programinis periferiniu irengimu "sarašo"
tikrinimas (software poll). Kai CPI aptinka
pertraukti, jis iškviecia pertraukciu apdorojimo
procedura, kurios paskirtis yra nustatyti kuris
iš moduliu sugeneravo pertraukti. Sarašas gali
atrodyti kaip atskiru komandiniu eiluciu (pvz..,
TEST I/O - tikrinti I/I) rinkinys. Šiuo atveju,
CPI generuoja TEST I/O komanda ir adresu
magistraleje nustato tam tikro I/I modulio
adresa. I/I modulis reaguoja i šia komanda
teigiamai, jeigu butent jis ijunge pertraukti.
Galimas ir kitas variantas - kiekvienas I/I
modulis gali tureti adresuojamaji statuso
registra. CPI šiuo atveju, skaito kiekvieno I/I
modulio statuso registra ir pagal jo turini
aptinka pertraukti sugeneravusi moduli. Kai
modulis aptiktas, CPI iškviecia pertraukties
apdorojimo procedura ir nurodo jai ši irengini.
Programinio sarašo tikrinimo trukumas yra tas,
kad eikvojama daug laiko.
16Pertrauktimis valdomos proceduros
deizi (daisy) grandines (dar vadinama
technines irangos sarašu arba vektoriuotaja)
17Pertrauktimis valdomos proceduros
magistrales arbitravimo (vektoriuotoji).
Vektoriuotas pertrauktis taikantis metodas -
magistrales arbitravimas. Magistrales
arbitravimo atveju, I/I modulis iš pradžiu turi
"užvaldyti" magistrale, o po to reikalauti
pertraukties per tam tikra linija. Šiuo atveju,
tik vienas modulis duotu laiko momentu gali
valdyti pertraukciu linija. Kai CPI aptinka
pertraukti, jis atsako patvirtinimu per specialia
linija. Tada reikalingas modulis gali išdestyti
savo vektoriu duomenu linijose.
18Pertrauktimis valdomos proceduros
programinis sarašas deizi (daisy) grandines
(dar vadinama technines irangos sarašu arba
vektoriuotaja) magistrales arbitravimo
(vektoriuotoji).
Visi cia aptarti metodai taikomi reikiamam I/I
moduliui identifikuoti. Jie taip pat suteikia
tam tikra prioriteta, kai pertraukties apdorojimo
reikalauja daugiau nei vienas irenginys. Kai
pertrauktims organizuoti naudojama daugybe
liniju, CPI paprasciausia pasirenka aukšciausia
prioriteta turincia linija. Programinio sarašo
tikrinimo atveju tvarka, pagal kuria bus
tikrinamas I/I modulis, nusako jo prioritetas.
Magistrales arbitravimas taip pat užtikrina
prioriteto schema. Panašiai, moduliu tikrinimo
eiles tvarka nustato deizi grandyje pažymeti
prioritetai praktiškai atstumas nuo CP.
19Pertraukties grandines
INT RQ
CPU
Iv/Išv
Iv/Išv
20- Interrupts provide the mechanism by which the Z80
can process asynchronous events such as timers,
sensor input and peripheral communication. -
- When an interrupt is received the Z80 executes a
sub-routine known as an Interrupt Handler. These
subroutines are the same as any other machine
code subroutine except that the following
considerations need to be taken into account - The sub-routine can be executed at random points
in the code and so must ensure that registers are
saved before any data is lost. - Interrupts must be re-enabled as soon as possible
once the registers have been saved and the data
acquired - The RETI (RETurn from Interrupt) instruction must
be used to return from an Interrupt Handler
sub-routine.
21Pertraukties grandines
Because the Z80 has only one interrupt line, the
Z80 and its peripheral support chips negotiate
for the CPUs attention by using a hardware based
daisy-chain approach. The peripheral chip closest
to the power line on the daisy-chain has the
highest priority when it raises an interrupt
request. This is because the interrupting chip
indicates its need for service to the other
peripheral chips through the IEO signal. Any chip
which is physically closer to the CPU on the
chain can be blocked from raising an interrupt by
holding IEO (Interrupt Enable Output) on the
interrupting device low. Any peripheral chip
which is being blocked from the CPU in this way
will simply keep the interrupt request signal
(INT) active until either the CPU acknowledges
the peripheral chip (or until it loses the data).
The peripheral is acknowledged when IEI is high
(and IEO low) at the time that INTACK is
received.
Figure The
Z80 Interrupt Daisy-Chain
22Maskuojamos pertrauktys
- The INT signal is known as a maskable interrupt
because the programmer can cause the CPU to
ignore all interrupt requests by using the DI
(Disable Interrupt) instruction. - Maskable interrupts are automatically disabled by
the CPU during the INTACK cycle and must be
re-enabled by the programmer (using the EI -
Enable Interrupts - instruction) before any more
interrupts can be acknowledged. - The EI instruction is normally executed as soon
as possible in the interrupt handler code to
avoid losing any interrupt signals from higher
priority peripherals in the daisy-chain.
23- The Spectrums memory map is very simple
- ROM is paged into address 0x0000 - 0x3fff
- RAM is paged into 0x4000 - 0x7fff
- on the 64K model, with the extra 32k if fitted
paged into 0x8000 - 0xffff. - There is but one IO port on a base Spectrum, 0xfe
gt254
0x7fff
0x4000
0x3fff
0x0000
Bazinis IO adresas žemiausias IO grupes adresas
24Extended
HMA 1000-1024 kB
Conventional
25F
E
D
C
B
A
0600
0500
0400
0000
1 M A0000
- ROM BIOS
- Video RAM
- Pagr atmintine (Conventional)
- 10x64kB 640kB
- Dos duomenys
- ROM BIOS kintamieji ir duomenys
- Pertraukties vektoriai 256x4B (2word) 1024B
I x86 mP atmintines paskirstymas
26I x86 mP atmintines paskirstymas
1 M A0000
F
E
D
C
B
A
0600
0500
0400
0000
- ROM BIOS
- Video RAM
- Pagr atmintine (Conventional)
- 10x64kB 640kB
- Dos duomenys
- ROM BIOS kintamieji ir duomenys
- Pertraukties vektoriai 256x4B (2word)
27(No Transcript)
28(No Transcript)
29(No Transcript)
30(No Transcript)
31(No Transcript)
32(No Transcript)
33Pertrauktimis valdomos proceduros
programinis sarašas deizi (daisy)
grandines (dar vadinama technines irangos
sarašu arba vektoriuotaja) magistrales
arbitravimo (vektoriuotoji).
34Pertraukties grandines
INT RQ
CPU
Iv/Išv
Iv/Išv
35(No Transcript)
36(No Transcript)
37(No Transcript)
38(No Transcript)
39(No Transcript)
40(No Transcript)
41(No Transcript)
42(No Transcript)
43(No Transcript)
44(No Transcript)
45(No Transcript)
46(No Transcript)
47(No Transcript)
48(No Transcript)
49(No Transcript)
50(No Transcript)
51(No Transcript)
52(No Transcript)
53(No Transcript)
54(No Transcript)
55(No Transcript)
56(No Transcript)
57(No Transcript)
58(No Transcript)
59- www.ff.vu.lt/kklase/komptaikymas