Chapitre I
Architecture externe d’un processeur
1
Introduction
L'architecture externe d’un processeur représente ce que doit connaître un
programmeur souhaitant programmer directement avec le langage du processeur
Langage du processeur :
Langage machine : représenté par un code binaire propre à chaque
processeur
Exemple: 1 0 1 10 1 1000011 0 10 01
1 01 1 0 1 1 R1 R2 + R3
Code binaire de l’addition
Registre R1
Registre R2
Registre R3
Langage assembleur : équivalent au langage machine sauf qu’il utilise des
représentations mnémoniques des opérations et des opérandes
Exemple: Add R1, R2, R3
2
Pourquoi programmer en assembleur ?
Ecrire des programmes destinés aux systèmes d’exploitation
Réaliser les Drivers de périphériques
Ecrire des programmes efficaces et performants (en matière de temps d’exécution et
d’occupation de la mémoire:
Petite comparaison : un programme affichant "Hello, World !" en C occupe
15 839 octets, alors que le même programme affichant le même message en
Assembleur occupe 23 octets)
Programmer des processeurs nouveaux n’ayant pas encore de compilateurs
Programmer des systèmes embarqués et temps réel
…
3
Architecture externe d’un processeur
L’architecture externe d’un processeur concerne les éléments suivants :
Les registres visibles
Ce sont les registres qu’on peut manipuler par notre programme
Nombre de registres
Tailles des registres
L'adressage de la mémoire
Taille du bus de données du processeur
Taille du bus d’adresse du processeur
Les modes d’adressage de la mémoire
Le jeu d'instructions
Format de l’instruction
Nombre d’instructions
Les mécanismes de traitement des interruptions et des exceptions
Lignes d’interruption
Priorité des interruptions
Localisation du gestionnaire d’interruption 4
Fonctionnement d’un processeur
Pour pouvoir fonctionner correctement, tout processeur doit disposer des
registres suivants :
Un compteur d’instruction ou Program Counter (PC)
Pointe vers la prochaine instruction à exécuter et s’incrémente après l’exécution
de cette dernière pour pointer vers la suivante et ainsi de suite.
Il est initialisé à une valeur fixe quand la ligne d’interruption RESET est activée
Un à plusieurs registres à usage général
Quand il y a un seul registre il est dit accumulateur
Les processeurs modernes contiennent plusieurs registres
Contiennent les données en vu de leurs effectuer des opérations (addition,
soustraction, multiplication, …etc)
Un registre d’état ou status register (SR)
Résume le résultat de l’opération effectuée (nul, négatif, overflow, …etc)
Autres registres à usage spécifique
Pointeur de pile (SP)
Registres indexes
…etc.
5
Exemple d’un processeur
Interface externe
4 bits
Bus d’adresses
RESET Lecture
Sources INT1 Ecriture Bus de commande
d’interruption INT2
Bus de données
16 bits
Quelle est la taille de la mémoire gérée par ce processeur ?
24x16 = 256 bits =32 Octets
Quelle est la plus petite et la plus grande valeur pouvant être stoquée dans une case
mémoire
de -32768 à + 32767 (en utilisant le complément à 2)
6
Exemple d’un processeur
Registres internes
PC 4 bits
R1
R2
16 bits
R3
O N Z
SR
16 bits
7
Exemple d’un processeur
Format d’instruction
Code Mode Registre Registre Registre Adresse ou
OP Adressage destination opérande opérande constante
1 2
4 bits 2 bits 2 bits 2 bits 2 bits 4 bits
Code Op
Code Instruction Signification
0000 LOAD Charger le registre à partir de la mémoire
0001 STORE Enregistrer le contenu du registre source en mémoire
0010 ADD RD OP1 + OP2 (OP 1 et OP2 sont des registres)
0011 SUB RD OP1 –OP2 (OP 1 et OP2 sont des registres)
0100 JUMP PC Adresse mémoire
0101 CMP Comparer entre OP1 et OP2 (OP1 –OP2)
0110 JSUP PC Adresse mémoire si OP1 > OP2 (exécuter CMP
avant)
0111 JEQ PC Adresse mémoire si OP1 = OP2 (exécuter CMP
avant)
8
Exemple d’un processeur
Mode d’Adressage
Code Mode Signification
00 Immédiat Le contenu du champ adresse est une constante
01 Direct Le contenu du champ adresse est une case
mémoire
10 Registre Les opérations sont effectuées dans les registres
11 basé L’adresse se trouve dans la zone mémoire
indiquée dans le registre OP1 + déplacement
9
Exemple d’un processeur
Exercice
En se basant sur le processeur précédent, écrire le code machine permettant de :
1. Charger la valeur 10 dans le registre 1
2. Charger la valeur 14 dans le registre 2
3. Effectuer l’addition de ces deux valeurs
4. Ranger le résultat en mémoire à l’adresse 4
1. LOAD R1, #10 0000 00 01 00 00 1010
2. LOAD R2, #14 0000 00 10 00 00 1110
3. ADD R3, R1, R2 0010 10 11 01 10 0000
4. STORE R3, 04 0001 01 11 00 00 0100
10
Organisation mémoire
L’organisation mémoire diffère d’un processeur à un autre
La différence réside dans la taille affectée aux bus d’adresse et de données
La taille du bus de données prédomine car elle est en relation avec la puissance du
processeur
Processeur 8 bits bus de données sur 8 bits
Processeur 16 bits bus de données sur 16 bits
Processeur 32 bits bus de données sur 32 bits
Processeur 64 bits bus de données sur 64 bits
…etc.
11
Mémoire adressable par octet
Les processeurs actuels permettent d’adresser des mots de tailles variables
Un processeur 32 bits peut, par exemple, charger des mots de 32 bits mais peut
aussi charger des mots de tailles plus petites.
En général, le plus petit objet que le processeur peut charger est l’octet.
Dans ce cas la mémoire est adressable par octet
Chaque octet dispose de sa propre adresse
Les mots de tailles plus grandes sont stockés comme une séquence d’octets
L’adresse d’un mot large correspond à l’adresse du premier octet de la séquence
12
Mémoire adressable par octet
Exemple d’une mémoire adressable par octets
Bus de données sur 32 bits
Bus d’adresses sur 32 bits
Octet 0 Octet 1 Octet 2 Octet 3
0x00000000
0x00000004
0x00000008
0x0000000C
0x00000010
0x00000014
…………………...
0xFFFFFFFC
13
Big Endian vs Little Endian
Quand un objet occupe plus d’un octet, il faut le stocker dans un ordre bien déterminé
dit Endianess
Il existe deux ordres possibles :
Big Endian : l’adresse du mot correspond à l’adresse de l’octet des poids forts. Les
octets de poids faibles suivent ceux de poids forts
Little Endian : l’adresse du mot correspond à l’adresse de l’octet de poids faibles.
Les octets de poids forts suivent ceux de poids faibles
Exemple X = 1247 stocké en mémoire à l’adresse 0
Big Endian Little Endian
0 1 0 7
1 2 4
1
2 4 2
2
3 7 1
3
14
Modes d’adressage de la mémoire
L’accès à la mémoire se fait par une adresse spécifiée dans un champ (une partie)
de l’instruction
Parfois, l’espace mémoire adressé par le processeur est plus grand que la capacité
d’adressage du champ de l’instruction
Il est aussi fréquent de manipuler des structures de données complexes comme
les tableaux, les matrices, les enregistrements …etc.
Pour cela, les processeurs utilisent des techniques d’adressage particulières dites
modes d’adressage
Un mode d'adressage spécifie la façon dont est calculée l'adresse mémoire
effective d'un opérande à partir de valeurs contenues dans des registres et de
constantes contenues dans l'instruction ou ailleurs dans la machine.
15
Modes d’adressage de la mémoire
Adressage immédiat
Ce mode est utilisé pour manipuler des constantes connues sans passer par la
mémoire pour les chercher
L’opérande est une valeur immédiate se trouvant directement dans l’instruction
Load R1, #10 0000 00 01 00 00 1010
10 R1
16
Modes d’adressage de la mémoire
Adressage direct
L’adresse de l’information à chercher se trouve directement dans l’instruction
Ce mode est le plus simple mais l’espace mémoire accessible dépend de la
taille du champ adresse de l’instruction
Load R1, 10 0000 01 01 00 00 1010
Mémoire
20 R1
10 20
17
Modes d’adressage de la mémoire
Adressage indirect
L’instruction contient une adresse qui contient l’adresse de l’information à
chercher
Ce mode nécessite deux accès à la mémoire et tend à être abandonné et ne plus
être utilisé sur les processeurs modernes.
Load R1, [10] Mémoire
30 R1
10 20
20 30
18
Modes d’adressage de la mémoire
Adressage par registre
L’information ne se trouve pas en mémoire mais dans un autre registre interne
du processeur
Ne nécessite pas d’accès à la mémoire
Load R1, R2 0000 10 01 10 00 0000
10 R1
10 R2
19
Modes d’adressage de la mémoire
Adressage indirect par registre
L’information à chercher se trouve en mémoire à l’adresse indiqué par un
registre interne
Load R1, [R2]
Mémoire
R2 10 10 20 20 R1
20
Modes d’adressage de la mémoire
Adressage basé
L’adresse de l’information est donnée en deux parties
Une partie dite base se trouvant dans un registre
Une partie, dite déplacement figurant dans le champs adresse de l’instruction
Load R1, [R2, 10] 0000 11 01 10 1010
Mémoire
20 R1
+ 15 20
R2 5
21
Modes d’adressage de la mémoire
Adressage relatif
Ce mode est souvent utilisé dans les instructions de branchement
L’adresse de l’information est la combinaison du contenu du compteur programme
(PC) et d’un déplacement
Mémoire
Brel 10
14 Brel 10
+ 25 Autre inst
PC 15
25
22
Cycle d’exécution d’un programme
Le fonctionnement du processeur est caractérisé par une boucle indéfinie dans
laquelle il exécute de manière cyclique des instructions se trouvant en mémoire
La boucle (ou le cycle) est composée de plusieurs phases
On distingue en général, trois phases de base
La phase de recherche (fetch)
Le processeur recherche l’instruction depuis la mémoire
La phase de décodage (Decode)
L’instruction est décodée dans un registre spécial dans le processeur dit registre
instruction
La phase d’exécution (Exécute)
L’instruction est exécutée par le processeur
23
Phases d’exécution d’un programme
Première instruction : Load R1, 10
Processeur
Phase recherche
PC 00 + 2 = 02
00 Mémoire
00 Load R1, 10
00 02 Load R2, 12
R1 04 Add R3, R1, R2
Adresses 06 Store R3, 14
R2 08
Lecture
R3 10 20
12 25
14
Données
RI 0000 01 01 00 00 1010
24
Phases d’exécution d’un programme
Première instruction : Load R1, 10
Processeur
Phase Décodage
PC 00
02 Mémoire
00 Load R1, 10
02 Load R2, 12
R1 04 Add R3, R1, R2
Adresses 06 Store R3, 14
R2 08
R3 10 20
12 25
Adressage direct 14
Données
Load Zone
mémoire
RI 0000 01 01 00 00 1010
Registre dest
25
Phases d’exécution d’un programme
Première instruction : Load R1, 10
Processeur
Phase Exécution
PC 00
02 Mémoire
00 Load R1, 10
10
02 Load R2, 12
R1 20 04 Add R3, R1, R2
Adresses 06 Store R3, 14
R2 08
Lecture
R3 10 20
12 25
14
Données
RI 0000 01 01 00 00 1010
26
Phases d’exécution d’un programme
Deuxième instruction : Load R2, 12
Quel est le contenu des registres après l’exécution de l’instruction: Load R2, 12
Processeur
PC 00?
04 Mémoire
00 Load R1, 10
02 Load R2, 12
R1 20? 04 Add R3, R1, R2
Adresses 06 Store R3, 14
R2 25? 08
R3 ? 10 20
12 25
14
Données
RI 0000 01 10 00 00 1100?
27
Phases d’exécution d’un programme
Troisième instruction : Add R3, R1, R2
Processeur
Phase recherche
PC Mémoire
04
04 + 2 = 06
04
00 Load R1, 10
04 02 Load R2, 12
R1 20 04 Add R3, R1, R2
Adresses 06 Store R3, 14
R2 25 08
Lecture
R3 10 20
12 25
14
Données
RI 0010 10 11 01 10 0000
28
Phases d’exécution d’un programme
Troisième instruction : Add R3, R1, R2
Processeur
Phase Décodage
PC 00
06 Mémoire
00 Load R1, 10
02 Load R2, 12
R1 20 04 Add R3, R1, R2
Adresses 06 Store R3, 14
R2 25 08
R3 10 20
12 25
Adressage Registre 14
Données
Add
R1
RI 0010 10 11 01 10 0000
R2
R3
29
Phases d’exécution d’un programme
Troisième instruction : Add R3, R1, R2
Processeur
Phase Exécution
PC 00
06 Mémoire
00 Load R1, 10
02 Load R2, 12
R1 20 04 Add R3, R1, R2
Adresses 06 Store R3, 14
R2 25 08
R3 45 10 20
12 25
14
UAL Données
add
RI 0010 10 11 01 10 0000
30
Phases d’exécution d’un programme
Quatrième instruction : Store R3, 14
Processeur
Phase recherche
PC 06 + 2 = 08
06 Mémoire
00 Load R1, 10
06 02 Load R2, 12
R1 20 04 Add R3, R1, R2
Adresses 06 Store R3, 14
R2 25 08
Lecture
R3 45 10 20
12 25
14
Données
RI 0001 01 11 00 00 1110
31
Phases d’exécution d’un programme
Quatrième instruction : Store R3, 14
Processeur
Phase Décodage
PC 00
08 Mémoire
00 Load R1, 10
02 Load R2, 12
R1 20 04 Add R3, R1, R2
Adresses 06 Store R3, 14
R2 25 08
R3 45 10 20
12 25
Adressage direct 14
Données
Store Zone
mémoire
RI 0001 01 11 00 00 1110
R3
32
Phases d’exécution d’un programme
Quatrième instruction : Store R3, 14
Processeur
Phase Exécution
PC 00
08 Mémoire
00 Load R1, 10
14
02 Load R2, 12
R1 20 Adresses 04 Add R3, R1, R2
06 Store R3, 14
R2 25 Ecriture 08
R3 45 45 10 20
12 25
14 45
Données
RI 0001 01 11 00 00 1110
33
Phases d’exécution d’un programme
Le processeur dispose d’une fréquence d’horloge de 1 GHz. La mémoire à un
temps de cycle de 20 ns (en lecture ou en écriture) . On suppose que chaque phase
est enclenchée par un top d’horloge. Indiquez le nombre de cycles mémoire et le
temps d’exécution de chaque instruction du programme suivant
Nombre de cycles Temps d’exécution
mémoire
LOAD R1, 10 Deux cycles 41 ns
LOAD R2, 12 Deux cycles 41 ns
ADD R3, R1, R2 Un cycle 22 ns
STORE R3, 14 Deux cycles 41 ns
On remarque que quand les opération s’effectue dans les registres l’exécution est
plus rapide
34
Le Pipeline
Pour accélérer l’exécution des instructions, un processeur peut lancer plusieurs
phases en même temps
Dans les exemples précédents, il peut par exemple:
1. Exécuter la phase recherche de la première instruction
2. Exécuter la phase décodage de la première instruction et la phase recherche
de la deuxième instruction en même temps
3. Lancer la phase recherche de la troisième instruction, décodage de la
deuxième instruction et la phase exécution de la première instruction en
même temps
Recherche Décodage Exécution
E1 Load R1, 10
E2 Load R2, 12 Load R1, 10
E3 Add R3, R1, R2 Load R2, 12 Load R1, 10
Temps
35
Harvard vs Von Neuman
Architecture de Von Neuman
Dans les architectures classiques de type (Von Neuman), le processeur dispose d’un
seul bus de données et d’un seul bus d’adresses
Les programmes et les données se trouvent dans la même mémoire
Ceci peut être une limite dans certains cas :
Il est impossible d’exécuter la phase de recherche et d’exécution en Pipeline
car il y a un conflit de bus pour certaines instructions (Load et Store)
Dans les systèmes embarqués, le programme est mis dans une mémoire
morte (ou non volatile) alors que les données sont temporaires
Architecture de Harvard
Dans les architectures de Harvard, le processeur distingue entre la mémoire contenant
les programme et la mémoire de données
Il dispose de deux bus séparés, l’un pour la mémoire programmes et l’autre pour la
mémoire de données
La taille des bus peut être différente
36
Harvard vs Von Neuman
Architecture de Von Neuman
Mémoire
Processeur Programmes et
de données
Architecture de Harvard
Mémoire Mémoire
Processeur programmes
données
37
Architectures CISC vs RISC
Architecture CISC (Complex Instruction Set Computer)
Processeur à jeu d’instruction complexe
Dispose généralement d’un grand nombre d’instructions pouvant réaliser des
opérations complexes
Les instructions ont des tailles variables et effectuent les opérations soit sur les
registres, soit sur des opérandes se trouvant en mémoire
Les phases d’exécution sont variables d’une instruction à l’autre
Fournis un grand nombre de modes d’adressages
Architecture RISC (Reduced Instruction Set Computer)
Processeur à jeu d’instruction réduit
Dispose de peu d’instructions effectuant des opérations simples
Deux instructions seulement manipulent la mémoire (Load et Store). Les autres
instructions travaillent sur les registres
Très peu de modes d’adressage.
Un grand nombre de registres
38
Architectures CISC vs RISC
Les architectures CISC permettent de développer facilement des applications en
assembleur et des compilateurs de langages évolués
Toutefois, les processeurs sont encombrés par la logique nécessaire pour réaliser des
instructions complexes
Les techniques d’optimisation comme le Pipline sont difficiles à réaliser sur des
instructions de taille variable
Les processeurs CISC sont lents, consomment beaucoup et coutent plus cher
Pour les processeur RISC, par contre, la complexité est déplacée du processeur au
programmeur
Le programmeur doit se « débrouiller » pour réaliser des opérations complexes avec
un petit jeu d’instructions simples
Toutefois, le processeur et plus performant avec un coût et une consommation réduite
39
Mode d’exécution du processeur
Les processeurs modernes permettent de séparer le code appartenant au système
d’exploitation du code appartenant au programme utilisateur
Quand le processeur exécute un programme du système d’exploitation il se trouve
dans un mode dit protégé
Quand il est dans ce mode, il peut accéder à n’importe quelle zone mémoire et
utiliser des instructions privilégiées
Par contre quand le processeur est dans le mode utilisateur, il ne peut accéder qu’à
une partie de la mémoire et exécuter uniquement les instructions non privilégiées
Le mode du processeur est activé en général par un bit (ou plusieurs bits) dit bit
mode dans le registre d’état
Mode
O N Z
0 : Utilisateur
1: Privilégié
40
Les interruptions et les exceptions
Dans son fonctionnement normal, le processeur exécute les instructions l’une
après l’autre
Le compteur ordinal (PC) s’incrémente régulièrement pour pointer vers l’instruction
prochaine sauf dans le cas d’une instruction de branchement, auquel cas, le PC reçoit
l’adresse de branchement indiquée dans l’instruction
Toutefois, il existe des situations dans lesquelles le processeur interrompt
l’exécution normale du programme et se branche vers un autre programme
Ces événements sont :
La réinitialisation (le signal RESET)
Les interruptions
Les exceptions
Les appels système
41
Interruption vs Exception
Les interruptions surviennent de façon asynchrones. Elles sont
commandées par le matériel ou par le système (interruption
système). Les interruptions n'ont aucune relation avec les
instructions en cours d'exécution (interruption externe) .
Les exceptions sont provoquées par l’exécution d’un programme
qui amènent à interrompre celui-ci , soit pour remédier à une
anomalie de fonctionnement, soit pour arrêter définitivement le
programme. Comme exemple d’exception on cite : la division par
zero, tentative d'utilisation d'instructions réservées, erreur
d'adressage.
42