Pentru ce este utilizat numărul de întrerupere irq. Sistemul întrerupe încărcarea procesorului

Un conflict este o situație în care mai multe obiecte încearcă simultan să acceseze o resursă destinată doar unuia dintre ele. Un conflict de întrerupere apare atunci când mai multe dispozitive utilizează aceeași linie de întrerupere pentru a trimite un semnal de solicitare și nu există niciun mecanism care să gestioneze solicitările concurente. Dacă șoferul, care primește controlul, nu funcționează cu dispozitivul care a trimis solicitarea, atunci fie apare o defecțiune, fie unul dintre dispozitive pur și simplu nu funcționează.

Se pune întrebarea: mai multe dispozitive pot utiliza aceeași linie de întrerupere sau este imposibil în principiu? La urma urmei, dacă șoferul este capabil să stabilească de la cine a venit exact solicitarea, atunci va răspunde la semnalele de la numai dispozitivul „său”, ignorând toate celelalte. Dar acest lucru trebuie convenit în prealabil într-un fel, altfel conflictul este inevitabil.

Autobuzul PCI local a fost proiectat având în vedere partajarea întreruperilor. Fiecare dispozitiv PCI trebuie să funcționeze corect pe aceeași linie de întrerupere cu alte dispozitive PCI. Acest lucru se face în modul următor: faptul prezenței unui semnal pe linia de întrerupere este determinat nu de margine, adică o modificare a nivelului de tensiune, dar chiar prin prezența unei anumite tensiuni. Mai multe dispozitive pot modifica tensiunea în linie simultan, devenind, așa cum ar fi, într-o coadă pentru service.

Astfel, partajarea aceluiași IRQ de mai multe dispozitive PCI nu este un conflict prin definiție (Fig.). Cu toate acestea, uneori apar probleme. În primul rând, nu toate dispozitivele PCI funcționează corect pe aceeași linie de întrerupere cu altele. În al doilea rând, uneori șoferii au erori din cauza cărora nu pot determina corect sursa de semnal, interferând cu alți șoferi. În al treilea rând, nu toate dispozitivele funcționează pe magistrala PCI; de exemplu, dispozitivele ISA, care includ, de exemplu, controlere de port COM / LPT, nu pot partaja întreruperile cu alții.

Orez. Win2000 Device Manager IRQ Map - Chipset IO PIC Intel 440BX

Orez. Win2000 IRQ MAP - IO APIC - Prin chipset KT266a

Ca urmare, sunt posibile situații în care computerul începe să înghețe frecvent, refuză să îndeplinească orice funcții sau chiar cade pur și simplu în așa-numitul „ ecran albastru de moarte".

Apic (controler avansat de întrerupere programabil)

După cum se arată mai sus, linia de întrerupere este o resursă foarte redusă pentru un computer. Cu toate acestea, odată cu dezvoltarea industriei de calculatoare, numărul diferitelor dispozitive externe din computer este în continuă creștere. De exemplu, o placă de bază poate avea 5-6 sloturi PCI, slot AGP, controler IDE încorporat, controler SCSI încorporat, adaptor de rețea încorporat 1/2-port etc. Și toate aceste dispozitive necesită întreruperi. 16 linii IRQ au devenit treptat insuficiente.

APIC Este un controler de întrerupere care vă permite să utilizați 24 de întreruperi hardware în loc de 16. Limita de 16 întreruperi hardware, neschimbată din 1982, a împiedicat instalarea dispozitivelor suplimentare într-un computer personal. La sfârșitul anului 2001, au apărut primele plăci de bază cu APIC.

Orez. Întrerupeți sistemul într-un mediu multiprocesor.

Descrierea anterioară a fost pentru PIC-uri proiectate pentru sisteme uniprocesor. Dacă sistemul include două sau mai multe procesoare, această abordare nu mai este permisă și sunt necesare PIC mai complexe.

Tot procesoare moderne x86 include APIC local. Fiecare APIC local are registre pe 32 de biți, un ceas intern, un temporizator local și două linii IRQ suplimentare, LINT0 și LINT1, rezervate pentru întreruperile APIC locale. Toate APIC-urile locale sunt conectate la un APIC I / O extern.

APIC I / O conține un set de 24 de linii IRQ, o tabelă de rutare a întreruperilor de 24 de intrări, registre programabile și un bloc de mesaje pentru trimiterea și primirea de mesaje pe magistrala APIC. Spre deosebire de pinii IRQ ai modelului 8259A, prioritatea de întrerupere nu este legată de numărul pinului.

Fiecare intrare din tabelul de rutare a întreruperii poate fi programată individual pentru a afișa vectorul de întrerupere și prioritatea acestuia, procesorul care va gestiona întreruperea și modul în care va fi selectat acest procesor. Informațiile din tabelul de rutare a întreruperilor sunt utilizate pentru a traduce fiecare semnal extern într-un mesaj adresat unuia sau mai multor APIC-uri locale prin magistrala APIC.

Distribuție statică

Semnalul IRQ este livrat către APIC-urile locale enumerate în intrarea corespunzătoare din tabelul de redirecționare a întreruperii. O întrerupere este livrată către un anumit procesor, mai multe procesoare sau toate procesoarele.

Alocare dinamică

Semnalul IRQ este livrat către APIC-ul local al procesorului, care execută procesul cu cea mai mică prioritate.

Fiecare APIC local are un registru de prioritate de lucru programabil care este utilizat pentru a calcula prioritatea procesului curent. Intel se așteaptă ca acest registru să fie modificat de nucleul sistemului de operare la fiecare comutator de proces.

Pe lângă distribuirea întreruperilor între procesoare, sistemul multi-APIC permite procesorului să genereze întreruperi ale procesorului. Când un procesor dorește să trimită o întrerupere către un alt procesor, acesta stochează vectorul de întrerupere și ID-ul APIC local țintă în Registrul de comandă de întrerupere (ICR) al APIC-ului său local. Mesajul este apoi trimis prin magistrala APIC către APIC-ul local țintă, care emite întreruperea corespunzătoare procesorului său.

Multe sisteme uniprocesor includ în prezent un cip I / O APIC care poate fi configurat în două moduri:

1. Ca PIC standard 8259A conectat la CPU. APIC local este dezactivat, iar cele două linii LINT0 și LINT1 sunt configurate ca pini INTR și NMI.

2. Ca APIC extern I / O extern. APIC local este activat și toate întreruperile externe sunt primite prin intermediul APIC I / O.

  • Alieva Elena Viktorovna, student
  • Universitatea Tehnică de Aviație de Stat Ufa
  • CONTROLUL DE INTERRUPȚIE
  • CONTROLOR
  • INTERRUPȚII HARDWARE
  • ÎNTRERUPE

Întrerupere înseamnă întreruperea temporară a procesului principal de calcul pentru a efectua unele acțiuni planificate sau neplanificate cauzate de funcționarea hardware-ului sau a programului. Mecanismul de întrerupere este acceptat la nivel hardware. Întreruperile hardware apar ca reacție a microprocesorului la un semnal fizic de la un dispozitiv (tastatură, ceas de sistem, tastatură, HDD etc.), aceste întreruperi sunt asincrone în momentul apariției, adică apar la momente aleatorii. Controlerul de întrerupere este conceput pentru a procesa și arbitra cererile de servicii primite către unități centrale de procesare de la dispozitive periferice. Întreruperile au o anumită prioritate, ceea ce permite controlerului de întrerupere să acorde preferință acest moment timp pentru un dispozitiv, nu altul. Într-un computer modern, există până la 16 dispozitive externe și periferice care generează întreruperi.

  • Automatizarea fluxului de documente într-un depozit al unei întreprinderi producătoare
  • Tehnologii de apeluri, caracteristici, aplicații și eficiență
  • Dezvoltarea unui model al sistemului informațional al departamentului juridic pentru susținerea și încheierea contractelor întreprinderii

Introducere

Întrerupere înseamnă întreruperea temporară a procesului principal de calcul pentru a efectua unele acțiuni planificate sau neplanificate cauzate de funcționarea hardware-ului sau a programului. Acestea. este un proces care comută temporar microprocesorul pentru a executa un alt program și apoi revine la programul întrerupt. Prin apăsarea unei taste de pe tastatură, inițiam un apel imediat către programul care recunoaște cheia, își introduce codul în tamponul tastaturii, din care este citit de un alt program. Acestea. microprocesorul întrerupe execuția pentru o vreme programul curentși trece la handlerul de întrerupere, așa-numitul handler de întrerupere. După ce gestionarul de întreruperi își finalizează activitatea, programul întrerupt va relua execuția din punctul în care a fost suspendat. Adresa manipulatorului de întrerupere este calculată din tabelul vectorului de întrerupere.

Mecanismul de întrerupere este acceptat la nivel hardware. În funcție de sursă, întreruperile sunt împărțite în:

  • hardware- apar ca o reacție a microprocesorului la un semnal fizic de la un dispozitiv (tastatură, ceas de sistem, tastatură, hard disk etc.), aceste întreruperi sunt asincrone în momentul apariției, adică apar la momente aleatorii;
  • programatic- sunt apelate artificial folosind comanda corespunzătoare din program (int), sunt destinate să efectueze unele acțiuni ale sistemului de operare, sunt sincrone;
  • excepții- sunt reacția microprocesorului la o situație nestandardizată care a apărut în interiorul microprocesorului în timpul executării unei anumite comenzi de program (divizare la zero, întrerupere de semnalizatorul TF (urmărire)).

Întrerupeți hardware-ul sistemului

Un sistem de întrerupere este o colecție de software și hardware care implementează mecanismul de întrerupere.

Hardware-ul sistemului de întrerupere include:

  • ieșiri cu microprocesor - pe acestea se generează semnale care notifică microprocesorul fie că un dispozitiv extern „cere atenție” (INTR), fie că este necesară procesarea urgentă a unui eveniment sau a unei erori catastrofale (NMI)
  • INTR - pin pentru semnalul de intrare a cererii de întrerupere,
  • NMI - pin pentru semnal de intrare de întrerupere care nu poate fi mascat
  • INTA - ieșire pentru semnalul de ieșire al confirmării primirii semnalului de întrerupere de către microprocesor (acest semnal este alimentat la intrarea cu același nume a microcircuitului controlerului 8259A;
  • 8259A Controler de întrerupere programabil (conceput pentru a repara semnalele de întrerupere de la opt dispozitive externe diferite; este realizat sub forma unui microcircuit; de obicei sunt utilizate două microcircuite conectate în serie, deci numărul surse posibileîntreruperi externe până la 15 plus o întrerupere nemascabilă; el este cel care formează numărul vectorului de întrerupere și îi emite magistrala de date);
  • dispozitive externe (temporizator, tastatură, discuri magnetice etc.)

Manipulați întreruperea

O întrerupere declanșează o serie de evenimente care apar atât în ​​hardware, cât și în software... În fig. 1 prezintă o succesiune tipică a acestor evenimente.

Când dispozitivul I / O este terminat, se întâmplă următoarele:

  • Dispozitivul trimite un semnal de întrerupere procesorului.
  • Înainte de a răspunde la o întrerupere, procesorul trebuie să finalizeze executarea comenzii curente (vezi Fig. 1).
  • Procesorul verifică prezența unei întreruperi, o detectează și trimite dispozitivul care a trimis această întrerupere, notificând un semnal de recepție reușită. Acest semnal permite dispozitivului să șteargă semnalul de întrerupere.
Figura 1. Programarea timpului: I / O lentă

Acum procesorul trebuie să se pregătească pentru a transfera controlul către handlerul de întrerupere. Mai întâi trebuie să le salvați pe toate Informații importante, pentru ca mai târziu să vă puteți întoarce la locul programului curent în care a fost întrerupt. Informațiile minime necesare sunt cuvântul de stare al programului și adresa următoarei comenzi executate, care se află în contorul programului. Aceste date sunt introduse în stiva de control a sistemului.

Figura 2. Gestionarea unei întreruperi simple

Mai mult, adresa de intrare a handlerului de întrerupere, care este responsabil pentru procesarea acestei întreruperi, este încărcată în contorul de programe al procesorului. În funcție de arhitectura computerului și de dispozitivul sistemului de operare, poate exista fie un singur program pentru procesarea tuturor întreruperilor, fie poate exista un program de procesare separat pentru fiecare dispozitiv și fiecare tip de întrerupere. Dacă există mai multe programe disponibile pentru gestionarea întreruperilor, procesorul trebuie să stabilească pe care să îl acceseze. Aceste informații pot fi conținute în semnalul de întrerupere original; în caz contrar, pentru a obține informațiile necesare, procesorul trebuie să interogheze pe rând toate dispozitivele pentru a determina care a trimis întreruperea.

De îndată ce o nouă valoare este încărcată în contorul de programe, procesorul trece la următorul ciclu de instrucțiuni, începând să o recupereze din memorie. Deoarece comanda este recuperată din locație, al cărei număr este stabilit de conținutul contorului de program, controlul trece la rutina de întrerupere. Executarea acestui program presupune următoarele operațiuni.

Conținutul contorului de programe și cuvântul de stare al programului care este întrerupt sunt deja stocate în stiva de sistem. Cu toate acestea, acestea nu sunt toate informațiile referitoare la starea programului executabil. De exemplu, trebuie să salvați conținutul registrelor procesorului, deoarece aceste registre pot fi necesare de către gestionarul de întreruperi. Prin urmare, este necesar să salvați toate informațiile despre starea programului. De obicei, un handler de întrerupere începe prin scrierea conținutului tuturor registrelor în stivă. Alte informații care ar trebui păstrate sunt discutate în capitolul 3, „Descrierea și controlul proceselor”. În fig. este prezentat un exemplu simplu, în care programul utilizatorului este întrerupt după executarea unei instrucțiuni din celula N. Conținutul tuturor registrelor, precum și adresa următoarei instrucțiuni (N + 1), în total, alcătuind M cuvinte, sunt împinse pe teanc. Pointerul stivei este apoi actualizat pentru a indica noul vârf al stivei. Contorul programului este, de asemenea, actualizat pentru a indica începutul rutinei de întrerupere.

Manipulatorul de întreruperi își poate începe acum activitatea. Tratarea întreruperilor include verificarea informațiilor de stare legate de operațiile I / O sau alte evenimente care au declanșat întreruperea. Aceasta poate include, de asemenea, trimiterea de instrucțiuni suplimentare sau mesaje de notificare către dispozitivele I / O.

După finalizarea procesării întreruperii, valorile stocate anterior sunt scoase din stivă, care sunt din nou introduse în registre, reluându-se astfel starea în care se aflau înainte de întrerupere.

Ultimul pas este restaurarea cuvântului de stare a programului și a conținutului contorului de programe din stivă. Ca urmare, comanda programului întrerupt va fi executată în continuare.

Datorită faptului că întreruperea nu este un subrutin apelat din program, este important ca o recuperare completă să păstreze toate informațiile de stare ale programului întrerupt. Cu toate acestea, o întrerupere poate apărea în orice moment și oriunde în programul utilizatorului. Acest eveniment este imprevizibil.

Controler de întrerupere

Controlerul de întrerupere este conceput pentru a procesa și arbitra cererile de servicii primite către procesorul central de pe dispozitivele periferice. Prin analogie, funcția controlerului de întrerupere poate fi comparată cu secretara unui șef. Secretarul trebuie să decidă care dintre vizitatori să admită mai întâi șefului și cine ulterior, pe baza priorităților date de șef și a statutului vizitatorului însuși. În mod similar, într-un sistem informatic, este posibil ca mai multe dispozitive periferice să trimită un semnal de întrerupere sau o cerere de întrerupere. În literatura informatică, acest semnal este denumit IRQ (cerere de întrerupere).

Așa cum s-a menționat mai sus, întreruperile au o anumită prioritate, ceea ce permite controlerelor de întreruperi să acorde preferință la un moment dat unui dispozitiv și nu altui. Într-un computer modern, există până la 16 externe și dispozitiv periferic generând întreruperi. Aceste dispozitive sunt:
–IRQ 0, cronometru sistem; –IRQ 1, tastatură; –IRQ 2, utilizat pentru interogarea dispozitivelor conectate în cascadă; –IRQ 8, ceas în timp real; –IRQ 9, rezervat; –IRQ 10, rezervat; –IRQ 11, rezervat; –IRQ 12, ps / 2 - mouse; –IRQ 13, coprocesor; –IRQ 14, controler de hard disk; –IRQ 15, rezervat; –IRQ 3, porturi COM2, COM4; –IRQ 4, porturi COM1, COM3; –IRQ 5, port LPT2; –IRQ 6, controler pentru dischetă; –IRQ 7, port LPT1, imprimantă.

Aici semnalele sunt listate în ordine descrescătoare de prioritate. Puteți vedea că după IRQ 2, urmat de IRQ 8. Faptul este că la un moment dat controlerul de întrerupere consta din două microcircuite, unul fiind conectat la celălalt. Acest al doilea microcircuit este conectat la linia IRQ 2, formând o cascadă. El servește liniile IRQ8 - IRQ 15. Și apoi urmează liniile primului microcircuit.

Întrerupeți funcționarea controlerului

Controlere de întrerupere considerat bazat pe cip Intel 8259A, care au fost utilizate în computere acum foarte vechi cu procesoare până la seria 386. Aceste computere aveau de obicei 2 cipuri 8259A conectate în cascadă, adică unul la altul. Unul dintre microcircuitele conectate prin linia de solicitare a întreruperii direct la procesor este masterul sau masterul. Restul, conectate la comandant prin ace similare, se numesc sclavi.


Figura 3. Schema de conectare a controlerelor de întrerupere și interacțiunea acestora cu procesorul central

Figura 3 prezintă diagrama de conexiune a controlerelor de întrerupere și interacțiunea acestora cu procesorul central. Semnalele de întrerupere de la dispozitive periferice sau controlere slave sunt trimise la intrările IR0 - IR7 ale controlerului master. Logica internă a controlerului master procesează cererile primite în termeni de prioritate. Dacă prioritatea cererii dispozitivului este suficientă, atunci se generează un semnal la ieșirea INT a controlerului, care este alimentat la intrarea INTR a procesorului. În caz contrar, cererea este blocată.

Dacă procesorul permite întreruperile, atunci după finalizarea executării comenzii curente, acesta generează o secvență de semnale pe linia INTA care face ca controlerul sclav să fie imun la noile cereri de întrerupere primite și, în plus, informații din registrele interne ale controlerului este transmis la linia de date din registrele interne ale controlerului prin care procesorul recunoaște tipul de întrerupere.

Procesorul transferă permisiunea de întrerupere către controlerul de întrerupere prin intermediul controlerului de magistrală. Semnalul RD este destinat controlerului de întrerupere pentru a plasa conținutul registrelor interne pe magistrala de date. Pe semnalul WR, controlorul de întrerupere, dimpotrivă, primește date de la magistrala cu același nume și le scrie în registrele interne. În consecință, acest lucru afectează modul de funcționare al controlerului de întrerupere.

Intrarea CS este conectată la magistrala de adrese și acest semnal este utilizat pentru a identifica un controler de întrerupere specific. Intrarea A0 indică portul controlerului de întrerupere în spațiul I / O.

Intrările IR0 - IR7 sunt proiectate pentru a primi solicitări de întrerupere de la dispozitive periferice și controlere slave.

Ieșirile CAS0 - CAS2 sunt proiectate pentru a identifica un anumit controler slave.

Articolul discută despre întreruperile hardware și dispozitiv, funcții, funcționarea controlerului de întrerupere. Acest controlerîntreruperile au apărut pe primele computere compatibile cu computerul. De atunci, ambele procesoare și computerul în sine s-au schimbat foarte mult, deși au rămas câteva puncte. Prin urmare, pentru a fi mai clar și a fost luată în considerare organizarea controlerului de întrerupere 8295A.

Diagrama de mai sus arată semnalele care vin nu numai către controlerele de întrerupere slave și master, ci și către ceilalți sclavi. Cu toate acestea, computerul sau laptopul dvs. are de fapt 2 controlere de întrerupere așa cum s-a menționat mai sus: master și slave. Dar poți să-ți creezi propriul sisteme informatice folosind astfel până la 64 de controlere de întrerupere slave.

În computerele moderne de mult timp întrerupe funcțiile controlerului Nu se efectuează microcircuitele 8259A, ci podul sudic. Cu toate acestea, pentru toate programele și dispozitivele, totul rămâne la fel. Mai mult, controlerul de întrerupere este programabil, iar registrele și porturile interne trebuie accesate în același mod ca și controlerul 8259A.

Concluzie

În această lucrare, au fost luate în considerare întreruperile, și anume gestionarea întreruperilor hardware și principiul gestionării întreruperilor. De asemenea, considerați controlorii de întrerupere și principiul lor de funcționare.

Întrerupere înseamnă întreruperea temporară a procesului principal de calcul pentru a efectua unele acțiuni planificate sau neplanificate cauzate de funcționarea hardware-ului sau a programului. Mecanismul de întrerupere este acceptat la nivel hardware. Întreruperile hardware apar ca răspuns al microprocesorului la un semnal fizic de pe un dispozitiv (tastatură, ceas de sistem, tastatură, hard disk etc.); aceste întreruperi sunt asincrone în momentul apariției, adică apar la momente aleatorii.

Controler de întrerupere conceput pentru a procesa și arbitra cererile de servicii primite către procesorul central de pe dispozitivele periferice. Întreruperile au o anumită prioritate, ceea ce permite controler de întrerupere acordați preferință la un moment dat unui dispozitiv față de altul. Într-un computer modern, există până la 16 dispozitive externe și periferice care generează întreruperi.

Bibliografie

  1. Lectura. Întrerupe. E-mail Resursă. http://hromatron.narod.ru/_lekcii/prerivania_lekcia_g2013.htm
  2. Sistemul se întrerupe | Intrerupere hardware | Manipularea întreruperii http://life-prog.ru/view_os.php?id=16
  3. Controler de întrerupere. E-mail Resurse http://sdelaycomputersam.ru/Controller_irq.php,
  4. Întrerupe. Controler de întrerupere. Dispozitiv, funcții, lucru. E-mail Resursă http://sdelaycomputersam.ru/Controller_irq.php
  5. Structura și inițializarea resursei electronice a controlerului de întrerupere Intel 8259A https://dev64.wordpress.com/2012/05/30/8259-programming/
Este bine când, după asamblare sau modernizare planificată, computerul pornește și funcționează stabil și fără erori pentru prima dată. Este mult mai rău dacă apar probleme neașteptate - reporniri și blocări spontane, blocări ale programului, inoperabilitate sau „invizibilitate” a dispozitivelor etc. Primul motiv care ne vine de obicei în minte în acest caz este un conflict de întrerupere. Știm bine natura acestui fenomen, suntem suficient de pregătiți să luptăm împotriva acestuia?

Ce este IRQ
Întreruperile sunt mecanismul de bază al reacției sistemului la evenimentele emergente. Întreruperile hardware, denumite de obicei IRQ (Interrupt ReQuest), sunt semnale fizice, cu ajutorul căruia controlerul dispozitivului informează procesorul cu privire la necesitatea procesării unei cereri. În mod convențional, schema de gestionare a întreruperilor arată astfel:
1) procesorul primește un semnal de întrerupere și numărul acestuia;
2) se utilizează un tabel special pentru a găsi adresa programului responsabil cu procesarea întreruperii cu numărul dat - gestionatorul de întreruperi;
3) procesorul suspendă locul de munca actualși trece la execuția handlerului (în cazul general, acesta este un fel de driver);
4) șoferul obține acces la dispozitiv și verifică cauza întreruperii;
5) sunt lansate acțiunile solicitate - inițializare, configurare dispozitiv, schimb de date etc.
6) driverul iese și procesorul revine la sarcina întreruptă.
Evident, pentru funcționarea corectă a mecanismului de întrerupere, trebuie îndeplinite două condiții: în primul rând, semnalul de solicitare trebuie să ajungă la procesor și, în al doilea rând, driverul de manipulare trebuie să răspundă corect la acest semnal. În cazul unui conflict, a doua condiție nu este îndeplinită: semnalul de întrerupere ajunge, dar reacția la acesta se dovedește a fi incorectă, în urma căreia avem (în cel mai bun caz) un dispozitiv inoperant.

Conflict
Putem spune că un conflict este o situație în care mai multe obiecte încearcă simultan să acceseze o resursă destinată doar unuia dintre ele. Un conflict de întrerupere apare atunci când mai multe dispozitive utilizează aceeași linie de întrerupere pentru a trimite un semnal de solicitare și nu există niciun mecanism care să gestioneze solicitările concurente. Dacă șoferul, care primește controlul, nu funcționează cu dispozitivul care a trimis solicitarea, atunci fie apare o defecțiune, fie unul dintre dispozitive pur și simplu nu funcționează.
Se pune întrebarea: mai multe dispozitive pot utiliza aceeași linie de întrerupere sau este imposibil în principiu? La urma urmei, dacă șoferul este capabil să stabilească de la cine a venit exact solicitarea, atunci va răspunde la semnalele de la numai dispozitivul „său”, ignorând toate celelalte. Dar acest lucru trebuie convenit în prealabil într-un fel, altfel conflictul este inevitabil.
Autobuzul PCI local a fost proiectat având în vedere partajarea întreruperilor. Fiecare dispozitiv PCI trebuie să funcționeze corect pe aceeași linie de întrerupere cu alte dispozitive PCI. Acest lucru se face în modul următor: faptul prezenței unui semnal pe linia de întrerupere este determinat nu de margine, adică o modificare a nivelului de tensiune, dar chiar prin prezența unei anumite tensiuni. Mai multe dispozitive pot modifica tensiunea în linie simultan, devenind, așa cum ar fi, într-o coadă pentru service.
Astfel, partajarea aceluiași IRQ între mai multe dispozitive PCI nu este un conflict prin definiție. Cu toate acestea, uneori apar probleme. În primul rând, nu toate dispozitivele PCI funcționează corect pe aceeași linie de întrerupere cu altele. În al doilea rând, uneori șoferii au erori din cauza cărora nu pot determina corect sursa de semnal, interferând cu alți șoferi. În al treilea rând, nu toate dispozitivele funcționează pe magistrala PCI; de exemplu, dispozitivele ISA, care includ, de exemplu, controlere de port COM / LPT, nu pot partaja întreruperile cu alții. Pentru a fi clar despre cum puteți evita sau rezolva conflictele, trebuie să înțelegeți modul în care sunt gestionate IRQ-urile.

Organizarea întreruperilor hardware într-un computer personal
După cum știți, calculatoare personale a început cu computerul IBM. Arhitectura sa include opt linii de întrerupere hardware (IRQ), care erau controlate de un controler special. Fiecăruia dintre ei i s-a atribuit un număr care determina prioritatea întreruperii și adresa handlerului său (așa-numitul vector de întrerupere). Noua arhitectură, IBM PC AT, a furnizat încă opt linii de întrerupere, pentru care a fost utilizat un al doilea controler, conectat la una dintre liniile de întrerupere ale primului controler. Din păcate, această arhitectură a fost ultima după ce IBM a pierdut capacitatea de a gestiona dezvoltarea platformei pe care a creat-o, astfel încât toate computerele moderne au încă doar șaisprezece întreruperi, dintre care una este utilizată de al doilea controler.
Computerul IBM PC AT avea o singură magistrală pe care dispozitivele puteau comunica cu procesorul și memoria - ISA. Majoritatea liniilor de întrerupere au fost atribuite dispozitivelor ISA standard, restul fiind rezervate pentru viitor. Când a venit acest viitor, a devenit clar că noul autobuz universal PCI a primit doar patru întreruperi gratuite. Prin urmare, a fost inventat un mecanism inteligent pentru partajarea întreruperilor (partajarea IRQ) și redefinirea dinamică a numerelor (direcționarea sau maparea IRQ).
Esența mecanismului de control al întreruperii dispozitivului PCI este după cum urmează. În general, există patru linii de întrerupere PCI fizice numite PIRQ0, PIRQ1, PIRQ2 și PIRQ3. Acestea sunt conectate la controlerul de întrerupere. Fiecare dispozitiv PCI, la rândul său, pare să aibă patru conectori, numiți INT A, INT B, INT C și INT D. Puteți conecta liniile la conectori în orice ordine. De exemplu, pentru primul slot PCI, puteți face următoarele cabluri: PIRQ0 - INT A, PIRQ1 - INT B, PIRQ2 - INT C, PIRQ3 - INT D. Și pentru al doilea - într-un mod diferit: PIRQ0 - INT B , PIRQ1 - INT C, PIRQ2 - INT D, PIRQ3 - INT A. De obicei, dispozitivul necesită o singură linie de întrerupere conectată la INT A. Când este instalat în primul slot, dispozitivul folosește linia PIRQ0, iar în al doilea slot, Linia PIRQ1 va fi pe același pin. Astfel, dispozitivele din diferite sloturi vor utiliza linii de întrerupere fizice diferite. Un conflict hardware între ei va fi eliminat.
Autobuzul AGP, fiind de fapt o modificare PCI specializată, folosește și una dintre liniile PIRQ - de obicei PIRQ0.
Pentru sistemele moderne, patru linii nu sunt suficiente, astfel încât noile chipset-uri folosesc adesea opt linii PIRQ, care sunt conectate în același mod în diferite combinații la sloturi PCI și dispozitive încorporate în placă.
Liniile PIRQ sunt conectate la controlerul de întrerupere. Acestora, ca și altor linii, li se atribuie numere IRQ logice. Dacă există mai multe dispozitive pe aceeași linie fizică (și acest lucru este permis), atunci toate vor avea același număr IRQ. Dacă dispozitivele sunt pe linii fizice diferite, pot primi în continuare aceleași numere IRQ. Driverele normale le vor permite să ruleze liber fără a sacrifica performanța, deoarece magistrala PCI poate fi capturată doar de un singur dispozitiv. Principalul lucru este să recunoaștem de la ce dispozitiv a venit semnalul.
Numerele de linie PIRQ sunt atribuite automat datorită notoriu mecanism Plug & Play. Dar există și dispozitive ISA Plug & Play. De asemenea, au capacitatea de a obține automat un număr IRQ. Dar linia lor de întrerupere le aparține exclusiv și, dacă una dintre liniile PIRQ obține același număr, va apărea un conflict insolubil.
Așa că ne-am dat seama că dispozitivele PCI nu ar trebui să aibă probleme de conflict IRQ. Dacă ei, desigur, funcționează corect, iar acest lucru nu este întotdeauna cazul. În plus, driverele trebuie să accepte partajarea întreruperilor. Dispozitivele ISA nu știu cum să partajeze liniile de întrerupere și, prin urmare, provoacă conflicte. Prin urmare, problema eliminării conflictelor se rezumă la alocarea corectă a numerelor (sursa problemelor sunt dispozitivele ISA și driverele „strâmbe”) sau la separarea de-a lungul diferitelor linii fizice (controlere PCI „strâmbe”).
Să vedem cum sunt alocate numerele în sistem și cum putem influența acest proces.

Harta de întrerupere
După cum am spus, majoritatea numerelor IRQ sunt deja ocupate de dispozitive standard sau, mai degrabă, atribuite liniilor lor de întrerupere. Să trecem prin ordine:
0 - cronometru sistem (numărul este întotdeauna ocupat);
1 - tastatură (numărul este întotdeauna ocupat);
2 - controler de întrerupere secundar (întotdeauna ocupat);
3 - port COM2 (poate fi dezactivat, iar numărul poate fi eliberat);
4 - port COM1 (poate fi dezactivat, iar numărul poate fi eliberat);
5 - port LPT2 (de obicei numărul este liber);
6 - controler de dischetă (poate fi dezactivat și numărul eliberat);
7 - port LPT1 (dacă nu în modul EPP sau ECP, atunci numărul este liber);
8 - ceas în timp real (întotdeauna ocupat);
9 - gratuit;
10 - gratuit;
11 - gratuit;
12 - mouse PS / 2 (poate fi gratuit dacă nu există un astfel de mouse);
13 - coprocesor (întotdeauna ocupat);
14 și 15 - controler hard disk-uri(poate fi dezactivat, iar numărul este eliberat).
Într-un sistem tipic, sunt disponibile numerele 5, 7, 9-11, adică cinci din cincisprezece. În plus, puteți dezactiva în siguranță porturile COM2 și LPT1, crescând numărul de numere libere la șapte. Gratuit nu înseamnă că nu sunt ocupați, ci doar că amestecarea gratuită este posibilă între ei.
Orice sistem are trei dispozitive PCI standard - ACPI, controlere USB și o placă video, fiecare dintre acestea având un număr. Un dispozitiv complex (de exemplu, placă de sunet) poate necesita mai multe linii - INT A, INT B etc. pentru componentele lor, care nu vor intra în conflict între ele (la urma urmei, linii fizice diferite), ci cu alte dispozitive - cu ușurință.
Puteți afla cum sunt alocate în prezent numerele de întrerupere în mai multe moduri. La începutul pornirii computerului, apare un tabel de configurare a textului. Imediat după el există o listă de dispozitive PCI cu numărul IRQ atribuit (vezi captura de ecran). Un alt mod funcționează pe Windows 9x. Există o pictogramă „Sistem” în panoul de control și fila „Dispozitive” din applet-ul numit. Selectăm proprietățile dispozitivului „Computer” și toate dispozitivele vor fi listate acolo, indicând IRQ-ul acestora (vezi captura de ecran).
În Windows 2000, nu avem acces la gestionarea întreruperilor, deci pentru a vizualiza lista IRQ, trebuie să folosim utilitarul de informații standard (Panou de control / Instrumente administrative / Gestionare computer / Informații sistem / Resurse hardware).

Alocare IRQ BIOS
În sistem, numerele IRQ sunt alocate între liniile fizice de două ori. Prima dată acest lucru este realizat de BIOS-ul sistemului la momentul pornirii. Fiecărui dispozitiv Plug & Play (toate PCI, ISA moderne, dispozitive integrate), sau mai bine zis linia sa de întrerupere, i se atribuie unul din zece numere posibile. Dacă nu există suficiente numere, mai multe linii obțin una comună. Dacă acestea sunt linii PIRQ, atunci este în regulă - în prezența driverelor normale și a asistenței din sistemul de operare (a se vedea mai jos pentru asta), totul va funcționa. Și dacă mai multe dispozitive ISA sau PCI și dispozitive ISA obțin același număr, atunci conflictul este pur și simplu inevitabil și atunci este necesar să se intervină în procesul de distribuție.
În primul rând, trebuie să dezactivați toate dispozitivele ISA neutilizate (în sistemele fără sloturi ISA, ele sunt prezente și) - porturile COM1, COM2 și o unitate de dischetă. De asemenea, puteți dezactiva modurile EPP și ECP ale portului LPT, apoi întreruperea IRQ7 va deveni disponibilă.
V Configurarea BIOS-ului avem nevoie de secțiunea „Configurare PCI / PNP”. Există două modalități de bază pentru a influența alocarea numerelor IRQ: blocați un anumit număr și atribuiți direct un număr de linie PIRQ.
Prima metodă este disponibilă pentru toate BIOS-urile: găsiți lista elementelor "IRQ x utilizate de:" (în BIOS nou ascuns în submeniul „Resurse IRQ”). Acele întreruperi care ar trebui atribuite exclusiv dispozitivelor ISA ar trebui să fie setate la „ISA vechi”. Astfel, atunci când alocați numere dispozitivelor PCI, aceste întreruperi vor fi omise. Acest lucru ar trebui făcut dacă un dispozitiv ISA persistă într-o singură întrerupere cu un dispozitiv PCI, din cauza căruia ambele nu funcționează. Apoi găsim numărul acestui IRQ și îl blocăm în BIOS Setup. Dispozitivul PCI merge la numar nou IRQ, dar dispozitivul ISA rămâne. Conflictul a fost rezolvat.
O a doua modalitate mai convenabilă de a controla numerele IRQ este atribuirea directă. În același submeniu BIOS Setup, pot exista articole de forma „Slot X use IRQ” (alte nume: „PIRQx use IRQ”, „PCI Slot x priority”, „INT Pin x IRQ”).
Cu ajutorul lor, fiecăreia dintre cele patru linii PIRQ i se poate atribui un număr specific. Apropo, în noul AwardBIOS 6.00 puteți vedea exact ce dispozitive (inclusiv cele încorporate) folosesc această linie sau alta. Uită-te doar la partea dreapta Ecran de configurare BIOS: fotografia arată cum am plasat cursorul peste elementul „Slot 1/5 folosiți nr. IRQ”, iar inscripția „Display Contr.” A apărut în dreapta. Adică, prima linie PIRQ este utilizată de placa video. Dacă acum pun un anumit număr în loc de „Auto”, placa video va fi comutată la această întrerupere.

Alocarea numerelor IRQ Instrumente Windows
A doua oară când sunt alocate numerele de întrerupere sistem de operare... După cum se arată în experimentele mele, Windows "98 începe să interfereze cu acțiunile efectuate de BIOS" ohm numai în cazuri extreme. Dacă aveți un BIOS normal, tehnicile descrise aici nu sunt necesare.
Trebuie remarcat faptul că funcționarea corectă a mecanismelor de partajare IRQ și alocare dinamică necesită ca Windows să recunoască chipset-ul. placa de bazași descărcat IRQ Miniport. Cu cât versiunea Windows este mai recentă, cu atât mai multe chipset-uri acceptă propriul său miniport (PCIIMP.PCI). Cu toate acestea, este întotdeauna mai bine să îl jucați în siguranță și să instalați cele mai recente drivere de chipset.
În Windows 98, sistemul de alocare IRQ este controlat folosind managerul de dispozitive standard. În listă dispozitive de sistem trebuie să găsiți autobuzul PCI. Există o filă specială în proprietățile sale (vezi captura de ecran). Dacă totul este configurat corect, miniportul va fi menționat acolo („încărcat cu succes”) și controlul Autobuz PCI(Direcția) va fi activată. Astfel, Windows "98 are mijloacele de a controla alocarea numerelor de întrerupere între liniile fizice. Dar, din moment ce BIOS-ul se descurcă bine cu acest lucru, acest mecanism nu este implicat.
Dar uneori este pur și simplu necesar. După cum am spus mai înainte, dispozitivele PCI nu ar trebui să intre în conflict dacă utilizează aceeași întrerupere logică. Un alt lucru sunt dispozitivele ISA, care includ și porturi COM și LPT. Dacă dispozitivul este non-Plug & Play, este posibil ca BIOS-ul să nu observe acest lucru prin acordarea întreruperii cu care este ocupat dispozitivului PCI. Apoi, trebuie să rezervați întreruperea. Acest lucru se face în dispecerat Dispozitive Windows"98: selectați dispozitivul" Computer ", apelați proprietățile acestuia, treceți la a doua filă. Apoi totul este clar.
În plus față de redundanță, puteți seta direct numărul de întrerupere pentru dispozitiv. Pentru a face acest lucru, trebuie să găsiți fila „Resurse” în proprietățile sale, dezactivați reglare automatăși încercați să schimbați numărul de întrerupere atribuit.
Din păcate, acest lucru nu funcționează întotdeauna.
Windows 2000 este un sistem special. Daca ai computer modern atunci probabil acceptă interfața de configurare ACPI. În acest caz, Windows 2000 va ignora complet acțiunile BIOS și va „atârna” toate dispozitivele PCI pe o întrerupere logică. În general, acest lucru va funcționa bine (atunci când nu există ISA), dar uneori se întâmplă probleme. Pentru a putea schimba numerele de întrerupere, fie schimbați nucleul HAL, fie reinstalați Windows 2000 cu ACPI dezactivat în BIOS. Înlocuirea nucleului se face după cum urmează: în managerul de dispozitive, selectați „Computer” / „Computer cu ACPI”, schimbați driverul în „ Calculator standard", reporniți. Dacă acest lucru nu funcționează, va trebui să reinstalați din nou Windows 2000.
Sper că informațiile de mai sus vă vor ajuta în lupta împotriva erorilor hardware. Și amintiți-vă: majoritatea problemelor care apar sunt legate de nivel scăzut alfabetizare informatică gazda computerului. Prin urmare, trebuie să te străduiești întotdeauna pentru autoeducare, atunci vor exista mai puține probleme, iar cele care apar nu vor părea insolubile.

Probabil cel mai frecvent conflict de întrerupere (IRQ) este asociat cu portul serial integrat COM2 găsit în modern plăci de bază, și un modem intern (adică un modem intern complet pentru PC, nu un modem software, numit și WinModem). Faptul este că un modem intern cu drepturi depline are deja suport pentru un anumit port; în mod implicit, acest port este atribuit COM2, sistemul activând, de obicei, și al doilea port serial. Astfel, sistemul are două porturi identice folosind aceleași resurse (întreruperi și adrese de port I / O).

Soluția la această problemă este destul de simplă: introduceți setarea BIOS-ului de sistem și dezactivați portul COM2 încorporat. În plus, ați putea lua în considerare dezactivarea portului COM1, care este, de asemenea, rar utilizat. Dezactivarea porturilor COMx neutilizate este una dintre căi mai bune lansează întreruperi (IRQ) pentru alte dispozitive.

Un alt conflict comun implică și porturile seriale. În tabelul standard de mapare a întreruperilor, este posibil să fi observat că IRQ3 este atribuit COM2 și IRQ4 este atribuit COM1. Problema apare atunci când porturile COM3 și / sau COM4 suplimentare sunt adăugate la sistem și întreruperile gratuite nu li se atribuie manual (în mod implicit folosesc același IRQ3 și IRQ4).

Complicații suplimentare sunt introduse de faptul că unele carduri de port nu permit selectarea altor întreruperi decât IRQ3 și IRQ4. Ca urmare, atribuirea IRQ3 la COM4 și IRQ4 la COM3 provoacă un conflict cu COM1 și COM2, care folosesc și aceste întreruperi: două porturi nu pot utiliza simultan același canal de control al întreruperii. În timp ce lucrați în DOS, acest lucru era permis, deoarece o singură sarcină putea fi efectuată în el la un moment dat, dar în Windows și OS / 2 acest lucru este complet imposibil. Pentru a utiliza mai mult de două porturi COM paralele într-un computer, este necesară o placă multiport care, pe lângă întreruperile numerotate 3 și 4, permite utilizarea unor întreruperi suplimentare. Partajarea întreruperilor este, în principiu, acceptabilă pentru dispozitivele care în mod normal nu funcționează simultan (sau continuu). Porturile nu se încadrează în această categorie de dispozitive. Puteți utiliza împreună întreruperea pentru scaner și modem, dar în acest caz, dacă acestea sunt utilizate simultan, va exista un conflict. Din fericire, majoritatea dispozitivelor care anterior foloseau porturi (cum ar fi șoareci, imprimante de etichete și modemuri externe) conectați-vă acum la porturi USB, deci există probleme cu necesitatea de a suporta mai multe porturi. utilizatori moderni computerele nu ar trebui să apară.

Dacă tot trebuie să utilizați mai multe porturi seriale, cea mai bună soluție va fi achiziționarea unei plăci multiport care fie oferă posibilitatea de a seta întreruperi neconflictuale, fie conține propriul procesor care permite distribuirea unei întreruperi de sistem între mai multe porturi. Unele carduri multiport mai vechi aveau o interfață ISA, dar astăzi au fost înlocuite cu carduri PCI, care oferă și avantaje de performanță.

Dacă lipsește un dispozitiv menționat în tabel (de exemplu, portul încorporat al mouse-ului (IRQ12) sau al doilea port paralel (IRQ5)), întreruperile lor pot fi considerate disponibile. De exemplu, cel de-al doilea port paralel este extrem de rar, astfel încât întreruperea IRQ5 atribuită acestuia este utilizată cel mai adesea pentru placa adaptorului de sunet. În mod similar, întreruperea IRQ15 este utilizată pentru controlerul IDE secundar. Dacă nu există dispozitive de disc conectate la canalul IDE secundar în sistem, puteți dezactiva acest controler în BIOS, eliberând astfel o altă întrerupere pentru alte dispozitive.

Trebuie remarcat faptul că cel mai simplu mod de a verifica setările de întrerupere este în Managerul de dispozitive Windows. Pe Windows 95b există programul HWDIAG și pe Windows 98 și versiuni ulterioare versiuni ulterioare- Informații despre sistem de consolă. Aceste utilitare vă permit să obțineți un raport detaliat despre utilizarea resurselor în sistem, precum și driverele instalate dispozitive și intrări de registry Windows pentru fiecare dispozitiv. V Sisteme Windows Pentru XP și Vista, informațiile despre sistem sunt furnizate de programul Msinfo32.

Pentru a asigura cel mai mare număr posibil de întreruperi partajate într-un sistem modern fără conectori ISA, urmați pașii următori în BIOS-ul sistemului.

  1. Dezactivați orice porturi neutilizate din BIOS-ul sistemului. De exemplu, dacă în loc de port serial și paralel sunt utilizate Porturi USB, dezactivați-le. Ca urmare, pot fi lansate până la trei întreruperi.
  2. Specificați întreruperea IRQ lansată la pasul 1 în lista întreruperilor disponibile pentru dispozitivele PCI / PnP. Depinzând de Versiunea BIOS parametrii corespunzători sunt disponibili în secțiunea PnP / PCI Resource Exclusion sau PnP / PCI Configuration section.
  3. Activați opțiunea Resetare date de configurare pentru a șterge tabelele de rutare IRQ din memoria CMOS.
  4. Salvați modificările și ieșiți din programul de configurare BIOS.

Este bine când, după asamblare sau modernizare planificată, computerul pornește și funcționează stabil și fără erori pentru prima dată. Este mult mai rău dacă apar probleme neașteptate - reporniri și blocări spontane, blocări ale programului, inoperabilitate sau „invizibilitate” a dispozitivelor etc. Primul motiv care ne vine de obicei în minte în acest caz este un conflict de întrerupere. Știm bine natura acestui fenomen, suntem suficient de pregătiți să luptăm împotriva acestuia?

Ce este IRQ


Întreruperile sunt mecanismul de bază al reacției sistemului la evenimentele emergente. Întreruperile hardware, denumite de obicei IRQ (Interrupt ReQuest), sunt semnale fizice utilizate de controlerul dispozitivului pentru a informa procesorul să proceseze o cerere. În mod convențional, schema de gestionare a întreruperilor arată astfel:
1) procesorul primește un semnal de întrerupere și numărul acestuia;
2) se utilizează un tabel special pentru a găsi adresa programului responsabil cu procesarea întreruperii cu numărul dat - gestionatorul de întreruperi;
3) procesorul suspendă activitatea curentă și trece la execuția handler-ului (în cazul general, acesta este un fel de driver);
4) șoferul obține acces la dispozitiv și verifică cauza întreruperii;
5) sunt lansate acțiunile solicitate - inițializare, configurare dispozitiv, schimb de date etc.
6) driverul iese și procesorul revine la sarcina întreruptă.
Evident, pentru ca mecanismul de întrerupere să funcționeze corect, trebuie îndeplinite două condiții: în primul rând, semnalul de solicitare trebuie să ajungă la procesor și, în al doilea rând, driverul de manipulare trebuie să răspundă corect la acest semnal. În cazul unui conflict, a doua condiție nu este îndeplinită: semnalul de întrerupere ajunge, dar reacția la acesta se dovedește a fi incorectă, în urma căreia avem (în cel mai bun caz) un dispozitiv inoperant.

Conflict

Putem spune că un conflict este o situație în care mai multe obiecte încearcă simultan să acceseze o resursă destinată doar unuia dintre ele. Un conflict de întrerupere apare atunci când mai multe dispozitive utilizează aceeași linie de întrerupere pentru a trimite un semnal de solicitare și nu există niciun mecanism care să gestioneze solicitările concurente. Dacă șoferul, care primește controlul, nu funcționează cu dispozitivul care a trimis solicitarea, atunci fie apare o defecțiune, fie unul dintre dispozitive pur și simplu nu funcționează.
Se pune întrebarea: mai multe dispozitive pot utiliza aceeași linie de întrerupere sau este imposibil în principiu? La urma urmei, dacă șoferul este capabil să stabilească de la cine a venit exact solicitarea, atunci va răspunde la semnalele de la numai dispozitivul „său”, ignorând toate celelalte. Dar acest lucru trebuie convenit în prealabil într-un fel, altfel conflictul este inevitabil.
Autobuzul PCI local a fost proiectat având în vedere partajarea întreruperilor. Fiecare dispozitiv PCI trebuie să funcționeze corect pe aceeași linie de întrerupere cu alte dispozitive PCI. Acest lucru se face în modul următor: faptul prezenței unui semnal pe linia de întrerupere este determinat nu de margine, adică o modificare a nivelului de tensiune, dar chiar prin prezența unei anumite tensiuni. Mai multe dispozitive pot modifica tensiunea în linie simultan, devenind, așa cum ar fi, într-o coadă pentru service.
Astfel, partajarea aceluiași IRQ între mai multe dispozitive PCI nu este un conflict prin definiție. Cu toate acestea, uneori apar probleme. În primul rând, nu toate dispozitivele PCI funcționează corect pe aceeași linie de întrerupere cu altele. În al doilea rând, uneori șoferii au erori din cauza cărora nu pot determina corect sursa de semnal, interferând cu alți șoferi. În al treilea rând, nu toate dispozitivele funcționează pe magistrala PCI; de exemplu, dispozitivele ISA, care includ, de exemplu, controlere de port COM / LPT, nu pot partaja întreruperile cu alții. Pentru a fi clar despre cum puteți evita sau rezolva conflictele, trebuie să înțelegeți modul în care sunt gestionate IRQ-urile.

Organizarea întreruperilor hardware într-un computer personal


După cum știți, computerele personale au început cu computerul IBM. Arhitectura sa include opt linii de întrerupere hardware (IRQ), care erau controlate de un controler special. Fiecăruia dintre ei i s-a atribuit un număr care determina prioritatea întreruperii și adresa handlerului său (așa-numitul vector de întrerupere). Noua arhitectură, IBM PC AT, a furnizat încă opt linii de întrerupere, pentru care a fost utilizat un al doilea controler, conectat la una dintre liniile de întrerupere ale primului controler. Din păcate, această arhitectură a fost ultima după ce IBM a pierdut capacitatea de a gestiona dezvoltarea platformei pe care a creat-o, astfel încât toate computerele moderne au încă doar șaisprezece întreruperi, dintre care una este utilizată de al doilea controler.
Computerul IBM PC AT avea o singură magistrală pe care dispozitivele puteau comunica cu procesorul și memoria - ISA. Majoritatea liniilor de întrerupere au fost alocate dispozitivelor ISA standard, restul fiind rezervate pentru viitor. Când a venit acel viitor, sa dovedit că noul autobuz PCI universal a primit doar patru întreruperi gratuite. Prin urmare, a fost inventat un mecanism inteligent pentru partajarea întreruperilor (partajarea IRQ) și redefinirea dinamică a numerelor (direcționarea sau maparea IRQ).
Esența mecanismului de control al întreruperii dispozitivului PCI este după cum urmează. În general, există patru linii de întrerupere PCI fizice numite PIRQ0, PIRQ1, PIRQ2 și PIRQ3. Acestea sunt conectate la controlerul de întrerupere. Fiecare dispozitiv PCI, la rândul său, pare să aibă patru conectori numiți INT A, INT B, INT C și INT D. Puteți conecta liniile la conectori în orice ordine. De exemplu, pentru primul slot PCI, puteți face următoarele cabluri: PIRQ0 - INT A, PIRQ1 - INT B, PIRQ2 - INT C, PIRQ3 - INT D. Și pentru al doilea - într-un mod diferit: PIRQ0 - INT B , PIRQ1 - INT C, PIRQ2 - INT D, PIRQ3 - INT A. De obicei, dispozitivul necesită o singură linie de întrerupere conectată la INT A. Când este instalat în primul slot, dispozitivul folosește linia PIRQ0, iar în al doilea slot, Linia PIRQ1 va fi pe același pin. Astfel, dispozitivele din diferite sloturi vor utiliza linii de întrerupere fizice diferite. Un conflict hardware între ei va fi eliminat.
Autobuzul AGP, fiind de fapt o modificare PCI specializată, folosește și una dintre liniile PIRQ - de obicei PIRQ0.
Pentru sistemele moderne, patru linii nu sunt suficiente, astfel încât noile chipset-uri folosesc adesea opt linii PIRQ, care sunt conectate în același mod în diferite combinații la sloturi PCI și dispozitive încorporate în placă.
Liniile PIRQ sunt conectate la controlerul de întrerupere. Acestora, ca și altor linii, li se atribuie numere IRQ logice. Dacă există mai multe dispozitive pe aceeași linie fizică (și acest lucru este permis), atunci toate vor avea același număr IRQ. Dacă dispozitivele sunt pe linii fizice diferite, pot primi în continuare aceleași numere IRQ. Driverele normale le vor permite să ruleze liber fără a sacrifica performanța, deoarece magistrala PCI poate fi capturată doar de un singur dispozitiv. Principalul lucru este să recunoaștem de la ce dispozitiv a venit semnalul.
Numerele de linie PIRQ sunt atribuite automat datorită notoriu mecanism Plug & Play. Dar există și dispozitive ISA Plug & Play. De asemenea, au capacitatea de a obține automat un număr IRQ. Dar linia lor de întrerupere le aparține exclusiv și, dacă una dintre liniile PIRQ obține același număr, va apărea un conflict insolubil.
Așa că ne-am dat seama că dispozitivele PCI nu ar trebui să aibă probleme de conflict IRQ. Dacă ei, desigur, funcționează corect, iar acest lucru nu este întotdeauna cazul. În plus, driverele trebuie să accepte un mecanism de partajare a întreruperilor. Dispozitivele ISA nu știu cum să partajeze liniile de întrerupere și, prin urmare, provoacă conflicte. Prin urmare, problema eliminării conflictelor se rezumă la alocarea corectă a numerelor (sursa problemelor sunt dispozitivele ISA și driverele „strâmbe”) sau la separarea de-a lungul diferitelor linii fizice (controlere PCI „strâmbe”).
Să vedem cum sunt alocate numerele în sistem și cum putem influența acest proces.

Harta de întrerupere

După cum am spus, majoritatea numerelor IRQ sunt deja ocupate de dispozitive standard sau, mai degrabă, atribuite liniilor lor de întrerupere. Să trecem prin ordine:
0 - cronometru sistem (numărul este întotdeauna ocupat);
1 - tastatură (numărul este întotdeauna ocupat);
2 - controler de întrerupere secundar (întotdeauna ocupat);
3 - port COM2 (poate fi dezactivat, iar numărul poate fi eliberat);
4 - port COM1 (poate fi dezactivat, iar numărul poate fi eliberat);
5 - port LPT2 (de obicei numărul este liber);
6 - controler de dischetă (poate fi dezactivat și numărul eliberat);
7 - port LPT1 (dacă nu în modul EPP sau ECP, atunci numărul este liber);
8 - ceas în timp real (întotdeauna ocupat);
9 - gratuit;
10 - gratuit;
11 - gratuit;
12 - mouse PS / 2 (poate fi gratuit dacă nu există un astfel de mouse);
13 - coprocesor (întotdeauna ocupat);
14 și 15 - controler de hard disk (poate fi dezactivat și numărul eliberat).
Într-un sistem tipic, sunt disponibile numerele 5, 7, 9-11, adică cinci din cincisprezece. În plus, puteți dezactiva în siguranță porturile COM2 și LPT1, crescând numărul de numere libere la șapte. Gratuit nu înseamnă că nu sunt ocupați, ci doar că amestecarea gratuită este posibilă între ei.
Orice sistem are trei dispozitive PCI standard - ACPI, controlere USB și o placă video, fiecare dintre acestea având un număr. Un dispozitiv complex (de exemplu, o placă de sunet) poate necesita mai multe linii - INT A, INT B etc. pentru componentele lor, care nu vor intra în conflict între ele (la urma urmei, linii fizice diferite), ci cu alte dispozitive - cu ușurință.
Puteți afla cum sunt alocate în prezent numerele de întrerupere în mai multe moduri. La începutul pornirii computerului, apare un tabel de configurare a textului. Imediat după el există o listă de dispozitive PCI cu numărul IRQ atribuit (vezi captura de ecran). Un alt mod funcționează pe Windows 9x. Există o pictogramă „Sistem” în panoul de control și fila „Dispozitive” din applet-ul numit. Selectăm proprietățile dispozitivului „Computer” și toate dispozitivele vor fi listate acolo, indicând IRQ-ul acestora (vezi captura de ecran).
În Windows 2000, nu avem acces la gestionarea întreruperilor, deci pentru a vizualiza lista IRQ, trebuie să folosim utilitarul de informații standard (Panou de control / Instrumente administrative / Gestionare computer / Informații sistem / Resurse hardware).

Alocare IRQ BIOS

În sistem, numerele IRQ sunt alocate între liniile fizice de două ori. Prima dată acest lucru este realizat de BIOS-ul sistemului la momentul pornirii. Fiecărui dispozitiv Plug & Play (toate PCI, ISA moderne, dispozitive integrate), sau mai bine zis liniile sale de întrerupere, i se atribuie unul din zece numere posibile. Dacă nu există suficiente numere, mai multe linii obțin una comună. Dacă acestea sunt linii PIRQ, atunci este în regulă - în prezența driverelor normale și a asistenței din sistemul de operare (a se vedea mai jos pentru asta), totul va funcționa. Și dacă mai multe dispozitive ISA sau PCI și dispozitive ISA obțin același număr, atunci conflictul este pur și simplu inevitabil și atunci este necesar să se intervină în procesul de distribuție.
În primul rând, trebuie să dezactivați toate dispozitivele ISA neutilizate (în sistemele fără sloturi ISA, ele sunt prezente și) - porturile COM1, COM2 și o unitate de dischetă. De asemenea, puteți dezactiva modurile EPP și ECP ale portului LPT, apoi întreruperea IRQ7 va deveni disponibilă.
În BIOS Setup, avem nevoie de secțiunea „Configurare PCI / PNP”. Există două modalități de bază pentru a influența alocarea numerelor IRQ: blocați un anumit număr și atribuiți direct un număr de linie PIRQ.
Prima metodă este disponibilă pentru toate BIOS-urile: găsiți lista articolelor „IRQ x utilizate de:” (în noul BIOS este ascuns în submeniul „Resurse IRQ”). Acele întreruperi care ar trebui atribuite exclusiv dispozitivelor ISA ar trebui să fie setate la „ISA vechi”. Astfel, atunci când alocați numere dispozitivelor PCI, aceste întreruperi vor fi omise. Acest lucru ar trebui făcut dacă orice dispozitiv ISA persistă într-o singură întrerupere cu un dispozitiv PCI, din cauza căruia ambele nu funcționează. Apoi găsim numărul acestui IRQ și îl blocăm în BIOS Setup. Dispozitivul PCI trece la noul număr IRQ, dar dispozitivul ISA rămâne. Conflictul a fost rezolvat.
O a doua modalitate mai convenabilă de a controla numerele IRQ este atribuirea directă. În același submeniu BIOS Setup, pot exista articole de forma „Slot X use IRQ” (alte nume: „PIRQx use IRQ”, „PCI Slot x priority”, „INT Pin x IRQ”).
Cu ajutorul lor, fiecăreia dintre cele patru linii PIRQ i se poate atribui un număr specific. Apropo, în noul AwardBIOS 6.00 puteți vedea exact ce dispozitive (inclusiv cele încorporate) folosesc această linie sau alta. Doar aruncați o privire în partea dreaptă a ecranului de configurare a BIOS-ului: fotografia arată cum am plasat cursorul peste elementul „Slot 1/5 folosiți nr. IRQ”, iar în partea dreaptă a apărut inscripția „Display Contr.”. Adică, prima linie PIRQ este utilizată de placa video. Dacă acum pun un anumit număr în loc de „Auto”, placa video va fi comutată la această întrerupere.

Alocarea IRQ-urilor utilizând Windows

A doua oară când numerele de întrerupere sunt alocate de sistemul de operare. După cum se arată în experimentele mele, Windows "98 începe să interfereze cu acțiunile efectuate de BIOS" ohm numai în cazuri extreme. Dacă aveți un BIOS normal, tehnicile descrise aici nu sunt necesare.
Trebuie remarcat faptul că pentru partajarea IRQ și mecanismele de alocare dinamică să funcționeze corect, Windows trebuie să recunoască chipset-ul plăcii de bază și să încarce IRQ Miniport. Cu cât versiunea Windows este mai recentă, cu atât mai multe chipset-uri acceptă propriul său miniport (PCIIMP.PCI). Cu toate acestea, este întotdeauna mai bine să îl jucați în siguranță și să instalați cele mai recente drivere de chipset.
În Windows 98, sistemul de alocare IRQ este controlat de managerul de dispozitive standard. Găsiți magistrala PCI în lista dispozitivelor de sistem. Există o filă specială în proprietățile sale (vezi captura de ecran). Dacă totul este configurat corect, un miniport va fi menționat acolo („încărcat cu succes”), iar gestionarea magistralei PCI (Steering) va fi activată. Astfel, Windows "98 are mijloacele de a controla alocarea numerelor de întrerupere între liniile fizice. Dar, din moment ce BIOS-ul se descurcă bine cu acest lucru, acest mecanism nu este implicat.
Dar uneori este pur și simplu necesar. După cum am spus mai înainte, dispozitivele PCI nu ar trebui să intre în conflict dacă utilizează aceeași întrerupere logică. Un alt lucru sunt dispozitivele ISA, care includ și porturi COM și LPT. Dacă dispozitivul este non-Plug & Play, este posibil ca BIOS-ul să nu observe acest lucru prin acordarea întreruperii cu care este ocupat dispozitivului PCI. Apoi, trebuie să rezervați întreruperea. Acest lucru se face în Windows 98 Device Manager: selectați dispozitivul Computer, apelați proprietățile sale, treceți la a doua filă.
În plus față de redundanță, puteți seta direct numărul de întrerupere pentru dispozitiv. Pentru a face acest lucru, trebuie să găsiți fila „Resurse” în proprietățile sale, să dezactivați configurarea automată și să încercați să modificați numărul de întrerupere atribuit.
Din păcate, acest lucru nu funcționează întotdeauna.
Windows 2000 este un sistem special. Dacă aveți un computer modern, atunci acesta acceptă probabil interfața de configurare ACPI. În acest caz, Windows 2000 va ignora complet acțiunile BIOS și va „atârna” toate dispozitivele PCI pe o întrerupere logică. În general, acest lucru va funcționa bine (atunci când nu există ISA), dar uneori se întâmplă probleme. Pentru a putea schimba numerele de întrerupere, fie schimbați nucleul HAL, fie reinstalați Windows 2000 cu ACPI dezactivat în BIOS. Înlocuirea nucleului se face după cum urmează: în managerul de dispozitive, selectați „Computer” / „Computer cu ACPI”, schimbați driverul în „Computer standard”, reporniți. Dacă acest lucru nu ajută, va trebui să reinstalați din nou Windows 2000.
Sper că informațiile de mai sus vă vor ajuta în lupta împotriva erorilor hardware. Și amintiți-vă: majoritatea problemelor care apar sunt asociate cu nivelul scăzut de alfabetizare a computerului de către proprietarul computerului. Prin urmare, trebuie să te străduiești întotdeauna pentru autoeducare, atunci vor exista mai puține probleme, iar cele care apar nu vor părea insolubile.