EDSAC

Last updated

Electronic Delay Storage Automatic Calculator (EDSAC)
EDSAC (19).jpg
EDSAC I in June 1948
Developer Maurice Wilkes and his team at the University of Cambridge Mathematical Laboratory
Manufacturer University of Cambridge
Generation1
Release date6 May 1949;74 years ago (1949-05-06)
Lifespan1949–1958
Discontinuedyes
Units shipped1
Operating system None
CPU Derated thermionic valves
Memory512 17-bit words, upgraded in 1952 to 1024 17-bit words (temperature-stabilized mercury delay lines)
Display Teleprinter
Inputfive-hole punched tape
Power11 kW
Backward
compatibility
None
Successor EDSAC 2 and LEO I
Related EDVAC

The Electronic Delay Storage Automatic Calculator (EDSAC) was an early British computer. [1] Inspired by John von Neumann's seminal First Draft of a Report on the EDVAC , the machine was constructed by Maurice Wilkes and his team at the University of Cambridge Mathematical Laboratory in England. EDSAC was the second electronic digital stored-program computer to go into regular service. [2]

Contents

Later the project was supported by J. Lyons & Co. Ltd., intending to develop a commercially applied computer and succeeding in Lyons' development of LEO I, based on the EDSAC design. Work on EDSAC started during 1947, [3] and it ran its first programs on 6 May 1949, when it calculated a table of square numbers [4] and a list of prime numbers. [5] [6] EDSAC was finally shut down on 11 July 1958, having been superseded by EDSAC 2, which remained in use until 1965. [7]

Technical overview

Physical components

9-inch tubes used for monitoring EDSAC (5).jpg
9-inch tubes used for monitoring
William Renwick with 5-hole tape reader and Creed teleprinter EDSAC (20).jpg
William Renwick with 5-hole tape reader and Creed teleprinter

As soon as EDSAC was operational, it began serving the university's research needs. It used mercury delay lines for memory and derated vacuum tubes for logic. Power consumption was 11  kW of electricity. [8] [9] Cycle time was 1.5 ms for all ordinary instructions, 6 ms for multiplication. Input was via five-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.

A magnetic-tape drive was added in 1952 but never worked sufficiently well to be of real use. [10]

Until 1952, the available main memory (instructions and data) was only 512 18-bit words, and there was no backing store. [11] The delay lines (or "tanks") were arranged in two batteries providing 512 words each. The second battery came into operation in 1952. [10]

The full 1024-word delay-line store was not available until 1955 or early 1956, [12] limiting programs to about 800 words until then.

John Lindley (diploma student 1958–1959) mentioned "the incredible difficulty we had ever to produce a single correct piece of paper tape with the crude and unreliable home-made punching, printing and verifying gear available in the late 50s". [13]

Memory and instructions

Maurice Wilkes inspecting the mercury delay line of the EDSAC in construction EDSAC (9).jpg
Maurice Wilkes inspecting the mercury delay line of the EDSAC in construction
Maurice Wilkes and Bill Renwick in front of the complete EDSAC EDSAC (12).jpg
Maurice Wilkes and Bill Renwick in front of the complete EDSAC

The EDSAC's main memory consisted of 1024 locations, though only 512 locations were initially installed. Each contained 18 bits, but the topmost bit was always unavailable due to timing problems, so only 17 bits were used. An instruction consisted of a 5-bit instruction code, 1 spare bit, a 10-bit operand (usually a memory address), and 1 length bit to control whether the instruction used a 17-bit or a 35-bit operand (two consecutive words, little-endian). All instruction codes were by design represented by one mnemonic letter, so that the Add instruction, for example, used the EDSAC character code for the letter A.

Internally, the EDSAC used two's complement binary numbers. Numbers 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:

There was no division instruction (but various division subroutines were supplied) 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). There was no unconditional jump instruction, nor was there a procedure call instruction – it had not yet been invented.

Maurice Wilkes discussed relative addressing modes for the EDSAC in a paper published in 1953. He was making the proposals to facilitate the use of subroutines. [14]

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. [15]

The first calculation done by EDSAC was a square-number program run on 6 May 1949. [16] The program was written by Beatrice Worsley, who had travelled from Canada to study the machine. [17] [16]

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 cathode-ray tube screen could be set to display the contents of a particular piece of memory. This was used to see whether a number was converging, for example. A loudspeaker was connected to the accumulator's sign bit; experienced users knew healthy and unhealthy sounds of programs, particularly programs "hung" in a loop.

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. [18] This is alluded to by Fred Hoyle in his novel The Black Cloud

Programming technique

EDSAC monitoring desk EDSAC (23).jpg
EDSAC monitoring desk

The early programmers had to make use of techniques frowned upon today—in particular, the use of self-modifying code. As there was no index register until much later, the only way of accessing an array was to alter which memory location a particular instruction was referencing.

David Wheeler, who earned the world's first Computer Science PhD working on the project, is credited with inventing the concept of a subroutine. Users wrote programs that called a routine by jumping to the start of the subroutine with the return address (i.e. the location-plus-one of the jump itself) in the accumulator (a Wheeler Jump). By convention the subroutine expected this, and the first thing it did was to modify its concluding jump instruction to that return address. 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; recursive calls were forbidden. The user then copied the code for the subroutine from a master tape onto their own tape following the end of their own program. (However, Alan Turing discussed subroutines in a paper of 1945 on design proposals for the NPL ACE, going so far as to invent the concept of a return-address stack, which would have allowed recursion. [20] )

The lack of an index register also posed a problem to the writer of a subroutine in that they could not know in advance where in memory the subroutine would be loaded, and therefore they could not know how to address any regions of the code that were used for storage of data (so-called "pseudo-orders"). This was solved by use of an initial input routine, which was responsible for loading subroutines from punched tape into memory. On loading a subroutine, it would note the start location and increment internal memory references as required. Thus, as Wilkes wrote, "the code used to represent orders outside the machine differs from that used inside, the differences being dictated by the different requirements of the programmer on the one hand, and of the control circuits of the machine on the other". [21]

EDSAC's programmers used special techniques to make best use of the limited available memory. For example, at the point of loading a subroutine from punched tape into memory, it might happen that a particular constant would have to be calculated, a constant that would not subsequently need recalculation. In this situation, the constant would be calculated in an "interlude". The code required to calculate the constant would be supplied along with the full subroutine. After the initial input routine had loaded the calculation-code, it would transfer control to this code. Once the constant had been calculated and written into memory, control would return to the initial input routine, which would continue to write the remainder of the subroutine into memory, but first adjusting its starting point so as to overwrite the code that had calculated the constant. This allowed quite complicated adjustments to be made to a general-purpose subroutine without making its final footprint in memory any larger than had it been tailored to a specific circumstance. [22]

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.

The first assembly language appeared for the EDSAC, and inspired several other assembly languages:

YearNameChief developer, company
1951Regional Assembly Language Maurice Wilkes
1951 Whirlwind assemblerCharles Adams and Jack Gilmore at MIT
1951Rochester assembler Nat Rochester

Applications of EDSAC

EDSAC was designed specifically to form part of the Mathematical Laboratory's support service for calculation. [23] The first scientific paper to be published using a computer for calculations was by Ronald Fisher.[ citation needed ] Wilkes and Wheeler had used EDSAC to solve a differential equation relating to gene frequencies for him. [24] In 1951, Miller and Wheeler used the machine to discover a 79-digit prime [25]  – the largest known at the time.

The winners of three Nobel Prizes  John Kendrew and Max Perutz (Chemistry, 1962), Andrew Huxley (Medicine, 1963) and Martin Ryle (Physics, 1974)  benefitted from EDSAC's revolutionary computing power. In their acceptance prize speeches, each acknowledged the role that EDSAC had played in their research.

In the early 1960s Peter Swinnerton-Dyer used the EDSAC computer to calculate the number of points modulo p (denoted by Np) for a large number of primes p on elliptic curves whose rank was known. Based on these numerical results, Birch & Swinnerton-Dyer (1965) conjectured that Np for a curve E with rank r obeys an asymptotic law, the Birch and Swinnerton-Dyer conjecture, considered one of the top unsolved problems in mathematics as of 2022.

The "brain" [computer] may one day come down to our level [of the common people] and help with our income-tax and book-keeping calculations. But this is speculation and there is no sign of it so far.

British newspaper The Star in a June 1949 news article about the EDSAC computer, long before the era of the personal computers. [26]

Games

In 1952, Sandy Douglas developed OXO , a version of noughts and crosses (tic-tac-toe) for the EDSAC, with graphical output to a VCR97 6" cathode-ray tube. This may well have been the world's first video game. [27] [28]

Another video game was created by Stanley Gill and involved a dot (termed a sheep) approaching a line in which one of two gates could be opened. [29] The Stanley Gill game was controlled via the lightbeam of the EDSAC's paper-tape reader. [29] Interrupting it (such as by the player placing their hand in it) would open the upper gate. [29] Leaving the beam unbroken would result in the lower gate opening. [29]

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 developed from the Atlas Computer of the University of Manchester, Ferranti, and Plessey.

EDSAC Replica Project

EDSAC replica in October 2018 EDSAC replica.JPG
EDSAC replica in October 2018

On 13 January 2011, the Computer Conservation Society announced that it planned to build a working replica of EDSAC, at the National Museum of Computing (TNMoC) in Bletchley Park supervised by Andrew Herbert, who studied under Maurice Wilkes. [30] The first parts of the replica were switched on in November 2014. [31] [32] The EDSAC logical circuits were meticulously reconstructed through the development of a simulator and the reexamination of some rediscovered original schematics. This documentation has been released under a Creative Commons license. [33] The ongoing project is open to visitors of the museum. In 2016, two original EDSAC operators, Margaret Marrs and Joyce Wheeler, visited the museum to assist the project. [34] As of November 2016, commissioning of the fully completed and operational state of the replica was estimated to be the autumn of 2017. [35] However, unforeseen project delays have resulted in an unknown date for a completed and fully operational machine.

See also

Related Research Articles

<span class="mw-page-title-main">History of computing hardware</span>

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">LEO (computer)</span> 1951 British computer

The LEO was a series of early computer systems created by J. Lyons and Co. The first in the series, the LEO I, was the first computer used for commercial business applications.

<span class="mw-page-title-main">PDP-8</span> Minicomputer product line

The PDP-8 is a family of 12-bit minicomputers that was produced by Digital Equipment Corporation (DEC). It was the first commercially successful minicomputer, with over 50,000 units being sold over the model's lifetime. Its basic design follows the pioneering LINC but has a smaller instruction set, which is an expanded version of the PDP-5 instruction set. Similar machines from DEC are the PDP-12 which is a modernized version of the PDP-8 and LINC concepts, and the PDP-14 industrial controller system.

<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. Other computers had some of these features, but ENIAC was the first to have them all. It was Turing-complete and able to solve "a large class of numerical problems" through reprogramming.

<span class="mw-page-title-main">LINC</span> Laboratory Instrument Computer (1962)

The LINC is a 12-bit, 2048-word transistorized computer. The LINC is considered by some to be the first minicomputer and a forerunner to the personal computer. Originally named the Linc, suggesting the project's origins at MIT's Lincoln Laboratory, it was renamed LINC after the project moved from the Lincoln Laboratory. The LINC was designed by Wesley A. Clark and Charles Molnar.

<span class="mw-page-title-main">Maurice Wilkes</span> British computer scientist (1913–2010)

Sir Maurice Vincent Wilkes was an English computer scientist who designed and helped build the Electronic Delay Storage Automatic Calculator (EDSAC), one of the earliest stored program computers, and who invented microprogramming, a method for using stored-program logic to operate the control unit of a central processing unit's circuits. At the time of his death, Wilkes was an Emeritus Professor at the University of Cambridge.

von Neumann architecture 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">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">Department of Computer Science and Technology, University of Cambridge</span> Computer science division at the University of Cambridge

The Department of Computer Science and Technology, formerly the Computer Laboratory, is the computer science department of the University of Cambridge. As of 2023 it employed 56 faculty members, 45 support staff, 105 research staff, and about 205 research students. The current Head of Department is Professor Alastair Beresford.

<span class="mw-page-title-main">David Wheeler (computer scientist)</span> British computer scientist (1927–2004)

David John Wheeler was a computer scientist and professor of computer science at the University of Cambridge.

<span class="mw-page-title-main">IBM 1130</span> 16-bit IBM minicomputer introduced in 1965

The IBM 1130 Computing System, introduced in 1965, was IBM's least expensive computer at that time. A binary 16-bit machine, it was marketed to price-sensitive, computing-intensive technical markets, like education and engineering, succeeding the decimal IBM 1620 in that market segment. Typical installations included a 1 megabyte disk drive that stored the operating system, compilers and object programs, with program source generated and maintained on punched cards. Fortran was the most common programming language used, but several others, including APL, were available.

<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.

The APE(X)C, or All Purpose Electronic (X) Computer series was designed by Andrew Donald Booth at Birkbeck College, London in the early 1950s. His work on the APE(X)C series was sponsored by the British Rayon Research Association. Although the naming conventions are slightly unclear, it seems the first model belonged to the BRRA. According to Booth, the X stood for X-company.

Autocode is the name of a family of "simplified coding systems", later called programming languages, devised in the 1950s and 1960s for a series of digital computers at the Universities of Manchester, Cambridge and London. Autocode was a generic term; the autocodes for different machines were not necessarily closely related as are, for example, the different versions of the single language Fortran.

<span class="mw-page-title-main">Computer</span> Automatic general-purpose device for performing arithmetic or logical operations

A computer is a machine that can be programmed to automatically carry out sequences of arithmetic or logical operations (computation). Modern digital electronic computers can perform generic sets of operations known as programs. These programs enable computers to perform a wide range of tasks. The term computer system may refer to a nominally complete computer that includes the hardware, operating system, software, and peripheral equipment needed and used for full operation; or to a group of computers that are linked and function together, such as a computer network or computer cluster.

<span class="mw-page-title-main">Elliott 803</span>

The Elliott 803 is a small, medium-speed transistor digital computer which was manufactured by the British company Elliott Brothers in the 1960s. About 211 were built.

<span class="mw-page-title-main">Manchester Mark 1</span> British stored-program computer, 1949

The Manchester Mark 1 was one of the earliest stored-program computers, developed at the Victoria University of Manchester, England from the Manchester Baby. Work began in August 1948, and the first version was operational by April 1949; a program written to search for Mersenne primes ran error-free for nine hours on the night of 16/17 June 1949.

In computer programming, a function, subprogram, procedure, method, routine or subroutine is a callable unit that has a well-defined behavior and can be invoked by other software units to exhibit that behavior.

The Wheeler Jump is a type of subroutine call methodology that was used on some early computers that lacked hardware support for saving the return address. The concept was developed by David Wheeler while working on the pioneering EDSAC machine in the 1950s. EDSAC had not been built with subroutines in mind, and lacked a suitable processor register or a hardware stack that might allow the return address to be easily stored.

<i>The Preparation of Programs for an Electronic Digital Computer</i> First book on computer programming (1951)

The Preparation of Programs for an Electronic Digital Computer was the first book on computer programming. Published in 1951, it was written by Maurice Wilkes, David Wheeler, and Stanley Gill of Cambridge University. The book was based on the authors' experiences constructing and using EDSAC, one of the first practical computers in the world.

References

  1. Wilkes, W. V.; Renwick, W. (1950). "The EDSAC (Electronic delay storage automatic calculator)". Math. Comp. 4 (30): 61–65. doi: 10.1090/s0025-5718-1950-0037589-7 .
  2. The 1948 Manchester Baby computer predated EDSAC as a stored-program computer, but was built largely as a test bed for the Williams tube and not as a machine for general use. See "A brief informal history of the Computer Laboratory". However, the Baby was developed into a practically useful successor, the Manchester Mark 1 of 1949, which was available for general use by other university departments and Ferranti in April 1949, despite still being under development; EDSAC first ran in May 1949, while also still being under development. "50th Anniversary of the Manchester Baby computer". Archived from the original on 9 February 2014. Retrieved 5 January 2014.
  3. Wilkes, M. V. (1997). "Arithmetic on the EDSAC". Annals of the History of Comp. 19 (1): 13–15. doi:10.1109/85.560726.
  4. "Pioneer computer to be rebuilt". Cam. 62: 5. 2011. To be precise, EDSAC's first program printed a list of the squares of the integers from 0 to 99 inclusive.
  5. Jones, Cliff B.; Lloyd, John L. (24 January 2012). Dependable and Historic Computing: Essays Dedicated to Brian Randell on the Occasion of his 75th Birthday. Springer. p. 29. ISBN   9783642245411.
  6. "9. The EDSAC, Cambridge University, England". Digital Computer Newsletter. 2 (1). Other early computational problems run on EDSAC; some specifications of the computer: 3. 1 January 1950. Archived from the original on 11 March 2021.{{cite journal}}: CS1 maint: others (link)
  7. EDSAC 99: 15–16 April 1999 (PDF), University of Cambridge Computer Laboratory, 6 May 1999, pp. 68, 69, retrieved 29 June 2013.
  8. EDSAC Simulator. Computerphile.
  9. Some EDSAC statistics. University of Cambridge.
  10. 1 2 Some EDSAC statistics.
  11. EDSAC 1 and after.
  12. EDSAC 1 and after.
  13. EDSAC 1 and after.
  14. Proceedings of the Cambridge Philosophical Society, Vol. 49, Pt. 1, p. 84–89.
  15. "Edsac Simulator". www.dcs.warwick.ac.uk. Retrieved 24 May 2023.
  16. 1 2 "EDSAC performed its first calculations". Computing History. Archived from the original on 26 February 2021. Retrieved 23 November 2018.
  17. Raymond, Katrine (25 October 2017). "Beatrice Worsley". The Canadian Encyclopedia. Archived from the original on 13 January 2018. Retrieved 23 November 2018.
  18. Professor David Barron, Emeritus Professor of the University of Southampton at a Cambridge Computer Lab seminar to mark the 60th anniversary 6 May 2009.
  19. Description of three displays (counter, memory and sequence control): "Two new EDSAC videos: EDSAC's VDU screens". The National Museum of Computing. 11 December 2015.
  20. Turing 1945, reprinted in Copeland (2005), p. 383.
  21. Wilkes, M. V. (1956). Automatic digital computers. London: Methuen. pp. 93–95.
  22. Wilkes, M. V. (1956). Automatic digital computers. London: Methuen. pp. 108–109.
  23. Goddard, Jonathan (3 May 2019), 70 years since the first computer designed for practical everyday use, Department of Computer Science and Technology, University of Cambridge
  24. Gene Frequencies in a Cline Determined by Selection and Diffusion, R. A. Fisher, Biometrics, Vol. 6, No. 4 (Dec. 1950), pp. 353–361.
  25. Caldwell – largest known primes by year. One reference gives Miller, J. C. P. "Larger Prime Numbers" (1951) Nature 168(4280):838, but the abstract does not mention it.
  26. "Archived copy" (PDF). Archived from the original (PDF) on 22 December 2015. Retrieved 18 November 2016.{{cite web}}: CS1 maint: archived copy as title (link)
  27. Cohen, D. S. (20 September 2014). "OXO aka Noughts and Crosses – The First Video Game". About.com . IAC. Archived from the original on 22 December 2015. Retrieved 18 December 2015.
  28. Wolf, Mark J. P. (16 August 2012). Encyclopedia of Video Games: The Culture, Technology, and Art of Gaming. Greenwood Publishing Group. pp. 3–7. ISBN   978-0-313-37936-9.
  29. 1 2 3 4 Smith, Alvy Ray (9 June 2015). "The Dawn of Digital Light". IEEE Annals of the History of Computing. 38 (4): 74–91. doi:10.1109/MAHC.2015.51. S2CID   10257358.
  30. Ward, Mark (13 January 2011). "Pioneering Edsac computer to be built at Bletchley Park". BBC News. Retrieved 13 January 2011.
  31. Museum switches on historic computer.
  32. Hartley, David; Herbert, Andrew (2013). "EDSAC Replica Project". Making the History of Computing Relevant. IFIP Advances in Information and Communication Technology. Vol. 416. 9 Current Status, pp. 307–308. doi:10.1007/978-3-642-41650-7_27. ISBN   978-3-642-41649-1.
  33. "EDSAC Logic Rebuild Sub-project". www.billp.org. Retrieved 24 August 2023.
  34. "Inside the project to rebuild the EDSAC, one of the world's first general purpose computers". zdnet.com. Retrieved 24 May 2020.
  35. Palmer, Danny (24 November 2016). "Inside the project to rebuild the EDSAC, one of the world's first general purpose computers". ZDNet . Retrieved 1 December 2016.

Further reading