DE69032635T2 - Verfahren und Vorrichtung zur Erkennung von Betriebsmittelkonflikten in einer Pipeline-Verarbeitungseinheit - Google Patents
Verfahren und Vorrichtung zur Erkennung von Betriebsmittelkonflikten in einer Pipeline-VerarbeitungseinheitInfo
- Publication number
- DE69032635T2 DE69032635T2 DE69032635T DE69032635T DE69032635T2 DE 69032635 T2 DE69032635 T2 DE 69032635T2 DE 69032635 T DE69032635 T DE 69032635T DE 69032635 T DE69032635 T DE 69032635T DE 69032635 T2 DE69032635 T2 DE 69032635T2
- Authority
- DE
- Germany
- Prior art keywords
- instruction
- unit
- resource
- instructions
- execution
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 238000012545 processing Methods 0.000 title claims description 32
- 238000000034 method Methods 0.000 title claims description 16
- 230000004044 response Effects 0.000 claims description 5
- 238000000354 decomposition reaction Methods 0.000 claims 5
- FGUUSXIOTUKUDN-IBGZPJMESA-N C1(=CC=CC=C1)N1C2=C(NC([C@H](C1)NC=1OC(=NN=1)C1=CC=CC=C1)=O)C=CC=C2 Chemical compound C1(=CC=CC=C1)N1C2=C(NC([C@H](C1)NC=1OC(=NN=1)C1=CC=CC=C1)=O)C=CC=C2 FGUUSXIOTUKUDN-IBGZPJMESA-N 0.000 claims 1
- 230000002401 inhibitory effect Effects 0.000 claims 1
- 239000000872 buffer Substances 0.000 description 19
- 238000004519 manufacturing process Methods 0.000 description 14
- 102100027094 Echinoderm microtubule-associated protein-like 1 Human genes 0.000 description 13
- 101001057941 Homo sapiens Echinoderm microtubule-associated protein-like 1 Proteins 0.000 description 13
- 101000653787 Mus musculus Protein S100-A11 Proteins 0.000 description 13
- 230000015654 memory Effects 0.000 description 13
- 102100028827 Arginine/serine-rich coiled-coil protein 2 Human genes 0.000 description 10
- 101000858415 Homo sapiens Arginine/serine-rich coiled-coil protein 2 Proteins 0.000 description 10
- 101000858430 Homo sapiens Serine/Arginine-related protein 53 Proteins 0.000 description 9
- 102100028826 Serine/Arginine-related protein 53 Human genes 0.000 description 9
- 101000587455 Homo sapiens Single-stranded DNA-binding protein, mitochondrial Proteins 0.000 description 5
- 102100029719 Single-stranded DNA-binding protein, mitochondrial Human genes 0.000 description 5
- 230000008569 process Effects 0.000 description 5
- 230000008901 benefit Effects 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 230000014509 gene expression Effects 0.000 description 4
- 101100149023 Bacillus subtilis (strain 168) secA gene Proteins 0.000 description 3
- 238000005336 cracking Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 239000003292 glue Substances 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000001343 mnemonic effect Effects 0.000 description 2
- 230000008520 organization Effects 0.000 description 2
- 230000009467 reduction Effects 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 101000825437 Homo sapiens SHC-transforming protein 3 Proteins 0.000 description 1
- 102100022944 SHC-transforming protein 3 Human genes 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 108090000623 proteins and genes Proteins 0.000 description 1
- 238000013519 translation Methods 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/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3838—Dependency mechanisms, e.g. register scoreboarding
-
- 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
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)
Description
- Diese Erfindung bezieht sich auf Pipeline-Datenverarbeitungssysteme und insbesondere auf eine Vorrichtung zur Lösung von Betriebsmittelkonflikten in solchen Systemen.
- Viele Verfahren sind entwickelt worden, um die Leistung von Hochleistungssystemen zu verbessern. Diese haben die Entwicklung von sogenannten Pipelineprozessoren umfaßt, welche Verarbeitungsbefehle in Cache, in einer solchen Weise speichern, daß mehr als ein Befehl gegenwärtig zu jedem Zeitpunkt verarbeitet wird. In einem solchen System kann ein Befehl vervollständigt werden innerhalb eines gegebenen Maschinenzyklus zu einer Zeit, wenn ein anderer Befehl nur teilweise vervollständigt worden ist.
- Solche Systeme erreichen zwar eine hohe Leistung, doch werden die Befehle seriell in die Pipeline gegeben und sobald die Stufe ihre Operation abgeschlossen hat, wird der Befehl in die nächste Verarbeitungsstufe gegeben. Daher werden Befehle in der Reihenfolge abgearbeitet, in welche sie in die Pipeline eingegeben werden. Um die Systemleistung zu verbessern, überlappen einige Systeme die Operationen, die von bestimmten Stufen innerhalb der Pipeline ausgeführt werden. Ein Beispiel dieses Typs von Systems ist in dem US Patent Nr. 4,760,519 beschrieben.
- Zwar verbessert das Obige die Leistung, doch müssen die Befehle immer noch in der Reihenfolge ausgeführt werden, in welcher sie in die Pipeline eingegeben werden. Die Leistung eines Pipelinesystems wurde dadurch verbessert, daß eine Verarbeitungseinheit in einer Produktionslinienart arbeitet, in welche jede frühere Stufe in der Lage ist, die Ausführung von bestimmten Typen von Befehlen vor früher eingeführten Befehlen zu vervollständigen.
- Ein Artikel in IBM Technical Disclosure Bulletin Vol. 27, Nr. 5, Oktober 1984, Seiten 2842-2844 beschreibt ein Verfahren zur Verminderung der Ausführungsverzögerung in einem Prozessor, welches erhalten wird durch Voranalyse von Unabhängigkeiten, wodurch eine maximale, parallele Ausführung von Befehlen ermöglicht wird. Die Prozessorauslegung verwendet Information bezüglich der Befehlseingabe-Erfordernisse, um vielfach Befehlsausführung zu steuern, wodurch die gesamte Prozessorleistung minimiert wird. Der Befehlspuffer, welcher normalerweise zuvor geholte Befehle hält ist ersetzt durch ein Befehlskreuzbezugsfeld (instruction cross reference array, IXA), das nicht nur den decodierten Befehl enthält, sondern auch den Befehlsausführungsstatus, die Operanden Information, die notwendig ist, um festzustellen, wenn die Ausführung gestartet werden kann, und einen Operanden-Eingabe/Ausgabe-Bereich. Wenn Befehle aus dem Speicher geholt werden, werden sie decodiert und die Information wird in verschiedene Felder des IXA angeordnet. Ein Befehl kann gestartet werden, wenn alle notwendigen Betriebsmittel verfügbar sind.
- Zwar bieten Pipeline-Verarbeitungseinheiten eine hohe Leistung, doch hängt ihre Leistung noch stark von der Reihenfolge der Befehle in dem Befehlsstrom ab. Das heißt, wenn aufeinanderfolgende Befehle Daten und Steuerabhängigkeiten aufweisen und Betriebsmittel erfordern, dann entwickeln sich "Löcher" in der Pipeline oder der Produktionslinie und die Leistung leidet.
- Um die Leistung zu verbessern, kann es in bestimmten Systemen möglich sein, den Code oder den Zeitplan so zu arrangieren, daß Abhängigkeiten und Betriebsmittel-Konflikte minimiert werden. Ebenso können Register allokiert werden, so daß Registerkonflikte vermindert werden. Jedoch können Registerkonflikte, die durch Datenabhängigkeiten verursacht werden, nicht in dieser Weise beseitigt werden. Das Problem von Betriebsmittelkonflikten wird noch wichtiger in dem Fall, wenn bei einer Verarbeitungseinheit des Produktionstyps ein Anhalten des Betriebs die Leistung stark vermindert.
- Entsprechend ist es eine primäre Aufgabe der vorliegenden Erfindung, ein Verfahren und eine Vorrichtung zum Detektieren von Betriebsmittelkonflikten bereitzustellen, welches eine Pipelineoperation mit hoher Leistung ermöglicht.
- Es ist eine andere Aufgabe der vorliegenden Erfindung, ein Verfahren und eine Vorrichtung bereitzustellen, welche die Operation maximiert und ein Minimum an Komplexität erfordert.
- Die obigen und andere Aufgaben sind in vorteilhafter Weise im wesentlichen durch Anwendung der Merkmale, die in den kennzeichnenden Teilen der unabhängigen Ansprüche 1 und 8 dargelegt sind, gelöst. Weitere Merkmale und Aspekte der Erfindung und Verbesserungen werden in den begleitenden Unteransprüchen definiert.
- Die bevorzugte Ausführungsform einer Pipeline-Verarbeitungseinheit umfaßt eine Befehlseinheitsstufe, welche eine Betriebsmittelkonflikt-Vorrichtung zum Erkennen und Lösen von Konflikten in der Verwendung von Register- und Indikatorbetriebsmitteln während der verschiedenen Phasen der Befehlsausführung umfaßt. Die Befehlseinheit umfaßt eine Anzahl von Betriebsmittelregistern, die zahlen mäßig der Anzahl der Befehle entsprechen, welche gleichzeitig durch die Verarbeitungseinheit verarbeitet werden können. Decodier-Schaltkreise in Antwort auf jeden erhaltenen neuen Befehl von der Befehlseinheit erzeugen einen oder mehrere Sätze von Bit-Indikatorsignalen, die solche Betriebsmittel bezeichnen, welche durch die bestimmte Pipelinestufe(n), die den Befehl ausführen, angefordert werden zur Vervollständigung der Ausführung des Befehls, der von solchen Stufen geteilt wird, die in der Lage sind, die Ausführung des Befehls zu vervollständigen.
- Für einen gegebenen Befehl gibt es einen Satz von Bit-Indikatorsignalen, die für jede Pipelinestufe erzeugt werden, welche die Ausführung dieses Befehls vervollständigen kann. Für jeden Befehl, der durch eine letzte Pipelinestufe ausführbar ist, die der Haupt- oder primären Ausführungseinheit in der bevorzugten Ausführungsform entspricht, wird der Satz von Bit-Indikatorsignalen entsprechend zu dieser letzten Pipelinestufe in den am nächsten verfügbaren Betriebsmittelregistern gespeichert. Vergleichsschaltkreise vergleichen den Satz von Bit-Indikatorsignal für jeden neuen Befehl, der Betriebsmitteln entspricht, welche für eine frühere Pipelinestufe notwendig sind, die in der bevorzugten Ausführungsform der sekundären Ausführungseinheit entsprechen, mit den gespeicherten Sätzen von Bit-Indikatorsignalen, um die Anwesenheit von Betriebsmittelkonflikten festzustellen. Wenn die Vergleichsschaltkreise eine Übereinstimmung zwischen den Satz von Bit-Indikatorsignalen und einen anderen Satz von gespeicherten Bit- Indikatorsignalen feststellen, dann wird ein Ausgabe-Sperrsignal erzeugt, welches einen Betriebsmittelkonflikt anzeigt. Das Sperrsignal veranlaßt die Befehlseinheit, ihre Operation anzuhalten, wodurch der Befehl, der den Konflikt erzeugt hat, daran gehindert wird, in die Pipeline einzutreten, bis es keinen Konflikt mehr gibt.
- Entsprechend der bevorzugten Ausführungsform, wenn die primäre Ausführungseinheit die Ausführung von jedem Befehl vervollständigt hat, sendet sie ein Vollzugssignal zu der Befehlseinheit. Dies ermöglicht der Befehlseinheit, den Satz von Bit-Indikatorsignalen zu löschen, der in dem entsprechenden Betriebsmittelregister gespeichert ist. Wenn diese Tätigkeit den Betriebsmittelkonflikt beseitigt, dann schalten die Vergleichsschaltkreise das Sperrsignal ab und der Befehl kann in die Pipeline eintreten.
- Durch Feststellen, ob die Register und Indikatorbetriebsmittel von den primären und sekundären Ausführungseinheiten geteilt werden und den Befehl in die Pipeline zur Ausführung außerhalb der Reihenfolge eintreten können, solange kein Betriebsmittelkonflikt vorliegt, wird die hohe Leistung der Verarbeitungseinheit beibehalten.
- In der bevorzugten Ausführungsform umfassen die primäre und sekundäre Ausführungseinheit jeweils Registerdateispeicher, welche die softwaresichtbaren Register enthalten, die von der Verarbeitungseinheit verwendet werden. Nur diese Register, welche von den Verarbeitungseinheiten beim Ausführen von Befehlen geteilt werden, werden als potentielle Konflikte angezeigt. In der bevorzugten Ausführungsform umfaßt die primäre Ausführungseinheit mehrere Befehlseinheiten, von denen jede einen verschiedenen Untersatz von Befehlssätzen ausführt. Dies entspricht den kommerziellen, wissenschaftlichen und allgemeinen Befehlen. Nur diese Indikatoren, die einen potentiellen Konflikt erzeugen können und von den früheren und letzten Stufen geteilt werden, sind als Betriebsmittel innerhalb des Satzes von Bit-Indikatorsignalen enthalten. Jedes Betriebsmittel, welches nur verwendet wird von Befehlen, für welche die Pipeline-Operation nicht weitergeht (ebenso komplexe Befehle genannt) ist ausgeschlossen. In dem Fall von bestimmten Typen von wissenschaftlichen Befehlen werden mehrere Indikatoren in einen einzigen Indikator aufgenommen zum Detektieren von Konflikten für solche Typen von wissenschaftlichen Befehlen, in welchen die Pipeline-Operation fortfahren kann. Um die Detektierung eines Konflikts zu erleichtern sind die Indikator-Betriebsmittel unterteilt in verschiedene Klassen als Funktion des Befehlstyps und der Ausführungseinheit. Ebenso vermindert die Anordnung beträchtlich die Komplexität der Schaltung. Da in der bevorzugten Ausführungsform die Befehlseinheit und die Ausführungseinheit aufgebaut sind aus separaten, integrierten Schaltkreischips, sind solche Verminderungen der Komplexität besonders wichtig in Hinsicht auf die Leistung, die Kosten, die Testbarkeit und die Zuverlässigkeit.
- Die neuen Merkmale, welche die Erfindung charakterisieren, sowohl in Hinsicht auf die Organisation wie auf das Betriebsverfahren zusammen mit weiteren Aufgaben und Vorteilen, werden besser verstanden werden anhand der folgenden Beschreibung in Verbindung mit den begleitenden Zeichnungen. Es wird jedoch ausdrücklich darauf hingewiesen, daß jede Zeichnung nur zum Zwecke der Erläuterung der Beschreibung gegeben ist und nicht als eine Definition der Grenzen der Erfindung beabsichtigt ist.
- Fig. 1 ist ein Blockdiagramm der Pipelineverarbeitungseinheit, welche die Vorrichtung des Verfahrens der vorliegenden Erfindung umfaßt.
- Fig. 2a bis 2c zeigen ausführlich die verschiedenen Einheiten von Fig. 1.
- Fig. 3a und 3b sind Diagramme, die verwendet werden zur Erklärung des Betriebs der bevorzugten Ausführungsform der vorliegenden Erfindung.
- Fig. 4 ist ein Diagramm, das die Verarbeitung einer Abfolge von Befehlen gemäß der vorliegenden Erfindung zeigt.
- Fig. 1 zeigt in Blockdiagrammform ein Produktionsdaten-Verarbeitungssystem 10. Wie gezeigt, umfaßt das System eine zentrale Verarbeitungseinheit (CPU) 20, eine virtuelle Speicher-Managementeinheit (VMMU) 40 und eine Cache-Einheit 60. Die Cache-Einheit 60 ist an einem Systembus 80 über eine Busschnittstellen einheit (BIU) 100 gekoppelt. Die Verarbeitungseinheit (CPU) ist gemäß den Prinzipien der vorliegenden Erfindung aufgebaut.
- Wie gezeigt, umfassen die Hauptelemente der CPU 10 eine Befehlseinheit 20-2, eine A-Einheit 20-4 und eine Anzahl von Ausführungseinheiten (E) 20-6. In der bevorzugten Ausführungsform umfassen die Ausführungseinheiten 20-6 eine Verarbeitungseinheit für wissenschaftliche Befehle (S-Einheit) und eine Verarbeitungseinheit für kommerzielle Befehle (C-Einheit). Die Cache-Einheit 60 umfaßt einen Befehlscache (I-cache) 60-2 für das Speichern von Befehlen, welche ausgeführt werden, und eine Ausführungs-Cache-Einheit (E-cache) 60-4 zum Speichern von Operanden oder Daten, auf welchen operiert wird, entsprechend den auszuführenden Befehlen.
- Die I-Einheit 20-2 führt zwei Hauptfunktionen aus. Sie holt Befehle von der I- Cache-Einheit 60-2 und spaltet oder decodiert diese Befehle, um festzustellen, wie andere Einheiten, nämlich die A-Einheit 20-4 und die E-Einheit 20-6 diese Befehle weiterverarbeiten. Zudem umfaßt die I-Einheit 20-2 die Zweigadressenerzeugungs-Schaltungen zum Ausführen von bestimmten Zweigbefehlen, welche dann von der Produktionslinie entfernt werden können.
- Die A-Einheit 20-4 erzeugt Adressen von Befehlen, die sie von der I-Einheit 20-2 empfangen hat. Zusätzlich hat sie die Fähigkeit, bestimmte Typen von Befehlen auszuführen, wie beispielsweise Befehle des Register-zu-Registertyps, welche dadurch von der Produktionsleitung genommen werden können. Wenn der Befehl ein Typ von Befehl ist, der durch die E-Einheit 20-6 ausgeführt wird, dann sendet die A-Einheit 20-4 eine virtuelle Adresse zur VMMU 40, welche sie in eine physikalische Adresse umsetzt zum Holen der spezifizierten Operanden von der E- Cache-Einheit 60-4. Die Operanden, die von der E-Cache-Einheit 60-4 geholt worden sind, werden übertragen zu der E-Einheit 20-6 zum Vervollständigen der Ausführung des Befehls, der ursprünglich durch die I-Einheit 20-2 von der I- Cache-Einheit 60-2 empfangen wurde. Die A-Einheit 20-4 umfaßt Mittel zur Bestätigung, wenn es ein Zweigbefehl war und die Zweigadresse zurück an die I- Einheit 20-2 gesendet wurde, welche schon den nächsten Befehl von der I-Cache- Einheit 60-2 angefordert hat. Sowohl die A-Einheit 20-4 wie auch die E-Einheit 20-6 umfassen Registerdateien, welche den Inhalt der Register speichern, die für einen Programmierer zugänglich sind, wie unten ausführlich erklärt wird. Sowohl die I-Cache-Einheit 60-2 wie auch die E-Cache-Einheit 60-4 werden mit Befehlen und Operanden aktualisiert, die von dem Hauptspeicher über den Systembus 100 und BIU 80 geholt werden.
- Befehle werden in einer produktionsartigen Weise durch die Elemente der CPU 20 ausgeführt. Das heißt, die I-Einheit 20-2 empfängt jeden Befehl von der I- Cache-Einheit 60-2, spaltet ihn auf und sendet den Befehl an die A-Einheit 20-4. Die A-Einheit 20-4 führt entweder den Befehl aus oder sendet die virtuelle Adresse an die VMMU 40 zur Übersetzung, um die erforderlichen Operanden von der E-Cache-Einheit 60-4 zu holen, die ihrerseits zur E-Einheit 20-6 gesendet werden.
- Während die A-Einheit 20-4 ihren Teil des ersten Befehls, den sie von der I-Einheit 20-2 empfangen hat, ausführt, holt die I-Einheit 20-2 den zweiten Befehl und die nachfolgenden Befehle von der I-Cache-Einheit 60-2. Wenn die A-Einheit 20- 4 die virtuelle Adresse, die von dem ersten Befehl spezifiziert wurde, an die VMMU 40 schickt und die I-Einheit 20-2 von dem Ereignis unterrichtet, dann sendet die I-Einheit 20-2 den zweiten Befehl an die A-Einheit 20-4. Die VMMU 40 adressiert die E-Cache-Einheit 60-4, während die A-Einheit 20-4 den zweiten Befehl verarbeitet, der in die Produktionspipeline eingegeben wurde. Wenn die E- Einheit 20-6 den ersten Befehl ausführt, dann kann die VMMU 40 die Operanden von der E-Cache-Einheit 60-4 holen, welche von dem zweiten Befehl spezifiziert wurden, während die A-Einheit 20-4 eine virtuelle Adresse für einen dritten Befehl erzeugt. Zur gleichen Zeit spaltet die I-Einheit 20-2 einen vierten Befehl auf und holt den nächsten Befehl. Auf diese Weise können fünf Befehle die Produktionsleitung hinuntergehen zu einem gegebenen Zeitpunkt.
- Da jedoch die I-Einheit 20-2 bestimmt, wer Zweigbefehle ausführen kann und die A-Einheit 20-4 bestimmte softwaresichtbare Registerbefehle ausführen kann, werden diese Befehle von der Produktionslinie entfernt, sobald die Ausführung dieser Befehle vollständig ist. Wenn die A-Einheit 20-4 einen Zweigbefehl verarbeitet und die Bedienungen des Zweiges getroffen sind, dann bestätigt die A-Einheit 20-4 sofort die Zweigadresse, die von der I-Einheit 20-2 empfangen wurde, und der Zweigbefehl wird von der Produktionslinie entfernt.
- Es ist wichtig, daß der Betrieb der Produktionslinie ohne Unterbrechung fortschreitet. Jedoch gibt es Situationen, in welchen Konflikte in den Betriebsmitteln auftreten können, die von den Befehlen, welche in die Produktionslinie eingegeben werden, spezifiziert werden. Die Anordnung der vorliegenden Erfindung verwendet die Tatsache, daß bestimmte Einheiten der Produktionslinie einen Untersatz der gesamten Anzahl von Befehlen ausführen. Daher nutzt sie in Hinsicht auf die Leistung den Vorteil, daß nur bestimmte Register und Indikatorbetriebsmittel jemals in Konflikt zwischen der A-Einheit 20-4 und der E-Einheit 20- 6 geraten.
- Die Verminderung der Betriebsmittel zeigt sich in den/dem Steuerwort(en) das von der I-Einheit 20-2 erzeugt wird als Ergebnis des Aufspaltens von jedem Befehl, wie hier erklärt wurde. Zudem werden komplexe Befehle besonders behandelt. Ein komplexer Befehl ist ein Befehl, welcher viele potentielle Fallenbedienungen haben kann, welche es schwierig machen, mit hinreichender Sicherheit den Operationszustand der Pipeline vorherzusagen, bevor die Falle (trap) stattgefunden hat, so daß der Betrieb in dem Zustand wieder aufgenommen werden kann, der der Verarbeitung der Falle folgt. Solche komplexen Befehle werden von der I-Einheit detektiert und führen zu einem Anhalten der Pipeline. Dies hat den Vorteil, daß die Chip-Schaltkreiskomplexität beträchtlich vermindert wird, was aus den oben erwähnten Gründen wichtig ist.
- Fig. 2a zeigt programmierzugängliche oder sichtbare Register- und Indikator-Betriebsmittel, welche von den A- und E-Einheiten geteilt bzw. gemeinsam benutzt werden. Wie gezeigt, gibt es vierzig programmsichtbare Register, welche von verschiedenen Befehlen geladen und gelesen werden können. Diese umfassen sieben Allgemeinwort-Operandenregister, zehn Adressenregister, sieben Allgemein-Doppelwort-Operandenregister, zwölf Steuerregister und drei Vierwort- Wissenschafts-Akkumulatoren und ein Descriptorsegment-Basisregister. Diese Register sind in der A-Einheit 20-4 und der E-Einheit 20-6 lokalisiert.
- Zweiunddreißig dieser Register entsprechen den Stellen innerhalb der Registerfeldspeicher, die in den A- und E-Einheiten enthalten sind, wie in Fig. 1 gezeigt ist. Wenn entweder die A-Einheit 20-4 oder eine der E-Einheiten 20-6 in eine gemeinsam benutzte Registerstelle hineinschreibt, dann empfängt die andere Einheit eine Kopie der Daten, die in diese Stelle eingeschrieben werden. Das Lesen und Schreiben der Registerdateispeicher wird von den mikroprogrammierten Steuerspeichereinheiten gesteuert, welche abseits der A-Einheit und der E-Einheits- Chips angeordnet sind.
- Jede der Steuerspeichereinheiten steuert Sequenzen von Mikrobefehlsworten, die ausgelesen werden und geladen werden in Lesedatenregister (read data register, RDR), wie es für die Ausführung von Befehlen erforderlich ist, welche von der I- Einheit 20-2 empfangen werden. Die A- und E-Einheiten umfassen eine arithmetische und logische Einheit (ALU) zusätzlich zu einem Schieber zum Durchführen solcher Operationen, die für die Ausführung der empfangenen Befehle notwendig sind. Die Operationen und Aktualisierungen der Registerdateispeicher innnerhalb der A- und E-Einheiten sind in der zuvor zitierten anhängigen Anmeldung mit dem Titel "A Mechanism for Automatically Updating Multiple Unit Register File Memories" beschrieben.
- Die Indikatorregister I, CI und SI sind getrennte Hardwareregister, die in der A- Einheit angeordnet sind. Diese Register werden aktualisiert durch sowohl die A- wie auch die E-Einheitschaltungen. Das heißt, die E-Einheit 20-6 umfaßt Indikatorlogikschaltungen, welche in Antwort auf die Ausführung von bestimmten Befehlen Signale erzeugen zum Aktualisieren der Indikatorregister. Das I-Register enthält Programmstatus-Indikatoren für allgemeine und erweiterte Integer- Befehle. Diese Indikatoren werden den I-Registerbitpositionen wie folgt zugeordnet:
- Bit 0 = Überlaufindikator OV;
- Bit 1 = reserviert für zukünftige Verwendung
- Bit 2 = ein Trägerindikator C für die letzte Operation, die zur Einwirkung auf dieses Bit vorgesehen ist;
- Bit 3 = ein Bit-Testindikator B, der den Status des letzten, getesteten Bit anzeigt;
- Bit 4 = ein Eingangs/Ausgangsindikator I, der den Status der letzten peripheren Abfrageoperation anzeigt;
- Bit 5 = ein Größer-als-Indikator G, Bit 6 = ein Kleiner-als-Indikator L und Bit 7 = ein Ungleichheitszeichenindikator U, der das Ergebnis der letzten Vergleichsoperation anzeigt.
- Das CI-Register, welches zum Zeitpunkt der Initialisierung gelöscht wird, wird während der Ausführung von kommerziellen Befehlen aktualisiert. Diese Indikatoren sind in CI-Registerbitpositionen wie folgt zugeordnet:
- Bit 0 = Überlaufindikator OV;
- Bit 1 = Abschneide-Indikator TR, welcher während alphanumerischer Operationen gesetzt wird;
- Bit 2 = Vorzeichenfehlindikator SF, welcher während dezimaler Operationen gesetzt wird;
- Bits 3,4 & 7 = reserviert für zukünftige Verwendung;
- Bit 5 = Größer-als-Indikator G, welcher während der Ausführung von bestimmten dezimalen und alphanumerischen Befehlen gesetzt wird;
- Bit 6 = Kleiner-als-Indikator L, welcher während der Ausführung von bestimmten dezimalen und alphanumerischen Befehlen gesetzt wird.
- Die SI Register, welche zum Zeitpunkt der Initialisierung gelöscht werden, werden während der Ausführung von wissenschaftlichen Befehlen aktualisiert. Die Indikatoren sind in SI Registerbitpositionen wie folgt zugeordnet:
- Bit 0 = Exponent-Unterlaufindikator;
- Bits 1,4 und 7 = reserviert für zukünftige Verwendung;
- Bit 2 = Signifikanz-Fehler-Indikator, der während einer Fließ-zu-Integer- Konversions-Operation verwendet wird;
- Bit 3 = Präzisionsfehlerindikator, der während einer Fließ-zu-Integer-Konversions-Operation verwendet wird;
- Bit 5 = Größer-als-Indikator G; und
- Bit 6 = Kleiner-als-Indikator L.
- Gemäß der Lehre der vorliegenden Erfindung sind nur solche Indikatoren und Register, die potentielle Betriebsmittelkonflikte erzeugen können, durch die Betriebsmittelsteuerworte bezeichnet, wie hier erklärt wird. Das heißt, diese Befehle, welche den I/O-Indikator, die CI-Indikatoren und bestimmte SI-Indikatoren setzen können, halten ebenfalls die Pipelineoperation an und sind daher beseitigt worden. Ein einziges Bit wird verwendet für die Gruppe der wissenschaftlichen Befehle, die die Pipeline-Operation nicht anhalten.
- Fig. 2b zeigt die I-Einheit 20-2 in aller Ausführlichkeit. Die I-Einheit 20-2 umfaßt einen I-Chip 20-20 und Klebe-Logikschaltungen 20-22, welche den I-Chip mit den anderen Chips der CPU verbinden. Der I-Chip 20-20 ist logisch unterteilt in eine I-Hole-Einheit (I fetch unit IFU) 20-200 zum Holen von Befehlen von der I- Cache-Einheit 60-2, und eine I-Crack-Einheit (ICU) 20-250 zum "Aufspalten" ("cracking") oder Decodieren der geholten Befehle.
- Die IFU 20-200 umfaßt die Addierer, Multiplexer und Registerelemente 20-202 bis 20-218, die wie gezeigt angeordnet sind. Die IFU 20-200 verwendet lokale Programmzähler 20-208, um Zweigadressen zu erzeugen. Anfänglich werden der P-Zähler 20-208 und eine der virtuellen Adressenregister (20-212 oder 20-214) beladen mit einer virtuellen Adresse, die von der A-Einheit 20-4 über die Multiplexerschaltung 20-206 bzw. 20-210 in Antwort auf ein Ladesignal A-P-LD empfangen wurde, die ebenfalls von der A-Einheit 20-4 empfangen wurde. Die virtuelle Adresse zeigt auf die Stelle in der I-Cache-Einheit 60-2, welche den nächsten Befehl speichert, der in die Pipeline eintreten soll. Während eines I-Hol-Zyklus wird die virtuelle Adresse zur I-Cache-Einheit 60-2 übertragen von entweder dem VA0-Register 20-212 oder dem VA1-Register 20-214 über die Multiplexerschaltung 20-218.
- Entweder das VA0-Register 20-212 oder das VA1-Register 20-214 werden verwendet, um die virtuelle Adresse bereitzustellen, bis ein Zweigbefehl durch die I- Einheit 20-2 decodiert worden ist. Zu dieser schaltet die I-Einheit 20-2 das VA- Register in der Weise, daß, wenn das VA0 Register aktiv ist, dann die von dem Zweigbefehl aufgerufene Adresse in das VA1 Register 20-214 gespeichert wird.
- Wenn die ICU 20-250 einen kleinen (sieben oder sechzehn Bit) Verschiebe- Zweigbefehl detektiert, dann erzeugt die I-Einheit die Zweigadresse durch Senden von einem Sechzehn-Bit-Verschiebe-Wert zur IFU 20-200 über die Multiplexerschaltungen 20-204. Dieser Wert wird addiert über den Addierer 20-202 zu dem Inhalt des P-Zählers 20-208, um die Zweigadresse zu erzeugen. Der wird dann in das VA-Register geladen, das von dem VA-Pointer ausgewählt wurde.
- Die ICU 20-205 umfaßt zwei Sätze von String-Puffern (SBA und SBB), welche den Blöcken 20-252 bzw. 20-254 entsprechen. Jeder Puffer umfaßt acht Sechzehn-Bit-Register und empfängt Daten von der I-Cache-Einheit, zwei Worte oder zweiunddreißig Bits zu einem Zeitpunkt. Wie gezeigt, wird jeder Befehl, der aus der I-Cache-Einheit 60-2 gelesen wurde, in entweder dem Puffer 20-252 oder 20- 254 geladen. Die ICU 20-250 erhält einen gegenwärtigen String-Pointer, der angibt, welcher der zwei String-Puffer im Gebrauch ist, zusätzlich zu Eingabe und Ausgabe und Zähl-Pointern für jeden Satz von Puffern.
- Einer der String-Puffer empfängt einen Strom von aufeinanderfolgenden Befehlen von jeder I-Cache-Einheit 60-2. Wenn es einen Zweigbefehl gibt, werden die Befehle des neuen Stroms, der dem Zweig folgt, gespeichert in den anderen String- Puffer. Wie gezeigt, wird jeder Befehl des Befehlsstroms, der verarbeitet wird, über den Multiplexer 20-256 zu den I-Crack-Logikschaltungen von Block 20-260 und zu den A- und E-Einheiten über Multiplexer 20-258 übertragen. Die I-Crack- Logikschaltungen von Block 20-260 umfassen drei Aufspalt- oder Decodier- Schaltungsanordnungen ICKHI, ICKMD und ICKLO. Jede der Crack-Anordnungen decodiert oder spaltet eine andere Gruppe von Bits von jedem Befehl parallel auf.
- Die Ergebnisse der ersten Stufe werden auf eine zweite Stufe zum Aufspalten oder Decodieren gegeben, die dem Block mit der Bezeichnung ICRK entspricht. Die ICRK-Stufe bestimmt genau, welcher Befehl mit welcher Adressensyllabe etc. verarbeitet wird. Das heißt; sie bestimmt die spezifische Art des Befehls, welcher ausgeführt werden soll. Wenn es ein Software-sichtbarer Register-zu- Register-Befehl ist, dann wird er von der A-Einheit 20-2 ausgeführt, und wenn es ein Speicherbefehl ist, wird er von der E-Einheit 20-6 ausgeführt. Die ICRK-Stufe liefert Signale, um die String-Pufferzähler 20-270 und die Betriebsmittelsteuer- Pointer-Schaltungen des Betriebsmittelsteuer-Anordnungsblocks 20-280 zu aktualisieren. Die I-Crack-Schaltungen 20-260 legen ebenfalls Befehlswortsignale an die Steuerspeicher-I/A-Adressenerzeugungsschaltungen 20-220 der Klebe- Logikschaltungen 20-22 an. Die Erzeugungsschaltungen 20-220 adressieren den A-Einheit-Steuerspeicher, welcher ein Mikrobefehlswort in das A-Einheit-RDR- Register ausliest, zum Ausführen des Befehls.
- Der letzte Teil der ICU 20-250 ist die Betriebsmittel-Steueranordnung 20-280, welche entsprechend der Lehre der vorliegenden Erfindung aufgebaut ist. Der Block 20-280 arbeitet dahingehend, daß Befehle, die Betriebsmittelkonflikte hervorrufen können, an dem Eintritt in die Pipeline gehindert werden. Wie gezeigt umfaßt der Block 20-280 eine Anzahl von Betriebsmittel-Steuerregistern RSRCO- RSRC3, die in ihrer Anzahl der Anzahl von Stufen in der Pipeline entsprechen, die Befehle verarbeiten können. Block 20-280 umfaßt ebenfalls einen Satz von Oder-Schaltungen 20-282 zum logischen Ordern von Signalen von entsprechenden Bit-Positionen von jeder der Betriebsmittel-Steuerregister, die auf einen ersten Satz von Eingängen der Vergleichslogikschaltungen von Block 20-284 gegeben werden. Die Vergleichslogikschaltungen 20-280 empfangen einen zweiten Satz von Eingangssignalen von der ICRK Stufe, die erzeugt werden als ein Teil eines A-Betriebsmittelsteuerwortes als Ergebnis des Aufspaltens oder Decodierens des nächsten Befehls, wie hier beschrieben wird.
- Zudem umfaßt die Betriebsmittelanordnung 20-280 einen Zwei-Bit-Pointer EOUTPTR, welcher eines der vier Betriebsmittelregister auswählt, daß verwendet wird, um das Betriebsmittelwort des nächsten Befehls, der von der E-Einheit 20-6 ausgeführt werden soll, zu speichern. Jedesmal, wenn ein Wort gespeichert wird, wird der EOUTPTR-Pointer um Eins erhöht. Wenn die Befehle durch die E-Einheit 20-6 vervollständigt wurden und von der Pipeline entfernt wurden, dann werden die E-Betriebsmittelregister in der Reihenfolge gelöscht. Ein anderer Zweit- Bit-Pointer EDONEPTR wird verwendet, um das zu löschende Register auszuwählen. Der EDONEPTR-Pointer wird um Eins erhöht jedesmal dann, wenn der E-Einheit-Befehl vervollständigt wurde.
- Wenn ein Befehl aufgespaltet wird, dann bestimmen die Schaltungen 20-260, welches der Betriebsmittel, das potentiell gebraucht werden könnte von den A- und E-Einheiten, in der A-Einheit zum Ausführen des Befehls verwendet wird. Fig. 3 zeigt das Format der A- und E-Betriebsmittelsteuerworte, die verwendet werden, um alle Register und Indikatorbetriebsmittel, die zwischen den A- und E- Einheiten geteilt werden, wiederzugeben. Wie aus der Figur deutlich wird, sind die Betriebsmittel, welche von den Komplementären der sichtbaren und Indikatorregister von Fig. 2a ausgewählt werden, die potentiell von sowohl den A- wie auch den E-Einheiten gleichzeitig gebraucht werden könnten, wie folgt: die sieben K-Register, die sieben R-Register, die M1- und M2-Register und die OV-, C-, B-, G-, L-, U- und S-Indikatoren.
- Jedes dieser Betriebsmittel ist wiedergegeben durch ein anderes Bit in dem A- Betriebsmittelsteuerwort (ARSRC) und ein entsprechendes Bit in dem E- Betriebsmittelsteuerwort (ERSRC), wie es in Fig. 3 gezeigt ist. Da bis zu vier E- Einheit-Befehle in verschiedenen Stufen der Verarbeitung zu einer Zeit in der Pipeline sein können, kann es bis zu vier ERSRC-Worte geben, die in der Betriebsmittel-Steueranordnung 20-280 gespeichert sind. Die relevanten Signale zum Erzeugen der Betriebsmittelsteuerworte sind in einem Anhang enthalten.
- Mit Bezug auf die Fig. 1 bis 3 wird der Betrieb der vorliegenden Erfindung nun beschrieben in bezug auf die Verarbeitung von Abfolgen von Befehlen der Fig. 4a bis 4g. Wie zuvor diskutiert, kann in der Produktionslinien-Betriebsart die A-Einheit 20-4 potentiell Betriebsmittel für jeden Befehl verwenden, der von der I-Einheit 20-2 empfangen wird. Ebenso können diese selben Betriebsmittel in dem Fall von bestimmten Befehlen durch eine der E-Einheit 20-6 verwendet werden (z. B. E, CIP oder SIP).
- Entsprechend bestimmen in Antwort auf jeden empfangenen Befehl die I-Einheit- Crack-Logikschaltungen, welche Einheit den Befehl ausführt und das entsprechende Betriebsmittelsteuerwort. Das heißt, die I-Crack-Logikschaltungen erzeugen aus der Kombination von Befehls-Bits ein E-Einheit-Befehlssignal EINSTR, wenn der Befehl durch eine der E-Einheit 20-6 ausgeführt werden soll. Dieses Signal wird verwendet, um den Befehl zu den E-Einheit-Befehlspuffer FIFO unter der Steuerung der I-Befehlssignale I-EFIRST und I-ELAST zu senden. Das heißt, das I-EFIRST ermöglicht dem E-IFIFO-Puffer mit dem ersten Doppelwort des Befehls geladen zu werden, während das Signal I-ELAST das Laden des letzten Befehlsdoppelwortes in den E-IFIFO-Puffer ermöglicht.
- Wenn die I-Einheit bereit ist, den Befehl aufzuspalten, erzeugt sie ein CRACK- Signal, das anzeigt, daß sie bereit zum Decodieren des nächsten Befehls ist, daß einer der String-Puffer mindestens ein Befehlsdoppelwort oder ein Befehlseinzelwort enthält und daß die A-Einheit ein A-DONE-Signal erzeugt hat, das anzeigt, daß sie die Ausführung des vorangegangenen Befehls vervollständigt hat. Das CRACK-Signal veranlaßt die Erzeugung eines I-BEGIN-Signals, welches an die A-Einheit während des Zyklus gesendet wird, daß die I-Einheit das erste Befehlsdoppelwort eines gültigen Befehls an die A-Einheit sendet.
- Betrachtet man den Betrieb ausführlicher, dann zeigt Fig. 4a eine erste Abfolge von Befehlen, welchen mehrere verschiedene Typen von Betriebsmittelkonflikten erzeugen. Der erste Konflikt tritt zwischen einem E-Einheit-Laderegister (LDR) Befehl auf, der die Verwendung eines programmsichtbaren Registers R1 spezifiziert, und dem letzten Auftreten eines A-Einheit-Addier-Befehls, der die Verwendung desselben R1 Registers spezifiziert. Der zweite Konflikt tritt auf zwischen einem E-Einheit-Lade-Register-Befehl (LDR), der das Register R3 spezifiziert, und einem anderen E-Einheit-Addier-Befehl, der die Verwendung des Registers R3 zur Adressenerzeugung in der A-Einheit spezifiziert. Der letzte Konflikt tritt zwischen dem E-Einheit-Addier-Befehl und dem Zweig beim Überlaufbefehl auf, welcher während der Befehlsausführung auftritt.
- Die Fig. 4b bis 4f zeigen die Zustände der E-Betriebsmittelregister RSRC0 bis RSRC3 und EDONE- und EOUT-Pointer während der aufeinanderfolgenden I- Zyklen des Betriebs auf, die für die Verarbeitung der Abfolge von Befehlen erforderlich sind. Die Befehlssequenz ist in einer I-CX 60-2 gespeichert. Die Befehle mit der angezeigten Mnemonik sind in Hexadezimalform gezeigt. Beispielsweise ist der erste Befehl codiert als 9800 0000 0014 und ist ein Drei-Wort-Lade-R1- Registerbefehl, der eine sofortige Speicheradresse von Hexadezimal 14 verwendet. Die VMMU 40 konvertiert diese virtuelle Adresse in eine physikalische Adresse, welche auf die E-Cache-Einheit 60-4 angelegt wird, um den Speicher- Operandenwert (mit der Bezeichnung MEMVAL1) zu holen. Dieser Wert wird geladen in das Register R1, das in der Registerdatei der E-Einheit 20-6 untergebracht ist, bei der Ausführung des LDR-Befehls.
- Es wird angenommen, daß die Betriebsmittel-Register leer sind und die EOUT- und EDONE- Pointer beide auf das E-Betriebsmittel-Register RSRCO zeigen vor dem Start der Befehlssequenz. Die I-Einheit 20-2 holt während des ersten Zyklus von Fig. 4b den LDR-Befehl aus der I-Cache-Einheit 60-2 und der Verwendung der Adresse, die durch das VA0-Register 20-212 von Fig. 2b spezifiziert wurde und speichert sie den SBA-Stringpuffer 20-252. Das heißt, die IFU-20-200 wird initialisiert durch die A-Einheit 20-4, welche eine Adresse zu dem VA0-Register 20-212 über den Multiplexer 20-210 (d. h. Position A-VAD) sendet. Die I-Cache- Einheit 60-2 liest die ersten zwei Worte des Dreiwort-LDR-Befehls in den SBA- Puffer 20-252 aus. Die IFU 20-200 fährt fort, Befehle zu holen, bis der Befehlspuffer voll ist.
- Während des zweiten Zyklus wird der LDR-Befehl über den Multiplexer 20-256 an die I-Crack-Logikschaltungen angelegt. Diese Schaltungen spalten die op- Codes des Befehls auf, was dazu führt, daß die ICRK-Stufe ein E-Betriebsmittelwort ERSRC = 00400000 erzeugen und ein A-Betriebsmittelwort ARSRC mit lauter Nullen erzeugt. Das Codieren der Betriebsmittel-Bits zeigt an, daß die E- Einheit 20-6 die Verwendung des allgemeinen Registers R1 bei der Ausführung des LDR-Befehls erfordert und daß die A-Einheit 20-4 keines der Betriebsmittel erfordert, die sie mit der E-Einheit teilt. Das Bit ER1 wird gesetzt auf einen binären EINS-Zustand als Ergebnis des Decodierens des Befehls. Die Gleichung für ER1 ist enthalten im Anhang. Als nächstes legt die I-Einheit 20-2 das Signal I- Begin an, um das op-Code-Register der A-Einheit mit dem ersten Wort des LDR- Befehls für die fortgesetzte Verarbeitung laden zu können.
- Während des nächsten Taktzyklus wird der Wert des E-Betriebsmittelwortes ERSRC in das E-Betriebsmittel-Register RSRC0 geladen. Ebenso wird der EOUT-Pointer um Eins erhöht, damit er auf das nächste Betriebsmittel-Register RSRC1 zeigt. Die Ergebnisse sind in Fig. 4b gezeigt. Die Sofort-Speicher- Adresse (die zweiten und dritten Worte des Befehls) werden ebenfalls an die A- Einheit 20-4 weitergegeben.
- Während eines vierten Taktzyklus wird der zweite LDR-Befehl, der von der IFU 20-200 aus der I-Cache-Einheit 60-2 geholt wurde, aufgespalten durch die I- Einheit 20-2. Dies führt zur Erzeugung eines E-Betriebsmittelwortes ERSRC = 00200000 und ein A-Betriebsmittelwort ARSRC mit lauter Nullen. Das Codieren der E-Betriebsmittel-Bits zeigt, daß die E-Einheit 20-6 die Verwendung des Allgemein-Registers R2 bei der Ausführung des LDR-Befehls erfordert. Das heißt, das Bit ER2 wird auf einen binären EINS-Zustand gesetzt als Ergebnis des Aufspaltens des op-Codes des Befehls. Erneut benötigt die A-Einheit keinerlei Betriebsmittel. Die ODER-Schaltung 20-282 kombiniert logisch die gespeicherten Gruppen von E-Betriebsmittelwort-Bitpositionen, die ihrerseits mit dem A- Betriebsmittelwort verglichen werden. Wenn es keine Übereinstimmung gibt (d. h. das LOCK-Signal ist binär Null), dann erzeugt die ICRK-Stufe das Signal I- BEGIN. Dies ermöglicht erneut, daß der op-Code des Befehlswortes zu der A- Einheit 20-4 übertragen wird.
- Während eines fünften Taktzyklus wird das E-Betriebsmittelwort ERSRC in das E-Betriebsmittel-Register RSRC1 geladen. Erneut wird der EOUT-Pointer um Eins erhöht, damit er auf das E-Betriebsmittel-Register RSRC1 zeigt. Die Ergebnisse sind in Fig. 4c gezeigt. Ebenso werden die IMA des LDR-Befehls zu der A- Einheit 20-4 gesendet.
- Während des sechsten Taktzyklus wird der erste ADD-Befehl, der von der IFU 20-200 aus der I-Cache-Einheit 60-2 geholt wurde, aufgespaltet durch die I- Crack-Logikschaltungen 20-260. Dies führt zur Erzeugung eines E-Betriebsmittelwortes ERSRC = 0000 0000 und eines A-Betriebsmittelwortes ARSRC = 0040 0060. Das Codieren der E-Betriebsmittelwort-Bits zeigt an, daß die E- Einheit keinerlei Betriebsmittel zur Ausführung des ADD-Befehls erfordert und daß die A-Einheit 20-4 die Verwendung des Allgemein-Registers R1 und der Überlauf-(OV)- und Carry-(C)-Indikatoren erfordert. Das Bit AR1 wird auf einen binären EINS-Zustand gesetzt als Ergebnis des Decodierens des op-Codes des Befehls. Die OV- und C-Indikator-Bits werden ebenfalls auf der Basis einer solchen Decodierung gesetzt.
- Die ODER-Schaltungen 20-282 kombinieren logisch die gespeicherten Gruppen von E-Betriebsmittel-Wortbitpositionen, welche mit dem A-Betriebsmittelwort verglichen werden. In diesem Fall stimmen die R1 Bits in dem A-Betriebsmittelwort ARSRC und das E-Betriebsmittelwort, das in dem Register RSRC0 gespeichert ist, überein. Dies veranlaßt die Vergleichschaltungen 20-284, das LOCK- Signal auf eine binäre EINS zu setzen. Das Signal LOCK seinerseits veranlaßt die ICRK-Stufe, das STALL-Signal auf eine binäre EINS zu setzen, was den ADD- Befehl daran hindert, in die Pipeline einzutreten.
- Genauer gesagt hindert das STALL-Signal die Befehle daran, in die Pipeline einzutreten, indem das Signal I-BEGIN und I-EFIRST daran gehindert werden, auf binäre EINSEN zu schalten. Das STALL-Signal wird auf die Stringpuffer-Pointer gelegt und verhindert, daß der OUT-Pointer des Stringpuffers seinen Zustand ändert. Der OUT-Pointer zeigt weiterhin auch den Befehl, welcher den Konflikt erzeugt hat, bis der Konflikt gelöst ist.
- Es ist zu beachten, daß der ADD-Befehl ausgeführt wird durch die A-Einheit 20-4 und daß alle Nullen des E-Betriebsmittelwortes nicht in das Register RSRC2 gespeichert werden. Wenn jedoch der Befehl durch die E-Einheit 20-6 ausgeführt wird, dann wird das Betriebsmittelwort mit lauter NULLEN in das Register RSRC2 gespeichert, um die Ausgestaltung zu vereinfachen.
- Während eines nächsten Taktzyklus, in welchem die E-Einheit 20-6 die Ausführung des ersten LDR-Befehls vervollständigt, signalisiert sie diese Tatsache durch Senden des Signales E-DONE an die I-Einheit 20-2. Dies veranlaßt die ICRK- Stufe, das E-Betriebsmittel-Register RSRC0 auf Null zu setzen, was dazu führt, daß die Signale LOCK und STALL auf Null gesetzt werden. Zur gleichen Zeit wird der EDONE-Pointer um eins erhöht, so daß er auf das E-Betriebsmittel- Register RSRC 1 zeigt. Die Ergebnisse sind in Fig. 4d gezeigt. Der ADD-Befehl kann nun in die Pipeline eintreten und wird an die A-Einheit 20-4 zur Ausführung gesendet.
- Während des nächsten Taktzyklus, wenn der dritte LDR-Befehl von der I-Crack- Logikschaltung 20-260 aufgespalten wird, führt dies zur Erzeugung eines E- Betriebsmittelwortes ERSRC = 0010 0000 und eines A-Betriebsmittelwortes ARSRC = 0000 0000. Das Codieren der E-Betriebsmittelwort-Bits zeigt an, daß die E-Einheit 20-6 die Verwendung eines Allgemeinregisters R3 erfordert, während die A-Betriebsmittelwort-Bits anzeigen, daß die A-Einheit keines der geteilten Betriebsmittel erfordert. Das Bit ER3 wird auf einen binären EINS-Zustand gesetzt als Ergebnis des Decodierens des op-Codes des Befehls. Da es keinen Konflikt gibt, verbleibt das LOCK-Signal auf einer binären NULL, was dem LDR-Befehl ermöglicht, in die Pipeline einzutreten (d. h. er wird in das A-Einheitop-Code-Register geladen). Wenn die E-Einheit 20-6 ihre Ausführung des zweiten LDR-Befehls vervollständigt, dann erzeugt sie das Signal E-DONE, was zu einem Löschen des E-Betriebsmittel-Registers RSRC 1 auf NULL und Erhöhen des EDONE Pointers um eins führt, so daß er nun auf das E-Betriebsmittel- Register RSRC2 zeigt.
- Während des nächsten Taktzyklus wird das E-Betriebsmittelwort ERSRC in das E-Betriebsmittel-Register RSRC2 geladen. Ebenso wird der EOUT-Pointer um eins erhöht, so daß er nun auf das E-Betriebsmittel-Register RSRC3 zeigt. Die Ergebnisse sind in Fig. 4e gezeigt. Das IMA für den LDR-Befehl wird ebenfalls zur A-Einheit 20-4 gesendet.
- Während des nächsten Taktzyklus wird der zweite ADD-Befehl, der aus der Hexadezimalstelle 9A31 geholt wurde, aufgespalten durch die I-Crack- Logikschaltungen 2-260. Dies führt zur Erzeugung eines E-Betriebsmittelwortes ERSCR = 0040 0060 und eines A-Betriebsmittelwortes ARSRC = 0010 8000. Das Codieren der Betriebsmittelwort-Bits zeigt an, daß die E-Einheit 20-6 die Verwendung des Allgemeinregisters R3 und der Indikatoren OV und C erfordert und daß die A-Einheit 20-4 die Verwendung des Allgemeinregisters R1 und des Adressenregisters B1 erfordert. Die Bits ER3, OV und C werden auf binäre EIN- SEN gesetzt als Ergebnis des Decodierens des Befehls-op-Codes. Die Bits AR1 und AB1 werden auf binäre EINSEN gesetzt, basierend auf einer ähnlichen Decodierung.
- Die Vergleichsschaltungen 20-284 vergleichen die entsprechenden Bit-Positionen in dem A-Betriebsmittelwort ARSRC mit dem Inhalt des Betriebsmittelwortes der RSRC-Register und detektiert eine Übereinstimmung zwischen den R3 Bits in dem ARSRC-Wort und dem E-Betriebsmittelwort, das in dem Register RSRC2 gespeichert ist. Dies setzt die Signale LOCK und STALL auf binäre EINSEN, was verhindert, daß der zweite ADD-Befehl in die Pipeline eintritt.
- In der obigen Situation ergibt sich der Konflikt aus zwei E-Einheit-Befehlen. Das heißt, der Konflikt tritt nur auf, weil die A-Einheit 20-4 die Verwendung eines geteilten Betriebsmittels erfordert, um eine Operanden-Adresse zu erzeugen, und daß das Betriebsmittel schon zur Verwendung durch den vorangegangenen E- Einheit-Befehl gekennzeichnet wurde.
- In einem nachfolgenden Taktzyklus, wenn die E-Einheit 20-6 die Ausführung des dritten LDR-Befehls vervollständigt, signalisiert sie dies durch erneutes Erzeugen des Signals E-DONE. Dies veranlaßt das E-Betriebsmittel-Register RSRC2, gelöscht zu werden, was die Signale LOCK und STALL auf binäre NULLEN setzt. Zur gleichen Zeit wird der EDONE-Pointer erhöht um eins, so daß er auf das Register RSRC3 zeigt. Dies ermöglicht es, daß der ADD-Befehl in die Pipeline eintritt. Ebenso wird das E-Betriebsmittelwort in das Register RSRC3 geladen und der EOUT-Pointer um eins erhöht, damit er auf das Register RSRC0 zeigt. Die Ergebnisse sind in der Fig. 4f gezeigt.
- Während des nächsten Taktzyklus wird der SUB-Befehl durch die I-Crack-Logikschaltungen 20-260 aufgespalten. Dies führt zur Erzeugung eines E-Betriebsmittelwortes ERSRC = 0000 0000 und eines A-Betriebsmittelwortes ARSRC = 0010 0000. Das Codieren der Betriebsmittel-Bits zeigt an, daß die E-Einheit 20-6 keine Betriebsmittel zur Ausführung dieses Befehls erfordert, während die A-Einheit 20-4 die Verwendung des Allgemeinregisters R3 benötigt. Das heißt, das Bit AR3 wird auf einen binären EINS-Zustand gesetzt durch Decodieren des op-Codes des Befehls.
- Die Vergleichsschaltungen 20-284 vergleichen die entsprechenden Bit-Positionen in dem A-Betriebsmittelwort ARSRC mit dem Inhalt des Betriebsmittelwortes der RSRC-Register und finden keine Übereinstimmung. Dies ermöglicht, daß der SUB-Befehl an die A-Einheit 20-4 übertragen wird.
- Während des nächsten Taktzyklus spalten die I-Crack-Logikschaltungen 20-260 den Verzweige-zu-Überlauf-Befehl auf. Als Ergebnis erzeugt dies ein E- Betriebsmittelwort ERSRC = 0000 0000 und ein A-Betriebsmittelwort ARSRC = 0000 0040. Das Codieren der Betriebsmittel-Bits zeigt an, daß die E-Einheit 20-6 keine Betriebsmittel zur Ausführung dieses Befehls erfordert, während die A-Einheit 20-4 die Verwendung des Überlaufindikators erfordert. Das heißt, das Bit AOV wird auf einen binären EINS-Zustand durch Decodieren des op-Codes des Befehls gesetzt.
- Die Vergleichsschaltungen 20-284 vergleichen die entsprechenden Bitpositionen in dem A-Betriebsmittelwort ARSRC mit den Inhalten der E-Betriebsmittelworte der RSRC-Register und finden eine Übereinstimmung zwischen den OV-Bits in dem ARSRC-Wort und dem Inhalt des E-Betriebsmittelwortes des Registers RSRC3. Dies setzt die Signale LOCK und STALL auf binäre EINSEN, was verhindert, daß die Zweigbefehle in die Pipeline eintreten. Sobald die E-Einheit 20-6 die Ausführung des zweiten ADD-Befehls vervollständigt hat, sendet sie das Si gnal E-DONE aus, welches das E-Betriebsmittel-Register RSRC3 löscht, wodurch die Signale LOCK und STALL auf binäre EINSEN gesetzt werden. Zu dieser Zeit wird der EDONE-Pointer um eins erhöht, um auf das Register RSRC0 zu zeigen. Der BOV-Befehl wird zu der A-Einheit 20-4 zur Ausführung übertragen.
- Aus dem obigen wird deutlich, wie die vorliegende Erfindung die Identifikation solcher Befehle erlaubt, die während verschiedener Stufen der Pipeline ohne Konflikt der Betriebsmittel ausgeführt werden können, wodurch die Leistung beschleunigt wird. Die Betriebsmittelkonflikt-Konfliktschaltungen sind dazu bestimmt, den Befehlen der verschiedenen Ausführungseinheiten das Eintreten in die Pipeline zu ermöglichen, wenn diese Befehle ausgeführt werden können, ohne daß die Pipeline anhält.
- Beispielsweise gibt es einen bestimmten Typ von wissenschaftlichem Befehlssatz (IEEE-Standard), von denen die meisten verarbeitet werden können, ohne daß die Pipeline angehalten werden muß, im Gegensatz zu Nativ-Mode-Wissenschaftsbefehlen, welche als komplexe Befehle kategorisiert werden müssen. Das Folgende ist eine Sequenz dieser Befehle.
- Wie oben erwähnt, verwenden die Wissenschaftsbefehls-Sätze einen separaten Satz von Betriebsmitteln (Akkumulatoren und Indikatoren) im Unterschied zu demjenigen, die von Nicht-Wissenschafts-Befehlen verwendet werden. Daher tritt der einzige potentielle Konflikt, der von solchen Befehlen mit sich gebracht wird, zwischen einem Wissenschafts-Befehl auf, der in der E-Einheit 20-6 ausgeführt wird, und einem nachfolgenden wissenschaftlichen Zweigbefehl, der in der A- Einheit 20-4 ausgeführt wird.
- Der ISML-Befehl der obigen Sequenz ist der erste Befehl, der von den ICRK- Schaltungen 20-260 aufgespalten wird. Da dies keinen Indikator berührt, wird das S-Bit in dem E-Betriebsmittelwort ERSRC nicht gesetzt. Die Aufspaltung des nächsten Befehls ISCR legt fest, daß dieser Befehl die wissenschaftlichen Indikatoren G, L und O berührt. Daher wird das S-Bit dem E-Betriebsmittelwort ERSRC gesetzt. Wenn entsprechend die ICRK-Schaltungen 20-260 den SBL- Befehl aufspalten, dann wird das S-Bit in dem A-Betriebsmittelwort ARSRC gesetzt, da der Befehl den Weniger-als-Indikator (L) berührt. Daher detektieren die Vergleichsschaltungen 20-284 einen Konflikt zwischen den S-Bits in den A- und E-Betriebsmittelworten. Als Ergebnis kann der SBL-Befehl nicht in die Pipeline eintreten, bis die E-Einheit 20-6 die Ausführung des ISCR-Befehls vervollständigt hat. Wenn es keinen Vergleichsbefehl in der Sequenz gäbe, dann könnte der Zweigbefehl sofort in die Pipeline eintreten und verarbeitet werden. Wenn mehrere Befehle in den Vergleichs- und Zweigbefehlen enthalten sind, dann wird der Vergleichsbefehl vervollständigt, bevor der Zweigbefehl aufgespalten wird. Die Erfindung beseitigt Verzögerungen durch Anhalten des Pipelinebetriebes, wenn es einen tatsächlichen Betriebsmittelkonflikt gibt, ansonsten können die Befehle in die Pipeline eintreten.
- Die Mnemoniks der Befehle sind gegeben in der Publikation mit dem Titel "Hardware Version of DPS6 Programmers Pocket Guide", Bestellnr. CU75-02 (August 1984) und nachfolgenden Aktualisierungen. Die Notationen in den Boolschen Gleichungen sind wie folgt:
- EQ 0100 GLEICH ZU HEXADEZIMAL 0100
- GT 3 GRÖSSER ALS HEXADEZIMAL 3
- EQ 2 NICHT GLEICH HEXADEZIM 2
- NLT 018 NICHT KLEINER ALS HEXADEZIMEL 018
- NGT 01E NICHT GRÖSSER ALS HEXADEZIMAL 01E
- LT 3 KLEINER ALS HEXADEZIMAL 3.
- Das I-BEGIN-Signal wird erzeugt durch die Boolsche Gleichung:
- I-BEGIN = CRACK & STALL & HOLD
- worin CRACK = READY & NONELEFT & ADONE.
- Das bedeutet ein negiertes Signal, d. h. HOLD sollte gelesen werden als "NOT HOLD"-Signal.
- Die Boolsche Gleichung für das I-EFIRST-Signal ist:
- I-EFIRST = CRACK & STALL & EINSTR.
- Die Boolsche Gleichung für das Signal EINSTR wird erzeugt als Funktion von Kombinationen von Bits der verschiedenen Typen von Befehlen, die die Ausführung durch die E-Einheit 20-6 erfordern. Die Boolschen Gleichungen sind:
- EINSTR = GCS + (IO + IOLD + SC + MASK + BIT4 + LB + LEV + INCDEC & RAS + MTM + MUL + DIV + STM + SSBP) & EII + (BSTORE + EBIMO) & IMO + EMSK & EII + MLV & (SI + ESI & EII1) + (ESO + EDO) & ( ERAS & (EII1 + EII23) + AS3EII45) + EEII & (EII1 + EII23) + (SDO + SO) & ^RAS & ^IMO & ^EII.
- GCS = I-INST (0-8).EQ.0;
- IO = (I-INST (0-8).EQ.0100)
- IOLD = I-INST (0-8).EQ.0103
- SO = (I-INST (0-3).EQ.8 & ((I-INST (4-8).EQ.1) + (I-INST (4-8).GT.3))
- SSBP = I-INST (0-8).EQ.0106
- SOV = SO & ((I-INST (4-8).EQ.4) + (I-INST (4-8).EQ.01D) + (I-INST (4-7).EQ.4)) + INCDEC
- LB = SO & (I-INST (4-8).EQ.05)
- BIT4 = (I-INST (0-5).EQ.022) & (I-INST (8).EQ.0)
- SDO = (I-INST (0-3).GT.8) & (I-INST (4-8).NEQ.2)
- MASK = (I-INST (0).EQ.1) & (RLBP. NEQ) & I-INST (4-8). EQ.015) + (I-INST (0-7).EQ.085) + (I-INST (0-7).EQ.08F)
- SC = ((I-INST (0-3).GT.8) & ((I-INST (4-8).EQ.011) + (I-INST (4-8).EQ.013) + (I-INST (4-8).EQ.018) + (I-INST (4-8).EQ.01A))) & ^EII1 & ^EII23 & ^AS3EII45
- STM = (I-INST (0).EQ.1) & (RLHP.NEQ.0) & (I-INST (4-8) .EQ OE)
- WOBEI RLBP = I-INST (1-3)
- MUL = (I-INST (0).EQ.1) & (RLBP.NEQ.0) & (I-INST (4-8) .EQ 016)
- DIV = (I-INST (0).EQ.1) & (RLBP.NEQ.0) & (I-INSTI (4-8) .EQ 06)
- MTM = (I-INST (0-3).GT.8) & (I-INST (4-8).EQ.0)
- BSTORE = SO & ((I-INST(4-8).EQ.4) + (I-INST(4-8).EQ.6) + (I-INST(4-6).EQ.3) + (I-INST(4-7).EQ. OA) + (I-INST(4-7).EQ.8) + (I-INST(4-8).EQ.018) + (I-INST(4-8).EQ.01A) + (I-INST(4-7).EQ.OE)) + BIT4 + SDO & ((I-INST(5-7).EQ.7) + (I-INST(4-8).EQ.015) + (I-INST(4-6).EQ.7))
- SI = (I-INST(0).EQ.0) & (RLBP.NEQ.O) & (I-INST(4-7).GT.OB)
- EBIMO = (I-INST(0-3).GT.8) & ((I-INST(4-8).EQ.019) + (I-INST(4-8).EQ.017) + (I-INST(4-8).EQ.01D) + (I-INST(4-8).EQ.01F))
- LEV = SO & (I-INST(4-8).EQ.01C)
- INCDEC = SO & ((I-INST(4-8).EQ.011) + (I-INST (4-8) .EQ 015))
- MLV = I-INST(6-7).EQ.3
- ESO = (I-INST(0-3).EQ.8) & (I-INST(4-8).NLT.018) & (I-INST(4-8).NEQ.01B) & (I-INST(4-8).NGT.01E)
- ESOV = ESO & (I-INST(6-7).LT.3) & (I-INST(6-8).NEQ.1)
- BSI = EBK & (I-INST(8).EQ.1)
- EDO = (I-INST(0-3).GT.8) & (I-INST(4-7).NLT.4)
- EMSK = (I-INST(0).EQ.1) & (RLBP.NEQ.0) & (I-INST(4-8) .EQ.OF)
- WOBEI RLBP = I-INST(1-3)
- EEII = KDIV + KMUL + KDIVF + KMULP
- KDIV = (I-INST(0).EQ.1) & (RLBP.NEQ.0) & (I-INST(4-8) .EQ.017)
- KMUL = (I-INST(0).EQ.1) & (RLBP.NEQ.0) & (I-INST(4-8) .EQ.01F)
- KDIVP = (I-INST(0) & (RLBF.NEQ.0) & (I-INST(4-8) .EQ.01C)
- KMULP = (I-INST(0).EQ.1) & (RLBP.NEQ.0) & (I-INST(4-8) .EQ.01E)
- EII1 = I-INST(9-15).EQ.06C
- EII23 = I-INST(9-15).EQ.07C
- AS3EII45 = I-INST(9-15).EQ.058
- RAS = (I-INST(9-11).EQ.5) & (I-INST(12).EQ.0) & (I-INST(13-15).NEQ.0)
- IMO = I-INST(9-15).EQ.070
- KAS = (I-INST(23-28).EQ.01A) & NC
- ERAS = (I-INST(24-28).EQ.01A) & NC
- NC = I-INST (29-31).NEQ.0
- EII = EII1 + EII23 + AS3EII45
- Die A-Betriebsmittel-Bits werden erzeugt gemäß der folgenden Boolschen Gleichungen:
- AB1 = (RLB.EQ.1) & (SDO&BRG&RAS + IMO&I-INST(0)&(I-INST (4-8).EQ.01B) + EDO & EB & ERAS & (EII1+EII23)) + (REGN.EQ.1) & ((CMN+SDO&BRG) & RAS + (SO+SDO) & ((RM.NEQ.5) + (I-INST(12).EQ.1))) + (REGN.EQ.5) & (SO+SDO) & (RM.GT.4) & (I-INST(12) .EQ.1) + (REN.EQ.1) & (ESO+EDO) & (EII1 & (ERAS & (I-INST (20-23).EQ.OE) + ((REM.NEQ.5) + (I-INST(28).EQ.1)) & (EMAP.EQ.1)) + EII23 & ((EMAP.EQ.0) + (REM.GT.0) & ((I-INST(28).EQ.1) (REM.EQ.7) + (REM. NGT.3))) + AS3EII45 & (EMAP.EQ.0) & (REM.GT.0) & ((I-INST(28).EQ.1) + (REM. GT.3)) + (EMAP. EQ.1) & ((I-INST(28).EQ.0) + (REM.GT.0)))) + (REM.EQ.1) & ((SO+SDO)&ASN + GCS&ISM) & ((MAP.EQ. 0) + (MAP.EQ.1) & (REM.GT.0) & ((I-INST(28).EQ.1) + (REM.LT.4) + (REM.EQ.7)) + (MAP.EQ.2) & (REM.GT.0) & ((I-INST(28).EQ.1) + (REM.GT.3)) + (MAP.EQ.3) & ((I-INST(28).EQ.0) + (REM.GT.0))) + (REN.EQ.5) & (ESO+EDO) & EII1 & (EMAP.EQ.1) & (REM.GT.4) & (I-INST(28).EQ.1).
- AOV = GOV + SHOV&(SSH) + OSHOV&(LSH) + (SOV+ADDSUB)& RAS + (AIDSID+ADDSUB)&IMO + OSHOV & ESH1 + NSHOV & ESH0 & NSH + (ESOV+EDOV) & ERAS & (EII1+EII23) + ESI & ADV & EII1.
- AC = (SOV+ADDSUB) & RAS + (AIDSID+ADDSUB) & IMO + (ESOV+EDC) & ERAS & (EII1+EII23) + ESI & ADV & EII1 + GC + (SHC & SSH) + (OSHC & LSH) + OSHC & ESH1 + NSHC & ESHO & NSH.
- AR1 = (LSH + ESHO + ESH1) & LSO + SSH & SSORDD + (RLB.EQ.1) & (SI&^MLV + BR + SSH + LSH + RAS&ERIMO + SDO&^SC&^BRG&^MUL&^DIV&^STM&^MTM&^ ERIMO&(RAS+IMO)) + (REGN.EQ.1) & RAS & (SO&^ SSBP&^CMN&^LB&^BIT4&^LEV+SDO&^SC&^BRG&^MUL&DIV&^ STM&^MTM) + (REN.EQ.1) & (ESO&^KAVM + EDO&^EEII& ^EMSK) & EII1 & ERAS & (I-INST(20-21).LT.3) + (RM.EQ.1) & (SO + SDO) + (RM.EQ.5) & (SO + SDO) & (NBITS.GT.8) & (NBITS.NEQ.OC) + (REM.EQ.1) & (((SO + SDO) & ASN + GCS & ISM) & (MAP.EQ.0) & (ENBITS.GT.0) + (ESO + EDO) & (EII1 & (EMAP.EQ.1) + EII23 & (EMAP.EQ.0) & (ENBITS.GT.0) + AS3EII45 & (EMAP.EQ.0) & (ENBITS.EQ.0))) + (REM.EQ.5) & (ESO+EDO) & EII1 & (EMAP.EQ.1) & (ENBITS.GT.8) & (ENBITS.NEQ.OC).
- AR3 = (RLB.EQ.3) & (SI&^MLV + BR + SSH + LSH + RAS&ERIMO + SDO&^SC&^BRG&^MUL&^DIV&^STM&^MTM&^ ERIMO&(RAS+IMO) + (REGN.EQ.3) & RAS & (SO&^ SSBP&^CMN&^LB&^BIT4&^LEV + SDO&^SC&^BRG&^MUL&^ DIV&^STM&^MTM) + (REN.EQ.3) & (ESO&^KAVM + EDO&^ EEII&^EMSK) & EII1 & ERAS & (I-INST(20-21).LT.3) + (RM.EQ.3) & (SO + SDO) + (RM.EQ.7) & (SO + SDO) & (NBITS.GT.8) & (NBITS.NEQ.OC) + REM. EQ.3) & (((SO + SDO) & ASN + GCS & ISM) & (MAP.EQ.0) & (ENBITS.GT.0) + (ESO + EDO) & (EII1 & (EMAP.EQ.1) + EII23 & (EMAP.EQ.0) & (ENBITS.GT.0) +AS3EII45 & (EMAP.EQ.0) & (ENBITS.EQ.0))) + (REM.EQ.7) & (ESO+EDO) & EII1 & (EMAP.EQ.1) & (ENBITS.GT.8) & (ENBITS.NEQ.OC).
- AS = SCB & I-INST(1).
- Die E-Betriebsmittel-Bits werden erzeugt gemäß der folgenden Boolschen Gleichung:
- EIOV = MLV&SI + ESI&MLV + MAS&(SOV+ADDSUB)&^ EII + IMO & SOV & AIDSID + (MUL+DIV)&^ EII + (ESOV+EDOV)&EII&(MAS+EIMO) + (RDIV+KMUL+RDIVP)&EII.
- ER1 = (RLB.EQ.1) & (SI&MLV + (MUL+DIV)&^ EII + SDO&^ SC&^ EII&MAS&^ STM&^ BRG ERIMO & IMO + LXALSO & EII) + (REGN.EQ.1) & (MUL + DIV + STM + BIT4 + LB) & RAS + (BIT4 + LB) & RAS & (I-INST(16-31).EQ.0) + (REN.EQ.1) & EEII & ERAS & EII1 & (I-INST(20-23).NEQ.OE).
- ER3 = (RLB.EQ.3) & (SI&MLV + (MUL+DIV)&^ EII + SDO&^ SC&^ EII&MAS&^ STM&^ BRG ERIMO & IMO + LXALSO & EII) + (REGN.EQ.3) & (MUL + DIV + STM + BIT4 + LB) & RAS + (REN.EQ.3) & EEII & ERAS & EII1 & (I-INST(20-23).NEQ.OF).
- Es = GCS & ISI.
- Beschreibung der A- und E-Betriebsmittelwort-Gleichungsausdrücke:
- RLB = I-INST(0-3);
- REGN = I-INST(13-15);
- REN = I-INST(29-31);
- REM = I-INST(25-27).
- Siehe andere Teile des Anhangs für Befehlsabkürzungen.
- Die RSRC-Register werden geladen entsprechend den folgenden Fallausdrücken:
- If ($CLK & Q120 & ^HOLD1 & I-EFIRST) THEN (CASE (EOUTPTR) OF ( RSRC0 = ERSRC, RSRC1 = ERSRC, RSRC2 = ERSRC, RSRC3 = ERSRC)).
- Das EOUTPTR wird aktualisiert entsprechend dem folgenden Fallausdruck:
- If ($CLK & Q120 & ^HOLD1 & I-EFIRSTX & ^LOADP) THEN (EOUTPTR = EOUTPTR.PLUS.1);
- If ($CLK & Q120 & ^HOLD1 & LOADP) THEN (EOUTPTR = 0).
- Die RSRC-Register werden gelöscht gemäß dem folgenden Fachausdruck:
- If ($CLK & Q120 & E-DONE-R & ^(I-EFIRST&^HOLD1 & (EOUTPTR.EQ.EDONEPTR)))
- THEN (CASE (EDONEPTR) OF ( RSRC0 = 0, RSRC1 = 0, RSRC2 = 0, RSRC3 = 0)).
- Das EDONEPTR wird aktualisiert gemäß dem folgenden Fallausdruck:
- If ($CLK & Q120 & E-DONE-R & ^LOADP) THEN (EDONEPTR = EDONEPTR.PLUS.1);
- If ($CLK & Q120 & LOADP) THEN (EDONEPTR = 0).
- Die LOCK- und STALL-Signale werden erzeugt gemäß der folgenden Boolschen Gleichung:
- LOCK = CRACK & ((RSRC0 + RSRC1 + RSRC2 + RSRC3) & ARSRC.NEQ.0 + (RSRC0(0-20) + RSRC1(0-20) + RSRC2(0-20) + RSRC3(0-20)).NEQ.0 & (IO + IOLD + GCS & (GENE & ^OGC + COMM))).
- STALL = STALL1 + STALLX (external) + EMPTY (no instruction in buffers);
- STALL1 = LOCK + (LESTOP + RT6A + RT6E) & CRACK + EFULL & EINSTR & CRACK + (STORCNT.EQ.2) 6 EINSTR & CRACK &^EC-STCOMP + STATE4 & ADONE & ^CPCK & ^GNCK & ^RSCK & ^CSCK + RTV02 + RTV05 + RTV06 + RTV12 + RTV13 + RTV14 + RTV16 + ISTL + CRACK & (SCB & RE-DONE1-E +LAOUT + LEOUT) + (RINT + RUN-OUT) & CRACK.
- Es ist offensichtlich, daß viele Änderungen an der Vorrichtung und dem Verfahren der vorliegenden Erfindung vorgenommen werden können, ohne daß ihre Lehre verlassen wird. Beispielsweise kann die Betriebsmittelkonflikt-Vorrichtung in einer Pipeline-Verarbeitungseinheit verwendet werden, die eine Anzahl von Stufen umfaßt, welche in der Lage sind, die Ausführung von Befehlen mit verschiedenen Befehlssätzen und geteilten Betriebsmitteln zu vervollständigen.
Claims (10)
1. Vorrichtung zur Erkennung von Betriebsmittel-Konflikten, welche in
einer Pipeline-Verarbeitungseinheit mit einer Mehrzahl von seriell
gekoppelten Pipeline-Stufen (20-2, 20-4, 20-6) enthalten ist, wobei jede Stufe
zum Durchführen einer unterschiedlichen Operation auf jedem der durch
die Verarbeitungseinheit (20) zu verarbeitenden Befehl bestimmt ist,
wobei
Befehle der ersten (20-2) der Stufen nacheinander zur Ausführung
zugeführt werden;
- die Verarbeitungseinheit (20) eine Anzahl von Betriebsmitteln (Fig.
2a) aufweist, die von mindestens zwei der Stufen beim
Durchführen der Operationen verwendbar sind;
- die erste Stufe (20-2) ein Befehls-Dekodiermittel (20-260) zum
Erfassen und Detektieren jedes empfangenen Befehls aufweist, und
wobei
- die Vorrichtung geschaffen ist zum Detektieren und Verhindern
potentieller Konflikte bei den Benutzungsanforderungen der
Betriebsmittel in den Befehlen;
wobei die Vorrichtung aufweist:
- eine Anzahl von Registern (RSRCO-3), wobei jedes Daten-Einheiten
hält, welche die durch einen dekodierten Befehl benötigten
Betriebsmittel repräsentieren;
- Mittel zum Transferieren von durch das Dekodieren eines Befehls
erzeugten Daten-Einheiten an die Register;
- eine Komparator-Einheit (20-282, 20-284) zum Vergleichen
entsprechender Bits der in den Registern gespeicherten Daten-Einheiten
und der zuletzt durch das Dekodieren erzeugten Daten-Einheit und
zum Erzeugen eines Ausgabesignals, wenn eine Übereinstimmung
vorhanden ist, und
- eine Schaltung, die auf das Ausgabesignal antwortet zum
Veranlassen, daß die Verarbeitungseinheit die Ausführung des der zuletzt
erzeugten Daten-Einheit entsprechenden Befehls verhindert;
dadurch gekennzeichnet, daß
das Dekodiermittel (20-260), wenn es jeden empfangenen Befehl erfaßt,
eine Daten-Einheit erzeugt, wobei deren individuelle Bits jeweils eines
der durch den Befehl benötigten Betriebsmittel repräsentiert; wobei eine
der Daten-Einheiten erzeugt wird für jede einer jeweiligen der Stufen,
fähig zum Durchführen der letzten Operation bei der Ausführung eines
der verschiedenen Typen von Befehlen; und wobei die Schaltung die
Verarbeitungseinheit (20) veranlaßt, die erste Stufe (20-2) vom
Transferieren des Befehls, welcher der zuletzt erzeugten Daten-Einheit
entspricht, an eine nächste (20-4 oder 20-6) der Stufen zu sperren.
2. Vorrichtung gemäß Anspruch 1, bei welcher das
Befehlzerlege-Dekodiermittel aufweist: Logikschaltungsmittel in Antwort auf das
Ausgabeverriegelungs-Signal, welches ein Anhalte-Signal erzeugt zum Verhindern
des Transfers des jeden neuen Befehls, der den Betriebsmittel-Konflikt
produziert, an die Pipeline-Stufen zur Ausführung.
3. Vorrichtung gemäß Anspruch 1, bei welcher die Anzahl von Register-
Mitteln gekoppelt sind zum Empfangen einer Menge von
Bit-Indikationen, die einem von der Anzahl von Betriebsmittel-Worten entsprechen
für jeden durch eine letzte der Mehrzahl von Pipeline-Stufen
auszuführenden neuen Befehl, wobei die Befehls-Vorrichtung weiter erste Zeiger-
Mittel aufweist, die mit den Register-Mitteln und dem Befehlszerlege-
Dekodiermittel verbunden sind, wobei die ersten Zeiger-Mittel
spezifizieren, welches von der Anzahl von Register-Mitteln mit der Menge von
Bit-Indikationen, die für jeden neuen Befehl erzeugt wird, in der
Abwesenheit des Betriebsmittel-Konflikts beladen werden soll.
4. Vorrichtung gemäß Anspruch 3, bei welcher das Zerlege-Dekodiermittel
Mittel aufweist zum Erzeugen eines Transfer-Signals in der Abwesenheit
des Betriebsmittel-Konflikts zum Transferieren jedes neuen Befehls in
die Pipeline-Stufen zur Ausführung und zum Inkrementieren der ersten
Zeiger-Mittel, um ein nächstes der Anzahl von Register-Mitteln zu
spezifizieren.
5. Vorrichtung gemäß Anspruch 3, bei welcher das
Betriebsmittel-Steuermittel weiter zweite Zeiger-Mittel aufweist, die mit den Register-Mitteln
und mit dem Zerlege-Dekodiermittel verbunden sind, wobei die zweiten
Zeiger-Mittel spezifizieren, welches der Register-Mittel das
Betriebsmittel-Wort, welches einen Befehl, der als nächster zu vollenden ist,
entspricht, speichert, wobei das Zerlege-Dekodiermittel in Antwort auf
jedes Ausgabesignal von der letzten der Pipeline-Stufen, die angeben,
daß ein Befehl vollendet worden ist, die zweiten Zeiger-Mittel
modifizieren, um auf das Betriebsmittel-Wort, welches dem als nächstes zu
vollendenden Befehl entspricht, zu zeigen.
6. Vorrichtung gemäß Anspruch 5, bei welcher die Register
Daten-Einheiten für spätere Stufen in der Serie speichern und die Komparator-
Einheit entsprechende Bits der in den Registern gespeicherten Daten-
Einheiten und die Daten-Einheit für eine frühere Stufe in der Serie, die
zuletzt durch das Dekodier-Glied erzeugt wurde, vergleicht.
7. Vorrichtung gemäß Anspruch 6, bei welcher die Betriebsmittel
aufweisen: Register-Betriebsmittel, die beim anfänglichen Verarbeiten der
verschiedenen Typen von Befehlen benutzt werden, und
Indikator-Be
triebsmittel, die für die Ausführung der verschiedenen Typen der
Befehle durch die Mehrzahl von Stufen, die zum Ausführen von Befehlen
fähig sind, benutzt werden.
8. Verfahren zur Erkennung von Betriebsmittel-Konflikten bei der
Benutzung von zur Ausführung von Befehlen benötigten Betriebsmitteln, die
von einer Mehrzahl von seriell gekoppelten Stufen (20-2, 20-4, 20-6)
einer Pipeline-Verarbeitungseinheit (20) gemeinsam genutzt werden,
wobei jede Stufe zum Durchführen einer verschiedenen Operation
bestimmt ist und Mittel zum Vollenden der Ausführung von einem oder
mehreren Typen von Befehlen aufweist, die folgenden Schritte
aufweisend:
a) Zuführen von Befehlen an die erste (20-2) der Stufen nacheinander
zur Ausführung, wo sie erfaßt und dekodiert werden;
b) Erzeugen von Daten-Einheiten durch das Dekodieren eines Befehls;
c) Transferieren der erzeugten Daten-Einheiten an eine Anzahl von
Registern (RSRCO-3), welche Daten-Einheiten halten, die die durch
einen dekodierten Befehl benötigten Betriebsmittel repräsentieren;
d) Vergleichen entsprechender Bits der in den Registern gespeicherten
Daten-Einheiten mit entsprechenden Bits der zuletzt durch das
Dekodieren erzeugten Daten-Einheit;
e) Erzeugen eines Ausgabe-Signals, wenn es eine Übereinstimmung
gibt; und
f) Verhindern der Ausführung des Befehls, welcher der zuletzt
erzeugten Daten-Einheit entspricht;
dadurch gekennzeichnet, daß:
Schritt b) aufweist: Erzeugen eines unterschiedlichen Betriebsmittel-
Datenworts für jede der Mehrzahl von Stufen, welche die Ausführung
des einen der verschiedenen Typen von Befehlen vollenden kann, wobei
jedes Betriebsmittel-Datenwort eine vorbestimmte Anzahl von Bits
aufweist, wobei jedes für eine unterschiedliche der zwischen der
Mehrzahl der Stufen geteilten Betriebsmittel repräsentativ ist;
Schritt d) aufweist: Vergleichen der verschiedenen
Betriebsmittel-Datenworte, die während des Befehls-Dekodierens erzeugt werden, mit
Betriebsmittel-Datenworten, die in einer ersten der Mehrzahl der Mehrzahl
von Stufen gespeichert sind und für jeden Befehl hinweisend sind,
dessen Ausführung durch mindestens eine letzte der Anzahl der
Mehrzahl von Stufen zu vollenden ist, wobei eines der
Betriebsmittel-Datenworte für jede einer jeweiligen der Stufen, die zum Durchführen der
letzten Operation bei der Ausführung eines Befehls fähig sind, erzeugt
wird; und
Schritt f) aufweist: Sperren der ersten Stufe (20-2) vom Transferieren
jedes Befehls in eine nächste (20-4 oder 20-6) der Stufen, wenn eine
Übereinstimmung zwischen beliebigen zwei entsprechenden Bits der
Betriebsmittel-Datenworte vorhanden ist, wodurch ein Betriebsmittel-
Konflikt indiziert ist.
9. Verfahren gemäß Anspruch 8, bei welchem ein
Alles-NULLEN-Betriebsmittel-Datenwort erzeugt wird für die Ausführungseinheit der letzten
Stufe (20-6) beim Befehls-Dekodieren, wenn die Ausführung in einer
Adress-Einheit (20-4) zu vollenden ist, welche vor der Ausführungs-
Einheit (20-6) positioniert ist, ein
Alles-NULLEN-Betriebsmittel-Datenwort erzeugt wird für die Adress-Einheit (20-4) beim
Befehls-Dekodieren, wenn die Ausführung in der Ausführungs-Einheit (20-6) zu
vollenden ist; und Nicht-NULLEN-Betriebsmittel-Datenworte erzeugt werden
beim Befehls-Dekodieren, wenn der Befehl partiell durch die Adress-
Einheit (20-4) auszuführen ist und dann durch die Ausführungs-Einheit
(20-6) zu vollenden ist.
10. Verfahren gemäß Anspruch 9, bei welchem die Betriebsmittel aufweisen:
Register-Betriebsmittel, die bei dem anfänglichen Verarbeiten der
verschiedenen Typen von Befehlen benutzt werden, und
Indikator-Betriebsmittel, die für die Ausführung der verschiedenen Typen der Befehle
durch die Mehrzahl von Stufen, die zum Ausführen von Befehlen fähig
sind, benutzt werden.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US07/374,882 US5073855A (en) | 1989-06-30 | 1989-06-30 | Resource conflict detection method and apparatus included in a pipelined processing unit |
Publications (2)
Publication Number | Publication Date |
---|---|
DE69032635D1 DE69032635D1 (de) | 1998-10-15 |
DE69032635T2 true DE69032635T2 (de) | 1999-06-24 |
Family
ID=23478572
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE69032635T Expired - Fee Related DE69032635T2 (de) | 1989-06-30 | 1990-06-27 | Verfahren und Vorrichtung zur Erkennung von Betriebsmittelkonflikten in einer Pipeline-Verarbeitungseinheit |
Country Status (4)
Country | Link |
---|---|
US (1) | US5073855A (de) |
EP (1) | EP0405489B1 (de) |
DE (1) | DE69032635T2 (de) |
SG (1) | SG81192A1 (de) |
Families Citing this family (44)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH02234274A (ja) * | 1989-03-08 | 1990-09-17 | Hitachi Ltd | パイプライン制御論理の自動生成方法及び制御論理 |
JP2816248B2 (ja) * | 1989-11-08 | 1998-10-27 | 株式会社日立製作所 | データプロセッサ |
US5555384A (en) * | 1989-12-01 | 1996-09-10 | Silicon Graphics, Inc. | Rescheduling conflicting issued instructions by delaying one conflicting instruction into the same pipeline stage as a third non-conflicting instruction |
US5185872A (en) * | 1990-02-28 | 1993-02-09 | Intel Corporation | System for executing different cycle instructions by selectively bypassing scoreboard register and canceling the execution of conditionally issued instruction if needed resources are busy |
US5473774A (en) * | 1990-03-15 | 1995-12-05 | Texas Instruments Incorporated | Method for conflict detection in parallel processing system |
US5669002A (en) * | 1990-06-28 | 1997-09-16 | Digital Equipment Corp. | Multi-processor resource locking mechanism with a lock register corresponding to each resource stored in common memory |
US5428811A (en) * | 1990-12-20 | 1995-06-27 | Intel Corporation | Interface between a register file which arbitrates between a number of single cycle and multiple cycle functional units |
JP2642529B2 (ja) * | 1991-04-30 | 1997-08-20 | 株式会社東芝 | 並列プロセッサーの命令分配処理装置 |
US5488729A (en) * | 1991-05-15 | 1996-01-30 | Ross Technology, Inc. | Central processing unit architecture with symmetric instruction scheduling to achieve multiple instruction launch and execution |
US5522052A (en) * | 1991-07-04 | 1996-05-28 | Matsushita Electric Industrial Co. Ltd. | Pipeline processor for processing instructions having a data dependence relationship |
JP2779557B2 (ja) * | 1991-07-09 | 1998-07-23 | 三菱電機株式会社 | 並列演算処理装置 |
GB2263565B (en) * | 1992-01-23 | 1995-08-30 | Intel Corp | Microprocessor with apparatus for parallel execution of instructions |
US5416913A (en) * | 1992-07-27 | 1995-05-16 | Intel Corporation | Method and apparatus for dependency checking in a multi-pipelined microprocessor |
JP3338488B2 (ja) * | 1992-11-18 | 2002-10-28 | 富士通株式会社 | データ処理装置の検証方法及び装置 |
US6154828A (en) * | 1993-06-03 | 2000-11-28 | Compaq Computer Corporation | Method and apparatus for employing a cycle bit parallel executing instructions |
US5434987A (en) * | 1993-09-21 | 1995-07-18 | Intel Corporation | Method and apparatus for preventing incorrect fetching of an instruction of a self-modifying code sequence with dependency on a bufered store |
US6219773B1 (en) | 1993-10-18 | 2001-04-17 | Via-Cyrix, Inc. | System and method of retiring misaligned write operands from a write buffer |
US5740398A (en) * | 1993-10-18 | 1998-04-14 | Cyrix Corporation | Program order sequencing of data in a microprocessor with write buffer |
US5615402A (en) * | 1993-10-18 | 1997-03-25 | Cyrix Corporation | Unified write buffer having information identifying whether the address belongs to a first write operand or a second write operand having an extra wide latch |
US5471598A (en) * | 1993-10-18 | 1995-11-28 | Cyrix Corporation | Data dependency detection and handling in a microprocessor with write buffer |
US5724536A (en) * | 1994-01-04 | 1998-03-03 | Intel Corporation | Method and apparatus for blocking execution of and storing load operations during their execution |
US5542059A (en) * | 1994-01-11 | 1996-07-30 | Exponential Technology, Inc. | Dual instruction set processor having a pipeline with a pipestage functional unit that is relocatable in time and sequence order |
US5884057A (en) * | 1994-01-11 | 1999-03-16 | Exponential Technology, Inc. | Temporal re-alignment of a floating point pipeline to an integer pipeline for emulation of a load-operate architecture on a load/store processor |
GB2287108B (en) * | 1994-02-28 | 1998-05-13 | Intel Corp | Method and apparatus for avoiding writeback conflicts between execution units sharing a common writeback path |
US5465336A (en) * | 1994-06-30 | 1995-11-07 | International Business Machines Corporation | Fetch and store buffer that enables out-of-order execution of memory instructions in a data processing system |
US5838991A (en) * | 1994-12-29 | 1998-11-17 | International Business Machines Corporation | Preemptable idle time activities for constant data delivery by determining whether initiating a host command will conflict with an idle time activity being executed |
US6003126A (en) * | 1997-07-01 | 1999-12-14 | International Business Machines | Special instruction register including allocation field utilized for temporary designation of physical registers as general registers |
US6801995B1 (en) * | 1998-08-04 | 2004-10-05 | Agere Systems, Inc. | Method for optimally encoding a set of instruction codes for a digital processor having a plurality of instruction selectable resource types and an associated optimized set of instruction codes |
EP1004959B1 (de) * | 1998-10-06 | 2018-08-08 | Texas Instruments Incorporated | Prozessor mit Pipelineschutz |
US6665708B1 (en) * | 1999-11-12 | 2003-12-16 | Telefonaktiebolaget Lm Ericsson (Publ) | Coarse grained determination of data dependence between parallel executed jobs in an information processing system |
US7036113B1 (en) * | 2000-10-26 | 2006-04-25 | International Business Machines Corporation | Detection of resource exceptions |
US7028165B2 (en) * | 2000-12-06 | 2006-04-11 | Intel Corporation | Processor stalling |
US20060168393A1 (en) * | 2005-01-27 | 2006-07-27 | Christensen Bjorn P | Apparatus and method for dependency tracking and register file bypass controls using a scannable register file |
US9104399B2 (en) | 2009-12-23 | 2015-08-11 | International Business Machines Corporation | Dual issuing of complex instruction set instructions |
US8082467B2 (en) * | 2009-12-23 | 2011-12-20 | International Business Machines Corporation | Triggering workaround capabilities based on events active in a processor pipeline |
US9135005B2 (en) * | 2010-01-28 | 2015-09-15 | International Business Machines Corporation | History and alignment based cracking for store multiple instructions for optimizing operand store compare penalties |
US8495341B2 (en) * | 2010-02-17 | 2013-07-23 | International Business Machines Corporation | Instruction length based cracking for instruction of variable length storage operands |
US8938605B2 (en) * | 2010-03-05 | 2015-01-20 | International Business Machines Corporation | Instruction cracking based on machine state |
US8464030B2 (en) | 2010-04-09 | 2013-06-11 | International Business Machines Corporation | Instruction cracking and issue shortening based on instruction base fields, index fields, operand fields, and various other instruction text bits |
US8645669B2 (en) | 2010-05-05 | 2014-02-04 | International Business Machines Corporation | Cracking destructively overlapping operands in variable length instructions |
US8499139B2 (en) | 2010-08-12 | 2013-07-30 | Lsi Corporation | Avoiding stall in processor pipeline upon read after write resource conflict when intervening write present |
US9569280B2 (en) * | 2014-09-15 | 2017-02-14 | Seagate Technology Llc | Managing resource collisions in a storage compute device |
US10853077B2 (en) * | 2015-08-26 | 2020-12-01 | Huawei Technologies Co., Ltd. | Handling Instruction Data and Shared resources in a Processor Having an Architecture Including a Pre-Execution Pipeline and a Resource and a Resource Tracker Circuit Based on Credit Availability |
US11221853B2 (en) | 2015-08-26 | 2022-01-11 | Huawei Technologies Co., Ltd. | Method of dispatching instruction data when a number of available resource credits meets a resource requirement |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3346851A (en) * | 1964-07-08 | 1967-10-10 | Control Data Corp | Simultaneous multiprocessing computer system |
US4493020A (en) * | 1980-05-06 | 1985-01-08 | Burroughs Corporation | Microprogrammed digital data processor employing microinstruction tasking and dynamic register allocation |
EP0150177A1 (de) * | 1983-07-11 | 1985-08-07 | Prime Computer, Inc. | Datenverarbeitungsvorrichtung |
JPH063584B2 (ja) * | 1983-12-19 | 1994-01-12 | 株式会社日立製作所 | 情報処理装置 |
JPH0754461B2 (ja) * | 1985-02-08 | 1995-06-07 | 株式会社日立製作所 | 情報処理装置 |
US4789925A (en) * | 1985-07-31 | 1988-12-06 | Unisys Corporation | Vector data logical usage conflict detection |
JPH0810430B2 (ja) * | 1986-11-28 | 1996-01-31 | 株式会社日立製作所 | 情報処理装置 |
US4969117A (en) * | 1988-05-16 | 1990-11-06 | Ardent Computer Corporation | Chaining and hazard apparatus and method |
-
1989
- 1989-06-30 US US07/374,882 patent/US5073855A/en not_active Expired - Lifetime
-
1990
- 1990-06-27 DE DE69032635T patent/DE69032635T2/de not_active Expired - Fee Related
- 1990-06-27 SG SG9602793A patent/SG81192A1/en unknown
- 1990-06-27 EP EP90112234A patent/EP0405489B1/de not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
SG81192A1 (en) | 2001-06-19 |
US5073855A (en) | 1991-12-17 |
EP0405489B1 (de) | 1998-09-09 |
EP0405489A2 (de) | 1991-01-02 |
DE69032635D1 (de) | 1998-10-15 |
EP0405489A3 (en) | 1992-07-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE69032635T2 (de) | Verfahren und Vorrichtung zur Erkennung von Betriebsmittelkonflikten in einer Pipeline-Verarbeitungseinheit | |
DE69033131T2 (de) | Logikvorrichtung und Verfahren zur Verwaltung einer Befehlseinheit in einer Pipeline-Verarbeitungseinheit | |
DE69308548T2 (de) | Vorrichtung und verfahren zum befehlsabschluss in einem superskalaren prozessor. | |
DE69932066T2 (de) | Mechanismus zur "store-to-load forwarding" | |
DE69904189T2 (de) | Konfigurierter prozessor zur abbildung von logischen registernummern auf physikalische registernummern unter verwendung von virtuellen registernummern | |
DE3789345T2 (de) | Erweiterte Gleitkommaoperationen zur Unterstützung der Emulation von Quellbefehlsausführungen. | |
DE69525277T2 (de) | Datenprozessor für Operanden mit variabler Breite | |
DE60011797T2 (de) | Ausführung von mehreren fäden in einem parallelprozessor | |
DE19914617C2 (de) | Prozessor und Verfahren zum Ausführen von Befehlen an gepackten Daten | |
DE69408769T2 (de) | Fliessbandsteuerung und Registerübersetzung in Mikroprozessor | |
DE69033398T2 (de) | Rechnerarchitektur mit Mehrfachbefehlsausgabe | |
DE69327637T2 (de) | Superskalar-Computersystem | |
DE69833008T2 (de) | Prozessor mit instruktionskodierung mittels eines schablonenfeldes | |
DE69311330T2 (de) | Befehlsablauffolgeplanung von einem risc-superskalarprozessor | |
DE69612991T2 (de) | System zur bearbeitung von selbstmodifizierendem kode | |
DE69909829T2 (de) | Vielfadenprozessor für faden-softwareanwendungen | |
DE69033443T2 (de) | Mechanismus zur Verzweigungsrücksetzung in einem Prozessor mit gepaarten Befehlen | |
DE69033065T2 (de) | Mehrfachbefehlsdecoder | |
DE112004002848B4 (de) | Mikroprozessor und Verfahren zum Verifizieren einer Speicherdatei in einem derartigen Mikroprozessor | |
DE69028138T2 (de) | Mechanismus zur präzisen Behandlung von Ausnahmebedingungen in einem Prozessor mit gepaarten Befehlen | |
DE3685913T2 (de) | Vektorenverarbeitung. | |
DE19506435C2 (de) | Verfahren und Einrichtung zum Vermeiden von Rückschreibkonflikten zwischen einen gemeinsamen Rückschreibpfad verwendenden Ausführungseinheiten | |
DE69232045T2 (de) | Vorrichtung und verfahren zur ausführung von instruktionen in nicht sequentieller reihenfolge | |
DE3689595T2 (de) | Datenverarbeitungssystem. | |
DE2714805A1 (de) | Datenverarbeitungssystem |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8364 | No opposition during term of opposition | ||
8339 | Ceased/non-payment of the annual fee |