КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Улучшенный программируемый контроллер прерываний)
APIC (Advanced Programmable Interrupt Controller, Конфликт прерываний
Конфликт - это ситуация, при которой несколько объектов одновременно пытаются получить доступ к ресурсу, который предназначен только для одного из них. Конфликт прерываний возникает в том случае, если несколько устройств используют одну и ту же линию прерывания для посылки сигнала запроса, и нет механизма, позволяющего обрабатывать конкурирующие запросы. Если драйвер, получая управление, работает не с тем устройством, которое послало запрос, то либо происходит сбой, либо одно из устройств попросту не работает. Возникает вопрос: могут ли несколько устройств использовать одну и ту же линию прерывания, или это в принципе невозможно? Ведь если драйвер сможет определить, от кого именно пришел запрос, то он будет реагировать на сигналы только "своего" устройства, игнорируя все остальные. Но это должно быть каким-либо образом заранее оговорено, иначе конфликт неизбежен. Локальная шина 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
В результате возможны ситуации, когда компьютер начинает часто зависать, отказывается выполнять какие-либо функции, а то и просто вываливается в так называемый «синий экран смерти».
Как было показано выше, линия прерывания – очень дефицитный ресурс для компьютера. Однако, с развитием компьютерной индустрии количество различных внешних устройств в компьютере постоянно увеличивается. Например, на одной материнской плате могут присутствовать 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.
Дата добавления: 2014-01-06; Просмотров: 668; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |