Von Neumann bottleneck

De von Neumann bottleneck is een beperking van de verwerkingscapaciteit die wordt veroorzaakt door de standaard architectuur van personal computers.

De term is genoemd naar John von Neumann, die de theorie achter de architectuur van moderne computers ontwikkelde. Eerdere computers werden gevoed met programma's en gegevens voor verwerking terwijl ze draaiden. Von Neumann kwam met het idee achter de computer met opgeslagen programma's, ons standaardmodel, dat ook bekend staat als de von Neumann-architectuur. In de von Neumann-architectuur worden programma's en gegevens in het geheugen bewaard; de processor en het geheugen zijn gescheiden en de gegevens bewegen tussen beide. In die configuratie is latency onvermijdelijk.

Daar komt bij dat de processorsnelheden de laatste jaren aanzienlijk zijn toegenomen. Verbeteringen in het geheugen daarentegen hebben vooral betrekking op de dichtheid - de mogelijkheid om meer gegevens in minder ruimte op te slaan - in plaats van op de overdrachtssnelheid. Naarmate de snelheden zijn toegenomen, heeft de processor steeds meer tijd inactief doorgebracht, wachtend tot gegevens uit het geheugen werden opgehaald. Hoe snel een bepaalde processor ook kan werken, in feite is hij beperkt tot de overdrachtssnelheid die door het knelpunt wordt toegestaan. Vaak betekent een snellere processor alleen maar dat hij meer tijd inactief zal zijn.

De von Neumann-bottleneck is vaak beschouwd als een probleem dat alleen kan worden opgelost door ingrijpende veranderingen in de computer- of processorarchitectuur.

De oplossingen voor de von Neumann-knelpunten zijn onder meer:

  • Caching -- het opslaan van veelgebruikte gegevens in een speciaal gebied (meestal RAM), zodat ze gemakkelijker toegankelijk zijn dan wanneer ze in het hoofdgeheugen zouden worden opgeslagen.
  • Prefetching -- het verplaatsen van bepaalde gegevens naar de cache voordat ze worden opgevraagd, zodat ze sneller toegankelijk zijn wanneer ze worden opgevraagd.
  • Multithreading -- het beheren van meerdere verzoeken tegelijk in afzonderlijke threads.
  • Nieuwe typen RAM (random access memory) -- bijvoorbeeld DDR SDRAM, dat de output activeert op zowel de stijgende als de dalende flank van de systeemklok in plaats van alleen op de stijgende flank, om de output mogelijk te verdubbelen.
  • RAMBUS -- een geheugensubsysteem dat bestaat uit het RAM, de RAM-controller, en de bus (pad) die het RAM verbindt met de microprocessor en apparaten in de computer die er gebruik van maken.
  • Processing in memory (PIM), waarbij een processor en geheugen in één microchip zijn geïntegreerd.

 Zie ook: gegevensoverdrachtssnelheid, bandbreedte, harde schijf, instructie, input/output (I/O), read-only memory (ROM), Snelle gids voor RAM