University of Idaho
Most computer hardware today is non-deterministic, meaning that two executions of a program will not be cycle-for-cycle identical at the micro-architectural level even if they start from the same micro-architectural state. Due to uninitialized state elements, I/O, and timing variations on high-speed buses, the micro-architectural states of the two executions will evolve differently. Such non-determinism complicates system verification and makes hardware faults detected during bring up more difficult to reproduce and analyze. Consequently, the authors believe that board-level computer hardware should be designed in a way that supports cycle-accurate deterministic replay.