Le goulet d`étranglement von Neumann se produit lorsque les données prises dans ou hors de mémoire doivent attendre pendant que l`opération de mémoire actuelle est terminée. C`est-à-dire, si le processeur vient de terminer un calcul et est prêt à effectuer le prochain, il doit écrire le calcul fini dans la mémoire (qui occupe le bus) avant qu`il puisse extraire de nouvelles données de la mémoire (qui utilise également le bus). Le goulot d`étranglement von Neumann a augmenté au fil du temps parce que les processeurs se sont améliorés en vitesse tandis que la mémoire n`a pas progressé aussi vite. Certaines techniques pour réduire l`impact du goulot d`étranglement sont de conserver la mémoire dans le cache pour minimiser le déplacement des données, l`accélération matérielle et l`exécution spéculative. Il est intéressant de noter que l`exécution spéculative est le conduit pour l`un des derniers défauts de sécurité découverts par Google Project Zero, nommé spectre. Le goulet d`étranglement von Neumann a été décrit par John Backus dans sa conférence 1977 ACM Turing Award. Selon Backus: il doit sûrement y avoir une façon moins primitive de faire de grands changements dans le magasin qu`en poussant un grand nombre de mots d`avant en arrière à travers le goulet d`étranglement von Neumann. Non seulement ce tube est un goulot d`étranglement littéral pour le trafic de données d`un problème, mais, plus important encore, c`est un goulot d`étranglement intellectuel qui nous a maintenu lié à la pensée mot-à-un-temps au lieu de nous encourager à penser en termes de plus grandes unités conceptuelles de la tâche à Main. Ainsi, la programmation est essentiellement la planification et détaillant l`énorme trafic de mots à travers le goulet d`étranglement von Neumann, et une grande partie de ce trafic ne concerne pas les données significatives elle-même, mais où la trouver. 26 [27] certains langages de haut niveau tels que LISP exploitent l`architecture von Neumann en fournissant une méthode abstraite, indépendante de la machine pour manipuler le code exécutable lors de l`exécution, ou en utilisant des informations d`exécution pour régler la compilation juste-à-temps (par exemple, dans le cas de les langues hébergées sur la machine virtuelle Java, ou les langues incorporées dans les navigateurs Web). Les systèmes informatiques de von Neumann contiennent trois éléments constitutifs principaux: les ordinateurs modernes sont basés sur un concept de programme stocké introduit par John von Neumann.

Dans ce concept de programme stocké, les programmes et les données sont stockés dans une unité de stockage distincte appelée mémoires et sont traités de la même. Cette idée novatrice signifiait qu`un ordinateur construit avec cette architecture serait beaucoup plus facile à reprogrammer. Modification de l`architecture Harvard la majorité des ordinateurs modernes n`ont pas de séparation physique entre les espaces de mémoire utilisés par les données et les programmes/code/machine instructions, et donc pourrait être décrite techniquement comme von Neumann pour cette raison. Cependant, la meilleure façon de représenter la majorité des ordinateurs modernes est une «architecture modifiée de Harvard». Les processeurs modernes peuvent partager de la mémoire, mais ont des mécanismes tels que des instructions spéciales qui gardent les données erronées pour le code. Certains appellent cette “architecture modifiée de Harvard.” Cependant, l`architecture modifiée de Harvard possède deux voies distinctes (bus) pour le signal (code) et le stockage (mémoire), tandis que la mémoire elle-même est une pièce physique partagée. Le contrôleur de mémoire est l`endroit où la modification est assise, car il gère la mémoire et comment il est utilisé. La machine von Neumann a été créée par son homonyme, John von Neumann, physicien et mathématicien, en 1945, en s`appuyant sur l`œuvre d`Alan Turing. La conception a été publiée dans un document intitulé «première ébauche d`un rapport sur l`EDVAC».

Le mathématicien Alan Turing, qui avait été alerté d`un problème de logique mathématique par les conférences de Max Newman à l`Université de Cambridge, a écrit un article en 1936 intitulé On Computable Numbers, avec une application à la Entscheidungsproblem, qui a été publié dans les actes de la Société mathématique de Londres. Il a décrit une machine hypothétique qu`il appelait une machine informatique universelle, maintenant connue sous le nom de «machine de Turing universelle» [6].