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-Darstellung

Info

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
Application number
DE4019646A
Other languages
English (en)
Other versions
DE4019646A1 (de
Inventor
Dae-Yoon Shim
Jong-Sang Lim
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of DE4019646A1 publication Critical patent/DE4019646A1/de
Application granted granted Critical
Publication of DE4019646C2 publication Critical patent/DE4019646C2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • G06F7/53Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel
    • G06F7/5306Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel with row wise addition of partial products
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/38Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/3804Details
    • G06F2207/386Special constructional features
    • G06F2207/3884Pipelining

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)
|R = Gn-1, Gn-2, . . ., G₂, G₁, G₀ (3)
(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.
DE4019646A 1989-06-20 1990-06-20 Vorrichtung und Verfahren zum Multiplizieren von Datenwörtern in Zweier-Komplement-Darstellung Expired - Fee Related DE4019646C2 (de)

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 (11)

* Cited by examiner, † Cited by third party
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
KR101005718B1 (ko) * 2003-05-09 2011-01-10 샌드브리지 테크놀로지스, 인코포레이티드 포화와 함께 또는 포화 없이 다중 오퍼랜드들의 누산을 위한 프로세서 감소 유닛
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
CN112749796A (zh) * 2019-10-31 2021-05-04 爱思开海力士有限公司 用于神经网络的计算设备
US11915125B2 (en) 2019-10-31 2024-02-27 SK Hynix Inc. Arithmetic devices for neural network

Family Cites Families (4)

* Cited by examiner, † Cited by third party
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

Also Published As

Publication number Publication date
JPH0331930A (ja) 1991-02-12
GB2234374B (en) 1993-08-18
GB9013572D0 (en) 1990-08-08
FR2648585A1 (fr) 1990-12-21
DE4019646A1 (de) 1991-01-10
KR920003494B1 (ko) 1992-05-01
JP2608165B2 (ja) 1997-05-07
FR2648585B1 (fr) 1997-01-31
US5181184A (en) 1993-01-19
GB2234374A (en) 1991-01-30
KR910001535A (ko) 1991-01-31

Similar Documents

Publication Publication Date Title
DE4302898C2 (de) Arithmetische Recheneinheit mit Akkumulierfunktion
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
DE1549477B1 (de) Einrichtung zur schnellen akkumulation einer anzahl mehr stelliger binaerer operanden
DE3609250C2 (de)
DE2758130C2 (de) Binärer und dezimaler Hochgeschwindigkeitsaddierer
DE19618120B4 (de) Parallelverarbeitungs-Divisionsschaltung
DE3701599A1 (de) Vielfunktions-arithmetisch-logische-schaltung
EP0628183B1 (de) Schaltungsanordnung zum digitalen multiplizieren von integer-zahlen
DE3434777C2 (de)
DE3440680C2 (de)
DE2826773A1 (de) Verfahren und schaltungsanordnung zum feststellen der wertigkeit von ziffern in arithmetischen operationen mit dezimalrechnern
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
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
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
DE10050589B4 (de) Vorrichtung und Verfahren zur Verwendung beim Durchführen einer Gleitkomma-Multiplizier-Akkumulier-Operation
DE2432979C3 (de) Mit gemischter Zahlendarstellung arbeitende Einrichtung zum Multiplizieren zweier komplexer Zahlen und Addieren einer dritten komplexen Zahl zum Produkt

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