DE69510966T2 - Verfahren zur Lenkung von Instruktionen in einem Rechnersystem und Rechnersystem zur Durchführung dieses Verfahrens - Google Patents
Verfahren zur Lenkung von Instruktionen in einem Rechnersystem und Rechnersystem zur Durchführung dieses VerfahrensInfo
- Publication number
- DE69510966T2 DE69510966T2 DE69510966T DE69510966T DE69510966T2 DE 69510966 T2 DE69510966 T2 DE 69510966T2 DE 69510966 T DE69510966 T DE 69510966T DE 69510966 T DE69510966 T DE 69510966T DE 69510966 T2 DE69510966 T2 DE 69510966T2
- Authority
- DE
- Germany
- Prior art keywords
- instructions
- instruction
- word
- register
- predecode
- 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 - Lifetime
Links
- 238000000034 method Methods 0.000 title claims description 6
- 230000009977 dual effect Effects 0.000 description 15
- 238000010586 diagram Methods 0.000 description 8
- 101001024286 Homo sapiens Notchless protein homolog 1 Proteins 0.000 description 6
- 102100035358 Notchless protein homolog 1 Human genes 0.000 description 6
- 238000012545 processing Methods 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 230000001419 dependent effect Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3818—Decoding for concurrent execution
- G06F9/382—Pipelined decoding, e.g. using predecoding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3853—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Description
- Die vorliegende Erfindung bezieht sich auf Vorcodier- und Steuer-Befehle, die in einem Computersystem, beispielsweise in einem superskalaren Prozessor, ausgeführt werden.
- Die meisten modernen Computersysteme umfassen eine Zentralverarbeitungseinheit (CPU) und einen Hauptspeicher. Die Geschwindigkeit, mit der die CPU Befehle und Operanden decodieren und ausführen kann, hängt von der Rate ab, mit der die Befehle und Operanden von dem Hauptspeicher zu der CPU übertragen werden können. Bei einem Versuch diese für die CPU erforderliche Zeit zu reduzieren, um Befehle und Operanden aus dem Hauptspeicher zu erhalten, umfassen viele Computersysteme einen Cachespeicher zwischen der CPU und dem Hauptspeicher.
- Ein Cachespeicher ist ein kleiner Hochgeschwindigkeitspufferspeicher, der verwendet wird, um vorübergehend jene Abschnitte der Inhalte des Hauptspeichers zu halten, von denen angenommen wird, daß dieselben in der nahen Zukunft durch die CPU verwendet werden. Der Hauptzweck eines Cachespeichers besteht darin, die Zeit zu verkürzen, die notwendig ist, um Speicherzugriffe, entweder für Daten- oder Befehls- Holvorgänge, durchzuführen. Auf die Informationen, die in dem Cachespeicher positioniert sind, kann mit weniger Zeit zugegriffen werden, als auf Informationen, die in dem Hauptspeicher positioniert sind. Folglich muß eine CPU mit einem Cachespeicher wesentlich weniger Zeit beim Warten auf Befehle und Operanden, die geholt und/oder gespeichert werden sollen, verwenden.
- Ein Cachespeicher besteht aus vielen Blöcken von einem oder mehreren Datenworten. Jedem Block ist ein Adreßetikettzugeordnet, das einzigartig identifiziert, von welchem Block des Hauptspeichers derselbe eine Kopie ist. Jedesmal, wenn der Prozessor einen Speicherbezug durchführt, wird ein Adreßeti kettvergleich durchgeführt, um zu sehen, ob eine Kopie der angeforderten Daten in dem Cachespeicher liegt. Wenn sich der gewünschte Speicherblock nicht in dem Cachespeicher befindet, wird der Block aus dem Hauptspeicher wiedergewonnen, in dem Cachespeicher gespeichert und zu dem Prozessor zugeführt. Ein Cachespeicher, der verwendet wird, um Befehle zu speichern, wird allgemein als ein Befehlscache bezeichnet. Ein Programmzähler wird verwendet, um zu bestimmen, welche Befehle zur Ausführung geholt werden sollen.
- Bei einigen Computersystemen kann eine parallele Ausführung von Befehlen (die das "Bündeln" der Befehle genannt wird) verwendet werden, um den Computerbetrieb zu beschleunigen. Auf Prozessoren, die eine parallele Ausführung von Befehlen vorsehen, kann als superskalare Prozessoren Bezug genommen werden. Superskalare Computer verwenden allgemein mehr als eine Befehlseinheit, um das Bündeln von Befehlen vorzusehen. Eine Ausführungseinheit ist beispielsweise eine Arithmetiklogikeinheit (ALU) oder eine Gleitkommaeinheit (FPU).
- Selbst bei mehreren Ausführungseinheiten gibt es dennoch Begrenzungen, welche Befehle gebündelt werden können. Beispielsweise können einige Befehle Konflikte mit anderen Befehlen aufweisen. Der Konflikttyp kann verschiedene Formen annehmen. Ein Resourcenkonflikt tritt auf, wenn zwei Befehle die gleiche begrenzte Prozessorresource verwenden. Dies kann beispielsweise auftreten, wenn beide Befehle die Verwendung der gleichen Ausführungseinheit erfordern. Alternativ kann die Datenabhängigkeit zu einem Konflikt führen. Das heißt, wenn ein Befehl ein Resultat erzeugt, das durch einen nächsten Befehl verwendet werden soll, können die zwei Befehle nicht gebündelt werden. Ferner kann eine prozedurale Abhängigkeit zu einem Konflikt führen. Beispielsweise kann ein Befehl, der einem Verzweigungsbefehl folgt, nicht mit dem Verzweigungsbefehl gebündelt werden, da die Ausführung des Befehls davon abhängt, ob die Verzweigung genommen wird. Um zu bestimmen, ob zwei oder mehrere gegebene Befehle gebündelt werden können, ist es allgemein notwendig, zuerst die Befehle zu decodieren. Dies kann beispielsweise durch eine Befehlsdecodiereinheit durchgeführt werden.
- Verschiedene Verfahren haben den Leistungsmehraufwand zum Decodieren und Steuern von Befehlen zu der ordnungsgemäßen Ausführungseinheit minimiert. Beispielsweise können Kompilierertechniken verwendet werden, um die Anweisungsdecodiereinheit zu unterstützen, um zu bestimmen, ob zwei oder mehrere Befehle gebündelt werden können. Das heißt während der Kompilierzeit, der Kompiliererzeit, kann der Kompilierer eines oder mehrere Bits in dem tatsächlichen Befehlsoperationscode (OP-Code) codieren, der durch die Anweisungs-Decodier/Steuer-Hardware verwendet werden soll. Diese Bits können Informationen zu der Decodierhardware liefern, wie der Befehl mit anderen Befehlen gebündelt werden kann. Die Vordecodierinformationen werden tatsächlich als Teil der Befehlssatzarchitektur verwendet. Die Informationen, die durch die Decodierhardware benötigt werden, sind jedoch prozessorabhängig. Daher kann eine derartige Decodierung von Bits die Flexibilität von unterschiedlichen Prozessoren begrenzen, um den OP-Code ohne ein Codeneukompilieren optimal auszuführen.
- Bei einem System wird ein zweckgebundenes vordecodiertes Bit in dem Befehlscache gespeichert, das durch die Decodierhardware verwendet wird, um Befehle zu entweder einer Ganzzahl- Arithmetiklogikeinheit (ALU) oder einer Gleitkommaeinheit (FPU) zu steuern. Siehe beispielsweise E. DeLano, W. Walker, J. Yetter, M. Forsyth, "A High Speed Superscalar PA-RISC Processor", IEEE, 1992, Seiten 116-121.
- Die EP-A-0,455,966 offenbart ein Computersystem, das einen Hauptspeicher, einen Befehlscache und einen Prozessor umfaßt, der mit dem Hauptspeicher und dem Befehlscache gekoppelt ist, wobei der Prozessor folgende Merkmale aufweist: eine Speicherschnittstelle, einen Vordecodierer, der mit der Speicherschnittstelle gekoppelt ist, zum Vordecodieren von Befehlen, um Vordecodierbits oder vordecodierte Bits zu erzeugen, die anzeigen, ob und wie die Befehle gebündelt wer den können, eine Schnittstelle, die mit dem Vordecodierer und dem Befehlscache gekoppelt ist, zum Speichern der Befehle und der Vordecodierbits in dem Befehlscache und zum Holen der Befehle aus dem Befehlscache mit den Vordecodierbits, eine Mehrzahl von Funktionseinheiten, die eine erste Allgemeinzweckarithmetiklogikeinheit, eine zweite Adreßerzeugungstyparithmetiklogikeinheit und/oder eine Gleitkommaeinheit umfassen können, und eine Steuereinrichtung, die mit der Schnittstelle und den Funktionseinheiten gekoppelt ist, zum Steuern jedes Befehls zu einer Funktionseinheit auf der Basis der Vordecodierbits.
- IEEE Pacific Rim Conference on Communications, Compensators and Signal Processing, 9.-10. Mai 1991; Bd. 1, Seiten 21- 24, Minagawa u. a., in "Pre-Decoding Mechanism for Superscalar Architecture" offenbart eine Vordecodiervorrichtung für superskalare Prozessoren, die notwendig ist, um Befehle zu mehreren Funktionseinheiten auszugeben. Der Vordecodierer entscheidet, welche Funktionseinheit einen Befehl während eines Cache-Verfehlens und -Neuauffüllens ausführen sollte. Ein Vordecodieretikett wird durch den Vordecodierer erzeugt. Dieses Etikett wird mit Befehlen zu einem Befehlscachespeicher gesichert. Der Prozessor holt Befehle mit dem Vordecodieretikett und gibt Befehle aus, die durch das Vordecodieretikett gesteuert werden.
- Die vorliegende Erfindung strebt danach, ein Steuern von Befehlen in einem Computersystem zu schaffen.
- Gemäß einem Aspekt der vorliegenden Erfindung ist ein Verfahren zum Steuern von Befehlen gemäß Anspruch 1 geschaffen.
- Gemäß einem weiteren Aspekt der vorliegenden Erfindung ist ein Computersystem gemäß Anspruch 4 geschaffen.
- Gemäß dem bevorzugten Ausführungsbeispiel der vorliegenden Erfindung umfaßt ein Computersystem einen Hauptspeicher, einen Befehlscache und einen Prozessor. Der Prozessor umfaßt eine Speicherschnittstelleneinrichtung, eine Vordecodiereinrichtung, eine Schnittstelleneinrichtung, eine erste Arithmetiklogikeinheit, eine zweite Arithmetiklogikeinheit und eine Steuereinrichtung. Die Speicherschnittstelleneinrichtung ist mit dem Hauptspeicher verbunden und holt Befehle aus dem Hauptspeicher. Bei dem bevorzugten Ausführungsbeispiel holt die Speicherschnittstelleneinrichtung die Befehle von dem Hauptspeicher, jeweils zwei auf einmal in einem Doppelwort.
- Vorzugsweise ist die Vordecodiereinrichtung mit der Speicherschnittstelleneinrichtung verbunden, und dieselbe vordecodiert Befehle, um Vordecodierbits zu erzeugen. Die Vordecodierbits zeigen an, ob und wie die Befehle gebündelt werden können. Bei dem bevorzugten Ausführungsbeispiel identifizieren die Vordecodierbits für jedes Paar von gebündelten Anweisungen, zu welcher von der ersten Ganzzahlarithmetiklogikeinheit und der zweiten Ganzzahlarithmetiklogikeinheit ein spezieller Befehl gesteuert werden soll. Die Vordecodiereinrichtung kann drei Vordecodierregister umfassen. Ein erstes Vordecodierregister hält einen Gerades-Wort-Befehl eines Befehlspaars, das aktuell decodiert wird. Ein zweites Vordecodierregister hält einen Ungerades-Wort-Befehl des Befehlspaars, das derzeit decodiert wird. Eine drittes Vordecodierregister hält einen Ungerades-Wort-Befehl eines Befehlspaars, das vorher vordecodiert wurde.
- Die Schnittstelleneinrichtung ist vorzugsweise mit der Vordecodiereinrichtung und dem Befehlscache verbunden. Die Schnittstelleneinrichtung speichert die Befehle und die Vordecodierbits in dem Befehlscache und holt die Befehle aus dem Befehlscache mit den Vordecodierbits. Die Steuereinrichtung ist mit der Schnittstelleneinrichtung, der ersten Arithmetiklogikeinheit und der zweiten Arithmetiklogikeinheit verbunden. Die Steuereinrichtung steuert jeden der Befehle zu entweder der ersten Ganzzahlarithmetiklogikeinheit oder der zweiten Ganzzahlarithmetiklogikeinheit zur Ausführung. Die Steuereinrichtung verwendet die Vordecodierbits, um die Befehle zu steuern. Bei dem bevorzugten Ausführungsbeispiel umfaßt die Steuereinrichtung eine Zustandsmaschine. Ein aktueller Zustand der Zustandsmaschine bestimmt, welches der Vordecodierbits die Steuereinrichtung verwendet, um die Befehle zu steuern.
- Bei dem bevorzugten Ausführungsbeispiel der vorliegenden Erfindung umfaßt der Prozessor ferner eine Gleitkommaeinheit, die mit der Steuereinrichtung verbunden ist. Die Steuereinrichtung steuert Gleitkommabefehle zu dem Gleitkommaprozessor. Ferner zeigen bei dem bevorzugten Ausführungsbeispiel die Vordecodierbits, die durch die Vordecodiereinrichtung erzeugt werden, an, ob zwei aufeinanderfolgende Befehle zur Ausführung gebündelt werden können. Zusätzlich zeigen die Vordecodierbits, die durch die Vordecodiereinrichtung erzeugt werden, an, ob zwei aufeinanderfolgende Befehle, die zur Ausführung gebündelt werden können, nicht ausgerichtet oder ausgerichtet sind.
- Das bevorzugte Ausführungsbeispiel der vorliegenden Erfindung kann ein effizientes Bündeln und Steuern von Befehlen in einem superskalaren Prozessor liefern.
- Ein Ausführungsbeispiel der vorliegenden Erfindung ist im folgenden mittels lediglich eines Beispiels unter Bezugnahme auf die beigefügten Zeichnungen beschrieben, in denen:
- Fig. 1 ein vereinfachtes Blockdiagramm eines Computersystems mit einem Befehlscache und einem Datencache gemäß einem bevorzugten Ausführungsbeispiel der vorliegenden Erfindung zeigt.
- Fig. 2 ein vereinfachtes Blockdiagramm eines Prozessors, der in Fig. 1 gezeigt ist, gemäß einem bevorzugten Ausführungsbeispiel der vorliegenden Erfindung zeigt.
- Fig. 3 ein vereinfachtes Blockdiagramm der logischen Blöcke zeigt, die das Vordecodieren und Steuern von Befehlen innerhalb des Prozessors betreffen, der in Fig. 1 gezeigt ist, gemäß einem bevorzugten Ausführungsbeispiel der vorliegenden Erfindung.
- Fig. 4 ein Zustandsdiagramm für eine Zustandsmaschine ist, die in Fig. 3 gemäß dem bevorzugten Ausführungsbeispiel der vorliegenden Erfindung gezeigt ist.
- Fig. 1 zeigt ein vereinfachtes Blockdiagramm eines Computersystems. Ein Prozessor 12 und ein Speicher 11 sind mit einem Bus verbunden gezeigt. Der Prozessor 12 verwendet einen Befehlscache 13 und einen Datencache 14. Der Befehlscache 13 speichert Befehle für den Prozessor 12 in einem statischen Direktzugriffsspeicher (SRAM). Der Datencache 14 speichert Daten für den Prozessor 12 in dem SRAM.
- Fig. 2 zeigt ein vereinfachtes Blockdiagramm des Prozessors 12. Der Prozessor 12 ist die Systembusschnittstellenlogik 26, die Befehlscacheschnittstellenlogik 24, die Datencacheschnittstellenlogik 25, eine Arithmetiklogikeinheit (ALU) 22, einen Übersetzungsseitenblickpuffer (TLB) 21 und einen Unterstützungscache 23 umfassend gezeigt. Die Systembusschnittstellenlogik 26 versieht den Prozessor 12 mit einer Schnittstelle zu dem Systembus 10. Die Befehlscacheschnittstellenlogik 24 versieht den Prozessor 12 mit einer Schnittstelle zu dem Befehlscache 13. Die Datencacheschnittstellenlogik 25 versieht den Prozessor 12 mit einer Schnittstelle zu dem Datencache 14. Der Unterstützungscache 23 wird parallel zu dem Datencache 14 verwendet, um Daten zu der Arithmetiklogikeinheit 22 zu liefern. Der Übersetzungsseitenblickpuffer 21 wird verwendet, um virtuelle Adressen auf reale Adressen abzubilden, um Cacheetiketten zu erzeugen, die verwendet werden sollen, um auf Daten zuzugreifen, die innerhalb des Unterstützungscaches 23 und innerhalb des Datencaches 14 gespeichert sind.
- Fig. 3 ist ein vereinfachtes Blockdiagramm der logischen Blöcke, die das Vordecodieren und Steuern von Anweisungen innerhalb des Prozessors 12 betreffen. Bei dem bevorzugten Ausführungsbeispiel der vorliegenden Erfindung implementiert die Systembusschnittstelle 26 64 Bit breite Doppelwortübertragungen zwischen dem Speicher 11 und dem Prozessor 12. Jedes Doppelwort enthält zwei 32-Bit-Befehle. Auf den Befehl in einem Doppelwort, der die Bits höherer Ordnung (die Bits [0 : 31]) des Doppelworts einnimmt, wird als der Gerades- Wort-Befehl Bezug genommen. Auf den Befehl in einem Doppelwort, der die Bits niedriger Ordnung (Bits [32 : 63]) des Doppelworts einnimmt, wird als Ungerades-Wort-Befehl Bezug genommen.
- Wenn die Worte aus dem Speicher 11 wiedergewonnen werden und zu dem Befehlscache entlang des Datenweges 54 weitergeleitet werden, erzeugt die Vordecodierlogik 44 Vordecodierbits, die auf einem Datenweg 55 plaziert sind, die mit jedem Doppelwort gespeichert werden sollen. Die Natur und die Funktion der Vordecodierbits sind weiter im folgenden beschrieben.
- Die Vordecodierlogik 44 erzeugt die Vordecodierbits basierend auf Informationen in dem Doppelwort. Wenn ein Doppelwort aus dem Speicher geholt wird, wird der Gerades-Wort-Befehl durch einen Datenweg 60 in einem Gerades-Wort-Befehl- Register 40 gespeichert. Der Ungerades-Wort-Befehl wird durch einen Datenweg 61 in einem Ungerades-Wort-Befehl-Register 41 plaziert. Wenn ein nächstes Doppelwort aus dem Speicher geholt wird, wird der neue Gerades-Wort-Befehl in dem Gerades-Wort-Befehl-Register 40 plaziert. Der neue Ungerades-Wort-Befehl wird in dem Ungerades-Wort-Befehl-Register 41 plaziert. Der Ungerades-Wort-Befehl, der sich vorher in dem Ungerades-Wort-Befehl-Register 41 befunden hat, wird zu einem Ungerades-Wort-Befehl-Register 43 bewegt. Wie es weiter im folgenden beschrieben ist, erzeugt die Vordecodierlogik 44 auf der Basis von Befehlen in dem Gerades-Wort-Befehl-Register 40, dem Ungerades-Wort-Befehl-Register 41 und dem Ungerades-Wort-Befehl-Register 43 die Vordecodierbits, die auf dem Datenweg 55 plaziert sind.
- Die Befehlscacheschnittstelle 24 speichert Doppelworte, die auf dem Datenweg 54 empfangen werden, zusammen mit Vordecodierbits auf dem Datenweg 55 in dem Befehlscache 13. Adreßleitungen 51 werden verwendet, um die Adreßspeicherpositionen in dem Befehlscache 13 zu adressieren. Ein 64 Bit breiter Datenweg 52 wird verwendet, um Doppelwortbefehle zwischen dem Prozessor 12 und dem Befehlscache 13 zu übertragen. Die Vordecodierbits, die mit einem Doppelwort gespeichert sind, werden gleichzeitig mit dem Doppelwort zwischen dem Befehlscache 13 und dem Prozessor 12 entlang eines Datenwegs 53 übertragen. Der Befehlscache 13 speichert die vordecodierten Bits zusammen mit dem zugeordneten Doppelwort.
- Wenn ein Doppelwort durch den Prozessor 12 aus dem Befehlscache 13 zur Ausführung von Befehlen innerhalb des Doppelworts wiedergewonnen wird, wird der Gerades-Wort-Befehl in einem Empfangener-Gerades-Wort-Befehl-Register 30 gespeichert, und der Ungerades-Wort-Befehl wird in einem Empfangener-Ungerades-Wort-Befehl-Register 31 plaziert. Wenn ein nächstes Doppelwort durch den Prozessor 12 aus dem Befehlscache 13 wiedergewonnen wird, wird der neue Gerades-Wort-Befehl in dem Empfangener-Gerades-Wort-Befehl-Register 30 plaziert, und der neue Ungerades-Wort-Befehl wird in dem Empfangener-Ungerades-Wort-Befehl-Register 31 plaziert. Der Gerades-Wort-Befehl, der sich vorher in dem Gerades-Wort-Befehl-Register 30 befand, wird zu einem Gesicherter-Gerades- Wort-Befehl-Register 32 bewegt. Der Ungerades-Wort-Befehl, der sich vorher in dem Empfangener-Ungerades-Wort-Befehl- Register 31 befand, wird zu einem Gesicherter-Ungerades- Wort-Befehl-Register 33 bewegt.
- Die Steuerlogik 34 leitet Befehle in dem Empfangener-Gerades-Wort-Befehl-Register 30, dem Gesicherter-Gerades-Wort- Befehl-Register 32, dem Empfangener-Ungerades-Wort-Befehl- Register 31 und dem Gesicherter-Ungerades-Wort-Befehl-Regi ster 33 zu entweder einer Arithmetiklogikeinheit (ALU) 36, einer ALU 37 oder einer Gleitkommaeinheit (FPU) 35 zur Ausführung weiter. Die Steuerlogik 34 fällt die Entscheidung basierend auf den vordecodierten Bits, die auf dem Datenweg 56 empfangen werden, sowie basierend auf Zustandsinformationen, die von einer Doppelzustandsmaschine 45 empfangen werden. Bei dem bevorzugten Ausführungsbeispiel betrachtet die Steuerlogik 34 ferner ein einziges Bit von dem Gesicherter- Ungerades-Wort-Befehl-Register 33, um zu sehen, ob dies ein Gleitkommabefehl oder nicht ist.
- Bei dem bevorzugten Ausführungsbeispiel der vorliegenden Erfindung gibt es sechs Kategorien von Befehlen. Die erste Kategorie sind Lade/Speicher- (LDST-) Befehle. Die Ausführung von LDST-Befehlen führt dazu, daß Informationen von einem Speicher/Cache geladen werden oder in demselben gespeichert werden. Diese erste Kategorie umfaßt beispielsweise Befehle, die Ganzzahlen sowie Gleitkommazahlen laden oder speichern.
- Die zweite Kategorie sind Arithmetik/Logik- (ALU-) Befehle. Die zweite Kategorie umfaßt beispielsweise Befehle, die ein Addieren, Substrahieren und ein logisches "ODER" und ein logisches "UND" durchführen.
- Die dritte Kategorie sind Maskierungs/Misch/Verschiebe- (MMS-) Befehle. Die dritte Kategorie umfaßt beispielsweise Befehle, die Daten innerhalb eines oder mehrerer Register ablagern, extrahieren und verschieben.
- Die vierte Kategorie sind Gleitkomma- (FLOP-) Befehle. Die vierte Kategorie umfaßt beispielsweise Befehle, die Gleitkommazahlen addieren, multiplizieren, dividieren und die Wurzel derselben ziehen.
- Die fünfte Kategorie sind Verzweigungs- (BR-) Befehle. Die fünfte Kategorie umfaßt beispielsweise Befehle, die vergleichen und verzweigen, addieren und verzweigen, und verzweigen und verbinden.
- Die sechste Kategorie sind System- (SYS-) Befehle. Die sechste Kategorie umfaßt beispielsweise Befehle, die TLB-Werte einfügen, den Datencache freiräumen, sich zu/von Steuerregistern bewegen, sich zu/von Raumregistern bewegen.
- Bei dem bevorzugten Ausführungsbeispiel der vorliegenden Erfindung führen die FPU 35, die ALU 36 und die ALU 37 jeweils lediglich Befehle in bestimmten Kategorien aus. Insbesondere führt die FPU 35 lediglich Befehle in der vierten Kategorie (FLOP-Befehle) aus. Die ALU 36 führt Befehle in der zweiten Kategorie (ALU-Befehle), in der dritten Kategorie (MMS-Befehle) und in der fünften Kategorie (BR-Befehle) aus. Die ALU 37 führt Befehle in der ersten Kategorie (LDST-Befehle) und in der zweiten Kategorie (ALU-Befehle) aus. Befehle in der sechsten Kategorie (SYS-Befehle) erfordern sowohl die ALU 36 als auch die ALU 37, um dieselben auszuführen.
- Bei dem bevorzugten Ausführungsbeispiel der vorliegenden Erfindung erzeugt die Vordecodierlogik 44 für jedes Doppelwort von zwei Befehlen sechs Vordecodierbits. Die Vordecodierbits zeigen eine Ausrichtung und Bündelung von Befehlen an. Wenn ausgerichtete Befehle gebündelt sind, bedeutet dies, daß der Befehl in dem geraden Wort des aktuellen Doppelworts gleichzeitig mit dem Befehl in dem ungeraden Wort des aktuellen Doppelworts ausgeführt werden soll. Wenn nicht-ausgerichtete Befehle gebündelt sind, bedeutet dies, daß der Befehl in dem geraden Wort des aktuellen Doppelworts gleichzeitig mit dem Befehl in dem ungeraden Wort des vorhergehenden Doppelworts ausgeführt werden soll.
- Das erste (Bit 0) Vordecodierbit (EFLOP) zeigt, wenn dasselbe eingestellt ist, an, daß der Gerades-Wort-Befehl eine Gleitkommaoperation für ein ausgerichtetes Doppelwort ist. Das zweite (Bit 1) Vordecodierbit (AL02) zeigt, wenn dasselbe eingestellt ist, an, daß die zwei Doppelwort-ausgerichteten Befehle gebündelt sind, und der Ungerades-Wort-Be fehl zu 37 gesteuert wird. Das dritte (Bit 2) Vordecodierbit (AL01) zeigt, wenn dasselbe eingestellt ist, daß die zwei Doppelwort-ausgerichteten Befehle gebündelt sind, und der Ungerades-Wort-Befehl zu der ALU 36 gesteuert wird. Das vierte (Bit 3) Vordecodierbit (NLE2) zeigt, wenn dasselbe eingestellt ist, daß die zwei nicht-Doppelwort-ausgerichteten Befehle gebündelt sind, und der Gerades-Wort-Befehl zu der ALU 37 gesteuert wird. Das fünfte (Bit 4) Vordecodierbit (NLE1) zeigt, wenn dasselbe eingestellt ist, daß die zwei nicht-Doppelwort-ausgerichteten Befehle gebündelt sind, und daß der Gerades-Wort-Befehl zu der ALU 36 gesteuert wird. Das sechste (Bit 5) Vordecodierbit (ALDUAL) zeigt, wenn dasselbe eingestellt ist, daß die zwei Doppelwort-ausgerichteten Befehle gebündelt sind.
- Das Codieren der Vordecodierbits wird durch die Vordecodierlogik 44 wie folgt durchgeführt. Wenn ein Doppelwort aus dem Speicher geholt wird, wird der Gerades-Wort-Befehl in dem Gerades-Wort-Befehl-Register 40 plaziert. Der Ungerades- Wort-Befehl wird in dem Ungerades-Wort-Befehl-Register 41 plaziert. Innerhalb eines einzigen Befehlszyklusses erzeugt die Vordecodierlogik 44 Vordecodierbits, die bei dem ausgerichteten Doppelwort Anwendung finden können, das aus dem Gerades-Wort-Befehl, der in dem Gerades-Wort-Befehl-Register 40 plaziert ist, und dem Ungerades-Wort-Befehl besteht, der in dem Ungerades-Wort-Befehl-Register 41 plaziert ist. Die erzeugten Vordecodierbits finden ferner bei dem nichtausgerichteten Doppelwort Anwendung, das aus dem Ungerades- Wort-Befehl, der in dem Ungerades-Wort-Befehl-Register 43 plaziert ist, und dem Gerades-Wort-Befehl, der in dem Gerades-Wort-Befehl-Register 40 plaziert ist, besteht. Die erzeugten Vordecodierbits werden zu der Befehlscacheschnittstelle 24 weitergeleitet, um in dem Befehlscache 13 mit dem Doppelwort, das ursprünglich aus dem Speicher geholt wurde, gespeichert zu werden.
- Die Vordecodierlogik 44 stellt das EFLOP-Bit ein, wenn der Gerades-Wort-Befehl, der in dem Gerades-Wort-Befehl-Register 40 plaziert ist, ein Gleitkommabefehl ist.
- Die Vordecodierlogik 44 stellt das AL02-Bit ein, wenn der Ungerades-Wort-Befehl, der in dem Ungerades-Wort-Befehl-Register 41 plaziert ist, ein Lade/Speicher-Befehl oder ein ALU-Operationsbefehl ist. Für das einzustellende Bit können jedoch keine Abhängigkeiten zwischen dem Gerades-Wort-Befehl, der in dem Gerades-Wort-Befehl-Register 40 plaziert ist, und dem Ungerades-Wort-Befehl, der in dem Ungerades- Wort-Befehl-Register 41 plaziert ist, bestehen. Es gibt drei Abhängigkeiten, die die Einstellung des AL02-Bits verhindern. Die erste Abhängigkeit ist eine Register-Einstell/Verwendungs-Abhängigkeit, die beispielsweise auftritt, wenn der Gerades-Wort-Befehl in dem Gerades-Wort-Befehl-Register 40 ein spezielles Register einstellt, und wenn der Ungerades- Wort-Befehl in dem Ungerades-Wort-Befehl-Register 41 das Register verwendet. Die zweite Abhängigkeit ist eine Übertrags/Schubkarren-Einstell/Verwendungs-Abhängigkeit, die beispielsweise auftritt, wenn der Gerades-Wort-Befehl in dem Gerades-Wort-Befehl-Register 40 ein Übertrags/Schubkarren- Bit einstellt, und der Ungerades-Wort-Befehl in dem Ungerades-Wort-Befehl-Register 41 das Übertrags/Schubkarren-Bit verwendet. Die dritte Abhängigkeit ist eine Verzweigungs/System-Abhängigkeit, die beispielsweise auftritt, wenn der Gerades-Wort-Befehl in dem Gerades-Wort-Befehl-Register 40 eine Verzweigung oder ein Systembefehl ist. Ein Befehl, der einer Verzweigung folgt, kann nicht mit dem Verzweigungsbefehl gebündelt werden. Mit einem Systembefehl kann nichts gebündelt werden.
- Die Vordecodierlogik 44 stellt das AL01-Bit ein, wenn der Ungerades-Wort-Befehl, der in dem Ungerades-Wort-Befehl-Register 41 plaziert ist, ein MMS-Befehl, ein Verzweigungsbefehl oder ein ALU-Operationsbefehl ist. Für das einzustellende Bit können jedoch keine Abhängigkeiten zwischen dem Gerades-Wort-Befehl, der in dem Gerades-Wort-Befehl-Register 40 plaziert ist, und dem Ungerades-Wort-Befehl, der in dem Ungerades-Wort-Befehl-Register 41 plaziert ist, bestehen.
- Die Vordecodierlogik 44 stellt das NLE2-Bit ein, wenn der Gerades-Wort-Befehl, der in dem Gerades-Wort-Befehl-Register 40 plaziert ist, ein Lade/Speicher-Befehl oder ein ALU-Operationsbefehl ist. Für das einzustellende Bit können jedoch keine Abhängigkeiten zwischen dem Ungerades-Wort-Befehl, der in dem Ungerades-Wort-Befehl-Register 43 plaziert ist, und dem Gerades-Wort-Befehl, der in dem Gerades-Wort-Befehl-Register 40 plaziert ist, bestehen.
- Die Vordecodierlogik 44 stellt das NLE1-Bit ein, wenn der Gerades-Wort-Befehl, der in dem Gerades-Wort-Befehl-Register 40 plaziert ist, ein MMS-Befehl, ein Verzweigungsbefehl oder ein ALU-Operationsbefehl ist. Für das einzustellende Bit können jedoch keine Abhängigkeiten zwischen dem Ungerades- Wort-Befehl, der in dem Ungerades-Wort-Befehl-Register 43 plaziert ist, und dem Gerades-Wort-Befehl, der in dem Gerades-Wort-Befehl-Register 40 plaziert ist, bestehen.
- Die Vordecodierlogik 44 stellt das ALDUAL-Bit ein, wenn der Gerades-Wort-Befehl, der in dem Gerades-Wort-Befehl-Register 40 plaziert ist, mit dem Ungerades-Wort-Befehl gebündelt werden kann, der in dem Ungerades-Wort-Befehl-Register 41 plaziert ist. Für das einzustellende Bit können jedoch keine Abhängigkeiten zwischen dem Gerades-Wort-Befehl, der in dem Gerades-Wort-Befehl-Register 40 plaziert ist, und dem Ungerades-Wort-Befehl, der in dem Ungerades-Wort-Befehl-Register 41 plaziert ist, bestehen. Das ALDUAL-Bit wird nicht zum Steuern verwendet.
- Fig. 4 zeigt ein Zustandsdiagramm für die Doppelzustandsmaschine 45. Immer wenn eine Verzweigung zu einem Gerades- Wort-Befehl auftritt, betritt die Doppelzustandsmaschine 45 einen Zustand 101. Solange die Befehle von Doppelworten, die von dem Befehlscache 13 wiedergewonnen werden, gebündelt sind, verbleibt die Doppelzustandsmaschine in dem Zustand 101. Wenn zwei Befehle in einem Doppelwort nicht gebündelt sind, betritt die Zustandsmaschine 43 einen Zustand 102.
- Solange nicht-ausgerichtete Befehle, die aus dem Befehlscache 13 wiedergewonnen werden, gebündelt sind, verbleibt die Doppelzustandsmaschine in dem Zustand 102. Wenn die nicht-ausgerichteten Befehle nicht gebündelt sind, betritt die Doppelzustandsmaschine 43 einen Zustand 103. Wenn die nächsten ausgerichteten Befehle von Doppelworten, die aus dem Gesicherter-Gerades-Wort-Befehl-Register 32 und dem Gesicherter-Ungerades-Wort-Befehl-Register 33 wiedergewonnen werden, gebündelt sind, betritt die Doppelzustandsmaschine den Zustand 101. Wenn in dem Zustand 103 die nächsten ausgerichteten Befehle von dem Gesicherter-Gerades-Wort-Befehlsregister 32 und dem Gesicherter-Ungerades-Wort-Befehlsregister 33 nicht gebündelt sind, betritt die Doppelzustandsmaschine 43 den Zustand 102.
- Immer wenn eine Verzweigung zu einem Ungerades-Wort-Befehl auftritt, betritt die Doppelzustandsmaschine 45 einen Zustand 104. In dem Zustand 104 können Befehle nicht gebündelt sein. Nach der Ausführung des Ungerades-Wort-Befehl betritt die Doppelzustandsmaschine 45 den Zustand 101.
- Die Steuerlogik 34 steuert Befehle in dem Empfangener-Gerades-Wort-Befehl-Register 30, dem Gesicherter-Gerades-Wort- Befehl-Register 32, dem Empfangener-Ungerades-Wort-Befehl- Register 31 und dem Gesicherter-Ungerades-Wort-Befehl-Register 33 in entweder die ALU 36, die ALU 37 oder die FPU 35 basierend auf vordecodierten Bits, die auf dem Datenweg 56 empfangen werden, sowie basierend auf Zustandsinformationen, die von einer Doppelzustandsmaschine 45 empfangen werden. Bei dem bevorzugten Ausführungsbeispiel schaut die Steuerlogik 34 ferner auf ein einziges Bit von dem Gesicherter- Ungerades-Wort-Befehl-Register 33, um nachzusehen, ob es sich um einen Gleitkommabefehl handelt oder nicht.
- Die Steuertabelle 1 zeigt, welche Befehle durch welche Einheit, die ALU 36, die ALU 37 oder die FPU 35, ausgeführt werden, wenn sich die Doppelzustandsmaschine 45 in dem Zustand 101 oder dem Zustand 103 befindet und die ausgerich teten Befehle gebündelt sind. Steuertabelle 1
- Die erste Spalte der obigen Steuertabelle 1 zeigt den Typ des Befehls, der sich in dem Gerades-Wort-Befehl-Register 30 befindet. Das "e", das vor dem Typ des Befehls aufgelistet ist, zeigt an, daß es der gerade Befehl in einem Doppelwort ist. Die zweite Spalte der Steuertabelle 1 oben zeigt den Typ des Befehls, der sich in dem Ungerades-Wort-Befehl-Register 31 befindet. Das "o", das vor dem Befehlstyp aufgelistet ist, zeigt an, daß es der ungerade Befehl in einem Doppelwort ist. Die dritte Spalte der Steuertabelle 1 zeigt den Wert des vordecodierten Bits EFLOP für das Doppelwort, das in dem Gerades-Wort-Befehl-Register 30 und in dem Ungerades-Wort-Befehl-Register 31 gespeichert ist. Eine "0" in der dritten Spalte zeigt an, daß das vordecodierte Bit EFLOP gelöscht ist. Eine "1" in der dritten Spalte zeigt an, daß das vordecodierte Bit EFLOP eingestellt ist. Die vierte Spalte der Steuertabelle 1 zeigt den Wert des vordecodierten Bits AL01 für das Doppelwort an, das in dem Gerades-Wort- Befehl-Register 30 und in dem Ungerades-Wort-Befehl-Register 31 gespeichert ist. Die fünfte Spalte der Steuertabelle 1 zeigt den Wert des vordecodierten Bits AL02 des Doppelworts, das in dem Gerades-Wort-Befehl-Register 30 und in dem Ungerades-Wort-Befehl-Register 31 gespeichert ist. Die sechste Spalte der Steuertabelle 1 zeigt den Wert des vordecodierten Bits NLE1 für das Doppelwort, das in dem Gerades-Wort-Befehl-Register 30 und in dem Ungerades-Wort-Befehl-Register 31 gespeichert ist. Die Werte "X" in der sechsten Spalte zeigen an, daß es keine Rolle spielt, ob das NLE1-Bit gelöscht oder eingestellt ist. Die siebte Spalte der Steuertabelle 1 zeigt den Wert des vordecodierten Bits NLE2 für das Doppelwort, das in dem Gerades-Wort-Befehl-Register 30 und dem Ungerades-Wort-Befehl-Register 31 gespeichert ist. Die achte Spalte der Steuertabelle 1 zeigt den Befehl von der Spalte 1 oder der Spalte 2, der zu der ALU 36 gesteuert werden soll. Ein Wert "X" in der achten Spalte zeigt an, daß es keine Rolle spielt, welche Anweisung zu der ALU 36 gesteuert wird. Die neunte Spalte der Steuertabelle 1 zeigt den Befehl von der Spalte 1 oder der Spalte 2, der zu der ALU 37 gesteuert werden soll. Ein Wert "X" in der achten Spalte zeigt an, daß es keine Rolle spielt, welcher Befehl zu der ALU 37 gesteuert wird. Die zehnte Spalte der Steuertabelle 1 zeigt den Befehl von der Spalte 1 oder Spalte 2, der zu der FPU 35 gesteuert werden soll. Ein Wert "X" in der achten Spalte zeigt an, daß es keine Rolle spielt, welcher Befehl zu der FPU 35 gesteuert wird.
- Die Steuertabelle 2 zeigt, welche Befehle durch welche Einheit, die ALU 36, die ALU 37 oder die FPU 35, ausgeführt werden, wenn die Doppelzustandsmaschine 45 sich in dem Zustand 102 befindet und die nicht ausgerichteten Befehle gebündelt sind. Steuertabelle 2
- Die erste Spalte der obigen Steuertabelle 2 zeigt den Befehlstyp, der sich in dem Ungerades-Wort-Befehl-Register 33 befindet. Das "o", das vor dem Befehlstyp aufgelistet ist, zeigt an, daß derselbe der ungerade Befehl in einem Doppelwort ist. Die zweite Spalte der obigen Steuertabelle 2 zeigt den Befehlstyp an, der sich in dem Gerades-Wort-Befehl-Register 30 befindet. Das "e", das vor dem Befehlstyp aufgelistet ist, zeigt an, daß derselbe der gerade Befehl in einem Doppelwort ist. Die dritte Spalte der Steuertabelle 2 zeigt den Wert des vordecodierten Bits EFLOP für das Doppelwort an, das in dem Gerades-Wort-Befehl-Register 30 und in dem Ungerades-Wort-Befehl-Register 33 gespeichert ist. Die vierte Spalte der Steuertabelle 2 zeigt den Wert des vordecodierten Bits AL01 für das Doppelwort an, das in dem Gerades-Wort-Befehl-Register 30 und in dem Ungerades-Wort-Be fehl-Register 33 gespeichert ist. Die fünfte Spalte der Steuertabelle 2 zeigt den Wert des vordecodierten Bits AL02 für das Doppelwort, das in dem Gerades-Wort-Befehl-Register 30 und in dem Ungerades-Wort-Befehl-Register 33 gespeichert ist. Die sechste Spalte der Steuertabelle 2 zeigt den Wert des vordecodierten Bits NLE1 für das Doppelwort, das in dem Gerades-Wort-Befehl-Register 30 und in dem Ungerades-Wort- Befehl-Register 33 gespeichert ist. Die siebte Spalte der Steuertabelle 2 zeigt den Wert des vordecodierten Bits NLE2 für das Doppelwort, das in dem Gerades-Wort-Befehl-Register 30 und dem Ungerades-Wort-Befehl-Register 33 gespeichert ist. Die achte Spalte der Steuertabelle 2 zeigt den Befehl von der Spalte 1 oder Spalte 2, der zu der ALU 36 gesteuert werden soll. Die neunte Spalte der Steuertabelle 2 zeigt den Befehl von der Spalte 1 oder Spalte 2, der zu der ALU 37 gesteuert werden soll. Die zehnte Spalte der Steuertabelle 2 zeigt den Befehl von der Spalte 1 oder Spalte 2, der zu der FPU 35 gesteuert werden soll.
- Tabelle 3 im folgenden stellt die Vordecodierbits für sieben Doppelworte dar, die durch die Vordecodierlogik 44 erzeugt werden, sowie die sieben Doppelworte aus dem Speicher 11 geholt werden und in dem Befehlscache 13 plaziert werden. Tabelle 3
- Für das erste Doppelwort wird das Vordecodierbit AL02 eingestellt, was anzeigt, daß die zwei Doppelwort-ausgerichteten Befehle gebündelt werden können, und der Ungerades- Wort-Befehl wird zu 37 gesteuert. Ferner wird das Vordecodierbit ALDUAL eingestellt, was anzeigt, daß die zwei Doppelwort-ausgerichteten Befehle gebündelt sind.
- Für das zweite Doppelwort wird das Vordecodierbit NLE1 eingestellt, was anzeigt, daß die nicht ausgerichteten zwei Doppelwortbefehle gebündelt werden können, und daß der Gerades-Wort-Befehl zu der ALU 36 gesteuert wird.
- Für das dritte Doppelwort wird das Vordecodierbit EFLOP eingestellt, was anzeigt, daß der Gerades-Wort-Befehl eine Gleitkommaoperation für ein ausgerichtetes Doppelwort ist. Ferner ist das Vordecodierbit AL01 eingestellt, was anzeigt, daß die zwei Doppelwort-ausgerichteten Befehle gebündelt werden können, und daß der Ungerades-Wort-Befehl zu der ALU 36 gesteuert wird. Ferner ist das Vordecodierbit ALDUAL eingestellt, was anzeigt, daß die zwei Doppelwort-ausgerichteten Befehle gebündelt sind.
- Für das vierte Doppelwort wird das Vordecodierbit NLE2 eingestellt, was anzeigt, daß die zwei Nicht-Doppelwort-ausgerichteten Befehle gebündelt werden können, und daß der Gerades-Wort-Befehl zu der ALU 37 gesteuert wird.
- Für das fünfte Doppelwort werden keine Vordecodierbits eingestellt, was anzeigt, daß kein Bündeln möglich ist.
- Für das sechste Doppelwort wird das Vordecodierbit EFLOP eingestellt, was anzeigt, daß der Gerades-Wort-Befehl eine Gleitkommaoperation für ein ausgerichtetes Doppelwort ist. Ferner ist das Vordecodierbit AL01 eingestellt, was anzeigt, daß die zwei Doppelwort-ausgerichteten Befehle gebündelt werden können, und der Ungerades-Wort-Befehl wird zu der ALU 36 gesteuert. Ferner ist das Vordecodierbit ALDUAL eingestellt, was anzeigt, daß die zwei Doppelwort-ausgerichteten Befehle gebündelt sind.
- Für das siebte Doppelwort sind keine Vordecodierbits eingestellt, was anzeigt, daß kein Bündeln möglich ist.
- Tabelle 4 zeigt im folgenden das Steuern der obigen sieben Worte während der ersten acht Ausführungszyklen. Tabelle 4
- Die erste Spalte der Tabelle 4 zeigt den Zyklus. Die zweite Spalte der Tabelle 4 zeigt den aktuellen Zustand der Doppelzustandsmaschine 45 an. Ein Wert von "1" zeigt, daß sich die Doppelzustandsmaschine 45 in dem Zustand 101 befindet. Ein Wert von "2" zeigt, daß sich die Doppelzustandsmaschine 45 in dem Zustand 102 befindet. Ein Wert von "3" zeigt, daß sich die Doppelzustandsmaschine 45 in dem Zustand 103 befindet. Ein Wert von "4" zeigt, daß sich die Doppelzustandsmaschine 45 in dem Zustand 104 befindet. Die dritte Spalte zeigt den Befehl, der in dem Gerades-Wort-Befehl-Register 30 plaziert ist. Die vierte Spalte zeigt den Befehl, der in dem Ungerades-Wort-Befehl-Register 31 plaziert ist. Die fünfte Spalte zeigt den Befehl, der in dem Gerades-Wort-Befehl-Register 32 plaziert ist. Die sechste Spalte zeigt den Befehl, der in dem Ungerades-Wort-Befehl-Register 33 plaziert ist. Die siebte Spalte zeigt den Befehl von der Spalte 3, Spalte 4, Spalte 5 oder Spalte 6, der zu der ALU 36 gesteuert werden soll. Ein Wert "X" in der siebten Spalte zeigt, daß es keine Rolle spielt, welcher Befehl zu der ALU 36 gesteuert wird. Die achte Spalte zeigt den Befehl von der Spalte 3, Spalte 4, Spalte 5 oder Spalte 6, der zu der ALU 37 gesteuert werden soll. Die neunte Spalte zeigt den Befehl von der Spalte 3, Spalte 4, Spalte 5 oder Spalte 6, der zu der FPU 35 gesteuert werden soll.
Claims (4)
1. Ein Verfahren zum Steuern von Befehlen zu einer ersten
Ganzzahlarithmetiklogikeinheit (36), einer zweiten
Ganzzahlarithmetiklogikeinheit (37) und/oder einer
Gleitkommaeinheit (35) in einem Computersystem, mit
folgenden Schritten:
(a) Holen von Befehlen, zwei auf einmal in einem
Doppelwort, in ein erstes und ein zweites
Wortregister (40, 41) von einem Hauptspeicher und
Bewegen des Befehls eines vorher geholten
Doppelworts, der in dem zweiten Wortregister (41)
gespeichert ist, in ein drittes Wortregister (43);
(b) Vordecodieren der Befehle, um Vordecodierbits zu
erzeugen, die anzeigen, ob zwei
aufeinanderfolgende ausgerichtete Befehle von dem ersten und
dem zweiten Wort des aktuellen Doppelworts in dem
ersten und dem zweiten Wortregister (40, 41), und
ob zwei aufeinanderfolgende nicht-ausgerichtete
Befehle von dem ersten Wort des aktuellen
Doppelworts in dem ersten Wortregister (40) und von dem
zweiten Wort des vorhergehenden Doppelworts in
dem dritten Wortregister (43) zur Ausführung
gebündelt werden können;
(c) Speichern der Befehle und der Vordecodierbits in
einem Befehlscache;
(d) Holen der Befehle aus dem Befehlscache mit den
Vordecodierbits; und
(e) Steuern jedes der Befehle auf der Basis der
Vordecodierbits zu entweder der ersten
Ganzzahl
arithmetiklogikeinheit (36), der zweiten
Ganzzahlarithmetiklogikeinheit (37) oder der
Gleitkommaeinheit (35) zur Ausführung.
2. Ein Computersystem, das folgende Merkmale aufweist:
einen Hauptspeicher (11);
einen Befehlscache (13); und
einen Prozessor (12), der mit dem Hauptspeicher (11)
und dem Befehlscache (13) gekoppelt ist, wobei der
Prozessor (12) folgende Merkmale aufweist:
eine Speicherschnittstelleneinrichtung (26), die mit
dem Hauptspeicher (11) gekoppelt ist, zum Holen von
Befehlen, zwei auf einmal in einem Doppelwort, in ein
erstes und ein zweites Wortregister (40, 41) von dem
Hauptspeicher (11), wobei der Befehl eines vorher
geholten Doppelworts, der in dem zweiten Wortregister
(41) gespeichert ist, in ein drittes Wortregister (43)
bewegt wird;
eine Vordecodiereinrichtung (40, 41, 43, 44), die mit
der Speicherschnittstelleneinrichtung (26) gekoppelt
ist, die betreibbar ist, um die Befehle
vorzudecodieren, um Vordecodierbits zu erzeugen, wobei die
Vordecodierbits anzeigen, ob zwei aufeinanderfolgende
ausgerichtete Befehle von dem ersten und dem zweiten Wort
des aktuellen Doppelworts in dem ersten und dem
zweiten Wortregister (40, 41), und ob zwei
aufeinanderfolgende nicht-ausgerichtete Befehle von dem ersten
Wort des aktuellen Doppelworts in dem ersten
Wortregister (40) und von dem zweiten Wort des
vorhergehenden Doppelworts in dem dritten Wortregister (43) für
eine Ausführung gebündelt werden können;
eine Schnittstelleneinrichtung (24), die mit der
Vor
decodiereinrichtung (40, 41, 43, 44) und dem
Befehlscache (13) gekoppelt ist, zum Speichern der Befehle
und der Vordecodierbits in dem Befehlscache (13) und
zum Holen der Befehle aus dem Befehlscache (13) mit
den vordecodierten Bits,
eine erste Arithmetiklogikeinheit (36),
eine zweite Arithmetiklogikeinheit (37) und
eine Steuereinrichtung (34, 35), die mit der
Schnittstelleneinrichtung (24) gekoppelt ist, wobei die erste
Arithmetiklogikeinheit (36) und die zweite
Arithmetiklogikeinheit (37) gekoppelt sind, zum Steuern jedes
der Befehle zu entweder der ersten
Ganzzahlarithmetiklogikeinheit (36) oder der zweiten
Ganzzahlarithmetiklogikeinheit (37) zur Ausführung, wobei die
Steuereinrichtung (34, 35) die Vordecodierbits verwendet, um
die Befehle zu steuern.
3. Ein Computersystem gemäß Anspruch 2, bei dem die
Steuereinrichtung (34, 35) eine Zustandsmaschine (45)
aufweist, wobei ein aktueller Zustand der
Zustandsmaschine (45) bestimmt, welches der Vordecodierbits die
Steuereinrichtung (34, 35) verwendet, um die Befehle
zu steuern.
4. Ein Computersystem gemäß einem der Ansprüche 2 oder 3,
bei dem der Prozessor (12) eine Gleitkommaeinheit (35)
aufweist, die mit der Steuereinrichtung (34, 35)
gekoppelt ist, wobei die Steuereinrichtung (34, 35)
wirksam ist, um die Gleitkommabefehle zu der
Gleitkommaeinheit (35) zu steuern.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US08/194,899 US5974534A (en) | 1994-02-14 | 1994-02-14 | Predecoding and steering mechanism for instructions in a superscalar processor |
Publications (2)
Publication Number | Publication Date |
---|---|
DE69510966D1 DE69510966D1 (de) | 1999-09-02 |
DE69510966T2 true DE69510966T2 (de) | 1999-12-09 |
Family
ID=22719320
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE69510966T Expired - Lifetime DE69510966T2 (de) | 1994-02-14 | 1995-02-03 | Verfahren zur Lenkung von Instruktionen in einem Rechnersystem und Rechnersystem zur Durchführung dieses Verfahrens |
Country Status (4)
Country | Link |
---|---|
US (1) | US5974534A (de) |
EP (1) | EP0667571B1 (de) |
JP (1) | JP3670043B2 (de) |
DE (1) | DE69510966T2 (de) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5829031A (en) * | 1996-02-23 | 1998-10-27 | Advanced Micro Devices, Inc. | Microprocessor configured to detect a group of instructions and to perform a specific function upon detection |
EP0855648A3 (de) * | 1997-01-24 | 1999-12-22 | Texas Instruments Inc. | Datenverarbeitung mit paralleler oder sequentieller Durchführung von Programmbefehlen |
GB2332075B (en) * | 1997-12-06 | 2002-08-07 | Mitel Corp | Optimized instruction storage and distribution for parallel processors architectures |
EP1050810A1 (de) | 1999-05-03 | 2000-11-08 | STMicroelectronics SA | Rechnersystem mit mehreren funktionellen Einheiten |
EP1102165A1 (de) * | 1999-11-15 | 2001-05-23 | Texas Instruments Incorporated | Mikroprozessor mit Ausführungspaket über zwei oder mehr Abholpakete verbreitet |
US7039790B1 (en) | 1999-11-15 | 2006-05-02 | Texas Instruments Incorporated | Very long instruction word microprocessor with execution packet spanning two or more fetch packets with pre-dispatch instruction selection from two latches according to instruction bit |
EP1367485B1 (de) * | 2002-05-31 | 2012-10-31 | STMicroelectronics Limited | Pipeline-Verarbeitung |
AT500858B8 (de) * | 2004-08-17 | 2007-02-15 | Martin Schoeberl | Instruction cache für echtzeitsysteme |
US9201801B2 (en) * | 2010-09-15 | 2015-12-01 | International Business Machines Corporation | Computing device with asynchronous auxiliary execution unit |
CN102495726B (zh) | 2011-11-15 | 2015-05-20 | 无锡德思普科技有限公司 | 机会多线程方法及处理器 |
CN103187955B (zh) * | 2011-12-31 | 2016-08-03 | 意法半导体研发(上海)有限公司 | 共栅共源驱动电路 |
US9558000B2 (en) * | 2014-02-06 | 2017-01-31 | Optimum Semiconductor Technologies, Inc. | Multithreading using an ordered list of hardware contexts |
US9766895B2 (en) * | 2014-02-06 | 2017-09-19 | Optimum Semiconductor Technologies, Inc. | Opportunity multithreading in a multithreaded processor with instruction chaining capability |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4295193A (en) * | 1979-06-29 | 1981-10-13 | International Business Machines Corporation | Machine for multiple instruction execution |
US5101341A (en) * | 1988-08-25 | 1992-03-31 | Edgcore Technology, Inc. | Pipelined system for reducing instruction access time by accumulating predecoded instruction bits a FIFO |
JP2810068B2 (ja) * | 1988-11-11 | 1998-10-15 | 株式会社日立製作所 | プロセッサシステム、コンピュータシステム及び命令処理方法 |
US5129067A (en) * | 1989-06-06 | 1992-07-07 | Advanced Micro Devices, Inc. | Multiple instruction decoder for minimizing register port requirements |
EP0415366B1 (de) * | 1989-08-28 | 1997-06-11 | Nec Corporation | Mikroprozessor mit Pipeline-Predecodereinheit und -Hauptdecodereinheit |
JP2818249B2 (ja) * | 1990-03-30 | 1998-10-30 | 株式会社東芝 | 電子計算機 |
US5214763A (en) * | 1990-05-10 | 1993-05-25 | International Business Machines Corporation | Digital computer system capable of processing two or more instructions in parallel and having a coche and instruction compounding mechanism |
DE69130588T2 (de) * | 1990-05-29 | 1999-05-27 | National Semiconductor Corp., Santa Clara, Calif. | Cache-Speicher von partiell decodierten Befehlen und Verfahren hierfür |
JPH0476626A (ja) * | 1990-07-13 | 1992-03-11 | Toshiba Corp | マイクロコンピュータ |
US5337415A (en) * | 1992-12-04 | 1994-08-09 | Hewlett-Packard Company | Predecoding instructions for supercalar dependency indicating simultaneous execution for increased operating frequency |
-
1994
- 1994-02-14 US US08/194,899 patent/US5974534A/en not_active Expired - Lifetime
-
1995
- 1995-01-31 JP JP01353395A patent/JP3670043B2/ja not_active Expired - Fee Related
- 1995-02-03 EP EP95300682A patent/EP0667571B1/de not_active Expired - Lifetime
- 1995-02-03 DE DE69510966T patent/DE69510966T2/de not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
EP0667571A2 (de) | 1995-08-16 |
JPH07253887A (ja) | 1995-10-03 |
DE69510966D1 (de) | 1999-09-02 |
EP0667571A3 (de) | 1995-12-13 |
EP0667571B1 (de) | 1999-07-28 |
JP3670043B2 (ja) | 2005-07-13 |
US5974534A (en) | 1999-10-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE68928812T2 (de) | Vorrichtung zur Auflösung von einer variablen Anzahl von möglichen Speicherzugriffskonflikten in einem Pipeline-Rechnersystem und Verfahren dazu | |
DE68928677T2 (de) | Verfahren und digitaler Computer zur Vorverarbeitung mehrerer Befehle | |
DE69525277T2 (de) | Datenprozessor für Operanden mit variabler Breite | |
DE69636861T2 (de) | Mikroprozessor mit Lade-/Speicheroperation zu/von mehreren Registern | |
DE69130757T2 (de) | Ausführungsvorrichtung für bedingte Verzweigungsbefehle | |
DE68927855T2 (de) | Verfahren und Datenverarbeitungseinheit zur Vorverarbeitung von implizierten Spezifizierern in einem Pipeline-Prozessor | |
DE69433339T2 (de) | Lade-/Speicherfunktionseinheiten und Datencachespeicher für Mikroprozessoren | |
DE112005003098B4 (de) | Verfahren und Vorrichtung zum Zugreifen auf einen physikalischen Speicher von einer CPU oder einem Prozessorelement mit hoher Leistung | |
DE3750935T2 (de) | Verfahren und System zum Erleichtern der Befehlsausführung in einem digitalen Rechner. | |
DE68927492T2 (de) | Verfahren und Vorrichtung zur gleichzeitigen Verteilung von Befehlen an mehrere funktionelle Einheiten | |
DE60018078T2 (de) | Einstellung von bedingungswerten in einem rechner | |
DE69115344T2 (de) | Vorverarbeitungsprozessor zur Verbindung von Befehlen für einen Cache-Speicher | |
DE69932066T2 (de) | Mechanismus zur "store-to-load forwarding" | |
DE3789345T2 (de) | Erweiterte Gleitkommaoperationen zur Unterstützung der Emulation von Quellbefehlsausführungen. | |
DE69904479T2 (de) | Registerumbenennung wobei übertragungsinstruktionen mittels umbenennungsschildernzeichen realisiert werden | |
DE68928513T2 (de) | Verfahren zur Vorverarbeitung mehrerer Befehle | |
DE3685913T2 (de) | Vektorenverarbeitung. | |
DE69032276T2 (de) | Verfahren und Anordnung zur Verbesserung der Datenspeicherungsgeschwindigkeit eines Computersystems | |
DE69230057T2 (de) | Risc mikroprozessorarchitektur mit mehrere registersätze von unterschiedlichen typen | |
DE60308201T2 (de) | Datenverarbeitungssystem mit externen und internen anweisungssätzen | |
DE68927911T2 (de) | Datenverarbeitungssystem | |
DE69612991T2 (de) | System zur bearbeitung von selbstmodifizierendem kode | |
DE3788877T2 (de) | Einrichtung zur software-emulation. | |
DE69510966T2 (de) | Verfahren zur Lenkung von Instruktionen in einem Rechnersystem und Rechnersystem zur Durchführung dieses Verfahrens | |
DE102018005105A1 (de) | Befehle für entfernte atomare operationen |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8364 | No opposition during term of opposition | ||
8327 | Change in the person/name/address of the patent owner |
Owner name: HEWLETT-PACKARD CO. (N.D.GES.D.STAATES DELAWARE), |
|
8327 | Change in the person/name/address of the patent owner |
Owner name: HEWLETT-PACKARD DEVELOPMENT CO., L.P., HOUSTON, TE |