Реферат на тему Страдания по IRQ
Работа добавлена на сайт bukvasha.net: 2015-06-29Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Системность | Линия IRQ | Устройство |
S | 0 | Системный таймер |
S | 1 | Клавиатура |
S | 2 | Cascad (Вывод на вторую микросхему контроллера линий прерываний) |
S | 8 | Часы реального времени |
9 | Свободно | |
10 | Свободно | |
11 | Свободно | |
12 | Свободно | |
S | 13 | Сопроцессор |
14 | IDE Primary (Контроллер жестких дисков) | |
15 | IDE Secondary (Контроллер жестких дисков) | |
3 | Com Port 1 (Мышь) | |
4 | Com Port 2 (Модем) | |
5 | Свободно | |
S | 6 | Floppy (Дисковод) |
7 | LPT (Принтер) |
Такая раскладка прерываний очень долго сохранялась на многих бытовых компьютерах. Почти все компьютеры на базе процессоров 386, 486 и Pentium имеют такой список использованных прерываний. При таком раскладе свободных прерываний в компьютере оказывается всего пять (5, 9, 10, 11, 12), но этого количества для большинства случаев было вполне достаточно. Устройств, требующих прерывание и устанавливаемых в компьютер в виде плат расширения, редко было больше трех. Стандартный набор того времени выглядел так: видеокарта, звуковая плата и сетевая карта. При этом было важно, чтобы одно прерывание ни в коем случае не использовалось двумя устройствами одновременно, так как это повлечет конфликт системных ресурсов, и оба устройства, находящихся на одном прерывании, работать не будут. Задачей сборщика компьютера на тот момент было разведение всех устройств по прерываниям таким образом, чтобы ни одно устройство не пересекалось с другим.
Наверное, самое время объяснить, что такое конфликт прерываний. Если два устройства находятся на одной линии прерываний, то драйвер может их спутать и переслать исполняемый кусок программы не той «железке», при этом заставляя ее исполнить этот кусок кода. Например, сетевая плата и звуковая карта находятся на 10 прерывании. Сетевая карта получает пакет из локальной сети с запросом на получение файла и отправляет запрос на прерывание центральному процессору.
Процессор отрабатывает прерывание, останавливает исполняемую задачу и передает управление драйверу сетевой карты, для отработки необходимых для приемки файла действий. Драйвер начинает работу с устройством, от которого пришло прерывание. Вот только работать он начинает не с сетевой платой, а со звуковой картой, находящейся на той же линии, передавая ей команды для приемки файла. Звуковая карта исполняет принятые команды, и полностью завешивает компьютер с BSOD (Blue Screen Of Death).
Существует еще одна небольшая тонкость. Все линии прерываний имеют свой приоритет. Чем выше приоритет у линии прерывания, тем быстрее процессор ответит на запрос от устройства находящегося на этой линии. Приоритеты прерываний приведены в таблице ниже в порядке убывания.
Приоритет прерываний | |||||||||||||||
0 | 1 | 2-> | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 3 | 4 | 5 | 6 | 7 |
Исторически сложившаяся архитектура наложила очень сильный отпечаток на приоритеты линий прерываний. Подключенная вторая микросхема контроллера ко второй линии первой микросхемы вклинивается в приоритеты. Поэтому линии второй микросхемы имеют более высокий приоритет, чем линии первой. При этом, обе микросхемы выглядят для пользователя единым модулем контроллера прерываний – 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), сложилась раскладка прерываний, которая существует в каждом компьютере и по сей день. Вот она:
Системность | Линия IRQ | Устройство |
S | 0 | Системный таймер |
S | 1 | Клавиатура |
S | 2 | Cascad (Вывод на вторую микросхему контроллера линий прерываний) |
S | 8 | Часы реального времени |
9 | ACPI Controller | |
10 | Свободно | |
11 | USB | |
S | 12 | PS2 |
S | 13 | Сопроцессор |
14 | IDE Primary (Контроллер жестких дисков) | |
15 | IDE Secondary (Контроллер жестких дисков) | |
3 | Com Port 1 (Мышь) | |
4 | Com Port 2 (Модем) | |
5 | Свободно | |
S | 6 | Floppy (Дисковод) |
7 | LPT (Принтер) |
Как видно из таблицы, свободных прерываний практически не осталось. Свободными можно считать только IRQ 5 и 10, всё остальное занято. По логике, как раз их-то и надо использовать для видеокарты и аудиоплаты. Но устройств, требующих собственное прерывание и не описанных в этой таблице, может быть куда больше. В таблицу они не включены, так как являются опциями, то есть могут быть в системе, а могут и не быть. Например: сетевая карта, контроллер RAID или SCSI, ТВ-тюнер, SATA, IEEE1394 (FireWire) и так далее. То есть, может сложиться ситуация, когда на два свободных прерывания будет восемь устройств, требующих собственного прерывания. Есть три способа решения этой проблемы. Каждый способ имеет свои плюсы и минусы.
Первый способ – это полноценное использование систем ACPI и IRQ Sharing. Если системы ACPI, а соответственно и APIC, включены, то операционная система считает, что у неё 256 прерываний, при этом реальных прерываний как было 16, так и осталось. Оставшиеся 240 прерываний – это виртуальные прерывания, которые являются клонами реальных. ACPI автоматически распределяет прерывания и не позволяет пользователю их менять. Если устройство соглашается работать в режиме кооперации с другим устройством, то есть все шансы, что ACPI посадит их на одну физическую линию. Если не контролировать данную ситуацию, то на одном физическом прерывании могут оказаться практически все устройства, установленные в компьютере, даже если есть свободные прерывания. Это приведет к сильнейшему торможению всей системы и серьезным сбоям в работе.
Решение:
Плюс данного подхода в отсутствии потребности вмешательства со стороны пользователя. То есть, делать ничего не надо. Просто воткнуть в материнскую плату видеоадаптер, процессор, память и так далее, а затем поставить операционную систему, которая нормально поддерживает ACPI. А это Windows XP или Windows 2000. Всё. Компьютер заработает. Именно в таком виде продаются почти все компьютеры, собранные в России. Подход прост: если работает и тормозит – то это не гарантийный случай, а проблема пользователя.
Второй способ заключается в отказе от использования ACPI и APIC, но с параллельным использованием IRQ Sharing. Отказ от систем ACPI и APIC означает , что операционная система знает о наличии у неё только 16 прерываний, а не 256, но система IRQ Sharing позволяет находиться на одном прерывании нескольким устройствам. При этом отслеживать картину прерываний уже можно, и выбирать соседей по своему усмотрению - тоже. То есть, если у вас есть сетевая плата и звуковая карта, и при этом нужны все порты ввода-вывода установленные в материнскую плату, то от IRQ Sharing уже никак не отделаться.
Решение:
Современные материнские платы обладают некоторыми особенностями, которые необходимо знать для корректного разведения линий прерываний по устройствам. Так, все встроенные в материнскую плату устройства чаще всего имеют жесткую привязку к слотам расширения PCI, а некоторые слоты жестко привязаны друг к другу. К примеру, у вас есть встроенная в материнскую плату звуковая карта, при этом она автоматически кооперируется с устройством в третьем слоте PCI. Если вы вставите сетевую плату в третий слот, то встроенная звуковая карта и сетевая плата будут висеть на одном прерывании, чтобы вы ни делали. Решить этот конфликт можно, переставив сетевую карту в другой слот. Или другой пример: пятый и первый слот PCI привязаны друг к другу, и установив два устройства в эти слоты, вы автоматически вешаете их на одну линию прерывания. Опять же, это лечится переустановкой одного из устройств в другой слот. К сожалению, современные материнские платы имеют столько встроенных устройств, что найти свободный слот PCI без запаралеленных устройств бывает невозможно. В этом случае всё зависит от устройства.
A | B | C | D | E | F | G | |
PCI Slot 1 | Shared | ||||||
PCI Slot 2 | Shared | ||||||
PCI Slot 3 | Shared | ||||||
PCI Slot 4 | Shared | ||||||
PCI Slot 5 | Shared | ||||||
PCI Slot 6 | Shared | ||||||
AGP Slot | Shared | ||||||
USB 1.1 UHCI 1 | Shared | ||||||
USB 1.1 UHCI 1 | Shared | ||||||
USB 1.1 UHCI 1 | Shared | ||||||
USB 1.1 EHCI | Shared | ||||||
Audio codec | Used | ||||||
Onboard LAN | Shared | ||||||
Onboard 1394 | Shared | ||||||
Onboard SATA | Shared | ||||||
Onboard IDE | Used |
Буквами вверху обозначены линии прерываний 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 или физическое добавление еще одного устройства приведет снова всю систему прерываний в ХАОС, который придется решать заново.
Выводы
Весьма непросто бывает объяснить системы, которые представляют из себя не линейную информацию, а переплетение различных кусков информации в сочетании с интуицией и логикой, человеческой логикой, а не компьютерной. Из-за отсутствия упорядоченной информации и отточенных технологий, каждый человек умеющий решать конфликты внутри компьютера считает себя чуть-чуть магом, потому что каждый это делает немного по своему. У всех есть маленькие хитрости и секреты. Для того, чтобы сделать этот текст хотя бы немного понятным я старался не заострять внимания на объяснениях всех действий и точным описанием всех функций и спецификаций. Тем не менее, если у вас возникнут вопросы или комментарии, автор статьи с удовольствием выслушает и ответит на них. Мы надеемся, что эта статья поможет начинающим компьютерщикам разобраться в сложившейся ситуации.