Jeu d`instruction

Transcription

Jeu d`instruction
Jeu d’instruction
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
int main (){
int a = 3;
…
return a = b+c;
}
main : load a, R1
add R1, R2, R3
…
$0F47
0x03D810A2
Frontière
logiciel/matériel
Plan de partie
1.
2.
3.
4.
Codage des opérations
Critères de classification des ISA
Modes d’adressage
Opérations du jeu d’instructions
I. Codage des
instructions
Rappel

Une instruction est la réunion des différents
signaux de commande du chemin de données du
processeur
I. Codage 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.
1. Format général d’une instruction




Une instruction désigne un ordre (minimal) donné
au processeur.
Au contrôleur de savoir comment répondre à cet
ordre : décodage en commandes
CodeOp sur m bits = addition, multiplication,
rangement…
m
2Code
instructions
d’instruction
du processeur
Désignation
des opérandes
opération = le jeu

a. Désignation de l’opérande
(du résultat)
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
Adressage
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 le
programmeur
b. Trois options de codage
Opération et
Mode
Adresse
Nb d’opérandes Adresse 1 OP1
Opération
Adresse
OP1
OP2
Mode Adresse 
Adresse n OPn
Variable (VAX: entre
1 et 53 octets)
OP3

Opération
Mode
Adresse
Adresse 1 OP1
Opération
Mode
Adresse Mode
Adresse
Adresse 1 OP1 Adresse 2 OP2
Opération
Mode
Adresse
Adresse 1 OP1
Adresse
OP2
Fixe (DLX, MIPS,
PPC, SPARC)
Hybride (IBM 360,
Intel 80x86)

c. Les choix de codage

Le codage des instructions sur n bits dépend





Du nombre d’opérandes par instruction (champs de
l’instruction)
Du mode d’adressage de ces opérandes (k bits)
Du nombre d’instructions (m bits)
Du nombre de registres de l’architecture
Les compromis de l’architecte



Le désir d’avoir autant de registres que possible
L’impact sur la taille moyenne des instructions
La facilité d’avoir des instructions de longueurs égales pour le
décodage
Plan de partie
1.
2.
3.
4.
5.
6.
Codage des opérations
Critères de classification des ISA
Modes d’adressage
Opérations du jeu d’instructions
Registres de l’architecture
Retour sur le codage des instructions
II. Classification des
ISA
II. Classification des ISA

Le critère le plus caractéristique est le type de
stockage interne à l’UC :
Pile
 Accumulateur
 Registres

adressage implicite (0 adresse)
adressage à 1 adresse
uniquement adressage explicite
(2 ou 3 opérandes)
Exemple

Implanter C= A + B selon les 4 types de jeu d’instructions :
Pile
Accumulateur
Toutes les instructions
peuvent accéder à la
mémoire
Registre
(Registremémoire)
Registre
(chargement/rang
ement)
Seules les instructions de
chargement (LOAD) et
de rangement (STORE)
peuvent accéder à la
mémoire.
Exemple

C= A + B
Pile
Accumulateur
LOAD A
Registre
(Registremémoire)
LOAD R1, A
Registre
(chargement/rang
ement)
LOAD R1, A
PUSH A
PUSH B
ADD B
ADD R1, B
LOAD R2, B
ADD
STORE C
STORE C, R1
ADD R3, R1, R2
POP C
STORE C, R3
Architectures correspondantes
Architecture à Pile
Pile
B
A
8
8
6
Commandes
ALU
8
O
N
Z
Architecture à accumulateur
Mémoire
B
A
8
8
6
Commandes
ALU
8
O
N
Z
Accumulateur
Architecture à chargement /
rangement
Banc de registres
B
A
8
8
6
Commandes
ALU
8
O
N
Z
2. Historique



La plupart des machines anciennes utilisaient des
architectures à pile ou à Acc.
Depuis les années 1980, pratiquement toutes ont une
architecture à Chargement/Rangement (GPR).
Deux raisons :




Les registres sont plus rapide que la mémoire
Le compilateur peut utiliser l’architecture plus facilement et
plus efficacement
Réduction du trafic mémoire
Exemple : (A*B) – (C*D) – (E*F)
3. Machines
Chargement/Rangement

Les différences :


L’UAL a 2 ou 3 opérandes
Nombre d’adresses mémoire par instruction UAL (de 0 à 3)
Nombre
d’adresses
mémoire
0
1
2
3
Nombre
max
d’opérandes
3
3
3
3
Exemples
SPARC, MIPS, PowerPC, Alpha
Intel 80x86, Motorola 68000
VAX
VAX
Classification par adressage
Type
Avantages
Inconvénients
Registre-Registre
(0,3)
Codage simple d’instructions
de longueur fixe. Modèle
simple de génération de code.
Les instructions prennent le
même nombre de cycle pour
s’exécuter
Nombre d’instructions
élevées. Certaines
instructions courtes
gaspillent des champs dans
le codage uniforme.
RegistreMémoire (1,2)
Les données peuvent être
obtenues sans un chargement
préalable. Les formats
d’instructions apportent une
grande densité.
Le nombre de cycles par
instruction varie selon la
position de l’opérande.
MémoireMémoire (3,3)
Le plus compact! Ne gaspille
pas de registres pour les
données temporaires
Grande variation de taille
des instructions. Les accès
mémoires créent un goulot
d’étranglement.
4. Résumé sur la classification des
ISA

Quelques critères discriminants :
Nombre max d’opérandes
 Nombre d’adresses mémoire pour les opérations
UAL
 Mode d’adressage des opérandes mémoires
 Format (codage) des instructions
 Implémentation du jeu d’instruction
 Nombre d’instructions
Suite du cours

III. Adressage
mémoire
1. 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),
• Aujourd’hui on appelle généralement mot, un ensemble de 32
bits
a. Hiérarchie mémoire
Capacité
Bandes
Indéfinie
1 Moctet
200 Mo/s
Un seul espace
d’adressage
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
b. protocole de rangement

Big Endian



Motorola 68000, Sparc
Little Endian

Intel, AMD
Les deux modes


0x12 34 56 78
PowerPC
MIPS
0x78 56 34 12
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
à Little
c. 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 !
d. Exemple

LOAD R1, [0x00000008] accède au mot de 4 octets dont les
adresses sont :





LOAD R1, [0x…12] 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
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 »
Dans le processeur un flag dans le registre d’état est présent pour
détecter ce type d’exception
e. Illustration
Conséquence :
• Lorsqu’on dit incrémenter le PC, L’opération n’est pas PC+1
Mais PC+4!
Accès alignés – non-alignés
Objet adressé par Alignés
Non alignés
Octet
0,1,2,3,4,5,6,7
Jamais
Demi-mot
0,2,4,6
1,3,5,7
Mot
0,4
2,3,5,6,7
Double-mot
0
1,2,3,4,5,6,7
2. Adressage mémoire
Les Modes d’adressage
Mode
Registre
Immédiat
Exemple
Add R4, R3
Add R4 #3
Signification Cas d’utilisation
Déplacement
R4 <= R4 +R3
Registres
R4 <= R4 + 3
Constantes, opération ALU,
comparaisons…
Add R4, 100(R1)
R4 <= R4 +
Mem[R1+100]
Variables locales
Indirect par
registre
Indexé
Add R4, (R1)
R4<= R4 + Mem[R1]
pointeurs
Add R4, (R1+R2)
R4 <= R4+
Mem[R1+R2]
Tableaux : R1=base, R2=index
Direct
Add R4, (1001)
R4 <= R4 +
Mem[1001]
Variables statiques
Indirect via
Add R1, @(R3)
mémoire
Auto-incrémenté Add R1, (R2)+
R1<= R1 +
Mem[Mem[R3]]
Adresse de pointeur
R1<=R1+Mem[R2];
R2++
Parcours de tableaux
Auto-décrémenté Add R1, -(R2)
R2--; R1 <= R1 +
Mem[R2]
Idem
Indexé étendu
R1 <= R1+
Mem[100+R2]
spécifique
Add R1, 100(R2)[R3]
Utilisation des modes d’adressage en
mode mémoire.
(Etendu)
Mode immédiat
Pourcentage d’opérations utilisant les immédiats
Influences sur l’ISA :
• Valeurs du champs Imdt :
Taille des instructions
Distributions de valeurs des
immédiats
Influences sur l’ISA :
• Qu’en est-il de la valeur
des adresses utilisées en
mode direct ?
Distribution de déplacements
Résumé

Une machine moderne a surtout besoin d’avoir
un jeu d’instruction
Avec les modes d’adressage : registre, déplacement,
immédiat, et indirect par registre
 Avec une taille d’adresse de 12 à 16 bits
 Avec une taille d’immédiat de 8 à 16 bits

IV. Les opérations du
jeu d’instruction
1. Nombre d’instructions



Un jeu d’instruction simple peut contenir une
centaine d’instruction
Un jeu d’instruction complexe peut contenir
plus d’une centaine d’instructions
Première définition d’un jeu d’instruction
RISC/CISC
a. Catégories d’instructions
Type d’opérateur
Arithmétique
Transferts de données
Contrôle
Système
Flottant
Décimal
Chaîne
Graphique
Exemple
ALU
Chargement/rangement
Branchement, saut, call
Appel OS, gestion mémoire
IEEE 754
Opérations base 10
Comparaison, parcours
Opérations sur pixels,
compression…
b. Les 10 instructions simples
représentent 96% des exécutions
Rang
1
2
3
4
5
6
7
8
9
10
Instructions x86
Chargement
Branchement conditionnel
Comparaison
Rangement
Addition
Et
Soustraction
Transfert reg–reg
Appel (call)
retour
total
Moyenne sur entiers
22%
20%
16%
12%
8%
6%
5%
4%
1%
1%
96%
2. Instructions de contrôle du flux
d’exécution



Représentent + de 40 % des exécutions
Introduction :
Comment se réalise un if cond then op1 else op2 en
langage machine ?





etiqu2 :
endif :
bne cond etiqu2;
op1;
jmp endif;
op2;
…
a. Quatre types de flux de contrôle







Branchements conditionnels (80%)
Sauts (6%)
Appels de procédure (7%)
Retours de procédure (7%)
Dans tous les cas, l’adresse de destination est spécifiée
explicitement dans l’instruction (sauf le retour).
L’adresse est donnée en adressage relatif par rapport au PC
courant (sauf sauts indirects : fonctions virtuelles, biblio
dynamiques : l’adresse n’est pas connue à la compil.).
Code indépendant de sa position mémoire :
code relogeable !
b. Evaluation des conditions

Code condition :


Registre condition


Des bits spéciaux (FLAGS) sont positionnés par les
opérations de l’ALU (pas d’instruction particulière)
Test d’un registre spécial qui contient la valeur
Comparaison et branchement

Les 2 réalisées en 1 instruction
c. 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
…
3. Types des opérandes

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
Données numériques manipulées par le Pentium II
Données numériques manipulées par l’UltraSparc II
Complément à 2
IEEE 754
V. Les registres de
l’architecture
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…
 Accessible en mode système (kernel) : contrôle des caches,
des unités d’E/S, SR


Registres généraux (R0, R1, R2…)
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
Evolution chez Intel

8086


80286





(1989)
(1993)
(1995)
Cache mémoire à 2 niveaux 8Ko + 256Ko
Pentium II + Celeron + Xeon


Double pipeline
Pentium pro

(1985)
32 bits, cache de 8K
Pentium

(1982)
32 bits
80486


16 bits, mémoire étentue
80386


16bits, 1Mo,
(1978)
(1997)
MMX
Pentium III
Pentium IV
(1999)
(2000)
Compatibilité
ascendante
Registres du processeur 8080 bits
8080
0
1
2
3
4
A
B
C
D
Bus de données
8bits
H
L
Bus d’adresse
8bits
255
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
SP
BP
Bus d’adresse
20bits
65,535
Principaux registres du Pentium-II –
32bits
0
1
2
3
4
Bus de données
16bits
Bus d’adresse
20bits
4Go
Exemple d’instructions de l’IA-32
Langage assembleur :
 MOV reg, reg
 MOV reg, imm
 ADD reg, reg
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
Block-diagram du Pentium
Registres généraux de l’Ultrasparc II
Block-diagram de l’ultrasparc-II
VI. Le rôle des
compilateurs
1. Compilateur Vs. Architecture





Aujourd’hui tous les codes machine sont produits par
les compilateurs.
La conception de nouveaux ISA demande la prise en
compte de la technologie des compilateurs.
Isoler le compilateur du matériel risque d’arriver à des
manques efficacité.
Quelles caractéristiques conduiront à un code de
qualité?
Qu’est ce qui facilite dans l’architecture l’écriture de
compilateurs efficaces?
2. Impact des compilateurs

Optimisation essentielle : allocation des registres
par coloriage de graphes (pour + de 16
registres).
Comment un programme de haut
niveau utilise l’ISA?

Pour y répondre :
Comment sont allouées et adressées les variables et
combien de registres sont nécessaires pour allouer
correctement les variables?
 3 zones mémoires :

Tas (allocation dynamique)
 Pile (paramètres, variables locales)
 Mémoire globale (variables globales)

VII. Classification
RISC/CISC
Historique des ISA



1960, Les compilateurs ne sont pas développés. La
machine émule le fonctionnement de la pile.
Architecture à Pile populaire.
1970, La mémoire coûte chère. Réduire les coûts
logiciels ainsi que la taille du code. On remplace
donc du logiciel par du matériel. Jeu d’instruction
complexe. (VAX…)
1980, évolution de la technologie des compilateurs.
Architectures RISC, chargement/rangement.
(MIPS, IBM 801, RISC-I)
Critères RISC, critères d’aujourd’hui






Peu d’instructions (simples)
Peu de modes d’adressage
Taille fixe des instructions
Au moins 16 registres + qqs registres flottants
Utiliser des registres généraux avec une
architecture chargement/rangement
Utiliser les modes d’adressage : Déplacement,
immédiat, indirect par registres
RISC/CISC
Les choix architecturaux ont un impact sur le jeu
d’instruction (ou inversement) :
2. Le nombre d’unités de calcul => Nb Codop
3. Le nombre d’opérandes pour chacune (ACC,
Reg, Pile)
4. Leur mode d’accès (mémoire, registres)
5. Le nombre de registres = taille des champs
6. Le nombre de bus mémoire
OPCOD : 1
OP1 : 3, 4
OP2 : 3, 4
OPn : 2, 1
Architectures de traitement utilisées
dans l’embarqué
RISC
Un exemple de machine RISC
virtuelle, le DLX

Registres



Type de données



32 registres (R0 = 0)
32 registres flottant (F0, F31), 32 ou 64 bits
Entiers : Octets, demi-mots, mots
Flottant : simple, double précision
Modes d’adressage


Immédiats, indirect et déplacement avec champs de 16 bits
Espace Mémoire adressable sur 32 bits en Big Endian
Format
d’instructions

Taille fixe sur 32 bits :


6 bits de codop
3 formats d’instruction
Jeu d’instruction du DLX




Transferts de données
Arithmétique et logique
Contrôle
Virgule flottante
Block-diagram du MIPS-R3000
Performances



Le DLX dispose d’instructions simples
Contrairement au VAX qui fournissait des
instructions proches du langage de haut niveau
Une telle architecture doit exécuter plus
d’instructions pour un même code. Elle est donc
moins performante ?
Comparaison MIPS R2000/VAX 8700
Simplicity favors regularity

Documents pareils