DE102007015507B4 - Prozessor mit einem ersten und einem zweiten Betriebsmodus und Verfahren zu seinem Betrieb - Google Patents

Prozessor mit einem ersten und einem zweiten Betriebsmodus und Verfahren zu seinem Betrieb Download PDF

Info

Publication number
DE102007015507B4
DE102007015507B4 DE102007015507A DE102007015507A DE102007015507B4 DE 102007015507 B4 DE102007015507 B4 DE 102007015507B4 DE 102007015507 A DE102007015507 A DE 102007015507A DE 102007015507 A DE102007015507 A DE 102007015507A DE 102007015507 B4 DE102007015507 B4 DE 102007015507B4
Authority
DE
Germany
Prior art keywords
processor
mode
variables
registers
several
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
DE102007015507A
Other languages
English (en)
Other versions
DE102007015507A1 (de
Inventor
Uwe Kranich
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
GlobalFoundries Inc
Original Assignee
Advanced Micro Devices Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Priority to DE102007015507A priority Critical patent/DE102007015507B4/de
Priority to US11/874,402 priority patent/US7890740B2/en
Publication of DE102007015507A1 publication Critical patent/DE102007015507A1/de
Application granted granted Critical
Publication of DE102007015507B4 publication Critical patent/DE102007015507B4/de
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4812Task transfer initiation or dispatching by interrupt, e.g. masked
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30054Unconditional branch instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • G06F9/30189Instruction operation extension or modification according to execution mode, e.g. mode flag
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • G06F9/3806Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/461Saving or restoring of program or task context
    • G06F9/462Saving or restoring of program or task context with multiple register sets
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals

Abstract

Prozessor mit einem ersten Betriebsmodus, der ein Kompatibilitätsmodus ist, in dem der Prozessor den Funktionsumfang eines anderen Prozessors bereitstellt und einem zweiten Betriebsmodus, wobei ein Zustand des Prozessors in dem ersten Betriebsmodus mehrere erste Variablen aufweist, wobei die mehreren ersten Variablen eine Rücksprungadresse umfassen, und wobei ein Zustand des Prozessors in dem zweiten Betriebsmodus zusätzlich zu den mehreren ersten Variablen mehrere zweite Variablen aufweist;
wobei die mehreren ersten Variablen Inhalte mehrerer erster Register des Prozessors darstellen, die den Registern des anderen Prozessors entsprechen, und sich die Rücksprungadresse in einem der mehreren ersten Register befindet;
wobei der Prozessor im ersten Betriebsmodus einen Befehlssatz bereitstellt, der dem Befehlssatz des anderen Prozessors entspricht;
wobei die mehreren zweiten Variablen Inhalte mehrerer zweiter Register des Prozessors und/oder einen Zustand einer mit dem Prozessor verbundenen Einrichtung darstellen;
wobei der Prozessor einen Lese-Sprungbefehl umfasst;
wobei der Prozessor ausgebildet ist, beim Auftreten einer...

Description

  • 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 102105 gelesen werden und Daten in den Registern 102105 können in den Systemspeicher 104 geschrieben werden. Der Prozessor 101 kann Befehle aufweisen, die dafür ausgelegt sind, den Inhalt der Register 102105 zu verändern, sowie Befehle und Daten zwischen den Registern 102105 und dem Systemspeicher 104 und/oder zwischen den Registern 102105 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 102105 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 210215, 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 220225. 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 102105 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 102105 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 102105 gelesen. Wenn die Verarbeitung des Verarbeitungsvorgangs 201 durch die Verarbeitung des Befehls 213 fortgesetzt wird, können somit die Register 102105 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 302305 und mehrere zweite Register 309312. 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 302305 können den Registern 102105 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 102105 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 309312. 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 309312 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 309312 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 309312 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 309312 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 309312 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 309312, 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 309312 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 209212 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 302305, beispielsweise aus dem Register 305, aus und schreibt die Daten des Pufferspeichers 313 in die mehreren zweiten Register 309312. 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 309312 geschrieben wurden, kann der Prozessor 301 den Inhalt von einem der Register 309312 mit dem einen der mehreren ersten Register 302305 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 309312 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 301315 und eines der mehreren zweiten Register 309312 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 302305 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 302305 und des einen der mehreren zweiten Register 309312 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 309312, beispielsweise in das Register 311, schreiben. In einigen Ausführungsformen der vorliegenden Erfindung kann die Rücksprungadresse aus einem der ersten mehreren Register 302305 abgerufen werden. Das Register 311 oder ein weiteres der in anderen Ausführungsformen der vorliegenden Erfindung vorkommenden Register 309312 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 309312 in dem Pufferspeicher 313 schreiben. Die Adresse des Pufferspeichers 313 kann aus dem einen der mehreren ersten Register 302305 abgerufen werden, dessen Inhalt mit dem des einen der mehreren zweiten Register 309312 ausgetauscht wurde, beispielsweise aus dem Register 305. Da die Rücksprungadresse in einem der mehreren zweiten Register 309312 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 309312 zu schreiben. Somit kann das eine der mehreren zweiten Register 309312 vorteilhafterweise für andere Zwecke verwendet werden.
  • Nach dem Schreiben der Inhalte der mehreren zweiten Register 309312 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 410415, und die Unterbrechungsroutine 402 umfasst Befehle 420425. 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 309312, 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 309312 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 309312 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 309312 geschrieben und in den Pufferspeicher 313 zusammen mit dem Inhalt des anderen der mehreren zweiten Register 309312 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 309312 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 309312 als eine Adresse des Pufferspeichers interpretieren. Da das erste der mehreren zweiten Register 309312 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 302305 in den Systemspeicher 304 zu speichern, und kann Befehle umfassen, um am Ende der Unterbrechungsroutinenausführung 402 die Inhalte der mehreren ersten Register 302305 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 302305 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 309312 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 309312 verändert sind. Da die Unterbrechungsroutine 402 den Inhalt der mehreren zweiten Register 309312 nicht wiederherstellen muss, können die Inhalte der mehreren zweiten Register 309312 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 309312, 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 302305 als auch die mehreren zweiten Register 309312 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 309312 zu speichern und wiederherzustellen, werden somit die Inhalte der mehreren zweiten Register 309312 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 309312 mit einem der mehreren ersten Register 302305 ermöglicht Anwendungen, um jedes der mehreren ersten Register 302305 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 309312 und eines der mehreren ersten Register 302305 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 309312 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 309312 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 309312 aus dem Pufferspeicher 313 in die mehreren zweiten Register 309312 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 302305 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 302305 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 502505, 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 551555 umfassen. In einigen Ausführungsformen der vorliegenden Erfindung können die Datenspeicherbereiche 551555 eine mehrere zweite Register umfassen. Die weiteren Ausführungsformen können die Datenspeicherbereiche 551555 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 551555 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 309312 die Inhalte der Datenspeicherbereiche 551555 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 551555 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 551555 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 551555 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 551555 in dem Pufferspeicher 513 abgespeichert ist und aus dem Pufferspeicher 513 anstelle der Inhalte der mehreren zweiten Register 309312 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 309312 und/oder die Inhalte der Datenspeicherbereiche 551555 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 309312 und/oder die Inhalte der Datenspeicherbereiche 551555, 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 309312 umfasst, kann der Prozessor 301 den Wert des Zählers in ein der mehreren zweiten Register 309312 kopieren. In Ausführungsformen, in denen der Prozessor 501 mit einer Einrichtung 550 verbunden ist, die mehrere Datenspeicherbereiche 551555 umfasst, kann der Prozessor 501 den Wert des Zählers in einen der Datenspeicherbereiche 551555 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 309312 und/oder die Inhalte der mehreren Datenspeicherbereiche 551555 nicht aus dem Pufferspeicher 313, 513 gelesen werden, da dadurch angegeben wird, dass die Inhalte der mehreren zweiten Register 309312 und/oder die Inhalte der Datenspeicherbereiche 551555 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 309312 und/oder die Inhalte eines jeden der Datenspeicherbereiche 551555 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 309312 und/oder den Inhalt der Datenspeicherbereiche 551555 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 551555 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.

Claims (16)

  1. Prozessor mit einem ersten Betriebsmodus, der ein Kompatibilitätsmodus ist, in dem der Prozessor den Funktionsumfang eines anderen Prozessors bereitstellt und einem zweiten Betriebsmodus, wobei ein Zustand des Prozessors in dem ersten Betriebsmodus mehrere erste Variablen aufweist, wobei die mehreren ersten Variablen eine Rücksprungadresse umfassen, und wobei ein Zustand des Prozessors in dem zweiten Betriebsmodus zusätzlich zu den mehreren ersten Variablen mehrere zweite Variablen aufweist; wobei die mehreren ersten Variablen Inhalte mehrerer erster Register des Prozessors darstellen, die den Registern des anderen Prozessors entsprechen, und sich die Rücksprungadresse in einem der mehreren ersten Register befindet; wobei der Prozessor im ersten Betriebsmodus einen Befehlssatz bereitstellt, der dem Befehlssatz des anderen Prozessors entspricht; wobei die mehreren zweiten Variablen Inhalte mehrerer zweiter Register des Prozessors und/oder einen Zustand einer mit dem Prozessor verbundenen Einrichtung darstellen; wobei der Prozessor einen Lese-Sprungbefehl umfasst; wobei der Prozessor ausgebildet ist, beim Auftreten einer Unterbrechung oder eines Ausnahmeereignisses während des zweiten Betriebsmodus die Schritte Speichern der mehreren zweiten Variablen und der Rücksprungadresse in einen Pufferspeicher, Ersetzen der Rücksprungadresse in dem einen der mehreren ersten Re gister durch einen Zeiger auf einen Speicherort des in einem Programm bereitgestellten Lese-Sprungbefehls und Schalten in den ersten Betriebsmodus auszuführen, wobei die Schritte unabhängig von einem Betriebssystem ausgeführt werden; und wobei der Lese-Sprungbefehl den Prozessor von dem ersten Betriebsmodus in den zweiten Betriebsmodus schaltet, die mehreren zweiten Variablen und die Rücksprungadresse aus dem Pufferspeicher ausliest, und auf die Rücksprungadresse springt.
  2. Prozessor nach Anspruch 1, der des Weiteren einen Freigabebefehl zur Freigabe des zweiten Betriebsmodus umfasst, wobei der Freigabebefehl zur Festlegung einer ersten der mehreren zweiten Variablen als eine Adresse des Pufferspeichers, zur Festlegung einer zweiten der mehreren zweiten Variablen als eine Adresse des Lese-Sprungbefehls, und zum Schalten des Prozessors in den zweiten Betriebsmodus verwendet wird.
  3. Prozessor nach Anspruch 2, der des Weiteren ausgebildet ist, die erste der mehreren zweiten Variablen beim Auftreten der Unterbrechung oder des Ausnahmeereignisses während des zweiten Betriebsmodus mit einer der mehreren ersten Variablen auszutauschen.
  4. Prozessor nach Anspruch 3, wobei der Lese-Sprungbefehl des Weiteren zum Auslesen der Adresse des Pufferspeichers aus der einen der mehreren ersten Variablen und zum Austauschen der einen der mehreren ersten Variablen mit der ersten der mehreren zweiten Variablen nach dem Lesen der mehreren zweiten Variablen und der Rücksprungadresse aus dem Pufferspeicher, verwendet wird.
  5. Prozessor nach Anspruch 1, der des Weiteren einen Endbefehl zum Schalten des Prozessors von dem zweiten Betriebsmodus in den ersten Betriebsmodus umfasst.
  6. Prozessor nach Anspruch 1, der ausgebildet ist, die Schritte, die während des Auftretens der Unterbrechung oder des Ausnahmeereignisses in dem zweiten Be triebsmodus ausgeführt werden, als eine unteilbare Speicheroperation durchzuführen.
  7. Prozessor nach Anspruch 1, der ausgebildet ist, den Lese-Sprungbefehl als eine unteilbare Speicheroperation durchzuführen.
  8. Prozessor nach Anspruch 1, der des Weiteren eine erste Schaltbefehlsart umfasst, welche die mehreren zweiten Variablen in den Pufferspeicher speichert und den Prozessor von dem zweiten Betriebsmodus in den ersten Betriebsmodus schaltet.
  9. Prozessor nach Anspruch 8, wobei die erste Schaltbefehlsart vor dem Speichern der mehreren zweiten Variablen in den Pufferspeicher des Weiteren eine der mehreren ersten Variablen mit einer der mehreren zweiten Variablen, die eine Adresse des Pufferspeichers enthält, austauscht.
  10. Prozessor nach Anspruch 7, der des Weiteren eine zweite Schaltbefehlsart umfasst, welche die mehreren zweiten Variablen aus dem Pufferspeicher ausliest und den Prozessor von dem ersten Betriebsmodus in den zweiten Betriebsmodus schaltet.
  11. Prozessor nach Anspruch 10, wobei die zweite Schaltbefehlsart nach dem Auslesen der mehreren zweiten Variablen aus dem Pufferspeicher des Weiteren eine der mehreren ersten Variablen, die eine Adresse des Pufferspeichers enthält, mit einer der mehreren zweiten Variablen austauscht.
  12. Prozessor nach Anspruch 1, der des Weiteren einen Zähler umfasst und ausgebildet ist, den Zähler zu erhöhen, wann immer der Prozessor von dem ersten Betriebsmodus in den zweiten Betriebsmodus schaltet.
  13. Prozessor nach Anspruch 12, der ausgebildet ist, einen Wert des Zählers beim Auftreten der Unterbrechung oder des Ausnahmeereignisses während des zweiten Betriebsmodus in den Pufferspeicher zu speichern, und wobei der Lese-Sprungbefehl die mehreren zweiten Variablen nur dann aus dem Pufferspeicher ausliest, wenn sich der gespeicherte Wert des Zählers von einem aktuellen Wert des Zählers unterscheidet.
  14. Prozessor nach Anspruch 12, der ausgebildet ist, einen Wert des Zählers und eine Identifikationsnummer des Prozessors im Falle der Unterbrechung oder des Ausnahmeereignissees in den Pufferspeicher zu speichern, und wobei der Lese-Sprungbefehl die mehreren zweiten Variablen nur dann aus dem Pufferspeicher ausliest, wenn sich zumindest der gespeicherte Wert des Zählers oder die gespeicherte Identifikationsnummer des Prozessors von einem aktuellen Wert des Zählers und einem aktuellen Wert der Identifikationsnummer des Prozessors unterscheidet.
  15. Verfahren zum Betreiben eines Prozessors mit einem ersten Betriebsmodus, der ein Kompatibilitätsmodus ist, in dem der Prozessor den Funktionsumfang eines anderen Prozessors bereitstellt, und einem zweiten Betriebsmodus, wobei ein Zustand des Prozessors in dem ersten Betriebsmodus mehrere erste Variablen aufweist, wobei die mehreren ersten Variablen eine Rücksprungadresse umfassen, und wobei ein Zustand des Prozessors in dem zweiten Betriebsmodus zusätzlich zu den mehreren ersten Variablen mehrere zweite Variablen aufweist, wobei die mehreren ersten Variablen Inhalte mehrerer erster Register des Prozessors darstellen, die den Registern des anderen Prozessors entsprechen, und sich die Rücksprungadresse in einem der mehreren ersten Register befindet; wobei der Prozessor im ersten Betriebsmodus einen Befehlssatz bereitstellt, der dem Befehlssatz des anderen Prozessors entspricht; wobei die mehreren zweiten Variablen Inhalte mehrerer zweiter Register des Prozessors und/oder einen Zustand einer mit dem Prozessor verbundenen Einrichtung darstellen; und wobei der Prozessor einen Lese-Sprungbefehl umfasst; wobei das Verfahren umfasst: Beim Auftreten einer Unterbrechung oder eines Ausnahmeereignisses während des zweiten Betriebsmodus, Ausführen der Schritte: Speichern der mehreren zweiten Variablen und der Rücksprungadresse in einen Pufferspeicher, Ersetzen der Rücksprungadresse in dem einen der mehreren ersten Register durch einen Zeiger auf einen Speicherort des in einem Programm bereitgestellten Lese-Sprungbefehls und Schalten des Prozessors in den ersten Betriebsmodus, wobei die Schritte unabhängig von einem Betriebssystem ausgeführt werden; und Beim Ausführen des Lese-Sprungbefehls, Schalten des Prozessors von dem ersten Betriebsmodus in den zweiten Betriebsmodus, Auslesen der mehreren zweiten Variablen und der Rücksprungadresse aus dem Pufferspeicher und Springen auf die Rücksprungadresse.
  16. Verfahren zum Betreiben eines Prozessors nach Anspruch 15, das beim Auftreten der Unterbrechung oder des Ausnahmeereignisses während des zweiten Betriebsmodus und beim Ausführen des Lese-Sprungbefehls des Weiteren Austauschen einer der mehreren ersten Variablen mit einer der mehreren zweiten Variablen umfasst.
DE102007015507A 2007-03-30 2007-03-30 Prozessor mit einem ersten und einem zweiten Betriebsmodus und Verfahren zu seinem Betrieb Expired - Fee Related DE102007015507B4 (de)

Priority Applications (2)

Application Number Priority Date Filing Date Title
DE102007015507A DE102007015507B4 (de) 2007-03-30 2007-03-30 Prozessor mit einem ersten und einem zweiten Betriebsmodus und Verfahren zu seinem Betrieb
US11/874,402 US7890740B2 (en) 2007-03-30 2007-10-18 Processor comprising a first and a second mode of operation and method of operating the same

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE102007015507A DE102007015507B4 (de) 2007-03-30 2007-03-30 Prozessor mit einem ersten und einem zweiten Betriebsmodus und Verfahren zu seinem Betrieb

Publications (2)

Publication Number Publication Date
DE102007015507A1 DE102007015507A1 (de) 2008-10-02
DE102007015507B4 true DE102007015507B4 (de) 2010-09-02

Family

ID=39719536

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102007015507A Expired - Fee Related DE102007015507B4 (de) 2007-03-30 2007-03-30 Prozessor mit einem ersten und einem zweiten Betriebsmodus und Verfahren zu seinem Betrieb

Country Status (2)

Country Link
US (1) US7890740B2 (de)
DE (1) DE102007015507B4 (de)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2482701C (en) 2010-08-11 2018-12-26 Advanced Risc Mach Ltd Illegal mode change handling
JP6214142B2 (ja) * 2012-10-09 2017-10-18 キヤノン株式会社 情報処理装置、情報処理方法およびプログラム
US10042776B2 (en) * 2012-11-20 2018-08-07 Arm Limited Prefetching based upon return addresses

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0534597B1 (de) * 1991-09-23 2000-04-26 Intel Corporation Rechnersystem mit Software-Unterbrechungsbefehlen, das selektiv in einem virtuellen Modus arbeitet
US5721931A (en) * 1995-03-21 1998-02-24 Advanced Micro Devices Multiprocessing system employing an adaptive interrupt mapping mechanism and method
US6105101A (en) * 1998-05-06 2000-08-15 Compaq Computer Corporation 16 bit bios interrupt calls under 32 bit protected mode application
US6826760B1 (en) * 1999-06-16 2004-11-30 Microsoft Corporation Methods of factoring operating system functions, methods of converting operating systems, and related apparatus
US7444500B1 (en) * 2000-08-14 2008-10-28 General Software, Inc. Method for executing a 32-bit flat address program during a system management mode interrupt
EP1805609A2 (de) * 2004-08-18 2007-07-11 Jaluna SA Betriebssysteme
US7523446B2 (en) * 2006-11-30 2009-04-21 International Business Machines Corporation User-space return probes

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
Criswell, J. et al.: A virtual instruction set interface for operating system kernels. Workshop on the Interaction between Operating Systems and Computer Architecture (WIOSCA '06), Boston, Massachusetts, USA, 2006, pp. 1-8 (recherchiert am 07.12.07) *
Criswell, J. et al.: A virtual instruction set interface for operating system kernels. Workshop on the Interaction between Operating Systems and Computer Architecture (WIOSCA '06), Boston, Massachusetts, USA, 2006, pp. 1-8 <http://llvm.org/pubs /2006-06- 18-WIOSCA-LLVAOS.pdf> (recherchiert am 07.12.07) Tricore 1 Volume 2 v. 1.3 Instruction Set. Edition 2005-02 Infineon Technologies AG 2005. S. 3-333. (recherchiert am 17.08.09)
Tricore 1 Volume 2 v. 1.3 Instruction Set. Edition 2005-02 Infineon Technologies AG 2005. S. 3-333. (recherchiert am 17.08.09) *

Also Published As

Publication number Publication date
DE102007015507A1 (de) 2008-10-02
US20080244137A1 (en) 2008-10-02
US7890740B2 (en) 2011-02-15

Similar Documents

Publication Publication Date Title
DE102007025397B4 (de) System mit mehreren Prozessoren und Verfahren zu seinem Betrieb
DE69434728T2 (de) Synchronisationssystem und verfahren in einem datencachesystem mit aufgeteiltem pegel
DE2722099C2 (de)
DE2714805C2 (de)
DE10085374B4 (de) Systemmanagementspeicher für die Systemmanagement-Interrupt-Behandler wird in die Speichersteuereinrichtung integriert, unabhängig vom BIOS und Betriebssystem
DE10393920B4 (de) Verfahren und Systeme zur Steuerung virtueller Maschinen
DE60217157T2 (de) Verfahren und vorrichtung zum binden von shadow-registern an vektorisierte interrupts
DE60210633T2 (de) Verfahren und vorrichtungen zur verbesserung des durchsatzes von eingebetteten prozessoren auf cache-basis durch umschalten von tasks als reaktion auf eine cache-verfehlung
DE112012000303B4 (de) Dynamische binäre Optimierung
DE60224774T2 (de) Datenverarbeitungssystem mit Lese-, Änderungs- und Schreibeinheit
DE2411963C3 (de) Elektronische Datenverarbeitungsanlage mit einer Prioritätssteuerschaltung mit änderbaren Steuerblöcken
DE69723286T2 (de) Echtzeitprogramm-sprachbeschleuniger
DE2902465A1 (de) Datenverarbeitungsanordnung
DE2517276A1 (de) Datenverarbeitungssystem
DE102007006190A1 (de) Techniken zur Verwendung von Speicher-Attributen
DE112007001171T5 (de) Verfahren für virtualisierten Transaktionsspeicher bei globalem Überlauf
DE2716051A1 (de) Datenverarbeitungsanlage, bei der zum speicherzugriff schluessel verwendet werden
DE2657848A1 (de) Steuereinheit fuer ein datenverarbeitungssystem
DE112010005821T5 (de) Kontextwechsel
DE112005002370T5 (de) Ausführung von Kontrollbefehlen in redundanten Multithreadingumgebungen
DE102006039747A1 (de) Verfahren für Kontextzustandsmanagement
DE112006002908T5 (de) Technik für die Kommunikation und Synchronisation von Threads
DE69727177T2 (de) Emulation von asynchronen Signalen mit Verzweigungsmechanismus
DE102018109538A1 (de) Techniken zum umfassenden Synchronisieren einer Ausführung von Threads
DE112014000340T5 (de) Vorablesezugriff auf Daten für einen Chip mit einem übergeordneten Kern und einem Scout-Kern

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
8327 Change in the person/name/address of the patent owner

Owner name: GLOBALFOUNDRIES INC., GRAND CAYMAN, KY

8328 Change in the person/name/address of the agent

Representative=s name: GRUENECKER, KINKELDEY, STOCKMAIR & SCHWANHAEUSSER,

8364 No opposition during term of opposition
R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee

Effective date: 20131001