Email or username:

Password:

Forgot your password?
Devil Lu Linvega

Yesterday, @wim_v12e introduced me to something that blew my mind, and I'd like to tell you about it.

Reversible computing is a model of computation in which time is reversible.

The first condition is that an input and output be uniquely retrievable from each other. Microprocessors which are reversible at the logic gates level can potentially emit less heat than irreversible processors, and someday that may become more economical than irreversible processors.

wiki.xxiivv.com/site/reversibl

10 comments
Devil Lu Linvega

The promise of reversible computing is that the amount of heat loss for reversible architectures would be minimal for significantly large numbers of transistors. Rather than creating entropy (and thus heat) through destructive operations, a reversible architecture conserves the energy by performing other operations that preserve the system state.

An erasure of information in a closed system is always accompanied by an increase in energy consumption.

Devil Lu Linvega

So of course, first thing I wanted to know is how much entropy is lost in Uxn programs.

Uxn isn't a reversible environment, but it does make it easy to see what the information loss is due to a quirk of its design

Here's all the irretrievable data that is lost during each cycle of the "hello world" program.

Devil Lu Linvega

So my idea now is, is there a way to reduce this loss of entropy somewhat. A run of the standard hello world losses 124 bytes of information that are needed to be reversible.

The simple option would be to have a 3rd stack where I stash all this wasted information, but first I think it might be possible to write reversible programs by-design.

Let's see what we can find

WimⓂ️

@neauoire Wow, you move fast ^_^
I am way behind in the replies, I will get back to it when I have more time.
I wonder if it is enough to keep track of the "wasted information" to reverse any computation. In principle that is the case: the idea is that a reversible computation simply performs permutations on the bits.

WimⓂ️

@neauoire In practice, it is not so clear to me, I guess it depends on the definition of "wasted information".
What is also tricky is what happens with recursion, i.e. what is the minimal information required to reverse a recursive computation.

jakintosh

@neauoire (i had finally felt like i hit my “local bottom” for expanding my understanding of computation when i hit transistors and CPU architecture, but now…)

Devil Lu Linvega

@jakintosh I'm sorry/you're welcome. But, I blame Wim here. I just wanted to know how why I couldn't divide by zero, and now here we are.

bx

@neauoire iirc gur pendulum cpu's paper actually describes a "garbage stack" which is pushed to for otherwise dustructive operations and has data pulled back off of it when its being reversed. there's also sets of exchanging operations instead of moving ones, if you have loads and stores happen in pairs so that they balence out you might be able to get a similar benefit

Devil Lu Linvega

@bx yeah, and uxn has the advantage of the keep mode which is non destructive. More more than that, I can probably unliteralize directly from the graveyard if I know the exact value, but in the case of itteration loops, the iterator and boundary are the same value, so that's an enthropy-free operation if I release it after the loop.

Go Up