Documentație de la computer la

IRQ conflicte

Ei bine, atunci când după asamblare sau planificat modernizarea computerului de la prima dată rulează și funcționează stabil și fără glitches. Mult mai rău, în cazul în care există probleme neașteptate - reporniri spontane si ingheata, accidente de program, eroare de sistem sau dispozitive „invizibile“, etc. Primul motiv care vine de obicei în minte în acest caz este conflictul de întreruperi. Și știm bine natura acestui fenomen, suntem pregătiți suficient pentru al combate?







Ce este IRQ-ul?

Evident, care necesită două condiții să funcționeze corect mecanism de întrerupere: în primul rând, un semnal de cerere ar trebui să ajungă la procesor, și, în al doilea rând, conductorul de conducător auto trebuie să răspundă la acest semnal în mod corespunzător. În caz de conflict, a doua condiție nu este îndeplinită: semnalul de întrerupere apare, dar răspunsul la acesta este incorect, prin urmare avem (cel mai bun) un dispozitiv inoperant.

Putem spune că un conflict este o situație în care mai multe obiecte încearcă simultan să acceseze o resursă destinată numai uneia dintre ele. Întrebările de întrerupere apar atunci când mai multe dispozitive utilizează aceeași linie de întrerupere pentru a trimite un semnal de cerere și nu există niciun mecanism care să gestioneze cererile concurente. Dacă conducătorul auto care primește controlul nu funcționează cu dispozitivul care a trimis solicitarea, atunci se produce fie o eroare, fie unul dintre dispozitive pur și simplu nu funcționează.

Se pune întrebarea: pot mai multe dispozitive să utilizeze aceeași linie de întrerupere sau sunt în principiu imposibile? La urma urmei, dacă șoferul poate determina de la cine a venit exact solicitarea, atunci acesta va răspunde la semnalele numai dispozitivului său "propriu", ignorând toate celelalte. Dar acest lucru trebuie convenit în prealabil, altfel conflictul este inevitabil.

Busul local PCI a fost conceput pentru a ține cont de întreruperea partajării. Fiecare dispozitiv PCI trebuie să funcționeze corect pe aceeași linie de întrerupere cu alte dispozitive PCI. Aceasta se face după cum urmează: prezența unui semnal pe linia de întrerupere nu este determinată de partea frontală, adică schimbarea nivelului de tensiune, ci chiar prin faptul că are o anumită tensiune. Schimbarea tensiunii în linie poate fi mai multe dispozitive la un moment dat, devenind ca o coadă pentru întreținere.

Astfel, partajarea unui IRQ cu dispozitive PCI multiple 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 semnalului, interferând cu ceilalți șoferi. În al treilea rând, nu toate dispozitivele funcționează pe magistrala PCI; de exemplu, dispozitivele ISA, care includ, de exemplu, controlorii de porturi COM / LPT, pentru a împărți întreruperile cu alții nu sunt capabili. Pentru a înțelege clar modul în care pot fi evitate sau eliminate conflictele, este necesar să se înțeleagă mecanismul de gestionare IRQ.

Organizarea hardware-ului întrerupe într-un computer personal

Computerul IBM PC AT avea doar o singură magistrală pe care dispozitivele puteau comunica cu procesorul și memoria - ISA. Cele mai multe linii 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 avea doar patru întreruperi libere. Prin urmare, a fost inventat mecanismul complicat de partajare a întreruperilor (IRQ Sharing) și redefinirea numărului dinamic (IRQ Steering sau Mapping).

Esența mecanismului de control al întreruperii PCI este după cum urmează. În general, există patru linii fizice de întreruperi PCI, numite PIRQ0, PIRQ1, PIRQ2 și PIRQ3. Ele sunt conectate la controlerul de întrerupere. Fiecare PCI-aparat de partea sa, deoarece are patru picioare, numite INT A, INT B, INT C și D. INT linii conectarea la terminalele pot fi în orice ordine. De exemplu, pentru prima PCI-fantă PIN-ul poate fi: PIRQ0 - INT A, PIRQ1 - INT B, PIRQ2 - INT C, PIRQ3 - INT D. Un al doilea - în mod diferit: PIRQ0 - INT B, PIRQ1 - INT C, PIRQ2 - INT D, PIRQ3 - INT A. De obicei, dispozitivul necesită numai o singură linie de întrerupere conectată la INT A. Atunci când este instalat în primul slot, dispozitivul utilizează linia PIRQ0 și a doua crestătură de pe același contact va linia PIRQ1. Astfel, dispozitivele în sloturi diferite vor folosi diferite linii de întrerupere fizică. Conflictul dintre ele va fi exclus.

Autobuzul AGP, fiind în esență o modificare specializată a PCI, utilizează de asemenea una dintre liniile PIRQ - de obicei PIRQ0.

Pentru sistemele moderne de patru linii nu este suficient, astfel încât în ​​noile chipset-uri sunt adesea folosite PIRQ opt linii, care sunt exact la fel în diferite combinații sunt conectate la sloturile PCI și un built-in dispozitive de card.

Liniile PIRQ sunt conectate la controlerul de întrerupere. Ei, ca și alte linii, au numere logice IRQ. Dacă există mai multe dispozitive pe o linie fizică (și acest lucru este acceptabil), atunci toate acestea vor avea același număr IRQ. Dacă dispozitivele se află pe linii fizice diferite, aceștia pot obține în continuare aceleași numere IRQ. Driverele normale le vor permite să lucreze liber fără pierderi de performanță, deoarece magistrala PCI poate fi capturate încă de un singur dispozitiv. Principalul lucru este să recunoaștem dispozitivul de la care a venit semnalul.







Numerele pentru liniile PIRQ sunt atribuite automat datorită mecanismului PlugPlay notoriu. Dar există și dispozitive ISA care suportă PlugPlay. Ei au, de asemenea, capacitatea de a obține automat numărul IRQ. Dar linia de întrerupere le aparține exclusiv și dacă același număr primește una dintre liniile PIRQ, va apărea un conflict insolubil.

Deci, am aflat că dispozitivele PCI nu ar trebui să aibă probleme cu conflictele IRQ. Dacă, desigur, funcționează corect, dar nu se întâmplă întotdeauna. În plus, șoferii trebuie să sprijine mecanismul de partajare a întreruperilor. Dispozitivele ISA nu știu cum să împartă linii de întrerupere și, prin urmare, sunt provocatori de conflicte. În consecință, sarcina de soluționare a conflictelor este redusă la alocarea corespunzătoare de camere (sursă de probleme - ISA-dispozitiv și „Curbe“ drivere) sau de reproducere a diferitelor linii fizice ( „curbe“ PCI-controlere).

Să ne uităm la modul în care sistemul distribuie numere și la modul în care putem influența acest proces.

Întrerupeți harta

Așa cum am spus, cele mai multe numere IRQ sunt deja ocupate de dispozitive standard, mai exact, atribuite liniilor lor de întrerupere. Să mergem în ordine:
0 - cronometrul de sistem (numărul este întotdeauna ocupat);
1 - tastatura (numărul este întotdeauna ocupat);
2 - cel de-al doilea controler de întrerupere (mereu ocupat);
3 - portul COM2 (poate fi dezactivat și numărul este eliberat);
4 - portul COM1 (poate fi dezactivat și eliberat);
5 port LPT2 (de obicei numărul este gratuit);
6 - controller floppy (poate fi dezactivat și numărul eliberat);
7 - portul 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 - controlerul de hard disk (poate fi dezactivat și numărul este eliberat).

Într-un sistem tipic, numerele 5, 7, 9-11 sunt disponibile, adică cinci din cincisprezece. În plus, puteți dezactiva în siguranță porturile COM2 și LPT1, sporind numărul de numere disponibile la șapte. Gratuit - nu înseamnă că nu sunteți ocupați, ci doar că este posibilă o amestecare liberă între ei.

Puteți afla cum sunt distribuite în prezent numerele de întrerupere în mai multe moduri. La începutul inițierii computerului, apare un tabel de configurare a textului. Imediat după ce trece lista de dispozitive PCI cu indicația numărului IRQ atribuit. O altă metodă funcționează în Windows 9x. Panoul de control are o pictogramă „System“ din applet-ul de asteptare -. Fila „Dispozitive Selectați proprietățile dispozitivului“ Computer“, și toate dispozitivele vor fi listate acolo cu IRQ lor (A se vedea captura de ecran.).

Alocarea numărului IRQ cu ajutorul BIOS-ului

În sistem, numerele IRQ sunt distribuite de două linii fizice de două ori. Prima dată când se face sistemul BIOS atunci când sistemul se învârte în sus. Fiecare dispozitiv PlugPlay (toate PCI, ISA modern, dispozitive integrate), mai exact liniile sale de întrerupere, îi este atribuit un număr din zece posibil. În cazul în care numerele nu sunt suficiente, mai multe rânduri primesc una comună. Dacă acestea sunt linii PIRQ, atunci este bine - dacă există drivere normale și suport din sistemul de operare (vezi mai jos), totul va funcționa. Și dacă un număr primește mai multe dispozitive ISA sau dispozitive PCI și ISA, atunci conflictul este pur și simplu inevitabil și apoi este necesar să se interfereze cu procesul de distribuție.

Mai întâi, trebuie să dezactivați toate dispozitivele ISA neutilizate (pe sisteme fără sloturi ISA, de asemenea, prezente) - COM1, porturi COM2 și unitate. De asemenea, puteți dezactiva modurile EPP și ECP ale portului LPT, iar întreruperea IRQ7 va fi disponibilă.

În BIOS Setup avem nevoie de secțiunea "Configurație PCI / PNP". Există două moduri de bază pentru a influența alocările de numere IRQ: blocați un număr specific ș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 folosită de:" (în noul BIOS este ascuns în submeniul "Resurse IRQ"). Întreruperile care trebuie atribuite exclusiv dispozitivelor ISA, trebuie să puneți "Legacy ISA". Astfel, atunci când distribuim numere pe dispozitivele PCI, datele de întrerupere vor fi sărite. Acest lucru ar trebui făcut în cazul în care orice dispozitiv ISA devine persistent o î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 noul număr IRQ, iar dispozitivul ISA rămâne. Conflictul este rezolvat.

În al doilea rând. o modalitate mai convenabilă de a gestiona numerele IRQ este asignarea directă. În același BIOS Setup elemente submeniu poate fi un fel de "Slot X utilizare IRQ" (alte nume: "PIRQx folosesc IRQ", "Slot PCI x prioritate", "INT x Pin IRQ"). Cu ajutorul lor, fiecare din cele patru linii PIRQ poate fi atribuit unui număr specific. Apropo, în noul premiuBIOS 6.00 puteți vedea ce dispozitive (inclusiv cele încorporate) utilizează această linie sau acea linie.

Documentație de la computer la

Documentație de la computer la

Alocarea numerelor IRQ prin intermediul Windows

A doua oară când numerele de întrerupere sunt alocate de sistemul de operare. După cum demonstrează experimentele mele, Windows'98 începe să interfereze cu acțiunile BIOS-ului numai în cazuri extreme. Dacă aveți un BIOS normal, tehnicile descrise aici nu sunt necesare.

Trebuie remarcat faptul că pentru funcționarea adecvată a mecanismelor de partajare a IRQ-ului și a distribuției dinamice, este necesar ca Windows să recunoască chipset-ul plăcii de bază și să încarce IRQ Miniport. Cea mai recentă versiune de Windows, cu atât mai multe chipset-uri suportă propriul mini-port (PCIIMP.PCI). Cu toate acestea, este întotdeauna mai bine să fii în siguranță și să instalezi cele mai recente drivere pentru chipset.

În Windows 98, sistemul de distribuție IRQ este gestionat utilizând un manager de dispozitive standard. În lista dispozitivelor de sistem, trebuie să găsiți magistrala PCI. În proprietățile sale există o filă specială (a se vedea captura de ecran).

Dacă totul este configurat corect, miniportul ("încărcat cu succes") va fi menționat acolo, iar controlul busului PCI (Steering) va fi activat. Astfel, Windows'98 are mijloacele necesare pentru a gestiona distribuția numerelor de întrerupere între liniile fizice. Dar, deoarece BIOS-ul se descurcă cel mai adesea cu acest lucru, acest mecanism nu este utilizat.

Dar uneori este doar necesar. Așa cum am spus mai devreme, dispozitivele PCI nu ar trebui să contravină dacă folosesc aceeași întrerupere logică. Un alt lucru - dispozitivele ISA, care includ și porturile COM și LPT. Dacă dispozitivul nu este un PlugPlay, este posibil ca BIOS-ul să nu fi observat acest lucru, renunțând la întreruperea 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 acestuia, comutaț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, să dezactivați configurația automată și să încercați să schimbați numărul de întrerupere atribuit. Din păcate, acest lucru nu merge întotdeauna.

Sper ca informațiile de mai sus să vă ajute în lupta împotriva erorilor de "hardware". Și rețineți: majoritatea problemelor care apar sunt datorate nivelului scăzut de alfabetizare a calculatorului gazdă. De aceea, trebuie să te străduiești întotdeauna de auto-educație, atunci vor fi mai puține probleme, iar cele care apar nu vor părea insolubile.







Articole similare

Trimiteți-le prietenilor: