I/O Balance

(Thats Input/Output balance for the non-technical. Incidentally, the first few paragraphs of this is going to get kind of technical.)

As I’ve been catching up on my magazines lately, I’ve run across reversible computing. One way of putting the idea is that if you do twice the work, you can use vastly less energy. Makes all kinds of sense, right? ;^) You have to be careful of your definition of work. As I’m using it above, I’m referring to computation – information processing, or running data through various processes. Some processes in our current, non-reversible, computing, are fairly conservative. A ‘not’ gate for instance, takes one input, and produces one output. Other very common types of gates, such as ‘and’ or ‘or’ are not conservative. They take two inputs, and produce only one output – information is destroyed. It isn’t really destroyed of course – the energy must in some way be conserved. So it gets converted into heat. Hear that fan whirring in computer? That’s to get rid of heat. Heat has essentially become the limiting factor in design of integrated circuits. So anything that gets rid of heat is good, right?

Enter reversible computing. If you design a gate with as many outputs as it has inputs, you don’t need to destroy (convert to heat) information. But you have to actually use all that information to avoid destroying it. The easiest way to do that is to reverse the computation – since no information was destroyed, you can do that. Of course, if you undo all your work, you haven’t done anything. The idea, as I understand it, is to do a computation, generate a little bit of heat saving the result, and then reverse the bulk of the computation.

The point of all this, for my discussion here, is the idea of I/O balance. In the current generation of computers, there is an I/O imbalance – two inputs go in, one output (and some heat) come out. There is an inefficiency. The input and output are out of balance.

In many of the microprocessors that I work with, there are pins that can be configured to have different functions. You might use one for an analog-digital converter, another to get an interrupt, and so on. But ultimately, the pins are used either as input (to get data), output (to send data/control things), or sometimes switched back and forth between the two.

The reversible computing idea got me thinking that a microprocessor as a whole will be most efficient when the input and output are in balance. If the input exceeds the output, information is destroyed. If the output exceeds the input, then that output is likely either redundant or random. The maximum value will be achieved when a certain amount of input comes in, gets processed in some useful way, and an equal amount of output results.

This makes an interesting metaphor for my life. I’ve got too much input and not enough output. I’m spending time just about every day filtering out spam so I can get to plowing through e-mail lists. If I have time, I switch over to LiveJournal, where I go through a page or two posts. Sometimes these point me off to some news story, or a programming language paper to read. It often feels like I’m trying to swim upstream against a deluge of information.

To follow the I/O metaphor, we might conclude that if input exceeds output, information is being destroyed, and it certainly isn’t being efficiently processed. This isn’t so much generating heat, as a kind of angst and general life dissatisfaction.

This isn’t an entirely new idea – there is the P/PC balance, a side point from The Seven Habits of Highly Effective People. That is, Production/Production Capacity. Production easily equates to output, and input, learning, is a kind of production capacity. The same principle applies – too much production, and you are not growing, and may get caught if conditions change. Too much capacity, and you aren’t actually producing anything. The goal is a healthy balance.

Posted Tuesday, February 3rd, 2004 under Essay.

Comments are closed.