Couche Jeu d’Instruction / Instruction Set Architecture (ISA) L2 – I303 Séance 6 26/11/07 1 Architecture des ordinateurs Introduction & Historique 3h Cours 4h TDs Représentation des nombres Couche physique, circuits logiq. Circuits séquentiels CC Couche micro-architecture Le chemin de donnée Cycle d’exécution Couche ISA 26/11/07 Conclusion sur l’exécution CC 2 Notion de micro-architecture Les choix d’organisation du chemin de donnée forment ce que l’on appelle la microarchitecture du processeur : • Le CdD dispose de 2 ou 3 bus • Le nombre de registres • L’architecture dispose d’un pipeline • Elle est superscalaire • Son contrôle est microprogrammé ou cablé • … Le contrôle de l’exécution d’une instruction se fait par une séquence de commandes appellées – micro-commandes – ou micro-instructions 26/11/07 3 Plan 1. 2. 3. 4. 5. Rôle et propriétés de la couche ISA Organisation mémoire Les registres de l’architecture Types de données Formats des instructions 26/11/07 4 a. Le rôle de la couche ISA Programme en Fortran Programme en C compilation compilation Couche ISA Logiciel (software) Matériel (hardware) Exécution du programme ISA Par matériel ou par microprogramme Matériel 26/11/07 5 int main (){ int a = 3; … return a = b+c; } main : load a, R1 add R1, R2, R3 … $0F47 0x03D810A2 26/11/07 Frontière logiciel/matériel 6 b. Caractéristiques de la couche ISA • Modèle d’organisation mémoire de la machine • Ses registres • Types de données manipulées • Son jeu d’instruction • … 26/11/07 7 c. Ce qui ne fait pas partie de la couche ISA Savoir si la microarchitecture • Est microprogrammée ou cablée • Si elle dispose d’un pipeline • Si elle est superscalaire • … La couche ISA n’a pas de vision sur l’implémentation des instructions! 26/11/07 8 2. Modèle d’organisation mémoire 26/11/07 9 a. Hiérarchie mémoire Capacité Bandes Indéfinie 1 Moctet 200 Mo/s 26/11/07 1ms 100 cycles Mémoire principale 1 Goctet 133Mo/s 1 Koctet 800Mo/s 10ms 10k cycles Disques optiques Mémoire secondaire Disque magnétique 1 Toctet 30Mo/s Temps d’accès Cache Registres 100ns 10 cycles 10ns 1 cycles 1ns 1 cycle 10 b. Temps d’accès mémoire • Si le temps d’accès à la mémoire secondaire représente 1000 cycles processeur • Le processeur doit être gelé pendant 1000 cycles => impossible • Répartition des données dans la hiérarchie et cohérence mémoire • Mise en attente et/ou anticipation des instructions d’accès mémoire 26/11/07 11 c. Organisation mémoire • Les mots mémoires sont aujourd’hui multiple de l’octet • Les adresses de ces mots sont alignées en mémoire • On ne peut transférer que des mots alignés • La taille d’un mot correspond généralement à l’architecture du processeur (pas toujours) 26/11/07 12 Retour sur le protocole de rangement • Big Endian 0x12 34 56 78 – Motorola 68000, Sparc • Little Endian 0x78 56 34 12 – Intel, AMD • Les deux modes – PowerPC – MIPS 26/11/07 00 01 02 04 05 06 07 08 09 10 11 03 02 01 00 07 06 05 04 09 08 11 10 03 L’instruction BSWAP reg du x86 Inverse l’ordre des octets du registre reg de Big 13 à Little Alignement des mots mémoire • Historiquement les mots mémoire étaient des mots de 8 bits (1 octet) • Pour maintenir la compatibilité des logiciels, et du code ASCII, le matériel manipulant des mots de 32 bits est obligé d’émuler des mots de 8 bits • Les 2 bits de poids faible du bus d’adresse n’existent en fait tout simplement pas! • Les fils du bus d’adresse vont de 31 à 2 ! 26/11/07 14 Exemple • LOAD R1, [0x00000008] accède au mot de 4 octets dont les adresses sont : – – – – 0000 0000 0000 0000 0000 0000 0000 1000 0000 0000 0000 0000 0000 0000 0000 1001 0000 0000 0000 0000 0000 0000 0000 1010 0000 0000 0000 0000 0000 0000 0000 1011 • LOAD R1, [0x…12] accède au mot de 4 octets dont les adresses sont : – – – – 0000 0000 0000 0000 0000 0000 0001 0010 0000 0000 0000 0000 0000 0000 0001 0011 0000 0000 0000 0000 0000 0000 0001 0100 0000 0000 0000 0000 0000 0000 0001 0101 • Les accès mémoire dont les 2 bits d’adresse de poids faible ne sont pas nuls (non multiples de 4) sont dit « out of alignment » •26/11/07 Dans le processeur un flag dans le registre d’état est 15 présent pour détecter ce type d’exception Illustration Conséquence : • Lorsqu’on dit incrémenter le PC, L’opération n’est pas PC+1 Mais PC+4! 26/11/07 16 2. Les registres de l’architecture 26/11/07 17 Les registres • Les registres de la couche microarchitecture ne sont pas tous visibles depuis la couche ISA • On peut de plus les classer en 2 catégories : – Registres spécialisés • PC, RI… • Accèssible en mode système (kernel) : contrôle des caches, des unités d’E/S, SR – Registres généraux (R0, R1, R2…) 26/11/07 18 Jeu d’instruction du Pentium II • Compatible depuis le 8086 (1978)! • Depuis le 80386 le premier processeur 32 bits, on appelle cette architecture IA-32 • 3 modes opératoires – mode réel : les nouveautés sont ignorées, le pentium II est un 8088! – mode virtuel : exemple d’une commande DOS sous windows – Mode protégé : mode pentium II 26/11/07 19 Evolution chez Intel • 8086 (1978) – 16bits, 1Mo, • 80286 (1982) – 16 bits, mémoire étentue • 80386 (1985) – 32 bits • 80486 (1989) – 32 bits, cache de 8K • Pentium (1993) – Double pipeline • Pentium pro (1995) – Cache mémoire à 2 niveaux 8Ko + 256Ko • Pentium II + Celeron + Xeon – MMX • Pentium III 26/11/07 • Pentium IV (1997) Compatibilité (1999) ascendante 20 (2000) Registres du processeur 8080 bits 8080 0 1 2 3 4 A B C D Bus de données 8bits H L 26/11/07 Bus d’adresse 8bits 255 21 Registres du processeur 8086 – 16 bits 8086 AX AH AL BX BH BL CX CH CL DX DH DL 0 1 2 3 4 Bus de données 16bits SI DI 26/11/07 SP BP Bus d’adresse 16bits 65,535 22 Principaux registres du Pentium-II – 32bits 0 1 2 3 4 Bus de données 16bits Bus d’adresse 20bits 26/11/07 4Go 23 Exemple d’instructions de l’IA32 Langage assembleur : • MOV reg, reg • MOV reg, imm • ADD reg, reg 26/11/07 Langage machine (8 octets) : • 0x 89 (11SS SDDD)2 • 1011 11DDD+4octets pour imm • 0x 01 (11SS SDDD)2 • • • • • Codes des registres S et D : EAX 000 ESP 100 ECX 001 EBP 101 EDX 010 ESI 110 EBX 011 EDI 111 24 Registres généraux de l’Ultrasparc II 26/11/07 25 3. Types de données 26/11/07 26 Types de données • Nous avons déjà vu que la représentation binaire était à la base de la représentation de différents types de données : – Données numériques : entiers (signés ou non) ou réels – Données non-numériques : ASCII (7bits), UNICODE (16 bits) – Valeurs booléennes – Adresses (entiers) • Il existe des instructions dédiées à chacun de ces types de données 26/11/07 27 Données numériques manipulées par le Pentium II Données numériques manipulées par l’UltraSparc II 26/11/07 28 4. Format des instructions 26/11/07 29 a. Formats des instructions • Une instruction est découpée en champs – Un code opération (opcode) – Des informations complémentaires sur l’emplacement des données sources et de la destination • La technique associée à la localisation des opérandes d’une instruction s’appelle l’adressage ou le mode d’adressage (cours de L3). 26/11/07 30 Format général d’une instruction • Une instruction désigne un ordre (minimal) donné au processeur. • CodeOp sur m bits = addition, multiplication, rangement… • 2m instructions = le jeu d’instruction du processeur Code opération 26/11/07 Désignation des opérandes 31 Format de chaque champ de l’instruction • b. Format du Code opération • c. Nombre d’opérande • d. Désignation des opérandes 26/11/07 32 b. Différents types d’instructions • De déplacement de données entre mémoire et registres : LOAD et STORE • De recopie de donnée entre registres : MOVE • De traitement de données : ADD, AND, CMP… • D’entrées/sorties • D’organisation du flux d’exécution : branchement ou saut conditionnel (BEQ) ou non (JMP) • Les appels de sous programmes (CALL, RET) • Les instructions système (HALT, IRQ) 26/11/07 33 Les indicateurs de conditions de l’ALU • N : qui est mis à 1 si le résultat est négatif • Z : qui est mis à 1 si le résultat est égal à 0 • V : qui est mis à 1 si le résultat provoque un dépassement de capacité • C : qui est mis à 1 si le résultat provoque une retenue sortant • P : qui est mis à 1 si le résultat présente une parité paire • … 26/11/07 34 c. Plusieurs nombres d’opérandes maximum • Selon le code opération, l’instruction peut admettre 0, 1, 2 ou 3 opérandes. Si l’ordinateur admet au plus : • 0 opérande = • 1 opérande = • 2 opérandes = • 3 opérandes = 26/11/07 35 Plusieurs nombres d’opérandes maximum • Selon le code opération, l’instruction peut admettre 0, 1, 2 ou 3 opérandes. Si l’ordinateur admet au plus : • 0 opérande = instruction à pile / appel Système • 1 opérande = architecture à accumulateur (1 entrée) • 2 opérandes = architecture à 2 bus (1 entrée/1 sortie) 26/11/07 36 • 3 opérandes = architecture à 3 bus (2 entrées/1 Architecture à Pile Pile B A 8 8 6 Commandes 26/11/07 ALU N Z 8 O 37 Architecture à accumulateur Mémoire B A 8 8 6 Commandes 26/11/07 ALU 8 O N Z Accumulateur 38 Architecture à chargement / rangement Banc de registres B A 8 8 6 Commandes 26/11/07 ALU N Z 8 O 39 d. Désignation de l’opérande (du résultat) • Architecture à 1 bus • La désignation dépend de l’endroit au se trouve la donnée – Dans l’instruction elle-même (RI) : immédiat – Dans un registre de travail – Dans la mémoire • Définition : Immédiat – Un immédiat est une valeur numérique donnée directement en décimale ou hexadécimale contrairement à un adressage de positionnement de la valeur. – La valeur est directement donnée dans l’instruction – Elle est donc placée (indirectement ou directement) par 26/11/07 le programmeur 40 Exemple Code opération Adressage immédiat Opérande = valeur imd Ex = 3 Opérande = 3 Code opération Adressage registre Opérande = No registre Ex = 3 Opérande = Contenu du registre 3 = 125 Code opération Adressage direct Opérande = Adr mémoire Ex = 3 Opérande = Contenu de la case mémoire 3 = 0x34 Code opération Adressage indirect 26/11/07 Opérande = Adr mémoire Ex = 3 Opérande = Contenu de41 la case mémoire 34 = 7 Suite de l’exemple, extrapolation pour 3 bus Adressage direct R3 Cste = 3 125 Adressage immédiat Adressage registre 26/11/07 $003 0x34 Adressage indirect $034 0x07 42 5. Un exemple d’architecture de jeu d’instruction : le MIPS R3000 26/11/07 43 Rappel : Chemin de donnée Data In Data Out RES Y PC RI R(i) ADR DT … X Adresse OPX 26/11/07 OPY ALU RES ADRW EXCP 44 Jeu d’instruction de l’assembleur MIPS 1. Instructions utilisant des données immédiates 2. Instructions registres/registres 3. Adressage mémoire en mode indirect (le seul supporté) 4. Branchements conditionnels et sauts 5. Instructions privilégiées et systèmes 26/11/07 45 Données immédiates • cf. datasheet 26/11/07 46 Registres/registres • cf. datasheet 26/11/07 47 Adressage mémoire indirect • cf. datasheet 26/11/07 48 branchements • cf. datasheet 26/11/07 49 système • Cf. datasheet 26/11/07 50 8 types de manipulation d’opérandes 1. 2. 3. 4. Opération sans opérande : op Opération avec un registre : op $r1 Opération avec deux registres : op $r1 $r2 Opération avec trois registres : op $r1 $r2 $r3 6. Opération avec un imméndiat : op imm 7. Opération avec un registre et un imdt : op $r imm 8. Opération avec 2 registres et un imdt : op $r1 $r2 imm 10.Opération d’adressage mémoire : op $r1 m($r2) 26/11/07 51 De l’instruction assembleur à l’instruction machine • L’Assembleur traduit le code ascii assembleur en code binaire. • Ce code binaire correspond à une instruction de jeu d’instruction machine du processeur visé • Cette instruction machine est décodée – Pour déterminer le format de l’instruction – Pour déterminer la séquence de microcommandes nécessaire à l’exécution de l’instruction 26/11/07 52 Résumé 26/11/07 53 Bilan Nature de l’opération Code assembleur Code binaire Registre instruction (avec données) Chargement d’un registre LOAD 0x00 0x03 E7 6A 90 Rangement d’un registre Addition de registres STORE 0x01 … Add 0x02 Addition registre/Imd Addi 0x03 Branchement conditionnel BEQ 0xFE Branchement inconditionnel 26/11/07 JMP 0xFF … 54 int main (){ int a = 3; … return a = b+c; } main : load a, R1 add R1, R2, R3 … $0F47 0x03D810A2 26/11/07 Frontière logiciel/matériel 55 Couche des langages d’application Niveau 5 Traduction (compilateur) Couche du langage d’assemblage Niveau 4 Traduction (assembleur) Couche du système d’exploitation Niveau 3 Interprétation partielle (OS) Niveau 2 Couche architecture du jeu d’instruction (ISA) Interprétation (microprogramme) ou exécution directe (cablé) Niveau 1 Couche microarchitecture Matériel 26/11/07 Niveau 0 Couche logique numérique 56 Parcours ‘architecture’ Architectures multimédia M2 • Circuits reconfigurables Architecture avancée M1-S2 • Les classes d’architecture Informatique embarquée La programmation en assembleur L’exécution des programmes 26/11/07 • Conception des SoC • Les DSP M1-S1 L3 • Architectures embarquée • Couche OS - RTOS • Couche ISA • Couche assemblage • Como – Systèmes E/S L2 • Couche physique • Couche micro-architecture 57 • Couche ISA Quelques questions à se poser… • Les notions que vous • Cycle d’exécution machine devez être capable de de définir : – – – – – – – 26/11/07 Loi de Moore PLA (RLP) Chemin de donnée Registre d’instruction PC (CO) Micro-instruction instruction • • • • Bus Processeur Hiérarchie mémoire Alignement mémoire • Langage machine – Jeu d’instruction • Langage d’assemblage 58 A voir en TD 26/11/07 59