Accumulators and Registers - Part 2
Having learned a bit more about the distinction between these items, I am recording it, and linking to the book I learned this from.
Accumulators vs. Registers
As I mentioned before in the first part, I really don’t understand why we use “register” and “accumulator” for what – on modern computers – is the same thing. I had some guesses, but no real evidence or papers which explained it. Until I found this book.
Automatic Digital Computers
This book was written in 1956. For reference, the ENIAC started operation in 1945, and continued in use until 1955. The Univac I, designed by the same team which worked on ENIAC, was operational in 1951. The state of the art was still vacuum tubes (over 6,000 on the Univac I), and memory was serial, using mercury delay lines. Numbers were implemented as Binary Coded Decimal. Hexadecimal wasn’t really standard until 1966. Around 1962, octal (base-8) replaced decimal in computers. So we’ve smoothed out some of ENIAC’s rough edges, but the technology hadn’t really improved that much.
One person who had a big impact on computing’s early years was Maurice V. Wilkes. In 1951, he wrote a paper recommending that computers be built using “microcode”, a word he invented for what is now the way all computers are implemented. He worked on the first British computers, so he had hands-on experience with the hardware and software. He also traveled to the USA to attend the famous Moore School Lectures. So he’s the perfect person to write about this period. And he did.
“Automatic Digtal Computers” is a very complete description of the history and state of computing at the time (around 1955). The “automatic” is important, because the previous state of the art was hand-computing, assisted by mechanical adding machines. “Digital” is important, because previous electrical calculators were analog, with 10 voltage levels representing the digits 0-9.
The book covers the history and development of these computers, their logical design, and how programs are designed. There are chapters on relay-base computers, and the options for storage. Then he rounds the book out with details on the switching and computing circuits, plus how such machines are operated to maximize productive use. A nice appendix addresses the ideas then floating around that these machines might become intelligent. (You might be surprised that “artificial intelligence” has been a topic of interest since the 1940’s.)
Early use of Register vs. Accumulator
Wilkes starts with Babbage and both of his machines, the Difference Engine and the Analytical Engine. The Analytical Engine shows some modern ideas; he separated the machine into a “store” for data, a “mill” for actual computation, and a “printer” for results. He was keen on the printing because various mathematical and navigation tables of the time had many errors from transcription and hand-calculation. His thought was that if the machine printed them, it would eliminate that whole class of errors. But you’ll note this architecture is not far off the Von-Neumann Architecture still taught today.
The part which caught my attention was in his description of the IBM relay calculator, the ASCC. He writes:
As in Babbage’s Analytical Engine, numbers are stored in registers composed of wheels, each wheel capable of taking up ten distinct positions; a difference, however, is that each register in the store is fitted with tens-transmission and is, therefore, a complete adding machine. It is convenient to refer to such a register as an accumulator register, or simply as an accumulator. A number standing in one accumulator can be passed to another accumulator and added to the number therein without passing through an arithmetic unit. A separate unit for multiplication and division is, however, provided. The accumulators are all fitted with an anticipatory carry system similar in principle to that devised by Babbage.
So, in simple terms, a “register” stored a number. To add two numbers, the arithmetic unit has to read from both, create the sum, then store that sum into another register, or perhaps print it directly. On the other hand, and “accumulator” has the necessary hardware to directly add an external number to its current value. This hardware is the “tens-transmission”, meaning the ability to carry a result over to the next wheel (remember these machines operated on decimal numbers, not binary, so the “ten” means a digit has increased past 9.) I’ll skip over the “anticipatory carry”, since I don’t quite understand that myself yet, and because it’s sufficient to say that an accumulator knows how to handle a carry.
Just the Beginning
I got all this from page 17 of Wilkes’ book. This may very well be the book I was looking for when this project started. I have 300 more pages to go, and a LOT of references to check (the book has an amazing bibliography.) So who knows what else I’ll find in just a few more pages.