DE19735871A1 - Verfahren zum effizienten Sicherstellen und Wiederherstellen von Kontext in einer Multitasking-Rechensystemumgebung - Google Patents

Verfahren zum effizienten Sicherstellen und Wiederherstellen von Kontext in einer Multitasking-Rechensystemumgebung

Info

Publication number
DE19735871A1
DE19735871A1 DE19735871A DE19735871A DE19735871A1 DE 19735871 A1 DE19735871 A1 DE 19735871A1 DE 19735871 A DE19735871 A DE 19735871A DE 19735871 A DE19735871 A DE 19735871A DE 19735871 A1 DE19735871 A1 DE 19735871A1
Authority
DE
Germany
Prior art keywords
processor
program
context
coprocessor
state information
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.)
Ceased
Application number
DE19735871A
Other languages
English (en)
Inventor
Seungyoon Peter Song
Moataz A Mohamed
Le Nguyen
Heon Chul Park
Jerry Van Aken
Alexandro Forin
Andrew Raffman
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.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics Co Ltd
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 Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of DE19735871A1 publication Critical patent/DE19735871A1/de
Ceased legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • 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
    • 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/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • 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
    • 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/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • 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/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • G06F9/3887Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/461Saving or restoring of program or task context

Description

Die vorliegende Erfindung betrifft Rechensysteme und insbesondere Kontextschaltoperationen in einer Multitasking-Umgebung mit beispielsweise einer Mehrprozessorarchitektur.
Beim Multitasking werden allgemein mehrere Programme in einem Computer, beispielsweise durch eine Programmausführung im Time-sharing-Betrieb, gleichzeitig ausgeführt. Computer-Benutzer haben den Eindruck, daß die Programme parallel aus­ geführt werden, obwohl der Computer in Wirklichkeit zwischen den Programmen umschaltet. Wenn ein Programm im Time-sharing-Betrieb ausgeführt wird, läuft ein Programm für eine Zeitdauer, bevor es "kontextbezogen ausgeschaltet" (task- geschaltet) wird, um ein anderes Programm auszuführen.
Wenn ein kontextbezogen ausgeschaltetes Programm fort­ gesetzt wird, sollte die Programmausführung an der präzisen Position fortgesetzt werden, wo die Ausführung zuvor unter­ brochen wurde. In Erwartung einer späteren Fortsetzung des kontextbezogen ausgeschalteten Programms führt ein Prozessor ein Verfahren zum Sicherstellen des Zustands des kontextbe­ zogen ausgeschalteten Programms aus, bevor der Prozessor ein anderes Programm lädt und ausführt. Dieser Programmzustand wird in verschiedenen Speicherstellen durch den Zustand des Prozessors zu dem Zeitpunkt dargestellt, an dem das Programm kontextbezogen ausgeschaltet wird.
Kontextschaltoperationen sind dem Programmierer des kontextbezogen ausgeschalteten Programms bekannt, weil aus der Sicht des Programmierers Kontextschaltoperationen zu be­ liebigen Zeitpunkten und daher an beliebigen Stellen im Pro­ gramm auftreten. Dem Betriebssystem, das die Kontextschal­ toperation ausführt, ist der Zustand des kontextbezogen aus­ geschalteten Programms nicht bekannt. Daher müssen alle Pro­ zessorzustandinformationen gesichert werden, wenn das Pro­ gramm kontextbezogen ausgeschaltet wird. Die Prozessorzu­ standinformationen umfassen alle Architektur- und Software-Sichtregister sowie alle Speicherstellen, die Adressen zuge­ ordnet sind, die nur innerhalb des Prozessors bekannt sind, wie beispielsweise Notizblockspeicher.
Für eine Prozessorarchitektur mit einer großen Zustand­ informationsmenge ist das herkömmliche Programmkontext­ schaltverfahren, bei dem alle Prozessorzustandinformationen sichergestellt und wiederhergestellt werden, ineffizient und kann die Prozessorleistung negativ beeinflussen. Diese Inef­ fizienzen und die negative Leistungsbeeinflussung, die mit dem Kontextschalten verbunden sind, können teilweise Prozes­ soroperationen zugeordnet werden, bei denen auf mehrere Speicheradressen zugegriffen werden muß, die der Speicherung der Prozessorzustandinformationen zugeordnet sind, und teilweise Operationen, durch die die Prozessorzustandsinfor­ mationen über Busse mit relativ geringer Bandbreite in ande­ re Speicherstellen geschrieben werden. Durch die gleichen Ineffizienzen des herkömmlichen Kontextschaltverfahrens wird außerdem die Prozessorleistung während des Programmwieder­ herstellungsprozesses negativ beeinflußt, wenn alle gespei­ cherten Prozessorzustandinformationen in die den Prozessor­ zustandinformationen zugeordneten Speicherstellen zurück­ übertragen werden. Diese Ineffizienzen akkumulieren sich während jedes Programmkontextschaltvorgangs. Beispielsweise kann eine Multimedia-Signalprozessorarchitektur einen Pro­ zessorzustand aufweisen, der durch mehr als 7 kByte Informa­ tion in über 100 Registern und Speicherstellen dargestellt wird. Für jeden Kontextschaltvorgang müssen herkömmlich alle diese Informationen in eine Speicherstelle eines Prozessor­ zustandspeichers übertragen werden.
Durch Reduzieren der in einem Multitasking-System, z. B. einem Multimedia-System, bei dem ein Multimedia-Signalprozessor verwendet wird, mit einem Kontextschaltvor­ gang verbundenen negativen Leistungsbeeinflussung werden un­ erwünschte Verzögerungen zwischen Programmausführungen vor­ teilhaft reduziert. Dies ist insbesondere vorteilhaft, wenn in Programmen große Informationsmengen verarbeitet werden, wie beispielsweise in einer Multimedia-Verarbeitungsumge­ bung.
Durch die vorliegende Erfindung wird die für Kontext­ schaltvorgänge zwischen Programmen erforderliche Prozessor­ zeit reduziert. An einigen Positionen in einem Programm, das kontextbezogen ausgeschaltet wird, müssen mehr Prozessorzu­ standinformationen gespeichert werden, um die Programmaus­ führung zu einem späteren Zeitpunkt fortzusetzen oder wie­ deraufzunehmen, als an anderen Positionen. Bei einer Ausfüh­ rungsform der Erfindung wird durch eine Mehrprozessorarchi­ tektur ermöglicht, daß ein Prozessor einen anderen Prozes­ sor, der ein aktuelles Programm ausführt, auffordert, sich selbst in Erwartung eines kontextbezogenen Ausschaltvorgangs des aktuellen Programms an einer geeigneten Position zu un­ terbrechen. Die geeignete Position entspricht einer Position im aktuell ausgeführten Programm, an dem die zum erfolgrei­ chen Wiederherstellen des kontextbezogen ausgeschalteten Programms erforderliche Prozessorzustandinformationsmenge reduziert werden kann, und muß dem Empfang der Kontext­ schaltanforderung nicht notwendigerweise unmittelbar folgen.
Bei einer anderen Ausführungsform der Erfindung werden Verantwortungen für Kontextsicherstellungs- und -wiederher­ stellungsfunktionen in einer Mukltitasking-Umgebung zwischen einem Prozessor und dem aktuell ausgeführten Anwendungspro­ gramm verteilt. Bei dieser Ausführungsform ist das Programm, beispielsweise durch einen bedingten Kontextschaltprogramm­ befehl, an mehreren Stellen markiert, die Positionen im Pro­ gramm entsprechen, für die eine reduzierte Prozessorzustand­ informationsmenge erforderlich ist, um die Ausführung des Programms erfolgreich fortzusetzen. Wenn das Programm die markierte Position erreicht und eine Kontextschaltanforde­ rung empfangen und erfaßt wurde, leitet das Programm eine Reaktionsverarbeitung ein, durch die nur Prozessorzustand­ informationen gespeichert werden, die zum erfolgreichen Fortsetzen des Programms erforderlich sind. Das Programm sollte ausreichend häufig markiert sein, um jegliche wesent­ liche Verzögerung zwischen einer Kontextschaltanforderung und einem als Reaktion darauf erfolgenden Kontextschaltvor­ gang zu vermindern.
Eine andere Ausführungsform der vorliegenden Erfindung ist eine Verarbeitung mit den Schritten: Ausführen eines er­ sten Programms in einem ersten Prozessor, Empfangen einer Kontextschaltanforderung von einem zweiten Prozessor und Reagieren auf die Kontextschaltaufforderung an einer geeig­ neten Position im ersten Programm, wobei die geeignete Posi­ tion einer Markierung im Programm zugeordnet ist, die eine nächstgelegene Position im ersten Programm anzeigt, an der eine minimale zu speichernde Prozessorzustandinformations­ menge zum erfolgreichen Wiederherstellen des Programms er­ forderlich ist.
Eine andere Ausführungsform der vorliegenden Erfindung ist ein Rechensystem mit einem ersten Prozessor in einer Multitasking-Umgebung zum Ausführen von Programmen, in die jeweils mehrere Kontextschaltmarkierungen eingefügt sind, und einem mit dem ersten Prozessor verbundenen ersten Spei­ cher, der der Speicherung von Prozessorzustandinformationen zugeordnet ist. Das Rechensystem weist ferner auf: einen mit dem ersten Prozessor verbundenen zweiten Speicher, einen be­ züglich dem ersten Prozessor arbeitenden Kontextschaltanfor­ derungsdetektor, der, nachdem der Prozessor eine der Markie­ rungen in einem ausgeführten Programm erreicht, eine Auffor­ derung zum kontextbezogenen Ausschalten des Programms er­ faßt, und ein bezüglich dem ersten Prozessor arbeitenden Kontextsicherungsmodul, das auf eine erfaßte Kontext­ schaltanforderung anspricht, um im ersten Speicher angeord­ nete Prozessorzustandinformationen in den zweiten Speicher zu speichern.
In den verschiedenen Figuren sind gleiche Merkmale durch gleiche Bezugszeichen bezeichnet.
Fig. 1 zeigt ein schematisches Blockdiagramm einer Aus­ führungsform eines erfindungsgemäßen Multimedia-Mehrprozessorsystems;
Fig. 2 zeigt ein schematisches Blockdiagramm eines Mul­ timedia-Signalprozessors des in Fig. 1 dargestellten Multi­ media-Mehrprozessorsystems.
Fig. 3 zeigt ein schematisches Blockdiagramm eines Co­ prozessors des in Fig. 2 dargestellten Multimedia-Signalprozessors;
Fig. 4 zeigt ein schematisches Blockdiagramm zum Dar­ stellen von Coprozessor-Ausführungsdatenwegen des in Fig. 3 dargestellten Coprozessors;
Fig. 5 zeigt ein schematisches Blockdiagramm zum Dar­ stellen einer Firmwarearchitektur des Multimedia-Signalpro­ zessors;
Fig. 6 zeigt ein Ablaufdiagramm zum Darstellen von ei­ ner wirksamen Programmkontextsicherung und Programmfortset­ zung in einer Mehrprozessorumgebung zugeordneten Operatio­ nen; und
Fig. 7 zeigt ein Beispiel eines ausführbaren Pro­ grammablaufsegments mit eingefügten bedingten Kontextschalt­ befehlen.
Fig. 1 zeigt ein schematisches Blockdiagramm eines Mul­ timedia-Mehrprozessorsystems 100 mit einem Primärrechner oder Hostprozessor 102 und einem Multimedia-Signalpozessor 200. Ein typischer Hostprozessor 102 ist ein x86-Prozessor, wie beispielsweise ein Intel Corporation PentiumTM- oder Pen­ tium ProTM-Prozessor. Der Hostprozessor 102 führt Programme basierend auf Befehlen und Daten aus, die primär in einem Systemspeicher 104 und einem Cache-Speicher 105 gehalten werden. Der Hostprozessor 102 kommuniziert mit dem Multime­ dia-Signalprozessor 200 über einen PC-Chipsatz 107 und einen Systembus 106, z. B. einen PCI-Bus. Der Multimedia-Signalprozessor 200 ist mit verschiedenen Funktionsblöcken verbunden, wie beispielsweise einem Audio- und Kommunikations-Codec 108 zum Empfangen von Audio- und Fernsprechkommu­ nikationssignalen, einem Video-A/D-Wandler 110 zum Empfangen von Videoeingangssignalen, einem Video-D/A-Wandler 112 zum Übertragen von Videoausgangssignalen und einem Rahmenpuffer-SDRAM-Speicher 114. Bei einer Ausführungsform ist der Multi­ media-Signalprozessor ein Prozessor der MSP-Familie von Mul­ timedia-Signalprozessoren (Samsung MSP) von Samsung Semicon­ ductor, Inc.
Fig. 2 zeigt ein schematisches Blockdiagramm des Multi­ media-Signalprozessors 200 des Multimedia-Mehrprozessor­ systems 100 (Fig. 1). Der Multimedia-Signalprozessor 200 weist einen Digitalsignalprozessor (DSP)-kern 201 auf, der über einen schnellen Bus (FBUS) 210 mit mehreren FBUS-Peripherieeinrichtungen verbunden ist, wie beispielsweise einer 32-Bit-PCI-Busschnittstelle 222, einer 64-Bit-SDRAM-Speichersteuerungseinrichtung 226, einer 8-Kanal-DMA-Steuerungseinrichtung 220, einem ASIC-Logikblock 216 und ei­ ner Speicherdatenübertragungseinrichtung 224 zum Übertragen von Daten zwischen dem Hostprozessor 102 und dem Rahmenpuf­ fer-SDRAM-Speicher 114. Die PCI-Busschnittstelle 222 ist mit dem Systembus 106 verbunden und arbeitet beispielsweise mit 33 MHz. Der ASIC-Logikblock 216 weist eine Steuerlogik auf, um eine gewünschte kundenspezifische Funktionsvielfalt zu erhalten. Der ASIC-Logikblock 216 weist bei einer Ausfüh­ rungsform 10 kGatter auf, einschließlich Schnittstellen zu verschiedenen analogen Codecs und kundenspezifischen Ein-Ausgabegeräten. Die Speicherdatenverschiebungseinrichtung 224 überträgt DMA-Daten vom Hostprozessor 102 zum SDRAM-Speicher 114, der unabhängig vom Multimedia-Signalprozessor 200 ist. Der DSP-Kern 201 ist außerdem über einen Ein- Ausgabe-Bus mit mehreren Ein-Ausgabe-Busvorrichtungen, z. B. einem 8254-kompatiblen programmierbaren Intervallzeitgeber 228, einer 16450-kompatiblen seriellen UART-Leitung 230, ei­ ner 8259-kompatiblen programmierbaren Unterbrechungssteue­ rung 232 und einem Bitstromprozessor 234 zum Verarbeiten ei­ nes Videobitstroms, verbunden. Für nähere Informationen be­ züglich des Bitstromprozessors 234 wird verwiesen auf die mitanhängige und gleichzeitig eingereichte US-Patent­ anmeldung von C. Reader mit dem Titel "Methods and Apparatus for Processing Video Data".
Der DPS-Kern 201 ist die Rechenmaschine des Multimedia-Signalprozessors 200 und weist einen Prozessor 202, einen Coprozessor 204, ein Cache-Untersystem 208, den schnellen Bus (FBUS) 210 und den Ein-Ausgabebus 212 auf. Bei einer Ausführungsform ist der Prozessor 202 ein 32-Bit ARM7TM RISC- Steuerprozessor, der allgemeine Verarbeitungsfunktionen aus­ führt, wie beispielsweise Kontextschaltfreigabeanforderun­ gen, Echtzeit-Betriebssystemoperationen, Unterbrechungs- und Ausnahmeverarbeitungen, Management der Ein-Ausgabegeräte, Kommunikation mit dem Hostprozessor 102 und ähnliche. Bei einer Ausführungsform arbeitet der Prozessor 202 mit 40 MHz. Der Prozessor 202 ist über eine Coprozessorschnittstelle 206 mit dem Coprozessor 204 verbunden.
Der Prozessor 202 führt die Ausnahmeverarbeitung in Antwort auf Ausnahmebedingungen aus, die allgemein Bedingun­ gen sind, die während einer Befehlsverarbeitung auftreten und eine Modifikation des Ausführungssteuerungsablaufs ver­ ursachen. Für nähere Informationen bezüglich der Ausnahme­ verarbeitung wird verwiesen auf die mitanhängigen und gleichzeitig eingereichten US-Patentanmeldungen, Seriennr. 08/699,295 von Song et al. mit dem Titel "System And Method For Handling Software Interrupts With Argument Passing" und Seriennr. 08/699,294 von Song et al. mit dem Titel "System And Method For Handling Interrupt And Exception Events In An Asymmetric Multiprocessor Architecture".
Der Coprozessor 204 ist die Digitalsignalverarbeitungs­ maschine des Multimedia-Signalprozessors 200. Bei einer Aus­ führungsform ist der Coprozessor 204 ein Vektorprozessor der Samsung MSP-Familie. Als Vektorprozessor weist der Coprozes­ sor 204 eine Einzelbefehl-Mehrfachdatenarchitektur auf und weist einen in Pipelinestruktur geschalteten RISC-Rechner auf, der mehrere Datenelemente parallel verarbeitet, um Si­ gnalverarbeitungsfunktionen auszuführen, wie beispielsweise Diskrete Kosinustransformationen (DCT), FIR-Filterverarbei­ tungen, Faltungsverarbeitungen, Videobewegungsbestimmung und andere Verarbeitungsfunktionen. Der Coprozessor 204 unter­ stützt Vektorarithmetik, bei der mehrere Datenelemente durch Vektorverarbeitung durch mehrere Vektorverarbeitungseinhei­ ten gleichzeitig parallel verarbeitet werden. Der Coprozes­ sor 204 führt sowohl Skalaroperationen als auch kombinierte Vektor-Skalaroperationen aus. Die mehreren Datenelemente des Coprozessors 204 werden in einen 576-Bit-Vektor gepackt, der mit einer Geschwindigkeit von 32 8/9-Bit-Fixpunktarithmetik­ operationen, sechzehn 16-Bit-Fixpunktarithmetikoperationen oder 8 32-Bit-Fixpunkt- oder Gleitkommaarithmetikoperationen je Zyklus (z. B. 12,5 ns) berechnet wird. Die meisten 32-Bit- Skalaroperationen werden im Pipelinesystem mit einer Ge­ schwindigkeit von einem Befehl je Zyklus verarbeitet, wäh­ rend die meisten 576-Bit-Vektoroperationen im Pipelinesystem mit einer Geschwindigkeit von einem Befehl in zwei Zyklen verarbeitet werden. Lade- und Speicheroperationen sind Arithmetikoperationen überlappt, und werden unabhängig durch separate Lade- und Speicherschaltungen ausgeführt.
Wie in Fig. 3 dargestellt, weist der Coprozessor 204 vier Funktionsblöcke einschließlich einer Befehlsabrufein­ heit 302, einer Befehlsdecodier- und -ausgabeeinrichtung 304, einem Befehlsausführungsdatenweg 306 und einer Lade- und Speichereinheit 308 auf. Die Befehlsabrufeinheit 302 und die Befehlsdecodier- und -ausgabeeinrichtung 304 sind im Co­ prozessor 204 angeordnet, um zu ermöglichen, daß der Copro­ zessor 204 unabhängig vom Prozessor 202 arbeiten kann.
Die Befehlsabrufeinheit 302 ruft im voraus Befehle ab und verarbeitet Steuerablaufbefehle, wie beispielsweise Be­ fehle für eine Programmverzweigung bzw. einen Sprung in ein Unterprogramm. Die Befehlsabrufeinheit 302 weist eine Warte­ schlange für 16 Einträge von im voraus abgerufenen Befehlen für den aktuellen Verarbeitungsstrom und eine Warteschlange für 8 Einträge von im voraus abgerufenen Befehlen für den Verzweigungszielstrom auf. Die Befehlsabrufeinheit 302 emp­ fängt über einen 256 Bit breiten Bus bis zu acht Befehle vom Befehls-Cache-Speicher in einem Zyklus. Die Befehlsdecodier- und -ausgabeeinrichtung 304 decodiert und organisiert alle durch den Coprozessor 204 ausgeführten Befehle. Der Decodie­ rer verarbeitet einen Befehl in einem Zyklus in der Reihen­ folge des Empfangs von der Befehlsabrufeinheit 302, während die Ausgabeeinrichtung die meisten Befehle in Abhängigkeit sowohl von der Verarbeitungsressource als auch von der Ope­ randendatenverfügbarkeit außerhalb der Reihenfolge organi­ siert bzw. einteilt oder festlegt.
Gemäß Fig. 4 weist der Befehlsausführungsdatenweg 306 eine Registerdatei 402 mit vier Ports, acht 32x32 Parallel­ multiplizierer 404 und acht 36-Bit Arithmetik-Logik- Einheiten (ALU) 406 auf. Die Registerdatei 402 unterstützt zwei Leseoperationen und zwei Schreiboperationen je Zyklus. Die Parallelmultiplizierer 404 erzeugen bis zu acht 32-Bit- Multiplikationen in Ganzzahl- oder Gleitkommaformat oder sechzehn 16-Bit-Multiplikationen oder 32 8-Bit-Multiplikationen je Zyklus. Die Arithmetik-Logik-Einheiten 406 füh­ ren entweder acht 36-Bit-ALU-Operationen in Ganzzahl- oder Gleitkommaformat, sechzehn 16-Bit-ALU-Operationen oder 32 8-Bit-Operationen je Zyklus (z. B. 12,5 ns) aus.
Die Registerdatei 402 weist mehrere Spezialzweckregi­ ster oder Spezialregister und mehrere Rücksprungadressenre­ gister auf. Die Spezialregister weisen ein Vektorsteuerungs- und -zustandregister (VCSR), einen Vektorbefehlszähler (VPC), einen Vektorausnahmebefehlszähler (VEPC), ein Vek­ torunterbrechungsquellenregister (VISRC), ein Vektor- und Steuerprozessorsynchronisationsregister (VASYNC) und andere Register, z. B. verschiedene Zähl-, Masken-, Überlauf- und Fix- oder Haltepunktregister, auf. Der Zählerinhalt des Vek­ torbefehlszählers (VPC) stellt die Adresse des nächsten durch den Coprozessor 204 auszuführenden Befehls dar.
Das Vektorunterbrechungsquellenregister (VISRC) zeigt dem Prozessor 202 die Unterbrechungsquellen an. Geeignete Bits des VISRC-Registers werden durch Hardware gesetzt, nachdem Ausnahmezustände erfaßt wurden. Die Bits werden durch Software zurückgesetzt, bevor die Verarbeitung durch den Coprozessor 204 fortgesetzt bzw. wiederaufgenommen wird. Durch jedes gesetzte Bit im VISRC-Register wird veranlaßt, daß der Coprozessor 204 einen Ruhezustand (VP_IDLE) annimmt. Wenn das entsprechende Unterbrechungsfreigabebit in einem VIMSK-Register der Coprozessorschnittstelle 206 gesetzt ist, wird dem Prozessor 202 eine IRQ-Unterbrechung mitgeteilt.
Der Coprozessor 204 erfaßt Ausnahmezustände, die präzi­ se oder genaue Ausnahmen und ungenaue Ausnahmen einschlie­ ßen. Präzise oder genaue Ausnahmen werden durch den Copro­ zessor 204 vor dem zu einem Fehler führenden Befehl erfaßt und gemeldet. Genaue Ausnahmen sind beispielsweise eine Be­ fehlsadressenhalte- oder -fixpunktausnahme, eine Datenadres­ senhalte- oder -fixpunktausnahme, eine Ausnahme für einen ungültigen Befehl, eine Einzelschrittausnahme, eine Rück­ sprungadressenstapelüberlaufausnahme, eine Rücksprungadres­ senstapelunterlaufausnahme, eine VCINT-Ausnahme und eine VCJOIN-Ausnahme. Ungenaue Ausnahmen des Coprozessors 204 werden erfaßt und gemeldet, nachdem eine variable Anzahl von Befehlen ausgeführt wurde, die später in der Programmfolge auftreten als der zu einem Fehler führende Befehl. Ungenaue Ausnahmen sind beispielsweise eine Ausnahme für eine ungül­ tige Befehlsadresse, eine Ausnahme für eine ungültige Da­ tenadresse, eine Ausnahme für einen nicht ausgerichteten Da­ tenzugriff, eine Ganzzahlüberlaufausnahme, eine Gleitkom­ maüberlaufausnahme, eine Ausnahme für einen ungültigen Gleitkommaoperanden, eine Ausnahme für eine Gleitkommadivi­ sion durch Null und eine Ausnahme für eine Ganzzahldivision durch Null.
Das Vektorunterbrechungsbefehlsregister (VIINS) wird durch den VCINT- oder den VCJOIN-Befehl des Coprozessors ak­ tualisiert, wenn der Befehl ausgeführt wird, um den Prozes­ sor 202 zu unterbrechen.
Der Prozessor 202 leitet Operationen des Coprozessors 204 ein. Für ausführlichere Informationen bezüglich der Ein­ leitung von Operationen des Coprozessors wird auf die be­ reits genannten US-Patentanmeldungen Nr. 08/699,294 und Nr. 08/699,295 verwiesen.
Das Vektorunterbrechungsmaskenregister (VIMSK) steuert die Übertragung von Meldungen über im Coprozessor 204 auf­ tretende Ausnahmen an den Prozessor 202. Durch die Bits im VIMSK-Register, wenn diese zusammen mit einem entsprechenden Bit im Vektorunterbrechungsquellenregister (VISRC) gesetzt sind, wird die Ausnahme zum Unterbrechen des Prozessors 202 freigegeben. Das VISRC-Register weist mehrere Bits auf, die die Ursache oder Quelle mehrerer Ausnahmen und Unterbrechun­ gen anzeigen. Bits des VIMSK-Registers weisen eine Daten­ adressenfixpunktunterbrechungsfreigabe (DABE), eine Befehls­ adressenfixpunktunterbrechungsfreigabe (IABE) und eine Ein­ zelschrittunterbrechungsfreigabe (SSTPE) auf. Das VIMSK- Register steuert außerdem Gleitkommaüberlaufbits (FOVE), Un­ terbrechungsfreigabebits für ungültige Operanden (FINVE) und Unterbrechunsgfreigabebits für eine Gleitkommadivision durch Null (FDIVE) sowie Unterbrechungsfreigabebits für einen Ganzzahlüberlauf (IOVE) und für eine Ganzzahldivision durch Null (IDIVE). Das VIMSK-Register steuert außerdem eine VCINT-Unterbrechungsfreigabe (VIE), eine VCJOIN-Unterbre­ chungsfreigabe (VJE) und eine Kontextschaltfreigabe (CSE).
Der Coprozessor 204 steht durch Übertragen von Signalen an den Prozessor 202 in Dialog mit dem Prozessor 202. Insbe­ sondere überträgt der Coprozessor 204 Signale indirekt über benutzererweiterte Register, die anzeigen, daß der Coprozes­ sor 204 einen Synchronisierungsbefehl ausgeführt hat, an den Prozessor 202. Der Coprozessor 204 überträgt außerdem durch eine Unterbrechungsanforderung, die anzeigt, daß der Copro­ zessor 204 die Ausführung unterbrochen und den VP_IDLE- Zustand angenommen hat, direkt Signale an den Prozessor 202. Der Coprozessor 204 führt zwei Befehle aus, um eine Meldung zum Prozessor 202 zu übertragen. Ein VCJOIN-Befehl (VCJOINn) wirkt bedingt mit dem Prozessor 202 zusammen und veranlaßt den Coprozessor 204, seine Verarbeitung zu unterbrechen und in den VP_IDLE-Zustand einzutreten. Ein Befehlszähler (nicht dargestellt) im Coprozessor 204 legt die Adresse des dem VCJOIN-Befehl folgenden Befehls fest. Der VCJOIN-Befehl, der durch den Coprozessor 204 ausgeführt wird, wird in eine Steuerungsablaufklasse eingeteilt. Die Steuerungsablaufbe­ fehle umfassen verschiedene bedingte Befehle, z. B. Verzwei­ gungsbefehle, Dekrement- und Verzweigungsbefehle, Sprungbe­ fehle, Befehle für einen Rücksprung von einem Unterprogramm, Kontextschaltbefehle und Sperrbefehle.
Gemäß Fig. 2 weist das Cache-Untersystem 208 einen Daten-Cache-Speicher 236 (z. B. 5 kB), einen Befehls-Cache- Speicher 238 (z. B. 2 kB) und einen Cache-ROM-Speicher 240 (z. B. 16 kB) auf, und arbeitet typischerweise mit der glei­ chen Geschwindigkeit wie der Coprozessor 204 (80 MHz). Bei einer Ausführungsform weist das Cache-Untersystem 208 1 kByte Befehlsspeicher und 1 kByte Datenspeicher für den Prozessor 202, 1 kByte Befehlsspeicher und 4 kByte Datenspeicher für den Coprozessor 204 und einen gemeinsam genutzten integrierten Befehls- und Daten-Cache-ROM-Speicher mit einer Kapazität von 16 kByte für den Prozessor 202 und den Coprozessor 204 auf. Das Cache-Untersystem 208 ist über 32-Bit-Datenbusse mit dem Prozessor 202 und über 128-Bit-Datenbusse mit dem Coprozessor 204 verbunden. Der Cache-ROM-Speicher 240 weist µROM-Initialisierungssoftware, Selbsttestdiagnosesoftware, verschiedene Systemmanagementsoftware, Bibliothekroutinen und einen Cache-Speicher für ausgewähle Befehle und Kon­ stantdaten auf. Insbesondere weist der Cache-ROM-Speicher 240 eine Befehlsausnahmehandhabungs- oder -verarbeitungs­ einrichtung und Eingabe- und Ausgabegerätunterbrechungshand­ habungs- oder -verarbeitungseinrichtungen 0, 1, 2 und 3 für den Prozessor 202 auf. Der Cache-ROM-Speicher 240 weist au­ ßerdem eine Vektorprozessorunterbrechungsverarbeitungsein­ richtung und eine Vektorprozessorfixpunktausnahmeverarbei­ tungseinrichtung auf, die Verarbeitungen im Prozessor 204 ausführen.
Fig. 5 zeigt ein schematisches Blockdiagramm zum Dar­ stellen der Software- und Firmwarearchitektur 500 des Multi­ media-Signalprozessors 200 einschließlich MSP-Systemkom­ ponentensoftware 502, die im Multimedia-Signalprozessor 200 verarbeitet wird, und PC-Anwendungs- und Betriebssystem­ software 508, die im Hostprozessor 102 verarbeitet wird. Der Multimedia-Signalprozessor 200 wird durch Firmware gesteu­ ert, die eine vektorisierte DSP-Firmwarebibliothek 504, die im Coprozessor 204 verarbeitet wird, und einen Systemmanage­ mentfunktionsblock 506 aufweist, der im Prozessor 202 verar­ beitet wird. Die vektorisierte DSP-Firmwarebibliothek 506 und der Systemmanagementfunktionsblock 506 sind in der MSP-Systemkomponentensoftware 502 enthalten. Durch die Architek­ tur 500 wird vorteilhaft die Signalverarbeitungsfunktions­ vielfalt von den Hostanwendungssteuerungsoperationen ge­ trennt, um die Softwareentwicklung zu vereinfachen, das Softwareentwicklungs- oder -gestaltungsmanagement zu verbes­ sern und Anwendungsentwicklungs- und Wartungskosten zu redu­ zieren.
Die MSP-Systemkomponentensoftware 502 wird ausschließ­ lich im Coprozessor 202 verarbeitet und weist einen MSP-Echtzeitbetriebssystemkern 510, ein Multimedia-Bibliothek­ modul 512, den Systemmanagementfunktionsblock 506 und die vektorisierte DSP-Firmwarebibliothek 504 auf. Der MSP-Echtzeitkern 510, eine Untergruppe von Microsoft Corp., MMO- SA-Echtzeitkern, ist typischerweise verantwortlich für eine Verbindung zum Hostprozessor 102, Ressourcenmanagement, Ein- Ausgabegeräthandhabung und den größten Teil der Unterbre­ chungs- und Ausnahmeverarbeitung. Der MSP-Echtzeitkern 510 weist Software für eine Kombination mit WindowsTM- und Win­ dows NTTM-Software auf, die im Host-Prozessor 102 verarbeitet wird. Der MSP-Echtzeitkern 510 weist außerdem Software zum Auswählen und Fernladen ausgewählter Anwendungsfirmware vom Hostprozessor 102, Software zum Festlegen oder Organisieren von Tasks oder Aufgaben für eine Verarbeitung im Prozessor 202 und im Vektorprozessor 204 und Software zum Handhaben von Systemressourcen des Multimedia-Signalprozessors 200 einschließlich Speicher- und Ein-Ausgabegeräten auf. Der MSP-Echtzeitkern 510 weist Software zum Synchronisieren der Kommunikation zwischen Tasks oder Aufgaben des Multimedia-Signalprozessors 200 und Software zum Melden MSP-bezogener Unterbrechungs-, Ausnahme- und Zustands- oder Statusbedin­ gungen auf.
Die vektorisierte DSP-Firmwarebibliothek 504 führt im wesentlichen alle Digitalsignalverarbeitungsfunktionen aus. Die vektorisierte DSP-Firmwarebibliothek 504 steuert außer­ dem bestimmte Unterbrechungen, z. B. eine Coprozessorunter­ brechung, die vom Prozessor 202 an den Vektorprozessor 204 ausgegeben wird, oder eine Hardware-Stapelüberlaufausnahme, die im Vektorprozessor 204 erzeugt wird.
Das Multimedia-Bibliothekmodul 512 führt Kommunikationsverarbeitungsfunktionen einschließlich Datenkommunikati­ on, MPEG-Video- und Audiofunktionen, Sprachcodierung und -synthese, SoundBlasterTM-kompatible Audiofunktionen und ähn­ liche Funktionen aus. Der MSP-Echtzeitkern 510 ist ein robu­ stes, preemptives Echtzeit-Multitasking-Betriebssystem mit Erweiterungen, durch die die im Multimedia-Signalprozessor 200 verarbeiteten Multimediaanwendungen erleichtert werden.
Die PC-Anwendungs- und Betriebssystemsoftware 508, die im Hostprozessor 102 ausgeführt wird, steuert den Multime­ dia-Signalprozessor 200 durch Lesen und Schreiben von MSP-Steuerungs- und -Statusregistern über den Systembus 106 und Schreiben in gemeinsame Datenstrukturen, die resident sind für den Systemspeicher 104 und resident für den Multimedia-Signalprozessor 200.
Die MSP-Programmausführung beginnt mit dem Prozessor 202, der einen ersten Verarbeitungsstrom ausführt. Der Pro­ zessor 202 kann einen zweiten unabhängigen Verarbei­ tungsstrom im Vektorprozessor 204 einleiten. Die Operationen des Prozessors 202 und des Vektorprozessors 204 sind durch bestimmte Coprozessorbefehle synchronisiert, die im Prozes­ sor 202 ausgeführt werden und STARTVP-, INTVP- und TESTVP- Befehle einschließen, und bestimmte Befehle, die im Vektor­ prozessor 204 ausgeführt werden und VJOIN- und VINT-Befehle einschließen. Die Datenübertragung zwischen dem Prozessor 202 und dem Vektorprozessor 204 wird unter Verwendung von im Prozessor 202 ausgeführten Datenübertragungsbefehlen ausge­ führt.
Der Coprozessor 204 steht durch Übertragen von Signalen zum Prozessor 202 in Dialog mit dem Prozessor 202. Im ein­ zelnen überträgt der Coprozessor 204 Signale über benutzer­ erweiterte Register, die anzeigen, daß der Coprozessor 204 einen Synchronisierungsbefehl ausgeführt hat, indirekt an den Prozessor 202. Der Coprozessor 204 überträgt außerdem durch eine Unterbrechungsanforderung, die anzeigt, daß der Coprozessor 204 seine Verarbeitung unterbrochen hat und in den VP_IDLE-Zustand eingetreten ist, Signale direkt an den Prozessor 202. Der Coprozessor 204 führt zwei Befehle aus, um Meldungen an den Prozessor 202 zu übertragen, einen VCJOIN-Befehl und einen VCINT-Befehl, der (VCINTn) den Pro­ zessor 202 bedingt unterbricht, um zu veranlassen, daß der Coprozessor 204 seine Verarbeitung unterbricht und in den VP_IDLE-Zustand eintritt. Der VCINT- und der VCJOIN-Befehl sind Befehle, die durch den Coprozessor 204 ausgeführt wer­ den und in eine Steuerungsablaufklasse eingeteilt sind. Die Steuerungsablaufbefehle weisen verschiedene bedingte Befeh­ le, z. B. Verzweigungs-, Dekrement- und Verzweigungsbefehle, sprungbefehle, Befehle für einen Rücksprung von einem Unter­ programm, Kontextschaltbefehle und Sperrbefehle, auf.
Das Multimedia-Mehrprozessorsystem 100 ist in den mitanhängigen und gleichzeitig eingereichten US-Patent­ anmeldungen von L. Nguyen mit dem Ti­ tel "Microprocessor Operation in a Multimedia Signal Processor" von L. Nguyen mit dem Titel "Single-Instruction-Multiple-Data Processing in a Multimedia Signal Processor" von L. Nguyen mit dem Titel "Single-Instruction-Multiple-Data Processing Using Multiple Banks of Vector Registers" und von M. Mohamed et al. mit dem Titel "Single-Instruction- Multiple-Data Processing With Combined Scalar/Vector Opera­ tions" ausführlicher beschrieben.
Der Multimedia-Signalprozessor 200 kann Multitasking-Operationen ausführen, die eine aufeinanderfolgende Ausfüh­ rung von Programmen einschließen. Die für einen Kontext­ schaltvorgang zwischen Programmen erforderliche Zeitdauer kann reduziert werden, indem die gespeicherte Prozessorzu­ standinformationsmenge, die erforderlich ist, um das kon­ textbezogen ausgeschaltete Programm erfolgreich wiederherzu­ stellen bzw. fortzusetzen, bezüglich dem herkömmlichen Ver­ fahren, bei dem alle Prozessorzustandinformationen gesichert werden, vermindert wird. Durch Vermindern der gesicherten oder gespeicherten Prozessorzustandinformationsmenge während eines Kontextschaltvorgangs können die Ressourcen effizien­ ter genutzt werden, wie nachstehend beschrieben.
Fig. 6 zeigt eine Ausführungsform eines effizienten Kontextschalt- und Programmwiederherstellungsprozeßablaufs 600 (Kontextsicherungs/-wiederherstellungsprozeßablauf 600), der in der Darstellung durch das Multimedia-Mehrprozessor­ system 100 verwendet wird und bei dem insbesondere ein aus den Multimedia-Signalprozessoren der Samsung MSP-Familie ausgewählter Multimedia-Signalprozessor 200 verwendet wird. Der Kontextsicherungs-/-wiederherstellungsprozeßablauf 600 beginnt mit einem Programmausführungsblock 602. Im Pro­ grammausführungsblock 602 führt der Coprozessor 204 (Fig. 2) ein Programm aus, wie beispielsweise ein Anwendungsprogramm. Das Anwendungsprogramm weist Markierungen auf, die durch den Programmierer im gesamten Anwendungsprogramm eingefügt sind, so daß die Markierungen etwa in gleichmäßigen Abständen er­ reicht werden. Bei dieser Ausführungsform ist die Markierung ein als VCCS bezeichneter bedingter Kontextschaltbefehl des Coprozessors 204. An einer beliebigen Position während der Ausführung des Anwendungsprogramms weist der Coprozessor 204 dieser Position des aktuell ausgeführten Programms zugeord­ nete Prozessorzustandinformationen auf. An einigen Positio­ nen im Anwendungsprogramm sind weniger Prozessorzustandin­ formationen erforderlich, um das Anwendungsprogramm nach ei­ nem Kontextschaltvorgang erfolgreich wiederaufzunehmen als an anderen Positionen im Anwendungsprogramm. Der Programmie­ rer, der diese Positionen für "reduzierte Prozessorzustand­ informationen" im Anwendungsprogramm kennt, bei denen vor­ zugsweise eine minimale Menge von Prozessorzustandinforma­ tionen während eines Kontextschaltvorgangs gesichert werden muß, ordnet den VCCS-Befehl an diesen Positionen für redu­ zierte Prozessorzustandinformationen im Anwendungsprogramm an. Der Abstand zwischen den eingefügten VCCS-Befehlen soll­ te vorzugsweise nicht so groß sein, daß der Kontextschalt­ vorgang merklich verzögert wird. Der Abstand hängt ab von der Entscheidung des Programmierers, dem Anwendungsprogramm und der Taktgeschwindigkeit des Coprozessors 204. Bei einem exemplarischen Abstand ergibt sich eine Verzögerung von höchstens 2 µs zwischen einem angeforderten Kontextschaltvor­ gang und der Reaktion auf die Anforderung.
Durch Reduzieren von Prozessorzustandinformationen, die erforderlich sind, um ein Programm nach einem Kontextschalt­ vorgang erfolgreich wiederherzustellen, können erhebliche Prozessorgewinne erzielt werden, insbesondere wenn die mög­ lichen Stellen der Prozessorzustandinformationen sehr groß sind. Beispielsweise weist jeder Prozessor der Samsung MSP-Familie eine exemplarische Architektur mit einer sehr großen Menge von den Prozessorzustandinformationen zugewiesenen Speicherbereichen auf. Der Samsung MSP-Prozessor weist über 7 kByte Prozessorzustandinformationen und 64 288-Bit-Vektorregister, über 80 32-Bit-Skalarregister und bis zu 4 kByte Notizblockspeicher auf. Mit der Reduzierung der Menge von zu übertragenden Prozessorzustandinformationen während eines Kontextschaltvorgangs und während der anschließenden Wiederherstellung eines Programms verbundene Leistungsstei­ gerungen können bei einer Architektur wie derjenigen eines Samsung MSP-Prozessors wesentlich sein.
Ein Beispiel einer Position für eine reduzierte Prozes­ sorzustandinformation in einem Anwendungsprogramm ist ein ADD-Befehl, bei dem die Summe von 50 Argumenten bestimmt wird. Wenn das Anwendungsprogramm kontextbezogen ausgeschal­ tet wird, bevor die Summe der Argumente bestimmt ist, muß die Prozessorzustandinformation, die erforderlich ist, um dieses Anwendungsprogramm wiederherzustellen, alle 50 Argu­ mente aufweisen. Wenn der ADD-Befehl abgeschlossen und die Summe bestimmt ist, muß jedoch nur die Summe als Teil der Prozessorzustandinformation enthalten sein. Dadurch wird die Prozessorzustandinformationsmenge, die zum Wiederherstellen des Programms nach einem Rücksprung zum Programm erforder­ lich ist, bezüglich der Informationsmenge, die erforderlich ist, wenn alle verfügbaren Prozessorzustandinformationen ge­ sichert werden, reduziert. Der VCCS-Befehl, der den beding­ ten Kontextschaltbefehl des Coprozessors 204 darstellt, ist daher im Anwendungsprogramm an einer Position nach der Be­ stimmung der Summe aller 50 Argumente angeordnet. Dies ist nur ein Beispiel einer geeigneten Position im Anwendungspro­ gramm zum Reduzieren der erforderlichen Prozessorzustandin­ formationen, um das Anwendungsprogramm erfolgreich kontext­ bezogen auszuschalten und wiederherzustellen. Für Fachleute ist ersichtlich, daß viele andere Positionen im Anwendungs­ programm ausgewählt werden können, um die zu speichernden Prozessorzustandinformationen in Erwartung eines Kontextaus­ schaltvorgangs und einer anschließenden Wiederherstellung eines Programms zu reduzieren.
Gemäß Fig. 7 weist ein zur Veranschaulichung dienendes Segment 700 eines Anwendungsprogramms eingefügte VCCS-Befehle 702 auf. Die VCCS-Befehle 702 sind allgemein gleich­ mäßig an vorgegebenen Stellen eingefügt, bei denen eine mi­ nimale Menge zu speichernder Prozessorzustandsinformationen erforderlich ist, um einen erfolgreichen und nahtlosen Kon­ textschaltvorgang im Anwendungsprogramm zu erhalten.
Gemäß Fig. 6 wird während der Ausführung des Anwen­ dungsprogramms im Programmausführungsblock 602 ein 32-Bit-VCCS-Befehl an der geeigneten Position erreicht, wie im Kontextschaltbefehlblock 604 dargestellt. Nachdem der Kontext­ schaltanforderungsblock 606 erreicht ist, wird der Coprozes­ sor 204 durch den VCCS-Befehl veranlaßt, festzustellen, ob der Prozessor 202 angefordert hat, das aktuell ausgeführte Anwendungsprogramm kontextbezogen auszuschalten und durch ein anderes Programm zu ersetzen, oder nicht. Wenn kein Kon­ textschaltvorgang angefordert wurde, kehrt der Kontextsicherungs/-wiederherstellungsprozeßablauf 600 zum Programmaus­ führungsblock 602 zurück und setzt die Verarbeitung des An­ wendungsprogramms, beginnend an der dem erreichten VCCS-Befehl folgenden Position, fort.
Um einen Kontextschaltvorgang anzufordern, schreibt der Prozessor 202 auf ein in der Coprozessorschnittstelle 206 angeordnetes, als VIMSK-Register bezeichnetes 32-Bit-Vektorprozessorunterbrechungsmaskenregister 208. Insbesonde­ re setzt der Prozessor 202 ein Bit Null (0), das das CSE- oder Kontextschaltfreigabebit darstellt, des VIMSK-Registers 214 durch Schreiben einer Eins (1) in das CSE-Bit. Für aus­ führlichere Informationen über das VIMSK-Register wird auf die bereits genannten US-Patentanmeldungen Nr. 08/699,294 und Nr. 08/699,295 verwiesen.
Tabelle 1 zeigt das im Samsung MSP-Vektorprozessor ver­ wendete Format des VCCS-Befehls.
Tabelle 1
Das VCCS-Format weist Bits 111101 in den höchstwertigen Bitpositionen (most significant bit) und ein Offset-Feld in den niedrigstwertigen 23 Bitpositionen (least significant bit) auf. Durch das Offset-Feld ist die Position eines Kon­ textsicherungsunterprogramms gekennzeichnet, zu dem die Ver­ arbeitung des Coprozessor 204 sich nach einem erfolgreichen Abschluß des VCCS-Befehls verzweigt, wenn ein Kontextschalt­ vorgang angefordert wurde. Die Bits (25-23) werden durch den VCCS-Befehl nicht verwendet. Die Assemblersyntax des VCCS-Befehls lautet VCCS#Offset.
Im Kontextschaltanforderungsblock 606 wird der Copro­ zessor 204 durch den erreichten VCCS-Befehl veranlaßt, das VIMSK-Register 214 zu lesen, um zu bestimmen, ob der Prozes­ sor 202 angefordert hat, das aktuell im Programmausführungs­ block 602 ausgeführte Anwendungsprogramm kontextbezogen aus­ zuschalten und durch ein anderes Programm zu ersetzen, oder nicht. Wenn durch den VCCS-Befehl keine Ausnahme veranlaßt wird, wenn das CSE-Bit des VIMSK-Registers 214 auf Eins ge­ setzt ist, wird die Rücksprungadresse des Anwendungspro­ gramms im Programmausführungsblock 602 in einen weichen oder frei belegbaren Rücksprungadressenstack oder -stapel einge­ speichert, der dem kontextbezogen ausgeschalteten Programm eindeutig zugeordnet ist. Die aktuelle Adresse des Anwen­ dungsprogramms ist im Vektorprogrammzähler (VPC) angeordnet. Die Rücksprungadresse ist gleich VPC plus vier.
Der Coprozessor 204 überprüft einen vom Prozessor 202 angeforderten Kontextschaltvorgang nicht, bis ein VCCS-Befehl erreicht wird. Dadurch kann der Programmierer die Po­ sition steuern oder einstellen, bei der ein ausgeführtes Programm kontextbezogen ausgeschaltet werden kann. Außerdem werden, obwohl zwischen einem angeforderten Kontextschalt­ vorgang und einer entsprechenden Reaktion eine Zeitverzöge­ rung auftreten kann, keine Programmverluste verursacht, weil das Anwendungsprogramm während jeder Kontextschaltanforde­ rungs-, -erfassungs- und -ansprechverzögerung fortgesetzt wird.
Durch den folgenden Pseudocode wird die Operation des VCCS-Befehls dargestellt.
Im Kontextschaltanforderungsblock 606 veranlaßt der VCCS-Befehl daher den Coprozessor 204, zu bestimmen, ob das CSE-Bit des VIMSK-Registers 214 gesetzt ist oder nicht. Wenn das Bit nicht gesetzt ist, hat der Prozessor 202 keinen Kon­ textschaltvorgang angefordert, und der Programmzählerinhalt (VPC) des Coprozessors 204 wird auf die Adresse des nächsten Befehls erhöht, und es es erfolgt ein Rücksprung zum Pro­ grammausführungsblock 602. Wenn der Prozessor 202 einen Kon­ textschaltvorgang angefordert hat, untersucht der Coprozes­ sor 204 Bit vier des aus fünf Bit bestehenden Vektorstapel­ zeigers (VSP), der dem Ausführungsprogramm zugeordnet ist, und stellt fest, ob die Ausführung des VCCS-Befehls zu einem Stapelüberlauf führt. Wenn ein Stapelüberlauf auftreten wird, wird das Rücksprungadressenstapelüberlaufausnahmebit des Vektorunterbrechungsquellenregisters (VISRC) auf Eins gesetzt, und der Zustand (VP_STATE) des Coprozessors 204 wird auf einen Ruhezustand (VP_IDLE) eingestellt. Wenn kein Stapelüberlauf auftritt, schreitet der Kontextsicherungs/-wiederherstellungsprozeßablauf 600 zum Block 608 zum Spei­ chern der Rücksprungadresse fort, und der Coprozessor 204 speichert die Rücksprungadresse des im Programmausführungs­ block 602 ausgeführten Anwendungsprogramms und erhöht den Zeiger für den weichen oder frei belegbaren Stapel. Der VPC-Zähler wird dann mit der durch das VCCS-Offsetfeld angezeig­ ten zeichenerweiterten Adresse geladen.
Die Verarbeitung des Coprozessors 204 verzweigt sich daraufhin unter Verwendung der Kontextsicherungsunterpro­ grammadresse im VPC-Zähler zum Kontextsicherungsunterpro­ gramm, wie im Ausführungszweig zum Kontextsicherungsunter­ programmblock 610 dargestellt. Das Kontextsicherungsunter­ programm 612 wird durch den Programmierer des im Pro­ grammausführungsblock 602 ausgeführten Anwendungsprogramms geschrieben. Dabei berücksichtigt der Programmierer die mi­ nimale Prozessorzustandinformationsmenge, die für eine er­ folgreiche Wiederherstellung des kontextbezogen ausgeschal­ teten Anwendungsprogramms erforderlich ist. Wie im Unter­ block 614 zum Speichern minimaler Prozessorzustandinforma­ tionen dargestellt ist, speichert das Kontextsicherungsun­ terprogramm 612 nur die beispielsweise in Registern und No­ tizblockspeichern vorhandenen Informationen, die zum Wieder­ herstellen des kontextbezogen ausgeschalteten Programms er­ forderlich sind.
Nachdem der Coprozessor 204 zum Unterblock 616 zum Speichern der Position des Kontextwiederherstellungsunter­ programms fortgeschritten ist, beendet er das Kontextsiche­ rungsunterprogramm 612 durch Ausführen eines als VCJOIN be­ zeichneten 32-Bit-Taskbefehls für eine bedingte Verbindung mit dem Prozessor 202. Tabelle 2 zeigt das im Samsung MSP-Vektorprozessor verwendete Format des VCJOIN-Befehls.
Tabelle 2
Das VCJOIN-Format weist Bits 100110 in den höchstwerti­ gen Bitpositionen auf und ein Bedingungsfeld in Bitpositio­ nen (25-23) und ein Offsetfeld in den niedrigstwertigen 23 Bitpositionen. Das Bedingungsfeld ist festgelegt, um den Prozessor 202 bedingungslos zu unterbrechen. Das Offsetfeld kennzeichnet eine Adresse einer Position eines Kontextwieder­ herstellungsunterprogramms, das der Coprozessor 204 aus­ führt, wenn das kontextbezogen ausgeschaltete Programm wie­ derhergestellt wird. Die Assemblersyntax des VCJOIN-Befehls lautet VCJOIN.cond#Offset.
Die Ausführung des VCJOIN-Befehls wird durch folgenden Pseudocode dargestellt:
Im Unterblock 616 zum Speichern der Position des Kon­ textwiederherstellungsunterprogramms wird durch die Ausfüh­ rung des VCJOIN.un#Offset-Befehls durch den Coprozessor 204 veranlaßt, daß die Position des Kontextwiederherstellungsun­ terprogramms 268 gespeichert und der Prozessor 202 unterbro­ chen wird, so daß der Prozessor 202 den Coprozessor 204 für die Ausführung eines nachfolgenden Programms einstellen kann. Im Unterblock 616 zum Speichern der Position des Kon­ textwiederherstellungsunterprogramms wird der VCJOIN-Zustand oder Befehl auf den Zustand "bedingungslos" eingestellt, und außerdem wird ein VCJOIN-Unterbrechungsfreigabe (VJE)-bit des VIMSK-Registers 214 auf den Zustand 1 gesetzt. Das VJE-Bit ist das Bit 5 des VIMSK-Registers 214. Im Unterblock 616 zum Speichern der Position des Kontextwiederherstellungsun­ terprogramms ist das 23-Bit-Offsetfeld des VCJOIN-Befehls so eingestellt, daß eine Position des Kontextwiederherstel­ lungsunterprogramms 628 angezeigt wird.
Wenn der VCJOIN-Befehl im Prozessorunterbrechungsunter­ block 618 durch den Coprozessor 204 ausgeführt wird, prüft der Coprozessor 204 das Bedingungsfeld des VCJOIN-Befehls und verifiziert den bedingungslosen Zustand des Bedingungs­ feldes. Anschließend setzt der Coprozessor 204 das Bit (VJP) für die bevorstehende Ausnahme des 32-Bit-Vektorunterbre­ chungsquellenregisters (VISRC) auf Eins. Das VJP-Bit ist das 5. Bit des VISRC-Registers. Ein Vektorunterbrechungsbefehls­ register 1 (VIINS) wird durch den VCJOIN-Befehl aktuali­ siert, weil der VCJOIN-Befehl ausgeführt wird, um den Pro­ zessor 202 zu unterbrechen. Der aktuelle VPC-Wert ist in ei­ nem Vektorausnahmeprogrammzähler (VEPC) gespeichert. Der VEPC-Zählerinhalt legt die Adresse des Befehls fest, der die aktuelle Ausnahme am wahrscheinlichsten verursacht hat. Wenn die Ausführung des VCJOIN-Befehls fortgesetzt wird, wird das VJE-Bit des VIMSK-Registers 214 ausgewertet und festge­ stellt, daß es auf den Wert Eins gesetzt ist. Durch das ge­ setzte VJE-Bit wird eine IRQ-Unterbrechung des Prozessors 202 veranlaßt und veranlaßt, daß der Coprozessor 204 in den Ruhezustand (IDLE) eintritt.
Der Kontextsicherungs/-wiederherstellungsprozeßablauf 600 verläßt den Kontextsicherungsunterprogrammblock 612 und schreitet zum Prozessorunterbrechungsverarbeitungsblock 620 fort. Der Prozessor 202 verarbeitet die Unterbrechung wie in den bereits genannten US-Patentanmeldungen Nr. 08/699,294 und Nr. 08/699,295 beschrieben.
Nach der Verarbeitung der durch den VCJOIN-Befehl ein­ geleiteten Unterbrechung bestimmt der Prozessor 202, wie im Entscheidungsblock 622 für einen Kontextausschaltvorgang des nächsten Programms dargestellt, ob das auszuführende nächste Programm ein "neues" Programm ist oder nicht, d. h. ein Pro­ gramm, das bisher nicht kontextbezogen ausgeschaltet wurde, oder ein zuvor bereits kontextbezogen ausgeschaltetes Pro­ gramm. Das Betriebssystem des Multimedia-Signalprozessors 200 (Fig. 5) verfolgt Programme und stellt fest, ob sie vor­ her kontextbezogen ausgeschaltet wurden oder nicht. Wenn das durch den Coprozessor 204 auszuführende nächste Programm ein neues" Programm ist, schreitet der Kontextsicherungs/-wiederherstellungsprozeßablauf 600 zum Block 624 für einen Verbindungsaufbau zum Coprozessors und zum Starten eines neuen Programms fort. Der Prozessor 202 stellt eine Verbin­ dung zum Coprozessor 204 her, um das "neue" Programm zu starten, und der Kontextsicherung/-wiederherstellungs­ prozeßablauf 600 kehrt zum Programmausführungsblock 602 zu­ rück, wo das "neue" Programm ausgeführt wird.
Nach der Rückkehr zum Entscheidungsblock 622, in dem festgestellt wird, ob das nächste Programm kontextbezogen ausgeschaltet war, tritt der Coprozessor 204 in eine Ver­ zweigung zum Kontextwiederherstellungsunterprogrammblock 626 ein, wenn das nächste Programm vorher kontextbezogen ausge­ schaltet war. Der Prozessor 202 lädt dann den VPC-Befehl des Coprozessors 204 mit der Adresse des Kontextwiederherstel­ lungsunterprogramms 628, die während der VCJOIN-Befehlsausführung im Unterblock 616 zum Speichern der Stelle des Kontextwiederherstellungsunterprogramms gespeichert war, wie vorstehend beschrieben, und der Kontextsicherungs/-wiederherstellungsprozeßablauf 600 verzweigt sich zum Kon­ textwiederherstellungsunterprogramm 628.
Das Kontextwiederherstellungsunterprogramm 628 wird durch den Programmierer des nun kontextbezogen eingeschalte­ ten Anwendungsprogramms geschrieben. Daher kennt der Pro­ grammierer die Position der minimalen Prozessorzustandinfor­ mationsmenge, die vorher durch das Kontextsicherungsunter­ programm 612 in Erwartung einer erfolgreichen Wiederherstel­ lung des kontextbezogen ausgeschalteten und nun kontextbezo­ gen eingeschalteten Anwendungsprogramms gespeichert wurde.
Der Kontextsicherungs/-wiederherstellungsprozeßablauf 600 schreitet fort, um den Unterblock 630 für eine minimale Pro­ zessorzustandinformationsmenge zu laden, in dem der Copro­ zessor 204 seine Verarbeitung fortsetzt, um die zuvor ge­ speicherte minimale Prozessorzustandinformationsmenge in die geeigneten Speicherstellen des Coprozessors 204 zu laden, z. B. in die vorstehend beschriebenen Register bzw. in den Notizblockspeicher.
Nachdem die für die erfolgreiche Wiederherstellung des kontextbezogen eingeschalteten Anwendungsprogramms erforder­ lichen Prozessorzustandinformationen geladen sind, bereitet das Kontextwiederherstellungsunterprogramm 628 den Coprozes­ sor 204 darauf vor, das kontextbezogen eingeschaltete Anwen­ dungsprogramm an der präzisen Programmstelle fortzusetzen, die zuvor im Unterblock 616 zum Speichern der Stelle des Kontextwiederherstellungsunterprogramms gespeichert wurde. Um diese Anwendungsprogrammstelle wiederzugewinnen, führt der Coprozessor 294 einen bedingten Befehl für einen Rück­ sprung vom Unterprogramm (VCRSR-Befehl) aus, durch den das Kontextwiederherstellungsunterprogramm 628 beendet wird. Ta­ belle 3 zeigt das im Samsung MSP-Vektorprozessor verwendete Format des VCJOIN-Befehls.
Tabelle 3
Das VCRSC-Format weist Bits 100101 in den höchstwerti­ gen Bitpositionen und ein Bedingungsfeld in den Bitpositio­ nen 25-23 auf. Die niedrigstwertigen 23 Bits werden nicht verwendet und können auf einen beliebigen Wert gesetzt sein. Das Bedingungsfeld ist eingestellt, um den Prozessor 202 be­ dingungslos zu unterbrechen. Die Assemblersyntax des VCRSR-Befehls lautet VCRSR.cond.
Die Ausführung des VCRSR-Befehls wird durch folgenden Pseudocode dargestellt:
Gemäß dem Block 632 zum Laden der Rücksprungadresse des kontextbezogen eingeschalteten Programms wird durch die Aus­ führung des VCRSR.un-Befehls veranlaßt, daß der Coprozessor 204 die Ausführung dieses kontextbezogen eingeschalteten Programms an der Stelle wiederaufnimmt, die zuvor im Block 608 zum Sicherstellen einer Rücksprungadresse gespeichert wurde. Während der Ausführung des VCRSR.un-Befehls bestimmt der Coprozessor 204, daß eine unbedingte Verzweigung ange­ fordert wurde, indem das Bedingungsfeld des VCRSR-Befehls untersucht wird, das einen Code für eine unbedingte Verzwei­ gung aufweist. Der durch die Ausführung des VCRSR-Befehls untersuchte VSP-Zeiger ist ein dem gerade kontextbezogen eingeschalteten Programm eindeutig zugeordneter Zeiger für einen weichen oder frei belegbaren Stapel. Der Coprozessor 204 untersucht daraufhin den VSP-Zeiger, um festzustellen, ob der VSP-Zeiger zu seiner niedrigstwertigen Position zeigt. Wenn der VSP-Zeiger zu seiner niedrigstwertigen Posi­ tion zeigt, wird das RASU-Bit des VISRC-Registers auf Eins (1) gesetzt. Das RASU-Bit ist das Bit für einen Rücksprunga­ dressenstapelunterlaufausnahmezustand, durch das, wenn es gesetzt ist, dem Prozessor 202 angezeigt wird, daß eine Aus­ nahmebedingung besteht, wobei der Coprozessor 204 in den Ru­ hezustand eintritt. Wenn der VSP-Zeiger nicht zu seiner niedrigstwertigen Position zeigt, vermindert der Coprozessor 204 den VSP-Wert um eine Stelle und lädt den VPC-Zähler mit der an dieser ausgewählten VSP-Stelle gespeicherten Adresse.
Diese VSP-Stelle enthält die zuvor im Block 608 zum Sicher­ stellen von Rücksprungadressen gespeicherte Rücksprungadres­ se. Durch den Schritt VPC<1 : 0<=b′00 wird gewährleistet, daß die zwei niedrigstwertigen Bits des VPC-Zählwerts mit den Werten Null geladen werden.
Nachdem die Rücksprungadresse in den VPC-Zähler geladen wurde, kehrt der Kontextschaltprozeßablauf 600 zum Pro­ grammausführungsblock 602 zurück, wo die Ausführung des nun kontextbezogen eingeschalteten Programms beginnt. Der Kon­ textschaltprozeßablauf 600 wiederholt sich, bis die Pro­ grammausführung beendet ist.
Wie vorstehend beschrieben wurde, wird die Effizienz eines Kontextschaltvorgangs in einer Multitasking-Mehr­ prozessorumgebung durch den Kontextschaltprozeßablauf 600 verbessert. Indem lediglich die minimale Prozessorzustandin­ formationsmenge gespeichert wird, während ein Programm kon­ textbezogen ausgeschaltet ist, kann die wertvolle Verarbei­ tungszeit des Coprozessors 204 für andere Operationen ver­ wendet werden. Außerdem kann, indem nur eine minimale Pro­ zessorzustandinformationsmenge wiedergewonnen wird, ein Pro­ gramm effizient kontextbezogen eingeschaltet werden. Diese Zeiteinsparungen akkumulieren sich während ausgeführter Kon­ textschaltvorgänge.
Die vorstehend beschriebenen Ausführungsformen und Mo­ difikationen dienen lediglich zur Darstellung der Erfindung, wodurch die Erfindung nicht eingeschränkt werden soll. Bei­ spielsweise sind die spezifischen Hard- und Softwarekompo­ nenten nur exemplarisch, wobei die hierin beschriebenen Kon­ textschalt- und -wiederherstellungsmerkmale durch viele an­ dere Systemarchitekturen und/oder Softwareausführungsformen bereitgestellt werden können. Außerdem ist für Fachleute er­ kennbar, daß die Kontextschalt- und -wiederherstellungs­ merkmale in Multititasking-Umgebungen mit mehr als zwei Tasks verwendet werden können. Daher können innerhalb des durch die beigefügte Patentansprüche definierten Umfangs der vor­ liegenden Erfindung verschiedene andere Ausführungsformen bereitgestellt und zahlreiche Modifikationen und Verbesse­ rungen vorgenommen werden.

Claims (23)

1. Verfahren mit den Schritten:
Ausführen eines ersten Programms in einem ersten Prozessor;
Empfangen einer Kontextschaltanforderung von einem zweiten Prozessor; und
Reagieren auf die Kontextschaltanforderung an ei­ ner geeigneten Position im ersten Programm, wobei die geeignete Position einer Markierung im Programm zuge­ ordnet ist, die eine nächstgelegene Position im ersten Programm anzeigt, bei der eine minimale zu speichernde Prozessorzustandinformationsmenge zum erfolgreichen Wiederherstellen des Programms erforderlich ist.
2. Verfahren nach Anspruch 1, ferner mit den Schritten:
Einfügen mehrerer Markierungen im ersten Programm an Positionen, bei denen eine minimale zu speichernde Prozessorzustandinformationsmenge zum erfolgreichen Wiederherstellen des ersten Programms erforderlich ist.
3. Verfahren nach Anspruch 1 oder 2, ferner mit den Schritten:
Sicherstellen der einem Zustand des ersten Pro­ gramms an der geeigneten Position entsprechenden Pro­ zessorzustandinformationen;
Beenden des ersten Programms;
Ausführen eines zweiten Programms im ersten Pro­ zessor;
Beenden des zweiten Programms; und
Wiederherstellen des ersten Programms unter Ver­ wendung der minimalen Menge gespeicherter Prozessorzu­ standinformationen.
4. Verfahren nach Anspruch 1, 2 oder 3, wobei der Reakti­ onsschritt die Schritte aufweist:
Speichern der einem Zustand des ersten Programms an der geeigneten Position entsprechenden Prozessorzu­ standinformationen; und
Speichern der Position einer Kontextwiederherher­ stellungsroutine zum nahtlosen Wiederherstellen des er­ sten Programms.
5. Verfahren nach einem der Ansprüche 1 bis 4, wobei der Ausführungsschritt den Schritt aufweist:
Ausführen des ersten Programms in einem Vektorpro­ zessor eines Multimedia-Signalprozessors in einem Mul­ timedia-Mehrprozessorsystem.
6. Verfahren nach einem der Ansprüche 1 bis 5, ferner mit dem Schritt:
Empfangen von Daten von mehreren Multimedia-Vorrichtungen; und
wobei der Ausführungsschritt den Schritt aufweist:
Verarbeiten der empfangenen Daten.
7. Verfahren nach einem der Ansprüche 1 bis 6, wobei der Empfangsschritt den Schritt aufweist:
Lesen eines Registers mit einem durch den zweiten Prozessor gesetzten Kontextschaltfreigabefeld.
8. Verfahren nach einem der Ansprüche 1 bis 7, ferner mit dem Schritt:
Fortsetzen der Ausführung des ersten Programms nach dem Empfang der Kontextschaltanforderung;
wobei der Reaktionsschritt die Unterschritte auf­ weist:
Erreichen der Markierung im ersten Programm an der geeigneten Position;
Unterbrechen des ersten Prozessors;
Lesen der Kontextschaltanforderung durch den er­ sten Prozessor als Antwort auf das Erreichen der Mar­ kierung im ersten Programm;
Speichern einer Rücksprungadresse des ersten Pro­ gramms;
Speichern der zum erfolgreichen Wiederherstellen des ersten Programms erforderlichen minimalen Prozes­ sorzustandinformationsmenge; und
Benachrichtigen des zweiten Prozessors von der Verfügbarkeit des ersten Prozessors, um ein zweites Programm auszuführen.
9. Verfahren nach einem der Ansprüche 1 bis 8, wobei die Markierung ein bedingter Kontextschaltbefehl ist.
10. Rechensystem mit:
einem ersten Prozessor in einer Multitasking-Umgebung zum Ausführen von Programmen mit jeweils meh­ reren eingefügten Kontextschaltmarkierungen;
einem mit dem ersten Prozessor verbundenen ersten Speicher, der der Speicherung von Prozessorzustandin­ formationen zugeordnet ist;
einem mit dem ersten Prozessor verbundenen zweiten Speicher;
einem auf dem ersten Prozessor arbeitenden Detek­ tor zum Erfassen einer Anforderung zum kontextbezogenen Ausschalten des Programms, nachdem der Prozessor eine der Markierungen in einem Ausführungsprogramm erreicht; und
einem auf dem ersten Prozessor arbeitenden Kon­ textsicherungsmodul, das auf eine erfaßte Kontext­ schaltanforderung reagiert, indem es im ersten Speicher angeordnete Prozessorzustandinformationen in den zwei­ ten Speicher speichert.
11. Rechensystem nach Anspruch 10, wobei das Kontextsiche­ rungsmodul ferner auf die erfaßte Kontextschaltanforde­ rung reagiert, indem es eine Position eines Kontextwie­ derherstellungsmoduls speichert.
12. Rechensystem nach Anspruch 10 oder 11, ferner mit:
einem mit dem ersten Prozessor wechselseitig ge­ koppelten zweiten Prozessor, wobei
der erste und der zweite Prozessor asymmetrische Kenngrößen aufweisen und
der zweite Prozessor eine Einrichtung aufweist, um den ersten Prozessor auf zufordern, ein ausgeführtes Pro­ gramm kontextbezogen auszuschalten.
13. Rechensystem nach Anspruch 12, ferner mit:
einer zwischen dem ersten und dem zweiten Prozes­ sor gekoppelten Schnittstelleneinheit, wobei die Schnittstelleneinheit ein Register aufweist, auf das durch den ersten und den zweiten Prozessor wechselweise zugegriffen werden kann;
wobei der zweite Prozessor auf das Register schreiben kann, um eine Kontextschaltanforderung anzu­ zeigen; und
der erste Prozessor das Register lesen kann, um eine Kontextschaltanforderung vom zweiten Prozessor zu erfassen.
14. Rechensystem nach Anspruch 12 oder 13, wobei:
der zweite Prozessor ein Steuerprozessor ist; und
der erste Prozessor ein Vektorprozessor ist.
15. Rechensystem nach Anspruch 10, ferner mit:
einem auf dem ersten Prozessor arbeitenden Kon­ textwiederherstellungsmodul zum Wiederherstellen eines kontextbezogen ausgeschalteten Programms, indem die im zweiten Speicher gespeicherten, dem kontextbezogen aus­ geschalteten Programm zugeordneten Prozessorzustand­ informationen wieder in den ersten Speicher übertragen werden.
16. Rechensystem nach einem der Ansprüche 10 bis 15, wobei die Markierungen im gesamten Programm im wesentlichen gleichmäßig an Positionen eingefügt sind, bei denen ei­ ne minimale Prozessorzustandinformationsmenge erforder­ lich ist, um das Programm erfolgreich wiederherzustel­ len.
17. Rechensystem nach einem der Ansprüche 10 bis 16, wobei die Markierungen bedingte Kontextschaltbefehle sind.
18. Effizientes Kontextsicherungsverfahren in einer Multitasking-Mehrprozessorrechensystemumgebung, mit den Schritten:
Einfügen bedingter Kontextschaltbefehle in ein Programm;
Ausführen des Programms;
Empfangen einer Kontextschaltanforderung;
Erfassen eines der bedingten Kontextschaltbefehle;
Bestimmen, ob die Kontextschaltanforderung von ei­ nem Prozessor vorhanden ist, nach dem Schritt zum Er­ fassen eines der bedingten Kontextschaltbefehle; und
Beenden des Programms mit den Unterschritten:
Sichern einer Rücksprungadresse des Programms, wenn festgestellt wird, daß eine Kontextschaltanforde­ rung vorhanden ist, und andernfalls Fortsetzen der Pro­ grammausführung; und
Ausführen eines Kontextsicherungsmoduls mit den Unterschritten:
Speichern von Prozessorzustandinformationen, die einem Zustand des Programms entsprechen, bevor der be­ dingte Kontextschaltbefehl erfaßt wurde;
Speichern einer Position des Kontextwiederherstel­ lungsmoduls; und
Unterbrechen des Prozessors.
19. Verfahren nach Anspruch 18, ferner mit den Schritten:
Einschalten des Programms mit den Unterschritten:
Ausführen eines Kontextwiederherstellungsmoduls mit den Unterschritten:
Laden der zuvor im Schritt zum Ausführen des Kon­ textsicherungsmoduls gespeicherten Prozessorzustandin­ formationen;
Laden der zuvor im Programmausschaltschritt ge­ speicherten Programmrücksprungadresse; und
Ausführen des Programms.
20. Verfahren nach Anspruch 18 oder 19, ferner mit den Schritten:
Ausführen des Programms in einem Coprozessor; und
Übertragen der Kontextschaltanforderung von einem Steuerprozessor zu einer Schnittstelleneinheit.
21. Verfahren nach Anspruch 18, 19 oder 20, wobei der Schritt zum Einfügen bedingter Kontextschaltbefehle in ein Programm die Schritte aufweist:
Einfügen der bedingten Kontextschaltbefehle etwa gleichmäßig im gesamten Programm, so daß die bedingten Kontextschaltbefehle an Positionen im Programm einge­ fügt sind, an denen eine minimale zu speichernde Pro­ zessorzustandinformationsmenge in Erwartung eines Kon­ textschaltvorgangs im Programm erforderlich ist.
22. Verfahren nach Anspruch 21, wobei der Einfügungsschritt ferner den Schritt aufweist:
Einfügen der bedingten Kontextschaltbefehle in im wesentlichen gleichmäßigen Abständen, so daß wesentli­ che Verzögerungen zwischen den Schritten zum Empfangen der Kontextschaltanforderung und zum Erfassen eines der bedingten Kontextschaltbefehle vermieden werden.
23. Verfahren nach einem der Ansprüche 18 bis 22, wobei der Programmausführungsschritt den Schritt zum Ausführen des Programms in einem ersten Prozessor aufweist und das Verfahren ferner den Schritt aufweist:
im wesentlichen gleichmäßiges Unterbrechen des er­ sten Prozessors nach Erfassen der bedingten Kontext­ schaltbefehle.
DE19735871A 1996-08-19 1997-08-18 Verfahren zum effizienten Sicherstellen und Wiederherstellen von Kontext in einer Multitasking-Rechensystemumgebung Ceased DE19735871A1 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US08/699,280 US6061711A (en) 1996-08-19 1996-08-19 Efficient context saving and restoring in a multi-tasking computing system environment

Publications (1)

Publication Number Publication Date
DE19735871A1 true DE19735871A1 (de) 1998-03-19

Family

ID=24808638

Family Applications (1)

Application Number Title Priority Date Filing Date
DE19735871A Ceased DE19735871A1 (de) 1996-08-19 1997-08-18 Verfahren zum effizienten Sicherstellen und Wiederherstellen von Kontext in einer Multitasking-Rechensystemumgebung

Country Status (7)

Country Link
US (1) US6061711A (de)
JP (1) JPH10143481A (de)
KR (1) KR100241063B1 (de)
CN (1) CN1103078C (de)
DE (1) DE19735871A1 (de)
FR (1) FR2752966B1 (de)
TW (1) TW403881B (de)

Families Citing this family (114)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100256442B1 (ko) * 1996-08-05 2000-05-15 윤종용 아날로그버스를 갖는 멀티미디어장치
EP0918280B1 (de) * 1997-11-19 2004-03-24 IMEC vzw System und Verfahren zur Kontextumschaltung über vorbestimmte Unterbrechungspunkte
JP3027845B2 (ja) * 1997-11-21 2000-04-04 オムロン株式会社 プログラム制御装置および方法
US6243736B1 (en) * 1998-12-17 2001-06-05 Agere Systems Guardian Corp. Context controller having status-based background functional task resource allocation capability and processor employing the same
US6434689B2 (en) * 1998-11-09 2002-08-13 Infineon Technologies North America Corp. Data processing unit with interface for sharing registers by a processor and a coprocessor
US7941647B2 (en) 1999-01-28 2011-05-10 Ati Technologies Ulc Computer for executing two instruction sets and adds a macroinstruction end marker for performing iterations after loop termination
US8065504B2 (en) * 1999-01-28 2011-11-22 Ati International Srl Using on-chip and off-chip look-up tables indexed by instruction address to control instruction execution in a processor
US8127121B2 (en) 1999-01-28 2012-02-28 Ati Technologies Ulc Apparatus for executing programs for a first computer architechture on a computer of a second architechture
US8074055B1 (en) 1999-01-28 2011-12-06 Ati Technologies Ulc Altering data storage conventions of a processor when execution flows from first architecture code to second architecture code
KR100335441B1 (ko) * 1999-05-01 2002-05-04 윤종용 다중 비디오 디코딩 장치 및 그 방법
US6519265B1 (en) * 1999-05-28 2003-02-11 Sony Corporation System and method for context switching in an electronic network
ATE534074T1 (de) * 1999-09-01 2011-12-15 Intel Corp Kontextwechselbefehl für multithread-prozessor
EP1236092A4 (de) * 1999-09-01 2006-07-26 Intel Corp Verzweigungsbefehl für einen prozessor
WO2001016702A1 (en) 1999-09-01 2001-03-08 Intel Corporation Register set used in multithreaded parallel processor architecture
US7318090B1 (en) * 1999-10-20 2008-01-08 Sony Corporation Method for utilizing concurrent context switching to support isochronous processes
US7171547B1 (en) * 1999-12-28 2007-01-30 Intel Corporation Method and apparatus to save processor architectural state for later process resumption
US6934832B1 (en) * 2000-01-18 2005-08-23 Ati International Srl Exception mechanism for a computer
US6823517B1 (en) * 2000-01-27 2004-11-23 Andrew E. Kalman Multi-tasking-real-time operating system for microprocessors with limited memory that constrains context switching to occur only at task level
US20020019843A1 (en) * 2000-04-26 2002-02-14 Killian Robert T. Multiprocessor object control
US6560449B1 (en) * 2000-06-12 2003-05-06 Broadcom Corporation Image-rejection I/Q demodulators
US6778594B1 (en) 2000-06-12 2004-08-17 Broadcom Corporation Receiver architecture employing low intermediate frequency and complex filtering
EP1168158B1 (de) * 2000-06-12 2007-10-10 Broadcom Corporation Architektur und Verfahren zur Kontextumschaltung
US6993764B2 (en) * 2000-06-30 2006-01-31 The Regents Of The University Of California Buffered coscheduling for parallel programming and enhanced fault tolerance
US7681018B2 (en) 2000-08-31 2010-03-16 Intel Corporation Method and apparatus for providing large register address space while maximizing cycletime performance for a multi-threaded register file set
JP2002297556A (ja) * 2001-03-29 2002-10-11 Fujitsu Ltd マルチプロセッサシステム,マルチプロセッサ制御方法,マルチプロセッサ制御プログラムおよび同プログラムを記録したコンピュータ読取可能な記録媒体
US7512952B1 (en) * 2001-04-06 2009-03-31 Palmsource, Inc. Task switching with state preservation for programs running on an electronic device
US6832338B2 (en) * 2001-04-12 2004-12-14 International Business Machines Corporation Apparatus, method and computer program product for stopping processors without using non-maskable interrupts
CN100356349C (zh) * 2001-04-27 2007-12-19 邵通 一种实现计算设备状态转换的装置及方法
CN100356350C (zh) * 2001-04-27 2007-12-19 邵通 实现计算设备状态转换装置安全操作的装置和方法
US7467178B2 (en) * 2001-06-01 2008-12-16 Microchip Technology Incorporated Dual mode arithmetic saturation processing
US6976158B2 (en) * 2001-06-01 2005-12-13 Microchip Technology Incorporated Repeat instruction with interrupt
US6934728B2 (en) * 2001-06-01 2005-08-23 Microchip Technology Incorporated Euclidean distance instructions
US6952711B2 (en) * 2001-06-01 2005-10-04 Microchip Technology Incorporated Maximally negative signed fractional number multiplication
US6937084B2 (en) * 2001-06-01 2005-08-30 Microchip Technology Incorporated Processor with dual-deadtime pulse width modulation generator
US20030023836A1 (en) * 2001-06-01 2003-01-30 Michael Catherwood Shadow register array control instructions
US20030005269A1 (en) * 2001-06-01 2003-01-02 Conner Joshua M. Multi-precision barrel shifting
US6975679B2 (en) * 2001-06-01 2005-12-13 Microchip Technology Incorporated Configuration fuses for setting PWM options
US7003543B2 (en) * 2001-06-01 2006-02-21 Microchip Technology Incorporated Sticky z bit
US20020184566A1 (en) * 2001-06-01 2002-12-05 Michael Catherwood Register pointer trap
US7020788B2 (en) * 2001-06-01 2006-03-28 Microchip Technology Incorporated Reduced power option
US7007172B2 (en) * 2001-06-01 2006-02-28 Microchip Technology Incorporated Modified Harvard architecture processor having data memory space mapped to program memory space with erroneous execution protection
US20030005268A1 (en) * 2001-06-01 2003-01-02 Catherwood Michael I. Find first bit value instruction
US20030028696A1 (en) * 2001-06-01 2003-02-06 Michael Catherwood Low overhead interrupt
US8284844B2 (en) 2002-04-01 2012-10-09 Broadcom Corporation Video decoding system supporting multiple standards
US7437724B2 (en) * 2002-04-03 2008-10-14 Intel Corporation Registers for data transfers
US7137121B2 (en) * 2002-04-19 2006-11-14 Equator Technologies, Inc. Data-processing circuit and method for switching between application programs without an operating system
US7673304B2 (en) * 2003-02-18 2010-03-02 Microsoft Corporation Multithreaded kernel for graphics processing unit
US7107362B2 (en) * 2003-05-19 2006-09-12 Avago Technologies General Ip (Singapore) Pte. Ltd. Integrated circuit with configuration based on parameter measurement
US20050149771A1 (en) * 2003-11-07 2005-07-07 Seiko Epson Corporation Processor control circuit, information processing apparatus, and central processing unit
US20060212874A1 (en) * 2003-12-12 2006-09-21 Johnson Erik J Inserting instructions
US7493617B2 (en) * 2004-03-05 2009-02-17 International Business Machines Corporation Method of maintaining task sequence within a task domain across error recovery
US7779238B2 (en) * 2004-06-30 2010-08-17 Oracle America, Inc. Method and apparatus for precisely identifying effective addresses associated with hardware events
US8640114B2 (en) 2006-09-07 2014-01-28 Oracle America, Inc. Method and apparatus for specification and application of a user-specified filter in a data space profiler
US7424601B2 (en) * 2004-07-07 2008-09-09 Yongyong Xu Methods and systems for running multiple operating systems in a single mobile device
EP1622009A1 (de) * 2004-07-27 2006-02-01 Texas Instruments Incorporated JSM-Architektur und Systeme
US7664970B2 (en) * 2005-12-30 2010-02-16 Intel Corporation Method and apparatus for a zero voltage processor sleep state
US20060143485A1 (en) * 2004-12-28 2006-06-29 Alon Naveh Techniques to manage power for a mobile device
US7934082B2 (en) * 2004-08-27 2011-04-26 Panasonic Corporation Information processing apparatus and exception control circuit
JP4244028B2 (ja) * 2004-09-22 2009-03-25 株式会社ソニー・コンピュータエンタテインメント グラフィックプロセッサ、制御用プロセッサおよび情報処理装置
US7774784B2 (en) * 2005-03-17 2010-08-10 Microsoft Corporation Determining an actual amount of time a processor consumes in executing a portion of code
CN101176061A (zh) 2005-04-22 2008-05-07 Nxp股份有限公司 数字信号处理器上多任务的实现
US20060256854A1 (en) * 2005-05-16 2006-11-16 Hong Jiang Parallel execution of media encoding using multi-threaded single instruction multiple data processing
CN100361105C (zh) * 2005-05-17 2008-01-09 北京中星微电子有限公司 中断处理中恢复访问环境设置的方法及装置
CN100361106C (zh) * 2005-05-17 2008-01-09 北京中星微电子有限公司 连续访问环境下的中断恢复方法及装置
US7765550B2 (en) * 2005-05-26 2010-07-27 Hewlett-Packard Development Company, L.P. System for controlling context switch of deferred requests using counter and flag setting of thread accessing shared resource or entering code region
JP4756914B2 (ja) * 2005-05-30 2011-08-24 キヤノン株式会社 遠隔協調作業支援システム及びその制御方法
US7308565B2 (en) * 2005-06-15 2007-12-11 Seiko Epson Corporation Saving/restoring task state data from/to device controller host interface upon command from host processor to handle task interruptions
US7823158B2 (en) * 2005-08-18 2010-10-26 International Business Machines Corporation Adaptive scheduling and management of work processing in a target context in resource contention
US7502957B2 (en) * 2005-09-09 2009-03-10 International Business Machines Corporation Method and system to execute recovery in non-homogeneous multi processor environments
US8171268B2 (en) * 2005-09-19 2012-05-01 Intel Corporation Technique for context state management to reduce save and restore operations between a memory and a processor using in-use vectors
US20070101325A1 (en) * 2005-10-19 2007-05-03 Juraj Bystricky System and method for utilizing a remote memory to perform an interface save/restore procedure
US7937710B1 (en) * 2005-11-22 2011-05-03 Nvidia Corporation Context switch signaling method and system
US7590774B2 (en) * 2005-12-01 2009-09-15 Kabushiki Kaisha Toshiba Method and system for efficient context swapping
US8271994B2 (en) * 2006-02-11 2012-09-18 International Business Machines Corporation Reduced data transfer during processor context switching
US7634642B2 (en) * 2006-07-06 2009-12-15 International Business Machines Corporation Mechanism to save and restore cache and translation trace for fast context switch
US8424013B1 (en) * 2006-09-29 2013-04-16 Emc Corporation Methods and systems for handling interrupts across software instances and context switching between instances having interrupt service routine registered to handle the interrupt
US8813055B2 (en) * 2006-11-08 2014-08-19 Oracle America, Inc. Method and apparatus for associating user-specified data with events in a data space profiler
JP2008234074A (ja) * 2007-03-16 2008-10-02 Fujitsu Ltd キャッシュ装置
US8762951B1 (en) 2007-03-21 2014-06-24 Oracle America, Inc. Apparatus and method for profiling system events in a fine grain multi-threaded multi-core processor
US8561060B2 (en) * 2007-04-26 2013-10-15 Advanced Micro Devices, Inc. Processor and method configured to determine an exit mechanism using an intercept configuration for a virtual machine
US8296768B2 (en) * 2007-06-30 2012-10-23 Intel Corporation Method and apparatus to enable runtime processor migration with operating system assistance
US8762692B2 (en) 2007-09-27 2014-06-24 Intel Corporation Single instruction for specifying and saving a subset of registers, specifying a pointer to a work-monitoring function to be executed after waking, and entering a low-power mode
US8515052B2 (en) * 2007-12-17 2013-08-20 Wai Wu Parallel signal processing system and method
US8099541B2 (en) * 2008-01-22 2012-01-17 Globalfoundries Inc. Minivisor entry point in virtual machine monitor address space
US8359602B2 (en) * 2008-02-21 2013-01-22 Ca, Inc. Method and system for task switching with inline execution
TW201009713A (en) * 2008-08-21 2010-03-01 Ind Tech Res Inst Multitasking processor and task switch method thereof
JP2010181989A (ja) * 2009-02-04 2010-08-19 Renesas Electronics Corp データ処理装置
JP5433676B2 (ja) * 2009-02-24 2014-03-05 パナソニック株式会社 プロセッサ装置、マルチスレッドプロセッサ装置
US8856775B2 (en) * 2010-09-22 2014-10-07 International Business Machines Corporation Unstacking software components for migration to virtualized environments
TWI497419B (zh) * 2011-10-20 2015-08-21 Via Tech Inc 電腦裝置及其中斷任務分配方法
US20130135327A1 (en) * 2011-11-29 2013-05-30 Advanced Micro Devices, Inc. Saving and Restoring Non-Shader State Using a Command Processor
WO2013106210A1 (en) 2012-01-10 2013-07-18 Intel Corporation Electronic apparatus having parallel memory banks
US8819345B2 (en) 2012-02-17 2014-08-26 Nokia Corporation Method, apparatus, and computer program product for inter-core communication in multi-core processors
US8909892B2 (en) 2012-06-15 2014-12-09 Nokia Corporation Method, apparatus, and computer program product for fast context switching of application specific processors
US10102003B2 (en) 2012-11-01 2018-10-16 International Business Machines Corporation Intelligent context management
US10078518B2 (en) 2012-11-01 2018-09-18 International Business Machines Corporation Intelligent context management
US10140129B2 (en) 2012-12-28 2018-11-27 Intel Corporation Processing core having shared front end unit
US9417873B2 (en) 2012-12-28 2016-08-16 Intel Corporation Apparatus and method for a hybrid latency-throughput processor
US9361116B2 (en) * 2012-12-28 2016-06-07 Intel Corporation Apparatus and method for low-latency invocation of accelerators
US10346195B2 (en) 2012-12-29 2019-07-09 Intel Corporation Apparatus and method for invocation of a multi threaded accelerator
US10203958B2 (en) * 2013-07-15 2019-02-12 Texas Instruments Incorporated Streaming engine with stream metadata saving for context switching
US9898330B2 (en) * 2013-11-11 2018-02-20 Intel Corporation Compacted context state management
US9417876B2 (en) * 2014-03-27 2016-08-16 International Business Machines Corporation Thread context restoration in a multithreading computer system
US10282227B2 (en) * 2014-11-18 2019-05-07 Intel Corporation Efficient preemption for graphics processors
US10963280B2 (en) 2016-02-03 2021-03-30 Advanced Micro Devices, Inc. Hypervisor post-write notification of control and debug register updates
US11803377B2 (en) * 2017-09-08 2023-10-31 Oracle International Corporation Efficient direct convolution using SIMD instructions
US11281495B2 (en) 2017-10-26 2022-03-22 Advanced Micro Devices, Inc. Trusted memory zone
GB2580135B (en) * 2018-12-21 2021-01-20 Graphcore Ltd Handling exceptions in a multi-tile processing arrangement
US11556374B2 (en) * 2019-02-15 2023-01-17 International Business Machines Corporation Compiler-optimized context switching with compiler-inserted data table for in-use register identification at a preferred preemption point
CN112015599B (zh) 2019-05-31 2022-05-13 华为技术有限公司 错误恢复的方法和装置
CN112202864B (zh) * 2020-09-24 2022-12-09 建信金融科技有限责任公司 一种上下文切换系统、方法、装置、设备及介质
US11809861B2 (en) 2021-06-09 2023-11-07 Red Hat, Inc. Development environment organizer with enhanced state switching and sharing
CN113253664B (zh) * 2021-07-02 2021-10-15 峰岹科技(深圳)股份有限公司 协处理器、协处理器控制方法、终端及存储介质
US11775301B2 (en) 2021-09-24 2023-10-03 Apple Inc. Coprocessor register renaming using registers associated with an inactive context to store results from an active context

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3789365A (en) * 1971-06-03 1974-01-29 Bunker Ramo Processor interrupt system
US4954948A (en) * 1986-12-29 1990-09-04 Motorola, Inc. Microprocessor operating system for sequentially executing subtasks
US5008812A (en) * 1988-03-18 1991-04-16 Digital Equipment Corporation Context switching method and apparatus for use in a vector processing system
EP0365322A3 (de) * 1988-10-19 1991-11-27 Hewlett-Packard Company Verfahren und Vorrichtung zur Ausnahmenbehandlung in Fliessbandprozessoren mit unterschiedlicher Befehlspipelinetiefe
US5390329A (en) * 1990-06-11 1995-02-14 Cray Research, Inc. Responding to service requests using minimal system-side context in a multiprocessor environment
US5428779A (en) * 1992-11-09 1995-06-27 Seiko Epson Corporation System and method for supporting context switching within a multiprocessor system having functional blocks that generate state programs with coded register load instructions
US5490272A (en) * 1994-01-28 1996-02-06 International Business Machines Corporation Method and apparatus for creating multithreaded time slices in a multitasking operating system
US5613114A (en) * 1994-04-15 1997-03-18 Apple Computer, Inc System and method for custom context switching
US5594905A (en) * 1995-04-12 1997-01-14 Microsoft Corporation Exception handler and method for handling interrupts
US5627745A (en) * 1995-05-03 1997-05-06 Allen-Bradley Company, Inc. Parallel processing in a multitasking industrial controller
US5727211A (en) * 1995-11-09 1998-03-10 Chromatic Research, Inc. System and method for fast context switching between tasks
US5799188A (en) * 1995-12-15 1998-08-25 International Business Machines Corporation System and method for managing variable weight thread contexts in a multithreaded computer system
US5799143A (en) * 1996-08-26 1998-08-25 Motorola, Inc. Multiple context software analysis

Also Published As

Publication number Publication date
KR19980018064A (ko) 1998-06-05
CN1175731A (zh) 1998-03-11
KR100241063B1 (ko) 2000-08-01
FR2752966A1 (fr) 1998-03-06
JPH10143481A (ja) 1998-05-29
FR2752966B1 (fr) 2005-09-30
TW403881B (en) 2000-09-01
US6061711A (en) 2000-05-09
CN1103078C (zh) 2003-03-12

Similar Documents

Publication Publication Date Title
DE19735871A1 (de) Verfahren zum effizienten Sicherstellen und Wiederherstellen von Kontext in einer Multitasking-Rechensystemumgebung
DE19735870A1 (de) System und Verfahren zum Verarbeiten von Unterbrechungs- und Ausnahmeereignissen in einer asymmetrischen Mehrprozessorarchitektur
DE69814268T2 (de) Verfahren zur Anbindung eines Prozessors an einen Koprozessor
DE19735869A1 (de) System und Verfahren zum Verarbeiten von Softwareunterbrechungen durch Parameterübergabe
DE2855106C2 (de) Einrichtung zur Durchführung von bedingten Verzweigungen
DE4206062C2 (de) Pipelineverarbeitung von Instruktionen
DE69633166T2 (de) Integrierter schaltkreis mit mehreren funktionen und gemeinsamer verwendung mehrerer interner signalbusse zur verteilung der steuerung des buszugriffes und der arbitration
DE69932481T2 (de) Kellerzeigerverwaltung
DE69534113T2 (de) Kompression der Befehlswörter eines Rechners
DE19735350B4 (de) Vektorprozessor zum Ausführen paralleler Operationen und Verfahren hierfür
DE19983632B4 (de) Emulation eines Befehlssatzes bei einem Befehlssatzarchitekturübergang
US6094528A (en) Method and apparatus for system building with a transactional interpreter
US5416912A (en) System for handling exceptions occurring during parallel execution of microinstructions
DE60102017T2 (de) Räumungsfilter für adressenübersetzungspuffer
DE602005005726T2 (de) Verbreitung eines Thread-IDs in einem Multithreadpipelineprozessor
US5414864A (en) Method for selectively saving/restoring first registers and bypassing second registers in register units based on individual lock/unlock status thereof
DE102010053088A1 (de) Sammeln und Streuen mehrerer Datenelemente
DE112011100715T5 (de) Hardware-hilfs-thread
DE102012216592A1 (de) Präfix-Computeranweisung zur Erweiterung der Anweisungsfunktionalität
DE2424931A1 (de) Datenverarbeitungsanlage, insbesondere mikroprogramm-datenverarbeitungseinheit mit parallelen befehlsstroemen fuer mehrere ebenen von subbefehlsvorraeten
DE69727177T2 (de) Emulation von asynchronen Signalen mit Verzweigungsmechanismus
DE60009496T2 (de) Mikroprozessor mit reduziertem kontextumschaltungsaufwand und verfahren
DE69630416T2 (de) Mikroprozessor zur Ausführung von Befehlen mit variablen Längen
DE19738542A1 (de) Datenverarbeitungseinrichtung
DE4238099C2 (de) Mikroprozessor mit mehreren Betriebsmoden

Legal Events

Date Code Title Description
8110 Request for examination paragraph 44
8131 Rejection