Страдания по IRQ

в отсутствии потребности вмешательства со стороны пользователя. То есть, делать ничего не надо. Просто воткнуть в материнскую плату видеоадаптер, процессор, память и так далее, а затем поставить операционную систему, которая нормально поддерживает ACPI. А это Windows XP или Windows 2000. Всё. Компьютер заработает. Именно в таком виде продаются почти все компьютеры, собранные в России. Подход прост: если работает и тормозит – то это не гарантийный случай, а проблема пользователя.

Второй способ заключается в отказе от использования ACPI и APIC, но с параллельным использованием IRQ Sharing. Отказ от систем ACPI и APIC означает , что операционная система знает о наличии у неё только 16 прерываний, а не 256, но система IRQ Sharing позволяет находиться на одном прерывании нескольким устройствам. При этом отслеживать картину прерываний уже можно, и выбирать соседей по своему усмотрению - тоже. То есть, если у вас есть сетевая плата и звуковая карта, и при этом нужны все порты ввода-вывода установленные в материнскую плату, то от IRQ Sharing уже никак не отделаться.

Решение:

Современные материнские платы обладают некоторыми особенностями, которые необходимо знать для корректного разведения линий прерываний по устройствам. Так, все встроенные в материнскую плату устройства чаще всего имеют жесткую привязку к слотам расширения PCI, а некоторые слоты жестко привязаны друг к другу. К примеру, у вас есть встроенная в материнскую плату звуковая карта, при этом она автоматически кооперируется с устройством в третьем слоте PCI. Если вы вставите сетевую плату в третий слот, то встроенная звуковая карта и сетевая плата будут висеть на одном прерывании, чтобы вы ни делали. Решить этот конфликт можно, переставив сетевую карту в другой слот. Или другой пример: пятый и первый слот PCI привязаны друг к другу, и установив два устройства в эти слоты, вы автоматически вешаете их на одну линию прерывания. Опять же, это лечится переустановкой одного из устройств в другой слот. К сожалению, современные материнские платы имеют столько встроенных устройств, что найти свободный слот PCI без запаралеленных устройств бывает невозможно. В этом случае всё зависит от устройства.

Все локальные устройства, находящиеся в компьютере можно разбить на четыре группы по степени зависимости от прерывания.

К первой группе можно отнести видеокарту и контроллеры жестких дисков. Эти устройства должны иметь выделенное прерывание и ни в коем случае не должны его делить с чем бы то ни было. То есть, на одном прерывании с видеокартой не должно находиться ни одного устройства, в противном случае страшные глюки и тормоза гарантированы. Ко второй группе можно отнести менее ресурсоемкие устройства, например аудиоплату, ТВ-тюнер, софтверный внутренний модем (WinModem) или сетевую карту. Эти устройства могут сосуществовать на одном прерывании с устройствами из групп, которые мы опишем ниже. Тем не менее, если есть возможность, устройства, относящиеся ко второй группе, тоже желательно разместить на отдельном прерывании, так как при серьезной нагрузке возможны различные сбои. Вторая группа - эта зона риска, так как абсолютно непонятно, какое устройство с каким может войти в конфликт при использовании уже задействованных ими прерываний. Стабильность в этом случае достигается методом проб и ошибок. Единственное, что можно сказать однозначно – на одном прерывании не стоит размещать два устройства второй группы, это приведет к сбоям в работе. Третья группа - это все порты ввода вывода, USB, COM-порты, возможно LPT, IEEE1394 (FireWire), аппаратные внутренние модемы и прочие устройства не сильно загружающие компьютер. Устройства из третьей группы могут присоединяться к устройствам из второй и к самим себе. То есть, на одном прерывании могут висеть все порты USB или же один порт USB висит вместе с аудиокартой или ТВ-тюнером. Также можно повесить контроллер FireWire вместе с USB или СOM портом. Ну а четвертая группа - это устройства, не требующие прерываний. Это довольно редкая группа, и тем не менее, она существует. Например, к этой группе относились ускорители трехмерной графики от 3dfx – Voodoo и Voodoo 2. Да, кстати, если вдруг вы видите что у вашей видеокарты или USB-портов прерывание отсутствует (буковки NA - то есть Not Available), то это не значит что у вас такая редкая, хорошая видеокарта. Это с большой долей вероятности значит, что у вашего компьютера проблемы, которые надо решать немедленно. У устройств, не требующих прерывания, в инструкции об этом написано большими буквами.

Надо понимать, что все вышеперечисленные устройства могут обладать уникальными свойствами в зависимости от производителя или прошивки. Все вышеописанные правила работают не всегда и не однозначно. У вас легко может оказаться ТВ-тюнер или сетевая карта, которая напрочь откажется работать с кем-либо в паре. Или наоборот, ваша звуковая карта может вдруг повести себя стабильно на одном прерывании вместе с ТВ-тюнером. Конфликтовать умеют даже устройства, относящиеся к четвертой группе. Чаще всего они начинают глючить, если поставить их в запаралеленный с AGP слот. При этом на понимание всех особенностей конкретно вашего железа может уйти значительное время.

Пожалуй, второй способ - самый часто используемый. При некотором понимании вопроса можно создать практически безглючный компьютер, в котором все устройства, установленные в него, будут функционировать. Минусом второго способа является потеря функций ACPI и наивысшая из всех способов сложность. Для рядового пользователя достижение нормальных результатов может занять долгое время и вызовет сильный перегруз мозгов. Плюс к этому, компьютер больше не будет сам выключаться (его придется выключать кнопкой «Power») и не будет засыпать. Что же касается режима Hybernate, то он полностью сохранит свою функциональность.

Третий способ - самый правильный, но требует жертв.

Суть способа в полном отказе от систем ACPI и IRQ Sharing. А устройства, которые лезут на одну линию IRQ нужно просто отключать. Must be only one!, как говорил товарищ из фильма «Горец».

Решение:

Для начала нужно отключить все порты, которые не используются. Не пользуетесь LPT – отключить. Не пользуетесь вторым COM-портом и дополнительными USB-каналами – та же судьба, отключить. Каждое устройство должно иметь отдельное прерывание и ни с кем не пересекаться. Это вопрос приоритетов и потребностей, потому что при использовании данного способа половина компьютера оказывается «в отключке», зато всё остальное работает как часы. Плюс этого способа в возможности использования устаревших операционных систем и сложных программ. Например, для установки WindowsNT 4.0 на достаточно сложную машину этот способ просто необходим. Также плюс такого подхода - максимальное быстродействие всей системы без проблем со стабильностью. Если есть возможность, желательно идти именно этим путем.

Как понять, есть ли конфликты в вашем компьютере, и что делать

Самый простой способ разобраться в конфликтах - это нажать кнопку PAUSEBREAK в момент начальной загрузки компьютера, а точнее, на втором экране BIOS. Для этого нужно обладать некоторой реакцией, так как второй экран загрузки пролетает очень быстро, и его еще нужно поймать. Также загрузку операционной системы можно остановить, поставив в BIOS приоритет загрузки с флоппика и засунув в оный какую-нибудь странную дискету. Во втором экране BIOS есть вся системная информация о железе - тактовая частота процессора, количество памяти и модели установленных жестких дисков, но самое интересное находится внизу экрана. Там перечислены установленные устройства, а напротив них стоит цифра прерывания. Показываемые на этом этапе устройства сильно зависят от модели материнской платы, а точнее от реализации BIOS.

Бывает, что список отображаемых устройств бывает полным и включает в себя контроллеры жестких дисков и все устройства, находящиеся на плате, вплоть до COM-портов. Бывает и наоборот: информации довольно мало, тогда видно только установленные устройства (как на скриншоте). А бывает, что второй экран BIOS вообще не содержит информации о прерываниях. В таком случае стоит воспользоваться другими программами, которые способны отображать физическое распределение прерываний.

Например, можно использовать стандартный диспетчер устройств, переключив его вид на «ресурсы по подключению» и раскрыв раздел «запрос на прерывания (IRQ)», или воспользоваться сторонними программами типа SiSoft Sandra.

Единственный минус их использования состоит в том, что они видят номера прерываний через призму операционной системы. Если используется система ACPI и APIC, то получить корректную информацию об аппаратных прерываниях будет весьма непросто, так как номеров будет не 16, а 256. Нас интересует ситуация, когда цифры не повторяются. Если одна и та же цифра стоит напротив USB Cntrlr, Display Cntrlr и Multimedia Device (аудиоплата или TB-тюнер), то дело совсем плохо. Например, данное окно говорит о следующем: В компьютере используется система ACPI, APIC и IRQ Sharing, так как прерываний больше 15, и они пересекаются. Есть конфликт меж сетевой картой и звуковой платой, которые находятся на 18 прерывании. Также есть совсем несущественный конфликт меж всеми ветками USB на 21 прерывании, но это скорее норма. В целом - система стабильна, но для обеспечения большей стабильности требуется отключить ACPI и развести на разные прерывания сетевую и звуковую плату.

Как решать и что делать

Нужно понимать, что действия по разрешению конфликтов могут привести к полному падению операционной системы и потере данных. Сделайте резервные копии ваших документов, запишите все пароли и сетевые настройки, и только после этого предпринимайте действия. Лучше всего экспериментировать на свежеустановленной операционной системе и иметь возможность переустановить её после проведения всех действий, если что-то сложится некорректно. Само собой, автор и редакция не несут никакой ответственности за результаты ваших экспериментов.

Шаг первый: изучаем BIOS

Для начала нужно посмотреть на опции в BIOS вашего компьютера. И ничего там не трогать, в противном случае шансы на загрузку уже установленной операционной системы сильно падают. Вне зависимости от производителя BIOS и материнской платы, необходимые для работы опции могут присутствовать, а могут и отсутствовать. Стандарта для этих опций не существует, поэтому они могут иметь разные названия и находится в разных разделах BIOS. Но, применяя дедуктивный метод Шерлока Холмса, их все же можно найти. Для примера мы приведем названия этих опций в Award BIOS материнской платы GigaByte. Самые важные для нас опции находятся в разделе PnPPCI Configuration и выглядят как номера слотов и привязанные к ним номера прерываний, которые можно менять.

С помощью этих опций можно добиться правильного распределения приоритетов линий прерываний к устройствам:

• PCI 1 IRQ Assigment : Auto (Auto, 3,4,5,7,9,10,11,14,15)

• PCI 2 IRQ Assigment : Auto (Auto, 3,4,5,7,9,10,11,14,15)

• PCI 3 IRQ Assigment : Auto (Auto, 3,4,5,7,9,10,11,14,15)

• PCI 4 IRQ Assigment : Auto (Auto, 3,4,5,7,9,10,11,14,15)

То есть, можно руками менять прерывания для слотов и привязанных к ним устройств. Если все опции выставлены в Auto, то распределением прерываний занимается автомат с алгоритмом, очень схожим с алгоритмом системы ACPI. Иногда бывает указание прерываний не цифрами, а буквами – A,B,C,D. Так же, как в случае с цифрами, буквенные прерывания позволяют собой управлять, при этом наивысший приоритет – у буквы А.

Если же этих опций нет, то приоритеты менять нельзя и единственный способ воздействия на раскладку прерываний - это отключение устройств и перестановка плат расширений по слотам.

• PnP OS Installed : Yes (No)

Эта опция сообщает BIOS, что распределением прерываний занимается сама операционная система. Иногда после изменения значения на NO открывается возможность контроля приоритетов по слотам.

• ACPI Function : Enable (Disable)

Понятное дело, эта опция включает и отключает поддержку ACPI в BIOS. Если отключить эту опцию перед инсталляцией операционной системы, то, возможно, ядро ACPI и не будет инсталлировано (сильно зависит от версии и типа BIOS).

• Interrupt Controller : APIC (PIC)

Как уже описывалось ранее, эта функция имеет разное значение на однопроцессорным и многопроцессорных системах. На однопроцессорных системах она разрешает операционной системе использование виртуальных прерываний. Если опцию поменять на PIC при инсталлированной операционной системе с ACPI ядром, то операционная система больше не загрузится, до исправления этого значение обратно на APIC. Если выставить опцию в PIC до инсталляции операционной системы, то ACPI-ядро не будет использовать виртуальные прерывания и нбудет слушать предписания BIOS при сохранении энергосберегающих функций. Полезная вещь, так как при присутствии этой опции и возможности реинсталлировать операционную систему есть возможность сохранить функции ACPI при отключении проблемной части ACPI с самостоятельным разведением прерываний. Минус - крайне редко встречается на однопроцессорных системах.

Также полезны опции по отключению устройств :

• Midi Port Adress – можно отключить Миди порт

• Onboard Parallel Port – можно отключить LPT порт

• Onboard Audio – можно отключить встроенную звуковую плату

• Onboard LAN Control – можно отключить встроенный сетевой адаптер

• USB Host Controller – можно отключить USB порты

• Onboard Serial ATA – можно отключить Serial ATA

• Onboard RAID – можно отключить RAID-контроллер.

Если указанные выше устройства не используются, то выставление Disabled отключит их и освободит используемые ими ресурсы.

Шаг второй – Карта прерываний

Ищем документацию от материнской платы. Если повезет, то в ней вы найдете карту прерываний для вашей материнской платы, которая выглядит следующим образом:

A B C D E F G
PCI Slot 1 Shared
PCI Slot 2 Shared
PCI Slot 3 Shared
PCI Slot 4 Shared
PCI Slot 5 Shared
PCI Slot 6 Shared