The von Neumann bottleneck is a limitation on throughput caused by the standard personal computer architecture.
The term is named for John von Neumann, who developed the theory behind the architecture of modern computers. Earlier computers were fed programs and data for processing while they were running. Von Neumann came up with the idea behind the stored program computer, our standard model, which is also known as the von Neumann architecture. In the von Neumann architecture, programs and data are held in memory; the processor and memory are separate and data moves between the two. In that configuration, latency is unavoidable.
Furthermore, in recent years, processor speeds have increased significantly. Memory improvements, on the other hand, have mostly been in density – the ability to store more data in less space – rather than transfer rates. As speeds have increased, the processor has spent an increasing amount of time idle, waiting for data to be fetched from memory. No matter how fast a given processor can work, in effect it is limited to the rate of transfer allowed by the bottleneck. Often, a faster processor just means that it will spend more time idle.
The von Neumann bottleneck has often been considered a problem that can only be overcome through significant changes to computer or processor architectures.
Approaches to overcoming the von Neumann bottleneck include:
- Caching -- the storage of frequently used data in a special area (usually RAM), so that it is more readily accessible than if it were stored in main memory.
- Prefetching -- moving some data into cache before it is requested to speed access in the event of a request.
- Multithreading -- managing multiple requests simultaneously in separate threads.
- New types of RAM (random access memory) -- for example, DDR SDRAM, which activates output on both the rising and falling edge of the system clock rather than on just the rising edge, to potentially double output.
- RAMBUS -- a memory subsystem consisting of the RAM, the RAM controller, and the bus (path) connecting RAM to the microprocessor and devices in the computer that use it.
- Processing in memory (PIM), which integrates a processor and memory in a single microchip.