DE3400723A1 - Vektorprozessor - Google Patents

Vektorprozessor

Info

Publication number
DE3400723A1
DE3400723A1 DE19843400723 DE3400723A DE3400723A1 DE 3400723 A1 DE3400723 A1 DE 3400723A1 DE 19843400723 DE19843400723 DE 19843400723 DE 3400723 A DE3400723 A DE 3400723A DE 3400723 A1 DE3400723 A1 DE 3400723A1
Authority
DE
Germany
Prior art keywords
register
address
vector
command
instruction
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
DE19843400723
Other languages
English (en)
Other versions
DE3400723C2 (de
Inventor
Shigeo Hachioji Tokio/Tokyo Nagashima
Koichiro Sagamihara Kanagawa Omoda
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
Original Assignee
Hitachi 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 filed Critical Hitachi Ltd
Publication of DE3400723A1 publication Critical patent/DE3400723A1/de
Application granted granted Critical
Publication of DE3400723C2 publication Critical patent/DE3400723C2/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

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

HITACHI, LTD., Tokyo Jap an
Vektorprozessor
Die Erfindung betrifft einen Vektorprozessor, der mit hoher Geschwindigkeit die Verarbeitung von Vektoren, die mehr Elemente aufweisen als sie in Vektorregistern speicherbar sind, durchführen kann.
In Figur 1 ist die Verarbeitung in einem bekannten Vektorprozessor, der Vektorregister aufweist, dargestellt. Ziffer 1 bezeichnet einen Hauptspeicher, 7 eine Vektorregistereinheit und Ziffer 8 eine Arithmetik- und Logikeinheit.
Zur Ausführung eines Ladebefehls werden Vektoren X und Y aus der Hauptspeichereinheit 1 geholt und einzeln jeweils in V;ektorregister VRO und VR1 geladen. Danach werden zur Ausführung einer Vektoroperation die Inhalte des VRO und VR1 geholt und der Arithmetik- und Logikeinheit 8 eingegeben, in dem die zugeordnete Operation ausgeführt wird. Das Verarbeitungsergebnis wird in ein Vektorregister VR2 gespeichert. Mit einem Speicherbefehl wird der Inhalt des Vektorregisters VR2 als ein Vektor Z in die Hauptspeichereinheit 1 eingespeichert. Der Buchstabe k soll hier die Anzahl der Elemente
680-318228475DE1/AtAl
eines zu verarbeitenden Vektors (die sogenannte "Vektorlänge") und der Buchstabe %■ die Anzahl der in einem einzigen Vektorregister speicherbaren Vektorelemente (weiterhin als"Vektorregisterlänge" bezeichnet) angeben.
Die Vektorlänge k ist abhängig vom Programm sehr unterschiedlich und kann im allgemeinen Werte von 1,0 bis 10.000 erreichen. Andererseits ist die Vektorregisterlänge Z durch die Hardware eines zu verwirklichenden Prozessors begrenzt und reicht gegenwärtig von 64 bis 256.
Aus diesem Grund ist, falls k = I ist, die Ausführung eines Vektorbefehls mit einer Vektoroperation möglich, wohingegen im Falle k > Si geeignete Maßnahmen getroffen werden müssen. Im folgenden werden zwei Maßnahmen betrachtet:
Beim ersten Verfahren wird die Verarbeitung softwaremäßig unterteil.t und die jeweiligen zu verarbeitenden Teile getrennt von Hardwareeinheiten verarbeitet.
Das zweite Verfahren ist die direkte Verarbeitung durch Hardwareeinheiten , in dem die Vektordaten in Gruppen,
die jeweils höchstens £ Elemente aufweisen, unterteilt und dann verarbeitet werden. Die £ Elemente werden im weiteren "Segmente" genannt. Bei diesem zweiten Verfahren wird demnach, nachdem ein Segment von einer Vektorbefehlsfolge abgearbeitet ist, die Vektorbefehlsfolge erneut geholt und das nächste Segment verarbeitet.
Dabei besitzt das zweite genannte Verfahren bezüglich der Hardwaresteuerung den Vorteil, daß der Oberhang beschränkt bleibt und daß eine schnelle Verarbeitung möglich ist.
Eine wesentliche Aufgabe besteht beim zweiten genannten Verfahren in der Erhöhung der Verarbeitungsgeschwindigkeit
und zwar werden nach der Verarbeitung der Vektorbefehlsfolge für ein bestimmtes Segment (weiterhin "Verarbeitungsschleife " genannt , wobei die "Schleife i" die Verarbeitungsschleife des i-ten Segments darstellen soll) Adressen des für die folgende Verarbeitungsschleife verwendeten Segments erzeugt.
Das zur Adressenfortschreibung verwendete Verfahren wird in "PROCESSING VECTORS AS A PLURALITY OF SEGMENTS" (IBM Technical Disclosure Bulletin, Bd. 13, No. 12, Mai 1971) beschrieben. Diese bekannte Schrift zeigt zwar das Verfahren, das die Adressen fortschreibt, jedoch keine Schaltung, die die Verarbeitung in Pipelineweise mittels Vektorregistern, wie sie in Figur 1 dargestellt sind, ausführt.
Figur 2A stellt einen allgemeinen bekannten Schaltungsaufbau dar und Figur 2B den darin ablaufenden allgemeinen Verarbei-r tungsfluß.
Für einen Zugriff (Laden und Speichern) zu einer Hauptspeichereinheit 1 werden die Ladeadressen (oder Speicheradressen) für die jeweiligen Vektorelemente nacheinander auf der Basis der Kopfadresse (das ist die Adresse des ersten Elements und wird als "Basisadresse" bezeichnet) und des Adressintervalls zwischen benachbarten Elementen (weiterhin als "Inkrementwert" bezeichnet) erzeugt, worauf aufgrund dieser Adressen zum Hauptspeicher zugegriffen wird. Falls die Vektordaten in der Hauptspeichereinheit 1 lückenlos eingespeichert sind, nämlich in Form kontinuierlich aufeinanderfolgenden Elementen, so ist die sogenannte "Adresskontinuität" gegeben, wohingegen bei den anderen Fällen eine "Adressdiskontinuität" vorliegt. Mit der Annahme, daß der Inkrementwert in Byte-Adressen angegeben wird, ergibt sich die Adresskontinuität beim Inkrementwert 8, falls die Breite der Vektordaten 8 Byte beträgt und gilt für den Inkrementwert 4, falls die Vektordatenbreite 4 Byte ist. Dabei wird die Vektorregisterlänge zu 256 angenommen.
Zuallererst Wird die Basisadresse in ein Basisregister 105, der Inkreraentwert in ein Inkrementregister 101 gesetzt und ein Hochzählregister 102 auf Null rückgesetzt.
Gemäß der untenstehenden Erläuterung werden in ein Segmentbasisregister 109 die Adressen der Kopfelemente der Segmente, die«in der jeweiligen Schleifenverarbeitung zu verarbeiten sind, gesetzt. Solche Adressen werden im folgenden "Segmentbasisadressen" genannt. Dazu wird der Adressversatz zwischen der Adresse des Kopfelements der Vektordaten zu einer bestimmten Segmentbasisadresse "Segmentadressversatz" genannt.
Das Hochzählregister 102 hält die Kopfelementnummer während jeder Ver'arbeitungsschleife.
Daher erhält man die Segmentbasisadresse aus der Addition des im Basisregister 105 stehenden Werts zum Produkt aus dem Wert des Inkrementregisters 101 mit dem Inhalt des" Hochzählregisters 102. Zur Produktberechnung gibt es zwei Möglichkeiten wie folgt:
Im ersten Fall liegt Adresskontinuität vor. Der Wert des Hochzählregisters 102 wird einem Linksschieberegister 104 eingegeben, in dem das 8-Byte-Datum um 3 Bit nach links verschoben wird oder ein 4-Byte-Datum wird um 2 Bit nach links verschoben. Der sich ergebende Ausgangswert wird über einen Wähler 106 in ein Adressregister 107 gesetzt. Im zweiten Fall liegt Adressdiskontinuität vor. In diesem Fall wird das Produkt aus dem Wert des Inkrementregisters 101 und dem Wert des Hochzählregisters 102 von einem Multiplizierer 103 berechnet und das Ergebnis in das Adressregister 107 gesetzt.
In jedem Fall wird der Inhalt des Adressregisters 107 mit dem Inhalt des Basisregisters 105 im Addierer 108 addiert, wodurch sich die Segmentbasisadresse ergibt. Ein Inkrementdekoder 100 erfaßt das Vorliegen der Adresskontinuität oder Adressdiskontinuität und steuert den Wähler 106 abhängig vom Erfassungsergebnis .
Das Hochzählregister 102 muß um die Vektorregisterlänge für die folgende Verarbeitungsschleife anwachsen. Wie Figur 2B beispielhaft zeigt, geschieht das Fortschreiben des Registers 102 beim letzten Befehl einer Befehlsfolge, die mit einem Ladebefehl beginnt und mit einem Speicherbefehl endet. Da außerdem die Multiplikation im Muliplizierer 103 bei Adressdiskontinuität eine beträchtliche Zeit dauert, entsteht das Problem, daß sich der Startzeitpunkt c des Ladebefehls der Schleife 2 verzögert.
Es ist bei der Verarbeitung wünschenswert, daß der Startzeitpunkt c des Ladebefehls der Schleife 2 vor dem Startzeitpunkt b des Speicherbefehls der Schleife 1 in Figur 2 liegt. Das heißt, daß eine Überlappung der Befehlsstartzeitpunkte aufeinanderfolgender Verarbeitungsschleifen erwünscht ist. Im Stand der Technik wird das Hochzählregister 102 für die folgende Verarbeitungsschleife jedoch beim letzten Befehl der vorangehenden Schleifenverarbeitung fortgeschrieben und die Adresse mittels des Werts des Hochzählregisters 102 nach der zuvor beschriebenen Methode erzeugt, so daß eine sich überlappende Verarbeitung unmöglich war.
Es ist demnach Aufgabe der Erfindung, die oben beschriebenen Nachteile des Standes der Technik zu vermeiden und einen Vektorprozessor anzugeben, der die zur Erzeugung der Adresse für die folgende Verarbeitungsschleife notwendige Zeitdauer verringert und außerdem überlappende Startzeitpunkte für Befehle aufeinanderfolgender Verarbeitungsschleifen ermöglicht, wodurch die Verarbeitungsgeschwindigkeit einer Vektoroperation erhöht werden kann.
Zur Lösung der obigen Aufgabe wird erfindungsgemäß zum Zeitpunkt der Erzeugung der Segmentbasisadresse der vorangehenden Verarbeitungsschleife ein Segmentversatz für die folgende Verarbeitungsschleife vorgezogen berechnet und in einem der
I'll ι " :"::.s. 4 ** UU
10-
Adressregister gehalten. Dadurch wird die zur Adresserzeugung nötige Zeitdauer verkürzt und ein Oberlappen der Verarbeifungsschleifen ermöglicht. Dabei ist eine Überlappung der Verarbeitungsschleifen auch in dem Fall möglich,wo die gleichen Adressregister bei verschiedenen Befehlen benutzt werden, indem (n + 1) Adressregistergruppen zur Verfügung stehen und somit die Überlappung bei η aufeinanderfolgenden Verarbeitungsschleifen realisiert werden kann.
Die Erfindung wird im folgenden anhand der Zeichnung näher beschrieben. Es zeigen:
Fig. 1 ein Anordnungsschema eines herkömmlichen Vektorprozessors ;
Fig. 2A ein Blockschaltbild eines Beispiels einer bekannten Vektoraus Ieseschaltung;
Fig. 2B ein Diagramm, das eine Befehlsablauffolge der in Figur 2A dargestellten Schaltung erläutert;
Fig. 3 ein Diagramm, das das Prinzip der Erfindung erläutert;
Fig. 4A
und 4B Diagramme, die Beispiele von Befehlsablauffolgen gemäß der Erfindung bei verschiedenen Bedingungen erläutern;
Fig. 5 ein Blockschaltbild eines Ausführungsbeispiels der Erfindung;
Fig. 6 ein Detailschaltbild der wesentlichen Teile des in Figur 5 dargestellten Vektorprozessors;
Fig. 7 ein Detailschaltbild einer in Figur 5 gezeigten Befehls Steuereinheit;
Fig. 8A ein Zeitdiagramm der im Ausführungsbeispiel gemäß Figur 5 ausgeführten Operationen;
Fig. 8B ein Beispiel eines FORTRAN-Programms zur Erläuterung des in Figur 8A gezeigten Zeitdiagramms-,
-11-
Fig. 8C ein Beispiel einer Vektorbefehlsfolge für den Ablauf des Programms in Figur 8B; und
Fig. 9 ein Zeitdiagramm der Operationen des in Figur 5 dargestellten Ausführungsbeispiels für eine von Figur 8C verschiedene Vektorbefehlsfolge.
Bevor ein Ausführungsbeispiel genauer beschrieben wird, erfolgt eine Erläuterung des der Erfindung zugrundeliegenden Prinzips.
Figur 3 stellt den Prinzipaufbau der vorliegenden Erfindung dar. Ziffer 111 bezeichnet einen Addierer, 112 und 113 Adressregister, 114 einen Wähler, und die Ziffer 110 ein Links- ■ Schieberegister.
Die anderen Komponenten sind dieselben wie in Figur 2A. Jedoch sind in Figur 3 jeweils mehrere Inkrementregister 101, mehrere Adressregister 112, 113 und mehrere Basisregister 105 enthalten.
Zuerst wird eine Basisadresse beispielsweise in Register 1 der Basisregister 105 und ein Inkrementwert in Register 1 der Inkrementregister 101 gesetzt. Außerdem wird beispielsweise Register 1 der Adressregister 112 auf Null gesetzt. Nachstehend wird das zum Erzeugen einer Adresse verwendete Verfahren anhand eines in Figur 2B dargestellten Ablaufs beschrieben.
Wenn der Ladebefehl einer Schleife 1 beginnt, wird der Wert des Registers 1 der Adressregister 112 dem Addierer 108 durch den Wähler 114 eingegeben und zum Wert des Registers 1 der Basisregister 105 addiert. Das Additionsergebnis wird in das Segmentbasisregister 109 gesetzt, dessen Wert einem nicht dargestellten Speicheranforderer gesendet wird.
Parallel dazu wird der Wert des Registers \ der Inkrementregister 101 um 8 Bit mittels des Links-Schieberegisters 110 nach links geschoben und dadurch der Inkrementwert mit 256 multipliziert. Dieses Schiebeergebnis wird dem Addierer 111
eingegöbeh» Der andere Eingang des Addierers 111 erhält den Wert des Registers 1 der Adressregister 112 durch den Wähler 114/ und das Additionsergebnis, nämlich ein Segmentadressversatz wird in das Register 1 der Adressregister 113 gesetzt. Auf diese Weise wird im Register 1 der Adressregister 113 vorgezogen der Segmentadressversatz für den Ladebefehl einer folgenden Schleife bereitgestellt.
Danach wird mittels einer der Verarbeitungsprozedur des Ladebefehls der Schleife 1, wie sie oben beschrieben wurde, gleichen Verarbeitungsprozedur die Adresse für den Speicherbefehl der Schleife 1 erzeugt. Beispielsweise wird dazu Register Nr. 2 verwendet- Sobald der letzte Speicherbefehl der Schleife 1 gestartet wurde, kann der Ladebefehl der Schleife 2 starten. Dies geschieht, weil der Segmentadressversatz zum Ablauf des Ladebefehls bereits im Register 1 der Adressregister 113 zur Verfügung steht. Der Segmentadressversatz wird mit dem Wert des Registers 1 der Basisregister 105 durch den Addierer 108 addiert, woraus sich eine Segmentbasisadresse für den Ladebefehl ergibt. Auf diese Weise wird der durch die Adressenerzeugung beim Übergang der Verarbeitungsschleife entstehende Überhang verkürzt.
Sobald der Ladebefehl der Schleife 2 gestartet wurde, ist die Segmentbasisadresse für den Ladebefehl in der oben angeführten Weise erhältlich und in das Segmentbasisregister 109 gesetzt, wonach es einem Anforderer zugesandt wird. Parallel dazu wird der mit 256 multiplizierte Wert des Registers 1 der Inkrementregister 101 zum Wert des Registers 1 der Adressregister 113 genauso wie bei der Verarbeitung der Schleife 1 hinzuaddiert und das Additionsergebnis in das Register 1 der Adressregister 112 gesetzt und damit der in Schleife 3 zu verwendende Wert bereitgestellt.
Weiterhin wird diese Verarbeitung in gleicher Weise für die nötigen Verarbeitungsschleifen wiederholt. Dabei werden die
-13-
Adressregister 112 und 113 jeweils abwechselnd verwendet. Die Information oder Registernummer zur Steuerung wird von einer Befehlssteuereinheit zugesandt.
Falls bei den zuvor erwähnten Lade- und Speicherbefehlen die Inkrementwerte gleich sind, ist es zweckmäßig, gleiche Registernummern, nämlich der Inkrementregister 101 und der Adressregister 112 und 113 in diesen Befehlen zuzuweisen. Wenn die Register derselben Nummer auf diese Weise von verschiedenen Befehlen geteilt werden, kann die Zeitdauer zum Setzen der Anfangswerte günstig verkürzt und die in ihrer Anzahl eingeschränkten Register wirksam ausgenutzt werden.
Auch wenn beispielsweise im oben genannten Speicherbefehl Register 1 der Inkrementregister 101 und der Adressregister 112 und 113 verwendet werden, ergibt sich daraus kein Problem. Obwohl beim Speicherbefehl der Schleife 1 derselbe Wert wie beim Ladebefehl der Schleife 1 in das Register 1 der Adressregister 113 gesetzt wird, ist dies nicht unbequem.
Die in den zwei Gruppen 112 und 113 angeordneten Adressregister sind für die Zuordnung der identischen Adressregisternummern für verschiedene Befehle nötig. Falls nämlich keine identische Adressregisternummer zugeteilt wird, genügt eine Gruppe.
In den Figuren 4A und 4B ist der Verarbeitungsfluß für Fälle dargestellt, wo sich die Befe-hlsstartzeitpunkte der Verarbeitungsschleifen überlappen.
Die Figur 4A zeigt, daß der Startzeitpunkt e des Ladebefehls einer Schleife i + 2 dem Startzeitpunkt d des Ladebefehls einer Schleife i + 1 vorangeht und daß der Startzeitpunkt b des Speicherbefehls einer Schleife i dem Startzeitpunkt e des Ladebefehls der Schleife i + 2 vorangeht. Das heißt, daß die Überlappung der Startzeitpunkte der Befehle lediglich für zwei benachbarte'Verarbeitungsschleifen bei Betrachtung
eines bestimmten Zeitpunkts auftritt. Figur 4B Zeigt, daß der Startzeitpunkt g des Ladebefehls einer Verarbeitungsschleife i + 3 dem Startzeitpunkt d des Speicherbefehls der Schleife i + 1 vorangeht und daß der Startzeitpunkt b des Speicherbefehls der Schleife i dem Startzeitpunkt g des Ladebefehls der Schleife i + 3 vorangeht, so daß sich die Startzeitpunkte von drei aufeinanderfolgenden Verarbeitungsschleifen überlappen.
Um die überlappende Verarbeitung bei sich überlappenden ' Befehlsstartzeitpunkten durchzuführen und die Adressregister zwischen den verschiedenen Befehlen aufzuteilen, genügen die in Figur 3 dargestellten zwei Gruppen der Adressregister 112 und 113 nicht und deshalb werden mehr Register benötigt. In Figur 4A werden drei Gruppen und in Figur 4B vier Registergruppen benötigt.
Im allgemeinen sind für die Überlappung von η aufeinanderfolgenden Verarbeitungsschleifen η + 1 Adressregistergruppen nötig. Wenn in diesem Sinne der Überlappungsgrad erhöht wird, kann man die Auslastung einer Arithmetik-und Logikeinheit oder einer ähnlichen Einrichtung durch Vermeidung von Lücken und damit den Verarbeitungswirkungsgrad erhöhen.
Figur 5 zeigt in Form eines Blockschaltbilds ein Aufbauschema eines Ausführungsbeispiels gemäß der Erfindung. Eine Hauptspeichereinheit 1 speichert Vektordaten, eine Speichersteuereinheit 2 staffelt das Auslesen der Vektordaten aus dem Hauptspeicher 1 und deren Einspeichern in den Hauptspeicher. 1; eine Befehlssteuereinheit 3 dekodiert Befehle und steuert den Betrieb verschiedener Betriebsmittel (beispielsweise einer Arithmetik- und Logikeinheit, eines Speicheranforderers usw.); eine Zugriffssteuereinheit 6 besteht aus Adressregistern 200, zwei nur-Auslese-Anforderern 210, 220 (die jeweils mit "Anforderer 0" und "Anforderer 1" bezeichnet sind) und aus einem nur-Speicher-Anforderer 230 (mit "Anforderer 2" bezeichnet)j
* « «ft ■ mn
-15-
eine Vektorregistereinheit 7 besteht aus 8 Vektorregistern VRO-7 (Vektorregisterlänge: 256) ; und eine Arithmetik- und Logikeinheit 8 besteht aus einem Multiplizierer 240 und einem Addierer 250.
Figur 6 zeigt ein Schaltbild eines in der Zugriffssteuereinheit 6 enthaltenen Adressgeneratorteils. Steuerschaltungen
211, 221 und 231 steuern Anfang und Ende von Operationen und bilden jeweils einen Teil der Anforderer 0, 1 und 2; Adressgeneratorschaltungen 212, 222 und 232 sind ebenfalls jeweils Teile der Anforderer 0, 1 und 2; die Komponenten mit den Ziffern 300 -304 sind Register; Ziffer 305 gibt ein ODER-Glied an; die Ziffern 306 - 308 sind UND-Glieder; Ziffer 309 ist ein Vektorbasisregister VBR; die Ziffern 310 - 312 sind jeweils Vektoradressregister VAR, VARD und VARDD; Ziffer 313 gibt Vektorinkrementregister VIR an; Ziffer 314 gibt eine Links-Schiebeschaltung, Ziffer 315 einen Addierer, die Ziffern 316 - 318 Torschaltungen und die Ziffern 319 - 323 Wähler an. Die VBR 309, VAR 310, VARD 311, VARDD 312 und VIR 313 bestehen jeweils aus acht Registern und die zweiten Register, beispielsweise das zweite Register der VBR 309, werden zur Abkürzung durch die Ziffer 2 zum Beispiel "VBR2" benannt.
Die Adresse eines Vektors X(i) wird wie folgt erzeugt:
X(D VBRj + VARk
X(2) VBRj + VARk + VIRk
X(3) VBRj + VARk + VIRk *2
X(i) VBRj + VARk + VIRk * (i - 1)
Hier wird angenommen, daß die Nummern j und k der VBR und VAR durch einen Befehl zugeordnet werden und daß die Nummer der VIR gleich der Nummer k der VAR ist.
Die Adresserzeugung wird von den Adressgeneratorschaltungen
212, 222 und 232 durchgeführt.
/ Ιό
Die in Figur 6 dargestellten VAR 310 und VARD 311 entsprechen den Adressregistern 112 und 113 in Figur 3. Die VARDD 312 sind zusätzlich vorgesehen, um die Überlappung zwischen zwei Verarbeitungsschleifen zu ermöglichen.
Figur 7 stellt ein Blockschaltbild der Befehlssteuereinheit 3 dar. Diese enthält: Torschaltungen 400, 4ü4 und 405, ein Befehlsregister 401, eine Befehlsdekodierschaltung 402, ein Schleifenregister 403, eine Dekodierunterdrückungs-Detektorschaltung 406, ein Befehlsschlangenregister 407, ein Schleifenschlangenregister 408, eine Befehlstorschaltung 409, eine Betriebsmittelverwaltungsschaltung 410, einen Dekoder 411 und einen Wähler 412.
Ein geholter Befehl wird über die Torschaltung 400 in das Befehlsregister 401 der Befehlsdekodierschaltung 402 eingegeben. Darin wird der Befehl dekodiert und die kennzeichnende Information (OP Code) des Befehls und die Information über die jeweiligen Registernummern der VBR, VAR und Vektorregister, usw., dekodiert, die über die Torschaltung 404 der Befehlstorschaltung 409 übertragen werden. Die Befehlstorschaltung wird mit der dekodierten Befehlsinformation über die Torschaltung 404 von der Befehlsdekodierschaltung 402 und mit dekodierter Befehlsinformation, die im Befehlsschlangenregister 407 gespeichert ist, gespeist. Die Befehlstorschaltung 409 beurteilt aufgrund der von der Betriebsmittelverwaltungsschaltung 410 gelieferten Information über den Benutzungsstatus der Betriebsmittel, ob Befehle, die aus der dekodierten Information gebildet werden, startfähig sind oder nicht. Liegen mehrere startfähige Befehle vor, wählt die Befehlstorschaltung einen davon aus. Falls der direkt von der Befehlsdekodierschaltung 402 eingegebene Befehl nicht gestartet werden kann, wird die diesem zugeordnete dekodierte Information in einem freien Bereich des Befehlsschlangenregisters 407 in eine Warteschlange eingereiht. Wenn sowohl der im Befehlsschlangenregister 407 befindliche Befehl und der von der Befehlsdekodier-
-17-
schaltung 402 dekodierte Befehl startfähig sind, wird der im Befehlsschlangenregister 407 stehende Befehl vorzugsweise gestartet. Wenn im Befehlsschlangenregister 407 mehrere startfähige Befehle stehen, werden diese in der zeitlichen Reihenfolge, wie sie dekodiert wurden, nacheinander gestartet. Die Betriebsmittelverwaltungsschaltung 410 verwaltet den Benutzungszustand der verschiedenen Betriebsmittel. Die Betriebsmittel (wie der Speicheranforderer und die Arithmetik- und Logikeinheit), die zu dem von der Befehlstorschaltung gestarteten Befehl gehören, werden von der Betriebsmittelverwaltungsschaltung 410 im "Gebrauchszustand" gehalten. Sobald die Betriebsmittel Ende-Signal (beispielsweise /18 - &20 von den Speicheranforderern 0-2) abgeben, werden sie von der Betriebsmittelverwaltungsschaltung 420 im "Freizustand" gehalten.
Auf diese Weise werden die startfähigen Befehle früher gestartet und die nichtstartfähigen in eine Warteschlange eingereiht, bis sie startfähig werden. Beim vorliegenden Ausführungsbeispiel wird gemäß der Erfindung erneut Schleifeninformation hinzugefügt. Dabei wird die Steuerung wie folgt betrieben:
Das Schleifenregister 403 besteht aus zwei Bit. Es wird einmalig vor dem Start der Verarbeitung eines Vektorbefehls gesetzt. Die Befehlsdekodierschaltung 402 addiert zum Inhalt des Schleifenregisters 403 jedes Mal, wenn es einen am Ende der Befehlsfolge stehenden END-Befehl dekodiert, eine 1 . Falls jedoch der Wert des Schleifenregisters 403 durch diesen Inkrementiervorgang Null werden würde, wird er auf 1 gehalten. Die Werte 1, 2 und 3 des Schleifenregisters 403 entsprechen jeweils den Adressregistern VAR, VARD und VARDD. Sobald der Lade- oder Speicherbefehl abläuft, werden aufgrund dieses Werts die entsprechenden Adressregister ausgewählt. Die Schleifeninformation des Schleifenregisters 403 wird entweder direkt synchron mit der von der Befehlsdekodierschaltung
402 ausgegebenen Information über die Torschaltung 405 dem Wähler 412 oder nach einmaligen Einreihen in die Warteschlange im Schleifenschlangenregister 408 zugeführt.
In einem Fall, wo der von der Befehlstorschaltung 409 als startfähig angesehene Befehl ein Lade- oder ein Speicherbefehl ist, wird die aus 2 Bit bestehende Schleifeninformatioft, die diesem Befehl entspricht, vom Wähler 412 ausgewählt und danach vom Dekoder 411 dekodiert. Wenn die Schleifeninformation 1, 2 oder 3 ist, werden jeweils eine Leitung 12, 13 oder 14 "Eingeschaltet. ;
Im Falle der als startfähig angesehene Befehl der Ladebefehl oder der Speicherbefehl ist, überträgt die Befehlstorschaltung 409 die zu verwendenden Anforderer über Leitungen £lS - i 17. Wenn der Anforderer 0, 1 oder 2 benutzt werden soll, erzeugt die Schaltung 409 ein Startsignal jeweils auf den Leitungen ί 15, t16 oder £i7. Dazu liefert die Befehlstorschaltung die Basisregisternummer und die Adressregisternummer der dekodierten Information des ausgewählten Befehls jeweils auf den Leitungen Ji 10 und £11.
Ohne Frage muß von einer (nicht dargestellten) Schaltung eine Befehlsfolge für die Schleifenverarbeitung solange wiederholt aus dem Hauptspeicher ausgelesen werden, bis sämtliche Daten in einer gewünschten Vektorlänge verarbeitet sind. Natürlich ist auch eine (nicht gezeigte) Schaltung nötig, die aufgrund der Vektorlänge sowie der Vektorregisterlänge und der Anzahl der bis dahin verarbeiteten Elemente die Notwendigkeit der Wiederholung des Befehlsauslesens entscheidet.
Im Blockschaltbild der Zugriffssteuereinheit 6 in Figur 6 sind drei Gruppen von Adressregistern, nämlich VAR, VARD und VARDD vorgesehen. Aus diesem Grunde dürfen sich nur zwei aufeinanderfolgende Schleifen überlappen und jede weitere Überlappung muß unterdrückt werden. Die dafür nötige Steuerung arbeitet wie folgt:
Die Dekodierunterdrückungsdetektorschaltung 406 erhält die Schleifeninformation vom Schleifenregister 403 und vom Schleifenschlangenregister 408 und erzeugt für die folgenden Fälle Unterdrückungssignale, die die Torschaltungen 400, 404 und sperren und damit das Dekodieren neuer Befehle unterdrücken.
Fall 1: Der Wert des Schleifenregisters 403 ist "01" und der Wert "10" steht im Schleifenschlangenregister 408,
Fall 2: Der Wert des Schleifenregisters 403 ist "10" und im Schleifenschlangenregister 408 steht der Wert "11",
Fall 3: Der Wert des Schleifenregisters 403 ist "11" und im Schleifenschlangenregister 408 steht der Wert "01"
Die Unterdrückungssignale werden natürlich auch in einem Fall erzeugt, wo das Befehlsschlangenregister 407 voll ist. In dieser Weise wird das Überlappen der Verarbeitungsschleifen durch die hinzugefügte Schleifeninformation gesteuert.
Figur 8 zeigt ein Beispiel einer Vektorverarbeitung unter Verwendung des anhand der Figuren 5 bis 7 dargestellten Ausführungsbeispiels: Das Verarbeitungsbeispiel entspricht einer Operation,bei der ein Vektor D(i) mit dem Produkt der Vektoren B(i) und C(i) addiert wird, wobei das Ergebnis den Vektor A(i) ergibt, wie es in Figur 8B dargestellt ist. Die Operation wird in Wirklichkeit zur Verarbeitung in eine Befehlsfolge aufgeteilt, wie es Figur 8C beispielshaft zeigt. Nachfolgend werden die Verarbeitungsschritte anhand der in den Figuren 8A - 8C dargestellten Beispiele näher erläutert.
Mit Befehl 1 wird ein Vektor B aus dem Hauptspeicher 1 in das Vektorregister VRO geladen. Dieser Befehl erfordert folgende Verarbeitungsschritte:
a) Holen der Vektordaten aus dem Hauptspeicher 1 aufgrund einer Segmentbasisadresse, die sich aus der Addition der Inhalte der Register VAR1 und VBR1 ergibt; Und
b) Abspeichern der geholten Daten in das Vektorregister VRO.
Dabei wird angenommen, daß die Adressinformation für den Vekter 1 zuvor in die Register VBR1, VAR1 und VIR1 gespeichert wurde. Ferner wird angenommen, daß die Register VIR dieselben Registernwnniern haben, wie sie den Registern VAR zugeteilt wurden.
Durch die Dekodierung des Befehls 1 erzeugt die Befehlssteuereinheit 3 ein Startsignal, das der Steuerschaltung 211 des Anforderers β über die Signalleitung i15 anliegt. Gleichzeitig liefert die Befehlssteuereinheit 3 dem Wähler 319 über die Signalleitung I 10 VBR1 und den Wählern 320 - 323 über die Signalleitung ι 11 VAR 1 und VIR1. Der Wähler 319 wählt VBR1 und der Wähler 323 wählt VIR1 und legt die gewählten Signale der Adressgeneratorschaltung 212 an. Die Wähler 320 - 322 wählen jeweils VAR1, VARD1 und VARDD1. Da jedoch die Befehlssteuereinheit 3 lediglich von den Leitungen Z 12 - ^ 14 zur Verarbeitung der Schleife 1 die Leitung £12 "Ein" schaltet, erhält die Adressgeneratorschaltung 212 das VAR1-Signal über die Torschaltung 318. Aufgrund dieser Adressinformation erzeugt die Adressgeneratorschaltung 212 die Adressen der jeweiligen Elemente eines Vektors A aufeinanderfolgend für 256 Elemente synchron mit einem Takt und sendet diese der Speichersteuereinheit 2 zusammen mit einem Anforderungssignal, das von der Steuerschaltung 212 ausgeht.
Auf das Startsignal auf der Leitung L 15 hin, steuert die Steuerschaltung 211 den Wähler 257 so, daß das Ausgangss.ignal des VBR1 in das Register 250 gesetzt wird und steuert den Wähler 258 so, daß das Ausgangssignal des VAR1 in das Register 245 und daß das Ausgangssignal des VIR1 in das Register 252 gesetzt wird. Außerdem steuert die Steuerschaltung 211 den Wähler 259, der daraufhin zuerst eine Null einem Übertrags-Sicherstellungsaddierer 254 anlegt. Dieser Addierer 254 und ein Paralleladdierer 255 ermitteln die Adresse des ersten
Elements BU) des Vektors B und setzen dieses in ein Register 256. Danach setzt die Steuerschaltung 211 den Übertragsausgang C und den Summenausgang S des Übertrags-Sicherstellungsaddierer 254 jeweils über die Wähler 257 und 258 in die Register 250 bzw. 251. Dazu steuert die Steuerschaltung 211 den Wähler 259, der den Inkrementwert im Register 252 in den Addierer 254 eingibt. Als Ergebnis wird die Adresse des folgenden Elements B(2) vom Paralleladdierer 255 ermittelt und in das Register 256 gesetzt. Im folgenden werden die Adressen der Elemente B(3), ... B(256) in gleicher Weise aufeinanderfolgend synchron mit dem Takt ermittelt. Die Steuerschaltung 211 erzeugt eine Speicheranforderung und sendet diese der Speichersteuereinheit 2 synchron mit dem Setzen einer Adresse in das Register 256.
Diese Steuerschaltung 211 empfängt von der Speichersteuereinheit 3 die Anzahl der zu verarbeitenden Elemente (in diesem Beispiel 256) gleichzeitig mit dem Empfang des Startsignals und steuert die Anzahl der ausgegebenen Speicheranforderungen aufgrund der empfangenen Elementzahl.
Zur gleichen Zeit, wo die VAR1 und VIR1-Signale der Adressgeneratorschaltung 212 zugesendet werden, wird das VAR1-Signal dem Addierer 315 eingegeben und das VIRI-Signal um 8 Bit mittels des Links-Schieberegisters 314 verschoben (das bedeutet VIR1 * 256) und dann dem Addierer 315 eingegeben, der dann beide Werte addiert. Das Additionsergebnis stellt einen Segmentadressversatz für die Verarbeitungsschleife 2 dar. Dieser Segmetadressversatz wird in das VARDI gesetzt. Gleichzeitig wird ein Setzsignal für das VARD wie folgt erzeugt.
Das Startsignal, das über die Signalleitung L 15 ankommt, wird in das Register 304 über das ODER-Glied 305 gesetzt und gleichzeitig das über die Signalleitung / 12 ankommende "Ein"-Signal in das Register 303. Diese Signale werden dem UND-Glied 308 angelegt, dessen Ausgangssignal als Setzsignal für das VARD1
: : ηβψ Λ*
-ιι-
eine Signalleitung £ 21 übertragen wird. So wie die Registernummer für das VARD,wird die VAR-Nummer , di.c auf 4er Signalleitung t 11 liegt, durch das Re$ ifie? 3φ#, sowie über eine Signalleitung I 24 übertragen. Auf 4ie.se Weise wird der Segmentadressversatz zur Verwendung in der Verarbeitungsschleife 2 in das VARD1 vorher gesetzt.
Sobald ein Zyklus nach dem Start des Befehls 1 dtts Setzen 4«s VAW1 beendet ist, wird der nächste Befehl 2 gestartet.
Durch ien Befehl 3 wird ein Vektor C in das Vektorregister VR1 geladen.
Die B«fehlssteuereinheit 3 erzeugt ein Startsignal t»a4 sendet dieses mittels der Signalleitung £ 16 der Steuerschaltung des Anforierers 1. Gleichzeitig liefert SIex wie der Verarbeitung des Befehls 1 VBR Nr. "2" über die Signalleitung £10, VAR und VIR Nr. "2" über die Leitung tU und ein "EinM~Signal über die Leitung £12.
Gleichzeitig wird, wenn das VBR2, VAR2 und VIR2 der Adressgeneratorschaltung 2 22 übertragen wird, VAR2 und VIE? dem Addierer 315 zugesendet und das Additionsergebnis (VARI + VIR1 * 256) in das Register VARD2 gesetzt.
Beim Start der Befehle 1 und 2 werden die Vektoren B1 und C aufeinanderfolgend in aufsteigender Ordnung der Elemente geholt und jeweils in die Vektorregister VRO und VR1 gesetzt. Nachdem die Daten angekommen sind, wird eine durch den Befehl 3 angewiesene Multiplikation aufeinanderfolgend durch den Multiplizierer 240 ausgeführt. Das Multiplikationsergebnis wird in das Vektorregister VR2 gespeichert.
Durch den Befehl 4 wird ein Vektor D aus der Hauptspeichereinheit 1 in das Vektorregister VR3 geladen. Da jedoch die Nur-Hol-Anforderer 0 und 1 benutzt sind, muß die Operation
-23-
warten, bis einer der Anforderer frei ist. Während der Wartezeit dekodiert die Befehlssteuereinheit 3 den folgenden Befehl. Da Befehl 5 das Vektorregister VR3 in dem das Operationsergebnis des Befehls 4 gespeichert wird, verwendet, kann Befehl 5 nicht vor Befehl 4 gestartet werden. Da außerdem durch Befehl 6 das Operationsergebnis von Befehl 5 in den Hauptspeicher gespeichert werden soll, kann dieser auch nicht gestartet werden. Aus diesem Grunde wird die dekodierte Information der Befehle 4 bis 6 im Befehlsschlangenregister 407 (Figur 7) in eine Warteschlange eingereiht. Darauf wird der Endbefehl (Befehl 7) der in der Befehlsfolge als letzter steht, dekodiert und entschieden, ob die folgende Verarbeitungsschleife nötig ist oder nicht. Da jedoch die Vektorregisterlänge 256 und die Vektorlänge 500 beträgt, ist die Verarbeitungsschleife 2 nötig. Deshalb werden die Befehle 1 und 2 der Schleife 2 ebenfalls dekodiert und in die Befehlswarteschlange eingereiht. Sobald der Anforderer 0 die Verarbeitung des Befehls 1 beendet hat, erzeugt die Steuerschaltung 211 das Ende-Signal und überträgt dieses über die Leitung £ 18 zur Befehlssteuereinheit 3, Die Befehlssteuereinheit 3 beurteilt nach Empfang dieses Endesignals die Möglichkeit Befehl 4 zu starten und überträgt diesen Start dem Anforderer 0.
Das Startverfahren ist dabei dasselbe, wie beim Befehl 1. Die VBR3, VAR1 und VIR1 werden der Adressgeneratorschaltung 212 zugeführt. Gleichzeitig werden VAR1 und VIR1 dem Addierer 315 zugeführt und das Additionsergebnis (das ist VAR1 + VIR1 * 256) in das Register VARD1 gesetzt.
Wenn wegen dem Ablauf des Befehls 4 der Vektor D geholt und in das Vektorregister VR3 gespeichert ist, wird Befehl 5 gestartet, der die Addition des Inhalts der Register VR2 und VR3 durchführt. Inzwischen empfängt die Befehlssteuereinheit 3 das Endsignal über die Leitung Jt 19 von der Steuerschaltung 221 und überträgt den Start des Befehls 1 der Schleife 2 dem Anforderer 1. Die VBR1, VARD1 und VIR1 werden der Adressgene-
ratorschaltung 222 übertragen und gleichzeitig VARD1 + VIR1 * 256 berechnet und in das VARDD1 gesetzt. In diesem Fall schaltet die Signalleitung /13 "Ein", so daß «in Setzsignal dem Register VARDD über die Signalleitung / 22 anliegt.
Als nächstes wird, wenn die ersten Elemente der Register VR2 und VR3 vom Addierer 250 addiert wurden und das Ergebnis in das Register VR4 abgespeichert ist, Befehl 6 gestartet.
Das Startsignal für Befehl 6 wird dem Anforderer 2 über die Signalleitung £ 20 zugeführt. Die VBR4, VAR1 und VIR1 werden der Adressgeneratorschaltung 232 übertragen und gleichzeitig VAR1 + VIR1 * 256 berechnet und in das Register VARDT gesetzt. Dabei geschieht der Start des Befehls 1 der Schleife 2 vor dem Start des Befehls 6 der Schleife 1 . Die Erzeugung der Adresse wird korrekt ausgeführt, obwohl beide Operationen das Register VAR teilen. Es wird insbesondere das Register VARD1 beim Start des Befehls 1 der Schleife 2 verwendet und ein Wert für Schleife 3 in das VARDDI gesetzt (obwohl das vorliegende Verarbeitungsbeispiel mit Schleife 2 endet, wird eine weitere Schleife 3 angenommen). Der Wert des VAR1 wird nicht fortgeschrieben und der später zu startende Befehl 6 der Schleife 1 verwendet das VAR1 , so daß keine Widersprüchlichkeit entsteht. Danach schreitet die Verarbeitung in derselben Weise fort. Befehl 2 der Schleife 2 wird nach dem Ende des Anforderer«
0 und Befehl 4 der Schleife 2 wird nach dem Ende des Anforderen
1 gestartet. Im Falle die Verarbeitungsschleife 3 folgt, geschieht die Adressenwahl und das Setzen des Starts des Befehls 1 der Schleife 3 wie folgt:
Die VBR1, VARDD1 und VIR1 werden gewählt und der Adressgeneratorschaltung 212 übertragen. Gleichzeitig werden VARDD1 und VIRT dem Addierer 315 übertragen und das Additionsergebnis (das ist VARDD1 + VIR1 * 256) in das Register VAR1 gesetzt.
-25-
Zu diesem Zeitpunkt schaltet die Signalleitung £ 14/"Ein" und das Setzsignal wird dem Register VAR über die Signalleitung .1 übertragen.
Figur 9 stellt einen Verarbeitungsfluß für die gleiche Vektorverarbeitung wie sie den Figuren 8A - 8C zugrundelag dar. Im Falle der Figur 9 ist jedoch die Annahme getroffen, daß die Register VARDD in der Zugriffssteuereinheit 6 in Figur 6 fehlen. Wenn man den Verarbeitungsfluß in Figur 9 mit den Diagrammen der Figuren 8A bis 8C vergleicht, ist deutlich zu bemerken, daß die Anforderer 0 und 1 nicht so wirkungsvoll verwendet sind, weshalb der Verarbeitungswirkungsgrad verringert ist. Somit ist die Wirkung des Überlappens der Verarbeitungsschleifen deutlich zu bemerken.
Gemäß der bisherigen Beschreibung wird erfindungsgemäß die für die spätere Schleifenverarbeitung nötige Information während der gerade ablaufenden Verarbeitungsschleife bereitgestellt, so daß die folgende Verarbeitungsschleife sofort nach Ende der gegenwärtigen Verarbeitungsschleife gestartet werden kann. Darüberhinaus wird,sobald bei der gerade ablaufenden Verarbeitungsschleife ein nichtstartfähiger Befehl und in der darauffolgenden Verarbeitungsschleife ein startfähiger Befehl vorhanden sind, die folgende Verarbeitungsschleife gestartet , ohne auf das Ende der gegenwärtigen Verarbeitungsschleife zu warten.

Claims (6)

  1. Patentansprüche
    gekennzeichnet durch
    - einen Speicher (1), der Vektordaten speichert;
    - eine Ar ithmetik-und Logikeinheit (8), die Vektoroperationen mit den aus dem Speicher (1) geholten Vektordaten ausführt;
    - eine Befehlssteuereinheit (3), die wiederholt den Ablauf einer Vektorbefehlsfolge steuert;
    - eine Zähleinrichtung (403), die ermittelt, wie oft jeweilige Befehle der Vektorbefehlsfolge wiederholt werden;
    - mehrere Basisregister (105; 309), die jeweils eine Speicheradresse (eine Basisadresse) eines Kopfelements eines bestimmten Vektors speichern;
    - mehrere Vektoradressregistergruppen (112, 113; 310-312), deren i^-te Gruppe aus Adressregistern gebildet ist, die jeweils einen i-ten Segmentadressenregister-Versatz speichern, der eine Differenz zwischen einer Kopfelementadresse (Segmentbasisadresse) eines i-ten Segmentsvon der Basisadresse des Vektors angibt, wobei die Segmente sich aus der Einteilung eines bestimmten Vektors in Segmente, die jeweils aus Elementen einer vorgegebenen Länge bestehen, ergeben;
    - eine erste Wähleinrichtung (320 - 323), die, sobald ein Befehl der zum Speicher zugreift, ablaufen soll, das-
    680-318228475DE1/AtAl
    jettige Adressregister wählt, das derjenigen Adressregistergruppe zugehört, die der Anzahl j der Wiederholungen, die die Ermittlungseinrichtung für den abzulaufenden Befehl ermittelt, entspricht und innerhalb der Gruppe eine Registernummer k hat, die vom Befehl zugeordnet wird;
    - einer zweiten Wähleinrichtung (319), die eines der mehreren Basisregister (309) wählt, das von dem abzulaufenden Befehl angegeben ist;
    - eine Addiereinrichtung (108, 254), die Inhalte des gewählten Adressregisters und des gewählten Basisregisters addiert und die Segmentbasisadresse des j-ten Segments ausgibt; und
    - eine Adressgeneratoreinrichtung (211, 221, 231; 212, 222, 232), die aufeinanderfolgend Adressen für die dem j-ten Segment zugehörigen Elemente auf der Basis der ausgegebenen Segmentbasisadresse für den Speicherzugriff generiert.
  2. 2. Vektorprozessor nach Anspruch 1,
    gekennzeichnet durch
    eine Recheneinrichtung (110, 111; 314, 315), die für das folgende (j + 1)-te Segment eine Basisadresse abhängig vom Ausgang des Adressregisters, eines vom Befehl angegebenen Adressinkrements und einer Länge eines Vektorregisters (7) bei jedem Wählvorgang der ersten Wähleinrichtung-berechnet und die berechnete Basisadresse in das Adressregister der Gruppe (j + 1) und derselben Registernummer k wie die des gewählten Adressregisters einschreibt.
  3. 3. Vektorprozessor nach Anspruch 1 oder 2, dadurch gekennzeichnet, daß
    • ♦ ft »* ·
    — ο ™*
    die Zähleinrichtung (403) die Anzahl der Wiederholungen mit einem Modulus zählt, der gleich der Gesamtzahl η der Adressregistergruppen ist und
    die Recheneinrichtung das Einschreiben mit der ersten Adressregistergruppe als die (n + 1)-te Adressregistergruppe durchführt, wenn j gleich η ist.
  4. 4. Vektorprozessor nach einem der Ansprüche 1 bis 3, dadurch gekennzeichnet, daß
    die erste Wähleinrichtung die Cj -η χ -f)-te Adressregistergruppe als j-te Adressregistergruppe wählt, wenn die Anzahl j der Wiederholungen die Zahl η überschreitet und
    die Berechnungseinrichtung das Einschreiben mit der Cj + 1 -η χ i)-ten Adressregistergruppe als die (j + 1)-te Adressregistergruppe durchführt, falls Cj + 1) die Zahl η überschreitet, wobei ί eine positive Ganzzahl ist.
  5. 5. Vektorprozessor nach einem der Ansprüche 1 bis 4, dadurch gekennzeichnet,
    daß die Befehlssteuereinheit (3) aufweist:
    - einen Dekodierer (402), der aufeinanderfolgend Vektorbefehle dekodiert,
    - einen Dekodierunterdrückungsdetektor (406), der entscheidet, ob der dekodierte Befehl ablaufen kann oder nicht,
    - ein Befehlsschlangenregister C407), das dekodierte Information nicht ablauffähiger Befehle zusammen mit der Anzahl der Wiederholungen hält und
    - eine Einrichtung (400, 404, 405), die das Dekodieren der Befehle unterdrückt, und
    - eihe Befehlstorschaltung (409), die ermittelt, ob der nächste dekodierte Befehl oder der im Befehlsschlangenregister (407) wartende Befehl sobald der Start des vorangehenden Befehls beendet ist, starten darf und die Startfähigkeit entscheidet, wenn ein von dem zustartenden Befehl benötigtes Betriebsmittel benutzbar und kein Registerkonflikt zwischen dem zu startenden und im Befehlsschlangenregister befindlichen Befehl und dem zuvor dekodierten Befehl vorliegt.
  6. 6. Vektorprozessor nach Anspruch 5, ;
    dadurch gekennzeichnet,
    daß die Unterdrückungseinrichtung (400, 404, 405) das Dekodieren des Befehls unterdrückt, während der Befehl dessen Anzahl von Wiederholungen [*j ~ (n - 1 )1 (j = n) bezogen auf die Anzahl j der Wiederholungen des gerade zu dekodierenden Befehls ist, im Befehlsschlangenregister (407) liegt.
DE19843400723 1983-01-12 1984-01-11 Vektorprozessor Granted DE3400723A1 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP58002221A JPS59128670A (ja) 1983-01-12 1983-01-12 ベクトル処理装置

Publications (2)

Publication Number Publication Date
DE3400723A1 true DE3400723A1 (de) 1984-07-12
DE3400723C2 DE3400723C2 (de) 1989-02-23

Family

ID=11523296

Family Applications (1)

Application Number Title Priority Date Filing Date
DE19843400723 Granted DE3400723A1 (de) 1983-01-12 1984-01-11 Vektorprozessor

Country Status (4)

Country Link
US (1) US4677547A (de)
JP (1) JPS59128670A (de)
DE (1) DE3400723A1 (de)
GB (1) GB2133595B (de)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS61173345A (ja) * 1985-01-29 1986-08-05 Hitachi Ltd 計算機システム
JPH0656594B2 (ja) * 1985-05-07 1994-07-27 株式会社日立製作所 ベクトルプロセツサ
JP2564264B2 (ja) * 1985-05-22 1996-12-18 株式会社日立製作所 ベクトル処理方法及びベクトルプロセッサ
US5226129A (en) * 1986-10-30 1993-07-06 Nec Corporation Program counter and indirect address calculation system which concurrently performs updating of a program counter and generation of an effective address
CA1281426C (en) * 1987-03-04 1991-03-12 Shingo Oota Vector calculation circuit capable of rapidly carrying out vectorcalculation of three input vectors
US5257394A (en) * 1988-10-18 1993-10-26 Japan Atomic Energy Research Institute Logical expression processing pipeline using pushdown stacks for a vector computer
JPH02109160A (ja) * 1988-10-18 1990-04-20 Japan Atom Energy Res Inst ベクトル計算機用演算装置
US5261063A (en) * 1990-12-07 1993-11-09 Ibm Corp. Pipeline apparatus having pipeline mode eecuting instructions from plural programs and parallel mode executing instructions from one of the plural programs
JP2692384B2 (ja) * 1990-12-29 1997-12-17 日本電気株式会社 アドレス生成回路
US7447886B2 (en) * 2002-04-22 2008-11-04 Freescale Semiconductor, Inc. System for expanded instruction encoding and method thereof
US7299338B2 (en) * 2002-12-04 2007-11-20 Agere Systems Inc. Vector indexed memory unit and method
US7610466B2 (en) * 2003-09-05 2009-10-27 Freescale Semiconductor, Inc. Data processing system using independent memory and register operand size specifiers and method thereof
US7315932B2 (en) 2003-09-08 2008-01-01 Moyer William C Data processing system having instruction specifiers for SIMD register operands and method thereof
US7107436B2 (en) * 2003-09-08 2006-09-12 Freescale Semiconductor, Inc. Conditional next portion transferring of data stream to or from register based on subsequent instruction aspect
US7275148B2 (en) * 2003-09-08 2007-09-25 Freescale Semiconductor, Inc. Data processing system using multiple addressing modes for SIMD operations and method thereof
US20060155974A1 (en) * 2005-01-07 2006-07-13 Moyer William C Data processing system having flexible instruction capability and selection mechanism
US20140281369A1 (en) * 2011-12-23 2014-09-18 Ashish Jha Apparatus and method for sliding window data gather
US9424039B2 (en) * 2014-07-09 2016-08-23 Intel Corporation Instruction for implementing vector loops of iterations having an iteration dependent condition
US9910650B2 (en) * 2014-09-25 2018-03-06 Intel Corporation Method and apparatus for approximating detection of overlaps between memory ranges
CN114422394B (zh) * 2022-01-19 2023-08-29 北京鼎兴达信息科技股份有限公司 一种业务地址使用率计算方法、系统以及设备

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE2753062A1 (de) * 1976-12-13 1978-06-15 Rca Corp Einrichtung zur durchfuehrung programmierter befehle

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5148937A (en) * 1974-10-25 1976-04-27 Fujitsu Ltd Kiokusochi niokeru junjoseigyohoshiki
US4128880A (en) * 1976-06-30 1978-12-05 Cray Research, Inc. Computer vector register processing
US4240139A (en) * 1977-09-22 1980-12-16 Tokyo Shibaura Denki Kabushiki Kaisha Address generating system
FR2431732A1 (fr) * 1978-07-19 1980-02-15 Materiel Telephonique Dispositif de conversion d'adresse virtuelle en adresse reelle
JPS6055864B2 (ja) * 1980-07-21 1985-12-06 株式会社日立製作所 ベクトルプロセツサ
US4541046A (en) * 1981-03-25 1985-09-10 Hitachi, Ltd. Data processing system including scalar data processor and vector data processor
US4525778A (en) * 1982-05-25 1985-06-25 Massachusetts Computer Corporation Computer memory control

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE2753062A1 (de) * 1976-12-13 1978-06-15 Rca Corp Einrichtung zur durchfuehrung programmierter befehle

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
US-IBM Technical Disclosure Bulletin, Vol. 13, No. 12, Mai 1971, S. 3805 f. *

Also Published As

Publication number Publication date
GB8400556D0 (en) 1984-02-15
GB2133595B (en) 1986-10-15
US4677547A (en) 1987-06-30
JPS59128670A (ja) 1984-07-24
JPH0512750B2 (de) 1993-02-18
GB2133595A (en) 1984-07-25
DE3400723C2 (de) 1989-02-23

Similar Documents

Publication Publication Date Title
DE3400723A1 (de) Vektorprozessor
DE3882772T2 (de) Vektorprozessor angepasst zum Sortieren von Vektordaten.
DE3401995C2 (de)
DE2934971C2 (de) Nach dem Fließbandprinzip arbeitender Zentralprozessor
DE2354521C2 (de) Verfahren und Einrichtung zum gleichzeitigen Zugriff zu verschiedenen Speichermoduln
DE3424962C2 (de)
DE3752280T2 (de) Mustergenerator
DE69030931T2 (de) Mehrfachsequenzprozessorsystem
EP0048767A1 (de) Prioritätsstufengesteuerte Unterbrechungseinrichtung
DE1956604B2 (de) Datenverarbeitungsanlage
DE2457612A1 (de) Mikroprogrammier-steuersystem
DE2722124A1 (de) Anordnung zum feststellen des prioritaetsranges in einem dv-system
DE3121742A1 (de) Mikroprogrammsteuerverfahren und -einrichtung zu dessen durchfuehrung
DE3043653A1 (de) Datenverarbeitungsanlage
DE2548720C2 (de) Mikroprogramm-Steuerwerk
DE69501581T2 (de) Verfahren zum Erzeugen eines Fehlerkorrekturparameters in Verbindung mit der Verwendung von modularen Operationen nach der Montgomery-Methode
DE3446957A1 (de) Vektor-prozessor
DE3930313A1 (de) Vektorprozessor
DE69031361T2 (de) Taktsignalgeneratorsystem
DE2617485A1 (de) Verfahren und schaltungsanordnung zur abarbeitung von mikrobefehlsfolgen in datenverarbeitungsanlagen
DE3447530A1 (de) Vektorprozessor
DE68903280T2 (de) Vektorschlange in computern mit vektorregister.
DE2745204A1 (de) Mikroprogramm-leitwerk fuer eine datenverarbeitungsanlage
DE2165730A1 (de) Rechensystem
DE69320147T2 (de) Vorrichtung zur Bildkodierung

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