Architecture de von Neumann

l'architecture des ordinateurs

L’architecture de von Neumann est une architecture pour ordinateur qui utilise une structure de stockage unique pour conserver les instructions et les données demandées ou produites par le calcul (mémoire unifiée). De telles machines sont aussi connues sous le nom d’ordinateur à programme enregistré. La séparation entre le stockage et le processeur est implicite dans ce modèle.

Schématisation de l'architecture de von Neumann.

Origine

modifier

Cette architecture est appelée ainsi en référence au mathématicien John von Neumann, qui a élaboré en dans le cadre du projet EDVAC[1] la première description d’un ordinateur dont le programme est stocké dans sa mémoire.

Alan Turing, John William Mauchly et John Eckert (pendant leurs travaux sur l’ENIAC) ont également utilisé ce concept ou une idée proche, et ce indépendamment de von Neumann.

Herman Goldstine (un collègue de John von Neumann) fit circuler une description inachevée, intitulée « Première ébauche d'un rapport sur EDVAC », basée sur les travaux d'Eckert et Mauchly, sous le seul nom de von Neumann.

Le document a été lu par des dizaines de collègues de von Neumann en Amérique et en Europe, et a inspiré plusieurs machines en construction.

Architecture

modifier

L’architecture de von Neumann décompose l’ordinateur en 4 parties distinctes[2],[3] :

  1. l’unité arithmétique et logique (UAL ou ALU en anglais) ou unité de traitement : son rôle est d’effectuer les opérations de base ;
  2. l’unité de contrôle, chargée du « séquençage » des opérations ;
  3. la mémoire qui contient à la fois les données et le programme qui indiquera à l’unité de contrôle quels sont les calculs à faire sur ces données. La mémoire se divise entre mémoire volatile (programmes et données en cours de fonctionnement) et mémoire permanente (programmes et données de base de la machine) ;
  4. les dispositifs d’entrée-sortie, qui permettent de communiquer avec le monde extérieur.

Un point différenciant de l'architecture de von Neumann par rapport à l'architecture de Harvard est au niveau de la gestion de la mémoire. Les instructions et les données sont traitées de la même manière, on parle de mémoire unifiée:

  1. Un seul bus d'accès partagé entre les données et instructions.
  2. Une donnée peut être manipulée comme une instruction et inversement.

Le premier aspect permet une implémentation plus simple de l'architecture car moins coûteuse sur le plan matériel mais limite théoriquement la performance des architectures de von Neumann (goulot d'étranglement de von Neumann)

Le second aspect permet la modification des instructions.

Modification des instructions

modifier

L'architecture de von Neumann permet de gérer les instructions de la même façon que les données[1], ainsi un ordinateur qui a un programme stocké en mémoire peut facilement modifier les instructions. Cette particularité, qui permet de modifier directement le champ adresse d'une instruction (pour créer des boucles), est sans doute l'une des motivations profondes à l'origine de cette architecture. Cette spécificité est devenue moins importante avec l'apparition de l’utilisation de registres d’index et de l’adressage indirect en tant que caractéristique standard des processeurs.

La modification des instructions facilite aussi la mise en place de compilateur, de code automodificateur ou de la compilation juste-à-temps.

L’architecture actuelle des ordinateurs rend inutile la modification à faible échelle des instructions du programme — son « code » — car cela rendrait inefficaces les techniques de gestion de l’antémémoire et du pipeline dans le processeur. Cette pratique est donc à ce jour obsolète.

La modification des instructions est exploitable par les virus informatiques pour injecter des instructions. Ce problème peut être évité par l’utilisation d’un système de protection de la mémoire et, en particulier, par le gestionnaire de la mémoire virtuelle.

Machines contemporaines

modifier

L'architecture de von Neumann est à la base de la plupart des ordinateurs modernes. Ainsi on y retrouve les 4 composants principales décrits dans la publication originale de 1945. Suivant les modèles plusieurs composants sont ajoutés, en particulier plusieurs niveaux de mémoire avec la généralisation des caches. Du fait de la présence de caches séparés (Split cache) il est aussi possible de considérer les machines de von Neumann comme des architectures modifiées de Harvard. De nombreuses précautions sont aussi mises en place pour prévenir les risques liés à l'injection d'instruction (voir protection de l'espace exécutable).

L'implémentation stricte de machine de von Neumann reste utilisée dans le monde de l'embarqué avec les DSP et certains microcontrôleurs:

Notes et références

modifier
  1. 1 2 « Le modèle d’architecture de von Neumann », sur interstices.info (consulté le )
  2. ↑ Education nationale, « architecture de von Neumann » [PDF] (consulté le )
  3. ↑ ACONIT (Association pour un Conservatoire de l'Informatique et de la Télématique), « Recherche, informatique, industrie : Comprendre l'architecture von Neumann », sur echosciences-grenoble, (consulté le )

Voir aussi

modifier

Sur les autres projets Wikimedia :

Articles connexes

modifier

Liens externes

modifier