DE10124351B4 - Verfahren und Vorrichtung zum Verarbeiten zweier Datenoperanden in einem Prozessor - Google Patents

Verfahren und Vorrichtung zum Verarbeiten zweier Datenoperanden in einem Prozessor Download PDF

Info

Publication number
DE10124351B4
DE10124351B4 DE10124351A DE10124351A DE10124351B4 DE 10124351 B4 DE10124351 B4 DE 10124351B4 DE 10124351 A DE10124351 A DE 10124351A DE 10124351 A DE10124351 A DE 10124351A DE 10124351 B4 DE10124351 B4 DE 10124351B4
Authority
DE
Germany
Prior art keywords
data
operand
coding scheme
data operand
path
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.)
Expired - Fee Related
Application number
DE10124351A
Other languages
English (en)
Other versions
DE10124351A1 (de
Inventor
Glenn T. Ft. Collins Colon-Bonet
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hewlett Packard Development Co LP
Original Assignee
Hewlett Packard Development Co LP
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Hewlett Packard Development Co LP filed Critical Hewlett Packard Development Co LP
Publication of DE10124351A1 publication Critical patent/DE10124351A1/de
Application granted granted Critical
Publication of DE10124351B4 publication Critical patent/DE10124351B4/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods 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/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • G06F7/5443Sum of products
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/01Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising
    • G06F5/012Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising in floating-point computations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods 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/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Complex Calculations (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

Verfahren (100) zum Verarbeiten zweier Datenoperanden in einem Prozessor, mit folgenden Schritten:
Empfangen eines ersten Datenoperanden, der durch ein erstes Codierungsschema definiert ist, auf einem ersten Datenpfad;
Empfangen eines zweiten Datenoperanden, der durch das erste Codierungsschema definiert ist, auf einem zweiten Datenpfad;
Umcodieren (101A) des ersten Datenoperanden mit einem zweiten Codierungsschema, um umcodierte erste Daten zu erhalten, und Bereitstellen der umcodierten ersten Daten auf einem dritten Datenpfad (81);
Umcodieren (101B) des zweiten Datenoperanden mit einem dritten Codierungsschema, um umcodierte zweite Daten zu erhalten, und Bereitstellen der umcodierten zweiten Daten auf dem dritten Datenpfad (81), zeitlich versetzt zu dem Bereitstellen der umcodierten ersten Daten,
wobei das Umcodieren des ersten Datenoperanden und das Umcodieren des zweiten Datenoperanden so ausgelegt ist, dass die Codierung der ersten Daten nicht mit der Codierung der zweiten Daten zusammenfällt;
asynchrones aufeinanderfolgendes Verarbeiten (82) der auf dem dritten Datenpfad (81) bereitgestellten Daten,...

Description

  • 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 5156, 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 6365, 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 7A7C 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 121124 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 121124 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 126A126H 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 128A128D, 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 129A129D 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 131A131G 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 141A141D, 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 143A143D 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 (151a151a' 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 153A153D, 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.

Claims (57)

  1. Verfahren (100) zum Verarbeiten zweier Datenoperanden in einem Prozessor, mit folgenden Schritten: Empfangen eines ersten Datenoperanden, der durch ein erstes Codierungsschema definiert ist, auf einem ersten Datenpfad; Empfangen eines zweiten Datenoperanden, der durch das erste Codierungsschema definiert ist, auf einem zweiten Datenpfad; Umcodieren (101A) des ersten Datenoperanden mit einem zweiten Codierungsschema, um umcodierte erste Daten zu erhalten, und Bereitstellen der umcodierten ersten Daten auf einem dritten Datenpfad (81); Umcodieren (101B) des zweiten Datenoperanden mit einem dritten Codierungsschema, um umcodierte zweite Daten zu erhalten, und Bereitstellen der umcodierten zweiten Daten auf dem dritten Datenpfad (81), zeitlich versetzt zu dem Bereitstellen der umcodierten ersten Daten, wobei das Umcodieren des ersten Datenoperanden und das Umcodieren des zweiten Datenoperanden so ausgelegt ist, dass die Codierung der ersten Daten nicht mit der Codierung der zweiten Daten zusammenfällt; asynchrones aufeinanderfolgendes Verarbeiten (82) der auf dem dritten Datenpfad (81) 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; zeitlich selbstgesteuertes Trennen (105, 106) der ersten verarbeiteten Daten und der zweiten verarbeiteten Daten in ein erstes Datenwort und ein zweites Datenwort; Decodieren (107A) des ersten Datenworts, um eine Darstellung des ersten Datenworts in dem ersten Codierungsschema zu erhalten; und Decodieren des zweiten Datenworts (107B), um eine Darstellung des zweiten Datenworts in dem ersten Codierungsschema zu erhalten.
  2. Verfahren gemäß Anspruch 1, bei dem der erste Datenoperand mit, einem ersten 1-aus-4-Codierer (101A) in das zweite Codierungsschema umgesetzt wird, und bei dem der zweite Datenoperand mit einem zweiten 1-aus-4-Codierer (101B) in das dritte Codierungsschema umgesetzt wird, wobei der erste 1-aus-4-Codierer (101A) von seinem Aufbau her gleich dem zweiten 1-aus-4-Codierer (101B) ist und wobei dem zweiten 1-aus-9-Codierer (101B) ein Datenwert des zweiten Datenoperanden invertiert zugeführt wird.
  3. Verfahren gemäß Anspruch 1 oder 2, bei dem das Umcodieren (101B) des zweiten Datenoperanden ein Verknüpfen (103) des umcodierten ersten Datenoperanden und des umcodierten zweiten Datenoperanden zu verknüpften Daten umfasst, und bei dem das Bereitstellen der umcodierten zweiten Daten ein Bereitstellender Verknüpften Daten auf dem dritten Datenpfad (81) zeitlich versetzt zu dem Bereitstellen des umcodierten ersten Datenoperanden umfasst.
  4. Verfahren gemäß Anspruch 1 oder 2, wobei das erste Datenwort ein Ergebnis darstellt, das auf einer Verar beitung des ersten Datenoperanden beruht, und wobei das zweite Datenwort ein Ergebnis darstellt, das auf einer Verarbeitung des zweiten Datenoperanden beruht.
  5. Verfahren gemäß Anspruch 3, bei dem das erste Codierungsschema, das zweite Codierungsschema, das dritte Codierungsschema und der Schritt des Verknüpfens (103) der umcodierten ersten und zweiten Datenoperanden so ausgelegt sind, dass eine monotone Progression auf dem dritten Datenpfad besteht, wobei eine monotone Progression dadurch gekennzeichnet ist, dass eine logische Variable oder ein logisches Signal den logischen Zustand während eines asynchronen Betriebs aus einem Anfangszustand heraus nur höchstens einmal ändert und während eines Rücksetzschritts in den Anfangszustand gebracht wird.
  6. Verfahren gemäß einem der Ansprüche 1 bis 5, bei dem der erste und zweite Datenoperand gleiche oder benachbarte Zahlen darstellen.
  7. Verfahren gemäß einem der Ansprüche 1 bis 6, bei dem das erste Datenwort mit dem zweiten Codierungsschema definiert ist und bei dem das zweite Datenwort mit dem dritten Codierungsschema definiert ist.
  8. Verfahren gemäß einem der Ansprüche 1 bis 7, bei dem das erste Codierungsschema vier mögliche gültige Werte aufweist, die durch zwei logische Variablen dargestellt sind; bei dem das zweite Codierungsschema vier mögliche gültige Werte aufweist, die durch vier logische Variablen dargestellt sind; und bei dem das dritte Codierungsschema vier mögliche gültige Werte aufweist, die durch vier logische Variablen dargestellt sind.
  9. Verfahren gemäß einem der Ansprüche 1 bis 7, bei dem das erste Codierungsschema ein 2-zu-1 Codierungsschema umfasst, wobei ein nach dem ersten Codierungsschema zu codierender gültiger Wert durch eine höherwertige logische Variable und eine niederwertige logische Variable definiert ist, und wobei der höherwertigen logischen Variable zwei zueinander logisch komplementäre Signale zugeordnet sind, deren logischer Zustand von der höherwertigen logischen Variable abhängt, und wobei der niederwertigen logischen Variable zwei zueinander logisch komplementäre Signale zugeordnet sind, deren logischer Zustand von der niederwertigen logischen Variable abhängt; bei dem das zweite Codierungsschema ein erstes 4-zu-1-Codierungsschema umfasst, wobei in Abhängigkeit von einem von vier möglichen nach dem zweiten Codierungsschema zu codierenden gültigen Werten genau eines von vier Signalen in einem aktiven logischen Zustand ist; und bei dem das dritte Codierungsschema ein zweites 4-zu-1-Codierungsschema umfasst, wobei in Abhängigkeit von einem von vier möglichen nach dem dritten Codierungsschema zu codierenden gültigen Werten genau eines von vier Signalen in einem aktiven logischen Zustand ist.
  10. Verfahren gemäß Anspruch 9, bei dem einem Datenwert des ersten Datenoperanden drei gültige und ein ungültiger Datenwert des zweiten Datenoperanden zugeordnet sind, und bei dem das zweite und dritte Codierungsschema so ausgelegt sind, dass dem zu einem vorgegebenen Datenwert des ersten Datenoperanden gehörigen ungültigen Datenwert des zweiten Datenoperanden gemäß dem zweiten 4-zu-1-Codierungsschema eine codierte Darstellung zu geordnet ist, die gleich der dem vorgegebenen Datenwert gemäß dem ersten 4-zu-1-Codierungsschma zugeordneten codierten Darstellung ist, und dass den zu dem vorgegebenen Datenwert des ersten Datenoperanden gehörigen gültigen Datenwerten des zweiten Datenoperanden gemäß dem zweiten 4-zu-1 Codierungsschema codierte Darstellungen zugeordnet sind, die sich von der dem vorgegebenen Datenwert gemäß dem ersten 4-zu-1 Codierungsschema zugeordneten codierten Darstellung unterscheiden.
  11. Verfahren gemäß Anspruch 3, bei dem einem Datenwert des ersten Datenoperanden drei gültige und ein ungültiger Datenwert des zweiten Datenoperanden zugeordnet sind, und bei dem der erste Datenoperand vier mögliche Werte annehmen kann, und bei dem der zweite Datenoperand vier mögliche Werte annehmen kann, wobei das zweite Codierungsschema ausgelegt ist, um den ersten Datenoperanden durch Aktivieren von genau einem von vier Signalen zu codieren, wobei das dritte Codierungsschema ausgelegt ist, um den zweiten Datenoperanden durch Aktivieren von genau einem von vier Signalen zu codieren; und wobei das zweite und dritte Codierungsschema und das Verknüpfen der umcodierten ersten und zweiten Datenoperanden so ausgelegt sind, dass bei Vorliegen eines ersten Datenwerts des ersten Datenoperanden und eines in Verbindung mit dem ersten Datenwert gültigen zweiten Datenwerts des zweiten Datenoperanden genau zwei Signalleitungen des dritten Datenpfades aktiv sind, wenn an diesem die verknüpften Daten anliegen.
  12. Verfahren gemäß Anspruch 3, bei dem das Umcodieren (101A) des ersten Datenoperanden, das Umcodieren (101B) des zweiten Datenoperanden, das zweite Codierungsschema, das dritte Codierungsschema und das Verknüpfen (103) so ausgelegt sind, dass bei Vorliegen eines ersten Datenwerts des ersten Datenoperanden und eines gültigen zweiten Datenwerts des zweiten Datenoperanden, ausgehend von einem Anfangszustand, in dem alle Signale des dritten Datenwegs inaktiv sind, erst ein Signal des dritten Datenwegs aktiv wird und dann, zeitlich verzögert, zusätzlich ein zweites Signal des dritten Datenwegs aktiv wird.
  13. Verfahren gemäß einem der Ansprüche 1 bis 12, bei dem das Trennen (105, 106) der verarbeiteten Daten ein Speichern (105) von ersten verarbeiteten Daten als ein erstes Datenwort, sowie ein Verknüpfen (106) der als erstes Datenwort gespeicherten Daten mit zweiten verarbeiteten Daten umfasst.
  14. Verfahren gemäß einem der Ansprüche 1 bis 13, bei dem das Speichern (105) der ersten verarbeiteten Daten zeitlich selbstgesteuert erfolgt, wobei die Daten gespeichert werden, sobald ausgehend von einem Anfangszustand eine Veränderung der verarbeiteten Daten erfolgt.
  15. Verfahren gemäß Anspruch 3, bei dem das Verknüpfen (103) der umcodierten ersten und zweiten Datenoperanden zu verknüpften Daten ein ODER-Verknüpfen umfasst.
  16. Verfahren gemäß einem der Ansprüche 1 bis 15, bei dem das asynchrone Verarbeiten (82) der auf dem dritten Datenpfad bereitgestellten Daten ein Verschieben umfasst.
  17. Prozessor, der ausgelegt ist, um ein Verfahren gemäß einem der Ansprüche 1 bis 16 zu verwenden.
  18. Vorrichtung (100) zum Verarbeiten zweier Datenoperanden in einem Prozessor, mit folgenden Merkmalen: einer ersten Umcodiereinrichtung (101A), die ausgelegt ist, um einen ersten Datenoperanden, der durch ein erstes Codierungsschema definiert ist, von einem ersten Datenpfad zu empfangen, auf ein zweites Codierungsschema umzucodieren und auf einem dritten Datenpfad zur Verfügung zu stellen; einer zweiten Umcodiereinrichtung (101B), die ausgelegt ist, um einen zweiten Datenoperanden, der durch ds erste Codierungsschema definiert ist, von einem zweiten Datenpfad zu empfangen, auf ein drittes Codierungsschema umzucodieren und auf einem dritten Datenpfad zeitlich versetzt zu dem umcodierten ersten Datenoperanden zur Verfügung zu stellen, wobei die ersten Umcodiereinrichtung und die zweite Umcodiereinrichtung so ausgelegt sind, das die Codierung des ersten Datenoperanden und die Codierung des zweiten Datenoperanden nicht zusammenfallen; einer Verarbeitungseinrichtung (82), die ausgelegt ist, um die auf dem dritten Datenpfad bereitgestellten Daten asynchron zu verarbeiten, um erste verarbeitete Daten, die durch eine Verarbeitung des umcodierten ersten Datenoperanden gebildet sind, und zweite verarbeitete Daten, die durch eine Verarbeitung des umcodierten zweiten Datenoperanden gebildet sind, zu erhalten; einer Trennungseinrichtung (105, 106), die ausgelegt ist, um die ersten und zweiten verarbeiteten Daten zeitlich selbstgesteuert in ein erstes Datenwort und ein zweites Datenwort zu trennen; einer ersten Decoder-Einrichtung (107A), die ausgelegt ist, um aufgrund des ersten Datenworts eine Darstellung des ersten Datenworts in dem ersten Codierungsschema zu erhalten; und einer zweiten Decoder-Einrichtung (107B), die ausgelegt ist, um aufgrund des zweiten Datenworts eine Darstellung des zweiten Datenworts in dem ersten Codierungsschema zu erhalten.
  19. Vorrichtung (100) gemäß Anspruch 18, wobei die erste Umcodiereinrichtung (101A) einen ersten 1-aus-4-Codierer umfasst, wobei die zweite Umcodiereinrichtung (101B) einen zweiten 1-aus-4-Codierer umfasst, wobei der erste 1-aus-4-Codierer von seinem Aufbau her gleich dem zweiten 1-aus-4-Codierer ist, und wobei dem zweiten 1-aus-4-Codierer ein Datenwert des zweiten Datenoperanden invertiert zugeführt wird.
  20. Vorrichtung (100) gemäß Anspruch 18 oder 19, die ferner eine Verknüpfungseinrichtung (103) aufweist, wobei die erste Umcodiereinrichtung (101A), die zweite Umcodiereinrichtung (101B) und die Verknüpfungseinrichtung (103) so ausgelegt sind, dass an den dritten Datenpfad zeitlich versetzt der umcodierte erste Datenoperand und eine Verknüpfung des umcodierten ersten Datenoperanden und des umcodierten zweiten Datenoperanden anliegen.
  21. Vorrichtung (100) gemäß Anspruch 20, bei der die Verarbeitungseinrichtung (82) so ausgelegt ist, dass die ersten verarbeiteten Daten gemäß dem zweiten Codierungsschema codiert sind, und dass die zweiten verarbeiteten Daten gemäß einer Kombination des. ersten und zweiten Codierungsschemas codiert sind.
  22. Vorrichtung (100) gemäß einem der Ansprüche 18 bis 21, die so ausgelegt ist, dass das erste Datenwort ein Ergebnis darstellt, das auf einer Verarbeitung des ersten Datenoperanden beruht, und dass das zweite Datenwort ein Ergebnis darstellt, das auf einer Verarbeitung des zweiten Datenoperanden basiert.
  23. Vorrichtung (100) gemäß Anspruch 20, bei der die erste Umcodiereinrichtung (101A), die zweite Umcodiereinrichtung (101B) und die Verknüpfungseinrichtung (103) so ausgelegt sind, dass eine monotone Progression auf dem dritten Datenpfad besteht, wobei eine monotone Progression dadurch gekennzeichnet ist, dass ein logisches Signal auf dem dritten Datenpfad seinen logischen Zustand während eines asynchronen Betriebs ausgehend von einem Anfangszustand nur höchstens einmal ändert und während eines Rücksetzschritts in den Anfangszustand gebracht wird.
  24. Vorrichtung (100) gemäß einem der Ansprüche 18 bis 23, bei der der erste und zweite Datenoperand gleiche oder benachbarte Zahlen darstellen.
  25. Vorrichtung (100) gemäß einem der Ansprüche 18 bis 24, bei dem das erste Datenwort mit dem zweiten Codierungsschema definiert ist, und bei dem das zweite Datenwort mit dem dritten Codierungsschema definiert ist.
  26. Vorrichtung (100) gemäß einem der Ansprüche 18 bis 25, bei der das erste Codierungsschema vier mögliche gültige Werte aufweist, die durch zwei logische Variablen darstellbar sind, die logischen Signalen zugeordnet werden können; bei der das zweite Codierungsschema vier mögliche gültige Werte aufweist, die durch vier logische Variablen darstellbar sind, die logischen Signale zugeordnet werden können; und bei der das dritte Codierungsschema vier mögliche gültige Werte aufweist, die durch vier logische Variablen darstellbar sind, die logischen Signale zugeordnet werden können.
  27. Vorrichtung (100) gemäß einem der Ansprüche 18 bis 26, bei der das erste Codierungsschema ein 2-zu-1 Codierungsschema umfasst, das dadurch gekennzeichnet ist, dass ein nach dem ersten Codierungsschema zu codierender gültiger Wert durch eine höherwertige logische Variable und eine niederwertige logische Variable definiert ist, wobei der höherwertigen logischen Variable zwei zueinander logisch komplementäre Signale zugeordnet sind, deren logischer Zustand von der höherwertigen logischen Variable abhängt, und dass der niederwertigen logischen Variable zwei zueinander logisch komplementäre Signale zugeordnet sind, deren logischer Zustand von der niederwertigen logischen Variable abhängt; bei der das zweite Codierungsschema ein erstes 4-zu-1-Codierungsschema umfasst, das dadurch gekennzeichnet ist, dass in Abhängigkeit von einem von vier möglichen nach dem zweiten Codierungsschema zu codierenden gültigen Werten genau eines von vier Signalen in einem aktiven logischen Zustand ist; und bei der das dritte Codierungsschema ein zweites 4-zu-1-Codierungsschema umfasst, das dadurch gekennzeichnet ist, dass in Abhängigkeit von einem von vier möglichen nach dem dritten Codierungsschema zu codierenden gültigen Werten genau eines von vier Signalen in einem aktiven logischen Zustand ist.
  28. Vorrichtung (100) gemäß einem der Ansprüche 18 bis 27, bei der einem Datenwert des ersten Datenoperanden drei gültige und ein ungültiger Datenwert des zweiten Datenoperanden zugeordnet sind, und bei der das zweite und dritte Codierungsschema so ausgelegt sind, das dem zu einem vorgegebenen Datenwert des ersten Datenoperanden gehörigen ungültigen Datenwert des zweiten Datenoperanden gemäß dem zweiten 4-zu-1-Codierungsschema eine codierte Darstellung zugeordnet ist, die gleich der dem vorgegebenen Datenwert gemäß dem ersten 4-zu-1-Codierungsschema zugeordneten codierten Darstellung ist.
  29. Vorrichtung (100) gemäß Anspruch 20, bei der einem Datenwert des ersten Datenoperanden drei gültige und ein ungültiger Datenwert des zweiten Datenoperanden zugeordnet sind, bei der der erste Datenoperand vier mögliche Werte annehmen kann, und bei der der zweite Datenoperand vier mögliche Werte annehmen kann, wobei die erste Umcodiereinrichtung (101A) ausgelegt ist, um den ersten Datenoperanden durch Aktivieren von genau einem von vier Signalen, die der Verknüpfungseinrichtung (103) zugeführt werden, zu codieren; wobei die zweite Umcodiereinrichtung (101B) ausgelegt ist, um den zweiten Datenoperanden durch Aktivieren von genau einem von vier Signalen, die der Verknüpfungseinrichtung (103) zugeführt werden, zu codieren; und wobei die erste Umcodiereinrichtung (101A), die zweite Umcodiereinrichtung (101B) und die Verknüpfungseinrichtung (103) so ausgelegt sind, dass bei Vorliegen eines ersten Datenwerts des ersten Datenoperanden und eines in Verbindung mit dem ersten Datenwert gültigen zweiten Datenwerts des zweiten Datenoperanden genau zwei Signalleitungen des dritten Datenpfads aktiv sind.
  30. Vorrichtung (100) gemäß Anspruch 20, bei der die erste Umcodiereinrichtung (101A), die zweite Umcodiereinrichtung (101B) und die Verknüpfungseinrichtung (103) so ausgelegt sind, dass bei Vorliegen eines ersten Datenwerts des ersten Datenoperanden und eines gültigen Datenwerts des zweiten Datenoperanden ausgehend von einem Anfangszustand, in dem alle Signale des dritten Datenwegs inaktiv sind, erst ein Signal des dritten Datenwegs aktiv wird und dann, zeitlich verzögert, zusätzlich ein zweites Signal des drittes Datenwegs aktiv wird.
  31. Vorrichtung (100) gemäß einem der Ansprüche 18 bis 30, bei der die Trennungseinrichtung (105, 106) ausgelegt ist, um erste verarbeitete Daten als ein erstes Datenwort zu speichern und die als erstes Datenwort gespeicherten Daten mit den zweiten verarbeiteten Daten zu verknüpfen, um ein zweites Datenwort zu erhalten.
  32. Vorrichtung gemäß einem der Ansprüche 18 bis 31, bei der die Trennungseinrichtung (105, 106) ausgelegt ist, um die ersten verarbeiteten Daten asynchron zu speichern, wobei die ersten verarbeiteten Daten gespeichert werden, sobald ausgehend von einem Anfangszustand eine Veränderung der von der Trennungseinrichtung (105, 106) von der Verarbeitungseinrichtung (82) empfangenen Daten erfolgt.
  33. Vorrichtung gemäß einem der Ansprüche 18 bis 32, bei der die Verarbeitungseinrichtung (82) eine Schiebeeinrichtung, die ausgelegt ist, um die auf dem dritten Datenpfad bereitgestellten Daten zu verschieben, ein Bus-Netzwerk, ein Multiplexer oder ein Puffer ist.
  34. Vorrichtung gemäß einem der Ansprüche 18 bis 33, bei der die zweite Umcodiereinrichtung (101B) eine Verzögerungseinrichtung (108) aufweist, die so ausgelegt ist, dass ausgehend von einem Anfangszustand der ersten und zweiten Umcodiereinrichtung die erste Umcodiereinrichtung (101A) ein Umcodieren der von dem ersten Datenpfad empfangenen Daten zeitlich früher beginnt als die zweite Umcodiereinrichtung (101B) ein Umcodieren der von dem zweiten Datenpfad empfangenen Daten.
  35. Vorrichtung gemäß einem der Ansprüche 18 bis 34, bei der die Trennungseinrichtung (105, 106) ausgelegt ist, um aufgrund der ersten verarbeiteten Daten eine Maskierung zu erzielen, so dass von der Verarbeitungseinrichtung empfangene Signale, die in den ersten verarbeiteten Daten aktiv sind, bei der Ableitung des zweiten Datenworts aus den zweiten verarbeiteten Daten maskiert sind.
  36. Vorrichtung gemäß einem der Ansprüche 18 bis 35, bei der die erste Umcodiereinrichtung (101A), die zweite Umcodiereinrichtung (101B), die erste Decodereinrichtung (107A) oder die zweite Decodereinrichtung (107B) eine dynamische Logik aufweist, die dadurch ausgezeichnet ist, dass mindestens ein Schaltungsknoten der dynamischen Logik in einem Vorladezustand auf ein erstes vorgegebenes Potential vorgeladen wird, und daraufhin in einem Auswertezustand abhängig von an der dynamischen Logik anliegenden Signalen entweder auf ein zweites vorgegebenes Potential umgeladen wird oder eine Ladung, von parasitären Verlusten abgesehen, beibehält.
  37. Vorrichtung gemäß Anspruch 20, bei der die Verknüpfungseinrichtung (103) ausgelegt ist, um eine bitweise ODER-Verknüpfung der von der ersten Umcodiereinrichtung (101A) und der zweiten Umcodiereinrichtung (101B) gelieferten Signale durchzuführen und basierend auf dem Ergebnis der ODER-Verknüpfung Signale auf dem dritten Datenpfad bereitzustellen.
  38. Prozessor mit folgenden Merkmalen: einer ersten Umcodiereinrichtung (101A), die ausgelegt ist, um einen ersten Datenoperanden, der durch ein erstes Codierungsschema definiert ist, von einem ersten Datenpfad zu empfangen, auf ein zweites Codierungsschema umzucodieren und auf einem dritten Datenpfad zur Verfügung zustellen; einer zweiten Umcodiereinrichtung (101B), die ausgelegt ist, um einen zweiten Datenoperanden, der durch das erste Codierungsschema definiert ist, von einem zweiten Datenpfad zu empfangen, auf ein drittes Codierungsschema umzucodieren und der auf einem dritten Datenpfad zeitlich versetzt zu dem umcodierten ersten Datenoperanden zur Verfügung zu stellen, wobei die erste Umcodiereinrichtung und die zweite Umcodiereinrichtung so ausgelegt sind, das die Codierung des ersten Datenoperanden und die Codierung des zweiten Datenoperanden nicht zusammenfallen; einer Verarbeitungseinrichtung (82), die ausgelegt ist, um die auf dem dritten Datenpfad bereitgestellten Daten asynchron zu verarbeiten, um erste verarbeitete Daten, die durch eine Verarbeitung des umcodierten ersten Datenoperanden gebildet sind, und zweite verarbeitete Daten, die durch eine Verarbeitung des umcodierten zweiten Datenoperanden gebildet sind, zu erhalten; einer Trennungseinrichtung (105, 106), die ausgelegt ist, um die ersten und zweiten verarbeiteten Daten zeitlich selbstgesteuert in ein erstes Datenwort und ein zweites Datenwort zu trennen; einer ersten Decoder-Einrichtung (107A), die ausgelegt ist, um aufgrund des ersten Datenworts eine Darstellung des ersten Datenworts in dem ersten Codierungsschema zu erhalten; und einer zweiten Decoder-Einrichtung (107B), die ausgelegt ist, um aufgrund des zweiten Datenworts eine Darstellung des zweiten Datenworts in dem ersten Codierungsschema zu erhalten.
  39. Prozessor gemäß Anspruch 38, wobei die erste Umcodiereinrichtung (101A) einen ersten 1-aus-4-Codierer umfasst, wobei die zweite Umcodiereinrichtung (101B) einen zweiten 1-aus-4-Codierer umfasst, wobei der erste 1-aus-4-Codierer von seinem Aufbau her gleich dem zweiten 1-aus-4-Codierer ist, und wobei dem zweiten 1-aus-4-Codierer ein Datenwert des zweiten Datenoperanden invertiert zugeführt wird.
  40. Prozessor gemäß Anspruch 38 oder 39, der ferner eine Verknüpfungseinrichtung (103) aufweist; wobei die erste Umcodiereinrichtung (101A), die zweite Umcodiereinrichtung (101B) und die Verknüpfungseinrichtung (103) so ausgelegt sind, dass an den dritten Datenpfad zeitlich versetzt der umcodierte erste Datenoperand und eine Verknüpfung des umcodierten ersten Datenoperanden und des umcodierten zweiten Datenoperanden anliegen.
  41. Prozessor gemäß Anspruch 40, bei dem die Verarbeitungseinrichtung (82) so ausgelegt ist, dass die ersten verarbeiteten Daten gemäß dem zweiten Codierungsschema codiert sind, und dass die zweiten verarbeiteten Daten gemäß einer Kombination des ersten und zweiten Codierungsschemas codiert sind.
  42. Prozessor gemäß einem der Ansprüche 38 bis 41, der so ausgelegt ist, dass das erste Datenwort ein Ergebnis darstellt, das auf einer Verarbeitung des ersten Datenoperanden beruht, und dass das zweite Datenwort ein Ergebnis darstellt, das auf einer Verarbeitung des zweiten Datenoperanden basiert.
  43. Prozessor gemäß Anspruch 40, bei dem die erste Umcodiereinrichtung (101A), die zweite Umcodiereinrichtung (101B) und die Verknüpfungseinrichtung (103) so ausgelegt sind, dass eine monotone Progression auf dem dritten Datenpfad besteht, wobei eine monotone Progression dadurch gekennzeichnet ist, dass ein logisches Signal auf dem dritten Datenpfad seinen logischen Zustand während eines asynchronen Betriebs ausgehend von einem Anfangszustand nur höchstens einmal ändert und während eines Rücksetzschritts in den Anfangszustand gebracht wird.
  44. Prozessor gemäß einem der Ansprüche 38 bis 43, bei dem der erste und zweite Datenoperand gleiche oder benachbarte Zahlen darstellen.
  45. Prozessor gemäß einem der Ansprüche 38 bis 44, bei dem das erste Datenwort mit dem zweiten Codierungsschema definiert ist, und bei dem das zweite Datenwort mit dem dritten Codierungsschema definiert ist.
  46. Prozessor gemäß einem der Ansprüche 38 bis 45, bei dem das erste Codierungsschema vier mögliche gültige Werte aufweist, die durch zwei logische Variablen darstellbar sind, die logischen Signalen zugeordnet werden können; bei dem das zweite Codierungsschema vier mögliche gültige Werte aufweist, die durch vier logische Variablen darstellbar sind, die logischen Signale zugeordnet werden können; und bei dem das dritte Codierungsschema vier mögliche gültige Werte aufweist, die durch vier logische Variablen darstellbar sind, die logischen Signale zugeordnet werden können.
  47. Prozessor gemäß einem der Ansprüche 38 bis 46, bei dem das erste Codierungsschema ein 2-zu-1 Codierungsschema umfasst, das dadurch gekennzeichnet ist, dass ein nach dem ersten Codierungsschema zu codierender gültiger Wert durch eine höherwertige logische Variable und eine niederwertige logische Variable definiert ist, wobei der höherwertigen logischen Variable zwei zueinander logisch komplementäre Signale zugeordnet sind, deren logischer Zustand von der höherwertigen logischen Variable abhängt, und dass der niederwertigen logischen Variable zwei zueinander logisch komplementäre Signale zugeordnet sind, deren logischer Zustand von der niederwertigen logischen Variable abhängt; bei dem das zweite Codierungsschema ein erstes 4-zu-1-Codierungsschema umfasst, das dadurch gekennzeichnet ist, dass in Abhängigkeit von einem von vier möglichen nach dem zweiten Codierungsschema zu codierenden gültigen Werten genau eines von vier Signalen in einem aktiven logischen Zustand ist; und bei dem das dritte Codierungsschema ein zweites 4-zu-1-Codierungsschema umfasst, das dadurch gekennzeichnet ist, dass in Abhängigkeit von einem von vier möglichen nach dem dritten Codierungsschema zu codierenden gültigen Werten genau eines von vier Signalen in einem aktiven logischen Zustand ist.
  48. Prozessor gemäß einem der Ansprüche 38 bis 47, bei dem einem Datenwert des ersten Datenoperanden drei gültige und ein ungültiger Datenwert des zweiten Datenoperanden zugeordnet sind, und bei dem das zweite und dritte Codierungsschema so ausgelegt sind, das dem zu einem vorgegebenen Datenwert des ersten Datenoperanden gehörigen ungültigen Datenwert des zweiten Datenoperanden gemäß dem zweiten 4-zu-1-Codierungsschema eine codierte Darstellung zu geordnet ist, die gleich der dem vorgegebenen Datenwert gemäß dem ersten 4-zu-1-Codierungsschema zugeordneten codierten Darstellung ist.
  49. Prozessor gemäß Anspruch 40, bei dem einem Datenwert des ersten Datenoperanden drei gültige und ein ungültiger Datenwert des zweiten Datenoperanden zugeordnet sind, bei dem der erste Datenoperand vier mögliche Werte annehmen kann, und bei dem der zweite Datenoperand vier mögliche Werte annehmen kann, wobei die erste Umcodiereinrichtung (101A) ausgelegt ist, um den ersten Datenoperanden durch Aktivieren von genau einem von vier Signalen, die der Verknüpfungseinrichtung zugeführt werden, zu codieren; wobei die zweite Umcodiereinrichtung (101B) ausgelegt ist, um den zweiten Datenoperanden durch Aktivieren von genau einem von vier Signalen, die der Verknüpfungseinrichtung zugeführt werden, zu codieren; und wobei die erste Umcodiereinrichtung (101A), die zweite Umcodiereinrichtung (101B) und die Verknüpfungseinrichtung (103) so ausgelegt sind, dass bei Vorliegen eines ersten Datenwerts des ersten Datenoperanden und eines in Verbindung mit dem ersten Datenwert gültigen zweiten Datenwerts des zweiten Datenoperanden genau zwei Signalleitungen des dritten Datenpfads aktiv sind.
  50. Prozessor gemäß Anspruch 40, bei dem die erste Umcodiereinrichtung (101A), die zweite Umcodiereinrichtung (101B) und die Verknüpfungseinrichtung (103) so ausgelegt sind, dass bei Vorliegen eines ersten Datenwerts des ersten Datenoperanden und eines gültigen Datenwerts des zweiten Datenoperanden ausgehend von einem Anfangszustand, in dem alle Signale des dritten Datenwegs inaktiv sind, erst ein Signal des dritten Daten wegs aktiv wird und dann, zeitlich verzögert, zusätzlich ein zweites Signal des drittes Datenwegs aktiv wird.
  51. Prozessor gemäß einem der Ansprüche 38 bis 50, bei dem die Trennungseinrichtung (105, 106) ausgelegt ist, um erste verarbeitete Daten als ein erstes Datenwort zu speichern und die als erstes Datenwort gespeicherten Daten mit den zweiten verarbeiteten Daten zu verknüpfen, um ein zweites Datenwort zu erhalten.
  52. Prozessor gemäß einem der Ansprüche 38 bis 51, bei dem die Trennungseinrichtung (105, 106) ausgelegt ist, um die ersten verarbeiteten Daten asynchron zu speichern, wobei die ersten verarbeiteten Daten gespeichert werden, sobald ausgehend von einem Anfangszustand eine Veränderung der von der Trennungseinrichtung (105, 106) von der Verarbeitungseinrichtung (82) empfangenen Daten erfolgt.
  53. Prozessor gemäß einem der Ansprüche 38 bis 52, bei dem die Verarbeitungseinrichtung (82) eine Schiebeeinrichtung, die ausgelegt ist, um die auf dem dritten Datenpfad bereitgestellten Daten zu verschieben, ein Bus-Netzwerk, ein Multiplexer oder ein Puffer ist.
  54. Prozessor gemäß einem der Ansprüche 38 bis 53, bei dem die zweite Umcodiereinrichtung (101B) eine Verzögerungseinrichtung (108) aufweist, die so ausgelegt ist, dass ausgehend von einem Anfangszustand der ersten und zweiten Umcodiereinrichtung (101A, 101B) die erste Umcodiereinrichtung (101A) ein Umcodieren der von dem ersten Datenpfad empfangenen Daten zeitlich früher beginnt als die zweite Umcodiereinrichtung (101B) ein Umcodieren der von dem zweiten Datenpfad empfangenen Daten.
  55. Prozessor gemäß einem der Ansprüche 38 bis 54, bei dem die Trennungseinrichtung (105, 106) ausgelegt ist, um aufgrund der ersten verarbeiteten Daten eine Maskierung zu erzielen, so dass von der Verarbeitungseinrichtung (82) empfangene Signale, die in den ersten verarbeiteten Daten aktiv sind, bei der Ableitung des zweiten Datenworts aus den zweiten verarbeiteten Daten maskiert sind.
  56. Prozessor gemäß einem der Ansprüche 38 bis 55, bei dem die erste Umcodiereinrichtung (101A), die zweite Umcodiereinrichtung (101B), die erste Decodereinrichtung (107A) oder die zweite Decodereinrichtung (107B) eine dynamische Logik aufweist, die dadurch ausgezeichnet ist, dass mindestens ein Schaltungsknoten der dynamischen Logik in einem Vorladezustand auf ein erstes vorgegebenes Potential vorgeladen wird, du daraufhin in einem Auswertezustand abhängig von an der dynamischen Logik anliegenden Signalen entweder auf ein zweites vorgegebenes Potential umgeladen wird oder eine Ladung, von parasitären Verlusten abgesehen, beibehält.
  57. Prozessor gemäß Anspruch 40, bei dem die Verknüpfungseinrichtung (103) ausgelegt ist, um eine bitweise ODER-Verknüpfung der von der ersten Umcodiereinrichtung (101A) und der zweiten Umcodiereinrichtung (101B) gelieferten Signale durchzuführen und basierend auf dem Ergebnis der ODER-Verknüpfung Signale auf dem dritten Datenpfad bereitzustellen.
DE10124351A 2000-05-30 2001-05-18 Verfahren und Vorrichtung zum Verarbeiten zweier Datenoperanden in einem Prozessor Expired - Fee Related DE10124351B4 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US583206 2000-05-30
US09/583,206 US6738795B1 (en) 2000-05-30 2000-05-30 Self-timed transmission system and method for processing multiple data sets

Publications (2)

Publication Number Publication Date
DE10124351A1 DE10124351A1 (de) 2001-12-20
DE10124351B4 true DE10124351B4 (de) 2005-10-27

Family

ID=24332126

Family Applications (1)

Application Number Title Priority Date Filing Date
DE10124351A Expired - Fee Related DE10124351B4 (de) 2000-05-30 2001-05-18 Verfahren und Vorrichtung zum Verarbeiten zweier Datenoperanden in einem Prozessor

Country Status (3)

Country Link
US (2) US6738795B1 (de)
JP (1) JP2002007111A (de)
DE (1) DE10124351B4 (de)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050177588A1 (en) * 2002-04-17 2005-08-11 Koninklijke Philips Electronics N.V. Data communication bus
US7065602B2 (en) * 2003-07-01 2006-06-20 International Business Machines Corporation Circuit and method for pipelined insertion
EP1538635B1 (de) * 2003-11-26 2008-05-14 Texas Instruments Incorporated Scan-testbarer FIFO-Speicher
US7392270B2 (en) * 2004-07-29 2008-06-24 International Business Machines Corporation Apparatus and method for reducing the latency of sum-addressed shifters
JP4571903B2 (ja) * 2005-12-02 2010-10-27 富士通株式会社 演算処理装置,情報処理装置,及び演算処理方法
US8443030B1 (en) * 2007-03-09 2013-05-14 Marvell International Ltd. Processing of floating point multiply-accumulate instructions using multiple operand pathways
US8176391B2 (en) * 2008-01-31 2012-05-08 International Business Machines Corporation System to improve miscorrection rates in error control code through buffering and associated methods
US7746109B1 (en) 2009-04-02 2010-06-29 Xilinx, Inc. Circuits for sharing self-timed logic
US8706793B1 (en) 2009-04-02 2014-04-22 Xilinx, Inc. Multiplier circuits with optional shift function
US7982496B1 (en) 2009-04-02 2011-07-19 Xilinx, Inc. Bus-based logic blocks with optional constant input
US9411554B1 (en) 2009-04-02 2016-08-09 Xilinx, Inc. Signed multiplier circuit utilizing a uniform array of logic blocks
US9002915B1 (en) 2009-04-02 2015-04-07 Xilinx, Inc. Circuits for shifting bussed data
US8527572B1 (en) 2009-04-02 2013-09-03 Xilinx, Inc. Multiplier architecture utilizing a uniform array of logic blocks, and methods of using the same
US7746103B1 (en) * 2009-04-02 2010-06-29 Xilinx, Inc. Multi-mode circuit in a self-timed integrated circuit
US7746108B1 (en) 2009-04-02 2010-06-29 Xilinx, Inc. Compute-centric architecture for integrated circuits
US7948265B1 (en) 2009-04-02 2011-05-24 Xilinx, Inc. Circuits for replicating self-timed logic
WO2011137209A1 (en) 2010-04-30 2011-11-03 Cornell University Operand-optimized asynchronous floating-point units and methods of use thereof
US8914430B2 (en) * 2010-09-24 2014-12-16 Intel Corporation Multiply add functional unit capable of executing scale, round, GETEXP, round, GETMANT, reduce, range and class instructions
US8402164B1 (en) 2010-10-27 2013-03-19 Xilinx, Inc. Asynchronous communication network and methods of enabling the asynchronous communication of data in an integrated circuit
US10318297B2 (en) * 2015-01-30 2019-06-11 Huawei Technologies Co., Ltd. Method and apparatus for operating a self-timed parallelized multi-core processor
CN113489482B (zh) * 2021-07-06 2023-10-20 北京中科芯蕊科技有限公司 基于Mousetrap的异步微流水线数据流控制器

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5649225A (en) * 1994-06-01 1997-07-15 Advanced Micro Devices, Inc. Resynchronization of a superscalar processor

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5040190A (en) * 1989-12-22 1991-08-13 Adtran Analog data station terminal
US5805479A (en) * 1995-09-25 1998-09-08 United Microelectronics Corp. Apparatus and method for filtering digital signals
US5798952A (en) 1996-02-29 1998-08-25 Hewlett-Packard Company Leading bit anticipator
US5757687A (en) * 1996-08-06 1998-05-26 Hewlett-Packard Co. Method and apparatus for bounding alignment shifts to enable at-speed denormalized result generation in an FMAC
US6609189B1 (en) * 1998-03-12 2003-08-19 Yale University Cycle segmented prefix circuits
US6529924B1 (en) * 2000-03-27 2003-03-04 International Business Machines Corporation Method and apparatus for generating shift amount signals for an alignment shifter

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5649225A (en) * 1994-06-01 1997-07-15 Advanced Micro Devices, Inc. Resynchronization of a superscalar processor

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
CIRCELLO, J.C.: The Superscalar Hardware Architec- ture of the MC68060, August 1994, S. 1-2 (Internet: http://www.computerhistory.org/store/ac atalog/GB_HCVI_Circello.html)
CIRCELLO, J.C.: The Superscalar Hardware Architec-ture of the MC68060, August 1994, S. 1-2 (Internet: http://www.computerhistory.org/store/acatalog/GB_HCVI_Circello.html) *
POWEL, J.: Meet the 68000, Digital Antic, Vol. 4, No. 1, May 1985, pg. 28, S. 1-6 (Internet: http:// www.atarimagazines.com/v4n1/68000.html
POWEL, J.: Meet the 68000, Digital Antic, Vol. 4, No. 1, May 1985, pg. 28, S. 1-6 (Internet: http://www.atarimagazines.com/v4n1/68000.html *

Also Published As

Publication number Publication date
DE10124351A1 (de) 2001-12-20
US6970897B2 (en) 2005-11-29
US6738795B1 (en) 2004-05-18
US20040044716A1 (en) 2004-03-04
JP2002007111A (ja) 2002-01-11

Similar Documents

Publication Publication Date Title
DE10124351B4 (de) Verfahren und Vorrichtung zum Verarbeiten zweier Datenoperanden in einem Prozessor
EP0079471B1 (de) Schaltungsanordnung und Verfahren zur Bildung von Skalarprodukten und Summen von Gleitkommazahlen mit maximaler Genauigkeit
DE1178623C2 (de) Programmgesteuerte datenverarbeitende Maschine
DE3306084A1 (de) Rechnerarchitektur zur gleitkomma -addition
DE1524103B2 (de) Datenverarbeitungsgerät
DE2713400A1 (de) Numerisches steuersystem fuer werkzeugmaschinen
DE1549477B1 (de) Einrichtung zur schnellen akkumulation einer anzahl mehr stelliger binaerer operanden
DE2803425A1 (de) Digitaleinrichtung zur ermittlung des wertes von komplexen arithmetischen ausdruecken
DE2421130C2 (de)
DE2658248A1 (de) Mit hoher geschwindigkeit arbeitendes multiplikationssystem sowie verfahren zur durchfuehrung einer multiplikationsoperation
EP3542313A1 (de) Verfahren zum berechnen einer ausgabe eines neuronalen netzes
DE4403917A1 (de) Vorrichtung zum Berechnen einer Besetzungszählung
DE1549478B1 (de) Gleitkomma-Rechenwerk zur schnellen Addition oder Subtraktion binaerer Operanden
DE4335245A1 (de) Vektorlogikverfahren und dynamisches Logikgatter für eine selbstzeitgebende, monotone Logikprogression
DE1803222B2 (de) Verfahren zum zusammenfassen pulscodierter nachrichten
DE2612750A1 (de) Multipliziereinrichtung
EP0628183B1 (de) Schaltungsanordnung zum digitalen multiplizieren von integer-zahlen
DE2732008A1 (de) Einrichtung zur reduzierung von fibonacci-p-codes auf die minimalform
WO2004059515A2 (de) Modulare multiplikation mit paralleler berechnung der vorausschau-parameter
DE1449564C3 (de) Recheneinrichtung zur Subtraktion mehrerer Operanden oder zu deren Addition durch Verwendung von Komplementärwerten eines der Operanden
DE1184122B (de) Addiervorrichtung
DE2622974A1 (de) Mikroprogrammierbares steuerwerk
DE3104256C2 (de)
DE1549446A1 (de) Digitalrechner
EP0346750B1 (de) Anordnung zur DPCM-Codierung mit hoher Datenrate

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
8127 New person/name/address of the applicant

Owner name: HEWLETT-PACKARD DEVELOPMENT CO., L.P., HOUSTON, TE

8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee