Interrupts
Goals
Interrupts
Understand what causes an interrupt.
Understand the design options for
handling an interrupt.
COMP375 Computer Architecture
and
dO
Organization
i ti
Immediate Attention
Interrupts are a way that a running program
can be stopped to allow the operating
system to do something immediately
immediately.
Some activities require the CPU to respond
quickly. A very short program may be all
that is necessary to handle a situation, but
that program has to be run very shortly
after the situation occurs.
When a program does something wrong
(divide by zero or bad pointer), the
operating system needs to take over.
COMP375
Interrupts and Exceptions
An interrupt is a change in program
d fi d flflow off execution.
defined
ti
When an interrupt occurs, the hardware
executes the instructions at a specified
address instead of following the normal
program flow.
User programs are interrupted all the time.
Interrupts
Transfer of Control via Interrupt
Types of Interrupts
External Generated by an I/O device
Internal Exception within a program
Program Generated Used to transfer
control to the operating system
graphic from Stallings textbook
External Interrupts
I/O devices tell the CPU that an I/O
requestt has
h completed
l t db
by sending
di an
interrupt signal to the processor.
I/O errors may also generate an interrupt.
Most computers have a timer which
interrupts the CPU every so many
milliseconds.
Internal Interrupts
When the hardware detects that the
program is doing something wrong, it will
usually generate an interrupt
interrupt.
Arithmetic error
Addressing error
Page fault
- Invalid Instruction
- Hardware malfunction
- Debugging
A Page Fault interrupt is not the result of a program
error, but it does require the operating system to get
control.
Internal interrupts are sometimes called
exceptions.
COMP375
Interrupts
Program Generated Interrupts
int Instruction
Most computers have an instruction that
generates
t an internal
i t
l iinterrupt.
t
t
Program generated interrupts are a means
for user programs to call a function of the
operating system
Some systems refer to these interrupts as
a SuperVisor Call or SVC
The Intel Pentium int instruction
generates
t a program interrupts.
i t
t
This is the mechanism for a user program
to call an operating system function.
The int instruction takes a one byte
operand.
operand
The bottom 1K (1024 bytes) of system
memory is devoted to the storage of
interrupt vectors.
DOS Print Character
Interrupt Action
MOV AH,02 ; To select print character,
; move the
th appropriate
i t number,
b 2
2, tto AH
AH.
MOV DL,"!" ; the character to output
; should be in register DL
INT 21h
; call the interrupt.
COMP375
When an interrupt occurs, the program
counter
t and
d status
t t flags
fl
are saved
d in
i a
special location.
New program counter and status flags
are loaded. The location may be
determined by the type of interrupt.
Interrupts
Similar to Function Calls
A interrupt is similar to a function call, the
return
t
address
dd
iis pushed
h d on th
the stack
t k and
d
execution jumps to another location.
Interrupts can occur without warning. A
program may be adding some numbers
when an I/O device will generate an
interrupt.
Interrupt Service Routines
When an interrupt occurs, execution starts
in an interrupt service routine (ISR) or
interrupt handler.
The ISR is almost always in the OS.
The interrupt service routine processes the
event or queues a program to process the
event.
After an external interrupt, the service
routine will return to the program.
OS and Hardware Response
Hardware saves the current program
counter
t and
d status
t t flags.
fl
Hardware loads new PC and flags.
OS saves the registers
OS determines cause of the interrupt
OS does something (depends on the interrupts)
OS restores the registers
OS executes an interrupt return instruction
to load saved PC and flag values.
COMP375
Interrupt Design Issues
When may interrupts be recognized?
Where is the process state saved?
What process state is saved?
How is the handlers entry point found?
How is the program resumed?
Interrupts
Recognizing Interrupts
Instruction Cycle (with
Interrupts) - State Diagram
An external event can signal the CPU to
i t
interrupt
t att any time,
ti
even in
i the
th middle
iddl off
an instruction.
External interrupts take effect at the end of
an instruction.
Some long repeating instructions provide
an opportunity to interrupt between
iterations.
graphic from Stallings textbook
Internal Interrupts
Internal interrupts are signaled during an
i t ti
instruction.
Execution of an instruction can raise an
arithmetic error interrupt.
Page faults can be created during the
instruction fetch,
fetch operand fetch or operand
store or all of the above.
COMP375
Saving Process State
Interrupts can be considered similar to a
function call.
The program counter and processor state
register can be saved on the stack.
It is unwise to save system information in
user address space, thus the interrupt
i f
information
i cannot b
be saved
d on the
h user
stack.
A special OS stack can be used.
Interrupts
What to Save
Special Save Areas
Some architectures provide a special fixed
l
location
ti tto save th
the executing
ti programs
state.
Some processors, such as MIPS, save the
interrupt address in a special register, the
exception program counter (EPC).
A fixed location can be overridden if you
have nested interrupts.
ISR Entry Point
The processor needs to save enough
information so the executing program can
b resumed.
be
d
Information usually saved:
Program Counter
Status bits
Registers (by OS)
Addressing environment (by OS)
Current process may need to be suspended
Interrupt Vector Points to ISRs
// Divide error
It is possible for all interrupt service routines
t start
to
t t att the
th same location.
l
ti
The
Th software
ft
can determine what kind of interrupt.
The hardware can assist by using the
interrupt type as an index into a table of ISR
addresses.
Each interrupt may have a different ISR
entry point or classes of interrupts may have
a common entry point.
Interrupt
Vector
1: 1234
Interrupt Service Routine
2: 2341
// Floating Point overflow
3: 5634
Interrupt Service Routine
4: 4327
// Bad Address
5: 4644
Interrupt Service Routine
etc.
// Page Fault
Interrupt Service Routine
// Incorrect opcode
Interrupt Service Routine
COMP375
Interrupts
Interrupt Vector
In the Intel Pentium each interrupt type
h a number
has
b associated
i t d with
ith itit, called
ll d th
the
interrupt request queue (IRQ) number.
When a device interrupts, the IRQ is used
as an index into a table of ISR addresses.
The operand of the int instruction provides
an index into a table of ISR addresses.
Multiple Interrupts
An interrupt event can occur while the
processor is handling a previous interrupt.
If the return address is always stored at a
fixed location, the occurrence of an interrupt
while handling a previous interrupt will
overwrite the previous return address.
Most interrupt service routines start with
interrupts disabled. This prevents an
interrupt service routine from being
interrupted.
COMP375
Resuming Execution
On external interrupts, the OS generally
resumes the running process. The next
instruction of the process is executed
executed.
For some internal interrupts, it may not be
possible to restart the program (i.e.
addressing error).
For some interrupts (i
(i.e.
e page faults) you
want to re-execute the instruction.
For other interrupts (i.e. overflow) you may
want to execute the next instruction.
Masking Interrupts
Some interrupts can be temporarily
di bl d M
disabled.
Mostt processors can di
disable
bl
external interrupts.
Most internal interrupts cannot be
disabled.
It is generally problematic to disable
interrupts for a lengthy period of time.
Interrupts
Intel EFLAGS Register
Missing Interrupts
Many devices will interrupt once per event.
processor fails to acknowledge
g the
If the p
interrupt before the next event, knowledge
of the first interrupt is lost.
Interrupt Priorities
Device Speed
Most systems prioritize the interrupts.
If two interrupts happen at the same time,
the interrupt with the highest priority will be
serviced first.
graphic from Stallings textbook
COMP375