Accumulator

An accumulator is a combinational logic unit found in a computer's central processing unit (CPU). In the accumulator intermediate arithmetic and logic results are stored. It is a register.

Without a register like an accumulator, it would be necessary to write the result of each calculation (addition, multiplication, shift, etc.) to main memory, perhaps only to be read right back again for use in the next operation. That would be time consuming as access to main memory is slower than access to a register.

It is slower because the technology used for the large main memory is cheaper than that used for a register.

An example for accumulator use is adding up a list of numbers. The accumulator is initially set to zero, then each number in turn is read and added to the value in the accumulator. Only when all numbers have been added is the result held in the accumulator written to main memory or to another, non-accumulator, CPU register.

If we want the accumulator to add a value (Xi) 'n' times and give us the answer, the accumulator will have to start off with a zero value and then add a succession of X values until it has added 'n' of them.

    • each X value will be applied in succession (one per cycle)
    • after n cycles the sum of the X values will be present as S

In other words it will perform the following:

S=0;

for (1=0; i<n; i++)

S = S + Xi

The register within the accumulator system is present so that the transfer of data is transfered at each clock pulse, allowing time for the value of X to be sequentially read and added by the accumulator. If it was not included there would be a possibility of some of the data elements not being properly transferred.

Each step takes time to complete. If the values of X were read at a faster rate than S could be calculated, then some elements would be missed and the sum value would be incorrect.