2. Étape 2 : Un automate avec accumulateur

2.1 Chaînage des opérations

L’architecture actuelle ne permet pas de chaîner les calculs (exemple : 3 + 4 + 5). Pour pouvoir le faire, il y a plusieurs possibilités…

Question 2: Lesquelles ?

2.2 L’accumulateur

Nous allons doter notre processeur d’un registre interne sur 8 bits, que nous appellerons accumulateur. Toutes les opérations arithmétiques à deux opérandes s’effectueront entre l’accumulateur et une donnée en RAM. Plus précisément : pour effectuer “3 + 4” et stocker le résultat en RAM, le processeur effectuera les instructions suivantes :

  1. chargement de 3 dans l’accumulateur
  2. addition de l’accumulateur avec un opérande en RAM (“4”)
  3. stockage du contenu de l’accumulateur en RAM

Pour effectuer “3 + 4 + 5” :

  1. chargement de 3 dans l’accumulateur
  2. addition de l’accumulateur avec un opérande en RAM (“4”)
  3. addition de l’accumulateur avec un opérande en RAM (“5”)
  4. stockage du contenu de l’accumulateur en RAM

On ajoute donc deux instructions à notre processeur :

  • load : chargement de l’accumulateur à partir de la RAM
  • store : stockage du contenu de l’accumulateur dans la RAM

Parallèlement, les instructions d’addition et de soustraction n’ont plus besoin que d’un seul opérande - le deuxième opérande est dans l’accumulateur.

De plus, tant qu’on y est, nous allons ajouter trois instructions de manipulation de bits : AND, OR et XOR (cf. le tableau 1.1), qui comme l’addition, opèrent sur le contenu de l’accumulateur et un opérande en RAM.

Le nouveau jeu d’instruction devient donc :

Tableau 1.1: Nouveau jeu d'instructions
code (binaire 8 bits) instruction effet
00000001 XOR Effectue un XOR bit à bit entre le contenu de l’accumulateur et une donnée en RAM; le résultat est stocké dans l’accumulateur
00000010 AND Effectue un ET bit à bit entre le contenu de l’accumulateur et une donnée en RAM; le résultat est stocké dans l’accumulateur
00000011 OR Effectue un OU bit à bit entre le contenu de l’accumulateur et une donnée en RAM; le résultat est stocké dans l’accumulateur
00000100 addition Additionne le contenu de l’accumulateur à une donnée en RAM; le résultat est stocké dans l’accumulateur
00000110 soustraction Soustrait du contenu de l’accumulateur une donnée en RAM; le résultat est stocké dans l’accumulateur
00001010 load Charge dans l’accumulateur une donnée en RAM
00001011 store Stocke le contenu de l’accumulateur en RAM

Question 3: Quel est l’impact de ces spécifications sur la façon de stocker le programme en RAM ?

Question 4: Concevoir la nouvelle architecture du processeur. Quels sont les avantages en terme de vitesse par rapport à l’architecture précédente ?