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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
- G06F15/8053—Vector processors
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 k ≦ l 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.
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.
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)
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.
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.
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.
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".
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".
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.
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.
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)] (j ≧n) bezogen auf die Anzahl j der Wiederholungen
des gerade zu dekodierenden Befehls ist, im Befehlsschlangenregister
(407) liegt.
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)
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)
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 |
-
1983
- 1983-01-12 JP JP58002221A patent/JPS59128670A/ja active Granted
-
1984
- 1984-01-10 GB GB08400556A patent/GB2133595B/en not_active Expired
- 1984-01-11 DE DE19843400723 patent/DE3400723A1/de active Granted
- 1984-01-12 US US06/570,244 patent/US4677547A/en not_active Expired - Lifetime
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 |