DE10124351A1 - Zeitlich selbstgesteuertes Übertragungssystem und Verfahren zum Verarbeiten von Mehrfachdatensätzen - Google Patents

Zeitlich selbstgesteuertes Übertragungssystem und Verfahren zum Verarbeiten von Mehrfachdatensätzen

Info

Publication number
DE10124351A1
DE10124351A1 DE10124351A DE10124351A DE10124351A1 DE 10124351 A1 DE10124351 A1 DE 10124351A1 DE 10124351 A DE10124351 A DE 10124351A DE 10124351 A DE10124351 A DE 10124351A DE 10124351 A1 DE10124351 A1 DE 10124351A1
Authority
DE
Germany
Prior art keywords
data
coding
logic
designed
logic paths
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.)
Granted
Application number
DE10124351A
Other languages
English (en)
Other versions
DE10124351B4 (de
Inventor
Glenn T 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 Co
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 Co filed Critical Hewlett Packard Co
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

Ein zeitlich selbstgesteuertes Übertragungssystem und Verfahren übertragen eine Mehrzahl von Datenoperanden wirksam aufeinanderfolgend durch herkömmliche digitale Geräte, beispielsweise eine Schiebeeinrichtung, Bus-Netzwerk, Multiplexer oder Puffer auf zeitlich selbstgesteuerte Weise, um Hardwareerfordernisse zu minimieren. Obwohl sie nicht auf diese bestimmte Anwendung beschränkt sind, eignen sich das zeitlich selbstgesteuerte Übertragungssystem und Verfahren besonders für die Implementierung in Verbindung mit Schiebeoperationen in einem kombinierten Gleitkomma-Multiplizierer-Addierer eines hochleistungsfähigen Mikroprozessors. Das zeitlich selbstgesteuerte Übertragungssystem ist wie folgt aufgebaut. Ein Codierer codiert einen ersten und zweiten Datenoperanden, die jeweils auf einen getrennten jeweiligen ersten und zweiten Satz von Logikwegen definiert sind, und auf den gleichen dritten Satz von Logikwegen durch Ändern des Codierschemas. Der erste und der zweite Datenoperand weisen einen mathematischen Bezug auf, und ermöglichen dadurch diesen Neucodierprozeß. Eine Vorrichtung, beispielsweise eine Schiebevorrichtung, ein Bus-Netzwerk, ein Multiplexer oder ein Puffer verarbeitet die ersten und zweiten Daten getrennt, zeitlich aufeinanderfolgend 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 ...

Description

Die vorliegende Erfindung bezieht sich allgemein auf digi­ tale Schaltungen und Prozessoren, und insbesondere auf ein zeitlich selbstgesteuertes Übertragungssystem und Verfahren zum wirksamen Übertragen von Mehrfachdatensätzen durch her­ kömmliche digitale Schaltungshardware auf zeitlich selbst­ gesteuerte Weise, um die Hardwareerfordernisse zu minimie­ ren. Obwohl das zeitlich selbstgesteuerte Übertragungssys­ tem und -verfahren nicht auf diese bestimmte Anwendung be­ schränkt sind, sind sie besonders geeignet für die Imple­ mentierung in Verbindung mit Schiebeoperationen bei einem kombinierten Gleitkomma (floating point = FP) - Multiplizierer-Addierer eines hochleistungsfähigen Mikro­ prozessors.
Momentan werden viele arithmetische Operationen in vorlie­ genden Implementationen von Mikroprozessoren durch Verwen­ den eines integrierten Gleitkomma- (floating point = FP-)prozessors beschleunigt, der FP-Berechnungen implemen­ tiert, (d. h. Berechnungen, die Operationen mit Ausdrücken mit einem Festkommateil und einem Exponenten umfassen, wo­ bei der Wert jedes Ausdrucks gleich ist wie der Festkomma­ anteil derselben multipliziert mit 2Exponent), typischerweise bei sehr hohen Zahlen. Diese FP-Prozessoren können einen kombinierten Multiplizierer-Addierer umfassen, um die Leis­ tungsfä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 multipliziert, so daß das Ergebnis R = A.B + C oder das Er­ gebnis R = A.B - C ist. Allgemein werden in der Schaltungsan­ ordnung die Operanden A und B zuerst miteinander multipli­ ziert, während der andere Operand C geschoben wird, und dann wird das Produkt aus A und B zu dem geschobenen C ad­ diert. Danach wird die Summe durch eine Schiebeoperation normiert, und schließlich wird die geschobene Summe gerun­ det.
Wie bei vielen FP-Operationen ist es regelmäßig erforder­ lich, daß ein Ergebnis einer FP-Operation gerundet wird. IEEE und andere Industriestandards spezifizieren unter­ schiedliche Typen von Rundungsprozessen, beispielsweise Runden auf Null, Runden auf den nächstliegenden Wert, Run­ den auf negative Unendlichkeit und Runden auf positive Un­ endlichkeit. 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 uner­ wünscht behindern.
Das Ergebnis R wird in einer Form geliefert, die entweder nicht-inkrementiert oder inkrementiert ist, um die Run­ dungsanforderung zu erfüllen. Wenn beispielsweise eine Run­ dungsanforderung Runden auf Null oder Runden auf negative Unendlichkeit wäre, dann würde das nicht-inkrementierte Er­ gebnis R ausgegeben werden. Wenn eine Rundungsanordnung Runden auf positive Unendlichkeit wäre, dann würde das in­ krementierte 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 Fig. 1 gezeigten Run­ dungsfähigkeiten, der allgemein mit dem Bezugszeichen 5 be­ zeichnet ist. Der kombinierte Multiplizierer-Addierer 5 von Fig. 1 ist derart entworfen, um bezüglich der Festkomma­ teilabschnitte (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 Fig. 1 gezeigt, umfaßt der kombinierte Multiplizierer-Addierer 5 einen Multiplizierer 11, der zwei Zahlen A, B (jeweils beispielsweise 64 Bits) empfängt und multipli­ ziert. Schiebeeinrichtung 12 schiebt den Operanden C um ei­ nen vorbestimmten Wert, um denselben bezüglich dem Rechen­ produkt 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 beispiels­ weise 128 Bit) und das Ausgangssignal der Schiebeeinrich­ tung 12 werden in den Übertragsicherungsaddierer 13 einge­ geben, 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 Über­ tragsicherungsaddierer 13 eingegeben. Das Eingangssignal von der Schiebeeinrichtung 12 wird angesehen als Übertrag­ eingabe von einer weniger signifikanten Stufe des kombi­ nierten FP-Multiplizierer-Addierers 5. Der Übertragsiche­ rungsaddierer 13 erzeugt ein Summeausgangssignal und ein Übertragausgangssignal. Sowohl das Summe- als auch das Übertragausgangssignal werden in einen Übertragausbreitungs­ addierer 14 und einen Führungsbitantizipierer (LBA = lea­ ding bit anticipator) eingegeben. Der Übertragausbreitungs­ addierer 14 kombiniert das Summe- und Übertragausgangssig­ nal von dem Übertragsicherungsaddierer 13, um eine FP-Zahl zu erzeugen, die in die Schiebeeinrichtung 16 eingegeben wird. Die Gestaltung und der Betrieb eines Übertragausbrei­ tungsaddierers 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 berech­ net 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 Dividieropera­ tionen zu bestimmen. Ein Beispiel von einer von vielen mög­ lichen 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 In­ krementierer 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 Untersu­ chung 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 aus­ zuwählen für das endgültige Ausgangssignal von dem kombi­ nierten FP-Multiplizierer-Addierer 5.
Ein Hauptproblem bei der Rundungsarchitektur für einen her­ kö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 Ergeb­ nis Rundung erfordert. Da das Inkrementieren eines Ergeb­ nisses 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. mindes­ tens 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 angegange­ ner Bedarf nach einer Herangehensweise für die vorher er­ wähnten Mängel und Unzulänglichkeiten, insbesondere für ei­ nen Weg um das Runden oder Inkrementieren in einem kombinierten Multiplizierer-Addierer 5 durchzuführen.
Es ist die Aufgabe der vorliegenden Erfindung, ein Verfah­ ren, ein System und einen Prozessor zu schaffen, so daß ei­ ne Übertragung von Datenoperanden mit geringeren Hardware­ anforderungen ermöglicht wird.
Diese Aufgabe wird durch ein Verfahren gemäß Anspruch 1, einen Prozessor gemäß Anspruch 12, 24 und 25 und durch ein System gemäß Anspruch 13 gelöst.
Die vorliegende Erfindung schafft ein zeitlich selbstge­ steuertes Übertragungssystem und -verfahren um eine Mehr­ zahl von Datenoperanden aufeinanderfolgend durch herkömmli­ che digitale Vorrichtungen, beispielsweise eine Schiebeein­ richtung, ein Bus-Netzwerk, einen Multiplexer (MUX), oder einen Puffer, wirksam zu übertragen und zwar auf eine zeit­ lich selbstgesteuerte Weise, um Hardwareerfordernisse zu minimieren. Obwohl das zeitlich selbstgesteuerte Übertragungssystem und -verfahren nicht auf diese spezielle Anwen­ dung 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 separa­ ten jeweiligen ersten und zweiten Logikwegsatz definiert sind, auf den gleichen dritten Logikwegsatz durch Ändern des Codierschemas. Dieses Neu- bzw. Umcodierschema ist mög­ lich, da der erste und zweite Datenoperand einen mathemati­ schen Bezug aufweisen. Bei diesem Ausführungsbeispiel sind der erste und der zweite Datenoperand jeweils auf zwei mo­ notonen 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 an­ nimmt, zeigen sie die folgende mathematische Beziehung zei­ gen: X = Y oder X = Y-1). Es wird darauf hingewiesen, daß auch andere Codierschemen und mathematische Beziehungen möglich sind. Eine Vorrichtung, beispielsweise eine Schie­ beeinrichtung, ein Bus-Netzwerk, ein Multiplexer, oder ein Puffer verarbeitet die ersten und zweiten Daten getrennt, aufeinanderfolgend zeitlich und auf eine zeitlich selbstge­ steuerte 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 vier­ ten Satz von Logikwegen. Der Decodierer decodiert die ers­ ten und zweiten Daten auf den jeweiligen fünften und sechs­ ten Satz von Logikwegen, die getrennt sind und eine Codie­ rung aufweisen, die dem ersten und dem zweiten Originalsatz von Logikwegen entspricht.
Die vorliegende Erfindung kann auch so gesehen werden, daß sie eine oder mehrere Verfahren schafft. Ein solches Ver­ fahren kann grob beschrieben werden als ein Prozeß (bei­ spielsweise für einen kombinierten FP-Multiplizierer-Addierer) mit den folgenden Schritten: (a) Codieren erster und zweiter Daten, die je definiert sind auf einem jeweili­ gen 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 Aus­ gangscodierern 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 Logikwe­ gen auf den jeweiligen fünften und sechsten Satz von Logik­ wegen, die getrennt sind und hinsichtlich des Codierschemas dem ersten und zweiten Satz von Logikwegen entsprechen.
Andere Systeme, Verfahren, Merkmale und Vorteile der vor­ liegenden 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, Verfah­ ren, Merkmale und Vorteile hierin innerhalb des Schutzbe­ reichs der vorliegenden Erfindung enthalten sind.
Die Erfindung kann besser verstanden werden mit Bezug auf die folgenden Zeichnungen. Die Komponenten in den Zeichnun­ gen sind nicht notwendigerweise maßstabsgerecht, der Schwer­ punkt wurde statt dessen auf die genaue Darstellung der Prinzipien der vorliegenden Erfindung gelegt. Darüber hin­ aus zeigen gleiche Bezugszeichen in den Zeichnungen ent­ sprechende Teile in den verschiedenen Ansichten.
Bevorzugte Ausführungsbeispiele der vorliegenden Erfindung werden nachfolgend bezugnehmend auf die beiliegenden Zeich­ nungen näher erläutert. Es zeigen:
Fig. 1 ein Blockdiagramm eines kombinierten Multiplizie­ rer-Addierers nach dem Stand der Technik, der unerwünschterweise ein Rundungssystem auf der Ba­ sis der Nachinkrementierung implementiert.
Fig. 2 ein Blockdiagramm eines Mikroprozessors, der ein auswahlbasiertes Rundungssystem verwendet.
Fig. 3 ein Blockdiagramm eines ersten Ausführungsbei­ spiels eines kombinierten FP-Multiplizierer-Addierers, der das auswahlbasierte Rundungssystem von Fig. 2 verwendet.
Fig. 4A ein mathematisches Diagramm, das einen idealen Inkrementierungsprozeß zeigt.
Fig. 4B ein mathematisches Diagramm, das einen ungefähren Inkrementierungsprozeß zeigt, der gemeinsam aus­ geführt wird durch den Führungsbitantizipierer und einen Übertragausbreitungsaddierer, verbunden mit dem auswahlbasierten Rundungssystem von Fig. 2 und 3.
Fig. 4C ein Blockdiagramm eines niedrigstwertigen Bit- (LSB = least significant bit) Befestigungs- Mechanismus von Fig. 3.
Fig. 4D eine Wahrheitstabelle, die die Logik zeigt, die durch den LSB-Befestigungsmechanismus von den Fig. 3 und 4C implementiert wurde.
Fig. 5 ein Blockdiagramm eines zweiten Ausführungsbei­ spiels eines kombinierten FP-Multiplizierer-Addierers, der das auswahlbasierte Rundungssystem von Fig. 2 und das zeitlich selbstgesteuerte Übertragungssystem der vorliegenden Erfindung ver­ wendet.
Fig. 6 ein Blockdiagramm des zeitlich selbstgesteuerten Übertragungssystems von Fig. 5.
Fig. 7A ein Blockdiagramm eines Codierers von Fig. 6.
Fig. 7B ein Schaltungsdiagramm des Codierers der Fig. 6 und 7A.
Fig. 7C eine Wahrheitstabelle, die die statische Logik­ übersetzung zeigt, die bei jedem Codierer der Fig. 6, 7A und 7B auftritt.
Fig. 7D eine Wahrheitstabelle, die die dynamische Logik­ übersetzung zeigt, die entlang des zeitlich selbstgesteuerten Übertragungssystems von Fig. 6 auftritt.
Fig. 8 ein Blockdiagramm einer Schiebeeinrichtung von Fig. 6.
Fig. 9 ein Blockdiagramm einer zeitlich selbstgesteuer­ ten Latchschaltung von Fig. 6.
Fig. 10 ein Blockdiagramm eines Decodierers von Fig. 6.
Fig. 2 ist ein Blockdiagramm eines Prozessors 21 mit einem kombinierten Multiplizierer-Addierer 39, der das zeitlich selbstgesteuerte Übertragungssystem 100 (Fig. 5) der vor­ liegenden Erfindung verwendet, innerhalb eines auswahlba­ sierten 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 be­ schrieben. Der Prozessoren 21 kann beispielsweise ein Mikroprozessormikrochip sein, der gemäß gut bekannter Herstel­ lungstechniken hergestellt ist, aber er ist nicht darauf beschränkt. Wie in Fig. 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 Ein­ gangs/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 kombi­ nierte Multiplizierer-Addierer 39 verwenden, welche das zeitlich selbstgesteuerte Übertragungssystem 100 der vor­ liegenden Erfindung implementieren können.
In Fig. 3 wird ein erstes Ausführungsbeispiel (ein mögli­ ches, nicht beschränkendes Beispiel) eines kombinierten FP- Multiplizierer-Addierers dargestellt, der allgemein durch Bezugszeichen 50 bezeichnet ist, und der ein auswahlbasier­ tes Rundungssystem 20 (Fig. 2) verwendet. Der kombinierte Multiplizierer-Addierer 50 (als auch das zweite Ausfüh­ rungsbeispiel in Fig. 4) ist entwickelt, um auf den Fest­ kommaanteilabschnitten (Nicht-Exponententeil) der FP-Zahlen innerhalb eines Prozessors oder einer anderen digitalen Schaltung wirksam zu sein. Anders als beim zweiten Ausfüh­ rungsbeispiel (Fig. 5) verwendet dieses erste Ausführungs­ beispiel nicht das zeitlich selbstgesteuerte Übertragungssystem 100, es wird aber gezeigt und beschrieben, um die Anwendung des zeitlich selbstgesteuerten Übertragungssys­ tems 100 im zweiten Ausführungsbeispiel (Fig. 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 aufge­ nommen 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 multipli­ ziert 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 er­ füllen. Wenn es beispielsweise eine Rundungsanforderung von entweder Runden auf Null oder Runden auf negative Unend­ lichkeit 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 in­ krementierte Ergebnis ausgegeben werden. Wenn es schließ­ lich eine Rundungsanforderung von Runden auf den nächstlie­ genden 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 kombi­ nierten Multiplizierer-Addierers 50 in Fig. 3 mit dem kom­ binierten Multiplizierer-Addierer 5 (Fig. 1) des Stands der Technik wird der kombinierte Multiplizierer-Addierer 50 in Zeitgebungsabschnitte aufgetrennt oder unterteilt, die Lo­ gikoperationen umfassen, die ungefähr während der gleichen Taktperiode auftreten. Im wesentlichen entspricht jeder der Zeitgebungsabschnitte einer oder mehrerer logischer Gate­ verzögerungen. Wie aus Fig. 3 ersichtlich, ist der kombi­ nierte 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 gleich­ zeitig ausgeführt. Wie durch Vergleichen der Zeitgebungsab­ schnitte des Addierers 50 von Fig. 3, der das auswahlba­ sierte Rundungssystem 20 (Fig. 2) verwendet, mit den Zeit­ gebungsabschnitten des herkömmlichen kombinierten Multipli­ zierer-Addierers 5 (Fig. 1) ersichtlich ist, ist der kombi­ nierte Multiplizierer-Addierer 50 der vorliegenden Erfin­ dung viel schneller als der herkömmliche Addierer 5. In Fig. 3 gibt es weniger Zeitgebungsabschnitte als in Fig. 1. In der Tat beträgt die Geschwindigkeitssteigerung hinsicht­ lich der Gateverzögerungen ungefähr 5 bis 6 Gateverzögerun­ gen, was bei der Prozessorgestaltung wesentlich ist.
Wie in Fig. 3 ferner gezeigt, umfaßt der kombinierte Mul­ tiplizierer-Addierer 50 einen Multiplizierer 51, der zwei Zahlen A, B, (jeweils beispielsweise 64 Bits) empfängt und multipliziert. Die Schiebeeinrichtung 52 schiebt den Ope­ randen C um einen vorbestimmten Wert, um denselben bezüg­ lich 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 kom­ biniert wird.
Die Summe- und Übertragausgangssignale (jeweils beispiels­ weise 128 Bits) des Multiplizierers 51 und die Ausgangssig­ nale der Schiebeeinrichtung 52 werden in den Übertragsiche­ rungsaddierer 53 eingegeben, dessen Entwicklung und Opera­ tion 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 si­ gnifikanten 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ührungsbitan­ tizipierer 55 eingegeben. Der Übertragausbreitungsaddierer 54 kombiniert die Summe- und Übertragausgangssignale von dem Übertragsicherungsaddierer 53, um eine FP-Zahl zu er­ zeugen, 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 Rich­ tung. Dies wird durchgeführt, um die Summe- und Übertrag­ ausgangssignale des Übertragsicherungsaddierers 53 für Ad­ dier-, Subtrahier-, Multiplizier- oder Dividieroperationen zu normieren. Ein Beispiel von einer der vielen Architektu­ ren für den Führungsbitantizipierer 15 in Fig. 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 Übertragsicherungs­ addierer 53 erzeugt wird. So bald die Position des MSB be­ stimmt 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 in­ krementierte Zahl = nicht-inkrementierte Zahl oder nicht-inkrementierte Zahl ± 1) gibt. Die Bitbreite der Vorrich­ tung kann jede passende Größe n haben, beispielsweise 4, 8, 16, 32, 64, 128, 256, 512, usw. Bei den bevorzugten Ausführungsbeispielen beträgt die Bitbreite 64 Bits. In den be­ vorzugten 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ög­ lich, eine ungefähre inkrementierte FP-Zahl zu berechnen. Wie in Fig. 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 in­ krementierte FP-Zahl SUM+1 = . . .00110x. . . zu erzeugen, wo­ bei x entweder 1 oder 0 sein könnte.
Die LSB-Position ist jedoch lediglich eine Schätzung. Wie in Fig. 4B dargestellt, kann die geschätzte LSB-Position exakt sein oder um ein Bit geschoben, und daher kann es be­ züglich der inkrementierten Zahl SUM+1 um Δ = 1, 2, 3, oder 4 geschoben sein.
Gemäß erneuter Bezugnahme auf Fig. 3, sendet den Führungs­ bitantizipierer 55 ein LBA-Wort mit einem Bit mit einem bi­ nären logischen Zustand 1, an den Übertragausbreitungsad­ dierer 56, der um 63 Bits von der Bitposition der identifi­ zierten MSB der Zahl vom Übertragsicherungsaddierer 53 nach rechts geschoben wird. Vorzugsweise ist die Schiebung im­ plizit 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 Über­ tragausbreitungsaddierer 56.
Der Übertragausbreitungsaddierer 56 berechnet eine ungefäh­ re inkrementierte Version der FP-Zahl, die von dem Über­ tragsicherungsaddierer 53 erzeugt wird durch Addieren der 1 von dem Führungsbitantizipierer 55 mit den Summe- und Über­ tragausgängen von dem Übertragsicherungsaddierer 53. Dies schafft ein Aufrunden oder Inkrementieren der FP-Zahl.
Sowohl die nicht-inkrementierte als auch die ungefähre in­ krementierte FP-Zahl werden jeweils für Normierung in die Schiebeeinrichtung 61 und 62 eingegeben. Die durch den Füh­ rungsbitantizipierer 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 Übertragsicherungsad­ dierer 53 erzeugt wird, zu eliminieren. Die Schiebeeinrich­ tungen 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 Schiebe­ einrichtung 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 Fig. 4C ge­ zeigt aufgebaut. Der LSB-Befestigungsmechanismus 64 umfaßt einen Multiplexer (MUX) 66, der durch ein ausgewähltes Sig­ nal gesteuert wird, das durch eine Korrektorlogik 67 er­ zeugt wird. Die Korrektorlogik 67 ist konfiguriert, um die Logik zu implementieren, die durch die Wahrheitstabelle von Fig. 4D definiert wird. Wie in Fig. 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 inkrementierten FP-Zahl SUM + 1 aus. Die Korrektorlogik 67 emp­ fä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 (Fig. 3).
Daher wirken der LSB-Befestigungsmechanismus 64 und die Korrektorlogik 67 wie folgt, unter Bezugnahme sowohl auf Fig. 4C als auch Fig. 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 Aus­ wahlsignal von "0" an den MUX 66 aus, wodurch bewirkt wird, daß eine Auswahl von SUM [63 : 2] als SUM + 1[63 : 2] ausgege­ ben 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 Fig. 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 nor­ mierte, nicht-inkrementierte Zahl, die von der Schiebeein­ richtung 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, basie­ rend auf der Untersuchung der Schutz-, Rundungs- und Haft­ bits, 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äh­ len, um von dem kombinierten FP-Multiplizierer-Addierer 50 als Ergebnis R ausgegeben zu werden.
Fig. 5 ist ein Blockdiagramm eines zweiten Ausführungsbei­ spiels eines kombinierten FP-Multiplizierer-Addierers, der allgemein mit Bezugszeichen 70 bezeichnet ist und der das auswahlbasierte Rundungssystem 20 (Fig. 2) und im wesentli­ chen 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 Fig. 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 (Fig. 1), und unge­ fähr gleich schnell wie das erste Ausführungsbeispiel des kombinierten Multiplizierer-Addierers (Fig. 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 Schiebeein­ richtung 72, des Übertragsicherungsaddierers 73, des Über­ tragausbreitungsaddierers 74, des Führungsbitantizipierers 75 und des Übertragausbreitungsaddierers 76 von Fig. 5 sind alle im wesentlichen gleich wie die entsprechenden Elemente 51-56, die oben in Bezug auf das erste Ausführungsbeispiel von Fig. 3 beschrieben werden. Der Hauptunterschied zwi­ schen dem ersten Ausführungsbeispiel und dem zweiten Aus­ führungsbeispiel liegt darin, daß das zweite Ausführungs­ beispiel ein zeitlich selbstgesteuertes Übertragungssystem 100 verwendet, das sowohl die inkrementierte als auch die nicht-inkrementierte FP-Zahlen in einem gemeinsam verwende­ ten Übertragungsweg normiert, der eine normierende Schiebe­ einrichtung 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: ei­ nen Codierer 80, eine Schiebeeinrichtung 82 und einen Deco­ dierer 90. Der Codierer 80 verschachtelt im wesentlichen die nicht-inkrementierte FP-Zahl SUM und die ungefähre in­ krementierte 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 inkremen­ tierten FP-Zahl SUM + Δ, und zum aufeinanderfolgenden Nor­ mieren derselben. Der Decoder 90 entschachtelt im wesentli­ chen die normierten inkrementierten und nicht-inkrementierten FP-Zahlen von dem gemeinsamen Verarbei­ tungsweg.
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 Zah­ len verschoben werden, und die Richtung der Schiebung ange­ wiesen. Die normierte codierte Zahl, die von der Schiebe­ einrichtung 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 wesentli­ chen gleich wie die entsprechenden Elemente 63-65, die mit Bezugnahme auf das erste Ausführungsbeispiel von Fig. 3 oben beschrieben sind.
Die Architektur, Funktionalität und der Betrieb des zeit­ lich selbstgesteuerten Übertragungssystems 100 von Fig. 5 werden nun detailliert beschrieben. Das zeitlich selbstge­ steuerte Ü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 Übertragungssy­ stem 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 Fig. 6 wird ein Beispiel (eine nicht-beschränkende Imp­ lementierung, auch andere sind möglich) einer möglichen und bevorzugten Systemarchitektur für das zeitlich selbstge­ steuerte Übertragungssystem 100 (Fig. 5) dargestellt. Wie in Fig. 6 gezeigt, kann das zeitlich selbstgesteuerte Über­ tragungssystem wie folgt aufgebaut sein.
Im allgemeinen codieren bei dem bevorzugten Ausführungsbei­ spiel 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 Zusammen­ hang mit diesem Dokument bedeutet "zeitlich selbstgesteuert", daß Logikauswertungen hinsichtlich der (unabhängig von der) Zeitgebung asynchron auftreten. Der logische Zu­ stand jedes Bit jedes eingegebenen Worts X, Y wird gemein­ sam durch H-, L-Verbindungen definiert, die einem logisch hohen Wert (1) bzw. einem logisch tiefen Wert (0) entspre­ chen. Darüber hinaus ist ein monotoner Fortschritt imple­ mentiert, so daß der logische Zustand jedes Bits definiert wird, ob es einen niedrig (0) zu hoch (1) Übergang auf je­ der der H- oder L-Verbindungen gab oder nicht. Es ist zu beachten, daß das Codierschema mehr sein kann als ein Zwei­ fachführungsschema, wie z. B. ein n-Führungscodierschema, wobei n 3 oder höher ist.
Die Codierer 101a, 101b definieren die Codierung der Einga­ ben (Fig. 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 benach­ barten 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 al­ len 64 Bits des Operanden X als auch des Operanden Y durch­ gefü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 Daten­ wert durch den Codierer 101A codiert wird. Die Codierung des ersten Datenwerts X findet vor der Codierung des dar­ auffolgenden zweiten Datenwerts Y durch Codierer 101B statt. Diese Verzögerung des Treibens des zweiten Daten­ werts 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 Aus­ gangsleitungen 102A, einen codierten Wert zu übertragen, der den ersten Datenwert X, der in den Codierer 101A einge­ geben 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 Aus­ gangsleitungen 102B, den zweiten Datenwert Y zu übertragen, der in den Codierer 101B eingegeben wird.
Gemäß einem anderen Merkmal des Codierschemas ist zu beach­ ten, 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 Ein­ gangsbit 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 mathema­ tische Beziehung zwischen den ersten und zweiten Datenwer­ ten X, Y (X = Y oder X = Y ± 1) gibt, führt dann den Aus­ tausch der Leitungen zu einem zweiten Datenwert Y (und ge­ schobenen zweiten Datenwert), der mindestens zwei in der Zahl entfernt ist von dem ersten Datenwert X (und geschobe­ nen 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-Latch­ schaltung 105 zwischengespeichert werden. Dieser Signalaus­ tausch wird später durch die Originalcodierung durch den Decodierer 107B zurückgekehrt, der den geschobenen zweiten Datenwert Y ausgibt. Codierer 101A, 101B werden unter Be­ zugnahme auf Fig. 7A-7C später in diesem Dokument detail­ liert beschrieben.
Ein Mischlogikblock 103 empfängt sowohl den ersten als auch den zweiten codierten Wert aufeinanderfolgend. Der Mischlo­ gikblock 103 umfaßt eine Mehrzahl von "OR" Logikgattern, die den ersten und zweiten codierten Wert zeitlich beab­ standet, 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, zeit­ lich beabstandet, auf den vier Leitungen 104 (d. h. zwei derselben werden von 0 auf 1 übergehen) an die Schiebeein­ richtung 82. Die Übertragung hat einen zeitlich selbstge­ steuerten monotonen Charakter. Das zeitlich selbstgesteuer­ te Verfahren reduziert die Anzahl der Leitungen, die erfor­ derlich 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 beab­ standet, und auf eine zeitlich selbstgesteuerte Weise über­ tragen, 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 spezifischen Implementierung der Schiebeeinrichtung 82 wird mit Bezugnahme auf Fig. 8 später in diesem Dokument detail­ liert 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ändi­ ge Trennung der Werte X, Y. Die Architektur und der Betrieb der zeitlich selbstgesteuerten Latchschaltung 105 werden mit Bezugnahme auf Fig. 9 später in diesem Dokument detail­ liert beschrieben.
Der erste codierte Datenwert X wird auf zeitlich selbstge­ steuerte Weise von der zeitlich selbstgesteuerten Latch­ schaltung 105 zu dem Decodierer 107A übertragen. Der Deco­ dierer 107A decodiert den geschobenen ersten codierten Da­ tenwert X von 4-zu-1 Codierung (4 Leitungen definieren ei­ nen 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 zeit­ lich selbstgesteuerten Latchschaltung 105, kehrt die Latch­ schaltungsausgangssignale um, und leitet die Logiksignale, wie in Fig. 6 gezeigt, von entsprechenden Leitungen durch jeweilige AND- (UND-)Logikgatter. Die Trennung des gescho­ benen zweiten Datenwerts Y von dem ersten wird erreicht durch Verwenden des Ausgangssignals der zeitlich selbstge­ steuerten Latchschaltung 105 als eine Bitmaske zum Elimi­ nieren 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 Da­ tenwert Y zu empfangen und von 4-zu-1 Codierung in die ori­ ginale 2-zu-1 Codierung zu codieren, das zum zweiten Daten­ wert 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 Fig. 7A wird ein mögliches Beispiel der Architektur für jeden der Codierer 101A, 101B (Fig. 6) dargestellt, das im bevorzugten Ausführungsbeispiel identisch ist. Der Codierer 101 (101A und/oder 101B) akzeptiert zwei Bits B1, B0 (ent­ weder 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 die­ jenige, die bezüglich der Bits B1, B0 gezeigt und beschrie­ ben wurde. Diese zwei Bits B1, B0 von Daten werden im Co­ dierer 101 codiert, um einen und zwar nur einen Draht in der Gruppe von Leitungen 121-124 auszulösen. Dies wird er­ reicht durch Verwenden einer Schaltungskonfiguration wie derjenigen, die in Fig. 5A dargestellt ist. Die Logikele­ mente 113 bis 116 erzeugen eine Schaltung, die gegenseitig ausschließlich ist und werden einen und zwar nur einen Draht in der Gruppe der codierten Datendrähte 121-124 aus­ lösen, für jede Kombination von eingegebenen Bits B1, B0.
Fig. 7B zeigt eine spezifische Implementierung des Codie­ rers 101, der entworfen ist, um eine zeitlich selbstgesteu­ erte monotone Progression bzw. Reihe zu implementieren. Die Signale, die den Bits B1(H), B1(L), B0(H), B0(L) entspre­ chen, werden zu Leiterlogiktransistoren 126A-126H gesendet, die vorzugsweise n-Typ-Metalloxidhalbleiter-Feldeffekttransistoren (gut bekannt als MOSFETs) sind, deren jeweilige Gates wie gezeigt durch die Eingangssignale betrieben werden. Die Transistoren 128A-128D, die vorzugs­ weise 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 vorzula­ den. Die Codierer 101A, 101B werden beide periodisch vorge­ laden durch den Zeitgeber 109 (Fig. 6) der entworfen ist, um die dynamische Logik während einer halben Taktperiode (Zyklus) vorzuladen, und um während der anderen halben Lo­ gikperiode eine Logikauswertung (und Entladung) zuzulassen. Komplementäre MOSFET (jeder umfaßt sowohl einen PMOSFET zum Hochziehen und einen NMOSFET zum Runterziehen) -Invertierer 129A-129D werden durch die Spannung VDD vorgespannt und durch ihren jeweiligen Vorladungsknoten aktiviert. Folglich werden, wenn der Vorladungsknoten vorgeladen wird, die Aus­ gangssignale E3, E2, E1, E0 alle niedrig getrieben, während die CMOSFETs ihre jeweiligen Eingangssignale wirksam umkeh­ ren. Sobald eines oder zwei der Bits/Leitungen B1(H), B1(L), B0(H), B0(L), von niedrig auf hoch übergeht, wird ei­ ner der Vorladungsknoten runtergezogen (geerdet) und dar­ auffolgend 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 de­ finiert.
In Fig. 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 Über­ setzen 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 über­ geht, zu einem 2-Bit/4-Leitungscodierschema, bei dem zwei Bits gemeinsam dadurch definiert werden, ob eine der Lei­ tungen von niedrig auf hoch übergeht. Als Beispiel wird 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 seines benachbarten Bits X1 in der glei­ chen Operande ist bestimmt durch den Satz von X1(H) und X1(L). Nach der Codierung durch Codierer 101A, werden so­ wohl X1 als auch X0 durch den Satz von logischen Werten E3, E2, E1, E0 definiert.
Fig. 7D ist eine Logikwahrheitstabelle, die ein Beispiel des dynamischen Codierprozesses zeigt, der durch die Kombi­ nation der Codierer 101A, 101B implementiert wird, wenn dieselben zwei Bits von jedem Operanden X, Y auf den glei­ chen 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 Neucodie­ rung 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ß auf­ grund des Verbindungsschalters an dem Eingangssignal zu dem Codierer 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 aufwei­ sen. 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 Fig. 7D einen unbeachtlichen Zustand ("don't care condition") bedeutet (und nicht unterstützten Codierungen entspricht, die nicht innerhalb der mathematischen Bezie­ hung der Operandenpaare liegen).
In Fig. 8 ist ein mögliches Beispiel einer Schiebeeinrich­ tung 82 dargestellt. Diese Schiebeeinrichtung 82 wird im folgenden öffentlich erhältlichen Artikel detailliert be­ schrieben: Craig Heikes und Glenn Colon-Bonet, "A Dual Flo­ ating Point Coprocessor With An FMAC Architecture", 1996 IEEE International Solid State Circuits Conference, S. 254-255 (0-7803-3136-2/96), welcher hierin durch Bezugnahme aufgenommen ist. Der Einfachheit halber wird nur eine kurze Erklärung dieser Entwicklung hierin später aufgeführt. Vie­ le andere Schiebeeinrichtungsgestaltungen sind möglich.
Die Gestaltung umfaßt eine hierarchische Anordnung von Mul­ tiplexern zum wesentlichen Ausführen jeder gewünschten Schiebung in den Daten (erste Daten X und zweite Daten Y). Codierer/Treiber 131A-131 G 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ührungsbitantizipierer 55, 94 von Fig. 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 Fig. 3, 5) bestimmt. Die Ausgangssignale der Multiplexer 135 werden in Multiple­ xer 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ührungsbitantizi­ pierer 55, 94 von den Fig. 3, 5) in der Richtung der 1 Bit- Schiebung. Dieses Ausgangssignal der Übertragungsleitungs­ schiebeeinrichtung wird dann zu den zeitlich selbstgesteu­ erten Datenlatchschaltungen 105 übertragen.
In Fig. 9 wird ein mögliches Beispiel einer zeitlich selbstgesteuerten Latchschaltung 105 (Fig. 6) dargestellt. Die zeitlich selbstgesteuerte Latchschaltung 105 umfaßt Schaltungsanordnung, die beim Empfangen der ersten gescho­ benen Daten X auf Logikwegen E3, E2, E1, E0, weitere Ein­ gangssignale deaktiviert. In anderen Worten, die selbsttak­ tende Latchschaltung 105 zwischenspeichert X, nicht Y, und ermöglicht daher totale Trennung von X und Y durch angemes­ sene Logik.
Die zeitlich selbstgesteuerte Datenlatchschaltung 105 über­ trägt den ersten Datenwert X zum Decodierer 107A zum Deco­ dieren des Werts X vom 4-Bit/Leitungencodieren zurück zum 2-Bit/Leitungencodieren. Die zeitlich selbstgesteuerte Da­ tenlatchschaltung 105 führt den ersten codierten Datenwert X zu der Trennungslogik 106 (Fig. 6) zu, so daß die Tren­ nungslogik 106 den zweiten Datenwert Y von dem ersten Da­ tenwert 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 co­ dierten Datenwert Y zu bestimmen.
In der wie in Fig. 9 gezeigten Architektur wird der Satz von Logikwegen E3, E2, E1, E0 weitergeleitet zu der Latch­ schaltung 105 und wird spezifisch empfangen durch jeweilige Transistoren 141A-141D, vorzugsweise NMOSFETs, die verwen­ det werden, um Zwischenspeichern des zweiten Datenwerts Y zu verhindern, nachdem der erste Datenwert X bereits zwi­ schengespeichert 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 Ausgangs­ signal der Latchschaltung 105 durchführt. Entsprechend geht das Ausgangssignal des OR- (ODER-) Logikgatters 155, sobald es einen Übergang an einem der Ausgangssignale gibt, in ei­ nen 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 Zu­ stand, sie wurden bereits durch jeweilige Transistoren 143A-143D niedrig gezogen, die durch das Zeitgebungssignal CK ausgelöst werden. Die Vorladungsperiode des Zeitsignals CK bewirkt, daß die Knoten niedrig gezogen werden. Wenn eine der Leitungen E3, E2, E1, E0 von niedrig zu hoch über geht, dann wird dieser hohe Wert innerhalb der entsprechen­ den Sätze von Flip-Flop-Umkehren (151a-151a' oder 151b, 151b oder 151c, 151c' oder 151d, 151d') zwischengespeichert. Ein Satz der Flip-Flop-Invertierer, beispielsweise CMOSFET-Invertierer, ist verbunden mit jedem Bit-Leitungen E3, E2, E1, E0. Schließlich werden die Bits/Leitungen E3, E2, E1, E0 jeweils durch Invertierer 153A-153D, beispielsweise CMOSFET-Invertierer, umgekehrt, und werden schließlich zum Decodierer 107A weitergeleitet.
In Fig. 10 wird ein mögliches Beispiel eines Decodierers 107 (107A und/oder 107B von Fig. 6) dargestellt. Die Deco­ dierer 107A und 107B sind in den bevorzugten Ausführungs­ beispielen identisch. Der Decodierer 107 akzeptiert Ein­ gangssignale E3, E2, E1, E0 von der zeitlich selbstgesteuer­ ten Latchschaltung 105 oder der Trennungslogik 106, was je­ weils zutreffend ist, und decodiert die 4-Leitungen/1-Bit Operandencodierung zu 2-Leitungen/1-Bit Operandencodierung. Dies wird dadurch erreicht, daß, wie in Fig. 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 (31)

1. Verfahren (100) für einen Prozessor (21), das folgende Schritte aufweist:
Codieren (80) erster und zweiter Daten (102A, 102B), die jeweils auf einem getrennten ersten beziehungswei­ se zweiten Satz von Logikwegen mit einem gemeinsamen Codierschema definiert sind, auf den gleichen dritten Satz von Logikwegen, wobei der dritte Satz von Logik­ wegen ein anderes Codierschema aufweist als der erste und zweite Satz von Logikwegen;
Getrenntes, zeitlich aufeinanderfolgendes Verarbeiten (82) der ersten und zweiten Daten auf eine zeitlich selbstgesteuerte Weise, während eine 1-zu-1-Entsprechung zwischen Eingangscodierung und Ausgangscodierung der ersten und zweiten Daten beibehalten wird;
Senden (82) der verarbeiteten ersten und zweiten Daten auf einen vierten Satz von Logikwegen; und
Decodieren (90) der ersten und zweiten Daten von dem vierten Satz von Logikwegen auf einen getrennten fünf­ ten beziehungsweise sechsten Satz von Logikwegen, die hinsichtlich des Codierschemas dem ersten und zweiten Satz von Logikwegen entsprechen.
2. Verfahren gemäß Anspruch 1, bei dem die ersten und zweiten Daten (102A, 102B) einen mathematischen Bezug aufweisen.
3. Verfahren gemäß Anspruch 1 oder 2, das ferner folgende Schritte aufweist:
Definieren der ersten und zweiten Daten (102A, 102B) durch zwei logische Variablen;
Umdefinieren (101A, 101B) jeder der ersten und zweiten Daten durch vier logische Variable;
Durchführen (82) einer Schiebeoperation an jeden der ersten und zweiten Daten (102A, 102B), die jede durch vier jeweilige logische Variable bestimmt sind; und
Umdefinieren (105, 106) jeder der ersten und zweiten Daten (102A, 102B) durch zwei logische Variable.
4. Verfahren gemäß einem der Ansprüche 1 bis 3, bei dem der Schritt des Verarbeitens den Schritt des Schiebens (82) jeder der ersten und zweiten Daten (102A, 102B) aufweist.
5. Verfahren gemäß einem der Ansprüche 1 bis 4, das fer­ ner den Schritt des Implementierens einer monotonen Progression entlang jedem des ersten bis sechsten Sat­ zes von Logikwegen aufweist.
6. Verfahren gemäß einem der Ansprüche 1 bis 5, das fer­ ner die folgenden Schritte aufweist:
Übersetzen (101A) der ersten Daten (102A) von einem 2-zu-1-Codierschema in ein 4-1-Codierschema auf dem dritten Satz von Logikwegen;
Verzögern (108) der zweiten Daten (102B); und
Übersetzen (101B) der verzögerten zweiten Daten (102B) von dem 2-zu-1-Codierschema in das 4-zu-1-Codierschema auf dem dritten Satz von Logikwegen.
7. Verfahren gemäß Anspruch 6, das ferner den Schritt des Tauschens von Bits der verzögerten zweiten Daten mit dem 2-zu-1-Codierschema vor dem Schritt des Übersetzens (101B) aufweist.
8. Verfahren gemäß Anspruch 6 oder 7, das ferner den Schritt des Kombinierens (103) der ersten (102A) und der zweiten verzögerten (102B) Daten auf den dritten Satz von Logikwegen aufweist, indem entsprechende Bits der Daten durch jeweilige OR-Logikgatter gesendet wer­ den.
9. Verfahren gemäß einem der Ansprüche 1 bis 8, das fol­ gende Schritte aufweist:
aufeinanderfolgendes Zwischenspeichern (105) der ers­ ten und zweiten Daten, nach dem Schritt des Verarbei­ tens (82); und
Trennen (106) der zweiten Daten von den ersten Daten, nachdem die ersten Daten zwischengespeichert wurden und etwa dann, wenn die zweiten Daten durch die Latch­ schaltung empfangen werden.
10. Verfahren gemäß Anspruch 1, das ferner folgende Schritte aufweist:
Übersetzen (101A) der ersten Daten (102A) von einem 2-zu-1-Codierschema in ein 4-1-Codierschema auf dem dritten Satz von Logikwegen;
Verzögern (108) der zweiten Daten (102B);
Übersetzen (101B) der verzögerten zweiten Daten (102B) von dem 2-zu-1-Codierschema in das 4-zu-1-Codierschema auf dem dritten Satz von Logikwegen;
Aufeinanderfolgendes Zwischenspeichern (105) der ers­ ten und zweiten Daten nach dem Verarbeitungsschritt;
Trennen (106) der zweiten Daten von den ersten Daten, nachdem die ersten Daten zwischengespeichert wurden, dann, wenn die zweiten Daten durch die Latchschaltung empfangen werden; und
getrenntes Decodieren der ersten und zweiten Daten von dem 4-zu-1-Codierschema in das 2-zu-1-Codierschema.
11. Prozessor, der entworfen ist, um das Verfahren gemäß einem der Ansprüche 1 bis 10 zu verwenden.
12. System mit folgenden Merkmalen:
einer Codiereinrichtung (80) zum Codieren erster und zweiter Daten (102A, 102B), die auf einem getrennten ersten beziehungsweise zweiten Satz von Logikwegen de­ finiert sind, auf den gleichen dritten Satz von Logik­ wegen;
einer Verarbeitungseinrichtung (82) zum aufeinander­ folgenden Empfangen der ersten und zweiten Daten von der Codiereinrichtung auf dem dritten Satz von Logik­ wegen, wobei die Verarbeitungseinrichtung zum getrenn­ ten zeitlich aufeinanderfolgenden Verarbeiten der ers­ ten und zweiten Daten auf zeitlich selbstgesteuerte Weise, während eine 1-zu-1-Entsprechung zwischen einer Eingangscodierung und Ausgangscodierung der ersten und zweiten Daten beibehalten wird, vorgesehen ist, und wobei die Verarbeitungseinrichtung zum Treiben der verarbeiteten ersten und zweiten Daten auf einen vier­ ten Satz von Logikwegen vorgesehen ist; und
einer Decodiereinrichtung (90) zum aufeinanderfolgen­ den Empfangen der verarbeiteten ersten und zweiten Da­ ten von der Verarbeitungseinrichtung auf dem vierten Satz von Logikwegen, wobei die Decodiereinrichtung (90) zum Decodieren der ersten und zweiten Daten auf einen getrennten fünften beziehungsweise sechsten Satz von Logikwegen, die hinsichtlich der Codierung dem ersten und zweiten Satz von Logikwegen entsprechen, vorgesehen ist.
13. System gemäß Anspruch 12, bei dem die ersten und zwei­ ten Daten einen mathematischen Bezug aufweisen.
14. System gemäß Anspruch 12 oder 13, bei dem jede der ersten und zweiten Daten (102A, 102B) durch zwei logi­ sche Variablen definiert sind, wobei die Codierein­ richtung (80) jede der ersten und zweiten Daten (102A, 102B) durch vier logische Variablen umdefiniert, wobei die Verarbeitungseinrichtung (82) an jeden der ersten und zweiten Daten eine Schiebeoperation durchführt, von denen jede durch vier jeweilige logische Variablen definiert sind, und wobei die Decodiereinrichtung (90) jede der ersten und zweiten Daten durch zwei logische Variablen umdefiniert.
15. System gemäß einem der Ansprüche 12 bis 14, bei dem die Verarbeitungseinrichtung (82) eine Schiebefunktion an jeden der ersten und zweiten Daten durchführt.
16. System gemäß einem der Ansprüche 13 bis 15, bei dem der erste bis sechste Logikweg jeweils eine monotone logische Progression implementieren.
17. System gemäß einem der Ansprüche 12 bis 16, bei dem die Codiereinrichtung (80) folgende Merkmale aufweist:
eine erste Codiereinrichtung (101A) zum Übersetzen der ersten Daten von einer 2-zu-1 Codierung in eine 4-zu-Codierung auf dem dritten Satz von Logikwegen;
eine Verzögerungseinrichtung (108) zum Verzögern der zweiten Daten; und
eine zweite Codiereinrichtung (101B) zum Übersetzen der verzögerten zweiten Daten von 2-zu-1-einer in eine 4-zu-1-Codierung auf dem dritten Satz von Logikwegen.
18. System gemäß Anspruch 19, das ferner eine Verbindungs­ umschalteinrichtung zum Ändern der 2-zu-1-Codierung vor der Übersetzung durch die zweite Codiereinrichtung (101B) aufweist.
19. System gemäß Anspruch 18, das ferner eine Mehrzahl von OR-Logikgattereinrichtungen zum Kombinieren der ersten und zweiten Daten auf dem dritten Satz von Logikwegen aufweist.
20. System gemäß einem der Ansprüche 12 bis 19, das ferner folgende Merkmale aufweist:
eine zeitlich selbstgesteuerte Latchschaltung(105) zum Empfangen der ersten und zweiten Daten von der Verar­ beitungseinrichtung (82); und
eine Trennlogikeinrichtung (106) zum aufeinanderfol­ genden Empfangen der ersten und zweiten Daten von der zeitlich selbstgesteuerten Latchschaltung (105) und zum Trennen der zweiten Daten von den ersten Daten.
21. System gemäß einem der Ansprüche 12 bis 20,
  • a) wobei die Codiereinrichtung (80) folgende Merkma­ le aufweist:
    • 1. eine erste Codiereinrichtung (101A) zum Übersetzen der ersten Daten von einer 2-zu-1-Codierung in eine 4-zu-Codierung auf dem dritten Satz von Logikwegen;
    • 2. eine Verzögerungseinrichtung (108)zum Verzö­ gern der zweiten Daten; und
    • 3. eine zweite Codiereinrichtung (101B) zum Übersetzen der verzögerten zweiten Daten von einer 2-zu-1-Codierung in eine 4-zu-1-Codierung auf dem dritten Satz von Logikwe­ gen; und
  • b) wobei die Codiereinrichtung (80) folgende Merkma­ le umfaßt:
    eine zeitlich selbstgesteuerte Latchschaltung (105) zum Empfangen der ersten und zweiten Daten von der Verarbeitungseinrichtung;
    Trennungslogikeinrichtung (106) zum aufeinander­ folgenden Empfangen der ersten und zweiten Daten von der zeitlich selbstgesteuerten Latchschaltung und zum Trennen der zweiten Daten von den ersten Daten;
    eine erste Decodiereinrichtung (107A) zum Empfan­ gen der ersten Daten von der zeitlich selbstge­ steuerten Latchschaltung und zum Decodieren der ersten Daten von der 4-zu-1-Codierung zu der 2-zu-1-Codierung; und
    eine zweite Codiereinrichtung (107B) zum Empfan­ gen der zweiten Daten von der Trennlogikeinrich­ tung (106) und zum Δecodieren der zweiten Daten von der 4-zu-1-Codierung zu der 2-zu-1-Codierung.
22. Prozessor, der das System gemäß einem der Ansprüche 12 bis 21 verwendet.
23. Prozessor mit folgenden Merkmalen:
einem Codierer (80), der entworfen ist, um erste und zweite Daten (102A, 102B), die jeweils auf einem getrennten ersten beziehungsweise zweiten Satz von Lo­ gikwegen definiert sind, auf den gleichen dritten Satz von Logikwegen zu codieren;
eine Vorrichtung (82), die aus einer Gruppe ausgewählt ist, die eine Schiebeeinrichtung, ein Bus-Netzwerk, einen Multiplexer und einen Puffer umfaßt, wobei die Vorrichtung entworfen ist, um die ersten und zweiten Daten getrennt und zeitlich aufeinanderfolgend und auf eine zeitlich selbstgesteuerte Weise zu verarbeiten, und um die verarbeiteten ersten und zweiten Daten auf den vierten Satz von Logikwegen zu senden; und
einen Decodierer (90), der entworfen ist, um die ver­ arbeiteten ersten und zweiten Daten aufeinanderfolgend von der Vorrichtung auf dem vierten Satz von Logikwe­ gen zu empfangen, und entworfen ist, um die ersten und zweiten Daten auf einen getrennten fünften beziehungs­ weise sechsten Satz von Logikwegen zu decodieren.
24. Prozessor gemäß Anspruch 23, bei dem die ersten und zweiten Daten (102A, 102B) einen mathematischen Bezug aufweisen.
25. Prozessor gemäß Anspruch einem der Ansprüche 25 bis 27, bei dem jede der ersten und zweiten Daten (102A, 102B) durch zwei logische Variablen definiert sind, wobei der Codierer (80) entworfen ist, um jede der er­ sten und zweiten Daten durch vier logische Variablen neu zu definieren, wobei die Vorrichtung (82) entwor­ fen ist, um eine Operation an jeden der ersten und zweiten Daten durchzuführen, die jeweils durch vier jeweilige logische Variablen definiert sind, und wobei der Decodierer (90) entworfen ist, um jede der ersten und zweiten Daten durch zwei logische Variablen um zu definieren.
26. Prozessor gemäß einem der Ansprüche 23 bis 25, bei dem der erste bis sechste Logikweg jeweils eine monotone logische Progression implementiert.
27. Prozessor gemäß einem der Ansprüche 23 bis 26, bei dem der Codierer folgende Merkmale aufweist:
einen ersten Codierer (101A) der entworfen ist, um die ersten Daten von einer 2-zu-1-Codierung zu einer 4-1-Codierung auf dem dritten Satz von Logikwegen zu über­ setzen;
eine Verzögerungseinrichtung (108), die entworfen ist, um eine Verzögerung bezüglich der zweiten Daten zu be­ wirken; und
einen zweiten Codierer (101B), der entworfen ist, um die verzögerten zweiten Daten von der 2-zu-1-Codierung in die 4-zu-1-Codierung auf dem dritten Satz von Lo­ gikwegen zu übersetzen.
28. Prozessor gemäß Anspruch 27, der ferner eine Über­ kreuzverbindung umfaßt, welche die Bits der verzöger­ ten zweiten Daten vor der Übersetzung durch die zweite Codiereinrichtung (101B) umschaltet.
29. Prozessor gemäß Anspruch 27 oder 28, der ferner eine Mehrzahl von OR-Logikgattern umfaßt, die gestaltet sind, um die ersten und zweiten Daten auf den dritten Satz von Logikwegen zu kombinieren.
30. Prozessor gemäß Anspruch 25, der ferner folgende Merk­ male aufweist:
eine zeitlich selbstgesteuerte Latsch-Einrichtung (105), die entworfen ist, um die ersten und zweiten Daten von der Vorrichtung (82) zu empfangen; und
eine Trennungslogik (106), die entworfen ist, um die ersten und zweiten Daten aufeinanderfolgend von der zeitlich selbstgesteuerten Latchschaltung (105) zu empfangen und zum Trennen der zweiten Daten von den ersten Daten.
31. Prozessor gemäß einem der Ansprüche 23 bis 30
  • a) bei dem der Codierer (80) folgende Merkmale auf­ weist:
    • 1. einen ersten Codierer (101A), der entworfen ist, um die ersten Daten von einer 2-zu-1-Codierung in eine 4-1-Codierung auf dem dritten Satz von Logikwegen zu übersetzen;
    • 2. einen Verzögerungsmechanismus (108), der entworfen ist, um die zweiten Daten zu ver­ zögern; und
    • 3. einen zweiter Codierer (101B), der entworfen ist, um die verzögerten zweiten Daten von einer 2-zu-1-Codierung in eine 4-zu-1-Codierung auf dem dritten Satz von Logikwe­ gen zu übersetzen; und
  • b) bei dem der Decodierer (90) folgende Merkmale aufweist:
    eine zeitlich selbstgesteuerte Latchschaltung (105), die entworfen ist, um die ersten und zwei­ ten Daten von der Vorrichtung (82) zu empfangen;
    Trennungslogik (106), die entworfen ist, um die ersten und zweiten Daten aufeinanderfolgend von der zeitlich selbstgesteuerten Latchschaltung (105) zu empfangen, und die entworfen ist, um die zweiten Daten von den ersten Daten zu trennen;
    einen erster Decoder (107A), der entworfen ist, um die ersten Daten von der zeitlich selbstge­ steuerten Latchschaltung (105) zu empfangen und entworfen ist, um die ersten Daten von einer 4-zu-1-Codierung in eine 2-zu-1-Codierung zu deco­ dieren; und
    einen zweiten Decodierer (107B), der entworfen ist, um die zweiten Daten von der Trennungslogik (106) zu empfangen und der entworfen ist, um die zweiten Daten von einer 4-zu-1-Codierung in eine 2-zu-1-Codierung zu decodieren.
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
US09/583,206 US6738795B1 (en) 2000-05-30 2000-05-30 Self-timed transmission system and method for processing multiple data sets
US583206 2000-05-30

Publications (2)

Publication Number Publication Date
DE10124351A1 true DE10124351A1 (de) 2001-12-20
DE10124351B4 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
EP1500145A1 (de) * 2002-04-17 2005-01-26 Koninklijke Philips Electronics N.V. Datenkommunikationsbus
US7065602B2 (en) * 2003-07-01 2006-06-20 International Business Machines Corporation Circuit and method for pipelined insertion
DE60321010D1 (de) * 2003-11-26 2008-06-26 Texas Instruments Inc 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
US9411554B1 (en) 2009-04-02 2016-08-09 Xilinx, Inc. Signed multiplier circuit utilizing a uniform array of logic blocks
US8706793B1 (en) 2009-04-02 2014-04-22 Xilinx, Inc. Multiplier circuits with optional shift function
US7948265B1 (en) 2009-04-02 2011-05-24 Xilinx, Inc. Circuits for replicating self-timed logic
US7982496B1 (en) 2009-04-02 2011-07-19 Xilinx, Inc. Bus-based logic blocks with optional constant input
US7746108B1 (en) 2009-04-02 2010-06-29 Xilinx, Inc. Compute-centric architecture for integrated circuits
US7746103B1 (en) * 2009-04-02 2010-06-29 Xilinx, Inc. Multi-mode circuit in a self-timed integrated circuit
US9002915B1 (en) 2009-04-02 2015-04-07 Xilinx, Inc. Circuits for shifting bussed data
US7746109B1 (en) 2009-04-02 2010-06-29 Xilinx, Inc. Circuits for sharing self-timed logic
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
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的异步微流水线数据流控制器

Family Cites Families (7)

* 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
US5649225A (en) * 1994-06-01 1997-07-15 Advanced Micro Devices, Inc. Resynchronization of a superscalar processor
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

Also Published As

Publication number Publication date
US6738795B1 (en) 2004-05-18
US20040044716A1 (en) 2004-03-04
US6970897B2 (en) 2005-11-29
DE10124351B4 (de) 2005-10-27
JP2002007111A (ja) 2002-01-11

Similar Documents

Publication Publication Date Title
DE10124351A1 (de) Zeitlich selbstgesteuertes Übertragungssystem und Verfahren zum Verarbeiten von Mehrfachdatensätzen
DE3853805T2 (de) Digitaler Multiplizierer und Multiplizierer-Akkumulator, welcher Zwischenergebnisse vorlädt und akkumuliert.
DE60202749T2 (de) Schnittstelle von synchron zu asynchron zu synchron
DE69802865T2 (de) Logische Domino-Schaltungen
DE1549477B1 (de) Einrichtung zur schnellen akkumulation einer anzahl mehr stelliger binaerer operanden
DE3306084A1 (de) Rechnerarchitektur zur gleitkomma -addition
DE1549476B2 (de) Anordnung zur ausfuehrung von divisionen
DE60117831T2 (de) Modul zur erzeugung von decoderschaltungen für faltungscodes, zugehöriges verfahren und schaltung
DE69130640T2 (de) Arithmetische Operationseinheit mit Bit-Invertierungsfunktion
DE3888230T2 (de) Einrichtung und Verfahren zur Durchführung einer Schiebeoperation mit einer Multipliziererschaltung.
DE1809219A1 (de) Binaeres Vielfach-Addierwerk zur gleichzeitigen Addition mehrerer binaerer Zahlen
DE2222197C3 (de) Anordnung zum Auf- bzw. Abrunden von Binärzahlen
DE1549478B1 (de) Gleitkomma-Rechenwerk zur schnellen Addition oder Subtraktion binaerer Operanden
DE2758130C2 (de) Binärer und dezimaler Hochgeschwindigkeitsaddierer
DE3889150T2 (de) Filter n-ten Ranges.
EP0453641A2 (de) CORDIC-Prozessor für Vektordrehungen in Carry-Save-Architektur
DE4019646C2 (de) Vorrichtung und Verfahren zum Multiplizieren von Datenwörtern in Zweier-Komplement-Darstellung
DE68927488T2 (de) Binäre Übertragvorgriffsschaltung
EP1540460B1 (de) Vorrichtung und verfahren zum umsetzen und addiererschaltung
DE1803222B2 (de) Verfahren zum zusammenfassen pulscodierter nachrichten
DE69230520T2 (de) Verfahren und Anordung zur Erzeugung von Summeinformation-/Rundungskontrolle-Signal
DE1449564C3 (de) Recheneinrichtung zur Subtraktion mehrerer Operanden oder zu deren Addition durch Verwendung von Komplementärwerten eines der Operanden
DE1241159B (de) UEbertragschaltung fuer ein Schnelladdierwerk
DE3889746T2 (de) Zähler.
DE2017132B2 (de) Binärer Parallel-Addierer

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