DE19653565A1 - Rekursiv aufgeteilter Addierer mit Übertrag-Auswahl - Google Patents
Rekursiv aufgeteilter Addierer mit Übertrag-AuswahlInfo
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods 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/50—Adding; Subtracting
- G06F7/505—Adding; Subtracting in bit-parallel fashion, i.e. having a different digit-handling circuit for each denomination
- G06F7/506—Adding; 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/507—Adding; 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
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03K—PULSE TECHNIQUE
- H03K17/00—Electronic switching or gating, i.e. not by contact-making and –breaking
- H03K17/51—Electronic switching or gating, i.e. not by contact-making and –breaking characterised by the components used
- H03K17/56—Electronic 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/687—Electronic 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/693—Switching 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.
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.
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.
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)
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)
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 |
-
1996
- 1996-12-20 DE DE19653565A patent/DE19653565A1/de not_active Withdrawn
-
1997
- 1997-12-03 US US08/984,572 patent/US6125381A/en not_active Expired - Fee Related
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 |