Бывало ли у вас так: вы включаете
сканер или подключаете внешний привод
компакт дисков, и в этот момент вся система
начинает заметно тормозить и вести себя
неадекватно: мышь по экрану двигается
рывками, звук начинает заикаться или
отключается... Бывают и более тяжелые случаи.
Если бывало, то эта статья - о вашем случае.
Если нет, то все равно прочтите эту статью -
если вдруг это случится, то вы будете знать,
что делать.
Эти проблемы, чаще всего, вызваны
конфликтом аппаратных прерываний
компьютера. Забавно, но довольно серьезная
часть проблем с компьютером после
установки нового железа как раз и связана с
этими самыми конфликтами, только о них
никто не говорит и вообще, эта тема мало
обсуждается. Понимание всего вопроса в
целом довольно обширная тема и каждый
случай конфликта часто отличается от
предыдущего, как по симптомам, так и по
методам решения. В этой статье мы
попытаемся объяснить сложившуюся ситуацию
для пользователей, которые уже не боятся
компьютеров, но еще не набрали достаточно
опыта для решения проблем с конфликтами
железа самостоятельно.
Ситуация с прерываниями начала
ухудшаться одновременно с разработкой
новых технологий и развитием всей
компьютерной области. Появились новые
стандарты портов ввода-вывода, которые
требуют собственного прерывания. Например,
порты USB или PS/2, которые являются на
настоящий момент стандартом де-факто для
всех компьютеров. Свободных прерываний
становилось всё меньше, а решение системных
конфликтов становилось всё более сложным.
Вся ситуация сильно изменилась с
появлением систем ACPI и IRQ Sharing. К сожалению,
эти системы никак нельзя описать в одно
предложение, поэтому мы рассмотрим их чуть
подробнее.
Система ACPI (Advanced Configuration and Power Interface,
Расширенный интерфейс конфигурирования и
управления питанием) была разработана в 1997
году тремя компаниями Microsoft, Intel и Toshiba. Если
ваш компьютер поддерживает ACPI в железе, то
при инсталляции операционных систем WindowsXP и
Windows 2000 поддержка ACPI автоматически
встраивается в ядро операционной системы.
Система ACPI занимается менеджментом
энергосберегающих функций компьютера,
таких, как автоматическое выключение блока
питания после успешного завершения работы
операционной системы, экономия заряда
батарей, перевод компьютера в режим сна и
пробуждение его от сна. Если ваш компьютер
не - ноутбук, то единственно полезная
функция от ACPI в плане управления питанием -
это автоматическое отключение блока
питания.
Вторая функция ACPI - это автоматическое
распределение системных ресурсов внутри
компьютера. Пока ACPI в действии, вы не можете
изменить никаких параметров, связанных с
прерываниями. Более того, система ACPI
поддерживает работу расширенного
контроллера прерываний APIC.
APIC (Advanced Programmable Interrupt Controller) -
усовершенствованный программируемый
контроллер прерываний. Для
многопроцессорных систем это необходимая
система, так как позволяет распределить меж
процессорами нагрузку по работе с
устройствами. То есть, этот контроллер
можно запрограммировать на обработку
некоторых линий прерываний первым
процессором, а некоторых - вторым. Для
однопроцессорных систем эта опция всего
лишь включает возможность использования в
операционных системах WindowsXP и Windows2000
виртуальных прерываний. Мы не будем
приводить алгоритмы работы виртуальных
прерываний. Это бессмысленно, их нельзя
менять, и они сильно зависят от реальных.
Если у вас однопроцессорная система, то
отключение этой функции весьма
рекомендовано.
IRQ Sharing - система, позволяющая двум
устройствам одновременно находиться на
одном прерывании. Физически получается так,
что на одной линии IRQ может висеть несколько
устройств, при этом менеджмент между ними
обеспечивается операционной системой. IRQ
Sharing - неоднозначная система, так как
использование её необходимо для нормальной
работы ПК, но при этом возможны самые
разнообразные проблемы и глюки. На самом
деле, использование и укрощение именно этой
системы и есть цель этой статьи.
Совокупность вышеописанных систем была
признана стандартом и включена в список
требований к компьютерному оборудованию -
PC2001. После реализации ACPI и IRQ Sharing на всех
материнских платах, начиная с материнских
плат для Pentium 1 (VX и TX чипсеты от Intel),
сложилась раскладка прерываний, которая
существует в каждом компьютере и по сей
день. Вот она:
Линия IRQ |
Устройство |
0 |
Системный таймер |
1 |
Клавиатура |
2 |
Cascad (Вывод на вторую микросхему
контроллера линий прерываний) |
8 |
Часы реального времени |
9 |
ACPI Controller |
10 |
Свободно |
11 |
USB |
12 |
PS2 |
13 |
Сопроцессор |
14 |
IDE Primary (Контроллер жестких
дисков) |
15 |
IDE Secondary (Контроллер жестких
дисков) |
3 |
Com Port 1 (Мышь) |
4 |
Com Port 2 (Модем) |
5 |
Свободно |
6 |
Floppy (Дисковод) |
7 |
LPT (Принтер) |
Как видно из таблицы, свободных
прерываний практически не осталось.
Свободными можно считать только IRQ 5 и 10, всё
остальное занято. По логике, как раз их-то и
надо использовать для видеокарты и
аудиоплаты. Но устройств, требующих
собственное прерывание и не описанных в
этой таблице, может быть куда больше. В
таблицу они не включены, так как являются
опциями, то есть могут быть в системе, а
могут и не быть. Например: сетевая карта,
контроллер RAID или SCSI, ТВ-тюнер, SATA, IEEE1394
(FireWire) и так далее. То есть, может сложиться
ситуация, когда на два свободных прерывания
будет восемь устройств, требующих
собственного прерывания. Есть три способа
решения этой проблемы. Каждый способ имеет
свои плюсы и минусы.
Первый способ - это полноценное
использование систем ACPI и IRQ Sharing. Если
системы ACPI, а соответственно и APIC, включены,
то операционная система считает, что у неё
256 прерываний, при этом реальных прерываний
как было 16, так и осталось. Оставшиеся 240
прерываний - это виртуальные прерывания,
которые являются клонами реальных. ACPI
автоматически распределяет прерывания и не
позволяет пользователю их менять. Если
устройство соглашается работать в режиме
кооперации с другим устройством, то есть
все шансы, что ACPI посадит их на одну
физическую линию. Если не контролировать
данную ситуацию, то на одном физическом
прерывании могут оказаться практически все
устройства, установленные в компьютере,
даже если есть свободные прерывания. Это
приведет к сильнейшему торможению всей
системы и серьезным сбоям в работе.
Решение: Плюс данного подхода в
отсутствии потребности вмешательства со
стороны пользователя. То есть, делать
ничего не надо. Просто воткнуть в
материнскую плату видеоадаптер, процессор,
память и так далее, а затем поставить
операционную систему, которая нормально
поддерживает 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 на
достаточно сложную машину этот способ
просто необходим. Также плюс такого подхода
- максимальное быстродействие всей системы
без проблем со стабильностью. Если есть
возможность, желательно идти именно этим
путем.
|