Main Frames
Home Up Ethics Pradigms Resources Architecture

 

Relays have moving parts and can’t operate at very high speeds. Consequently, the electromechanical computers of Zuse and Aiken had no long-term future. It took the invention of the vacuum tube by Fleming and De Lee (called the thermionic valve in England) to make possible the design of high-speed electronic computers. A vacuum tube transmits a beam of negatively charged electrons from a heated cathode to a positively-charge anode in a glass tube. The cathode is in the center of the tube and the anode is a concentric metal cylinder surrounding the cathode. Between the cathode and anode lies another concentric cylinder, called the grid, composed of a fine wire mesh. The voltage on the wire grid between the cathode and the anode controls the intensity of the electron beam from the cathode. You can regard the vacuum tube as a type of ultra high-speed version of the relay—by applying a small voltage to the grid, you can switch on or off the much larger current flowing between the cathode and anode.

 Although vacuum tubes were originally developed for radios and audio amplifiers, they were used in other applications. In the 1930s and 40s physicists required high-speed circuits such as pulse counters and ring counters in order to investigate cosmic rays. These circuits were later adapted to use in computers.

John V. Atanasoff is now credited with the partial construction of the first completely electronic computer. Atanasoff worked with Clifford Berry at Iowa State College on their computer from 1937 to 1942. Their machine which used a 50-bit binary representation of numbers with plus a sign bit was called the ABC (Atanasoff-Berry Computer). The ABC was designed to perform a specific task (i.e., the solution of linear equations) and wasn’t a general-purpose computer. Both Atanasoff and Berry had to abandon their computer when they were assigned to other duties because of the war.

 Although John W. Mauchly’s ENIAC (to be described next) was originally granted a patent, in 1973 US Federal Judge Earl R. Larson declared the ENIAC patent invalid and named Atanasoff the inventor of the electronic digital computer. Atanasoff argued that Mauchly had visited him in Aimes in 1940 and that he had shown Mauchly his machine and had let Mauchly read his 35-page manuscript on the ABC computer. Judge Larson found that Mauchly's ideas were "derived from Atanasoff, and the invention claimed in ENIAC was derived from Atanasoff." He declared: "Eckert and Mauchly did not themselves first invent the automatic electronic digital computer, but instead derived that subject matter from one Dr. John Vincent Atanasoff."

ENIAC 

The first electronic general-purpose digital computer was John W. Mauchly’s ENIAC, Electronic Numerical Integrator and Calculator, completed in 1945 at the University of Pennsylvania Moore School of Engineering. ENIAC was intended for use at the Army Ordnance Department to create firing tables (i.e., tables that relate the range of a field gun to its angle of elevation, wind conditions, shell and charge parameters, etc.). For many years, ENIAC was regarded as the first electronic computer, although, as we have just seen, credit was later given to Atanasoff and Berry because Mauchly had visited Atanasoff and read his report on the ABC machine. Defenders of the ENIAC point out that it was a general-purpose computer, whereas the ABC was constructed only to solve linear equations. 

The ENIAC used 17,480 vacuum tubes and weighed about 30 tons. ENICA was a decimal machine capable of storing twenty 10-digit decimal numbers. Digits were stored in ring counters that operated rather like the cogwheels of mechanical calculators. A ring counter used the encoding 

Number      Count

0                1000000000
1                0100000000
2                0010000000
3                0001000000
4                0000100000
5                0000010000
6                0000001000
7                0000000100
8                0000000010
9                0000000001

IBM card readers and punches implemented input and output operations. Many of the fundamental elements of digital design (e.g., timing circuits, logic circuits and control circuits) that are now so commonplace were first implemented with the construction of ENIAC. Because ENIAC had 20 independent adding circuits, all running in parallel, the ENIAC could also be called a parallel processor. 

Goldstine's report on the ENIAC, published in 1946, refers to one of the features found in most first-generation microprocessors – the accumulator [Goldstine96]. Goldstine states that the accumulator "receives a number and adds it to a number stored in the accumulator or transmits the number or the negative of the number stored in it r times in succession (where 1 £ r £ 9)". Another interesting feature of ENIAC was its debugging mechanism. In normal operation, ENIAC operated with a clock at 100,000 pulses per second (i.e., 100 kHz). However, it was possible for the operator to force ENIAC into a "one addition time" operation that executed a single addition or into a "one pulse time" operation that executed a single cycle each time a button was pushed. The state of the machine was visible from neon lamps on the front of the machine (one neon per flip-flop). 

ENIAC was programmed by means of a plug board that looked like an old pre-automatic telephone switchboard; that is, a program was set up manually by means of wires. In addition to these wires, the ENIAC operator had to manually set up to 6,000 mutiposition mechanical switches. Programming ENIAC was very time consuming and tedious. 

Like the Harvard Mark I and Atanasoff’s computer, ENIAC did not support dynamic conditional operations (e.g., IF...THEN or REPEAT…UNTIL). An operation could be repeated a fixed number of times by hard wiring the loop counter to an appropriate value [Marcus96]. Since the ability to make a decision depending on the value of a data element is vital to the operation of all computers, the ENIAC was not a computer in today's sense of the word. It was an electronic calculator (as was the ABC machine). 

Eckert and Mauchly left the Moore School and established the first computer company, the Electronic Control Corporation. They planned to build the Universal Automatic Computer (UNIVAC) but were taken over by Remington-Rand before the UNIVAC was completed. Later, UNIVAC was to become the first commercially successful US computer. The first UNIVAC I was installed at the US Census Bureau where it replaced earlier IBM equipment.

 

According to Grier, Mauchly was the first to introduce the term "to program" in his 1942 paper on electronic computing [Grier96]. However, Mauchly used "programming" to mean the setting up a computer by means of plugs, switches and wires, rather than in the modern sense. The modern use of the word program first appeared in 1946 when a series of lectures on digital computers were given at a summer class in the Moore School. 

John von Neumann and EDVAC

As we’ve said, a lot of work was carried out on the design of electronic computers from the early 1940s onward and many engineers and mathematicians made significant advances. Of these mathematicians, one name stands out—John von Neumann who worked on the ENIAC at Princeton University. Before von Neumann, computer programs were stored either mechanically (on cards or even by wires that connected a matrix of points together in a special pattern like ENIAC) or in separate memories from the data used by the program. Von Neumann introduced the concept of the stored program—an idea so commonplace today that we take it for granted. In a stored program (or von Neumann) machine, both the program that specifies what operations are to be carried out and the data used by the program are stored in the same memory. You could say that the stored program computer consists of a memory containing instructions coded in binary form. The control part of the computer reads an instruction from memory, carries it out, and then reads the next instruction, and so on. 

The first US computer to use the stored program concept was the EDVAC (Electronic Discrete Variable Automatic Computer). The story of the EDVAC is rather complicated because there were three EDVACs – the EDVAC that von Neumann planned, the EDVAC that the original EDVAC team planned, and the EDVAC that was eventually constructed.

 The EDVAC was designed by some of the same team that designed the ENIAC at the Moore School of Engineering at the University of Pennsylvania. By July 1949 Eckert and Mauchly appreciated that one of the limitations of the ENIAC was the way in which it was set up to solve a problem. Along with von Neumann, they realized that operating instructions should be stored in the same memory device as the data. 

When John von Neumann became acquainted with the ENIAC project, it was too late for him to get involved with its design. He was, however, able to participate in the EDVAC’s design. He wrote a document entitled "First Draft of a Report on the EDVAC" that compiled the results of various design meetings. Although only von Neumann's name appears on this document, other members of the Moore School contributed to the report. Indeed, Williams writes that this document annoyed some members of the design team so much that they left the Moore School and further development of the EDVAC was delayed. 

The EDVAC described in von Neumann's unpublished report was a binary machine with a 32-bit wordlength. Numbers were represented in a 31-bit signed 2's complement format and the rightmost bit was reserved as a tag to indicate a numeric or a non-numeric value. The EDVAC that was constructed was a 44-bit machine that didn’t use a tag bit to indicate data type. There are many other differences between the von Neumann and Moore School EDVACs; for example, the von Neumann version had 3 registers and instructions were executed sequentially by using a program counter to sequence them. The Moore School machine had four registers and an instruction included a next address field (i.e., every instruction was a branch instruction). Since the memory space was 1024 words, the instruction format called for 4 x 10-bit addresses which left four bits to specify one of 16 op-codes. 

Although EDVAC is generally regarded as the first stored program computer, Randell states that this is not strictly true [Randell94]. EDVAC did indeed store data and instructions in the same memory, but data and instructions did not have a common format and were not interchangeable.

 

EDVAC also helped to promote the design of memory systems. The capacity of EDVAC's mercury delay line memory was 1024 words of 44 bits [Williams93]. A mercury delay line operates by converting serial data into pulses that are fed to an ultrasonic transducer at one end of a column of mercury in a tube. These pulses travel down the tube in the form of ultrasonic acoustic vibrations in the mercury. A microphone at the other end of the delay line picks up the pulses and they are regenerated into digital form. Finally, the pulses are fed back to the transducer and sent down the delay line again. This type of memory stores data as pulses traveling through the mercury and is no longer used. EDVAC's memory was organized as 128 individual 8-word delay lines. 

Because data in a delay line memory is stored in this dynamic or sequential mode, the time taken to access an instruction depends on where it is in the sequence of pulses. The delay lines were 58 cm long with an end-to-end delay of 384 ms. At a pulse repetition frequency of 1 MHz, each pulse had a duration of 0.3 ms; that is, eight 44-bit words plus eight 4-bit interword gaps occupied 384 ms. The EDVAC had the 4-address instruction format 

operation source1,source2,destination,next_address 

This instruction specified the action to be carried out, the address of the two source operands, the location where the result is to be deposited (i.e., destination), and the location of the next instruction to be executed. 

The programmer would write code in such a way that the next instruction was just about to be available from the delay line. Such code optimization techniques are not far removed from those used on modern RISC processors to minimize the effects of data dependency and branches. 

Another interesting aspect of EDVAC was the use of test routines to check its hardware; for example the "Leap Frog Test" executed a routine that included all its instructions, and then moved itself one location on in memory before repeating the test. EDVAC also implemented a register that kept a copy of the last instruction executed and its address. The operator could access this register to aid debugging when the machine crashed. Yes, the Windows "unrecoverable applications error" has a very long history. 

Sadly, EDVAC was not a great success in practical terms. Its construction was largely completed by April 1949, but it didn’t run its first applications program until October 1951. Moreover, EDVAC was not very reliable and suffered a lot of down time [Williams93]. 

Because of its adoption of the stored program concept, EDVAC became a topic in the first lecture course given on computers. These lectures took place before the EDVAC was actually constructed. 

IAS

An important early computer was the IAS constructed by von Neumann and his colleagues at the Institute for Advanced Studies in Princeton. This project began in 1947 and is significant because the IAS is remarkably similar to modern computers. The IAS supported a 40-bit word that represented data in a sign and magnitude fixed-point format. The same wordlength was used to store two packed 20-bit instructions. Main memory was 1K words and a magnetic drum was used to provide 16K words of secondary storage. The magnetic drum was the forerunner of today’s disk drive. Instead of recording data on the flat platter found in a hard drive, data was stored on the surface of a rotating drum. 

The IAS’s 20-bit instructions consisted of a one-address instruction of the format with an 8-bit op-code and a 12-bit address of the form

operation address

 where the operation takes place between the contents of the specified memory location and the accumulator. This format is, of course, identical to that of first generation 8-bit microprocessors. A very significant feature of the IAS was its address modify instructions that enable you to compute at 12-bit address and then insert it into the program as an operand. This feature enables you to perform indexed addressing and is required to access complex data structures such as lists, tables, and arrays. Modern architectures provide an address register or index register to provide variable operand addresses – modifying operands in memory the way the IAS did (self-modifying code) is regarded as bad practice because it is error prone and makes program debugging difficult. 

In the late 1940s the Whirlwind computer was produced at MIT for the US Air Force. This was the first computer intended for real-time information processing. However, its real significance was that it employed ferrite-core memory (the standard form of mainframe memory until the semiconductor integrated circuit came along in the late 1960s). An Wang at Harvard University patented ferrite core memory in 1949. A ferrite core is a tiny bead of a magnetic martial that can be magnetized clockwise or counterclockwise to store a one or a zero. Ferrite core memory is no longer widely used today, although the term remains in expressions such as “core dump” which means a printout of the contents of a region of memory. 

Computers at Manchester and Cambridge Universities

One of the most important centers of early computer development in the 1940s was Manchester University in England [Croarken93]. F. C. Williams, one of the team of academics working at Manchester in the late 40s, invented a new means of data storage using the cathode ray tube, CRT, to store binary data (2,048 bits in 1947). In 1948 T. Kilburn turned the William's memory into a prototype computer called the Manchester Baby with 32 words of 32 bits. This was a demonstration machine that tested the concept of the stored program computer and the Williams CRT store. CRTs were also used to implement the accumulator and logical control. Input was read directly from switches and output had to be read from the William's tube. The first program to run on the machine was designed to find the highest factor of an integer. Some regard the Manchester Baby as the world's first stored-program computer. A Manchester based firm, Ferranti Ltd., worked with Manchester University to construct Manchester University's first practical computer, the Ferranti Mark I. 

Maurice V. Wilkes at the University of Cambridge built another early British computer called EDSAC (Electronic Delay Storage Automatic Calculator). EDSAC, which became operational in May 1949, used paper tape input, binary numbers, mercury delay line storage. Like the IAS, EDSAC allowed you to modify instructions in order to implement indexed addressing. 

People sometimes make startlingly incorrect prophecies; for example, the British Astronomer Royal said, "Space travel is bunk" just before the USSR launched its first sputnik. Similarly, not everyone immediately appreciated the potential of the computer and Professor Hartree at Cambridge University said, "We have a computer in Cambridge, there is one in Manchester and at the NPL. I suppose that there ought to be one in Scotland, but that's about all. 

Cooperation between Ferranti and Manchester University led to the development of the Ferranti Mercury that pioneered the use of floating-point arithmetic and replaced the Williams CRT by ferrite core memory. In true British tradition, the Ferranti computers had considerable technical merit but lacked many important commercial features required for their economic success – such as a punched card reader.  

Ferranti went on to develop their Atlas computer with Manchester University (and with relatively little funding). When it was completed in 1962, it was the world's most powerful computer. It had 128 24-bit general-purpose registers and it implemented virtual memory]. Sadly for Ferranti, the Atlas did not sell and its features were rapidly incorporated in machines being developed in the USA. 

Another significant British computer was the Manchester University MU5 that became operational in 1975. This was used as the basis for ICL's 2900 series of large scientific computers. ICL was the UK's largest mainframe manufacturer in the 1970s and many students of my generation used ICL 1900 series computers in their postgraduate research. Someone once told me where the designations 1900 and 2900 came from. The 1900 computers were so-called because that was when their hardware had been developed, whereas the 2900 series were so called because that was when their operating systems would be ready. 

The MU5 implemented several notable architectural features. In particular, it provided support for block-structured languages and recursive procedure calling. These were features of the Algol language that was then popular in Europe (Algol's successor was Pascal).