Replay system

Operations caught by the replay system are then re-executed in a loop until the conditions necessary for their proper execution have been fulfilled.

The most common reason execution fails is that the requisite data is not available, which itself is most likely due to a cache miss.

When this happens, the replay system signals the scheduler to stop, then repeatedly executes the failed string of dependent operations until they have completed successfully.

This wastes power, which is an increasingly important architectural design metric, but poses no performance penalty because the execution units would be sitting idle anyway.

[2] In other cases, where each thread is processing different types of operations, the replay system will not interfere, and a performance increase can appear.