2012 m. gruodžio 28 d., penktadienis

5. Pertraukčių posistemės paskirtis ir funkcionavimo principai Tikslai: 1. Suprasti pertraukčių posistemės paskirtį. 2. Išmanyti pagrindinius pertraukčių tipus ir jų aptarnavimo principus. 3. Suprasti pertraukčių posistemės funkcijas aprašantį algoritmą 4. Paaiškinti pertraukčių valdiklio darbą. Temos studijoms reikalingas laikas: 2 val. teorijos; 2 val. savarankiško darbo. 5.1. Pertraukčių posistemė paskirtis ir funkcijos Kompiuterių pertraukčių posistemė skirta vykdomai programai sustabdyti ir pereiti prie kitos, svarbesnės toje situacijoje programos vykdymo. Ta programa, vadinama pertraukties aptarnavimo (pertraukiančioji, pertraukimo) programa. Šios programos pobūdis priklauso nuo pertraukties signalo, siunčiamo mikroprocesoriui, atsiradimo priežasties. Vėliau, įvykdžius pertraukties aptarnavimo programą, jei tai įmanoma, sustabdytos programos vykdymas tęsiamas. Pertrauktis galima būtų palyginti su telefono skambučiu. Žmogus pakelia telefono ragelį tik tuo atveju, jeigu išgirsta iškvietos signalą. Visai nėra prasmės pakelti ragelį, jeigu nebuvo iškvietos signalo, tikintis, kad, galbūt, kas nors tuo metu atsitiktinai paskambins. Suskambus telefonui, studentas gali nutraukti knygos skaitymą ir atlikti tokius veiksmus: įsiminti skaitomo puslapio numerį, pakelti ragelį, išklausyti klausimą, atsakyti į klausimą, padėti ragelį ir grįžti prie knygos skaitymo (nuo tos vietos, kur jis buvo nutrauktas). Šiame gyvenimiškame pavyzdyje nesunku pastebėti tokias analogijas: “studentas – mikroprocesorius”, “knygos skaitymas – vykdoma programa”, “telefono skambutis – pertrūkio signalas” ir “ pertrūkio aptarnavimo programa – studento reakcijų į telefono skambutį seka “. Dažniausiai pertrūkio signalų atsiradimo laikas išanksto yra nežinomas ir vykdomojoje programoje neplanuojamas. Tai nepriklausomas ir netikėtas įvykis, galintis atsirasti vykdant bet kurį programos žingsnį. Svarbu, kad aptarnavus pertraukties šaltinį būtų sugrįžta i į tą programos vietą, ties kurias ji pertraukta ir pratęsti jos darbą ( jei nėra priežasčių neleidžiančių to padaryti). 5.1. pav. Pertraukiančiosios programos iškvietimas Pertraukčių valdoma įvestis – išvestis yra vienas iš būdų sumažinti procesoriaus prastovas dėl įvesties –išvesties procedūrų atlikimo. Vykdant duomenų apdorojimą, procesoriui gana dažnai tenka įvesti ir išvesti duomenis iš išorinių įrenginių. Kadangi jų sparta yra šimtus ir tūkstančius kartų mažesnė, nei paties procesoriaus darbo sparta, programiniu būdu vykdant įvestį-išvestį (Input-output) susidaro didelės procesoriaus prastovos. Kiekviename procesoriaus darbo cikle turi būti patikrinamas įrenginio pasirengimas keistis nauja duomenų porcija ir, jei to nėra, procesorius laukia, kol toks signalas (apie pasirengimą) bus išduotas kuriame tai kitame cikle. Pertrauktys leidžia išoriniams įrenginiams pasirengti siųsti ir priimti duomenis. Jos įgalioja išorinių įrenginių valdiklius priversti mikroprocesorių sustabdyti vykdomą veiklą ir pradėti pertraukties, kurios reikalauja išoriniai įrenginiai, aptarnavimą. Procesoriaus požiūriu operacija veikia taip. Jis siunčia skaitymo komanda READ, o po to pasitraukia nuo operacijos vykdymo ir gali atlikti kitą darbą ( pvz., kitą programą). Kiekviename naujai vykdomame cikle jis vis tikrina, ar nėra pertraukties reikalavimo (gal įrenginys jau pasiruošęs perduoti duomenų porciją), jei taip, programos darbas pertraukiamas ir procesorius priima duomenis. Taip baitas po baito besikartojančių pertraukčių dėka perduodamas visas duomenų masyvas. Programa gali būti nutraukiama ir kitais atvejais, kai prireikia vykdyti skubesnę užduotį. Atlikus pastarąją užduotį, vėl sugrįžtama prie ankstesnės programos vykdymo. Tam procesoriuje turi būti atstatyta ta nutrauktojo proceso būsena, ties kuria programa buvo laikinai sustabdyta. 5.2. Pagrindiniai pertraukčių šaltiniai Pertraukčių signalus gali generuoti įvairios mikroprocesorinės sistemos posistemės. Išskiriami šie pertraukčių šaltinių tipai: 5.1 lentelė. Visuose kompiuteriuose yra pertraukčių mechanizmas, kuriuo kiti moduliai gali nutraukti įprastą centrinio procesoriaus darbą. 5.3. Pertraukčių ir jų aptarnavimo mechanizmų klasifikavimas Išorinių įrenginių valdiklio generuojama pertrauktis yra vadinama išorine, o mikroprocesoriaus generuojama pertrauktis - vidine. Visas mikrokompiuterio pertrauktis galima suskirstyti į šiuos pagrindinius tipus: 1. Mikroprocesoriaus vidinės pertrauktys, atsirandančios sutrikus mikroprocesoriaus veiklai (pavyzdžiui, dėl techninių priežasčių arba bandant vykdyti komandą su klaidingu operacijos kodu). 2. Išorinės pertrauktys, atsirandančios dėl vienų ar kitų įvykių mikrokompiuterio išoriniuose įtaisuose (pavyzdžiui, signalai siunčiami iš taimerio arba iš kurio nors įvedimo - išvedimo įtaiso tuomet, kai jis pasiruošęs siųsti ar priimti naują duomenų baitą). 3. Užprogramuotos pertrauktys. Jos iš anksto numatomos vykdomojoje programoje, naudojant specialias komandas. 4. Tarpmašininės pertrauktys, atsirandančios, pavyzdžiui, siunčiant specialius (komunikacinius) signalus iš vieno mikrokompiuterio į kitą. IRQ (Interrupt ReQust – pertraukimo užklausa) – vieno kompiuterio mazgo signalas reikalaujantis procesoriaus dėmesio šitam mazgui, atsiranda atsitikus tam tikram įvykiui (Pvz.: paspaudus klavišą, baigus įrašymą į diską ir t.t.). Skirtingų tipų pertraukčių tipiniai pavyzdžiai: Išorinės (asinchroniškos procesui): Ø techniniai gedimai Ø laikrodis Ø kiti procesai ar procesoriai Ø procesai išoriniuose įtaisuose Ø vartotojas, operatorius Vidinės (sinchroniškos procesui): Ø adresavimo klaidos Ø operandų klaidos Ø operacijos klaidos Ø negalima operacija Ø režimo pakeitimas Programinės (sinchroniškos procesui): Ø programinės (pertrauktys sistemai tikrinti) Ø derinimo (po kiekvienos komandos - analizė) Kompiuteriuose paprastai vykdoma komanda užbaigiama ir tik po to pradedamas pertraukties aptarnavimas, tačiau būna ir kitaip. Paprogramių vykdymo pradžios galimi variantai: Ø po komandos (dažniausiai) Ø komandoje (rečiau) Ø kai negalima užbaigti (puslapio klaida) komandos Reakcijos į pertraukties reikalavimo signalą laikas gali būti įvairus. Išsaugoti procesoriaus būseną komandos vykdymo fazėje yra kur kas sudėtingesnis uždavinys, nei užbaigus ją vykdyti. Paprogramės gali būti apdorojamos: Ø mikroprograma (kartais) Ø paprograme (dažniausiai) Ø aparatūra (retai) PC/AT kompiuteriuose ISA magistralėje numatyta šešiolika pertraukčių šaltiniams aptarnauti skirtų linijų: 0 - sisteminis laikmatis; 1 - klaviatūros kontroleris; 2 - grįžtamojo kadro signalas (EGA\VGA); 3 - paprastai COM2/COM4; 4 - paprastai COM1/COM3; 5 - HDD kontroleris (XT), paprastai laisvas AT; 6 -FDD kontroleris; 7 - LPT1, tačiau dauguma LPT kontrolerių jo nenaudoja; 8 - realaus laiko laikrodis su autonominiu maitinimu (RTC); 9 - lygiagretus IRQ2; 10 -nenaudojamas; 11 -nenaudojamas; 12 - paprastai PS/2 tipo pelės kontroleris; 13 - matematinis koprocesorius; 14 -paprastai IDE HDD kontroleris (pirmas kanalas); 15 - tas pats tiktai 2 kanalas. PCI magistralėje yra tik 4 pertraukčių linijos. 5.4. Pertraukties procedūra Procesoriaus reakcija į pertraukties reikalavimo signalo gavimą vykdoma pagal tam tikrą algoritmą. Pertraukties aptarnavimo procedūrą galima suskirstyti į tokius etapus: Ø Pertraukties signalo priėmimas; Ø Pertraukties šaltinio atpažinimas; Ø Einamosios komandos vykdymo užbaigimas; Ø Procesorius priima (arba ignoruoja) pertraukties reikalavimo signalą; Ø Vykdytos programos būsenos išsaugojimas; Ø Pertraukiančiosios programos vykdymas; Ø Vykdytos programos būsenos atstatymas. Iš esmės pati pertraukties aptarnavimo procedūra panaši į paprogramės vykdymo procedūrą, tačiau pertraukties signalo pasirodymo laikas niekada nežinomas. 5.2 pav. Būsenos įsiminimas ir atstatymas 5.5. Pertraukčių aptarnavimo mechanizmas Vykdant vieną ir tą pačią programą pertraukčių reikalavimų signalai gali būti išduodami skirtingais programos vykdymo momentais, jų skaičius t. p. nebūtinai turi sutapti. Todėl pertraukties aptarnavimas reikalauja žymiai sudėtingesnio aparatinio mechanizmo. Pertraukties apdorojimo laiko diagrama: 5.3 pav. Pertraukties apdorojimo laiko diagrama Perjungimo laikas priklauso nuo pertraukties signalo pasirodymo momento ir sistemos reakcijos laiko. Paprastai komanda, kurios vykdymo metu gautas pertraukties signalas, užbaigiama, o kitos komandos pirmajame cikle pradedamas pertraukties aptarnavimas (ta komanda užbaigiama, tik po pertraukties procedūros). Nereikia užmiršti, kad pertraukčių šaltinių skaičius paprastai yra nemažas, ta pati programa gali būti pertraukiama daug kartų. Daugelio lygių sistemose vienos pertraukiančiosios programos gali būti pertraukiamos kitų. Žr. 8.4 pav. 5.4 pav. Kelių pertraukiančiųjų programų aptarnavimas 5.6 Pertraukties vektorius Kiekviena pertrauktis turi identifikatorių, kuris leidžia kuria nors algoritmo šaka vykdyti pertraukties aptarnavimo veiksmus. Identifikatorius - tai vektoriumi vadinamas skaičius, kuris nurodo adresą tos atmintinės ląstelės, nuo kurios saugomas pertraukiančiosios programos pirmosios komandos adresas. Vektorių į magistralę siunčia arba pertraukčių valdiklis, arba pertraukties reikalaujantis išorinis įrenginys. Pertraukiančiąsias programas galima tobulinti, tam gali prireikti joms daugiau vietos atmintinėje, tačiau pertraukties vektoriaus adresas išlieka tas pats. 5.7. Pertraukčių aptarnavimo draudimas (maskavimas) Dauguma sistemų turi tam tikrais atvejais pertrauktis uždraudžiančias komandas. Vykdoma programa negali būti nutraukiama, jei pertraukčių vykdymas yra uždraustas. Kiekviena pertrūkio sistema gali automatiškai arba programuotojui nurodžius drausti, kitaip tariant, užmaskuoti visus MP pertrauktis arba nurodytą jų tipą. Todėl, uždraudus pertrauktis, galima laikinai (kol pertrauktys nebus leidžiamos) nereaguoti į visus arba pasirinktus pertraukčių signalus. Draudimo (maskavimo) mechanizmo analogijų galima rasti ir žmogaus veikloje. Ankstesniame pavyzdyje studentas galėjo į telefono skambutį nekreipti dėmesio, manydamas, kad knygą skaityti yra svarbiau. Taigi studento atžvilgiu visi telefono skambučiai yra užmaskuoti. Įvairiuose mikrokompiuteriuose pertrauktys maskuojami skirtingai. Dažnai naudojamas specialus mikroprocesoriaus registras, vadinamas pertraukties kaukės registru. Šiame registre, pavyzdžiui, gali būti išskirta po vieną dvejetainę skiltį kiekvienai pertraukčių klasei. Dvejetainės skilties reikšmė 1 gali reikšti pertraukčių draudimą, reikšmė 0 – šią skiltį atitinkančios klasės pertraukčių leidimą. Pavyzdžiui, kai yra keturi (anksčiau išvardinti) pertraukčių tipai, tuomet kaukės registras gali būti keturių skilčių ilgio. Daugelio mikroprocesorių kaukės registre yra tik viena skiltis, tad pertrauktys yra leidžiami arba draudžiami visi iš karto. 5.5 pav. Pertraukčių draudimas (maskavimas) Tačiau yra tokių tipų pertraukčių, kurių stabdyti negalima dėl dviejų priežasčių: Ø todėl, kad jų prioriteto lygis yra labai aukštas Ø todėl, kad pertraukties sustabdymas būtų žalingas. Labai ryškus pavyzdys būtų perspėjimo pertrauktis, kuri suformuojama dėl to, kad išjungiamas elektros maitinimo šaltinis. Tokio tipo pertrauktys, kurių uždrausti negalima vadinamos nedraudžiamomis (nemaskuojamomis) pertrauktimis. Priešingai minėtoms, draudžiamosiomis (maskuojamomis) pertrauktimis vadinamos tokios, kurias mikroprocesorius gali ignoruoti. Pertrauktis reikia drausti tais atvejais, kai sutinkamos tam tikros kodų sekos, kurių pertraukti negalima, nes dėl to bus įvelta klaida. Kiekviena pertrūkio sistema gali automatiškai arba programuotojui nurodžius drausti, kitaip tariant, užmaskuoti visus MP pertrauktis arba nurodytą jų tipą. Todėl, uždraudus pertrauktis, galima laikinai (kol pertrauktys nebus leidžiamos) nereaguoti į visus arba pasirinktus pertraukčių signalus. 5.8. Prioritetinis pertraukčių aptarnavimas Pertraukties reikalavimą gali atsiųsti įvesties / išvesties valdiklis, tam tikrais, išimtinais atvejais - pats mikroprocesorius. Ne visos pertrauktys yra vienodai svarbios. Pertraukčių aptarnavimo sistema gali būti vieno arba daugelio lygių. Vieno lygio pertraukčių sistemose kitos pertraukties aptarnavimas galimas tik užbaigus ankstesnįjį. Dagelio lygių sistemose aukštesnį prioritetą turinčios pertrauktys gali pertraukti žemesnį prioritetą turinčių pertraukčių aptarnavimą. Grįžimas prie ankstesniųjų pertraukiančiųjų programų vykdomas priešinga tvarka (first in – last out). 5.6 pav. Daugelio lygių pertraukčių aptarnavimas Svarbesnės pertrauktys turi aukštesnį prioritetą. Taigi, egzistuoja tam tikra pertraukčių hierarchija. Vieno lygio pertraukčių sistemose apdorojant vieną pertrauktį kitos yra draudžiamos. Pertraukčių draustis reiškia tai, kad procesorius neatsakys į pertraukties užklausos signalą. Jeigu šiuo laiko momentu pertrauktis atsiranda, ji užlaikoma ir išsaugoma, kol procesorius galės ją patikrinti (tuomet pertraukties draustis bus atšaukta). Atlikus pertraukties apdorojimo procedūrą, prieš sugrįžtant į vartotojo programą, pertraukties draustis atšaukiama, ir procesorius tikrina, ar nebuvo atsiradusios kokios nors kitos pertrauktys Šio principo trūkumas tai, kad nėra numatyti santykiniai užklausų prioritetai arba laiko atžvilgiu kritiški atvejai. Pavyzdžiui, kai komunikacijos linijoje atsiranda duomenų, juos reikia priimti kuo greičiau, kad liktų laisva vieta kitiems išoriniams duomenims. Šiuo atveju, jeigu pirmasis duomenų paketas nebus apdorotas prieš atsirandant kitam, pastarasis gali būti prarastas. Daugelio lygių pertraukčių sistemose pertrauktims priskiriami tam tikri prioritetai. Šiuo atveju atsiradus aukštesnio prioriteto pertraukčiai žemesnio prioriteto pertrauktis bus pristabdyta. 5.9. Mikroprocesorių x86 pertraukčių sistema Šio MP pertraukčių sistema yra tobulesnė nei I8080. Mikroprocesorius I8086 turi du išorinių pertraukčių signalų priėmimo išvadus: NMI ir INTR. NMI išvadas yra naudojamas nemaskuojamosioms pertrauktiems. kurios atitinka avarines situacijas. INTR išvadas yra skirtas pertraukčių valdiklio 8259A signalams priimti. Valdiklis sujungiamas su išoriniais įrenginiais, galinčiais reikalauti pertraukčių iš mikroprocesoriaus. Kai INTR aktyvus, tai procesoriaus atsakas į pertraukties reikalavimą priklauso nuo pertraukties žymės IF reikšmės. Pertrauktis nebus vykdoma tol, kol nebus baigta pradėta komanda. 5.7 pav. MP 8086 pertrauktys x86 procesorių pertraukties aptarnavimo algoritmas: 1. Žymių registro turinys įrašomas į dėklą. 2. Draudžiami pertraukčių reikalavimų signalų, patenkančių į INTR įėjimą, aptarnavimai. 3. Į dėklą įrašomas segmento registro turinys . 4. Pirmasis pertraukimo vektoriaus žodis , suformuotas pertraukčių valdiklyje, įrašomas į segmento registrą. 5. Komandų skaitiklio turinys įrašomas į dėklą. 6. Antrasis pertraukimo vektoriaus žodis įrašomas į komandų skaitiklį, 7. Suformavus ir perdavus į komandų skaitiklį pertraukimo vektorių, kreipiamasi į konkrečią pradinių atmintinės adresų sritį. Iš jos fiksuotų ląstelių išrinktas pertraukiančiosios programos pradžios adresas įrašomas į segmento registrą ir komandų skaitiklį. 8. Po to vykdoma pertraukiančioji programa, kuri visuomet užbaigiama komanda IRET. Vykdant šią komandą atstatomas ankstesnysis komandų skaitiklio ir segmento registro turinys. Paprastai 8086 MP sistemose naudojama 8080 serijos pertraukčių valdiklio modifikacija 5.10 Pertraukčių valdikliai Mikroprocesorinėse sistemose, kurios aptarnauja pertraukčių užklausų (paraiškų) signalus, naudojami programuojami pertraukčių valdikliai. Kaip žinome, į mikroprocesoriaus I8080 išvadą INT gali būti paduodami pertraukties paraiškos signalai, kuriuos priėmęs mikroprocesorius siunčia pertraukčių leidimo signalus INTE. Sistemos valdiklis, pabaigus eilinės komandos vykdymą, po jos prasidedančio ciklo 2-uoju taktu perduoda signalą INTA. Nauja komanda vykdyti nepradedama, o pereinama prie pertraukties aptarnavimo. Pertraukimas pradedamas, kai dėklas įsimena komandų skaitiklio turinį ir įrašo į ji informaciją iš fiksuotos atmintinės ląstelės, skirtos konkrečiam pertraukties paraiškos signalui. Pertraukčių valdiklis 8259 pavaizduotas pav. 8.8 5.8 pav. Pertraukčių valdiklio 8259A sandara Šiuolaikiniuose procesoriuose pertraukčių valdikliai yra integruoti, tačiau jų aptarnavimo algoritmas iš esmės nepasikeitė. 5.11. SVK 1. Ar įmanomas kompiuterio be pertraukčių posistemės funkcionavimas? 2. Kodėl pertraukiančiosios programos negali būti aptarnaujamos taip, kaip ir paprastos paprogramės? 3. Ar galima iš anksto prognozuoti petraukties momentą? 4. Kodėl šiame MP I8086 naudojami 2 pertraukčių reikalavimo signalų įėjimai? Kuo skiriasi jų aptarnavimas? 5. Kuo skiriasi techninių (aparatinių) ir programinių pertraukčių aptarnavimas? 6. Pagrįskite pagrindinių pertraukties aptarnavimo algoritmo etapų būtinumą. 7. Kuo I8086 pertraukties aptarnavimo algoritmas skiriasi nuo I8080 pertraukčių aptarnavimo algoritmo? 8. Kurių pertraukčių (išorinių ar vidinių) prioriteto lygis aukštesnis? Kodėl? 9. Kodėl būtina žymių registro turinį įrašyti į dėklą? 5.12. Temos apibendrinimas 1. Kompiuterių pertraukčių sistema skirta vykdomai programai sustabdyti ir pereiti prie kitos, svarbesnės toje situacijoje programos vykdymo. Ta programa, vadinama pertraukčių aptarnavimo programa. 2. Dažnai pertrūkio signalų atsiradimas iš anksto yra nežinomas ir vykdomojoje programoje neplanuojamas. Tai nepriklausomas ir netikėtas įvykis, galintis atsirasti vykdant bet kurį programos žingsnį. 3. Svarbu, kad aptarnavus pertraukties šaltinį būtų sugrįžta i į tą programos vietą, ties kurias ji pertraukta ir pratęsti jos darbą ( jei nėra priežasčių neleidžiančių to padaryti). 4. Pertraukčių valdoma įvestis – išvestis yra vienas iš būdų sumažinti procesoriaus prastovas dėl įvesties –išvesties procedūrų atlikimo. 5. Pertrauktys leidžia išoriniams įrenginiams pasirengti siųsti ir priimti duomenis. 6. Kiekviename procesoriaus darbo cikle turi būti patikrinamas įrenginio pasirengimas keistis nauja duomenų porcija ir, jei to nėra, procesorius laukia, kol toks signalas (apie pasirengimą) bus išduotas kuriame tai kitame cikle. 7. Kiekviename naujai vykdomame cikle procesorius vis tikrina, ar nėra pertraukties reikalavimo (gal įrenginys jau pasiruošęs perduoti kitą duomenų porciją), jei taip, programos darbas pertraukiamas ir procesorius priima duomenis. Taip baitas po baito pertraukčių dėka perduodamas visas duomenų masyvas. 8. Kiekviena pertrauktis turi identifikatorių, kuris leidžia kuria nors algoritmo šaka vykdyti pertraukties aptarnavimo veiksmus. 9. Identifikatorius - tai vektoriumi vadinamas skaičius, kuris nurodo adresą tos atmintinės ląstelės, nuo kurios saugomas pertraukiančiosios programos pirmosios komandos adresas. 10. Vykdant vieną ir tą pačią programą pertraukčių reikalavimų signalai gali būti išduodami skirtingais programos vykdymo momentais, jų skaičius t. p. nebūtinai turi sutapti. Todėl pertraukties aptarnavimas reikalauja žymiai sudėtingesnio aparatinio mechanizmo nei paprogramės iškvietimas. 11. Perjungimo laikas priklauso nuo pertraukties signalo pasirodymo momento ir sistemos reakcijos laiko. Paprastai komanda, kurios vykdymo metu gautas pertraukties signalas, užbaigiama, o kitos komandos pirmajame cikle pradedamas pertraukties aptarnavimas (ta komanda užbaigiama, tik po pertraukties procedūros). 12. Visuose kompiuteriuose yra pertraukčių mechanizmas, kuriuo kiti moduliai (pvz., kaupiklis) gali nutraukti įprastą centrinio procesoriaus darbą. 13. Išorinių įrenginių valdiklio generuojama pertrauktis yra vadinama išorine, o mikroprocesoriaus generuojama pertrauktis - vidine. 14. Mikroprocesoriaus vidinės pertrauktys – tai pertrauktys atsirandančios sutrikus mikroprocesoriaus veiklai (pavyzdžiui, pertrūkiai dėl techninių priežasčių arba bandant vykdyti komandų su klaidingu operacijos kodu). 15. Išorinės pertrauktys – tai pertrauktys atsirandančios dėl vienų ar kitų įvykių mikrokompiuterio išoriniuose įtaisuose (pavyzdžiui, pertrūkių signalai siunčiami iš taimerio arba iš kurio nors įvedimo ir išvedimo įtaiso tuomet, kai jis pasiruošęs siųsti naują duomenų baitą). 16. Užprogramuotos pertrauktys – tai pertrauktys iš anksto numatomos vykdomojoje programoje, naudojant specialias komandas. 17. Tarpmašininės pertrauktys – tai pertrauktys atsirandančios, pavyzdžiui, siunčiant specialius (komunikacinius) signalus iš vieno mikrokompiuterio į kitą. 18. Dauguma sistemų turi tam tikrais atvejais pertrauktis uždraudžiančias komandas. Vykdoma programa negali būti nutraukiama, jei pertraukčių vykdymas yra uždraustas. 19. Uždraudus pertrauktis, galima laikinai (kol pertrauktys nebus leidžiamos) nereaguoti į visus arba pasirinktus pertraukčių signalus. 20. Įvairiuose mikrokompiuteriuose pertrūkiai maskuojami skirtingai. Dažnai naudojamas specialus mikroprocesoriaus registras, vadinamas pertraukties kaukės registru. 21. Tokio tipo pertrauktys, kurių uždrausti negalima vadinamos nedraudžiamomis (nemaskuojamomis) pertrauktimis. 22. Svarbesnės pertrauktys turi aukštesnį prioritetą. Taigi, egzistuoja tam tikra pertraukčių hierarchija. 23. Sudėtingesnėse mikroprocesorinėse sistemose, kurios aptarnauja pertraukčių užklausų (paraiškų) signalus, naudojami programuojami pertraukčių valdikliai. 24. Kaip žinome, į mikroprocesoriaus išvadą INT gali būti paduodami pertraukties paraiškos signalai, kuriuos priėmęs mikroprocesorius siunčia pertraukčių leidimo signalus INTE. Sistemos valdiklis, pabaigus eilinės komandos vykdymą, po jos prasidedančio ciklo 2-uoju taktu perduoda signalą INTA. 5.13 Tiesioginiai mainai Tikslai: 1. Suprasti tiesioginių mainų paskirtį. 2. Paaiškinti tiesioginių mainų valdiklio darbą. 3. Suprasti tiesioginių mainų kanalo funkcijas. Temos studijoms reikalingas laikas: 2 val. teorijos. Tiesioginiai mainai- tai programiškai valdomi duomenų mainai tarp pagrindinės atmintinės ir išorinių įrengimų aplenkiant procesorių. To pasėkoje procesorius atlaisvinamas nuo tarpininko vaidmens ir gali būti efektyviau panaudojamas pagrindinėms funkcijoms vykdyti. Tiesioginiams mainams būtina turėti specializuotą valdiklį, kuris perimtų iš procesoriaus ne itin sudėtingas mainų valdymo funkcijas. Nors DMA sustabdo procesorių (cycle stealing) duomenų siuntimo momentu, tai nėra pertraukimas, nes programos kontekstas nesaugojamas ir procesorius nieko neapdoroja. 5.14. Tiesioginių mainų valdiklis Tiesioginiams mainams valdyti mikroprocesorinėje sistemoje naudojamas DMA valdiklis arba kanalas, kuris perima iš procesoriaus kreipties į atmintinę adreso didinimo, bei ciklų skaitiklio parodymo mažinimo kiekviename cikle funkcijas. Be to, kas itin svarbu, jame realizuotas daugelio kanalų aptarnavimo vienu metu galimybės. Kai keitimasis duomenimis tarp operatyvinės atmintinės ir išorinio įrenginio realizuojama tiesioginių mainų principu, mikroprocesorius išduoda signalą HLDA. Jis perveda duomenų ir adreso linijas į trečią būseną, tuo būdu atsiribodamas nuo sisteminės magistralės. Vedančiuoju moduliu tampa tiesioginių mainų valdiklis, kuris ir organizuoja duomenų perdavimą viena ar kita kryptimi. Belieka išsiaiškinti, kaip dirba tiesioginių mainų valdikliai. Valdiklis turi 4 nepriklausomus kanalus, gali organizuoti tiesioginius mainus tarp pagrindinės atmintinės ir 4-ių periferinių įtaisų. Tiesioginių mainų valdiklis bet kuriuo metu gali būti vienoje iš 3-jų būsenų: Ø nedarbo būsena, Ø programavimo būsena, Ø mainų būsena. Valdiklis yra nedarbo būsenoje, kai į CS siunčiamas aukšto poliarumo signalas. Tuomet jo duomenų išvadai yra "z" būsenoje. Jei valdikliui esant šioje būsenoje perduodamas pakankamos trukmės signalas RESET, tai pasibaigus CS signalo aukštam lygiui, valdiklis pervedamas į programavimo režimą. Kai valdiklis yra programavimo būsenoje, komandomis OUT į jo valdančiojo žodžio registrą, adreso registrą bei ciklų skaitiklius įvedami pradiniai duomenys. Valdantysis žodis, apsprendžiantis darbo režimą ir duomenų mainų kryptį (rašymas/ skaitymas), o į adreso registrus (AR0-AR3) įvedami duomenų masyvų pradžios adresai operatyviojoje atmintinėje, į ciklų skaitiklius (CSR0-CSR3) - perduodamų duomenų masyvų baitų kiekis. Jeigu programuojant į valdančio žodžio skiltį, D4-D7 įrašyti nuliai, tai valdiklis dirbs pagrindiniu mainų režimu. TM reikalavimo signalai aptarnaujami prioriteto tvarka. Aukščiausias prioritetas suteikiamas nuliniam kanalui, o žemiausias- trečiajam. Aptarsime I8257 valdiklio funkcionavimą valdiklis turi 4 nepriklausomus kanalus, gali organizuoti tiesioginius mainus tarp pagrindinės atmintinės ir 4-ių periferinių įtaisų. 5.15 pav.Tiesioginių mainų valdiklio 8257 sandara Valdiklio išvadai: CS\ -kristalų išrinkimas, Ø I/OR, I/OW - įvesties/išvesties valdymas, Ø HLDA - iš mikroprocesoriaus pertraukties patvirtinimas, Ø DRQ0-DRQ3 - tiesioginių mainų reikalavimo signalai, priimami iš atskirų kanalų, Ø D0-D7 - duomenų magistralės 2-krypčiai išvadai turintys "z" būseną, Ø HRQ - magistralės valdymo signalas siunčiamas mikroprocesoriui, Ø DACK0-DACK3 - tiesioginių mainų patvirtinimo signalai. Valdiklis gali aptarnauti 4 kanalus, tačiau konkrečiu laiko momentu vyksta pasikeitimas informacija tik tarp valdiklio ir vieno kanalo. Gavus tiesioginių mainų pareikalavimo signa1ą iš kurio tai kanalo, jo adreso ir ciklų skaičiaus duomenys perkeliami į kanalo skaitiklius. Perdavus (priėmimus) vieną duomenų porciją kanalu į išorinį įrenginį, sumažinamas ciklų skaitiklio ir padidinamas adreso registro parodymas ir šių skaitiklių kodai grąžinami į atitinkamo kanalo registrus. Po to aptarnaujami kiti kanalai. Prie aptariamo kanalo aptarnavimo grįžtama tik tuomet, kai gaunamas signalas iš įrenginio apie jo pakartotinį pasiruošimą duomenų mainams. Tuomet bus atstatomos to kanalo adreso skaitiklio ir ciklų skaitiklio reikšmės ir bus įvykdytas kitos duomenų porcijos perdavimas (priėmimas). 5.16. Duomenų kanalai Duomenų kanalai – tai naujos kartos įvesties – išvesties procesoriai. Per juos tiesiogiai vyksta duomenų perdavimas tarp pagrindinės atminties iš diskų ar juostų. Esant tinkamai programinei įrangai, tuos perdavimus kontroliuoja tik techninė įranga. Tiesioginių mainų su atmintimi kanalo (8237A) sandara parodyta pav. 5.17. 5.17 pav.Tiesioginių mainų su atmintimi kanalo (8237A) sandara Registrai: CR – Command Register CAR – Current Address Register SR – Status Register BAR – Basic Address Register SR – Request Register CWR – Current Word Count Register MASK – Mask Register WCR – Basic Word Count Register Darbo režimai: · laukimo ciklai (Idle Cycle) · pavienio perdavimo režimas (Single Tansfer Mode) · blokų perdavimo režimas (Block Tansfer Mode) · perdavimo pagal pareikalavimą režimas (Demand Tansfer Mode) 5.17. SVK 1. Paaiškinkite adreso registro ir ciklų skaitiklio paskirtį. 2. Ar gali vienu metu būti keičiamasi informacija visais kanalais? 3. Ar gali kiekvienas kanalas dirbti skirtingu režimu? 4. Kokia duomenų buferio paskirtis? 5. Kokias funkcijas realizuoja multiplekseris - demultiplekseris? 6. Kokia kanalų užklausos / patvirtinimo schemų paskirtis? 5.18. Temos apibendrinimas 1. Tiesioginiai mainai- tai programiškai valdomi duomenų mainai tarp pagrindinės atmintinės ir išorinių įrengimų aplenkiant procesorių. 2. Tiesioginiams mainams būtina turėti specializuotą valdiklį, kuris perimtų iš procesoriaus ne itin sudėtingas mainų valdymo funkcijas. 3. Nors DMA sustabdo procesorių (cycle stealing) duomenų siuntimo momentu, tai nėra pertraukimas, nes programos kontekstas nesaugojamas ir procesorius nieko neapdoroja. 4. Tiesioginiams mainams valdyti mikroprocesorinėje sistemoje naudojamas DMA valdiklis arba kanalas, kuris perima iš procesoriaus kreipties į atmintinę adreso didinimo, bei ciklų skaitiklio parodymo mažinimo kiekviename cikle funkcijas. 5. Tiesioginių mainų valdiklyje realizuotas daugelio kanalų aptarnavimo vienu metu galimybės. 6. Kai keitimasis duomenimis tarp operatyvinės atmintinės ir išorinio įrenginio realizuojama tiesioginių mainų principu, mikroprocesorius išduoda signalą HLDA. Jis perveda duomenų ir adreso linijas į trečią būseną, tuo būdu atsiribodamas nuo sisteminės magistralės. 7. Vedančiuoju moduliu tampa tiesioginių mainų valdiklis, kuris ir organizuoja duomenų perdavimą viena ar kita kryptimi. 8. Tiesioginių mainų valdiklis bet kuriuo metu gali būti vienoje iš 3-jų būsenų: nedarbo būsena, programavimo būsena, mainų būsena. 9. Valdiklis yra nedarbo būsenoje, kai į CS siunčiamas aukšto poliarumo signalas. Tuomet jo duomenų išvadai yra "z" būsenoje. 10. Kai valdiklis yra programavimo būsenoje, komandomis OUT į jo valdančiojo žodžio registrą, adreso registrą bei ciklų skaitiklius įvedami pradiniai duomenys. 11. Valdantysis žodis, apsprendžiantis darbo režimą ir duomenų mainų kryptį (rašymas/ skaitymas), o į adreso registrus (AR0-AR3) duomenų masyvų pradžios adresai operatyviojoje atmintinėje, į ciklų skaitiklius (CSR0-CSR3) - perduodamų duomenų masyvų baitų kiekis. 12. Jeigu programuojant į valdančio žodžio skiltį, D4-D7 įrašyti nuliai, tai valdiklis dirbs pagrindiniu mainų režimu. TM reikalavimo signalai aptarnaujami prioriteto tvarka. Aukščiausias prioritetas suteikiamas nuliniam kanalui, o žemiausias- trečiajam. 13. Valdiklis gali aptarnauti 4 kanalus, tačiau konkrečiu laiko momentu vyksta pasikeitimas informacija tik tarp valdiklio ir vieno kanalo. 14. Duomenų kanalai – tai naujos kartos įvesties – išvesties procesoriai. Per juos tiesiogiai vyksta duomenų perdavimas tarp pagrindinės atminties iš diskų ar juostų.


Tikslai:
1.      Suprasti pertraukčių posistemės  paskirtį.
2.      Išmanyti pagrindinius pertraukčių tipus ir jų aptarnavimo principus.
3.      Suprasti pertraukčių posistemės funkcijas aprašantį algoritmą
4.      Paaiškinti pertraukčių valdiklio darbą.
Temos studijoms reikalingas laikas:      2 val. teorijos;
2 val. savarankiško darbo.
Kompiuterių pertraukčių posistemė skirta vykdomai programai sustabdyti ir pereiti prie kitos, svarbesnės toje situacijoje programos vykdymo.  Ta programa, vadinama pertraukties aptarnavimo (pertraukiančioji, pertraukimo) programa.   Šios programos pobūdis priklauso nuo pertraukties signalo, siunčiamo mikroprocesoriui, atsiradimo priežasties. Vėliau, įvykdžius pertraukties  aptarnavimo programą, jei tai įmanoma, sustabdytos programos vykdymas tęsiamas.
Pertrauktis galima būtų palyginti su telefono skambučiu. Žmogus pakelia telefono  ragelį tik tuo atveju, jeigu išgirsta iškvietos signalą. Visai nėra prasmės pakelti ragelį, jeigu nebuvo iškvietos signalo, tikintis, kad, galbūt, kas nors tuo metu atsitiktinai paskambins.
Suskambus telefonui, studentas gali nutraukti knygos skaitymą ir atlikti tokius veiksmus: įsiminti skaitomo puslapio numerį, pakelti ragelį, išklausyti klausimą, atsakyti į klausimą, padėti ragelį ir grįžti prie knygos skaitymo (nuo tos vietos, kur jis buvo nutrauktas). Šiame gyvenimiškame pavyzdyje nesunku pastebėti tokias analogijas: “studentas – mikroprocesorius”, “knygos skaitymas – vykdoma programa”, “telefono skambutis – pertrūkio signalas” ir “ pertrūkio aptarnavimo programa – studento reakcijų į telefono skambutį seka “.
Dažniausiai pertrūkio signalų atsiradimo laikas išanksto yra nežinomas ir vykdomojoje programoje neplanuojamas. Tai nepriklausomas ir netikėtas įvykis, galintis atsirasti vykdant bet kurį programos žingsnį. Svarbu, kad aptarnavus pertraukties šaltinį būtų sugrįžta i į tą programos vietą, ties kurias ji pertraukta ir pratęsti jos darbą ( jei nėra priežasčių neleidžiančių to padaryti).


5.1. pav. Pertraukiančiosios programos iškvietimas

Pertraukčių valdoma įvestis – išvestis yra vienas iš būdų sumažinti procesoriaus prastovas dėl įvesties –išvesties procedūrų atlikimo.
Vykdant duomenų apdorojimą, procesoriui gana dažnai tenka įvesti ir išvesti duomenis iš išorinių įrenginių. Kadangi jų sparta yra šimtus ir tūkstančius kartų mažesnė, nei paties procesoriaus darbo sparta, programiniu būdu vykdant įvestį-išvestį (Input-output) susidaro didelės procesoriaus prastovos.Kiekviename procesoriaus darbo cikle turi būti patikrinamas įrenginio pasirengimas keistis nauja duomenų porcija ir, jei to nėra, procesorius laukia, kol toks signalas (apie pasirengimą) bus išduotas kuriame tai kitame cikle.
Pertrauktys leidžia išoriniams įrenginiams pasirengti siųsti ir priimti duomenisJos  įgalioja išorinių įrenginių valdiklius priversti mikroprocesorių sustabdyti vykdomą veiklą ir pradėti pertraukties, kurios reikalauja išoriniai įrenginiai, aptarnavimą.
Procesoriaus požiūriu operacija veikia taip. Jis siunčia skaitymo komanda READ, o po to pasitraukia nuo operacijos vykdymo ir gali atlikti kitą darbą ( pvz., kitą programą). Kiekviename naujai vykdomame cikle jis vis tikrina, ar nėra pertraukties reikalavimo (gal įrenginys jau pasiruošęs perduoti duomenų porciją), jei taip, programos darbas pertraukiamas ir procesorius priima duomenis. Taip baitas po baito besikartojančių pertraukčių dėka perduodamas visas duomenų masyvas.
Programa gali būti nutraukiama ir kitais atvejais, kai prireikia vykdyti skubesnę užduotį. Atlikus pastarąją užduotį, vėl sugrįžtama prie ankstesnės programos vykdymo. Tam procesoriuje turi būti atstatyta ta nutrauktojo proceso būsena, ties kuria programa buvo laikinai sustabdyta.


Pertraukčių signalus gali generuoti įvairios mikroprocesorinės sistemos posistemės. Išskiriami šie pertraukčių šaltinių tipai:
5.1 lentelė.
Visuose kompiuteriuose yra pertraukčių mechanizmas, kuriuo kiti moduliai gali nutraukti įprastą centrinio procesoriaus darbą.
Išorinių įrenginių valdiklio generuojama pertrauktis yra vadinama išorine, o mikroprocesoriaus generuojama pertrauktis - vidine.
   Visas mikrokompiuterio pertrauktis galima suskirstyti į šiuos pagrindinius tipus:
1.      Mikroprocesoriaus vidinės pertrauktys, atsirandančios sutrikus mikroprocesoriaus veiklai (pavyzdžiui, dėl techninių priežasčių arba bandant vykdyti komandą su klaidingu operacijos kodu).
2.      Išorinės pertrauktys, atsirandančios dėl vienų ar kitų įvykių mikrokompiuterio išoriniuose įtaisuose (pavyzdžiui, signalai siunčiami iš taimerio arba iš kurio nors įvedimo - išvedimo įtaiso tuomet, kai jis pasiruošęs siųsti ar priimti naują duomenų baitą).
3.      Užprogramuotos pertrauktys. Jos iš anksto numatomos vykdomojoje programoje, naudojant specialias komandas.
4.      Tarpmašininės pertrauktys, atsirandančios, pavyzdžiui, siunčiant specialius       (komunikacinius) signalus iš vieno mikrokompiuterio į kitą.
IRQ (Interrupt ReQust – pertraukimo užklausa) – vieno kompiuterio mazgo signalas reikalaujantis procesoriaus dėmesio šitam mazgui, atsiranda atsitikus tam tikram įvykiui (Pvz.: paspaudus klavišą, baigus įrašymą į diską ir t.t.).
Skirtingų tipų pertraukčių tipiniai pavyzdžiai:
Išorinės (asinchroniškos procesui):
Ø      techniniai gedimai
Ø      laikrodis
Ø      kiti procesai ar procesoriai
Ø      procesai išoriniuose įtaisuose
Ø      vartotojas, operatorius
Vidinės (sinchroniškos procesui):
Ø      adresavimo klaidos
Ø      operandų klaidos
Ø      operacijos klaidos
Ø      negalima operacija
Ø      režimo pakeitimas
Programinės (sinchroniškos procesui):
Ø      programinės (pertrauktys sistemai tikrinti)
Ø      derinimo (po kiekvienos komandos - analizė)
Kompiuteriuose paprastai vykdoma komanda užbaigiama ir tik po to pradedamas pertraukties aptarnavimas, tačiau būna ir kitaip.
Paprogramių vykdymo pradžios galimi variantai:
Ø      po komandos (dažniausiai)
Ø      komandoje (rečiau)
Ø      kai negalima užbaigti (puslapio klaida) komandos
Reakcijos į pertraukties reikalavimo signalą laikas gali būti įvairus. Išsaugoti procesoriaus būseną komandos vykdymo fazėje yra kur kas sudėtingesnis uždavinys, nei užbaigus ją vykdyti.
Paprogramės gali būti apdorojamos:
Ø      mikroprograma (kartais)
Ø      paprograme (dažniausiai)
Ø      aparatūra (retai)
PC/AT kompiuteriuose ISA magistralėje numatyta šešiolika pertraukčių šaltiniams aptarnauti skirtų linijų:
0  - sisteminis laikmatis;
1  - klaviatūros kontroleris;
2  - grįžtamojo kadro signalas (EGA\VGA);
3  - paprastai COM2/COM4;
4  - paprastai COM1/COM3;
5  - HDD kontroleris (XT), paprastai laisvas AT;
6  -FDD kontroleris;
7  - LPT1, tačiau dauguma LPT kontrolerių jo nenaudoja;
8  - realaus laiko laikrodis su autonominiu maitinimu (RTC);
9  - lygiagretus IRQ2;
10  -nenaudojamas;
11  -nenaudojamas;
12  - paprastai PS/2 tipo pelės kontroleris;
13  - matematinis koprocesorius;
14  -paprastai IDE HDD kontroleris (pirmas kanalas);
15  - tas pats tiktai 2 kanalas.
PCI magistralėje yra tik 4 pertraukčių linijos.
Procesoriaus reakcija į pertraukties reikalavimo signalo gavimą vykdoma pagal tam tikrą algoritmą.
Pertraukties aptarnavimo procedūrą galima suskirstyti į tokius etapus:
Ø      Pertraukties signalo priėmimas;
Ø       Pertraukties šaltinio atpažinimas;
Ø       Einamosios komandos vykdymo užbaigimas;
Ø      Procesorius priima (arba ignoruoja) pertraukties reikalavimo signalą;
Ø      Vykdytos programos būsenos išsaugojimas;
Ø      Pertraukiančiosios programos vykdymas;
Ø      Vykdytos programos būsenos atstatymas.

Iš esmės pati pertraukties aptarnavimo procedūra panaši  į paprogramės vykdymo procedūrą, tačiau pertraukties signalo pasirodymo laikas niekada nežinomas.


5.2 pav. Būsenos įsiminimas ir atstatymas
Vykdant vieną  ir tą pačią programą pertraukčių reikalavimų signalai  gali būti išduodami skirtingais programos vykdymo momentais, jų skaičius t. p. nebūtinai turi sutapti. Todėl pertraukties aptarnavimas reikalauja žymiai sudėtingesnio aparatinio mechanizmo.
Pertraukties apdorojimo laiko diagrama:
5.3 pav. Pertraukties apdorojimo laiko diagrama

Perjungimo laikas priklauso nuo pertraukties signalo pasirodymo momento ir sistemos reakcijos laiko. Paprastai komanda, kurios vykdymo metu gautas pertraukties signalas, užbaigiama, o kitos komandos pirmajame cikle pradedamas pertraukties aptarnavimas (ta komanda užbaigiama, tik po pertraukties procedūros).
Nereikia užmiršti, kad pertraukčių šaltinių skaičius paprastai yra nemažas, ta pati programa gali būti pertraukiama daug kartų. Daugelio lygių sistemose vienos pertraukiančiosios programos gali būti pertraukiamos kitų. Žr. 8.4 pav.
5.4 pav. Kelių pertraukiančiųjų programų aptarnavimas
Kiekviena pertrauktis turi identifikatorių, kuris leidžia  kuria nors  algoritmo šaka vykdyti pertraukties aptarnavimo veiksmus.
Identifikatorius - tai vektoriumi vadinamas skaičius, kuris nurodo adresą tos atmintinės ląstelės, nuo kurios saugomas pertraukiančiosios programos pirmosios komandos adresas.
Vektorių į magistralę siunčia arba pertraukčių valdiklis, arba pertraukties reikalaujantis išorinis įrenginys.
Pertraukiančiąsias programas galima tobulinti, tam gali prireikti joms daugiau vietos atmintinėje, tačiau pertraukties vektoriaus adresas išlieka tas pats.
Dauguma sistemų turi tam tikrais atvejais pertrauktis uždraudžiančias komandas. Vykdoma programa negali būti nutraukiama, jei pertraukčių vykdymas yra uždraustas.     Kiekviena pertrūkio sistema gali automatiškai arba programuotojui nurodžius drausti, kitaip tariant, užmaskuoti visus MP pertrauktis arba nurodytą jų tipą. Todėl, uždraudus pertrauktis, galima laikinai (kol pertrauktys nebus leidžiamos) nereaguoti į visus arba pasirinktus pertraukčių signalus. Draudimo (maskavimo) mechanizmo analogijų galima rasti ir žmogaus veikloje. Ankstesniame pavyzdyje studentas galėjo į telefono skambutį nekreipti dėmesio, manydamas, kad knygą skaityti yra svarbiau. Taigi studento atžvilgiu visi telefono skambučiai yra užmaskuoti.
Įvairiuose mikrokompiuteriuose pertrauktys maskuojami skirtingai. Dažnai naudojamas specialus mikroprocesoriaus registras, vadinamas pertraukties kaukės registru. Šiame registre, pavyzdžiui, gali būti išskirta po vieną dvejetainę skiltį kiekvienai pertraukčių klasei. Dvejetainės skilties reikšmė 1 gali reikšti pertraukčių draudimą, reikšmė 0 – šią skiltį atitinkančios klasės pertraukčių leidimą. Pavyzdžiui, kai yra keturi (anksčiau išvardinti) pertraukčių tipai, tuomet kaukės registras gali būti keturių skilčių ilgio. Daugelio mikroprocesorių kaukės registre yra tik viena skiltis, tad pertrauktys yra leidžiami arba draudžiami visi iš karto.

5.5 pav. Pertraukčių draudimas (maskavimas)

Tačiau yra tokių tipų pertraukčių, kurių stabdyti negalima dėl dviejų priežasčių:
Ø                                             todėl, kad jų prioriteto lygis yra labai aukštas
Ø                                             todėl, kad pertraukties sustabdymas būtų žalingas.
Labai ryškus pavyzdys būtų perspėjimo pertrauktis, kuri suformuojama dėl to, kad išjungiamas elektros maitinimo šaltinis.
Tokio tipo pertrauktys, kurių uždrausti negalima vadinamos nedraudžiamomis (nemaskuojamomis) pertrauktimis.
Priešingai minėtoms, draudžiamosiomis (maskuojamomis) pertrauktimis vadinamos tokios, kurias mikroprocesorius gali ignoruoti.
Pertrauktis reikia drausti tais atvejais, kai sutinkamos tam tikros kodų sekos, kurių pertraukti negalima, nes dėl to bus įvelta klaida. Kiekviena pertrūkio sistema gali automatiškai arba programuotojui nurodžius drausti, kitaip tariant, užmaskuoti visus MP pertrauktis arba nurodytą jų tipą. Todėl, uždraudus pertrauktis, galima laikinai (kol pertrauktys nebus leidžiamos) nereaguoti į visus arba pasirinktus pertraukčių signalus.
Pertraukties reikalavimą gali atsiųsti įvesties / išvesties valdiklis, tam tikrais, išimtinais atvejais - pats mikroprocesorius.
Ne visos pertrauktys yra vienodai svarbios.
Pertraukčių aptarnavimo sistema gali būti vieno arba  daugelio lygių.
Vieno lygio pertraukčių sistemose kitos pertraukties aptarnavimas galimas tik užbaigus ankstesnįjį.
Dagelio lygių sistemose aukštesnį prioritetą turinčios pertrauktys gali pertraukti žemesnį prioritetą turinčių pertraukčių aptarnavimą. Grįžimas prie ankstesniųjų pertraukiančiųjų programų vykdomas priešinga tvarka (first in – last out).
5.6 pav. Daugelio lygių pertraukčių aptarnavimas
Svarbesnės pertrauktys turi aukštesnį prioritetą. Taigi, egzistuoja tam tikra pertraukčių hierarchija.
Vieno lygio pertraukčių sistemose apdorojant vieną pertrauktį kitos yra draudžiamos. Pertraukčių draustis reiškia tai, kad procesorius neatsakys į pertraukties užklausos signalą. Jeigu šiuo laiko momentu pertrauktis atsiranda, ji užlaikoma ir išsaugoma, kol procesorius galės ją patikrinti (tuomet pertraukties draustis bus atšaukta).
Atlikus pertraukties apdorojimo procedūrą, prieš sugrįžtant į vartotojo programą, pertraukties draustis atšaukiama, ir procesorius tikrina, ar nebuvo atsiradusios kokios nors kitos pertrauktys
Šio principo trūkumas tai, kad nėra numatyti santykiniai užklausų prioritetai arba laiko atžvilgiu kritiški atvejai. Pavyzdžiui, kai komunikacijos linijoje atsiranda duomenų, juos reikia priimti kuo greičiau, kad liktų laisva vieta kitiems išoriniams duomenims. Šiuo atveju, jeigu pirmasis duomenų paketas nebus apdorotas prieš atsirandant kitam, pastarasis gali būti prarastas.
Daugelio lygių pertraukčių sistemose pertrauktims priskiriami tam tikri prioritetai. Šiuo atveju atsiradus aukštesnio prioriteto pertraukčiai žemesnio prioriteto pertrauktis bus pristabdyta.
Šio MP pertraukčių sistema yra tobulesnė nei I8080. Mikroprocesorius I8086 turi du išorinių pertraukčių signalų priėmimo išvadusNMI ir INTR.
NMI išvadas yra naudojamas nemaskuojamosioms pertrauktiems. kurios atitinka avarines situacijas.
INTR išvadas yra skirtas pertraukčių valdiklio 8259A signalams priimti. Valdiklis sujungiamas su išoriniais įrenginiais, galinčiais reikalauti pertraukčių iš mikroprocesoriaus. Kai  INTR  aktyvus, tai procesoriaus atsakas į pertraukties reikalavimą priklauso nuo pertraukties žymės IF reikšmės. Pertrauktis nebus vykdoma tol, kol nebus baigta pradėta komanda.




5.7 pavMP 8086 pertrauktys

x86 procesorių pertraukties aptarnavimo algoritmas:
1. Žymių registro turinys įrašomas į dėklą.
2. Draudžiami pertraukčių reikalavimų signalų, patenkančių į INTR įėjimą, aptarnavimai.
3. Į dėklą įrašomas segmento registro turinys .
4. Pirmasis pertraukimo vektoriaus žodis , suformuotas pertraukčių valdiklyje, įrašomas į segmento registrą.
5. Komandų skaitiklio turinys įrašomas į dėklą.
6. Antrasis pertraukimo vektoriaus žodis įrašomas į komandų skaitiklį,
7. Suformavus ir perdavus į komandų skaitiklį pertraukimo  vektorių, kreipiamasi į konkrečią pradinių atmintinės adresų sritį. Iš jos fiksuotų ląstelių išrinktas pertraukiančiosios programos pradžios adresas įrašomas į segmento registrą ir komandų skaitiklį.
8. Po to   vykdoma pertraukiančioji programa, kuri visuomet užbaigiama komanda IRETVykdant šią komandą atstatomas ankstesnysis komandų skaitiklio ir segmento registro turinys.
Paprastai 8086 MP sistemose naudojama 8080 serijos pertraukčių valdiklio modifikacija


Mikroprocesorinėse sistemose, kurios aptarnauja pertraukčių užklausų (paraiškų) signalus, naudojami programuojami pertraukčių valdikliai.
Kaip žinome, į mikroprocesoriaus I8080 išvadą INT gali būti paduodami pertraukties paraiškos signalai, kuriuos priėmęs mikroprocesorius siunčia pertraukčių leidimo signalus INTE. Sistemos valdiklis, pabaigus eilinės komandos vykdymą, po jos prasidedančio ciklo 2-uoju taktu perduoda signalą INTA.
Nauja komanda vykdyti nepradedama, o pereinama prie pertraukties aptarnavimo. Pertraukimas pradedamas, kai dėklas įsimena komandų skaitiklio turinį ir įrašo į ji informaciją  iš fiksuotos atmintinės ląstelės, skirtos konkrečiam pertraukties paraiškos signalui. Pertraukčių valdiklis 8259 pavaizduotas pav. 8.8
5.8 pav. Pertraukčių valdiklio 8259A sandara

Šiuolaikiniuose procesoriuose pertraukčių valdikliai yra integruoti, tačiau jų aptarnavimo algoritmas iš  esmės nepasikeitė.
1.      Ar įmanomas kompiuterio be pertraukčių posistemės funkcionavimas?
2.      Kodėl pertraukiančiosios programos negali būti aptarnaujamos taip, kaip ir paprastos paprogramės?
3.      Ar galima iš anksto prognozuoti petraukties momentą?
4.              Kodėl šiame MP I8086 naudojami 2 pertraukčių reikalavimo signalų įėjimai? Kuo skiriasi jų aptarnavimas?
5.      Kuo skiriasi techninių (aparatinių) ir programinių pertraukčių aptarnavimas?
6.              Pagrįskite pagrindinių pertraukties aptarnavimo algoritmo etapų būtinumą.
7.              Kuo I8086 pertraukties aptarnavimo algoritmas skiriasi nuo I8080 pertraukčių aptarnavimo algoritmo?
8.              Kurių pertraukčių (išorinių ar vidinių) prioriteto lygis aukštesnis? Kodėl?
9.              Kodėl būtina žymių registro turinį įrašyti į dėklą?


1.      Kompiuterių pertraukčių sistema skirta vykdomai programai sustabdyti ir pereiti prie kitos, svarbesnės toje situacijoje programos vykdymo.  Ta programa, vadinama pertraukčių aptarnavimo programa.
2.      Dažnai pertrūkio signalų atsiradimas iš anksto yra nežinomas ir vykdomojoje programoje neplanuojamas. Tai nepriklausomas ir netikėtas įvykis, galintis atsirasti vykdant bet kurį programos žingsnį.
3.      Svarbu, kad aptarnavus pertraukties šaltinį būtų sugrįžta i į tą programos vietą, ties kurias ji pertraukta ir pratęsti jos darbą ( jei nėra priežasčių neleidžiančių to padaryti).
4.      Pertraukčių valdoma įvestis – išvestis yra vienas iš būdų sumažinti procesoriaus prastovas dėl įvesties –išvesties procedūrų atlikimo.
5.      Pertrauktys leidžia išoriniams įrenginiams pasirengti siųsti ir priimti duomenis.
6.       Kiekviename procesoriaus darbo cikle turi būti patikrinamas įrenginio pasirengimas keistis nauja duomenų porcija ir, jei to nėra, procesorius laukia, kol toks signalas (apie pasirengimą) bus išduotas kuriame tai kitame cikle.
7.       Kiekviename naujai vykdomame cikle procesorius vis tikrina, ar nėra pertraukties reikalavimo (gal įrenginys jau pasiruošęs perduoti kitą duomenų porciją), jei taip, programos darbas pertraukiamas ir procesorius priima duomenis. Taip baitas po baito pertraukčių dėka perduodamas visas duomenų masyvas.
8.      Kiekviena pertrauktis turi identifikatorių, kuris    leidžia  kuria nors  algoritmo šaka vykdyti pertraukties aptarnavimo veiksmus.
9.      Identifikatorius - tai vektoriumi vadinamas skaičius, kuris nurodo adresą tos atmintinės ląstelės, nuo kurios saugomas pertraukiančiosios programos pirmosios komandos adresas.
10.  Vykdant vieną  ir tą pačią programą pertraukčių reikalavimų signalai  gali būti išduodami skirtingais programos vykdymo momentais, jų skaičius t. p. nebūtinai turi sutapti. Todėl pertraukties aptarnavimas reikalauja žymiai sudėtingesnio aparatinio mechanizmo nei paprogramės iškvietimas.
11.  Perjungimo laikas priklauso nuo pertraukties signalo pasirodymo momento ir sistemos reakcijos laiko. Paprastai komanda, kurios vykdymo metu gautas pertraukties signalas, užbaigiama, o kitos komandos pirmajame cikle pradedamas pertraukties aptarnavimas (ta komanda užbaigiama, tik po pertraukties procedūros).
12.  Visuose kompiuteriuose yra pertraukčių mechanizmas, kuriuo kiti moduliai (pvz., kaupiklis) gali nutraukti įprastą centrinio procesoriaus darbą.
13.  Išorinių įrenginių valdiklio generuojama pertrauktis yra vadinama išorine, o mikroprocesoriaus generuojama pertrauktis - vidine.
14.  Mikroprocesoriaus vidinės pertrauktys – tai pertrauktys atsirandančios sutrikus mikroprocesoriaus veiklai (pavyzdžiui, pertrūkiai dėl techninių priežasčių arba bandant vykdyti komandų su klaidingu operacijos kodu).
15.  Išorinės pertrauktys – tai pertrauktys atsirandančios dėl vienų ar kitų įvykių mikrokompiuterio išoriniuose įtaisuose (pavyzdžiui, pertrūkių signalai siunčiami iš taimerio arba iš kurio nors įvedimo ir išvedimo įtaiso tuomet, kai jis pasiruošęs siųsti naują duomenų baitą).
16.  Užprogramuotos pertrauktys – tai pertrauktys  iš anksto numatomos vykdomojoje programoje, naudojant specialias komandas.
17.  Tarpmašininės pertrauktys – tai pertrauktys atsirandančios, pavyzdžiui, siunčiant specialius (komunikacinius) signalus iš vieno mikrokompiuterio į kitą.
18.  Dauguma sistemų turi tam tikrais atvejais pertrauktis uždraudžiančias komandas. Vykdoma programa negali būti nutraukiama, jei pertraukčių vykdymas yra uždraustas.    
19.  Uždraudus pertrauktis, galima laikinai (kol pertrauktys nebus leidžiamos) nereaguoti į visus arba pasirinktus pertraukčių signalus.
20.  Įvairiuose mikrokompiuteriuose pertrūkiai maskuojami skirtingai. Dažnai naudojamas specialus mikroprocesoriaus registras, vadinamas pertraukties kaukės registru.
21.  Tokio tipo pertrauktys, kurių uždrausti negalima vadinamos nedraudžiamomis (nemaskuojamomis) pertrauktimis.
22.  Svarbesnės pertrauktys turi aukštesnį prioritetą. Taigi, egzistuoja tam tikra pertraukčių hierarchija.
23.  Sudėtingesnėse mikroprocesorinėse sistemose, kurios aptarnauja pertraukčių užklausų (paraiškų) signalus, naudojami programuojami pertraukčių valdikliai.
24.  Kaip žinome, į mikroprocesoriaus išvadą INT gali būti paduodami pertraukties paraiškos signalai, kuriuos priėmęs mikroprocesorius siunčia pertraukčių leidimo signalus INTE. Sistemos valdiklis, pabaigus eilinės komandos vykdymą, po jos prasidedančio ciklo 2-uoju taktu perduoda signalą INTA.

Tikslai:
1. Suprasti tiesioginių mainų paskirtį.
2. Paaiškinti tiesioginių mainų valdiklio darbą.
3. Suprasti tiesioginių mainų kanalo funkcijas.
Temos studijoms reikalingas laikas:      2 val. teorijos.

Tiesioginiai mainai- tai programiškai valdomi duomenų mainai tarp pagrindinės atmintinės ir išorinių įrengimų aplenkiant procesorių. To pasėkoje procesorius atlaisvinamas nuo tarpininko vaidmens ir gali būti efektyviau panaudojamas pagrindinėms funkcijoms vykdyti. Tiesioginiams mainamsbūtina turėti specializuotą valdiklį,  kuris perimtų  procesoriaus ne itin sudėtingas mainų valdymo funkcijas.  Nors DMA sustabdo procesorių (cycle stealing) duomenų siuntimo momentutai nėra pertraukimasnes programos kontekstas nesaugojamas ir procesorius nieko neapdoroja
Tiesioginiams mainams valdyti mikroprocesorinėje sistemoje naudojamas DMA valdiklis arba kanalas, kuris perima iš procesoriaus kreipties į atmintinę adreso didinimo, bei ciklų skaitiklio parodymo mažinimo kiekviename cikle funkcijas. Be to, kas itin svarbu, jame realizuotas daugelio kanalų aptarnavimo vienu metu  galimybėsKai keitimasis duomenimis tarp operatyvinės atmintinės ir išorinio įrenginio realizuojama tiesioginių mainų principu, mikroprocesorius išduoda signalą HLDA. Jis perveda duomenų ir adreso linijas į trečią būseną, tuo būdu atsiribodamas nuo sisteminės magistralės. Vedančiuoju moduliu tampa tiesioginių mainų valdiklis, kuris ir organizuoja duomenų perdavimą viena ar kita kryptimi.
Belieka išsiaiškinti, kaip dirba tiesioginių mainų valdikliai. 
Valdiklis turi 4 nepriklausomus kanalus, gali organizuoti tiesioginius mainus tarp pagrindinės atmintinės ir 4-ių periferinių įtaisų.



Tiesioginių mainų valdiklis bet kuriuo metu gali būti  vienoje iš 3-jų būsenų:
Ø        nedarbo būsena,
Ø        programavimo būsena,
Ø        mainų būsena.
Valdiklis yra nedarbo būsenoje, kai į CS siunčiamas aukšto poliarumo signalas. Tuomet jo duomenų išvadai yra "z" būsenoje. Jei valdikliui esant šioje būsenoje perduodamas pakankamos trukmės signalas RESET, tai pasibaigus CS signalo aukštam lygiui, valdiklis pervedamas į programavimo režimą.
Kai valdiklis yra programavimo būsenoje, komandomis OUT į jo valdančiojo žodžio registrą, adreso registrą bei ciklų skaitiklius įvedami pradiniai duomenys. Valdantysis žodis, apsprendžiantis darbo režimą ir duomenų mainų kryptį (rašymas/ skaitymas), o į adreso registrus (AR0-AR3) įvedami duomenų masyvų pradžios adresai operatyviojoje atmintinėje, į ciklų skaitiklius (CSR0-CSR3)  - perduodamų duomenų masyvų baitų kiekis.
Jeigu programuojant į valdančio žodžio skiltį, D4-D7 įrašyti nuliai, tai valdiklis dirbs pagrindiniu mainų režimu. TM reikalavimo signalai aptarnaujami prioriteto tvarka. Aukščiausias prioritetas suteikiamas nuliniam kanalui, o žemiausias- trečiajam.
Aptarsime I8257 valdiklio funkcionavimą valdiklis turi 4 nepriklausomus kanalus,  gali organizuoti tiesioginius mainus tarp pagrindinės atmintinės ir 4-ių periferinių įtaisų.








5.15 pav.Tiesioginių mainų valdiklio 8257 sandara
Valdiklio išvadai:
CS\ -kristalų išrinkimas,
Ø      I/OR, I/OW  -                              įvesties/išvesties valdymas,
Ø      HLDA  -                                      iš mikroprocesoriaus   pertraukties patvirtinimas,
Ø      DRQ0-DRQ3  -      tiesioginių mainų reikalavimo signalai, priimami iš                 atskirų kanalų,
Ø      D0-D7 -                     duomenų magistralės 2-krypčiai išvadai turintys "z" būseną,
Ø      HRQ -                       magistralės valdymo signalas siunčiamas mikroprocesoriui,
Ø       DACK0-DACK3 -    tiesioginių mainų patvirtinimo signalai.
Valdiklis gali aptarnauti 4 kanalus, tačiau konkrečiu laiko momentu vyksta pasikeitimas informacija tik tarp valdiklio ir vieno kanalo.
Gavus tiesioginių mainų pareikalavimo signa1ą iš kurio tai kanalo, jo adreso ir ciklų skaičiaus duomenys perkeliami į kanalo skaitiklius. Perdavus (priėmimus) vieną duomenų porciją kanalu į išorinį įrenginį, sumažinamas ciklų skaitiklio ir padidinamas adreso registro parodymas ir šių skaitiklių kodai grąžinami į atitinkamo kanalo registrus.
Po to aptarnaujami kiti kanalai.  Prie aptariamo kanalo  aptarnavimo grįžtama tik tuomet, kai gaunamas signalas iš įrenginio apie jo pakartotinį pasiruošimą duomenų mainams. Tuomet  bus atstatomos to kanalo adreso skaitiklio ir ciklų skaitiklio reikšmės ir bus įvykdytas kitos duomenų porcijos perdavimas (priėmimas).
Duomenų kanalai – tai naujos kartos įvesties – išvesties procesoriai. Per juos tiesiogiai vyksta duomenų  perdavimas tarp pagrindinės atminties iš diskų ar juostų. Esant tinkamai programinei įrangai, tuos perdavimus kontroliuoja tik techninė įranga. Tiesioginių mainų su atmintimi kanalo (8237A) sandara parodyta pav. 5.17. 
5.17 pav.Tiesioginių mainų su atmintimi kanalo (8237A) sandara

Registrai:
CR – Command Register                    CAR – Current Address Register
SR – Status Register                                           BAR – Basic Address Register
SR – Request Register                                        CWR – Current Word Count Register
MASK – Mask Register                      WCR – Basic Word Count Register

Darbo režimai:
·      laukimo ciklai (Idle Cycle)
·      blokų perdavimo režimas (Block Tansfer Mode)
·      perdavimo pagal pareikalavimą režimas (Demand Tansfer Mode)
1.  Paaiškinkite adreso registro ir ciklų skaitiklio paskirtį.
2.              Ar gali vienu metu būti keičiamasi informacija visais kanalais?
3.              Ar gali kiekvienas kanalas dirbti skirtingu režimu?
4.              Kokia duomenų buferio paskirtis?
5.              Kokias funkcijas realizuoja multiplekseris - demultiplekseris?
6.              Kokia kanalų užklausos / patvirtinimo schemų paskirtis?
1.      Tiesioginiai mainai- tai programiškai valdomi duomenų mainai tarp pagrindinės atmintinės ir išorinių įrengimų aplenkiant procesorių.
2.      Tiesioginiams mainams  būtina turėti specializuotą valdiklį,  kuris perimtų  procesoriaus ne itin sudėtingas mainų valdymo funkcijas
3.      Nors DMA sustabdo procesorių (cycle stealing) duomenų siuntimo momentutai nėra pertraukimasnes programos kontekstas nesaugojamas ir procesorius nieko neapdoroja
4.      Tiesioginiams mainams valdyti mikroprocesorinėje sistemoje naudojamas DMA valdiklis arba kanalas, kuris perima iš procesoriaus kreipties į atmintinę adreso didinimo, bei ciklų skaitiklio parodymo mažinimo kiekviename cikle funkcijas.
5.      Tiesioginių mainų valdiklyje realizuotas daugelio kanalų aptarnavimo vienu metu  galimybės.
6.      Kai keitimasis duomenimis tarp operatyvinės atmintinės ir išorinio įrenginio realizuojama tiesioginių mainų principu, mikroprocesorius išduoda signalą HLDA. Jis perveda duomenų ir adreso linijas į trečią būseną, tuo būdu atsiribodamas nuo sisteminės magistralės.
7.      Vedančiuoju moduliu tampa tiesioginių mainų valdiklis, kuris ir organizuoja duomenų perdavimą viena ar kita kryptimi.
8.      Tiesioginių mainų valdiklis bet kuriuo metu gali būti  vienoje iš 3-jų būsenų: nedarbo būsena, programavimo būsena, mainų būsena.
9.      Valdiklis yra nedarbo būsenoje, kai į CS siunčiamas aukšto poliarumo signalas. Tuomet jo duomenų išvadai yra "z" būsenoje.
10.  Kai valdiklis yra programavimo būsenoje, komandomis OUT į jo valdančiojo žodžio registrą, adreso registrą bei ciklų skaitiklius įvedami pradiniai duomenys.
11.  Valdantysis žodis, apsprendžiantis darbo režimą ir duomenų mainų kryptį (rašymas/ skaitymas), o į adreso registrus (AR0-AR3) duomenų masyvų pradžios adresai operatyviojoje atmintinėje, į ciklų skaitiklius (CSR0-CSR3)  - perduodamų duomenų masyvų baitų kiekis.
12.  Jeigu programuojant į valdančio žodžio skiltį, D4-D7 įrašyti nuliai, tai valdiklis dirbs pagrindiniu mainų režimu. TM reikalavimo signalai aptarnaujami prioriteto tvarka. Aukščiausias prioritetas suteikiamas nuliniam kanalui, o žemiausias- trečiajam.
13.  Valdiklis gali aptarnauti 4 kanalus, tačiau konkrečiu laiko momentu vyksta pasikeitimas informacija tik tarp valdiklio ir vieno kanalo.
14.  Duomenų kanalai – tai naujos kartos įvesties – išvesties procesoriai. Per juos tiesiogiai vyksta duomenų  perdavimas tarp pagrindinės atminties iš diskų ar juostų.

Komentarų nėra:

Rašyti komentarą

Etiketės