Milleks kasutatakse irq katkestusnumbrit? Süsteemi katkestused laadivad protsessori

Konflikt on olukord, kus mitu objekti üritavad üheaegselt juurde pääseda ressursile, mis on mõeldud ainult ühele neist. Katkestuskonflikt tekib siis, kui mitu seadet kasutavad päringu signaali saatmiseks sama katkestusliini ja puudub samaaegsete päringute käsitlemise mehhanism. Kui juht, kes juhib kontrolli, ei tööta päringu saatnud seadmega, ilmneb tõrge või üks seadmetest lihtsalt ei tööta.

Tekib küsimus: kas mitut seadet saab kasutada sama katkestusliini või on see põhimõtteliselt võimatu? Lõppude lõpuks, kui juht suudab kindlaks teha, kellelt päring täpselt pärines, reageerib see ainult "oma" seadme signaalidele, ignoreerides kõiki teisi. Aga selles tuleb mingil viisil eelnevalt kokku leppida, vastasel juhul on konflikt paratamatu.

Kohalik PCI -siin on kavandatud katkestuste jagamist silmas pidades. Iga PCI -seade peab õigesti töötama samal katkestusliinil teiste PCI -seadmetega. Seda tehakse järgmiselt: signaali olemasolu fakti katkestusliinil ei määra mitte serv, s.t. pingetaseme muutus, kuid juba teatud pinge olemasolu tõttu. Mitmed seadmed võivad liini pinget korraga muuta, muutudes justkui teenindusjärjekorda.

Seega ei ole sama IRQ jagamine mitme PCI -seadme vahel definitsiooni järgi konflikt (joonis 2). Kuid mõnikord tekivad probleemid. Esiteks, kõik PCI -seadmed ei tööta teistega samal katkestusliinil õigesti. Teiseks on juhtidel mõnikord vigu, mille tõttu nad ei suuda signaali allikat õigesti määrata, häirides teisi draivereid. Kolmandaks, kõik seadmed ei tööta PCI siinil; näiteks ISA -seadmed, mis sisaldavad näiteks COM / LPT pordikontrollereid, ei saa katkestusi teistega jagada.

Riis. Win2000 seadmehalduri IRQ kaart - IO PIC Intel 440BX kiibistik

Riis. Win2000 IRQ MAP - IO APIC - kiibistiku KT266a kaudu

Selle tulemusena on võimalikud olukorrad, kui arvuti hakkab sageli külmuma, keeldub mis tahes funktsioonide täitmisest või isegi lihtsalt satub nn. sinine ekraan surmast ".

Apic (täiustatud programmeeritav katkestuskontroller)

Nagu eespool näidatud, on katkestusliin arvuti jaoks väga napp ressurss. Arvutitööstuse arenedes suureneb aga arvutis pidevalt erinevate väliste seadmete arv. Näiteks võib ühel emaplaadil olla 5-6 PCI-pesa, AGP-pesa, sisseehitatud IDE-kontroller, sisseehitatud SCSI-kontroller, sisseehitatud 1/2-portiline võrguadapter jne. Ja kõik need seadmed vajavad katkestusi. Järk -järgult puudus 16 IRQ -liini.

APIC Kas katkestuskontroller, mis võimaldab 16 asemel kasutada 24 riistvarakatkestust. 16 riistvarakatkestuse limiit, mis on jäänud muutumatuks alates 1982. aastast, takistas lisaseadmete installimist personaalarvutisse. 2001. aasta lõpus ilmusid esimesed APIC -iga emaplaadid.

Riis. Katkesta süsteem mitme protsessori keskkonnas.

Eelmine kirjeldus oli mõeldud üheprotsessoriliste süsteemide jaoks mõeldud PIC -ide jaoks. Kui süsteem sisaldab kahte või enamat protsessorit, pole see lähenemine enam lubatud ja vaja on keerukamaid PIC -e.

Kõik kaasaegsed protsessorid x86 sisaldab kohalikku APIC -i. Igal kohalikul APIC-il on 32-bitised registrid, sisemine kell, kohalik taimer ja kaks täiendavat IRQ-liini LINT0 ja LINT1, mis on reserveeritud kohalikele APIC-katkestustele. Kõik kohalikud APIC -id on ühendatud välise I / O APIC -iga.

I / O APIC sisaldab 24 IRQ rida, 24 sisendiga katkestuste marsruutimistabelit, programmeeritavaid registreid ja sõnumiplokki sõnumite saatmiseks ja vastuvõtmiseks APIC siinil. Erinevalt 8259A IRQ tihvtidest ei ole katkestuse prioriteet seotud tihvti numbriga.

Iga kirje katkestuste marsruutimise tabelis saab programmeerida individuaalselt, et kuvada katkestusvektor ja selle prioriteet, protsessor, mis katkestusega hakkama saab, ja selle protsessori valimine. Katkestuste marsruutimistabelis olevat teavet kasutatakse iga välise signaali teisendamiseks sõnumiks, mis on adresseeritud ühele või mitmele APIC -siinile.

Staatiline jaotus

IRQ signaal edastatakse kohalikele APIC -dele, mis on loetletud vastavas IRQ ümbersuunamistabeli kirjes. Katkestus edastatakse ühele konkreetsele protsessorile, mitmele protsessorile või kõigile protsessoritele.

Dünaamiline jaotamine

IRQ -signaal edastatakse protsessori kohalikule APIC -ile, kes täidab protsessi madalaima prioriteediga.

Igal kohalikul APIC -il on programmeeritav tööprioriteedi register, mida kasutatakse praeguse protsessi prioriteedi arvutamiseks. Intel eeldab, et seda registrit muudab operatsioonisüsteemi tuum igal protsessorilülitil.

Lisaks katkestuste jaotamisele protsessorite vahel võimaldab mitme APIC-süsteemiga protsessor luua protsessoritevahelisi katkestusi. Kui protsessor soovib katkestuse teisele protsessorile saata, salvestab ta katkestusvektori ja kohaliku APIC -i ID oma kohaliku APIC -i katkestuskäskude registrisse (ICR). Seejärel saadetakse teade APIC -siini kaudu sihtmärgi kohalikule APIC -ile, mis väljastab selle protsessorile sobiva katkestuse.

Paljud üheprotsessorsüsteemid sisaldavad praegu I / O APIC kiipi, mida saab konfigureerida kahel viisil:

1. Standardina 8259A PIC, mis on ühendatud protsessoriga. Kohalik APIC on keelatud ning kaks rida LINT0 ja LINT1 on konfigureeritud INTR- ja NMI -kontaktidena.

2. Tavalise välise I / O APIC -na. Kohalik APIC on lubatud ja kõik välised katkestused võetakse vastu I / O APIC kaudu.

  • Alieva Jelena Viktorovna, õpilane
  • Ufa osariigi lennundustehnikaülikool
  • KATKEMISE KONTROLLER
  • KONTROLLER
  • RIISTVARU KATKED
  • VAHELE SEGAMA

Katkestus tähendab peamise arvutusprotsessi ajutist katkestamist mõne kavandatud või planeerimata toimingu tegemiseks, mis on põhjustatud riistvara või programmi toimimisest. Katkestusmehhanismi toetatakse riistvaratasandil. Riistvara katkestused tekivad mikroprotsessori reaktsioonina mõne seadme (klaviatuur, süsteemikell, klaviatuur, HDD jne), on need katkestused toimumise ajaks asünkroonsed, s.t. tekkida juhuslikel aegadel. Katkestuskontroller on loodud sissetulevate teenusetaotluste töötlemiseks ja lahendamiseks keskprotsessor välisseadmetelt. Katkestustel on teatud prioriteet, mis võimaldab katkestuskontrolleril eelistada Sel hetkel aega ühele seadmele, mitte teisele. Kaasaegses arvutis on kuni 16 välist ja välisseadet, mis tekitavad katkestusi.

  • Dokumentide voo automatiseerimine tootmisettevõtte laos
  • Kutsub tehnoloogiaid, funktsioone, rakendusi ja tõhusust
  • Ettevõtte toetamise ja lepingute sõlmimise õigusosakonna infosüsteemi mudeli väljatöötamine

Sissejuhatus

Katkestus tähendab peamise arvutusprotsessi ajutist katkestamist mõne kavandatud või planeerimata toimingu tegemiseks, mis on põhjustatud riistvara või programmi toimimisest. Need. see on protsess, mis lülitab mikroprotsessori ajutiselt teise programmi käivitamiseks ja naaseb seejärel katkestatud programmi juurde. Klaviatuuril klahvi vajutades käivitame viivitamatult kõne programmile, mis tunneb võtme ära, paneb selle koodi klaviatuuri puhvrisse, kust teine ​​programm seda loeb. Need. mikroprotsessor katkestab mõneks ajaks täitmise praegune programm ja lülitub katkestuste käitlejale, nn katkestuste käitlejale. Kui katkestuste käitleja on oma töö lõpetanud, jätkab katkestatud programm käivitamist alates peatamise hetkest. Katkestuste käitleja aadress arvutatakse katkestusvektorite tabelist.

Katkestusmehhanismi toetatakse riistvaratasandil. Sõltuvalt allikast jagunevad katkestused järgmisteks osadeks:

  • riistvara- tekivad mikroprotsessori reaktsioonina mõne seadme (klaviatuur, süsteemikell, klaviatuur, kõvaketas jne) füüsilisele signaalile, need katkestused on toimumise ajal asünkroonsed, s.t. tekkida juhuslikel aegadel;
  • programmiline- kutsutakse kunstlikult programmi vastava käsu abil (int), on mõeldud mõne operatsioonisüsteemi toimingu tegemiseks, on sünkroonsed;
  • erandeid- on mikroprotsessori reaktsioon mittestandardsele olukorrale, mis on tekkinud mikroprotsessori sees teatud programmi käsu täitmise ajal (jagamine nulliga, katkestamine TF lipuga (jälg)).

Katkesta süsteemi riistvara

Katkestussüsteem on tarkvara ja riistvara kogum, mis rakendab katkestusmehhanismi.

Katkestussüsteemi riistvara sisaldab:

  • mikroprotsessori väljundid - neile genereeritakse signaale, mis teavitavad mikroprotsessorit kas sellest, et mõni väline seade "küsib tähelepanu" (INTR) või et on vaja viivitamatult töödelda mõnda sündmust või katastroofiviga (NMI)
  • INTR - katkestustaotluse sisendsignaali tihvt,
  • NMI - tihvt maskeerimata katkestussisendi jaoks
  • INTA - väljund väljundsignaalile, mis kinnitab mikroprotsessori poolt katkestussignaali vastuvõtmist (see signaal suunatakse 8259A kontrolleri mikroskeemi sama nime sisendisse;
  • 8259A programmeeritav katkestuskontroller (mõeldud kaheksa erineva välisseadme katkestussignaalide fikseerimiseks; see on valmistatud mikroskeemi kujul; tavaliselt kasutatakse kahte järjestikku ühendatud mikroskeemi, seega võimalikud allikad välised katkestused kuni 15 pluss üks mitte-maskeeritav katkestus; just tema moodustab katkestusvektori numbri ja väljastab selle andmesiini);
  • välised seadmed (taimer, klaviatuur, magnetilised kettad jne.)

Katkesta käsitsemine

Katkestus käivitab rea sündmusi, mis esinevad nii riistvaras kui ka tarkvara... Joonisel fig. 1 näitab nende sündmuste tüüpilist jada.

Kui sisend- / väljundseade on lõpetatud, ilmneb järgmine.

  • Seade saadab protsessorile katkestussignaali.
  • Enne katkestusele reageerimist peab protsessor lõpetama praeguse käsu täitmise (vt joonis 1).
  • Protsessor kontrollib katkestuse olemasolu, tuvastab selle ja saadab seadme, mis selle katkestuse saatis, andes märku edukast vastuvõtust. See signaal võimaldab seadmel katkestussignaali kustutada.
Joonis 1. Programmi ajastamine: aeglane sisend / väljund

Nüüd peab protsessor valmistuma juhtimise üleandmiseks katkestuste käitlejale. Kõigepealt peate kõik salvestama olulist teavet, et hiljem saaksite naasta praeguse programmi kohta, kus see peatati. Minimaalne nõutav teave on programmi olekusõna ja järgmise täidetud käsu aadress, mis asub programmi loenduris. Need andmed lükatakse süsteemi juhtimispinu peale.

Joonis 2. Lihtsa katkestuse käsitlemine

Lisaks laaditakse selle katkestuse töötlemise eest vastutava katkestuste töötleja sisendi aadress protsessori programmiloendurisse. Sõltuvalt arvuti arhitektuurist ja operatsioonisüsteemi seadmest võib kõigi katkestuste käsitlemiseks olla kas üks programm või iga seadme ja igat tüüpi katkestuste jaoks oma töötlemisprogramm. Kui katkestuste tegemiseks on saadaval mitu programmi, peab protsessor määrama, millisele neist juurde pääseda. See teave võib sisalduda algses katkestussignaalis; vastasel juhul peab protsessor vajaliku teabe saamiseks küsitlema kõiki seadmeid kordamööda, et teha kindlaks, milline neist katkestuse saatis.

Niipea, kui programmi loendurisse on laaditud uus väärtus, jätkab protsessor järgmise käsutsükliga, alustades selle mälust toomist. Kuna käsk tuuakse välja asukohast, mille arvu määrab programmi loenduri sisu, läheb juhtimine üle katkestusrutiinile. Selle programmi täitmine hõlmab järgmisi toiminguid.

Programmiloenduri sisu ja katkestatud programmi olekusõna on juba süsteemi virnasse salvestatud. See pole aga kogu teave käivitatava programmi oleku kohta. Näiteks peate salvestama protsessoriregistrite sisu, kuna neid registreid võib katkestuste käitleja vajada. Seetõttu on vaja salvestada kogu teave programmi oleku kohta. Tavaliselt alustab katkestuste käitleja kõigi registrite sisu virna kirjutamist. Muud teavet, mida tuleks säilitada, käsitletakse 3. peatükis "Protsesside kirjeldamine ja kontrollimine". Joonisel fig. näidatakse lihtsat näidet, kus kasutajaprogramm katkestatakse pärast käsu täitmist lahtrist N. Kõigi registrite sisu ja järgmise käsu aadress (N + 1) kokku, moodustades M -sõna, on virna peale surutud. Seejärel värskendatakse virnaosuti, et osutada virna uuele ülaosale. Samuti uuendatakse programmiloendurit, et näidata katkestusrutiini algust.

Katkestuste käitleja saab nüüd oma tööd alustada. Katkestuste käsitlemine hõlmab I / O toimingutega seotud olekuteabe või muude katkestust käivitanud sündmuste kontrollimist. See võib hõlmata ka täiendavate juhiste või märguannete saatmist I / O -seadmetele.

Pärast katkestustöötluse lõpuleviimist hüppatakse virnast varem salvestatud väärtused, mis kantakse uuesti registritesse, taastades seega oleku, milles need olid enne katkestust.

Viimane samm on programmi staatussõna ja programmi loenduri sisu virnast taastamine. Selle tulemusena täidetakse järgmisena katkestatud programmi käsk.

Tulenevalt asjaolust, et katkestus ei ole programmist kutsutud alamprogramm, on täielikuks taastumiseks oluline säilitada kogu katkestatud programmi olekuteave. Katkestus võib aga tekkida igal ajal ja kõikjal kasutajaprogrammis. See sündmus on ettearvamatu.

Katkesta kontroller

Katkestuskontroller on loodud töötlema ja lahendama välisprotsessoritelt protsessorile sissetulevaid teenusetaotlusi. Analoogia põhjal võib katkestuskontrolleri funktsiooni võrrelda mõne ülemuse sekretäriga. Sekretär peab ülemuse antud prioriteetide ja külastaja enda staatuse põhjal otsustama, kumb külastajatest ülemuse juurde kõigepealt ja kes hiljem vastu võetakse. Samamoodi arvutisüsteemis on võimalik, et mitmed välisseadmed saadavad katkestussignaali või katkestamistaotluse. Arvutikirjanduses nimetatakse seda signaali IRQ -ks (katkestustaotlus).

Nagu eespool mainitud, on katkestustel teatud prioriteet, mis võimaldab katkestuskontrolleritel eelistada teatud ajahetkel ühte seadet, mitte teist. Kaasaegses arvutis on kuni 16 välist ja välisseadmed katkestuste genereerimine. Need seadmed on:
–IRQ 0, süsteemi taimer; –IRQ 1, klaviatuur; –IRQ 2, mida kasutatakse kaskaadiga ühendatud seadmete päringute tegemiseks; –IRQ 8, reaalajas kell; –IRQ 9, reserveeritud; –IRQ 10, reserveeritud; –IRQ 11, reserveeritud; –IRQ 12, ps / 2 - hiir; –IRQ 13, kaasprotsessor; –IRQ 14, kõvaketta kontroller; –IRQ 15, reserveeritud; –IRQ 3, pordid COM2, COM4; –IRQ 4, pordid COM1, COM3; –IRQ 5, port LPT2; –IRQ 6, disketiseadme kontroller; –IRQ 7, LPT1 port, printer.

Siin on signaalid loetletud prioriteetide kahanevas järjekorras. Näete, et pärast IRQ 2, millele järgneb IRQ 8. Fakt on see, et omal ajal koosnes katkestuskontroller kahest mikroskeemist, millest üks oli ühendatud teisega. See teine ​​mikroskeem on ühendatud IRQ 2 liiniga, moodustades kaskaadi. See teenindab ridu IRQ8 - IRQ 15. Ja siis järgnevad esimese mikroskeemi read.

Katkestage kontrolleri töö

Katkesta kontrollerid peetakse kiibipõhiseks Intel 8259A, mida kasutati nüüd väga vanades kuni 386 -seeria protsessoritega arvutites. Nendel arvutitel oli tavaliselt 2 8259A kiipi ühendatud kaskaadiga, see tähendab üksteisega. Üks mikroskeemidest, mis on ühendatud katkestamise päringuliini kaudu otse protsessoriga, on master või master. Ülejäänud, mis on sarnaste tihvtide kaudu ühendatud kapteniga, nimetatakse orjadeks.


Joonis 3. Katkestuskontrollerite ühendusskeem ja nende koostoime keskprotsessoriga

Joonisel 3 on näidatud katkestuskontrollerite ühendusskeem ja nende koostoime keskprotsessoriga. Välisseadmete või alamkontrollerite katkestussignaalid saadetakse peakontrolleri sisenditesse IR0 - IR7. Peakontrolleri sisemine loogika töötleb sissetulevaid päringuid prioriteedi osas. Kui seadme päringu prioriteet on piisav, genereerib kontrolleri INT väljund signaali protsessori INTR sisendile. Vastasel juhul blokeeritakse taotlus.

Kui protsessor lubab katkestusi, genereerib see pärast praeguse käsu täitmise lõpuleviimist INTA liinil signaalide jada, mis muudab alamkontrolleri sissetulevate uute katkestustaotluste suhtes immuunseks ning lisaks sellele ka kontrolleri siseregistritest pärineva teabe. väljastatakse andmeliinile kontrolleri siseregistritest, mille abil protsessor tuvastab katkestuse tüübi.

Protsessor edastab katkestusloa katkestuskontrollerile siinikontrolleri kaudu. RD -signaal on ette nähtud katkestuskontrollerile siseregistrite sisu paigutamiseks andmesiinile. WR -signaalil võtab katkestuskontroller vastupidi vastu sama nimega siinilt andmeid ja kirjutab need siseregistritesse. Sellest tulenevalt mõjutab see katkestuskontrolleri töörežiimi.

CS sisend on ühendatud aadressibussiga ja seda signaali kasutatakse konkreetse katkestuskontrolleri tuvastamiseks. Sisend A0 osutab katkestuskontrolleri pordile I / O ruumis.

Sisendid IR0 - IR7 on ette nähtud katkestuste taotluste vastuvõtmiseks välisseadmetelt ja alamkontrolleritelt.

Väljundid CAS0 - CAS2 on loodud konkreetse alamregulaatori tuvastamiseks.

Artiklis käsitletakse riistvara katkestusi ja seade, funktsioonid, katkestuskontrolleri töö. See kontroller katkestused ilmusid esimestes arvutiga ühilduvates arvutites. Sellest ajast on nii protsessorid kui ka arvuti ise palju muutunud, kuigi mõned punktid on jäänud. Seetõttu kaaluti selle selgitamiseks ja katkestuskontrolleri 8295A korraldamist.

Ülaltoodud diagramm näitab signaale, mis tulevad mitte ainult alam- ja ülemkatkestuskontrolleritele, vaid ka teistele alluvatele. Kuid teie arvutis või sülearvutis on tegelikult kaks katkestuskontrollerit, nagu eespool öeldud: ülem ja alam. Kuid saate ise luua arvutisüsteemid seega kasutatakse kuni 64 alamkatkestuskontrollerit.

Kaasaegsetes arvutites pikka aega katkestada kontrolleri funktsioonid seda ei teosta 8259A mikroskeemid, vaid lõunasild. Kuid kõikide programmide ja seadmete puhul jääb kõik samaks. Veelgi enam, katkestuskontroller on programmeeritav ning sisemistele registritele ja portidele tuleb juurde pääseda samamoodi nagu 8259A kontrollerile.

Järeldus

Selles artiklis käsitleti katkestusi, nimelt riistvarakatkestuste käsitlemist ja katkestuste käsitlemise põhimõtet. Arvesse võeti ka katkestuskontrollereid ja nende tööpõhimõtet.

Katkestus tähendab peamise arvutusprotsessi ajutist katkestamist mõne kavandatud või planeerimata toimingu tegemiseks, mis on põhjustatud riistvara või programmi toimimisest. Katkestusmehhanismi toetatakse riistvaratasandil. Riistvara katkestused tekivad mikroprotsessori reaktsioonina füüsilisele signaalile mõnest seadmest (klaviatuur, süsteemikell, klaviatuur, kõvaketas jne); need katkestused on toimumise ajal asünkroonsed, s.t. tekkida juhuslikel aegadel.

Katkesta kontroller mõeldud töötlema ja lahendama välisprotsessoritelt protsessorile sissetulevaid teenusetaotlusi. Katkestustel on teatud prioriteet, mis võimaldab katkestuskontroller eelistama teatud ajal ühte seadet teisele. Kaasaegses arvutis on kuni 16 välist ja välisseadet, mis tekitavad katkestusi.

Bibliograafia

  1. Loeng. Katkestab. E -post Ressurss. http://hromatron.narod.ru/_lekcii/prerivania_lekcia_g2013.htm
  2. Süsteemi katkestused | Riistvara katkestus | Katkesta käitlemine http://life-prog.ru/view_os.php?id=16
  3. Katkesta kontroller. E -post Ressurss http://sdelaycomputersam.ru/Controller_irq.php,
  4. Katkestab. Katkesta kontroller. Seade, funktsioonid, töö. E -post Ressurss http://sdelaycomputersam.ru/Controller_irq.php
  5. Inteli 8259A katkestuskontrolleri E-ressursi struktuur ja lähtestamine https://dev64.wordpress.com/2012/05/30/8259-programming/
On hea, kui arvuti pärast kokkupanekut või kavandatud moderniseerimist käivitub ja töötab esimest korda stabiilselt ja tõrgeteta. Palju hullem on siis, kui tekivad ootamatud probleemid - spontaanne taaskäivitamine ja külmutamine, programmide krahh, seadmete töövõimetus või "nähtamatus" jne. Esimene põhjus, mis sellisel juhul tavaliselt meelde tuleb, on katkestuskonflikt. Kas me teame hästi selle nähtuse olemust, kas oleme piisavalt valmis selle vastu võitlemiseks?

Mis on IRQ
Katkestused on süsteemi mehhanism tekkivatele sündmustele reageerimiseks. Riistvara katkestused, mida tavaliselt nimetatakse IRQ -deks (Interrupt ReQuest), on füüsilised signaalid, mille abil seadme kontroller teatab protsessorile mõne päringu töötlemise vajadusest. Tavaliselt näeb katkestuste käsitlemise skeem välja selline:
1) protsessor saab katkestussignaali ja selle numbri;
2) katkestuse töötlemise eest vastutava programmi aadressi leidmiseks antud numbri abil kasutatakse spetsiaalset tabelit - katkestuste käitleja;
3) protsessor peatub praegune töökoht ja lülitub käitleja täitmisele (üldjuhul on see mingi draiver);
4) juht pääseb seadme juurde ja kontrollib katkestuse põhjust;
5) käivitatakse soovitud toimingud - lähtestamine, seadme konfigureerimine, andmevahetus jne.
6) draiver väljub ja protsessor naaseb katkestatud ülesande juurde.
Ilmselgelt peavad katkestusmehhanismi korrektseks toimimiseks olema täidetud kaks tingimust: esiteks peab päringusignaal jõudma protsessorini ja teiseks peab käitleja juht sellele signaalile õigesti reageerima. Konflikti korral ei ole teine ​​tingimus täidetud: katkestussignaal saabub, kuid reaktsioon sellele osutub valeks, mille tagajärjel on meil (parimal juhul) mittetöötav seade.

Konflikt
Võime öelda, et konflikt on olukord, kus mitu objekti üritavad üheaegselt juurde pääseda ressursile, mis on mõeldud ainult ühele neist. Katkestusvõitlus tekib siis, kui mitu seadet kasutavad päringu signaali saatmiseks sama katkestusliini ja puudub samaaegsete päringute käsitlemise mehhanism. Kui juht, kes juhib kontrolli, ei tööta päringu saatnud seadmega, ilmneb tõrge või üks seadmetest lihtsalt ei tööta.
Tekib küsimus: kas mitut seadet saab kasutada sama katkestusliini või on see põhimõtteliselt võimatu? Lõppude lõpuks, kui juht suudab kindlaks teha, kellelt päring täpselt pärines, reageerib see ainult "oma" seadme signaalidele, ignoreerides kõiki teisi. Aga selles tuleb mingil viisil eelnevalt kokku leppida, vastasel juhul on konflikt paratamatu.
Kohalik PCI -siin on kavandatud katkestuste jagamist silmas pidades. Iga PCI -seade peab õigesti töötama samal katkestusliinil teiste PCI -seadmetega. Seda tehakse järgmiselt: signaali olemasolu fakti katkestusliinil ei määra mitte serv, s.t. pingetaseme muutus, kuid juba teatud pinge olemasolu tõttu. Mitmed seadmed võivad liini pinget korraga muuta, muutudes justkui teenindusjärjekorda.
Seega ei ole sama IRQ jagamine mitme PCI -seadme vahel definitsiooni järgi konflikt. Kuid mõnikord tekivad probleemid. Esiteks, kõik PCI -seadmed ei tööta teistega samal katkestusliinil õigesti. Teiseks on juhtidel mõnikord vigu, mille tõttu nad ei suuda signaali allikat õigesti määrata, häirides teisi draivereid. Kolmandaks, kõik seadmed ei tööta PCI siinil; näiteks ISA -seadmed, mis sisaldavad näiteks COM / LPT pordikontrollereid, ei saa katkestusi teistega jagada. Et konfliktide vältimiseks või lahendamiseks selgeks saada, peate mõistma, kuidas IRQ -sid hallatakse.

Riistvarakatkestuste korraldamine personaalarvutis
Nagu sa tead, personaalarvutid alustati IBM -i arvutiga. Selle arhitektuur sisaldas kaheksat riistvara katkestamise (IRQ) liini, mida juhtis spetsiaalne kontroller. Igaühele neist määrati number, mis määras katkestuse prioriteedi ja selle käitleja aadressi (nn katkestusvektor). Uus arhitektuur, IBM PC AT, pakkus veel kaheksa katkestusliini, mille jaoks kasutati teist kontrollerit, mis oli ühendatud esimese kontrolleri ühe katkestusliiniga. Kahjuks jäi see arhitektuur viimaseks pärast seda, kui IBM kaotas oma loodud platvormi arendamise juhtimise võimaluse, nii et kõigil kaasaegsetel arvutitel on endiselt vaid kuusteist katkestust, millest ühte kasutab teine ​​kontroller.
IBM PC AT arvutil oli ainult üks siin, mille kaudu seadmed said protsessori ja mäluga suhelda - ISA. Enamik katkestusliine määrati standardsetele ISA -seadmetele, ülejäänud olid reserveeritud tulevikuks. Kui see tulevik saabus, selgus, et uus universaalne buss PCI sai ainult neli tasuta katkestust. Seetõttu leiutati nutikas mehhanism katkestuste jagamiseks (IRQ Sharing) ja numbrite dünaamiliseks ümberdefineerimiseks (IRQ Steering või Mapping).
PCI -seadme katkestamise juhtimismehhanismi olemus on järgmine. Üldiselt on neli füüsilist PCI katkestusliini nimega PIRQ0, PIRQ1, PIRQ2 ja PIRQ3. Need on ühendatud katkestuskontrolleriga. Tundub, et igal PCI -seadmel on neli pistikut, nimega INT A, INT B, INT C ja INT D. Liinid saab ühendada pistikutega suvalises järjekorras. Näiteks esimese PCI pesa jaoks saate teha järgmise juhtmestiku: PIRQ0 - INT A, PIRQ1 - INT B, PIRQ2 - INT C, PIRQ3 - INT D. Ja teise jaoks - teistmoodi: PIRQ0 - INT B , PIRQ1 - INT C, PIRQ2 - INT D, PIRQ3 - INT A. Tavaliselt vajab seade ainult ühte katkestusliini, mis on ühendatud INT A -ga. Kui paigaldatakse esimesse pesasse, kasutab seade PIRQ0 liini ja teises pesas on PIRQ1 joon samal tihvtil. Seega kasutavad erinevates pesades olevad seadmed erinevaid füüsilisi katkestusliine. Riistvarakonflikt nende vahel kõrvaldatakse.
AGP siin, mis on tegelikult PCI spetsiaalne modifikatsioon, kasutab ka ühte PIRQ liini - tavaliselt PIRQ0.
Kaasaegsete süsteemide puhul ei piisa neljast liinist, seega kasutavad uued kiibistikud sageli kaheksat PIRQ -liini, mis on erinevatel kombinatsioonidel samamoodi ühendatud PCI -pesade ja pardaseadmetega.
PIRQ liinid on ühendatud katkestuskontrolleriga. Neile, nagu ka teistele ridadele, määratakse loogilised IRQ -numbrid. Kui samal füüsilisel real on mitu seadet (ja see on lubatud), on neil kõigil sama IRQ -number. Kui seadmed asuvad erinevatel füüsilistel liinidel, saavad nad siiski vastu võtta samu IRQ -numbreid. Tavalised draiverid võimaldavad neil vabalt töötada ilma jõudlust ohverdamata, kuna PCI -siin saab jäädvustada ainult ühe seadmega. Peaasi on ära tunda, millisest seadmest signaal tuli.
Tänu kurikuulsale Plug & Play mehhanismile määratakse PIRQ reanumbrid automaatselt. Kuid on ka Plug & Play ISA seadmeid. Samuti on neil võimalus automaatselt saada IRQ -number. Kuid nende katkestusliin kuulub ainult neile ja kui üks PIRQ -liinidest saab sama numbri, tekib lahendamatu konflikt.
Niisiis arvasime välja, et PCI -seadmetel ei tohiks olla IRQ -konfliktiprobleeme. Kui nad muidugi töötavad õigesti ja see pole alati nii. Lisaks peavad autojuhid toetama jagamise katkestamise mehhanismi. ISA seadmed ei tea, kuidas katkestusliine jagada, ja on seetõttu konfliktide provokaatorid. Järelikult taandub konfliktide kõrvaldamise probleem numbrite õigele jaotamisele (probleemide allikaks on ISA -seadmed ja "kõverad" draiverid) või eraldamisele mööda erinevaid füüsilisi jooni ("kõverad" PCI -kontrollerid).
Vaatame, kuidas numbrid süsteemis jaotatakse ja kuidas saame seda protsessi mõjutada.

Katkesta kaart
Nagu ma ütlesin, on enamik IRQ -numbreid juba hõivatud standardseadmetega või õigemini määratud nende katkestusliinidele. Lähme läbi tellimuse:
0 - süsteemi taimer (number on alati hõivatud);
1 - klaviatuur (number on alati hõivatud);
2 - teine ​​katkestuskontroller (alati hõivatud);
3 - COM2 -port (saab keelata ja numbri vabastada);
4 - COM1 -port (saab keelata ja numbri vabastada);
5 - LPT2 port (tavaliselt on number vaba);
6 - disketikontroller (saab keelata ja numbri vabastada);
7 - LPT1 port (kui mitte EPP või ECP režiimis, siis on number vaba);
8 - reaalajas kell (alati hõivatud);
9 - tasuta;
10 - tasuta;
11 - tasuta;
12 - PS / 2 hiir (võib olla tasuta, kui sellist hiirt pole);
13 - kaasprotsessor (alati hõivatud);
14 ja 15 - kontroller kõvakettad(saab keelata ja number vabaneb).
Tavalises süsteemis on saadaval numbrid 5, 7, 9-11, see tähendab viis viieteistkümnest. Lisaks saate COM2 ja LPT1 pordid turvaliselt keelata, suurendades tasuta numbrite arvu seitsmeni. Tasuta ei tähenda, et nad pole hõivatud, lihtsalt nende vahel on võimalik tasuta segada.
Igal süsteemil on kolm standardset PCI -seadet - ACPI, USB -kontrollerid ja videokaart, millest igaüks võtab ühe numbri. Keerukas seade (nt. helikaart) võib nõuda mitut rida - INT A, INT B jne. nende komponentide jaoks, mis ei lähe üksteisega vastuollu (ju erinevad füüsilised jooned), kuid teiste seadmetega - lihtsalt.
Saate teada, kuidas katkestusnumbreid praegu eraldatakse mitmel viisil. Arvuti alglaadimise alguses ilmub teksti konfiguratsioonitabel. Kohe pärast seda on määratud IRQ -numbriga PCI -seadmete loend (vt ekraanipilti). Teine viis töötab operatsioonisüsteemis Windows 9x. Juhtpaneelil on ikoon "Süsteem" ja kutsutud apleti vahekaart "Seadmed". Valime seadme "Arvuti" atribuudid ja kõik seadmed kuvatakse seal, näidates nende IRQ -d (vt ekraanipilti).
Operatsioonisüsteemis Windows 2000 pole meil juurdepääsu katkestuste haldamisele, seega peame IRQ loendi vaatamiseks kasutama tavalist teabeutiliiti (juhtpaneel / haldustööriistad / arvutihaldus / süsteemiteave / riistvararessursid).

BIOS IRQ eraldamine
Süsteemis eraldatakse IRQ numbrid füüsiliste ridade vahel kaks korda. Esimest korda teeb seda süsteemi BIOS süsteemi käivitamisel. Igale Plug & Play seadmele (kõik PCI, kaasaegne ISA, integreeritud seadmed) või õigemini selle katkestusliinile määratakse üks kümnest võimalikust numbrist. Kui numbreid pole piisavalt, saab mitu rida ühe ühise. Kui need on PIRQ liinid, siis pole midagi - tavaliste draiverite ja operatsioonisüsteemi toe juuresolekul (vt selle kohta allpool) kõik toimib. Ja kui mitu ISA -seadet või PCI- ja ISA -seadet saavad sama numbri, on konflikt lihtsalt vältimatu ja siis on vaja levitamisprotsessi sekkuda.
Kõigepealt peate keelama kõik kasutamata ISA -seadmed (süsteemides, kus pole ISA -pesasid, need on ka olemas) - pordid COM1, COM2 ja disketiseade. Samuti saate keelata LPT pordi EPP ja ECP režiimid, siis saab IRQ7 katkestus kättesaadavaks.
V BIOS -i seadistamine vajame jaotist "PCI / PNP konfiguratsioon". IRQ -numbrite eraldamist saab mõjutada kahel viisil: blokeerida konkreetne number ja määrata otse PIRQ -reanumber.
Esimene meetod on saadaval kõigi BIOS -ide jaoks: leidke üksuste loend "IRQ x used by:" (in uus BIOS peidetud alammenüüsse "IRQ ressursid"). Need katkestused, mis tuleks määrata ainult ISA -seadmetele, peaksid olema seadistatud vanale ISA -le. Seega jäetakse need katkestused PCI -seadmetele numbrite määramisel vahele. Seda tuleks teha, kui ISA -seade püsib PCI -seadmega ühel katkestusel, mille tõttu mõlemad ei tööta. Siis leiame selle IRQ numbri ja blokeerime selle BIOS -i seadistuses. PCI -seade läheb uus number IRQ, kuid ISA -seade jääb. Konflikt lahendatud.
Teine mugavam viis IRQ numbrite juhtimiseks on otsene määramine. Samas BIOS -i seadistamise alammenüüs võivad olla üksused kujul "Pesa X kasutage IRQ" (muud nimed: "PIRQx kasutage IRQ", "PCI pesa x prioriteet", "INT Pin x IRQ").
Nende abiga saab igale neljale PIRQ -reale määrata kindla numbri. Muide, uues AwardBIOS 6.00-s näete, millised seadmed (ka sisseehitatud) kasutavad teatud liini. Vaadake lihtsalt parem pool BIOS -i seadistuskuva: fotol on näha, kuidas hõljutasin kursorit üksuse „Slot 1/5 use IRQ no.” Kohal ja paremal ilmus kiri „Display Contr.”. See tähendab, et videokaart kasutab esimest PIRQ -rida. Kui panen nüüd "Auto" asemel suvalise numbri, lülitatakse videokaart sellele katkestusele.

IRQ numbrite eraldamine Windowsi tööriistad
Teisel korral eraldatakse katkestusnumbrid operatsioonisüsteem... Nagu minu katsed näitasid, hakkab Windows "98 häirima BIOS -i toiminguid" oomi ainult äärmuslikel juhtudel. Kui teil on tavaline BIOS, pole siin kirjeldatud tehnikaid vaja.
Tuleb märkida, et IRQ jagamise ja dünaamiliste jaotamismehhanismide õige toimimine nõuab, et Windows tunneks kiibistiku ära. emaplaat ja allalaaditud IRQ Miniport. Mida uuem on Windowsi versioon, seda rohkem kiibistikke toetab oma miniport (PCIIMP.PCI). Siiski on alati parem seda turvaliselt mängida ja installida uusimad kiibistiku draiverid.
Windows 98 puhul juhib IRQ jaotussüsteemi tavaline seadmehaldur. Loendis süsteemi seadmed peate leidma PCI -siini. Selle omadustes on spetsiaalne sakk (vt ekraanipilti). Kui kõik on õigesti konfigureeritud, mainitakse seal miniporti ("edukalt laaditud") ja juhtelementi PCI siin(Roolimine) on lubatud. Seega on Windows "98 -l vahend katkestusnumbrite jaotuse kontrollimiseks füüsiliste liinide vahel. Kuid kuna BIOS saab sellega sageli hästi hakkama, pole see mehhanism seotud.
Kuid mõnikord on see lihtsalt vajalik. Nagu ma juba ütlesin, ei tohiks PCI -seadmed olla vastuolus, kui nad kasutavad sama loogilist katkestust. Teine asi on ISA -seadmed, mis sisaldavad ka COM- ja LPT -porte. Kui seade ei ole Plug & Play, ei pruugi BIOS seda märgata, andes katkestuse, millega see on hõivatud, PCI-seadmele. Siis peate katkestuse reserveerima. Seda tehakse dispetšeris Windowsi seadmed"98: valige seade" Arvuti ", helistage selle atribuutidele, lülitage teisele vahelehele. Siis on kõik selge.
Lisaks koondamisele saate seadmele otse katkestusnumbri määrata. Selleks peate leidma selle atribuutidest vahekaardi "Ressursid", keelama automaatne häälestamine ja proovige määratud katkestusnumbrit muuta.
Kahjuks ei tööta see alati.
Windows 2000 on spetsiaalne süsteem. Kui teil on kaasaegne arvuti siis toetab see tõenäoliselt ACPI konfiguratsiooniliidest. Sellisel juhul ignoreerib Windows 2000 BIOS -i toiminguid täielikult ja "riputab" kõik PCI -seadmed ühele loogilisele katkestusele. Üldiselt töötab see hästi (kui ISA -d pole), kuid mõnikord juhtub probleeme. Katkestuste numbrite muutmiseks peate kas muutma HAL -i tuuma või installima Windows 2000 uuesti, kui ACPI on BIOS -is keelatud. Tuuma asendamine toimub järgmiselt: seadmehalduris valige "Arvuti" / "Arvuti ACPI -ga", muutke draiver " Tavaline arvuti", taaskäivitage. Kui see ei tööta, peate Windows 2000 uuesti installima.
Loodan, et ülaltoodud teave aitab teil riistvara tõrgete vastu võitlemisel. Ja pidage meeles: enamik tekkivaid probleeme on seotud madal tase arvutioskus arvuti hosti. Seetõttu peate alati püüdlema eneseharimise poole, siis on probleeme vähem ja need, mis tekivad, ei tundu lahendamatud.

Tõenäoliselt on kõige levinum katkestuskonflikt (IRQ) seotud kaasaegses versioonis leiduva integreeritud jadapordiga COM2 emaplaadid ja sisemine modem (see tähendab täieõiguslikku sisemist PC-modemit, mitte tarkvaramodemit, mida nimetatakse ka WinModemiks). Fakt on see, et täieõiguslik sisemodem toetab juba teatud pordi; vaikimisi on see port määratud COM2 -le, kusjuures süsteem lubab tavaliselt ka teist jadaporti. Seega on süsteemil kaks identset porti, mis kasutavad samu ressursse (katkestused ja I / O pordi aadressid).

Selle probleemi lahendus on üsna lihtne: sisenege süsteemi BIOS-i seadistusse ja keelake sisseehitatud COM2-port. Lisaks võite kaaluda COM1 -pordi keelamist, mida kasutatakse ka harva. Kasutamata COMx -portide keelamine on üks paremaid viise teiste seadmete vabastuskatkestused (IRQ).

Teine levinud konflikt on jadaportidega. Tavalises katkestuste kaardistamise tabelis olete ehk märganud, et IRQ3 on määratud COM2 -le ja IRQ4 COM1 -le. Probleem tekib siis, kui süsteemile lisatakse täiendavad COM3 ja / või COM4 pordid ning tasuta katkestusi ei määrata neile käsitsi (vaikimisi kasutavad nad samu IRQ3 ja IRQ4).

Täiendavaid tüsistusi toob kaasa asjaolu, et mõned pordikaardid ei võimalda valida muid katkestusi peale IRQ3 ja IRQ4. Selle tulemusel põhjustab IRQ3 määramine COM4 -le ja IRQ4 COM3 -le põhjustab konflikti COM1 ja COM2 -ga, kes kasutavad ka neid katkestusi: kaks porti ei saa sama katkestuskontrolli kanalit korraga kasutada. DOS -is töötades oli see lubatud, kuna selles sai korraga täita ainult ühte ülesannet, kuid Windowsis ja OS / 2 -s on see täiesti võimatu. Selleks, et arvutis saaks kasutada rohkem kui kahte paralleelset COM -porti, on vaja mitme pordi tahvlit, mis võimaldab lisaks numbritele 3 ja 4 antud katkestustele kasutada täiendavaid katkestusi. Katkestuste jagamine on põhimõtteliselt vastuvõetav seadmete puhul, mis tavaliselt ei tööta samaaegselt (või pidevalt). Pordid ei kuulu sellesse seadmekategooriasse. Katkestust on võimalik kasutada skanneri ja modemi jaoks koos, kuid sel juhul tekib nende samaaegsel kasutamisel konflikt. Õnneks enamik seadmeid, mis varem kasutasid porte (näiteks hiired, etikettprinterid ja välised modemid) ühendage nüüd USB -portidega, seega on probleeme mitme pordi toetamisega. kaasaegsed kasutajad arvutid ei tohiks ilmuda.

Kui peate siiski kasutama mitut jadaporti, parim lahendus on mitme pordiga kaardi ostmine, mis annab võimaluse seada vastuolulisi katkestusi või sisaldab oma protsessorit, mis võimaldab ühe süsteemi katkestuse jaotada mitme pordi vahel. Mõnel vanemal mitmeportiga kaardil oli ISA liides, kuid täna on need asendatud PCI -kaartidega, mis pakuvad ka jõudluseeliseid.

Kui mõned tabelis nimetatud seadmed puuduvad (näiteks sisseehitatud hiireport (IRQ12) või teine ​​paralleelport (IRQ5)), võib nende katkestusi lugeda kättesaadavaks. Näiteks teine ​​paralleelport on äärmiselt haruldane, seetõttu kasutatakse heli adapterkaardi puhul kõige sagedamini sellele määratud IRQ5 katkestust. Samamoodi kasutatakse IRQ15 katkestust sekundaarse IDE kontrolleri jaoks. Kui süsteemis pole sekundaarse IDE -kanaliga ühendatud kettaseadmeid, saate selle kontrolleri BIOS -is keelata, vabastades seeläbi teiste seadmete jaoks uue katkestuse.

Tuleb märkida, et lihtsaim viis katkestusseadete kontrollimiseks on Windowsi seadmehaldur. Operatsioonisüsteemis Windows 95b on programm HWDIAG ja Windows 98 ja uuemates versioonides hilisemad versioonid- Konsooli süsteemiteave. Need utiliidid võimaldavad teil saada üksikasjalikku aruannet süsteemi ressursside kasutamise kohta, samuti installitud draiverid seadmed ja Windowsi registrikirjed iga seadme jaoks. V Windowsi süsteemid XP ja Vista puhul annab süsteemiteabe programm Msinfo32.

Suurema võimaliku jagatud katkestuste arvu tagamiseks kaasaegses süsteemis ilma ISA -pistikuteta toimige süsteemi BIOS -iga töötades järgmiselt.

  1. Keelake süsteemi BIOS -is kõik kasutamata pordid. Näiteks kui kasutatakse jada- ja paralleelpordi asemel USB -pordid, keelake need. Selle tulemusena saab vabastada kuni kolm katkestust.
  2. Määrake PCI / PnP -seadmete jaoks saadaolevate katkestuste loendis 1. etapis vabastatud IRQ -katkestus. Sõltuvalt BIOS versioon vastavad parameetrid on saadaval jaotises PnP / PCI ressursside välistamine või PnP / PCI konfiguratsioon.
  3. Aktiveerige suvand Lähtesta konfiguratsiooniandmed, et kustutada CMQ -mälus olevad IRQ -marsruutimistabelid.
  4. Salvestage muudatused ja väljuge BIOS -i häälestusprogrammist.

On hea, kui arvuti pärast kokkupanekut või kavandatud moderniseerimist käivitub ja töötab esimest korda stabiilselt ja tõrgeteta. Palju hullem on siis, kui tekivad ootamatud probleemid - spontaanne taaskäivitamine ja külmutamine, programmide krahh, seadmete töövõimetus või "nähtamatus" jne. Esimene põhjus, mis sellisel juhul tavaliselt meelde tuleb, on katkestuskonflikt. Kas me teame hästi selle nähtuse olemust, kas oleme piisavalt valmis selle vastu võitlemiseks?

Mis on IRQ


Katkestused on süsteemi mehhanism tekkivatele sündmustele reageerimiseks. Riistvara katkestused, mida tavaliselt nimetatakse IRQ -deks (Interrupt ReQuest), on füüsilised signaalid, mida seadme kontroller kasutab protsessori teavitamiseks mõne päringu töötlemisest. Tavaliselt näeb katkestuste käsitlemise skeem välja selline:
1) protsessor saab katkestussignaali ja selle numbri;
2) katkestuse töötlemise eest vastutava programmi aadressi leidmiseks antud numbri abil kasutatakse spetsiaalset tabelit - katkestuste käitleja;
3) protsessor peatab praeguse töö ja lülitub käitleja täitmisele (üldjuhul on see mingi draiver);
4) juht pääseb seadme juurde ja kontrollib katkestuse põhjust;
5) käivitatakse soovitud toimingud - lähtestamine, seadme konfigureerimine, andmevahetus jne.
6) draiver väljub ja protsessor naaseb katkestatud ülesande juurde.
Ilmselgelt peavad katkestusmehhanismi korrektseks toimimiseks olema täidetud kaks tingimust: esiteks peab päringusignaal jõudma protsessorini ja teiseks peab käitleja juht sellele signaalile õigesti reageerima. Konflikti korral ei ole teine ​​tingimus täidetud: katkestussignaal saabub, kuid reaktsioon sellele osutub valeks, mille tagajärjel on meil (parimal juhul) mittetöötav seade.

Konflikt

Võime öelda, et konflikt on olukord, kus mitu objekti üritavad üheaegselt juurde pääseda ressursile, mis on mõeldud ainult ühele neist. Katkestusvõitlus tekib siis, kui mitu seadet kasutavad päringu signaali saatmiseks sama katkestusliini ja puudub samaaegsete päringute käsitlemise mehhanism. Kui juht, kes juhib kontrolli, ei tööta päringu saatnud seadmega, ilmneb tõrge või üks seadmetest lihtsalt ei tööta.
Tekib küsimus: kas mitut seadet saab kasutada sama katkestusliini või on see põhimõtteliselt võimatu? Lõppude lõpuks, kui juht suudab kindlaks teha, kellelt päring täpselt pärines, reageerib see ainult "oma" seadme signaalidele, ignoreerides kõiki teisi. Aga selles tuleb mingil viisil eelnevalt kokku leppida, vastasel juhul on konflikt paratamatu.
Kohalik PCI -siin on kavandatud katkestuste jagamist silmas pidades. Iga PCI -seade peab õigesti töötama samal katkestusliinil teiste PCI -seadmetega. Seda tehakse järgmiselt: signaali olemasolu fakti katkestusliinil ei määra mitte serv, s.t. pingetaseme muutus, kuid juba teatud pinge olemasolu tõttu. Mitmed seadmed võivad liini pinget korraga muuta, muutudes justkui teenindusjärjekorda.
Seega ei ole sama IRQ jagamine mitme PCI -seadme vahel definitsiooni järgi konflikt. Kuid mõnikord tekivad probleemid. Esiteks, kõik PCI -seadmed ei tööta teistega samal katkestusliinil õigesti. Teiseks on juhtidel mõnikord vigu, mille tõttu nad ei suuda signaali allikat õigesti määrata, häirides teisi draivereid. Kolmandaks, kõik seadmed ei tööta PCI siinil; näiteks ISA -seadmed, mis sisaldavad näiteks COM / LPT pordikontrollereid, ei saa katkestusi teistega jagada. Et konfliktide vältimiseks või lahendamiseks selgeks saada, peate mõistma, kuidas IRQ -sid hallatakse.

Riistvarakatkestuste korraldamine personaalarvutis


Nagu teate, algasid personaalarvutid IBM -i arvutiga. Selle arhitektuur sisaldas kaheksat riistvara katkestamise (IRQ) liini, mida juhtis spetsiaalne kontroller. Igaühele neist määrati number, mis määras katkestuse prioriteedi ja selle käitleja aadressi (nn katkestusvektor). Uus arhitektuur, IBM PC AT, pakkus veel kaheksa katkestusliini, mille jaoks kasutati teist kontrollerit, mis oli ühendatud esimese kontrolleri ühe katkestusliiniga. Kahjuks jäi see arhitektuur viimaseks pärast seda, kui IBM kaotas oma loodud platvormi arendamise juhtimise võimaluse, nii et kõigil kaasaegsetel arvutitel on endiselt vaid kuusteist katkestust, millest ühte kasutab teine ​​kontroller.
IBM PC AT arvutil oli ainult üks siin, mille kaudu seadmed said protsessori ja mäluga suhelda - ISA. Enamik katkestusliine määrati standardsetele ISA -seadmetele, ülejäänud olid reserveeritud tulevikuks. Kui see tulevik saabus, selgus, et uus universaalne PCI -buss sai ainult neli tasuta katkestust. Seetõttu leiutati nutikas mehhanism katkestuste jagamiseks (IRQ Sharing) ja numbrite dünaamiliseks ümberdefineerimiseks (IRQ Steering või Mapping).
PCI -seadme katkestamise juhtimismehhanismi olemus on järgmine. Üldiselt on neli füüsilist PCI katkestusliini nimega PIRQ0, PIRQ1, PIRQ2 ja PIRQ3. Need on ühendatud katkestuskontrolleriga. Tundub, et igal PCI -seadmel on neli pistikut, nimega INT A, INT B, INT C ja INT D. Liinid saab ühendada pistikutega suvalises järjekorras. Näiteks esimese PCI pesa jaoks saate teha järgmise juhtmestiku: PIRQ0 - INT A, PIRQ1 - INT B, PIRQ2 - INT C, PIRQ3 - INT D. Ja teise jaoks - teistmoodi: PIRQ0 - INT B , PIRQ1 - INT C, PIRQ2 - INT D, PIRQ3 - INT A. Tavaliselt vajab seade ainult ühte katkestusliini, mis on ühendatud INT A -ga. Esimesesse pesasse paigaldamisel kasutab seade PIRQ0 liini ja teises pesas PIRQ1 joon on samal tihvtil. Seega kasutavad erinevates pesades olevad seadmed erinevaid füüsilisi katkestusliine. Riistvarakonflikt nende vahel kõrvaldatakse.
AGP siin, mis on tegelikult PCI spetsiaalne modifikatsioon, kasutab ka ühte PIRQ liini - tavaliselt PIRQ0.
Kaasaegsete süsteemide puhul ei piisa neljast liinist, seega kasutavad uued kiibistikud sageli kaheksat PIRQ -liini, mis on erinevatel kombinatsioonidel samamoodi ühendatud PCI -pesade ja tahvlisse sisseehitatud seadmetega.
PIRQ liinid on ühendatud katkestuskontrolleriga. Neile, nagu ka teistele ridadele, määratakse loogilised IRQ -numbrid. Kui samal füüsilisel real on mitu seadet (ja see on lubatud), on neil kõigil sama IRQ -number. Kui seadmed asuvad erinevatel füüsilistel liinidel, saavad nad siiski vastu võtta samu IRQ -numbreid. Tavalised draiverid võimaldavad neil vabalt töötada ilma jõudlust ohverdamata, kuna PCI -siin saab jäädvustada ainult ühe seadmega. Peaasi on ära tunda, millisest seadmest signaal tuli.
Tänu kurikuulsale Plug & Play mehhanismile määratakse PIRQ reanumbrid automaatselt. Kuid on ka Plug & Play ISA seadmeid. Samuti on neil võimalus automaatselt saada IRQ -number. Kuid nende katkestusliin kuulub ainult neile ja kui üks PIRQ -liinidest saab sama numbri, tekib lahendamatu konflikt.
Niisiis arvasime välja, et PCI -seadmetel ei tohiks olla IRQ -konfliktiprobleeme. Kui nad muidugi töötavad õigesti ja see pole alati nii. Lisaks peavad autojuhid toetama jagamise katkestamise mehhanismi. ISA seadmed ei tea, kuidas katkestusliine jagada, ja on seetõttu konfliktide provokaatorid. Seetõttu taandub konfliktide kõrvaldamise probleem numbrite õigele jaotamisele (probleemide allikaks on ISA -seadmed ja "kõverad" draiverid) või eraldamisele mööda erinevaid füüsilisi jooni ("kõverad" PCI -kontrollerid).
Vaatame, kuidas numbrid süsteemis jaotatakse ja kuidas saame seda protsessi mõjutada.

Katkesta kaart

Nagu ma ütlesin, on enamik IRQ -numbreid juba standardseadmete poolt võetud või õigemini määratud nende katkestusliinidele. Lähme läbi tellimuse:
0 - süsteemi taimer (number on alati hõivatud);
1 - klaviatuur (number on alati hõivatud);
2 - teine ​​katkestuskontroller (alati hõivatud);
3 - COM2 -port (saab keelata ja numbri vabastada);
4 - COM1 -port (saab keelata ja numbri vabastada);
5 - LPT2 port (tavaliselt on number vaba);
6 - disketikontroller (saab keelata ja numbri vabastada);
7 - LPT1 port (kui mitte EPP või ECP režiimis, siis on number vaba);
8 - reaalajas kell (alati hõivatud);
9 - tasuta;
10 - tasuta;
11 - tasuta;
12 - PS / 2 hiir (võib olla tasuta, kui sellist hiirt pole);
13 - kaasprotsessor (alati hõivatud);
14 ja 15 - kõvaketta kontroller (saab keelata ja numbri vabastada).
Tavalises süsteemis on saadaval numbrid 5, 7, 9-11, see tähendab viis viieteistkümnest. Lisaks saate COM2 ja LPT1 pordid turvaliselt keelata, suurendades tasuta numbrite arvu seitsmeni. Tasuta ei tähenda, et nad pole hõivatud, lihtsalt nende vahel on võimalik tasuta segada.
Igal süsteemil on kolm standardset PCI -seadet - ACPI, USB -kontrollerid ja videokaart, millest igaüks võtab ühe numbri. Keeruline seade (näiteks helikaart) võib nõuda mitut rida - INT A, INT B jne. nende komponentide jaoks, mis ei lähe üksteisega vastuollu (ju erinevad füüsilised jooned), kuid teiste seadmetega - lihtsalt.
Saate teada, kuidas katkestusnumbreid praegu eraldatakse mitmel viisil. Arvuti alglaadimise alguses ilmub teksti konfiguratsioonitabel. Kohe pärast seda on määratud IRQ -numbriga PCI -seadmete loend (vt ekraanipilti). Teine viis töötab operatsioonisüsteemis Windows 9x. Juhtpaneelil on ikoon "Süsteem" ja kutsutud apleti vahekaart "Seadmed". Valime seadme "Arvuti" atribuudid ja kõik seadmed kuvatakse seal, näidates nende IRQ -d (vt ekraanipilti).
Operatsioonisüsteemis Windows 2000 pole meil juurdepääsu katkestuste haldamisele, seega peame IRQ loendi vaatamiseks kasutama tavalist teabeutiliiti (juhtpaneel / haldustööriistad / arvutihaldus / süsteemiteave / riistvararessursid).

BIOS IRQ eraldamine

Süsteemis eraldatakse IRQ numbrid füüsiliste ridade vahel kaks korda. Esimest korda teeb seda süsteemi BIOS süsteemi käivitamisel. Igale Plug & Play seadmele (kõik PCI, kaasaegne ISA, integreeritud seadmed) või õigemini selle katkestusliinile määratakse üks kümnest võimalikust numbrist. Kui numbreid pole piisavalt, saab mitu rida ühe ühise. Kui need on PIRQ liinid, siis pole midagi - tavaliste draiverite ja operatsioonisüsteemi toe juuresolekul (vt selle kohta lähemalt allpool) kõik toimib. Ja kui mitu ISA -seadet või PCI- ja ISA -seadet saavad sama numbri, on konflikt lihtsalt vältimatu ja siis on vaja levitamisprotsessi sekkuda.
Kõigepealt peate keelama kõik kasutamata ISA -seadmed (süsteemides, kus pole ISA -pesasid, need on ka olemas) - pordid COM1, COM2 ja disketiseade. Samuti saate keelata LPT pordi EPP ja ECP režiimid, siis saab IRQ7 katkestus kättesaadavaks.
BIOS -i seadistuses vajame jaotist "PCI / PNP konfiguratsioon". IRQ -numbrite eraldamist saab mõjutada kahel viisil: blokeerida konkreetne number ja määrata otse PIRQ -reanumber.
Esimene meetod on saadaval kõigi BIOS -ide jaoks: leidke üksuste loend "IRQ x by:" (uues BIOS -is on see peidetud alammenüüs "IRQ Resources"). Need katkestused, mis tuleks määrata ainult ISA -seadmetele, peaksid olema seadistatud vanale ISA -le. Seega jäetakse need katkestused PCI -seadmetele numbrite määramisel vahele. Seda tuleks teha, kui ISA -seade püsib PCI -seadmega ühel katkestusel, mille tõttu mõlemad ei tööta. Siis leiame selle IRQ numbri ja blokeerime selle BIOS -i seadistuses. PCI -seade liigub uuele IRQ -numbrile, kuid ISA -seade jääb alles. Konflikt lahendatud.
Teine mugavam viis IRQ numbrite juhtimiseks on otsene määramine. Samas BIOS -i seadistamise alammenüüs võivad olla üksused kujul "Pesa X kasutage IRQ" (muud nimed: "PIRQx kasutage IRQ", "PCI pesa x prioriteet", "INT Pin x IRQ").
Nende abiga saab igale neljale PIRQ -reale määrata kindla numbri. Muide, uues AwardBIOS 6.00-s näete täpselt, millised seadmed (ka sisseehitatud) kasutavad seda või teist liini. Vaadake lihtsalt BIOS -i seadistusekraani paremat külge: fotol on näha, kuidas hõljutasin kursorit üksuse „Slot 1/5 use IRQ no.“ Kohal ja paremale poole ilmus kiri „Display Contr.“. See tähendab, et videokaart kasutab esimest PIRQ -rida. Kui panen nüüd "Auto" asemel suvalise numbri, lülitatakse videokaart sellele katkestusele.

IRQ -de eraldamine Windowsi abil

Teisel korral eraldab katkestusnumbrid operatsioonisüsteem. Nagu minu katsed näitasid, hakkab Windows "98 häirima BIOS -i toiminguid" oomi ainult äärmuslikel juhtudel. Kui teil on tavaline BIOS, pole siin kirjeldatud tehnikaid vaja.
Tuleb märkida, et IRQ jagamise ja dünaamilise eraldamise mehhanismide nõuetekohaseks toimimiseks peab Windows ära tundma emaplaadi kiibistiku ja laadima IRQ Miniporti. Mida uuem on Windowsi versioon, seda rohkem kiibistikke toetab oma miniport (PCIIMP.PCI). Siiski on alati parem seda turvaliselt mängida ja installida uusimad kiibistiku draiverid.
Windows 98 puhul juhitakse IRQ jaotussüsteemi standardse seadmehalduri abil. Leidke süsteemiseadmete loendist PCI siin. Selle omadustes on spetsiaalne sakk (vt ekraanipilti). Kui kõik on õigesti konfigureeritud, mainitakse seal miniporti ("edukalt laaditud") ja lubatakse PCI -siinihaldus (juhtimine). Seega on Windows "98 -l vahend katkestusnumbrite jaotuse kontrollimiseks füüsiliste liinide vahel. Kuid kuna BIOS saab sellega sageli hästi hakkama, pole see mehhanism seotud.
Kuid mõnikord on see lihtsalt vajalik. Nagu ma juba ütlesin, ei tohiks PCI -seadmed olla vastuolus, kui nad kasutavad sama loogilist katkestust. Teine asi on ISA -seadmed, mis sisaldavad ka COM- ja LPT -porte. Kui seade ei ole Plug & Play, ei pruugi BIOS seda märgata, andes katkestuse, millega see on hõivatud, PCI-seadmele. Siis peate katkestuse reserveerima. Seda tehakse Windows 98 seadmehalduris: valige arvuti, helistage selle atribuutidele, lülitage teisele vahelehele.
Lisaks koondamisele saate seadmele otse katkestusnumbri määrata. Selleks peate leidma selle atribuutidest vahekaardi "Ressursid", keelama automaatse konfigureerimise ja proovima määratud katkestusnumbrit muuta.
Kahjuks ei tööta see alati.
Windows 2000 on spetsiaalne süsteem. Kui teil on kaasaegne arvuti, toetab see tõenäoliselt ACPI konfiguratsiooniliidest. Sellisel juhul ignoreerib Windows 2000 BIOS -i toiminguid täielikult ja "riputab" kõik PCI -seadmed ühele loogilisele katkestusele. Üldiselt töötab see hästi (kui ISA -d pole), kuid mõnikord juhtub probleeme. Katkestusnumbrite muutmiseks muutke HAL -i tuuma või installige Windows 2000 uuesti, kui ACPI on BIOS -is keelatud. Tuuma asendamine toimub järgmiselt: seadmehalduris valige "Arvuti" / "Arvuti ACPI -ga", muutke draiver "Standardarvutiks", taaskäivitage. Kui see ei aita, peate Windows 2000 uuesti installima.
Loodan, et ülaltoodud teave aitab teil riistvara tõrgete vastu võitlemisel. Ja pidage meeles: enamik tekkivaid probleeme on seotud arvutiomaniku vähese arvutioskusega. Seetõttu peate alati püüdlema eneseharimise poole, siis on probleeme vähem ja need, mis tekivad, ei tundu lahendamatud.