DE4019646A1 - Vorrichtung fuer echtzeitmultiplikation in 2er-komplement-darstellung in einem digitalen signalprozessorsystem und ein verfahren dafuer - Google Patents

Vorrichtung fuer echtzeitmultiplikation in 2er-komplement-darstellung in einem digitalen signalprozessorsystem und ein verfahren dafuer

Info

Publication number
DE4019646A1
DE4019646A1 DE4019646A DE4019646A DE4019646A1 DE 4019646 A1 DE4019646 A1 DE 4019646A1 DE 4019646 A DE4019646 A DE 4019646A DE 4019646 A DE4019646 A DE 4019646A DE 4019646 A1 DE4019646 A1 DE 4019646A1
Authority
DE
Germany
Prior art keywords
multiplier
msb
complement
partial sum
output
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.)
Granted
Application number
DE4019646A
Other languages
English (en)
Other versions
DE4019646C2 (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

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 einen Echtzeitmultiplizierer (Hochgeschwindigkeitsmultiplizierer) zur Verwendung in einem digitalen Signalprozessorsystem und insbesondere auf einen Echtzeitmultiplizierer für die Multiplikation von im 2er-Komplement dargestellten Zahlen anstelle einer Multiplikation von nicht komplementär dargestellten Daten.
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 gültig 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 ungültiges 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 einige 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 Multiplikant 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 Teilsumme Ps in diesem Fall
Ps = X₀ · Y + X₁ · Y · 2 + X₂ · Y · 2²
Auf diese Weise werden die Teilsummen an jedem Addierer erhalten und das Ergebnis wird zu einer nächsten Stufe weitergegeben, um mit dem Multiplikanten 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.
Ein Ziel der Erfindung ist es daher, einen Betragsmultiplizierer anzugeben, der in der Lage ist, die Rechengeschwindigkeit zu erhöhen, indem er Gebrauch von dem Prinzip der 2er-Komplement-Darstellung macht.
Ein weiteres Ziel der vorliegenden Erfindung ist es, einen Betragsmultiplizierer zur direkten Verarbeitung von Codes im 2er-Komplement anzugeben, der ohne Umwandlung des Multiplikanten in das 2er-Komplement auskommt.
Ein weiteres Ziel der vorliegenden Erfindung ist es, einen verbesserten Betragsmultiplizierer anzugeben, welcher eine Pipelinestruktur für die Multiplikation von Codes mit 2er-Komplement aufweist.
Ein weiteres Ziel der vorliegenden Erfindung ist es, einen Multiplizierer anzugeben, der eine direkte 2er-Komplement-Multiplikation, ohne getrenntes Berechnen von Vorzeichen und Betrag des Multiplikanten, ausführt.
Ein weiteres Ziel der vorliegenden Erfindung ist es, ein Verfahren und eine Schaltung anzugeben, welche nicht nur die Multiplikation von Codes im 2er-Komplement richtigt ausführen, sondern die es darüber hinaus für die Pipelinestruktur möglich machen, eine Berechnung mit sehr hoher Geschwindigkeit auszuführen.
Um die obengenannten Ziele und Merkmale der vorliegenden Erfindung zu erreichen, enthält ein Betragsmultiplizierer mit Pipelinestruktur die folgenden Komponenten: einen Teilsummenkorrigierer zum Aufnehmen eines ersten vorbestimmten Bits des Multiplikators und eines zweiten vorbestimmten Bits des Multiplikanten, welcher den Multiplikator nacheinander, entsprechend oft der Anzahl der zweiten vorherbestimmten Bits und angefangen bei dem LSB (least significant bit) multipliziert und das MSB (most significant bit) der vorhergehenden Teilsumme mit dem MSB der momentanen Teilsumme logisch ODER-verknüpft, um die Teilsummen zu korrigieren; und einen 2er-Komplement-Korrigierer zum Subtrahieren des Ergebnisses der letzten Partialsumme von einem Wert, welcher durch NAND-Verknüpfen des Multiplikators mit dem MSB (most significant bit) des zweiten vorbestimmten Bits des Multiplikanten erhalten wird.
Für ein besseres Verständnis der Erfindung, und um zu zeigen, wie diese ausgeführt werden kann, wird im folgenden auf das Beispiel der Zeichnungen eingegangen, welche im einzelnen darstellen:
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 Teilsumme 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 Multiplikant 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 Multiplikant 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 = 1010001)
|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 Multiplikant 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 Multiplikant 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 Teilsumme, 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 Multiplikanten 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 Teilsummen 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 Multiplikant 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 Multiplikanten, 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 -Multiplikant 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-Multiplikant 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-Multiplikant, 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 Teilsumme 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 Partialsummenoperationen 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 Teilsummenoperation 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 Multiplikant 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 Teilsumme wird, um einen Überlauf zu korrigieren, das MSB-Bit (most significant bit) der Teilsumme logisch zu dem MSB-Bit des Multiplikanten 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.
Die vorliegende Erfindung ist daher insoweit vorteilhaft, als sie eine korrekte Berechnung eines Codes in 2er-Komplement-Darstellung durchführt und eine hohe Rechengeschwindigkeit zuläßt, die ein Verdienst der Pipelinestruktur ist, sie macht es möglich, durch Korrigieren des MSB-Bits (most significant bit) der Partialsumme und des MSB-Bits der zu multiplizierenden Zahl, 2er-Komplemente zu berechnen, was in dem Betragsmultiplizierer mit Pipelinestruktur unmöglich ist.
Obwohl die Erfindung insbesondere anhand von einem bevorzugten Ausführungsbeispiel gezeigt und beschrieben wurde, wird es für Fachleute verständlich sein, daß Veränderungen im Detail gemacht werden können, ohne damit von der Idee und der Reichweite der Erfindung abzuweichen.

Claims (5)

1. Vorrichtung zur Multiplikation von Codes in 2er- Komplement-Darstellung in einem Multiplizierer mit Pipelinestruktur mit einer Vielzahl von Zwischenspeichern (301, 302, 305, 306, 311, 312, 303, 307, 316, 314, 318, 319, 320, 321, 324, 325) und einer Vielzahl von Addierern (310, 313, 317, 323) gekennzeichnet durch
eine Einrichtung zur Korrektur von Teilsummen (401, 402, 403, 311, 316, 320), welche ein erstes vorherbestimmtes Bit eines Multiplikators und ein zweites vorherbestimmtes Bit eines Multiplikanten aufnimmt, einen Multiplikator nacheinander, angefangen bei dem LSB entsprechend oft der Zahl der zweiten vorherbestimmten Bit multipliziert, und ein MSB von einer vorhergehenden Teilsumme logisch ODER-verknüpft mit einem MSB von einer momentanen Teilsumme, um auf diese Weise die Teilsumme zu korrigieren, und
eine Einrichtung zur Korrektur von 2er-Komplementen 323, 322) zur Subtraktion des Ausgangs einer letzten Teilsumme von einem Wert, welcher durch NAND-Verknüpfen des Multiplikators und dem MSB des zweiten vorherbestimmten Bits des Multiplikanten erhalten wird.
2. Vorrichtung nach Anspruch 1, dadurch gekennzeichnet, daß die Einrichtung zur Korrektur der Teilsummen umfaßt:
Einrichtungen (401, 402, 403), welche wirkungsmäßig mit den entsprechenden MSB einer vorhergehenden Teilsumme und dem Multiplikator verbunden sind, um die entsprechenden MSB logisch ODER zu verknüpfen, und
Einrichtungen (311, 316, 320), welche wirkungsmäßig mit dem Ausgang der genannten Einrichtungen zur ODER-Verknüpfung und dem Ausgang einer entsprechenden Teilsumme verbunden sind, zum Erstellen der korrigierten Teilsumme.
3. Vorrichtung nach Anspruch 2, dadurch gekennzeichnet, daß die Einrichtung zur Korrektur der 2er-Komplemente umfaßt:
Einrichtung (322), wirkungsmäßig verbunden mit dem Multiplikator und dem Multiplikanten, zum selektiven Übertragen des Multiplikators aufgrund des MSB des Multiplikanten, und
mit der Einrichtung zum Übertragen verbundene Einrichtung (323) zur Subtraktion der letzten Teilsumme von dem Ausgang der Übertragungseinrichtung.
4. Eine Vorrichtung nach Anspruch 2, dadurch gekennzeichnet, daß die Anzahl der Einrichtungen (401, 402, 403) zur ODER-Verknüpfung um 2 kleiner ist als die Anzahl der zweiten vorherbestimmten Bits des Multiplikanten.
5. Verfahren zur Multiplikation von Codes in 2er-Kom­ plement-Darstellung in einen Multiplizierer mit Pipelinestruktur, gekennzeichnet durch
Empfangen eines ersten vorherbestimmten Bits eines Multiplikators und eines zweiten vorherbestimmten Bits eines Multiplikanten,
Erstellen eines Multiplikators, der entsprechend oft der Zahl der zweiten vorherbestimmten Bits multipliziert wird, angefangen bei dem LSB,
logische ODER-Verknüpfung eines MSB der vorhergehenden Teilsumme mit einem MSB der momentanen Teilsumme zur Korrektur der Teilsummen, und
Subtrahieren des Ausgangs der letzten Teilsumme von einem Wert, der durch logische NAND-Verknüpfung des Multiplikators mit dem MSB des zweiten vorherbestimmten Bits des Multiplikanten erhalten wird.
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 true DE4019646A1 (de) 1991-01-10
DE4019646C2 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

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3956622A (en) * 1974-12-20 1976-05-11 Bell Telephone Laboratories, Incorporated Two's complement pipeline multiplier

Family Cites Families (3)

* 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é
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

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3956622A (en) * 1974-12-20 1976-05-11 Bell Telephone Laboratories, Incorporated Two's complement pipeline multiplier

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
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
DE4019646C2 (de) 1995-01-19
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
DE1549476B2 (de) Anordnung zur ausfuehrung von divisionen
DE1162111B (de) Gleitkomma-Recheneinrichtung
DE4019646C2 (de) Vorrichtung und Verfahren zum Multiplizieren von Datenwörtern in Zweier-Komplement-Darstellung
DE1549477B1 (de) Einrichtung zur schnellen akkumulation einer anzahl mehr stelliger binaerer operanden
DE2623986A1 (de) Parallelrechenwerk
DE3609250C2 (de)
DE69434806T2 (de) Verfahren, System und Vorrichtung zum automatischen Entwurf einer Multiplikatorschaltung und durch die Durchführung dieses Verfahrens entworfene Multiplikatorschaltung
DE2758130C2 (de) Binärer und dezimaler Hochgeschwindigkeitsaddierer
DE19618120B4 (de) Parallelverarbeitungs-Divisionsschaltung
DE10013068C2 (de) Potenzierungsoperationsvorrichtung
DE3701599A1 (de) Vielfunktions-arithmetisch-logische-schaltung
EP0628183B1 (de) Schaltungsanordnung zum digitalen multiplizieren von integer-zahlen
DE3434777C2 (de)
DE3440680C2 (de)
EP0139207A2 (de) Schaltung zur CSD-Codierung einer im Zweierkomplement dargestellten, binären Zahl
DE3340362A1 (de) Verfahren und vorrichtung zur division von bcd-zahlen
DE4010735A1 (de) Digitale wortserielle multiplizierschaltung
DE3931545A1 (de) Gleitkommaprozessor
DE2727051A1 (de) Einrichtung zur binaeren multiplikation einer zahl mit einer summe aus zwei zahlen
DE3132611C2 (de)
DE19644688A1 (de) Schaltungsanordnung einer digitalen Multiplizierer-Baugruppe, zur Verarbeitung von Binärzahlen sowie Elementen aus GF(2 APPROX )
EP0416153B1 (de) Verfahren für Datenverarbeitungsanlagen zur Division von, zu Beginn jeweils normalisierten, beliebig langen Operanden und Divisionswerk zur Durchführung des Verfahrens
DE3700740A1 (de) Linearapproximationsumformschaltung

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