Check out the new USENIX Web site.

next up previous
Next: Ensuring program correctness Up: Speculative execution Previous: Design goals

Our design

Our design currently requires no specialized operating system support (other than the prefetching system and strictly prioritized kernel threads) and is appropriate for single-threaded applications. The basic element in our current design is the addition of a new kernel thread to the application. We call this thread the speculating thread, and its purpose is to perform speculative execution while the ``original'' application thread is stalled. We ensure that the speculating thread only executes when the original thread is stalled by assigning the speculating thread a low priority and selecting a preemptive scheduling policy which time-slices amongst only the highest priority runnable threads. A hint call is issued by the speculating thread whenever it encounters a read call.

Fay Chang
Tue Jan 5 18:05:04 EST 1999