Introduction générale Introduction aux ordinateurs Un ordinateur est un ensemble d’équipements chargés de traiter des données: Unités d’entrée Unité de traitement Unités de sortie Ces données sont transmises par le biais d’unités d’entrée à l’unité de traitement L’unité de traitement effectue le traitement demandé Le résultat du traitement est transmis aux unités de sortie qui permettent alors d’exploiter ces résultats. Un ordinateur se présente généralement sous forme d’un boitier contenant l’unité centrale de traitement et quelques périphériques, d’un clavier, d’une souris, et d’un écran. L’unité centrale de l’ordinateur, ou le processeur, ou encore le microprocesseur (si c’est un circuit intégré), est le circuit qui effectue toutes les opérations de traitement et est donc le cerveau de l’ordinateur. Il travaille en étroite collaboration avec la mémoire centrale (la communication entre eux est rapide, ce qui fournit plus de puissance à la machine), avec laquelle il forme l’unité centrale de traitement. 1 Introduction générale Introduction aux ordinateurs Les autres éléments de l’ordinateur clavier, souris, écran, imprimante, modem, mémoire auxilliaire (lecteur de disquettes, disque dur, CD ROM , flash disk…), table traçante, … sont appelés périphériques, ou unités d’entrée sortie (E/S). La partie de l’ordinateur qui nous intéresse particulièrement est le processeur, puisque le but de la première partie de ce cours est la conception d’un processeur de base. La technologie de base utilisée pour la réalisation de processeurs numériques, est l’électronique digitale. Tout processeur est constitué de circuits digitaux combinatoires (portes logiques, multiplexeurs, décodeurs, additionneurs,…), et séquentiels (bascules, registres, compteurs, mémoires, …), qui traitent, transfèrent, et mémorisent des informations, selon des règles définies en fonction de l’organisation et de la structure de ces différents éléments. Le cours est donc organisé de manière à rappeler des notions d’electronique digitale vues en troisième année, et nécessaires à la conception du processeur de base, et à définir une méthode de conception modulaire d’un processeur, actuelle, et valable pour concevoir du plus simple au plus sophistiqué et complexe des processeurs. Dans le premier chapitre nous rapellerons les principaux circuits combinatoires et séquentiels succeptibles d’être utilisés dans un processeur. Dans le chapitre 2 nous introduirons le langage de transfert inter registre (LTR), qui est un langage de programmation de circuit (la partie hard, et non la partie soft), et qui permet de décrire toute opération logique se déroulant dans un processeur à chaque impulsion d’horloge. Le chapitre 3 décrira différentes organisations de processeurs généraux classiques. Les informations de ces trois premiers chapitres seront utilisées dans le chapitre 4 pour effectuer les choix et hypotèses, et concevoir un processeur de base possédant un configuration minimale, mais complète et fonctionnelle. Le chapitre 5 conçoit une version micro programmée (unité de contrôle programmée et non câblée) du processeur de base. 2 Chapitre 1 Rappels Chapitre I Rappels I. Introduction : La conception du processeur de base nécessite le rappel de notions d’Electronique digitale vues en troisième année. Sachant qu’un processeur est un ensemble de registres contenant des données sur lesquelles des opérations logiques sont exécutées, selon les ordres reçus par des programmes, et transmis à un circuit de contrôle qui activent ces opérations, on déduit qu‘un processeur, ou unité centrale, est constitué d’une unité de contrôle et d’une unité de traitement. Unité de traitement Unité de contrôle Unité centrale Durant ce cours nous comprendrons comment tout cela fonctionne impulsion d’horloge par impulsion d’horloge. Dans ce premier chapitre , nous commencerons par décrire les circuits combinatoires et séquentiels de base utilisés dans un processeur. Il est important de noter que leur étude concernera surtout leurs aspects fonctionnels, leurs rôles, et leurs utilisations ; on supposera généralement que le circuit intégré correspondant existe sans chercher à le construire (comme c’était le cas en troisième année). II. Les circuits combinatoires de base : Un processeur exécute des opérations logiques et des opérations arithmétiques sur les données qui lui sont fournies. La préparation et le transport des données pour le traitement : est le premier problème à résoudre dans la conception d’un processeur. Le routage des informations, leur transfert vers une source sélectionnée parmi plusieurs possibles, vers une destination 3 Chapitre 1 Rappels sélectionnée elle aussi parmi plusieurs possibles, nécessite l’utilisation de circuits logiques spécifiques tels que les multiplexeurs et les décodeurs.. En ce qui concerne les opérations logiques :L’algèbre de Boole spécifie que toutes les opérations logiques peuvent être exécutées comme une combinaison de ‘AND’ et ‘NOT’, ou ‘OR’ et ‘NOT’ . Ce sont donc des portes logiques de base qui sont utilisées. En ce qui concerne les opérations arithmétiques : elles ont nombreuses, et les plus connues sont l’addition, la soustraction, la multiplication, la division, l’exponentiation … Toutes les autres pouvant être représentées comme une somme de produits et de quotients grâce aux développements limités. La soustraction, la multiplication, et la division, peuvent être exécutées autour de l’opération d’addition : La soustraction peut en effet être remplacée par la somme du complément à 2, et la multiplication et la division par une succession d’additions et de décalages. Dans un circuit d’exécution d’opérations arithmétiques, l’additionneur apparaît comme étant un circuit de base. Les opérations arithmétiques et logiques sont généralement exécutées dans un circuit, qui est le cœur de l’unité de traitement dans un processeur, appelé l’unité arithmétique et logique ou UAL. 1 L’additionneur : - le demi-additionneur : C’est un circuit réalisant une opération arithmétique entre deux bits. Les deux entrées du circuit représentent les bits x, et y à additionner, et les sorties, le bit somme S et le bit retenue C. x 0 0 1 1 y 0 1 0 1 s 0 1 1 0 c 0 0 0 1 a- Table de vérité s=xy x y s c = xy c b- circuit logique - l’additionneur complet : L’additionneur complet réalise l’addition de trois bits, deux bits significatifs, x et y, et la retenue z d’une addition précédente. Les sorties s et c sont leur somme et leur retenue respectivement. 4 Chapitre 1 Rappels s=xyz c = xy + z(x y) x 0 0 0 0 1 1 1 1 y 0 0 1 1 0 0 1 1 z 0 1 0 1 0 1 0 1 s 0 1 1 0 1 0 0 1 c 0 0 0 1 0 1 1 1 s x y z c b- circuit logique a- Table de vérité 2 Le soustracteur complet : Ce circuit combinatoire réalise la soustraction de deux bits x, et y en considérant la retenue de la soustraction de deux bits de la position inférieure. L’opération de soustraction, est cependant souvent remplacée par l’addition du complément à deux. Les résultats du soustracteur diffèrent de ceux de l’additionneur par la valeur de la retenue (la somme étant égale à la différence). s=xyz c = xy + z(x y) x 0 0 0 0 1 1 1 1 y 0 0 1 1 0 0 1 1 z 0 1 0 1 0 1 0 1 s 0 1 1 0 1 0 0 1 c 0 1 1 1 0 0 0 1 z a- Table de vérité 3 s x y c b- circuit logique Les décodeurs : D’une manière générale, un décodeur est le circuit d’une fonction digitale qui traduit l’information binaire d’un code en entrée vers un autre code en sortie. Notre étude concernera principalement le décodeur nx2n , dont une seule des 2n sorties est activée à la fois, pour chacune des combinaisons des n entrées. Le décodeur 2x4 ci dessous , montre le principe de fonctionnement du décodeur : 5 Chapitre 1 - Rappels Le décodeur 2x4 x y x 0 0 1 1 DCD 2x4 y S1 S2 S3 0 1 0 0 1 0 1 0 0 0 0 1 1 0 0 0 b- table de vérité a- schéma bloc S4 0 0 0 1 o o S1 o S2 o S3 S4 c- circuit logique Cette description du décodeur permet de déduire qu’il sera utilisé pour activer une et une seule, parmi plusieurs destinations , comme nous le verrons dans le chapitre 2 lors de la construction de bus ou dans de nombreuses autres applications. - Les décodeurs avec ligne d’activation : S1 S2 S3 S4 x DCD 2x4 y act schéma bloc Si la ligne d’activation est égale à 1, le décodeur fonctionne normalement. Si la ligne d’activation est égale à zéro, toutes les sorties du décodeur sont nulles. - Application Construction d’un décodeur 3x8 à partir de deux décodeurs 2x4 avec ligne d’activation. a 0 0 0 0 1 1 1 1 b 0 0 1 1 0 0 1 1 c 0 1 0 1 0 1 0 1 S1 S2 S3 S4 S5 S6 S7 S8 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 b x c y a act DCD 2x4 x y Table de vérité DCD 2x4 S1 S2 S3 S4 S5 S6 S7 S8 act 6 Chapitre 1 Rappels Les 8 sorties du décodeur 3x8 sont prises au niveau des sorties des 2 décodeurs 2x4. Puisqu’une seule sortie du décodeur 3x8 doit être activée à la fois, à chaque fois qu’un des 2 décodeurs 2x4 est activé, l’autre doit être désactivé. Les deux entrées d’activation doivent donc être inversées, et elles correspondent à l’entrée a du décodeur 3x8 Les zones grises de la table de vérité montrent le fonctionnement d’un décodeur 2x4 sans ligne d’activation ; pour a=0, c’est le premier décodeur qui est activé, et pour a=1c’est le deuxième. Les variables b, et c sont donc directement reliées aux entrées x et y des deux décodeurs 2x4. 4 Les démultiplexeurs : Un démultiplexeur est un circuit qui a une entrée de données, n entrées de sélection, et 2n sorties. L’entrée de donnée E est transmise sur la sortie sélectionnée par une combinaison des n lignes de sélection. 2n sorties E DMUX sel n On remarque que le démultiplexeur possède un circuit identique à celui d’un décodeur avec ligne d’activation, de même dimension. (E est la ligne d’activation, et les entrées de sélection sont les entrées du décodeur). La différence réside uniquement dans la fonction des circuits : Le décodeur est utilisé pour contrôler d’autres circuits (activer, désactiver, sélectionner une destination …) Le démultiplexeur est utilisé pour transporter une information, une donnée, dont la valeur 0 ou 1 n’a pas d’influence sur son fonctionnement. 5 Les multiplexeurs : Un multiplexeur possède 2n entrées de données, n lignes de sélection et une seule sortie. Chaque combinaison des n lignes de sélection choisit une seule entrée à transmettre en sortie. 7 Chapitre 1 - Rappels Exemple: Multiplexeur 4x1 E1 E2 E3 E4 S0 0 0 1 1 S MUX sel S1 0 1 0 1 S E1 E2 E3 E4 b- Table de vérité n a- Schéma bloc S0 S1 o o E1 o E2 E3 S o E4 c- circuit logique Les multiplexeurs sont souvent utilisés pour la sélection de source de données, alors que les décodeurs le sont pour la sélection de destination. Dans les chapitres suivants, nous considérerons que ces circuits existent sous forme intégrée, et que nous n’aurons pas à les construire. 6 Les buffers à 3 états : Un buffer à trois états possède une entrée, une sortie, et une ligne d’activation. Si la ligne d’activation est égale à 1, la sortie prend l’état de l’entrée , 0 ou 1. Sinon, le buffer fonctionne en circuit ouvert ( non connecté). act act E S Buffer à 3 états S E Interrupteur Un buffer à 3 états est équivalent à un interrupteur qui peut être soit ouvert, soit fermé. 8 Chapitre 1 - Rappels Equivalence multiplexeurs <-> buffers à 3 états. Un multiplexeur à n entrées peut être remplacé par n buffers à 3 états , et un décodeurs à k entrées telles que 2k= n E1 E2 E3 E4 E1 E2 E3 E4 S MUX sel sel 2 2 S DCD 2x4 b- Circuit équivalent à base de 4 buffers à 3 états a- Multiplexeur à 4 entrées Le décodeur 2x4 assure qu’un seul buffer à 3 états peut être activé à la fois (donc pas de conflits à la sortie des buffers). Pour chacune des combinaisons des deux lignes de sélection, un seul buffer est activé, son entrée est transmise vers la sortie S, et les autres buffers fonctionnent en circuit ouvert. III. Les circuits séquentiels de base Dans un circuit séquentiel la valeur en sortie et l’état présent du circuit, dépendent, non seulement des valeurs présentes en entrées, mais également de l’état précédent, ou passé du circuit. Ceci nécessite le stockage d’informations sur les états passés, et donc l’utilisation de circuits de mémoire, dont les éléments de base sont les bascules. 1 Les bascules : - La bascule RS H R Q S Q a- Schéma bloc S R Q+ 00 Q 01 0 10 1 1 1 -b- Table d’état QQ+ S R 00 0X 01 10 10 01 11 X0 b- Table d’excitation 9 Chapitre 1 - Rappels La bascule JK H J Q K Q J K Q+ 00 Q 01 0 10 1 11 Q a- Schéma bloc - b- Table d’état JK 0X 1X X1 X0 b- Table d’excitation La bascule D H D Q Q a- Schéma bloc - QQ+ 00 01 10 11 D Q+ 0 0 1 1 QQ+ 00 01 10 11 b- Table d’état D 0 1 0 1 b- Table d’excitation La bascule T H T Q Q a- Schéma bloc QQ+ 00 01 10 11 T Q+ 0 Q 1 Q T 0 1 1 0 b- Table d’excitation b- Table d’état Les bascules sont utilisées à la base de tous les circuits séquentiels classiques, constitués de bascules (dont le nombre, k, dépend du nombre d’états, < à 2k , du système), et d’un circuit combinatoire qui contrôle les entrées des bascules (donc leurs changements d’états), et fournit les sorties du système. H Entrées secondaires Entrées primaires Circuit combinatoire J Q K Q Sorties H J Q K Q 10 Chapitre 1 2 Rappels Les bascules maître esclave Une bascule maître esclave est constituée d’une bascule maître, d’une bascule esclave, et d’un inverseur connectés comme suit: H S Q R Q Y Y S Q R Q Schéma bloc de la bascule maître esclave Quand l’horloge H est égale à 1: les valeurs en entrée de S et R sont transmises à la bascule maître. Quand l’horloge H est égale à 0: la bascule maître est désactivée. La bascule esclave est activée, et elle copie la valeur Y (l’état de la bascule maître) . La bascule maître esclave ne change d’état qu’au front descendant de l’horloge. Cette propriété importante permet les échanges inter registres, et les transferts simultannés, qui peuvent être effectués en une impulsion d’horloge; sans les bascules maître esclaves, ces transferts nécessiteraient des registres intermédiaires, et 3 impulsions d’horloge. - Note importante: Nous formulons ici deux hypothèses importantes que nous utiliserons tout au long du cours TEC 586; 1ère hypothèse: Tous les circuits séquentiels sont à base de bascules maître-esclaves. 2ème hypothèse: Tous les circuits séquentiels sont synchrones (excités par une même horloge). 3 Les registres: Un registre est un ensemble de bascules , et portes logiques. Le nombre de bascules spécifie le nombre de bits stockés dans le registre. Il possède des entrées de données, série, ou parallèles, et des entrées de contrôle, qui commandent son fonctionnement. Les registres possédant la fonction de chargement parallèle sont les plus souvent utilisés dans les ordinateurs. Les registres à décalage à gauche ou à droite avec entrée série, sont nécessaires aux opérations série, et de décalage. 11 Chapitre 1 4 Rappels Les compteurs binaires: Les compteurs binaires avec chargement parallèle, remise à zéro, et autres fonctions existent. Les compteurs à séquence binaire, et progressifs-regressifs (up and down) sont indispensables à diverses fonctions de comptage, et de pointage dans une unité centrale. 5 Les mémoires: Nous considérons ici les éléments de la mémoire centrale constituée d’une partie RAM (mémoire vive), et d’une mémoire ROM (read only memory ou mémoire morte). Les autres méoires, disques, CD ROM, flash disk, bande magnétique, … sont appelées mémoires auxiliaires et font partie des périphériques. - Les mémoires RAM: Dans une RAM (Random Access Memory), l’accès en lecture ou en écriture, aux registres de stockage qui la constituent, se fait, selon les besoins, de manière séquentielle, ou aléatoire, contrairement à l’accès aux données stockées sur bandes magnétiques par exemple (qui doit se faire séquentiellement). Propriété d’une mémoire RAM: Un mot est stocké dans un registre de la mémoire Un mot de 8 bits est appelé octet (byte); un mot de 16 bits est appelé mot (word). Un mot est localisé par son adresse (unique) Un mot de n bits est constitué de n cellules de bases La totalité des n bits formant un mot, est lue ou écrite à chaque accès à la mémoire. Ceci nous permet de déterminer les entrées et sorties de la RAM comme suit: Données n Adresses k Lec ecrit RAM mxn Sorties n La RAM mxn est une mémoire de m mots de n bits, et possède : n lignes de données en entrée n lignes de données en sortie Un bus de k lignes d’adresses tel que 2k=m Un bus de contrôle constitué de 2 lignes de commande de lecture et d’écriture. Schéma bloc d’une RAM mxn 12 Chapitre 1 - Rappels Les mémoires ROM: Le contenu d’une mémoire ROM est fixé durant sa fabrication, et ne peut être altéré. On y accède uniquement pour lire le contenu d’un mot spécifié par une adresse. Elle peut être livrée sous forme de : PROM ( programmable ROM) : initialisée à 0 et programmable une seule fois. EPROM (erasable PROM) : effaçable par UV, et reprogrammable plusieurs fois. EEPROM (electrically erasable PROM) : effaçable par électricité, et reprogrammable plusieurs fois. La fonction de la ROM permet de déduire son schéma bloc comme suit : Sorties n ROM mxn Adresses k La ROM mxn est une mémoire de m mots de n bits, et possède : n lignes de données en sortie Un bus de k lignes d’adresses tel que 2k=m Eventuellement une ligne d’activation , dont la présence permet de construire des ROM de plus grande capacité act Schéma bloc d’une ROM mxn - Application1: construction d’une RAM 8x3 : Une RAM 8x3 est une RAM de 8 mots de 3 bits chacun. Chaque bit est stocké dans une cellule de base (CB). En se basant sur le fonctionnement de la RAM , on peut déduire les propriétés suivantes pour une CB: D lect CB S ecri sel Cellule de base : schéma bloc Elle possède en entrée : Une ligne d’activation ou de sélection sel Une ligne d’entrée de donnée D Une ligne de commande d’écriture écrit Une ligne de commande de lecture lect Elle possède en sortie : Une de sortie de donnée S Si la cellule est sélectionnée en lecture, son contenu apparaît sur sa sortie S Si la cellule est sélectionnée en écriture, la donnée présente à l’entrée D y est stockée. Hypothèse : une CB non sélectionnée en lecture a une sortie nulle. 13 Chapitre 1 Rappels Une RAM 8x3 contient 8x3=24 CB puisque chaque mot en contient 3. D’après les propriétés d’une RAM , un mot est utilisé en entier (tous ses bits) en lecture ou en écriture. Les CB d’un même mot sont donc sélectionnées en même temps, en lecture, ou en écriture. Une RAM 8x3 est de 8 mots donc k lignes d’adresse telles que: 2k=8; donc k=3. A0, A1, A2 Un mot doit être activé à la fois, et par une adresse unique; on utilise donc un décodeur 3x8 pour activer un seul mot en décodant son adresse. Chaque mot possède 3 bits , la Ram a donc 3 lignes de données en entrée: D0, D1, D2 Et 3 lignes de données en sortie S0, S1, S2. Quand un mot est sélectionné en écriture sa cellule CB0 reçoit l’entée D0, CB1 reçoit, D1, et CB2 reçoit D2 Quand un mot est sélectionné en lecture, chaque Si reçoit un parmis 8 Cbi sélectionné par un MUX 8x1, contrôlé par les Ai D L E sel D L E sel D L E sel D L E sel D L E sel D L E sel CB S D0 D1 D2 A0 A1 A2 CB S CB S DCD 3x8 Lect CB S MUX 8x1 Ai CB S CB S MUX 8x1 S0 S1 S2 MUX 8x1 3 D L E sel CB S D L E sel CB S D L E sel CB S Ecrit RAM 8x3 : Schéma interne 14 Chapitre 1 - Rappels Application2 : Construction d’une ROM 8x4 Soit à construire une ROM 8x5 dont le contenu est donné dans la table ci-dessous : A0 0 0 0 0 1 1 1 1 Adresse A1 0 0 1 1 0 0 1 1 A2 0 1 0 1 0 1 0 1 mot S0 m1 0 m2 0 m3 1 m4 0 m5 0 m6 1 m7 0 m8 1 Contenu S1 S2 S3 0 1 0 1 0 1 1 1 1 0 1 0 0 0 0 0 0 1 1 1 1 0 0 1 S4 0 1 1 0 0 0 1 0 Contenu de la ROM 8x5 La ROM est une mémoire en lecture seule dans laquelle on ne peut pas écrire. Une même adresse (entrée A0A1A2), fournit toujours la même sortie. Le tableau ci dessus devient la table de vérité d’un circuit combinatoire, exprimant les sorties Si, en fonction des entrées, Ai. La ROM , à l’inverse d’une RAM peut donc être réalisée à l’aide d’un circuit combinatoire et non de bascules. Il est possible d’extraire l’expression logique de chaque Si, en fonction des Ai, puis de construire les circuits logiques. Ce procédé est cependant coûteux puisqu’il s’agit de construire une ROM complètement personnalisée pour chaque concepteur ou utilisateur de ROM. Un système de fusibles est envisagé et permet la standardisation de la construction des ROM jusqu’à l’avant dernière étape de la construction micro électronique. La dernière, celle du dernier masque est personnalisée, et fournit le contenu final de la ROM. Les adresses Ak sont décodées et fournissent les mj. Chaque sortie Si est une porte OU, dont les entrées sont tous les mj. Si pour le mot mj, Si est 1, alors un fusible est fondu à l’entrée mj de la porte OU. Si mj est activée, sa sortie correspondante Si sera alors égale à 1 15 Chapitre 1 Rappels x mot S0 m1 0 m2 0 m3 1 m4 0 m5 0 m6 1 m7 0 m8 1 Contenu S1 S2 S3 0 1 0 1 0 1 1 1 1 0 1 0 0 0 0 0 0 1 1 1 1 0 0 1 S0 x S4 0 1 1 0 0 0 1 0 Contenu de la ROM 8x5 x xx S1 x A0 A1 A2 DCD 3x8 m1 m2 m3 m4 m5 m6 m7 m8 x xx S2 x x x xx x x x S3 S4 x Circuit combinatoire de la ROM 8x5 16 Chapitre 2 Unité centrale de traitement, Langage de Transfert inter Registre Chapitre 2 Unité centrale de traitement Langage de Transfert inter Registres I. Introduction L’ordinateur est défini comme un ensemble d’équipements électroniques permettant le traitement d’informations par l’exécution de programmes; les programmes étant des ensembles d’instructions. Une instruction spécifie une opération et les paramètres sur lesquels elle est exécutée. Les données à traiter pouvant être dans des registres, la mémoire centrale, ou provenir des périphériques, chaque instruction peut nécessiter plusieurs impulsions d’horloge pour être réalisée. L’opération exécutée pendant chaque impulsion d’horloge est dite micro opération. L’organisation interne d’un système digital, qu’il soit à utilisation générale ou spécialisée, est définie par: La séquence de micro opérations qu’il réalise, Sur les données stockées dans ses différents registres. L’unité centrale de traitement, constituée comme indiqué précédemment de l’unité centale et de la mémoire centrale, est entièrement définie par les micro opérations initiées à chaque impulsion d’horloge par les instructions contenues dans les programmes. Dans ce chapitre, sera introduite et dédinie, la notion, très importante, du langage de transfert inter registre (LTR), qui est un langage symbolique de description hard du circuit, support de l’exécution d’une micro opération. En effet, la description en LTR de toutes les micro opérations pouvant être exécutées dans une unité centrale, permet de construire celle ci de façon modulaire, et complète. Auparavant l’unité centrale de traitement, et le principe d’exécution d’un programme sont présentés. La fin du chapitre montre comment les fonctions de contrôle et les signaux de synchronisations, qui activent l’exécution des micro opérations, sont générés. 17 Chapitre 2 II. 1 Unité centrale de traitement, Langage de Transfert inter Registre L’unité centrale de traitement (UCT): Fonctions principales de l’UC : Les fonctions principales de l’unité centrale sont: La traduction et l’exécution des instructions des programmes La communication avec les autres unités fonctionnelles de l’ordinateur, la mémoire centrale, et les organes d’Entrée/Sortie. Unité centrale Mémoire centrale Organes d’E/S L’unité centrale doit donc disposer : De registres pour stocker les données à traiter D’une unité qui exécute les opérations élémentaires de l’ordinateur D’une circuiterie pour contrôler le fonctionnement de ses différents éléments . 2 Etapes d’exécution d’une instruction : Le programme à exécuter, constitué d’un ensemble d’instructions, est initialement stocké sur une unité de mémoire auxiliaire (disque dur, disquette, CD ROM …). Ce programme est d’abord copié dans la mémoire centrale, où il sera exécuté instruction par instruction Mémoire centrale<-Programme RI <- instruction L’unité de contrôle décode (RI) L’unité de contrôle envoie les ordres (les Fi)à l’unité de traitement Une instruction est lue de la mémoire et stockée dans le registre d’instruction; elle est ensuite décodée par l’unité de contrôle Exécution de l’instruction par l’unité de traitement 18 Chapitre 2 Unité centrale de traitement, Langage de Transfert inter Registre Chaque instruction est lue de la mémoire centrale vers le registre d’instruction . l’unité de contrôle la décode, et envoie les fonctions de contrôle (commandes) vers l’unité de traitement qui les exécute. Ceci est en fait une description simplifiée de l’exécution d’une instruction. Les architectures de processeurs classiques prévoient dans la réalité, une organisation de l’unité de traitement plus ou moins standard, qui influera sur le déroulement de l’exécution d’une instruction. - Eléments de base de l’unité de traitement : Généralement, mais non exclusivement, l’unité de traitement comporte : Un registre PC : compteur de programme. Il pointe vers l’instruction suivante à exécuter. Un registre MAR : registre d’adresse mémoire. Il contrôle le bus d’adresse de la mémoire. Un registre MDR : registre de données mémoire. Il contrôle le bus de données de la mémoire. Un registre RI : registre d’instruction. Il sert à stocker l’instruction lue de la mémoire centrale pour exécution. L’UAL : l ‘unité arithmétique et logique. Elle sert à exécuter les opérations arithmétiques, et logiques nécessaires à l’exécution de l’instruction. Les registres processeurs : Registres généraux R0 à Rn, servent à stocker les données à traiter ainsi que les résultats de traitement Unité centrale PC Unité de traitement MAR MDR Mémoire centrale RI R0 Rn Unité de contrôle Unité de contrôle Unité centrale de traitement L’étude de l’étape de lecture de l’instruction dans le registre d’instructions, nous montre déjà que l’opération nécessite plusieurs impulsions d’horloge, vu qu’il est impossible de lire l’instruction si son adresse n’est pas d’abord activée (MAR<-(PC)), et qu’il est impossible de 19 Chapitre 2 Unité centrale de traitement, Langage de Transfert inter Registre la stocker dans le registre d’instruction RI, si elle n’a pas été lue de la mémoire dans le registre de données. Ceci montre deux aspects importants de l’exécution d’une instruction : L’exécution d’une instruction se fait en plusieurs étapes, appelées cycles (cycle de lecture, cycle de préparation, cycle d’exécutions…) Chaque cycle comporte plusieurs impulsions d’horloge ordonnées (les ti), durant lesquelles des opérations précises doivent être exécutées. cycle t0 MAR<-(PC) MDR<-(MAR) RI<-( MDR) t1 t2 t3 Initialement l’adresse de l’instruction à exécuter est dans le PC. L’instruction doit être lue de la mémoire et stockée dans le RI. Elle sera ensuite décodée et exécutée. Toute adresse (de donnée ou d’instruction) doit passer par le MAR, puisqu’il est le seul registre qui gère le bus d’adresse de la mémoire. Toute information (donnée ou instruction), provenant de, ou allant vers la mémoire doit passer par MDR, puisque c’est le seul registre connecté au bus de données de la mémoire. La lecture de l’instruction dans RI doit donc respecter les étapes suivantes : MAR<-(PC) ; pour activer l’adresse de l’instruction. MDR<- M(MAR) ; l’instruction est d’abord lue dans le MDR, puisqu’il est le seul registre connecté au bus de données de la mémoire RI<- (MDR) ; l’instruction est ensuite transférée vers RI pour être décodée par l’unité de contrôle. Quand l’instruction est chargée dans le registre d’instruction, l’unité de contrôle la décode, et transmet les ordres qui en découlent à l’unité de traitement qui exécute. Ces ordres donnés par l’instruction sont des opérations de type : Transfert : parallèle ou série, registre – registre ou mémoire – registre Arithmétique 20 Chapitre 2 Unité centrale de traitement, Langage de Transfert inter Registre Logique De décalage D’entrée/sortie. Ces opérations, quand elles sont exécutées en une impulsion d’horloge sont appelées micro opérations. Dans ce qui suit, nous exposons le langage de transfert inter registre qui est une description hard du support matériel qui permet d’exécuter les micro opérations spécifiques à chaque impulsion d’horloge. III. Langage de transfert inter registre et micro opérations: 1. Définition : Le LTR est un langage symbolique qui permet de décrire le support matériel d’exécution de séquences de micro opérations initiées par chaque instruction d’un processeur, en spécifiant : Les registres, ou mémoire qui contiennent les données à traiter La séquence de micro opérations réalisées sur l’information binaire stockée dans ces registres. Les fonctions de contrôle qui activent les micro opérations nécessaires à l’exécution de toute instruction 2. Micro opérations de transfert : 2.1 Représentations d’un registre : 1 8 A A Montre les bits MSB et LSB Registre A A1 A2 Montre les cellules A8 OP ADR Montre les parties fonctionnelles d’un registre La représentation d’un registre est choisie en fonction de l’usage que l’on fait du schéma bloc, ou logique, et du degré de détails que l’on doit y fournir position de bit, décalage, parties fonctionnelles d’un registre… 21 Chapitre 2 Unité centrale de traitement, Langage de Transfert inter Registre 2.2 Transfert parallèle : C’est un transfert simultané de tous les bits d’un registre B vers un registre A. Ilest activé par une fonction de contrôle P. En LTR on écrit : P : A (B) Choix des registres : A : registre avec capacité de chargement parallèle activé si son entrée Load=1 B : Registre permettant l’accès à ses sorties parallèles. P L Unité de contrôle A B Circuit logique :transfert parallèle 2.3 Echange entre deux registres : P : A (B), B (A) L’hypothèse de notre cours étant l’utilisation de registres à bascules maître-esclave, l’échange entre deux registres peut se faire en une impulsion d’horloge (au lieu de trois avec des bascules simples), et sans ajout de registre temporaire. Il en est de même pour les transferts simultanés (voir TD 2, exercice 1). P Unité de contrôle L A L B Circuit logique :échange entre deux registres Choix des registres : A : Registre avec capacité de chargement parallèle activé si son entrée Load=1 B : Registre avec capacité de chargement parallèle activé si son entrée Load=1 Les deux entrées LOAD des deux registres A, et B sont activées en même temps, et deux micro opérations simultanées sont séparées par une virgule en LTR 2.4 Transfert série : Les registres source B et destination A sont des registres à décalage avec entrée série.. L’information est transmise un bit à la fois, en décalant les bits du premier registre (source) vers le deuxième registre (destination). 22 Chapitre 2 Unité centrale de traitement, Langage de Transfert inter Registre L’information de la source est reconduite vers la source pour ne pas être perdue. Le même décalage, gauche ou droite, est choisi pour les deux registres. En LTR on écrit : S : A (B), B (B), le signal de contrôle S dure n impulsions d’horloge. Ou De façon plus précise : S : A1 Bn, B1 Bn, Ai Ai-1, Bi Bi-1, i = 2 à n, transfert par décalage à droite, bits numérotés comme indiqué sur le schéma, et s dure n impulsions d’horloge. Es S A1 A2 An dec Es B1 B2 Bn dec Circuit logique : transfert série 2.5 Transfert par bus: Un ordinateur possède plusieurs registres , et chacun doit être en relation avec tous les autres. Pour les différentes opérations de transfert, le nombre élevé de connections devient un grand inconvénient. R1 R2 R3 Exemple : transfert entre 3 registres à n bits ; dans le cas de transferts parallèles , le nombre de lignes est multiplié par n Pour éviter cet inconvénient, on limite le nombre de transferts à 1 à la fois. Chaque bit est relié en entrée, et en sortie à une ligne commune par des interrupteurs (sur le plan fonctionnel). Fonctionnement : tous les interrupteurs sont ouverts, sauf ceux des registres en communication (interrupteurs de sortie pour la source, et d’entrée pour la destination). S1 R1 R2 S6 S3 S2 R3 S5 Ligne de bus, une pour chaque bit S4 23 Chapitre 2 Unité centrale de traitement, Langage de Transfert inter Registre Un système de bus peut être réalisé en utilisant : La logique câblée : des multiplexeurs Des circuits à collecteurs ouverts (ne sera pas détaillé dans ce cours) Des buffers à 3 états - Application 1 : Construire un bus pour la communication parallèle entre 5 registres à 4 bits chacun, en utilisant des multiplexeurs. Tous les registres peuvent être source, et tous peuvent être destination. 1. Sélection de la source : Il y a 5 registres source possibles, donc il faut 3 lignes de sélection S0, S1, S2, telles que : S0 0 0 0 0 1 S1 0 0 1 1 0 S2 0 1 0 1 0 Source R1 R2 R3 R4 R5 Il y a 4 bits par registre, donc 4 bits à transférer, donc il faut 4 lignes de bus. Chaque ligne est construite en utilisant un multiplexeur Il faut 4 multiplexeurs : le multiplexeurs i choisit un parmi 5 bits de position i provenant des 5 registres potentiellement source. Les 4 bits d’un même registre doivent être sélectionnés en même temps pour son transfert vers sa destination, par conséquents tous les multiplexeurs doivent avoir les mêmes entrées de sélection. 2. Sélection de la destination : Il y a 5 registres destination possibles, donc il faut 3 lignes de sélection D0, D1, D2, telles que : D0 D1 D2 Destination 0 0 0 R1 0 0 1 R2 0 1 0 R3 0 1 1 R4 1 0 0 R5 L’information de 4 bits provenant du registre source sélectionné, et se trouvant sur les lignes de bus, est reliée aux entrées parallèles de tous les registre, seul le registre destination sélectionné, est chargé par activation de son entrée de chargement. 24 Chapitre 2 Unité centrale de traitement, Langage de Transfert inter Registre Les entrées de chargement des registres destination sont commandées par un décodeur aux entrées D0, D1, D2, puisqu’une seule de ses sorties est égale à 1 à la fois, et qu’on a besoin de charger un seul registre. D0 D1 D2 R1 L1 S0 S1 S2 R2 L2 S0 S1 S2 MUX DCD R3 L3 S0 S1 S2 MUX S0 S1 S2 MUX Bit 3 Bit 2 Bit 1 R4 L4 L5 R5 MUX Bit 4 Circuit logique d’un bus à 4 lignes la communication entre 5 registres R1 à R5pour - Application 2 : Refaire l’exercice précédent en utilisant des buffers à 3 états. 1. Sélection de la source : Le raisonnement pour la sélection de la source est similaire à l’exercice précédent. La différence réside dans le fait que des buffers à 3 états sont utilisés à la place des multiplexeurs. Chaque multiplexeur à 5 entrées est remplacé par 5 buffers à 3 états. Comme un seul des 5 buffers est activé à la fois, un décodeur commandé par S0, S1, S2, est utilisé. E1 S E1 E2 E2 S E3 E3 MUX E4 E4 E5 E5 sel 3 a- Multiplexeur à 5 entrées sel 3 DCD 3x8 b- Circuit équivalent à base de 5 buffers à 3 états 25 Chapitre 2 Unité centrale de traitement, Langage de Transfert inter Registre 2. Sélection de la destination : Pour la sélection de la destination, le raisonnement est identique, ainsi que le circuit. D0 D1 D2 L1 S0 S1 S2 R1 L2 R2 DCD L3 R3 L4 R4 R5 L5 DCD 3x8 Ligne 1 Ligne 2 Ligne 3 Ligne 4 Système de bus utilisant des buffers à trois états Les lignes de sélection des sources et des destinations proviennent de l’unité de contrôle 3. Micro opérations Arithmétiques : Le transfert inter registres ne modifie pas l’information transférée. Ce qui n’est pas le cas des micro opérations arithmétiques et logiques, qui nécessitent, en plus des registres de stockage, des circuits de traitement de l’information. Les micro opérations arithmétiques de base les plus fréquentes, peuvent être résumées dans le tableau ci dessous : A A+B A A-B A A+1 A A-1 AA A A+1 A A+B A A+B+1 Addition Soustraction incrémentation décrémentation Complément à 1 Complément à 2 Addition de A et B Addition de A et B+1 Et transfert vers A Et transfert vers A Et transfert vers A Et transfert vers A Et transfert vers A Et transfert vers A Et transfert vers A Et transfert vers A 26 Chapitre 2 Unité centrale de traitement, Langage de Transfert inter Registre Le circuit de base des opérations arithmétiques est l’additionneur. Les autres opérations arithmétiques, comme celles du tableau ci dessus, ou la multiplication, ou la division …, peuvent toutes être exécutées, ou programmées autour de l’opération d’addition. Nous nous contenterons d’exprimer l’addition en LTR. Les micro opération d’addition parallèles entre deux registres à n bits sont exécutées par un additionneur complet parallèle à n bits (seul, ou intégré dans une unité arithmétique et logique UAL). L’additionneur à n bits est constitué de n additionneurs complets à 1 bit reliés en cascade. R2 R1 FA Rs FA S4 FA S3 FA S2 Re S1 Circuit d’addition de 2 registres à 4 bits R1 et R2 Les cas suivants peuvent se présenter : P : A (B)+(C) P : A (A)+(B) P : E A (A)+(B) (E bascule d’extension de A pour stocker la retenue.) Dans les trois cas les registres sources sont des registres disposant de sorties parallèles, et le registre destination un registre à chargement parallèle. Une UAL, ou un additionneur parallèle peuvent être choisis pour exécuter l’opération d’addition parallèle. circuit autour de l’additionneur : - - circuit autour de l’UAL P P L A B Retenue en sortie Additionneur // à n bits Retenue en entrée LL A B Retenue en sortie Retenue en entrée Sélection de l’addition Les lignes de sélection de l’addition sont fonction de P 27 Chapitre 2 Unité centrale de traitement, Langage de Transfert inter Registre 4. Micro opérations Logiques : Les micro opérations logiques sont effectuées bit par bit, et diffèrent ainsi dans la conception de leur circuit, des opérations arithmétiques. En effet, la propagation de la retenue nécessite pour les opérations arithmétiques, des circuits de base (pour le traitement d’un bit) disposés en cascade. Alors que pour les opérations logiques, les circuits de bases sont disposés en parallèle, et sont dupliqués autant de fois que cela s’avère nécessaire (n circuits de base pour n bits), sans influence des uns sur les autres. Ainsi, on peut exécuter les opérations logiques suivantes sur deux bits Ai et Bi donnés : Ai 0 0 1 1 Bi 0 1 0 1 F1 0 0 0 0 F2 0 0 0 1 F3 0 0 1 0 F4 0 0 1 1 F5 0 1 0 0 F6 0 1 0 1 F7 0 1 1 0 F8 0 1 1 1 F9 F10 F11 F12 F13 F14 F15 F16 1 1 1 1 1 1 1 1 0 0 0 0 1 1 1 1 0 0 1 1 0 0 1 1 0 1 0 1 0 1 0 1 16 fonctions logiques sont ainsi définies et peuvent être exécutées sur deux bits donnés ; certaines ont des appellations connues, comme F1 : mise à zéro ou reset, , F2 : ET, F7 : XOR, F15 : OR, F16 mise à 1 ou SET. - Application : Réaliser un registre A à 4 bits, capable d’exécuter les opérations logiques suivantes décrites en LTR, en utilisant des bascules JK. P1 : A A B P2 : A B P3 : A A B P4 : A Ā P5 : A 0 ; ou exclusif ; transfert ; ET ; NOT ; mise à zéro (reset) Le registre B contient le deuxième opérande mais n’est jamais modifié. Seul le registre A reçoit le résultat et subit des modifications. On réalisera donc le circuit du registre A Toutes ces opérations sont logiques ; par conséquent, il suffit de réaliser le circuit pour le bit de position i et de le dupliquer 4 fois. Pour le bit Ai, il s’agit de construire un circuit séquentiel possédant 2 états possibles, 0 ou 1 . La partie séquentielles du circuit est constituée donc d’une seule bascule, dont les entrées J et K sont contrôlées par la partie combinatoire du circuit, qui est à déterminer. Entrée secondaire Entrées primaires Circuit combinatoire J Q K Q 28 Chapitre 2 Unité centrale de traitement, Langage de Transfert inter Registre Dans notre cas l’entrée secondaire est Ai et les entrées primaires sont : Bi, P1, P2, P3, P4, et P5. Les étapes habituelles à suivre consistent à dresser la table d’état, puis d’en déduire la table de transition, puis le circuit de contrôle des entrées J et K de la bascule. On remarque qu’avec les 6 entrées primaires, et l’entrée secondaire, la table d’état posséderait 128 entrées ou lignes, ce qui prendrait beaucoup de temps à traiter, et introduirait des erreurs. On procède donc de la manière suivante : Pour chaque fonction de contrôle Pj activée (les autres ne pourraient certainement pas l’être), on dresse la table d’état, la table de transition, et on déduit les entrées de la bascule Jj, et Kj. Les valeurs finales, respectives de J et K seront alors : J = P1J1 + P2J2 + P3J3 + P4J4 + P5J5 K = P1K1 + P2K2 + P3K3 + P4K4 + P5K5 P1=1 : Ou exclusif Ai 0 0 1 1 Bi 0 1 0 1 Ai+ 0 1 1 0 P2=1 : Transfert J 0 1 X X K X X 0 1 Ai 0 0 1 1 Bi 0 1 0 1 J1= Bi K1= Bi J2= Bi K2= Bi P3=1 : ET P4=1 : NOT Ai 0 0 1 1 Bi 0 1 0 1 Ai+ 0 0 0 1 J 0 0 X X K X X 1 0 J3= 0 K3= Bi Ai 0 0 1 1 Bi 0 1 0 1 Ai+ 0 1 0 1 0 1 X X Ai+ 1 1 0 0 1 1 X X J K X X 1 0 J K X X 1 1 J4= 1 K4= 1 P5=1 : mise à zéro Ai 0 0 1 1 J5= 0 K5= 1 Bi 0 1 0 1 Ai+ 0 0 0 0 J 0 0 X X K X X 1 1 J= P1Bi+P2Bi+P4 K= P1Bi+P2Bi+P3Bi+P4+P5 Ce qui permet de déduire le circuit de contrôle de la bascule i du registre A 29 Chapitre 2 Unité centrale de traitement, Langage de Transfert inter Registre Il suffira de le dupliquer 4 fois pour obtenir le circuit total du registre A. 5. Micro opérations de décalage: Il existe quatre types de décalage : - Le décalage à transfert série : Shr, Shl, insertion d’un bit de donnée par l’entrée série du registre à décalage utilisé. - Le décalage logique : Lshr, Lshl, insertion d’un zéro, ‘0’, par l’entrée série - Le décalage arithmétique : Ashr, division par 2, Ashl, multiplication par 2 ; le bit introduit par l’entrée série du registre, lors du décalage, dépend de la représentation du nombre (valeur absolue et signe, complément à deux …), et de l’opération (multiplication ou division) effectuée - Le décalage circulaire : Cir, Cil, le bit extrême sortant du registre lors du décalage, est réintroduit par l’entrée série. En langage de transfert inter registre ces différents décalage pourraient être représentés comme suit : - S : Shr, Cir B ou S : A1 ← Bn , B1 ← Bn Transfert série par décalage à droite ; le registre source B ne perd pas son contenu - L : Lshl A ; on sous entend An ← 0 ; décalage logique à gauche - C : Cir A ; on sous entend A1 ← An ; décalage circulaire à droite - M : Ashl A ; décalage de A à gauche pour une multiplication par 2. NB : les expressions shl et shr ont été gardées car les microprocesseurs existants possèdent des répertoires d’instructions basés sur l’anglais et que sh représente ‘shift’, qui veut dire décaler, R tient pour ‘right’ (droite), et L pour ‘left’ (gauche). IV. Les fonctions de contrôle: Les fonctions de contrôle sont les signaux binaires qui activent les micro opérations. Elles proviennent de l’unité de contrôle. Comme nous l’avons indiqué précédemment, l’unité de contrôle les génèrent à partir des informations contenues dans les instructions qui constituent les programmes. Mémoire centrale<-Programme RI <- instruction L’unité de contrôle décode (RI) L’unité de contrôle envoie les ordres (les Fi)à l’unité de traitement pour activer les micro opérations Une instruction est lue de la mémoire et stockée dans le registre d’instruction; elle est ensuite décodée par l’unité de contrôle Exécution des micro opérations de l’instruction par l’unité de traitement 30 Chapitre 2 Unité centrale de traitement, Langage de Transfert inter Registre 1. Méthodes de conception : Actuellement la méthode la plus utilisée dans la génération des fonctions de contrôle consiste à combiner les ordres contenus dans les instructions, avec des signaux de synchronisation, et des conditions de contrôle préalablement définies. L’approche de la conception est modulaire et synchronisée. L’inconvénient majeur de cette méthode reste le nombre important de portes logiques et de bascule (partiellement éliminé grâce aux capacités d’intégration de plus en plus grandes). Ses principaux avantages sont la détection facile des pannes, et la standardisation de la méthodologie de conception qui a permis le développement de langages de programmation de circuits (tels que le VHDL), et donc de conception assistée par ordinateurs. C’est la méthode que nous adopterons pour la conception du processeur de base dans le chapitre IV. Une seconde méthode, qui consiste à utiliser le principe d’analyse et de synthèse des circuits séquentiels (diagramme d’état, table d’état, tables de transitions,…), permettrait d’obtenir un circuit minimisé si elle était développée correctement. Le trop grand nombre d’états, et de variables à manipuler entraîne des difficultés pratiques dans la conception, et la réalisation des circuits par cette méthode. Il est difficile pour le concepteur de déduire de façon précise toutes les séquences et fonctionnement du système, et donc de poser le problème, ou de repérer une panne (contrairement à la conception modulaire de la première méthode). La troisième méthode utilise le contrôle micro programmé ou une mémoire de contrôle. Dans ce cas une partie de la mémoire (généralement de la ROM) est utilisée comme unité de contrôle (au lieu d’un circuit combinatoire). On y stocke les bits (0 et 1) des fonctions de contrôle de tous les registres, celles ci sont envoyées selon les besoins vers l’unité de traitement . Cette méthode, très efficace, sera développée dans le chapitre V. Consommant un nombre de porte et de bascules moins importants que les deux méthodes précédentes, on notera cependant sa lenteur par rapport à ces dernières. 2. Génération des signaux de synchronisation : La division du temps d’un processeur synchrone en cycles, et la division de chaque cycle en impulsions d’horloge ordonnées durant lesquelles des micro opérations précises doivent être exécutées, nécessite la création de signaux de synchronisation, les Ti, permettant de déterminer, à chaque instant, dans quelle impulsion du cycle on se trouve. Seul le signal Ti est égal à 1 à la ième impulsion d’horloge du cycle du cycle. Tj = 0 si j ≠ i . Ainsi si le nombre d’impulsions d’un cycle est 4, il sera nécessaire de générer 4 signaux de synchronisation T0,T1, T2, T3, tels que : T0 T1 T2 T3 31 Chapitre 2 Unité centrale de traitement, Langage de Transfert inter Registre Les Ti peuvent être implémentés en utilisant un compteur en anneau ou un compteur et un décodeur. Le compteur en anneau : c’est un registre à décalage dont un seul bit est allumé (mis à 1) à la fois. Son entrée de décalage est mise à un et le bit sortant est relié à son entrée série de sorte qu’il effectue un décalage circulaire en permanence, tant qu’il est alimenté par l’horloge. 1 0 0 0 T0 T1 T2 T3 Exemple pour 4 signaux de synchronisation. Séquence initiale : 1000 Le bit unique est décalé d’une position vers la suivante pour générer les signaux de synchronisation Le compteur et le décodeur : les sorties d’un compteur binaire progressif à deux bits, alimenté par une horloge, sont reliées aux entrées d’un décodeur 2x4. Les signaux de synchronisation apparaissent aux sorties du décodeur, puisqu’à chaque impulsion d’horloge le compteur génère la combinaison suivante à l’entrée du décodeur. Compteur binaire à 2 bits DCD 2x4 T0 T1 T2 T3 3. Génération des fonctions de contrôle : La description des circuits en LTR comprend deux parties : - à droite la ou les micro opérations que le circuit doit réaliser - à gauche : la fonction de contrôle qui les active. Les fonctions de contrôle peuvent être : - simples : F : A ← (B) - Combinées avec des signaux de synchronisation : FT1+R’T3 : PC ← (PC)+1, MDR← M(MAR) 32 Chapitre 2 Unité centrale de traitement, Langage de Transfert inter Registre - Combinées avec des conditions : P : Si condition alors micro opération Exemple : FT1 : C ← C+1 FT2 : PC ← (PC)+1, si C=0 ; incrémenter PC si le compteur C = 0 Ceci est équivalent à : FT1 : C ← C+1 FT2 C : PC ← (PC)+1 La condition C=0 a été transformée en fonction de contrôle combinée avec la fonction de contrôle initiale. V. Conclusion: Le langage de transfert inter registre, LTR, est un langage symbolique simple, qui permet de décrire et de programmer en vue de le réaliser, le circuit de toute micro opération pouvant être exécutée dans une unité centrale de traitement. C’est ce langage que nous utiliserons dans le chapitre IV pour décrire le processeur de base que nous nous proposons de concevoir. Mais avant cela nous allons présenter dans le chapitre III les différentes organisations de processeurs classiques, afin d’en choisir une pour notre processeur de base. 33 Chapitre 3 Organisations de processeurs Chapitre III Organisations de processeurs I. Introduction : Les processeurs classiques diffèrent, dans leurs organisations, principalement par : Leurs structures de bus : données, adresse, contrôle, entrées/sorties L’organisation de leurs registres : un registre processeur principal, plusieurs registres processeurs ou généraux, … Les modes d’adressage dont ils disposent Leurs répertoires d’instructions. Suivant la puissance et la fonction du processeur que l’on désire concevoir, on choisira une organisation spécifique pour répondre aux besoins formulés. Par exemple, plus de registres destinés à contenir les données et les résultats de traitements pour diminuer le transfert d’information entre la mémoire, et l’unité centrale, plus d’instructions spécialisées pour minimiser la taille des programmes, et le temps d’exécution, un seul registre accumulateur, si le temps d’exécution est moins important que la simplicité du circuit… Nous présentons dans ce qui suit les différents aspects des différentes organisations de processeurs classiques. II. Organisations de bus : Les informations véhiculées dans un processeur sont de type : Données Adresses Contrôle Entrées/sorties Les lignes de bus qui transportent ces informations à l’intérieur, et à l’extérieur (vers la mémoire, et les périphériques) doivent être organisées de manière à assurer un maximum de synchronisation et de stabilité (vu qu’il existe toujours un temps de propagation des informations à travers les circuits, générant des retards, et un temps de stabilisation de ces informations sur les lignes de bus). Les différents types d’informations sus citées peuvent être transportées par : Un bus unique, totalement multiplexés : qui servira à transporter, grâce à une multiplication de fréquence, et durant une impulsion d’horloge, tour à tour durant des sous périodes, le contrôle, puis les adresses, puis les données. Les informations de contrôle, et d’adresses, sont latchées, jusqu’à ce que la donnée soit utilisée. Des bus partiellement multiplexés : Seuls deux ou trois types d’informations utilisent le même bus toujours selon le même principe que celui énoncé pour le bus unique . Par exemple 34 Chapitre 3 Organisations de processeurs les lignes d’adresse et de données partagent les mêmes lignes comme c’est le cas pour le microprocesseur Intel 8085. Des bus totalement séparés : Dans ce cas des registres internes (non accessibles aux programmeurs), dédiés, de données MDR, d’adresse MAR, d’entrées/sorties INPR, et OUTR, d’état, de contrôle, … sont utilisés pour gérer les différents bus. Cette configuration est la plus courante, quand le degré d’intégration du circuit le permet. Ces registres internes ne sont pas concernés par l’organisation des registres processeurs chargés de contenir les données à traiter, et les résultats de traitement, organisation développée dans ce qui suit. III. Organisation des registres : L’organisation des registres permet de déterminer la structure de l’unité de traitement, le nombre de registres qui s’y trouvent, leurs connections à l’unité arithmétique et logique, ainsi que le format des instructions du processeur. 1. Organisation à accumulateur : a) Structure de l’unité de traitement : Un seul registre processeur, l’accumulateur AC, contient les données à traiter, et le résultat de tout traitement : Pour les opérations à un seul opérande : La donnée unique se trouve dans AC, et le résultat de son traitement est également mis dans AC. Par exemple, c’est le cas pour l’opération d’incrémentation INC, ou de complémentation CMA… Pour les opérations à 2 opérandes : La première donnée a déjà été mise dans AC, et la deuxième donnée est lue par l’instruction de la mémoire, et va se trouver par conséquent dans le registre MDR. Les deux registres AC, et MDR doivent donc être reliés respectivement, aux deux entrées A et B de l’UAL. Le résultat de toute opération est stocké dans AC. On déduit la structure suivante pour l’unité de traitement : AC b) MDR Format de l’instruction : Puisque le premier opérande se trouve toujours dans AC, le format d’une instruction aura la structure suivante : 35 Chapitre 3 Organisations de processeurs Pour les opérations à un seul opérande, l’instruction doit spécifier uniquement le code de l’opération à exécuter, et sera une instruction à zéro zone d’adresse. OP Pour les instructions à deux opérandes, l’instructions doit spécifier le code de l’opération et l’adresse du deuxième opérande (le premier opérande, et le résultat devant se trouver dans AC), et sera par conséquent une instruction à une seule zone d’adresse. OP ADR Des variantes, de processeurs possédant une architecture basée sur une organisation à accumulateur, existent. On peut avoir par exemple des processeurs à deux accumulateurs, comme pour le Motorola 6800. 2. Organisation à registres généraux : a) Structure de l’unité de traitement : Dans ce cas plusieurs registres R1 à Rn, appelés registres généraux, ou registres processeurs, peuvent contenir les données à traiter, et les résultats de traitement. Tous les registres généraux (ainsi que le MDR, qui peut contenir une donnée lue ou à écrire dans la mémoire) doivent avoir la capacité d’être reliés à l’UAL (en tant que source A, source B, ou destination). Il est alors nécessaire de construire un bus A pour la sélection de la source A, un bus B pour la sélection de la source B, et un bus C pour la sélection de la destination du résultat de traitement. 36 Chapitre 3 Organisations de processeurs On peut remplacer les multiplexeurs par des buffers à 3 états pour la sélection des sources A et B. b) Format de l’instruction : Le format d’une instruction pour un processeur à registres généraux peut être à deux zones d’adresse si la destination est aussi source A. exemple : ADD R1, R5 R1 (R1) + (R5) ; OP ADR1 ADR2 à trois zones d’adresse si la destination est différente des deux sources. exemple : ADD R1, R5, R2 ; OP R1 (R2) + (R5) ADR1 ADR2 ADR3 c) Application : Donner la structure de l’unité de traitement d’un processeur possédant 10 registres généraux en utilisant des buffers à 3 états: 37