# Inaccurate Computing

Seeing that this is the first time that I got a special request for a blog entry, I thought I’d write about it. My friend pointed me towards this new microprocessor design that claims to be faster, cheaper and more efficient than today’s computers at certain kinds of tasks. This is wonderful news.

But first, some background.

Since the dawn of computation, we have always had to trade off speed and accuracy. This is simply a limitation of the finite number of bits used in computation. With only a limited number of bits, values have to be rounded off at some point. Also, if the number is too big or small for the number of bits used to store it, the number is typically truncated.

As for these bits, their 0 or 1 state is represented by a specific voltage level on a transistor. In the past, with 5V devices, the levels were set at 0 (0-0.7V) and 1 (4.3-5.0V). But with the low 1V used in devices today, the margin for error is reduced drastically. Therefore, it becomes troublesome to make consistently accurate devices. Lots of microprocessors get binned when they fail to produce accurate results.

However, there has also been some research into using these ‘faulty’ devices for computation in applications where accuracy is not paramount. An example is a JPEG image that can contain 16 million colours. However, these images are typically displayed on monitors with only 256 thousand colours. So, some loss of accuracy is certainly acceptable.

Now, I tried to look up some original papers on this particular technology by this particular group of people. However, these papers did not reveal the technology specifics. The best that I can do is guess at the kind of work that they’re doing.

By reducing the voltage of the processor, the power will be reduced by a square factor (halving the voltage will quarter the power). However, the problem is that the noise margin becomes significant and the ability to discern a 0 from a 1 on a transistor deteriorates. These processors will still produce correct results, but not all the time, that’s all.

By increasing the switching frequency of the processor, the power consumption will increase linearly (doubling the frequency doubles the power). However, there is also a maximum speed at which a transistor can switch voltage levels. Therefore, by lowering the voltage, we can technically switch the transistors sooner, hence faster.

However, if a way is found to tolerate these inaccuracies, we would be able to run processors at a faster switching speed and lower voltage.

One way of doing this is through the use of redundancy. This particular article does not make clear of whether this is the method chosen. However, it maybe something similar. If we built three adders instead of one, and chose the correct result based on the majority vote of these adders, we would be able to tolerate the inaccuracies in each individual adder, while still getting meaningful results at the end.

Although using three address triples the size of the chip (which triples the power consumption and cost), this can be traded off. Power consumption is still a win as any reduction is a square factor while any increase is linear. Cost can be reduced by using an older and cheaper manufacturing process. The point is that these factors can be traded off.

So, that’s my read of the technology (my limited read of it anyway).