You are on page 1of 16

Unité 9: Unité centrale de traitement

Objectifs :
À la fin de cette unité, vous connaîtrez le fonctionnement de l'unité
centrale de traitement d'un ordinateur.
Pour y arriver, vous devrez atteindre les objectifs suivants :
- décrire les différentes composantes d'une unité centrale de
traitement et leur rôle : unité de commande, séquenceur, unité
arithmétique et logique, compteur ordinal, registre d’instruction,
horloge;
- décrire la structure d'une instruction de niveau machine;

©Pierre Marchand, 2001 280

Unité 9: Unité centrale de traitement

8.1 Architecture
L’unité centrale de traitement (UCT) ou processeur central (CPU) est
l’élément m o t e u r d e l’ordinateur qui interprèt e e t exécute les
instructions du programme situées en mémoire centrale.

L’ensemble CPU + mémoire centrale constitue l’Unité Centrale.

L’UCT est composé d e l ’Unité arithmétique et logique (UAL) et de


l’Unité de commande ou de contrôle.

L’UAL effectue les opérations arithmétiques et logiques.

L’Unité de commande dirige le fonctionnement de toutes les autres


unités : UAL, mémoire, entrées / sorties, etc., en leur fournissant les
signaux de cadence et de commande.

©Pierre Marchand, 2001 281

1
Unité 9: Unité centrale de traitement

8.1 Architecture
Les différentes unités sont interconnectées par des systèmes de
câblage transportant des signaux électriques. Pour éviter de relier
chaque unité à chacune des autres, on fait usage de lignes exploitées
en commun. On appelle bus ces ensembles de lignes.

On peut distinguer trois bus différents :


• Bus d’adresses, par exemple, A0 à A31
• Bus de données, par exemple, D0 à D31
• Bus de contrôle, par exemple, R/W,

Un bus peut être utilisé par toutes les unités qui y sont connectées,
mais jamais par plus de deux unités en même temps. Ceci pose des
problèmes d’attente et d’arbitrage (contention) lors des requêtes
d’utilisation.

©Pierre Marchand, 2001 282

Unité 9: Unité centrale de traitement

8.1 Architecture
Bus de cache Bus local Bus mémoire

Cache Pont Mémoire


CPU PCI
niveau 2 centrale

Bus PCI

Adaptateur
SCSI USB Pont Disque graphique
ISA IDE
Moni-
teur
Souris Cla-
vier
Bus ISA

Carte Impri-
Modem de son mante

©Pierre Marchand, 2001 283

2
Unité 9: Unité centrale de traitement

8.2 Unité de commande Mémoire


Cette unité comporte
Bus Bus de
• Le compteur ordinal CO R/W données
d’adresses
• Le registre d’instruction RI
• Le décodeur de code opération RA RM
• Le séquenceur
• L’horloge
RA = registre d ’adresses CO RI
RM = registre mot

Décodeur

Horloge Séquenceur

©Pierre Marchand, 2001 284

Unité 9: Unité centrale de traitement

8.2 Unité de commande


Les impulsions générés par l’horloge à intervalles réguliers d étermi-
nent le temps de cycle de la machine.
L’exécution d’une instruction prend généralement plus d’un cycle, car
une instruction comporte généralement :
• le temps de chargement de l’instruction (fetch),
• le temps de décodage de l’instruction,
• le temps de chargement des opérandes et de calcul de leur
adresse effective,
• le temps d’exécution proprement dit.
• le temps d’écriture du résultat (writeback).

En utilisant un pipeline, il est quand même possible d’émettre une


instruction par cycle si toutes ces opérations peuvent être effectuées
en parallèle.
©Pierre Marchand, 2001 285

3
Unité 9: Unité centrale de traitement

8.2 Unité de commande


Étapes d’un cycle de recherche d’instruction (fetch) :
• Transfert de l’adresse de la nouvelle instruction de CO à RA.
La génération d’une impulsion de lecture par l’unité de commande
provoque le transfert de l’instruction cherchée vers RM qui fonctionne
comme registre tampon pour tous les échanges avec la mémoire.
• Transfert de l’instruction dans RI.
Instruction = code opération + adresse opérande
L’adressage de l’opérande peut demander le calcul de l’adresse
effective, ce qui consomme des cycles machine.
Pendant que l’adresse de l’opérande est envoyée à RA, le code
opération est transmis au décodeur qui détermine le type d’opération
demandée et le transmet au séquenceur.
• Le CO est incrémenté en vue du cycle de recherche suivant.

©Pierre Marchand, 2001 286

Unité 9: Unité centrale de traitement

8.3 Synchronisation des opérations


Les signaux périodiques générés par l’horloge définissent le cycle de
base ou cycle machine (clock cycle).
Le cycle mémoire est habituellement beaucoup plus long que le cycle
machine, surtout s’il doit accéder à l a m émoire centrale (échec du
cache interne L1 + échec du cache externe L2)
Par exemple, dans un processeur dit à 500 MHz, le cycle machine est
de 2 ns.
La fréquence du bus PCI pouvant atteindre 133 MHz, le cycle de bus a
une duré e de 7,5 ns. Ceci est donc le temps minimum pour un accès
en mémoire centrale.
Toutefois, il faut habituellement plusieurs mots mémoire pour remplir
une rangée de cache, de sorte qu’un accès e n mémoire centrale
représente plusieurs cycles de bus.

©Pierre Marchand, 2001 287

4
Unité 9: Unité centrale de traitement

8.4 Séquenceur
Le séquenceur est un automate qui a la responsabilité de générer les
signaux de commande nécessaires pour actionner et contrôler les
unités participant à l’exécution d’une instruction donnée.
Cette fonction peut être réalisée de deux façons : séquenceur câblé ou
séquenceur microprogrammé.
Un séquenceur câblé est un circuit séquentiel complexe qui fait corres-
pondre à chaque instruction un sous-circuit capable de commander son
déroulement.
On peut obtenir le même résultat avec une suite de micro-instructions
stockée s dans u n e mémoire de microprogrammation. Ce micro-
programme est capable de générer une suite de signaux de commande
équivalent à celle qui serait produite par un séquenceur câblé.

©Pierre Marchand, 2001 288

Unité 9: Unité centrale de traitement

8.4 Séquenceur
RI
code op adresse

décodeur

séquenceur mémoire de
câblé microprogrammation

commandes commandes
UAL

©Pierre Marchand, 2001 289

5
Unité 9: Unité centrale de traitement

8.4 Séquenceur
Le microprogramme (firmware) peut être stocké dans une ROM ou une
EPROM.
Cette solution est plus fexible que la logique câblée. Le prix à payer est
une vitesse inférieure.
RI
code op adresse

mapping compteur ordinal de


ROM microprogrammation

mémoire de
microprogrammation

micro-instruction 0100110100
signaux de commande
©Pierre Marchand, 2001 290

Signaux de contrôle de la mémoire (rd, wr, fetch)


3
4
Décodeur
Mémoire centrale

MAR
32 4 vers 16
MDR MPC 9
8.4 Séquenceur PC
8
MBR Mémoire de
MAR = RA 512 x 36 bits
SP pour le
MDR = RM 8 microprogramme
PC = CO bus C JMPC MIR
MPC = CO du micro- Addr J ALU C MB
programme.
MIR = registre de
JN/JZ
micro-instruction (36
bits). bus B MSB
2
MBR = RI
N bascules de 1 bit
6
ALU Activer
contrôle Z sortie
ALU vers
Décaleur
2 bus B
Écrire
bus C
dans
registre

©Pierre Marchand, 2001 291

6
Unité 9: Unité centrale de traitement

8.5 Niveaux de programmation


langages évolués
niveau assembleur
instructions machine
micro-instructions

niveau des
commandes
électroniques

©Pierre Marchand, 2001 292

Unité 9: Unité centrale de traitement

8.5 Niveaux de programmation


Le programmeur a le choix entre plusieurs langages de program-
mation: Fortran, Pascal, C, Ada, C++, Java, Assembleur.
L’ordinateur par contre ne comprend que son propre langage, le
langage machine, avec son jeu d’instructions de niveau machine.
Il faut donc traduire le code source écrit dans l’un des langages
mentionnés en code objet ou code machine. Cette traduction s’effectue
à l ’aide de programmes traducteurs tel que les assembleurs et les
compilateurs.

L’assembleur est un langage dans lequel chaque instruction corres-


pond à une instruction machine.

©Pierre Marchand, 2001 293

7
Unité 9: Unité centrale de traitement

8.5 Niveaux de programmation


Un compilateur convertit la totalité du programme source en langage
machine et place le code objet dans un fichier objet. L’ordinateur peut
ensuite exécuter ce code objet. Le code objet ne peut être exécuté que
par un ordinateur ayant le même langage machine.

Un interprète convertit le programme source en code objet instruction


par instruction, et l’exécute au fur et à mesure. Le traducteur doit donc
se trouver dans la machine au moment de l’exécution, ce qui n’est pas
nécessaire dans le cas de code compilé.

©Pierre Marchand, 2001 294

Unité 9: Unité centrale de traitement

8.5 Niveaux de programmation


Pour rendre le code portable, on a adopté une solution intermédiaire
dans le cas du langage Java. Le code source est converti en byte-
codes, langage compilé indépendant de la plate-forme. Ces bytecodes
sont ensuite interprétés par la machine cible au moyen d’un interpète
appelé machine virtuelle. L e même code compilé p e u t donc être
exécuté sur toute plate-forme pour laquelle on dispose d’une machine
virtuelle Java (JVM).
Pour rendre ce processus plus performant, certaines machines virtuel-
les appelées Just-In-Time Compilers (JIT) compilent les bytecodes en
langage machine juste avant l’exécution. On atteint ainsi des perfor-
mances comparables à celles d’un langage compilé.

©Pierre Marchand, 2001 295

8
Unité 9: Unité centrale de traitement

8.6 Structure des instructions niveau machine


Une instruction machine doit fournir au CPU toutes les informations
pour l’exécution d’une opération élémentaire.
Elle doit donc contenir un code opération qui est essentiel pour
spécifier le type d’action désiré.
Elle doit en outre contenir une ou plusieurs adresses selon le cas :
l’adresse de (ou des) opérande(s), l’adresse où envoyer le résultat et
l’adresse où chercher l’instruction suivante.
Par conséquent, le format d’une instruction machine comporte un
champ code opération et jusqu’à quatre champs d’adresse. On parle
d’instructions à n adresses. On dit d’une machine qu’elle est à n
adresses si la plupart de ses instructions sont à n adresses.

©Pierre Marchand, 2001 296

Unité 9: Unité centrale de traitement

8.6 Structure des instructions niveau machine


Ainsi, le MC6809 est une machine à une adresse, le Pentium et le
MC68000 sont des machines à 2 adresses.
Le PowerPC est une machine à 3 adresses pour les opérations entre
registres, à 2 adresses pour les accès mémoire.
Exemples :
LDA 1000 instruction à 1 adresse (6809)
mov ax,[esi+4] instruction à 2 adresses (Pentium)
add eax,ebx instruction à 2 adresses (Pentium)
move d4,8(a6) instruction à 2 adresses (MC68000)
move d3,d4 instruction à 2 adresses (MC68000)
ld r0,4(r1) instruction à 2 adresses (PowerPC)
add r3,r2,r1 instruction à 3 adresses (PowerPC)

©Pierre Marchand, 2001 297

9
Unité 9: Unité centrale de traitement

8.6 Structure des instructions niveau machine


Il existe aussi des machines à zéro adresse. Ce sont des machines à
pile, analogues aux calculatrice à notation polonaise inverse (RPN).
Elle prennent tous ses opérandes sur la pile et inscrivent le résultat au
sommet de la pile.

©Pierre Marchand, 2001 298

Unité 9: Unité centrale de traitement

8.7 Jeu d’instructions


Chaque machine a son jeu d’instructions de base. Le nombre
d’instructions varie de 50 à plus de 300.
Il y a deux écoles de pensée. Les partisans de l’architecture RISC
(Reduced Instruction Set Computer) préconisent un petit nombre
d’instructions élémentaires dans un format fixe, faciles à réaliser dans
le matériel et d’exécution rapide (1 instruction par cycle machine). Cela
nécessite un séquenceur câblé et un compilateur capable d’exploiter
les caractéristiques de la machine (par exemple, utiliser les registres
pour minimiser les accès à la mémoire).
D’autres préfèrent les architectures CISC (Complex Instruction Set
Computer) basées sur des jeux d’instructions très riches et de taille
variable, et offrant des instruction composées (nécessitant plusieurs
voire même parfois des centaines de cycles machine).

©Pierre Marchand, 2001 299

10
Unité 9: Unité centrale de traitement

8.7 Jeu d’instructions


Les instructions qu’on trouve dans les répertoires de toutes les
machines peuvent être classées en six groupes :
• Transfert de données (Load, Move, Store).
• Opérations arithmétiques (les quatre opérations sur des entiers et
sur des nombres en virgule flottante de simple ou double précision).
• Opérations logiques (AND, OR, NOT, XOR, etc).
• Contrôles de séquence (branchements conditionnels et incondition-
nels, boucles, appels de procédures, etc.).
• Entrée / sortie (Read, Write).
• Manipulations diverses (décalages, conversions de format, incré-
mentation de registres, etc.).

©Pierre Marchand, 2001 300

Unité 9: Unité centrale de traitement

8.8 Registres du CPU


Compteur ordinal (CO)
Le registre CO contient l’adresse mémoire de la prochaine instruction à
exécuter. Il est automatiquement incrémenté après chaque utilisation.
Le programme est donc exécuté e n séquence à moins qu’il ne
contienne une instruction qui modifie la séquence, par exemple un saut
ou un branchement. Dans ce cas, la nouvelle adresse remplacera le
contenu du CO. Ce changement sera effectué pendant le cycle
d’exécution, après l e décodage du code opération, mais avant le
transfert du contenu du CO incrémenté vers le RA.

Registre instruction (RI)


Quand une instruction est chargée à partir de la mémoire, elle est
placée dans RI. Les bits correspondant au code opération sont
envoyés soit au décodeur, soit à la mémoire de microprogrammation.

©Pierre Marchand, 2001 301

11
Unité 9: Unité centrale de traitement

8.8 Registres du CPU


Accumulateur (ACC)
Dans le plupart des opérations arithmétiques, l’accumulateur contient
l’un des opérandes avant l’exécution, et le résultat après. Il peut servir
de tampon dans les opérations d’entrée / sortie. Il a généralement la
même taille que le mot mémoire, mais, dans la plupart des machines, il
possède une extension (registre Q) qui permet de doubler sa taille.
Ceci permet de stocker le résultat d’une multiplication dans ACC et Q,
ou d’y placer le quotient et le reste d’une division.
Dans le Pentium, l’accumulateur est EAX et l’extension Q est EDX.

©Pierre Marchand, 2001 302

Unité 9: Unité centrale de traitement

8.8 Registres du CPU


Registres généraux
Les registre généraux (general purpose registers) servent à enregistrer
les informations fréquemment utilisées pendant le programme, ou des
résultats intermédiaires. Cela évite des accès à la mémoire, accélérant
ainsi l’exécution du programme. La plupart des instructions sont
disponibles pour les registres généraux.
Dans le Pentium, ce sont EBX et ECX, mais EAX et EDX peuvent aussi
être considérés des registres généraux.

©Pierre Marchand, 2001 303

12
Unité 9: Unité centrale de traitement

8.8 Registres du CPU


Registres d’indice (XR)
Ces registres d’indice ou d’index peuvent être utilisée comme des
registres généraux. Mais, il ont en plus une fonction spéciale pour
manipuler les tableaux de données avec l’adressage indexé. Dans un
t e l m o d e d’adressage, l’adresse de l’opérande est obtenue en
additionnant la partie adresse de l’instruction au contenu du registre
d’index spécifié.
Dans le Pentium, tous les registres généraux peuvent être utilisés
comme indice.

©Pierre Marchand, 2001 304

Unité 9: Unité centrale de traitement

8.8 Registres du CPU


Registre de base
Utilisés pour calculer des adresses effectives, les registres de base
sont conçus pour contenir une adresse de référence. Pour obtenir
l’adresse effective, il faut y ajouter le contenu du champ adresse de
l’instruction
Chez Intel, c’était originalement BP et SP, mais dans le Pentium, EBP,
ESI, EDI, ESP et tous les registres généraux peuvent servir de registre
de base.

©Pierre Marchand, 2001 305

13
Unité 9: Unité centrale de traitement

8.8 Registres du CPU


Registre d’état (PSW)
Le registre d’état, aussi appelé registre de codes condition (Program
status word ou Condition Code Register) contient différents bits
appelés drapeaux (flags) indiquant le résultat d’une instruction. Les bits
les plus courants sont Z, qui vaut 1 si le résultat de l’instruction est 0, C
qui vaut 1 s’il y a une retenue, N ou S qui vaut 1 si le résultat de
l’instruction est négatif, et V ou OF, qui vaut 1 s’il y a eu débordement
de capacité.
Dans le Pentium, ce registre s’appelle EFLAGS.

©Pierre Marchand, 2001 306

Unité 9: Unité centrale de traitement

8.8 Registres du CPU


Pointeur de pile (SP)
Ce registre pointe au sommet d’une structure de pile implantée en
mémoire centrale. Le fonctionnement d’une pile suit la règle Last-In-
First-Out (LIFO).
Chaque fois qu’un mot doit être enregistré dans la pile, il est placé à
l’adresse qui précède celle du mot enregistré précédemment.
Les information enregistrées dans la pile sont lues dans l’ordre inverse
de celui dans lequel elles ont été enregistrées.
Une fois qu’un mot est lu, son emplacement devient disponible pour
une nouvelle information.

©Pierre Marchand, 2001 307

14
Unité 9: Unité centrale de traitement

8.9 Adressage des opérandes


Les modes d’adressage les plus importants sont :
• direct ou absolu : Le champ adresse contient l’adresse effective.
• indirect : Le champ adresse contient l’adresse où se trouve
l’adresse effective.
• immédiat : Le champ adresse de l’instruction contient l’opérande.
• implicite : Le code opération implique où se trouve l’opérande.
• indexé : Adresse effective = contenu du champ adresse + contenu
du registre index.
• basé : Adresse effective = contenu du registre de base +
contenu du champ adresse.
• relatif : Comme l’adressage basé, mais c’est CO qui sert de
registre de base.

©Pierre Marchand, 2001 308

Unité 9: Unité centrale de traitement

8.10 Taille de l’adresse et taille de la mémoire


Soit ADR le nombre de bits dans le champ adresse d’une instruction.
Si ADR = n, la mémoire physique est accessible dans sa totalité. Tous
les modes d’adressage proposés par le fabricant peuvent être utilisées.
C’est le cas du Pentium, du MC68000, du PowerPC.

Si ADR < n, ADR ne suffit pas pour adresser toute la mémoire. On peut
utiliser l’adressage basé, si le registre de base a une taille suffisante (n
bits). Il suffit de diviser la mémoire en blocs de taille telle que ADR
puisse adresser totalement un bloc. On utilise alors le champ adresse
pour indiquer le déplacement à l’intérieur du bloc.
C’était le cas du 8088/8086 et du 80186. L’adresse de 16 bits pouvait
adresser 64 Ko, mais les registres de segment permettaient d’atteindre
1 Mo.

©Pierre Marchand, 2001 309

15
Unité 9: Unité centrale de traitement

8.10 Taille de l’adresse et taille de la mémoire


Si ADR > n, ADR peut adresser des positions de mémoire qui
n’existent pas en mémoire physique. On profite de cette possibilité pour
réaliser la mémoire virtuelle, dans laquelle la mémoire physique peut
être considérée comme un cache pour la mémoire adressable totale
qui est alors placée sur disque. Dans ce cas, l’espace mémoire est
divisé en pages de quelques Ko au lieu de blocs de quelques octets.

©Pierre Marchand, 2001 310

16

You might also like