The stored-program model: one CPU, one memory holding both code and data, joined by a shared bus — and the bottleneck that follows.
The von Neumann architecture is the blueprint behind almost every computer you have ever used. It has three parts — a CPU, a single memory, and I/O — all wired together by a shared system bus. Its defining idea is the stored-program concept: a program lives in the *same* read/write memory as its data. That one decision is why you can run a new program by loading bytes into memory instead of rewiring the machine.
In a von Neumann machine, memory is just a long array of numbered words. A word holding the bits 10110000 might be an instruction or it might be the number 176 — memory itself does not know. The only thing that makes a word an instruction is that the CPU *fetched* it while looking for the next instruction to run. This uniformity is powerful: a program can even generate or modify code as data, because code and data are made of the same stuff in the same store.
The CPU reaches memory over the system bus: address lines to say *which* word, data lines to carry the value, and control lines to say *read* or *write*. Because instructions and data travel the *same* bus, the CPU cannot fetch an instruction and its data at the same time — they must take turns. This traffic jam is the famous von Neumann bottleneck, and it is the main reason fast on-chip caches exist.