1. Étape 1 : Un automate linéaire basique

Dans cette première étape, nous n’implémenterons que les instructions et données du premier exemple. Le processeur est donc relié à une mémoire vive (RAM) stockant 256 mots de 8 bits.

1.1 Organisation de la mémoire

On suppose que le programme (opérations à effectuer) ainsi que les données sont déjà chargées dans la mémoire, et qu’ils respectent le format suivant :

adresse type du mot stocké exemple
0 instruction +
1 donnée (premier opérande) 3
2 donnée (deuxième opérande) 4
3 donnée (résultat) X
4 instruction -
5 donnée (premier opérande) 12
6 donnée (deuxième opérande) 8
7 donnée (résultat) X

Le “X” indique que la RAM ne contient rien de valide à cet endroit là. C’est au microprocesseur d’aller y écrire le résultat correct. Après avoir lancé le microprocesseur, le contenu de la RAM sera donc le suivant (on indique en gras les endroits de la RAM qui ont changé) :

adresse type du mot stocké exemple
0 instruction +
1 donnée (premier opérande) 3
2 donnée (deuxième opérande) 4
3 donnée (résultat) 7
4 instruction -
5 donnée (premier opérande) 12
6 donnée (deuxième opérande) 8
7 donnée (résultat) 4

Remarques :

  • le microprocesseur doit commencer son exécution à l’adresse 0 de la mémoire,
  • on part donc du principe qu’on aura donc toujours une instruction à l’adresse 0 de la mémoire,
  • et qu’on aura toujours en mémoire une instruction, puis l’opérande 1, puis l’opérande 2, puis un octet pour stocker le résultat

1.2 Les instructions

Elles seront (pour l’instant) au nombre de deux :

code (binaire sur 8 bits) instruction
00000100 addition
00000110 soustraction

Ces opérations arithmétiques opèrent sur des nombres de 8 bits, représentant des entiers non signés. Les instructions étant stockées en RAM, il est nécessaire de les coder. Comme la RAM stocke des mots de 8 bits, ça nous donne 256 instructions possibles, ce qui est largement suffisant pour un processeur basique... Le code choisi ci-dessus pour l’addition et la soustraction est parfaitement arbitraire : il correspond à celui qui sera implémenté en TP.

1.3 Fonctionnement de l’automate

Vue l’organisation de la RAM qui a été choisie, le fonctionnement de l’automate est simple : à chaque coup d’horloge, il va chercher successivement une instruction, puis le premier opérande, puis le deuxième opérande, calcule le résultat et le stocke. Puis il recommence à l’adresse suivante.

En détail :

  1. Premier coup d’horloge : le microprocesseur présente l’adresse “0” à la RAM.
    La RAM lui présente donc sur son bus de sortie le contenu de l’adresse 0, qui est la première instruction.
  2. Deuxième coup d’horloge : le microprocesseur incrémente l’adresse qu’il présente à la RAM (“1”).
    La RAM lui présente donc sur son bus de sortie le contenu de l’adresse 1, qui est le premier opérande.
  3. Troisième coup d’horloge : le microprocesseur incrémente l’adresse qu’il présente à la RAM (“2”).
    La RAM lui présente donc sur son bus de sortie le contenu de l’adresse 2, qui est la deuxième opérande.
    A ce moment là, le microprocesseur dispose de toutes données nécessaire au calcul : l’instruction, et les deux opérandes. Il peut donc calculer le résultat.
  4. Quatrième coup d’horloge : le microprocesseur incrémente l’adresse qu’il présente à la RAM (“3”).
    Parallèlement, il présente sur le bus de donnée en entrée de la RAM le résultat qu’il vient de calculer.
    Parallèlement, il passe la ligne WRITE de la RAM à l’état haut, pour dire à la mémoire qu’il désire effectuer une écriture.
    Le résultat du calcul est donc à ce moment là écrit à l’adresse “3” de la mémoire.
  5. Cinquième coup d’horloge : le microprocesseur incrémente l’adresse qu’il présente à la RAM (“4”).
    La RAM lui présente donc sur son bus de sortie le contenu de l’adresse 4, qui est la deuxième instruction.
  6. etc...
Question 1:

Concevoir l’architecture de cet automate.

On ne demande pas une représentation de toutes les portes logique de l’automate, mais juste une représentation de haut niveau : vous disposez de registres, de boites combinatoires dont vous ne donnerez que les équations, de multiplexeurs, de compteurs, etc.