FREQUENTLY ASKED QUESTIONS
IRQs - Interrupt Requests
Last updated: 10/3/2003
8/7/00 Like so many things, I intend to build
on and word-smith this FAQ as time goes on and may convert it into a full-fledged
article. The titles "Know Your IRQs" and "Plug
'n Prey" keep resonating as things that need to be treated in depth
and in understandable language. Larry
Q. What is an IRQ or Interrupt request?
IRQ is is really an Interrupt Request line. In the case of expansion
boards, it is an actual contact (finger) on the board, and it is a corresponding
pin in the sockets on the bus connected by a trace on the motherboard. A
device sends a interrupt to the motherboard's interrupt circuitry by changing
the voltage level on the interrupt request line. This voltage change
acts via interrupt controller circuitry to interrupt the processor to service
the device needing the CPU's attention. Simply put, if, for example,
a serial port is receiving data from a MODEM, it can't wait until it's buffer
overflows for the CPU, etc. to come to its assistance. The CPU
will then temporally store the program and data it is working on in an area
of memory know as the stack and load a routine (program) to service the interrupting
device, service the device (move that data out of its buffer, etc.), and
then restore the program and data it was previously working on and resume
what it was doing. A CPU can be interrupted many times a second--a
marvelously complicated affair when one considers that a CPU can be working
on one interrupt request and be interrupted in this task by still another
IRQ request of a higher priority, etc., and that it usually does all of this
juggling without losing a beat or data.
The IRQ structure in today's PC's goes all
the way back to the Intel 8086 processor and the Intel 8259 Programmable
Interrupt Controller (I remember working with this combination in 1979). The
8259 can control eight IRQ lines. When IBM came out with the XT computer
with an 8080 processor and 8-bit expansion bus, it used one 8259, the top
IBM came out with the 286 AT computer with an a 16-bit expansion bus and
two 8259's as shown. The INT signal (Interrupt--prioritized interrupt)
of the second 8259 was connected to the old IRQ2 pin on the first 8259 and
the IRQ 2 line was plugged into IRQ 9 on the new 8259. The old 8-bit
bus lives on in the 16-bit ISA expansion slot on your PC, which is really
an expanded 8-bit socket with additional pins to bring it to 16-bits in front
of it. And the old 16 IRQ structure still governs those PCI slots. Of
course, the functions of 8259 have long since be incorporated into the large
chipsets on today's motherboards.
IRQs are prioritized and serviced in priority
order by the CPU as determined by the controller. As IRQs 8 through
15 trigger IRQ2 on the top 8259, thus, they have a higher priority than IRQs
3 through 7. Any expansion board that is set to use IRQ 2 is really
using IRQ 9. Some boards lable/depict it as IRQ 2, others IRQ 9, and
still others IRQ 2/9. No matter what it is called, one must not set
two ISA boards to the very same IRQ.
Q. What are the IRQ assignments in
the average PC?
||2nd IRQ controller
||Free (used by LPT2: or sound card)
||Real Time Clock (RTC)
||Free (may be labeled/appear as IRQ 2)
||Free (often used by sound cards)
||Math coprocessor on CPU (used)
Q. What is an interrupt conflict?
A. When two or more devices/expansion
boards have been assigned (or grab) the same IRQ.
Q. What are the standard COM port addresses (serial ports) in DOS and Windows?
Q. What's wrong with the standard COM port addresses?
A. Note the IRQs. Also, note that COM2: has a higher priority than COM1:. If, for example, serial 1 on a motherboard is enabled and you have a MODEM in the computer set to COM3:, there could be interrupt conflict problems. Those are the reasons I like to disable serial 2 in motherboard CMOS Setup and set internal MODEMs to COM2: I have seen a lot of computers come into my shop with MODEMs set to COM3: accompanied by customers wondering why they have problems connecting to and using the Internet.