Přidání poznámek z POT k přerušení
This commit is contained in:
parent
79bcc1ebe4
commit
3106d9001b
1 changed files with 96 additions and 0 deletions
96
KIV POT/12. Přerušení.md
Normal file
96
KIV POT/12. Přerušení.md
Normal file
|
@ -0,0 +1,96 @@
|
|||
# Přerušení
|
||||
|
||||
- při výskytu určité události procesor přeruší vykonávání programu a začne vykonávat obslužnou proceduru pro danou událost
|
||||
- po dokončení procedury program pokračuje
|
||||
|
||||
**Přerušení** (Interrupt)
|
||||
- událost nastane mimo procesor (např. v IO řadiči)
|
||||
- indikace vzniku události je do procesoru zavedena speciálním přerušovacím signálem
|
||||
|
||||
**Výjimky** (Exceptions)
|
||||
- událost nastane přímo v procesoru (dělení nulou, trap, výpadek stránky, programové přerušení, ...)
|
||||
|
||||
**Maskovatelná přerušení**
|
||||
- lze je programově (nastavením registru/instrukcí) povolit či zakázat
|
||||
- u nemaskovatelných to nelze
|
||||
|
||||
**Požadavky na přerušovací systém**
|
||||
1. globální povolení/zákaz všech přerušení (kromě NMI)
|
||||
2. selektivní povolování/zákaz jednotlivých přerušení
|
||||
3. prioritní systém - povolení pouze přerušení s určitou prioritou
|
||||
4. prioritní systém - při současném vzniku více přerušení se nejprve obslouží to s nejvyšší prioritou
|
||||
5. vazba každého přerušení na příslušný obslužný program
|
||||
6. možnost vytvoření vnořených přerušení
|
||||
|
||||
**Řadič přerušení**
|
||||
- řadič vnějších přerušení může být
|
||||
- kompletně vestavěn v procesoru (např. H8S)
|
||||
- připojen jako samostatný obvod
|
||||
|
||||
**Uplatnění přerušení**
|
||||
- aktivita požadavku na přerušení se testuje vždy po dokončení instrukce
|
||||
- není-li požadavek na přerušení aktivní, procesor pokračuje další instrukcí
|
||||
- je-li požadavek na přerušení aktivní (a přerušení jsou povolena), zahájí se operace pro jeho obsluhu
|
||||
- ve speciálních případech (výpadek stránky, porušení ochrany paměti, ...) může přerušení/výjimka nastat i v průběhu provádění instrukce
|
||||
|
||||
**Přerušovací systém procesoru H8S**
|
||||
- několik desítek přerušení od periferních řadičů přímo na čipu
|
||||
- 8 vnějších přerušení (/IRQ7-/IRQ0)
|
||||
- nemaskovatelné přerušení (/NMI)
|
||||
- registry přerušovacího systému
|
||||
- ISR – (Interrupt Status Register)
|
||||
- registr aktivních žádostí o přerušení
|
||||
- nastavuje se automaticky, ale lze jej modifikovat i programově
|
||||
- IER – (Interrupt Enable Register)
|
||||
- povolení jednotlivých přerušení (0/1)
|
||||
- nastavuje se programově podle potřeby
|
||||
- IPR – (Interrupt Priority Register)
|
||||
- priorita přerušení (0-7)
|
||||
- nastavuje se programově podle potřeby
|
||||
- EXR
|
||||
- úroveň povolených přerušení (aktivní jsou pouze ty s IPR > EXR)
|
||||
- nastavuje se programově, při obsluze přerušení se modifikuje automaticky
|
||||
|
||||
**Určení adresy obslužného programu (H8S)**
|
||||
- na začátku paměti je tabulka s adresami obslužných programů (přerušovací vektory)
|
||||
- každé přerušení má pevně přidělenou položku v tabulce
|
||||
|
||||
**Obsluha přerušení (H8S)**
|
||||
1. inicializace přerušovacího systému
|
||||
- nastavení přeruš. vektorů (před spuštěním nebo za běhu)
|
||||
- nastavení periferních řadičů
|
||||
- nastavení priorit
|
||||
- povolení přerušení
|
||||
- obecně instrukce Enable Interrupt, u H8S zápisem priority do EXR
|
||||
2. hardwarové provedení operace při vzniku přerušení
|
||||
- uložení PC (3 byte), CCR (1 byte) a EXR (1 byte) do zásobníku
|
||||
- nastavení hodnoty IPR do EXR
|
||||
- přečtení přerušovacího vektoru a nastavení PC
|
||||
3. softwarové provedení operace v obslužné proceduře
|
||||
- uloženích používaných registrů do zásobníku
|
||||
- obsluha přerušení (IO řadič, ...)
|
||||
- při obsluze přerušení mohou být ostatní přerušení
|
||||
- zakázána, povolena všechna nebo ta s vyšší prioritou
|
||||
- obnovení obsahu uložených registrů
|
||||
4. provedení instrukce RTE na konci obslužného programu
|
||||
- ze zásobníku se postupně vybere a obnové původní stav EXR, CCR, PC (hardwarově)
|
||||
|
||||
**Vnořená přerušení**
|
||||
- obslužný program přerušení je znovu přerušen
|
||||
- při akceptování přerušení se nastaví hodnota IPR do EXR
|
||||
- další přerušení musí mít vyšší priotitu než to obsluhované
|
||||
- po dokončení obsluhy druhého přerušení pokračuje obsluha prvního přerušení
|
||||
|
||||
**Interrupt pending**
|
||||
- pokud má přerušení nízkou prioritu, tak se nemůže okamžitě obsloužit
|
||||
- přerušení se obslouží až po nastavení EXR na předchozí hodnotu
|
||||
|
||||
**Vnější řadič přerušení**
|
||||
- obsahuje masky pro jednotlivá přerušení
|
||||
- řadí vnější přerušení podle priorit
|
||||
|
||||
**Použití přerušení k řízení IO operací**
|
||||
- IO řadič může přerušením indikovat připravenost speciálním signálem zavedeným na přerušovací vstup procesoru
|
||||
- v obslužné proceduře se provede zápis/čtení dat do/z IO řadiče
|
||||
- není potřeba periodicky testovat stav IO systému
|
||||
- vhodné pro pomalé přenosy
|
Loading…
Reference in a new issue