Întrerupere (întrerupere) - semnalul care spune procesorul de apariția oricărui eveniment. În acest caz, executarea secventa de comanda curentă este suspendată și se trece la un handler de întrerupere, care răspunde la eveniment și servește-l, și apoi revine la controlul codului întrerupt.
În funcție de sursa de apariție a semnalului, întreruperile sunt împărțite în:
- asincron. sau externe (hardware) - evenimentele care provin din surse externe (de exemplu, dispozitive periferice), și pot apărea în orice moment arbitrar: semnalul de la timer-ul, placa de rețea, sau o unitate de disc, interfața tastatură, mișcarea mouse-ului. Faptul de apariție a acestui sistem de întrerupere este tratată ca o cerere de întrerupere (cerere de întrerupere, IRQ);
întreruperi hardware sunt împărțite în:
IO întrerupe, cu toate acestea, necesită complexitatea hardware - întreruperi sozdaniyasistemy.
Structura controlerului de prioritate de întrerupere are forma
- IRn- cerere de întrerupere linie de către dispozitivul periferic;
- semnal INTR- cerere de întrerupere de la operator la operator;
- recepția semnalului de confirmare INTA- a cererii de întrerupere, vectorul cerere de întrerupere;
- cerere NMI- NMI fix vector de la dispozitivul controler de întreruperi nu deservită (de exemplu, un semnal de la o unitate de putere sau eșec defalcare de tensiune);
La primirea unei IR cerere de întrerupere (N) de la periferic (PU), controlerul de întrerupere trimite o întrerupere (INT) la CPU. Procesorul permite procesarea semnalului de întrerupere de formare #INTA confirmă că, procedând în controlerul de întrerupere, determină formarea pe magistrala de date un vector de întrerupere. Vector determina un program de tratament. procesul de întrerupere apare după finalizarea procesorului curent de comandă.
controler de întreruperi poate gestiona întrerupe de la dispozitive permițând sau interzicând unele dintre ele (de mascare), și, de asemenea, permite să se schimbe prioritățile. modul procesor controler este controlat prin magistrala de control.
8. (!) Sistem de întrerupere-un singur nivel. Hardware și software.
Dezavantajul principal al input-output-controlat program este o utilizare ineficientă a mașinii timpului CPU. Acesta este cheltuit în principal pe ciclurile de așteptare ale modificărilor codului de intrare cu sprijinul porturilor de intrare absolute sau cicluri standby port de pregătire, cu sprijinul porturilor de intrare-ieșire condiționale. Numărul de stări de așteptare poate fi foarte mare, din cauza ratei mici de cele mai multe dispozitive externe.
elimina complet stări de așteptare și timp de calculator legate de pierderea le permite IO întrerupe. Porturile care utilizează acest tip de schimb au nici un mijloc pentru a trimite un semnal gata de microprocesor, prin intermediul magistralei de date. Bazat pe disponibilitatea semnalele pe care le transmit solicitări către serviciul IRQ.
Diagrama funcțională a includerii unor astfel de porturi în sistemul de microprocesor cu microprocesor de învățare reprezentat la ris.4.17. Acest sistem pune în aplicare așa-numitul-un singur nivel de întrerupere sistem vectorizate. Acesta include porturi 1 ... N, implementarea asincron de intrări-ieșiri la porțiunea exterioară a schimbului, elementul „OR“, codorul prioritate și portul de intrare al vectorului de întrerupere.
Să presupunem că, în starea inițială, toate cererile de serviciu IRQ1 ... IRQN egal cu zero, adică, nr. Să presupunem în continuare că există o solicitare de la portul de intrare No1 IRQ = 1. Această solicitare prin elementul „OR“ este transmis la cererea de intrare INT procesor întrerupere. Procesorul, ca răspuns la această solicitare, efectuați următorii pași:
Ris.4.17.Funktsionalnaya întrerupe diagrama vectorială a unui sistem cu un singur nivel
Ris.4.18.Tipovaya schema bloc de program de întreținere a întrerupe
Fiecare dintre porturile sistemului are propriile sale programe de servicii portuare, apelați unul dintre echipele de tip RST X. Un exemplu particular de realizare a comenzii de repornire numit un vector de întrerupere corespunzătoare. Vectorul este generat de o prioritate codificator cerere IRQ1 ... IRQN si expuse pe magistrala de date de semnal. Utilizarea codificator prioritar ne permite să deservească ambele solicitări primite de la diverse porturi, în conformitate cu un sistem de prioritate predeterminat.
subprogram de serviciu de întrerupere într-un sistem de vector unitar este de obicei construit pe un organigrame tipic (ris.4.18).
În utilizarea reală, întreruperea trebuie să se țină cont de caracteristica EI întrerupere a permite executarea de comenzi. Nu se efectuează la momentul microprocesorul, dar numai după următoarea comandă. În cazul nostru, înseamnă că întreruperea va fi permis din nou numai după revenirea la programul principal.
Într-un sistem cu un singur nivel, toate cererile de întrerupere este aproape egal. Prioritatea afectează numai atunci când sunt primite cereri simultane.
Uneori este mai convenabil de a avea un sistem de întrerupere mai multe niveluri, care solicită o prioritate mai mare poate întrerupe funcționarea programelor de procesare de întrerupere cu priorități mai mici. Vector sistem de întrerupere pe mai multe niveluri este realizat de către un grup specializat în LSI - controler de întreruperi cu prioritate.
Trebuie remarcat faptul că întreruperea de intrare-ieșire, în cele din urmă, prevede, de asemenea transfer asincron către porțiunea interioară a codurilor de schimb. Rolul semnalului care lipsește este un protocol asincron (STB) sau (ACK) este format Execută întrerupe sistemul vector.
9. (!) Sistem de întrerupere multi-nivel. Hardware și software.
În sistemele de mai multe niveluri, pentru Întrerupere de rutină de servicii de nivel inferior de întrerupere poate fi întreruptă întreținerea de rutină a unui nivel mai ridicat de întrerupere. Cu alte cuvinte, modul de întrerupere este pus în aplicare în timpul întreruperii.
Structura tabelului vectorului de întrerupere:
Elementele din tabel Accesarea se realizează pe un cod de 8 biți - tipul de întrerupere a
Cu toate acestea, mai mulți controlori pot întrerupe, inclusiv a Cheny secvențial. Pe computerele moderne (începând de la 286), unul (lider) Întrerupere Controler Nepo-sredstvenno conectat la procesor, iar al doilea (slave) de ieșire conectată la un controler de IRQ2 maestru de intrare INT. Total intrări 15 intrerup obținute de la IRQ0 la IRQ 15 (IRQ2 nu poate fi utilizat).
Atunci când este aplicat un semnal la o întrerupere de la controler pentru a procesa-py pe liniile INTR-INT, în timp ce liniile de date de la controlerul de întrerupere la CPU primește un număr de vector de întrerupere, care este generat prin adăugarea IRQ-ul cu numărul de bază nekoto-ochi, care este atribuit VIOSom con troller în procesul de boot (valori implicite 08h pentru controlerul de master și slave 70h). Astfel, de exemplu, numărul vectorului de întrerupere pentru tastatură va fi 08 + 1 = 9h. Hard disc de 70h + 6 = 76H.
controler de întreruperi permite reprogramarea pentru a seta diverse moduri de așteptare de blocare bufnițe schimbare prioritate de întrerupere, schimbarea de controlere de bază numere. O astfel de osuschest reprogramare se face prin portul doi octeți 20h și 21h. Implicit sunt prioritizate în funcție de numărul lor IRQ controler separat (IRQ0 - cea mai mare, IRQ7 - cel mai mic).
Un exemplu de cascadă două controlere acces direct la memorie