next up previous
Next: Research Thrusts for Reverse Up: Previous Work in Reverse Previous: Related Results from NSF

Related Work

Reverse computation has been previously studied in various contexts. Research into reversible computing is aimed at realizing reversible versions of conventional computations in order to reduce the power consumption [9,87,40]. Additionally, all quantum computations have been found to be reversible [7,8,36].

The R language is a high-level language with special constructs to enforce reversibility so that programs written in that language can be translated to machine code of reversible computers [39]. Another interesting application of reversible computation is in garbage collection. The Psi-Lisp language presented in [3] uses reversible constructs to efficiently implement garbage collection. Other applications for reversible execution are in the areas of database transaction support, debugging support and checkpointing for high-availability software [10,66,95].

In [11], reversible computing has been suggested as a method for testing failures in real-time systems, but with admittedly high forward and reverse computing overheads, and without treatment of complex instructions such as inter-mixing jumps. An initial attempt at automatically generating symbolic inverses of reversible functions is made in [34], but it relies on heuristics for correctness. A more theoretical approach is taken in [25], by using inversion of invariants to prove the correctness of inverse programs. A debugging system is described in [10] that executes $ C$ programs in interpreted mode in forward and reverse directions. Although their approach using interpretation is well suited for debugging systems, the performance characteristics of their techniques are unclear when applied to high-performance simulations. An interesting use of reversible computing is its application in the automatic differentiation of functions expressed in a high-level computer language, such as $ C/C^{++}$[52,53]. For this, reverse execution of certain intermediate computations is necessary, which is achieved via operator-overloading techniques of $ C^{++}$.

Fujimoto's Virtual Time Machine [43] is a hardware-based state-saving algorithm that allows for the optimistic use (i.e., reads and writes) of globally shared state. The major hardware innovation is a Space-Time Memory system. Lin et al. [68] define an analytic model for determining the optimal checkpoint interval for optimistic simulations when infrequent state-saving is used. The state-saving techniques presented in [51] utilize a limited form of the reverse computation approach and is the first work we are aware of to specifically discuss reverse computation for simulation, but no performance results are provided. Finally, in [102], a rollback relaxation scheme is presented that automatically identifies certain types of history-independent logical processes and optimizes the performance of rollback activity for those processes.


next up previous
Next: Research Thrusts for Reverse Up: Previous Work in Reverse Previous: Related Results from NSF
Christopher D. Carothers 2002-03-07