Carry-Lookahead-Addierer: Schneller als Ripple-Carry
Ein Carry-Lookahead-Addierer strukturiert die Übertragserzeugung mit Propagate- und Generate-Signalen neu. Leiten Sie einen 4-Bit-CLA her und sehen Sie, warum reale Entwürfe Hierarchie verwenden.
Kurzfassung: Carry Lookahead schreibt die serielle Rekurrenz mithilfe von Generate-/Propagate-Signalen pro Bit und Gruppe um. Ein kleiner flacher CLA kann mehrere Überträge unmittelbar aus den Operanden ausdrücken. Hierarchische und Parallel-Prefix-Varianten verringern die Übertragstiefe von linear in Richtung logarithmisch – auf Kosten zusätzlicher Zellen, Fan-out und Verdrahtung.
Ein 4-Bit-Ripple-Carry-Addierer ist unkompliziert: Verketten Sie vier Volladdierer und führen Sie jedes zum nächsten . Seine Übertragsabhängigkeit im ungünstigsten Fall wächst mit der Wortbreite. Ob dieser Pfad das Timing einhält, hängt von Technologie, Taktziel, Zellbibliothek und umgebendem Datenpfad ab; die Breite allein macht einen Entwurf nicht „inakzeptabel“.
Carry-Lookahead-Addierer (CLAs) greifen die serielle Abhängigkeit an, indem sie Übertragsausdrücke aus Zwischensignalen herleiten, die unmittelbar aus den Operanden verfügbar sind.
Warum Ripple-Carry langsam ist
Rufen Sie sich die Volladdierer-Gleichungen in Erinnerung:
Die Summe hängt von ab. Der Übertrag hängt ebenfalls von ab. Die Abhängigkeitskette lautet also . Dauert eine einzelne Übertragsstufe , beträgt die gesamte Additionszeit im ungünstigsten Fall ungefähr:
Die Abhängigkeit erster Ordnung ist linear zur Wortbreite. Absolute Nanosekunden erfordern eine spezifizierte Implementierung, daher sind Gatterlaufzeiten hier nur zum Vergleichen der Topologie nützlich. Das ist die Art von Ausbreitungsverzögerungsgrenze, die schnellere Übertragsnetze motiviert.
Generate und Propagate
Betrachten Sie die Übertragsgleichung erneut:
Der erste Term, , ist genau dann wahr, wenn beide Operandenbits 1 sind – dann erzeugt Stufe unabhängig davon, was an ankommt, unbedingt einen Carry-out. Definieren Sie:
Dies ist das Generate-Signal – Stufe erzeugt selbst einen Übertrag.
Der zweite Term, , sagt: Wenn genau eines der Operandenbits 1 ist, wird alles, was an ankommt, direkt weitergeleitet. Definieren Sie:
Dies ist das Propagate-Signal – Stufe leitet jeden eingehenden Übertrag an ihren Ausgang weiter.
Die Übertragsgleichung vereinfacht sich zu:
Das sind das UND-Gatter und das ODER-Gatter, die Sie bereits kennen und die genau das leisten, was ihre Wahrheitstabellen beschreiben – nur jetzt kombiniert zu einer Rekurrenz, die Sie auffalten können.
Die Übertragsrekurrenz auffalten
Setzen Sie die Rekurrenz in sich selbst ein. Beginnen Sie mit einem bekannten :
Das Muster ist klar. Jeder Übertrag ist eine Sum-of-Products-Form über Generate- und Propagate-Signale der Stufen 0 bis . Logisch hängt jeder Ausdruck nur von , und ab, nicht von einem abgeschlossenen physischen Übergang im vorhergehenden Volladdierer. Physisch benötigen breite Produktterme und ihre Verdrahtung weiterhin endliche Gatter, Puffer und Routing.
Ein durchgerechnetes 4-Bit-Beispiel
Addieren Sie (11) und (6) mit . Schreiben Sie die Bits mit dem niederwertigsten zuerst:
| Bit | ||||||
|---|---|---|---|---|---|---|
| 0 | 1 | 0 | 1 | 0 | 0 | 1 |
| 1 | 1 | 1 | 0 | 1 | 0 | 0 |
| 2 | 0 | 1 | 1 | 0 | 1 | 0 |
| 3 | 1 | 0 | 1 | 0 | 1 | 0 |
Die Übertragsgleichungen ergeben , , und . Das Lesen von liefert erwartungsgemäß . Die Arithmetik entspricht dem Ripple Carry; nur die Topologie des Übertragsnetzes ändert sich.
Gruppen-Generate und -Propagate
Definieren Sie für eine Bitgruppe von bis ein Gruppen-Propagate und ein Gruppen-Generate:
Dann ist der Übertrag, der die Gruppe verlässt:
Zwei benachbarte Gruppen lassen sich mit derselben Operation kombinieren:
Diese Assoziativität ist der Schlüssel zu Hierarchie und Parallel-Prefix-Addierern: Paare werden kombiniert, dann Paare von Paaren, wodurch ein Baum statt einer seriellen Kette entsteht.
Die 4-Bit-CLA-Architektur
Auf der Booleschen Ebene hat ein flacher 4-Bit-CLA drei Funktionen:
- Generate-/Propagate-Schicht. UND-Gatter erzeugen in einer Verzögerung; XOR-Gatter erzeugen in einer Verzögerung. Diese Vorgänge laufen parallel.
- Übertragsnetz. UND-ODER-Logik berechnet bis aus den aufgefalteten Formeln. Mit hypothetischen Gattern mit unbegrenztem Fan-in sieht dies nach zwei Logikebenen aus; eine reale Bibliothek zerlegt breite Terme, sodass Tiefe und Last mit der Breite zunehmen.
- Summenschicht. XOR-Gatter erzeugen in einer Verzögerung. (Beachten Sie: , sobald berechnet ist.)
Für vier Bits kann dies den Übertragsweg gegenüber einer Kette aus Volladdiererzellen verkürzen. Die flachen Gleichungen unbegrenzt zu erweitern, ist nicht praktikabel, weshalb größere CLAs Gruppen einführen.
Blockdiagramm eines 4-Bit-CLA
A0,B0 ─┬── XOR ── P0 ──┐ ┌── XOR ── S0
└── AND ── G0 ──┤ │
│ ┌─── carry network ───┐ │
A1,B1 ─┬── XOR ── P1 ──┤ │ │ ├── XOR ── S1
└── AND ── G1 ──┤ │ computes │ │
├──>│ C1, C2, C3, C4 │─┤
A2,B2 ─┬── XOR ── P2 ──┤ │ from expanded │ ├── XOR ── S2
└── AND ── G2 ──┤ │ │ │
│ │ carry expressions │ │
│ └─────────────────────┘ │
A3,B3 ─┬── XOR ── P3 ──┤ ├── XOR ── S3
└── AND ── G3 ──┘ │
└────────── C4
C0 ──────────────────────>┘
Fan-in, Verdrahtung und die versteckten Kosten
Für enthält der längste flache Ausdruck einen Produktterm mit fünf Eingängen, wenn einbezogen wird. Für hätte der entsprechende Term 17 Eingänge. Standardzellenbibliotheken bieten nur begrenzten Fan-in, und lange Leitungen sowie große Lasten erhöhen die Verzögerung. Ein wörtlich flacher CLA skaliert deshalb nicht elegant, obwohl sein Boolescher Ausdruck flach aussieht.
Die übliche Lösung ist Hierarchie. Bitgruppen – oft Blöcke aus vier Bits – berechnen Gruppen- und - und kombinieren diese Gruppen dann auf einer weiteren Ebene. Ein 16-Bit-Entwurf kann vier 4-Bit-Gruppen plus eine zweite Lookahead-Stufe verwenden. Parallel-Prefix-Addierer wenden die assoziative Gruppenoperation im gesamten Baum an.
Der Kompromiss lässt sich nicht in einer universellen Tabelle der Gatteranzahl erfassen:
| Architektur | Übertragsabhängigkeit | Typische Stärke | Typische Kosten |
|---|---|---|---|
| Ripple Carry | Linear | Kleine Fläche, einfaches Routing | Langer Übertragsweg im ungünstigsten Fall |
| Block Carry Lookahead | Hierarchisch | Mäßiger Kompromiss zwischen Geschwindigkeit und Fläche | Breitere lokale Logik und Gruppenverdrahtung |
| Carry Select | Beide Carry-Fälle vorab berechnen | Kürzerer Entscheidungsweg | Doppelte Summenhardware |
| Parallel Prefix | Baumartig | Geringe logische Tiefe | Mehr Prefix-Zellen, Verdrahtung und mitunter hoher Fan-out |
Tatsächliche Verzögerung, Fläche und Energie müssen nach Mapping und physischer Implementierung gemessen werden. Eine Topologie, die bei abstrakten Gatterebenen gewinnt, kann nach Berücksichtigung von Überlastung, Puffern und Last verlieren.
Jenseits des CLA: Parallel-Prefix-Addierer
Die Carry-Lookahead-Idee lässt sich verallgemeinern. Die Rekurrenz ist unter einem eigenen Operator assoziativ – Sie können benachbarte Positionen paarweise kombinieren und dann Paare von Paaren in einem Baum. Dies ist die Familie der Parallel-Prefix-Addierer:
- Kogge–Stone – geringe Prefix-Tiefe und begrenzter logischer Fan-out, aber dichte Verdrahtung und viele Prefix-Knoten.
- Brent–Kung – weniger Prefix-Knoten und weniger Verdrahtung, dafür größere Tiefe.
- Han-Carlson, Ladner-Fischer, Sklansky – unterschiedliche Kompromisse bei Fan-out, Verdrahtungskomplexität und Tiefe.
Produktionsaddierer können zudem Prefix-Strukturen mischen, Sparsity verwenden oder Carry-Select-Logik um ausgewählte Gruppen herum einsetzen. Die Wahl erfolgt anhand eines konkreten Budgets für Timing, Fläche, Leistung und Routing; allein die Taktfrequenz eines Prozessors verrät seine Addierer-Topologie nicht.
Einen CLA in DigiSim implementieren
Sie können einen 4-Bit-CLA aus Grundelementen aufbauen: vier UND-Gatter für Generate, vier XOR-Gatter für Propagate, die obigen Übertragsgleichungen und vier abschließende XOR-Gatter für die Summe. Die höherstufigen Komponenten Addierer und 8-Bit-Addierer sind Verhaltensvereinfachungen; schließen Sie nicht auf ihre interne Architektur, sofern die Komponentendokumentation sie nicht festlegt.
Um die Topologie zu vergleichen, verketten Sie vier Volladdierer als Ripple Carry und bauen einen separaten 4-Bit-CLA. Überprüfen Sie zunächst alle Operanden-Kombinationen auf funktionale Gleichwertigkeit. Falls der Simulator Verzögerungen pro Gatter modelliert, vergleichen Sie dann die späteste Einschwingzeit nach einer Eingangsänderung. Sind seine Gatter ideal, zählen Sie stattdessen abhängige Logikebenen; eine ideale Wellenform kann Silicon-Timing nicht vorhersagen.
Häufige Fallstricke
- Übersehen, dass als XOR und nicht als ODER definiert ist. Beide Definitionen – oder – erzeugen einen korrekten Übertrag, weil der Fall bereits durch abgedeckt ist. XOR ist hier zweckmäßig, weil dieselbe Leitung die Summenstufe speist: . Bei ODER-definiertem ist diese Wiederverwendung nicht möglich; für die Summe ist dann ein separates XOR erforderlich.
- Die Fan-in-Skalierung unterschätzen. Eine flache 16-Bit-Erweiterung enthält einen Term mit 17 Literalen, wenn einbezogen wird. Praktische breite Entwürfe zerlegen oder gruppieren die Logik.
- Annehmen, dass ein CLA immer schneller ist. Bei schmalen Breiten kann eine Ripple-Implementierung flächenmäßig gewinnen und das Timing komfortabel einhalten. Es gibt keine architekturunabhängige Übergangsbreite.
- Kritische Pfade von Summe und Übertrag verwechseln. Die Tiefe des Übertragsnetzes dominiert die Gesamtverzögerung, doch das abschließende Summen-XOR fügt eine weitere Gatterverzögerung hinzu. Die Verzögerung als „Tiefe des Übertragsnetzes“ anzugeben, ist ein häufiger Fehler.
Wie es weitergeht
Fahren Sie mit Wie eine ALU funktioniert: Arithmetic Logic Unit From Gates fort und lesen Sie dann Booth-Multiplizierer erklärt für eine andere arithmetische Optimierung.
Um die zwei Addierer-Architekturen praktisch zu vergleichen, öffnen Sie die Volladdierer-mit-Übertrag-Vorlage, verketten vier Instanzen als Ripple-Carry-Addierer und beobachten die bitweise Übertragsausbreitung am Logikanalysator. Bauen Sie danach den äquivalenten 4-Bit-CLA aus den Gleichungen dieses Beitrags und messen Sie beide Schaltungen – der Unterschied ist der ganze Grund, warum Hochgeschwindigkeits-ALUs existieren.
