Jeu d’Instructions Introduction (1) • A et B étant des entiers, on veut mettre dans C la différence entre A et B. • Algorithme: – Lire A, lire B – Calculer A-B – Ecrire le résultat dans C Charles André - Université Nice-Sophia Antipolis Représenter/Mémoriser Vous avez déjà étudié les représentations binaires 1972 Charles André - Université Nice-Sophia Antipolis Calculer • • • • Doigts Boulier Calculette Unité Arithmétique il manque la notion de programme enregistré Charles André - Université Nice-Sophia Antipolis Introduction (2) • La machine vue par l’utilisateur (programmeur) Algorithme Programme optimisation Matériel Tests OK / KO • Langage de haut-niveau + compilateur • Langage assembleur Charles André - Université Nice-Sophia Antipolis Instruction • Informations associées à une instruction : 1. 2. 3. 4. Opération à effectuer Opérandes données (entrée) Opérandes résultats (sortie) Continuation (instruction suivante) Problème : Certaines info implicites ou inexistantes Charles André - Université Nice-Sophia Antipolis Cycle Instruction Accès mémoire ou E/S Opérations internes à l’UC Instruction fetch Calcul adresse de l’ instruction Operand fetch décodage de l’ instruction instruction suivante Calcul adresse d’ opérande Operand store Opération sur données Calcul adresse d’ opérande vecteur ou chaîne Charles André - Université Nice-Sophia Antipolis Classification des J.I • Où sont les opérandes ? 1. Mémoire • • • Principale Virtuelle Pile 2. UC • • Registres généraux Accumulateur 3. Dispositif d’E/S Charles André - Université Nice-Sophia Antipolis Machine à Pile // C ← A - B [1] [2] [3] [4] A PUSH PUSH SUB POP A B C B PUSH A PUSH B v(A) C v(B) v(A) SUB POP C v(A)-v(B) Charles André - Université Nice-Sophia Antipolis Machine à Accumulateur v(A) Accumulateur A [1] UAL v(A)-v(B) Op B [1] [2] [3] [2] LOAD A SUB B STORE C v(A)-v(B) C [3] Charles André - Université Nice-Sophia Antipolis Machine à registres généraux Registre-mémoire [1] LOAD R1,A [2] SUB R1,B [3] STORE C,R1 [1] A: v(A) B: v(B) v(A) R1 C: Charles André - Université Nice-Sophia Antipolis Machine à registres généraux Registre-mémoire [1] LOAD R1,A [2] SUB R1,B [3] STORE C,R1 A: v(A) B: v(B) [2] v(A)-v(B) R1 C: Charles André - Université Nice-Sophia Antipolis Machine à registres généraux Registre-mémoire [1] LOAD R1,A [2] SUB R1,B [3] STORE C,R1 A: v(A) B: v(B) v(A)-v(B) R1 C: v(A)-v(B) [3] Charles André - Université Nice-Sophia Antipolis Machine à registres généraux Registre-registre [1] LOAD R1,A [2] LOAD R2,B [3] SUB R3,R1,R2 [4] STORE C,R3 A: v(A) R1 B: v(B) R2 C: R3 Charles André - Université Nice-Sophia Antipolis Machine à registres généraux Registre-registre [1] LOAD R1,A [2] LOAD R2,B [3] SUB R3,R1,R2 [4] STORE C,R3 [1] A: v(A) B: v(B) C: v(A) R1 R2 R3 Charles André - Université Nice-Sophia Antipolis Machine à registres généraux Registre-registre [1] LOAD R1,A [2] LOAD R2,B [3] SUB R3,R1,R2 [4] STORE C,R3 A: v(A) B: v(B) C: [2] v(A) R1 v(B) R2 R3 Charles André - Université Nice-Sophia Antipolis Machine à registres généraux Registre-registre [1] LOAD R1,A [2] LOAD R2,B [3] SUB R3,R1,R2 [4] STORE C,R3 [3] A: v(A) v(A) R1 B: v(B) v(B) R2 v(A)-v(B) R3 C: Charles André - Université Nice-Sophia Antipolis Machine à registres généraux Registre-registre [1] LOAD R1,A [2] LOAD R2,B [3] SUB R3,R1,R2 [4] STORE C,R3 A: v(A) v(A) R1 B: v(B) v(B) R2 v(A)-v(B) R3 C: v(A)-v(B) [4] Charles André - Université Nice-Sophia Antipolis Machines à registres généraux Nb max d’ opérandes Nb d’adr. mémoire Exemples 3 0 2 1 SPARC, MIPS, PowerPC Intel86, MC68k 2/3 2/3 Vax Charles André - Université Nice-Sophia Antipolis Types d’instructions • Traitement de données (Data Processing) – Arithmétique – Logique • Transfert de données (Data transfer) – Mémoire / registre – Registre / registre • Contrôle (Control) – Tests, branchements, … • Transfert E/S (I/O Transfer) Charles André - Université Nice-Sophia Antipolis Types d’opérandes A ce bas niveau : nb réduit de types • Adresses (voir plus loin) • Scalaires – Entiers – « réels » virgule fixe – « réels » virgule flottante • Caractères – ASCII, unicode, … • Tableaux de bits – Words, longs, … Charles André - Université Nice-Sophia Antipolis Adressage mémoire • Deux problèmes: – Comment interpréter les adresses mémoire ? – Comment les spécifier ? Charles André - Université Nice-Sophia Antipolis Interprétation Quel est l’objet sélectionné en fonction d’une adresse et d’une longueur ? • Endianness (Big-endian / little-endian) – Big-Endian: MSB à la plus petite adresse – Little-endian: LSB à la plus petite adresse • Alignement : l’accès à un objet de taille s octets à l’adresse A est aligné si A mod s = 0 • Ordre des bits ( bit 0 à droite ou à gauche) Charles André - Université Nice-Sophia Antipolis Exemple Little-Endian Charles André - Université Nice-Sophia Antipolis Modes d’adressage Compromis entre – Souplesse du mode d’adressage – Complexité de calcul de l’adresse • « Adressage » immédiat ( # valeur ) – L’instruction contient la valeur • Adressage avec déplacement ( d(R) ) – L’instruction contient une référence à un registre (R) – Un déplacement (d) EA = contenu( R ) + d (EA=Effective Address) Charles André - Université Nice-Sophia Antipolis Autres modes de base • Adressage absolu : EA = d • Adressage indirect : ( R ) EA = contenu(R) • Adressage registre : R • Exercice : expliquer les modes d’adressage du Pentium : EA=contenu(Base)+(contenu(Index)*Facteur)+Déplacement Charles André - Université Nice-Sophia Antipolis Type des opérations • Architectures CISC (Complex Instruction Set Computer) • Architectures RISC (Restricted Instruction Set Computer) • Grandes catégories : – – – – – – – Transfert de données Opérations arithmétiques Opérations logiques Conversions Entrées/Sorties Commande système Transfert de contrôle Charles André - Université Nice-Sophia Antipolis Types des opérations (2) • Pour préciser la taille des opérandes (ex MC68k: .B, .W, .L; Pentium: byte ptr, word ptr, dword ptr) • Commande système : instructions privilégiées • Transfert de contrôle : – – – – Branchements conditionnels (branch) Sauts (skip) Appels de procédures (subroutine calls) Retours de procédures (subroutine return) Charles André - Université Nice-Sophia Antipolis Taille des opérandes Pentium Charles André - Université Nice-Sophia Antipolis Codage • RISC : très peu de formats ⇒ facile à décoder • CISC : codage compact et formats très variables ⇒ complexes à décoder • Format fixe • Format variable • Format hybride Charles André - Université Nice-Sophia Antipolis Format Instruction Pentium Charles André - Université Nice-Sophia Antipolis Format Instruction MIPS 32 bits pour toute instruction Reg source Reg Dest 6 5 5 5 5 6 op rs rt rd shamt funct add rd, rs, rt = 0 rs rt rd 0 0x20 operation R-type Reg src 2 function Shift amount 6 5 5 16 op rs rt funct Charles André - Université Nice-Sophia Antipolis