ABSTRACT

At a high level, the challenge of reversible computing may be stated as follows: Given a program, the program must be executed in such a way that its forward progress could be paused at any moment and the direction of its execution can be reversed to retrace its previous steps exactly. The backward execution can also be paused at any moment and the forward execution of the program can be resumed. This ability to pause the forward or backward execution at any point and the ability to switch the direction of execution is the generalized challenge of reversible computing. Specific variants and specializations of this general reversible computing problem arise in different contexts. Historically, low power computing has been a major motivating factor behind the development of reversible computing. Over time, additional areas have emerged in which reversible computing has found applications.