First Draft of a Report on the EDVAC

Last updated

The First Draft of a Report on the EDVAC (commonly shortened to First Draft) is an incomplete 101-page document written by John von Neumann and distributed on June 30, 1945 by Herman Goldstine, security officer on the classified ENIAC project. It contains the first published description of the logical design of a computer using the stored-program concept, which has come to be known as the von Neumann architecture; the name has become controversial due to von Neumann's failure to name other contributors.

Contents

History

Title page the First Draft, copy belonging to Samuel N. Alexander, who developed the SEAC computer based on the report. Firstdraftofrepo00vonn 0003.jpg
Title page the First Draft, copy belonging to Samuel N. Alexander, who developed the SEAC computer based on the report.

Von Neumann wrote the report by hand while commuting by train to Los Alamos, New Mexico and mailed the handwritten notes back to Philadelphia. Goldstine had the report typed and duplicated. While the date on the typed report is June 30, 24 copies of the First Draft were distributed to persons closely connected with the EDVAC project five days earlier on June 25. Interest in the report caused it to be sent all over the world; Maurice Wilkes of Cambridge University cited his excitement over the report's content as the impetus for his decision to travel to the United States for the Moore School Lectures in Summer 1946.

Synopsis

Von Neumann describes a detailed design of a "very high speed automatic digital computing system." He divides it into six major subdivisions: a central arithmetic part, CA; a central control part, CC; memory, M; input, I; output, O; and (slow) external memory, R, such as punched cards, Teletype tape, or magnetic wire or steel tape.

The CA will perform addition, subtraction, multiplication, division and square root. Other mathematical operations, such as logarithms and trigonometric functions are to be done with table look up and interpolation, possibly biquadratic. He notes that multiplication and division could be done with logarithm tables, but to keep the tables small enough, interpolation would be needed and this in turn requires multiplication, though perhaps with less precision.

Numbers are to be represented in binary notation. He estimates 27 binary digits (he did not use the term "bit," which was coined by Claude Shannon in 1948) would be sufficient (yielding 8 decimal place accuracy) but rounds up to 30-bit numbers with a sign bit and a bit to distinguish numbers from orders, resulting in a 32-bit word he calls a minor cycle. Two's complement arithmetic is to be used, simplifying subtraction. For multiplication and division, he proposes placing the binary point after the sign bit, which means all numbers are treated as being between −1 and +1 [lower-alpha 1] and therefore computation problems must be scaled accordingly.

Circuit design

Vacuum tubes are to be used rather than relays due to tubes' ability operate in one microsecond vs. 10 milliseconds for relays.

Von Neumann suggests (Sec. 5.6) keeping the computer as simple as possible, avoiding any attempt at improving performance by overlapping operations. Arithmetic operations are to be performed one binary digit at a time. He estimates addition of two binary digits as taking one microsecond and that therefore a 30-bit multiplication should take about 302 microseconds or about one millisecond, much faster than any computing device available at the time.

Von Neumann's design is built up using what he call "E elements," which are based on the biological neuron as model, [1] [2] but are digital devices which he says can be constructed using one or two vacuum tubes. In modern terms his simplest E element is a two-input AND gate with one input inverted (the inhibit input). E elements with more inputs have an associated threshold and produce an output when the number of positive input signals meets or exceed the threshold, so long as the (only) inhibit line is not pulsed. He states that E elements with more inputs can be constructed from the simplest version, but suggests they be built directly as vacuum tube circuits as fewer tubes will be needed.

More complex function blocks are to be built from these E elements. He shows how to use these E elements to build circuits for addition, subtraction, multiplication, division and square root, as well as two state memory blocks and control circuits. He does not use Boolean logic terminology.

Circuits are to be synchronous with a master system clock derived from a vacuum tube oscillator, possibly crystal controlled. His logic diagrams include an arrowhead symbol to denote a unit time delay, as time delays must be accounted for in a synchronous design. He points out that in one microsecond an electric pulse moves 300 meters so that until much higher clock speeds, e.g. 108 cycles per second (100 MHz), wire length would not be an issue.

The need for error detection and correction is mentioned but not elaborated.

Memory design

A key design concept enunciated, and later named the Von Neumann architecture, is a uniform memory containing both numbers (data) and orders (instructions).

"The device requires a considerable memory. While it appeared that various parts of this memory have to perform functions which differ somewhat in their nature and considerably in their purpose, it is nevertheless tempting to treat the entire memory as one organ, and to have its parts even as interchangeable as possible for the various functions enumerated above." (Sec. 2.5)

"The orders which are received by CC come from M, i.e. from the same place where the numerical material is stored." (Sec. 14.0)

Von Neumann estimates the amount of memory required based on several classes of mathematical problems, including ordinary and partial differential equations, sorting and probability experiments. Of these, partial differential equations in two dimensions plus time will require the most memory, with three dimensions plus time being beyond what can be done using technology that was then available. He concludes that memory will be the largest subdivision of the system and he proposes 8,192 minor cycles (words) of 32-bits as a design goal, with 2,048 minor cycles still being useful. He estimates a few hundred minor cycles will suffice for storing the program.

He proposes two kinds of fast memory, delay line and Iconoscope tube. Each minor cycle is to be addressed as a unit (word addressing, Sec. 12.8). Instructions are to be executed sequentially, with a special instruction to switch to a different point in memory (i.e. a jump instruction).

Binary digits in a delay line memory pass through the line and are fed back to the beginning. Accessing data in a delay line imposes a time penalty while waiting for the desired data to come around again. After analyzing these timing issues, he proposes organizing the delay line memory into 256 delay line "organs" (DLAs) each storing 1024 bits, or 32 minor cycles, called a major cycle. A memory access first selects the DLA (8 bits) and then the minor cycle within the DLA (5 bits), for a total of 13 address bits.

For the Iconoscope memory, he recognizes that each scan point on the tube face is a capacitor and that a capacitor can store one bit. Very high precision scanning will be needed and the memory will only last a short time, perhaps as little as a second, and therefore will need to be periodically recopied (refreshed).

Orders (instructions)

In Sec 14.1 von Neumann proposes the format for orders, which he calls a code. Order types include the basic arithmetic operations, moving minor cycles between CA and M (word load and store in modern terms), an order (s) that selects one of two numbers based on the sign of the previous operation, input and output and transferring CC to a memory location elsewhere (a jump). He determines the number of bits needed for the different order types, suggests immediate orders where the following word is the operand and discusses the desirability of leaving spare bits in the order format to allow for more addressable memory in the future, as well as other unspecified purposes. The possibility of storing more than one order in a minor cycle is discussed, with little enthusiasm for that approach. A table of orders is provided, but no discussion of input and output instructions was included in the First Draft.

Controversy

The issuance and distribution of the report was the source of bitter acrimony between factions of the EDVAC design team for two reasons. [3] First, the report was later ruled a public disclosure that occurred more than a year before the EDVAC patent application was filed, thereby rendering the eventual patent unenforceable; second, some on the EDVAC design team contended that the stored-program concept had evolved out of meetings at the University of Pennsylvania's Moore School of Electrical Engineering predating von Neumann's activity as a consultant there, and that much of the work represented in the First Draft was no more than a translation of the discussed concepts into the language of formal logic in which von Neumann was fluent. Hence, failure of von Neumann and Goldstine to list others as authors on the First Draft led credit to be attributed to von Neumann alone. (See Matthew effect and Stigler's law.)

See also

Notes

  1. The highest value is actually 1 - 2-30, 0.99999999906 in decimal notation.

Related Research Articles

<span class="mw-page-title-main">Atanasoff–Berry computer</span> Early electronic digital computing device

The Atanasoff–Berry computer (ABC) was the first automatic electronic digital computer. Limited by the technology of the day, and execution, the device has remained somewhat obscure. The ABC's priority is debated among historians of computer technology, because it was neither programmable, nor Turing-complete. Conventionally, the ABC would be considered the first electronic ALU – which is integrated into every modern processor's design.

<span class="mw-page-title-main">Accumulator (computing)</span> Register in which intermediate arithmetic and logic results of a CPU are stored

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

<span class="mw-page-title-main">Central processing unit</span> Central computer component which executes instructions

A central processing unit (CPU)—also called a central processor or main processor—is the most important processor in a given computer. Its electronic circuitry executes instructions of a computer program, such as arithmetic, logic, controlling, and input/output (I/O) operations. This role contrasts with that of external components, such as main memory and I/O circuitry, and specialized coprocessors such as graphics processing units (GPUs).

<span class="mw-page-title-main">History of computing hardware</span> From early calculation aids to modern day computers

The history of computing hardware covers the developments from early simple devices to aid calculation to modern day computers.

<span class="mw-page-title-main">ENIAC</span> First electronic general-purpose digital computer

ENIAC was the first programmable, electronic, general-purpose digital computer, completed in 1945. There were other computers that had combinations of these features, but the ENIAC had all of them in one computer. It was Turing-complete and able to solve "a large class of numerical problems" through reprogramming.

<span class="mw-page-title-main">J. Presper Eckert</span> American electrical engineer and computer pioneer (1919–1995)

John Adam Presper Eckert Jr. was an American electrical engineer and computer pioneer. With John Mauchly, he designed the first general-purpose electronic digital computer (ENIAC), presented the first course in computing topics, founded the Eckert–Mauchly Computer Corporation, and designed the first commercial computer in the U.S., the UNIVAC, which incorporated Eckert's invention of the mercury delay-line memory.

<span class="mw-page-title-main">EDVAC</span> Early computer

EDVAC was one of the earliest electronic computers. It was built by Moore School of Electrical Engineering, Pennsylvania. Along with ORDVAC, it was a successor to the ENIAC. Unlike ENIAC, it was binary rather than decimal, and was designed to be a stored-program computer.

John William Mauchly was an American physicist who, along with J. Presper Eckert, designed ENIAC, the first general-purpose electronic digital computer, as well as EDVAC, BINAC and UNIVAC I, the first commercial computer made in the United States.

<span class="mw-page-title-main">Z3 (computer)</span> First working programmable, fully automatic digital computer

The Z3 was a German electromechanical computer designed by Konrad Zuse in 1938, and completed in 1941. It was the world's first working programmable, fully automatic digital computer. The Z3 was built with 2,600 relays, implementing a 22-bit word length that operated at a clock frequency of about 5–10 Hz. Program code was stored on punched film. Initial values were entered manually.

<span class="mw-page-title-main">IAS machine</span> First electronic computer to be built at the Institute for Advanced Study

The IAS machine was the first electronic computer built at the Institute for Advanced Study (IAS) in Princeton, New Jersey. It is sometimes called the von Neumann machine, since the paper describing its design was edited by John von Neumann, a mathematics professor at both Princeton University and IAS. The computer was built from late 1945 until 1951 under his direction. The general organization is called von Neumann architecture, even though it was both conceived and implemented by others. The computer is in the collection of the Smithsonian National Museum of American History but is not currently on display.

<span class="mw-page-title-main">ORDVAC</span> Ordnance Discrete Variable Automatic Computer

The ORDVAC, is an early computer built by the University of Illinois for the Ballistic Research Laboratory at Aberdeen Proving Ground. It was a successor to the ENIAC. It was based on the IAS architecture developed by John von Neumann, which came to be known as the von Neumann architecture. The ORDVAC was the first computer to have a compiler. ORDVAC passed its acceptance tests on March 6, 1952, at Aberdeen Proving Ground in Maryland. Its purpose was to perform ballistic trajectory calculations for the US Military. In 1992, the Ballistic Research Laboratory became a part of the U.S. Army Research Laboratory.

<span class="mw-page-title-main">Von Neumann architecture</span> Computer architecture where code and data share a common bus

The von Neumann architecture—also known as the von Neumann model or Princeton architecture—is a computer architecture based on a 1945 description by John von Neumann, and by others, in the First Draft of a Report on the EDVAC. The document describes a design architecture for an electronic digital computer with these components:

<span class="mw-page-title-main">UNIVAC LARC</span> Livermore Advanced Research Computer

The UNIVAC LARC, short for the Livermore Advanced Research Computer, is a mainframe computer designed to a requirement published by Edward Teller in order to run hydrodynamic simulations for nuclear weapon design. It was one of the earliest supercomputers.

<span class="mw-page-title-main">Manchester Baby</span> First electronic stored-program computer, 1948

The Manchester Baby, also called the Small-Scale Experimental Machine (SSEM), was the first electronic stored-program computer. It was built at the University of Manchester by Frederic C. Williams, Tom Kilburn, and Geoff Tootill, and ran its first program on 21 June 1948.

<span class="mw-page-title-main">Herman Goldstine</span> American mathematician (1913–2004)

Herman Heine Goldstine was a mathematician and computer scientist, who worked as the director of the IAS machine at the Institute for Advanced Study and helped to develop ENIAC, the first of the modern electronic digital computers. He subsequently worked for many years at IBM as an IBM Fellow, the company's most prestigious technical position.

<span class="mw-page-title-main">English Electric DEUCE</span>

The DEUCE was one of the earliest British commercially available computers, built by English Electric from 1955. It was the production version of the Pilot ACE, itself a cut-down version of Alan Turing's ACE.

<span class="mw-page-title-main">IBM SSEC</span>

The IBM Selective Sequence Electronic Calculator (SSEC) was an electromechanical computer built by IBM. Its design was started in late 1944 and it operated from January 1948 to August 1952. It had many of the features of a stored-program computer, and was the first operational machine able to treat its instructions as data, but it was not fully electronic. Although the SSEC proved useful for several high-profile applications, it soon became obsolete. As the last large electromechanical computer ever built, its greatest success was the publicity it provided for IBM.

Theory and Techniques for Design of Electronic Digital Computers was a course in the construction of electronic digital computers held at the University of Pennsylvania's Moore School of Electrical Engineering between July 8, 1946, and August 30, 1946, and was the first time any computer topics had ever been taught to an assemblage of people. The course disseminated the ideas developed for the EDVAC and initiated an explosion of computer construction activity in the United States and internationally, especially in the United Kingdom.

FLAC, the Florida Automatic Computer, was an early digital electronic computer built for the United States Air Force at Patrick Air Force Base (PAFB) in Brevard County of Florida, to perform missile data reduction. The computer began service in 1953.

<span class="mw-page-title-main">Vacuum-tube computer</span> Earliest electronic computer design

A vacuum-tube computer, now termed a first-generation computer, is a computer that uses vacuum tubes for logic circuitry. While the history of mechanical aids to computation goes back centuries, if not millennia, the history of vacuum tube computers is confined to the middle of the 20th century. Lee De Forest invented the triode in 1906. The first example of using vacuum tubes for computation, the Atanasoff–Berry computer, was demonstrated in 1939.Vacuum-tube computers were initially one-of-a-kind designs, but commercial models were introduced in the 1950s and sold in volumes ranging from single digits to thousands of units. By the early 1960s vacuum tube computers were obsolete, superseded by second-generation transistorized computers.

References

  1. Von Neumann credits this model to Warren McCulloch and Walter Pitts, A logical calculus of the ideas immanent in nervous activity, Bull. Math. Biophysics, Vol. 5 (1943), pp. 115–133
  2. Von Neumann had worked closely with McCulloch and Pitts. See The Man Who Tried to Redeem the World with Logic, Amanda Gefter, Nautilus, Issue 21, February 4, 2015
  3. Moye, William T. (January 1996), ENIAC: The Army-Sponsored Revolution, United States Army Research Laboratory, archived from the original on 2013-03-05, retrieved 2012-11-26

Bibliography