Académique Documents
Professionnel Documents
Culture Documents
BUS SYSTÈME
ALU
Décodeur
Unité
PC flottante
CPU Registres
Rappel sur l'écriture des entiers en base 2
Entiers positifs
n −1
A=
i =0
ai 2i , ai 0,1, A 0,2 n − 1
n−2
B = −bn −1 2 n −1
+ bi 2i , bi 0,1, B − 2 n −1 ,2 n −1 − 1
i =0
Unité Arithmétique & Logique
Cœur du microprocesseur
Opérations simples sur mots binaires
➢ Inversion (NON)
➢ ET/OU
➢ Addition
A S
DA
B R
0 0 0 0
R = A.B
0 1 0 1
S = A.B + A.B = A B
1 0 0 1
1 1 1 0
Demi-Additionneur
R = A.B
S = A B
A S
B
7
Additionneur complet
r4 r3 r2 r1 r0= 0 ri-1
a4 a3 a2 a1 ai
+ b4 b3 b2 b1 + bi
r4 s4 s3 s2 s1 ri si
Additionneur complet 1 bit
ai
Si
bi
Additionneur
complet
ri-1
Ri
Additionneur complet 1 bit
ai bi ri-1 ri si
0 0 0 0 0
Table de vérité d’un additionneur 0 0 1 0 1
complet sur 1 bit
0 1 0 0 1
0 1 1 1 0
1 0 0 0 1
1 0 1 1 0
1 1 0 1 0
1 1 1 1 1
Si = Ai .Bi .Ri −1 + Ai .Bi .R i −1 + Ai .B i .R i −1 + Ai .Bi .Ri −1
Ri = Ai Bi Ri −1 + Ai B i Ri −1 + Ai Bi R i −1 + Ai Bi Ri −1
Additionneur complet 1 bit
Ri = Ai Bi Ri −1 + Ai B i Ri −1 + Ai Bi R i −1 + Ai Bi Ri −1
Ri = Ri −1.( Ai .Bi + Ai .B i ) + Ai Bi ( R i −1 + i Ri −1 )
Ri = Ri −1.( Ai Bi ) + Ai Bi
Schéma d’un additionneur complet
R i = A i .Bi + R i −1.(Bi A i )
Si = A i Bi R i −1
Ai
Bi
Si
Ri-1
Ri
Une UAL 1 bit
En utilisant des Demi Additionneurs
R i = A i .Bi + R i −1.(Bi A i )
Si = A i Bi R i −1
Si on pose X = A i Bi et Y = A i Bi
On obtient :
R i = Y + R i −1.X
Si = X R i −1
et si on pose Z = X R i −1 et T = R i −1.X
On obtient :
Ri = Y + T
Si = Z
• On remarque que X et Y sont les sorties d’un demi additionneur ayant comme
entrées A et B
• On remarque que Z et T sont les sorties d’un demi additionneur ayant comme
entrées X et Ri-1
En utilisant des Demi Additionneurs
X = A i Bi
Y = A i Bi
Z = X R i −1
T = R i −1.X
Ri = Y + T AI
Y
RI
Si = Z BI
Demi Add
T
Demi Add
RI-1
Z SI
Additionneur sur 4 bits
Un additionneur sur 4 bits est un circuit qui permet de faire l’addition de deux
nombres A et B de 4 bits chacun
➢ A(a3a2a1a0)
➢ B(b3b2b1b0)
En plus il tient en compte de la retenue entrante
En sortie on va avoir le résultat sur 4 bits ainsi que la retenue ( 5 bits en sortie )
Donc au total le circuit possède 9 entrées et 5 sorties.
Avec 9 entrées on a 29=512 combinaisons !!!!!!
Comment faire pour représenter la table de vérité ?????
Il faut trouver une solution plus facile et plus efficace pour concevoir ce circuit
?
Additionneur sur 4 bits
• Lorsque on fait l’addition en binaire , on additionne bit par bit en commençant à
partir du poids fiable et à chaque fois on propage la retenue sortante au bit du rang
supérieur.
L’addition sur un bit peut se faire par un additionneur complet sur 1 bits.
r3 r2 r1 r0= 0
a4 a3 a2 a1
+ b4 b3 b2 b1
r4 s 4 r3 s 3 r2 s 2 r1 s 1
r4 s4 s3 s2 s1 Résultat final
Additionneur 4 bits ( schéma )
R0=0
A4 B4 A3 B3 A2 B2 A1 B1
R3 R2 R1
R4 S4 S3 S2 S1
18
Additionneur à retenue anticipée
Si = ai bi ci = pi ci
c1 = g0 + p0.c0
c2 = g1 + p1.g0 + p1.p0.c0
c3 = g2 + p2.g1 + p2.p1.g0 + p2.p1.p0.c0
c4 = g3 + p3.g2 + p3.p2.g1 + p3.p2.p1.g0 + p3.p2.p1.p0.c0
Additionneur à retenue anticipée
b3 a3 b2 a2 b1 a1 b0 a0
p3 g3 p2 g2 p1 g1 p0 g0
c4 C.L.U. c0
p3 c3 p2 c2 p1 c1 p0
s3 s2 s1 s0
ai bi
pi gi
Bloc CLU
ci = gi-1 + pi-1.gi-2 + pi-1.pi-2.gi-3 +................+ pi-1.pi-2.pi-3....p0.c0
p3 g3 p2 g2 p1 g1 p0 g0
c0
c4 c3 c2 c1
Délai : 2 portes
C.L. Adder (n>4)
En pratique : n = 4
Pour n >4 :
Arbre de C.L.A multi-niveau (au détriment de la vitesse)
b11a11 b10a10 b9 a9 b8 a8 b7 a7 b6 a6 b5 a5 b4 a4 b3 a3 b2 a2 b1 a1 b0 a0
c0
c12 c8 c4
Arithmétique II
Opérations arithmétiques – Multiplication et Division
Unité de Traitement
MÉMOIRE
PRINCIPALE DD IO IO
BUS SYSTÈME
ALU
Décodeur
Unité
PC flottante
CPU Registres
Multiplication - Nombres entiers
Multiplication de deux nombres entiers de n bits:
Binaire:
1000 x (8)
1001 (9)
1000 +
0000 +
0000 +
1000 +
1001000 (72)
P=A*B A3 A2 A1 A0
* B3 B2 B1 B0
P=P7P6P5P4P3 P2 P1P0
A3 B0 A2B0 A1B0 A0B0 PP1
A3 B1 A2B1 A1B1 A0B1 PP2
Ri Ai-1 A3 B2 A2B2 A1B2 A0B2 PP3
Bj A3 B3 A2B3 A1B3 A0B3 PP4
P7 P6 P5 P4 P3 P2 P1 P0
+
+ + + +
0
A3 A2 A1 A0
B3
+ + + +
0
P7 P6 P5 P4 P3 P2 P1 P0
Multiplication - Implémentation I
Début
A(n)
1 A[0] 0
B(2n)
PP+B
2n
B 1000 x
A 1001 Décaler A (droite)
+[2n]
1000 +
0000 + Décaler B (gauche)
0000 + P (2n)
1000 +
1001000 Fin? NO
Multiplication - Implémentation I
Début
1 0
0 1001 1 0100 2 0010
A[0]
00001000 00010000 00100000
PP+B
Décaler A >>
Décaler B << +
00001000
Fin? NO 00000000 00001000 00001000
P+ P+ + B
n
B 1000 x
A 1001 Décaler A (droite) +[n]
1000 +
0000 + Décaler P (droite) P (2n)
0000 +
1000 +
1001000 Fin? NO
Multiplication - Implémentation II
Début
0 1001 1 0100 2 0010
1 0
A[0]
1000 1000 1000
P+P++B
Décaler A >>
Décaler P >> +
1000
Fin? NO 00000000 01000000 00100000
1 0
0 1 2
A[0]
1000 1000 1000
P+P++B
B 1000 x 3 4
A 1001 1000 1000
1000 +
0000 +
0000 + +
1001
1000 +
0001000 1 01001000
1001000
Division Binaire
Exemple : 11 / 9
1011 1001
11 9
-1001
20 1 , 2 2 ... 1 --------------- 1 ,0 0 1
20 00100
2 - 1001
0 ---------------
01000
- 1001
0 ----------------
10000
- 1001
1 -----------------
0111
Soustraction 5 bits
Diviseur
A=A3 A2 A1A0 D=D3 D2 D1 D0
1011
S=A/D
0 -01001
10
,
S=S7S6S5S4 S3 S2 S1S0
0 -01001
101
0 -01001
RRRR 1011
Q -1001 1 -01001
RRRR 00100
0 -01001
01000
Si R>D alors Q=1 et R-D
0 -01001
10000
sinon Q=0 et R
1 -01001
01110
1 -01001
Diviseur
R D
0 0 0 0 A3
0 D3 D2 D1 Do
+ -
+ - + - + - + - + -0
Q3
Ci+1 + Ci A2
0 D3 D2 D1 Do
+ - + - + - + - + -0
Q2
A1
Si alors 1 0
0 D3 D2 D1 Do
+ - + - + - + - + -0
R Q1
A0
0 D3 D2 D1 Do
+ - + - + - + - + -0
Q0
0
R D
0 D3 D2 D1 Do
+ - + - + - + - + - + -0
Ci+1 - Si Ci Q-1
0
Si 0 D3 D2 D1 Do
+ - + - + - + - + -0
R Q-2
0
0 D3 D2 D1 Do
+ - + - + - + - + -0
Q-3
Division - Implémentation
| 0101 B est stockée dans la moitié
1100 |01000100
Début
de poids fort du registre B
01000 A est stockée dans le registre R
10001
- 01100
1010 Q(2n) COMP
10100
- 01100 ≥0 R-B <0
1000 B(2n)
2n
RR-B
Décaler Q
Décaler Q
(insérer 0) -[2n]
(insérer 1)
Décaler B >> -
00010100
Fin? NO
01000100 01000100 01000100
3 00000001 C
4 00000010 C
5 00000101 C
| 0101
1100 |01000100 00011000 00001100 00000110
01000
10001
- 01100
1010 -
10100 00001000
- 01100 00010100 00010100 00001000
1000
Division - Nombres signés
Approche « standard »: convertir les nombres négatifs en
positifs, diviser, convertir au négatif si nécessaire.
Pour déterminer le signe des résultats, la relation suivante doit
toujours être vraie:
Dividende = Quotient x Diviseur + Reste
Règle: dividende et reste doivent avoir le même signe!
+7 / +2: quotient = +3, reste = +1;
+7 / -2: quotient = -3, reste = +1;
-7 / +2: quotient = -3, reste = -1;
-7 / -2: quotient = +3, reste = -1;
Note: la valeur absolue reste la même!
Multiplication flottante
Nettement plus compliquée que la multiplication entière:
1.110x1010 9.200 x 10-5
Normaliser le produit
NON (Sous-)Dépassement? OUI
Arrondir Exception