Out-of-order execution of interruptible codes
Abstract
The superscalar execution model extracts independent instructions from a restricted window. When pipeline latencies go beyond some limit, out-of-order execution becomes necessary to fully exploit the independency of instructions. On the other hand, multithreading merges the execution of independent instruction flows. The simultaneous use of these two techniques is expected to produce a high degree of concurrent activities in fiture processors. But, the codes must be interruptible and restartable. Classical program state construction is incompatible with out-of-order of execution. In this paper, we present a new processor architecture which basic execution model is out-of-order execution. In this new model, the state of some execution does not correspond to a possible sequential state any more it represents the operations that remain to be executed. When the instruction flow is interrupted, a code sequence which contains the instructions that have been issued but which execution cannot be completed is built. On restart, the execution of this sequence restores the initial state.