-
GEGENSTAND DER ERFINDUNG
-
Die
vorliegende Erfindung bezieht sich im Allgemeinen auf das Gebiet
der Computerprozessoren, insbesondere auf einen Prozessor mit einem ersten
und einem zweiten Betriebsmodus.
-
BESCHREIBUNG DES STANDES DER
TECHNIK
-
Aus
Tricore 1, Volume 2, v. 1.3. Instruction Set. Edition 2005-02 Infineon
Technologies AG, 2005, ist ein Prozessor bekannt, der bei einem
Return From Exception in einem Puffer gespeicherte Registerwerte
zurückliest.
-
In
moderneren Computersystemen werden Prozessoren verwendet, die mehrere
Befehle aufweisen. Der Prozessor liest Befehle und Daten aus einem
Systemspeicher, der mit dem Prozessor verbunden ist, und verändert die
Befehle und/oder Daten entsprechend der Befehle. Der Systemspeicher
kann flüchtige,
aber schnell lesbare Speichervorrichtungen, wie RAMs umfassen, sowie
langsame, aber nicht flüchtige
Speichervorrichtungen in Festplatten. Außerdem kann der Computer von
Vorrichtungen, wie etwa einer Tastatur, einer Maus und/oder einer Netzwerkverbindung
Eingaben empfangen und Ausgaben an Vorrichtungen, wie beispielsweise
einen Monitor, einen oder mehrere Lautsprecher und/oder einen Drucker
ausgeben. In den meisten Computersystemen wird ein spezielles Computerprogramm, das
als „Betriebssystem” bezeichnet
wird, verwendet, um die Verarbeitung verschiedener Programme, sowie
die Übertragung
von Daten zwischen den Komponenten des Computersystems zu steuern.
-
1a zeigt
ein schematisches Blockdiagramm eines Computersystems 100 nach
dem Stand der Technik. Das Computersystem 100 umfasst einen
Prozessor 101, einen Systemspeicher 104 und eine
oder mehrere Eingabe-/Ausgabevorrichtungen 103. Pfeile 102 bezeichnen
schematisch die Übertragung
von Daten zwischen dem Prozessor 101, dem Systemspeicher 104 und
der Eingabe-/Ausgabevorrichtung 103.
-
Der
Prozessor 101 umfasst mehrere Register 102, 103, 104, 105.
Daten können
aus dem Systemspeicher 104 in die Register 102–105 gelesen werden
und Daten in den Registern 102–105 können in
den Systemspeicher 104 geschrieben werden. Der Prozessor 101 kann
Befehle aufweisen, die dafür ausgelegt
sind, den Inhalt der Register 102–105 zu verändern, sowie
Befehle und Daten zwischen den Registern 102–105 und
dem Systemspeicher 104 und/oder zwischen den Registern 102–105 zu übertragen.
Außerdem
können
Befehle bereitgestellt werden, die eine Kombination solcher Aufgaben
ausführen. Üblicherweise kann
der Prozessor 101 auf Daten in den Registern 102–105 wesentlich
schneller zugreifen als auf Daten, die in dem Systemspeicher 104 gespeichert
sind.
-
Um
die Leistungsfähigkeit
des Computersystems 100 zu erhöhen, kann es somit wünschenswert sein,
die Anzahl der Register des Prozesses 101 zu erhöhen. Insbesondere
kann das Media-Processing, wie in etwa eine 3D-Graphik wesentlich
von einer größeren Anzahl
der Register profitieren.
-
In
Computersystemen nach dem Stand der Technik kann eine Erhöhung der
Anzahl der Register oder jeder weitere zusätzliche Zustand des Prozesses 101 eine
Veränderung
des Betriebssystems erfordern, wie im Folgenden mit Bezug auf die 1b erläutert wird.
-
1b zeigt
ein schematisches Flussdiagramm eines Verarbeitungsvorgangs 201,
der auf dem Prozessor 101 in dem Computersystem 100 nach
dem Stand der Technik läuft.
Der Verarbeitungsvorgang 201 umfasst mehrere Befehle 210–215,
die durch den Prozessor 101 nacheinander abgearbeitet werden.
Somit geht der Prozessor 101 von dem Befehl 210 zu
dem Befehl 211, und von dem Befehl 211 zu dem
Befehl 212 weiter.
-
Während der
Verarbeitungsvorgang 201 abgearbeitet wird, kann z. B.
während
oder nach der Bearbeitung des Befehls 212 eine Unterbrechung oder
ein Ausnahmeereignis auftreten, wie in der 1b schematisch
durch einen Pfeil 230 angedeutet wird. Ein Ausnahmeereignis
kann im Falle eines Fehlers während
der Verarbeitung des Befehls 212 erzeugt werden, beispielsweise
im Falle einer Teilung durch Null oder im Falle einer Fehlermeldung
im Speichersystem 104, wie in etwa einen zweiten Zugriffsfehler.
Ausnahmeereignisse können
auch ordnungsgemäß durch
Befehle des Verarbeitungsvorgangs 201 erzeugt werden, beispielsweise
durch den Befehl 212. Eine typische Anwendung eines Ausnahmeereignisses,
die durch den Verarbeitungsvorgang 201 erzeugt wird, ist
ein Aufruf des Betriebssystems des Computersystems 100.
Unterbrechungen können
durch Ereignisse erzeugt werden, die von anderen Vorrichtungen als
dem Prozessor 101 stammen, beispielsweise durch eine Eingabe
in die Eingabe-/Ausgabevorrichtung 103 oder
durch eine Synchronisationsanforderung des Eingabe-/Ausgabevorrichtung 103.
Wenn in dem Computersystem 100 Multitasking durchgeführt wird,
können
Unterbrechungen, die durch einen Zeitschalter erzeugt werden, verwendet
werden, um die verschiedenen Verarbeitungsvorgänge, die Prozesse oder Threads
sein können,
abwechselnd zu aktivieren.
-
Im
Falle einer Unterbrechung oder eines Ausnahmeereignisses kann die
Verarbeitung des Verarbeitungsvorgangs 201 unterbrochen
und eine Unterbrechungsroutine 202, die beispielsweise
Teil des Betriebssystems sein kann, ausgeführt werden. Die Unterbrechungsroutine 202 umfasst
mehrere Befehle 220–225.
Diese Befehle werden nacheinander abgearbeitet. Nach der Verarbeitung
des letzten Befehls 225 der Unterbrechungsroutine 202,
wird die Verarbeitung des Verarbeitungsvorgangs 201 bei dem
Befehl fortgesetzt, der auf den Befehl 212 folgt, an dem
die Unterbrechung auftrat, d. h. in dem obigen Beispiel, beim Befehl 213.
-
Die
Unterbrechungsroutine 202 kann den Inhalt der Register 102–105 des
Prozessors 101 verändern.
Um sicherzustellen, dass der Verarbeitungsvorgang 201 trotz
der Unterbrechung oder des Ausnahmeereignisses richtig funktioniert,
wird nach dem Auftreten der Unterbrechung oder des Ausnahmeereignisses
der Inhalt der Register 102–105 zu einem Speicherort
in dem Systemspeicher 104 kopiert. Bevor die Ausführung des
Verarbeitungsvorgangs 201 fortgesetzt wird, wird der Inhalt
des Speicherorts zurück
in die Register 102–105 gelesen.
Wenn die Verarbeitung des Verarbeitungsvorgangs 201 durch
die Verarbeitung des Befehls 213 fortgesetzt wird, können somit
die Register 102–105 im
Wesentlichen dieselben Daten enthalten, als wenn der Befehl 213 unmittelbar
nach dem Befehl 212 ausgeführt worden wäre.
-
In
Computersystemen 100 nach dem Stand der Technik basiert
das Kopieren des Inhalts der Register zu dem Speicherort und zurück auf Befehle,
die in der Unterbrechungsroutine 202, die als Teil des Betriebssystems
des Computersystems 100 implementiert ist, bereitgestellt
sind. Falls in dem Computersystem 100 zusätzliche
Register bereitgestellt werden, können somit Veränderungen
des Betriebssystems erforderlich sein, um sicherzustellen, dass im
Falle einer Unterbrechung oder eines Ausnahmeereignisses der Inhalt
aller Register richtig in dem Systemspeicher gespeichert und nach
Beendigung der Unterbrechungsroutine zurück in die Register gelesen
wird. Wenn ein Hersteller eines Computerprozessors einen neuen Prozessor
erzeugt, der im Vergleich zu seinem Vorgänger erweiterte Strukturelemente
umfasst, können
derartige Strukturelemente bei der Verwendung zusätzlicher
Prozessorzustände,
d. h. zusätzlicher
Register, nicht in vernünftiger Weise
verwendet werden, bis Hersteller von Betriebssystemen Hilfsmittel
für die
hinzugefügten Strukturelemente
implementieren.
-
Es
ist deshalb eine Aufgabe der vorliegenden Erfindung einen Computerprozessor
mit einem zweiten Betriebsmodus bereitzustellen, wobei der zweite
Betriebsmodus verwendbar ist, ohne dass Änderungen eines Betriebssystems
notwendig sind, das nur Hilfsmittel für einen ersten Betriebsmodus des
Prozessors vorsieht.
-
ZUSAMMENFASSUNG DER ERFINDUNG
-
Erfindungsgemäß wird die
Aufgabe durch eine Prozessor gemäß Anspruch
1 gelöst.
-
Weiter
erfindungsgemäß wird die
Aufgabe durch ein Verfahren gemäß Anspruch
15 gelöst.
-
Ausgestaltungen
der Erfindung sind in den abhängigen
Patentansprüchen
definiert.
-
KURZE BESCHREIBUNG DER ZEICHNUNGEN
-
Weitere
Vorteile, Aufgaben und Ausführungsformen
der vorliegenden Erfindung sind in den beigefügten Patentansprüchen definiert
und werden anhand der ausführlichen
Beschreibung besser ersichtlich, wenn diese mit Bezug auf die beigefügten Zeichnungen
verwendet wird. Es zeigen:
-
1a eine
schematische Zeichnung eines Computersystems, das einen Prozessor
gemäß dem Stand
der Technik umfasst;
-
1b ein
schematisches Flussdiagramm eines Programms und einer Unterbrechungsroutine, die
auf einem Prozessor nach dem Stand der Technik ablaufen;
-
2a ein
schematisches Blockdiagramm eines Computersystems mit einem Prozessor
gemäß einer
Ausführungsform
der vorliegenden Erfindung;
-
2b ein
schematisches Flussdiagramm eines Programms und einer Unterbrechungsroutine, die
auf einem Prozessor gemäß einer
Ausführungsform
der vorliegenden Erfindung ablaufen;
-
3 ein
schematisches Blockdiagramm eines Computersystems mit einem Prozessor
gemäß einer
weiteren Ausführungsform
der vorliegenden Erfindung.
-
AUSFÜHRLICHE
BESCHREIBUNG
-
In
den Ausführungsformen
der vorliegenden Erfindung ist ein Prozessor für den Betrieb in einem ersten
Betriebsmodus sowie in einem zweiten Betriebsmodus bereitgestellt.
Der erste Betriebsmodus ist ein Kompatibilitätsmodus, in dem der Prozessor den
Funktionsumfang eines anderen Prozessors, insbesondere eines Vorgängermodells,
bereitstellt. Der zweite Betriebsmodus kann ein erweiterter Betriebsmodus
sein, in der ein zusätzlicher
Funktionsumfang bereitgestellt sein kann. Beispielsweise kann der
Prozessor in dem zweiten Betriebsmodus zusätzliche Befehle für eine effizientere
Bearbeitung einer dreidimensionalen Graphik bereitstellen, oder zusätzliche
Befehle für
eine effizientere Kooperation zwischen dem Prozessor und weiteren
Bauteilen des Computers, wie beispielsweise spezielle Support-Hardware, Coprozessoren,
oder zusätzliche
Allzweckprozessoren, die im Vergleich zum Hauptprozessor einen anderen
Typ umfassen, bereitstellen.
-
Der
Prozessor kann Daten, die bezeichnend für den Zustand des Prozessors
in dem zweiten Betriebsmodus sind, auf eine für das Betriebssystem transparente
Weise bearbeiten. Derartige Daten stellen Inhalte eines Registersatzes
des Prozessors, der nur in dem zweiten Betriebsmodus verwendet wird, dar,
und können
auch Daten aus einer mit dem Prozessor kooperierenden Vorrichtung,
wie beispielsweise den Inhalt von Registern einer speziellen Support-Hardware,
einer oder mehrerer Coprozessoren, und/oder zusätzlicher Mehrzweckprozessoren
des Computers umfassen.
-
Bei
jedem Auftreten einer Unterbrechung oder eines Ausnahmeereignisses,
während
sich der Prozessor in dem zweiten Betriebsmodus befindet, sichert
der Prozessor Daten, die bezeichnend für den Zustand des Prozessors
sind, die nicht in dem ersten Betriebsmodus verwendbar sind, wie
in etwa der Inhalt zusätzlicher
Register des Prozessors, oder Daten von einer mit dem Prozessor
kooperierenden Vorrichtung, in ein bereitgestelltes Systemspeichervolumen
(das im Nachfolgenden als „Pufferspeicher” bezeichnet
wird) und greift auf den ersten Betriebsmodus zu, bevor eine Unterbrechungsroutine
ausgeführt
wird. Zusätzlich
kann eine Rücksprungadresse, die
beispielsweise in einem der Register bereitgestellt ist, durch die
Adresse eines Lese-Sprungbefehls ersetzt werden, sodass nach Beendigung
der Unterbrechungsroutine zuerst der Lese-Sprungbefehl ausgeführt wird.
Die ursprüngliche
Rücksprungadresse
wird in dem Pufferspeicher gespeichert. Der Prozessor ist unabhängig von
dem Betriebssystem zum automatischen Ausführen die ser Schritte ausgebildet.
Somit wird die Unterbrechungsroutine in dem ersten Betriebsmodus
ausgeführt
und die Unterbrechungsroutine muss nicht angepasst werden, um den
Zustand des Prozessors bezeichnende Daten, die nicht in dem ersten
Betriebsmodus vorhanden sind, zu speichern, da dies automatisch
von dem Prozessor bewerkstelligt wird.
-
Nach
Beendigung der Unterbrechungsroutine wird der Lese-Sprungbefehl
ausgeführt.
Der Lese-Sprungbefehl liest die, den Zustand des Prozessors bezeichnenden
Daten, die nicht in dem ersten Betriebsmodus verwendet werden, sowie
die ursprüngliche
Rücksprungadresse
aus dem Pufferspeicher aus, stellt den Zustand des Prozessors vor
der Unterbrechung oder des Ausnahmeereignisses wieder her, schaltet
den Prozessor in den zweiten Betriebsmodus und beginnt mit der Ausführung der
Befehle in der ursprünglichen
Rücksprungadresse.
-
Somit
kann ein Verarbeitungsvorgang, der auf einem Computersystem läuft, in
dem der Prozessor gemäß der vorliegenden
Erfindung bereitgestellt ist, die Strukturelemente des zweiten Betriebsmodus verwenden,
während
jede beliebige Routine des Betriebssystems in dem ersten Betriebsmodus
ausgeführt
wird. Jegliche, sich auf den Zustand des Prozessors in dem zweiten
Betriebsmodus beziehenden Daten, die nicht in dem ersten Betriebsmodus
verwendet werden, wie beispielsweise der Inhalt zusätzlicher
Register, werden unabhängig
von dem Betriebssystem automatisch von dem Prozessor bearbeitet.
-
Der
zuvor beschriebene Funktionsumfang des Prozessors kann beispielsweise
durch eine dem Fachmann bekannte Mikroprogrammierung oder durch
speziell gestaltete Schaltungen bereitgestellt werden.
-
Weitere
Ausführungsformen
der vorliegenden Erfindung werden mit Bezug auf die 2a und 2b beschrieben.
-
Die 2a zeigt
ein schematisches Blockdiagramm eines Computersystems 300 mit
einem Prozessor 301 gemäß einer
Ausführungsform
der vorliegenden Erfindung. Zusätzlich
kann das Computersystem 300 einen Systemspeicher 304 und
Eingabe-/Ausgabevorrichtungen 303 umfassen. Pfeile 306 bezeichnen
schematisch die Übertragung
von Daten zwischen dem Prozessor 301, dem Systemspeicher 304 und
den Eingabe-/Ausgabevorrichtungen 303.
-
Der
Prozessor 301 umfasst mehrere erste Register 302–305 und
mehrere zweite Register 309–312. In den mehreren
ersten Registern können Variable
gespeichert sein, die bezeichnend für einen Zustand des Prozessors 301 in
einem ersten Betriebsmodus sind. Die Register 302–305 können den Registern 102–105 des
Prozessors 101 gemäß dem Stand
der Technik, wie zuvor mit Bezug auf die 1a und 1b beschrieben,
entsprechen, und können
ausgebildet sein, Variablen desselben Typs als die Register 102–105 des
Prozessors 101 zu speichern. Außerdem kann der Prozessor 301 ausgebildet
sein, in einem ersten Betriebsmodus eine Befehlssatz bereitzustellen,
der den Befehlssatz des Prozessors 101 gemäß dem Stand
der Technik umfasst. Somit kann der Prozessor 301 in dem
ersten Betriebsmodus gemäß der vorliegenden
Erfindung einen für
den Prozessor 101 vorgesehenen binären Code ausführen.
-
In
einigen Ausführungsformen
der vorliegenden Erfindung kann der Prozessor 301 in einem
ersten Betriebsmodus den Funktionsumfang eines Prozessors des Typs
x86 oder x86-64 bilden, der dem Fachmann gut bekannt ist. In weiteren
Ausführungsformen
kann der Prozessor 301 ausgebildet sein, in dem ersten
Betriebsmodus den Funktionsumfang eines weiteren dem Fachmann bekannten
Prozesstyps bereitzustellen.
-
Der
Prozessor 301 umfasst des Weiteren mehrere zweite Register 309–312.
In einem zweiten Betriebsmodus, der ein erweiterter Betriebsmodus sein
kann, in dem der Prozessor 301 Befehle, die nicht von dem
Prozessor 101 bereitgestellt werden, zusätzlich zu
dem durch den Prozessor 101 bereitgestellten Befehlen bereitstellt,
können
die mehreren zweiten Register 309–312 verwendet werden.
Beispielsweise kann der Prozessor 301 in dem zweiten Betriebsmodus
zusätzliche
Befehle bereitstellen, die eine effizientere Verarbeitung einer
dreidimensionalen Graphik ermöglichen,
und die mehreren zweiten Register 309–312 können verwendet
werden, um Daten, die mithilfe der zusätzliche Befehle verarbeitet werden,
zu speichern. Somit kann eine Anzahl von Prozessen des Auslesens
und Schreibens von Daten in den Prozessspeicher 304 verringert
werden, wodurch die Betriebsgeschwindigkeit des Computersystems 300,
der den Prozessor 301 umfasst, erhöht werden kann.
-
Zusätzlich kann
der Prozessor 301 ein Steuerregisterbit 307 und
ein Indikatorbit 308 aufweisen. Das Indikatorbit 308 kann
ein nicht architektonisches (non-architectural) sichtbares Bit sein,
das anzeigt, ob der Prozessor 301 derzeit in dem ersten
Betriebsmodus oder in dem zweiten Betriebsmodus läuft. Das Steuerregisterbit 307 kann
anzeigen, ob der zweite Betriebsmodus möglich ist. Wenn das Steuerregisterbit
auf einen ersten Wert gesetzt ist, beispielsweise auf den Wert „EIN”, können Programme
in dem zweiten Betriebsmodus des Prozessors 301 verwendet werden.
Wenn jedoch das Steuerregisterbit auf einen zweiten Wert gesetzt
ist, beispielsweise auf den Wert „AUS”, kann der Prozessor 301 nur
in dem ersten Betriebsmodus verwendet werden.
-
In
dem Systemspeicher 304 kann ein Pufferspeicher 313 bereitgestellt
werden. In dem Pufferspeicher 313 können im Falle einer Unterbrechung oder
eines Ausnahmeereignisses, das auftritt, während sich der Prozessor 301 in
dem zweiten Betriebsmodus befindet, der Inhalt der mehreren zweiten
Register 309 bis 312 und weitere Informationen,
wie beispielsweise eine Rücksprungadresse
abgespeichert werden, was im Nachfolgenden ausführlicher erklärt wird.
Im Falle einer Multithreading-Anwendung, kann für jeden Prozess ein Pufferspeicher
reserviert werden.
-
In
einigen Ausführungsformen
der vorliegenden Erfindung kann der Pufferspeicher 313 reserviert werden,
indem eine CPU-Treiberroutine von dem Code eines den zweiten Betriebsmodus
des Prozessors 301 verwendenden Verarbeitungsvorgangs aus aufgerufen
wird. Die CPU-Treiberroutine kann dafür ausgelegt sein, einen Speicherbereich
mit einer Größe zu reservieren,
die ausreicht, den Inhalt der mehreren zweiten Register 309–312 und
wahlweise weitere Informationen abzuspeichern. In einigen Ausführungsformen
der vorliegenden Erfindung kann sich der Pufferspeicher 313 in
einen nicht in Seiten eingeteilten Systemspeicherbereich (non-paged
pool system memory) befinden, der durch das Betriebssystem nicht
auf ein Massenspeichergerät,
wie beispielsweise eine Festplatte, ausgelagert wird. In einigen
Computersystemen 300 kann eine Reservierung eines Speichers
in den nicht in Seiten eingeteilten Systemspeicherbereich nur für CPU-Treiberroutinen erlaubt
sein.
-
Vorteilhafterweise
kann das Reservieren des Pufferspeichers 313 in dem nicht
in Seiten eingeteilten Systemspeicherbereich dabei helfen, sicherzustellen,
dass der Pufferspeicher 313 immer im physischen Speicher
bleibt und keine Seitenfehler auftreten. Dies kann es erleichtern,
den Inhalt der mehreren zweiten Register 309–312 und
wahlweise weitere Daten mithilfe einer unteilbaren Speicheroperation (atomic
Operation) in den Pufferspeicher 313 zu speichern, bzw.
aus diesem zu lesen. Damit können
vorteilhafterweise Fehler vermieden werden, die auftreten könnten, falls
eine Unterbrechung oder ein Ausnahmeereignis auftritt, während Daten
in den Pufferspeicher 313 geschrieben werden.
-
Die
CPU-Treiberroutine kann dafür
ausgelegt sein, eine Speicheradresse als Pufferspeicher 313 zurückzugeben.
In manchen Ausführungsformen der
vorliegenden Erfindung kann die Speicheradresse eine virtuelle Adresse
sein. Dies kann dabei helfen, alle Prozesse, die auf dem Computersystem 300 laufen,
voneinander zu isolieren, und kann erfordern, dass für jeden
Prozess eine eigene Speicherseite verwendet wird. Wenn die Reservierung
des Pufferspeichers 313 nicht möglich ist, beispielsweise falls
in dem in Seiten eingeteilten Speicherbereich kein Speicher verfügbar ist,
kann die CPU-Treiberroutine einen
Fehler anzeigen.
-
In
manchen Ausführungsformen
der vorliegenden Erfindung kann die CPU-Treiberroutine zum Reservieren
des Pufferspeichers 313 ein Teil eines CPU-Treibers sein,
der von dem Anbieter des Prozessors bereitgestellt werden kann.
Neben der CPU-Treiberroutine zum Reservieren des Pufferspeichers 313 kann
eine zweite CPU-Treiberroutine zum Freigeben des Pufferspeichers 313 bereitgestellt werden.
Wie dem Fachmann bekannt ist, können CPU-Treiberroutinen
während
des Hochfahrens des Betriebssystems vom Betriebssystem geladen werden
und Funktionen bereitstellen, die von Programmen, die auf dem Computersystem 300 laufen,
ausgeführt
werden können.
Somit kann ein Programm, das den zweiten Betriebsmodus verwendet,
die CPU-Treiberroutinen zum Reservieren und Freigeben des Speicherpuffers 313 aufrufen.
-
Der
Prozessor 301 kann einen Aktivierungsbefehl zum Aktivieren
des zweiten Betriebsmodus umfassen. Der Aktivierungsbefehl erhält als Operanden
eine Adresse, beispielsweise eine virtuelle Adresse des Pufferspeichers 313 und
eine Adresse eines Lese-Sprungbefehls. Der Lese-Sprungbefehl wird
von dem Prozessor 301 bereitgestellt, und üblicherweise
dazu verwendet, den Inhalt der mehreren zweiten Register 309–312 nach
Beendigung einer Unterbrechungsroutine, wie das im Nachfolgenden ausführlicher
beschrieben wird, wiederherzustellen. Der Lese-Sprungbefehl kann
sich in einem Programm befinden, das den zweiten Betriebsmodus verwendet,
und die Adresse des Lese-Sprungbefehls ein Zeiger an einem Speicherort
des im Programm bereitgestellten Lese-Sprungbefehls sein.
-
Der
Prozessor 301 kann dafür
ausgelegt sein, die folgenden Schritte auszuführen, wenn der Aktivierungsbefehl
aufgerufen wird.
-
Der
Prozessor 301 kann das Steuerregisterbit 307 überprüfen. Wenn
das Steuerregisterbit 307 anzeigt, dass der zweite Betriebsmodus
nicht erlaubt ist, erzeugt der Aktivierungsbefehl Fehler wegen eines
unzulässigen
Befehls und es werden keine weiteren Schritte ausgeführt. Allenfalls
kann der Prozessor ein erstes der mehreren zweiten Register 309–312,
beispielsweise das Register 309, auf eine Adresse des Pufferspeichers 313 setzen,
und ein zweites der mehreren zweiten Register, wie beispielsweise
das Register 310, auf die Adresse des Lese-Sprungbefehls
setzen. In weiteren Ausführungsformen
der vorliegenden Erfindung können
andere der mehreren zweiten Register 309–312 verwendet
werden, um die Adresse des Pufferspeichers 313 und die
Adresse des Lese-Sprungbefehls zu speichern. Außerdem kann der Prozessor 301 das Indikatorbit 308 auf
einen Wert setzen, der angibt, dass sich der Prozessor 301 in
dem zweiten Betriebsmodus befindet. Anschließend kann der Prozessor 301 den
nächsten
Befehl ausführen.
-
In
weiteren Ausführungsformen
der vorliegenden Erfindung kann der Aktivierungsbefehl in der Form
eines Mikrocodes bereitgestellt sein. In weiteren Ausführungsformen
der vorliegenden Erfindung, kann eine spezielle Schaltung, die zur
Ausführung des
Aktivierungsbefehls ausgelegt ist, in dem Prozessor 301 bereitgestellt
sein.
-
Der
Prozessor 301 kann des Weiteren einen Lese-Sprungbefehl
umfassen. Ähnlich
wie der Aktivierungsbefehl kann der Lese-Sprungbefehl in Form eines
Mikrocodes bereitgestellt sein oder eine spezielle Schaltung, die
zur Ausführung
des Lese-Sprungbefehls ausgelegt ist, kann in dem Prozessor 301 bereitgestellt
sein.
-
Der
Lese-Sprungbefehl kann ausgebildet sein, den Prozessor von dem ersten
Betriebsmodus in den zweiten Betriebsmodus zu schalten, die mehreren
Variablen, die eine Rücksprungadresse
enthalten können,
von dem Pufferspeicher in die mehreren zweiten Register 209–212 auszulesen
und auf die Rücksprungadresse
zu springen.
-
In
einigen Ausführungsformen
der vorliegenden Erfindung kann der Prozessor ausgebildet sein, die
folgenden Schritte beim Aufrufen des Lese-Sprungbefehls auszuführen: Der
Prozessor 301 kann das Steuerregisterbit 307 überprüfen. Wenn das
Steuerregisterbit 307 anzeigt, dass der zweite Betriebsmodus
des Prozessors 301 nicht aktiviert ist, beispielsweise
falls sich das Steuerregisterbit 307 in einem „AUS” Zustand
befindet, kann der Prozessor 301 Fehler wegen eines unzulässigen Befehls
erzeugen, und es werden keine weiteren Schritte ausgeführt.
-
Allenfalls
liest der Prozessor 301 die Adresse des Pufferspeichers 313 aus
einem der mehreren ersten Register 302–305, beispielsweise
aus dem Register 305, aus und schreibt die Daten des Pufferspeichers 313 in
die mehreren zweiten Register 309–312. Die Daten in
dem Pufferspeicher 313 können unter anderem eine Rücksprungadresse
und eine Adresse des Lese-Sprungbefehls umfassen. In einer Ausführungsform
der vorliegenden Erfindung kann die Adresse des Lese-Sprungbefehls
in das Register 310 geschrieben werden.
-
Nachdem
die Daten aus dem Pufferspeicher 313 in die mehreren zweiten
Register 309–312 geschrieben
wurden, kann der Prozessor 301 den Inhalt von einem der
Register 309–312 mit
dem einen der mehreren ersten Register 302–305 austauschen,
in dem die Adresse des Pufferspeichers 313 gespeichert
ist. In einer Ausführungsform
der vorliegenden Erfindung kann der Prozessor 301 den Inhalt
der Register 305 und 309 austauschen. Nach dem
Tauschen der Inhalte der Register kann die Adresse des Pufferspeichers 313 in
dem gleichen Register, wie nach der Ausführung des Aktivierungsbefehls,
bleiben.
-
Danach
kann der Prozessor von dem ersten Betriebsmodus in den zweiten Betriebsmodus
geschaltet werden, indem das Indikatorbit 308 auf einen Wert
gesetzt wird, wie beispielsweise auf den Wert „EIN”, der angibt, dass der Prozessor 301 in
dem zweiten Betriebsmodus arbeitet.
-
Schließlich kann
der Prozessor 301 auf die Rücksprungadresse springen. Somit
wird ein Befehl eines Verarbeitungsvorgangs, der in der Rücksprungadresse
bereitgestellt ist, in dem zweiten Betriebsmodus des Prozessors 301 ausgeführt.
-
Der
Prozessor 301 kann dafür
ausgelegt sein, die oben beschriebenen Schritte des Lese-Sprungbefehls als
unteilbare Speicheroperation auszuführen, die selbst dann nicht
unterbrochen wird, wenn eine Unterbrechung oder ein Ausnahmeereignis
während
der Ausführung
des Lese-Sprungbefehls auftreten sollte. Somit können Fehler, die auftreten
können,
wenn die Ausführung des
Lese-Sprungbefehls unterbrochen wird, vermieden werden.
-
Der
Prozessor 301 kann ferner einen Endbefehl aufweisen, der
dafür ausgelegt
ist, den Prozessor 301 von dem zweiten Betriebsmodus in
den ersten Betriebsmodus zu schalten. Zu diesem Zweck kann der Prozessor 301 das
Indikatorbit 308 auf einen Wert setzen, der anzeigt, dass
der Prozessor 301 in dem ersten Betriebsmodus betrieben
wird. In einer Ausführungsform
der vorliegenden Erfindung kann das Indikatorbit 308 auf
den Wert „AUS” gesetzt werden.
-
Zusätzlich kann
der Prozessor 301 ausgebildet sein, im Falle einer Unterbrechung
oder eines Ausnahmeereignisses, die während des zweiten Betriebsmodus
auftreten, die Schritte des Speicherns des Inhaltes der mehreren
zweiten Register 309–312 und
einer Rücksprungadresse
in den Pufferspeicher 313, des Austauschens der Rücksprungadresse
mit einer Adresse, die den Lese-Sprungbefehl enthält, und
des Schaltens in den ersten Betriebsmodus auszuführen. Diese Schritte werden
unabhängig
von dem Betriebssystem, das auf dem Computersystem 300 läuft, ausgeführt.
-
In
einigen Ausführungsformen
der vorliegenden Erfindung kann der Prozessor 301 eine
spezielle Schaltung zum Ausführen
der zuvor beschriebenen Schritte im Falle einer Unterbrechung oder
eines Ausnahmeereignisses umfassen. In weiteren Ausführungsformen
der vorliegenden Erfindung kann die Ausführung der zuvor beschriebenen
Schritte im Falle einer Unterbrechung oder eines Ausnahmeereignisses
mithilfe von Mikroprogrammierverfahren, die dem Fachmann gut bekannt
sind, ausgeführt
werden.
-
In
einigen Ausführungsformen
der Erfindung kann der Prozessor 301 ausgebildet sein,
die folgenden Schritte beim Auftreten einer Unterbrechung oder eines
Ausnahmeereignisses auszuführen,
während
das Indikatorbit 308 auf einen Wert gesetzt wird, der angibt,
dass sich der Prozessor 301 in dem zweiten Betriebsmodus
befindet.
-
Zuerst
kann der Prozessor 301 die Inhalte eines der mehreren ersten
Register 301–315 und
eines der mehreren zweiten Register 309–312 austauschen.
Die Register, deren Inhalt ausgetauscht wurden, können die
gleichen Register sein, wie jene, die während der zuvor beschriebenen
Ausführung
des Lese-Sprungbefehls ausgetauscht wurden, beispielsweise kann
der Prozessor 301 die Inhalte der Register 305 und 309 austauschen.
-
Bevor
die Inhalte der Register 305 und 309 ausgetauscht
werden, kann das Register 309 die Adresse des Pufferspeichers 313 umfassen,
wie dies im Nachfolgenden ausführlich
beschrieben wird. Somit enthält
das Register 305, das eines der ersten mehreren Register 302–305 ist,
nach dem Tauschen der Inhalte der Register 305 und 309 die
Adresse des Pufferspeichers 313. Das Register 309 enthält Daten, die
in den Registern 305 durch den Verarbeitungsvorgang, dessen
Ausführung
unterbrochen ist, bereitgestellt werden.
-
Nach
dem Tauschen der Inhalte des einen der mehreren ersten Register 302–305 und
des einen der mehreren zweiten Register 309–312 kann
der Prozessor 301 eine Rücksprungadresse mit Hilfe eines
dem Fachmann bekannten Verfahrens abrufen und die Rücksprungadresse
in eines der mehreren zweiten Register 309–312,
beispielsweise in das Register 311, schreiben. In einigen
Ausführungsformen der
vorliegenden Erfindung kann die Rücksprungadresse aus einem der
ersten mehreren Register 302–305 abgerufen werden.
Das Register 311 oder ein weiteres der in anderen Ausführungsformen
der vorliegenden Erfindung vorkommenden Register 309–312 kann
zum Abspeichern der Rücksprungadresse
bereitgestellt werden, und der Prozessor 301 kann so ausgebildet
sein, dass dieses Register für keinen
anderen Zweck verwendet wird. Somit kann ein Verlust von durch einen
Verarbeitungsvorgang in das Register 311 geschriebene Daten, der
durch das Schreiben der Rücksprungadresse
in das Register 311 auftreten kann, vermieden werden.
-
Danach
kann der Prozessor 301 die Inhalte der mehreren zweiten
Register 309–312 in
dem Pufferspeicher 313 schreiben. Die Adresse des Pufferspeichers 313 kann
aus dem einen der mehreren ersten Register 302–305 abgerufen
werden, dessen Inhalt mit dem des einen der mehreren zweiten Register 309–312 ausgetauscht
wurde, beispielsweise aus dem Register 305. Da die Rücksprungadresse
in einem der mehreren zweiten Register 309–312 bereitgestellt
ist, wird somit auch die Rücksprungadresse in
dem Pufferspeicher 313 gespeichert.
-
In
weiteren Ausführungsformen
der vorliegenden Erfindung kann der Prozessor 301 ausgebildet
sein, die Rücksprungadresse
direkt in den Pufferspeicher 313 zu speichern, ohne die
Rücksprungadresse
in das eine der mehreren zweiten Register 309–312 zu
schreiben. Somit kann das eine der mehreren zweiten Register 309–312 vorteilhafterweise für andere
Zwecke verwendet werden.
-
Nach
dem Schreiben der Inhalte der mehreren zweiten Register 309–312 in
den Pufferspeicher 313 kann der Prozessor 301 die
Rücksprungadresse mit
der Adresse des Lese-Sprungbefehls austauschen, der in einem der
mehreren zweiten Register bereitgestellt ist, beispielsweise in
dem Register 310. In weiteren Ausführungsformen der vorliegenden
Erfindung kann dies durch Schieben der Adresse des Lese-Sprungbefehls
in einen Ausnahmeereignisstapel bewerkstelligt werden.
-
Danach
kann der Prozessor 301 in den ersten Betriebsmodus geschalten
werden. Anschließend
kann der Prozessor 301 auf einen ersten Befehl einer Unterbrechungsroutine
springen, so dass die Unterbrechungsroutine in dem ersten Betriebsmodus ausgeführt wird.
-
Im
Nachfolgenden wird der Betrieb des Prozessors 301 mit Bezug
auf die 2b beschrieben, die ein schematisches
Flussdiagramm eines Verarbeitungsvorgangs und einer Unterbrechungsroutine 402,
die auf dem Computersystem 300 läuft, das den Prozessor 301 gemäß der vorliegenden
Erfindung umfasst, zeigt. Der Verarbeitungsvorgang 401 umfasst
Befehle 410–415,
und die Unterbrechungsroutine 402 umfasst Befehle 420–425.
Zusätzlich
umfasst der Verarbeitungsvorgang 401 einen Lese-Sprungbefehl, der
mit dem Bezugszeichen 450 in der 2b gekennzeichnet
ist.
-
Der
Verarbeitungsvorgang 401 kann ein auf dem Computersystem 300 laufender
Prozess sein, oder ein Thread eines Prozesses, der Multithreading verwendet.
-
Der
Verarbeitungsvorgang 401 kann ausgebildet sein, den zweiten
Betriebsmodus des Prozessors 301 zu verwenden. Zu diesem
Zweck kann der Verarbeitungsvorgang 401, z. B. als Befehl 410,
einen Aufruf der CPU-Treiberroutine für die Reservierung des Pufferspeichers 313 umfassen.
Der Einfachheit halber ist der Aufruf der CPU-Treiberroutine in der 2b als
ein einzelner Befehl gezeigt. Wie dem Fachmann bekannt ist, kann
jedoch der Aufruf der CPU-Treiberroutine in weiteren Implementierungen
des Verarbeitungsvorgangs 401 mehrere Befehle umfassen.
-
Zusätzlich kann
der Verarbeitungsvorgang 401 den Aktivierungsbefehl des
Prozessors 301, beispielsweise als Befehl 411,
umfassen. Somit führt
der Prozessor 301 einen Befehl 412 und wahlweise
weitere Befehle des Bearbeitungsvorgangs 401, die nicht
in der 2b gezeigt sind, in dem zweiten
Betriebsmodus aus.
-
Wenn
der Prozessor 301 den Aktivierungsbefehl 411 ausführt, schreibt
der Prozessor 301 die Adresse des Pufferspeichers 313 in
ein erstes der mehreren zweiten Register 309–312,
beispielsweise in das Register 309, die Adresse des Lese-Sprungbefehls 450 wird
in ein zweites der mehreren zweiten Register, beispielsweise in
das Register 310, geschrieben, und das Indikatorbit 308 wird
auf einen Wert gesetzt, der angibt, dass sich der Prozessor 301 in
dem zweiten Betriebsmodus befindet.
-
Wenn
eine Unterbrechung oder ein Ausnahmeereignis 430 während der
Ausführung
des Verarbeitungsvorgangs 401 auftritt, kann der Prozessor 301 die
folgenden Schritte, die durch das Bezugszeichen 440 in 2b gekennzeichnet
sind, durchführen:
Der
Prozessor 301 kann die Inhalte des ersten der mehreren
zweiten Register 309–312 und
einen der mehreren ersten Register tauschen. Beispielsweise können die
Inhalte der Register 309 und 305 getauscht werden.
Danach befindet sich die Adresse des Pufferspeichers 313 in
dem Register 309 und der frühere Inhalt des Registers 305 befindet
sich in dem Register 309.
-
Anschließend kann
der Prozessor 301 eine Rücksprungadresse abrufen. Die
Rücksprungadresse
kann eine Adresse der Befehle 412 des Programms umfassen,
das nach dem Befehl 412 ausgeführt worden wäre, wenn
keine Unterbrechung oder kein Ausnahmeereignis während der Ausführung des Befehls 412 aufgetreten
wäre. Die Rücksprungadresse
kann mit Hilfe von dem Fachmann gut bekannten Einrichtungen des
Prozessors 301 erhalten werden.
-
Die
Rücksprungadresse
und Inhalte der mehreren zweiten Register 309–312 können in
dem Pufferspeicher 313 abgespeichert werden, aus dem der
Prozessor 301 die Adresse des Pufferspeichers 313 aus
dem Register 305 beziehen kann. Wie zuvor beschrieben,
kann die Rücksprungadresse
entweder in eines der mehreren zweiten Register 309–312 geschrieben
und in den Pufferspeicher 313 zusammen mit dem Inhalt des
anderen der mehreren zweiten Register 309–312 gespeichert
werden, oder getrennt davon in den Pufferspeicher 313 gespeichert
werden.
-
Danach
kann der Prozessor 301 die Rücksprungadresse mit der Adresse
des Lese-Sprungbefehls
austauschen, wobei die Adresse des Lese-Sprungbefehls von dem zweiten
der mehreren zweiten Register 309–312 bezogen werden
kann, beispielsweise aus dem Register 310, und durch Setzen
des Indikatorbits 308 auf einen Wert, der angibt, dass
sich der Prozessor 301 in dem ersten Betriebsmodus befindet,
in den ersten Betriebsmodus schalten.
-
Das
Setzen des Indikatorbits 308 auf einen Wert, der angibt,
dass sich der Prozessor in dem ersten Betriebsmodus befindet, kann
helfen, Fehler zu vermeiden, die auftreten können, wenn der Prozessor 301 Aktionen
durchführen
würde,
die im Falle einer Unterbrechung oder eines Ausnahmeereignisses während des
zweiten Betriebsmodus durchgeführt würden, während die
Unterbrechungsroutine 402 in dem ersten Betriebsmodus ausgeführt wird.
Zeigt das Indikatorbit 308 an, dass sich der Prozessor
während
der Ausführung
der Unterbrechungsroutine 402 in dem zweiten Betriebsmodus
befindet, kann der Prozessor 301 die durch das Bezugszeichen 440 in der 2b beschriebenen
Schritte durchführen
und den Inhalt des ersten der mehreren zweiten Register 309–312 als
eine Adresse des Pufferspeichers interpretieren. Da das erste der
mehreren zweiten Register 309–312 jedoch keine
Adresse eines Pufferspeichers enthalten muss, kann der Prozessor 301 fälschlicherweise
die Inhalte des Systemspeichers 304 ändern. Vorteilhafterweise kann
ein derartiger Fehler vermieden werden, indem der Prozessor 301 vor
dem Ausführen
der Unterbrechungsroutine 402 richtigerweise in den ersten
Betriebsmodus geschaltet wird.
-
Anschließend kann
der Prozessor den ersten Befehl der Unterbrechungsroutine 402 ausführen. Dies
erfolgt in dem ersten Betriebsmodus. Die Unterbrechungsroutine 402 kann
Teil eines Betriebssystems sein, das ein Hilfsmittel für den ersten
Betriebsmodus des Prozessors 301 umfasst, und das kein
Hilfsmittel für
den zweiten Betriebsmodus benötigt.
Somit kann die Unterbrechungsroutine 402 Befehle umfassen,
die dafür
ausgerichtet sind, die Inhalte der mehreren ersten Register 302–305 in
den Systemspeicher 304 zu speichern, und kann Befehle umfassen,
um am Ende der Unterbrechungsroutinenausführung 402 die Inhalte
der mehreren ersten Register 302–305 aus dem Systemspeicher 304 zu
lesen. Somit sind nach dem Ausführen
des letzten Befehls 425 der Unterbrechungsroutine 402 die
Inhalte der mehreren ersten Register 302–305 mit
Ausnahme des Registers 305, dessen Inhalt mit dem Inhalt des
Registers 312 getauscht wurde, identisch zu deren Inhalten
nach der Ausführung
des Befehls 412 des Verarbeitungsvorgangs 401.
Das Register 305 umfasst die Adresse des Pufferspeichers 313.
-
Die
Unterbrechungsroutine 402 muss nicht ausgelegt sein, den
Inhalt der mehreren zweiten Register 309–312 zu
speichern und wiederherzustellen. Die Unterbrechungsroutine 402 kann
Teil eines Betriebssystems sein, das Multitasking und/oder Multithreading
ermöglicht.
Insbesondere kann die Unterbrechungsroutine 402 ausgelegt
sein, ein weiteres Programm oder eine weitere Routine auszuführen, die
den zweiten Betriebsmodus des Prozesses 301 verwenden kann,
in dem die Inhalte der mehreren zweiten Register 309–312 verändert sind.
Da die Unterbrechungsroutine 402 den Inhalt der mehreren zweiten
Register 309–312 nicht
wiederherstellen muss, können
die Inhalte der mehreren zweiten Register 309–312 unterschiedlich
zu deren Inhalt nach der Ausführung
des Befehls 412 des Verarbeitungsvorgangs 401 sein.
-
Nach
Beendigung der Unterbrechungsroutine 402 führt der
Prozessor 301 den Lese-Sprungbefehls 450 aus,
da die Rücksprungadresse
durch die Adresse des Lese-Sprungbefehls 450 ersetzt wurde.
-
Wird
der Lese-Sprungbefehls 450 ausgeführt, erhält der Prozessor 301 die
Adresse des Pufferspeichers 313 aus dem Register 305,
liest die Inhalte der mehreren zweiten Register 309–312,
die durch den Prozessor 301 nach der Unterbrechung oder
dem Ausnahmeereignis 430 abgespeichert wurden, aus dem
Pufferspeicher 313 und tauscht die Inhalte der Register 305 und 312.
Somit umfassen sowohl die mehreren ersten Register 302–305 als
auch die mehreren zweiten Register 309–312 die gleichen Daten
wie nach der Ausführung
des Befehls 412 des Verarbeitungsvorgangs 401.
-
Danach
kann der Prozessor von dem ersten Betriebsmodus in den zweiten Betriebsmodus
schalten, indem das Indikatorbit 308 auf einen Wert gesetzt
wird, der angibt, dass sich der Prozessor 301 in dem zweiten
Betriebsmodus befindet. Anschließend kann der Prozessor 301 auf
die Rücksprungadresse springen,
die ebenso aus dem Pufferspeicher 313 abgerufen werden
kann. Danach wird der Befehl 413 und danach die weiteren
Befehle 414 und 415 des Verarbeitungsvorgangs 401 ausgeführt.
-
Obwohl
das Betriebssystem des Computersystems 300, das den Prozessor 301 und
insbesondere die Unterbrechungsroutine 402 umfasst, nicht ausgelegt
ist, die Inhalte der mehreren zweiten Register 309–312 zu
speichern und wiederherzustellen, werden somit die Inhalte der mehreren
zweiten Register 309–312 nach
der Ausführung
der Unterbrechungsroutine 402 wiederhergestellt. Außerdem wird die
Unterbrechungsroutine 402 in dem ersten Betriebsmodus des
Prozessors 301 ausgeführt.
Somit sind keine Angleichungen des Betriebssystems in dem zweiten
Betriebsmodus des Prozessors 301 nötig. Das Tauschen des ersten
der mehreren zweiten Register 309–312 mit einem der
mehreren ersten Register 302–305 ermöglicht Anwendungen,
um jedes der mehreren ersten Register 302–305 zu
verwenden, und stellt sicher, dass die Adresse des Pufferspeichers 313 durch
die Unterbrechungsroutine 402 gespeichert und abgerufen
wird.
-
Somit
kann die Adresse des Pufferspeichers 313 dem Lese-Sprungbefehl
auf bequeme Art und Weise zugänglich
gemacht werden. Falls der zweite Betriebsmodus des Prozessors 301 zusätzlich zu den
Befehlen, die von dem ersten Betriebsmodus bereitgestellt sind,
Befehle bereitstellt, können
außerdem
Komponenten des Verarbeitungsvorgangs 401, die nicht die
Strukturelemente des zweiten Betriebsmodus benötigen, mit Hilfe eines Compilers
oder eines Assemblers, der für
den zweiten Betriebsmodus ausgelegt ist, erzeugt werden. Somit bietet
der Prozessor 301 gemäß der vorliegenden
Erfindung einen hohen Grad an Kompatibilität mit der Software, die für bestehende
Prozessoren erzeugt wurde, die ausschließlich einen ersten Betriebsmodus
bereitstellen.
-
Zusätzlich zu
den zuvor beschriebenen Befehlen kann der Prozessor 301 einen
ersten Modus-Umschaltbefehl zum Speichern der Inhalte der mehreren
zweiten Variablen in den Pufferspeicher 313 und zum Schalten
des Prozesses 301 von dem zweiten Betriebsmodus in den
ersten Betriebsmodus umfassen. Der Prozessor 301 kann den
ersten Modus-Umschaltbefehl
und den zweiten Modus-Umschaltbefehl als unteilbare Speicheroperation
ausführen.
Somit können
Fehler, die auftreten, wenn die Ausführung des ersten Modus-Umschaltbefehl und/oder
des zweiten Modus-Umschaltbefehls unterbrochen werden, vorteilhafterweise
vermieden werden.
-
In
einigen Ausführungsformen
der vorliegenden Erfindung kann der Prozessor 301 zum Ausführen der
folgenden Schritte während
dem Ausführen des
ersten Modus-Umschaltbefehls ausgebildet sein.
-
Zuerst
kann der Prozessor 301 das Steuerregisterbit 307 überprüfen. Wenn
das Steuerregisterbit 307 anzeigt, dass der zweiten Betriebsmodus
des Prozessors nicht erlaubt ist, kann der Prozessor 301 einen
Fehler aufgrund eines unzulässigen
Befehls erzeugen, und es werden keine weiteren Aktionen ausgeführt.
-
Allenfalls
kann der Prozessor 301 die Inhalte des ersten der mehreren
zweiten Register 309–312 und
eines der mehreren ersten Register 302–305 tauschen. In
einigen Ausführungsformen
der vorliegenden Erfindung können
die Inhalte der Register 305 und 312 getauscht
werden. Somit kann die Adresse des Pufferspeichers 313,
die sich in dem Register 312 befindet, in das Register 305 geschrieben
werden und der ursprüngliche
Inhalt des Registers 305 wird in das Register 312 geschrieben.
-
Danach
kann der Inhalt der mehreren zweiten Register 309–312 in
dem Pufferspeicher 313 geschrieben werden, wobei der Prozessor 301 die Adresse
des Pufferspeichers 313 von dem Register 305 enthält. Schließlich kann
der Prozessor 301 in den ersten Betriebsmodus schalten,
indem das Indikatorbit 308 auf einen Wert gesetzt wird,
der angibt, dass sich der Prozessor 301 in dem ersten Betriebsmodus
befindet, beispielsweise auf den Wert „AUS”, und der Prozessor fährt mit
der Ausführung
des nächsten
Befehls fort.
-
Der
Prozessor 301 kann des Weiteren einen zweiten Modus-Umschaltbefehl
umfassen, der zum Lesen des Inhaltes der mehreren zweiten Register 309–312 aus
dem Pufferspeicher 313 und zum Schalten des Prozessors 301 in
den zweiten Betriebsmodus ausgelegt ist.
-
In
einigen Ausführungsformen
der vorliegenden Erfindung kann der Prozessor 301 zum Ausführen der
folgenden Schritte, wenn der zweite Modus-Umschaltbefehl ausgeführt wird,
ausgebildet sein.
-
Zuerst
kann der Prozessor 301 das Steuerregisterbit 307 überprüfen. Wenn
das Steuerregisterbit 307 angibt, dass der zweite Betriebsmodus
des Prozessors nicht erlaubt ist, kann der Prozessor 301 einen
Fehler aufgrund eines unzulässigen
Befehls erzeugen und es werden keine weiteren Aktionen ausgeführt.
-
Allenfalls
kann der Prozessor 301 die Inhalte der mehreren zweiten
Register 309–312 aus
dem Pufferspeicher 313 in die mehreren zweiten Register 309–312 lesen.
Dazu kann sich die Adresse des Pufferspeichers in dem Register 305 befinden.
Danach kann der Prozessor 301 die Inhalte des ersten der mehreren
zweiten Register und eines der mehreren ersten Register 302–305 tauschen.
In einer Ausführungsform
kann der Prozessor 301 die Inhalte der Register 305 und 312 tauschen.
Danach kann der Prozessor 301 in einen zweiten Betriebsmodus schalten,
indem das Indikatorbit 307 auf einen Wert gesetzt wird,
der angibt, dass der Prozessor in dem zweiten Betriebsmodus betrieben
wird. Anschließend kann
ein nächster
Befehl in dem zweiten Betriebsmodus ausgeführt werden.
-
In
Ausführungsformen
der vorliegenden Erfindung kann jeder erste Modus-Umschaltbefehl
und jeder zweite Modus-Umschaltbefehl als unteilbare Speicheroperation
ausgeführt
werden. Somit können Fehler,
die allenfalls im Falle einer Unterbrechung oder eines Ausnahmeereignisses
während
der Ausführung
des ersten Modus-Umschaltbefehls oder des zweite Modus-Umschaltbefehls
auftreten, vermieden werden.
-
Der
erste Modus-Umschaltbefehl und der zweiten Modus-Umschaltbefehl
können
verwendet werden, um ein Programm zu implementieren, das den Prozessor 301 zwischen
den ersten und den zweiten Betriebsmodus hin und her schaltet. Wenn der
erste Modus-Umschaltbefehl
ausgeführt
wird, wird das Programm in dem ersten Betriebsmodus ausgeführt, bis
entweder der Aktivierungsbefehl oder der zweite Modus-Umschaltbefehl
ausgeführt
wird. Ein Programm, das den ersten Modus-Umschaltbefehl und/oder
den zweiten Modus-Umschaltbefehl verwendet, kann weitere Befehle
umfassen, um den Inhalt des Registers 305 in dem Systemspeicher 304 nach
der Ausführung
des ersten Modus-Umschaltbefehls
zu speichern und den Inhalt des Registers 305 aus dem Systemspeicher 304 vor
dem Ausführen des
zweiten Modus-Umschaltbefehls zu lesen. Dies kann mit Hilfe eines
Standardspeicher- und Ladebefehls des ersten Betriebsmodus des Prozessors 301 erfolgen.
Nach dem Speichern des Inhaltes des Registers 305 in den
Systemspeicher 304 kann das Programm jedes der mehreren
ersten Register 302–305 verwenden.
Wahlweise kann die Adresse des Pufferspeichers 313 in einer
Variablen gespeichert werden, von der es in das Register 305 vor
dem Ausführen des
ersten und/oder des zweiten Modus-Umschaltbefehls geladen wird.
-
Die
vorliegende Erfindung ist nicht auf Ausführungsformen beschränkt, in
denen der Zustand des Prozessors in dem ersten Betriebsmodus durch Inhalte
mehrerer erster Register dargestellt ist und der Zustand des Prozesses
in dem zweiten Betriebsmodus durch Inhalte der mehreren zweiten
Register dargestellt ist. In weiteren Ausführungsformen der vorliegenden
Erfindung kann der Zustand des Prozessors in dem zweiten Betriebsmodus
eine Vielzahl von Variablen umfassen, wobei zumindest einige der Variablen
nicht in den Registern des Prozesses bereitgestellt sind. Stattdessen
können
die Variablen, die den Zustand des Prozessors darstellen, Daten aus
einem an den Prozessor angeschlossenen Gerät umfassen.
-
Im
Folgenden wird eine Ausführungsform der
vorliegenden Erfindung mit Bezug auf die 3 beschrieben,
wobei der Zustand des Prozessors in dem zweiten Betriebsmodus mehrere
Variable umfasst, die bezeichnend für Daten aus einem mit dem Prozessor
verbundenen Gerät
sind.
-
Die 3 zeigt
ein schematisches Blockdiagramm eines Computersystems 500,
das einen Prozessor 501 gemäß einer Ausführungsform
der vorliegenden Erfindung umfasst. Das Computersystem 500 umfasst
des Weiteren eine Eingabe/Ausgabevorrichtung 503, die ähnlich zu
der Eingabe/Ausgabevorrichtung 303 ist, die mit Bezug auf
die 2a beschrieben wurde, und einen Systemspeicher.
Zusätzlich
umfasst das Computersystem 500 eine Vorrichtung 550,
die mit dem Prozessor 501 verbunden ist. Pfeile 506 zeigen
Verbindungen zwischen den Bauteilen des Computersystems 500 an.
-
Ähnlich zu
dem Prozessor 301 umfasst der Prozessor 501 mehrere
erste Register 502–505,
ein Steuerregisterbit 507 und ein Indikatorbit 508.
Der Prozessor 501 umfasst einen ersten Betriebsmodus und
einen zweiten Betriebsmodus. Prozessor 501 kann ausgebildet
sein, in dem zweiten Betriebsmodus mit der Einrichtung 550 zu
kooperieren und in dem ersten Betriebsmodus die Strukturelemente
der Einrichtung 550 nicht zu verwenden. Zu diesem Zweck
kann der Prozessor 501 in dem zweiten Betriebsmodus Befehle
bereitstellen, die zur Steuerung der Einrichtung 550 ausgelegt
sind, wobei diese Befehle nicht in dem ersten Betriebsmodus bereitgestellt
sind. In Ausführungsformen
der vorliegenden Erfindung kann die Einrichtung 550 eine
spezielle Support-Hardware umfassen, wie beispielsweise Grafikprozessoren,
Videocodecs, Mathematikprozessoren, Physikprozessoren und/oder einen
Coprozessor und/oder einen zusätzlichen
Prozessor eines anderen Typs als der Prozessor 501.
-
Die
Einrichtung 550 kann mehrere Datenspeicherbereiche 551–555 umfassen.
In einigen Ausführungsformen
der vorliegenden Erfindung können die
Datenspeicherbereiche 551–555 eine mehrere zweite
Register umfassen. Die weiteren Ausführungsformen können die
Datenspeicherbereiche 551–555 weitere Einrichtungszustände 550 umfassen.
-
Ähnlich zu
dem zuvor mit Bezug auf die 2a und 2b beschriebenen
Prozessor 301 kann eine CPU-Treiberroutine bereitgestellt
sein, welche die den zweiten Betriebsmodus des Prozessors 501 verwendende
Verarbeitungsvorgänge
erlaubt, um einen Pufferspeicher 513 in dem Systemspeicher 504 zu
reservieren, und es kann eine weitere CPU-Treiberroutine bereitgestellt sein,
die Verarbeitungsvorgänge
ermöglicht,
um den Pufferspeicher 513 am Ende der Verarbeitungsvorgangs
oder in dem Falle, dass der zweite Betriebsmodus von dem Verarbeitungsvorgang
nicht mehr verwendet wird, freizugeben.
-
Des
Weiteren kann der Prozessor 501, ähnlich wie der mit Bezug auf
die 2a und 2b beschriebene
Prozessor 301, einen Aktivierungsbefehl zum Aktivieren
des zweiten Betriebsmodus, einen Lese-Sprungbefehl, der aufgerufen
wird, um die Inhalte der Datenspeicherbereiche 551–555 nach
dem Ausführen
einer Unterbrechungsroutine wiederherzustellen, und einen Endbefehl
zum Schalten des Prozesses 501 von dem zweiten Betriebsmodus
in den ersten Betriebsmodus aufweisen.
-
Der
Funktionsumfang des Aktivierungsbefehls, des Lese-Sprungbefehls
und des Endbefehls kann ähnlich
zu dem der entsprechenden Befehle des zuvor mit Bezug auf die 2a und 2b beschriebenen
Prozessors 301 sein. In dem Prozessor 501 sind
jedoch anstelle der Inhalte der mehreren zweiten Register 309–312 die
Inhalte der Datenspeicherbereiche 551–555 in dem Pufferspeicher 513 abgespeichert
und aus dem Pufferspeicher 313 abrufbar.
-
Tritt
eine Unterbrechung oder ein Ausnahmeereignis auf, während das
Indikatorbit 508 anzeigt, dass sich der Prozessor 501 in
dem zweiten Betriebsmodus befindet, ähnlich zu dem zuvor beschriebenen
Prozessor 301, kann der Prozessor 501 die Schritte
des Speicherns des Inhaltes der Datenspeicherbereiche 551–555 sowie
eine Rücksprungadresse
in den Pufferspeicher 513, ein Austauschen der Rücksprungadresse
mit einer Adresse des Lese-Sprungbefehls, und des Schaltens in den
ersten Betriebsmodus ausführen.
Diese Schritte können
unabhängig
von einem Betriebssystem durchgeführt werden.
-
Zusätzlich kann
der Prozessor 501 einen ersten Modus-Umschaltbefehl zum
Speichern der Inhalte der Datenspeicherbereiche 551–555 in
den Pufferspeicher und Schalten des Prozessors 501 von dem
zweiten Betriebsmodus in den ersten Betriebsmodus umfassen. Außerdem kann
der Prozessor 501 einen zweiten Modus-Umschaltbefehl zum
Lesen der Inhalte der mehreren Datenspeicherbereiche 551–555 aus
dem Pufferspeicher 513 und zum Schalten des Prozessors 501 von
dem ersten Betriebsmodus in den zweiten Betriebsmodus umfassen.
-
Während sich
der Prozessor 501 in dem zweiten Betriebsmodus befindet,
können
die von dem Prozessor 501 ausgeführten Aktionen, wenn eine Unterbrechung
oder ein Ausnahmeereignis auftritt, sowie der Funktionsumfang des
ersten Modus-Umschaltbefehls und des zweiten Modus-Umschaltbefehls, ähnlich zu
dem entsprechenden Funktionsumfang des Prozessors 301 sein,
wobei jedoch der Inhalt der Datenspeicherbereiche 551–555 in dem
Pufferspeicher 513 abgespeichert ist und aus dem Pufferspeicher 513 anstelle
der Inhalte der mehreren zweiten Register 309–312 abgerufen
wird.
-
Die
vorliegende Erfindung ist nicht auf ein Computersystem mit einem
einzigen Prozessor, wie in den 2a und 3 gezeigt,
beschränkt.
Stattdessen kann ein Computersystem mehrere Prozessoren 301 und/oder 501 gemäß der vorliegenden
Erfindung umfassen. Beispielsweise können mehrere Prozessoren gemäß den Ausführungsformen
der vorliegenden Erfindung in einem gemeinsamen Speicher-Multiprozessorsystem
bereitgestellt sein. In einem gemeinsamen Speicher-Multiprozessorsystem kann
auch jeder Prozessor auf den Systemspeicher 304, 305 auf
erkennbare Weise zugreifen. Laufende Verarbeitungsvorgänge, die
Prozesse und/oder Threads umfassen können, können von einem ersten der Prozessoren
zu einem zweiten der Prozessoren bewegt werden. Zu diesem Zweck
kann die Ausführung
des Programms oder Threads mit Hilfe einer Unterbrechung oder eines
Ausnahmeereignisses unterbrochen werden. Falls sich der erste Prozessor
in dem zweiten Betriebsmodus befindet, speichert der Prozessor 301, 305 automatisch
Variable, die kennzeichnend für
den Zustand des Prozessors in dem zweiten Betriebsmodus sind, sowie
die Inhalte der mehreren zweiten Register 309–312 und/oder
die Inhalte der Datenspeicherbereiche 551–555 in
einer Vorrichtung 550, die an dem Prozessor angeschlossen
ist, in einen Pufferspeicher 313, 515 und schaltet in
den ersten Betriebsmodus. Danach kann eine Unterbrechungsroutine,
die Teil eines Betriebssystems sein kann, ausgeführt werden. Die Unterbrechungsroutine
kann beginnen, an dem zweiten Prozessor den Verarbeitungsvorgang
auszuführen.
Der zweite Prozessor wird dann einen Lese-Sprungbefehls ausführen und
die Variablen, die kennzeichnend für den Zustand des Prozessors 301, 501 in
dem zweiten Betriebsmodus sind, aus dem Systemspeicher 304, 504 auslesen.
Somit können
die Variablen, die kennzeichnend für den Zustand des Prozessors
in dem zweiten Betriebsmodus sind, auf erkennbare Weise in ein Betriebssystem
gespeichert und wiederhergestellt werden, wenn ein Verarbeitungsvorgang zwischen
dem ersten und zweiten Prozessor bewegt wird. Das Betriebssystem
muss keine speziellen Angleichungen an den zweiten Betriebsmodus
des Prozessors umfassen.
-
Die
vorliegende Erfindung ist nicht auf die Ausführungsformen beschränkt, in
denen der Lese-Sprungbefehl und die zweite Modus-Umschaltoperationvariablen,
die kennzeichnend für
ihren Zustand des Prozessors 301, 501 sind, aus
dem Systemspeicher 304, wann auch immer sie ausgelesen werden,
gelesen werden. In weiteren Ausführungsformen
der vorliegenden Erfindung kann der Prozessor 301, 501 nur
eine Vorrichtung zum Lesen der Variablen umfassen, wenn eine oder
mehrere der Variablen durch das Betriebssystem oder ein anderes Programm,
das auf dem Computersystem 301 läuft, verändert wurde. Wie zuvor beschrieben,
kann der Prozessor 301, 501 ausgebildet sein,
die Variablen, die kennzeichnend für den Zustand des Prozessors 301, 501 in
dem zweiten Betriebsmodus sind, wie beispielsweise die Inhalte der
mehreren zweiten Register 309–312 und/oder die
Inhalte der Datenspeicherbereiche 551–555, nur in dem zweiten
Betriebsmodus zu modifizieren. Somit können der Lese-Sprungbefehls
und der zweite Modus-Umschaltbefehl ausgelegt sein, Werte nur dann
aus dem Pufferspeicher zu lesen, wenn der Prozessor 301, 501 in dem
zweiten Betriebsmodus, seit der letzten Ausführung des Verarbeitungsvorgangs,
durch einen weiteren Verarbeitungsvorgang betrieben wurde.
-
Zu
diesem Zweck kann der Prozessor 301, 501 einen
Zähler
umfassen. Im Falle einer Rücksetzung
des Prozesses 301, 501 kann der Zähler auf Null
gesetzt werden. Der Prozessor 301, 501 kann ausgelegt
sein, den Zähler
zu erhöhen,
wann auch immer dieser von dem ersten Betriebsmodus in den zweiten
Betriebsmodus geschaltet wird. Insbesondere kann der Zähler erhöht werden,
wann auch immer der Aktivierungsbefehl, der Lese-Sprungbefehls oder der
zweite Modus-Umschaltbefehl ausgeführt wird. Der Prozessor 301, 501 kann
mit einem Schaltkreislauf oder Mikrocode, der für diesen Zweck ausgelegt ist,
ausgestattet sein.
-
Wenn
eine Unterbrechung oder ein Ausnahmeereignis auftritt, während sich
der Prozessor 301, 501 in dem zweiten Betriebsmodus
befindet, kann der derzeitige Wert des Zählers in dem Pufferspeicher 313, 513 gespeichert
werden. In Ausführungsformen
der vorliegenden Erfindung, in denen der Prozessor 301 mehrere
zweite Register 309–312 umfasst,
kann der Prozessor 301 den Wert des Zählers in ein der mehreren zweiten
Register 309–312 kopieren.
In Ausführungsformen,
in denen der Prozessor 501 mit einer Einrichtung 550 verbunden
ist, die mehrere Datenspeicherbereiche 551–555 umfasst,
kann der Prozessor 501 den Wert des Zählers in einen der Datenspeicherbereiche 551–555 kopieren.
Wenn der Prozessor die Variablen, die kennzeichnend für den Zustand
des Prozessors 301, 501 sind, in den Pufferspeicher 313, 513 speichert,
wird auch der Wert des Zählers
in den Pufferspeicher 313, 513 gespeichert. In
weiteren Ausführungsformen
der vorliegenden Erfindung kann der Prozessor 301, 501 ausgelegt
sein, den aktuellen Wert des Zählers
direkt in den Pufferspeicher 313, 513 zu schreiben.
-
Der
Lese-Sprungbefehl und/oder der zweite Modus-Umschaltbefehl können ausgelegt
sein, den gespeicherten Wert des Zählers aus dem Pufferspeicher 313, 513 zu
lesen und den gelesenen Wert des Zählers mit dem aktuellen Wert
zu vergleichen. Wenn der aktuelle Wert des Zählers und der aus dem Pufferspeicher
gelesene Wert identisch sind, müssen
die Inhalte der mehreren zweiten Register 309–312 und/oder
die Inhalte der mehreren Datenspeicherbereiche 551–555 nicht
aus dem Pufferspeicher 313, 513 gelesen werden,
da dadurch angegeben wird, dass die Inhalte der mehreren zweiten
Register 309–312 und/oder
die Inhalte der Datenspeicherbereiche 551–555 nicht
verändert
wurden. Falls sich der aktuelle Wert des Zählers von dem gespeicherten Wert
des Zählers
unterscheidet, können
die Inhalte eines jeden der mehreren zweiten Register 309–312 und/oder
die Inhalte eines jeden der Datenspeicherbereiche 551–555 aus
dem Pufferspeicher 313, 513 gelesen werden.
-
Vorteilhafterweise
ermöglicht
dies, die Betriebsgeschwindigkeit des Prozessors 301, 501 zu erhöhen, um
ein unnötiges
Auslesen von Daten aus dem Pufferspeicher 313, 513 zu
vermeiden.
-
In
einer Ausführungsform
der vorliegenden Erfindung, kann der Zähler eine Breite von 64 Bit
aufweisen. Selbst wenn der Lese-Sprungbefehl oder der zweite Modus-Umschaltbefehl
alle 100 Nanosekunden ausgeführt
werden würde,
würde somit
ein Umgriff des Zählers
nur nach einem Betrieb des Prozessors 301, 501 von
58494 Jahren auftreten. Somit können
Fehler aufgrund eines Umgriffs des Zählers effektiv verhindert werden.
-
In
Ausführungsformen
der vorliegenden Erfindung, in denen der Prozessor 301, 501 in
einem Computersystem verwendet wird, der mehrere Prozessoren umfasst,
wie beispielsweise ein gemeinsames Speicher-Multiprozessorsystem,
kann der Prozessor 301, 501 ausgebildet sein,
im Falle einer Unterbrechung oder eines Ausnahmeereignisses, das während des
Arbeitens des Prozessors in dem zweiten Betriebsmodus auftritt,
eine Identifikationsnummer des Prozessors und den aktuellen Wert
des Zählers
in den Pufferspeicher 313, 513 zu speichern. Der Lese-Sprungbefehl
und der zweite Modus-Umschaltbefehl
können
ausgelegt sein, den Inhalt der mehreren zweiten Register 309–312 und/oder
den Inhalt der Datenspeicherbereiche 551–555 aus
dem Pufferspeicher 313, 513 zu lesen, nur wenn
sowohl die Identifikationsnummer des Prozessors 301, 501 sowie
der aktuelle Wert des Zählers
identisch zu den Werten sind, die in dem Pufferspeicher 313, 513 gespeichert
sind. Somit kann sichergestellt werden, dass die Inhalte der mehreren
zweiten Register und/oder der Datenspeicherbereiche 551–555 immer aus
dem Pufferspeicher 313, 513 gelesen werden, sollte
das Programm oder der Thread auf einen anderen Prozessor verschoben
werden.
-
Wie
zuvor beschrieben, wird die derzeitige Rücksprungadresse im Falle einer
Unterbrechung oder eines Ausnahmeereignisses, das auftritt, während sich
der Prozessor 301, 501 in dem zweiten Betriebsmodus
befindet, durch die Adresse des Lese-Sprungbefehls ersetzt. Deshalb
kann die Rücksprungadresse,
wann auch immer eine Unterbrechung oder ein Ausnahmeereignis auftritt,
während der
Ausführung
des Programms, das den zweiten Betriebsmodus des Prozesses 301, 501 verwendet, immer
die gleiche sein.
-
In
weiteren Ausführungsformen
der vorliegenden Erfindung können
mehrere Lese-Sprungbefehle
in einem Verarbeitungsvorgang, der den zweiten Betriebsmodus des
Prozesses 301, 501 verwendet, bereitgestellt sein.
Der Prozessor 301, 501 kann ausgebildet sein,
die Rücksprungadresse
durch die Adresse von einem der mehreren Lese-Sprungbefehle auszutauschen,
wenn eine Unterbrechung oder ein Ausnahmeereignis auftritt, während sich
der Prozessor 301, 501 in einem zweiten Betriebsmodus
befindet. In einer Ausführungsform
kann der Prozessor 301, 501 ausgebildet sein,
die mehreren Lese-Sprungbefehle zu wiederholen.
-
Nach
Beendigung der Unterbrechungsroutine kann somit die Rücksprungadresse
unterschiedliche Adressen umfassen. Dies kann dazu beitragen, Probleme
zu überwinden,
die auftreten können, wenn
ein Betriebssystem, das für
ein den Prozessor 301, 501 umfassendes Computersystem 300, 500 verwendet
wird, die Informationen über
identische Rücksprungadressen
zum Aufstellen einiger Annahmen verwenden würde. Beispielsweise kann das
Betriebssystem daraus folgern, dass der Verarbeitungsvorgang in
einer Endlosschleife gefangen ist, und den Verarbeitungsvorgang
abbrechen.