Académique Documents
Professionnel Documents
Culture Documents
d’instructions
Instruction Set Architecture - ISA
M41
2023-2024
ENSA Marrakech
1
Rappel: organisation d’un ordinateur
datapath +
control =
processor
(CPU)
2
Comment les ordinateurs fonctionnent?
Chaque couche fait abstraction de tout ce qui est en dessous.
3
Architecture de jeu d’instruction - ISA
ISA spécifie
• L'organisation de la mémoire
Espace d'adressage
Adressabilité
• L'ensemble des registres
• Le jeu d'instructions
Opcodes
Types de données
Longueur et format des instructions
4
ISA de MIPS
• Catégorie d’instructions
– Load/Store
– Computational
– Jump and Branch
– Floating Point (co-processeur)
R0 - R31
PC
HI
LO
3 Instruction Formats, 32 bits wide
R OP rs rt rd sa funct
I OP rs rt immediate
J OP jump target
5
Niveaux de représentation
temp = v[k];
High Level Language
Program v[k] = v[k+1];
v[k+1] = temp;
Compiler
lw $15, 0($2)
Assembly Language lw $16, 4($2)
Program sw $16, 0($2)
sw $15, 4($2)
Assembler
Control Signal
Specification
°
°
6
Cycles d’exécution
Instruction
Fetch
Obtenir l’instruction de la mémoire du programme
Instruction
Décoder l’instruction et déterminer les actions requises
Decode
Result
Stocker le résultat pour une utilisation ultérieure
Store
Next
Instruction
Déterminer l'instruction suivante
7
Les instructions arithmétiques MIPS
Chacune spécifie 3 opérandes qui sont dans les registres ($t0, $s1, $s2)
destination source1 op source2
0 17 18 8 0 0x22
8
Champs d’instructions MIPS
R op rs rt rd shamt funct
9
Les opérandes des registres
10
Fichier registre MIPS
32
Contient 32 registres à 32 bits Register File locations
32 bits
32 src1
2 ports pour lecture src1 addr
5 data
1 port pour écriture 5
src2 addr
dst addr 5
src2
32 32 data
write data
write control
11
Exemple d’utilisation des opérandes
Code C:
f = (g + h) - (i + j);
On considère que g,h,i,j sont déjà dans $s1,$S2, $S3 et
dans $s4 respectivement, et le résultat f va être
déposé dans $s0
Code compilé en MIPS:
add $t0, $s1, $s2
add $t1, $s3, $s4
sub $s0, $t0, $t1
12
Les registres en MIPS
13
Opérandes immédiats
14
Constantes larges
Si on veut transférer une constante de 32 bit (qui dépasse
16 bits) dans un registre; on le fait en deux étapes: Soit la
constante large: 0xAAAABBBB
Utiliser l’instruction "load upper immediate"
lui $t0, 0xAAAA
15
Opérations de décalage
0 16 10 4 0x00
16
Opérations logiques
Il existe un certain nombre d'opérations logiques sur les bits
and $t0, $t1, $t2 #$t0 = $t1 & $t2
or $t0, $t1, $t2 #$t0 = $t1 | $t2
nor $t0, $t1, $t2 #$t0 = not($t1 | $t2)
17
Instructions d'accès à la mémoire MIPS
18
Exemple de load et store
lw $t0, 4($t1)
sw $t0, 8($t1)
19
Instruction lw en langage machine
Load(I):
lw $t0, 24($s3)
35 19 8 2410
Memory
2410 + $s3 = 0xf f f f f f f f
0x120040ac
0x0000000c
0x00000008
0x00000004
0x00000000
data word address (hex)
20
Organisation de la mémoire en MIPS
La mémoire MIPS est adressable par byte, ce qui signifie que chaque adresse mémoire
fait référence à une quantité de 8 bits de données.
L'architecture MIPS peut avoir jusqu'à 32 lignes d'adresse. Il en résulte une RAM 232 x 8,
ce qui équivaut à 4 Gbytes de mémoire.
21
Big Endian vs Little Endian
Big Endian: le byte le plus à gauche correspond à l'adresse du mot (ex. IBM
AIX, SPARC, MIPS, etc.)
Little Endian: le byte le plus à droite est l'adresse du mot (ex: x86 et AMD64
/ x86-64 series)
22
Exemple d’opération impliquant la mémoire
Code C:
g = h + A[8];
g dans $s1, h dans $s2, adresse de base de A dans $s3
Code MIPS compilé:
l’indice 8 correspond à un offset de 32 bytes (4 bytes par mot)
23
Un autre exemple
Code c:
A[12] = h + A[8];
h dans $s2, adresse de base de A dans $s3
Code MIPS compilé:
24
chargement et stockage des Bytes
25
Les opérations des sauts
j Label1
saut inconditionnel à l'instruction Label1
26
Compilation de l’instruction If
Code C:
if (i==j) f = g+h;
else f = g-h;
f, g, h, i, j … dans $s0, $s1, $s2, $s3, $s4…
Code compilé (manuellement) en MIPS :
bne $s3, $s4, Else
add $s0, $s1, $s2
j Exit
Else: sub $s0, $s1, $s2
Exit: …
27
Spécification des destinations du saut conditionnel
Utilisation du registre PC pour calculer l’adresse du destination
du saut
28
Instruction jump
L’instruction j correspond à un saut inconditionnel:
29
Exemple
j Loop 80020 2
Exit: … 80024
30
Exemple
Exit: … 80024
31
.. Et si le saut est encore plus loin
32
Résumé du mode d’adressage
33
L’organisation du MIPS vue jusqu’à maintenant
Processor
Memory
Register File
1…1100
src1 addr src1
5 32 data
src2 addr 32
5 registers
dst addr ($zero - $ra) read/write
5 src2
write data data addr
32 32 230
32 words
32 bits
branch offset
32 Add
read data
32 PC 32 Add 32 32
32
4 write data 0…1100
Fetch 32
PC = PC+4 32 0…1000
4 5 6 7 0…0100
32 ALU 0 1 2 3
Exec Decode 0…0000
32
32 bits word address
32
(binary)
byte address
(big Endian)
34
Compilation des instructions d’une boucle
Code C:
while (save[i] == k) i +=
1;
i dans $s3, k dans $s5, adresse
de save dans $s6
Code compilé (manuellement) en
MIPS :
Loop: sll $t1, $s3, 2 add $t1, $zero, $s6
add $t1, $t1, $s6 lw $t0, 0($t1)
lw $t0, 0($t1) j test
bne $t0, $s5, Exit Loop: addi $t1, $t1, 4
addi $s3, $s3, 1 lw $t0, 0($t1)
j Loop Test: beq $t0, $s5, Loop
Exit: …
35
Autres instructions pour les sauts
En plus de beq, bne, il y a autres types de sauts
L’instruction slt (set less then) :
slt $t0, $s0, $s1 # if $s0 < $s1 then
# $t0 = 1 else
# $t0 = 0
Format de l’instruction (format R):
Il y a aussi
slti $t0, $s0, 25 # if $s0 < 25 then $t0=1 ...
sltu $t0, $s0, $s1 # if $s0 < $s1 then $t0=1 ...
sltiu $t0, $s0, 25 # if $s0 < 25 then $t0=1 ...
36
Pseudo-instructions pour les sauts
On peut utiliser slt, beq, bne, et la valeur $zero pour créer
d’autres conditions
less than blt $s1, $s2, Label
37
Instructions pour l’accès aux procédures
Instruction d’appel d’une procédure :
Règles:
39
Exemple de Procédure
Code C: ProcEx:
int ProcEx (int g, int h, addi $sp, $sp, -4
int i,int j)
{ int f; sw $s0, 0($sp)
f = (g + h) - (i + j);
return f;
} add $t0, $a0, $a1
Arguments g, …, j dans add $t1, $a2, $a3
$a0, …, $a3
f dans $s0 sub $s0, $t0, $t1
Résultat dans $v0 add $v0, $s0, $zero
lw $s0, 0(sp)
addi $sp, $sp, 4
jr $ra
40
Métrique de la performance
41
Besoin de métrique de la performance
Perspective d'achat
• étant donné une collection de machines, qui a
La meilleure performance ?
Le moindre coût ?
Le meilleur rapport qualité/prix ?
Perspective de conception
• face aux options de conception, qui a
La meilleure amélioration de la performance ?
Le moindre coût ?
Le meilleur rapport qualité/prix ?
Les deux exigent
• Une métrique pour l'évaluation et pour la comparaison
L’objectif est de comprendre les facteurs de
l'architecture contribuant à la performance globale du
système et l'importance relative de ces facteurs
42
Quelques définitions
43
Métrique de la performance du processeur
Temps d’exécution =
44
CPI
Différents types d'instructions nécessitent différents nombres de
cycles
45
Exemple 1: Comparaison de performance de deux machines
Supposons que nous ayons deux implémentations de la même
architecture de jeu d'instructions (ISA). Pour un programme,
La machine A a un temps de cycle d'horloge de 250 ps et un CPI de 2,0
La machine B a un temps de cycle d'horloge de 500 ps et un CPI de 1,2
Quelle machine est plus rapide pour ce programme, et de combien ?
46
Exemple 2: Calcul du CPI
48
Benchmarks
• Un benchmark est un programme utilisé pour évaluer
la performance. Il existe des suites standards de
benchmark qui permettent de comparer les
performances de différentes machines informatiques.
TPC
EEMBC
Organisation pour benchmark SPEC
...
Fabriquants
49