Content area
Full text
Abstract - Much of today's research in computing is focused on finding ways to save time and power, and consequently help reduce the overall cost of running an application. Because hardware consists of physical structures wired together, the outputs of hardware will always hold a value, whether the module s execution is complete or not. We call these intermediate values, values at the output of hardware at times before maximum execution time. Monitoring the intermediate values can allow us to stop a process early while still getting the results we want, especially if our answer is acceptable within a certain confidence level. We would like to know if different algorithms for the same process can produce more useful intermediate values, or intermediate values which take less time to become more accurate. In this paper, we will be analyzing the intermediate values generated by several different configurations of adders.
Keywords - Approximate computing, intermediate values, digital systems; hardware modules; reliability.
I.Background
It has been suggested that intermediate values can be used to increase efficiency in a wide range of applications, from increasing speed and reliability of calculations, to saving time and power when downloading a file from the internet [1]. The degree to which intermediate values can be utilized is largely dependent on the application, as some accuracy may be sacrificed to save time. In [2], it was proposed that some errors be purposely introduced into systems to decrease execution time or power usage.
In [1] it was shown that the outputs of a 4-bit ripple-carry adder could be monitored over time to determine the adder's probability of correctness if execution were stopped early. The aim of this paper is to build upon that work and compare four different adder designs to see if the intermediate values are more useful in one configuration than another. There are multiple ways to characterize "useful" intermediate values, as we will discuss in Section II.
It is important to note that a design with more useful intermediate values will not necessarily have the fastest execution time, even if it is decided that the output can be taken early with a reasonable confidence in its correctness. Rather, the goal of investigating the behavior of the intermediate values is to see...




