History of Computers - Von Neumann Architecture

From SJS Wiki
Revision as of 11:11, 7 September 2013 by Karaja (Talk | contribs)

Jump to: navigation, search

Introduction

Von Neumann architecture was developed by computer scientists/mathematicians John von Neumann, John William Mauchly, J. Presper Eckert, and Arthur Burks in 1945. The term originated when Von Neumann, with the help of Mauchly, Eckert, and Burks, wrote a paper titled First Draft of a Report on the EDVAC (1945) that proposed the concept of a stored-program computer that would be the successor to the ENIAC.

In contrast to the more modern Harvard architecture, Von Neumann stored-program computers use the same storage to hold both the instructions needed for a computation and the data needed or generated by the computation. (Harvard architecture uses different sets of data and address buses to read/write data and fetch instructions.)

The first Von Neumann computer was the Manchester Mark I, built in Manchester University in England. In 1948, the Manchester Mark I ran its first program out of a 96-word memory.

In 1952, the EDVAC (electronic discrete variable automatic computer) was completed with Von Neumann's design.

Overview

In previous, more special-purpose computers, the instruction set was programmed into the hardware, and only the data set and the immediate computational results were stored, and thus these computers were restricted to performing only the one computational procedure that they were built for. With the development of Von Neumann architecture, computers became reprogrammable and thus more general-purpose since instructions could be changed or replaced easily.


A basic Von Neumann computer is composed of five parts: memory/storage for both the data set and the program (nowadays, this memory is RAM), a control unit (part of the CPU), an arithmetic logic unit (ALU; also part of the CPU), input and output structures, and a data bus that connects these parts. The control unit executes the program instructions sequentially, one at a time, and has a register (sometimes called an accumulator) to store immediate results.


A true Von Neumann computer performs the following sequence of steps to execute a single instruction:

  1. Check the memory address in the control unit's program counter.
  2. Fetch the instruction located at the given address.
  3. Add the length of instruction to the program counter.
  4. Execute the instruction using the control unit, which commands the rest of the computer to perform the instruction/operation.
  • The instruction may change the address in the program counter for two reasons:
      1. To perform a repetitive operation
      2. If some arithmetic condition is true
  1. Proceed to step 1 and repeat the process for the next instruction.

Most computers do not have pure Von Neumann architecture and add another step to check for interrupts (electronic events).


A drawback of Von Neumann architecture is that computers built with this architecture can only do either an instruction fetch or a data operation at a time, and they spend a lot of time moving data to and from memory, so performance slows down and reaches a bottleneck (i.e. the Von Neumann Bottleneck). However, this issue has been corrected with the development of parallel computers, which are based upon Von Neumann processors, but in which the CPUs are connected in parallel and thus.

Another downside of Von Neumann architecture stems from the fact that there is no distinction between instructions and data in memory. To perform an instruction, a Von Neumann computer checks the memory address in the control unit's program counter and fetches the instruction located at the given address, but the control unit can't effectively distinguish whether the fetched data is an instruction or data. Thus, instructions can sometimes operate upon other instructions (which the control unit would recognize as data), and that allows for self-modifying programs, which are not considered to be within good programming practice due to the complications they cause in debugging.

Significance

Von Neumann architecture allowed computers to become truly reprogrammable for the first time, for it allowed for instructions to be changed easily since only the working storage (and not the permanent storage) had to be changed. This set the stage for future, more general-purpose computers, which could be used to perform a variety of different computational procedures since new instruction sets could be inputted. Another reason that Von Neumann architecture is significant to computer history is because computers today are still stored-program (meaning that programs are stored and executed in main memory), albeit using the two-bus system of Harvard architecture. In fact, Von Neumann architecture laid the foundation for the development of Harvard architecture.