Intel 8259

редактировать

Крупный план Intel 8259A Микросхема IRQ от ПК 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 году, и поддерживался PC / XT, когда был представлен в 1983 году. Второй 8259A был добавлен с появлением ПК. / В. 8259 сосуществовал с архитектурой Intel APIC с момента ее появления в Симметричных многопроцессорных ПК. Современные ПК начали постепенно отказываться от 8259A в пользу архитектуры Intel APIC. Тем не менее, хотя интерфейс 8259A больше не является отдельным чипом, он по-прежнему обеспечивается чипсетом Platform Controller Hub или Southbridge на современных материнских платах x86.

Содержание
  • 1 Функциональное описание
  • 2 Рекомендации по программированию
    • 2.1 DOS и Windows
    • 2.2 Другие операционные системы
    • 2.3 Режимы запуска по фронту и уровню
    • 2.4 Ложные прерывания
  • 3 ПК / XT и PC / AT
  • 4 варианта
  • 5 См. Также
  • 6 Ссылки
  • 7 Внешние ссылки
Функциональное описание

Основные сигнальные контакты на 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 в сочетании с DOS и Microsoft Windows представили ряд сбивающих с толку проблем ради обратной совместимости, которые существуют еще с оригинального ПК, представленного в 1981 году.

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

Вторая проблема связана с использованием IRQ2 и IRQ9 из введение ведомого 8259 в ПК / АТ. Выход 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, но это случается редко.

PC / XT и PC / AT

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

Варианты
Номер моделиДиапазон температурДата выпускаЦена (долл. США)
ID8259- От 40 ° C до + 85 ° Cмарт / апрель 1979 г.23,15 долл. США
M8259Военныемарт / апрель 1979 г.95,00 долл.
См. Также
Ссылки
  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
Внешние ссылки
Последняя правка сделана 2021-05-24 03:56:38
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте