CHAPITRE 3 L’UNITE DE TRAITEMENT ( CPU) Introduction : L’unité centrale de traitement (UCT) appelée aussi processeur central (Central Processing Unit = CPU) est l’élément moteur de l’ordinateur qui interprète et exécute les instructions du programme. Il est intimement associé à la mémoire centrale ou sont stockées ces instructions avec leurs données à traiter elle est composée de deux unités fonctionnelles. L’unité arithmétique et logique (UAL) qui effectue les opérations arithmétiques et logiques. L’unité de contrôle et de commande (UCC) qui commande l’exécution de toutes les opérations à tous les niveaux (UAL, MC, E/S) ainsi que le contrôle de leur déroulement. Comment fonctionne l’ensemble UCC et UAL ? On suppose un programme en cours d’exécution, les instructions et les données sont stockées en mémoire centrale à des adresses bien définies, comment se déroule l’exécution d’une instruction ? L’unité de contrôle et commande cherche en mémoire centrale l’instruction en lui envoyant une adresse et une commande. L’instruction est transférée vers l’UCC pour décodage, qui va déterminer l’opération à exécuter. Des signaux sont envoyés à l’UAL pour déclencher l’opération. Les données nécessaires sont acheminées de la mémoire centrale MC vers l’unité arithmétique et logique (UAL). Une fois l’exécution terminée, les résultats sont envoyés à la mémoire centrale. Exemple : On considère le programme PASCAL suivant : Begin Read(a) ; Read(b) ; S :=a+b ; Write(S) End. 1 Une fois le programme lancé, l’unité de traitement commande d’introduire les données en mémoire qui seront introduites par clavier et occupent des emplacements en mémoire centrale. l’exécution de l’instruction S :=a+b engendre les opérations suivantes : Transfert de l’instruction vers l’UCC ou elle est décodée. Transfert des deux opérandes vers l’UAL . Exécution de l’opération d’addition. Transfert du résultat vers la mémoire L’instruction Write(S) engendre : Une commande de lecture du contenu de la variable S en mémoire centrale Une commande d’entrée/sortie adressée au périphérique concerné (écran) Transfert du contenu de la variable S pour son affichage sur écran. Begin et End annoncent le début et la fin du programme. 1-L’unité arithmétique et logique UAL Elle effectue des opérations arithmétiques et logiques, elle est dotée de circuits logiques capables de réaliser les fonctions logiques ET, OU, NON, etc, et des opérations arithmétiques addition, soustraction, division, décalage, test d’infériorité, supériorité…etc. Réalisation d’une UAL 1 bit Pour concevoir une UAL à 1 bit qui traite 4 opérations a ET b, a OU b, NON b, a+b On doit disposer d’un circuit capable de sélectionner l’opération à exécuter, ce circuit doit avoir deux entrées F0 et F1, à partir desquelles, on peut effectuer 4 choix (00, 01, 10, 11) ce circuit ne peut être qu’un décodeur à deux bits. Pour réaliser l’opération arithmétique A+B, on utilise un circuit appelé additionneur, il doit prendre en considération une éventuelle retenue. F0 F1 Décodeur 2 Cette UAL est capable de calculer le ET, le OU de 2 bits, le NON du second bit, et la somme des 2 bits avec une retenue d’entrée. Le choix parmi ces quatre opérations se fait via les deux lignes de commandes F0 et F1. Suivant la valeur de ces 2 bits, le décodeur active une des quatre lignes de sortie, sélectionnant soit une des trois fonctions logiques (a et b,a ou b, non b) soit la retenue et la sortie de l’additionneur. Ainsi en reliant chacune des trois premières sorties du décodeur à la porte logique appropriée par une porte AND on active une des 3 opérations logiques et en reliant la quatrième sortie à l’additionneur par une porte AND on active l’additionneur et notre schéma complet de l’UAL 1 bit sera le suivant : retenue Remarque : pour réaliser une UAL à n bits on a qu’à relier n circuits d’UAL à 1 bits. Une UAL peut être caractérisée par sa taille et ses possibilités Sa taille, ou largeur, correspond a la taille maximale des nombres que l’UAL peut traiter Les possibilités de l’UAL correspondent simplement aux différentes commandes qu’elle reconnaît. Le constructeur d’un processeur a toujours la possibilité d’étendre les capacités de l’UAL (en autorisant des opérations plus complexes) ou d’augmenter sa taille (pour permettre la manipulation de nombres plus grands). Mais cela implique d’utiliser plus de portes logiques et donc d’occuper plus de place sur la puce, au détriment des autres circuits. 3 2-L’unité de commande et de contrôle UCC : L’UCC accomplit deux fonctions : commander et contrôler en utilisant des circuits pour décoder les instructions du programme et les transformer en signaux de commande vers toutes ces unîtes. 2-1- structure d’une UCC Les principaux éléments d’une UCC qui lui permettent d’accomplir ces taches sont. a-Le compteur ordinal (CO) Le registre CO (Program Counter = PC) contient toujours l’adresse en mémoire de la prochaine instruction à exécuter. Le CO est automatiquement incrémenté après exécution de chaque instruction, ainsi le programme est exécuté en séquence à moins qu’il contienne une instruction modifiant la séquence (par exemple, une instruction de saut ou un branchement). Dans ce cas, la nouvelle adresse remplacera le contenu du CO. b- Le registre instruction (RI) Lorsque le processeur va chercher une instruction en cours d’exécution en mémoire, il la place dans le RI. La taille du RI correspond à la taille du mot mémoire . Le programmeur n’a pas accès au RI. Les bits correspondants à la zone « code opération », sont envoyés au décodeur pour qu’il détermine l’opération à exécuter. c- Le décodeur : C’est un circuit combinatoire qui détermine quelle opération doit être effectuée (étudié en chapitre 2). d-Le séquenceur : Le séquenceur est un automate qui génère les signaux de commande nécessaires pour actionner et contrôler les unités qui participent à l’exécution d’une instruction donnée il peut être réalisé de 2 façons. Câblé : circuit séquentiel complexe qui fait correspondre à chaque instruction exécutable un sous-circuit capable de commander son déroulement. Le sous-circuit approprié est activé par un signal provenant du décodeur Microprogrammé : suite de micro-instructions stockées dans une mémoire rapide. .Ce microprogramme génère une suite de signaux de commandes équivalents à celle produites par un séquenceur câblé. e- L’horloge : Le rôle de l’horloge dans l’UCC est de générer des signaux périodiques qui définissent le cycle machine qui correspond à la durée élémentaire régissant le fonctionnement de la machine, il synchronise toutes les actions du processeur. 2-2 Fonctionnement d’une UCC : Essayons de suivre les étapes d’exécution d’une instruction machine cette instruction comporte 2 champs. Code opération (obligatoire). un ou plusieurs champs adresse. Instruction = code opération + adresse opérande L’instruction passe par 2 cycles. - Cycle de recherche : cherche l’instruction et décode. - Cycle d’exécution : exécution par l’UAL de l’instruction. 4 On résume le cycle de recherche par : 1. Transfert de l’adresse de la nouvelle instruction à exécuter du CO vers le registre adresse mémoire RA (en MC) 2. Une commande est généré par l’UCC pour lire l’instruction et l’envoyer vers le registre RM. 3. L’instruction est transférée dans RI (code op + adresse op). 4. Pendant que l’adresse de l’opérande est envoyée vers RA le code opération est transmis au décodeur qui détermine le type de l’opération et le transmet au séquenceur. 5. Le CO est incrémenté pour le suivant le cycle de recherche s’il ne s’agit pas d’une instruction de branchement. Le cycle d’exécution comprend les étapes suivantes : 1- Le séquencer lance des signaux de commande vers le mémoire pour lire l’opérande à l’adresse déjà stockée dans le RA et le transférer dans RM. 2- Transfert du contenu de RM vers l’UAL, et plus précisément vers l’accumulateur ou tout autre registre affecté à l’opération spécifiée. 3- L’opération est effectuée sous contrôle du séquenceur. 4- L’opération est effectuée sous cont Cycle d’exécution d’une instruction Cycle de recherche d’une instruction 5 On récapitule le fonctionnement d’un processeur à accumulateur dans le schéma suivant Schéma général du fonctionnement d’un CPU 3 - Structure d’une instruction machine : La suite d’instruction écrites dans un langage évolué est traduite en langage machine pour qu’elles puissent être traitées par la machine, l’instruction machine comporte Un champ code opération (obligatoire) Un ou plusieurs champs d’adresse. Le format d’une instruction diffère d’une machine à une autre on emploie souvent l’expression Machine à n (=0, 1, 2, 3, 4) adresses pour indiquer ce format. a- Machine à 4 adresses Ce format a été utilisé dans les premiers ordinateurs Cod-op A1 Code-opération @1er opérande A2 A3 @ 2eme opérande @ résultat 6 A4 @ instr suivante b- Machine à 3 adresses Le champ instruction suivante a été supprimé ; c’est le compteur ordinal qui sauvegarde cette adresse. c- Machine à 2 adresses Le champ adresse du résultat a été supprimé et sera placé à la place de celle du 2eme opérande. d- Machine à 1 adresse Dans ce cas le format de l’instruction ne contient qu’une seule adresse c’est l’adresse de premier opérande, le deuxième opérande se trouve dans l’accumulateur. e- Machine à 0 adresse (à pile) Ce type de machine utilise une pile, elle est gérée en utilisant deux instructions a une adresse. PUSH X : permet de placer X au sommet de la pile (empiler) POP X : permet de stocker en mémoire à l’adresse y, la valeur qui se trouve au sommet de la pile (dépiler) Remarque : pour exemples et schémas voir TD. 4. Jeu d’instruction et modèles de programmation Le terme jeu d’instruction (Instuction Set) représente l’ensemble des instructions qu’un processeur est capable d’exécuter. 4-1 Architecture du jeu d’instructions Selon que le nombre d’instructions dans le jeu est grand ou réduit, on distingue deux familles de microprocesseurs : • les CPU à architecture CISC (Complex Instruction Set Computer) qui signifie processeurs à jeu d’instructions complexe. • les CPU à architecture RISC (Reduced Instruction Set Computer ). qui signifie processeurs à nombre d’instructions réduirts. Ces deux architectures représentent deux visions différentes ayant chacune avantages et inconvénients ; dans le tableau suivant on dresse les caractéristiques de chacune. RISC CISC instructions simples ne prenant qu'un seul cycle instructions complexes prenant plusieurs cycles Compilateur complexe Compilateur simple Décodeur simple Décodeur complexe seules les instructions chargement rangement ont toutes les instructions sont susceptibles accès à la mémoire d'accéder à la mémoire instructions au format fixe instructions au format variable beaucoup de registres peu de registres peu de modes d'adressage beaucoup de modes d'adressage 7 Les instructions que l’on retrouve dans chaque microprocesseur peuvent être classées en 4 Catégorie : 1- Transfert de données pour charger ou sauver en mémoire, effectuer des transferts de registre à registre, etc… 2- Opérations arithmétiques : addition, soustraction, division, multiplication 3- Opérations logiques : ET, OU, NON, NAND, comparaison, test, etc… 4- Contrôle de séquence : branchement, test, appel de procédure etc… 4-2 Modèles de programmation Sur la plupart des machines, on retrouve deux modèles de programmations a- Les architectures à registres généraux : les instructions lisent leurs opérandes dans des registres et y écrivent leurs résultats. Cet ensemble de registres est appelé fichier de registre généraux. b- Les architectures à pile : les instructions lisent leurs opérandes et écrivent leurs résultats dans une pile. Remarque : voir TD pour exemples. 5-Modes d’adressage Un mode d'adressage définit la manière dont le microprocesseur va accéder à l’opérande. Les différents modes d'adressage dépendent des microprocesseurs mais on retrouve en général : Adressage immédiat La valeur de l'opérande est contenue dans le champ adresse Adressage-registre. Le champ adresse contient le numéro du registre opérande. Adressage direct Le champ adresse de l'instruction contient l'adresse effective de l'opérande. MOV R2, 100 Après cette instruction le registre R2 contiendra le mot qui se situe à l'adresse 100 en mémoire. Adressage indirect Le champ adresse contient l'adresse d'un pointeur : mot en mémoire qui contient l'adresse effective de l'opérande. MOVE r3, (r2) Après cette instruction r3 contiendra la valeur du mot dont l'adresse est contenue dans r2 8 Adressage indexé Ce mode d'adressage est très utile lorsqu'on travaille, par exemple, sur des tableaux. Adressage relatif L'adresse effective est obtenue en additionnant le contenu du compteur ordinal au contenu du champ adresse de l'instruction. Ce type d'adressage est utilisé par exemple dans des instructions de branchement. 6-Les registres du processeur En plus des registres cités avec l’UCC et la mémoire centrale on peut citer : Registre Accumulateur (ACC) : L’accumulateur est un registre très important de l’UAL. Dans la plupart des opérations arithmétiques et logiques, l’ACC contient un des opérandes avant l’exécution et le résultat après. Il peut aussi servir de registre tampon dans les opérations d’E/S. Il est accessible par programmation. Registre d’état (RE, PSW = Program Status World) Appelé aussi registre des indicateurs, le registre d’état contient différents bits appelés drapeaux (flags) indiquant l’état d’une condition particulière dans la CPU. • Le bit indicateur ZF indique si le résultat de l’opération effectuée est égal à zéro ; • le bit indicateur CF indique génération de retenue dans l’ACC, • le bit indicateur OF indique un débordement … etc. Ces bits peuvent être testés par programme et ainsi déterminer la séquence d’instructions à suivre. Registres généraux ou banalisés Ils permettent de limiter les accès à la mémoire, ce qui accélère l'exécution d'un programme. Ils peuvent conserver des informations utilisées fréquemment, des résultats intermédiaires, etc. Ils sont accessibles au programmeur 9 7-Les bus Un bus est un ensemble de fils qui assure la transmission du même type d’information. On retrouve trois types de bus véhiculant des informations en parallèle dans un système de traitement programmé de l’information : - un bus de données : bidirectionnel qui assure le transfert des informations entre le microprocesseur et son environnement, et inversement. Son nombre de lignes est égal à la capacité de traitement du microprocesseur (véhicule les données). - un bus d'adresses: unidirectionnel qui permet la sélection des informations à traiter dans un espace mémoire ou espace adressable (véhicule les adresses) . - un bus de commande: constitué par quelques conducteurs qui assurent la synchronisation des flux d'informations sur les bus des données et des adresses (véhicule les commandes). 10