CEG2536: Architecture des Ordinateurs I
Transcription
CEG2536: Architecture des Ordinateurs I
Chapitre IV Transfert de Registre et Micro-opérations Wail Gueaieb (Université d’Ottawa) CEG2536: Architecture des Ordinateurs I Automne 2007 1 / 54 Langage De Transfert De Registre Langage De Transfert De Registre L’organisation matérielle interne d’un système numérique, par exemple d’un ordinateur numérique, se définit le mieux en spécifiant: 1 2 3 L’ensemble de registres qu’il contient et leurs fonctions. L’ensemble de micro-opérations qui peuvent être exécutées sur les informations binaires contenues dans chaque registre. Le système de contrôle qui initie la séquence des micro-opérations. Une opération exécutée sur des données rangées dans des registres est appelée une micro-opération. Le décalage, le comptage, la remise à zéro, le chargement, sont des exemples de micro-opérations. La notation symbolique utilisée pour décrire les micro-opérations de transferts entre registres est appelée langage de transfert de registre. Wail Gueaieb (Université d’Ottawa) CEG2536: Architecture des Ordinateurs I Automne 2007 3 / 54 Transfer de Registre Registres Registres Figure 1: Diagrammes bloc possible d’un registre Les registres des ordinateurs sont désignés par des lettres majuscules, possiblement suivies par des chiffres. R1: registre de données pour usage général. MAR (Memory Address Register): un registre qui garde l’adresse du mot à aller chercher en mémoire. PC (program counter): registre du compteur ordinal. IR (instruction register): registre de l’instruction. Dans la figure ci-dessus, PC (L), ou PC (0–7), correspond à l’octet d’ordre bas, tandis que PC (H), ou PC (8–15), correspond à l’octet d’ordre haut. Wail Gueaieb (Université d’Ottawa) CEG2536: Architecture des Ordinateurs I Automne 2007 4 / 54 Transfer de Registre Transfert de Registre Transfert de Registre L’expression R2 ← R1 dénote le transfert du contenu du registre R1 vers le registre R2. Par définition, le contenu du registre source, R1, ne change pas après le transfert. L’expression R2 ← R1, R1 ← R2 dénote que les deux opérations de transfert doivent être exécutées au même instant (à la même impulsion d’horloge). Dans ce cas particulier, il s’agit de l’échange des contenus de R1 et R2. Table 1: Symboles de base des transferts de registre Symbole Lettres (et chiffres) Parenthèses ( ) Flèche à gauche ← Virgule , Wail Gueaieb (Université d’Ottawa) Description Dénote un registre Dénotent une partie d’un registre Dénote un transfert d’information Sépare deux micro-opérations CEG2536: Architecture des Ordinateurs I Exemples MAR, R2 R2(0–7), R2(L) R2 ← R1 R2 ← R1 , R5 ← MAR Automne 2007 5 / 54 Transfer de Registre Fonction de Contrôle Fonction de Contrôle Une fonction de contrôle est une variable booléenne. Elle est incluse dans l’expression du transfert de registre comme suit: P: R2 ← R1 L’expression ci-dessus signifie: si (P = 1) alors (R2 ← R1) Wail Gueaieb (Université d’Ottawa) CEG2536: Architecture des Ordinateurs I Automne 2007 6 / 54 Transfer de Registre Fonction de Contrôle La figure suivante montre un diagramme en bloc du circuit nécessaire pour effectuer une telle micro-opération conditionnelle de transfert de registre. Figure 2: Transfert de R1 à R2 lorsque P = 1 n dénote le nombre de bits dans un registre. P est activé à la montée d’une impulsion d’horloge à l’instant t. A la prochaine transition d’horloge, à l’instant t + 1, l’entrée de chargement (load) est active, et les lignes de données de R2 sont connectées aux lignes de sorties de données de R1. A cet instant, le contenu de R1 est chargé en parallèle dans R2 (chargement en parallèle). Wail Gueaieb (Université d’Ottawa) CEG2536: Architecture des Ordinateurs I Automne 2007 7 / 54 Bus et Transferts de Mémoire Bus Commun Bus Commun Un ordinateur numérique typique comprend un grand nombre de registres. Le nombre de fils serait excessif si on utilisait des fils distincts pour connecter chaque registre à tous les autres. Une façon plus efficace de transférer de l’information entre les registres est d’utiliser un système de bus commun. Une structure avec bus consiste en des lignes communes, une pour chaque bit d’un registre, à travers lesquelles l’information binaire est transférée. Les signaux de contrôle, ou les bits de sélection de bus, déterminent quels registres doivent être choisis par le bus durant chaque transfert de registre Wail Gueaieb (Université d’Ottawa) CEG2536: Architecture des Ordinateurs I Automne 2007 8 / 54 Bus et Transferts de Mémoire Bus Commun On peut construire un système de bus commun en utilisant des multiplexeurs. Table 2: Table de fonction de bus S1 0 0 1 1 S0 0 1 0 1 Registre choisi A B C D Figure 3: Un système de bus pour quatre registres en utilisant des multiplexeurs Wail Gueaieb (Université d’Ottawa) CEG2536: Architecture des Ordinateurs I Automne 2007 9 / 54 Bus et Transferts de Mémoire Bus Commun En général, un système de bus de n lignes qui multiplexe 2k registres est composé de: 2k registres de n bits chacun (puisque c’est un bus de n lignes) n 2k × 1-multiplexeurs: chaque multiplexeur possède 2k bits de données, k bits de sélection, et 1 bit de sortie. Example 1. Un bus commun pour 8 registres de 16 bits chacun est composé de: 16 multiplexeurs (un pour chaque ligne du bus) Chaque multiplexeur doit avoir: 8 lignes d’entrée de données (une pour chaque registre) 3 bits de sélection Wail Gueaieb (Université d’Ottawa) CEG2536: Architecture des Ordinateurs I Automne 2007 10 / 54 Bus et Transferts de Mémoire Bus Commun Le transfert d’information d’un bus vers l’un des nombreux registres de destination peut se faire en connectant les lignes de bus aux entrées de tous les registres de destination, et en activant uniquement le bit de contrôle du chargement du registre de destination choisi. Le transfert d’information entre deux registres à travers le bus peut être symbolisé explicitement par BUS ← C , R1 ← BUS ou implicitement par R←C Wail Gueaieb (Université d’Ottawa) CEG2536: Architecture des Ordinateurs I Automne 2007 11 / 54 Bus et Transferts de Mémoire Tampons à Trois Etats (Three-State Buffers) Tampons à Trois Etats (Three-State Buffers) Un système de bus peut aussi être construit avec des portes à trois états au lieu de multiplexeurs. Une porte à trois états est un circuit numérique qui possède 3 états: Deux de ces états correspondent à des signaux équivalents aux signaux logiques 1 et 0, comme pour des portes conventionnelles. Le troisième état est un état de haute impédance. Dans l’état de haute impédance, la porte se comporte comme un circuit ouvert (imaginez dans cet état que la porte est “déconnectée”). Wail Gueaieb (Université d’Ottawa) CEG2536: Architecture des Ordinateurs I Automne 2007 12 / 54 Bus et Transferts de Mémoire Tampons à Trois Etats (Three-State Buffers) Les portes à trois états peuvent se présenter sous différentes formes, telles que des portes ET, NON-ET, etc. Cependant, celle qui est la plus couramment utilisée dans la conception des systèmes de bus est la porte tampon à trois états. Figure 4: Symbole graphique d’un tampon à trois états Table 3: Table de fonction d’un tampon à trois états Entrée de contrôle 1 1 0 Wail Gueaieb (Université d’Ottawa) Entrée de données 0 1 x CEG2536: Architecture des Ordinateurs I Sortie 0 1 Haute impédance Automne 2007 13 / 54 Bus et Transferts de Mémoire Tampons à Trois Etats (Three-State Buffers) Figure 5: Une ligne de bus avec des tampons à trois états La construction d’un système de bus avec des tampons à trois états est montrée sur la figure ci-dessus. Wail Gueaieb (Université d’Ottawa) CEG2536: Architecture des Ordinateurs I Automne 2007 14 / 54 Bus et Transferts de Mémoire Tampons à Trois Etats (Three-State Buffers) Pour être certain qu’il n’y a pas plus qu’une entrée de contrôle active à tout instant, on utilise un décodeur. Lorsque l’entrée Enable du décodeur est 0, toutes ses sorties sont remises à 0 ⇒ la ligne de bus est dans l’état de haute impédance (“déconnectée” d’un point de vue logique). Lorsque l’entrée Enable est 1, l’entrée du tampon sélectionné est transférée à la ligne de bus. Dans ce cas, le circuit ci-dessus se comporte comme un multiplexeur 4 × 1. Pour construire un système de bus commun pour quatre registres de n bits chacun en utilisant des tampons à trois états, il faut utiliser n circuits de Figure 5. Cependant, seul un décodeur, commun à tous, est requis. Wail Gueaieb (Université d’Ottawa) CEG2536: Architecture des Ordinateurs I Automne 2007 15 / 54 Bus et Transferts de Mémoire Transfert de Mémoire Transfert de Mémoire Dans ce qui suit, nous utiliserons la lettre M pour symboliser un mot en mémoire. Le registre d’adresse (address register) qui garde l’adresse en mémoire du mot auquel on veut accéder sera symbolisé par AR. Le registre de données (data register) qui garde le mot à être lu ou écrit en mémoire sera symbolisé par DR. Une opération de lecture s’écrit ainsi: Read: DR ← M[AR] et signifie si la fonction de contrôle (le signal de contrôle de la mémoire) Read est 1, alors transférer le mot rangé à l’adresse indiquée dans le registre AR vers le registre DR. Wail Gueaieb (Université d’Ottawa) CEG2536: Architecture des Ordinateurs I Automne 2007 16 / 54 Bus et Transferts de Mémoire Transfert de Mémoire Une opération d’écriture en mémoire s’écrit comme suit: Write: M[AR] ← DR et signifie si la fonction de contrôle (le signal de contrôle de la mémoire) Write est 1, alors transférer le mot rangé dans le registre DR vers le mot en mémoire dont l’adresse est indiquée dans le registre AR. Wail Gueaieb (Université d’Ottawa) CEG2536: Architecture des Ordinateurs I Automne 2007 17 / 54 Micro-opérations Arithmétiques Micro-opérations Arithmétiques Les micro-opérations les plus rencontrées dans les ordinateurs numériques sont classifiées en 4 catégories: 1 Micro-opérations de transfert de registre : elles transfèrent les données binaires d’un registre à l’autre. 2 Micro-opérations arithmétiques : elles effectuent des micro-opérations arithmétiques telles que les additions et les soustractions sur des données numériques rangées dans les registres. 3 Micro-opérations logiques : elles effectuent des opérations de manipulation de bits sur les données rangées dans les registres. 4 Micro-opérations de décalage : elles effectuent des opérations de décalage sur les données rangées dans les registres. Nous avons déjà vu les micro-opérations de transfert de registre. Dans ce qui suit, nous allons présenter les trois autres types de micro-opérations. Wail Gueaieb (Université d’Ottawa) CEG2536: Architecture des Ordinateurs I Automne 2007 18 / 54 Micro-opérations Arithmétiques Micro-opération d’Addition Micro-opération d’Addition La micro-opération définie par l’expression: R3 ← R1 + R2 dénote une micro-opération d’addition. Elle signifie que le contenu du registre R1 est ajouté au contenu du registre R2, et la somme est transférée au registre R3. Wail Gueaieb (Université d’Ottawa) CEG2536: Architecture des Ordinateurs I Automne 2007 19 / 54 Micro-opérations Arithmétiques Micro-opération de Soustraction Micro-opération de Soustraction Soustraire le contenu du registre R2 du contenu du registre R1, et ranger le résultat dans le registre R3, peut s’écrire des deux façons suivantes: R3 ← R1 − R2 or R3 ← R1 + R2 + 1 R2 dénote le complément des données rangées dans le registre R2. La Table 4 fait la liste des micro-opérations de base les plus courantes. Wail Gueaieb (Université d’Ottawa) CEG2536: Architecture des Ordinateurs I Automne 2007 20 / 54 Micro-opérations Arithmétiques Micro-opération de Soustraction Table 4: Micro-opérations de base # 1. 2. 3. 4. 5. 6. 7. Désignation Symbolique R3 ← R1 + R2 R3 ← R1 − R2 R2 ← R2 R2 ← R2 + 1 R3 ← R1 + R2 + 1 R1 ← R1 + 1 R1 ← R1 − 1 Wail Gueaieb (Université d’Ottawa) Description Contenu de R1 plus R2 transféré vers R3 Contenu de R1 moins R2 transféré vers R3 Complément du contenu de R2 (complément à 1) Complément à 2 du contenu de R2 (négation) R1 plus le complément à 2 de R2 (soustraction) Incrémente de 1 le contenu de R1 Décrémente de 1 le contenu de R1 CEG2536: Architecture des Ordinateurs I Automne 2007 21 / 54 Micro-opérations Arithmétiques Additionneur Binaire Additionneur Binaire Pour l’implémentation matérielle de la micro-opération d’addition, il est nécessaire d’avoir au moins deux registres pour garder les deux nombres à être ajoutés, possiblement un troisième registre pour ranger le résultat de l’opération, et un circuit combinatoire pour effectuer l’addition arithmétique. Un circuit combinatoire qui ajoute deux bits et un bit de retenue est appelé un additionneur complet (full adder, FA) {voir chapitre 1} Le circuit combinatoire qui effectue la somme arithmétique de deux nombres de n bits est appelé un additionneur binaire de n bits. Typiquement, un additionneur binaire de n bits est construit à partir de n additionneurs complets connectés en cascade, chaque retenue de sortie étant connectée à la retenue d’entrée du prochain additionneur complet. Wail Gueaieb (Université d’Ottawa) CEG2536: Architecture des Ordinateurs I Automne 2007 22 / 54 Micro-opérations Arithmétiques Additionneur Binaire Figure 6: Un additionneur de 4 bits La Figure 6 montre les interconnexions de 4 additionneurs complets pour faire un additionneur de 4 bits. Dans ce cas, les nombres additionnés sont A3 A2 A1 A0 et B3 B2 B1 B0 , et sont normalement rangés dans deux registres de 4 bits A et B. La somme est représentée par S3 S2 S1 S0 , et peut être appliquée aux lignes d’entrée d’un certain registre. La retenue d’entrée du ième bit est Ci , avec i = 0, 1, 2, 3. La retenue de sortie du bit3 est C4 . Wail Gueaieb (Université d’Ottawa) CEG2536: Architecture des Ordinateurs I Automne 2007 23 / 54 Micro-opérations Arithmétiques Additionneur/Soustracteur Binaire Additionneur/Soustracteur Binaire L’opération (A − B) est accomplie en effectuant l’opération (A + B + 1), ce qui n’est autre qu’une opération d’addition. Ainsi, l’addition et soustraction peuvent être combinées en un circuit commun, qui utilise un bit de contrôle, que l’on peut appeler M, pour indiquer le type de l’opération désirée. Supposons que M = 0 indique une addition (A + B), et M = 1 indique une soustraction (A − B), qui est aussi (A + B + 1). Alors, on veut utiliser la valeur de M pour effectuer une sorte de “transformation” de B. Cette transformation serait: si M = 0, alors garder le deuxième opérande B tel quel, et remettre la retenue d’entrée C0 à 0, afin d’effectuer (A + B + 0) = (A + B). sinon, si M = 1, alors prendre le complément à 1 du deuxième opérande pour former B et mettre la retenue d’entrée C0 à 1, afin d’effectuer (A + B + 1) = (A − B). Les deux expressions ci-dessus peuvent être combinées en une seule de la manière suivante: Effectuer Wail Gueaieb (Université d’Ottawa) A + (M ⊕ B) + M CEG2536: Architecture des Ordinateurs I Automne 2007 24 / 54 Micro-opérations Arithmétiques Additionneur/Soustracteur Binaire Avec cette méthode, l’exemple précédent d’un additionneur binaire de 4 bits à la Figure 6 peut être réarrangé en un additionneur/soustracteur binaire de 4 bits, comme sur la Figure 7. Figure 7: Additionneur/Soustracteur binaire de 4 bits Wail Gueaieb (Université d’Ottawa) CEG2536: Architecture des Ordinateurs I Automne 2007 25 / 54 Micro-opérations Arithmétiques Additionneur/Soustracteur Binaire Pour les nombres non-signés, Lorsque M = 0 (micro-opération d’addition), Sn−1 . . . S1 S0 donne le résultat de (A + B). Un débordement a lieu si Cn = 1. Lorsque M = 1 (micro-opération de soustraction) et si A ≥ B, alors Sn−1 . . . S1 S0 donne le résultat de (A − B). Il ne peut pas y avoir de débordement dans ce cas. Lorsque M = 1 (micro-opération de soustraction) et si A < B, alors Sn−1 . . . S1 S0 donne le résultat du complément à 2 de (B − A). Il ne peut pas y avoir de débordement dans ce cas. Pour les nombres signés, Lorsque M = 0 (micro-opération d’addition), alors Sn−1 . . . S1 S0 donne le résultat de (A + B). Un débordement a lieu si Cn ⊕ Cn−1 = 1. Lorsque M = 1 (micro-opération de soustraction), alors Sn−1 . . . S1 S0 donne le résultat de (A − B). Un débordement a lieu si Cn ⊕ Cn−1 = 1. Wail Gueaieb (Université d’Ottawa) CEG2536: Architecture des Ordinateurs I Automne 2007 26 / 54 Micro-opérations Arithmétiques Incrémenteur Binaire Incrémenteur Binaire Une façon d’implémenter un incrémenteur binaire est d’utiliser un compteur binaire. Cependant, le circuit numérique du compteur binaire dépend fortement du type de bascules utilisées. Une autre façon d’implémenter un incrémenteur binaire est d’utiliser des demi-additionneurs (HA) connectés en cascade. Le circuit combinatoire d’un incrémenteur binaire de n bits qui opère sur un nombre binaire A = An−1 . . . A0 est composé de: n demi-additionneurs (HA) n + 1 bits d’entrée: A0 , . . ., An−1 , et 1 n + 1 bits de sortie: la somme Sn−1 . . . S0 , et le bit de retenue de sortie Cn Les deux bits d’entrée du premier demi-additionneur (HA0 ) sont A0 et 1. Les deux bits d’entrée de chaque autre demi-additionneur (HAi ), où i = 1, . . . , n − 1, sont Ai et la retenue de sortie Ci−1 du demi-additionneur précédent. Wail Gueaieb (Université d’Ottawa) CEG2536: Architecture des Ordinateurs I Automne 2007 27 / 54 Micro-opérations Arithmétiques Incrémenteur Binaire Example 2 (Incrémenteur de 4 bits). La figure suivante montre le circuit logique d’un incrémenteur binaire de 4 bits. Figure 8: Incrémenteur binaire de 4 bits Wail Gueaieb (Université d’Ottawa) CEG2536: Architecture des Ordinateurs I Automne 2007 28 / 54 Micro-opérations Arithmétiques Circuit Arithmétique Circuit Arithmétique Différentes micro-opérations peuvent être implémentées en un circuit combinatoire commun appelé circuit arithmétique, ou unité arithmétique. L’idée derrière la conception d’une unité arithmétique de n bits qui opère sur deux nombres A et B de n bits est d’écrire le résultat D de chaque micro-opération sous la forme D = A + Y + Cin , Où Y est le résultat d’une sorte de “transformation” de B, et Cin est soit 0, soit 1. Une unité arithmétique de n bits qui effectue 2k micro-opérations arithmétiques est composée de: Deux lignes d’entrée de données de n bits, A et Y n additionneurs complets, chacun des additionneurs complets travaillant sur un bit de A, un bit de Y , et la retenue de sortie de l’additionneur complet précédent n multiplexeurs de type 2k × 1 , chacun des multiplexeurs générant un bit de Y k bits de sélection Sn−1 . . . S0 qui sont communs à tous les multiplexeurs Parfois, suivant les micro-opérations à être effectuées par l’unité arithmétique, il est utile d’assigner Cin à l’un des bits de sélection Wail Gueaieb (Université d’Ottawa) CEG2536: Architecture des Ordinateurs I Automne 2007 29 / 54 Micro-opérations Arithmétiques Circuit Arithmétique Example 3. Concevez une unité arithmétique de 4 bits qui effectue les micro-opérations arithmétiques qui se trouvent dans la table ci-dessous. Table 5: Table de fonction du circuit arithmétique Bits de sélection S1 S0 Cin 0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1 D D D D D D D D D Sortie = A + Y + Cin =A+B =A+B +1 =A+B =A+B +1 =A =A+1 =A−1 =A Micro-opération Addition Addition avec retenue Soustraction avec emprunt (D = A − B − 1) Soustraction (D = A − B) Transfert de A Incrémentation de A Décrémentation de A Transfert de A Le diagramme logique de cette unité arithmétique est montré à la Figure 9. Wail Gueaieb (Université d’Ottawa) CEG2536: Architecture des Ordinateurs I Automne 2007 30 / 54 Micro-opérations Arithmétiques Circuit Arithmétique Figure 9: Circuit arithmétique de 4 bits Wail Gueaieb (Université d’Ottawa) CEG2536: Architecture des Ordinateurs I Automne 2007 31 / 54 Micro-opérations Logiques Micro-opérations Logiques Les micro-opérations logiques effectuent des opérations binaires booléennes ordinaires sur des données rangées dans deux registres. Un exemple de micro-opération logique est R1 ← R1 ⊕ R2, qui effectue une opération OU-EXCLUSIF sur le contenu des registres R1 et R2 et range le résultat dans R1. Afin de distinguer une addition arithmétique d’une micro-opération logique OU Une micro-opération de OU logique sera symbolisée par un “∨”. De même, une micro-opération de ET logique sera symbolisée par un “∧”. Lorsqu’un symbole “+” apparaı̂t dans une fonction de contrôle, il dénotera toujours une opération OU (car on ne peut pas le confondre avec une addition). Wail Gueaieb (Université d’Ottawa) CEG2536: Architecture des Ordinateurs I Automne 2007 32 / 54 Micro-opérations Logiques Example 4. L’expression P + Q : R1 ← R2 + R3 , R4 ← R5 ∨ R6 signifie: si (P = 1 ou Q = 1), alors faire les micro-opérations et charger leurs résultats dans leurs registres respectifs à la même impulsion d’horloge: Ajouter R2 et R3 et ranger le résultat dans R1, et Effectuer une opération de OU logique sur R5 et R6 et ranger le résultat dans R4. Wail Gueaieb (Université d’Ottawa) CEG2536: Architecture des Ordinateurs I Automne 2007 33 / 54 Micro-opérations Logiques La Table 6 regroupe 16 micro-opérations logiques qui peuvent être effectuées sur le contenu de deux registres A et B. Table 6: 16 micro-opérations logiques Wail Gueaieb (Université d’Ottawa) CEG2536: Architecture des Ordinateurs I Automne 2007 34 / 54 Micro-opérations Logiques Circuit Logique Circuit Logique Un circuit qui effectue un ensemble de micro-opérations logiques s’appelle une unité logique, ou un circuit logique. Un circuit logique de n bits qui peut effectuer 2k opérations logiques sur deux registres A et B de n bits est composé de: Deux lignes d’entrées de données de n bits pour A et B n multiplexeurs de type 2k × 1, chaque multiplexeur opérant sur un bit de chaque registre L’opération logique particulière à être effectuée est choisie par les k bits de sélection qui sont communs aux n multiplexeurs Wail Gueaieb (Université d’Ottawa) CEG2536: Architecture des Ordinateurs I Automne 2007 35 / 54 Micro-opérations Logiques Circuit Logique Example 5 (Unité logique de 2 bits). Concevez une unité logique de 2 bits pour effectuer les quatre micro-opérations suivantes sur deux registres de 2 bits A = A1 A0 et B = B1 B0 . Unité logique de 2 bits ⇒ eux multiplexeurs, un pour chaque bit. 4 micro-opérations ⇒ deux bits de sélection S1 et S0 qui sont communs aux deux multiplexeurs. D’abord, construire le circuit qui opère sur A0 et B0 (circuit à une étape). Ensuite, construire autant de copies de ce circuit que nécessaire pour le restant des bits. Dans ce cas, une autre copie seulement est nécessaire pour A1 et B1 . Empiler tous ces circuits ensemble pour former une unité logique de n bits. Table 7: Logic Circuit Function Table Sélection S1 S0 0 0 0 1 1 0 1 1 Sortie E =A∧B E =A∨B E =A⊕B E =A Opération ET OU OU-EXCLUSIF Complément Figure 10: Circuit logique à une étape Wail Gueaieb (Université d’Ottawa) CEG2536: Architecture des Ordinateurs I Automne 2007 36 / 54 Micro-opérations Logiques Applications Applications Les micro-opérations logiques sont couramment utilisées pour manipuler des bits individuellement ou des portions d’un mot rangé dans un registre. Des exemples de telles manipulations de bits sont : remise à zéro de certains bits, ou bien mise à 1. Dans ce qui suit, nous allons voir à travers certains exemples comment manipuler un ensemble de bits dans un registre (registre A). Wail Gueaieb (Université d’Ottawa) CEG2536: Architecture des Ordinateurs I Automne 2007 37 / 54 Micro-opérations Logiques Applications Mise à 1 sélective La micro-opération de mise à 1 sélective met certains bits à 1, et garde le reste des bits inchangés. La position des bits dans A qui seront affectés par cette transformation est spécifiée par un autre registre, B. Les bits de A qui correspondent aux 1 dans B sont les bits qui seront mis à 1. 1 1 0 1 1 0 0 0 A avant B 1 1 1 0 A après Une telle transformation peut être faite en utilisant une micro-opération de OU logique (∨), et peut être symbolisée par l’expression suivante, en langage de transfert de registre (RTL): A ← A ∨ B. Wail Gueaieb (Université d’Ottawa) CEG2536: Architecture des Ordinateurs I Automne 2007 38 / 54 Micro-opérations Logiques Applications Complémentation sélective La micro-opération de complémentation sélective complémente les bits de A qui correspondent aux 1 de B. Le reste des bits de A est inchangé. 1 1 0 1 1 0 0 0 A avant B 0 1 1 0 A après Une telle transformation peut se faire par une micro-opération OU-EXCLUSIF logique (⊕), et peut être symbolisée par l’expression RTL suivante: A ← A ⊕ B. Wail Gueaieb (Université d’Ottawa) CEG2536: Architecture des Ordinateurs I Automne 2007 39 / 54 Micro-opérations Logiques Applications Remise à 0 sélective La micro-opération de remise à 0 sélective met à 0 les bits de A qui correspondent aux 1 de B. Le reste des bits de A est inchangé. 1 1 0 1 1 0 0 0 A avant B 0 0 1 0 A après Une telle transformation peut se faire par une micro-opération de ET logique (∧), et peut être symbolisée par l’expression RTL suivante: A ← A ∧ B. Wail Gueaieb (Université d’Ottawa) CEG2536: Architecture des Ordinateurs I Automne 2007 40 / 54 Micro-opérations Logiques Applications Masquage La micro-opération de masquage met à 0 les bits de A qui correspondent aux 0 de B. Le reste des bits de A est inchangé. 1 1 0 1 1 0 0 0 A avant B (opérande logique) 1 0 0 0 A après le masquage Une telle transformation peut se faire par une micro-opération de ET logique (∧), et peut être symbolisée par l’expression RTL suivante: A ← A ∧ B. Wail Gueaieb (Université d’Ottawa) CEG2536: Architecture des Ordinateurs I Automne 2007 41 / 54 Micro-opérations Logiques Applications Insertion La micro-opération d’insertion insère une nouvelle valeur dans un groupe de bits. Ceci se fait d’abord en masquant ce groupe de bits et en y appliquant un OU logique avec la valeur requise. Si, par exemple, la valeur de A est 0110 1010, et on désire remplacer les 4 bits les plus à gauche par 1001, alors on commence par masquer les bits que l’on veut remplacer 0110 1010 0000 1111 A avant B (masque) 0000 1010 A après le masquage puis on insère la nouvelle valeur: 0000 1010 1001 0000 A avant B (insertion) 1001 1010 A après l’insertion Une telle transformation peut se faire en utilisant les expressions RTL suivantes: A←A∧B B ← l’opérande approprié A←A∨B Wail Gueaieb (Université d’Ottawa) CEG2536: Architecture des Ordinateurs I Automne 2007 42 / 54 Micro-opérations Logiques Applications Remise à 0 La micro-opération de remise à 0 compare les mots dans A et dans B, et produit un résultat qui se compose uniquement de 0 si les deux nombres sont égaux. Ceci peut se faire en utilisant une opération logique OU-EXCLUSIF. Wail Gueaieb (Université d’Ottawa) 1 1 0 0 1 1 0 0 A avant B 0 0 0 0 A←A⊕B CEG2536: Architecture des Ordinateurs I Automne 2007 43 / 54 Micro-opérations de décalage Micro-opérations de décalage Il y a trois types de micro-opérations de décalage: Décalage logique, Décalage circulaire, et Décalage arithmétique Voici une liste des différentes micro-opérations de décalage et leur notation. Table 8: Micro-opérations de décalage Désignation symbolique R ← shl R R ← shr R R ← cil R R ← cir R R ← ashl R R ← ashr R Wail Gueaieb (Université d’Ottawa) Description Décalage à gauche du registre R Décalage à droite du registre R Décalage circulaire à gauche du registre R Décalage circulaire à droite du registre R Décalage arithmétique à gauche du registre R Décalage arithmétique à droite du registre R CEG2536: Architecture des Ordinateurs I Automne 2007 44 / 54 Micro-opérations de décalage Décalage logique Décalage logique Un décalage logique insère un ’0’ dans le registre par l’entrée série du registre. shl et shr seront dorénavant utilisés pour symboliser des micro-opérations de décalage à gauche et de décalage à droite. Example 6. 1001 0100 A avant A après (A ← shr A) Wail Gueaieb (Université d’Ottawa) 1001 0010 CEG2536: Architecture des Ordinateurs I A avant A après (A ← shl A) Automne 2007 45 / 54 Micro-opérations de décalage Décalage circulaire Décalage circulaire Le décalage circulaire (qu’on appelle parfois micro-opération de rotation) fait circuler les bits du registre entre ses deux extrémités sans perte d’information. Ceci peut se faire en connectant la sortie série du registre de décalage à son entrée série. Example 7. 1001 0011 A avant A après (A ← cil A) Wail Gueaieb (Université d’Ottawa) 1001 1100 CEG2536: Architecture des Ordinateurs I A avant A après (A ← cir A) Automne 2007 46 / 54 Micro-opérations de décalage Décalage arithmétique Décalage arithmétique Un décalage arithmétique est une micro-opération qui décale un nombre signé à gauche ou à droite Un décalage à gauche arithmétique effectue une multiplication signée par 2. Un décalage à droite arithmétique effectue une division signée par 2. Un décalage arithmétique doit être fait de façon à ce que la valeur du bit de signe ne soit pas changée. Wail Gueaieb (Université d’Ottawa) CEG2536: Architecture des Ordinateurs I Automne 2007 47 / 54 Micro-opérations de décalage Décalage arithmétique Décalage à droite arithmétique Le décalage à droite arithmétique garde le bit de signe inchangé et décale le nombre (incluant le bit de signe) vers la droite. Example 8. 1001 1100 0110 0011 nombre signé A, avant le décalage A après (A ← ashr A) nombre signé A, avant le décalage A après (A ← ashr A) La Figure 11 montre une micro-opération de décalage à micro-opération. Figure 11: décalage à droite arithmétique Wail Gueaieb (Université d’Ottawa) CEG2536: Architecture des Ordinateurs I Automne 2007 48 / 54 Micro-opérations de décalage Décalage arithmétique Décalage à gauche arithmétique Le décalage à gauche arithmétique insère un 0 à la position la moins significative, et décale tous les autres bits vers la gauche (incluant le bit de signe). Dans ce cas, une inversion de signe peut avoir lieu, ce qui est considéré comme un débordement. Un débordement a lieu dans un registre R de n bits après un décalage à gauche arithmétique si initialement, avant l’opération de décalage, le bit de signe Rn−1 est différent du bit précédent Rn−2 . Une bascule D de débordement, dont la sortie est Vs , peut alors être utilisée pour détecter les débordements causés par les décalages à gauche Vs ← Rn−1 ⊕ Rn−2 , R ← ashl R. Pour que la détection de débordement réussisse, les deux micro-opérations doivent être déclenchées à la même impulsion d’horloge. Example 9. 1001 0010 nombre signé A A après (A ← ashl A) [débordement] Wail Gueaieb (Université d’Ottawa) 1110 1100 nombre signé A A après (A ← ashl A) [pas de débordement] CEG2536: Architecture des Ordinateurs I Automne 2007 49 / 54 Micro-opérations de décalage Implémentation matérielle Implémentation matérielle Un circuit combinatoire de décalage est montré à la Figure 12. Dans le cas de la figure: si S = 0, alors H = shr A (vers le bas sur la figure) si S = 1, alors H = shl A (vers le haut sur la figure) Le concepteur peut choisir ce qui entre dans les entrées série, suivant la fonctionnalité désirée du circuit. Figure 12: Circuit combinatoire de décalage de 4 bits Wail Gueaieb (Université d’Ottawa) CEG2536: Architecture des Ordinateurs I Automne 2007 50 / 54 Unité de décalage/arithmétique et logique Unité de décalage/arithmétique et logique Une unité arithmétique et logique (ALU) est un circuit combinatoire qui effectue des micro-opérations arithmétiques et logiques. Une unité de décalage/arithmétique et logique (ALSU) est une ALU qui effectue aussi des micro-opérations de décalage. Une façon d’implémenter une ALSU de n bits est de construire une ALSU à un seul étage (pour un seul bit), et ensuite on empile n copies de ces circuits (une pour chaque bit) pour former l’ALSU complète. Toutes les copies de l’ALSU à un étage utilisent les mêmes bits de sélection. Wail Gueaieb (Université d’Ottawa) CEG2536: Architecture des Ordinateurs I Automne 2007 51 / 54 Unité de décalage/arithmétique et logique Figure 13: Une unité de décalage/arithmétique et logique Wail Gueaieb (Université d’Ottawa) CEG2536: Architecture des Ordinateurs I Automne 2007 52 / 54 Unité de décalage/arithmétique et logique Une autre façon d’implémenter une ALSU est de construire: Une unité arithmétique complète Une unité logique complète, et Une unité de décalage complète et de passer les sorties de chaque unité à un multiplexeur qui va sélectionner la sortie finale suivant les valeurs des bits de sélection. Parfois, il est pratique de fusionner l’unité de décalage et l’unité logique si cela simplifie la conception. Wail Gueaieb (Université d’Ottawa) CEG2536: Architecture des Ordinateurs I Automne 2007 53 / 54 Unité de décalage/arithmétique et logique Example 10. Concevez une unité de décalage/arithmétique et logique qui effectue les micro-opérations décrites par la table de fonction suivante. Table 9: Table de fonction du ALSU Wail Gueaieb (Université d’Ottawa) CEG2536: Architecture des Ordinateurs I Automne 2007 54 / 54