Wikipedia · einfach zusammengefasst · Stand
Addierwerk
Das Addierwerk (auch Addiernetz) ist die Hauptkomponente des Rechenwerks einer CPU. Das Addiernetz bildet aus den Summanden a 3..0 und b 3..0 die Summe s …
Inhalt4 Abschnitte
Aufgabe und Grundprinzip
Ein Addierwerk, auch Addiernetz, ist die Hauptkomponente des Rechenwerks einer CPU. Es addiert zwei mehrstellige Binärzahlen und ist ein zentrales Element der arithmetisch-logischen Einheit (ALU), weil sich alle vier Grundrechenarten auf Addition zurückführen lassen.
Das Addiernetz arbeitet asynchron. Das eigentliche Addierwerk arbeitet dagegen getaktet und puffert sein Ergebnis mit Speicherbausteinen. Ein- und Ausgangsüberträge (carry_in und carry_out) erlauben, Addierschaltungen zu kaskadieren, also für größere Bitbreiten hintereinanderzuschalten. Für die Addition werden Halbaddierer und/oder Volladdierer verwendet. Wichtige Bauarten sind Parallel-, Serien- und Von-Neumann-Addierwerke.
Paralleladdierwerke
Beim Paralleladdierwerk arbeiten alle beteiligten Addierer gleichzeitig. In der Grundform, dem Carry-Ripple-Addierer, ist der Carry-Out jedes Volladdierers mit dem Carry-In des nächsthöheren Volladdierers verbunden.
Im ungünstigsten Fall muss der Übertrag vom niederstwertigen bis zum höchstwertigen Addierer wandern. Diese Übertragsfortpflanzung verursacht bei großen Addierwerken lange Signallaufzeiten. Deshalb gibt es schnellere Varianten:
- Carry-Skip-Addierer fassen Volladdierer zu Gruppen zusammen. Zusatzlogik ermittelt schnell, ob ein Carry-In eine Gruppe durchwandert.
- Carry-Look-Ahead-Addierer bestimmen den Übertrag einer Addierergruppe direkt durch aufwändige Logik.
- Conditional-Sum-Addierer berechnen für eine Gruppe sowohl das Ergebnis mit gesetztem als auch mit nicht gesetztem Carry-In. Eine Auswahllogik gibt danach passend zum Carry-In eines der Ergebnisse aus.
Der Vorteil ist die parallele Verarbeitung. Der Nachteil der Grundform sind die langen Laufzeiten bei einer Übertragsfortpflanzung von rechts nach links. Die Weiterentwicklungen benötigen zusätzliche Gatter; deren Anzahl steigt linear mit der Breite n der zu addierenden Dualstellen.
Serielle und iterative Addition
Ein Serienaddierwerk addiert die Stellen n-stelliger Binärzahlen nacheinander. Es benötigt nur einen Volladdierer und ein D-Flip-Flop. In jedem Takt gelangen das jeweils äußerste rechte Bit beider Schieberegister sowie der im D-Flip-Flop gespeicherte Übertrag in den Volladdierer. Die Ergebnisstelle wird in einem Register gespeichert; der neue Übertrag wird für den nächsten Takt im D-Flip-Flop abgelegt.
Der geringe Bauteilaufwand ist sein Vorteil. Wegen der seriellen Verarbeitung benötigt die Addition zweier n-stelliger Binärzahlen jedoch n + 1 Takte.
Das Von-Neumann-Addierwerk verbindet Eigenschaften von Parallel- und Serienaddierer. Es verwendet n Halbaddierer für zwei n-stellige Binärzahlen. Die Register A und P werden mit den Summanden geladen. Nach einer Addition wird A mit den Summen ohne Übertrag und P mit den Überträgen geladen; diese Schritte werden wiederholt, bis Register S den Wert Null enthält. Das AND an P₀ setzt P₀ nach dem ersten Durchlauf dauerhaft auf 0.
Im Worst Case benötigt dieses Addierwerk n + 1 Takte; laut Artikel zeigt die Praxis im Mittel nur log₂ n + 1 Takte. Im Beispiel 13 + 11 führen die aufeinanderfolgenden Registerwerte schließlich zum Ergebnis 24.
Subtraktion und Gleitkommaoperationen
Eine Subtraktion lässt sich als Addition des Subtrahenden mit geändertem Vorzeichen ausführen. Bei Dualzahlen wird der Vorzeichenwechsel durch das Zweierkomplement gebildet: Zuerst werden alle Bits invertiert (Einerkomplement), danach wird 1 addiert. Ein Addier-/Subtrahierwerk schaltet dazu XOR-Verknüpfungen vor den zweiten Operanden. Bei Wahlschalter 1 invertiert das XOR dessen Bits und setzt zugleich Carry-In; dadurch entsteht das Zweierkomplement und die Addition wird zur Subtraktion.
Bei Gleitkommazahlen verarbeitet eine Gleitkommaeinheit Mantisse und Exponent getrennt. Zunächst werden die Exponenten im ersten Normierer angeglichen: Die Exponenten werden subtrahiert, und die Mantisse der Zahl mit kleinerem Exponenten wird mit einem Schieberegister um die ermittelte Bitanzahl verschoben. Beide Zahlen erhalten damit denselben, größeren Exponenten. Ein Multiplexer wählt ihn anhand des Vorzeichens der Exponentendifferenz aus.
In der Addierer-/Subtrahierer-Stufe werden Mantissen mit gesetztem Vorzeichenbit durch Inverter negiert und anschließend addiert. Das Ergebnis ist die neue Mantisse. Ist die Summe zu groß für die Mantisse, setzt der Addierer ein Prioritäts- beziehungsweise Überlauf-Bit.
Im zweiten Normierer wird bei gesetztem Prioritäts-Bit die Exponentendifferenz um eins reduziert und das Ergebnis um ein Bit nach links verschoben. Danach bilden die resultierende Mantisse und die Exponentendifferenz als Exponent die Ergebnis-Gleitkommazahl.