format ppt

publicité
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 moteur de l’ordinateur qui interprète et 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é de 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
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
Cache
niveau 2
Bus local
Bus mémoire
Mémoire
centrale
Pont
PCI
CPU
Bus PCI
SCSI
USB
Souris
Pont
ISA
©Pierre Marchand, 2001
Moniteur
Clavier
Bus ISA
Carte
de son
Modem
283
Disque
IDE
Adaptateur
graphique
Imprimante
Unité 9: Unité centrale de traitement
8.2 Unité de commande
Mémoire
Cette unité comporte
Bus
• Le compteur ordinal CO
R/W
d’adresses
• Le registre d’instruction RI
RA
• Le décodeur de code opération
• Le séquenceur
• L’horloge
CO
RA = registre d ’adresses
RM = registre mot
Bus de
données
RM
RI
Décodeur
Horloge
©Pierre Marchand, 2001
284
Séquenceur
Unité 9: Unité centrale de traitement
8.2 Unité de commande
Les impulsions générés par l’horloge à intervalles réguliers déterminent 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
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 à 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 qu’un accès en mémoire centrale
représente plusieurs cycles de bus.
©Pierre Marchand, 2001
287
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 correspondre à 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 microprogramme 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
mémoire de
microprogrammation
séquenceur
câblé
commandes
commandes
UAL
©Pierre Marchand, 2001
289
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
mapping
ROM
adresse
compteur ordinal de
microprogrammation
mémoire de
microprogrammation
micro-instruction
0100110100
signaux de commande
©Pierre Marchand, 2001
290
Signaux de contr™lede la mЋmoire(rd, wr, fetch)
8.4 Séquenceur
MЋmoire centrale
3
MAR = RA
MDR = RM
PC = CO
MPC = CO du microprogramme.
MIR = registre de
micro-instruction (36
bits).
MBR = RI
MAR
32
MDR
MPC
9
PC
8
MBR
SP
MЋmoirede
512 x 36 bits
pour le
microprogramme
8
bus C
JMPC
Addr J ALU
C
MIR
MB
JN/JZ
bus B
ALU
contr™le
ALU
DЋcaleur
291
MSB
2
bascules de 1 bit
N
6
©Pierre Marchand, 2001
4
DЋcodeur
4 vers 16
Z
2
Activer
sortie
vers
bus B
ѓcrire
bus C
dans
registre
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 programmation: 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 correspond à une instruction machine.
©Pierre Marchand, 2001
293
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 bytecodes, 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. Le même code compilé peut 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 virtuelles appelées Just-In-Time Compilers (JIT) compilent les bytecodes en
langage machine juste avant l’exécution. On atteint ainsi des performances comparables à celles d’un langage compilé.
©Pierre Marchand, 2001
295
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
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
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 inconditionnels, 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é en 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 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.
©Pierre Marchand, 2001
301
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
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
tel mode 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
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-InFirst-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
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
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
Téléchargement