Переривання 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. Після закінчення закрийте редактор реєстру та перезавантажте комп'ютер.

Переривання поділяються на апаратні (масковані та немасковані) та програмні. Програмні переривання, власне, перериваннями є, це спосіб виклику певних процедур. Але процесором програмні переривання обробляються як із типів переривань.

Те, що відповідно до PCI-специфікацій повинні вміти всі PCI-картки, але насправді дуже рідко реалізується, називається "IRQ-Sharing". Теоретично це означає, що кілька компонентів повинні задовольнятися тим самим IRQ. Але оскільки лише небагато PCI-карт спілкуються один з одним настільки гармонійно, "Windows 9x" ставить у відповідність кожній карті, наскільки це можливо, власний IRQ. Складнощі конфігурування системних ресурсів, їх розподілу між мережевими та звуковими картами, 3D-прискорювачами, стандартними послідовними та паралельними пристроями, а нині ще відео- та DVD-декодерами поступово послаблюються з масовим впровадженням USB-шини, точніше масовим поширенням USB-периферії. Щоправда, USB шина сама займає один IRQ. Але вона зобов'язана включити в систему без подальшого витрачання ресурсів усі периферійні пристрої, будь то миша, клавіатура, сканер або відеокамера.

Ще один термін. "Polling mode" – робота пристрою без використання переривань. Це зустрічається під час роботи з простими SCSI-контролерами на шині ISA.

Пристрій

Коментарі

Системний таймер

Системне переривання. Генерується 91 разів за 5 сек. У цьому ролі застосовується з часу першого PC.

Клавіатура

Системне переривання, яке генерується контролером клавіатури.

Контролер переривань

Каскадовано (пов'язано) з IRQ9. Можуть виникнути конфлікти, коли одночасно на IRQ2 та IRQ9 повинні працювати різні пристрої. Його використання системою зберігається для сумісності.

Використовується другим комунікаційним адаптером (UART2). Який пристрій буде його генерувати? Це може бути другий послідовний порт COM2 (інтегрований на материнській платі), внутрішній модем, налаштований COM2 або COM4, ​​або інфрачервоний адаптер. Можна відключити UART2, але присвоїти IRQ3 нічого не вдасться. Поділяє те саме IRQ3 з COM4 (за наявності останнього). Можливий конфлікт за одночасного використання.

Пристрій

Коментарі

Використовується першим адаптером комунікацій. Все практично ідентично: генерується першим послідовним портом COM1, модемом COM1 або COM3 (за винятком інфрапорту). Поділяє те саме IRQ4 з COM3 (за наявності останнього). У системах з підключеною до COM1 мишею використовувати COM3 не слід.

вільний

Переривання спочатку призначалося використання другим паралельним портом LPT2. Практичного застосування таке рішення не знайшло, тому IRQ5 перейшло до розряду вільних. У IBM XT на IRQ5 "висів" жорсткий диск. Через деякий час "Creative Labs", створюючи звукову карту "Sound Blaster Pro", знайшла застосування переривання. З того часу IRQ5 стало улюбленим для більшості звукових карток ISA. Звукові PCI-карти також іноді використовують це переривання для емуляції "SB Pro". IRQ5 можна прив'язати до слота PCI.

Пристрій

Коментарі

Контролер FDD-дисковода

Переривання використовується контролером флоппі-дисковода, починаючи з перших ПК. Однак переривання все одно не може бути використане: ISA-карти на роботу з ним не розраховані, і до слота PCI прив'язати його не можна.

За замовчуванням переривання першого паралельного порту LPT1. При відключеному порті (якщо принтер відсутній або розрахований на USB) може використовуватися різними пристроями: мережевими, картами ISDN. Це також "запасне" місце для звукових карток.

Годинник реального часу (RTC)

Системне переривання від перших IBM AT.

вільний

Каскадовано з IRQ2. В іншому може використовуватися на розсуд.

вільний

Може бути використаний на розсуд. Застарілі IDE-контролери на старих звукових картах іноді використовують це IRQ.

Пристрій

Процесор перевантажений? Винні системні переривання.

Виною тому, що процесор перевантажений практично протягом усього сеансу, можуть бути так звані системні переривання, а це, у свою чергу, означає, що проблема криється в області встановленого на комп'ютері обладнання або драйверів для цих пристроїв. Але попереджаю відразу: навіть обсягу всієї цієї статті не вистачить, щоб вичленувати всі причини (і тим більше варіанти їх вирішення), чому системні переривання просто вбивають Windows. Бо підхід до пошуку проблем ускладнюється використанням набагато складнішого інструменту, ніж той, що описується тут.

Що таке системні переривання та як спробувати впоратися з навантаженням процесора?

Системні переривання з'являються в Диспетчері завдань як системний процес, проте по суті вони такими не є. Ця «» має лише репрезентативний характер, відображаючи завантаженість процесора під час роботи з перериваннями низькому рівні. Вона – невід'ємна частина Windows, убити процес не можна. Незважаючи на зловісну назву, системні переривання – обов'язкова та нормальна частина процесу взаємодії ЦПУ та іншого обладнання.

Причиною переривань (точніше, занадто повільною час від часу роботи) можуть бути девайси всередині вашого комп'ютера, встановлені програми, а іноді й сам процесор. Адже системні переривання – є певна форма взаємодії між програмою/залізом і самим процесором. Щоразу, коли новому процесу потрібно з'явитися в системі, процесор кидає всі справи та виконує завдання. Неважливо, чи натиснув користувач мишку або процес запущений за розкладом, завдання відразу додається в чергу виконання. На її виконання процесор повертається до попереднього стану.

Як розумієте, системні переривання цілком можуть сигналізувати системі та користувачеві, що в даний момент деякі обчислення йдуть з помилкою, що і виражається в серйозних споживання ресурсів процесора цим «процесом». У здоровій системі системні переривання «споживають» НЕ БІЛЬШ 2% від загального обсягу роботи процесора. Хоча мені зустрічалися і процесори з показником переривання від 3 до 10% - все залежить від конфігурації. Але якщо ви помітили, що процесор витрачає на переривання хоча б 5 - 10% від своєї обчислювальної потужності від сеансу до сеансу, це сигнал того, що у комп'ютера проблеми.

Системні переривання. Як боротися з високими свідченнями?

Кожен із наступних кроків вимагатиме перезавантаження системи. Не тому, що так прийнято, а тому проблеми з перериваннями вирішуються часто простим перезапуском Windows.

  • ДРАЙВЕРИ ТА ЩЕ РАЗ ДРАЙВЕРИ

Найперший засіб, який допоможе визначити, чи винні биті драйвери в тому, що системні переривання навантажують процесор, це німецька утиліта. DPC Latency Checker. Завантажте її за цим посиланням:

Установки не потрібно. Суть утиліти проста. Запускаємо і починаємо роботу в Windows, доки системні переривання не почнуть нам заважати. Ось вікно нормально працюючої збірки:

А ось вони починають себе проявляти:

Утиліта в полі коментаря англійською мовою радить вам перейти в Диспетчер пристроїв і почати поетапне відключення мережевих пристроїв, звукових карт, USB контролерів, пристроїв bluetooth. Раджу прислухатись. Після кожного відключення вдивляйтесь у Диспетчер завдань та вікно утиліти, перегляньте, як система реагує на тимчасове відключення обладнання. Продовжуйте вимкненням усіх зовнішніх пристроїв: модеми, зовнішні диски, флешки. І якщо в якийсь момент намітяться зміни на краще, ухваліть рішення про оновлення драйвера до пристрою. Але щоб не було проблем із запуском Windows, ці пристрої краще не відключати (ці драйвери життєво необхідні, але це теж драйвери, і цілком можливо доведеться перевстановити дрова на материнську всім пакетом як при установці Windows начисто):

На такий же спосіб діє і програма LatencyMon

http://www.resplendence.com/downloads

Вона вимагатиме встановлення, зате також безкоштовна. Її завдання – пошук файлів драйверів з високим показником обчислень, витрачених на відкладений виклик процедури (процесу, який викликається процедурою обробки переривання у відповідь саме переривання, але необов'язково відразу ж виконується). За цією складною назвою ховається процес пошуку драйверів, у файлах яких зберігається інформація про те, що драйвер занадто багато вимагає від процесора для обслуговування свого, приписаного конкретно йому пристрою. Ось сторінка видавців:

http://www.resplendence.com/latencymon

на якій, втім, я своїми сліпими очима посилання для скачування не знайшов, тому представлю вам можливість завантажити програму з мого сайту

СКАЧАТИ БЕЗКОШТОВНО ПРОГРАМУ

Запустившись, та відразу повідомила мені про можливі проблеми з DVD приводом – драйвер atapi.sysвідповідає саме за нього (а до речі, привід не працює вже майже 3 місяці…). Попереджає, що можливо потрібно буде перепрошувати BIOS:

Переходимо у вкладку Driversі відсортуємо їх за найбільш уразливими показаннями, натиснувши на колонку DPC count:

До перших у рядку придивіться: вони і можуть бутипричиною ваших проблем.

  • ВСЕ ВІДБУЛОСЯ ЯК-ТО ДРУГ, ПІСЛЯ ПЕРЕЗАВАНТАЖЕННЯ

Був один момент, коли ну ніякне вдавалося вичленувати причину гальм. Допоміг випадок: користувач "хапнув" вірус, який знищив DirectX, причому діяв вкрай вибірково, вбиваючи саме системні файли Windows, залишаючи DirectX ігрові . Довелося ремонтувати систему оновленням, і – диво! – разом із погань зникли і системні переривання. Я не пошкодував трохи часу, але результат виявився несподіваним. Винуватцями виявились не віруси та не драйвери, а пакети оновлень. Ось їхні імена:

  • KB3199986
  • KB4013418
  • KB3211320

Я наполягаю, що саме ПІСЛЯ ВСТАНОВЛЕННЯ САМЕ ЦИХ ОБНОВЛІВ конкретний користувач починав мучитися від навантаження системними перериваннями. Якось так… вам інформація для роздумів.

  • ВИКЛЮЧАЄМО НЕСПРАВНЕ ОБЛАДНАННЯ

Теж може спричинити те, що системні переривання навантажують процесор дуже. Починайте перевірку, якщо попередній пошук битих драйверів успіху не приніс. А допоможе вам у пошуку проблем із “залізом” сама Windows та вбудовані утиліти самодіагностики. Про них я писав уже у статті. Пробіжіть очима, інформація виявиться корисною, не сумнівайтеся. Знайте - відійшли від роз'єму шлейфу також можуть бути винуватцями пригод. Я особисто стикався з проблемами і перегріву процесора, і "забудькуватості" про-апгрейдить BIOS для нової Windows 10 (про це нижче) - скрізь результатом були помітні системні переривання.

ПРИМІТКА. Якщо системні переривання здолали ваш ноутбук, вам доведеться переконатися, що у вас немає проблем із вмираючим акумулятором. Прочитайте статтю власними силами.

  • ПЕРЕВІРТЕ ЗВУКОВУ СХЕМУ WINDOWS

Власне, йдеться про те, щоб скинути звукові ефекти у Windows до встановлених за промовчанням. Клацніть на іконці звуку правою мишкою і натисніть на Пристрої відтворення:

У вкладці Відтворення клацніть двічі на пункті дефолтних пристроїв (у мене Динаміки), пройдіть у вкладку Додаткові можливостіі встановіть галочку навпроти Вимкнути всі ефекти. Застосувати – ОК. Перезавантажуємося та перевіряємо:

  • ВИННА BIOS?

Не виключено. BIOS – перша програма, яка запускається після натискання кнопки включення комп'ютера. Так що час перевірити оновлення для BIOS. А щоб пошуки потрібної версії не затягувалися в часі, перевірте версію BIOS прямо зараз. У консолі команд cmdнаберіть послідовно дві команди:

Systeminfo | findstr /I /c:bios wmic bios get manufacturer, smbiosbiosversion

Iу першій команді – це велика латинська i.

Причина у жорсткому диску?

"Цілком собі і навіть дуже". Найпростіший спосіб – перевірте диск на помилки за допомогою вбудованих засобів типу chkdsk. Якщо після "прогону" системні переривання стихли, причину виявлено. Однак у випадку, коли проблема з'являється знову і знову, при всьому тому chkdskнезмінно виявляє помилки, у вас проблеми (з жорстким, БП або материнською платою) - готуйтеся до гіршого.

P.S. Ну, судячи з відгуків, проблема народ смикає. Обіцяю тему розвинути у наступних статтях.

Успіхів вам.

Прочитано: 1 275

Добре, коли після складання або планової модернізації комп'ютер з першого разу запускається та працює стійко та без глюків. Набагато гірше, якщо виникають несподівані проблеми – спонтанні перезавантаження та зависання, збої програм, непрацездатність чи "невидимість" пристроїв тощо. Перша причина, яка зазвичай спадає на думку в такому випадку, - конфлікт переривань. Чи добре ми знаємо природу цього явища, чи достатньо підготовлені до боротьби з ним?

Що таке IRQ
Переривання - це базовий механізм реакції системи на події, що виникають. Апаратні переривання, які зазвичай називають IRQ (Interrupt ReQuest) - це фізичні сигнали, за допомогою яких контролер пристрою інформує процесор про необхідність обробити деякий запит. Умовно схема обробки переривання виглядає так:
1) процесор отримує сигнал переривання та його номер;
2) по спеціальній таблиці знаходиться адреса програми, відповідальної за обробку переривання з цим номером - обробника переривання;
3) процесор зупиняє поточну роботу і перемикається виконання оброблювача (загалом це деякий драйвер);
4) драйвер отримує доступ до пристрою та перевіряє причину виникнення переривання;
5) запускаються запитані дії - ініціалізація, конфігурування пристрою, обмін даними та ін.
6) драйвер завершує роботу, і процесор повертається до перерваного завдання.
Очевидно, що для коректної роботи механізму переривань необхідне виконання двох умов: по-перше, сигнал запиту повинен сягати процесора і, по-друге, драйвер-обробник повинен правильно реагувати цей сигнал. У разі конфлікту не дотримується друга умова: сигнал переривання приходить, але реакція на нього виявляється неправильною, внаслідок чого ми маємо (у кращому випадку) непрацездатний пристрій.

Конфлікт
Можна сказати, що конфлікт - це ситуація, за якої кілька об'єктів одночасно намагаються отримати доступ до ресурсу, який призначений лише для одного з них. Конфлікт переривань виникає у разі, якщо кілька пристроїв використовують одну й ту саму лінію переривання для посилки сигналу запиту немає механізму, що дозволяє обробляти конкуруючі запити. Якщо драйвер, отримуючи керування, працює не з тим пристроєм, який надіслав запит, або відбувається збій, або один з пристроїв просто не працює.
Виникає питання: чи можуть кілька пристроїв використовувати одну й ту саму лінію переривання, чи це, в принципі, неможливо? Адже якщо драйвер зможе визначити, від кого саме надійшов запит, то він реагуватиме на сигнали лише "свого" пристрою, ігноруючи всі інші. Але це має бути якимось чином заздалегідь обумовлено, інакше конфлікт неминучий.
p align="justify"> Локальна шина PCI була спроектована з урахуванням спільного використання переривань. Кожен пристрій PCI повинен коректно працювати на одній лінії переривання з іншими пристроями PCI. Це зроблено так: факт наявності сигналу лінії переривання визначається за фронтом, тобто. зміни рівня напруги, а за фактом наявності певної напруги. Змінювати напругу в лінії може відразу кілька пристроїв, стаючи на чергу на обслуговування.
Таким чином, спільне використання одного IRQ декількома PCI-пристроями не є конфліктом визначення. Однак іноді проблеми таки виникають. По-перше, не всі пристрої PCI коректно працюють на одній лінії переривання з іншими. По-друге, іноді драйвери мають помилки, через які вони не можуть правильно визначати джерело сигналу, заважаючи іншим драйверам. По-третє, далеко не всі пристрої працюють на шині PCI; наприклад, ISA-пристрою, до яких належать, наприклад, контролери COM/LPT-портів, ділити переривання з іншими не вміють. Щоб чітко уявляти, як можна уникнути конфліктів або усунути їх, потрібно розібратися в механізмі управління IRQ.

Організація апаратних переривань у персональному комп'ютері
Як знаєте, персональні комп'ютери почалися з IBM PC. Його архітектура передбачала вісім ліній апаратних переривань (IRQ), якими керував спеціальний контролер. Кожен із них призначався номер, який визначав пріоритет переривання та адресу його обробника (так званий вектор переривання). Нова архітектура IBM PC AT передбачала ще вісім ліній переривань, для яких використовувався другий контролер, що підключається до однієї з ліній переривання першого контролера. На жаль, дана архітектура стала останньою після того, як фірма IBM втратила можливість керувати розвитком створеної нею платформи, тому всі сучасні комп'ютери, як і раніше, мають лише шістнадцять переривань, одне з яких використовується другим контролером.
У комп'ютера IBM PC AT була лише одна шина, якою пристрої могли спілкуватися з процесором і пам'яттю - ISA. Більшість ліній переривань були закріплені за стандартними ISA-пристроями, що залишилися зарезервовані на майбутнє. Коли це майбутнє настало, з'ясувалося, що новій універсальній шині PCI дісталося лише чотири вільні переривання. Тому був придуманий хитрий механізм спільного використання переривань (IRQ Sharing) і динамічного перевизначення номерів (IRQ Steering або Mapping).
Суть механізму управління переривання PCI-пристроїв в наступному. У загальному випадку існує чотири фізичні лінії PCI-переривань, званих PIRQ0, PIRQ1, PIRQ2 і PIRQ3. Вони підключені до контролера переривань. Кожен PCI-пристрій зі свого боку має чотири роз'єми, звані INT A, INT B, INT C і INT D. Підключати лінії до роз'ємів можна у будь-якому порядку. Наприклад, для першого PCI-слота можна зробити таку розведення: PIRQ0 - INT A, PIRQ1 - INT B, PIRQ2 - INT C, PIRQ3 - INT D. А для другого - інакше: PIRQ0 - INT B, PIRQ1 - INT C, PIRQ2 – INT D, PIRQ3 – INT A. Зазвичай пристрій вимагає лише одну лінію переривання, підключену до INT A. Будучи встановленим у перший слот, пристрій використовує лінію PIRQ0, а у другому слоті на тому ж контакті буде лінія PIRQ1. Таким чином, пристрої в різних слотах будуть використовувати різні фізичні лінії переривань. Апаратний конфлікт між ними буде виключено.
Шина AGP, будучи по суті спеціалізованою модифікацією PCI, також використовує одну з ліній PIRQ – зазвичай PIRQ0.
Для сучасних систем чотирьох ліній виявляється недостатньо, тому в нових чіпсетах часто застосовуються вісім ліній PIRQ, які так само в різних комбінаціях підключаються до слотів PCI та вбудованих у плату пристроїв.
Лінії PIRQ підключаються до контролера переривань. Їм, як і іншим лініям, призначаються логічні номери IRQ. Якщо на одній фізичній лінії знаходяться кілька пристроїв (а це допустимо), то всі вони матимуть один і той самий номер IRQ. Якщо пристрої знаходяться на різних фізичних лініях, вони можуть отримати однакові номери IRQ. Нормальні драйвери дозволять їм вільно працювати без втрати продуктивності, тому що шина PCI все одно може захоплюватися лише одним пристроєм. Головне – розпізнати, від якого пристрою прийшов сигнал.
Номери лініям PIRQ призначаються автоматично завдяки сумнозвісному механізму Plug&Play. Але є й ISA-пристрої, що підтримують Plug&Play. Вони також мають можливість автоматично отримати номер IRQ. Але їхня лінія переривання належить їм монопольно, і якщо такий номер отримає одна з ліній PIRQ, виникне нерозв'язний конфлікт.
Отже, ми з'ясували, що пристрої PCI мають бути позбавлені проблем із конфліктами IRQ. Якщо вони, звісно, ​​правильно працюють, а так буває не завжди. До того ж, драйвери повинні підтримувати механізм спільного використання переривань. Пристрої ISA не можуть ділитися лініями переривань і тому є провокаторами конфліктів. Отже, завдання усунення конфліктів зводиться до правильного розподілу номерів (джерело проблем - ISA-пристрою та "криві" драйвери) або до розведення різних фізичних ліній ("криві" PCI-контролери).
Розгляньмо, яким чином у системі відбувається розподіл номерів і як ми можемо вплинути на цей процес.

Карта переривань
Як я вже казав, більшість номерів IRQ вже зайняті стандартними пристроями, точніше призначені їх лініям переривань. Пройдемося по порядку:
0 – системний таймер (номер завжди зайнятий);
1 – клавіатура (номер завжди зайнятий);
2 - другий контролер переривань (завжди зайнятий);
3 - порт COM2 (може бути вимкнено, а номер - звільнено);
4 - порт COM1 (може бути вимкнено, а номер - звільнено);
5 - порт LPT2 (зазвичай номер вільний);
6 - контролер гнучких дисків (може бути вимкнено, а номер - звільнено);
7 – порт LPT1 (якщо не в режимі EPP або ECP, то номер вільний);
8 - годинник реального часу (завжди зайнятий);
9 – вільний;
10 - вільний;
11 - вільний;
12 - миша PS/2 (може бути вільний, якщо немає такої миші);
13 - співпроцесор (завжди зайнятий);
14 і 15 - контролер жорстких дисків (може бути вимкнено, а номер - звільнено).
У типовій системі вільні номери 5, 7, 9-11, тобто п'ять із п'ятнадцяти. Крім того, можна сміливо відключити COM2 та LPT1-порти, збільшивши кількість вільних номерів до семи. Вільні - не означає, що не зайняті, просто між ними можливе вільне перетасовування.
У будь-якій системі є три стандартні PCI-пристрої - ACPI-, USB-контролери та відеокарта, кожне з яких займе по одному номеру. Складний пристрій (наприклад, звукова карта) може вимагати кілька ліній – INT A, INT B тощо. для своїх компонентів, які між собою не конфліктуватимуть (як-не-як різні фізичні лінії), а ось з іншими пристроями - запросто.
Дізнатися, як наразі розподілені номери переривань, можна декількома способами. На початку завантаження комп'ютера з'являється текстова таблиця конфігурації. Відразу після неї йде перелік PCI-пристроїв із зазначенням призначеного ним номера IRQ (див. скріншот). Інший спосіб працює у Windows 9x. У панелі управління є іконка "Система", в аплеті - закладка "Пристрої". Вибираємо властивості пристрою "Комп'ютер", і там будуть перераховані всі пристрої із зазначенням їх IRQ (див. скріншот).
У Windows 2000 ми не маємо доступу до управління перериваннями, тому для перегляду списку IRQ потрібно скористатися стандартною інформаційною утилітою (Панель керування/Адміністрація/Керування комп'ютером/Відомості про систему/Ресурси апаратури).

Розподіл номерів IRQ засобами BIOS
У системі номери IRQ розподіляються між фізичними лініями двічі. Перший раз це робить системний BIOS під час початкового завантаження системи. Кожному Plug&Play-пристрою (всі PCI, сучасні ISA, інтегровані пристрої), а точніше його лінії переривання, призначається один номер із десяти можливих. Якщо номерів не вистачає, кілька ліній одержують один загальний. Якщо це лінії PIRQ, то нічого страшного – за наявності нормальних драйверів та підтримки з боку операційної системи (про це див. нижче) все працюватиме. А якщо один номер отримують кілька ISA-пристроїв або PCI- та ISA-пристроїв, то конфлікт просто неминучий, і тоді потрібно втручатися у процес розподілу.
Перш за все, потрібно відключити всі ISA-пристрою, що не використовуються (у системах без слотів ISA вони теж присутні) - порти COM1, COM2 і дисковод. Також можна вимкнути режими EPP та ECP порту LPT, тоді переривання IRQ7 стане доступним.
У BIOS Setup нам знадобиться розділ "PCI/PNP Configuration". Є два базові способи вплинути на розподіл номерів IRQ: заблокувати конкретний номер і безпосередньо призначити номер лінії PIRQ.
Перший спосіб доступний для всіх BIOS: знайдіть список пунктів "IRQ x used by:" (у нових BIOS ховається в підменю "IRQ Resources"). Тим перериванням, які мають бути призначені виключно ISA-пристроям, потрібно встановити "Legacy ISA". Таким чином, при роздачі номерів PCI-пристроям дані переривання будуть пропущені. Вчиняти так слід у тому випадку, якщо будь-який ISA-пристрій наполегливо стає на одне переривання з PCI-пристроєм, через що обидва не працюють. Тоді ми знаходимо номер цього IRQ та блокуємо його в BIOS Setup. PCI-пристрій переходить на новий номер IRQ, а ISA-пристрій залишається. Конфлікт вирішено.
Другий, зручніший спосіб керування номерами IRQ - пряме призначення. У тому ж підменю BIOS Setup можуть бути пункти виду "Slot X use IRQ" (інші назви: "PIRQx use IRQ", "PCI Slot x priority", "INT Pin x IRQ").
З їх допомогою кожній із чотирьох ліній PIRQ можна призначити конкретний номер. До речі, у нових AwardBIOS 6.00 можна спостерігати, які саме пристрої (включаючи вбудовані) використовують ту чи іншу лінію. Просто подивіться на праву частину екрана BIOS Setup: на фото показано, як я навів курсор на пункт "Slot 1/5 use IRQ no.", а з'явився праворуч напис "Display Contr.". Тобто, перша лінія PIRQ використовується відеокартою. Якщо я зараз поставлю певний номер замість "Auto", відеокарта буде переведена на це переривання.

Розподіл номерів IRQ засобами Windows
Вдруге номери переривань розподіляються операційною системою. Як показали проведені мною експерименти, Windows "98 починає втручатися у вироблені BIOS" дії тільки в крайніх випадках. За наявності нормального BIOS описані тут прийоми не знадобляться.
Слід зауважити, що для правильної роботи механізмів спільного використання IRQ та динамічного розподілу необхідно, щоб Windows розпізнала чіпсет материнської плати та завантажила IRQ Miniport. Чим свіжіша версія Windows, тим більше чіпсетів підтримує її власний мініпорт (PCIIMP.PCI). Однак завжди краще перестрахуватися та встановити найсвіжіші драйвери чіпсету.
У Windows 98 керування системою розподілу IRQ здійснюється за допомогою стандартного менеджера пристроїв. У списку системних пристроїв необхідно знайти шину PCI. У її властивостях є спеціальна закладка (див. скріншот). Якщо все налаштовано правильно, там буде згаданий мініпорт ("успішно завантажений"), а керування шиною PCI (Steering) буде увімкнено. Таким чином, Windows 98 має засоби для управління розподілом номерів переривань між фізичними лініями. Але оскільки і BIOS найчастіше з цим добре справляється, цей механізм не задіюється.
Але іноді він просто необхідний. Як я вже казав, PCI-пристрої не повинні конфліктувати у разі, якщо вони використовують одне й те саме логічне переривання. Інша справа - ISA-пристрою, до яких належать також і COM-і LPT-порти. Якщо пристрій не-Plug&Play, BIOS може його і не помітити, віддавши зайняте ним переривання пристрою PCI. Тоді потрібно переривання зарезервувати. Це робиться в диспетчері пристроїв Windows"98: вибираємо пристрій "Комп'ютер", викликаємо його властивості, перемикаємось на другу закладку. Далі все зрозуміло.
Крім резервування, можна задати номер переривання для пристрою. Для цього потрібно в його властивостях знайти закладку "Ресурси", вимкнути автоматичне налаштування та спробувати змінити призначений номер переривання.
На жаль, це працює далеко не завжди.
Windows 2000 – система особлива. Якщо у вас сучасний комп'ютер, то він, напевно, підтримує інтерфейс конфігурування ACPI. Windows 2000 у разі взагалі проігнорує дії BIOS і " повісить " все PCI-пристрою одне логічне переривання. У загальному випадку це буде добре працювати (коли немає ISA), але іноді трапляються проблеми. Щоб отримати можливість змінювати номери переривань, потрібно або змінити HAL-ядро, або інсталювати Windows 2000 з відключеним в BIOS ACPI. Заміна ядра здійснюється так: у диспетчері пристроїв вибирайте "Комп'ютер"/"Комп'ютер з ACPI", змінюйте драйвер на "Стандартний комп'ютер", перезавантажуйтесь. Якщо це не допоможе, доведеться повторно інсталювати Windows 2000 заново.
Сподіваюся, наведена вище інформація допоможе вам у боротьбі з глюками "заліза". І пам'ятайте: більшість проблем, що виникають, пов'язані з низьким рівнем комп'ютерної грамотності господаря комп'ютера. Тому потрібно завжди прагнути самоосвіти, тоді й проблем буде менше, а ті, що таки виникнуть - не здаватимуться нерозв'язними.

У цій статті я хотів би розповісти про те, що може ніколи не нагадувати про себе, а може й коштувати нервів після складання або апгрейду комп'ютера: зависання, мимовільні перезавантаження, завзяте небажання вантажитися, постійні "сині екрани смерті", неможливість виявлення пристроїв, невірна робота ... Список можна продовжувати ще довго. Дуже часто такі "глюки" відбуваються саме з вини переривань, а якщо Ви цікавитеся комп'ютерами, то обов'язково повинні знати, звідки і чому з'являються подібні проблеми і, мабуть, найголовніше, як з цим боротися.

Що це таке?

Переривання або IRQ (Interrupt Request) - це сигнали, які повідомляють процесору, що потрібно обробити запит, що надійшов від пристрою, а посилає процесору ці сигнали контролер цього самого пристрою, тобто за допомогою IRQ процесор реагує на різні події.

Так вже склалося, що при розробці якоїсь технології створюються деякі обмеження, не спеціально, звичайно, а через якусь особливість цього нововведення або просто недоліку. Так сталося і з перериваннями. Спочатку, коли IBM розробляла архітектуру IBM PC (аж у 1980-81 роках минулого тисячоліття), їх було закладено не так багато (8), потім, щоправда, додали ще стільки ж, забравши одне "старе" переривання під нових контролер, але я не сказав би, що й цього виявилося достатньо. А потім фірма IBM перестала бути єдиною, хто займався платформою PC, і щоб уникнути несумісності з іншими, ніхто більше переривань і не додав.

Які можуть бути проблеми?

Коли архітектуру IBM PC тільки створювали, переривань було створено небагато, всього вісім, як я вже писав, і віддавали їх на будь-яку "дурницю", на зразок портів COM, хоча виправдовує інженерів IBM те, що вибору особливого не було, його довелося шукати пізніше. Очевидно, ніхто не пророкував платформі таке майбутнє, тому для її родзинки, тобто можливості розширення, було залишено лише одне переривання, яке потім зайнято контролером другої "вісімки" IRQ. Правда, варто зауважити, що додаткові переривання могли (і можуть) бути вивільнені шляхом відключення різних ISA-пристроїв, що займають їх: портів, флоппі-дисковода. Так ось, помилки, або конфлікти, виникають, коли кілька пристроїв намагаються працювати на одному перериванні. Це дуже проблематично, тому що багато сучасних пристроїв, особливо звукові карти і всілякі мультимедійні комбайни несуть на собі відразу кілька пристроїв. Навіть найпростіші "звуковухи" мають на борту не менше чотирьох девайсів. Ось так виглядає карта переривань у сучасному комп'ютері:

IRQ Опис
0 Таймер
1 Клавіатура
2 Контролер IRQ 8-15
3 COM2
4 COM1
5 LPT2
6 Контролер FDD
7 LPT1
8 Real Time Clock
9 Вільний
10 Вільний
11 Вільний
12 PS/2 (для миші)
13 Співпроцесор
14 Контролер HDD
15 Контролер HDD

То що це виходить? На сучасний комп'ютер можна встановити лише три додаткові пристрої? Судячи з таблиці, так, але все так страшно. У вас, наприклад, є порт LPT2? Дуже сумніваюся. Отже, якщо порту немає, те й переривання вільне. Отже, теоретично можна звільнити такі переривання:

IRQ Опис
3 Порт цілком можна звільнити, відключивши його в BIOS. Я думаю, здебільшого він і так вільний.
4 Також можна вимкнути. Але він використовується значно частіше: миші, модеми, сканери.
5 Про це я вже писав. Майже завжди вільний.
6 Якщо збиратимете новий комп'ютер, тим більше додому, користь від старого доброго флопіка, значно менше, ніж навіть пару років тому. Дуже багато хто вже має дисководи CD-RW. Більше місця, надійніше, швидше, хоча, ховати FDD ще рано… Флоп можна відключити та звільнити IRQ.
7 Якщо у Вас є принтер на USB, можете ховати…
12 У більшості сучасних комп'ютерів миші саме такі. Можете поставити гризуна на COM, але заб'єте інше переривання, мишку можна купити і на USB, але це вже буде маніакальною боротьбою за IRQ:)
14 Слабко без гвинта? Хоча, теоретично, можна…
15 Навіть якщо у вас лише два IDE-пристрої, їх краще розвести на два різні канали. Працюватиме швидше. Але переривання можна звільнити.

Вже простіше. Але чи вистачає цього? Лізу у властивості системи (у мене Windows XP Professional). Пуск -> Усі програми -> Стандартні -> Службові -> Інформація про систему. Далі у вікні програми: Ресурси апаратури -> Переривання (IRQ). Ось що я там бачу:

IRQ Опис
0 Системний таймер
1 Стандартна (101/102 кнопки) або клавіатура PS/2 Microsoft Natural
3 Послідовний порт (COM2)
4 Послідовний порт (COM1)
5 Conexant SoftK56 Data Fax Voice Speakerphone
5
5 VIA Rev 5 USB універсальний хост-контролер
6 Стандартний контролер гнучких дисків
8 CMOS та годинник
9 Microsoft ACPI-сумісна система
10 Avance AC"97 Audio for VIA (R) Audio Controller
11 ATI RADEON VE DDR
12 PS/2-сумісна миша
13 Процесор числових даних
14 Первинний канал IDE
15 Вторинний канал IDE

Постає питання: що робить мій внутрішній модем, який, до речі, несе на собі кілька пристроїв, на одному перериванні (з-під відсутнього LPT2) з відразу двома контролерами USB? А ось що.

Вихід було знайдено

Настав початок дев'яностих. Системна шина (ISA – Industrial Standard Architecture), яка працювала на частоті процесора, вже вичерпала себе. А все тому, що вона могла нормально передавати дані лише на частоті 8 МГц, чого цілком вистачало для будь-яких PC/XT/AT/286/386. А такий просунутий процесор, як 486, працював на значно більшій частоті. Довелося цю шину уповільнювати, що негативно позначалося на частоті. У 1989 році була розроблена 32-бітна шина EISA - Extended Industrial Standard Architecture, яка працювала на частоті 10 МГц, але це була лише спроба зробити з воза велосипед, просто виправлення помилок ISA. Приблизно в цей час IBM створила MCA шину, яка не прижилася. Була створена і шина VESA (або VL-bus), але вона могла працювати тільки з Intel 486. І ось у 1991 році, як свій внутрішній проект, Intel приступила до розробки абсолютно нової локальної шини PCI - Personal Component Interconnect. Вона розроблялася можна сказати з нуля, а не була черговою латою до ISA, що дало їй великі переваги. Наприклад, вона працювала на фіксованій частоті в 33 МГц, плюс процесор мав власну швидкодіючу шину, що дозволяло йому звертатися до кешу і оперативної пам'яті на тій частоті, на якій йому треба, і не спиратися на технічні обмеження локальної шини. Нова шина PCI могла мати пристойне навантаження: до десяти слотів. Саме до PCI підключаються всі відеоадаптери, адже шина AGP це лише "прикручена" PCI з більшою тактовою частотою - 66 МГц. До неї підключається (через контролер) і системна шина ISA, яка присутня на всіх сучасних комп'ютерах у вигляді портів COM і LPT, гнучких дисків. Щоправда, необхідності в ній стає все менше: флопіки простоюють з вини CD-R/RW, COM/LPT - з вини USB... Так ця шина PCI, без якої не обходиться жодна сучасна материнська плата, стала вирішенням проблеми переривань.

Як відомо, комп'ютери можуть оперувати тільки з "1" та "0" або "є сигнал" і "немає сигналу". Якщо пристрій ISA виставить на лінію сигнал "1", то іншому пристрою на цій лінії свої одиниці як не виставляй, контролер на них не відреагує. У випадку з PCI контролер перевіряє джерело сигналу і потім обробляє його. Це дозволяє поміщати кілька пристроїв на одне переривання. Теоретично так, але майте на увазі, що не варто "вішати" старші пристрої і новіші на один канал IRQ. Існує також думка, що не варто нічого ставити на одне переривання зі звуковою картою, можуть з'являтися помилки. Це, звичайно, відбувається далеко не завжди, але краще збагнути щось надійніше.

Приїхали...

Гарна Ви людина, для свого компа нічого не шкода. Ось купили Ви круту відеокарту, принтер, сканер, професійний звук, посилили цю справу модемом, мережевою та ще й TV-тюнером. Ось "глюки" і пішли. Як не змінюй їх місцями в слотах, нічого не працює, хоч викинь. Що робити?

Налаштування переривань із BIOS

То за яким же принципом розподіляються переривання? При завантаженні системи BIOS роздає переривання так: лінії IRQ всіх пристроїв, які підтримують технологію Plug"n"Play, а це всі сучасні пристрої, отримують по одному вільному перериванню. Якщо переривання скінчилися, а неохоплені аксесуари ще є, BIOS роздає їх по другому колу, тому і виходить, що кілька пристроїв отримали одне переривання. Все буде чудово працювати, якщо одне переривання отримали два PCI пристрої, а якщо PCI+ISA або ISA+ISA? Все, конфлікт. Потрібно б це процес прибрати до рук.

Далі варто зауважити, що я використовую материнську плату Epox 8K3AP з Award BIOS 6.00PG. Найбільш зручний та логічний спосіб налаштування IRQ – призначити їх "ручками". Заходимо до PCI/PnP Configurations. Там є налаштування INT Pin n Assignment (це у мене, а у Вас може бути і це, і такі назви як Slot n Use IRQ (точно пам'ятаю, так було в Award BIOS v. 4.51 PG); PCI Slot n Priority або що- або подібне). Кожен пункт цього меню відповідає одній з чотирьох ліній IRQ, тому ви можете призначити кожній лінії своє переривання.

Існує ще один спосіб перепризначення IRQ. Заходьте в той же PCI/PnP Configurations, там є пункт IRQ resources (щоб туди зайти треба поставити значення параметра Resources controlled by рівним Manual), а саме він нам зараз і потрібен. Там будуть налаштування кожного можливого переривання. Я майже впевнений, що на всіх номерах стоятиме варіант, пов'язаний із шиною PCI, наприклад, PCI/ISA або PCI device, це залежить від вашої версії BIOS. Адже нам треба, щоб одне або кілька переривань залишалися пропущеними, тобто резервувалися для ISA пристроїв. Так ось, на тому перериванні, яке хочете залишити, просто виставляєте значення на зразок Legacy ISA. У більш сучасних комп'ютерах все стало значно простіше через відсутність слотів ISA, а це означає, що ви не можете додати свої ISA пристрої, а вже з системними, на зразок флопика або послідовних/паралельних портів, система сама розбереться непогано. У таких системах замість значення Legacy ISA з'являється значення Reserved, тобто можна залишити переривання вільним. Це може знадобитися в швидше теоретичному випадку, якщо до Вас потрапив пристрій, що не підтримує Plug"n"Play, тоді BIOS його просто не побачить.

У цьому ж меню є ще один корисний пункт. Інформація про встановлене обладнання зберігається в ESCD (Extended System Configuration Data). Ця інформація перевіряється щоразу перед зверненням до жорсткого диска для запуску операційної системи. Звичайно, при зміні конфігурації ESCD оновлюється, а коли відбувається оновлення, змінюються IRQ. Встановивши значення опції Reset Configuration Data в Enabled, Ви скинете ESCD під час наступного перезапуску.

В Award 6.00, а саме це BIOS встановлений на більшості материнських плат, є ще одна цікава "фіча". Якщо зайти в Power Management Setup "IRQ/Event Activity Detect" IRQs Activity Monitoring, то там можна налаштовувати від пристроїв на яких перериваннях комп'ютер буде прокидатися. Там же можна подивитися і поточний розподіл номерів IRQ, але не завжди можна покластися на це, а ось чому:

Налаштування переривань із Windows

Після BIOS у процес розподілу номерів IRQ сує свій ніс Windows. Для того щоб вона правильно все зробила, хоч втручається вінда в цей процес далеко не завжди, треба завжди мати найсвіжіші драйвери материнської плати. Це дуже важливо, особливо, якщо ви зібрали/купили сучасний комп'ютер, з материнською платою на новому чи відносно новому чіпсеті і поставили на все це якийсь Windows 98… Особисто я знаю багато таких людей, які вважають приблизно так: у мене на материнській платі ніяких наворотів немає, все там за стандартом, ніяких "дрів" не треба... Це зовсім неправильно. Для нормальної роботи системи, особливо коли переривання використовуються спільно, потрібно, щоб Windows розпізнала чіпсет та завантажила IRQ Miniport. Не забувайте поставити свіжі або хоча б "рідні" драйвери всіх пристроїв, це допоможе системі правильно працювати.

Якщо Ви використовуєте Windows 9x, то для того, щоб дізнатися, чи правильно розподілені переривання або виправити їх, зайдіть у властивості системи, для цього на вкладці Пристрої знайдіть сувій Системні пристрої, а там Шину PCI. Якщо IRQ Miniport завантажено, то все гаразд. У Win 9x ви можете, як і в BIOS резервувати переривання. У тому самому диспетчері пристроїв знайдіть комп'ютер і викличте його властивості. А ось для того, щоб встановити конкретне переривання певного пристрою, треба зайти до його властивостей і на вкладці Ресурси виставити потрібне переривання. На жаль, це можливо тільки у Win 9x, у Win XP я як не шукав, так і не знайшов, як скасувати автоматичне налаштування.

Якщо Ви використовуєте новіші Win 2000 або XP, що, на мій погляд, є більш виправданим вибором, то Ви можете зіткнутися з деякими проблемами. Ви знаєте, що таке ACPI (Advanced Configuration and Power Interface)? Це спеціальний конфігураційний інтерфейс. Він несе в собі масу корисностей, але Win 2K/XP може Вам здорово насолити. Особливо якщо в системі є ISA плати. Через нього вінда розподіляє всі PCI пристрої, які сидять в однойменних роз'ємах, на одне переривання (ось чому у мене USB з модемом на IRQ 5, а інше - на інших), добре, хоч вміст AGP слота та AC97-кодек туди не спихнули;) Через це, якщо не вимикати ACPI в BIOS перед встановленням IRQ не вдасться. Як подивитися їх розподіл, я вже писав вище. у розділі Power Management Setup) і змінювати драйвер пристрою Комп'ютер у диспетчері пристроїв з Комп'ютер з ACPI на Стандартний Комп'ютер. Іноді і цей прийом скасування ACPI не спрацьовує, тому доводиться вимикати в BIOS і переставляти Windows.



Подібні публікації