Контроллер прерываний
В первых компьютерах IBM PC использовалась микросхема контроллера прерываний I8259 (Interrupt Controller), которая имеет восемь входов для сигналов прерываний (IRQO-IRQ7). Как известно, в одно и то же время микропроцессор может обслуживать только одно событие, и в этом ему помогает контроллер прерываний, который устанавливает для каждого из своих входов определенный уровень важности — приоритет. Наивысший приоритет имеет линия запроса прерывания IRQO, а наименьший — IRQ7, то есть приоритет убывает в порядке возрастания номера линии.
В IBM PC/AT восьми линий прерывания оказалось уже недостаточно, и их количество было увеличено до 15 путем каскадного включения двух микросхем контроллеров прерываний 18259. Такое каскадное включение осуществлялось путем соединения выхода второго контроллера ко входу IRQ2 первого. Важно понять следующее: линии прерывания IRQ8—IRQ15 (то есть входы второго контроллера) имеют приоритет ниже, чем IRQ1, но выше IRQ3.
В таблице 2 приведено распределение номеров прерываний по устройствам для большинства IBM РС/АТ - совместимых компьютеров.
IRQ | INT | Доступно | Использование | ||||
0 | 08h | нет | Системные часы (18,2 Гц) | ||||
1 | 09h | да | Клавиатура | ||||
2 | OAh | да | Второй блок IRQ8-15 | ||||
8 | 70h | нет | Таймер (1024 Гц) | ||||
9 | 71h | да | Переадресовано на IRQ2 | ||||
10 | 72h | да | - | ||||
11 | 73h | да | - | ||||
12 | 74h | 'да | - | ||||
13 | 75h | нет | Сопроцессор | ||||
14 | 76h | да | Контроллер винчестера | ||||
15 | 77h | да | - | ||||
3 | OBh | да | COM2 или COM4 | ||||
4 | OCh | да | СОМ1 или COM3 | ||||
5 | ODh | да | LPT2 | ||||
6 | OEh | да | Контроллер флоппи | ||||
7 | OFh | да | LPT1 |
Таблица 2. Таблица прерываний |
Для компьютеров, совместимых с PC/AT, обычно свободны всего четыре линии запроса прерываний: IRQ 10, 11, 12 и 15. Это, разумеется, касается только полноразмерных плат (16 разрядов данных). Для шин ISA и PCI используется одинаковый набор IRQ. Однако для PCI обычно используются прерывания, активные не по фронту, а по уровню, хотя и первая возможность также не исключается. Это позволяет использовать одну линию для передачи нескольких сигналов прерываний. Обычно для устройств PCI автоматически используются оставшиеся прерывания после установки ISA-плат.
Помимо прерываний, есть еще один способ вызывать какие-то события внутри PC без прямого вмешательства CPU. Это канал DMA.