page_title: Accumulator (computing)
section_title: Notable accumulator-based computers
hierarchical_section_title: Accumulator (computing) / Notable accumulator-based computers
caption_attribution_description: IBM 701 operator's console. The 701 was introduced in 1952. [1]
context_page_description: In a computer's central processing unit, the accumulator is a register in which intermediate arithmetic and logic results are stored.
  Without a register like an accumulator, it would be necessary to write the result of each calculation 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 the accumulator because the technology used for the large main memory is slower 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 operate as accumulators, and the term is no longer as common as it once was. However, a number of special-purpose processors still use a single accumulator for their work to simplify their design.
context_section_description: The 1945 configuration of ENIAC had 20 accumulators, which could operate in parallel.  Each one could store an eight decimal digit number and add to it (or subtract from it) a number it received. 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. 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 the 8008, the 8080, and the 8086, the modern ubiquitous Intel x86 processors still uses the primary accumulator 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.  The 64-bit extension of x86, x86-64, has been further generalized to 16 instead of 8 general registers.
caption: Front panel of an IBM 701 computer with lights displaying the accumulator and other registers
exif: {"Image Make": "Apple", "Image Model": "iPhone", "Image Orientation": "Horizontal (normal)", "Image XResolution": "72", "Image YResolution": "72", "Image ResolutionUnit": "Pixels/Inch", "Image Software": "QuickTime 7.6", "Image DateTime": "2009:04:11 16:41:46", "Image HostComputer": "Mac OS X 10.5.6", "Image YCbCrPositioning": "Centered", "Image ExifOffset": "250", "GPS GPSLatitudeRef": "N", "GPS GPSLatitude": "[41, 1907/100, 0]", "GPS GPSLongitudeRef": "W", "GPS GPSLongitude": "[73, 1033/25, 0]", "Image GPSInfo": "364", "Thumbnail Compression": "JPEG (old-style)", "Thumbnail XResolution": "72", "Thumbnail YResolution": "72", "Thumbnail ResolutionUnit": "Pixels/Inch", "Thumbnail JPEGInterchangeFormat": "572", "Thumbnail JPEGInterchangeFormatLength": "5001", "Thumbnail YCbCrPositioning": "Centered", "EXIF FNumber": "14/5", "EXIF ExifVersion": "0220", "EXIF DateTimeOriginal": "2009:04:07 18:02:57", "EXIF DateTimeDigitized": "2009:04:07 18:02:57", "EXIF ColorSpace": "sRGB"}