У дома / преглед на прозорците / Две устройства в един irq какво да правя. Хардуерни прекъсвания. Контролер за прекъсвания. Проследяване на товари със специална помощна програма

Две устройства в един irq какво да правя. Хардуерни прекъсвания. Контролер за прекъсвания. Проследяване на товари със специална помощна програма

Рядко се случва компютър, особено домашен компютър, да изживее целия си живот, без да е претърпял нито надграждане, нито добавяне на нови устройства. В повечето случаи, разбира се, при спазване на най-елементарните правила, такава операция е безболезнена, без да причинява особени проблеми. Но около всеки десети (или дори двадесети - няма значение) компютърът се привежда в неработещо състояние: често започва да замръзва, отказва да изпълнява каквито и да е функции или дори просто изпада в така любимия от всички нас син екранна смъртта. По правило най-вероятната причина за подобни проблеми се крие в хардуерни конфликти (нови и стари), които не споделят никакви хардуерни ресурси. Е, ако вашата квалификация ви позволява да решавате възникналите проблеми или има някой наблизо, който може да ви помогне, но ако няма нищо подобно? Въпреки това, не са боговете, както знаете, тенджерите са изгорени, нека седнем, мислим - гледате и пробийте, защото всичко не е толкова трудно, въпреки че проблемът със съвместимостта на най-разнообразното оборудване, от самото му създаване в средата на 80-те години, все още не е много не намалява. Предложената статия ще помогне на потребителя да се справи с един от видовете хардуерни ресурси, необходими за оборудването, и най-често основната причина за всякакви конфликти - с хардуерни прекъсвания (IRQ).

Системни хардуерни ресурси

Компонентите могат да изискват три основни типа различни хардуерни ресурси, за да работят. Почти всяко устройство използва един или повече I/O портове. IN този случайтова не е сериен или паралелен порт, а просто специален адрес, нещо като адрес в RAM. Тези портове работят специални екипицентралният процесор, с помощта на който всяка информация или се записва в порта, или се чете от него. Често обменът на информация между процесора и устройството върви само през портове, а някои устройства приемат десетина или дори повече адреси на портове, всеки от които служи за изпълнение на определена функция.

Каналите за директен достъп до паметта (DMA) се използват много по-рядко. Този тип взаимодействие е предназначено за устройства, с които обменят големи блокове данни RAM, например, дискови устройстваили принтери. Целият обмен заобикаля централния процесор, който само инициира операцията за обмен и незабавно пристъпва към извършване на друга работа. Този подход може значително да увеличи производителността на цялата система.

И третият тип ресурси са хардуерните прекъсвания, които са основният механизъм за реакция на системата на външни събития. Хардуерните прекъсвания, обикновено наричани IRQs (Interrupt ReQuests), са физически сигнали, които контролерът на устройството използва, за да информира процесора за обработка на заявка. Обикновено схемата за обработка на прекъсвания може да изглежда така:

  • процесорът получава сигнала за прекъсване и неговия номер;
  • с помощта на специална таблица се намира адресът на програмата, отговорна за обработката на прекъсването с даден номер - манипулаторът на прекъсване;
  • процесорът спира изпълнението на текущата задача, записва междинни резултати и превключва към изпълнение на манипулатора на прекъсване;
  • процесорът осъществява достъп до устройството и проверява причината за прекъсването;
  • стартират се заявените действия - инициализация, конфигурация на устройството, обмен на данни и др.;
  • когато всички необходими операции са завършени, процесорът се връща към прекъснатата задача.

За разлика от софтуерните прекъсвания, задействани от изпълняваща се приложна програма, хардуерните прекъсвания могат да възникнат в най-неочаквания момент и освен това могат да възникнат множество прекъсвания едновременно. За да не "мисли твърде много" системата на първо място кое прекъсване да обслужи, има специална приоритетна схема. На всяко прекъсване се присвоява собствен уникален приоритет. Ако няколко прекъсвания пристигат едновременно, тогава системата дава предпочитание на най-високия приоритет, отлагайки обработката на други, по-малко важни, прекъсвания за известно време.

Разпределение на прекъсване

Помислете как обикновено се разпределят прекъсванията в стандартен компютър. Някои от номерата са строго обвързани с определени устройства, някои могат да бъдат пуснати и използвани за вашите нужди. Да започнем по ред:

  • IRQ 0- прекъсване на системния таймер. Генерирано 18,2 пъти в секунда. Използва се в това качество от създаването на първия IBM PC (този номер не е наличен за други употреби);
  • IRQ 1- прекъсване на клавиатурата. Генерира се от контролера на клавиатурата при всяко натискане на клавиш (номерът не е наличен за други употреби);
  • IRQ2в компютрите от клас XT, които използваха само 8 линии за прекъсване, беше запазено за по-нататъшно разширяване на системата и, като се започне с компютрите от клас AT, беше използвано за свързване на втори контролер. Днес IRQ 2 се използва от системата за съвместимост с по-стар софтуер, номерът не е наличен за други цели;
  • IRQ 3- прекъсване на асинхронния порт COM 2. Същото прекъсване се използва и от устройства, работещи през порт COM 4. При желание те могат да бъдат деактивирани, но никой друг няма да може да зададе IRQ 3 така или иначе;
  • IRQ4по аналогия с предишното, това прекъсване се използва от устройства, заемащи COM 1 / COM 3 портове;
  • IRQ 5първоначално предназначен за използване от втория паралелен порт LPT2, но след това, когато вторият паралелен порт беше изоставен, IRQ 5 стана свободен. По-късно се използва активно от повечето ISA звукови карти. Съвременните PCI звукови карти използват това прекъсване единствено за съвместимост с по-стари игри, по-голямата част от които поддържат SB Pro. IRQ 5 може да се използва за други цели и да се обвърже с PCI слот;
  • IRQ6, като се започне от първите компютри, се използва от флопи контролера (номерът не е наличен за други употреби);
  • IRQ7- по подразбиране прекъсване на първия паралелен порт LPT 1. Ако портът е деактивиран (ако принтерът не е наличен или е предназначен за USB), той може да се използва различни устройства. IRQ 7 може да бъде свързан към PCI слот;
  • IRQ8- прекъсване на часовника в реално време, въведено за първи път в IBM AT. Не е възможна друга употреба;
  • IRQ 9и IRQ 10 са безплатни;
  • IRQ 11обикновено е запазен за USB шината, но може да се използва за други цели (за да направите това, деактивирайте USB поддръжката в BIOS);
  • IRQ 12използва се за PS/2 мишка, но може да се използва за други цели (ако PS/2 мишка не е налична или е забранена);
  • IRQ 13първоначално е използван от аритметичния копроцесор и сега е запазен за съвместимост с по-стар софтуер (номерът не е наличен за други употреби);
  • IRQ 14И IRQ 15прилага се съответно от първичния и вторичния IDE контролер.

Има няколко начина да разберете как в момента се разпределят номерата на прекъсванията във вашия конкретен случай. Когато стартирате компютъра си, дори преди Windows да започне да се зарежда, се появява таблица с конфигурационен текст. Веднага след него е списък с PCI устройства с индикация на присвоения им IRQ номер.

Или, ако все още използвате Windows 9x, тогава в контролния панел има икона на системата, щракнете върху нея - и изберете раздела "Устройства". В свойствата на устройството "Компютър" можете да намерите списък на всички устройства с техните IRQ. В Windows 2000/XP нямаме директен достъп до управление на прекъсвания, така че за да видим списъка с IRQ, трябва да използваме стандартната информационна програма (Контролен панел/Административни инструменти/Управление на компютъра/Системна информация/Хардуерни ресурси). И накрая, никой не е отменил използването на помощни програми, които тестват хардуерните и софтуерните възможности на компютъра.


Сред тях без съмнение най-популярна е SANDRA, която е в състояние да предостави на потребителя изчерпателна информация, включително информация за прекъсвания.

Конфликти на устройства

Без да навлизаме в твърде много подробности, можем да кажем, че конфликт е ситуация, при която няколко обекта едновременно се опитват да получат достъп до един и същ системен ресурс. Конфликт на прекъсване възниква, когато няколко устройства използват една и съща линия за прекъсване за изпращане на сигнал за заявка и няма механизъм за класиране на тези заявки, което води до повреда или едно от устройствата просто да спре да работи. За да имате ясна представа как конфликтите могат да бъдат избегнати или елиминирани, трябва да разберете механизма на управление на IRQ.

Както знаеш, персонални компютризапочна с IBM PC XT. Архитектурата му предвиждаше само осем реда хардуерни прекъсвания, които се контролираха от специален контролер. На всеки от тях е присвоен собствен уникален номер, който определя приоритета на прекъсването и адреса на неговия манипулатор (т.нар. прекъсващ вектор). Следващата версия на архитектурата, IBM PC AT, допълни съществуващите линии с още осем, които се управляваха от втори контролер, свързан към една от линиите за прекъсване на първия контролер. За съжаление тази архитектура спря развитието си в този момент, така че всички съвременни компютри, въпреки значително увеличения брой допълнителни устройства, използвани в тях, все още имат само шестнадесет линии за прекъсване, една от които е запазена за емулация на втори контролер.

Първоначално компютърът IBM PC AT имаше само една шина, чрез която устройствата можеха да комуникират с процесора и паметта - ISA. Повечето линии за прекъсване бяха присвоени на стандартни ISA устройства, така че когато се появи новата универсална PCI шина, се оказа, че на нейния дял има само четири свободни прекъсвания, обозначени като INT A, INT B, INT C, INT D, така че само четири PCI устройства могат да получават независими прекъсвания в системата. Но в същото време трябва да се има предвид, че IDE контролерът е в специална позиция, която не е сред тези четири устройства само защото, въпреки че е PCI устройство по отношение на метода на пренос на данни, неговият собствен прекъсва IRQ 14 и IRQ са строго определени към него.15, както за по-старите ISA устройства. За шината AGP, която е вариант на PCI шината, INT A е "пожертван", а USB шината, като една от системни компоненти, се свързва към PCI с помощта на INT D, което намалява броя на "честните" PCI устройства само до две. Не бива да забравяме и за подсистемата за управление на захранването / Управление на системата, която също изисква собствено прекъсване. Така в реалния живот, ако има множество PCI устройства, използващи прекъсвания, е невъзможно да им се осигурят уникални хардуерни IRQ и в такива случаи се използва хардуерно-софтуерен метод, базиран на технологията Plug & Play, която теоретично избягва конфликти. Въпреки че всичко може да се случи в реалния живот, а останалите ISA устройства все още не могат да споделят прекъсващи линии, следователно те са основните провокатори на конфликти. По този начин проблемът с разрешаването на конфликти се свежда до правилното разпределение на номерата на прекъсванията в случай на проблеми с ISA устройства или "бъги" драйвери.

В системата IRQ номерата се разпределят два пъти между физическите линии. Първият път, когато системният BIOS прави това, е когато системата се стартира. Всяко Plug & Play устройство (и това включва всички PCI, модерни ISA и всички устройства, интегрирани на дънната платка) получава един номер измежду наличните. Ако няма достатъчно числа, няколко реда получават един общ. За PCI устройства това не е проблем - ако имате нормални драйвери и поддръжка от операционната система, всичко трябва да работи добре. Но ако няколко ISA устройства или не по-малко "експлозивна" смес от PCI и ISA устройства получат едно и също число, тогава конфликтът е просто неизбежен и тогава ще трябва да се намесите в процеса на автоматично разпределение на прекъсванията. В този случай трябва да деактивирате всички неизползвани ISA устройства (в системи без ISA слотове, те все пак присъстват: това са COM1, COM2 портовете и устройството). Можете също да деактивирате режимите EPP и ECP на LPT порта, като същевременно освобождавате прекъсването на IRQ7. Всички операции за промяна на прекъсванията в BIOS Setup се извършват в секцията "PCI / PNP Configuration". Има два начина да повлияете на разпределението на IRQ номера: блокиране на конкретен номер и директно присвояване на номер на линия. Първият метод е достъпен за всички BIOSs, елементите от менюто "IRQ x used by:" се коригират (в новите BIOSs той е скрит в подменюто "IRQ Resources"). Тези прекъсвания, които трябва да бъдат присвоени изключително на ISA устройства, трябва да бъдат зададени на "Legacy ISA". По този начин, когато се разпределят номера за PCI устройства, тези прекъсвания ще бъдат пропуснати. Трябва да направите това, ако някое ISA устройство упорито получи едно и също прекъсване с PCI устройството, което кара и двете да спрат да работят. В този случай трябва да намерите номера на това IRQ и да го блокирате. PCI устройството се премества към новия IRQ номер, докато ISA устройството остава същото. Вторият начин за управление на IRQ номера е директното присвояване, макар и малко по-сложен от първия, той е много по-ефективен. Жалко е, че не всички съвременни дънни платки позволяват тази операция. В същото подменю за настройка на BIOS може да има елементи като "Slot X use IRQ" (други имена: "PIRQx use IRQ", "PCI Slot x priority", "INT Pin x IRQ"). Тази опция ви позволява да задавате прекъсвания поотделно за всяко устройство на PCI и AGP шината. В този случай трябва да се спазват следните правила:

  • Всеки PCI слот може да активира до четири прекъсвания - INT A, INT B, INT C и INT D;
  • AGP слотът може да активира две прекъсвания - INT A и INT B;
  • Нормално е всеки слот да бъде назначен като INT A. Останалите прекъсвания са запазени, ако PCI/AGP устройството изисква повече от едно прекъсване или ако исканото прекъсване е заето;
  • AGP слот и PCI слот 1 разпределят едни и същи прекъсвания;
  • PCI слотове 4 и 5 също разпределят същите прекъсвания;
  • USB използва PIRQ_4.

По-долу е дадена таблица, показваща връзката между PIRQ (програмируема заявка за прекъсване) и INT (прекъсване):

Сигнал AGP слот
PCI слот 1
PCI слот 2 PCI слот 3 PCI слот 4
PCI слот 5
PIRQ_0 INT A INT D INT C INT B
PIRQ_1 INT B INT A INT D INT C
PIRQ_2 INT C INT B INT A INT D
PIRQ_3 INT D INT C INT B INT A

Обикновено трябва да оставите опцията в положение AUTO. Но ако се наложи да зададете индивидуален IRQ за устройство на AGP или PCI шината, първо е необходимо да се определи в кой слот е инсталирано устройството. След това, позовавайки се на таблицата, можете да зададете основния PIRQ. Например, ако Мрежова картае настроен на слот 3, тогава основният PIRQ ще бъде PIRQ_2, тъй като всички слотове са присвоени на INT A, ако е възможно. След това се избира желаното IRQ, като му се присвоява подходящата стойност на PIRQ. Само имайте предвид, че BIOS ще се опита да присвои PIRQ на INT A за всеки слот. Така че, за AGP и PCI 1 слотове основният PIRQ е PIRQ_0, докато за PCI слот 2 основният PIRQ е PIRQ_1 и т.н. Разпределят се номера за второ прекъсване операционна система, въпреки че Windows 9x започва да пречи на действията, извършвани от BIOS само в екстремни случаи. В Windows 98 системата за разпространение на IRQ се управлява с помощта на стандартния мениджър на устройства. В списъка със системни устройства трябва да намерите PCI шината.


В свойствата му има специален раздел. Ако всичко е настроено правилно, минипортът ще бъде споменат там („зареден успешно“) и управлението на PCI шината (управлението) ще бъде активирано. По този начин Windows "98 разполага със средствата да контролира разпределението на числата за прекъсване между физическите линии. Но тъй като BIOS най-често върши добра работа с това, този механизъм не се включва. Но понякога е просто необходимо. Когато използвате остарели ISA устройства които не поддържат технологията Plug & Play, BIOS може да не го забележи, давайки заетото от него прекъсване на PCI устройството - отново конфликт. За да го разрешите, трябва да запазите необходимото прекъсване в диспечера на устройства на Windows "98.

В допълнение към резервирането, можете директно да зададете номера на прекъсване за устройството. За да направите това, трябва да намерите раздела "Ресурси" в неговите свойства, да деактивирате автоматичната настройка и да опитате да промените зададения номер на прекъсване. Бъдете внимателни, такава операция не винаги работи и понякога може да доведе до напълно непредвидими резултати.

Но за Windows 2000 (както и XP) - отделен разговор. Ако имате доста модерен компютър, тогава той вероятно поддържа интерфейса за конфигуриране на ACPI. Windows 2000 в този случай като цяло ще игнорира действията на BIOS и ще "окачи" всички PCI устройства на едно логическо прекъсване. Като цяло това ще работи добре (когато няма ISA устройства), но понякога могат да възникнат проблеми. За да можете да промените номерата на прекъсвания, трябва или да промените HAL ядрото, или да инсталирате отново Windows 2000 с деактивиран ACPI в BIOS. Ядрото се заменя по следния начин: в диспечера на устройства изберете "Компютър / Компютър с ACPI", след което трябва да промените драйвера на " стандартен компютър" и рестартирайте. Ако това не помогне, ще трябва да преинсталирате Windows 2000 отново.

Последни съвети

След като инсталирате нова операционна система с всички драйвери на устройства и се уверите, че работи без проблеми, си струва да запишете всичко настройки на компютъра, особено ако са направени промени в настройките по подразбиране. Най-надеждно е да запишете такава информация на обикновен лист хартия. Такава информация може да бъде много полезна при извършване на промени в конфигурираната система, както и да помогне за решаване на проблеми, които могат да възникнат, ако всички настройки се „изместят“ при инсталиране на ново оборудване (това понякога също се случва). И най-важното, запомнете: повечето от проблемите, които възникват, се дължат на ниското ниво на компютърна грамотност на собственика на компютъра. Следователно човек винаги трябва да се стреми към самообразование, тогава ще има по-малко проблеми, а тези, които въпреки това възникват, няма да изглеждат неразрешими.

Конфликтът е ситуация, при която няколко обекта едновременно се опитват да получат достъп до ресурс, който е предназначен само за един от тях. Конфликт на прекъсване възниква, когато множество устройства използват една и съща линия за прекъсване за изпращане на сигнал за заявка и няма механизъм за обработка на конкурентни заявки. Ако драйверът, когато получава контрол, работи с друго устройство, което е изпратило заявката, тогава или възниква грешка, или едно от устройствата просто не работи.

Възниква въпросът: могат ли няколко устройства да използват една и съща линия за прекъсване или е невъзможно по принцип? В края на краищата, ако водачът може да определи от кого точно е дошла заявката, тогава той ще отговаря само на сигнали от "свото" устройство, игнорирайки всички останали. Но това трябва да бъде договорено предварително по някакъв начин, в противен случай конфликтът е неизбежен.

Местната PCI шина е проектирана с мисъл за споделяне на прекъсвания. Всяко PCI устройство трябва да работи правилно на същата линия за прекъсване като другите PCI устройства. Това се прави по следния начин: наличието на сигнал на линията за прекъсване се определя не от фронта, т.е. промяна в нивото на напрежението, но от самия факт на наличието на определено напрежение. Няколко устройства могат да променят напрежението в линията наведнъж, като се превръщат в опашка за обслужване.

По този начин споделянето на едно и също IRQ от множество PCI устройства по дефиниция не е конфликт (Фигура). Въпреки това, понякога възникват проблеми. Първо, не всички PCI устройства работят правилно на същата линия за прекъсване като другите. На второ място, понякога драйверите имат грешки, които им пречат да идентифицират правилно източника на сигнала, като пречат на други драйвери. Трето, не всички устройства работят на PCI шината; например ISA устройства, които включват например COM / LPT порт контролери, не могат да споделят прекъсвания с други.

Ориз. Win2000 Device Manager IRQ Map - IO PIC Intel 440BX Чипсет

Ориз. Win2000 IRQ MAP - IO APIC - Чрез чипсет KT266a

В резултат на това са възможни ситуации, когато компютърът често замръзва, отказва да изпълнява каквито и да е функции или дори просто изпада в така наречения „син екран на смъртта“.

Apic (Разширен програмируем контролер за прекъсване, усъвършенстван програмируем контролер за прекъсване)

Както е показано по-горе, линията за прекъсване е много оскъден ресурс за компютър. Въпреки това, с развитието на компютърната индустрия, броят на различни външни устройства в компютъра непрекъснато се увеличава. Например на една дънна платкаможе да има 5-6 PCI слота, AGP слот, интегриран IDE контролер, интегриран SCSI контролер, интегриран 1/2 портов мрежов адаптер и т.н. И всички тези устройства се нуждаят от прекъсвания. 16 IRQ линии постепенно станаха недостатъчни.

APICе контролер за прекъсвания, който ви позволява да използвате 24 хардуерни прекъсвания вместо 16. Ограничението от 16 хардуерни прекъсвания, непроменено от 1982 г., възпрепятства инсталирането в персонален компютър допълнителни устройства. В края на 2001 г. се появяват първите дънни платки с APIC.

Ориз. Система за прекъсване в многопроцесорна среда.

Предишното описание се отнася до PIC, предназначени за системи с един процесор. Ако системата включва два или повече процесора, този подход вече не е осъществим и са необходими по-сложни PIC.

Всички съвременни x86 процесори включват локален APIC (local APIC). Всеки локален APIC има 32-битови регистри, вътрешен часовник, локален таймер и две допълнителни IRQ линии, LINT0 и LINT1, запазени за локални прекъсвания на APIC. Всички локални APIC са свързани към външен I/O APIC.

I/O APIC съдържа набор от 24 IRQ линии, 24-посочна таблица за пренасочване на прекъсвания, програмируеми регистри и блок за съобщения за изпращане и получаване на съобщения по шината APIC. За разлика от IRQ изводите на 8259A, приоритетът на прекъсване не е обвързан с номер на щифт.

Всеки запис в таблицата за пренасочване на прекъсвания може да бъде индивидуално програмиран да показва вектора на прекъсване и неговия приоритет, кой процесор ще обработва прекъсването и как този процесор ще бъде избран. Информацията в таблицата за пренасочване на прекъсвания се използва за преобразуване на всеки външен сигнал в съобщение, адресирано до един или повече локални APIC чрез APIC шината.

Статично разпределение

IRQ сигналът се доставя от локалния APIC, посочен в съответния запис в таблицата за пренасочване на прекъсвания. Прекъсване се доставя на един конкретен процесор, множество процесори или всички процесори.

Динамично разпределение

IRQ сигналът се доставя до локалния APIC на процесора, който изпълнява процеса с най-нисък приоритет.

Всеки локален APIC има програмируем регистър на приоритетите на заданието, който се използва за изчисляване на приоритета на текущия процес. Intel очаква този регистър да се актуализира от ядрото на операционната система при всеки превключвател на процес.

В допълнение към разпределянето на прекъсвания между мулти-APIC процесори, системата позволява на CPU да генерира междупроцесорни прекъсвания. Когато CPU желае да изпрати прекъсване към друг CPU, той съхранява вектора на прекъсване и целевия локален APIC ID в своя локален APIC регистър на командите за прекъсване (ICR). След това съобщението се изпраща по шината APIC до целевия локален APIC, който издава съответното прекъсване на своя CPU.

Понастоящем много еднопроцесорни системи включват I/O APIC чип, който може да бъде конфигуриран по два начина:

1. Като стандартен 8259A PIC, свързан към CPU. Локалният APIC е деактивиран и двете линии LINT0 и LINT1 са конфигурирани като INTR и NMI щифтове.

2. Като стандартен външен I/O APIC. Локалният APIC е активиран и всички външни прекъсвания се получават чрез I/O APIC.

  • Алиева Елена Викторовна, студент
  • Уфа държавен авиационен технически университет
  • КОНТРОЛЕР НА ПРЕКЪСВАНЕ
  • КОНТРОЛЕР
  • ХАРДУЕРНО ПРЕКЪСВАНЕ
  • ПРЕКЪСВАНЕ

Прекъсване означава временно прекъсване на основния процес на изчисление за извършване на някои планирани или непланирани действия, причинено от работата на хардуера или програмата. Механизмът за прекъсване се поддържа на хардуерно ниво. Хардуерните прекъсвания възникват като отговор на микропроцесора физически сигналот някакво устройство (клавиатура, системен часовник, клавиатура, HDDи др.), тези прекъсвания са асинхронни във времето на възникване, т.е. възникват в произволни моменти. Контролерът за прекъсвания е проектиран да обработва и арбитражира входящи заявки за услуги към централния процесор от периферни устройства. Прекъсванията имат дефиниран приоритет, който позволява на контролера на прекъсванията да даде приоритет на едно устройство пред друго в даден момент. В съвременния компютър има до 16 външни и периферни устройства, които генерират прекъсвания.

  • Автоматизиране на работния процес на склад на производствено предприятие
  • Обаждания-технологии, характеристики, приложение и ефективност
  • Разработване на модел на информационната система на правния отдел за поддръжка и сключване на фирмени договори

Въведение

Прекъсване означава временно прекъсване на основния процес на изчисление за извършване на някои планирани или непланирани действия, причинено от работата на хардуера или програмата. Тези. това е процес, който временно превключва микропроцесора към изпълнение на друга програма и след това се връща към прекъснатата програма. С натискане на клавиш на клавиатурата инициираме незабавно извикване на програма, която разпознава ключа, въвежда кода му в буфера на клавиатурата, от който се чете от друга програма. Тези. за известно време микропроцесорът прекъсва изпълнението на текущата програма и превключва към манипулатора на прекъсване, така наречения манипулатор на прекъсване. След като манипулаторът на прекъсване завърши своята работа, прекъснатата програма ще продължи изпълнението от точката, където е била прекъсната. Адресът на програмата за обработка на прекъсвания се изчислява от таблицата на векторите на прекъсванията.

Механизмът за прекъсване се поддържа на хардуерно ниво. В зависимост от източника, прекъсванията се делят на:

  • хардуер- възникват като реакция на микропроцесора на физически сигнал от някакво устройство (клавиатура, системен часовник, клавиатура, твърд диск и др.), тези прекъсвания са асинхронни във времето на възникване, т.е. възникват в произволни моменти;
  • софтуер- извикват се изкуствено с помощта на съответната команда от програмата (int), предназначени са за извършване на някои действия на операционната система, са синхронни;
  • изключения- са реакцията на микропроцесора към нестандартна ситуация, възникнала вътре в микропроцесора по време на изпълнението на някаква програмна инструкция (разделяне на нула, прекъсване на TF флаг (проследяване)) .

Система за хардуерно прекъсване

Системата за прекъсване е комбинация от софтуер и хардуер, която реализира механизма за прекъсване.

Хардуерът на системата за прекъсване включва:

  • микропроцесорни изходи - върху тях се генерират сигнали, които уведомяват микропроцесора или че някое външно устройство „иска внимание към него“ (INTR), или че е необходима спешна обработка на някакво събитие или катастрофална грешка (NMI)
  • INTR - щифт за сигнал за заявка за прекъсване на входа,
  • NMI - NMI входен щифт
  • INTA - изход за изходния сигнал, потвърждаващ получаването на сигнал за прекъсване от микропроцесора (този сигнал се подава към едноименния вход на чипа на контролера 8259A;
  • програмируем контролер за прекъсване 8259A (предназначен да улавя сигнали за прекъсване от осем различни външни устройства; той е направен под формата на микросхема; обикновено се използват две последователно свързани микросхеми, така че броят на възможните източници на външни прекъсвания е до 15 плюс едно немаскируемо прекъсване; той е този, който генерира номера на вектора на прекъсване и издава неговата шина за данни);
  • външни устройства (таймер, клавиатура, магнитни дискове и др.)

Обработка на прекъсване

Прекъсването задейства поредица от събития, които се случват както в хардуера, така и в софтуера. На фиг. 1 показва типична последователност от тези събития.

След като I/O устройството приключи, се случва следното:

  • Устройството изпраща сигнал за прекъсване към процесора.
  • Преди да отговори на прекъсване, процесорът трябва да завърши изпълнението на текущата инструкция (виж фигура 1).
  • Процесорът проверява за прекъсване, открива го и изпраща на устройството, което е изпратило прекъсването, сигнал, че го е получило успешно. Този сигнал позволява на устройството да премахне своя сигнал за прекъсване.
Фигура 1. Времева диаграма на програмата: Бавен I/O

Сега процесорът трябва да се подготви да прехвърли контрола към манипулатора на прекъсване. Първо трябва да запазите всичко важна информацияза да можете по-късно да се върнете към точката в текущата програма, където е била на пауза. Минималната необходима информация е думата за състоянието на програмата и адресът на следващата инструкция, която трябва да се изпълни, която е в програмния брояч. Тези данни се прехвърлят в стека за управление на системата.

Фигура 2. Обработка на обикновено прекъсване

След това програмният брояч на процесора се зарежда с входния адрес на програмата за обработка на прекъсвания, която е отговорна за обработката на това прекъсване. В зависимост от архитектурата на компютъра и устройството на операционната система може да има или една програма за обработка на всички прекъсвания, или може да има отделен манипулатор за всяко устройство и всеки тип прекъсване. Ако има няколко програми за обработка на прекъсвания, тогава процесорът трябва да определи коя да извика. Тази информация може да се съдържа в първоначалния сигнал за прекъсване; в противен случай, за да получи необходимата информация, процесорът трябва да анкетира всички устройства на свой ред, за да определи кое от тях е изпратило прекъсването.

Веднага след като се зареди нова стойност в програмния брояч, процесорът преминава към следващия цикъл на инструкции, като продължава да я извлича от паметта. Тъй като инструкцията се извлича от мястото, чийто номер е даден от съдържанието на програмния брояч, управлението преминава към процедурата за прекъсване. Изпълнението на тази програма включва следните операции.

Съдържанието на програмния брояч и думата за състоянието на прекъснатата програма вече се съхраняват в системния стек. Това обаче не е цялата информация, свързана със състоянието на изпълнимата програма. Например, трябва да запишете съдържанието на регистрите на процесора, тъй като тези регистри може да са необходими на манипулатора на прекъсване. Следователно е необходимо да запазите цялата информация за състоянието на програмата. Обикновено манипулаторът на прекъсване започва с избутване на съдържанието на всички регистри в стека. Друга информация, която трябва да се съхранява, се обсъжда в Глава 3, Описание и управление на процесите. На фиг. е показан прост пример, в който потребителската програма се прекъсва след изпълнение на инструкция от място N. Съдържанието на всички регистри, както и адресът на следващата инструкция (N + 1), общо M думи, се изтласкват в стека . Указателят на стека се актуализира, за да сочи към новия горен край на стека. Програмният брояч също се актуализира, което показва началото на рутинната услуга за прекъсване.

Сега манипулаторът на прекъсване може да започне своята работа. Процесът на обработка на прекъсване включва проверка на информация за състоянието, свързана с I/O операции или други събития, които са причинили прекъсването. Това може също да включва изпращане на допълнителни инструкции или уведомителни съобщения до I/O устройства.

След завършване на обработката на прекъсването, предварително запазените стойности се извличат от стека, които отново се въвеждат в регистрите, като по този начин се възстановяват състоянието, в което са били преди прекъсването.

Последната стъпка е да възстановите думата за състоянието на програмата и съдържанието на програмния брояч от стека. В резултат на това следващата команда на прекъснатата програма ще бъде изпълнена.

Тъй като прекъсването не е подпрограма, извикана от програмата, важно е за пълно възстановяване да се запази цялата информация за състоянието на прекъснатата програма. Въпреки това, прекъсване може да възникне по всяко време и навсякъде в потребителската програма. Това събитие е непредвидимо.

Контролер за прекъсвания

Контролерът за прекъсвания е проектиран да обработва и арбитражира входящи заявки за услуги към централния процесор от периферни устройства. По аналогия функциите на контролера на прекъсванията могат да бъдат сравнени със секретаря на някой шеф. Секретарят трябва да реши кой от посетителите да допусне до шефа на първо място и кои и след това, въз основа на приоритетите, дадени от шефа и статуса на посетителя. Така че в една компютърна система е възможно няколко периферни устройства да са изпратили сигнал за прекъсване или заявка за прекъсване. В компютърната литература този сигнал се нарича IRQ (Interrupt Request).

Както бе споменато по-горе, прекъсванията имат определен приоритет, който позволява на контролерите на прекъсвания да дават предпочитание на едно устройство в даден момент, а не на друго. В съвременния компютър има до 16 външни и периферни устройствакоито генерират прекъсвания. Ето и устройствата:
–IRQ 0, системен таймер; –IRQ 1, клавиатура; –IRQ 2, използван за запитване на каскадни устройства; –IRQ 8, часовник за реално време; –IRQ 9, запазен; –IRQ 10, запазен; –IRQ 11, запазен; –IRQ 12, ps/2 – мишка; –IRQ 13, копроцесор; –IRQ 14, контролер на твърдия диск; –IRQ 15, запазен; –IRQ 3, портове COM2, COM4; –IRQ 4, портове COM1,COM3; –IRQ 5, LPT2 порт; –IRQ 6, контролер на задвижване; –IRQ 7, LPT1 порт, принтер.

Тук сигналите са изброени в низходящ ред по приоритет. Виждате, че след IRQ 2 следва IRQ 8. Факт е, че по едно време контролерът за прекъсване се състоеше от две микросхеми, едната беше свързана с другата. Тази втора микросхема е свързана към линията IRQ 2, образувайки каскада. Обслужва линиите IRQ8-IRQ 15. След това следват линиите на първата микросхема.

Работа на контролера за прекъсване

Прекъсване на работата на контролерасе счита за базиран на чипове Intel 8259A, които се използват в вече много стари компютри с процесори до серия 386. Тези компютри обикновено имаха 2 чипа 8259A, свързани каскадно, тоест един към друг. Една от микросхемите, свързани чрез линията за заявка за прекъсване директно към процесора, е главната или главната. Останалите, свързани с господаря чрез подобни заключения, се наричат ​​подчинени.


Фигура 3. Схема на свързване на контролери за прекъсвания и тяхното взаимодействие с централния процесор

Фигура 3 показва схемата на свързване на контролерите за прекъсвания и тяхното взаимодействие с централния процесор. Сигналите за прекъсване от периферни устройства или подчинени контролери се подават към входовете IR0–IR7 на главния контролер. Вътрешната логика на главния контролер обработва входящите заявки по приоритет. Ако приоритетът на заявката на устройството е достатъчен, тогава на изхода INT на контролера се генерира сигнал, който се подава към входа INTR на процесора. В противен случай заявката се блокира.

Ако процесорът разрешава прекъсвания, тогава след като изпълнението на текущата инструкция приключи, той генерира поредица от сигнали по линията INTA, което поставя подчинения контролер в състояние на имунитет към входящи нови заявки за прекъсване и в допълнение информация от вътрешните регистри на контролера се извеждат към линията за данни, по която процесорът разпознава типа на прекъсване.

Процесорът дава разрешение за прекъсване на контролера за прекъсване чрез контролера на шината. RD сигналът е предназначен да гарантира, че контролерът за прекъсване поставя съдържанието на вътрешните регистри на шината за данни. На сигнала WR контролерът на прекъсванията, напротив, получава данни от едноименната шина и ги записва във вътрешни регистри. Съответно това се отразява на режима на работа на контролера на прекъсванията.

CS входът е свързан към адресната шина и този сигнал идентифицира конкретен контролер за прекъсване. Вход A0 сочи към порта на контролера за прекъсване в I/O пространството.

Входовете IR0–IR7 са проектирани да приемат заявки за прекъсване от периферни устройства и подчинени контролери.

Изходите CAS0-CAS2 са проектирани да идентифицират конкретен подчинен контролер.

Статията разглежда хардуерните прекъсвания и устройство, функции, работа на контролера за прекъсване.Този контролер за прекъсвания се появи в първите компютри, съвместими с компютър. Оттогава както процесорите, така и самият компютър са се променили по много начини, въпреки че някои точки остават. Следователно, за да стане по-ясно, беше разгледана организацията на контролера за прекъсване 8295A.

Горната диаграма показва сигналите, идващи не само към подчинените и главните контролери за прекъсване, но и към останалите подчинени устройства. Въпреки това, вашият компютър или лаптоп всъщност има 2 контролера за прекъсване, както е посочено по-горе: главен и подчинен. Но можете да създадете свои собствени компютърни системи, като използвате до 64 подчинени контролера за прекъсване по този начин.

IN съвременни компютрипреди много време функции на контролера за прекъсванене изпълняват 8259A чипове, но южен мост. Въпреки това, за всички програми и устройства всичко остава същото. Освен това контролерът за прекъсване е програмируем и вътрешните регистри и портове трябва да бъдат достъпни по същия начин като контролера 8259A.

Заключение

В тази статия бяха разгледани прекъсванията, а именно хардуерът за обработка на прекъсвания и принципът на обработка на прекъсване. Разглеждат се също контролерите за прекъсвания и принципът на тяхната работа.

Прекъсване означава временно прекъсване на основния процес на изчисление за извършване на някои планирани или непланирани действия, причинено от работата на хардуера или програмата. Механизмът за прекъсване се поддържа на хардуерно ниво. Хардуерните прекъсвания възникват като реакция на микропроцесора на физически сигнал от някакво устройство (клавиатура, системен часовник, клавиатура, твърд диск и др.), тези прекъсвания са асинхронни във времето на възникване, т.е. възникват в произволни моменти.

Контролер за прекъсванияе проектиран да обработва и арбитражира входящи заявки за услуги към централния процесор от периферни устройства. Прекъсванията имат определен приоритет, което позволява контролер за прекъсваниядават предпочитание в даден момент на едно устройство пред друго. В съвременния компютър има до 16 външни и периферни устройства, които генерират прекъсвания.

Библиография

  1. Лекция. Прекъсва. електронна поща Ресурс. http://hromatron.narod.ru/_lekcii/prerivania_lekcia_g2013.htm
  2. Системни прекъсвания | Хардуерно прекъсване | Обработка на прекъсване http://life-prog.ru/view_os.php?id=16
  3. Контролер за прекъсвания. електронна поща Ресурс http://sdelaycomputersam.ru/Controller_irq.php,
  4. Прекъсва. Контролер за прекъсвания. Устройство, функции, работа. електронна поща Ресурс http://sdelaycomputersam.ru/Controller_irq.php
  5. Структура и инициализация на контролера за прекъсвания Intel 8259A

Мисля, че много любопитни потребители вероятно са срещали такова съкращение като IRQ повече от веднъж. Може да бъде намерен, например, ако искате да разгледате програмата Device Manager в Windows. Ако изберете някое устройство, например клавиатура, изберете елемента от менюто „Свойства“ с десния бутон на мишката и в прозореца, който се показва, активирайте раздела „Ресурси“, след което в списъка с ресурси ще видите надпис IRQ 01.

Какво е IRQ и за какво е?

Съкращението IRQ означава Interrupt ReQuest (заявка за прекъсване). За да разберем защо е необходимо, трябва да си припомним подробностите за организацията на работата на персонален компютър.

Кръвоносната система на компютъра, чрез която процесорът и другите устройства обменят информация, е системна шина. Но като цяло, как процесорът е в състояние да различава заявките за обработка на информация, идващи по шината от различни устройства?

За това има система от хардуерни прекъсвания (IRQ). Всяко прекъсване има специфичен номер (номерацията започва от 0) и се присвоява на конкретно устройство. И така, на клавиатурата се присвоява номер на прекъсване 1, откъдето идва и обозначението IRQ 01.

Когато се получи заявка от устройството, компютърът прекъсва (оттук и самият термин „прекъсване“) обработката на текущата информация и започва да обработва новополучената. Ако има няколко прекъсвания, те се обработват в реда на приоритетите, присвоени на всяко от тях. Като правило, колкото по-малък е номерът на прекъсването, толкова по-голям приоритет за процесора има устройството, присвоено на това прекъсване, но това правило не винаги се спазва.

Обслужва обработката на IRQ специален чип, който се нарича контролер за прекъсване. По правило тази микросхема е част от централния процесор и понякога се разпределя като отделен чип на дънната платка. За обработка на всяко прекъсване в BIOS има специален фърмуер, наречен манипулатор на прекъсвания. Адресите на всички манипулатори се съхраняват в така наречената таблица на вектора на прекъсване.

Преди това 8-битовите бяха често срещани в първите компютри от семейството XT, така че общо 8 прекъсвания бяха достъпни за устройствата. С появата на 16-битовата ISA шина техният брой се увеличи до 16.

Задаване на заявка за прекъсване

Трябва да кажа, че прекъсванията, присвоени на някои устройства, не са фиксирани и могат да се променят програмно. Например, IRQ обикновено се използва от серийни Com порт 2 може да използва и модем, инсталиран в слота за разширение. В съвременните компютри и операционни системи, които поддържат стандарта PnP и работят под Windows, стойностите на IRQ за устройства, свързани към слотове за шина, се избират автоматично.

Но нещата не бяха толкова прости в старите дни, когато потребителят трябваше ръчно да задава стойността на IRQ в много DOS програми. Например при инсталиране звукова карта, потребителят трябваше да избере свободно прекъсване от много малък брой налични (обикновено това беше IRQ 5) и да посочи тази стойност в програмата, която се стартира, например в някаква игра.

В много BIOS е възможно да промените стойностите на IRQ по подразбиране в програмата за настройка. Тази опция обикновено се намира в секциите IRQ ресурси или PCI/PNP конфигурация.

Задаването на стойност на IRQ за устройство, равна на стойността на IRQ, която вече е заета от някое устройство, в повечето случаи води до неработоспособност на едно от тези устройства или и на двете едновременно, а понякога е изпълнено със замръзване на компютъра.

В по-модерната PCI шина системата за контрол на прекъсванията е радикално променена и възможностите за контрол на прекъсванията са разширени. Благодарение на технологията IRQ Sharing също стана възможно да се поставят няколко устройства на един канал за прекъсване, а външните устройства, свързани към PCI слотове, имат възможността автоматично да разпределят ресурси помежду си.

В допълнение, съвременните компютри обикновено използват усъвършенстван програмируем контролер за прекъсване (APIC, ), който поддържа 24 канала на Interrupt ReQuest. Усъвършенстваният контролер за прекъсвания е направен под формата на две микросхеми, едната от които е разположена в самия процесор, а другата на дънната платка. Този контролер за прекъсвания се появи за първи път в системи, базирани на процесори Pentium. Въпреки това поддръжката на старата система за прекъсване беше запазена поради причини за съвместимост. Следващата стъпка в развитието на принципите за обработка на прекъсвания е технологията Message Signaled Interrupts, поддръжка за която се появи в линията на Windows OS, започвайки с Windows Vista.

Не бъркайте хардуерните IRQ със софтуерните прекъсвания на BIOS, които ще бъдат обсъдени в отделна статия. Софтуерните прекъсвания на BIOS обикновено се използват за организиране на работата софтуерс входно-изходни устройства и се означават с абревиатурата INT. Много от тях са подобни по функция на хардуерните IRQ, но имат различни номера.

Списък с номера на заявка за прекъсване в стандартната схема за 16-битовата ISA шина:

  1. Системен таймер
  2. клавиатура
  3. Допълнителен контролер за прекъсвания (за съвместимост с 8-битова шина)
  4. Com 1 и 3 портове
  5. Com 2 и 4 порта
  6. Безплатно (в 8-битова шина - контролер на твърд диск)
  7. Контролер дискети(FDD)
  8. Паралелен порт LPT
  9. CMOS часовник за реално време
  10. В комбинация с IRQ 2
  11. Безплатно
  12. Безплатно
  13. PS/2 порт за мишка
  14. Копроцесор (в момента почти не се използва)
  15. Първият IDE контролер
  16. Втори IDE контролер

Списък с допълнителни IRQ, които APIC Extended Interrupt Controller използва:

  1. USB контролер
  2. Интегрирана аудио подсистема (AC'97 или HDA)
  3. USB контролер
  4. USB контролер
  5. Интегрирана мрежова карта
  6. Безплатно
  7. Безплатно
  8. USB 2.0 контролер

Съответствие на IRQ номера и BIOS прекъсва:

Таблица на корелацията между хардуерен IRQ и софтуерен INT BIOS

Заключение

И така, в тази статия успяхте да разберете какво означава абревиатурата IRQ и какво представляват хардуерните прекъсвания. Те са вграден механизъм за разпределяне на компютърни ресурси и са предназначени да организират достъпа на устройството до централния процесор. Правилното разпределение и настройка на IRQ избягва конфликти между устройствата и гарантира стабилна работасистеми.

Управление на приоритетите на IRQ

Управление на заявките за хардуерно прекъсване

Повечето от компонентите, директно свързани към дънната платка, включително PCI слотове, IDE контролери, серийни портове, порт за клавиатура, дори CMOS на дънната платка, имат отделни IRQ. Искането за хардуерно прекъсване или IRQ прекъсва нормалната работа на процесора, позволявайки на устройството да функционира. Windows 7 ви позволява да дадете приоритет на едно или повече IRQ (които са съпоставени с едно или повече устройства), което потенциално подобрява производителността на тези устройства.

Стъпки за промяна на приоритета на IRQ

  1. Започнете, като стартирате помощната програма за системна информация (msinfo32.exe) и отворете клона за системна информация Прекъсвания на хардуерните ресурси (IRQ), за да видите кои IRQ се използват за кои устройства.
  2. След това отворете редактора на системния регистър (вижте Глава 3) и отидете до клона HKEY_LOCAL_ MACHINE\SYSTEM\CurrentControlSet\Control\PriorityControl.
  3. Създайте нова стойност на DWORD в този раздел и наименувайте параметъра IRQ#Priority, където # е номерът на IRQ устройството, за което искате да зададете приоритет (например, IRQ13Priority съответства на IRQ 13, тоест аритметичен копроцесор) .
  4. Щракнете двукратно върху новата стойност и въведете приоритетния номер. Въведете 1 за най-висок приоритет, 2 за втория и т. н. Уверете се, че не въвеждате едно и също число за два записа и не се опитвайте да го правите наведнъж, а по-скоро експериментирайте с една или две стойности.
  5. Когато приключите, затворете редактора на системния регистър и рестартирайте компютъра.