Unité 9: Unité centrale de traitementmarchand/ift17583/Acetates/17583... · L’assembleur est un...

16
1 ©Pierre Marchand, 2001 280 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; Unité 9: Unité centrale de traitement ©Pierre Marchand, 2001 281 8.1 Architecture L’unité centrale de traitement (UCT) ou processeur central (CPU) est l’élément moteur de 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é 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. Unité 9: Unité centrale de traitement

Transcript of Unité 9: Unité centrale de traitementmarchand/ift17583/Acetates/17583... · L’assembleur est un...

Page 1: Unité 9: Unité centrale de traitementmarchand/ift17583/Acetates/17583... · L’assembleur est un langage dans lequel chaque instruction corres-pond à une instruction machine.

1

©Pierre Marchand, 2001 280

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 detraitement 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;

Unité 9: Unité centrale de traitement

©Pierre Marchand, 2001 281

8.1 Architecture

L’unité centrale de traitement (UCT) ou processeur central (CPU) estl’élément moteur de l’ordinateur qui interprèt e e t exécute lesinstructions 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 del’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 autresunités : UAL, mémoire, entrées / sorties, etc., en leur fournissant lessignaux de cadence et de commande.

Unité 9: Unité centrale de traitement

Page 2: Unité 9: Unité centrale de traitementmarchand/ift17583/Acetates/17583... · L’assembleur est un langage dans lequel chaque instruction corres-pond à une instruction machine.

2

©Pierre Marchand, 2001 282

8.1 Architecture

Les différentes unités sont interconnectées par des systèmes decâblage transportant des signaux électriques. Pour éviter de relierchaque unité à chacune des autres, on fait usage de lignes exploitéesen 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 desproblèmes d’attente et d’arbitrage (contention) lors des requêtesd’utilisation.

Unité 9: Unité centrale de traitement

©Pierre Marchand, 2001 283

8.1 Architecture

Unité 9: Unité centrale de traitement

Bus de cache Bus local Bus mémoire

CPUCacheniveau 2

PontPCI

Mémoirecentrale

Bus PCI

DisqueIDE

Adaptateurgraphique

Moni-teur

SCSI USB

Souris Cla-vier

ModemCarte

de sonImpri-mante

Bus ISA

PontISA

Page 3: Unité 9: Unité centrale de traitementmarchand/ift17583/Acetates/17583... · L’assembleur est un langage dans lequel chaque instruction corres-pond à une instruction machine.

3

©Pierre Marchand, 2001 284

8.2 Unité de commande

Cette unité comporte

• Le compteur ordinal CO

• Le registre d’instruction RI

• Le décodeur de code opération

• Le séquenceur

• L’horloge

RA = registre d ’adresses

RM = registre mot

Unité 9: Unité centrale de traitement

Mémoire

Bus dedonnées

Busd’adresses

RMRA

CO

Horloge Séquenceur

RI

Décodeur

R/W

©Pierre Marchand, 2001 285

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, carune 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 leuradresse 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 uneinstruction par cycle si toutes ces opérations peuvent être effectuéesen parallèle.

Unité 9: Unité centrale de traitement

Page 4: Unité 9: Unité centrale de traitementmarchand/ift17583/Acetates/17583... · L’assembleur est un langage dans lequel chaque instruction corres-pond à une instruction machine.

4

©Pierre Marchand, 2001 286

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 commandeprovoque le transfert de l’ instruction cherchée vers RM qui fonctionnecomme 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’adresseeffective, ce qui consomme des cycles machine.

Pendant que l’adresse de l’opérande est envoyée à RA, le codeopération est transmis au décodeur qui détermine le type d’opérationdemandée et le transmet au séquenceur.

• Le CO est incrémenté en vue du cycle de recherche suivant.

Unité 9: Unité centrale de traitement

©Pierre Marchand, 2001 287

8.3 Synchronisation des opérations

Les signaux périodiques générés par l’horloge définissent le cycle debase ou cycle machine (clock cycle).

Le cycle mémoire est habituellement beaucoup plus long que le cyclemachine, surtout s’il doit accéder à la mémoire centrale (échec ducache interne L1 + échec du cache externe L2)

Par exemple, dans un processeur dit à 500 MHz, le cycle machine estde 2 ns.

La fréquence du bus PCI pouvant atteindre 133 MHz, le cycle de bus aune durée de 7,5 ns. Ceci est donc le temps minimum pour un accèsen mémoire centrale.

Toutefois, il faut habituellement plusieurs mots mémoire pour remplirune rangée de cache, de sorte qu’un accès en mémoire centralereprésente plusieurs cycles de bus.

Unité 9: Unité centrale de traitement

Page 5: Unité 9: Unité centrale de traitementmarchand/ift17583/Acetates/17583... · L’assembleur est un langage dans lequel chaque instruction corres-pond à une instruction machine.

5

©Pierre Marchand, 2001 288

8.4 SéquenceurLe séquenceur est un automate qui a la responsabilité de générer lessignaux de commande nécessaires pour actionner et contrôler lesunité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é ousé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 sondéroulement.

On peut obtenir le même résultat avec une suite de micro-instructionsstocké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é.

Unité 9: Unité centrale de traitement

©Pierre Marchand, 2001 289

8.4 Séquenceur

Unité 9: Unité centrale de traitement

RI

code op adresse

décodeur

séquenceurcâblé

UAL

mémoire demicroprogrammation

commandes commandes

Page 6: Unité 9: Unité centrale de traitementmarchand/ift17583/Acetates/17583... · L’assembleur est un langage dans lequel chaque instruction corres-pond à une instruction machine.

6

©Pierre Marchand, 2001 290

8.4 SéquenceurLe microprogramme (firmware) peut être stocké dans une ROM ou uneEPROM.

Cette solution est plus fexible que la logique câblée. Le prix à payer estune vitesse inférieure.

Unité 9: Unité centrale de traitement

RI

code op adresse

mappingROM

compteur ordinal demicroprogrammation

mémoire demicroprogrammation

micro-instruction 0 1 0 0 0 001 1 1

signaux de commande

©Pierre Marchand, 2001 291

8.4 Séquenceur

MAR = RAMDR = RMPC = COMPC = CO du micro-programme.MIR = registre demicro-instruction (36bits).MBR = RI

MAR

MDR

PC

SP

ALU

Décaleur

Décodeur4 vers 16

3

MPC

Mémoire de512 x 36 bits

pour lemicroprogramme

MBR

bus B

N

Activersortieversbus B

Écrirebus Cdansregistre

bus C

8

32

Z

6

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

9

8

JMPC

Addr J

MIR

ALU C M B

4

contrôleALU

bascules de 1 bit

2

2

JN/JZ

mo

ire c

en

tra

le

MSB

Page 7: Unité 9: Unité centrale de traitementmarchand/ift17583/Acetates/17583... · L’assembleur est un langage dans lequel chaque instruction corres-pond à une instruction machine.

7

©Pierre Marchand, 2001 292

8.5 Niveaux de programmation

Unité 9: Unité centrale de traitement

niveau descommandesélectroniques

micro-instructions

instructions machine

niveau assembleur

langages évolués

©Pierre Marchand, 2001 293

8.5 Niveaux de programmationLe 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, lelangage machine, avec son jeu d’instructions de niveau machine.

Il faut donc traduire le code source écrit dans l’un des langagesmentionnés en code objet ou code machine. Cette traduction s’effectueà l ’aide de programmes traducteurs tel que les assembleurs et lescompilateurs.

L’assembleur est un langage dans lequel chaque instruction corres-pond à une instruction machine.

Unité 9: Unité centrale de traitement

Page 8: Unité 9: Unité centrale de traitementmarchand/ift17583/Acetates/17583... · L’assembleur est un langage dans lequel chaque instruction corres-pond à une instruction machine.

8

©Pierre Marchand, 2001 294

8.5 Niveaux de programmationUn compilateur convertit la totalité du programme source en langagemachine et place le code objet dans un fichier objet. L’ordinateur peutensuite exécuter ce code objet. Le code objet ne peut être exécuté quepar un ordinateur ayant le même langage machine.

Un interprète convertit le programme source en code objet instructionpar instruction, et l’exécute au fur et à mesure. Le traducteur doit doncse trouver dans la machine au moment de l’exécution, ce qui n’est pasnécessaire dans le cas de code compilé.

Unité 9: Unité centrale de traitement

©Pierre Marchand, 2001 295

8.5 Niveaux de programmationPour rendre le code portable, on a adopté une solution intermédiairedans le cas du langage Java. Le code source est converti en byte-codes, langage compilé indépendant de la plate-forme. Ces bytecodessont ensuite interprétés par la machine cible au moyen d’un interpèteappelé machine virtuelle. Le même code compilé peut donc êtreexécuté sur toute plate-forme pour laquelle on dispose d’une machinevirtuelle Java (JVM).

Pour rendre ce processus plus performant, certaines machines virtuel-les appelées Just-In-Time Compilers (JIT) compilent les bytecodes enlangage machine juste avant l’exécution. On atteint ainsi des perfor-mances comparables à celles d’un langage compilé.

Unité 9: Unité centrale de traitement

Page 9: Unité 9: Unité centrale de traitementmarchand/ift17583/Acetates/17583... · L’assembleur est un langage dans lequel chaque instruction corres-pond à une instruction machine.

9

©Pierre Marchand, 2001 296

8.6 Structure des instructions niveau machineUne instruction machine doit fournir au CPU toutes les informationspour l’exécution d’une opération élémentaire.

Elle doit donc contenir un code opération qui est essentiel pourspé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 etl’adresse où chercher l’instruction suivante.

Par conséquent, le format d’une instruction machine comporte unchamp code opération et jusqu’à quatre champs d’adresse. On parled’instructions à n adresses. On dit d’une machine qu’elle est à nadresses si la plupart de ses instructions sont à n adresses.

Unité 9: Unité centrale de traitement

©Pierre Marchand, 2001 297

8.6 Structure des instructions niveau machineAinsi, le MC6809 est une machine à une adresse, le Pentium et leMC68000 sont des machines à 2 adresses.

Le PowerPC est une machine à 3 adresses pour les opérations entreregistres, à 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)

Unité 9: Unité centrale de traitement

Page 10: Unité 9: Unité centrale de traitementmarchand/ift17583/Acetates/17583... · L’assembleur est un langage dans lequel chaque instruction corres-pond à une instruction machine.

10

©Pierre Marchand, 2001 298

8.6 Structure des instructions niveau machineIl 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 ausommet de la pile.

Unité 9: Unité centrale de traitement

©Pierre Marchand, 2001 299

8.7 Jeu d’instructionsChaque machine a son jeu d’instructions de base. Le nombred’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 nombred’instructions élémentaires dans un format fixe, faciles à réaliser dansle matériel et d’exécution rapide (1 instruction par cycle machine). Celanécessite un séquenceur câblé et un compilateur capable d’exploiterles caractéristiques de la machine (par exemple, utiliser les registrespour minimiser les accès à la mémoire).

D’autres préfèrent les architectures CISC (Complex Instruction SetComputer) basées sur des jeux d’instructions très riches et de taillevariable, et offrant des instruction composées (nécessitant plusieursvoire même parfois des centaines de cycles machine).

Unité 9: Unité centrale de traitement

Page 11: Unité 9: Unité centrale de traitementmarchand/ift17583/Acetates/17583... · L’assembleur est un langage dans lequel chaque instruction corres-pond à une instruction machine.

11

©Pierre Marchand, 2001 300

8.7 Jeu d’instructionsLes instructions qu’on trouve dans les répertoires de toutes lesmachines 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 etsur 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.).

Unité 9: Unité centrale de traitement

©Pierre Marchand, 2001 301

8.8 Registres du CPUCompteur 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 necontienne une instruction qui modifie la séquence, par exemple un sautou un branchement. Dans ce cas, la nouvelle adresse remplacera lecontenu du CO. Ce changement sera effectué pendant le cycled’exécution, après le décodage du code opération, mais avant letransfert du contenu du CO incrémenté vers le RA.

Registre instruction (RI)

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

Unité 9: Unité centrale de traitement

Page 12: Unité 9: Unité centrale de traitementmarchand/ift17583/Acetates/17583... · L’assembleur est un langage dans lequel chaque instruction corres-pond à une instruction machine.

12

©Pierre Marchand, 2001 302

8.8 Registres du CPUAccumulateur (ACC)

Dans le plupart des opérations arithmétiques, l’accumulateur contientl’un des opérandes avant l’exécution, et le résultat après. Il peut servirde tampon dans les opérations d’entrée / sortie. Il a généralement lamême taille que le mot mémoire, mais, dans la plupart des machines, ilpossè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.

Unité 9: Unité centrale de traitement

©Pierre Marchand, 2001 303

8.8 Registres du CPURegistres généraux

Les registre généraux (general purpose registers) servent à enregistrerles informations fréquemment utilisées pendant le programme, ou desrésultats intermédiaires. Cela évite des accès à la mémoire, accélérantainsi l’exécution du programme. La plupart des instructions sontdisponibles 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.

Unité 9: Unité centrale de traitement

Page 13: Unité 9: Unité centrale de traitementmarchand/ift17583/Acetates/17583... · L’assembleur est un langage dans lequel chaque instruction corres-pond à une instruction machine.

13

©Pierre Marchand, 2001 304

8.8 Registres du CPURegistres d’indice (XR)

Ces registres d’indice ou d’index peuvent être utilisée comme desregistres généraux. Mais, il ont en plus une fonction spéciale pourmanipuler les tableaux de données avec l’adressage indexé. Dans unte l mode d’adressage, l’adresse de l’opérande est obtenue enadditionnant la partie adresse de l’instruction au contenu du registred’index spécifié.

Dans le Pentium, tous les registres généraux peuvent être utiliséscomme indice.

Unité 9: Unité centrale de traitement

©Pierre Marchand, 2001 305

8.8 Registres du CPURegistre de base

Utilisés pour calculer des adresses effectives, les registres de basesont conçus pour contenir une adresse de référence. Pour obtenirl’adresse effective, il faut y ajouter le contenu du champ adresse del’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 registrede base.

Unité 9: Unité centrale de traitement

Page 14: Unité 9: Unité centrale de traitementmarchand/ift17583/Acetates/17583... · L’assembleur est un langage dans lequel chaque instruction corres-pond à une instruction machine.

14

©Pierre Marchand, 2001 306

8.8 Registres du CPURegistre d’état (PSW)

Le registre d’état, aussi appelé registre de codes condition (Programstatus word ou Condition Code Register) contient différents bitsappelés drapeaux (flags) indiquant le résultat d’une instruction. Les bitsles plus courants sont Z, qui vaut 1 si le résultat de l’instruction est 0, Cqui vaut 1 s’il y a une retenue, N ou S qui vaut 1 si le résultat del’instruction est négatif, et V ou OF, qui vaut 1 s’il y a eu débordementde capacité.

Dans le Pentium, ce registre s’appelle EFLAGS.

Unité 9: Unité centrale de traitement

©Pierre Marchand, 2001 307

8.8 Registres du CPUPointeur de pile (SP)

Ce registre pointe au sommet d’une structure de pile implantée enmé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 inversede celui dans lequel elles ont été enregistrées.

Une fois qu’un mot est lu, son emplacement devient disponible pourune nouvelle information.

Unité 9: Unité centrale de traitement

Page 15: Unité 9: Unité centrale de traitementmarchand/ift17583/Acetates/17583... · L’assembleur est un langage dans lequel chaque instruction corres-pond à une instruction machine.

15

©Pierre Marchand, 2001 308

8.9 Adressage des opérandesLes 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 trouvel’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 + contenudu 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 deregistre de base.

Unité 9: Unité centrale de traitement

©Pierre Marchand, 2001 309

8.10 Taille de l’adresse et taille de la mémoireSoit ADR le nombre de bits dans le champ adresse d’une instruction.

Si ADR = n, la mémoire physique est accessible dans sa totalité. Tousles 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 peututiliser l’adressage basé, si le registre de base a une taille suffisante (nbits). Il suffit de diviser la mémoire en blocs de taille telle que ADRpuisse adresser totalement un bloc. On utilise alors le champ adressepour indiquer le déplacement à l’intérieur du bloc.

C’était le cas du 8088/8086 et du 80186. L’adresse de 16 bits pouvaitadresser 64 Ko, mais les registres de segment permettaient d’atteindre1 Mo.

Unité 9: Unité centrale de traitement

Page 16: Unité 9: Unité centrale de traitementmarchand/ift17583/Acetates/17583... · L’assembleur est un langage dans lequel chaque instruction corres-pond à une instruction machine.

16

©Pierre Marchand, 2001 310

8.10 Taille de l’adresse et taille de la mémoireSi ADR > n, ADR peut adresser des positions de mémoire quin’existent pas en mémoire physique. On profite de cette possibilité pourréaliser la mémoire virtuelle, dans laquelle la mémoire physique peutêtre considérée comme un cache pour la mémoire adressable totalequi est alors placée sur disque. Dans ce cas, l’espace mémoire estdivisé en pages de quelques Ko au lieu de blocs de quelques octets.

Unité 9: Unité centrale de traitement