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)… www.enib.fr [email protected] Microprocesseurs : Systèmes à Microprocesseurs 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. www.enib.fr 2 [email protected] Microprocesseurs : Systèmes à Microprocesseurs 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. www.enib.fr [email protected] Microprocesseurs : Systèmes à Microprocesseurs Chemin de données www.enib.fr [email protected] Microprocesseurs : Systèmes à Microprocesseurs 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. www.enib.fr [email protected] Microprocesseurs : Systèmes à Microprocesseurs 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. www.enib.fr [email protected] Microprocesseurs : Systèmes à Microprocesseurs Séquencement des Instructions www.enib.fr 7 [email protected] Microprocesseurs : Systèmes à Microprocesseurs Exemple de Programme www.enib.fr 8 [email protected] Microprocesseurs : Systèmes à Microprocesseurs Phase d’acquisition (Fetch) 0 10 LDA var1 ADD var2 STO res B+1 LDA var1 STOP Var1=1 Var2=2 res www.enib.fr 9 [email protected] Microprocesseurs : Systèmes à Microprocesseurs www.enib.fr 10 [email protected] Microprocesseurs : Systèmes à Microprocesseurs Phase d’exécution 0x004 0x004 LDA var1 LDA var1 B 0x001 ADD var2 STO res STOP Var1=1 Var2=2 res 0x001 www.enib.fr [email protected] Microprocesseurs : Systèmes à Microprocesseurs www.enib.fr 12 [email protected] Microprocesseurs : Systèmes à Microprocesseurs Phase d’acquisition (Fetch) 1 2 LDA var1 ADD var2 STO res ADD var2 STOP Var1=1 Var2=2 res www.enib.fr 13 [email protected] Microprocesseurs : Systèmes à Microprocesseurs www.enib.fr 14 [email protected] Microprocesseurs : Systèmes à Microprocesseurs Phase d’exécution 0x005 LDA var1 ADD var2 STO res STOP Var1=1 Var2=2 res 0x001 0x003 0x002 [email protected] Microprocesseurs : Systèmes à Microprocesseurs www.enib.fr www.enib.fr 16 [email protected] Microprocesseurs : Systèmes à Microprocesseurs Instructions de Saut JMP Addr : Fetch 0 10 JMP 0x004 JMP 0X004 www.enib.fr 17 [email protected] Microprocesseurs : Systèmes à Microprocesseurs JMP Addr : Exécution 0X004 0X004 JMP 0X004 www.enib.fr 18 [email protected] Microprocesseurs : Systèmes à Microprocesseurs JSR Addr : Fetch 0 10 JSR 0x004 JSR 0x004 www.enib.fr 19 [email protected] Microprocesseurs : Systèmes à Microprocesseurs JSR Addr : Exécution 0x004 0x004 1 1 0x004 www.enib.fr 20 [email protected] Microprocesseurs : Systèmes à Microprocesseurs RET : Fetch 6 6 7 JSR 0x004 RET RET www.enib.fr 21 [email protected] Microprocesseurs : Systèmes à Microprocesseurs RET : Exécution Actions réalisées : PC SPC 1 1 www.enib.fr 22 [email protected] Microprocesseurs : Systèmes à Microprocesseurs