The von Neumann idea
The design almost every computer still uses was set out in 1945, and its central idea is that programs and data are stored in the same memory. Before that, machines were rewired to change what they did. Storing the program as data meant a machine could be reprogrammed by loading different numbers — which is what made general-purpose computing possible.
It also creates the architecture's main weakness. Instructions and data travel along the same bus, so they cannot move at the same time. The processor spends much of its life waiting for memory, a limitation known as the von Neumann bottleneck.
| Component | What it does |
|---|---|
| ALU | performs arithmetic and logical operations |
| Control unit | decodes instructions and issues control signals |
| Program counter (PC) | holds the address of the NEXT instruction |
| Memory address register (MAR) | holds the address currently being accessed |
| Memory data register (MDR) | holds the data or instruction just fetched |
| Current instruction register (CIR) | holds the instruction being decoded |
| Accumulator (ACC) | holds the working result of calculations |
| Status register | holds flags set by the last operation |
The three buses, and which way they run
The address bus is unidirectional — addresses only ever travel from the processor to memory. The data bus is bidirectional, since data moves both ways. The control bus carries timing and command signals and is also bidirectional. A frequent question asks for the direction of each and the reason, and the address bus is the one that must be one-way.
The fetch–decode–execute cycle
A processor does not execute an instruction in one action. It repeats a fixed cycle: collect the next instruction from memory, work out what it means, then carry it out. That cycle runs billions of times per second and never varies in structure.
Tracing it in terms of registers is a standard exam task, and the wording matters — each step must name the registers involved rather than describing the effect loosely.
- PC
- program counteraddress of the NEXT instruction, not the current one
- MAR
- memory address registerthe address being accessed right now
- MDR
- memory data registerwhatever was just read from or is going to memory
- CIR
- current instruction registerholds the instruction while it is decoded
Step through and watch the registers change. Notice that the program counter is incremented before the instruction is executed, not after — which is exactly why a jump instruction can overwrite it and still work correctly.
Why the increment happens early
If the PC were incremented after execution, a jump instruction that had just written a new address into the PC would then have that address incremented — and the jump would land one instruction too far. Incrementing during the fetch means a jump simply overwrites the PC afterwards and works correctly. Questions about jumps almost always hinge on this ordering.
What makes a processor faster
Four factors are examined, and the useful thing is that each has a limit — which is why raw clock speed stopped rising years ago.
Clock speed sets how many cycles occur per second, but higher speeds generate heat that becomes impractical to remove. Cache is small, very fast memory close to the core holding recently used data; more cache reduces waiting on main memory, but it is expensive per byte. Word length and bus width determine how much moves at once — a wider data bus carries more per transfer, and a wider address bus can address more memory.
Since clock speed hit a thermal ceiling, manufacturers added cores instead. Two cores can genuinely execute two instructions at the same moment, but only if the software is written to divide the work — which is why a single-threaded program runs no faster on an eight-core machine.
| Change | Effect | Its limit |
|---|---|---|
| higher clock speed | more cycles per second | heat becomes unmanageable |
| more cache | less waiting on main memory | expensive, and diminishing returns |
| wider data bus | more data per transfer | physical pin count and cost |
| wider address bus | more memory addressable | rarely the bottleneck now |
| more cores | genuine parallel execution | software must be written for it |
Parallel processing and virtual machines
Parallel systems are classified by whether the instructions and the data are single or multiple. SISD is the traditional single processor. SIMD applies one instruction to many data items simultaneously, which is what a graphics processor does to millions of pixels. MIMD runs different instructions on different data, which is what a multi-core CPU does.
A virtual machine is software that behaves like a physical computer. One physical machine can run several, each with its own operating system, isolated from the others. This is how cloud hosting works, and how a single server is shared between customers who never see one another's data.
The trade-off is straightforward: virtual machines give isolation, easy backup and efficient use of hardware, at the cost of some performance, since everything passes through an extra software layer.
Points that come up repeatedly
- Von Neumann stores programs and data in the same memory — that is the whole idea.
- The bottleneck exists because instructions and data share one bus.
- The PC holds the address of the next instruction and is incremented during the fetch.
- The address bus is one-way; the data and control buses are two-way.
- More cores help only if the software divides the work between them.
- SIMD suits graphics; MIMD suits general multi-core work.
- A virtual machine trades some speed for isolation and better hardware use.