Title: Objectifs :
1Unité 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
dinstruction, horloge - - décrire la structure d'une instruction de
niveau machine
2Unité 9 Unité centrale de traitement
- 8.1 Architecture
- Lunité centrale de traitement (UCT) ou
processeur central (CPU) est lélément moteur de
lordinateur qui interprète et exécute les
instructions du programme situées en mémoire
centrale. - Lensemble CPU mémoire centrale constitue
lUnité Centrale. - LUCT est composé de lUnité arithmétique et
logique (UAL) et de lUnité de commande ou de
contrôle. - LUAL effectue les opérations arithmétiques et
logiques. - LUnité 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.
3Unité 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 dadresses, 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 dattente et darbitrage (contention)
lors des requêtes dutilisation.
4Unité 9 Unité centrale de traitement
Bus de cache
Bus local
Bus mémoire
Pont
Mémoire
Cache
CPU
PCI
centrale
niveau
2
Bus PCI
Adaptateur
SCSI
USB
Pont
graphique
Disque
ISA
IDE
Moni-
teur
Cla-
Souris
vier
Bus ISA
Impri-
Carte
Modem
mante
de son
5Unité 9 Unité centrale de traitement
- 8.2 Unité de commande
- Cette unité comporte
- Le compteur ordinal CO
- Le registre dinstruction RI
- Le décodeur de code opération
- Le séquenceur
- Lhorloge
- RA registre d adresses
- RM registre mot
Mémoire
Bus de données
Bus dadresses
RM
RA
CO
RI
Décodeur
Horloge
Séquenceur
6Unité 9 Unité centrale de traitement
- 8.2 Unité de commande
- Les impulsions générés par lhorloge à
intervalles réguliers détermi-nent le temps de
cycle de la machine. - Lexécution dune instruction prend généralement
plus dun cycle, car une instruction comporte
généralement - le temps de chargement de linstruction
(fetch), - le temps de décodage de linstruction,
- le temps de chargement des opérandes et de
calcul de leur adresse effective, - le temps dexé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.
7Unité 9 Unité centrale de traitement
- 8.2 Unité de commande
- Étapes dun cycle de recherche dinstruction
(fetch) - Transfert de ladresse de la nouvelle
instruction de CO à RA. - La génération dune impulsion de lecture par
lunité de commande provoque le transfert de
linstruction cherchée vers RM qui fonctionne
comme registre tampon pour tous les échanges avec
la mémoire. - Transfert de linstruction dans RI.
- Instruction code opération adresse opérande
- Ladressage de lopérande peut demander le
calcul de ladresse effective, ce qui consomme
des cycles machine. - Pendant que ladresse de lopérande est envoyée
à RA, le code opération est transmis au décodeur
qui détermine le type dopération demandée et le
transmet au séquenceur. - Le CO est incrémenté en vue du cycle de
recherche suivant.
8Unité 9 Unité centrale de traitement
- 8.3 Synchronisation des opérations
- Les signaux périodiques générés par lhorloge
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 sil doit
accéder à la 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 quun accès en mémoire centrale représente
plusieurs cycles de bus.
9Unité 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 à lexécution dune
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ées dans une 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é.
10Unité 9 Unité centrale de traitement
RI
code op
adresse
décodeur
mémoire de microprogrammation
séquenceur câblé
commandes
commandes
UAL
11Unité 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
compteur ordinal de microprogrammation
mapping ROM
mémoire de microprogrammation
micro-instruction
0
1
0
0
0
0
0
1
1
1
signaux de commande
128.4 Séquenceur MAR RA MDR RM PC CO MPC
CO du micro- programme. MIR registre
de micro-instruction (36 bits). MBR RI
13Unité 9 Unité centrale de traitement
- 8.5 Niveaux de programmation
langages évolués
niveau assembleur
instructions machine
micro-instructions
niveau des commandes électroniques
14Unité 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. - Lordinateur par contre ne comprend que son
propre langage, le langage machine, avec son jeu
dinstructions de niveau machine. - Il faut donc traduire le code source écrit dans
lun des langages mentionnés en code objet ou
code machine. Cette traduction seffectue à
laide de programmes traducteurs tel que les
assembleurs et les compilateurs. - Lassembleur est un langage dans lequel chaque
instruction corres-pond à une instruction machine.
15Unité 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. Lordinateur 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
lexécute au fur et à mesure. Le traducteur doit
donc se trouver dans la machine au moment de
lexécution, ce qui nest pas nécessaire dans le
cas de code compilé.
16Unité 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 dun interpète appelé
machine virtuelle. Le même code compilé peut donc
être exécuté sur toute plate-forme pour laquelle
on dispose dune 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
lexécution. On atteint ainsi des perfor-mances
comparables à celles dun langage compilé.
17Unité 9 Unité centrale de traitement
- 8.6 Structure des instructions niveau machine
- Une instruction machine doit fournir au CPU
toutes les informations pour lexécution dune
opération élémentaire. - Elle doit donc contenir un code opération qui est
essentiel pour spécifier le type daction désiré. - Elle doit en outre contenir une ou plusieurs
adresses selon le cas ladresse de (ou des)
opérande(s), ladresse où envoyer le résultat et
ladresse où chercher linstruction suivante. - Par conséquent, le format dune instruction
machine comporte un champ code opération et
jusquà quatre champs dadresse. On parle
dinstructions à n adresses. On dit dune machine
quelle est à n adresses si la plupart de ses
instructions sont à n adresses.
18Unité 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,esi4 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)
19Unité 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.
20Unité 9 Unité centrale de traitement
- 8.7 Jeu dinstructions
- Chaque machine a son jeu dinstructions de base.
Le nombre dinstructions varie de 50 à plus de
300. - Il y a deux écoles de pensée. Les partisans de
larchitecture RISC (Reduced Instruction Set
Computer) préconisent un petit nombre
dinstructions élémentaires dans un format fixe,
faciles à réaliser dans le matériel et
dexécution rapide (1 instruction par cycle
machine). Cela nécessite un séquenceur câblé et
un compilateur capable dexploiter les
caractéristiques de la machine (par exemple,
utiliser les registres pour minimiser les accès à
la mémoire). - Dautres préfèrent les architectures CISC
(Complex Instruction Set Computer) basées sur des
jeux dinstructions 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).
21Unité 9 Unité centrale de traitement
- 8.7 Jeu dinstructions
- Les instructions quon 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.).
22Unité 9 Unité centrale de traitement
- 8.8 Registres du CPU
- Compteur ordinal (CO)
- Le registre CO contient ladresse mémoire de la
prochaine instruction à exécuter. Il est
automatiquement incrémenté après chaque
utilisation. Le programme est donc exécuté en
séquence à moins quil 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
dexécution, après le 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.
23Unité 9 Unité centrale de traitement
- 8.8 Registres du CPU
- Accumulateur (ACC)
- Dans le plupart des opérations arithmétiques,
laccumulateur contient lun des opérandes avant
lexécution, et le résultat après. Il peut servir
de tampon dans les opérations dentré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 dune multiplication dans ACC et Q, ou
dy placer le quotient et le reste dune
division. - Dans le Pentium, laccumulateur est EAX et
lextension Q est EDX.
24Unité 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 lexé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.
25Unité 9 Unité centrale de traitement
- 8.8 Registres du CPU
- Registres dindice (XR)
- Ces registres dindice ou dindex 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 ladressage indexé.
Dans un tel mode dadressage, ladresse de
lopérande est obtenue en additionnant la partie
adresse de linstruction au contenu du registre
dindex spécifié. - Dans le Pentium, tous les registres généraux
peuvent être utilisés comme indice.
26Unité 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 ladresse
effective, il faut y ajouter le contenu du champ
adresse de linstruction - 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.
27Unité 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 dune
instruction. Les bits les plus courants sont Z,
qui vaut 1 si le résultat de linstruction est 0,
C qui vaut 1 sil y a une retenue, N ou S qui
vaut 1 si le résultat de linstruction est
négatif, et V ou OF, qui vaut 1 sil y a eu
débordement de capacité. - Dans le Pentium, ce registre sappelle EFLAGS.
28Unité 9 Unité centrale de traitement
- 8.8 Registres du CPU
- Pointeur de pile (SP)
- Ce registre pointe au sommet dune structure de
pile implantée en mémoire centrale. Le
fonctionnement dune pile suit la règle
Last-In-First-Out (LIFO). - Chaque fois quun mot doit être enregistré dans
la pile, il est placé à ladresse qui précède
celle du mot enregistré précédemment. - Les information enregistrées dans la pile sont
lues dans lordre inverse de celui dans lequel
elles ont été enregistrées. - Une fois quun mot est lu, son emplacement
devient disponible pour une nouvelle information.
29Unité 9 Unité centrale de traitement
- 8.9 Adressage des opérandes
- Les modes dadressage les plus importants sont
- direct ou absolu Le champ adresse contient
ladresse effective. - indirect Le champ adresse contient ladresse
où se trouve ladresse effective. - immédiat Le champ adresse de linstruction
contient lopérande. - implicite Le code opération implique où se
trouve lopé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 ladressage basé, mais cest CO
qui sert de registre de base.
30Unité 9 Unité centrale de traitement
- 8.10 Taille de ladresse et taille de la mémoire
- Soit ADR le nombre de bits dans le champ adresse
dune instruction. - Si ADR n, la mémoire physique est accessible
dans sa totalité. Tous les modes dadressage
proposés par le fabricant peuvent être utilisées.
Cest le cas du Pentium, du MC68000, du PowerPC. - Si ADR lt n, ADR ne suffit pas pour adresser toute
la mémoire. On peut utiliser ladressage 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 à
lintérieur du bloc. - Cétait le cas du 8088/8086 et du 80186.
Ladresse de 16 bits pouvait adresser 64 Ko, mais
les registres de segment permettaient datteindre
1 Mo.
31Unité 9 Unité centrale de traitement
- 8.10 Taille de ladresse et taille de la mémoire
- Si ADR gt n, ADR peut adresser des positions de
mémoire qui nexistent 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, lespace mémoire est
divisé en pages de quelques Ko au lieu de blocs
de quelques octets.