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-RechensystemumgebungInfo
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 45
- 230000015654 memory Effects 0.000 claims abstract description 37
- 230000004044 response Effects 0.000 claims abstract description 7
- 230000008569 process Effects 0.000 claims description 21
- 238000011084 recovery Methods 0.000 claims description 21
- 238000012546 transfer Methods 0.000 claims description 5
- 238000006243 chemical reaction Methods 0.000 claims description 3
- 230000001934 delay Effects 0.000 claims description 2
- 239000003550 marker Substances 0.000 claims description 2
- 238000004519 manufacturing process Methods 0.000 claims 1
- 238000004321 preservation Methods 0.000 abstract 1
- 238000012545 processing Methods 0.000 description 45
- 230000006870 function Effects 0.000 description 12
- 238000010586 diagram Methods 0.000 description 8
- 238000004891 communication Methods 0.000 description 6
- 238000003860 storage Methods 0.000 description 4
- 229940036310 program Drugs 0.000 description 3
- 230000002411 adverse Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000036541 health Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 230000000873 masking effect Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000011112 process operation Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000003786 synthesis reaction Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 238000000844 transformation Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
- G06F9/30087—Synchronisation or serialisation instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
- G06F9/3009—Thread control instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3861—Recovery, e.g. branch miss-prediction, exception handling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3877—Concurrent instruction execution, e.g. pipeline, look ahead using a slave processor, e.g. coprocessor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
- G06F9/3887—Concurrent 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]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/461—Saving 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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
im wesentlichen gleichmäßiges Unterbrechen des er sten Prozessors nach Erfassen der bedingten Kontext schaltbefehle.
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)
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)
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 |
-
1996
- 1996-08-19 US US08/699,280 patent/US6061711A/en not_active Expired - Lifetime
-
1997
- 1997-04-04 KR KR1019970012608A patent/KR100241063B1/ko not_active IP Right Cessation
- 1997-08-18 FR FR9710435A patent/FR2752966B1/fr not_active Expired - Fee Related
- 1997-08-18 DE DE19735871A patent/DE19735871A1/de not_active Ceased
- 1997-08-19 JP JP9222148A patent/JPH10143481A/ja active Pending
- 1997-08-19 CN CN97116043A patent/CN1103078C/zh not_active Expired - Fee Related
- 1997-08-19 TW TW086111966A patent/TW403881B/zh not_active IP Right Cessation
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 |