-
Die Erfindung bezieht sich auf eine Vorrichtung zur Ausführung
der Gleitkommaberechnung A x B + C, enthaltend ein Mittel zum
Multiplizieren von A x B, um Teilergebnisse zu erzeugen und ein
Ausrichtungsmittel zum Ausrichten von C nach den
Teilergebnissen, wobei die Multiplikation parallel mit der Ausrichtung
ausgeführt wird, darüber hinaus enthaltend ein Mittel zum
Inkrementieren des Operanden C, wenn der Operand C höhere Wertigkeit als
eine Summe der Teilergebnisse aufweist, ein Mittel zum Addieren
der Teilergebnisse und des ausgerichteten C und ein Mittel zum
Normieren des Ergebnisses.
-
Die Verarbeitung von Gleitkommaberechnungen ist für den Betrieb
moderner Computer wichtig. Die Erfahrung zeigt, daß
Universalprozessoren zur Ausführung von Gleitkommaberechnungen nicht gut
geeignet sind, und als eine Folge davon sind spezialisierte
Gleitkommaeinrichtungen (FPU) oder -prozessoren entwickelt
werden, um numerisch aufwendige Berechnungen zu bearbeiten.
-
Potentielle Anwendungen von Gleitkommahardware reichen von
Tischmikrocomputern über Signalverarbeitungs- und
Parallelverarbeitungssystemen bis zu den größten Großrechnern.
-
Eine Gleitkommaeinheit kann erforderlich sein, um verschiedene
mathematische Berechnungen mit Gleitkommazahlen wie Addition,
Subtraktion, Multiplikation und Division auszuführen. Manche
Gleitkommahardware sieht auch eingebaute Merkmale vor, um andere
mathematische Berechnungen wie eine Berechnung von
transzendenten Funktionen zu unterstützen.
-
Da es stets nützlich ist, die Geschwindigkeit, mit der ein
Gleitkommaprozessor seine Funktionen ausführt, zu maximieren,
besteht eine Maßnahme, die verwendet wird, um Leistungssteige-
rungen zu erhalten, darin, spezialisierte Hardware vorzusehen,
um spezielle Gleitkommafunktionen zu realisieren. Beispielsweise
treten gewisse Kombinationen von arithmetischen Funktionen in
Berechnungen regelmäßig auf, wie die Berechnung von Ausdrücken
der Form A x B + C. Verschiedene wichtige mathematische Konzepte
enthalten Berechnungen dieser Art, wie beispielsweise
Skalarprodukte der Form
-
und Berechnungen nach der Hornerschen Regel, bei denen gilt:
-
Ax³ + Bx² + Cx + D = D + x (C + x(B + Ax)).
-
Viele Gleitkommahardwareeinheiten werden realisiert, indem
höchstintegrierte Schaltungen (VLSI) verwendet werden, bei denen
der Entwickler von VLSI-FPUs oftmals den durch spezielle
Funktionen eingenommenen Flächenverbrauch und auch die Optimierung
von FPU-Leistung durch Maximierung ihrer Geschwindigkeit
berücksichtigen muß. Ein herkömmlicher FPU-Entwurf setzte getrennte
Multiplizier- und Addierhardwareeinheiten und ein Verfahren zum
Verbinden der zwei Einheiten ein, wenn die häufige Multiplizier-
Addierberechnung A x B + C erforderlich war. Schnelle
Multiplikation erfordert einen schnellen Addierer in der Endstufe, wie
in "A suggestion for a fast multiplier" von C. S. Wallace, IEEE
Transactions on Computers, EC-13, Februar, 1964, S. 14 bis 17
gezeigt.
-
Ein Hochleistungsentwurf erfordert Hardware, um Berechnungen der
Art A x B + C auszuführen:
-
- Zwei schnelle Addierer (einer für die
Multiplikationsberechnung und einer für Addition)
-
- Zwei Rundungseinrichtungen (eine für die
Multiplikationsberechnung und eine für Addition)
-
- Vier Eingangsanschlüsse (zwei für die
Multiplikationsberechnung und zwei für Addition)
-
- Zwei Ausgangsanschlüsse (einer für die
Multiplikationsberechnung und einer für Addition)
-
- Zwei Befehle (einer für die Multiplikationsberechnung
und einer für Addition)
-
Durch die Veröffentlichung IBM Technical Disclosure Bulletin,
Band 30, Nr. 3, August 1987, Seiten 982 bis 987,
"Multiply-addition - an ultra high performance data flow" ist eine verbesserte
Arithmetikeinrichtung zur Ausführung von Gleitkommaberechnungen
der Art A x B + C bekannt, die einen Multiplizierer enthält, um
Teilergebnisse von A x B zu erzeugen, und Ausrichtungsmittel, um
C nach den Teilergebnissen auszurichten, wobei die
Multiplikation parallel mit der Ausrichtung ausgeführt wird. Diese
Einrichtung enthält darüber hinaus einen Inkrementierer zum
Inkrementieren des Operanden C, wenn er eine höhere Wertigkeit als eine
Summe der Teilergebnisse für den Multiplizierer aufweist. Für
die Addition der Teilergebnisse vom Multiplizierer und des
Operanden C umfaßt die Einrichtung eine Kette von 7/3-Zählerstufen,
deren Ausgang mit Registern verbunden ist, die als
Eingangsregister einer Arithmetik- und Logikeinrichtung dienen. Diese ALU
erzeugt die Endsumme, die einem Detektor für führende Nullen,
dem ein Normierer folgt, zugeführt wird.
-
Die Erfindung wird die Hardware zur Ausführung von
Gleitkommaberechnungen der Art A x B + C verbessern und insbesondere eine
minimale Laufzeit von irgendeinem Eingang zum Ergebnis einer
solchen Berechnung aufweisen.
-
Die Maßnahmen gemäß der Erfindung sind in Anspruch 1
gekennzeichnet. Die anderen Ansprüche beziehen sich auf vorteilhafte
Ausführungen der Erfindung.
-
Verschiedene Realisierungsbeispiele der Erfindung werden
nachfolgend
unter Bezugnahme auf die Zeichnungen beschrieben werden.
-
Fig. 1 ist ein Blockdiagramm der vorliegenden Erfindung;
-
Fig. 2 zeigt einen in der vorliegenden Erfindung verwendeten
Komplementierer;
-
Fig. 3, 4 und 5 zeigen einen Matrixmultiplizierer, der zur
Erläuterung der vorliegenden Erfindung nützlich ist;
-
Fig. 6 zeigt einen Wallace-Baum, der in der vorliegenden
Erfindung als Teilmultiplizierer verwendet wird.
-
Fig. 7A zeigt einen Übertrag-Summen-Addierer, der im
Teilmultiplizierer der vorliegenden Erfindung verwendet und
als ein (3,2)-Addierer beschrieben ist.
-
Fig. 7B zeigt einen (7,3)-Addierer.
-
Fig. 8 zeigt (7,3)-Addierer, die in einem Teilmultiplizierer
in der vorliegenden Erfindung verwendet werden.
-
Die vorliegende Erfindung gibt eine Vorrichtung an, die schnelle
und genaue Gleitkommaarithmetikberechnungen der Art A x B + C
ausführt.
-
Gleitkommazahlen weisen eine Form auf, in der eine
vorzeichenbehaftete Mantisse vorliegt, die mit einer Basis, die mit einem
ganzzahligen Exponenten potenziert ist, multipliziert wird. In
dezimaler Schreibweise würde folglich die Zahl 101,32 als
0,10132 x 10³ geschrieben werden, wobei 3 der Exponent ist und
0,10132 die Mantisse ist. In diesem Beispiel ist 10 die Basis
der Zahl. Gleitkommaschreibweise kann auch bei Zahlen zu anderen
Basen verwendet werden, und im Fall von digitalen
Hochgeschwindigkeitscomputern sind Gleitkommazahlen Dualzahlen. Folglich
könnte eine Dualzahl der Form 101,011 als eine Gleitkommazahl
der Form 0,101011 x 2³ geschrieben werden, wobei die Mantisse
0,101011 ist, der Exponent 3 ist, die Basis 2 ist und das Komma
als ein Dualkomma anstelle eines Dezimalkommas bezeichnet wird.
Natürlich würde in einem digitalen Computer der Exponent 3 die
Dualzahl 11 werden.
-
Es ist zu erkennen, daß bei der Ausführung von Additionen
binärer Gleitkommazahlen die Zahlen in bezug auf das Dualkomma
ausgerichtet sein müssen, um die Addition korrekt auszuführen. Wenn
die Additionen ausgeführt werden, sollten die zu addierenden
Zahlen denselben Exponenten aufweisen. Es kann dann eine direkte
Addition der Mantissen durchgeführt werden.
-
In einer Multiplikation können die Mantissen multipliziert
werden, indem irgendeine von mehreren bekannten Techniken verwendet
wird, und die Exponenten werden addiert. Es wird klar sein, daß
dann, wenn A und B mit M bzw. N Bit breiten Mantissen
miteinander multipliziert werden, die maximale Länge des Ergebnisses M +
N ist. Der Exponent wird eine Größe aufweisen, die sich aus der
Addition der zwei Exponenten ergibt. Es wird dann klar sein, daß
die zum Ergebnis A x B zu addierende Zahl C wahrscheinlich nicht
denselben Exponenten wie das Ergebnis aufweisen wird und deshalb
verschoben werden muß, so daß sie korrekt nach dem Ergebnis von
A x B ausgerichtet ist.
-
Die vorliegende Erfindung führt Berechnungen der Art A x B + C
aus. Es ist zu erkennen, daß solch eine Einheit als die Basis
für eine arithmetische Logikeinheit (ALU) verwendet werden kann,
da einfache Multiplikationen A x B ausgeführt werden können,
indem C = 0 gesetzt wird, und einfache Additionen ausgeführt
werden können, z.B. A + C, indem B (oder A) = 1 gesetzt wird.
-
Man betrachte die Berechnung von A x B + C, wobei A, B und C
Gleitkommazahlen mit m-Bit-Mantissen und e-Bit-Exponenten sind.
In der vorliegenden Erfindung wird der Operand C am
Gleitkommaprodukt von A und B ausgerichtet, indem der Operand C um eine
Anzahl von Bits gleich Exponent von A plus Exponent von B minus
Exponent von C verschoben wird. In der vorliegenden Erfindung
kann diese Tätigkeit parallel mit der in der Multiplikation
erforderlichen Biterzeugung und -zusammenfassung stattfinden. Ein
Teilmultiplizierer wird verwendet, um zwei Summanden zu
erhalten, deren Summe gleich dem Ergebnis A x B ist. Diese Summanden
oder Teilprodukte werden parallel mit der Verschiebung des
Operanden C bestimmt.
-
Es ist wohlbekannt, daß eine Multiplikation wenigsten log(m)
Schritte benötigt, wobei m die Anzahl von Bits im Eingabewort
ist, um die Teilprodukte zu zwei Zahlen, die addiert werden
müssen, um das Endergebnis zu erhalten, zu verringern. Durch
Ausrichtung des Terms C nach dem Produkt der Berechnung von A x B
während der Multiplikationszeit verursacht die
Additionsberechnung geringe zusätzliche Laufzeit über die
Multiplikationsberechnung hinaus. Nach der Ausrichtung und Einbeziehung des Terms
C in die Reduktion muß eine abschließende Addition der 2 Terme
stattfinden. Wenn der Exponent C um mehr als 2m Bits kleiner ist
als die Summe der Exponenten A und B, ist das Ergebnis C
geringwertiger als jegliche Bits in der Multiplikation von A und B.
Die Bits von C werden deshalb aus dem Bereich von A x B
"hinausgeschoben" und im Produkt nicht verwendet. Wenn in einer
Berechnung von A x B + C der Exponent C um einen geringen (kleiner als
m) Wert größer als die Summe der Exponenten A und B ist, ist es
möglich, daß sich ein Überlauf aus der zur Vervollständigung der
Multiplikation erforderlichen Addition ergeben kann. Dieser
Überlauf muß zum Überlaufbereich des Verschiebers für C in einem
Inkrementierer addiert werden, der als ein Addierer arbeitet,
der seine Eingabe inkrementiert, wenn eine Übertragseingabe
vorliegt.
-
Wenn der Exponent C um mehr als m größer als die Summe der
Exponenten A und B ist, ist das Ergebnis der
Multiplizier-Addier-Berechnung C. Wenn der Exponent C um mehr als 2m geringer als die
Summe der Exponenten A und B ist, ist A x B das Ergebnis der
Multiplizier-Addier-Berechnung. Irgendeine Exponentendifferenz
außerhalb des Intervalls 3m hat das Ergebnis von C (wenn der
Exponent von C größer ist) oder A x B. Das endgültige Ergebnis
muß folglich erzeugt werden, indem ein Addierer von 2m Bits (für
die Multiplikation erforderlich) und ein Inkrementierer von m
Bits (für den Überlaufbereich erforderlich) verwendet werden.
Dann muß das Ergebnis für 3m normiert und gerundet werden, um
führende Nullen zu entfernen und die höchste Genauigkeit
anzugeben.
-
Man nehme nun auf Fig. 1 Bezug, die ein Blockdiagramm einer
bevorzugten Ausführung der Erfindung zeigt. Eine Exponenteneinheit
10 empfängt die drei Exponenten EXP(A), EXP(B) und EXP(C). Die
hauptsächliche Funktion der Exponenteneinheit 10 besteht darin,
den Wert von EXP(A) + EXP(B) - EXP(C) zu ermitteln, was durch
einen Addierer ausgeführt wird. Die Exponenteneinheit 10 weist
zusätzliche Funktionen auf, die z. B. mit der Bearbeitung von
vorzeichenbehafteten Zahlen verknüpft sind. Es ist beabsichtigt,
daß die vorliegende Erfindung vorzeichenbehaftete Zahlen mit
einem Vorzeichenbit verwendet, wobei ein Vorzeichenbit 0 eine
positive Zahl anzeigt und ein Vorzeichenbit 1 eine negative Zahl
anzeigt. Das Vorzeichenbit kann an verschiedenen Stellen liegen,
solange seine Verwendung innerhalb der Zahl konsistent ist. In
den meisten üblichen Systemen besetzt das Vorzeichenbit die
Stelle des höchstwertigen Bits.
-
Vorzeichenbehaftete Zahlen können durch digitale Schaltungen in
einfacher Weise bearbeitet werden, wenn sie in ihre
Einerkomplementdarstellung umgesetzt werden. In der vorliegenden Erfindung
werden die Vorzeichen von A, B und C in der Eponenteneinheit 10
verglichen. Wenn das Vorzeichen von C wie durch Vergleicher 11
ermittelt vom Ergebnis von A x B abweicht, dann wird die Ausgabe
von Verschieber 14 (einschließlich dem Überlauf) durch
Komplementierer 15 in eine Einerkomplementdarstellung komplementiert.
Der Komplementierer 15 kann wie in Figur 2 aufgebaut werden und
enthält Exklusiv-ODER-Gatter 40 bis 41. Es wird den Fachleuten
offensichtlich sein, daß die Anzahl von Exklusiv-ODER-Gattern
von der Anzahl von Bits in der im System verwendeten Binärzahl
abhängt. Jedesmal wenn ein komlementäres Signal am Anschluß 15A
empfangen wird, wird das DATEN EIN-Signal komplementiert und als
DATEN AUS-Signal bereitgestellt.
-
Die Mantissen von A und B, die als MAN(A) bzw. MAN(B) bezeichnet
werden, werden vom Teilmultiplizierer 12 empfangen.
Teilmultiplizierer 12, dessen Arbeitsweise unten weitergehend beschrieben
werden wird, multipliziert A und B, liefert aber nur ein
Teilprodukt, das zwei Summanden umfaßt, deren Summe A x B ist.
-
Die als MAN(C) bezeichnete Mantisse von Operand C wird dem
Verschieber 14 zugeführt, der nach Art eines normalen Verschiebers
arbeitet, um C um den aus der Berechnung
EXP(A) + EXP(B) - EXP(C) ermittelten Wert nach rechts zu
schieben. Dieser Wert wird Anschluß 14A von Verschieber 14 zugeführt
und steuert wiederum den Wert, um den Verschieber 14 seine
Eingabe MAN(C) nach links verschiebt. Die verschobene und hier als
Cverschoben bezeichnete Ausgabe von MAN(C) wird zusammen mit den
Teilprodukten aus Teilmultiplizierer 12 dem
Übertrag-Summen-Addierer 16 zugeführt. Ein Überlauf aus der Schiebeoperation
(EXP(A) + EXP(B) - EXP(C)), der negativ ist, verursacht ein
Linksschieben. Es ist zu bemerken, daß Überlauf jedesmal dann
auftritt, wenn C höherwertiger ist als A und B, d.h.
EXP(C) > EXP(A) + EXP(B).
-
Der Überlauf-Summen-Addierer 16 ist ein normaler in der Technik
bekannter Überlauf-Summen-Addierer mit drei Eingängen und zwei
Ausgängen, wobei die zwei Ausgänge der als 5 bzw. C bezeichnete
Summen- und Überlaufausgang sind.
-
Die Ausgänge C und S des Überlauf-Summen-Addierers 16 werden dem
Volladdierer 18 zugeführt, der ein in der Technik bekannter
normaler Addierer ist, der die zwei Ergebnisse C und S aus
Überlauf-Summen-Addierer 16 addiert. Er enthält auch einen
Überlaufeingabe-(CI)-Eingang, um eine Überlaufeingabe zu empfangen, und
einen Überlaufausgabe-Ausgang (CO), um eine Überlaufausgabe
bereitzustellen, wenn das Ergebnis der Addierberechnung
tatsächlich eine Überlaufausgabe erzeugt.
-
Das Signal aus Vergleicher 11 wird an Leitung 17 auch
Inkrementierer 20 als das Einerkomplementvorzeichen zugeführt und an die
erste Bitstelle gesetzt. Dieses Signal wird dann schließlich am
Anschluß 22A an Komplementierer 22 übertragen, was vom Ergebnis
der Inkrementierung durch Inkrementierer 20 abhängt, um den
Komplementbildungseingang im Komplementierer 22 wie erforderlich
ein- oder auszuschalten.
-
Das CI-Signal wird von Inkrementierer 20 empfangen, der den
Überlauf von Verschieber 14 empfängt. Der Inkrementierer 20
arbeitet als ein Addierer mit einem auf Null gesetzten Eingang. Er
bewirkt folglich, daß der Überlauf von Verschieber 14
inkrementiert wird, wenn ein CO-Signal von Volladdierer 18, das am
Überlaufeingabe-(CI)-Eingang des Inkrementierers 20 zugeführt wird,
vorliegt. Wenn das Ergebnis der Inkrementierung in
Inkrementierer 20 eine Überlaufausgabe (CO) bewirkt, wird dieses CO-Signal
dem vorher genannten CI-Eingang von Volladdierer 18 zugeführt.
Die inkrementierte Ausgabe wird an 20A zugeführt.
-
Der Komplementierer 22 empfängt die Ausgabe von Volladdierer 18
und Inkrementierer 20 komplementiert die empfangenen Werte. Dies
ist notwendig, um vorzeichenbehaftete Zahlen wie oben
beschrieben zu verarbeiten.
-
Der Normierer 24 bewirkt, daß führende Nullen beseitigt werden
und folglich die Genauigkeit des Ergebnisses maximiert wird. Der
Normierer 24 kann durch jegliche Schaltung realisiert werden,
die führende Nullen erkennt und bewirkt, daß die Mantisse
verschoben und der Exponent entsprechend inkrementiert oder
dekrementiert wird. Eine besonders schnelle Schaltung, die diese
Berechnung ausführt, ist in EP-A 362 580 mit dem Titel "Leading
0/1 Anticipator (LZA)", die dem Inhaber der vorliegenden
Erfindung übertragen ist, beschrieben. Diese Schaltung ermöglicht die
Ermittlung von führenden Nullen vor der Vollendung der
Ermittlung des Ergebnisses und bewirkt folglich keine zusätzliche
Laufzeit.
-
Runden ist erforderlich, um die Wertigkeit von
Multiplizier-Addier-Berechnungen an die erforderliche Genauigkeit, oftmals die
ursprüngliche Genauigkeit der Eingaben, anzupassen. Der Stand
der Technik erforderte 2 derartige Rundungsoperationen, von
denen eine der Multiplikationsberechnung folgte und eine der
Additionsberechnung folgte. In diesen zwei Rundungsoperationen kann
Genauigkeit verloren werden. Beispielsweise wenn m = 8 verwendet
wird:
-
a = 0,11111110 x 2&sup0;
-
b = 0,10000001 x 2¹
-
c = -0,1 x 2¹
-
a x b = 0,111111111111110 x 2&sup0;
-
(auf 8 Stellen gerundet) = 0,1 x 2¹
-
a x b + c = 0,1 x 2¹ - 0,1 x 2¹
-
= 0
-
als eine einzige Berechnung,
-
a x b + c = -0,00000000000001 x 2&sup0;
-
= -0,1 x 2&supmin;¹³
-
da die volle Genauigkeit der Multiplikation über die Addition
beibehalten wird.
-
Man bemerke, daß die Anzahl von Eingangs- und
Ausgangsanschlüssen des kombinierten Multiplizierers und Addierers 3 Eingänge
und einen Ausgang oder 4 Anschlüsse umfaßt. Dies ist wesentlich
weniger als beim Stand der Technik, der 2 Eingänge und 1 Ausgang
für jeden der Multiplizierer und Addierer oder 6 Anschlüsse ins-
gesamt aufweist. Folglich kann ein einzelner Befehl mit 4
Adreßfeldern die kombinierte Multiplizier-Addier-Einheit adressieren,
so daß die Befehlslänge für Gleitkommaberechnungen wesentlich
verringert wird.
-
Einige Multiplikationsbäume, die als Teilmultiplizierer 12
verwendet werden können, weisen zusätzliche Eingänge auf, die
ermöglichen, daß Cverschoben ohne Laufzeiteinbuße in die Multiplikation
eingefügt wird (Fig. 6). Die Einbuße im ungünstigsten Fall ist
jedoch die eines Übertrag-Summen-Addierers, was einen geringen
Prozentsatz der Zykluszeit darstellt. Dies ermöglicht, daß die
Multiplikationsberechnung mit nur einem geringeren Einfluß auf
die Geschwindigkeit der Multiplikation mit der
Additionsberechnung zusammengefaßt wird.
-
Der Teilmultiplizierer 14 liefert wie oben ausgeführt zwei
Teilprodukte, die, wenn sie miteinander addiert werden, gleich dem
gewünschten Ergebnis sind. Es gibt zahlreiche Arten, einen
solchen Multiplizierer aufzubauen, aber in der bevorzugten
Ausführungsform der vorliegenden Erfindung wird eine als ein Wallace-
Baum bekannte Struktur verwendet, um eine beträchtlich
schnellere Berechnung zu erhalten.
-
Um die Arbeitsweise eines Wallace-Baums zu verstehen, ist es
nützlich, zuerst die Betriebsweise eines Matrixmultiplizierers,
wie er in Figur 3 gezeigt wird, zu verstehen. Zur besseren
Erläuterung ist ein Vier-Bit-Matrixmultiplizierer, der angepaßt
ist, zwei Vier-Bit-Zahlen zu multiplizieren, gezeigt. In den
meisten Realisierungen der vorliegenden Erfindung wird eine viel
größere Anzahl von Bits zu bearbeiten sein. Zwecks der
Erläuterung ist der Multiplizierer von Fig. 3 für die Multiplikation
der Zahlen A&sub1;A&sub2;A&sub3;A&sub4; und B&sub1;B&sub2;B&sub3;B&sub4; gezeigt, wobei jedes Ai und Bi Bits
der Vier-Bit-Zahlen A bzw. B darstellen.
-
Der Multiplizierer von Fig. 3 umfaßt eine Vielzahl von Zellen 50
bis 53, 70 bis 73, 90 bis 93 und 110 bis 113. Jede von diesen
wiederum umfaßt UND-Gatter 54 bis 57, 74 bis 77, 94 bis 97 bzw.
114 bis 117. Die Eingänge jedes UND-Gatters sind jeweils mit den
speziellen zu multiplizierenden Ai und Bi gekoppelt, und die UND-
Gatter liefern im wesentlichen eine Ein-Bit-Multiplikation. Dies
wird intuitiv offensichtlich werden, wenn betrachtet wird, daß
nur Einsen und Nullen multipliziert werden, und das Ergebnis
einer solchen Multiplikation kann wiederum nur 1 oder 0 sein. Die
UND-Gatter erfüllen diese Funktion.
-
Während jedes Bit einzeln multipliziert werden kann, ist es auch
notwendig, die Ergebnisse der einzelnen Multiplikationen zu
addieren. Jede Zelle enthält auch einen mit 60 bis 63, 80 bis 83,
100 bis 103 und 120 bis 123 bezeichneten Volladdierer. Diese
Volladdierer weisen drei Eingänge auf, zwei zum Empfangen eines
zu addierenden Bits, einen Überlaufeingang von einem
vorhergehenden Addierer in einem Multibit-Addierer und einen
Überlaufausgang, der an den Überlaufeingang eines nachfolgenden
Addierers geht. Einer der Eingänge der Volladdierer 60 bis 63 ist
jeweils auf 0 gesetzt, da dies die erste Gruppe in der Matrix ist.
Ebenfalls wird der Überlaufausgang der höchstwertigen Zelle
einer jeden Reihe in der Matrix an den Eingang der Zelle darunter
geführt. Diese Art von Struktur führt dieselbe Art von Addition
aus, die eine Person manuell ausführen könnte, wobei jede Ziffer
einer Zahl mit einer Ziffer des Multiplizierers multipliziert
wird. Die Ergebnisse von aufeinanderfolgenden Zahlen im
Multiplizierer werden jeweils um eine Dezimalstelle nach rechts
geschoben, und die verschobenen Ergebnisse werden dann addiert.
Die Ausgänge 130 bis 137 werden dann das Endergebnis aufweisen.
-
Solche Multiplizierer sind langsam, da der Weg, den eine Zahl
durchläuft, lang ist. Beispielsweise muß eine Überlaufausgabe
von Zelle 53 durch acht Zellen (53, 52, 73, 72, 93, 92 und 113,
112) laufen, bevor sie das Endergebnis erreicht. Es können aber
auf einem ähnlichen Schema aufgebaute Multiplizierer aufgebaut
werden, die viel schneller sind.
-
Ein um eine Stufe schnellerer Multiplizierer ist in Figur 4
gezeigt. Dieser Multiplizierer ist dem in Fig. 3 gezeigten sehr
ähnlich mit der Ausnahme, daß die Überlaufausgänge dem
Überlaufeingang der unmittelbar darunter und links diagonal liegenden
Zelle zugeführt werden. Es wird von den Fachleuten verstanden
werden, daß eine solche Struktur zulässig ist, da die
Überlaufausgänge weiterhin in Spalten mit derselben Gewichtung oder
Wertigkeit, die sie im Multiplizierer von Fig. 3 haben würden,
addiert werden. Der Überlaufeingang der Addierer 60 bis 63 wird
auf 0 gesetzt, da sie keine Überlaufeingabe von ihren
Nachbaraddierern mehr empfangen. Es wird klar sein, daß dieser
Multiplizierer schneller ist, da ein Überlauf nicht einen so langen Pfad
durchlaufen muß. Beispielsweise muß der Überlaufausgang von 63
nun nur über vier Addierer laufen, nämlich 63, 83, 103 und 123.
Zwei Nachteile, die diese Struktur möglicherweise aufweist,
bestehen darin, daß sie nun zwei Teilprodukte anstelle eines
Endergebnisses erzeugt und daß sie mehr Verdrahtung erfodert. Die
Teilergebnisse können aber durch einen Übertrag-Summen-Addierer
wie 16 in das Endergebnis überführt werden. Jede Leitung des
Ausgangs enthält ein Teilprodukt, aber gewisse Leitungspaare,
nämlich 141 und 142, 143 und 144 und 145 und 146, weisen
beispielsweise dieselbe Gewichtung auf und werden durch einen
Volladdierer addiert. Die anderen Leitungen, nämlich 140, 148, 149
und 150, enthalten auch Teilprodukte, aber die Teilprodukte für
diese Bitstellen sind bereits durch die Struktur berechnet
worden. Sie können wie vorliegend verwendet werden oder alternativ,
wenn sie in einen Addierer eingespeist werden, müßte einer der
Eingänge des Volladdierers auf Null gesetzt werden. Obwohl diese
Struktur we&entlich schneller als die in Fig. 3 gezeigte ist,
sind weitere Verbesserungen möglich.
-
Fig. 5 zeigt einen noch schnelleren Multiplizierer. Im
Multiplizierer von Fig. 5 springt die Übertragsausgabe des Volladdierers
nicht einfach zum Addierer diagonal unter diesem, sondern zwei
Reihen unter diesem (wiederum zu derjenigen Spalte, die
unmittelbar zu seiner linken benachbart liegt). Diese Struktur ist
schneller, da die Zwischenergebnisse noch weniger Entfernung zu
durchlaufen haben. Die Ausgaben 161, 162, 163 und 164, 165, 166
und 167, 168 und 169 haben jeweils dieselbe Gewichtung und
werden
durch einen Übertrag-Summen-Addierer addiert werden, um zwei
Ausgaben zu liefern. Leitungen 170, 171 und 172, 173 und 174,
176 weisen auch dieselbe Gewichtung auf. Leitungen 160 und 176
sind bereits zu einem einzigen Bit überführt, und folglich ist
kein zusätzlicher Addierer erforderlich.
-
Fig. 6 zeigt eine Wallace-Baumanordnung und ist in Baer, J. L.,
Computer Systems Architecture, "Rockville, Md.: Computer Science
Press, 1980) S. 108 bis 110 beschrieben. Der Wallace-Baum ist im
wesentlichen eine Erweiterung der Anordnung von Fig. 5. Wiederum
Bezug nehmend auf Fig. 5 ist zu verstehen, daß die Addierer wie
63 nicht mehr notwendig sind, da sie zu zweien ihrer Eingänge
nur 0 addieren müssen. Wenn viele Reihen übersprungen werden,
wird der Wallace-Baum wie in Fig. 6 gezeigt erhalten. Die UND-
Gatter 200 bis 211 von Fig. 6 entsprechen den UND-Gattern 50,
71, 92, 113 von Fig. 5. Zwecks der Erläuterung beschreibt Fig. 6
ein 12-Bit-Multiplikationsschema, während Fig. 5 nur ein 4-Bit-
Multiplizierer ist. Im wesentlichen ist die Eingabe 249 drei
Übertrag-Summen-Addierer-Laufzeiten später erforderlich als die
Eingaben an 220, 222, 224 und 226. Diese Eingabe könnte Cverschoben
vom Verschieber 14 und Komplementierer 15 sein, wobei ein
ausreichend schneller Verschieber angenommen wird, und könnte die
Multiplizier-Addier-Berechnung ohne jegliche zusätzliche
Übertrag-Summen-Laufzeit erzeugen.
-
Um die Verdrahtungskomplexität der Multiplikation zu minimieren,
können Wallace-Bäume darüber hinaus erweitert werden, indem
leistungsfähigere Strukturen als Übertrag-Summen-Addierer verwendet
werden. Ein Übertrag-Summen-Addierer ist ein 3-zu-2-Addierer
(3,2), der 3 Eingänge bei Gewichtung 2&sup0; und 2 Ausgänge aufweist:
einen von Gewichtung 2¹ und einen von Gewichtung 2&sup0;. Er weist 5
Eingangs-/Ausgangsverbindungen und 1 Ausgang weniger als
Eingänge auf. Ein 7-zu-3-Addierer (7,3) weist 7 Eingänge bei
Gewichtung 2&sup0; und 3 Ausgänge auf: einen von Gewichtung 2&sup0;, einen von
Gewichtung 2¹ und einen von Gewichtung 2². Da dieser Addierer 4
Ausgänge weniger als Eingänge aufweist, sind nur 1/4 so viele
(7,3)-Addierer erforderlich, um dieselbe Funktion wie Übertrag-
Summen-Addierer auszuführen. Da die Gesamtzahl von Eingängen und
Ausgängen 10 ist oder zweimal so viel wie im Fall von einem
Übertrag-Summen-Addierer, ist die Gesamtzahl von Verbindungen an
(7,3)-Addierer die Hälfte derjenigen, die für Übertrag-Summen-
Addierer erforderlich ist. Fig. 7A zeigt eine E/A-Darstellung
für einen Übertrag-Summen-(3,2)-Addierer 260, und Fig. 7B zeigt
eine vergleichbare E/A-Darstellung für einen (7,3)-Addierer 270.
-
Fig. 8 zeigt eine bevorzugte Realisierung für einen
28-Bit-Multiplikationsbaum, wobei das Cverschoben-Signal am Eingang 320
enthalten ist, so daß 2 (7,3)-Addiererlaufzeiten für die
Schiebe- und Komplementausführung ermöglicht werden. Dieser
Multiplikationsbaum, der ähnlich dem vorher beschriebenen Wallace-Baum
ist, wurde erweitert, und verwendet die 7/3-Addierer 300 bis
306. Eingang 320 entspricht Eingang 249 des Wallace-Baums in
Fig. 6 und empfängt das Cverschoben-Signal vom Komplementierer. Wie
in Fig. 6 führen UND-Gatter 290 bis 296 die Multiplikation aus.
Die Anordnung der UND-Gatter werden an den Eingängen jedes der
7/3-Addierer 301, 302 und 303 wiederholt. Eine in Computer
Systems Architecture (Rockville, Md.: Computer Science Press,
1980) S. 108 bis 110 angegebene Booth'sche Kodierung kann
anstelle der UND-Gatter 290 bis 296 verwendet werden, um die
Anzahl von Eingängen auf 28 x 2 zu erhöhen.