Помощничек
Главная | Обратная связь


Археология
Архитектура
Астрономия
Аудит
Биология
Ботаника
Бухгалтерский учёт
Войное дело
Генетика
География
Геология
Дизайн
Искусство
История
Кино
Кулинария
Культура
Литература
Математика
Медицина
Металлургия
Мифология
Музыка
Психология
Религия
Спорт
Строительство
Техника
Транспорт
Туризм
Усадьба
Физика
Фотография
Химия
Экология
Электричество
Электроника
Энергетика

Улучшенный контроллер прерываний — APIC



Контроллер APIC в первую очередь предназначен для симметричных мульти-процесорных систем (см. 7.5), в которых все процессоры разделяют общие устройства ввода-вывода и общие контроллеры прерываний. Однако APIC ис­пользуется и в однопроцессорных системных платах. Система с APIC состоит из локальных контроллеров, установленных в процессорах, и контроллеров прерываний от ввода-вывода (одного или нескольких). Все контроллеры APIC соединены между собой локальной шиной, по которой они обмениваются друг с другом сообщениями. Задача каждого локального контроллера (local APIC) — трансляция сообщений, принятых по локальной шине, в сигналы, вызывающие все аппаратные прерывания своего процессора, — маскируемые (INTR), немас­кируемые (NMI) и системного управления (SMI). Кроме того, локальные кон­троллеры APIC позволяют каждому процессору генерировать прерывания для других процессоров. Локальный контроллер имеет внутренний интервальный таймер, позволяющий вырабатывать прерывания через программируемый ин­тервал времени. Контроллер прерываний от ввода-вывода (I/O APIC) преобра­зует запросы аппаратных прерываний от устройств в сообщения протокола ло­кальной шины APIC. В мультипроцессорном режиме он отвечает за распределе­ние прерываний по процессорам, для чего может потребоваться статическое или динамическое распределение. В случае статического распределения для каж­дого номера прерывания указывается номер процессора, который его обслужи­вает. В случае динамического распределения каждое прерывание направляется наименее приоритетному в данный момент процессору. Этот же контроллер от­вечает за распространение сигналов о системных событиях (NMI, INIT, SMI) и межпроцессорных прерываний. Прерывания в мультипроцессорных системах подробно рассмотрены в документе «Intel Architecture Software Developer's Manual Volume 3: System Programming Guide», доступном на сайте http://www. intel.com. Здесь же ограничимся описаниями возможностей, предоставляемых контроллерами APIC для сигнализации прерываний ввода-вывода.

Контроллер I/O APIC является частью чипсета системной платы, например, он входит в хабы ICH2 и ICH3 чипсетов Intel. Доступны три режима обработки прерываний:

режим PIC (PIC mode) — эмуляция пары PIC 8259A с традиционной переда­
чей сигналов прерывания одному загрузочному процессору (Bootstrap Pro­
cessor, BSP) по линиям INTR и NMI;

режим виртуальных проводов (virtual wire mode) — то же, но с подачей сиг­
налов прерывания по локальной шине APIC, при этом контроллер I/O APIC
может работать совместно с PIC 8259A, обеспечивая дополнительные воз­
можности (в частности, дополнительные входы запросов прерываний);

симметричный режим ввода-вывода (symmetric I/O mode) — сообщения пре­
рывания от устройств генерирует APIC; прерывания могут доставляться лю­
бому процессору; каждый вход запроса индивидуально программируется
с помощью таблицы перенаправления прерываний ввода-вывода (I/O redirec­
tion table).

Первые два режима обеспечивают полную совместимость с системой прерыва­ний PC/AT, с программной точки зрения они эквивалентны, различия лежат в области схемотехники. При аппаратном сбросе (и включении питания) систе­ма начинает работать в одном из этих режимов. Когда система подготовится к переходу в мультипроцессорный режим (МР), APIC переводится в симмет­ричный режим и активизирует таблицу перенаправления прерываний (предва­рительно программно инициализированную).

Для симметричных систем допустимы векторы в диапазоне 10h-FEh. Уровень приоритета прерывания определяется номером его вектора, деленным на 16. Самый приоритетный уровень — нулевой.

Контроллер I/O APIC позволяет вырабатывать значительное число запросов прерываний; каждому запросу соответствует свой элемент в таблице перена­правления, находящейся в APIC. Каждый элемент определяет способ реакции на свой запрос, вектор прерывания и процессор (процессоры) назначения, кото­рый должен его обработать. С запросами связаны индивидуальные входы INTINn; определенный уровень или перепад сигнала на этих входах вызывают соответствующие запросы. Чувствительность и вектор (а следовательно, и при­оритет) для каждого запроса программируются индивидуально. Более совер­шенные модели I/O APIC позволяют вызывать прерывание записью номера входа в регистр контроллера, что, например, используется для поддержки пре­рываний MSI на шине PCI. При этом возможна и экономия сигнальных входов: APIC может иметь входы INTINn не для всех номеров запросов, вырабатывае­мых записью в этот регистр. Однако число запросов всегда ограничивается раз­мером таблицы перенаправления.

Регистры контроллеров APIC отображаются на пространство памяти. Все ло­кальные контроллеры APIC используют один и тот же диапазон адресов (по умолчанию базовый адрес — FEEO OOOOh) — к их регистрам обращаются только программы, исполняемые на их же процессорах, и эти обращения не выводятся на системную шину. Контроллеры I/O APIC доступны всем процессорам, по умолчанию базовый адрес первого I/O APIC — FECO OOOOh, базовые адреса ос­тальных контроллеров (если таковые имеются) назначаются последовательно с шагом lOOOh.

Выделение для сообщений APIC отдельной локальной шины позволяет освобо­дить системную шину процессора от трафика, связанного с обслуживанием прерываний (подачи подтверждений прерываний для получения вектора). В со­временных процессорах используется локальная шина, состоящая из трех сиг­нальных линий: PICD[1:O] — двунаправленная шина данных и PICCLK — сигнал синхронизации (тактовая частота). Протокол шины обеспечивает распределен­ный механизм арбитража и надежную доставку сообщений. Сообщения, пере­даваемые по локальной шине APIC, программно невидимы; реализация и про­токол шины могут быть изменены производителями процессоров и чипсетов системных плат, но это не отразится на ПО.

Помимо использования последовательной локальной шины, есть и иной вари­ант доставки сообщений к локальным контроллерам APIC — в этом варианте происходят обращения к пространству памяти. Для этого локальные контрол­леры APIC настраиваются на отслеживание операций записи по определенным адресам. Источник сообщений выполняет операцию записи в пространство па­мяти, в которой и адрес, и данные несут информацию о событии прерывания. В качестве источника сообщений может выступать расширенный контроллер, называемый 1/0(х)АР1С. Вышеупомянутый хаб ICH3 имеет возможность рабо­ты в режиме 1/О(х)АР1С.




©2015 studopedya.ru Все права принадлежат авторам размещенных материалов.