First Draft of a Report on the EDVAC
Authors: John von Neumann
Year: 1945 | Moore School of Electrical Engineering (technical report)
Source: neumann-1945-first-draft-of-a-report
What it is
Von Neumann’s 1945 report described the stored-program computer architecture — the design in which program instructions live in the same memory as data and are executed sequentially by a central processing unit. Every computer, smartphone, and GPU built since then uses this architecture.
The stored-program idea
Before the EDVAC report, computers like ENIAC were hard-wired — changing the program meant physically rewiring the machine. This took days.
Von Neumann’s insight: encode instructions as numbers, store them in memory alongside the data, and have the control unit fetch and execute them one at a time. To run a different program, just change the contents of memory.
This is the physical realization of Turing’s Universal Turing Machine: the “description” of the program lives in memory, and the CPU is the universal interpreter.
The five components
┌────────┐ ┌────────────┐ ┌────────┐
│ Input │ → │ Memory │ ←→ │ ALU │
└────────┘ │ (data + │ │(arith/ │
│ instructions│ │ logic) │
└──────┬─────┘ └────────┘
│
┌──────┴─────┐ ┌────────┐
│ Control │ → │ Output │
└────────────┘ └────────┘
- Memory: stores both data and instructions in one address space
- Arithmetic/Logic Unit (ALU): performs computations
- Control unit: fetches instructions, decodes them, orchestrates execution
- Input: reads from the outside world
- Output: writes to the outside world
Why stored-program was revolutionary
| Feature | Hard-wired (ENIAC) | Stored-program (EDVAC) |
|---|---|---|
| Change program | Days of rewiring | Milliseconds (load new data) |
| Program complexity | Limited by physical wiring | Unlimited (loops, branches) |
| Universality | Special-purpose | General-purpose |
| Self-modification | Impossible | Possible (programs can rewrite themselves) |
Conditional branching — the ability to jump to a different instruction based on data — makes the stored-program computer Turing-complete. It can simulate any Turing machine.
Binary representation
Von Neumann advocated for binary (base 2) over decimal:
- Electronic switches are naturally bistable (on/off)
- Binary arithmetic circuits are simpler and more reliable than decimal
- Single-bit errors are easier to detect and correct
All modern computers use binary. The connection runs directly to Shannon (1948): a binary digit carries exactly 1 bit of information.
Connection to Turing
Turing’s 1936 Universal Turing Machine proved theoretically that one machine can simulate any other. Von Neumann’s architecture is the hardware realization:
- Turing’s tape = memory
- Turing’s state table = program (stored in memory)
- Turing’s read-write head = CPU (control + ALU)
The stored-program computer is not just inspired by Turing — it is a physical UTM.
Historical note
The EDVAC report was circulated without listing co-authors, creating priority disputes with Eckert and Mauchly (who had developed related ideas at the Moore School). The architecture is named after von Neumann despite the collaborative development.
The first computer to actually run a stored program was the Manchester Mark 1 (June 1948), built by Freddie Williams and Tom Kilburn.
The von Neumann bottleneck
One limitation of the architecture: the CPU and memory are connected by a bus, and data must flow through this bus for every operation. As CPUs became faster, memory became the bottleneck.
Modern solutions (caches, pipelining, SIMD) work around the bottleneck without changing the fundamental architecture. Neural network accelerators (GPUs, TPUs) partially escape it by keeping data in fast local memory during computation — but they still run programs stored in memory, making them von Neumann machines at the system level.
See also
- turing-1936-on-computable-numbers-with-an — The theoretical universal computing machine
- shannon-1938-symbolic-analysis-of-relay-and — Boolean circuits that implement ALU operations