3-Présentation d’un µP simple Microprocesseur avec un bus de données sur 16 bits et un bus d’adresses sur 12 bits (soit 4096 mots adressables). Le chemin de données doit comprendre au minimum : un registre compteur programme (PC) : un registre stockant l’adresse de la prochaine instruction à exécuter. un registre accumulateur (ACC) : un registre stockant la donnée sur laquelle on travaille. une UAL qui permet d’exécuter des opérations arithmétiques et logiques de base (addition, soustraction, ET/OU/OUX logique)…
Codage des Instructions Chaque instruction est codée sur 16 bits et comprend : le champ code opération : indique le type d’instruction dont il s’agit (add, …). le champ code opérande : adresse de la donnée. Une instruction d’addition, par exemple, utilise la donnée stockée à l’adresse spécifiée, ainsi que le registre accumulateur comme opérande implicite, puis stocke le résultat dans l’accumulateur. L’action réalisée est : ACC ¬ ACC + mem16 [addr]. On parle de machine une adresse car une seule opérande est définie explicitement dans le codage de l’instruction. Les instructions sont lues depuis la mémoire à partir de l’adresse 0, à des adresses consécutives.
Jeu d’Instructions La programmation d’un programme complet directement en code machine binaire devient très rapidement fastidieuse :on définit un langage symbolique nommé langage d’assemblage permettant de représenter les instructions par des mnémoniques. On délègue la traduction du programme source en code binaire exécutable à un programme : l’assembleur.
Chemin de données
Chemin de données Les éléments du chemin de donnés sont : l’UAL, le registre accumulateur (ACC) : il contient la donnée sur laquelle on travaille. Il renvoie des informations vers la machine d’état (valeur nulle et valeur positive ou nulle). le compteur programme (PC : Program Counter) : il contient à tout instant l’adresse de la prochaine instruction à exécuter. le registre d’instruction (IR : Instruction Register) : il contient l’instruction qui est en train d’être exécutée. des multiplexeurs (MUXA et MUXB) qui permettent d’aiguiller les données. une porte 3 états qui permet d’amener le contenu du registre accumulateur sur le bus de données, et de déconnecter l’accumulateur du bus de données quand la mémoire est en lecture. Les registres disposent d’une commande de chargement et de remise à zéro synchrone (non représentée). l’UAL reçoit, en plus de ses entrées et sortie, un code permettant d’identifier la fonction UAL sélectionnée.
Séquencement des Instructions La machine d’état récupère des informations en provenance de la partie traitement (opcode, accZ, acc15) et génère des commandes internes pour contrôler l’activation du chemin de données adéquat pour réaliser l’instruction en train d’être exécutée et des commandes externes pour assurer le dialogue du microprocesseur avec la mémoire. Le séquencement des différentes actions est cadencé par l’horloge clk. L’exécution d’un programme entier consiste à répéter l’exécution de l’instruction pointée par le PC jusqu’à la dernière instruction. L’exécution d’une instruction peut être réalisée en deux phases : phase d’acquisition (fetch) : on lit en mémoire l’instruction pointée par le PC et on la transfère dans le registre d’instruction RI. On incrémente le compteur programme pour qu’il pointe sur l’instruction suivante. Dès que l’instruction est dans le registre d’instruction, elle est décodée. phase d’exécution (execute) : l’opérande est lue en mémoire (si nécessaire). L’opération UAL est exécutée, et le résultat est rangé dans l’accumulateur ACC.
Séquencement des Instructions
Exemple de Programme
Phase d’acquisition (Fetch) 1 LDA var1 ADD var2 STO res B+1 STOP LDA var1 Var1=1 Var2=2 res
Phase d’exécution 0x004 0x004 LDA var1 ADD var2 LDA var1 STO res B STOP Var1=1 Var2=2 res 0x001
Phase d’acquisition (Fetch) 2 1 LDA var1 ADD var2 STO res STOP ADD var2 Var1=1 Var2=2 res
Phase d’exécution 0x005 LDA var1 ADD var2 STO res STOP Var1=1 Var2=2
Instructions de Saut JMP Addr : Fetch 1 JMP 0x004 JMP 0X004
JMP Addr : Exécution 0X004 0X004 JMP 0X004
JSR Addr : Fetch 1 JSR 0x004 JSR 0x004
JSR Addr : Exécution 0x004 0x004 1 1 0x004
RET : Fetch 6 6 7 JSR 0x004 RET RET
RET : Exécution Actions réalisées : PC SPC 1 1