BTS IG 1 - L’unité de traitement L'unité de traitement I. Introduction Schéma n°1 vide. L'architecture type d'un ordinateur classique s'articule autour de trois modules principaux reliés entre eux par les bus. Ces trois modules sont : la mémoire centrale : composée de la mémoire vive (RAM) et de la mémoire morte (ROM) dans laquelle sont stockées des données et des instructions en cours d'exécution ; l'unité centrale ou CPU (Central Processing Unit) qui assure principalement deux fonctions : d'une part le traitement de l'information réalisé par l'unité arithmétique et logique (UAL) et d'autre part le contrôle du fonctionnement des différents éléments de la machine pris en charge par l'unité de commande ; les interfaces d'entrées-sorties qui permettent l'échange des données entre les périphériques et l'ordinateur. L'unité centrale est sans doute l'élément le plus important des trois. C'est lui, en effet, qui interprète et exécute les programmes chargés dans la mémoire. C'est pourquoi on parle aussi d'unité de traitement ou encore de microprocesseur pour la désigner. Microprocesseurs : 80286, 80486, Pentium de la gamme Intel et 68030, 68040 de Motorola. II. Les registres Ce sont des mémoires très rapides permettant à l'unité de calcul de traiter les données à grande vitesse. Ils sont utilisés pour stocker les informations nécessaires aux traitements (des données ou des adresses). On distingue dans l'unité de traitement plusieurs types de registres. A. Le compteur ordinal Le compteur ordinal (CO), appelé aussi compteur de programme ou compteur d'instruction, permet de mémoriser l'adresse de la cellule mémoire qui contient la prochaine instruction à exécuter. Exemple : mémoire principale 200 201 202 203 I1 I2 I3 I4 Considérons ce programme (suite d'instructions) contenu en mémoire principale qui s'exécutera de façon séquentielle. Chaque instruction, avant son exécution, doit être fournie à l'unité de commande. Le compteur de programme permet donc de donner l'adresse de la cellule mémoire que l'on doit lire pour récupérer l'instruction. Ainsi, le PC va prendre successivement les valeurs 200, 201, 202, 203 et en fin d'exécution la valeur 204. Ce fonctionnement est identique lorsque le programme n'est pas séquentiel (branchement). 1 BTS IG 1 - L’unité de traitement Le compteur de programme est fondamental dans l'architecture d'un processeur, il est nécessaire à la procédure d'exécution des instructions d'un programme. B. Le registre d'état Ce registre contient des informations qui lui sont fournies par l'Unité Arithmétique et Logique. Ces informations sont des indicateurs d'états qui renseignent sur la façon dont s'est déroulée une instruction. C. La mémoire ordinale C'est un registre qui contient l'instruction qui est en cours d'exécution. Celle-ci est décomposée en deux parties : la partie opération ou code opération qui contient la description de l'instruction (addition, soustraction, etc.) la partie opérande ou adresse qui indique au processeur où se trouvent en mémoire les données utiles au traitement. La mémoire ordinale permet de mémoriser l'instruction en cours d'exécution. La première partie de l'instruction (code opération) est stockée dans le registre d'instruction et la seconde partie (adresse des opérandes) est stockée dans le registre d'adresse. D. Le registre d'adresse mémoire Ce registre est placé entre la mémoire centrale et le bus d'adresse. Il contient pendant un laps de temps très court une adresse qui est échangée entre la mémoire centrale et l'unité de traitement. III. Les bus Un bus est un ensemble de lignes (fils électriques) permettant l'échange et le transport des informations au sein de l'ordinateur entre les différents organes de celui-ci. A. Le bus d'adresse Bus sur lequel cheminent les adresses des mots mémoires à lire ou à écrire. Il aboutit sur un décodeur d'adresse au niveau de la mémoire centrale. Ce décodeur permet de reconnaître l'adresse de la cellule mémoire. Il permet ainsi de repérer le mot mémoire où une opération de lecture ou d'écriture doit être faite. bus d'adresse CPU D E. mémoire centrale Le bus d'adresse permet de sélectionner un emplacement dans un composant tel que la RAM, la ROM ou un autre boîtier extérieur à l'unité centrale. Cette sélection se fait à l'aide de deux techniques. 2 BTS IG 1 - L’unité de traitement 1. La sélection linéaire C'est un système de moins en moins utilisé car il était utilisé pour des systèmes ayant de faibles capacités de stockage. Prenons un système nécessitant 2 Ko de ROM et 4 Ko de RAM et un bus d'adresse de 16 bits. A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 sélection des boîtiers d'E/S sélection RAM sélection ROM Avec ce système, on peut coder une adresse sur 12 bits, sélectionner une cellule en ROM, en RAM, ou dans un autre boîtier. Exemple : l'adresse 0001000000001010 indique que la dixième cellule de la ROM est sélectionnée. Cependant l'adresse sera incorrecte si la RAM et la ROM sont sélectionnées en même temps. On peut, pour résoudre ce problème, utiliser un seul bit unique qui permettra la sélection de la RAM ou de la ROM. Pour la sélection des périphériques on utilisera un décodeur à trois entrées. Application sur la sélection linéaire Précisez quel boîtier et quelle case mémoire de ce boîtier sont sélectionnés avec les adresses suivantes : 1) 0010000101100100 (RAM, cellule 000101100100) 2) 0100101000100011 (DD, cellule 101000100011) 3) 1000110000011100 (Disquette, cellule 110000011100) Sachant que la sélection de la disquette se fait en codant 10 sur A15 et A14, et que la sélection du disque dur se fait en codant 01 sur les deux premiers bits. 2. Adressage décodé A15 A14 A13 A12 A11 A10 A9 A8 A7 décodeur 3 A6 A5 A4 A3 A2 A1 A0 BTS IG 1 - L’unité de traitement Voir schéma de fonctionnement d'un décodeur. Application sur l'utilisation d'un décodeur Précisez quel boîtier et quelle case mémoire de ce boîtier sont sélectionnés avec les adresses suivantes : 1) 01101010 (boîtier 3, cellule 01010) 2) 11100011 (boîtier 7, cellule 00011) 3) 10011010 (boîtier 4, cellule 11010) B. Le bus de donnée Sur ce bus transitent des données devant être lue ou écrite en mémoire centrale. La donnée est temporairement déposée dans un mot mémoire tampon avant qu'elle soit écrite dans la mémoire. En effet un certain temps doit s'écouler pour que la mémoire soit apte à recevoir la donnée. TAMPON CPU MEMOIRE CENTRALE Le nombre de fils du bus externe des données et la longueur des mots mémoire de la mémoire centrale spécifient la nature du processeur. Lorsque le nombre de lignes du bus externe correspond à la longueur du mot mémoire on parle de processeur "p bits". Ainsi, un bus de données de 32 bits connecté à une mémoire de mots de 32 bits désigne un processeur 32 bits. Par contre, si l'unité centrale peut traiter des données de 16 bits alors que le bus externe des données n'est composé que de 8 fils, alors on a affaire à un faux processeur 16 bits. Dans ce cas là, chaque mot mémoire est décomposé en deux mots de 8 bits, un de poids faible, l'autre de poids fort. Lorsqu'un échange de données à lieu entre l'unité centrale et la mémoire, l'octet de poids faible est d'abord placé sur le bus de données, et l'opération est ensuite répétée avec l'octet de poids fort. Le bus externe de données est relié au niveau de la mémoire à un multiplexeurdémultiplexeur, servant à aiguiller correctement l'octet de la donnée. TAMPON CPU MUX démultiplexage multiplexage XA XB MEMOIRE CENTRALE 4 BTS IG 1 - L’unité de traitement poids fort poids faible C. Le bus de commande C'est par l'intermédiaire de ce bus que l'unité de commande dialogue avec les différents composants de la machine : mémoire, interface d'E/S, etc. Sur ces lignes circulent : des informations d'ordre provenant de l'unité de commande (exemple : lecture, écriture) certains signaux émis par des organes externes au CPU et dont le traitement par l'unité de commande est prioritaire (exemple : demande d'interruption). Schéma de l'architecture élémentaire d'un processeur bus de données registre mot de données CPU bus d'adresse 1 2 bus de commande 5 MEMOIRE CENTRALE BTS IG 1 - L’unité de traitement IV. L'unité arithmétique et logique L'unité arithmétique et logique (UAL) ou unité de calcul, permet de : - réaliser l'ensemble des opérations élémentaires arithmétiques et logiques, - déplacer l'information à l'intérieur d'un registre, - mettre à jour un certain nombre d'indicateur. Structure de l'UAL. Autres Registres Accumulateur Registre d'Etat U.A.L. Bus de données C'est un système à deux entrées et une sortie, toutes trois reliées au bus de données. L'entrée gauche de l'UAL est conditionnée (reliée à) un registre A, appelé registre accumulateur. Avant la réalisation d'une opération arithmétique ce registre contient une opérande. Lorsque le traitement a lieu le résultat est transféré de nouveau dans le registre. Avant une opération d'addition (3+4), une opérande est placée dans le registre A, l'autre est reliée à l'entrée droite de l'UAL. Après l'opération, le résultat est transféré par la sortie de l'unité de calcul vers le registre A. Le registre d'état constitue le registre des indicateurs d'états. Son contenu est modifié par l'unité arithmétique et logique lorsqu'elle effectue des traitements. Il permet d'apporter au programmeur les éléments suffisants pour élaborer un diagnostic sur la validité de l'opération effectuée par l'unité de calcul. Dans ce registre, chaque bit joue un rôle important : A. Le bit Carry C (bit de retenue) Il permet de mémoriser le p+1ème bit susceptible d'être généré lors d'une opération arithmétique effectuée sur des mots de p bits. Exemple : 111111 + 000001 = 100000. Le dernier 1 est mémorisé dans le bit C. 6 BTS IG 1 - L’unité de traitement B. Le bit de signe S Le bit S du registre d'état correspond au bit de poids le plus fort du résultat d'une opération arithmétique : il vaut 1 si le résultat est négatif et 0 sinon. C. Le bit Z (zéro) Ce bit est positionné à 1 lorsque le résultat d'une opération est nul sinon Z est mis à 0. D. Le bit de parité P Ce bit est positionné à 1 chaque fois que le résultat d'une opération logique à une parité paire. V. Le séquenceur En fonction de l'instruction à traiter, qui vient d'être chargée dans le registre d'instruction (mémoire ordinale), l'unité de commande va devoir émettre un certain nombre de microcommandes vers les autres composants du système. Ces ordres ne devront pas être émis n'importe quand, ni vers n'importe quel composant, mais respecter une chronologie bien précise suivant le type d'instruction à exécuter. Cette chronologie (séquencement) est rythmée par une horloge interne au système. On peut comprendre que plus la fréquence de l'horloge est élevée et plus l'unité centrale travaillera vite. Le composant qui va émettre les microcommandes, en fonction du code opération de l'instruction en place dans le registre instruction, est le séquenceur qui comme son nom l'indique envoie une séquence de microcommandes vers les composants impliqués par l'instruction. VI. Le déroulement d'un programme On peut dire que pour chaque instruction d'un programme on peut distinguer : - une phase de recherche de l'instruction - une phase de traitement de l'instruction. Examinons de plus près chacune de ces deux phases à partir d'un exemple très simplifié de fonctionnement, et, pour en faciliter la compréhension, nous utiliserons des mnémoniques représentant chacune des microcommandes que le séquenceur pourra générer. Dans la réalité, ces microcommandes sont des impulsions électriques émises par le séquenceur. Sur le schéma de l'unité centrale vous pouvez observer que les microcommandes issues du séquenceur sont des petites flèches, flèches que l'on retrouve au niveau des relations qui interviennent entre les divers composants de l'UC et pointent sur une zone grisée. Exemple : la microcommande que nous appellerons LCO (lecture du compteur ordinal) pointe sur la zone grise de la liaison qui va du compteur ordinal au bis d'adresse. Elle autorise donc le transfert du contenu du compteur ordinal sur le bus d'adresse. Voyons désormais les microcommandes. (cf. tableau des mnémoniques). 7 BTS IG 1 - L’unité de traitement A. Recherche de l'instruction Le programme à exécuter est chargé en mémoire centrale où il occupe un certain nombre de cellules mémoire, chaque cellule mémoire ayant donc une adresse bien précise. Le compteur ordinal est chargé, lors du lancement du programme, avec l'adresse de la première instruction à exécuter. Ce chargement se fait grâce au système d'exploitation. Le séquenceur, dans la phase de recherche de l'instruction à exécuter, va alors générer les microcommandes destinées à placer l'instruction dans le registre instruction. LCO PSR LEC LMM CRI ICO Compteur ordinal Bus d'adresse Mémoire centrale Registre mot Bus de données Compteur ordinal +1 -> -> -> -> -> Bus d'adresse Registre adresse mémoire Registre mot Bus de données Registre instruction C'est à dire qu'il va provoquer (LCO) le transfert de contenu du compteur ordinal, qui rappelons le est à ce moment chargé avec l'adresse de la première instruction à exécuter, sur le bus d'adresse. L'adresse de cette première instruction est ensuite transmise (PSR) au registre adresse mémoire, registre jouant le rôle d'aiguilleur (décodeur) indiquant à quelle case de la mémoire centrale on doit aller lire. La micro commande suivante (LEC) autorise la recopie de l'information (ici, une instruction) dans le registre mot. Ce registre ne joue en fait que le rôle de temporisation. Le contenu de ce registre mot est ensuite transféré sur le bus de données grâce à la microcommande LMM. Une microcommande issu du séquenceur (CRI) va maintenant provoquer la recopie du contenu du bus de données dans le registre instruction de la mémoire ordinale. A ce moment l'instruction à exécuter se trouve placée dans le registre instruction et est prête à être décodée et exploitée par le séquenceur. Celui-ci va ensuite générer de nouvelles microcommandes nécessaires à son traitement. Une dernière microcommande du séquenceur (ICO) va provoquer l'incrémentation du compteur ordinal qui va maintenant pointer sur l'adresse de la prochaine instruction à exécuter. Cet ensemble de microcommandes, générant la phase de recherche de l'instruction, est à peu près toujours le même et il sera donc répété dès que le traitement de l'instruction aura donné lieu à l'envoi de la dernière microcommande nécessaire. B. Traitement de l'instruction L'instruction, une fois chargée dans le registre d'instruction, va être soumise au décodeur, qui associé au séquenceur va devoir analyser la partie opération de l'instruction pour ensuite générer la série de microcommandes appropriées. Prenons l'exemple de l'addition de deux nombres tels que 8 et 4 (nombres hexadécimaux) stockés dans la mémoire centrale aux adresses F800 et F810. Le résultat devra ensuite être placé en mémoire centrale à l'adresse F820. 8 BTS IG 1 - L’unité de traitement Pour réaliser ce petit programme trois opérations successives sont nécessaires : charger la première donnée 8 placée dans la mémoire centrale à l'adresse F800 dans le registre accumulateur, faire l'addition du registre accumulateur avec la donnée de trouvant à l'adresse F810 de la mémoire centrale (le résultat de l'addition se trouve dans l'accumulateur), ranger ce résultat dans la mémoire centrale à l'adresse F820. Le programme en "simili" langage assembleur serait le suivant : LD A,(F800) ADD A,F810 LD F820,A Voici la liste des microcommandes générées pour la réalisation du programme précédent. Veuillez expliquer chaque commande en précisant pour chacune d'elles son rôle et son influence sur les données. 9 BTS IG 1 - L’unité de traitement EXECUTION du programme MicroAction ou Résultat commande générée 1ère Etape: LCO charge @ instruction sur bus adresse Charger 1ère Instruction PSR charge @ instruction dans registre adr. mem. LEC écrit instruction dans registre mot LMM écrit instruction sur bus de données CRI charge instruction dans registre instruction ICO incrémente compteur ordinal 2ème Etape: CAD charge @ donnée sur bus adresse Exécuter 1ère Instruction PSR charge @ donnée dans registre adr. mem. LEC écrit donnée dans registre mot LMM écrit donnée sur bus de données CEB charge donnée dans UAL NOP rien CRA charge donnée dans accumulateur 3ème Etape: LCO charge @ instruction sur bus adresse Charger 2ème Instruction PSR charge @ instruction dans registre adr. mem. LEC écrit instruction dans registre mot LMM écrit instruction sur bus de données CRI charge instruction dans registre instruction ICO incrémente compteur ordinal 4ème Etape: CAD charge @ donnée sur bus adresse Exécuter 2ème Instruction PSR charge @ donnée dans registre adr. mem. LEC écrit donnée dans registre mot LMM écrit donnée sur bus de données CEA charge donnée dans UAL CEB charge accumulateur dans UAL ADD additionne les deux données CRA charge résultat dans accumulateur 5ème Etape: LCO charge @ instruction sur bus adresse Charger 3ème Instruction PSR charge @ instruction dans registre adr. mem. LEC écrit instruction dans registre mot LMM écrit instruction sur bus de données CRI charge instruction dans registre instruction ICO incrémente compteur ordinal 6ème Etape: CAD charge @ donnée sur bus adresse Exécuter 3ème Instruction PSR charge @ donnée dans registre adr. mem. EDA charge accumulateur sur bus de données EMM écrit donnée dans registre mot ECR écrit donnée dans mémoire centrale Exercice : réaliser le tableau de fonctionnement (microcommandes générées et explications) pour le programme suivant : soustraire la donnée 3 qui se trouve à l'adresse F2 de la mémoire à la donnée 4D qui se trouve à l'adresse B5 de la mémoire. Placer ensuite le résultat à l'adresse E9 de la mémoire. 10 BTS IG 1 - L’unité de traitement UNITE CENTRALE valeur init LCO PSR LEC LMM CRI ICO CAD PSR LEC LMM CEA NOP CRA LCO PSR LEC LMM CRI ICO CAD PSR LEC LMM CEA CEB SUB CRA LCO PSR LEC LMM CRI ICO CAD PSR EDA EMM ECR Bus adresse CO Accum MO UAL A UAL B UAL S 0001 0001 x x x x x x 0001 0001 MEMOIRE CENTRALE Bus données Reg. Adr. 0001 0002 0003 F2 B5 E9 Reg mot x I1 I2 I3 3 4D x x x 0001 I1 I1 I1 I1 I1 I1 0002 B5 B5 B5 B5 4D 4D 4D 4D 4D 4D 4D 4D 4D 4D 0002 0002 0002 0002 I2 I2 I2 I2 I2 I2 0003 F2 F2 F2 F2 3 3 3 3 4D 3 3 4D 4A 4A 4A 0003 0003 0003 0003 I3 I3 I3 I3 I3 I3 0004 E9 E9 E9 E9 4A 4A 11 4A 4A 4A 4A BTS IG 1 - L’unité de traitement Distribution du devoir à la maison. Exercice Quel sera le pseudo-code du programme qui permettra de réaliser l'opération suivante : D=X+Y-Z? Hypothèses : @ X = 8F, @ Y = 9D, @ Z = 77, @ D = 91. Les adresses des instructions commencent à 100 et vont de 10 en 10. Réponse LD A,8F ADD A,9D SUB A,77 LD 91,A. (@ 100) (@ 110) (@ 120) (@ 130) Ecrire la suite des micro commandes générées pour l'exécution de ce programme. LCO PRS LEC LMM CRI ICO LCO PRS LEC LMM CRI ICO LCO PRS LEC LMM CRI ICO LCO PRS LEC LMM CRI ICO CAD PSR LEC LMM CEA NOP CRA CAD PSR LEC LMM CEA CEB ADD CRA CAD PRS LEC LMM CEA CEB SUB CRA CAD PRS EDA EMM ECR 12