|
Article on other languages:
|
The von Neumann architecture is a design model for a stored-program digital computer that uses a processing unit and a single separate storage structure to hold both instructions and data. It is named after mathematician and early computer scientist John von Neumann. Such a computer implements a universal Turing machine, and the common "referential model" of specifying sequential architectures, in contrast with parallel architectures. A stored-program digital computer is one that keeps its program instructions as well as its data in read-write, random access memory. Stored-program computers were an advancement over the program-controlled computers of the 1940s, such as Colossus and ENIAC, which were programmed by setting switches and inserting patch leads to route data and control signals between various functional units. In the majority of modern computers, the same memory is used for both data and program instructions. The terms "von Neumann architecture" and "stored-program computer" are generally used interchangeably, and that usage is followed in this article. In contrast, the Harvard architecture stores a program in a modifiable form, but without using the same physical storage or format as for general data.
DescriptionThe 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 to run video games. 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 flow charts 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 up to three weeks to set up a program on ENIAC and get it working.[1] The idea of the stored-program computer changed all that. A computer that by design includes an instruction set architecture and can store in memory a set of instructions (a program) that details the computation is more flexible. By storing those instructions in the same way as data, a stored-program machine can easily change the program, and can do so under program control. A stored-program design also lets programs modify themselves while running, effectively allowing the computer to program itself. 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 customary features of machine architecture. Self-modifying code has largely fallen out of favor, since it is very hard to understand and debug, as well as 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".[2] 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 crash. This ability for programs to create and modify other programs is also frequently exploited by malware. A buffer overflow is one very common example of such a malfunction. Malware might use a buffer overflow to smash the call stack, overwrite the existing program, and then proceed to modify other program files on the system to further propagate the malware to other machines. Memory protection and other forms of access control can help protect against both accidental and malicious program modification. Development of the stored-program conceptMathematician Alan Turing, who had been alerted to a problem of mathematical logic by the lectures of Max Newman at Cambridge University, 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.[3] 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.[4] Von Neumann became acquainted with Turing when he was 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, University of Pennsylvania, wrote about the stored-program concept in December 1943.[5][6] 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 delay line. This is the first time the construction of a practical stored-program is proposed. At that time, they were not aware of Turing's work. Von Neumann was involved in the Manhattan Project at 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 30 June 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.[7] The paper was read by dozens of von Neumann's colleagues in America and Europe, and influencing the next round of computer designs. Later, Turing produced a detailed technical report Proposed Electronic Calculator describing the Automatic Computing Engine (ACE).[8] He presented this to the Executive Committee of the National Physical Laboratory on 19 February 1946. Although Turing knew from his wartime experience at Bletchley Park that what he proposed was feasible, the secrecy which 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 read as follows.[9]
In the same book, in a chapter on ACE, the first two paragraphs read as follows.[10]
Von Neumann bottleneckThe 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 modern machines, 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 vital data to be transferred to or from memory. As CPU speed and memory size have increased much faster than the throughput between them, the bottleneck has become more of a problem. The term "von Neumann bottleneck" was coined by John Backus in his 1977 ACM Turing award lecture. According to Backus:
The performance problem is reduced by a cache between CPU and main memory, and by the development of branch prediction algorithms. 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. 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, but internally, that is still what computers spend much of their time doing. Early von Neumann-architecture computersThe First Draft described a design that was used by many universities and corporations to construct their computers.[12] Among these various computers, only ILLIAC and ORDVAC had compatible instruction sets.
Early stored-program computersThe 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.
See also
ReferencesInline
General
External links
|
||||||||||||||||||||||||||||||||||||||||||||||||||
This article is from Wikipedia. All text is available under the terms of the GNU Free Documentation License.
Mercedes Car
This site monitored by SitePinger.net