Architecture Logicielle et matérielle Cours 5 : contrôle, exécution des instructions D’après les transparents de N. Louvet (univ Lyon1) Laure Gonnord http://laure.gonnord.org/pro/teaching/ [email protected] Licence d’info - Université Lyon 1 - FST Plan 1 Retour sur le Modèle de Van Neuman 2 Stockage des programmes/instructions en mémoire centrale Classes d’instructions et modes d’adressage Cycle d’instruction 3 Digression : programmation LC3 de base Laure Gonnord (L2/FST/Univ Lyon1) ArchiL2 (LIF6) Cours 5 : Construction du contrôle, exécution des instructions 2014 2 / 32 Retour sur le Modèle de Van Neuman 1 Retour sur le Modèle de Van Neuman 2 Stockage des programmes/instructions en mémoire centrale 3 Digression : programmation LC3 de base Laure Gonnord (L2/FST/Univ Lyon1) ArchiL2 (LIF6) Cours 5 : Construction du contrôle, exécution des instructions 2014 3 / 32 Retour sur le Modèle de Van Neuman Rappels une mémoire centrale, qui contient le programme et les données ; une unité centrale de traitement (UCT), qui exécute un programme contenu en mémoire centrale ; une (ou plusieurs) unité(s) d’entrée-sortie permettant l’échange d’informations avec l’environnement de l’UCT. Un système d’interconnexion permet l’interaction entre ces unités. Unité d’entrée/sortie Laure Gonnord (L2/FST/Univ Lyon1) Unité centrale de traitement Mémoire centrale ArchiL2 (LIF6) Cours 5 : Construction du contrôle, exécution des instructions 2014 4 / 32 Retour sur le Modèle de Van Neuman Ex d’instructions En langage dit d’assemblage du LC3, on a par exemple les instructions suivantes : ADD R1 R1 R2 réalise une addition ST R3 R1 0 réalise un stockage en mémoire du contenu d’un registre I plus de détails plus tard (cours 06) Laure Gonnord (L2/FST/Univ Lyon1) ArchiL2 (LIF6) Cours 5 : Construction du contrôle, exécution des instructions 2014 5 / 32 Retour sur le Modèle de Van Neuman Objectifs Questions : Comment les instructions sont-elles stockées en mémoire ? Comment sont-elles décodées et exécutées ? I On prendra un exemple jouet, le LC3. Laure Gonnord (L2/FST/Univ Lyon1) ArchiL2 (LIF6) Cours 5 : Construction du contrôle, exécution des instructions 2014 6 / 32 Stockage des programmes/instructions en mémoire centrale 1 Retour sur le Modèle de Van Neuman 2 Stockage des programmes/instructions en mémoire centrale Classes d’instructions et modes d’adressage Cycle d’instruction 3 Digression : programmation LC3 de base Laure Gonnord (L2/FST/Univ Lyon1) ArchiL2 (LIF6) Cours 5 : Construction du contrôle, exécution des instructions 2014 7 / 32 Stockage des programmes/instructions en mémoire centrale Stockage des programmes en mémoire centrale Chaque instruction est stockée en mémoire sous la forme d’un ou plusieurs mots binaires. Le code d’une instruction se décompose en : un champ appelé code-opération ou opcode, qui spécifie l’opération qui doit être réalisée lors de l’exécution de l’instruction ; éventuellement, un ou plusieurs champs opérandes qui définissent les emplacements où l’instruction doit lire ses sources et écrire son résultat. Laure Gonnord (L2/FST/Univ Lyon1) ArchiL2 (LIF6) Cours 5 : Construction du contrôle, exécution des instructions 2014 8 / 32 Stockage des programmes/instructions en mémoire centrale Exemple Sur une certaine machine, les instructions sont codées sur 16 bits : 15 14 13 12 11 10 9 8 7 opcode 6 5 4 3 2 1 0 adresse Exemples d’opcodes hypothétiques : 0001 : charger le mot dont l’adresse est donnée dans ACC ; 0010 : stocker le mot contenu dans ACC à l’adresse donnée ; 0101 : ajouter l’entier à l’adresse donnée à ACC. Laure Gonnord (L2/FST/Univ Lyon1) ArchiL2 (LIF6) Cours 5 : Construction du contrôle, exécution des instructions 2014 9 / 32 Stockage des programmes/instructions en mémoire centrale Exemple, assembleur IA32 int a, b; int main(void) { int c; a = 6; b = -5; c = a + b; return(c); } Compilé avec avec gcc -O0 -Wa,-alh : 1 2 3 4 5 6 7 8 0000 55 9 0001 89E5 10 0003 83EC10 ... .file "test.c" .comm a,4,4 .comm b,4,4 .text .globl main .type main, @function main: pushl %ebp movl %esp, %ebp subl $16, %esp Laure Gonnord (L2/FST/Univ Lyon1) ArchiL2 (LIF6) Cours 5 : Construction du contrôle, exécution des instructions 2014 10 / 32 Stockage des programmes/instructions en mémoire centrale Rôle de l’Unité de contrôle UC : gestion de l’exécution des instructions d’un programme. Deux registres importants : Le registre d’instruction IR, qui contient l’instruction en cours d’exécution. Le compteur de programme PC, qui contient l’adresse en mémoire centrale de la prochaine instruction a exécuter. Ces registres ne sont pas directement accessibles au programmeur. Laure Gonnord (L2/FST/Univ Lyon1) ArchiL2 (LIF6) Cours 5 : Construction du contrôle, exécution des instructions 2014 11 / 32 Stockage des programmes/instructions en mémoire centrale Rôle de l’Unité de contrôle - suite L’UC contient un circuit permettant le décodage des instructions. Le décodage d’une instruction consiste à déterminer quelle opération doit être effectuée, parmi toutes les opérations possibles, en fonction de l’opcode de l’instruction. L’UC se charge d’activer dans un ordre bien défini les circuits nécessaires à l’exécution de l’instruction en cours. Elle est synchronisée sur une horloge, dont la fréquence détermine celle à laquelle sont executées les instructions. Laure Gonnord (L2/FST/Univ Lyon1) ArchiL2 (LIF6) Cours 5 : Construction du contrôle, exécution des instructions 2014 12 / 32 Stockage des programmes/instructions en mémoire centrale Rôle de l’Unité de contrôle - suite L’UCT doit échanger des données ou des instructions avec la mémoire centrale. Elle utilise pour cela deux registres internes : Un registre d’adresse AR, qui spécifie l’adresse de la mémoire centrale où devra être réalisée la prochaine lecture ou d’écriture. La taille du registre AR détermine le nombre maximal de cases mémoires adressables. Un registre de données mémoire MDR est utilisé pour les accès en écriture et les accès en lecture. Le MDR peut soit contenir la donnée qui doit être écrite en mémoire centrale, soit recevoir la donnée qui doit être lue en mémoire centrale. Laure Gonnord (L2/FST/Univ Lyon1) ArchiL2 (LIF6) Cours 5 : Construction du contrôle, exécution des instructions 2014 13 / 32 Stockage des programmes/instructions en mémoire centrale Communication Mécanisme similaire pour les échanges avec les périphériques : un registre AR-E/S pour spécifier une adresse sur un périphérique ; un registre MDR-E/S pour le stockage temporaires de données. Laure Gonnord (L2/FST/Univ Lyon1) ArchiL2 (LIF6) Cours 5 : Construction du contrôle, exécution des instructions 2014 14 / 32 Stockage des programmes/instructions en mémoire centrale Classes d’instructions et modes d’adressage 1 Retour sur le Modèle de Van Neuman 2 Stockage des programmes/instructions en mémoire centrale Classes d’instructions et modes d’adressage Cycle d’instruction 3 Digression : programmation LC3 de base Laure Gonnord (L2/FST/Univ Lyon1) ArchiL2 (LIF6) Cours 5 : Construction du contrôle, exécution des instructions 2014 15 / 32 Stockage des programmes/instructions en mémoire centrale Classes d’instructions et modes d’adressage Classes d’instructions On distingue essentiellement trois classes d’instructions : Opération arithmétique et logique : opération sur des données. ,→ addition, soustraction, ou, et, ou-exclusif. . . Accés mémoire : transfert entre un registre de l’UCT et la mémoire. ,→ LOAD : chargement du contenu d’une case mémoire dans un registre. ,→ STORE : rangement du contenu d’un registre dans une case mémoire. Laure Gonnord (L2/FST/Univ Lyon1) ArchiL2 (LIF6) Cours 5 : Construction du contrôle, exécution des instructions 2014 16 / 32 Stockage des programmes/instructions en mémoire centrale Classes d’instructions et modes d’adressage Classes d’instructions 2/2 Contrôle du flux d’instructions : Le PC est incrémenté à chaque cycle d’instruction, mais certaines instructions peuvent modifier sa valeur. ,→ Instructions utilisées pour les boucles et les blocs si-alors-sinon. ,→ Instructions de branchement, de saut, ou d’appel à des routines. Laure Gonnord (L2/FST/Univ Lyon1) ArchiL2 (LIF6) Cours 5 : Construction du contrôle, exécution des instructions 2014 17 / 32 Stockage des programmes/instructions en mémoire centrale Classes d’instructions et modes d’adressage Codage d’une instruction - Rappel Chaque instruction est codée par un mot binaire, qui se décompose en : un champ opcode, qui spécifie l’opération a réaliser ; éventuellement, un ou plusieurs champs opérandes qui définissent les emplacements où l’instruction doit lire ses sources et écrire son résultat. Méthode de localisation des données = mode d’adressage (registre, mémoire) Laure Gonnord (L2/FST/Univ Lyon1) ArchiL2 (LIF6) Cours 5 : Construction du contrôle, exécution des instructions 2014 18 / 32 Stockage des programmes/instructions en mémoire centrale Classes d’instructions et modes d’adressage Exemple du LC3 - deux modes pour ADD Ex : Le LC3 dispose de 8 registres, notés R0,. . . ,R7. Dans le langage d’assemblage, l’instruction d’addition se décline de deux façons : ADD DR, SR1, SR2, qui effectue DR <- SR1 + SR2. ,→ Tous les opérandes de l’instruction sont des registres : adressage par registre. ,→ Exemple : ADD R1, R2, R3 effectue R1 <- R2 + R3. ADD DR, SR1, imm5, qui effectue DR <- SR + imm5. ,→ Le dernier opérande est un immédiat, i.e., il est codé dans l’instruction. ,→ Exemple : ADD R1, R2, 5 effectue R1 <- R2 + 5. Laure Gonnord (L2/FST/Univ Lyon1) ArchiL2 (LIF6) Cours 5 : Construction du contrôle, exécution des instructions 2014 19 / 32 Stockage des programmes/instructions en mémoire centrale Classes d’instructions et modes d’adressage Exemple du LC3 - deux modes pour ADD Dans le codage de l’instruction en langage machine, un bit permet de spécifier quel mode d’adressage est utilisé pour le troisième opérande : assembleur action codage opcode F E D arguments C B A 9 8 7 6 5 ADD DR,SR1,SR2 DR <- SR1 + SR2 0001 DR SR1 0 ADD DR,SR1,Imm5 DR <- SR1 + Imm5 0001 DR SR1 1 Laure Gonnord (L2/FST/Univ Lyon1) 4 3 00 2 1 0 SR2 Imm5 ArchiL2 (LIF6) Cours 5 : Construction du contrôle, exécution des instructions 2014 20 / 32 Stockage des programmes/instructions en mémoire centrale Classes d’instructions et modes d’adressage Exemple du LC3 - deux instructions d’accès mémoire LD DR, add, effectue DR <- mem[add]. ST SR, add, effectue mem[add] <- SR. I Adressage direct ici : add adresse, mem[add] la case mémoire corresondante. Adresse de chargement ou de rangement en mémoire codée 1 dans l’instruction : assembleur action codage opcode F E D arguments C B A 9 8 7 6 5 4 LD DR,add DR <- mem[add] 0010 DR add ST SR,add mem[add] <- SR 0011 SR add 3 2 1 0 1. Sous une forme particulière, que nous ne détaillerons pas tout de suite. . . Laure Gonnord (L2/FST/Univ Lyon1) ArchiL2 (LIF6) Cours 5 : Construction du contrôle, exécution des instructions 2014 21 / 32 Stockage des programmes/instructions en mémoire centrale Classes d’instructions et modes d’adressage Ex du LC3 : branchement branchement inconditionnel : BR add, effectue PC <- add. Dans ce cas, add désigne l’adresse mémoire de l’instruction qui sera exécutée après l’instruction BR add. A nouveau, il s’agit d’un adressage direct : assembleur action codage opcode F BR add PC <- add Laure Gonnord (L2/FST/Univ Lyon1) E D 0000 arguments C B A 000 9 8 7 6 5 4 3 2 1 0 add ArchiL2 (LIF6) Cours 5 : Construction du contrôle, exécution des instructions 2014 22 / 32 Stockage des programmes/instructions en mémoire centrale Classes d’instructions et modes d’adressage Résumé sur l’adressage par registre lorsque l’emplacement désigné est simplement un registre. immédiat lorsque l’opérande est une valeur codée dans l’instruction. direct lorsque l’opérande est une adresse en mémoire centrale. Laure Gonnord (L2/FST/Univ Lyon1) ArchiL2 (LIF6) Cours 5 : Construction du contrôle, exécution des instructions 2014 23 / 32 Stockage des programmes/instructions en mémoire centrale Cycle d’instruction 1 Retour sur le Modèle de Van Neuman 2 Stockage des programmes/instructions en mémoire centrale Classes d’instructions et modes d’adressage Cycle d’instruction 3 Digression : programmation LC3 de base Laure Gonnord (L2/FST/Univ Lyon1) ArchiL2 (LIF6) Cours 5 : Construction du contrôle, exécution des instructions 2014 24 / 32 Stockage des programmes/instructions en mémoire centrale Cycle d’instruction Cycle d’instruction Lors de l’exécution d’un programme, l’UCT doit effectuer une séquence de tâches pour exécuter chacune des instructions de ce programme. Cette séquence de tâches, gérée par l’unité de contrôle, est appelée cycle d’instruction. On peut voir l’exécution d’un programme comme la réalisation d’une succession de cycles d’instructions : Début de l’exécution Chargement d’une instruction Laure Gonnord (L2/FST/Univ Lyon1) Exécution de l’instrution chargée Fin de l’exécution ArchiL2 (LIF6) Cours 5 : Construction du contrôle, exécution des instructions 2014 25 / 32 Stockage des programmes/instructions en mémoire centrale Cycle d’instruction Remarques certaines parties du cycle peuvent varier d’une instruction à l’autre, les cycles d’instructions peuvent varier d’un processeur à l’autre. En effet, le découpage du cycle de chaque instruction dépend de la microarchitecture mise en place. Laure Gonnord (L2/FST/Univ Lyon1) ArchiL2 (LIF6) Cours 5 : Construction du contrôle, exécution des instructions 2014 26 / 32 Stockage des programmes/instructions en mémoire centrale Cycle d’instruction Étapes du cycle d’instructions FETCH : chargement de l’instruction depuis la mémoire centrale (phase commune à toutes les instructions). ,→ chargement de l’instruction à l’adresse donnée par le PC dans IR. ,→ incrémentation de PC en vue de l’exécution de l’instruction suivante. DECODE : décodage de l’instruction par l’unité de contrôle (phase commune à toutes les instructions). ,→ décision des phases suivantes en fonction de l’opcode. EXECUTE : exécution l’instruction à proprement parler. STORE RESULT : écriture des résultats en mémoire centrale. I Chaque phase : un ou plusieurs cycles de l’horloge de l’UCT. Laure Gonnord (L2/FST/Univ Lyon1) ArchiL2 (LIF6) Cours 5 : Construction du contrôle, exécution des instructions 2014 27 / 32 Stockage des programmes/instructions en mémoire centrale Cycle d’instruction TD Exercices : codage des instructions exécution d’une séquence d’instructions. Laure Gonnord (L2/FST/Univ Lyon1) ArchiL2 (LIF6) Cours 5 : Construction du contrôle, exécution des instructions 2014 28 / 32 Stockage des programmes/instructions en mémoire centrale Cycle d’instruction Exemple : L’architecture LC-3 mémoire de 216 mots de 16 bits, instructions codées sur 16 bits. On dipose d’un simulateur pour cette architecture : c’est un logiciel qui joue le rôle d’une couche micro-architecture implantant l’architecture LC-3, et disposant d’un interface pour voir ce qui se passe lors de l’exécution d’un programme. L’architecture utilise les registres PC, IR, PSR (Program Status Register). L’architecture présente 8 registres généraux, R0,...,R7, que le programmeur peut utiliser pour effectuer des calculs. Laure Gonnord (L2/FST/Univ Lyon1) ArchiL2 (LIF6) Cours 5 : Construction du contrôle, exécution des instructions 2014 29 / 32 Stockage des programmes/instructions en mémoire centrale Cycle d’instruction Exemple assembleur LC3 - démo On considère par exemple le programme ci-dessous : .ORIG x3000 ; adresse de début de programme ; partie dédiée au code LD R1,a ; charge le contenu de la case mémoire désignée par ; l'étiquette a dans le registre R1 LD R2,b ; charge le contenu de la case mémoire désignée par ; l'étiquette b dans le registre R2 ADD R0,R1,R2 ; additionne les contenus de R1 et R2, puis place ; le résultat dans R0 ST R0,r ; range le contenu du registre R0 dans la case mémoire ; désignée par l'étiquette r HALT ; directive de l'assembleur pour mettre fin au programme ; (rend la main à l'OS) ; partie dédiée aux données a: .FILL #5 ; case mémoire contenant la valeur 5 (décimal) b: .FILL #2 ; case mémoire contenant la valeur 2 (décimal) r: .BLKW #1 ; case mémoire réservée pour le résultat a+b .END Laure Gonnord (L2/FST/Univ Lyon1) ArchiL2 (LIF6) Cours 5 : Construction du contrôle, exécution des instructions 2014 30 / 32 Digression : programmation LC3 de base 1 Retour sur le Modèle de Van Neuman 2 Stockage des programmes/instructions en mémoire centrale 3 Digression : programmation LC3 de base Laure Gonnord (L2/FST/Univ Lyon1) ArchiL2 (LIF6) Cours 5 : Construction du contrôle, exécution des instructions 2014 31 / 32 Digression : programmation LC3 de base Objectif Comprendre le jeu d’instruction du LC3 avant de réaliser le processeur en Logisim Écrire des programmes en “langage d’assemblage”. Laure Gonnord (L2/FST/Univ Lyon1) ArchiL2 (LIF6) Cours 5 : Construction du contrôle, exécution des instructions 2014 32 / 32