M-Machine Publications
Concurrent Event Handling through Multithreading
Abstract
Exceptions have traditionally been used to handle infrequently occurring and
unpredictable events during normal program execution. Current trends in
microprocessor and operating systems design continue to increase the cost of
event handling. Because of the deep pipelines and wide out-of-order
superscalar architectures of contemporary microprocessors, an event may need to
nullify a large number o in-flight instructions. Large register files require
existing software systems to save and restore a substantial amount of process
state before executing an exception handler. At the same time, processors are
executing in environments that supply higher event frequencies and demand
higher performance. We have developed an alternative architecture,
Concurrent Event Handling , that incorporates multithreading into
event handling architectures. Instead of handling the event in the faulting
thread's architectural and pipeline registers, the fault handler is forked into
its own thread slot and executes concurrently with the faulting thread.
Microbenchmark programs show a factor of 3 speedup for concurrent event
handling over a traditional architecture on code that takes frequent
exceptions. We also demonstrate substantial speedups on two event-based
applications. Concurrent Event handling is implemented in the MIT Multi-ALU
Processor (MAP) chip.
KEYWORDS: Exceptions, interrupts, multithreading, context switching