Write history queue is used to save the data in memory that is overwritten by post-checkpoint store operations. After a checkpoint is taken, every subsequent store operation will cause the old data and its memory address to be stored in the write history queue. The WHQ will ignore further writes to the same address as we are only concern with the original value to perform a rollback.
When a checkpoint is committed, the data and address stored in the write history queue will be dumped. However, on the event of a rollback, the data in the queue will be written back into the memory at the corresponding addresses. In addition, all caches in the higher hierarchy have to be flushed.
This design allows quick checkpoint taking and checkpoint committing. However, it has a terrible rollback performance and might be slower during speculative mode compared to the other methods since it allows writes to the main memory.
Forceload in assembler
2008-05-03
2008-05-02
2008-04-18
2008-04-14
2008-04-07
2008-04-01
2007-11-18
2007-11-01