Electronic Delay Storage Automatic Calculator

From Wikipedia, the free encyclopedia
  (Redirected from EDSAC)
Jump to: navigation, search
EDSAC

Electronic Delay Storage Automatic Calculator (EDSAC) was an early British computer. The machine, having been inspired by John von Neumann's seminal First Draft of a Report on the EDVAC, was constructed by Maurice Wilkes and his team at the University of Cambridge Mathematical Laboratory in England. EDSAC was the first practical stored-program electronic computer.[1]

Later the project was supported by J. Lyons & Co. Ltd., a British firm, who were rewarded with the first commercially applied computer, LEO I, based on the EDSAC design. EDSAC ran its first programs on 6 May 1949, when it calculated a table of squares[2] and a list of prime numbers.

Contents

[edit] Technical overview

[edit] Physical components

As soon as EDSAC was completed, it began serving the University's research needs. None of its components were experimental. It used mercury delay lines for memory, and derated vacuum tubes for logic. Input was via 5-hole punched tape and output was via a teleprinter.

Initially registers were limited to an accumulator and a multiplier register. In 1953, David Wheeler, returning from a stay at the University of Illinois, designed an index register as an extension to the original EDSAC hardware.

[edit] Memory and instructions

The EDSAC's memory consisted of 1024 locations, though only 512 locations were initially implemented. Each contained 18 bits, but the first bit was unavailable due to timing restrictions, so only 17 bits were used. An instruction consisted of a five-bit instruction code (designed to be represented by a mnemonic letter, so that the Add instruction, for example, used the bit pattern for the letter A), one unused spare bit, ten bits for a memory address, and one bit to control whether the instruction operated on a number contained in one word or two.

Internally, the EDSAC used two's complement, binary numbers. These were either 17 bits (one word) or 35 bits (two words) long. Unusually, the multiplier was designed to treat numbers as fixed-point fractions in the range -1 ≤ x < 1, i.e. the binary point was immediately to the right of the sign. The accumulator could hold 71 bits, including the sign, allowing two long (35-bit) numbers to be multiplied without losing any precision.

The instructions available were: add, subtract, multiply, collate,[3] shift left, shift right, load multiplier register, store (and optionally clear) accumulator, conditional skip, read input tape, print character, round accumulator, no-op and stop. There was no division instruction (though a number of division subroutines were available) and no way to directly load a number into the accumulator (a “store and zero accumulator” instruction followed by an “add” instruction were necessary for this).

[edit] System software

The initial orders were hard-wired on a set of uniselector switches and loaded into the low words of memory at startup. By May 1949, the initial orders provided a primitive relocating assembler taking advantage of the mnemonic design described above, all in 31 words. This was the world's first assembler, and arguably the start of the global software industry. There is a simulation of EDSAC available and a full description of the initial orders and first programs.

The machine was used by other members of the University to solve real problems, and many early techniques were developed that are now included in operating systems. Users prepared their programs by punching them (in assembler) onto a paper tape. They soon became good at being able to hold the paper tape up to the light and read back the codes. When a program was ready it was hung on a length of line strung up near the paper tape reader. The machine operators, who were present during the day, selected the next tape from the line and loaded it into EDSAC. This is of course well known today as job queues. If it printed something then the tape and the printout were returned to the user, otherwise they were informed at which memory location it had stopped. Debuggers were some time away, but a CRT screen could be set to display the contents of a particular piece of memory. This was used to see if a number was converging, for example. After office hours certain "Authorised Users" were allowed to run the machine for themselves, which went on late into the night until a valve blew - which usually happened according to one such user.[4]

[edit] Programming technique

The early programmers had to make use of techniques frowned upon today - especially altering the code. As there was no index register until much later the only way of accessing an array was to alter the memory location that a particular instruction referenced.

David Wheeler, who earned the world's first Computer Science PhD working on the project, is credited with inventing the concept of a subroutine. A user wrote a program that called a subroutine by jumping to the start of the subroutine with the address of the program counter plus one in the single register (a Wheeler jump). By convention the subroutine expected this and the first thing it did was to overwrite its final jump instruction with that address so that it returned. Multiple and nested subroutines could be called so long as the user knew the length of each one in order to calculate the location to jump to. The user then copied the code for the subroutine from a master tape onto their own tape following the end of their own program.

[edit] Application software

The subroutine concept led to the availability of a substantial subroutine library. By 1951, 87 subroutines in the following categories were available for general use: floating point arithmetic; arithmetic operations on complex numbers; checking; division; exponentiation; routines relating to functions; differential equations; special functions; power series; logarithms; miscellaneous; print and layout; quadrature; read (input); nth root; trigonometric functions; counting operations (simulating repeat until loops, while loops and for loops); vectors; and matrices.

[edit] Historical perspective

Defining characteristics of some early digital computers of the 1940s (In the history of computing hardware)
Name First operational Numeral system Computing mechanism Programming Turing complete
Zuse Z3 (Germany) May 1941 Binary floating point Electro-mechanical Program-controlled by punched 35 mm film stock (but no conditional branch) Yes (1998)
Atanasoff–Berry Computer (US) 1942 Binary Electronic Not programmable—single purpose No
Colossus Mark 1 (UK) February 1944 Binary Electronic Program-controlled by patch cables and switches No
Harvard Mark I – IBM ASCC (US) May 1944 Decimal Electro-mechanical Program-controlled by 24-channel punched paper tape (but no conditional branch) No
Colossus Mark 2 (UK) June 1944 Binary Electronic Program-controlled by patch cables and switches No
Zuse Z4 (Germany) March 1945 Binary floating point Electro-mechanical Program-controlled by punched 35 mm film stock Yes
ENIAC (US) July 1946 Decimal Electronic Program-controlled by patch cables and switches Yes
Manchester Small-Scale Experimental Machine (Baby) (UK) June 1948 Binary Electronic Stored-program in Williams cathode ray tube memory Yes
Modified ENIAC (US) September 1948 Decimal Electronic Read-only stored programming mechanism using the Function Tables as program ROM Yes
EDSAC (UK) May 1949 Binary Electronic Stored-program in mercury delay line memory Yes
Manchester Mark 1 (UK) October 1949 Binary Electronic Stored-program in Williams cathode ray tube memory and magnetic drum memory Yes
CSIRAC (Australia) November 1949 Binary Electronic Stored-program in mercury delay line memory Yes

[edit] Applications of EDSAC

[edit] Further developments

EDSAC's successor, EDSAC 2, was commissioned in 1958.

In 1961, an EDSAC 2 version of Autocode, an ALGOL-like high-level programming language for scientists and engineers, was developed by David Hartley.

In the mid-1960s, a successor to the EDSAC 2 was planned, but the move was instead made to the Titan, a prototype Atlas 2—the latter having been developed from the Atlas Computer of the University of Manchester, Ferranti, and Plessey.

On the 13 January, 2011, the Computer Conservation Society announced that it had commissioned a working replica of EDSAC, to be built at The National Museum of Computing in Bletchley Park.[6]

[edit] Notes

  1. ^ The Manchester Small-Scale Experimental Machine, nicknamed "Baby", predated EDSAC as a stored-program computer, but was built as a test bed for the Williams tube and not as a machine for practical use.
  2. ^ "Pioneer computer to be rebuilt". Cam 62: 5. Lent 2011.  To be precise, EDSAC's first program printed a list of the squares of the integers from 0 to 99 inclusive.
  3. ^ This instruction added the bitwise AND of the specified memory word and the multiplier register to the accumulator.
  4. ^ Professor David Barron, Emeritus Professor of the University of Southampton at a Cambridge Computer Lab seminar to mark the 60th anniversary May 6th 2009.
  5. ^ Gene Frequencies in a Cline Determined by Selection and Diffusion, R. A. Fisher, Biometrics, Vol. 6, No. 4 (Dec., 1950), pp. 353-361
  6. ^ Ward, Mark (2011-01-13). "Pioneering Edsac computer to be built at Bletchley Park". BBC News. http://www.bbc.co.uk/news/technology-12181153. Retrieved 2011-01-13. 

[edit] References

[edit] External links

Personal tools
Namespaces
Variants
Actions
Navigation
Interaction
Toolbox
Print/export
Languages