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 :
- 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. - 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. - 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. - 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. - 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. - 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.