DE102007025397B4 - System mit mehreren Prozessoren und Verfahren zu seinem Betrieb - Google Patents

System mit mehreren Prozessoren und Verfahren zu seinem Betrieb Download PDF

Info

Publication number
DE102007025397B4
DE102007025397B4 DE102007025397A DE102007025397A DE102007025397B4 DE 102007025397 B4 DE102007025397 B4 DE 102007025397B4 DE 102007025397 A DE102007025397 A DE 102007025397A DE 102007025397 A DE102007025397 A DE 102007025397A DE 102007025397 B4 DE102007025397 B4 DE 102007025397B4
Authority
DE
Germany
Prior art keywords
processor
main processor
variables
subordinate
register
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.)
Active
Application number
DE102007025397A
Other languages
English (en)
Other versions
DE102007025397A1 (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.)
Advanced Micro Devices 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 DE102007025397A priority Critical patent/DE102007025397B4/de
Priority to US12/014,868 priority patent/US7689809B2/en
Priority to TW97119627A priority patent/TWI467490B/zh
Priority to EP08767909A priority patent/EP2171575B1/de
Priority to KR1020097027561A priority patent/KR101485068B1/ko
Priority to AT08767909T priority patent/ATE516533T1/de
Priority to CN200880018013.4A priority patent/CN101730881B/zh
Priority to PCT/US2008/006744 priority patent/WO2008153797A1/en
Priority to JP2010510321A priority patent/JP5295228B2/ja
Publication of DE102007025397A1 publication Critical patent/DE102007025397A1/de
Priority to GB0920863A priority patent/GB2461841A/en
Application granted granted Critical
Publication of DE102007025397B4 publication Critical patent/DE102007025397B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • 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/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • 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/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30087Synchronisation or serialisation 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
    • G06F9/3009Thread control 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/30098Register arrangements
    • 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/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • 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
    • 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline, look ahead using a slave processor, e.g. coprocessor
    • 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/3877Concurrent instruction execution, e.g. pipeline, look ahead using a slave processor, e.g. coprocessor
    • G06F9/3879Concurrent instruction execution, e.g. pipeline, look ahead using a slave processor, e.g. coprocessor for non-native instruction execution, e.g. executing a command; for Java instruction set
    • 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/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • G06F9/3889Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute
    • 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

Abstract

System mit einem Hauptprozessor und mindestens einem untergeordneten Prozessor, wobei ein Zustand des Hauptprozessors mehrere erste Variablen umfasst, und ein Zustand des untergeordneten Prozessors mehrere zweite Variablen umfasst, wobei das System einen parallelen Betriebsmodus, in dem Daten durch den Hauptprozessor und den mindestens einen untergeordneten Prozessor verarbeitet werden, sowie einen seriellen Betriebsmodus, in dem Daten nur durch den Hauptprozessor verarbeitet werden, aufweist;
wobei die ersten Variablen Inhalte von Registern des Hauptprozessors darstellen und eine erste Rücksprungadresse umfassen, die in einem ersten Register gespeichert ist, und die zweiten Variablen Inhalte von Registern des untergeordneten Prozessors darstellen, und eine zweite Rücksprungadresse umfassen, die in einem zweiten Register gespeichert ist;
wobei das System einen Lese-Sprungbefehl umfasst;
wobei das System dafür ausgelegt ist, im Fall einer Unterbrechung oder Ausnahme, die während des parallelen Betriebsmodus im Hauptprozessor auftritt, die Befehlsverarbeitung in dem mindestens einen untergeordneten Prozessor anzuhalten, und die Schritte des Speicherns...

Description

  • GEBIET DER VORLIEGENDEN ERFINDUNG
  • Die vorliegende Erfindung bezieht sich allgemein auf das Gebiet der Computersysteme, insbesondere auf Systeme mit mehreren Prozessoren.
  • BESCHREIBUNG DES STANDES DER TECHNIK
  • Computersysteme mit mehreren Prozessoren nach dem Stand der Technik sind in den Druckschriften US 2007/0067533 A1 und US 5,978,838 A beschrieben.
  • In modernen 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 z. B. RAMs sowie langsame, aber nicht flüchtige Speichervorrichtungen wie z. B. Festplatten umfassen. 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 zeigen 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 bis 105 gelesen werden und Daten in den Registern 102 bis 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 bis 105 zu verändern, sowie Befehle, um Daten zwischen den Registern 102 bis 105 und dem Systemspeicher 104 und/oder zwischen den Registern 102 bis 105 zu übertragen.
  • Außerdem können Befehle vorgesehen sein, die eine Kombination solcher Aufgaben ausführen. Üblicherweise kann der Prozessor 101 auf Daten in den Registern 102 bis 105 wesentlich schneller zugreifen als auf Daten, die in dem Systemspeicher 104 gespeichert sind.
  • Um die Leistungsfähigkeit des Computersystems 100 zu verbessern, kann es wünschenswert sein, an Stelle eines einzelnen Prozessors 101 mehrere Prozessoren bereitzustellen. Damit können mehrere Verarbeitungsvorgänge (Tasks) und/oder Threads gleichzeitig ausgeführt werden. Dies kann dabei helfen, die Arbeitsgeschwindigkeit des Computersystems 100 zu erhöhen.
  • In Computersystemen nach dem Stand der Technik kann eine Erhöhung der Anzahl der Prozessoren jedoch eine Veränderung des Betriebssystems erfordern, was im Folgenden mit Bezug auf 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 bis 215, die durch den Prozessor 101 nacheinander abzuarbeiten sind. Somit geht der Prozessor 101 vom Befehl 210 zum Befehl 211 über und vom Befehl 211 zum Befehl 212.
  • Während der Verarbeitungsvorgang 201 abgearbeitet wird, kann eine Unterbrechung oder Ausnahme auftreten, z. B. während oder nach der Bearbeitung des Befehls 212, was in 1b schematisch durch einen Pfeil 230 angedeutet wird. Eine Ausnahme kann im Fall eines Fehlers während der Verarbeitung des Befehls 212 erzeugt werden, beispielsweise im Fall einer Teilung durch Null oder im Fall einer Fehlermeldung vom Systemspeicher 104, wie etwa einem Seitenzugriffsfehler. Ausnahmen können auch ordnungsgemäß durch Befehle des Verarbeitungsvorgangs 201 erzeugt werden, beispielsweise durch den Befehl 212. Eine typische Anwendung einer Ausnahme, 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-/Ausgabe-vorrichtung 103 oder durch eine Synchronisationsanforderung des Eingabe-/Ausgabe-geräts 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 Fall einer Unterbrechung oder Ausnahme kann die Ausführung des Verarbeitungsvorgangs 201 unterbrochen werden und eine Unterbrechungsroutine 202, die beispielsweise Teil des Betriebssystems sein kann, wird ausgeführt. Die Unterbrechungsroutine 202 umfasst mehrere Befehle 220 bis 225. Diese Befehle werden nacheinander abgearbeitet. Nach der Verarbeitung des letzten Befehls 225 der Unterbrechungsroutine 202 wird die Ausführung des Verarbeitungsvorgangs 201 an 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 bis 105 des Prozessors 101 verändern. Um sicherzustellen, dass der Verarbeitungsvorgang 201 trotz der Unterbrechung oder Ausnahme richtig funktioniert, wird nach dem Auftreten der Unterbrechung oder Ausnahme der Inhalt der Register 102 bis 105 an einen 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 bis 105 gelesen. Somit können die Register 102 bis 105 im Wesentlichen dieselben Daten enthalten, als wenn der Befehl 213 unmittelbar nach dem Befehl 212 ausgeführt würde, wenn die Verarbeitung des Verarbeitungsvorgangs 201 durch die Ausführung des Befehls 213 fortgesetzt wird.
  • In Computersystemen 100 nach dem Stand der Technik wird das Kopieren des Inhalts der Register an den Speicherort und zurück durch Befehle bewirkt, die in der Unterbrechungsroutine 202, die als Teil des Betriebssystems des Computersystems 100 implementiert ist, bereitgestellt sind. Somit können Veränderungen des Betriebssystems erforderlich sein, falls in dem Computersystem 100 zusätzliche Prozessoren bereitgestellt werden, um sicherzustellen, dass der Inhalt der Register des Prozessors im Fall einer Unterbrechung oder Ausnahme, die in einem der Prozessoren auftritt, richtig im Systemspeicher abgespeichert und nach Beendigung der Unterbrechungsroutine zurück in die Register gelesen wird.
  • Weitere Veränderungen des Betriebssystems können erforderlich sein, um die Verarbeitung von Prozessen und Tasks auf die einzelnen Prozessoren zu verteilen. In Computersystemen nach dem Stand der Technik wird die Steuerung der Verarbeitung der Prozesse und/oder Threads in den Prozessoren und die Verteilung von Programmen und/oder Threads auf die Prozessoren vom Betriebssystem durchgeführt. Neben dem Erfordernis, das Betriebssystem an das Vorhandensein mehrerer Prozessoren anzupassen, kann die Steuerung der Verarbeitung der Prozesse und/oder Threads einen relativ großen Overhead für die Erzeugung und/oder Steuerung der Prozesse und/oder Threads erfordern. Insbesondere kann ein erheblicher Overhead durch das Kopieren des Inhalts der Register der Prozessoren an einen Speicherort vor dem Aufruf einer Betriebssystemsroutine und das Zurücklesen des Inhalts des Speicherorts in die Register nach Beendigung der Betriebssystemsroutine erzeugt werden.
  • Ein Nachteil des Computersystems 100 nach dem Stand der Technik ist, dass zusätzliche Prozessoren, die in dem Computersystem 100 bereitgestellt werden, nicht vernünftig ver wendet werden können, bis die Hersteller von Betriebssystemen eine Unterstützung der zusätzlichen Prozessoren oder sonstigen zusätzlichen Vorrichtungen implementieren.
  • Ein weiterer Nachteil des Computersystems 100 nach dem Stand der Technik ist, dass ein relativ großer Overhead für die Erzeugung und/oder Steuerung von Prozessen und/oder Threads durch das Betriebssystem die Leistungsfähigkeit des Computersystems 100 verringern kann, insbesondere falls relativ feinkörniges Multitasking und/oder Multithreading verwendet wird.
  • Ferner kann es sogar in Computersystemen nach dem Stand der Technik, die mehrere Prozessoren unterstützen, wünschenswert sein, zusätzliche Prozessoren oder Merkmale vor dem Betriebssystem zu verstecken. Dies kann insbesondere für zusätzliche Hardware und/oder Prozessoren gelten, die das Betriebssystem nicht kennt. Somit ist ein weiterer Nachteil der Computersysteme nach dem Stand der Technik sein, dass es schwierig sein kann, zusätzliche Ressourcen wie Prozessoren oder Hardware zu verwenden, die für das Betriebssystem nicht sichtbar sind.
  • Es ist deshalb eine Aufgabe der vorliegenden Erfindung, ein Computersystem und ein Verfahren zum Betreiben eines Computersystems bereitzustellen, die es ermöglichen, einige oder alle der oben erwähnten Nachteile zu überwinden oder zu verringern.
  • ZUSAMMENFASSUNG DER ERFINDUNG
  • Erfindungsgemäß wird die Aufgabe durch ein System mit einem Hauptprozessor und mindestens einem untergeordneten Prozessor gemäß Anspruch 1 gelöst.
  • Weiter erfindungsgemäß wird die Aufgabe durch ein Verfahren zum Betreiben eines Systems mit einem Hauptprozessor und mindestens einem untergeordneten Prozessor gemäß Anspruch 8 gelöst.
  • 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 folgenden ausführlichen Beschreibung besser ersichtlich, wenn diese mit Bezug auf die beigefügten Zeichnungen verwendet wird. Es zeigen:
  • 1a eine schematische Zeichnung eines Computersystems nach dem Stand der Technik;
  • 1b ein schematisches Flussdiagramm eines Programms und einer Unterbrechungsroutine, die auf einem Computersystem nach dem Stand der Technik ablaufen;
  • 2a eine schematische Zeichnung eines Computersystems gemäß einer Ausführungsform der vorliegenden Erfindung;
  • 2b ein schematisches Flussdiagramm eines Programms, das auf einem Computersystem gemäß einer Ausführungsform der vorliegenden Erfindung abläuft; und
  • 2c ein schematisches Flussdiagramm eines Programms und einer Unterbrechungsroutine, die auf einem Computersystem gemäß einer Ausführungsform der vorliegenden Erfindung ablaufen.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Obwohl der vorliegende Gegenstand mit Bezug auf die in der folgenden ausführlichen Beschreibung und in den Zeichnungen dargestellten Ausführungsformen beschrieben wird, sollte verstanden werden, dass die folgende ausführliche Beschreibung sowie die Zeichnungen nicht beabsichtigen, den vorliegenden Gegenstand auf die speziellen veranschauli chenden Ausführungsformen, die offenbart werden, einzuschränken, sondern dass vielmehr die beschriebenen veranschaulichenden Ausführungsformen lediglich Beispiele für die verschiedenen Aspekte des vorliegenden Gegenstands geben, dessen Umfang durch die beigefügten Patentansprüche definiert ist.
  • Gemäß einer Ausführungsform wird ein Computersystem bereitgestellt, das einen Hauptprozessor und mindestens einen untergeordneten Prozessor umfasst. Während das Computersystem in manchen Ausführungsformen einen einzigen untergeordneten Prozessor umfassen kann, können in anderen Ausführungsformen mehrere untergeordnete Prozessoren bereitgestellt werden. Das Computersystem umfasst einen parallelen Betriebsmodus, in dem Daten sowohl vom Hauptprozessor, als auch von dem mindestens einen untergeordneten Prozessor verarbeitet werden. In Ausführungsformen, in denen das Computersystem mehrere untergeordnete Prozessoren aufweist, kann im parallelen Betriebsmodus jeder der Unterprozessoren oder nur ein Teil der Unterprozessoren gleichzeitig Befehle verarbeiten. Somit können im parallelen Betriebsmodus im Hauptprozessor und den Unterprozessoren mehrere Verarbeitungsvorgänge gleichzeitig ausgeführt werden, um die Leistung des Computersystems zu verbessern. Der serielle Betriebsmodus kann in manchen Ausführungsformen ein Kompatibilitätsmodus sein, in dem das Computersystem den Funktionsumfang eines Vorgängermodells mit nur einem einzigen Prozessor bereitstellt.
  • Ein Zustand des Hauptprozessors umfasst mehrere Variablen, die für Inhalte von Registern der Hauptprozessoren repräsentativ sein können. Entsprechend kann ein Zustand von jedem der untergeordneten Prozessoren mehrere Variablen die für Inhalte von Registern des untergeordneten Prozessors repräsentativ sind und/oder ein Laufstatusbit, das anzeigt, ob der Unterprozessor gerade Befehle verarbeitet, umfassen. Sowohl im Hauptprozessor als auch in den untergeordneten Prozessoren kann eine der mehreren Variablen des jeweiligen Prozessors eine Rücksprungadresse umfassen, an der der Prozessor in Abwesenheit einer Unterbrechung oder Ausnahme die Befehlsverarbeitung fortsetzt. Beispielsweise kann die Rücksprungadresse in einem der Register des jeweiligen Prozessors bereitgestellt werden.
  • Das Computersystem kann einen Variablen-Sendebefehl umfassen, der dafür ausgelegt ist, Werte von einer oder mehreren der mehreren Variablen des Hauptprozessors in eine oder mehrere der mehreren Variablen von einem der untergeordneten Prozessoren zu schreiben. Somit können Parameter eines untergeordneten Prozessors eingestellt werden, bevor die Verarbeitung eines Threads durch den untergeordneten Prozessor beginnt. Die Befehlsverarbeitung in jedem der untergeordneten Prozessoren kann mithilfe eines Verzweigungsbefehls gestartet werden, der eine Identifikationsnummer des untergeordneten Prozessors, in dem die Befehlsverarbeitung gestartet werden soll und eine Zieladresse, an der die Befehlsverarbeitung beginnen soll, als Argumente erhält. Die Verarbeitung von Threads in den untergeordneten Prozessoren kann mithilfe eines Verbindungsbefehls der untergeordneten Prozessoren beendet werden. Wenn in einer Befehlssequenz, die von dem untergeordneten Prozessor abgearbeitet wird, der Verbindungsbefehl des untergeordneten Prozessors auftritt, beendet der untergeordnete Prozessor die Befehlsverarbeitung. Für die Synchronisation zwischen dem Hauptprozessor und einem der untergeordneten Prozessoren kann ein Verbindungsbefehl des Hauptprozessors verwendet werden. Der Verbindungsbefehl des Hauptprozessors wird mit der Identifikationsnummer des Unterprozessors als Argument aufgerufen. Wenn in einer Befehlssequenz, die von dem Hauptprozessor abgearbeitet wird, der Verbindungsbefehl des Hauptprozessors auftritt, wartet der Hauptprozessor, bis die Befehlsverarbeitung in dem untergeordneten Prozessor, der im Argument des Verbindungsbefehls des Hauptprozessors angegeben wurde, beendet ist. Das Computersystem kann ferner einen Variablen-Empfangsbefehl aufweisen, der dafür ausgelegt ist, Werte von einer oder mehreren der mehreren Variablen eines der untergeordneten Prozessoren in eine oder mehrere der mehreren Variablen des Hauptprozessors zu schreiben. Der Variablen-Empfangsbefehl kann verwendet werden, um Ergebniswerte oder einen Zeiger auf einen Speicherpuffer, der Ergebnisse der Ausführung des Verarbeitungsvorgangs durch den untergeordneten Prozessor enthält, zu empfangen.
  • Somit können in dem Computersystem Prozesse und/oder Threads im Hauptprozessor und in den untergeordneten Prozessoren parallel ausgefüllt werden. Mit den oben beschriebenen Befehlen kann die Ausführung von Verarbeitungsvorgängen in einem oder mehreren der untergeordneten Prozessoren unabhängig von einem Betriebssystem, das auf dem Computersystem läuft, gestartet und gestoppt werden.
  • Das Computersystem kann dafür ausgelegt sein, im Fall einer Unterbrechung oder Ausnahme, die im parallelen Betriebsmodus auftritt, mindestens einen Teil der Variablen, die für den Zustand des Hauptprozessors und der untergeordneten Prozessoren repräsentativ sind, in einem Pufferspeicher abzuspeichern und das System in den seriellen Betriebsmodus zu schalten. insbesondere können die Variablen der untergeordneten Prozessoren und Variablen des Hauptprozessors, wie etwa ein Inhalt von Registern, die in einem Vorgängermodell des Computersystems nicht vorhanden sind, abgespeichert werden. Somit muss das Betriebssystem nicht dafür ausgelegt sein, die Variablen des untergeordneten Prozes sors und die Variablen des Hauptprozessors, die in einem Computersystem mit einem einzigen Prozessor nicht verwendet werden, abzuspeichern. Somit kann das Computersystems mit einem Vorgängermodell, das einen einzigen Prozessor umfasst, kompatibel sein und ein Betriebssystem, das an das Vorgängermodell angepasst ist, kann für das Computersystem verwendet werden.
  • Falls die Unterbrechung oder Ausnahme in einem untergeordneten Prozessor aufgetreten ist, kann mindestens eine der mehreren Variablen des Hauptprozessors auf einen Wert von mindestens einer der mehreren Variablen des untergeordneten Prozessors, in dem die Unterbrechung oder Ausnahme aufgetreten ist, gesetzt werden. Somit können Variablen des untergeordneten Prozessors an das Betriebssystem übergeben werden, das Daten, die für eine vom Betriebssystem ausgeführte Unterbrechungsroutine relevant, vom Hauptprozessor lesen kann.
  • Das Computersystem kann ferner einen Lese-Sprungbefehl aufweisen. Der Lese-Sprungbefehl kann dafür ausgelegt sein, diejenigen Variablen der untergeordneten Prozessoren und wahlweise des Hauptprozessors, die bei der Unterbrechung oder Ausnahme abgespeichert wurden, aus dem Pufferspeicher zu lesen. Außerdem kann der Lese-Sprungbefehl dafür ausgelegt sein, das Computersystem aus dem seriellen Betriebsmodus in den parallelen Betriebsmodus zu schalten. Falls die Unterbrechung oder Ausnahme in dem untergeordneten Prozessor aufgetreten ist, kann der Lese-Sprungbefehl diejenigen Variablen des Hauptprozessors, die auf Werte von Variablen des untergeordneten Prozessors gesetzt wurden, als die Unterbrechung oder Ausnahme auftrat, in die Variablen des untergeordneten Prozessors schreiben. Dies kann geschehen, bevor die eigenen Variablen des Hauptprozessors aus dem Pufferspeicher gelesen werden.
  • Im Fall einer Unterbrechung oder Ausnahme kann die Rücksprungadresse des Hauptprozessors durch eine Adresse des Lese-Sprungbefehls ersetzt werden. Somit wird der Lese-Sprungbefehl nach Beendigung der Unterbrechungsroutine automatisch aufgerufen. Dadurch können die Variablen des untergeordneten Prozessors und/oder des Hauptprozessors, die in einem Computersystem mit einem einzigen Prozessor nicht vorhanden sind, unabhängig vom Betriebssystem gehandhabt werden. Dadurch wird eine für das Betriebssystem transparente Verwendung des parallelen Betriebsmodus des Computersystems ermöglicht. Somit sind im Wesentlichen keine Anpassungen des Betriebssystems erforderlich, um die Verwendung des parallelen Betriebsmodus des Computersystems zu ermöglichen.
  • Weitere Ausführungsformen der vorliegenden Erfindung werden mit Bezug auf die 2a bis 2c beschrieben.
  • 2a zeigt eine schematische Zeichnung eines Computersystems 300 gemäß einer Ausführungsform. Das Computersystem 300 umfasst einen Hauptprozessor 301 und untergeordnete Prozessoren 321, 331. Die vorliegende Erfindung ist jedoch nicht auf Ausführungsformen beschränkt, in denen, wie in 2a gezeigt, zwei untergeordnete Prozessoren vorhanden sind. In anderen Ausführungsformen können drei oder mehr untergeordnete Prozessoren vorhanden sein. In noch weiteren Ausführungsformen kann das Computersystem 300 einen einzigen untergeordneten Prozessor umfassen. Ferner ist die vorliegende Erfindung nicht auf Ausführungsformen beschränkt, in denen die untergeordneten Prozessoren 321, 331 Universalprozessoren sind. In andern Ausführungsformen können die untergeordneten Prozessoren 321, 331 Hardware zum Bereitstellen spezieller Funktionen (special function hardware) umfassen.
  • Das Computersystem 300 kann ferner einen Systemspeicher 304 und Eingabe/Ausgabevorrichtungen 303 umfassen. Pfeile 314 bezeichnen schematisch die Übertragung von Daten zwischen dem Hauptprozessor 301, den untergeordneten Prozessoren 321, 331, dem Systemspeicher 304 und den Eingabe/Ausgabevorrichtungen 303.
  • Der Hauptprozessor 301 umfasst mehrere Register 302307. In manchen Ausführungsformen der vorigen Erfindung können die mehreren Register 302307 eine erste Teilmenge, die beispielsweise die Register 302305 enthalten kann und eine zweite Teilmenge, die die Register 306, 307 enthalten kann, umfassen. Die Register 302305 der ersten Teilmenge können den Registern eines Prozessors in einem Computersystem nach dem Stand der Technik entsprechen, beispielsweise den Registern 102105 des Prozessors 101 in dem oben mit Bezug auf die 1a und 1b beschriebenen Computersystem 100. Der Hauptprozessor 301 kann ferner dafür ausgebildet sein, in einen seriellen Betriebsmodus des Computersystems 300 einen Befehlsatz bereitzustellen, der den Befehlsatz des Prozessors 101 nach dem Stand der Technik umfasst. Somit kann das Computersystem 300 im seriellen Betriebssetmodus Binärcode, der für das Computersystem 100 nach dem Stand der Technik erstellt wurde, ausführen.
  • Die Register 306, 307 der zweiten Untermenge können dafür verwendet werden, eine Datenübertragung, die mit der parallelen Datenverarbeitung im Hauptprozessor 301 und den untergeordneten Prozessoren 321, 331 im Zusammenhang steht, handzuhaben, was unten genauer erläutert wird.
  • Ähnlich dem Hauptprozessor 301 kann der erste untergeordnete Prozessor 321 mehrere Register 322325 umfassen und der zweite untergeordnete Prozessor 331 kann mehrere Register 332335 aufweisen. In manchen Ausführungsformen können die Register 322325, 332335 der untergeordneten Prozessoren 321, 331 der ersten Teilmenge 302305 der Register des Hauptprozessors 301 entsprechen. In jedem der Register 302307, 322325 und 332335 können Variablen, die für den Zustand des Hauptprozessors 302, des ersten untergeordneten Prozessors 321 und des zweiten untergeordneten Prozessors 331 repräsentativ sind, gespeichert werden.
  • In manchen Ausführungsformen der vorliegenden Erfindung können sowohl der Hauptprozessor 301 als auch die untergeordneten Prozessoren 321, 331 dafür ausgelegt sein, den Funktionsumfang eines Prozessors des den Fachleuten wohl bekannten Typs x86 oder x86-64 bereitzustellen. In anderen Ausführungsformen können sowohl der Hauptprozessor 301 als auch die untergeordneten Prozessoren 321, 331 dafür ausgelegt sein, den Funktionsumfang eines Prozessors eines anderen Typs bereitzustellen. In noch weiteren Ausführungsformen kann der Hauptprozessor 301 dafür ausgelegt sein, den Funktionsumfang eines anderen Prozessortyps bereitzustellen als die untergeordneten Prozessoren 321, 331.
  • In einer Ausführungsform kann der Hauptprozessor 301 dafür ausgelegt sein, den Funktionsumfang eines von einem vorhandenen Betriebssystem unterstützten Prozessortyps bereitzustellen, beispielsweise den Funktionsumfang eines x86- oder x86-64-Prozessors und die untergeordneten Prozessoren 321, 331 können Prozessoren eines anderen Typs sein, der vom Betriebssystem nicht unterstützt werden muss. Beispielsweise können die untergeordneten Prozessoren 321, 331 eine vereinfachte Architektur aufweisen, um eine von den untergeordneten Prozessoren 321, 331 auf einem Chip belegte Fläche zu minimieren. Dies kann dabei helfen, die Anzahl der untergeordneten Prozessoren 321, 331 des Computersystems 300 zu vergrößern, um die Leistungsfähigkeit des Computersystems 300 zu steigern. Außerdem kann eine vereinfachte Architektur der untergeordneten Prozessoren 321, 331 eine höhere Taktfrequenz der untergeordneten Prozessoren 321, 331 ermöglichen, um die Arbeitsgeschwindigkeit jedes einzelnen untergeordneten Prozessors zu vergrößern.
  • In manchen Ausführungsformen der vorliegenden Erfindung können der Hauptprozessor 301 und einer oder mehrere der untergeordneten Prozessoren 321, 331 auf einem einzigen Chip bereitgestellt werden. In anderen Ausführungsformen können sich der Hauptprozessor 301 und die untergeordneten Prozessoren 321, 331 auf verschiedenen Chips befinden.
  • Der Hauptprozessor 301 kann ein Indikatorbit 308 und ein Steuerregisterbit 309 aufweisen. Das Indikatorbit 308 kann ein nichtarchitektonisches (non-architectural) sichtbares Bit sein, das anzeigt, ob das Computersystem 300 momentan im seriellen Betriebsmodus, in dem Daten durch den Hauptprozessor 301 verarbeitet werden können oder in einem parallelen Betriebsmodus, in dem Daten sowohl durch den Hauptprozessor 301 als auch durch einen oder mehrere der untergeordneten Prozessoren 321, 331 verarbeitet werden können, arbeitet. Das Steuerregisterbit 309 kann anzeigen, ob der parallele Betriebsmodus erlaubt ist. Wenn das Steuerregisterbit 309 auf einen ersten Wert gesetzt ist, beispielsweise auf den Wert „EIN”, können Programme im parallelen Betriebsmodus des Computersystems 300 laufen. Wenn jedoch das Steuerregisterbit 309 auf einen zweiten Wert gesetzt ist, beispielsweise auf den Wert „AUS”, kann das Computersystem 300 nur im seriellen Betriebsmodus verwendet werden.
  • Ähnlich wie der Hauptprozessor 301 kann jeder der untergeordneten Prozessoren 321, 331 ein Indikatorbit und ein Steuerregisterbit aufweisen. In 2a bezeichnen Bezugszeichen 328, 338 Indikatorbits der untergeordneten Prozessoren 321, 331 und Bezugszeichen 329, 339 bezeichnen Steuerregisterbits der untergeordneten Prozessoren 321, 331. In anderen Ausführungsformen müssen die untergeordneten Prozessoren 321, 331 keine Indikatorbits 328, 329 aufweisen. In solchen Ausführungsformen kann das Steuerregisterbit 309 des Hauptprozessors 301 verwendet werden, um anzuzeigen, dass der parallele Betriebsmodus des Computersystems 300 erlaubt ist und das Indikatorbit 309 des Hauptprozessors 301 kann verwendet werden, um anzuzeigen, dass sich das Computersystem 300 im parallelen Betriebsmodus befindet.
  • Der erste untergeordnete Prozessor 321 kann ferner ein Laufstatusbit 330 aufweisen. Das Laufstatusbit 330 zeigt an, ob der erste untergeordnete Prozessor 321 gerade läuft oder ob der erste untergeordnete Prozessor 321 angehalten ist. Beispielsweise kann ein Wert „EIN” des Laufstatusbits 330 anzeigen, dass der erste untergeordnete Prozessor 321 gerade läuft und ein Wert „AUS” des Laufstatusbits 330 kann anzeigen, dass der erste untergeordnete Prozessor 321 angehalten ist. Ähnlich dem ersten untergeordneten Prozessor 321 kann der zweite untergeordnete Prozessor 331 ebenfalls ein Laufstatusbit 340 aufweisen.
  • In dem Systemspeicher 304 kann ein Pufferspeicher 313 bereitgestellt werden. In dem Pufferspeicher 313 können im Fall einer Unterbrechung oder Ausnahme, die auftritt, während sich das Computersystem 300 im parallelen Betriebsmodus befindet, der Inhalt von einigen oder allen der Register 302 bis 307 des Hauptprozessors, der Inhalt von allen oder einigen der Register 322325, 332335 der untergeordneten Prozessoren 321, 331 und weitere Informationen wie beispielsweise Werte der Indikatorbits 308, 328, 338, der Steuerregisterbits 309, 329, 339 und/oder der Laufstatusbits 330, 340 abgespeichert werden, was unten genauer erläutert wird. Falls in dem Computersystem 300 Multitasking durchgeführt wird, kann für jeden Prozess ein eigener Pufferspeicher reserviert werden.
  • In manchen Ausführungsformen der vorliegenden Erfindung kann der Pufferspeicher 313 reserviert werden, indem eine CPU-Treiberroutine von dem Code eines Programms, in dem der parallele Betriebsmodus des Computersystems 300 verwendet werden soll, aus aufgerufen wird. Die CPU-Treiberroutine kann dafür ausgelegt sein, einen Speicherbereich mit einer Größe zu reservieren, die dafür ausreicht, den Inhalt der Register 302307, 322325 und 332335 und wahlweise weitere Informationen abzuspeichern, was oben genauer ausgeführt wurde. In manchen Ausführungsformen der vorliegenden Erfindung kann sich der Pufferspeicher 313 in einem 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 manchen Computersystemen 300 kann eine Reservierung von Speicher in dem 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 physikalischen Speicher bleibt und keine Seitenfehler auftreten. Dies kann es erleichtern, den Inhalt der mehreren zweiten Register 309312 und wahlweise weitere Daten mit Hilfe einer unteilbaren Speicheroperation in den Pufferspeicher 313 zu speichern bzw. aus diesem zu lesen. Somit können vorteilhafterweise Fehler vermieden werden, die auftreten könnten, falls eine Unterbrechung oder Ausnahme aufträte, während Daten in den Pufferspeicher 313 geschrieben werden.
  • Die CPU-Treiberroutine kann dafür ausgelegt sein, eine Speicheradresse des Pufferspeichers 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 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 nicht in Seiten einge teilten 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 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 die Fachleute wissen, können CPU-Treiberroutinen während des Hochfahrens des Betriebssystems vom Betriebssystem geladen werden und Funktionen bereitstellen, die von Programmen, die auf den 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.
  • Das Computersystem 300 kann einen Aktivierungsbefehl zum Aktivieren des parallelen Betriebsmodus des Computersystems 300 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 Computersystem 300 bereitgestellt. In manchen Ausführungsformen kann der Lese-Sprungbefehl vom Hauptprozessor 301 bereitgestellt werden. Üblicherweise wird der Lese-Sprungbefehl verwendet, um den Inhalt von einigen oder allen der Register 302307, 322325 und 332335 nach Beendigung der Unterbrechungsroutine wiederherzustellen, was unten genauer erläutert wird. Der Lese-Sprungbefehl kann sich in einem Programm befinden, das den parallelen Betriebsmodus verwendet, und die Adresse des Lese-Sprungbefehls kann ein Zeiger auf einen Speicherort des im Programm bereitgestellten Lese-Sprungbefehls sein.
  • Das Computersystem 300 kann dafür ausgelegt sein, die folgenden Schritte auszuführen, wenn der Aktivierungsbefehl aufgerufen wird.
  • Das Computersystem 300 kann das Steuerregisterbit 309 überprüfen. Wenn das Steuerregisterbit 309 anzeigt, das der parallele Betriebsmodus nicht erlaubt ist, erzeugt der Aktivierungsbefehl einen Fehler wegen eines unzulässigen Befehls und es werden keine weiteren Schritte ausgeführt. Allenfalls kann ein erstes der zweiten Teilmenge 306, 307 der Register 302307 des Hauptprozessors 301, beispielsweise das Register 306, auf eine Adresse des Pufferspeichers 313 gesetzt werden und ein zweites der zweiten Teilmenge 306, 307 der Register 302307, beispielsweise das Register 307, kann auf die Adresse des Lese- Sprungbefehls gesetzt werden. In anderen Ausführungsformen können andere der Register 301307 des Hauptprozessors 301 verwendet werden, um die Adressen des Pufferspeichers 313 und des Lese-Sprungbefehls zu speichern. Außerdem kann das Computersystem 300 das Indikatorbit 308 und wahlweise die Indikatorbits 328, 338 der untergeordneten Prozessoren 321, 331 auf einen Wert setzen, der anzeigt, dass sich das Computersystem im parallelen Betriebsmodus befindet. Anschließend kann das Computersystem 300 den nächsten Befehl im parallelen Betriebsmodus ausführen.
  • In manchen Ausführungsformen der vorliegenden Erfindung kann der Aktivierungsbefehl ferner dafür ausgelegt sein, die Register 322325, 332335 der untergeordneten Prozessoren 321, 331 zu löschen. Dadurch kann eine Übertragung von Zustandsinformationen zwischen unterschiedlichen Prozessoren vermieden werden, was dabei helfen kann, die Sicherheit des Computersystems 300 zu erhöhen.
  • Das Computersystem 300 kann ferner einen Variablen-Sendebefehl aufweisen, der dafür ausgelegt ist, den Inhalt von einem oder mehreren der Register 302307 des Hauptprozessors 301 in eines oder mehrere der Register 322325, 332335 von einem der untergeordneten Prozessoren 321, 331 zu schreiben. In manchen Ausführungsformen erhält der Variablen-Sendebefehl als Operanden eine Identifikationsnummer des untergeordneten Prozessors 321, 331, in dessen Register der Inhalt geschrieben werden soll, Daten, die die Register des Hauptprozessors 301 identifizieren, deren Inhalt an den untergeordneten Prozessor 321, 331 geschickt werden soll und Daten, die die Register des untergeordneten Prozessors 321, 331 identifizieren, dessen Wert gesetzt werden soll. In einer Ausführungsform kann der Variablen-Sendebefehl dafür ausgelegt sein, den Inhalt von einem der Register des Hauptprozessors 301 auf einmal an einen der untergeordneten Prozessen 321, 331 zu schicken und die Daten, die die Register des Hauptprozessors 301 und des jeweiligen untergeordneten Prozessors 321, 331 identifizieren, können Identifikationsnummern der jeweiligen Register des Hauptprozessors 301 und des untergeordneten Prozessors 321, 331 umfassen.
  • Das Computersystem 300 kann dafür ausgelegt sein, die folgenden Schritte auszuführen, wenn der Variablen-Sendebefehl aufgerufen wird.
  • Das Computersystem 300 kann das Indikatorbit 308 überprüfen. Wenn das Indikatorbit 308 anzeigt, dass sich das Computersystem 300 nicht im parallelen Betriebsmodus befindet, erzeugt der Variablen-Sendebefehl einen Fehler wegen eines unzulässigen Befehls und es werden keine weiteren Aktionen durchgeführt. Andernfalls kann überprüft werden, ob der Variablen-Sendebefehl vom Hauptprozessor 301 ausgeführt wird. Wenn der Variablen-Sendebefehl von einem der untergeordneten Prozessoren 321, 331 ausgeführt wird, wird ein Fehler wegen eines unzulässigen Befehls erzeugt und keine weiteren Aktionen werden durchgeführt. Andernfalls wird der Inhalt des einen oder der mehreren Register 302307 des Hauptprozessors 301, die im Operand des Variablen-Sendebefehls angegeben wurden, an die spezifizierten Register des spezifizierten untergeordneten Prozessors 321, 331 geschrieben. Anschließend kann das Computersystem 300 den nächsten Befehl ausführen.
  • Das Computersystem 300 kann ferner einen Variablen-Empfangsbefehl aufweisen, der dafür ausgelegt ist, den Inhalt von einem oder mehreren der Register 322325, 332335 eines der untergeordneten Prozessoren 321, 331 in eines oder mehrere der Register 302307 des Hauptprozessors 301 zu schreiben. Der Variablen-Sendebefehl kann als Operanden eine Identifikationsnummer des untergeordneten Prozessors 321, 331, von dem die Variablen zu empfangen sind, Daten, die die Register des untergeordneten Prozessors 321, 331, deren Inhalt gelesen werden soll, identifizieren und Daten, die die Register des Hauptprozessors 301 identifizieren, deren Wert gesetzt werden soll, erhalten. Ähnlich wie beim Variablen-Sendebefehl können die Daten, die die Register identifizieren, eine Identifikationsnummer eines Registers des untergeordneten Prozessors 321, 331 und eine Identifikationsnummer eines Registers des Hauptprozessors 301 umfassen.
  • Das Computersystem 300 kann dafür ausgelegt sein, die folgenden Schritte auszuführen, wenn der Variablen-Empfangsbefehl aufgerufen wird.
  • Das Computersystem 300 kann das Indikatorbit 308 überprüfen. Wenn das Indikatorbit 308 anzeigt, dass sich das Computersystem 300 nicht im parallelen Betriebsmodus befindet, erzeugt der Variablen-Empfangsbefehl einen Fehler wegen eines unzulässigen Befehls und es werden keine weiteren Aktionen durchgeführt. Andernfalls wird überprüft, ob der Variablen-Empfangsbefehl vom Hauptprozessor 301 ausgeführt wird. Wenn der Variablen-Empfangsbefehl von einem der untergeordneten Prozessoren 321, 331 ausgeführt wird, erzeugt der Variablen-Empfangsbefehl einen Fehler wegen eines unzulässigen Befehls und es werden keine weiteren Aktionen durchgeführt. Andernfalls wird der Inhalt des angegebenen einen oder der mehreren angegebenen Register des angegebenen untergeordneten Prozessors 321, 331 in das angegebene Register des Hauptprozessors 301 geschrieben.
  • Der Variablen-Sendebefehl und der Variablen-Empfangsbefehl können verwendet werden, um Informationen zwischen dem Hauptprozessor 301 und den untergeordneten Prozesso ren 321, 331 auszutauschen. Insbesondere kann der Variablen-Sendebefehl verwendet werden, um Parameter der untergeordneten Prozessoren 321, 331 einzustellen, bevor Threads in den untergeordneten Prozessoren 321, 331 gestartet werden, und der Variablen-Empfangsbefehl kann verwendet werden, um einen Ergebniswert oder einen Zeiger auf einen Speicherort, der einen oder mehrere Ergebniswerte enthält, nach Beendigung der Verarbeitung eines Threads abzurufen, was unten genauer erläutert wird.
  • Das Computersystem 300 kann ferner einen Verzweigungsbefehl aufweisen, der dafür ausgelegt ist, die Verarbeitung von Befehlen durch einen der untergeordneten Prozessoren 321, 331 zu starten. Der Verzweigungsbefehl kann als Operanden eine Identifikationsnummer des untergeordneten Prozessors 321, 331, auf dem die Befehlsverarbeitung gestartet werden soll und eine Zieladresse, an der die Befehlsverarbeitung beginnen soll, erhalten.
  • Das Computersystem 300 kann dafür ausgelegt sein, die folgenden Schritte auszuführen, wenn der Verzweigungsbefehl aufgerufen wird.
  • Das Computersystem 300 kann das Indikatorbit 308 überprüfen. Wenn das Indikatorbit 308 anzeigt, dass sich das Computersystem 300 nicht im parallelen Betriebsmodus befindet, wird ein Fehler wegen eines unzulässigen Befehls erzeugt und es werden keine weiteren Aktionen durchgeführt. Andernfalls wird überprüft, ob der Verzweigungsbefehl vom Hauptprozessor 301 ausgeführt wird. Wenn der Verzweigungsbefehl 301 von einem der untergeordneten Prozessoren 321, 331 ausgeführt wird, wird ein Fehler wegen eines unzulässigen Befehls erzeugt und es werden keine weiteren Aktionen durchgeführt. Andernfalls wird die angegebene Zieladresse an den angegebenen untergeordneten Prozessor 321, 331 geschickt. Der untergeordnete Prozessor 321, 331 empfängt die Zieladresse. In dem untergeordneten Prozessor 321, 331 wird Laufstatusbit 330, 340 auf einen Wert gesetzt, der anzeigt, dass der untergeordnete Prozessor 321, 331 läuft und der untergeordnete Prozessor 321, 331 beginnt mit der Befehlsverarbeitung an der Zieladresse. Anschließend können weitere Befehle ausgeführt werden.
  • Wenn der Variablen-Sendebefehl, der Variablen-Empfangsbefehl und/oder der Verzweigungsbefehl verwendet werden, während der im Operand des Befehls jeweils angegebene untergeordnete Prozessor 321, 331 läuft, können in manchen Ausführungsformen unvorhersagbare Ergebnisse erzeugt werden. In solchen Ausführungsformen kann der Code von Programmen, die auf dem Computersystem laufen, so ausgelegt sein, dass dies nicht passiert. In anderen Ausführungsformen kann das Computersystem 300 dafür ausgelegt sein, einen Fehler wegen eines unzulässigen Befehls zu erzeugen, wenn der Variablen-Sendebefehl, der Variablen-Empfangsbefehl oder der Verzweigungsbefehl aufgerufen wird, während der im Operand angegebene untergeordnete Prozessor 321, 331 läuft.
  • Das Computersystem 300 kann ferner einen Verbindungsbefehl der untergeordneten Prozessoren (slave join instruction) umfassen, der dafür ausgelegt ist, die Befehlsverarbeitung durch einen der untergeordneten Prozessoren 321, 331 zu beenden. Der Verbindungsbefehl der untergeordneten Prozessoren kann von einem der untergeordneten Prozessoren 321, 331 ausgeführt werden, und die Befehlsverarbeitung kann in demjenigen untergeordneten Prozessor beendet werden, der den Verbindungsbefehl der untergeordneten Prozessoren ausführt.
  • Genauer gesagt kann das Computersystem 300 dafür ausgelegt sein, die folgenden Schritte auszuführen, wenn der Verbindungsbefehl der untergeordneten Prozessoren aufgerufen wird.
  • Das Computersystem 300 kann das Indikatorbit 308 überprüfen. Wenn das Indikatorbit 308 anzeigt, dass sich das Computersystem 300 nicht im parallelen Betriebsmodus befindet, wird ein Fehler wegen eines unzulässigen Befehls erzeugt und es werden keine weiteren Aktionen durchgeführt. Andernfalls wird überprüft, ob der Verbindungsbefehl der untergeordneten Prozessoren von einem der untergeordneten Prozessoren 321, 331 ausgeführt wird. Wenn der Verbindungsbefehl der untergeordneten Prozessoren nicht von einem untergeordneten Prozessor 321, 331 ausgeführt wird, wird ein Fehler wegen eines unzulässigen Befehls erzeugt und es werden keine weiteren Aktionen durchgeführt. Andernfalls wird das Laufstatusbit 330 auf einen Wert gesetzt, der anzeigt, dass der untergeordnete Prozessor 321, 331 nicht läuft und die Befehlsverarbeitung in dem untergeordneten Prozessor 321, 331 kann beendet werden.
  • Das Computersystem 300 kann ferner einen Verbindungsbefehl des Hauptprozessors (master join instruction) aufweisen, der dafür ausgelegt ist, den Hauptprozessor 301 warten zu lassen, bis die Befehlsverarbeitung in einem der untergeordneten Prozessoren 321, 331 beendet ist. Der Verbindungsbefehl des Hauptprozessors kann als Operanden eine Identifikationsnummer eines der untergeordneten Prozessoren 321, 331 erhalten, auf den der Hauptprozessor 301 warten soll.
  • Das Computersystem 300 kann dafür ausgelegt sein, die folgenden Schritte auszuführen, wenn der Verbindungsbefehl des Hauptprozessors aufgerufen wird.
  • Das Computersystem 300 kann das Indikatorbit 308 überprüfen. Wenn das Indikatorbit 308 anzeigt, dass sich das Computersystem 300 nicht im parallelen Betriebsmodus befindet, wird ein Fehler wegen eines unzulässigen Befehls erzeugt und es werden keine weiteren Aktionen durchgeführt. Andernfalls wird überprüft, ob der Verbindungsbefehl des Hauptprozessors von dem Hauptprozessor 301 ausgeführt wird. Wenn der Verbindungsbefehl des Hauptprozessors nicht von dem Hauptprozessor 301 ausgeführt wird, wird ein Fehler wegen eines unzulässigen Befehls erzeugt und keine weiteren Aktionen werden durchgeführt. Andernfalls wird überprüft, ob das Laufstatusbit 330, 340 des im Operanten des Verbindungsbefehls des Hauptprozessors angegebenen untergeordneten Prozessors 321, 331 anzeigt, dass der jeweilige untergeordnete Prozessor 321, 331 läuft. Anschließend wartet der Hauptprozessor 301, bis das Laufstatusbit 330, 340 auf einen Wert gesetzt wird, der anzeigt, dass der untergeordnete Prozessor 321, 331 nicht mehr läuft. Anschließend kann die Befehlsverarbeitung in dem Hauptprozessor 301 mit dem Befehl fortgesetzt werden, der auf dem Verbindungsbefehl des Hauptprozessors folgt.
  • In anderen Ausführungsformen kann der Verbindungsbefehl des Hauptprozessors überprüfen, ob der jeweilige untergeordnete Prozessor 321, 331 noch läuft oder nicht. Anschließend kann er dieses Ergebnis in ein architektonisches sichtbares Register (architectural visible register), beispielsweise in eines der Register 302307 des Hauptprozessors 307, ausgeben. Ein Programm, das auf dem Computersystem 300 läuft, kann anschließend dessen Zustand verwenden, um seinen weiteren Arbeitsgang zu bestimmen. Somit kann der Hauptprozessor 301 den Laufzustand des jeweiligen untergeordneten Prozessors 321, 331 überprüfen und dann die Abarbeitung des Programms fortsetzen. In solchen Ausführungsformen können weitere Merkmale des Verbindungsbefehls des Hauptprozessors ähnlich denen der anderen, oben beschriebenen, Ausführungsformen sein.
  • Der Verbindungsbefehl der untergeordneten Prozessoren und der Verbindungsbefehl des Hauptprozessors können verwendet werden, Threads, die im Hauptprozessor 301 und den untergeordneten Prozessoren 321, 331 laufen, zu synchronisieren. Im Verbindungsbefehl des Hauptprozessors kann genau einer der untergeordneten Prozessoren 321, 331 angeben werden. Somit können Threads, die in verschiedenen untergeordneten Prozessoren ablaufen, während der Ausführung des Programms zu unterschiedlichen Zeitpunkten synchronisiert werden, ohne dass ein Bedarf für einen gemeinsamen Verbindungspunkt aller Threads besteht. Dadurch kann ein höherer Grad an Flexibilität erzielt werden.
  • Die vorliegende Erfindung ist nicht auf Ausführungsformen beschränkt, in denen ein Verbindungsbefehl des Hauptprozessors und ein Verbindungsbefehl der untergeordneten Prozessoren, die voneinander verschieden sind, vorhanden sind. In andern Ausführungsformen kann ein einziger Verbindungsbefehl bereitgestellt werden. Wenn der Verbindungsbefehl aufgerufen wird, wird überprüft, ob der Verbindungsbefehl im Hauptprozessor 301 oder in einem der untergeordneten Prozessoren 321, 331 ausgeführt wird. Wenn der Verbindungsbefehl in einem der untergeordneten Prozessoren 321, 331 ausgeführt wird, werden Schritte durchgeführt, die den oben für den Verbindungsbefehl der untergeordneten Prozessoren beschriebenen Schritten entsprechen. Wenn dagegen der Verbindungsbefehl vom Hauptprozessor 301 ausgeführt wird, können Schritte durchgeführt werden, die denen entsprechen, die oben für den Verbindungsbefehl des Hauptprozessors beschrieben wurden.
  • Wie oben bereits erwähnt, kann das Computersystem 300 ferner einen Lese-Sprungbefehl aufweisen. Der Lese-Sprungbefehl kann verwendet werden, um den Inhalt von einigen oder allen der Register 302307 des Hauptprozessors 301 und der Register 322325, 332335 der untergeordneten Prozessoren 321, 331 nach Beendigung einer Unterbrechungsroutine wiederherzustellen.
  • Der Lese-Sprungbefehl kann dafür ausgelegt sein, die Schritte des Umschaltens des Computersystems 300 in den parallelen Betriebsmodus und des Lesens von Inhalten der Register 322325, 332335 und einer Rücksprungadresse des Hauptprozessors 301 aus dem Pufferspeicher 313 auszuführen, wenn die Unterbrechung im Hauptprozessor 301 stattgefunden hat. Zusätzlich können Inhalte der zweiten Teilmenge 306, 307 der Register 302307 aus dem Pufferspeicher gelesen werden.
  • Der Lese-Sprungbefehl kann ferner dafür ausgelegt sein, die Schritte des Umschaltens des Computersystems 300 in den parallelen Betriebsmodus, des Lesens des Inhalts der Register 322325, 332335 der Unterprozessoren 321, 331 aus dem Pufferspeicher, des Schreibens des Inhalts von einem oder mehreren der Register 302307 des Hauptprozessors in Register desjenigen Unterprozessors 321, 331, in dem die Unterbrechung oder Ausnahme auftrat und des Lesens von Inhalten der Register 302307 des Hauptprozessors 301 aus dem Pufferspeicher auszuführen, wenn die Unterbrechung oder Ausnahme in einem der untergeordneten Prozessoren 321, 331 aufgetreten ist.
  • In manchen Ausführungsformen der vorliegenden Erfindung kann das Computersystem 300 dafür ausgelegt sein, die folgenden Schritte durchzuführen, wenn der Lese-Sprungbefehl aufgerufen wird.
  • Das Computersystem 300 kann das Steuerregisterbit 309 überprüfen. Wenn das Steuerregisterbit 309 anzeigt, dass der parallele Betriebsmodus des Computersystems 300 nicht erlaubt ist, wird ein Fehler wegen eines unzulässigen Befehls erzeugt. Andernfalls kann die Adresse des Pufferspeichers 313 aus einem der Register 302307 des Hauptprozessors 301 gelesen werden. In manchen Ausführungsformen kann die Adresse des Pufferspeichers 313 von einem aus der ersten Teilmenge 302305 der Register 302307 des Hauptprozessors 301 gelesen werden, beispielsweise aus dem Register 305.
  • Danach kann das Computersystem 300 eine Identifikationsnummer des Prozessors, der die Unterbrechung oder Ausnahme verursacht hat, aus dem Pufferspeicher 313 lesen. In manchen Ausführungsformen kann der Hauptprozessor 301 die Identifikationsnummer 0 haben, der erste untergeordnete Prozessor 321 kann die Identifikationsnummer 1 haben und der zweite untergeordnete Prozessor 331 kann die Identifikationsnummer 2 haben. In Ausführungsformen, in denen eine Anzahl untergeordneter Prozessoren ungleich 2 vorhanden ist, kann jeder der untergeordneten Prozessoren eine Identifikationsnummer haben, die eine natürliche Zahl größer als Null ist und der Hauptprozessor 301 kann die Identifikationsnummer Null haben. In weiteren Ausführungsformen kann eine andere Nummerierung der Prozessoren 301, 321, 331 verwendet werden.
  • Das Computersystem 300 kann dann aus der Identifikationsnummer bestimmen, ob die Unterbrechung oder Ausnahme vom Hauptprozessor 301 oder von einem der untergeordneten Prozessoren 321, 331 verursacht wurde.
  • Wenn die Unterbrechung oder Ausnahme von dem Hauptprozessor 301 verursacht wurde, was durch eine Prozessor-Identifikationsnummer gleich Null angezeigt werden kann, kann das Computersystem 300 den Inhalt von jedem der Register 322325 des ersten untergeordneten Prozessors 321 und der Register 332335 des zweiten untergeordneten Prozessors 331 aus dem Pufferspeicher 313 lesen. Außerdem kann der Inhalt der zweiten Teilmenge 306, 307 der Register 302307 des Hauptprozessors 301 aus dem Pufferspeicher 313 gelesen werden. Ferner kann eine Rücksprungadresse des Hauptprozessors 301 aus dem Pufferspeicher gelesen werden. In manchen Ausführungsformen der vorliegenden Erfindung kann die Rücksprungadresse des Hauptprozessors in eines der Register des Hauptprozessors 301 geschrieben werden, beispielsweise in das Register 302. Ferner können die Laufstatusbits 330, 340 der untergeordneten Prozessoren 321, 331 von dem Pufferspeicher 313 gelesen werden. In manchen Ausführungsformen kann der von dem Pufferspeicher 313 gelesene Inhalt der Register 322325, 332335 der untergeordneten Prozessoren 321, 331 Rücksprungadressen der untergeordneten Prozessoren 321, 331 umfassen. In anderen Ausführungsformen können die Rücksprungadressen der untergeordneten Prozessoren 321, 331 separat aus dem Pufferspeicher 313 gelesen werden.
  • Anschließend können der Inhalt von einem aus der zweiten Teilmenge 306, 307 der Register 302307 des Hauptprozessors 301, beispielsweise der Inhalt des Registers 306 und der Inhalt des Registers, von dem die Adresse des Pufferspeichers gelesen wurde, beispielsweise der Inhalt des Registers 305, vertauscht werden. Dadurch wird die Adresse des Pufferspeichers 313 in das Register 306 geschrieben, das dasjenige Register sein kann, in dem die Adresse des Pufferspeichers 313 durch den Aktivierungsbefehl gespeichert wird. Ein weiteres Register aus der zweiten Teilmenge 306, 307, das aus dem Pufferspeicher 313 gelesen wurde, beispielsweise das Register 307, kann die Adresse des Lese-Sprungbefehls enthalten.
  • Anschließend kann das Indikatorbit 308 auf einen Wert gesetzt werden, der anzeigt, dass sich das Computersystem 300 im parallelen Betriebsmodus befindet, beispielsweise auf dem Wert ”EIN”. Dadurch kann das Computersystem 300 in den parallelen Betriebsmodus geschaltet werden und in jedem der untergeordneten Prozessoren 321, 331, in denen das Laufstatusbit 330, 340 einen aktiven Zustand des jeweiligen untergeordneten Prozessors 321, 331 anzeigt, kann die Befehlsverarbeitung gestartet werden. Im Hauptprozessor 301 wird die Befehlsverarbeitung an der Rücksprungadresse fortgesetzt, die aus dem Pufferspeicher 301 gelesen wurde. Somit kann die Verarbeitung eines Programms, das durch die Unterbrechung oder Ausnahme unterbrochen wurde, im parallelen Betriebsmodus des Computersystems 300 fortgesetzt werden.
  • Wenn die Unterbrechung oder Ausnahme von einem der untergeordneten Prozessoren 321, 331 verursacht wurde, können der Inhalt der Register 322325 des ersten untergeordneten Prozessors 321 und der Register 332335 des zweiten untergeordneten Prozessors 331 sowie die Laufstatusbits 330, 340 aus dem Pufferspeicher 313 gelesen werden. Außerdem kann der Inhalt der zweiten Teilmenge 306, 307 der Register 302307 des Hauptprozessors 301 aus dem Pufferspeicher 313 gelesen werden. Das Register 307 oder, in anderen Ausführungsformen, ein anderes aus der zweiten Teilmenge 306, 307 der Register kann die Adresse des Lese-Sprungbefehls enthalten.
  • Daraufhin kann der Inhalt desjenigen der Register, aus dem die Adresse des Pufferspeichers gelesen wurde, beispielsweise der Inhalt des Registers 305, in ein temporäres Register geschrieben werden, das beispielsweise im Pufferspeicher 313 bereitgestellt werden kann, und der Inhalt eines entsprechenden Registers des untergeordneten Prozessors 321, 331, der die Unterbrechung oder Ausnahme verursacht hat, kann aus dem Pufferspeicher 313 in das Register 305 gelesen werden. Wenn beispielsweise die Unterbrechung oder Ausnahme von dem ersten untergeordneten Prozessor 321 verursacht wurde, kann der gespeicherte Inhalt des Registers 325 des ersten untergeordneten Prozessors 321 aus dem Pufferspeicher 313 in das Register 305 gelesen werden. Wenn die Unterbrechung oder Ausnahme von dem zweiten untergeordneten Prozessor 331 verursacht wurde, kann der gespeicherte Inhalt des Registers 335 des zweiten untergeordneten Prozessors 331 aus dem Pufferspeicher 313 in das Register 305 gelesen werden.
  • Wie unten genauer erläutert wird, enthalten die anderen Register 302304 des ersten Prozessors 301 nach Beendigung der Unterbrechungsroutine den Inhalt der Register des untergeordneten Prozessors 321, 331, in dem die Unterbrechung oder Ausnahme aufgetreten ist, wobei der Inhalt von manchen der Register durch die Unterbrechungsroutine verändert worden sein kann. Somit enthält die erste Teilmenge 302305 der Register des Hauptprozessors 301 nach dem Schreiben des Inhalts eines entsprechenden Registers des untergeordneten Prozessors, in dem die Unterbrechung oder Ausnahme aufgetreten ist, in das Register 305 des Hauptprozessors 301 Daten, die repräsentativ für den Inhalt der entsprechenden Register des untergeordneten Prozessors, in dem die Unterbrechung oder Ausnahme aufgetreten ist, sind, wobei der Inhalt von manchen der Register durch die Unterbrechungsroutine verändert worden sein kann.
  • Der Inhalt der ersten Teilmenge 302305 der Register 302305 des Hauptprozessors kann nun in die Register des untergeordneten Prozessors 321, 331 geschrieben werden, in dem die Unterbrechung oder Ausnahme aufgetreten ist. Wenn beispielsweise die Unterbrechung oder Ausnahme in dem ersten untergeordneten Prozessor 321 aufgetreten ist, kann der Inhalt der Register 302305 in die Register 322325 des ersten untergeordneten Prozessors 321 geschrieben werden. Wenn die Unterbrechung oder Ausnahme in dem zweiten untergeordneten Prozessor 331 aufgetreten ist, kann der Inhalt der Register 302305 in die Register 332335 des zweiten untergeordneten Prozessors 331 geschrieben werden. Somit können Änderungen des Registerinhalts, die durch die Unterbrechungsroutine verursacht wurden, in die Register des untergeordneten Prozessors 321, 331 geschrieben werden.
  • Die vorliegende Erfindung ist nicht auf Ausführungsformen beschränkt, in denen der Inhalt von jedem aus der ersten Teilmenge 302305 der Register 302307 des Hauptprozessors in die Register des untergeordneten Prozessors kopiert wird, der die Unterbrechung oder Ausnahme verursacht hat. In anderen Ausführungsformen kann nur der Inhalt von manchen aus der ersten Teilmenge 302305 der Register, deren Inhalt durch Unterbrechungsroutinen veränderbar ist, in den untergeordneten Prozessor kopiert werden. Dadurch kann die Ausführung des Lese-Sprungbefehls beschleunigt werden, da nur eine kleinere Datenmenge aus dem Hauptprozessor 301 in den untergeordneten Prozessor 321, 331 kopiert werden muss.
  • Nach dem Schreiben des Inhalts von manchen oder allen aus der ersten Teilmenge 302305 der Register 302307 des Hauptprozessors 301 in die Register des untergeordneten Prozessors 321, 331, der die Unterbrechung oder Ausnahme verursacht hat, kann der Inhalt der ersten Teilmenge 302305 der Register 302307 des Hauptprozessors 301, der auch eine Rücksprungadresse des Hauptprozessors 301 umfassen kann, aus dem Pufferspeicher 313 gelesen werden. Ferner kann die Adresse des Pufferspeichers 313, die in dem temporären Register abgespeichert wurde, in einen der mehreren zweiten Register des Hauptprozessors 301 geschrieben werden, beispielsweise in den Register 306. Somit kann ein Zustand des Hauptprozessors 301 vor der Unterbrechung oder Ausnahme wiederhergestellt werden.
  • Anschließend können das Indikatorbit 308 des Hauptprozessors 301 und wahlweise auch die Indikatorbits 328, 338 der untergeordneten Prozessoren 321, 331 auf einen Wert gesetzt werden, der anzeigt, dass das Computersystem 300 im parallelen Betriebsmodus betrieben wird, und die Befehlsverarbeitung kann in jedem der untergeordneten Prozessoren 321, 331 ermöglicht werden, in dem das Laufstatusbit 330, 340 anzeigt, dass der jeweilige untergeordnete Prozessor vor der Unterbrechung oder Ausnahme gelaufen ist. Ferner kann die Befehlsverarbeitung im Hauptprozessor 301 an der Rücksprungadresse des Hauptprozessors 301 beginnen. Somit kann die Ausführung des Programms im Computersystem 300 fortgesetzt werden.
  • Das Computersystem 300 kann dafür ausgelegt sein, die oben beschriebenen Schritte des Lese-Sprungbefehls als unteilbare Speicheroperation auszuführen. Somit können Fehler, die von einer Unterbrechung oder Ausnahme herrühren, die während der Ausführung des Lese-Sprungbefehls auftritt, vorteilhafterweise vermieden werden.
  • Das Computersystem 300 kann ferner einen Endbefehl aufweisen, der dafür ausgelegt ist, das Computersystem 300 aus dem parallelen Betriebsmodus in den seriellen Betriebsmodus zu schalten. Zu diesem Zweck kann das Computersystem 300 das Indikatorbit 308 und wahlweise die Indikatorbits 328, 338 der untergeordneten Prozessoren 321, 331 auf Werte setzen, die anzeigen, dass das Computersystem 300 im seriellen Betriebsmodus betrieben wird. In einer Ausführungsform der vorliegenden Erfindung können die Indikatorbits 308, 328, 338 auf den Wert ”AUS” gesetzt werden.
  • Das Computersystem 300 kann ferner dafür ausgelegt sein, die Schritte des Speicherns des Inhalts von mindestens einem Teil der Register 302307 des Hauptprozessors 301 und der Register 322325, 332335 der untergeordneten Prozessoren 321, 331 und wahlweise der Werte der Laufstatusbits 330, 340 der untergeordneten Prozessoren 321, 331 in den Pufferspeicher 313 und des Umschaltens des Computersystems 300 in den seriellen Betriebsmodus auszuführen, falls eine Unterbrechung oder Ausnahme während des parallelen Betriebsmodus auftritt. Wenn die Unterbrechung oder Ausnahme in einem der untergeordneten Prozessoren 321, 331 auftritt, kann das Computersystem 300 zusätzlich den Inhalt von mindestens einem der Register 302307 auf Inhalt von mindestens einem der Register des jeweiligen untergeordneten Prozessors setzen. Somit können Daten in den Registern der Prozessoren 301, 321, 331 unabhängig vom Betriebssystem abgespeichert werden. Wenn die Unterbrechung oder Ausnahme in einem der untergeordneten Prozessoren 321, 331 auftritt, können Daten, die für eine Unterbrechungsroutine des Betriebssystems relevant sind, aus dem untergeordneten Prozessor 321, 331 in Register des Hauptprozessors 301 geschrieben werden. Somit können solche Daten vom Betriebssystem gehandhabt werden, wobei das Betriebssystem das Vorhandensein der untergeordneten Prozessoren 321, 331 nicht berücksichtigen muss. Insbesondere muss das Betriebssystem nicht dafür ausgelegt sein, Daten, die für die Ausführung einer Unterbrechungsroutine relevant sind, von einem der untergeordneten Prozessoren 321, 331 zu erhalten.
  • In manchen Ausführungsformen der vorliegenden Erfindung kann das Computersystem 300 dafür ausgelegt sein, die folgenden Schritte auszuführen, wenn eine Unterbrechung oder Ausnahme auftritt, während das Indikatorbit 308 auf einen Wert gesetzt ist, der Anzeigt, dass sich das Computersystem 300 im zweiten Betriebsmodus befindet. Die Aktionen, die von dem Computersystem 300 durchgeführt werden, können davon abhängen, ob die Unterbrechung oder Ausnahme im Hauptprozessor 301 oder in einem der untergeordneten Prozessoren 321, 331 auftritt.
  • Wenn die Unterbrechung oder Ausnahme im Hauptprozessor 301 auftritt, kann das Computersystem 300 die Befehlsverarbeitung in den untergeordneten Prozessoren 321, 331 beenden. Nachdem die Befehlsverarbeitung in jedem der untergeordneten Prozessoren 321, 331 beendet wurde, kann das Computersystem 300 Inhalte der Register 322325, 332335 der untergeordneten Prozessoren 321, 331 in den Pufferspeicher 313 schreiben, dessen Adresse von einem aus der zweiten Teilmenge 306, 307 der Register 302307 des Hauptprozessors 301 gelesen werden kann, beispielsweise aus dem Register 306. Diese Register können für jeden der untergeordneten Prozessoren 321, 331 eine Rücksprungadresse enthalten. Zusätzlich können die Laufstatusbits 330, 340 der untergeordneten Prozessoren 321, 331 in dem Pufferspeicher 313 gespeichert werden. Die Laufstatusbits 330, 340 zeigen an, ob jeder der untergeordneten Prozessoren 321, 331 Befehle abgearbeitet hat, bevor die Unterbrechung oder Ausnahme aufgetreten ist. Außerdem kann eine Identifikationsnummer des Hauptprozessors 301 in dem Pufferspeicher 313 gespeichert werden. Wie bereits oben erwähnt, kann der Hauptprozessor 301 in manchen Ausführungsformen der vorliegenden Erfindung die Identifikationsnummer Null haben. In solchen Ausführungsformen kann die Identifikationsnummer Null im Pufferspeicher 313 gespeichert werden, wenn die Unterbrechung oder Ausnahme im Hauptprozessor 301 aufgetreten ist.
  • Anschließend kann der Inhalt von einem aus der zweiten Teilmenge 306, 307 der Register 302307 des Hauptprozessors 301, das die Adresse des Pufferspeichers 313 enthält, und das in manchen Ausführungsformen das Register 306 sein kann, mit dem Inhalt von einem aus der ersten Teilmenge 302305 der Register 302307 des Hauptprozessors 301 vertauscht werden, beispielsweise mit dem Inhalt des Registers 305. Das Register, dessen Inhalt mit dem des Registers 306 vertauscht wurde, kann mit dem Register identisch sein, aus dem der Lese-Sprungbefehl die Adresse des Pufferspeichers 313 liest.
  • Die erste Teilmenge der Register 302305 des Hauptprozessors 301 kann dem Registersatz eines Prozessors nach dem Stand der Technik entsprechen. Somit kann ein Betriebssystem, das an den Prozessor nach dem Stand der Technik angepasst ist und das auf dem Computersystem 300 läuft, dafür ausgelegt sein, den Inhalt der ersten Teilmenge 302305 der Register des Hauptprozessors 301 im Fall einer Unterbrechung oder Ausnahme zu speichern und den Inhalt der ersten Teilmenge 302305 der Register nach Beendigung einer Unterbrechungsroutine, die Teil des Betriebssystems ist, wiederherzustellen. Somit kann ein Vertauschen der Inhalte des Registers, das die Adresse des Pufferspeichers enthält und des einen aus der ersten Teilmenge 302305 der Register sicherstellen, dass die Adresse des Pufferspeichers nach Beendigung der Unterbrechungsroutine in einem der Register 302305 des Hauptprozessors 301 vorhanden ist und für den Lese-Sprungbefehl zugänglich ist. Außerdem kann im parallelen Betriebsmodus des Computersystems 300 jedes der Register 302305 aus der ersten Teilmenge von einem Programm, das auf dem Computersystem 300 läuft, verwendet werden, da im parallelen Betriebsmodus die Adresse des Pufferspeichers 313 in einem aus der zweiten Teilmenge 306, 307 der Register des Hauptprozessors gespeichert wird. Somit kann eine Kompatibilität des Computersystems 300 mit dem Computersystem 100 nach dem Stand der Technik verbessert werden.
  • Anschließend kann der Inhalt der zweiten Teilmenge 306, 307 der Register 302307 des Hauptprozessors 301 in dem Pufferspeicher 313 gespeichert werden. Daraufhin kann eine Rücksprungadresse des Hauptprozessors 301 abgerufen werden. In manchen Ausführungsformen kann die Rücksprungadresse des Hauptprozessors 301 aus einem aus der ersten Teilmenge der Register gelesen werden, beispielsweise aus dem Register 302. Nach dem Speichern der Rücksprungadresse des Hauptprozessors 301 kann die Rücksprungadresse des Hauptprozessors 301 mit der Adresse des Lese-Sprungbefehls ersetzt werden, die von einem aus der zweiten Teilmenge 306, 307 der Register 302307 des Hauptprozessors 301 gelesen werden kann, beispielsweise aus dem Register 307. Somit wird nach Beendigung der Unterbrechungsroutine des Betriebssystems der Lese-Sprungbefehl aufgerufen, um den Inhalt der zweiten Teilmenge 306, 307 der Register des Hauptprozessors 301, den Inhalt der Register 322325, 332335 der untergeordneten Prozessoren 321, 331 und die Laufstatusbits 330, 340 der untergeordneten Prozessoren 321, 331, die vom Betriebssystem nicht wiederhergestellt werden, wiederherzustellen. Die Register der untergeordneten Prozessoren 321, 331 können für jeden der untergeordneten Prozessoren 321, 331 eine Rücksprungadresse enthalten.
  • Wenn die Unterbrechung oder Ausnahme in einem der untergeordneten Prozessoren 321, 331 auftritt, kann die Befehlsverarbeitung im Hauptprozessor 301 sowie in jedem der untergeordneten Prozessoren 321, 331 angehalten werden. Nachdem die Befehlsverarbeitung in allen Prozessoren 301, 321, 331 angehalten ist, kann das Computersystem 300 den Inhalt von jedem der Register 302307 des Hauptprozessors 301 in dem Pufferspeicher 313 speichern, dessen Adresse von einem aus der zweiten Teilmenge 306, 307 der Register 302307 des Hauptprozessors 301 gelesen werden kann, beispielsweise aus dem Register 306. Ferner können der Inhalt der Register 322325, 332335 von jedem der untergeordneten Prozessoren 321, 331 sowie die Werte der Laufstatusbits 330, 340 von jedem der untergeordneten Prozessoren 321, 331 im Pufferspeicher 313 gespeichert werden. Die Werte der Laufstatusbits 330, 340 zeigen an, welche der untergeordneten Prozessoren 321, 331 zu dem Zeitpunkt, an dem die Unterbrechung oder Ausnahme auftrat, betrieben wurden.
  • Danach kann der Inhalt desjenigen aus der zweiten Teilmenge 306, 307 der Register 302307 des Hauptprozessors 301, in dem die Adresse des Pufferspeichers 313 gespeichert ist, in ein temporäres Register geschrieben werden, da es sich in manchen Ausführungsformen im Pufferspeicher 313 befinden kann. Zusätzlich kann eine Identifikationsnummer des untergeordneten Prozessors 321, 331, in dem die Unterbrechung oder Ausnahme aufgetreten ist, im Pufferspeicher 313 gespeichert werden. In manchen Ausführungsformen kann der erste untergeordnete Prozessor 321 die Identifikationsnummer 1 haben und der zweite untergeordnete Prozessor 331 kann die Identifikationsnummer 2 haben. In solchen Ausführungsformen kann die Identifikationsnummer 1 im Pufferspeicher 313 gespeichert werden, wenn die Unterbrechung oder Ausnahme im ersten untergeordneten Prozessor 321 aufgetreten ist und die Identifikationsnummer 2 kann im Pufferspeicher 313 gespeichert werden, wenn die Unterbrechung oder Ausnahme im zweiten untergeordneten Prozessor 331 aufgetreten ist. Die Register der untergeordneten Prozessoren 321, 331 können Rücksprungadressen für jeden der untergeordneten Prozessoren 321, 331 enthalten.
  • Anschließend kann der Inhalt der Register des untergeordneten Prozessors 321, 331, in dem die Unterbrechung oder Ausnahme aufgetreten ist, in die erste Teilmenge 302305 der Register 302307 des Hauptprozessors 301 geschrieben werden. Wenn die Unterbrechung oder Ausnahme im ersten untergeordneten Prozessor 321 aufgetreten ist, kann der Inhalt der Register 322325 des ersten untergeordneten Prozessors 321 in die Register 302305 des Hauptprozessors 301 geschrieben werden. Entsprechend kann der Inhalt der Register 322325 des zweiten untergeordneten Prozessors 331 in die Register 302305 geschrieben werden, wenn die Unterbrechung oder Ausnahme im zweiten untergeordneten Prozessor 331 aufgetreten ist. Die vorliegende Erfindung ist nicht auf Ausführungsformen beschränkt, in denen der Inhalt von jedem der Register 322325 bzw. 332335 des ersten untergeordneten Prozessors 321 bzw. des zweiten untergeordneten Prozessors 331 in die entsprechenden Register des Hauptprozessors 301 geschrieben wird. In anderen Ausführungsformen kann nur der Inhalt von manchen Registern des untergeordneten Prozessors, deren Inhalt durch eine Unterbrechungsroutine des Betriebssystems verändert werden kann, in Register des Hauptprozessors 301 geschrieben werden.
  • In der Unterbrechungsroutine handhabt das Betriebssystem die Inhalte der ersten Teilmenge 302305 der Register 302307 des Hauptprozessors 301, die dem Registersatz eines Prozessors nach dem Stand der Technik entsprechen können, beispielsweise den Registern 102105 des Prozessors 101 nach dem Stand der Technik, der oben mit Bezug auf die 1a und 1b beschrieben wurde. Der Inhalt der Register 302305 kann sämtliche Informationen über die Unterbrechung oder Ausnahme enthalten, die für das Betriebssystem relevant sind, einschließlich einer Speicheradresse eines Stacks eines untergeordneten Prozessors 321, 331, der weitere Informationen über die Unterbrechung oder Ausnahme enthält.
  • Nach dem Schreiben des Inhalts der Register des untergeordneten Prozessors 321, 331, in dem die Unterbrechung oder Ausnahme aufgetreten ist, in die Register 302305 des Hauptprozessors 301 kann der Zustand des Hauptprozessors 301 einem Zustand entsprechen, den man erhalten würde, wenn die Unterbrechung oder Ausnahme im Hauptprozessor 301 aufgetreten wäre. Somit sieht es für das Betriebssystem aus, als wenn die Unterbrechung oder Ausnahme im Hauptprozessor 301 aufgetreten wäre. Deshalb kann das Betriebssystem die Unterbrechung oder Ausnahme handhaben, und zwar auch in Ausführungsformen, in denen das Betriebssystem an ein Computersystem mit nur einem einzigen Prozessor angepasst ist.
  • Anschließend kann der Inhalt von einem aus der ersten Teilmenge 302305 der Register 302307 des Hauptprozessors 301, beispielsweise der Inhalt des Registers 305 (dessen Inhalt identisch mit dem eines entsprechenden Registers des untergeordneten Prozessors 321, 331 ist, in dem die Unterbrechung oder Ausnahme aufgetreten ist) in den Pufferpuffer 313 geschrieben werden, dessen Adresse aus dem temporären Puffer abgerufen werden kann, und die Adresse des Pufferspeichers 313 kann in das Register 305 geschrieben werden. Somit kann sich die Adresse des Pufferspeichers 313 in einem aus der ersten Teilmenge 302305 der Register 302307 des Hauptprozessors 301 befinden, das nach Beendigung der Unterbrechungsroutine durch das Betriebssystem wiederhergestellt werden kann.
  • Anschließend kann die Rücksprungadresse des Hauptprozessors 301 im Pufferspeicher 313 gespeichert werden, und die Rücksprungadresse des Hauptprozessors 301 kann mit der Adresse des Lese-Sprungbefehls ersetzt werden, die von einem aus der zweiten Teilmenge 306, 307 der Register 302307 des Hauptprozessors 301 gelesen werden kann, beispielsweise aus dem Register 307. Somit kann der Lese-Sprungbefehl nach Beendigung der Unterbrechungsroutine ausgeführt werden.
  • Die oben beschriebenen Schritte, die von dem Computersystem 300 im Fall einer Unterbrechung oder Ausnahme, die während des parallelen Betriebsmodus des Computersystems 300 auftritt, ausgeführt werden, können als unteilbare Speicheroperation ausgeführt werden. Wie die Fachleute wissen, kann so das Auftreten einer Unterbrechung oder Ausnahme, während das Computersystem 300 die Schritte durchführt, vermieden werden.
  • Nach dem Ausführen der oben beschriebenen Schritte kann das Computersystem 300 unabhängig davon ob die Unterbrechung oder Ausnahme im Hauptprozessor 301 oder in einem der untergeordneten Prozessoren 321, 331 aufgetreten ist, das Indikatorbit 308 des Hauptprozessors 301 auf einen Wert setzen, der anzeigt, dass sich das Computersystem 300 im seriellen Betriebsmodus befindet, beispielsweise auf dem Wert ”AUS”. Derart kann das Computersystem 300 in den seriellen Betriebsmodus geschaltet werden.
  • Daraufhin kann eine Unterbrechungsroutine des Betriebssystems ausgeführt werden.
  • Im Folgenden wird der Betrieb des Computersystems 300 mit Bezug auf 2b beschrieben, die ein schematisches Flussdiagramm eines Programms 400 zeigt, das auf dem Computersystem 300 abläuft, und mit Bezug auf 2c, die schematisches Flussdiagramm des Programms 400 und einer Unterbrechungsroutine 502 zeigt.
  • Der Hauptprozessor 301 und die untergeordneten Prozessoren 321, 331 können identifiziert werden, bevor das Betriebssystem des Computersystems 300 geladen wird. In manchen Ausführungsformen kann die Zuordnung eines Prozessors als Hauptprozessor 301 oder als einer der untergeordneten Prozessoren 321, 331 in durch die Hardware geschehen. In solchen Ausführungsformen kann die Zuordnung als der Hauptprozessor 301 oder einer der untergeordneten Prozessoren 321, 331 während der Lebenszeit des Computersystems 300 konstant bleiben. In anderen Ausführungsformen kann die Zuordnung als Hauptprozessor 301 oder als einer der untergeordneten Prozessoren 321, 331 mit Hilfe von Software bewirkt werden. Beispielsweise können der Hauptprozessor 301 und die untergeordneten Prozessen 321, 331 durch eine basic input/output Software (BIOS) des Computersystems 300 identifiziert werden. In solchen Ausführungsformen kann die Zuordnung der Prozessoren durch eine Veränderung von BIOS Einstellungen des Computersystems 300 geändert werden.
  • Nach dem Identifizieren des Hauptprozessors 301 und der untergeordneten Prozessoren 321, 331 kann das Betriebssystem des Computersystems 300 geladen werden. Wenn das Betriebssystem hochgefahren ist, kann sich das Computersystem 300 im seriellen Be triebsmodus befinden. Somit kann der Hauptprozessor 301 den Funktionsumfang eines Computerprozessors nach dem Stand der Technik bereitstellen, beispielsweise den Funktionsumfang des Prozessors 101 in dem oben mit Bezug auf die 1a und 1b beschriebenen Computersystem 100. Somit kann das Computersystem 300 mit dem Betriebssystem zusammenarbeiten, das in manchen Ausführungsformen an das Computersystem 100 nach dem Stand der Technik angepasst sein kann.
  • Sobald das Betriebssystem auf dem Computersystem 300 läuft, kann das Programm 400 gestartet werden.
  • In einem Schritt 401 des Programms 400 kann der Pufferspeicher 313 durch Aufrufen einer für diesen Zweck bereitgestellten CPU-Treiberroutine in dem Systemspeicher 304 reserviert werden. Daraufhin kann in Schritt 402 der Aktivierungsbefehl ausgeführt werden, um den parallelen Betriebsmodus des Computersystems 300 zu aktivieren und in Schritt 403 kann Stack-Speicher für Threads des Programms, die von den untergeordneten Prozessoren 321, 331 auszuführen sind, reserviert werden. Zum Reservieren des Stack-Speichers können den Fachleuten wohlbekannte Speicherreservierungstechniken verwendet werden.
  • In Schritt 404 können mehrere erste Befehle ausgeführt werden. Die mehreren ersten Befehle können von dem Hauptprozessor 301 seriell ausgeführt werden. Da der Hauptprozessor 301 den Befehlssatz eines Prozessors nach dem Stand der Technik, beispielsweise des Prozessors 101, der oben mit Bezug auf die 1a und 1b beschrieben wurde, bereitstellen kann, können die mehreren ersten Befehle einen Code umfassen, der auch von dem Prozessor nach dem Stand der Technik ausgeführt werden kann. Somit können die mehreren ersten Befehle mit Hilfe eines Compilers erzeugt werden, der dafür ausgelegt ist, Code für den Prozessor 101 nach dem Stand der Technik bereitzustellen. Somit kann in das Programm 400 Code aus existierenden Bibliotheken aufgenommen werden.
  • In Schritt 405 kann der Variablen-Sendebefehl einmal oder mehrmals aufgerufen werden, um Daten an die Register 322325 des ersten untergeordneten Prozessors 321 zu senden. Somit kann der erste untergeordnete Prozessor 321 für das Ausführen eines Threads des Programms 400 vorbereitet werden. In Schritt 407 kann der Variablen-Sendebefehl dafür verwendet werden, Daten an die Register 332 bis 335 des zweiten untergeordneten Prozessors 331 zu senden, um den zweiten untergeordneten Prozessor für die Ausführung eines weiteren Threads des Programms 400 vorzubereiten. Die vorliegende Erfindung ist nicht auf Ausführungsformen beschränkt, in denen zuerst Daten an die Register 322325 des ersten untergeordneten Prozessors gesandt werden und anschließend Daten an den zweiten untergeordneten Prozessor 331 gesandt werden. In anderen Ausführungsformen können Daten an die Register 332335 des zweiten untergeordneten Prozessors 331 gesandt werden, bevor Daten an die Register 322325 des ersten untergeordneten Prozessors 321 gesandt werden.
  • In Schritt 409 kann der Verzweigungsbefehl ausgeführt werden, um die Befehlsverarbeitung im ersten untergeordneten Prozessor 321 zu starten. Somit können in Schritt 410 mehrere zweite Befehle durch den ersten untergeordneten Prozessor 321 ausgeführt werden. In Schritt 411 kann der Verzweigungsbefehl verwendet werden, um die Befehlsverarbeitung im zweiten untergeordneten Prozessor 331 zu starten. Somit kann der zweite untergeordneten Prozessor 331 in Schritt 412 mehrere dritte Befehle ausführen. Daraufhin kann der Hauptprozessor 301 mehrere vierte Befehle ausführen. Die mehreren zweiten Befehle, die mehreren dritten Befehle und die mehreren vierten Befehle können von dem Computersystem 300 gleichzeitig ausgeführt werden, wobei die Abarbeitung der mehreren zweiten Befehle, die Abarbeitung der mehreren dritten Befehle und die Abarbeitung der mehreren vierten Befehle unterschiedliche Threads des Programms 400 bilden. Somit kann die Arbeitsgeschwindigkeit des Programms 400 im Vergleich zu dem Computersystem 100 nach dem Stand der Technik, das oben mit Bezug auf die 1a und 1b beschrieben wurde, vergrößert werden.
  • In Ausführungsformen der vorliegenden Erfindung, in denen sowohl der Hauptprozessor 301 als auch die untergeordneten Prozessoren 321, 331 dafür ausgelegt sind, den Funktionsumfang eines bestimmten Prozessortyps bereitzustellen, beispielsweise den Funktionsumfang des Prozessors 101 nach dem Stand der Technik, der oben mit Bezug auf die 1a und 1b beschrieben wurde, können die mehreren zweiten Befehle, die mehreren dritten Befehle und die mehreren vierten Befehle Code umfassen, der für die Ausführung in dem jeweiligen Prozessortyp geeignet ist. Beispielsweise können die mehreren zweiten Befehle, die mehreren dritten Befehle und die mehreren vierten Befehle Code enthalten, der zur Ausführung in einem Prozessor des Typs x86 oder x86-64 geeignet ist.
  • In anderen Ausführungsformen, in denen die untergeordneten Prozessoren 321, 331 Prozessoren eines anderen Typs als der Hauptprozessor 301 sind, können die mehreren zweiten Befehle und die mehreren dritten Befehle Code enthalten, der speziell für die Ausführung in den untergeordneten Prozessoren 321, 331 ausgelegt ist, während die mehreren vierten Befehle Code enthalten können, der speziell für die Ausführung im Hauptprozessor 301 ausgelegt ist.
  • Nach Beendigung des Threads, der die mehreren zweiten Befehle umfasst, kann der erste untergeordnete Prozessor 321 den Verbindungsbefehl der untergeordneten Prozessoren ausführen, um die Befehlsverarbeitung im ersten untergeordneten Prozessor 321 zu beenden (Schritt 415). Zu diesem Zweck kann der Verbindungsbefehl für die untergeordneten Prozessoren als letzter Befehl der mehreren zweiten Befehle bereitgestellt werden. Entsprechend kann der Verbindungsbefehl für die untergeordneten Prozessoren auch als letzter Befehl der mehreren dritten Befehle bereitgestellt werden, so dass die Befehlsverarbeitung im zweiten untergeordneten Prozessor 331 nach der Abarbeitung der mehreren dritten Befehle beendet wird (Schritt 423).
  • Nach Beendigung der Abarbeitung der mehreren vierten Befehle kann der Hauptprozessor 301 in Schritt 414 den Verbindungsbefehl des Hauptprozessors ausführen, um zu warten, bis der erste untergeordnete Prozessor 321 mit der Arbeitung der mehreren zweiten Befehle fertig ist. Anschließend kann der Verbindungsbefehl des Hauptprozessors in Schritt 416 nochmals vom Hauptprozessor 301 ausgeführt werden, um solange zu warten, bis der zweite untergeordnete Prozessor 331 die Abarbeitung der mehreren dritten Befehle beendet hat.
  • Daraufhin kann der Hauptprozessor 301 in den Schritten 417, 419 den Variablen-Empfangsbefehl ausführen, um Ergebnisse der Ausführung der durch die mehreren zweiten Befehle und die mehreren dritten Befehle bereitgestellten Threads von dem ersten untergeordneten Prozessor 321 bzw. dem zweiten untergeordneten Prozessor 331 zu lesen. In 2b wird das Bereitstellen des Inhalts der Register 322325 durch den ersten untergeordneten Prozessor 321 durch das Bezugszeichen 418 bezeichnet und das Bereitstellen des Inhalts der Register 332335 durch den zweiten untergeordneten Prozessor 331 wird durch das Bezugszeichen 420 bezeichnet.
  • Anschließend kann der Hauptprozessor 421 mehrere fünfte Befehle seriell abarbeiten (Schritt 421). Ähnlich wie die mehreren ersten Befehle, die im Schritt 404 ausgeführt werden, können die mehreren fünften Befehle Code umfassen, der dafür ausgelegt ist, in einem Prozessor nach dem Stand der Technik wie etwa dem oben mit Bezug auf die 1a und 1b beschriebenen Prozessor 101 ausgeführt zu werden, dessen Funktionsumfang durch den Hauptprozessor 301 bereitgestellt wird. Somit können die mehreren fünften Befehle Code enthalten, der von einem Compiler erzeugt wurde, der dafür ausgelegt ist, Code für den Prozessor 101 nach dem Stand der Technik bereitzustellen.
  • Vor der Beendigung der Ausführung des Programms 400 kann der Hauptprozessor 301 in Schritt 422 den Endbefehl ausführen, um das Computersystem 300 in den seriellen Betriebsmodus zu schalten. Außerdem kann der Pufferspeicher 313 freigegeben werden, bevor die Abarbeitung des Programms 400 beendet wird, was dadurch geschehen kann, dass eine im Computersystem 300 bereitgestellte CPU-Treiberroutine aufgerufen wird.
  • 2c zeigt ein schematisches Flussdiagramm des Programms 400 und der Unterbrechungsroutine 502, die im Fall einer Unterbrechung oder Ausnahme ausgeführt werden kann, die auftritt, während die mehreren zweiten Befehle, die mehreren dritten Befehle und die mehreren vierten Befehle in den untergeordneten Prozessoren 321, 331 bzw. dem Hauptprozessor 331 ausgeführt werden.
  • In 2c bezeichnen die Bezugszeichen 510, 511, 512 Befehle aus den mehreren vierten Befehlen, die von dem Hauptprozessor 301 ausgeführt werden. Die Bezugszeichen 510', 511', 512' bezeichnen Befehle aus den mehreren zweiten Befehlen, die von dem ersten untergeordneten Prozessor 321 ausgeführt werden und die Bezugszeichen 510'', 511'' und 512'' bezeichnen Befehle aus den mehreren dritten Befehlen, die von dem zweiten untergeordneten Prozessor 331 verarbeitet werden.
  • An einem Zeitpunkt, an dem die Befehle 512, 512', 512'' im Hauptprozessor 301 bzw. in den untergeordneten Prozessoren 321, 331 ausgeführt werden, kann eine Unterbrechung oder Ausnahme 460 auftreten. Nach der Unterbrechung oder Ausnahme 460 kann das System 330 die Schritte des Speicherns von zumindest einem Teil des Inhalts der Register 302307 des Hauptprozessors 301 und der Register 322325, 332335 der untergeordneten Prozessoren 321, 331 im Pufferspeicher 331 und des Umschaltens des Computersystems 300 in den seriellen Betriebsmodus auszuführen. Wenn die Unterbrechung oder Ausnahme in einem der untergeordneten Prozessoren 321, 331 aufgetreten ist, kann das Computersystem 330 ferner den Inhalt von zumindest ein der Register 322325 bzw. 332335 des untergeordneten Prozessors 321, 331, in dem die Unterbrechung oder Ausnahme aufgetreten ist, in mindestens einen aus der ersten Teilmenge 302305 der Register 302307 des Hauptprozessors 301 schreiben. In 2c werden die Aktionen, die von dem Computersystem 300 im Fall einer Unterbrechung oder Ausnahme durchgeführt werden, durch das Bezugszeichen 540 bezeichnet. Das Computersystem 300 kann, wie oben mit Bezug auf 2a beschrieben, im Fall einer Unterbrechung oder Ausnahme, die auftritt, während sich das Computersystem 300 im parallelen Betriebsmodus befindet, noch weitere Aktionen durchführen.
  • Anschließend kann das Computersystem 300 Befehle 520525 einer Unterbrechungsroutine 502 ausführen. Die Unterbrechungsroutine 502 kann Teil eines Betriebssystems sein, das den seriellen Betriebsmodus des Computersystems 300 unterstützt und das den parallelen Betriebsmodus nicht unterstützen muss. Somit kann die Unterbrechungsroutine 502 Befehle enthalten, die dafür ausgelegt sind, den Inhalt der ersten Teilmenge 302305 der Register 302307 des Hauptprozessors in dem Systemspeicher 304 abzuspeichern und den Inhalt der ersten Teilmenge 302305 der Register am Ende der Ausführung der Unterbrechungsroutine 502 aus dem Systemspeicher 304 zu lesen. Außerdem kann die Unterbrechungsroutine 502 den Inhalt von einigen oder allen der ersten Teilmenge 302305 der Register 302307 des Hauptprozessors 301 ändern.
  • Die Unterbrechungsroutine 502 muss jedoch nicht dafür ausgelegt sein, den Inhalt der zweiten Teilmenge 306, 307 der Register 302307 des Hauptprozessors 301, den Inhalt der Register 322325 des ersten untergeordneten Prozessors 321, den Inhalt der Register 332335 des zweiten untergeordneten Prozessors 331 und die Werte der Laufstatusbits 330, 340 der untergeordneten Prozessoren 321, 331 abzuspeichern und wiederherzustellen. In manchen Ausführungsformen der vorliegenden Erfindung kann die Unterbrechungsroutine 502 Teil eines Betriebssystems sein, das Multitasking ermöglicht. Insbesondere kann die Unterbrechungsroutine 502 dafür ausgelegt sein, ein anderes Programm auszuführen, das den parallelen Betriebsmodus des Computersystems 300 benützen und den Inhalt der Register 306, 307, 322325, 332335 und der Laufstatusbits 330, 340 verändern kann. Da die Unterbrechungsroutine 502 den Inhalt der Register 306, 307, 322325, 332335 und die Laufstatusbits 330, 340 nach der Ausführung des letzten Befehls 525 der Unterbrechungsroutine 502 nicht wiederherstellen muss, kann sich der Inhalt der Register 306, 307, 322325, 332335 und der Laufstatusbits 330, 340 von deren Inhalt nach der Ausführung der Befehle 512, 512', 512'' des Programms 400 unterscheiden.
  • Nach Beendigung der Unterbrechungsroutine 502 führt das Computersystem 300 den Lese-Sprungbefehl 550 aus, da die Rücksprungadresse des Hauptprozessors 301, auf dem die Unterbrechungsroutine 502 ausgeführt werden kann, durch die Adresse des Lese-Sprungbefehls 550 ersetzt wurde.
  • Wenn der Lese-Sprungbefehl 550 ausgeführt wird, kann das Computersystem 300 die oben mit Bezug auf 2a beschriebenen Schritte ausführen. Nach der Ausführung des Lese-Sprungbefehls wird der Inhalt von jedem der Register 302307, 322325, 332335 und der Laufstatusbits 330, 340 der Prozessoren 301, 321, 331 wiederhergestellt, wobei Ände rungen von einigen der Register, die von der Unterbrechungsroutine 502 gemacht wurden, geeignet berücksichtigt werden können.
  • Somit wird der Inhalt der Register 302307, 322325, 332335 und der Laufstatusbits 330, 340 nach der Ausführung der Unterbrechungsroutine 502 wiederhergestellt, obwohl das Betriebssystem des Computersystems 300 und insbesondere die Unterbrechungsroutine 502 nicht dafür ausgelegt sind, den Inhalt von jedem der Register 302307, 322325, 332335 und der Laufstatusbits 330, 340 der Prozessoren 301, 321, 331 abzuspeichern und wiederherzustellen. Außerdem kann die Unterbrechungsroutine 502 im seriellen Betriebsmodus des Computersystems 300 ausgeführt werden. Deshalb sind keine Anpassungen des Betriebssystems an den parallelen Betriebsmodus des Computersystems 300 erforderlich. Somit stellt das Computersystem 300 gemäß der vorliegenden Erfindung einen hohen Grad an Kompatibilität mit Software, die für ein existierendes Computersystem erstellt wurde, das die Anwesenheit der untergeordneten Prozessoren 321, 331 nicht unterstützt, zur Verfügung.
  • In manchen Ausführungsformen der vorliegenden Erfindung kann das Computersystem 300 ferner einen ersten Modus-Umschaltbefehl zum Umschalten des Computersystems 300 aus dem parallelen Betriebsmodus in den seriellen Betriebsmodus umfassen. Das System kann dafür ausgelegt sein, die Schritte des Speicherns des Inhalts von zumindest einem Teil der Register 302307, 322325, 332335 des Hauptprozessors 302 und der untergeordneten Prozessoren 321, 331 in den Pufferspeicher 313 und des Umschaltens des Systems in den seriellen Betriebsmodus auszuführen, wenn der erste Modus-Umschaltbefehl aufgerufen wird. Wenn der erste Modus-Umschaltbefehl von einem der Hilfsprozessoren 321, 331 ausgeführt wird, kann das Computersystem 300 ferner dafür ausgelegt sein, den Inhalt von zumindest einem der Register 322325 bzw. 332335 des untergeordneten Prozessors 321 bzw. des untergeordneten Prozessors 331, in dem der erste Modus-Umschaltbefehl ausgeführt wird, in mindestens eines der Register 302307 des Hauptprozessors 301 zu schreiben.
  • In manchen Ausführungsformen der vorliegenden Erfindung kann das Computersystem 300 dafür ausgelegt sein, die folgenden Schritte auszuführen, wenn der erste Modus-Umschaltbefehl ausgeführt wird.
  • Das Computersystem 300 kann überprüfen, ob das Indikatorbit 308 auf einen Wert gesetzt ist, der anzeigt, dass sich das Computersystem im parallelen Betriebsmodus befindet oder nicht. Wenn das Indikatorbit 308 anzeigt, dass sich das Computersystem 300 im seriellen Betriebsmodus befindet, wird ein Fehler wegen eines illegalen Befehls erzeugt und keine weiteren Aktionen werden durchgeführt. Die weiteren Aktionen, die vom Computersystem 300 durchgeführt werden, können davon abhängen, ob der erste Modus-Umschaltbefehl vom Hauptprozessor 301 oder von einem der untergeordneten Prozessoren 321, 331 ausgeführt wird.
  • Wenn der erste Modus-Umschaltbefehl vom Hauptprozessor 301 ausgeführt wird, kann das Computersystem 300 die Befehlsverarbeitung in den untergeordneten Prozessoren 321, 331 anhalten. Nachdem die Befehlsverarbeitung in allen untergeordneten Prozessoren 321, 331 angehalten ist, können der Inhalt der Register 322325, 332335 der untergeordneten Prozessoren 321, 331 und wahlweise die Laufstatusbits 330, 340 der untergeordneten Prozessoren 321, 331 in den Pufferspeicher 313 geschrieben werden, dessen Adresse von einem aus der zweiten Teilmenge 306, 307 der Register 302307 des Hauptprozessors 301 gelesen werden kann, beispielsweise aus dem Register 306. Zusätzlich kann eine Identifikationsnummer des Hauptprozessors 301, die in manchen Ausführungsformen die Zahl Null sein kann, in den Pufferspeicher 313 geschrieben werden.
  • Anschließend kann der Inhalt von einem aus der zweiten Teilmenge 306, 307 der Register 302307 des Hauptprozessors 301, der die Adresse des Pufferspeichers 313 enthält, beispielsweise der Inhalt des Registers 306, mit dem Inhalt von einem aus der ersten Teilmenge 302305 der Register 302307 des Hauptprozessors 301 vertauscht werden, beispielsweise mit dem Inhalt des Registers 305. Wie oben beschrieben kann das Betriebssystem, das auf dem Computersystem 300 läuft, dafür ausgelegt sein, die erste Teilmenge 302305 der Register des Hauptprozessors 301 im Fall einer Unterbrechung oder Ausnahme handzuhaben. Somit kann das Vertauschen des Inhalts der Register 305, 306 dabei helfen, sicherzustellen, dass die Adresse des Pufferspeichers 313 im Fall einer Unterbrechung oder Ausnahme vom Betriebssystem gespeichert und wiederhergestellt wird.
  • Danach kann das Computersystem den Inhalt der zweiten Teilmenge 306, 307 der Register des Hauptprozessors 301 in dem Pufferspeicher 313 abspeichern. Wie oben beschrieben kann eines aus der zweiten Teilmenge 306, 307 der Register 302307, beispielsweise das Register 307, die Adresse des Lese-Sprungbefehls enthalten. Somit kann die Adresse des Lese-Sprungbefehls in dem Pufferspeicher 313 abgespeichert werden, wenn der Inhalt der Register 306, 307 gespeichert wird. Anschließend kann das Computersystem 300 das Indikatorbit 308 auf einen Wert setzen, der anzeigt, dass sich das Computersystem im zweiten Betriebsmodus befindet, beispielsweise auf den Wert ”AUS”.
  • Wenn der erste Modus-Umschaltbefehl von einem der untergeordneten Prozessoren 321, 331 ausgeführt wird, kann das Computersystem 300 die Befehlsverarbeitung im Hauptprozessor 301 sowie in den untergeordneten Prozessoren 321, 331 anhalten. Nachdem die Befehlsverarbeitung in allen Prozessoren 302, 321, 331 anhalten ist, kann der Inhalt der Register 302307 des Hauptprozessors 301 in dem Pufferspeicher 313 abgespeichert werden, dessen Adresse von einem aus der zweiten Teilmenge 306, 307 der Register 302307 des Hauptprozessors 301 gelesen werden kann, beispielsweise aus dem Register 306. Zusätzlich können der Inhalt der Register 322325, 332335 der untergeordneten Prozessoren 321, 331 und wahlweise die Werte der Laufstatusbits 330, 340 der untergeordneten Prozessoren 321, 331 in dem Pufferspeicher 313 abgespeichert werden.
  • In manchen Ausführungsformen muss der Inhalt des untergeordneten Prozessors 321, 331, in dem der erste Modus-Umschaltbefehl ausgeführt wird, nicht in dem Pufferspeicher abgespeichert werden. In solchen Ausführungsformen wird nur der Inhalt der Register der anderen untergeordneten Prozessoren im Pufferspeicher 313 abgespeichert. Somit werden nur der Inhalt der Register 332335 des zweiten untergeordneten Prozessors und wahlweise der Inhalt der Register weiterer untergeordneter Prozessoren, die sich neben den untergeordneten Prozessoren 321, 331 im Computersystem 300 befinden, im Pufferspeicher 313 abgespeichert, wenn der erste Modus-Umschaltbefehl vom ersten untergeordneten Prozessor 321 ausgeführt wird. Wenn dagegen der erste Modus-Umschaltbefehl vom zweiten untergeordneten Prozessor 331 ausgeführt wird, kann das System den Inhalt der Register 322325 des ersten untergeordneten Prozessors 321 im Pufferspeicher 313 abspeichern. In solchen Ausführungsformen können jedoch die Werte von allen Laufstatusbits 330, 340 im Pufferspeicher 313 abgespeichert werden.
  • Danach kann der Inhalt desjenigen Registers des Hauptprozessors 301, das die Adresse des Pufferspeichers enthält, beispielsweise der Inhalt des Registers 306, in einem temporären Register abgespeichert werden, das in manchen Ausführungsformen im Pufferspeicher 313 bereitgestellt werden kann. Außerdem kann eine Identifikationsnummer des Prozessors, in dem der erste Modus-Umschaltbefehl ausgeführt wird, im Pufferspeicher 313 abgespeichert werden. Beispielsweise kann das Computersystem 300 eine Identifikationsnummer 1 im Pufferspeicher 313 abspeichern, wenn der erste Modus-Umschaltbefehl durch den ersten untergeordneten Prozessor 321 ausgeführt wird. Wenn der erste Modus-Umschaltbefehl durch den zweiten untergeordneten Prozessor 331 ausgeführt wird, kann das Computersystem 300 eine Identifikationsnummer 2 im Pufferspeicher 313 abspeichern. In anderen Ausführungsformen können andere Identifikationsnummern verwendet werden.
  • Anschließend kann der Inhalt der Register 322325 bzw. 332335 des untergeordneten Prozessors 321 bzw. 331, der den ersten Modus-Umschaltbefehl ausführt, in die erste Teilmenge 302305 der Register 302307 des Hauptprozessors 301 geschrieben werden. In manchen Ausführungsformen kann der Inhalt von einigen oder allen aus der zweiten Teilmenge 306, 307 der Register 302307 des Hauptprozessors 301 überschrieben werden, während der Inhalt der Register 322325 oder 332335 in die erste Telmenge 302305 der Register geschrieben wird.
  • Anschließend kann das Computersystem 300 den Inhalt von einem aus der ersten Teilmenge der Register 302305 des Hauptprozessors 301 im Pufferspeicher 313 abspeichern, beispielsweise den Inhalt des Registers 305. Anschließend kann der Inhalt des temporären Puffers in den Register 305 geschrieben werden. Somit wird die Adresse des Pufferspeichers 313 in einem Register abgespeichert, dessen Inhalt im Fall einer Unterbrechung oder Ausnahme vom Betriebssystem gehandhabt wird. Danach kann das Indikatorbit 308 auf einen Wert gesetzt werden, der anzeigt, dass sich das Computersystem 300 im ersten Betriebsmodus befindet, beispielsweise auf den Wert ”AUS”, um das Computersystem 300 in den seriellen Betriebsmodus zu schalten.
  • In manchen Ausführungsformen der vorliegenden Erfindung kann das Computersystem 300 dafür ausgelegt sein, die oben beschriebenen Schritte als unteilbare Speicheroperation auszuführen, um Probleme, die von einer Unterbrechung oder Ausnahme, die während der Ausführung des ersten Modus-Umschaltbefehls auftritt, herrühren können, zu vermeiden.
  • Nach der Ausführung des ersten Modus-Umschaltbefehls kann das Computersystem 300 einen oder mehrere Befehle im seriellen Betriebsmodus ausführen. Das Computersystem 300 kann im seriellen Betriebsmodus bleiben, bis der oben beschriebene Aktivierungsbefehl oder der zweite Modus-Umschaltbefehl, der unten genauer erläutert wird, ausgeführt wird. Beispielsweise kann das Computersystem 300 einen Aufruf des Betriebssystems des Computersystems 300 ausführen.
  • Das Computersystem 300 kann ferner einen zweiten Modus-Umschaltbefehl aufweisen, der dafür ausgelegt ist, das Computersystem 300 aus dem seriellen Betriebsmodus in den parallelen Betriebsmodus zu schalten und den Inhalt von einigen oder allen der Register 302307, 322325, 332335 der Prozessoren 301, 321, 331 und wahlweise Werte der Laufstatusbits 330, 340 der untergeordneten Prozessoren 321, 331 aus dem Pufferspeicher 313 zu lesen. Wenn eine vorangehende Ausführung des ersten Modus-Umschaltbefehls durch einen der untergeordneten Prozessoren 321, 331 durchgeführt wurde, kann das Computer system 300 ferner den Inhalt von mindestens einem der Register 302307 des Hauptprozessors 301 in denjenigen untergeordneten Prozessor 321, 331 schreiben, der den ersten Modus-Umschaltbefehl ausgeführt hat.
  • In manchen Ausführungsformen kann das Computersystem 300 dafür ausgelegt sein, die folgenden Schritte auszuführen, wenn der zweite Modus-Umschaltbefehl ausgeführt wird.
  • Zuerst kann das Computersystem 300 das Steuerregisterbit 309 überprüfen. Wenn der Wert des Steuerregisterbits 309 anzeigt, dass der parallele Betriebsmodus des Computersystems 300 nicht erlaubt ist, wird ein Fehler wegen eines unzulässigen Befehls erzeugt und es werden keine weiteren Aktionen ausgeführt. Andernfalls kann das Computersystem 300 eine Identifikationsnummer, die den Prozessor angibt, der den ersten Modus-Umschaltbefehl zuletzt ausgeführt hat, lesen. Weitere Schritte, die von dem Computersystem 300 ausgeführt werden, können davon abhängen, ob der erste Modus-Umschaltbefehl vom Hauptprozessor 301 oder von einem der untergeordneten Prozessoren 321, 331 ausgeführt wurde.
  • Wenn der erste Modus-Umschaltbefehl vom Hauptprozessor 301 ausgeführt wurde, was in machen Ausführungsformen durch einen Wert Null der Identifikationsnummer angezeigt werden kann, kann das Computersystem den Inhalt der Register 322325, 332335 der untergeordneten Prozessoren 321, 331 und wahlweise Werte der Laufstatusbits 330, 340 aus dem Pufferspeicher 313 lesen. Außerdem kann das Computersystem 300 den Inhalt der zweiten Teilmenge 306, 307 der Register 302307 des Hauptprozessors 301 aus dem Pufferspeicher lesen. Anschließend können der Inhalt von einem aus der zweiten Teilmenge 302305 der Register 302307 des Hauptprozessors 301, der die Adresse des Pufferspeichers enthält und der Inhalt von einem aus der zweiten Teilmenge 306, 307 der Register vertauscht werden, um die Adresse des Pufferspeichers 313 in der zweiten Teilmenge 306, 307 der Register abzuspeichern. In manchen Ausführungsformen kann der Inhalt der Register 305, 306 vertauscht werden.
  • Danach kann das Computersystem 300 das Indikatorbit 308 auf einen Wert setzen, der anzeigt, dass sich das Computersystem 300 im parallelen Betriebsmodus befindet. In manchen Ausführungsformen kann das Indikatorbit 308 auf den Wert ”AUS” gesetzt werden. Anschließend kann die Befehlsverarbeitung im Hauptprozessor 301 und in jedem der Hilfsprozessoren 321, 331, in dem der Wert des Laufstatusbits 330, 340 anzeigt, dass der jeweilige untergeordnete Prozessor 321, 331 vor dem ersten Modus-Umschaltbefehl Befehle verarbeitet hat, wieder aufgenommen werden.
  • Wenn die letzte Ausführung des ersten Modus-Umschaltbefehl von einem der untergeordneten Prozessoren ausgeführt wurde, was durch einen Wert größer als Null der Identifikationsnummer angezeigt werden kann, können der Inhalt der Register 322325, 332335 der untergeordneten Prozessoren 321, 331 sowie die Werte der Laufstatusbits 330, 340 aus dem Pufferspeicher 313 gelesen werden, dessen Adresse von einem aus der ersten Teilmenge 302305 des Hauptprozessors 301 gelesen werden kann, beispielsweise aus dem Register 305. In manchen Ausführungsformen kann nur der Inhalt der Register derjenigen untergeordneten Prozessoren 321, 331, in denen die vorangehende Ausführung des ersten Modus-Umschaltbefehls nicht durchgeführt wurde, aus dem Pufferspeicher 313 gelesen werden. Zusätzlich kann das Computersystem 300 den Inhalt der zweiten Teilmenge 306, 307 der Register 302307 des Hauptprozessors 301 aus dem Pufferspeicher 313 lesen.
  • Anschließend kann der Inhalt des Registers, das die Adresse des Pufferspeichers 313 enthält, und das in manchen Ausführungsformen das Register 305 sein kann, in ein temporäres Register geschrieben werden, das im Pufferspeicher 313 bereitgestellt werden kann, und der Inhalt des Registers 305 kann aus dem Pufferspeicher 313 gelesen werden. Danach kann der Inhalt der ersten Telmenge 302305 der Register 302307 des Hauptprozessors 301 in die Register des untergeordneten Prozessors 321, 331 geschrieben werden, in dem der erste Modus-Umschaltbefehl zuletzt ausgeführt wurde. Somit können die Register des untergeordneten Prozessors 321, 331 Änderungen der Register des Hauptprozessors 301, die vorgenommen wurden, während das Computersystem 300 im zweiten Betriebsmodus betrieben wurde, enthalten. Deshalb kann die Ausführung eines Threads, der während des seriellen Betriebsmodus auf dem Hauptprozessor 301 gelaufen ist, auf dem untergeordneten Prozessor leichter fortgesetzt werden. Beispielsweise kann die erste Teilmenge 302305 der Register 302307 des Hauptprozessors 301 eine Ausnahmeinformation (exception information) über eine Unterbrechung oder Ausnahme enthalten, die aufgetreten ist, während das Computersystem 300 im seriellen Betriebsmodus betrieben wurde und die von den untergeordneten Prozessoren 321, 331 berücksichtigt werden kann, wenn sich das Computersystem 300 im parallelen Betriebsmodus befindet.
  • Anschließend kann der Inhalt der ersten Teilmenge 302305 der Register 302307 des Hauptprozessors 301 aus dem Pufferspeicher 313 gelesen werden und das Indikatorbit 308 kann auf einen Wert gesetzt werden, der anzeigt, dass sich das Computersystem 300 im parallelen Betriebsmodus befindet und die Befehlsverarbeitung kann im Hauptprozessor 301 und in denjenigen untergeordneten Prozessoren 321, 331 wieder aufgenommen werden, in denen der Wert des jeweiligen Laufstatusbits 330, 340 anzeigt, dass in dem jeweili gen untergeordneten Prozessor 321, 331 Befehle abgearbeitet wurden, als der erste Modus-Umschaltbefehl aufgerufen wurde, um das Computersystem 300 in den seriellen Betriebsmodus zu schalten.
  • In manchen Ausführungsformen kann das Computersystem 300 dafür ausgelegt sein, die oben beschriebenen Schritte des zweiten Modus-Umschaltbefehls als unteilbare Speicheroperation auszuführen, um Nachteile zu vermeiden, die durch eine Unterbrechung oder Ausnahme, die während der Ausführung des zweiten Modus-Umschaltbefehls auftreten könnte, verursacht werden könnten.
  • Der erste Modus-Umschaltbefehl und der zweite Modus-Umschaltbefehl können verwendet werden, um ein Programm zu implementieren, dass das Computersystem 300 zwischen dem parallelen und dem seriellen Betriebsmodus hin- und herschalten kann. Wenn der erste Modus-Umschaltbefehl ausgeführt wird, kann die weitere Ausführung des Programms im seriellen Betriebsmodus durchgeführt werden 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 ferner Befehle zum Speichern des Inhalts des Registers 305 oder eines anderen der Register 302307 des Hauptprozessors, in dem die Adresse des Pufferspeichers 313 nach der Ausführung des ersten Modus-Umschaltbefehls gespeichert wird, im Systemspeicher 304, und zum Lesen des Inhalts des Registers 305 vor der Ausführung des zweiten Modus-Umschaltbefehls aus dem Systemspeicher 304 umfassen. Dies kann mit Hilfe gewöhnlicher Speicher- und Lesebefehle des seriellen Betriebsmodus des Computersystems 300 geschehen. Nach dem Speichern des Inhalts des Registers 305 im Systemspeicher kann das Programm jeden aus der ersten Teilmenge 302305 der Register 302307 des Hauptprozessors 301 verwenden. Alternativ kann die Adresse des Pufferspeichers 313 in eine Variable gespeichert werden, aus der sie vor der Ausführung des ersten und/oder des zweiten Modus-Umschaltbefehls in das Register 305 geladen werden kann.
  • Der oben beschriebene Funktionsumfang und die oben beschriebenen Befehle des Computersystems 300 können mit Hilfe spezialisierter Schaltkreise, die sich im Hauptprozessor 301 und den untergeordneten Prozessoren 321, 331 befinden, bereitgestellt werden, oder mit Hilfe von Mikrocode, der sich in dem Hauptprozessor 301 und den untergeordneten Prozessoren 321, 331 befindet.
  • Weitere Abwandlungen und Varianten der vorliegenden Erfindung werden den Fachleuten angesichts dieser Beschreibung offensichtlich. Dementsprechend ist diese Beschreibung als lediglich veranschaulichend auszulegen und dient dem Zweck, den Fachleuten die allgemeine Art der Ausführung der vorliegenden Erfindung zu lehren. Es soll verstanden werden, dass die hierin gezeigten und beschriebenen Formen der Erfindung als die gegenwärtig bevorzugten Ausführungsformen angesehen werden sollen.

Claims (8)

  1. System mit einem Hauptprozessor und mindestens einem untergeordneten Prozessor, wobei ein Zustand des Hauptprozessors mehrere erste Variablen umfasst, und ein Zustand des untergeordneten Prozessors mehrere zweite Variablen umfasst, wobei das System einen parallelen Betriebsmodus, in dem Daten durch den Hauptprozessor und den mindestens einen untergeordneten Prozessor verarbeitet werden, sowie einen seriellen Betriebsmodus, in dem Daten nur durch den Hauptprozessor verarbeitet werden, aufweist; wobei die ersten Variablen Inhalte von Registern des Hauptprozessors darstellen und eine erste Rücksprungadresse umfassen, die in einem ersten Register gespeichert ist, und die zweiten Variablen Inhalte von Registern des untergeordneten Prozessors darstellen, und eine zweite Rücksprungadresse umfassen, die in einem zweiten Register gespeichert ist; wobei das System einen Lese-Sprungbefehl umfasst; wobei das System dafür ausgelegt ist, im Fall einer Unterbrechung oder Ausnahme, die während des parallelen Betriebsmodus im Hauptprozessor auftritt, die Befehlsverarbeitung in dem mindestens einen untergeordneten Prozessor anzuhalten, und die Schritte des Speicherns der ersten Rücksprungadresse und der mehreren zweiten Variablen in einem Pufferspeicher, des Ersetzens der ersten Rücksprungadresse durch den Inhalt eines Registers, das einen Zeiger auf einen Speicherort des in einem Programm bereitgestellten Lese-Sprungbefehls enthält, und des Umschaltens des Systems in den seriellen Betriebsmodus auszuführen, wobei die Schritte durch Schaltkreise im Hauptprozessor und dem mindestens einen untergeordneten Prozessor oder durch Microcode im Hauptprozessor und dem mindestens einen untergeordneten Prozessor unabhängig von einem Betriebssystem ausgeführt werden, und anschließend eine Unterbrechungsroutine auszuführen, nach deren Beendigung zu einer Speicheradresse gesprungen wird, die in dem ersten Register gespeichert ist; wobei der Lese-Sprungbefehl dafür ausgelegt ist, die Schritte des Umschaltens des Systems in den parallelen Betriebsmodus und des Lesens der mehreren zweiten Variablen und der ersten Rücksprungadresse aus dem Pufferspeicher durchzuführen, wenn die Unterbrechung oder Ausnahme in dem Hauptprozessor aufgetreten ist; und wobei das System ferner dafür ausgelegt ist, im Fall einer Unterbrechung oder Ausnahme, die während des parallelen Betriebsmodus in dem mindestens einen untergeordneten Prozessor auftritt, die Befehlsverarbeitung in dem Hauptprozessor und dem mindestens einen untergeordneten Prozessor anzuhalten, und die Schritte des Speicherns der mehreren ersten Variablen und der mehreren zweiten Variablen in einem Pufferspeicher, des Setzens von mindestens einer der mehreren ersten Variablen auf einen Wert von mindestens einer der mehreren zweiten Variablen, des Ersetzens der ersten Rücksprungadresse durch den Inhalt eines Registers, das einen Zeiger auf einen Speicherort des in einem Programm bereitgestellten Lese-Sprungsbefehls enthält und des Umschaltens in den seriellen Betriebsmodus auszuführen, wobei die Schritte durch Schaltkreise im Hauptprozessor und dem mindestens einen untergeordneten Prozessor oder durch Microcode im Hauptprozessor und dem mindestens einen untergeordneten Prozessor unabhängig von einem Betriebssystem ausgeführt werden; wobei der Lese-Sprungbefehl dafür ausgelegt ist, die Schritte des Umschaltens des Systems in den parallelen Betriebsmodus, des Lesens der mehreren zweiten Variablen aus dem Pufferspeicher, des Setzens der mindestens einen der mehreren zweiten Variablen auf einen Wert der mindestens einen der mehreren ersten Variablen und des Lesens der mehreren ersten Variablen aus dem Pufferspeicher durchzuführen, wenn die Unterbrechung oder Ausnahme in dem mindestens einem untergeordneten Prozessor aufgetreten ist.
  2. System nach Anspruch 1, zusätzlich umfassend einen Variablen-Sendebefehl, der dafür ausgelegt ist, Werte von einer oder mehreren der mehreren ersten Variablen in eine oder mehrere der mehreren zweiten Variablen zu schreiben.
  3. System nach Anspruch 1, zusätzlich umfassend einen Variablen-Empfangsbefehl, der dafür ausgelegt ist, Werte von einer oder mehreren der mehreren zweiten Variablen in eine oder mehrere der mehreren ersten Variablen zu schreiben.
  4. System nach Anspruch 1, ferner umfassend einen Verzweigungsbefehl, der dafür ausgelegt ist, die Befehlsverarbeitung durch den mindestens einen untergeordneten Prozessor zu veranlassen, wobei die Befehlsverarbeitung an einer angegebenen Speicheradresse beginnt.
  5. System nach Anspruch 1, zusätzlich umfassend einen Verbindungsbefehl des mindestens einen untergeordneten Prozessors, der dafür ausgelegt ist, die Befehlsverarbeitung durch den mindestens einen untergeordneten Prozessor zu beenden.
  6. System nach Anspruch 5, zusätzlich umfassend einen Verbindungsbefehl des Hauptprozessors, der dafür ausgelegt ist, den Hauptprozessor warten zu las sen, bis die Befehlsverarbeitung in dem mindestens einen untergeordneten Prozessor beendet ist.
  7. System nach Anspruch 1, zusätzlich umfassend einen Endbefehl, der dafür ausgelegt ist, das System von dem parallelen Betriebsmodus in den seriellen Betriebsmodus zu schalten.
  8. Verfahren zum Betreiben eines Systems mit einem Hauptprozessor und mindestens einem untergeordneten Prozessor, wobei ein Zustand des Hauptprozessors mehrere erste Variable umfasst und ein Zustand des untergeordneten Prozessors mehrere zweite Variable umfasst, wobei das System einen parallelen Betriebsmodus, in dem Daten von dem Hauptprozessor und dem mindestens einen untergeordneten Prozessor verarbeitet werden, sowie einen seriellen Betriebsmodus, in dem Daten nur durch den Hauptprozessor verarbeitet werden, aufweist, wobei die ersten Variablen Inhalte von Registern des Hauptprozessors darstellen und eine erste Rücksprungadresse, die in einem ersten Register gespeichert ist, umfassen und die zweiten Variablen Inhalte von Registern des untergeordneten Prozessors darstellen und eine zweite Rücksprungadresse umfassen, die in einem zweiten Register gespeichert ist, wobei das System einen Lese-Sprungbefehl aufweist und wobei das Verfahren umfasst: falls eine Unterbrechung oder Ausnahme während des parallelen Betriebsmodus im Hauptprozessor auftritt, Anhalten der Befehlsverarbeitung in dem mindestens einen untergeordneten Prozessor und Durchführen der Schritte des Abspeicherns der ersten Rücksprungadresse und der mehreren zweiten Variablen in einem Pufferspeicher, des Ersetzens der ersten Rücksprungadresse durch den Inhalt eines Registers, das einen Zeiger auf einen Speicherort des in einem Programm bereitgestellten Lese-Springbefehls enthält und des Umschaltens des Systems in den seriellen Betriebsmodus, wobei die Schritte durch Schaltkreise im Hauptprozessor und dem mindestens einen untergeordneten Prozessor oder durch Microcode im Hauptprozessor und dem mindestens einen untergeordneten Prozessor unabhängig von einem Betriebssystem ausgeführt werden und anschließendes Ausführen einer Unterbrechungsroutine, nach deren Beendigung zu einer Speicheradresse gesprungen wird, die in dem ersten Register gespeichert ist; wobei der Lese-Sprungbefehl die Schritte des Umschaltens des Systems in den parallelen Betriebsmodus und des Lesens der mehreren zweiten Variablen und der ersten Rücksprungadresse aus dem Pufferspeicher durchführt, wenn die Unterbrechung oder Ausnahme in dem Hauptprozessor aufgetreten ist; und falls eine Unterbrechung oder Ausnahme während des parallelen Betriebsmodus in dem mindestens einen untergeordneten Prozessor auftritt, Anhalten der Befehlsverarbeitung in dem Hauptprozessor und dem mindestens einen untergeordneten Prozessor und Durchführen der Schritte des Speicherns der mehreren ersten Variablen und der mehreren zweiten Variablen in dem Pufferspeicher, des Setzens von mindestens einer der mehreren ersten Variablen auf einen Wert von mindestens einer der mehreren zweiten Variablen, des Ersetzens der ersten Rücksprungadresse durch den Inhalt eines Registers, das einen Zeiger auf einen Speicherort des in einem Programm bereitgestellten Lese-Sprungsbefehls enthält und des Umschaltens in den seriellen Betriebsmodus, wobei die Schritte durch Schaltkreise im Hauptprozessor und dem mindestens einen untergeordneten Prozessor oder durch Microcode im Hauptprozessor und dem mindestens einen untergeordneten Prozessorunabhängig von einem Betriebssystem ausgeführt werden; wobei der Lese-Sprungsbefehl die Schritte des Umschaltens des Systems in den parallelen Betriebsmodus, des Lesens der mehreren zweiten Variablen aus dem Pufferspeicher, des Setzens der mindestens einen der mehreren zweiten Variablen auf einen Wert der mindestens einen der mehreren ersten Variablen und des Lesens der mehreren ersten Variablen aus dem Pufferspeicher durchführt, wenn die Unterbrechung oder Ausnahme in dem mindestens einen untergeordneten Prozessor aufgetreten ist.
DE102007025397A 2007-05-31 2007-05-31 System mit mehreren Prozessoren und Verfahren zu seinem Betrieb Active DE102007025397B4 (de)

Priority Applications (10)

Application Number Priority Date Filing Date Title
DE102007025397A DE102007025397B4 (de) 2007-05-31 2007-05-31 System mit mehreren Prozessoren und Verfahren zu seinem Betrieb
US12/014,868 US7689809B2 (en) 2007-05-31 2008-01-16 Transparent return to parallel mode by rampoline instruction subsequent to interrupt processing to accommodate slave processor not supported by operating system
EP08767909A EP2171575B1 (de) 2007-05-31 2008-05-28 System mit mehreren prozessoren und verfahren zu seinem betrieb
KR1020097027561A KR101485068B1 (ko) 2007-05-31 2008-05-28 복수의 프로세서들을 포함하는 시스템 및 그 동작 방법
AT08767909T ATE516533T1 (de) 2007-05-31 2008-05-28 System mit mehreren prozessoren und verfahren zu seinem betrieb
CN200880018013.4A CN101730881B (zh) 2007-05-31 2008-05-28 包括多个处理器的系统以及操作该系统的方法及设备
TW97119627A TWI467490B (zh) 2007-05-31 2008-05-28 包括複數個處理器之系統以及操作該系統之方法
PCT/US2008/006744 WO2008153797A1 (en) 2007-05-31 2008-05-28 System comprising a plurality of processors and methods of operating the same
JP2010510321A JP5295228B2 (ja) 2007-05-31 2008-05-28 複数のプロセッサを備えるシステム、ならびにその動作方法
GB0920863A GB2461841A (en) 2007-05-31 2009-11-30 System comprising a plurality of processing and methods of operating the same

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE102007025397A DE102007025397B4 (de) 2007-05-31 2007-05-31 System mit mehreren Prozessoren und Verfahren zu seinem Betrieb

Publications (2)

Publication Number Publication Date
DE102007025397A1 DE102007025397A1 (de) 2008-12-04
DE102007025397B4 true DE102007025397B4 (de) 2010-07-15

Family

ID=39917349

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102007025397A Active DE102007025397B4 (de) 2007-05-31 2007-05-31 System mit mehreren Prozessoren und Verfahren zu seinem Betrieb

Country Status (10)

Country Link
US (1) US7689809B2 (de)
EP (1) EP2171575B1 (de)
JP (1) JP5295228B2 (de)
KR (1) KR101485068B1 (de)
CN (1) CN101730881B (de)
AT (1) ATE516533T1 (de)
DE (1) DE102007025397B4 (de)
GB (1) GB2461841A (de)
TW (1) TWI467490B (de)
WO (1) WO2008153797A1 (de)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100138575A1 (en) * 2008-12-01 2010-06-03 Micron Technology, Inc. Devices, systems, and methods to synchronize simultaneous dma parallel processing of a single data stream by multiple devices
US7930519B2 (en) * 2008-12-17 2011-04-19 Advanced Micro Devices, Inc. Processor with coprocessor interfacing functional unit for forwarding result from coprocessor to retirement unit
JP4572259B1 (ja) * 2009-04-27 2010-11-04 株式会社フォティーンフォティ技術研究所 情報機器、プログラム及び不正なプログラムコードの実行防止方法
CN101882098B (zh) * 2009-07-10 2012-07-11 威盛电子股份有限公司 微处理器集成电路以及相关除错方法
US9710275B2 (en) * 2012-11-05 2017-07-18 Nvidia Corporation System and method for allocating memory of differing properties to shared data objects
US20160147536A1 (en) * 2014-11-24 2016-05-26 International Business Machines Corporation Transitioning the Processor Core from Thread to Lane Mode and Enabling Data Transfer Between the Two Modes
US9747108B2 (en) * 2015-03-27 2017-08-29 Intel Corporation User-level fork and join processors, methods, systems, and instructions
US20170090927A1 (en) * 2015-09-30 2017-03-30 Paul Caprioli Control transfer instructions indicating intent to call or return
SE1751244A1 (en) * 2016-03-23 2017-10-09 Clavister Ab Method for traffic shaping using a serial packet processing algorithm and a parallel packet processing algorithm
JP6943942B2 (ja) 2016-03-23 2021-10-06 クラビスター アクティエボラーグ 順次パケット処理アルゴリズム及び並列パケット処理アルゴリズムを用いることによってトラフィックシェーピングを行う方法
US10541868B2 (en) * 2017-02-24 2020-01-21 Quanta Computer Inc. System and method for automatically updating bios setup options
US10831502B2 (en) * 2018-11-06 2020-11-10 International Business Machines Corporation Migration of partially completed instructions
US10831478B2 (en) 2018-11-06 2020-11-10 International Business Machines Corporation Sort and merge instruction for a general-purpose processor
US10831503B2 (en) 2018-11-06 2020-11-10 International Business Machines Corporation Saving and restoring machine state between multiple executions of an instruction
CN111181169B (zh) * 2020-01-13 2023-10-20 深圳市禾望电气股份有限公司 Svg并联运行系统的控制方法、装置以及存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5978838A (en) * 1996-08-19 1999-11-02 Samsung Electronics Co., Ltd. Coordination and synchronization of an asymmetric, single-chip, dual multiprocessor
US20070067533A1 (en) * 2005-08-25 2007-03-22 Kimming So System and method for interrupt distribution in a concurrent multithread processor

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5197138A (en) * 1989-12-26 1993-03-23 Digital Equipment Corporation Reporting delayed coprocessor exceptions to code threads having caused the exceptions by saving and restoring exception state during code thread switching
US5481719A (en) * 1994-09-09 1996-01-02 International Business Machines Corporation Exception handling method and apparatus for a microkernel data processing system
US5812823A (en) * 1996-01-02 1998-09-22 International Business Machines Corporation Method and system for performing an emulation context save and restore that is transparent to the operating system
US6003129A (en) * 1996-08-19 1999-12-14 Samsung Electronics Company, Ltd. System and method for handling interrupt and exception events in an asymmetric multiprocessor architecture
US6230259B1 (en) * 1997-10-31 2001-05-08 Advanced Micro Devices, Inc. Transparent extended state save
US6574725B1 (en) * 1999-11-01 2003-06-03 Advanced Micro Devices, Inc. Method and mechanism for speculatively executing threads of instructions
US6651163B1 (en) * 2000-03-08 2003-11-18 Advanced Micro Devices, Inc. Exception handling with reduced overhead in a multithreaded multiprocessing system
KR100456630B1 (ko) * 2001-12-11 2004-11-10 한국전자통신연구원 프로세서간 통신을 위한 인터럽트 중계 장치 및 방법
US7765388B2 (en) * 2003-09-17 2010-07-27 Broadcom Corporation Interrupt verification support mechanism
JP4457047B2 (ja) * 2005-06-22 2010-04-28 株式会社ルネサステクノロジ マルチプロセッサシステム
US7912302B2 (en) * 2006-09-21 2011-03-22 Analog Devices, Inc. Multiprocessor decoder system and method

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5978838A (en) * 1996-08-19 1999-11-02 Samsung Electronics Co., Ltd. Coordination and synchronization of an asymmetric, single-chip, dual multiprocessor
US20070067533A1 (en) * 2005-08-25 2007-03-22 Kimming So System and method for interrupt distribution in a concurrent multithread processor

Also Published As

Publication number Publication date
GB0920863D0 (en) 2010-01-13
JP2010529533A (ja) 2010-08-26
CN101730881B (zh) 2014-07-09
GB2461841A (en) 2010-01-20
KR101485068B1 (ko) 2015-01-21
WO2008153797A1 (en) 2008-12-18
EP2171575B1 (de) 2011-07-13
TW200905566A (en) 2009-02-01
TWI467490B (zh) 2015-01-01
CN101730881A (zh) 2010-06-09
US20080301408A1 (en) 2008-12-04
ATE516533T1 (de) 2011-07-15
EP2171575A1 (de) 2010-04-07
KR20100036279A (ko) 2010-04-07
US7689809B2 (en) 2010-03-30
JP5295228B2 (ja) 2013-09-18
DE102007025397A1 (de) 2008-12-04

Similar Documents

Publication Publication Date Title
DE102007025397B4 (de) System mit mehreren Prozessoren und Verfahren zu seinem Betrieb
DE112012000303B4 (de) Dynamische binäre Optimierung
DE2714805C2 (de)
DE2411963C3 (de) Elektronische Datenverarbeitungsanlage mit einer Prioritätssteuerschaltung mit änderbaren Steuerblöcken
DE2722099C2 (de)
DE2716051C2 (de) Datenverarbeitungsanlage mit einem oder mehreren Prozessoren mit mindestem einem Ein-/Ausgabekanal mit mehreren Unterkanälen und mit einer Speicheranordnung, bei der zum Speicherzugriff Schlüssel verwendet werden
DE10393920B4 (de) Verfahren und Systeme zur Steuerung virtueller Maschinen
DE2251876C3 (de) Elektronische Datenverarbeitungsanlage
DE69434728T2 (de) Synchronisationssystem und verfahren in einem datencachesystem mit aufgeteiltem pegel
DE69820027T2 (de) Vorrichtung zur ausführung virtueller maschinenbefehle
DE102013022299B3 (de) Schutz globaler Register in einem Multithreaded-Prozessor
DE60115976T2 (de) Rechnersystem und Interruptvorgang
DE202007019502U1 (de) Globaler Überlauf für virtualisierten Transaktionsspeicher
DE2517276A1 (de) Datenverarbeitungssystem
DE112012000693T5 (de) Ausführen einer Vielzahl von Instanzen einer Anwendung
DE112005002370T5 (de) Ausführung von Kontrollbefehlen in redundanten Multithreadingumgebungen
DE112013002054T5 (de) Neu konfigurierbare Wiederherstellungsmodi in Hochverfügbarkeitsprozessoren
DE112006002582T5 (de) Bewirken einer Zusatzspeicherung in einem User-Levelspeicher
DE102006039747A1 (de) Verfahren für Kontextzustandsmanagement
DE102013209643A1 (de) Mechanismus für optimierte Nachrichtenaustauschdatenübertragung zwischen Nodelets innerhalb eines Plättchens
DE102010053095A1 (de) Adaptive optimierte Compare-Exchange-Operation
DE19929051C2 (de) Registerumbenennungsverfahren für 32- und 64-Bit-Befehle in einem Programm
DE102007015507B4 (de) Prozessor mit einem ersten und einem zweiten Betriebsmodus und Verfahren zu seinem Betrieb
DE2717700C2 (de) Speicherzugriffsanordnung
DE102013022169A1 (de) Fehlerpuffer zur verfolgung von seitenfehlern in einem vereinheitlichten virtuellen speichersystem

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
8364 No opposition during term of opposition