Na čo slúži číslo prerušenia irq. Systémové prerušenia zaťažujú procesor

Konflikt je situácia, v ktorej sa niekoľko objektov súčasne pokúša o prístup k zdroju, ktorý je určený len pre jeden z nich. Konflikt prerušení nastane, keď viaceré zariadenia používajú rovnakú prerušovaciu linku na odoslanie signálu požiadavky a neexistuje žiadny mechanizmus na spracovanie súbežných požiadaviek. Ak ovládač, ktorý dostáva kontrolu, nepracuje so zariadením, ktoré odoslalo požiadavku, buď dôjde k poruche, alebo jedno zo zariadení jednoducho nefunguje.

Vynára sa otázka: môžu viaceré zariadenia používať rovnakú prerušovaciu linku, alebo je to v zásade nemožné? Koniec koncov, ak je vodič schopný určiť, od koho presne požiadavka prišla, potom bude reagovať na signály iba „svojho“ zariadenia, pričom ignoruje všetky ostatné. Ale to musí byť vopred nejakým spôsobom dohodnuté, inak je konflikt nevyhnutný.

Miestna zbernica PCI bola navrhnutá s ohľadom na zdieľanie prerušení. Každé zariadenie PCI musí správne fungovať na rovnakej prerušovacej linke s ostatnými zariadeniami PCI. To sa deje nasledujúcim spôsobom: skutočnosť o prítomnosti signálu na linke prerušenia nie je určená okrajom, t.j. zmenou úrovne napätia, ale samotnou skutočnosťou prítomnosti určitého napätia. Niekoľko zariadení môže zmeniť napätie v linke naraz, čím sa stane, ako keby, vo fronte na obsluhu.

Zdieľanie rovnakého IRQ niekoľkými zariadeniami PCI teda nie je konfliktom podľa definície (obr.). Niekedy však nastanú problémy. Po prvé, nie všetky zariadenia PCI pracujú správne na tej istej linke prerušenia ako ostatné. Za druhé, niekedy majú vodiči chyby, kvôli ktorým nevedia správne určiť zdroj signálu a zasahujú do iných ovládačov. Po tretie, nie všetky zariadenia fungujú na zbernici PCI; napríklad zariadenia ISA, medzi ktoré patria napríklad radiče portov COM / LPT, nemôžu zdieľať prerušenia s inými.

Ryža. Win2000 Device Manager IRQ Map - IO PIC Intel 440BX Chipset

Ryža. MAPA Win2000 IRQ - IO APIC - Čipová sada KT266a

Výsledkom je, že sú možné situácie, keď počítač začne často mrznúť, odmieta vykonávať akékoľvek funkcie alebo dokonca jednoducho spadne do takzvaného „ modrá obrazovka smrti".

Apic (Advanced Programmable Interrupt Controller)

Ako je uvedené vyššie, linka prerušenia je pre počítač veľmi vzácnym zdrojom. S rozvojom počítačového priemyslu sa však počet rôznych externých zariadení v počítači neustále zvyšuje. Napríklad jedna základná doska môže mať 5-6 PCI slotov, AGP slot, vstavaný IDE radič, vstavaný SCSI radič, vstavaný 1/2-portový sieťový adaptér atď. A všetky tieto zariadenia potrebujú prerušenia. Postupne chýbalo 16 liniek IRQ.

APIC Je radič prerušenia, ktorý vám umožňuje použiť 24 hardvérových prerušení namiesto 16. Limit 16 hardvérových prerušení, ktorý sa od roku 1982 nezmenil, brzdil inštaláciu ďalších zariadení do osobného počítača. Koncom roku 2001 sa objavili prvé základné dosky s APIC.

Ryža. Prerušovací systém vo viacprocesorovom prostredí.

Predchádzajúci popis bol pre PIC navrhnuté pre jednoprocesorové systémy. Ak systém obsahuje dva alebo viac procesorov, tento prístup už nie je prípustný a vyžadujú sa zložitejšie PIC.

Všetko moderné procesory x86 obsahuje miestny APIC. Každý lokálny APIC má 32-bitové registre, interné hodiny, lokálny časovač a dve ďalšie linky IRQ, LINT0 a LINT1, vyhradené pre lokálne prerušenia APIC. Všetky lokálne APIC sú pripojené k externému I/O APIC.

I/O APIC obsahuje sadu 24 liniek IRQ, 24-vstupovú smerovaciu tabuľku prerušení, programovateľné registre a blok správ na odosielanie a prijímanie správ na zbernici APIC. Na rozdiel od pinov IRQ 8259A, priorita prerušenia nie je viazaná na číslo pinu.

Každý záznam v smerovacej tabuľke prerušenia je možné naprogramovať jednotlivo tak, aby zobrazoval vektor prerušenia a jeho prioritu, procesor, ktorý bude spracovávať prerušenie, a spôsob výberu tohto procesora. Informácie v smerovacej tabuľke prerušení sa používajú na preklad každého externého signálu do správy adresovanej jednému alebo viacerým lokálnym APIC cez zbernicu APIC.

Statická distribúcia

Signál IRQ je dodávaný do miestnych APIC uvedených v príslušnom zázname tabuľky presmerovania IRQ. Prerušenie sa doručí jednému konkrétnemu procesoru, viacerým procesorom alebo všetkým procesorom.

Dynamická alokácia

Signál IRQ je dodávaný do lokálneho APIC procesora, ktorý vykonáva proces s najnižšou prioritou.

Každý lokálny APIC má programovateľný register priority úloh, ktorý sa používa na výpočet priority aktuálneho procesu. Intel očakáva, že tento register bude upravený jadrom operačného systému pri každom prepnutí procesu.

Okrem distribúcie prerušení medzi procesormi umožňuje systém multi-APIC CPU generovať medziprocesorové prerušenia. Keď CPU chce poslať prerušenie inému CPU, uloží vektor prerušenia a cieľový miestny ID APIC do registra príkazov prerušenia (ICR) svojho lokálneho APIC. Správa sa potom odošle cez zbernicu APIC do cieľového lokálneho APIC, ktorý vydá príslušné prerušenie svojmu CPU.

Mnoho jednoprocesorových systémov v súčasnosti obsahuje čip I / O APIC, ktorý je možné konfigurovať dvoma spôsobmi:

1. Štandardne 8259A PIC prepojený s CPU. Lokálne APIC je vypnuté a dve linky LINT0 a LINT1 sú nakonfigurované ako piny INTR a NMI.

2. Štandardne ako externý I / O APIC. Lokálny APIC je povolený a všetky externé prerušenia sú prijímané prostredníctvom I / O APIC.

  • Alieva Elena Viktorovna, študent
  • Štátna letecká technická univerzita v Ufe
  • OVLÁDAČ PRERUŠENÍ
  • OVLÁDAČ
  • HARDWAROVÉ PRERUŠENIA
  • PRERUŠIŤ

Prerušenie znamená dočasné prerušenie hlavného výpočtového procesu za účelom vykonania niektorých plánovaných alebo neplánovaných akcií spôsobených prevádzkou hardvéru alebo programu. Mechanizmus prerušenia je podporovaný na hardvérovej úrovni. Hardvérové ​​prerušenia vznikajú ako reakcia mikroprocesora na fyzický signál z nejakého zariadenia (klávesnica, systémové hodiny, klávesnica, HDD atď.), tieto prerušenia sú asynchrónne podľa času výskytu, t.j. vyskytujú v náhodných časoch. Radič prerušenia je určený na spracovanie a rozhodovanie prichádzajúcich požiadaviek na službu centrálna procesorová jednotka z periférnych zariadení. Prerušenia majú určitú prioritu, čo umožňuje, aby ich kontrolér prerušenia uprednostnil tento momentčas na jedno zariadenie, na iné nie. V modernom počítači existuje až 16 externých a periférnych zariadení, ktoré generujú prerušenia.

  • Automatizácia toku dokumentov v sklade výrobného podniku
  • Hovory-technológie, funkcie, aplikácia a efektivita
  • Vývoj modelu informačného systému právneho oddelenia na podporu a uzatváranie zmlúv podniku

Úvod

Prerušenie znamená dočasné prerušenie hlavného výpočtového procesu za účelom vykonania niektorých plánovaných alebo neplánovaných akcií spôsobených prevádzkou hardvéru alebo programu. Títo. je to proces, ktorý dočasne prepne mikroprocesor na vykonanie iného programu a potom sa vráti k prerušenému programu. Stlačením klávesu na klávesnici zahájime okamžité volanie programu, ktorý kláves rozpozná, napíše jeho kód do vyrovnávacej pamäte klávesnice, z ktorej ho číta iný program. Títo. mikroprocesor na chvíľu preruší výkon aktuálny program a prepne sa na obslužný program prerušenia, takzvaný obslužný program prerušenia. Potom, čo obsluha prerušenia dokončí svoju prácu, prerušený program obnoví spustenie od bodu, v ktorom bol pozastavený. Adresa obsluhy prerušenia sa vypočíta z vektorovej tabuľky prerušenia.

Mechanizmus prerušenia je podporovaný na hardvérovej úrovni. V závislosti od zdroja sú prerušenia rozdelené na:

  • hardvér- vznikajú ako reakcia mikroprocesora na fyzický signál z nejakého zariadenia (klávesnica, systémové hodiny, klávesnica, pevný disk atď.), tieto prerušenia sú v čase výskytu asynchrónne, t.j. vyskytujú sa v náhodných časoch;
  • programový- sú umelo vyvolané pomocou zodpovedajúceho príkazu z programu (int), sú určené na vykonávanie niektorých akcií operačného systému, sú synchrónne;
  • výnimky- sú reakciou mikroprocesora na neštandardnú situáciu, ktorá vznikla vo vnútri mikroprocesora pri vykonávaní určitého príkazu programu (delenie nulou, prerušenie príznakom TF (trasa)).

Prerušiť hardvér systému

Systém prerušenia je súbor softvéru a hardvéru, ktorý implementuje mechanizmus prerušenia.

Hardvér systému prerušenia zahŕňa:

  • výstupy mikroprocesora - generujú sa na nich signály, ktoré upozorňujú mikroprocesor buď na to, že niektoré externé zariadenie „žiada o pozornosť“ (INTR), alebo je potrebné naliehavé spracovanie nejakej udalosti alebo katastrofickej chyby (NMI)
  • INTR - kolík pre vstupný signál žiadosti o prerušenie,
  • NMI - pin pre vstupný signál nemaskovateľného prerušenia
  • INTA - výstup pre výstupný signál potvrdenia prijatia signálu prerušenia mikroprocesorom (tento signál je privádzaný na vstup s rovnakým názvom mikroobvodu regulátora 8259A;
  • 8259A programovateľný radič prerušenia (určený na opravu signálov prerušenia z ôsmich rôznych externých zariadení; je vyrobený vo forme mikroobvodu; Obvykle sa používajú dva sériovo zapojené mikroobvody, takže číslo možné zdroje externé prerušenia až 15 plus jedno nemaskovateľné prerušenie; je to on, kto tvorí číslo vektora prerušenia a vydáva jeho dátovú zbernicu);
  • externé zariadenia (časovač, klávesnica, magnetické disky atď.)

Prerušiť manipuláciu

Prerušenie spustí sériu udalostí, ktoré sa vyskytnú v hardvéri aj softvér... Na obr. 1 ukazuje typický sled týchto udalostí.

Po dokončení vstupno-výstupného zariadenia nastane toto:

  • Zariadenie vyšle do procesora signál prerušenia.
  • Pred reakciou na prerušenie musí procesor dokončiť vykonanie aktuálneho príkazu (pozri obr. 1).
  • Procesor skontroluje prítomnosť prerušenia, deteguje ho a odošle zariadeniu, ktoré toto prerušenie vyslalo, pričom upozorní signál na úspešný príjem. Tento signál umožňuje zariadeniu vymazať signál prerušenia.
Obrázok 1. Časovanie programu: Pomalé I / O

Teraz sa procesor musí pripraviť na prenos riadenia do obsluhy prerušenia. Najprv musíte uložiť všetky dôležitá informácia, aby ste sa neskôr mohli vrátiť na miesto aktuálneho programu, kde bol pozastavený. Minimálne požadované informácie sú stavové slovo programu a adresa nasledujúceho vykonaného príkazu, ktorý sa nachádza v počítadle programu. Tieto údaje sú vložené do zásobníka riadenia systému.

Obrázok 2. Obsluha jednoduchého prerušenia

Ďalej je adresa vstupu obsluhy prerušenia, ktorá je zodpovedná za spracovanie tohto prerušenia, načítaná do programového počítadla procesora. V závislosti od architektúry počítača a zariadenia operačného systému môže existovať buď jeden program na spracovanie všetkých prerušení, alebo môže existovať vlastný program spracovania pre každé zariadenie a každý typ prerušenia. Ak je k dispozícii viacero programov na spracovanie prerušení, procesor musí určiť, ku ktorému z nich má pristupovať. Tieto informácie môžu byť obsiahnuté v pôvodnom signáli prerušenia; inak, aby procesor získal potrebné informácie, musí postupne preskúmať všetky zariadenia, aby zistil, ktoré odoslalo prerušenie.

Akonáhle je do programového počítadla načítaná nová hodnota, procesor prejde na ďalší cyklus inštrukcií a začne ju získavať z pamäte. Pretože príkaz je načítaný z bunky, ktorej počet je nastavený obsahom počítadla programov, riadenie prejde do rutiny prerušenia. Realizácia tohto programu zahŕňa nasledujúce operácie.

Obsah počítadla programu a stavové slovo prerušovaného programu je už uložené v systémovom zásobníku. To však nie sú všetky informácie týkajúce sa stavu spustiteľného programu. Napríklad musíte uložiť obsah registrov procesora, pretože tieto registre môže potrebovať obsluha prerušenia. Preto je potrebné uložiť všetky informácie o stave programu. Obsluha prerušení zvyčajne začína zápisom obsahu všetkých registrov do zásobníka. Ďalšie informácie, ktoré by sa mali uchovávať, sú uvedené v kapitole 3 „Popis a riadenie procesov“. Na obr. je ukázaný jednoduchý príklad, v ktorom je užívateľský program prerušený po vykonaní inštrukcie z bunky N. Obsah všetkých registrov, ako aj adresa nasledujúcej inštrukcie (N + 1), celkom, tvoriacich M slov, sú zatlačené na stoh. Ukazovateľ zásobníka sa potom aktualizuje tak, aby ukazoval na nový vrchol zásobníka. Aktualizuje sa aj počítadlo programov, aby indikovalo začiatok rutiny prerušenia.

Obsluha prerušení môže teraz začať svoju prácu. Manipulácia s prerušením zahŕňa kontrolu stavových informácií týkajúcich sa operácií I / O alebo iných udalostí, ktoré spustili prerušenie. Môže to zahŕňať aj odosielanie dodatočných pokynov alebo oznamovacích správ na vstupno-výstupné zariadenia.

Po dokončení spracovania prerušenia sa zo zásobníka vyberú predtým uložené hodnoty, ktoré sa znova vložia do registrov, čím sa obnoví stav, v ktorom boli pred prerušením.

Posledným krokom je obnovenie programového stavového slova a obsahu programového počítadla zo zásobníka. Výsledkom bude, že príkaz prerušeného programu bude vykonaný ďalej.

Vzhľadom na skutočnosť, že prerušenie nie je podprogram volaný z programu, je dôležité pre úplné obnovenie zachovať všetky informácie o stave prerušeného programu. Prerušenie však môže nastať kedykoľvek a kdekoľvek v užívateľskom programe. Táto udalosť je nepredvídateľná.

Ovládač prerušenia

Radič prerušení je navrhnutý tak, aby spracovával a rozhodoval prichádzajúce servisné požiadavky do centrálneho procesora z periférnych zariadení. Funkciu ovládača prerušenia je možné analogicky porovnať s tajomníkom nejakého šéfa. Sekretárka musí rozhodnúť, koho z návštevníkov prijme šéfovi ako prvému a koho neskôr, na základe priorít daných šéfom a postavenia samotného návštevníka. Podobne v počítačovom systéme je možné, že niekoľko periférnych zariadení vyšle signál prerušenia alebo požiadavku na prerušenie. V počítačovej literatúre je tento signál označovaný ako IRQ (Interrupt Request).

Ako už bolo spomenuté vyššie, prerušenia majú určitú prioritu, čo umožňuje radičom prerušení uprednostniť v danom čase jedno zariadenie pred iným. V modernom počítači je až 16 externých a periférne zariadenia generovanie prerušení. Tieto zariadenia sú:
–IRQ 0, systémový časovač; –IRQ 1, klávesnica; –IRQ 2, používa sa na dopytovanie zariadení pripojených v kaskáde; –IRQ 8, hodiny reálneho času; –IRQ 9, vyhradené; –IRQ 10, vyhradené; –IRQ 11, vyhradené; –IRQ 12, ps / 2 - myš; –IRQ 13, koprocesor; –IRQ 14, radič pevného disku; –IRQ 15, vyhradené; –IRQ 3, porty COM2, COM4; –IRQ 4, porty COM1, COM3; –IRQ 5, port LPT2; –IRQ 6, ovládač disketovej mechaniky; –IRQ 7, port LPT1, tlačiareň.

Tu sú signály zoradené zostupne podľa priority. Môžete vidieť, že po IRQ 2, nasledovanom IRQ 8. Faktom je, že v jednom čase regulátor prerušenia pozostával z dvoch mikroobvodov, jeden bol spojený s druhým. Tento druhý mikroobvod je spojený s linkou IRQ 2 a tvorí kaskádu. Obsluhuje linky IRQ8 - IRQ 15. A potom nasledujú čiary prvého mikroobvodu.

Prerušiť činnosť ovládača

Ovládače prerušenia považované za čipové Intel 8259A, ktoré sa používali v dnes už veľmi starých počítačoch s procesormi až do série 386. Tieto počítače mali zvyčajne 2 8259A čipy zapojené kaskádovo, teda jeden k druhému. Jeden z mikroobvodov pripojených cez linku požiadavky na prerušenie priamo k procesoru je master alebo master. Ostatné, spojené s pánom prostredníctvom podobných pinov, sa nazývajú otroci.


Obrázok 3. Schéma zapojenia radičov prerušení a ich interakcia s centrálnym procesorom

Obrázok 3 zobrazuje schému zapojenia radičov prerušenia a ich interakciu s centrálnym procesorom. Signály prerušenia z periférnych zariadení alebo podriadených ovládačov sa posielajú na vstupy IR0 – IR7 nadradeného ovládača. Vnútorná logika hlavného kontroléra spracováva prichádzajúce požiadavky z hľadiska priority. Ak je priorita požiadavky zariadenia dostatočná, potom INT výstup regulátora generuje signál na vstup INTR procesora. V opačnom prípade je žiadosť zablokovaná.

Ak procesor umožňuje prerušenia, potom po dokončení vykonania aktuálneho príkazu vygeneruje sekvenciu signálov na linke INTA, vďaka ktorej je podriadený ovládač odolný voči prichádzajúcim novým požiadavkám na prerušenie a navyše informácii z vnútorných registrov ovládača je vyvedený na dátovú linku z interných registrov radiča, pomocou ktorého procesor rozpozná typ prerušenia.

Procesor prenáša povolenie na prerušenie na radič prerušenia prostredníctvom radiča zbernice. Signál RD je určený pre radič prerušenia na umiestnenie obsahu vnútorných registrov na dátovú zbernicu. Na signáli WR naopak radič prerušenia prijíma údaje z rovnomennej zbernice a zapisuje ich do vnútorných registrov. V súlade s tým to ovplyvňuje režim činnosti ovládača prerušenia.

Vstup CS je pripojený k adresovej zbernici a tento signál sa používa na identifikáciu konkrétneho radiča prerušenia. Vstup A0 ukazuje na port radiča prerušenia v I/O priestore.

Vstupy IR0 - IR7 sú navrhnuté tak, aby prijímali požiadavky na prerušenie z periférnych zariadení a podradených ovládačov.

Výstupy CAS0 - CAS2 sú navrhnuté tak, aby identifikovali konkrétny podradený regulátor.

Článok sa zaoberá hardvérovými prerušeniami a zariadenie, funkcie, činnosť ovládača prerušenia. Tento ovládač prerušenia sa objavili v prvých počítačoch kompatibilných s PC. Odvtedy sa procesory aj samotný počítač veľa zmenili, aj keď niektoré body zostali. Preto, aby bolo jasnejšie, bola zvážená organizácia radiča prerušenia 8295A.

Vyššie uvedený diagram ukazuje signály prichádzajúce nielen do podriadeného a nadradeného ovládača prerušenia, ale aj do ostatných podriadených. Váš počítač alebo prenosný počítač však má v skutočnosti 2 ovládače prerušenia, ako je uvedené vyššie: master a slave. Môžete si však vytvoriť svoj vlastný počítačové systémy teda používa až 64 podradených regulátorov prerušenia.

V moderných počítačoch už dlho prerušiť funkcie ovládača Nevykonávajú sa mikroobvody 8259A, ale južný mostík. Pri všetkých programoch a zariadeniach však všetko zostáva rovnaké. Radič prerušenia je navyše programovateľný a k vnútorným registrom a portom je potrebné pristupovať rovnakým spôsobom ako k radiču 8259A.

Záver

V tomto príspevku boli zvážené prerušenia, a to hardvérové ​​spracovanie prerušenia a princíp spracovania prerušenia. Tiež sa považujú za regulátory prerušenia a ich princíp činnosti.

Prerušenie znamená dočasné prerušenie hlavného výpočtového procesu za účelom vykonania niektorých plánovaných alebo neplánovaných akcií spôsobených prevádzkou hardvéru alebo programu. Mechanizmus prerušenia je podporovaný na hardvérovej úrovni. Hardvérové ​​prerušenia vznikajú ako reakcia mikroprocesora na fyzický signál zo zariadenia (klávesnica, systémové hodiny, klávesnica, pevný disk atď.); Tieto prerušenia sú v čase výskytu asynchrónne, t.j. sa vyskytujú v náhodných časoch.

Ovládač prerušenia navrhnuté na spracovanie a arbitrážovanie prichádzajúcich servisných požiadaviek do centrálneho procesora z periférnych zariadení. Prerušenia majú určitú prioritu, čo umožňuje ovládač prerušenia uprednostniť v danom čase jedno zariadenie pred druhým. V modernom počítači je až 16 externých a periférnych zariadení, ktoré generujú prerušenia.

Bibliografia

  1. Prednáška. Preruší. E -mail Zdroj. http://hromatron.narod.ru/_lekcii/prerivania_lekcia_g2013.htm
  2. Systémové prerušenia | Hardvérové ​​prerušenie | Riešenie prerušenia http://life-prog.ru/view_os.php?id=16
  3. Ovládač prerušenia. E -mail Zdroj http://sdelaycomputersam.ru/Controller_irq.php,
  4. Preruší. Ovládač prerušenia. Zariadenie, funkcie, práca. E -mail Zdroj http://sdelaycomputersam.ru/Controller_irq.php
  5. Štruktúra a inicializácia E-zdroja radiča prerušenia Intel 8259A https://dev64.wordpress.com/2012/05/30/8259-programming/
Je dobré, keď sa počítač po montáži alebo plánovanej modernizácii naštartuje a beží stabilne a bez chýb prvýkrát. Oveľa horšie je, ak sa objavia nečakané problémy – samovoľné reštarty a zamrznutia, pády programu, nefunkčnosť či „neviditeľnosť“ zariadení a pod. Prvým dôvodom, ktorý vám v tomto prípade zvyčajne príde na myseľ, je konflikt prerušenia. Poznáme dobre povahu tohto javu, sme dostatočne pripravení s ním bojovať?

Čo je IRQ
Prerušenia sú základným mechanizmom reakcie systému na vznikajúce udalosti. Hardvérové ​​prerušenia, zvyčajne nazývané IRQ (Interrupt ReQuest), sú fyzické signály, pomocou ktorého ovládač zariadenia informuje procesor o potrebe spracovať nejakú požiadavku. Schéma spracovania prerušenia obvykle vyzerá takto:
1) procesor prijme signál prerušenia a jeho číslo;
2) špeciálna tabuľka sa používa na nájdenie adresy programu zodpovedného za spracovanie prerušenia s daným číslom - obsluha prerušenia;
3) procesor sa pozastaví aktuálna práca a prepne na vykonanie psovoda (vo všeobecnom prípade ide o nejaký druh vodiča);
4) vodič získa prístup k zariadeniu a skontroluje príčinu prerušenia;
5) spustia sa požadované akcie - inicializácia, konfigurácia zariadenia, výmena dát atď.
6) ovládač skončí a procesor sa vráti k prerušenej úlohe.
Je zrejmé, že na to, aby mechanizmus prerušenia fungoval správne, musia byť splnené dve podmienky: po prvé, signál požiadavky sa musí dostať k procesoru a po druhé, ovládač psovoda musí na tento signál správne reagovať. V prípade konfliktu nie je splnená druhá podmienka: príde signál prerušenia, ale reakcia na neho sa ukáže ako nesprávna, v dôsledku čoho máme (prinajlepšom) nefunkčné zariadenie.

Konflikt
Môžeme povedať, že konflikt je situácia, v ktorej sa niekoľko objektov súčasne pokúša o prístup k zdroju, ktorý je určený len pre jeden z nich. K sporu o prerušenie dochádza vtedy, keď viacero zariadení používa na odoslanie signálu požiadavky rovnakú linku prerušenia a neexistuje žiadny mechanizmus na spracovanie súbežných požiadaviek. Ak ovládač, ktorý dostáva kontrolu, nepracuje so zariadením, ktoré odoslalo požiadavku, buď dôjde k poruche, alebo jedno zo zariadení jednoducho nefunguje.
Vynára sa otázka: môže niekoľko zariadení používať rovnakú prerušovaciu linku, alebo je to v zásade nemožné? Koniec koncov, ak je vodič schopný určiť, od koho presne požiadavka prišla, potom bude reagovať na signály iba „svojho“ zariadenia, pričom ignoruje všetky ostatné. Ale to musí byť vopred nejakým spôsobom dohodnuté, inak je konflikt nevyhnutný.
Miestna zbernica PCI bola navrhnutá s ohľadom na zdieľanie prerušení. Každé zariadenie PCI musí správne fungovať na rovnakej prerušovacej linke s ostatnými zariadeniami PCI. To sa deje nasledujúcim spôsobom: skutočnosť o prítomnosti signálu na linke prerušenia nie je určená okrajom, t.j. zmenou úrovne napätia, ale samotnou skutočnosťou prítomnosti určitého napätia. Niekoľko zariadení môže zmeniť napätie v linke naraz, čím sa stane, ako keby, vo fronte na obsluhu.
Zdieľanie rovnakého IRQ medzi viacerými zariadeniami PCI teda nie je podľa definície konfliktom. Niekedy však nastanú problémy. Po prvé, nie všetky zariadenia PCI pracujú správne na tej istej linke prerušenia ako ostatné. Za druhé, niekedy majú vodiči chyby, kvôli ktorým nevedia správne určiť zdroj signálu a zasahujú do iných ovládačov. Po tretie, nie všetky zariadenia fungujú na zbernici PCI; napríklad zariadenia ISA, medzi ktoré patria napríklad radiče portov COM / LPT, nemôžu zdieľať prerušenia s inými. Aby vám bolo jasné, ako sa môžete vyhnúť konfliktom alebo ich vyriešiť, musíte pochopiť, ako sa spravujú IRQ.

Organizácia hardvérových prerušení v osobnom počítači
Ako vieš, osobné počítače začal s IBM PC. Jeho architektúra zahŕňala osem liniek hardvérového prerušenia (IRQ), ktoré boli riadené špeciálnym radičom. Každému z nich bolo priradené číslo, ktoré určovalo prioritu prerušenia a adresu jeho obsluhy (takzvaný vektor prerušenia). Nová architektúra, IBM PC AT, poskytla ďalších osem liniek prerušenia, pre ktoré bol použitý druhý radič, pripojený k jednému z liniek prerušenia prvého radiča. Žiaľ, táto architektúra bola poslednou po tom, čo IBM stratilo schopnosť riadiť vývoj platformy, ktorú vytvorila, takže všetky moderné počítače majú stále len šestnásť prerušení, z ktorých jedno využíva druhý radič.
Počítač IBM PC AT mal iba jednu zbernicu, cez ktorú mohli zariadenia komunikovať s procesorom a pamäťou - ISA. Väčšina prerušovacích vedení bola priradená k štandardným zariadeniam ISA, zvyšok bol vyhradený pre budúcnosť. Keď prišla táto budúcnosť, ukázalo sa, že nová univerzálny autobus PCI dostalo iba štyri bezplatné prerušenia. Preto bol vynájdený šikovný mechanizmus zdieľania prerušení (IRQ Sharing) a dynamického predefinovania čísel (IRQ Steering alebo Mapping).
Podstata mechanizmu riadenia prerušenia zariadenia PCI je nasledovná. Vo všeobecnosti existujú štyri fyzické linky prerušenia PCI nazývané PIRQ0, PIRQ1, PIRQ2 a PIRQ3. Sú pripojené k ovládaču prerušenia. Zdá sa, že každé PCI zariadenie má štyri konektory, nazývané INT A, INT B, INT C a INT D. Linky môžete pripojiť ku konektorom v ľubovoľnom poradí. Napríklad pre prvý slot PCI môžete vytvoriť nasledujúce zapojenie: PIRQ0 - INT A, PIRQ1 - INT B, PIRQ2 - INT C, PIRQ3 - INT D. A pre druhý - iným spôsobom: PIRQ0 - INT B , PIRQ1 - INT C, PIRQ2 - INT D, PIRQ3 - INT A. Zariadenie spravidla vyžaduje iba jednu prerušovaciu linku pripojenú k INT A. Keď je zariadenie nainštalované v prvom slote, používa linku PIRQ0 a druhý slot bude mať Linka PIRQ1 na rovnakom kolíku. Zariadenia v rôznych slotoch teda budú používať rôzne linky fyzického prerušenia. Hardvérový konflikt medzi nimi bude odstránený.
Zbernica AGP, ktorá je v skutočnosti špecializovanou modifikáciou PCI, tiež používa jednu z liniek PIRQ - zvyčajne PIRQ0.
Moderným systémom štyri riadky nestačia, preto nové čipové sady často používajú osem liniek PIRQ, ktoré sú rovnakým spôsobom v rôznych kombináciách zapojené do slotov PCI a zariadení zabudovaných v doske.
Vedenia PIRQ sú pripojené k regulátoru prerušenia. Rovnako ako ostatné riadky majú priradené logické čísla IRQ. Ak je na tej istej fyzickej linke niekoľko zariadení (a to je prípustné), všetky budú mať rovnaké číslo IRQ. Ak sú zariadenia na rôznych fyzických linkách, stále môžu prijímať rovnaké čísla IRQ. Normálne ovládače im umožnia voľný chod bez obetovania výkonu, keďže zbernicu PCI stále dokáže zachytiť iba jedno zariadenie. Hlavnou vecou je rozpoznať, z ktorého zariadenia prišiel signál.
Čísla liniek PIRQ sa priraďujú automaticky vďaka notoricky známemu mechanizmu Plug & Play. Existujú však aj zariadenia ISA Plug & Play. Majú tiež možnosť automaticky získať číslo IRQ. Ale ich linka prerušenia patrí výlučne im a ak jedna z liniek PIRQ dostane rovnaké číslo, dôjde k neriešiteľnému konfliktu.
Takže sme prišli na to, že zariadenia PCI by nemali mať problémy s konfliktom IRQ. Ak, samozrejme, fungujú správne, a nie vždy to tak je. Ovládače musia navyše podporovať mechanizmus zdieľania prerušenia. Zariadenia ISA nevedia, ako zdieľať prerušovacie linky, a preto sú provokatérmi konfliktov. V dôsledku toho sa problém eliminácie konfliktov redukuje na správne priradenie čísel (zdrojom problémov sú zariadenia ISA a „krivé“ ovládače) alebo na oddelenie pozdĺž rôznych fyzických liniek („krivé“ radiče PCI).
Pozrime sa, ako sú čísla v systéme alokované a ako môžeme tento proces ovplyvniť.

Prerušiť mapu
Ako som povedal, väčšina IRQ čísel je už prevzatá štandardnými zariadeniami, alebo skôr priradená ich prerušovacím linkám. Prejdeme si poradie:
0 - systémový časovač (číslo je vždy obsadené);
1 - klávesnica (číslo je vždy obsadené);
2 - druhý ovládač prerušenia (vždy zaneprázdnený);
3 - port COM2 (môže byť deaktivovaný a číslo môže byť uvoľnené);
4 - port COM1 (môže byť deaktivovaný a číslo môže byť uvoľnené);
5 - port LPT2 (zvyčajne je číslo voľné);
6 - radič diskety (možno deaktivovať a uvoľniť číslo);
7 - port LPT1 (ak nie je v režime EPP alebo ECP, potom je číslo voľné);
8 - hodiny reálneho času (vždy zaneprázdnené);
9 - zadarmo;
10 - zadarmo;
11 - zadarmo;
12 - myš PS / 2 (môže byť zadarmo, ak taká myš neexistuje);
13 - koprocesor (vždy zaneprázdnený);
14 a 15 - ovládač pevné disky(dá sa deaktivovať a číslo je prázdne).
V typickom systéme sú k dispozícii čísla 5, 7, 9–11, to znamená päť z pätnástich. Okrem toho môžete bezpečne deaktivovať porty COM2 a LPT1, čím sa počet voľných čísel zvýši na sedem. Zadarmo neznamená, že nie sú zaneprázdnení, je to len to, že je medzi nimi možné bezplatné miešanie.
Každý systém má tri štandardné PCI zariadenia - ACPI, USB radiče a grafickú kartu, z ktorých každé bude mať jedno číslo. Zložité zariadenie (napr. zvuková karta) môže vyžadovať niekoľko riadkov - INT A, INT B atď. pre ich komponenty, ktoré nebudú v konflikte medzi sebou (veď rôzne fyzické linky), ale s inými zariadeniami - ľahko.
Môžete zistiť, ako sú čísla prerušenia v súčasnosti priradené niekoľkými spôsobmi. Na úplnom začiatku spustenia počítača sa zobrazí textová konfiguračná tabuľka. Hneď za ním je zoznam zariadení PCI s priradeným číslom IRQ (pozri snímku obrazovky). Ďalší spôsob funguje v systéme Windows 9x. Na ovládacom paneli je ikona „Systém“ a v takzvanom aplete karta „Zariadenia“. Vyberieme vlastnosti zariadenia „Počítač“ a budú tam uvedené všetky zariadenia s uvedením ich IRQ (pozri snímku obrazovky).
V systéme Windows 2000 nemáme prístup k správe prerušenia, takže na zobrazenie zoznamu IRQ musíme použiť štandardný informačný nástroj (Ovládací panel / Nástroje pre správu / Správa počítača / Informácie o systéme / Zdroje hardvéru).

Priradenie BIOS IRQ
V systéme sú čísla IRQ alokované medzi fyzické linky dvakrát. Prvýkrát to vykoná systém BIOS pri zavádzaní systému. Každému zariadeniu Plug & Play (všetky PCI, moderné ISA, integrované zariadenia), alebo skôr jeho prerušovacej linke, je priradené jedno z desiatich možných čísel. Ak nie je dostatok čísel, niekoľko riadkov dostane jeden spoločný. Ak ide o linky PIRQ, potom je to v poriadku - za prítomnosti bežných ovládačov a podpory operačného systému (ďalšie informácie nájdete nižšie) bude všetko fungovať. A ak niekoľko zariadení ISA alebo zariadení PCI a ISA dostane rovnaký počet, potom je konflikt jednoducho nevyhnutný a potom je potrebné zasiahnuť do procesu distribúcie.
V prvom rade musíte vypnúť všetky nepoužívané zariadenia ISA (v systémoch bez slotov ISA sú tiež k dispozícii) - porty COM1, COM2 a disketovú mechaniku. Môžete tiež vypnúť režimy EPP a ECP portu LPT, potom bude k dispozícii prerušenie IRQ7.
V. Nastavenie systému BIOS potrebujeme časť „Konfigurácia PCI / PNP“. Existujú dva základné spôsoby, ako ovplyvniť prideľovanie čísel IRQ: zablokovať konkrétne číslo a priamo priradiť číslo linky PIRQ.
Prvá metóda je k dispozícii pre všetky systémy BIOS: vyhľadajte zoznam položiek „IRQ x používa:“ (v nový BIOS skryté v podponuke „Zdroje IRQ“). Prerušenia, ktoré by mali byť priradené výlučne zariadeniam ISA, by mali byť nastavené na „Starý ISA“. Pri priradení čísel zariadeniam PCI sa teda tieto prerušenia preskočia. To by sa malo urobiť, ak zariadenie ISA pretrváva v jednom prerušení so zariadením PCI, z ktorého obe nefungujú. Potom nájdeme číslo tohto IRQ a zablokujeme ho v BIOS Setup. Zariadenie PCI ide do nové číslo IRQ, ale zariadenie ISA zostáva. Konflikt vyriešený.
Druhým, pohodlnejším spôsobom ovládania čísel IRQ je priame priradenie. V tej istej podponuke Nastavenie systému BIOS môžu existovať položky vo formáte „Slot X use IRQ“ (iné názvy: „PIRQx use IRQ“, „PCI Slot x priority“, „INT Pin x IRQ“).
S ich pomocou môže byť každému zo štyroch riadkov PIRQ priradené konkrétne číslo. Mimochodom, v novom AwardBIOS 6.00 môžete presne vidieť, ktoré zariadenia (vrátane vstavaných) používajú ten či onen riadok. Len sa pozrite pravá strana Obrazovka nastavenia systému BIOS: fotografia ukazuje, ako som umiestnil kurzor na položku „Slot 1/5 použiť číslo IRQ“ a napravo sa objavil nápis „Kontr. To znamená, že grafická karta používa prvý riadok PIRQ. Ak teraz vložím nejaké konkrétne číslo namiesto "Auto", grafická karta sa prepne na toto prerušenie.

Pridelenie čísel IRQ Nástroje systému Windows
Druhýkrát sú čísla prerušenia pridelené operačný systém... Ako ukázali moje experimenty, Windows „98 začína zasahovať do akcií vykonávaných systémom BIOS“ ohm iba v extrémnych prípadoch. Ak máte normálny BIOS, tu opísané techniky nie sú potrebné.
Je potrebné poznamenať, že správna činnosť mechanizmov zdieľania a dynamického prideľovania IRQ vyžaduje, aby systém Windows rozpoznal čipovú sadu. základná doska a stiahli si miniport IRQ. Čím novšiu verziu Windows má, tým viac čipsetov podporuje svoj vlastný miniport (PCIIMP.PCI). Vždy je však najlepšie hrať bezpečne a nainštalovať najnovšie ovládače čipovej sady.
Vo Windows 98 je systém prideľovania IRQ riadený štandardným správcom zariadení. V zozname systémové zariadenia musíte nájsť zbernicu PCI. V jeho vlastnostiach je špeciálna karta (pozri snímku obrazovky). Ak je všetko správne nakonfigurované, bude tam uvedený miniport („úspešne načítané“) a ovládací prvok Zbernica PCI(Riadenie) bude povolené. Windows "98 má teda prostriedky na riadenie distribúcie čísel prerušení medzi fyzické linky. Pretože sa však BIOS s týmto často dobre vyrovnáva, tento mechanizmus nie je zapojený.
Ale niekedy je to jednoducho nevyhnutné. Ako som už povedal, zariadenia PCI by nemali byť v konflikte, ak používajú rovnaké logické prerušenie. Ďalšou vecou sú zariadenia ISA, ktoré tiež obsahujú porty COM a LPT. Ak zariadenie nepodporuje technológiu Plug & Play, systém BIOS si to nemusí všimnúť tým, že preruší, ktorým je zaneprázdnený, zariadeniu PCI. Potom si musíte rezervovať prerušenie. To sa deje v dispečeri Zariadenia so systémom Windows„98: vyberte zariadenie„ Počítač “, zavolajte jeho vlastnosti, prepnite na druhú kartu. Potom je všetko jasné.
Okrem redundancie môžete priamo nastaviť číslo prerušenia pre zariadenie. Ak to chcete urobiť, musíte v jeho vlastnostiach nájsť kartu "Zdroje", zakázať automatické ladenie a pokúste sa zmeniť priradené číslo prerušenia.
Bohužiaľ, nie vždy to funguje.
Windows 2000 je špeciálny systém. Ak máte moderný počítač potom pravdepodobne podporuje konfiguračné rozhranie ACPI. V tomto prípade bude systém Windows 2000 úplne ignorovať akcie systému BIOS a „zavesí“ všetky zariadenia PCI na jedno logické prerušenie. Vo všeobecnosti to bude fungovať dobre (keď neexistuje ISA), ale niekedy sa vyskytnú problémy. Aby ste mohli zmeniť čísla prerušení, musíte buď zmeniť jadro HAL, alebo preinštalovať Windows 2000 s deaktivovaným ACPI v systéme BIOS. Výmena jadra sa vykonáva nasledovne: v správcovi zariadení vyberte „Počítač“ / „Počítač s ACPI“, zmeňte ovládač na „ Štandardný počítač", reštartujte. Ak to nepomôže, budete musieť systém Windows 2000 znova nainštalovať.
Dúfam, že vám uvedené informácie pomôžu v boji proti problémom s hardvérom. A pamätajte: väčšina problémov, ktoré vznikajú, súvisí s nízky level počítačová gramotnosť hostiteľ počítača. Preto sa musíte vždy snažiť o samovzdelávanie, potom bude problémov menej a tie, ktoré vzniknú, sa nebudú zdať neriešiteľné.

Pravdepodobne najčastejší konflikt prerušenia (IRQ) je spojený s moderným sériovým portom COM2 základné dosky, a interný modem (čo znamená plnohodnotný interný počítačový modem, nie softvérový modem, nazývaný tiež WinModem). Faktom je, že plnohodnotný interný modem už má podporu pre určitý port; štandardne je tento port priradený COM2, pričom systém zvyčajne povoľuje aj druhý sériový port. Systém má teda dva identické porty využívajúce rovnaké zdroje (prerušenia a adresy portov I / O).

Riešenie tohto problému je pomerne jednoduché: vstúpte do nastavenia systému BIOS a vypnite vstavaný port COM2. Okrem toho môžete zvážiť vypnutie portu COM1, ktorý sa tiež používa zriedka. Zakázanie nepoužívaných portov COMx je jedným z lepšie spôsoby uvoľnite prerušenia (IRQ) pre iné zariadenia.

Ďalší bežný konflikt je so sériovými portami. V štandardnej tabuľke mapovania prerušení ste si mohli všimnúť, že IRQ3 je priradený ku COM2 a IRQ4 je priradený ku COM1. Problém nastáva, keď sú do systému pridané ďalšie porty COM3 a / alebo COM4 a nie sú k nim ručne priradené bezplatné prerušenia (štandardne používajú rovnaké IRQ3 a IRQ4).

Ďalšie komplikácie prináša skutočnosť, že niektoré portové karty neumožňujú výber iných prerušení ako IRQ3 a IRQ4. Výsledkom je, že priradenie IRQ3 ku COM4 a IRQ4 ku COM3 vedie ku konfliktu s COM1 a COM2, ktoré tiež používajú tieto prerušenia: dva porty nemôžu súčasne používať rovnaký riadiaci kanál prerušenia. Pri práci v DOSe to bolo dovolené, pretože v ňom bolo možné vykonávať iba jednu úlohu súčasne, ale vo Windows a OS / 2 je to úplne nemožné. Aby bolo možné v počítači používať viac ako dva paralelné porty COM, je potrebná viacportová doska, ktorá okrem prerušení s číslami 3 a 4 umožňuje použitie ďalších prerušení. Zdieľanie prerušení je v zásade prijateľné pre zariadenia, ktoré normálne nefungujú súčasne (alebo nepretržite). Porty nepatria do tejto kategórie zariadení. Prerušenie môžete použiť pre skener a modem spolu, ale v tomto prípade, ak sa použijú súčasne, dôjde ku konfliktu. Našťastie väčšina zariadení, ktoré predtým používali porty (napríklad myši, tlačiarne štítkov a externé modemy) sa teraz pripája k portom USB, takže sú problémy s potrebou podpory viacerých portov. moderných používateľov počítače by sa nemali zobrazovať.

Ak stále potrebujete používať viac sériových portov, najlepšie riešenie pôjde o nákup dosky s viacerými portami, ktorá buď poskytuje možnosť nastaviť nekonfliktné prerušenia, alebo obsahuje vlastný procesor, ktorý umožňuje distribúciu jedného prerušenia systému medzi niekoľko portov. Niektoré staršie multiportové karty mali rozhranie ISA, no dnes ich nahradili PCI karty, ktoré ponúkajú aj výkonnostné výhody.

Ak niektoré zo zariadení uvedených v tabuľke chýbajú (napríklad vstavaný port pre myš (IRQ12) alebo druhý paralelný port (IRQ5)), ich prerušenia možno považovať za dostupné. Napríklad druhý paralelný port je extrémne vzácny, takže priradené prerušenie IRQ5 sa najčastejšie používa pre kartu zvukového adaptéra. Podobne sa prerušenie IRQ15 používa pre sekundárny radič IDE. Ak v systéme nie sú k sekundárnemu kanálu IDE pripojené žiadne diskové zariadenia, môžete tento radič vypnúť v systéme BIOS, čím uvoľníte ďalšie prerušenie pre ostatné zariadenia.

Je potrebné poznamenať, že najľahšie je skontrolovať nastavenia prerušenia v Správcovi zariadení Windows. V systéme Windows 95b je program HWDIAG a v systéme Windows 98 a novších verziách neskoršie verzie- Informácie o systéme konzoly. Tieto nástroje vám umožňujú získať podrobnú správu o využití zdrojov v systéme, ako aj nainštalované ovládače zariadení a položky registra Windows pre každé zariadenie. V. systémy Windows V prípade systémov XP a Vista poskytuje systémové informácie program Msinfo32.

Ak chcete zabezpečiť čo najvyšší počet zdieľaných prerušení v modernom systéme bez konektorov ISA, pri práci so systémom BIOS postupujte podľa týchto krokov.

  1. Zakážte všetky nepoužívané porty v systéme BIOS. Napríklad, ak sa namiesto sériových a paralelných portov používajú USB porty, deaktivujte ich. V dôsledku toho je možné uvoľniť až tri prerušenia.
  2. Zadajte prerušenie IRQ uvoľnené v kroku 1 v zozname dostupných prerušení pre zariadenia PCI / PnP. Záležiac ​​na Verzia systému BIOS zodpovedajúce parametre sú k dispozícii v sekcii Vylúčenie zdrojov PnP / PCI alebo Konfigurácia PnP / PCI.
  3. Aktivovaním možnosti Obnoviť konfiguračné údaje vymažete smerovacie tabuľky IRQ v pamäti CMOS.
  4. Uložte zmeny a ukončite program nastavenia systému BIOS.

Je dobré, keď sa počítač po montáži alebo plánovanej modernizácii naštartuje a beží stabilne a bez chýb prvýkrát. Oveľa horšie je, ak sa objavia nečakané problémy – samovoľné reštarty a zamrznutia, pády programu, nefunkčnosť či „neviditeľnosť“ zariadení a pod. Prvým dôvodom, ktorý vám v tomto prípade zvyčajne príde na myseľ, je konflikt prerušenia. Poznáme dobre povahu tohto javu, sme dostatočne pripravení s ním bojovať?

Čo je IRQ


Prerušenia sú základným mechanizmom reakcie systému na vznikajúce udalosti. Hardvérové ​​prerušenia, zvyčajne nazývané IRQ (Interrupt ReQuest), sú fyzické signály, ktoré radič zariadenia používa na informovanie procesora o spracovaní nejakej požiadavky. Schéma spracovania prerušenia obvykle vyzerá takto:
1) procesor prijme signál prerušenia a jeho číslo;
2) špeciálna tabuľka sa používa na nájdenie adresy programu zodpovedného za spracovanie prerušenia s daným číslom - obsluha prerušenia;
3) procesor pozastaví aktuálnu prácu a prejde na vykonanie obsluhy (vo všeobecnom prípade je to nejaký druh ovládača);
4) vodič získa prístup k zariadeniu a skontroluje príčinu prerušenia;
5) spustia sa požadované akcie - inicializácia, konfigurácia zariadenia, výmena dát atď.
6) ovládač skončí a procesor sa vráti k prerušenej úlohe.
Je zrejmé, že pre správnu činnosť mechanizmu prerušenia musia byť splnené dve podmienky: po prvé, požiadavkový signál sa musí dostať k procesoru a po druhé, ovládač psovoda musí na tento signál správne reagovať. V prípade konfliktu nie je splnená druhá podmienka: príde signál prerušenia, ale reakcia na neho sa ukáže ako nesprávna, v dôsledku čoho máme (prinajlepšom) nefunkčné zariadenie.

Konflikt

Môžeme povedať, že konflikt je situácia, v ktorej sa niekoľko objektov súčasne pokúša o prístup k zdroju, ktorý je určený len pre jeden z nich. K sporu o prerušenie dochádza vtedy, keď viacero zariadení používa na odoslanie signálu požiadavky rovnakú linku prerušenia a neexistuje žiadny mechanizmus na spracovanie súbežných požiadaviek. Ak ovládač, ktorý dostáva kontrolu, nepracuje so zariadením, ktoré odoslalo požiadavku, buď dôjde k poruche, alebo jedno zo zariadení jednoducho nefunguje.
Vynára sa otázka: môže niekoľko zariadení používať rovnakú prerušovaciu linku, alebo je to v zásade nemožné? Koniec koncov, ak je vodič schopný určiť, od koho presne požiadavka prišla, potom bude reagovať na signály iba „svojho“ zariadenia, pričom ignoruje všetky ostatné. Ale to musí byť vopred nejakým spôsobom dohodnuté, inak je konflikt nevyhnutný.
Miestna zbernica PCI bola navrhnutá s ohľadom na zdieľanie prerušení. Každé zariadenie PCI musí správne fungovať na rovnakej prerušovacej linke s ostatnými zariadeniami PCI. To sa deje nasledujúcim spôsobom: skutočnosť o prítomnosti signálu na linke prerušenia nie je určená okrajom, t.j. zmenou úrovne napätia, ale samotnou skutočnosťou prítomnosti určitého napätia. Niekoľko zariadení môže zmeniť napätie v linke naraz, čím sa stane, ako keby, vo fronte na obsluhu.
Zdieľanie rovnakého IRQ medzi viacerými zariadeniami PCI teda nie je konfliktom podľa definície. Niekedy však nastanú problémy. Po prvé, nie všetky zariadenia PCI pracujú správne na tej istej linke prerušenia ako ostatné. Za druhé, niekedy majú vodiči chyby, kvôli ktorým nevedia správne určiť zdroj signálu a zasahujú do iných ovládačov. Po tretie, nie všetky zariadenia fungujú na zbernici PCI; napríklad zariadenia ISA, medzi ktoré patria napríklad radiče portov COM / LPT, nemôžu zdieľať prerušenia s inými. Aby vám bolo jasné, ako sa môžete vyhnúť konfliktom alebo ich vyriešiť, musíte pochopiť, ako sa spravujú IRQ.

Organizácia hardvérových prerušení v osobnom počítači


Ako viete, osobné počítače začali s počítačom IBM. Jeho architektúra obsahovala osem liniek hardvérového prerušenia (IRQ), ktoré boli riadené špeciálnym ovládačom. Každému z nich bolo priradené číslo, ktoré určovalo prioritu prerušenia a adresu jeho obsluhy (takzvaný vektor prerušenia). Nová architektúra, IBM PC AT, poskytla osem ďalších prerušovacích liniek, pre ktoré bol použitý druhý radič, pripojený k jednej z prerušovacích liniek prvého radiča. Žiaľ, táto architektúra bola poslednou po tom, čo IBM stratilo schopnosť riadiť vývoj platformy, ktorú vytvorila, takže všetky moderné počítače majú stále len šestnásť prerušení, z ktorých jedno využíva druhý radič.
Počítač IBM PC AT mal iba jednu zbernicu, po ktorej mohli zariadenia komunikovať s procesorom a pamäťou – ISA. Väčšina prerušovacích vedení bola priradená k štandardným zariadeniam ISA, zvyšok bol vyhradený pre budúcnosť. Keď prišla táto budúcnosť, ukázalo sa, že nová univerzálna PCI zbernica má len štyri voľné prerušenia. Preto bol vynájdený šikovný mechanizmus na zdieľanie prerušení (IRQ Sharing) a dynamické predefinovanie čísel (IRQ Steering alebo Mapping).
Podstata mechanizmu riadenia prerušenia zariadenia PCI je nasledovná. Vo všeobecnosti existujú štyri fyzické linky prerušenia PCI nazývané PIRQ0, PIRQ1, PIRQ2 a PIRQ3. Sú pripojené k ovládaču prerušenia. Zdá sa, že každé PCI zariadenie má štyri konektory, nazývané INT A, INT B, INT C a INT D. Linky môžete pripojiť ku konektorom v ľubovoľnom poradí. Napríklad pre prvý slot PCI môžete vytvoriť nasledujúce zapojenie: PIRQ0 - INT A, PIRQ1 - INT B, PIRQ2 - INT C, PIRQ3 - INT D. A pre druhý - iným spôsobom: PIRQ0 - INT B , PIRQ1 - INT C, PIRQ2 - INT D, PIRQ3 - INT A. Zariadenie spravidla vyžaduje iba jednu prerušovaciu linku pripojenú k INT A. Keď je zariadenie nainštalované v prvom slote, používa linku PIRQ0 a druhý slot bude mať Linka PIRQ1 na rovnakom kolíku. Zariadenia v rôznych slotoch teda budú používať rôzne linky fyzického prerušenia. Hardvérový konflikt medzi nimi bude odstránený.
Zbernica AGP, ktorá je v skutočnosti špecializovanou modifikáciou PCI, tiež používa jednu z liniek PIRQ - zvyčajne PIRQ0.
Moderným systémom štyri riadky nestačia, preto nové čipové sady často používajú osem liniek PIRQ, ktoré sú rovnakým spôsobom v rôznych kombináciách zapojené do slotov PCI a zariadení zabudovaných v doske.
K radiču prerušenia sú pripojené linky PIRQ. Rovnako ako ostatné riadky majú priradené logické čísla IRQ. Ak je na tej istej fyzickej linke niekoľko zariadení (a to je prípustné), všetky budú mať rovnaké číslo IRQ. Ak sú zariadenia na rôznych fyzických linkách, stále môžu prijímať rovnaké čísla IRQ. Normálne ovládače im umožnia voľný chod bez obetovania výkonu, keďže zbernicu PCI stále dokáže zachytiť iba jedno zariadenie. Hlavnou vecou je rozpoznať, z ktorého zariadenia prišiel signál.
Čísla liniek PIRQ sa priraďujú automaticky vďaka notoricky známemu mechanizmu Plug & Play. Existujú však aj zariadenia ISA Plug & Play. Majú tiež možnosť automaticky získať číslo IRQ. Ale ich linka prerušenia patrí výlučne im a ak jedna z liniek PIRQ dostane rovnaké číslo, dôjde k neriešiteľnému konfliktu.
Takže sme prišli na to, že zariadenia PCI by nemali mať problémy s konfliktom IRQ. Ak, samozrejme, fungujú správne, a nie vždy to tak je. Ovládače musia navyše podporovať mechanizmus zdieľania prerušenia. Zariadenia ISA nevedia, ako zdieľať prerušovacie linky, a preto sú provokatérmi konfliktov. Problém eliminácie konfliktov teda spočíva v správnom prideľovaní čísel (zdrojom problémov sú ISA zariadenia a „krivé“ ovládače) alebo v oddelení pozdĺž rôznych fyzických línií („krivé“ PCI radiče).
Pozrime sa, ako sú čísla v systéme alokované a ako môžeme tento proces ovplyvniť.

Prerušiť mapu

Ako som povedal, väčšina čísel IRQ je už obsadená štandardnými zariadeniami, alebo skôr priradenými ich prerušovacím linkám. Prejdeme si poradie:
0 - systémový časovač (číslo je vždy obsadené);
1 - klávesnica (číslo je vždy obsadené);
2 - druhý ovládač prerušenia (vždy zaneprázdnený);
3 - port COM2 (môže byť deaktivovaný a číslo môže byť uvoľnené);
4 - port COM1 (môže byť deaktivovaný a číslo môže byť uvoľnené);
5 - port LPT2 (zvyčajne je číslo voľné);
6 - radič diskety (možno deaktivovať a uvoľniť číslo);
7 - port LPT1 (ak nie je v režime EPP alebo ECP, potom je číslo voľné);
8 - hodiny reálneho času (vždy zaneprázdnené);
9 - zadarmo;
10 - zadarmo;
11 - zadarmo;
12 - myš PS / 2 (môže byť zadarmo, ak taká myš neexistuje);
13 - koprocesor (vždy zaneprázdnený);
14 a 15 - radič pevného disku (možno vypnúť a číslo uvoľniť).
V typickom systéme sú k dispozícii čísla 5, 7, 9–11, to znamená päť z pätnástich. Okrem toho môžete bezpečne deaktivovať porty COM2 a LPT1, čím sa počet voľných čísel zvýši na sedem. Zadarmo neznamená, že nie sú zaneprázdnení, je to len to, že je medzi nimi možné bezplatné miešanie.
Každý systém má tri štandardné PCI zariadenia - ACPI, USB radiče a grafickú kartu, z ktorých každé bude mať jedno číslo. Komplexné zariadenie (napríklad zvuková karta) môže vyžadovať niekoľko riadkov - INT A, INT B atď. pre ich komponenty, ktoré nebudú v konflikte medzi sebou (veď rôzne fyzické linky), ale s inými zariadeniami - ľahko.
Môžete zistiť, ako sú čísla prerušenia v súčasnosti priradené niekoľkými spôsobmi. Na úplnom začiatku spustenia počítača sa zobrazí textová konfiguračná tabuľka. Hneď za ním je zoznam zariadení PCI s priradeným číslom IRQ (pozri snímku obrazovky). Ďalší spôsob funguje v systéme Windows 9x. Na ovládacom paneli je ikona „Systém“ a v takzvanom aplete karta „Zariadenia“. Vyberieme vlastnosti zariadenia „Počítač“ a budú tam uvedené všetky zariadenia s uvedením ich IRQ (pozri snímku obrazovky).
V systéme Windows 2000 nemáme prístup k správe prerušenia, takže na zobrazenie zoznamu IRQ musíme použiť štandardný informačný nástroj (Ovládací panel / Nástroje pre správu / Správa počítača / Informácie o systéme / Zdroje hardvéru).

Priradenie BIOS IRQ

V systéme sú čísla IRQ alokované medzi fyzické linky dvakrát. Prvýkrát to vykoná systém BIOS pri zavádzaní systému. Každé Plug & Play zariadenie (všetky PCI, moderné ISA, integrované zariadenia), respektíve jeho prerušovacia linka, má priradené jedno z desiatich možných čísel. Ak nie je dostatok čísel, niekoľko riadkov dostane jeden spoločný. Ak ide o linky PIRQ, potom je to v poriadku - za prítomnosti bežných ovládačov a podpory operačného systému (ďalšie informácie nájdete nižšie) bude všetko fungovať. A ak niekoľko zariadení ISA alebo zariadení PCI a ISA dostane rovnaký počet, potom je konflikt jednoducho nevyhnutný a potom je potrebné zasiahnuť do procesu distribúcie.
V prvom rade musíte vypnúť všetky nepoužívané zariadenia ISA (v systémoch bez slotov ISA sú tiež k dispozícii) - porty COM1, COM2 a disketovú mechaniku. Môžete tiež vypnúť režimy EPP a ECP portu LPT, potom bude k dispozícii prerušenie IRQ7.
V programe BIOS Setup potrebujeme časť „Konfigurácia PCI / PNP“. Existujú dva základné spôsoby, ako ovplyvniť prideľovanie čísel IRQ: zablokovať konkrétne číslo a priamo priradiť číslo linky PIRQ.
Prvá metóda je k dispozícii pre všetky systémy BIOS: vyhľadajte zoznam položiek „IRQ x používa:“ (v novom systéme BIOS je skrytý v podponuke „Zdroje IRQ“). Prerušenia, ktoré by mali byť priradené výlučne zariadeniam ISA, by mali byť nastavené na „Starý ISA“. Pri priradení čísel zariadeniam PCI sa teda tieto prerušenia preskočia. To by sa malo urobiť, ak zariadenie ISA pretrváva v jednom prerušení so zariadením PCI, z ktorého obe nefungujú. Potom nájdeme číslo tohto IRQ a zablokujeme ho v BIOS Setup. Zariadenie PCI sa presunie na nové číslo IRQ, ale zariadenie ISA zostane. Konflikt vyriešený.
Druhým, pohodlnejším spôsobom ovládania čísel IRQ je priame priradenie. V tej istej podponuke Nastavenie systému BIOS môžu existovať položky vo formáte „Slot X use IRQ“ (iné názvy: „PIRQx use IRQ“, „PCI Slot x priority“, „INT Pin x IRQ“).
S ich pomocou môže byť každému zo štyroch riadkov PIRQ priradené konkrétne číslo. Mimochodom, v novom AwardBIOS 6.00 môžete presne vidieť, ktoré zariadenia (vrátane vstavaných) používajú ten či onen riadok. Stačí sa pozrieť na pravú stranu obrazovky nastavenia systému BIOS: fotografia ukazuje, ako som umiestnil kurzor na položku "Slot 1/5 use IRQ no.", A na pravej strane sa objavil nápis "Display Contr.". To znamená, že grafická karta používa prvý riadok PIRQ. Ak teraz vložím nejaké konkrétne číslo namiesto "Auto", grafická karta sa prepne na toto prerušenie.

Prideľovanie IRQ pomocou systému Windows

Druhýkrát sú čísla prerušenia pridelené operačným systémom. Ako ukázali moje experimenty, Windows „98 začína zasahovať do akcií vykonávaných systémom BIOS“ ohm iba v extrémnych prípadoch. Ak máte normálny BIOS, tu opísané techniky nie sú potrebné.
Je potrebné poznamenať, že na to, aby mechanizmy zdieľania a dynamického prideľovania IRQ fungovali správne, systém Windows musí rozpoznať čipovú sadu základnej dosky a načítať miniport IRQ. Čím novšiu verziu Windows má, tým viac čipsetov podporuje svoj vlastný miniport (PCIIMP.PCI). Vždy je však najlepšie hrať bezpečne a nainštalovať najnovšie ovládače čipovej sady.
Vo Windows 98 je systém prideľovania IRQ riadený pomocou štandardného správcu zariadení. Nájdite zbernicu PCI v zozname systémových zariadení. V jeho vlastnostiach je špeciálna karta (pozri snímku obrazovky). Ak je všetko správne nakonfigurované, bude tam uvedený miniport ("úspešne načítaný") a bude povolená správa zbernice PCI (Steering). Windows "98 má teda prostriedky na riadenie distribúcie čísel prerušení medzi fyzické linky. Pretože sa však BIOS s týmto problémom často vyrovnáva, tento mechanizmus nie je zapojený.
Ale niekedy je to jednoducho nevyhnutné. Ako som už povedal, zariadenia PCI by nemali byť v konflikte, ak používajú rovnaké logické prerušenie. Ďalšou vecou sú zariadenia ISA, ktoré tiež obsahujú porty COM a LPT. Ak zariadenie nepodporuje technológiu Plug & Play, systém BIOS si to nemusí všimnúť tým, že preruší, ktorým je zaneprázdnený, zariadeniu PCI. Potom si musíte rezervovať prerušenie. To sa deje v Správcovi zariadení Windows 98: vyberte Počítačové zariadenie, zavolajte jeho vlastnosti, prepnite na druhú kartu.
Okrem redundancie môžete priamo nastaviť číslo prerušenia pre zariadenie. Na to musíte nájsť kartu „Zdroje“ v jej vlastnostiach, zakázať automatickú konfiguráciu a pokúsiť sa zmeniť priradené číslo prerušenia.
Bohužiaľ, nie vždy to funguje.
Windows 2000 je špeciálny systém. Ak máte moderný počítač, pravdepodobne podporuje konfiguračné rozhranie ACPI. V tomto prípade bude systém Windows 2000 úplne ignorovať akcie systému BIOS a „zavesí“ všetky zariadenia PCI na jedno logické prerušenie. Vo všeobecnosti to bude fungovať dobre (keď neexistuje ISA), ale niekedy sa vyskytnú problémy. Aby ste mohli zmeniť čísla prerušení, musíte buď zmeniť jadro HAL, alebo preinštalovať Windows 2000 s deaktivovaným ACPI v systéme BIOS. Výmena jadra sa vykonáva nasledovne: v správcovi zariadení vyberte „Počítač“ / „Počítač s ACPI“, zmeňte ovládač na „Štandardný počítač“, reštartujte počítač. Ak to nepomôže, budete musieť systém Windows 2000 znova nainštalovať.
Dúfam, že vám uvedené informácie pomôžu v boji proti problémom s hardvérom. A pamätajte: väčšina problémov, ktoré vznikajú, súvisí s nízkou úrovňou počítačovej gramotnosti majiteľa počítača. Preto sa musíte vždy snažiť o samovzdelávanie, potom bude problémov menej a tie, ktoré vzniknú, sa nebudú zdať neriešiteľné.