Jump to content

Von Neumann architecture

From Wikipedia, the free encyclopedia

This is an old revision of this page, as edited by 68.0.124.33 (talk) at 10:59, 3 August 2011 (von Neumann bottleneck is an open problem). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

The von Neumann architecture is a design model for a stored-program digital computer that uses a central processing unit (CPU) and a single separate storage structure ("memory") to hold both instructions and data. It is named after the mathematician and early computer scientist John von Neumann. Such computers are theoretically equivalent to a universal Turing machine and have a sequential architecture.

A stored-program digital computer is one that keeps its programmed instructions, as well as its data, in read-write, random-access memory (RAM). Stored-program computers were an advancement over the program-controlled computers of the 1940s, such as the Colossus and the ENIAC, which were programmed by setting switches and inserting patch leads to route data and to control signals between various functional units. In the vast majority of modern computers, the same memory is used for both data and program instructions. The mechanisms for transferring the data and instructions between the CPU and memory are, however, considerably more complex than the original von Neumann architecture.

The terms "von Neumann architecture" and "stored-program computer" are often used interchangeably,[1] and that usage is followed in this article.

Description

The earliest computing machines had fixed programs. Some very simple computers still use this design, either for simplicity or training purposes. For example, a desk calculator (in principle) is a fixed program computer. It can do basic mathematics, but it cannot be used as a word processor or a gaming console. Changing the program of a fixed-program machine requires re-wiring, re-structuring, or re-designing the machine. The earliest computers were not so much "programmed" as they were "designed". "Reprogramming", when it was possible at all, was a laborious process, starting with flowcharts and paper notes, followed by detailed engineering designs, and then the often-arduous process of physically re-wiring and re-building the machine. It could take three weeks to set up a program on ENIAC and get it working.[2]

The idea of the stored-program computer changed all that: a computer that by design includes an instruction set and can store in memory a set of instructions (a program) that details the computation.

A stored-program design also allows for self-modifying code. One early motivation for such a facility was the need for a program to increment or otherwise modify the address portion of instructions, which had to be done manually in early designs. This became less important when index registers and indirect addressing became usual features of machine architecture. Self-modifying code has largely fallen out of favor, since it is usually hard to understand and debug, as well as being inefficient under modern processor pipelining and caching schemes.

On a large scale, the ability to treat instructions as data is what makes assemblers, compilers and other automated programming tools possible. One can "write programs which write programs".[3] On a smaller scale, I/O-intensive machine instructions such as the BITBLT primitive used to modify images on a bitmap display, were once thought to be impossible to implement without custom hardware. It was shown later that these instructions could be implemented efficiently by "on the fly compilation" ("just-in-time compilation") technology, e.g., code-generating programs—one form of self-modifying code that has remained popular.

There are drawbacks to the von Neumann design. Aside from the von Neumann bottleneck described below, program modifications can be quite harmful, either by accident or design. In some simple stored-program computer designs, a malfunctioning program can damage itself, other programs, or the operating system, possibly leading to a computer crash. Memory protection and other forms of access control can usually protect against both accidental and malicious program modification.

Development of the stored-program concept

The mathematician Alan Turing, who had been alerted to a problem of mathematical logic by the lectures of Max Newman at the University of Cambridge, wrote a paper in 1936 entitled On Computable Numbers, with an Application to the Entscheidungsproblem, which was published in the Proceedings of the London Mathematical Society.[4] In it he described a hypothetical machine which he called a "universal computing machine", and which is now known as the "universal Turing machine". The hypothetical machine had an infinite store (memory in today's terminology) that contained both instructions and data. The German engineer Konrad Zuse independently wrote about this concept in 1936.[5] John von Neumann became acquainted with Turing when he was a visiting professor at Cambridge in 1935 and also during the year that Turing spent at Princeton University in 1936-37. Whether he knew of Turing's 1936 paper at that time is not clear.

Independently, J. Presper Eckert and John Mauchly, who were developing the ENIAC at the Moore School of Electrical Engineering, at the University of Pennsylvania, wrote about the stored-program concept in December 1943.[6][7] In planning a new machine, EDVAC, Eckert wrote in January 1944 that they would store data and programs in a new addressable memory device, a mercury metal delay line memory. This was the first time the construction of a practical stored-program was proposed. At that time, they were not aware of Turing's work.

Von Neumann was involved in the Manhattan Project at the Los Alamos National Laboratory, which required huge amounts of calculation. This drew him to the ENIAC project, in the summer of 1944. There he joined into the ongoing discussions on the design of this stored-program computer, the EDVAC. As part of that group, he volunteered to write up a description of it. The term "von Neumann architecture" arose from von Neumann's paper First Draft of a Report on the EDVAC dated June 30, 1945, which included ideas from Eckert and Mauchly. It was unfinished when his colleague Herman Goldstine circulated it with only von Neumann's name on it, to the consternation of Eckert and Mauchly.[8] The paper was read by dozens of von Neumann's colleagues in America and Europe, and influenced the next round of computer designs.

Von Neumann was, then, not alone in putting forward the idea of the stored-program architecture, and Jack Copeland considers that it is "historically inappropriate, to refer to electronic stored-program digital computers as 'von Neumann machines'".[9] His Los Alamos colleague Stan Frankel said of his regard for Turing's ideas:

I know that in or about 1943 or '44 von Neumann was well aware of the fundamental importance of Turing's paper of 1936 ... Von Neumann introduced me to that paper and at his urging I studied it with care. Many people have acclaimed von Neumann as the "father of the computer" (in a modern sense of the term) but I am sure that he would never have made that mistake himself. He might well be called the midwife, perhaps, but he firmly emphasized to me, and to others I am sure, that the fundamental conception is owing to Turing— in so far as not anticipated by Babbage ... Both Turing and von Neumann, of course, also made substantial contributions to the "reduction to practice" of these concepts but I would not regard these as comparable in importance with the introduction and explication of the concept of a computer able to store in its memory its program of activities and of modifying that program in the course of these activities. [10]

Later, Turing produced a detailed technical report Proposed Electronic Calculator describing the Automatic Computing Engine (ACE).[11] He presented this to the Executive Committee of the British National Physical Laboratory on February 19, 1946. Although Turing knew from his wartime experience at Bletchley Park that what he proposed was feasible, the secrecy that was maintained about Colossus for several decades prevented him from saying so. Various successful implementations of the ACE design were produced.

Both von Neumann's and Turing's papers described stored-program computers, but von Neumann's earlier paper achieved greater circulation and the computer architecture it outlined became known as the "von Neumann architecture". In the 1953 book Faster than Thought (edited by B.V. Bowden), a section in the chapter on Computers in America reads as follows:[12]

THE MACHINE OF THE INSTITUTE FOR ADVANCED STUDIES, PRINCETON

In 1945, Professor J. von Neumann, who was then working at the Moore School of Engineering in Philadelphia, where the E.N.I.A.C. had been built, issued on behalf of a group of his co-workers a report on the logical design of digital computers. The report contained a fairly detailed proposal for the design of the machine which has since become known as the E.D.V.A.C. (electronic discrete variable automatic computer). This machine has only recently been completed in America, but the von Neumann report inspired the construction of the E.D.S.A.C. (electronic delay-storage automatic calculator) in Cambridge (see page 130).

In 1947, Burks, Goldstine and von Neumann published another report which outlined the design of another type of machine (a parallel machine this time) which should be exceedingly fast, capable perhaps of 20,000 operations per second. They pointed out that the outstanding problem in constructing such a machine was in the development of a suitable memory, all the contents of which were instantaneously accessible, and at first they suggested the use of a special tube—called the Selectron, which had been invented by the Princeton Laboratories of the R.C.A. These tubes were expensive and difficult to make, so von Neumann subsequently decided to build a machine based on the Williams memory. This machine, which was completed in June, 1952 in Princeton has become popularly known as the Maniac. The design of this machine has inspired that of half a dozen or more machines which are now being built in America, all of which are known affectionately as "Johniacs."'

In the same book, the first two paragraphs of a chapter on ACE read as follows:[13]

AUTOMATIC COMPUTATION AT THE NATIONAL PHYSICAL LABORATORY'

One of the most modern digital computers which embodies developments and improvements in the technique of automatic electronic computing was recently demonstrated at the National Physical Laboratory, Teddington, where it has been designed and built by a small team of mathematicians and electronics research engineers on the staff of the Laboratory, assisted by a number of production engineers from the English Electric Company, Limited. The equipment so far erected at the Laboratory is only the pilot model of a much larger installation which will be known as the Automatic Computing Engine, but although comparatively small in bulk and containing only about 800 thermionic valves, as can be judged from Plates XII, XIII and XIV, it is an extremely rapid and versatile calculating machine.

The basic concepts and abstract principles of computation by a machine were formulated by Dr. A. M. Turing, F.R.S., in a paper1. read before the London Mathematical Society in 1936, but work on such machines in Britain was delayed by the war. In 1945, however, an examination of the problems was made at the National Physical Laboratory by Mr. J. R. Womersley, then superintendent of the Mathematics Division of the Laboratory. He was joined by Dr. Turing and a small staff of specialists, and, by 1947, the preliminary planning was sufficiently advanced to warrant the establishment of the special group already mentioned. In April, 1948, the latter became the Electronics Section of the Laboratory, under the charge of Mr. F. M. Colebrook.

Early von Neumann-architecture computers

The First Draft described a design that was used by many universities and corporations to construct their computers.[14] Among these various computers, only ILLIAC and ORDVAC had compatible instruction sets.

  • ORDVAC (U-Illinois) at Aberdeen Proving Ground, Maryland (completed November 1951[15])
  • IAS machine at Princeton University (January 1952)
  • MANIAC I at Los Alamos Scientific Laboratory (March 1952)
  • ILLIAC at the University of Illinois, (September 1952)
  • AVIDAC at Argonne National Laboratory (1953)
  • ORACLE at Oak Ridge National Laboratory (June 1953)
  • JOHNNIAC at RAND Corporation (January 1954)
  • BESK in Stockholm (1953)
  • BESM-1 in Moscow (1952)
  • DASK in Denmark (1955)
  • PERM in Munich (1956?)
  • SILLIAC in Sydney (1956)
  • WEIZAC in Rehovoth (1955)

Early stored-program computers

The date information in the following chronology is difficult to put into proper order. Some dates are for first running a test program, some dates are the first time the computer was demonstrated or completed, and some dates are for the first delivery or installation.

  • The IBM SSEC had the ability to treat instructions as data, and was publicly demonstrated on January 27, 1948. This ability was claimed in a US patent.[16] However it was partially electromechanical, not fully electronic. In practice, instructions were read from paper tape due to its limited memory.[17]
  • The Manchester SSEM (the Baby) was the first fully electronic computer to run a stored program. It ran a factoring program for 52 minutes on June 21, 1948, after running a simple division program and a program to show that two numbers were relatively prime.
  • The ENIAC was modified to run as a primitive read-only stored-program computer (using the Function Tables for program ROM) and was demonstrated as such on September 16, 1948, running a program by Adele Goldstine for von Neumann.
  • The BINAC ran some test programs in February, March, and April 1949, although was not completed until September 1949.
  • The Manchester Mark 1 developed from the SSEM project. An intermediate version of the Mark 1 was available to run programs in April 1949, but was not completed until October 1949.
  • The EDSAC ran its first program on May 6, 1949.
  • The EDVAC was delivered in August 1949, but it had problems that kept it from being put into regular operation until 1951.
  • The CSIR Mk I ran its first program in November 1949.
  • The SEAC was demonstrated in April 1950.
  • The Pilot ACE ran its first program on May 10, 1950 and was demonstrated in December 1950.
  • The SWAC was completed in July 1950.
  • The Whirlwind was completed in December 1950 and was in actual use in April 1951.
  • The first ERA Atlas (later the commercial ERA 1101/UNIVAC 1101) was installed in December 1950.

Evolution

Single system bus evolution of the architecture

Through the decades of the 1960s and 1970s computers generally became both smaller and faster, which led to some evolutions in their architecture. For example, memory-mapped I/O allows input and output devices to be treated the same as memory.[18] A single system bus could be used to provide a modular system with lower cost. This is sometimes called a "streamlining" of the architecture.[19] In subsequent decades, simple microcontrollers would sometimes omit features of the model to lower cost and size. Larger computers added features for higher performance.

Von Neumann bottleneck

The separation between the CPU and memory leads to the von Neumann bottleneck, the limited throughput (data transfer rate) between the CPU and memory compared to the amount of memory. In most modern computers, throughput is much smaller than the rate at which the CPU can work. This seriously limits the effective processing speed when the CPU is required to perform minimal processing on large amounts of data. The CPU is continuously forced to wait for needed data to be transferred to or from memory. Since CPU speed and memory size have increased much faster than the throughput between them, the bottleneck has become more of a problem, a problem whose severity increases with every newer generation of CPU.

The term "von Neumann bottleneck" was coined by John Backus in his 1977 ACM Turing Award lecture. According to Backus:

Surely there must be a less primitive way of making big changes in the store than by pushing vast numbers of words back and forth through the von Neumann bottleneck. Not only is this tube a literal bottleneck for the data traffic of a problem, but, more importantly, it is an intellectual bottleneck that has kept us tied to word-at-a-time thinking instead of encouraging us to think in terms of the larger conceptual units of the task at hand. Thus programming is basically planning and detailing the enormous traffic of words through the von Neumann bottleneck, and much of that traffic concerns not significant data itself, but where to find it.[20]

The performance problem can be alleviated (to some extent) by several mechanisms. Providing a cache between the CPU and the main memory, providing separate caches or separate access paths for data and instructions (the so-called Modified Harvard architecture), and using branch predictor algorithms and logic are three of the ways performance is increased. The problem can also be sidestepped somewhat by using parallel computing, using for example the Non-Uniform Memory Access (NUMA) architecture—this approach is commonly employed by supercomputers. It is less clear whether the intellectual bottleneck that Backus criticized has changed much since 1977. Backus's proposed solution has not had a major influence.[citation needed] Modern functional programming and object-oriented programming are much less geared towards "pushing vast numbers of words back and forth" than earlier languages like Fortran were, but internally, that is still what computers spend much of their time doing, even highly parallel supercomputers.

Non-von Neumann processors

The NEC µPD7281D pixel processor was the first non-von Neumann microprocessor.[citation needed]

Perhaps the most common kind of non-von Neumann structure used in modern computers is content-addressable memory (CAM).

In some cases, emerging memristor technology may be able to circumvent the von Neumann bottleneck.[21]

See also

References

Inline

  1. ^ Barry Blundell (2008). Computer Hardware. Cengage Learning EMEA. p. 54. ISBN 9781844807512.
  2. ^ Copeland (2006) p. 104.
  3. ^ MFTL (My Favorite Toy Language) entry Jargon File 4.4.7, retrieved 2008-07-11
  4. ^ Turing, A.M. (1936), "On Computable Numbers, with an Application to the Entscheidungsproblem", Proceedings of the London Mathematical Society, 2, vol. 42 (published 1937), pp. 230–65, doi:10.1112/plms/s2-42.1.230 (and Turing, A.M. (1938), "On Computable Numbers, with an Application to the Entscheidungsproblem: A correction", Proceedings of the London Mathematical Society, 2, vol. 43 (published 1937), pp. 544–6, doi:10.1112/plms/s2-43.6.544)
  5. ^ The Life and Work of Konrad Zuse Part 10: Konrad Zuse and the Stored Program Computer, archived from the original on June 1, 2008, retrieved 2008-07-11
  6. ^ Lukoff, Herman (1979), From Dits to Bits...: A Personal History of the Electronic Computer, Robotics Press, ISBN 978-0-89661-002-6
  7. ^ ENIAC project administrator Grist Brainerd's December 1943 progress report for the first period of the ENIAC's development implicitly proposed the stored program concept (while simultaneously rejecting its implementation in the ENIAC) by stating that "in order to have the simplest project and not to complicate matters" the ENIAC would be constructed without any "automatic regulation".
  8. ^ Copeland (2006) p. 113
  9. ^ Copeland, Jack (2000), A Brief History of Computing: ENIAC and EDVAC, retrieved 27 January 2010
  10. ^ Copeland, Jack (2000), A Brief History of Computing: ENIAC and EDVAC, retrieved 27 January 2010 which cites Randell, B. (1972), Meltzer, B.; Michie, D. (eds.), "On Alan Turing and the Origins of Digital Computers", Machine Intelligence 7, Edinburgh: Edinburgh University Press: 10, ISBN 0902383264
  11. ^ Copeland (2006) pp. 108-111
  12. ^ Bowden (1953) pp. 176,177
  13. ^ Bowden (1953) p. 135
  14. ^ "Electronic Computer Project". Institute for Advanced Study. Retrieved May 26, 2011.
  15. ^ Illiac Design Techniques, report number UIUCDCS-R-1955-146, Digital Computer Laboratory, University of Illinois at Urbana-Champaign, 1955 {{citation}}: Unknown parameter |name= ignored (help)
  16. ^ F.E. Hamilton, R.R. Seeber, R.A. Rowley, and E.S. Hughes (January 19, 1949). "Selective Sequence Electronic Calculator". US Patent 2,636,672. Retrieved April 28, 2011.{{cite web}}: CS1 maint: multiple names: authors list (link) Issued April 28, 1953.
  17. ^ Herbert R.J. Grosch (1991). Computer: Bit Slices From a Life. Third Millennium Books. ISBN 0-88733-085-1.
  18. ^ C. Gordon Bell; R. Cady; H. McFarland; J. O'Laughlin; R. Noonan; W. Wulf (1970). "A New Architecture for Mini-Computers—The DEC PDP-11" (PDF). Spring Joint Computer Conference: 657–675.
  19. ^ Linda Null; Julia Lobur (2010). The essentials of computer organization and architecture (3rd ed.). Jones & Bartlett Learning. pp. 36, 199–203. ISBN 9781449600068.
  20. ^ E. W. Dijkstra Archive: A review of the 1977 Turing Award Lecture, retrieved 2008-07-11
  21. ^ Mouttet, Blaise L (2009), "Memristor Pattern Recognition Circuit Architecture for Robotics" (PDF), Proceedings of the 2nd International Multi-Conference on Engineering and Technological Innovation, II: 65–70

General

  • Bowden, B.V., ed. (1953), "Computers in America", Faster Than Thought: A Symposium on Digital Computing Machines, London: Sir Isaac Pitman and Sons Ltd.
  • Rojas, Raúl; Hashagen, Ulf, eds. (2000), The First Computers: History and Architectures, MIT Press, ISBN 0-262-18197-5
  • Davis, Martin (2000), The universal computer: the road from Leibniz to Turing, New York: W W Norton & Company Inc., ISBN 0-393-04785-7
  • Can Programming be Liberated from the von Neumann Style?, John Backus, 1977 ACM Turing Award Lecture. Communications of the ACM, August 1978, Volume 21, Number 8. Online PDF
  • C. Gordon Bell and Allen Newell (1971), Computer Structures: Readings and Examples, McGraw-Hill Book Company, New York. Massive (668 pages).
  • Copeland, Jack (2006), "Colossus and the Rise of the Modern Computer", in Copeland, B. Jack (ed.), Colossus: The Secrets of Bletchley Park's Codebreaking Computers, Oxford: Oxford University Press, ISBN 978-0-19-284055-4.

Template:Link FA