DE3400723C2 - - Google Patents

Info

Publication number
DE3400723C2
DE3400723C2 DE3400723A DE3400723A DE3400723C2 DE 3400723 C2 DE3400723 C2 DE 3400723C2 DE 3400723 A DE3400723 A DE 3400723A DE 3400723 A DE3400723 A DE 3400723A DE 3400723 C2 DE3400723 C2 DE 3400723C2
Authority
DE
Germany
Prior art keywords
address
vector
register
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.)
Expired
Application number
DE3400723A
Other languages
English (en)
Other versions
DE3400723A1 (de
Inventor
Koichiro Sagamihara Kanagawa Jp Omoda
Shigeo Hachioji Tokio/Tokyo Jp Nagashima
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

Die Erfindung betrifft einen Vektorprozessor gemäß dem Oberbegriff des Anspruchs 1.
Ein solcher Vektorprozessor ist aus US-IBM Technical Disclosure Bulletin, Vol. 13, No. 12, Mai 1971, S. 3804/5 bekannt.
In Fig. 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 Vektorregister VR 0 und VR 1 geladen. Danach werden zur Ausführung einer Vektoroperation die Inhalte des VR 0 und VR 1 geholt und der Arithmetik- und Logikeinheit 8 eingegeben, in dem die zugeordnete Operation ausgeführt wird. Das Verarbeitungsergebnis wird in ein Vektorregister VR 2 gespeichert. Mit einem Speicherbefehl wird der Inhalt des Vektorregisters VR 2 als ein Vektor Z in die Hauptspeichereinheit 1 eingespeichert. Der Buchstabe k soll hier die Anzahl der Elemente eines zu verarbeitenden Vektors (die sogenannte "Vektorlänge") und der Buchstabe l 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 10 bis 10 000 erreichen. Andererseits ist die Vektorregisterlänge l durch die Hardware eines zu verwirklichenden Prozessors begrenzt und reicht gegenwärtig von 64 bis 256.
Aus diesem Grund ist, falls kl ist, die Ausführung eines Vektorbefehls mit einer Vektoroperation möglich, wohingegen im Falle k < l geeignete Maßnahmen getroffen werden müssen. Im folgenden werden zwei Verfahren betrachtet:
Beim ersten Verfahren wird die Verarbeitung softwaremäßig unterteilt 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 l Elemente aufweisen, unterteilt und dann verarbeitet werden. Die l 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 Überhang beschränkt bleibt und daß eine schnelle Verarbeitung möglich ist.
Ein wesentlicher Vorteil 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 der US-Druckschrift mit dem Titel: "PROCESSING VECTORS AS A PLURALITY OF SEGMENTS" 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 Fig. 1 dargestellt sind, ausführt.
Fig. 2A stellt einen allgemeinen bekannten Schaltungsaufbau dar und Fig. 2B den darin ablaufenden allgemeinen Verarbeitungsfluß.
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 Adressenintervalls 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 kontinuierliche aufeinanderfolgenden Elementen, so ist die sogenannte "Adreßkontinuität" gegeben, wohingegen bei den anderen Fällen eine "Adreßdiskontinuität" vorliegt. Mit der Annahme, daß der Inkrementwert in Byte-Adressen angegeben wird, ergibt sich die Adreßkontinuitä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 Inkrementwert 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 Adreßversatz zwischen der Adresse des Kopfelements der Vektordaten zu einer bestimmten Segmentbasisadresse "Segmentadreßversatz" genannt.
Das Hochzählregister 102 hält die Kopfelementnummer während jeder Verarbeitungsschleife.
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 Adreßkontinuitä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 Adreßregister 107 gesetzt. Im zweiten Fall liegt Adreßdiskontinuitä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 Adreßregister 107 gesetzt.
In jedem Fall wird der Inhalt des Adreßregisters 107 mit dem Inhalt des Basisregisters 105 im Addierer 108 addiert, wodurch sich die Segmentbasisadresse ergibt. Ein Inkrementdekoder 100 erfaßt das Vorliegen der Adreßkontinuität oder Adreßdiskontinuitä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 Fig. 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 Multiplizierer 103 bei Adreßdiskontinuitä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 Fig. 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 deshalb Aufgabe der Erfindung, einen Vektorprozessor anzugeben, der die Zeit, die zur Erneuerung der Adreßregisterinhalte, die für den Start einer nächsten Verarbeitungsschleife benötigt werden, verringert.
Die obige Aufgabe wird bei einem Vektorprozessor gemäß dem Oberbegriff des Anspruchs 1 erfindungsgemäß durch die in dessem kennzeichnenden Teil angegebenen Merkmale gelöst.
Die Unteransprüche 2-5 kennzeichnen jeweils eine vorteilhafte Ausbildung davon.
Im Stand der Technik wird die Berechnung neuer Adressen (Segmentbasisadressen), die in die Adreßregister neu zu setzen sind, am Ende der Ausführung einer Befehlsfolge ausgeführt, d. h. auf das Dekodieren eines bestimmten Befehls hin, der das Ende der Befehlsfolge angibt. Da mehrere Adreßregister vorhanden sind und für jedes mehrere arithmetische Operationszyklen nötig sind, ergibt sich eine nicht vernachlässigbare Zeitdauer, die für die Erneuerung sämtlicher Adreßregister anfällt.
Die Erfindung ermöglicht durch die Vielzahl von Adreßregistergruppen, die Segmentbasisadressen auf die Dekodierung jeweiliger Befehle hin, die den Transfer von Vektorelementen zwischen Vektorregistern und Speicher benötigen, zu erneuern und dadurch nach dem Ende der Ausführung der Befehlsfolge einen schnellen Neustart der Befehlsfolge. Dadurch verringert sich die zur Erneuerung sämtlicher Adreßregister nötige Zeit.
Ein Ausführungsbeispiel der 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 Vektorausleseschaltung;
Fig. 2B ein Diagramm, das eine Befehlsablauffolge der in Fig 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 bei verschiedenen Bedingungen erläutern;
Fig. 5 ein Blockschaltbild eines vorgeschlagenen Ausführungsbeispiels;
Fig. 6 ein Detailschaltbild der wesentlichen Teile des in Fig. 5 dargestellten Vektorprozessors;
Fig. 7 ein Detailschaltbild einer in Fig. 5 gezeigten Befehlssteuereinheit;
Fig. 8A ein Zeitdiagramm der im Ausführungsbeispiel gemäß Fig. 5 ausgeführten Operationen;
Fig. 8B ein Beispiel eines FORTRAN-Programms zur Erläuterung des in Fig. 8A gezeigten Zeitdiagramms;
Fig. 8C ein Beispiel einer Vektorbefehlsfolge für den Ablauf des Programms in Fig. 8B; und
Fig. 9 ein Zeitdiagramm der Operationen des in Fig. 5 dargestellten Ausführungsbeispiels für eine von Fig. 8C verschiedene Vektorbefehlsfolge.
Bevor ein Ausführungsbeispiel genauer beschrieben wird, erfolgt eine Erläuterung des der Erfindung zugrundeliegenden Prinzips.
Fig. 3 stellt den Prinzipaufbau der vorliegenden Erfindung dar. Ziffer 111 bezeichnet einen Addierer, 112 und 113 Adreßregister, 114 einen Wähler, und die Ziffer 110 ein Links- Schieberegister.
Die anderen Komponenten sind dieselben wie in Fig. 2A. Jedoch sind in Fig. 3 jeweils mehrere Inkrementregister 101, mehrere Adreßregister 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 Adreßregister 112 auf Null gesetzt. Nachstehend wird das zum Erzeugen einer Adresse verwendete Verfahren anhand eines in Fig. 2B dargestellten Ablaufs beschrieben.
Wenn der Ladebefehl einer Schleife 1 beginnt, wird der Wert des Registers 1 der Adreßregister 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 1 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 eingegeben. Der andere Eingang des Addierers 111 erhält den Wert des Registers 1 der Adreßregister 112 durch den Wähler 114, und das Additionsergebnis, nämlich ein Segmentadreßversatz wird in das Register 1 der Adreßregister 113 gesetzt. Auf diese Weise wird im Register 1 der Adreßregister 113 vorgezogen der Segmentadreßversatz 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 Segmentadreßversatz zum Ablauf des Ladebefehls bereits im Register 1 der Adreßregister 113 zur Verfügung steht. Der Segmentadreßversatz 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 Adreßregister 113 genauso wie bei der Verarbeitung der Schleife 1 hinzuaddiert und das Additionsergebnis in das Register 1 der Adreßregister 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 Adreßregister 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 Adreßregister 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 Adreßregister 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 Adreßregister 113 gesetzt wird, ist dies nicht unbequem.
Die in den zwei Gruppen 112 und 113 angeordneten Adreßregister sind für die Zuordnung der identischen Adreßregisternummern für verschiedene Befehle nötig. Falls nämlich keine identische Adreßregisternummer zugeteilt wird, genügt eine Gruppe.
In den Fig. 4A und 4B ist der Verarbeitungsfluß für Fälle dargestellt, wo sich die Befehlsstartzeitpunkte der Verarbeitungsschleifen überlappen.
Die Fig. 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. Fig. 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 Adreßregister zwischen den verschiedenen Befehlen aufzuteilen, genügen die in Fig. 3 dargestellten zwei Gruppen der Adreßregister 112 und 113 nicht und deshalb werden mehr Register benötigt. In Fig. 4A werden drei Gruppen und in Fig. 4B vier Registergruppen benötigt.
Im allgemeinen sind für die Überlappung von n aufeinanderfolgenden Verarbeitungsschleifen n +1 Adreßregistergruppen 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.
Fig. 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 Adreßregistern 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); eine Vektorregistereinheit 7 besteht aus 8 Vektorregistern VR 0-7 (Vektorregisterlänge: 256); und eine Arithmetik- und Logikeinheit 8 besteht aus einem Multiplizierer 240 und einem Addierer 250.
Fig. 6 zeigt ein Schaltbild eines in der Zugriffssteuereinheit 6 enthaltenen Adreßgeneratorteils. Steuerschaltungen 211, 221 und 231 steuern Anfang und Ende von Operationen und bilden jeweils einen Teil der Anforderer 0, 1 und 2; Adreßgeneratorschaltungen 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 Vektoradreßregister 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 "VBR 2" benannt.
Die Adresse eines Vektors X(i) wird wie folgt erzeugt:
X (1)  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 Adreßerzeugung wird von den Adreßgeneratorschaltungen 212, 222 und 232 durchgeführt.
Die in Fig. 6 dargestellten VAR 310 und VARD 311 entsprechen den Adreßregistern 112 und 113 in Fig. 3. Die VARDD 312 sind zusätzlich vorgesehen, um die Überlappung zwischen zwei Verarbeitungsschleifen zu ermöglichen.
Fig. 7 stellt ein Blockschaltbild der Befehlssteuereinheit 3 dar. Diese enthält: Torschaltungen 400, 404 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 409 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 Befehlsdekodierschaltung 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 409 gestarteten Befehl gehören, werden von der Betriebsmittelverwaltungsschaltung 410 im "Gebrauchszustand" gehalten. Sobald die Betriebsmittel Ende-Signal (beispielsweise l 18 -l 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 Adreßregistern VAR, VARD und VARDD. Sobald der Lade- oder Speicherbefehl abläuft, werden aufgrund dieses Werts die entsprechenden Adreßregister ausgewählt. Die Schleifeninformation des Schleifenregisters 403 wird entweder direkt synchron mit der von der Befehlsdekodierschaltung 402 ausgebenen 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 Schleifeninformation, 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 "Ein"-geschaltet.
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 l 15 - l 17. Wenn der Anforderer 0, 1 oder 2 benutzt werden soll, erzeugt die Schaltung 409 ein Startsignal jeweils auf den Leitungen l 15, l 16 oder l 17. Dazu liefert die Befehlstorschaltung 409 die Basisregisternummer und die Adreßregisternummer der dekodierten Information des ausgewählten Befehls jeweils auf den Leitungen l 10 und l 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 Fig. 6 sind drei Gruppen von Adreßregistern, nämlich VAR, VARD und VARRD 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 405 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.
Fig. 8 zeigt ein Beispiel einer Vektorverarbeitung unter Verwendung des anhand der Fig. 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 Fig. 8B dargestellt ist. Die Operation wird in Wirklichkeit zur Verarbeitung in eine Befehlsfolge aufgeteilt, wie es Fig. 8C beispielhaft zeigt. Nachfolgend werden die Verarbeitungsschritte anhand der in den Fig. 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 VAR 1 und VBR 1 ergibt; und
  • b) Abspeichern der geholten Daten in das Vektorregister VR 0.
Dabei wird angenommen, daß die Adreßinformation für den Vektor B zuvor in die Register VBR 1, VAR 1 und VIR 1 gespeichert wurde. Ferner wird angenommen, daß die Register VIR dieselben Registernummern 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 0 über die Signalleitung l 15 anliegt. Gleichzeitig liefert die Befehlssteuereinheit 3 dem Wähler 319 über die Signalleitung l 10 VBR 1 und den Wählern 320-323 über die Signalleitung l 11 VAR 1 und VIR 1. Der Wähler 319 wählt VBR 1 und der Wähler 323 wählt VIR 1 und legt die gewählten Signale der Adreßgeneratorschaltung 212 an. Die Wähler 320-322 wählen jeweils VAR 1, VARD 1 und VARDD 1. Da jedoch die Befehlssteuereinheit 3 lediglich von den Leitungen l 12 - l 14 zur Verarbeitung der Schleife 1 die Leitung l 12 "Ein" schaltet, erhält die Adreßgeneratorschaltung 212 das VAR 1-Signal über die Torschaltung 318. Aufgrund dieser Adreßinformation erzeugt die Adreßgeneratorschaltung 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 Ausgangssignal des VBR 1 in das Register 250 gesetzt wird und steuert den Wähler 258 so, daß das Ausgangssignal des VAR 1 in das Register 245 und daß das Ausgangssignal des VIR 1 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 B (1) 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 VAR 1 und VIR 1-Signale der Adreßgeneratorschaltung 212 zugesendet werden, wird das VAR 1-Signal dem Addierer 315 eingegeben und das VIR 1-Signal um 8 Bit mittels des Links-Schieberegisters 314 verschoben (das bedeutet VIR 1 · 256) und dann dem Addierer 315 eingegeben, der dann beide Werte addiert. Das Additionsergebnis stellt einen Segmentadreßversatz für die Verarbeitungsschleife 2 dar. Dieser Segmentadreßversatz wird in das VARD 1 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 l 12 ankommende "Ein"-Signal in das Register 303. Diese Signale werden dem UND-Glied 308 angelegt, dessen Ausgangssignal als Setzsignal für das VARD 1 über eine Signalleitung l 21 übertragen wird. So wie die Registernummer für das VARD, wird die VAR-Nummer, die auf der Signalleitung l 11 liegt, durch das Register 300, sowie über eine Signalleitung l 24 übertragen. Auf diese Weise wird der Segmentadreßversatz zur Verwendung in der Verarbeitungsschleife 2 in das VARD 1 vorher gesetzt.
Sobald ein Zyklus nach dem Start des Befehls 1 das Setzen des VARD 1 beendet ist, wird der nächste Befehl 2 gestartet.
Durch den Befehl 3 wird ein Vektor C in das Vektorregister VR 1 geladen.
Die Befehlssteuereinheit 3 erzeugt ein Startsignal und sendet dieses mittels der Signalleitung l 16 der Steuerschaltung 221 des Anforderers 1. Gleichzeitig liefert sie, wie der Verarbeitung des Befehls 1 VBR Nr. "2" über die Signalleitung l 10, VAR und VIR Nr. "2" über die Leitung l 11 und ein "Ein"-Signal über die Leitung l 12.
Gleichzeitig wird, wenn das VBR 2, VAR 2 der Adreßgeneratorschaltung 222 übertragen wird, VAR 2 und VIR 2 dem Addierer 315 zugesendet und das Additionsergebnis (VAR 1 + VIR 1 · 256) in das Register VARD 2 gesetzt.
Beim Start der Befehle 1 und 2 werden die Vektoren B und C aufeinanderfolgend in aufsteigender Ordnung der Elemente geholt und jeweils in die Vektorregister VR 0 und VR 1 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 VR 2 gespeichert.
Durch den Befehl 4 wird ein Vektor D aus der Hauptspeichereinheit 1 in das Vektorregister VR 3 geladen. Da jedoch die Nur-Hol-Anforderer 0 und 1 benutzt sind, muß die Operation warten, bis einer der Anforderer frei ist. Während der Wartezeit dekodiert die Befehlssteuereinheit 3 den folgenden Befehl. Da Befehl 5 das Vektorregister VR 3 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 (Fig. 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 l 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 VBR 3, VAR 1 und VIR 1 werden der Adreßgeneratorschaltung 212 zugeführt. Gleichzeitig werden VAR 1 und VIR 1 dem Addierer 315 zugeführt und das Additionsergebnis (das ist VAR 1 + VIR 1 · 256) in das Register VARD 1 gesetzt.
Wenn wegen dem Ablauf des Befehls 4 der Vektor D geholt und in das Vektorregister VR 3 gespeichert ist, wird Befehl 5 gestartet, der die Addition des Inhalts der Register VR 2 und VR 3 durchführt. Inzwischen empfängt die Befehlssteuereinheit 3 das Endsignal über die Leitung l 19 von der Steuerschaltung 221 und überträgt den Start des Befehls 1 der Schleife 2 dem Anforderer 1. Die VBR 1, VARD 1 und VIR 1 werden der Adreßgeneratorschaltung 222 übertragen und gleichzeitig VARD 1 + VIR 1 · 256 berechnet und in das VARDD 1 gesetzt. In diesem Fall schaltet die Signalleitung l 13 "Ein", so daß ein Setzsignal dem Register VARDD über die Signalleitung l 22 anliegt.
Als nächstes wird, wenn die ersten Elemente der Register VR 2 und VR 3 vom Addierer 250 addiert wurden und das Ergebnis in das Register VR 4 abgespeichert ist, Befehl 6 gestartet.
Das Startsignal für Befehl 6 wird dem Anforderer 2 über die Signalleitung l 20 zugeführt. Die VBR 4, VAR 1 und VIR 1 werden der Adreßgeneratorschaltung 232 übertragen und gleichzeitig VAR 1 + VIR 1 · 256 berechnet und in das Register VARD 1 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 VARD 1 beim Start des Befehls 1 der Schleife 2 verwendet und ein Wert für Schleife 3 in das VARDD 1 gesetzt (obwohl das vorliegende Verarbeitungsbeispiel mit Schleife 2 endet, wird eine weitere Schleife 3 angenommen). Der Wert des VAR 1 wird nicht fortgeschrieben und der später zu startende Befehl 6 der Schleife 1 verwendet das VAR 1, so daß keine Widersprüchlichkeit entsteht. Danach schreitet die Verarbeitung in derselben Weise fort. Befehl 2 der Schleife 2 wird nach dem Ende des Anforderers 0 und Befehl 4 der Schleife 2 wird nach dem Ende des Anforderers 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 VBR 1, VARDD 1 und VIR 1 werden gewählt und der Adreßgeneratorschaltung 212 übertragen. Gleichzeitig werden VARDD 1 und VIR 1 dem Addierer 315 übertragen und das Additionsergebnis (das ist VARDD 1 + VIR 1 · 256) in das Register VAR 1 gesetzt. Zu diesem Zeitpunkt schaltet die Signalleitung l 14 "Ein" und das Setzsignal wird dem Register VAR über die Signalleitung l 23 übertragen.
Fig. 9 stellt einen Verarbeitungsfluß für die gleiche Vektorverarbeitung wie sie den Fig. 8A-8C zugrundelag dar. Im Falle der Fig. 9 ist jedoch die Annahme getroffen, daß die Register VARDD in der Zugriffssteuereinheit 6 in Fig. 6 fehlen. Wenn man den Verarbeitungsfluß in Fig. 9 mit den Diagrammen der Fig. 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.

Claims (6)

1. Vektorprozessor, der eine aus Vektorelementen eines Vektors bestehende Vektorelementengruppe durch Einteilung der Vektorelementengruppe in Segmente verarbeitet, die jeweils eine vorbestimmte Anzahl Vektorelemente aufweisen, mit
  • - einem Speicher, der Vektoren und Befehle speichert;
  • - mehreren mit dem Speicher verbundenen Vektorregistern, die jeweils die vorbestimmte Anzahl Vektorelemente halten;
  • - Arithmetikeinheiten, die mit den Vektorregistern verbunden sind und Operationen mit aus den Vektorregistern ausgelesenen Vektorelementen ausführen und als Operationsergebnisse anfallende Vektorelemente wieder den Vektorregistern zuführen;
  • - einer Befehlssteuereinheit (3), die die Befehlsausführung steuert und dazu eine Einrichtung aufweist, die dieselbe Befehlsfolge wiederholt holt und dekodiert, so daß die Befehlsfolge wiederholt ausgeführt wird;
  • - einem Basisregister (309), das eine Basisadresse eines Vektors hält, die die Speicheradresse des ersten Vektorelements eines jeweiligen Vektors darstellt;
  • - einem Adreßregister (310), das eine Segmentbasisadresse hält, die eine Adressendifferenz zwischen der Basisadresse des jeweiligen Vektors und der Adresse eines ersten Elements eines Segments des Vektors darstellt;
  • - einem Inkrementregister (313), das ein Adresseninkrement hält, das eine Adressendifferenz zwischen zwei benachbarten Vektorelementen einer jeweiligen Vektorelementengruppe darstellt;
  • - einem Addierer (315), der die vom Basisregister gehaltene Basisadresse und die vom Adreßregister gehaltene Segmentbasisadresse addiert;
  • - einer Anforderungseinheit (211, 212; 221, 222; 231, 232), die Vektorelemente zwischen dem Speicher und den Vektorregistern überträgt, und eine Adreßgeneratoreinrichtung (212; 222; 235) zur Erzeugung von Adressen der Vektorregister und zur Erzeugung von Adressen der Vektorelemente aufweist, die diese Adressen aufgrund der vom Addierer erzeugten Werte und des vom Inkrementregister gehaltenen Adresseninkrements generiert; und
  • - einer Recheneinrichtung (110, 111; 314, 315), die die vom Adreßregister gehaltenen Segmentbasisadresse durch einen Wert erneuert, der gleich dem Produkt aus dem vom Inkrementregister gehaltenen Adresseninkrement mit der vorbestimmten Anzahl ist, so daß die erneuerte Basisadresse als Segmentbasisadresse des folgenden Segments dient;
gekennzeichnet durch
  • - eine Zähleinrichtung (403), die eine Anzahl j ermittelt, die angibt, wie oft jeweilige Befehle der Vektorbefehlsfolge im Falle deren wiederholter Dekodierung wiederholt werden;
  • - eine Vielzahl von Basisregistern (105; 309), die jeweils eine Basisadresse eines Vektors halten;
  • - eine Vielzahl von Adreßregistergruppen (112, 113; 310-312), die jeweils gleiche Anzahlen von Adreßregistern aufweisen, wobei die Adreßregister jeweils eine Segmentbasisadresse eines Vektorsegments halten;
  • - mehrere Inkrementregister (101), die Adreßinkremente einer Vektorelementgruppe halten;
  • - eine erste Wähleinrichtung (319), die wahlweise Basisadressen von einem durch einen dekodierten Befehl angegebenen Basisregister dem Addierer zuführt, sofern dieser Befehl einen Transfer von Vektorelementen aus oder zu dem Speicher und aus oder zu den Vektorregistern erfordert;
  • - eine zweite Wähleinrichtung (320-322), die wahlweise eine Segmentbasisadresse aus einem durch einen dekodierten Befehl angegebenen Adreßregister innerhalb der j-ten Adreßregistergruppe dem Addierer und der Recheneinrichtung zuführt, wobei diese j-te Adreßregistergruppe durch die von der Zähleinrichtung ermittelte Anzahl j angegeben ist;
  • - eine dritte Wähleinrichtung (323), die wahlweise der Anforderungseinheit und der Recheneinrichtung Adreßinkremente aus einem von dem dekodierten Befehl angegebenen Inkrementregister (313) zuführt; und
  • - eine vierte Wähleinrichtung (301-305, 306-308), die das Ausgangssignal der Recheneinrichtung wahlweise in ein von dem dekodierten Befehl angegebenes Adreßregister, das zu einer Adreßregistergruppe gehört, die der j +1-ten Wiederholung des dekodierten Befehls zugeordnet ist, als Segmentbasisadresse für das j +1-te Segment der Vektorelementengruppe setzt.
2. Vektorprozessor nach Anspruch 1, dadurch gekennzeichnet, daß die Zähleinrichtung (403) die Anzahl der Wiederholungen mit einem Modulus zählt, der gleich der Gesamtzahl n der Adreßregistergruppen ist
und die vierte Wähleinrichtung das Einschreiben mit der ersten Adreßregistergruppe als die (n +1)te Adreßregistergruppe durchführt, wenn j gleich n ist.
3. Vektorprozessor nach Anspruch 1, dadurch gekennzeichnet, daß n Adreßregistergruppen vorgesehen sind, die erste Wähleinrichtung die (j-nl)te Adreßregistergruppe als die j-te Adreßregistergruppe wählt, wenn die Anzahl j der Wiederholungen die Zahl n überschreitet, und die vierte Wähleinrichtung das Einschreiben mit der (j +1-nl)ten Adreßregistergruppe durchführt, falls (j +1) die Zahl n überschreitet, wobei l eine positive Ganzzahl ist.
4. Vektorprozessor nach einem der Ansprüche 1-3, 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 (407), das dekodierte Information nicht ablauffähiger Befehle zusammen mit der Anzahl der Wiederholungen hält und
  • - eine Unterdrückungseinrichtung (400, 404, 405), die das Dekodieren der Befehle unterdrückt, und
  • - eine 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 über die Startfähigkeit entscheidet, abhängig davon, ob ein von dem zu startenden Befehl benötigtes Betriebsmittel benutzbar ist und kein Registerkonflikt zwischen dem zu startenden, im Befehlsschlangenregister befindlichen Befehl und dem zuvor dekodierten Befehl vorliegt.
5. Vektorprozessor nach Anspruch 4, 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)] (jn) 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 DE3400723A1 (de) 1984-07-12
DE3400723C2 true 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
DE3854608T2 (de) * 1987-03-04 1996-06-05 Nec Corp Vektorrechnerschaltung, welche schnell eine Berechnung auf drei Eingangsvektoren ausführen kann.
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
US7275148B2 (en) * 2003-09-08 2007-09-25 Freescale Semiconductor, Inc. Data processing system using multiple addressing modes for SIMD operations 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
US7315932B2 (en) 2003-09-08 2008-01-01 Moyer William C Data processing system having instruction specifiers for SIMD register operands and method thereof
US20060155974A1 (en) * 2005-01-07 2006-07-13 Moyer William C Data processing system having flexible instruction capability and selection mechanism
WO2013095605A1 (en) * 2011-12-23 2013-06-27 Intel Corporation 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 北京鼎兴达信息科技股份有限公司 一种业务地址使用率计算方法、系统以及设备

Family Cites Families (8)

* 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
US4097920A (en) * 1976-12-13 1978-06-27 Rca Corporation Hardware control for repeating program loops in electronic computers
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

Also Published As

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

Similar Documents

Publication Publication Date Title
DE3400723C2 (de)
DE3248215C2 (de)
EP0048767B1 (de) Prioritätsstufengesteuerte Unterbrechungseinrichtung
DE3401995C2 (de)
DE4302495C2 (de) Einrichtung und Verfahren zum Bestimmen der Länge eines Befehls in einem sequentiellen Befehlsstrom
DE3300261C2 (de)
DE3300260C2 (de)
DE3210816C2 (de)
DE3424962C2 (de)
DE2714805C2 (de)
DE3300263C2 (de)
DE4305442C2 (de) Verfahren und Vorrichtung zum Erzeugen eines Testvektors
DE2753062C2 (de) Einrichtung zur wiederholten Durchführung von Programmschleifen
DE2354521C2 (de) Verfahren und Einrichtung zum gleichzeitigen Zugriff zu verschiedenen Speichermoduln
DE2712224A1 (de) Datenverarbeitungsanlage
DE2311220A1 (de) Digital-informations-verarbeitungsvorrichtung zur zeichenerkennung
DE2715073A1 (de) Mikroprogrammierte rechner-steuervorrichtung
DE2758830A1 (de) Rechenvorrichtung
DE2722124A1 (de) Anordnung zum feststellen des prioritaetsranges in einem dv-system
DE3043653A1 (de) Datenverarbeitungsanlage
WO1995010803A1 (de) Prozessor für zeichenketten variabler länge
DE3507584C2 (de)
DE2911909A1 (de) Verfahren und geraet zur digitalen datenverarbeitung, insbesondere von digitalen audiosignalen
DE2706877C2 (de) Mikroprogramm-Steuereinrichtung
DE3307194C2 (de)

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