Architectures des Ordinateurs 1 - Chapitre 4 PDF
Document Details
Uploaded by Deleted User
Tags
Summary
These notes explain the concept of computer architectures, covering code machine, execution time, and instruction sets. They contain examples and comparisons between different architectures. It's useful guide for understanding the fundamental components of computer architecture.
Full Transcript
L2 ACAD SECTION A Chapitre 4 ARCHITECTURES DES ORDINATEURS 1 Code Machine et temps d’exécution JEU D’INSTRUCTIONS DU MICROPROCEUR (ISA) ISA : (Instruction Set Architecture) le jeu d’instructions du processeur -...
L2 ACAD SECTION A Chapitre 4 ARCHITECTURES DES ORDINATEURS 1 Code Machine et temps d’exécution JEU D’INSTRUCTIONS DU MICROPROCEUR (ISA) ISA : (Instruction Set Architecture) le jeu d’instructions du processeur - C’est l’interface entre le software et le hardware, ou tout simplement : « Les spécifications fonctionnelles de la partie matérielle du processeur vues par le programmeur, compilateur et systèmes d’exploitation » Une ISA comprend: La liste de toutes les instructions et leur possibilités d’utilisation telles que implémentées dans le matériel Les différents modes d’adressage Les registres visibles par le software Les op-codes de toutes les instructions Le format des adresses et des données La taille des différentesinstructions Le temps d’exécution des instructions en cycles d’horloge … ARCHITECTURES CISC & RISC Les processeurs généraux actuels se répartissent en deux grandes catégories appelées CISC pour Complex Instruction Set Computer et RISC pour Reduced Instruction Set Computer. Les processeurs de ces deux catégories se distinguent par la conception de leurs jeux d'instructions. Les processeurs CISC possèdent un jeu étendu d'instructions complexes. Les instructions ont des tailles différentes. Chacune de ces instructions peut effectuer plusieurs opérations élémentaires comme charger une valeur en mémoire, faire une opération arithmétique et ranger le résultat en mémoire. Au contraire, les processeurs RISC possèdent un jeu d'instructions réduit où chaque instruction effectue une seule opération élémentaire. Le jeu d'instructions d'un processeur RISC est plus uniforme. Toutes les instructions sont codées sur la même taille et toutes s'exécute dans le même temps (un cycle d'horloge en général). Comparaison entre les architectures RISC et CISC Architecture RISC Architecture CISC instructions simples ne prenant qu’un instructions complexes prenant plusieurs seul cycle cycles instructions au format fixe instructions au format variable beaucoup de registres peu de registres seules les instructions LOAD et presque toutes les instructions sont STORE ont accès à la mémoire susceptibles d’accéder à la mémoire peu de modes d’adressage beaucoup de modes d’adressage EXEMPLE D’INSTRUCTIONS APPARTENANT A L’ISA DU µp 8086 ETUDE DETAILLEE DES INSTRUCTIONS ADD ET MOV Format instruction + brève Effet instruction sur les flags du Mnémonique description PSW Combinaisons possibles des Nombre de cycles opérandes machine Nombre de transfert Taille de µP - Memoire l’linstruction en Flags: Bytes Blanc : le flag n’est pas affecté par l’instruction X: le flag est affecté par l’instruction 0: le flag est remis à zéro 1: le flag est forcé est positionné à 1 U: le flag est indéterminé R: le flag est restoré D’ AUTRES EXEMPLES DE L’ISA 8086 Calcul et optimisation du temps d’exécution d’un programme Pour estimer le temps d’exécution d’un programme : 1. Calculer le nombre de cycles machine pour chaque instruction du programme 2. Calculer le total cycles machine de toutes les instructions du programme 3. Diviser le total cycles machine par la fréquence du microprocesseur. L’unité de la fréquence est le Hertz et l’unité du temps d’exécution est la seconde. Total _ cycles _ machine Tex _ programme Fréquence _ microprocesseur Exemple : Exemple : #CM #CM MOV Bl , 12H 4 MOV BL , oper1 8 + EA = 8+6= 14 MOV CL , 0F6H 4 MOV CL ,oper2 8 + EA = 8+6= 14 ADD CL , BL 2 MOV oper1 , CL 9 + EA = 9+6= 15 10 MOV oper2 , BL 9 + EA = 9+6= 15 58 Total CM = 10 Si Fréquence µP = 2 GHz Tex = 5 nsec Total CM = 58 Si Fréquence µP = 2 GHz Tex = 29 nsec Un exemple plus complet pour le calcul du temps d’exécution mes_donnees SEGMENT Total min CM = 4+2+4+4+100 x (13+4+16+2+17)- compteur DB 0 12+4+51 = 57 +100 x 52 = 57 + 5200 = 5257 CM liste DB 100 DUP(?) mes_données ENDS Total max CM = 4+2+4+4+100 x (13+4+4+21+2+17)- 12+4+51=57+100 x 61 = 57 +6100 = 6157 CM mon_code SEGMENT Assume CS: mon_code, DS:mes_donnees Pour un µP fonctionnant à une fréquence = 1 GHz #CM Start: MOV AX , mes_donnees 4 Texmin = 5257 nsec = 5,257 µsec MOV DS , AX 2 Texmax = 6157 nsec = 6,157 µsec MOV BX , OFFSET liste 4 MOV CX , LEN GTH liste 4 encore: MOV DL , [BX] 8+EA =8+5= 13 CMP DL , 0 4 JNE sauter 16/4 INC compteur 15+EA= 15+6= 21 Sauter: INC BX 2 LOOP encore 17/5 MOV AX , 4C00H 4 INT 21H 51 mon_code ENDS END start REFLEXION Si on modifie le data segment du programme précédent comme suit: mes_donnees SEGMENT compteur DB 0 liste DW 100 DUP(?) mes_données ENDS 1) Adapter le code segment à cette modification 2) Calculer de nouveau les temps d’exécution Texmin et Texmax pour un processeur fonctionnant à 1 GHz 3) Il est claire que les temps d’exécution calculés ne sont pas optimaux, que faut-il faire pour les optimiser ? 4) Calculer les nouveauxtemps d’exécution optimisés Tmin et Tmax GENERATION DES CODES MACHINE Le code machine, ou langage machine, est un langage de programmation natif , c’est le plus proche langage au processeur, il est composé d'une longue suite numérique binaire de zéros et de uns (bits). Les résultats des analyses et des traitements d'un langage de programmation tel que la compilation sont toujours exprimés en code machine. A l'issue d’une programmation, les instructions en langage source sont compilées et regroupées dans du code machine stocké sous la forme d'un fichier exécutable. Dans les systèmes d'exploitation des PC, ces fichiers portent généralement l'extension «.exe ou.com». Le code machine d’un type de processeur n’est pas portable. FORMAT GENERAL DU CODE MACHINE DES INSTRUCTIONS DU µP 8086 Champ Ce champ dépend Ce champ dépend Ce champ dépend obligatoire de l’instruction de l’instruction de l’instruction 7 0 7 0 7 0 7 07 0 7 0 Op-code + modes d’adressage Dépl. bas Dépl. haut Data bas Data haut Dépl. bas : octet bas du déplacement cité dans le mode d’adressage de l’opérande mémoire Dépl. haut : octet haut du déplacement cité dans le mode d’adressage de l’opérande mémoire Data bas : octet bas de la donnée iimmédiate citée dans l’instruction Data haut : octet haut de la donnée iimmédiate citée dans l’instruction Les codes machine des instructions sont générés grâce à des règles appelées règles de génération de codes machine. Chaque instruction de l’ISA dispose de plusieurs règles. REGLES DE GENERATION DES CODES MACHINES POUR MOV & ADD I CODES MACHINE DE L’INSTRUCTION MOV: Il existe 7 règles de génération du code machine pour l’instruction MOV: Prenons l’exemple de MOV BL , [SI] Cette instruction est de type MOV reg , mem Seulement la 1ère règle qui s’applique Dans cette règle : Le bit W spécifie la taille des opérandes W=0 les opérandes sont 8 bits W=1 les opérandes sont sur 16 bits Le bit D et le champ REG est une paire qui fonctionne ensemble Les champs MOD et R/M est une paire qui fonctionne ensemble D (1 bit) pour spécifier qui est argument Registre: D=0 si l’argument source qui est un registre D=1 si l’argument destination qui est registre REG (3 bits) c’est le code du registre cité dans l’instruction qu’on prend du tableau présenté dans le slide N° 9. En appliquant donc la règle N° 1 on obtient : 1000 1010 00011100 le code machine est donc 8A 1C DW MODREGR/M Encore pleins d’exemples ! ! Générer le code machine pour l’instruction : MOV [DI + 1234H] , CX Cette instruction est de type MOV mem , reg Donc c’est la 1ère règle quis’applique D=0 W=1 MOD = 10 R/M = 101 REG = 001 Code machine : 10001001 10001101 00110100 00010010 89 8D 34 12 REFLEXION : Générer le code machine des instructions suivantes puis vérifier vos résultats avec le debug en utilisant les commandes Assemble et Unassemble : MOV DL , [BX + 12H] MOV CX , AX MOV DX , 0FE00H MOV [SI + 0FFFEH] , 6789H MOV AX , 0ABCDH MOV usthb , 67H ; EA(usthb) = 6648H ( avec le debug taper MOV byte ptr , 67H) MOV DS , AX ;dans la règle de génération du code machine le champ SR est sur 2 ;bits où on doit écrire le code du registre segment cité dans l’instruction II CODES MACHINE DE L’INSTRUCTIONADD : Seulement trois règles : En principe, la 1ère et la 3ème règles sont faciles à comprendre, la seule difficulté est dans la 2ème règle à cause du bit S dans le 1er octet. Bit S : bit d’extension de signe (Sign extended) Ce bit est utile pour optimiser la taille de l’instruction quand la donnée immédiate (Data) dans l’instruction est de taille 16 bits où l’octet de poids fort de la donnée est une extension de signe de l’octet de poidsfaible. Exemple : ADD CX , 0036H 00H est l’extension de signe de 36H S = 1 ADD [SI +5678H] , 0FF80H FFH est l’extension de signe de 80H ADD DX , 88FEH 88H n’est pas l’extension de signe de FEH DES EXEMPLES DE CODES MACHINE DE L’INSTRUCTION ADD : Exemple: ADD [BX] , CX code machine : 01 0F ; (1ère règle) ADD DI , 1234H code machine : 81 C7 34 12 ; (2ème règle , S=0) ADD [BX][SI] , 0FFABH code machine : 83 00 AB ; (2ème règle , S=1) ADD AL , 0A0H code machine : 04 A0 ; (3ème règle)