Processeur mu0

publicité
3-Présentation d’un µP simple
•
•
Microprocesseur avec un bus de données sur 16 bits et un bus d’adresses sur 12 bits (soit 4096 mots adressables).
Le chemin de données doit comprendre au minimum :
– un registre compteur programme (PC) : un registre stockant l’adresse de la prochaine instruction à exécuter.
– un registre accumulateur (ACC) : un registre stockant la donnée sur laquelle on travaille.
– une UAL qui permet d’exécuter des opérations arithmétiques et logiques de base (addition, soustraction,
ET/OU/OUX
logique)…
www.enib.fr
[email protected]
Microprocesseurs : Systèmes à Microprocesseurs
Codage des Instructions
• Chaque instruction est codée sur
16 bits et comprend :
– le champ code opération :
indique le type d’instruction dont
il s’agit (add, …).
– le champ code opérande :
adresse de la donnée.
• Une instruction d’addition, par
exemple, utilise la donnée stockée
à l’adresse spécifiée, ainsi que le
registre accumulateur comme
opérande implicite, puis stocke le
résultat dans l’accumulateur.
L’action réalisée est :
ACC ¬ ACC + mem16 [addr].
On parle de machine une adresse
car une seule opérande est définie
explicitement dans le codage de
l’instruction. Les instructions sont
lues depuis la mémoire à partir de
l’adresse 0, à des adresses
consécutives.
www.enib.fr
2
[email protected]
Microprocesseurs : Systèmes à Microprocesseurs
Jeu d’Instructions
• La programmation d’un programme complet directement en code machine binaire
devient très rapidement fastidieuse :on définit un langage symbolique nommé
langage d’assemblage permettant de représenter les instructions par des
mnémoniques.
• On délègue la traduction du programme source en code binaire exécutable à un
programme : l’assembleur.
www.enib.fr
[email protected]
Microprocesseurs : Systèmes à Microprocesseurs
Chemin de données
www.enib.fr
[email protected]
Microprocesseurs : Systèmes à Microprocesseurs
Chemin de données
Les éléments du chemin de donnés sont :
•
•
•
•
•
•
•
l’UAL,
le registre accumulateur (ACC) : il contient la donnée sur laquelle on travaille.
Il renvoie des informations vers la machine d’état (valeur nulle et valeur positive
ou nulle).
le compteur programme (PC : Program Counter) : il contient à tout instant
l’adresse de la prochaine instruction à exécuter.
le registre d’instruction (IR : Instruction Register) : il contient l’instruction qui
est en train d’être exécutée.
des multiplexeurs (MUXA et MUXB) qui permettent d’aiguiller les données.
une porte 3 états qui permet d’amener le contenu du registre accumulateur sur le
bus de données, et de déconnecter l’accumulateur du bus de données quand la
mémoire est en lecture.
Les registres disposent d’une commande de chargement et de remise à zéro
synchrone (non représentée). l’UAL reçoit, en plus de ses entrées et sortie, un
code permettant d’identifier la fonction UAL sélectionnée.
www.enib.fr
[email protected]
Microprocesseurs : Systèmes à Microprocesseurs
Séquencement des Instructions
• La machine d’état récupère des informations en provenance de la partie
traitement (opcode, accZ, acc15) et génère des commandes internes pour
contrôler l’activation du chemin de données adéquat pour réaliser
l’instruction en train d’être exécutée et des commandes externes pour
assurer le dialogue du microprocesseur avec la mémoire. Le séquencement
des différentes actions est cadencé par l’horloge clk.
• L’exécution d’un programme entier consiste à répéter l’exécution de
l’instruction pointée par le PC jusqu’à la dernière instruction.
• L’exécution d’une instruction peut être réalisée en deux phases :
– phase d’acquisition (fetch) : on lit en mémoire l’instruction pointée par le PC
et on la transfère dans le registre d’instruction RI. On incrémente le compteur
programme pour qu’il pointe sur l’instruction suivante. Dès que l’instruction
est dans le registre d’instruction, elle est décodée.
– phase d’exécution (execute) : l’opérande est lue en mémoire (si nécessaire).
L’opération UAL est exécutée, et le résultat est rangé dans l’accumulateur
ACC.
www.enib.fr
[email protected]
Microprocesseurs : Systèmes à Microprocesseurs
Séquencement des Instructions
www.enib.fr
7
[email protected]
Microprocesseurs : Systèmes à Microprocesseurs
Exemple de Programme
www.enib.fr
8
[email protected]
Microprocesseurs : Systèmes à Microprocesseurs
Phase d’acquisition (Fetch)
0
10
LDA var1
ADD var2
STO res
B+1
LDA
var1
STOP
Var1=1
Var2=2
res
www.enib.fr
9
[email protected]
Microprocesseurs : Systèmes à Microprocesseurs
www.enib.fr
10
[email protected]
Microprocesseurs : Systèmes à Microprocesseurs
Phase d’exécution
0x004
0x004
LDA var1
LDA
var1
B
0x001
ADD var2
STO res
STOP
Var1=1
Var2=2
res
0x001
www.enib.fr
[email protected]
Microprocesseurs : Systèmes à Microprocesseurs
www.enib.fr
12
[email protected]
Microprocesseurs : Systèmes à Microprocesseurs
Phase d’acquisition (Fetch)
1
2
LDA var1
ADD var2
STO res
ADD
var2
STOP
Var1=1
Var2=2
res
www.enib.fr
13
[email protected]
Microprocesseurs : Systèmes à Microprocesseurs
www.enib.fr
14
[email protected]
Microprocesseurs : Systèmes à Microprocesseurs
Phase d’exécution
0x005
LDA var1
ADD var2
STO res
STOP
Var1=1
Var2=2
res
0x001
0x003
0x002
[email protected]
Microprocesseurs : Systèmes à Microprocesseurs
www.enib.fr
www.enib.fr
16
[email protected]
Microprocesseurs : Systèmes à Microprocesseurs
Instructions de Saut
JMP Addr : Fetch
0
10
JMP 0x004
JMP
0X004
www.enib.fr
17
[email protected]
Microprocesseurs : Systèmes à Microprocesseurs
JMP Addr : Exécution
0X004
0X004
JMP 0X004
www.enib.fr
18
[email protected]
Microprocesseurs : Systèmes à Microprocesseurs
JSR Addr : Fetch
0
10
JSR 0x004
JSR
0x004
www.enib.fr
19
[email protected]
Microprocesseurs : Systèmes à Microprocesseurs
JSR Addr : Exécution
0x004
0x004
1
1
0x004
www.enib.fr
20
[email protected]
Microprocesseurs : Systèmes à Microprocesseurs
RET : Fetch
6
6
7
JSR 0x004
RET
RET
www.enib.fr
21
[email protected]
Microprocesseurs : Systèmes à Microprocesseurs
RET : Exécution
Actions réalisées :
PC  SPC
1
1
www.enib.fr
22
[email protected]
Microprocesseurs : Systèmes à Microprocesseurs
4-Structure de la machine d’état
Machine d’Etat Microprogrammée
• Concept introduit par Wilkes en 1951, mais appliqué
par IBM qu’à partir de 1964.
• Les valeurs des signaux pour les différentes
instructions sont stockées dans une mémoire dite de
microprogrammation interne au microprocesseur.
Chaque mot de la mémoire peut être adressé en
fonction des entrées de la machine d’état (opcode et
drapeaux).
www.enib.fr
[email protected]
Microprocesseurs : Systèmes à Microprocesseurs
Machine d’Etat Microprogrammée
•
•
•
•
Pour exécuter une instruction, il suffit de lire deux lignes de la mémoire (fetch + exec) pour
affecter les signaux de contrôle appropriés. Chaque ligne de la mémoire forme une microinstruction.
La lecture de la mémoire est séquencée par une machine d’état de microprogrammation
relativement simple à mettre en oeuvre.
Intérêt : l’ajout de nouvelles instructions consiste simplement à ajouter des lignes dans la
mémoire.
En ajoutant au micro-instructions un champ permettant d’identifier la prochaine instruction à
exécuter, il est possible d’obtenir un langage de microprogrammation. Ce langage permet de
réaliser des microprogrammes (firmware) pour synthétiser des instructions complexes (ex
multiplication) sur une architecture sans les ressources matérielle pour le faire.
www.enib.fr
[email protected]
Microprocesseurs : Systèmes à Microprocesseurs
Machine d’Etat Microprogrammée
Cette technique a un coût : 70 cycles pour une multiplication, 140 cycles
pour une division contre 4 cycles pour une addition
sur un Motorola (Freescale) 68000.
[email protected]
Microprocesseurs : Systèmes à Microprocesseurs
www.enib.fr
Machine d’Etat Câblée
• Machine d’état cablée : elle est synthétisée pour fournir les
signaux de commande aux éléments du chemin de données
interne ou externe au microprocesseur. Elle enchaîne les phases
de chargement et d’exécution des instructions en tenant compte
des informations provenant de la partie traitement. Plus le
nombre d’instructions devient important et plus la réalisation de
cette machine d’état devient complexe.
www.enib.fr
[email protected]
Microprocesseurs : Systèmes à Microprocesseurs
3- Caractéristiques des jeux d’instructions
Introduction
• Le microprocesseur est caractérisé par son
architecture de jeu d’instructions (ISA –
Instruction Set Achitecture), qui est souvent
commune à toute une famille de processeurs. l’ISA
définit l’interface entre le microprocesseur et le
programmeur (codage des instructions, registres
disponibles …). l’ISA est en général détaillée dans
le “User’s Manual” de la famille de
microprocesseurs.
www.enib.fr
[email protected]
Microprocesseurs : Systèmes à Microprocesseurs
Codage des Instructions
•
Le codage d’une instruction doit permettre de rendre compte de la fonction réalisée (opcode)
et de la localisation des opérandes.
•
Quelques exemples avec une instruction typique d’addition:
•
Machine 3 adresses
•
Machine 2 adresses
•
Machine 1adresse (ou à accumulateur)
•
La manière dont sont codées les instructions a une influence sur leur pouvoir d’expression :
pour réaliser l’opération d = op1 + op2 avec une machine à accumulateur, il faut réaliser :
LDA op1 ; acc=op1
ADD op2 ; acc=acc+op2
STO d ; d=acc
www.enib.fr
[email protected]
Microprocesseurs : Systèmes à Microprocesseurs
Les Registres
Les registres sont des emplacements de mémorisation à accès très rapides. On trouve :
• des registres d’usage général, avec parfois des spécificités : registres de données, d’adresses,
pour les opérations en flottants.
• des registres à usage spécifique : compteur programme (PC), pointeur de pile, registre de
segment, mot d’état, registre de configuration,…
www.enib.fr
[email protected]
Microprocesseurs : Systèmes à Microprocesseurs
Modes d’Adressage
•
Les modes d’adressage font référence aux manières de spécifier une opérande (et d’utiliser les
bits de codage des champs opérande) :
–
–
–
–
mode d’adressage immédiat : on spécifie la valeur de la donnée dans le codage de l’instruction,
int a = 2 + 3;
mode d’adressage direct ou absolu : on spécifie l’adresse mémoire de la donnée dans le codage de
l’instruction,
int op1=2, op2=3, d;
d = op1 + op2;
mode d’adressage direct registre : on spécifie le numéro du registre qui contient la donnée dans le
codage de l’instruction,
register int r1, r2, r3;
r3 = r1 + r2;
mode d’adressage indirect : on spécifie, dans le codage de l’instruction, un registre qui sert de
pointeur vers la donnée,
int a, *p=0x00FF1143;
a=*p;
Des variantes permettent de spécifier en plus un offset par rapport à l’adresse de base, ou un index défini
dans un autre registre.
– mode d’adressage implicite : l’instruction s’exécute sur une donnée spécifiée de manière implicite.
add op1 ; le registre acc est modifié, mais pas référencé dans le codage de l’instruction
goto addr ; le registre pc est modifié
•
Les modes d’adressage disponible doivent permettre de supporter les structures de données
des langages de haut niveau.
www.enib.fr
[email protected]
Microprocesseurs : Systèmes à Microprocesseurs
Types d’Instruction
•
Les instructions classiquement proposées par les jeux d’instructions des
microprocesseurs sont :
– instructions de transfert de données,
– instructions arithmétiques et logiques
•
•
•
•
•
opérations sur des entiers et des réels,
instructions logiques bit à bit,
instructions de manipulation de bits,
instructions de décalage et rotation,
instructions de manipulation de chaînes de caractères,
– instructions de contrôle : branchement conditionnel ou inconditionnel,
– instructions d’appel et de retour de sous-programme, manipulation du contexte (passage
de paramètre, gestion des variables locales),
– instructions privilégiées orientées vers le support de systèmes d’exploitation.
•
La programmation au niveau assembleur est laborieuse (mais instructive).On fait
appel à des langages de plus haut niveau (C,C++, Java, …) possédant un niveau
d’abstraction plus important. L’écart entre un langage de haut niveau et les
instructions machine est complété par un programme chargé de la traduction : le
compilateur.
•
Le jeu d’instruction doit fournir le matériel nécessaire pour exprimer les concepts
utilisés par les langages de haut niveau.
www.enib.fr
[email protected]
Microprocesseurs : Systèmes à Microprocesseurs
Jeux d’Instructions CISC
Caractéristiques des processeurs CISC
•
CISC = Complex Instruction Set Computer
•
Dans les années 1970, la mémoire vive était chère et les compilateurs peu performants.
•
Les jeux d’instructions CISC supportent au maximum les langages de haut niveau
–
–
•
Avantages :
–
–
•
L’écriture des compilateurs est plus facile puisque le microprocesseur apporte un support évolué,
Les instructions permettent d’avoir un code compact, qui économise l’utilisation de la mémoire.
Conséquences :
–
–
•
En offrant des instructions évoluées permettant une traduction quasi-directe des programmes source vers l’assembleur.
En offrant des modes d’adressage orientés vers la manipulation de structure de données complexes (tableau, enregistrement, liste,
…).
Le codage des instructions est de longueur variable (2 à 10 octets pour un Motorola 68000).
La complexité des instructions et des modes d’adressage impose l’utilisation d’un séquenceur micro-programmé.
La durée d’exécution d’un programme est donnée par TP = Σ(Ni × NC/ i × TC) avec TC la durée d’un cycle
d’horloge,NC/ i le nombre de cycles pour exécuter une instruction particulière et Ni le nombre d’occurrence de cette
instruction. Les processeurs CISC essaient d’agir sur le nombre d’instructions pour obtenir la performance voulue.
www.enib.fr
[email protected]
Microprocesseurs : Systèmes à Microprocesseurs
32
Jeux d’Instructions CISC
Limite de l’architecture CISC classique
Constats sur les processeurs CISC des années 1970-1980 :
•
La vitesse de traitement des processeurs augmente plus rapidement que le temps de réponse des mémoires
ne décroît. Les accès mémoire deviennent pénalisants.
•
Le grand nombre de modes d’adressage implique la réalisation de séquenceurs micro-programmés. La
mémoire de micro-programmation peut utiliser jusqu’à 60% de la surface de silicium de la puce.
•
Fréquence d’utilisation des modes d’adressage (68000)
[email protected]
Microprocesseurs : Systèmes à
moyenne sur 500
millions d’instructions
(Electronic Design
07/02/1985)
Microprocesseurs
www.enib.fr
Jeux d’Instructions CISC
 Exemple :
► MOVE.W 2(A0,D1), D2:
l’opérande en mémoire
Opérande source : 2(A0,D1) = permet de calculer l’adresse effective de
Opérande destination : D2
Avant :
31
A0
16
00
00
31
D1
@++↓
0
1F
16
00
15
FE
15
0
00
00
$1FFC
$1FFE
$2000
$2002
$2004
..
$23
$11
$55
$3F
04
..
$14
$22
$44
$1A
$1FFD
$1FFF
$2001
$2003
$2005
Après :
31
D2
16
45
6E
15
3F
0
1A
www.enib.fr
34
[email protected]
Microprocesseurs : Systèmes à Microprocesseurs
Jeux d’Instructions CISC
 Application : accès aux champs d’un tableau d’enregistrement en C
struct individu {
short int taille;
short int poids;
short int age;
} equipe[5] ;
TAILLE EQU 0
POIDS EQU 2
AGE
EQU 4
EQUIPE DS.W 3*5
LEA.L EQUIPE, A0
* Adresse de base
MOVE.L #12, D1
* Index (2*6 octets)
MOVE.W #170, TAILLE(A0, D1.L)
MOVE.W #60, POIDS(A0, D1.L)
MOVE.W #20, AGE(A0, D1.L)
equipe[2].taille=170;
equipe[2].poids=60;
equipe[2].age=20;
31
A0
16
00
03
00
00
31
D1
@++↓
[email protected]
* tableau
15
0
1F
16
FC
15
0
00
0C
$31FFC
$31FFE
$32000
$32002
$32004
$32006
$32008
$00
$AA
$3200A
$00
$3C
Microprocesseurs
:
$3200C
$00
$14
$31FFD
$31FFF
$32001
$32003
$32005
$32007
$32009
$3200B
Systèmes
$3200C
www.enib.fr
à Microprocesseurs
Jeux d’Instructions CISC
•
Dans 80% des cas, le code généré par les compilateurs ne fait appel qu’à 20% des
instructions disponibles dans le jeu d’instruction des microprocesseurs.
•
Les types d’instructions les plus fréquemment exécutées sont :
– Les affectations de variables (40%) : dans 75% des cas, il s’agit d’affectations de
variables scalaires, et dans 25% de mouvement de données sur des tableaux ou des
structures.
– Les structures de contrôle : test et boucles (50%)
– Les appels de sous-programmes (10%) : ils représentent cependant 45% du temps
d’exécution des instructions machine. Le nombre de paramètres passés à la fonction est
inférieur à 6 dans 98% des cas. 92% des fonctions appelées ont moins de 6 variables
locales scalaires. La profondeur d’appels successifs est en moyenne de 5.
Conclusions:
•
Une partie seulement des modes d’adressage et du jeu d’instruction est vraiment
très utilisée.
•
Les appels de fonction et le passage des paramètres nécessitent des accès mémoire
www.enib.fr
qui sont pénalisants.
[email protected]
Microprocesseurs : Systèmes à Microprocesseurs
Jeux d’Instructions RISC
Introduction
•
•
Les premières recherches entreprises par IBM au milieu des années 1970, puis poursuivies
aux universités de Berkeley (en 1980) et de Stanford (en 1981) débouchent sur les principaux
modèles architecturaux des RISC.
–
1. Les accès mémoire ne doivent se faire que via des instructions du type LOAD/STORE.Les autres
instructions fonctionnent de registre à registre. Il faut donc beaucoup de registres. Le jeu d’instruction
ne doit contenir que ce qui est utile, le reste peut être émulé. Les modes d’adressage doivent être peu
nombreux. RISC = Reduced Instruction Set Computer.
–
2. Toutes les instructions doivent s’exécuter en un cycle. Le format des instructions doit être fixe (32
bits), de largeur égale ou plus petite à la largeur du bus de données.
–
3. Le séquenceur doit être cablé.
Quelques repères :
–
L’équipe de David Patterson, à l’université de Berkeley, produit le RISC I (44420 transistors, 32
instructions) en 1982 avec des performances qui surpassent les CISC de l’époque, puis le RISC II
(40760 transistors, 39 instructions) en 1983.
–
L’équipe de John Henessy, à l’université de Stanford, produit le MIPS au début des années 1980.
www.enib.fr
[email protected]
Microprocesseurs : Systèmes à Microprocesseurs
•
Du fait de la simplicité des instructions et de leur format, la conception des
processeurs RISC est plus simple que celle des CISC. Pour atteindre les niveaux de
performance voulu, les processeurs RISC font appel à des améliorations d’ordre
architectural.
•
La durée d’exécution d’un programme est donnée par TP = Σ(Ni × NC/ i × TC)
avec TC la durée d’un cycle d’horloge, NC/ i le nombre de cycles pour exécuter une
instruction particulière et Ni le nombre d’occurence de cette instruction. Les
processeurs RISC essaient d’agir sur le nombre de cycle par instruction pour
obtenir la performance voulue.
•
Après une période de méfiance de la part de l’industrie, le marché du RISC se
développe à la fin des années 1980.
•
Deux modèles de processeurs RISC développés à Berkeley et à Stanford sont à
l’origine de la plupart des processeurs RISC actuels. Ils diffèrent principalement par
le nombre de registres qu’ils comportent.
www.enib.fr
[email protected]
Microprocesseurs : Systèmes à Microprocesseurs
Téléchargement