Vous êtes sur la page 1sur 84

Licence Sciences, Technologies, Sant Universit de Perpignan Via Domitia

Semestre 6 (L3) - Mention Mathmatiques, Informatique Anne universitaire 2011/2012


Arithmtique des Ordinateurs
Algorithmes rapides dadditions
et un exemple de soustraction
Guillaume Revy
guillaume.revy@univ-perp.fr
Universit de Perpignan Via Domitia
Guillaume Revy (Univ. de Perpignan Via Domitia) Algorithmes rapides dadditions : et un exemple de soustrqction 1/44
Plan du cours
1. Rappels de logique (L1/L2) et exemple
2. Additionneurs deux oprandes
Additionneurs squentiels
Additionneurs retenue conditionnelle
Additionneurs retenue bondissante
Additionneurs retenue anticipe
Additionneurs de Brent et Kung
Guillaume Revy (Univ. de Perpignan Via Domitia) Algorithmes rapides dadditions : et un exemple de soustrqction 2/44
Rappels de logique (L1/L2) et exemple
Plan du cours
1. Rappels de logique (L1/L2) et exemple
2. Additionneurs deux oprandes
Additionneurs squentiels
Additionneurs retenue conditionnelle
Additionneurs retenue bondissante
Additionneurs retenue anticipe
Additionneurs de Brent et Kung
Guillaume Revy (Univ. de Perpignan Via Domitia) Algorithmes rapides dadditions : et un exemple de soustrqction 3/44
Rappels de logique (L1/L2) et exemple
Quelques portes logiques de base
AND
X Y
X Y
OR
X Y
X +Y
XOR
X Y
X Y
NOT
X
X
X Y
X Y
AND
AND
0 0 0
0 1 0
1 0 0
1 1 1
OR
0 0 0
0 1 1
1 0 1
1 1 1
XOR
0 0 0
0 1 1
1 0 1
1 1 0
NOT
0 1
1 0
NAND
0 0 1
0 1 1
1 0 1
1 1 0
Guillaume Revy (Univ. de Perpignan Via Domitia) Algorithmes rapides dadditions : et un exemple de soustrqction 4/44
Rappels de logique (L1/L2) et exemple
Quelques rgles de logiques
Associativit

(a b) c = a (b c) = a b c

(a+b) +c = a+(b +c) = a+b +c


Commutativit

a b = b a

a+b = b +a
Distributivit

a (b +c) = (a b) +(a c)

a+(b c) = (a+b) (a+c)


Autres

ab = a b +a b

a b = a+c

a+b = a c
Guillaume Revy (Univ. de Perpignan Via Domitia) Algorithmes rapides dadditions : et un exemple de soustrqction 5/44
Rappels de logique (L1/L2) et exemple
Quest-ce quun multiplexeur ?
Un multiplexeur est un circuit qui permet de slectionner une entre parmi
n entres possibles, en fonction dun paramtre.
Le schma dun multiplexeur 2:1 (2 vers 1) est le suivant.
c
Y X
S
Y
c
S
X
MUX
0 1
AND AND
OR

si c = 0 S = X avec S
mux(2:1)
= 3 portes

si c = 1 S = Y D
mux(2:1)
= 2 portes
Guillaume Revy (Univ. de Perpignan Via Domitia) Algorithmes rapides dadditions : et un exemple de soustrqction 6/44
Rappels de logique (L1/L2) et exemple
Sauriez-vous construire un convertisseur binaire gray ?
Rappel : soient N un nombre en notation binaire positionnelle simple, et G son
quivalent en notation binaire rchie (codage de Gray) :
G =
N 2N
2
.
Guillaume Revy (Univ. de Perpignan Via Domitia) Algorithmes rapides dadditions : et un exemple de soustrqction 7/44
Rappels de logique (L1/L2) et exemple
Sauriez-vous construire un convertisseur binaire gray ?
Rappel : soient N un nombre en notation binaire positionnelle simple, et G son
quivalent en notation binaire rchie (codage de Gray) :
G =
N 2N
2
.
0
G
2
G
3
G
1
G
0
N
3
N
2
N
1
N
0
XOR XOR XOR XOR
Guillaume Revy (Univ. de Perpignan Via Domitia) Algorithmes rapides dadditions : et un exemple de soustrqction 7/44
Rappels de logique (L1/L2) et exemple
Sauriez-vous construire un convertisseur binaire gray ?
Rappel : soient N un nombre en notation binaire positionnelle simple, et G son
quivalent en notation binaire rchie (codage de Gray) :
G =
N 2N
2
.
G
2
G
3
G
1
G
0
N
3
N
2
N
1
N
0
XOR XOR XOR
Guillaume Revy (Univ. de Perpignan Via Domitia) Algorithmes rapides dadditions : et un exemple de soustrqction 7/44
Rappels de logique (L1/L2) et exemple
Convertisseur binaire gray avec TkGate 2.0
TkGate 2.0 : http://www.tkgate.org/2.0/
Guillaume Revy (Univ. de Perpignan Via Domitia) Algorithmes rapides dadditions : et un exemple de soustrqction 8/44
Rappels de logique (L1/L2) et exemple
Convertisseur binaire gray avec TkGate 2.0
TkGate 2.0 : http://www.tkgate.org/2.0/
Guillaume Revy (Univ. de Perpignan Via Domitia) Algorithmes rapides dadditions : et un exemple de soustrqction 8/44
Additionneurs deux oprandes
Plan du cours
1. Rappels de logique (L1/L2) et exemple
2. Additionneurs deux oprandes
Additionneurs squentiels
Additionneurs retenue conditionnelle
Additionneurs retenue bondissante
Additionneurs retenue anticipe
Additionneurs de Brent et Kung
Guillaume Revy (Univ. de Perpignan Via Domitia) Algorithmes rapides dadditions : et un exemple de soustrqction 9/44
Additionneurs deux oprandes Additionneurs squentiels
Plan du cours
1. Rappels de logique (L1/L2) et exemple
2. Additionneurs deux oprandes
Additionneurs squentiels
Additionneurs retenue conditionnelle
Additionneurs retenue bondissante
Additionneurs retenue anticipe
Additionneurs de Brent et Kung
Guillaume Revy (Univ. de Perpignan Via Domitia) Algorithmes rapides dadditions : et un exemple de soustrqction 10/44
Additionneurs deux oprandes Additionneurs squentiels
Quelques rappels sur laddition
partir de maintenant, on considre

la base = 2,

et les encodages en numrartion simple position et en complment 2


Soient deux nombres entiers X et Y, encods en base 2 sur n bits :
X = (X
n1
X
n2
X
1
X
0
)
2
et Y = (Y
n1
Y
n2
Y
1
Y
0
)
2
Le rsultat S de laddition est : S = (S
n1
S
n2
S
1
S
0
)
2
i < n, S
i
= X
i
Y
i
c
i
,
avec c
0
= 0, S
n
= c
n
, et c
i +1
= maj
_
X
i
, Y
i
, c
i
_
.

numration simple position : dpassement de capacit c


n
= 1

numration en complment 2 : dpassement de capacit c


n
c
n1
= 1
Guillaume Revy (Univ. de Perpignan Via Domitia) Algorithmes rapides dadditions : et un exemple de soustrqction 11/44
Additionneurs deux oprandes Additionneurs squentiels
Quelques rappels sur laddition
partir de maintenant, on considre

la base = 2,

et les encodages en numrartion simple position et en complment 2


Soient deux nombres entiers X et Y, encods en base 2 sur n bits :
X = (X
n1
X
n2
X
1
X
0
)
2
et Y = (Y
n1
Y
n2
Y
1
Y
0
)
2
Le rsultat S de laddition est : S = (S
n1
S
n2
S
1
S
0
)
2
i < n, S
i
= X
i
Y
i
c
i
,
avec c
0
= 0, S
n
= c
n
, et c
i +1
= maj
_
X
i
, Y
i
, c
i
_
.

numration simple position : dpassement de capacit c


n
= 1

numration en complment 2 : dpassement de capacit c


n
c
n1
= 1
Guillaume Revy (Univ. de Perpignan Via Domitia) Algorithmes rapides dadditions : et un exemple de soustrqction 11/44
Additionneurs deux oprandes Additionneurs squentiels
Quelques rappels sur laddition
partir de maintenant, on considre

la base = 2,

et les encodages en numrartion simple position et en complment 2


Soient deux nombres entiers X et Y, encods en base 2 sur n bits :
X = (X
n1
X
n2
X
1
X
0
)
2
et Y = (Y
n1
Y
n2
Y
1
Y
0
)
2
Le rsultat S de laddition est : S = (S
n1
S
n2
S
1
S
0
)
2
i < n, S
i
= X
i
Y
i
c
i
,
avec c
0
= 0, S
n
= c
n
, et c
i +1
= maj
_
X
i
, Y
i
, c
i
_
.

numration simple position : dpassement de capacit c


n
= 1

numration en complment 2 : dpassement de capacit c


n
c
n1
= 1
Guillaume Revy (Univ. de Perpignan Via Domitia) Algorithmes rapides dadditions : et un exemple de soustrqction 11/44
Additionneurs deux oprandes Additionneurs squentiels
Additionneur squentiel (ripple carry adder)
Soient deux nombres entiers X et Y, encods en base 2 sur n bits
Addition de X et Y : utilisation de n cellules Full Adder (FA)
FA c
in
c
out
S
i
X
i
Y
i
X
i
Y
i
c
in
S
i
= X
i
Y
i
c
i
c
out
= maj
_
X
i
, Y
i
, c
i
_
0 0 0 0 0
0 0 1 1 0
0 1 0 1 0
0 1 1 0 1
1 0 0 1 0
1 0 1 0 1
1 1 0 0 1
1 1 1 1 1
Surface et dlai

S
add(n)
= n S
fa
O
_
n
_

D
add(n)
= n D
fa
O
_
n
_
Additionneur 8 bits : utilisation de 8 cellules FA en squence

exemple : additionner 10100010 et 00101111 rsultat : 11010001


1 1 0 1 0
1 0 1 0 0
0
1
0
1 0
1
FA FA FA FA FA FA FA FA
0
0 1 0 0 0 0 1 1
0 0 1 0 1 1 1 1
Cas 1 : num eration simple
Guillaume Revy (Univ. de Perpignan Via Domitia) Algorithmes rapides dadditions : et un exemple de soustrqction 12/44
Additionneurs deux oprandes Additionneurs squentiels
Additionneur squentiel (ripple carry adder)
Soient deux nombres entiers X et Y, encods en base 2 sur n bits
Addition de X et Y : utilisation de n cellules Full Adder (FA)
FA c
in
c
out
S
i
X
i
Y
i
X
i
Y
i
c
in
S
i
= X
i
Y
i
c
i
c
out
= maj
_
X
i
, Y
i
, c
i
_
0 0 0 0 0
0 0 1 1 0
0 1 0 1 0
0 1 1 0 1
1 0 0 1 0
1 0 1 0 1
1 1 0 0 1
1 1 1 1 1
Surface et dlai

S
add(n)
= n S
fa
O
_
n
_

D
add(n)
= n D
fa
O
_
n
_
Additionneur 8 bits : utilisation de 8 cellules FA en squence

exemple : additionner 10100010 et 10101111 rsultat : overow


1 0 1 0
1 0 1 0 1
0
overow
0
1
0
1 0
1
FA FA FA FA FA FA FA FA
0
0 1 0 0 0 0 1 1
1 0 1 0 1 1 1 1
Cas 1 : num eration simple
Guillaume Revy (Univ. de Perpignan Via Domitia) Algorithmes rapides dadditions : et un exemple de soustrqction 12/44
Additionneurs deux oprandes Additionneurs squentiels
Additionneur squentiel (ripple carry adder)
Soient deux nombres entiers X et Y, encods en base 2 sur n bits
Addition de X et Y : utilisation de n cellules Full Adder (FA)
FA c
in
c
out
S
i
X
i
Y
i
X
i
Y
i
c
in
S
i
= X
i
Y
i
c
i
c
out
= maj
_
X
i
, Y
i
, c
i
_
0 0 0 0 0
0 0 1 1 0
0 1 0 1 0
0 1 1 0 1
1 0 0 1 0
1 0 1 0 1
1 1 0 0 1
1 1 1 1 1
Surface et dlai

S
add(n)
= n S
fa
O
_
n
_

D
add(n)
= n D
fa
O
_
n
_
Additionneur 8 bits : utilisation de 8 cellules FA en squence

exemple : additionner 10100010 et 00101111 rsultat : 11010001


1 1 0 1 0
1 0 1 0 0
0
1
0
1 0
1
FA FA FA FA FA FA FA FA
0
0 1 0 0 0 0 1 1
0 0 1 0 1 1 1 1
Cas 2 : compl ement ` a 2
Guillaume Revy (Univ. de Perpignan Via Domitia) Algorithmes rapides dadditions : et un exemple de soustrqction 12/44
Additionneurs deux oprandes Additionneurs squentiels
Additionneur squentiel (ripple carry adder)
Soient deux nombres entiers X et Y, encods en base 2 sur n bits
Addition de X et Y : utilisation de n cellules Full Adder (FA)
FA c
in
c
out
S
i
X
i
Y
i
X
i
Y
i
c
in
S
i
= X
i
Y
i
c
i
c
out
= maj
_
X
i
, Y
i
, c
i
_
0 0 0 0 0
0 0 1 1 0
0 1 0 1 0
0 1 1 0 1
1 0 0 1 0
1 0 1 0 1
1 1 0 0 1
1 1 1 1 1
Surface et dlai

S
add(n)
= n S
fa
+ 1
O
_
n
_

D
add(n)
= n D
fa
+ 1
O
_
n
_
Additionneur 8 bits : utilisation de 8 cellules FA en squence

exemple : additionner 10100010 et 10101111 rsultat : overow


1 0 1 0
1 0 1 0
0
overow
1 1
0
1
0
1 0
1
XOR
FA FA FA FA FA FA FA FA
0
0 1 0 0 0 0 1 1
1 0 1 0 1 1 1 1
Cas 2 : compl ement ` a 2
Guillaume Revy (Univ. de Perpignan Via Domitia) Algorithmes rapides dadditions : et un exemple de soustrqction 12/44
Additionneurs deux oprandes Additionneurs squentiels
Schma logique de la cellule full-adder
Exemple de circuit pour la cellule full-adder
XOR
XOR
AND
AND
AND
OR
OR
X
i
Y
i
c
in
c
out
S
i
X
i
Y
i
c
in
S
i
= X
i
Y
i
c
i
c
out
= maj
_
X
i
, Y
i
, c
i
_
0 0 0 0 0
0 0 1 1 0
0 1 0 1 0
0 1 1 0 1
1 0 0 1 0
1 0 1 0 1
1 1 0 0 1
1 1 1 1 1
S
fa
= 7 portes et D
fa
= 3 portes Sauriez-vous faire mieux ?
Remarque : utilisation de 2 cellules half-adder (HA) et dune porte OU (OR)
Guillaume Revy (Univ. de Perpignan Via Domitia) Algorithmes rapides dadditions : et un exemple de soustrqction 13/44
Additionneurs deux oprandes Additionneurs squentiels
Schma logique de la cellule full-adder
Exemple de circuit pour la cellule full-adder
XOR
XOR
AND
OR
AND
X
i
Y
i
c
in
c
out
S
i
X
i
Y
i
c
in
S
i
= X
i
Y
i
c
i
c
out
= maj
_
X
i
, Y
i
, c
i
_
0 0 0 0 0
0 0 1 1 0
0 1 0 1 0
0 1 1 0 1
1 0 0 1 0
1 0 1 0 1
1 1 0 0 1
1 1 1 1 1
S
fa
= 5 portes et D
fa
= 3 portes
Remarque : utilisation de 2 cellules half-adder (HA) et dune porte OU (OR)
Guillaume Revy (Univ. de Perpignan Via Domitia) Algorithmes rapides dadditions : et un exemple de soustrqction 13/44
Additionneurs deux oprandes Additionneurs squentiels
Schma logique de la cellule full-adder
Exemple de circuit pour la cellule full-adder
HA
HA
XOR
XOR
AND
OR
AND
X
i
Y
i
c
in
c
out
S
i
X
i
Y
i
c
in
S
i
= X
i
Y
i
c
i
c
out
= maj
_
X
i
, Y
i
, c
i
_
0 0 0 0 0
0 0 1 1 0
0 1 0 1 0
0 1 1 0 1
1 0 0 1 0
1 0 1 0 1
1 1 0 0 1
1 1 1 1 1
S
fa
= 5 portes et D
fa
= 3 portes
Remarque : utilisation de 2 cellules half-adder (HA) et dune porte OU (OR)
Guillaume Revy (Univ. de Perpignan Via Domitia) Algorithmes rapides dadditions : et un exemple de soustrqction 13/44
Additionneurs deux oprandes Additionneurs squentiels
Additionneur/soustracteur en complment 2
Soient deux nombres entiers X et Y, encods en base 2 sur n bits
Additionner X et Y : on sait faire maintenant... mais soustraire X et Y ?

X Y = X +(Y)

utilisation dun schma similaire celui de ladditionneur

n cellules FA et 1 porte XOR (dtection du dpassement de capacit)

circuit pour calculer loppos Y =Y de Y


Calcul de Y, loppos de Y

inverser tous les bits de Y (Y


n1
Y
n2
Y
1
Y
0
)

ajouter 1 (et ignorer lventuelle retenue sortante) Y (Y


n1
Y
n2
Y
1
Y
0
) +1
Finalement : comment combiner additionneur et soustracteur ?

X +Y (X
n1
X
n2
X
1
X
0
) +(Y
n1
Y
n2
Y
1
Y
0
)

X Y (X
n1
X
n2
X
1
X
0
) +(Y
n1
Y
n2
Y
1
Y
0
) +1
Guillaume Revy (Univ. de Perpignan Via Domitia) Algorithmes rapides dadditions : et un exemple de soustrqction 14/44
Additionneurs deux oprandes Additionneurs squentiels
Additionneur/soustracteur en complment 2
Soient deux nombres entiers X et Y, encods en base 2 sur n bits
Additionner X et Y : on sait faire maintenant... mais soustraire X et Y ?

X Y = X +(Y)

utilisation dun schma similaire celui de ladditionneur

n cellules FA et 1 porte XOR (dtection du dpassement de capacit)

circuit pour calculer loppos Y =Y de Y


Calcul de Y, loppos de Y

inverser tous les bits de Y (Y


n1
Y
n2
Y
1
Y
0
)

ajouter 1 (et ignorer lventuelle retenue sortante) Y (Y


n1
Y
n2
Y
1
Y
0
) +1
Finalement : comment combiner additionneur et soustracteur ?

X +Y (X
n1
X
n2
X
1
X
0
) +(Y
n1
Y
n2
Y
1
Y
0
)

X Y (X
n1
X
n2
X
1
X
0
) +(Y
n1
Y
n2
Y
1
Y
0
) +1
Guillaume Revy (Univ. de Perpignan Via Domitia) Algorithmes rapides dadditions : et un exemple de soustrqction 14/44
Additionneurs deux oprandes Additionneurs squentiels
Additionneur/soustracteur en complment 2
Soient deux nombres entiers X et Y, encods en base 2 sur n bits
Additionner X et Y : on sait faire maintenant... mais soustraire X et Y ?

X Y = X +(Y)

utilisation dun schma similaire celui de ladditionneur

n cellules FA et 1 porte XOR (dtection du dpassement de capacit)

circuit pour calculer loppos Y =Y de Y


Calcul de Y, loppos de Y

inverser tous les bits de Y (Y


n1
Y
n2
Y
1
Y
0
)

ajouter 1 (et ignorer lventuelle retenue sortante) Y (Y


n1
Y
n2
Y
1
Y
0
) +1
Finalement : comment combiner additionneur et soustracteur ?

X +Y (X
n1
X
n2
X
1
X
0
) +(Y
n1
Y
n2
Y
1
Y
0
)

X Y (X
n1
X
n2
X
1
X
0
) +(Y
n1
Y
n2
Y
1
Y
0
) +1
Guillaume Revy (Univ. de Perpignan Via Domitia) Algorithmes rapides dadditions : et un exemple de soustrqction 14/44
Additionneurs deux oprandes Additionneurs squentiels
Schma dun additionneur/soustracteur en complment 2
Additionneur/soustracteur en complment 2, sur 8 bits

X +Y (X
7
X
6
X
5
X
4
X
3
X
2
X
1
X
0
) +(Y
7
Y
6
Y
5
Y
4
Y
3
Y
2
Y
1
Y
0
)

X Y (X
7
X
6
X
5
X
4
X
3
X
2
X
1
X
0
) +(Y
7
Y
6
Y
5
Y
4
Y
3
Y
2
Y
1
Y
0
) +1
S
3
S
4
S
5
S
6
S
7
c
8
c
7
c
5
c
4
c
6
S
2
c
3
S
1
c
2
S
0
c
1
c
0
X
O
R
X
O
R
X
O
R
X
O
R
X
O
R
X
O
R
X
O
R
FA FA FA FA FA FA FA FA
X
O
R
X
O
R
[sub]
overow
X
7
X
6
X
5
X
3
X
0
X
1
X
2
X
4
Y
6
Y
5
Y
4
Y
3
Y
2
Y
1
Y
0
Y
7
Remarques : temps dexcution et surface proportionnels n

temps dexcution n D
fa
+2

surface n (S
fa
+1) +1
Guillaume Revy (Univ. de Perpignan Via Domitia) Algorithmes rapides dadditions : et un exemple de soustrqction 15/44
Additionneurs deux oprandes Additionneurs squentiels
Additionneur srie et parallle pipe-line
Effectuer p sommes : S
(i )
= A
(i )
+B
(i )
, pour i {0, , p 1}
X
(0)
0
Y
(0)
0
X
(1)
0
Y
(1)
0
X
(2)
0
Y
(2)
0
X
(2)
1
Y
(2)
1
X
(1)
1
Y
(1)
1
X
(0)
1
Y
(0)
1
X
(0)
2
Y
(0)
2
X
(2)
2
Y
(2)
2
X
(1)
2
Y
(1)
2
X
(0)
3
Y
(0)
3
X
(1)
3
Y
(1)
3
X
(2)
3
Y
(2)
3
FA FA FA FA
0
FIGURE: Additionneur srie pipe-line
X
(0)
0
Y
(0)
0
X
(1)
0
Y
(1)
0
X
(2)
0
Y
(2)
0
D
D
D D
D
D
X
(0)
3
Y
(0)
3
X
(1)
3
Y
(1)
3
X
(0)
2
Y
(0)
2
X
(2)
2
Y
(2)
2
X
(1)
2
Y
(1)
2
X
(2)
1
Y
(2)
1
X
(1)
1
Y
(1)
1
X
(0)
1
Y
(0)
1
HA HA HA HA
HA HA HA
HA HA
HA
X
(2)
3
Y
(2)
3
FIGURE: Additionneur parallle pipe-line
Guillaume Revy (Univ. de Perpignan Via Domitia) Algorithmes rapides dadditions : et un exemple de soustrqction 16/44
Additionneurs deux oprandes Additionneurs retenue conditionnelle
Plan du cours
1. Rappels de logique (L1/L2) et exemple
2. Additionneurs deux oprandes
Additionneurs squentiels
Additionneurs retenue conditionnelle
Additionneurs retenue bondissante
Additionneurs retenue anticipe
Additionneurs de Brent et Kung
Guillaume Revy (Univ. de Perpignan Via Domitia) Algorithmes rapides dadditions : et un exemple de soustrqction 17/44
Additionneurs deux oprandes Additionneurs retenue conditionnelle
Principe de laddition retenue conditionnelle
Soient deux nombres entiers X et Y, encods en base 2 sur n bits, avec n = 2p
X = (X
n1
X
n2
X
1
X
0
)
2
et Y = (Y
n1
Y
n2
Y
1
Y
0
)
2
Principe : fractionner une addition sur n bits en 2 additions sur p = n/2 bits

additionner les parties basses (X


p1
X
p2
X
1
X
0
) +(Y
p1
Y
p2
Y
1
Y
0
)
2

additionner les parties hautes (X


n1
X
n2
X
p+1
X
p
) +(Y
n1
Y
n2
Y
p+1
Y
0
)
2

injecter la retenue sortante de laddition 1 en retenue entrante de laddition 2


Comment exprimer du paralllisme ?

additionner les parties basses

additionner les parties hautes considrer les 2 cas : retenue entrante = 0 et = 1

choisir la partie haute du rsultat en fonction de la retenue sortante de laddition 1


Guillaume Revy (Univ. de Perpignan Via Domitia) Algorithmes rapides dadditions : et un exemple de soustrqction 18/44
Additionneurs deux oprandes Additionneurs retenue conditionnelle
Principe de laddition retenue conditionnelle
Soient deux nombres entiers X et Y, encods en base 2 sur n bits, avec n = 2p
X = (X
n1
X
n2
X
1
X
0
)
2
et Y = (Y
n1
Y
n2
Y
1
Y
0
)
2
Principe : fractionner une addition sur n bits en 2 additions sur p = n/2 bits

additionner les parties basses (X


p1
X
p2
X
1
X
0
) +(Y
p1
Y
p2
Y
1
Y
0
)
2

additionner les parties hautes (X


n1
X
n2
X
p+1
X
p
) +(Y
n1
Y
n2
Y
p+1
Y
0
)
2

injecter la retenue sortante de laddition 1 en retenue entrante de laddition 2


Comment exprimer du paralllisme ?

additionner les parties basses

additionner les parties hautes considrer les 2 cas : retenue entrante = 0 et = 1

choisir la partie haute du rsultat en fonction de la retenue sortante de laddition 1


Guillaume Revy (Univ. de Perpignan Via Domitia) Algorithmes rapides dadditions : et un exemple de soustrqction 18/44
Additionneurs deux oprandes Additionneurs retenue conditionnelle
Additionneur retenue conditionnelle (carry select adder)
Expression de paralllisme

additionner les parties basses

additionner les parties hautes considrer les 2 cas : retenue entrante = 0 et = 1

choisir la partie haute du rsultat en fonction de la retenue sortante de laddition 1


S
3
c
7
c
5
c
6
c

7
c

5
c
8
c

8
c

6
1
0
S
4
S
5
S
6
S
7
c
4
S
2
c
3
S
1
c
2
S
0
c
1
c
0
MUX
0 1
MUX
0 1
MUX
0 1
MUX
0 1
MUX
0 1
FA FA FA FA FA FA FA FA
FA FA FA FA
overow
X
5
X
0
X
1
X
2
X
4
X
7
X
6
X
3
Y
5
Y
4
Y
3
Y
1
Y
0
Y
7
Y
6
Y
2
Guillaume Revy (Univ. de Perpignan Via Domitia) Algorithmes rapides dadditions : et un exemple de soustrqction 19/44
Additionneurs deux oprandes Additionneurs retenue conditionnelle
Exemple dutilisation dun carry select adder
Soient X et Y, deux nombres, en base 2, de 8 bits :
X = (0010 1101)
2
et Y = (0001 0011)
2
.
Addition par un carry select adder de deux blocs de taille 4
Partie haute Partie basse
c
in
: 0
0 0 1 0
0 0 0 1
0 0 1 1
1 1 0 1
0 0 1 1
1 0 0 0 0
c
in
: 1
0 0 1 0
0 0 0 1
0 1 0 0
Guillaume Revy (Univ. de Perpignan Via Domitia) Algorithmes rapides dadditions : et un exemple de soustrqction 20/44
Additionneurs deux oprandes Additionneurs retenue conditionnelle
Exemple dutilisation dun carry select adder
Soient X et Y, deux nombres, en base 2, de 8 bits :
X = (0010 1101)
2
et Y = (0001 0011)
2
.
Addition par un carry select adder de deux blocs de taille 4
Partie haute Partie basse
c
in
: 0
0 0 1 0
0 0 0 1
0 0 1 1
1 1 0 1
0 0 1 1
1 0 0 0 0
c
in
: 1
0 0 1 0
0 0 0 1
0 1 0 0
Guillaume Revy (Univ. de Perpignan Via Domitia) Algorithmes rapides dadditions : et un exemple de soustrqction 20/44
Additionneurs deux oprandes Additionneurs retenue conditionnelle
Exemple dutilisation dun carry select adder
Soient X et Y, deux nombres, en base 2, de 8 bits :
X = (0010 1101)
2
et Y = (0001 0011)
2
.
Addition par un carry select adder de deux blocs de taille 4
Partie haute Partie basse
c
in
: 0
0 0 1 0
0 0 0 1
0 0 1 1
1 1 0 1
0 0 1 1
1 0 0 0 0
c
in
: 1
0 0 1 0
0 0 0 1
0 1 0 0
Guillaume Revy (Univ. de Perpignan Via Domitia) Algorithmes rapides dadditions : et un exemple de soustrqction 20/44
Additionneurs deux oprandes Additionneurs retenue conditionnelle
Exemple dutilisation dun carry select adder
Soient X et Y, deux nombres, en base 2, de 8 bits :
X = (0010 1101)
2
et Y = (0001 0011)
2
.
Addition par un carry select adder de deux blocs de taille 4
Partie haute Partie basse
c
in
: 0
0 0 1 0
0 0 0 1
0 0 1 1
1 1 0 1
0 0 1 1
1 0 0 0 0
c
in
: 1
0 0 1 0
0 0 0 1
0 1 0 0
Guillaume Revy (Univ. de Perpignan Via Domitia) Algorithmes rapides dadditions : et un exemple de soustrqction 20/44
Additionneurs deux oprandes Additionneurs retenue conditionnelle
Quels dcoupages pour les carry select adders ?
Dcoupage en 2 blocs de n/2 bits
diminution du dlai :
D
csa(n,2)
= D
add(n/2)
+D
mux(2:1)
augmentation de la surface
S
csa(n,2)
= 3 S
add(n/2)
+(n/2+1) S
mux(2:1)
Cas gnral : dcoupage en m blocs de n/m bits
D
csa(n,m)
=D
add(n/m)
+(m1) D
mux(2:1)
et S
csa(n,m)
= (2 m1) S
add(n/m)
+(nn/m+1) S
mux(2:1)
Cas rcursif : on parle de carry sum adder
Guillaume Revy (Univ. de Perpignan Via Domitia) Algorithmes rapides dadditions : et un exemple de soustrqction 21/44
Additionneurs deux oprandes Additionneurs retenue conditionnelle
Quels dcoupages pour les carry select adders ?
Dcoupage en 2 blocs de n/2 bits
diminution du dlai :
D
csa(n,2)
= D
add(n/2)
+D
mux(2:1)
augmentation de la surface
S
csa(n,2)
= 3 S
add(n/2)
+(n/2+1) S
mux(2:1)
Cas gnral : dcoupage en m blocs de n/m bits
D
csa(n,m)
=D
add(n/m)
+(m1) D
mux(2:1)
et S
csa(n,m)
= (2 m1) S
add(n/m)
+(nn/m+1) S
mux(2:1)
Cas rcursif : on parle de carry sum adder
Guillaume Revy (Univ. de Perpignan Via Domitia) Algorithmes rapides dadditions : et un exemple de soustrqction 21/44
Additionneurs deux oprandes Additionneurs retenue conditionnelle
Quels dcoupages pour les carry select adders ?
Dcoupage en 2 blocs de n/2 bits
diminution du dlai :
D
csa(n,2)
= D
add(n/2)
+D
mux(2:1)
augmentation de la surface
S
csa(n,2)
= 3 S
add(n/2)
+(n/2+1) S
mux(2:1)
Cas gnral : dcoupage en m blocs de n/m bits
D
csa(n,m)
=D
add(n/m)
+(m1) D
mux(2:1)
et S
csa(n,m)
= (2 m1) S
add(n/m)
+(nn/m+1) S
mux(2:1)
Cas rcursif : on parle de carry sum adder
Guillaume Revy (Univ. de Perpignan Via Domitia) Algorithmes rapides dadditions : et un exemple de soustrqction 21/44
Additionneurs deux oprandes Additionneurs retenue conditionnelle
Impact du dcoupage sur le dlai et la surface
Exemple : addition de nombres de n = 64 bits, en utilisant m {1, , 64} blocs

dlai (nb. portes) D


fa
= 3 et D
mux(2:1)
= 2

surface (nb. portes) S


fa
= 5 et S
mux(2:1)
= 3
0
100
200
300
400
500
600
700
800
900
10 20 30 40 50 60
N
o
m
b
r
e
d
e
p
o
r
t
e
s
Nombre m de blocs
Delai
Surface
Guillaume Revy (Univ. de Perpignan Via Domitia) Algorithmes rapides dadditions : et un exemple de soustrqction 22/44
Additionneurs deux oprandes Additionneurs retenue conditionnelle
Quel est le meilleur dcoupage ?
Surface : meilleur dcoupage m = 1 bloc

cest--dire, aucun dcoupage...


Dlai : meilleur dcoupage m blocs, avec m la valeur qui minimise la fonction
D
csa(n,m)
= D
add(n/m)
+(m1) D
mux(2:1)
sur [1, n]

si on utilise des additionneurs squentiels pour les blocs : D


add(n/m)
= (n D
fa
)/m
D
csa(n,m)
= (n D
fa
)/m+(m1) D
mux(2:1)

nalement, le meilleur nombre de blocs m est


m =

D
fa
D
mux(2:1)
n = O
_
n
_

_
D
csa(n,m)


n D
fa
+
_
n 1
_
D
mux(2:1)
S
csa(n,m)

_
2 n

n
_
D
fa
+
_
n

n +1
_
D
mux(2:1)
Guillaume Revy (Univ. de Perpignan Via Domitia) Algorithmes rapides dadditions : et un exemple de soustrqction 23/44
Additionneurs deux oprandes Additionneurs retenue conditionnelle
Quel est le meilleur dcoupage ?
Surface : meilleur dcoupage m = 1 bloc

cest--dire, aucun dcoupage...


Dlai : meilleur dcoupage m blocs, avec m la valeur qui minimise la fonction
D
csa(n,m)
= D
add(n/m)
+(m1) D
mux(2:1)
sur [1, n]

si on utilise des additionneurs squentiels pour les blocs : D


add(n/m)
= (n D
fa
)/m
D
csa(n,m)
= (n D
fa
)/m+(m1) D
mux(2:1)

nalement, le meilleur nombre de blocs m est


m =

D
fa
D
mux(2:1)
n = O
_
n
_

_
D
csa(n,m)


n D
fa
+
_
n 1
_
D
mux(2:1)
S
csa(n,m)

_
2 n

n
_
D
fa
+
_
n

n +1
_
D
mux(2:1)
Guillaume Revy (Univ. de Perpignan Via Domitia) Algorithmes rapides dadditions : et un exemple de soustrqction 23/44
Additionneurs deux oprandes Additionneurs retenue conditionnelle
Quel est le meilleur dcoupage ?
Surface : meilleur dcoupage m = 1 bloc

cest--dire, aucun dcoupage...


Dlai : meilleur dcoupage m blocs, avec m la valeur qui minimise la fonction
D
csa(n,m)
= D
add(n/m)
+(m1) D
mux(2:1)
sur [1, n]

si on utilise des additionneurs squentiels pour les blocs : D


add(n/m)
= (n D
fa
)/m
D
csa(n,m)
= (n D
fa
)/m+(m1) D
mux(2:1)

nalement, le meilleur nombre de blocs m est


m =

D
fa
D
mux(2:1)
n = O
_
n
_

_
D
csa(n,m)


n D
fa
+
_
n 1
_
D
mux(2:1)
S
csa(n,m)

_
2 n

n
_
D
fa
+
_
n

n +1
_
D
mux(2:1)
Guillaume Revy (Univ. de Perpignan Via Domitia) Algorithmes rapides dadditions : et un exemple de soustrqction 23/44
Additionneurs deux oprandes Additionneurs retenue conditionnelle
Quel est le meilleur dcoupage ?
Surface : meilleur dcoupage m = 1 bloc

cest--dire, aucun dcoupage...


Dlai : meilleur dcoupage m blocs, avec m la valeur qui minimise la fonction
D
csa(n,m)
= D
add(n/m)
+(m1) D
mux(2:1)
sur [1, n]

si on utilise des additionneurs squentiels pour les blocs : D


add(n/m)
= (n D
fa
)/m
D
csa(n,m)
= (n D
fa
)/m+(m1) D
mux(2:1)

nalement, le meilleur nombre de blocs m est


m =

D
fa
D
mux(2:1)
n = O
_
n
_

_
D
csa(n,m)


n D
fa
+
_
n 1
_
D
mux(2:1)
S
csa(n,m)

_
2 n

n
_
D
fa
+
_
n

n +1
_
D
mux(2:1)
Guillaume Revy (Univ. de Perpignan Via Domitia) Algorithmes rapides dadditions : et un exemple de soustrqction 23/44
Additionneurs deux oprandes Additionneurs retenue conditionnelle
Impact du dcoupage sur le dlai et la surface
Exemple : addition de nombres de n = 64 bits, en utilisant m {1, , 64} blocs

dlai (nb. portes) D


fa
= 3 et D
mux(2:1)
= 2

surface (nb. portes) S


fa
= 5 et S
mux(2:1)
= 3
0
100
200
300
400
500
600
700
800
900
10 20 30 40 50 60
N
o
m
b
r
e
d
e
p
o
r
t
e
s
Nombre m de blocs
Delai
Surface
Guillaume Revy (Univ. de Perpignan Via Domitia) Algorithmes rapides dadditions : et un exemple de soustrqction 24/44
Additionneurs deux oprandes Additionneurs retenue conditionnelle
Dcoupage en blocs de taille non uniformes
Jusqu maintenant, on a dcoup les nombres additionner en m blocs de taille
uniforme n/m

en particulier m = 2 blocs de n/2 bits

question : est-ce la bonne manire de dcouper ?


On considre un dcoupage en m = 3 blocs.
Bloc 2 Bloc 1 Bloc 3
Les bits de poids fort du bloc 3 ne sont ncessaires aussi rapidement que les bits
de poids fort du bloc 1

plus particulirement, ils sont necssaires aprs un dlai de


max
_
T(bloc 1), T(bloc 2)
_
+D
mux(2:1)

on a donc intrt dcouper les nombres en blocs de tailles non uniformes


Guillaume Revy (Univ. de Perpignan Via Domitia) Algorithmes rapides dadditions : et un exemple de soustrqction 25/44
Additionneurs deux oprandes Additionneurs retenue conditionnelle
Dcoupage en blocs de taille non uniformes
Jusqu maintenant, on a dcoup les nombres additionner en m blocs de taille
uniforme n/m

en particulier m = 2 blocs de n/2 bits

question : est-ce la bonne manire de dcouper ?


On considre un dcoupage en m = 3 blocs.
Bloc 2 Bloc 1 Bloc 3
Les bits de poids fort du bloc 3 ne sont ncessaires aussi rapidement que les bits
de poids fort du bloc 1

plus particulirement, ils sont necssaires aprs un dlai de


max
_
T(bloc 1), T(bloc 2)
_
+D
mux(2:1)

on a donc intrt dcouper les nombres en blocs de tailles non uniformes


Guillaume Revy (Univ. de Perpignan Via Domitia) Algorithmes rapides dadditions : et un exemple de soustrqction 25/44
Additionneurs deux oprandes Additionneurs retenue conditionnelle
Dcoupage en blocs de taille non uniformes
Jusqu maintenant, on a dcoup les nombres additionner en m blocs de taille
uniforme n/m

en particulier m = 2 blocs de n/2 bits

question : est-ce la bonne manire de dcouper ?


On considre un dcoupage en m = 3 blocs.
Bloc 2 Bloc 1 Bloc 3
Les bits de poids fort du bloc 3 ne sont ncessaires aussi rapidement que les bits
de poids fort du bloc 1

plus particulirement, ils sont necssaires aprs un dlai de


max
_
T(bloc 1), T(bloc 2)
_
+D
mux(2:1)

on a donc intrt dcouper les nombres en blocs de tailles non uniformes


Guillaume Revy (Univ. de Perpignan Via Domitia) Algorithmes rapides dadditions : et un exemple de soustrqction 25/44
Additionneurs deux oprandes Additionneurs retenue conditionnelle
Reprenons un dcoupage en 3 blocs
pour un additionneur 24 bits
Rappel : aucun dcoupage additionneur squentiel

dlai : D
add(24)
= 24 D
fa
= 72

surface : S
add(24)
= 24 S
fa
= 120
Dcoupage uniforme

dlai : D
csa(24,3)
= D
add(8)
+2 D
mux(2:1)
= 8 D
fa
+2 D
mux(2:1)
= 28

surface : S
csa(24,3)
= 5 S
add(8)
+17 S
mux(2:1)
= 40 S
fa
+17 S
mux(2:1)
= 251
Dcoupage non uniforme : peut-on faire mieux en 3 blocs, en termes de dlai ?

cot de ladditionneur cot du dernier bloc il faut augmenter le nombre de blocs

exemple de dcoupage : 7-6-5-3-3


D = D
add(7)
+D
mux(2:1)
et S = 2
_
S
add(7)
+S
add(6)
+S
add(5)
+S
add(3)
_
+S
add(3)
+21 D
mux(2:1)

D = 23 et S = 288
Guillaume Revy (Univ. de Perpignan Via Domitia) Algorithmes rapides dadditions : et un exemple de soustrqction 26/44
Additionneurs deux oprandes Additionneurs retenue conditionnelle
Reprenons un dcoupage en 3 blocs
pour un additionneur 24 bits
Rappel : aucun dcoupage additionneur squentiel

dlai : D
add(24)
= 24 D
fa
= 72

surface : S
add(24)
= 24 S
fa
= 120
Dcoupage uniforme

dlai : D
csa(24,3)
= D
add(8)
+2 D
mux(2:1)
= 8 D
fa
+2 D
mux(2:1)
= 28

surface : S
csa(24,3)
= 5 S
add(8)
+17 S
mux(2:1)
= 40 S
fa
+17 S
mux(2:1)
= 251
Dcoupage non uniforme : peut-on faire mieux en 3 blocs, en termes de dlai ?

cot de ladditionneur cot du dernier bloc il faut augmenter le nombre de blocs

exemple de dcoupage : 7-6-5-3-3


D = D
add(7)
+D
mux(2:1)
et S = 2
_
S
add(7)
+S
add(6)
+S
add(5)
+S
add(3)
_
+S
add(3)
+21 D
mux(2:1)

D = 23 et S = 288
Guillaume Revy (Univ. de Perpignan Via Domitia) Algorithmes rapides dadditions : et un exemple de soustrqction 26/44
Additionneurs deux oprandes Additionneurs retenue conditionnelle
Comment obtenir un dlai en O
_

n
_
?
en utilisant un dcoupage non uniforme?
Remarque : on peut faire en sorte que le cot de ladditionneur soit le cot de
lvaluation de laddition du bloc de poids fort

et que les autres blocs soient valus en parallle


Soit n la taille de ladditionneur
n = 2+2+(2+D
mux(2:1)
) +(2+2 D
mux(2:1)
) + +(2+ D
mux(2:1)
)
. .
termes
= 2 ( +2) +
( +1)
2
D
mux(2:1)
2 n =
2
D
mux(2:1)
+ (4+D
mux(2:1)
) +8
Donc =

_

2
32 D
mux(2:1)
+8 n
2 D
mux(2:1)
, avec = 4+D
mux(2:1)
.
Guillaume Revy (Univ. de Perpignan Via Domitia) Algorithmes rapides dadditions : et un exemple de soustrqction 27/44
Additionneurs deux oprandes Additionneurs retenue conditionnelle
Comment obtenir un dlai en O
_

n
_
?
en utilisant un dcoupage non uniforme?
Remarque : on peut faire en sorte que le cot de ladditionneur soit le cot de
lvaluation de laddition du bloc de poids fort

et que les autres blocs soient valus en parallle


Soit n la taille de ladditionneur
n = 2+2+(2+D
mux(2:1)
) +(2+2 D
mux(2:1)
) + +(2+ D
mux(2:1)
)
. .
termes
= 2 ( +2) +
( +1)
2
D
mux(2:1)
2 n =
2
D
mux(2:1)
+ (4+D
mux(2:1)
) +8
Donc =

_

2
32 D
mux(2:1)
+8 n
2 D
mux(2:1)
, avec = 4+D
mux(2:1)
.
Guillaume Revy (Univ. de Perpignan Via Domitia) Algorithmes rapides dadditions : et un exemple de soustrqction 27/44
Additionneurs deux oprandes Additionneurs retenue bondissante
Plan du cours
1. Rappels de logique (L1/L2) et exemple
2. Additionneurs deux oprandes
Additionneurs squentiels
Additionneurs retenue conditionnelle
Additionneurs retenue bondissante
Additionneurs retenue anticipe
Additionneurs de Brent et Kung
Guillaume Revy (Univ. de Perpignan Via Domitia) Algorithmes rapides dadditions : et un exemple de soustrqction 28/44
Additionneurs deux oprandes Additionneurs retenue bondissante
Principe de gnration et de propagation
Soient deux nombres entiers X et Y, encods en base 2 sur n bits
X = (X
n1
X
n2
X
1
X
0
)
2
et Y = (Y
n1
Y
n2
Y
1
Y
0
)
2
Principe de gnration

si X
i
= Y
i
= 0 alors c
i +1
= 0

si X
i
= Y
i
= 1 alors c
i +1
= 1

si X
i
= Y
i
alors c
i +1
= X
i
on na pas besoin dattendre de la calculer
Principe de propagation

si k {i , , i +p}, X
k
= Y
k
alors c
i +p+1
= c
i

si on localise une chaine de bits de telle sorte k {i , , i +p}, X


k
= Y
k
, alors la
retenue sortante du bloc est gale sa retenue entrante
Utilisation

aptitude du i -eme rang propager une retenue P


i
= X
i
Y
i

aptitude du i -eme rang gnrer une retenue G


i
= X
i
Y
i
Guillaume Revy (Univ. de Perpignan Via Domitia) Algorithmes rapides dadditions : et un exemple de soustrqction 29/44
Additionneurs deux oprandes Additionneurs retenue bondissante
Principe de gnration et de propagation
Soient deux nombres entiers X et Y, encods en base 2 sur n bits
X = (X
n1
X
n2
X
1
X
0
)
2
et Y = (Y
n1
Y
n2
Y
1
Y
0
)
2
Principe de gnration

si X
i
= Y
i
= 0 alors c
i +1
= 0

si X
i
= Y
i
= 1 alors c
i +1
= 1

si X
i
= Y
i
alors c
i +1
= X
i
on na pas besoin dattendre de la calculer
Principe de propagation

si k {i , , i +p}, X
k
= Y
k
alors c
i +p+1
= c
i

si on localise une chaine de bits de telle sorte k {i , , i +p}, X


k
= Y
k
, alors la
retenue sortante du bloc est gale sa retenue entrante
Utilisation

aptitude du i -eme rang propager une retenue P


i
= X
i
Y
i

aptitude du i -eme rang gnrer une retenue G


i
= X
i
Y
i
Guillaume Revy (Univ. de Perpignan Via Domitia) Algorithmes rapides dadditions : et un exemple de soustrqction 29/44
Additionneurs deux oprandes Additionneurs retenue bondissante
Principe de gnration et de propagation
Soient deux nombres entiers X et Y, encods en base 2 sur n bits
X = (X
n1
X
n2
X
1
X
0
)
2
et Y = (Y
n1
Y
n2
Y
1
Y
0
)
2
Principe de gnration

si X
i
= Y
i
= 0 alors c
i +1
= 0

si X
i
= Y
i
= 1 alors c
i +1
= 1

si X
i
= Y
i
alors c
i +1
= X
i
on na pas besoin dattendre de la calculer
Principe de propagation

si k {i , , i +p}, X
k
= Y
k
alors c
i +p+1
= c
i

si on localise une chaine de bits de telle sorte k {i , , i +p}, X


k
= Y
k
, alors la
retenue sortante du bloc est gale sa retenue entrante
Utilisation

aptitude du i -eme rang propager une retenue P


i
= X
i
Y
i

aptitude du i -eme rang gnrer une retenue G


i
= X
i
Y
i
Guillaume Revy (Univ. de Perpignan Via Domitia) Algorithmes rapides dadditions : et un exemple de soustrqction 29/44
Additionneurs deux oprandes Additionneurs retenue bondissante
Principe de gnration et de propagation
Soient deux nombres entiers X et Y, encods en base 2 sur n bits
X = (X
n1
X
n2
X
1
X
0
)
2
et Y = (Y
n1
Y
n2
Y
1
Y
0
)
2
Principe de gnration

si X
i
= Y
i
= 0 alors c
i +1
= 0

si X
i
= Y
i
= 1 alors c
i +1
= 1

si X
i
= Y
i
alors c
i +1
= X
i
on na pas besoin dattendre de la calculer
Principe de propagation

si k {i , , i +p}, X
k
= Y
k
alors c
i +p+1
= c
i

si on localise une chaine de bits de telle sorte k {i , , i +p}, X


k
= Y
k
, alors la
retenue sortante du bloc est gale sa retenue entrante
Utilisation

aptitude du i -eme rang propager une retenue P


i
= X
i
Y
i

aptitude du i -eme rang gnrer une retenue G


i
= X
i
Y
i
Guillaume Revy (Univ. de Perpignan Via Domitia) Algorithmes rapides dadditions : et un exemple de soustrqction 29/44
Additionneurs deux oprandes Additionneurs retenue bondissante
Principe de gnration et de propagation
Soient deux nombres entiers X et Y, encods en base 2 sur n bits
X = (X
n1
X
n2
X
1
X
0
)
2
et Y = (Y
n1
Y
n2
Y
1
Y
0
)
2
Principe de gnration

si X
i
= Y
i
= 0 alors c
i +1
= 0

si X
i
= Y
i
= 1 alors c
i +1
= 1

si X
i
= Y
i
alors c
i +1
= X
i
on na pas besoin dattendre de la calculer
Principe de propagation

si k {i , , i +p}, X
k
= Y
k
alors c
i +p+1
= c
i

si on localise une chaine de bits de telle sorte k {i , , i +p}, X


k
= Y
k
, alors la
retenue sortante du bloc est gale sa retenue entrante
Utilisation

aptitude du i -eme rang propager une retenue P


i
= X
i
Y
i

aptitude du i -eme rang gnrer une retenue G


i
= X
i
Y
i
Guillaume Revy (Univ. de Perpignan Via Domitia) Algorithmes rapides dadditions : et un exemple de soustrqction 29/44
Additionneurs deux oprandes Additionneurs retenue bondissante
Principe de gnration et de propagation
Soient deux nombres entiers X et Y, encods en base 2 sur n bits
X = (X
n1
X
n2
X
1
X
0
)
2
et Y = (Y
n1
Y
n2
Y
1
Y
0
)
2
Principe de gnration

si X
i
= Y
i
= 0 alors c
i +1
= 0

si X
i
= Y
i
= 1 alors c
i +1
= 1

si X
i
= Y
i
alors c
i +1
= X
i
on na pas besoin dattendre de la calculer
Principe de propagation

si k {i , , i +p}, X
k
= Y
k
alors c
i +p+1
= c
i

si on localise une chaine de bits de telle sorte k {i , , i +p}, X


k
= Y
k
, alors la
retenue sortante du bloc est gale sa retenue entrante
Utilisation

aptitude du i -eme rang propager une retenue P


i
= X
i
Y
i

aptitude du i -eme rang gnrer une retenue G


i
= X
i
Y
i
Guillaume Revy (Univ. de Perpignan Via Domitia) Algorithmes rapides dadditions : et un exemple de soustrqction 29/44
Additionneurs deux oprandes Additionneurs retenue bondissante
Additionneurs retenue bondissante (carry skip adder)
Soient deux nombres entiers X et Y, encods en base 2 sur n bits
X = (X
n1
X
n2
X
1
X
0
)
2
et Y = (Y
n1
Y
n2
Y
1
Y
0
)
2
Additionneur dcoups en m blocs de n/m bits, constitus de

un additionneur squentiel sur n/m bits (utilisant des FA)

un circuit pour calculer si le signal de propagation est mis un certain rang du bloc
& &
adder
& &
adder adder adder
c
0
En sortie de bloc : slction de la retenue sortante, en fonction du signal de
propagation, entre la retenue entrante et la retenue sortante calcule dans le bloc
Guillaume Revy (Univ. de Perpignan Via Domitia) Algorithmes rapides dadditions : et un exemple de soustrqction 30/44
Additionneurs deux oprandes Additionneurs retenue bondissante
Additionneurs retenue bondissante (carry skip adder)
Soient deux nombres entiers X et Y, encods en base 2 sur n bits
X = (X
n1
X
n2
X
1
X
0
)
2
et Y = (Y
n1
Y
n2
Y
1
Y
0
)
2
Additionneur dcoups en m blocs de n/m bits, constitus de

un additionneur squentiel sur n/m bits (utilisant des FA)

un circuit pour calculer si le signal de propagation est mis un certain rang du bloc
OR
AND
OR
AND
OR
AND
OR
AND
c
n
& &
adder
& &
adder adder adder
c
0
En sortie de bloc : slction de la retenue sortante, en fonction du signal de
propagation, entre la retenue entrante et la retenue sortante calcule dans le bloc
Guillaume Revy (Univ. de Perpignan Via Domitia) Algorithmes rapides dadditions : et un exemple de soustrqction 30/44
Additionneurs deux oprandes Additionneurs retenue bondissante
Regardons le rsultat sur un exemple
Guillaume Revy (Univ. de Perpignan Via Domitia) Algorithmes rapides dadditions : et un exemple de soustrqction 31/44
Additionneurs deux oprandes Additionneurs retenue bondissante
Pourquoi a marche ?
OR
AND
OR
AND
OR
AND
OR
AND
c
n
& &
adder
& &
adder adder adder
c
0
Les diffrentes tapes dun carry skip adder, dcoup en m blocs de n/m bits :
1. calcul du signal de propagation pour chaque sous-bloc D
1
= 1+log2(n/m)
2. calcul de la retenue sortante pour chaque sous-bloc D
2
= D
add(m)
=O
_
m
_
3. propagation rapide des retenues gnres (0 ou 1) D
3
2 (m1)
4. calcul de la somme de chaque sous-additionneur D
4
= D
add(m)
=O
_
m
_
Les tapes 1 et 2 pouvant tre lances en parallle, on obtient dans le pire cas :
D
csk(n,m)
= max
_
1+log
2
(n/m), D
add(m)
_
+2 (m1) +D
add(m)
Guillaume Revy (Univ. de Perpignan Via Domitia) Algorithmes rapides dadditions : et un exemple de soustrqction 32/44
Additionneurs deux oprandes Additionneurs retenue bondissante
Remarques sur les carry skip adders
et leurs temps de calcul
Temps de calcul : plus long temps de propagation dune retenue
OR
AND
OR
AND
OR
AND
OR
AND
c
n
& &
adder
& &
adder adder adder
c
0
Comment choisir le dcoupage ?

blocs de taille gale

blocs de taille variable

blocs de blocs (multi-level carry skip adder)


Guillaume Revy (Univ. de Perpignan Via Domitia) Algorithmes rapides dadditions : et un exemple de soustrqction 33/44
Additionneurs deux oprandes Additionneurs retenue bondissante
Remarques sur les carry skip adders
et leurs temps de calcul
Temps de calcul : plus long temps de propagation dune retenue
OR
AND
OR
AND
OR
AND
OR
AND
c
n
& &
adder
& &
adder adder adder
c
0
Comment choisir le dcoupage ?

blocs de taille gale

blocs de taille variable

blocs de blocs (multi-level carry skip adder)


Guillaume Revy (Univ. de Perpignan Via Domitia) Algorithmes rapides dadditions : et un exemple de soustrqction 33/44
Additionneurs deux oprandes Additionneurs retenue bondissante
Quel est le meilleur dcoupage ?
Dlai : meilleur dcoupage m blocs, avec m la valeur qui minimise la fonction
D
csk(n,m)
= max
_
1+log
2
(n/m), D
add(m)
_
+2 (m1) +D
add(m)

si on utilise des additionneurs squentiels pour les blocs : D


add(m)
= (n D
fa
)/m, et que
lon considre 1+log
2
(n/m) < D
add(m)
D
csk(n,m)
= 2
_
(n D
fa
)/m+m1
_

nalement, le meilleur nombre de blocs m est


m =

D
fa
n = O
_
n
_
D
csk(n,m)
2

n
_
D
fa
1
_
Guillaume Revy (Univ. de Perpignan Via Domitia) Algorithmes rapides dadditions : et un exemple de soustrqction 34/44
Additionneurs deux oprandes Additionneurs retenue bondissante
Quel est le meilleur dcoupage ?
Dlai : meilleur dcoupage m blocs, avec m la valeur qui minimise la fonction
D
csk(n,m)
= max
_
1+log
2
(n/m), D
add(m)
_
+2 (m1) +D
add(m)

si on utilise des additionneurs squentiels pour les blocs : D


add(m)
= (n D
fa
)/m, et que
lon considre 1+log
2
(n/m) < D
add(m)
D
csk(n,m)
= 2
_
(n D
fa
)/m+m1
_

nalement, le meilleur nombre de blocs m est


m =

D
fa
n = O
_
n
_
D
csk(n,m)
2

n
_
D
fa
1
_
Guillaume Revy (Univ. de Perpignan Via Domitia) Algorithmes rapides dadditions : et un exemple de soustrqction 34/44
Additionneurs deux oprandes Additionneurs retenue bondissante
Quel est le meilleur dcoupage ?
Dlai : meilleur dcoupage m blocs, avec m la valeur qui minimise la fonction
D
csk(n,m)
= max
_
1+log
2
(n/m), D
add(m)
_
+2 (m1) +D
add(m)

si on utilise des additionneurs squentiels pour les blocs : D


add(m)
= (n D
fa
)/m, et que
lon considre 1+log
2
(n/m) < D
add(m)
D
csk(n,m)
= 2
_
(n D
fa
)/m+m1
_

nalement, le meilleur nombre de blocs m est


m =

D
fa
n = O
_
n
_
D
csk(n,m)
2

n
_
D
fa
1
_
Guillaume Revy (Univ. de Perpignan Via Domitia) Algorithmes rapides dadditions : et un exemple de soustrqction 34/44
Additionneurs deux oprandes Additionneurs retenue bondissante
Impact du dcoupage sur le dlai
Exemple : addition de nombres de n = 64 bits, en utilisant m {1, , 64} blocs

dlai (nb. portes) D


fa
= 3 et D
mux(2:1)
= 2

surface (nb. portes) S


fa
= 5 et S
mux(2:1)
= 3
0
50
100
150
200
250
300
350
400
10 20 30 40 50 60
N
o
m
b
r
e
d
e
p
o
r
t
e
s
Nombre m de blocs
Delai
Guillaume Revy (Univ. de Perpignan Via Domitia) Algorithmes rapides dadditions : et un exemple de soustrqction 35/44
Additionneurs deux oprandes Additionneurs retenue bondissante
Rcapitulatif
Exemple : addition de nombres de n = 64 bits, en utilisant m {1, , 64} blocs

dlai (nb. portes) D


fa
= 3 et D
mux(2:1)
= 2

surface (nb. portes) S


fa
= 5 et S
mux(2:1)
= 3
0
50
100
150
200
250
300
350
400
10 20 30 40 50 60
N
o
m
b
r
e
d
e
p
o
r
t
e
s
Nombre m de blocs
RCA
CSA
CSK
Guillaume Revy (Univ. de Perpignan Via Domitia) Algorithmes rapides dadditions : et un exemple de soustrqction 36/44
Additionneurs deux oprandes Additionneurs retenue anticipe
Plan du cours
1. Rappels de logique (L1/L2) et exemple
2. Additionneurs deux oprandes
Additionneurs squentiels
Additionneurs retenue conditionnelle
Additionneurs retenue bondissante
Additionneurs retenue anticipe
Additionneurs de Brent et Kung
Guillaume Revy (Univ. de Perpignan Via Domitia) Algorithmes rapides dadditions : et un exemple de soustrqction 37/44
Additionneurs deux oprandes Additionneurs retenue anticipe
Principe des additionneurs retenue anticipes
(carry look ahead adders)
Principe : calculer lavance la valeur des retenues au lieu de les propager
Rappel des principes de propagation et gnration

aptitude du i -eme rang propager une retenue : P


i
= X
i
Y
i

aptitude du i -eme rang gnrer une retenue : G


i
= X
i
Y
i
Soient deux nombres entiers X et Y, encods en base 2 sur n bits
ltage i , un additionneur reoit une retenue entrante c
i
gale 1 si :

ltage i 1 a gnr une retenue (G


i 1
= 1)

ou ltage i 1 a propag une retenue gnre ltage i 2 (P


i 1
= G
i 2
= 1)

ou les tages i 1 et i 2 ont propag une retenue gnre ltage i 3


(P
i 1
= P
i 2
= G
i 3
= 1)

... ou les tages i 1 et i 2 et 0 ont propag une retenue dans ladditionneur


(P
i 1
= P
i 2
= = P
0
= c
0
= 1)
Guillaume Revy (Univ. de Perpignan Via Domitia) Algorithmes rapides dadditions : et un exemple de soustrqction 38/44
Additionneurs deux oprandes Additionneurs retenue anticipe
Principe des additionneurs retenue anticipes
(carry look ahead adders)
Principe : calculer lavance la valeur des retenues au lieu de les propager
Rappel des principes de propagation et gnration

aptitude du i -eme rang propager une retenue : P


i
= X
i
Y
i

aptitude du i -eme rang gnrer une retenue : G


i
= X
i
Y
i
Soient deux nombres entiers X et Y, encods en base 2 sur n bits
ltage i , un additionneur reoit une retenue entrante c
i
gale 1 si :

ltage i 1 a gnr une retenue (G


i 1
= 1)

ou ltage i 1 a propag une retenue gnre ltage i 2 (P


i 1
= G
i 2
= 1)

ou les tages i 1 et i 2 ont propag une retenue gnre ltage i 3


(P
i 1
= P
i 2
= G
i 3
= 1)

... ou les tages i 1 et i 2 et 0 ont propag une retenue dans ladditionneur


(P
i 1
= P
i 2
= = P
0
= c
0
= 1)
Guillaume Revy (Univ. de Perpignan Via Domitia) Algorithmes rapides dadditions : et un exemple de soustrqction 38/44
Additionneurs deux oprandes Additionneurs retenue anticipe
Principe des additionneurs retenue anticipes
(carry look ahead adders)
Principe : calculer lavance la valeur des retenues au lieu de les propager
Rappel des principes de propagation et gnration

aptitude du i -eme rang propager une retenue : P


i
= X
i
Y
i

aptitude du i -eme rang gnrer une retenue : G


i
= X
i
Y
i
Soient deux nombres entiers X et Y, encods en base 2 sur n bits
ltage i , un additionneur reoit une retenue entrante c
i
gale 1 si :

ltage i 1 a gnr une retenue (G


i 1
= 1)

ou ltage i 1 a propag une retenue gnre ltage i 2 (P


i 1
= G
i 2
= 1)

ou les tages i 1 et i 2 ont propag une retenue gnre ltage i 3


(P
i 1
= P
i 2
= G
i 3
= 1)

... ou les tages i 1 et i 2 et 0 ont propag une retenue dans ladditionneur


(P
i 1
= P
i 2
= = P
0
= c
0
= 1)
Guillaume Revy (Univ. de Perpignan Via Domitia) Algorithmes rapides dadditions : et un exemple de soustrqction 38/44
Additionneurs deux oprandes Additionneurs retenue anticipe
Principe des additionneurs retenue anticipes
(carry look ahead adders)
Principe : calculer lavance la valeur des retenues au lieu de les propager
Rappel des principes de propagation et gnration

aptitude du i -eme rang propager une retenue : P


i
= X
i
Y
i

aptitude du i -eme rang gnrer une retenue : G


i
= X
i
Y
i
Soient deux nombres entiers X et Y, encods en base 2 sur n bits
ltage i , un additionneur reoit une retenue entrante c
i
gale 1 si :

ltage i 1 a gnr une retenue (G


i 1
= 1)

ou ltage i 1 a propag une retenue gnre ltage i 2 (P


i 1
= G
i 2
= 1)

ou les tages i 1 et i 2 ont propag une retenue gnre ltage i 3


(P
i 1
= P
i 2
= G
i 3
= 1)

... ou les tages i 1 et i 2 et 0 ont propag une retenue dans ladditionneur


(P
i 1
= P
i 2
= = P
0
= c
0
= 1)
Guillaume Revy (Univ. de Perpignan Via Domitia) Algorithmes rapides dadditions : et un exemple de soustrqction 38/44
Additionneurs deux oprandes Additionneurs retenue anticipe
Principe des additionneurs retenue anticipes
(carry look ahead adders)
Et donc, le principe est dvaluer en parallle

les couples (G
i
, P
i
)

les retenues c
i
c
i
= G
i 1
+G
i 2
P
i 1
+G
i 3
P
i 2
P
i 1
+ +G
0
P
1
P
i 1
+c
0
P
0
P
i 1

les bits de S
i
= X
i
Y
i
c
i
= P
i
c
i
La formule pour les c
i
est trs lourde additionneurs de petite taille (4 8 bits)

petit bloc de plus gros additionneurs


Les CLA calculent thoriquement en temps constant
Possibilits de cascader les CLA

dcoupades de ladditionneur en m blocs

calculent en temps logarithmique


Guillaume Revy (Univ. de Perpignan Via Domitia) Algorithmes rapides dadditions : et un exemple de soustrqction 39/44
Additionneurs deux oprandes Additionneurs retenue anticipe
Principe des additionneurs retenue anticipes
(carry look ahead adders)
Et donc, le principe est dvaluer en parallle

les couples (G
i
, P
i
)

les retenues c
i
c
i
= G
i 1
+G
i 2
P
i 1
+G
i 3
P
i 2
P
i 1
+ +G
0
P
1
P
i 1
+c
0
P
0
P
i 1

les bits de S
i
= X
i
Y
i
c
i
= P
i
c
i
La formule pour les c
i
est trs lourde additionneurs de petite taille (4 8 bits)

petit bloc de plus gros additionneurs


Les CLA calculent thoriquement en temps constant
Possibilits de cascader les CLA

dcoupades de ladditionneur en m blocs

calculent en temps logarithmique


Guillaume Revy (Univ. de Perpignan Via Domitia) Algorithmes rapides dadditions : et un exemple de soustrqction 39/44
Additionneurs deux oprandes Additionneurs retenue anticipe
Principe des additionneurs retenue anticipes
(carry look ahead adders)
Et donc, le principe est dvaluer en parallle

les couples (G
i
, P
i
)

les retenues c
i
c
i
= G
i 1
+G
i 2
P
i 1
+G
i 3
P
i 2
P
i 1
+ +G
0
P
1
P
i 1
+c
0
P
0
P
i 1

les bits de S
i
= X
i
Y
i
c
i
= P
i
c
i
La formule pour les c
i
est trs lourde additionneurs de petite taille (4 8 bits)

petit bloc de plus gros additionneurs


Les CLA calculent thoriquement en temps constant
Possibilits de cascader les CLA

dcoupades de ladditionneur en m blocs

calculent en temps logarithmique


Guillaume Revy (Univ. de Perpignan Via Domitia) Algorithmes rapides dadditions : et un exemple de soustrqction 39/44
Additionneurs deux oprandes Additionneurs retenue anticipe
Principe des additionneurs retenue anticipes
(carry look ahead adders)
Et donc, le principe est dvaluer en parallle

les couples (G
i
, P
i
)

les retenues c
i
c
i
= G
i 1
+G
i 2
P
i 1
+G
i 3
P
i 2
P
i 1
+ +G
0
P
1
P
i 1
+c
0
P
0
P
i 1

les bits de S
i
= X
i
Y
i
c
i
= P
i
c
i
La formule pour les c
i
est trs lourde additionneurs de petite taille (4 8 bits)

petit bloc de plus gros additionneurs


Les CLA calculent thoriquement en temps constant
Possibilits de cascader les CLA

dcoupades de ladditionneur en m blocs

calculent en temps logarithmique


Guillaume Revy (Univ. de Perpignan Via Domitia) Algorithmes rapides dadditions : et un exemple de soustrqction 39/44
Additionneurs deux oprandes Additionneurs retenue anticipe
Schma dun CLA
Guillaume Revy (Univ. de Perpignan Via Domitia) Algorithmes rapides dadditions : et un exemple de soustrqction 40/44
Additionneurs deux oprandes Additionneurs de Brent et Kung
Plan du cours
1. Rappels de logique (L1/L2) et exemple
2. Additionneurs deux oprandes
Additionneurs squentiels
Additionneurs retenue conditionnelle
Additionneurs retenue bondissante
Additionneurs retenue anticipe
Additionneurs de Brent et Kung
Guillaume Revy (Univ. de Perpignan Via Domitia) Algorithmes rapides dadditions : et un exemple de soustrqction 41/44
Additionneurs deux oprandes Additionneurs de Brent et Kung
Principe dun additionneur de Brent et Kung
CLA ( temps constant) raliste pour des additionneurs de petites tailles, du
fait des technologies actuelles
Brent et Kung mme principe que les CLA

plus raliste pour des oprandes de taille raisonnable

plus simple que les units de CLA (CLU)


Temps dexcution logarithmique en la taille des entres
Guillaume Revy (Univ. de Perpignan Via Domitia) Algorithmes rapides dadditions : et un exemple de soustrqction 42/44
Additionneurs deux oprandes Additionneurs de Brent et Kung
Schma dun additionneur de Brent et Kung
Guillaume Revy (Univ. de Perpignan Via Domitia) Algorithmes rapides dadditions : et un exemple de soustrqction 43/44
Questions ?
Guillaume Revy (Univ. de Perpignan Via Domitia) Algorithmes rapides dadditions : et un exemple de soustrqction 44/44