Jump to content

Accumulator (computing)

From Wikipedia, the free encyclopedia
This is an old revision of this page, as edited by John1415A (talk | contribs) at 13:31, 3 October 2022 (Notable accumulator-based computers). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.
Walther WSR-16 mechanical calculator. The row of digit-wheels in the carriage (at the front), is the Accumulator.

In a computer's central processing unit (CPU), the accumulator is a register in which intermediate arithmetic logic unit results are stored.

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.

Access to main memory is slower than access to a register like an accumulator because the technology used for the large main memory is slower (but cheaper) than that used for a register. Early electronic computer systems were often split into two groups, those with accumulators and those without.

Modern computer systems often have multiple general-purpose registers that can operate as accumulators, and the term is no longer as common as it once was. However, to simplify their design, a number of special-purpose processors still use a single accumulator.

Basic concept

Mathematical operations often take place in a stepwise fashion, using the results from one operation as the input to the next. For instance, a manual calculation of a worker's weekly payroll might look something like:

Accumulators dramatically improve performance in systems like these by providing a scratchpad area where the results of one operation can be fed to the next one for little or no performance penalty. In the example above, the basic weekly pay would be calculated and placed in the accumulator, which could then immediately be used by the income tax calculation. This removes one save and one read operation from the sequence, operations that generally took tens to hundreds of times as long as the multiplication itself.

Accumulator machines

History of the computer accumulator

Any system that uses a single "memory" to store the result of multiple operations can be considered an accumulator. J. Presper Eckert refers to even the earliest adding machines of Gottfried Leibniz and Blaise Pascal as accumulator-based systems.[1] Percy Ludgate was the first to conceive a multiplier-accumulator (MAC) in his Analytical Machine of 1909.[2]

Historical convention dedicates a register to "the accumulator", an "arithmetic organ" that literally accumulates its number during a sequence of arithmetic operations:

"The first part of our arithmetic organ ... should be a parallel storage organ which can receive a number and add it to the one already in it, which is also able to clear its contents and which can store what it contains. We will call such an organ an Accumulator. It is quite conventional in principle in past and present computing machines of the most varied types, e.g. desk multipliers, standard IBM counters, more modern relay machines, the ENIAC" (Goldstine and von Neumann, 1946; p. 98 in Bell and Newell 1971).

Just a few of the instructions are, for example (with some modern interpretation):

  • Clear accumulator and add number from memory location X
  • Clear accumulator and subtract number from memory location X
  • Add number copied from memory location X to the contents of the accumulator
  • Subtract number copied from memory location X from the contents of the accumulator
  • Clear accumulator and shift contents of register into accumulator

No convention exists regarding the names for operations from registers to accumulator and from accumulator to registers. Tradition (e.g. Donald Knuth's (1973) hypothetical MIX computer), for example, uses two instructions called load accumulator from register/memory (e.g. "LDA r") and store accumulator to register/memory (e.g. "STA r"). Knuth's model has many other instructions as well.

§§§§§§§§§§§§§§§§§§§§§§§§== Notable accumulator-based computers ==

Front panel of an IBM 701 computer with lights displaying the accumulator and other registers

The 1945 configuration of ENIAC had 20 accumulators, which could operate in parallel.[3]: 46  Each one could store an eight decimal digit number and add to it (or subtract from it) a number it received.[3]: 33  Most of IBM's early binary "scientific" computers, beginning with the vacuum tube IBM 701 in 1952, used a single 36-bit accumulator, along with a separate multiplier/quotient register to handle operations with longer results. The IBM 650, a decimal machine, had one 10 digit distributor and two ten-digit accumulators; the IBM 7070, a later, transistorized decimal machine had three accumulators. The IBM System/360, and Digital Equipment Corporation's PDP-6, had 16 general purpose registers, although the PDP-6 and its successor, the PDP-10, call them accumulators.

The 12-bit PDP-8 was one of the first minicomputers to use accumulators, and inspired many later machines.[4] The PDP-8 had but one accumulator. The HP 2100 and Data General Nova had 2 and 4 accumulators. The Nova was created when this follow-on to the PDP-8 was rejected in favor of what would become the PDP-11. The Nova provided four accumulators, AC0-AC3, although AC2 and AC3 could also be used to provide offset addresses, tending towards more generality of usage for the registers. The PDP-11 had 8 general purpose registers, along the lines of the System/360 and PDP-10; most later CISC and RISC machines provided multiple general purpose registers.

Early 4-bit and 8-bit microprocessors such as the 4004, 8008 and numerous others, typically had single accumulators. The 8051 microcontroller has two, a primary accumulator and a secondary accumulator, where the second is used by instructions only when multiplying (MUL AB) or dividing (DIV AB); the former splits the 16-bit result between the two 8-bit accumulators, whereas the latter stores the quotient on the primary accumulator A and the remainder in the secondary accumulator B. As a direct descendant of thaccumulator EAX and the secondary accumulator EDX for multiplication and division of large numbers. For instance, MUL ECX will multiply the 32-bit registers ECX and EAX and split the 64-bit result between EAX and EDX. However, MUL and DIV are special cases; other arithmetic-logical instructions (ADD, SUB, CMP, AND, OR, XOR, TEST) may specify any of the eight registers EAX, ECX, EDX, EBX, ESP, EBP, ESI, EDI as the accumulator (i.e. left operand and destination). This is also supported for multiply if the upper half of the result is not required. x86 is thus a fairly general register architecture, despite being based on an accumulator model.[5] The 64-bit extension of x86, x86-64, has been further generalized to 16 instead of 8 general registers.

References

  1. ^ J. Presper Eckert, "A Survey of Digital Computer Memory Systems", IEEE Annals of the History of Computing, 1988, pp. 15-28.
  2. ^ "The Feasibility of Ludgate's Analytical Machine".
  3. ^ a b Haigh, Thomas; Priestley, Mark; Ropefir, Crispin (2016). ENIAC in Action: Making and Remaking the Modern Computer. MIT Press. ISBN 9780262334419.
  4. ^ Programmed Data Processor-1 Manual (PDF), Maynard, Massachusetts: Digital Equipment Corporation, 1961, p. 7: PDP-1 system block diagram, retrieved 2014-07-03
  5. ^ Irvine, Kip R. (2007). Assembly Language for Intel-Based Computers (5th ed.). Pearson Prentice Hall. pp. 633, 622. ISBN 978-0-13-238310-3.
  • Goldstine, Herman H., and von Neumann, John, "Planning and Coding of the Problems for an Electronic Computing Instrument", Rep. 1947, Institute for Advanced Study, Princeton. Reprinted on pp. 92–119 in Bell, C. Gordon and Newell, Allen (1971), Computer Structures: Readings and Examples, McGraw-Hill Book Company, New York. ISBN 0-07-004357-4}. A veritable treasure-trove of detailed descriptions of ancient machines including photos.