DE19635118A1 - Multiplizierer - Google Patents

Multiplizierer

Info

Publication number
DE19635118A1
DE19635118A1 DE19635118A DE19635118A DE19635118A1 DE 19635118 A1 DE19635118 A1 DE 19635118A1 DE 19635118 A DE19635118 A DE 19635118A DE 19635118 A DE19635118 A DE 19635118A DE 19635118 A1 DE19635118 A1 DE 19635118A1
Authority
DE
Germany
Prior art keywords
operand
clock signal
product
bit
clock
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.)
Withdrawn
Application number
DE19635118A
Other languages
English (en)
Inventor
Timothy Don Davis
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.)
National Semiconductor Corp
Original Assignee
National Semiconductor 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 National Semiconductor Corp filed Critical National Semiconductor Corp
Publication of DE19635118A1 publication Critical patent/DE19635118A1/de
Withdrawn 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/533Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even
    • G06F7/5334Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even by using multiple bit scanning, i.e. by decoding groups of successive multiplier bits in order to select an appropriate precalculated multiple of the multiplicand as a partial product
    • G06F7/5336Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even by using multiple bit scanning, i.e. by decoding groups of successive multiplier bits in order to select an appropriate precalculated multiple of the multiplicand as a partial product overlapped, i.e. with successive bitgroups sharing one or more bits being recoded into signed digit representation, e.g. using the Modified Booth Algorithm
    • G06F7/5338Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even by using multiple bit scanning, i.e. by decoding groups of successive multiplier bits in order to select an appropriate precalculated multiple of the multiplicand as a partial product overlapped, i.e. with successive bitgroups sharing one or more bits being recoded into signed digit representation, e.g. using the Modified Booth Algorithm each bitgroup having two new bits, e.g. 2nd order MBA

Description

Die Erfindung betrifft einen Multiplizierer nach dem Oberbe­ griff des Anspruchs 1.
Viele Datenverarbeitungsanwendungen erfordern, daß zwei Ope­ randen miteinander multipliziert werden. Insbesondere hängen Signalver­ arbeitung und Datenverschlüsselung von Multiplikationsvorgängen mit ho­ her Geschwindigkeit oft von Operanden mit großer Wortlänge ab.
Das Produkt zweier Operanden wird gewöhnlich durch aufeinand­ erfolgende Additionen von geschobenen Bitfolgen erhalten, wobei jede Folge ein Zwischen- oder Teilprodukt eines Operanden mit einem Term des anderen Operanden darstellt. Die Zwischenproduktterme werden summiert, um des Endergebnis zu erhalten. Das Produkt (p) von zwei Operanden X und Y kann dargestellt werden als:
P = X Y = X×Σyiri = ΣX×yiri (1)
wobei yi der Wert des i-ten bits des Y-Operanden, r die Grundzahl für das verwendete Zahlendarstellungssystem ist und die Summation von i = 0 bis n-1 läuft, wobei n die Anzahl von bits im Y-Operanden ist (x = Mul­ tiplikation).
Gleichung (1) zeigt, daß die Multiplikation äquivalent zum Aufsummieren von n Termen von Teilprodukten (X×yiri) ist. In einem bi­ nären Zahlendarstellungssystem ist die Grundzahl gleich 2 und yi entwe­ der 0 oder 1. Der i-te Term in der Summe wird dann durch eine Linksver­ schiebung des Operanden X um i bit-Positionen und Multiplikation mit der Ziffer yi erhalten. Die n Terme werden dann summiert.
Zum Multiplizieren von nicht mit Vorzeichen versehenen oder Binärkomplementzahlen ist die Booth′sche Methode bekannt, die auf der Beobachtung basiert, daß eine Folge von Nullen in einem Operanden keine Addition von Teilprodukttermen erfordert, sondern nur ein Schieben des vorherigen Teilprodukts, und daß eine Folge von Einsen in dem Multipli­ kator, die sich von bit 2p bis 2q (q < p) erstreckt, statt dessen als die Größe 2q+1-2p behandelt werden kann. Diese Feststellungen haben zur Ent­ wicklung einer schnelleren Methode zur Durchführung von Multiplikationen geführt.
Die Booth′sche Methode wird durch folgende Schritte ausge­ führt. Es sei xi das i-te bit eines n-bit-Multiplikators. Bit xn-1 ist das höchstwertige bit und x₀ ist das niederwertigste bit. Ein bit x-1 sei für den Abschluß der Methode angenommen. Der Multiplikand ist Y. Be­ ginnend mit i = 0 werden bits xi und xi-1 des Multiplikators miteinander verglichen. Basierend auf diesem Vergleich wird die nachstehende Hand­ lung vorgenommen:
Dieser Vorgang wird wiederholt, bis n Vergleiche abgeschlossen sind. Das Ergebnis ist das Produkt von zwei Operanden.
Die vorstehende Beschreibung der Booth′schen Methode basiert auf dem Vergleich von zwei bits eines der Operanden zu einer Zeit. Wenn eine höhere Grundzahl verwendet wird, kann die Methode erweitert wer­ den, um drei oder mehr bits zu vergleichen. Dies wird die Geschwindig­ keit, mit der die Multiplikation ausgeführt wird, weiter erhöhen. Wenn beispielsweise zwei Operanden modulo 4 ausgedrückt werden, werden drei bits des Multiplikators Y während jedes Vergleichs geprüft, während die Multikandenterme, die addiert oder subtrahiert werden, 0, Y, -Y, 2Y und -2Y sind. Die nachstehende Tabelle gibt den geeigneten, zu addierenden Faktor basierend auf einem Vergleich zwischen bits i+1, i und i-1 des Operanden X an.
Die in Fig. 6 als Blockdiagramm dargestellte Schaltkreisanord­ nung eines bekannten Multiplizierers 10, der die Booth′sche Methode ver­ wendet, um zwei Operanden miteinander zu multiplizieren, umfaßt drei Verarbeitungsstufen. Während einer ersten Stufe werden die die Daten re­ präsentierenden Operanden A und B geladen. Während der zweiten Stufe wird Operand B in Gruppen von bits (wobei jede Gruppe 4 verschiedene bits im Falle einer modulo 4 Darstellung enthält) in einem Booth-Umko­ dierer geschoben, der Operand umkodiert und die resultierenden Teilpro­ duktterme gebildet und akkumuliert. Die Akkumulationsphase erzeugt eine Teilsumme und gesicherte Daten für die Summen von Teilprodukten. Diese Stufe erzeugt 4 bits des Endprodukts pro Taktzyklus durch Verwendung ei­ nes 4-bit-Parallelübertragsaddierers, um die niederwertigsten bits der Teilprodukte zu kombinieren. Das Endprodukt wird in einem 512-bit-Akku­ mulator gespeichert. Die Stufe fährt fort, bis der gesamte Operand B um­ kodiert ist (256 bits im Falle dieses Beispiels), wobei die 256 bits des erzeugten Endprodukts die 256 niederwertigsten bits des Endresultats sind. In der Endstufe werden die Endteilsumme und die gesicherten Daten addiert, um die 256 höchstwertigen bits des Endergebnisses zu liefern. Die hierzu verwendeten Schaltkreise werden nachstehend beschrieben.
Die Daten repräsentierenden Operanden A und B werden über ei­ nen 32 bit Datenbus 12 eingegeben. Die Daten des als Multiplikand ver­ wendeten Operanden A werden vom Datenbus 12 empfangen und in ein 256 bit Schieberegister 14 geladen, und zwar in 32 bit Gruppen, eine Gruppe mit jedem Taktzyklus, wobei ein Taktsignal (CLKS) 15 das Laden der 32 bit Datengruppen steuert. Wenn der Operand A gemäß diesem Beispiel eine Län­ ge von 256 bits aufweist, sind 8 Taktzyklen erforderlich, um ihn voll­ ständig in das Schieberegister 14 zu laden.
Ein Multiplexer 13 wird verwendet, um das Laden der Daten des Operanden A in das Schieberegister 14 zu steuern, und insbesondere, um das Schieberegister 14 in Wartezustand zu versetzen, nachdem die Daten des Operanden A geladen und andere Operationen des Multiplexers 13 aus­ geführt worden sind. Der Multiplexer 13 hat zwei Eingänge, einen für ein erstes Eingangssignal, das den Multiplexer 13 instruiert, die Daten des Operanden A zu laden, indem 32 bit lange Gruppen der Daten des Operanden A in das Schieberegister 14 geladen werden, und einen für ein zweites Eingangssignal, das das Schieberegister 14 instruiert, die geladenen Da­ ten nicht zu schieben. Das Steuersignal zum Nichtschieben wird während der Taktzyklen, nachdem der Operand A vollständig geladen wurde, verwen­ det, um die Daten des gesamten Operanden im Schieberegister 14 zu erhal­ ten. Diese Fähigkeit wird benötigt, weil das Taktsignal 15 kontinuier­ lich an das Schieberegister 14 geliefert wird, das bewirkt, daß der In­ halt des Schieberegisters 14 mit jedem Taktzyklus geschoben wird. Daher wird der Multiplexer 13 verwendet, um einen Wartezustand zu liefern, so daß der Datenfluß in das Schieberegister 14 mit den Multiplikationsstu­ fen genau koordiniert ist. In diesem Fall werden der Multiplexer und ei­ ne Rückkopplungsschleife verwendet, um die gesamten 256 bit Daten des Operanden A zur Verwendung nach der Booth′schen Methode zu erhalten, während das Taktsignal 15 weiterhin das Schieberegister 14 taktet.
Der Multiplexer 13 dekodiert die Operand A Ladedaten, das Schieben von 32 bit langen Datengruppen und Eingangssignale zum Nicht­ schieben, so daß die 32-bit-langen geschobenen Datengruppen des 256 bit Eingangs oder der nichtgeschobene 256 bit Eingang mit dem Ausgang des Multiplexers 13 verbunden werden. Die Datenschiebefunktion wird durch Verbindungen zwischen Multiplexer 13 und Schieberegister 14 in bekannter Weise erhalten. Die Steuersignale zum Auswählen, welche Funktion durch den Multiplexer 13 ausgeführt wird, werden von einer externen Folge- oder Zustandssteuerung (nicht dargestellt) in Übereinstimmung mit der Phase des gerade ausgeführten Multiplikationsvorgangs geliefert.
Nachdem die gesamten Daten des Operanden A geladen sind, wird der Multiplikator Operand B in 32-bit-Gruppen in ein 256-bit-Schiebere­ gister 16 geladen, das durch ein Taktsignal CLKS 15 gesteuert wird. Ein Multiplexer 17 wird verwendet, um die Funktionsweise des kontinuierlich getakteten Schieberegisters 16 entsprechend den Stufen des Multiplika­ tionsvorganges zu steuern. Der Multiplexer 17 besitzt drei Eingänge, von denen einer ein erstes Eingangssignal, das den Multiplexer 17 instru­ iert, die Daten des Operanden B zu laden, wobei 32-bit-lange Gruppen von Daten in das Schieberegister 16 geschoben werden, einen für ein zweites Eingangssignal, das das Schieberegister 16 instruiert, keine Daten zu schieben, und das dazu verwendet wird, einen Wartezustand zu erzeugen, und einen für ein drittes Eingangssignal, das Schieberegister 16 in­ strukturiert, die Daten des Operanden B aus dem Schieberegister in Gruppen von vier bits zu schieben. Wie im Falle des Multiplexers 13 werden die Steuersignale zum Auswählen, welche Funktion durch den Multiplexer 17 ausgeführt wird, durch eine externe Folge- oder Zustandssteuerung ent­ sprechend der gerade durchgeführten Phase des Multiplikationsvorganges geliefert. Wenn der Operand B in diesem Beispiel 256 bits umfaßt, sind acht Taktzyklen erforderlich, um sein Laden in das Schieberegister 16 zu vervollständigen. Daher sind in diesem Beispiel insgesamt 16 Taktzyklen zum Laden der Operanden A und B in ihre entsprechenden Schieberegister 14 bzw. 16 erforderlich. Bevor der Booth-Umkodiervorgang beginnen kann, müssen bei diesem Multiplizierer die Operanden vollständig geladen sein.
Die Daten des Operanden B werden aus dem Register 16 in vier-bit-Gruppen geschoben, da die Verwendung der Booth′schen Methode, die einen zweistufigen Umkodierer modulo-4 (wie im vorliegenden Beispiel verwendet), vier bits des Operanden B für jeden Umkodiervorgang erfor­ dert. Die vier-bit-Gruppen der Daten des Operanden B werden in den Booth-Umkodier-Dekodier-Modul 18 durch einen Datenbus 19 überführt. Der Modul 18 bewertet den Multiplikator, Operand B, in aufeinanderfolgenden bit-Feldern, um zu bestimmen, welcher Faktor des Multiplikanden, Operand A, zur Bildung der Partialproduktterme zu verwenden ist, die addiert werden, um das Endprodukt zu erhalten. Da der Modul 18 ein zweistufiger Umkodierer ist, werden während jedes Taktzyklus zwei aufeinanderfolgende bit-Felder umkodiert. Jedes bit-Feld-Umkodieren erzeugt zwei niederwer­ tigste bits eines unkorrigierten Resultats für das Endprodukt und einen Übertragsterm modulo 4. Der Modul 18 erzeugt daher vier niederwertigste bits von unkorrigierten Endproduktdaten und zwei Übertragsbits modulo 4 pro Taktzyklus. Wenn der Operand B in diesem Beispiel 256 bit lang ist, erfordert es etwa 64 Taktzyklen (256 bits/4 umkodierte bits pro Zyklus), um den gesamten Operanden umzukodieren.
Das Ergebnis des Umkodiervorgangs ist ein Steuersignal, das den Modul 18 instruiert, den geeigneten Faktor des Operanden A (O, A, -A, 2A oder -2A) auszuwählen, um diesen bei der Bildung der Teilprodukt­ terme zu verwenden. Da zwei Umkodierstufen in dem Modul 18 verwendet werden, gibt dieser zwei Faktoren des Operanden A bei jedem Taktzyklus ab.
Ein Faktor des Operanden A dient als Eingang für eine Partial­ summen/Übertragssicherungs(PS-CS)-Addierermatrix 0 20, während der zweite Faktor des Operanden A als Eingang zu einer Partialsummen/Übertragssi­ cherungs(PS-CS)-Addierermatrix 1 22 dient. Wenn daher jede Gruppe von vier verschiedenen bits des Operanden B während eines Taktzyklus umko­ diert werden, werden zwei Faktoren des Operanden A ausgewählt und zu den Addierern 20 und 22 übertragen.
Jeder der beiden PS-CS-Addierer 20 und 22 erzeugt eine 260-bit-Par­ tialsumme und einen 260-bit-Partialübertragsterm. Wenn jeder der 260-bit-breiten Partialproduktterme (die Faktoren des Operanden A) zu den Addierern 20 und 22 geliefert werden, werden sie zu den Resultaten des vorherigen durch die Addierer vorgenommenen Additionsvorgangs ad­ diert. Dies führt zu einem neuen Partialsummenterm und einem neuen Über­ tragssicherungsterm. Die beiden niederwertigsten bits des Partialsummen­ terms und das niederwertigste bit des Übertragssicherungsterms werden für jeden Additionsvorgang an einen vollständigen 4-bit-Parallelüber­ tragsaddierer 24 geliefert. Wenn beide Addierer 20 und 22 eine Partial­ summe und einen Übertragssicherungsterm während jedes Taktzyklus erzeu­ gen, werden zwei Sätze von niederwertigsten Partialsummen- und Über­ tragssicherungsbits an den Addierer 24 mit einer Gesamtheit von vier niederwertigsten bits der Partialsummendaten und 2 bits der Übertragssi­ cherungsdaten geliefert. Diese Daten werden im Addierer 24 mit dem Über­ tragsbit modulo 4 kombiniert, das durch jede Umkodierstufe des Booth-Um­ kodierers 18 erzeugt wird.
Addierer 24 addiert die vier niederwertigsten bits der Parti­ alsummen, die durch die Addierer 20 und 22 während eines Taktzyklus er­ zeugt wurden, zu den zwei Übertragungssicherungsbits und den zwei bits von Übertragsdaten modulo 4, die durch den Booth-Umkodierer 18 geliefert werden. Dies erzeugt vier bits des schließlichen Produktterms. Jede Gruppe von vier bits der schließlichen Produktdaten, die durch den Ad­ dierer 24 erzeugt werden, wird in einen Multiplexer 26 geschoben, der einen 512-bit-Akkumulator 28 lädt.
Multiplexer 26 hat vier verschiedene Steuersignale als Eingän­ ge: Ein Signal, das den Akkumulator 28 instruiert, den Dateneingang um 4 bits zu schieben; ein Signal, das den Akkumulator 28 instruiert, den Da­ teneingang um 32 bits zu schieben; ein Signal, das den Akkumulator 28 instruiert, die Daten nicht zu schieben; und ein Signal, das den Akkumu­ lator 28 instruiert, die Daten um 1 bit zu schieben. Wenn der Addierer 24 4-bit-Gruppen des schließlichen Produktes erzeugt, steuert der Multi­ plexer 26 das Laden des Akkumulators 28 mit den Daten durch Schieben der Daten um 4-bit-Inkremente. Wenn der Operand B vollständig umkodiert und die Partialprodukte akkumuliert sind, werden die unteren 256 bits des 512-bit-Akkumulators 28 gefüllt. Die Schiebefunktion um 32 bits wird verwendet, um die Akkumulatordaten auf einen Bus 40 auszugeben. Wie vor­ stehend diskutiert, wird die Nicht-Schiebefunktion verwendet, um einen Ruhezustand zu realisieren, indem die Daten kontinuierlich in den Akku­ mulator zurückgetaktet werden. Diese Funktion wird benötigt, da die Ak­ kumulatorregister kontinuierlich getaktet und die Akkumulatorfunktion nicht während aller Stufen der Multiplikationsoperation verwendet wer­ den. Die Funktion des Schiebens um 1 bit wird verwendet, um einen Term der Form 2*(A*B) zur Verwendung bei der Berechnung der Terme im Quadrat der Summe von zwei Operanden zu liefern.
Nachdem der gesamte Operand B umkodiert wurde, die geeigneten Faktoren von Operand A in den Addierern 20 und 22 addiert und die Parti­ alsummen- und Übertragssicherungsdaten für jeden Zyklus auf den Addierer 24 überführt wurden, enthalten Register 30 und 32 die höchstwertigsten bits der Übertragssicherungsoperationen, die auf die Faktoren des Ope­ randen A ausgeübt werden. CS-Register 30 besitzt eine Größe von 260 bit und wird durch das Taktsignal 15 getaktet. PS-Register 32 besitzt eine Größe von 260 bit und wird entsprechend durch das Taktsignal 15 getak­ tet. Die Inhalte der beiden Register 30, 32 werden verwendet, um die schließliche Additionsoperation durchzuführen, die die oberen 256 bit des endgültigen Produktes liefert. Die Schieberegister 30, 32 werden un­ ter Steuerung eines Multiplexers 34 bzw. 36 geladen.
Die Endadditionsstufe wird durchgeführt, indem die gleichen Addierer verwendet werden, die verwendet wurden, um die unteren 256 bits des Endproduktes zu erzeugen. Die Inhalte der Schieberegister 30 und 32 werden in den Addierer 20 mittels der Datenbusse 33 und 35 zurückge­ führt, wobei der Addierer 20 mittels des Datenbus 37 Daten zum Addie­ rer 22 überträgt. Wenn der Operand B vollständig umkodiert ist, enthält das Register 16 für den Operanden B insgesamt Nullen. Daher vollführen die Addierer eine Operation äquivalent zu (A*0 + CS + PS). Nachdem die Addierer 20 und 22 mit den Inhalten der Schieberegister 30 und 32 gela­ den sind, durchläuft die Multipliziereinheit 64 Zyklen, die normalerwei­ se erforderlich sind, um die Partialprodukte zu akkumulieren. Da jedoch in dieser Situation der Operand B null ist, besteht die Wirkung des zy­ klischen Durchlaufens darin, die Inhalte der Register 30 und 32 zu ad­ dieren.
Das Ergebnis besteht darin, daß während jedes Zyklus die zwei niederwertigsten bits von jedem Addierer 20 und 22 in den 4-bit-Addierer 24 addiert werden, um eine 4-bit-Gruppe der höchstwertigsten bits des Endproduktes zu liefern. Jede 4-bit-Gruppe der höchstwertigsten bits des Endproduktes wird in den 512-bit-Akkumulator 28 unter Verwendung der 4-bit-Schiebeinstruktion des Multiplexers 26 geladen. Nachdem der Akku­ mulator 28 mit den 256 höchstwertigsten bits des Endproduktterms geladen ist, ist die Multiplikationsoperation vollständig. Die Daten werden aus dem Akkumulator 26 in 32-bit-Gruppen auf den Datenbus 40 ausgegeben.
Hierbei müssen die Operanden A und B vollständig in die Regi­ ster 14 und 16 geladen werden, bevor die Booth′schen Umkodieroperationen begonnen werden. Ein Datenbus der Breite d sei angenommen, der d bits pro Taktzyklus übertragen kann, wenn die Operanden m bits lang sind, so erfordert diese Auslegung 2 m/d Taktzyklen zum Übertragen der Operanden in die Register 14 und 16. Dies bedeutet, daß 16 Taktzyklen erforderlich sind, um zwei 256-bit-Operanden in die entsprechenden Register 14 und 16 zu laden, wobei angenommen wird, daß die Operanden mit 32 bit pro Takt­ zyklus geladen werden. Dies verzögert den Beginn der Operandenverarbei­ tung, bis die 16 Taktzyklen beendet sind.
Bei dieser Multipliziererauslegung ist es typisch, daß sie ei­ ne Übertragssicherungsaddition und ein Registrieren verwendet, um den Schaltkreisaufwand zu minimieren und die Multiplikationsrate zu erhöhen. Hochgeschwindigkeitsmultiplikations- und Exponentiationoperationen er­ fordern große Booth-Addierermatrizen, die große Partialsummen und große Partialübertragsregister besitzen. Das Multiplizieren von zwei m-bit-Ope­ randen unter Verwendung eines Basis-4-Booth-Umkodiermultiplizierers erfordert etwa m/(2n) Taktzyklen, um die niederwertigste Hälfte des End­ produktes zu erzeugen, wobei n die Anzahl von Booth-Umkodieraddierstufen ist. Die Anzahl von Booth-Umkodieraddierstufen ist gleich der Zahl von bit-Gruppen, die während eines einzelnen Taktzyklus umkodiert werden. Nach diesen m(2n) Zyklen wird die höchstwertigste obere Hälfte des Pro­ duktes durch Summieren des Inhalts der Partialsummen- und Partialüber­ tragsregister erhalten. Diese Endaddition wird typischerweise unter Ver­ wendung der gleichen Booth-Addierer durchgeführt, wie sie verwendet wer­ den, um die Partialprodukte und Übertragsterme in den vorherigen Stufen der Multiplikationsoperation zu akkumulieren.
Bei der Bildung von Exponentialausdrücken, die häufig bei Ver­ schlüsselungsanwendungen verwendet werden, ist es bekannt, daß deren Durchführung durch Quadriervorgänge beschleunigt werden kann. Es ist da­ her in einigen Fällen wünschenswert, wirksam die Terme in dem Ausdruck für die Quadratsumme von zwei Operanden zu berechnen. Der bekannte Mul­ tiplizierer führt typischerweise einen Quadriervorgang der Summe von Operanden A und B (wobei [A+B]² = A² + 2AB + B²) durch Addieren des zweifachen Produktterms A*B zum Akkumulator durch. Diese Art eines Mul­ tiplizierers berechnet den Zwischenterm in der Form (A*B) + (A*B). Diese Lösung verwendet einen zusätzlichen Additionsvorgang, um die zweite Mul­ tiplikationsoperation zu ersetzen, die sonst erforderlich wäre, und führt insoweit zu einer höheren Rechengeschwindigkeit. Eine weitere Me­ thode zum Berechnen des 2AB-Terms besteht darin, den A*B-Produktterm zu bilden und dann den Term um 1 bit im Akkumulator 28 zu verschieben, um den 2*(A*B)-Term zu bilden. Dies ist sogar schneller als die Durchfüh­ rung der zusätzlichen Addition. Jedoch hat diese Methode den Nachteil, daß der Schaltkreisaufwand zur Durchführung des Schiebens fähig sein muß, eine 512-bit-Schiebung zu handhaben, wodurch ein großer Chipbereich mit beträchtlichem Aufwand erforderlich ist.
Ein weiteres Merkmal dieses bekannten Multiplizierers besteht darin, daß ein einzelnes Taktsignal verwendet wird, um das Schieben der Daten in die Schieberegister 14, 16, 30 und 32 und den Akkumulator 28 zu steuern. Daher werden alle Datenlade- und Verarbeitungsfunktionen für die Multiplikationsoperation kontinuierlich durch ein gemeinsames Takt­ signal getaktet, wobei Multiplexer verwendet werden, um einen Ruhezu­ stand zu erzeugen, um so den Status der Register zu halten, nachdem die Daten geladen wurden. Da diese Auslegung eine synchronisiert getaktete Schaltkreisanordnung verwendet, hängt der Stromverbrauch von der Takt­ frequenz ab. Da eine hohe Taktfrequenz für eine schnelle Verarbeitung wünschenswert ist, resultiert dies in einem hohen Stromverbrauch. Dies kann insbesondere in batteriebetriebenen oder Anwendungen mit begrenzter Stromzuführung nachteilig sein.
Ein weiterer Nachteil besteht darin, daß bei einer Auslegung für große Operanden zusätzliche Schaltkreise in Form von Multiplexern notwendig sind, um den Datenfluß in und aus den Schieberegistern zu steuern und einen Ruhezustand zu liefern, in dem die Daten mit jedem Taktzyklus in das Register zurückgetaktet werden. Diese Multi-bit-Eigen­ schaft der Register erfordert, daß die Multiplexerschaltkreise für jedes bit verdoppelt werden. Hierdurch ergibt sich eine aufwendige und unef­ fektiv arbeitende Multiplexerausbildung. Beispielsweise ist ein Multi­ plexer mit zwei Eingängen etwa halb so groß in physischer Ausbildung wie ein Register und ein Multiplexer mit drei oder vier Eingängen etwa von gleicher Größe wie ein Register. Daher hat die Wahl von Realisierungen, wie Multiplikationsfunktionen auszuführen sind, eine direkte Auswirkung auf Größe, Komplexität und Stromverbrauch der Einrichtung.
Aufgabe der Erfindung ist es, einen Multiplizierer nach dem Oberbegriff des Anspruchs 1 zu schaffen, der es ermöglicht, Operanden größer Wortlänge schneller und effektiver miteinander zu multiplizieren.
Diese Aufgabe wird entsprechend dem kennzeichnenden Teil des Anspruchs 1 gelöst.
Hierbei wird ein erster Operand A vollständig in ein Schiebe­ register geladen, während beim nachfolgenden Laden eines zweiten Operan­ den B nach Laden einer Mindestanzahl von bits hiervon bereits mit der Umkodieroperation begonnen wird, so daß während dieses Ladens die vorher geladenen Teile des Operanden B umkodiert und die Partialprodukte, ba­ sierend auf den so umkodierten Teilen, erzeugt und summiert werden.
Die umkodierten Teile des Operanden B werden verwendet, um den Faktor des Operanden A zur Verwendung bei der Bildung von Partialpro­ dukttermen zu wählen. Die Partialproduktterme werden unter Verwendung einer Übertragssicherungsaddition addiert, wobei das niederwertigste bit verwendet wird, um die niederwertigsten bits des Endprodukts zu bilden. Die höchstwertigsten bits des Endprodukts werden dann durch Addieren der Partialsumme und der aufgehobenen Übertragsdaten aus den Partialprodukt­ summationen gebildet.
Dieses Summieren von Partialsummen- und Übertragungssiche­ rungsdaten wird unter Verwendung eines datenbusbreiten Parallelüber­ tragsaddierers anstelle von Addierern für die Partialproduktakkumulation gemäß üblichen Booth′schen Multiplizierern vorgenommen. Die reduziert die Zeit, die erforderlich ist, um diese Stufe der Multiplikationsopera­ tion durchzuführen und den vollständigen Endproduktterm zu bilden, be­ trächtlich.
Der Multiplizierer führt Quadrieroperationen, wie sie in Expo­ nentiationsfunktionen verwendet werden, aus, indem der Wert des ersten Operanden A um ein bit verschoben wird, um das Zweifache dieses Wertes, (2*A), zu bilden, bevor die Multiplikation mit dem zweiten Operanden B zur Bildung von 2*A*B erfolgt. Dieses Schieben wird - anstatt nach der Akkumulation des Endproduktterms - durch einen Multiplexer bewirkt, der verwendet wird, um den geeigneten Faktor des Operanden A für jeden Par­ tialproduktterm auszuwählen.
Taktsignale, die verwendet werden, um die Datenverarbeitungs­ operationen und den Datenfluß durch Schieberegister und Addierer zu steuern, werden vorteilhaft gegattert, so daß solche Schieberegister, die momentan nicht benötigt werden, momentan ungetaktet bleiben.
Weitere Ausgestaltungen der Erfindung sind der nachfolgenden Beschreibung und den Unteransprüchen zu entnehmen.
Die Erfindung wird nachstehend anhand des in den beigefügten Abbildungen dargestellten Ausführungsbeispiels näher erläutert.
Fig. 1 zeigt ein Blockdiagramm eines 256 bit mal 256 bit-Booth-Multiplizierers.
Fig. 2 zeigt ein Blockdiagramm einer Multipliziereinheit des Booth-Multiplizierers von Fig. 1.
Fig. 3 zeigt ein schematisches Diagramm eines Taktgatterungs­ steuerkreises für die Multipliziereinheit von Fig. 2.
Fig. 4 zeigt eine schematische Schaltkreisanordnung eines kas­ kadierten Umkodierers der Multipliziereinheit von Fig. 2.
Fig. 5 zeigt ein Diagramm der Verbindungen zwischen Addierer­ matrizen und Partialsummen/Übertragssicherungsregistern der Multipli­ ziereinheit.
Fig. 6 zeigt detaillierter die Multipliziereinheit des Booth-Multiplizierers.
Fig. 7 zeigt einen bekannten Schaltkreis für einen Booth-Mul­ tiplizierer.
Der in Fig. 1 dargestellte Booth-Multiplizierer 50 umfaßt eine Folgesteuerung 70, die von einem Prozessor 60, der den Booth-Multipli­ zierer 50 instruiert, Befehle empfängt, um eine von mehreren grundlegen­ den Multiplikationsfunktionen auszuführen. Die Folgesteuerung 70 gibt Steuersignale ab, die verwendet werden, um Taktsignale zu erzeugen, die die verschiedenen Komponenten einer Multipliziereinheit 100 takten. Die Taktsignale werden in einer Weise erzeugt, die die Taktgatterschaltungs­ eigenschaften der Erfindung realisiert.
Nach Empfang eines Eingangsbefehls erzeugt die Folgesteuerung 70 Signale, um die verschiedenen Datenverarbeitungsfunktionen freizuge­ ben, die bei der Ausführung der gewünschten Multiplikationsfunktion durchzuführen sind. Dies wird durch die Verwendung einer Folgesteuerung bewirkt, die Systemtaktzyklen zählt und Funktionsfreigabesignale zu ge­ eigneten Zeiten in Übereinstimmung mit der Anzahl der für jede Stufe der von der Multipliziereinheit 100 durchgeführten Datenverarbeitung erfor­ derlichen Zyklusanzahl abgibt. Die Funktionsfreigabesignale werden von einem Satz von getakteten Gattersteuerkreisen 300 geliefert, die Funk­ tionstaktsignale abgeben, die verwendet werden, um ein Register oder ei­ ne andere Komponente der Multipliziereinheit 100 zu takten, die einen bestimmten Schritt der Multiplikationsoperation durchführt.
Da die Kombination der Funktionsfreigabesignale, die von der Folgesteuerung 70 erzeugt werden, und die Einwirkungen der Gattersteuer­ kreise 300 verwendet werden, um Taktsignale für die verschiedenen Kompo­ nenten der Multpliziereinheit 100 zu erzeugen, kann, durch Ein- und Aus­ schalten der Taktsignale entsprechend den Stufen des Multiplikationsvor­ gang verglichen mit synchron getakteten Strukturen, der Stromverbrauch geschont werden.
Eine Pseudocodeliste, die den Betrieb der Folgesteuerung 70 beschreibt, ist in der Anlage zu dieser Anmeldung enthalten. Der Pseudo­ code gibt die verschiedenen Funktionsfreigabe- (und -ausschalt-)Signale an, die durch die Folgesteuerung 70 in Termen der Anzahl von Systemtakt­ zyklen und der Betriebsstufe des Multiplikationsvorgangs erzeugt wer­ den.
Die Multipliziereinheit 100 des 256 bit mal 256 bit-Booth-Mul­ tiplizierers 10 umfaßt einen 32-bit-breiten-Datenbus 102, über den die Daten eingegeben werden, die Operanden A und B darstellen. Die Daten des Operanden A werden vom Datenbus 102 aufgenommen und in ein 256-bit-Schie­ beregister 104 geladen, wobei jeweils 32 bit mit jedem Taktzyklus geladen werden. Ein Taktsignal (CLKA) 105 für den Operand A steuert das Laden von diesem in 32-bit-Datengruppen in das Schieberegister 104. Da der Operand A 256 bit lang ist, sind 8 Taktzyklen erforderlich, um sein Laden in das Schieberegister 104 zu vervollständigen. Der Multiplikator, Operand B, kann dann entsprechend in ein 256-bit-Schieberegister in den nächsten 8 Taktzyklen, wie in einer typischen Multipliziererauslegung, geladen werden. Jedoch erfordert die Verwendung der Booth-Methode mit einem zweistufigen Umkodierer gemäß der Erfindung nur die ersten 4 bit des Multiplikators, um die Umkodieroperation zu beginnen. Anstatt zu warten, bis Operand B vollständig in ein 256-bit-Schieberegister geladen ist, werden die ersten 32 bit des Operanden B in ein 32-bit-Schieberegi­ ster 108 geladen, das durch ein Taktsignal B0 (CLKB0) 109 gesteuert wird. Diese 32 bit werden zum Umkodieren in Gruppen von 4 bit über die nächsten 4 Zyklen des Taktsignals 109 ausgeschoben. Dies erlaubt es, daß 8 Multiplikationszyklen auftreten, während die verbleibenden 224 bit des Operanden B in ein 224-bit-Schieberegister 106 mit einem Taktsignal B (CLKB) 107, das das Laden der 32-bit-Datengruppen des Operanden B in das Schieberegister 106 kontrolliert, geladen werden.
Während der Zeit, während der die verbleibenden bits des Ope­ randen B in das Schieberegister 106 geladen wurden, hat das Schieberegi­ ster 108 das Überschieben seiner ursprünglichen 32-bit-Gruppen in Grup­ pen von 4 bit zum Umkodieren beendet. Dies ermöglicht es, die nächste 32-bit-Gruppe des Operanden B vom Schieberegister 106 in das Schiebere­ gister 108 in Übereinstimmung mit dem Taktsignal B 107 zu laden. Der Taktzyklus fährt fort, wenn das Schieberegister 108 die neuen Daten des Operanden B zum Umkodieren in 4-bit-Gruppen nach Empfang jedes Taktsi­ gnals B0 109 ausschiebt. Dies erfolgt so lange, bis das Schieberegister 108 leer ist und die nächste 32-bit-Gruppe vom Schieberegister 106 auf­ grund des Empfangs des Taktsignals 107 geladen wird. Diese Abfolge wie­ derholt sich, bis alle 224 bit, die in das Schieberegister 106 geladen sind, in das Schieberegister 108 überschoben worden und durch den Booth- Umkodierer, wie nachfolgend beschrieben, eingewirkt worden sind.
Drei Taktsignale 105, 107 und 109 werden verwendet, um das La­ den der Schieberegister 104, 106 und 108 zu steuern. Jedoch ist es not­ wendig, daß alle drei Taktsignale 105, 107 und 109 zur gleichen Zeit freigegeben werden und aktiv die Schaltkreisanordnung takten. Das Takt­ signal 105 wird für 8 Zyklen benötigt, um das Laden des Schieberegisters 104 mit den bits des Operanden A zu vervollständigen. Während dieser Zeit brauchen beide Taktsignale 107 und 109 nicht aktiv ihre entspre­ chenden Schieberegister zu takten. Nach Vervollständigung des Ladens der bits des Operanden A wird das Taktsignal 105 bis zur nächsten Multipli­ kationsoperation, wenn neue Daten eines Operanden A geladen werden, nicht benötigt und kann daher abgeschaltet werden. Nach Laden des 256-bit-Operanden A in das Schieberegister 104 wird das Taktsignal 109 verwendet, um die ersten 32 bit des Operanden B in das Schieberegister 108 zu laden. Dieses Signal wird dann verwendet, um die 32 bit um 4 bit während jedes nachfolgenden Zyklus des Taktsignals 109 zu schieben. Wäh­ rend das Taktsignal 109 verwendet wird, um die 32 bit, die in das Schie­ beregister 108 geladen sind, zum Umkodieren in Gruppen von 4 bits auszu­ schieben, wird das Taktsignal 107 verwendet, um die verbleibenden 224 bits des Operanden B in das Schieberegister 106 zu laden. Das Taktsignal 107 kann dann bezüglich des Schieberegisters 106 abgeschaltet werden. Daher können die Taktsignale 105 und 107 bezüglich ihrer entsprechenden Schieberegister abgeschaltet werden, wenn diese nicht geladen werden.
Das Gattern der Taktsignale 105, 107 und 109, so daß sie ihre entsprechenden Schieberegister steuern, wenn diese benötigt werden, re­ duziert im Vergleich zu einer permanenten aktiven Verbindung den Strom­ verbrauch der Multipliziereinheit 100. Anstatt eines gemeinsamen Taktsi­ gnals zum Laden der Operandendaten verwendet die Multipliziereinheit 100 von Fig. 3 Steuersignale, die bestimmen, wann ein Taktsignal aktiv ist und ein Schieberegister taktet. Dies eliminiert die Notwendigkeit von Multiplexern oder anderen Schaltkreisen zur Realisierung eines Ruhezu­ stands, in dem die Daten in den Schieberegistern während späterer Stufen der Multiplikationsoperationen rezykliert und erhalten werden. Die Takt­ steuersignale werden wie benötigt in Abhängigkeit vom Zustand der durch den Multiplizierer zu verarbeitenden Daten erzeugt. Durch Verwendung von Vielfachtakten, deren Signale gegattert und wie benötigt verwendet wer­ den, kann der Stromverbrauch, verglichen mit synchron durch ein gemein­ sames Taktsignal getaktete Multiplizierer reduziert werden.
Als ein Beispiel für den Unterschied zwischen dem Stromver­ brauch zwischen einem erfindungsgemäßen und einem bekannten Multiplizie­ rer zeigt die nachstehende Tabelle die Anzahl von Taktzyklen, die für die angegebene Stufe der Multiplikationsoperation für jeden der beiden Multiplizierer erforderlich ist:
Wie die Tabelle zeigt, erzeugt die Taktsignalgatterung eine signifikante Reduzierung (ein Faktor von Zweidrittel) der Anzahl der Taktzyklen, die erforderlich sind, um die Multiplikationsoperation durchzuführen. Die Kombination von Taktsignalgatterung und Schaltkreis­ reduktion (etwa durch wegfallende Multiplexer), das aus ersterem resul­ tiert, ergibt sich eine signifikante Reduktion des Stromverbrauchs. Schätzungsweise läßt sich dieser auf etwa ein Sechstel reduzieren.
Fig. 3 zeigt ein schematisches Diagramm eines Taktgatterungs­ steuerkreises 300, wie er in der Multipliziereinheit 100 von Fig. 2 ver­ wendet werden kann. Die Folgesteuerung 70 wird verwendet, um den Takt­ gatterungssteuerkreis 300 zu triggern und zu bestimmen, welche Taktsi­ gnale aktiv sind und zum Freigeben von Schaltkreisen der Multiplizier­ einheit 100 wirken. Eine derartige Gatterung kann durch ein UND-Gatter ausgeführt werden, das als Eingänge ein Systemtaktsignal und ein Freiga­ besignal für eine gewünschte Funktion (Ladeoperand, Schiebedaten, usw.) besitzt. Wenn das Freigabesignal hochpegelig ist, wird das UND-Gatter einen hochpegeligen Ausgang (ein Funktionstaktsignal) an der ansteigen­ den Kante des Systemtaktsignals erzeugen. Das UND-Gatter dient dazu, das Systemtaktsignal abzutasten und ein Funktionstaktsignal zu liefern, wenn das Freigabesignal sich im richtigen Zustand befindet. Obwohl dieser einfache Gatterungskreis die gewünschte Funktion erfüllt, machen Deko­ dieroperationen und differierende Signalausbreitungswege die Verwendung eines UND-Gatters wegen der möglichen Erzeugung von Störungen im UND-Gatterausgang unerwünscht.
Bei dem in Fig. 3 dargestellten Taktgatterungssteuerkreis 300 tritt dieses Problem nicht auf. Ein erster Eingang zum Taktgatterungs­ steuerkreis 300 ist ein Funktionsfreigabesignal 302. Das Funktionsfrei­ gabesignal 302 wird durch die Folgesteuerung 70 erzeugt. Die Folgesteue­ rung 70 ist grundsätzlich ein Zähler, der seinen Zustand an der anstei­ genden Kante des Systemtaktes ändert. Wenn die Folgesteuerung 70 System­ taktzyklen zählt, werden die geeigneten Funktionsfreigabesignale (lade Operand A, lade 32 bit des Operanden B, gebe Booth-Umkodierer frei, usw.) und Funktionssperrsignale zu den gewünschten Zeiten erzeugt. Durch Steuern, wann jedes der Funktionsfreigabe- und Sperrsignale erzeugt wird, kann die Zeitabfolge der verschiedenen Operationen des Multipli­ zierers gesteuert werden. Wenn eine bestimmte Funktion freigegeben wird, werden die vorherigen Funktionen gesperrt, wodurch Strom gespart wird. Ein separater Taktgatterungssteuerkreis 300 wird zum Erzeugen jedes der erforderlichen Funktionsfreigabesignale verwendet.
Als zweiten Eingang empfängt der Taktgatterungssteuerkreis 300 ein Systemtaktsignal 304. Das Systemtaktsignal 304 wird durch einen In­ verter 308 invertiert und auf ein Flip-Flop 310 gegeben. Das Funktions­ freigabesignal 302 liefert den zweiten Eingang des Flip-Flops 310. Hier­ durch wird ein Mittel zum Abtasten des Funktionsfreigabeeingangs (am Ausgang des Flip-Flops 310) an der negativen Kante des Systemtaktsignals geliefert. Diese Anordnung wird gewählt, da sie es ermöglicht, eine Hälfte eines Taktsignals für die Funktionsfreigabedekodierung und zum Ausgleich von Ausbreitungsverzögerungen zu verwenden. Der Ausgang des Taktgatterungssteuerkreises 300 ist ein Funktionstaktsignal 318, das verwendet wird, um das Schieberegister oder andere Schaltkreise, die ei­ ne gewünschte Funktion ausführen, zu takten. Das Funktionstaktsignal 318 wird auf der ersten Anstiegskante des Systemtaktsignals 304 freigegeben, nachdem das Funktionsfreigabesignal 302 den Zustand ändert. NAND-Gatter 314 und Inverter 316 werden im Ausgangspfad verwendet, um eine zusätzli­ che Pufferung zu liefern und die Treiberstärke des Ausgangssignals zu verbessern.
Ein Rückstellsignal 306 bildet einen dritten Eingang des Takt­ gatterungssteuerkreises 300. Das Rückstellsignal 306 wird mittels eines Inverters 312 invertiert und auf den Flip-Flop 310 gegeben, damit dieser nach einer Systemrückstellung einen vorhersehbaren Zustand besitzt.
Die Kombination der Funktionsfreigabesignale 302, die von der Folgesteuerung 70 oder einer anderen Steuerung und dem Taktgatterungs­ steuerkreis 300 von Fig. 3 erzeugt werden, werden verwendet, um taktende Signale für verschiedene Komponenten des Multiplizierers zu liefern, wo solche Signale notwendig sind. Durch Ein- und Ausschalten dieser Signale entsprechend den Stufen der Multiplikationsoperation kann der Stromver­ brauch im Vergleich zu synchrongetakteten Multiplizierern gesenkt wer­ den.
Obwohl die Taktgatterung insoweit unter Bezugnahme auf die Verwendung eines Systemtaktsignals 304 mit einer einzelnen Frequenz als Eingang zu jedem der Taktgatterungssteuerkreise 300 von Fig. 3 beschrie­ ben wurde, kann eine Vielzahl von Systemtaktsignalen mit unterschiedli­ chen Frequenzen verwendet werden. Unterschiedliche Systemtaktsignale können als Eingänge zu verschiedenen der Taktgatterungssteuerkreise 300 in Abhängigkeit von der Multiplizierstufe, die das Signal nutzt, verwen­ det werden. Beispielsweise kann die Operandenladestufe mit einer unter­ schiedlichen Frequenz als die Stufe der Booth′schen Umkodierung und Ak­ kumulation getaktet werden. Dies führt zu einer verbesserten Leistung, obwohl hierdurch der Stromverbrauch insgesamt beeinträchtigt wird.
Nachdem die ersten 32 bits des Multiplikators, Operand B, in das Schieberegister 108 geladen worden sind, beginnt die Akkumulations­ stufe für das Booth-Partialprodukt des Multiplikationsvorgangs. Während jedes Zyklus des Taktsignals 109 werden 4 bits des Inhalts des Schiebe­ registers 108 zu einem Booth′schen Umkodiermodul 110 mittels Datenbus 111 überschoben. Der Umkodiermodul 110 wertet den Multiplikator, Operand B, in aufeinanderfolgenden bit-Feldern aus, um zu bestimmen, welcher Faktor des Multiplikanden, Operand A, zu verwenden ist, um die Partial­ produktterme zu bilden, die zusammenzuaddieren sind, um das Endprodukt zu erhalten. Jedes bit-Feld-Umkodieren erzeugt 2 niederwertigste bits eines unkorrigierten Ergebnisses für das Endprodukt und einen Über­ tragsterm modulo 4. Die bit-Feldauswertung wird entsprechend der Booth′schen Methode umkodiert, um zu bestimmen, ob ein Faktor entweder 0, A, -A, 2A oder -2A in dem laufenden Partialproduktterm zu verwenden ist.
Der Umkodiermodul 110 besteht aus zwei 3-bit-Booth-Umkodie­ rern, die kaskadenartig zusammengeschaltet sind, um einen Booth′schen Umkodierer modulo 4 zu bilden. Jeder der separaten Umkodierer prüft drei aufeinanderfolgende bits des Multiplikanden, Operand B, mit den 3-bit-Feldern, die sich um ein bit überlappen. Der Umkodiermodul 110 prüft daher fünf verschiedene bits des Operanden B während jedes Zy­ klus. Jeder der getrennten Umkodierer erzeugt zwei niederwertigste bits der unkorrigierten Produktdaten und ein bit eines Übertragsdatums modulo 4 pro Taktzyklus, so daß die beiden kaskadierten Umkodierer zusammen vier niederwertigste bits der Produktdaten und zwei Übertragsbits pro Taktzyklus erzeugen.
Einer der beiden kaskadierten Umkodierer 200, die in dem Umko­ diermodul 110 vorgesehen sind, ist in Fig. 4 schematisch dargestellt. Der Umkodierer 200 besitzt drei Eingänge 202, die mit Yin<0<, Yin<1< und Yin<2< bezeichnet sind. Entsprechend der Booth′schen Methode bestimmen die bit-Werte der Eingänge 202 den Ausgang des Umkodierers 200. Dieser Ausgang liegt dann in Form eines Steuersignals 112 (s. Fig. 2) vor, das einen Wählmultiplexer 114 instruiert, den Faktor des Operanden A zu lie­ fern, der verwendet wird, um das Partialprodukt zu bilden. Der Wählmul­ tiplexer 114 spricht auf das Steuersignal 112 durch Bilden des Faktors des Operanden A (erhalten vom Schieberegister 104), der für den Partial­ produktterm erforderlich ist, an. Diese Steuersignale 112 sind individu­ ell in Fig. 4 gezeigt: Signal 204 wird verwendet, um einen Faktor von 0 zum Partialprodukt zu addieren; Signal 205 wird verwendet, um einen Fak­ tor A zu addieren; Signal 206 wird verwendet, um einen Faktor 2A zu ad­ dieren; Signal 207 wird verwendet, um einen Faktor -A zu addieren, und Signal 208 wird verwendet, um einen Faktor -2A zu addieren.
Der Umkodierer 200 von Fig. 4 realisiert die folgende Verknüp­ fungstafel, basierend auf einem Vergleich von bits 2j+2, 2j+1 und 2:
In dieser Tabelle läuft der Index j von 0 bis 1. Dies bedeutet, daß wäh­ rend jedes Taktzyklus die drei bit-Gruppen von bits 0, 1, 2 und bits 2, 3, 4 durch die kaskadierten Umkodierer 200 umkodiert werden. Fig. 4 zeigt lediglich ein Ausführungsbeispiel eines geeigneten Schaltkreises für einen Umkodierer 200, der sich auch in anderer Weise zur Realisie­ rung der obigen Tabelle ausführen läßt.
Das Steuersignal 112 instruiert als Ausgang des Umkodiermoduls 110 den Wählmultiplexer 114, den geeigneten Faktor des Operanden A zu verwenden, um das Partialprodukt zu bilden. Da zwei Umkodierer 200 in dem Umkodiermodul 110 verwendet werden, gibt der Wählmultiplexer 114 zwei Faktoren des Operanden A bei jedem Taktzyklus aus. Umkodierbits 0, 1 und 2 werden verwendet, um den geeigneten Faktor von A zu erzeugen, der als ein Eingang zu einer Partialsummen/Übertragungssiche­ rungs-(PS/CS)-Addierermatrix 0 116 dient und der mittels des Datenbus 115 übertragen wird. Umkodierbits 2, 3 und 4 werden verwendet, um den ge­ eigneten Faktor von A zu erzeugen, der als ein Eingang für eine Partial­ summen/Übertragssicherungs-(PS/CS)-Addierermatrix 1 118 dient und der mittels des Datenbus 117 übertragen wird. Wenn daher jede Gruppe von 4 bits des Operanden B während eines Taktzyklus umkodiert wird, werden zwei Faktoren des Operanden A ausgewählt und zu den Addierermatrizen 116 und 118 übertragen. Jede der beiden PS/CS-Addierermatrizen 116 und 118 stellt eine Gruppe von 260 1-bit-übertragssicherungsaddierern (CS-Addie­ rer) dar. Dies bedeutet, daß die Überträge von jedem Addierer nicht un­ mittelbar zu den höheren Summenbits durchgeschoben werden, um eine ein­ zelne Summe zu bilden. Statt dessen erzeugen die Addierer eine 260-bit-Par­ tialsumme und einen 260-bit-Partialübertrag. Wenn jeder der 260-bit-Brei­ tenpartialsummenterme (die Faktoren des Operanden A) zu den Addie­ rermatrizen 116 und 118 geliefert werden, werden sie zu den Resultaten der vorherigen Additionsoperation, die von den Addierern durchgeführt wurden, addiert. Die Addierer sind derart verbunden, daß die neuen Fak­ toren in geeigneter Weise um 2 bit vor ihrer Akkumulation mit den vorhe­ rigen Resultaten verschoben werden. Dies geschieht, damit sich die Ein­ gangsdaten im modulo-4-Format befinden.
Jede Additionsoperation resultiert in einem neuen Partialsum­ menterm und einem neuen Übertragsaufhebungsterm. Die beiden niederwer­ tigsten bits des Partialsummenterms und das niederwertigste bit des Übertragsaufhebungsterms für jede Additionsoperation werden auf einen 4-bit-Parallelübertragsaddierer 124 gegeben. Wenn beide Addierer 116 und 118 die Partialsummen- und Übertragssicherungsterme während jedes Takt­ zyklus erzeugen, werden zwei Sätze von niederwertigsten Partialsummen- und Übertragssicherungsbits von dem Parallelübertragsaddierer geliefert. Dies ergibt insgesamt vier niederwertigste bits der Partialsummendaten und zwei bits der Übertragssicherungsdaten. Diese Daten werden im Paral­ lelübertragsaddierer 124 mit dem Übertragsbit-modulo-4 kombiniert, das durch jede Umkodierstufe im Umkodiermodul 110 erzeugt und mittels eines Datenbus 142 übertragen wurde. Jeder Taktzyklus erzeugt 4 bits von End­ produktdaten nach Übergabe der Faktoren des Operanden A durch die PS/CS-Ad­ dierermatrizen 116 und 118. Diese vier bits des Produkts werden durch Kombinieren der beiden Sätze von zwei Partialsummenbits und einem Über­ tragssicherungsbit, geliefert durch den Umkodiermodul 110, erzeugt, um vier bits des Endprodukts zu erzeugen. Die beiden bits modulo 4 an Über­ tragsdaten vom Umkodiermodul 110 werden durch den Wählmultiplexer 114 verwendet, um die Zweierkomplementsubtraktionsfunktion zu realisieren, die in dem Umkodier- und Partialproduktakkumulationsschritt verwendet werden.
Jede 4-bit-Gruppe der Endproduktdaten, die durch den Parallel­ übertragsaddierer 124 erzeugt wird, wird in ein 32-bit-Schieberegister 126 überschoben, das durch ein Taktsignal 125 gesteuert wird. Das Schie­ beregister 126 wird verwendet, um die 4-bit-Gruppen der Endproduktdaten in ein 32-bit-Segment der Endproduktdaten zu kombinieren. Diese Opera­ tion wird durchgeführt, um die zum Verschieben der Produktterme in den Akkumulator, der zur Bildung des Endprodukts verwendet wird, benötigten Schaltkreise zu reduzieren. Hierdurch wird ferner die Geschwindigkeit erhöht, mit der das Endprodukt gebildet wird.
Wenn jede 32-bit-Gruppe der Endproduktdaten vervollständigt ist, wird sie aus dem Schieberegister 126 zu einem Akkumulatormultiple­ xer 128 überschoben. Der Inhalt des Akkumulatormultiplexers 128 wird dann in einen 256-bit-Akkumulator 130 umgespeichert, der die untere Hälfte eines 512-bit-Akkumulators darstellt, der letztendlich das schließliche 512-bit-Produkt enthält, das aus der von dem Multiplizierer durchgeführten Kalkulation resultiert. Das Signal AL 131 wird verwendet, um den Akkumulator 130 mit den 32-bit-Abschnitten des Endprodukts, die aus dem 32-bit-Schieberegister 126 erhalten wurden, über den Akkumula­ tormultiplexer 128 zu laden.
Fig. 5 zeigt den Datenfluß zwischen den 1-bit-Übertragssiche­ rungsaddierern der Addierermatrix PS/CS 0 116, den 1-bit-Übertragssiche­ rungsaddierern der Addierermatrix PS/CS 1 118, dem CS Register 120 und dem PS Register 122. Hiernach ist jede der Addierermatrizen 116 und 118 aus einer Gruppe von 1-bit-Übertragssicherungsaddierern 150 zusammenge­ setzt. Die Schieberegister 120 und 122 bestehen aus einer Gruppe von in­ dividuellen Schieberegistern 152, wobei in Fig. 5 nur ein Teil des vol­ len Satzes von Addierern 150 und Schieberegistern 152, die in dem Multi­ plizierer enthalten sind, dargestellt sind.
Jeder 1-bit-Addierer 150 besitzt Eingänge A, B und CI (Über­ tragsbit von einer vorhergehenden Stelle) und Ausgänge S (Partialsumme) und C0 (Übertragsbit zu einer nachfolgenden Stelle). Die Eingänge der Addierermatrix 116 sind die Faktoren des Operanden A entsprechend den umkodierten Werten der bits 0, 1 und 2 des umkodierten Abschnitts des Operanden B. Dieser Faktor ist als der Term A0 in Fig. 5 dargestellt, wobei A0[n] das n-te bit des Terms A0 darstellt. Die Eingänge der Ad­ dierermatrix 118 sind die Faktoren des Operanden A entsprechend den um­ kodierten Werten der bits 2, 3 und 4 des umkodierten Abschnitts des Ope­ randen B. Dieser Faktor ist als der Term A1 in Fig. 5 dargestellt, wobei A1[n] das n-te bit des Terms A1 darstellt.
Die geeigneten bits des Faktors des Operanden A werden, wie dargestellt, den Addierern 150 der Addierermatrix 116 eingegeben. Die anderen Eingänge der Addierer 150 der Addierermatrix 116 sind die geeig­ neten bits der Schieberegister 122 und 120. Hierdurch wird eine Rück­ kopplungsschleife zwischen den Registern 122, 120 und der Addierermatrix 116 gebildet. Diese Rückkopplungsschleife wird für die Partialproduktak­ kumulationsfunktion des Multiplizierers verwendet und ist durch den Da­ tenbus 154 in Fig. 2 angezeigt. 1-bit-Addierer 150 in den Addierermatri­ zen 116 und 118 sind in bezug zu einander versetzt, wobei die Eingänge des n-ten Addierers 150 in der Addierermatrix 118 mit dem Ausgang des n-2-ten Addierers 150 in der Addierermatrix 116 verbunden ist. Dieses Verbindungsschema realisiert den Faktor der Booth′schen Umkodierver­ schiebung um 2 bits, die erforderlich ist, wenn eine modulo 4 basierte Berechnung vorgenommen wird.
Die geeigneten Faktoren des Operanden A werden, wie bereits ausgeführt, an die Addierermatrizen 116 und 18 gegeben. Diese Faktoren werden zu den Resultaten der vorhergehenden Addieroperation hinzuad­ diert, wodurch ein neuer Wert für die Partialsumme und Übertragsausgänge erzeugt wird. Die niederwertigsten bits der Partialsumme und der Über­ tragsterm, die durch die Addierermatrizen 116 und 118 (eine Gesamtheit von vier Partialsummen- und zwei Übertragsbits) bei jedem Zyklus erzeugt werden, werden zu dem Parallelübertragsaddierer 124 zur Kombination in den 4-bit-Sektionen des Endproduktterms übertragen. Die verbleibenden Partialsummenausgänge der Addierer 150, die in der Addierermatrix 118 enthalten sind, liefern die Inhalte des Schieberegisters 122, während die verbleibenden Übertragssicherungsausgänge der Addierer 150 die In­ halte des Schieberegisters 120 liefern. Es handelt sich um diese Terme, die an die Addierermatrizen 116 und 118 während des nächsten Zyklus durch die Rückkopplungsverbindung zwischen den Schieberegistern 122, 120 und den Addierermatrizen 116, 118 geliefert werden.
Nachdem der gesamte Operand B umkodiert wurde, wurden die ge­ eigneten Faktoren des Operanden A in den Addierermatrizen 116 und 118 akkumuliert und die Partialsummen- und Übertragssicherungsdaten für je­ den Zyklus zum Parallelübertragsaddierer 124 übertragen, wobei die Schieberegister 120 und 122 die höchstwertigen bits der bezüglich der Faktoren des Operanden A durchzuführenden Übertragsoperationen enthal­ ten. Das Schieberegister 120 hat eine Größe von 260 bits und wird durch ein Taktsignal CS 121 getaktet, während das 260 bit große Schieberegi­ ster 122 durch ein Taktsignal PS 123 getaktet wird. Die Inhalte der Schieberegister 120, 122 werden verwendet, um die endgültige Additions­ operation zu realisieren, die die oberen 256 bit des Endprodukts lie­ fert.
Wenn der gesamte Operand B umkodiert worden ist, enthält der Akkumulator 130 die unteren 256 bit des Endprodukts. Die verbleibenden bits des Endprodukts werden durch Addieren der Inhalte des Schieberegi­ sters 120 zu den Inhalten des Schieberegisters 122 erhalten. Diese Addi­ tion wird durch einen 32-bit-Parallelübertragsaddierer 132 durchgeführt. Wenn jeder 32-bit-breite Satz von Daten aus den Schieberegistern 120 und 122 durch den Parallelübertragsaddierer 132 zur Erzeugung einer 32-bit-Grup­ pe der höchstwertigen bits des Endprodukts addiert wird, wird sie in einen 256-bit-Akkumulator 134 geladen, der die obere Hälfte des 512-bit-Ak­ kumulators darstellt, der letztendlich das 512-bit-Endprodukt enthält. Ein Taktsignal AH 135 wird verwendet, um den Akkumulator 134 mit den 32-bit-Abschnitten des Endprodukts, die vom Parallelübertragsaddierer 132 erhalten wurden, zu laden. Wenn der Akkumulator 134 gefüllt ist, sind sowohl der obere als auch der untere der 256-bit-Abschnitte des Endprodukts vervollständigt.
Die unteren 256 bit des Endprodukts werden aus dem Akkumulator 130 in 32-bit-Gruppen unter der Steuerung eines Taktsignals AL 131 aus- und auf einen Datenbus 135 gegeben. Während die unteren 256 bit auf den Datenbus 136 gegeben werden, werden die oberen 256 bit durch das Taktsi­ gnal 135 in 32-bit-Gruppen auf den Akkumulatormultiplexer 128 gegeben. Die 32-bit-Gruppen der oberen 256 bit werden dann zum Akkumulator 130 geführt, wenn die unteren bit-Gruppen aus diesem Register ausgegeben werden. Während der Zeit, während der die 256 unteren bit des Endpro­ dukts vom Akkumulator 130 auf den Datenbus 136 ausgegeben wurden, wurde der Akkumulator 130 durch die 32-bit-Gruppen der oberen 256 bits des Produkts, die vorher in dem Akkumulator 134 gehalten wurden, wieder auf­ gefüllt. Die oberen 256 bit werden dann vom Akkumulator 130 auf den Da­ tenbus 136 ausgegeben. Auf diese Weise werden sämtliche 512 bit des End­ produkts auf den Datenbus 136 in 32-bit-Gruppen ausgegeben.
Ein derartiger Multiplizierer kann in drei funktionale Module unterteilt werden: 1) Operandenlademodul, 2) Modul zur Booth′schen Partialproduktberechnung und Akkumulation und 3) Akkumulatorschiebefunk­ tionsmodul, der das endgültige 512-bit-Produkt bildet. Wie in Fig. 2 an­ gegeben, wird jede dieser drei Stufen unabhängig voneinander getaktet.
Die Taktsignale 105, 107 und 109 werden verwendet, um die Ope­ randen in die Schieberegister 104, 106 und 108 zu laden. Die Taktsignale 121, 123 und 125 werden verwendet, um die Booth′schen Partialprodukte zu berechnen und die Segmente der Produktterme in die 256-bit-langen oberen und unteren Abschnitte des Endprodukts zusammenzusetzen, die in den Schieberegistern 134 und 130 gespeichert werden. Die Taktsignale 135 und 131 werden verwendet, um das Zusammensetzen des Endproduktterms aus den Inhalten der Schieberegister 134 und 130 zu steuern.
Wenn jeder dieser drei Sätze von Taktsignalen für eine unter­ schiedliche Stufe der 256 mal 256 bit-Multiplikation verwendet wird, ist es nicht notwendig, daß alle Taktgeneratoren Signale zu den entsprechen­ den Schieberegistern während der gesamten Berechnung senden. Die Taktge­ neratoren werden durch eine Folgesteuerung 70 für den Multiplizierzu­ stand gesteuert, so daß ihre Signale nur wenn benötigt geliefert werden. Dies reduziert den Stromverbrauch des Multiplizierers, da diejenigen Komponenten, die während einer bestimmten Berechnungsstufe nicht benö­ tigt werden, kein Taktsignal empfangen. Außerdem wird hierbei keine Mul­ tiplexerschaltkreisanordnung zum Erzeugen eines Registerruhezustandes benötigt.
Das in Fig. 6 dargestellte detailliertere Blockdiagramm der Multipliziereinheit 100 des 256-bit-mal-256-bit-Booth-Multiplizierers von Fig. 2 umfaßt Schieberegister 160, 162 und 164, die dazu verwendet werden, die Überträge von Parallelübertragsaddierern 124, 132 bzw. 168 zu speichern und entsprechend zu wichten. Fig. 6 zeigt Multiplexer 166, die verwendet werden, um die komplexeren Lade- und Umspeicheroperationen für die Akkumulatoren 130 und 134 zu realisieren. Der Parallelübertrags­ addierer 168 ist ein 32-bit-Addierer, der dazu verwendet wird, das Pro­ dukt der Multiplikationsoperation zu einem existierenden Akkumulatorwert zu addieren.
Schieberegister 160, 162 und 164 werden verwendet, um einen Überlaufübertrag von den Parallelübertragsaddierern aufzunehmen. Wenn beispielsweise der Parallelübertragsaddierer einen übertrag in der fünf­ ten bit-Stelle besitzt, da die vorhandenen vier bits der Summe auszu­ schieben sind, wird das fünfte bit das niederwertigste bit für den näch­ sten Zyklus. Daher ist es ein Eingang als Übertragsbit in den Addierer.
Die Multiplexer 166 werden verwendet, um Operationen wie ein Umspeichern der unteren Hälfte des Endproduktterms zu dem Prozessorda­ tenbus und Schieben der Inhalte des Akkumulators 134 zum Akkumulator 130 zu realisieren. Die Multiplexer 166 können auch verwendet werden, um den Gesamtakkumulator (Akkumulatorabschnitte 134 und 130) mit einem 512-bit-Wert zu laden, der von dem Prozessordatenbit erhalten wird, um die Akku­ mulatoren 130 und 134 freizumachen, die Inhalte des gesamten Akkumula­ tors auf den Prozessordatenbus umzuspeichern oder Daten von dem Prozes­ sordatenbus zu laden und diesen Wert zu den Inhalten des Akkumulators 134 zu addieren.
Der Parallelübertragsaddierer 132 erfüllt während der Booth′schen Umkodierung- und Akkumulationsoperationen zwei Funktionen. In der Partialproduktakkumulationsphase werden die 4-bit-Sektionen des Produktterms im Register 126 aneinander gestückelt, bis sie ein 32-bit-Wert bilden. Der gleichgewichtete 32-bit-Wert in dem Akkumulator 130 wird zu dem Wert in dem Schieberegister 126 addiert und in den Akkumula­ tor 130 geschoben. Während der Additionsphase durch die Schieberegister 120, 122, die die obere Hälfte des Produktterms bilden, wird der Paral­ lelübertragsaddierer 132 geschaltet, um die Inhalte der Register 120, 122 mit 32 bit per Zyklus zu addieren. Dieser 32-bit-Wert ist ein Ein­ gang des Parallelübertragsaddierers 168, der den gleichgewichteten 32-bit-Wert in Akkumulator 134 zur Summe der Schieberegister 120, 122 addiert. Die neue Summe wird dann in den Akkumulator 134 geschoben. Die­ se Schritte ermöglichen es dem Multiplizierer, die Operation A*B+C durchzuführen, wobei A und B Multiplikationsoperanden und C der Inhalt des 512-bit-Akkumulators zu Beginn eines neuen Multiplikationszyklus ist.
Die Booth′sche Umkodiermethode kann in bezug auf mit oder ohne Vorzeichen versehene Zahlen vorgenommen werden, wobei dies davon ab­ hängt, wie die niederwertigsten bits der Operanden gehandhabt werden. Operand A wird zu einem nicht mit Vorzeichen versehenen Wert durch Ein­ schluß von höchstwertigen bits, die den Wert null haben, weil die Booth′schen Addiererdatenpfade anstatt 256-bit-breit 260-bit-breit für 256-bit-lange Operanden sind. Operand B wird zu einem nicht mit Vorzei­ chen versehenen Wert, wenn ein gesonderter Umkodierzyklus durchgeführt und führende Nullen in der Endumkodierung eingeschlossen werden. Dies versetzt die Signifikanz des Produkts um vier bit. Dieser Versatz um vier bit kann durch geeigneten Ablauf der Folgesteuerung und Versatz des Datenflusses ausgeführt werden.

Claims (7)

1. Multiplizierer zum Berechnen des Produkts eines ersten und zweiten Operanden (A, B) mit einem Datenspeicher (104; 106, 108) zum La­ den und Speichern des ersten und des zweiten Operanden (A, B), einem Booth′schen Umkodierer (110) zum Bilden und Akkumulieren von Booth′schen Partialprodukten der beiden Operanden (A, B) und einer Einrichtung zur Produktakkumulation zum Bilden des Produkts der beiden Operanden (A, B) aus den akkumulierten Booth′schen Partialprodukten, wobei die verschie­ denen Komponenten des Multiplizierers mittels eines Taktsignals getaktet werden, dadurch gekennzeichnet, daß eine Taktsignalsteue­ rung vorgesehen ist, die ein Taktfreigabesignal liefert, wenn eine der Komponenten aktiv ist, auf welches Taktfreigabesignal eine Taktgenera­ toreinrichtung anspricht, und die ein Taktsperrsignal liefert, wenn eine der Komponenten inaktiv ist, so daß das Taktsignal unterbrochen wird.
2. Multiplizierer nach Anspruch 1, dadurch gekennzeichnet, daß die Taktsignalsteuerung eine Einrichtung zum Erzeugen eines Funktions­ freigabesignals, wenn ein Taktsignal vom Datenspeicher (104; 106, 108), Booth′schen Umkodierer (110) und der Einrichtung zur Produktakkumulation zum Durchführen der entsprechenden Datenverarbeitungsfunktion erfordert wird, eine Systemtaktsignalquelle und eine Einrichtung zum Abtasten des davon gelieferten Systemtaktsignals aufweist, wenn das Funktionsfreiga­ besignal erzeugt wird.
3. Multiplizierer nach Anspruch 2, dadurch gekennzeichnet, daß die Einrichtung zum Erzeugen eines Funktionsfreigabesignals eine Folge­ steuerung (70, 300) zum Zählen von Systemtaktsignalen und Erzeugen eines Funktionsfreigabesignals für eine Datenverarbeitungsfunktion nach einer vorbestimmten Anzahl von Systemtaktzyklen umfaßt.
4. Multiplizierer nach Anspruch 2 oder 3, dadurch gekennzeich­ net, daß die Systemtaktsignalquelle eine Vielzahl von Systemtaktsignalen mit mehr als einer Frequenz liefert, wobei der Datenspeicher (104; 106, 108), der Booth′sche Umkodierer (110) und die Einrichtung zur Produkt­ akkumulation mit verschiedenen der Vielzahl von Systemtaktsignalen ver­ sorgt werden.
5. Verfahren zum Berechnen des Produkts eines ersten und eines zweiten Operanden (A, B), umfassend das
Laden von Daten, die den ersten und zweiten Operanden (A, B) darstellen, wobei ein Operandenladetaktsignal das Laden der Operandenda­ ten steuert,
Beenden des Operandenladetaktsignals nach Laden der Operanden­ daten,
Umkodieren des zweiten Operanden (B) und Bilden und Akkumulie­ ren der Booth′schen Partialprodukte des ersten und zweiten Operanden (A, B), wobei ein Partialprodukttaktsignal die Bildung und Akkumulation der Partialprodukte steuert,
Beenden des Partialprodukttaktsignal nach Beendigung der Bil­ dung und Akkumulation der Partialprodukte,
Bilden des Produkts aus erstem und zweitem Operanden (A, B) aus den Booth′schen Partialprodukten, wobei ein Produkttaktsignal die Bildung des Produktes steuert, und
Beenden des Produkttaktsignals nach Vervollständigung der Bil­ dung des Produktes.
6. Verfahren nach Anspruch 5, dadurch gekennzeichnet, daß das Operandenladetaktsignal ein erstes und ein zweites Taktsignal umfaßt, von denen das erste nach Abschluß des Ladens der Daten des ersten Ope­ randen (A) vor Abschluß des Ladens der Daten des zweiten Operanden (B) beendet wird.
7. Verfahren nach Anspruch 5 oder 6, dadurch gekennzeichnet, daß das Operandenladetaktsignal, das Partialprodukttaktsignal und das Produkttaktsignal von mehr als einer Frequenz sind.
DE19635118A 1995-08-31 1996-08-30 Multiplizierer Withdrawn DE19635118A1 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US08/521,801 US5661673A (en) 1995-08-31 1995-08-31 Power efficient booth multiplier using clock gating

Publications (1)

Publication Number Publication Date
DE19635118A1 true DE19635118A1 (de) 1997-04-17

Family

ID=24078223

Family Applications (1)

Application Number Title Priority Date Filing Date
DE19635118A Withdrawn DE19635118A1 (de) 1995-08-31 1996-08-30 Multiplizierer

Country Status (3)

Country Link
US (1) US5661673A (de)
KR (1) KR970012130A (de)
DE (1) DE19635118A1 (de)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5880981A (en) * 1996-08-12 1999-03-09 Hitachi America, Ltd. Method and apparatus for reducing the power consumption in a programmable digital signal processor
US6026421A (en) * 1997-11-26 2000-02-15 Atmel Corporation Apparatus for multiprecision integer arithmetic
US6463453B1 (en) * 1998-01-12 2002-10-08 Motorola, Inc. Low power pipelined multiply/accumulator with modified booth's recoder
US6232820B1 (en) * 1999-06-14 2001-05-15 Intel Corporation Method and apparatus for dynamic clock gating
JP2003058272A (ja) * 2001-08-21 2003-02-28 Mitsubishi Electric Corp 半導体装置およびそれに用いられる半導体チップ
US6971038B2 (en) * 2002-02-01 2005-11-29 Broadcom Corporation Clock gating of sub-circuits within a processor execution unit responsive to instruction latency counter within processor issue circuit
US7069290B2 (en) * 2002-05-06 2006-06-27 Lucent Technologies Inc. Power efficient booth recoded multiplier and method of multiplication
US7587620B1 (en) * 2006-05-09 2009-09-08 Altera Corporation Power reduction techniques for components in integrated circuits by assigning inputs to a plurality of ports based on power consumption ratings
US7692462B2 (en) * 2008-01-25 2010-04-06 Himax Technologies Limited Delay-locked loop and a stabilizing method thereof
JP5123150B2 (ja) 2008-12-10 2013-01-16 株式会社東芝 トリガー信号検出装置
US20230015148A1 (en) * 2021-07-16 2023-01-19 Google Llc Multiplier and Adder in Systolic Array

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE3715975A1 (de) * 1986-05-13 1987-11-19 Toshiba Kawasaki Kk Adresssteuereinheit fuer bildinformationsdatei
US5070471A (en) * 1989-02-21 1991-12-03 International Business Machines Corp. High speed multiplier which divides multiplying factor into parts and adds partial end products

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4048621A (en) * 1976-03-17 1977-09-13 Holmes Protection Inc. Coding system for an alarm system and the like
JPS5775335A (en) * 1980-10-27 1982-05-11 Hitachi Ltd Data processor
US4876660A (en) * 1987-03-20 1989-10-24 Bipolar Integrated Technology, Inc. Fixed-point multiplier-accumulator architecture
US4876598A (en) * 1988-05-20 1989-10-24 Tecon, Inc. Apparatus for digitizing a composite video signal
JPH05273266A (ja) * 1992-03-25 1993-10-22 Advantest Corp 周波数偏差量測定装置
JP3742839B2 (ja) * 1992-07-21 2006-02-08 レジェリティ・インコーポレイテッド シャットダウンモードにおかれることが可能なクロック発生器
US5392437A (en) * 1992-11-06 1995-02-21 Intel Corporation Method and apparatus for independently stopping and restarting functional units
US5433541A (en) * 1992-12-15 1995-07-18 Nec Corporation Control device for controlling movement of a printing head carriage and control method for controlling the same
US5420808A (en) * 1993-05-13 1995-05-30 International Business Machines Corporation Circuitry and method for reducing power consumption within an electronic circuit
US5371772A (en) * 1993-09-14 1994-12-06 Intel Corporation Programmable divider exhibiting a 50/50 duty cycle
US5436860A (en) * 1994-05-26 1995-07-25 Motorola, Inc. Combined multiplier/shifter and method therefor

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE3715975A1 (de) * 1986-05-13 1987-11-19 Toshiba Kawasaki Kk Adresssteuereinheit fuer bildinformationsdatei
US5070471A (en) * 1989-02-21 1991-12-03 International Business Machines Corp. High speed multiplier which divides multiplying factor into parts and adds partial end products

Also Published As

Publication number Publication date
KR970012130A (ko) 1997-03-29
US5661673A (en) 1997-08-26

Similar Documents

Publication Publication Date Title
DE1956209C3 (de) Multipliziervorrichtung
DE3700991C2 (de) Digitaler Übertragsvorgriffsaddierer
DE69821408T2 (de) Multiplikationsverfahren und -vorrichtung
DE2803425A1 (de) Digitaleinrichtung zur ermittlung des wertes von komplexen arithmetischen ausdruecken
DE3901995C2 (de)
DE2658248C2 (de)
DE19758079A1 (de) Verfahren und Vorrichtung zur Galoisfeld-Multiplikation
DE2911096A1 (de) Multiplikations-akkumulatorschaltung
DE19635118A1 (de) Multiplizierer
DE2221693B2 (de) Schaltungsanordnung zur Ausführung einer Multiplikation zwischen zwei Binärzahlen
DE3446957C2 (de)
DE1549508C3 (de) Anordnung zur Übertragsberechnung mit kurzer Signallaufzeit
DE2816711A1 (de) Divisionseinrichtung mit uebertrags- rettungsaddierwerk und nicht ausfuehrender vorausschau
DE19635114A1 (de) Multiplizierer
WO2004059463A1 (de) Vorrichtung und verfahren zum berechnen einer multiplikation mit einer verschiebung des multiplikanden
DE19718224A1 (de) Digitaler Neuroprozessor
DE2612750A1 (de) Multipliziereinrichtung
DE10357661A1 (de) Modularer Montgomery-Multiplizierer und zugehöriges Multiplikationsverfahren
DE2732008A1 (de) Einrichtung zur reduzierung von fibonacci-p-codes auf die minimalform
DE3447634C2 (de)
DE19635113A1 (de) Multiplizierer
WO2004059515A2 (de) Modulare multiplikation mit paralleler berechnung der vorausschau-parameter
DE19635111A1 (de) Multiplizierer
DE112018006405T5 (de) Verfahren und Vorrichtung zur Berechnung der Hashfunktion
DE1081255B (de) Digitales elektronisches Rechengeraet mit Impulsumlaufspeichern

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
8130 Withdrawal