Arithmétique des “computers” Architecture et technologie des ordinateurs II Arithmétique des “computers” Opérations arithmétiques sur les données (datapath) Nombres entiers et flottants MÉMOIRE PRINCIPALE DD IO IO BUS SYSTÈME Cache instructions MMU Unité de contrôle Unité de traitement Cache données TLB ALU Décodeur Unité flottante PC CPU Registres G. Tempesti 1
Multiplication - Nombres entiers Architecture et technologie des ordinateurs II Multiplication - Nombres entiers Multiplication de deux nombres entiers de n bits: Décimal: Binaire: 1000 x 1000 x (8) 1001 1001 (9) 1000 + 1000 + 0000 + 0000 + 0000 + 0000 + 1000 + 1000 + 1001000 1001000 (72) Note: résultat -> 2n bits! G. Tempesti 2
Multiplication - Implémentation I Architecture et technologie des ordinateurs II Multiplication - Implémentation I Début P (2n) A(n) B(2n) 2n +[2n] A[0] 1 P P + B B 1000 x A 1001 1000 + 0000 + 0000 + 1000 + 1001000 Décaler A (droite) Décaler B (gauche) Fin? NO G. Tempesti 3
Multiplication - Implémentation I Architecture et technologie des ordinateurs II Multiplication - Implémentation I Début 1 2 1001 0100 0010 1 A[0] 00001000 00010000 00100000 PP+B Décaler A >> + Décaler B << 00001000 Fin? NO 00000000 00001000 00001000 B 1000 x A 1001 1000 + 0000 + 0000 + 1000 + 1001000 3 4 0001 0000 01000000 10000000 + 01001000 00001000 01001000 G. Tempesti 4
Multiplication - Implémentation II Architecture et technologie des ordinateurs II Multiplication - Implémentation II Début P+= moitié de poids fort du registre P P (2n) A(n) B(n) n +[n] A[0] 1 P+ P+ + B B 1000 x A 1001 1000 + 0000 + 0000 + 1000 + 1001000 Décaler A (droite) Décaler P (droite) Fin? NO G. Tempesti 5
Multiplication - Implémentation II Architecture et technologie des ordinateurs II Multiplication - Implémentation II Début 1 2 1001 0100 0010 1 A[0] 1000 1000 1000 P+P++B Décaler A >> + Décaler P >> 1000 Fin? NO 00000000 01000000 00100000 B 1000 x A 1001 1000 + 0000 + 0000 + 1000 + 1001000 3 4 0001 0000 1000 1000 + 1001 00010000 01001000 G. Tempesti 6
Multiplication - Implémentation III Architecture et technologie des ordinateurs II Multiplication - Implémentation III Début P+= moitié de poids fort du registre P A[0] 1 B(n) P+ P+ + B n B 1000 x A 1001 1000 + 0000 + 0000 + 1000 + 1001000 Décaler P|A (droite) +[n] P (2n) A(n) Fin? NO G. Tempesti 7
Multiplication - Implémentation III Architecture et technologie des ordinateurs II Multiplication - Implémentation III Début 1 2 1 A[0] 1000 1000 1000 P+P++B Décaler P|A >> + 1000 Fin? NO 0000 1001 01000 100 001000 10 B 1000 x A 1001 1000 + 0000 + 0000 + 1000 + 1001000 3 4 1000 1000 + 1001 0001000 1 01001000 G. Tempesti 8
Multiplication - Nombres signés Architecture et technologie des ordinateurs II 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 l’algorithme décimal pour accélérer la multiplication binaire, en particulier pour traiter les nombres signés comme s’ils étaient non-signés. Avantage: économe en ressources. Désavantage: conceptuellement assez compliqué . G. Tempesti 9
Multiplication - Recodage de Booth Architecture et technologie des ordinateurs II 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) + 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 G. Tempesti 10
Recodage de Booth en pratique Architecture et technologie des ordinateurs II Recodage de Booth en pratique On observe deux bits de A, pour déterminer s’il s’agit du début, du milieu, ou de la fin d’une séquence de 1 ou de 0: - si Ai = 0 et Ai-1 = 0, décaler P (milieu d’une séquence de 0); - si Ai = 0 et Ai-1 = 1, ajouter B à P (fin d’une séquence de 1); - si Ai = 1 et Ai-1 = 0, soustraire B de P (début d’une séquence de 1); - si Ai = 1 et Ai-1 = 1, décaler P (milieu d’une séquence de 1); Par exemple: A : 00011101 sub, add, sub, shift, shift, add, shift, shift Rappel: soustraction = addition du complement à deux. L’algorithme marche pour le nombres signés (attention quand-même: l’algorithme « papier » doit être modifié pour étendre le signe). L’implémentation est pratiquement identique à l’approche standard. G. Tempesti 11
Multiplication - Recodage de Booth Architecture et technologie des ordinateurs II Multiplication - Recodage de Booth Début 1 2 1 A[0] 11010 01101 00110 A[-1] 1 A[-1] 1 0101 0101 0101 P+P+-B P+P++B - + - Décaler A >> 1011 0010 1100 Décaler P >> (extension du signe) 00000000 11011000 00010100 NO 3 4 Fin? 00011 0000X B 0101 x (5) A 1101 = (-3) 11111011 + [+(-5)] 0000101 + [+5] 111011 + [+(-5)] 00000 = [+0] 11110001 (-15) 0101 0101 Extension du signe 11100010 11110001 G. Tempesti 12
Division - Nombres entiers Architecture et technologie des ordinateurs II Division - Nombres entiers Division d’un 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 G. Tempesti 13
Division - Implémentation Architecture et technologie des ordinateurs II Division - Implémentation | 0101 1100 |01000100 01000 10001 - 01100 1010 10100 - 01100 1000 Début B est stockée dans la moitié de poids fort du registre B A est stockée dans le registre R COMP 2n -[2n] Q(2n) R (2n) B(2n) R-B ≥0 <0 R R - B Décaler Q (insérer 1) Décaler Q (insérer 0) Décaler B (droite) Fin? NO On peut simplifier la machine comme pour la multiplication G. Tempesti 14
Division - Implémentation Architecture et technologie des ordinateurs II Division - Implémentation Début 1 2 00000000 C 00000000 C 00000000 C ≥0 R-B <0 11000000 01100000 00110000 RR-B Q << [1] Q << [0] - Décaler B >> 00010100 Fin? NO 01000100 01000100 01000100 3 4 5 00000001 C 00000010 C 00000101 C | 0101 1100 |01000100 01000 10001 - 01100 1010 10100 - 01100 1000 00011000 00001100 00000110 - 00001000 00010100 00010100 00001000 G. Tempesti 15
Division - Nombres signés Architecture et technologie des ordinateurs II 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! G. Tempesti 16
Multiplication flottante Architecture et technologie des ordinateurs II Multiplication flottante Nettement plus compliquée que la multiplication entière: 1.110x1010 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 105 = 1.0212000 x 106 4) Arrondir: 1.0212000 x 106 = 1.021 x 106 5) Trouver le signe: +1.021 x 106 G. Tempesti 17
Multiplication flottante - Algorithme Architecture et technologie des ordinateurs II Multiplication flottante - Algorithme Début Additionner les exposants Multiplier les mantisses Normaliser le produit NON OUI (Sous-)Dépassement? Arrondir Exception NON OUI Normalisé? Ajuster le signe du produit G. Tempesti 18