DE68924546T2 - Verfahren und Vorrichtung zur Ausführung von Befehlen für ein Vektorverarbeitungssystem. - Google Patents

Verfahren und Vorrichtung zur Ausführung von Befehlen für ein Vektorverarbeitungssystem.

Info

Publication number
DE68924546T2
DE68924546T2 DE68924546T DE68924546T DE68924546T2 DE 68924546 T2 DE68924546 T2 DE 68924546T2 DE 68924546 T DE68924546 T DE 68924546T DE 68924546 T DE68924546 T DE 68924546T DE 68924546 T2 DE68924546 T2 DE 68924546T2
Authority
DE
Germany
Prior art keywords
vector
instructions
instruction
operand
vpu
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.)
Expired - Fee Related
Application number
DE68924546T
Other languages
English (en)
Other versions
DE68924546D1 (de
Inventor
Dileep P Bhandarkar
Tryggve Fossum
Dwight Manley
Robert Supnik
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.)
Digital Equipment Corp
Original Assignee
Digital Equipment Corp
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 Digital Equipment Corp filed Critical Digital Equipment Corp
Publication of DE68924546D1 publication Critical patent/DE68924546D1/de
Application granted granted Critical
Publication of DE68924546T2 publication Critical patent/DE68924546T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3818Decoding for concurrent execution
    • G06F9/382Pipelined decoding, e.g. using predecoding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8053Vector processors
    • G06F15/8076Details on data register access
    • G06F15/8084Special arrangements thereof, e.g. mask or switch
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • G06F9/30038Instructions to perform operations on packed data, e.g. vector, tile or matrix operations using a mask
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3889Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Complex Calculations (AREA)

Description

  • Diese Erfindung ist eine Paralletanmeldung zur europäischen Patentanmeldung mit der Veröffentlichungsnummer EP-0 333 366 mit dem Titel "Context Switching Method and Apparatus for Use in a Vector Processing System" von D. Bhandarkar et al; zur europäischen Patentanmeldung mit der Veröffentlichungsnummer EP-0 335 514 mit dem Titel "Exception Reporting Mechanism for a Vector Processor" von D. Bhandarkar et al; und zur europäischen Patentanmeldung mit der Veröffentlichungsnummer EP-0 333 365 mit dem Titel "method and Apparatus for Handling Asynchronous Memory Management Exceptions by a Vector Processor" von F. McKeen et al.
  • Die Erfindung betrifft allgemein ein Datenverarbeitungssystem und insbesondere solche Datenverarbeitungssysteme, die Vektorbefehle ausführen können.
  • Bestimmte Datenverarbeitungssysteme hoher Leistungsfähigkeit enthalten zusätzlich zu einem Haupt- oder Skalarprozessor einen separaten Vektorprozessor zum schnellen und effizienten Verarbeiten von Vektorbefehlen Vektorbefehle führen einen Prozessor beim Durchführen von Speicher-, Arithmetik- oder Logikoperationen in bezug auf Daten, die als Vektoren dargestellt sind. Der Haupt- oder Skalarprozessor verarbeitet den anderen Typ von Befehlen, die "skalare" Befehle genannt werden. Skalare Befehle führen einen Prozessor beispielsweise beim Durchführen von Speicher-, Arithmetik- oder Logikoperationen in bezug auflogische oder skalare Daten.
  • Wie es aus der Veröffentlichung IBM System/370 Vector Operations Manual, Erste Ausgabe, Veröffentlichungsnr. SA22-7125-0, Januar 1986 bekannt ist, können Vektorbefehle sowohl Vektor- als auch Skalarwerte als Operanden enthalten. Folglich können Vektorbefehle mehrere unterschiedliche Befehlsformate haben, und zwar in Abhängigkeit vom Typ eines Befehls, in Abhängigkeit davon, ob der Befehl einen skalaren Operanden wie auch Vektoroperanden benötigt, etc. Die Operanden können unterschiedlichen Adressierungsarten unterzogen werden, wie beispielsweise einer Basis-Distanzadressierung, was auch die Befehlsformate beeinflußt.
  • Durch das IBM-System/370 verarbeitete Vektorbefehle können in ein QST-Format gepackt sein, das einen Operationscode hat, dem eine Skalar-Registernummer, eine Nummer eines ersten allgemeinen Registers, eine Vektorregisternummer und eine Nummer für ein zweites allgemeines Register folgt. Das auch vom IBM- System/370 verwendete W-Format hat einen Operationscode, dem drei Vektorregisternummern folgen. Diese Befehlsformate benötigen den Haupt- oder Skalarprozessor zum Erkennen der Struktur des Vektorprozessors. Beispielsweise muß der Skalarprozessor wissen, wieviele Vektorregister der Vektorprozessor hat. Einheitliche Formate für Vektorbefehle führen auch zu einem komplexeren Aufbau des Skalarprozessors.
  • Manchmal wird gewünscht, nur bestimmte Elemente eines Vektors zu verarbeiten, die aus einer logischen oder einer arithmetischen Operation resultieren. Der allgemeine Ausdruck für eine derartige selektive Vektor-Verarbeitung ist "Maskierung". Das IBM-System/370 führt einige Klassen von Vektorbefehlen unter einer Vektormaskenmodus-Steuerung aus. Eine Vektormaskenmodus-Steuerung ermöglicht, daß bestimmte aus einer Operation resultierende Elemente des Vektors "ausmaskiert" werden. Wenn der Vektormaskenmodus ausgeschaltet ist, werden die Vektorbefehlsoperanden normal verarbeitet. Wenn der Vektormasken modus jedoch eingeschaltet ist, werden Ergebnisse nur für Elemente aufgezeichnet, die "Einsen" in einem Vektormasken-Register entsprechen. Elemente, die "Nullen" entsprechen, bleiben unverändert.
  • Weil es beim IBM-System/370 nötig ist, daß das Maskenregister-Freigabebit "Eins" ist, kann bei ihm kein Programm laufen, das eine negative Logik verwendet, bei der der Freigabewert "Null" ist. In einem solchen Fall wäre es schön, zwischen "Eins" und "Null" als Freigabewert wählen zu können.
  • In US-4 172 287 ist ein Datenverarbeitungsgerät zum Ausführen von sowohl Vektorals auch Skalarbefehlen beschrieben. Befehle werden aus einem Speicher durch eine Steuereinheit gelesen, die die Befehle decodiert. Für Skalarbefehle führt die Recheneinheit die Befehls-Operationen durch; für Vektorbefehle wird eine nachfolgende Steuerung durch eine Vektorbefehls-Steuereinheit durchgeführt, die die Vektorbefehle decodiert und die Vektoroperanden steuert, um zu bewirken, daß dieselbe Recheneinheit die Vektoroperation durchführt.
  • In IBM Systems Journal, Bd. 2, 1969, Seiten 118-135 ist ein Hilfs- Verarbeitungssystem für Matrizenberechnungen beschrieben, d.h. zum Ausführen von Vektorbefehlen. Die Befehle zeigen zu Operanden, die Details bezüglich des Formats, der Größe und der Hauptspeicheradressen der Datenmatrizen zeigen, die an einer Befehlsausführung beteiligt sind.
  • ZUSAMMENFASSUNG DER ERFINDUNG
  • Demgemäß ist es eine Aufgabe der vorliegenden Erfindung, eine Vektor- und Skalarbefehls-Bearbeitung bei einem Datenverarbeitungssystem mit einem Skalarprozessor und einem Vektorprozessor einfacher werden zu lassen.
  • Eine zweite Aufgabe der Erfindung ist es, ein Vektorbefehisformat zu haben, bei dem es nicht nötig ist, daß der Skalarprozessor Informationen über die Organisation des Vektorprozessors kennt.
  • Eine dritte Aufgabe der Erfindung besteht im Steuern der Maskierung von Ergebnissen vom Vektorprozessor durch ein Feld in einem Vektorbefehl.
  • Eine vierte Aufgabe der Erfindung besteht im Steuern einer Vektorausnahme- Bearbeitung im Datenverarbeitungssystem durch ein Feld in einem Vektorbefehl.
  • Zusätzliche Aufgaben und Vorteile der Erfindung sind teilweise in der folgenden Beschreibung vorgestellt und sind teilweise aus der Beschreibung offensichtlich, oder können durch Ausführen der Erfindung gelernt werden. Die Aufgaben und Vorteile der Erfindung werden mittels der Elemente und Kombinationen realisiert und erreicht, die insbesondere in den beigefügten Ansprüchen gezeigt sind.
  • Zum Lösen der Aufgaben und gemäß dem Zweck der Erfindung, wie sie hierin beispielhaft gezeigt und allgemein beschrieben ist, weist die Erfindung einen Speicher zum Speichern von Operanden auf, die bei der Ausführung von Vektorbefehlen verwendet werden, und eine Befehls-Parsereinrichtung zum Trennen von Operations-Codeteilen und Operanden-Teilen eines Vektor- und eines Skalarbefehls. Eine Operanden-Holeinrichtung gewinnt die durch Vektor- und Skalarbefehle bestimmten Operanden aus dem Speicher wieder. Eine Vektor-Verarbeitungseinrichtung zum Ausführen der Vektorbefehle enthält eine Vektor-Speichereinrichtung zum Speichern von Vektordaten und eine Vektor-Extrahiereinrichtung zum Decodieren von Operanden und zum Auswählen von Vektorzeigern für die Vektorbefehle. Eine Vektorbefehls-Führungsein richtung, die mit der Befehls-Parsereinrichtung gekoppelt ist, führt die Operations-Codeteile und die Operanden zur Vektor- Verarbeitungseinrichtung.
  • Die beigefügten Zeichnungen, die in dieser Beschreibung enthalten sind und einen Teil von ihr bilden, stellen mehrere Ausführungsbeispiele der Erfindung dar und dienen zusammen mit der Beschreibung zum Erklären der Prinzipien der Erfindung.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • Fig. 1 ist eine Zeichnung eines bevorzugten Ausführungsbeispiels eines Datenverarbeitungssystems gemäß der vorliegenden Erfindung;
  • Fig. 2 ist ein Blockdiagramm bestimmter Teile des bevorzugten Ausführungsbeispiels der in Fig. 1 gezeigten Vektor-Verarbeitungseinheit;
  • Fig. 3 ist ein Blockdiagramm bestimmter Teile des bevorzugten Ausführungsbeispiels der in Fig. 2 gezeigten Vektor-Steuerlogik;
  • Fig. 4 zeigt verschiedene Formate für Vektorbefehisworte, die in einem in Fig. 1 gezeigten Datenverarbeitungssystem verwendet werden können;
  • Fig. 5 zeigt ein Vektor-Steuerwort, das zu den in Fig. 4 gezeigten Vektorbefehisworten gehört;
  • Fig. 6 zeigt das FLAG-Feld des in Fig. 4 gezeigten Vektor-Steuerwortes;
  • Fig. 7 zeigt ein Format für ein Skalarbefehlswort, das in einem Datenverarbeitungssystem gemäß der vorliegenden Erfindung verwendet werden kann;
  • Fig. 8 zeigt die Inhalte verschiedener Register und Vektor-Steuerwortfelder während der Verarbeitung eines Vektorbefehls;
  • Fig. 9 zeigt ein bevorzugtes Ausführungsbeispiels eines Befehlsdecodierers;
  • Fig. 10 ist ein Flußdiagramm der beim Decodieren eines Vektorbefehis durchgeführten Operationen;
  • Fig. 11 ist ein Diagramm eines Vektorprozessor-Zustandsregisters für die in den Fig. 1 und 2 gezeigte Vektor-Verarbeitungseinheit;
  • Fig. 12 ist ein Diagramm eines Vektorarithmetik-Ausnahmeregisters für die in den Fig. 1 und 2 gezeigte Vektor-Verarbeitungseinheit;
  • Fig. 13 ist ein Diagramm eines Vektorzustands-Adressenregisters für die in den Fig. 1 und 2 gezeigte Vektor-Verarbeitungseinheit;
  • Fig. 14 ist ein Diagramm eines durch die in den Fig. 1 und 2 gezeigte Vektor- Verarbeitungseinheit erzeugten Speicherverwaltungs-Fehler-Stapel- Datenübertragungsblocks;
  • Fig. 15 ist ein Flußdiagramm, das ein bevorzugtes Verfahren zeigt, das von dem in Fig. 1 gezeigten Datenverarbeitungssystem durchzuführen ist, wenn die Vektor-Verarbeitungseinheit jenes Systems eine Speicherverwaltungsausnahme erfahren hat;
  • Fig. 16 ist ein Flußdiagramm, das ein bevorzugtes Verfahren zeigt, das von dem Datenverarbeitungssystem der Fig. 1 während eines Zusammenhangschaltens durchgeführt wird;
  • Fig. 17 ist ein Flußdiagramm, das ein bevorzugtes Verfahren zeigt, das für ein Befehlsdecodieren durch den Befehlsdecodierer der Fig. 9 durchzuführen ist; und
  • Fig. 18 ist ein Flußdiagramm, das ein bevorzugtes Verfahren zeigt, das vom Datenverarbeitungssystem in Fig. 1 beim Verarbeiten eines während des in Fig. 17 gezeigten Verfahrens gesetzten Fehlers bezüglich eines gesperrten Vektorprozessors durchzuführen ist.
  • BESCHREIBUNG DES BEVORZUGTEN AUSFÜHRUNGSBEISPIELS
  • Nun wird im Detail auf ein gegenwärtig bevorzugtes Ausführungsbeispiel dieser Erfindung Bezug genommen, wovon ein Beispiel in den beigefügten Zeichnungen dargestellt ist. Wo immer es möglich ist, werden in allen Zeichnungen dieselben Bezugszeichen für gleiche oder ähnliche Teile verwendet.
  • A. Allgemeine Systembeschreibung
  • Gemäß der vorliegenden Erfindung ist ein Datenverarbeitungssystem, wie beispielsweise ein System 10, geschaffen, das Vektorbefehle und Skalarbefehle ausführen kann. Fig. 1 zeigt ein Datenverarbeitungssystem 10, das verschiedene Elemente aufweist, wie beispielsweise eine Skalar-Verarbeitungseinheit (SPU) 15, eine Speicher-Verarbeitungseinheit 20, eine Befehls-Verarbeitungseinheit (1 PU) 25 und eine Vektor-Verarbeitungseinheit (VPU) 30.
  • Das Datenverarbeitungssystem dieser Erfindung enthält eine Skalar- Verarbeitu ngsein richtung zum Ausführen von Skalarbefehlen. Beim bevorzugten Ausführungsbeispiel der Erfindung empfängt die SPU 15 alle Befehle von der IPU 25, führt die Skalarbefehle aus und sendet die Vektorbefehle und die von der IPU 25 empfangenen skalaren Daten zur VPU 30.
  • Gemäß der vorliegenden Erfindung enthält das Datenverarbeitungssystem auch eine Vektor-Verarbeitungseinrichtung zum Ausführen von Vektorbefehlen gleichzeitig mit der Ausführung von Skalarbefehlen durch die SPU 15. Die VPU 30 enthält auch mehrere Vektorregister, wie es im einzelnen unten erklärt ist.
  • Das Datenverarbeitungssystem dieser Erfindung enthält auch eine Befehls- Decodiereinrichtung zum Führen von Vektorbefehlen zur Vektor- Verarbeitungseinrichtung und von Skalarbefehlen zur Skalar- Verarbeitungseinrichtung. Wie es in Fig. 1 gezeigt ist, enthält die IPU 25 einen Befehls-Parser 50, der von der Speicher-Verarbeitungseinheit 20 empfangene Befehle auf eine unten beschriebene Weise vorverarbeitet. Der Parser 50 sendet Skalarbefehle und Daten zur SPU 15 und sendet Vektorbefehle und Skalardaten über die SPU 15 zur VPU 30. Die SPU 15 enthält eine Steuer-Logikeinheit 40, die einen Mikrocode zum Weiterleiten der Vektorbefehle und Daten zur VPU 30 enthält. Natürlich könnte der Parser 50 auch derart aufgebaut sein, daß er die Vektorbefehle direkt zur VPU 30 sendet. Die VPU 30 empfängt Vektordaten von der Speicher- Verarbeitungseinheit 20 und sendet ihr Adressen und Vektordaten, ohne daß es nötig ist, die IPU 25 oder die SPU 15 zu verwenden.
  • Die Speicher-Verarbeitungseinheit 20 empfängt Steuer-, Adressen- und Datensignale von der IPU 25, der SPU 15 und der VPU 30 und teilt sie dann zu, verarbeitet sie und antwortet auf jene Signale. Das Datenverarbeitungssystem 10 kann auch andere Elemente zum Durchführen verschiedener Funktionen enthalten, aber ein Verstehen solcher Elemente ist für ein Verstehen der vorliegenden Erfindung nicht nötig.
  • Fig. 2 ist ein Diagramm, das ein bevorzugtes Ausführungsbeispiel der VPU 30 zeigt. Wie es in Fig. 2 gezeigt ist, enthält die VPU 30 eine Steuerlogik 60 als Haupt- Schnittstelle zu anderen Teilen des Datenverarbeitungssystems 10 und eine Vektorregisterdatei 35 zum Bedienen von Vektordaten-Zugriffsanfragen. Solche Anfragen können entweder aus Schreib-Steuersignalen und Schreibadressen zusammengesetzte Schreibanfragen oder aus Lese-Steuersignalen und Leseadressen zusammengesetzte Leseanfragen sein. Die Vektorregisterdatei 35 enthält eine Vielzahl von Schreibanschlüssen, die als SCHREIBANSCHLUSS 0 - SCHREIBANSCHLUSS 2 gezeigt und mit den Bezugszeichen 41-43 bezeichnet sind, sowie eine Vielzahl von Leseanschlüssen, die als LESEANSCHLUSS 0 - LESEANSCHLUSS 4 gezeigt und durch die Bezugszeichen 51-55 bezeichnet sind. Die Schreibanschlüsse empfangen LESE/SCHREIB-Steuersignale 45 und Schreibdaten von der Vektor-Steuerlogik 60, von einem Vektor-Multiplizierer 70 oder von einem Vektor-Addierer 80.
  • Die Leseanschlüsse arbeiten gleichzeitig mit den Schreibanschlüssen. Beispielsweise empfängt der Leseanschluß 53, der dem LESEANSCHLUSS 0 entspricht, über eine LESE/SCHREIB-Steuersignalleitung 45 ein Lese-Freigabesignal, ein Vektorregister-Auswahlsignal und Vektorelement-Adressensignale von der Steuerlogik 60. Die Lesedaten vom Leseanschluß 53 werden zu einer Maskierungseinheit 90 geliefert.
  • Die anderen Leseanschlüsse empfangen ihre Steuer- und Adressensignale von der Steuerlogik 60. Die Ausgaben von den Leseanschlüssen 55 und 54, d.h. jeweils vom LESEANSCHLUSS 1 und vom LESEANSCHLUSS 2, sind mit dem Vektor- Multiplizierer 70 verbunden, und die Ausgänge der Leseanschlüsse 52 und 51, nämlich jeweils vom LESEANSCHLUSS 3 und vom LESEANSCHLUSS 4, sind mit dem Vektor-Addierer 80 verbunden.
  • Die Vektorregisterdatei 35 enthält eine Vielzahl von Vektorregistern, und zwar vorzugsweise sechzehn, die durch die VPU 30 verarbeitete Vektoren speichern. Jedes Vektorregister hat vorzugsweise vierundsechzig Elemente. Die Größe der Datei 35 ist jedoch bei der vorliegenden Erfindung nicht entscheidend.
  • Die Anzahl von Einträgen gerade verarbeiteter Vektoren, d.h. die Länge jenes Vektors, wird in einem Vektorlängen-Register (VLR) 82 in der Steuerlogik 60 gespeichert. Beim bevorzugten Ausführungsbeispiel kann ein Vektor bis zu vierundsechzig Einträgen haben, und demgemäß hat das Vektorlängen-Register 182 eine Länge von 7 Bits zur Darstellung von Vektorlängen von 0 bis 64 Einträgen.
  • Der Vektor-Addierer 80 führt Additions- und Subtraktions-Operationen für ganze Zahlen und Gleitkommazahlen an zwei von der Vektorregisterdatei 35 über LESEANSCHLUSS 3 und LESEANSCHLUSS 4 zugeführten Vektoren oder an einem Vektor und einem Skalar durch. Vorzugsweise führt der Addierer 80 auch bestimmte Logik- und Schiebe-Operationen durch. Der Ausgang des Vektor-Addierers 80, der mit "ERGEBNIS" bezeichnet ist, liefert eine Dateneingabe zum SCHREIBANSCHLUSS 1. Der Vektor-Addierer 80 enthält auch eine Ausnahmelogik 82, die mit der Maskierungseinheit 90 gekoppelt ist, was zuläßt, daß der Addierer 80 auf eine Bedingung hin Operationen durchführt und der Maskierungseinheit 90 Arithmetikausnahmebedingungen mitteilt.
  • Der Vektor-Multiplizierer 70 führt Multiplikations- und Divisions-Operationen für ganze Zahlen und Gleitkommazahlen an zwei vom LESEANSCHLUSS 1 und vom LESEANSCHLUSS 2 der Vektorregisterdatei 35 empfangenen Vektoren oder an einem Vektor und einem Skalar durch. Das Produkt oder der Quotient jener Eingaben ist ein Vektor, der auch "ERGEBNIS" genannt wird, und wird als Eingabedaten zum SCHREIBANSCHLUSS 2 geliefert. Eine Ausnahmelogik 72, die mit der Maskierungseinheit 90 gekoppelt ist, zeigt der Maskierungseinheit 90 an, wann es eine arithmetische Ausnahmebedingung gibt, die aus der Multiplikation oder der Division durch den Multiplizierer 70 resultiert.
  • Die Maskierungseinheit 90 empfängt Daten von der Vektorregisterdatei 35 über den LESEANSCHLUSS 0 und liefert Vektordaten von der VPU 30 zur SPU 15 über die in Fig. 2 gezeigte Vektordaten-Leitung. Die Maskierungseinheit 90 kann auch die Daten vom LESEANSCHLUSS 0 lesen und sie in eine Adresse für die Speicher- Verarbeitungseinheit 20 umwandeln. Zusätzlich ist die Maskierungseinheit 90 mit der Ausnahmelogik 72 und 82 gekoppelt und speichert ihre Ausnahmebedingungen (zwischen). In der Maskierungseinheit 90 ist ein 64-Bit-Vektormasken-Register 92 enthalten. Jedes Bit im Register 92 entspricht jeweils einem anderen der 64 Vektorelemente in einem gegebenen Vektorregister und zeigt an, ob das entsprechende Vektorelement freigegeben ist und verarbeitet werden soll. Das Maskenregister 92 kann über die Steuerlogik 60 mit Daten von der SPU 15 geladen werden. Vorzugsweise stellt das Vektormasken-Register 92 sicher, daß nur die Ergebnisse von den freigegebenen Elementen in einem Vektorregister gespeichert werden.
  • Die Vektor-Steuerlogik 60 enthält vorzugsweise einen Befehls-Parser 65 und eine Vektor-Speicher- und -Decodierlogik 66, um bestimmte Steuerfunktionen zu implementieren. Die Vektor-Speicher- und -Decodierlogik 66 in der Steuerlogik 60 überwacht die Planung aller Aktivitäten in der VPU 30 und führt eine bestimmte Datenübertragungsaktivität durch.
  • Der Befehls-Parser 65, von dem Teile detaillierter in Fig. 3 gezeigt sind, empfängt Informationen (d.h. Befehle über die VEKTORDATEN-Leitung) von der SPU 15 und leitet ankommende Daten und Adressen zu den geeigneten Lese- und Schreibanschlüssen und dann zu einem Vektor-Multiplizierer 70, einem Vektor-Addierer 80 oder der Maskierungseinheit 90. Vorzugsweise führt der Befehls-Parser 65 von der SPU 15 empfangene Skalardaten auf einer SKALARDATEN-Leitung, damit sie bevorzugt zur Verwendung während Vektor-Verarbeitungsoperationen in Skalar- Registern (nicht gezeigt) in der Vektorregisterdatei 35 gespeichert werden.
  • Fig. 3 zeigt die interne Logik des Befehls-Decodierers 65 in der VPU 30. Der Decodierer 65 empfängt von der SPU 15 als Eingaben 100 teilweise decodierte Vektorbefehis-Informationen und Skalardaten. Diese Eingaben werden im Befehlspuffer 115 gespeichert, der die Befehle und die Daten in der richtigen Reihenfolge hält, bis die Vektorbefehle durch die VPU 30 ausgeführt werden können.
  • Ein Multiplexer 116, der mit den Ausgängen BUF0-BUF3 des Puffers 115 verbunden ist, gibt dann die Befehlsinformationen für den zu decodierenden nächsten Befehl richtig aus. Jene Informationen werden durch das Befehls-Auswahlsignal bestimmt, das ein immer wieder umlaufendes Zähisignal von zwei Bit ist, das dazu führt, daß es den Anschein hat, daß der Puffer 115 als Umlaufpuffer arbeitet.
  • Skalardaten werden durch einen Multiplexer 102 ausgewählt, der auch angeschlossen ist, um die Ausgänge BUF0-BUF3 vom Puffer 115 gemäß dem Befehls- Auswahl + 1-Signal zu empfangen, das einen Wert hat, der um 1 größer als das Befehls-Auswahl-Signal ist. Die Skalardaten werden zur Vektorregisterdatei 35 getrieben, wo sie in einem Skalar-Register gespeichert werden, das entweder dem Vektor-Addierer 80, dem Vektor-Multiplizierer 70 oder der Maskierungseinheit 90 entspricht.
  • Wenn der gerade decodierte Vektorbefehl nur Vektoroperanden benötigt, dann wird die Information durch den Multiplexer 116 geführt, und die Operanden werden gemäß einem Steuerwort-Decodierelement 103 auf eine Weise bestimmt, die unten beschrieben ist. Wenn ein Befehl jedoch Skalardaten benötigt, werden jene Daten von der SPU 15 dem Befehl folgend durchgegeben und zur richtigen Zeit durch einen Multiplexer 102 ausgegeben.
  • Nachdem der Befehl durch einen Multiplexer 116 ausgewählt ist, werden den Decodier-Logikelementen 103,104,105 und 106 bestimmte Felder zugeteilt. Die Befehlsinformationen in dem teilweise decodierten Befehl enthält einen Operations- Codeteil, der den Befehlstyp anzeigt, einen Steuerwort-Typenteil, der den Typ des Steuerwortes anzeigt (was detaillierter unten beschrieben ist), einen Abwickel- Typenteil, der anzeigt, welche der Haupt-Vektoreinheiten, wie beispielsweise der Addierer 80 oder der Multiplizierer 70, durch den Befehl zu verwenden ist, und einen Steuerwortteil, der die Operanden und Flags für den Vektorbefehl bestimmt.
  • Das Steuerwort-Decodierelement 103 streift die Operanden vom Steuerwortteil ab, um die Adressen für die Register in der Vektorregisterdatei 35 zu bilden, und zwar sowohl für die Vektorregister, die die Quelle der Daten für die bestimmten Vektoroperationen sind, d.h. QUELLENREG1 und QUELLENREG2, als auch das Vektorregister, das das Ergebnis der Vektoroperation speichert, d.h. das ZIELORTREG. Zusätzlich streift das Decodierelement 103 auch die Ausnahme-/Maskierungsflags ab.
  • Die Werte für QUELLENREG 1, QUELLENREG 2 und ZIELORTREG werden jeweils zu Adressengeneratoren 108, 109 und 110 eingegeben, die gemäß dem Befehlstyp jeweilige Adressen für den Vektor-Addierer 80, den Vektor-Multiplizierer 70 und die Maskierungseinheit 90 erzeugen. Vorzugsweise sind die Adressengeneratoren 108, 109 und 110 Zähler, die die bestimmte gerade durchgeführte Unteroperation bestimmen, und sind als Zähler 44 in der Vektor-Steuerlogik 60 gezeigt, wie es in Fig. 2 gezeigt und in der EP-A-0 328 632 beschrieben ist.
  • Die anderen Befehlstypteile werden zur weiteren Decodierung zur Abwickeltyp- Logik 104, zur Steuerworttyp-Logik 105 oder zur Operationscode-Decodierlogik 106 gesendet. Basierend auf einem solchen Decodieren bestimmt dann eine Ausgabe- Entscheidungslogik 107, ob jener Befehl ausgegeben werden kann. Wenn beispielsweise der Vektor-Addierer 80 besetzt ist, muß der nächste Befehl, wenn er den Addierer 80 benötigt, verzögert werden, bis der Addierer 80 frei ist. Wenn die Ausgabe-Entscheidungslogik 107 bestimmt, daß der nächste Befehl eine Ausführung durchführen kann, gibt sie ein Signal für eine neue Ausgabe aus, das den Adressengenerator 108, 109 oder 110 veranlaßt, den richtigen Wert zu laden.
  • B. Vektorbefehisformat
  • Fig. 4 zeigt die Formate verschiedener Vektorbefehisworte mit unterschiedlichen Anzahlen von Operanden-Spezifizierern gemäß der Erfindung. Fig. 5 zeigt unterschiedliche Formate eines Vektor-Steuerwortes, auf das durch einen Vektor- Steuerwortspezifizierer 140 eines Vektorbefehlswortes mit dem in den Reihen (a)- (d) der Fig. 4 gezeigten Format gezeigt wird.
  • Wie es in Fig. 4 des vorliegenden Ausführungsbeispiels gezeigt ist, enthalten die Vektorbefehle ein Operationscodefeld 150, das einen den Befehlstyp identifizierenden Operandencode und einen Operandenzeigerabschnitt 152 hält. Der Operandenzeigerabschnitt 152 kann eine beliebige Anzahl von Operanden-Spezifizierern 154-158 und einen Vektor-Steuerwortspezifizierer 140 enthalten. Vorzugsweise haben alle Operanden-Spezifizierer im Operandenzeigerabschnitt 152 dasselbe Format wie die Operanden-Spezifizierer in einem Skalarbefehl, und wie die Spezifizierer im Skalarbefehl identifizieren die Operanden-Spezifizierer in den Vektorbefehlsworten die Stelle eines skalaren Operanden. Weil die Vektoroperanden-Spezifizierer und die Skalaroperanden-Spezifizierer (siehe Fig. 7) identische Formate haben, können Operanden geholt werden, bevor man weiß, ob ein gegebener Befehl ein Vektorbefehl oder ein Skalarbefehl ist.
  • Fig. 7 zeigt ein Skalarbefehiswort mit drei Operanden-Spezifizierern 154', 155' und 156'. Der Vektor-Steuerwortspezifizierer 140 in den Reihen (a) bis (d) der Fig. 4 und die Vektoroperanden-Spezifizierer 154',155' und 156' der Fig. 7 verwenden identische Adressenschemata, weshalb der Befehls-Parser 50 keine unterschiedlichen Operanden für Vektorbefehle und Skalarbefehle holen muß. Die Verwendung identischer Adressenschemata läßt zu, daß die Organisation der VPU 30 gegenüber der IPU 25 transparent ist. Das bevorzugte Adressierungsschema, durch welches die Operanden-Spezifizierer 154-158 Operanden identifizieren, ist im US-Patent 4 241 399 von Strecker et al erklärt.
  • Ungleich den Operanden-Spezifizierern 154-158 zeigt der Vektor- Steuerwortspezifizierer 140 auf ein 16-Bit-Vektor-Steuerwort 160, von dem drei Beispiele in Fig. 5 gezeigt sind. Das in Fig. 5 gezeigte Vektor-Steuerwort 160 enthält 16 Bits, kann aber eine beliebige Länge haben, wie beispielsweise 8, 32 und 64 Bits. In Fig. 5(a) ist das Vektor-Steuerwort 160 in vier 4-Bit-Felder 162-165 aufgeteilt. Vorzugsweise ist das Feld 162 ein Flag-Feld und entweder eines, zwei oder drei der Felder 163-165 sind Vektorregister-Spezifiziererfelder, die Zeiger zu oder Spezifizierer von Vektorregisteroperanden enthalten, auf die während einer Ausführung von Vektorbefehlen zuzugreifen ist. Jeder Vektorreg isterspezifizierer identifiziert vorzugsweise ein einziges Vektorregister. Die vier Bits jedes Vektorregister- Spezifiziererfeldes können eindeutig eines der sechzehn beim gegenwärtigen Ausführungsbeispiel der Erfindung enthaltenen Vektorregister identifizieren.
  • Fig. 5(b) zeigt ein alternatives Format für ein Vektor-Steuerwort 160'. Zusätzlich zum Flag-Feid 162 und zu den Vektorspezifiziererfeldern 163 und 164 enthält das Steuerwort 160' ein 4-Bit-Operandeninformationsfeld 168 anstelle des 4-Bit- Vektorregister-Spezifiziererfeldes 165 der Fig. 5(a). Ein Operandeninformationsfeld 168 enthält Informationen, die für verschiedene Vektoroperationen erforderlich sind. Wenn beispielsweise der Operationscode im Operationscodefeld 150 anzeigt, daß eine Vergleichsoperation durchzuführen ist, kann das Operandeninformationsfeld 168 Daten enthalten, die spezifizieren, ob ein "größer als"- oder "kleiner als"- Vergleich durchzuführen ist. Das Operandeninformationsfeld 168 kann in Abhängigkeit vom Wert des Operationscodefeldes 150 auch statt dem Vektorregisterspezifizierer 163, dem Vektorregisterspezifizierers 164 oder dem Vektorregisterspezifizierer 165 auftreten.
  • Fig. 5(c) zeigt ein weiteres Format für ein Vektor-Steuerwort 160". Das Steuerwort 160" enthält ein Wandlerfeld 166 anstelle des Vektorspezifiziererfelds 163. Das Wandlerfeld 166 identifiziert eine durchzuführende Umwandlungsfunktion, so daß durch das Feld 164 spezifizierte Werte im Vektorregister vor einer Speicherung im Vektorregister geeignet umgewandelt werden, das im Feld 165 spezifiziert wird. Eine solche Umwandlung kann beispielsweise vom Gleitkommaformat zum ganzzahligen Format oder eine Langwort-Umwandlung, etc. sein.
  • Fig. 6 zeigt eine Erweiterung des Flag-Feldes 162 des Vektor-Steuerwortes 160 der Fig. 5(a). Ein Bit enthält ein Maskenoperationsfreigabe-(MOE)-Flag 170. Ein zweites Bit enthält ein (MTF-)Flag 172 über eine richtige/falsche Übereinstimmung. Das MTF-Flag 172 bestimmt, ob ein Bool'scher Wert null oder eins ein freigegebenes Bit im Vektormasken-Register 92 darstellt. Ein drittes Bit enthält das Ausnahmefreigabe-(EXC)-Flag 174, das eine Ausnahmebearbeitung freigibt, wenn Vektor- Verarbeitungsausnahmen auftreten. Ein viertes Flagbit 176 wird gerade nicht verwendet. Die Verwendung dieses Bits ist abhängig vom gerade verarbeiteten Befehl.
  • Wie es oben kurz erklärt ist, werden bei der durch das MOE-Flag 170 freigegebenen Maskierungsfunktion nach einer Operation nur jene Ergebnisse einer Vektoroperation gespeichert, die einem freigegebenen Bit im Vektormasken-Register 92 entsprechen. Fig. 8 zeigt ein Beispiel davon, wie das Vektormasken-Register 92, das Vektorlängen-Register 182 und das MOE-Flag 170 und das MTF-Flag 172 des Flag-Feldes des Vektor-Steuerwortes 160 die Speicherung eines Ergebnisses einer Vektoroperation bewirken. In Fig 8(a) enthält das MOE-Flag 170 des Vektor- Steuerwortes einen Wert "1", der anzeigt, daß eine Maskierung freigegeben ist. Das MTF-Flag 172 enthält einen Wert von "0", der anzeigt, daß nur jene Ergebnisse, die den Werten "0" im Vektormasken-Register 92 entsprechen, zu speichern sind.
  • Fig. 8(b) zeigt die Inhalte eines Zielortregisters 192 der Vektorregisterdatei 35, bevor eine Vektoroperation erfolgt ist, d.h. bevor Ergebnisdaten einer Vektoroperation im Zielortregister 192 gespeichert worden sind. Fig. 8(c) zeigt ein Vektormasken- Register 92, in dem auf "0" gesetzte Bits wegen dem MTF-Feld 172 in Fig. 8(a) freigegebene Bits sind.
  • Fig. 8(d) zeigt ein Ergebnis 190 einer Vektoroperation vor einer Maskierung und bevor das Vektorergebnis 190 im Zielortregister 192 gespeichert worden ist (die Werte im Ergebnis 190 sind für das Beispiel willkürlich gewählt). Es ist zu beachten, daß in Fig. 8(b) die zwei Elemente am linken Rand des Zielortregisters 192 die Werte "9" bzw. "7" enthalten. Nach der Vektoroperation enthalten die zwei ganz linken Elemente des Vektorergebnisses 190 die Werte "4" bzw. "5", wie es in Fig. 8(d) gezeigt ist. Das ganz linke Element des Vektorergebnisses 190 entspricht einem Bit im Vektormasken-Register 92, das den Wert "0" hat. Das zweite Bit neben dem ganz linken Bit im Vektorergebnis 190 entspricht einem Bit im Vektormasken- Register 92, das den Wert "1" hat.
  • Fig. 8(e) zeigt ein Zielortregister 192 nach einer Maskierung, wenn bestimmte Elemente des Vektorergebnisses 190 der Fig. 8(d) im Zielortregister 192 gespeichert worden sind. Das ganz linke Element des Zielortregisters 192 enthält den Wert "4". Dieser Wert wurde in das Zielortregister 192 gespeichert, weil ein entsprechendes Bit im Vektormasken-Register 92 einen Wert "0" enthielt. Das zweite Element neben dem ganz linken Element des Zielortregisters 192 behält jedoch in Fig. 8(e) noch seinen ursprünglichen Wert "7". Der Ergebniswert "5" im Vektorergebnis 190 in Fig. 8(d) wurde nicht in das Zielortregister 192 in Fig. 8(e) gespeichert, weil ein entsprechendes Bit im Vektormasken-Register 92 eine "1" enthielt. Gleichermaßen werden alle anderen Elemente des Vektorergebnisses 190, die freigegebenen Bits des Vektormasken-Registers 92 entsprechen, im Zielortregister 192 gespeichert, aber es wird kein Element des Vektorergebnisses 190 im Zielortregister 192 gespeichert, das einem gespeicherten Vektormasken-Register-Bit entspricht.
  • c. Befehls-Vorverarbeitung
  • Vor einem Führen von Befehlen mittels der SPU 15 entweder zur VPU 30 oder zu einer anderen Schaltung in der SPU 15 für eine Ausführung führt die IPU 25 eine bestimmte Vorverarbeitung an den Befehlen durch. Wie es oben kurz erklärt ist, läßt die Einheitlichkeit der oben erörterten Befehlsformate zu, daß die IPU 25 dieselbe Schaltung verwendet, von der ein bevorzugtes Ausführungsbeispiel in Fig. 9 derart gezeigt ist, daß sie einen Puffer 187 und eine Operanden-Steuerlogik 185 enthält, um sowohl Vektorbefehle als auch Skalarbefehle identisch vorzuverarbeiten.
  • Fig 10 ist ein Flußdiagramm eines bevorzugten Verfahrens zum Vorverarbeiten von Befehlen in der IPU 25. Wenn eine Speicher-Verarbeitungseinheit 20 einen Befehl zur IPU 25 sendet, wird jener Befehl zum Puffer 187 eingegeben (Schritt 194 in Fig. 10). Der Operationscodeteil jenes Befehls (d.h. das in den Fig. 4(a)-(d) gezeigte Operationscodefeld 150) wird dann abgestreift (Schritt 196) und zur SPU 15 gesendet. Der Operandenzeigerteil jenes Befehls (d.h. der Operandenzeigerabschnitt 152 in den Fig. 4(a)-(d)) wird zur Operanden-Steuerlogik 185 eingegeben, die auch auf den Operationscodeteil zugreifen kann, wenn es zum Durchführen ihrer Funktionen nötig ist.
  • Die Operanden-Steuerlogik 185 decodiert die Operanden-Spezifiziererteile, und zwar unter Verwendung der Operationscodes, wenn es nötig ist, und führt beliebige Zugriffe zur Speicher-Verarbeitungseinheit 20 durch, was zum Bestimmen der Operanden nötig ist, auf die durch einen jeweiligen Operanden-Spezifiziererteil gezeigt wird (Schritt 198). Die Einzelheiten des Verfahrens zum Bestimmen von Operanden sind im oben angegebenen Patent von Strecker et al erklärt. Schließlich sendet die IPU 25 die Operanden und die Operationscodeteile zur SPU 15, und zwar entweder zur Ausführung durch die SPU 15 oder zum Senden von Vektorbefehlen und -operanden zur VPU 30 (Schritt 199).
  • Weil die Vektor- und Skalar-Verarbeitungsbefehle dasselbe Format haben, führt die Operanden-Steuerlogik 185 sowohl für Vektor- als auch Skalarbefehle dieselbe Funktion durch. In der Tat läßt die Verwendung der oben beschriebenen Befehlsformate für eine beliebige Art von Datenverarbeitungseinrichtung, die einen separat arbeitenden Prozessor hat, wie beispielsweise einen FFT-Prozessor oder einen Gleitkommaprozessor, zu, daß ein einziger Befehlsprozessor, wie beispielsweise die IPU 25, alle Befehle auf dieselbe Weise vorverarbeitet.
  • D. Vektor-Verarbeitungsausnahmen 1. Vektorprozessorregister
  • Gemäß der vorliegenden Erfindung enthält die Vektor-Verarbeitungseinrichtung eine Zustandseinrichtung zum Halten von Vektorzustandsinformation, die einen Ausführungszustand der Vektor-Verarbeitungseinrichtung zeigt. Beim bevorzugten Ausführungsbeispiel dieser Erfindung ist ein in Fig. 1 gezeigtes Vektorprozessor- Zustandsregister (VPSR) 200 in der VPU 30 zum Halten von Information vorgesehen, die den Ausführungszustand der VPU 30 zeigt. Das VPSR 200 hält 32 Bits einer Zustandsinformation über die VPU 30 und ist vorzugsweise in der Steuereinheit 60 angeordnet, obwohl es an beliebiger Stelle angeordnet sein kann. In der Maskierungseinheit 90 sind auch ein in Fig. 12 gezeigtes Vektorarithmetik- Ausnahmeregister (VAER) 300 und ein in Fig. 13 gezeigtes Vektorzustands- Adressenregister (VSAR) 400 angeordnet. Die Inhalte der Register 200, 300 und 400 wie auch andere nachfolgend erörterte Daten sind Teil der Zustandsinformation der VPU 30.
  • Ein Bit Null des VPSR 200 ist ein Vektorprozessor-Freigabe-(VEN)-Bit 210, das anzeigt, ob die VPU 30 gesperrt ist. Die VPU 30 wird durch Schreiben einer 1 in dieses Bit freigegeben und durch Schreiben einer 0 in dieses Bit gesperrt. Wenn die VPU 30 gesperrt ist, resultiert jeder Versuch der SPU 15, Vektorbefehle zur VPU 30 zu senden, in einem Fehler bezüglich einer Sperrung des Vektorprozessors.
  • Bit Eins des VPSR 200 ist ein Vektorprozessor-Zustands-Rücksetz-(RST)-Bit 220. Ein Schreiben einer Eins in dieses Bit löscht das VPSR 200 mit Ausnahme des VEN-Bits 210.
  • Bit Zwei des VPSR 200 ist ein Vektorzustandsspeicher-(STS)-Bit 230, das dann, wenn es auf Eins gesetzt ist, das Speichern einer implementierungsspezifischen Vektorzustandsinformation zur Speicher-Verarbeitungseinheit 20 unter Verwendung einer virtuellen Speicheradresse 420 im VSAR 400 für eine asynchrone Bearbeitung von Speicherverwaltungsausnahmen initiiert. Wenn eine synchrone Bearbeitung von Ausnahmen implementiert ist, wird das STS-Bit 230 ignoriert. Das bevorzugte Ausführungsbeispiel der Erfindung läßt die Auswahl einer von zwei Arten zum Ausführen von Vektor-Verarbeitungs-Speicherzugriffsbefehlen zu Die zwei Arten resultieren in zwei unterschiedlichen Mechanismen zum Bearbeiten von Speicherverwaltungsausnahmen, wie es im nächsten Abschnitt erklärt wird. Eine davon ist eine synchrone Speicherverwaltungsausführung und die andere ist eine asynchrone Speicherverwaltungsausführung. Während der synchronen Ausführung verarbeiten die VPU 30 und die SPU 15 keine neuen Befehle, bis sichergestellt ist, daß der gerade ausführende Vektorspeicherzugriffsbefehl beendet ist.
  • Für eine asynchrone Ausführung kann die VPU 30 einen Vektorspeicherzugriffsbefehl entweder mit einer SPU-Befehlsausführung oder mit einer VPU-Ausführung anderer Vektorspeicherbefehle gleichzeitig ausführen. Die asynchrone Speicherverwaltung läßt eine verkettete Ausführung einer Befehlsfolge zu, wie beispielsweise LADEN/ADDIEREN/MULTIPLIZIEREN/SPEICHERN.
  • Bit Drei des VPSR 200 ist ein Vektorzustands-Neulade-(RLD)-Bit 240, das dann, wenn es auf Eins gesetzt ist, ein Neuladen implementierungsspezifischer Vektorzustandsinformation vom Speicher unter Verwendung einer virtuellen Speicheradresse 420 im VSAR 400 für eine asynchrone Bearbeitung von Speicherverwaltungsausnahmen initiiert. Wie beim STS-Bit 230 wird dann, wenn eine synchrone Bearbeitung von Ausnahmen implementiert ist, das RLD-Bit 240 ignoriert.
  • Bit Fünf des VPSR 200 ist ein Speicherfehler-(MF)-Bit 250, das durch die VPU 30 auf Eins gesetzt wird, um das Vorhandensein einer Speicherreferenz anzuzeigen, die aufgrund einer asynchronen Speicherverwaltungsausnahme erneut auszuführen ist. Dies wird unten ausführlicher erklärt. Wenn eine synchrone Bearbeitung von Speicherverwaltungsausnahmen implementiert ist, wird dieses Bit auf Null gesetzt.
  • Bit Sechs des VPSR 200 ist ein Hängespeicher-Fehler-(PMF)-Bit 260. Die VPU 30 setzt das PMF-Bit 260 auf Eins, um anzuzeigen, daß eine asynchrone Speicherverwaltungsausnahme anhängig ist. Wenn eine synchrone Bearbeitung von Speicherverwaltungsausnahmen implementiert ist, ist dieses Bit immer Null.
  • Bit Sieben des VPSR 200 ist ein Arithmetik-Ausnahme-(AEX)-Bit 270, das normalerweise Null ist, um anzuzeigen, daß die VPU 30 nicht durch bestimmte arithmetische Ausnahmen, wie beispielsweise einen Gleitkomma-Unterlauf oder einen ganzzahligen Überlauf, gesperrt ist. Die VPU 30 setzt dieses Bit immer dann, wenn eine arithmetische Ausnahme auftritt. Information bezüglich der spezifischen Art der Ausnahme ist im VAER 300 angeordnet.
  • Bit Vierundzwanzig des VPSR 200 ist ein implementierungsspezifisches Hardwarefehler-(IMP)-Bit 280. Das IMP-Bit 280 wird auf Eins gesetzt, wenn die VPU 30 aufgrund eines Hardwarefehlers gesperrt ist.
  • Bit Einunddreißig des VPSR 200 ist ein Vektorprozessor-in-Betrieb-(BSY)-Bit 290, das die VPU 30 auf Eins setzt, wenn sie gerade Vektorbefehle ausführt. Wenn dieses Bit auf Null gelöscht ist, ist die VPU 30 nicht in Betrieb oder hat eine Befehlsausführung aufgrund einer asynchronen Speicherverwaltungsausnahme beendet.
  • Vorzugsweise ist das VAER 300 ein Register, das zum Aufzeichnen von Informationen bezüglich Vektorarithmetik-Ausnahmen verwendet wird. Das VAER 300 ist in der Maskierungseinheit 90 angeordnet und wird durch Ausnahmeeinheiten 82 und 72 beschrieben. Die Steuerlogikeinheit 40 der SPU 15 kann die Inhalte des VAER 300 lesen, kann aber nicht zum VAER 300 schreiben. Das VAER 300 enthält beim bevorzugten Ausführungsbeispiel zwei Felder: ein Vektorzielortregistermasken-Feld 310 und ein Ausnahmebedingungs-Zusammenfassungsfeld 320. Das Vektorzielortregistermasken-Feld 310 des VAER 300 zeichnet auf, welche Vektorregister einen fehlerhaften Wert aufgrund von arithmetischen Ausnahmen empfangen haben. Wenn das n-te der sechzehn Vektorregister als Ergebnis einer arithmetischen Ausnahme einen fehlerhaften Wert empfängt, wird eine Eins in das Bit n des Maskenfeldes 310 (Bit (16+n) des VAER 300) geschrieben.
  • Das Ausnahmebedingungs-Zusammenfassungsfeld 320 zeigt den Typ der Ausnahme an, die aufgetreten ist. Vorzugsweise sind jene Bedingungen folgende Ausnahmebedingungen: Gleitkomma-Unterlauf, Gleitkomma-Division durch Null, Gleitkommareserve-Operand, Gleitkomma-Überlauf oder ganzzahliger Überlauf.
  • Wie es oben erklärt ist, führt ein Befehls-Parser 50 in der IPU 25 Vektor- und Skalarbefehle zur SPU 15. Die SPU 15 identifiziert dann Vektorbefehle und führt sie zur VPU 30. Natürlich können die Vektorbefehle von der IPU 25 genauso gut direkt zur VPU 30 geführt werden. Die VPU 30 führt dann die Vektorbefehle gemäß ihrer normalen Operation aus. Während einer Ausfiihrung der Vektorbefehle können jedoch zwei Arten von Vektorprozessorausnahmen auftreten: Vektorspeicherverwaltungsausnahmen und Vektorarithmetikausnahmen.
  • 2. Speicherverwaltungsausnahmen
  • Die zwei Arten von Vektorprozessorausnahmen werden etwas unterschiedlich voneinander bearbeitet. Ungleich zu Vektorarithmetikausnahmen sperren Vektorspeicherverwaltungsausnahmen die VPU 30 nicht. Speicherverwaltungsausnahmen, die während eines Speicherzugriffsbefehls auftreten, verhindern eine weitere Verarbeitung jedes Befehls was bei Arithmetikausnahmen nicht der Fall ist. Speicherverwaltungsausnahmen halten auch die Ausführung aller anderen Befehle an, die von den Daten abhängen.
  • Die Vektor-Verarbeitungseinrichtung dieser Erfindung enthält eine Ausnahmeerfassungseinrichtung zum Anzeigen des Vorhandenseins einer Speicherverwaltungsausnahme. Beim bevorzugten Ausführungsbeispiel der VPU 30 wird eine Steuerlogik 66 durch die Speicher-Verarbeitungseinheit 20 benachrichtigt, wenn eine Speicherverwaltungsausnahme auftritt. Die Einzelheiten dieses Verfahrens werden nachfolgend erklärt.
  • Vektorspeicherverwaltungsausnahmen enthalten Zugriffssteuerverletzungen, Ausnahmen bezüglich einer nicht gültigen Umsetzung, Abänderungsausnahmen und Vektorausrichtungsausnahmen. Vorzugsweise stellt die Speicher- Verarbeitungseinheit 20 Signale zur Verfügung, die die Art der Speicherverwaltungsausnahme identifizieren, obwohl solche Signale genauso gut in der SPU 15 oder der VPU 30 sein können. Diese Ausnahmeidentifizierungssignale sind Teil der Zustandsinformation der VPU 30.
  • Zugriffssteuerverletzungen enthalten Versuche der VPU 30, auf geschützte Teile des Speichers oder auf Teile des Speichers außerhalb des dem aktuellen Vektorprozeß zugeordneten Speicherraums zuzugreifen. Der aktuelle Vektorprozeß bezieht sich auf den Prozeß, der den Vektorbefehl enthält, dessen Ausführung die Speicherverwaltungsausnahme verursachte. Eine Ausnahme bezüglich einer nicht gültigen Umsetzung tritt dann auf, wenn es einen Seitenfehler oder irgendeinen anderen Versuch zum Zugreifen auf einen Teil des Speichers gibt, der gegenwärtig nicht in der Speicher-Verarbeitungseinheit 20 ist. Eine Abänderungsausnahme tritt auf, wenn der Zugriff auf eine Seite im Speicher eine Abänderung bezüglich einer Seite enthält, die durch den aktuellen Vektorprozeß zum ersten Mal durchgeführt wird. Vektorausrichtungsausnahmen treten auf, wenn lange Worte (die vier Bits besetzen) oder Quadworte (die acht Bytes besetzen) in der Speicher- Verarbeitungseinheit 20 nicht in Langwort- bzw. Quadwortgrenzen fallen. Als Vektorausrichtungsausnahme wird auch eine Zugriffssteuerverletzung betrachtet, weil die gleiche Software beide Bedingungen bearbeitet.
  • Wenn während der Verarbeitung eines einzelnen Vektorbefehls mehr als eine Art einer Speicherverwaltungsausnahme auftritt, dann muß einer bestimmten Hierarchie einer Ausnahmebearbeitung gefolgt werden. Die höchste Priorität haben Zugriffssteuerausnahmen (und demgemäß Vektorausrichtungsausnahmen, die gleich wie diese behandelt werden), weil sie am schlimmsten sind Solche Ausnahmen führen dazu, daß das Datenverarbeitungssystem 10 den aktuellen Vektorprozeß von einer Ausführung löst. Die Ausnahme bezüglich einer nicht gültigen Umsetzung hat die nächst höchste Priorität.
  • Die Vektor-Verarbeitungseinrichtung der vorliegenden Erfindung enthält auch eine Vektoranhalteeinrichtung zum Anhalten einer Ausführung des Fehlervektor- Verarbeitungsbefehls durch die Vektor-Verarbeitungseinrichtung, wenn eine Speicherverwaltungsausnahme auftritt, und zum Zulassen, daß die Skalar- Verarbeitungseinrichtung ein Ausführen von Skalarbefehlen fortführt. Wenn eine Speicherverwaltungsausnahme auftritt, veranlaßt eine Vektor-Zustands- und -Decodierlogik 66 die VPU 30, ein Ausführen von Vektorbefehlen nicht fortzuführen. Dies wird durch Anhalten der Übertragung gültiger Daten zur VPU 30 durchgeführt.
  • Gemäß der vorliegenden Erfindung enthält das Datenverarbeitungssystem eine Ausnahmeaufzeichnungseinrichtung zum Aufzeichnen einer Anzeige des Auftretens einer Speicherverwaltungsausnahme und ausreichender Information über den Zustand der Vektor-Verarbeitungseinrichtung, so daß die Vektor- Verarbeitungseinrichtung später die Ausführung bei der Unteroperation des Vektor- Verarbeitungsbefehls wieder aufnehmen kann, während dem die Speicherverwaltungsausnahme aufgetreten ist. Beim bevorzugten Ausführungsbeispiel dieser Erfindung veranlaßt das Auftreten einer Speicherverwaltungsausnahme sowohl während einer synchronen Speicherverwaltung als auch während einer asynchronen Speicherverwaltung die SPU 15, und insbesondere die Steuerlogikeinheit 40 in der SPU 15, einen Speicherverwaltungs-Stapel-Datenübertragungsblock zu erzeugen, den sie an einer vorbestimmten Stelle in der Speicher-Verarbeitungseinheit 20 speichert. Die Software zum Bearbeiten der Speicherverwaltungsausnahme ist so entwickelt, daß die vorbestimmte Stelle erkannt wird, die den Speicherverwaltungs- Stapel-Datenverarbeitungsblock enthält, so daß eine geeignete Verarbeitung, die wohlbekannte Programme enthalten kann, die für die spezifische Ausnahme geeignet sind, erwartungsgemäß fortgeführt werden kann.
  • Fig. 14 stellt ein Beispiel eines Speicherverwaltungs-Stapel- Datenübertragungsblocks 500 dar. Der Stapel-Datenverarbeitungsblock 500 enthält einen Speicherverwaltungs-Fehlercode 510, ein Adressenwort 520, einen Programmzähler PC 530 und ein Programmzustandswort PSL 540.
  • Der Fehlercode 510 enthält vorzugsweise ein Längenbit 511, ein Seitentabellenreferenzbit 512, ein Änderungsbit 513, ein Vektorausrichtungsbit 514, ein Vektor-I/O-Bit und ein Bit 516 für eine Ausnahme einer asynchronen Vektor- Speicherverwaltung. Das Längenbit 511 wird gesetzt, wenn es eine Zugriffssteuerverletzung gibt, die durch einen Zugriff auf eine Stelle in der Speicherverwaltungseinheit 20 außerhalb des Speicherraums, der dem Vektorprozeß zugeordnet ist, den die VPU 30 verwendet, verursacht wird. Das Seitentabellenreferenzbit 512 wird gesetzt, wenn ein Speicherverwaltungsausnahme während eines Zugreifens auf eine Seitentabelle auftrat. Das Änderungsbit 513 wird gesetzt, wenn der die Ausnahme verursachende Befehl ein Schreiben zur Speicher-Verarbeitungseinheit 20 ist. Das Vektorausrichtungs-(VAL)-Bit 514 wird gesetzt, wenn die Ausnahme durch die falsche Ausrichtung eines Vektorelements verursacht ist. Das Vektor-I/O-(VIO)-Bit 515 wird gesetzt, wenn eine Zugriffssteuerverletzung während einer Vektorbefehlsreferenz zu einer Adresse im I/O-Raum auftritt. Das Vektor-Asynchron- Speicherverwaltungs-(VAS)-Bit 516 wird gesetzt, wenn eine Vektorprozessor- Speicherverwaltungsausnahme auftritt, während eine asynchrone Speicherverwaltung implementiert ist.
  • Während einer synchronen Speicherverwaltung werden Ausnahmen sofort bearbeitet und eine Ausführung des Fehlerbefehls wird dann erneut begonnen. Der Befehl wird durch Zurückverfolgen des Vektorspeicherzugriffsbefehls bis zum Anfang erneut begonnen. An jener Stelle wird ein Speicherverwaltungsfehler initiiert, und der Wert im PC 530 identifiziert den Fehler-Vektorspeicherzugriffsbefehl. Das VSAR 400 wird während synchroner Speicherverwaltungsausnahmen ignoriert, weil Speicherverwaltungsausnahmen bearbeitet werden, wenn sie auftreten, so daß es keine Notwendigkeit zum Speichern von Zustandsinformationen über die VPU 30 gibt.
  • Eine Adresse 520 im Stapel-Datenübertragungsblock 500 stellt eine virtuelle Adresse in der Seite in der Speicher-Verarbeitungseinheit 20 dar, wo die Ausnahme aufgetreten ist. Der PC 530 ist der Programmzähler des Befehls, der zur Ausnahme führte. Es ist zu beachten, daß der Befehl, der zur Ausnahme führt, unterschiedlich von dem Befehl ist, der den Vektorspeicherzugriff im Falle einer asynchronen Speicherverwaltung durchführt. Die PSL 540 ist ein Programmzustandswort für die SPU 15.
  • Wie es oben erklärt ist, wird während einer asynchronen Speicherverwaltung nicht nur der SPU 15 erlaubt, gleichzeitig mit der VPU 30 Skalarbefehle auszuführen, sondern die VPU 30 kann Vektorarithmetikbefehle zusammen mit einem Vektorspeicherzugriffsbefehl ausführen. Wenn eine Speicherverwaltungsausnahme bei Implementierungen auftritt, die eine asynchrone Speicherverwaltung verwenden, dann führt die VPU 30 Schritte durch, um ihren Zustand einzufrieren, so daß der Zustand gespeichert und später erneut aufgerufen werden kann, um die Verarbeitung an der Stelle wiederaufzunehmen, wo die Ausnahme auftrat.
  • Insbesondere dann, wenn die VPU 30 einen Vektorspeicherzugriffsbefehl ausführt, führt die Decodier- und Steuerlogik 66 tatsächlich mehrere Unteroperationen aus, die zum Implementieren eines solchen Befehls nötig sind. Beispielsweise führt die Decodier- und Steuerlogik 66 für eine Vektorladeoperation für jedes Element vom 0- ten Element bis zum n-ten Element (n = die Inhalte des VLR 82 - 1) die folgenden Unteroperationen aus:
  • 1 Implementieren verschiedener Maske nfunktionen;
  • 2. Prüfen einer Vektorausrichtung; und
  • 3. Laden des entsprechenden Vektorelements mit den Inhalten an der nächsten Stelle der Speicher-Verarbeitungseinheit 20, beginnend bei einer von einem Operanden des Vektorspeicherzugriffsbefehls erzeugten Adresse.
  • Jedem bei einer Ausführung eines Vektorbefehls involvierten Vektorregister ist einer mehrerer Zähler 44 in der Vektorregister-Steuerlogik 60 zugeordnet, der von n bis 0 nach unten zählt, wenn die Unteroperationen durchgeführt werden, und der eine Adresse Üir die zugehörigen Vektorelemente im zugehörigen Vektorregister liefert. Wenn ein Vektorbefehl aufgrund einer Speicherverwaltungsausnahme angehalten wird, zeigt der Wert eines der Zähler 44, der zum Fehlerbefehl gehört, die Unteroperation an, bei der die Ausnahme auftrat. Jener Wert, sowie auch der zu jedem anderen unbeendeten Befehl gehörende Zählwert, wird vorzugsweise als Teil der Information über den Zustand der VPU 30 gespeichert. Wenn die VPU 30 mit der gespeicherten Zustandsinformation erneut geladen wird, und der Speicherverwaltungsfehler aufgerufen wird, werden die Zähler 44 mit den Unteroperationswerten neu geladen, so daß die Ausführung des Fehlerbefehis und aller unbeendeten Befehle dort beginnen kann, wo die Ausnahme auftrat. Diese Hardware ist detaillierter in U.S.S.N. 093,499 gezeigt, die hierin durch Bezugnahme enthalten ist.
  • Wenn die Speicher-Verarbeitungseinheit 20 während der Verarbeitung eines Vektorspeicherzugriffsbefehls die Vektor-Decodier- und -Steuerlogik 66 über eine Speicherverwaltungsausnahme informiert, dann setzt die Logik 66 das PMF-Bit 260 und das MF-Bit 250 des VPSR 200. Die VPU 30 informiert jedoch nicht die SPU 15 über den Ausnahmezustand, was zuläßt, daß die SPU 15 eine Verarbeitung von Skalarbefehlen fortführt.
  • Zusätzlich erlaubt die Logik 66 der VPU 30, ein Ausführen irgendwelcher beim Auftreten der Ausnahme begonnenen Vektorbefehle zu beenden, solange jene Vektorbefehle keine Quellendaten verwenden, deren Gültigkeit durch den Ausnahmezustand beeinträchtigt werden könnte. Dies wird durch Untersuchen der Quellen- und Zielortregister durchgeführt. Wie es oben unter Bezugnahme auf Fig. 3 erklärt ist, identifizieren Adressengeneratoren 108,109,110 die Vektorregister in der Vektorregisterdatei 35, die die Daten für den Vektorbefehl enthalten. Diese Adressengeneratoren identifizieren auch das Vektorregister, das die Ergebnisse der Vektorbefehle empfängt. Wenn die Logik 66 bestimmt, daß die Zielortregisterwerte ZIELORTREG für einen Fehlerbefehl dieselben wie die Quellenregisterwerte QUELLENREG für einen anderen Befehl sind, wird auch jener andere Befehl angehalten.
  • Die Speicherverwaltungsausnahme wird nicht weiter bearbeitet, bis die SPU 15 das nächste mal versucht, einen Vektorbefehl zur VPU 30 zu senden. Zu diesem Zeitpunkt beginnt die SPU 15 ein Ausftihren eines Verfahrens zum Senden des Vektorbefehls zur VPU 30, wovon das bevorzugte Verfahren durch das Flußdiagramm in Fig. 15 gezeigt ist.
  • Vor einem Senden eines Vektorbefehls zur VPU 30 prüft die SPU 15 zuerst das VEN-Bit 210, um zu sehen, ob die VPU 30 gesperrt ist (Schritt 700). Die SPU 15 handelt somit als Befehlsblockiereinrichtung gemäß der vorliegenden Erfindung zum Verhindern des Führens von Vektorbefehlen zur VPU 30, wenn das VEN-Bit 210 anzeigt, daß die VPU 30 gesperrt ist. Wenn es so ist, schließt die SPU 15 daraus, daß etwas anderes als eine Speicherverwaltungsausnahme aufgetreten ist (zumindest beim bevorzugten Ausführungsbeispiel), und führt einen nichtprogrammierten Programmsprung für einen Fehler bezüglich eines gesperrten Vektorprozessors aus (710). Das Programm zum Bearbeiten dieses Fehlers ist in der folgenden Beschreibung zum arithmetischen Bearbeiten von Ausnahmen erörtert. Eine Einrichtung zum Erfassen, wann die VPU 30 gesperrt ist, und zum Einstellen des nichtprogrammierten Programmsprungs sind in einer anderen Schaltung oder anderen Teilen des Mikrocodes in der Steuerlogikeinheit 40 der SPU 15 enthalten.
  • Wenn die VPU 30 nicht gesperrt ist, prüft die SPU 15 dann das PMF-Bit 260 (Schritt 720). Wenn das PMF-Bit 260 gesetzt ist, gab es eine nicht berichtete Speicherverwaltungsausnahme. Die SPU 15 setzt jenes Bit zurück (Schritt 730) und tritt in eine Speicherverwaltungs-Fehlerbearbeitungseinheit zum Verarbeiten der Vektorprozessor-Speicherverwaltungsausnahme ein (Schritt 735). Jene Fehlerbearbeitungseinheit ist eine standardmäßige Speicherverwaltungs-Fehlerbearbeitungseinheit, die Fachleuten auf dem Gebiet wohlbekannt ist.
  • Wenn das PMF-Bit 260 nicht gesetzt war (Schritt 720), prüft die SPU 15 als nächstes das MF-Bit 250 (Schritt 740). Wenn das MF-Bit 250 gesetzt ist, was anzeigt, daß die Ursache für die Speicherausnahme korrigiert worden ist, aber die die Ausnahme verursachende Unteroperation noch nicht ausgeführt worden ist, löscht die SPU 15 das MF-Bit (Schritt 743) und startet die VPU 30 erneut, um die Fehlerspeicherbezugnahme wieder erneut zu versuchen (Schritt 746).
  • Nachdem die VPU 30 erneut gestartet ist, oder wenn das MF-Bit 250 nicht gesetzt war, wird eine (nicht gezeigte) Befehlswarteschlange der VPU 30 geprüft, um zu sehen, ob sie voll ist (Schritt 750). Wenn es so ist, dann wird erneut in das Verfahren in Fig. 15 eingetreten. Wenn die Warteschlange der VPU 30 nicht voll ist, dann gibt die SPU 15 den nächsten Befehl aus (Schritt 760), der der Hängevektorbefehl ist, der anfangs zur Speicherverwaltungsausnahme geführt hat.
  • 3. Arithmetikausnahmen
  • Ungleich der Situation bei Vektorspeicherverwaltungsausnahmen werden Vektorbefehle, die auf Vektorarithmetikausnahmen treffen, immer bis zum Ende ausgeführt. Wenn eine Arithmetikausnahme auftritt, wird entweder ein Fehler oder ein abgerundetes Ergebnis in das entsprechende Vektorregisterelement geschrieben. Der Arithmetikausnahmebedingungstyp und die Zielortregisternummer werden im Ausnahmebedingungs-Zusammenfassungsfeld 320 des VAER 300 aufgezeichnet. Die Maskeneinheit 90 in der VPU 30 liest dann das EXC-Bit 174 für den Vektorbefehl, um zu bestimmen, ob Ausnahmen freigegeben sind. Wie es oben erklärt ist, gibt dieses Bit Ausnahmen für einen Gleitkomma-Unterlauf und einen ganzzahligen Überlauf frei.
  • Wenn das EXC-Bit 174 für einen Befehl gesetzt ist, der einen Gleitkomma-Unterlauf oder einen ganzzahligen Überlauf veranlaßt, sendet die VPU 30 einen für einen Operandenwert reservierten Fehler für den Gleitkomma-Unterlauf oder die Bits niedriger Ordnung für einen ganzzahligen Überlauf zum geeigneten Zielortregisterelement, löscht das VEN-Bit 210 des VPSR 200 und speichert die geeignete Arithmetikausnahmeinformation im VAER 300. Die VPU 30 fährt mit der Verarbeitung fort. Die VPU 30 folgt demselben Verfahren für einen Gleitkomma-Überlauf, für eine Gleitkomma-Division durch Null und für Operandenarithmetikausnahmen, die für eine Gleitkommadarstellung reserviert sind, welche nicht gesperrt werden können.
  • Die sechzehn Bits der Vektorzielortregistermaske 310 des VAER 300 zeigen an, welche der sechzehn Vektorregister einen fehlerhaften Wert aufgrund des Auftretens von Arithmetikausnahmen empfangen haben. Die Ausnahmen vom Arithmetiktyp sind ein Gleitkomma-Unterlauf, eine Gleitkomma-Division durch Null, ein Gleitkomma-Reserveoperand, ein Gleitkomma-Überlauf und ein ganzzahliger Überlauf. Wenn eine Vektorarithmetikausnahme auftritt, sperrt die VPU 30 sich selbst. Die VPU 30 beendet die Ausführung des Vektorbefehls, der die Ausnahme veranlaßt, so wie auch alle anderen Befehle, die schon in der VPU 30 sind, verweigert aber dann die Annahme nachfolgender Vektorbefehle von der SPU 15, bis sie erneut freigegeben ist. Die VPU 30 wird durch Schreiben einer Null zum VEN-Bit 210 im VPSR 200 gesperrt.
  • Wenn die SPU 15 später versucht, einen Vektorbefehl zur VPU 30 zu senden, wenn sie gesperrt ist, tritt ein Fehler bezüglich einer Sperrung des Vektorprozessors auf.
  • 4. Zusammenhangschalten und Decodieren von Befehlen
  • Speicherverwaltungsausnahmen und Arithmetikausnahmen sind am schwierigsten zu bearbeiten, wenn die VPU 30 und die SPU 15 Befehle von abwechselnd ausführenden Verfahren oder Programmen ausführen. Diese Bedingung tritt auf, wann immer es ein Zusammenhangschalten gegeben hat. Im allgemeinen wird während des Zusammenhangschaltens ein großer Teil der System-"Kosten" größer, und selbst kleine Einsparungen können ein Datenverarbeitungssystem sehr viel effizienter machen.
  • Fig. 16 zeigt ein Flußdiagramm eines bevorzugten Algorithmus, der während eines Zusammenhangschaltens durchgeführt wird, wenn eine Ausführung eines Prozesses, der "letzter Prozeß" genannt wird, angehalten wird, und eine Ausführung eines neuen Prozesses, der "aktueller Prozeß" genannt wird, begonnen wird. Wenn einmal ein Zusammenhangschalten auftritt (Schritt 800), wartet die SPU 15, bis die VPU 30 nicht besetzt ist (Schritt 801). Ein Nicht-besetzt-Zustand wird durch das BSY-Bit 290 des VPSR 200 mit einem Wert von Null angezeigt. Wenn einmal die VPU 30 nicht besetzt ist, sichert die SPU 15 nur die Skalarzustandsinformation des letzten Prozesses (Schritt 802). Jene Zustandsinformation wird durch ihr Speichern in Stellen in der Speicher-Verarbeitungseinheit 20 gesichert, die dem letzten Prozeß entsprechen. Die SPU 15 enthält ihr eigenes Prozeßzustandsregister (siehe PSL 540 in Fig. 14), dessen Inhalte als Teil des Schritts des Sicherns des letzten Zustands der SPU 15 gesichert werden. Während dieses Schritts werden auch die Inhalte aller Register in der SPU 15 gesichert.
  • Die Zustandsinformation der VPU 30 wird zu dieser Zeit nicht gespeichert. Dies hält ein Ansteigen der Kosten auf, die durch Speichern der Zustandsinformation der VPU 30 verursacht werden, und kann sie eliminieren. Ein Speichern der Zustandsinformation der VPU 30 würde nicht nur eine Speicherung des VPSR 200, des VAER 300, des VSAR 400 und der anderen Systemregister erfordern, sondern er würde die Speicherung der 16 Vektorregister erfordern, was viel wichtiger ist, und zwar jedes mit 64 Elementen, was einen großen Teil der Systemresourcen besetzen würde.
  • Als nächstes sperrt die SPU 15 die VPU 30 durch Löschen des VEN-Bits 210 im VPSR 200 (Schritt 804). Das Löschen des VEN-Bits 210 hält den aktuellen Prozeß vom Ausführen eines Vektorbefehis ab, ohne daß ein Fehler bezüglich einer Sperrung des Vektorprozessors auftritt. Wie es ausführlicher nachfolgend erklärt wird, muß der Zustand der VPU 30 für den letzten Prozeß in der Tat nicht während der Ausführung des aktuellen Prozesses gespeichert werden, wenn der aktuelle Prozeß keinen Vektorbefehl ausführt.
  • Als nächstes wird die Skalarzustandsinformation des aktuellen Prozesses von Stellen in der Speicher-Verarbeitungseinheit 20 geladen, die dem aktuellen Prozeß entsprechen (Schritt 806), und der aktuelle Prozeß beginnt dann die Ausführung (Schritt 808). Weil der Vektorzustand des aktuellen Prozesses nicht während eines Zusammenhangschaltens geladen wird, enthält die VPU 30 die Zustandsinformation des letzten Prozesses, um einen Vektorbefehl auszuführen. Jedoch kann auf diesen Zustand nicht durch den aktuellen Prozeß zugegriffen werden, weil die VPU 30 gesperrt ist.
  • Fig. 17 zeigt ein Flußdiagramm für einen bevorzugten Algorithmus, der jedesmal dann durchzuführen ist, wenn ein Prozeß eine Ausführung eines neuen Befehls beginnt. Vorzugsweise werden die in Fig. 17 gezeigten Schritte in der SPU 15 durchgeführt.
  • Wenn der Befehl ein privilegierter Befehl ist (Schritt 900) und die SPU 15 nicht im privilegierten Modus ist (Schritt 902), tritt ein unzulässiger nichtprogrammierter Programmsprungbefehl auf (Schritt 904) und der in Fig. 17 gezeigte Algorithmus wird beendet. Das Verfahren zum Bearbeiten des unzulässigen nichtprogrammierten Programmsprungbefehls ist fast allen Datenverarbeitungssystemen gemeinsam, die privileg ierte Befehle enthalten, und ist Fachleuten auf dem Gebiet wohlbekannt.
  • Wenn der Befehl ein privilegierter Befehl ist (Schritt 900) und die SPU 15 im privilegierten Modus ist (Schritt 902), dann wird der Befehl ausgeführt (Schritt 905).
  • Wenn der Befehl kein privilegierter Befehl ist (Schritt 900) und kein Vektorbefehl ist (Schritt 908), führt die SPU 15 den Befehl aus (Schritt 910). Wenn jedoch der Befehl ein Vektorbefehl ist (Schritt 908), testet der Mikrocode in der Steuerlogikeinheit 40 das VEN-Bit 210 des VPSR 200 (Schritt 912). Wenn das VEN-Bit 210 gesetzt ist, was anzeigt, daß die VPU 30 freigegeben ist, führt die VPU 30 den Befehl aus (Schritt 914).
  • Wenn das VEN-Bit 210 nicht gesetzt ist (Schritt 912), dann tritt ein Fehler bezüglich einer Sperrung des Vektorprozessors auf (Schritt 916). Wie es oben erklärt ist, ist das VEN-Bit 210 nicht gesetzt, wenn der aktuelle Prozeß noch keinen Vektorbefehl ausgeführt hat oder wenn eine Arithmetikausnahmebedingung auftritt. Wenn der aktuelle Prozeß versucht, einen Vektorbefehl auszuführen, wenn das VEN-Bit 210 nicht gesetzt ist, muß das System sicherstellen, daß der Vektorzustand des aktuellen Prozesses in den Speicher geschaltet wird, und daß alle Ausnahmebedingungen verarbeitet werden, bevor der Vektorbefehl des aktuellen Prozesses ausgeführt wird.
  • Fig. 18 zeigt ein Flußdiagramm für einen bevorzugten Algorithmus zum Verarbeiten eines Fehlers bezüglich einer Sperrung des Vektorprozessors, wie beispielsweise jenen, der im Schritt 916 der Fig. 17 gezeigt ist. Es gibt drei Ziele bei diesem Algorithmus: (1) Verarbeiten beliebiger Vektorausnahmebedingungen; (2) Speichern aller Zustandsinformationen der VPU 30 von dem Prozeß, der zuletzt einen Vektorbefehl ausführte; und (3) Wiederhervorholen der Zustandsinformation der VPU 30 für den aktuellen Prozeß. Die Punkte (2) und (3) sind nicht nötig, wenn der aktuelle Prozeß derselbe wie der Prozeß ist, den die VPU 30 zuletzt verwendete. Punkt (1) ist nur nötig, wenn eine Ausnahmebedingung anhängig ist. Es ist jedoch möglich, daß die Punkte (1), (2) und (3) alle beendet sein müssen, bevor der aktuell ausführende Prozeß einen Vektorbefehl ausführt.
  • Der erste Schritt bei der Operation für einen Fehler bezüglich einer Sperrung des Vektorprozessors besteht im Bestimmen, ob der aktuelle Prozeß auch der letzte Prozeß ist, der die VPU 30 verwenden muß, um einen Vektorbefehl auszuführen (Schritt 1000). Wenn die Bestimmung im Schritt 1000 "JA" ist, ist es unnötig, die Zustandsinformation für die VPU 30 zu erneuern. Wenn die Bestimmung im Schritt 1000 "JA" ist, dann wird bestimmt, ob es irgendwelche anhängigen Arithmetik- oder Speicherverwaltungsausnahmebedingungen gibt (Schritt 1002). Wie es oben erklärt ist, verarbeitet das Datenverarbeitungssystem 10 ungleich den Systemen nach dem Stand der Technik Ausnahmen nicht dann, wenn sie auftreten, sondern verarbeitet sie statt dessen dann, wenn die VPU 30 das nächste Mal verwendet wird. Dies kann dieselbe Zeit sein, zu der die VPU 30 ihre Vektorzustandsinformation sichert und die Vektorzustandsinformation für den aktuellen Prozeß wiederhervorholt. Die Anwesenheit von Ausnahmebedingungen wird durch die Untersuchung der SPU 15 des PMF-Bits 260 (Speicherverwaltungsausnahmen) und des AEX-Bits 270 (Arithmetikausnahmen) des VPSR 200 bestimmt.
  • Wenn es eine anhängige Arithmetikausnahme gibt, dann wird das AEX-Bit 270 gelöscht (Schritt 1003), und die Ausnahme wird verarbeitet (Schritt 1004), und zwar auf eine für die Ausnahme geeignete Weise gemäß einem Verfahren, das Fachleuten auf dem Gebiet der Datenverarbeitung bekannt ist. Wenn es keine anhängige Arithmetikausnahmebedingung gibt (Schritt 1002), kann es nötig sein, zu bestimmen, ob seit dem letzten Fehler bezüglich einer Sperrung des Vektorprozessors ein Zusammenhangschalten aufgetreten ist. Selbst wenn der aktuelle Prozeß derselbe Prozeß wie derjenige ist, den die VPU 30 zuletzt verwendete (Schritt 1000), und es daher keine Notwendigkeit zum Sichern oder erneuten Speichern der Vektorzustandsinformation der VPU 30 gibt, kann es nötig sein, Register in der VPU 30 zu erneuern, die durch eine normale skalare Verarbeitung beeinflußt werden. Wenn die VPU 30 beispielsweise Kopien der in der SPU 15 angeordneten Speicherverwaltungsregister enthält, müssen die Register in der VPU 30 nach jedem Zusammenhangschalten erneuert werden, um sicherzustellen, daß ihre Inhalte mit den Inhalten der Register der SPU 15 übereinstimmen.
  • Als nächstes wird die VPU 30 durch Setzen des VEN-Bits 210 freigegeben (Schritt 1010). Die Steuerung kehrt dann zum Schritt B des Befehlsdecodieralgorithmus der Fig. 17 zurück (Schritt 1012), und der aktuelle Prozeß beginnt ein Ausführen eines neuen Befehls.
  • Wenn der aktuelle Prozeß nicht derselbe Prozeß wie derjenige ist, den die VPU 30 zuletzt verwendete (Schritt 1000), dann treten mehrere Schritte auf. Die SPU 15 wartet zuerst, bis die VPU 30 keinen Vektorbefehl mehr ausführt (Schritt 1014). Dieser Nicht-besetzt-Zustand wird durch einen Wert von Null im BSY-Bit 290 des VPSR 200 angezeigt. Als zweites wird bestimmt, ob irgendwelche anhängigen Arithmetikausnahmen existieren (Schritt 1016). Wenn das AEX-Bit 270 des VPSR 200 gesetzt ist, was das Vorhandensein einer anhängigen Arithmetikausnahme anzeigt, wird der Arithmetikausnahmezustand, wenn er im VAER 300 enthalten ist, gesichert, und die Existenz einer Arithmetikausnahme für den letzten Prozeß zur Verwendung durch die VPU 30 wird für eine spätere Verarbeitung vorgemerkt (Schritt 1018). Eine Vormerkung einer solchen Ausnahme wird vorzugsweise über ein Softwareflag erreicht, das zum letzten Prozeß zur Verwendung durch die VPU 30 gehört.
  • Der nächste Schritt besteht im Bestimmen, ob eine anhängige asynchrone Speicherverwaltungsausnahme existiert (Schritt 1020). Vorzugsweise wird dann, wenn eine solche Ausnahme existiert, wie es durch einen Wert von Eins im MF-Bit 250 des VPSR 200 angezeigt wird, ein zum letzten Prozeß zur Verwendung durch die VPU 30 gehörendes Softwareflag gesetzt, und eine implementierungsspezifische Vektorinformation wird für jeden Prozeß gesichert (Schritt 1022).
  • Als nächstes wird die VPU 30 durch Setzen des VEN-Bits 210 des VPSR 200 freigegeben, und die VPU 30 wird durch Setzen des RST-Bits 200 des VPSR 300 rückgesetzt (Schritt 1024). Wenn der aktuelle Prozeß nicht der gleiche wie der Prozeß ist, den die VPU 30 zuletzt verwendete (Schritt 1000), dann muß die Zustandsinformation der VPU 30 erneuert werden Dies wird in zwei Schritten durchgeführt. Zuerst wird die Zustandsinformation in der VPU 30 in einem Bereich der Speicher- Verarbeitungseinheit 20 entsprechend dem Prozeß gespeichert, den die VPU 30 zuletzt verwendete (Schritt 1026) Es können auch Speicherverwaltungsregister in der SPU 15 und entsprechende Speicherverwaltungsregister in der VPU 30 vorgesehen sein, um eine virtuelle Adressierung und Speicherschutzfunktionen zu bewirken. In diesem Fall kann es nötig sein, daß die Speicherverwaltungsregister in der VPU 30 erneuert werden, um sigherzustellen, daß sie mit den entsprechenden Speicherverwaltungsregistern in der SPU 15 übereinstimmen. Als nächstes wird die Zustandsinformation für die VPU 30 für den aktuellen Prozeß aus einem Bereich der Speicher-Verarbeitungseinheit 20 entsprechend dem aktuellen Prozeß wiederhervorgeholt und in die Vektorregister der VPU 30 gespeichert (Schritt 1027).
  • Als nächstes wird ein zum aktuellen Prozeß gehörendes Softwareflag geprüft, um zu bestimmen, ob es eine anhängige asynchrone Speicherverwaltungsausnahme für den aktuellen Prozeß gibt (Schritt 1028). Wenn eine solche anhängige Ausnahme existiert, wird das Softwareflag für den aktuellen Prozeß gelöscht, und der Vektorzustand zur Zeit der asynchronen Speicherverwaltungsausnahme wird erneut gespeichert (Schritt 1030). Dies wird erreicht durch Schreiben der Adresse der gesicherten Vektorzustandsinformation zum VSAR 400 und durch Setzen des RLD-Bits 240 und des VEN-Bits 210 des VPSR 300, wie es oben im Abschnitt erörtert ist, der die Register der VPU 30 beschreibt.
  • Als nächstes wird ein zum aktuellen Prozeß gehörendes Softwareflag geprüft, um zu bestimmen, ob es eine anhängige Arithmetikausnahme für den aktuellen Prozeß gibt (Schritt 1032). Wenn eine solche anhängige Ausnahme existiert, wird das VEN- Bit 210 des VPSR 300 gelöscht, was die VPU 30 sperrt, und die Arithmetikausnahme wird ähnlich zum Schritt 1004 auf eine Weise verarbeitet, die einem Verfahren entspricht, das Fachleuten auf dem Gebiet der Datenverarbeitung bekannt ist (Schritt 1034).
  • Wenn der Algorithmus zum Bearbeiten eines Fehlers bezüglich einer Sperrung eines Vektorprozessors der Fig. 18 beendet ist (Schritt 1036), springt die Steuerung zum Schritt B des Befehlsdecodieralgorithmus der Fig. 17 zurück, und der aktuelle Prozeß beginnt die Ausführung eines neuen Befehls.
  • Ein Zusammenhangschalten, das für Vektorprozessoren eine kostspielige Operation sein kann, wird somit signifikant vereinfacht. Ein Ansteigen der zu einem solchen Schalten gehörenden Kosten wird aufgehalten, bis sie nicht mehr nötig sind.
  • Es ist Fachleuten auf dem technischen Gebiet klar, daß verschiedene Abänderungen und Veränderungen bezüglich des Datenverarbeitungssystems und der Verfahren der vorliegenden Erfindung und beim Aufbau dieses Systems durchgeführt werden können, ohne vom Schutz der beanspruchten Erfindung abzuweichen. Andere Ausführungsbeispiele der Erfindung werden den Fachleuten auf dem technischen Gebiet durch Betrachtung der Beschreibung und durch Ausführung der Erfindung klar. Die Beschreibung und die Ausführungsbeispiele sollen nur als Beispiel betrachtet werden, wobei der tatsächliche Schutzumfang der Erfindung durch die folgenden Ansprüche gezeigt ist.

Claims (13)

1. Datenverarbeitungssystem (10) zum Ausführen von Vektorbefehlen und Skalarbefehlen, die jeweils einen Operations-Codeteil (150,150'), der eine auszuführende Operation bestimmt, und einen Operanden-Zeigerteil (140, 154-158,154'-156'), der bei der Ausführung der Operation verwendete Operanden bestimmt, enthalten, wobei das Datenverarbeitungssystem folgendes aufweist:
einen Speicher (20) zum Speichern der Operanden und der Befehle;
eine Befehls-Holeinrichtung (25) zum Wiedergewinnen der Befehle aus dem Speicher;
eine Befehls-Parsereinrichtung (50) zum Trennen der Operations- Codeteile (150, 150') und der Operanden-Zeigerteile (140,154-156,154'- 156') der Vektor- und der Skalarbefehle;
eine Operanden-Holeinrichtung (185) zum Wiedergewinnen der durch die Operanden-Zeigerteile der Vektor- und Skalarbefehle bestimmten Operanden aus dem Speicher (20);
eine Vektor-Verarbeitungseinrichtung (30) zum Ausführen der Vektorbefehle, wobei die Vektorverarbeitungseinrichtung folgendes enthält:
eine Einrichtung (60, 90) zum Speichern von Vektordaten in den Speicher (20);
eine Einrichtung (60) zum Wiedergewinnen von Vektordaten aus dem Speicher (20); und
eine Vektor-Speichereinrichtung (35) zum Speichern der bei der Ausführung der Vektorbefehle verwendeten Vektordaten;
dadurch gekennzeichnet, daß
die Vektor-Verarbeitungseinrichtung (30) weiterhin folgendes enthält:
eine Vektorextrahiereinrichtung (65,103) zum Decodieren eines der Operanden (160,160', 160") für jeden der Vektorbefehle, um Vektorzeiger (163-165) zu Vektordaten zu identifizieren, die in den Vektor-Speichereinrichtung (35) der Vektor- Verarbeitungseinrichtung (30) gespeichert sind; und
eine Einrichtung (66) zum Holen von durch die Vektorzeiger (163-165) identifizierten Vektordaten aus der Vektor- Speichereinrichtung (35); und
das Datenverarbeitungssystem weiterhin folgendes aufweist: eine Vektorbefehls-Führungseinrichtung (15), die mit der Befehls- Parserseinrichtung (50) gekoppelt ist, zum Führen der Operations- Codeteile (159) und der Operanden der Vektorbefehle zu der Vektor- Verarbeitungseinrichtung (30).
2. Datenverarbeitungssystem (10) nach Anspruch 1, wobei
die Vektor-Verarbeitungseinrichtung (30) auch folgendes enthält:
eine Vektor-Arithmetik- und -Logikeinrichtung (70, 80) zum Durchführen der Operationen, die in dem Operations-Codeteil (150) der Vektorbefehle angezeigt sind, und
eine Einrichtung zum Speichern von Ergebnissen aus der Vektor-Arithmetik- und -Logikeinrichtung (70, 80) gemäß einem der durch die Vektor-Extrahiereinrichtung (65) decodierten Vektorzeiger in die Vektor-Speichereinrichtung (35).
3. Datenverarbeitungssystem (10) nach Anspruch 2, wobei die Vektorbefehis- Führungseinrichtung eine Befehls-Decodiereinrichtung (40) enthält, die mit der Befehls-Parsereinrichtung (50) gekoppelt ist, zum Decodieren der Operations-Codeteile (150), um die Vektorbefehle von den Skalarbefehlen zu unterscheiden.
4. Datenverarbeitungssystem (10) nach Anspruch 1, wobei das Datenverarbeitungssystem auch eine Skalar-Verarbeitungseinrichtung (15) zum Ausführen der Skalarbefehle enthält.
5. Datenverarbeitungssystem (10) nach Anspruch 1, wobei die Operanden- Holeinrichtung (185) einen Operanden, der Vektorsteuerwort (160) genannt wird, einschließlich einer Vielzahl von Registernummerteilen wiedergewinnt,
wobei die Vektor-Speichereinrichtung (35) eine Vielzahl von numerierten Vektorregistern zum Speichern der Vektordaten enthält, und
wobei die Vektor-Verarbeitungseinrichtung (30) eine Vektor- Holeinrichtung (60) zum Wiedergewinnen der Vektordaten aus den numerierten Vektorregistern entsprechend den Registernummerteilen des Vektorsteuerwortes (160) enthält.
6. Datenverarbeitungssystem nach Anspruch 1, wobei die Operanden- Holeinrichtung (185) einen Operanden, der Vektorsteuerwort (160) genannt wird, einschließlich eines Flag-Teils (162) wiedergewinnt, und
wobei die Vektor-Verarbeitungseinrichtung (30) auch eine Flag- Decodiereinrichtung (103) zum Interpretieren des Flag-Teils (162) des Vektorsteuerwortes (160) enthält, um die Ausführung des Vektorbefehls zu steuern, der einen Operanden-Zeigerteil (140) enthält, der das Vektorsteuerwort (160) bestimmt.
7. Datenverarbeitungssystem nach Anspruch 6, wobei der Flag-Teil (162) ein Masken-Freigabeflag (170) enthält, zum Zeigen, ob eine Maskenoperation stattfinden soll, und ein Anpassung-Wahr/Falsch-Flag (172) zum Anzeigen eines Typs eines Signais zum Steuern einer Maskierung, und
wobei die Vektor-Verarbeitungseinrichtung (30) folgendes enthält:
eine Vielzahl von Vektorregistern (35), die jeweils Vektordaten mit einer Vielzahl von Vektorelementen enthalten,
ein Maskenregister (92) zum Identifizieren derjenigen der Vektorelemente in ausgewählten der Vektorregister (35), die zu verarbeiten sind, und
eine Maskeneinrichtung (90), die auf das Masken- Freigabeflag (170) und das Anpassung-Wahrlfalsch-Flag (172) antwortet, zum Implementieren der Maskenoperation, wenn es das Masken-Freigabeflag (170) so anzeigt.
8. Datenverarbeitungssystem nach Anspruch 6, wobei der Flag-Teil (162) ein Ausnahme-Freigabeflag (174) enthält, und
wobei die Vektor-Verarbeitungseinrichtung (30) folgendes enthält:
eine Recheneinrichtung (70, 80) zum Ausführen der Vektorbefehle und zum Senden eines Ausnahmesignals, wenn die Ausführung der Vektorbefehle zu einem Fehler (72, 82) führt, und
eine Ausnahme-Blockierungseinrichtung zum Blockieren des Sendens des Ausnahmesignals, wenn das Ausnahme- Freigabeflag (174) gesetzt ist.
9. Datenverarbeitungssystem nach Anspruch 2, wobei die Operanden- Holeinrichtung (185) einen Operanden, der Vektorsteuerwort (160) genannt wird, einschließlich eines den Operations-Codeteil (150) eines entsprechenden Vektorbefehls näher definierenden Unteroperationsteus (162,166,168) wiedergewinnt, und
wobei die Vektor-Arithmetik- und -Logikeinrichtung (70, 80) die Vektoroperationen, die in dem Operations-Codeteil (150) der Vektorbefehle angezeigt sind, gemäß dem Unteroperationsteil des Vektorsteuerwortes (160) ausführt.
10. Verfahren zum Ausführen von Vektorbefehlen und Skalarbefehlen, die jeweils einen Operations-Codeteil (150,150'), der eine auszuführende Operation bestimmt, und einen Operanden-Zeigerteil (140,154-158,154'- 156'), der in einem Speicher (20) gespeicherte und bei der Ausführung der in dem Operations-Codeteil desselben der Befehle bestimmten Operation verwendete Operanden bestimmt, enthalten, wobei der Vektorbefehl als einen der Operanden ein Steuerwort (140) enthält, das zusätzliche Vektor- Operandenzeiger (163-165) und einen den Operations-Codeteil (150) des Vektorbefehls näher definierenden Unteroperationsteil (162,166,168) enthält, wobei das Verfahren folgende Schritte aufweist:
Trennen (196) der Operations-Codeteile (150,150') und der Operanden-Zeigerteile (140,154-158, 154'-156') der Vektor- und der Skalarbefehle; und
Wiedergewinnen (198) der durch die Operanden-Zeigerteile der Vektor- und Skalarbefehle bestimmten Operanden aus dem Speicher (20);
gekennzeichnet durch folgende Schritte:
Führen (199) der Operations-Codeteile (150) und der Operanden der Vektorbefehle zu einer Vektor-Verarbeitungseinheit (30);
Ausführen der Vektorbefehle in der Vektor-Verarbeitungseinheit (30) durch:
Decodieren des Steuerwortes (160) in jedem der Vektorbefehle, um die zusätzlichen Vektor-Operandenzeiger (163- 165) für jene Vektorbefehle zu extrahieren;
Holen von Vektoren, die durch die extrahierten zusätzlichen Vektor-Operandenzeiger (163-165) bestimmt sind, aus einer Vektor- Speichereinrichtung (35) in der Vektor-Verarbeitungseinheit; und
Durchführen der in den Operations-Codeteilen (150) der Vektorbefehle und dem Steuerwort (160) angezeigten Operationen;
wobei der Schritt des Trennens für sowohl die Vektorbefehle als auch die Skalarbefehle im wesentlichen auf dieselbe Weise durchgeführt wird; und
wobei der Schritt des Wiedergewinnens für sowohl die Vektorbefehle als auch die Skalarbefehle im wesentlichen auf dieselbe Weise durchgeführt wird.
11. Verfahren nach Anspruch 10, das weiterhin den Schritt zum Speichern von Ergebnissen (190) von den Operationen in die Vektor- Speichereinrichtung (35) an einer durch einen der zusätzlichen Vektor- Operandenzeiger (163-165) bestimmten Stelle enthält.
12. Verfahren nach Anspruch 10, das weiterhin den Schritt zum Holen von durch die Operanden-Zeigerteile (152) bestimmten Vektoren aus dem Speicher (20) enthält.
13. Verfahren nach Anspruch 10. das weiterhin den Schritt zum Speichern von Ergebnissen (192) aus den Operationen in den Speicher (20) an einer durch einen der Operanden-Zeigerteile (152) bestimmten Stelle enthält.
DE68924546T 1988-03-18 1989-03-06 Verfahren und Vorrichtung zur Ausführung von Befehlen für ein Vektorverarbeitungssystem. Expired - Fee Related DE68924546T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US07/170,395 US4949250A (en) 1988-03-18 1988-03-18 Method and apparatus for executing instructions for a vector processing system

Publications (2)

Publication Number Publication Date
DE68924546D1 DE68924546D1 (de) 1995-11-23
DE68924546T2 true DE68924546T2 (de) 1996-06-05

Family

ID=22619698

Family Applications (1)

Application Number Title Priority Date Filing Date
DE68924546T Expired - Fee Related DE68924546T2 (de) 1988-03-18 1989-03-06 Verfahren und Vorrichtung zur Ausführung von Befehlen für ein Vektorverarbeitungssystem.

Country Status (9)

Country Link
US (1) US4949250A (de)
EP (1) EP0335515B1 (de)
JP (1) JPH0215369A (de)
KR (1) KR930004328B1 (de)
CN (1) CN1012538B (de)
AU (1) AU598969B2 (de)
CA (1) CA1316607C (de)
DE (1) DE68924546T2 (de)
WO (1) WO1989009454A1 (de)

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5210834A (en) * 1988-06-01 1993-05-11 Digital Equipment Corporation High speed transfer of instructions from a master to a slave processor
JP2531760B2 (ja) * 1988-10-11 1996-09-04 日本電気株式会社 ベクトル処理装置
US5175863A (en) * 1989-10-23 1992-12-29 International Business Machines Corporation Signal data processing system having independently, simultaneously operable alu and macu
US5163139A (en) * 1990-08-29 1992-11-10 Hitachi America, Ltd. Instruction preprocessor for conditionally combining short memory instructions into virtual long instructions
US5418973A (en) * 1992-06-22 1995-05-23 Digital Equipment Corporation Digital computer system with cache controller coordinating both vector and scalar operations
US5717947A (en) * 1993-03-31 1998-02-10 Motorola, Inc. Data processing system and method thereof
US5619709A (en) * 1993-09-20 1997-04-08 Hnc, Inc. System and method of context vector generation and retrieval
US5907842A (en) * 1995-12-20 1999-05-25 Intel Corporation Method of sorting numbers to obtain maxima/minima values with ordering
US7620832B2 (en) * 2000-09-20 2009-11-17 Mips Technologies, Inc. Method and apparatus for masking a microprocessor execution signature
US7237097B2 (en) * 2001-02-21 2007-06-26 Mips Technologies, Inc. Partial bitwise permutations
US7181484B2 (en) * 2001-02-21 2007-02-20 Mips Technologies, Inc. Extended-precision accumulation of multiplier output
US7162621B2 (en) 2001-02-21 2007-01-09 Mips Technologies, Inc. Virtual instruction expansion based on template and parameter selector information specifying sign-extension or concentration
US7599981B2 (en) * 2001-02-21 2009-10-06 Mips Technologies, Inc. Binary polynomial multiplier
US7711763B2 (en) 2001-02-21 2010-05-04 Mips Technologies, Inc. Microprocessor instructions for performing polynomial arithmetic operations
US7318145B1 (en) 2001-06-01 2008-01-08 Mips Technologies, Inc. Random slip generator
US8000221B2 (en) * 2004-07-20 2011-08-16 Qualcomm, Incorporated Adaptive pilot insertion for a MIMO-OFDM system
JP2006318139A (ja) * 2005-05-11 2006-11-24 Matsushita Electric Ind Co Ltd データ転送装置、データ転送方法およびプログラム
US20080071851A1 (en) * 2006-09-20 2008-03-20 Ronen Zohar Instruction and logic for performing a dot-product operation
US9141386B2 (en) * 2010-09-24 2015-09-22 Intel Corporation Vector logical reduction operation implemented using swizzling on a semiconductor chip
US20120216011A1 (en) * 2011-02-18 2012-08-23 Darryl Gove Apparatus and method of single-instruction, multiple-data vector operation masking
US20120254589A1 (en) * 2011-04-01 2012-10-04 Jesus Corbal San Adrian System, apparatus, and method for aligning registers
CN104011645B (zh) * 2011-12-22 2018-06-26 英特尔公司 用于产生其中在连续位置中的整数相差恒定整数跨度且最小整数从零偏移整数偏移量的整数序列的处理器、方法、系统和含有指令的介质
CN103914426B (zh) * 2013-01-06 2016-12-28 中兴通讯股份有限公司 一种多线程处理基带信号的方法及装置
GB2523823B (en) * 2014-03-07 2021-06-16 Advanced Risc Mach Ltd Data processing apparatus and method for processing vector operands
US20160092398A1 (en) * 2014-09-29 2016-03-31 Apple Inc. Conditional Termination and Conditional Termination Predicate Instructions
US20160092217A1 (en) * 2014-09-29 2016-03-31 Apple Inc. Compare Break Instructions
GB2548600B (en) * 2016-03-23 2018-05-09 Advanced Risc Mach Ltd Vector predication instruction
US10255462B2 (en) 2016-06-17 2019-04-09 Arm Limited Apparatus and method for obfuscating power consumption of a processor

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4128880A (en) * 1976-06-30 1978-12-05 Cray Research, Inc. Computer vector register processing
JPS5852265B2 (ja) * 1977-01-12 1983-11-21 株式会社日立製作所 デ−タ処理装置
US4541046A (en) * 1981-03-25 1985-09-10 Hitachi, Ltd. Data processing system including scalar data processor and vector data processor
JPS57209570A (en) * 1981-06-19 1982-12-22 Fujitsu Ltd Vector processing device
JPS58114274A (ja) * 1981-12-28 1983-07-07 Hitachi Ltd デ−タ処理装置
JPS59160267A (ja) * 1983-03-02 1984-09-10 Hitachi Ltd ベクトル処理装置
US4661900A (en) * 1983-04-25 1987-04-28 Cray Research, Inc. Flexible chaining in vector processor with selective use of vector registers as operand and result registers
US4636942A (en) * 1983-04-25 1987-01-13 Cray Research, Inc. Computer vector multiprocessing control
JPS6015771A (ja) * 1983-07-08 1985-01-26 Hitachi Ltd ベクトルプロセッサ
JPS6069746A (ja) * 1983-09-26 1985-04-20 Fujitsu Ltd ベクトル・デ−タ処理装置の制御方式
JPS6089274A (ja) * 1983-10-20 1985-05-20 Nec Corp ベクトルマスク制御システム
US4791555A (en) * 1983-10-24 1988-12-13 International Business Machines Corporation Vector processing unit
EP0211613A3 (de) * 1985-07-31 1989-05-10 Sperry Corporation Vektorendateieinrichtung für wissenschaftlichen Prozessor
JPS62208167A (ja) * 1986-03-10 1987-09-12 Hitachi Ltd ベクトル処理装置

Also Published As

Publication number Publication date
DE68924546D1 (de) 1995-11-23
EP0335515A3 (de) 1991-05-22
CN1012538B (zh) 1991-05-01
AU3142689A (en) 1989-11-02
WO1989009454A1 (en) 1989-10-05
JPH0215369A (ja) 1990-01-19
CA1316607C (en) 1993-04-20
CN1040277A (zh) 1990-03-07
KR930004328B1 (ko) 1993-05-26
AU598969B2 (en) 1990-07-05
EP0335515B1 (de) 1995-10-18
KR920700425A (ko) 1992-02-19
EP0335515A2 (de) 1989-10-04
US4949250A (en) 1990-08-14

Similar Documents

Publication Publication Date Title
DE68924546T2 (de) Verfahren und Vorrichtung zur Ausführung von Befehlen für ein Vektorverarbeitungssystem.
DE68927415T2 (de) Kontextumschaltungsverfahren und -anordnung zur Verwendung in einem Vektorverarbeitungssystem
DE69308548T2 (de) Vorrichtung und verfahren zum befehlsabschluss in einem superskalaren prozessor.
DE3685913T2 (de) Vektorenverarbeitung.
DE69311330T2 (de) Befehlsablauffolgeplanung von einem risc-superskalarprozessor
DE68928340T2 (de) Fliessband-Datenprozessor
DE69233493T2 (de) RISC-Prozessor mit erweiterbarer Architektur
DE69115344T2 (de) Vorverarbeitungsprozessor zur Verbindung von Befehlen für einen Cache-Speicher
DE2855106C2 (de) Einrichtung zur Durchführung von bedingten Verzweigungen
DE3486399T2 (de) Zentrale Verarbeitungseinheit mit der Fähigkeit, Befehle mit variablen Längen zu unterstützen.
DE3689923T2 (de) Dreiphasen-Pipeline-Signalprozessor.
DE68927492T2 (de) Verfahren und Vorrichtung zur gleichzeitigen Verteilung von Befehlen an mehrere funktionelle Einheiten
DE4206062C2 (de) Pipelineverarbeitung von Instruktionen
DE3789604T2 (de) Datenprozessor zur parallelen Ausführung von miteinander im Konflikt stehenden Befehlen.
DE3853759T2 (de) Datenprozessor mit zwei Betriebsmoden.
DE3851746T2 (de) Sprungvorhersage.
DE69133571T2 (de) Datenprozessor mit der Fähigkeit, zwei Befehle gleichzeitig auszuführen
DE69305366T2 (de) System und verfahren zum kennzeichnen von befehlen zur steuerung der befehlsausführung
DE60005860T2 (de) Ablaufsteuerung zum ausgeben und wiederausgeben von ketten abhängiger befehle
DE69030931T2 (de) Mehrfachsequenzprozessorsystem
DE69027932T2 (de) Cpu-pipeline mit registerfile-bypass durch adressvergleich bei aktualisierungen/zugriffen
DE60006021T2 (de) VLIW-Prozessor und Programmkomprimierungsgerät and -verfahren
DE3716229A1 (de) Mikroprozessorchip mit einem stapelrahmen-cache
DE3854369T2 (de) Zentralprozessoreinheit für digitale datenverarbeitungsanordnung mit cache-speicherverwaltungsvorrichtung.
DE69922238T2 (de) Mechanismus zur blockierung von ladeoperationen auf adressengeneration von speicherbefehlen und universeller abhängigkeitsvektor

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8328 Change in the person/name/address of the agent

Free format text: GRUENECKER, KINKELDEY, STOCKMAIR & SCHWANHAEUSSER, 80538 MUENCHEN

8339 Ceased/non-payment of the annual fee