You are on page 1of 3

Architecture 1

TD 5 : Unité Arithmétique et Logique


ENSIMAG 1A

Année scolaire 2008–2009

Ex. 1 : Codage des nombres en complément à deux

Le complément à deux est un codage permettant de représenter des entiers relatifs. Il existe
d’autres codages moins utilisés (e.g. signe et valeur absolue, complément à un) que l’on ne
détaillera pas ici.

Question 1 Remplir un tableau contenant les valeurs en base 2, en base 10 et en base 16 des
entiers relatifs entre -8 et 7 (inclus). Comment peut-on calculer −X à partir de X ?

Question 2 Quel intervalle d’entiers relatifs peut-on coder sur n bits ?

Question 3 Effectuer les opérations 2 + 3, −3 + 3, 7 + 1, −7 + −2 sur 4 bits.

Question 4 Comment peut-on détecter un dépassement de capacité lors d’une opération sur
des nombres codés en complément à deux ?

Ex. 2 : Unité Arithmétique et Logique

Dans cet exercice, on va étudier un circuit classique : l’unité arithmétique et logique, et


construire la partie centrale de ce circuit (l’étude complète d’un tel circuit dépasse le cadre du
TD).
Une Unité Arithmétique et Logique (UAL) est un circuit combinatoire regroupant diffé-
rentes opérations arithmétiques (addition, soustraction, etc.) et logiques (AND, OR, XOR, etc.)
applicables à des valeurs codées sur un nombre n de bits (on parle alors d’« UAL n bits »).
Sur le schéma ci-dessous, les bits si représentent l’entrée de sélection, qui permet de choisir
l’opération que doit effectuer l’UAL. Les entrées A et B servent à coder les opérandes et F le
résultat de l’opération (sur 4 bits dans l’exemple du schéma).
s1
L’entrée c0 sert à injecter une retenue entrante dans l’opération s2 s0
d’addition : cela permet notamment d’effectuer une addition sur 2N c0
bits par composition de 2 additions sur N bits. On parle d’opération
ADDC quand on prend en compte la retenue entrante et ADD
a3
a2
sinon. a1
L’UAL dispose également de deux sorties particulières, sur 1 bit a0
chacune (appelées « indicateurs » (flags)) et définies par : U f3
– C (Carry) est la retenue sortante cn générée par l’addition ou la
f2
A f1
soustraction ; f0
– O (Overflow ) vaut 1 ssi une opération arithmétique portant sur b3 L
des entiers codés en complément à deux a généré un dépassement b2
b1
de capacité. b0 O
C

Opération Sélection 1er opérande 2e opérande Retenue entrante Résultat


const0 000 – – – 0000
addc 001 A B c0 F = A + B + c0
sub 010 A B – F =A−B
notA 011 A B – F =A
notB 100 A B – F =B
xor 101 A B – F =A⊕B
or 110 A B – F = A OR B
and 111 A B – F = A AN D B

On commence par implanter l’opération d’addition. Pour cela, on se base sur l’architecture
dite de « l’additionneur à propagation de retenue ». Le principe est de construire une cellule
élémentaire capable d’effectuer une addition entre deux bits ai et bi , en prenant en compte une
retenue entrante ci , et qui produit en sortie la somme zi = ai + bi et une retenue sortante ci+1 .
Une fois cette cellule disponible, il est facile de construire un additionneur n bits en reliant la
retenue entrante de la cellule de rang i + 1 à la retenue sortant de la cellule de rang i.

an−1 bn−1 an−2 bn−2 a1 b 1 a0 b 0

cn c0

zn−1 zn−2 z1 z0

Question 1 Donner les expressions simplifiées de la somme zi et de la retenue sortante ci+1


d’une cellule élémentaire en fonction des opérandes ai et bi et de la retenue entrante ci . Dessiner
le schéma correspondant.

Question 2 Exprimer le bit O en fonction des ci . Quels sens peut-on donner aux valeurs de
C et O en fonction des paramètres A et B et de l’opération effectuée ?

On veut maintenant implanter l’opération de soustraction (on note que dans cette UAL, la
soustraction ne prend pas en compte une éventuelle retenue entrante : il s’agit d’une opération
SUB et pas SUBC).
Question 3 En se basant sur la relation −X = X + 1, expliquer comment on peut simplement
modifier le circuit d’une cellule élémentaire d’additionneur pour gérer la soustraction de deux
entiers relatifs codés en complément à deux. Dessiner le schéma correspondant à la cellule de
rang 0.

En plus des indicateurs C et O présentés plus haut, on trouve traditionnellement deux autres
indicateurs dans la plupart des UAL :
– Z (Zero) vaut 1 ssi le résultat d’une opération est nul ;
– S (Sign) vaut 1 ssi le résultat d’une opération, interprété comme un entier relatif codé en
complément à deux, est négatif.

Question 4 Comment peut-on très simplement ajouter la gestion de ces indicateurs à l’UAL ?

Question 5 Sans ajouter de circuits supplémentaires au schéma de l’additionneur / sous-


tracteur, simplement en jouant sur les valeurs fournies aux entrées a0 , b0 , c0 et sub, expliquer
comment on peut obtenir simplement le calcul des opérateurs booléens pour la cellule de rang
0.

You might also like