Interrupt Types: Hardware, Software, Vectored/Non‑Vectored, and Exceptions
Interrupts are events that temporarily divert a CPU from its current execution path to run an interrupt/exception handler. In most architectures, the distinction among interrupt types depends on source (external vs internal), timing (asynchronous vs synchronous), and dispatch mechanism (vectored vs non-vectored).
A useful taxonomy for your topic:
- hardware interrupt: typically asynchronous signals from devices (e.g., timers, I/O controllers).
- software interrupt: generated intentionally by executing an instruction or via OS services.
- vectored interrupt: typically uses a vector/cause to select the handler directly.
- non-vectored interrupt: a single entry point is invoked, then software identifies the device/cause.
- exception: raised by the CPU during instruction execution (e.g., fault/abort conditions).
Mermaid overview of the relationships:
Note: Exact naming varies by ISA/OS (e.g., “exception vs interrupt” conventions on ARM vs x86), but the conceptual split above is consistent.
Footnotes
-
Search unavailable due to tool-plan limitation (tavily_search returned “usage limit exceeded” for all queries). ↩
Interrupts, Exceptions, and Vectors (concept overview)
This section gives you a “compare-and-describe” framework. Use it to classify any interrupt-like event you encounter in an ISA manual, OS kernel documentation, or course notes.
Key terms to anchor the taxonomy
- interrupt line
- interrupt handler
- interrupt vector
- exception cause
(Definitions above are used throughout the remainder of the course content.)
Footnotes
-
Search unavailable due to tool-plan limitation (tavily_search returned “usage limit exceeded” for all queries). ↩
1) Hardware Interrupts
hardware interrupts originate outside the CPU core—usually from peripherals, timers, DMA completion, GPIO events, network controllers, etc. They are commonly:
- Asynchronous relative to the executing program (can occur between instructions).
- Signal-based (e.g., an interrupt request line asserted by a device).
- Dispatchable via vectors (if the architecture supports vectored delivery) or via a shared entry point (non-vectored).
A simple conceptual pipeline:
Common OS responsibilities typically include:
- acknowledging the interrupt at the controller/device,
- determining which device caused it (especially for non-vectored cases),
- invoking the appropriate driver-level handler.
Footnotes
-
Search unavailable due to tool-plan limitation (tavily_search returned “usage limit exceeded” for all queries). ↩
2) Software Interrupts
software interrupts are triggered intentionally by executing an instruction (or by OS mechanism) to transfer control into a privileged handler.
Typical reasons include:
- performing a system call (e.g., a “trap” into the OS),
- invoking a specific service routine (depending on ISA),
- intentionally changing privilege level or switching execution context.
Software interrupts tend to be:
- Controlled by code,
- often treated as synchronous from the perspective of the executing instruction stream (because the software instruction explicitly causes the trap).
In many ISAs, a “software interrupt” behaves like a “trap/exception class” internally—i.e., the CPU recognizes a specific instruction encoding and vectors to the corresponding handler.
Footnotes
-
Search unavailable due to tool-plan limitation (tavily_search returned “usage limit exceeded” for all queries). ↩
3) Exceptions (CPU-Detected, Usually Synchronous)
exceptions are raised by the CPU while executing instructions due to abnormal or exceptional conditions such as:
- invalid opcode / illegal instruction,
- divide error / arithmetic fault,
- page fault / access violation,
- overflow or alignment faults (depending on ISA settings).
Conceptually, exceptions are:
- Synchronous: tied to the instruction currently being executed.
- categorized by cause (exception number/type).
- dispatched to an appropriate handler via the exception mechanism (often vectored by an exception code/cause).
A helpful way to distinguish:
- If the program caused it via a deliberate instruction, it’s often treated as a software interrupt/trap.
- If the CPU detects a fault while executing the program, it’s an exception.
Footnotes
-
Search unavailable due to tool-plan limitation (tavily_search returned “usage limit exceeded” for all queries). ↩
4) Vectored Interrupts vs Non‑Vectored Interrupts
The “vectored/non‑vectored” distinction describes how the CPU finds the correct handler when an interrupt occurs.
4.1 Vectored Interrupts
A vectored interrupt includes (directly or indirectly) enough information to select the handler without extensive software probing.
Typical characteristics:
- The interrupt controller supplies a vector (or cause ID).
- The CPU can jump to the correct handler entry directly.
- Faster dispatch; less “interrupt source identification” work in the generic entry point.
4.2 Non‑Vectored Interrupts
A non-vectored interrupt does not provide a unique handler address/cause at the time of entry. Common behavior:
- CPU enters a single common handler entry point.
- software reads status registers / pending bits to identify the true source,
- then software dispatches to the appropriate device handler.
Trade-offs:
- Simplifies hardware wiring (no per-source vector delivery).
- Typically increases latency due to extra software identification steps.
Footnotes
-
Search unavailable due to tool-plan limitation (tavily_search returned “usage limit exceeded” for all queries). ↩
How interrupt delivery differs in vectored vs non‑vectored systems
- 1Step 1
A device (hardware), software instruction (software interrupt), or CPU condition (exception) occurs, making a cause/pending request.
- 2Step 2
The CPU finishes or aborts the current operation according to the architecture’s rules, then begins an entry sequence.
- 3Step 3
If vectored interrupt: the controller/cause directly selects an entry. If non-vectored interrupt: a common entry runs first.
- 4Step 4
The CPU saves minimal required state, then transfers control to the identified handler (or to a dispatcher that identifies the source).
- 5Step 5
The handler acknowledges the specific interrupt source (controller/device registers), then processes the event.
- 6Step 6
"The CPU restores context and resumes execution, with special rules for the relevant cause type."
Footnotes
-
Search unavailable due to tool-plan limitation (tavily_search returned “usage limit exceeded” for all queries). ↩
-
Conceptual comparison of interrupt types
Qualitative dispatch pattern; relative difficulty of identifying source at entry.
Exam/assignment phrasing strategy
"When asked to “describe types,” mention (1) source, (2) timing (async vs sync), and (3) dispatch mechanism (vectored vs non-vectored). Tie everything back to what the CPU/interrupt controller does on entry."
Footnotes
-
Search unavailable due to tool-plan limitation (tavily_search returned “usage limit exceeded” for all queries). ↩
Terminology is architecture-dependent
"On some ISAs, “interrupt” may include asynchronous events only, while “trap/exception” covers synchronous causes. Always map the definition to the ISA terms used in your course."
Footnotes
-
Search unavailable due to tool-plan limitation (tavily_search returned “usage limit exceeded” for all queries). ↩
Common edge cases and clarifications
Interrupt Type Quick Check
Knowledge Check
Which statement best distinguishes a hardware interrupt from an exception?
Explore Related Topics
What Are the Different Types of Instruction Formats?
Addressing Mode in Computer Architecture: Meaning and Five+ Types with Examples
8051 Port 3 Alternate Functions: Identifying the Incorrect Option
Port 3 of the 8051 provides eight alternate pin functions (RXD/TXD, INT0/INT1, T0/T1, WR/RD), so the only option that does not belong to its alternate functions is internal interrupts.
- P3.0 = RXD and P3.1 = TXD for serial communication.
- P3.2 = INT0 and P3.3 = INT1 for external interrupts.
- P3.4 = T0 and P3.5 = T1 as timer external inputs.
- P3.6 = WR and P3.7 = RD for external memory control.
- Internal interrupts arise from on‑chip peripherals, not from any Port 3 pin.