La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Arithmétique des computers Opérations arithmétiques sur les données (datapath) Nombres entiers et flottants BUS SYSTÈME Registres Unité de traitement Unité

Présentations similaires


Présentation au sujet: "Arithmétique des computers Opérations arithmétiques sur les données (datapath) Nombres entiers et flottants BUS SYSTÈME Registres Unité de traitement Unité"— Transcription de la présentation:

1 Arithmétique des computers Opérations arithmétiques sur les données (datapath) Nombres entiers et flottants BUS SYSTÈME Registres Unité de traitement Unité de traitement Unité flottante Unité de contrôle Unité de contrôle Décodeur PC ALU CPU MÉMOIRE PRINCIPALE MÉMOIRE PRINCIPALE DD IO Cache données Cache instructions MMU TLB

2 Multiplication - Nombres entiers Multiplication de deux nombres entiers de n bits: Décimal:Binaire: 1000 x 1000 x(8) 1001 1001 (9) 1000 + 0000 + 0000 + 1000 + 1001000 1001000 (72) Note: résultat -> 2n bits!

3 Multiplication - Implémentation I Début A[0] P P + B Décaler A (droite) Décaler B (gauche) Fin? 01 NO B 1000 x A 1001 1000 + 0000 + 1000 + 1001000 P (2n) A(n) B(2n) 2n +[2n]

4 Multiplication - Implémentation I B 1000 x A 1001 1000 + 0000 + 1000 + 1001000 Début A[0] P P+B Décaler A >> Décaler B << Fin? 01 NO 00000000 1001 00001000 0 0001 01000000 3 00001000 0100 00010000 + 1 00001000 0010 00100000 2 01001000 0000 10000000 + 4 00001000 01001000

5 Multiplication - Implémentation II Début Décaler A (droite) Décaler P (droite) Fin? NO B 1000 x A 1001 1000 + 0000 + 1000 + 1001000 A[0] P + P + + B 01 P + = moitié de poids fort du registre P P (2n) A(n) B(n) n +[n]

6 Multiplication - Implémentation II B 1000 x A 1001 1000 + 0000 + 1000 + 1001000 Début A[0] P + P + +B Décaler A >> Décaler P >> Fin? 01 NO 1001 1000 0 00000000 + 0100 1000 1 01000000 0010 1000 2 00100000 0001 1000 3 00010000 + 0000 1000 4 01001000 1000 1001

7 Multiplication - Implémentation III B 1000 x A 1001 1000 + 0000 + 1000 + 1001000 Début Décaler P|A (droite) Fin? NO A[0] P + P + + B 01 P + = moitié de poids fort du registre P P (2n) B(n) n +[n] A(n)

8 Multiplication - Implémentation III B 1000 x A 1001 1000 + 0000 + 1000 + 1001000 Début A[0] P + P + +B Décaler P|A >> Fin? 01 NO 1000 0 1001 + 1000 1 100 1000 2 10 1000 3 1 + 4 010010000001000 0000 01000001000 1000 1001

9 Multiplication - Nombres signés Approche « standard »: convertir les nombres négatifs en positifs, multiplier, convertir au négatif si les signes sont différents. Avantage: conceptuellement simple. Désavantage: ressources supplémentaires. Deuxième approche: recodage de Booth Idée: abandonner lalgorithme décimal pour accélérer la multiplication binaire, en particulier pour traiter les nombres signés comme sils étaient non-signés. Avantage: économe en ressources. Désavantage: conceptuellement assez compliqué.

10 Multiplication - Recodage de Booth Multiplication « standard »: examiner A de droite à gauche A=7=0111 add B, add B, add B, add 0 Recodage de Booth: A=8-1=1000-0001=1001 sub B, add 0, add 0, add B Standard: Booth: B 1011 x B 1011 x A 0111 A 1001 + 1011 (add) - 1011 (sub) + 1011 (add) + 0000 (shift) + 0000 (shift) + 1011 (add) 1001101 1001101 Même chose pour le nombres signés: A = -4 = 1100 A = -4 = 1100 = 12 = 16 - 4 = 10000 - 0100 = 0100

11 Recodage de Booth en pratique On observe deux bits de A, pour déterminer sil sagit du début, du milieu, ou de la fin dune séquence de 1 ou de 0: - si A i = 0 et A i-1 = 0, décaler P (milieu dune séquence de 0); - si A i = 0 et A i-1 = 1, ajouter B à P (fin dune séquence de 1); - si A i = 1 et A i-1 = 0, soustraire B de P (début dune séquence de 1); - si A i = 1 et A i-1 = 1, décaler P (milieu dune séquence de 1); Par exemple: A : 00011101 sub, add, sub, shift, shift, add, shift, shift Rappel: soustraction = addition du complement à deux. Lalgorithme marche pour le nombres signés (attention quand-même: lalgorithme « papier » doit être modifié pour étendre le signe). Limplémentation est pratiquement identique à lapproche standard.

12 Multiplication - Recodage de Booth B 0101 x (5) A 1101 = (-3) 11111011 + [+(-5)] 0000101 + [+5] 111011 + [+(-5)] 00000 = [+0] 11110001 (-15) Début A[0] P + P + -B Décaler A >> Décaler P >> (extension du signe) Fin? 01 NO 11010 0101 0 00000000 - 01101 0101 1 11011000 + 00110 0101 2 00010100 - 00011 0101 3 11100010 0000X 0101 4 11110001 Extension du signe A[-1] 10 10 P + P + +B 101100101100

13 Division - Nombres entiers Division dun nombre entier de n bits par un autre (A/B): Décimal: Binaire: | 0909 Q | 0101 (5) B 1100 | 1000100 A[0] (12) 1100 | 1000100 (68) 10001 [1] 10001 - 09900 - 01100 1010 [0] 1010 10100 [1] 10100 - 09900 - 01110 200 R 1000 (8) Note: résultat -> quotient + reste! Note: souvent le dividende A a une taille (nombre de bits) double par rapport à la taille de B et de Q (1000100 -> 01000100) Note: il ne faut pas oublier de détecter la division par 0

14 COMP 2n -[2n] Q(2n) R (2n) B(2n) Division - Implémentation R R - B Décaler Q (insérer 1) Début R-B Décaler B (droite) Fin? <00 NO Décaler Q (insérer 0) B est stockée dans la moitié de poids fort du registre B A est stockée dans le registre R | 0101 1100 |01000100 01000 10001 - 01100 1010 10100 - 01100 1000 On peut simplifier la machine comme pour la multiplication

15 Division - Implémentation Début R-B R R-B Q << [1] Décaler B >> Fin? <00 NO | 0101 1100 |01000100 01000 10001 - 01100 1010 10100 - 01100 1000 Q << [0] 01000100 00000000 11000000 0 C 01000100 00000000 01100000 1 C 01000100 00000000 00110000 2 C 00010100 00000001 00011000 3 C 00010100 00000010 00001100 - 4 C 00001000 00000101 00000110 5 C - 00010100 00001000

16 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!

17 Multiplication flottante Nettement plus compliquée que la multiplication entière: 1.110x10 10 9.200 x 10 -5 1) Additionner les exposants: 10+(-5) = 5 Notation avec excès: 137 + 122 = 259 ?????? 137 + 122 - 127 = 132 = 5 + 127 2)Multiplier les mantisses:1.110 x 9.200 = 10.212000 3)Normaliser:10.212000 x 10 5 = 1.0212000 x 10 6 4)Arrondir: 1.0212000 x 10 6 = 1.021 x 10 6 5)Trouver le signe: +1.021 x 10 6

18 Multiplication flottante - Algorithme Début (Sous-)Dépassement? Arrondir OUINON Exception Additionner les exposants Multiplier les mantisses Normaliser le produit Normalisé? Ajuster le signe du produit OUI


Télécharger ppt "Arithmétique des computers Opérations arithmétiques sur les données (datapath) Nombres entiers et flottants BUS SYSTÈME Registres Unité de traitement Unité"

Présentations similaires


Annonces Google