John Von Neumann and Computer Architecture

Nathan Wreggit


John von Neumann was born in 1903 and grew up in Budapest, Hungary. At a young age, von Neumann showed prodigious skill in both memorization and mathematics. At the age of six, he was able to speak classical Greek and divide two eight digit numbers in his head. By age eight, von Neumann was familiar with both differential and integral Calculus. In 1926 at the age of 23, he received his PhD in mathematics from the University of Budapest.

Before 1945, most computers were purpose built for a specific type of computation. If the purpose of the computer was changed, people would have to manually rewire tens of thousands of wires; this was an extremely error prone process. Neumann set out to change how computers were built by showing that computers could be general purpose. This means that a computer could built once and compute the answer to any type of problem. Modern computer architectures are largely based on von Neumann’s contributions.

John von Neumann’s idea was simple, put both instructions and data into the same memory unit and treat instructions as any other piece of data. Although this idea sounds simple, certain computer instructions had to be invented for von Neumann’s idea to work in practice. Since data and instructions resided within the same memory, instructions to control program flow and allow for branching also had to be created. Today, these types of instructions are taken for granted as they are used in almost all programs. Von Neumann, although influential, was not the first one to design a general-purpose computer architecture. There are three major types of computer architectures:

1. Harvard Architecture (1939)

As its name suggests, the Harvard architecture was designed and invented at Harvard for the Harvard Mark 1 computer. The main characteristic of this architecture is separate data and instruction memory units which allow for simultaneous access. Conceptually, instructions and memory occupy different memory spaces and a single address cannot uniquely identify information. This required similar memory access instructions for both instruction and data memory separately.

2. Von Neumann Architecture (1945)

The von Neumann architecture was proposed in 1945 and it took several years for a physical computer to be built based on it. The main characteristic of this architecture is data and instructions are stored in the same memory unit. This allowed for a reduction in the number of machine instructions because instructions and data were treated the same. An advantage of this architecture is that code can be self-modifying, and programs can write code to execute later. Self-modifying code is also a major downside because it makes it hard to document code flow and malware could damage other programs or the operating system. The von Neumann architecture also has a bottleneck because data and instructions cannot be accessed in parallel as in the Harvard architecture, they much be accessed in series.

3. Modified Harvard Architecture (Post 1945)

This architecture is the most widely used in modern systems. From an application programmers’ point of view, the modified Harvard architecture can be treated as von Neumann architecture. The modified Harvard architecture fixes the von Neumann architecture’s bottleneck by using separate instruction and data caches between the memory and CPU. Although this solves the bottleneck issue, caches introduce a new problem. It is hard to ensure caches stay up to date with memory when programs write to memory.

John von Neumann contributed greatly to how modern processors are built. Even though the modified Harvard architecture is technically the most used today, they are very similar in operation. Von Neumann was a pioneer in many areas of mathematics and computing. Besides the von Neumann architecture, he also contributed ideas in cellular automata, weather systems, the Manhattan project, and the technological singularity hypothesis. Sadly, John von Neumann’s contributions to humanity were cut short in 1957, when he passed away due to cancer.

References

  • "John Von Neumann." University of St. Andrews, School of Mathematics and Statistics University of St. Andrews, Scotland , Oct. 2003, www-history.mcs.st-andrews.ac.uk/Biographies/Von_Neumann.html
  • "John Von Neumann." Wikipedia, Wikimedia Foundation, 20 Mar. 2019, en.wikipedia.org/wiki/John_von_Neumann
  • "Modified Harvard Architecture." Wikipedia, Wikimedia Foundation, 15 Mar. 2019, en.wikipedia.org/wiki/Modified_Harvard_architecture
  • "The Centre for Computing History." Centre For Computing History, www.computinghistory.org.uk/det/3665/John-von-Neumann/
  • "What Is the Difference between a Von Neumann Architecture and a Harvard Architecture?" ARM Info Center, ARM, 2008, infocenter.arm.com/help/index.jsp?topic=%2Fcom.arm.doc.faqs%2Fka3839.html
  • W. Aspray, "John von Neumann's Contributions to Computing and Computer Science," in Annals of the History of Computing, vol. 11, no. 3, pp. 189-195, July-Sept. 1989