Part 3: The Processor

A project log for ALUMinimum

Learn deep logic optimization by implementing the fastest ALU West of the Pecos River, using no specialized arithmetic chip

Squonk42Squonk42 05/01/2017 at 16:220 Comments

The Universal Turing Machine is a great and simple abstract structure, but is not really efficient to build a physical stored-program computer. The theoretical infinite tape model is not possible to implement in practice, and anyway, having a tape running back and forth is far from optimal for a physical storage medium.

But the Turing machine was an abstract machine invented before the physical computer existed, and was intended to represent a virtual person executing a well known procedure, not as a physical implementation model.

Clearly, the biggest challenge of the early computers was the memory capacity, and although Babbage's Analytical Engine was designed around 1835 to hold 1,000 numbers of 40 decimal digits each in a set of mechanical wheels, and flip-flops made up of purely electronic vacuum tubes were discovered back in 1920, tapes and punched cards were at that time (end of WWII) among the storage media with the best information density.

Flip-flops on the other hand required to use 2 triodes to store a single binary digit, making them unpractical except for small amounts of storage, such as intermediate results, in what we would called today registers.

In the "First Draft of a Report on the EDVAC" and attributed to Von Neumann was the first description of possible solutions to get a larger storage capacity using acoustic mercury delay line memories that were able to store 1,000 binary digits, and video camera tubes called iconoscopes, able to store up to an estimated 250,000 binary digits. At the same time, this paper introduced the concept of Random-Access Memory (RAM) for the first time. The first stored-program computer, the Manchester Baby, used a variant of the iconoscope, the Williams tube, to store 2,048 binary digits in a 64 x 32 array.

This increase in storage memory capacities led to a clearer subdivision of the computer system as a whole. In the "First Draft of a Report on the EDVAC", Von Neumann distinguished:

  1. A Central Arithmetical part (CA)
  2. A Central Control (CC)
  3. Memory (M)
  4. An outside Recording medium (R)
  5. An Input (I)
  6. An Output (O)

With (C) defined as being CA and CC (i.e. the Central Arithmetical and Central Control parts) put together.

In "Proposal for Development in the Mathematics Division of an Automatic Computing Engine (ACE)", Turing details:

  1. A Dynamic Storage (DS)
  2. Temporary Storage (TS)
  3. An Input Organ (IO)
  4. An Output Organ (OO)
  5. A Logical Control (LC)
  6. A Central Arithmetic part (CA)
  7. Various 'trees" required in connection with LC and CA for the selection of the information required at any moment
  8. A Clock (CL)
  9. A Temperature control system for the delay lines
  10. Binary to decimal and decimal to binary converters
  11. A Starting device
  12. A power supply

And although the Temporary Storage could be seen today as equivalent to RISC processor register banks, the explicit notion of processor is not clearly stated in his paper. But Turing himself admitted in 1947 that "[digital computing] Machines such as the ACE may be regarded as practical versions of this same type of [universal] machines. There is at least a very close analogy. Digital computing machines all have a central mechanism or control and some very extensive form of memory".

Since then, the vast majority of modern computer feature a Central Processing Unit or CPU, also simply called processor, composed of a control unit and an arithmetic unit.