Cours Systemes Embarques
Cours Systemes Embarques
Cours Systemes Embarques
Plan
Cours:
₋ Chapitre 2: Le pipeline
₋ Chapitre 3: L’ordonnancement
1. Architecture interne
Les différents constituants d’un microprocesseur ( µp) peuvent être regroupés dans deux
blocs principaux; l'unité de traitement et l'unité de commande.
4
Chapitre 1: Généralités sur les microprocesseurs
1. Architecture interne
1.2 Unité de traitement: Elle permet d’exécute les instructions.
5
Chapitre 1: Généralités sur les microprocesseurs
1. Architecture interne
1.3 Le fonctionnement basique d’une opération de calcul
(1)
(2)
CPU Mémoire
(3) (4)
6
Chapitre 1: Généralités sur les microprocesseurs
1. Architecture interne
1.4 Von Neuman
Mémoire
CPU programme et
BUS données
7
Chapitre 1: Généralités sur les microprocesseurs
1. Architecture interne
1.4 Harvard
Mémoire Mémoire
programme BUS CPU BUS données
8
Chapitre 1: Généralités sur les microprocesseurs
1. Architecture interne
1.5 Exemple: Les processeurs ARM Cortex-M
Les processeurs ARM Cortex se déclinent en une large gamme d’architectures et de cœurs très
populaires dans le monde de l’embarqué. Ils sont regroupés en trois familles principales :
− Le Cortex-A (Application): C’est une gamme de processeurs développée pour des tâches
nécessitant des calculs complexes. Ces processeurs supportent les jeux d’instructions
ARM, Thumb et Thumb-2.
− Le Cortex-M (eMbedded): Cette gamme est destinée aux microcontrôleurs qui
nécessitent une faible consommation d’énergie et un bas prix de vente. Cette gamme
supporte seulement le jeu d’instructions Thumb-2.
− Le Cortex-R (Real-time): Les processeurs de cette gamme offrent de hautes
performances pour les systèmes temps réel dans lesquels la fiabilité et le déterminisme
sont essentiels. Ils supportent les jeux d’instructions ARM, Thumb et Thumb-2.
9
Chapitre 1: Généralités sur les microprocesseurs
1. Architecture interne
1.5 Exemple: Les processeurs ARM Cortex-M
10
Chapitre 1: Généralités sur les microprocesseurs
1. Architecture interne
1.5 Exemple: Les processeurs ARM Cortex-M
L’espace mémoire est divisé en régions distinctes prédéfinies pour le code, les
le Cortex-M possède ainsi plusieurs bus, ce qui lui permet d’effectuer des opérations
en parallèle.
Le mode d’accès non aligné aux données lui assure une meilleure utilisation de la
11
Chapitre 1: Généralités sur les microprocesseurs
1. Architecture interne
1.5 Exemple: Les processeurs ARM Cortex-M
12
Chapitre 1: Généralités sur les microprocesseurs
2. Le traitement des instructions
2.1 Organisation d’une instruction:
La taille d'une instruction peut varier, elle est généralement de quelques octets (1 à 8) et
dépend de l'architecture du processeur.
13
Chapitre 1: Généralités sur les microprocesseurs
2. Le traitement des instructions
14
Chapitre 1: Généralités sur les microprocesseurs
2. Le traitement des instructions
Architecture vectorielle
Architectures dataflow
15
Chapitre 1: Généralités sur les microprocesseurs
2. Le traitement des instructions
2.1 Codage de l’instruction
Le format d’une instruction peut ne pas être le même pour toutes les instructions.
Le champ opérande peut être découpé en plusieurs champs.
16
Chapitre 1: Généralités sur les microprocesseurs
2. Le traitement des instructions
2.1 Codage de l’instruction
2.1.1 Machines à 3 adresses
Exemple:
ADD A, B, C ( C B + C )
- Dans ce type des machines la taille de l’instruction est grande.
- Pratiquement il n’existe pas des machines de ce type.
17
Chapitre 1: Généralités sur les microprocesseurs
2. Le traitement des instructions
2.1 Codage de l’instruction
2.1.1 Machines à 2 adresses
Exemple:
ADD A, B (C B + C)
18
Chapitre 1: Généralités sur les microprocesseurs
2. Le traitement des instructions
2.1 Codage de l’instruction
2.1.1 Machines à 1 adresse
Dans ce type des machines pour chaque instruction il faut préciser uniquement l’adresse
du deuxième opérande .
Le résultat est mis dans le registre accumulateur.
Exemple:
ADD A (ACC (ACC) + A)
19
Chapitre 1: Généralités sur les microprocesseurs
3. Les modes d’adressages
20
Chapitre 1: Généralités sur les microprocesseurs
3. Les modes d’adressages
3.1 Adressage direct
ADD 150
30
150
21
Chapitre 1: Généralités sur les microprocesseurs
3. Les modes d’adressages
3.2 Adressage indirect
200
150
40 200
Exemple :
-Initialement l’accumulateur contient la valeur 20
-Il faut récupérer l’adresse de l’adresse (150).
-Récupérer l’adresse de l’opérande à partir de l’adresse 150 ( la valeur 200 )
-Récupérer la valeur de l’opérande à partir de l’adresse 200 ( la valeur 40 )
-Additionner la valeur 40 avec le contenu de l’accumulateur (20) et nous allons avoir la valeur 60.
22
Chapitre 1: Généralités sur les microprocesseurs
3. Les modes d’adressages
Exemple:
ADD 150
ADD 150
23
Chapitre 2: Le pipeline
24
Chapitre 2: Le pipeline
2. Étages du pipeline
Pour mettre en œuvre un pipeline, la première tâche est de découper l'exécution des
instructions en plusieurs étapes.
Chaque étape est prise en charge par un étage du pipeline.
Si le pipeline possède n étages, il y a n instructions en cours d'exécution simultanée,
chacune dans une étape différente.
→Le facteur d'accélération est donc le nombre n d'étages.
Chacune des étapes du pipeline est implémentée par un circuit intégré indépendant,
appelé étage.
Le nombre d'étages d'un pipeline est appelé sa profondeur..
25
Chapitre 2: Le pipeline
2. Étages du pipeline
26
Chapitre 2: Le pipeline
2. Étages du pipeline: Pipeline RISC classique
Exemple
→Chacune des instructions commence son exécution un cycle après l'instruction précédente et
passe par les cinq étapes d'exécution pendant cinq cycles consécutifs.
27
Chapitre 2: Le pipeline
2. Étages du pipeline: Pipeline RISC classique
28
Chapitre 2: Le pipeline
2. Étages du pipeline: Pipeline RISC classique
2.1 Lecture de l'instruction (Instruction Fetch: IF)
29
Chapitre 2: Le pipeline
2. Étages du pipeline: Pipeline RISC classique
2.2 Décodage de l'instruction (Instruction Decode: ID )
Préparation des arguments de l'instruction pour
l'étape suivante où ils seront utilisés.
Les arguments sont placés dans deux registres A et B.
₋ Si l'instruction utilise le contenu de un ou deux registres,
ceux-ci sont lus et leurs contenus sont rangés en A et B.
₋ Si l'instruction contient une valeur immédiate, celle-ci est
étendue (signée ou non signée) à 16 bits et placée dans
le registre B.
₋ Pour les instructions de branchement avec offset, le
contenu de PC est rangé en A et l'offset étendu dans B.
₋ Pour les instructions de branchement avec un registre, le
contenu de ce registre est rangé en A et B est rempli avec
0.
₋ Les instructions de rangement (ST) mettent le contenu du
registre qui doit être transféré en mémoire dans le
registre C.
30
Chapitre 2: Le pipeline
2. Étages du pipeline: Pipeline RISC classique
Cette étape est uniquement utile pour les instruction de chargement et de rangement.
effectué.
Dans le cas d'un chargement, la valeur lue en mémoire est mise dans le registre R pour
l'étape suivante.
32
Chapitre 2: Le pipeline
2. Étages du pipeline: Pipeline RISC classique
Le résultat des opérations arithmétiques et logiques est rangé dans le registre destination.
La valeur lue en mémoire par les instructions de chargement est aussi rangée dans le
registre destination.
33
Chapitre 2: Le pipeline
3. Gain en performances
nk
G
n k 1
34
Chapitre 2: Le pipeline
4. Temps de cycle des processeurs pipelinés
Lorsqu’un processeur ne peut pas être divisé en étages de latences égales, le temps de cycle
de l’horloge du processeur est égal à la latence du plus long étage du pipeline ajoutée au délai
de latch du pipeline.
→ Le temps de cycle doit être suffisamment long pour que l’étage le plus long se termine et
stocke son résultat dans le latch qui le sépare de l’étage suivant.
Exercice:
Un processeur non pipeliné possède un temps de cycle de 30 ns.
1- Quel est le temps de cycle (Tc) d’une version pipelinée du processeur avec 5 étages de
pipeline également divisés, si chaque latch du pipeline possède une latence de 1 ns ?
2- Qu’en serait-il le Tc si le processeur divisé en 60 étages de pipeline ?
Solution:
1- Le temps de cycle pour le pipeline à 5 étages: Tc = (30ns/5) + 1ns = 7 ns.
2- Le temps de cycle pour le pipeline à 60 étages: Tc = (30ns/60) + 1 ns = 1,5 ns.
36
Chapitre 2: Le pipeline
5. Latence de pipeline
La latence d’un pipeline correspond à la quantité de temps qu’une instruction prend pour le
traverser, c'est-à-dire au produit du nombre d’étages du pipeline par le temps de cycle:
Latence d’un pipeline = nombre d’étages * temps de cycle
Solution:
Temps de cycle du processeur pipeliné à 5 étages : 6 ns, et à 50 étages 1,5 ns .
Latence du pipeline à 5 étages = 6 x 5 = 30 ns
Latence du pipeline à 50 étages = 1,5 x 50 = 75 ns
37
Chapitre 2: Le pipeline
6. Aléas de pipeline
aléas structurels: Ce type de problèmes survient lorsque deux instructions dans des étages
différents du pipeline nécessitent la même ressource.
La solution générale pour résoudre un aléa est de bloquer l'instruction qui pose problème et
toutes celles qui suivent dans le pipeline jusqu'à ce que le problème se résolve.
De manière pratique, la bulle correspond à l'exécution de l'instruction NOP qui ne fait rien.
39
Chapitre 2: Le pipeline
6. Aléas de pipeline
40
Chapitre 2: Le pipeline
6. Aléas de pipeline
41
Chapitre 2: Le pipeline
6. Aléas de pipeline
42
Chapitre 2: Le pipeline
6. Aléas de pipeline
Le problème est que le résultat de la première instruction est écrit dans le registre R1 après la
lecture de ce même registre par la seconde instruction.
La valeur utilisée par la seconde instruction est alors erronée.
43
Chapitre 2: Le pipeline
6. Aléas de pipeline
l'instruction) de celle-ci.
Il suffit alors de le fournir en entrée de l'additionneur à la place de la valeur lue dans R1 par la
44
Chapitre 2: Le pipeline
6. Aléas de pipeline
Ici, le résultat de la première instruction est écrit dans le registre R1 après la lecture de ce même registre
par la seconde instruction.
Par contre, le résultat n'est pas disponible avant l'étape MA (accès mémoire) de la première instruction.
Comme cette étape a lieu après l'étape IE de la seconde instruction, il ne suffit pas d'ajouter un chemin de
données pour faire disparaître l'aléa. Il faut en outre retarder la seconde instruction.
Ceci introduit une bulle dans le pipeline.
45
Chapitre 2: Le pipeline
6. Aléas de pipeline
46
Chapitre 2: Le pipeline
6. Aléas de pipeline
47
Chapitre 2: Le pipeline
6. Aléas de pipeline
48
Chapitre 2: Le pipeline
6. Aléas de pipeline
Exemples
• A
₋ ADD R1, R2, R3 // R1 = R2 + R3
₋ STORE R1, 1000 // C(1000) = R1
• B
₋ MOV R1, #1000 // R1 = 1000
₋ JUMP R1 // Saut
49
Chapitre 3: Ordonnancement dans le temps-réel
1. Introduction
tâches.
d’exécution, si un nouveau processus de priorité plus élevée est inséré dans la file des Prêts.
50
1. Introduction
Objectifs d’ordonnancement
6. Favoriser les processus les plus prioritaires (éviter le problème d’inversion des priorités).
PAPS: le Premier Arrivé est le Premier Servi (ou FCFS: First-Come First-Served)
• Quand un processus est prêt à s’exécuter, il est mis en queue de la file d’attente des
processus prêts
• Quand le processeur devient libre, il est alloué au processus se trouvant en tête de file
• Le processus élu relâche le processeur s’il se termine ou s’il demande une entrée sortie.
P1, P2 etP3 sont 3 processus dont le temps d’exécution respectifs P1=5, P2=6 et P3=2
Temps 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
Processus P1 P1 P1 P1 P1 P2 P2 P2 P2 P2 P2 P3 P3
Démarrage P1 P2 P3
52
2. Algorithmes d’ordonnancement dans les systèmes classiques
Processus
P5
P4
P3
P2
P1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
temps
54
2. Algorithmes d’ordonnancement dans les systèmes classiques
Application:
Processus Temps de séjour
P1 3-0=3
P2 9-1=8
P3 13-4=9
P4 15-6=9
P5 16-7=9
Application:
TMS= (3+8+9+9+9) / 5 = 7.6 55
2. Algorithmes d’ordonnancement dans les systèmes classiques
Application:
TMA = 22/5 = 4.4
56
2. Algorithmes d’ordonnancement dans les systèmes classiques
2.2 Algorithme d'ordonnancement Shortest Job First (SJF)
L’ordonnanceur choisit, parmi le lot de processus à exécuter, le plus court (plus petit temps
d'exécution).
Exemple: P1, P2 etP3 sont 3 processus dont le temps d’exécution respectifs P1=5, P2=6 et
P3=2 Processus
P3
P2
P1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Temps
Exemple: P1, P2 et P3 sont 3 processus dont le temps d’exécution respectifs P1=5, P2=6 et
P3=2.
Processus
P3
P2
P1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Temps
58
2. Algorithmes d’ordonnancement dans les systèmes classiques
59
2. Algorithmes d’ordonnancement dans les systèmes classiques
Processus
P3
P2
P1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Temps
60
2. Algorithmes d’ordonnancement dans les systèmes classiques
2.6 Algorithme Shortest Remaining Time (SRT)
• Si le processus ne se termine pas au bout de son quantum, son exécution est suspendue.
– Les processus qui arrivent ou qui passent de l‘état bloque a l‘état prêt sont insères en
queue de file.
– Pour éviter la famine, un nouveau processus est insérer en fin de file, pour ne pas
Quantum = 4ms
Processus
P3
P2
P1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Temps
63
2. Algorithmes d’ordonnancement dans les systèmes classiques
2.7 Algorithme Round Robin(RR)
l'efficacité du processeur.
mode interactif.
64
2. Algorithmes d’ordonnancement dans les systèmes classiques
Solution :
– Evidemment, il peut être réveillé par une tâche prioritaire qui devient prête.
65
3. Ordonnancement temps-réel
66