Ripple-Carry- vs. Carry-Lookahead- vs. Carry-Save-Addierer: Verzögerung, Fläche und Einsatz
Alle drei sind aus Volladdierern aufgebaute Addierer, behandeln den Übertrag aber unterschiedlich. Ein Ripple-Carry-Addierer schaltet Volladdierer in Reihe, sodass der Übertrag nacheinander vom niedrigsten zum höchsten Bit läuft; die Verzögerung wächst proportional zur Bitbreite n (O(n)). Ein Carry-Lookahead-Addierer berechnet alle Überträge parallel aus den Generate- und Propagate-Signalen jeder Stelle; mit hierarchischer Lookahead-Logik wächst die Verzögerung nur mit O(log n). Ein Carry-Save-Addierer fasst drei Zahlen ohne Weitergabe des Übertrags zu zwei Zahlen zusammen, einem Summenwort und einem Übertragswort; seine Verzögerung beträgt unabhängig von der Bitbreite eine Volladdiererstufe. Multiplizierer reduzieren die Teilprodukte mit Bäumen aus Carry-Save-Addierern (etwa Wallace-Trees) und addieren die beiden verbleibenden Zahlen mit einem schnellen Addierer.
| Merkmal | Ripple-Carry-Addierer | Carry-Lookahead-Addierer | Carry-Save-Addierer |
|---|---|---|---|
| Ein- und Ausgänge | Addiert zwei Zahlen (und einen Übertragseingang) zu einer Summe und einem Übertragsausgang | Addiert zwei Zahlen (und einen Übertragseingang) zu einer Summe und einem Übertragsausgang | Fasst drei Zahlen zu zwei Zahlen zusammen, dem Summenwort S und dem Übertragswort Cy (A + B + C = S + Cy) |
| Behandlung des Übertrags | Jeder Volladdierer wartet auf den Übertrag von unten und gibt ihn nacheinander nach oben weiter | Mit Generate g = a·b und Propagate p = a ⊕ b wird c(i+1) = g(i) + p(i)·c(i) aufgelöst, um die Überträge parallel zu berechnen | Überträge gehen nicht an die Nachbarstelle, sondern als um eine Stelle nach links verschobenes Wort an die nächste Stufe |
| Wachstum der Verzögerung | O(n); im ungünstigsten Fall läuft der Übertrag vom niedrigsten bis zum höchsten Bit | O(log n) (mit hierarchischer Lookahead-Logik) | O(1); eine Volladdiererstufe, unabhängig von der Bitbreite |
| Richtwerte bei 64 Bit | Der Übertrag durchläuft 64 Volladdierer | Drei Ebenen aus 4-Bit-Blöcken; bei einem Parallel-Präfix-Addierer nach Kogge-Stone braucht die Übertragsberechnung log₂64 = 6 Stufen | Eine Stufe entspricht der Verzögerung eines Volladdierers; ein Wallace-Tree, der 64 Teilprodukte auf zwei reduziert, braucht 10 Stufen |
| Schaltungsaufwand | Am kleinsten: n Volladdierer für n Bit | Größer um die Lookahead-Logik; schnellere Varianten brauchen mehr Gatter und Verdrahtung (bei Kogge-Stone etwa n log n) | Eine Stufe besteht aus n Volladdierern ohne Übertragskette; ein ganzer Multipliziererbaum wächst mit der Zahl der Teilproduktbits (etwa n²) |
| Form des Ergebnisses | Gewöhnliche Binärzahl | Gewöhnliche Binärzahl | Redundante Darstellung, aufgeteilt in Summen- und Übertragswort; für einen einzelnen Wert ist am Ende ein gewöhnlicher Addierer nötig |
| Typischer Einsatz | Kleine oder stromsparende Schaltungen, bei denen Geschwindigkeit unkritisch ist; in FPGAs oft mit dedizierter Übertragslogik (Carry Chain) aufgebaut | ALUs von CPUs, Adressberechnung, Gleitkommaeinheiten, die abschließende Addition in Multiplizierern | Reduktion der Teilprodukte in Multiplizierern (Wallace- und Dadda-Trees), Akkumulation bei Multiplizier-Akkumulier-Operationen, Addition vieler Zahlen |
| Verwandte Verfahren | Carry-Skip- und Carry-Select-Addierer (bei Geschwindigkeit und Fläche dazwischen) | Parallel-Präfix-Addierer (Kogge-Stone, Brent-Kung u. a.) | 4:2-Kompressoren, Kombination mit dem Booth-Algorithmus zur Verringerung der Teilprodukte |
Die Zahlenwerte sind typische Größenordnungen und variieren je nach Prozessgeneration und Produkt.