1.
Définition d'un microprocesseur
Un microprocesseur ou processeur ou encore CPU (Central Processing Unit) est l'unité
intelligente de traitement des informations. C’est un circuit intégré chargé d’organiser les
tâches précisées par le programme, de les décoder et d’assurer leur exécution. Il doit aussi
prendre en compte les informations extérieures au système et assurer leur traitement.
2. Modèle de base d'un microprocesseur
Dans un microprocesseur, on retrouve :
- une Unité Arithmétique et Logique (UAL)
- une Unité de Contrôle (UC)
- des registres
- des bus ou chemins de données
2.1 Unité Arithmétique et Logique
Elle dispose de circuits réalisant des opérations des fonctions logiques (ET, OU, comparaison,
décalage,) ou arithmétique (addition, soustraction,). En entrée de l’UAL, on a des commandes
permettant d’activer les opérations, venant de l’unité de contrôle. En sortie, on a les résultats
des opérations et les conditions qui sont en fait les entrées de l’unité de contrôle.
2.1.1. Structure de l'ALU
L'ALU se compose de plusieurs sous-composants qui interagissent entre eux pour effectuer les
différentes opérations. Les principales parties sont :
Additionneur/Soustracteur (Adder/Subtractor) : Effectue des opérations
arithmétiques, notamment l'addition et la soustraction.
1
Opérateurs logiques : Effectuent des opérations logiques de base comme AND, OR,
XOR et NOT.
Multiplicateur et Diviseur : Certains processeurs incluent des unités spécialisées pour
la multiplication et la division.
Registre d'état (Status Register) : Contient des "flags" qui indiquent l’état des
opérations (comme si le résultat est nul, s’il y a eu un dépassement, etc.).
2.1.2. Fonctionnement de l'ALU
L'ALU prend en entrée des opérandes (valeurs à traiter) qui proviennent des registres ou de la
mémoire, effectue les calculs, et renvoie le résultat.
Entrées : Les deux opérandes (A et B), ainsi qu'un code d’opération qui spécifie le
type de calcul à effectuer.
Sorties : Le résultat de l'opération, plus un ensemble de flags qui reflètent l'état du calcul
(dépassement, égalité, etc.).
Les instructions de calcul (addition, soustraction, etc.) sont envoyées à l’ALU par le contrôleur
du processeur en fonction de l’instruction en cours d'exécution.
Exemple d'opération :
Si on veut additionner les nombres A = 1101 et B = 1011 :
Entrée : A et B sont envoyés à l’ALU.
L’ALU effectue l’addition bit à bit.
Sortie : Le résultat de l’addition, et le flag de retenue (si la somme dépasse la capacité
du registre).
2.1.3. Opérations de l'ALU
A. Opérations Arithmétiques
Addition : L'addition binaire est réalisée par un additionneur. L’additionneur
additionne les bits correspondants de deux nombres binaires, et gère la retenue (carry).
o Exemple : 0101 (5 en binaire) + 0011 (3 en binaire) = 1000 (8 en binaire).
Soustraction : La soustraction est réalisée en utilisant le complément à deux. Pour
soustraire B de A, l'ALU additionne A avec le complément à deux de B.
o Exemple : 0101 (5) - 0011 (3) → 0101 + complément à deux de 0011.
Multiplication/Division : Certains processeurs modernes ont une unité spécialisée pour
cela, mais dans les systèmes simples, ces opérations sont effectuées en utilisant des
additions répétées ou des algorithmes de multiplication et division binaire.
B. Opérations Logiques
2
L'ALU réalise également des opérations logiques sur des bits, appelées opérations booléennes.
Voici quelques exemples :
ET (AND) : Le résultat est 1 seulement si les deux bits sont 1.
Exemple : 1101 AND 1011 = 1001
OU (OR) : Le résultat est 1 si au moins l’un des bits est 1.
Exemple : 1101 OR 1011 = 1111
OU Exclusif (XOR) : Le résultat est 1 seulement si l’un des bits est 1, mais pas les
deux.
Exemple : 1101 XOR 1011 = 0110
NON (NOT) : Il inverse chaque bit du nombre.
Exemple : NOT 1101 = 0010
C. Opérations de Décalage
Décalage à gauche (Shift Left) : Chaque bit d’un nombre est déplacé vers la gauche.
Cela équivaut à une multiplication par 2.
Fonctionnement du décalage à gauche :
Chaque bit du nombre est déplacé vers la gauche d'une ou plusieurs positions.
La position de chaque bit est augmentée de 1.
Le bit de poids faible (à droite) devient 0, et le bit le plus à gauche est perdu.
Décaler d'une position à gauche équivaut à multiplier par 2 (pour les nombres
positifs).
Exemple :
Supposons que nous ayons le nombre binaire 0101 (5 en décimal).
1. Avant décalage :
2. 0101 (5 en décimal)
3. Décalage à gauche de 1 position :
o Le 1er bit (le bit le plus à gauche) est perdu.
o Un 0 est ajouté à la droite.
o Le résultat devient :
o 1010 (10 en décimal)
🧮 Calcul de multiplication par 2 :
Quand on décale à gauche de 1 bit, on multiplie le nombre par 2.
Décalage à gauche de 1 bit = Multiplier par 2.
3
Dans l'exemple précédent, 5 devient 10 après décalage d'une position à gauche.
Décalage à droite (Shift Right) : Chaque bit d’un nombre est déplacé vers la droite.
Cela équivaut à une division par 2 (pour les nombres positifs).
Le décalage à droite (ou Shift Right) fait glisser tous les bits d’un nombre binaire vers la
droite.
Le bit de droite (à la fin) est perdu.
Un 0 est ajouté à gauche (en fonction du type de nombre).
Il existe 2 types de nombres : signés et non signés. Cela affecte la façon dont on fait le
décalage.
Décalage à droite pour un nombre non signé (positif) :
Exemple : Nombre 1101 (13 en décimal).
1. Avant décalage à droite :
2. 1101 (13 en binaire)
3. Décalage à droite d’1 position :
o On déplace tous les bits vers la droite.
o Le bit le plus à gauche (1) est perdu.
o Un 0 est ajouté à gauche.
Résultat après décalage à droite :
0110 (6 en décimal)
Conclusion pour les nombres non signés :
Le bit le plus à gauche est perdu.
On ajoute un 0 à gauche.
Décalage à droite pour un nombre signé (négatif) en complément à deux :
Les nombres signés sont représentés avec un bit de signe à gauche (le premier bit) : 1 pour les
nombres négatifs et 0 pour les nombres positifs.
Exemple : Nombre 1101 (en complément à deux, qui est -3 en décimal).
1. Avant décalage à droite :
2. 1101 (Représente -3 en complément à deux)
3. Décalage à droite d’1 position :
o On déplace tous les bits vers la droite.
4
o Le bit de signe (le premier bit, ici 1) est copié pour que le nombre reste négatif.
o Le bit de droite (le 1 à la fin) est perdu, et un 1 est ajouté à gauche pour garder
le signe négatif.
Résultat après décalage à droite :
1110 (Représente -2 en complément à deux)
Conclusion pour les nombres signés :
Le bit de signe (à gauche) est copié pour conserver le signe du nombre.
Le bit de droite est perdu.
4. Registre d’État (Flags)
Le registre d’état ou flags contient des informations sur le résultat des dernières opérations
effectuées par l’ALU. Ces flags peuvent être utilisés pour prendre des décisions dans le
programme (par exemple, sauter une instruction si le résultat est égal à zéro).
Quelques flags courants :
Carry (C) : Il indique si une retenue a eu lieu lors de l’addition ou de la soustraction.
Zero (Z) : Il est activé si le résultat est égal à zéro.
Negative (N) : Il est activé si le résultat est négatif.
Overflow (O) : Il est activé en cas de dépassement, c’est-à-dire lorsque le résultat d’une
opération ne peut pas être stocké dans le nombre de bits alloués.
5. Exemple d'ALU dans un processeur
Prenons l'exemple d'un processeur qui effectue une addition de deux nombres binaires (par
exemple, A = 1010 et B = 1101).
Étapes :
1. Entrée dans l’ALU :
o A = 1010 (10 en décimal)
o B = 1101 (13 en décimal)
o Code d’opération pour l’addition.
2. Addition des bits :
L’additionneur de l’ALU effectue les calculs bit par bit :
2.2 Unité de contrôle ou séquenceur
5
L’unité de contrôle est une circuit logique séquentiel chargée de séquencer l’algorithme et de
générer les signaux de contrôle pour piloter les éléments du chemin de données. Elle envoie des
commandes à l’unité de traitement qui va exécuter les traitements.
3.3 Les bus
Un bus est un ensemble de lignes de communications groupés par fonction. Il permet de faire
transiter (liaison série/parallèle) des informations codées en binaire entre deux points. Il est
caractérisé par le nombre de lignes et la fréquence de transfert. Il existe 3 Types de bus :
Bus de données (bidirectionnel) : permet de transférer entre composants des données, ex. :
résultat d'une opération, valeur d'une variable, etc. Le nombre de lignes du bus de données
définie la capacité de traitement du microprocesseur ; selon le microprocesseur la largeur du
bus peut être de 8 bits, 16 bits, 32 bits, 64 bits.
Bus d'adresses (unidirectionnel) : permet de transférer entre composants des adresses, ex. :
adresse d'une case mémoire, etc. L’espace adressable peut avoir 2n emplacements, avec n est
le nombre de lignes du bus d'adresses.
Bus de contrôle (bidirectionnel) : permet l'échange entre les composants d'informations de
contrôle [bus rarement représenter sur les schémas]. ex. : périphérique prêt/occupé,
erreur/exécution réussie, etc.
3.4 Les registres
C'est un espace mémoire interne au processeur. On distingue deux types : à usage général qui
permettent à l'UAL de manipuler des données et les registres d'adresses qui sont connectés au
bus d'adresse.