DE19635118A1 - Multiplizierer - Google Patents
MultipliziererInfo
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/52—Multiplying; Dividing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/52—Multiplying; Dividing
- G06F7/523—Multiplying only
- G06F7/533—Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even
- G06F7/5334—Reduction 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/5336—Reduction 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/5338—Reduction 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.
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.
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)
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)
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)
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 |
-
1995
- 1995-08-31 US US08/521,801 patent/US5661673A/en not_active Expired - Fee Related
-
1996
- 1996-08-22 KR KR1019960034800A patent/KR970012130A/ko not_active IP Right Cessation
- 1996-08-30 DE DE19635118A patent/DE19635118A1/de not_active Withdrawn
Patent Citations (2)
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 |