В первых компьютерах 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.