Optimistic parallel discrete-event simulation engines require a rollback mechanism to restore the state of a simulation object to an earlier time if its events are accidentally processed out of time order. Traditional approaches save the entire state of an object before its next event is processed so that its original state can be restored. However, this approach can very quickly use up all of a processor's available memory. In addition, the overhead for copying large amounts of memory can be quite high. Incremental state saving helps to overcome these problems by saving only the changes that an event makes to an object. This paper describes some reversible incremental state saving techniques (i.e., the Delta Exchange Method and the Rollback Queue Mechanism) that are used by the object-oriented C++ SPEEDES (Synchronous Parallel Environment for Emulation and Discrete-Event Simulation) operating system, The need for reversible incremental state saving is emphasized by a brief discussion on lazy cancellation techniques which require roll-forward as well as rollback support.
['Jeff S. Steinman']
Incremental state saving in SPEEDES using C