Vous êtes sur la page 1sur 38

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

kerhoas@enib.fr Microprocesseurs : Systèmes à Microprocesseurs


Codage des Instructions
• Chaque instruction est codée sur • Une instruction d’addition, par
16 bits et comprend : exemple, utilise la donnée stockée
– le champ code opération : à l’adresse spécifiée, ainsi que le
indique le type d’instruction dont registre accumulateur comme
il s’agit (add, …). opérande implicite, puis stocke le
– le champ code opérande : résultat dans l’accumulateur.
adresse de la donnée. 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
kerhoas@enib.fr 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

kerhoas@enib.fr Microprocesseurs : Systèmes à Microprocesseurs


Chemin de données

www.enib.fr

kerhoas@enib.fr 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

kerhoas@enib.fr 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

kerhoas@enib.fr Microprocesseurs : Systèmes à Microprocesseurs


Séquencement des Instructions

www.enib.fr

7
kerhoas@enib.fr Microprocesseurs : Systèmes à Microprocesseurs
Exemple de Programme

www.enib.fr

8
kerhoas@enib.fr Microprocesseurs : Systèmes à Microprocesseurs
Phase d’acquisition (Fetch)

10

LDA var1
ADD var2
STO res
B+1
STOP
LDA
var1 Var1=1
Var2=2
res

www.enib.fr

9
kerhoas@enib.fr Microprocesseurs : Systèmes à Microprocesseurs
www.enib.fr

10
kerhoas@enib.fr Microprocesseurs : Systèmes à Microprocesseurs
Phase d’exécution
0x004

0x004

LDA var1
ADD var2
LDA
var1 STO res
B
STOP
0x001
Var1=1
Var2=2
res

0x001

www.enib.fr

kerhoas@enib.fr Microprocesseurs : Systèmes à Microprocesseurs


www.enib.fr

12
kerhoas@enib.fr Microprocesseurs : Systèmes à Microprocesseurs
Phase d’acquisition (Fetch)

1
2
LDA var1
ADD var2
STO res
STOP
ADD
var2 Var1=1
Var2=2
res

www.enib.fr

13
kerhoas@enib.fr Microprocesseurs : Systèmes à Microprocesseurs
www.enib.fr

14
kerhoas@enib.fr Microprocesseurs : Systèmes à Microprocesseurs
Phase d’exécution
0x005

LDA var1
ADD var2
STO res
STOP
Var1=1
Var2=2
res
0x001

0x003

0x002
www.enib.fr

kerhoas@enib.fr Microprocesseurs : Systèmes à Microprocesseurs


www.enib.fr

16
kerhoas@enib.fr Microprocesseurs : Systèmes à Microprocesseurs
Instructions de Saut
JMP Addr : Fetch 0

10

JMP 0x004

JMP
0X004

www.enib.fr

17
kerhoas@enib.fr Microprocesseurs : Systèmes à Microprocesseurs
JMP Addr : Exécution
0X004

0X004

JMP 0X004

www.enib.fr

18
kerhoas@enib.fr Microprocesseurs : Systèmes à Microprocesseurs
JSR Addr : Fetch

10

JSR 0x004

JSR
0x004

www.enib.fr

19
kerhoas@enib.fr Microprocesseurs : Systèmes à Microprocesseurs
JSR Addr : Exécution

0x004 0x004

1 1

0x004

www.enib.fr

20
kerhoas@enib.fr Microprocesseurs : Systèmes à Microprocesseurs
RET : Fetch
6

6
7 JSR 0x004

RET

RET

www.enib.fr

21
kerhoas@enib.fr Microprocesseurs : Systèmes à Microprocesseurs
RET : Exécution
Actions réalisées :
PC  SPC

1 1

www.enib.fr

22
kerhoas@enib.fr 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

kerhoas@enib.fr 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 micro-
instruction.
• 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

kerhoas@enib.fr 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.
www.enib.fr

kerhoas@enib.fr Microprocesseurs : Systèmes à Microprocesseurs


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

kerhoas@enib.fr 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

kerhoas@enib.fr 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

kerhoas@enib.fr 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

kerhoas@enib.fr 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

kerhoas@enib.fr 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

kerhoas@enib.fr 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
– 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,
…).

• 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 :
– 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

kerhoas@enib.fr 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)

moyenne sur 500


millions d’instructions www.enib.fr
(Electronic Design
kerhoas@enib.fr Microprocesseurs : Systèmes à Microprocesseurs
07/02/1985)
Jeux d’Instructions CISC
 Exemple :

► MOVE.W 2(A0,D1), D2: Opérande source : 2(A0,D1) = permet de calculer l’adresse effective de
l’opérande en mémoire
Opérande destination : D2
Avant :

31 16 15 0
A0 00 00 1F FE

31 16 15 0
D1 00 00 00 04

$1FFC .. .. $1FFD
@++↓ $1FFE $23 $14 $1FFF
$2000 $11 $22 $2001
$2002 $55 $44 $2003
$2004 $3F $1A $2005

Après :

31 16 15 0
D2 45 6E 3F 1A
www.enib.fr

34
kerhoas@enib.fr Microprocesseurs : Systèmes à Microprocesseurs
Jeux d’Instructions CISC
 Application : accès aux champs d’un tableau d’enregistrement en C

struct individu { TAILLE EQU 0


short int taille; POIDS EQU 2
short int poids; AGE EQU 4
short int age;
} equipe[5] ; EQUIPE DS.W 3*5 * tableau

LEA.L EQUIPE, A0 * Adresse de base


equipe[2].taille=170; MOVE.L #12, D1 * Index (2*6 octets)
equipe[2].poids=60; MOVE.W #170, TAILLE(A0, D1.L)
equipe[2].age=20; MOVE.W #60, POIDS(A0, D1.L)
MOVE.W #20, AGE(A0, D1.L)

31 16 15 0
A0 00 03 1F FC

31 16 15 0
D1 00 00 00 0C

$31FFC $31FFD
@++↓ $31FFE $31FFF
$32000 $32001
$32002 $32003
$32004 $32005
$32006 $32007
$32008 $00 $AA $32009 www.enib.fr
$3200A $00 $3C $3200B
kerhoas@enib.fr Microprocesseurs
$3200C $00 :
$14 Systèmes
$3200C à 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
qui sont pénalisants. www.enib.fr

kerhoas@enib.fr 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

kerhoas@enib.fr 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

kerhoas@enib.fr Microprocesseurs : Systèmes à Microprocesseurs