Открыть сервис

Intel 8259A

Intel 8259A — это программируемый контроллер прерываний (Programmable Interrupt Controller, PIC), разработанный компанией Intel для использования в микропроцессорных системах на базе процессоров семейства x86. Предназначен для управления запросами на прерывание от внешних устройств, их приоритезации и передачи соответствующего вектора прерывания центральному процессору. Микросхема 8259A является усовершенствованной версией более ранней модели 8259 и стала стандартным компонентом в архитектуре IBM PC/AT и совместимых с ней компьютерах.

История

Разработка контроллера прерываний 8259 была начата компанией Intel в конце 1970-х годов в рамках создания набора микросхем поддержки для микропроцессора 8086. Первоначальная версия (8259) имела ряд ограничений, в частности, не поддерживала каскадное включение нескольких контроллеров. В 1980 году была выпущена модификация 8259A, которая устранила эти недостатки и обеспечила совместимость с новыми поколениями процессоров.

В 1981 году контроллер 8259A был использован в первой модели IBM PC на базе процессора 8088. В архитектуре IBM PC/AT (1984 год) применялась схема с двумя каскадно-соединёнными контроллерами 8259A, что позволяло обслуживать до 15 внешних прерываний (одно из 16 линий занималось каскадным подключением). Эта конфигурация оставалась стандартной для всех совместимых с IBM PC компьютеров вплоть до середины 1990-х годов, пока не была вытеснена более современными решениями, такими как Advanced Programmable Interrupt Controller (APIC), встроенный в чипсеты и процессоры.

Устройство и принцип работы

Микросхема 8259A представляет собой интегральную схему с 28 выводами, выполненную в корпусе DIP или PLCC. Основные функциональные блоки включают:

  • Регистр запросов прерываний (IRR) — хранит состояние всех активных запросов на прерывание.
  • Регистр обслуживания (ISR) — хранит информацию о прерываниях, которые в данный момент обрабатываются.
  • Регистр маски прерываний (IMR) — позволяет программно блокировать отдельные линии запросов.
  • Логика приоритетов — определяет, какой из поступивших запросов будет обработан первым.
  • Логика управления — управляет последовательностью обработки прерываний и взаимодействием с процессором.

Основные характеристики

  • Количество входов прерываний: 8 (IR0–IR7) для одного контроллера; при каскадном включении — до 64 (8 мастер-контроллеров × 8 слейв-контроллеров, но на практике в IBM PC/AT использовалось 2).
  • Тип прерываний: аппаратные (маскируемые) прерывания.
  • Режимы работы: фиксированный приоритет, циклический приоритет, режим специальной маски, режим опроса, режим вложенных прерываний.
  • Совместимость: с процессорами Intel 8086, 8088, 80286, 80386, 80486 и ранними моделями Pentium.

Процесс обработки прерывания

  1. Внешнее устройство подаёт сигнал на один из входов IR0–IR7.
  2. Контроллер регистрирует запрос в IRR и, если соответствующая линия не замаскирована в IMR, передаёт сигнал INT (запрос прерывания) процессору.
  3. Процессор завершает текущую инструкцию и отвечает сигналом INTA (подтверждение прерывания).
  4. Контроллер выставляет на шину данных вектор прерывания — 8-битное число, которое процессор использует для поиска адреса обработчика в таблице векторов прерываний.
  5. Процессор переходит к выполнению обработчика прерывания.
  6. По окончании обработки программа подаёт команду End of Interrupt (EOI), после чего контроллер сбрасывает соответствующий бит в ISR и может обрабатывать новые запросы.

Режимы работы

Контроллер 8259A поддерживает несколько режимов, программируемых через регистры управления:

  • Режим фиксированного приоритета: линия IR0 имеет наивысший приоритет, IR7 — наинизший.
  • Режим циклического приоритета: приоритеты линий циклически сдвигаются после каждого прерывания, что обеспечивает равномерную обработку устройств.
  • Режим специальной маски: позволяет временно разрешить прерывания от линий с более низким приоритетом, даже если обрабатывается прерывание от линии с более высоким приоритетом.
  • Режим опроса: процессор периодически опрашивает контроллер на наличие ожидающих прерываний, вместо использования аппаратного сигнала INT.
  • Режим вложенных прерываний: разрешает прерывание от линии с более высоким приоритетом во время обработки прерывания от линии с более низким приоритетом.

Каскадное включение

Для увеличения количества обслуживаемых прерываний несколько контроллеров 8259A могут быть соединены каскадно. В такой конфигурации один контроллер выступает в роли мастер-устройства, а остальные — слейв-устройства. Выход INT слейв-контроллера подключается к одному из входов IR мастер-контроллера. При поступлении прерывания от слейв-устройства мастер-контроллер передаёт процессору специальный код, указывающий, какой именно слейв-контроллер обработал запрос. В архитектуре IBM PC/AT использовалось два контроллера 8259A: мастер (IR0–IR7) и слейв (IR8–IR15), подключённый к линии IR2 мастера.

Программирование

Программирование контроллера 8259A осуществляется через порты ввода-вывода. Для IBM PC/AT стандартные адреса:

  • Мастер-контроллер: порты 0x20 (команды) и 0x21 (данные).
  • Слейв-контроллер: порты 0xA0 (команды) и 0xA1 (данные).

Инициализация контроллера включает запись последовательности управляющих слов (ICW1–ICW4), которые задают режим работы, базовый вектор прерываний, тип каскадного включения и другие параметры. После инициализации могут быть записаны операционные слова (OCW1–OCW3) для управления маскированием, приоритетами и другими функциями.

Применение

Контроллер 8259A широко использовался в персональных компьютерах на базе архитектуры x86, а также во встраиваемых системах, промышленных контроллерах и других устройствах, где требовалось управление аппаратными прерываниями. В IBM PC/AT и совместимых компьютерах он обслуживал прерывания от таких устройств, как:

Слейв-контроллер обслуживал прерывания от:

  • IR8: часы реального времени
  • IR9: программное прерывание (переадресация на INT 0x0A)
  • IR10: зарезервировано
  • IR11: зарезервировано
  • IR12: мышь (PS/2)
  • IR13: математический сопроцессор
  • IR14: первичный канал IDE
  • IR15: вторичный канал IDE

Устаревание и замена

С развитием вычислительной техники возможности контроллера 8259A перестали удовлетворять требованиям многопроцессорных систем и высокопроизводительных устройств. В 1990-х годах на смену ему пришёл Advanced Programmable Interrupt Controller (APIC), который был интегрирован в чипсеты материнских плат и процессоры. APIC поддерживает до 255 прерываний, работает в многопроцессорных конфигурациях, обеспечивает более гибкое управление приоритетами и поддерживает сообщения о прерываниях через шину (Message Signaled Interrupts, MSI). Тем не менее, для обеспечения обратной совместимости с устаревшим программным обеспечением, в современных чипсетах и операционных системах (например, Windows, Linux) сохраняется эмуляция контроллера 8259A в режиме совместимости (Legacy PIC mode).

Интересные факты

  • Контроллер 8259A был одной из первых микросхем, реализующих программируемую логику обработки прерываний, что позволило разработчикам гибко настраивать систему под конкретные задачи.
  • В архитектуре IBM PC/AT вектор прерываний для мастер-контроллера был установлен на 0x08–0x0F, а для слейв-контроллера — на 0x70–0x77. Это вызывало конфликты с программными прерываниями BIOS, что потребовало переназначения векторов в защищённом режиме.
  • В некоторых встраиваемых системах контроллер 8259A продолжает использоваться до сих пор благодаря своей простоте и низкой стоимости.

Источники

  • Intel Corporation. 8259A Programmable Interrupt Controller Datasheet. 1988.
  • IBM Corporation. IBM PC/AT Technical Reference. 1984.
  • Shanley, T., Anderson, D. ISA System Architecture. Addison-Wesley, 1995.
  • Messmer, H.-P. The Indispensable PC Hardware Book. Addison-Wesley, 2002.

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →