Download - Arch_2lmd_Pr- és 3 (1)
5/16/2018 Arch_2lmd_Pr- és 3 (1) - slidepdf.com
http://slidepdf.com/reader/full/arch2lmdpr-es-3-1 1/51
Architecture desrchitecture desordinateursrdinateurs
Chapitre 2
Architecture externe de
MICROPROCESSEUR
32 BITS MIPS r3000Dr R. BOUDOUR
5/16/2018 Arch_2lmd_Pr- és 3 (1) - slidepdf.com
http://slidepdf.com/reader/full/arch2lmdpr-es-3-1 2/51
PlanPlan
Architecture externe du microprocesseur
32 bits MIPS R3000 : Les registres visibles du logiciel.
L'adressage et la structuration de l'espaceadressable.
Le langage d'assemblage du processeur MIPSR3000
24/10/2011 07:09:06
2
5/16/2018 Arch_2lmd_Pr- és 3 (1) - slidepdf.com
http://slidepdf.com/reader/full/arch2lmdpr-es-3-1 3/51
IntroductionIntroduction
24/10/2011 07:09:06
3
Les composants d’un ordinateurLes composants d’un ordinateur
5/16/2018 Arch_2lmd_Pr- és 3 (1) - slidepdf.com
http://slidepdf.com/reader/full/arch2lmdpr-es-3-1 4/51
Qui utilise le langage d’assemblage ?Qui utilise le langage d’assemblage ?
24/10/2011 07:09:06
4
5/16/2018 Arch_2lmd_Pr- és 3 (1) - slidepdf.com
http://slidepdf.com/reader/full/arch2lmdpr-es-3-1 5/51
Quand utiliser le langage d’assemblage ?Quand utiliser le langage d’assemblage ?
24/10/2011 07:09:06
5
5/16/2018 Arch_2lmd_Pr- és 3 (1) - slidepdf.com
http://slidepdf.com/reader/full/arch2lmdpr-es-3-1 6/51
Modes d’adressage du MIPSModes d’adressage du MIPS
24/10/2011 07:09:06
6
Les modes d’adressage MIPS dans les différents modèlesLes modes d’adressage MIPS dans les différents modèles
5/16/2018 Arch_2lmd_Pr- és 3 (1) - slidepdf.com
http://slidepdf.com/reader/full/arch2lmdpr-es-3-1 7/51
Format d’instructions MIPSFormat d’instructions MIPS
24/10/2011 07:09:06
7
5/16/2018 Arch_2lmd_Pr- és 3 (1) - slidepdf.com
http://slidepdf.com/reader/full/arch2lmdpr-es-3-1 8/51
Format d’instructions I (Format d’instructions I (11))
24/10/2011 07:09:06
8
5/16/2018 Arch_2lmd_Pr- és 3 (1) - slidepdf.com
http://slidepdf.com/reader/full/arch2lmdpr-es-3-1 9/51
24/10/2011 07:09:06
9
Format d’instructions I (Format d’instructions I (22))
5/16/2018 Arch_2lmd_Pr- és 3 (1) - slidepdf.com
http://slidepdf.com/reader/full/arch2lmdpr-es-3-1 10/51
24/10/2011 07:09:06
10
Format d’instructions JFormat d’instructions J
5/16/2018 Arch_2lmd_Pr- és 3 (1) - slidepdf.com
http://slidepdf.com/reader/full/arch2lmdpr-es-3-1 11/51
Codage des adressesCodage des adresses
24/10/2011 07:09:06
11
5/16/2018 Arch_2lmd_Pr- és 3 (1) - slidepdf.com
http://slidepdf.com/reader/full/arch2lmdpr-es-3-1 12/51
24/10/2011 07:09:06
12
Format d’instructions RFormat d’instructions R
5/16/2018 Arch_2lmd_Pr- és 3 (1) - slidepdf.com
http://slidepdf.com/reader/full/arch2lmdpr-es-3-1 13/51
24/10/2011 07:09:06
13
Format d’instructions RFormat d’instructions R
5/16/2018 Arch_2lmd_Pr- és 3 (1) - slidepdf.com
http://slidepdf.com/reader/full/arch2lmdpr-es-3-1 14/51
IdentificateursIdentificateurs
24/10/2011 07:09:06
14
Remarque : Pour plus de détails sur la syntaxe du langage MIPS , voir documents
5/16/2018 Arch_2lmd_Pr- és 3 (1) - slidepdf.com
http://slidepdf.com/reader/full/arch2lmdpr-es-3-1 15/51
AffectationAffectation
24/10/2011 07:09:06
15
Compiler une affectation utilisant des registres enlangage C
f = (g+h) - (i + j) ;
Les variables f,g,h,i et j peuvent être affectées auxregistres $s0, $s1, $s2, $s3 et $s4 respectivement.
Ajoutons deux registres temporaires $t0 et $t1
Correspondance en langage d’assemblage MIPS
add $t0, $s1, $s2 # registre $t0 contient g+hadd $t1, $s3, $s4 # registre $t1 contient i+jsub $s0, $t0, $t1 # registre $s0 contient le résultat
5/16/2018 Arch_2lmd_Pr- és 3 (1) - slidepdf.com
http://slidepdf.com/reader/full/arch2lmdpr-es-3-1 16/51
AffectationAffectation
24/10/2011 07:09:06
16
Soit un tableau A de 100 motsLes registres $s1 et $s2 sont associés aux variables g et hL’adresse de départ ou l’adresse de base du tableau est dans $s3.
Traduisons g = h + A[8] en langage MIPS;
lw $t0, 8($s3) # registre temporaire $t0 reçoit A[8]add $s1, $s2, $t0 # g = h + A[8]
La constante 8 est appelée déplacement et $s3 un registre de base
5/16/2018 Arch_2lmd_Pr- és 3 (1) - slidepdf.com
http://slidepdf.com/reader/full/arch2lmdpr-es-3-1 17/51
AffectationAffectation
24/10/2011 07:09:06
17
Soit h associé au registre $s2 et l’adresse de base dutableau est attachée au $s3
la traduction en MIPS de : A[12] = h + A[8]
lw $t0, 32($s3) # registre temporaire $t0 reçoit A[8]add $t0, $s2, $t0 # registre temporaire $t0 reçoit h+A[8]sw $t0, 48[$s3] # range dans A[12] h+A[8]
5/16/2018 Arch_2lmd_Pr- és 3 (1) - slidepdf.com
http://slidepdf.com/reader/full/arch2lmdpr-es-3-1 18/51
AffectationAffectation
24/10/2011 07:09:06
18
Soit un exemple de tableau avec variable indicéeg = h+A[i] ;Soit A un tableau de 100 éléments, sa base est $s3 et aux variablesg,h et i, le compilateur a associé les registres $s1, $s2 et $s4
dans l’ordre
Correspondance en langage d’assemblage pour
g = h + A[i]
add $t1, $s4,$s4 # $t1 = 2*iadd $t1, $t1, $t1 # $t1 = 4*iadd $t1,$t1,$s3 # $t1= adresse de A[i] (4*i+$s3)lw $t0,0($t1) # $t0=A[i]add $s1,$s2,$t0 # g=h+A[i]
5/16/2018 Arch_2lmd_Pr- és 3 (1) - slidepdf.com
http://slidepdf.com/reader/full/arch2lmdpr-es-3-1 19/51
Représentation en machineReprésentation en machine
24/10/2011 07:09:06
19
Add $t0,$s1,$s2, sémantique : $t0 = $s1+$s2 sa représentation décimale
0 17 18 8 0 32
Les champs 0 et 32 indiquent une addition le 2ème champ donne le numéro du registre : 17=$s1, opérande source 1 le 3ème champ fournit l’autre registre : 18=$s2, opérande source 2 le 4ème champ indique le numéro du registre destination : 8=$t0 le 5ème champ est inutilisé pour cette instruction, laissé à 0
5/16/2018 Arch_2lmd_Pr- és 3 (1) - slidepdf.com
http://slidepdf.com/reader/full/arch2lmdpr-es-3-1 20/51
24/10/2011 07:09:06
20
Soit à traduire l’affectation écrite en langage C : A[300] = h+A[300]
Nous supposons que : $t1 = A, $s2 = h la traduction en MIPS :
lw $t0,1200($t1) # $t0=A[300]add $t0,$s2,$t0 #$t0= = h + A[300]
sw $t0, 1200($t1) # range h+A[i] dans A[300]op rs rt rd as funct
35 9 8 1200
0 18 8 8 0 32
43 9 8 1200
100011 01001 01000 0000 0100 1011 0000
000000 10010 01000 01000 00000 100000
101011 01001 01000 0000 0100 1011 0000
En décimal
En binaire
Représentation en machineReprésentation en machine
5/16/2018 Arch_2lmd_Pr- és 3 (1) - slidepdf.com
http://slidepdf.com/reader/full/arch2lmdpr-es-3-1 21/51
PseudoPseudo--instruction MOVEinstruction MOVE
24/10/2011 07:09:06
21
5/16/2018 Arch_2lmd_Pr- és 3 (1) - slidepdf.com
http://slidepdf.com/reader/full/arch2lmdpr-es-3-1 22/51
24/10/2011 07:09:06
22
PseudoPseudo--instruction Liinstruction Li
5/16/2018 Arch_2lmd_Pr- és 3 (1) - slidepdf.com
http://slidepdf.com/reader/full/arch2lmdpr-es-3-1 23/51
LectureLecture--Ecriture mémoireEcriture mémoire
24/10/2011 07:09:06
23
5/16/2018 Arch_2lmd_Pr- és 3 (1) - slidepdf.com
http://slidepdf.com/reader/full/arch2lmdpr-es-3-1 24/51
24/10/2011 07:09:06
24
Pour résumer, dans une architecture de machine de typeload/store, on n'a pas la possibilité a priori de faire : des transferts entre registres ou de mémoire à mémoire.
Ainsi on relève dans le jeu d'instruction du R3000, concernantles instructions de chargement que l'on ne peut que CHARGERune adresse ou le contenu d'une adresse dans un registre(instruction l? Rdest, address) ;
Concernant les instructions de rangement en mémoire On ne peut que ranger en mémoire depuis un registre via une
instruction du type s? Rsrc, address Mais on ne peut ni ranger le contenu d'un registre dans un
autre registre Ni d'une adresse mémoire dans une adresse mémoire.
LectureLecture--Ecriture mémoire (Ecriture mémoire (22))
5/16/2018 Arch_2lmd_Pr- és 3 (1) - slidepdf.com
http://slidepdf.com/reader/full/arch2lmdpr-es-3-1 25/51
Branchements conditionnels (Branchements conditionnels (11))
24/10/2011 07:09:06
25
5/16/2018 Arch_2lmd_Pr- és 3 (1) - slidepdf.com
http://slidepdf.com/reader/full/arch2lmdpr-es-3-1 26/51
24/10/2011 07:09:06
26
Branchements conditionnels (Branchements conditionnels (22))
5/16/2018 Arch_2lmd_Pr- és 3 (1) - slidepdf.com
http://slidepdf.com/reader/full/arch2lmdpr-es-3-1 27/51
24/10/2011 07:09:06
27
Branchements inconditionnels (Branchements inconditionnels (33))
5/16/2018 Arch_2lmd_Pr- és 3 (1) - slidepdf.com
http://slidepdf.com/reader/full/arch2lmdpr-es-3-1 28/51
24/10/2011 07:09:06
28
Branchements inconditionnels (Branchements inconditionnels (11))
5/16/2018 Arch_2lmd_Pr- és 3 (1) - slidepdf.com
http://slidepdf.com/reader/full/arch2lmdpr-es-3-1 29/51
24/10/2011 07:09:06
29
Branchements inconditionnels (Branchements inconditionnels (22))
5/16/2018 Arch_2lmd_Pr- és 3 (1) - slidepdf.com
http://slidepdf.com/reader/full/arch2lmdpr-es-3-1 30/51
Appels de sousAppels de sous--programmesprogrammes
24/10/2011 07:09:06
30
5/16/2018 Arch_2lmd_Pr- és 3 (1) - slidepdf.com
http://slidepdf.com/reader/full/arch2lmdpr-es-3-1 31/51
24/10/2011 07:09:06
31
Appels de sousAppels de sous--programmesprogrammes
5/16/2018 Arch_2lmd_Pr- és 3 (1) - slidepdf.com
http://slidepdf.com/reader/full/arch2lmdpr-es-3-1 32/51
24/10/2011 07:09:06
32
Appels de sousAppels de sous--programmes : Pileprogrammes : Pile
5/16/2018 Arch_2lmd_Pr- és 3 (1) - slidepdf.com
http://slidepdf.com/reader/full/arch2lmdpr-es-3-1 33/51
24/10/2011 07:09:06
33
Appels de sousAppels de sous--programmes :programmes :
Politique de gestion de pilePolitique de gestion de pile
5/16/2018 Arch_2lmd_Pr- és 3 (1) - slidepdf.com
http://slidepdf.com/reader/full/arch2lmdpr-es-3-1 34/51
24/10/2011 07:09:06
34
Appels de sousAppels de sous--programmes : Exempleprogrammes : Exemple
5/16/2018 Arch_2lmd_Pr- és 3 (1) - slidepdf.com
http://slidepdf.com/reader/full/arch2lmdpr-es-3-1 35/51
24/10/2011 07:09:06
35
Appels de sousAppels de sous--programmes : Exempleprogrammes : Exemple
5/16/2018 Arch_2lmd_Pr- és 3 (1) - slidepdf.com
http://slidepdf.com/reader/full/arch2lmdpr-es-3-1 36/51
Autres exemplesAutres exemples
24/10/2011 07:09:06
36
Langage CLangage C langage d’assemblage MIPSlangage d’assemblage MIPS
Instruction d’affectation simpleInstruction d’affectation simple
5/16/2018 Arch_2lmd_Pr- és 3 (1) - slidepdf.com
http://slidepdf.com/reader/full/arch2lmdpr-es-3-1 37/51
24/10/2011 07:09:06
37
Langage CLangage C langage d’assemblage MIPSlangage d’assemblage MIPS
Instruction d’affectation complexeInstruction d’affectation complexe
Autres exemplesAutres exemples
5/16/2018 Arch_2lmd_Pr- és 3 (1) - slidepdf.com
http://slidepdf.com/reader/full/arch2lmdpr-es-3-1 38/51
24/10/2011 07:09:06
38
Instruction conditionnelleInstruction conditionnelle
Langage CLangage C langage d’assemblage MIPSlangage d’assemblage MIPS
Autres exemplesAutres exemples
5/16/2018 Arch_2lmd_Pr- és 3 (1) - slidepdf.com
http://slidepdf.com/reader/full/arch2lmdpr-es-3-1 39/51
24/10/2011 07:09:06
39
Instruction d’itération ou boucleInstruction d’itération ou boucle Langage CLangage C langage d’assemblage MIPSlangage d’assemblage MIPS
Autres exemplesAutres exemples
5/16/2018 Arch_2lmd_Pr- és 3 (1) - slidepdf.com
http://slidepdf.com/reader/full/arch2lmdpr-es-3-1 40/51
24/10/2011 07:09:06
40
Langage CLangage C langage d’assemblage MIPSlangage d’assemblage MIPS
Instruction d’itération ou boucleInstruction d’itération ou boucle
Autres exemplesAutres exemples
5/16/2018 Arch_2lmd_Pr- és 3 (1) - slidepdf.com
http://slidepdf.com/reader/full/arch2lmdpr-es-3-1 41/51
24/10/2011 07:09:06
41
Autres exemplesAutres exemples
5/16/2018 Arch_2lmd_Pr- és 3 (1) - slidepdf.com
http://slidepdf.com/reader/full/arch2lmdpr-es-3-1 42/51
24/10/2011 07:09:06
42
Affichage d’une chaine de caractèresAffichage d’une chaine de caractères
Quelques programmes simplesQuelques programmes simples
5/16/2018 Arch_2lmd_Pr- és 3 (1) - slidepdf.com
http://slidepdf.com/reader/full/arch2lmdpr-es-3-1 43/51
24/10/2011 07:09:06
43
Quelques programmes simplesQuelques programmes simples
5/16/2018 Arch_2lmd_Pr- és 3 (1) - slidepdf.com
http://slidepdf.com/reader/full/arch2lmdpr-es-3-1 44/51
Annexe langage d’assemblage MIPSAnnexe langage d’assemblage MIPS
24/10/2011 07:09:06
44
Classes d’instructionsClasses d’instructions
5/16/2018 Arch_2lmd_Pr- és 3 (1) - slidepdf.com
http://slidepdf.com/reader/full/arch2lmdpr-es-3-1 45/51
24/10/2011 07:09:06
45
Arithmétiques et LogiquesArithmétiques et Logiques
5/16/2018 Arch_2lmd_Pr- és 3 (1) - slidepdf.com
http://slidepdf.com/reader/full/arch2lmdpr-es-3-1 46/51
BranchementsBranchements
24/10/2011 07:09:06
46
5/16/2018 Arch_2lmd_Pr- és 3 (1) - slidepdf.com
http://slidepdf.com/reader/full/arch2lmdpr-es-3-1 47/51
Accès mémoireAccès mémoire
24/10/2011 07:09:06
47
5/16/2018 Arch_2lmd_Pr- és 3 (1) - slidepdf.com
http://slidepdf.com/reader/full/arch2lmdpr-es-3-1 48/51
Instructions systèmeInstructions système
24/10/2011 07:09:06
48
5/16/2018 Arch_2lmd_Pr- és 3 (1) - slidepdf.com
http://slidepdf.com/reader/full/arch2lmdpr-es-3-1 49/51
CodOpCodOp spécialspécial
24/10/2011 07:09:06
49
Pour le format R, le codeOp peut être nul et c’est le champ func (6bits depoids faible ) qui détermine l’opération
5/16/2018 Arch_2lmd_Pr- és 3 (1) - slidepdf.com
http://slidepdf.com/reader/full/arch2lmdpr-es-3-1 50/51
Code opérationCode opération
24/10/2011 07:09:06
50
Il détermine quelle opération effectuer (6 bits de poids forts)
5/16/2018 Arch_2lmd_Pr- és 3 (1) - slidepdf.com
http://slidepdf.com/reader/full/arch2lmdpr-es-3-1 51/51
Services systèmeServices système
51