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 Mehrprozessorarchitektur

Info

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
Application number
DE19735870A
Other languages
English (en)
Inventor
Seungyoon Peter Song
Moataz A Mohamed
Le Nguyen
Heon Chul Park
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of DE19735870A1 publication Critical patent/DE19735870A1/de
Ceased legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods 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/544Methods 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/5443Sum of products
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/17Interprocessor 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.
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.
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.
4. Computersystem nach Anspruch 1, 2 oder 3, wobei:
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
DE19735870A 1996-08-19 1997-08-18 System und Verfahren zum Verarbeiten von Unterbrechungs- und Ausnahmeereignissen in einer asymmetrischen Mehrprozessorarchitektur Ceased DE19735870A1 (de)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Cited By (1)

* Cited by examiner, † Cited by third party
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