Accélération des opérateurs
Principe Tous les algorithmes que nous implémenterons en TP sur carte sont basés sur 4 opérations de base : Addition/Soustraction Multiplication Division MAC Accélérer l opérateur permet d accélérer le traitement global Pour les types entiers Pour les types réels
Plan Représentation des nombres I. 1. 2. Entiers Flottants Accélérations II. 1. Additionneur entier
I. Rappels
1. Nombres signés Quatre techniques de représentation : Signe et grandeur Complément à 1 Complément à 2 Avantage : A-B = A+!B+1 Par excédent
2. Nombres flottants IEEE 754 (1985)
a. Notation en virgule flottante Nombre flottant N en binaire : Un bit de signe s Un exposant e Une mantisse m N = ( 1) s m.2e Représentations équivalentes 0.0000101011.20 0.000000101011.2 2 1.01011.2 5
Forme normalisée 1.00100101 00100101 S Exp mantisse Normalisation: Le chiffre le plus significatif (non nul) est placé à l extrême gauche de la mantisse
La norme IEEE 754 Objectifs de la norme Représentation des nombres Procédures d arrondis Précision Traitement des exceptions Principe Toujours 1 avant la virgule (ce bit n est pas codé) 1<mantisse<2
Précision simple sur 32 bits (10**-38 à 10**38) S 1 bit Exp 8 bits mantisse 23 bits Précision double sur 64 bits (10**-308 à 10**308) S Exp mantisse 1 bit 11 bits 52 bits
Codage de l exposant L exposant n est pas représenté en complément à 2. Il est biaisé Biais = -127 exp codé = biais + exp réel Il est donc non signé
Précision Pour un nombre total de bits constant, il faut faire un compromis entre rang et précision Si on augmente la taille de l exposant le rang augmente mais la précision diminue Ecart non constant entre les nombres 23 E 127 Résolution : N = 2.2 Par contre, la précision relative est constante 2 23 P= 2 23 1,2.10 7 1, F
Exemple Le nombre binaire suivant correspond à 1 10000001 01000000000000000000000 Exposant biaisé= 129 Exposant = 2 Partie fractionnaire = 0,01 en base 2 Soit 0,25 en base 10 ce qui donne une mantisse de 1,25 Soit N = -1,25.2^2 = -5
b. Modes d arrondis Au plus proche, Vers un nombre pair lorsque la valeur est à mi-chemin Vers 0 Vers +/- infini
c. Valeurs spéciales Il est possible de Diviser par 0 Calculer la racine carré d un nombre négatif Le résultat est +infini Le résultat est NaN (Not a Number), c est une configuration de bits de la norme Aucune gestion d exception n est nécessaire puisque x+nan, x/nan, x*nan = NaN 3e sorte de nombres speciaux : les nombres dénormalisés Lorsque un nombre n est inférieur à 1,0xEmin, on pourrait penser que n est forcé à 0 Dans la norme, ces nombres sont représentés en utilisant des mantisses inférieures à 0 Ceci est appelé sous-dépassement progressif puisque lorsqu ils sont inférieurs à Emin, les nombres perdent successivement leur bits significatifs et ne sont seulement représentés par zéro que quand tous sont perdus
Exemple En base 10 avec 4 chiffres significatifs x=1,234.10^emin x/10 = 0,123.10^Emin x/1000 = 0,001^Emin x/10000 = 0 Si y = 1,256.10^Emin alors le test d égalité entre x et y est fait par y-x==0? Dans des systèmes de forcage à 0, x-y=0 donc x=y Avec la norme x-y=0,02.10^emin, donc x!=y
Résumé Simple Simple étendue Double Double étendue P (bits significatifs 24 >=32 53 >=64 Emax 127 >=1023 1023 >=16383 Emin -126 <=-1022-1022 <=-16382 Excès de l exposant 127 1023 Exposant Partie Fractionnaire représente e=emin-1 (0) F=0 +/-0 e=emin-1 (0) F!=0 0,f.2^emin Emin<e<Emax 1<e<254-1,f.2^e e=emax+1 (255) F=0 +/-infini e=emax+1 (255) F!=0 NaN
II. Accélérations des opérateurs
1. Accélération de l additionneur entier L addition entière et la plus simple et la plus importante : Calcul de base des algos Incrémenter un compteur Calcul d adresses 3 méthodes d accélération Anticipation de retenue Saut de retenue Sélection de retenue
a1. Retenue anticipée Si = ai bi c i + a i bi c i + a i b i ci + ai bi ci Problème : il faut propager la retenue à travers tous les additionneurs, La sortie du Ne adder arrive avec N-1 temps de retard par rapport au 1er Donc l objectif est de n écrire ci que en fonction des entrées ai et bi ci = ai bi + bi ci 1 + ai ci 1 ci = g i 1 + pi 1ci 1
Propagation et génération Si gi-1 est vrai, alors ci est vrai, une retenue a été générée pi 1 = ai 1 + bi 1 Si pi-1 est vrai alors ci dépend de ci-1, la retenue est propagée On génère si les 2 entrées du ie adder sont à 1 g i 1 = ai 1bi 1 On propage si une des 2 entrées sont à 1 ci = Dans l équation précédente on remplace... + successivement ci par (gi-1 + pi-1.ci-1) g i 1 + pi 1 g i 2 + pi 1 pi 2 g i 3 + pi 1 pi 2... p1 g 0 + pi 1 pi 2... p1 p0 c0
Additionneur CLA Cet additionneur est référencé par Carry-Lookahead Adder (CLA) Il utilise 5 couches de logique : 1 pour p et g 2 pour les retenues 2 pour les sommes Comparaison aux 2n couches de l additionneur à propagation Mais sur n bits, la porte OU a une entrance (fanin) de n+1 ainsi que pour la porte ET la plus à droite Donc sa construction devient difficile quand n est grand Irrégulier Surface importante
Schéma du CLA G1 P1 G0 P0 C0 Gi-1 c2 c1 Pi-1 Gi-2 p1 G0 P0 C0 Pi-2 Gi-3 ci ci = g i 1 + pi 1 g i 2 + pi 1 pi 2 g i 3 +... + pi 1 pi 2... p1 g 0 + pi 1 pi 2... p1 p0 c0
a2. Construction par étapes Pour tout j tel que i<j, j+1<k On a les relations récursives suivantes Exemple : ck + 1 = Gik + Pik ci Gik = G j + 1,k + Pj + 1,k Gij Pik = Pij Pj + 1,k c1 = G01 + P01c0 G01 = g1 + p1 g 0 P01 = p1 p0
Exemple P03 et G03 Puisque Pii = pi Gii = gi P03 = P01 P23 = P00 P11 P22 P33 P03 = p0 p1 p2 p3 On remarque que G47 et P47 sont indépendant des entrées a[0..3] G03 = G23 + P23G01 = (G33 + P33G22 ) + ( P22 P33 )(G11 + P11G00 ) G03 = g 3 + p3 g 2 + p3 p2 g1 + p3 p2 p1 g 0 G47 = G67 + P67G45 = (G77 + P77G66 ) + ( P66 P77 )(G55 + P55G44 ) G47 = G77 + P77G66 + P66 P77G55 + P55 P66 P77G44 G03 = g 7 + p7 g 6 + p6 p7 g 5 + p5 p6 p7 g 4
Construction L additionneur est donc composé de 2 parties : La première calcule les différentes valeurs de P et G à partir des pi et gi selon les équations précédentes La seconde utilise ce valeurs de P et G pour calculer les retenues selon l équation précédente Structuration en arbre binaire
Structure d arbre binaire Première partie de l arbre à anticipation de haut en bas Cellule de type 1 : calcul des pi, gi Cellules de type 2 : combinaison des P et G gi=ai.bi pi=ai+bi Pi,k=Pij. Pj+1,k Gi,k=Gj+1,k+Pj+1,k.Gij
Chaque cellule doit connaître un couple (P,G) pour faire la conversion Deuxième partie de l arbre à anticipation de bas en haut
Additionneur complet : Combinaison des 2 arbres précédents de haut en bas, P et G de bas en haut, les retenues Combinaison des 2 arbres précédents de haut en bas, P et G de bas en haut, les retenues
Complexité de la structure Les bits passent à travers logn couches au lieu de 2n pour l additionneur à propagation Alors que l additionneur à propagation de retenue a n cellules, le CLA a 2n cellules, Au prix d un investissement en taille, il y a une amélioration énorme en vitesse Ce sera notre première conclusion : compromis performance/surface
Amélioration possible
b) Les additionneurs à saut de retenue Carry Skip Adder (!= CSA) À mi-chemin entre l adder à propagation et l adder à anticipation À la fois en vitesse et en coût En effet, dans les équations P et G, le calcul de P est beaucoup plus simple que celui de G (voir exemple P03 et G03) Un additionneur à saut de retenue ne calcul que les P
Additionneur à saut de retenue sur 20 bits où chaque bloc a 4 bits 2 couches de logiques par nombre d entrées pour ci (AND puis OR) Si la retenue sortante du bloc précédent et le signal P du bloc courant sont vrais, Alors la retenue saute le bloc et attaque le suivant! Remarque : le découpage en blocs de 4 est ici un choix, d autres sont possibles!
Vitesse de propagation (n,k) S il faut 1 unité de temps pour traverser 2 couches de logiques Il faut k unités pour traverser un bloc de taille k Et 1 unité de temps pour sauter un bloc Pour le chemin le plus long pour un additionneur n bits k pour le premier bloc (c0) n/k 2 pour sauter les blocs intérmédiaires K pour le dernier bloc (cn) Soit pour (20,4), t= 4 + (20/4-2) + 4 = 11 unités de temps
Additionneur à sélection de retenue Principe : 2 additions sont effectuées en parallèle L une en supposant que la retenue d entrée vaut 0, L autre qu elle vaut 1 Quand la retenue véritable est connue, la somme correcte (qui est précalculée) est simplement sélectionnée.
Exemple (8, 4) pendant que la somme des 4 bits de poids faible est calculée, les bits de poids fort sont calculés 2 fois en parallèle
Propriétés Par rapport à la propagation simple, L additionneur à sélection est 2 fois plus rapide Pour un surcoût de 50% en surface Au lieu d être divisé en 2, il pourrait être divisé en 4, pour limiter la taille le fanout de la retenue à l entrée des mux et accroître les perfs.
ci = (ab) + (ab + a + b).ci 1 c = ab 0 i ci1 = ab + a + b ci = ci0 + ci1.ci 1
Résumé Les chiffres fournies sont pour un paramétrage optimal de (n,k) temps Surface Propagatio n simple O(n) O(n) Retenue anticipée O(log n) O(nlog n) Saut de retenue O(sqrt n) O(n) Sélection de retenue O(sqrt n) O(n)
2. Multiplication / Division
Mul / Div Des algorithmes triviaux basés sur les décalages peuvent être implémentés mais ils ne fournissent qu un bit par cycle
MUL DIV
Division SRT P=A/B+R S il y a k zéro au début de B quand il est exprimé sur n bits, décaler à gauche tous les registres de k bits. Le MSB sera alors 0 et le suivant 1 Pour i = 0 à n-1 faire : Si les 3 bits MSB de P sont égaux, mettre qi à 0 et décaler (P, A) d une position à gauche
Comparatifs de circuits
Comparatif MIPS R3010 Weitek 3364 TI 8847 Temps de cycle (ns) 40 50 30 Taille (mm²) 74,1 95,2 100,7 Transistors 75 000 165 000 180 000 Broches 84 168 207 Puissance (watts) 3,5 1,5 1,5 Cycles/add 2 2 2 Cycles/mul 5 2 3 Cycles/div 19 17 11 Cycles/sqrt - 30 14
TI8847
MIPS R3010
Weitek 3364