-
Die
vorliegende Erfindung bezieht sich allgemein auf digitale Schaltungen
und Prozessoren, und insbesondere auf ein Verfahren und eine Vorrichtung zum
Verarbeiten zweier Datenoperanden in einem Prozessor auf zeitlich
selbstgesteuerte Weise, um die Hardwareerfordernisse zu minimieren.
Obwohl das zeitlich selbstgesteuerte Verfahren sowie die zeitlich
selbstgesteuerte Vorrichtung nicht auf diese bestimmte Anwendung
beschränkt
sind, sind sie besonders geeignet für die Implementierung in Verbindung
mit Schiebeoperationen bei einem kombinierten Gleitkomma (floating
point = FP) -Multiplizierer-Addierer eines hochleistungsfähigen Mikroprozessors.
-
Momentan
werden viele arithmetische Operationen in vorliegenden Implementationen
von Mikroprozessoren durch Verwenden eines integrierten Gleitkomma-
(floating point = FP-)prozessors beschleunigt, der FP-Berechnungen
implementiert, (d. h. Berechnungen, die Operationen mit Ausdrücken mit
einem Festkommateil und einem Exponenten umfassen, wobei der Wert
jedes Ausdrucks gleich ist wie der Festkommaanteil derselben multipliziert
mit 2Exponent), typischerweise bei sehr
hohen Zahlen. Diese FP-Prozessoren können einen kombinierten Multiplizierer-Addierer
umfassen, um die Leistungsfähigkeit
von FP-Operationen zu erhöhen.
-
Kombinierte
Multiplizierer-Addierer sind in der Technik wohl bekannt. Bei einem
typischen kombinierten Multiplizie rer-Addierer werden zwei Operanden,
beispielsweise A und B, miteinander multipliziert, und mit einem
anderen Operanden C addiert, so daß das Ergebnis R = A·B + C
oder das Ergebnis R = A·B – C ist.
Allgemein werden in der Schaltungsan ordnung die Operanden A und
B zuerst miteinander multipliziert, während der andere Operand C
geschoben wird, und dann wird das Produkt aus A und B zu dem geschobenen
C addiert. Danach wird die Summe durch eine Schiebeoperation normiert,
und schließlich
wird die geschobene Summe gerundet.
-
Wie
bei vielen FP-Operationen ist es regelmäßig erforderlich, daß ein Ergebnis
einer FP-Operation gerundet wird. IEEE und andere Industriestandards
spezifizieren unterschiedliche Typen von Rundungsprozessen, beispielsweise
Runden auf Null, Runden auf den nächstliegenden Wert, Runden
auf negative Unendlichkeit und Runden auf positive Unendlichkeit.
Die Berechnung, ob die resultierende FP-Zahl gerundet werden muß, und auch
der Rundungsprozeß selber
können
die Leistungsfähigkeit und
Hardwarekomplexität
des kombinierten Multiplizierer-Addierers wesentlich und unerwünscht behindern.
-
Das
Ergebnis R wird in einer Form geliefert, die entweder nicht-inkrementiert
oder inkrementiert ist, um die Rundungsanforderung zu erfüllen. Wenn beispielsweise
eine Rundungsanforderung Runden auf Null oder Runden auf negative
Unendlichkeit wäre,
dann würde
das nicht-inkrementierte Ergebnis R ausgegeben werden. Wenn eine
Rundungsanordnung Runden auf positive Unendlichkeit wäre, dann würde das
inkrementierte Ergebnis R ausgegeben werden. Wenn ferner die Rundungsanforderung
Runden auf den nächstliegenden
Wert wäre,
dann würden
entweder das inkrementierte oder das nicht-inkrementierte Ergebnis R ausgegeben
werden.
-
Um
den Rundungs/Inkrementierungsprozeß genauer zu erklären, betrachte
man ein Beispiel eines kombinierten FP-Multiplizierer-Addierers mit den in 1 gezeigten
Rundungsfähigkeiten,
der allgemein mit dem Bezugszeichen 5 bezeichnet ist. Der kombinierte
Multiplizierer-Addierer 5 von 1 ist derart
entworfen, um bezüglich
der Festkommateilabschnitte (Nicht-Exponentteil) der FP-Zahlen wirksam zu
sein. Wie im Stand der Technik gut bekannt, werden die Exponentenabschnitte
solcher FP-Zahlen getrennt von den Festkommaanteilabschnitten verarbeitet,
und der Einfachheit halber wird solches Verarbeiten hier nicht beschrieben.
Wie in 1 gezeigt, umfaßt der kombinierte Multiplizierer-Addierer 5 einen
Multiplizierer 11, der zwei Zahlen A, B (jeweils beispielsweise
64 Bits) empfängt
und multipliziert. Schiebeeinrichtung 12 schiebt den Operanden
C um einen vorbestimmten Wert, um denselben bezüglich dem Rechenprodukt von
A und B zu normieren, und es demselben dadurch zu ermöglichen,
zu einem späteren
Zeitpunkt mit dem Produkt von A und B auf geeignete Weise kombiniert
werden kann.
-
Die
Summe- und Übertragausgangssignale (jeweils
beispielsweise 128 Bit) und das Ausgangssignal der Schiebeeinrichtung 12 werden
in den Übertragsicherungsaddierer 13 eingegeben,
dessen Gestaltung und Betrieb in der Technik bekannt sind. Die Summe-
und Übertragdaten
von dem Multiplizierer 11 werden jeweils als der Addend
und Summand in den Übertragsicherungsaddierer 13 eingegeben. Das
Eingangssignal von der Schiebeeinrichtung 12 wird angesehen
als Übertrageingabe
von einer weniger signifikanten Stufe des kombinierten FP-Multiplizierer-Addierers 5.
Der Übertragsicherungsaddierer 13 erzeugt
ein Summeausgangssignal und ein Übertragausgangssignal.
Sowohl das Summe- als auch das Übertragausgangssignal
werden in einen Übertragausbreitungsaddierer 14 und
einen Führungsbitantizipierer
(LBA = leading bit anticipator) eingegeben. Der Übertragausbreitungsaddierer 14 kombiniert
das Summe- und Übertragausgangssignal
von dem Übertragsicherungsaddierer 13,
um eine FP-Zahl zu erzeugen, die in die Schiebeeinrichtung 16 eingegeben
wird. Die Gestaltung und der Betrieb eines Übertragausbreitungsaddierers
sind in der Technik ebenfalls gut bekannt.
-
Der
Führungsbitantizipierer 15 berechnet eine
Schiebezahl, die gleich ist wie die Anzahl der wesentlichen Bits,
die geschoben werden müssen, um
die führenden
Nullen in der FP-Zahl,
die durch den Übertragsicherungsaddierer 13 erzeugt wird, auszulöschen. Der
Führungsbitantizipierer 15 berechnet
die Schiebezahl außerdem
in eine bestimmte Richtung. Dies wird durchgeführt, um die Normierung des
Summe- und Übertragausgangssignals
des Übertragsicherungsaddierers 13,
für Addier-,
Subtrahier-, Multiplizier- oder Dividieroperationen zu bestimmen.
Ein Beispiel von einer von vielen möglichen Architekturen für den Führungsbitantizipierer 15 ist im
US-Patent Nr. 5,798,962 an Miller et al. beschrieben.
-
Die
Schiebezahl, die durch den Führungsbitantizipierer 15 erzeugt
wird, wird in die Schiebeeinrichtung 16 eingegeben. Die
Schiebeeinrichtung 16 führt
dann eine Schiebeoperation an der FP-Zahl aus. Die FP-Zahl wird
um eine Anzahl von Bits geschoben, die gleich ist wie die Schiebezahl,
die durch den Führungsbitantizipierer 15 erzeugt
wird. Die Schiebeeinrichtung 16 führt die Funktion des Schiebens
der FP-Zahl abwechselnd nach links oder rechts aus, wie es von der
Schiebezahl bestimmt wird. Dies löscht die führenden Nullen der FP-Zahl
(d. h. normiert die sich ergebende FP-Zahl). Die sich ergebende normierte
FP-Zahl wird in den Inkrementierer 17, die Rundungslogik 18 und
den Multiplexer (MUX) 19 eingegeben.
-
Der
Inkrementierer 17 inkrementiert die normierte FP-Zahl,
um eine inkrementierte normierte FP-Zahl zu liefern. Der Inkrementierer 17 gibt
die inkrementierte normierte FP-Zahl in den Multiplexer 19 ein.
-
Die
Rundungslogik 18 bestimmt, ob die normierte Zahl, die von
der Schiebeeinrichtung 16 ausgegeben wird, eine Rundung
erfordert, und bestimmt den Typ basierend auf der Untersuchung von Schutz-,
Rundungs- und Haftbits, die die mit dem Ausgangssignal der Schiebeeinrichtung 16 zusammenhängen. Die
Rundungslogik 18 weist den MUX 19 an, entweder
die nicht-inkrementierte Zahl oder die inkrementierte Zahl auszuwählen für das endgültige Ausgangssignal
von dem kombinierten FP-Multiplizierer-Addierer 5.
-
Ein
Hauptproblem bei der Rundungsarchitektur für einen herkömmlichen
kombinierten FP-Multiplizierer-Addierer liegt darin, daß es, bis
die Zahl, die sich aus einer FP-Operation
ergibt, normiert ist, sehr schwierig, wenn nicht sogar unmöglich ist,
zu bestimmen, ob das normierte Ergebnis Rundung erfordert. Da das
Inkrementieren eines Ergebnisses einer FP-Operation nach der Normierung
ausgeführt wird,
wird zusätzliche
Zeit benötigt,
um die FP-Operation abzuschließen.
Ferner ist der Inkrementierer nachteilhaft, da er viele unerwünschte Gateverzögerungen,
d. h. mindestens log2 N Gateverzögerungen hinzufügen kann,
wobei N die Anzahl der Bits ist. Beide diese Probleme beeinträchtigen
die Leistungsfähigkeit
des kombinierten Multiplizierer-Addierers 5 wesentlich.
-
Daher
besteht in der Industrie ein bisher nicht angegangener Bedarf nach
einer Herangehensweise für
die vorher erwähnten
Mängel
und Unzulänglichkeiten,
insbesondere für
einen Weg um das Runden oder Inkrementieren in einem kombinierten
Multiplizierer-Addierer 5 durchzuführen.
-
Die
US-Patentschrift
US 5,649,225 zeigt
einen superskalaren Prozessor mit einer Befehlspipeline, die es
ermöglicht,
Befehle in Abhängigkeit
von zur Verfügung
stehenden Ressourcen entweder parallel oder hintereinander auszuführen. Der
gezeigte Prozessor ermöglicht
ferner das Umordnen und Synchronisieren von Befehlen.
-
Das
Lehrvideo „The
Superscalar Hardware Architecture of the MC68060" von Joseph E. Circello, produziert
durch die University Video Communications, beschreibt die Hardware-Architektur des MC68060
Mikroprozessors. Das Video zeigt die Merkmale der superskalaren
Mikroarchitektur des Motorola MC68060 Prozessors. Superskalare Prozessoren
nutzen parallel ausführbare
Instruktionen, die in den meisten Programmen existieren, indem sie eine
Mikroarchitektur implementieren, die mehrere Instruktionen in einem
einzigen Zyklus abfertigen und ausführen kann. Das beschriebene
Lehrvideo zeigt, wie der MC68060 mit Hindernissen, wie Instruktionen mit
variabler Länge,
verschiedenen Instruktionsformaten und anderen, umgeht.
-
Die
Veröffentlichung „Meet The
68000" von Jack
Powell, die in der Zeitschrift „Antic", vol. 4, No. 1, Mai 1985, Seite 28,
veröffentlicht
wurde, und die im Internet unter http://www.atarimagazines.com/v4n1/68000.html
abrufbar ist, beschreibt die Hardwarearchitektur des 68000 Mikroprozessors. Beschrieben
wird insbesondere, dass der 68000 Mikroprozessor der erste 16-Bit
Mikroprozessor war, der intern eine 32 Bit Architektur aufweist.
Beschrieben wird weiterhin die nicht-segmentierte direkte Speicheradressierung.
Weiterhin wird darauf eingegangen, dass der 68000 einen 16 Bit breiten
Datenbus aufweist, so dass auf zwei Byte von Daten in einem Maschinenzyklus
zugegriffen werden kann. Ferner weist der 68000 32-Bit Register
auf, die vier Byte von Daten aufnehmen können.
-
Es
ist die Aufgabe der vorliegenden Erfindung, ein Verfahren, eine
Vorrichtung und einen Prozessor zu schaffen, so dass eine Übertragung
von Datenoperanden mit geringeren Hardwareanforderungen ermöglicht wird.
-
Diese
Aufgabe wird durch ein Verfahren gemäß Anspruch 1, eine Vorrichtung
gemäß Anspruch 18
sowie einen Prozessor gemäß Anspruch
38 gelöst.
-
Die
vorliegende Erfindung schafft ein Verfahren zum Verarbeiten zweier
Datenoperanden in einem Prozessor. Das Verarbeiten umfasst ein Empfangen
eines ersten Datenoperanden, der durch ein erstes Codierungsschema
definiert ist, auf einem ersten Datenpfad sowie ein Empfangen eines
zweiten Datenoperanden, der durch das erste Codierungsschema definiert
ist, auf einem zweiten Datenpfad. Ferner umfasst das erfindungsgemäße Verfahren
ein Umcodieren des ersten Datenoperanden mit einem zweiten Codierungsschema,
um umcodierte erste Daten zu erhalten, sowie ein Bereitstellen der umcodierten
ersten Daten auf einem dritten Datenpfad. Weiterhin umfasst das
Verfahren ein Umcodieren des zweiten Datenoperanden mit einem dritten Codierungsschema,
um umcodierte zweite Daten zu erhalten, und ein Bereitstellen der
umcodierten zweiten Daten auf dem dritten Datenpfad, zeitlich versetzt zu
dem Bereitstellen der umcodierten zweiten Daten, wobei das Umcodieren
des ersten Datenoperanden und das Umcodieren des zweiten Datenoperanden so
ausgelegt ist, dass die umcodierten ersten Daten nicht mit den umcodierten
zweiten Daten zusammenfallen. Ferner erfolgt ein asynchrones aufeinanderfolgendes
Verarbeiten der auf dem dritten Datenpfad bereitgestellten Daten,
um erste verarbeitete Daten, die durch das Verarbeiten des umcodierten
ersten Datenoperanden gebildet sind, und zweite verarbeitete Daten,
die durch das Verarbeiten des umcodierten zweiten Datenoperanden
gebildet sind, zu erhalten. Ebenso umfasst das erfindungsgemäße Verfahren
ein zeitlich selbstgesteuertes Trennen der ersten verarbeiteten
Daten und der zweiten verarbeiteten Daten in ein erstes Datenwort
und ein zweites Datenwort, ein Decodieren des ersten Datenwortes,
um eine Darstellung des ersten Datenwortes in dem ersten Codie rungsschema
zu erhalten, und ein Decodieren des zweiten Datenwortes, um eine
Darstellung des zweiten Datenwortes in dem ersten Codierungsschema
zu erhalten.
-
Die
vorliegende Erfindung schafft ein zeitlich selbstgesteuertes Übertragungssystem
und -verfahren um eine Mehrzahl von Datenoperanden aufeinanderfolgend
durch herkömmliche
digitale Vorrichtungen, beispielsweise eine Schiebeeinrichtung,
ein Bus-Netzwerk, einen Multiplexer (MUX), oder einen Puffer, wirksam
zu übertragen
und zwar auf eine zeitlich selbstgesteuerte Weise, um Hardwareerfordernisse
zu minimieren. Obwohl das zeitlich selbstgesteuerte Übertra gungssystem
und -verfahren nicht auf diese spezielle Anwendung beschränkt sind,
sind sie besonders geeignet für
die Implementierung in Verbindung mit Schiebeoperationen bei einem
kombinierten Gleitpunkt-Multiplizierer-Addierer eines hochleistungsfähigen Mikroprozessors.
-
Bei
der Architektur kann mindestens ein Ausführungsbeispiel des zeitlich
selbstgesteuerten Übertragungssystems
wie folgt aufgebaut sein. Ein Codierer codiert einen ersten und
einen zweiten Datenoperanden, die jeweils auf einen separaten jeweiligen ersten
und zweiten Logikwegsatz definiert sind, auf den gleichen dritten
Logikwegsatz durch Ändern
des Codierschemas. Dieses Neu- bzw. Umcodierschema ist möglich, da
der erste und zweite Datenoperand einen mathematischen Bezug aufweisen.
Bei diesem Ausführungsbeispiel
sind der erste und der zweite Datenoperand jeweils auf zwei monotonen
Logikwegen definiert, und der dritte Logikwegsatz definiert jeden
Operanden, zeitlich beabstandet, auf vier monotonen Logikwegen.
Bei diesem Implementationsbeispiel unterscheiden sich die Werte
der ersten und zweiten Daten um nicht mehr als 1 Bit (wenn man die Werte
X und Y annimmt, zeigen sie die folgende mathematische Beziehung
zeigen: X = Y oder X = Y–1). Es
wird darauf hingewiesen, daß auch
andere Codierschemen und mathematische Beziehungen möglich sind.
Eine Vorrichtung, beispielsweise eine Schiebeeinrichtung, ein Bus-Netzwerk,
ein Multiplexer, oder ein Puffer verarbeitet die ersten und zweiten Daten
getrennt, aufeinanderfolgend zeitlich und auf eine zeitlich selbstgesteuerte
Weise, und sendet die verarbeiteten ersten und zweiten Daten auf
einen vierten Satz von Logikwegen. Ein Decodierer empfängt die
verarbeiteten ersten und zweiten Daten aufeinanderfolgend von der
Vorrichtung auf dem vierten Satz von Logikwegen. Der Decodierer
decodiert die ersten und zweiten Daten auf den jeweiligen fünften und
sechsten Satz von Logikwegen, die getrennt sind und eine Codierung
aufweisen, die dem ersten und dem zweiten Originalsatz von Logikwegen
entspricht.
-
Die
vorliegende Erfindung kann auch so gesehen werden, daß sie ein
oder mehrere Verfahren schafft. Ein solches Verfahren kann grob
beschrieben werden als ein Prozeß (beispielsweise für einen
kombinierten FP-Multiplizierer-Addierer)
mit den folgenden Schritten: (a) Codieren erster und zweiter Daten, die
je definiert sind auf einem jeweiligen separaten ersten und zweiten
Satz von Logikwegen mit einem gemeinsamen Codierschema, auf den
gleichen dritten Satz von Logikwegen, wobei der dritte Satz von Logikwegen
ein unterschiedliches Codierschema hat als der erste und der zweite
Satz von Logikwegen; (b) getrenntes Verarbeiten der ersten und zweiten
Daten, aufeinanderfolgend zeitlich und auf zeitlich selbstgesteuerte
Weise, während
eine Eins-zu-eins-Entsprechung
zwischen Eingangscodierern und Ausgangscodierern der ersten und
zweiten Daten erhalten wird; (c) Senden der verarbeiteten ersten
und zweiten Daten auf einen vierten Satz von Logikwegen; und (d)
Decodieren der ersten und zweiten Daten von dem vierten Satz von
Logikwegen auf den jeweiligen fünften
und sechsten Satz von Logikwegen, die getrennt sind und hinsichtlich
des Codierschemas dem ersten und zweiten Satz von Logikwegen entsprechen.
-
Andere
Systeme, Verfahren, Merkmale und Vorteile der vorliegenden Erfindung
werden für
einen Fachmann auf diesem Gebiet bei dem Untersuchen der folgenden
Zeichnungen und detaillierten Beschreibung offensichtlich werden.
Es ist beabsichtigt, daß alle
solche zusätzlichen
Systeme, Verfahren, Merkmale und Vorteile hierin innerhalb des Schutzbereichs
der vorliegenden Erfindung enthalten sind.
-
Die
Erfindung kann besser verstanden werden mit Bezug auf die folgenden
Zeichnungen. Die Komponenten in den Zeichnungen sind, nicht notwendigerweise
maßstabgerecht,
der Schwerpunkt wurde statt dessen auf die genaue Darstellung der Prinzipien
der vorliegenden Erfindung gelegt. Darüber hinaus zeigen gleiche Bezugszeichen
in den Zeichnungen entsprechende Teile in den verschiedenen Ansichten.
-
Bevorzugte
Ausführungsbeispiele
der vorliegenden Erfindung werden nachfolgend bezugnehmend auf die
beiliegenden Zeichnungen näher
erläutert.
Es zeigen:
-
1 ein
Blockdiagramm eines kombinierten Multiplizierer-Addierers nach dem
Stand der Technik, der unerwünschterweise
ein Rundungssystem auf der Basis der Nachinkrementierung implementiert.
-
2 ein
Blockdiagramm eines Mikroprozessors, der ein auswahlbasiertes Rundungssystem verwendet.
-
3 ein
Blockdiagramm eines ersten Ausführungsbeispiels
eines kombinierten FP-Multiplizierer-Addierers, der das auswahlbasierte Rundungssystem
von 2 verwendet.
-
4A ein
mathematisches Diagramm, das einen idealen Inkrementierungsprozeß zeigt.
-
4B ein
mathematisches Diagramm, das einen ungefähren Inkrementierungsprozeß zeigt,
der gemeinsam ausgeführt
wird durch den Führungsbitantizipierer
und einen Übertragausbreitungsaddierer,
verbunden mit dem auswahlbasierten Rundungssystem von 2 und 3.
-
4C ein
Blockdiagramm eines niedrigstwertigen Bit-(LSB = least significant bit) Befestigungs-Mechanismus von 3.
-
4D eine
Wahrheitstabelle, die die Logik zeigt, die durch den LSB-Befestigungsmechanismus von
den 3 und 4C implementiert wurde.
-
5 ein
Blockdiagramm eines zweiten Ausführungsbeispiels
eines kombinierten FP-Multiplizierer-Addierers, der das auswahlbasierte Rundungssystem von 2 und
das zeitlich selbstgesteuerte Übertragungssystem
der vorliegenden Erfindung verwendet.
-
6 ein
Blockdiagramm des zeitlich selbstgesteuerten Übertragungssystems von 5.
-
7A ein
Blockdiagramm eines Codierers von 6.
-
7B ein
Schaltungsdiagramm des Codierers der 6 und 7A.
-
7C eine
Wahrheitstabelle, die die statische Logikübersetzung zeigt, die bei jedem
Codierer der 6, 7A und 7B auftritt.
-
7D eine
Wahrheitstabelle, die die dynamische Logikübersetzung zeigt, die entlang
des zeitlich selbstgesteuerten Übertragungssystems
von 6 auftritt.
-
8 ein
Blockdiagramm einer Schiebeeinrichtung von 6.
-
9 ein
Blockdiagramm einer zeitlich selbstgesteuerten Latchschaltung von 6.
-
10 ein
Blockdiagramm eines Decodierers von 6.
-
2 ist
ein Blockdiagramm eines Prozessors 21 mit einem kombinierten
Multiplizierer-Addierer 39, der das zeitlich selbstgesteuerte Übertragungssystem 100 (5)
der vorliegenden Erfindung verwendet, innerhalb eines auswahlbasierten Rundungssystems 20 des
kombinierten Multiplizierer-Addierers 39.
Mit Ausnahme des auswahlbasierten Rundungssystems 20 und
des zeitlich selbstgesteuerten Übertragungssystems 100 sind
alle der folgenden Elemente in der Technik gut bekannt und verstanden,
und der Einfachheit halber wird nur eine kurze Erklärung ihrer
zugeordneten Funktionen beschrieben. Der Prozessor 21 kann
beispielsweise ein Mikroprozessormikrochip sein, der gemäß gut bekannter
Herstellungstechniken hergestellt ist, aber er ist nicht darauf
beschränkt.
Wie in 2 dargestellt, umfaßt der Prozessor 21 in
der Architektur eine Busschnittstelle 23, die dafür bestimmt
ist, Adressen 24a und Daten 24b zu senden. Eine
Lade/Speicher-Einheit 26 führt die Funktion des Verwaltens
von Datenaustausch zwischen einem entfernten Gerät (der Einfachheit halber nicht
gezeigt; z. B. Speicher, ein Eingangs/Ausgangs (I/O – input/output)-Gerät; usw.) und
dem Prozessor 21. In anderen Worten, die Lade/Speicher-Einheit 26 ist
entworfen, um Lade- und Speichervorgänge von Daten in einer Ganzzahl-Registerdatei 29,
einer FP-Registerdatei 33, und der entfernten Vorrichtung
durchzuführen.
Eine arithmetische Logikeinheit (arithmetic logic unit = ALU) 35 greift
auf (liest von oder schreibt auf) die Ganzzahl-Registerdatei 29 zu und führt mathematische Operationen
an Ganzzahlen durch. Eine FP-Multiplizierer-Summierer-Einheit (FP
multiply accumulate unit = FMAC) 38 greift auf die FP-Registerdatei 33 zu und
führt mathematische
Operationen an FP-Zahlen durch. Die FMAC 38 kann einen
oder mehrere kombinierte Multiplizierer-Addierer 39 verwenden,
welche das zeitlich selbstgesteuerte Übertragungssystem 100 der,
vorliegenden Erfindung implementieren können.
-
In 3 wird
ein erstes Ausführungsbeispiel (ein
mögliches,
nicht beschränkedes
Beispiel) eines kombinierten FP-Multiplizierer-Addierers
dargestellt, der allgemein durch Bezugszeichen 50 bezeichnet ist,
und der ein auswahlbasiertes Rundungssystem 20 (2)
verwendet. Der kombinierte Multiplizierer-Addierer 50 (als
auch das zweite Ausführungsbeispiel
in 4) ist entwickelt, um auf den Festkommaanteilabschnitten
(Nicht-Exponententeil) der FP-Zahlen innerhalb eines Prozessors
oder einer anderen digitalen Schaltung wirksam zu sein. Anders als
beim zweiten Ausführungsbeispiel
(5) verwendet dieses erste Ausführungsbeispiel nicht das zeitlich selbstgesteuerte Übertragungs system 100,
es wird aber gezeigt und beschrieben, um die Anwendung des zeitlich
selbstgesteuerten Übertragungssystems 100 im
zweiten Ausführungsbeispiel
(5) deutlich darzustellen.
-
Es
wird darauf hingewiesen, daß eine
verwandte mitanhängige
US-Patentanmeldung mit dem Titel „Selection Based Rounding
System Ans Method For Floating Operations", mit Seriennr. 09/XXX,XXX und Anwaltdokumentnr.
10971153, die am selben Datum eingereicht wurde und hierin durch
Bezugnahme aufgenommen ist. Die vorige Anmeldung bezieht sich unter
anderem auf das breite Konzept des auswahlbasierten Rundungssystems 20.
-
Bei
dem kombinierten Multiplizierer-Addierer 50 werden zwei
Operanden, beispielsweise A und B, miteinander multipliziert und
mit einem anderen Operanden C addiert, so daß das Ergebnis R = A·B + C, oder
alternativ das Ergebnis R = A·B – C ist.
Die Subtraktion von C wird im wesentlichen durchgeführt, indem
das 2-er-Komplement von C genommen und dasselbe zu dem Produkt von
A·B addiert
wird. Darüber
hinaus wird das Ergebnis R in einer Form geliefert, die nicht-inkrementiert
oder inkrementiert ist, um eine Rundungsanforderung zu erfüllen. Wenn
es beispielsweise eine Rundungsanforderung von entweder Runden auf
Null oder Runden auf negative Unendlichkeit gibt, dann würde das
nicht-inkrementierte Ergebnis ausgegeben werden. Wenn es eine Rundungsanforderung
von Runden auf positive Unendlichkeit gäbe, dann würde das inkrementierte Ergebnis
ausgegeben werden. Wenn es schließlich eine Rundungsanforderung
von Runden auf den nächstliegenden
Wert gäbe,
dann würde
entweder das nicht-inkrementierte
Ergebnis oder das inkrementierte Ergebnis ausgegeben werden.
-
Für leichtes
Vergleichen der Leistungsfähigkeit
des kombinierten Multiplizierer-Addierers 50 in 3 mit
dem kombinierten Multiplizierer-Addierer 5 (1)
des Stands der Technik wird der kombinierte Multiplizierer-Addierer 50 in Zeitgebungsabschnitte aufgetrennt
oder unterteilt, die Logikoperationen umfassen, die ungefähr während der
gleichen Taktperiode auftreten. Im wesentlichen entspricht jeder
der Zeitgebungsabschnitte einer oder mehrerer logischer Gateverzögerungen.
Wie aus 3 ersichtlich, ist der kombinierte
FP-Multiplizierer-Addierer 50 in fünf Taktperioden aufgetrennt
oder aufgeteilt. In den Fällen,
in denen eine Mehrzahl von Logik innerhalb der gleichen Taktperiode
stattfindet, werden die Logikoperationen ungefähr gleichzeitig ausgeführt. Wie durch
Vergleichen der Zeitgebungsabschnitte des Addierers 50 von 3,
der das auswahlbasierte Rundungssystem 20 (2)
verwendet, mit den Zeitgebungsabschnitten des herkömmlichen
kombinierten Multiplizierer-Addierers 5 (1)
ersichtlich ist, ist der kombinierte Multiplizierer-Addierer 50 der vorliegenden
Erfindung viel schneller als der herkömmliche Addierer 5.
In 3 gibt es weniger Zeitgebungsabschnitte als in 1.
In der Tat beträgt
die Geschwindigkeitssteigerung hinsichtlich der Gateverzögerungen
ungefähr
5 bis 6 Gateverzögerungen, was
bei der Prozessorgestaltung wesentlich ist.
-
Wie
in 3 ferner gezeigt, umfaßt der kombinierte Multiplizierer-Addierer 50 einen
Multiplizierer 51, der zwei Zahlen A, B, (jeweils beispielsweise
64 Bits) empfängt
und multipliziert. Die Schiebeeinrichtung 52 schiebt den
Operanden C um einen vorbestimmten Wert, um denselben bezüglich des
mathematischen Produkts von A und B zu normieren, und es dadurch
zu ermöglichen,
daß es
mit dem Produkt von A und B zu einem späteren Zeitpunkt auf geeignete
Weise kombiniert wird.
-
Die
Summe- und Übertragausgangssignale (jeweils
beispielsweise 128 Bits) des Multiplizierers 51 und die
Ausgangssignale der Schiebeeinrichtung 52 werden in den Übertragsicherungsaddierer 53 eingegeben,
dessen Entwicklung und Operation im Stand der Technik gut bekannt
ist. Die Summe- und Übertragdaten
von dem Multiplizierer 51 werden jeweils als Addend und
Summand in den Übertragsicherungsaddierer 53 eingegeben.
Das Eingangssignal von der Schiebeeinrichtung 52 wird angesehen als Übertrageingabe
von einer weniger signifikanten Stufe des kombinierten FP-Multiplizierer-Addierers 50.
Der Übertragsicherungsaddierer 53 erzeugt
ein Summeausgangssignal und ein Übertragausgangssignal.
Sowohl das Summe- als auch das Übertragausgangssignal
werden in einen Übertragausbreitungsaddierer
und einen Führungsbitantizipierer 55 eingegeben.
Der Übertragausbreitungsaddierer 54 kombiniert
die Summe- und Übertragausgangssignale
von dem Übertragsicherungsaddierer 53,
um eine FP-Zahl zu erzeugen, die in die Schiebeeinrichtung 61 eingegeben
wird.
-
Der
Führungsbitantizipierer 55 berechnet
unter anderem eine Schiebezahl, die gleich ist wie die Anzahl der
wesentlichen Bits, die geschoben werden müssen, um die führenden
Nullen in der FP-Zahl, die durch den Übertragsicherungsaddierer 53 erzeugt. wird,
auszulöschen.
Der Führungsbitantizipierer 55 berechnet
die Schiebezahl außerdem
in eine bestimmte Richtung. Dies wird durchgeführt, um die Summe- und Übertragausgangssignale
des Übertragsicherungsaddierers 53 für Addier-,
Subtrahier-, Multiplizier- oder Dividieroperationen zu normieren. Ein
Beispiel von einer der vielen Architekturen für den Führungsbitantizipierer 15 in 13 ist in dem US-Patent Nr. 5,798,952
an Miller u. a., das hierin durch Bezugnahme aufgenommen ist, beschrieben.
-
Der
Führungsbitantizipierer 55 kann
außerdem
berechnen, wo sich das höchstwertigste
Bit (MSB = most significant bit) in der FP-Zahl befindet, die durch
den Übertragsicherungsaddierer 53 erzeugt
wird. So bald die Position des MSB bestimmt ist, ist es möglich, die
Position des LSB auf ein Bit zu schätzen, da die Bitbreite der
Vorrichtung bekannt ist und da es eine bekannte Beziehung zwischen
der nicht-inkrementierten
Zahl und der inkrementierten Zahl (die inkrementierte Zahl = nicht-inkrementierte Zahl
oder nicht-inkrementierte
Zahl ± 1)
gibt. Die Bitbreite der Vorrichtung kann jede passende Größe n haben,
beispielsweise 4, 8, 16, 32, 64, 128, 256, 512, usw. Bei den bevorzugten
Ausfüh rungsbeispielen
beträgt
die Bitbreite 64 Bits. In den bevorzugten Ausführungsbeispielen wird die Schiebung
auf (n-1) oder 63 Bits
geschätzt,
und diese Schiebung ist exakt oder bis auf ein Bit exakt.
-
Sobald
die Position des LSB geschätzt
wurde, ist es durch Addieren von 1 zu der geschätzten LSB der FP-Zahl dann
möglich,
eine ungefähre
inkrementierte FP-Zahl zu berechnen. Wie in 4A dargestellt,
nimmt man als Beispiel an, daß die
Zahl SUM vom Übertragsicherungsaddierer 53 ausgegeben
wird und die folgende binäre
Sequenz zeigt: ...001011 .... Um die Zahl zu runden, wird sie um
1 in der LSB Position inkrementiert. Daher wird ein inkrementiertes
Wort INC = ...000010... addiert mit der SUM = ...001011 ... um die
inkrementierte FP-Zahl SUM + 1 = ...00110x ... zu erzeugen, wobei
x entweder 1 oder 0 sein könnte.
-
Die
LSB-Position ist jedoch lediglich eine Schätzung. Wie in 4B dargestellt,
kann die geschätzte
LSB-Position exakt sein oder um ein Bit geschoben, und daher kann
es bezüglich
der inkrementierten Zahl SUM + 1 um Δ = 1, 2, 3, oder 4 geschoben
sein.
-
Gemäß erneuter
Bezugnahme auf 3, sendet den Führungsbitantizipierer 55 ein
LBA-Wort mit einem Bit mit einem binären logischen Zustand 1, an
den Übertragausbreitungsaddierer 56,
der um 63 Bits von der Bitposition der identifizierten MSB der Zahl
vom Übertragsicherungsaddierer 53 nach rechts
geschoben wird. Vorzugsweise ist die Schiebung implizit ausgeführt durch
eine fest verdrahtete Verbindung (d. h. Ausgangsbitverbindung j
der Vorgriffseinrichtung 55, verbunden mit der Eingangsbitverbindung
j-63 des Addierers 56), zwischen dem Führungsbitantizipierer 55 und
dem Übertragausbreitungsaddierer 56.
-
Der Übertragausbreitungsaddierer 56 berechnet
eine ungefähre
inkrementierte Version der FP-Zahl, die von dem Übertragsicherungsaddierer 53 erzeugt
wird durch Addieren der 1 von dem Führungsbitantizipierer 55 mit
den Summe- und Übertragausgängen von
dem Übertragsicherungsaddierer 53.
Dies schafft ein Aufrunden oder Inkrementieren der FP-Zahl.
-
Sowohl
die nicht-inkrementierte als auch die ungefähre inkrementierte FP-Zahl
werden jeweils für Normierung
in die Schiebeeinrichtung 61 und 62 eingegeben.
Die durch den Führungsbitantizipierer 55 berechnete
Schiebezahl ist gleich zu den Bits, die geschoben werden müssen, um
die führenden
Nullen in der FP-Zahl, die durch den Übertragsicherungsaddierer 53 erzeugt
wird, zu eliminieren. Die Schiebeeinrichtungen 61, 62 normieren
die jeweiligen nicht-inkrementierten
und ungefähren
inkrementierten FP-Zahlen durch Schieben der FP-Zahlen nach rechts
oder links um die Schiebezahl. Die Schiebevorgänge normieren die Zahlen auf
innerhalb ein Bit-Genauigkeit.
-
Die
normierte nicht-inkrementierte FP-Zahl von der Schiebeeinrichtung 61 wird
danach in einen MUX 65 eingegeben.
-
Die
normierte ungefähre
inkrementierte FP-Zahl von der Schiebeeinrichtung 62 hat
ihre beiden LSBs abgekürzt,
da diese beiden Bits als Ergebnis der vorher beschrieben LSB-Schätzung (und
der ungefähren
Inkrementierung) ungenau sein können, und
die abgekürzte
Zahl an den LSB-Befestigungsmechanismus 64 weitergeleitet
wird.
-
Der
LSB-Befestigungsmechanismus 64 ist wie in 4C gezeigt
aufgebaut. Der LSB-Befestigungsmechanismus 64 umfaßt einen
Multiplexer (MUX) 66, der durch ein ausgewähltes Signal
gesteuert wird, das durch eine Korrektorlogik 67 erzeugt wird.
Die Korrektorlogik 67 ist konfiguriert, um die Logik zu
implementieren, die durch die Wahrheitstabelle von 4D definiert
wird. Wie in 4C gezeigt, empfängt der
MUX 66 die Teil-SUM [63:2] der normierten nicht-inkrementierten FP-Zahl-SUM
und die Teil-SUM + Δ[63:2]
der ungefähren
normierten inkrementierten FP-Zahl SUM + Δ und gibt die Teil-SUM + 1[63:2]
der genauen normierten inkre mentierten FP-Zahl SUM + 1 aus. Die
Korrektorlogik 67 empfängt
die Teil-SUM [1:0] und gibt die SUM + 1[1:0] aus. Schließlich wird
SUM + 1[63:2] mit SUM + 1[1:0] kombiniert, um eine genaue normierte
inkrementierte FP-Zahl SUM + 1[63:0] für die Ausgabe an den MUX 65 zu
erhalten (3).
-
Daher
wirken der LSB-Befestigungsmechanismus 64 und die Korrektorlogik 67 wie
folgt, unter Bezugnahme sowohl auf 4C als
auch 4D. Falls zunächst
die beiden LSB oder SUM [1:0] der normierten nicht-inkrementierten
FP-Zahl SUM jeweils „00" sind, dann gibt
die Korrektorlogik 67 ein Auswahlsignal von „0" an den MUX 66 aus,
wodurch bewirkt wird, daß eine
Auswahl von SUM [63:2] als SUM + 1[63:2] ausgegeben wird, und außerdem gibt die
Korrektorlogik 67 ebenfalls „01" als die Bits SUM + 1[1:0] aus, die
mit SUM + 1[63:2] kombiniert werden, um SUM + 1[63:0] zu erzeugen.
Falls zweitens die beiden LSB oder SUM [1:0] der normierten nicht-inkrementierten
FP-Zahl SUM jeweils „01" sind, dann gibt
die Korrektorlogik 67 ein Auswahlsignal von „0" an den MUX 66 aus,
wodurch bewirkt wird, daß eine
Auswahl von SUM [63:2] als SUM + 1[63:2] ausgegeben wird, und ferner
gibt die Korrektorlogik 67 außerdem „10" als die Bits SUM + 1[1:0] aus, die
mit SUM + 1[63:2] kombiniert werden, um SUM + 1[63:0] zu erzeugen.
Falls drittens die beiden LSB oder SUM [1:0] der normierten nicht-inkrementierten
FP-Zahl SUM jeweils „10" sind, dann gibt
die Korrektorlogik 67 ein Auswahlsignal von „0" an den MUX 66 aus,
wodurch bewirkt wird, daß eine
Auswahl von SUM [63:2] als SUM + 1[63:2] ausgegeben wird, und ferner
gibt die Korrektorlogik 67 außerdem „11" als die Bits SUM +
1 [1:0] aus, die mit SUM + 1 [63:2] kombiniert werden, um SUM +
1[63:0] zu erzeugen. Falls schließlich die beiden LSB oder SUM
[1:0] der normierten nicht-inkrementierten FP-Zahl SUM jeweils „11" sind, dann gibt
die Korrektorlogik 67 ein Auswahlsignal von „0" an den MUX 66 aus,
wodurch bewirkt wird, daß eine
Auswahl von SUM [63:2] als SUM + 1[63:2] ausgegeben wird, und ferner
gibt die Korrektorlogik 67 ebenfalls „00" als die Bits SUM +1[1:0] aus, die mit SUM
+ 1[63:2] kombiniert werden, um SUM + 1[63:0] zu erzeugen.
-
Bei
erneuter Bezugnahme auf 3, wird die sich ergebende normierte
nicht-inkrementierte FP-Zahl SUM, die durch Schiebeeinrichtung 61 erzeugt
wird, in eine Rundungslogik 63 eingegeben. Die Rundungslogik 63 bestimmt,
ob die normierte, nicht-inkrementierte Zahl, die von der Schiebeeinrichtung 16 ausgegeben
wird, Rundung erfordert, und legt den Rundungstyp (beispielsweise
Runden auf Null, Runden auf den nächstliegenden Wert, Runden
auf negative Unendlichkeit -∞,
und Runden auf positive Unendlichkeit +∞) fest, basierend auf der
Untersuchung der Schutz-, Rundungs- und Haftbits, die mit dem Ausgangssignal
von der Schiebeeinrichtung 61 verbunden sind. Die Rundungslogik 63 weist
den MUX 65 an, entweder die normierte nicht-inkrementierte
FP-Zahl SUM oder die normierte inkrementierte FP-Zahl SUM + 1 auszuwählen, um
von dem kombinierten FP-Multiplizierer-Addierer 50 als
Ergebnis R ausgegeben zu werden.
-
5 ist
ein Blockdiagramm eines zweiten Ausführungsbeispiels eines kombinierten
FP-Multiplizierer-Addierers, der allgemein mit Bezugszeichen 70 bezeichnet
ist und der das auswahlbasierte Rundungssystem 20 (2)
und im wesentlichen das zeitlich selbstgesteuerte Übertragungssystem 100 der
vorliegenden Erfindung verwendet. Der kombinierte FP-Multiplizierer-Addierer 70 ist
in Zeitgebungsabschnitte aufgetrennt oder aufgeteilt, die Logikoperationen
umfassen, die ungefähr
während
der gleichen Taktperiode auftreten. Wie aus 5 ersichtlich,
ist der kombinierte FP-Multiplizierer-Addierer 70 in
fünf Taktperioden
aufgeteilt, was den Addierer 70 schneller macht als den
herkömmlichen
kombinierten Multiplizierer-Addierer 5 (1),
und ungefähr
gleich schnell wie das erste Ausführungsbeispiel des kombinierten
Multiplizierer-Addierers (3). Das
zweite Ausführungsbeispiel
hat jedoch den wesentlichen Vorteil von weniger Hardware als das
erste Ausführungsbeispiel,
wie es hier nachfolgend beschrieben wird.
-
Die
Funktionalität
des Multiplizierers 71, der Schiebeeinrichtung 72,
des Übertragsicherungsaddierers 73,
des Übertragausbreitungsaddierers 74, des
Führungsbitantizipierers 75 und
des Übertragausbreitungsaddierers 76 von 5 sind
alle im wesentlichen gleich wie die entsprechenden Elemente 51–56,
die oben in. Bezug auf das erste Ausführungsbeispiel von 3 beschrieben
werden. Der Hauptunterschied zwischen dem ersten Ausführungsbeispiel
und dem zweiten Ausführungsbeispiel liegt
darin, daß das
zweite Ausführungsbeispiel
ein zeitlich selbstgesteuertes Übertragungssystem 100 verwendet,
das sowohl die inkrementierten als auch die nicht-inkrementierten
FP-Zahlen in einem gemeinsam verwendeten Übertragungsweg normiert, der
eine normierende Schiebeeinrichtung 82 umfaßt, und
der Weg ist selbstgetaktet. Folglich spart das zweite Ausführungsbeispiel
die Kosten einer Schiebeeinrichtung ein.
-
Das
zeitlich selbstgesteuerte Übertragungssystem 100 des
kombinierten Multiplizierer-Addierers 70 gemäß dem zweiten
Ausführungsbeispiel
verwendet normalerweise folgendes: einen Codierer 80, eine
Schiebeeinrichtung 82 und einen Decodierer 90. Der
Codierer 80 verschachtelt im wesentlichen die nicht-inkrementierte
FP-Zahl SUM und die ungefähre inkrementierte
FP-Zahl SUM + Δ entlang
dem gemeinsamen Weg 81. Die geteilte Schiebeeinrichtung 82 ist
mit dem Codierer 80 verbunden, zum aufeinanderfolgenden
Empfangen der nicht-inkrementierten FP-Zahl
SUM und der ungefähren
inkrementierten FP-Zahl SUM + Δ,
und zum aufeinanderfolgenden Normieren derselben. Der Decoder 90 entschachtelt im
wesentlichen die normierten inkrementierten und nicht-inkrementierten FP-Zahlen
von dem gemeinsamen Verarbeitungsweg.
-
Die
Schiebeeinrichtung 82 schiebt die codierten Daten um die
erforderlichen Bits nach links oder die erforderlichen Bits nach
rechts. Die Schiebeeinrichtung 82 wird durch das Eingangssignal 78 von dem
Führungsbitantizipierer 75 über die
erforderliche Zahl von Bits, um die die codierten Zahlen verschoben
werden, und die Richtung der Schiebung angewiesen. Die normierte
codierte Zahl, die von der Schiebeeinrichtung 82 ausgegeben
wird, wird dann in den Decodierer 90 eingegeben.
-
Die
Funktionalität
der Rundungslogik 93, des LSB-Befestigungsmechanismus 94 und
des MUX 95 sind im wesentlichen gleich wie die entsprechenden Elemente 63–65,
die mit Bezugnahme auf das erste Ausführungsbeispiel von 3 oben
beschrieben sind.
-
Die
Architektur, Funktionalität
und der Betrieb des zeitlich selbstgesteuerten Übertragungssystems 100 von 5 werden
nun detailliert beschrieben. Das zeitlich selbstgesteuerte Übertragungssystem
und Verfahren der vorliegenden Erfindung können in Verbindung mit jedem
Gerät,
Mechanismus oder Vorrichtung implementiert werden, beispielsweise,
aber nicht begrenzt auf, eine Schiebeeinrichtung, Bus-Netzwerk,
MUX, Puffer, usw., bei denen es im wesentlichen eine Eins-zu-eins-Entsprechung
zwischen Eingangscodierung und Ausgangscodierung der verarbeiteten
Daten gibt. Darüber
hinaus kann das zeitlich selbstgesteuerte Übertragungssystem 100 in
jeden Prozessor (z. B. einen chipbasierten Mikroprozessor, usw.)
oder eine andere geeignete digitale Schaltung implementiert werden,
von denen wiederum jede in einen beliebigen Computer (z. B. einen Personalcomputer,
Arbeitsstation, usw.) oder in ein anderes geeignetes digitales Gerät implementiert werden
kann.
-
In 6 wird
ein Beispiel (eine nicht-beschränkende
Implementierung, auch andere sind möglich) einer möglichen
und bevorzugten Systemarchitektur für das zeitlich selbstgesteuerte Übertragungssystem 100 (5)
dargestellt. Wie in 6 gezeigt, kann das zeitlich
selbstgesteuerte Übertragungssystem
wie folgt aufgebaut sein.
-
Im
allgemeinen codieren bei dem bevorzugten Ausführungsbeispiel die Codierer 101A, 101B erste
Daten Xn ...X1X0 bzw. zweite Daten Yn ...Y1Y0 unter Verwendung
einer zeitlich selbstgesteuerten dynamischen (vorgeladenen) Logik,
wie beispielsweise, aber nicht beschränkt auf, eine dynamischer Mausefallelogik
oder dynamischer Dominologik. In Zusammenhang mit diesem Dokument
bedeutet „zeitlich
selbstgesteuert",
daß Logikauswertungen hinsichtlich
der (unabhängig
von der) Zeitgebung asynchron auftreten. Der logische Zustand jedes
Bit jedes eingegebenen Worts X, Y wird gemeinsam durch H-, L-Verbindungen
definiert, die einem logisch hohen Wert (1) bzw. einem logisch tiefen
Wert (0) entsprechen. Darüber
hinaus ist ein monotoner Fortschritt implementiert, so daß der logische
Zustand jedes Bits definiert wird, ob es einen niedrig (0) zu hoch (1) Übergang
auf j oder der H- oder L-Verbindungen gab oder nicht. Es ist zu
beachten, daß das
Codierschema mehr sein kann als ein Zweifachführungsschema, wie z. B. ein
n-Führungscodierschema,
wobei n 3 oder höher
ist.
-
Die
Codierer 101a, 101b definieren die Codierung der
Eingaben (7C) neu bzw. um durch Übersetzen
derselben von einem 2-Bit/4-Leitungscodierschema, bei dem jedes
Bit durch zwei Leitungen dadurch definiert ist, ob eine der beiden
von niedrig zu hoch übergeht,
in ein 2-Bit/4-Leitungscodierschema,
bei dem zwei Bits gemeinsam dadurch definiert werden, ob eine der
Leitungen von niedrig zu hoch übergeht.
Als Beispiel ist der logische Zustand des Bits X0 des
ersten Operanden anfänglich
durch den Satz von X0(H) und X0(L)
definiert, und der logische Zustand des benachbarten Bits X1 in dem selben Operanden ist durch den Satz
von X1(H) und X1(L) definiert.
Nach der Codierung durch die Codierer 101A werden sowohl
X1 als auch X0 durch den Satz von logischen Werten E3,
D2, E1, E0 definiert, der auf der Verbindung 102A übertragen
wird. Es ist darauf hinzuweisen, daß die vorhergehende Übersetzung bei
der Codierung auf allen 64 Bits des Operanden X als auch des Operanden
Y durchgeführt
wird.
-
Die
Codierer 101A, 101B sind beide periodisch vorgeladen
durch Zeitgeber 109, der entworfen ist, um die Dynamiklogik
während
einer halben Taktperiode (Zyklus) vorzuladen, und Logikauswertung (und
-entladung) während
der anderen halben Logikperiode zu erlauben. Das Zeitgebungssignal
zum Treiben des Codierers 101B ist durch die Verzögerungsschaltung 108 gelegt.
Diese Verzögerung
ermöglicht,
daß der
erste Datenwert durch den Codierer 101A codiert wird. Die
Codierung des ersten Datenwerts X findet vor der Codierung des darauffolgenden
zweiten Datenwerts Y durch Codierer 101B statt. Diese Verzögerung des
Treibens des zweiten Datenwerts Y durch Codierer 101B ermöglicht es dem
Codierer 101A, den ersten Datenwert X zuerst auf die Schnittstelle 102A zu
treiben. Die Verwendung des Codierverfahrens der vorliegenden Erfindung
ermöglicht
es einer der vier Ausgangsleitungen 102A, einen codierten
Wert zu übertragen,
der den ersten Datenwert X, der in den Codierer 101A eingegeben
wird, repräsentiert.
Danach treibt der Codierer 101B den zweiten Datenwert Y,
unter Verwendung des Codierschemas der vorliegenden Erfindung auf eine
der vier Leitungen 102B. Dies ermöglicht es einer der verbleibenden
drei Ausgangsleitungen 102B, den zweiten Datenwert Y zu übertragen,
der in den Codierer 101B eingegeben wird.
-
Gemäß einem
anderen Merkmal des Codierschemas ist zu beachten, daß die Eingangsleitungen Y1(H), Y1(L), die
zu dem Eingangsbit Y1 des zweiten Operanden
Y gehören,
absichtlich umgekehrt werden im Vergleich zu denen, die zu dem Eingangsbit X1 des ersten Operanden X gehören. Diese
Umkehrung stellt sicher, daß die
Codierung des ersten Datenwerts X auf der Reihe von Leitungen 104 (E3, E2, E1,
E0) nicht mit der Codierung des zweiten
Datenwerts Y auf der Reihe von Leitungen 104 zusammen fällt. Da
es eine bekannte mathematische Beziehung zwischen den ersten und
zweiten Datenwerten X, Y (X = Y oder X = Y ± 1) gibt, führt dann
den Austausch der Leitungen zu einem zweiten Datenwert Y (und geschobenen
zweiten Datenwert), der mindestens zwei in der Zahl entfernt ist
von dem ersten Datenwert X (und geschobenen ersten Datenwert), und dementsprechend
gibt es keine Überlappung
bei einem Niedrig-zu-Hoch-Übergang
(0 zu 1) auf dem Satz von monotonen Leitungen E3,
E2, E1, E0, wenn sie letztendlich an einer Nach-Schiebungseinrichtungs-
Latchschaltung 105 zwischengespeichert werden. Dieser Signalaustausch
wird später
durch die Originalcodierung durch den Decodierer 107B zurückgekehrt,
der den geschobenen zweiten Datenwert Y ausgibt. Codierer 101A, 101B werden
unter Bezugnahme auf 7A–7C später in diesem Dokument
detailliert beschrieben.
-
Ein
Mischlogikblock 103 empfängt sowohl den ersten als auch
den zweiten codierten Wert aufeinanderfolgend. Der Mischlogikblock 103 umfaßt eine
Mehrzahl von „OR" Logikgattern, die
den ersten und zweiten codierten Wert zeitlich beabstandet, entlang
des gemeinsamen Übertragungswegs,
der vier monotone Leitungen 104 (E3,
E2, E1, E0) enthält,
an die Schiebeeinrichtung 82 übertragen. Der Mischlogikblock 103 überträgt im wesentlichen
zwei Bits codierte Daten, zeitlich beabstandet, auf den vier Leitungen 104 (d.
h. zwei derselben werden von 0 auf 1 übergehen) an die Schiebeeinrichtung 82.
Die Übertragung
hat einen zeitlich selbstgesteuerten monotonen Charakter. Das zeitlich
selbstgesteuerte Verfahren reduziert die Anzahl der Leitungen, die
erforderlich sind, um den ersten und den zweiten codierten Wert
zu übertragen,
und wird bei der Manipulation der ersten und zweiten Daten X, Y
schneller, so daß beide
Datenoperanden von der gleichen Hardware bearbeitet werden können.
-
Der
erste und der zweite Datenwert X, Y werden durch die Schiebeeinrichtung 82 aufeinanderfolgend,
zeitlich beabstandet, und auf eine zeitlich selbstgesteuerte Weise übertragen,
die keinen Zeitgeber zum Synchronisieren der Datenübertragung erfordert,
oder sich auf einen verläßt. Das
Ergebnis der Schiebeoperation sind ein geschobener erster und zweiter
Datenwert X, Y mit Codierungen, die sich gegenseitig nicht beeinträchtigen.
Ein Beispiel einer spe zifischen Implementierung der Schiebeeinrichtung 82 wird
mit Bezugnahme auf 8 später in diesem Dokument detailliert
beschrieben.
-
Das
Datenausgangssignal von der Schiebeeinrichtung 82 wird
in eine zeitlich selbstgesteuerte Latchschaltung 105, und
parallel dazu in eine Trennungslogik 106 eingegeben. Die
zeitlich selbstgesteuerte Latchschaltung 105 erfaßt den geschobenen
ersten Datenwert X und erfaßt
den geschobenen zweiten Datenwert Y nicht. Dies ermöglicht eine
vollständige
Trennung der Werte X, Y. Die Architektur und der Betrieb der zeitlich
selbstgesteuerten Latchschaltung 105 werden mit Bezugnahme
auf 9 später
in diesem Dokument detailliert beschrieben.
-
Der
erste codierte Datenwert X wird auf zeitlich selbstgesteuerte Weise
von der zeitlich selbstgesteuerten Latchschaltung 105 zu
dem Decodierer 107A übertragen.
Der Decodierer 107A decodiert den geschobenen ersten codierten
Datenwert X von 4-zu-1 Codierung (4 Leitungen definieren
einen 2-Bit-Operanden) in die originale 2-zu-1 Codierung (2 Leitungen
definieren einen 1-Bit-Operanden), das den ersten Daten X zur weiteren
nachfolgenden Verarbeitung zugehört.
-
Die
Trennungslogik 106 ist entwickelt, um den geschobenen zweiten
Datenwert Y von dem geschobenen ersten Datenwert X auszufiltern.
Die Trennungslogik 106 empfängt den ersten und den zweiten
codierten Wert X, Y von dem Ausgangssignal der Schiebeeinrichtung 82 und
dem Ausgangssignal der zeitlich selbstgesteuerten Latchschaltung 105,
kehrt die Latchschaltungsausgangssignale um, und leitet die Logiksignale,
wie in 6 gezeigt, von entsprechenden Leitungen durch
jeweilige AND- (UND-)Logikgatter. Die Trennung des geschobenen zweiten
Datenwerts Y von dem ersten wird erreicht durch Verwenden des Ausgangssignals
der zeitlich selbstgesteuerten Latchschaltung 105 als eine
Bitmaske zum Eliminieren des ersten codierten Datenwerts X, um zu
bestimmen, wann der codierte zweite codierte Datenwert Y auf einer
zweiten Leitung aktiviert ist.
-
Schließlich wird
der Decodierer 107B mit der Trennungslogik 106 wie
gezeigt verbunden, um den geschobenen zweiten Datenwert Y zu empfangen und
von 4-zu-1 Codierung in die originale 2-zu-1 Codierung zu codieren,
das zum zweiten Datenwert Y für
weitere nachfolgende Verarbeitung zugehört. Der Decodierer 107B kehrt
außerdem
Y1(H) und Y1(L) um,
so daß die
Originalcodierung für
die spätere
Verarbeitung dieses Operanden wiederhergestellt ist.
-
In 7A wird
ein mögliches
Beispiel der Architektur für
jeden der Codierer 101A, 101B (6) dargestellt,
das im bevorzugten Ausführungsbeispiel identisch
ist. Der Codierer 101 (101A und/oder 101B) akzeptiert
zwei Bits B1, B0 (entweder
X1, X0 oder Y1, Y0) von Daten
des Operanden (entweder X oder Y). Andere Codierer (der Einfachheit
halber nicht gezeigt) codieren die verbleibenden Bits des Operanden
(entweder X oder Y) auf eine Weise, die gleich ist wie diejenige,
die bezüglich
der Bits B1, B0 gezeigt und
beschrieben wurde. Diese zwei Bits B1, B0 von Daten werden im Codierer 101 codiert,
um einen und zwar nur einen Draht in der Gruppe von Leitungen 121–124 auszulösen. Dies
wird erreicht durch Verwenden einer Schaltungskonfiguration wie
derjenigen, die in 5A dargestellt
ist. Die Logikelemente 113 bis 116 erzeugen eine
Schaltung, die gegenseitig ausschließlich ist und werden einen
und zwar nur einen Draht in der Gruppe der codierten Datendrähte 121–124 auslösen, für jede Kombination
von eingegebenen Bits B1, B0.
-
7B zeigt
eine spezifische Implementierung des Codierers 101, der
entworfen ist, um eine zeitlich selbstgesteuerte monotone Progression
bzw. Reihe zu implementieren. Die Signale, die den Bits B1(H), B1(L), B0(H), B0(L) entsprechen,
werden zu Leiterlogiktransistoren 126A–126H gesendet, die vorzugsweise
n-Typ-Metalloxidhalbleiter-Feldeffekttransistoren
(gut bekannt als MOSFETs) sind, de ren jeweilige Gates wie gezeigt
durch die Eingangssignale betrieben werden. Die Transistoren 128A–128D, die
vorzugsweise p-Typ-MOSFETs (gut bekannt als PMOSFETs) sind, werden
verwendet, um den Vorladungsknoten unter der Steuerung des Taktsignals CK
(clock signal) mit der Spannung VDD vorzuladen. Die Codierer 101A, 101B werden
beide periodisch vorgeladen durch den Zeitgeber 109 (6)
der entworfen ist, um die dynamische Logik während einer halben Taktperiode
(Zyklus) vorzuladen, und um während
der anderen halben Logikperiode eine Logikauswertung (und Entladung)
zuzulassen. Komplementäre
MOSFET (jeder umfaßt
sowohl einen PMOSFET zum Hochziehen und einen NMOSFET zum Runterziehen)
-Invertierer 129A–129D werden durch
die Spannung VDD vorgespannt und durch ihren jeweiligen Vorladungsknoten
aktiviert. Folglich werden, wenn der Vorladungsknoten vorgeladen wird,
die Ausgangssignale E3, E2,
E1, E0 alle niedrig getrieben,
während
die CMOSFETs ihre jeweiligen Eingangssignale wirksam umkehren. Sobald
eines oder zwei der Bits/Leitungen B1(H),
B1(L), B0(H), B0(L), von niedrig auf hoch übergeht,
wird einer der Vorladungsknoten runtergezogen (geerdet) und darauffolgend
wird eines der Ausgangssignale E3, E2, E1, E0 von
niedrig auf hoch über
gehen, um die Werte des Satzes von Bits/Leitungen B1(H),
B1(L), B0(H), B0(L) wesentlich neu definiert.
-
In 5C ist eine Logikwahrheitstabelle dargestellt,
die ein Beispiel des statischen Codierprozesses im Zusammenhang
mit dem Codierer 101 zeigt. Wie aus der Wahrheitstabelle
ersichtlich, sind die Bits B1, B0 durch den Satz von Bits/Leitungen B1(H), B1(L), B0(H), B0(L) definiert.
Während
der Codierung werden diese Bits neu definiert durch Übersetzen
derselben von einem 2-Bit/4-Leitungscodierschema, bei dem jedes
Bit ist durch zwei Leitungen definiert ist und dadurch, ob eines
derselben von niedrig auf hoch übergeht,
zu einem 2-Bit/4-Leitungscodierschema, bei dem zwei Bits gemeinsam
dadurch definiert werden, ob eine der Leitungen von niedrig auf
hoch übergeht.
Als Beispiel wird der logische Zustand des Bits X0 des
ersten Operanden anfäng lich
durch den Satz von X0 (H) und X0 (L)
definiert, und der logische Zustand seines benachbarten Bits X1 in der gleichen Operande ist bestimmt durch den
Satz von X1(H) und X1(L).
Nach der Codierung durch Codieren 101A, werden sowohl X1
als auch X0 durch den Satz von logischen Werten E3,
E2, E1, E0 definiert.
-
7D ist
eine Logikwahrheitstabelle, die ein Beispiel des dynamischen Codierprozesses zeigt,
der durch die Kombination der Codieren 101A, 101B implementiert
wird, wenn dieselben zwei Bits von jedem Operanden X, Y auf den
gleichen Satz von vier Bits/Leitungen E3,
E2, E1, E0 codieren. Die ersten zwei Spalten zeigen
die Originalcodierung von X, Y und die letzten zwei Spalten zeigen
jeweils die Neucodierung von X, Y. Es ist zu beachten, daß die Neucodierung
der X Bits zuerst auftritt, und dann die Neucodierung der Y Bits
danach auftritt. Es ist ferner zu beachten daß aufgrund des Verbindungsschalters
an dem Eingangssignal zu dem Codieren 101B, der zu Y Bits
gehört,
es keine Überlappung
von Einsen bei der Codierung von E3, E2, E1, E0 gibt,
für Fälle, bei
denen X1X0 und Y1Y0 die gleiche Codierung
aufweisen. Beispielsweise nehme man den Fall an, wo X1X0 und Y1Y0 beide „00" sind, und ersterer auf „0001" abgebildet ist,
dann wird letzteres auf „0100" abgebildet, und gemeinsam
werden sie auf „0101" abgebildet. Es ist zu
beachten daß „DC" in 7D einen
unbeachtlichen Zustand („don't care condition") bedeutet (und nicht
unterstützten
Codierungen entspricht, die nicht innerhalb der mathematischen Beziehung
der Operandenpaare liegen).
-
In 8 ist
ein mögliches
Beispiel einer Schiebeeinrichtung 82 dargestellt. Diese
Schiebeeinrichtung 82 wird im folgenden öffentlich
erhältlichen Artikel
detailliert beschrieben: Craig Heikes und Glenn Colon-Bonet, „A Dual
Floating Point Coprocessor With An FMAC Architecture", 1996 IEEE International
Solid State Circuits Conference, S. 254-255 (0-7803-3136-2/96). Der Einfachheit
halber wird nur eine kurze Erklärung
dieser Entwicklung hierin später
aufgeführt.
Viele andere Schiebeeinrichtungsgestaltungen sind möglich.
-
Die
Gestaltung umfaßt
eine hierarchische Anordnung von Multiplexern zum wesentlichen Ausführen jeder
gewünschten
Schiebung in den Daten (erste Daten X und zweite Daten Y). Codierer/Treiber 131A–131G empfangen
Daten von den Gruppen von Codierern 101 und senden die
Daten zu den Multiplexern 133. Die Multiplexer 133 schieben
die Daten um bis zu 16 Bits nach links, oder um bis zu 16 Bits nach
rechts. Die Multiplexer 133 werden durch Eingang 123 (von
oder erhalten jeweils von dem Führungsbitantiziperer 55, 94 von 3, 5)
darüber angewiesen,
wie viele Bits zu schieben sind. Die geschobenen Ausgangssignale
der Multiplexer 133 werden dann in den Multiplexer 135 eingegeben.
Die Multiplexer 135 schieben die geschobenen Daten um bis
zu vier Bits nach links oder um bis zu vier Bits nach rechts. Die
Anzahl der zu schiebenden Bits und die Richtung der Schiebung werden
durch das Eingangssignal 134 (von oder erhalten jeweils
von dem Führungsbitantizipierer 55, 94 der 3, 5)
bestimmt. Die Ausgangssignale der Multiplexer 135 werden
in Multiplexer 137 eingegeben. Die Multiplexer 137 schieben
die Daten um bis zu 1 Bit nach links oder bis zu 1 Bit nach rechts
. Die Multiplexer 137 werden angewiesen durch Eingangssignal 136 (von oder
empfangen jeweils von dem Führungsbitantizipierer 55, 94 von
den 3, 5) in der Richtung der 1 Bit-Schiebung. Dieses
Ausgangssignal der Übertragungsleitungenschiebeeinrichtung
wird dann zu den zeitlich selbstgesteuerten Datenlatchschaltungen 105 übertragen.
-
In 9 wird
ein mögliches
Beispiel einer zeitlich selbstgesteuerten Latchschaltung 105 (6)
dargestellt. Die zeitlich selbstgesteuerte Latchschaltung 105 umfaßt Schaltungsanordnung, die
beim Empfangen der ersten geschobenen Daten X auf Logikwegen E3, E2, E1,
E0, weitere Eingangssignale deaktiviert.
In anderen Worten, die selbsttaktende Latchschaltung 105 zwischenspeichert
X, nicht Y, und ermöglicht
daher totale Trennung von X und Y durch angemessene Logik.
-
Die
zeitlich selbstgesteuerte Datenlatchschaltung 105 überträgt den ersten
Datenwert X zum Decodierer 107A zum Decodieren des Werts
X vom 4-Bit/Leitungencodieren zurück zum 2-Bit/Leitungencodieren.
Die zeitlich selbstgesteuerte Datenlatchschaltung 105 führt den
ersten codierten Datenwert X zu der Trennungslogik 106 ( 6)
zu, so daß die Trennungslogik 106 den
zweiten Datenwert Y von dem ersten Datenwert X trennen kann. Wie
oben angemerkt, verwendet die Neuanordnungslogik 106 die ersten
codierten Daten X, die durch die zeitlich selbstgesteuerte Datenlatchschaltung 105 zugeführt werden,
um den ersten Datenwert von den Ausgängen der Schiebeeinrichtung 82 abzudecken,
um den zweiten codierten Datenwert Y zu bestimmen.
-
In
der wie in 9 gezeigten Architektur wird der
Satz von Logikwegen E3, E2,
E1, E0 weitergeleitet zu
der Latchschaltung 105 und wird spezifisch empfangen durch
jeweilige Transistoren 141A–141D, vorzugsweise
NMOSFETs, die verwendet werden, um Zwischenspeichern des zweiten
Datenwerts Y zu verhindern, nachdem der erste Datenwert X bereits zwischengespeichert
wurde. Wie gezeigt, werden sie ausgelöst durch das Ausgangssignal
von einem NOR-Logikgatter 155, das eine logische NOR-Operation
empfängt
und bei dem Ausgangssignal der Latchschaltung 105 durchführt. Entsprechend
geht das Ausgangssignal des OR- (ODER-) Logikgatters 155,
sobald es einen Übergang
an einem der Ausgangssignale gibt, in einen niedrigen Zustand über, und
alle der Transistoren 141A-141D werden ausgeschaltet.
-
Wenn
der erste Datenwert X zu dem Gate übertragen wird, sind die Knoten 146 alle
anfänglich in
einem niedrigen Zustand, sie wurden bereits durch jeweilige Transistoren 143A–143D niedrig
gezogen, die durch das Zeitgebungssignal CK ausgelöst werden.
Die Vorladungsperiode des Zeitsignals CK bewirkt, daß die Knoten
niedrig gezogen werden. Wenn ei ne der Leitungen E3,
E2, E1, E0 von niedrig zu hoch über geht, dann wird dieser
hohe Wert innerhalb der entsprechenden Sätze von Flip-Flop-Umkehren (151a–151a' oder 151b, 151b oder 151c, 151c' oder 151d, 151d') zwischengespeichert.
Ein Satz der Flip-Flop-Invertierer, beispielsweise CMOSFET-Invertierer, ist
verbunden mit jedem Bit-Leitungen E3, E2, E1, E0.
Schließlich
werden die Bits/Leitungen E3, E2,
E1, E0 jeweils durch
Invertierer 153A–153D,
beispielsweise CMOSFET-Invertierer, umgekehrt, und werden schließlich zum
Decodierer 107A weitergeleitet.
-
In 10 wird
ein mögliches
Beispiel eines Decodierers 107 (107A und/oder 107B von 6) dargestellt.
Die Decodierer 107A und 107B sind in den bevorzugten
Ausführungsbeispielen
identisch. Der Decodierer 107 akzeptiert Eingangssignale
E3, E2, E1, E0 von der zeitlich
selbstgesteuerten Latchschaltung 105 oder der Trennungslogik 106,
was jeweils zutreffend ist, und decodiert die 4-Leitungen/1-Bit
Operandencodierung zu 2-Leitungen/1-Bit Operandencodierung. Dies
wird dadurch erreicht, daß,
wie in 10 gezeigt, einfach Signale
durch einen Satz von OR-Logikgattern 161A-161D weitergeleitet
werden. Es versteht sich von selbst, daß auch andere Decodierschemen
möglich
sind.