SlideShare une entreprise Scribd logo
1  sur  66
Module: Systèmes embarqués
Plan
Cours:
₋ Chapitre 1: Généralités sur les microprocesseurs
₋ Chapitre 2: Le pipeline
₋ Chapitre 3: L’ordonnancement
₋ Chapitre 4: OS temps-réel sur STM32
₋ Programmation C pour les systèmes embarqués
Travaux pratiques:
̵ TP1 : Prise en main du logiciel Keil µVision
̵ TP2 : Manipulation des ports d’entrée-sortie (GPIO) de la carte STM32F429-DISCOVERY
̵ TP3 : Configuration et manipulation de l’afficheur LCD via le bus SPI
̵ TP4 : Conception et ajout d’une interface graphique sur l’afficheur LCD
̵ TP5 : Configuration et manipulation de l’écran tactile via le bus I2C
̵ TP6 : Lecture des données à partir de périphérique de stockage USB
2
3
1. Architecture interne
UAL: Unité Arithmétique et Logique.
PC : Compteur Ordinal (Programme
Counter).
Unité de commande
Unité de traitement
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.
Chapitre 1: Généralités sur les microprocesseurs
4
1. Architecture interne
1.1 Unité de commande: Elle permet de séquencer le déroulement des instructions.
Compteur Ordinal (PC) : contient toujours l’adresse de la
prochaine instruction à exécuter.
Le décodeur d'instruction : Le mot binaire (instruction)
est décodé pour savoir à quelle action correspond
l’instruction.
Bloc logique de commande (séquenceur) : organise
l'exécution des instructions au rythme de l’horloge. Il
élabore tous les signaux de synchronisation du
microprocesseur en fonction de l’instruction qu’il a à
exécuter.
Chapitre 1: Généralités sur les microprocesseurs
5
1. Architecture interne
1.2 Unité de traitement: Elle permet d’exécute les instructions.
L’accumulateur : C’est un registre de travail qui sert à stocker
le résultat des opérations réalisées par L’UAL.
L’Unité Arithmétique et Logique (UAL) est un circuit
complexe qui assure les fonctions logiques (ET, OU,
comparaison, décalage, etc…) ou arithmétique (addition,
soustraction…).
Le registre d'état : Chacun des bits de ce registre dépend du
résultat de la dernière opération effectuée par l’UAL.
Exemple: Bit de retenue (carry : C), débordement (overflow:
OV ou V), Zéro (Z) ...
Chapitre 1: Généralités sur les microprocesseurs
6
1. Architecture interne
1.3 Le fonctionnement basique d’une opération de calcul
(1) Charger une instruction depuis la mémoire
(2) Charger les opérandes depuis la mémoire
(3) Effectuer les calculs
(4) Stocker le résultat en mémoire
CPU Mémoire
(1)
(2)
(4)
(3)
Chapitre 1: Généralités sur les microprocesseurs
7
1. Architecture interne
1.4 Von Neuman
CPU
Mémoire
programme et
données
BUS
 Un seul chemin d'accès à la mémoire
- Un bus de données (programme et données),
- Un bus d’adresse (programme et données)
 Architecture des processeurs d’usage général
 Goulot d'étranglement pour l'accès à la mémoire
Chapitre 1: Généralités sur les microprocesseurs
8
1. Architecture interne
1.4 Harvard
CPU
Mémoire
programme BUS
Mémoire
données
BUS
 Séparation des mémoires programme et données
- Un bus de données programme,
- Un bus de données pour les données,
- Un bus d’adresse programme,
- Un bus d’adresse pour les données.
 Meilleure utilisation du CPU :
Chargement du programme et des données en parallèle
Chapitre 1: Généralités sur les microprocesseurs
9
1. Architecture interne
1.5 Exemple: Les processeurs ARM Cortex-M
Chapitre 1: Généralités sur les microprocesseurs
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.
10
1. Architecture interne
1.5 Exemple: Les processeurs ARM Cortex-M
Chapitre 1: Généralités sur les microprocesseurs
 Contrairement aux gammes Cortex-A et Cortex-R, la gamme Cortex-M est un cœur
complet devenu un standard dans le domaine des processeurs.
 Il s’appuie sur une architecture système bien définie qui comprend:
- une gestion des interruptions,
- une horloge système,
- un système de débogage
- un espace d’adressage mémoire standardisé.
11
1. Architecture interne
1.5 Exemple: Les processeurs ARM Cortex-M
Chapitre 1: Généralités sur les microprocesseurs
 L’espace mémoire est divisé en régions distinctes prédéfinies pour le code, les
données, les périphériques et le système.
 S’appuyant sur une architecture de Harvard,
 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
mémoire et un accès plus efficace aux registres des périphériques
12
1. Architecture interne
1.5 Exemple: Les processeurs ARM Cortex-M
Chapitre 1: Généralités sur les microprocesseurs
13
2. Le traitement des instructions
2.1 Organisation d’une instruction:
 Le microprocesseur ne comprend qu’un certain nombre d’instructions qui sont codées en
binaire.
 Une instruction est composée de deux éléments :
- Le code opération : c’est un code binaire qui correspond à l’action à effectuer
par le processeur.
- Le champ opérande : donnée ou bien adresse de la donnée.
 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.
Chapitre 1: Généralités sur les microprocesseurs
14
Etape 1: Recherche de l’instruction en mémoire
 La valeur du PC est placée sur le bus d'adresse, et l'unité de commande émet un ordre de
lecture de la mémoire.
 Après le temps d'accès à la mémoire, le contenu de la case mémoire sélectionnée (instruction)
est disponible sur le bus des données et arrive à l’entrée du décodeur.
Etape 2: Décodage et recherche de l’opérande
Si l'instruction nécessite une donnée en provenance de la mémoire, l'unité de commande
récupère sa valeur sur le bus de données en faisant un nouvel accès mémoire. La donnée arrive à
l’entrée de l’ALU.
Etape 3: Exécution de l’instruction
 L’ALU réaliser l’opération que le séquenceur lui demande. Les drapeaux sont positionnés
(registre d'état).
 Le PC est incrémenté pour indiquer l'instruction suivante
2. Le traitement des instructions Chapitre 1: Généralités sur les microprocesseurs
15
2. Le traitement des instructions
Actuellement il existe plusieurs architectures des microprocesseurs:
 Architecture CISC (Complex Instruction Set Computer),
 Architecture RISC (Reduced Instruction Set Computer)
 Architecture VLIW (Very long instruction word)
 Architecture vectorielle
 Architectures dataflow
Chapitre 1: Généralités sur les microprocesseurs
16
2. Le traitement des instructions
2.1 Codage de l’instruction
 Les instructions et leurs opérandes (données) sont stockés dans la mémoire.
 La taille d’une instruction (nombre de bits nécessaires pour la représenter en mémoire)
dépend du type de l’instruction et du type de l’opérande.
- Code opération (code instruction): un code sur N bits qui indique quelle instruction.
- Le champ opérande: qui contient la donnée ou la référence (adresse) à la donnée.
 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.
Code opération Opérande
N bits K bits
Chapitre 1: Généralités sur les microprocesseurs
17
2. Le traitement des instructions
2.1 Codage de l’instruction
2.1.1 Machines à 3 adresses
 Dans ce type de machine pour chaque instruction il faut préciser:
- l’adresse du premier opérande ,
- l’adresse du deuxième opérande ,
- et l'emplacement du résultat.
 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.
Code opération Opérande 1 Opérande 2 Résultat
Chapitre 1: Généralités sur les microprocesseurs
18
2. Le traitement des instructions
2.1 Codage de l’instruction
2.1.1 Machines à 2 adresses
 Dans ce types de machine pour chaque instruction il faut préciser:
- l’adresse du premier opérande ,
- et l’adresse du deuxième opérande .
 L’adresse de résultat est implicitement l’adresse du deuxième opérande.
 Exemple:
ADD A, B (C  B + C)
Code opération Opérande 1 Opérande 2
Chapitre 1: Généralités sur les microprocesseurs
19
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)
Code opération Opérande 1 Opérande 2
Chapitre 1: Généralités sur les microprocesseurs
20
 De nombreuses instructions font référence à des données se trouvant à différents
endroits de la machine : registres internes de µp, pile d'exécution, EEPROM,
RAM, ports d'E/S. On appelle modes d'adressage les différentes façons de spécifier les
endroits où se trouvent les données dont on a besoin.
 Les modes d’adressage les plus courant sont :
- Adressage direct
- Adressage indirect
- Adressage immédiat
3. Les modes d’adressages Chapitre 1: Généralités sur les microprocesseurs
21
3.1 Adressage direct
 Le champ opérande de l’instruction contient l’adresse de l’opérande (emplacement en
mémoire)
 Pour réaliser l’opération il faut récupérer (lire) l’opérande à partir de la mémoire
ACC  (ACC) + (ADR)
 Exemple: on suppose que l’accumulateur contient la valeur 20.
À la fin de l’exécution on obtient la valeur 50 ( 20+30).
3. Les modes d’adressages
ADD 150
30 150
Chapitre 1: Généralités sur les microprocesseurs
22
3.2 Adressage indirect
3. Les modes d’adressages
 La champs d’adresse contient l’adresse de l’adresse de l’opérande.
 Pour réaliser l’opération il faut :
– Récupérer l’adresse de l’opérande à partir de la mémoire.
– Par la suite il faut chercher l’opérande à partir de la mémoire.
ACC  (ACC) + ((ADR))
 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.
ADD 150
200
40
150
200
Chapitre 1: Généralités sur les microprocesseurs
23
3.3 Adressage immédiat
 L’opérande existent dans le champ adresse de l’instruction
 Exemple:
ADD 150
- Cette commande va avoir l’effet suivant : ACC  (ACC) + 150
- Si le registre accumulateur contient la valeur 200 alors après l’exécution son contenu sera
égale à 350.
3. Les modes d’adressages
Code opération Opérande
ADD 150
Chapitre 1: Généralités sur les microprocesseurs
24
Chapitre 2: Le pipeline
1. Définition d’un pipeline
 Technique utilisée pour optimiser le temps d’exécution d’un processus répétitif.
 Avec un pipeline, le processeur peut commencer à exécuter une nouvelle instruction sans
attendre que la précédente soit terminée.
 Une instruction est découpée dans un pipeline en petits morceaux appelés étage de
pipeline.
 La technique du pipeline exploite le parallélisme entre les instructions d’un flot séquentiel
d’instructions.
Cycles d'horloge
Programme
Instruction 1
Instruction 2
Instruction 3
Instruction 5
Instruction 4
1 2 3 4 5 6 7 8 9
25
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..
Chapitre 2: Le pipeline
26
2. Étages du pipeline
Exemples de profondeur de pipeline
Chapitre 2: Le pipeline
27
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.
Chapitre 2: Le pipeline
28
2. Étages du pipeline: Pipeline RISC classique
 Créé par David Patterson, inventeur des processeurs RISC.
 5 étapes sont nécessaires pour traiter une instruction :
1.Lecture de l'instruction (Instruction Fetch: IF)
2.Décodage de l'instruction (Instruction Decode: ID )
3.Exécution de l'instruction (Instruction Execution: EX)
4.Accès à la mémoire (Memory Access: MEM)
5.Rangement du résultat (Write Back: WB)
Chapitre 2: Le pipeline
29
2. Étages du pipeline: Pipeline RISC classique
2.1 Lecture de l'instruction (Instruction Fetch: IF)
 La prochaine instruction à exécuter est chargée dans le pipeline à partir de la case
mémoire pointée par le compteur de programme PC dans le registre d'instruction (IR).
 Le compteur de programme est incrémenté pour pointer sur l'instruction suivante.
Chapitre 2: Le pipeline
30
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.
2. Étages du pipeline: Pipeline RISC classique Chapitre 2: Le pipeline
31
2. Étages du pipeline: Pipeline RISC classique
2.3 Exécution de l'instruction (Instruction Execution: EX)
 Cette étape utilise l'unité arithmétique et logique (UAL) pour
combiner les arguments.
 L'opération précise réalisée par cette étape dépend du type de
l'instruction.
₋ Instruction arithmétique ou logique (ADD, AND et NOT): Les
deux arguments contenus dans les registres A et B sont
fournis à l'unité arithmétique et logique pour calculer le
résultat.
₋ Instruction de chargement et rangement (LD et ST): Le calcul
de l'adresse est effectué à partir de l'adresse provenant du
registre A et de l'offsetcontenu dans le registre B.
₋ Instruction de branchement (BR, JMP, JSR, JSRR et TRAP):
• Pour les instructions contenant un offset, l'addition avec
le contenu du PC est effectuée à cette étape.
• Pour les instructions utilisant un registre, le contenu du
registre est juste transmis.
Chapitre 2: Le pipeline
32
2. Étages du pipeline: Pipeline RISC classique
2.4 Accès à la mémoire (Memory Access: MA)
 Cette étape est uniquement utile pour les instruction de chargement et de rangement.
₋ Pour les instructions arithmétiques et logiques ou les branchements, rien n'est
effectué.
₋ L'adresse du mot mémoire est contenue dans le registre R.
 Dans le cas d'un rangement, la valeur à ranger provient du registre C.
 Dans le cas d'un chargement, la valeur lue en mémoire est mise dans le registre R pour
l'étape suivante.
Chapitre 2: Le pipeline
33
2. Étages du pipeline: Pipeline RISC classique
2.5 Rangement du résultat (Write Back: WB)
 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.
 Les instructions de branchement rangent la nouvelle adresse dans PC.
Chapitre 2: Le pipeline
34
3. Gain en performances Chapitre 2: Le pipeline
 Pour exécuter n instructions nécessitant chacune k cycles d’horloge, il faut :
• n x k : cycles d’horloge pour une exécution séquentielle
• k : cycles pour la première instruction, puis (n-1) cycles pour les (n-1) instructions
restantes si on utilise un pipeline à k étages.
 Gain :
1
n k
G
n k


 
 Si n est grand par rapport à k, on divise le temps d’exécution par k.
35
4. Temps de cycle des processeurs pipelinés Chapitre 2: Le pipeline
 Le temps de cycle d’un processeur pipeliné dépend de quatre facteurs :
₋ Le temps de cycle de la version non pipelinée du processeur ,
₋ Le nombre d’étage du pipeline ,
₋ La manière dont la logique du chemin de données est répartie entre les étages (si cette
répartition est équilibrée) ,
₋ La latence de latch du pipeline (le temps de stabilisation après le passage dans chaque
étage).
 Si la logique peut être répartie de manière égale entre les étages du pipeline, la période
d’horloge du processeur pipeliné est :
Temps de cycle
non pipeliné
Temps de cycle = +latence de latch du pipeline
pipeliné Nombre d'étages du pipeline
→ Si le nombre d’étages du pipeline augmente, la latence de latch correspond à une fraction
de plus en plus grande du temps de cycle.
→ Ce qui limite progressivement l’intérêt de diviser le processeur en un plus grand nombre
d’étages de pipeline.
36
4. Temps de cycle des processeurs pipelinés Chapitre 2: Le pipeline
 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.
37
5. Latence de pipeline Chapitre 2: Le 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:
 Exercice: Un processeur non pipeliné possédant un temps de cycle de 25 ns est divisé de
manière égale en 5 étages de pipeline utilisant des latches d’une latence de 1 ns chacun.
₋ quelle est la latence totale du pipeline ?
₋ quelle est la latence si le processeur était divisé en 50 étages de pipeline ?
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
38
6. Aléas de pipeline
Le bon fonctionnement du pipeline peut être perturbé par plusieurs événements
appelés aléas (problèmes). Ces événements sont classés en trois catégories:
 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.
 aléas de données: Ce type de problèmes survient lorsqu'une instruction nécessite une
donnée qui n'a pas encore été calculée par une instruction précédente. Ceci provient du fait
que les instructions lisent leurs arguments dans les premiers étages du pipeline alors
qu'elles produisent leur résultat dans les derniers étages.
 aléas de contrôle: Ce type de problèmes survient dès qu'une instruction de branchement
est exécutée. Si le branchement est effectué, les instructions qui suivent dans le pipeline ne
doivent pas être exécutée. Ceci provient du fait que la nouvelle adresse est calculée alors
que les instructions qui suivent ont déjà été chargées
Chapitre 2: Le pipeline
39
 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.
 On voit alors apparaître des bulles dans le Pipeline
 De manière pratique, la bulle correspond à l'exécution de l'instruction NOP qui ne fait rien.
6. Aléas de pipeline Chapitre 2: Le pipeline
40
4.1 Les aléas structurels
Considérons par exemple le morceau de code suivant:
₋ LDR R7,R6,0
₋ ADD R6,R6,1
₋ ADD R0,R0,1
₋ ADD R1,R1,1
Le déroulement de l'exécution des quatre premières instructions dans le pipeline devrait être le
suivant.
6. Aléas de pipeline Chapitre 2: Le pipeline
41
4.1 Les aléas structurels
 L'étape MA (accès mémoire) de l'instruction LDR R7,R6,0 a lieu en même temps que l'étape IF
(chargement de l'instruction) de l'instruction ADD R1,R1,1.
 Ces deux étapes nécessitent simultanément l'accès à la mémoire.
 Il s'agit d'un aléa structurel. Comme cela est impossible, l'instruction ADD R1,R1,1 et celles qui
suivent sont retardées d'un cycle.
6. Aléas de pipeline Chapitre 2: Le pipeline
42
4.1 Les aléas structurels
 Le conflit d'accès à la mémoire se produit à chaque fois qu'une instruction de chargement ou
de rangement est exécutée.
 Celle-ci rentre systématiquement en conflit avec le chargement d'une instruction qui a lieu à
chaque cycle d'horloge.
 Ce problème est généralement résolu en séparant la mémoire où se trouvent les instructions
de celle où se trouvent les données. Ceci est réalisé au niveau des caches de niveau 1.
 Le microprocesseur doit alors avoir deux bus distincts pour accéder simultanément aux deux
caches.
 Comme le microprocesseur LC3 est très simple, les seuls aléas structurels possibles sont ceux
dûs à des accès simultanés à la mémoire.
 Les registres sont utilisés aux étapes ID (décodage) et WB (rangement du résultat) mais les
premiers accès sont en lecture et les seconds en écriture. Ceci ne provoque pas d'aléa.
6. Aléas de pipeline Chapitre 2: Le pipeline
43
4.2 Les aléas de données
Considérons le morceau de code suivant:
ADD R1,R1,1
ADD R0,R1,R2
Le déroulement de l'exécution de ces deux instructions dans le pipeline devrait être le suivant.
6. Aléas de pipeline Chapitre 2: Le 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.
44
4.2 Les aléas de données
 Le résultat de la première instruction est disponible dès la fin de l'étape IE (exécution de
l'instruction) de celle-ci.
 Il est seulement utilisé à l'étape IE de la seconde instruction.
 Il suffit alors de le fournir en entrée de l'additionneur à la place de la valeur lue dans R1 par la
seconde instruction. Ceci est réalisé en ajoutant un chemin de données.
6. Aléas de pipeline Chapitre 2: Le pipeline
45
4.2 Les aléas de données
Considérons un autre morceau de code assez semblable.
LDR R1,R6,0
ADD R0,R1,R2
Le déroulement de l'exécution de ces deux instructions dans le pipeline devrait être le suivant.
 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.
6. Aléas de pipeline Chapitre 2: Le pipeline
46
4.2 Les aléas de branchement
 Lors de l'exécution d'une instruction de branchement conditionnel, on dit que le branchement
est pris si la condition est vérifiée et que le programme se poursuit effectivement à la nouvelle
adresse. Un branchement sans condition est toujours pris.
 Lorsqu'un branchement est pris, l'adresse de celui-ci est calculée à l'étape IE (exécution de
l'instruction) et rangée dans le registre PC à l'étape WB (rangement du résultat). Toutes les
instructions qui suivent l'instruction de branchement ne doivent pas être exécutées.
 Au niveau du pipeline, on obtient le diagramme d'exécution suivant.
6. Aléas de pipeline Chapitre 2: Le pipeline
47
4.2 Les aléas de branchement
 On constate que l'exécution d'un branchement pris dégrade notablement la performance du
pipeline puisque quatre cycles sont perdus. Comme les branchements constituent en général
20 à 30% des instructions exécutées par un programme, il est primordial d'améliorer leur
exécution.
 Dans le cas du micro-processeur LC-3, les instructions de branchement sont relativement
simples. Une façon simple d'optimiser les branchements est de ne pas leur faire suivre toutes
les étapes du pipeline afin que la nouvelle adresse soit écrite le plus tôt possible dans le
registre PC.
6. Aléas de pipeline Chapitre 2: Le pipeline
48
4.2 Les aléas de branchement
 Pour les branchements conditionnels, la condition ne dépend que des indicateurs n, z et p et
du code de l'instruction.
 Cette condition peut donc être calculée à l'étape ID (décodage de l'instruction).
 De même, l'adresse du branchement est soit le contenu d'un registre soit la somme de PC et
d'un offset.
 Dans les deux cas, cette valeur peut être rendue disponible à la fin de l'étape ID.
 Le prix à payer est l'ajout d'un nouvel additionneur dédié à ce calcul.
 La nouvelle adresse est alors écrite dans le registre PC à la fin de l'étape ID.
Le diagramme précédent devient alors le diagramme ci-dessous qui montre qu'il ne reste plus
qu'un seul cycle d'horloge de perdu.
6. Aléas de pipeline Chapitre 2: Le pipeline
49
 Le conflit d'accès à la mémoire se produit à chaque fois qu'une instruction de chargement
ou de rangement est exécutée (MA)
 Celle-ci rentre systématiquement en conflit avec le chargement d'une instruction qui a lieu
à chaque cycle d'horloge (IF)
 Ce problème est résolu en séparant la mémoire où se trouvent les instructions de celle où
se trouvent les données.
₋ Ceci est réalisé au niveau des caches de niveau 1.
₋ Le micro-processeur doit alors avoir deux bus distincts pour accéder simultanément
aux deux caches.
Exemples
• A
₋ ADD R1, R2, R3 // R1 = R2 + R3
₋ STORE R1, 1000 // C(1000) = R1
• B
₋ MOV R1, #1000 // R1 = 1000
₋ JUMP R1 // Saut
6. Aléas de pipeline Chapitre 2: Le pipeline
50
Chapitre 3: Ordonnancement dans le temps-réel
1. Introduction
 Un ordonnanceur (planificateur ou Scheduler en anglais) gère l'allocation et la suspension des
tâches.
 L’ordonnancement peut être préemptif ou non-préemptif
- Préemptif (avec réquisition): l’ordonnanceur peut interrompre un processus en cours
d’exécution, si un nouveau processus de priorité plus élevée est inséré dans la file des
Prêts.
- Non-préemptif : lorsqu’un processus à la main, il s’exécute entièrement même si des
processus plus prioritaires ont atteint la liste des Prêts.
Objectifs d’ordonnancement
1. Maximiser le nombre de processus exécutés par unité de temps.
2. Minimiser le temps d’attente d’exécution de chaque processus.
3. Maximiser les temps d’utilisation des processeurs et autres ressources.
4. Respecter les échéanciers (terminer l’exécution avant leurs deadlines).
5. Éviter le problème de famine (attente infinie).
6. Favoriser les processus les plus prioritaires (éviter le problème d’inversion des priorités).
7. Minimiser le nombre et la durée des changements de contexte.
- Difficile de les satisfaire à la fois.
- Prioriser les objectifs.
1. Introduction
52
2. Algorithmes d’ordonnancement dans les systèmes classiques
2.1 Algorithme d'ordonnancement PAPS
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
d’attente des processus prêts.
• Le processus élu relâche le processeur s’il se termine ou s’il demande une entrée sortie.
Temps 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
Processus
Démarrage
P1 P2 P3
P3
P2
P2
P2 P2
P1 P1 P1 P1 P2
P1 P2 P3
P1, P2 etP3 sont 3 processus dont le temps d’exécution respectifs P1=5, P2=6 et P3=2
53
2. Algorithmes d’ordonnancement dans les systèmes classiques
2.1 Algorithme d'ordonnancement PAPS
Exemple: On considère un système d’exploitation qui ordonnance 5 processus: P1, P2, P3, P4
et P5 selon l’algorithme d’ordonnancement PAPS. Le temps d’exécution et l’arrivage de
chaque processus sont donnés par le tableau suivant:
En utilisant un algorithme d’ordonnancement PAPS donnez :
- le diagramme de Gantt,
- le temps de séjour de chaque processus,
- le temps moyen de séjour des processus,
- le temps d’attente de chaque processus,
- le temps moyen d’attente des processus.
Processus Temps d’exécution Temps d’arrivée
P1 3 0
P2 6 1
P3 4 4
P4 2 6
P5 1 7
54
2. Algorithmes d’ordonnancement dans les systèmes classiques
2.1 Algorithme d'ordonnancement PAPS
1- diagramme de Gantt (DG):
- P1 arrive à 0s donc il est servi en premier car étant le premier arrivé. Il est servi en 3
secondes. Donc son temps fin "de service" est 3 secondes.
- P2 arrive à 1s, mais c'est à 3s qu'il se fait servir (principe PAPS). Il est servi en 6s. Donc
son temps fin "de service" est 9s.
- P3 arrive à 4s, mais est servi à 9s. Il est servi en 4s. Donc son temps fin "de service" est 13s.
P5
P4
P3
P2
P1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Processus
temps
55
2. Algorithmes d’ordonnancement dans les systèmes classiques
2.1 Algorithme d'ordonnancement PAPS
2- temps de séjour de chaque processus:
Application:
3- temps moyen de séjour (TMS):
Application:
TMS= (3+8+9+9+9) / 5 = 7.6
Temps de séjour = temps fin d'exécution - temps d'arrivée
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
Temps moyen de séjour = somme des temps de séjour de chaque processus
divisée par le nombre de processus
56
2. Algorithmes d’ordonnancement dans les systèmes classiques
2.1 Algorithme d'ordonnancement PAPS
4- temps d’attente de chaque processus:
Application:
5- temps moyen d'attente (TMA):
Application:
TMA = 22/5 = 4.4
Temps d'attente = temps de séjour - temps d'exécution
Processus Temps d’attente
P1 3-3=0
P2 8-6=2
P3 9-4=5
P4 9-2=7
P5 9-1=8
Temps moyen d'attente = somme des temps d'attente divisée par le nombre
de processus
57
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
P3
P2
P1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Processus
Temps
En utilisant un algorithme d’ordonnancement SJF calculez:
- le temps de séjour de chaque processus,
- le temps moyen de séjour des processus,
- le temps d’attente de chaque processus,
- le temps moyen d’attente des processus.
Stratégie offre le temps moyen d’attente minimale
58
2. Algorithmes d’ordonnancement dans les systèmes classiques
2.3 Algorithme d'ordonnancement Tourniquet (Round Robin)
Exemple: P1, P2 et P3 sont 3 processus dont le temps d’exécution respectifs P1=5, P2=6 et
P3=2.
- Le processeur gère une liste circulaire de processus.
P3
P2
P1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Processus
Temps
59
2. Algorithmes d’ordonnancement dans les systèmes classiques
2.4 Algorithme PAPS + Priorité
Exemple: P1, P2 etP3 sont 3 processus:
– Durée: P1=5, P2=6 , P3=2
– Priorité: P1=+ , P2=++ , P3=++
P3
P2
P1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Processus
Temps
60
2. Algorithmes d’ordonnancement dans les systèmes classiques
2.5 Algorithme Tourniquet + Priorité
P3
P2
P1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Processus
Temps
Exemple: P1, P2 etP3 sont 3 processus:
– Durée: P1=5, P2=6 , P3=2
– Priorité: P1=+ , P2=++ , P3=++
61
2.6 Algorithme Shortest Remaining Time (SRT)
• SRT: c’est la version préemptive de l'algorithme Shortest Job First (SJF).
• Si un processus dont le temps d’exécution est plus court que le reste du temps d’exécution
du processus en cours de traitement, alors il prendra sa place.
Exemple:
• Calculer le temps moyen d’attente et comparer avec le temps moyen d’attente de SJF.
Processus Temps d’arrivée Temps d’exécution
P1 0 5
P2 1 6
P3 2 2
TMA(SRT) < TMA(SJF)
P3
P2
P1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Processus
Temps
2. Algorithmes d’ordonnancement dans les systèmes classiques
62
2.7 Algorithme Round Robin(RR)
• Il alloue le processeur au processus en tête de file, pendant un quantum de temps.
• Si le processus se bloque ou se termine avant la fin de son quantum, le processeur est
immédiatement alloue a un autre processus (celui en tête de file).
• Si le processus ne se termine pas au bout de son quantum, son exécution est suspendue.
– Le processeur est alloue a un autre processus (celui en tête de file).
– Le processus suspendu est insère en queue de file.
– 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
doubler les processus existants
2. Algorithmes d’ordonnancement dans les systèmes classiques
63
2.7 Algorithme Round Robin(RR)
Exemple: P1, P2 et P3 sont 3 processus:
Processus Temps d’exécution
P1 9
P2 2
P3 2
Quantum = 4ms
P3
P2
P1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Processus
Temps
2. Algorithmes d’ordonnancement dans les systèmes classiques
64
2.7 Algorithme Round Robin(RR)
Remarques: Impact de la valeur du quantum dans RR
• Un quantum trop petit provoque trop de commutations de processus et abaisse
l'efficacité du processeur.
• Un quantum trop élève augmente le temps de réponse des courtes commandes en
mode interactif.
• Un quantum entre 20 et 50 ms est souvent un compromis raisonnable
2. Algorithmes d’ordonnancement dans les systèmes classiques
65
2. Algorithmes d’ordonnancement dans les systèmes classiques
2.8 Inconvénients des ordonnanceurs classiques
• Le processeur est toujours utilisé et ne peut se mettre en veille.
• Le quantum de temps doit plutôt être choisi en fonction de la charge de la machine.
Solution :
– au lieu d'être lancé périodiquement, l'ordonnanceur indique dans combien de temps il
doit être réveillé.
– Evidemment, il peut être réveillé par une tâche prioritaire qui devient prête.
66
3. Ordonnancement temps-réel
Les algorithmes d'ordonnancement les plus connus sont:
 Rate Monotonic (RM)
 Earliest Deadline First (EDF)
 Least Laxity First (LLF)

Contenu connexe

Similaire à Cours Systemes embarques.pptx

Exposé Le Microprocesseur
Exposé   Le MicroprocesseurExposé   Le Microprocesseur
Exposé Le Microprocesseur
TheCrazyMan
 
9 - CPU_uhghfhffdttgfffgfdfffghhggfC.ppt
9 - CPU_uhghfhffdttgfffgfdfffghhggfC.ppt9 - CPU_uhghfhffdttgfffgfdfffghhggfC.ppt
9 - CPU_uhghfhffdttgfffgfdfffghhggfC.ppt
josue25052001
 
Cours Benhabiles TMS320.pdf
Cours Benhabiles TMS320.pdfCours Benhabiles TMS320.pdf
Cours Benhabiles TMS320.pdf
HouBou3
 
cours2 ARM.pptx
cours2 ARM.pptxcours2 ARM.pptx
cours2 ARM.pptx
BesmaOthmaniKrifa
 

Similaire à Cours Systemes embarques.pptx (20)

DSP FPGA.pdf
DSP FPGA.pdfDSP FPGA.pdf
DSP FPGA.pdf
 
Cours de PIC Généralités.pdf
Cours de PIC Généralités.pdfCours de PIC Généralités.pdf
Cours de PIC Généralités.pdf
 
Ch8 architecture
Ch8 architectureCh8 architecture
Ch8 architecture
 
ch8_architecture.ppt
ch8_architecture.pptch8_architecture.ppt
ch8_architecture.ppt
 
Exposé Le Microprocesseur
Exposé   Le MicroprocesseurExposé   Le Microprocesseur
Exposé Le Microprocesseur
 
Microcontrôleur
MicrocontrôleurMicrocontrôleur
Microcontrôleur
 
cấu trúc máy tính ( architecture des ordinatuers)
cấu trúc máy tính ( architecture des ordinatuers)cấu trúc máy tính ( architecture des ordinatuers)
cấu trúc máy tính ( architecture des ordinatuers)
 
9 - CPU_uhghfhffdttgfffgfdfffghhggfC.ppt
9 - CPU_uhghfhffdttgfffgfdfffghhggfC.ppt9 - CPU_uhghfhffdttgfffgfdfffghhggfC.ppt
9 - CPU_uhghfhffdttgfffgfdfffghhggfC.ppt
 
Chapitre3.pptx
Chapitre3.pptxChapitre3.pptx
Chapitre3.pptx
 
Technologies du Web - Architectures matérielles et logicielles
Technologies du Web - Architectures matérielles et logiciellesTechnologies du Web - Architectures matérielles et logicielles
Technologies du Web - Architectures matérielles et logicielles
 
Les Microcontrôleurs 68HCXX.ppt
Les Microcontrôleurs 68HCXX.pptLes Microcontrôleurs 68HCXX.ppt
Les Microcontrôleurs 68HCXX.ppt
 
Pic 16f877 ..
Pic 16f877 ..Pic 16f877 ..
Pic 16f877 ..
 
Base des systèmes à microprocesseur
Base des systèmes à microprocesseurBase des systèmes à microprocesseur
Base des systèmes à microprocesseur
 
Cours Benhabiles TMS320.pdf
Cours Benhabiles TMS320.pdfCours Benhabiles TMS320.pdf
Cours Benhabiles TMS320.pdf
 
Chapitre 2- Présentation Structure de base d_un ordinateur
Chapitre 2- Présentation Structure de base d_un ordinateurChapitre 2- Présentation Structure de base d_un ordinateur
Chapitre 2- Présentation Structure de base d_un ordinateur
 
Formation stm32
Formation stm32Formation stm32
Formation stm32
 
Généralités sur les microcontrôleurs et PicBasic
Généralités sur les microcontrôleurs et PicBasicGénéralités sur les microcontrôleurs et PicBasic
Généralités sur les microcontrôleurs et PicBasic
 
cours2 ARM.pptx
cours2 ARM.pptxcours2 ARM.pptx
cours2 ARM.pptx
 
prog_reg.pptx
prog_reg.pptxprog_reg.pptx
prog_reg.pptx
 
DSP
DSPDSP
DSP
 

Dernier

Dernier (12)

Système National de Santé au- Maroc-(2017)."pdf"
Système National de Santé au- Maroc-(2017)."pdf"Système National de Santé au- Maroc-(2017)."pdf"
Système National de Santé au- Maroc-(2017)."pdf"
 
EL KATRY Reem: Proposition de Programme Artistique et Exposition pour les Écoles
EL KATRY Reem: Proposition de Programme Artistique et Exposition pour les ÉcolesEL KATRY Reem: Proposition de Programme Artistique et Exposition pour les Écoles
EL KATRY Reem: Proposition de Programme Artistique et Exposition pour les Écoles
 
Comment enseigner la langue française en Colombie?
Comment enseigner la langue française en Colombie?Comment enseigner la langue française en Colombie?
Comment enseigner la langue française en Colombie?
 
Quitter la nuit. pptx
Quitter        la             nuit.   pptxQuitter        la             nuit.   pptx
Quitter la nuit. pptx
 
Webinaire Technologia | DAX : nouvelles fonctions
Webinaire Technologia | DAX : nouvelles fonctionsWebinaire Technologia | DAX : nouvelles fonctions
Webinaire Technologia | DAX : nouvelles fonctions
 
Présentation Webinaire Cohésion - Concevoir et mettre en place une CMDB, comm...
Présentation Webinaire Cohésion - Concevoir et mettre en place une CMDB, comm...Présentation Webinaire Cohésion - Concevoir et mettre en place une CMDB, comm...
Présentation Webinaire Cohésion - Concevoir et mettre en place une CMDB, comm...
 
Présentation sur les Risques Électriques et Leur Prévention en Algérie
Présentation sur les Risques Électriques et Leur Prévention en AlgériePrésentation sur les Risques Électriques et Leur Prévention en Algérie
Présentation sur les Risques Électriques et Leur Prévention en Algérie
 
Quitter la nuit. pptx
Quitter          la        nuit.    pptxQuitter          la        nuit.    pptx
Quitter la nuit. pptx
 
Traitement des eaux usées par lagunage a macrophytes.pptx
Traitement des eaux usées par lagunage a macrophytes.pptxTraitement des eaux usées par lagunage a macrophytes.pptx
Traitement des eaux usées par lagunage a macrophytes.pptx
 
PLANNING HEBDO ET CR LYCEE COUDON 21 MAI2024
PLANNING HEBDO ET CR LYCEE COUDON 21 MAI2024PLANNING HEBDO ET CR LYCEE COUDON 21 MAI2024
PLANNING HEBDO ET CR LYCEE COUDON 21 MAI2024
 
Fiche - Accompagnement du travail coopératif au sein d’une équipe d’enseignan...
Fiche - Accompagnement du travail coopératif au sein d’une équipe d’enseignan...Fiche - Accompagnement du travail coopératif au sein d’une équipe d’enseignan...
Fiche - Accompagnement du travail coopératif au sein d’une équipe d’enseignan...
 
Festival de Cannes 2024. pptx
Festival    de   Cannes      2024.  pptxFestival    de   Cannes      2024.  pptx
Festival de Cannes 2024. pptx
 

Cours Systemes embarques.pptx

  • 2. Plan Cours: ₋ Chapitre 1: Généralités sur les microprocesseurs ₋ Chapitre 2: Le pipeline ₋ Chapitre 3: L’ordonnancement ₋ Chapitre 4: OS temps-réel sur STM32 ₋ Programmation C pour les systèmes embarqués Travaux pratiques: ̵ TP1 : Prise en main du logiciel Keil µVision ̵ TP2 : Manipulation des ports d’entrée-sortie (GPIO) de la carte STM32F429-DISCOVERY ̵ TP3 : Configuration et manipulation de l’afficheur LCD via le bus SPI ̵ TP4 : Conception et ajout d’une interface graphique sur l’afficheur LCD ̵ TP5 : Configuration et manipulation de l’écran tactile via le bus I2C ̵ TP6 : Lecture des données à partir de périphérique de stockage USB 2
  • 3. 3 1. Architecture interne UAL: Unité Arithmétique et Logique. PC : Compteur Ordinal (Programme Counter). Unité de commande Unité de traitement 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. Chapitre 1: Généralités sur les microprocesseurs
  • 4. 4 1. Architecture interne 1.1 Unité de commande: Elle permet de séquencer le déroulement des instructions. Compteur Ordinal (PC) : contient toujours l’adresse de la prochaine instruction à exécuter. Le décodeur d'instruction : Le mot binaire (instruction) est décodé pour savoir à quelle action correspond l’instruction. Bloc logique de commande (séquenceur) : organise l'exécution des instructions au rythme de l’horloge. Il élabore tous les signaux de synchronisation du microprocesseur en fonction de l’instruction qu’il a à exécuter. Chapitre 1: Généralités sur les microprocesseurs
  • 5. 5 1. Architecture interne 1.2 Unité de traitement: Elle permet d’exécute les instructions. L’accumulateur : C’est un registre de travail qui sert à stocker le résultat des opérations réalisées par L’UAL. L’Unité Arithmétique et Logique (UAL) est un circuit complexe qui assure les fonctions logiques (ET, OU, comparaison, décalage, etc…) ou arithmétique (addition, soustraction…). Le registre d'état : Chacun des bits de ce registre dépend du résultat de la dernière opération effectuée par l’UAL. Exemple: Bit de retenue (carry : C), débordement (overflow: OV ou V), Zéro (Z) ... Chapitre 1: Généralités sur les microprocesseurs
  • 6. 6 1. Architecture interne 1.3 Le fonctionnement basique d’une opération de calcul (1) Charger une instruction depuis la mémoire (2) Charger les opérandes depuis la mémoire (3) Effectuer les calculs (4) Stocker le résultat en mémoire CPU Mémoire (1) (2) (4) (3) Chapitre 1: Généralités sur les microprocesseurs
  • 7. 7 1. Architecture interne 1.4 Von Neuman CPU Mémoire programme et données BUS  Un seul chemin d'accès à la mémoire - Un bus de données (programme et données), - Un bus d’adresse (programme et données)  Architecture des processeurs d’usage général  Goulot d'étranglement pour l'accès à la mémoire Chapitre 1: Généralités sur les microprocesseurs
  • 8. 8 1. Architecture interne 1.4 Harvard CPU Mémoire programme BUS Mémoire données BUS  Séparation des mémoires programme et données - Un bus de données programme, - Un bus de données pour les données, - Un bus d’adresse programme, - Un bus d’adresse pour les données.  Meilleure utilisation du CPU : Chargement du programme et des données en parallèle Chapitre 1: Généralités sur les microprocesseurs
  • 9. 9 1. Architecture interne 1.5 Exemple: Les processeurs ARM Cortex-M Chapitre 1: Généralités sur les microprocesseurs 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.
  • 10. 10 1. Architecture interne 1.5 Exemple: Les processeurs ARM Cortex-M Chapitre 1: Généralités sur les microprocesseurs  Contrairement aux gammes Cortex-A et Cortex-R, la gamme Cortex-M est un cœur complet devenu un standard dans le domaine des processeurs.  Il s’appuie sur une architecture système bien définie qui comprend: - une gestion des interruptions, - une horloge système, - un système de débogage - un espace d’adressage mémoire standardisé.
  • 11. 11 1. Architecture interne 1.5 Exemple: Les processeurs ARM Cortex-M Chapitre 1: Généralités sur les microprocesseurs  L’espace mémoire est divisé en régions distinctes prédéfinies pour le code, les données, les périphériques et le système.  S’appuyant sur une architecture de Harvard,  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 mémoire et un accès plus efficace aux registres des périphériques
  • 12. 12 1. Architecture interne 1.5 Exemple: Les processeurs ARM Cortex-M Chapitre 1: Généralités sur les microprocesseurs
  • 13. 13 2. Le traitement des instructions 2.1 Organisation d’une instruction:  Le microprocesseur ne comprend qu’un certain nombre d’instructions qui sont codées en binaire.  Une instruction est composée de deux éléments : - Le code opération : c’est un code binaire qui correspond à l’action à effectuer par le processeur. - Le champ opérande : donnée ou bien adresse de la donnée.  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. Chapitre 1: Généralités sur les microprocesseurs
  • 14. 14 Etape 1: Recherche de l’instruction en mémoire  La valeur du PC est placée sur le bus d'adresse, et l'unité de commande émet un ordre de lecture de la mémoire.  Après le temps d'accès à la mémoire, le contenu de la case mémoire sélectionnée (instruction) est disponible sur le bus des données et arrive à l’entrée du décodeur. Etape 2: Décodage et recherche de l’opérande Si l'instruction nécessite une donnée en provenance de la mémoire, l'unité de commande récupère sa valeur sur le bus de données en faisant un nouvel accès mémoire. La donnée arrive à l’entrée de l’ALU. Etape 3: Exécution de l’instruction  L’ALU réaliser l’opération que le séquenceur lui demande. Les drapeaux sont positionnés (registre d'état).  Le PC est incrémenté pour indiquer l'instruction suivante 2. Le traitement des instructions Chapitre 1: Généralités sur les microprocesseurs
  • 15. 15 2. Le traitement des instructions Actuellement il existe plusieurs architectures des microprocesseurs:  Architecture CISC (Complex Instruction Set Computer),  Architecture RISC (Reduced Instruction Set Computer)  Architecture VLIW (Very long instruction word)  Architecture vectorielle  Architectures dataflow Chapitre 1: Généralités sur les microprocesseurs
  • 16. 16 2. Le traitement des instructions 2.1 Codage de l’instruction  Les instructions et leurs opérandes (données) sont stockés dans la mémoire.  La taille d’une instruction (nombre de bits nécessaires pour la représenter en mémoire) dépend du type de l’instruction et du type de l’opérande. - Code opération (code instruction): un code sur N bits qui indique quelle instruction. - Le champ opérande: qui contient la donnée ou la référence (adresse) à la donnée.  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. Code opération Opérande N bits K bits Chapitre 1: Généralités sur les microprocesseurs
  • 17. 17 2. Le traitement des instructions 2.1 Codage de l’instruction 2.1.1 Machines à 3 adresses  Dans ce type de machine pour chaque instruction il faut préciser: - l’adresse du premier opérande , - l’adresse du deuxième opérande , - et l'emplacement du résultat.  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. Code opération Opérande 1 Opérande 2 Résultat Chapitre 1: Généralités sur les microprocesseurs
  • 18. 18 2. Le traitement des instructions 2.1 Codage de l’instruction 2.1.1 Machines à 2 adresses  Dans ce types de machine pour chaque instruction il faut préciser: - l’adresse du premier opérande , - et l’adresse du deuxième opérande .  L’adresse de résultat est implicitement l’adresse du deuxième opérande.  Exemple: ADD A, B (C  B + C) Code opération Opérande 1 Opérande 2 Chapitre 1: Généralités sur les microprocesseurs
  • 19. 19 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) Code opération Opérande 1 Opérande 2 Chapitre 1: Généralités sur les microprocesseurs
  • 20. 20  De nombreuses instructions font référence à des données se trouvant à différents endroits de la machine : registres internes de µp, pile d'exécution, EEPROM, RAM, ports d'E/S. On appelle modes d'adressage les différentes façons de spécifier les endroits où se trouvent les données dont on a besoin.  Les modes d’adressage les plus courant sont : - Adressage direct - Adressage indirect - Adressage immédiat 3. Les modes d’adressages Chapitre 1: Généralités sur les microprocesseurs
  • 21. 21 3.1 Adressage direct  Le champ opérande de l’instruction contient l’adresse de l’opérande (emplacement en mémoire)  Pour réaliser l’opération il faut récupérer (lire) l’opérande à partir de la mémoire ACC  (ACC) + (ADR)  Exemple: on suppose que l’accumulateur contient la valeur 20. À la fin de l’exécution on obtient la valeur 50 ( 20+30). 3. Les modes d’adressages ADD 150 30 150 Chapitre 1: Généralités sur les microprocesseurs
  • 22. 22 3.2 Adressage indirect 3. Les modes d’adressages  La champs d’adresse contient l’adresse de l’adresse de l’opérande.  Pour réaliser l’opération il faut : – Récupérer l’adresse de l’opérande à partir de la mémoire. – Par la suite il faut chercher l’opérande à partir de la mémoire. ACC  (ACC) + ((ADR))  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. ADD 150 200 40 150 200 Chapitre 1: Généralités sur les microprocesseurs
  • 23. 23 3.3 Adressage immédiat  L’opérande existent dans le champ adresse de l’instruction  Exemple: ADD 150 - Cette commande va avoir l’effet suivant : ACC  (ACC) + 150 - Si le registre accumulateur contient la valeur 200 alors après l’exécution son contenu sera égale à 350. 3. Les modes d’adressages Code opération Opérande ADD 150 Chapitre 1: Généralités sur les microprocesseurs
  • 24. 24 Chapitre 2: Le pipeline 1. Définition d’un pipeline  Technique utilisée pour optimiser le temps d’exécution d’un processus répétitif.  Avec un pipeline, le processeur peut commencer à exécuter une nouvelle instruction sans attendre que la précédente soit terminée.  Une instruction est découpée dans un pipeline en petits morceaux appelés étage de pipeline.  La technique du pipeline exploite le parallélisme entre les instructions d’un flot séquentiel d’instructions. Cycles d'horloge Programme Instruction 1 Instruction 2 Instruction 3 Instruction 5 Instruction 4 1 2 3 4 5 6 7 8 9
  • 25. 25 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.. Chapitre 2: Le pipeline
  • 26. 26 2. Étages du pipeline Exemples de profondeur de pipeline Chapitre 2: Le pipeline
  • 27. 27 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. Chapitre 2: Le pipeline
  • 28. 28 2. Étages du pipeline: Pipeline RISC classique  Créé par David Patterson, inventeur des processeurs RISC.  5 étapes sont nécessaires pour traiter une instruction : 1.Lecture de l'instruction (Instruction Fetch: IF) 2.Décodage de l'instruction (Instruction Decode: ID ) 3.Exécution de l'instruction (Instruction Execution: EX) 4.Accès à la mémoire (Memory Access: MEM) 5.Rangement du résultat (Write Back: WB) Chapitre 2: Le pipeline
  • 29. 29 2. Étages du pipeline: Pipeline RISC classique 2.1 Lecture de l'instruction (Instruction Fetch: IF)  La prochaine instruction à exécuter est chargée dans le pipeline à partir de la case mémoire pointée par le compteur de programme PC dans le registre d'instruction (IR).  Le compteur de programme est incrémenté pour pointer sur l'instruction suivante. Chapitre 2: Le pipeline
  • 30. 30 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. 2. Étages du pipeline: Pipeline RISC classique Chapitre 2: Le pipeline
  • 31. 31 2. Étages du pipeline: Pipeline RISC classique 2.3 Exécution de l'instruction (Instruction Execution: EX)  Cette étape utilise l'unité arithmétique et logique (UAL) pour combiner les arguments.  L'opération précise réalisée par cette étape dépend du type de l'instruction. ₋ Instruction arithmétique ou logique (ADD, AND et NOT): Les deux arguments contenus dans les registres A et B sont fournis à l'unité arithmétique et logique pour calculer le résultat. ₋ Instruction de chargement et rangement (LD et ST): Le calcul de l'adresse est effectué à partir de l'adresse provenant du registre A et de l'offsetcontenu dans le registre B. ₋ Instruction de branchement (BR, JMP, JSR, JSRR et TRAP): • Pour les instructions contenant un offset, l'addition avec le contenu du PC est effectuée à cette étape. • Pour les instructions utilisant un registre, le contenu du registre est juste transmis. Chapitre 2: Le pipeline
  • 32. 32 2. Étages du pipeline: Pipeline RISC classique 2.4 Accès à la mémoire (Memory Access: MA)  Cette étape est uniquement utile pour les instruction de chargement et de rangement. ₋ Pour les instructions arithmétiques et logiques ou les branchements, rien n'est effectué. ₋ L'adresse du mot mémoire est contenue dans le registre R.  Dans le cas d'un rangement, la valeur à ranger provient du registre C.  Dans le cas d'un chargement, la valeur lue en mémoire est mise dans le registre R pour l'étape suivante. Chapitre 2: Le pipeline
  • 33. 33 2. Étages du pipeline: Pipeline RISC classique 2.5 Rangement du résultat (Write Back: WB)  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.  Les instructions de branchement rangent la nouvelle adresse dans PC. Chapitre 2: Le pipeline
  • 34. 34 3. Gain en performances Chapitre 2: Le pipeline  Pour exécuter n instructions nécessitant chacune k cycles d’horloge, il faut : • n x k : cycles d’horloge pour une exécution séquentielle • k : cycles pour la première instruction, puis (n-1) cycles pour les (n-1) instructions restantes si on utilise un pipeline à k étages.  Gain : 1 n k G n k      Si n est grand par rapport à k, on divise le temps d’exécution par k.
  • 35. 35 4. Temps de cycle des processeurs pipelinés Chapitre 2: Le pipeline  Le temps de cycle d’un processeur pipeliné dépend de quatre facteurs : ₋ Le temps de cycle de la version non pipelinée du processeur , ₋ Le nombre d’étage du pipeline , ₋ La manière dont la logique du chemin de données est répartie entre les étages (si cette répartition est équilibrée) , ₋ La latence de latch du pipeline (le temps de stabilisation après le passage dans chaque étage).  Si la logique peut être répartie de manière égale entre les étages du pipeline, la période d’horloge du processeur pipeliné est : Temps de cycle non pipeliné Temps de cycle = +latence de latch du pipeline pipeliné Nombre d'étages du pipeline → Si le nombre d’étages du pipeline augmente, la latence de latch correspond à une fraction de plus en plus grande du temps de cycle. → Ce qui limite progressivement l’intérêt de diviser le processeur en un plus grand nombre d’étages de pipeline.
  • 36. 36 4. Temps de cycle des processeurs pipelinés Chapitre 2: Le pipeline  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.
  • 37. 37 5. Latence de pipeline Chapitre 2: Le 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:  Exercice: Un processeur non pipeliné possédant un temps de cycle de 25 ns est divisé de manière égale en 5 étages de pipeline utilisant des latches d’une latence de 1 ns chacun. ₋ quelle est la latence totale du pipeline ? ₋ quelle est la latence si le processeur était divisé en 50 étages de pipeline ? 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
  • 38. 38 6. Aléas de pipeline Le bon fonctionnement du pipeline peut être perturbé par plusieurs événements appelés aléas (problèmes). Ces événements sont classés en trois catégories:  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.  aléas de données: Ce type de problèmes survient lorsqu'une instruction nécessite une donnée qui n'a pas encore été calculée par une instruction précédente. Ceci provient du fait que les instructions lisent leurs arguments dans les premiers étages du pipeline alors qu'elles produisent leur résultat dans les derniers étages.  aléas de contrôle: Ce type de problèmes survient dès qu'une instruction de branchement est exécutée. Si le branchement est effectué, les instructions qui suivent dans le pipeline ne doivent pas être exécutée. Ceci provient du fait que la nouvelle adresse est calculée alors que les instructions qui suivent ont déjà été chargées Chapitre 2: Le pipeline
  • 39. 39  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.  On voit alors apparaître des bulles dans le Pipeline  De manière pratique, la bulle correspond à l'exécution de l'instruction NOP qui ne fait rien. 6. Aléas de pipeline Chapitre 2: Le pipeline
  • 40. 40 4.1 Les aléas structurels Considérons par exemple le morceau de code suivant: ₋ LDR R7,R6,0 ₋ ADD R6,R6,1 ₋ ADD R0,R0,1 ₋ ADD R1,R1,1 Le déroulement de l'exécution des quatre premières instructions dans le pipeline devrait être le suivant. 6. Aléas de pipeline Chapitre 2: Le pipeline
  • 41. 41 4.1 Les aléas structurels  L'étape MA (accès mémoire) de l'instruction LDR R7,R6,0 a lieu en même temps que l'étape IF (chargement de l'instruction) de l'instruction ADD R1,R1,1.  Ces deux étapes nécessitent simultanément l'accès à la mémoire.  Il s'agit d'un aléa structurel. Comme cela est impossible, l'instruction ADD R1,R1,1 et celles qui suivent sont retardées d'un cycle. 6. Aléas de pipeline Chapitre 2: Le pipeline
  • 42. 42 4.1 Les aléas structurels  Le conflit d'accès à la mémoire se produit à chaque fois qu'une instruction de chargement ou de rangement est exécutée.  Celle-ci rentre systématiquement en conflit avec le chargement d'une instruction qui a lieu à chaque cycle d'horloge.  Ce problème est généralement résolu en séparant la mémoire où se trouvent les instructions de celle où se trouvent les données. Ceci est réalisé au niveau des caches de niveau 1.  Le microprocesseur doit alors avoir deux bus distincts pour accéder simultanément aux deux caches.  Comme le microprocesseur LC3 est très simple, les seuls aléas structurels possibles sont ceux dûs à des accès simultanés à la mémoire.  Les registres sont utilisés aux étapes ID (décodage) et WB (rangement du résultat) mais les premiers accès sont en lecture et les seconds en écriture. Ceci ne provoque pas d'aléa. 6. Aléas de pipeline Chapitre 2: Le pipeline
  • 43. 43 4.2 Les aléas de données Considérons le morceau de code suivant: ADD R1,R1,1 ADD R0,R1,R2 Le déroulement de l'exécution de ces deux instructions dans le pipeline devrait être le suivant. 6. Aléas de pipeline Chapitre 2: Le 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.
  • 44. 44 4.2 Les aléas de données  Le résultat de la première instruction est disponible dès la fin de l'étape IE (exécution de l'instruction) de celle-ci.  Il est seulement utilisé à l'étape IE de la seconde instruction.  Il suffit alors de le fournir en entrée de l'additionneur à la place de la valeur lue dans R1 par la seconde instruction. Ceci est réalisé en ajoutant un chemin de données. 6. Aléas de pipeline Chapitre 2: Le pipeline
  • 45. 45 4.2 Les aléas de données Considérons un autre morceau de code assez semblable. LDR R1,R6,0 ADD R0,R1,R2 Le déroulement de l'exécution de ces deux instructions dans le pipeline devrait être le suivant.  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. 6. Aléas de pipeline Chapitre 2: Le pipeline
  • 46. 46 4.2 Les aléas de branchement  Lors de l'exécution d'une instruction de branchement conditionnel, on dit que le branchement est pris si la condition est vérifiée et que le programme se poursuit effectivement à la nouvelle adresse. Un branchement sans condition est toujours pris.  Lorsqu'un branchement est pris, l'adresse de celui-ci est calculée à l'étape IE (exécution de l'instruction) et rangée dans le registre PC à l'étape WB (rangement du résultat). Toutes les instructions qui suivent l'instruction de branchement ne doivent pas être exécutées.  Au niveau du pipeline, on obtient le diagramme d'exécution suivant. 6. Aléas de pipeline Chapitre 2: Le pipeline
  • 47. 47 4.2 Les aléas de branchement  On constate que l'exécution d'un branchement pris dégrade notablement la performance du pipeline puisque quatre cycles sont perdus. Comme les branchements constituent en général 20 à 30% des instructions exécutées par un programme, il est primordial d'améliorer leur exécution.  Dans le cas du micro-processeur LC-3, les instructions de branchement sont relativement simples. Une façon simple d'optimiser les branchements est de ne pas leur faire suivre toutes les étapes du pipeline afin que la nouvelle adresse soit écrite le plus tôt possible dans le registre PC. 6. Aléas de pipeline Chapitre 2: Le pipeline
  • 48. 48 4.2 Les aléas de branchement  Pour les branchements conditionnels, la condition ne dépend que des indicateurs n, z et p et du code de l'instruction.  Cette condition peut donc être calculée à l'étape ID (décodage de l'instruction).  De même, l'adresse du branchement est soit le contenu d'un registre soit la somme de PC et d'un offset.  Dans les deux cas, cette valeur peut être rendue disponible à la fin de l'étape ID.  Le prix à payer est l'ajout d'un nouvel additionneur dédié à ce calcul.  La nouvelle adresse est alors écrite dans le registre PC à la fin de l'étape ID. Le diagramme précédent devient alors le diagramme ci-dessous qui montre qu'il ne reste plus qu'un seul cycle d'horloge de perdu. 6. Aléas de pipeline Chapitre 2: Le pipeline
  • 49. 49  Le conflit d'accès à la mémoire se produit à chaque fois qu'une instruction de chargement ou de rangement est exécutée (MA)  Celle-ci rentre systématiquement en conflit avec le chargement d'une instruction qui a lieu à chaque cycle d'horloge (IF)  Ce problème est résolu en séparant la mémoire où se trouvent les instructions de celle où se trouvent les données. ₋ Ceci est réalisé au niveau des caches de niveau 1. ₋ Le micro-processeur doit alors avoir deux bus distincts pour accéder simultanément aux deux caches. Exemples • A ₋ ADD R1, R2, R3 // R1 = R2 + R3 ₋ STORE R1, 1000 // C(1000) = R1 • B ₋ MOV R1, #1000 // R1 = 1000 ₋ JUMP R1 // Saut 6. Aléas de pipeline Chapitre 2: Le pipeline
  • 50. 50 Chapitre 3: Ordonnancement dans le temps-réel 1. Introduction  Un ordonnanceur (planificateur ou Scheduler en anglais) gère l'allocation et la suspension des tâches.  L’ordonnancement peut être préemptif ou non-préemptif - Préemptif (avec réquisition): l’ordonnanceur peut interrompre un processus en cours d’exécution, si un nouveau processus de priorité plus élevée est inséré dans la file des Prêts. - Non-préemptif : lorsqu’un processus à la main, il s’exécute entièrement même si des processus plus prioritaires ont atteint la liste des Prêts.
  • 51. Objectifs d’ordonnancement 1. Maximiser le nombre de processus exécutés par unité de temps. 2. Minimiser le temps d’attente d’exécution de chaque processus. 3. Maximiser les temps d’utilisation des processeurs et autres ressources. 4. Respecter les échéanciers (terminer l’exécution avant leurs deadlines). 5. Éviter le problème de famine (attente infinie). 6. Favoriser les processus les plus prioritaires (éviter le problème d’inversion des priorités). 7. Minimiser le nombre et la durée des changements de contexte. - Difficile de les satisfaire à la fois. - Prioriser les objectifs. 1. Introduction
  • 52. 52 2. Algorithmes d’ordonnancement dans les systèmes classiques 2.1 Algorithme d'ordonnancement PAPS 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 d’attente des processus prêts. • Le processus élu relâche le processeur s’il se termine ou s’il demande une entrée sortie. Temps 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 Processus Démarrage P1 P2 P3 P3 P2 P2 P2 P2 P1 P1 P1 P1 P2 P1 P2 P3 P1, P2 etP3 sont 3 processus dont le temps d’exécution respectifs P1=5, P2=6 et P3=2
  • 53. 53 2. Algorithmes d’ordonnancement dans les systèmes classiques 2.1 Algorithme d'ordonnancement PAPS Exemple: On considère un système d’exploitation qui ordonnance 5 processus: P1, P2, P3, P4 et P5 selon l’algorithme d’ordonnancement PAPS. Le temps d’exécution et l’arrivage de chaque processus sont donnés par le tableau suivant: En utilisant un algorithme d’ordonnancement PAPS donnez : - le diagramme de Gantt, - le temps de séjour de chaque processus, - le temps moyen de séjour des processus, - le temps d’attente de chaque processus, - le temps moyen d’attente des processus. Processus Temps d’exécution Temps d’arrivée P1 3 0 P2 6 1 P3 4 4 P4 2 6 P5 1 7
  • 54. 54 2. Algorithmes d’ordonnancement dans les systèmes classiques 2.1 Algorithme d'ordonnancement PAPS 1- diagramme de Gantt (DG): - P1 arrive à 0s donc il est servi en premier car étant le premier arrivé. Il est servi en 3 secondes. Donc son temps fin "de service" est 3 secondes. - P2 arrive à 1s, mais c'est à 3s qu'il se fait servir (principe PAPS). Il est servi en 6s. Donc son temps fin "de service" est 9s. - P3 arrive à 4s, mais est servi à 9s. Il est servi en 4s. Donc son temps fin "de service" est 13s. P5 P4 P3 P2 P1 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 Processus temps
  • 55. 55 2. Algorithmes d’ordonnancement dans les systèmes classiques 2.1 Algorithme d'ordonnancement PAPS 2- temps de séjour de chaque processus: Application: 3- temps moyen de séjour (TMS): Application: TMS= (3+8+9+9+9) / 5 = 7.6 Temps de séjour = temps fin d'exécution - temps d'arrivée 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 Temps moyen de séjour = somme des temps de séjour de chaque processus divisée par le nombre de processus
  • 56. 56 2. Algorithmes d’ordonnancement dans les systèmes classiques 2.1 Algorithme d'ordonnancement PAPS 4- temps d’attente de chaque processus: Application: 5- temps moyen d'attente (TMA): Application: TMA = 22/5 = 4.4 Temps d'attente = temps de séjour - temps d'exécution Processus Temps d’attente P1 3-3=0 P2 8-6=2 P3 9-4=5 P4 9-2=7 P5 9-1=8 Temps moyen d'attente = somme des temps d'attente divisée par le nombre de processus
  • 57. 57 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 P3 P2 P1 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 Processus Temps En utilisant un algorithme d’ordonnancement SJF calculez: - le temps de séjour de chaque processus, - le temps moyen de séjour des processus, - le temps d’attente de chaque processus, - le temps moyen d’attente des processus. Stratégie offre le temps moyen d’attente minimale
  • 58. 58 2. Algorithmes d’ordonnancement dans les systèmes classiques 2.3 Algorithme d'ordonnancement Tourniquet (Round Robin) Exemple: P1, P2 et P3 sont 3 processus dont le temps d’exécution respectifs P1=5, P2=6 et P3=2. - Le processeur gère une liste circulaire de processus. P3 P2 P1 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 Processus Temps
  • 59. 59 2. Algorithmes d’ordonnancement dans les systèmes classiques 2.4 Algorithme PAPS + Priorité Exemple: P1, P2 etP3 sont 3 processus: – Durée: P1=5, P2=6 , P3=2 – Priorité: P1=+ , P2=++ , P3=++ P3 P2 P1 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 Processus Temps
  • 60. 60 2. Algorithmes d’ordonnancement dans les systèmes classiques 2.5 Algorithme Tourniquet + Priorité P3 P2 P1 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 Processus Temps Exemple: P1, P2 etP3 sont 3 processus: – Durée: P1=5, P2=6 , P3=2 – Priorité: P1=+ , P2=++ , P3=++
  • 61. 61 2.6 Algorithme Shortest Remaining Time (SRT) • SRT: c’est la version préemptive de l'algorithme Shortest Job First (SJF). • Si un processus dont le temps d’exécution est plus court que le reste du temps d’exécution du processus en cours de traitement, alors il prendra sa place. Exemple: • Calculer le temps moyen d’attente et comparer avec le temps moyen d’attente de SJF. Processus Temps d’arrivée Temps d’exécution P1 0 5 P2 1 6 P3 2 2 TMA(SRT) < TMA(SJF) P3 P2 P1 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 Processus Temps 2. Algorithmes d’ordonnancement dans les systèmes classiques
  • 62. 62 2.7 Algorithme Round Robin(RR) • Il alloue le processeur au processus en tête de file, pendant un quantum de temps. • Si le processus se bloque ou se termine avant la fin de son quantum, le processeur est immédiatement alloue a un autre processus (celui en tête de file). • Si le processus ne se termine pas au bout de son quantum, son exécution est suspendue. – Le processeur est alloue a un autre processus (celui en tête de file). – Le processus suspendu est insère en queue de file. – 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 doubler les processus existants 2. Algorithmes d’ordonnancement dans les systèmes classiques
  • 63. 63 2.7 Algorithme Round Robin(RR) Exemple: P1, P2 et P3 sont 3 processus: Processus Temps d’exécution P1 9 P2 2 P3 2 Quantum = 4ms P3 P2 P1 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 Processus Temps 2. Algorithmes d’ordonnancement dans les systèmes classiques
  • 64. 64 2.7 Algorithme Round Robin(RR) Remarques: Impact de la valeur du quantum dans RR • Un quantum trop petit provoque trop de commutations de processus et abaisse l'efficacité du processeur. • Un quantum trop élève augmente le temps de réponse des courtes commandes en mode interactif. • Un quantum entre 20 et 50 ms est souvent un compromis raisonnable 2. Algorithmes d’ordonnancement dans les systèmes classiques
  • 65. 65 2. Algorithmes d’ordonnancement dans les systèmes classiques 2.8 Inconvénients des ordonnanceurs classiques • Le processeur est toujours utilisé et ne peut se mettre en veille. • Le quantum de temps doit plutôt être choisi en fonction de la charge de la machine. Solution : – au lieu d'être lancé périodiquement, l'ordonnanceur indique dans combien de temps il doit être réveillé. – Evidemment, il peut être réveillé par une tâche prioritaire qui devient prête.
  • 66. 66 3. Ordonnancement temps-réel Les algorithmes d'ordonnancement les plus connus sont:  Rate Monotonic (RM)  Earliest Deadline First (EDF)  Least Laxity First (LLF)