词条 | Von Neumann architecture |
释义 |
The von Neumann architecture—also known as the von Neumann model or Princeton architecture—is a computer architecture based on a 1945 description by the mathematician and physicist John von Neumann and others in the First Draft of a Report on the EDVAC.[1] That document describes a design architecture for an electronic digital computer with these components:
The term "von Neumann architecture" has evolved to mean any stored-program computer in which an instruction fetch and a data operation cannot occur at the same time because they share a common bus. This is referred to as the von Neumann bottleneck and often limits the performance of the system.[3] The design of a von Neumann architecture machine is simpler than a Harvard architecture machine—which is also a stored-program system but has one dedicated set of address and data buses for reading and writing to memory, and another set of address and data buses to fetch instructions. A stored-program digital computer keeps both program instructions and 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. Those were programmed by setting switches and inserting patch cables to route data and control signals between various functional units. The vast majority of modern computers use the same memory for both data and program instructions. The von Neumann vs. Harvard distinction applies to the cache architecture, not the main memory (split cache architecture). HistoryThe 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 run a word processor or games. Changing the program of a fixed-program machine requires rewiring, restructuring, or redesigning the machine. The earliest computers were not so much "programmed" as "designed" for a particular task. "Reprogramming"—when possible at all—was a laborious process that started with flowcharts and paper notes, followed by detailed engineering designs, and then the often-arduous process of physically rewiring and rebuilding the machine. It could take three weeks to set up and debug a program on ENIAC.[4] With the proposal of the stored-program computer, this changed. A stored-program computer includes, by design, 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 operators had to do manually in early designs. This became less important when index registers and indirect addressing became usual features of machine architecture. Another use was to embed frequently used data in the instruction stream using immediate addressing. 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. CapabilitiesOn a large scale, the ability to treat instructions as data is what makes assemblers, compilers, linkers, loaders, and other automated programming tools possible. It makes "programs that write programs" possible.[5] This has made a sophisticated self-hosting computing ecosystem flourish around von Neumann architecture machines. Some high level languages leverage the von Neumann architecture by providing an abstract, machine-independent way to manipulate executable code at runtime (e.g., LISP), or by using runtime information to tune just-in-time compilation (e.g. languages hosted on the Java virtual machine, or languages embedded in web browsers). On a smaller scale, some repetitive operations such as BITBLT or pixel and vertex shaders can be accelerated on general purpose processors with just-in-time compilation techniques. This is one use of self-modifying code that has remained popular. Development of the stored-program conceptThe 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.[6] In it he described a hypothetical machine he called a universal computing machine, 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. John von Neumann became acquainted with Turing while he was a visiting professor at Cambridge in 1935, and also during Turing's PhD year at the Institute for Advanced Study in Princeton, New Jersey during 1936 – 1937. Whether he knew of Turing's paper of 1936 at that time is not clear. In 1936, Konrad Zuse also anticipated in two patent applications that machine instructions could be stored in the same storage used for data.[7] 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. [8][9] 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 machine was proposed. At that time, he and Mauchly 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, during the summer of 1944. There he joined the ongoing discussions on the design of this stored-program computer, the EDVAC. As part of that group, he wrote up a description titled First Draft of a Report on the EDVAC[1] based on the work of 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.[10] The paper was read by dozens of von Neumann's colleagues in America and Europe, and influenced the next round of computer designs. Jack Copeland considers that it is "historically inappropriate, to refer to electronic stored-program digital computers as 'von Neumann machines'".[11] His Los Alamos colleague Stan Frankel said of von Neumann's regard for Turing's ideas: {{quote|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. [12]}} At the time that the "First Draft" report was circulated, Turing was producing a report entitled Proposed Electronic Calculator. It described in engineering and programming detail, his idea of a machine he called the Automatic Computing Engine (ACE).[13] 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 surrounding Colossus, that was subsequently maintained 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 publication Faster than Thought: A Symposium on Digital Computing Machines (edited by B. V. Bowden), a section in the chapter on Computers in America reads as follows:[14] The Machine of the Institute For Advanced Studies, Princeton
In the same book, the first two paragraphs of a chapter on ACE read as follows:[15] Automatic Computation at the National Physical Laboratory
Early von Neumann-architecture computersThe First Draft described a design that was used by many universities and corporations to construct their computers.[16] 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.
EvolutionThrough the decades of the 1960s and 1970s computers generally became both smaller and faster, which led to evolutions in their architecture. For example, memory-mapped I/O lets input and output devices be treated the same as memory.[24] A single system bus could be used to provide a modular system with lower cost{{clarify|date=November 2015}}. This is sometimes called a "streamlining" of the architecture.[25] In subsequent decades, simple microcontrollers would sometimes omit features of the model to lower cost and size. Larger computers added features for higher performance. Design limitations===Von Neumann bottleneck=== The shared bus between the program memory and data memory leads to the von Neumann bottleneck, the limited throughput (data transfer rate) between the central processing unit (CPU) and memory compared to the amount of memory. Because the single bus can only access one of the two classes of memory at a time, throughput is lower 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 continually forced to wait for needed data to move 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 new generation of CPU. The von Neumann bottleneck was described 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.[26][27] MitigationsThere are several known methods for mitigating the Von Neumann performance bottleneck. For example, the following all can improve performance{{why|date=November 2015}}:
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|date=December 2010}} 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. As of 1996, a database benchmark study found that three out of four CPU cycles were spent waiting for memory. Researchers expect that increasing the number of simultaneous instruction streams with multithreading or single-chip multiprocessing will make this bottleneck even worse.[28] In the context of multi-core processors, additional overhead is required to maintain cache coherence between processors and threads. Self-modifying codeAside from the von Neumann bottleneck, 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. See also{{Portal|Computer science}}
References1. ^1 2 {{Citation |author-last=von Neumann |author-first=John |author-link=John von Neumann |title=First Draft of a Report on the EDVAC |date=1945 |url=https://sites.google.com/site/michaeldgodfrey/vonneumann/vnedvac.pdf |access-date=2011-08-24 |archive-url=https://web.archive.org/web/20130314123032/http://qss.stanford.edu/~godfrey/vonNeumann/vnedvac.pdf |archive-date=2013-03-14}} 2. ^{{Harvnb|Ganesan|2009}} 3. ^{{Citation |author-last=Markgraf |author-first=Joey D. |title=The Von Neumann Bottleneck |date=2007 |url=http://aws.linnbenton.edu/cs271c/markgrj/ |archive-url=https://web.archive.org/web/20131212205159/http://aws.linnbenton.edu/cs271c/markgrj/ |archive-date=December 12, 2013 |deadurl=yes |df=mdy-all }} 4. ^{{Harvnb|Copeland|2006|p=104}} 5. ^{{Citation |url=http://catb.org/~esr/jargon/html/M/MFTL.html |title=MFTL (My Favorite Toy Language) entry Jargon File 4.4.7 |access-date=2008-07-11}} 6. ^{{Citation |author-last=Turing |author-first=Alan M. |author-link=Alan M. Turing |publication-date=1937 |date=1936 |title=On Computable Numbers, with an Application to the Entscheidungsproblem |periodical=Proceedings of the London Mathematical Society |series=2 |volume=42 |pages=230–265 |doi=10.1112/plms/s2-42.1.230}} (and {{Citation |author-last=Turing |author-first=Alan M. |author-link=Alan M. Turing |publication-date=1937 |title=On Computable Numbers, with an Application to the Entscheidungsproblem. A correction |periodical=Proceedings of the London Mathematical Society |series=2 |volume=43 |pages=544–546 |doi=10.1112/plms/s2-43.6.544 |date=1938 |issue=6}}) 7. ^{{citation |title=Electronic Digital Computers |journal=Nature |date=September 25, 1948 |volume=162 |page=487 |url=http://www.computer50.org/kgill/mark1/natletter.html |access-date=2009-04-10 |doi=10.1038/162487a0 |deadurl=yes |archiveurl=https://web.archive.org/web/20090406014626/http://www.computer50.org/kgill/mark1/natletter.html |archivedate=April 6, 2009 |df=mdy-all }} 8. ^{{cite book |author-last=Lukoff |author-first=Herman |author-link=Herman Lukoff |title=From Dits to Bits: A personal history of the electronic computer |date=1979 |publisher=Robotics Press |location=Portland, Oregon, USA |isbn=0-89661-002-0 |lccn=79-90567}} 9. ^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.". 10. ^{{Harvnb|Copeland|2006|p=113}} 11. ^{{Citation |author-last=Copeland |author-first=Jack |author-link=Jack Copeland |title=A Brief History of Computing: ENIAC and EDVAC |date=2000 |url=http://www.alanturing.net/turing_archive/pages/Reference%20Articles/BriefHistofComp.html#ACE |access-date=2010-01-27}} 12. ^{{Citation |author-last=Copeland |author-first=Jack |author-link=Jack Copeland |title=A Brief History of Computing: ENIAC and EDVAC |date=2000 |url=http://www.alanturing.net/turing_archive/pages/Reference%20Articles/BriefHistofComp.html#ACE |access-date=2010-01-27}} which cites {{Citation |author-last=Randell |author-first=Brian |author-link=Brian Randell |title=On Alan Turing and the Origins of Digital Computers |editor-last=Meltzer |editor-first=B. |editor-last2=Michie |editor-first2=D. |page=10 |place=Edinburgh |publisher=Edinburgh University Press |journal=Machine Intelligence |volume=7 |date=1972 |isbn=0-902383-26-4}} 13. ^{{Harvnb|Copeland|2006|pp=108–111}} 14. ^{{Harvnb|Bowden|1953|pp=176,177}} 15. ^{{Harvnb|Bowden|1953|p=135}} 16. ^{{cite web |url=http://www.ias.edu/people/vonneumann/ecp/ |title=Electronic Computer Project |publisher=Institute for Advanced Study |access-date=2011-05-26}} 17. ^1 {{cite journal |author-last1=Campbell-Kelly |author-first1=Martin |title=The Development of Computer Programming in Britain (1945 to 1955) |journal=IEEE Annals of the History of Computing |date=April 1982 |volume=4 |issue=2 |pages=121–139 |doi=10.1109/MAHC.1982.10016}} 18. ^{{citation |author-first=James E. |author-last=Robertson |title=Illiac Design Techniques |publisher=report number UIUCDCS-R-1955-146, Digital Computer Laboratory, University of Illinois at Urbana-Champaign |date=1955}} 19. ^{{US patent|2636672|src=uspto|Selective Sequence Electronic Calculator (USPTO Web site)}} 20. ^{{US patent|2636672|Selective Sequence Electronic Calculator (Google Patents)}} 21. ^{{Citation |author-first=Herbert R. J. |author-last=Grosch |title=Computer: Bit Slices From a Life |date=1991 |publisher=Third Millennium Books |isbn=0-88733-085-1 |url=http://www.columbia.edu/acis/history/computer.html |author-link=Herb Grosch}} 22. ^{{cite book |editor-last1=Lavington |editor-first1=Simon |title=Alan Turing and his Contemporaries: Building the World's First Computers |date=2012 |publisher=British Computer Society |location=London |isbn=9781906124908 |page=61}} 23. ^{{cite web |author-last1=Johnson |author-first1=Roger |title=School of Computer Science & Information Systems: A Short History |url=http://www.dcs.bbk.ac.uk/site/assets/files/1029/50yearsofcomputing.pdf |website=Birkbeck College |publisher=University of London |access-date=2017-07-23 |date=April 2008}} 24. ^{{Citation |title=A New Architecture for Mini-Computers—The DEC PDP-11 |author-first1=C. Gordon |author-last1=Bell |author-link1=Gordon Bell |author-first2=R. |author-last2=Cady |author-first3=H. |author-last3=McFarland |author-first4=J. |author-last4=O'Laughlin |author-first5=R. |author-last5=Noonan |author-first6=W. |author-last6=Wulf |work=Spring Joint Computer Conference |pages=657–675 |date=1970 |url=http://research.microsoft.com/en-us/um/people/gbell/CGB%20Files/New%20Architecture%20PDP11%20SJCC%201970%20c.pdf}} 25. ^{{Citation |title=The essentials of computer organization and architecture |author-first1=Linda |author-last1=Null |author-first2=Julia |author-last2=Lobur |publisher=Jones & Bartlett Learning |date=2010 |isbn=978-1-4496-0006-8 |edition=3rd |pages=36, 199–203 |url=https://books.google.com/books?id=f83XxoBC_8MC&pg=PA36}} 26. ^{{cite journal |doi=10.1145/359576.359579 |title=Can Programming Be Liberated from the von Neumann Style? A Functional Style and Its Algebra of Programs |author-last=Backus |author-first=John W. |author-link=John Backus}} 27. ^{{cite web |url=http://www.cs.utexas.edu/~EWD/transcriptions/EWD06xx/EWD692.html |title=E. W. Dijkstra Archive: A review of the 1977 Turing Award Lecture |access-date=2008-07-11 |author-first=Edsger W. |author-last=Dijkstra |author-link=Edsger W. Dijkstra}} 28. ^Sites, Richard L.; Patt, Yale. "Architects Look to Processors of Future". Microprocessor report. 1996 Further reading{{refbegin}}
External links{{Commons category}}
8 : Computer architecture|Flynn's taxonomy|Reference models|Classes of computers|School of Computer Science, University of Manchester|Open problems|Computer-related introductions in 1945|John von Neumann |
随便看 |
|
开放百科全书收录14589846条英语、德语、日语等多语种百科知识,基本涵盖了大多数领域的百科知识,是一部内容自由、开放的电子版国际百科全书。