510 likes | 742 Views
Pertrauktys (Interrupts). Petrauktys (Interrupts). Pertrauktys yra mechanizmas, kuriuo naudodamiesi įvairūs kompiuterio įrenginiai ir programos atkreipia CPĮ dėmesį, reikalaudami juos aptarnauti. Pert r aukčių klasės.
E N D
Petrauktys (Interrupts) • Pertrauktys yra mechanizmas, kuriuo naudodamiesi įvairūs kompiuterio įrenginiai ir programos atkreipia CPĮ dėmesį, reikalaudami juos aptarnauti.
Pertraukčių klasės • Programinėspertrauktys. Jos generuojamos, susidarius tam tikroms sąlygoms, vykdant instrukciją, pvz: dalyba iš nulio, aritmetinė perpilda ir pan. • Laikmačio (timer) Generuoja laikmatis, CPĮ nedalyvaujant. Taip pertrauktys. sistema atlieka tokias periodines funkcijas, kaip operatyviosios atminties regeneravimas ir pan. • Į/I pertrauktys. Į/I valdiklis signalizuoja apie užduoties baigimą ar klaidą. • Techninės įrangos Generuojamos, esant avarijoms arba gedimams,gedimo pertrauktys. pvz. atminties lyginumo (parity) klaida. Pertrauktys didina instrukcijų apdorojimo efektyvumą. Be jų CPĮ turėtų šimtus ir tūkstančius ciklų laukti, kol spaudintuvas baigs spausdinti ir pan.
Instrukcijos ciklas su pertrauktimis Pertrauktį paprastai apdoroja operacinė sistema.
Valdymo keitimas vykdant pertrauktis Pertrauktis: IRQ signalas iš Į/I modulio ->CPĮ CPĮ stabdo programą, įsimena kontekstą ir iškviečia pertraukties apdorojimo procedūrą (interrupt handler). Vartotojo programoje nėra kodo, susijusio su pertrauktim (jis patalpintas atskirai ir nurodomas pertraukties vektoriumi). Programos stabdymą ir atnaujinimą tame pačiame taške užtikrina CPĮ ir operacinė sistema, naudojant atmintinės elementus.
Pertrauktimis valdomos procedūros • • skirtingos pertraukčių linijos; • programinis sąrašas;• deizi(daisy) grandinės (darvadinama techninės įrangos sąrašu arba vektoriuotąja);• magistralės arbitravimo (vektoriuotoji).
Pertrauktimis valdomos procedūros • skirtingos pertraukčių linijos; Akivaizdžiausias ir tiesioginis pertraukčių problemos sprendimo būdas yra užtikrinti būtiną pertraukčių linijų skaičių tarp CPĮ ir Į/I modulio. Tačiau skirti daugiau negu kelias magistralės linijasarba CPĮ kontaktus pertraukčių linijoms labai neracionalu. Reiškia, net jeigu naudojamos kelios linijos labai tikėtina, kadkiekviena linija aptarnauja kelis, prie jos prijungtus Į/I modulius. Taigi, kiekvienoje linijoje turi būtitaikomas vienas iš trijų likusiųjų metodų.
Pertrauktimis valdomos procedūros • programinis sąrašas; Tai yra programinis periferinių įrengimų "sąrašo" tikrinimas (software poll). Kai CPĮ aptinka pertrauktį, jis iškviečia pertraukčių apdorojimo procedūrą, kurios paskirtis yra nustatyti kuris iš modulių sugeneravo pertrauktį. Sąrašas gali atrodyti kaip atskirų komandinių eilučių (pvz.., TEST I/O - tikrinti Į/I) rinkinys. Šiuo atveju, CPĮ generuoja TEST I/O komandą ir adresų magistralėje nustato tam tikro Į/I modulio adresą. Į/I modulis reaguoja į šią komandą teigiamai, jeigu būtent jis įjungė pertrauktį. Galimas ir kitas variantas - kiekvienas Į/I modulis gali turėti adresuojamąjį statuso registrą. CPĮ šiuo atveju, skaito kiekvieno Į/I modulio statuso registrą ir pagal jo turinį aptinka pertrauktį sugeneravusį modulį. Kai modulis aptiktas, CPĮ iškviečia pertraukties apdorojimo procedūrą ir nurodo jai šį įrenginį. Programinio sąrašo tikrinimo trūkumas yra tas, kad eikvojama daug laiko.
Efektyvesnis yra vadinamasis deizi grandinės (daisy chain) metodas, kuris, faktiškai vykdo techninį periferinių įrenginių sąrašo tikrinimą (hardware poll). Deizi grandies konfigūravimas pateiktaspav. Pertraukties signalui siųsti visi Į/I moduliai kartu naudoja (share) bendrą pertraukčių liniją. Pertraukties patvirtinimo linija sujungta į deizi grandinę per visus modulius. Kai CPĮ aptinka pertrauktį, jis išsiunčia pertraukties patvirtinimo signalą. Šis signalas sklinda pro visus nuosekliai sujungtus Į/I modulius kol nepatenka į reikalingą modulį. Atpažintas modulis paprastai atsako į tai išdėstydamas duomenų magistralėje žodį. Šis žodis vadinamas vektoriumi ir tai taip pat yra Į/I modulio savotiškas adresas (arba identifikatorius). Bet kuriuo atveju (ar tai adresas ar identifikatorius), vektorių CPĮ naudoja kaip rodyklę, pagal kurią iškviečia tam tikrą įrenginio aptarnavimo procedūrą. Tai leidžia pačioje pradžioje nevykdyti bendros pertraukties aptarnavimo procedūros. Šis metodas dar vadinamas vektoriuotoji pertrauktis. Paskirstytasis arbitravimas; čia MPRĮ— magistralės prioriteto įėjimas. MPRI - magistralės prioriteto išėjimas. Pertrauktimis valdomos procedūros • deizi(daisy) grandinės (darvadinama techninės įrangossąrašu arba vektoriuotąja);
Pertrauktimis valdomos procedūros • magistralės arbitravimo (vektoriuotoji). Vektoriuotas pertrauktis taikantis metodas - magistralės arbitravimas. Magistralės arbitravimo atveju, Į/I modulis iš pradžių turi "užvaldyti" magistralę, o po to reikalauti pertraukties per tam tikrą liniją. Šiuo atveju, tik vienas modulis duotu laiko momentu gali valdyti pertraukčių liniją. Kai CPĮ aptinka pertrauktį, jis atsako patvirtinimu per specialią liniją. Tada reikalingas modulis gali išdėstyti savo vektorių duomenų linijose.
Pertrauktimis valdomos procedūros • programinis sąrašas;• deizi(daisy) grandinės (darvadinama techninės įrangos sąrašu arba vektoriuotąja);• magistralės arbitravimo (vektoriuotoji). Visi čia aptarti metodai taikomi reikiamam Į/I moduliui identifikuoti. Jie taip pat suteikia tam tikrą prioritetą, kai pertraukties apdorojimo reikalauja daugiau nei vienas įrenginys. Kai pertrauktims organizuoti naudojama daugybė linijų, CPĮ paprasčiausia pasirenka aukščiausią prioritetą turinčią liniją. Programinio sąrašo tikrinimo atveju tvarką, pagal kurią bus tikrinamas Į/I modulis, nusako jo prioritetas. Magistralės arbitravimas taip pat užtikrina prioriteto schemą. Panašiai, modulių tikrinimo eilės tvarką nustato deizi grandyje pažymėti prioritetai – praktiškai – atstumas nuo CP.
Pertraukties grandinės INT RQ CPU Įv/Išv Įv/Išv
Pertraukties grandinės 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
Maskuojamos 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.
1 M A:0000 I x86 mP atmintinės paskirstymas • ROM BIOS • Video RAM • Pagr atmintinė (Conventional) • 10x64kB = 640kB • Dos duomenys • ROM BIOS kintamieji ir duomenys • Pertraukties vektoriai 256x4B (2word) 1024B
I x86 mP atmintinės paskirstymas 1 M A:0000 • ROM BIOS • Video RAM • Pagr atmintinė (Conventional) • 10x64kB = 640kB • Dos duomenys • ROM BIOS kintamieji ir duomenys • Pertraukties vektoriai 256x4B (2word)
Pertrauktimis valdomos procedūros • programinis sąrašas;• deizi(daisy) grandinės (darvadinama techninės įrangos sąrašu arba vektoriuotąja);• magistralės arbitravimo (vektoriuotoji).
Pertraukties grandinės INT RQ CPU Įv/Išv Įv/Išv