DE3638572A1 - Vektorprozessor - Google Patents
VektorprozessorInfo
- Publication number
- DE3638572A1 DE3638572A1 DE19863638572 DE3638572A DE3638572A1 DE 3638572 A1 DE3638572 A1 DE 3638572A1 DE 19863638572 DE19863638572 DE 19863638572 DE 3638572 A DE3638572 A DE 3638572A DE 3638572 A1 DE3638572 A1 DE 3638572A1
- Authority
- DE
- Germany
- Prior art keywords
- vector
- instruction
- processing
- scalar
- processing unit
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
- G06F15/8053—Vector processors
- G06F15/8076—Details on data register access
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Complex Calculations (AREA)
Description
Die Erfindung betrifft einen Vektorprozessor, der aus zwei
verschiedenartigen Verarbeitungseinheiten gebildet ist,
das ist eine Skalarverarbeitungseinheit und eine Vektorverarbeitungseinheit.
Vektorprozessoren mit zweierlei Verarbeitungseinheiten,
nämlich einer Skalar- und Vektorverarbeitungseinheit, die
jeweils zur Ausführung von Skalar- und Vektorbefehlen
ausgelegt sind, sind schon bekannt. In Zusammenhang mit
der Verarbeitung dieser zwei Befehlstypen gibt es bislang
zwei Arten von Verarbeitungsstrategien.
Bei der ersten Verarbeitungsstrategie wird eine gemischte
Befehlsreihe oder Befehlskette, in der Skalar- und Vektorbefehle
gemischt sind, von einem Decodierer decodiert,
um die Ausführung der einzelnen Befehle zu steuern. Ein
typisches solches System ist in einem Artikel von
Richard M. Russell "The CRAY-1 Computer System" genannt,
der in "Communications of the ACM" (Januar 1978) enthalten
ist.
Bei der zweiten Verarbeitungsstrategie werden zwei Befehlstypen,
nämlich Skalarbefehle und Vektorbefehle,
durch zwei eigene Decodierer decodiert. Dieses
System ist beispielsweise aus einem Artikel von T. Odaka
mit dem Titel "HITACHI SUPER-COMPUTER S-810 ARRAY PROCESSOR
SYSTEM" bekannt, der in "SUPERCOMPUTERS" von Elevier
Science Publishers B.V. (Nord-Holland), 1986 veröffentlicht
ist. Bei diesem Befehl werden die Befehle durch
zwei Logikeinheiten decodiert.
Ein Charakteristikum des ersten Systems besteht darin,
daß die Steuerung der zwei Befehlsarten einschließlich des
Steuerungsvorgangs, der eine richtige Folge zwischen den Skalarbefehlen
und den Vektorbefehlen sicherstellt, in vereinfachter
Weise wegen der Tatsache realisiert werden
kann, daß die Skalarbefehle und die Vektorbefehle gemischt
vorliegen.
Andererseits gestattet das zweite System eine unabhängige
Ausführung der zwei Befehlsarten, wodurch die Parallelverarbeitung
leichter ist, weil die Skalarbefehlsverarbeitungs-
oder Decodiereinheit von der Vektorbefehlsverarbeitungseinheit
getrennt ist. Die Unabhängigkeit
der Skalarverarbeitungseinheit von der Vektorverarbeitungseinheit
bedeutet wiederum, daß die Vektorverarbeitungseinheit
durch die Skalarverarbeitungseinheit aktiviert
werden muß. Zur Aktivierung der Vektorverarbeitungseinheit
muß jede zur Initiierung der Vektorverarbeitung
nötige Information von der Skalarverarbeitungseinheit
gesetzt werden. Diese Setzprozedur neigt dazu,
eine verlängerte Vorbereitungszeit, bevor die Vektorberechnung
gestartet werden kann, einzunehmen. Dadurch
kann es schwierig oder unmöglich werden, die der Vektorverarbeitungseinheit
zur Berechnung der Vektoren geringer
Länge eigene funktionale Leistungsfähigkeit auszunützen.
Zusätzlich benötigt das zuletzt erwähnte System eine Einrichtung,
die der Skalarverarbeitungseinheit mitteilt,
daß auf seiten der Vektorverarbeitungseinheit eine gegebene
wichtige Verarbeitung zu einer gegebenen Zeit
beendet wurde.
Wie die obigen Ausführungen deutlich machen, hat man beim
zweiten System einen größeren Freiheitsgrad im Vergleich
mit dem ersten System, da das zweite System zur Parallelverarbeitung
fähig und zur Durchführung einer fortschrittlichen
Parallelberechnung effektiver ist. Um jedoch die
spezifischen Vorteile des zweiten Systems mit der Leistungsfähigkeit
der Verarbeitungseinheiten des zweiten Systems
zu kombinieren, muß man besonderen Augenmerk auf die
Aktivierung der Vektorverarbeitungseinheit und die Synchronsteuerung
der Skalarverarbeitungseinheit legen.
Es ist deshalb Aufgabe der Erfindung, einen Vektorprozessor
anzugeben, der mit hoher Geschwindigkeit die Vektorarbeitungseinheit
aktivieren kann.
Zur Lösung der obigen Aufgabe weist die Erfindung gemäß
einem wesentlichen Merkmal eine Indikatoreinrichtung
auf, die nach dem Start des Decodiervorgangs einer Befehlskette
durch einen Vektorbefehlsdecodierer gesetzt
und auf das Decodieren eines am Ende der Vektorbefehlskette
stehenden Vektor-Endbefehls zurückgesetzt
wird, wobei eine Anweisung zum Start der Verarbeitung
der Vektorbefehlskette von der Skalarverarbeitungseinheit
an die Vektorverarbeitungseinheit ausgegeben wird,
wenn die Indikatoreinrichtung im zurückgesetzten Zustand
ist.
Die Erfindung wird nun anhand von Ausführungsbeispielen
unter Bezug auf die Zeichnungsfiguren näher beschrieben.
Es zeigen:
Fig. 1a und 1b jeweils eine Veranschaulichung der Verbeitungsweise
für einen Skalarbefehlssatz
und einen Vektorbefehlssatz;
Fig. 2 ein Blockschaltbild einer ein Ausführungsbeispiel
des erfindungsgemäßen Vektorprozessors darstellenden
Schaltungsanordnung;
Fig. 3 ein Blockschaltbild eines in der Schaltung gemäß
Fig. 2 verwendeten Skalarbefehlsleseanforderers
und -decodierers;
Fig. 4 ein Blockschaltbild einer Schaltungsanordnung
einer in der Schaltung gemäß Fig. 2 eingesetzten
Vektorbefehlsleseanforderungs- und
-decodierschaltung;
Fig. 5 als Blockschaltbild eine in der Schaltungsanordnung
gemäß Fig. 2 eingesetzte Vektorstatusüberwachungsschaltung;
und
Fig. 6a und 6b eine Veranschaulichung der Vektorbefehlsverarbeitung
im Vergleich mit dem
herkömmlichen Verfahren.
Zum besseren Verständnis der vorliegenden Erfindung wird
vor der Beschreibung der bevorzugten Ausführungsbeispiele
das zugrundeliegende Prinzip beschrieben.
Fig. 1a und 1b veranschaulichen die Skalar- und Vektorverarbeitungsweise
jeweils in Korrelation zwischen der
Zeit und der Befehlsverarbeitung.
Genauer stellt Fig. 1a dar, wie ein Satz Skalarbefehle
nacheinander von einer Skalarverarbeitungseinheit durch
eine Pipelinesteuerung verarbeitet wird. Eine in Fig. 1a
eingezeichnete und "Decodierlinie" genannte Linie stellt
einen aus der gegenseitigen Verbindung der Stufen zur
Befehlsdecodierung herrührenden Linienabschnitt dar. In
der selben Weise ist eine in Fig. 1a eingezeichnete Ausführungslinie
durch einen solche Teile der Befehle,
deren Ausführung beendet wurde, verbindenden Linienabschnitt
definiert. Fig. 1b stellt dar, wie die Vektorbefehle
verarbeitet werden. Die Ausführungslinie der
Vektorbefehle ist durch einen Linienabschnitt definiert,
der die Verarbeitungsstufen der letzten oder Vektorendelemente
der Vektorbefehle miteinander verbindet. Die
Unterschiede zwischen der Vektorbefehlsverarbeitung und
der Skalarbefehlsverarbeitung können darin gesehen werden,
daß
1. im Fall der Vektorverarbeitung das Verarbeitungsende bei der Ausführung eines vorher ausgegebenen Befehls nicht immer dem Verarbeitungsende für die Ausführung eines später ausgegebenen Befehls vorangeht; und
2. die Befehlsdecodierlinie und die Ausführungslinie bei der Vektorverarbeitung voneinander weiter entfernt sind als bei der Skalarverarbeitung.
1. im Fall der Vektorverarbeitung das Verarbeitungsende bei der Ausführung eines vorher ausgegebenen Befehls nicht immer dem Verarbeitungsende für die Ausführung eines später ausgegebenen Befehls vorangeht; und
2. die Befehlsdecodierlinie und die Ausführungslinie bei der Vektorverarbeitung voneinander weiter entfernt sind als bei der Skalarverarbeitung.
Die oben erwähnten Unterschiede bedeuten, daß die Initiierung
der Vektorverarbeitung und deren Steuerung nur schwer
mit dem gleichen Prinzip, das der Skalarverarbeitung zugrundeliegt,
durchgeführt werden können. Beispielsweise
kann man im Fall der Skalarverarbeitung das Verarbeitungsergebnis
eines vorher ausgegebenen Befehls durch Setzen
eines Bedingungscodes kundtun, weil die Zeitdauer zwischen
der Befehlsausführungslinie und der Befehlsdecodierlinie
kurz ist und weil die Ausführung eines vorher ausgegebenen
Befehls notwendigerweise der Ausführung eines später ausgegebenen
Befehls vorangeht. Im Gegensatz kann bei der
Vektorverarbeitungssteuerung nicht sichergestellt werden,
daß das Verarbeitungsende eines vorher ausgegebenen Befehls
immer dem Verarbeitungsende eines später in der
Ausführungslinie ausgegebenen Befehls vorangeht. Deshalb
ist die Ausführungssteuerung einer Befehlskette unter
Rückgriff auf den gesetzten Bedingungscode unmöglich.
Wenn man jedoch die Decodierlinie der Vektorbefehle betrachtet,
wird deutlich, daß die zur Decodierverarbeitung
der Vektorbefehle nötige Steuerprozedur gleich
wie die bei den Skalarbefehlen verwendete sein kann.
Diese zwei verschiedenen Eigenschaften kennzeichnen die
von der Vektorverarbeitungseinheit durchgeführte Vektorverarbeitung.
Nun wird ein Vektorverarbeitungssystem betrachtet, das
die Vektorverarbeitung für eine Vektorbefehlskette durch
Zuführung einer Aktivierinformation für die Vektorverarbeitungseinheit
durchführt. Im Falle des herkömmlichen
Vektorprozessors wird der Zustand der Vektorverarbeitungseinheit
durch die Unterscheidung, ob die Vektorverarbeitung
gerade durchgeführt wird oder nicht, erkannt.
Wenn die unterscheidende Erkennung des Zustandes der
Vektorverarbeitung, wie oben erwähnt, angewendet wird,
wird die Steuerung der parallelen Ausführung der Vektorverarbeitung
in jeder Einzelheit in Verbindung mit der
Verarbeitung eines durch mehrere Vektorbefehlsketten gebildeten
Programms nötig, wenn die Verarbeitung einer
gegebenen Befehlskette während der Verarbeitung einer
anderen Vektorbefehlskette gestartet werden soll. Anders
gesagt ist eine Überwachung und Verwaltung des Zustandes
des Vektorprozessors in Übereinstimmung mit n Vektorbefehlsblöcken,
die der Vektorverarbeitung zu unterwerfen
sind, nötig. Eine solche Steuerung ist nicht nur
schwierig, sondern es ist auch möglich, daß dadurch
vermehrt der Hardware-Betriebsmittel nötig
sind.
Andererseits kann die in der Skalarverarbeitungseinheit
angewendete Steuerprozedur, wenn der Zustand des Vektorprozessors
in zweierlei Hinsicht zu überwachen oder zu
verwalten ist, nämlich hinsichtlich der Vektorbefehlsdecodierlinie
und der Vektorbefehlsausführungslinie, verwendet
werden, indem vorteilhaft die Eigenschaft ausgenützt
wird, daß die Vektorbefehlsdecodierlinie die selbe
Eigenschaft hat wie die Skalarbefehlsdecodierlinie. Beispielsweise
kann die Steuerung der Hardware dadurch
durchgeführt werden, daß, falls ein zur Ausführung eines
Vektorbefehls nötiges Betriebsmittel für die Ausführung
eines in Betracht kommenden Vektorbefehls nach dessen
Decodierung zugeordnet werden kann, dieser Vektorbefehl
aktiviert wird, während, falls kein Betriebsmittel für
die Ausführung des Vektorbefehls zugeordnet
werden kann, die Decodierung dieses Vektorbefehls so
lange unterbrochen wird, bis dieses Betriebsmittel nicht
mehr besetzt ist. In diesem Fall kann die Decodierung
einer nachfolgenden Vektorbefehlskette unmittelbar nach
dem Ende des Decodiervorgangs einer vorangehenden Vektorbefehlskette
gestartet werden. Auf diese Weise kann
das Decodieren einer weiteren Vektorbefehlskette, sofern
nur der Decodiervorgang einer gerade vorhandenen Vektorbefehlskette
abgeschlossen ist, sogar initiiert werden,
wenn die Ausführung der decodierten Vektorbefehlskette
noch nicht vollendet ist. Durch die oben angeführte
Steuerprozedur kann der Zustand der Vektorverarbeitungseinheit
hinsichtlich nur zweier Eigenschaften überwacht
und verwaltet werden, nämlich hinsichtlich der Decodierung
und der vollständigen Ausführung der Vektorbefehle.
Dadurch ist keine komplizierte Steuerprozedur, wie bei
der Entscheidung, ob die Vektorverarbeitungseinheit
mehrere Vektorbefehlsketten parallel verarbeitet, nötig.
Auf diese Weise kann die Steuerung der Parallelverarbeitung
leicht abhängig von der Anzahl der in der Vektorverarbeitungseinheit
enthaltenen Betriebsmittel automatisiert
werden. Außerdem kann der Umfang der zur Durchführung
der o. g. Steuerprozeduren nötigen Hardware auf die
als Vektorlängenregister (weiterhin als Längenregister
bezeichnet) dienenden Puffer und ein Adreßregister zusätzlich
zu der Registergruppe, die die zwei o. g. Informationen
halten, begrenzt werden. Die Steuerung wird
nachfolgend im einzelnen beschrieben.
Nun wird angenommen, daß zwei Vektorbefehlsketten zu verarbeiten
sind und daß davon eine erste Vektorbefehlskette gerade von
einer Vektorverarbeitungseinheit verarbeitet wird.
Unter der Annahme, daß die Vektorbefehlskette n Vektorbefehle
enthält, dauert die zur Decodierung der Vektorbefehle
nötige Zeit etwa n Maschinenzyklen. Außerdem
dauert die zur Ausführung der o. g. Vektorbefehle
nötige Zeit (n × l) Maschinenzyklen (wobei l die Länge
der zu verarbeitenden Vektorbefehle darstellt) auch im
Falle eine genügende Anzahl Betriebsmittel zur Verfügung
steht. Angesichts der Tatsache, daß die Anzahl der in
einer Vektorverarbeitungseinheit enthaltenen Betriebsmittel
gewöhnlich höchstens 5 oder 6 beträgt, ist die
Betriebsmittelzahl meistens kleiner als n. Dementsprechend
gilt folgende Beziehung:
Die Zeit zur Verarbeitung der Vektorbefehle dauert sehr viel
länger als die Zeit zur Decodierung der Vektorbefehle.
Mit diesen Bedingungen wird nun angenommen, daß eine Anforderung
zur Ausführung einer Befehlskette, die nicht
die gerade abgearbeitete ist, durch eine Skalarverarbeitungseinheit
ausgegeben wird. In diesem Falle
ist die Wahrscheinlichkeit, daß der Decodierer der Vektorverarbeitungseinheit
nicht besetzt ist, hoch, was wiederum
bedeutet, daß der Decodiervorgang einer Vektorbefehlskette,
die von der Skalarverarbeitungseinheit transferiert wurde,
mit entsprechend hoher Wahrscheinlichkeit initiiert
werden kann. Zu dem Zeitpunkt, bei dem der Decodiervorgang
initiiert wird, arbeiten die in der Vektorverarbeitungseinheit
befindlichen Betriebsmittel gerade die
vorangehende Vektorbefehlskette ab.
Zur Verarbeitung eines Vektorbefehls erhält die Vektorverarbeitungseinheit
Vektorlängendaten, um diesen Vektorbefehl
gleichzeitig mit der Aktivierung des Vektorbefehls
auszuführen. Zu diesem Zeitpunkt würde die Vektorverarbeitungseinheit,
wenn die Verarbeitung eines von dem gerade
aktivierten unterschiedlichen Vektorbefehls ausgeführt
werden soll, eine Fehloperation durchführen, falls die
Vektorlänge beider Vektorverarbeitungen unterschiedlich
ist. Das in Fig. 1 dargestellte Prinzip der Vektorverarbeitung
besteht darin, daß auf das Decodieren eines Vektorbefehls
hin Betriebsmittel zur Ausführung dieses Befehls,
um die durch den Vektorbefehl selbst angewiesene
Verarbeitung durchzuführen, zugewiesen werden. Bei diesem
Vorgehen wird eine Prozedur angewendet, in der die Vektorlängendaten
vom Vektorlängenregister auf die Aktivierung
des Befehls zu dem Betriebsmittel aufgelistet werden. Durch diese Prozedur
kann der im Vektorlängenregister gespeicherte Wert
nur zum Zeitpunkt der Aktivierung des Vektorbefehls bestätigt
werden, um eine richtige Operation der Vektorverarbeitungseinheit
sicherzustellen. Das selbe gilt für
das Adressenregister.
Um den Zustand, in dem das Auslesen einer Vektorbefehlskette
aus einem Hauptspeicher wegen eines Speicherbankkonflikts
od. dgl. unterbrochen ist, von jenem Zustand
zu unterscheiden, in dem das Decodieren einer Vektorbefehlskette
beendet wurde, wird am Ende der Vektorbefehlskette
ein Vektorbefehl hinzugefügt, der der Vektorverarbeitungseinheit
die vollständige Decodierung der Vektorbefehlskette
mitteilt. Dieser Vektorendebefehl erzeugt den Zustand,
in dem die Vektorverarbeitungseinheit eine weitere
Vektorbefehlskette annehmen kann. Indem in der Vektorverarbeitungseinheit
die obige Steuerprozedur verwendet wird,
können mehrere Vektorbefehlsketten aufeinanderfolgend
durch die Vektorverarbeitungseinheit abgearbeitet werden,
ohne daß eine wesentliche Erhöhung des Hardware-Aufwandes
nötig wäre.
Fig. 2 zeigt eine allgemeine Anordnung eines ein erfindungsgemäßes
Ausführungsbeispiel darstellenden Vektorverarbeitungsgeräts.
Im einzelnen bezeichnen in Fig. 2
1 einen Hauptspeicher (MS), 2 einen Skalarbefehls-Leseanforderer,
3 einen Skalarbefehlsdecodierer, 4 eine Vektorbefehlsleseanforderungsschaltung
(nachstehend als Vektorleseanforderer
bezeichnet), 5 einen Vektorbefehlsdecodierer,
6 ein Vektorprozessorstatuswort, 7 ein Vektorlängenregister,
8 ein Adreßregister, 9 eine Vektorstatusüberwachungsschaltung,
10 eine Vektorregistersteuerung, 11 und
12 jeweils Schalterkreise, 13 eine Vektorarithmetikeinheit
(die mehrere Addierer, Multiplizierer und weitere
zur parallelen Ausführung von Operationen fähige Einheiten
enthalten kann), 14 Vektorregister, 15 einen Vektorladeanforderer
und 16 einen Vektorspeicheranforderer. Hier muß
bemerkt werden, daß obwohl in Wirklichkeit mehrere Vektorregister
14 vorgesehen sind, sie in Fig. 2 gemeinsam durch
einen einzigen Block, um die Darstellung zu vereinfachen,
dargestellt sind.
Nach Aktivierung des Vektorverarbeitungsgeräts liest der
Skalarbefehlsleseanforderer 2 eine Skalarbefehlskette aus dem Hauptspeicher 1
durch einen Weg 20. Die so ausgelesenen Skalarbefehle
werden dem Skalarbefehlsdecodierer 3 zugeführt. Dieser
decodiert dann die Skalarbefehlskette und sendet eine
Anweisung zur Ausführung dieser Befehlskette an ein Betriebsmittel
eines (nicht dargestellten) Skalarprozessors
über einen Weg 21. Der Skalarbefehlsleseanforderer 2, der
Skalarbefehlsdecodierer 3 und das Betriebsmittel des
Skalarprozessors bilden zusammen eine Skalarverarbeitungseinheit,
während die restlichen Teile eine Vektorverarbeitungseinheit
bilden. Nach dem Decodieren einer den Beginn
der Verarbeitung einer Vektorbefehlskette befehlenden Anweisung
(nachstehend als EXVP-Anweisung bezeichnet) prüft
der Skalarbefehlsdecodierer 3 über die Wege 22 und 33 das
im Vektorprozessorstatuswort 6 enthaltene Bit (nachstehend
als W-Bit bezeichnet), das den Status des in der Vektorverarbeitungseinheit
enthaltenen Decodierers angibt. Es muß
bemerkt werden, daß das W-Bit zum Zeitpunkt, wo der Vektorprozessor
aktiviert wird, zurückgesetzt ist und gesetzt wird, sobald
ein Vektorbefehl decodiert wird. Das W-Bit wird dann wieder
zurückgesetzt, wenn der das Ende der Vektorbefehlskette
angebende Befehl von dem Vektorbefehlsdecodierer 5
decodiert wird. Ein wegen einer Unterbrechung beim Auslesen
der Vektorbefehlskette aus dem Hauptspeicher 1 aufgrund
eines Speicherbankkonflikts od. dgl. verursachter
Leerlaufbetrieb des Vektorbefehlsdecodierers 5 wird als
Zustand, bei dem der Vektorbefehl gerade decodiert wird, betrachtet.
Demgemäß wird verhindert, daß das W-Bit zurückgesetzt
wird.
Wenn das W-Bit zurückgesetzt ist, aktiviert der Skalarbefehlsdecodierer
3 den Vektorbefehlsleseanforderer 4
über den Weg 24. Danach wird die durch einen Operanden
des EXVP-Befehls angegebene Startadresse der Vektorbefehlskette
dem Vektorbefehlsleseanforderer 4 durch den
Weg 24 übertragen.
Der Vektorbefehlsleseanforderer 4 liest Vektorbefehle von
der angegebenen Adresse aus dem Hauptspeicher 1 aus und
leitet sie zum Vektorbefehlsdecodierer 5 über den Weg 25.
Der Vektorbefehlsdecodierer 5 beginnt dann mit der Decodierung
der Vektorbefehle und setzt gleichzeitig das
W-Bit im Vektorprozessorstatuswort 6. Die Information
über das gesetzte W-Bit wird dem Skalarbefehlsdecodierer 3
über den Weg 23 gesendet. Daraufhin ermittelt der Decodierer
3, daß die Ausführung des EXVP-Befehls vollständig ist
und beginnt mit dem Decodieren einer nachfolgenden Skalarbefehlskette.
Falls das W-Bit gesetzt ist fährt der Skalarbefehlsdecodierer
4 mit der Verarbeitung des EXVP-Befehls fort,
bis das W-Bit zurückgesetzt ist. Da der Vektorbefehl keine
Verzweigung hat und die Befehlskette unbestimmt lang ist,
wird das W-Bit, so lange das Programm normal läuft, ohne
einen Fehler zu verursachen, zurückgesetzt. Wenn das Programm
fehlerhaft ist und kein Befehl vorliegt, der das Ende
der Vektorbefehlskette angibt, liest der Vektorbefehlsanforderer
4 Daten aus dem Hauptspeicher 1 an der der Vektorbefehlskette
folgenden Adresse aus, die dem Vektorbefehlsdecodierer
5 zugeführt werden. Folglich decodiert der Vektorbefehlsdecodierer
andere Daten als die Vektorbefehle,
was dahin führt, daß der Prozessor eine Befehlsabweichung
erfaßt und die programmierte Verarbeitung unterbricht.
Wenn der Skalarbefehlsdecodierer 3 einen Skalarbefehl decodiert,
der das Laden einer Vektorlänge in das Vektorlängenregister
7 oder einen Skalarbefehl, der das Laden
eines Adressenwerts in das Adreßregister 8 angibt (beide
Skalarbefehle werden als Einstellbefehle bezeichnet),
werden die Vektorlänge und der Adreßwert jeweils in das
Vektorlängenregister 7 und das Adressenregister 8 geladen.
Dieser Ladevorgang wird vor dem EXVP-Befehl durchgeführt.
Fig. 3 zeigt ein Blockschaltbild des Schaltungsaufbaus
des Skalarbefehlsdecodierers 3 und des Skalarbefehlsleseanforderers
2, die oben anhand der Fig. 2 beschrieben
wurden. In Fig. 3 sind die Wege, die mit denen in Fig. 2
übereinstimmen, mit den selben Bezugsziffern bezeichnet.
In der nachstehenden, die Fig. 3 erläuternden Beschreibung
wird angenommen, daß eine Skalarbefehlswortlänge in ein
Register 100 gesetzt ist. Ein Addierer 102 erzeugt eine
Skalarbefehlsadresse. Ein Register 101 speichert die
Adresse, aus der ein Skalarbefehl auszulesen ist. Diese
Adresse wird dem Hauptspeicher oder MS 1 über den Weg 20
zugesendet. Ein aus dem Hauptspeicher 1 ausgelesener Skalarbefehl
wird in ein Register 105 über einen Weg 150 geladen.
Eine Leitung 150 a stellt eine Vorankündigungsleitung
dar, die die Übertragung eines Befehls angibt.
Ein in dem im Register 105 stehenden Befehl enthaltener
Operationscode OP wird von einem Decodierer 106 decodiert.
Wenn der von dem Decodierer 106 decodierte Befehl den
EXVP-Befehl darstellt, wird eine Anweisung zum Auslesen
des Werts des W-Bits über den Weg 22 ausgegeben. Der Wert
des W-Bits wird über den Weg 23 ausgelesen. Ein Fliß-Flop
107 hält Daten, die die Ausführung des EXVP-Befehls betreffen.
Im einzelnen bedeutet dies, wenn der Wert, den
das Flip-Flop 107 hält, "1" ist, daß der EXVP-Befehl gerade
ausgeführt wird. Andererseits gibt eine vom Flip-Flop
107 gehaltene "0" an, daß der EXVP-Befehl noch nicht ausgeführt
wurde. Wenn der Wert des W-Bits "0" ist, kann der
im Register 105 stehende EXVP-Befehl ausgeführt werden.
Zu diesem Zeitpunkt wird das Flip-Flop 107 auf "1" gesetzt,
woraufhin der Vektorbefehlsleseanforderer 4 über
den Weg 24 aktiviert wird.
Der Vektorbefehlsleseanforderer 4 erzeugt für den auszulesenden
Vektorbefehl eine Adresse und sendet diese dem
Hauptspeicher 1 zu, wodurch der Vektorbefehl aus dem
Hauptspeicher 1 gelesen wird. Der ausgelesene Vektorbefehl
wird vom Vektorbefehlsdecodierer 5 decodiert, worauf
das W-Bit von "1" nach "0" verändert wird. Daraufhin wird
der Signalwert auf dem Weg 23 von "0" zu "1" verändert.
Zu diesem Zeitpunkt sind das Ausgangssignal des Flip-Flops
107 und das Signal auf dem Weg 23 durch eine UND-Schaltung
109 logisch UNDiert, wodurch der Signalwert "1" über einen
Weg 28 ausgesendet wird. Dieser Signalwert "1" gibt das
Ausführungsende des EXVP-Befehls an. Gleichzeitig mit der
vollständigen Ausführung des EXVP-Befehls wird das Flip-
Flop 107 zurückgesetzt und eine Adresse für einen nachfolgenden
Skalarbefehl in das Register 101 geladen.
Falls der im Register 105 befindliche Befehl einer der
o. g. Einstellbefehle ist, wird ein Freigabesignal von dem
Decodierer 106 über einen Weg 26 a gesendet. Gleichzeitig
wird der Operand im Register 105 an die Vektorverarbeitungseinheit
über einen Weg 26 b gesendet. Hier muß bemerkt
werden, daß der in Fig. 3 dargestellte Weg 26 b dem Weg 26
oder dem Weg 27 gemäß Fig. 2 abhängig von der Bestimmung
der Einstelldaten entspricht.
Fig. 4 zeigt ein Blockschaltbild des Vektorbefehlsdecodierers
5 und des Vektorbefehlsleseanforderer 4. In der
folgenden Beschreibung, die sich auf Fig. 4 bezieht, wird
angenommen, daß eine Vektorbefehlswortlänge in ein Register
200 gesetzt ist. Ein mit der Bezugziffer 202 bezeichneter
Addierer erzeugt eine Adresse für den Vektorbefehl.
Ein Register 201 speichert die Adresse, von der
der Vektorbefehl auszulesen ist. Diese Adresse wird dem
Hauptspeicher 1 zugesendet. Eine von dem Skalarbefehlsdecodierer
3 kommende Leitung 24 führt ein Ladebefehlssignal
für das Register 201. Der aus dem Hauptspeicher 1
ausgelesene Vektorbefehl wird in ein Register 205 über
den Weg 25 geladen. Ein Weg 25 a stellt eine Vorankündigungsleitung
dar, die eine Anweisung für die Befehlsübertragung
leitet. Ein im Register 205 gesetzter Operationscode
OP des Befehls wird von einem Decodierer 206 decodiert.
Das W-Bit wird von dem Vorankündigungssignal
auf dem Weg 25 a gesetzt und von dem das Ende der Vektorbefehlskette
angebenden Befehl und einem Vektorverarbeitungsendebefehl
auf einem Weg 207 zurückgesetzt, wobei
der o. g., das Ende angebende Befehl eines der Ausgangssignale
des Decodierers 206 ist.
Nun wird die Arbeitsweise der Vektorstatusüberwachungsschaltung
5 gemäß Fig. 2 anhand der Fig. 5 beschrieben.
Nach vollständiger Ausführung der Verarbeitung des EXVP-
Befehls sendet der Skalarbefehlsdecodierer 3 ein Befehlssignal
über den Weg 28. Dieses Signal dient als Ladesignal
für Register 50 und 51 und bewirkt, daß die Werte des
Vektorlängenregisters 7 und des Adressenregisters 8 jeweils
in die Register 50 und 51 nach der Ausführung des
EXVP-Befehls gespeichert werden. Somit kann die Skalarverarbeitungseinheit
nach vollendeter Ausführung des EXVP-
Befehls schon die für die Ausführung einer der gerade
aktivierten Vektorbefehlskette folgenden Vektorbefehlskette
benötigte Einstellprozedur starten.
In der aktivierten Vektorverarbeitungseinheit wird ein
Vektorbefehl zu einer Betriebsmittelzuordnungsschaltung
52 vom Vektorbefehlsdecodierer 5 über den Weg 25 und das
Register 57 gesendet. Die Betriebsmittelzuordnungsschaltung
52 wandelt den Operationscode des Vektorbefehls in
eine Kennungsnummer für das zur Ausführung des Vektorbefehls
nötige Betriebsmittel um. Bei dem betrachteten
Vektorverarbeitungsgerät wird angenommen, daß die einzelnen
Betriebsmittel eine bestimmte Numerierung haben. Die
so erzeugte Betriebsmittelnummer wird über einen Weg 60
ausgesendet.
Die Vektorstatusüberwachungsschaltung 9 enthält Zwischenspeicher
53 jeweils in Entsprechung zu den einzelnen Betriebsmitteln.
Wenn der von einem gegebenen Zwischenspeicher
53 gehaltene Wert "1" beträgt heißt dies, daß das dem
betrachteten Zwischenspeicher
zugeordnete Betriebsmittel die Vektorverarbeitung durchführt,
während eine von einem betrachteten Zwischenspeicher
gehaltene "0" heißt, daß das zugeordnete Betriebsmittel
im Wartezustand ist. Die über den Weg 60 ausgesendete
Betriebsmittelnummer wird zu einer Betriebsmittelaktivierschaltung
54 übertragen und gleichzeitig einem
Wähler 55 zugeführt, der den Status des zur Ausführung
des Vektorbefehls nötigen Betriebsmittels wählt. Das Ergebnis
der Auswahl wird der Betriebsmittelaktivierschaltung
54 über einen Weg 61 zugeführt. Außerdem wird zur
Aktivierung des der Ausführung des Vektorbefehls zugeordneten
Betriebsmittels nötige Ordnungsinformation von einer
Ordnungsgeneratorschaltung 56 erzeugt und der Betriebsmittelaktivierschaltung
54 zugeführt.
In der Betriebsmittelaktivierschaltung 54 wird, sobald
ein im Wartezustand befindliches Betriebsmittel erfaßt
wird, das zugeordnete Zwischenspeicherglied 53 über den
Weg 62 auf "1" gesetzt. Zu diesem Zeitpunkt ist nur der
zugeordnete Zwischenspeicher, der durch die entsprechende
Betriebsmittelnummer gekennzeichnet ist, die von der Betriebsmittelzuordnungsschaltung
53 bestimmt ist, gesetzt.
Gleichzeitig wird das Betriebsmittelaktiviersignal dem
ausgewählten Betriebsmittel über den Weg 63 zugeführt,
während via Vektorregistersteuerung 10 über einen Weg 64
Steuerinformation eingespeist wird. Außerdem erhalten
die einzelnen Betriebsmittel Vektorlängen- und Adresseninformation.
Falls jedoch ein Betriebsmittel eine Vektorarithmetikeinheit
ist, wird die Adresseninformation
nicht notwendigerweise diesem Betriebsmittel zugeführt.
Sobald das zugeordnete Betriebsmittel im Verarbeitungszustand
ist, wird ein Vektorlesesperrsignal über den Weg
30 von der Betriebsmittelaktivierschaltung 54 ausgesendet.
Dieses Sperrsignal bewirkt, daß der Vektorbefehlslese-
und decodierprozeß unterbrochen wird. Diese Unterbrechung
dauert bis zum Ende der Verarbeitung durch das Betriebsmittel,
was dem zugeordneten Zwischenspeicherglied 53
über den Weg 67 mitgeteilt wird. Dadurch kann dann die
Vektorstatusüberwachungsschaltung 9 die Unterbrechung
zurücksetzen. Das Register 57 dient zum Prüfen der Zustände
der Betriebsmittel in jedem Maschinenzyklus.
Nun wird anhand der Fig. 2 der Vektorbefehlsverarbeitungsbetrieb
beschrieben. Gleichzeitig mit der Aktivierung
eines Betriebsmittels durch die Vektorstatusüberwachungsschaltung
9 werden Vektorlängendaten über den Weg 65 ausgesendet.
Falls das Betriebsmittel ein Speicheranforderer
ist, werden Vektorlängendaten in das Register 18, das in
dem Speicheranforderer enthalten ist, geladen, wodurch
die Vektorlängendaten vom Register 18 während der Verarbeitungsausführung
durch den Anforderer gehalten werden.
Genauer liest der Speicheranforderer 15 das Vektorelement
mit der vom Register 18 gehaltenen Vektorlänge aus dem
Hauptspeicher an einer angegebenen Adresse aus. Falls
das Betriebsmittel eine Vektorarithmetikeinheit 13 ist,
werden die Vektorlängendaten in das in der Vektorregistersteuerung
enthaltene Register 19 geladen. Die Vektorregistersteuerung
10 steuert die Schalterkreise 11 und 12
und errichtet einen Datenweg, über den die Vektorarithmetikeinheit
13 die für die Arithmetikoperation nötigen
Daten überträgt, während das Ergebnis der Arithmetikoperation
in das Vektorregister 14 geschrieben wird.
Gleichzeitig wird das Endeglied der Vektordaten mittels
der im Register 19 plazierten Vektorlängendaten identifiziert.
Auf diese Weise hält das Vektorregister die
Eigenschaft der Vektorlänge. Auch die Adressendaten werden
im Register 17, das im Speicheranforderer 16 enthalten ist,
über den Weg 66 registriert.
Durch die Ausführung der die Vektorlänge und das Adressenregister betreffenden
Steuerung kann die Berechtigung des Verarbeitungsvorgangs
der vom EXVP-Befehl aktivierten Vektorbefehlskette sichergestellt
werden. Obwohl die Vektorverarbeitungseinheit, wie sie
Fig. 2 und 5 zeigen, nur ein Adressenregister, eine Vektorarithmetikeinheit
und zwei Speicheranforderer zur einfacheren
Darstellung aufweist, muß hervorgehoben werden,
daß die Steuerung mit der selben Prozedur, falls
mehrere Register und Betriebsmittel vorgesehen sind, durchgeführt
werden kann. Falls jedoch ein Code, der eine Verkettungsoperation
zwischen den verschiedene Vektorlängen
aufweisenden Vektorregistern benötigt, ausgeführt werden
soll, muß die Berechtigung des Verarbeitungsvorgangs vom
Programmierer sichergestellt werden.
Erfindungsgemäß kann eine Verarbeitung über mehrere DO-
Schleifen und Mehrfachschleifenprozeduren, wie sie in
Matrixberechnungen auftreten, unter Zuhilfenahme der Optimierwirkung
eines Compilers durchgeführt werden, bei im
Vergleich mit dem herkömmlichen Vektorverarbeitungsgerät
beträchtlich erhöhter Geschwindigkeit. Dies soll anhand
eines zwei DO-Schleifen enthaltenden Programmierbeispiels
dargelegt werden:
DO 100 I = 1, N
A(I) = B(I) + C(I) 100 CONTINUE DO 200 I = 1, M
X(I) = Y(I) * Z(I) 200 CONTINUE.
A(I) = B(I) + C(I) 100 CONTINUE DO 200 I = 1, M
X(I) = Y(I) * Z(I) 200 CONTINUE.
Dies wird zunächst in die unten angeführten Objektprogramme
übersetzt und in der in dem Zeitdiagramm in Fig. 6a
dargestellten Weise verarbeitet.
Skalarprogramm:
Einstellbefehle für Schleife ′100′
EXVP-Vektorprogramm = ′LABEL 1′
Einstellbefehle für Schleife ′200′
EXVP-Vektorprogramm = ′LABEL 2′
Vektorprogramm:
LABEL 1:Vektor laden VR 0 ← ′B′
Vektor laden VR 1 ← ′C′
Vektoraddition VR 2 ← VR 0 + VR 1
Vektor speichern VR 2 → ′A′
Vektorverarbeitungs-END-Befehl LABEL 2:Vektor laden VR 0 ← ′Z′
Vektor laden VR 1 ← ′Y′
Vektormultiplikation VR 2 ← VR0 * VR 1
Vektor speichern VR 2 → ′X′
Vektorverarbeitungs-END-Befehl.
LABEL 1:Vektor laden VR 0 ← ′B′
Vektor laden VR 1 ← ′C′
Vektoraddition VR 2 ← VR 0 + VR 1
Vektor speichern VR 2 → ′A′
Vektorverarbeitungs-END-Befehl LABEL 2:Vektor laden VR 0 ← ′Z′
Vektor laden VR 1 ← ′Y′
Vektormultiplikation VR 2 ← VR0 * VR 1
Vektor speichern VR 2 → ′X′
Vektorverarbeitungs-END-Befehl.
Bei dem erfindungsgemäßen Vektorverarbeitungsgerät kann
die Decodierung eines nachfolgenden Vektorbefehls auf
die Beendigung des Decodiervorgangs eines vorangehenden
Vektorbefehls begonnen werden, wodurch die Verarbeitung
der Schleife DO "200" zu einem früheren Zeitpunkt gestattet
werden kann, wie in Fig. 6a mit angedeutet ist, wobei das
Vektorregister VR 0 leer läuft. Anders gesagt ändert sich
das in Fig. 6a dargestellte Zeitdiagramm so wie die gestrichelten
Linien angeben.
Nun wird die Vektorregisternummer im Zusammenhang mit der
Vektorbefehlskette betrachtet. Die Vektorregisternummer,
wie sie im Operandenfeld eines Vektorbefehls angegeben
ist, stellt einen Zwischenspeicherplatz, der die Verkettungsoperation
angibt und einen Speicherplatz für
ein Feld od. dgl. dar, der über mehrere DO-Schleifen
beibehalten wird. In diesem Zusammenhang können diese
beiden verschiedenen Eigenschaften von einem Compiler
getrennt identifiziert werden. Auf diese Weise kann der
Compiler vorteilhaft zwei Eigenschaften der Vektorregisternummer
über mehrere DO-Schleifen verwenden und dadurch die
Übersetzung der Vektorregisternummer so durchführen, daß
die Betriebsmittel der Vektorverarbeitung bis zu einem
möglichen Maximum ausgenutzt werden. Zu diesem Zweck können die
o. g. Objektprogramme wie folgt übersetzt werden:
Vektorprogramm:
LABEL 1:Vektor laden VR 0 ← ′B′
Vektor laden VR 1 ← ′C′
Vektoraddition VR 2 ← VR 0 + VR 1
Vektor speichern VR 2 → ′A′
Vektorverarbeitungs-END-Befehl LABEL 2:Vektor laden VR 3 ← ′Z′
Vektor laden VR 4 ← ′Y′
Vektormultiplikation VR 5 ← VR 3 * VR 4
Vektor speichern VR 5 → ′X′
Vektorverarbeitungs-END-Befehl.
LABEL 1:Vektor laden VR 0 ← ′B′
Vektor laden VR 1 ← ′C′
Vektoraddition VR 2 ← VR 0 + VR 1
Vektor speichern VR 2 → ′A′
Vektorverarbeitungs-END-Befehl LABEL 2:Vektor laden VR 3 ← ′Z′
Vektor laden VR 4 ← ′Y′
Vektormultiplikation VR 5 ← VR 3 * VR 4
Vektor speichern VR 5 → ′X′
Vektorverarbeitungs-END-Befehl.
Somit kann die anhand des Zeitdiagramms in Fig. 6b dargestellte
Verarbeitung realisiert werden. Wie Fig. 6b zeigt,
kann die Vektorbefehlsverarbeitung über zwei Schleifen DO
"100" und "200" ohne Diskontinuität durchgeführt werden,
wodurch Parallelverarbeitungsvorgänge entsprechend der Anzahl
der Betriebsmittel des Vektorverarbeitungsgeräts
automatisch möglich sind.
Der oben beschriebene Verarbeitungsvorgang ist insbesondere
bei der Berechnung von Matrizen wirksam, deren Verarbeitung
in einer Vielzahl von Schleifen erfolgt. Es sei
als Beispiel eine arithmetische Operation mit den niedrigen
dreidimensionalen Matrizen (engl.: lower triangular matrices) betrachtet,
die durch
DO 100 J = 1, N
DO 100 I = J, N
A (I, J) = B(I, J) + C(I, J) 100 CONTINUE
DO 100 I = J, N
A (I, J) = B(I, J) + C(I, J) 100 CONTINUE
gegeben ist.
Beim bekannten Vektorverarbeitungsgerät variiert die Vektorlänge
von 1 bis N, wodurch sich eine bemerkenswerte
Verschlechterung der Leistungsfähigkeit des Vektorverarbeitungsgeräts
für kurze Vektorlängen einstellt. Folglich
können die dem Vektorprozessor eigenen Vorteile nicht für
die gesamte Matrixberechnung erwartet werden. Im Gegensatz
dazu kann bei dem erfindungsgemäßen Vektorprozessor die
Vektorverarbeitung der inneren DO-Schleifen kontinuierlich
durch Anwendung geeigneter Prozeduren zur Übersetzung der
Vektorregisternummern durchgeführt werden.
Ein Beispiel der Ergebnisse der Übersetzung der Vektorregisternummern
ist unten angegeben
Skalarprogramm:
′N′ gerade/ungerade Entscheidung
falls N gerade ist, geh zu LABEL 0g
Einstellbefehle für ′J = 1′Verarbeitung des Bruchteils
EXVP-Vektorprogramm = ′LABEL 1′
falls N gerade ist, geh zu LABEL 0g
Einstellbefehle für ′J = 1′Verarbeitung des Bruchteils
EXVP-Vektorprogramm = ′LABEL 1′
LABEL 0:Einstellbefehle für ′J = 2, 4, . . .′
EXVP-Vektorprogramm = ′LABEL 2′
Einstellbefehle für ′J = 3, 5, . . .′
EXVP-Vektorprogramm = ′LABEL 3′
BCT LABEL 0
EXVP-Vektorprogramm = ′LABEL 2′
Einstellbefehle für ′J = 3, 5, . . .′
EXVP-Vektorprogramm = ′LABEL 3′
BCT LABEL 0
Vektorprogramm:
LABEL 1:Vektor laden VR 0 ← ′C′ (J = 1)
Vektor laden VR 1 ← ′B′ (J = 1)
Vektoraddition VR 2 ← VR 0 + VR 1
Vektor speichern VR 2 → ′A′ (J = 1)
Vektorverarbeitungs-END-Befehl LABEL 2:Vektor laden VR 3 ← ′C′ (J = 2n)
Vektor laden VR 4 ← ′B′ (J = 2n)
Vektoraddition VR 5 ← VR 3 + VR 4
Vektor speichern VR 5 → ′A′ (J = 2n)
Vektorverarbeitungs-END-Befehl LABEL 3:Vektor laden VR 0 ← ′C′ (J = 2n + 1)
Vektor laden VR 1 ← ′B′ (J = 2n + 1)
Vektoraddition VR 2 ← VR 0 + VR 1
Vektor speichern VR 2 → ′A′ (J = 2n + 1)
Vektorverarbeitungs-END-Befehl.
LABEL 1:Vektor laden VR 0 ← ′C′ (J = 1)
Vektor laden VR 1 ← ′B′ (J = 1)
Vektoraddition VR 2 ← VR 0 + VR 1
Vektor speichern VR 2 → ′A′ (J = 1)
Vektorverarbeitungs-END-Befehl LABEL 2:Vektor laden VR 3 ← ′C′ (J = 2n)
Vektor laden VR 4 ← ′B′ (J = 2n)
Vektoraddition VR 5 ← VR 3 + VR 4
Vektor speichern VR 5 → ′A′ (J = 2n)
Vektorverarbeitungs-END-Befehl LABEL 3:Vektor laden VR 0 ← ′C′ (J = 2n + 1)
Vektor laden VR 1 ← ′B′ (J = 2n + 1)
Vektoraddition VR 2 ← VR 0 + VR 1
Vektor speichern VR 2 → ′A′ (J = 2n + 1)
Vektorverarbeitungs-END-Befehl.
Wie aus der vorangehenden Beschreibung hervorgeht, kann
durch Kombination des erfindungsgemäßen Vektorprozessors
mit einem Compiler, der die Funktion der Übersetzung der
Vektorregisternummer aufweist, eine vorteilhafte Verarbeitung
durch maximales Ausnutzen der der Matrixberechnung
eigenen Parallelverarbeitung verwirklicht werden.
Die Erfindung gibt einen Vektorprozessor an, bei dem die
Vektorverarbeitungseinheit mit erhöhter Geschwindigkeit
aktiviert werden kann, weil nach dem Ende der Decodierverarbeitung
für eine vorangehende Vektorbefehlskette
die Verarbeitung einer nachfolgenden Vektorbefehlskette
gestartet werden kann.
Claims (3)
1. Vektorprozesssor,
gekennzeichnet durch
eine Vektorverarbeitungseinheit, die einen Vektorbefehlsdecodierer
(5) aufweist;
eine Skalarverarbeitungseinheit, die einen Skalarbefehlsdecodierer
(3) aufweist, um die Verarbeitung einer Vektorbefehlskette
der Vektorverarbeitungseinheit abhängig von
einem die Initiierung der Verarbeitung der Vektorbefehlskette
angebenden Skalarbefehl anzuweisen;
und
eine Indikatoreinrichtung (6), die mit der Vektorverarbeitungseinheit
verbunden ist und angibt, ob der Vektorbefehlsdecodierer
(5) einen Vektorbefehl decodiert oder
nicht, wobei
die Skalarverarbeitungseinheit eine Befehlseinrichtung
(3) aufweist, die mit der Indikatoreinrichtung (6) verbunden
ist und die Initiierung der Verarbeitung der
Vektorbefehlskette der Vektorverarbeitungseinheit anweist,
es sei denn, daß der Vektorbefehlsdecodierer (5)
einen Vektorbefehl decodiert.
2. Vektorprozessor nach Anspruch 1,
dadurch gekennzeichnet,
daß die Indikatoreinrichtung ein Register (W) enthält,
das abhängig von der Initiierung des Decodiervorgangs
der Vektorbefehlskette gesetzt und abhängig von dem
Decodiervorgang eines Vektorendbefehls der Vektorbefehlskette
zurückgesetzt wird.
3. Vektorprozessor nach Anspruch 2,
dadurch gekennzeichnet,
daß die Skalarverarbeitungseinheit ein Flip-Flop (107)
aufweist, das den Setz/Rücksetzzustand des Registers (W)
abhängig von dem Skalarbefehl, der die Initiierung der
Verarbeitung der Vektorbefehlskette anweist, holt und
die Initiierung der Verarbeitung der Vektorbefehlskette
abhängig von dem Setzzustand des Flip-Flops anweist.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP60252798A JPH0622035B2 (ja) | 1985-11-13 | 1985-11-13 | ベクトル処理装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
DE3638572A1 true DE3638572A1 (de) | 1987-05-14 |
DE3638572C2 DE3638572C2 (de) | 1990-05-03 |
Family
ID=17242385
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE19863638572 Granted DE3638572A1 (de) | 1985-11-13 | 1986-11-12 | Vektorprozessor |
Country Status (3)
Country | Link |
---|---|
US (1) | US5073970A (de) |
JP (1) | JPH0622035B2 (de) |
DE (1) | DE3638572A1 (de) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0388043A1 (de) * | 1989-02-28 | 1990-09-19 | Canon Kabushiki Kaisha | System zur Verarbeitung eines quantisierten Vektors |
Families Citing this family (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2810043B2 (ja) * | 1987-11-13 | 1998-10-15 | 株式会社日立製作所 | データ処理装置 |
US5179674A (en) * | 1988-07-25 | 1993-01-12 | Digital Equipment Corporation | Method and apparatus for predicting valid performance of virtual-address to physical-address translations |
JPH0314025A (ja) * | 1989-06-13 | 1991-01-22 | Nec Corp | 命令実行制御方式 |
US5623650A (en) * | 1989-12-29 | 1997-04-22 | Cray Research, Inc. | Method of processing a sequence of conditional vector IF statements |
US5197130A (en) * | 1989-12-29 | 1993-03-23 | Supercomputer Systems Limited Partnership | Cluster architecture for a highly parallel scalar/vector multiprocessor system |
US5544337A (en) * | 1989-12-29 | 1996-08-06 | Cray Research, Inc. | Vector processor having registers for control by vector resisters |
US5255371A (en) * | 1990-04-02 | 1993-10-19 | Unisys Corporation | Apparatus for interfacing a real-time communication link to an asynchronous digital computer system by utilizing grouped data transfer commands |
US5598547A (en) * | 1990-06-11 | 1997-01-28 | Cray Research, Inc. | Vector processor having functional unit paths of differing pipeline lengths |
JP3237858B2 (ja) * | 1991-01-30 | 2001-12-10 | 沖電気工業株式会社 | 演算装置 |
US5530881A (en) * | 1991-06-06 | 1996-06-25 | Hitachi, Ltd. | Vector processing apparatus for processing different instruction set architectures corresponding to mingled-type programs and separate-type programs |
US5539911A (en) * | 1991-07-08 | 1996-07-23 | Seiko Epson Corporation | High-performance, superscalar-based computer system with out-of-order instruction execution |
US5742842A (en) * | 1992-01-28 | 1998-04-21 | Fujitsu Limited | Data processing apparatus for executing a vector operation under control of a master processor |
US5551039A (en) * | 1992-02-03 | 1996-08-27 | Thinking Machines Corporation | Compiling a source code vector instruction by generating a subgrid loop for iteratively processing array elements by plural processing elements |
US5423051A (en) * | 1992-09-24 | 1995-06-06 | International Business Machines Corporation | Execution unit with an integrated vector operation capability |
US5513366A (en) * | 1994-09-28 | 1996-04-30 | International Business Machines Corporation | Method and system for dynamically reconfiguring a register file in a vector processor |
US6058465A (en) * | 1996-08-19 | 2000-05-02 | Nguyen; Le Trong | Single-instruction-multiple-data processing in a multimedia signal processor |
US6813701B1 (en) * | 1999-08-17 | 2004-11-02 | Nec Electronics America, Inc. | Method and apparatus for transferring vector data between memory and a register file |
US6591361B1 (en) | 1999-12-28 | 2003-07-08 | International Business Machines Corporation | Method and apparatus for converting data into different ordinal types |
US6701424B1 (en) * | 2000-04-07 | 2004-03-02 | Nintendo Co., Ltd. | Method and apparatus for efficient loading and storing of vectors |
US6857061B1 (en) * | 2000-04-07 | 2005-02-15 | Nintendo Co., Ltd. | Method and apparatus for obtaining a scalar value directly from a vector register |
JP3855270B2 (ja) * | 2003-05-29 | 2006-12-06 | ソニー株式会社 | アンテナ実装方法 |
US7457938B2 (en) * | 2005-09-30 | 2008-11-25 | Intel Corporation | Staggered execution stack for vector processing |
JP5699554B2 (ja) * | 2010-11-11 | 2015-04-15 | 富士通株式会社 | ベクトル処理回路、命令発行制御方法、及びプロセッサシステム |
WO2014132308A1 (ja) * | 2013-02-28 | 2014-09-04 | キヤノンアネルバ株式会社 | スパッタリング装置 |
CN111651203B (zh) * | 2016-04-26 | 2024-05-07 | 中科寒武纪科技股份有限公司 | 一种用于执行向量四则运算的装置和方法 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE3210816A1 (de) * | 1981-03-25 | 1982-10-14 | Hitachi, Ltd., Tokyo | Datenverarbeitungssystem mit getrennten einrichtungen zur verarbeitung von skalar- und vektordaten |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS57106982A (en) * | 1980-12-24 | 1982-07-03 | Fujitsu Ltd | Data processor |
JPS57191703A (en) * | 1981-05-20 | 1982-11-25 | Fanuc Ltd | Sequence controller |
JPS5943446A (ja) * | 1982-09-01 | 1984-03-10 | Nec Corp | マイクロコンピユ−タシステム |
JPH0652530B2 (ja) * | 1982-10-25 | 1994-07-06 | 株式会社日立製作所 | ベクトル・プロセッサ |
JPS60178580A (ja) * | 1984-02-24 | 1985-09-12 | Fujitsu Ltd | 命令制御方式 |
US4739472A (en) * | 1984-12-07 | 1988-04-19 | Nec Corporation | Information processing device capable of rapidly processing instructions of different groups |
US4740893A (en) * | 1985-08-07 | 1988-04-26 | International Business Machines Corp. | Method for reducing the time for switching between programs |
US4722049A (en) * | 1985-10-11 | 1988-01-26 | Unisys Corporation | Apparatus for out-of-order program execution |
-
1985
- 1985-11-13 JP JP60252798A patent/JPH0622035B2/ja not_active Expired - Lifetime
-
1986
- 1986-11-12 DE DE19863638572 patent/DE3638572A1/de active Granted
-
1990
- 1990-01-24 US US07/471,667 patent/US5073970A/en not_active Expired - Fee Related
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE3210816A1 (de) * | 1981-03-25 | 1982-10-14 | Hitachi, Ltd., Tokyo | Datenverarbeitungssystem mit getrennten einrichtungen zur verarbeitung von skalar- und vektordaten |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0388043A1 (de) * | 1989-02-28 | 1990-09-19 | Canon Kabushiki Kaisha | System zur Verarbeitung eines quantisierten Vektors |
US5751856A (en) * | 1989-02-28 | 1998-05-12 | Canon Kabushiki Kaisha | System for processing a quantized vector using spatial frequency correlations |
Also Published As
Publication number | Publication date |
---|---|
DE3638572C2 (de) | 1990-05-03 |
US5073970A (en) | 1991-12-17 |
JPH0622035B2 (ja) | 1994-03-23 |
JPS62114058A (ja) | 1987-05-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE3638572C2 (de) | ||
DE3210816C2 (de) | ||
DE2714805C2 (de) | ||
DE2716369C2 (de) | ||
DE2357003C2 (de) | Prozessor für eine Mehrprogramm-Datenverarbeitungsanlage | |
DE2722099C2 (de) | ||
DE69636861T2 (de) | Mikroprozessor mit Lade-/Speicheroperation zu/von mehreren Registern | |
DE69738188T2 (de) | Verfahren und apparat für eine erhöhte genauigkeit bei der verzweigungsvorhersage in einem superskalaren mirkroprozessor | |
DE1931966C3 (de) | Datenverarbeitungsanlage mit Assoziativspeichern | |
DE3424962C2 (de) | ||
EP0097725B1 (de) | Einrichtung im Befehlswerk eines mikroprogrammgesteuerten Prozessors zur direkten hardwaregesteuerten Ausführung bestimmter Instruktionen | |
DE2234867A1 (de) | Anordnung in datenverarbeitungsanlagen zum steuern der verarbeitung zweier voneinander unabhaengiger programme | |
EP0010194A1 (de) | Wartungsschnittstelleneinrichtung für eine datenverarbeitende Anlage mit einer zentralen Verarbeitungseinheit und mit einem Dienstprozessor und Verfahren zu ihrem Betrieb | |
DE2457612B2 (de) | Mikroprogrammier-Steuereinrichtung | |
DE3114921C2 (de) | Mikroprogramm-Speicheranordnung | |
DE2758830A1 (de) | Rechenvorrichtung | |
DE2019444A1 (de) | Datenverarbeitungsanlage | |
DE2835095A1 (de) | Gekoppeltes, mikroprogrammiertes prozessorsystem | |
DE1549437A1 (de) | Datenverarbeitendes System aus mehreren miteinander verbundenen Datenverarbeitungsanlagen | |
DE2164793A1 (de) | Verfahren und Datenverarbeitungsanlage zur Steuerung einer Vielzahl von Eingabe/ Ausgabe-Einheiten mittels eine Zentraleinheit | |
DE2454613C2 (de) | Kanaleinheit für die Steuerung der Datenübertragung auf einer Vielzahl von Kanälen zwischen den peripheren Einrichtungen und dem Hauptspeicher einer digitalen Datenverarbeitungsanlage | |
DE1949916B2 (de) | Verfahren zum betrieb einer programmgesteuerten datenverarbeitungsanlage und anordnung zur durchfuehrung des verfahrens | |
DE2418921C2 (de) | Vorrichtung zum Speichern von Mikroprogrammen in einer Datenverarbeitungsanlage | |
DE2617485A1 (de) | Verfahren und schaltungsanordnung zur abarbeitung von mikrobefehlsfolgen in datenverarbeitungsanlagen | |
DE2245284A1 (de) | Datenverarbeitungsanlage |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
OP8 | Request for examination as to paragraph 44 patent law | ||
D2 | Grant after examination | ||
8364 | No opposition during term of opposition | ||
8339 | Ceased/non-payment of the annual fee |