Le goulot d'étranglement de Von Neumann est le résultat naturel de l'utilisation d'un bus pour transférer des données entre le processeur, la mémoire, le stockage à long terme et les périphériques. Quelle que soit la vitesse à laquelle le bus exécute sa tâche, il est toujours possible de le submerger, c'est-à-dire de former un goulot d'étranglement qui réduit la vitesse. Au fil du temps, les vitesses des processeurs continuent d'augmenter tandis que la mémoire et d'autres améliorations de l'appareil se concentrent sur la densité - la capacité de stocker plus dans moins d'espace. Par conséquent, le goulot d'étranglement devient de plus en plus un problème à chaque amélioration, ce qui oblige le processeur à rester inactif pendant beaucoup de temps.
Dans des limites raisonnables, vous pouvez surmonter certains des problèmes qui entourent le goulot d'étranglement Von Neumann et produire des augmentations légères, mais notables, de la vitesse d'application. Voici les solutions les plus courantes :
- Mise en cache : lorsque les problèmes d'obtention de données à partir de la mémoire assez rapidement avec l'architecture Von Neumann sont devenus évidents, les fournisseurs de matériel ont rapidement réagi en ajoutant de la mémoire localisée qui ne nécessitait pas d'accès au bus. Cette mémoire apparaît externe au processeur mais fait partie du package du processeur. Cependant, le cache à grande vitesse est coûteux, de sorte que les tailles de cache ont tendance à être petites.
- Mise en cache du processeur : Malheureusement, les caches externes ne fournissent toujours pas assez de vitesse. Même en utilisant la RAM la plus rapide disponible et en coupant complètement l'accès au bus, cela ne répond pas aux besoins de capacité de traitement du processeur. Par conséquent, les fournisseurs ont commencé à ajouter de la mémoire interne - un cache plus petit que le cache externe, mais avec un accès encore plus rapide car il fait partie du processeur.
- Préchargement : le problème avec les caches est qu'ils ne s'avèrent utiles que lorsqu'ils contiennent les données correctes. Malheureusement, les accès au cache s'avèrent faibles dans les applications qui utilisent beaucoup de données et effectuent une grande variété de tâches. La prochaine étape pour accélérer le fonctionnement des processeurs consiste à deviner les données dont l'application aura besoin ensuite et à les charger dans le cache avant que l'application n'en ait besoin.
- Utilisation de la RAM spécialisée : vous pouvez être enterré par la soupe à l'alphabet RAM car il existe plus de types de RAM que la plupart des gens ne l'imaginent. Chaque type de RAM prétend résoudre au moins une partie du problème du goulot d'étranglement de Von Neumann, et ils fonctionnent – dans certaines limites. Dans la plupart des cas, les améliorations tournent autour de l'idée d'obtenir des données de la mémoire et sur le bus plus rapidement. Deux facteurs majeurs (et de nombreux mineurs) affectent la vitesse : la vitesse de la mémoire (à quelle vitesse la mémoire déplace les données) et la latence (combien de temps il faut pour localiser une donnée particulière). En savoir plus sur la mémoire et les facteurs qui l'affectent.
Comme dans de nombreux autres domaines de la technologie, le battage publicitaire peut devenir un problème. Par exemple, le multithreading, le fait de diviser une application ou un autre ensemble d'instructions en unités d'exécution discrètes que le processeur peut gérer une par une, est souvent présenté comme un moyen de surmonter le goulot d'étranglement de Von Neumann, mais ce n'est pas le cas. rien de plus que d'ajouter des frais généraux (aggraver le problème). Le multithreading est une réponse à un autre problème : rendre l'application plus efficace. Lorsqu'une application ajoute des problèmes de latence au goulot d'étranglement de Von Neumann, l'ensemble du système ralentit. Le multithreading garantit que le processeur ne perde pas encore plus de temps à attendre l'utilisateur ou l'application, mais a plutôt quelque chose à faire tout le temps. La latence des applications peut se produire avec n'importe quelle architecture de processeur, pas seulement l'architecture Von Neumann. Toutefois,