Architecture de Von Neumann

JohnvonNeumann-LosAlamos.jpg
Attribution, Lien

Introduction

L'architecture est basée sur un partage de la mémoire entre le programme et les données. Von Neumann a donné le principe en 1945.

Dans la machine de Babbage il y avait des cartes perforées pour le programme et des cartes pour les données, dans l'Eniac les données étaient des cartes et le programme devait se faire en branchant des fils.

Eniac.jpg
Par InconnuU.S. Army Photo, Domaine public, Lien

L'architecture de Von Neumann est un tournant majeur au niveau de la conception de l'ordinateur et actuellement quasi tous les ordinateurs sont basés sur ce principe.

Principe

Pour illustrer le cours on se basera sur le simulateur cardiac adapté par Alain Ketterlin et Cedric Bastoul de l'université de Strasbourg. Le modèle utilise la notation décimale et à très peu de mémoire. Il se décompose en trois parties principales :

  1. La mémoire centrale : elle est constituée de 100 cases mémoire, chaque case est numérotée (on dit qu'elle a une adresse). Le fait d'avoir 100 cases n'est pas un hasard, le modèle cardiac où les nombres proposés sont au maximum égaux à 100 ne permet pas d'en gérer plus. Sur votre ordinateur c'est la même chose il y a une limite maximale à la mémoire centrale possible (environ 4 Giga en 32 bits et beaucoup plus en 64 bits).
  2. Le processeur, il comporte lui aussi des zones de mémoire appelées registres. Le processeur est capable d'effectuer un certain nombre d'opération de façon "hardware" (opposé à software) c'est à dire à travers de circuits électroniques. Le modèle cardiac peut effectuer 10 opération, là aussi c'est la limite possible pour le processeur cardiac. On peut séparer le processeur en trois parties :
  3. Les entrées sorties.

La communication entre les parties se fait à travers de bus.

La mémoire, les bus et le processeur n'ont pas la même horloge, il se peut que l'un soit bridé par l'autre.

Un exemple

Considérons l'état de la mémoire suivant :

Celà correspond au code assembleur suivant :

.at 20
a: .word 000
b: .word 000
somme: .word 000

INP a
INP b
LDA a
ADD b
STA somme
OUT somme
HRS 000
		

Fixons le compteur ordinal du processeur à 23 et donnons 4 et 3 en entrée.

Voyons les étapes successives :

Les boucles

Considérons l'état de la mémoire suivant :

Celà correspond au code assembleur suivant :

.at 40
a: .word 000
un: .word 001
i: .word 000
INP a
loop: OUT i
      LDA i
      ADD un
      STA i
      SUB a
      JAZ loop
HRS 00
		

Fixons le compteur ordinal du processeur à 43 et donnons 2 en entrée.

Voyons les étapes successives :

Exercice
  1. On considère l'état de la mémoire d'une machine cardiac suivant :

    1. Que va afficher le programme si on donne 6 en entrée ?
    2. Que va afficher le programme si on donne 3 en entrée ?
    3. Quelles sont les cellules qui contiennent des données ? Quelles sont les cellules qui contiennent des instructions ?
    4. Que fait le programme ?
  2. On considère l'état de la mémoire d'une machine cardiac suivant :

    1. Que va afficher le programme si on donne 3 et 4 en entrée ?
    2. Que va afficher le programme si on donne 3 et 4 en entrée ?
    3. Que va afficher le programme si on donne 4 et 4 en entrée ?
    4. Quelles sont les cellules qui contiennent des données ? Quelles sont les cellules qui contiennent des instructions ?
    5. Que fait le programme ?
  3. En utilisant l'outil cardiac su site, décrire la mémoire d'un programme demandant 3 nombres et qui retourne la somme des trois nombres.
  4. Ecrire la code assembleur qui correspond au programme précédent.
  5. (Dur) En utilisant l'outil cardiac su site, décrire la mémoire d'un programme demandant 2 nombres et retournant le produit des deux nombres
  6. Afficher/ Cacher la solution
  7. On considère l'état de la mémoire d'une machine cardiac suivant :

    1. Que va afficher le programme si on donne 4, 5 et 6 en entrée ?
    2. Que va afficher le programme si on donne 3, 8 et 2 en entrée ?
    3. Que va afficher le programme si on donne 8, 3 et 2 en entrée ?
    4. Quelles sont les cellules qui contiennent des données ? Quelles sont les cellules qui contiennent des instructions ?
    5. Ecrit en assembleur le programme est ?
    6. .at 30
      INP 17
      INP 18
      INP 19
      STA 17
      SUB 18
      JAZ 31
      LDA 17
      SUB 19
      JAZ 36
      OUT 17
      HRS 00
      LDA 18
      SUB 19
      JAZ 36
      OUT 18
      HRS 00
      OUT 19
      HRS 00
      .at 20
      INP 17
      INP 18
      INP 19
      LDA 17
      SUB 18
      JAZ 31
      LDA 17
      SUB 19
      JAZ 36
      OUT 17
      HRS 00
      LDA 18
      SUB 19
      JAZ 36
      OUT 18
      HRS 00
      OUT 19
      HRS 00
      .at 20
      INP 17
      INP 18
      INP 19
      STA 17
      SUB 18
      JAZ 21
      LDA 17
      SUB 19
      JAZ 36
      OUT 17
      HRS 00
      LDA 18
      SUB 19
      JAZ 36
      OUT 18
      HRS 00
      OUT 19
      HRS 00
    7. Que fait le programme ?

    Afficher/ Cacher la solution

  8. On condidére le programme suivant :
    .at 10
    a : .word 000
    b : .word 000
    c : .word 000
    d : .word 000

    main: INP a
    INP b

    LDA a
    SUB b
    JAZ Else
    STA c
    LDA d
    JAZ Fin
    Else: LDA b
    SUB a
    STA c
    Fin: OUT c
    HRS 00

    • Qu'affiche le programme si on donne 2 et 5 en entrée ?
    • Qu'affiche le programme si on donne 5 et 2 en entrée ?
    • Que fait le programme ?

  9. Afficher/ Cacher la solution

  10. Que fait le programme ?