Какой irq у сетевой карты. Системные прерывания грузят процессор: что делать

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

Что это такое?

Прерывания или 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 слота и AC"97-кодек туда не спихнули;). Из-за этого, если не выключать ACPI в BIOS перед установкой Windows, переназначить IRQ не удастся. Как посмотреть их распределение, я уже писал выше. А чтобы изменить ситуацию, придется выключать ACPI в BIOS (пункт ACPI Functions в разделе Power Management Setup) и изменять драйвер устройства Компьютер в диспетчере устройств с Компьютер с ACPI на Стандартный Компьютер. Хотя, лично мне бы не особо хотелось терять такие функции, напрямую связанные с ACPI, как автоматическое выключение компьютера или включение с клавиатуры. Кстати говоря, иногда и этот прием отмены ACPI не срабатывает, потому приходится выключать в BIOS и переставлять Windows.

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

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

Локальная шина PCI была спроектирована с учетом совместного использования прерываний. Каждое устройство PCI должно корректно работать на одной линии прерывания с другими PCI-устройствами. Это сделано следующим образом: факт наличия сигнала на линии прерывания определяется не по фронту, т.е. изменению уровня напряжения, а по самому факту наличия определенного напряжения. Изменять напряжение в линии может сразу несколько устройств, становясь как бы в очередь на обслуживание.

Таким образом, совместное использование одного IRQ несколькими PCI-устройствами не является конфликтом по определению (рис.). Однако иногда проблемы все-таки возникают. Во-первых, не все устройства PCI корректно работают на одной линии прерывания с другими. Во-вторых, иногда драйверы имеют ошибки, из-за которых они не могут правильно определять источник сигнала, мешая другим драйверам. В-третьих, далеко не все устройства работают на шине PCI; например, ISA-устройства, к которым относятся, например, контроллеры COM/LPT-портов, делить прерывания с другими не умеют.

Рис. Win2000 Device Manager IRQ Map - IO PIC Intel 440BX Chipset

Рис. Win2000 IRQ MAP - IO APIC - Via KT266a Chipset

В результате возможны ситуации, когда компьютер начинает часто зависать, отказывается выполнять какие-либо функции, а то и просто вываливается в так называемый «синий экран смерти».

Apic (Advanced Programmable Interrupt Controller, Улучшенный программируемый контроллер прерываний)

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

APIC – это контроллер прерываний (interrupt), позволяющий использовать 24 аппаратных прерывания вместо 16. Ограничение в 16 аппаратных прерываний, не менявшееся с 1982 года, сдерживало установку в персональный компьютер дополнительных устройств. В конце 2001 года появились первые материнские платы с APIC.

Рис. Система прерываний в многопроцессорной среде.

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

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

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

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

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

Сигнал IRQ доставляется локальным APIC, перечисленным в соответствующей записи таблицы перенаправления прерываний. Прерывание доставляется одному конкретному CPU, множеству CPU или всем CPU.

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

Сигнал IRQ доставляется локальному APIC процессора, который выполняет процесс с наименьшим приоритетом.

Каждый локальный APIC имеет программируемый регистр приоритета задания, который используется для вычисления приоритета текущего процесса. Intel предполагает, что этот регистр будет модифицироваться ядром операционной системы при каждом переключении процесса.

Кроме распределения прерываний по процессорам мульти-APIC система позволяет CPU генерировать межпроцессорные прерывания. Когда CPU желает послать прерывание другому CPU, он сохраняет вектор прерывания и идентификатор целевого local APIC в коммандном регистре прерываний (Interrupt Command Register (ICR)) своего локального APIC. Тогда сообщение посылается через шину APIC к целевому local APIC, который выпускает соответствующее прерывание своему CPU.

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

1. Как стандартный 8259A PIC, связанный с CPU. Local APIC отключен и две линии LINT0 и LINT1 сконфигурированы как INTR и NMI выводы.

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

Процессор перегружен? Виноваты системные прерывания.

Виной тому, что процессор перегружен практически в течение всего сеанса, могут быть так называемые системные прерывания, а это, в свою очередь, означает, что проблема кроется в области установленного на компьютере оборудования или драйверах для этих устройств. Но предупреждаю сразу: даже объёма всей этой статьи не хватит, чтобы вычленить все причины (и тем более варианты их решений) почему системные прерывания просто убивают 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) связан с интегрированным последовательным портом COM2, существующим в современных системных платах, и внутренним модемом (имеется в виду полноценный внутренний PC-модем, а не программный модем, который также называется WinModem). Дело в том, что в полноценном внутреннем модеме уже есть поддержка некоторого порта; по умолчанию этот порт назначается в COM2, при этом в системе также обычно включен второй последовательный порт. Таким образом, в системе оказывается два идентичных порта, использующих одни и те же ресурсы (прерывания и адреса порта ввода-вывода).

Решить эту проблему довольно просто: следует войти в BIOS Setup системы и отключить встроенный порт COM2. Кроме того, можно подумать об отключении порта COM1, который также используется крайне редко. Отключение неиспользуемых портов СОМх - один из лучших способов высвобождения прерываний (IRQ) для других устройств.

Еще один распространенный конфликт также связан с последовательными портами. В стандартной таблице распределения прерываний вы, наверное, заметили, что IRQ3 назначается порту COM2, а IRQ4 - порту COM1. Проблема возникает тогда, когда в систему добавляются дополнительные порты COM3 и/или COM4 и им не назначаются вручную свободные прерывания (по умолчанию они используют все те же IRQ3 и IRQ4).

Дополнительные сложности вносит то, что некоторые платы портов не допускают выбора прерываний, отличных от IRQ3 и IRQ4. В результате назначение IRQ3 порту COM4 и IRQ4 порту COM3 приводит к конфликту с портами COM1 и COM2, также использующими эти прерывания: два порта не могут одновременно использовать один и тот же канал управления прерываниями. При работе в DOS это допускалось, поскольку в ней одновременно могла выполняться только одна задача, но в Windows и OS/2 это совершенно невозможно. Для того чтобы в компьютере можно было применять более двух параллельных портов COM, необходима многопортовая плата, которая, помимо прерываний с номерами 3 и 4, позволяет использовать дополнительные прерывания. Совместное использование прерываний в принципе допустимо для устройств, которые в обычных условиях не работают одновременно (или постоянно). Порты не попадают в эту категорию устройств. Совместно можно применять прерывание для сканера и модема, однако и в этом случае, если они будут использоваться одновременно, возникнет конфликт. К счастью, большинство устройств, которые ранее использовали порты (например, мыши, принтеры этикеток и внешние модемы), теперь подключаются к портам USB , так что проблем с необходимостью поддержки множества портов у современных пользователей компьютеров возникать не должно.

Если все же необходимо использовать несколько последовательных портов, лучшим решением станет покупка многопортовой платы, которая либо предоставляет возможность установить неконфликтующие прерывания, либо содержит собственный процессор, позволяющий распределять одно системное прерывание между несколькими портами. Некоторые старые многопортовые карты имели интерфейс ISA, но сегодня их вытеснили карты PCI , которые к тому же имеют преимущества в быстродействии.

Если некоторое устройство, упомянутое в таблице, отсутствует (например, встроенный порт мыши (IRQ12) или второй параллельный порт (IRQ5)), их прерывания можно считать доступными. К примеру, второй параллельный порт можно встретить крайне редко, так что отведенное для него прерывание IRQ5 чаще всего используется для платы звукового адаптера. Аналогично прерывание IRQ15 используется для вторичного контроллера IDE . Если в системе к вторичному каналу IDE не подключены дисковые устройства, можно отключить этот контроллер в BIOS, тем самым освободив еще одно прерывание для других устройств.

Следует отметить, что проще всего проверить настройки прерыаний в диспетчере устройств Windows. В системе Windows 95b существует программа HWDIAG, а в Windows 98 и более поздних версиях - консоль Сведения о системе. Эти утилиты позволяют получить детальный отчет об использовании ресурсов в системе, а также об установленных драйверах устройств и записей реестра Windows для каждого из устройств. В системах Windows XP и Vista информацию о системе предоставляет программа Msinfo32.

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

  1. Отключите все неиспользуемые порты в системной BIOS. Например, если вместо последовательного и параллельного портов используются порты USB, отключите их. В результате можно высвободить до трех прерываний.
  2. Укажите прерывание IRQ, освобожденное в п. 1, в списке доступных прерываний для устройств PCI/PnP. В зависимости от версии BIOS соответствующие параметры доступны в разделе PnP/PCI Resource Exclusion или PnP/PCI Configuration.
  3. Активизируйте параметр Reset Configuration Data, чтобы очистить таблицы маршрутизации IRQ в памяти CMOS.
  4. Сохраните изменения и завершите работу с программой настройки BIOS.

Бывало ли у вас так: вы включаете сканер или подключаете внешний привод компакт дисков, и в этот момент вся система начинает заметно тормозить и вести себя неадекватно: мышь по экрану двигается рывками, звук начинает заикаться или отключается... Бывают и более тяжелые случаи. Например, после установки новой звуковой платы, при любых попытках вывести звук, даже при старте Windows, компьютер зависает насмерть. Если бывало, то эта статья – о вашем случае. Если нет, то все равно прочтите эту статью – если вдруг это случится, то вы будете знать, что делать.

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

Немного истории

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

Давным-давно, в далекой Америке, был разработан процессор x86, который является прародителем всех процессоров, используемых в персональных компьютерах стандарта IBM PC. То есть все Pentium и Athlon имеют в своей основе старый, добрый процессор x86. Архитектура современных процессоров уже очень сильно отличается от первого x86, тем не менее, некоторые моменты сохранились с тех давних времен, когда x86 процессор находился в начале своего пути, а именно с середины восьмидесятых годов прошлого века. Одним из таких моментов является ограничение количества линий аппаратных прерываний для центрального процессора.

Аппаратное прерывание – это реакция процессора на события, происходящие асинхронно по отношению к исполняемому программному коду. То есть прерывание – это момент когда центральный процессор по запросу от вызвавшего прерывание устройства откладывает выполняемую задачу и переключается на задачу, необходимую для работы устройства. После того, как задача для устройства выполнена, процессор вновь переключается на выполнение основной программы. Звуковую карту прерывание заставляет проиграть следующую микросекунду звука, а видеокарту прерывание заставляет сделать следующий кадр. С помощью прерываний центральный процессор заставляет жить весь компьютер. Линия аппаратного прерывания – это, утрированно говоря, физический провод, соединяющий микросхему контроллера прерываний и устройство. Количество линий аппаратных прерываний центрального процессора ограничено цифрой 16, то есть и устройств, использующих линии аппаратного прерывания, не может быть больше 16. Для организации линий аппаратных прерываний внутри компьютера используется специализированная микросхема - контроллер прерываний (PIC, Programmable Interupt Controller). Эта микросхема совместима по системе программных команд с микросхемой 8259A, которая имела всего 8 входов и использовалась в компьютерах класса IBM PC XT (8086 процессор). С выходом IBM PC AT (процессор 80286) внутренняя структура организации прерываний изменилась. Прерываний стало вдвое больше за счет использования еще одной микросхемы 8259A, которую подключили ко второй линии первой микросхемы. Такая архитектура стандартного контроллера прерываний сохранилась и по сей день, причем никаких изменений на ближайшее будущее не намечается. Даже с приходом на рынок 64-битных x86 совместимых процессоров ситуация не изменится. Линии аппаратных прерываний обозначили значением – IRQ (Interupt ReQuest). Как уже упоминалось, физически у компьютера имеется 16 линий аппаратных прерываний, но эта цифра сильно уменьшается за счет прерываний? уже использованных встроенными устройствами. Некоторые прерывания имеют статус системных, поэтому их использование и переназначение их номера по желанию пользователя невозможно. В таблице они выделены буквой S перед номером. По умолчанию заняты следующие прерывания:

Системность

Устройство

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

Клавиатура

Часы реального времени

Свободно

Свободно

Свободно

Свободно

Сопроцессор

Com Port 1 (Мышь)

Com Port 2 (Модем)

Свободно

Floppy (Дисковод)

LPT (Принтер)

Такая раскладка прерываний очень долго сохранялась на многих бытовых компьютерах. Почти все компьютеры на базе процессоров 386, 486 и Pentium имеют такой список использованных прерываний. При таком раскладе свободных прерываний в компьютере оказывается всего пять (5, 9, 10, 11, 12), но этого количества для большинства случаев было вполне достаточно. Устройств, требующих прерывание и устанавливаемых в компьютер в виде плат расширения, редко было больше трех. Стандартный набор того времени выглядел так: видеокарта, звуковая плата и сетевая карта. При этом было важно, чтобы одно прерывание ни в коем случае не использовалось двумя устройствами одновременно, так как это повлечет конфликт системных ресурсов, и оба устройства, находящихся на одном прерывании, работать не будут. Задачей сборщика компьютера на тот момент было разведение всех устройств по прерываниям таким образом, чтобы ни одно устройство не пересекалось с другим.

Наверное, самое время объяснить, что такое конфликт прерываний. Если два устройства находятся на одной линии прерываний, то драйвер может их спутать и переслать исполняемый кусок программы не той «железке», при этом заставляя ее исполнить этот кусок кода. Например, сетевая плата и звуковая карта находятся на 10 прерывании. Сетевая карта получает пакет из локальной сети с запросом на получение файла и отправляет запрос на прерывание центральному процессору.

Процессор отрабатывает прерывание, останавливает исполняемую задачу и передает управление драйверу сетевой карты, для отработки необходимых для приемки файла действий. Драйвер начинает работу с устройством, от которого пришло прерывание. Вот только работать он начинает не с сетевой платой, а со звуковой картой, находящейся на той же линии, передавая ей команды для приемки файла. Звуковая карта исполняет принятые команды, и полностью завешивает компьютер с BSOD (Blue Screen Of Death).

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

Приоритет прерываний

Исторически сложившаяся архитектура наложила очень сильный отпечаток на приоритеты линий прерываний. Подключенная вторая микросхема контроллера ко второй линии первой микросхемы вклинивается в приоритеты. Поэтому линии второй микросхемы имеют более высокий приоритет, чем линии первой. При этом, обе микросхемы выглядят для пользователя единым модулем контроллера прерываний – PIC (Program Interrupt Controller). Более того, уже давно две микросхемы для этих целей не используется, всё это встроено в северный мост чипсета, но раскладка приоритетов прерываний сохранилась. Чем больше ресурсов от компьютера требует устройство, тем более высокий приоритет должен быть у линии IRQ присвоенной этому устройству. То есть, для видеокарты желательно отдавать девятое или десятое прерывание, если оно свободно. Для звуковой карты тоже желательно найти прерывание, находящееся на втором контроллере. Подробнее об этом вопросе мы поговорим чуть ниже.

Но время не стоит на месте, и ситуация с прерываниями начала ухудшаться одновременно с разработкой новых технологий и развитием всей компьютерной области. Появились новые стандарты портов ввода-вывода, которые требуют собственного прерывания. Например, порты 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), сложилась раскладка прерываний, которая существует в каждом компьютере и по сей день. Вот она:

Системность

Устройство

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

Клавиатура

Cascad (Вывод на вторую микросхему контроллера линий прерываний)

Часы реального времени

Свободно

Сопроцессор

IDE Primary (Контроллер жестких дисков)

IDE Secondary (Контроллер жестких дисков)

Com Port 1 (Мышь)

Com Port 2 (Модем)

Свободно

Floppy (Дисковод)

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 на достаточно сложную машину этот способ просто необходим. Также плюс такого подхода - максимальное быстродействие всей системы без проблем со стабильностью. Если есть возможность, желательно идти именно этим путем.

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

Самый простой способ разобраться в конфликтах - это нажать кнопку 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 отключит их и освободит используемые ими ресурсы.

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

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

Буквами вверху обозначены линии прерываний IRQ, левый столбец - это список устройств и слотов, установленных на вашей материнской плате. Указание shared означает, что устройство может работать в режиме кооперации с другими устройствами, used означает невозможность режима кооперации. Обратите внимание: линий прерываний целых 7, а раньше мы говорили, что полностью свободных линий всего пять. Это означает, что буквенные индексы тоже могут кооперироваться при нехватке ресурсов. После расшифровки информации в этой таблице получается вот что. Если у вас есть графический акселератор, установленный в AGP слот, то установка устройств во второй и шестой PCI-слоты строго запрещена, так как они используют идентичную физическую линию IRQ. Одновременная установка плат расширения в 1 и 5 слот также запрещена. У вас есть выбор: 1 или 5 слот, в противном случае оба устройства будут висеть на одном прерывании. Установка устройства в третий слот вызовет конфликт прерываний с портом 1394 и контроллером SerialATA. Если эти порты не используются, то их отключение освободит третий слот. К тому же, если вы используете SerialATA, который относится к устройствам первой группы, то просто необходимо отключить порт 1394 и не пользоваться третьим слотом. Все USB контроллеры висят на одном прерывании и вы с этим ничего не сделаете, впрочем, и не надо. Встроенная сетевая карта разделяет четвертый слот. Если используется, то четвертый слот тоже не занимать. Отключив сетевую карту, можно использовать четвертый слот по своему усмотрению. Вывод прост: в компьютер безболезненно можно установить одну плату расширения в 1 или 5 слот и видеоакселератор в слот AGP. Если нужны еще слоты, то нужно что-то отключать.

Более того, прерываний на все эти устройства всё равно не хватит, поэтому нужно освободить неиспользуемые линии IRQ. Радует только одно: типов установленных устройств не так много. Редко бывают нужны в компьютере две сетевые платы или две звуковые карты. Если используется SerialATA, то чаще всего не нужны оба канала контроллера UATA, занимающий 14 и 15 прерывание. Одно из них можно освободить, учитывая, что второе занимает CD-ROM. И так далее.

Если вы обратили внимание, не все буквенные индексы в таблице привязаны к слотам расширения PCI. Например, линия F, на которой висит USB, не привязана к слотам, в то время как из BIOS контролируются только номера прерываний для слотов. Линией F управляет внутренняя автоматика BIOS. А эта автоматика будет кооперировать эту линию IRQ с чем попало. Чтобы разрешить конфликты с этой веткой? вам потребуются шаманский бубен, кроличья лапка и большая подкова. На самом деле вам придется менять конфигурацию раскладок прерываний для слотов до тех пор, пока линия F не встанет на устраивающее вас значение. Каждым изменением вы заставляете автоматику пересчитать всю конфигурацию, и каждый раз автоматика будет назначать новое значение для линии F. Если таких бесконтрольных линий больше чем одна, задача усложняется. В нашем случае бесконтрольной осталась линия G. Но терпение и труд, как известно, всё перетрут.

Мы описали карту прерываний от материнской платы Asustek A7V8X, конкретные же карты прерываний у каждой материнской платы свои. Но основные принципы вычисления зависимостей по этому описанию можно понять.

Если же у вас нет карты прерываний в документации, то это просто осложняет задачу. Вам придется составить эту карту самостоятельно. Для опытных людей, занимающихся железом, составить эту карту в голове, ничего не записывая, не очень сложно. Для новичков может потребоваться бумага и ручка. Нарисуйте таблицу, схожую с приведенной выше. Слева перечислите устройства, сверху - линии IRQ. Зайдите в BIOS, выставите для каждого слота разное прерывание, а затем устанавливайте плату расширения в слоты PCI по порядку и смотрите номер прерывания во втором экране BIOS. Номер IRQ у переставляемой вами платы будет меняться в зависимости от слота. Также изменятся номера прерываний у скооперированных со слотами PCI встроенных в материнскую плату устройств, причем изменятся в соответствии с выставленными вами номерами IRQ для слотов PCI в BIOS. Если же устройство обладает собственной линией, как, например линия F для USB, то оно будет менять значение совсем нелогично, например перескакивая номером IRQ с одного слота на другой.

Шаг третий – Изменения в операционной системе

Самым первым изменением, с которого мы начнем настройку системы, будет замена ядра операционной системы для отключения функций ACPI. Как уже упоминалось ранее, после этого компьютер потеряет все энергосберегающие функции и перестанет сам выключаться после завершения работы операционной системы. Для этого нужно зайти в контрольную панель, выбрать иконку «Система», затем перейти в закладку «Оборудование» и нажать на «Диспетчер устройств». Затем открыть раздел «Компьютер» и двойным кликом нажать на «Компьютер с ACPI». Выбрать закладку «Драйвер» и нажать на кнопку «Обновить».

Выбрать «установку из указанного места», а затем отказаться от автоматического поиска драйвера и выбрать установку драйвера вручную. В появившемся окне убрать галочку «только совместимые устройства» и выбрать драйвер «Стандартный компьютер».

После нажатия на кнопку «Далее» компьютер скопирует необходимые файлы и уйдет на перезагрузку. После перезагрузки компьютер начнет находить ВСЕ устройства заново, включая системные устройства, но будет находить драйверы для них в автоматическом режиме. Некоторые устройства не проходят автоматическую установку, но для них достаточно выбрать автоматический поиск драйверов. После этого компьютер еще раз перезагрузится и после этого заработает в нормальном режиме. Всё, система ACPI отключена. Для того, чтобы снова включить ACPI, нужно повторить все вышеописанные действия, только выбрать «Компьютер с поддержкой ACPI».

Теперь вся системная информация касательно линий прерываний внутри операционной системы соответствует действительности. Номера прерываний соответствуют реальным. Это означает, что для мониторинга прерываний теперь можно использовать различные утилиты, показывающие прерывания в среде Windows.

Так выглядит раскладка прерываний после отключения ACPI и с сохранением IRQ Sharing. Кстати сказать, на скриншоте приведена раскладка прерываний с разрешенными основными конфликтами. Только RAID массив конфликтует с SMBus, но этот конфликт разрешить нет возможности, так как встроенный RAID-контроллер связан с SMBus картой прерываний. Приоритеты линий прерываний соответствуют типу устройств. В этом компьютере конфликты решены вторым способом, никаких доработок и изменений не требуется.

Шаг четвертый – Изменения в BIOS

Фактически, этот шаг является обобщением действий, описанных выше, только если выше были описания, то сейчас нужно предпринимать реальный действия, поэтому прошу прощения за некоторые повторения. Первым делом меняем опции в BIOS, если они конечно присутствуют:
PnP OS Installed: NO
ACPI Function: Disabled
Interrupt Controller: PIC

Далее отключаем ненужные порты и устройства, использовать которые вы в ближайшее время не собираетесь, за счет этого освобождаете дополнительные ветви прерываний. Из получившейся картины с помощью карты прерываний вычисляем свободные слоты PCI. Если таковых нет, то ищем слоты PCI, которые делят прерывание с устройствами из третьей группы (порты ввода-вывода). Переставляем платы расширения именно в эти слоты, соблюдая правила описанные во втором способе (ссылка). Далее снова заходим в BIOS и с помощью опций назначения номера IRQ определенному слоту выставляем приоритеты для устройств, располагая их следующим образом. Чем выше группа, к которой принадлежит устройство, тем выше приоритет линии прерывания для него. То есть, для видеокарты это 9, 10 или 11, то же самое для контроллера жесткого диска (RAID, SATA, SCSI) и аудиоплаты. ТВ-Тюнер и сетевую карту можно повесить на 3, 4 или 5 прерывание. А для USB подойдет 7. Естественно, вы знаете лучше свой компьютер и свои потребности. Возможно, для вас наибольшее значение будет иметь как раз USB, и тогда вы будете стараться повесить USB на 10 или 11 прерывание. Все это вы должны решить для себя сами. Далее, нужно настроить устройства, которые не имеют контроля номера линии прерывания из BIOS. Для этого нужно менять прерывания для устройств в пределах приоритетов прерываний для них, то есть, погонять видеокарту с 9 по 11, так же аудио и остальные устройства. Методом перебора вы загоните автоматическую линию на требуемое значение. Скорее всего, это окажет некоторые воздействие на конечную раскладку прерываний. То есть, вы хотели повесить видео на 10, но в результате повесили на 11, только для того, чтобы USB ушло на 7. Как только вы добьетесь результата, который вас устроит, загружайте операционную систему и наслаждайтесь скоординированной работой компьютера. Только помните, включение в BIOS или физическое добавление еще одного устройства приведет снова всю систему прерываний в ХАОС, который придется решать заново.

Выводы

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