DE3638572A1 - Vektorprozessor - Google Patents

Vektorprozessor

Info

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
Application number
DE19863638572
Other languages
English (en)
Other versions
DE3638572C2 (de
Inventor
Tomoo Aoyama
Yasuhiro Inagami
Hiroshi Murayama
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.)
Hitachi Ltd
Hitachi Computer Engineering Co Ltd
Original Assignee
Hitachi Ltd
Hitachi Computer Engineering Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Ltd, Hitachi Computer Engineering Co Ltd filed Critical Hitachi Ltd
Publication of DE3638572A1 publication Critical patent/DE3638572A1/de
Application granted granted Critical
Publication of DE3638572C2 publication Critical patent/DE3638572C2/de
Granted legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/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

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.
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.
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 2VR 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 2VR 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 5VR 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
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
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
Vektorprogramm:
  LABEL 1:Vektor laden VR 0 ← ′C′ (J = 1)
Vektor laden VR 1 ← ′B′ (J = 1)
Vektoraddition VR 2VR 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 5VR 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 2VR 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.
DE19863638572 1985-11-13 1986-11-12 Vektorprozessor Granted DE3638572A1 (de)

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)

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

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

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

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

Patent Citations (1)

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

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