PatentDe  


Dokumentenidentifikation DE19650509C2 28.02.2002
Titel Vorrichtung und Verfahren zur Beseitigung von falschen Ergebnissen bei der Ausführung von Befehlen
Anmelder Hewlett-Packard Co. (n.d.Ges.d.Staates Delaware), Palo Alto, Calif., US
Erfinder Lesartre, Gregg, Fort Collins, Col., US
Vertreter Schoppe, F., Dipl.-Ing.Univ., Pat.-Anw., 81479 München
DE-Anmeldedatum 05.12.1996
DE-Aktenzeichen 19650509
Offenlegungstag 04.09.1997
Veröffentlichungstag der Patenterteilung 28.02.2002
Veröffentlichungstag im Patentblatt 28.02.2002
IPC-Hauptklasse G06F 9/38

Beschreibung[de]

Die vorliegende Erfindung bezieht sich allgemein auf Computerprozessorarchitekturen und insbesondere auf die Behebung von einer unkorrekten Spekulation während einer Ausführung von Befehlen außerhalb der Reihenfolge in einem Prozessor. Die Vorrichtung und das Verfahren können ebenfalls zur Zeitgebung und Synchronisation verwendet werden.

Ein Computerprozessor (eine Verarbeitungseinheit) umfaßt allgemein eine Steuerungseinheit, welche den Betrieb des Systems anleitet, und eine arithmetisch-logische Einheit (ALU; ALU = Arithmetic Logic Unit), welche Rechenoperationen durchführt. Der Entwurf eines Prozessors betrifft die Auswahl eines Registersatzes (von Registersätzen), von Kommunikationskanälen zwischen diesen Registern und eine Einrichtung zum Anleiten und Steuern, wie diese arbeiten. Normalerweise wird ein Prozessor von einem Programm geleitet, welches aus einer Serie von Befehlen besteht, die in einem Hauptspeicher gehalten werden. Jeder Befehl ist eine Gruppe von Bits, welcher üblicherweise eine Länge von einem oder mehreren Worten aufweist und eine Operation spezifiziert, die von dem Prozessor ausgeführt werden soll. Im allgemeinen umfaßt der Grundzyklus eines Prozessors folgende Schritte: (a) Abrufen eines Befehls von einem Hauptspeicher in ein Befehlsregister; (b) Decodieren des Befehls (d. h. Bestimmen, was derselbe tun soll, wobei jeder Befehl eine durchzuführende Operation und die Daten anzeigt, auf die die Operation angewendet werden soll); (c) Ausführen der Operation, die von dem Befehl spezifiziert ist; und (d) Bestimmen, wo der nächste Befehl positioniert ist. Normalerweise ist der nächste Befehl der Befehl, der dem gegenwärtigen unmittelbar folgt.

Bei Hochleistungsprozessoren, wie z. B. superskalaren Prozessoren, bei denen zwei oder mehrere skalare Operationen parallel durchgeführt werden, kann der Prozessor jedoch entworfen sein, um Befehle auszuführen, die außerhalb der Reihenfolge sind oder die in einer Reihenfolge sind, die nicht mit der konsistent ist, die durch die den Prozessor treibende Software definiert ist. Bei diesen Systemen werden Befehle ausgeführt, wenn sie ausgeführt werden können, im Gegensatz zu den Systemen, bei denen sie in der Sequenz, die durch das Programm definiert ist, erscheinen. Ferner werden nach Ausführung der Befehle außerhalb der Reihenfolge die Ergebnisse schließlich neu geordnet, um der Befehlsreihenfolge zu entsprechen, bevor die Ergebnisse zurück zu dem Programm geschickt werden.

Ein Cache-Speicher wird oft in Verbindung mit einem Prozessor in einem Computer verwendet, um die Leistung zu optimieren. Ein Cache-Speicher ist ein schneller Puffer, der zwischen dem Prozessor und dem Hauptspeicher des Computers positioniert ist. Daten und Befehle, die in gegenwärtiger Verwendung des Prozessors sind, werden in den Cache-Speicher bewegt, wodurch zwei Vorteile erreicht werden. Zuerst wird die Durchschnittszugriffszeit für Speicheranforderungen des Prozessors reduziert, wodurch der Durchsatz des Prozessors erhöht wird. Zweitens wird dadurch die Ausnutzung der verfügbaren Speicherbandbreite des Prozessors reduziert, was es ermöglicht, daß andere Geräte auf dem Systembus den Speicher benutzen, ohne den Prozessor zu stören. Ein Cache-Speicher wird somit verwendet, um den Fluß von Befehlen und Daten in dem Prozessor von dem Hauptspeicher zu beschleunigen. Diese Cache-Funktion ist wichtig, da die Hauptspeicherzykluszeit typischerweise langsamer als die Prozessortaktraten ist.

Wenn ein Prozessor auf einen Datencache bezüglich einer Datenzeile (oder "Data-Line") zugreift, sendet der Prozessor eine Adresse zu dem Cache. Der Cache analysiert daraus einen Cacheindex und verwendet denselben, um eine Speicherposition (und Speicherpositionen) auszuwählen, die die gewünschte Datenzeile enthalten können. Der Cache gibt eine Etikette (oder "Tag"), welche bei manchen Entwürfen eine reelle Seitenzahl (RPN; RPN = Real Page Number) ist, welche der Position (den Positionen) entspricht, und einen Zustandsanzeiger aus, welcher anzeigt, ob die Datenzeile, die der Etikette entspricht, gültig oder ungültig ist.

Eine Unterstützungsschaltungsanordnung, die dem Cache typischerweise zugeordnet ist, empfängt den Zustandsanzeiger und die Etikette. Wenn der Zustandsanzeiger ungültige Daten anzeigt, dann sendet die Unterstützungsschaltungsanordnung eine "Fehlschlag"-Anzeige (oder "Miss"-Anzeige) zu dem Prozessor, wobei der Prozessor in diesem Fall bezüglich der Datenleitung auf den Hauptspeicher zugreifen muß. Wenn der Zustandsanzeiger gültige Daten anzeigt, vergleicht die Unterstützungsschaltungsanordnung die Etikette mit dem Rest der Adresse, um zu bestimmen, ob der Cache gegenwärtig die gewünschte Datenzeile speichert. Wenn der Cache nicht die Datenzeile, die angefordert wurde, hat, wie es durch den Etikettenvergleich bestimmt wird, dann sendet die Unterstützungsschaltungsanordnung eine "Fehlschlag"-Anzeige zu dem Prozessor, wobei der Prozessor in diesem Fall bezüglich der Datenzeile auf den Hauptspeicher zugreifen muß. Wenn der Cache die Datenleitung, die gerade angefordert wird, hat, wie es durch den Etikettenvergleich bestimmt wird, dann sendet die Unterstützungsschaltungsanordnung eine "Treffer"-Anzeige (oder "Hit"-Anzeige) zu dem Prozessor, welche den Prozessor dazu bringt, die angeforderte Datenleitung zu lesen.

Bei Prozessoren, die eine Ausführung außerhalb der Reihenfolge von Befehlen durchführen, können die Befehle unkorrekte Ergebnisse aufgrund einer unkorrekten Spekulation erzeugen. Anders ausgedrückt können unkorrekte Ergebnisse von einem Befehl erzeugt werden, wenn der Befehl vor einem Befehl, von dem er abhängt, ausgeführt wird. Als Beispiel sei ein Szenario betrachtet, bei det einem Speicherungsbefehl ein Ladungsbefehl folgt, der von dem Speicherungsbefehl abhängt. Im allgemeinen ist ein "Ladung"-Befehl eine Anforderung, Daten von einem Speicher (von dem Cache oder von dem Hauptspeicher) zu einem Register zu übertragen, wohingegen ein "Speicherung"-Befehl eine Anforderung ist, Daten von einem Register zu einem Speicher zu übertragen. Wenn der Ladungsbefehl vor dem Speicherungsbefehl verarbeitet wird, dann überträgt der Ladungsbefehl ungültige Daten. Daher sollte der Speicherungsbefehl vor dem Ladungsbefehl ausgeführt werden, um korrekte Ergebnisse zu erreichen. Bei einem superskalaren Prozessor jedoch, welcher Befehle außerhalb der Reihenfolge ausführt, können unkorrekte Ergebnisse erhalten werden, weshalb eine Vorrichtung vorhanden sein muß, um falsche Ergebnisse zu erkennen und zu beheben.

Die GB 2 284 493 A beschreibt die Ausnahmehandhabung bei der spekulativen Ausführung von Befehlen außerhalb der Reihenfolge in einem Pipeline-Prozessor. Ein Prozessor umfaßt eine Front-End-Pipeline, welche Befehle über einen Bus erreichen und die mit einem Befehlsausgabeabschnitt und mit einer Pipeline zur Befehlsausführung außerhalb der Reihenfolge verbunden ist. Der Prozessor erzeugt einen Ergebnisdatenwert und einen Ausnahmedatenwert für jeden Befehl, indem jeder Befehl gemäß der Verfügbarkeit von Ausführungsbetriebsmitteln in dem Prozessor ausgeführt wird. Jeder Ausnahmedatenwert gibt an, ob der entsprechende Befehl eine Ausnahme bewirkt. Wird eine Ausnahme angezeigt, die aufgrund der Ausführung eines Befehls außerhalb der Reihenfolge erzeugt wird, so wird ein Signal an einen Mikrobefehlsequenzer übergeben, und der Mikrobefehlsequenzer führt einen Mikrocode zur Handhabung der Ausnahmen aus, die in der Pipeline zur Ausführung von Befehlen außerhalb der Reihenfolge erfaßt wurden.

Die US-A-5,420,990 betrifft einen Mechanismus zum Durchsetzen der korrekten Reihenfolge der Befehlsausführung. Eine Schaltung ist vorgesehen, um die Wiedergewinnung von neugeordneten Lade/Speicher-Paaren, die dieselbe Speicheradresse haben, zu schaffen. Es wird ein System offenbart, bei dem die Ausführung von Befehlen außerhalb der Reihenfolge während der Übetsetzung des Sourcecodes des Programms bestimmt wird, nicht jedoch durch den Prozessor selbst, abhängig von dessen Ausführungsbetriebsmitteln.

Die Aufgabe der vorliegenden Erfindung besteht darin, die Leistung von Prozessoren, die Befehle außerhalb der Reihenfolge ausführen, zu verbessern, indem falsche Ergebnisse aufgrund einer unkorrekten Ausführung von Befehlen außerhalb der Reihenfolge in dem Prozessor behoben werden.

Diese Aufgabe wird durch eine Vorrichtung gemäß Anspruch 1, 6 oder 7, und durch ein Verfahren gemäß Anspruch 8, 9 oder 10 gelöst.

Die vorliegende Erfindung schafft eine Vorrichtung und ein Verfahren, das zur Behebung von falschen Ergebnissen verwendet werden kann, die durch eine Ausführung von Befehlen außerhalb der Reihenfolge in einem Prozessor erzeugt werden, wobei die erfindungsgemäße Vorrichtung und das Verfahren ferner zu Zeitgebungs- und Synchronisationszwecken verwendet werden können. Strukturmäßig gesehen betrifft das System, welches auch als Panikfallen-System (oder "Panic-Trap"-System) bezeichnet wird, die folgenden Elemente.

Eine Abrufvorrichtung IFETCH (IFETCH = Instruction Fetch Mechanism) ruft Befehle von einem Befehlscache (ICACHE; ICACHE = Instruction Cache) ab. Die IFETCH kann einem Befehl einen Anzeiger (Panikfallen-Anzeiger) zur Zeitgebung und/oder aus Synchronisationsgründen zuordnen. Der Anzeiger ist ein nicht-architekturelles Signal, das für die Software, die den Prozessor treibt, nicht sichtbar ist. Diese Anzeige wird schließlich eine Neuaufnahme des Abrufens und des Beginnens des Befehls, der den Anzeiger aufweist, bewirken, sobald der Befehl zurückgezogen ist.

Zwei Schlangen empfangen die Befehle von der IFETCH. Eine Befehlsschlange für eine arithmetisch-logische Einheit (AQUEUE; AQUEUE = Arithmetic Logic Unit Instruction Queue) empfängt Befehle, die zu der ALU geleitet werden, und dieselbe führt die Befehle außerhalb der Reihenfolge aus. Jeder Befehl wird in einem jeweiligen Befehlsregister in der AQUEUE plaziert. Eine Speicherungsbefehlsschlange (MQUEUE; MQUEUE = Memory Instruction Queue) empfängt Befehle, die zu einem Datencache (DCACHE) oder zu einem Hauptspeicher gerichtet sind, und führt die Befehle außerhalb der Reihenfolge aus. Die MQUEUE umfaßt Befehlsregister und entsprechende Adressenneuordnungspufferschlitze (ARBSLOTs; ARBSLOT = Address Reorder Buffer Slot) zum Empfangen von Speicherungsbefehlen bzw. Datenadressen, die den Ergebnissen einer Befehlsausführung entsprechen.

Eine Anzeigerlogik ist jedem ARBSLOT zum Erkennen einer architekturell unkorrekten Ausführung eines Speicherungsbefehls und zum Zuordnen eines Anzeigers dem Befehl nach der Ausführung zugeordnet. Ein Beispiel einer architekturell unkorrekten Ausführung eines Befehls ist das Szenario, bei dem ein ausgeführter Ladungsbefehl von einem nicht-ausgeführten Speicherungsbefehl abhängt. Die Anzeigerlogik weist eine Abhängigkeitslogik auf, die konfiguriert ist, um dieses Szenario zu bestimmen, und um den Anzeiger zu aktivieren, wenn ein solches erfaßt wird.

Die ARBSLOTs können ferner ein Cachekohärenzüberprüfungs- Gefahrenauflösungssystem aufweisen, das konfiguriert ist, um basierend auf einem Kohärenzüberprüfungssignal zu bestimmen, wann ein Befehl Daten betrifft, die übertragen werden sollten. Das Cachekohärenzüberprüfungs-Gefahrenauflösungssystem kann den Anzeiger einstellen.

Eine Systemschnittstellensteuerung, welche Zugriffe auf die Systemschnittstelle steuert, kann den Anzeiger basierend auf einem Empfang eines Synchronisationssignals oder einer externen Unterbrechung (oder "Interrupt") von einer entfernten Komponente aufrufen. In diesem Fall sendet die Systemschnittstellensteuerung einen Anzeiger zu einer Zurückziehvorrichtung, welche das Zurückziehen von Befehlen nach der Ausführung anleitet, und welche den Anzeiger einem Befehl zuordnet.

Der DCACHE liefert einen Anzeiger zu der Zurückzieheinrichtung, falls ein Paritätsfehler, der einem Cachezugriff gemäß einem Befehl zugeordnet ist, auftritt.

Nachdem ein Befehl entweder in der AQUEUE oder der MQUEUE ausgeführt worden ist, wird derselbe durch die Zurückziehvorrichtung zurückgezogen. Während des Zurückverfahrens und beim Erkennen des Anzeigers löscht ein Vektorgenerator, der der Zurückziehvorrichtung zugeordnet ist, Befehle von der AQUEUE und der MQUEUE und bewirkt, daß die IFETCH das Abrufen wieder beginnt, wobei mit dem Befehl begonnen wird, der unkorrekt ausgeführt wurde.

Die Erfindung kann ebenfalls derart betrachtet werden, als daß sie mehrere neuartige Verfahren schafft. Ein erstes Verfahren erlaubt die Behebung von falschen Ergebnissen, die durch eine Ausführung von Befehlen außerhalb der Reihenfolge in einem Prozessor während einer Ausführungsphase erzeugt worden sind. Das erste Verfahren kann allgemein folgendermaßen zusammengefaßt werden: Sammeln von Befehlen in einer Neuordnungsvorrichtung; Ausführen der Befehle außerhalb der Reihenfolge; Erkennen einer architekturell unkorrekten Ausführung eines Befehls; Aktivieren eines Anzeigers, der dem Befehl zugeordnet ist, wobei der aktivierte Anzeiger die unkorrekte Ausführung anzeigt; und wenn der Befehl nach der Ausführung zurückgezogen worden ist, Erkennen des aktivierten Anzeigers, Löschen der Neuordnungsvorrichtung und Neubeginnen des Abrufens, wobei mit dem ungültigen Befehl begonnen wird.

Ein zweites Verfahren erlaubt die Behebung von Befehlen, die falsche Ausführungsergebnisse in einem Prozessor während der Abrufphase erzeugen werden. Das zweite Verfahren kann allgemein folgendermaßen zusammengefaßt werden: Abrufen von Befehlen; Bestimmen, daß ein Befehl ungültig ist, während des Abrufens; Zuordnen eines Anzeigers dem ungültigen Befehl; Plazieren des ungültigen Befehls in einer Neuordnungsvorrichtung mit anderen Befehlen; Ausführen der Befehle in der Neuordnungsvorrichtung außerhalb der Reihenfolge; und wenn der Befehl nach der Ausführung zurückgezogen wird, Erkennen des Anzeigers, Löschen der Neuordnungsvorrichtung und Neubeginnen des Abrufens, wobei mit dem ungültigen Befehl begonnen wird.

Ein drittes Verfahren erlaubt die Behebung von Paritätsfehlern, die von einem Datencache erfaßt werden, der einem Prozessor zugeordnet ist, der Befehle außerhalb der Reihenfolge ausführt. Das dritte Verfahren kann allgemein folgendermaßen zusammengefaßt werden: Sammeln von Befehlen in einer Neuordnungsvorrichtung; Ausführen der Befehle außerhalb der Reihenfolge; Ausführen eines Befehls, der einen Zugriff auf den Datencache betrifft; Bestimmen, daß ein Paritätsfehler während des Zugriffs aufgetreten ist; Erzeugen und Senden eines Anzeigers von dem Datencache zu einem Fallenvektorgenerator in den Prozessor; Löschen der Neuordnungsvorrichtung und Neubeginnen der Ausführung von Befehlen, wobei mit dem Befehl begonnen wird, der den Paritätsfehler bewirkt hat.

Zusätzlich zum Erreichen der vorher dargelegten Ziele weist die Erfindung weitere Vorteile auf, von denen nachfolgend lediglich beispielhaft einige kurz besprochen werden.

Ein Vorteil besteht darin, daß die IFETCH das System zu Zeitgebungs- und Synchronisations-Zwecken verwenden kann.

Ein weiterer Vorteil besteht darin, daß der Cache das System zum Beheben von oder zum Anzeigen von Paritätsfehlern, die sich auf Cache-Zugriffe beziehen, verwenden kann.

Ein weiterer Vorteil besteht darin, daß die Systemschnittstellensteuerung das System zu Zeitgebungs- und Synchronisations-Zwecken verwenden kann.

Ein weiterer Vorteil besteht darin, daß das System im Entwurf einfach, im Betrieb zuverlässig und für eine preisgünstige Massenproduktion zum Realisieren von preisgünstigen Prozessoren und Computern geeignet ist.

Bevorzugte Ausführungsbeispiele der vorliegenden Erfindung werden nachfolgend bezugnehmend auf die beiliegenden Zeichnungen erläutert, in denen gleiche Bezugszeichen in mehreren Figuren gleiche Teile bezeichnen. Es zeigen:

Fig. 1 ein Blockdiagramm, das einen Computer zeigt, der die neuartige Vorrichtung und das Verfahren der vorliegenden Erfindung implementiert;

Fig. 2 ein Blockdiagramm, das eine mögliche Implementation eines Befehls-Abrufen/Ausführungs-Systems in einem Prozessor von Fig. 1 zeigt;

Fig. 3 ein Blockdiagramm, das eine mögliche Implementation der neuartigen Vorrichtung aus Fig. 1 zeigt;

Fig. 4 ein Blockdiagramm, das eine mögliche Implementation einer Anzeiger-Logik zeigt, die einen Anzeiger in jedem Adressenneuordnungspufferschlitz (ARBSLOT) von Fig. 3 aufweist;

Fig. 5 ein Blockdiagramm, das eine mögliche Implementation einer Zurückziehvorrichtung (RETIRE) von Fig. 3 zeigt;

Fig. 6 ein Blockdiagramm, das eine mögliche Implementation eines Cachekohärenzüberprüfungs-Systems (CCC-Systems; CCC = Cache Coherency Check) zum Erzeugen eines Gefahrensignals CCC_HAZARD (Hazard = Gefahr) (und schließlich einer Panikfalle) von Fig. 4 zeigt;

Fig. 7 ein Blockdiagramm, das eine mögliche Implementation eines Speichern-zu-Laden-(ST/LD-; ST/LD = Store- To-Load)Gefahrenauflösungssystem zum Erzeugen eines Gefahrensignals ST/LD_HAZARD (und schließlich einer Panikfalle) von Fig. 4 zeigt; und

Fig. 8 ein Blockdiagramm, das eine mögliche Implementation einer Größenübereinstimmungsbestimmungsvorrichtung zum Erzeugen eines Signals SIZE_MATCH (SIZE_MATCH = Größen-Übereinstimmung) von Fig. 7 zeigt.

Wie es in Fig. 1 gezeigt ist, sind das System (Panikfallen- System) 100 (siehe Fig. 3-5 bezüglich weiterer Details) und das zugeordnete Verfahren der vorliegenden Erfindung in einem Computer 11 und insbesondere in einem Befehls-Abruf/Ausführungs-System 12 innerhalb eines Prozessors 14 des Computers 11 implementiert. Der Computer 11 umfaßt allgemein den Prozessor 14, einen Hauptspeicher 16 mit einer Software (S/W) 18 zum Treiben des Prozessors 14, einen Datencache 24 (DCACHE), der mit dem Prozessor 14 verbunden ist, wie es durch einen Bezugspfeil 23 gezeigt ist, und eine Systemschnittstelle 22, wie z. B. einen oder mehrere Busse, die den Prozessor 14 und den Hauptspeicher 16 miteinander verbinden. Im Betrieb, wenn das Befehls-Abruf/Ausführungs-System 12 in dem Prozessor 14 die Software 18 ausführt, werden Daten, die gegenwärtig von dem Prozessor 14 verwendet werden, in den DCACHE 24 bewegt, wodurch die Durchschnittszugriffszeit für die Speicheranforderungen des Prozessors reduziert werden, und wodurch der Verkehr auf der Systemschnittstelle 22 minimiert wird. Schließlich sollte erwähnt werden, daß mit Ausnahme des neuartigen Panikfallen-Systems 100 alle vorher erwähnten Computerkomponenten und ihre Interaktionen in der Technik bekannt sind.

Eine typische Cachezeile (oder "Cache-Line") in dem DCACHE 24 umfaßt eine Etikette (oder "Tag"), einen Zustandsanzeiger und Daten. Ein Cacheindex wird zu dem Cache 24 gesendet und von dem DCACHE 24 verwendet, um eine Speicherposition (Speicherpositionen) auszuwählen, die die gewünschte Datenzeile enthalten kann (können). Als Reaktion auf den Empfang eines Cacheindex gibt der DCACHE 24 eine Etikette, welche bei dem bevorzugten Ausführungsbeispiel eine reelle Seitennummer (RPN; RPN = Real Page Number) ist, welche der Position (den Positionen) entspricht, einen Zustandsanzeiger, welcher anzeigt, ob die Datenzeile, die der Etikette entspricht, gültig oder ungültig ist, und Daten aus, welche gültig oder ungültig sein können. Typischerweise zeigt der Zustandsanzeiger folgende Zustände an: "ungültig", was bedeutet, daß keine Daten vorhanden sind; "gültig-gemeinsam", was bedeutet, daß Daten vorhanden sind, daß sie jedoch anderswo positioniert sein können; "gültig-privat-sauber", was bedeutet, daß die Zeile die einzige Kopie aufweist, und daß der DCACHE 24 noch nicht auf die Leitung geschrieben hat; und "gültig-privat-schmutzig", was bedeutet, daß die Zeile die einzige Kopie aufweist, und daß der DCACHE 24 auf die Zeile geschrieben hat (und somit die Zeile in den Hauptspeicher 16 kopieren muß).

Eine Etikettenvergleichsvorrichtung 228 (Fig. 6), die dem DCACHE 24 zugeordnet ist, empfängt den Zustandsanzeiger und die Etikette. Wenn der Zustandsanzeiger ungültige Daten anzeigt, dann sendet die Etikettenvergleichsvorrichtung 228 eine "Fehlschlag"-Anzeige (oder "Miss"-Anzeige) zu dem Prozessor 14, wobei der Prozessor 14 in diesem Fall auf den Hauptspeicher 16 bezüglich der Datenleitung zugreift. Wenn der Zustandsanzeiger gültige Daten anzeigt, dann vergleicht die Etikettenvergleichseinrichtung 228 die Etikette mit dem Rest der Adresse, um zu bestimmen, ob der DCACHE 24 gegenwärtig die gewünschte Datenzeile speichert. Wenn der DCACHE 24 die Datenzeile, die angefordert wird, nicht hat, wie es durch den Etikettenvergleich bestimmt wird, dann sendet die Etikettenvergleichsvorrichtung 228 eine "Fehlschlag"-Anzeige zu dem Prozessor 14, wobei der Prozessor 14 in diesem Fall auf den Hauptspeicher 16 nach der Datenzeile zugreift. Wenn der DCACHE 24 die Datenzeile, die angefordert wird, aufweist, wie es durch den Etikettenvergleich bestimmt wird, dann sendet die Etikettenvergleichsvorrichtung 228 eine "Treffer"-Anzeige (oder "Hit"-Anzeige) zu dem Prozessor 14, welche den Prozessor 14 dazu bewegt, die angeforderte Datenzeile zu lesen.

Eine mögliche Implementation des Befehls-Abruf/Ausführungs- Systems 12 ist mittels eines Blockdiagramms in Fig. 2 dargestellt. Wie es in Fig. 2 gezeigt ist, weist das Befehls-Abruf/Ausführungs-System 12 einen Befehlscache (ICACHE; ICACHE = Instruction Cache) 26 zum Speichern von Befehlen von der Software 18 (Fig. 1) auf. Eine Befehlsabrufvorrichtung (IFETCH; IFETCH = Instruction Fetch) 28, kommuniziert mit dem Befehlscache 26 und gewinnt Befehle von dem Cache 26 zu einer schließlichen Ausführung zurück. Bei dem bevorzugten Ausführungsbeispiel ruft die Befehlsabrufvorrichtung (IFETCH) 28 vier Befehle (jeder weist 32 Bit auf) zu einem Zeitpunkt ab und überträgt die Befehle zu einer Sortiervorrichtung 32.

Von der IFETCH 28 werden die Befehle zu einer geeigneten Neuordnungsvorrichtung, wie z. B. zu einer Schlange (zu Schlangen) oder einer Reservationstation, gesendet. Bei dem bevorzugten Ausführungsbeispiel werden die Befehle sortiert und zu einer arithmetisch-logischen Einheit (ALU) und zu einer Speicherschlange (MQUEUE) verteilt.

Insbesondere empfängt eine Speichervorrichtung (SORT) 32 die Befehle von der IFETCH 28 und bestimmt, ob jeder Befehl für eine arithmetisch-logische Einheit (ALU) oder den Speicher bestimmt ist. Die Sortiervorrichtung 32 verteilt die Befehle demgemäß in eine AQUEUE 38a bzw. in eine MQUEUE 38b, wie es durch entsprechende Bezugspfeile 36a, 36b gezeigt ist.

Die AQUEUE 38a enthält ALU-Befehlsverarbeitungsvorrichtungen 39a (bei dem bevorzugten Ausführungsbeispiel existieren 28 Stück), die Register 41a zum Speichern jeweiliger Befehle aufweisen, die zu einer arithmetisch-logischen Einheit 42 gerichtet werden, wie es durch einen Bezugspfeil 43 gezeigt ist. Die Befehle in der AQUEUE 38a werden in irgendeiner möglichen Reihenfolge (vorzugsweise wie der Datenfluß) ausgeführt. Sobald ein Befehl vollendet ist, werden die Ergebnisse von den AQUEUE-Neubenennungsregistern 44a erfaßt, wobei der Befehl als vollendet in der AQUEUE 38a markiert wird. Bei dem bevorzugten Ausführungsbeispiel empfängt die AQUEUE 38a bis zu vier Befehle (von denen jeder 32 Bit aufweist) pro Zyklus von der Sortiervorrichtung 32 und überträgt bis zu zwei Befehle (32 Bit) pro Zyklus zu einer Zurückziehvorrichtung (RETIRE) 52, wie es durch einen Bezugspfeil 51a gezeigt ist.

Die ALU 42 kann unter der Steuerung der AQUEUE 38a Operanden von Neubenennungsregistern 44a, 44b und von allgemeinen Registern 46 wiedergewinnen, wie es durch eine Schnittstelle 45 gezeigt ist. Nachdem die ALU 42 auf die Operanden gewirkt hat, werden die Ergebnisse der Operation in den AQUEUE-Neubenennungsregistern 44a gespeichert, wie es durch einen Bezugspfeil 49 skizziert ist.

Die MQUEUE 38b enthält Befehlsverarbeitungsvorrichtungen 39b. Jede Befehlsverarbeitungsvorrichtung 39b umfaßt ein Register 41b zum Speichern eines jeweiligen Speicherungsbefehls und einen Adressenneuordnungspufferschlitz (ARBSLOT) zum Speichern einer jeweiligen Adresse, wobei bei dem bevorzugten Ausführungsbeispiel 28 Stück vorhanden sind, welche durch ein Bezugszeichen 48 gekennzeichnet sind. Speicherungsbefehle in der MQUEUE 38b können als "Ladungen" von und "Speicherungen" zu dem Speicher klassifiziert sein. Eine "Ladung" ist eine Anforderung, um Daten von einem Speicher (dem Cache oder dem Hauptspeicher) zu einem Register zu übertragen, wohingegen eine "Speicherung" eine Anforderung ist, um Daten von einem Register zu einem Speicher zu übertragen.

Während der Ausführung eines Befehls betrifft eine erste Phase das Ausführen einer vorgeschriebenen mathematischen Operation auf Operanden, um eine Adresse zu berechnen, während eine zweite Phase das Zugreifen des Speichers/Caches nach Daten basierend auf der berechneten Adresse betrifft. Die MQUEUE 38b führt jeden der Befehle aus, und insbesondere die zwei Phasen der Ausführung, und ebenfalls die Speicher/Cache-Zugriffe in irgendeiner möglichen Reihenfolge (vorzugsweise wie der Datenfluß). Sobald die Befehle vollendet sind, werden die Ergebnisse von den MQUEUE-Neubenennungsregistern 44b erfaßt, wonach der Befehl in der MQUEUE 38b als vollendet markiert wird. Bei dem bevorzugten Ausführungsbeispiel empfängt die MQUEUE 38b bis zu vier Befehle (jeder 32 Bit) pro Zyklus von der Sortiervorrichtung 32 und überträgt bis zu zwei Befehle (32 Bit) pro Zyklus zu der Zurückziehvorrichtung 52, wie es durch einen Bezugspfeil 51b gezeigt ist.

Insbesondere wird während der ersten Phase einer Befehlsausführung eine Adresse von einer Adressenberechnungseinrichtung 58 erzeugt. Die Adressenberechnungseinrichtung 58 berechnet basierend auf den Operanden, die von den MQUEUE- Neubenennungsregistern 44b wiedergewonnen werden, die Adresse und leitet die Adresse (eine reelle oder eine virtuelle Adresse) zu einem ARBSLOT 48, der dem Befehl in der MQUEUE 38b entspricht, wie es durch einen Bezugspfeil 62 gezeigt ist. Die Steuerung der Berechnung durch den Befehl ist durch den Bezugspfeil 64 in Fig. 2 gezeigt. Wenn die zweite Phase der Speicherungsbefehlsausführung weiter verfolgt wird, wird die berechnete Adresse (einschließlich eines Cacheindex) zu dem DCACHE 24 übertragen, wie es durch den Bezugspfeil 54 gezeigt ist, um eine Ladung von oder eine Speicherung zu dem DCACHE 24 zu erreichen. Bei dem bevorzugten Ausführungsbeispiel werden zwei Adressen pro Zyklus übertragen, falls es möglich ist, und zwar von der MQUEUE 38b zu dem DCACHE 24. Um dieses mehrfache Adreßmerkmal zu erreichen, kann der DCACHE 24 beispielsweise mit zwei Toren implementiert sein. Alternativ werden gemäß einem anderen Beispiel, wie es auch bei dem bevorzugten Ausführungsbeispiel implementiert ist, ungerade und gerade Adressen gleichzeitig zu jeweiligen ungeraden und geraden Cachebänken in einem Einzeltor-Direktzugriffsspeicher (RAM; RAM = Random Access Memory) gesendet. Die Details des letzteren Entwurfs sind in einer ebenfalls anhängigen Anmeldung mit dem Titel "Adressenaggregations-System und -Verfahren zum Erhöhen des Adressendurchsatzes von einem Prozessor zu einem Datencache) dargelegt, welche am gleichen Tag wie die vorliegende Anmeldung von den gleichen Erfindern eingereicht worden ist. Sobald der DCACHE 24 die Adresse verarbeitet, werden die Datenergebnisse zu den MQUEUE-Neubenennungsregistern 44b übertragen, wie es durch einen Bezugspfeil 56 gezeigt ist.

Die Zurückziehvorrichtung 52 empfängt ausgeführte Befehle (vorzugsweise zwei 32-Bit-Worte pro Zyklus) von jeder Schlange 38a, 38b. Die Zurückziehvorrichtung 52 übergibt die Befehlsergebnisse in den Architekturzustand. Die Software 18 (Fig. 1) wird nicht über irgendwelche Ergebnisse unterrichtet, die nicht bereits von der Zurückziehvorrichtung 52 in den Architekturzustand transformierrt worden sind. Die Zurückziehvorrichtung 52 zieht die Befehle in den Schlangen 38a, 38b in der Programmreihenfolge zurück, die durch die Software 18 definiert ist, indem die Befehlsergebnisse zu einem allgemeinen Register 46 und/oder einem Steuerregister 72 bewegt werden, wie es durch jeweilige Bezugspfeile 73, 74 gezeigt ist, und zwar abhängig von den Attributen eines Befehls, wobei dieselbe bewirkt, daß die Ergebnisse des Befehls von den Neubenennungsregistern 44a, 44b zu den allgemeinen Registern 46 bewegt werden, wie es durch die Bezugspfeile 76a, 76b gezeigt ist.

Wenn die Zurückziehvorrichtung 52 einen Befehl zurückzieht, der in einer Speicherung auf eine Datenzeile in dem Cache 24 resultierte, markiert die Zurückziehvorrichtung 52 den Zustandsanzeiger, der der Zeile entspricht, als "schmutzig", um anzuzeigen, daß sich die Zeile verändert hat, und, daß sie schließlich zu dem Hauptspeicher 16 zum Aktualisieren der Zeile in dem Hauptspeicher 16 gesendet werden sollte.

Die Zurückziehvorrichtung 52 weist ferner eine Logik zum Bestimmen auf, ob eine Ausnahme vorhanden ist, die einem Befehl zugeordnet ist. Eine Ausnahme ist eine Flag, dIe einen speziellen Umstand anzeigt, der einem oder mehrerer vorheriger Befehle entspricht. Im Falle einer Ausnahme verdeckt die Zurückziehvorrichtung 42 alle Befehle in den Schlangen 38a, 38b, die dem Befehl vorausgehen, der die Ausnahme anzeigte, und dieselbe bewirkt, daß die Befehls-Abrufvorrichtung 28 die zur Debatte stehenden Befehle noch einmal für eine Neuausführung wiedergewinnt oder eine spezielle Software wiedergewinnt, um den speziellen Umstand handzuhaben.

Panikfallen-Svstem und -Verfahren

Das Panikfallen-System 100 und das zugeordnete Verfahren werden nachfolgend bezugnehmend auf die Fig. 3-5 beschrieben. Allgemein erlauben das Panikfallen-System 100 und das zugeordnete Verfahren eine Behebung von einer ungenauen Ausführung von Befehlen außerhalb der Reihenfolge durch Erkennen des Fehlers und durch Beginnen einer Neuausführung des Befehls, der den Fehler zur Folge hatte, wodurch das korrekte Ergebnis während des zweiten Ausführungsversuchs erreicht wird. Dieses Ziel wird durch Verwenden des Konzepts einer Panikfalle erreicht, welche ein nicht-architekturelles Hardwaresignal ist, welches für die Software 18 (Fig. 1) nicht sichtbar ist.

Die Panikfalle kann durch folgende Elemente erzeugt werden: (a) die IFETCH 28 im Falle einer Zeitgebungs- oder Synchronisationsforderung bezüglich eines Befehls; (b) einen ARB- SLOT 78 in einer Speicherungsbefehlverarbeitungsvorrichtung 39b in der MQUEUE 38b im Falle einer ungenauen Ausführung außerhalb der Reihenfolge eines Speicherungsbefehls; (c) den DCACHE 24 im Falle eines erfaßten Paritätsfehlers bezüglich eines Zugriffs gemäß einem Speicherungsbefehl; und/oder (d) eine Systemschnittstellensteuerung 22, welche Zugriffe zu/von der Systemschnittstelle 22 steuert, im Falle eines Synchronisationsbefehls (z. B. in einem Mehrprozessor-(MP-) System), einer externen Unterbrechung (oder "Interrupt"), usw..

Insbesondere kann die IFETCH 28 eine Panikfalle aus Zeitgebungs- oder Synchronisationszwecken einleiten wollen. Als Beispiel kann der IFETCH 28 Wartezyklen durch Einstellen einer Panikfalle in Verbindung mit einem Befehl einfügen. Bei dem bevorzugten Ausführungsbeispiel ist ein Panikfallen-Anzeiger 102 (eines oder mehrere Bits) jedem Befehl 104 zugeordnet, der zu einer Befehlsverarbeitungsvorrichtung 39a, 39b weitergeleitet wird. Die IFETCH 28 kann den Panikfallenanzeiger 102, der einem Befehl 104 zugeordnet ist, der ein potentiell unkorrektes Verhalten entstehen läßt, aktivieren. Der Panikfallenanzeiger 102 zeigt basierend auf seiner Aktivierung und Deaktivierung an, ob der spezielle Befehl 104 eine Panikfalle einleiten sollte oder nicht, wenn derselbe schließlich von der Zurückziehvorrichtung 52 zurückgezogen wird. Es sollte angemerkt werden, daß statt des Implementierens eines oder mehrerer Bits als der Panikfallenanzeiger 102 ein Panikfallen-Ladungsbefehl in der AQUEUE 38a durch die IFETCH 28 plaziert werden kann, um die Panikfalle bei der Zurückziehvorrichtung 52 einzuleiten.

Bezüglich der Erzeugung der Panikfalle durch einen ARBSLOT 48 selbst kann der Panikfallenanzeiger 102, der einem Speicherungsbefehl 104 zugeordnet ist, durch den entsprechenden ARBSLOT 48 aktiviert werden, wenn eine Ausführung des Befehls ungenaue Ergebnisse aufkommen läßt. Der Panikfallenanzeiger 102 zeigt basierend auf seiner Aktivierung oder Deaktivierung an, ob der spezielle Befehl 104 eine Panikfalle einleiten sollte oder nicht, wenn derselbe schließlich von der Zurückziehvorrichtung 52 zurückgezogen wird. Ein Beispiel davon, wann der Panikanzeiger 102 durch einen ARBSLOT 48 in Verbindung mit einem Befehl 104 aktiviert wird, ist die Situation, in der der Befehl 104 ein Ladungsbefehl war, der von einem Speicherungsbefehl abhängig war, wobei der Speicherungsbefehl nicht vor dem Ladungsbefehl ausgeführt worden ist. In diesem Fall resultiert der Ladungsbefehl in dem Erzeugen von ungültigen Daten, die nicht beachtet werden sollten.

Der DCACHE 24 kann ebenfalls einen Panikfallenanzeiger 102 zu der Zurückziehvorrichtung 52 liefern, wie es durch einen Bezugspfeil 106 dargestellt ist. In dieser Hinsicht umfaßt der DCACHE 24 eine Paritätsüberprüfungslogik zum Sicherstellen, daß Speicherungen zu oder Ladungen von dem DCACHE 24 korrekt sind. Insbesondere überprüft der DCACHE 24 während einer Ladung die Etiketten und Daten bezüglich Paritätsfehlern, während derselbe bei einer Speicherung Etiketten nach Paritätsfehlern überprüft. Wenn ein Paritätsfehler erfaßt ist, aktiviert der DCACHE 24 den Panikfallenanzeiger zu der Zurückziehvorrichtung 52. In manchen Fällen kann eine Behebung von dem Paritätsfehler möglich sein, während in anderen Fällen (z. B. schmutzige Daten, Etikettenfehler, usw.) keine Behebung möglich sein kann. In dem Fall, in dem eine Behebung möglich sein kann, bewirkt die Zurückziehvorrichtung 52 eine Neuausführung des Befehls, der den Paritätsfehler entdeckte, und bewirkt, daß eine neue Datenzeile von dem Hauptspeicher 16 wiedergewonnen wird. In dem Falle, in dem eine Behebung nicht möglich ist, teilt die Zurückziehvorrichtung 52 vektormäßig den Fallencode mit, wodurch schließlich der Betrieb des Computers 11 gestoppt wird.

Eine Systemschnittstellensteuerung 108, die dem Prozessor 14 zugeordnet ist, kann ebenfalls einen Panikfallenanzeiger zu der Zurückziehvorrichtung 52 liefern, wie es durch einen Bezugspfeil 112 gezeigt ist. Die Systemschnittstellensteuerung 108 steuert Zugriffe auf und von der Systemschnittstelle 22. Als Beispiel kann bei einem Mehrprozessor-(MP-)System die Systemschnittstellensteuerung 118 Synchronisationsbefehle von der Systemschnittstelle 22 empfangen, um sicherzustellen, daß der Prozessor 14 in Synchronisation mit anderen Prozessoren des MP-Systems ist. Wenn ein Synchronisationsbefehl von der Systemschnittstellensteuerung 108 empfangen wird, aktiviert die Systemschnittstellensteuerung 108 den Panikfallen-Azeiger zu der Zurückziehvorrichtung 52. Der Befehl, der auftritt, um diese Panikfalle zu erhalten, wird neu angefordert, nachdem die Schlangen 38a, 38b geräumt worden sind, wonach die Programmausführung als Ergebnis der Räumungs- und Neustart-Operation synchronisiert fortfährt.

Wenn die Zurückziehvorrichtung 52 Befehle 104 zurückzieht, die einen Panikfallenanzeiger 102 aktiviert haben, oder wenn die Zurückziehvorrichtung 52 einen aktivierten Panikfallenanzeiger 106, 112, von dem DCACHE 24 oder von der Systemschnittstellensteuerung 108 empfängt, dann übermittelt die Zurückziehvorrichtung 52 einem Fallenvektorgenerator 114 eine Fallenanzeige, wie es durch den Bezugspfeil 116 gezeigt ist. Die Zurückziehvorrichtung 52 zeigt dem Fallenvektorgenerator 114 an, daß eine Panikfalle aktiviert worden ist, und leitet die Befehlsadresse, die der Panikfalle entspricht, weiter. Wiederum löscht der Fallenvektorgenerator 114 den Inhalt der AQUEUE 38a und der MQUEUE 38b, wie es durch Bezugspfeile 118, 118a, 118b gezeigt ist. Darüber hinaus sendet der Fallenvektorgenerator 114 die Befehlsadresse zu der IFETCH 28, wie es durch einen Bezugspfeil 121 gezeigt ist. Die IFETCH 28 beginnt mit dem Wiedergewinnen von Befehlsadressen von dem ICACHE 26, wie es durch einen Bezugspfeil 27 bezeichnet ist, wobei mit der neuen Befehlsadresse begonnen wird, und dieselbe plaziert die Adressen in der AQUEUE 38a und der MQUEUE 38b für eine Ausführung außerhalb der Reihenfolge. Demgemäß beginnt eine Ausführung von Befehlen wieder, wobei mit der Befehlsadresse des Befehls begonnen wird, der die Panikfalle auslöste.

Die Zurückziehvorrichtung 52 kann ebenfalls architekturelle Fallen (nicht nicht-architekturelle Panikfallen) empfangen. Als Beispiel kann die Systemschnittstellensteuerung 108 eine externe Unterbrechung von der Systemschnittstelle 22 empfangen. In diesem Fall aktiviert die Systemschnittstellensteuerung 108 ein Fallensignal zu der Zurückziehvorrichtung 52 zusammen mit der Befehlsadresse, die dem Code entspricht, um die externe Unterbrechung handzuhaben. Darüber hinaus zeigt die Zurückziehvorrichtung 52 dem Fallenvektorgenerator 114 an, daß eine Falle aktiviert worden ist, und leitet die Befehlsadresse, die der Falle entspricht, weiter. Der Fallenvektorgenerator 114 antwortet wiederum, wie es vorher erörtert wurde.

Eine mögliche Implementation einer Fallenanzeigerlogik in jedem ARBSLOT 48 zum Erzeugen von nicht-architekturellen Panikfallen und von herkömmlichen architekturellen Fallen ist detailliert in Fig. 4 gezeigt und allgemein durch ein Bezugszeichen 122 bezeichnet. Bezugnehmend auf Fig. 4 empfängt die Fallenanzeigerlogik 122 Eingaben, die in der Lage sind, die Aktivierung eines Panikfallensignals 121 von einem Panikfallenanzeiger (P) 102 sowie ein architekturelles Fallensignal 122 von einem architekturellen Fallenanzeiger (T) 122 zu bewirken. Bei dem bevorzugten Ausführungsbeispiel sind die Fallenanzeiger 102, 122 Latch-Speicher oder andere geeignete logische Speichergeräte.

In dieser Hinsicht empfängt die Fallenanzeigerlogik 122 beispielsweise, jedoch nicht als Einschränkung, ein Speicherung-zu-Ladung-Gefahrensignal (ST/LD_HAZARD; ST/LD_HAZARD = Store-To-Load-Hazard-Signal; siehe Fig. 7) 124 und ein Cache-Kohärenzüberprüfungs-(CCC-; CCC = Cache Coherency Check)Gefahrensignal (CCC_HAZARD; siehe Fig. 6) 125. Die Gefahrensignale 124, 125 werden einem ODER-Logikgatter 128 mitgeteilt, welches ein Signal 132 erzeugt, das zu einem UND-Logikgatter 135 geleitet wird, um anzuzeigen, ob eine Panikfalle aktiviert werden sollte. Das UND-Logikgatter 135 empfängt ebenfalls ein Signal ~UPDATE (UPDATE = Aktualisieren) 124 von einem Inverter 133, der das Signal-UPDATE 131 empfängt. Das Signal UPDATE 134 wird aktiviert, wenn der Befehl, der der Fallenanzeigerlogik 122 entspricht, seine Datenadresse in dem entsprechenden ARBSLOT 48 aktiviert. Die Aktivierung des Signals UPDATE 124 deaktiviert oder löscht das Signal P 121. Die Aktivierung des Signals UPDATE 134 wird das Fallensignal T 123 löschen, wenn das Signal TLB_TRAP 141 deaktiviert ist, und dieselbe wird das Fallensignal 123 setzen, wenn das Signal TLB_TRAP 141 durch einen Transistor 145 abgewertet ist. Ferner wird das Signal ~UPDATE 134, welches in das UND-Logikgatter 135 eingespeist wird, nach dem Löschverfahren aktiviert, derart, daß die Gefahrensignale 124, 125, falls welche vorhanden sind, zu einem bestimmten Zeitpunkt während der Lebensdauer eines Befehles erfaßt werden, und eine Aktivierung des Signals 136 von dem UND-Logikgatter 135 bewirken.

Das Signal 136 von dem UND-Logikgatter 135 betätigt die Transistoren 137, 138. Der Transistor 137 kann schließlich eine Panikfalle erzeugen, während der Transistor 138 schließlich eine architekturelle Falle erzeugen kann. Bezüglich der Panikfallen kann der Transistor 137 eine Aktivierung des Panikfallen-Signals 121 bewirken, wenn das Signal UPDATE 123 nicht aktiviert ist. Bezüglich architektureller Fallen kann der Transistor 138 eine Aktivierung des architekturellen Fallen-Signals 123 bewirken, wenn sowohl das Signal UPDATE 123 nicht aktiviert ist, als auch ein Signal TLB_TRAP 141 von einem Übersetzungs-Querzuordnungspuffer (TLB; TLB = Translation Lookaside Buffer) 214 (Fig. 6) aktiviert ist. Bei dem bevorzugten Ausführungsbeispiel wird eine Aktivierung eines nicht-architekturellen Panikfallen-Signals 121 ebenfalls eine Aktivierung eines architekturellen Fallen-Signals 123 bewirken, jedoch nicht umgekehrt.

Wenn der Befehl, der dem ARBSLOT 48 zugeordnet ist, durch die Zurückziehvorrichtung 52 (Fig. 3) zurückgezogen wird, treiben Treiber 142, 144, gemäß ihrer Steuerung durch das Zurückziehsignal RET [i] (RET = Retire = Zurückziehen) 143, wobei i dem speziellen ARBSLOT 48 entspricht, der die Fallenanzeigerlogik 122 aufweist, das Panikfallensignal 121 bzw. das architekturelle Fallensignal 123 zu der Zurückziehvorrichtung 52, wie es durch Bezugspfeile 146, 148 gezeigt ist.

Bei dem bevorzugten Ausführungsbeispiel werden 28 Zurückziehzeiger RET [27 : 0] für sowohl die AQUEUE 38a als auch die MQUEUE 38b erzeugt. Dieser Zurückziehzeiger RET 27 : 0 zeigen an, wo die nächsten beiden Befehle in jeder Schlange 38a, 38b zurückzuziehen sind. Zu jedem gegebenen Zeitpunkt in jeder Schlange 38a, 38b sind zwei der vorhergehenden Zurückziehzeiger zu zwei jeweiligen aufeinanderfolgenden Befehlsverarbeitungsvorrichtungen 39a, 39b aktiviert, wodurch die zwei Befehlsverarbeitungsvorrichtungen 39a, 39b angezeigt werden, die die ältesten Befehle enthalten, die noch nicht zurückgezogen worden sind. Wenn ein Befehl zurückgezogen ist, wird sein entsprechender Zeiger deaktiviert und der nächstälteste aktiviert. Als Beispiel einer Implementation können die Zurückziehzeiger RET [27 : 0] aus einer kreisförmigen Verschiebungskette mit 28 Master/Slave-Latchspeichern erzeugt werden.

Eine mögliche Implementation einer Logik, die der Zurückziehvorrichtung 52 zugeordnet ist, um die vorliegende Erfindung auszuführen, ist detailliert in Fig. 5 gezeigt. Es wird in Erinnerung gerufen, daß die Zurückziehvorrichtung 52 konfiguriert ist, um Befehle und zugeordnete Daten in der AQUEUE 38a und der MQUEUE 38b zurückzuziehen, und um die Ergebnisse in den Architekturzustand zu übergeben. Bezugnehmend auf Fig. 5 umfaßt die Zurückziehvorrichtung 52 eine Zweistufen-Serienanordnung mit einer ersten Stufe 52a und einer zweiten Stufe 52b.

in der ersten Stufe 52a werden Befehlsdaten von der AQUEUE 38a und der MQUEUE 38b getrennt durch jeweilige AQUEUE- und MQUEUE-Teile 52a', 52a" nach Anzeigen von architekturellen Fallen und nicht-architekturellen Panikfallen analysiert. Das Konzept von architekturellen Fallen ist in der Technik bekannt. Beispiele für architekturelle Fallen sind die (z. B. ein TLB-Fehlschlag, eine Zugriffsschreibeverletzung, eine Ausrichtungsverletzung, eine Verweisverletzung, usw.), welche durch den Übersetzungs-Querzuordnungspuffer (TLB) 214 (Fig. 6) in der Adressenberechnungseinrichtung 58 erzeugt werden (Fig. 2). Wenn irgendwelche Fallen (architekturelle oder Panik-) aktiviert sind, dann wird der zugeordnete Befehl angehalten, und die Fallenanzeige wird dem Fallenvektorgenerator 114 überbracht. Die erste Stufe 52a analysiert ferner die Befehle und die zugeordneten Daten, um die Befehle von der AQUEUE 38a und der MQUEUE 38b neu zu ordnen und neu zu kombinieren. Das Neukombinierungsverfahren tritt auf, sobald die erste Stufe 52a Informationen zu der zweiten Stufe 52b überträgt. Schließlich werden die Befehlsergebnisse in der Reihenfolge zu den allgemeinen Registern 46 (Fig. 2) und/oder den Steuerregistern 72 (Fig. 2) überbracht.

Insbesondere umfaßt, wie es in Fig. 5 gezeigt ist, die erste Stufe 52a vier Register 148, von denen aus Einfachheitsgründen nur zwei gezeigt sind, wobei die beiden insbesondere durch Bezugszeichen 148a, 148b bezeichnet sind. Die Register 148a empfangen Befehlsdaten von der AQUEUE 38a, wohingegen die Register 148b Befehlsdaten von der MQUEUE 38b empfangen.

Die Register 148a empfangen einen ALU-Operationscode (OPCODE) 154, eine Befehlsadresse (INSTR ADDR; INSTR ADDR = Instruction Address) 155, einen Fallentypanzeiger (T_TYPE; T_TYPE = Trap Type Indicator; eines oder mehrere Bits) 156, einen architekturellen Fallenanzeiger (T; eines oder mehrere Bits) 157 und den Panikfallenanzeiger (P; eines oder mehrere Bits) 102. Der T_TYPE 126 zeigt den Typ einer architekturellen Falle an. Die vorher erwähnten Informationen werden in den Registern 148 über jeweilige Eingänge 158, die mit jeweiligen Transistoren 159 verbunden sind, plaziert, welche durch ein Signal RET_INSERT 152 (RET_INSERT = Retire Insert = Zurückziehen_Einfügen) getaktet werden.

In dem MQUEUE-Teil der ersten Stufe 52a empfangen die Register 148b einen Speicheroperationscode (INSTR OPCODE) 164, eine Befehlsadresse (INSTR ADDR) 165, einen Fallentypanzeiger (T_TYPE; einen oder mehrere Bits) 166, den architekturellen Fallenanzeiger (T; eines oder mehrere Bits) 167, den Panikfallenanzeiger (P) 102 und eine Datenadresse (DATA ADDR) 162. Die vorhergehenden Informationen werden den Registern 148b über jeweilige Eingänge 168 und jeweilige Transistoren 169 übertragen, welche durch das Signal RET_INSERT 152 getaktet werden.

Ein ODER-Logikgatter 172 ist angeordnet, um das architekturelle Falleneingangssignal genauso wie die Panikfallenanzeiger 106, 112 von dem DCACHE 24 und der Systemschnittstellensteuerung 108 zu empfangen. Das Ergebnis dieses Gatters 172 zeigt an, ob dieses Zurückziehen des Befehls eingefangen werden muß oder nicht.

Ein ODER-Logikgatter 173 ist angeordnet, um die Panikfallen-Anzeiger von der MQUEUE 38b, von dem DCACHE 24 und von der Systemschnittstellensteuerung 108 zu empfangen, wie es in Fig. 5 weiter gezeigt ist. Das Ergebnis dieses Gatters 173 zeigt an, ob ein Panikfallenanzeiger 102 diesem Zurückziehen des Befehls zugeordnet ist oder nicht. Die Panikfallenanzeiger 102 von dem DCACHE 24 und der Systemschnittstellensteuerung 108 können irgendeinem Befehl zugeordnet sein, da sie durch ein externes System erzeugt werden. Das bevorzugte Ausführungsbeispiel weist die Falle dem nächsten MQUEUE-Befehl, der zurückzuziehen ist, zu. Wenn eine Auswahl zwischen einer architekturellen Falle, welche durch T_TYPE 166 angezeigt ist, und einer Panikfalle ist, dann wird auf die architekturelle Falle gewirkt, da dieselbe den beabsichtigten Vorteil der Panikfalle erreicht und zusätzlich für die Software 18 bedeutungsvoll ist.

Es sollte erwähnt werden, daß bei einem alternativen Ausführungsbeispiel die INSTR ADDRs 155, 156 durch Zeiger zu einer Direktzugriffstabelle ersetzt werden können, welche die tatsächlichen Befehlsadressen speichert. Dieses Ausführungsbeispiel würde Speicherplatz in der ersten Stufe 52a der Zurückziehvorrichtung 52 einsparen.

In der zweiten Stufe 52b betätigt ein Signal ADVANCE 174 (ADVANCE = Vorschieben) jeweilige Transistoren 176a bis 176d, um den Inhalt der Register 148a, 148b zu jeweiligen Registern 178a bis 178d zu übertragen. Wie vorher erwähnt wurde, sind die Befehle, wie sie in den Registern 178a bis 178d positioniert sind, in einer Programmreihenfolge. Wenn irgendwelche eingefangenen Befehle vorhanden sind, wird nur der erste eingefangene Befehl in den Registern 178a bis 178d erlaubt. Jeder der Befehle weist einen zugeordneten Satz von b4 Bits 182 auf, welche die Reihenfolge der Befehle anzeigen. Die b4 Bits 182 werden verwendet, um die Befehle zu ordnen, wenn sie von der Zurückziehvorrichtung 52 ausgegeben werden.

Die architekturellen Fallenanzeiger T 157, 167 werden zu einem ODER-Logikgatter 184 gebracht, wie es durch einen Bezugspfeil 158 gezeigt ist, um ein Fallensignal 187 zu erzeugen, welches anzeigt, ob irgendeine Falle (eine architekturelle oder eine Panik-Falle; es wird die Erörterung bezüglich Fig. 4 in Erinnerung gerufen, daß eine architekturelle Falle aktiviert wird, wenn eine Panikfalle aktiviert wird) erzeugt werden sollte. Das Fallensignal 187 wird zu dem Fallenvektorgenerator 114 geleitet.

Die Fallentypanzeiger 156, 166 und die Panikfallenanzeiger 102 werden kombiniert und einem Multiplexer (MUX) 192 überbracht, wie es durch einen Bezugspfeil 194 gezeigt ist, um ein Fallentypsignal 176 zu erzeugen. Wenn ein eingefangener Befehl in einer der Register 178a-178d sitzt, dann sitzt kein anderer gültiger eingefangener Befehl in irgendeinem der anderen Register 178a-178d. Wenn ferner das Register 178a-178d, das den eingefangenen Befehl aufweist, das Signal T_TYPE und P ausgibt, dann steuert dieses Register 178a-178d den MUX 192, um diese Bits zu dem Fallengenerator 114 zu leiten, wie es durch einen Bezugspfeil 196 gezeigt ist. Die Fallentypanzeiger 156, 166 sind für die Fallenanzeiger T 157, 167 darin relevant, daß sie den Typ einer architekturellen Falle identifizieren.

Die Signale INSTR ADDRs 155, 165 werden zu einem MUX 198 gebracht, wie es durch einen Bezugspfeil 199 gezeigt ist, um eine Befehlsadresse 201 für den Fallenvektorgenerator 114 zu erzeugen. Der MUX 198 wird genauso wie der MUX 192 gesteuert, derart, daß das Signal INSTR ADDR 201, das sich auf den eingefangenen Befehl bezieht, zu dem Fallenvektorgenerator 114 weitergeleitet wird.

Basierend auf dem Empfang eines aktivierten Fallensignals 187, eines Fallentypsignals 196, eines Panikfallenanzeigers 102 und einer Befehlsadresse 201 erzeugt der Fallenvektorgenerator 114 die neue Befehlsadresse 122 und leitet dieselbe zu der IFETCH 28 (Fig. 3) weiter. Wenn die Falle eine architekturelle Falle T ist, dann entspricht die neue Befehlsadresse 121 der Adresse einer Fallenhandhabungseinrichtung, beispielsweise, jedoch nicht einschränkend, einer TLB-Fehlschlaghandhabungseinrichtung, einer Handhabungseinrichtung für externe Unterbrechungen, usw.. Wenn die Falle eine nicht-architekturelle Panikfalle P von der IFETCH 28 oder von den Befehlsverarbeitungsvorrichtungen 39a, 39b ist, dann entspricht die neue Befehlsadresse 121 dem Panik-eingefangenen Befehl.

Cache-Kohärenzüberprüfungs-(CCC-)Gefahrenauflösungssystem

Das Erzeugen einer Cache-Kohärenzüberprüfungs-(CCC-)Gefahr 125 (Fig. 4) wird nachfolgend bezugnehmend auf Fig. 6 erörtert. Jeder ARBSLOT 48 umfaßt ein CCC-Gefahrenauflösungssystem 202, um zu bestimmen, ob ein Ladungsbefehl bereits CCC-Daten verwendet hat, welche aus dem DCACHE 24 übertragen werden sollten und für den Prozessor 14 nicht verfügbar gemacht werden sollten.

Während einer CACHE-Kohärenzüberprüfung wünscht eine andere Komponente, wie z. B. ein entfernter Prozessor oder ein entferntes Eingabe/Ausgabe-Gerät (I/O-Gerät; I/O = Input/Output), das mit der Systemschnittstelle 122 verbunden ist, eine exklusive Kopie einer Datenleitung zu haben. Demgemäß sendet die entfernte Komponente eine Anforderung zu dem DCACHE 24, zu bestimmen, ob der DCACHE 24 eine Kopie der Datenleitung besitzt. Wenn der DCACHE 24 die Datenleitung hat, dann wird die Eignerschaft der Datenleitung von dem DCACHE 24 zu der entfernten Komponente übertragen, die mit der Systemschnittstelle 22 verbunden ist.

In der MQUEUE 38b der vorliegenden Erfindung ist ein spezieller ARBSLOT 48 dafür vorgesehen, um eine Adresse (einschließlich des Cacheindex und der Etikette), die der CCC- Datenleitung entspricht, zu empfangen, und um auf den DCACHE 24 zuzugreifen, um zu bestimmen, ob die Datenleitung vorhanden ist. Die Antwort auf die CCC-Abfrage wird zu der Systemschnittstellensteuerung 108 gesendet (und schließlich zu der Systemschnittstelle 22). Die Antwort umfaßt die Datenleitung, wenn sie gefunden worden ist, sowie ihren Zustandsanzeiger.

Die Adresse der CCC-Datenleitung wird zu allen ARBSLOTs 48 in der MQUEUE 38b übertragen, um zu bestimmen, ob irgendein Befehl in irgendeinem der ARBSLOTs 48 die CCC-Datenleitung verwendet hat. Wenn ein Befehl bereits ausgeführt worden ist, der eine Ladung der CCC-Datenleitung betrifft, wird diesem Befehl über seinen entsprechenden Panikfallenanzeiger 102 (Fig. 4) eine Panikfalle zugeordnet.

Bezugnehmend auf Fig. 6 umfaßt das CCC-Gefahrenauflösungssystem 202 ein Register 204 mit einem Treffer-(HIT-; HIT = Treffer)Anzeiger 206, einem Cacheindex 207 und einer Etikette 208. Der Cacheindex 207 und die Etikette 208 werden von der Adressenberechnungseinrichtung 58 empfangen. Die Adressenberechnungseinrichtung 58 umfaßt einen Addierer 211 zum Empfangen und Wirken auf Operanden (Operanden) 212 von den Neubenennungsregistern 44a, 44b und/oder den allgemeinen Registern 46 (Fig. 2). Der Addierer 211 erzeugt eine virtuelle Adresse, welche zu dem ARBSLOT 48 und zu einem Übersetzungs-Querzuordnungspuffer (TLB) 214 geleitet wird, wie es durch einen Bezugspfeil 260 gezeigt ist. Der TLB 214 erzeugt eine reelle Adressenetikette basierend auf der virtuellen Adresse 216 und leitet dieselbe zu dem Register 204, wie es durch einen Bezugspfeil 218 gezeigt ist. Der Cacheindex 207 in dem Register 204 wird verwendet, um Zugriffe auf den DCACHE 24 durchzuführen, wie es durch einen Bezugspfeil 222 gezeigt ist. Der DCACHE 24 verwendet nach dem Empfang eines Cacheindex 222 den ankommenden Cacheindex, um eine Etikette 224, einen Zustandsanzeiger 226 und Daten auszuwählen und auszugeben. Die Etikette 224 und der Zustandsanzeiger 226 werden zu einer Etikettenvergleichsvorrichtung 228 für eine Analyse geleitet, um zu bestimmen, ob ein Treffer oder ein Fehlschlag vorhanden ist. Die Daten werden zu den MQUEUE-Neubenennungsregistern 44b übertragen. Die Etikettenvergleichsvorrichtung 228 empfängt ebenfalls die Etikette 208 von dem ARBSLOT-Register 204, derart, daß die Etikettenvergleichsvorrichtung 228 die Etikette 208 mit der Etikette 224 von dem DCACHE 24 vergleichen kann. Wenn der Vergleich eine Übereinstimmung ergibt, dann aktiviert die Etikettenvergleichsvorrichtung 228 einen Treffer in dem Register 204 über den HIT-Anzeiger 206, wie es durch einen Bezugspfeil 227 gezeigt ist.

Das CCC-Gefahrenauflösungssystem 202 umfaßt ferner eine Cacheindex-Vergleichsvorrichtung 228, die konfiguriert ist, um eine Adresse MISS ADDR 231 (mit einem Cacheindex) von dem entfernten CCC-ARBSLOT 48 und den Cacheindex 207 von dem lokalen ARBSLOT-Register 204 zu empfangen, wie es durch einen Bezugspfeil 232 gezeigt ist. Basierend auf dem Vergleich der Cacheindizes erzeugt die Vergleichsvorrichtung 228 ein Übereinstimmungssignal (MATCH; MATCH = Übereinstimmen) 234, das anzeigt, ob der Befehl in dem lokalen ARBSLOT 48 die CCC-Datenleitung verwendet hat. Das Signal MATCH 234 wird zu einem UND-Logikgatter 236 weitergeleitet, welches die Fähigkeit besitzt, das CCC-Gefahrensignal 126 zu aktivieren, und dasselbe wird zu einem UND-Logikgatter 238 geleitet, welches die Fähigkeit hat, das CCC-Gefahrensignal 125 zu deaktivieren.

Das UND-Logikgatter 236 empfängt das Signal MATCH 234, ein Signal DONE (DONE = fertig) 239, das anzeigt, ob der lokale ARBSLOT 48 einen Cache-Treffer hatte und bereits Daten empfangen hat, und ein CCC-Steuersignal (CCC_CNTL; CCC_CNTL = CCC_Control) 241 von dem CCC-ARBSLOT 48, der anzeigt, daß der CCC-ARBSLOT 48 seine Adresse MISS_ADDR (MISS = Fehlschlag) zum Vergleich bereits ausgesendet hatte. Basierend auf den Zuständen der vorhergehenden Signale erzeugt das UND-Logikgatter 236 ein Signal 237 und leitet dasselbe zu einem UND-Logikgatter 247, welches das CCC-Gefahrensignal 125 erzeugt.

Das Signal DONE 239 wird durch ein UND-Logikgatter 243 erzeugt. Um dieses Signal DONE 237 zu erzeugen, empfängt das UND-Logikgatter 243 folgendes: (a) ein Nicht-Abhängig-Von- Speicherung-Signal (~DS; siehe Fig. 7) 242, um anzuzeigen, ob der ARBSLOT 48 einen Ladungsbefehl hatte, der von einem Speicherungsbefehl in einem anderen ARBSLOT 48 abhängt; (b) ein Cache-Zugriff-Gültig-Signal (CAV; CAV = Cache Access Valid) 245, um anzuzeigen, ob sich eine gültige Adresse in dem ARBSLOT 48 befindet; (c) ein Nicht-Cache-Schwebend-Signal (~CP; siehe Fig. 7) 246, um anzuzeigen, ob von dem Befehl in dem ARBSLOT 48 bereits auf den DCACHE 24 zugegriffen worden ist; (d) ein Treffer-Signal (HIT) 247, um anzuzeigen, ob entweder ein Treffer oder ein Fehlschlag in dem DCACHE 24 aufgetreten ist; und (e) ein Nicht-Abhängig-Von- Fehlschlag-Signal (~DM; DM = Dependent-on-Miss) 248, um anzuzeigen, ob der Befehl in dem lokalen ARBSLOT 48 nicht von gegenwärtig ausstehenden Fehlschlagdaten abhängt, die von dem DCACHE 24 abwesend sind.

Das UND-Logikgatter 238 empfängt das Signal MATCH 234 von der Cacheindexvergleichsvorrichtung 228, das Signal DONE 239 von dem UND-Logikgatter 243 und ein Ältester-Befehl-Zeiger OLDEST_INSTR 237 (OLDEST_INSTR = Oldest Instruction). Der Zeiger OLDEST_INSTR 237 wird anzeigen, wann der lokale ARBSLOT 48 den ältesten Befehl hat und dazu bereit ist, um den Befehl zurückzuziehen. Bei dem bevorzugten Ausführungsbeispiel wird das Signal OLDEST_INSTR 237 erzeugt, indem die Zurückziehzeiger RET, die dem gegenwärtigen ARBSLOT 48 zugeordnet sind und die dem vorherigen ARBSLOT 48 zugeordnet sind, betrachtet werden. Wenn der Zurückziehzeiger, der dem gegenwärtigen ARBSLOT 48 entspricht, aktiviert ist, und wenn der des vorherigen ARBSLOT 48 deaktiviert ist, dann ist der gegenwärtige ARBSLOT 48 der älteste und das Signal OLDEST_INSTR 237 ist aktiviert. Wenn jedoch der Zurückziehzeiger, der dem gegenwärtigen ARBSLOT 48 entspricht, aktiviert ist, und wenn der des vorherigen ARBSLOT 48 ebenfalls aktiviert ist, dann ist der gegenwärtige ARBSLOT 48 nicht der älteste und das Signal OLDEST_INSTR 237 ist deaktiviert.

Wenn der Befehl in dem lokalen ARBSLOT 48 bereit ist, um durch die Zurückziehvorrichtung 52 (Fig. 3) zurückgezogen zu werden, dann wird das UND-Logikgatter 238 ein Wartesignal (WAIT; WAIT = warten) 244 erzeugen, welches durch einen Invertierer 255 invertiert und zu dem UND-Logikgatter 247 gesendet wird, welches das CCC-Gefahrensignal 125 deaktiviert. Wenn somit ein ARBSLOT 48 bereit ist, seinen Befehl zu der Zurückziehvorrichtung 52 (Fig. 3) zu starten, wird das CCC-Gefahrenauflösungssystem 202 eine Panikfalle verhindern und dem ARBSLOT 48 eine Vollendung erlauben. Dieses Merkmal verhindert unnötige und unerwünschte Panikfallen und optimiert die Leistung.

Speicherung-zu-Ladung-(ST/LD-)Gefahrenauflösungssystem

Jeder ARBSLOT 48 enthält und verwendet ein Speicherung-zu- Ladung-(ST/LD-)Gefahrenauflösungssystem 252 zum Erzeugen einer Panikfalle in dem Fall, daß ein ausgeführter Ladungsbefehl Daten verwendet, die von einem Speicherungsbefehl abhängen, der noch nicht ausgeführt worden ist. Wenn ein Ladungsbefehl Daten verwendet hat, die von einem nicht-ausgeführten Speicherungsbefehl abhängen, sind die Daten ungültig und demgemäß sind auch die Ergebnisse des Ladungsbefehls ungültig und sollten verworfen werden, wobei ferner der Ladungsbefehl neu ausgeführt werden sollte.

Bezugnehmend auf Fig. 7 umfaßt das ST/LD-Gefahrenauflösungssystem 252 eine Cacheindex-Vergleichsvorrichtung 228 zum Vergleichen eines entfernten Cacheindex 253 von einem entfernten ARBSLOT 48 mit einem lokalen Cacheindex 207 in dem lokalen Register 204, um das Vergleichssignal 258 abzuleiten, das anzeigt, ob eine Übereinstimmung der Cacheindizes vorhanden ist. Wenn eine Übereinstimmung vorhanden ist, dann könnten möglicherweise ihre jeweiligen Befehle auf Operationen gerichtet sein, die dieselben Daten betreffen. Wie nachfolgend beschrieben wird, wird, wenn ihre Cacheindizes übereinstimmen, eine weitere Überprüfung bezüglich ihrer jeweiligen Datengrößen durchgeführt, um folglicherweise zu bestimmen, ob die Befehle die gleichen Daten betreffen.

Eine Schlitzvergleichsvorrichtung 259 empfängt eine Nummer eines entfernten Schlitzes SLOT 261 (SLOT = Schlitz) von dem entfernten ARBSLOT 48 und vergleicht dieselbe mit der Nummer des lokalen Schlitzes SLOT 263 in dem lokalen Register 204, um ein Signal YOUNGER (YOUNGER = jünger) 264 abzuleiten, das anzeigt, welcher der Befehle von den beiden ARBSLOTs 48 der jüngere Befehl ist. Befehle werden in den ARBSLOTs 48 in Sequenz plaziert, weshalb die Schlitznummern direkt implizieren, welcher der ARBSLOTs 48 den jüngeren Befehl enthält.

Ein UND-Logikgatter 266 empfängt das Vergleichssignal 258 von der Cacheindex-Vergleichsvorrichtung 254 und ein Signal SIZE_MATCH 267, das anzeigt, ob die Datengrößen, die den Befehlen entsprechen, übereinstimmen, um ein Signal MATCH 269 (MATCH = übereinstimmen) abzuleiten. Die Datengrößen bei dem bevorzugten Ausführungsbeispiel umfassen ein Byte (8 Bit), ein halbes Wort (hw; 16 Bit), ein Wort (32 Bit) und ein Doppelwort (dw; 64 Bit). Es ist nicht nötig, daß die Datengrößen identisch sind, sondern nur daß sie sich überlappen, wobei sie in diesem Fall als übereinstimmend angesehen werden. Das Signal SIZE_MATCH 267 ist gemäß einer Größenübereinstimmungs-Bestimmungsvorrichtung 326 abgeleitet, die nachfolgend bezugnehmend auf Fig. 8 detaillierter beschrieben wird. Wenn das Signal MATCH 269 aktiviert ist, dann existiert die Schlußfolgerung, daß die Cacheindizes 207, 255 übereinstimmen, und daß ihre jeweiligen Datengrößen ebenfalls übereinstimmen.

Ein UND-Logikgatter 272 empfängt das Signal YOUNGER 264, ein Signal STORE_LAUNCH (STORE_LAUNCH = Speicherung-Starten), das anzeigt, ob ein Speicherungsbefehl von dem entfernten ARBSLOT 48 zu dem DCACHE 24 gestartet werden soll, ein Signal LOAD 275 (LOAD = laden), das anzeigt, ob der Befehl in dem lokalen ARBSLOT 48 ein Ladungsbefehl ist, und das Signal MATCH 269 von dem UND-Logikgatter 266, das anzeigt, ob eine Übereinstimmung zwischen den Cacheindizes und ihren Datengrößen vorhanden ist. Basierend auf den vorhergehenden Signalen erzeugt das UND-Logikgatter 272 ein Signal 277, das zu den UND-Logikgattern 278, 279 geleitet wird. Das Signal 277 kann möglicherweise einen Abhängig-von-Speicherung-(DS) Anzeiger 281, wie z. B. eine LATCH- oder eine andere geeignete Logikvorrichtung, bewirken, um ein Signal DS zu aktivieren, oder um alternativ zu bewirken, daß das ST/LD-Gefahrensignal 124 (Fig. 4) aktiviert wird, und zwar abhängig davon, ob der ARBSLOT 48 fertig ist oder nicht (ob derselbe bereits ausgeführt hat und eine Datenadresse empfangen hat). Allgemein wird das UND-Logikgatter 272 in einem ARBSLOT 48 wirksam, der einen Ladungsbefehl hat, wenn ein anderer ARBSLOT 48 einen Speicherungsbefehl hat, der damit beginnt, eine Adresse zu dem DCACHE 24 zu starten.

Das UND-Logikgatter 278 empfängt das Signal 277 von dem UND-Logikgatter 272 zusammen mit einem Nicht-Fertig-Signal ~DONE 282, um ein Betätigungssignal 248 für einen Transistor 286 abzuleiten, der das Signal DS 315 mit dem DS-Anzeiger 281 aktivieren kann.

Das UND-Logikgatter 279 empfängt das Signal 277 von dem UND-Logikgatter 272 zusammen mit einem Fertig-Signal DONE 288, um das Signal ST/LD_HAZARD 124 (Fig. 4) abzuleiten, welches schließlich eine Panikfalle bewirken wird.

Ein UND-Logikgatter 292 empfängt das Signal YOUNGER 264 von der Schlitzvergleichsvorrichtung 259, das anzeigt, ob der Befehl in dem lokalen ARBSLOT 48 älter als der Befehl in dem entfernten ARBSLOT 48 ist oder umgekehrt, ein Signal LOAD_LAUNCH 294, das anzeigt, ob der Befehl, der von dem entfernten ARBSLOT 48 gestartet wird, ein Ladungsbefehl ist, ein Signal STORE 295, das anzeigt, ob der lokale ARBSLOT 48 einen Speicherungsbefehl enthält, und das Übereinstimmungssignal 269 von dem UND-Logikgatter 266, das anzeigt, ob die Cacheindizes 207, 255 sowie die entsprechenden Datengrößen übereinstimmen. Basierend auf den vorhergehenden Signalen erzeugt das UND-Logikgatter 292 ein Signal ASSERT_DS, welches schließlich das Signal DS 315 über den DS-Anzeiger 281 in dem gleichen entfernten ARBSLOT 48 aktivieren kann, der die Übereinstimmung auslöste. Das Signal ASSERT_DS 298 wird zu einem Treiber 299 gesendet, der ein. Signal HIT_DS 302 zu dem anderen entfernten ARBSLOT 48 sendet. Das Signal HIT_DS 302 betätigt einen Transistor 304 zum Aktivieren des Signals DS 315 in dem DS-Anzeiger 281, wenn das Signal GRANTED_+_2 (GRANTED = erteilt), das durch ein Bezugszeichen 307 bezeichnet ist, wahr ist, und zwar basierend auf dem UND-Logikgatter 303 und einem Betätigungssignal 305. Das Signal GRANTED_+_2 wird zwei Zyklen nach dem Zeitpunkt aktiviert, zu dem dem zur Debatte stehenden ARBSLOT 48 ein Zugriff auf den DCACHE 24 erteilt worden ist. Daher handhabt das UND-Logikgatter 292 das Szenario, wenn ein Ladungsbefehl zu dem DCACHE 24 gestartet wird, und der lokale ARBSLOT 48 einen Speicherungsbefehl enthält, der sich auf Daten bezieht, von denen der Ladungsbefehl abhängt. In diesem Fall existiert kein Bedarf nach einer Panikfalle darin, daß der Ladungsbefehl bereits gestartet wird, jedoch noch keine Daten empfangen hat (d. h. derselbe ist nicht fertig).

Ein UND-Logikgatter 306 empfängt ein Signal STORE_RETIRE 308 (STORE_RETIRE = Speicherung-Zurückziehen) von einem entfernten ARBSLOT 48, das anzeigt, wann in dem entfernten ARBSLOT 48 ein Speicherungsbefehl zurückgezogen wird, und das Signal MATCH 234 (Fig. 6; von dem UND-Logikgatter 228, der anzeigt, ob der Cacheindex der Adresse MISS_ADDR mit dem lokalen Cacheindex übereinstimmt). Basierend auf den vorhergehenden Signalen erzeugt das UND-Logikgatter 306 ein Signal DEASSERT_DS (DEASSERT = Deaktivieren) 309, welches schließlich das Signal DS 315, das von dem DS-Anzeiger 281 gehalten wird, deaktiviert. Wie es in Fig. 7 gezeigt ist, kann das Signal DEASSERT_DS 309 einen Transistor 312 betätigen, der das Signal DS 315, das von dem DS-Anzeiger 281 erzeugt wird, deaktiviert.

Eine Aktivierung des Signals DS 315 von dem DS-Anzeiger 281 bewirkt ein Erzeugen des Signals DONE 239, welches anzeigt, wenn der ARBSLOT 48 seinen Befehl ausgeführt hat, und wenn derselbe eine Datenadresse empfangen hat, die den Ergebnissen entspricht. In dieser Hinsicht erzeugt das UND-Logikgatter 243 (Fig. 6) das Signal DONE 239 aus den folgenden Signalen: dem Signal ~DS 242, welches von der Inversion des Signals DS 315 mit dem Invertierer 318 erzeugt wird, aus dem Signal CAV 245, aus dem Signal ~CP 246, aus dem Signal ~DM 248 und aus dem Signal HIT 247 von dem HIT-Anzeiger 206. Das Signal DS 315 verhindert, wenn es aktiviert ist, daß eine abhängige Ladung einen Zugriff auf den DCACHE 24 anfordert.

Der ARBSLOT 48 empfängt ferner ein Signal HIT_RETRY (HIT_RETRY = Treffer-Neuversuchen) 322 von der Zurückziehvorrichtung 52, wenn ein Speicherungsbefehl nicht glatt durch die Zurückziehvorrichtung 52 gelaufen ist, um zu bewirken, daß der ARBSLOT 48 auf den DCACHE 24 noch einmal bezüglich von Daten zugreift. In dieser Hinsicht wird das Signal HIT_RETRY 322 durch einen Invertierer 323 und in ein UND-Logikgatter 324 geleitet. Das UND-Logikgatter 324 empfängt ferner das Signal GRANT_+_2, das durch ein Bezugszeichen 327 bezeichnet ist. Wenn das Signal HIT_RETRY 322 zwei Zyklen nach einer Erteilung eines DCACHE-Zugriffs empfangen wird, dann aktiviert das UND-Logikgatter 324 das Signal 325. Das Signal 325 betätigt einen Transistor 326, welcher wiederum einen CP-Anzeiger 327 aktiviert. Der CP-Anzeiger 327 ist ein Latch oder ein anderes geeignetes Logikgerät, das konfiguriert ist, um das Signal CP 246 zu deaktivieren oder zu aktivieren, um anzuzeigen, ob der ARBSLOT 48 auf den DCACHE 24 zugegriffen hat oder nicht. Der CP-Anzeiger 327 kann eingestellt sein, um das Signal CP 246 durch einen Transistor 328 zu aktivieren, der mit einer logisch hohen Spannung verbunden ist und durch das Signal UPDATE 123 (UPDATE = Aktualisieren) betätigt wird. Ferner wird das Signal CP 246 zu einem Invertierer 329 gesendet, um das Signal ~CP 246' zu erzeugen, welches zu dem UND-Logikgatter 243 zum Erzeugen des Signals DONE 239 gebracht wird. Wenn somit das Signal HIT_RETRY 322 aktiviert ist, bleibt das Signal ~CP 246' zu dem UND-Logikgatter 243 deaktiviert, um dadurch das Signal DONE 239 zu deaktivieren.

Fig. 8 stellt eine Größenübereinstimmungs-Bestimmungslogik 326 in jedem ARBSLOT 48 zum Erzeugen des Signals SIZE_MATCH 267 (Fig. 7) dar. Im allgemeinen bestimmt die Logik 326 von Fig. 8, ob ein Ladungsbefehl von einem Speicherungsbefehl abhängen kann oder nicht, und zwar basierend auf ihren jeweiligen Datengrößen. Die Daten, die jedem Befehl zugeordnet sind, können irgendeine der folgenden Größen besitzen: ein Byte (8 Bit); ein Halbwort (16 Bit); ein Wort (32 Bit); und ein Doppelwort (64 Bit). Es ist möglich, daß Ladungsdaten von Speicherungsdaten abhängen, wenn die Daten unterschiedliche Größen aufweisen, solange eine Überlappung von Datenadressen vorhanden ist. Ein Ladungsbyte kann beispielsweise von einem Speicherungswort abhängen, wenn das Ladungsbyte das Speicherungswort überlappt. Als weiteres Beispiel kann ein Ladungs-Halbwort von einem Speicherungsbyte abhängen, wenn das Speicherungsbyte in dem Ladungs-Halbwort enthalten ist.

Die Adresse, die jedem der ARBSLOTs 48 zugeordnet ist, umfaßt Signale SIZE (vorzugsweise zwei Bit), die die Größe anzeigen. Die Codierung von SIZE lautet folgendermaßen: "00" bedeutet ein Byte; "01" bedeutet ein Halbwort; "10" bedeutet ein Wort; und "11" bedeutet ein Doppelwort.

Bezugnehmend auf Fig. 8 umfaßt die SIZE_MATCH-Vorrichtung 326 ein EXKLUSIV-ODER-Logikgatter 328 zum Empfangen eines Signals REMOTE_ADDR[62], das durch ein Bezugszeichen 331 bezeichnet ist und das dem Startenbefehl entspricht, und ein Signal LOCAL ADDR[62] 256a, das durch ein Bezugszeichen 334 bezeichnet ist und das dem lokalen Befehl entspricht. Basierend auf den vorhergehenden Signalen erzeugt das EXKLUSIV- ODER-Logikgatter 328 ein Signal 332, das anzeigt, ob eine Übereinstimmung zwischen diesen Adressenbits vorhanden ist oder nicht.

Ein NAND-Logikgatter 334 empfängt ein Signal REMOTE_SIZE[0], das durch ein Bezugszeichen 333 bezeichnet ist und dem entfernten Startenbefehl entspricht, und ein Signal LOCAL_SIZE[0], das durch ein Bezugszeichen 335 bezeichnet ist und das dem lokalen Befehl entspricht, um ein Signal 336 zu erzeugen, das anzeigt, falls es aktiviert ist, daß eine oder beide Adressen bezüglich ihrer Größe größer als ein Halbwort sind. Daher ist eine Übereinstimmung von Adreßbits [63, 62] der Befehle für eine Überlappung von Operationen nicht notwendig.

Ein EXKLUSIV-ODER-Logikgatter 338 empfängt ein Signal REMOTE_ADDR[63], das durch ein Bezugszeichen 339 bezeichnet ist und das dem entfernten Startenbefehl entspricht, und ein Signal LOCAL_ADDR[63], das durch ein Bezugszeichen 342 bezeichnet ist und das dem lokalen Befehl entspricht, um ein Signal 346 zu erzeugen, das anzeigt, ob eine Übereinstimmung dieser Adreßbits vorhanden ist oder nicht.

Ein NAND-Logikgatter 348 empfängt ein Signal REMOTE_SIZE[1], das durch ein Bezugszeichen 352 bezeichnet ist und das dem entfernten Startenbefehl entspricht, und ein Signal LOCAL_SIZE[1], das durch ein Bezugszeichen 354 bezeichnet ist und das dem lokalen Befehl entspricht, um ein Signal 356 zu erzeugen, das anzeigt, falls es aktiviert ist, das eine oder beide Adressen bezüglich ihrer Größe größer als ein Byte sind, derart, daß eine Übereinstimmung des Adreßbits [63] für eine Überlappung von Operationen nicht notwendig ist.

Ein UND-Logikgatter 358 empfängt die Signale 332, 336 und erzeugt ein Signal 362 aus denselben, welches anzeigt, falls es aktiviert ist, daß die Adressenbits [62] nicht übereinstimmen.

Ein UND-Logikgatter 364 empfängt die Signale 346, 356 und erzeugt ein Signal 366 aus denselben, welches anzeigt, ob die Adreßbits [63] übereinstimmen oder nicht.

Ein NOR-Logikgatter 368 empfängt die Signale 362, 366 und erzeugt das Signal SIZE_MATCH 267, welches das maßgebliche Signal ist, ob die Datengrößen für einen entsprechenden Vergleich übereinstimmen.

Die Gesamtoperation des ST/LD-Gefahrenauflösungssystems 252(Fig. 7) sowie der Größenübereinstimmungs-Bestimmungsvorrichtung 356 (Fig. 8) in demselben lauten folgendermaßen.

Wenn ein Speicherungsbefehl einen Ladungsbefehl in dem lokalen ARBSLOT 48 startet und mit demselben übereinstimmt, wird eine Entscheidung durchgeführt, ob der Ladungsbefehl jünger als der Speicherungsbefehl ist. Wenn der Ladungsbefehl nicht jünger als der Speicherungsbefehl ist, dann wird keine Handlung unternommen. Wenn der Ladungsbefehl jünger als der Speicherungsbefehl ist, dann wird das Signal ST/LD_HAZARD 124 aktiviert, wenn der Ladungsbefehl fertig ist, oder der DS-Anzeiger wird alternativ aktiviert, wenn der Ladungsbefehl nicht fertig ist.

Wenn ein Ladungsbefehl einen Speicherungsbefehl in einem anderen ARBSLOT 48 startet und mit demselben übereinstimmt, bewirkt der ARBSLOT 48, der den Speicherungsbefehl hat, eine Aktivierung des Signals DS 315 in dem ARBSLOT 48, der den Ladungsbefehl aufweist.

Das Signal DS 315, welches durch den DS-Anzeiger 281 aktiviert und deaktiviert wird, wird durch einen Ladungsbefehl in einem ARBSLOT 48 gelöscht, wenn ein Speicherungsbefehl, der mit einem Befehl in einem anderen ARBSLOT 48 übereinstimmt, zurückgezogen wird. Wenn der DS-Anzeiger bei einem ARBSLOT 48 deaktiviert wird, dann wird es dem ARBSLOT 48 erlaubt, auf den DCACHE 24 zuzugreifen.

Viele Variationen und Modifikationen können bei dem vorher beschriebenen bevorzugten Ausführungsbeispiel der Erfindung durchgeführt werden. Als Beispiel wurden Befehle bei dem bevorzugten Ausführungsbeispiel in den Schlangen 38a, 38b neu geordnet. Fachleute werden jedoch erkennen, daß Befehle in irgendeiner geeigneten Neuordnungsvorrichtung, einschließlich einer Reservierungsstation, neu geordnet werden können. Alle solchen Modifikationen und Variationen sollen im Bereich der vorliegenden Erfindung, wie er durch die folgenden Ansprüche definiert ist, enthalten sein.


Anspruch[de]
  1. 1. Vorrichtung (100) in einem Prozessor zur Beseitigung falscher Ergebnisse, die von einer Ausführung von Befehlen außerhalb der Reihenfolge in dem Prozessor erzeugt werden, wobei die Befehle in einem auf dem Prozessor ablaufenden Programm enthalten sind, und das Programm keine Routine aufweist, um die falschen Ergebnisse handzuhaben, wobei die Vorrichtung (100) folgende Merkmale aufweist:

    eine Abrufvorrichtung (28), die dem Prozessor (14) zugeordnet und konfiguriert ist, um Befehle abzurufen;

    eine Neuordnungsvorrichtung (38a, 38b), die dem Prozessor (14) zugeordnet und konfiguriert ist, um die Befehle von der Abrufvorrichtung (28) zu empfangen und die Befehle außerhalb der Reihenfolge auszuführen;

    eine Logikanordnung (122, 252), die der Neuordnungsvorrichtung (38a, 38b) zugeordnet und konfiguriert ist, um eine architekturell unkorrekte Ausführung eines Befehls in der Neuordnungsvorrichtung (38b) zu erkennen und dem Befehl nach der Ausführung einen Anzeiger (102) zuzuordnen, wobei der Anzeiger ein nicht-architekturelles Hardwaresignal ist, das für das Programm unsichtbar ist; und

    einen Vektorgenerator (114), der der Neuordnungsvorrichtung (38a, 38b) und der Abrufvorrichtung (28) zugeordnet und konfiguriert ist, um die Neuordnungsvorrichtung (38a, 38b) zu löschen, und um zu bewirken, daß die Abrufvorrichtung (28) basierend auf dem Anzeiger (102) das Abrufen beginnend mit dem Befehl neu beginnt, der unkorrekt ausgeführt wurde.
  2. 2. Vorrichtung (100) gemäß Anspruch 1, bei der die Logikanordnung (122, 252) ferner eine Abhängigkeits-Logikanordnung (252) umfaßt, welche konfiguriert ist, um zu bestimmen, ob ein Ladungsbefehl vor einem Speicherungsbefehl ausgeführt wurde, und ob der Ladungsbefehl von Daten abhängig war, die durch den Speicherungsbefehl geliefert werden sollten, wobei die Abhängigkeits-Logikanordnung (252) konfiguriert ist, um den Anzeiger (102) basierend auf den Bestimmungen zu aktivieren.
  3. 3. Vorrichtung (100) gemäß Anspruch 1 oder 2, die ferner eine Gefahren-Logikanordnung (202) aufweist, die konfiguriert ist, um basierend auf einem Kohärenzüberprüfungssignal (241) zu bestimmen, ob ein Befehl Daten betrifft, die übertragen werden sollten.
  4. 4. Vorrichtung (100) gemäß einem der Ansprüche 1 bis 3, bei der die Abrufeinrichtung (28) ferner eine Einrichtung zum Zuordnen des Anzeigers (102) zu einem der Befehle aufweist.
  5. 5. Vorrichtung (100) gemäß einem der Ansprüche 1 bis 4, die ferner eine Logikanordnung (172) aufweist, die konfiguriert ist, um zu bestimmen, ob einer der Befehle in einem Zugriff auf einen Datencache (24) resultierte, welcher einen Paritätsfehler mit sich bringt, und um den Befehl dem Anzeiger (102) zuzuordnen.
  6. 6. Vorrichtung (100) in einem Prozessor (14) zum Beheben von falschen Ausführungsergebnissen von Befehlen, die außerhalb der Reihenfolge ausgeführt werden, wobei die Befehle in einem auf dem Prozessor ablaufenden Programm enthalten sind, und das Programm keine Routine aufweist, um die falschen Ausführungsergebnisse handzuhaben, wobei die Vorrichtung folgende Merkmale aufweist:

    eine Abrufvorrichtung (28), die dem Prozessor (14) zugeordnet und konfiguriert ist, um Befehle abzurufen und einen Anzeiger (102) einem während des Abrufs ungültigen Befehl zuzuordnen, der neu ausgeführt werden soll, wobei der Anzeiger ein nicht-architekturelles Hardwaresignal ist, das für das Programm unsichtbar ist;

    einer Neuordnungsvorrichtung (38b), die dem Prozessor (14) zugeordnet und konfiguriert ist, um die Befehle von der Abrufvorrichtung (28) zu empfangen, und um die Befehle außerhalb der Reihenfolge auszuführen; und

    einen Vektorgenerator (114), der der Neuordnungsvorrichtung (38b) und der Abrufvorrichtung (28) zugeordnet ist, wobei der Vektorgenerator 114 konfiguriert ist, um basierend auf dem Anzeiger (102) den Befehl nach einer Ausführung desselben zu empfangen, um die Neuordnungsvorrichtung (38b) zu löschen, und um zu bewirken, daß die Abrufvorrichtung (28) das Abrufen beginnend mit dem ungültigen Befehl neu beginnt.
  7. 7. Vorrichtung (100) in einem Prozessor zum Beheben von Paritätsfehlern, die von einem Datencache (24) erfaßt werden, der einem Prozessor (14) zugeordnet ist, der Befehle außerhalb der Reihenfolge ausführt, wobei die Befehle in einem auf dem Prozessor ablaufenden Programm enthalten sind, und das Programm keine Routine aufweist, um die falschen Ausführungsergebnisse handzuhaben, wobei die Vorrichtung (100) folgende Merkmale aufweist:

    eine Abrufvorrichtung (28), die konfiguriert ist, um Befehle abzurufen;

    eine Neuordnungsvorrichtung (38b) zum Empfangen des Befehls von der Abrufvorrichtung, wobei die Neuordnungsvorrichtung (38b) zum Ausführen der Befehle außerhalb der Reihenfolge und zum Zugreifen auf den Datencache (24) vorhanden ist;

    wobei der Datencache (24) konfiguriert ist, um zu bestimmen, ob Paritätsfehler während Zugriffen auftreten, und wobei derselbe ferner konfiguriert ist, um einen Anzeiger (102) zu erzeugen, wenn bezüglich eines Zugriffs ein Paritätsfehler erfaßt wird, wobei der Anzeiger ein nicht-architekturelles Hardwaresignal ist, das für das Programm unsichtbar ist; und

    einen Vektorgenerator (114), der wirksam ist, wenn der Befehl nach der Ausführung zurückgezogen wird, und der konfiguriert ist, um den Anzeiger (102) zu erkennen, um die Neuordnungsvorrichtung (38b) zu löschen, und um zu bewirken, daß die Abrufeinrichtung das Abrufen neu beginnt, und zwar mit dem Befehl, bei dessen Zugriff auf den Datencache ein Paritätsfehler auftrat.
  8. 8. Verfahren zum Beheben von falschen Ergebnissen, die durch eine Ausführung außerhalb der Reihenfolge von Befehlen in einem Prozessor (14) erzeugt werden, wobei die Befehle in einem auf dem Prozessor ablaufenden Programm enthalten sind, und das Programm keine Routine aufweist, um die falschen Ergebnisse handzuhaben, wobei das Verfahren folgende Schritte aufweist:

    Sammeln von Befehlen in einer Neuordnungsvorrichtung (38b);

    Ausführen der Befehle außerhalb der Reihenfolge;

    Erkennen einer architekturell unkorrekten Ausführung eines Befehls;

    Aktivieren eines Anzeigers (102), der dem Befehl zugeordnet ist, wobei der aktivierte Anzeiger (102) die unkorrekte Ausführung anzeigt, wobei der Anzeiger ein nicht-architekturelles Hardwaresignal ist, das für das Programm unsichtbar ist; und

    wenn der Befehl nach der Ausführung zurückgezogen wird, Erkennen des aktivierten Anzeigers (102), Löschen der Neuordnungsvorrichtung (38b) und Neubeginnen des Abrufens, wobei mit dem Befehl begonnen wird, der unkorrekt ausgeführt wurde.
  9. 9. Verfahren zum Beheben von falschen Ausführungsergebnissen von Befehlen, die in einem Prozessor (14) außerhalb der Reihenfolge ausgeführt werden, wobei die Befehle in einem auf dem Prozessor ablaufenden Programm enthalten sind, und das Programm keine Routine aufweist, um die falschen Ausführungsergebnisse handzuhaben, wobei das Verfahren folgende Schritte aufweist:

    Abrufen von Befehlen;

    Bestimmen, daß ein Befehl während des Abrufens ungültig ist;

    Zuordnen eines Anzeigers (102) zu dem ungültigen Befehl, wobei der Anzeiger ein nicht-architekturelles Hardwaresignal ist, das für das Programm unsichtbar ist;

    Plazieren des ungültigen Befehls in eine Neuordnungsvorrichtung (38b) mit anderen Befehlen;

    Ausführen der Befehle in der Neuordnungsvorrichtung (38b) außerhalb der Reihenfolge; und

    wenn der Befehl nach der Ausführung zurückgezogen wird, Erkennen des Anzeigers (102), Löschen der Neuordnungsvorrichtung (38b) und Neubeginnen des Abrufens, wobei mit dem ungültigen Befehl begonnen wird.
  10. 10. Verfahren zum Beheben von Paritätsfehlern, die von einem Datencache (24) erfaßt werden, der einem Prozessor (14) zugeordnet ist, der Befehle außerhalb der Reihenfolge ausführt, wobei die Befehle in einem auf dem Prozessor ablaufenden Programm enthalten sind, und das Programm keine Routine aufweist, um die falschen Ausführungsergebnisse handzuhaben, wobei das Verfahren folgende Schritte aufweist:

    Sammeln von Befehlen in einer Neuordnungsvorrichtung (38b);

    Ausführen der Befehle außerhalb der Reihenfolge;

    Ausführen eines Befehls, der einen Zugriff auf den Datencache (24) betrifft;

    Bestimmen, daß während des Zugriffs ein Paritätsfehler aufgetreten ist;

    Erzeugen und Weiterleiten eines Anzeigers (102) von dem Datencache (24) zu einem Vektorgenerator (114) in dem Prozessor (14), wobei der Anzeiger ein nicht-architekturelles Hardwaresignal ist, das für das Programm unsichtbar ist; und

    Löschen der Neuordnungsvorrichtung (38b) und Neubeginnen der Ausführung von Befehlen, wobei mit dem Befehl begonnen wird, bei dessen Zugriff auf den Datencache ein Paritätsfehler auftrat.






IPC
A Täglicher Lebensbedarf
B Arbeitsverfahren; Transportieren
C Chemie; Hüttenwesen
D Textilien; Papier
E Bauwesen; Erdbohren; Bergbau
F Maschinenbau; Beleuchtung; Heizung; Waffen; Sprengen
G Physik
H Elektrotechnik

Anmelder
Datum

Patentrecherche

Patent Zeichnungen (PDF)

Copyright © 2008 Patent-De Alle Rechte vorbehalten. eMail: info@patent-de.com