Outils pour utilisateurs

Outils du site


nsi:premiere:architecture:machine_von_neumann

Ceci est une ancienne révision du document !


Fonctionnement d'une machine de Von Neumann

Les principes évoqués ici sont valables pour différentes sortes de machines programmables. La machine programmable que nous allons envisager adopte l'architecture de Von Neumann. En dépit des nombreuses améliorations et complexifications depuis 1945, le principe général utilisé dans les microprocesseurs d'aujourd'hui reste le même.

D'autres architectures existes. L'architecture de Von Neumann se caractérise par le fait que le programme et les données sur lesquelles s'exécutera le programme se trouvent dans une même mémoire. Dans l'architecture Harvard, il y a une mémoire pour le programme et une mémoire pour les données. Autrement les principes généraux sont semblables.

Dans ce TD nous allons travailler sur un exemple. Les choix que nous ferons seront très simplifiés par rapport à une machine réelle. Mais les principes rencontrés sont valables. Une vraie machine contient seulement beaucoup plus de circuits, beaucoup plus de connexions et on y ajoute tout un tas d'astuces pour optimiser les performances.

Dans ce cours, nous avons étudié comment, à partir de simples circuits logiques, fabriquer une mémoire, orienter des données sur un bus, produire des séquences de signaux. Nous allons pousser tout cela un peu plus loin ici.

Nous utiliserons Logisim.

Choix de la taille des données

La mémoire contient les données et le programme. Ici nous choisissons :

  • Des données sur 8 bits,
  • Des adresses sur 5 bits également – Nous n'aurons donc que $2^5 = 32$ octets en mémoire !
  • La mémoire comme toute la machine est cadencée par une horloge CLK.
    Les changements opèrent quand CLK a un front montant (passe de 0 à 1)
  • RD signifie que la mémoire écrit son contenu sur le BUS.
  • WR signifie que la mémoire lit sur le BUS

Unité arithmétique et logique

L'UAL est le circuit qui fait les calculs. On attend d'un microcontrôleur qu'il sache faire des calculs comme l'addition, la soustraction, le OU, le ET, le NON. Un composant plus performant comme un microprocesseur pourra en faire plus, comme la multiplication.

Notre UAL contient un registre ACCAccumulateur. Tous les calculs stockent leur résultat dans ACC. Il contient également un registre temporaire WWork.

Voici ce que sait faire notre UAL :

  • WR : Lit le BUS et l'écrit dans W,
  • ADD : additionne les valeurs de W et ACC et stocke le résultat dans ACC,
  • SUB : calcule ACC - W et stocke le résultat dans ACC,
  • LD : (LOAD) charge W dans ACC
  • RD : écrit ACC sur le BUS

Jeu d'instructions

On définit ce que notre machine saura faire.

Les données en mémoire font 1 octet = 8 bits. On pourrait faire 2 lectures pour obtenir un mot de 2 octets = 16 bits. C'est un choix souvent fait mais il complique les choses car il faut lire à chaque fois deux données mémoires.

Nous choisissons qu'une instruction fera toujours 1 octet. Voici les instructions que nous voulons avoir :

  • HLT : halt, le programme s'arrête.
    code : 000xxxxx
  • ADD : addition, le programme demande une addition.

Quelques définitions

  • Les données ne sont pas de simples bits. On les regroupe en mots – en général 1 octet, 2 octets, … 8 octets en 64 bits.
  • Une unité de mémoire contenant un mot est un registre.
  • On nomme UC l'unité de commande chargée de séquencer tous les échanges permettant l'exécution.
  • On nomme UAL l'unité arithmétique et logique qui exécute les calculs.
  • Le pointeur de ligne, PL ou parfois PC (program counter) est un registre permettant de savoir où on en est du programme.
  • Le registre instruction RI contient l'instruction en cours d'exécution.
  • Le registre d'adresse R@ contient l'adresse de la case mémoire en cours d'utilisation.
  • Le Bus est le faisceau de câbles reliant les différents organes et permettant de transporter les données d'un point à un autre.

Cycle instruction

  • Le
nsi/premiere/architecture/machine_von_neumann.1649342888.txt.gz · Dernière modification : de goupillwiki