Académique Documents
Professionnel Documents
Culture Documents
Chapitre 1: Historique
Chapitre 2: Les composants de l’ordinateur
Chapitre 3: Notions sur les instructions
Chapitre 4: Le processeur
2023/2024
Cour Architecture des ordinateurs
2023/2024
• Introduction
• Langages de programmation (langage Assembleur)
• Instruction machine
• Principe de compilation et d’assemblage
06/11/2023 3
Introduction
06/11/2023 5
Langage de programmation
06/11/2023 6
Langage de programmation:
Langage machine
• Le seul langage exécutable directement par le microprocesseur.
• Langage difficile à maîtriser : chaque instruction est codée par une
séquence propre de bits (Binary Digit)
06/11/2023 11
Langage de programmation:
Langage Assembleur
• Une instruction du langage d’assemblage est composée de champs séparés
par un ou plusieurs espaces:
1. Un champ étiquette : non obligatoire, qui correspond à l’adresse de
l’instruction machine.
2. Un champ code opération : qui correspond à la chaîne binaire code
opération de l’instruction machine ;
3. Un champ opérandes : pouvant effectivement comporter plusieurs
opérandes séparés par des virgules qui correspondent aux registres, mots
mémoires ou valeurs immédiates apparaissant dans les instructions machin
06/11/2023 12
Langage de programmation:
Langage Assembleur
06/11/2023 13
Langage Assembleur
1: LDR
LDR R1,78
→ Place la valeur stockée à l'adresse mémoire 78 dans le registre R1 (par souci de
simplification, nous continuons à utiliser des adresses mémoire codées en base 10)
2. STR
STR R3,125
→ Place la valeur stockée dans le registre R3 en mémoire vive à l'adresse 125
3. ADD
ADD R1,R0,#128
→ Additionne le nombre 128 (une valeur immédiate est identifiée grâce au symbole #)
et la valeur stockée dans le registre R0, place le résultat dans le registre R1
ADD R0,R1,R2
→ Additionne la valeur stockée dans le registre R1 et la valeur stockée dans le registre
R2, place le résultat dans le registre R0
06/11/2023 15
4. SUB
SUB R1,R0,#128
→ Soustrait le nombre 128 de la valeur stockée dans le registre R0, place le résultat
dans le registre R1
SUB R0,R1,R2
→ Soustrait la valeur stockée dans le registre R2 de la valeur stockée dans le registre
R1, place le résultat dans le registre R0
5. MOV
MOV R1, #23
→ Place le nombre 23 dans le registre R1
MOV R0, R3
→ Place la valeur stockée dans le registre R3 dans le registre R0
6.CMP
CMP R0, #23
→ Compare la valeur stockée dans le registre R0 et le nombre 23. Cette instruction CMP doit précéder une
instruction de branchement conditionnel BEQ, BNE, BGT, BLT
CMP 06/11/2023
R0, R1 16
→ Compare la valeur stockée dans le registre R0 et la valeur stockée dans le registre R1.
7. CMP
CMP R0, #23
BNE 78
→ La prochaine instruction à exécuter se situe à l'adresse mémoire 78 si la valeur stockée dans le
registre R0 n'est pas égale à 23
CMP R0, #23
BGT 78
→ La prochaine instruction à exécuter se situe à l'adresse mémoire 78 si la valeur stockée dans le
registre R0 est plus grand que 23
CMP R0, #23
BLT 78
→ La prochaine instruction à exécuter se situe à l'adresse mémoire 78 si la valeur stockée dans le
registre R0 est plus petit que 23
8. HALT
HALT
Arrête l'exécution du programme
06/11/2023 17
• Exercice 1: Expliquez brièvement les instructions proposées.
- ADD R0, R1, #42
- LDR R5,98
- CMP R4, #18
BGT 77
- STR R0,15
06/11/2023 18
• Correction excercice1:
06/11/2023 19
• Exercice 2: Écrire les instructions en assembleur correspondant aux
phrases données.
06/11/2023 20
• Correction Exercice 2:
- Additionne la valeur stockée dans le registre R0 et la valeur stockée
dans le registre R1, le résultat est stocké dans le registre R5.
ADD R5, R0, R1
- Place la valeur stockée à l'adresse mémoire 878 dans le registre R0.
LDR R0, 878
- Place le contenu du registre R0 en mémoire vive à l'adresse 124.
STR R0, 124
06/11/2023 21
• Exercice 3: De python vers l’assembleur Voici un programme en
python
06/11/2023 22
• Exercice 3: De python vers l’assembleur Voici un programme en
python
Travail demandé: Après avoir analysé très attentivement le programme en assembleur ci-dessus,
vous essaierez d'établir une correspondance entre les lignes du programme en Python et les
lignes du programme en assembleur.
06/11/2023 23
• Correction Exercice 3:
La mémoire 23 correspond à z.
La mémoire 30 correspond à x.
La06/11/2023
mémoire 75 correspond à y. 24
06/11/2023 25
Langage de programmation:
Langage haut niveau
• La difficulté de mise en œuvre de ce type de langage (machine et
assembleur) et leur forte dépendance avec la machine :
→ la conception de langages de haut niveau, plus adaptés à l'homme, et
aux applications qu'il cherchait à développer.
06/11/2023 26
Langage de programmation:
Langage haut niveau
06/11/2023 27
Langage de programmation:
Langage haut niveau
06/11/2023 28
• Introduction
• Langages de programmation (langage Assembleur)
• Instruction machine
- Classification des machines par le nombre d’opérande
- Modes d’adressage des opérandes
• Principe de compilation et d’assemblage
06/11/2023 29
Instruction machine
06/11/2023 30
• Introduction
• Langages de programmation (langage Assembleur)
• Instruction machine
- Classification des machines par le nombre d’opérande
- Modes d’adressage des opérandes
• Principe de compilation et d’assemblage
06/11/2023 31
Instruction machine:
Classification des machines par le nombre d’opérande
• On fait référence à une machine par le nombre de champs opérandes
contenus dans ses instructions.
• Il existe des machines à 4, 3, 2, 1 ou 0 adresse (s).
❖ Machine à 4 adresses
▪ A1 : adresse du 1er opérande ou la donnée elle-même
▪ A2 : adresse du 2ème opérande ou la donnée elle-même
▪ A3 : adresse où doit être rangé le résultat
▪ A4 : adresse de l’instruction suivante
06/11/2023 32
Instruction machine:
Classification des machines par le nombre d’opérande
❖ Machine à 3 adresses: Le champ A4 n’existe pas. L’adresse de l’instruction
suivante étant indiquée par le compteur ordinal (CO)
06/11/2023 33
Instruction machine:
Classification des machines par le nombre d’opérande
❖ Machine à 1 adresse « Machine à Accumulateur »:
▪ A1 : désigne l’emplacement du 1er opérande.
▪ Le 2ème opérande se trouve dans un registre, l’opération terminée, le
résultat est rangé dans ce registre. Sur certaines machines, ce registre
est appelé accumulateur.
06/11/2023 34
Instruction machine:
Classification des machines par le nombre d’opérande
06/11/2023 35
Instruction machine:
Modes d’adressage des opérandes
• Par mode d’adressage, on désigne le chemin que doit emprunter l’unité
centrale (processeur) pour accéder à l’opérande. Il désigne comment le
champ adresse de l’instruction est utilisé pour déterminer l’opérande.
06/11/2023 36
Instruction machine:
Modes d’adressage des opérandes
❖Adressage immédiat:
L’opérande contenue dans un champ de l’instruction ne désigne pas
l’adresse (emplacement dans un registre ou une mémoire) où se trouve
la valeur. Il désigne la valeur elle-même. Exp: ADD #5,#8
❖Adressage Direct:
L’adresse de l’opérande est donnée dans l‘instruction sous forme d’adresse
mémoire.
06/11/2023 37
Instruction machine:
Modes d’adressage des opérandes
❖Adressage Indirect: C’est l’emplacement où se trouve l’adresse qui est
désigné et non l’adresse elle-même.
06/11/2023 38
Instruction machine:
Modes d’adressage des opérandes
Instruction Signification
Charge la donnée située à l'adresse contenue dans le registre
M[adr] dans le registre ACC en utilisant le mode d'adressage
!ACCM[adr] indirect. Le contenu de M[adr] est utilisé comme adresse
pour accéder à la donnée dans la mémoire vive de
l'ordinateur.
Charge la donnée située à l'adresse contenue dans le registre
M[M[adr]] dans le registre ACC en utilisant le mode
!ACCM[M[adr]] d'adressage indirect. Le contenu de M[M[adr]] est utilisé
comme adresse pour accéder à la donnée dans la mémoire
06/11/2023 vive de l'ordinateur. 39
Instruction machine:
Exercice 1 :
Soit l'instruction suivante : A ← 3 + 5.
06/11/2023 40
Instruction machine:
Modes d’adressage des opérandes
Solution 1 :
06/11/2023 41
Instruction machine:
Modes d’adressage des opérandes
Exercice 2 :
Trouvez les résultats du fragment de programme suivant pour les trois modes
d'adressage que voici : Immédiat, Direct et Indirect:
ADD 10
SUB 20
MPY 30
DIV 10
Sachant que [acc]=50 ; [10] =30 ; [20] = 10 ; [30] =20
06/11/2023 42
Instruction machine:
Modes d’adressage des opérandes
Solution 2 :
06/11/2023 43
Instruction machine:
Différents types d’instructions
06/11/2023 44
Instruction machine:
Différents types d’instructions
06/11/2023 45
• Introduction
• Langages de programmation (langage Assembleur)
• Instruction machine
- Classification des machines par le nombre d’opérande
- Modes d’adressage des opérandes
• Principe de compilation et d’assemblage
06/11/2023 46
Principe de compilation et d’assemblage
Pour pouvoir exécuter un programme écrit en langage d’assemblage:
➢ traduire les instructions de celui-ci vers les instructions machines
correspondantes
→ Cette phase de traduction est réalisée par l’assembleur
Mais en langage de haut niveau, chaque instruction correspondra à une
succession d’instructions en langage assembleur.
Une fois développé, le programme en langage de haut niveau n’est donc pas
compréhensible par le microprocesseur.
➢ Il faut le compiler pour le traduire en assembleur puis l’assembler pour le
convertir en code machine compréhensible par le microprocesseur.
→ Ces opérations sont réalisées à partir de logiciels spécialisés appelés
compilateur
06/11/2023
et assembleur 47
Principe de compilation et d’assemblage
06/11/2023 48
Unité de contrôle et de command
06/11/2023 49
Unité de contrôle et de command
Exécuter les instructions machines en utilisant les registres et l’UAL du
microprocesseur.
▪ Deux registres pour la manipulation des instructions (le compteur ordinal CO,
le registre d’instruction RI).
06/11/2023 51
Unité de contrôle et de command
Ainsi lorsque le processeur doit exécuter une instruction il :
▪ Place le contenu du registre CO dans le registre RAD via le bus d’adresses et le
circuit de sélection.
▪ Déclenche une commande de lecture mémoire via le bus de commandes.
▪ Reçoit dans le registre de données RDO, via le bus de données, l’instruction.
▪ Place le contenu du registre de données RDO dans le registre instruction RI via le
bus interne du microprocesseur.
Pour lire une donnée le processeur :
• Place l’adresse de la donnée dans le registre d’adresses RAD.
• Déclenche une commande de lecture mémoire.
• Reçoit la donnée dans le registre de données RDO.
• Place le contenu de RDO dans un des registres du microprocesseur (registres
généraux ou registres d’entrée de l’UAL)
06/11/2023 52
Unité de contrôle et de command
06/11/2023 53
Résumé: UAL VS Unité de commande UC
Caractéristique UAL Unité de commande
Fonction Effectue les calculs Gère l'exécution des instructions
Incluse dans l'unité centrale de Incluse dans l'unité centrale de
Emplacement
traitement ou le microprocesseur traitement ou le microprocesseur
Composition Circuit à portes logiques Circuit à portes logiques
Peut être spécialisée ou non. Les
UAL élémentaires calculent sur des
nombres entiers, mais certaines
Spécialisation UAL sont spécialisées dans la Peut être spécialisée ou non.
manipulation des nombres à virgule
flottante ou dans les calculs
vectoriels
Effectue les opérations
Gère l'exécution des instructions, y
arithmétiques, logiques bit à bit, les
Opérations compris les opérations effectuées
comparaisons, et éventuellement
par l'UAL
des décalages et rotations
Gère l'exécution des instructions en
Effectue les calculs nécessaires pour envoyant les signaux appropriés aux
Rôle
exécuter les instructions différents composants de
06/11/2023 l'ordinateur 54
Résumé: les composants du processeur
Composant Description
Gère l'exécution des instructions en
Unité de commande envoyant les signaux appropriés aux
différents composants de l'ordinateur
Effectue les calculs nécessaires pour
Unité arithmétique et logique (UAL)
exécuter les instructions
06/11/2023 55
Résumé: les composants du processeur
Type de registre Description
Stockent les données et les
Registres généraux
résultats de calcul temporaires
Stocke l'adresse de la mémoire où
Registre d'adresse les données doivent être lues ou
écrites
Stocke l'instruction en cours
Registre d'instruction
d'exécution
Registre de compteur de Stocke l'adresse de la prochaine
programme instruction à exécuter
Stocke l'état du processeur, y
Registre d'état compris les indicateurs de
condition et les erreurs
06/11/2023 56
Phases d’exécution d’une instruction
Le déroulement d’une instruction peut être décomposé en trois
phases :
1. Phase de recherche de l’instruction
2. Phase d’analyse de l’instruction et de recherche de l’opération et
des opérandes
3. Phase traitement effectif de l’instruction et de préparation de
l’instruction suivant
06/11/2023 57
Phases d’exécution d’une instruction
1er Cas : une instruction arithmétique à un seul opérande (mode direct)
Phase 1 : Recherche de l'instruction à traite
06/11/2023 58
Phases d’exécution d’une instruction
1er Cas : une instruction arithmétique à un seul opérande (mode direct)
Phase 1 : Recherche de l'instruction à traite
06/11/2023 59
Phases d’exécution d’une instruction
1er Cas : une instruction arithmétique à un seul opérande (mode direct)
Phase 2 : Décodage de l’instruction et recherche de l'opérande
• Commande de lecture.
06/11/2023 60
Phases d’exécution d’une instruction
1er Cas : une instruction arithmétique à un seul opérande (mode direct)
Phase 3 : Exécution de l'instruction et passer à l’instruction suivante
06/11/2023 61
Phases d’exécution d’une instruction
2ème Cas : une instruction arithmétique à un seul opérande (mode immédiat)
Phase 2 : Décodage de l’instruction et recherche de l'opérande
06/11/2023 62
Phases d’exécution d’une instruction
3 -ème Cas : une instruction arithmétique à un seul opérande (mode indirect)
Phase 2 : Décodage de l’instruction et recherche de l'opérande
06/11/2023 63
Pipeline
La technique du pipeline a été créée au début des année 1990. Elle permet d’améliorer
l’efficacité du processeur.
• C’est une technique de mise en œuvre qui permet à plusieurs instructions de se
chevaucher pendant l'exécution.
• Une instruction est découpée dans un pipeline en petits morceaux appelés étage de
pipeline.
• La technique du pipeline améliore le débit des instructions plutôt que le temps
d'exécution de chaque instruction.
• Elle exploite le parallélisme entre instructions d’un flot séquentiel d’instructions
• Elle présente l’avantage de pouvoir, contrairement à d'autres techniques
d'accélération, à être rendue invisible du programmeur.
06/11/2023 64
Pipeline
Exemple de l’exécution en 4 phases d’une instruction :
06/11/2023 65
Pipeline: Performance d’un pipeline
a. Première méthode (selon le nombre d’instructions)
NB: Lorsque le nombre n d’instructions à exécuter est grand par rapport à k, on peut admettre
qu’on divise le temps d’exécution par k
06/11/2023 66
Pipeline: Performance d’un pipeline
a. Première méthode (selon le nombre d’instructions)
06/11/2023 67
Pipeline: Performance d’un pipeline
b. Deuxième méthode (selon le temps exécution)
Temps d’exécution des instructions = Nombre d’instruction * Temps d’exécution d’une instruction
06/11/2023 68
Pipeline: Performance d’un pipeline
b. Deuxième méthode (selon le temps exécution)
Utilisons le pipeline :
• Le temps de chaque étage est alors le même (celui du plus lent car les autres étages
doivent attendre).
• Le temps de passage entre deux étages ne peut pas être instantané. Il faut attendre une
stabilisation des registres de pipeline, prenons ici 5 ns.
Temps d’un étage = MAX (temps des étages) + temps de stabilisation = 60 + 5 = 65 ns.
06/11/2023 69
Pipeline: Performance d’un pipeline
b. Deuxième méthode (selon le temps exécution)
Temps d’exécution des instructions (avec pipeline) = (Temps d’un étage * nombre d’étages) +
((Nombre d’instruction -1 )* Temps d’exécution d’une instruction)
→ Temps d’exécution de 100 instructions (avec pipeline) = 65*6 + 99*65 = 6 825 ns.
→ Temps moyen traitement d’une instruction pipeliné = 65 ns (dans notre exemple : 68,25
ns).
→ Donc Accélération = 320/65 = 4,92.
→ Un pipeline n’accélère pas le temps de traitement d’une instruction mais augmente le débit
des06/11/2023
instructions : dans un intervalle de temps on traite plus d’instructions. 70
Pipeline: Performance d’un pipeline
b. Deuxième méthode (selon le temps exécution)
06/11/2023 71