Von Neumann Architecture - Von Neumann Model - Princeton Architecture
  • is a computer architecture based on a 1945 description by John von Neumann
  • is a SISD instruction stream-driven architecture
  • the term “von Neumann architecture” has evolved to refer to any stored-program computer in which an instruction fetch and a data operation cannot occur at the same time (since they share a common bus). This is referred to as the von Neumann bottleneck, which often limits the performance of the corresponding system
Stored-Program Computer
  • is a computer that keeps both program instructions and data in the same primary memory

Von Neumann Architecture - History

  • before 1945 computers were not programmable (i.e. software did not exist as it was hardwired into computers)
  • ENIAC was the first programmable computer, completed in 1945
    • is technically a program-controlled computer, instead of a stored-program computer
    • was programmed by setting switches and inserting patch cables to route data and control signals between various functional units (this was a manual process)
    • it could take three weeks to set up and debug a program on ENIAC
  • EDVAC was the successor to ENIAC
    • considered the first stored-program computer

Von Neumann Architecture - Use Cases

  • 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
  • some high-level languages leverage the von Neumann architecture by providing an abstract, machine-independent way to manipulate executable code at runtime

Von Neumann Architecture - Components

The document describes a design architecture for an electronic digital computer with these components

  • A processing unit with both an arithmetic logic unit and processor registers
  • A control unit that includes an instruction register and a program counter
  • Memory that stores data and instructions
  • External mass storage
  • Input and output mechanisms

Von Neumann Architecture - 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 CPU and memory; compared to the amount of memory

Von Neumann Architecture - Self-Modifying Code (Introduction to Software Bugs)

Aside from the von Neumann bottleneck, program modifications can be quite harmful, either by accident or design