PatentDe  


Dokumentenidentifikation DE102006039747A1 29.03.2007
Titel Verfahren für Kontextzustandsmanagement
Anmelder Intel Corp., Santa Clara, Calif., US
Erfinder Newburn, Chris, South Beloit, Ill., US;
Rodgers, Dion, Hillsboro, Oreg., US;
Bigbee, Bryant, Scottsdale, Ariz., US;
Kaushik, Shivnandan, Portland, Oreg., US;
Chinya, Gautham, Hillsboro, Oreg., US;
Zou, Xiang, Beaverton, Oreg., US;
Wang, Hong, Santa Clara, Calif., US
Vertreter BOEHMERT & BOEHMERT, 28209 Bremen
DE-Anmeldedatum 24.08.2006
DE-Aktenzeichen 102006039747
Offenlegungstag 29.03.2007
Veröffentlichungstag im Patentblatt 29.03.2007
IPC-Hauptklasse G06F 9/00(2006.01)A, F, I, 20061114, B, H, DE
Zusammenfassung Verfahren zum Handhaben von Kontextzustandsinformationen. Mindestens eine Ausführungsform umfaßt mehrere Schutzbereichssegmente zum Speichern mehrerer Maschinenkontextzustandsinformationen. Eine Ausführungsform umfaßt mindestens einen In-Gebrauch-Bitvektor zum Anzeigen des Zustands der mehreren Maschinenkontextinformationen.

Beschreibung[de]
GEBIET DER ERFINDUNG

Ausführungsformen der Erfindung betreffen die Mikroprozessorarchitektur. Insbesondere betreffen Ausführungsformen der Erfindung die Handhabung von Kontextzustandsinformationen in einem Mikroprozessor.

Moderne Mikroprozessoren können zahlreiche Funktionen ausführen, die eine Änderung des Kontextzustandes erfordern. Ein Mikroprozessor kann zum Beispiel Kontextzustandsinformationen ändern, wenn er zwischen Befehlsgruppen umschaltet, wie zum Beispiel Software-„Threads". Beim Wechseln zwischen Software-Threads kann zum Beispiel der Kontextzustand einer Gruppe von Befehlen an einem Speicherort gespeichert werden, und der Kontextzustand einer anderen Gruppe von Befehlen kann aus dem Speicher rückgeführt und in den Mikroprozessor geladen werden.

Mit Bezug auf Software-Threads kann „Kontextzustand" sich auf einen Teil des Zustandes jedes Software-Threads beziehen, der zwischen Kontextumschaltungen innerhalb eines Prozessors bewahrt werden soll. Der Kontextzustand kann in Registern der Prozessorarchitektur, Befehlsregistern oder anderen Speicherbereichen, wie zum Beispiel Speicher, gespeichert werden. Der Kontextzustand wird normalerweise durch eine Reihe von Bits repräsentiert, deren Wert einen bestimmten Kontextzustand repräsentiert.

Der Begriff „Kontextumschaltung" bezeichnet normalerweise einen Wechsel von einem Prozessorausführungszustand in einen anderen, wie zum Beispiel eine Software-Thread-Umschaltung. Eine Kontextumschaltung wird normalerweise entweder vom Betriebssystem oder durch ein Nutzerprogramm vorgenommen. Eine Kontextumschaltung kann zum Beispiel im Ergebnis des Aufrufs einer Subroutine in einem Nutzerprogramm auftreten, bei dem der Kontext des aufrufenden Programms in einem Speicherbereich, wie zum Beispiel einem „Stack", gespeichert wird, wenn der Aufruf an die Subroutine erfolgt, und kann aus dem Speicherbereich zurückgeholt werden, wenn es aus der aufgerufenen Subroutine zurückkehrt.

Der Kontextzustand wird normalerweise im Speicher gespeichert oder in Prozessorregister in Gruppen umgespeichert (restored), die mehr Kontextzustandsinformationen umfassen können, als zu einer gegebenen Zeit benötigt werden, was auf die Organisation der Kontextzustandsschutzbereiche im Speicher und die Körnigkeit zurückzuführen ist, mit der diese Schutzbereiche oder Speicherbereiche adressiert werden. Im Ergebnis dessen kann eine unnötig große Zahl von Prozessorzustandsinformationen jedes Mal ersetzt werden, wenn der Kontextzustand aus dem Speicher umgespeichert bzw. rückgeführt wird. Ein Betriebssystem oder ein Nutzerprogramm kann zum Beispiel nur eine Teilmenge von Kontextzustandsinformationen anfordern, die zu einem bestimmten Software-Thread oder anderen Prozess gehören, der gerade in einem Prozessor ausgeführt wird. Kontextzustandsschutz- und -umspeicher bzw. -rückführmechanismen (save and restore mechanisms) nach dem Stand der Technik können jedoch erfordern, daß der gesamte Kontextzustand, der zu einem Thread oder einem anderen Prozess gehört, rückgeführt und/oder gespeichert wird, um Kontextzustandsinformationen abzurufen, die zu dem Thread oder interessierenden Prozess gehören.

Kontextzustandsmanagementverfahren nach dem Stand der Technik können also zu Leistungs- und Ressourcenmängeln führen.

KURZBESCHREIBUNG DER ZEICHNUNGEN

Ausführungsformen der Erfindung werden als Beispiel und nicht als Beschränkung in den Figuren der begleitenden Zeichnungen erläutert, in denen gleiche Bezugsnummer ähnliche Elemente angeben, dabei gilt:

1 ist ein Diagramm, das einen Schutzbereich mit Schutzbereichssegmenten gemäß einer Ausführungsform der Erfindung illustriert.

2 ist ein Diagramm, das die Arbeit der Verwendung von Schutzzustandssegmenten gemäß einer Ausführungsform der Erfindung illustriert.

3 illustriert die Operation von mindestens einer Ausführungsform, bei der ein In-Gebrauch-Bit-Vektor dazu verwendet wird, Nullrückführungs- und Nullspeicherungsoperationen zu mildern.

4 ist ein Flußdiagramm, das ein Verfahren zum Anzeigen und Feststellen von Fehlern in einem Schutzbereichssegment gemäß einer Ausführungsform der Erfindung illustriert.

5 ist ein gemeinsam genutztes Buscomputersystem, in dem mindestens eine Ausführungsform der Erfindung verwendet werden kann.

6 ist ein Punkt-zu-Punkt-Computersystem, in dem mindestens eine Ausführungsform der Erfindung verwendet werden kann.

AUSFÜHRLICHE BESCHREIBUNG

Ausführungsformen der Erfindung gehören zur Mikroprozessorarchitektur. Insbesondere gehören Ausführungsformen der Erfindung zur Handhabung des Prozessorkontextzustandes. Mindestens eine Ausführungsform der Erfindung führt eine erweiterte Funktionalität in einige Betriebsverfahren zum Kontextzustand nach dem Stand der Technik ein, um die Ressourcen- und Leistungseffizienz beim Lesen und Aktualisieren von Kontextzustandsinformationen in einem Mikroprozessor zu verbessern.

Betriebssysteme und/oder Nutzerprogramme verwenden normalerweise einen Bereich („Schutzbereich" oder auch „Speicherbereich", „save area") in einer Speicherstruktur, wie zum Beispiel einen dynamischen Direktzugriffsspeicher (DRAM), zum Speicher des Kontextzustandes während einer Kontextumschaltung. In anderen Systemen nach dem Stand der Technik können einige Software-Routinen, wie zum Beispiel Bearbeitungsprogramme für Ablaufunterbrechung (exception handlers), den Schutz- bzw. Speicherbereich nur nach Bedarf („dynamisch") in einem Speicherbereich einer Speichereinrichtung, wie zum Beispiel einem Stack, zuweisen. Befehlssatzarchitekturen definieren normalerweise einen oder mehrere Befehle zur Handhabung der Speicherung von Kontextzustand in der Speichereinrichtung oder zur Rückführung von Kontextzustand daraus. In einer Befehlssatzarchitektur können zum Beispiel zwei Befehle (z.B. „FXSAVE" und „FXRSTORE") zum Speichern von Kontextzustand in der Speichereinrichtung bzw. zum Rückführen von Kontextzustand in die Register eines Prozessors aus einer Speichereinrichtung verwendet werden. In anderen Befehlssatzarchitekturen können mehr oder weniger als zwei Befehle zur Handhabung von Kontextzustandsinformationen verwendet werden.

In mindestens einer Ausführungsform der Erfindung werden Teile, „Segmente" oder „Abschnitte" eines Schutzbereichs definiert, die initialisiert und zum Speichern und für den Zugriff auf Kontextzustandsinformationen verwendet werden können, ohne den gesamten Schutzbereich zu initialisieren, zu speichern oder rückzuführen. Dadurch daß der Zugriff auf Segmente eines Kontextzustand-Schutzbereichs möglich ist, geht werden Zeit und Speicherbereich sparsam genutzt, die in einer Ausführungsform der Erfindung zum Aktualisieren, Initialisieren oder Lesen von Kontextzustandsinformationen verwendet werden müssen.

Ferner wird in mindestens einer Ausführungsform der Erfindung ein „In-Gebrauch"-Bit oder eine Gruppe von „In-Gebrauch"-Bits („Bitvektor") innerhalb eines Schutzbereichs bereitgestellt, um anzuzeigen, ob ein bestimmtes Speicher bzw. Schutzbereichssegment oder eine Gruppe von Schutzbereichssegmenten gültige Informationen enthalten. Ein In-Gebrauch-Bit oder ein Bitvektor kann die Effizient der weiteren Kontextzustandshandhabung dadurch erleichtern, daß nach der Rückführung des Kontextzustands aus der Speichereinrichtung in die Prozessorregister kein Gültigkeitscheck vorgenommen werden muß. Statt dessen kann einfach ein In-Gebrauch-Bit oder Bitvektor gelesen werden, um festzustellen, ob das entsprechende Segment gültige Informationen enthält.

Ausführungsformen der Erfindung können auch einen Mechanismus zum Bestimmen umfassen, ob die Schutzbereichssegmente initialisiert wurden, bevor die Kontextzustandsinformationen, die in einem Segment enthalten sind, gespeichert wurden. In einer Ausführungsform kann ein Schutzbereichssegment darauf kontrolliert werden, ob es initialisiert wurde, in dem ein Initialisierungsbit oder Bits gelesen werden, die mit dem Segment verknüpft sind. Spezieller gesagt, kann in einer Ausführungsform der Erfindung das In-Gebrauch-Bit oder der Bitvektor zum Bestimmen verwendet werden, ob ein bestimmtes Segment initialisiert wurde. In einer Ausführungsform wird der Kontextzustand durch eine Software-Routine (z.B. „Mikrocode") initialisiert, die ein Segment oder Segmente auf einen Anfangswert bringt, während in anderen Ausführungsformen ein Prozessor eine Logik umfassen kann, um den Kontextzustand zu initialisieren.

Andere Merkmale verschiedener Ausführungsformen werden hierin beschrieben, einschließlich eines Mechanismus zu Leeren eines Schutzbereichssegments von Kontextzustandsinformationen, eines Mechanismus zum Feststellen und Handhaben von Fehlern in einem Kontextzustandsschutzbereichssegment und eines Mechanismus zum Freigeben und Handhaben von zusätzlichen Architekturmerkmalen, deren Zustand sich in einem oder mehreren Kontextzustandsspeicherbereichssegmenten widerspiegelt. Speziell wird mindestens ein Architekturmerkmal beschrieben, das zur Überwachung verschiedener Leistungsaspekte eines Prozessors gehört, die verschiedene Kontextzustandsmanagementmerkmale und -verfahren verwenden, welche hierin beschrieben werden.

Ferner kann mindestens eine Ausführungsform der Erfindung eine modulare Architektur umfassen, so daß eine erweiterte Zahl von Kontextzustandsschutzbereichssegmenten implementiert werden kann, um Kontextzustandsinformationen zu speichern, die sich auf andere Merkmale des Prozessors beziehen. Außerdem kann in einer Ausführungsform die erweiterte Zahl von Kontextzustandsschutzbereichssegmenten und entsprechenden Kontextzustandsinformationen in einer Weise einbezogen werden, die für ein Betriebssystem, das vom Prozessor ausgeführt wird, transparent ist. Mit anderen Worten, mindestens eine Ausführungsform umfaßt Kontextzustandsmanagementverfahren, die nicht notwendigerweise eine Modifizierung oder sogar eine Meldung an ein Betriebssystem beinhalten, das auf einem Prozessor ausgeführt wird, in der die Ausführungsformen der Erfindung verwendet werden.

1 illustriert einen Speicher- bzw. Schutzbereich, einschließlich der Speicher- bzw. Schutzbereichssegmente gemäß einer Ausführungsform der Erfindung. Der Schutzbereich 100 ist insbesondere ein 512-Byte-Puffer, der in eine Anzahl „n" von Segmenten unterteilt ist. In der Ausführungsform, die in 1 illustriert ist, hat jedes Segment 512/n Bytes, kann aber in anderen Ausführungsformen größer oder kleiner sein, je nach der Größe des Speicherbereichs und der Zahl der Segmente. Jedes Segment, das in 1 illustriert ist, kann eine andere Art von Kontextzustandsinformationen speichern; Beispiele dafür werden weiter unten diskutiert. In einer Ausführungsform kann der Schutzbereich 100 einen Kopfbereich 105 umfassen, der einen In-Gebrauch-Bitvektor enthält, um die Statusinformationen für jedes der Segmente anzugeben.

In einer Ausführungsform repräsentieren die Speicher- bzw. Schutzbereichssegmente die kleinste Körnigkeit der Speicherung in einem Schutzbereich, in dem Kontextzustandsinformationen gespeichert, initialisiert und rückgeführt werden können. In mindestens einer Ausführungsform können die Schutzbereichssegmente unabhängig voneinander initialisiert, verwendet und gehandhabt werden. Da ferner neue Architekturmerkmale, die zusätzlichen Kontextzustand erfordern, zu einem Prozessor hinzugefügt werden können, dem der Schutzbereich von 1 entspricht, können neue Schutzbereichssegmente dementsprechend hinzugefügt werden. In einigen Ausführungsformen jedoch kann ein einzelnes Schutzbereichssegment Kontextzustandsinformationen enthalten, die mit einem oder mehreren Merkmalen verknüpft sind, einschließlich der hinzugefügten Merkmale.

Ein Schutzbereichssegment kann auch auf einen Anfangszustand umgespeichert bzw. zurückgesetzt werden, ohne den Zustand anderer Segmente zu beeinträchtigen, wie zum Beispiel ein Fehlerbehandlungsverfahren während der Umspeicher- bzw. Rückführungsoperation. Wenn zum Beispiel in einer Ausführungsform eine Rückführungsoperation ausgeführt wird, wird der gesamte Prozessorkontextzustand, der nicht durch die Rückführungsoperation aktualisiert wurde, auf einen initialisierten Zustand gesetzt. Der initialisierte Prozessorkontextzustand kann dann zurück in seine entsprechenden Speicherbereichssegmente zurückgespeichert werden.

Zahlreiche Beispiele von Verwendungen für die Schutzbereichssegmente, die in 1 illustriert sind, können je nach den Anforderungen des Computersystems realisiert werden, in dem sie verwendet werden. In einer Ausführungsform der Erfindung kann man das Speichern und die Rückführung von Kontextzustand in bzw. aus Speicherbereichssegmenten vermeiden, der sich in einem initialisierten Zustand befindet, indem sichergestellt wird, daß der Kontextzustand zwischen einer Kontextspeicherungsoperation und einer Kontextrückführungsoperation, oder wenn der Prozessor rückgesetzt wird, in einen initialisierten Zustand versetzt wird.

2 illustriert zum Beispiel den Arbeitsgang der Verwendung von mindestens einem Schutzbereichssegment zum Speichern von Informationen zur Anzeige, wenn entsprechende Kontextzustandsinformationen („Statuselement") in Gebrauch oder ansonsten gültig sind. Insbesondere illustriert 2 drei verschiedene Kontextzustände innerhalb von drei Kontextzustandsbereichssegmenten 210, 203, 205, die im Schutzbereich 200 gespeichert sind, und ihre Rückführung in den Maschinenzustand 210 als Funktion der Zeit. Mit Bezug auf 2 wird ein initialisierter Kontextzustand durch ein „I" in den Instanzen des Hauptmaschinenkontextzustandes 210 angegeben, der in 2 illustriert wird, während eine Kontextzustandsinstanz, die in Gebrauch ist, durch ein „U" angezeigt wird.

Zum Zeitbeispiel „1" befindet sich der Maschinenkontextzustand in einem initialisierten Zustand, was durch ein „I" angezeigt wird, während zum Zeitbeispiel „ 2" der Maschinenkontext über Befehle, die in einem Prozessor nach einem ersten Kontextzustand ausgeführt werden, modifiziert wird, was durch ein „U" angezeigt wird. Zum Zeitbeispiel „ 3" wird der erste Kontextzustand im Kontextzustandsbereichsegment 201 gespeichert, und der entsprechende Maschinenkontextzustand wird wieder, zum Zeitbeispiel „4", initialisiert oder „geleert", was durch ein „I" angezeigt wird. Zum Zeitbeispiel „5" wird ein zweiter Kontextzustand aus dem Schutzbereichssegment 203 in den Maschinenzustand zurückgeführt, und der Maschinenzustand ist wieder in Gebrauch, was durch ein „U" angezeigt wird. Der Maschinenzustand wird zum Zeitbeispiel „6" wieder über Befehle, die im Prozessor ausgeführt werden, modifiziert und zum Zeitbeispiel „7" wird der Maschinenzustand im Kontextspeicherbereichssegment 203 gespeichert. Zum Zeitbeispiel „8" wird der Maschinenkontextzustand wieder mit einem Anfangszustandswert initialisiert, und der Maschinenkontextzustand zum Zeitbeispiel „8" wird als nicht verwendet gekennzeichnet. Analog wird eine Nullrückführung des Kontextzustandes, der im Schutzbereichssegment 205 gespeichert ist, zum Zeitbeispiel „9" ausgeführt, was den Maschinenzustand ohne neue Statusinformationen aktualisiert. Zum Zeitbeispiel „10" aktualisiert der Prozessor den Maschinenkontextzustand nicht mit neuen Informationen, also wird zum Zeitpunkt „11" eine Nullspeicherung ausgeführt, um den Maschinenkontextzustand (der ein initialisierter Zustand ist) zurück in das Schutzbereichssegment 205 zu speichern.

In einer Ausführungsform der Erfindung können Nullspeicheroperationen (d.h. diejenigen Operationen, die einen nicht verwendeten, initialisierten oder anderweitig ungültigen Maschinenkontext in einem Speicherbereichssegment speichern) und/oder Nullrückführungsoperationen (d.h. diejenigen Operationen, die einen nicht verwendeten, initialisierten oder anderweitig ungültigen Maschinenkontext aus einem Speicherbereichssegment in den Maschinenzustand zurückführen) ersetzt werden, indem der Zustand eines „In-Gebrauch"-Bits oder von Bits, die dem Kontextzustand entsprechen, der gerade gespeichert oder zurückgeführt wird, festgestellt wird. In einer Ausführungsform zum Beispiel wird ein In-Gebrauch-Bitvektor innerhalb des Speicherbereichs gehalten, um anzuzeigen, ob die Kontextzustandsinformationen innerhalb eines oder mehrerer Schutzbereichssegmente Informationen enthalten, die nicht verwendet werden oder anderweitig ungültig sind, damit der Kontextzustand nicht aus dem/n Schutzbereichssegment(en) in den Maschinenzustand ausgelesen werden muß, wenn der Kontextzustand unbenutzt oder anderweitig ungültig ist.

Analog kann ein In-Gebrauch-Bitvektor in Verbindung mit dem Maschinenzustand innerhalb des Prozessors gehalten werden, um anzuzeigen, ob die Kontextzustandsinformationen innerhalb des Maschinenzustandes unbenutzt oder anderweitig ungültig sind, damit der Kontextzustand nicht im/n Schutzbereichssegment(en) aus dem Maschinenzustand gespeichert werden muß, wenn der Kontextzustand unbenutzt oder anderweitig ungültig ist. In einigen Ausführungsformen kann ein In-Gebrauch-Bitvektor sowohl für die Speicherbereichssegmente als auch für den Maschinenzustand gehalten werden, während in anderen Ausführungsformen ein In-Gebrauch-Bitvektor entweder für ein Schutzbereichssegment oder für den Maschinenzustand oder für beide gehalten werden kann.

In einer Ausführungsform können ein oder mehrere Befehle zum Aktualisieren des/der In-Gebrauch-Bitvektor(s/en) verwendet werden, um anzuzeigen, ob Kontextzustandsinformationen, die einem bestimmten Schutzbereichssegment entsprechen, in Gebrauch sind. In einer Ausführungsform kann zum Beispiel ein Befehl (z.B. „STMXCSR" in einer Befehlssatzarchitektur) von einem Prozessor so ausgeführt werden, daß der/die Bitvektoren) gesetzt werden, um anzuzeigen, daß die Zustandsinformationen, die einem oder mehreren Schutzbereichssegmenten entsprechen, gegenwärtig in Gebrauch sind oder daß das Schutzbereichssegment ansonsten gültige Daten enthält.

3 illustriert die Betriebsweise einer Ausführungsform, bei der ein In-Gebrauch-Bitvektor für die Schutzbereichssegmente und für den Maschinenzustand gehalten wird. 3 ist 2 ähnlich, außer daß der Speicher- bzw. Schutzbereich einen In-Gebrauch-Bitvektor 320 umfaßt, der eine Reihe von Einträgen gleich der Zahl von Speicherbereichssegmenten aufweist. In einer Ausführungsform enthält jeder In-Gebrauch-Bitvektor 320 ein Bit, das anzeigt, ob ein entsprechendes Schutzbereichssegment Informationen enthält, die gültig sind, oder ob es ungültige Informationen enthält, wie zum Beispiel wenn das Segment initialisiert wird. Analog wird ein In-Gebrauch-Bitvektor 325 für den Maschinenzustand geführt, der anzeigt, ob ein Maschinenzustand, der einem bestimmten Schutzbereichssegment entspricht, gültige Informationen enthält oder ob der Maschinenzustand, der einem bestimmten Schutzbereichssegment entspricht, ungültig ist, wie zum Beispiel wenn der Maschinenzustand in einen Initialisierungszustand versetzt wurde.

In der Ausführungsform, die in 3 illustriert wird, sind Nullspeicherungs- und Nullrückführungsoperationen nicht notwendig, da ein Programm oder eine Logik zuerst feststellen kann, ob die Zustandsinformationen gültig oder ungültig sind, bevor die Nullspeicherungs- und Nullrückführungsoperation ausgeführt wird. Wenn die Nullspeicherungs- und Nullrückführungsoperation den Zustandsinformationen, die ungültig sind, entspricht, braucht keine Nullspeicherungs- und Nullrückführungsoperation ausgeführt zu werden, was in einer Ausführungsform Verarbeitungszyklen spart.

In einer Ausführungsform der Erfindung werden Kontextzustandsinformationen in Schutzbereichssegmenten gespeichert bzw. daraus rückgeführt, wenn verschiedene Ereignisse oder „Szenarios" innerhalb eines Mikroprozessors überwacht werden. In einer Ausführungsform zum Beispiel wird der Maschinenzustand in szenario-spezifischen Gruppen oder „Kanälen" gehalten. Kanäle können Konfigurationsinformationen enthalten, einschließlich der Zustände, die innerhalb eines Prozessors zu überwachen sind („Trigger"-Zustände), und der Aktionen, die als Reaktion darauf zu ergreifen sind, wie zum Beispiel die asynchrone Übertragung der Kontrolle auf eine bestimmte Befehlsadresse innerhalb eines Software-Threads. Ferner kann in einer Ausführungsform ein Kanal gültig oder nicht gültig sein, und wenn ein Kanal nicht gültig ist, kann dieser Kanal gespeichert oder rückgeführt werden oder nicht.

In einer Ausführungsform werden Kanalinformationen durch die Ausführung eines Befehls programmiert, die Eingaben verwenden kann, welche in Registern gespeichert sind, wie zum Beispiel 32- oder 64-Bit-Registernn. Zusätzlich zu den Kanalinformationen können Kontextzustandsinformationen auch Header-Informationen umfassen, die für einen oder mehrere Kanäle gelten. Das Folgende illustriert Kontextzustandsinformationen für zwei Kanäle und entsprechende Header-Informationen gemäß einer Ausführungsform, die in einem Speicherbereichssegment gespeichert oder zum Prozessorkontextzustand rückgeführt werden können:

Die 88-Byte-Kontextzustandsinformationen, die in der obigen Tabelle illustriert werden, umfassen Header-Informationen in den Bits 0-7, die für zwei Kanäle relevant sind, deren Kontextzustandsinformationen sich in den Bits 32-63 bzw. 64-95 befinden. In einer Ausführungsform können zusätzlich zu anderen Informationen die Header-Informationen ein In-Gebrauch-Bit für jeden Kanal umfassen. Außerdem umfassen die obigen Kontextzustandsinformationen einen Befehlszeiger in den Bits 8-15 und ein reserviertes Feld in den Bits 16-31.

In einigen Ausführungsformen kann jedes Schutzbereichssegment einen entsprechenden Gültigkeitsindikator haben, um anzuzeigen, ob falsche Daten im entsprechenden Schutzbereichssegment gespeichert sind, damit verschiedene Aktionen als Reaktion darauf ergriffen werden können. In einer Ausführungsform zum Beispiel kann als Reaktion auf das Feststellen eines Fehlers innerhalb eines Schutzbereichssegmentes Software, Hardwarelogik oder eine Kombination derselben einen Algorithmus implementieren, um verschiedene Operationen auszuführen, einschließlich einer oder mehrerer der folgenden: 1) Initialisieren des Schutzbereichssegments, das den Fehler enthält, 2) Initialisieren der Prozessorzustandsinformationen, die einigen oder allen Schutzbereichssegmenten entsprechen. Ferner kann in einer Ausführungsform der Prozessorzustand als Reaktion auf das Feststellen eines Bereichs innerhalb des Kontextzustands-Headerfeldes oder eines anderen Feldes außer dem Schutzbereichssegment initialisiert werden.

Ein Fehler kann in einer Ausführungsform festgestellt werden, wenn ein Speicherbereichssegment in den Prozessorzustand rückgeführt wird. Als Reaktion auf die Feststellung des Fehlers können die In-Gebrauch-Bits anzeigen, daß das Segment ungültig ist, und daher werden die In-Gebrauch-Bits anschließend geleert, wenn das Segment in der Speichereinrichtung gespeichert wird. Es kann daher in einer Ausführungsform aus Sicht eines Beobachters der In-Gebrauch-Bits nicht unterscheidbar sein, ob das Segment wegen eines Fehlers oder auf Grund fehlender Initialisierung ungültig ist.

In einer Ausführungsform wird ein In-Gebrauch-Bitvektor verwendet, um die Gültigkeit von Zustandsinformationen anzuzeigen, die in jedem Schutzbereichssegment gespeichert sind. Zum Beispiel können in dem Fall, bei dem jedes Schutzbereichssegment einem bestimmten Überwachungskanal entspricht, wie in der Tabelle oben diskutiert, die Header-Informationen einen In-Gebrauch-Bitvektor enthalten, dessen Bits jeweils die Gültigkeit eines entsprechenden Satzes von Kanalinformationen anzeigen, die in einem Schutzbereichssegment gespeichert sind. Die Anzeige, ob ein Schutzbereichssegment einen Fehler enthält, kann der Software oder der Prozessorhardware helfen festzulegen, ob die Kontextzustandsinformationen, die darin enthalten sind, rückgeführt und anschließend verwendet werden sollen.

4 ist ein Flußdiagramm, das verschiedene Operationen illustriert, die gemäß einer Ausführungsform der Erfindung ausgeführt werden können, wenn Fehler angezeigt und in einem Schutzbereichssegment festgestellt werden. Bei Operation 401 wird ein Fehler, der innerhalb eines Speicherbereichssegments auftritt, durch ein entsprechendes Bit innerhalb des In-Gebrauch-Bitvektors angezeigt. In einer Ausführungsform kann der In-Gebrauch-Bitvektor innerhalb eines Headerfeldes eines Schutzbereichs liegen, der einer Reihe von Ereignisüberwachungskanälen entspricht. In anderen Ausführungsformen kann der In-Gebrauch-Bitvektor zusammen mit Speicherbereichssegmenten gespeichert werden, die verschiedenen Software-Threads entsprechen.

Bei Operation 405 werden die In-Gebrauch-Bits festgestellt, bevor Kontextzustandsinformationen aus einem Schutzbereichssegment in den Maschinenzustand rückgeführt werden. Wenn bei Operation 410 in einem Schutzbereichssegment ein Fehler festgestellt wird, dann werden bei Operation 415 die Kontextzustandsinformationen, die innerhalb des/der Schutzbereichssegments(e) gespeichert sind, welche den/die Fehler enthalten, nicht in den Maschinenzustand rückgeführt. Anderenfalls werden bei Operation 420 die Kontextzustandsinformationen, die innerhalb des/der Schutzbereichssegments(e) gespeichert sind, für die das/die In-Gebrauch-Bits) festgestellt werden, in den Maschinenzustand rückgeführt. In einer Ausführungsforem können die In-Gebrauch-Bits mit einem Maskenfeld verglichen werden, um Fehler innerhalb der entsprechenden Schutzbereichssegmente festzustellen, während in anderen Ausführungsformen andere Feststellungsverfahren verwendet werden können.

In einigen Ausführungsformen können die Speicher-, Rückführungs- und/oder Initialisierungsoperationen (z.B. Befehle) ein Maskenfeld verwenden, um den Inhalt der Schutzbereichssegmente zu modifizieren oder zu lesen. In einer Ausführungsform zum Beispiel kann ein Maskenfeld, dessen Einträge den In-Gebrauch-Bitvektoreinträgen entsprechen, ein Operand von booleschen logischen Operationen sein (z.B. XOR, AND, OR), deren Ergebnis den Zustand des In-Gebrauch-Bitvektors und daher die Gültigkeit der verschiedenen Segmente bestimmt.

5 illustriert ein Computersystem mit frontseitigem Bus (FSB), bei dem eine Ausführungsform der Erfindung verwendet werden kann. Ein Prozessor 505 greift auf Daten von einem L1-Cachespeicher 510 und Hauptspeicher 515 zu. In anderen Ausführungsformen der Erfindung kann der Cachespeicher ein L2-Cache oder ein anderer Speicher innerhalb der Speicherhierarchie eines Computersystems sein. Außerdem kann in einigen Ausführungsformen das Computersystem von 5 sowohl einen L1-Cache als auch einen L2-Cache umfassen.

Im Prozessor von 5 wird ein Speicherbereich 506 für den Maschinenzustand illustriert. In einer Ausführungsform kann der Speicherbereich ein Satz von Registern sein, während in anderen Ausführungsformen der Speicherbereich in Form von anderen Speicherstrukturen vorliegen kann. In Figur wird auch gemäß einer Ausführungsform ein Speicherbereich 507 für Schutzbereichssegmente illustriert. In anderen Ausführungsformen können die Schutzbereichssegmente in anderen Geräten oder Speicherstrukturen liegen. Der Prozessor kann eine Reihe von Verarbeitungskernen haben. Andere Ausführungsformen der Erfindung können jedoch in anderen Geräten innerhalb des Systems, wie zum Beispiel einem separaten Busagenten, oder über das System verteilt in Hardware, Software oder einer Kombination derselben implementiert werden.

Der Hauptspeicher kann in verschiedenen Speicherquellen implementiert werden, wie zum Beispiel in dynamischem Direktzugriffsspeicher (DRAM), einem Festplattenlaufwerk (HDD) 520 oder einer Speicherquelle, die sich fern vom Computersystem befindet, über eine Netzschnittstelle 530, die verschiedene Speichergeräte und -technologien umfaßt. Der Cachespeicher kann sich entweder innerhalb des Prozessors oder in nächster Nähe zum Prozessor befinden, wie zum Beispiel im lokalen Bus 507 des Prozessors.

Ferner kann der Cachespeicher relativ schnelle Speicherzellen enthalten, wie zum Beispiel eine Sechs-Transistor(6T)-Zelle oder eine andere Speicherzelle mit etwa gleicher oder schnellerer Zugriffsgeschwindigkeit. Das Computersystem von 5 kann ein fest geschaltetes Verbindungsnetz (PtP-Netz) von Busagenten sein, wie zum Beispiel Mikroprozessoren, die über Bussignale kommunizieren, welche für jeden einzelnen Agenten im PtP-Netz reserviert sind. 6 illustriert ein Computersystem, das in einer Punkt-zu-Punkt(PtP)-Konfiguration angeordnet ist. Insbesondere zeigt 6 ein System, in dem Prozessoren, Speicher und Eingabe/Ausgabeeinrichtungen miteinander durch eine Reihe von Punkt-zu-Punkt-Schnittstellen verbunden sind.

Das System von 6 kann auch mehrere Prozessoren umfassen, von denen aus Gründen der Übersichtlichkeit nur zwei Prozessoren 670, 680 gezeigt werden. Die Prozessoren 670, 680 können jeweils einen lokalen Speichercontrollerhub (MCH) 672, 682 für die Verwindung mit dem Speicher 22, 24 umfassen. Die Prozessoren 670, 680 können Daten über eine Punkt-zu-Punkt-Schnittstelle 650 unter Verwendung der PtP-Schnittstellenschaltkreise 678, 688 austauschen. Die Prozessoren 670, 680 können Daten mit einem Chipset über individuelle PtP-Schnittstellen 652, 654 unter Verwendung der Punkt-zu-Punkt-Schnittstellenschaltkreise 679, 694, 686, 698 austauschen. Das Chipset 690 kann auch Daten mit einem Hochleistungsgrafikschalkreis 638 über eine Hochleistungsgrafikschnittstelle 639 austauschen. Ausführungsformen der Erfindung können sich innerhalb eines Prozessors, der eine Reihe von Verarbeitungskernen besitzt, oder in jedem der PtP-Busagenten von 6 befinden.

Andere Ausführungsformen der Erfindung können jedoch in anderen Schaltkreisen, Logikeinheiten oder Einrichtungen innerhalb des Systems von 6 vorhanden sein. Ferner können in anderen Ausführungsformen der Erfindung mehrere Schaltkreise, Logikeinheiten oder Einrichtungen verteilt sein, die in 6 illustriert werden.

Verschiedene Erscheinungsformen von Ausführungsformen der Erfindung können unter Verwendung ergänzender Metall-Oxid-Halbleiter(CMOS)-Schaltkreise und Logikgeräte (Hardware) implementiert werden, während andere Erscheinungsformen unter Verwendung von Befehlen implementiert werden können, die auf einem maschinenlesbaren Medium (Software) gespeichert sind, die bei Ausführung durch einen Prozessor bewirken, daß der Prozessor ein Verfahren zur Realisierung von Ausführungsformen der Erfindung ausführt. Ferner können einige Ausführungsformen der Erfindung nur in Hardware implementiert werden, während andere Ausführungsform nur in Software ausgeführt werden.

Obwohl die Erfindung mit Bezug auf erläuternde Ausführungsformen beschrieben wurde, soll diese Beschreibung nicht in einem einschränkenden Sinne ausgelegt werden. Verschiedene Modifizierungen der erläuternden Ausführungsformen sowie andere Ausführungsformen, die Fachleuten auf dem Gebiet, zu dem die Erfindung gehört, erkennbar sind, werden als im Geist und Umfang der Erfindung liegend angesehen.


Anspruch[de]
Vorrichtung, die umfaßt:

einen Schutzbereich mit mehreren Segmenten, zum Speichern mehrerer Prozessor-Kontextzustandsinformationen, wobei die Kontextzustandsinformationen, die in jedem der mehreren Segmente gespeichert sind, unabhängig von anderen Kontextzustandsinformationen, die in anderen der mehreren Segmente gespeichert sind, zu einem Prozessorkontextzustand umgespeiehert werden können.
Vorrichtung nach Anspruch 1, wobei der Schutzbereich ferner einen In-Gebrauch-Bitvektor umfaßt. Vorrichtung nach Anspruch 2, wobei jeder Eintrag des In-Gebrauch-Bitvektors so ausgelegt ist, daß er anzeigt, ob die Informationen, die in einem entsprechenden Segment gespeichert sind, als Prozessorkontextzustand verwendet werden sollen. Vorrichtung nach Anspruch 2, wobei jeder Eintrag des In-Gebrauch-Bitvektors so ausgelegt ist, daß er anzeigt, ob die Informationen, die in einem entsprechenden Segment gespeichert sind, gültige Informationen sind. Vorrichtung nach Anspruch 2, wobei jeder Eintrag des In-Gebrauch-Bitvektors so ausgelegt ist, daß er anzeigt, ob die Informationen, die in einem entsprechenden Segment gespeichert sind, in Gebrauch sind. Vorrichtung nach Anspruch 1, wobei die Kontextzustandsinformationen, die in jedem der mehreren Segmente gespeichert sind, in einem Segment gespeichert werden können, unabhängig von der Speicherung anderer Kontextzustandsinformationen in den anderen der mehreren Segmente. Vorrichtung nach Anspruch 5, wobei, wenn ein Fehler von einem der Einträge des In-Gebrauch-Bitvektors angezeigt wird, Kontextzustandsinformationen, die in einem Segment gespeichert sind, auf das sich der Fehler bezieht, nicht in den Maschinenkontextzustand des Prozessors umgespeichert werden sollen. Vorrichtung nach Anspruch 2, wobei ein Zustand des In-Gebrauch-Bitvektors kontrolliert werden soll, bevor die Kontextzustandsinformationen in den mehreren Segmenten zum Maschinenkontextzustand des Prozessors umgespeichert werden. Verfahren, das umfaßt:

Prüfen eines In-Gebrauch-Bitvektors, der mehrere Einträge umfaßt, die mehreren Schutzbereichssegmenten entsprechen; Bestimmen, ob ein Eintrag innerhalb eines In-Gebrauch-Bitvektors in einem ersten Zustand oder einem zweiten Zustand ist;

Umspeichern von Kontextzustandsinformationen in einem der mehreren Segmente, auf das sich der Eintrag bezieht, zum Maschinenkontextzustand des Prozessors nur dann, wenn der Eintrag im ersten Zustand ist;

Ignorieren der Kontextzustandsinformationen in einem der mehreren Segmente, auf das sich der Eintrag bezieht, wenn der Eintrag im zweiten Zustand ist.
Verfahren nach Anspruch 9, wobei der Eintrag anzeigt, ob die entsprechenden Kontextzustandsinformationen in einem der mehreren Segmente gültig sind. Verfahren nach Anspruch 9, das ferner ein Bestimmen umfaßt, ob die entsprechenden Kontextzustandsinformationen in einem der mehreren Segmente fehlerhaft sind, und wem dies der Fall ist, Ausführen von einer oder allen einer Gruppe von Operationen, bestehend aus: Initialisieren eines der mehreren Segmente, das einen Fehler enthält, Initialisieen der Prozessorzustandsinformationen, die einem oder allen der mehreren Segmente, die einen Fehler enthalten, entsprechen, Initialisieren der Header-Informationen, die einem oder mehreren der mehreren Segmente entsprechen, die einen Fehler enthalten. Verfahren nach Anspruch 9, das ferner ein Versetzen der Kontextzustandsinformationen in einem der mehreren Segmente, auf das sich der Eintrag bezieht, in einen initialisierten Zustand umfaßt, wenn der Eintrag sich im zweiten Zustand befindet. Verfahren nach Anspruch 9, wobei der In-Gebrauch-Bitvektor kontrolliert wird, bevor Kontextzustandsinformationen in den mehreren Segmenten in den Maschinenzustand des Prozessors umgespeichert werden. Verfahren nach Anspruch 9, wobei der In-Gebrauch-Bitvektor durch Vergleichen der Einträge darin mit einem Bitmaskenfeld kontrolliert wird. Verfahren nach Anspruch 9, das ferner ein Kontrollieren eines zweiten In-Gebrauch-Bitvektors vor dem Speichern des Maschinenzustandes des Prozessors in einem der mehreren Segmente umfaßt. Verfahren nach Anspruch 15, wobei der Maschinenzustand des Prozessors in einem der mehreren Segmente nur dann gespeichert wird, wenn ein Eintrag des zweiten In-Gebrauch-Bitvektors anzeigt, daß der Maschinenzustand gültig ist. Verfahren nach Anspruch 15, wobei der Maschinenzustand des Prozessors in einem der mehreren Segmente nur dann gespeichert wird, wenn ein Eintrag des zweiten In-Gebrauch-Bitvektors anzeigt, daß der Maschinenzustand nicht ungültig ist. System, das umfaßt:

einen Prozessor zum Speichern mehrerer Maschinenzustandsinformationen und eines ersten In-Gebrauch-Bitvektor, dessen Einträge jeweils einem der mehreren Maschinenzustandsinformationen entsprechen;

eine Speichereinrichtung zum Speichern eines Schutzbereichs, der mehrere Segmente umfaßt, um die mehreren Prozessormaschinenzustandsinformationen und einen zweiten In-Gebrauch-Bitvektor zu speichern, dessen Einträge jeweils einem der mehreren Segmente entsprechen.
System nach Anspruch 18, wobei die Maschinenzustandsinformationen Kanalzustandsinformationen entsprechen, die Triggerinformationen umfassen, um Zustände anzuzeigen, bei denen verschiedene Aspekte des Betriebs des Prozessors überwacht werden sollen. System nach Anspruch 18, wobei jeder Eintrag des zweiten In-Gebrauch-Bitvektors so ausgelegt ist, daß er anzeigt, ob Informationen, die in einem entsprechenden Segment gespeichert sind, als Maschinenkontextzustand für den Prozessor verwendet werden sollen. System nach Anspruch 18, wobei jeder Eintrag des zweiten In-Gebrauch-Bitvektors so ausgelegt ist, daß er anzeigt, ob Informationen, die in einem entsprechenden Segment gespeichert sind, gültige Informationen sind. System nach Anspruch 18, wobei jeder Eintrag des zweiten In-Gebrauch-Bitvektors so ausgelegt ist, daß er anzeigt, ob Informationen, die in einem entsprechenden Segment gespeichert sind, einen Fehler enthalten. System nach Anspruch 18, wobei Maschinenzustandsinformationen, die in jedem der mehreren Segmente gespeichert sind, in einem Segment gespeichert werden können, unabhängig von der Speicherung anderer Maschinenzustandsinformationen in den anderen der mehreren Segmente. System nach Anspruch 22, wobei, wenn ein Fehler von einem der Einträge des zweiten In-Gebrauch-Bitvektors angezeigt wird, Maschinenzustandsinformationen, die in einem Segment, auf das sich der Fehler bezieht, gespeichert sind, nicht in den Maschinenkontextzustand des Prozessors umgespeichert werden sollen. System nach Anspruch 18, wobei ein Zustand des ersten oder zweiten In-Gebrauch-Bitvektors vor dem Speichern oder dem Umspeichern von Maschinenzustandsinformationen innerhalb der mehreren Segmente aus dem bzw. in den Maschinenkontextzustand des Prozessors kontrolliert werden soll. Prozessor, der umfaßt:

mehrere Kanalinformationen mit Triggerzuständen, in denen ein Aspekt des Betriebs des Prozessors überwacht werden soll, und worin die Kanalinformationen ein Headerfeld umfassen, um mehrere der In-Gebrauch-Bits, die den mehreren Kanalinformationen entsprechen, zu speichern, wobei die In-Gebrauch-Bits, so ausgelegt sind, daß sie anzeigen, ob die mehreren Kanalinformationen in mehreren der Speicherbereichssegmente gespeichert werden wollen.
Prozessor nach Anspruch 26, wobei eine der mehreren Kanalinformationen in einem der mehreren Speicherbereichssegmente nur dann gespeichert werden soll, wenn das In-Gebrauch-Bit, dem eine der mehreren Kanalinformationen entspricht, anzeigt, daß die eine der mehreren Kanalinformationen gültig ist. Prozessor nach Anspruch 26, wobei eine der mehreren Kanalinformationen in einem der mehreren Speicherbereichssegmente nur dann gespeichert werden soll, wenn das In-Gebrauch-Bit, dem die eine der mehreren Kanalinformationen entspricht, anzeigt, daß die eine der mehreren Kanalinformationen keine Fehler enthält. Prozessor nach Anspruch 27, wobei die eine der mehreren Kanalinformationen, wenn sie ungültig ist, in einen initialisierten Zustand versetzt werden soll. Prozessor nach Anspruch 27, wobei die eine der mehreren Kanalinformationen, wem sie einen Fehler enthält, in einen initialisierten Zustand versetzt werden soll.






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