Speculative computing is a technique to improve the execution time of certain applications by starting some computations before it is known that the computations are required. A speculative computation will eventually become mandatory (i.e. required) or irrelevant (i.e. not required). In the absence of side eects irrelevant computations may be aborted. However, with side eects a computation which is irrelevant for the value it produces may still be relevant for the side eects it performs. One problem that can result is the relevant synchronization problem wherein one computation requires some side eect event (a \relevant synchronization") to be performed by another computation, which might be aborted, before the rst computation can make progress. Another problem that can arise is the preemptive delay problem wherein a computation that will perform some awaited side eect event is preempted by a computation whose importance (e.g. priority) is less than that of computations wa...
Randy B. Osborne