DE19635111A1 - Multiplizierer - Google Patents
MultipliziererInfo
- Publication number
- DE19635111A1 DE19635111A1 DE19635111A DE19635111A DE19635111A1 DE 19635111 A1 DE19635111 A1 DE 19635111A1 DE 19635111 A DE19635111 A DE 19635111A DE 19635111 A DE19635111 A DE 19635111A DE 19635111 A1 DE19635111 A1 DE 19635111A1
- Authority
- DE
- Germany
- Prior art keywords
- bit
- operand
- bits
- product
- 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
- 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
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Complex Calculations (AREA)
Description
Die 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 i. 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 Ope
randen keine Addition von Teilprodukttermen erfordert, sondern nur ein
Schieben des vorherigen Teilprodukts, und daß eine Folge von Einsen in
dem Multiplikator, 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 Entwicklung 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 Da
ten addiert, um die 256 höchstwertige bits des Endergebnisses zu lie
fern. Die hierzu verwendeten Schaltkreise werden nachstehend beschrie
ben.
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 Operan
den A in das Schieberegister 14 geladen werden, und einen für ein zwei
tes Eingangssignal, das den Schieberegister 14 instruiert, die geladenen
Daten 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 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
struktiert, 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 (0, 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
Addierern 20 und 22 übertragen.
Jeder der beiden PS-CS-Addierer 20 und 22 erzeugt eine 260-bit-
Partialsumme 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 Datenbusses 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. Dies bedeutet, daß die
gleiche Anzahl von Taktzyklen, wie zur Bildung und Akkumulierung der
Partialprodukte erforderlich, zur Durchführung der Endadditionsstufe be
nötigt wird. Dies führt zu einer unerwünschten Verzögerung des Multipli
kationsvorgangs und reduziert die Leistung des Multiplizierers.
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). Eine
weitere Methode zum Berechnen des 2AB-Terms besteht darin, den A*B-Pro
duktterm zu bilden und dann den Term um 1 bit im Akkumulator 28 zu ver
schieben, um den 2*(A*B)-Term zu bilden.
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 eine schneller und effekti
ver durchführbare Multiplikation ermöglicht.
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. Dies 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 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. Dies geschieht durch die Verwendung einer Folge
steuerung, 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-
Schieberegister 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.
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
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 Übertragsdatumsmodulo
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. 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 O
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/Übertragungssicherungs-
(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-
Partialsumme und einen 260-bit-Partialübertrag. Wenn jeder der 260-bit-
Breitenpartialsummenterme (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-
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 CO (Ü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 Addie
rermatrix 118 sind die Faktoren des Operanden A entsprechend den umko
dierten 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-
Gruppe 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-
Akkumulators 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.
Der primäre Vorteil der Verwendung eines Parallelübertragsad
dierers, wie des Addierers 132, mit einer Breite gleich derjenigen des
Datenbus, um die Inhalte der Register 120 und 122 zu addieren, besteht
darin, daß die Zeit, die zur Akkumulation der Partialprodukte erforder
lich ist, um etwa 50% verglichen mit Booth′schen Multiplizierern, die
die existierende Schaltkreisanordnung zur Booth′schen Akkumulation (Par
allelübertragsaddierer 124) für diesen Schritt verwendet, reduziert
wird. Dies verbessert die Leistungsfähigkeit des Multiplizierers erheb
lich.
Man könnte eine Ausführungsform eines Booth′schen Multiplizie
rers konstruieren, der einen beliebig breiten Parallelübertragsaddierer,
dessen Breite größer als diejenige des Datenbus ist, verwendet, um den
Inhalt der Register 120 und 122 in einer kürzeren Zeit als mit einem
Parallelübertragsaddierer mit Datenbusbreite zu akkumulieren. Jedoch
wird bei einer solchen Anordnung für den Parallelübertragsaddierer ein
sehr großer Schaltkreisaufwand notwendig und wird ferner den Schalt
kreisaufwand und die Komplexität des Akkumulators stark vergrößern.
Der minimale Grad an Komplexität für den Akkumulator, der ge
mäß dem dargestellten Ausführungsbeispiel 511 bit groß ist, kann dadurch
erzielt werden, daß der Akkumulator als ein Schieberegister mit einer
Breite gleich der Breite des externen Datenbus 136 ausgebildet wird. Die
Akkumulatorfunktionen können dann nur durch Register und Zwischenverbin
dungen erzielt werden. Die in dem Akkumulator enthaltenen Daten können
auf den Datenbus 136 in busbreiten Worten übertragen werden. Dies setzt
voraus, daß der Akkumulator mit busbreiten Worten geladen wird. Dies
wird vorteilhaft genutzt, indem der Parallelübertragsaddierer 132 von
der Breite des Datenbusses ist.
Die Größe eines Parallelübertragsaddierers nimmt exponentiell
mit einem datenbreiten Anstieg zu. Die Ausbreitungsverzögerung sehr
großer Addierer, kombiniert mit ihrem großen Schaltkreisbereich, resul
tiert darin, daß sie praktisch nicht in Booth′schen Multiplizierern ver
wendet werden. Eine Multipliziererausführung mit einem Parallelüber
tragsaddierer, der eine Datenbreite nicht gleich der Busbreite aufweist,
würde ferner einen Akkumulator mit einer Laderate erfordern, die un
gleich der Umspeicherrate ist. Der Effekt würde sein, daß der Akkumula
torbereich und der Stromverbrauch nahezu verdoppelt werden, während nur
ein minimaler Leistungsanstieg erzielt wird. Beim vorliegenden Multipli
zierer wird jedoch Stromverbrauch und Leistung zur Einbeziehung der Ak
kumulatorerfordernisse in die Auswahl der Parallelübertragsaddierer
breite optimiert.
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.
Dadurch, daß die oberen 256 bit des 512-bit-Endproduktterms
berechnet werden, indem ein Parallelübertragsaddierer mit Datenbusbreite
(Addierer 132 von Fig. 2) anstatt der Addiererschaltkreise, die für das
Booth′sche Umkodieren verwendet werden, eingesetzt wird, wird die Lei
stung in bezug auf die Durchführung der Multiplikationsoperation erheb
lich gesteigert. Die Inhalte der Schieberegister 120, 122 werden hierbei
kombiniert, um die oberen 256 bit des Produktterms unter Verwendung des
Parallelübertragsaddierers 132 zu erhalten. Diese Art des Addierens der
Daten reduziert die Anzahl von Taktzyklen, die für diesen Teil der Be
rechnung erforderlich ist, um einen Faktor 2 verglichen mit Multiplizie
rern, die für diesen Zweck den Booth′schen Umkodierer verwenden.
Das in Fig. 5 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. 5 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 Umkodierungs- 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-
Wort 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 Multiplikationszyklusses
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 (5)
1. Multiplizierer zum Berechnen des Produkts eines ersten und
zweiten Operanden (A, B) mit einem Datenspeicher (104, 106, 108) zum La
den und Speichern der beiden Operanden (A, B) und einem Booth′schen Um
kodierer (110) zum Bilden und Akkumulieren von Booth′schen Partialpro
dukten der beiden Operanden (A, B),
dadurch gekennzeichnet, daß
eine Einrichtung (124, 126) zum Bilden einer niederwertigsten
Hälfte des Produktes aus den beiden Operanden (A, B) und eine Einrich
tung (120, 122, 132, 134) zum Bilden der höchstwertigsten Hälfte des
Produktes aus den beiden Operanden (A, B) vorgesehen sind, wobei letzte
re getrennt von derjenigen (124) ausgebildet ist, die zur Bildung und
Akkumulierung der Booth′schen Partialprodukte verwendet wird.
2. Multiplizierer nach Anspruch 1, dadurch gekennzeichnet, daß
die Einrichtung (120, 122, 132, 134) zum Bilden der höchstwertigsten
Hälfte des Produktes einen zugeordneten Addierer (132) umfaßt.
3. Multiplizierer nach Anspruch 2, dadurch gekennzeichnet, daß
der Addierer (132) von gleicher Breite wie ein Datenbus (136) ist, der
verwendet wird, um die höchstwertigste Hälfte des Produkts zu einem Ak
kumulator (134) zu überführen.
4. Verfahren zum Berechnen des Produkts 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 Booth′sche Parti alprodukte des ersten und zweiten Operanden (A, B) gebildet und akkumu liert werden,
Bilden einer niederwertigsten Hälfte des Produkts aus erstem und zweitem Operanden (A, B) aus den Booth′schen Partialprodukten, und
Bilden einer höchstwertigsten Hälfte des Produktes des ersten und zweiten Operanden (A, B) aus den Booth′schen Partialprodukten, wobei die höchstwertigste Hälfte unter Verwendung eines Addierers vorgenommen wird, der getrennt von anderen ausgebildet ist, die verwendet werden, um die Booth′schen Partialprodukte zu akkumulieren.
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 Booth′sche Parti alprodukte des ersten und zweiten Operanden (A, B) gebildet und akkumu liert werden,
Bilden einer niederwertigsten Hälfte des Produkts aus erstem und zweitem Operanden (A, B) aus den Booth′schen Partialprodukten, und
Bilden einer höchstwertigsten Hälfte des Produktes des ersten und zweiten Operanden (A, B) aus den Booth′schen Partialprodukten, wobei die höchstwertigste Hälfte unter Verwendung eines Addierers vorgenommen wird, der getrennt von anderen ausgebildet ist, die verwendet werden, um die Booth′schen Partialprodukte zu akkumulieren.
5. Verfahren nach Anspruch 4, dadurch gekennzeichnet, daß beim
Bilden der höchstwertigsten Hälfte des Produkts Partialsummen- und Über
tragungssicherungsdaten aus der Akkumulation der Booth′schen Partialpro
dukte addiert werden, wobei ein zugeordneter Addierer (132) verwendet
wird, der eine Datenbreite gleich der Breite eines Datenbus besitzt, der
zum Übertragen der höchstwertigsten Hälfte des Produkts zu einer Steue
rung (70) verwendet wird.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US08/522,430 US5684731A (en) | 1995-08-31 | 1995-08-31 | Booth multiplier using data path width adder for efficient carry save addition |
Publications (1)
Publication Number | Publication Date |
---|---|
DE19635111A1 true DE19635111A1 (de) | 1997-04-17 |
Family
ID=24080816
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE19635111A Withdrawn DE19635111A1 (de) | 1995-08-31 | 1996-08-30 | Multiplizierer |
Country Status (3)
Country | Link |
---|---|
US (1) | US5684731A (de) |
KR (1) | KR970012131A (de) |
DE (1) | DE19635111A1 (de) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6366940B1 (en) | 1998-03-02 | 2002-04-02 | Matsushita Electric Industrial Co., Ltd. | High-speed modular multiplication apparatus achieved in small circuit |
US6434587B1 (en) * | 1999-06-14 | 2002-08-13 | Intel Corporation | Fast 16-B early termination implementation for 32-B multiply-accumulate unit |
US7266580B2 (en) * | 2003-05-12 | 2007-09-04 | International Business Machines Corporation | Modular binary multiplier for signed and unsigned operands of variable widths |
US7136893B2 (en) * | 2003-07-10 | 2006-11-14 | International Business Machines Corporation | Decimal multiplication using digit recoding |
TWI785954B (zh) * | 2021-12-30 | 2022-12-01 | 新唐科技股份有限公司 | 節省進位加法器、安全加法器以及執行安全節省進位加法的方法 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA1232072A (en) * | 1983-12-26 | 1988-01-26 | Hideo Miyanaga | Multiplication circuit using a multiplier and a carry propagating adder |
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/522,430 patent/US5684731A/en not_active Expired - Fee Related
-
1996
- 1996-08-22 KR KR1019960034801A patent/KR970012131A/ko not_active IP Right Cessation
- 1996-08-30 DE DE19635111A patent/DE19635111A1/de not_active Withdrawn
Also Published As
Publication number | Publication date |
---|---|
KR970012131A (ko) | 1997-03-29 |
US5684731A (en) | 1997-11-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE69703085T2 (de) | Koprozessor mit zwei parallel arbeitenden Multiplizierschaltungen | |
DE69130653T2 (de) | "Pipelined" Verarbeitungseinheit für Fliesskommazahlen | |
DE1549476C3 (de) | Anordnung zur Ausführung von Divisionen | |
DE69435034T2 (de) | Verfahren ind vorrichtung zur durchfuehrung einer schnellen hadamard transform | |
DE19758079A1 (de) | Verfahren und Vorrichtung zur Galoisfeld-Multiplikation | |
DE2911096C2 (de) | ||
DE2658248C2 (de) | ||
DE2913327C2 (de) | Matrix-Multiplizierer | |
DE2803425A1 (de) | Digitaleinrichtung zur ermittlung des wertes von komplexen arithmetischen ausdruecken | |
DE3485771T2 (de) | Leistungsfaehiger paralleler vektorprozessor. | |
DE2902496A1 (de) | Digitale datenmultiplikationsanordnung | |
DE2221693C3 (de) | Schaltungsanordnung zur Ausführung einer Multiplikation zwischen zwei Binärzahlen | |
DE2816711A1 (de) | Divisionseinrichtung mit uebertrags- rettungsaddierwerk und nicht ausfuehrender vorausschau | |
DE3446957C2 (de) | ||
DE1549508C3 (de) | Anordnung zur Übertragsberechnung mit kurzer Signallaufzeit | |
DE19635114A1 (de) | Multiplizierer | |
DE3852576T2 (de) | Einrichtung und Verfahren für eine erweiterte Arithmetik-Logik-Einheit zur Beschleunigung der ausgewählten Operationen. | |
DE19635118A1 (de) | Multiplizierer | |
DE2729912A1 (de) | Digitale signalverarbeitungsanordnung | |
DE19718224A1 (de) | Digitaler Neuroprozessor | |
DE3447634C2 (de) | ||
DE19635113A1 (de) | Multiplizierer | |
DE2732008A1 (de) | Einrichtung zur reduzierung von fibonacci-p-codes auf die minimalform | |
DE19635111A1 (de) | Multiplizierer | |
DE112018006405T5 (de) | Verfahren und Vorrichtung zur Berechnung der Hashfunktion |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
OP8 | Request for examination as to paragraph 44 patent law | ||
8130 | Withdrawal |