DE19653565A1 - Rekursiv aufgeteilter Addierer mit Übertrag-Auswahl - Google Patents

Rekursiv aufgeteilter Addierer mit Übertrag-Auswahl

Info

Publication number
DE19653565A1
DE19653565A1 DE19653565A DE19653565A DE19653565A1 DE 19653565 A1 DE19653565 A1 DE 19653565A1 DE 19653565 A DE19653565 A DE 19653565A DE 19653565 A DE19653565 A DE 19653565A DE 19653565 A1 DE19653565 A1 DE 19653565A1
Authority
DE
Germany
Prior art keywords
carry
bit
adder
sum
gates
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
DE19653565A
Other languages
English (en)
Inventor
Bernd Paysan
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Individual
Original Assignee
Individual
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Individual filed Critical Individual
Priority to DE19653565A priority Critical patent/DE19653565A1/de
Publication of DE19653565A1 publication Critical patent/DE19653565A1/de
Priority to US08/984,572 priority patent/US6125381A/en
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/50Adding; Subtracting
    • G06F7/505Adding; Subtracting in bit-parallel fashion, i.e. having a different digit-handling circuit for each denomination
    • G06F7/506Adding; Subtracting in bit-parallel fashion, i.e. having a different digit-handling circuit for each denomination with simultaneous carry generation for, or propagation over, two or more stages
    • G06F7/507Adding; Subtracting in bit-parallel fashion, i.e. having a different digit-handling circuit for each denomination with simultaneous carry generation for, or propagation over, two or more stages using selection between two conditionally calculated carry or sum values
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K17/00Electronic switching or gating, i.e. not by contact-making and –breaking
    • H03K17/51Electronic switching or gating, i.e. not by contact-making and –breaking characterised by the components used
    • H03K17/56Electronic switching or gating, i.e. not by contact-making and –breaking characterised by the components used by the use, as active elements, of semiconductor devices
    • H03K17/687Electronic switching or gating, i.e. not by contact-making and –breaking characterised by the components used by the use, as active elements, of semiconductor devices the devices being field-effect transistors
    • H03K17/693Switching arrangements with several input- or output-terminals, e.g. multiplexers, distributors

Description

Anhand dreier Zeichnungen werden der Stand der Technik, die Erfindung und eine vorteilhafte Transistorschaltung zur Realisierung der Erfindung dargestellt. Es zeigen:
Fig. 1 den Stand der Technik, die Kombination der rekursiv aufgeteilten Komponenten beim "Carry lookahead"-Addierer,
Fig. 2 die Kombination der rekursiv aufgeteilten Komponenten beim rekursiv aufgeteilten Addierer mit Übertrag-Auswahl und
Fig. 3 die Transistorschaltung eines Ein-Bit 2 : 2 Multiplexers in CMOS-Tech­ nologie.
Binärsummen werden prinzipiell berechnet, indem die Summe zweier Ein­ gangsbits gleicher Wertigkeit und des zugehörigen eingehenden Übertrags be­ rechnet wird. Ergebnis ist ein Bit der Summe derselben Wertigkeit und der Übertrag, der bei der Berechnung des nächsthöherwertigen Bits der Summe ein­ gehender Übertrag ist. Eine sequenzielle Berechnung der Überträge ("Ripple- Carry"-Addierer) ist beim Stand der Technik allerdings nur für wenige Bit breite Operanden angemessen.
Stand der Technik bei Addierern ist die Verwendung einer rekursiven "Divide and Conquer"-Strategie, um die Übertragberechnung zu beschleunigen. Der am weitesten verbreitete schnelle binäre Additionsalgorithmus ist der "Carry looka­ head"-Addierer. Grundlegendes Prinzip ist eine "Divide and Conquer"-Strategie, um die Fortpflanzung des Übertrags zu berechnen.
Die Operanden werden dazu in Teile zerlegt, z. B. in je eine höher- und nie­ derwertige Hälfte. Der Addierer wird entsprechend in eine höherwertige und eine niederwertige Komponente zerlegt, die die Berechnung der Summe für die höher­ bzw. niederwertige Hälfte der Operanden übernehmen. Diese Aufteilung wird auch für die Operandenteile fortgeführt, bis die Operanden nur noch ein Bit breit sind. Diese Summe aus zwei Bits berechnet ein Halbaddierer, als Ergebnis wird ein Bit Summe und ein Bit Übertrag produziert.
In Fig. 1 wird die Berechnung der Fortpflanzung des Übertrags anschau­ lich gemacht: Ein Übertrag pflanzt sich durch einen Halbaddierer fort, wenn die Summe der beiden Bits 1 ist. Ein Übertrag pflanzt sich durch zwei benachbarte Komponenten fort, wenn er sich durch beide Komponenten fortpflanzt, also cp für beide Elemente 1 ist. Die Analyse der Übertrags-Fortpflanzung ist also ein Baum von AND-Gattern.
Die tatsächliche Übertrags-Fortpflanzung wird dann rückwärts berechnet. Je­ de Komponente erzeugt einen Übertrag co, wenn der eingehende Übertrag 1 ist und das Element einen Übertrag fortpflanzt, oder die höherwertige Komponente einen Übertrag erzeugt. Die Bits so der Summe werden aus der Exklusiv-Oder- Verknüpfung der Summe der Halbaddierer mit dem zugehörigen eingehenden Übertrag ci berechnet.
Der kritische Pfad pro Aufteilung (durch zwei) beträgt also drei elementare Gatter (AND/OR oder NAND/NOR mit zwei Eingängen), welche oft zu einem großen Gatter kombiniert werden. Eine weitere Verbesserung der Gatterlaufzeit läßt sich erreichen, indem eine höhere Anzahl Komponenten in einem Schritt kombiniert werden (z. B. vier statt zwei), und entsprechend größere Gatter (mit mehr als zwei Eingängen) verwendet werden. Größere Gatter haben allerdings deutlich längere Laufzeiten, so daß ein Kompromiß in der Gattergröße gefunden werden muß.
Addierer mit Übertrag-Auswahl berechnen sowohl die Summe mit als auch ohne eingehenden Übertrag (also a + b und a + b + 1 für Eingangswerte a und b) für einige Teile der Operanden. Der eingehende Übertrag von jeder Komponen­ te wird benutzt, um die richtige Summe der nächsthöherwertigen Komponente unter Verwendung eines Multiplexers auszuwählen. Die Teilsummen werden üb­ licherweise mit "Ripple-Carry"-Addierern berechnet. Die Übertragsfortplanzung kann in bekannter Weise durch carry lookahead verbessert werden, was zu einem kritischen Pfad von z. B. vier großen Gattern für einen 64-Bit-Addierer führt.
Die Addition ist einer der kritischen Pfade in modernen CPUs. Addierer wer­ den z. B. in arithmetisch-logischen Einheiten verwendet, für die Adreßberechnung und für Fließkommaberechnung. Sowohl Flächen- als auch Zeitbedarf von Addie­ rern sind deshalb kritisch und müssen minimiert werden. Aufgabe der Erfindung ist es daher, einen Addierer zu konstruieren, der weniger Transistoren verwendet, als bekannte Addierer mit sehr kurzen Laufzeiten, und der dabei gleich schnell oder schneller ist.
Erfindungsgemäß wird die Aufgabe unter Anwendung einer "Divide and Con­ quer"-Strategie auf Addierer mit Übertrag-Auswahl gelöst. Der Addierer wird also in bekannter Weise in Komponenten zerlegt. Jede Komponente berechnet dabei erfindungsgemäß die Summen s₀ und s₁ und Überträge c₀ und c₁ mit als auch ohne Übertrag, also ist s₁ = s₀ + 1. Wie aus Fig. 2 hervorgeht, werden zwei Komponenten kombiniert, indem der Übertrag der beiden niederwertigen Sum­ men und verwendet wird, um Summe und Übertrag der höherwertigen Summen und auszuwählen. und werden zur Summe s₀ kombiniert (ohne eingehenden Übertrag), und werden zur Summe s₁ kombiniert (mit eingehendem Übertrag).
Jede 2n Bit breite Komponente (welche 2n Bit breite Zahlen addiert und, in­ clusive Übertrag, zwei 2n + 1 Bit breite Ergebnisse produziert) nutzt also zwei 2n-1 + 1 Bit breite Multiplexer mit zwei Eingängen und einem Ausgang (2 : 1- Multiplexer). Wenn die Bitbreite des Addierers keine Zweierpotenz ist, ist es vorteilhaft, die nächstkleinere ganzzahlige Zweierpotenz 2m als Breite der höher­ wertigen Komponente zu verwenden, um die Pfadlänge zu minimieren.
Die erste Ein-Bit-Summe wird mit einem XOR/AND Gatter (Summe und Übertrag) für die Summe ohne eingehenden Übertrag und einem XNOR/OR- Gatter für die Summe mit eingehenden Übertrag berechnet.
Vorteilhafte Ausführung mit CMOS-Schaltkreisen
Wesentlichen Anteil am Aufbau des Addierers haben die Multiplexer. Insbeson­ dere werden pro Komponente zwei 2 : 1-Multiplexer verwendet, die die gleichen Eingangswerte haben. Es ist daher vorteilhaft, beide Multiplexer zu einem 2 : 2- Multiplexer zusammenzufassen. Dies geschieht vorteilhaft unter Verwendung des in Fig. 3 dargestellten invertierenden Ein-Bit 2 : 2-Multiplexers. Dieses Gatter berechnet
mit etwa der Gatterlaufzeit eines NAND-Gatters mit zwei Eingängen, wobei c₀ und c₁ die Kontrollsignale, i₀ und i₁ die Eingangswerte und f₀ und f₁ die Ausgänge sind. n Ein-Bit-Multiplexer werden in bekannter Weise zu einem n Bit breiten Multiplexer kombiniert.
Da jedes Bit der Summe eine andere Zahl von Multiplexern durchläuft (höch­ stens log₂ n), muß das Ergebnis durch einen zusätzlichen Inverter für diejenigen Bits korrigiert werden, die eine ungerade Anzahl an Multiplexern durchlaufen. Dies geschieht vorteilhaft durch Vertauschen des XOR-Gatters mit dem XNOR- Gatter am Eingang des ersten Multiplexers. Der invertierte Übertrag wirkt sich lediglich auf die Verdrahtung der Multiplexer aus. Die Eingänge i₀ und i₁ müs­ sen vertauscht werden, wenn die Auswahl durch einen invertierten Übertrag ge­ schieht.
Beim Fortschreiten der Berechnung muß ein Übertrag immer größere Multi­ plexer, also immer mehr Gatter treiben. Das erhöht die Gatterlaufzeit und damit die Zeit für das Durchlaufen des kritischen Pfads. Dies kann verringert werden, indem entweder das Gatter, das dem treibenden Übertrag erzeugt, verdoppelt wird (ein Gatter zur Auswahl der nächsten Überträge, ein Gatter zur Auswahl der Summenbits), oder indem zusätzliche Puffer oder Inverter zum Treiben der Auswahl der Summenbits verwendet werden, also vom Übertrag nur ein Multi­ plexer und ein der oder wenige Puffer/Inverter getrieben werden müssen.
Der durch die Erfindung erreichbare Vorteil kann wie folgt abgeschätzt wer­ den:
Um die Summen in einem 64-Bit-Addierer ohne eingehenden Übertrag aus­ zuwählen, werden 192 2 : 2-Multiplexer benötigt, für die Auswahl der Überträge mindestens 63. Die Transistoranzahl für das Multiplexer-Netzwerk ist also min­ destens 2040, ohne Berücksichtigung zusätzlicher Puffer oder Inverter. Der kriti­ sche Pfad besteht aus einem sehr schnellen XOR-Gatter und sechs sehr schnellen Multiplexer-Gattern. Das XOR und XNOR-Gatter kann durch zwei Inverter (je zwei Transistoren) und einen 2 : 2-Multiplexer modelliert werden, welcher zwischen Eingang a und Eingang mit Hilfe der Kontrollsignale b und auswählt.
Unter Verwendung von NAND/NOR-Gattern zur Berechnung der Überträge (vier Transistoren pro Gatter), werden mindestens 3320 Transistoren für einen 64-Bit-Addierer ohne eingehenden Übertrag und mindestens 3832 Transistoren für einen 64-Bit-Addierer mit eingehendem Übertrag (unter Verwendung bekannter acht-Transisor invertierenden Multiplexer) benötigt.
Um die Treiberleistung der Multiplexer auf den kritischen Pfad (der Auswahl der Überträge) zu konzentrieren, also nur zwei Gatter (entweder zwei Multiplexer oder ein Multiplexer und ein Inverter/Puffer) pro Multiplexer getrieben werden, werden mindestens 31 Inverter oder Puffer (62 Transistoren) benötigt. Die Ver­ zögerung des Setups der Multiplexer, die die Summen auswählen, fällt weniger ins Gewicht, da auch die erzeugenden XOR-Gatter eine längere Laufzeit haben als die Übertrag-erzeugenden NAND/NOR-Gatter, und sich diese Verzögerung nicht aufsummiert.

Claims (4)

1. Ein rekursiv aufgeteilter Addierer mit Übertrags-Auswahl, dadurch ge­ kennzeichnet, daß eine n Bit breite Summe und ein Bit Übertrag (n < 1) sowohl ohne als auch mit eingehendem Übertrag mit einem in Bit (höher­ wertige Komponente) und einem n-m Bit (niederwertige Komponente) breiten rekursiv aufgeteiltem Addierer mit Übertrag-Auswahl (m < n) da­ durch berechnet wird, daß beide Komponenten sowohl die Summe mit als auch ohne eingehenden Übertrag berechnen, und m + 1 Bit breite Multi­ plexer die Summen und Überträge der höherwertigen Komponente unter Verwendung der Überträge der niederwertigen Komponente auswählen.
2. Addierer nach Anspruch 1, dadurch gekennzeichnet, daß eine 1-Bit- Summe unter Verwendung von XNOR und XOR-Gattern mit und ohne eingehenden Übertrag berechnet wird, und die zugehörigen (ggf. invertier­ ten) Überträge mit AND und OR-Gattern bzw. NAND und NOR-Gattern berechnet werden.
3. Addierer nach Anspruch 1 und 2, dadurch gekennzeichnet, daß in (die Bitbreite der höherwertigen Komponente) die größte ganzzahlige Potenz von 2 kleiner n (die Breite des Addiers) ist, um die Ausbreitungszeit des Übertrags zu reduzieren.
4. Addierer nach Anspruch 1 bis 3, dadurch gekennzeichnet, daß invertie­ rende Multiplexer verwendet werden, und die Summen der 1-Bit-Elemente nach Anspruch 2 durch Vertauschen von XOR und XNOR-Gattern derge­ stalt invertiert werden und die Eingangssignale der Multiplexer dergestalt ausgetauscht werden, daß sich dasselbe Resultat ergibt, das sich auch bei Verwendung nicht-invertierender Multiplexer ergibt.
DE19653565A 1996-12-20 1996-12-20 Rekursiv aufgeteilter Addierer mit Übertrag-Auswahl Withdrawn DE19653565A1 (de)

Priority Applications (2)

Application Number Priority Date Filing Date Title
DE19653565A DE19653565A1 (de) 1996-12-20 1996-12-20 Rekursiv aufgeteilter Addierer mit Übertrag-Auswahl
US08/984,572 US6125381A (en) 1996-12-20 1997-12-03 Recursively partitioned carry select adder

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE19653565A DE19653565A1 (de) 1996-12-20 1996-12-20 Rekursiv aufgeteilter Addierer mit Übertrag-Auswahl

Publications (1)

Publication Number Publication Date
DE19653565A1 true DE19653565A1 (de) 1997-05-15

Family

ID=7815710

Family Applications (1)

Application Number Title Priority Date Filing Date
DE19653565A Withdrawn DE19653565A1 (de) 1996-12-20 1996-12-20 Rekursiv aufgeteilter Addierer mit Übertrag-Auswahl

Country Status (2)

Country Link
US (1) US6125381A (de)
DE (1) DE19653565A1 (de)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100866787B1 (ko) * 2002-01-16 2008-11-04 삼성전자주식회사 Xor에 기반한 캐리 생성기와 이를 이용한 조건 선택가산 장치 및 그 방법
US7865542B2 (en) * 2003-12-29 2011-01-04 Xilinx, Inc. Digital signal processing block having a wide multiplexer
US7853634B2 (en) 2003-12-29 2010-12-14 Xilinx, Inc. Digital signal processing circuit having a SIMD circuit
US7840630B2 (en) * 2003-12-29 2010-11-23 Xilinx, Inc. Arithmetic logic unit circuit
US7849119B2 (en) 2003-12-29 2010-12-07 Xilinx, Inc. Digital signal processing circuit having a pattern detector circuit
US7853632B2 (en) 2003-12-29 2010-12-14 Xilinx, Inc. Architectural floorplan for a digital signal processing circuit
US7840627B2 (en) * 2003-12-29 2010-11-23 Xilinx, Inc. Digital signal processing circuit having input register blocks
US7870182B2 (en) 2003-12-29 2011-01-11 Xilinx Inc. Digital signal processing circuit having an adder circuit with carry-outs
US7853636B2 (en) * 2003-12-29 2010-12-14 Xilinx, Inc. Digital signal processing circuit having a pattern detector circuit for convergent rounding
US7844653B2 (en) 2003-12-29 2010-11-30 Xilinx, Inc. Digital signal processing circuit having a pre-adder circuit
US7860915B2 (en) 2003-12-29 2010-12-28 Xilinx, Inc. Digital signal processing circuit having a pattern circuit for determining termination conditions
US7882165B2 (en) 2003-12-29 2011-02-01 Xilinx, Inc. Digital signal processing element having an arithmetic logic unit
US8479133B2 (en) 2009-01-27 2013-07-02 Xilinx, Inc. Method of and circuit for implementing a filter in an integrated circuit
US8543635B2 (en) 2009-01-27 2013-09-24 Xilinx, Inc. Digital signal processing block with preadder stage

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5272662A (en) * 1991-01-31 1993-12-21 The United States Of America As Represented By The Secretary Of The Air Force Carry multiplexed adder
US5732008A (en) * 1995-12-04 1998-03-24 The University Of Waterloo Low-power high performance adder
US5764550A (en) * 1996-07-22 1998-06-09 Sun Microsystems, Inc. Arithmetic logic unit with improved critical path performance
US5852568A (en) * 1997-01-27 1998-12-22 S3 Incorporated System and method for a fast carry/sum select adder

Also Published As

Publication number Publication date
US6125381A (en) 2000-09-26

Similar Documents

Publication Publication Date Title
DE19653565A1 (de) Rekursiv aufgeteilter Addierer mit Übertrag-Auswahl
DE69435047T2 (de) Schaltung und Verfahren zur parallelen Addition und Mittelwertbildung
DE69731700T2 (de) Arithmetischer Schaltkreis und arithmetisches Verfahren
DE102020120371A1 (de) Integrierte schaltungen mit modularen multiplikationsschaltkreisen
DE3927009A1 (de) Addierschaltung
DE102020113922A1 (de) Multipliziererschaltungsanordnung mit reduzierter latenz für sehr grosse zahlen
DE3700991A1 (de) Digitaler uebertragsvorgriffsaddierer
DE112005001906B4 (de) Mehrbit-Addierer und Verfahren zum Propagieren, Generieren oder Killen von Carry-In-Bits entlang einer Carry-Kette
DE10124351A1 (de) Zeitlich selbstgesteuertes Übertragungssystem und Verfahren zum Verarbeiten von Mehrfachdatensätzen
DE1549508C3 (de) Anordnung zur Übertragsberechnung mit kurzer Signallaufzeit
DE3940897C2 (de) Schaltungsanordnung und Verfahren zur Berechnung digitaler Summen in einem Halbleiteraddierer mit Parallelübertrag
EP0383965A1 (de) Multiplizierwerk
DE4101004A1 (de) Paralleler multiplizierer mit sprungfeld und modifiziertem wallac-baum
DE10244738B3 (de) Vorrichtung und Verfahren zum Umsetzen und Addierer
EP0257362A1 (de) Addierer
DE3828290C2 (de)
DE10305849B3 (de) Carry-Ripple Addierer
DE3326388C2 (de)
DE3545433C2 (de)
DE10206830B4 (de) Verfahren und Anordnung zur Zusammenführung von Daten aus parallelen Datenpfaden
DE19632246C1 (de) Verfahren für eine Multiplikationsschaltung zur Multiplikation eines Multiplikanden und eines Multiplikators nach dem Booth-Verfahren in iterativen Schritten
DE10050589B4 (de) Vorrichtung und Verfahren zur Verwendung beim Durchführen einer Gleitkomma-Multiplizier-Akkumulier-Operation
DE10137457B4 (de) Verfahren zur Polynomberechnung mit 1-Bit Koeffizienten
DE60016527T2 (de) Ein Inkrementierer / Dekrementierer mit verringerter Ausgangsbelastungsarchitektur
DE10129033B4 (de) Programmierbarer Dividierer und sein Dividier-Verfahren

Legal Events

Date Code Title Description
OAV Applicant agreed to the publication of the unexamined application as to paragraph 31 lit. 2 z1
8122 Nonbinding interest in granting licences declared
8139 Disposal/non-payment of the annual fee