Architecture de von Neumann vs Harvard : les différences expliquées

Dans une architecture de von Neumann, les instructions et les données partagent une même mémoire et un même bus : le processeur ne peut donc pas lire une instruction et accéder à une donnée au même moment. Cette limite est le goulot d'étranglement de von Neumann. Dans une architecture Harvard, les instructions et les données résident dans des mémoires séparées avec des bus séparés, si bien que les deux sont accessibles simultanément. La plupart des CPU modernes combinent les deux : la mémoire principale est unifiée, mais le cache L1 est divisé en caches d'instructions et de données séparés. On parle d'architecture Harvard modifiée.

CritèreVon NeumannHarvard
MémoireUne seule mémoire contient à la fois les instructions et les donnéesDes mémoires séparées pour les instructions et pour les données
BusUn bus partagéDes bus séparés
Lecture des instructions et accès aux donnéesEn concurrence pour le même bus (goulot d'étranglement de von Neumann)Peuvent avoir lieu simultanément
DébitPlus faible pour une même vitesse de busPlus élevé, grâce aux accès parallèles
FlexibilitéÉlevée : les programmes sont des données, ils peuvent donc être chargés, générés et modifiés facilementPlus faible : le code et les données sont séparés
Répartition de la mémoireRépartition souple entre code et donnéesTailles fixes pour chaque mémoire
Complexité matériellePlus simplePlus complexe : deux mémoires et deux bus
Composants typiquesOrdinateurs généralistesProcesseurs de signal numérique et de nombreux microcontrôleurs (comme les AVR et les PIC)
Dans les CPU modernesMémoire principale unifiéeCaches L1 d'instructions et de données séparés (Harvard modifiée)

Les valeurs indiquées sont des ordres de grandeur typiques et varient selon la génération de procédé et le produit.

Quand choisir l'un ou l'autre ?

Von Neumann
Pour l'informatique généraliste, où les programmes sont chargés depuis le stockage et où la flexibilité est importante.
Harvard
Pour le traitement du signal et les systèmes embarqués, où un accès prévisible et à haut débit aux instructions et aux données compte.

Questions fréquentes

Qu'est-ce que le goulot d'étranglement de von Neumann ?

Les instructions et les données partagent une même mémoire et un même bus, si bien que le processeur ne peut pas lire une instruction et accéder à une donnée en même temps. Cela limite le débit.

Les CPU modernes utilisent-ils l'architecture Harvard ?

En partie. La mémoire principale est unifiée, mais le cache L1 est divisé en caches d'instructions et de données séparés. On parle d'architecture Harvard modifiée.

Quels microcontrôleurs utilisent l'architecture Harvard ?

Beaucoup, notamment les puces AVR et PIC, qui séparent la mémoire de programme et la mémoire de données.

Une machine Harvard peut-elle exécuter du code auto-modifiant ?

Pas facilement, car le code et les données sont conservés dans des mémoires séparées. Cette séparation est l'une des raisons pour lesquelles les machines de von Neumann sont plus flexibles.

Vérifier vos connaissances

Quelle caractéristique de l'ordinateur de type von Neumann est correcte ?

  1. ALes instructions et les données sont toujours placées dans des mémoires séparées
  2. BLe programme est modifié en recâblant les connexions
  3. CLe programme (instructions) et les données sont stockés dans la même mémoire principale, et les instructions sont lues et exécutées séquentiellement
Afficher la réponse et l'explication

Réponse : C. Le programme (instructions) et les données sont stockés dans la même mémoire principale, et les instructions sont lues et exécutées séquentiellement

Dans l'architecture de von Neumann (à programme enregistré), instructions et données résident dans la même mémoire principale, et le processeur lit et exécute les instructions séquentiellement. La possibilité de modifier le programme comme une donnée en fait la souplesse ; c'est la base des ordinateurs actuels. En revanche, instructions et données se disputent le même chemin, ce qui limite la vitesse : c'est le goulet d'étranglement de von Neumann. C'est pourquoi de nombreux processeurs séparent le cache L1 en caches d'instructions et de données (principe de l'architecture Harvard).

Quel est le principal avantage d’un cache L1 séparé en cache d’instructions (cache I) et cache de données (cache D) ?

  1. ALes instructions et les données placées à la même adresse n’entrent plus en conflit, et la capacité semble doublée
  2. BLa lecture des instructions et la lecture/écriture des données peuvent avoir lieu en parallèle dans le même cycle d’horloge
  3. CLes instructions n’étant pas modifiées, le cache D peut être supprimé
Afficher la réponse et l'explication

Réponse : B. La lecture des instructions et la lecture/écriture des données peuvent avoir lieu en parallèle dans le même cycle d’horloge

Dans un pipeline, une instruction est lue à chaque cycle pendant qu’une autre lit ou écrit des données. Séparer le L1 en caches d’instructions et de données permet d’effectuer les deux accès en parallèle sans se disputer un port unique, et d’adapter la configuration de chacun à ses caractéristiques. La capacité n’est pas doublée : la capacité totale est partagée. Les lectures et écritures de données étant toujours nécessaires, le cache D ne peut pas être supprimé. À partir du L2, instructions et données sont généralement partagées.

Quel est l'ordre correct du déroulement de base du traitement d'une instruction par le processeur ?

  1. AExécution → décodage → lecture
  2. BLecture (fetch) → décodage (decode) → exécution
  3. CDécodage → lecture → exécution
Afficher la réponse et l'explication

Réponse : B. Lecture (fetch) → décodage (decode) → exécution

Le processeur lit l'instruction en mémoire (fetch), la décode pour déterminer l'action à effectuer, exécute le calcul, puis écrit si nécessaire le résultat dans un registre ou en mémoire. L'emplacement de l'instruction à lire est indiqué par le compteur ordinal, et le décodage détermine le type d'opération et les registres utilisés. Le pipeline superpose ces étapes pour les faire progresser en parallèle et terminer au moins une instruction par cycle.

  1. Dans un pipeline, lorsqu'une instruction utilise immédiatement le résultat de la précédente (aléa de données), quelle technique transmet directement le résultat du calcul à l'instruction suivante sans attendre l'écriture dans le registre ?

Questions d'entraînement sur CPU et architecture

Termes clés expliqués

Architecture de von Neumann
Organisation d'ordinateur où programme et données résident dans la même mémoire principale, les instructions étant lues et exécutées séquentiellement.
Mémoire cache
Mémoire rapide de faible capacité placée près du CPU. Elle conserve les données fréquemment utilisées pour compenser l'écart de vitesse avec la mémoire principale. Réalisée principalement en SRAM.

Comparatifs associés