DE4019646C2 - Vorrichtung und Verfahren zum Multiplizieren von Datenwörtern in Zweier-Komplement-Darstellung - Google Patents
Vorrichtung und Verfahren zum Multiplizieren von Datenwörtern in Zweier-Komplement-DarstellungInfo
- Publication number
- DE4019646C2 DE4019646C2 DE4019646A DE4019646A DE4019646C2 DE 4019646 C2 DE4019646 C2 DE 4019646C2 DE 4019646 A DE4019646 A DE 4019646A DE 4019646 A DE4019646 A DE 4019646A DE 4019646 C2 DE4019646 C2 DE 4019646C2
- Authority
- DE
- Germany
- Prior art keywords
- multiplier
- multiplicand
- bit
- significant
- complement
- 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/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/52—Multiplying; Dividing
-
- 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/52—Multiplying; Dividing
- G06F7/523—Multiplying only
- G06F7/53—Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel
- G06F7/5306—Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel with row wise addition of partial products
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2207/00—Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F2207/38—Indexing scheme relating to groups G06F7/38 - G06F7/575
- G06F2207/3804—Details
- G06F2207/386—Special constructional features
- G06F2207/3884—Pipelining
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Complex Calculations (AREA)
Description
Die vorliegende Erfindung bezieht sich auf eine Vorrichtung und
ein Verfahren gemäß dem jeweiligen
Oberbegriff der Patentansprüche 1 und 5.
Eine derartige Vorrichtung bzw. ein derartiges Verfahren
ist aus US-A 3 956 622 bekannt.
Insbesondere beschreibt diese Druckschrift eine Vorrichtung
und ein Verfahren zum vorzeichenrichtigen Multiplizieren eines
Datenwortes (Multiplikand) in Zweierkomplement-Darstellung mit
einem Koeffizientenwort (Multiplikator) in Vorzeichen/Betrags-
Darstellung. Wie anhand der Fig. 3, 2a und 2b erkannt werden
kann, fügt der eine Pipeline-Struktur aufweisende Multiplizierer
einzelne Teilsummen, die durch Multiplizieren des Multiplikanden
mit jeweils einem Bit des Multiplikators erhalten
werden, stellenrichtig zu einem Endprodukt zusammen. Dabei
wird für den Fall, daß ein negativer Multiplikand vorliegt,
eine Vorzeichenerweiterung bei den durch das Aufaddieren der
einzelnen Teilsummen entstehenden Zwischensummen bewirkt, da
die Addition ansonsten zu einem falschen Endprodukt führen
würde.
Weiterhin führt der beschriebene Multiplizierer eine Streichung
der jeweils untersten Stelle durch, so daß die Zwischensummen
jeweils eine gleiche Bitanzahl aufweisen. Wie durch
Vergleich der Fig. 2a und 2b erkannt werden kann, wird für den
Fall eines negativen Multiplikators das erhaltene Endprodukt
einfach im Zweierkomplement invertiert, so daß in jedem Fall
ein vorzeichenrichtiges gerundetes Endprodukt erhalten wird.
Zum besseren Verständnis sollen im folgenden die Grundlagen
besprochen werden, auf denen elektrische, digitale Multipliziereinrichtungen
allgemein beruhen.
Im allgemeinen arbeitet ein digitales
Signalprozessorsystem nicht immer mit positiven Werten.
Zum Beispiel wenn man den Fall betrachtet, daß ein
A/D-Konverter (Analog/Digital-Konverter) analoge
Eingangsdaten in ein digitales Signal umwandelt, um durch
Subtrahieren des so umgewandelten digitalen Signals, falls
eine A-B-Subtraktion vorgesehen ist, einen neuen Wert zu
erhalten, wobei falls der Wert von A größer ist als der
Wert von B das Ergebnis ein positiver Wert sein wird,
wodurch die Ausgangsdaten sicherlich richtig sein werden.
Ist jedoch der Wert von A kleiner als der Wert von B, so
werden die Ausgangsdaten einen negativen Wert darstellen,
was unerwünschtermaßen ein unrichtiges Ergebnis bedeutet.
Daher ist es verständlich, daß der digitale Code nicht nur
in der Lage sein muß, mit positiven Werten (Zahlen) zu
rechnen, sondern auch mit negativen. Praktisch wird dies
dadurch erreicht, daß übliche digitale
Signalprozessorsysteme eine Anzahl von Codierschemata
beherrschen.
Die erste Möglichkeit besteht darin, einen
Vorzeichen-Betrags-Code zu verwenden, welcher zusätzlich
ein Extrabit an der ersten Stelle des Codes aufweist, um
anzeigen zu können, ob der Wert des Codes positiv oder
negativ ist. Dieses Codierschema teilt sich in einen Teil,
welcher den absoluten Wert der codierten Zahl und einen
anderen Teil, welcher das Vorzeichen davon anzeigt, auf.
Die zweite Möglichkeit ist ein Codierschema mit
2er-Komplement-Darstellung. Das zugrunde liegende Prinzip
des Codes mit 2er-Komplement-Darstellung liegt in dem
Konzept der Verwendung von komplementären Zahlen. Da
dieses Codierschema ohne Änderung für Addition und
Subtraktion verwendet werden kann, ist es in üblichen
digitalen Signalprozessorsystemen weit verbreitet.
In einem üblichen digitalen Signalprozessorsystem läßt
sich dasselbe Ergebnis unabhängig von dem verwendeten
Codierschema erhalten. Wird jedoch mit einer hohen
Frequenz (beispielsweise mit einigen zehn MHz) getaktet, so
werden mehrere charakteristische Größen, insbesondere die
Geschwindigkeit, des digitalen Signalprozessorsystems,
stark von dem verwendeten Codierungsschema abhängen. Die
Bauweise des vorliegenden digitalen Signalprozessorsystems
kann als Kombination eines Addierers, eines Subtrahierers,
eines Multiplizierers und eines Dividierers betrachtet
werden, welche zusammen die codierten Eingangsdaten (z. B.
im normalen Binärcode, d. h. im nicht komplementär
dargestellten Code, im Vorzeichen-Absolut-Code
oder im 2er-Komplementcode) verarbeiten.
Unter den Operationen von Addierer, Subtrahierer,
Multiplizierer und Dividierer benötigen die Operationen
von dem Multiplizierer und dem Dividierer relativ viel
Zeit. Daher hängt die Systemgeschwindigkeit in hohem Maße
von der Bauweise des Multiplizierers und des Dividierers
ab.
Es ist allgemein bekannt, daß Codierschemata mit
2er-Komplement-Darstellung dadurch vorteilhaft sind, daß
negative Zahlen in einfacher Weise dargestellt und
verarbeitet werden können, wodurch die Übereinstimmung für
Addition und Subtraktion in günstiger Weise für die
Verarbeitung der Zahlen verwendet werden kann.
Bezugnehmend auf Fig. 1A und 1B läßt sich die Addition
(X+Y) mittels des Schaltkreises von Fig. 1A ausführen,
während die Subtraktion (X-Y) durch die Schaltung von
Fig. 1B ausgeführt werden kann. Dementsprechend sei
erwähnt, daß der Unterschied zwischen den beiden oben
angesprochenen Schaltungen in dem Zustand des
"Carry"-Eingangs cin und in dem Invertierer 108, welcher
nur in der Schaltung von Fig. 1B enthalten ist, liegt. Das
bedeutet, falls das "Carry"-Eingangssignal 0 ist, führt
die Schaltung von Fig. 1A die Addition aus, wenn jedoch
das "Carry"-Eingangssignal 1 ist, führt die Schaltung von
Fig. 1B die Subtraktion aus.
Entsprechend der allgemeinen Theorie der Binäroperationen
werden alle Bits einer Binärzahl zu den entsprechenden
Bits einer zu addierenden Binärzahl addiert, um dadurch
die Addition auszuführen. Bei der Subtraktion zweier
Binärzahlen werden jedoch auf die Bits der Binärzahl die
entsprechenden Bits einer im 2er-Komplement vorliegenden
Binärzahl aufaddiert. Es ist darauf hinzuweisen, daß eine
Zahl im 2er-Komplement dadurch erhalten wird, daß auf das
1er-Komplement eine 1 addiert wird. Diese Beziehung läßt
sich wie folgt ausdrücken:
A - B = A + (-B) = A + + 1 (1)
Die Formel (1) kann durch einen Addierer/Subtrahierer, wie
in Fig. 2 dargestellt, realisiert werden.
Für den Fall, daß Zahlen im 2er-Komplement multipliziert
werden, werden die Zahlen im 2er-Komplement in Vorzeichen
und Absolutwert aufgeteilt und der Absolutwert wird zuerst
multipliziert, und danach das Vorzeichen getrennt
korrigiert.
Betrachtet man nur den Absolutwert des Codes, so kann die
Multiplikation durch wiederholte Anwendung der
2er-Komplement-Addition erreicht werden. Bestehen jedoch
Multiplikator und Multiplikand aus Codes von großen
Zahlen, so muß das System erweitert werden, um die Addition
ausführen zu können. Um diesem Problem zu begegnen, wird
im allgemeinen eine bekannte Vorrichtung zur Vereinfachung
der Hardware des Systems verwendet, welche die Teilsummen
durch Addieren der beiden Codes berechnet. Dann werden die
Teilsummen nochmals zueinander addiert, um das Ergebnis
der Multiplikation zu erhalten. Bei Verwendung einer
solchen Vorrichtung stellt die beträchtlich reduzierte
Rechengeschwindigkeit den größten Nachteil dar.
Eine andere bekannte Vorrichtung zur Erhöhung der
Rechengeschwindigkeit ist ein Multiplizierer, der eine
Pipelinestruktur aufweist. Fig. 3 beschreibt einen
herkömmlichen Betrags-Multiplizierer mit Pipelinestruktur.
Alle in der Zeichnung dargestellten Zwischenspeicher
(latches) sind mit dem Systemtakt synchronisiert. Der
Zwischenspeicher 301 speichert den n-bit-Eingangswert X
und die entsprechenden Addierer 310, 313, 317, 323 sind
alle mit einem logischen "low" Carry-Signal cin
beaufschlagt.
Danach, wenn der n-bit-Eingangswert Y in dem Speicher 302
gespeichert ist, führen die logischen Verknüpfungsgatter
(gates) 303 und 304 eine UND-Verknüpfung zwischen dem Wert
Y mit den beiden LSB-Bits (least significant bits) X₀, X₁,
durch. Gleichzeitig speichert Zwischenspeicher 306 den
Eingangswert Y. Danach wird der Ausgangswert des Addierers
310 im Zwischenspeicher 311 gespeichert, um mit dem
Ausgangswert des UND-Gatters 308, in dem Addierer 313
addiert zu werden. Damit wird der Ausgang des Speichers
311 Sn zu
Sn = X₀ · Y + X₁ · Y · 2
Weiterhin ist die Zwischensumme Ps, die vom Addierer 313 bereitgestellt wird in diesem Fall
Ps = X₀ · Y + X₁ · Y · 2 + X₂ · Y · 2²
Auf diese Weise werden die Zwischensummen an jedem Addierer
erhalten und das Ergebnis wird zu einer nächsten Stufe
weitergegeben, um mit dem Multiplikanden addiert zu
werden.
Ein derartiger Betragsmultiplizierer mit Pipelinestruktur
hat in der Tat großen Einfluß auf die Erhöhung der
Rechengeschwindigkeit. Bei diesem Betragsmultiplizierer
ist es jedoch weiterhin nachteilig, daß er nicht mit
Zahlen im 2er-Komplement arbeiten kann.
Es ist die Aufgabe der vorliegenden Erfindung eine Multiplikationsvorrichtung
und ein entsprechendes Verfahren anzugeben, bei
denen die zu multiplizierenden Datenwerte in
2er-Komplementdarstellung verarbeitet werden können.
Diese Aufgabe wird durch die Gegenstände der Patentansprüche 1 und 5 gelöst.
Für ein besseres Verständnis der Erfindung, und um zu
zeigen, wie diese ausgeführt werden kann, wird im
folgenden ein bevorzugtes Ausführungsbeispiel unter Bezugnahme auf die beiliegenden Zeichnungen
näher erläutert. Dabei zeigen die Zeichnungen im einzelnen
Fig. 1A und 1B stellen jeweils einen Addierer und einen
Subtrahierer für die Verarbeitung von Codes mit
2er-Komplement dar,
Fig. 2 einen herkömmlichen
Addierer/Subtrahierer zur allgemeinen Verwendung,
Fig. 3 einen herkömmlichen Multiplizierer
mit Pipelinestruktur,
Fig. 4 eine Schaltung eines Multiplizierers
mit Pipelinestruktur entsprechend der vorliegenden
Erfindung und
Fig. 5 die Multiplikation von 5×12
entsprechend der vorliegenden Erfindung.
In Fig. 4 wird ein Betragsmultiplizierer der Erfindung
gezeigt, bei dem alle Zwischenspeicher (latches),
UND-Gatter und Addierer dieselben sind, wie in Fig. 3. Der
einzige Unterschied in der Zeichnung gegenüber dem
herkömmlichen Betragsmultiplizierer ist der, daß die
MSB-Bits (most significant bits) der Ausgangswerte der
UND-Gatter 303, 304 einem ODER-Gatter 401 zugeführt
werden, der Ausgang des ODER-Gatters 401 einem
Zwischenspeicher 311 zugeführt wird, und daß das MSB-Bit
(most significant bit) des Ausgangs des UND-Gatters 308
und das MSB-Bit (most significant bit) des Ausgangs des
Zwischenspeichers 311 einem ODER-Gatter 402 zugeführt
werden, um darin eine Zwischensumme zu korrigieren. In
gleicher Weise werden die MSB-Bits des Ausgangs des
Zwischenspeichers 318 und das MSB-Bit des Ausgangs des
Zwischenspeichers 319 einem NAND-Gatter 323 zugeführt, der
Ausgang des NAND-Gatters 323 wird an den einen Eingang des
Addierers 321 angeschlossen, dessen zweiter Eingang mit
dem Ausgang des Zwischenspeichers 320 verbunden ist, um
damit die Codes im 2er-Komplement zu korrigieren. Auf
diese Weise wird eine Subtraktion für die Ausgänge des
NAND-Gatters 323 und des Zwischenspeichers 320 ausgeführt.
Darüber hinaus kann eine Mehrzahl von Abschnitten gleich
dem Abschnitt 40a, welcher aus den Zwischenspeichern 305,
306, 311, 312, dem UND-Gatter 308, dem ODER-Gatter 402 und
dem Addierer 313 besteht, nacheinander an die
entsprechenden Anschlüsse des Abschnitts 40b angeschlossen
werden.
Fig. 5 zeigt ein besonders beschriftetes
Ausführungsbeispiel der Erfindung, bei dem ein
Multiplikand X 12 ist und ein Multiplikator Y 5 ist.
Dieses Ausführungsbeispiel zeigt eine Multiplikation der
zwei Werte X und Y.
Für das einfache Verständnis der Erfindung wird im
folgenden die Theorie der Umwandlung von einem Code in
Normaldarstellung (normale Binärcode) in einen Code mit
2er-Komplement-Darstellung kurz beschrieben. Wenn
angenommen wird, daß der Multiplikand F mit einem
Multiplikator R multipliziert wird und die beiden Werte
der Codes in 2er-Komplement-Darstellung vorliegen, lassen
sich die entsprechenden Werte wie folgt anschreiben
|F = Fn-1, Fn-2, . . ., F₂, F₁, F₀ (2)
(zum Beispiel F = 101001)
(zum Beispiel F = 101001)
|R = Gn-1, Gn-2, . . ., G₂, G₁, G₀ (3)
(zum Beispiel R = 011001)
(zum Beispiel R = 011001)
Die Beträge der oben dargestellten Codes in
2er-Komplement-Darstellung sind
In den obengenannten Formeln ist der Code in
2er-Komplement-Darstellung positiv, wenn das MSB-Bit (most
significant bit) 0 ist, während der Code in
2er-Komplement-Darstellung negativ ist, wenn das MSB-Bit
(most significant bit) 1 ist. Daher können die Werte der
Codes in 2er-Komplement-Darstellung wie folgt berechnet
werden
Fv = -2⁵ + 2³ + 1 = -23 (Negative) (6)
Rv = 2⁴ + 2³ + 1 = 25 (Positive) (7)
Ähnlich wie bei der Berechnung in Fig. 4 führt der
Multiplizierer mit Pipelinestruktur in Fig. 5 wiederholt
die oben beschriebene Addition aus, um damit die gewünschte
Multiplikation zu erreichen. Wenn der Multiplikand F und
der Multiplikator R in Codes mit
2er-Komplement-Darstellung umgewandelt werden, so werden
die Werte wie folgt berechnet
worin Ri 0 oder 1 ist. Es wird daher, um die
Multiplikation von zwei Codes in
2er-Komplement-Darstellung auszuführen, der Multiplikand F
wiederholt auf sich selbst addiert, nachdem er
entsprechend des Wertes von Ri bei jeder Addition
weitergeschoben wird. Soweit es diese Berechnung betrifft,
so ist es dieselbe wie bei der Addition von Codes in
normaler Darstellung. Entsprechend der besonderen
Charakteristik der Codes in 2er-Komplement-Darstellung
unterscheidet sich die Multiplikation der Codes in
2er-Komplement-Darstellung von der mit
Codes in normaler Darstellung dann, wenn das MSB-Bit (most
significant bit) berechnet wird. Genauer gesagt, falls der
Wert des MSB-Bit (most significant bit), Rn-1 0 ist,
tauchen keine Schwierigkeiten bei der Ausführung der
Multiplikation im 2er-Komplement gegenüber der Berechnung
mit Codes in normaler Darstellung auf. Falls jedoch der
Wert des MSB-Bit (most significant bit) 1 ist, wird es
notwendig, daß der Multiplizierer das MSB-Bit, welches in
diesem Fall 1 ist, von der Zwischensumme die bis dahin
aufaddiert wurde, subtrahiert.
Entsprechend der allgemeinen Theorie für Codes in
2er-Komplement-Darstellung werden, um ein Codewort in
2er-Komplement-Darstellung zu erhalten, zuerst alle Bits
des Codeworts invertiert (was der
1er-Komplement-Darstellung entspricht), und anschließend
wird auf das invertierte Ergebnis eine binäre 1 addiert.
Wie in Fig. 1B gezeigt, wird daher die Subtraktion
ausgeführt, indem alle Bits eines Multiplikanden
invertiert werden und durch Zuführung eines Carry-Signals
vom logischen Pegel 1 zu dem Carry-Eingang cin.
Aufbauend auf diesem Prinzip, kann die Korrektur der Codes
in 2er-Komplement-Darstellung durchgeführt werden, wie
dies in Fig. 4 gezeigt ist, wobei die Ausgänge der
Zwischenspeicher 318, 319 mittels des NAND-Gatters 322
verknüpft werden und der Ausgang des NAND-Gatters 322 zu
dem Ausgang des Zwischenspeichers 320 addiert wird.
Im folgenden wird zum Verständnis der von den ODER-Gattern
401, 402 und 403 produzierten Zwischensummen ein Beispiel mit
einem 4-Bit langen Code in 2er-Komplement-Darstellung
gegeben. Sind die Codes im 2er-Komplement gegeben zu
F=1100 und R=1011,
Fv = -2³ + 2² = -4 (12)
Rv = -2³ + 2¹ + 2⁰ = -5 (13)
Bei dieser Operation werden der Multiplikator und der
Multiplikand entsprechend logisch mittels der UND-Gatter
303, 304 multipliziert, die entsprechenden Ausgänge der
obigen Gatter werden dem Addierer 310 zugeführt, so daß
der Ausgang einem Zwischenspeicher 311 zugeführt werden
kann.
Es kann daher durch Verwendung der speziellen
Charakteristik der Codes in 2er-Komplement-Darstellung die
Multiplikation dadurch ausgeführt werden, daß die zwei
Codes addiert werden. Gleichzeitig wird eine
Vorzeichenerweiterung ausgeführt, die in der obigen Formel
mit F bezeichnet ist. Die Vorzeichenerweiterung kann
wiederum ausgedrückt werden zu
Das Ergebnis obiger Berechnung wird mit dem Addierer 313
mit dem Multiplikanden, welcher mit dem Bit 2 des
Multiplikators logisch UND-verknüpft ist, addiert. Danach
werden die MSB-Bits (most significant bits) des
Zwischenspeichers 311 und des UND-Gatters 308 mittels des
ODER-Gatters 402 logisch ODER-verknüpft und der Ausgang
des ODER-Gatters 402 wird dem Zwischenspeicher 316
zugeführt, wobei dessen Ausgang sich ergibt zu
Es wird festgestellt, daß bei der obigen beispielhaften
Berechnung ein Übertrag (overflow) produziert wird, falls
eine Vorzeichenerweiterung gemacht wurde. Da jedoch der
Übertrag so wie bei der nächsten Stufe verwendet wird und
die Vorzeichenerweiterung selbstverständlich gemacht wird,
ist es nicht notwendig, die Codes zu korrigieren.
In dieser Weise werden, wenn der n-bit-Multiplikator und
-Multiplikand jeweils den Zwischenspeichern 301 und 302
zugeführt ist und das LSB₀ (least significant bit) und
LSB₁ des Multiplikators jeweils den UND-Gattern 303, 304
zugeführt ist, um mit dem n-bit-Multiplikanden logisch
UND-verknüpft (multipliziert) werden, die Ausgänge der
UND-Gatter mit dem Addierer 310 miteinander addiert. In
diesem Ausführungsbeispiel wird das ODER-Gatter 401 zur
Korrektur der Teilsumme verwendet, welche durch Addition
der Ausgänge der UND-Gatter 303, 304 erzeugt wurde. Die
Ausgänge des Addierers 310 und des ODER-Gatters 401 werden
in dem Zwischenspeicher 311 gespeichert. Die gleiche
Berechnung wird entsprechend ausgeführt, bis das MSB (most
significant bit) des Multiplikators verarbeitet wurde.
Schließlich werden das MSB von dem Zwischenspeicher 318
und der n-bit-Multiplikand, welcher durch den
Zwischenspeicher 319 geführt wird, mittels des
NAND-Gatters 322 verknüpft.
Als nächstes wird die Subtraktion zwischen dem Ausgang des
NAND-Gatters 322 und dem Ausgang des Zwischenspeichers 320
durch die Addition der obengenannten Ausgänge mittels des
Addierers 323 addiert, wobei der Carry-Eingang cin in
entgegengesetzter Weise zu den Carry-Eingängen cin der
Addierer 310, 313, 317 eine logische 1 erhält. Als Folge
der obengenannten Operationen wird eine erfolgreiche
Multiplikation von F×R ausgeführt.
Gegenüber dem obengenannten Fall, wo keine Korrektur des
2er-Komplements notwendig war, wird ein anderes Beispiel,
welches eine Korrektur des 2er-Komplements benötigt,
vorgestellt. Wenn z. B. eine Zwischensumme aus einer binären
11XXXX (wobei X eine "don't care"-Stelle darstellt)
besteht, können zwei Fälle auftreten. Der eine ist, es
liegt eine logische 1 vor, was eine Multiplikation
notwendig macht. Der andere, es liegt eine logische 0 vor,
was eine Multiplikation unnötig macht. Praktisch bedeutet
das, liegt eine 0 vor, gibt es keine Schwierigkeiten beim
Multiplizieren der Codes. Liegt jedoch eine logische 1
vor, so wird die Operation "Teilsumme + zu
multiplizierender Wert" wie folgt ausgedrückt, entsprechend
der Charakteristik des Multiplizierers.
Aus der obigen Operation ist verständlich, daß das
Resultat der Partialsummenoperation das Vorzeichen des
Codes von einer negativen Zahl zu einer positiven Zahl
umgekehrt hat. Um diese Fehlberechnung zu korrigieren,
werden die ODER-Gatter 401, 402, 403 benützt. Weiterhin,
falls das Ergebnis der Zwischensummenoperation das Vorzeichen
von positiv nach negativ invertiert, produzieren die
ODER-Gatter 401, 402, 403 erneut das MSB-Bit (most
significant bit), wodurch die Multiplikation geleistet
werden kann.
In Fig. 5 wird ein anderes Beispiel gezeigt, bei dem der
Multiplikand 12 und der Multiplikator 5 ist. Um nämlich,
um es kurz zu machen, einen Code in
2er-Komplement-Darstellung zu verarbeiten, zieht der
erfinderische Multiplizierer den Ausgang des NAND-Gatters
322 der letzten Stufe, welche das MSB-Bit (most
significant bit) des Codes im 2er-Komplement berechnet,
von dem Ausgang des Zwischenspeichers 320 ab, wobei der
Carry-Eingang mit einem gegebenen logischen Signal
versorgt wird, um dem Addierer die Subtraktion zu
ermöglichen. Bei der Berechnung der Zwischensumme wird, um
einen Überlauf zu korrigieren, das MSB-Bit (most
significant bit) der Zwischensumme logisch zu dem MSB-Bit des
Multiplikanden addiert, welche durch die UND-Gatter 304,
308, 315 entsprechend den jeweiligen Bits des
Multiplikators, bereitgestellt wird. Dadurch kann die
Multiplikation durch das Konvertieren des MSB-Bits (most
significant bit) ausgeführt werden.
Obwohl die Berechnungen in konkreter Weise mit
2er-Komplementen ausgeführt wurden, können die Ziele der
vorliegenden Erfindung leicht von auf diesem Gebiet
arbeitenden Fachleuten auch dann erreicht werden, wenn das
NAND-Gatter 322 in Fig. 4 zu einem UND-Gatter wird und das
Carry-Signal cin des Addierers 323 auf 0 gesetzt wird,
wenn der eine ein Code in 2er-Komplement-Darstellung und
der andere ein Code in Normaldarstellung anstelle von
einer Multiplikation mit zwei 2er-Komplementen, bei dem
das MSB (most significant bit) in dem digitalen
Signalprozessor korrigiert wird, ist.
Claims (6)
1. Digitale Multipliziervorrichtung zum Multiplizieren eines
Multiplikators und eines Multiplikanden in Binärformat,
bestehend aus mehreren Stufen, die eine Pipeline-Struktur
bilden, von denen jede durch Multiplizieren eines
unterschiedlichen Bits des Multiplikators mit dem
Multiplikanden ein Zwischenprodukt bereitstellt und eine
Einrichtung aufweist, die zum sukzessiven und
stellenrichtigen Addieren der Zwischenprodukte dient, wobei
der Multiplikand in Zweier-Komplement-Darstellung
verarbeitet wird und eine Einrichtung vorgesehen ist, die
bei negativen Multiplikanden eine Vorzeichenerweiterung bei
den durch das sukzessive Addieren der einzelnen
Zwischenprodukte erhaltenen Zwischensummen bewirkt, dadurch
gekennzeichnet, daß auch der Multiplikator in
Zweier-Komplement-Darstellung verarbeitet wird und eine
Einrichtung (322, 323) vorgesehen ist, die in Abhängigkeit des
höchstwertigen, vorzeichenbestimmenden Bits (MSB) des
Multiplikators, das höchstwertige Zwischenprodukt
komplementiert, bevor dieses zum Endprodukt zu den anderen
Zwischenprodukten addiert wird.
2. Vorrichtung nach Anspruch 1, dadurch gekennzeichnet, daß
die Vorzeichenerweiterung durch in jeder Stufe vorhandene
ODER-Gatter (401, 402, 403) bewirkt wird, welche als Eingang
das höchstwertige Bit der bisherigen Zwischensumme und das
höchstwertige Bit des durch die entsprechende Stufe
bereitgestellten Zwischenprodukts erhalten.
3. Vorrichtung nach Anspruch 1 oder 2, dadurch
gekennzeichnet, daß jede Stufe mehrere Zwischenspeicher
(305, 306; 303, 307) und einen Addierer (310, 313, 317)
aufweist.
4. Vorrichtung nach mindestens einem der vorhergehenden
Ansprüche, dadurch gekennzeichnet, daß die Invertierung der
höchstwertigen Teilsumme durch ein NAND-Gatter (322) bewirkt
wird.
5. Verfahren zur Ausführung in einer elektronischen
Multipliziervorrichtung zum Multiplizieren eines
Multiplikators und eines Multiplikanden in Binärformat, bei
dem der Multiplikand mit jedem der Bits des Multiplikators
multipliziert wird, die so entstehenden Zwischenprodukte in
Speichern zwischengespeichert werden und sukzessive in
Reihenfolge zu höherwertigen Zwischenprodukten hin in
Additionseinrichtungen stellenrichtig zu einem Endprodukt
aufaddiert werden, wobei der Multiplikand in
Zweier-Komplement-Darstellung verarbeitet wird und die durch
das sukzessive Aufaddieren der Zwischenprodukte entstehenden
Zwischensummen bei negativen Multiplikanden jeweils vor
Addition des nächsten Zwischenprodukts eine
Vorzeichenerweiterung erfahren, dadurch gekennzeichnet, daß
auch der Multiplikator in Zweier-Komplement-Darstellung
verarbeitet wird, wobei in Abhängigkeit des höchstwertigen,
vorzeichenbestimmenden Bits (MSB) des Multiplikators, das
höchstwertige Zwischenprodukt in einer
Komplementiervorrichtung komplementiert wird, bevor es zum
Endprodukt zu den anderen Zwischenprodukten addiert wird.
6. Verfahren nach Anspruch 5, dadurch gekennzeichnet, daß
anhand der logischen ODER-Verknüpfung des höchstwertigen Bits
des Multiplikanden und des höchstwertigen Bits der
vorhergehenden Zwischensumme erkannt wird, ob bei einer
momentanen Zwischensumme eine Vorzeichenerweiterung
durchzuführen ist.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1019890008480A KR920003494B1 (ko) | 1989-06-20 | 1989-06-20 | 디지탈 신호처리 시스템에서의 실시간 2's 콤플리멘트코드 숫자의 승산방법 및 회로 |
Publications (2)
Publication Number | Publication Date |
---|---|
DE4019646A1 DE4019646A1 (de) | 1991-01-10 |
DE4019646C2 true DE4019646C2 (de) | 1995-01-19 |
Family
ID=19287253
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE4019646A Expired - Fee Related DE4019646C2 (de) | 1989-06-20 | 1990-06-20 | Vorrichtung und Verfahren zum Multiplizieren von Datenwörtern in Zweier-Komplement-Darstellung |
Country Status (6)
Country | Link |
---|---|
US (1) | US5181184A (de) |
JP (1) | JP2608165B2 (de) |
KR (1) | KR920003494B1 (de) |
DE (1) | DE4019646C2 (de) |
FR (1) | FR2648585B1 (de) |
GB (1) | GB2234374B (de) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE69329260T2 (de) * | 1992-06-25 | 2001-02-22 | Canon Kk | Gerät zum Multiplizieren von Ganzzahlen mit vielen Ziffern |
US5404323A (en) * | 1993-11-09 | 1995-04-04 | United Microelectronics Corp. | Pipelined multiplier for signed multiplication |
US5734601A (en) | 1995-01-30 | 1998-03-31 | Cirrus Logic, Inc. | Booth multiplier with low power, high performance input circuitry |
US6347326B1 (en) * | 1999-03-02 | 2002-02-12 | Philips Electronics North America Corporation | N bit by M bit multiplication of twos complement numbers using N/2+1 X M/2+1 bit multipliers |
US6584483B1 (en) * | 1999-12-30 | 2003-06-24 | Intel Corporation | System and method for efficient hardware implementation of a perfect precision blending function |
US7124237B2 (en) * | 2002-10-03 | 2006-10-17 | Seagate Technology Llc | Virtual machine emulation in the memory space of a programmable processor |
EP1623307B1 (de) * | 2003-05-09 | 2015-07-01 | QUALCOMM Incorporated | Prozessorreduktionseinheit zum akkumulieren mehrerer operanden mit oder ohne sättigung |
US8074051B2 (en) | 2004-04-07 | 2011-12-06 | Aspen Acquisition Corporation | Multithreaded processor with multiple concurrent pipelines per thread |
DE102007056104A1 (de) * | 2007-11-15 | 2009-05-20 | Texas Instruments Deutschland Gmbh | Verfahren und Vorrichtung zur Multiplikation von Binäroperanden |
US12014184B2 (en) | 2019-10-31 | 2024-06-18 | SK Hynix Inc. | Arithmetic devices for neural network including an input distribution signal generation circuit, an output distribution signal generation circuit, and an output distribution signal compensation circuit |
US11915125B2 (en) | 2019-10-31 | 2024-02-27 | SK Hynix Inc. | Arithmetic devices for neural network |
CN112749796B (zh) * | 2019-10-31 | 2024-06-11 | 爱思开海力士有限公司 | 用于神经网络的计算设备 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR1149028A (fr) * | 1956-04-16 | 1957-12-19 | Electronique & Automatisme Sa | Multiplieur numérique perfectionné |
US3956622A (en) * | 1974-12-20 | 1976-05-11 | Bell Telephone Laboratories, Incorporated | Two's complement pipeline multiplier |
US4761756A (en) * | 1983-08-24 | 1988-08-02 | Amdahl Corporation | Signed multiplier with three port adder and automatic adjustment for signed operands |
US4736335A (en) * | 1984-11-13 | 1988-04-05 | Zoran Corporation | Multiplier-accumulator circuit using latched sums and carries |
-
1989
- 1989-06-20 KR KR1019890008480A patent/KR920003494B1/ko not_active IP Right Cessation
-
1990
- 1990-06-18 GB GB9013572A patent/GB2234374B/en not_active Expired - Fee Related
- 1990-06-18 FR FR9007569A patent/FR2648585B1/fr not_active Expired - Fee Related
- 1990-06-20 JP JP2162540A patent/JP2608165B2/ja not_active Expired - Fee Related
- 1990-06-20 DE DE4019646A patent/DE4019646C2/de not_active Expired - Fee Related
- 1990-06-20 US US07/540,686 patent/US5181184A/en not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
GB2234374B (en) | 1993-08-18 |
JPH0331930A (ja) | 1991-02-12 |
GB9013572D0 (en) | 1990-08-08 |
FR2648585A1 (fr) | 1990-12-21 |
US5181184A (en) | 1993-01-19 |
JP2608165B2 (ja) | 1997-05-07 |
GB2234374A (en) | 1991-01-30 |
KR910001535A (ko) | 1991-01-31 |
KR920003494B1 (ko) | 1992-05-01 |
FR2648585B1 (fr) | 1997-01-31 |
DE4019646A1 (de) | 1991-01-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE4302898C2 (de) | Arithmetische Recheneinheit mit Akkumulierfunktion | |
DE3787898T2 (de) | Verfahren und Vorrichtung zur arithmetischen Kodierung von binären Zahlen. | |
DE2246968A1 (de) | Einrichtung zur kombination, insbesondere multiplikation, zweier gleitkommazahlen | |
DE4019646C2 (de) | Vorrichtung und Verfahren zum Multiplizieren von Datenwörtern in Zweier-Komplement-Darstellung | |
DE2623986A1 (de) | Parallelrechenwerk | |
DE3609250C2 (de) | ||
DE2758130C2 (de) | Binärer und dezimaler Hochgeschwindigkeitsaddierer | |
DE3853379T2 (de) | Mit Pseudo-Division arbeitender arithmetischer Prozessor für trigonometrische Funktionen. | |
DE19618120B4 (de) | Parallelverarbeitungs-Divisionsschaltung | |
DE3701599A1 (de) | Vielfunktions-arithmetisch-logische-schaltung | |
EP0628183B1 (de) | Schaltungsanordnung zum digitalen multiplizieren von integer-zahlen | |
DE3434777C2 (de) | ||
EP0139207B1 (de) | Schaltung zur CSD-Codierung einer im Zweierkomplement dargestellten, binären Zahl | |
DE4010735A1 (de) | Digitale wortserielle multiplizierschaltung | |
DE3936503A1 (de) | Digitales verschwommen-folgerungssystem | |
DE2727051A1 (de) | Einrichtung zur binaeren multiplikation einer zahl mit einer summe aus zwei zahlen | |
DE3889746T2 (de) | Zähler. | |
DE3688434T2 (de) | Schneller bcd/binaer-addierer. | |
DE19644688A1 (de) | Schaltungsanordnung einer digitalen Multiplizierer-Baugruppe, zur Verarbeitung von Binärzahlen sowie Elementen aus GF(2 APPROX ) | |
DE3931545A1 (de) | Gleitkommaprozessor | |
DE3702204C2 (de) | ||
DE3132611A1 (de) | Digitale integriereinrichtung | |
DE68910419T2 (de) | Statistische Kodierungsvorrichtung zur Erzeugung von Kodewörtern mit einer variablen Anzahl von Binärelementen. | |
EP0416153B1 (de) | Verfahren für Datenverarbeitungsanlagen zur Division von, zu Beginn jeweils normalisierten, beliebig langen Operanden und Divisionswerk zur Durchführung des Verfahrens | |
EP0176821A1 (de) | DPCM-Codierer mit verringerter interner Rechenzeit |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
OP8 | Request for examination as to paragraph 44 patent law | ||
D2 | Grant after examination | ||
8364 | No opposition during term of opposition | ||
8339 | Ceased/non-payment of the annual fee |