Additionneur à propagation de retenue vs additionneur à retenue anticipée vs additionneur à retenue conservée : délai, surface et usages
Ces trois additionneurs sont construits à partir d’additionneurs complets, mais ils traitent les retenues différemment. Un additionneur à propagation de retenue enchaîne des additionneurs complets, si bien que la retenue passe tour à tour du bit de poids faible au bit de poids fort, et le délai croît proportionnellement à la largeur n (O(n)). Un additionneur à retenue anticipée calcule toutes les retenues en parallèle à partir des signaux de génération et de propagation de chaque bit, et avec une anticipation hiérarchique le délai ne croît qu’en O(log n). Un additionneur à retenue conservée réduit trois nombres à deux, un mot de somme et un mot de retenue, sans propager les retenues : son délai est celui d’un seul additionneur complet, quelle que soit la largeur. Les multiplieurs réduisent les produits partiels avec des arbres d’additionneurs à retenue conservée (comme les arbres de Wallace) et additionnent les deux derniers nombres avec un additionneur rapide.
| Critère | Additionneur à propagation de retenue (ripple-carry) | Additionneur à retenue anticipée (carry-lookahead) | Additionneur à retenue conservée (carry-save) |
|---|---|---|---|
| Entrées et sorties | Additionne deux nombres (et une retenue entrante) pour donner une somme et une retenue sortante | Additionne deux nombres (et une retenue entrante) pour donner une somme et une retenue sortante | Réduit trois nombres à deux, un mot de somme S et un mot de retenue Cy (A + B + C = S + Cy) |
| Traitement de la retenue | Chaque additionneur complet attend la retenue du bit inférieur et la transmet tour à tour vers le haut | Utilise la génération g = a·b et la propagation p = a ⊕ b et développe c(i+1) = g(i) + p(i)·c(i) pour calculer les retenues en parallèle | Les retenues ne passent pas au bit voisin ; elles vont à l’étage suivant sous forme d’un mot décalé d’un bit vers la gauche |
| Croissance du délai | O(n) ; dans le pire cas, la retenue va du bit de poids faible jusqu’au bit de poids fort | O(log n) (avec une anticipation hiérarchique) | O(1) ; le délai d’un additionneur complet, quelle que soit la largeur |
| Chiffres pour 64 bits | La retenue traverse 64 additionneurs complets | Trois niveaux de blocs de 4 bits ; dans un additionneur à préfixe parallèle de Kogge-Stone, le calcul des retenues prend log₂64 = 6 étages | Un étage correspond au délai d’un additionneur complet ; un arbre de Wallace qui réduit 64 produits partiels à deux demande 10 étages |
| Surface | La plus petite : n additionneurs complets pour n bits | Plus grande à cause de la logique d’anticipation ; les versions plus rapides utilisent plus de portes et de câblage (environ n log n pour Kogge-Stone) | Un étage compte n additionneurs complets sans chaîne de retenue ; l’arbre complet d’un multiplieur croît avec le nombre de bits des produits partiels (environ n²) |
| Format du résultat | Binaire ordinaire | Binaire ordinaire | Forme redondante, répartie entre un mot de somme et un mot de retenue ; un additionneur ordinaire est nécessaire à la fin pour obtenir une seule valeur |
| Usages typiques | Petits circuits ou circuits basse consommation où la vitesse n’est pas critique ; dans les FPGA, souvent construit sur une logique de chaîne de retenue dédiée | ALU des CPU, calcul d’adresses, unités à virgule flottante, addition finale dans les multiplieurs | Réduction des produits partiels dans les multiplieurs (arbres de Wallace et de Dadda), accumulation dans les unités de multiplication-accumulation, addition de nombreux nombres |
| Architectures apparentées | Additionneurs à saut de retenue et à sélection de retenue (intermédiaires en vitesse et en surface) | Additionneurs à préfixe parallèle (Kogge-Stone, Brent-Kung et autres) | Compresseurs 4:2, combinaison avec l’algorithme de Booth pour réduire les produits partiels |
Les valeurs indiquées sont des ordres de grandeur typiques et varient selon la génération de procédé et le produit.