DE19635114A1 - Multiplizierer - Google Patents
MultipliziererInfo
- Publication number
- DE19635114A1 DE19635114A1 DE19635114A DE19635114A DE19635114A1 DE 19635114 A1 DE19635114 A1 DE 19635114A1 DE 19635114 A DE19635114 A DE 19635114A DE 19635114 A DE19635114 A DE 19635114A DE 19635114 A1 DE19635114 A1 DE 19635114A1
- Authority
- DE
- Germany
- Prior art keywords
- operand
- bit
- bits
- operands
- data
- 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
-
- 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/544—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 for evaluating functions by calculation
- G06F7/552—Powers or roots, e.g. Pythagorean sums
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2207/00—Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F2207/552—Indexing scheme relating to groups G06F7/552 - G06F7/5525
- G06F2207/5523—Calculates a power, e.g. the square, of a number or a function, e.g. polynomials
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Pure & Applied Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Optimization (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Complex Calculations (AREA)
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
die 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 multiplication 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 2qq (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, O, 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 gesicherte Daten
addiert, um die 256 höchstwertige 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 den 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 am das Schieberegister 14 geliefert wird, das bewirkt, das 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 externe 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 Multiplikanten, 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/Übertragsicherungs(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
Addieren 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 2m/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-Operanden 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.
Aufgabe der Erfindung ist es, einen Multiplizierer nach dem
Oberbegriff des Anspruchs 1 zu schaffen, der es ermöglicht, Quadrierope
rationen in einfacher Weise und mit geringem Schaltkreisaufwand durchzu
führen.
Diese Aufgabe wird entsprechend dem kennzeichnenden Teil des
Anspruchs 1 gelöst.
Hierbei wird die Bildung eines Terms 2*A*B eines Produktes
(A+B)² von zwei Operanden A, B genutzt, wobei insbesondere 2*A durch
Schieben des Wertes des Operanden A um ein bit erzeugt wird.
Zweckmäßigerweise wird hierbei der erste Operand A vollständig
in ein Schieberegister geladen, während beim nachfolgenden Laden des
zweiten Operanden B nach Laden einer Mindestanzahl von bits hiervon be
reits mit der Umkodieroperation begonnen wird, so daß während dieses La
dens die vorher geladenen Teile des Operanden B umkodiert und die Parti
alprodukte, basierend auf den so umkodierten Teilen, erzeugt und sum
miert werden.
Die umkodierten Teile des Operanden B werden zweckmäßig ver
wendet, um den Faktor des Operanden A zur Verwendung bei der Bildung von
Partialprodukttermen zu wählen. Die Partialproduktterme werden unter
Verwendung einer Übertragssicherungsaddition addiert, wobei das nieder
wertigste bit verwendet wird, um die niederwertigsten bits des Endpro
dukts zu bilden. Die höchstwertigsten bits des Endprodukts werden dann
durch Addieren der Partialsumme und der aufgehobenen Übertragsdaten aus
den Partialproduktsummationen gebildet.
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-Boot-Multiplizierers.
Fig. 2 zeigt ein Blockdiagramm einer Multipliziereinheit des
Booth-Multiplizierers von Fig. 1.
Fig. 3 zeigt eine schematische Schaltkreisanordnung eines kas
kadierten Umkodierers der Multipliziereinheit von Fig. 2.
Fig. 4 zeigt ein Diagramm der Verbindungen zwischen Addierer
matrizen und den Partialsummen/Übertragssicherungsregistern der Multi
pliziereinheit.
Fig. 5 zeigt detaillierter die Multipliziereinheit des
Booth-Multiplizierers.
Fig. 6 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. Die ist durch die Verwendung einer Folgesteuerung
begleitet, die Systemtaktzyklen zählt und Funktionsfreigabesignale zu
geeigneten Zeiten in Übereinstimmung mit der Anzahl der für jede Stufe
der von der Multipliziereinheit 100 durchgeführten Datenverarbeitung er
forderlichen Zyklusanzahl abgibt. Die Funktionsfreigabesignale werden
von einem Satz von getakteten Gattersteuerkreisen 300 geliefert, die
Funktionstaktsignale abgeben, die verwendet werden, um ein Register oder
eine 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 Multipliziereinheit 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 Mulipliziererauslegung,
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.
Die Multipliziereinheit verwendet gemäß Fig. 2 Steuersignale,
um zu bestimmen, wenn ein Taktsignal aktiv sein und ein Schieberegister
takten sollte. Die Taktsteuersignale werden erzeugt, wie sie benötigt
werden, und zwar in Abhängigkeit von dem Status der durch die Multipli
ziereinheit zu verarbeitenden Daten. Durch Verwendung von Mehrfachtak
ten, deren Signale gegattert und wie benötigt verwendet werden, wird der
Stromverbrauch pro Multipliziereinheit 100, verglichen mit einer syn
chron insgesamt getakteten Schaltkreisanordnung, verringert.
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
tragstermmodulo 4. Die bit-Feldauswertung wird entsprechend der
Booth′schen Methode umkodiert, um zu bestimmen, ob ein Faktor entweder
O, 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
Umkodierermodulo 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 da
her fünf verschiedene bits des Operanden B während jedes Zyklus. Jeder
der getrennten Umkodierer erzeugt zwei niederwertigste bits der unkorri
gierten Produktdaten und ein bit eines Übertragsdatumsmodulo 4 pro Takt
zyklus, so daß die beiden kaskadierten Umkodierer zusammen vier nieder
wertigste bits der Produktdaten und zwei Übertrags-bits pro Taktzyklus
erzeugen.
Einer der beiden kaskadierten Umkodierer 200, die in dem Umko
diermodul 110 vorgesehen sind, ist in Fig. 3 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. 3 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. 3 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. 3
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 Übertragungsbit 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-Addierermatrizen 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. 4 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. 4 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. 4 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. 4 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 Operanden in
die Schieberegister 104, 106 und 108 zu laden. Die Taktsignale 121, 123
und 125 werden verwendet, um die Booth′schen Partialprodukte zu berech
nen und die Segmente der Produktterme in die 256-bit-langen oberen und
unteren Abschnitte des Endprodukts zusammenzusetzen, die in den Schiebe
registern 134 und 130 gespeichert werden. Die Taktsignale 135 und 131
werden verwendet, um das Zusammensetzen des Endproduktterms aus den In
halten der Schieberegister 134 und 130 zu steuern.
Viele Anwendungen, beispielsweise kryptographische Anwendun
gen, erfordern die Berechnung des Quadrats der Summe von zwei Operanden.
Diese Operation kann auch als Teil einer Exponentiationsfunktion verwen
det werden, die in Operationen unterteilt werden kann, die Quadrierungs
operationen umfassen. Um die Geschwindigkeit zu erhöhen, mit der Qua
drierungsoperationen realisiert werden können, wird ein Steuersignal 140
(s. Fig. 2) als Eingang zum Multiplexer 114 verwendet, um zu bewirken,
daß der Multiplizierer den Zwischenterm 2*A*B berechnet, der in der
Quadrieroperation verwendet wird.
Das Steuersignal 140 wird durch einen externen Prozessor ge
liefert, der die Multiplikations- und Quadrieroperationsbefehlseingänge
durch einen Benutzer interpretiert und die Operation des Multiplizierers
dementsprechend steuert. Der Term 2*A*B wird mittels Durchführung einer
1-bit-Verschiebung des Terms A (zum Bilden von 2*A) unter Verwendung der
im Wählmultiplexer 114 enthaltenen Schaltkreisanordnung berechnet. Die
ser Faktor von 2*A wird dann mit dem Operanden B mittels des Booth′schen
Umkodier- und Partialproduktakkumulationsschritt multipliziert. Die zu
sätzliche, in dem Multiplexer 114 erforderliche Schaltung, um die Ver
schiebung des Operanden A um 1 bit durchzuführen, ist kleiner und weni
ger aufwendig als eine Modifizierung des Akkumulators 134, um eine Ver
schiebung des Gesamtprodukts nach Vervollständigung der Multiplikations
operation durchzuführen. Insofern wird eine kompaktere und weniger auf
wendige Einrichtung zur Durchführung eines Quadriervorgangs geschaffen.
Das in Fig. 5 dargestellte detailliertere Blockdiagramm der
Multipliziereinheit 100 des 256-bit-um-256-bit-Booth-Multiplizierers von
Fig. 2 umfaßt Schieberegister 160, 162 und 164, die dazu verwendet wer
den, die Überträge von Parallelübertragsaddierern 124, 132 bzw. 168 zu
speichern und entsprechend zu wichten. Fig. 5 zeigt Multiplexer 166, die
verwendet werden, um die komplexeren Lade- und Umspeicheroperationen für
die Akkumulatoren 130 und 134 zu realisieren. Der Parallelübertragsad
dierer 168 ist ein 32-bit-Addierer, der dazu verwendet wird, das Produkt
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
ses 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 (4)
1. Multiplizierer mit einem Datenspeicher (104, 106, 108) zum
Laden und Speichern von zwei Operanden (A, B), einem Booth′schen Umko
dierer (110) zum Umkodieren des zweiten Operanden (B), um die Faktoren
des ersten Operanden (A), die bei der Bildung von Booth′schen Partial
produkten des ersten und zweiten Operanden (A, B) verwendet werden, zu
bestimmen, und einer Akkumulatoreinrichtung zum Akkumulieren der
Booth′schen Partialprodukte,
dadurch gekennzeichnet, daß zum Berechnen des
Quadrats der Summe eines ersten Operanden (A) und eines zweiten Operan
den (B)
eine Wähleinrichtung (114) zum Wählen des Faktors des ersten Operanden (A), der von dem Umkodierer (110) zur Verwendung bei der Bil dung des Booth′schen Partialprodukts bestimmt wurde, wobei die Wählein richtung (114) eine Einrichtung zum Bilden eines Terms umfaßt, der einen Wert gleich dem Zweifachen des Operanden (B) in Ansprache auf ein Qua drieroperationssteuersignal (140) besitzt, und
eine Einrichtung zum Bilden des Quadrats der Summe des ersten und zweiten Operanden (A, B) aus akkumulierten Booth′schen Partialpro dukten vorgesehen sind.
eine Wähleinrichtung (114) zum Wählen des Faktors des ersten Operanden (A), der von dem Umkodierer (110) zur Verwendung bei der Bil dung des Booth′schen Partialprodukts bestimmt wurde, wobei die Wählein richtung (114) eine Einrichtung zum Bilden eines Terms umfaßt, der einen Wert gleich dem Zweifachen des Operanden (B) in Ansprache auf ein Qua drieroperationssteuersignal (140) besitzt, und
eine Einrichtung zum Bilden des Quadrats der Summe des ersten und zweiten Operanden (A, B) aus akkumulierten Booth′schen Partialpro dukten vorgesehen sind.
2. Multiplizierer nach Anspruch 1, dadurch gekennzeichnet, daß
die Wähleinrichtung (114) Mittel zum Schieben des Wertes des ersten Ope
randen (A) um ein bit zum Bilden des Wertes (2*A) des Zweifachen des er
sten Operanden (A) umfaßt.
3. Verfahren zum Berechnen des Quadrats der Summe eines ersten
und eines zweiten Operanden (A, B), umfassend das
Laden des ersten Operanden (A) in einen ersten Speicher (104),
Laden des zweiten Operanden (B) in einen zweiten Speicher (106, 108),
Umkodieren des zweiten Operanden (B), wobei die Faktoren des ersten Operanden (A) bestimmt werden, um bei der Bildung von Booth′schen Partialprodukten des ersten und zweiten Operanden (A, B) verwendet zu werden,
Bilden des Faktor 2*A zur Verwendung bei der Berechnung des Quadrats der Summe aus erstem und zweitem Operanden (A, B),
Bilden der Booth′schen Partialprodukte des ersten und zweiten Operanden (A, B) einschließlich Terme der Form 2*A*B zur Verwendung bei der Berechnung des Quadrats der Summe aus erstem und zweitem Operanden (A, B),
Akkumulieren der Booth′schen Partialprodukte und
Bilden des Quadrats der Summe aus erstem und zweitem Operanden (A, B) aus den akkumulierten Booth′schen Partialprodukten.
Laden des ersten Operanden (A) in einen ersten Speicher (104),
Laden des zweiten Operanden (B) in einen zweiten Speicher (106, 108),
Umkodieren des zweiten Operanden (B), wobei die Faktoren des ersten Operanden (A) bestimmt werden, um bei der Bildung von Booth′schen Partialprodukten des ersten und zweiten Operanden (A, B) verwendet zu werden,
Bilden des Faktor 2*A zur Verwendung bei der Berechnung des Quadrats der Summe aus erstem und zweitem Operanden (A, B),
Bilden der Booth′schen Partialprodukte des ersten und zweiten Operanden (A, B) einschließlich Terme der Form 2*A*B zur Verwendung bei der Berechnung des Quadrats der Summe aus erstem und zweitem Operanden (A, B),
Akkumulieren der Booth′schen Partialprodukte und
Bilden des Quadrats der Summe aus erstem und zweitem Operanden (A, B) aus den akkumulierten Booth′schen Partialprodukten.
4. Verfahren nach Anspruch 3, dadurch gekennzeichnet, daß beim
Bilden des Faktors 2*A der Wert des ersten Operanden (A) um ein bit ver
schoben wird, um den Wert des Zweifachen des ersten Operanden (A) zu
bilden.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US08/521,790 US5957999A (en) | 1995-08-31 | 1995-08-31 | Booth multiplier with squaring operation accelerator |
Publications (1)
Publication Number | Publication Date |
---|---|
DE19635114A1 true DE19635114A1 (de) | 1997-04-17 |
Family
ID=24078169
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE19635114A Withdrawn DE19635114A1 (de) | 1995-08-31 | 1996-08-30 | Multiplizierer |
Country Status (3)
Country | Link |
---|---|
US (1) | US5957999A (de) |
KR (1) | KR970012128A (de) |
DE (1) | DE19635114A1 (de) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6038318A (en) * | 1998-06-03 | 2000-03-14 | Cisco Technology, Inc. | Optimized machine computation of exponential functions and modulo functions |
US6260056B1 (en) * | 1998-08-21 | 2001-07-10 | Ati International Srl | Circuit and method for fast squaring by breaking the square into a plurality of terms |
US6298368B1 (en) * | 1999-04-23 | 2001-10-02 | Agilent Technologies, Inc. | Method and apparatus for efficient calculation of an approximate square of a fixed-precision number |
CA2294554A1 (en) * | 1999-12-30 | 2001-06-30 | Mosaid Technologies Incorporated | Method and circuit for multiplication using booth encoding and iterative addition techniques |
US6993071B2 (en) * | 2001-03-20 | 2006-01-31 | Koninklijke Philips Electronics, N.V. | Low-cost high-speed multiplier/accumulator unit for decision feedback equalizers |
US7003544B1 (en) * | 2001-10-16 | 2006-02-21 | Altera Corporation | Method and apparatus for generating a squared value for a signed binary number |
DE10201443B4 (de) * | 2002-01-16 | 2004-08-12 | Infineon Technologies Ag | Carry-Save-Multiplizierer für verschlüsselte Daten |
WO2008018197A1 (fr) * | 2006-08-08 | 2008-02-14 | Panasonic Corporation | Filtre numérique, son dispositif de synthèse, programme de synthèse, et support d'enregistrement de programme de synthèse |
US8321489B2 (en) | 2006-09-15 | 2012-11-27 | National Semiconductor Corporation | Software reconfigurable digital phase lock loop architecture |
RU2467377C1 (ru) * | 2011-04-19 | 2012-11-20 | ОАО "Концерн "Моринформсистема-Агат" | Способ и устройство умножения чисел в коде "1 из 4" |
RU2475812C1 (ru) * | 2011-12-28 | 2013-02-20 | Федеральное государственное автономное образовательное учреждение высшего профессионального образования "Национальный исследовательский ядерный университет "МИФИ" (НИЯУ МИФИ) | Устройство для умножения чисел в коде "1 из 4" |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4313174A (en) * | 1980-03-17 | 1982-01-26 | Rockwell International Corporation | ROM-Based parallel digital arithmetic device |
US4769780A (en) * | 1986-02-10 | 1988-09-06 | International Business Machines Corporation | High speed multiplier |
US5253195A (en) * | 1991-09-26 | 1993-10-12 | International Business Machines Corporation | High speed multiplier |
-
1995
- 1995-08-31 US US08/521,790 patent/US5957999A/en not_active Expired - Lifetime
-
1996
- 1996-08-22 KR KR1019960034798A patent/KR970012128A/ko not_active IP Right Cessation
- 1996-08-30 DE DE19635114A patent/DE19635114A1/de not_active Withdrawn
Also Published As
Publication number | Publication date |
---|---|
US5957999A (en) | 1999-09-28 |
KR970012128A (ko) | 1997-03-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE69703085T2 (de) | Koprozessor mit zwei parallel arbeitenden Multiplizierschaltungen | |
DE1956209C3 (de) | Multipliziervorrichtung | |
DE19758079A1 (de) | Verfahren und Vorrichtung zur Galoisfeld-Multiplikation | |
DE2911096C2 (de) | ||
DE2803425A1 (de) | Digitaleinrichtung zur ermittlung des wertes von komplexen arithmetischen ausdruecken | |
CH644461A5 (de) | Digitale multipliziereinrichtung. | |
DE3888230T2 (de) | Einrichtung und Verfahren zur Durchführung einer Schiebeoperation mit einer Multipliziererschaltung. | |
DE3485771T2 (de) | Leistungsfaehiger paralleler vektorprozessor. | |
DE19635114A1 (de) | Multiplizierer | |
DE1549508C3 (de) | Anordnung zur Übertragsberechnung mit kurzer Signallaufzeit | |
DE2816711A1 (de) | Divisionseinrichtung mit uebertrags- rettungsaddierwerk und nicht ausfuehrender vorausschau | |
WO2004059463A1 (de) | Vorrichtung und verfahren zum berechnen einer multiplikation mit einer verschiebung des multiplikanden | |
DE19635118A1 (de) | Multiplizierer | |
DE2221693B2 (de) | Schaltungsanordnung zur Ausführung einer Multiplikation zwischen zwei Binärzahlen | |
DE3852576T2 (de) | Einrichtung und Verfahren für eine erweiterte Arithmetik-Logik-Einheit zur Beschleunigung der ausgewählten Operationen. | |
DE2729912A1 (de) | Digitale signalverarbeitungsanordnung | |
DE2612750A1 (de) | Multipliziereinrichtung | |
DE19718224A1 (de) | Digitaler Neuroprozessor | |
DE10357661A1 (de) | Modularer Montgomery-Multiplizierer und zugehöriges Multiplikationsverfahren | |
DE3447634C2 (de) | ||
DE19635113A1 (de) | Multiplizierer | |
DE19635111A1 (de) | Multiplizierer | |
DE3424078A1 (de) | Dezimalmultiplikations-einrichtung | |
DE112018006405T5 (de) | Verfahren und Vorrichtung zur Berechnung der Hashfunktion | |
DE69900127T2 (de) | Verbessertes Verfahren zur Ausführung ganzzahliger Division |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
OP8 | Request for examination as to paragraph 44 patent law | ||
8130 | Withdrawal |