Intel 8259 - Intel 8259

Крупный план микросхемы Intel 8259A IRQ от PC XT.
Распиновка

В Intel 8259 это Программируемый контроллер прерываний (PIC) разработан для Intel 8085 и Intel 8086 микропроцессоры. Первоначальная часть была 8259, более поздняя версия суффикса A была совместима снизу вверх и могла использоваться с 8086 или 8088 процессор. 8259 объединяет несколько источников входных прерываний в один прерывать вывод на главный микропроцессор, расширяя уровни прерывания, доступные в системе, за пределы одного или двух уровней, найденных на микросхеме процессора. 8259A был контроллером прерываний для Автобус ISA в оригинале IBM PC и IBM PC AT.

8259 был представлен как часть Intel MCS 85 семейство в 1976 году. 8259A был включен в оригинальный ПК, представленный в 1981 году и обслуживаемый ПК / XT когда был представлен в 1983 году. Второй 8259A был добавлен с введением ПК / AT. 8259 сосуществовал с Архитектура Intel APIC с момента его появления в Симметричный мультипроцессор ПК. Современные ПК начали постепенно отказываться от 8259A в пользу Архитектура Intel APIC. Однако, хотя интерфейс 8259A больше не является отдельным чипом, он по-прежнему предоставляется Концентратор контроллера платформы или же Южный мост чипсет на современном x86 материнские платы.

Функциональное описание

Основные сигнальные контакты на 8259 следующие: восемь линий запроса ввода прерывания с именами от IRQ0 до IRQ7, запрос на прерывание строка вывода с именем INTR, строка подтверждения прерывания с именем INTA, от D0 до D7 для передачи уровня прерывания или смещения вектора. Другие соединения включают CAS0 - CAS2 для каскадирования между 8259.

До восьми раб 8259 могут быть подключены каскадом к владелец 8259 для предоставления до 64 IRQ. 8259 каскадируются путем подключения линии INT одного раб 8259 на линию IRQ одного владелец 8259.

Есть три регистра, Регистр маски прерывания (IMR), Регистр запроса прерывания (IRR) и Рабочий регистр (ISR). IRR поддерживает маска из текущих прерываний, ожидающих подтверждения, ISR поддерживает маску прерываний, ожидающих EOI, а IMR поддерживает маску прерываний, для которых не следует отправлять подтверждение.

Конец прерывания (EOI) операции поддерживают определенный EOI, неспецифический EOI и автоматический EOI. Конкретный EOI указывает уровень IRQ, который он подтверждает в ISR. Неспецифический EOI сбрасывает уровень IRQ в ISR. Auto-EOI сбрасывает уровень IRQ в ISR сразу после подтверждения прерывания.

8259A поддерживает режимы запуска по прерыванию по фронту и по уровню. Поддерживаются режимы фиксированного приоритета и чередующегося приоритета.

8259 можно настроить для работы с 8080/8085 или 8086/8088. В 8086/8088 контроллер прерывания предоставит номер прерывания на шине данных при возникновении прерывания. Цикл прерывания 8080/8085 выдаст три байта на шину данных (что соответствует команде CALL в наборе команд 8080/8085).

8259A предоставляет дополнительные функции по сравнению с 8259 (в частности, режим с буферизацией и режим с запуском по уровню) и совместим с ним снизу вверх.

Соображения по программированию

DOS и Windows

NEC D8259AC, использованный на оригинале IBM PC материнская плата.

Программирование 8259 совместно с ДОС и Майкрософт Виндоус ввел ряд запутанных проблем ради обратной совместимости, которая существует еще с оригинального ПК, представленного в 1981 году.

Первая проблема более или менее является корнем второй проблемы. Ожидается, что драйверы устройств DOS отправят неспецифический EOI на 8259, когда они закончат обслуживание своего устройства. Это предотвращает использование любого из других режимов EOI 8259 в DOS и исключает различие между прерываниями устройства, перенаправленными с ведущего устройства 8259 на ведомое устройство 8259.

Вторая проблема связана с использованием IRQ2 и IRQ9 из-за введения ведомого устройства 8259 в PC / AT. Выход INT ведомого 8259 подключен к IR2 ведущего. Линия IRQ2 шины ISA, первоначально подключенная к этому IR2, была перенаправлена ​​на IR1 ведомого устройства. Таким образом, старая строка IRQ2 теперь генерирует IRQ9 в ЦП. Чтобы обеспечить обратную совместимость с драйверами устройств DOS, которые все еще настроены для IRQ2, BIOS устанавливает обработчик для IRQ9, который перенаправляет прерывания исходному обработчику IRQ2.

На ПК BIOS (а значит, и DOS) традиционно сопоставляет запросы прерывания главного устройства 8259 (IRQ0-IRQ7) со смещением вектора прерывания 8 (INT08-INT0F) и подчиненного устройства 8259 (в ПК / AT и более поздних версиях) запросы прерывания (IRQ8 -IRQ15) для прерывания смещения вектора 112 (INT70-INT77). Это было сделано, несмотря на то, что первые 32 вектора прерываний (INT00-INT1F) были зарезервированы процессором для внутренних исключений (по какой-то причине это было проигнорировано при разработке ПК). Из-за зарезервированных векторов для исключений большинство других операционных систем отображают (по крайней мере, главную) 8259 IRQ (если они используются на платформе) в другое базовое смещение вектора прерывания.

Другие операционные системы

Поскольку большинство других операционных систем допускают изменение ожиданий драйверов устройств, могут использоваться другие 8259 режимы работы, такие как Auto-EOI. Это особенно важно для современных x86 аппаратное обеспечение, в котором значительное количество времени может быть потрачено на задержку адресного пространства ввода / вывода при обмене данными с 8259. Это также позволяет выполнять ряд других оптимизаций синхронизации, таких как критические секции, в многопроцессорной системе x86 с 8259.

Режимы срабатывания по фронту и уровню

Поскольку шина ISA не поддерживает уровень срабатывает прерывания, режим с запуском по уровню не может использоваться для прерываний, подключенных к устройствам ISA. Это означает, что на PC / XT, PC / AT и совместимых системах 8259 должен быть запрограммирован для срабатывает край режим. В системах MCA устройства используют прерывания, запускаемые по уровню, а контроллер прерываний постоянно работает в режиме с запуском по уровню. В новых системах EISA, PCI и более поздних версиях регистры управления граничным уровнем / уровнем (ELCR) управляют режимом для каждой линии IRQ, что фактически делает режим 8259 несущественным для таких систем с шинами ISA. ELCR программируется BIOS при запуске системы для правильной работы.

ELCR располагаются 0x4d0 и 0x4d1 в адресном пространстве ввода-вывода x86. Они имеют ширину 8 бит, каждый бит соответствует IRQ от 8259. Когда бит установлен, IRQ находится в режиме запуска по уровню; в противном случае IRQ находится в режиме запуска по фронту.

Ложные прерывания

8259 генерирует ложные прерывания в ответ на ряд условий.

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

Похожий случай может произойти, когда демаскирование 8259 и снятие подтверждения ввода IRQ не синхронизированы должным образом. Во многих системах вход IRQ отменяется записью ввода-вывода, и процессор не ждет, пока запись достигнет устройства ввода-вывода. Если процессор продолжает и демаскирует 8259 IRQ до того, как вход IRQ будет отменен, 8259 снова подтвердит INTR. К тому времени, когда процессор распознает этот INTR и выдает подтверждение для чтения IRQ из 8259, вход IRQ может быть отменен, и 8259 вернет ложное IRQ7.

Во-вторых, IRQ2 ведущего 8259 является активным на высоком уровне, когда линии IRQ ведомого 8259 неактивны на заднем фронте подтверждения прерывания. Во втором случае будут генерироваться ложные IRQ15, но это случается редко.

ПК / XT и ПК / AT

ПК / XT ЭТО В системе был один контроллер 8259, в то время как системы PC / AT и более поздние имели два контроллера 8259, главный и подчиненный. IRQ0 - IRQ7 - это линии прерывания ведущего 8259, а IRQ8 - IRQ15 - линии прерывания ведомого 8259. Метки на контактах на 8259 - от IR0 до IR7. IRQ0 - IRQ15 - это имена линий шины ISA, к которым присоединены 8259.

Варианты

Номер моделиДиапазон температурДата выпускаЦена (долл. США)[список 1]
ID8259От -40 ° C до + 85 ° C[1]Март / апрель 1979 г.[2]$23.15
M8259ВоенныйМарт / апрель 1979 г.[3]$95.00
  1. ^ В количестве от 100 и более

Смотрите также

Рекомендации

  1. ^ Корпорация Intel, "8086 Доступно для промышленных сред", специальный выпуск Intel Preview: 16-битные решения, май / июнь 1980 г., стр. 29
  2. ^ Корпорация Intel, «Компонент микрокомпьютера: новая линейка продуктов промышленного уровня отвечает спросу на высоконадежные компоненты для работы в промышленных приложениях», Intel Preview, март / апрель 1979 г., стр. 11
  3. ^ Корпорация Intel, «Продукция военного назначения: Intel идет вперед!», Intel Preview, март / апрель 1979 г., стр. 19
  • Гиллуве, Фрэнк ван. Недокументированный ПК. A-W Developers Press, 1997. ISBN  0-201-47950-8
  • МакГиверн, Джозеф. Дизайн компьютерной системы, управляемой прерываниями. Annabooks, 1998. ISBN  0-929392-50-7
  • Технический справочник аппаратного интерфейса IBM Personal System / 2 - Архитектуры. IBM, 1990. Публикация IBM 84F8933.

внешняя ссылка