IRQ-konflikter. Afbryd konflikter To enheder i én irq hvad skal man gøre

En konflikt er en situation, hvor flere objekter samtidig forsøger at få adgang til en ressource, der kun er beregnet til én af dem. Afbrydelsesstrid opstår, når flere enheder bruger den samme afbrydelseslinje til at sende et anmodningssignal, og der er ingen mekanisme til at håndtere konkurrerende anmodninger. Hvis chaufføren, når den modtager kontrol, ikke virker med den enhed, der sendte anmodningen, så opstår der enten en fejl, eller også virker en af ​​enhederne simpelthen ikke.

Spørgsmålet opstår: kan flere enheder bruge den samme afbrydelseslinje, eller er dette dybest set umuligt? Når alt kommer til alt, hvis chaufføren kan bestemme, hvem anmodningen nøjagtigt kom fra, vil den kun reagere på signaler fra "sin" enhed og ignorere alle andre. Men dette skal aftales på en eller anden måde på forhånd, ellers er konflikt uundgåelig.

Den lokale PCI-bus blev designet til at dele afbrydelser. Hver PCI-enhed skal fungere korrekt på den samme afbrydelseslinje som andre PCI-enheder. Dette gøres som følger: tilstedeværelsen af ​​et signal på afbrydelseslinjen bestemmes ikke af kanten, dvs. en ændring i spændingsniveauet, men ved selve tilstedeværelsen af ​​en bestemt spænding. Flere enheder kan ændre spændingen i ledningen på én gang og stå i kø til service.

Således er deling af én IRQ af flere PCI-enheder ikke en konflikt per definition (fig.). Nogle gange opstår der dog stadig problemer. For det første er det ikke alle PCI-enheder, der fungerer korrekt på den samme afbrydelseslinje som andre. For det andet har drivere nogle gange fejl, der forhindrer dem i at registrere signalkilden korrekt, hvilket forstyrrer andre drivere. For det tredje fungerer ikke alle enheder på PCI-bussen; for eksempel kan ISA-enheder, som for eksempel inkluderer COM/LPT-portcontrollere, ikke dele afbrydelser med andre.

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

Ris. Win2000 IRQ MAP - IO APIC - Via KT266a Chipset

Som et resultat er situationer mulige, når computeren begynder at fryse ofte, nægter at udføre nogen funktioner eller endda bare falder ind i den såkaldte "dødens blå skærm."

Apic (avanceret programmerbar interruptcontroller)

Som vist ovenfor er afbrydelseslinjen en meget knap ressource for en computer. Men med udviklingen af ​​computerindustrien stiger antallet af forskellige eksterne enheder i en computer konstant. For eksempel kan et bundkort have 5-6 PCI-slots, et AGP-slot, en indbygget IDE-controller, en indbygget SCSI-controller, en indbygget 1/2-ports netværksadapter osv. Og alle disse enheder kræver afbryder. 16 IRQ-linjer blev efterhånden ikke nok.

APIC er en interrupt controller, der giver dig mulighed for at bruge 24 hardware interrupts i stedet for 16. Grænsen på 16 hardware interrupts, som ikke har ændret sig siden 1982, begrænsede installationen af ​​yderligere enheder i en personlig computer. I slutningen af ​​2001 dukkede de første bundkort med APIC op.

Ris. Afbryd systemet i et multiprocessormiljø.

Den tidligere beskrivelse gælder for PIC'er designet til enkeltprocessorsystemer. Hvis systemet omfatter to eller flere processorer, er denne tilgang ikke længere mulig, og der kræves mere komplekse PIC'er.

Alle moderne x86-processorer inkluderer en lokal APIC. Hver lokal APIC har 32-bit registre, et internt ur, en lokal timer og to yderligere IRQ-linjer: LINT0 og LINT1, reserveret til lokale APIC-afbrydelser. Alle lokale APIC'er er forbundet til en ekstern input/output APIC (I/O APIC).

I/O APIC'en indeholder et sæt af 24 IRQ-linjer, en 24-input interrupt-videresendelsestabel, programmerbare registre og en beskedblok til afsendelse og modtagelse af beskeder på APIC-bussen. I modsætning til 8259A IRQ-stifterne er afbrydelsesprioritet ikke bundet til pin-nummer.

Hver post i interrupt-videresendelsestabellen kan programmeres individuelt til at afspejle interrupt-vektoren og dens prioritet, den processor, der vil håndtere afbrydelsen, og hvordan denne processor vil blive valgt. Informationen i interrupt-videresendelsestabellen bruges til at oversætte hvert eksternt signal til en meddelelse adresseret til en eller flere lokale APIC'er via APIC-bussen.

Statisk fordeling

IRQ-signalet leveres til den lokale APIC, der er angivet i den relevante interrupt-videresendelsestabelpost. Afbrydelsen leveres til én specifik CPU, flere CPU'er eller alle CPU'er.

Dynamisk distribution

IRQ-signalet leveres til den lokale APIC for den processor, der udfører processen med den laveste prioritet.

Hver lokal APIC har et programmerbart jobprioritetsregister, som bruges til at beregne prioriteten af ​​den aktuelle proces. Intel antager, at dette register vil blive ændret af operativsystemkernen, hver gang en proces skifter.

Ud over at distribuere interrupts på tværs af multi-APIC-processorer, tillader systemet CPU'en at generere interprocessor-interrupts. Når en CPU ønsker at sende en interrupt til en anden CPU, gemmer den interrupt-vektoren og ID'et for den lokale mål-APIC i dens lokale APIC's Interrupt Command Register (ICR). Meddelelsen sendes derefter over APIC-bussen til den lokale mål-API, som udsender den passende afbrydelse til dens CPU.

I dag inkluderer mange enkeltprocessorsystemer en I/O APIC-chip, som kan konfigureres på to måder:

1. Som standard 8259A PIC tilsluttet CPU. Lokal APIC er deaktiveret, og to linjer LINT0 og LINT1 er konfigureret som INTR- og NMI-ben.

2. Som standard ekstern I/O APIC. Lokal APIC er aktiveret, og alle eksterne afbrydelser modtages via I/O APIC.

I denne artikel vil jeg gerne tale om, hvad der måske aldrig minder dig om dig selv, og endda kan koste dine nerver efter at have samlet eller opgraderet en computer: fryser, spontane genstarter, vedvarende modvilje mod at starte, konstant "dødens blå skærme", manglende evne til at opdage enheder, forkert arbejde... Listen fortsætter i lang tid. Meget ofte opstår sådanne "fejl" netop på grund af afbrydelser, og hvis du er interesseret i computere, skal du helt sikkert vide, hvor og hvorfor sådanne problemer opstår, og nok vigtigst af alt, hvordan du skal håndtere dem.

Hvad er det?

Interrupts eller IRQ (Interrupt Request) er signaler, der fortæller processoren, at det er nødvendigt at behandle en anmodning modtaget fra en enhed, og controlleren for netop denne enhed sender disse signaler til processoren, det vil sige ved hjælp af IRQ processoren reagerer på forskellige begivenheder.

Det sker bare sådan, at når man udvikler en hvilken som helst teknologi, skabes nogle begrænsninger, selvfølgelig ikke med vilje, men på grund af en eller anden egenskab ved denne innovation eller simpelthen en mangel. Det samme skete med afbrydelser. Oprindeligt, da IBM udviklede IBM PC-arkitekturen (allerede i 1980-81 af det sidste årtusinde), var der ikke så mange af dem (8), men derefter tilføjede de det samme antal og tog et "gammelt" afbrydelse under kontrol af de nye, men jeg vil ikke sige, at dette var nok. Og så holdt IBM op med at være den eneste, der arbejdede på pc-platformen, og for at undgå inkompatibilitet med andre, tilføjede ingen flere interrupts.

Hvilke problemer kan der være?

Da IBM PC-arkitekturen lige var ved at blive skabt, blev der lavet få interrupts, kun otte, som jeg allerede skrev, og de blev givet til alt muligt "sludder", som COM-porte, selvom IBM-ingeniørerne er retfærdiggjorte af, at der var ikke meget valg, det måtte de lede efter senere. Det er klart, at ingen forudsagde en sådan fremtid for platformen, så for dens højdepunkt, det vil sige muligheden for udvidelse, var der kun en afbrydelse tilbage, som derefter blev besat af controlleren for den anden "otte" IRQ. Det er dog værd at bemærke, at yderligere interrupts kunne (og kan) frigives ved at deaktivere de forskellige ISA-enheder, der optager dem: porte, diskettedrev. Så der opstår fejl eller konflikter, når flere enheder forsøger at fungere på samme afbrydelse. Dette er meget problematisk, fordi mange moderne enheder, især lydkort og alle slags multimedieprocessorer, bærer flere enheder på én gang. Selv de enkleste "lydhøjttalere" har mindst fire enheder ombord. Sådan ser et interrupt-kort ud i en moderne computer:

IRQ Beskrivelse
0 Timer
1 Tastatur
2 Controller IRQ 8-15
3 COM2
4 COM1
5 LPT2
6 FDD controller
7 LPT1
8 Realtidsur
9 Gratis
10 Gratis
11 Gratis
12 PS/2 (til mus)
13 Coprocessor
14 HDD controller
15 HDD controller

Så hvad betyder det? Kan du kun installere tre ekstra enheder på en moderne computer? At dømme efter bordet, ja, men ikke alt er så skræmmende. Har du for eksempel en LPT2-port? Jeg tvivler meget på det. Det betyder, at hvis der ikke er nogen port, så er afbrydelsen gratis. Så teoretisk set kan følgende afbrydelser frigives:

IRQ Beskrivelse
3 Porten kan frigøres ved at deaktivere den i BIOS. Jeg tror i de fleste tilfælde, at han allerede er fri.
4 Du kan også slå den fra. Men det bruges meget oftere: mus, modemer, scannere.
5 Jeg har allerede skrevet om dette. Næsten altid gratis.
6 Hvis du samler en ny computer, især til hjemmet, er fordelene ved den gode gamle flopper meget mindre end selv for et par år siden. Mange mennesker har allerede CD-RW-drev. Mere plads, mere pålidelig, hurtigere, selvom det er for tidligt at begrave FDD... Floppet kan deaktiveres og frigøre IRQ.
7 Hvis du har en USB-printer, kan du begrave...
12 De fleste moderne computere har mus som denne. Du kan installere en gnaver på COM, men du vil blokere en anden interrupt, du kan også købe en mus på USB, men dette vil være en manisk kamp for IRQ :)
14 Svag uden en skrue? Selvom det teoretisk set er muligt...
15 Selvom du kun har to IDE-enheder, er det bedre at adskille dem i to forskellige kanaler. Det vil virke hurtigere. Men afbrydelsen kan udløses.

Det er allerede nemmere. Men er dette nok? Jeg går ind i systemegenskaber (jeg har Windows XP Professional). Start -> Alle programmer -> Tilbehør -> Systemværktøjer -> Systemoplysninger. Længere i programvinduet: Hardwareressourcer -> Interrupts (IRQ). Dette er hvad jeg ser der:

IRQ Beskrivelse
0 System timer
1 Standard (101/102 taster) eller PS/2 Microsoft Natural tastatur
3 Seriel port (COM2)
4 Seriel port (COM1)
5 Conexant SoftK56 datafax talehøjttalertelefon
5
5 VIA Rev 5 USB Universal Host Controller
6 Standard floppy controller
8 CMOS og ur
9 Microsoft ACPI-kompatibelt system
10 Avance AC"97 Audio til VIA (R) Audio Controller
11 ATI RADEON VE DDR
12 PS/2 kompatibel mus
13 Numerisk databehandler
14 Primær IDE-kanal
15 Sekundær IDE-kanal

Spørgsmålet er: hvad laver mit interne modem, som i øvrigt har flere enheder, på én interrupt (fra den manglende LPT2) med to USB-controllere på én gang? Her er hvad.

Der er fundet en løsning

Det er begyndelsen af ​​halvfemserne. Systembussen (ISA - Industrial Standard Architecture), som fungerede ved processorfrekvensen, er allerede udtømt. Og alt sammen fordi den normalt kun kunne sende data ved en frekvens på 8 MHz, hvilket var ganske nok til alle slags PC/XT/AT/286/386. Og en så avanceret processor som 486'eren arbejdede med en meget højere frekvens. Jeg var nødt til at bremse denne bus, hvilket havde en negativ effekt på frekvensen. I 1989 blev en 32-bit EISA-bus udviklet - Extended Industrial Standard Architecture, som fungerede ved en frekvens på 10 MHz, men dette var blot et forsøg på at lave en cykel ud af en vogn, blot at rette ISA-fejl. Omkring dette tidspunkt skabte IBM MCA-bussen, som ikke fangede. VESA-bussen (eller VL-bussen) blev også skabt, men den kunne kun fungere med Intel 486. Og så i 1991, som et internt projekt, begyndte Intel at udvikle en helt ny lokal PCI-bus - Personal Component Interconnect. Det blev udviklet, kan man sige, fra bunden, og var ikke bare endnu et patch til ISA, hvilket gav det store fordele. For eksempel fungerede den ved en fast frekvens på 33 MHz, plus at processoren havde sin egen højhastighedsbus, som gjorde det muligt for den at få adgang til cachen og RAM ved den frekvens, den havde brug for, og ikke stole på de tekniske begrænsninger af lokal bus. Den nye PCI-bus kunne bære en anstændig belastning: op til ti slots. Alle videoadaptere er tilsluttet PCI, fordi AGP-bussen blot er en "påskruet" PCI med en højere clock-frekvens - 66 MHz. ISA-systembussen, som er til stede på alle moderne computere i form af COM- og LPT-porte og disketter, er også forbundet til den (via controlleren). Sandt nok bliver behovet for det mindre og mindre: flopdrev er inaktive på grund af fejlen i CD-R/RW, COM/LPT på grund af USB-fejlen... Altså denne PCI-bus, uden hvilken ikke en eneste moderne bundkort kan gøre, er blevet en løsning på problemet med afbrydelser.

Som du ved, kan computere kun fungere med "1" og "0" eller "der er et signal" og "der er intet signal." Hvis en ISA-enhed sætter et "1"-signal på linjen, så vil controlleren ikke reagere på dem, uanset hvordan du indstiller dine enheder til en anden enhed på samme linje. I tilfælde af PCI kontrollerer controlleren signalkilden og behandler den først derefter. Dette giver dig mulighed for at placere flere enheder på én interrupt. Teoretisk set, ja, men husk på, at du ikke skal "hænge" ældre og nyere enheder på den samme IRQ-kanal. Der er også en mening om, at man ikke skal sætte noget på samme interrupt med lydkortet, der kan opstå fejl. Dette sker selvfølgelig ikke altid, men det er bedre at tænke på noget mere pålideligt.

Vi er ankommet...

Du er et godt menneske, du har ikke noget imod din computer. Så du købte det fedeste videokort, printer, scanner, professionel lyd og forværrede denne sag med et modem, netværksadapter og endda en tv-tuner. Det var her "fejlene" startede. Uanset hvordan du bytter dem i slots, virker intet, uanset hvad. Hvad skal man gøre?

Indstilling afbrydes fra BIOS

Så på hvilket grundlag fordeles afbrydelser? Når systemet starter, distribuerer BIOS'en interrupts som følger: IRQ-linjerne på alle enheder, der understøtter Plug"n"Play-teknologi, og disse er alle moderne enheder, modtager en gratis afbrydelse. Er afbrydelserne overstået, men der stadig er afdækkede enheder, distribuerer BIOS dem i en anden runde, hvorfor det viser sig, at flere enheder modtog én afbrydelse. Alt vil fungere vidunderligt, hvis to PCI-enheder modtager en afbrydelse, men hvad nu hvis PCI + ISA eller ISA + ISA? Det er det, konflikt. Vi skal have fingrene i denne proces.

Dernæst er det værd at bemærke, at jeg bruger et Epox 8K3AP bundkort med Award BIOS 6.00PG. Den mest bekvemme og logiske måde at konfigurere IRQ'er på er at tildele dem manuelt. Gå til PCI/PnP-konfigurationer. Der er INT Pin n Assignment indstillinger (dette er mit, men du har muligvis også dette), og navne som Slot n Use IRQ (jeg husker præcis, det var sådan i Award BIOS v. 4.51 PG); eller sådan noget). Hvert punkt i denne menu svarer til en af ​​fire IRQ-linjer, så du kan tildele en anden interrupt til hver linje.

Der er en anden måde at omtildele IRQ'er. Gå til de samme PCI/PnP-konfigurationer, der er et IRQ-ressourceelement (for at gå dertil skal du indstille værdien af ​​ressourcer kontrolleret af parameteren til Manual), og det er præcis, hvad vi har brug for nu. Der vil være indstillinger for hver mulig afbrydelse. Jeg er ret sikker på, at alle numre vil have en mulighed relateret til PCI-bussen, for eksempel PCI/ISA eller PCI-enhed, det afhænger af din BIOS-version. Men vi har brug for en eller flere interrupts for at forblive savnet, det vil sige reserveret til ISA-enheder. Så på den interrupt, du vil forlade, indstiller du blot en værdi som Legacy ISA. I mere moderne computere er alt blevet meget enklere på grund af manglen på ISA-slots, hvilket betyder, at du ikke kan tilføje dine egne ISA-enheder, og selve systemet vil håndtere system, såsom et flop eller serielle/parallelle porte. I sådanne systemer vises værdien Reserveret i stedet for Legacy ISA-værdien, det vil sige, at du blot kan lade afbrydelsen være fri. Dette kan være nødvendigt i et ret teoretisk tilfælde, hvis du modtog en enhed, der ikke understøtter Plug"n"Play, så vil BIOS simpelthen ikke se den.

Der er et andet nyttigt punkt i den samme menu. Oplysninger om installeret hardware gemmes i ESCD (Extended System Configuration Data). Disse oplysninger kontrolleres hver gang, før du får adgang til harddisken for at starte operativsystemet. Naturligvis, når konfigurationen ændres, opdateres ESCD'en, og når der sker en opdatering, ændres IRQ'erne også. Hvis du indstiller indstillingen Nulstil konfigurationsdata til Aktiveret, nulstilles ESCD'en næste gang du genstarter.

Award 6.00, som er BIOS'en installeret på de fleste bundkort, har en anden interessant "funktion". Hvis du går til Power Management Setup "IRQ/Event Activity Detect" IRQ's Activity Monitoring, så kan du der konfigurere, hvilke enheder der vil vække computeren, hvorved den afbryder. Der kan du også se den aktuelle fordeling af IRQ-numre, men du kan ikke altid stole på dette, og her er hvorfor:

Opsætning af interrupts fra Windows

Efter BIOS stikker Windows næsen ind i processen med at distribuere IRQ-numre. For at det kan gøre alt korrekt, selvom Windows ikke altid blander sig i denne proces, skal du ALTID have de nyeste bundkortdrivere. Dette er meget vigtigt, især hvis du har bygget/købt en moderne computer, med et bundkort på et nyt eller relativt nyt chipset og installeret en eller anden form for Windows 98 på det hele... Personligt kender jeg mange, der tænker noget som f.eks. dette: på mit bundkort Der er ingen klokker og fløjter på tavlen, alt er efter standarden, der skal ikke “brænde” til... Det er helt forkert. For at systemet kan fungere korrekt, især når afbrydelser deles, skal Windows genkende chipsættet og indlæse IRQ-miniporten. Glem ikke også at installere friske eller i det mindste "native" drivere til alle enheder, dette vil hjælpe systemet med at fungere korrekt.

Hvis du bruger Windows 9x, så for at finde ud af, om afbrydelser er distribueret korrekt eller for at rette dem, skal du gå til systemegenskaberne, for at gøre dette, på fanen Enheder, find Systemenheder-rullen og derefter PCI Bus. Hvis IRQ-miniporten er indlæst, er alt i orden. I Win 9x kan du reservere interrupts, ligesom i BIOS. Find Computer i den samme enhedshåndtering, og kald dens egenskaber. Men for at indstille en specifik afbrydelse for en bestemt enhed, skal du gå til dens egenskaber og på fanen Ressourcer indstille den ønskede afbrydelse. Desværre er dette kun muligt i Win 9x i Win XP, jeg hverken ledte efter eller fandt, hvordan man annullerer den automatiske konfiguration.

Hvis du bruger den nyere Win 2000 eller XP, som efter min mening er et mere fornuftigt valg, så kan du støde på nogle problemer. Ved du, hvad ACPI (Advanced Configuration and Power Interface) er? Dette er en speciel konfigurationsgrænseflade. Den indeholder mange nyttige ting, men i Win 2K/XP kan den virkelig irritere dig. Især hvis systemet har ISA-tavler. På grund af det distribuerer Windows alle PCI-enheder, der er placeret i de samme stik til én interrupt (det er derfor, jeg har en USB med et modem på IRQ 5, og resten på andre), ja, i hvert fald indholdet af AGP-slottet og AC "97 codec'et, de skubbede det ikke dertil ;). På grund af dette, hvis du ikke slår ACPI fra i BIOS'en før du installerer Windows, vil du ikke være i stand til at omtildele IRQ'er. Jeg har allerede skrevet ovenfor, hvordan man se deres distribution Og for at ændre situationen skal du slå ACPI fra i BIOS (ACPI-funktioner i afsnittet Power Management Setup) og ændre computerens enhedsdriver fra Computer med ACPI til Standard Computer Selvom jeg personligt ikke ville miste sådanne funktioner, der er direkte relateret til ACPI, såsom automatisk at slukke for computeren eller tænde den fra tastaturet, virker nogle gange denne metode til at annullere ACPI, så du skal slå det fra i BIOS og omarrangere Windows.

  • Alieva Elena Viktorovna, studerende
  • Ufa State Aviation Technical University
  • AFBRYD KONTROLLER
  • KONTROLLER
  • HARDWARE AFBRYDELSER
  • AFBRYDE

Afbrydelse betyder midlertidigt at standse hovedprocessen med databehandling for at udføre nogle planlagte eller uplanlagte handlinger forårsaget af driften af ​​hardware eller software. Afbrydelsesmekanismen understøttes på hardwareniveau. Hardwareafbrydelser opstår som en reaktion fra mikroprocessoren på et fysisk signal fra en eller anden enhed (tastatur, systemur, tastatur, harddisk osv.); forekomme på tilfældige tidspunkter. Interrupt-controlleren er designet til at behandle og arbitrere indgående serviceanmodninger til den centrale processor fra perifere enheder. Interrupts har en specifik prioritet, som gør det muligt for interrupt-controlleren at give fortrinsret til en enhed frem for en anden på et givet tidspunkt. I en moderne computer er der op til 16 eksterne og perifere enheder, der genererer interrupts.

  • Automatisering af dokumentflow i et lager hos en produktionsvirksomhed
  • Opkaldsteknologier, funktioner, applikation og effektivitet
  • Udvikling af en model af et informationssystem til den juridiske afdeling til support og indgåelse af virksomhedskontrakter

Introduktion

Afbrydelse betyder midlertidigt at standse hovedprocessen med databehandling for at udføre nogle planlagte eller uplanlagte handlinger forårsaget af driften af ​​hardware eller software. De der. Dette er en proces, der midlertidigt skifter mikroprocessoren til at udføre et andet program og derefter vender tilbage til det afbrudte program. Ved at trykke på en tast på tastaturet starter vi et øjeblikkeligt opkald til et program, der genkender tasten, skriver sin kode ind i tastaturbufferen, hvorfra den læses af et andet program. De der. I nogen tid afbryder mikroprocessoren udførelsen af ​​det aktuelle program og skifter til, den såkaldte interrupt-handler. Efter afbrydelseshåndteringen har afsluttet sit arbejde, vil det afbrudte program fortsætte med at køre fra det punkt, hvor det blev suspenderet. Adressen på interrupt-håndteringsprogrammet beregnes ud fra interrupt-vektortabellen.

Afbrydelsesmekanismen understøttes på hardwareniveau. Afhængigt af kilden er afbrydelser opdelt i:

  • hardware- opstår som en reaktion fra mikroprocessoren på et fysisk signal fra en eller anden enhed (tastatur, systemur, tastatur, harddisk osv.), med hensyn til tidspunktet for forekomsten er disse afbrydelser asynkrone, dvs. forekomme på tilfældige tidspunkter;
  • software- kaldes kunstigt ved hjælp af den passende kommando fra programmet (int), er beregnet til at udføre visse handlinger i operativsystemet og er synkrone;
  • undtagelser- er mikroprocessorens reaktion på en ikke-standardsituation, der opstod inde i mikroprocessoren under udførelsen af ​​en programkommando (division med nul, afbrydelse af TF-flaget (sporing)).

Afbryd systemhardware

Et afbrydelsessystem er et sæt software og hardware, der implementerer afbrydelsesmekanismen.

Afbrydelsessystemhardware inkluderer:

  • mikroprocessorstifter - de genererer signaler, der underretter mikroprocessoren enten om, at en ekstern enhed "anmoder om opmærksomhed" (INTR), eller at øjeblikkelig behandling af en eller anden begivenhed eller katastrofal fejl er påkrævet (NMI)
  • INTR - pin for interrupt request input signal,
  • NMI - pin til ikke-maskerbart interrupt-indgangssignal
  • INTA - pin til udgangssignalet, der bekræfter modtagelsen af ​​et afbrydelsessignal fra mikroprocessoren (dette signal sendes til indgangen af ​​samme navn på 8259A-controllerchippen;
  • programmerbar interrupt controller 8259A (designet til at opfange interrupt-signaler fra otte forskellige eksterne enheder; den er designet som et mikrokredsløb; normalt bruges to serieforbundne mikrokredsløb, så antallet af mulige kilder til eksterne interrupts er op til 15 plus en ikke-maskerbar interrupt; det er dette, der genererer interrupt-vektornummeret og udsteder dets databus);
  • eksterne enheder (timer, tastatur, magnetiske diske osv.)

Afbryd håndtering

En afbrydelse udløser en række hændelser, der forekommer i både hardware og software. I fig. Figur 1 viser en typisk sekvens af disse hændelser.

Efter at I/O-enheden er lukket ned, sker følgende:

  • Enheden sender et afbrydelsessignal til processoren.
  • Før der reageres på en afbrydelse, skal processoren fuldføre udførelsen af ​​den aktuelle instruktion (se figur 1).
  • Processoren kontrollerer tilstedeværelsen af ​​en afbrydelse, registrerer den og sender et vellykket modtagesignal til den enhed, der sendte afbrydelsen. Dette signal gør det muligt for enheden at fjerne sit afbrydelsessignal.
Figur 1. Program timing diagram: langsom I/O

Nu skal processoren forberede sig på at overføre kontrol til interrupt-handleren. Først skal du gemme alle vigtige oplysninger, så du senere kan vende tilbage til det sted i det aktuelle program, hvor det blev suspenderet. Den mindst nødvendige information er programstatusordet og adressen på den næste instruktion, der skal udføres, som er placeret i programtælleren. Disse data skrives til systemkontrolstakken.

Figur 2. Håndtering af en simpel afbrydelse

Dernæst indlæses indgangsadressen for afbrydelseshåndteringsprogrammet, som er ansvarlig for at behandle denne afbrydelse, i processorens programtæller. Afhængigt af arkitekturen af ​​computeren og operativsystemenheden kan der enten være ét program til at behandle alle afbrydelser, eller der kan være sit eget behandlingsprogram for hver enhed og hver type afbrydelse. Hvis der er flere programmer til at håndtere afbrydelser, skal processoren bestemme, hvilket der skal ringes til. Denne information kan være indeholdt i det originale afbrydelsessignal; ellers skal processoren for at opnå den nødvendige information polle alle enheder efter tur for at bestemme, hvilken der sendte afbrydelsen.

Så snart programtælleren er indlæst med en ny værdi, går processoren til den næste instruktionscyklus og begynder at hente den fra hukommelsen. Da instruktionen hentes fra en celle, hvis nummer er specificeret af indholdet af programtælleren, går kontrollen over til afbrydelsesservicerutinen. Udførelse af dette program indebærer følgende operationer.

Indholdet af programtælleren og statusordet for det afbrudte program er allerede lagret på systemstakken. Dette er dog ikke alle de oplysninger, der er relevante for tilstanden af ​​det eksekverende program. For eksempel skal du gemme indholdet af processorregistrene, da disse registre kan være nødvendige af interrupt-handleren. Derfor er det nødvendigt at gemme alle oplysninger om programmets tilstand. Typisk begynder en interrupt-handler sit arbejde ved at skrive indholdet af alle registre på stakken. Andre oplysninger, der skal opbevares, er omtalt i kapitel 3, Procesbeskrivelse og kontrol. I fig. Der vises et simpelt eksempel, hvor brugerprogrammet afbrydes efter at have udført en instruktion fra lokation N. Indholdet af alle registre, samt adressen på den næste instruktion (N+1), i alt M ord, skubbes ind på stakken . Stakmarkøren opdateres derefter til at pege på den nye top af stakken. Programtælleren opdateres også, hvilket indikerer starten på afbrydelsesrutinen.

Nu kan interrupt-handleren starte sit arbejde. Afbrydelseshåndteringsprocessen involverer kontrol af statusoplysninger relateret til I/O-operationerne eller andre hændelser, der forårsagede afbrydelsen. Dette kan også omfatte afsendelse af yderligere instruktioner eller meddelelser til I/O-enheder.

Efter afbrydelsesbehandlingen er afsluttet, bliver de tidligere gemte værdier poppet fra stakken og skrevet tilbage i registrene, og dermed genoptages den tilstand, de var i før afbrydelsen.

Det sidste trin er gendannelsen af ​​programtilstandsordet og indholdet af programtælleren fra stakken. Som følge heraf vil kommandoen for det afbrudte program blive udført næste gang.

Fordi en afbrydelse ikke er en underrutine, der kaldes inde fra et program, er det vigtigt at beholde alle tilstandsoplysninger for det afbrudte program for fuldstændig genopretning. En afbrydelse kan dog forekomme når som helst og hvor som helst i brugerprogrammet. Denne begivenhed er uforudsigelig.

Afbryd controller

Interrupt-controlleren er designet til at behandle og arbitrere indgående serviceanmodninger til den centrale processor fra perifere enheder. I analogi kan funktionen af ​​interrupt-controlleren sammenlignes med en chefs sekretær. Sekretæren skal beslutte, hvem af de besøgende, der må se chefen først, og hvilke senere ud fra chefens prioriteringer og den besøgendes selv status. Ligeledes i et computersystem er en situation mulig, hvor flere perifere enheder sender et afbrydelsessignal eller en afbrydelsesanmodning. I computerlitteratur er dette signal betegnet IRQ (Interrupt Request).

Som nævnt ovenfor har interrupts en vis prioritet, som gør det muligt for interrupt-controllere at give præference til en enhed frem for en anden på et givet tidspunkt. I en moderne computer er der op til 16 eksterne og perifere enheder, der genererer interrupts. Disse er enhederne:
–IRQ 0, systemtimer; –IRQ 1, tastatur; –IRQ 2, bruges til anmodninger fra enheder forbundet i en kaskade; –IRQ 8, realtidsur; –IRQ 9, reserveret; –IRQ 10, reserveret; –IRQ 11, reserveret; –IRQ 12, ps/2–mus; –IRQ 13, coprocessor; –IRQ 14, harddiskcontroller; –IRQ 15, reserveret; –IRQ 3, porte COM2, COM4; –IRQ 4, porte COM1,COM3; –IRQ 5, LPT2-port; –IRQ 6, diskdrevcontroller; –IRQ 7, LPT1-port, printer.

Her er signalerne listet i faldende prioritetsrækkefølge. Du kan bemærke, at efter IRQ 2, kommer IRQ 8. Faktum er, at interrupt-controlleren på et tidspunkt bestod af to mikrokredsløb, den ene var forbundet til den anden. Denne anden chip er forbundet til IRQ 2-linjen og danner en kaskade. Den betjener linjerne IRQ8–IRQ 15. Og så følger linjerne fra den første chip.

Afbryd styreenhedens drift

Drift af interrupt-controllere regnes på baggrund af Intel 8259A mikrokredsløb, som blev brugt i nu meget gamle computere med processorer op til 386-serien. Disse computere havde normalt 2 8259A-chips forbundet i kaskade, det vil sige den ene til den anden. En af de chips, der er forbundet via afbrydelsesanmodningslinjen direkte til processoren, er masteren eller masteren. Resten, forbundet til masteren gennem lignende terminaler, kaldes slaver.


Figur 3. Afbrydelsescontrollerens forbindelsesdiagram og deres interaktion med den centrale processor

Figur 3 viser et diagram over forbindelsen af ​​interrupt-controllere og deres interaktion med den centrale processor. Afbrydelsessignaler fra perifere enheder eller slavecontrollere sendes til indgangene IR0–IR7 på mastercontrolleren. Mastercontrollerens interne logik behandler indkommende anmodninger med hensyn til prioritet. Hvis prioriteringen af ​​enhedsanmodningen er tilstrækkelig, så genererer INT-outputtet fra controlleren et signal, der går til INTR-indgangen på processoren. Ellers blokeres anmodningen.

Hvis processoren tillader afbrydelser, genererer den, efter at have fuldført udførelsen af ​​den aktuelle instruktion, en sekvens af signaler via INTA-linjen, som sætter slavecontrolleren i en tilstand af immunitet over for indkommende nye afbrydelsesanmodninger og desuden information fra controllerens interne registre udsendes til datalinjen, hvorved processoren genkender afbrydelsestypen.

Processoren sender afbrydelsestilladelse til afbrydelsescontrolleren gennem buscontrolleren. RD-signalet er beregnet til at få interrupt-controlleren til at placere indholdet af de interne registre på databussen. På WR-signalet modtager interrupt-controlleren tværtimod data fra bussen af ​​samme navn og skriver dem til interne registre. Dette påvirker derfor driftstilstanden for interrupt-controlleren.

CS-indgangen er forbundet til adressebussen, og dette signal bruges til at identificere en specifik interrupt-controller. Input A0 peger på interrupt-controllerporten i I/O-rummet.

Indgange IR0–IR7 er designet til at modtage afbrydelsesanmodninger fra perifere enheder og slavecontrollere.

Udgangene CAS0–CAS2 er designet til at identificere en specifik slavecontroller.

Artiklen diskuterer hardwareafbrydelser og enhed, funktioner, drift af interrupt-controlleren. Denne interrupt controller dukkede op i de første pc-kompatible computere. Siden da har både processorer og selve computeren ændret sig på mange måder, selvom nogle aspekter er tilbage. Derfor blev organisationen af ​​8295A-afbrydelsescontrolleren overvejet for at gøre det klarere.

Ovenstående diagram viser signalerne, der ikke kun kommer til slave- og masterafbrydelsesregulatorerne, men også til de resterende slaver. Men din computer eller bærbare computer har faktisk 2 interrupt-controllere, som nævnt ovenfor: en master og en slave. Men du kan oprette dine egne computersystemer ved hjælp af op til 64 slave interrupt controllere.

I moderne computere i lang tid afbryde controller-funktioner Det er ikke 8259A-chippene, der gør det, men sydbroen. Men for alle programmer og enheder forbliver alt det samme. Desuden kan interrupt-controlleren programmeres, og interne registre og porte skal tilgås på samme måde som 8259A-controlleren.

Konklusion

I dette arbejde blev interrupts overvejet, nemlig hardware interrupt håndtering og princippet om interrupt processing. Interrupt-controllere og princippet om deres drift diskuteres også.

Afbrydelse betyder midlertidigt at standse hovedprocessen med databehandling for at udføre nogle planlagte eller uplanlagte handlinger forårsaget af driften af ​​hardware eller software. Afbrydelsesmekanismen understøttes på hardwareniveau. Hardwareafbrydelser opstår som en reaktion fra mikroprocessoren på et fysisk signal fra en eller anden enhed (tastatur, systemur, tastatur, harddisk osv.); forekomme på tilfældige tidspunkter.

Afbryd controller designet til at behandle og arbitrere indgående serviceanmodninger til den centrale processor fra perifere enheder. Afbrydelser har en specifik prioritet, som tillader afbryde controller give fortrinsret på et givet tidspunkt til én enhed frem for en anden. I en moderne computer er der op til 16 eksterne og perifere enheder, der genererer interrupts.

Bibliografi

  1. Foredrag. Afbryder. E-mail Ressource. http://hromatron.narod.ru/_lekcii/prerivania_lekcia_g2013.htm
  2. System afbryder | Hardwareafbrydelse | Afbryde håndtering http://life-prog.ru/view_os.php?id=16
  3. Afbryd controller. E-mail Ressource http://sdelaycomputersam.ru/Controller_irq.php,
  4. Afbryder. Afbryd controller. Enhed, funktioner, betjening. E-mail Ressource http://sdelaycomputersam.ru/Controller_irq.php
  5. Struktur og initialisering af Intel 8259A interrupt controller El.

Interrupts er opdelt i hardware (maskerbar og ikke-maskerbar) og software. Softwareafbrydelser er faktisk ikke afbrydelser, de er en måde at kalde visse procedurer på. Men processoren behandler softwareafbrydelser som en af ​​typerne af afbrydelser.

Noget, som alle PCI-kort ifølge PCI-specifikationerne burde kunne, men i virkeligheden meget sjældent implementeres, kaldes "IRQ-Sharing". I teorien betyder det, at flere komponenter skal dele den samme IRQ. Men da få PCI-kort kommunikerer så harmonisk med hinanden, tildeler Windows 9x hvert kort, så vidt muligt, sin egen IRQ. Kompleksiteten ved at konfigurere systemressourcer, deres fordeling mellem netværk og lydkort, 3D-acceleratorer, standard serielle og parallelle enheder, og nu svækkes video- og DVD-dekodere gradvist med masseintroduktionen af ​​USB-bussen, eller mere præcist, massedistributionen af USB periferiudstyr. Sandt nok optager selve USB-bussen en IRQ. Men hun skal inkludere alle perifere enheder, det være sig en mus, tastatur, scanner eller videokamera, i systemet uden yderligere ressourceforbrug.

Et andet udtryk. "Polling mode" - betjening af enheden uden brug af afbrydelser. Dette sker, når du arbejder med simple SCSI-controllere på ISA-bussen.

Enhed

Kommentarer

System timer

Systemafbrydelse. Genereret 91 gange på 5 sekunder. Den har været brugt i denne egenskab siden den første pc.

Tastatur

Systemafbrydelse genereret af tastaturcontrolleren.

Afbryd controller

Kaskaderet (linket) til IRQ9. Der kan opstå konflikter, når forskellige enheder skal køre på IRQ2 og IRQ9 på samme tid. Dets brug af systemet er bevaret for kompatibilitet.

Bruges af den anden kommunikationsadapter (UART2). Hvilken enhed vil generere det? Dette kunne være en anden seriel port COM2 (integreret på bundkortet), et internt modem konfigureret til COM2 eller COM4 eller en infrarød adapter. Du kan deaktivere UART2, men du vil ikke være i stand til at tildele IRQ3 til noget. Deler den samme IRQ3 med COM4 (hvis sidstnævnte er til stede). Der kan være en konflikt, hvis den bruges samtidigt.

Enhed

Kommentarer

Bruges af den første kommunikationsadapter. Alt er næsten identisk: genereret af den første serielle port COM1, modem på COM1 eller COM3 (undtagen infraporten). Deler den samme IRQ4 med COM3 (hvis sidstnævnte er til stede). På systemer med en mus tilsluttet COM1 bør COM3 ikke bruges.

gratis

Afbrydelsen var oprindeligt beregnet til at blive brugt af den anden parallelle port LPT2. Denne løsning fandt ikke nogen praktisk anvendelse, så IRQ5 blev fri software. I IBM XT hang harddisken på IRQ5. Efter nogen tid fandt Creative Labs, der skabte Sound Blaster Pro-lydkortet, brug for afbrydelse. Siden da er IRQ5 blevet favoritten til de fleste ISA-lydkort. PCI-lydkort bruger også nogle gange denne interrupt til "SB Pro"-emulering. IRQ5 kan tilknyttes et PCI slot.

Enhed

Kommentarer

FDD drev controller

Afbrydelsen har været brugt af floppy drive-controlleren siden de første pc'er. Afbrydelsen kan dog stadig ikke bruges: ISA-kort er ikke designet til at fungere med det, og det kan ikke tildeles en PCI-slot.

Som standard er den første parallelportafbrydelse LPT1. Når porten er deaktiveret (hvis printeren mangler eller er designet til USB), kan den bruges af forskellige enheder: netværk, ISDN-kort. Dette er også et "reserve" sted til lydkort.

Realtidsur (RTC)

Systemafbrydelse siden den første IBM AT.

gratis

Kaskaderet med IRQ2. Ellers kan den bruges efter eget skøn.

gratis

Kan bruges efter eget skøn. Ældre IDE-controllere på ældre lydkort bruger nogle gange denne IRQ.

Enhed

Systemprocesser, som almindelige computerbrugere ofte ikke aner, kan meget ofte forårsage øget belastning af computerens computerressourcer. Disse omfatter især de såkaldte systemafbrydelser. De fleste mennesker ved ikke, hvad dette er og forsøger ofte at lukke denne tjeneste ned direkte i "Task Manager", hvor CPU- og RAM-belastningen vises. Ser man lidt fremad, skal det siges, at man under ingen omstændigheder skal beskæftige sig med sådanne ting. Men hvordan bringes systemet så til live? Det foreslås at tale om dette mere detaljeret, især da der, når man overvejer hovedproblemet, også kan opstå andre problemer undervejs relateret til den forkerte funktion af hardwarekomponenter, selve Windows-operativsystemerne og den software, der er installeret i deres miljø. Men først ting først.

Hvad er det?

Før du tager nogen fejlfindingstrin, bør du finde ud af, hvad denne systemkomponent er. I "Task Manager" er processen "System Interrupts", som kører konstant, ansvarlig for dens funktion.

Men hvad er det? Uden at gå ind i tekniske detaljer og sige, hvad de er, kan systemafbrydelser sammenlignes med en slags lakmustest eller indikator, der signalerer, at noget udstyr ikke fungerer korrekt i systemet. Derudover kan en stigning i ressourcebelastningen også være forbundet med inkompatibilitet mellem computerens software og hardware. I sin normale tilstand overstiger belastningen på processoren fra denne proces normalt ikke fem procent eller lidt mere, hvilket er ganske nok til at diagnosticere alle aktuelt brugte "hardware"-enheder for korrekt funktion. Hvis belastningen stiger over den specificerede grænse. det er presserende nødvendigt at identificere årsagen og eliminere problemer med udstyr.

Sådan fungerer det: den enkleste forklaring

Men lad os se på, hvilke systemafbrydelser der er i Windows 7 eller andre ændringer ved hjælp af et simpelt eksempel. Det skal straks bemærkes, at i forhold til software er driften af ​​denne komponent forbundet med ikke-eksekverbare programelementer, der kan indlæses for eksempel i RAM (dynamiske biblioteker, enhedsdrivere osv.).

Antag, at du har et moderne spil installeret på din computer, men videokortet opfylder kun dets minimums systemkrav, eller også er konfigurationen under denne tærskel. Hvis grafikchippen ikke kan klare at behandle softwarekomponenter, hvilket fører til øget belastning på den, er der tale om systemafbrydelser. På grund af dem omdirigeres kommandobehandlingen til den centrale processor, som forsøger at hjælpe videokortet med at klare det øgede antal anmodninger. Følgelig observeres en stigning i belastningen fra den del af den beskrevne proces i "Task Manager". Og ofte fører forekomsten af ​​sådanne situationer ikke kun til, at hele systemet fryser, men endda til udseendet af blå skærme. Det samme gælder, når udstyr begynder at svigte. Desværre, hvis "hardware"-komponenterne i systemet går i stykker, kan alt dette lige så gælde for enhver af dem (for eksempel går en harddisk i stykker, RAM-strimler fejler osv.).

Systemafbrydelser indlæser processoren: hvad skal man gøre først?

Baseret på ovenstående teoretiske information, lad os gå videre til praktiske foranstaltninger, der kan eliminere nye problemer og rette sådanne situationer. Hvad skal man gøre først? Hvor mærkeligt det end lyder, er det nogle gange nok at udføre en simpel genstart, som giver dig mulighed for at deaktivere alle tredjeparts softwarekomponenter. Men når du genstarter et program, kan situationen gentage sig selv. I dette tilfælde skal du straks kontrollere drivernes status ved hjælp af Enhedshåndtering. Det er meget muligt, at konflikten mellem software- og hardwaredelene netop blev fremkaldt af dem.

Hvis det er muligt, skal du installere administrationssoftware til problemenheder, som kan være markeret med en gul trekant med et udråbstegn i Manager, og opdatere drivere til alt andet udstyr ved hjælp af automatiserede hjælpeprogrammer som Driver Booster.

Sporing af belastninger ved hjælp af et særligt hjælpeprogram

Hvis installation og opdatering af drivere ikke giver det ønskede resultat, bliver du nødt til at bruge andre metoder. Desværre er der ingen sådanne værktøjer i værktøjssættet til Windows-systemer.

Derfor, hvis det bemærkes, at systemafbrydelser indlæser ressourcer, anbefaler de fleste eksperter at bruge et lille program kaldet DPC Latency Checker, som præsenteres i bærbar form og ikke kræver installation på en pc. I den er den første ting, du skal gøre, at aktivere scanning, hvorefter scanningsresultaterne vil give anbefalinger til fejlfinding. Men oftest er de kun forbundet med færdiggørelsen af ​​nogle processer, der svarer til både programmerne og det udstyr, der aktuelt er i brug, eller der vil blive givet en anbefaling om at kontakte "Device Manager". Men det er det, vi skal bruge, og efterlader det diagnostiske hjælpeprogram aktivt som en slags middel til at ændre belastningssporing. Forveksle ikke belastningerne vist i dette program med dem, der er synlige i Task Manager.

Deaktivering af komponenter i Enhedshåndtering

Hvad angår denne sektion af udstyrsstyring, går essensen af ​​fejlfinding ned til sekventielt at frakoble de enheder, der er installeret i systemet, og derefter kontrollere belastningerne med det ovennævnte værktøj.

Bemærk venligst, at det er strengt forbudt at deaktivere udstyret præsenteret i afsnittene "Computer", "Processorer" og "Systemenheder", da sådanne handlinger kan føre til en uautoriseret nedlukning og genstart af computeren. Godt nok vil hele operativsystemet også fejle.

For de resterende komponenter, der tidligere har aktiveret visningen af ​​skjulte enheder i visningsmenuen, skal hver komponent deaktiveres via RMB-menuen, og derefter skal diagnostikken genaktiveres i belastningssporingsprogrammet. Når testresultaterne viser, at efter deaktivering af en enhed falder belastningen til normal, og det bliver klart, at netop denne komponent er defekt. Hvis det ikke hjælper at geninstallere driveren, skal enheden udskiftes.

Hvad skal man gøre, hvis belastningsproblemet fortsætter?

Men hvad er det? Systemafbrydelser øger stadig belastningen på processoren. Hvad ellers kunne have påvirket forekomsten af ​​en sådan situation? Af en eller anden grund (og det er sandt), siges hovedårsagen til denne systemadfærd i de fleste tilfælde at være et problem med forældet eller indbygget lydudstyr på bundkortet, hvor der er tale om forbedrede lydeffekter.

Alternativt, i lydindstillingerne ved hjælp af Windows, deaktiver dette element, som automatisk vil deaktivere alle installerede effekter. Bemærk venligst, at de er af en softwaretype, ikke en hardwaretype, så deaktivering af hovedenheden har muligvis ingen effekt.

Problemer med primære I/O-systemer

Endelig udelukker mange eksperter ikke forekomsten af ​​problemer i driften af ​​de primære BIOS/UEFI-systemer, som kan være forbundet med forældelsen af ​​den originale firmware. I dette tilfælde kan nyt og mere moderne udstyr muligvis ikke detekteres korrekt. Som det allerede er klart, vil løsningen være at downloade og installere firmwareopdateringen. Men hvis du kan køre sådanne processer for UEFI direkte i et kørende operativsystem, bør du være ekstremt forsigtig med eksperimenter i BIOS. Upassende firmware eller forkert installation kan få hele computersystemet til at holde op med at fungere.

Kort opsummering

Det handler om at afbryde systemopkald i en nøddeskal. Baseret på ovenstående anbefales det at løse nye problemer ved at bruge det specificerede diagnoseprogram med sekventiel nedlukning af udstyret. Om nødvendigt skal defekte komponenter udskiftes. Som et ekstra værktøj, der kan bruges til at identificere problemer med RAM-sticks, er det tilrådeligt at bruge Memtest86+-værktøjet, men uden den nødvendige viden vil det ikke være til nogen nytte.