DE69722131T2 - Verfahren und Schaltungsanordnung zur Multiplikation mit einer Abrund-Funktion - Google Patents

Verfahren und Schaltungsanordnung zur Multiplikation mit einer Abrund-Funktion Download PDF

Info

Publication number
DE69722131T2
DE69722131T2 DE69722131T DE69722131T DE69722131T2 DE 69722131 T2 DE69722131 T2 DE 69722131T2 DE 69722131 T DE69722131 T DE 69722131T DE 69722131 T DE69722131 T DE 69722131T DE 69722131 T2 DE69722131 T2 DE 69722131T2
Authority
DE
Germany
Prior art keywords
product
bits
adder
positive
multiplier
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 - Lifetime
Application number
DE69722131T
Other languages
English (en)
Other versions
DE69722131D1 (de
Inventor
Kazumasa Minato-ku Suzuki
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.)
NEC Corp
Original Assignee
NEC Corp
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 NEC Corp filed Critical NEC Corp
Publication of DE69722131D1 publication Critical patent/DE69722131D1/de
Application granted granted Critical
Publication of DE69722131T2 publication Critical patent/DE69722131T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime 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
    • 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
    • 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
    • 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/499Denomination or exception handling, e.g. rounding or overflow
    • G06F7/49942Significance control
    • G06F7/49947Rounding
    • G06F7/49963Rounding to nearest

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Complex Calculations (AREA)

Description

  • HINTERGRUND DER ERFINDUNG
  • Die vorliegende Erfindung betrifft ein Multiplikationssystem für digitale Signalverarbeitung und insbesondere ein Multiplikationsverfahren mit einer positiven/negativen symmetrischen Rundungsfunktion zum Vermindern eines Fehlers, und eine Schaltung hierfür.
  • Multiplikationsschaltungen mit einer Rundungsfunktion werden üblicherweise verwendet, um die Genauigkeit des Multiplikationsergebnisses zu verbessern, wie z. B. in der japanischen Patent-Offenlegungsschrift Nr. 6-053228 und 6-103304 gelehrt. Die herkömmliche Multiplikationsschaltung hat jedoch die folgenden ungelösten Probleme (1) bis (3).
    • (1) Wenn mehrere Produkte akkumuliert werden, wird die erwünschte Genauigkeit nicht mit der Rundungsfunktion erzielt. Insbesondere, wenn eine EINS zu einem Bit gerade unterhalb der zu rundenden Zahl addiert wird, ist der Mittelwert der zu rundenden Zahl keine NULL. Die resultierenden Fehler werden nacheinander akumuliert.
    • (2) Ein Verfahren nach Art einer Fehlerkorrektur ist für einen Mikroprozessor oder eine ähnliche Anwendung nicht durchführbar, die eine Korrektur, zu jedem Operationszeitpunkt durchführt, um das Operationsergebnis in einer Registerdatei zu speichern. Unter Annahme einer Multiplikation mit n Bits tritt ein Wert zum Korrigieren eines Fehlers genauer gesagt lediglich bei einer Zahl auf, die sogar geringer als das niedrigste Bit eines Produktes mit 2n Bits ist. Daher würde der Korrekturwert, sofern das Produkt durch Korrektur zu jedem Rechnungszeitpunkt gerundet werden sollte, abgerundet werden und würde daher keinen Korrektureffekt im resultierenden Produkt haben.
    • (3) Die Schaltung ist nicht praktikabel ohne Vergrößern der Hardware. Die in der Offenlegungsschrift Nr. 6-103304 vorgeschlagene Schaltung weist beispielsweise zusätzlich einen Subtrahierer zur Korrektur des mittleren Fehlers der Rundungsberechnung auf. Dies vergrößert den Hardware-Aufwand und damit auch die Verarbeitungszeit.
  • Die Druckschrift EP-A-0 562 513 aus dem Stand der Technik beschreibt eine Rundungsoperationsschaltung für ein arithmetisches Logikmittel eines Signalprozessors, die zum Zählen von Brüchen über 1/2 als Eins und Verwerfen des Restes für die positiven und negativen Zahlen vorgesehen ist, die eine Decoderschaltung mit einem (n + 1)-langen Eingang umfaßt, an den ein erstes über ein Zweier-Komplement dargestelltes Eingangssignal und ein zweites n Bit langes Eingangssignal zum Angeben der Rundungsposition des ersten Signals eingegeben werden, wenn das erste Eingangssignal positiv ist, wird ein Signal, bei dem das Bit an der Rundungsposition gleich "1" ist und der Rest gleich "0" ist, ausgegeben, basierend auf dem zweiten Eingangssignal, und wenn das erste Eingangssignal negativ ist, wird ein Signal, bei dem die weniger signifikanten Bits als das Bit bei der Rundungsposition alle gleich "1" sind und der Rest gleich "0" ist, ausgegeben; ein arithmetische Logikmittel zum Addieren des Ausgangssignal dieser Decoderschaltung und des ersten Eingangssignals; und eine Abrundungsschaltung zum Hinzuzählen einer 1 und zum Wegschneiden von 0, positiv und negativ symmetrisch um irgendeine Rundungsposition, um eine schnelle und genaue Rundungsoperation zu ermöglichen.
  • ZUSAMMENFASSUNG DER ERFINDUNG
  • Es ist daher ein Ziel der vorliegenden Erfindung, ein Multiplikationsverfahren bereitzustellen, das einen Fehler speziell für eine Rundung vermindert und dabei die Genauigkeit im Falle einer Multiplikation und der Akkumulation der Ergebnisse der Multiplikation verbessert, und eine Schaltung hierfür.
  • Es ist ein weiteres Ziel der vorliegenden Erfindung, ein Mul-tiplikationsverfahren bereitzustellen, das eine genaue Be rechnung garantiert, selbst wenn es beispielsweise bei einem Mikroprozessor angewandt wird, die eine Multiplikation und ein Runden durch eine einzelne Berechnung abschließt, und eine Schaltung hierfür.
  • Es ist ein weiteres Ziel der vorliegenden Erfindung, eine Multiplikationsschaltung bereitzustellen, die ein Minimum an zusätzlicher Hardware benötigt und eine genaue Berechnung sicherstellt.
  • Es ist ein Verfahren zum Runden eines Multiplikationsproduktes bereitgestellt, wie es in Anspruch 1 definiert ist.
  • Eine Multiplikationsschaltung, die das Verfahren durchführt, ist in Anspruch 2 angegeben.
  • Weitere Ausführungsbeispiele der Erfindung sind auch in den beigefügten abhängigen Ansprüchen angegeben.
  • KURZE BESCHREIBUNG DER ZEICHNUNG
  • Die obigen und weitere Ziele, Merkmale und Vorteile der vorliegenden Erfindung werden aus der nachfolgenden detaillierten Beschreibung mit Bezug auf die beigefügte Zeichnung deutlich, in der:
  • 1 ein Blockdiagramm ist, das schematisch eine herkömmliche Multiplikationsschaltung mit einer Rundungsfunktion zeigt;
  • 2 die Operation der in 1 dargestellten Schaltung zeigt;
  • 3 ein Blockdiagramm ist, das schematisch ein herkömmliches digitales Berechnungssystem mit einer Rundungsfunktion zeigt;
  • 4 ein Blockdiagramm ist, das schematisch ein erstes Ausführungsbeispiel der Multiplikationsschaltung mit einer Rundungsfunktion gemäß der vorliegenden Erfindung zeigt;
  • 5 das Operationsprinzip des ersten Ausführungsbeispiels zeigt;
  • 6A und 6B jeweils eine spezielle Operation des ersten Ausführungsbeispiels zeigen;
  • 7 ein schematisches Blockdiagramm ist, das ein zweites Ausführungsbeispiel der vorliegenden Erfindung zeigt;
  • 8 die allgemeine Konfiguration eines Unterproduktaddierers zeigt, der im zweiten Ausführungsbeispiel enthalten ist;
  • 9 ein schematisches Blockdiagramm ist, das ein drittes Ausführungsbeispiel der vorliegenden Erfindung zeigt.
  • BESCHREIBUNG DER BEVORZUGTEN AUSFÜHRUNGSBEISPIELE
  • Für ein besseres Verständnis der vorliegenden Erfindung wird kurz auf eine herkömmliche Multiplikationsschaltung mit einer Rundungsfunktion, wie sie in 1 gezeigt ist, Bezug genommen. Wie gezeigt, ist die Multiplikationsschaltung aus einem Unterproduktgenerator 1, einem Unterproduktaddierer 2, und einem Addierer 3 aufgebaut. Ein Multiplikand X und ein Multiplikator Y werden dem Unterproduktgenerator 1 eingegeben. Der Unterproduktgenerator 1 gibt mehrere Unterproduktterme 24 aus. Unter der Annahme von acht Bits gibt der Unterproduktgenerator 1 fünf Terme unter Anwendung der Booth-Methode aus. Wenn die fünf Terme vom Unterproduktaddierer 2 addiert wer den, bleiben zwei Terme 25 übrig. Der Addierer 3 addiert die beiden Terme 25 und gibt dabei ein Produkt Z aus.
  • Wenn ein Multiplikator und ein Multiplikand mit jeweils n Bits multipliziert werden, wird ein Produkt mit 2n Bits erzeugt. Das Produkt mit 2n Bits wird auf n Bits gerundet, da die nachfolgende Berechnung oftmals lediglich eine Genauigkeit von n Bits hat. Beispielsweise werden, wenn die oberen n Bits ausgewählt sind, die unteren n Bits durch Aufrunden, Abrunden oder Runden auf die nächste ganze Zahl gerundet. Runden auf die nächste ganze Zahl ist hinsichtlich der Genauigkeit wünschenswert. Genauer gesagt, wenn das Bit gerade unterhalb der oberen n Bits eine EINS ist, wird es aufgerundet; wenn dieses Bit eine NULL ist, wird es abgerundet . Wenn ein Multiplikator und ein Multiplikand mit jeweils 8 Bits multipliziert werden, hat das Produkt vor dem Runden 16 Bits. In diesem Fall wird eine binäre "10000000" zu den unteren acht Bits des Produkts mit sechzehn Bits für eine Korrektur addiert, und dann werden die oberen acht Bits erzeugt. Dies kann durchgeführt werden, falls der Unterproduktaddierer 2 mit einem zusätzlichen Eingang 21 ausgestattet ist und falls der Korrekturterm (Rundungskorrekturterm) dem Eingang 21 zugeführt wird. Die Ausgabe mit den beiden Termen 25 vom Unterproduktaddierer 2 werden vom Addierer 3 addiert.
  • Wie in 2 gezeigt, wird die Produktausgabe von der herkömmlichen Schaltung aus 1, sei sie positiv oder negativ, auf den nächsten größeren Wert gerundet, falls ein zu rundender Abschnitt größer als eine binäre "10000000" ist, oder abgerundet, falls er kleiner als "01111111" ist, wie durch die Punkte angegeben. Die in 2 gezeigten Kreise zeigen, daß der darüberliegende Abschnitt keinen solchen Wert enthält.
  • Die Signalverarbeitung bezieht oftmals beispielsweise die Addition mehrerer Produkte mit ein. In dieser Hinsicht hat der Rundungsvorgang der beschriebenen Art ein Problem, daß der Mittelwert der gerundeten Abschnitte keine NULL ist und in Form eines Fehlers auftritt. Um einen mittleren akkumulativen Fehler zu vermindern, schlägt die zuvor erwähnte japanische Patentoffenlegungsschrift Nr. 6-103304 ein Verfahren vor, das einen zu rundenden mittleren Fehler vor dem Runden subtrahiert. Genauer gesagt lehrt diese Druckschrift ein digitales Berechnungssystem, das mehrere Fehlerkorrekturschaltungen aufweist, von denen jede einer speziellen Rundungsschaltung vorhergeht, die anders als die erste Rundungsschaltung ist. Jede Fehlerkorrekturschaltung subtrahiert einen Fehlerkorrekturwert, um eine Differenz zwischen dem aktuellen Ergebnis und dem idealen Ergebnis zu vermeiden. Genauer gesagt, wie in 3 gezeigt, multipliziert ein Multiplizierer 10 einen Multiplikanden X und einen Multiplikator Y. Ein Addierer 11 addiert einen Additionsterm. Ein Subtrahierer 12 subtrahiert einen Korrekturterm zum Auslöschen eines mittleren Fehlers von der Ausgabe des Addierers 11. Schließlich rundet eine Rundungseinheit 13 die Ausgabe des Subtrahierers 12 und gibt ein Produkt Z aus.
  • Die mit Bezug auf 1-3 beschriebenen herkömmlichen Technologien haben einige ungelöste Probleme, wie zuvor diskutiert.
  • Bevorzugte Ausführungsbeispiele der vorliegenden Erfindung, die frei von den Problemen der herkömmlichen Technologien sind, werden nachstehend beschrieben.
  • Erstes Ausführungsbeispiel
  • Bezugnehmend auf 4 ist eine Multiplikationsschaltung mit einer Rundungsfunktion gezeigt, die die vorliegende Erfindung verkörpert. Wie gezeigt, weist die Schaltung einen Unterproduktgenerator 1, dem ein Multiplikand X und ein Multiplikator Y eingegeben werden, einen Unterproduktaddierer 2, einen Addierer 3 und ein XNOR-Gatter 4 (XNOR = Exklusive NOR) auf, dem die Vorzeichen-Bits des Multiplikanden X und des Multiplikators Y eingegeben werden. Ein Rundungskorrekturterm 21 wird dem Unterproduktaddierer 2 eingegeben. Die Ausgabe des XNOR-Gatters 4 wird dem Addierer 3 als eine Übertragseingabe 20 zugeführt.
  • Der Unterproduktgenerator 1 erzeugt mehrere Unterproduktterme 24 aus dem dort eingegebenen Multiplikanden X und Multiplikator Y. Beispielsweise gibt, wenn der Multiplikator X und der Multiplikator Y jeweils 8 Bits haben, der Unterproduktgenerator 1 fünf Unterproduktterme 24 unter Anwendung der Booth-Methode aus. Die Unterproduktterme 24 werden dem Unterproduktaddierer 2 eingegeben und dabei addiert. Der Unterproduktaddierer 2 wird beispielsweise durch einen Carry-Save-Addierer implementiert. Der Rundungskorrekturterm 21 wird dem Unterproduktaddierer 2 zusammen mit den Unterprodukttermen 24 eingegeben. Im Korrekturterm 21 ist das höchste Bit der zu rundenden Zahl eine NULL, während die niedrigeren Bits als das höchste Bit EINSen sind. Es wird beispielsweise angenommen, daß der Multiplikand X und der Multiplikator Y jeweils 8 Bits haben, und daß die oberen 8 Bits als ein Berechnungsergebnis übrig bleiben sollen, während die niedrigeren 8 Bits gerundet werden sollen. Dann ist der Korrekturterm 21 eine binäre "01111111". Der Unterproduktaddierer 2, der beispielsweise durch einen Carry-Save-Addierer implementiert ist, gibt zwei Ergebnisse 25 der Unterproduktaddition aus. Der Addierer 3 addiert die beiden Ausgaben 25 des Unterproduktaddierers 2 und erzeugt ein Produkt Z.
  • Die Vorzeichen-Bits des Multiplikanden X und des Multiplikators Y werden dem XNOR-Gatter 4 eingegeben. Das XNOR-Gatter 4 gibt eine EINS aus, falls das Produkt positiv ist, oder gibt eine NULL aus, falls es negativ ist. Die Ausgabe des XNOR-Gatters 4 wird dem Übertragseingang 20 des Addierers 3 zugeführt.
  • Die Operation des beispielhaften Ausführungsbeispiel wird nachstehend beschrieben. Zuerst wird auf die 5 Bezug genommen, um zu beschreiben, wie das Multiplikationsergebnis gerundet wird. In 5 ist jeder Abschnitt, der sich von einem Kreis zu einem Punkt erstreckt, der zu rundende Bereich; der Punkt ist in diesem Bereich enthalten, der Kreis ist jedoch nicht enthalten.
  • Falls das Multiplikationsergebnis positiv ist, und falls die Zahl gerade unterhalb der zu rundenden Zahl eine EINS ist, dann wird das Ergebnis aufgerundet, wie im herkömmlichen System. Falls die Zahl gerade unterhalb der zu rundenden Zahl eine NULL ist, dann wird das Multiplikationsergebnis abgerundet, wie im herkömmlichen System. Dieses Ablaufschema entspricht einem Rundungsvorgang, der Werte oberhalb 0.5 einschließlich aufrundet und Werte unterhalb 0.5 abrundet.
  • Es wird angenommen, daß das obige Multiplikationsergebnis negativ ist, und daß lediglich die Zahl gerade unterhalb der zu rundenden Zahl eine EINS ist, während die Zahlen darunter NULLen sind. Dann werden Werte kleiner als der obige Wert abgerundet, während Werte größer als derselbe aufgerundet werden. Dies entspricht einem negativen Rundungsvorgang, der Werte unterhalb 0.5 einschließlich abrundet und Werte oberhalb 0.5 aufrundet.
  • Mit der obigen Berechnung ermöglicht das beispielhafte Ausführungsbeispiel, daß die Ausgabe eines mittleren Fehlers, wenn das Ergebnis positiv ist, und die Ausgabe eines mittleren Fehlers, wenn es negativ ist, einander auslöschen. Folglich ist der Fehler im wesentlichen Null, wenn gleichmäßig verteilte Produkte akkumuliert werden.
  • 6A und 6B demonstrieren das Tatsache, daß das beispielhafte Ausführungsbeispiel das in 5 gezeigte Ergebnis erzeugt. Auch wenn 6A und 6B Multiplikationen mit vier Bits zeigen, ist das Ausführungsbeispiel mit einer beliebigen gewünschten Bitlänge anwendbar. Wie in 6A gezeigt, wird angenommen, daß eine "1000" (= –8) und eine "1001" (= –7) ein beispielhafter Multiplikand X bzw. ein beispielhafter Multiplikator Y sind, was zu einem positiven Produkt führt, und dazu, daß die niedrigeren vier Bits gleich "1000" sind. Das Produkt dieses Multiplikanden X und Multiplikators Y ist "00111000" (= 56) mit acht Bits. In diesem Fall ist der Korrekturterm 21, der dem Unterproduktaddierer 2 einzugeben ist, gleich "0111". Wenn das Produkt positiv ist, haben das Vorzeichen-Bit des Multiplikanden X und das des Multiplikators Y den gleichen Wert, was dazu führt, daß das XNOR-Gatter 4 eine "1" ausgibt. Da das Produkt (= "00111000"), der Korrekturterm (= "0111") und die Ausgabe des XNOR-Gatters 4 (= "1") addiert werden, ist das Ergebnis (korrigiertes Produkt) gleich "01000000". Wenn dieses Ergebnis gerundet wird, wird eine "0100" erzeugt (siehe das in 6A gezeigte KORRIGIERTE PRODUKT). Auf diese Weise wird die "1000" aufgerundet, wenn das Ergebnis positiv ist.
  • Wie in 6B gezeigt, wird angenommen, daß eine "1000" (= –8) und eine "0001" (= 1) ein beispielhafter Multiplikand X bzw. ein beispielhafter Multiplikator Y sind, was zu einem negativen Produkt führt, und dazu, daß die niedrigeren vier Bits gleich "1000" sind. Das Produkt ist "11111000" (= –8). In diesem Fall ist der Korrekturterm 21 gleich "0111". Wenn das Produkt negativ ist, sind das Vorzeichen-Bit des Multiplikanden X und das des Multiplikators Y unterschiedlich voneinander, was dazu führt, daß das XNOR-Gatter 4 eine "0" ausgibt. Im Ergebnis ist die Summe des Produktes, Korrekturwertes und der Ausgabe des XNOR-Gatters 4 gleich "11111111". Dieses Ergebnis wird auf "1111" gerundet (siehe in 6B gezeigtes KORRIGIERTES PRODUKT). Wenn das Ergebnis negativ ist, wird "1000" abgerundet.
  • Wie oben ausgeführt, werden, wenn das Produkt positiv ist, ein Wert mit einer EINS am höchsten Bit der zu rundenden Bits (viertes Bit) und NULLen an den niedrigen Bits als ein Korrekturwert ("0111" + "1" = "1000") verwendet. Wenn das Produkt negativ ist, wird ein Wert mit einer NULL am höchsten Bit der zu rundenden Bits und mit EINSen an den niedrigeren Bits als ein Korrekturwert (= "0111") verwendet. Dies stimmt mit dem in 5 gezeigten Ergebnis überein.
  • Zweites Ausführungsbeispiel
  • Bezugnehmend auf 7 wird ein alternatives Ausführungsbeispiel der vorliegenden Erfindung beschrieben. In 7 werden gleiche oder ähnliche strukturelle Elemente zu den in 4 gezeigten Elementen mit den gleichen Bezugszeichen bezeichnet. Wie gezeigt, werden ein Multiplikand X und ein Mul tiplikator Y dem Unterproduktgenerator 1 eingegeben. Mehrere Unterproduktterme 24 werden vom Unterproduktaddierer 2 addiert. Der Rundungskorrekturwert 21 wird dem Unterproduktaddierer 2 zusammen mit den Unterprodukttermen 24 eingegeben. Der Unterproduktaddierer 2, der beispielsweise durch einen Carry-Save-Addierer implementiert ist, gibt zwei Terme 25 aus. Der Addierer 3 addiert die beiden Terme 25 und gibt ein Produkt Z aus. Das XNOR-Gatter 4 empfängt die Vorzeichen-Bits des Multiplikanden X und des Multiplikators Y und gibt eine EINS aus, falls das Produkt positiv ist, oder gibt eine NULL aus, falls es negativ ist. In dem beispielhaften Ausführungsbeispiel wird die Ausgabe 22 des XNOR-Gatters 4 auch dem Unterproduktaddierer 2 zugeführt.
  • In diesem Ausführungsbeispiel hat der Unterproduktaddierer 2 einen in 8 gezeigten Aufbau. Wie gezeigt, haben die vom Unterproduktgenerator 1 ausgegebenen Unterproduktterme Bits, die nacheinander entsprechend der Zahlpositionen des Multiplikators Y verschoben sind. Genauer gesagt, werden unter der Annahme einer Multiplikation mit acht Bits und der Booth-Methode fünf Unterproduktterme 24 ausgegeben. Vier (241 244 , 8) der fünf Unterproduktterme 24 haben jeweils neun Bits. Einer (241 ) der vier Terme (241 244 ) enthält das niedrigste Bit des Produktes. Drei (242 244 ) der verbleibenden Terme sind jeweils um zwei Bits zu den oberen Positionen verschoben. Der letzte Term (245 ) hat sechzehn Bits.
  • Wie in 8 gezeigt, ist, da die Addition auf einer Bit-Basis durchgeführt wird, die Anzahl an zu addierenden Termen bei den Bits gering, die nahe dem höchsten Bit und dem niedrigsten Bit sind, ist jedoch groß im Zentrum. Die dem UNTERPRODUKTADDIERER 2 zugehörigen Bezugszeichen in 8 bezeichnen die Anzahl an Eingaben. Beispielsweise wird unter Annahme einer Multiplikation mit acht Bits ein einzelner Term am höchsten Bit addiert, drei Terme einschließlich des Korrekturterms 21 werden beim niedrigsten Bit addiert, und sechs Terme werden beim siebten Bit addiert, vom niedrigsten Bit an gezählt, im Zentrum. Ein positiv/negativer Korrekturterm 22 wird dem Eingang des Unterproduktaddierer 2 zugeführt, der dem niedrigsten Bit zugeordnet ist, und dabei zum niedrigsten Bit addiert. Als Folge steigt die Anzahl an zu addierenden Termen beim niedrigsten Bit auf vier. Dies hat jedoch keinen Einfluß auf die gesamte Verarbeitungszeit, unter Berücksichtigung der Tatsache, daß die maximale Anzahl an zu addierenden Bits gleich sechs ist.
  • Drittes Ausführungsbeispiel
  • 9 zeigt ein weiteres alternatives Ausführungsbeispiel der vorliegenden Erfindung, das für eine Produktsummenberechnung angewandt wird. In 9 sind gleiche oder ähnliche strukturelle Elemente zu den in 4 gezeigten Elementen mit den gleichen Bezugszeichen bezeichnet. Wie gezeigt, erzeugt der Unterproduktgenerator 1 mehrere Unterproduktterme 24 aus einem Multiplikanden X und einem Multiplikator Y. Der Unterproduktaddierer 2 addiert die Unterproduktterme 24, einen Rundungskorrekturterm 21 und einen Additionsterm A. Der Unterproduktaddierer 2 gibt zwei Werte 25 aus. Der Addierer 3 addiert die beiden vom Unterproduktaddierer 2 ausgegebenen Werte 25. Die Vorzeichen des Multiplikanden X und des Multiplikators Y werden dem XNOR-Gatter 4 eingegeben. Das XNOR-Gatter 4 gibt eine EINS aus, falls das Produkt positiv ist, oder gibt eine NULL aus, falls es negativ ist. Die Ausgabe des XNOR-Gatters 4 wird dem Übertragseingang 20 des Addierers 3 zugeführt.
  • Es wird angenommen, daß die in 9 gezeigte Schaltung in beispielsweise einen Mikroprozessor eingebaut ist. Dann haben der Multiplikator, Multiplikand und der Additionsterm die gleiche Anzahl an Bits, n, da sie aus einer Registerdatei erzeugt werden. Während die resultierenden Produkte 2n Bits haben, werden n Bits durch Runden erzeugt. Da die Bit-Positionen des Additionsterms an die zu erzeugenden n Bits angepaßt werden, werden die Werte der der Rundung zugehörigen Bits aus der Multiplikation abgeleitet. Daher kann die Rundungsrichtung auf der Basis des Vorzeichens des Multiplikationsergebnisses bestimmt werden.
  • Das Assoziativgesetz gilt nicht für die Rundungsvorgänge. Daher würde, auch wenn der Additionsterm 2n Bits hätte, das Ergebnis von der Reihenfolge der Berechnung abhängen, falls keine Rundung mit dem Multiplikationsterm ausgeführt würde. Es folgt, daß, wenn eine Rundung zu jedem Berechnungszeitpunkt durchgeführt wird, es vernünftig ist, ein Runden lediglich mit dem Produkt durchzuführen.
  • Die gezeigten und beschriebenen ersten bis dritten Ausführungsbeispiele können wie folgt zusammengefaßt werden. Ein Unterproduktaddierer (2, 4) addiert Unterproduktterme (24, 4) und einen Korrekturterm (21, 4), bei dem das höchste Bit von zu rundenden Bits eine NULL ist und die niedrigeren Bits EINSen sind. Wenn das Produkt positiv ist, wie es durch das Vorzeichen-Bit eines Multiplikanden und desjenigen eines Multiplikators angezeigt wird, wird eine EINS ausgegeben, während, wenn das Produkt negativ ist, eine NULL ausgegeben wird. Diese EINS oder NULL wird dem Übertragseingang (20, 4) eines Addierers (3, 4) oder dem Eingang für das niedrigere Bit (22, 7) des Unterproduktaddierers zugeführt. Als Folge wird das Produkt auf die nächste ganze Zahl gerundet, ohne Rücksicht auf sein Vorzeichen. Genauer gesagt, addieren der Unterproduktaddierer und Addierer, wenn das Produkt positiv ist, einen Wert mit einer EINS am höchsten Bit der zu rundenden Bits und NULLen an den niedrigeren Bits, oder addieren, wenn das Produkt negativ ist, einen Wert mit einer NULL am höchsten Bit der zu rundenden Bits und mit EINSen an den niedrigeren Bits.
  • In den beispielhaften Ausführungsbeispielen tritt, da der Mittelwert der zu rundenden Abschnitte keine NULL ist, ein Fehler auf, der den Produktrundungen zuzuschreiben ist, wenn die Produkte akkumuliert werden. Die Rundung, wenn das Produkt positiv ist, und die Rundung, wenn es negativ ist, sind jedoch symmetrisch zueinander, was es ermöglicht, daß ein Fehler im ersteren Fall und ein Fehler im letzteren Fall einander auslöschen. Als Folge ist der Fehler zum Akkumulationszeitpunkt im wesentlichen Null, wodurch eine genaue Berechnung verbessert wird. Da jedoch lediglich das Produkt auf die nächste ganze Zahl gerundet wird, wird der Korrektureffekt nicht verschlechtert, selbst wenn die Rundung zu jedem Berechnungszeitpunkt durchgeführt wird. Daher können wünschenswerte Effekte erzielt werden, selbst wenn die Ausführungsbeispiele an einem Mikroprozessor von der Art durchgeführt werden, der das Runden mit dem Ergebnis jeder Berechnung durchführt.
  • Zusammenfassend ist ersichtlich, daß die vorliegende Erfindung Multiplikationsschaltungen mit einer Rundungsfunktion und verschiedenen und noch nie da gewesenen Vorteilen bereitstellt, wie nachstehend aufgezählt ist.
    • (1) Die Schaltung vermindert einen Fehler zum Akkumulationszeitpunkt der Produkte. Genauer gesagt, sind die Rundung, wenn das Produkt positiv ist, und die Rundung, wenn es negativ ist, symmetrisch zueinander, was es ermöglicht, daß ein mittlerer akkumulativer Fehler im ersteren Fall und ein mittlerer akkumulativer Fehler im letzteren Fall einander auslöschen. Als Folge ist der Fehler zum Akkumulationszeitpunkt im wesentlichen Null.
    • (2) Die Schaltung ist wünschenswerter Weise sogar für beispielsweise einen Mikroprozessor anwendbar, der eine Multiplikation zum Runden durch eine einzelne Berechnung durchführt. Genauer gesagt, führt die Schaltung einfach ein Runden auf die nächste ganze Zahl durch, im Unterschied zum Subtrahieren eines Korrekturterms unter Verwendung von Bits, die die Rechengenauigkeit überschreiten. Als Folge geben die nach dem Runden übrig gebliebenen Bits sowohl den Effekt des Rundens als auch den Effekt der Fehlerauslöschung wieder.
    • (3) Die Schaltung benötigt ein Minimum an zusätzlicher Hardware, da lediglich ein XNOR-Gatter zum Bestimmen des Vorzeichen eines Produktes und eine Anordnung zum Addieren desselben hinzugefügt werden. Zum Addieren des Vorzeichen eines Produktes kann die Verwendung von einem Übertragseingang eines Addierers gemacht werden, oder es kann der Additionsbaum des niedrigsten Bit eines Unterproduktaddierers von einem Aufbau mit drei Eingängen zu einem Aufbau mit vier Eingängen geändert werden.

Claims (5)

  1. Verfahren zum Runden eines Multiplikationsproduktes (24), das bei einem Multiplizierer oder einem Produktsummenrechner anwendbar ist, wobei das Multiplikationsprodukt (24) durch Multiplizieren eines Multiplikanden (X) und eines Multiplikators (Y) erhalten wird, die beide in einer Zweierkomplementform dargestellt sind, und die Multiplikation durch Addieren von Unterprodukten (241–5 ) durchgeführt wird, die entsprechend den Bits des Multiplikators (Y) verschoben sind, und das Multiplikationsprodukt (24) gemäß den folgenden Schritte gerundet wird: – ein Korrekturterm (21), in dem das höchstwertigste Bit der zu rundenden Bits gleich NULL ist und die niedrigeren Bits gleich EINS sind, wird zusammen mit den Unterprodukten (241 245 ) addiert, um ein erstes gerundetes Multiplikationsprodukt (24) zu erhalten, und – ein positiver/negativer Korrekturterm (22) wird in Abhängigkeit vom Vorzeichen des Multiplikationsproduktes (24) bestimmt, wie durch die Vorzeichenbits des Multiplikanden (X) und Multiplikators (Y) angegeben wird, und zu dem niedrigstwertigsten Bit des ersten gerundeten Multiplikationsproduktes addiert, wobei bestimmt wird, daß der positive/negative Korrekturterm (22) gleich EINS ist, falls das Vorzeichen positiv ist, und gleich NULL ist, falls das Vorzeichen negativ ist.
  2. Multiplizierschaltung, die Mittel umfaßt, die zum Ausführen der Schritte des Verfahrens zum Runden eines Multiplikationsproduktes (24) gemäß Anspruch 1 ausgestaltet sind, die folgendes umfaßt: – Mittel (2, 3) zum Addieren der Unterprodukte (241 245 ), des Korrekturterms (21) und des positiven/negativen Korrekturterms (22); – Mittel (4) zum Auswählen des positiven/negativen Korrekturterms (22) in Abhängigkeit vom Vorzeichen des Multiplikationsproduktes (24), das den positiven/negativen Korrekturterm (22) an das Additionsmittel (2, 3) ausgibt.
  3. Multiplizierschaltung nach Anspruch 2, bei der das Additionsmittel (2, 3) einen Unterproduktaddierer (2) und einen Addierer (3) zum Addieren der partiellen Produkte (241 245 ), des Korrekturterms (21) und des positiven/negativen Korrekturterms (22) umfaßt.
  4. Multiplizierschaltung nach Anspruch 2 oder 3, bei der der Unterproduktaddierer (2) ein Carry-Save-Addierer ist und der positive/negative Korrekturterm (22) dem Carry-Save-Addierer übergeben wird.
  5. Multiplizierschaltung nach einem der Ansprüche 2 bis 4, bei der das Auswahlmittel (4) ein XNOR-Gatter mit zwei Eingängen, die mit dem Vorzeichen des Multiplikanden (X) bzw. des Multiplikators (Y) gekoppelt sind, und einem Ausgang ist, der mit dem Carry-Eingang des Additionsmittels (2, 3) gekoppelt ist.
DE69722131T 1996-10-31 1997-10-31 Verfahren und Schaltungsanordnung zur Multiplikation mit einer Abrund-Funktion Expired - Lifetime DE69722131T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP8305801A JPH10133856A (ja) 1996-10-31 1996-10-31 丸め機能付き乗算方法及び乗算器
JP30580196 1996-10-31

Publications (2)

Publication Number Publication Date
DE69722131D1 DE69722131D1 (de) 2003-06-26
DE69722131T2 true DE69722131T2 (de) 2004-04-01

Family

ID=17949534

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69722131T Expired - Lifetime DE69722131T2 (de) 1996-10-31 1997-10-31 Verfahren und Schaltungsanordnung zur Multiplikation mit einer Abrund-Funktion

Country Status (5)

Country Link
US (1) US6010063A (de)
EP (1) EP0840205B1 (de)
JP (1) JPH10133856A (de)
KR (1) KR100309520B1 (de)
DE (1) DE69722131T2 (de)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7797366B2 (en) 2006-02-15 2010-09-14 Qualcomm Incorporated Power-efficient sign extension for booth multiplication methods and systems
US7809783B2 (en) 2006-02-15 2010-10-05 Qualcomm Incorporated Booth multiplier with enhanced reduction tree circuitry
EP1984810B1 (de) * 2006-02-15 2017-03-22 QUALCOMM Incorporated Booth-multiplizierer mit schaltkreis für verbesserte partialproduktreduktion
US11488002B2 (en) * 2018-02-15 2022-11-01 Atlazo, Inc. Binary neural network accelerator engine methods and systems

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4229800A (en) * 1978-12-06 1980-10-21 American Microsystems, Inc. Round off correction logic for modified Booth's algorithm
JPH05150950A (ja) * 1991-11-29 1993-06-18 Sony Corp 乗算回路
JPH05265709A (ja) * 1992-03-23 1993-10-15 Nec Corp 丸め演算回路
JPH06103304A (ja) * 1992-09-22 1994-04-15 Sony Corp ディジタル演算方法及び回路
JP3276444B2 (ja) * 1993-03-22 2002-04-22 三菱電機株式会社 除算回路
JPH06348455A (ja) * 1993-06-14 1994-12-22 Matsushita Electric Ind Co Ltd 乗算における丸め込み方法及び乗算回路
US5696710A (en) * 1995-12-29 1997-12-09 Thomson Consumer Electronics, Inc. Apparatus for symmetrically reducing N least significant bits of an M-bit digital signal

Also Published As

Publication number Publication date
EP0840205A1 (de) 1998-05-06
DE69722131D1 (de) 2003-06-26
US6010063A (en) 2000-01-04
EP0840205B1 (de) 2003-05-21
KR100309520B1 (ko) 2001-12-17
JPH10133856A (ja) 1998-05-22
KR19980033417A (ko) 1998-07-25

Similar Documents

Publication Publication Date Title
DE4302898C2 (de) Arithmetische Recheneinheit mit Akkumulierfunktion
DE3854321T2 (de) Populationszählung in Rechnersystemen.
DE69821408T2 (de) Multiplikationsverfahren und -vorrichtung
DE60210494T2 (de) Hochgeschwindigkeitsberechnung in einer arithmetik- und logikschaltung
DE19758079A1 (de) Verfahren und Vorrichtung zur Galoisfeld-Multiplikation
DE2246968A1 (de) Einrichtung zur kombination, insbesondere multiplikation, zweier gleitkommazahlen
DE69032890T2 (de) Verfahren und Gerät zur Ausführung der Quadratwurzelfunktion mit Hilfe eines Multiplizierers rechteckigen Seitenverhältnisses
DE69934956T2 (de) Logarithmus- / Antilogarithmusrechner
DE1956209B2 (de) Multipliziervorrichtung
DE2221693C3 (de) Schaltungsanordnung zur Ausführung einer Multiplikation zwischen zwei Binärzahlen
DE4345029C2 (de) Schaltkreis für diskrete Kosinustransformation
DE4403917A1 (de) Vorrichtung zum Berechnen einer Besetzungszählung
DE3854608T2 (de) Vektorrechnerschaltung, welche schnell eine Berechnung auf drei Eingangsvektoren ausführen kann.
DE3852576T2 (de) Einrichtung und Verfahren für eine erweiterte Arithmetik-Logik-Einheit zur Beschleunigung der ausgewählten Operationen.
DE2557436A1 (de) Digitale serielle multipliziereinrichtung
DE69715309T2 (de) Arithmetische Schaltung für die Berechnung der Quadratwurzel einer Summe von Quadraten
DE3447634C2 (de)
DE1549508B2 (de) Anordnung zur uebertragsberechnung mit kurzer signallaufzeit
DE69722131T2 (de) Verfahren und Schaltungsanordnung zur Multiplikation mit einer Abrund-Funktion
DE3440680C2 (de)
DE3434777C2 (de)
DE3836205C2 (de)
DE69130756T2 (de) Gleitkommamultipliziergerät mit drei Übertragsfortpflanzungsaddierern, welche in parallel arbeiten können
EP0130397B1 (de) Digitales Rechenwerk
DE69427726T2 (de) Quantisierungsgerät

Legal Events

Date Code Title Description
8364 No opposition during term of opposition