Pci 1 irq assignment что это

Обновлено: 04.07.2024

Майкрософт ввела спецификацию PCI IRQ Routing Table Specification. Согласно этой спецификации PCI BIOS должен быть снабжен таблицей, которая описывает маршрутизацию. Эта таблица аналогична данным получаемым через функцию PCI BIOS GetIRQRoutingTable. А для перепрограммирования в PCI BIOS есть функция SetPCIHardwareInterrupt.

Определить присутствие PCI IRQ Routing Table можно при помощи поиска в системной памяти с 0F0000h по FFFFFh через каждые 16-byte сигнатуры "$PIR".

Баты смещение Размер в байтах Имя
0 4 Signature / Сигнатура
4 2 Version / Версия
6 2 Table Size / Размер таблицы
8 1 PCI Interrupt Router's Bus
9 1 PCI Interrupt Router's DevFunc
10 2 PCI Exclusive IRQs
12 4 Compatible PCI Interrupt Router
16 4 Miniport Data
20 11 Reserved (Zero) / Резерв ноль
31 1 Checksum / Контрольная сумма
32 16 First Slot Entry / Первый слот
48 16 Second Slot Entry / Второй слот
(N + 1) * 16 16 Nth Slot Entry / N’ый слотов

Сигнатура – это ASCII строка "$PIR " или байт 0 это 24h, байт 1 это 50h, байт 2 это 49h, и байт 3 это 52h. Или для проверки 52495024h

Версия – в формате стандартном для версии байт 0 это 00h содержит значение до точки и байт 1 это 01h после точки получаем 1.0

Table Size - размер таблицы в байтах. Должен быть больше 32. К примеру для 5 слотов 32 + (5 * 16) = 112

PCI Interrupt Router's Bus - номер шины PCI на котором расположено устройство маршрутизации прерываний.

PCI Interrupt Router's DevFunc - номер устройства и функции PCI на котором расположено устройство маршрутизации прерываний. Верхние 5 битов устройство нижнее 3 функция.

PCI Exclusive IRQs- Это IRQ битовая карта которая информирует какие IRQs которые не должны быть использованы для PCI. Для примера, если IRQ11 будет использоваться исключительно для PCI, а использование для ISA устройств будет запрещено, тогда бит 11 будет установлен в 1. Если это IRQ не является эксклюзивным для PCI, то он выставляется в 0.

Compatible PCI Interrupt Router – Это поле содержит Vendor ID (баты 0 и 1) and Device ID (байты 2 и 3) совместимого PCI маршрутизатора прерываний, или ноль(0) если такого нет. Это поле используется операционной системой для определения драйвера для маршрутизатора прерываний.

Miniport Data – данные для инициализации драйвера Miniport, это для Майкрософтского драйвера. Если не нужны то 0.

Reserved – резерв и должен быть 0.

Checksum – контрольная сумма. Способ проверки следующей сумма всех байт таблицы включая слоты должна быть 0 по модулю 256.

Slot Entry. Каждый слот это 16 –байтовая структура описывающая как слоты PCI interrupt контакты связаны проводами с другими слотами и как чипсет назначает IRQ контакты . Каждый слот имеет следующий формат:

PCI Bus Number – номер шины на которой расположен слот PCI Device Number – номер устройства слота.

Slot Number: Это значение используется для коммуникации с системной платой и платами расширения. Для системной карты должен быть ноль. А для карт расширение номер физического посадочного места на материнской карте. Это надежный способ соотнести физические слоты с PCI device numbers.

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

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

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

Какие могут быть проблемы?

Когда архитектуру IBM PC только создавали, прерываний было создано немного, всего восемь, как я уже писал, и отдавали их на всякую "ерунду", вроде портов COM, хотя оправдывает инженеров IBM то, что выбора особого не было, его пришлось искать позже. Очевидно, никто не пророчил платформе такое будущее, поэтому для ее изюминки, то есть возможности расширения, было оставлено только одно прерывание, которое потом было занято контроллером второй "восьмерки" IRQ. Правда, стоит заметить, что дополнительные прерывания могли (и могут) быть высвобождены путем отключения различных занимающих их ISA-устройств: портов, флоппи-дисковода. Так вот, ошибки, или конфликты, возникают когда несколько устройств пытаются работать на одном прерывании. Это очень проблематично, потому что многие современные устройства, особенно звуковые карты и всевозможные мультимедийные комбайны несут на себе сразу несколько устройств. Даже самые простые "звуковухи" имеют на борту не менее четырех девайсов. Вот так выглядит карта прерываний в современном компьютере:

Так что же это получается? На современный компьютер можно установить только три дополнительных устройства? Судя по таблице, да, но не все так страшно. У Вас, например, есть порт 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 VIA Rev 5 USB универсальный хост-контроллер
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. Не забывайте также поставить свежие или хотя бы "родные" драйверы всех устройств, это поможет системе правильно работать.

Если Вы используете более новые 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.

Если в данной статье приводится описание неполадки оборудования, обратитесь в следующий веб-узел корпорации Майкрософт для просмотра дополнительных статей об оборудовании:

Аннотация

Чтобы отключить управление IRQ для шины PCI, выполните следующие действия.

Откройте вкладку Диспетчер устройств.

Дважды щелкните узел Системные устройства .

Дважды щелкните Шина PCI и перейдите на вкладку Управление IRQ.

Щелкните, чтобы снять флажок Использовать управление IRQ , нажмите кнопку ОКи снова нажмите кнопку ОК .

Примечание: Также может потребоваться отключить управление IRQ PCI шины в базовой системы ввода вывода (BIOS) компьютера. Сведения о том, как сделать это производителю вы BIOS. Следующие параметры определяют используемым маршрутизации Windows таблиц при программировании управление IRQ:

Таблица IRQ ACPI BIOS: Если этот флажок установлен, в таблицу маршрутизации ACPI BIOS IRQ является первой таблицы, Windows пытается использовать для управления IRQ. Если устройство PCI работает неправильно, установите этот флажок, снимите его.

Таблица IRQ с помощью таблицы спецификаций MS: Если этот флажок установлен, в таблицу маршрутизации спецификаций MS является второй таблицы, Windows пытается использовать для управления IRQ.

Таблица IRQ из защищенного режима PCIBIOS 2.1 вызова: Если этот флажок установлен, в таблицу маршрутизации защищенного режима PCIBIOS 2.1 является третьей таблицы, Windows пытается использовать для управления IRQ.

Таблица IRQ из PCIBIOS 2.1 реального режима вызова: Если этот флажок установлен, в таблицу маршрутизации PCIBIOS 2.1 реального режима является таблицей четвертый Windows пытается использовать для управления IRQ. Примечание: По умолчанию флажок Таблица IRQ из защищенного режима PCIBIOS 2.1 вызова не выбран. Следует выбрать этот флажок только в том случае, если устройство PCI работает неправильно.

Обратите внимание, что «IRQ для управления PCI» может появиться на Состояние маршрутизации IRQ , несмотря на то, что управление IRQ для шины PCI отключен. Это может происходить, если параметры IRQ считываются с BIOS компьютера. Сведения об изменении BIOS обратитесь к производителю BIOS. Для дополнительной информацией о управление IRQ для шины PCI, щелкните следующий номер статьи базы знаний Майкрософт:

182604 описание PCI шины управления IRQ

Дополнительная информация

Локальной шины PCI стал отраслевым стандартом шины и используется в большинстве компьютеров с процессором Pentium. При запуске компьютера с локальной шины PCI, системной BIOS динамически настраивает параметры ресурсов адаптера PCI и требования поскольку шины PCI и устройств PCI использовать согласованные механизмы для идентификации себя и объявление их ресурсов настройки и требования. Устройства PCI могут совместно использовать одинаковые IRQ из-за системной BIOS создает таблицу, которая называется таблицей маршрутизации PCI IRQ. Эта таблица содержит записи для каждого устройства PCI, предоставленный ISA IRQ, сопоставленный с определенной PCI INT номер, который связан с определенным разъем PCI, в котором установлено устройство. Они объединяются для создания значения ссылки. Значение ссылки используется при обмене данными с устройством, и хотя устройства PCI могут использовать одинаковые IRQ, все они имеют значения отдельных связей. После BIOS назначает параметры ресурсов и строит таблицу маршрутизации PCI IRQ, Windows загружает и PCI и ISA Plug and Play совместимые устройства ресурсов информация извлекается из системы BIOS и считывает данные из таблицы маршрутизации PCI IRQ. Windows может переназначить ISA IRQ, сопоставленные с определенного числа PCI INT. Также динамически, при возникновении события Plug and Play, например: закрепление ноутбук с стыковочного Windows можно переназначить IRQ. Иногда, когда это переназначение IRQ таким образом, Windows может зависать, перезагрузки или устройство не работает при попытке переназначить IRQ, настроенных в BIOS. Windows может препятствовать динамического выделения прерывания ISA, отключив управление IRQ. Это предотвращает динамического выделения прерываний Windows и основывается на системе BIOS для этого. Изготовители оборудования (OEM) может оказаться необходимо отключить управление даже на новые компьютеры для предотвращения конфликтов ресурсов оборудования для устройств, которые они установили IRQ. Это не вызывает потери функциональности для устройств, просто гарантирует, что устройства будет оставаться включенным для использования определенной конфигурации IRQ, обнаруженным ПВТ для правильной работы при тестировании системы.

Устройства отправляют IRQ процессору для запроса доступа

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

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

Примечание. IRQ произносится как буквы I-R-Q, а не как erk .

Ошибки IRQ

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

Хотя один и тот же канал IRQ может использоваться более чем для одного устройства (при условии, что оба фактически не используются одновременно), обычно это не так. Конфликт IRQ, скорее всего, возникает, когда два устройства пытаются использовать один и тот же канал для запроса прерывания.

Так как программируемый контроллер прерываний (PIC) не поддерживает это, компьютер может зависнуть или устройства перестанут работать должным образом (или перестанут работать полностью).

Еще в первые дни Windows ошибки IRQ были обычным явлением, и для их устранения потребовалось немало проблем. Это было связано с тем, что чаще было устанавливать каналы IRQ вручную, как с DIP-переключателями, что повышало вероятность того, что более одного устройства использовали одну линию IRQ.

Однако IRQ обрабатываются намного лучше в новых версиях Windows, в которых используется технология «включай и работай», поэтому вы редко увидите конфликт IRQ или другую проблему IRQ.

Просмотр и редактирование настроек IRQ

Вы также можете использовать Системную информацию. Выполните команду msinfo32.exe в диалоговом окне «Выполнить» ( Ключ Windows + R ), а затем перейдите к Ресурсы аппаратного обеспечения> IRQ .

Пользователи Linux могут запустить команду cat/proc/interrupts , чтобы просмотреть сопоставления IRQ.

Возможно, вам придется изменить линию IRQ для конкретного устройства, если оно использует тот же IRQ, что и другое, хотя обычно это не требуется, поскольку системные ресурсы автоматически выделяются для новых устройств. Это только старые устройства промышленной стандартной архитектуры (ISA), которые могут нуждаться в ручной настройке IRQ.

Вы можете изменить настройки IRQ в BIOS или в Windows через диспетчер устройств. Вот как можно изменить настройки IRQ с помощью диспетчера устройств:

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

Примечание. Если вкладка «Ресурсы» отсутствует или «Использовать автоматические настройки» неактивны или неактивны, это означает, что либо вы не можете указать ресурс для этого устройства, так как он подключен и работает или что у устройства нет других настроек, которые могут быть применены к нему.

Общие IRQ каналы

Вот для чего используются некоторые из наиболее распространенных каналов IRQ:

Примечание. Поскольку IRQ 2 имеет предназначенную цель, любое устройство, настроенное для его использования, будет использовать IRQ 9.

Читайте также: