DE19735870A1 - System und Verfahren zum Verarbeiten von Unterbrechungs- und Ausnahmeereignissen in einer asymmetrischen Mehrprozessorarchitektur - Google Patents
System und Verfahren zum Verarbeiten von Unterbrechungs- und Ausnahmeereignissen in einer asymmetrischen MehrprozessorarchitekturInfo
- Publication number
- DE19735870A1 DE19735870A1 DE19735870A DE19735870A DE19735870A1 DE 19735870 A1 DE19735870 A1 DE 19735870A1 DE 19735870 A DE19735870 A DE 19735870A DE 19735870 A DE19735870 A DE 19735870A DE 19735870 A1 DE19735870 A1 DE 19735870A1
- Authority
- DE
- Germany
- Prior art keywords
- processor
- exception
- vector
- control
- interrupt
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/544—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
- G06F7/5443—Sum of products
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
- G06F15/17—Interprocessor communication using an input/output type connection, e.g. channel, I/O port
Description
Die vorliegende Erfindung betrifft ein Mehrprozessorsy
stem mit asymmetrischen Prozessoren mit verschiedenen Steuer- und
Datenverarbeitungskenngrößen. Die Erfindung betrifft
insbesondere ein System und ein Verfahren zum Handhaben oder
Verarbeiten von Unterbrechungen und Ausnahmen in einem asym
metrischen Mehrprozessorsystem.
Mehrzweckprozessoren weisen typischerweise Schaltungen
und Strukturen zum Verarbeiten von Unterbrechungen und Aus
nahmen auf. Eine Unterbrechung ist ein Ereignis, durch das
ein Prozessor veranlaßt wird, die Ausführung einer aktuellen
Befehlsfolge abzubrechen und mit der Ausführung einer Unter
brechungsverarbeitungsbefehlsfolge zu beginnen, die durch
eine Unterbrechungshandhabungs- oder -verarbeitungseinrich
tung festgelegt ist und aktiviert wird. Wenn die Ausführung
der Unterbrechungsverarbeitungsbefehlsfolge (Interrupt-Ser
vice-Befehlsfolge) beendet ist, wird die Ausführung der ak
tuellen Befehlsfolge fortgesetzt. Unterbrechungen sind ex
terne Ereignisse in dem Sinn, daß die Ursache einer Unter
brechung nicht direkt mit der Ausführung von Befehlen der
aktuellen Befehlsfolge in Beziehung steht. Unterbrechungen
werden typischerweise durch Speichern des Zustands oder des
Kontexts des Prozessors, Ausführen eines Dienstprogramms
(Service-Routine) und anschließendes Wiederaufnehmen oder
Fortsetzen der unterbrochenen Ausführungsfolge verarbeitet
bzw. gehandhabt.
Eine Ausnahme ist ein Ereignis, das entweder durch die
Ausführung eines Befehls oder einen Versuch zum Ausführen
eines Befehls durch einen Prozessor verursacht wird, dessen
Ausführung mit dem aktuellen Zustand des Prozessors inkonsi
stent ist. Ereignisse, durch die eine Ausnahmebedingung ver
ursacht wird, sind beispielsweise ein Versuch, einen unzu
lässigen oder nicht definierten Befehl durch einen Prozessor
auszuführen, ein Versuch, einen Befehl auszuführen, wenn die
Befehlsadresse oder die Datenadresse nicht ausgerichtet
sind, ein Schutz- oder Zugriffsschutzfehler, in gesetzter
Halte- oder Fixpunkt, eine Division durch Null und eine
Überlaufbedingung während der Ausführung eines arithmeti
schen Befehls. Ein Prozessor reagiert auf die Ausnahmebedin
gung durch Ausführen einer Befehlsfolge einer Ausnahmeverar
beitungseinrichtung. Ausnahmen werden herkömmlich durch Aus
führen eines ausgewählten Befehlssatzes in Abhängigkeit von
der bestimmten Art der Bedingung verarbeitet, durch die die
Ausnahme verursacht wurde.
Die im Mehrprozessorarchitektursystem verwendeten Un
terbrechungs- und Ausnahmeverarbeitungsmechanismen sind all
gemein zur Verwendung in einem asymmetrischen Mehrprozessor
system mit Prozessoren, die verschiedene Steuer- und Daten
verarbeitungskenngrößen aufweisen, ineffizient, weil die der
Unterbrechungs- und Ausnahmeverarbeitung innewohnenden
Steuerungsoperationen durch Allzweck- oder NC-Prozessoren
schnell und leicht und durch Vektorprozessoren mit großem
Kontext wesentlich schwieriger ausgeführt werden. Für Opera
tionen von Mehrprozessorsystemen, die unter Verwendung von
Ausnahmen und Unterbrechungen verarbeitet werden, ist häufig
das Speichern der Zustände der Prozessoren einschließlich
der Speicherung von aktuell verarbeiteten Registerdaten er
forderlich. Ein Prozessor mit vielen großen Registern kann
die Prozessorzustandinformationen während Operationen, wie
beispielsweise einem Mehrprozessorkontextschaltvorgang,
nicht leicht speichern und zurückladen.
Daher ist eine Mehrprozessorarchitektur erforderlich,
durch die Ausnahme- und Unterbrechungsverarbeitungen für
asymmetrische Prozessoren mit großem Maschinenzustand oder
großem Kontext erleichtert wird.
Gemäß einer Ausführungsform der vorliegenden Erfindung
weist ein Mehrprozessor-Computersystem mehrere als asymme
trische Prozessoren bezeichnete Prozessoren mit wechselsei
tig verschiedenen Steuer- und Datenverarbeitungskenngrößen
auf. Die asymmetrischen Prozessoren werden durch ein einzi
ges Betriebssystem gesteuert, obwohl die einzelnen Prozesso
ren Befehlsvorräte oder -sätze aufweisen, die wechselseitig
von denen der anderen Prozessoren unabhängig sind. Das Mul
tiprozessor-Computersystem verwendet eine Multiprozessorar
chitekturdefinition von Unterbrechungs- und Ausnahmeverar
beitungen, bei denen ein als Daten- oder Vektorprozessor be
zeichneter Prozessor mit einem großen Maschinenzustand und
einer großen Datenbreite Ausnahmen erfaßt, bezüglich Ausnah
meunterbrechungs- und Ausnahmeverarbeitungsoperationen je
doch einem als Steuerprozessor bezeichneten anderen Prozes
sor mit einem kleinen Maschinenzustand und einer kleinen Da
tenbreite untergeordnet ist. Der kleine Maschinenzustand und
die kleine Datenbreite des Steuerprozessors sind gut geeig
net zum Ausführen von Betriebssystemprogrammen, wie bei
spielsweise Unterbrechungs- und Ausnahmeverarbeitungen, weil
bei Steuerprogrammen typischerweise die Überwachung und
Steuerung einzelner Flags und Zeiger vorgesehen ist. Durch
den großen Maschinenzustand und die große Datenbreite des
Daten- oder Vektorprozessors werden Steuertasks oder -aufga
ben ineffizient verarbeitet, so daß es sehr vorteilhaft ist,
wenn die Unterbrechungs- und Ausnahmeverarbeitungen dem
Steuerprozessor unterliegen bzw. zugeordnet sind.
Gemäß einer anderen Ausführungsform der vorliegenden
Erfindung weist ein Mehrprozessor-Computersystem einen Da
tenprozessor auf, der bei einer Rücksetzung und wenn eine
Ausnahme erfaßt wird, in einen Ruhezustand eintritt. Der Da
tenprozessor tritt in den Ruhezustand ein, um die Systemge
staltung und -programmierung zu erleichtern und die Synchro
nisation des Prozessors beim Rücksetzen des Systems zu ver
einfachen.
Gemäß einer weiteren Ausführungsform der vorliegenden
Erfindung weist ein Mehrprozessor-Computersystem einen Steu
erprozessor auf, der Steuer- und Statusregister in einem Da
tenprozessor liest und schreibt. Der Steuerprozessor steuert
dadurch die Operation des Datenprozessors während der Aus
führung eines Betriebssystem- oder Anwendungsprogramms. Der
Steuerprozessor hat unabhängig von der Datenprozessorverar
beitung Zugriff auf die Steuer- und Statusregister des Da
tenprozessors, so daß durch den Steuerprozessor und den Da
tenprozessor parallel auf die gleichen Steuer- und Statusre
gister zugegriffen werden kann.
Gemäß einer weiteren Ausführungsform der vorliegenden
Erfindung weist ein Mehrprozessor-Computersystem eine Archi
tekturdefiniton auf, bei der der Steuerprozessor nur dann
auf den inneren Zustand, einschließlich die Steuer- und Sta
tusregister, des Datenprozessors zugreifen kann, wenn sich
der Datenprozessor in einem Ruhezustand befindet. Durch die
se Einschränkung werden Programmdialoge zwischen dem Steuer
prozessor und dem Datenprozessor vereinfacht und wird ver
hindert, daß der Datenprozessor einen inkonsistenten und un
gültigen Zustand annimmt.
Durch die beschriebene asymmetrische Mehrprozessorar
chitektur und das beschriebene Betriebsverfahren werden vie
le Vorteile erhalten. Ein Vorteil ist, daß das Programmier
modell und die Ausführung des Datenprozessors auch im Ver
gleich zu einer symmetrischen Architektur, bei der mehrere
identische Prozessoren verwendet werden, wesentlich verein
facht werden.
Nachstehend werden Ausführungsformen der vorliegenden
Erfindung bezüglich der Betriebsstruktur und des Betriebs
verfahrens, unter Bezug auf die beigefügten Zeichnungen be
schrieben; es zeigen:
Fig. 1 ein schematisches Blockdiagramm einer Ausfüh
rungsform eines erfindungsgemäßen Multimedia-Mehrprozessor
systems;
Fig. 2 ein schematisches Blockdiagramm eines Multime
dia-Signalprozessors des in Fig. 1 dargestellten Multime
dia-Mehrprozessorsystems.
Fig. 3 ein schematisches Blockdiagramm eines Steuer
prozessors des Multimedia-Mehrprozessorsystems;
Fig. 4 ein Funktionsdiagramm des Steuerprozessors;
Fig. 5 ein schematisches Blockdiagramm eines Vektor
prozessors des in Fig. 2 dargestellten Multimedia-Signal
prozessors;
Fig. 6 ein schematisches Blockdiagramm zum Darstellen
von Vektorprozessorverarbeitungs- oder -ausführungsdaten
wegen des in Fig. 5 dargestellten Vektorprozessors;
Fig. 7 ein schematisches Blockdiagramm einer Coprozes
sorschnittstelle des in Fig. 2 dargestellten Multimedia-
Signalprozessors;
Fig. 8 ein schematisches Blockdiagramm zum Darstellen
einer Firmwarearchitektur des Multimedia-Signalprozessors;
und
Fig. 9 ein Ablaufdiagramm zum Darstellen von Operatio
nen, die Unterbrechungs- und Ausnahmeverarbeitungen im Mul
timedia-Mehrprozessorsystem betreffen.
Fig. 1 zeigt ein schematisches Blockdiagramm eines
Multimedia-Mehrprozessorsystems 100 mit einem Primärrechner
oder Hostprozessor 102 und einem Multimedia-Signalprozessor
104. Ein typischer Hostprozessor 102 ist ein x86-Prozessor,
wie beispielsweise ein PentiumTM- oder Pentium ProTM-Pro
zessor. Der Hostprozessor 102 führt Programme basierend
auf Befehlen und Daten aus, die in einem Systemspeicher 116
gehalten werden. Der Hostprozessor 102 kommuniziert mit dem
Multimedia-Signalprozessor 104 über einen Systembus 106,
z. B. einem PCI-Bus. Der Multimedia-Signalprozessor 104 ist
mit verschiedenen Funktionsblöcken verbunden, wie beispiels
weise einem Audio- und Kommunikations-Codec 108, einem Vi
deo-A/D-Wandler 110, einem Video-D/A-Wandler 112 und einem
SDRAM-Bildspeicher 114.
Fig. 2 zeigt ein schematisches Blockdiagramm des Mul
timedia-Signalprozessors 104 des Multimedia-Mehrprozessor
systems 100. Der Multimedia-Signalprozessor 104 weist einen
Digitalsignalprozessor (DSP) -kern 202 auf, der mit mehreren
Multimedia-Schnittstellen verbunden ist.
Der DPS-Kern 202 ist die Rechenmaschine des Multimedia-
Signalprozessors 104 und weist einen RISC-Steuerprozessor
204, einen Vektorprozessor 206, ein Cache-Untersystem 208,
einen schnellen Bus (FBUS) 210 und einen Ein-Ausgabebus 212
auf. Der Steuerprozessor 204 ist ein 32-Bit ARM7TM Steuer
prozessor, der von ARM Limited, Großbritannien, entworfen
und hergestellt ist und allgemeine Verarbeitungsfunktionen
ausführt, wie beispielsweise Echtzeit-Betriebssystem
operationen, Unterbrechungs- und Ausnahmeverarbeitungen, Ma
nagement der Ein-Ausgabegeräte, Kommunikation mit dem Host
prozessor 102 und ähnliche. Bei einer Ausführungsform wird
der Steuerprozessor 204 mit 40 MHz betrieben. Der Steuerpro
zessor 204 ist über eine Coprozessorschnittstelle 242 mit
dem Vektorprozessor 206 verbunden.
Der Steuerprozessor 204 führt die Ausnahmeverarbeitung
in Antwort auf Ausnahmebedingungen oder Ausnahmen aus, die
allgemein abnormale Bedingungen sind, die während einer Be
fehlsverarbeitung auftreten und eine Modifikation des Verar
beitungs- oder Ausführungssteuerungsablaufs verursachen. Der
Steuerprozessor 204 reagiert auf sieben Ausnahmearten, die,
in der Reihenfolge von höherer Priorität zu niedrigerer
Priorität aufgelistet, umfassen: eine Rücksetzbedingung, ei
ne (Daten-) Abbruchbedingung, eine FIQ-Unterbrechung, eine
IRQ-Unterbrechung, eine (Vorausabruf-) Abbruchbedingung, ei
nen nichtprogrammierten Sprung bei undefiniertem Befehl und
eine nicht definierte Softwareunterbrechung.
Fig. 3 zeigt ein schematisches Blockdiagramm des ARM7-Steuer
prozessors 204, der durch eine Befehlsdecodier- und
Steuerlogikeinrichtung 302 gesteuert wird. Der Steuerprozes
sor 204 kommuniziert über ein Schreibdatenregister 304 und
eine Befehlspipelinestruktur und ein Lesedatenregister 306
mit dem Cache-Untersystem 208. Der Steuerprozessor 204 weist
ein Adressenregister 308 und einen Adresseninkrementierer
310 zum Adressieren von Daten in einer 31×32-Bit-
Registerbank 312 auf. Der Steuerprozessor 204 weist eine
Arithmetiklogikeinheit (ALU), z. B. eine 32-Bit-ALU 314, ei
nen Multipositionsverschieber 316 und einen Booth-
Multiplizierer 318 auf. Die Coprozessorschnittstelle 242 ist
über nOPC-, nCPI-, CPA- und CPB-Signalleitungen, die über
die Coprozessorschnittstelle 242 Operationscodes und Be
fehlsparameter zwischen dem Steuerprozessor 204 und dem Vek
torprozessor 206 übertragen, direkt mit der Befehlsdecodier- und
Steuerlogikeinrichtung 302 verbunden. Fig. 4 zeigt ein
Punktionsdiagramm des Steuerprozessors 204.
Der Vektorprozessor 206 ist die Digitalsignalverarbei
tungsmaschine des Multimedia-Signalprozessors 104. Der Vek
torprozessor 206 weist eine Einzelbefehl-Mehrdaten
architektur auf und weist eine in Pipelinestruktur angeord
neten RISC-Maschine auf, die mehrere Datenelemente parallel
verarbeitet, um Signalverarbeitungsfunktionen auszuführen,
wie beispielsweise Diskrete-Kosinustransformationen (DCT),
FIR-Filterverarbeitungen, Faltungsverarbeitungen, Videobewe
gungsbestimmung und andere Verarbeitungsfunktionen. Der Vek
torprozessor 206 unterstützt Vektorarithmetik, bei der meh
rere Datenelemente durch Vektorverarbeitung durch mehrere
Vektorverarbeitungseinheiten gleichzeitig parallel verarbei
tet werden. Der Vektorprozessor 206 führt sowohl Skalarope
rationen als auch kombinierte Vektor-Skalaroperationen aus.
Die mehreren Datenelemente des Vektorprozessors 206 werden
in einen 576-Bit-Vektor gepackt, der mit einer Geschwindig
keit von 32 8/9-Bit-Fixpunktarithmetikoperationen, 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 Geschwindigkeit von einem Befehl
je Zyklus verarbeitet, während die leisten 576-Bit-
Vektoroperationen im Pipelinesystem mit einer Geschwindig
keit von einem Befehl in zwei Zyklen verarbeitet werden. La
de- und Speicheroperationen sind von Arithmetikoperationen
überlappt, und werden unabhängig durch separate Lade- und
Speicherschaltungen ausgeführt.
Wie in Fig. 5 dargestellt, weist der Vektorprozessor
206 vier Funktionsblöcke einschließlich einer Befehlsab
rufeinheit 502, einer Befehlsdecodier- und -ausgabe
einrichtung 504, einem Befehlsausführungsdatenweg 506 und
einer Lade- und Speichereinheit 508 auf. Die Befehlsab
rufeinheit 502 und die Befehlsdecodier- und -ausgabe
einrichtung 504 sind im Vektorprozessor 206 angeordnet, so
daß der Vektorprozessor 206 unabhängig vom Steuerprozessor
204 betrieben werden kann.
Die Befehlsabrufeinheit 502 ruft im voraus Befehle ab
und verarbeitet Steuerungsablaufbefehle, wie beispielsweise
Befehle für eine Programmverzweigung und einen Sprung zu Un
terprogrammen. Die Befehlsabrufeinheit 502 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
Programmverzweigungszielstrom auf. Die Befehlsabrufeinheit
502 empfängt bis zu acht Befehle vom Befehls-Cache-Speicher
in einem Zyklus. Die Befehlsdecodier- und -ausgabeeinrich
tung 504 decodiert und organisiert alle durch den Vektorpro
zessor 206 ausgeführten Befehle. Der Decodierer verarbeitet
einen Befehl in einem Zyklus in der Reihenfolge des Empfangs
von der Befehlsabrufeinheit 502, während die Ausgabeeinrich
tung die meisten Befehle in Abhängigkeit sowohl von der Ver
arbeitungsressourcen- als auch von der Operandendatenverfüg
barkeit außerhalb der Reihenfolge organisiert bzw. einteilt
oder festlegt.
Gemäß Fig. 6 weist der Befehlsausführungsdatenweg 506
eine Registerdatei 602 mit vier Ports, acht 32×32-Paral
lelmultiplizierern 604 und acht 36-Bit-ALUs 606 auf. Die
Registerdatei 602 unterstützt zwei Leseoperationen und zwei
Schreiboperationen je Zyklus. Die Parallelmultiplizierer 604
erzeugen bis zu acht 32-Bit-Multiplikationen in Ganzzahl- oder
Gleitkommaformat oder 16 16-Bit-Multiplikationen oder
32 8-Bit-Multiplikationen je Zyklus. Die Arithmetik-Logik-
Einheiten 606 führen entweder acht 36-Bit-ALU-Operationen in
Ganzzahl- oder Gleitkommaformat, 16 16-Bit-ALU-Operationen
oder 32 8-Bit-Operationen je Zyklus (z. B. 12,5 ns) aus.
Die Registerdatei 602 weist mehrere Spezialzweck- oder
Spezialregister und mehrere Rücksprungadressenregister auf.
Die Spezialregister weisen ein Vektorsteuerungs- und -sta
tusregister (VCSR), einen Vektorbefehlszähler (VPC), einen
Vektorausnahmebefehlszähler (VEPC), ein Vektorunterbre
chungsquellenregister (VISRC), ein Vektor- und Steuerprozes
sorsynchronsisationsregister (VASYNC) und andere Register,
z. B. verschiedene Zähl-, Masken-, Überlauf- und Fix- oder
Haltepunktregister, auf. Der Zählerinhalt des Vektorbefehls
zählers (VPC) stellt die Adresse des nächsten durch den Vek
torprozessor 206 auszuführenden Befehls dar.
Das Vektorunterbrechungsquellenregister (VISRC) zeigt
dem Steuerprozessor 204 die Unterbrechungsquellen an. Geeig
nete 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 Vektorprozessor 206 wiederaufgenommen wird. Durch jedes
gesetzte Bit im VISRC-Register wird veranlaßt, daß der Vek
torprozessor 206 in einen Ruhezustand (VP_IDLE) eintritt.
Wenn das entsprechende Unterbrechungsfreigabebit in einem
VIMSK-Register der Coprozessorschnittstelle 242 gesetzt ist,
wird dem Steuerprozessor 204 eine IRQ-Unterbrechung mitge
teilt.
Der Vektorprozessor 206 erfaßt Ausnahmebedingungen, die
präzise oder genaue Ausnahmen und ungenaue Ausnahmen umfas
sen. Präzise oder genaue Ausnahmen werden durch den Vektor
prozessor 206 vor dem zu einem Fehler führenden Befehl er
faßt und gemeldet. Genaue Ausnahmen sind beispielsweise eine
Befehlsadressenfixpunktausnahme, eine Datenadressenfixpunkt
ausnahme, eine Ausnahme für einen ungültigen Befehl, eine
Einzelschrittausnahme, eine Rücksprungadressenstapelüber
laufausnahme, eine Rücksprungadressenstapelunterlaufausnah
me, eine VCINT-Ausnahme und eine VCJOIN-Ausnahme. Ungenaue
Ausnahmen des Vektorprozessors 206 werden erfaßt und gemel
det, 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 bei
spielsweise eine Ausnahme für eine ungültige Befehlsadresse,
eine Ausnahme für eine ungültige Datenadresse, eine Ausnahme
für einen nicht ausgerichteten Datenzugriff, eine Ganzzahl
überlaufausnahme, eine Gleitkommaüberlaufausnahme, eine Aus
nahme für einen ungültigen Gleitkommaoperanden, eine Ausnah
me für eine Gleitkommadivision durch Null und eine Ausnahme
für eine Ganzzahldivision durch Null.
Das Vektorunterbrechungsbefehlsregister (VIINS) wird
durch den VCINT- oder den VCJOIN-Befehl des Vektorprozessors
aktualisiert, wenn der Befehl ausgeführt wird, um den Pro
zessor 204 zu unterbrechen.
Der Vektorprozessor 206 erkennt zwei besondere Bedin
gungen oder Zustände, einen Coprozessorunterbrechungsbefehl
(CPINT), der durch den Steuerprozessor 204 ausgeführt wird,
und einen Hardwarestapelüberlauf, der durch mehrere, durch
Software im Vektorprozessor 206 ausgeführte verschachtelte
Unterprogrammsprungbefehle verursacht wird. Andere, im Mul
timedia-Signalprozessor 104 erzeugte Unterbrechungs- und
Ausnahmebedingungen werden durch den Steuerprozessor 204
verarbeitet.
Der Vektorprozessor 206 führt nach dem Rücksetzen des
Systems eine Einschaltbefehlsfolge aus, durch das der Vek
torprozessor 206 auf einen Ruhezustand (VP_IDLE) eingestellt
wird. Der Vektorprozessor 206 bleibt auf den Zustand VP_IDLE
eingestellt, bis der Steuerprozessor 204 Register im Vektor
prozessor 206 initialisiert oder vorbesetzt und Operationen
des Vektorprozessors 206 unter Verwendung eines STARTVP-Be
fehls des Befehlsvorrats oder -satzes des Steuerprozessors
aktiviert.
Gemäß Fig. 2 leitet der Steuerprozessor 204 Operatio
nen des Vektorprozessors 206 ein. Insbesondere steuert der
Steuerprozessor 204 Dialoge mit dem Vektorprozessor 206
durch Erweiterungen des Befehlsvorrates des Steuerprozessors
204. Die Befehlsvorraterweiterungen weisen Coprozessorda
tenoperationen, z. B. einen STARTVP- und einen INTVP-Befehl,
Coprozessordatenübertragungen und Coprozessorregisterüber
tragungen, z. B. einen TESTSET-Befehl und MFVP-, MTVP-, MFER- und
MTER-Befehle zum Lesen und Schreiben von Registern des
Vektorprozessors 206 auf.
Der Steuerprozessor 204 startet oder aktiviert den Vek
torprozessor 206 unter Verwendung eines STARTVP-Befehls. Der
STARTVP-Befehl veranlaßt den Vektorprozessor 206, einen
VP_RUN-Zustand anzunehmen, durch den angezeigt wird, daß der
Vektorprozessor 206 eine Verarbeitung ausführt. Der Befehl
STARTVP hat keine Wirkung, wenn der Vektorprozessor 206 be
reits auf den VP_RUN-Zustand eingestellt ist. Dem Steuerpro
zessor 204 wird in Antwort auf den STARTVP-Befehl kein Er
gebnis mitgeteilt, und der Steuerprozessor 204 setzt seine
Verarbeitung nach dem STARTVP-Befehl fort. Der STARTVP-Be
fehl wird nach einem Coprozessordatenoperationsformatbe
fehl (CDP) aufgerufen, durch den ein Bedingungsschlüssel
oder -code eingestellt wird. Der STARTVP-Befehl wird unter
Verwendung der folgenden Assemblersyntax aufgerufen:
CDP{cond} p7, 0, c0, c0, c0
STARTVP{cond}
wobei die Bedingungen die Bedingungen gleich (eq), ungleich
(ne), Übertragsbit gesetzt (cs), Übertragsbit gelöscht (cc),
minus (mi), plus (pl) und andere Bedingungen umfassen. Der
TARTVP-Befehl wird nur dann ausgeführt, wenn die Bedingung
wahr ist. Der Steuerprozessor 204 verwendet den STARTVP-Be
fehl, um dem Vektorprozessor 206 eine Anforderung zur Pro
grammausführung mitzuteilen, und löscht automatisch das Vek
torprozessorunterbrechungsbit (VISRC<vip<) und das Vektor
prozessorverbindungsbit (VISRC<vjp<) des Vektorunterbre
chungsquellenregisters (VISRC). Nach dem STARTVP-Aufruf
setzt der Steuerprozessor 204 seine Verarbeitung fort, um
den nächsten Befehl auszuführen, ohne darauf zu warten, daß
die Verarbeitung des Vektorprozessors 206 beginnt. Der Zu
stand des Vektorprozessors 206 muß nach Wunsch initialisiert
werden, bevor der STARTVP-Befehl aufgerufen wird. Der
STARTVP-Befehl hat keine Wirkung, wenn der Vektorprozessor
206 bereits auf den VP_RUN-Zustand eingestellt ist. Während
der Ausführung eines STARTVP-Befehls kann eine Ausnahme für
einen nicht verfügbaren Vektorprozessor auftreten.
Der Steuerprozessor 204 unterbricht den Vektorprozessor
206 unter Verwendung eines Vektorprozessorunterbrechungsbe
fehls (INTVP). Der INTVP-Befehl veranlaßt den Vektorprozes
sor 206, in einen VP_IDLE-Zustand einzutreten, durch den an
gezeigt wird, daß der Vektorprozessor 206 keine Verarbeitung
ausführt. Der INTVP-Befehl hat keine Wirkung, wenn der Vek
torprozessor 206 keine Verarbeitung ausführt. In Antwort auf
den INTVP-Befehl wird dem Steuerprozessor 204 kein Ergebnis
mitgeteilt, und der Steuerprozessor 204 setzt seine Verar
beitung nach dem INTVP-Befehl fort. Der INTVP-Befehl wird
nach einem Coprozessordatenoperationsformatbefehl (CDP) auf
gerufen, durch den ein Bedingungscode gesetzt wird. Der
INTVP-Befehl wird unter Verwendung der folgenden Assembler
syntax aufgerufen:
CDP{cond} p7, 1, c0, c0, c0
INTVP{cond}
wobei die Bedingungen die Bedingungen gleich (eq), ungleich
(ne), Übertragsbit gesetzt (cs), Übertragsbit gelöscht (cc),
minus (mi), plus (pl) und andere Bedingungen umfassen. Der
Steuerprozessor 204 verwendet den INTVP-Befehl, um dem Vek
torprozessor 206 eine Anforderung zur Programmunterbrechung
mitzuteilen. Nach dem Aufruf des INTVP-Befehls setzt der
Steuerprozessor 204 seine Verarbeitung fort, um den nächsten
Befehl auszuführen, ohne darauf zu warten, daß die Verarbei
tung des Vektorprozessors 206 unterbrochen wird. Typischer
weise wird nach dem INTVP-Befehl ein Befehl für eine Daten
übertragung von einem erweiterten Register (MFER) verwendet,
um festzustellen, ob der Vektorprozessor 206 seine Verarbei
tung unterbrochen hat. Der INTVP-Befehl hat keine Wirkung,
wenn der Vektorprozessor 206 bereits auf den VP_IDLE-Zustand
eingestellt ist. Während der Ausführung eines INTVP-Befehls
kann eine Ausnahme für einen nicht verfügbaren Vektorprozes
sor auftreten.
Der Steuerprozessor 204 führt unter Verwendung eines
Test- und Setzbefehls (TESTSET) einen Test durch, durch den
der Betriebszustand des Vektorprozessors 206 geprüft wird
und der einen Synchronisationstest einschließt. Durch den
TESTSET-Befehl wird ein benutzererweitertes Register gelesen
und Bit 30 des Registers auf 1 gesetzt, wodurch zwischen dem
Vektorprozessor 206 und dem Steuerprozessor 204 eine Her
steller/Anwender-Synchronisierung erreicht wird. Durch den
TESTSET-Befehl wird veranlaßt, daß der Steuerprozessor un
terbrochen wird, bis das Register übertragen ist. Der Steu
erprozessor 204 fordert den TESTSET-Befehl nach einem Copro
zessorregisterübertragungsoperationsbefehl (MRC, MCR) an,
durch den ein Bedingungscode gesetzt wird. Der TESTSET-Be
fehl wird nur dann ausgeführt, wenn die Bedingung wahr
ist. Der TESTSET-Befehl wird unter Verwendung der folgenden
Assemblersyntax aufgerufen:
MRC{cond} p7, 0, Rd, c0, cER, 0
TESTSET{cond} Rd, RNAME
wobei die Bedingungen die Bedingungen gleich (eq), ungleich
(ne), Übertragsbit gesetzt (cs), Übertragsbit gelöscht (cc),
minus (mi), plus (pl) und andere Bedingungen umfassen. Rd
ist ein Register im Steuerprozessor 204. ER ist ein erwei
tertes Register in der Coprozessorschnittstelle 242 und
RNAME bezeichnet eine architekturspezifische Registermnemo
nik, z. B. UER1 oder VASYNC.
Durch andere Steuerprozessorbefehle wird ein Vektorpro
zessor-Skalar/Spezialzweck-Register an ein Steuerprozessorre
gister übertragen. Durch noch andere Steuerprozessorbefehle
wird ein Steuerprozessorregister an ein Vektorprozessor-
Skalar/Spezialzweck-Register übertragen.
Beispielsweise werden durch einen MFVP-Befehl Daten von
einem Vektorprozessor-Skalar-Spezialregister zu einem allge
meinen Register im Steuerprozessor 204 übertragen. Der MFVP-Be
fehl wird nach einem Coprozessorregisterübertragungsopera
tionsbefehl (MRC, MCR) aufgerufen, durch den ein Bedin
gungscode gesetzt wird. Der MFVP-Befehl wird nur dann ausge
führt, wenn die Bedingung wahr ist. Der MFVP-Befehl wird un
ter Verwendung der folgenden Assemblersyntax aufgerufen:
MRC{cond} p7, 1, Rd, CRn, CRm, 0
MTVP{cond} Rd, RNAME
wobei die Bedingungen die Bedingungen gleich (eq), ungleich
(ne), Übertragsbit gesetzt (cs), Übertragsbit gelöscht (cc),
minus (mi), plus (pl) und andere Bedingungen umfassen. Der
Coprozessor-Zahlencode p7 bezeichnet den Vektorprozessor
206. Rd ist ein Register im Steuerprozessor 204. CRn und CRm
sind Skalar-Spezialregister im Vektorprozessor 206. RNAME
bezeichnet eine architekturspezifische Registermnemonik,
z. B. SP0 oder VCSR. Der Steuerprozessor 204 ruft den MFVP-Be
fehl auf, um Daten von den Skalar-Spezialregistern CRn und
CRm im Vektorprozessor 206 zum Steuerprozessorregister Rd zu
übertragen. Während der Ausführung eines MFVP-Befehls kann
eine Ausnahme für einen nicht verfügbaren Vektorprozessor
auftreten.
Durch einen Befehl für eine Datenübertragung zum Vek
torprozessor (MTVP) werden Daten von einem allgemeinen Regi
ster im Steuerprozessor 204 zu einem Vektorprozessor-
Skalar/Spezialzweck-Register übertragen. Der MTVP-Befehl wird
nach einem Coprozessorregisterübertragungsoperationsbefehl
(MRC, MCR) aufgerufen, bei dem ein Bedingungscode gesetzt
wird. Der MTVP-Befehl wird nur dann ausgeführt, wenn die Be
dingung wahr ist. Der MTVP-Befehl wird unter Verwendung der
folgenden Assemblersyntax aufgerufen:
MRC{cond} p7, 1, Rd, CRn, CRm, 0
MTVP{cond} RNAME, Rd
wobei die Bedingungen die Bedingungen gleich (eq), ungleich
(ne), Übertragsbit gesetzt (cs), Übertragsbit gelöscht (cc),
minus (mi), plus (pl) und andere Bedingungen umfassen. Der
Coprozessor-Zahlencode p7 bezeichnet den Vektorprozessor
206. Rd ist ein Register im Steuerprozessor 204. CRn und CRm
sind Skalar-Spezialzweckregister im Vektorprozessor 206. RNAME
bezeichnet eine architekturspezifische Registermnemonik,
z. B. SP0 oder VCSR. Der Steuerprozessor 204 ruft den MTVP-Be
fehl auf, um Daten im Steuerprozessorregister Rd zu den
Skalar-Spezialzweckregistern CRn und CRm im Vektorprozessor
206 zu übertragen. Während der Ausführung eines MTVP-Befehls
kann eine Ausnahme für einen nicht verfügbaren Vektorprozes
sor auftreten.
Der MFVP- und der MTVP-Befehl sollen nur dann ausge
führt werden, wenn der Vektorprozessor 206 auf einen
VP_IDLE-Zustand eingestellt ist. Zwischen dem Steuerprozes
sor 204 und dem Vektorprozessor 206 findet keine direkte
Kommunikation statt. Bei jeder Datenübertragung wird ein
Zwischenspeicher verwendet, der bei der dargestellten Aus
führungsform durch die Coprozessorschnittstelle 242 bereit
gestellt wird.
Durch den MFVP- und den MTVP-Befehl wird ermöglicht,
daß der Steuerprozessor 204 Steuer- und Statusregister im
Vektorprozessor 206 frei lesen und schreiben kann. Der Steu
erprozessor 204 steuert dadurch die Operation des Vektorpro
zessors 206, während das Betriebssystem- oder Anwendungspro
gramme ausgeführt werden. Der MFVP- und der MTVP-Befehl wer
den nur dann ausgeführt, wenn der Vektorprozessor 206 auf
den VP_IDLE-Zustand eingestellt ist, weil der Steuerprozes
sor 204 unabhängig von der Verarbeitung des Vektorprozessors
206 auf die Steuer- und Statusregister des Vektorprozessors
206 Zugriff hat, so daß durch den Steuerprozessor 204 und
den Vektorprozessor 206 parallel auf die gleichen Steuer- und
Statusregister zugegriffen werden kann.
Durch einen Befehl für eine Datenübertragung zu einem
erweiterten Register (MTER) werden Daten vom Steuerprozessor
204 zu einem bestimmten erweiterten Register übertragen. Der
MTER-Befehl wird nach einem Coprozessorregisterübertragungs
operationsbefehl (MRC, MCR) aufgerufen, durch den ein Bedin
gungscode gesetzt wird. Der MTER-Befehl wird nur dann ausge
führt, wenn die Bedingung wahr ist. Der MTER-Befehl wird un
ter Verwendung der folgenden Assemblersyntax aufgerufen:
MRC{cond} p7, 1, Rd, cP, cER, 0
MTER{cond} RNAME, Rd
wobei die Bedingungen die Bedingungen gleich (eq), ungleich
(ne), Übertragsbit gesetzt (cs), Übertragsbit gelöscht (cc),
minus (mi), plus (pl) und andere Bedingungen umfassen. Der
Coprozessor-Zahlencode p7 bezeichnet den Vektorprozessor
206. Rd ist ein Register im Steuerprozessor 204. P bezeich
net einen ausgewählten Coprozessor und ER bezeichnet ein er
weitertes Register im Coprozessor P. RNAME bezeichnet eine
architekturspezifische Registermnemonik, z. B. PER0 oder CSR.
Der Steuerprozessor 204 ruft den MTER-Befehl auf, um Daten
im Steuerprozessorregister Rd zum festgelegten erweiterten
Register ER im bestimmten Coprozessor P zu übertragen. Wäh
rend der Ausführung eines MTER-Befehls kann eine Schutzver
letzung bei einem versuchten Zugriff auf den bestimmten Co
prozessor auftreten.
Durch einen Befehl für eine Datenübertragung von einem
erweiterten Register (MFER) werden Daten von einem erweiter
en Register in einem bestimmten Coprozessor zu einem Regi
ster im Steuerprozessor 204 übertragen. Der MFER-Befehl wird
nach einem Coprozessorregisterübertragungsoperationsbefehl
(MRC, MCR) aufgerufen, durch den ein Bedingungscode gesetzt
wird. Der MFER-Befehl wird nur dann ausgeführt, wenn die Be
dingung wahr ist. Der MFER-Befehl wird unter Verwendung der
folgenden Assemblersyntax aufgerufen:
MRC{cond} p7, 2, Rd, cP, cER, 0
MFER{cond} Rd, RNAME
wobei die Bedingungen die Bedingungen gleich (eq), ungleich
(ne), Übertragsbit gesetzt (cs), Übertragsbit gelöscht (cc),
minus (mi), plus (pl) und andere Bedingungen umfassen. Der
Coprozessor-Zahlencode p7 bezeichnet den Vektorprozessor
206. Rd ist ein Register im Steuerprozessor 204. P bezeich
net einen ausgewählten Coprozessor und ER bezeichnet ein er
weitertes Register im Coprozessor P. RNAME bezeichnet eine
architekturspezifische Registermnemonik, z. B. PER0 oder CSR.
Der Steuerprozessor 204 ruft den MFER-Befehl auf, um Daten
vom festgelegten erweiterten Register ER im bestimmten Co
prozessor P zum Register Rd zu übertragen. Während der Aus
führung eines MFER-Befehls kann eine Schutzverletzung bei
einem versuchten Zugriff auf den festgelegten Coprozessor
auftreten.
Fig. 7 zeigt ein schematisches Blockdiagramm der Co
prozessorschnittstelle 242. Die Coprozessorschnittstelle 242
ergänzt die Funktionsvielfalt des Steuerprozessors 204, in
dem zusätzliche Register und Logikfunktionen zum Ausführen
von Befehlen bereitgestellt werden, durch die der Befehls
vorrat des Steuerprozessors 204 erweitert wird. Die Copro
zessorschnittstelle 242 weist Register für eine Kommunikati
on zwischen dem Steuerprozessor 204 und dem Vektorprozessor
206 auf. Die Coprozessorschnittstelle 242 dient außerdem als
Puffer zum Übertragen von Daten und Signalen zwischen Struk
turen, die mit verschiedenen Taktgeschwindigkeiten arbeiten.
Bei einer Ausführungsform wird der Steuerprozessor 204 mit
einer Rate oder Geschwindigkeit von 40 MHz und der Vektor
prozessor 206 mit einer Rate oder Geschwindigkeit von 80 MHz
betrieben.
Die Coprozessorschnittstelle 242 weist einen Decodierer
702, einen Zustandrechner 704, einen Block 706 für privile
gierte erweiterte Register und einen Block 708 für benutzer
erweiterte Register auf. Die Register im Block 706 für pri
vilegierte erweiterte Register und im Block 708 für benut
zererweiterte Register sind durch den Steuerprozessor 204
und den Vektorprozessor 206 lesbar und beschreibbar. Der De
codierer 702 decodiert Befehle des Befehlsvorrates des Steu
erprozessors. Der Befehlsvorrat des Steuerprozessors weist
Befehle auf, die im Steuerprozessor 204 ausgeführt werden,
und erweiterte Befehle, die nicht durch den Steuerprozessor
204 sondern durch die Coprozessorschnittstelle 242 ausge
führt werden, um eine spezielle Coprozessorfunktionsvielfalt
zu erhalten. Der Decodierer 702 decodiert Steuerprozessorbe
fehle, erfaßt erweiterte Befehle und führt dem Zustandrech
ner 704 erfaßte erweiterte Befehle zu, damit diese ausge
führt werden. Der Zustandrechner 704 weist eine Logik zum
Ausführen der erweiterten Befehle auf.
Der Block 706 für privilegierte erweiterte Register
weist erweiterte Register auf, auf die zugegriffen wird,
während durch den Steuerprozessor 204 spezielle Befehle aus
geführt werden. Der Block 706 für privilegierte erweiterte
Register weist ein Steuerregister (CTR), ein Prozessorversi
onsregister (PVR), ein Vektorunterbrechungsmaskenregister
(VIMSK), ein Befehlsunterbrechungsfixpunktregister (AIABR),
ein Datenadressenfixpunktregister (ADABR), ein Notizblockre
gister (SPREG) und ein Statusregister (STR) auf. Der Block
706 für privilegierte erweiterte Register wird primär zum
Synchronisieren des Steuerprozessors 204 und des Vektorpro
zessors 206 verwendet.
Bei einer Ausführungsform weisen die Register des
Blocks 708 für benutzererweiterte Register nur ein einziges,
an der Bitposition <30< angeordnetes Bit auf, so daß die
Bits <31< und <29-0< als 0 gelesen werden. Der Block 708 für
benutzererweiterte Register weist ein Vektorprozessorzu
standsflag (VPSTATE) und ein Vektor- und Steuerprozessorsyn
chronisationsflag (VASYNC) auf. Das VPSTATE-Flag zeigt an,
daß der Vektorprozessor 206 auf den Zustand VP_RUN einge
stellt ist, wenn das Bit <30< gesetzt ist. Wenn das Bit <30<
zurückgesetzt ist, ist der Vektorprozessor 206 auf den
VP_IDLE-Zustand eingestellt und unterbrochen, wobei der Zäh
lerinhalt des Befehlszählers die Adresse des nächsten auszu
führenden Befehls angibt. Durch das VASYNC-Flag wird eine
Hersteller/Benutzersynchronisation zwischen dem Vektorpro
zessor 206 und dem Steuerprozessor 204 ermöglicht. Das
VASYNC-Flag wird durch einen im Vektorprozessor 206 ausge
führten VMOV-Befehl gesetzt und zurückgesetzt. Das VASYNC-Flag
wird außerdem durch eine Verarbeitung des Steuerprozes
sors 204 unter Verwendung eines Befehls für eine Datenüber
tragung vom erweiterten Register (MFER), eines Befehls für
eine Datenübertragung zum erweiterten Register (MTER) oder
des TESTSET-Befehls gesetzt oder zurückgesetzt.
Beim Rücksetzen durch einen Einschaltvorgang werden al
le Bits des Blocks 706 für privilegierte erweiterte Register
und des Blocks 708 für benutzererweiterte Register zurückge
setzt, so daß der Vektorprozessor 206 auf den Ruhezustand
eingestellt ist.
Das Vektorunterbrechungsmaskenregister (VIMSK) steuert
die Mitteilungen von im Vektorprozessor 206 auftretenden
Ausnahmebedingungen an den Steuerprozessor 204. Durch die
Bits im VIMSK-Register, wenn diese zusammen mit einem ent
sprechenden Bit im Vektorunterbrechungsquellenregister
(VISRC) gesetzt sind, wird ermöglicht, daß der Steuerprozes
sor 204 durch die Ausnahmebedingung unterbrochen wird. Das
VISRC-Register weist mehrere Bits auf, die anzeigen, welche
Quelle von mehreren Ausnahme- und Unterbrechungsbedingungen
vorliegt. Bits des VIMSK-Registers weisen ein Freigabebit
für eine Datenadressenfixpunktunterbrechung (DABE), ein
Freigabebit für eine Befehlsadressenfixpunktunterbrechung
(IABE) und ein Freigabebit für eine Einzelschrittunterbre
chung (SSTPE) auf. Das VIMSK-Register steuert ferner Unter
brechungsfreigabebits für einen Gleitkommaüberlauf (FOVE),
einen ungültigen Gleitkommaoperanden (FINVE) und eine Gleit
kommadivision durch Null (FDIVE) sowie Unterbrechungsfreiga
bebits für einen Ganzzahlüberlauf (IOVE) und eine Ganzzahl
division durch Null (IDIVE). Das VIMSK-Register steuert au
ßerdem eine VCINT-Unterbrechungsfreigabe (VIE), eine VCJOIN-Unter
brechungsfreigabe (VJE) und eine Kontextschaltfreigabe
(CSE).
Der Vektorprozessor 206 steht in Dialog mit dem Steuer
prozessor 204 durch Übertragen von Signalen an den Steuer
prozessor 204. Insbesondere weist der Vektorprozessor 206
eine Logik auf, die dem Steuerprozessor 204 einen Lese- und
Schreibzugriff ermöglicht. Der Vektorprozessor 206 überträgt
unter Verwendung eines VCJOIN-Befehls und eines VCINT-Be
fehls über benutzererweiterte Register, durch die ange
zeigt wird, daß der Vektorprozessor 206 einen Synchronisie
rungsbefehl ausgeführt hat, indirekt Signale an den Steuer
prozessor 204. Der Vektorprozessor 206 überträgt außerdem
durch eine Unterbrechungsanforderung, die anzeigt, daß der
Vektorprozessor 206 die Ausführung unterbrochen und den
VP_IDLE-Zustand angenommen hat, direkt Signale an den Steu
erprozessor 204. Der Vektorprozessor 206 führt zwei Befehle
aus, um eine Meldung an den Steuerprozessor 204 zu übertra
gen. Der VCJOIN-Befehl (VCJOINn) stellt eine bedingte Ver
bindung mit dem Steuerprozessor 204 her und veranlaßt den
Vektorprozessor 206, seine Verarbeitung zu unterbrechen und
in den VP_IDLE-Zustand einzutreten. Ein Befehlszähler (nicht
dargestellt) im Vektorprozessor 206 legt die Adresse des dem
VCJOIN-Befehl folgenden Befehls fest. Der VCINT-Befehl
(VCINTn) unterbricht bedingt den Steuerprozessor 204 und
veranlaßt, daß der Vektorprozessor 206 seine Verarbeitung
unterbricht und in den VP_IDLE-Zustand eintritt. Der Be
fehlszähler im Vektorprozessor 206 legt die Adresse des dem
VCINT-Befehl folgenden Befehls fest. Der VCINT- und der
VCJOIN-Befehl sind Befehle, die durch den Vektorprozessor
206 ausgeführt und in eine Steuerungsablaufklasse eingeteilt
werden. Die Steuerungsablaufbefehle weisen verschiedene be
dingte Befehle auf, z. B. Verzweigungsbefehle, Dekrement- und
Verzweigungsbefehle, Sprungbefehle, Befehle für einen Rück
sprung von einem Unterprogramm, Kontextschaltbefehle und
Sperrbefehle.
Für Unterbrechungs- und Ausnahmeverarbeitungen werden
mehrere durch den Vektorprozessor 206 ausgeführte Befehle,
z. B. ein Befehl für einen bedingten Kontextschaltvorgang
(VCCS), ein Befehl für eine bedingte Unterbrechung (VCINT)
und ein Befehl für eine bedingte Verbindung (VCJOIN) verwen
det.
Durch den Befehl für eine bedingte Unterbrechung
(VCINT) werden, wenn dieser aktiviert ist, die Verarbeitung
des Vektorprozessors 206 und der Steuerprozessor 204 unter
brochen. Durch den VCINT-Befehl kann eine VCINT-Unter
brechung erzeugt werden. Die Assemblersyntax des Be
fehls für eine bedingte Unterbrechung (VCINT) lautet:
VCINT.cond #ICODE
wobei cond einen definierten Bedingungscode und #ICODE einen
23-Bit-Wert darstellt, durch den eine zur Verwendung durch
den Steuerprozessor 204 vorgesehene Konstante definiert ist.
Der Bedingungscode (cond) wird aus den Bedingungscodes für
die Bedingungen unbedingt (un), kleiner als (lt), gleich
(eq), kleiner oder gleich (le), größer als (gt), ungleich
(ne), größer oder gleich (ge) und Überlauf (ov) ausgewählt.
Die VCINT-Operation wird durch folgenden Pseudocode darge
stellt:
Daher wird, wenn das Vektorsteuerungs- und Statusregi
ster (VCSR) mit dem Bedingungscode übereinstimmt oder der
Bedingungscode die Bedingung unbedingt darstellt, das Vek
torunterbrechungsbit des Vektorunterbrechungsquellenregi
sters (VISRC) gesetzt, das Vektorunterbrechungsbefehlsregi
ster (VIINS) mit dem durch den #ICODE-Parameter gekennzeich
neten Befehl geladen und der Vektorausnahmebefehlszähler
(VEPC) mit dem Wert vom Befehlszähler des Vektorprozessors
206 geladen. Das Vektorunterbrechungsbefehlsregister (VIINS)
wird mit einer Identifizierung des VCINT-Befehls, der Bedin
gung und dem #ICODE-Parameter geladen, um dem Steuerprozes
sor 204 Informationen zuzuführen, die betreffen: (1) den
Grund, warum der Vektorprozessor 206 den Steuerprozessor 204
unterbricht und (2) einen durch den Steuerprozessor 204 bei
der Ausführung einer Software-Interrupt-Service-Routine ver
wendeten konstanten Wert. Wenn das Vektorprozessorunterbre
chungsfreigabebit des VIMSK-Registers gesetzt ist, überträgt
der Vektorprozessor 206 ein Unterbrechungssignal (IRQ) an
den Steuerprozessor 204. Der Zustand (VP_STATE) des Vektor
prozessors 206 wird auf den Ruhezustand eingestellt. Wenn
der Bedingungscode nicht die Bedingung unbedingt anzeigt und
der Steuerungscode nicht mit dem Vektorsteuerungs- und Sta
tusregister (VCSR) übereinstimmt, wird jedoch der VCINT-Be
fehl mit der Ausnahme, daß der Befehlszähler um vier er
höht wird, ignoriert.
Durch Befehl für eine bedingte Verbindung mit der Steu
erprozessortask (VCJOIN) wird, wenn dieser aktiviert ist,
die Verarbeitung des Vektorprozessors 206 unterbrochen und
eine Verbindung mit der im Steuerprozessor 204 verarbeiteten
Task hergestellt. Durch den VCJOIN-Befehl kann eine VCJOIN-Unter
brechung erzeugt werden. Die Assemblersyntax des Be
fehls für eine bedingte Unterbrechung (VCJOIN) lautet:
VCJOIN.cond#Offset
wobei cond ein definierter Bedingungscode und #Offset ein
23-Bit-Wert ist, durch den der Versatz bezüglich der Positi
on des VCJOIN-Befehls im Speicher des Vektorprozessors 206
eines anschließend aktivierten Vektorprozessorunterprogramms
gekennzeichnet ist. Durch den VCJOIN-Befehl wird eine durch
den Vektorprozessor 204 ausgeführte Interrupt-Service-
Routine aktiviert. Der Steuerprozessor 204 speichert den
#Offset-Parameter und führt eine definierte Interrupt-
Service-Routine aus. Wenn die Interrupt-Service-Routine ab
geschlossen ist, führt der Steuerprozessor 204 vorgegebene
Operationen aus und setzt Register im Vektorprozessor 206
für spätere Verarbeitungen. Bei Abschluß der Interrupt-
Service-Routine startet der Steuerprozessor 204 den Vektor
prozessor 206 unter Verwendung eines STARTVP-Befehls und
legt die gespeicherte Adresse #Offset als Position eines Un
terprogramms fest, bei der der Vektorprozessor 206 seine
Verarbeitung beginnen soll. Der Offset-Parameter wird durch
den Steuerprozessor 204 in der Weise eines Verzweigungsbe
fehls verwendet, um die durch den Steuerprozessor 204 ausge
führte Befehlsfolge zu steuern. Ein Beispiel der Verwendung
des VCJOIN-Befehls ist in der US-Patentanmeldung Nr.
08/699,280 mit dem Titel "EFFICIENT CONTEXT SAVING AND
RESTORING IN MULTIPROCESSORS" von S.P. Song et al. beschrie
ben. Der Bedingungscode (cond) wird aus den Bedingungscodes
unbedingt (un), kleiner als (lt), gleich (eq), kleiner oder
gleich (le), größer als (gt), ungleich (ne), größer oder
gleich (ge) und Überlauf (ov) ausgewählt. Die VCJOIN-Ope
ration wird durch folgenden Pseudocode dargestellt:
Daher wird, wenn das Vektorsteuerungs- und Statusregi
ster (VCSR) mit dem Bedingungscode übereinstimmt oder der
Bedingungscode die Bedingung unbedingt darstellt, das Vek
torverbindungsbit des Vektorunterbrechungsquellenregisters
(VISRC) gesetzt, das Vektorunterbrechungsbefehlsregister
(VIINS) mit dem durch den #Offset-Parameter gekennzeichneten
Befehl geladen und der Vektorausnahmebefehlszähler (VEPC)
mit dem Wert vom Befehlszähler des Vektorprozessors 206 ge
laden. Das Vektorunterbrechungsbefehlsregister (VIINS) wird
mit einer Identifizierung des VCJOIN-Befehls, der Bedingung
und dem #Offset-Parameter geladen, um dem Steuerprozessor
204 Informationen zuzuführen, die betreffen: (1) den Grund,
warum der Vektorprozessor 206 den Steuerprozessor 204 unter
bricht und (2) den Versatz von einer Adresse oder einer Mar
ke in einem Befehlsregister des Vektorprozessors 206, durch
die ein Verzweigungs-Offsetwert zum Steuern der Befehlsfolge
des Vektorprozessorprogramms angezeigt wird, wenn der Steu
erprozessor 204 den Vektorprozessor 206 wieder aktiviert.
Wenn das Vektorprozessorverbindungsfreigabebit des VIMSK-Re
gisters gesetzt ist, überträgt der Vektorprozessor 206 ein
Unterbrechungssignal (IRQ) an den Steuerprozessor 204. Der
Zustand (VP_STATE) des Vektorprozessors 206 wird auf den Ru
hezustand eingestellt. Wenn der Bedingungscode nicht die Be
dingung unbedingt anzeigt und der Steuerungscode nicht mit
dem Vektorsteuerungs- und Statusregister (VCSR) überein
stimmt, wird jedoch der VCJOIN-Befehl mit der Ausnahme, daß
der Befehlszähler um vier erhöht wird, ignoriert.
Durch den Befehl für einen bedingten Kontextschaltvor
gang (VCCS) wird ein unmittelbarer (nicht erzögerter)
Sprung zu einem Kontextschaltunterprogramm veranlaßt, wenn
das Kontextschaltfreigabebit des VIMSK-Registers,
VIMSK<cse<, wahr ist. Wenn VIMSK<cse< wahr ist, wird eine
Rücksprungadresse in der Position VPC+4 im Rücksprungadres
senstapel eingespeichert. Andernfalls wird die Ausnahmever
arbeitung an der Adresse VPC+4 fortgesetzt. Durch den VCCS-Be
fehl kann eine Rücksprungadressenüberlaufausnahmebedingung
erzeugt werden. Die Assemblersyntax des Befehls für einen
bedingten Kontextschaltvorgang (VCCS) lautet:
VCCS #Offset
wobei #Offset ein 23-Bit-Wert ist, durch den die Position
des Kontextschaltunterprogramms gekennzeichnet ist. Die
VCCS-Operation wird durch folgenden Pseudocode beschrieben:
Daher wird, wenn das Kontextschaltfreigabebit des
VIMSK-Registers gesetzt ist, der Rücksprungstapelzeiger
(VSP) bezüglich eines Überlaufzustands geprüft. Wenn ein
Überlaufzustand aufgetreten ist, wird das Rücksprungadres
senstapelüberlaufbit des Vektorunterbrechungsquellenregi
sters (VISC) gesetzt, überträgt der Vektorprozessor 206 ei
ne Rücksprungsadressenstapelüberlaufausnahmeinformation an
den Steuerprozessor 204 und wird der Zustand (VP_STATE) des
Vektorprozessors 206 auf den Ruhezustand eingestellt. Wenn
keine Überlaufbedingung aufgetreten ist, wird der um vier
erhöhte Befehlszählerinhalt in den Rücksprungadressenstapel
(RSTACK) eingespeichert, der Rücksprungstapelzeiger (VSP) um
eins erhöht und der Befehlszählerinhalt (VPC) des Vektorpro
zessors 206 um das stellen- oder zeichenerweiterte Produkt
(#Offset × 4) erhöht. Wenn das Kontextschaltfreigabebit des
VIMSK-Registers nicht gesetzt ist, wird der VCCS-Befehl mit
der Ausnahme, daß der Befehlszählerinhalt um vier erhöht
wird, ignoriert.
Der Steuerprozessor 204 und der Vektorprozessor 206 ar
beiten unabhängig parallel, wenn Operationen des Vektorpro
zessors 206 beginnen, nachdem der STARTVP-Befehl durch den
Steuerprozessor 204 ausgeführt wurde. Die unabhängigen pa
rallelen Operationen des Steuerprozessors 204 und des Vek
torprozessors 206 werden unter Verwendung besonderer Steue
rungsbefehle synchronisiert. Durch die Unterstützung der
gleichzeitigen Ausführung zweier Befehls folgen: einer durch
den Steuerprozessor 204 ausgeführten und einer durch den
Vektorprozessor 206 ausgeführten anderen Befehlsfolge, wird
die Taskverarbeitungsgeschwindigkeit vorteilhaft erhöht und
ein Portieren von durch den Steuerprozessor 204 verarbeite
ten Befehlscodes zu verschiedenen Prozessoren der MSP-Pro
zessorfamilie erleichtert. Bei der dargestellten Ausfüh
rungsform arbeitet der Vektorprozessor mit einer Rate von 80 MHz.
Gemäß Fig. 2 weist das Cache-Untersystem 208 einen Da
ten-Cache-Speicher 214 (z. B. 5 kB), einen Befehls-Cache-
Speicher 216 (z. B. 2 kB) und einen Cache-ROM-Speicher 218
(z. B. 16 kB) auf, und arbeitet typischerweise mit der glei
chen Geschwindigkeit wie der Vektorprozessor 206 (80 MHz).
Bei einer Ausführungsform weist das Cache-Untersystem 208
1 kByte Befehlsspeicher und 1 kByte Datenspeicher für den
Steuerprozessor 204, 1 kByte Befehlsspeicher und 4 kByte Da
tenspeicher für den Vektorprozessor 206 und einen gemeinsam
genutzten integrierten Befehls- und Daten-Cache-ROM-Speicher
mit einer Kapazität von 16 kByte für den Steuerprozessor 204
und den Vektorprozessor 206 auf. Das Cache-Untersystem 208
ist über 32-Bit-Datenbusse mit dem Steuerprozessor 204 und
über 128-Bit-Datenbusse mit dem Vektorprozessor 206 verbun
den. Der Cache-ROM-Speicher 218 weist µROM-Initialisierungs
software, Selbsttestdiagnosesoftware, verschiedene Systemma
nagementsoftware, Bibliothekroutinen und einen Cache-
Speicher für ausgewähle Befehle und Konstantdaten auf. Ins
besondere weist der Cache-ROM-Speicher 218 eine Befehlsaus
nahmeverarbeitungseinrichtung und Eingabe- und Ausgabegerät
unterbrechungsverarbeitungseinrichtungen 0, 1, 2 und 3 für
den Steuerprozessor 204 auf. Der Cache-ROM-Speicher 218
weist außerdem eine Vektorprozessorunterbrechungsverarbei
tungseinrichtung und eine Vektorprozessorfixpunktausnahme
verarbeitungseinrichtung auf, die im Steuerprozessor 204
ausgeführt werden.
Der FBUS 210 ist mit mehreren FBUS-Peripherie
einrichtungen verbunden, wie beispielsweise einer 32-Bit-
PCI-Busschnittstelle 220, einer 64-Bit-SDRAM-Speichersteu
erungseinrichtung 222, einer 8-Kanal-DMA-Steuerungs
einrichtung 224, einem Benutzer-ASIC-Logikbock 226 und einer
Speicherdatenübertragungseinrichtung 228. Die PCI-Bus
schnittstelle 220 ist mit dem Systembus 106 verbunden und
arbeitet beispielsweise mit 33 MHz. Der Benutzer-ASIC-
Logikblock 226 weist eine Steuerlogik auf, um eine gewünsch
te kundenspezifische Funktionsvielfalt bereitzustellen. Der
Benutzer-ASIC-Logikblock 226 weist bei einer Ausführungsform
10 KGatter auf, einschließlich Schnittstellen zu verschiede
nen analogen Codecs und kundenspezifischen Ein-Ausgabe
geräten. Die Speicherdatenübertragungseinrichtung 228 über
trägt DMA-Daten vom Hostprozessor 102 zum SDRAM-Speicher
230, der unabhängig vom Multimedia-Signalprozessor 104 ist.
Der Ein-Ausgabe-Bus 212 ist mit mehreren Ein-Ausgabe-
Busvorrichtungen verbunden, einschließlich beispielsweise
einem Bitstromprozessor 232, einer seriellen UART-Leitung
234, einer Zeitgeberschaltung 236, einer Unterbrechungs
steuerungseinrichtung 238 und einem Spezialregister 240. Der
Bitstromprozessor 232 verarbeitet den Videobitstrom. Das
Spezialregister 240 wird für softwaregesteuerte Initialisie
rungs- und Unterbrechungsverarbeitungen verwendet.
Fig. 8 zeigt ein schematisches Blockdiagramm der Soft
ware- und Firmwarearchitektur 800 des Multimedia-Signal
prozessors 104 mit einer MSP-Systemkomponentensoftware 802,
die im Multimedia-Signalprozessor 104 ausgeführt wird, und
PC-Anwendungs- und Betriebssystemsoftware 808, die im Host
prozessor 102 ausgeführt wird. Der Multimedia-Signal
prozessor 104 wird durch Firmware gesteuert, die eine vekto
risierte DSP-Firmwarebibliothek 804, die im Vektorprozessor
206 verarbeitet wird, und einen Systemmanagementfunktions
block 806 aufweist, der im Steuerprozessor 204 verarbeitet
wird. Die vektorisierte DSP-Firmwarebibliothek 804 und der
Systemmanagementfunktionsblock 806 sind in der MSP-System
komponentensoftware 802 enthalten. Durch die Architek
tur 800 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 802 wird ausschließ
lich im Steuerprozessor 204 verarbeitet und weist einen MSP-Echt
zeitkern 810, ein Multimedia-Bibliothekmodul 812, den
Systemmanagementfunktionsblock 806 und die vektorisierte
DSP-Firmwarebibliothek 804 auf. Der MSP-Echtzeitkern 810,
ist typischerweise verantwortlich für eine Verbindung zum
Hostprozessor 102, Ressourcenmanagement, Ein-Ausgabegerät
handhabung und den größten Teil der Unterbrechungs- und Aus
nahmeverarbeitung. Der MSP-Echtzeitkern 810 weist Software
für eine Kombination mit WindowsTM- und Windows NTTM-Software
auf, die im Host-Prozessor 102 verarbeitet wird. Der MSP-Echt
zeitkern 810 weist außerdem Software zum Auswählen und
Herunterladen ausgewählter Anwendungsfirmware vom Hostpro
zessor 102, Software zum Festlegen oder Organisieren von
Tasks oder Aufgaben für eine Verarbeitung im Steuerprozessor
204 und im Vektorprozessor 206 und Software zum Handhaben
von Systemressourcen des Multimedia-Signalprozessors 104
einschließlich Speicher- und Ein-Ausgabegeräten auf. Der
MSP-Echtzeitkern 810 weist Software zum Synchronisieren der
Kommunikation zwischen Tasks oder Aufgaben des Multimedia-
Signalprozessors 104 und Software zum Melden MSP-bezogener
Unterbrechungs-, Ausnahme- und Zustands- oder Statusbedin
gungen auf.
Die vektorisierte DSP-Firmwarebibliothek 804 führt im
wesentlichen alle Digitalsignalverarbeitungsfunktionen aus.
Die vektorisierte DSP-Firmwarebibliothek 804 steuert außer
dem spezielle Unterbrechungen, z. B. eine Coprozessorunter
brechung, die vom Steuerprozessor 204 an den Vektorprozessor
206 ausgegeben wird, oder eine Hardwarestapelüberlauf
ausnahme, die im Vektorprozessor 206 erzeugt wird.
Das Multimedia-Bibliothekmodul 812 führt Kommunikati
onsverarbeitungsfunktionen einschließlich Datenkommunikati
on, MPEG-Video- und Audiofunktionen, Sprachcodierung und
-synthese, SoundBlasterTM-kompatible Audiofunktionen und ähn
liche Funktionen aus. Der MSP-Echtzeitkern 810 ist ein robu
stes, preemptives Echtzeit-Multitasking-Betriebssystem mit
Erweiterungen, durch die die im Multimedia-Signalprozessor
104 verarbeiteten Multimediaanwendungen erleichtert werden.
Die PC-Anwendungs- und Betriebssystemsoftware 808, die
im Hostprozessor 102 ausgeführt wird, steuert den Multime
dia-Signalprozessor 104 durch Lesen und Schreiben von MSP-Steuer- und
-Statusregistern über den Systembus 106 und
Schreiben in gemeinsame Datenstrukturen, die resident sind
für den Systemspeicher 116 und resident für den Multimedia-
Signalprozessor 104.
Die MSP-Programmausführung beginnt mit dem Steuerpro
zessor 204, der einen ersten Ausführungs- oder Verarbei
tungsstrom ausführt. Der Steuerprozessor 204 kann einen
zweiten unabhängigen Verarbeitungsstrom im Vektorprozessor
206 einleiten. Die Operationen des Steuerprozessors 204 und
des Vektorprozessors 206 werden durch bestimmte Coprozessor
befehle synchronisiert, die im Steuerprozessor 204 ausge
führt werden und STARTVP-, INTVP- und TESTVP-Befehle ein
schließen, und spezielle Befehle, die im Vektorprozessor 206
ausgeführt werden und VJOIN- und VINT-Befehle einschließen.
Die Datenübertragung zwischen dem Steuerprozessor 204 und
dem Vektorprozessor 206 wird unter Verwendung von im Steuer
prozessor 204 ausgeführten Datenübertragungsbefehlen ausge
führt.
Nach dem Einschalten tritt der Multimedia-Signal
prozessor 104 automatisch in einen Selbsttestablauf ein, um
die vollständige Funktionsfähigkeit oder -vielfalt zu te
sten. Der Selbsttestablauf weist die Initialisierung aller
Register des Multimedia-Signalprozessors 104 und die Ausfüh
rung einer chipbezogenen Selbsttestdiagnose auf, um die
Funktionsfähigkeit von Komponenten des Multimedia-Signalpro
zessors 104 zu verifizieren. Am Ende des Selbsttestablaufs
führt der Multimedia-Signalprozessor 104 MSP-Systemkomponen
tensoftware 802 aus, durch die MSP-Initialisierungssoftware
geladen und ausgeführt und der MSP-Echtzeitkern 810 geladen
und ausgeführt wird. Der Multimedia-Signalprozessor 104 un
terstützt drei Arten von Rücksetzoperationen, einschließlich
eines hardwaregesteuerten Systemrücksetzvorgangs durch den
PCI-Bus, eines softwaregesteuerten Systemrücksetzvorgangs
durch das PCI-Systemrücksetzbit im MSP-Steuerregister und
eines softwaregesteuerten Neustartvorgangs durch den Steuer
prozessor 204 und ein Vektorneustartbit im MSP-Steuer
register.
Fig. 9 zeigt ein Ablaufdiagramm zum Darstellen von
Operationen, die die Unterbrechungs- und Ausnahmeverarbei
tung im Multimedia-Mehrprozessorsystem 100 betreffen.
Der Vektorprozessor 206 führt sehr begrenzte Steuer- und
Managementfunktionen im Multimedia-Mehrprozessorsystem
100 aus. Insbesondere weist der Vektorprozessor 206, obwohl
der Vektorprozessor 206 Ausnahmen erzeugt, keine Funktion
zum Verarbeiten von Ausnahmen auf. Statt dessen werden Aus
nahmen und eine Rücksetzinitialisierung durch den Steuerpro
zessor 204 verarbeitet. Außerdem kann der Steuerprozessor
204 nur dann aus dem Vektorprozessor 206 auslesen oder in
den Vektorprozessor schreiben, wenn der Vektorprozessor 206
auf den Ruhezustand eingestellt ist. Daher arbeitet der
Steuerprozessor 204 als steuernder Prozessor, und der Vek
torprozessor 206 arbeitet als durch den steuernden Prozessor
gesteuerter Prozessor.
Das Multimedia-Mehrprozessorsystem 100 weist mehrere
Prozessoren auf, die in dem Sinne asymmetrisch sind, daß der
Vektorprozessor 206 und der Steuerprozessor 204 wechselsei
tig verschiedene Steuerungs- und Datenverarbeitungskenngrö
ßen aufweisen. Die asymmetrischen Prozessoren werden durch
ein einziges Betriebssystem gesteuert. Der Vektorprozessor 206
und der Steuerprozessor 204 weisen wechselseitig vonein
ander unabhängige Befehlsvorräte auf. Im Multimedia-
Mehrprozessorsystem 100 wird eine Mehrprozessorarchitektur
definition von Unterbrechungs- und Ausnahmeverarbeitungen
verwendet, wobei der Vektorprozessor 206 einen großen Ma
schinenzustand oder einen großen Kontext und eine große Da
tenbreite und viele Register aufweist. Gemäß einer als Bei
spiel dienenden Ausführungsform weist der Vektorprozessor
206 eine 288-Bit-Datenbreite mit 64 288-Bit-Vektorregistern,
über 80 32-Bit-Skalarregistern und 4 kByte Notizblockspei
cher auf. Der große Maschinenzustand des Vektorprozessors
206 weist eine relativ große Anzahl von Registern auf, wobei
die Register eine relativ große Anzahl von Bits aufweisen.
Der Vektorprozessor 206 ist hocheffizient zum Verarbeiten
großer Datenstrukturen, wie beispielsweise Matrizen oder
Vektoren, jedoch nicht optimiert zum Verarbeiten kleiner Da
tenstrukturen, wie beispielsweise Bits und Flags. Daher
weist der Vektorprozessor 206 Schaltungen zum Erfassen von
Ausnahmen auf, ist jedoch bezüglich Unterbrechungs- und Aus
nahmeverarbeitungsoperationen dem Steuerprozessor 204 unter
geordnet. Der Steuerprozessor 204 weist einen kleinen Ma
schinenzustand und eine kleine Datenbreite auf, z. B. 16 oder
32 Bit, was vorteilhaft ist, um Betriebssystemprogramme aus
zuführen, z. B. Unterbrechungs- und Ausnahmeverarbeitungen,
weil bei Steuerprogrammen typischerweise das Überwachen und
Steuern einzelner Flags und Zeiger vorgesehen ist.
Der Vektorprozessor 206 erfaßt eine Ausnahmebedingung
und überträgt, anstatt diese zu verarbeiten, ein Unterbre
chungssignal an den Steuerprozessor 204 und tritt in einen
Ruhezustand ein und bleibt im Ruhezustand, bis die Bedingun
gen oder Quellen, die den Ausnahmezustand verursacht haben,
durch Operationen des Steuerprozessors 204 verarbeitet wer
den. Die Steuerung des Multimedia-Mehrprozessorsystems 100
ist vereinfacht, weil Ausnahme- und Unterbrechungssteue
rungsoperationen nicht koordiniert werden müssen, weil alle
Steuerungsoperationen ausschließlich durch den Steuerprozes
sor 204 ausgeführt werden.
Der Vektorprozessor 206 wird in einem Ausführungszu
stand (VP_RUN) und in einem Ruhezustand (VP_IDLE) betrieben,
die gemäß der MSP-Architektur definiert sind, um jeweils an
zuzeigen, ob der Vektorprozessor 206 eine Verarbeitung aus
führt oder die Verarbeitung auf unbestimmte Zeit unterbro
chen hat. Beim Rücksetzen 902 des Multimedia-Mehrprozessor
systems 100 tritt der Vektorprozessor 206 in den VP_IDLE-Zu
stand 904 ein. Während des VP_IDLE-Zustands kann der Steu
erprozessor 204 nur ein Register 906 im Vektorprozessor 206
lesen oder schreiben. Ergebnisse einer Lese- oder einer
Schreiboperation, die durch den Steuerprozessor 204 bezüg
lich eines Registers des Vektorprozessors 206 ausgeführt
werden, wenn der Vektorprozessor 206 auf den VP_RUN-Zustand
eingestellt ist, sind "begrenzt undefiniert". Ein Ergebnis
"begrenzt undefiniert" bezeichnet einen Zustand des Multime
dia-Mehrprozessorsystems 100, der durch eine beliebige Be
fehlsfolge im Multimedia-Signalprozessor 104 erzeugt werden
kann. Daher sind Lese- und Schreibzugriffe der Register im
Vektorprozessor 206 durch den Steuerprozessor 204 nur er
laubt, wenn der Vektorprozessor 206 auf den VP_IDLE-Zustand
eingestellt ist.
Der Steuerprozessor 204 initialisiert Register 908 im
Vektorprozessor 206. Nach dem Initialisieren der Register im
Vektorprozessor 206 auf einen ausgewählten Zustand führt
der Steuerprozessor 204 einen STARTVP-Befehl 910 aus, um den
Zustand des Vektorprozessors 206 auf den VP_RUN-Zustand 911
zu ändern.
Wenn der Vektorprozessor 206 auf eine Ausnahmebedingung
912 trifft, tritt der Vektorprozessor 206 in den VP_IDLE-Zu
stand 914 ein und übermittelt dem Steuerprozessor 204 eine
Unterbrechungsanforderung 916. Der Vektorprozessor 206
bleibt auf den VP_IDLE-Zustand eingestellt, bis der Steuer
prozessor 204 einen anderen STARTVP-Befehl 918 ausführt. Der
Steuerprozessor bestimmt die Art der übermittelten Ausnahme
bedingung 920 durch Lesen von Registern im Vektorprozessor
206 und verarbeitet die Ausnahme auf eine vorgegebene Weise.
Der Steuerprozessor 204 reinitialisiert 924, falls ge
wünscht, Register im Vektorprozessor 206 und veranlaßt die
Wiederaufnahme der Verarbeitung 926 des Vektorprozessors
206.
Der Vektorprozessor 206 ist effizienter zum Speichern
und Umspeichern oder Wiederherstellen von Registern im Vek
torprozessor 206 als der Steuerprozessor 204. Daher werden
Leistungsvorteile erzielt, wenn der Steuerprozessor 204 den
Vektorprozessor 206 so programmiert, daß er während Kontext
schaltoperationen Registerspeicher- und -wiederherstellungs-
Operationen ausführt. Eine vorteilhafte Kontextschaltopera
tion ist ausführlich in der bereits genannten US-Patent
anmeldung Nr. 08/699,280 beschrieben.
Der Vektorprozessor 206 tritt beim Rücksetzen, und wenn
eine Ausnahmebedingung erfaßt wird, in den VP_IDLE-Zustand
ein, um die Systemgestaltung und -programmierung zu erleich
tern und die Synchronisation des Prozessors beim Rücksetzen
des Systems zu vereinfachen. Ausnahmebedingungen treten ty
pischerweise selten auf, so daß die Unterbrechungsverarbei
tung des Vektorprozessors 206 wesentlich vereinfacht wird,
ohne die Funktionsvielfalt oder Leistungsfähigkeit des Vek
torprozessors 206 wesentlich zu reduzieren. Außerdem wird
die Ansprechfunktion für Ausnahmebedingungen allgemein als
Merkmal von begrenzter Bedeutung betrachtet. Beispielsweise
weisen viele in Echtzeit ausgeführte herkömmliche Anwen
dungsprogramme, z. B. Multimedia-Anwendungsprogramme, eine
Programmierung auf, bei der die Ansprechfunktion für Ausnah
meereignisse in einem Echtzeit-Betriebsmodus deaktiviert
ist. Gemäß einem anderen Beispiel wird bei einigen herkömm
lichen Anwendungsprogrammen ein Sättigungsmodus verwendet,
um arithmetische oder Unterlauf- oder Bereichsunterschrei
tungsbedingungen während einer Echtzeit-Arithmetikverarbei
tung zu vermeiden.
Die Erfindung wurde unter Bezug auf verschiedene Aus
führungsformen beschrieben, wobei diese Ausführungsformen
lediglich zur Darstellung dienen und der Umfang der Erfin
dung nicht darauf beschränkt ist. Es können viele Änderun
gen, Modifikationen, Zusätze und Verbesserungen bezüglich
der beschriebenen Ausführungsformen vorgenommen werden. Bei
spielsweise sind die Ausführungsformen als Systeme beschrie
ben, bei denen ein Mehrprozessorsystem mit einem Pentium-
Hostcomputer und einem besonderen Multimedia-Prozessor ver
wendet wird. In anderen Ausführungsformen können andere Pro
zessorkonfigurationen verwendet werden.
Claims (25)
1. Computersystem mit:
mehreren wechselseitig gekoppelten Prozessoren einschließlich Prozessoren mit wechselseitig verschie denen Steuer- und Datenverarbeitungskenngrößen;
einem gemeinsamen Betriebssystem zum Steuern der mehreren Prozessoren;
einer Unterbrechungs- und Ausnahmeverarbeitungs einrichtung, die Verarbeitungen in Verbindung mit dem Betriebssystem ausführt, mit:
einem bezüglich einem ersten Prozessor der mehre ren Prozessoren arbeitenden Unterbrechungs- und Ausnah medetektor zum Erfassen von Unterbrechungs- und Ausnah mebedingungen des ersten Prozessors; und
einer bezüglich einem zweiten Prozessor der mehre ren Prozessoren arbeitenden Unterbrechungs- und Ausnah meverarbeitungseinrichtung zum Erfassen von Unterbre chungs- und Ausnahmebedingungen des ersten Prozessors und zum kombinierten Verarbeiten der Unterbrechungs- und Ausnahmebedingungen des ersten Prozessors und des zweiten Prozessors.
mehreren wechselseitig gekoppelten Prozessoren einschließlich Prozessoren mit wechselseitig verschie denen Steuer- und Datenverarbeitungskenngrößen;
einem gemeinsamen Betriebssystem zum Steuern der mehreren Prozessoren;
einer Unterbrechungs- und Ausnahmeverarbeitungs einrichtung, die Verarbeitungen in Verbindung mit dem Betriebssystem ausführt, mit:
einem bezüglich einem ersten Prozessor der mehre ren Prozessoren arbeitenden Unterbrechungs- und Ausnah medetektor zum Erfassen von Unterbrechungs- und Ausnah mebedingungen des ersten Prozessors; und
einer bezüglich einem zweiten Prozessor der mehre ren Prozessoren arbeitenden Unterbrechungs- und Ausnah meverarbeitungseinrichtung zum Erfassen von Unterbre chungs- und Ausnahmebedingungen des ersten Prozessors und zum kombinierten Verarbeiten der Unterbrechungs- und Ausnahmebedingungen des ersten Prozessors und des zweiten Prozessors.
2. Computersystem nach Anspruch 1, wobei:
der zweite Prozessor ein Steuerprozessor mit einer definierten Datenwegbreite ist; und
der erste Prozessor ein Vektorprozessor mit einer Datenwegbreite ist, die wesentlich größer ist als die Datenwegbreite des zweiten Prozessors.
der zweite Prozessor ein Steuerprozessor mit einer definierten Datenwegbreite ist; und
der erste Prozessor ein Vektorprozessor mit einer Datenwegbreite ist, die wesentlich größer ist als die Datenwegbreite des zweiten Prozessors.
3. Computersystem nach Anspruch 1 oder 2, wobei:
der bezüglich dem ersten Prozessor der mehreren Prozessoren arbeitende Unterbrechungs- und Ausnahmede tektor den ersten Prozessor in Antwort auf eine erfaßte Ausnahme deaktiviert und auf einen Ruhezustand ein stellt.
der bezüglich dem ersten Prozessor der mehreren Prozessoren arbeitende Unterbrechungs- und Ausnahmede tektor den ersten Prozessor in Antwort auf eine erfaßte Ausnahme deaktiviert und auf einen Ruhezustand ein stellt.
4. Computersystem nach Anspruch 1, 2 oder 3, wobei:
der zweite Prozessor Lese- und Schreibzugriff auf Steuer- und Statusregister des ersten Prozessors hat.
der zweite Prozessor Lese- und Schreibzugriff auf Steuer- und Statusregister des ersten Prozessors hat.
5. Computersystem nach Anspruch 4, wobei:
der bezüglich dem ersten Prozessor der mehreren Prozessoren arbeitende Unterbrechungs- und Ausnahmede tektor den ersten Prozessor in Antwort auf eine erfaßte Ausnahme deaktiviert und auf einen Ruhezustand ein stellt; und
der zweite Prozessor auf einen Lese- und Schreib zugriff auf Steuer- und Statusregister des ersten Pro zessors beschränkt ist, wenn der erste Prozessor auf den Ruhezustand eingestellt ist.
der bezüglich dem ersten Prozessor der mehreren Prozessoren arbeitende Unterbrechungs- und Ausnahmede tektor den ersten Prozessor in Antwort auf eine erfaßte Ausnahme deaktiviert und auf einen Ruhezustand ein stellt; und
der zweite Prozessor auf einen Lese- und Schreib zugriff auf Steuer- und Statusregister des ersten Pro zessors beschränkt ist, wenn der erste Prozessor auf den Ruhezustand eingestellt ist.
6. Computersystem mit:
mehreren wechselseitig gekoppelten Prozessoren einschließlich Prozessoren mit wechselseitig verschie denen Steuer- und Datenverarbeitungskenngrößen;
einem gemeinsamen Betriebssystem zum Steuern der mehreren Prozessoren;
einer Unterbrechungs- und Ausnahmeverarbeitungs einrichtung, die Verarbeitungen in Verbindung mit dem Betriebssystem ausführt, mit:
einem bezüglich einem ersten Prozessor der mehre ren Prozessoren arbeitenden Unterbrechungs- und Ausnah medetektor zum Erfassen von Unterbrechungs- und Ausnah mebedingungen des ersten Prozessors, wobei der Unter brechungs- und Ausnahmedetektor den ersten Prozessor in Antwort auf eine erfaßte Ausnahme deaktiviert und auf einen Ruhezustand einstellt.
mehreren wechselseitig gekoppelten Prozessoren einschließlich Prozessoren mit wechselseitig verschie denen Steuer- und Datenverarbeitungskenngrößen;
einem gemeinsamen Betriebssystem zum Steuern der mehreren Prozessoren;
einer Unterbrechungs- und Ausnahmeverarbeitungs einrichtung, die Verarbeitungen in Verbindung mit dem Betriebssystem ausführt, mit:
einem bezüglich einem ersten Prozessor der mehre ren Prozessoren arbeitenden Unterbrechungs- und Ausnah medetektor zum Erfassen von Unterbrechungs- und Ausnah mebedingungen des ersten Prozessors, wobei der Unter brechungs- und Ausnahmedetektor den ersten Prozessor in Antwort auf eine erfaßte Ausnahme deaktiviert und auf einen Ruhezustand einstellt.
7. Computersystem nach Anspruch 6, wobei die Unterbre
chungs- und Ausnahmeverarbeitungseinrichtung ferner
aufweist:
eine bezüglich einem zweiten Prozessor der mehre ren Prozessoren arbeitende Unterbrechungs- und Ausnah meverarbeitungseinrichtung zum Steuern einer Unterbre chungs- und Ausnahmereaktionsverarbeitung des ersten Prozessors.
eine bezüglich einem zweiten Prozessor der mehre ren Prozessoren arbeitende Unterbrechungs- und Ausnah meverarbeitungseinrichtung zum Steuern einer Unterbre chungs- und Ausnahmereaktionsverarbeitung des ersten Prozessors.
8. Computersystem nach Anspruch 7, wobei:
der zweite Prozessor ein Steuerprozessor mit einer definierten Datenwegbreite ist; und
der erste Prozessor ein Vektorprozessor mit einer Datenwegbreite ist, die wesentlich größer ist als die Datenwegbreite des zweiten Prozessors.
der zweite Prozessor ein Steuerprozessor mit einer definierten Datenwegbreite ist; und
der erste Prozessor ein Vektorprozessor mit einer Datenwegbreite ist, die wesentlich größer ist als die Datenwegbreite des zweiten Prozessors.
9. Computersystem mit:
mehreren wechselseitig gekoppelten Prozessoren einschließlich Prozessoren mit wechselseitig verschie denen Steuer- und Datenverarbeitungskenngrößen;
einem gemeinsamen Betriebssystem zum Steuern der mehreren Prozessoren;
einer Unterbrechungs- und Ausnahmeverarbeitungs einrichtung, die Verarbeitungen in Verbindung mit dem Betriebssystem bezüglich einem ersten Prozessor und ei nem zweiten Prozessor der mehreren Prozessoren aus führt, wobei der zweite Prozessor Lese- und Schreibzu griff auf Steuer- und Statusregister des ersten Prozes sors hat.
mehreren wechselseitig gekoppelten Prozessoren einschließlich Prozessoren mit wechselseitig verschie denen Steuer- und Datenverarbeitungskenngrößen;
einem gemeinsamen Betriebssystem zum Steuern der mehreren Prozessoren;
einer Unterbrechungs- und Ausnahmeverarbeitungs einrichtung, die Verarbeitungen in Verbindung mit dem Betriebssystem bezüglich einem ersten Prozessor und ei nem zweiten Prozessor der mehreren Prozessoren aus führt, wobei der zweite Prozessor Lese- und Schreibzu griff auf Steuer- und Statusregister des ersten Prozes sors hat.
10. Computersystem nach Anspruch 9, wobei die Unterbre
chungs- und Ausnahmeverarbeitungseinrichtung ferner
aufweist:
einen bezüglich dem ersten Prozessor arbeitenden Unterbrechungs- und Ausnahmedetektor zum Erfassen von Unterbrechungs- und Ausnahmebedingungen des ersten Pro zessors.
einen bezüglich dem ersten Prozessor arbeitenden Unterbrechungs- und Ausnahmedetektor zum Erfassen von Unterbrechungs- und Ausnahmebedingungen des ersten Pro zessors.
11. Computersystem nach Anspruch 9 oder 10, wobei die Un
terbrechungs- und Ausnahmeverarbeitungseinrichtung fer
ner aufweist:
eine bezüglich dem zweiten Prozessor arbeitende Unterbrechungs- und Ausnahmeverarbeitungseinrichtung zum kombinierten Erfassen von Unterbrechungs- und Aus nahmebedingungen des ersten Prozessors und zum Verar beiten der Unterbrechungs- und Ausnahmebedingungen des zweiten Prozessors.
eine bezüglich dem zweiten Prozessor arbeitende Unterbrechungs- und Ausnahmeverarbeitungseinrichtung zum kombinierten Erfassen von Unterbrechungs- und Aus nahmebedingungen des ersten Prozessors und zum Verar beiten der Unterbrechungs- und Ausnahmebedingungen des zweiten Prozessors.
12. Computersystem nach Anspruch 9, wobei:
der zweite Prozessor ein Steuerprozessor mit einer definierten Datenwegbreite ist; und
der erste Prozessor ein Vektorprozessor mit einer Datenwegbreite ist, die wesentlich größer ist als die Datenwegbreite des zweiten Prozessors.
der zweite Prozessor ein Steuerprozessor mit einer definierten Datenwegbreite ist; und
der erste Prozessor ein Vektorprozessor mit einer Datenwegbreite ist, die wesentlich größer ist als die Datenwegbreite des zweiten Prozessors.
13. Computersystem nach Anspruch 9, wobei:
der bezüglich dem ersten Prozessor der mehreren Prozessoren arbeitende Unterbrechungs- und Ausnahmede tektor den ersten Prozessor in Antwort auf eine erfaßte Ausnahme deaktiviert und auf einen Ruhezustand ein stellt; und
der zweite Prozessor auf einen Lese- und Schreib zugriff auf Steuer- und Statusregister des ersten Pro zessors beschränkt ist, wenn der erste Prozessor auf den Ruhezustand eingestellt ist.
der bezüglich dem ersten Prozessor der mehreren Prozessoren arbeitende Unterbrechungs- und Ausnahmede tektor den ersten Prozessor in Antwort auf eine erfaßte Ausnahme deaktiviert und auf einen Ruhezustand ein stellt; und
der zweite Prozessor auf einen Lese- und Schreib zugriff auf Steuer- und Statusregister des ersten Pro zessors beschränkt ist, wenn der erste Prozessor auf den Ruhezustand eingestellt ist.
14. Verfahren zum Verarbeiten von Unterbrechungen und Aus
nahmen in einem Computersystem mit asymmetrischen Pro
zessoren, mit den Schritten:
Betreiben eines ersten Prozessors der asymmetri schen Prozessoren als einen gesteuerten Prozessor;
Betreiben eines zweiten Prozessors der asymmetri schen Prozessoren als einen steuernden Prozessor;
Erfassen einer Ausnahmebedingung des gesteuerten Prozessors;
Übertragen eines die Ausnahmebedingung des gesteu erten Prozessors anzeigenden Ausnahmeanforderungs signals vom gesteuerten Prozessor an den steuernden Prozessor;
Einstellen eines Ruhezustands des gesteuerten Pro zessors in Antwort auf die Ausnahmebedingung; und
Betreiben des steuernden Prozessors zum Verarbei ten der Ausnahmebedingung des gesteuerten Prozessors.
Betreiben eines ersten Prozessors der asymmetri schen Prozessoren als einen gesteuerten Prozessor;
Betreiben eines zweiten Prozessors der asymmetri schen Prozessoren als einen steuernden Prozessor;
Erfassen einer Ausnahmebedingung des gesteuerten Prozessors;
Übertragen eines die Ausnahmebedingung des gesteu erten Prozessors anzeigenden Ausnahmeanforderungs signals vom gesteuerten Prozessor an den steuernden Prozessor;
Einstellen eines Ruhezustands des gesteuerten Pro zessors in Antwort auf die Ausnahmebedingung; und
Betreiben des steuernden Prozessors zum Verarbei ten der Ausnahmebedingung des gesteuerten Prozessors.
15. Verfahren nach Anspruch 14, ferner mit den Schritten:
Erfassen eines Rücksetzzustands des Computersy stems; und
Veranlassen eines Ruhezustands des gesteuerten Prozessors in Antwort auf das Rücksetzen des Computer systems.
Erfassen eines Rücksetzzustands des Computersy stems; und
Veranlassen eines Ruhezustands des gesteuerten Prozessors in Antwort auf das Rücksetzen des Computer systems.
16. Verfahren nach Anspruch 15, wobei der Schritt zum Be
treiben des steuernden Prozessors zum Verarbeiten der
Ausnahmebedingung des gesteuerten Prozessors ferner die
Schritte aufweist:
Betreiben des steuernden Prozessors zum Initiali sieren der Register des gesteuerten Prozessors, wenn der gesteuerte Prozessor in Antwort auf das Unterbre chungsanforderungssignal vom gesteuerten Prozessor auf den Ruhezustand eingestellt ist; und
Betreiben des steuernden Prozessors zum Ausführen eines Befehls zum Aktivieren des gesteuerten Prozessors auf einen Verarbeitungszustand, wenn die Register des gesteuerten Prozessors initialisiert sind.
Betreiben des steuernden Prozessors zum Initiali sieren der Register des gesteuerten Prozessors, wenn der gesteuerte Prozessor in Antwort auf das Unterbre chungsanforderungssignal vom gesteuerten Prozessor auf den Ruhezustand eingestellt ist; und
Betreiben des steuernden Prozessors zum Ausführen eines Befehls zum Aktivieren des gesteuerten Prozessors auf einen Verarbeitungszustand, wenn die Register des gesteuerten Prozessors initialisiert sind.
17. Verfahren nach Anspruch 16, wobei der Schritt zum Be
treiben des steuernden Prozessors zum Verarbeiten der
Ausnahmebedingung des gesteuerten Prozessors ferner die
Schritte aufweist:
Betreiben des steuernden Prozessors zum Lesen von Registerinformationen vom gesteuerten Prozessor;
Bestimmen einer Art der Ausnahme basierend auf den Registerinformationen; und
Betreiben des steuernden Prozessors zum Verarbei ten der Ausnahme basierend auf der Art der Ausnahme.
Betreiben des steuernden Prozessors zum Lesen von Registerinformationen vom gesteuerten Prozessor;
Bestimmen einer Art der Ausnahme basierend auf den Registerinformationen; und
Betreiben des steuernden Prozessors zum Verarbei ten der Ausnahme basierend auf der Art der Ausnahme.
18. Verfahren nach einem der Ansprüche 14 bis 17, ferner
mit den Schritten:
Betreiben des steuernden Prozessors zum Lesen und Schreiben von Registern des gesteuerten Prozessors, wenn der gesteuerte Prozessor auf den Ruhezustand ein gestellt ist.
Betreiben des steuernden Prozessors zum Lesen und Schreiben von Registern des gesteuerten Prozessors, wenn der gesteuerte Prozessor auf den Ruhezustand ein gestellt ist.
19. Verfahren nach einem der Ansprüche 14 bis 18, ferner
mit den Schritten:
Betreiben des steuernden Prozessors und des ge steuerten Prozessors unter Verwendung eines einzigen Betriebssystems; und
Ausführen wechselseitig unabhängiger Befehlssätze im steuernden Prozessor und im gesteuerten Prozessor.
Betreiben des steuernden Prozessors und des ge steuerten Prozessors unter Verwendung eines einzigen Betriebssystems; und
Ausführen wechselseitig unabhängiger Befehlssätze im steuernden Prozessor und im gesteuerten Prozessor.
20. Verfahren nach einem der Ansprüche 14 bis 19, wobei:
der gesteuerte Prozessor ein Vektorprozessor oder ein Datenprozessor mit einem großen Maschinenzustand und einer großen Datenbreite ist; und
der steuernde Prozessor ein Steuerprozessor mit einem Maschinenzustand und einer Datenbreite ist, die wesentlich kleiner sind als der Maschinenzustand und die Datenbreite des gesteuerten Prozessors.
der gesteuerte Prozessor ein Vektorprozessor oder ein Datenprozessor mit einem großen Maschinenzustand und einer großen Datenbreite ist; und
der steuernde Prozessor ein Steuerprozessor mit einem Maschinenzustand und einer Datenbreite ist, die wesentlich kleiner sind als der Maschinenzustand und die Datenbreite des gesteuerten Prozessors.
21. Multimedia-Computersystem mit:
einem Steuerprozessor;
einem mit dem Steuerprozessor gekoppelten Vektor- oder Datenprozessor, wobei der Vektor- oder Datenpro zessor im Vergleich zum Steuerprozessor einen großen Maschinenzustand und eine große Datenbreite aufweist;
einer zwischen dem Steuerprozessor und dem Vektor- oder Datenprozessor geschalteten Coprozessorschnitt stelle;
einem mit dem Vektor- oder Datenprozessor verbun denen Ausnahmedetektor zum Erfassen einer Ausnahmebe dingung und zum Übertragen einer Unterbrechungsanforde rung an den Steuerprozessor in Antwort auf die erfaßte Ausnahmebedingung und zum Deaktivieren des Vektor- oder Datenprozessors auf einen Ruhezustand; und
einer mit dem Steuerprozessor gekoppelten Ausnah meverarbeitungseinrichtung zum Empfangen der Unterbre chungsanforderung und zum Verarbeiten des Ausnahmezu stands des Vektor- oder Datenprozessors in Antwort auf die Unterbrechungsanforderung.
einem Steuerprozessor;
einem mit dem Steuerprozessor gekoppelten Vektor- oder Datenprozessor, wobei der Vektor- oder Datenpro zessor im Vergleich zum Steuerprozessor einen großen Maschinenzustand und eine große Datenbreite aufweist;
einer zwischen dem Steuerprozessor und dem Vektor- oder Datenprozessor geschalteten Coprozessorschnitt stelle;
einem mit dem Vektor- oder Datenprozessor verbun denen Ausnahmedetektor zum Erfassen einer Ausnahmebe dingung und zum Übertragen einer Unterbrechungsanforde rung an den Steuerprozessor in Antwort auf die erfaßte Ausnahmebedingung und zum Deaktivieren des Vektor- oder Datenprozessors auf einen Ruhezustand; und
einer mit dem Steuerprozessor gekoppelten Ausnah meverarbeitungseinrichtung zum Empfangen der Unterbre chungsanforderung und zum Verarbeiten des Ausnahmezu stands des Vektor- oder Datenprozessors in Antwort auf die Unterbrechungsanforderung.
22. Multimedia-Computersystem nach Anspruch 21, wobei die
Coprozessorschnittstelle aufweist:
mehrere Register, die durch den Steuerprozessor und den Vektor- oder Datenprozessor lesbar und be schreibbar sind;
einen Decodierer zum Decodieren von Befehlen des Befehlsvorrates des Steuerprozessors und zum Erfassen von Erweiterungsbefehlen, die durch die Coprozessor schnittstelle ausführbar sind; und
einen Zustandrechner zum Ausführen der Erweite rungsbefehle.
mehrere Register, die durch den Steuerprozessor und den Vektor- oder Datenprozessor lesbar und be schreibbar sind;
einen Decodierer zum Decodieren von Befehlen des Befehlsvorrates des Steuerprozessors und zum Erfassen von Erweiterungsbefehlen, die durch die Coprozessor schnittstelle ausführbar sind; und
einen Zustandrechner zum Ausführen der Erweite rungsbefehle.
23. Multimedia-Computersystem nach Anspruch 21 oder 22, wo
bei:
der Steuerprozessor und der Vektor- oder Datenpro zessor wechselseitig verschiedene Steuer- und Datenver arbeitungskenngrößen aufweisen.
der Steuerprozessor und der Vektor- oder Datenpro zessor wechselseitig verschiedene Steuer- und Datenver arbeitungskenngrößen aufweisen.
24. Multimedia-Computersystem nach Anspruch 23, wobei:
der Steuerprozessor eine definierte Datenbreite aufweist; und
der Vektor- oder Datenprozessor eine Datenwegbrei te aufweist, die wesentlich größer ist als die Daten wegbreite des Steuerprozessors.
der Steuerprozessor eine definierte Datenbreite aufweist; und
der Vektor- oder Datenprozessor eine Datenwegbrei te aufweist, die wesentlich größer ist als die Daten wegbreite des Steuerprozessors.
25. Multimedia-Computersystem nach einem der Ansprüche 21
bis 24, ferner mit:
einem mit dem Steuerprozessor verbundenen Hostpro zessor, wobei der Hostprozessor Programmcodes zum Steu ern von Operationen des Steuerprozessors aufweist.
einem mit dem Steuerprozessor verbundenen Hostpro zessor, wobei der Hostprozessor Programmcodes zum Steu ern von Operationen des Steuerprozessors aufweist.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US08/699,294 US6003129A (en) | 1996-08-19 | 1996-08-19 | System and method for handling interrupt and exception events in an asymmetric multiprocessor architecture |
Publications (1)
Publication Number | Publication Date |
---|---|
DE19735870A1 true DE19735870A1 (de) | 1998-03-19 |
Family
ID=24808708
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE19735870A Ceased DE19735870A1 (de) | 1996-08-19 | 1997-08-18 | System und Verfahren zum Verarbeiten von Unterbrechungs- und Ausnahmeereignissen in einer asymmetrischen Mehrprozessorarchitektur |
Country Status (7)
Country | Link |
---|---|
US (1) | US6003129A (de) |
JP (1) | JPH10154080A (de) |
KR (1) | KR100257520B1 (de) |
CN (1) | CN1176437B (de) |
DE (1) | DE19735870A1 (de) |
FR (1) | FR2752470B1 (de) |
TW (1) | TW358919B (de) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7080205B2 (en) | 2000-03-29 | 2006-07-18 | Fujitsu Siemens Computer Gmbh | Arrangement and method for reducing the processing time of a data processing device |
Families Citing this family (46)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6192073B1 (en) | 1996-08-19 | 2001-02-20 | Samsung Electronics Co., Ltd. | Methods and apparatus for processing video data |
US5850556A (en) * | 1996-12-26 | 1998-12-15 | Cypress Semiconductor Corp. | Interruptible state machine |
US6317638B1 (en) * | 1997-08-22 | 2001-11-13 | Honeywell Inc. | Multi-layer state machine for a hybrid real-time control system and method of operation thereof |
US6571206B1 (en) * | 1998-01-15 | 2003-05-27 | Phoenix Technologies Ltd. | Apparatus and method for emulating an I/O instruction for the correct processor and for servicing software SMI's in a multi-processor environment |
US6625693B2 (en) * | 1999-05-04 | 2003-09-23 | Intel Corporation | Fast exception processing |
DE50014621D1 (de) * | 1999-05-06 | 2007-10-18 | Siemens Ag | Kommunikationseinrichtung mit Mitteln zur Echtzeitverarbeitung von zu übertragenden Nutzdaten |
US7171547B1 (en) * | 1999-12-28 | 2007-01-30 | Intel Corporation | Method and apparatus to save processor architectural state for later process resumption |
DE10015693A1 (de) * | 2000-03-29 | 2001-10-18 | Fujitsu Siemens Computers Gmbh | Anordnung und Verfahren zur Reduzierung der Interruptverarbeitungszeit einer Datenverarbeitungseinrichtung |
US6704863B1 (en) * | 2000-06-14 | 2004-03-09 | Cypress Semiconductor Corp. | Low-latency DMA handling in pipelined processors |
JP2002108837A (ja) * | 2000-09-29 | 2002-04-12 | Nec Corp | 計算機システムとその計算制御方法 |
US20020099893A1 (en) * | 2001-01-24 | 2002-07-25 | Nguyen Tuyet-Huong Thi | System and method for the handling of system management interrupts in a multiprocessor computer system |
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 |
JP3843048B2 (ja) * | 2002-06-28 | 2006-11-08 | 富士通株式会社 | 分岐予測機構を有する情報処理装置 |
US7117284B2 (en) * | 2002-11-18 | 2006-10-03 | Arm Limited | Vectored interrupt control within a system having a secure domain and a non-secure domain |
GB0226905D0 (en) * | 2002-11-18 | 2002-12-24 | Advanced Risc Mach Ltd | Exception tyres within a secure processing system |
US20040215937A1 (en) * | 2003-04-23 | 2004-10-28 | International Business Machines Corporation | Dynamically share interrupt handling logic among multiple threads |
CA2430763A1 (en) | 2003-05-30 | 2004-11-30 | Ibm Canada Limited - Ibm Canada Limitee | Efficiently releasing locks when an exception occurs |
US7313790B2 (en) * | 2003-06-23 | 2007-12-25 | Intel Corporation | Methods and apparatus for preserving precise exceptions in code reordering by using control speculation |
US20050102457A1 (en) * | 2003-11-12 | 2005-05-12 | Dell Products L.P. | System and method for interrupt processing in a multiple processor system |
US7721024B2 (en) * | 2003-11-12 | 2010-05-18 | Dell Products L.P. | System and method for exiting from an interrupt mode in a multiple processor system |
US7529914B2 (en) * | 2004-06-30 | 2009-05-05 | Intel Corporation | Method and apparatus for speculative execution of uncontended lock instructions |
US7487503B2 (en) | 2004-08-12 | 2009-02-03 | International Business Machines Corporation | Scheduling threads in a multiprocessor computer |
US8020141B2 (en) | 2004-12-06 | 2011-09-13 | Microsoft Corporation | Operating-system process construction |
JP4148223B2 (ja) * | 2005-01-28 | 2008-09-10 | セイコーエプソン株式会社 | プロセッサおよび情報処理方法 |
JP2006243838A (ja) * | 2005-02-28 | 2006-09-14 | Toshiba Corp | プログラム開発装置 |
US8849968B2 (en) | 2005-06-20 | 2014-09-30 | Microsoft Corporation | Secure and stable hosting of third-party extensions to web services |
US7447874B1 (en) * | 2005-10-18 | 2008-11-04 | Qlogic, Corporation | Method and system for designing a flexible hardware state machine |
US8074231B2 (en) * | 2005-10-26 | 2011-12-06 | Microsoft Corporation | Configuration of isolated extensions and device drivers |
KR100807039B1 (ko) * | 2006-04-07 | 2008-02-25 | 주식회사 퓨쳐시스템 | 비대칭 다중 프로세싱 시스템 및 그 방법 |
US8032898B2 (en) * | 2006-06-30 | 2011-10-04 | Microsoft Corporation | Kernel interface with categorized kernel objects |
CN100449495C (zh) * | 2006-08-25 | 2009-01-07 | 华为技术有限公司 | 一种辅助cpu对芯片进行驱动的系统及方法 |
US20080244507A1 (en) * | 2007-03-30 | 2008-10-02 | Microsoft Corporation | Homogeneous Programming For Heterogeneous Multiprocessor Systems |
US8789063B2 (en) | 2007-03-30 | 2014-07-22 | Microsoft Corporation | Master and subordinate operating system kernels for heterogeneous multiprocessor systems |
DE102007025397B4 (de) * | 2007-05-31 | 2010-07-15 | Advanced Micro Devices, Inc., Sunnyvale | System mit mehreren Prozessoren und Verfahren zu seinem Betrieb |
JP2009251802A (ja) * | 2008-04-03 | 2009-10-29 | Panasonic Corp | マルチプロセッサシステムおよびマルチプロセッサシステムの割込み制御方法 |
KR101717494B1 (ko) * | 2010-10-08 | 2017-03-28 | 삼성전자주식회사 | 인터럽트 처리 장치 및 방법 |
US10110891B2 (en) * | 2011-09-29 | 2018-10-23 | Sharp Kabushiki Kaisha | Image decoding device, image decoding method, and image encoding device |
GB2495959A (en) * | 2011-10-26 | 2013-05-01 | Imagination Tech Ltd | Multi-threaded memory access processor |
WO2013106210A1 (en) * | 2012-01-10 | 2013-07-18 | Intel Corporation | Electronic apparatus having parallel memory banks |
US9405551B2 (en) * | 2013-03-12 | 2016-08-02 | Intel Corporation | Creating an isolated execution environment in a co-designed processor |
US20160147536A1 (en) * | 2014-11-24 | 2016-05-26 | International Business Machines Corporation | Transitioning the Processor Core from Thread to Lane Mode and Enabling Data Transfer Between the Two Modes |
CN107436752B (zh) * | 2017-07-20 | 2020-12-01 | 龙芯中科技术有限公司 | 异常现场恢复方法、装置及计算机可读存储介质 |
CN108037951B (zh) * | 2017-12-27 | 2020-11-20 | 山东师范大学 | 一种dtp处理器的中断快速切换方法及装置 |
CN108845969B (zh) * | 2018-03-28 | 2021-09-10 | 核工业理化工程研究院 | 适用于不完全对称多处理微控制器的操作控制方法及操作系统 |
GB2579617B (en) * | 2018-12-06 | 2021-01-27 | Advanced Risc Mach Ltd | An apparatus and method for handling exception causing events |
CN115167933B (zh) * | 2022-09-08 | 2022-12-02 | 深圳市恒运昌真空技术有限公司 | 一种双处理器设备及其控制方法和处理器 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5274825A (en) * | 1987-09-03 | 1993-12-28 | Bull Hn Information Systems Inc. | Microprocessor vectored interrupts |
US5182811A (en) * | 1987-10-02 | 1993-01-26 | Mitsubishi Denki Kabushiki Kaisha | Exception, interrupt, and trap handling apparatus which fetches addressing and context data using a single instruction following an interrupt |
JP2858140B2 (ja) * | 1988-10-19 | 1999-02-17 | アポロ・コンピューター・インコーポレーテッド | パイプラインプロセッサ装置および方法 |
US5218711A (en) * | 1989-05-15 | 1993-06-08 | Mitsubishi Denki Kabushiki Kaisha | Microprocessor having program counter registers for its coprocessors |
US5278647A (en) * | 1992-08-05 | 1994-01-11 | At&T Bell Laboratories | Video decoder using adaptive macroblock leak signals |
US5319753A (en) * | 1992-09-29 | 1994-06-07 | Zilog, Inc. | Queued interrupt mechanism with supplementary command/status/message information |
US5576765A (en) * | 1994-03-17 | 1996-11-19 | International Business Machines, Corporation | Video decoder |
US5510842A (en) * | 1994-05-04 | 1996-04-23 | Matsushita Electric Corporation Of America | Parallel architecture for a high definition television video decoder having multiple independent frame memories |
US5729279A (en) * | 1995-01-26 | 1998-03-17 | Spectravision, Inc. | Video distribution system |
US5594905A (en) * | 1995-04-12 | 1997-01-14 | Microsoft Corporation | Exception handler and method for handling interrupts |
US5668599A (en) * | 1996-03-19 | 1997-09-16 | International Business Machines Corporation | Memory management for an MPEG2 compliant decoder |
-
1996
- 1996-08-19 US US08/699,294 patent/US6003129A/en not_active Expired - Lifetime
-
1997
- 1997-04-07 KR KR1019970012760A patent/KR100257520B1/ko not_active IP Right Cessation
- 1997-08-14 JP JP9219649A patent/JPH10154080A/ja active Pending
- 1997-08-15 CN CN971160481A patent/CN1176437B/zh not_active Expired - Fee Related
- 1997-08-18 DE DE19735870A patent/DE19735870A1/de not_active Ceased
- 1997-08-18 FR FR9710437A patent/FR2752470B1/fr not_active Expired - Fee Related
- 1997-08-19 TW TW086111973A patent/TW358919B/zh not_active IP Right Cessation
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7080205B2 (en) | 2000-03-29 | 2006-07-18 | Fujitsu Siemens Computer Gmbh | Arrangement and method for reducing the processing time of a data processing device |
Also Published As
Publication number | Publication date |
---|---|
KR19980018067A (ko) | 1998-06-05 |
US6003129A (en) | 1999-12-14 |
FR2752470A1 (fr) | 1998-02-20 |
TW358919B (en) | 1999-05-21 |
JPH10154080A (ja) | 1998-06-09 |
CN1176437B (zh) | 2010-06-02 |
CN1176437A (zh) | 1998-03-18 |
FR2752470B1 (fr) | 1999-06-11 |
KR100257520B1 (ko) | 2000-06-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE19735870A1 (de) | System und Verfahren zum Verarbeiten von Unterbrechungs- und Ausnahmeereignissen in einer asymmetrischen Mehrprozessorarchitektur | |
DE19735869A1 (de) | System und Verfahren zum Verarbeiten von Softwareunterbrechungen durch Parameterübergabe | |
DE19735871A1 (de) | Verfahren zum effizienten Sicherstellen und Wiederherstellen von Kontext in einer Multitasking-Rechensystemumgebung | |
DE69631778T2 (de) | Flexible implementierung eines systemverwaltungsmodus in einem prozessor | |
DE69627807T2 (de) | Datenprozessor zum gleichzeitigen Dataladen und Durchführung einer multiplizier-addier Operation | |
US5481693A (en) | Shared register architecture for a dual-instruction-set CPU | |
DE602005005726T2 (de) | Verbreitung eines Thread-IDs in einem Multithreadpipelineprozessor | |
DE19681660C2 (de) | Verfahren zum Ausführen von Befehlssätzen, die Operationen an verschiedenen Datenarten und Register eines gemeinsamen logischen Registersatzes spezifizieren | |
DE69636861T2 (de) | Mikroprozessor mit Lade-/Speicheroperation zu/von mehreren Registern | |
KR100257516B1 (ko) | 멀티프로세서회로의 시뮬레이션을 위한 방법 및 장치 | |
DE3801361A1 (de) | Verfahren und einrichtung zum detektieren und fuer die spezialbehandlung von memory-mapped eingabe/ausgabereferenzen in einem pipelinemikroprozessor | |
DE19735348A1 (de) | Einzelbefehl-Mehrdaten-Verarbeitung unter Verwendung von mehreren Bänken von Vektorregistern | |
DE102012216565A1 (de) | Decodierzeit-computeranweisungsoptimierung | |
DE102007045496A1 (de) | Anweisung und Logik zum Bearbeiten von Textstrings | |
DE19735350A1 (de) | Einzelbefehl-Mehrdaten-Verarbeitung bei einem Multimedia-Signalprozessor | |
DE102012216592A1 (de) | Präfix-Computeranweisung zur Erweiterung der Anweisungsfunktionalität | |
DE112011100715T5 (de) | Hardware-hilfs-thread | |
DE10297581T5 (de) | Lade/Übertrage- und Duplizier-Anweisungen für einen Prozessor | |
WO2002033570A2 (en) | Digital signal processing apparatus | |
JP3707581B2 (ja) | 自己整合スタック・ポインタを有するデータ処理システムおよびその方法 | |
DE102012211978A1 (de) | Millicode-Steueroperation außerhalb der Reihenfolge | |
DE69632970T2 (de) | Mikroprozessor mit reduzierten Programmcodes | |
DE19735349A1 (de) | Einzelbefehl-Mehrdaten-Verarbeitung mit zusammengesetzten Skalar-/Vektoroperationen | |
EP0829048B1 (de) | Programmierbare vorrichtung und verfahren zum befehlsauffang | |
KR19980018071A (ko) | 멀티미디어 신호 프로세서의 단일 명령 다중 데이터 처리 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8110 | Request for examination paragraph 44 | ||
8125 | Change of the main classification |
Ipc: G06F 1324 |
|
8131 | Rejection |