DE19614480C2 - Addierwerk mit einer Vorermittlung der führenden Nullstellen und Verfahren - Google Patents
Addierwerk mit einer Vorermittlung der führenden Nullstellen und VerfahrenInfo
- Publication number
- DE19614480C2 DE19614480C2 DE19614480A DE19614480A DE19614480C2 DE 19614480 C2 DE19614480 C2 DE 19614480C2 DE 19614480 A DE19614480 A DE 19614480A DE 19614480 A DE19614480 A DE 19614480A DE 19614480 C2 DE19614480 C2 DE 19614480C2
- Authority
- DE
- Germany
- Prior art keywords
- sum
- adder
- partial
- operands
- adders
- 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.)
- Expired - Fee Related
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/74—Selecting or encoding within a word the position of one or more bits having a specified value, e.g. most or least significant one or zero detection, priority encoders
-
- 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/483—Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
- G06F7/485—Adding; Subtracting
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computational Mathematics (AREA)
- Computing Systems (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Nonlinear Science (AREA)
- Complex Calculations (AREA)
Description
Die Erfindung betrifft die Ermittlung der führenden
Nullstellen einer Summe, insbesondere in Übertrag-Auswahl-
Addierern (Carry-Select-Adder).
Für eine schnelle Addition werden heute vorwiegend parallel
arbeitende Addierwerke, bestehend aus mehreren, miteinander
verbundenen, parallel arbeitenden Einzeladdierern verwandt.
Die stellenwertgleichen Stellen der miteinander zu
addierenden Operanden werden gleichzeitig und damit
schnellstmöglich verarbeitet. Der Zeitbedarf einer Addition
wird auf Kosten des Materialaufwandes, insbesondere des
Platzbedarfes (Chipfläche) verringert. Die Stelle, bei der
Schreibung einer Zahl, bedeutet den Platz, an dem eine
Ziffer steht. Stellenwertgleiche Stellen sind solche
Stellen mit der gleichen Position vor oder hinter dem Komma
einer Zahl bei gleichem Exponenten.
Parallel-Addierer bestehen häufig aus einer Vielzahl
paralleler, einzelner Übertrag-Auswahl-Addierer (Carry-
Select-Adder), wie sie im Stand der Technik bekannt sind.
Jeder Einzeladdierer addiert die stellenwertgleichen
Stellen der zu addierenden Operanden zu einer Einzel- oder
Teilsumme auf. Da zum Zeitpunkt des Addierens der einzelnen
Stellen, aufgrund des parallelen Addierens, noch nicht
feststeht, welche der Stellen noch einen Übertrag aus einer
vorangegangenen Stelle mitberücksichtigen muß, ermittelt
jeder Einzeladdierer das Ergebnis der Teilsumme einer
jeweiligen Stelle sowohl mit, als auch ohne
Berücksichtigung eines Übertrags. Erst nach Abschluß dieser
parallelen Einzeladditionen steht dann fest, welche der
Stellen einen Übertrag zu berücksichtigen hat, und mit
Hilfe des jeweiligen Übertrags wird nun das korrekte
Ergebnis jeder einzelnen Stellenaddition, das heißt mit
oder ohne Übertrag, ermittelt. In anderen Worten berechnet
jeder Teiladdierer sowohl eine Teilsumme mit einem Übertrag
als auch eine Teilsumme ohne einen Übertrag. Der innerhalb
der Gesamtaddition korrekte Wert der Teilsumme wird
anschließend mit Hilfe des ermittelten Übertrags
"ausgewählt" - daher auch der Name Übertrag-Auswahl-
Addierer.
In Gleitkomma-Prozessoren (Floating-Point-Processor) werden
2 Gleitkomma-Operanden miteinander addiert. Für die
Addition der Gleitkomma-Zahlen werden zunächst die
Exponenten der beiden Operanden gegeneinander ausgerichtet
(Alignment), so daß anschließend beide Operanden den
gleichen Exponenten aufweisen.
Operand A = +0,11864 × 105
Operand B = -0,96591 × 104
ausgerichtet:
Operand A = +0,11864 × 105
Operand A = +0,11864 × 105
Operand B = -0,09659 × 105
Anschließend werden zunächst die Mantissen der beiden
ausgerichteten Operanden miteinander addiert.
Dabei kann eine nicht vorherbestimmbare Anzahl von
führenden Nullstellen (zero digits) entstehen. Das Ergebnis
ist zu normalisieren, das heißt, die führenden Nullstellen
(leading zero digits) sind zu zählen, die Mantisse
entsprechend der führenden Nullstellen nach links zu
verschieben, und vom Exponenten muss die Anzahl der führenden
Nullstellen abgezogen werden.
Bei den im Stand der Technik bekannten Addierwerken wird
zunächst die Summe der gegeneinander ausgerichteten Mantissen
der Operanden gebildet. Von dieser Summe werden in einem
anschließenden Schritt die Anzahl der führenden Nullstellen
ermittelt und die Summe entsprechend dieser führenden
Nullstellen normalisiert. Dieses Zählen der führenden
Nullstellen ist jedoch im Ablauf eines Zyklus vielfach noch
zeitkritischer als das Ergebnis der Mantissen-Addition und
verlangsamt so den gesamten Addiervorgang.
Fig. 1 zeigt ein Addierwerk 5 gemäß dem Stand der Technik.
Die beiden Operanden A und B werden in dem Addierwerk 5 zu
einer Summe S = A + B addiert und die Summe S wird von dem
Addierwerk 5 an dessen Ausgang gestellt. Ein Zähler 10
ermittelt aus der Summe S die Anzahl der führenden
Nullstellen und gibt diese als einen Wert ZDC (Zero Digit
Count) aus. Die Mantisse der Summe S wird entsprechend der
Anzahl der führenden Nullstellen ZDC nach links verschoben,
und vom Exponenten der Summe wird die Anzahl der führenden
Nullstellen ZDC abgezogen.
Aus US 5,204,825 ist ein Verfahren und eine Vorrichtung zur
Vorhersage von führenden Nullstellen in Gleitkomma-
Addierwerken bekannt. Danach findet eine Architektur
Verwendung, die die Vorhersage führender Nullstellen durch
ein parallel zur eigentlichen Berechnung ablaufendes
Verfahren ermöglicht, wobei zur Ermittlung eines korrekten
Ergebnisses ein Übertragssignal von der Hauptrecheneinheit
verwendet wird.
Aus US 53 17 527 ist ein System zur Vorhersage der
Bitposition einer führenden Nullstelle bekannt, das parallel
zum Addierwerk arbeitet, und wobei die führende Stelle durch
eine Art Mustervergleich ermittelt wird. Die genaue Anzahl
der führenden Nullstellen ist zu der Zeit, da das Addierwerk
die Summe berechnet, nicht bekannt.
Es ist Aufgabe der Erfindung ein Addierwerk zu schaffen, das
ein schnelleres Ermitteln einer normalisierten Summe
ermöglicht.
Es ist weiterhin Aufgabe der Erfindung ein Addierwerk zu
schaffen, das ein schnelleres Ermitteln der Anzahl der
führenden Nullstellen einer Summe ermöglicht. Zwei
Gleitkommazahlen können dadurch schneller addiert werden.
Die Aufgaben der Erfindung werden durch Vorrichtungen und
Verfahren, so wie in den unabhängigen Ansprüchen
beschrieben, gelöst.
Die Erfindung ermöglicht eine Ermittlung der führenden
Nullstellen der Summe einer Addition in etwa zeitgleich zur
Ermittlung der Summe. Dies geschieht durch ein paralleles
Ermitteln von Teilsummen der einzelnen Stellen unter
Berücksichtigung möglicher Überträge und, ausgehend von
diesen, einem Vorermittlen potentieller Nullstellen bzw.
auch potentieller führender Nullstellen, die dann
schließlich, bei Feststehen des korrekten Wertes einer
Teilsumme, ausgewählt und eventuell durch einen
nachfolgenden Schritt, mit dem Ergebnis der führenden
Nullstellen der Gesamtsumme, ausgewertet werden.
Die erfindungsgemäße Ermittlung der führenden Nullstellen
in einem Addierwerk läßt sich entweder streng parallel oder
parallel mit einer hierarchischen, jeweils selbstähnlichen
Struktur einer erfindungsgemäßen Vorrichtung, durchführen.
Dies ermöglicht ein optimal paralleles und entsprechend
zeitgünstiges Ermitteln der normalisierten Summe.
Die erfindungsgemäße Ermittlung der führenden Nullstellen
findet vorzugsweise Verwendung in Addierwerken, Gleitkomma-
Recheneinheiten und/oder in Datenverarbeitungsanlagen.
Weitere, vorteilhafte Ausführungen der Erfindung finden
sich in den Unteransprüchen.
Zur näheren Erläuterung der Erfindung sind im folgenden
Ausführungsbeispiele mit Bezugnahme auf die Zeichnungen
beschrieben. Funktionsgleiche Elemente sollen gleiche
Bezugszeichen tragen.
Fig. 1 zeigt ein Addierwerk gemäß dem Stand der Technik,
Fig. 2 zeigt ein erfindungsgemäßes Addierwerk,
Fig. 3 zeigt ein Addierwerk gemäß Fig. 2, das neben den
beiden Operanden A und B noch einen Übertrag C
zum Eingang hat,
Fig. 4 zeigt den Aufbau eines Addierwerkes mit einer
großen Stellenbreite und einer Aufteilung in eine
Vielzahl paralleler Teil-Addierwerke,
Fig. 5 zeigt für das Beispiel des 16 + 16 Addierwerkes
ein binäres Addierwerk,
Fig. 6 zeigt für das Beispiel eines 64 + 64 Addierwerkes
ein binäres Addierwerk,
Fig. 7 zeigt ein Teiladdierblock aus Fig. 6,
Fig. 8 zeigt ein Digit Preselect Block aus Fig. 6.
Fig. 2 zeigt ein erfindungsgemäßes Addierwerk 20, worin
bereits eine Ermittlung der führenden Nullstellen im
wesentlichen parallel zur Ermittlung der Gesamtsumme
stattfindet. Das Addierwerk 20 besteht aus einer Vielzahl
zueinander paralleler Addierer 30A, 30B, 30C, usw. die
jeweils Teiloperanden A0, A1, A2, usw. und B0, B1, B2, usw.
der zu addierenden Operanden A und B miteinander zu
Teilsummen S0, S1 und S2 addieren. Jeder der Addierer 30A,
30B und 30C addiert jeweils stellenwertgleich eine der
Stellen der Operanden A und B, wobei jede Stelle aus einer
Vielzahl von Bits bzw. Leitungen bestehen kann. Im Falle
einer hexadezimalen Addition würde jede einzelne Hex-Stelle
aus 4 Bit-Leitungen bestehen.
Der Addierer 30A erhält als Eingang die niederwertigste
Stelle A0 und B0 der Operanden A und B, während die
Addierer 30B, 30C, usw. die höherwertigeren Stellen der
Operanden A und B zum Eingang haben. Wie bereits oben
beschrieben, kann bei jeder Stelle ein Übertrag auftreten,
der für die Addition der jeweilig höherwertigeren Stellen
mit zu berücksichtigen ist. Um die Parallelität der
Einzeladdition zu gewährleisten, ermittelt jeder der
höherwertigen Addierer 30B, 30C, usw., neben der Summe S1,
S2, usw. der jeweiligen Stellenaddition, auch eine Summe
(S1 + 1), (S2 + 1), usw. zur Berücksichtigung eines
möglichen Übertrags aus einer vorangegangenen Stelle. Der
niederwertigste Addierer 30A stellt an seinen Ausgang die
Summe S0, während die höherwertigen Addierer 30B, 30C, usw.
sowohl die Summe S1, S2, usw. als auch die Summe (S1 + 1),
(S2 + 1), usw. als Ausgang haben.
Jede der ermittelten Teilsummen S0, S1, S2, usw., sowie die
einen möglichen Übertrag berücksichtigenden Teilsummen (S1
+ 1), (S2 + 1), usw., werden einer nachstehenden, hier
nicht weiter ausgeführten, im Stand der Technik ausreichend
bekannten, Stufe 35 zur Ermittlung der Gesamtsumme S
zugeführt. Parallel dazu werden diese Teilsummen, sowohl
mit als auch ohne Berücksichtigung eines Übertrags, jeweils
einem ODER-Glied mit negierten Ausgang (NOR) 40 zugeführt.
Jedes dieser NOR-Glieder 40 liefert an seinem Ausgang dann
eine logische '1', wenn die jeweilige anliegende Summe S0,
S1, S2, usw., bzw. die Summe mit Berücksichtigung eines
Übertrages (S1 + 1), (S2 + 1), usw. gleich null ist. Wird
beispielsweise eine hexadezimale Kodierung der Stellen
gewählt, besteht jede der Summen aus 4 Bitleitungen, die
jeweils einer der NOR-Glieder 40 als Eingang dienen.
Die Ausgänge der NOR-Glieder 40 für jeweils einen der
höherwertigen Addierer 30B, 30C usw. werden jeweils einem
Selektor 50B, 50C, usw. zugeführt. So werden die Ausgänge
der NOR-Glieder 40B0 und 40B1 des Addierers 30B dem
Selektor 50B, die Ausgänge der NOR-Glieder 40C0 und 40C1
des Addierers 30C dem Selektor 50C, usw. zugeführt. Jeder
der Selektoren 50B, 50C, usw. dient zur Auswahl, ob jeweils
die Summe S1, S2, usw. oder die Summe S1 + 1, S2 + 1, usw.
zu verwenden ist. Gesteuert werden diese Selektoren 50
durch einen Selektierblock 60, wie er bei Übertrag-Auswahl-
Addieren zur Auswahl der jeweiligen korrekten Teilsumme
üblich ist.
Der Ausgang des NOR-Gliedes 40A0 der niederwertigsten
Stelle sowie die Ausgänge der Selektoren 50 der
höherwertigeren Stellen, dienen als Eingänge für eine
Zähldekodierlogik 70. Die Zähldekodierlogik 70 ermittelt
hieraus die Anzahl der führenden Nullstellen ZDC des
Gesamtergebnisses S der Addition der Operanden A und B und
stellt diese an ihren Ausgang. Dies geschieht vorzugsweise
durch eine Umsetzung von Bool'schen Gleichungen, die sich
aus einer Wahrheitstabelle ergeben, die die verschiedenen
Kombinationsmöglichkeiten der Eingangssignale - hier die
Informationen, ob eine einzelne Stelle eine Nullstelle ist -
und deren Umsetzung in gewünschte Ausgangssignale - hier
die Anzahl der führenden Nullstellen ZDC - repräsentieren.
Diese Bool'schen Gleichungen werden in entsprechende
Schaltungs- (Hardware) Verknüpfungen umgesetzt (siehe dazu
untenstehende Beispiele).
Der ZDC wird von der Zähldekodierlogik 70 vorzugsweise mit
Hilfe einer Dekodier-Tabelle kodiert ausgegeben. Der ZDC
stellt dann beispielsweise den binärkodierten Wert der
Anzahl der führenden Nullen der Summe S dar. Bei einer
Summe S von 4 Stellen ergibt das 2 binäre Bits, bei 8
Stellen 3 binäre Bits usw.
Mit dem erfindungsgemäßen Addierwerk entsprechend Fig. 2,
werden die Anzahl der führenden Nullstellen also nicht aus
der Gesamt-Summe S der Operanden A und B ermittelt, sondern
bereits schon aus den Teilsummen S0, S1, S2, usw. der
jeweiligen stellenwertgleichen Teiladdition der einzelnen
Stellen. Dies ermöglicht erfindungsgemäß eine Ermittlung
der Anzahl der führenden Nullen ZDC in etwa gleichzeitig
mit der Ermittlung der Gesamtsumme S, abhängig insbesondere
von der Addierwerkbreite und von der Stellenwertigkeit des
jeweiligen ZDC Bits. Die Gesamtsumme S kann danach
unmittelbar normalisiert werden, d. h. die führenden
Nullstellen können entfernt werden.
Diese Eigenschaft der in etwa gleichzeitigen Ermittlung der
Anzahl der führenden Nullen ZDC mit der Ermittlung der
Gesamtsumme S, ist z. B. bei einer Anwendung in schnellen
Gleitkomma-Recheneinheiten von Vorteil, worin die Addition
vorzugsweise innerhalb eines Taktes geschehen soll. In der
Restzeit des Taktes kann die Anzahl der führenden
Nullstellen ZDC verwendet werden, um die Normalisierung der
Gleitkomma-Rechenoperation durchzuführen. Dazu muß der ZDC
vom Exponenten des Summe S subtrahiert werden, bzw die
Summe S um den ZDC Betrag nach links geschoben werden. Auch
wenn die Normalisierung ganz oder teilweise im nächsten
Takt ausgeführt wird (abhängig von einer vorliegenden
Pipelinestruktur), ist es von Vorteil, wenn der ZDC
möglichst frühzeitig bekannt ist. In beiden Fällen ist eine
Verkürzung der Taktzeit möglich.
Vielfach muß bei einem Addierwerk gemäß Fig. 2 noch ein
Übertrag C (Carry), z. B. aus einem parallelen Addierwerk
mit niederwertigeren Stellen, mitberücksichtigt werden.
Fig. 3 zeigt ein Addierwerk gemäß Fig. 2, das neben den
beiden Operanden A und B noch einen Übertrag C zum Eingang
hat. Das Addierwerk 20 gemäß Fig. 3 beinhaltet, neben den
entsprechenden Komponenten des Addierwerkes 20 gemäß Fig.
2, für den Addierer 30A der niederwertigsten Stelle einen
weiteren Ausgang der eine Summe (S0 + 1) liefert, sowie
eine damit verbundene weitere NOR-Stufe 40A1 und einen
weiteren, mit den beiden NOR-Gliedern 40A0 und 40A1
verbundenen Selektor 50A. Der zu berücksichtigende Übertrag
C wird dem Selektionsblock 60 als Eingang zugeführt. Wie
aus Fig. 3 zu entnehmen ist, ist bei dieser Ausführungsform
der Aufbau der Addierer 30, NOR-Glieder 40 und Selektoren
50 für jede Stelle entsprechend aufgebaut.
Es ist zu verstehen, daß die in Fig. 2 und 3 gewählte
Anordnung der NOR-Glieder 40 und der Selektoren 50 in
dieser Reihenfolge, zuerst das NOR-Glied 40 und dann der
Selektor 50, nicht zwingend ist, jedoch in Bezug auf das
zeitliche Verhalten der Signale die günstigsten
Eigenschaften aufweist. Da die Auswahlsignale des
Selektierblocks 60 erst mit einer gewissen Zeitverzögerung
erzeugt werden können, die Summen S0, S0 + 1, S1, S1 + 1,
usw. jedoch bereits vielfach schon vor diesen
Auswahlsignalen vorliegen, läßt sich die erforderliche
Erkennung einer jeweiligen Nullstelle durch die jeweiligen
NOR-Glieder 40 bevorzugt, wie in Fig. 2 und 3, bereits vor
der Auswahl durch die Selektoren 50 durchführen.
Weiterhin ist zu verstehen, daß die Erfindung nicht auf die
Verwendung von NOR-Gliedern 40 beschränkt ist. Statt dessen
lassen sich beliebige Nullstellenerkennungsmittel 40 zur
Erkennung, ob die jeweilig anliegende Teilsumme an dem
betrachteten Ausgang eine Nullstelle repräsentiert,
verwenden. So könnte, beispielsweise bei einer umgekehrten
Logik, ein UND Glied mit Inverterierung (NAND) verwendet
werden.
Bei Addierwerken mit einer großen Stellenbreite, z. B. einem
Addierwerk mit 16 Stellen, wobei jede Stelle beispielweise
einen Hexadezimal-Wert mit je 4 Bits darstellt, also
insgesamt einem 64 Bit Addierwerk, ist es vielfach nicht
sinnvoll, nur ein Addierwerk 20, z. B. gemäß Fig. 2 oder 3,
mit 16 Addierern zu verwenden. Dies ergibt sich daraus, daß
ein endgültiger Übertrag (Carry) zu einer Stelle erst
relativ spät im zeitlichen Ablauf feststeht. Um die
Zähldekodierlogik nach Erhalt der endgültigen Überträge
möglich schnell ausführen zu können (d. h. mit möglich
wenigen logischen Stufen), ist die Zeit vorher zu nutzen
und eine Vordekodierung durchzuführen.
Günstiger, bei Addierwerken mit einer großen Stellenbreite
z. B. ab 8 Stellen, ist eine vorzugsweise hierarchische
Aufteilung in eine Vielzahl paralleler Teil-Addierwerke,
mit jeweiliger Ermittlung der führenden Nullstellen in
einem dieser Teil-Addierwerke, und einer nachgeschalteten
Gesamt-Zähldekodierlogik zur endgültigen Ermittlung der
führenden Nullstellen ZDC der gesamten Summe. Die Funktion
des Blockes 70 ist dann in eine Vordekodierung und eine
Enddekodierung aufgeteilt. Dadurch kann die Enddekodierung
schneller erfolgen, während die Vordekodierung in der Zeit
abläuft, die ohnehin für die Ermittlung der Überträge
(Carry In Signale) benötigt wird. Die Vordekodierung
benötigt also keine zusätzliche Zeit. Diese Vordekodierung
ist auf die jeweiligen Teiladdierblöcke verteilt und muß
dort doppelt durchgeführt werden. Die gültigen
Vordekodierungssignale werden dann durch den Übertrag
(Carry In) für den jeweiligen Teiladdierblock ausgewählt.
Fig. 4 zeigt den Aufbau eines Addierwerkes 120 mit einer
großen Stellenbreite und einer Aufteilung in eine Vielzahl
paralleler Teil-Addierwerke. Als Eingänge weist das
Addierwerk 120 neben den Operanden A und B einen optionalen
Übertragseingang C und als Ausgänge die Summe S = A + B und
die Anzahl der führenden Nullstellen ZDC auf. Die Operanden
A und B sind in eine Vielzahl von Teiloperanden A(0) und
B(0), A(1) und B(1), A(2) und B(2), usw. aufgeteilt, die
jeweils eine Vielzahl von einzelnen Stellen repräsentieren.
Das Addierwerk 120 weist eine Vielzahl paralleler Teil-
Addierwerke 20 auf, wobei jeweils 2 Teil-Addierwerke 20
stellengleiche Teiloperanden A(0) und B(0), A(1) und B(1),
A(2) und B(2), usw. zum Eingang haben. Weiterhin erhält ein
Teil-Addierwerk 20 jeder der stellengleichen Teil-
Addierwerk-Paare als Eingang ein Übertragssignal Ü, während
das andere Teil-Addierwerk 20 kein Übertragssignal erhält.
Bei Erhalt des optionalen Übertrags C sind alle Teil-
Addierwerke 20 gemäß Fig. 3 aufgebaut.
Jedes der Teil-Addierwerke 20 mit einem Übertragssignal Ü =
"0" ermittelt aus seinem jeweiligen Eingang A(0) und B(0),
A(1) und B(1), A(2) und B(2), usw. entsprechend dem im
vorangehenden geschilderten, eine Teilsumme SX(0), SX(1),
SX(2), usw., sowie die Anzahl der führenden Nullstellen
ZDX(0), ZDX(1), ZDX(2), usw. der jeweiligen Teilsummen
SX(0), SX(1), SX(2), usw. Analog ermittelt jedes der Teil-
Addierwerke 20 mit Übertragssignal Ü = "1"' aus seinem
jeweiligen Eingang A(0) und B(0), A(1) und B(1), A(2) und
B(2), usw. und dem Übertragssignal Ü, entsprechend dem im
vorangehenden geschilderten, eine Teilsumme SY(0), SY(1),
SY(2), usw., sowie die Anzahl der führenden Nullstellen
ZDY(0), ZDY(1), ZDY(2), usw. der jeweiligen Teilsummen
SY(0), SY(1), SY(2), usw.
Die Teilsummen SX(0), SX(1), SX(2), SY(0), SY(1), SY(2),
usw. werden einer nachstehenden, hier nicht weiter
ausgeführten, im Stand der Technik ausreichend bekannten,
Stufe 135 zur Ermittlung der Gesamtsumme S zugeführt.
Parallel dazu werden die Anzahl der führenden Nullstellen,
sowohl mit als auch ohne Berücksichtigung eines
Übertragssignals, für jeweils einen der Teil-Addierer-Paare
jeweils einem Selektor 150 zugeführt. Jeder der Selektoren
150 dient zur Auswahl, ob jeweils die Anzahl der führenden
Nullstellen ZDX(0), ZDX(1), ZDX(2), usw. der jeweiligen
Teilsummen SX(0), SX(1), SX(2), usw. oder die Anzahl der
führenden Nullstellen ZDY(0), ZDY(1), ZDY(2), usw. der
jeweiligen Teilsummen SY(0), SY(1), SY(2), usw. zu
verwenden ist. Gesteuert werden diese Selektoren 150 durch
einen Selektierblock 160, wie er bei Übertrag-Auswahl-
Addieren üblich ist.
Die jeweils ausgewählten führenden Nullstellen werden von
den Selektoren 150 einer Gesamt-Zähldekodierlogik 170
zugeführt. Die Gesamt-Zähldekodierlogik 110 ermittelt
hieraus die Anzahl der führenden Nullstellen ZDC des
Gesamtergebnisses S der Addition der Operanden A und B und
stellt diese Anzahl der führenden Nullstellen ZDC an ihren
Ausgang. Dies geschieht analog dem für die
Zähldekodierlogik 70 geschilderten.
Ohne optionalen Übertrag C reicht für das Teil-Addierwerk
mit den niederwertigsten Stellen auch ein Aufbau gemäß Fig.
2, auch ist dann kein Teil-Addierwerk-Paar, sondern nur ein
einzelnes Teil-Addierwerk 20 für die niederwertigste Stelle
notwendig. Auch entfällt dann der entsprechende Selektor
150.
Der in Fig. 4 gezeigte hierarchische Aufbau eines
Addierwerkes läßt sich nun beliebig weiter, rekursiv
gestalten. In einer nächsten, höheren Hierarchiestufe
würden die Addierwerke 20 aus Fig. 4 durch Addierwerke 120
ersetzt werden. Durch wiederholte Komposition niedriger
integrierter Elemente zur Erzeugung höher integrierter
Schaltungen, beispielsweise Verknüpfung von Addierwerken 20
zu höherintegrierten Addierwerken 120 usw., lassen sich
durch Fortführung dieses Selbstähnlichkeitsprozesses
hochkomplexe Schaltwerke realisieren, die eine zeitgünstige
Ermittlung der führenden Nullstellen der Gesamtsumme in
etwa parallel zur Ermittlung dieser Summe ermöglichen. Da
bleibt der prinzipielle Aufbau, so wie in Fig. 4 gezeigt,
gleich.
So wird beispielsweise bei einem binären Addierwerk mit 64
Stellen, im Vergleich zu einem Addierwerk mit 16 Stellen,
eine weitere Hierarchiestufe benötigt. Dies läßt sich
weiter fortsetzen, so daß bei einer Vervierfachung der
Addierwerksbreite jeweils eine weitere Hierarchiestufe
einzuführen ist.
Es ist zu verstehen, daß bei einem hierarchischen,
selbstähnlichen Aufbau eines Addierwerkes sich
Vereinfachungs- und Zusammenlegungsmöglichkeiten in der
Implementierung der Schaltungen ergeben können. So können
bei einer Realisierung die jeweiligen Teil-Addierwerk-Paare
zusammengefaßt werden, da Teile der beiden Addierwerke
gemeinsam benutzt werden können. Dies wird auch aus den
nachfolgenden Beispielen ersichtlich.
Die folgenden Ausführungsbeispiele sollen die Erfindung
durch konkrete Ausgestaltung erläutern, ohne daß die
Erfindung auf diese begrenzt ist. Bei der gewählten
Bezeichnungsweise der Operanden und Werte sei die Bitbreite
jeweils in Klammern angegeben, d. h. der Operand A(0. .63)
hat hier im Beispiel eine Bitbreite von 0 bis 63, also 64
Bit. In den Ausführungsbeispielen stellen, im Gegensatz zur
Darstellung wie im vorangegangenen, A(0) das
höchstwertigste und A(63) das niederwertigste Bit dar.
Im Beispiel wird zuerst ein erfindungsgemäßes 16 + 16 Bit
Addierwerk und anschließend ein Addierwerk mit 64 + 64 Bit
gezeigt, jedoch läßt sich die Erfindung auch auf
Addierwerke mit anderer Datenbreite (wie z. B. 32, 128, 256,
usw.) anwenden.
Fig. 5 zeigt für das Beispiel des 16 + 16 Addierwerkes ein
binäres Addierwerk mit den Eingangsoperanden A(0. .15) und
B(0. .15). Der Ergebnis Operand SUM(0. .15) stellt die Summe
aus der Operation A + B dar. Zusätzlich wird die Anzahl der
führenden Nullstellen ZDC(0. .1) ermittelt. Eine Stelle
(Digit) besteht aus 4 Bits und kann die hexadezimalen Werte
{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F} annehmen.
Die Summe besteht aus 16 Bits oder 4 Stellen. Der ZDC sei
binärkodiert, besteht aus 2 Bits, und kann die, den
hexadezimalen Werten entsprechenden, Dezimalwerte 0 bis 4
annehmen. Es stellen in Fig. 5 dar:
A(0. .15) Operand A
B(0. .5) Operand B
CI Carry_In für Addierwerk als Ganzes
G Generate für einzelne Binärstellen
P Propagate für einzelne Binärstellen
GD Generate für Digit (4 bit)
PD Propagate für Digit (4 bit)
QD Generate or Propagate für Digit (4 bit)
SN Summe Normal ohne Carry In (A + B)
SP Summe Plus_1 mit Carry In (A + B + 1)
ZDN Zero Digit ohne Carry In (A + B)
ZDP Zero Digit mit Carry In (A + B + 1)
DS Digit Select für Digit
ZDC Zero Digit Count "Gezählte führende Nullen"
B(0. .5) Operand B
CI Carry_In für Addierwerk als Ganzes
G Generate für einzelne Binärstellen
P Propagate für einzelne Binärstellen
GD Generate für Digit (4 bit)
PD Propagate für Digit (4 bit)
QD Generate or Propagate für Digit (4 bit)
SN Summe Normal ohne Carry In (A + B)
SP Summe Plus_1 mit Carry In (A + B + 1)
ZDN Zero Digit ohne Carry In (A + B)
ZDP Zero Digit mit Carry In (A + B + 1)
DS Digit Select für Digit
ZDC Zero Digit Count "Gezählte führende Nullen"
Tabelle 1 zeigt die Zuordnung der ZDC Bits abhängig von der
Summe:
Als weiteren Eingang erhält das Addierwerk gemäß Fig. 5 ein
Carry_In (CI) Signal. Wird dieses mit einer (logischen) "1"
beschaltet, so erhält man die Summe A + B + 1. Ist CI = "0"
erhält man die Summe A + B. Es können auch weitere Ausgänge
verwendet werden, die hier nicht aufgeführt sind (z. B.
Carry Out, Result Zero, usw.).
Das Addierwerk nach Fig. 5 besteht aus 4 Teiladdierblöcken,
die jeweils 4 + 4 Bit addieren und auch vorkodierte Signale
ZDN0, ZDN1, ZDN2, ZDN3, ZDP0, ZDP1, ZDP2, ZDP3 zur
Ermittlung der führenden Nullstellen ZDC erzeugen.
Aus diesen vorkodierten ZDC Signalen werden durch 2-stufige
Logik die Ausgangssignale ZDC(0) und ZDC(1) erzeugt. Die
Bool'schen Gleichungen dafür lauten:
ZDC(0) = ZD0 . ZD1
ZDC(1) = ZD0 .ˆZD2 + ZD0 . ZD2
wobei:
. eine UND-Verknüpfung,
+ eine ODER-Verknüpfung und
ˆ eine NICHT-Verknüpfung (Invertierung)
darstellt.
ZDC(1) = ZD0 .ˆZD2 + ZD0 . ZD2
wobei:
. eine UND-Verknüpfung,
+ eine ODER-Verknüpfung und
ˆ eine NICHT-Verknüpfung (Invertierung)
darstellt.
Die Zähldekodierlogik des 16 Bit Addierwerkes in Fig. 5
besteht in diesem Fall aus einer AND-Verknüpfung für ZDC(0)
und einer zwei-stufigen Logik für ZDC(1) wie in Fig. 5
gezeigt.
Fig. 6 zeigt für das Beispiel eines 64 + 64 Addierwerkes
ein binäres Addierwerk mit den Eingangsoperanden A(0. .63)
und B(0. .63). Der Ergebnis Operand SUM(0. .63) stellt die
Summe aus der Operation A + B dar. Zusätzlich wird die Anzahl
der führenden Nullstellen ZDC(0. .3) ermittelt. Eine Stelle
(Digit) besteht aus 4 Bits und kann die hexadezimalen Werte
{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F} annehmen.
Die Summe besteht aus 64 Bits oder 16 Stellen. Der ZDC sei
binärkodiert, besteht aus 4 Bits, und kann die, den
hexadezimalen Werten entsprechenden, Dezimalwerte 0 bis 15
annehmen. Es zeigen in Fig. 6:
A(0. .63) Operand A
B(0. .63) Operand B
CI Carry_In für Addierwerk als Ganzes
CI_B Carry_In Block für 16 bit Block (4 digit)
GB Generate Block für 16 bit Block (4 digit)
PB Propagate Block für 16 bit Block (4 digit)
ZDJ Precounted Zero Digit 4 Zero Digits in 16 bit Block
ZDK Precounted Zero Digit 1 oder 3 Zero Digits in Block
ZDL Precounted Zero Digit 2 oder 3 Zero Digits in Block
SUM(0. .63) Summe
B(0. .63) Operand B
CI Carry_In für Addierwerk als Ganzes
CI_B Carry_In Block für 16 bit Block (4 digit)
GB Generate Block für 16 bit Block (4 digit)
PB Propagate Block für 16 bit Block (4 digit)
ZDJ Precounted Zero Digit 4 Zero Digits in 16 bit Block
ZDK Precounted Zero Digit 1 oder 3 Zero Digits in Block
ZDL Precounted Zero Digit 2 oder 3 Zero Digits in Block
SUM(0. .63) Summe
Tabelle 2 zeigt die Zuordnung der ZDC Bits abhängig von der
Summe:
Als weiteren Eingang erhält das Addierwerk gemäß Fig. 6 ein
Carry_In (CI) Signal. Wird dieses mit einer (logischen) "1"
beschaltet, so erhält man die Summe A + B + 1. Ist CI = "0"'
erhält man die Summe A + B. Es können auch weitere Ausgänge
verwendet werden, die hier nicht aufgeführt sind (z. B.
Carry Out, Result Zero, usw.).
Das Addierwerk nach Fig. 6 besteht aus 4 Teiladdierblöcken,
die jeweils 16 + 16 Bit addieren und auch vorkodierte Signale
ZDJ0, ZDJ1, ZDJ2, ZDJ3, ZDK0, ZDK1, ZDK2, ZDK3, ZDL0, ZDL1,
ZDL2, ZDL3 zur Ermittlung der führenden Nullstellen ZDC
erzeugen. Ein solcher Teiladdierblock ist in Fig. 7
gezeigt.
Aus diesen vorkodierten ZDC Signalen werden durch 2-stufige
Logik die Ausgangssignale ZDC(0), ZDC(1), ZDC(2) und ZDC(3)
erzeugt. Die Bool'schen Gleichungen dafür lauten:
ZDC(0) = ZDJ0 . ZDJ1
ZDC(1) = ZDJ0 .ˆZDJ1 + ZDJ0 . ZDJ2
ZDC(2) = ZDK0
+ ZDJ0 . ZDK1
+ ZDJ0 . ZDJ1 . ZDK2
+ ZDJ0 . ZDJ1 . ZDJ2 . ZDK3
ZDC(3) = ZDL0
+ ZDJ0 . ZDL1
+ ZDJ0 . ZDJ1 . ZDL2
+ ZDJ0 . ZDJ1 . ZDJ2 . ZDL3
ZDC(1) = ZDJ0 .ˆZDJ1 + ZDJ0 . ZDJ2
ZDC(2) = ZDK0
+ ZDJ0 . ZDK1
+ ZDJ0 . ZDJ1 . ZDK2
+ ZDJ0 . ZDJ1 . ZDJ2 . ZDK3
ZDC(3) = ZDL0
+ ZDJ0 . ZDL1
+ ZDJ0 . ZDJ1 . ZDL2
+ ZDJ0 . ZDJ1 . ZDJ2 . ZDL3
Die Teiladdierblöcke enthalten auch Generate und Propagate
Signal Ausgänge GB0, GB1, GB2, GB3, PB0, PB1, PB2, PB3, wie
sie bei Verwendung von Carry Select Addierwerken üblich
sind. Diese Generate und Propagate Signal werden im Block
Prop-Gen-3.Stufe verknüpft und daraus die Carry In Signale
CI_B0, CI_B1, CI_B2 und CI_B3 für den jeweiligen
Teiladdierblock erzeugt.
Das Carry In Signal nach Teiladdierblock 0 ist identisch
zum Carry In des Gesamtaddierwerkes CI. Die Bool'sche
Gleichung für die Carry In Signale der jeweiligen
Teiladdierblöcke lauten:
CI_B0 := GB1
+ PB1 . GB2
+ PB1 . PB2 . GB3
+ PB1 . PB2 . PB3 . CI
CI_B1 := GB2
+ PB2 . GB3
+ PB2 . PB3 . CI
CI_B2 := GB3
+ PB3 . CI
CI_B3 := CI
+ PB1 . GB2
+ PB1 . PB2 . GB3
+ PB1 . PB2 . PB3 . CI
CI_B1 := GB2
+ PB2 . GB3
+ PB2 . PB3 . CI
CI_B2 := GB3
+ PB3 . CI
CI_B3 := CI
Diese Verknüpfung ist in 2-stufiger Logik realisierbar.
Fig. 7 zeigt einen Teiladdierblock des erfindungsgemäßen
Beispiels. Er hat die Operanden-Eingänge A(0. .15) und
B(0. .15), sowie den Carry In Eingang CI_B, der vom
Main-Prop-Generate Block erzeugt wird. Es zeigen in Fig. 7:
G Generate für einzelne Binärstellen
P Propagate für einzelne Binärstellen
GD Generate für Digit (4 bit)
PD Propagate für Digit (4 bit)
QD Generate or Propagate für Digit (4 bit)
SN Summe Normal ohne Carry In (A + B)
SP Summe Plus_1 mit Carry In (A + B + 1)
SX Summe im Fall CI_B = 0
SY Summe im Fall CI_B = 1
ZDN Zero Digit ohne Carry In (A + B)
ZDP Zero Digit mit Carry in (A + B + 1)
ZDX Zero Digit im Fall CI_B = 0
ZDY Zero Digit im Fall CI_B = 1
DS_X Digit Select für Digit im Fall CI_B = 0
DS_Y Digit Select für Digit im Fall CI_B = 1
ZDJ Precounted Zero Digit 4 Zero Digits in 16 bit Block
ZDK Precounted Zero Digit 1 oder 3 Zero Digits in Block
ZDL Precounted Zero Digit 2 oder 3 Zero Digits in Block
P Propagate für einzelne Binärstellen
GD Generate für Digit (4 bit)
PD Propagate für Digit (4 bit)
QD Generate or Propagate für Digit (4 bit)
SN Summe Normal ohne Carry In (A + B)
SP Summe Plus_1 mit Carry In (A + B + 1)
SX Summe im Fall CI_B = 0
SY Summe im Fall CI_B = 1
ZDN Zero Digit ohne Carry In (A + B)
ZDP Zero Digit mit Carry in (A + B + 1)
ZDX Zero Digit im Fall CI_B = 0
ZDY Zero Digit im Fall CI_B = 1
DS_X Digit Select für Digit im Fall CI_B = 0
DS_Y Digit Select für Digit im Fall CI_B = 1
ZDJ Precounted Zero Digit 4 Zero Digits in 16 bit Block
ZDK Precounted Zero Digit 1 oder 3 Zero Digits in Block
ZDL Precounted Zero Digit 2 oder 3 Zero Digits in Block
Als Ausgang (Output) liefert der Teiladdierblock die
Signale GB und PB, die Summe SUM(0. .15), sowie Signale, die
die vorberechnete Anzahl der führenden Nullstellen
(Precounted Zero Digits Signale) darstellen: ZDJ, ZDK und
ZDL. Da das Carry In Signal CI_B zeitlich noch nicht
verfügbar ist, werden zunächst die potentiellen Signale
DS_X0, DS_X1, DS_X2 (für den Fall CI_B = 0) und DS_Y0, DS_Y1,
DS_Y2 (für den Fall CI_B = 1) erzeugt. Dies geschieht im
Digit Preselect Block (Fig. 8).
Aus den potentiellen Summen SN (SUM normal: A + B) und SP
(SUM plus_1: A + B + 1) werden zunächst die potentiellen
Nullstellen ZDN0, ZDN1, ZDN2, ZDN3 (von Summe SN: A + B) und
ZDP0, ZDP1, ZDP2, ZDP3 (von Summe SP: A + B + 1) erzeugt. Dafür
genügt eine einfache NOR Verknüpfung mit 4 Eingängen, wie
in Fig. 7 gezeigt. Mit den Auswahl (Select) Signalen DS_Xi
und DS_Yi (i = 0, 1, 2) werden daraus die ZDC Signale ZDX0,
ZDX1, ZDX2, ZDX3 (für den Fall CI_B = 0) und ZDY0, ZDY1,
ZDY2, ZDY3 (für den Fall CI_B = 1) erzeugt.
Aus diesen Signalen wird mit der in Fig. 7 gezeigten Logik
die Signale ZDXJ, ZDXK, ZDXL (für den Fall CI_B = 0) und
ZDYJ, ZDYK, ZDYL (für den Fall CI_B = 1) erzeugt. Diese
Signale sind "vorkodiert" um die spätere Erzeugung des ZDC
möglichst einfach zu gestalten. Danach werden mittels des
Carry In Signals CI_B die "Precounted Zero Digit" Signale
ZDJ, ZDK und ZDL ausgewählt.
ZDJ ist aktiv (= '1'), wenn alle vier Stellen im 16 Bit
Block null sind. ZDK ist aktiv, wenn das höchstwertige oder
die drei höchstwertigen Stellen null sind. ZDL ist aktiv,
wenn die zwei oder drei höchstwertigen Stellen null sind.
Die Blöcke PROP-GEN-1. STUFE, PROP-GEN-2. STUFE, ADD-DIGIT
und VORAUSWAHL DER SUMME entsprechen dem Stand der Technik
für ein Carry Select Addierwerk. Die Logik im Zusammenhang
mit ZDC ist jedoch Teil der Erfindung.
ZDXJ = ZDX0 . ZDX1 . ZDX2 . ZDX3
ZDXK = ZDX0 . ZDX1 .ˆ(ZDX2 . ZDX3)
ZDXL = ZDX0 .ˆZDX1 + ZDX0 . ZDX2 .ˆZDX3
ZDXK = ZDX0 . ZDX1 .ˆ(ZDX2 . ZDX3)
ZDXL = ZDX0 .ˆZDX1 + ZDX0 . ZDX2 .ˆZDX3
ZDYJ = ZDY0 . ZDY1 . ZDY2 . ZDY3
ZDYK = ZDY0 . ZDY1 .ˆ(ZDY2 . ZDY3)
ZDYL = ZDY0 .ˆZDY1 + ZDY0 . ZDY2 .ˆZDY3
ZDYK = ZDY0 . ZDY1 .ˆ(ZDY2 . ZDY3)
ZDYL = ZDY0 .ˆZDY1 + ZDY0 . ZDY2 .ˆZDY3
Fig. 8 zeigt den Digit Preselect Block. Er hat die Generate
Inputs GD1, GD2, GD3 und die Prop-Generate Inputs QD1, QD2,
QD3, sowie die Digit Select Outputs DS_X0, DS_X1, DS_X2
(für den Fall CI_B = 0) und DS_Y0, DS_Y1, DS_Y2 (für den Fall
CI_B = 1) für die drei höchstwertigen Stellen. Die Bool'schen
Gleichungen lauten:
DS_X0 = GD1 + QD1 . GD2 + QD1 . QD2 . GD3
DS_X1 = GD2 + QD2 . GD3
DS_X2 = GD3
DS_X1 = GD2 + QD2 . GD3
DS_X2 = GD3
DS_Y0 = GD1 + QD1 . GD2 + QD1 . QD2 . QD3
DS_Y1 = GD2 + QD2 . QD3
DS_Y2 = QD3
DS_Y1 = GD2 + QD2 . QD3
DS_Y2 = QD3
Diese Verknüpfung ist in 2 Logikstufen realisierbar.
Claims (13)
1. Addierwerk zum Bilden einer Summe S aus miteinander zu
addierenden Operanden (A, B), dadurch gekennzeichnet,
dass es umfasst:
Mittel (30) zum parallelen Ermitteln von Teilsummen einzelner Stellen, die Mittel umfassen: eine Vielzahl zueinander paralleler Addierer (30A, 30B, 30C), die jeweils Teiloperanden (A0, A1, A2 und B0, B1, B2) der zu addierenden Operanden (A, B) miteinander zu Teilsummen (S0, S1, S2) addierten, wobei jeder der Addierer (30A, 30B, 30C) jeweils stellenwertgleich zumindest eine der Stellen der Operanden (A, B) addiert, und wobei der Addierer (30A) der niederwertigsten Stelle eine entsprechende Teilsumme (S0) und Addierer (30B, 30C) höherwertigerer Stellen sowohl eine entsprechende Teilsumme (S1, S2), als auch die entsprechende Teilsumme (S1 + 1, S2 + 1) mit Berücksichtigung eines jeweiligen Übertrags als Ausgang haben; und
Mittel (40) zum Vorermitteln potentieller Nullstellen ausgehend von den Teilsummen, die Mittel umfassen: eine Vielzahl von Nullstellenerkennungsmitteln (40A, 40B, 40C), jeweils gekoppelt mit je einem der Ausgänge der Vielzahl von Addierern (30A, 30B, 30C), zur Erkennung, ob die jeweils anliegende Teilsumme an dem betrachteten Ausgang eine Nullstelle repräsentiert; und,
Mittel (50) zum Auswählen der potentiellen Nullstellen bei Feststehen des korrekten Wertes einer jeweiligen Teilsumme, die Mittel umfassen: eine Vielzahl von Selektoren (50B, 50C), jeweils gekoppelt mit den Ausgängen der Nullstellenerkennungsmittel (40B0, 40B1, 40C0, 40C1), die mit jeweils einem der Addierer (30B, 30C) der höherwertigeren Stellen gekoppelt sind, zur Auswahl, ob jeweils die ermittelte Teilsumme mit (S1 + 1, S2 + 1) oder ohne (S1, S2) Berücksichtigung eines jeweiligen Übertrages als korrekte Teilsumme für die Ermittlung der Nullstellen zu verwenden ist; und
Mittel zur Auswertung der führenden Nullstellen der Summe aus den ausgewählten Nullstellen, die Mittel umfassen: eine Zähldekodierlogik (70), gekoppelt mit dem Ausgang des Nullstellenerkennungsmittels (40A) der niederwertigsten Stelle, sowie den Ausgängen der Selektoren (50) der höherwertigeren Stellen, zur Ermittlung der Anzahl der führenden Nullstellen (ZDC) der Summe (S); und
Selektiermittel (60) zur Steuerung der Vielzahl von Selektoren (50) zur Auswahl der jeweiligen korrekten Teilsumme.
Mittel (30) zum parallelen Ermitteln von Teilsummen einzelner Stellen, die Mittel umfassen: eine Vielzahl zueinander paralleler Addierer (30A, 30B, 30C), die jeweils Teiloperanden (A0, A1, A2 und B0, B1, B2) der zu addierenden Operanden (A, B) miteinander zu Teilsummen (S0, S1, S2) addierten, wobei jeder der Addierer (30A, 30B, 30C) jeweils stellenwertgleich zumindest eine der Stellen der Operanden (A, B) addiert, und wobei der Addierer (30A) der niederwertigsten Stelle eine entsprechende Teilsumme (S0) und Addierer (30B, 30C) höherwertigerer Stellen sowohl eine entsprechende Teilsumme (S1, S2), als auch die entsprechende Teilsumme (S1 + 1, S2 + 1) mit Berücksichtigung eines jeweiligen Übertrags als Ausgang haben; und
Mittel (40) zum Vorermitteln potentieller Nullstellen ausgehend von den Teilsummen, die Mittel umfassen: eine Vielzahl von Nullstellenerkennungsmitteln (40A, 40B, 40C), jeweils gekoppelt mit je einem der Ausgänge der Vielzahl von Addierern (30A, 30B, 30C), zur Erkennung, ob die jeweils anliegende Teilsumme an dem betrachteten Ausgang eine Nullstelle repräsentiert; und,
Mittel (50) zum Auswählen der potentiellen Nullstellen bei Feststehen des korrekten Wertes einer jeweiligen Teilsumme, die Mittel umfassen: eine Vielzahl von Selektoren (50B, 50C), jeweils gekoppelt mit den Ausgängen der Nullstellenerkennungsmittel (40B0, 40B1, 40C0, 40C1), die mit jeweils einem der Addierer (30B, 30C) der höherwertigeren Stellen gekoppelt sind, zur Auswahl, ob jeweils die ermittelte Teilsumme mit (S1 + 1, S2 + 1) oder ohne (S1, S2) Berücksichtigung eines jeweiligen Übertrages als korrekte Teilsumme für die Ermittlung der Nullstellen zu verwenden ist; und
Mittel zur Auswertung der führenden Nullstellen der Summe aus den ausgewählten Nullstellen, die Mittel umfassen: eine Zähldekodierlogik (70), gekoppelt mit dem Ausgang des Nullstellenerkennungsmittels (40A) der niederwertigsten Stelle, sowie den Ausgängen der Selektoren (50) der höherwertigeren Stellen, zur Ermittlung der Anzahl der führenden Nullstellen (ZDC) der Summe (S); und
Selektiermittel (60) zur Steuerung der Vielzahl von Selektoren (50) zur Auswahl der jeweiligen korrekten Teilsumme.
2. Addierwerk nach Anspruch 1, worin der Addierer (30A) der
niederwertigsten Stelle sowohl die entsprechende
Teilsumme (S0) als auch die entsprechende Teilsumme (S0
+ 1) mit Berücksichtigung eines möglichen Übertrags als
Ausgang hat, dadurch gekennzeichnet, dass es weiterhin
umfasst:
ein weiteres Nullstellenerkennungsmittel (40A1), gekoppelt mit dem Ausgang des Addierers (30A) der niederwertigsten Stelle mit Berücksichtigung eines möglichen Übertrags (C);
ein weiterer Selektor (50A), gekoppelt mit den Ausgängen der Nullstellenerkennungsmittel (40A0, 40A1), die mit dem Addierer (30A) der niederwertigsten Stelle gekoppelt sind;
wobei die Zähldekodierlogik (70) mit den Ausgängen aller Selektoren (50) gekoppelt ist.
ein weiteres Nullstellenerkennungsmittel (40A1), gekoppelt mit dem Ausgang des Addierers (30A) der niederwertigsten Stelle mit Berücksichtigung eines möglichen Übertrags (C);
ein weiterer Selektor (50A), gekoppelt mit den Ausgängen der Nullstellenerkennungsmittel (40A0, 40A1), die mit dem Addierer (30A) der niederwertigsten Stelle gekoppelt sind;
wobei die Zähldekodierlogik (70) mit den Ausgängen aller Selektoren (50) gekoppelt ist.
3. Addierwerk zum Bilden einer Summe S aus miteinander zu
addierenden Operanden (A, B), wobei die Operanden (A B)
in eine Vielzahl von Teiloperanden (A(0), B(0), A(1),
B(1), A(2), B(2)) aufgeteilt sind, die Stellen der
Operanden (A, B) repräsentieren, dadurch gekennzeichnet,
dass es umfasst:
ein Addierwerk (20) nach Anspruch 1, zur Addition der niederwertigsten Teiloperanden (A(0), B(0));
eine Vielzahl von Paaren von Addierwerken (20) nach Anspruch 2 zur Addition der höherwertigeren Teiloperanden (A(1), B(1), A(2), B(2)), wobei jeweils ein Addierwerk (20) jedes Paares als Eingabe einen Oberlauf erhält;
eine Vielzahl von Selektoren (150), jeweils gekoppelt mit den Ausgängen jeweils eines der Paare von Addierwerken (20), zur Auswahl, ob jeweils die Anzahl der führenden Nullstellen der Teiloperanden mit oder ohne Berücksichtigung eines jeweiligen Übertrages für die Ermittlung der führenden Nullstellen der Summe (S) zu verwenden ist;
einem Selektiermittel (160) zur Steuerung der Vielzahl von Selektoren (150);
eine Gesamt-Zähldekodierlogik (170), gekoppelt mit einem Ausgang des Addierwerkes (20) der niederwertigsten Teiloperanden (A(0), B(0)), der die Anzahl der führenden Nullstellen (ZDC(0)) der Teilsumme der niederwertigsten Teiloperanden (A(0), B(0)) repräsentiert, sowie mit Ausgängen der Vielzahl von Sektoren (150), die jeweils die Anzahl der führenden Nullstellen (ZDC(0)) der jeweiligen Teilsumme der höherwertigeren Teiloperanden (A(1), B(1), A(2), B(2)) repräsentieren, zur Ermittlung der Anzahl der führenden Nullstellen (ZDC) der Summe (S).
ein Addierwerk (20) nach Anspruch 1, zur Addition der niederwertigsten Teiloperanden (A(0), B(0));
eine Vielzahl von Paaren von Addierwerken (20) nach Anspruch 2 zur Addition der höherwertigeren Teiloperanden (A(1), B(1), A(2), B(2)), wobei jeweils ein Addierwerk (20) jedes Paares als Eingabe einen Oberlauf erhält;
eine Vielzahl von Selektoren (150), jeweils gekoppelt mit den Ausgängen jeweils eines der Paare von Addierwerken (20), zur Auswahl, ob jeweils die Anzahl der führenden Nullstellen der Teiloperanden mit oder ohne Berücksichtigung eines jeweiligen Übertrages für die Ermittlung der führenden Nullstellen der Summe (S) zu verwenden ist;
einem Selektiermittel (160) zur Steuerung der Vielzahl von Selektoren (150);
eine Gesamt-Zähldekodierlogik (170), gekoppelt mit einem Ausgang des Addierwerkes (20) der niederwertigsten Teiloperanden (A(0), B(0)), der die Anzahl der führenden Nullstellen (ZDC(0)) der Teilsumme der niederwertigsten Teiloperanden (A(0), B(0)) repräsentiert, sowie mit Ausgängen der Vielzahl von Sektoren (150), die jeweils die Anzahl der führenden Nullstellen (ZDC(0)) der jeweiligen Teilsumme der höherwertigeren Teiloperanden (A(1), B(1), A(2), B(2)) repräsentieren, zur Ermittlung der Anzahl der führenden Nullstellen (ZDC) der Summe (S).
4. Addierwerk nach Anspruch 3, dadurch gekennzeichnet, dass
die Vorrichtung zur Addition der niederwertigsten
Teiloperanden (A(0), B(0)) ein Paar von Addierwerken
(20) nach Anspruch 2 aufweist, wobei ein Addierwerk des
Paares als Eingabe einen Überlauf erhält, und mit einem
weiteren Selektor (150), der mit den Ausgängen des
Paares von Addierwerken (20) gekoppelt ist.
5. Addierwerk mit einer Vielzahl paralleler Addierer (30)
in einer hierarchischen Struktur, gekennzeichnet durch
einer Vielzahl von Addierwerken (20) nach Anspruch 1 oder 2 für die niedrigste der hierarchischen Stufen;
mindestens einem Addierwerk (120) nach Anspruch 2 oder 3 oder 4 für die nächst höhere der hierarchischen Stufen.
einer Vielzahl von Addierwerken (20) nach Anspruch 1 oder 2 für die niedrigste der hierarchischen Stufen;
mindestens einem Addierwerk (120) nach Anspruch 2 oder 3 oder 4 für die nächst höhere der hierarchischen Stufen.
6. Addierwerk nach Anspruch 5, gekennzeichnet durch eine
Vielzahl von Addierwerken höherer hierarchischer Stufen,
wobei jedes Addierwerk mit einer höheren hierarchischen
Stufe jeweils eine Vielzahl von Addierwerken der nächst
niedrigeren hierarchischen Stufe aufweist.
7. Gleitkomma-Recheneinheit mit einem Addierwerk
entsprechend einer der vorstehenden Ansprüche.
8. Datenverarbeitungsanlage mit einem Addierwerk
entsprechend einer der vorstehenden Ansprüche und/oder
einer Gleitkomma-Recheneinheit nach Anspruch 7.
9. Verfahren zur Ermittlung von Nullstellen einer Summe (S)
aus miteinander zu addierenden Operanden (A, B), wobei
die Summe in einem Addierwerk (20) mit einer Vielzahl
zueinander paralleler Addierer (30A, 30B, 30C) gebildet
wird, die jeweils Teiloperanden (A0, A1, A2 und B0, B1,
B2) der zu addierender Operanden (A, B) miteinander zu
Teilsummen (S0, S1, S2) addieren, wobei jeder der
Addierer (30A, 30B, 30C) jeweils stellenwertgleich eine
der Stellen der Operanden (A, B) addiert, und wobei der
Addierer (30A) der niederwertigsten Stelle eine
entsprechende Teilsumme (S0) und optional auch die
entsprechende Teilsumme (S0 + 1) mit Berücksichtigung
eines möglichen Übertrags und Addierer (30B, 30C)
höherwertigerer Stellen sowohl eine entsprechende
Teilsumme (S1, S2) als auch die entsprechende Teilsumme
(S1 + 1, S2 + 1) mit Berücksichtigung eines jeweiligen
Übertrags als Ausgang haben; das Verfahren weist die
folgenden Schritte auf:
Erkennen, ob die jeweilig ermittelte Teilsumme an jedem der Ausgänge eine Nullstelle repräsentiert;
Auswählen, ob jeweils die ermittelte Teilsumme mit (S0 + 1, S1 + 1, S2 + 1) oder ohne (S0, S1, S2) Berücksichtigung eines entsprechenden Übertrages die korrekte Teilsumme für die Ermittlung der Nullstellen zu verwenden ist,
Ermitteln der Anzahl der führenden Nullstellen (ZDC) der Summe (S) aus den ausgewählten, erkannten Nullstellen.
Erkennen, ob die jeweilig ermittelte Teilsumme an jedem der Ausgänge eine Nullstelle repräsentiert;
Auswählen, ob jeweils die ermittelte Teilsumme mit (S0 + 1, S1 + 1, S2 + 1) oder ohne (S0, S1, S2) Berücksichtigung eines entsprechenden Übertrages die korrekte Teilsumme für die Ermittlung der Nullstellen zu verwenden ist,
Ermitteln der Anzahl der führenden Nullstellen (ZDC) der Summe (S) aus den ausgewählten, erkannten Nullstellen.
10. Verfahren nach Anspruch 9, dadurch gekennzeichnet, dass
die Schritte des Auswählens und Ermittelns jeweils
Schritte des Vorauswählens und des Vorermittelns von
potentiellen führenden Nullstellen, sowie Schritte des
Endauswählens und des Endermittelns der führenden
Nullstellen aufweisen.
11. Verwendung des Verfahrens nach einem der Ansprüchen 9
oder 10 in Addierwerken zur in etwa gleichzeitigen
Ermittlung der führenden Nullstellen mit, der Ermittlung
der Summe.
12. Verwendung des Verfahrens nach einem der vorstehenden
Ansprüchen in Gleitkomma-Recheneinheiten.
13. Verwendung des Verfahrens nach einem der vorstehenden
Ansprüchen in Datenverarbeitungsanlagen.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/EP1995/001455 WO1996033456A1 (de) | 1995-04-18 | 1995-04-18 | Übertrag-auswahl-addierer mit einer vorermittlung der führenden nullstellen |
Publications (2)
Publication Number | Publication Date |
---|---|
DE19614480A1 DE19614480A1 (de) | 1996-11-14 |
DE19614480C2 true DE19614480C2 (de) | 2000-09-07 |
Family
ID=8165996
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE19614480A Expired - Fee Related DE19614480C2 (de) | 1995-04-18 | 1996-04-12 | Addierwerk mit einer Vorermittlung der führenden Nullstellen und Verfahren |
Country Status (4)
Country | Link |
---|---|
US (1) | US5875123A (de) |
JP (1) | JPH09507940A (de) |
DE (1) | DE19614480C2 (de) |
WO (1) | WO1996033456A1 (de) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6047304A (en) * | 1997-07-29 | 2000-04-04 | Nortel Networks Corporation | Method and apparatus for performing lane arithmetic to perform network processing |
US6275839B1 (en) * | 1998-09-22 | 2001-08-14 | International Business Machines Corporation | Method and system for immediate exponent normalization in a fast floating point adder |
JP3540807B2 (ja) * | 2002-08-27 | 2004-07-07 | 沖電気工業株式会社 | 加算器,乗算器,及び集積回路 |
US7840622B2 (en) * | 2005-07-25 | 2010-11-23 | International Business Machines Corporation | Method and floating point unit to convert a hexadecimal floating point number to a binary floating point number |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5204825A (en) * | 1991-08-30 | 1993-04-20 | Weitek Corporation | Method and apparatus for exact leading zero prediction for a floating-point adder |
US5317527A (en) * | 1993-02-10 | 1994-05-31 | Digital Equipment Corporation | Leading one/zero bit detector for floating point operation |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4926369A (en) * | 1988-10-07 | 1990-05-15 | International Business Machines Corporation | Leading 0/1 anticipator (LZA) |
JP2757671B2 (ja) * | 1992-04-13 | 1998-05-25 | 日本電気株式会社 | プライオリティエンコーダおよび浮動小数点加減算装置 |
US5493520A (en) * | 1994-04-15 | 1996-02-20 | International Business Machines Corporation | Two state leading zero/one anticipator (LZA) |
RU95107478A (ru) * | 1995-05-18 | 1997-02-10 | А.И. Грушин | Способ устранения старших незначащих цифр при вычислениях с плавающей запятой и устройство для его осуществления |
-
1995
- 1995-04-18 JP JP8531420A patent/JPH09507940A/ja active Pending
- 1995-04-18 US US08/765,419 patent/US5875123A/en not_active Expired - Fee Related
- 1995-04-18 WO PCT/EP1995/001455 patent/WO1996033456A1/de active Application Filing
-
1996
- 1996-04-12 DE DE19614480A patent/DE19614480C2/de not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5204825A (en) * | 1991-08-30 | 1993-04-20 | Weitek Corporation | Method and apparatus for exact leading zero prediction for a floating-point adder |
US5317527A (en) * | 1993-02-10 | 1994-05-31 | Digital Equipment Corporation | Leading one/zero bit detector for floating point operation |
Also Published As
Publication number | Publication date |
---|---|
JPH09507940A (ja) | 1997-08-12 |
WO1996033456A1 (de) | 1996-10-24 |
DE19614480A1 (de) | 1996-11-14 |
US5875123A (en) | 1999-02-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE69132129T2 (de) | In der Grundzahl 4 arbeitende Übertragvorgriffsbäume | |
DE69131458T2 (de) | Hardware-Anordnung zur Addition und Subtraktion von Gleitkommazahlen | |
EP0079471B1 (de) | Schaltungsanordnung und Verfahren zur Bildung von Skalarprodukten und Summen von Gleitkommazahlen mit maximaler Genauigkeit | |
DE19581638C2 (de) | Rechenvorrichtung mit einem Mikroprozessor, einem neuralen Netz-Koprozessor und einer DMA-Steuervorrichtung | |
DE68926330T2 (de) | Antizipator für die Anzahl vorhergehender Nullen/Einsen | |
DE3143223C2 (de) | ||
DE69132517T2 (de) | Gleitkommaprozessor | |
DE112019002981T5 (de) | Parallelberechnungsarchitektur mit rekonfigurierbarer kernebenen- und vektorebenen-parallelität | |
DE3346241A1 (de) | Parallelverknuepfungsschaltung mit verkuerztem uebertragsdurchlauf | |
DE3700323C2 (de) | ||
DE2623986A1 (de) | Parallelrechenwerk | |
DE3926876A1 (de) | Schaltung und verfahren zur vorhersage eines sticky-bits bei der gleitpunktmultiplikation | |
DE19614480C2 (de) | Addierwerk mit einer Vorermittlung der führenden Nullstellen und Verfahren | |
DE2730918A1 (de) | Anordnung zum multiplizieren von binaerzahlen | |
DE69026414T2 (de) | Binäres Addiergerät | |
DE69230520T2 (de) | Verfahren und Anordung zur Erzeugung von Summeinformation-/Rundungskontrolle-Signal | |
DE69225352T2 (de) | Bitdatenverschiebungsbetragsdetektor | |
DE69225638T2 (de) | Abrundungsschaltung in einem Gleitkommamultiplizierer | |
DE69327421T2 (de) | Anordnung und Verfahren zum parallelisierten Grössenvergleich von digitalen Daten | |
DE3688434T2 (de) | Schneller bcd/binaer-addierer. | |
EP0191452B1 (de) | Verfahren und Schaltungsanordnung zur Überwachung der Summe bzw. Differenz zweier Grössen durch Vergleich mit einer dritten Grösse in binärer Darstellung | |
DE10206830B4 (de) | Verfahren und Anordnung zur Zusammenführung von Daten aus parallelen Datenpfaden | |
DE4416143A1 (de) | Verfahren zum Entwerfen von Pipeline - Stufen in einem Computer-unterstützten Entwurfssystem | |
EP0193711B1 (de) | Schaltungsanordnung zur Funktionsüberwachung eines arithmetische Operationen ausführenden Rechenwerkes anhand von Paritätsbits | |
DE3855124T2 (de) | Verfahren und Vorrichtung zur eindeutigen Schätzung von Bedingungen in einem Datenprozessor |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8110 | Request for examination paragraph 44 | ||
D2 | Grant after examination | ||
8364 | No opposition during term of opposition | ||
8339 | Ceased/non-payment of the annual fee |