[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: undo



On Thu, 2 Nov 1995 09:07:28 +0000,
dib@signal.dra.hmg.gb (David Bruce) wrote:
> [ transporting clones from a read-only past. Linear rather than
>   "branching times" ]
> 
> Since the simulation is partitioned into objects, what usually happens
> is that each object has a linear time, though of course the overall
> emergent effect is branching as you say.

I thought that the way parallel simulations worked was to have each
object forge ahead as if there won't be any changes in its inputs.
If a change does come along, it would back up to that point and
rerun the simulation again (killing the "wrong branch"). A lot like
the "speculative execution" that goes on in modern CPUs.

> Either way, making the past read-only does make life a *lot* easier.

Except for Star Trek script writers :-)

> [ last N versions - too much memory ]
> 
> The memory overhead can be a real nuisance.
> (Even when you've got sufficient memory we've found that caches tend
> to perform less effectively, and that can be quite significant.)

As I said before, I am hoping to find some good solution to this
problem. Meanwhile, a not very good one it to have only the last
version of each object and a "reverse write log" of the current
session. Each write to memory adds the address and the previous
content to the log. Playing the log backwards allows you to recover
any state in the current session. This log will probably prove to
be too large to be practical (note that it can also be used for
garbage collection, which is why I said these things are best done
in the virtual machine) and would be cleared when you logout, so
the past sessions would be lost.

> There has been some work on reversible systems that don't depend on
> storing additional versions but on reversible computations; this might
> then be of some interest.  One recent example is Henry Baker's
> "NREVERSAL of Fortune --- The Thermodynamics of Garbage Collection" in
> the 1992 International Workshop on Memory Management.

Thanks for the tip! I also found this related paper:

   "Thermodynamics and Garbage Collection"
   Henry G, Baker
   ACM Sigplan Notices 29, 4 (April 1994), pp. 58-63

I could be wrong, but I think that the assignment primitive makes
Self computations very non-reversible.

-- Jecel