Chap8 Processeur
Chap8 Processeur
Chap8 Processeur
CHAPITRE
7
Le Processeur
I- Introduction
V- Exemples de microprocesseurs
I- Introduction:
Un processeur est un circuit électronique qui peut compter des millions de transistors.
L'unité centrale de traitement (UCT ou CPU : Central Processing Unit), encore dénommée
processeur ou microprocesseur, est l'élément de l'ordinateur qui interprète et exécute les
instructions d'un programme.
Les instructions à exécuter par le microprocesseur doivent être tout d’abord transférées de la
mémoire centrale pour être logées dans l’UCT.
Le format d’une instruction est sa spécification pour un microprocesseur donné sous forme
de:
Action Opérandes
Exemple :
Aff opérande
L’ensemble des actions que peut exécuter le microprocesseur avec leurs formats spécifiques
est appelé jeu d’instruction de l’UCT. Le jeu d’instruction diffère d’un microprocesseur à un
autre : On peut trouver des actions exécutées par un microprocesseur et pas par un autre ou
possédant un format différent.
Le microprocesseur doit connaître l’action demandée par l’instruction afin de préparer tout le
nécessaire pour qu’elle soit bien exécutée.
- L’ unité de commande
- Les registres
L'unité de commande dirige le fonctionnement de tous les autres éléments de l'unité centrale
en leur envoyant des signaux de commande.
Elle gère le séquencement des étapes de l’exécution d’une instruction et elle active les lignes
de l’opération à exécuter.
Pour que l’instruction soit interprétable par le microprocesseur elle doit être codée. On appelle
codage d’une instruction la transformation d’une instruction d’un programme du format
texte vers un format binaire qui respecte le format d’une instruction machine (action +
opérandes). Cette opération est effectuée par le compilateur1.
Ensuite, L'unité de commande doit décoder l’instruction, c’est à dire connaître de quelle
opération s’agit il.
Exemple : S’il s’agit d’une opération d’addition, l’unité arithmétique et logique sera chargée
par les opérande de l’opération et l’unité de commande va activer les lignes responsables de
l’exécution de l’action d’addition.
1
Le compilateur transforme un fichier écrit en un langage de programmation évolué en en un fichier exécutable
en langage machine. Sous DOS, les fichiers exécutables portent l’extension .EXE
Le travail de l'unité de commande est réalisé à l’aide de plusieurs composants tels que le
décodeur, le séquenceur, l’horloge et différents registres tels que le compteur ordinal et le
registre d’instruction que nous détaillerons ultérieurement dans ce chapitre au dans les
sections circuits de l’UCT et registres de l’UCT.
A l'origine, cette unité est chargée de l'exécution des opérations booléennes et des opérations
arithmétiques (addition, soustraction, multiplication, division, comparaison, etc.) pour des
entiers. En parallèle à cette unité, on peut trouver une unité de calcul sur les réels ainsi qu'une
unité de traitement dédiée aux opérations multimédia (traitement des images et du son).
L’UAL est alimentées par les registres généraux et le registre d’état. Le résultat d’une
opération est transmis au registre accumulateur.
Registre de sortie
3. Les registres:
Les registres sont des mémoires locales très rapides qui permettent de stocker des résultats
temporaires ou des informations de commande.
L'unité centrale comprend un certain nombre de registres pour stocker des données à traiter,
des résultats intermédiaires ou des informations de commande. Les registres ont une taille
réduite qui peut être de l’ordre de 1,2,4 ou 8 octets.
Chaque registre est dédié à un traitement particulier. Parmi ceux-ci on distingue les registres
suivants :
Il contient l'adresse de la prochaine instruction à exécuter. Il est souvent noté par le symbôle
CØ.
Il contient des informations sur l'état du système (retenue, dépassement, etc.). Une partie des
bits de ce registre, aussi appelé registre condition, constitue des drapeaux (flags) qui indiquent
certains états particuliers.
Par exemple à la fin de chaque opération on peut y trouver le signe du résultat (Négatif, Zéro
ou Positif), ainsi qu'une éventuelle retenue (Carry) ou un dépassement de capacité (Overflow).
Ces bits indicateurs peuvent être testés pour déterminer la suite du déroulement du
programme lors des branchements conditionnels. Ces bits sont accessibles au programmeur.
2
Le branchement conditionnel consiste à exécuter, si une certaine condition est vérifiée, une portion du
programme qui n’est située forcément à la suite de l’instruction courante.
3
L’appel à une routine ou traitement itératif est un traitement qui se répète et par la suite une fois le bloc
d’instruction est exécuté une fois, on retourne à l’instruction du début du bloc.
CF BF PF ZF SF OF IF
Carry Flag Borrow Flag Parity Flag Zero Flag Sign Overflow Interrupt
Flag flag Flag
Exprime Exprime un Exprime la Vérification Exprime Indique le Autorisation
une retenue emprunt lors parité de le signe dépassement ou non des
de la l’annulation si négatif de capacité interruptions
soustraction du résultat ou
d’une positif
opération.
- L’accumulateur (ACC) :
Le registre ACC, appelé aussi registre AX pour les microprocesseur de type INTEL, est
accessible au programmeur et très sollicité. Certaines machines possèdent plusieurs
accumulateurs.
Ils permettent de limiter les accès à la mémoire, ce qui accélère l'exécution d'un programme.
Ils peuvent conserver des informations utilisées fréquemment, des résultats intermédiaires,
etc. Ils sont accessibles au programmeur.
On peut citer par exemple pour les microprocesseur de type INTEL les registre de travail
suivants :
Exemple :
Add AX, BX
Ce registre sert à stocker les compteurs dans une boucle, le nombre de positions lors d’une
opération de décalage…Il est accessible par le programmeur.
Exemple :
Algorithme Code
AX 2 mov AX,2 ;affectation de la valeur 2 à AX
Pour de 1 à 5 faire mov CX,5 ;affectation de la valeur 5 à CX
AX AX+1 boucle : ;etiquette de la boucle
Fin pour ADD AX,1 ;ajout de la valeur 1 à AX
Loop boucle ;Décrémentation de CX et retour au
niveau de l’étiquette de la boucle si
CX est non nul.
Ce registre est souvent utilisé pour manipuler les chaînes de caractères et pour l’affichage des
données.
Ils peuvent être utilisés comme des registres généraux mais ils ont une fonction spéciale
utilisée pour l'adressage indexé. Dans ce cas l'adresse effective d'un opérande est obtenue en
ajoutant le contenu du registre d'index à l'adresse contenue dans l'instruction. Ce type
d'adressage et de registre est très utile pour manipuler des tableaux. Le programmeur dispose
alors d'instructions permettant l'incrémentation ou la décrémentation du registre d'index. En
particulier les registres d'index peuvent être incrémentés ou décrémentés automatiquement
après chaque utilisation.
Une pile est une zone mémoire dans laquelle les informations sont rangées de façon contiguë.
Le pointeur de pile (Stack Pointer : SP) indique le sommet de la pile : la position de la
dernière information enregistrée. Dans certaines machines le pointeur de pile indique la
position où sera mémorisée la prochaine donnée. Le fonctionnement d'une pile est du type
Dernier Entré Premier Sorti (LIFO : Last In First Out). Les deux principales opérations liées à
la pile concernent l'ajout d'un élément dans la pile ou le retrait, souvent nommées
respectivement PUSH et PULL. Lorsqu'une donnée est enregistrée dans la pile elle est placée
à l'adresse qui suit celle du dernier mot stocké. Après l'opération le pointeur de pile est
incrémenté. Lorsque un mot est retiré de la pile il correspond à la dernière information qui y a
été entrée. Après l'opération le pointeur est décrémenté. Une pile est réservée à l'usage de
l'unité centrale, en particulier pour sauvegarder les registres et l'adresse de retour en cas
d'interruption ou lors de l'appel d'une procédure. Le pointeur de pile est accessible au
programmeur, ce qui peut engendrer souvent des erreurs faute de mauvaise manipulation.
Le décodeur :
il détermine quelle est l'opération à effectuer afin d’activer les circuits des microprogrammes
correspondants à l’action voulue et quels sont les opérandes nécessaire à son exécution.
Exemple :
C’est un circuit qui émet des impulsions permettant la synchronisation de tous les éléments de
l'unité centrale.
L’horloge est souvent construite à base de quartz, substance qui émet naturellement des
signaux périodiques. Ces impulsions périodiques constituent le cycle de base ou cycle
machine. L’intervalle de temps entre deux impulsions représente le cycle ou la période de
l’horloge.
Horloge
temps
Le séquenceur :
Exemple :
Après 2 top d’horloge, le séquenceur comprend que l’instruction d’addition est exécutée et
envoie un signe au compteur ordinal pour passer à l’instruction suivante.
BA BD
RA Mémoire RM
RA :Registre d’Adresse
CO RI
RM : Registre de Mot
RI : Registre d’instruction Décodeur Unité de
commande
CO : compteur Ordinal
BA :Bus d’Adresses Séquenceur
- émettre un ordre de lecture du mot mémoire dont l’adresse se trouve dans le compteur
ordinal ;
- émettre un ordre de lecture de la donnée située en MC et dont l’adresse est fournie par
l’étape2;
- placer cette donnée dans un registre interne du CPU ou bien dans l’accumulateur selon le
travail demandé par l’instruction
Application :
- Une case mémoire est sur 4 octets et une adresse mémoire est sur 12 bits.
Citer les étapes d’exécution de ce programme en précisant le contenu du CO, RI, AX, BX et
la variable C en mémoire.
Solution :
Adresse de A = 64(hexa)
Adresse de B = 78(hexa)
Adresse de C = 79(hexa)
MC
14 C6 064 078
15 B3 079 000
64 00 00 00 02
78 00 00 00 04
79
… …
Première étape :
CO 014
cette adresse sera transportée par le bus d’adresse pour lire une case mémoire et transmettre
son contenu au registre d’instruction.
RI C6 064 078
CO 015
Deuxième étape :
troisième étape :
- placer cette donnée dans un autre registre tel que BX vu que l’accumulateur est occupée.
AX 00 00 00 02
BX 00 00 00 04
AX 00 00 00 08
Première étape :
CO 015
Cette adresse sera transportée par le bus d’adresse pour lire une case mémoire et transmettre
son contenu au registre d’instruction.
RI B3 079 000
CO 016
Deuxième étape :
Troisième étape :
AX 00 00 00 08
MC
078 00 00 00 08
Un cycle d'instruction est la période de temps nécessaire pour effectuer les trois étapes de
recherche, de décodage et d’exécution. Ce cycle peut se décomposer en un cycle de recherche
(instruction et opérandes), un cycle décodage et un cycle d'exécution .
Exemple :
Soit l’instruction suivante : ADD AX, 5 qui ajoute au contenu de l’accumulateur la valeur 5.
Supposons que cette instruction nécessite 3 tops d’horloges pour l’étape de recherche, 1 top
d’horloge pour le décodage et 2 tops pour l’exécution. Le chronogramme d’exécution de cette
instruction peut se présenter comme suit :
Horloge
Cycle d’instruction
3. La technique de pipeline :
Le microprocesseur est chargé d’exécuter les diverses instructions d’une programme le plus
rapidement possible. Face à un ensemble d’instructions le microprocesseur peut fonctionner
de deux manières possibles : séquentielle ou selon la technique de pipeline.
- Fonctionnement séquentiel :
Lors d’une exécution séquentielle, un microprocesseur exécute une seule instruction à la fois :
Il doit achever toutes les étapes relatives à l’exécution d’une instruction (Recherche, décodage
et exécution) pour pouvoir passer à l’instruction suivante.
Exemple :
R D E
I1
R D E
I2 R D E
I3
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
Remarque :
Le processeur ne peut pas exécuter la même étape (exemple le décodage) pour deux
instruction en même temps.
Exemple :
R D E
I1
I2 R D E
I3 R D E
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
1. La fréquence d’horloge :
La durée d’exécution d’une instruction est mesurée en tops d’horloge. Donc plus la période de
cette horloge est réduite plus le temps d’exécution de l’instruction en secondes est court.
La fréquence de l’horloge est l’inverse de la période et elle est calculée en hertz (Hz).
Ce qui nous ramène à conclure que l’augmentation de la fréquence (C’est à dire la diminution
de la période) influence le nombre d’instructions exécutées par secondes devenant plus élevé
et ainsi rendre le microprocesseur plus performant.
Exemple :
Soit une instruction dont l’étape d’exécution nécessite 3 tops horloge, l’étape de décodage 1
top
Remarque :
La durée d’exécution est inférieure pour une fréquence plus élevée.
Le temps le plus pénalisant au cours de l’exécution d’une instruction est le temps de recherche
de d’une instruction ou d’une données dans la mémoire centrale.
La taille du bus de données agit sur le nombre des accès mémoires effectués au cours d’une
instruction et par la suite il constitue l’un des critères de performance du microprocesseur les
plus importants
Pour cette raison, On distingue souvent les microprocesseurs par la taille de leurs bus de
données. Par exemple, on dit la famille des microprocesseurs INTEL 8 bits, la famille 16 bits
ou la famille 32 bits.
3. La mémoire cache :
On rappelle que la mémoire cache est une mémoire de petite taille (quelques kilos octets)
servant à stocker une portion du programme en exécution. Son rôle est minimiser les accès du
microprocesseur à la mémoire centrale en les remplaçant par l’accès à la mémoire cache dont
le temps d’accès est plus réduit. Plus la taille de la mémoire cache est grande moins on a
d’accès à la mémoire centrale et plus le gain en temps d’accès est important. Ce qui fait de la
taille de la mémoire cache un autre critère de performance du microprocesseur.
Les microprocesseurs ont connu une évolution au cours du temps. Aujourd’hui les deux
grandes marques les plus commercialisés sur le marché sont : les processeur INTEL et AMD.
Figure