Arch_2lmd_Pr-  és 3 (1)

Post on 18-Jul-2015

36 views 0 download

Transcript of 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