Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
article
Free access

History cache: hardware support for reverse execution

Published: 01 December 1994 Publication History

Abstract

Reverse execution provides access to old states of an executing process. An application of reverse execution can be found in program debugging. When an error is detected, its cause is often hidden in the history of the process. In such situations, it is important to be able to recover and examine past states of the process. Numerous other applications of reverse execution are found in programming environments, in fault-tolerant computing and in speculative computation.Since processes are in general irreversible, the history must be saved in order to provide reverse execution. The main problem in dealing with the history is the amount of data generated. This paper describes a new approach to reverse execution based on a history cache which compacts the history. The performance of the history cache is measured on a simulator. The history cache can compact the history by more than an order of magnitude. Efficient support for reverse execution enables many new techniques such as a generic undo operation, a real-time checkpoint, and fast backtracking.

References

[1]
[1] J. E. Archer Jr., R. Conway, and F. B. Schneider. User recovery and reversal in interactive systems. ACM Transactions on Programming Languages and Systems, 6(1):1-19, January 1984.
[2]
[2] R. M. Balzer. EXDAMS - EXtendable Debugging and Monitoring System. In AFIPS Conference Proceeedings, Vol. 34, pages 567-580. SJCC, 1969.
[3]
[3] J. R. Bitner and E. M. Reingold. Backtrack programming techniques. Communications of the ACM, 18(11):651-656, November 1975.
[4]
[4] T. A. Cargill and B. N. Locanthi. Cheap hard-ware support for software debugging and profiling. In Proc. of the 2nd International Conference on Architectural Support for Programming Languages and Operating Systems, pages 82-83. ACM, 1987.
[5]
[5] K. M. Chandy and C. V. Ramamoorthy. Rollback and recovery strategies for computer programs. IEEE Transactions on Computers, 21(6):546-556, June 1972.
[6]
[6] S. I. Feldman and C. B. Brown. IGOR: A system for program debugging via reversible execution. In Proceedings SIGPLAN/SIGOPS Workshop on Parallel and Distributed Debugging, pages 112-123. ACM, 1988.
[7]
[7] A. M. Feridun and K. G. Shin. A fault-tolerant multiprocessor system with rollback recovery capabilities. In Proc. 2nd Int. Conf. Distributed Comput. Sys., pages 283-298. IEEE, 1981.
[8]
[8] C. W. Fraser and D. R. Hanson. A retargetable compiler for ANSI C. SIGPLAN Notices, 26(10):29-43, October 1991.
[9]
[9] R. M. Fujimoto, J.-J. Tsai, and G. C. Gopalakrishnan. Design and evaluation of the rollback chip: Special purpose hardware for time warp. IEEE Transactions on Computers, 41(1):68-82, January 1992.
[10]
[10] J. Heering and P. Klint. Towards monolingual programming environments. ACM Transactions on Programming Languages and Systems, 7(2):183- 213, April 1985.
[11]
[11] J. L. Hennessy and D. A. Patterson. Computer Architecture: A Quantitative Approach. Morgan Kaufmann, Los Altos, CA, 1990.
[12]
[12] W.-M. W. Hwu and Y. N. Patt. Checkpoint repair for high-performance out-of-order execution machines. IEEE Transactions on Computers, 36(12):1496-1514, December 1987.
[13]
[13] D. R. Jefferson. Virtual time. ACM Transactions on Programming Languages and Systems, 7(3):404-425, July 1985.
[14]
[14] P. A. Lee, N. Ghani, and K. Heron. A recovery cache for the PDP-11. IEEE Transactions on Computers, 29(6):546-549, June 1980.
[15]
[15] Y.-H. Lee and K. G. Shin. Design and evaluation of a fault-tolerant multiprocessor using hardware recovery blocks. IEEE Transactions on Computers , 33(2):113-124, February 1984.
[16]
[16] G. B. Leeman Jr. A formal approach to undo operations in programming languages. ACM Transactions on Programming Languages and Systems, 8(1):50-87, January 1986.
[17]
[17] K. Li, J. F. Naughton, and J. S. Plank. Concurrent real-time checkpoint for parallel programs. In Second ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming, pages 79- 88. ACM, 1990.
[18]
[18] Henry Lieberman. Reversible object-oriented interpreters. In European Conference on Object-Oriented Prograraming, pages 11-19, June 1987.
[19]
[19] J. M. Mellor-Crummey and T. J. LeBlanc. A software instruction counter. In Proc. of the 3nd International Conference on Architectural Support for Programming Languages and Operating Systems, pages 78-86. ACM, 1989.
[20]
[20] T. G. Moher. PROVIDE: A process visualization and debugging environment. IEEE Transactions on Software Engineering, 14(6):849-857, June 1988.
[21]
[21] D. Z. Pan and M. A. Linton. Supporting reverse execution of parallel programs. In Proceedings SIGPLAN/SIGOPS Workshop on Parallel and Distributed Debugging, pages 124-129. ACM, 1988.
[22]
[22] B. L. Peuto and L. J. Shustek. An instruction timing model of CPU performance. In Proceedings of the 4th Annual Symposium on Computer Architecture, pages 165-178, 1977.
[23]
[23] J. E. Smith and A. R. Plezkun. Implementing precise interrupts in pipelined processors. IEEE Transactions on Computers, 37(5):562-573, May 1988.
[24]
[24] R. Sosic. The Many Faces of Introspection. PhD thesis, Department of Computer Science, University of Utah, 1992.
[25]
[25] R. Sosic and J. Gu. Efficient local search with conflict minimization: A case study of the n-queens problem. IEEE Transactions on Knowledge and Data Engineering, 6(4), August 1994.
[26]
[26] L. Sterling and E. Shapiro. The Art of Prolog. MIT Press, Cambridge, MA, 1986.
[27]
[27] T. Teitelbaum and T. Reps. The Cornell program synthesizer: A syntax directed programming environment. Communications of the ACM, 24(9):563-573, September 1981.
[28]
[28] A. P. Tolmach and A. W. Appel. Debugging standard ML without reverse engineering. In Proc. ACM Lisp and Functional Programming Conference '90. ACM, 1990.
[29]
[29] P. R. Wilson and T. G. Moher. Demonic memory for process histories. In Proceedings of SIGPLAN'89 Conference on Programming Language Design and Implementation, pages 330-343. ACM, 1989.
[30]
[30] M. V. Zelkowitz. Reversible execution. Communications of the ACM, 16(9):566, September 1973.

Cited By

View all
  • (2017)Transparently Mixing Undo Logs and Software Reversibility for State Recovery in Optimistic PDESACM Transactions on Modeling and Computer Simulation10.1145/307758327:2(1-26)Online publication date: 27-May-2017
  • (2007)Using Reversible Computation Techniques in a Parallel Optimistic Simulation of a Multi-Processor Computing SystemProceedings of the 21st International Workshop on Principles of Advanced and Distributed Simulation10.1109/PADS.2007.31(179-188)Online publication date: 12-Jun-2007
  • (2004)Assembly instruction level reverse execution for debuggingACM Transactions on Software Engineering and Methodology10.1145/1018210.101821113:2(149-198)Online publication date: 1-Apr-2004
  • Show More Cited By

Recommendations

Comments

Information & Contributors

Information

Published In

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 01 December 1994
Published in SIGARCH Volume 22, Issue 5

Check for updates

Qualifiers

  • Article

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)27
  • Downloads (Last 6 weeks)5
Reflects downloads up to 16 Oct 2024

Other Metrics

Citations

Cited By

View all
  • (2017)Transparently Mixing Undo Logs and Software Reversibility for State Recovery in Optimistic PDESACM Transactions on Modeling and Computer Simulation10.1145/307758327:2(1-26)Online publication date: 27-May-2017
  • (2007)Using Reversible Computation Techniques in a Parallel Optimistic Simulation of a Multi-Processor Computing SystemProceedings of the 21st International Workshop on Principles of Advanced and Distributed Simulation10.1109/PADS.2007.31(179-188)Online publication date: 12-Jun-2007
  • (2004)Assembly instruction level reverse execution for debuggingACM Transactions on Software Engineering and Methodology10.1145/1018210.101821113:2(149-198)Online publication date: 1-Apr-2004
  • (2003)Parallel distributed simulation and modeling methodsProceedings of the 35th conference on Winter simulation: driving innovation10.5555/1030818.1030932(864-871)Online publication date: 7-Dec-2003
  • (2003)An algorithm for fully-reversible optimistic parallel simulationProceedings of the 2003 International Conference on Machine Learning and Cybernetics (IEEE Cat. No.03EX693)10.1109/WSC.2003.1261505(864-871)Online publication date: 2003
  • (2003)Memory-efficient and fast enumeration of global statesProceedings on Seventh International Conference on Information Visualization, 2003. IV 2003.10.1109/IV.2003.1217978(189-193)Online publication date: 2003
  • (1999)Efficient optimistic parallel simulations using reverse computationProceedings of the thirteenth workshop on Parallel and distributed simulation10.5555/301429.301467(126-135)Online publication date: 1-May-1999
  • (1999)Efficient optimistic parallel simulations using reverse computationACM Transactions on Modeling and Computer Simulation10.1145/347823.3478289:3(224-253)Online publication date: 1-Jul-1999
  • (1999)Efficient optimistic parallel simulations using reverse computationProceedings Thirteenth Workshop on Parallel and Distributed Simulation. PADS 99. (Cat. No.PR00155)10.1109/PADS.1999.766169(126-135)Online publication date: 1999
  • (1998)Implementation and evaluation of a highly reliable server with QRMSystems and Computers in Japan10.1002/(SICI)1520-684X(199804)29:4<11::AID-SCJ2>3.0.CO;2-R29:4(11-21)Online publication date: Apr-1998
  • Show More Cited By

View Options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Get Access

Login options

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media