Exécution d’une instruction 3 Phases sont nécessaires : Lecture instruction (LI) : recherche le code opération de la prochaine instruction du programme (phase 1) Décodage instruction (DI) : » Décomposition en micro opérations et recherche des opérandes constante (phase 2) » Recherche opérande mémoire (phase 2’) Exécution instruction (EX) : » Exécution dans l’UAL (phase 3) » Écriture du résultat en mémoire (phase 3’) » Modification CP lors du branchement (phase 3’’) Signal d’horloge Phase 1 - Lecture instruction Accumulateur Bus contrôle Instructions UAL 1 Bus données Indicateur Compteur Programme Bus adresses Registre Instructions Unité Commande 3 Code op MEMOIRE Données 2 Phase 2 - Décodage - Recherche opérande Accumulateur Bus contrôle UAL 1 Instructions Code op Bus données Opérandes Indicateur Compteur Programme Registre Instructions Unité Commande MEMOIRE Données Bus adresses 3 2 Phase 2’ - Décodage - Recherche Donnée Accumulateur Bus contrôle UAL 3 Bus données MEMOIRE Indicateur Compteur Programme Registre Instructions Unité Commande Instructions Code op Données Bus adresses 1 Opérandes 2 Phase 3 - Exécution 3 Accumulateur Bus contrôle UAL 2 Bus données MEMOIRE Indicateur Compteur Programme Registre Instructions Unité Commande Instructions Code op Données Bus adresses 1 Opérandes Phase 3’ - Exécution - Écriture 2 Accumulateur Bus contrôle UAL Bus données MEMOIRE Indicateur Compteur Programme Registre Instructions Unité Commande Instructions Code op Données Bus adresses 1 Opérandes 3 Exemple de programme A ← Contenu de la mémoire | code : 45 - Adresse mémoire Contenu de la mémoire ← A | code : 46 - Adresse mémoire A ← A + Valeur Constante | code : 61 - Valeur Constante Exemple : [200] ← [200] + 2 o La mémoire d'instruction contiendra donc : o 100 45 A ← Contenu de la mémoire 200 o 101 200 o 102 61 A ← A+2 o 103 02 o 104 46 Contenu de la mémoire 200 ← A o 105 200 Instruction 1 : LI Phase 1 3 Accumulateur Lecture 4 UAL Indicateur Donnée 45 1 CP 100 RI ? Unité Commande Adresse 100 Contenu Adresse 45 100 200 101 61 102 2 103 46 104 2 200 105 20 200 Instruction 1 : LI Phase 2 Accumulateur UAL 7 5 Indicateur 6 CP 101 RI 45 Unité Commande Contenu Adresse Donnée Prête 45 100 200 101 61 102 103 Donnée 45 2 46 104 200 105 Adresse 100 20 200 Instruction 1 : DI Phase 1 Accumulateur Lecture 10 UAL 11 données 200 Indicateur Contenu 45 200 61 2 46 200 Adresse 100 101 102 103 104 105 9 Adresse 101 CP 101 RI 200 Unité Commande 8 20 200 Instruction 1 : DI Phase 2 Accumulateur Lecture 13 UAL données 20 Indicateur Contenu 45 200 61 2 46 200 Adresse 100 101 102 103 104 105 12 CP 102 RI 20 Unité Commande Adresse 200 20 200 Instruction 1 : EX 16 Accu 20 15 UAL données Indicateur 14 CP 102 RI 20 Unité Commande Adresse Contenu Adresse 45 100 200 101 61 102 2 103 46 104 200 105 20 200 Instruction 2 : LI Accu 20 Lecture UAL 3 2 Indicateur CP 102 RI 61 Unité Commande Données 61 Adresse 102 1 Contenu 45 200 61 2 46 200 20 Adresse 100 101 102 103 104 105 200 Instruction 2 : DI Accu 20 Lecture 6 UAL 7 données 2 Indicateur Adresse 103 CP 103 RI 2 Unité Commande 5 4 Contenu 45 200 61 2 46 200 20 Adresse 100 101 102 103 104 105 200 Instruction 2 : EX Accu 22 10 9 UAL 8 Indicateur CP 104 RI 2 Unité Commande Contenu Adresse 45 100 200 101 61 102 2 103 46 104 200 105 20 200 Instruction 3 : LI Accu 22 Lecture UAL 3 2 Données 46 Indicateur CP 104 RI 46 Unité Commande Adresse 104 1 Contenu 45 200 61 2 46 200 20 Adresse 100 101 102 103 104 105 200 Instruction 3 : DI Accu 22 Lecture 6 UAL 7 données 200 Indicateur Adresse 105 CP 105 RI 200 Unité Commande 5 4 Contenu Adresse 45 100 200 101 61 102 2 103 46 104 200 105 20 200 Instruction 3 : EX Accu 22 Ecriture 9 UAL données 22 Indicateur CP 106 RI 200 Unité Commande Adresse 200 8 Contenu Adresse 45 100 200 101 61 102 2 103 46 104 200 105 22 200 Représentation d’une instruction Exemple : ADDI.B #$55, D2 A partir du jeu d’instruction, on peut lire : Opération : Syntaxe : Attributs : Codes Condition : format Instruction : Immediate Data+DestinationDestination ADDI #<data>,<EA> Size = (Byte, Word, Long) Operation set all flags in CCR. 15 14 13 12 11 10 9 8 0 0 0 0 0 1 1 0 7 6 size Word data (16 bits) 5 4 3 2 Effective address mode Byte data (8 bits) Long data (32 bits) 1 register 0 Représentation d’une instruction Soit : code instruction sur 16 bits : 0000 0110 0000 0010 $0602 La valeur : 0000 0000 0101 0101 $0055 Le code de l’instruction complet : $06 $02 $00 $55 sur 4 octets Bien que l’opération se fasse sur un octet, la donnée est codée en mémoire sur 1 mot (16 bits). Modes d’adressages du 68000 Adressage immédiat Adressage direct et absolu Adressage indirect par registre Adressage indirect par registre avec auto incrémentation Adressage indirect par mémoire Adressage relatif par registre Adressage indexé Adressage indexé avec déplacement Modes d’adressages du 68000 Le mode d'adressage est la façon dont le processeur va chercher ou placer un opérande. Il y a un mode d'adressage pour chaque opérande. Les modes d'adressage possibles sont spécifiques à chaque opérande de chaque instruction. On distingue deux types d'opérande source le microprocesseur va chercher l'opérande destination le microprocesseur va placer l'opérande éventuellement après avoir été le chercher. Adressage : octets et mots L'unité d'adressage sur le 68000 est l'octet ; c'est la plus petite quantité d'information que l'on peut lire ou écrire dans la mémoire. Les octets sont placés en mémoire les uns après les autres selon des adresses croissantes. Un mot correspond à deux octets successifs ; l'adresse du mot est celle du premier octet qui correspond aux bits de poids forts du mot (bits 8 à 15). Un mot est toujours à une adresse paire 2p ; les octets qui le constituent sont aux adresses 2p pour les bits de poids 8 à 15, et 2p+1 pour les bits de poids 0 à 7. Adressage : long mot Un long mot correspond à quatre octets successifs ; l'adresse du long mot est celle du premier octet qui correspond aux bits de poids 24 à 31 du long mot ; c'est également l'adresse du mot qui contient les bits de poids 16 à 31 du même long mot. Un long mot est toujours à une adresse paire (odd) 2p; les octets qui le constituent sont aux adresses 2p pour les bits de poids 24 à 31, 2p+1 pour les poids 16 à 23, 2p+2 pour les poids 8 à 15 et 2p+3 pour les poids 0 à 7 Toutes les adresses sont exprimées sur 32 bits même s'il n'y a que 24 bits d'adresse sur le 68000. Adressage : exemples Modes d’adressages du 68000 Adressage Immédiat L'opérande est placé dans un ou deux mots complémentaires Ce mode d'adressage n'est utilisable qu'en lecture et la référence mémoire est dans l'espace programme Selon sa taille l'opérande est : dans l'octet de poids faible du mot complémentaire si c'est un octet. dans le mot complémentaire si c'est un mot. dans deux mots complémentaires si c'est un long mot (le mot de poids fort dans le premier mot complémentaire). Adressage Immédiat 31 Code op. 15 16 00 Code op. 8 Octet0 Mot Code op. 47 32 7 Long Mot 31 0 Adressage Immédiat Adressage Direct avec Registre de Donnée L'opérande est dans un des 8 registres de donnée. La taille de l'opérande peut être un octet (.B), un mot (.W) ou un long mot (.L). L'opérande peut être source ou destination. Ce mode ne peut pas être utilisé pour spécifier une adresse de destination dans la mémoire. Syntaxe : AE = Dn AE Effective : Adresse Adressage Direct avec Registre de Donnée Adressage Direct avec Registre d’Adresse L'opérande est dans un des 8 registres d'adresse. La taille de l'opérande peut être un mot (.W) ou un long mot (.L) ; dans le cas d'un mot il y a extension du bit de signe. L'opérande peut être source ou destination. Ce mode ne peut pas être utilisé pour spécifier une adresse de destination dans la mémoire. AE = An Adressage Direct avec Registre d’Adresse Adressage Direct et Absolu Adresse de la donnée Code Opération Valeur Valeur basse haute Mémoire Cellule adressée Opérande Adressage Absolu Court L'opérande est en mémoire et son adresse est contenue dans « le » mot complémentaire de l’instruction (16 bits). Une extension à 32 bits du bit de signe de cette adresse est réalisée. Ce mode d'adressage permet de rejoindre les 32 premiers Koctets et les 32 derniers Koctets de la mémoire (adresses $00000000-$00007FFF et $FFFF8000$FFFFFFFF). Adressage Absolu Court Adressage Absolu Long L'opérande est en mémoire et son adresse est contenue dans «deux» mots complémentaires. Ce mode d'adressage permet d’accéder à l’ensemble de la mémoire. Adressage Absolu Long Adressage Indirect par Registre Instruction Code Opération Registre Mémoire Registre désigné Adresse de l’opérande Opérande Adressage Indirect par Registre L'opérande est en mémoire et son adresse est dans un des 8 registres d'adresse. L'opérande peut être source ou destination et sa taille peut être un octet, un mot ou un long mot. Syntaxe : AE = (An) Adressage Indirect par Registre Adressage Indirect par Registre Post-incrémenté / Pré-décrémenté Instruction : lecture d’un mot en mémoire avec post-incrémentation Code Opération Registre d’adresse Registre 26 Mémoire 2B 2A 29 28 27 Opérande1 26 25 Instruction Code Opération Registre Mémoire Registre d’adresse 28 2B 2A 29 Opérande2 28 27 26 25 Adressage Indirect avec Post-incrémentation L'opérande est en mémoire et son adresse est dans un des 8 registres d'adresse ; Après utilisation, le contenu du registre d'adresse est incrémenté de la taille de l'opérande (1, 2 ou 4). Syntaxe : AE = (An)+ Adressage Indirect avec Post-incrémentation Adressage Indirect avec Pré-décrémentation L'opérande est en mémoire et son adresse est dans un des 8 registres d'adresse ; Avant utilisation le contenu du registre d'adresse est décrémenté de la taille de l'opérande (1, 2 ou 4). Syntaxe : AE = -(An) Adressage Indirect avec Pré-décrémentation Adressage Indirect avec Déplacement L'opérande est en mémoire et son adresse est calculée par addition au contenu d'un des 8 registres d'adresse d'un déplacement signé sur 16 bits. Le contenu du registre d'adresse reste inchangé. Le déplacement est placé dans un mot complémentaire qui suit l'instruction. Une extension à 32 bits du bit de signe du déplacement est réalisée ; le déplacement est donc considéré comme une valeur signée comprise entre -32768 et +32767. Adressage Indirect avec Déplacement Syntaxe d16(An) Adressage Indirect avec Déplacement Adressage Indirect par Mémoire Instruction Code Opération Adresse mémoire Mémoire Cellule relais Syntaxe AE = (Adr) Adresse Mémoire Opérande Adressage Indexé Instruction Code Opération Index Mémoire Registre d’index Adresse de l’opérande Opérande Adressage Indexé avec Déplacement : simplifié Instruction Code Opération Index Déplacement Mémoire Registre d’index Adresse Adresse effective + Opérande Adressage Indirect avec Index et Déplacement Adressage Indirect avec Index et Déplacement L'opérande est en mémoire et son adresse est calculée par addition du contenu d'un des 8 registres d'adresse, d'un déplacement signé sur 8 bits et du contenu d'un registre d'index multiplié par un facteur d'échelle. Le registre d'index peut être un des 8 registres de donnée ou un des 8 registres d'adresse ; il peut être utilisé comme un mot ou un long mot ; dans le cas d'un mot il y extension à 32 bits de son bit de signe. Le facteur d'échelle utilisé pour multiplier le registre d'index est fonction de la taille de l'opérande: 1 pour les octets, 2 pour les mots et 4 pour les longs mots. Les contenus du registre d'adresse de base et du registre d'index restent inchangés. Adressage Indirect avec Index et Déplacement