-
Die vorliegende Erfindung betrifft eine
Datenübertragungssteuerung in einem Datenverarbeitungssystem und
insbesondere eine Datenübertragungssteuerung zum Übertragen
von Vektordaten aus einem Hauptspeicher zu einem
Vektordatenprozessor.
-
Eine starke Nachfrage nach einer
Hochgeschwindigkeitszuführung einer riesigen Datenmenge ist entstanden, um
Hochgeschwindigkeitsvektorrechnungen in einem für
wissenschaftliche Berechnungen verwendeten
Hochgeschwindigkeitsvektorcomputer zu erlauben. Um eine
Hochgeschwindigkeitszuführung einer riesigen Datenmenge zu ermöglichen, offenbart
beispielsweise die US-A-4 128 880 einen Vektorprozessor. In
diesem Vektorprozessor ist die Anzahl der unabhängig
arbeitenden Bänke erhöht, um in jedem Taktzyklus Elemente der
Vektordaten auszulesen, und die ausgelesenen Elemente werden
Vektorregistern zugef ührt. Wenn das erste Element dem
Vektorregister zugeführt ist, wird eine Vektorrechnung gestartet.
-
Da bei diesem herkömmlichen Vektorprozessor in jedem
Taktzyklus nur ein Element der Vektordaten dem Vektorregister
zugeführt wird, kann bei Ausführung einer Rechnung zwischen
zwei Vektordaten die Vektorrechnung nicht gestartet werden,
bevor die Übertragung der zweiten Vektordaten begonnen hat. Um
dieses Problem zu lösen, gibt es ein herkömmliches Verfahren
zum gleichzeitigen Auslesen von Elementen zweier Vektordaten
aus einem Speicher. In diesem Fall muß eine Verwaltung der
Banktätigkeit der zwei verschiedenen Vektordaten ausgeführt
werden, um die Steuerung zu vervollständigen.
-
Es ist eine Aufgabe der vorliegenden Erfindung, eine
Datenübertragungssteuerung bereitzustellen, die in der Lage
ist, gemäß einer einfachen Steuerung Vektordaten mit hoher
Geschwindigkeit zu Vektorregistern zu übertragen.
-
Es ist eine weitere Aufgabe der vorliegenden Erfindung,
eine Datenübertragungssteuerung bereitzustellen, die in der
Lage ist, einen Vektorprozessor zu einem früheren Zeitpunkt
mit den Vektorrechnungen beginnen zu lassen, da die
Übertragung der zweiten Vektordaten begonnen werden kann, ohne auf
das Ende der Übertragung der ersten Vektordaten zu warten.
-
Diese Aufgaben werden mit den Merkmalen des Anspruchs
gelöst.
-
Fig. 1 ist ein Blockschaltbild, das eine Anordnung einer
Datenübertragungssteuerung gemäß einer Ausführungsform der
vorliegenden Erfindung zeigt;
-
Fig. 2 ist ein Speicherabbild, das die Blockzuordnung
eines in Fig. 1 gezeigten Datenpuffers 3 zeigt;
-
Fig. 3 ist ein Blockschaltbild, das eine detaillierte
Anordnung eines in Fig. 1 gezeigten
Puffer-Steuerungsschaltkreises 11 zeigt;
-
Fig. 4 ist eine Wahrheitstabelle, die die Logik eines in
Fig. 3 gezeigten Lesestartfestlegungsschaltkreises 209 zeigt;
und
-
Fig. 5 ist ein Zeitablaufdiagramm, das eine Operation der
Datenübertragungssteuerung zeigt.
-
Die vorliegende Erfindung wird detailliert mit Bezug auf
die beiliegenden Zeichnungen beschrieben.
-
Fig. 1 zeigt eine Datenübertragungssteuerung gemäß einer
Ausführungsform der vorliegenden Erfindung. Nach Fig. 1 kann
ein Hauptspeicher 1 in jedem Taktzyklus 16-Byte-Daten auslesen
und die ausgelesenen Daten werden über einen Ausrichtungs-
Schaltkreis 2 zu einem Datenpuffer 3 geschickt. Wie in Fig. 2
gezeigt, werden in dem Datenpuffer 3 zwei Datensätze, von
denen jeder aus 16 Bytes x 32 Wörtern besteht, jeweils in zwei
Blöcke gestellt. In jeden Block wird ein Vektordatensatz
gestellt. Zwei 8-Byte-Elemente entsprechen einem Wort des
Datenpuffers 3.
-
Eine Schreibadresse für den Datenpuffer 3 wird über eine
Leitung 114 zu einem Schreibadreßzähler 12 geschickt. Einer
der Werte, die aus den Werten der Leseadreßzähler 13 und 14
durch Weglassen der LSBs (Least Significant Bits,
niederwertigsten Bits) erhalten werden, wird von einem Schalt-
Schaltkreis 15 ausgewählt'und der ausgewählte Wert wird als
Leseadresse über eine Leitung 122 geschickt.
-
Von den aus dem Datenpuffer 3 ausgelesenen Daten werden
die oberen 8-Byte-Daten über eine Leitung 103 zu den Schalt-
Schaltkreisen 5 und 6 geschickt. Die unteren 8-Byte-Daten
werden durch ein Register 4 um einen Taktzyklus verzögert, und
die verzögerten Daten werden über eine Leitung 105 zu den
Schalt-Schaltkreisen 5 und 6 geschickt. Die
Schalt-Schaltkreise 5 und 6 wählen Elemente aus den oberen und unteren 8-
Byte-Daten, die dem gleichen Wort des Datenpuffers 3
entsprechen, und die ausgewählten Elemente werden zu einer
Vektorregistergruppe 7 geschickt. Diese Auswahl wird durch die
LSBs der Ausgänge aus den Leseadreßzählern 13 und 14
ausgeführt. Die über die Leitung 105 zugeführten unteren 8-
Byte-Elemente werden ausgewählt, wenn die LSBs beide auf
logisch "1" gesetzt sind.
-
Die Vektorregistergruppe 7 weist mindestens zwei
Vektorregister auf, wobei jedes zum Speichern von Vektordaten mit
mindestens einem Element ist. Die Anzahl der Vektorregister
ist in der vorliegenden Erfindung nicht wichtig, und eine
Beschreibung die Anzahl der Vektorregister betreffend wird
weggelassen.
-
Der Schreibadreßzähler 12 ist ein 6-Bit-Zähler zum
Speichern einer Schreibadresse für den Datenpuffer 3. Eine
Anfangsadresse 112 wird als Antwort auf ein aus einem Puffer-
Steuerungsschaltkreis 11 zugeführtes
Schreibstartfestlegungssignal 113 gesetzt und wird in jedem Taktzyklus um Eins
erhöht.
-
Die Leseadreßzähler 13 und 14 sind 7-Bit-Zähler zum
Speichern von Adressen zum Auslesen von Vektordaten aus dem
Datenpuffer 3, um die ausgelesenen Vektordaten über die
Leitungen 106 und 107 zu der Vektorregistergruppe 7 zu
schicken. Das MSB (Most Significant Bit, das hochwertigste
Bit) des Adreßzählers 12 wird in den MSBs der Zähler 13 und 14
gemäß den aus dem Puffer-Steuerungsschaltkreis 11 zugeführten
Lesestartfestlegungssignalen 116 und 118 gesetzt. Die
restlichen Bits der Zähler 13 und 14 werden auf Null gelöscht.
Einer der 6-Bit-Datensätze ausschließlich der LSBs aus den
Leseadreßzählern 13 und 14 wird von dem Schalt-Schaltkreis 15
ausgewählt, und die ausgewählten Daten werden zu dem
Datenpuffer 3 geschickt.
-
Der Schalt-Schaltkreis 15 wird durch das LSB des
Leseadreßzählers 13 ausgewählt. Wenn der Inhalt des
Leseadreßzählers 13 geradzahlig ist, wird von dem Schalt-Schaltkreis 15
der Leseadreßzähler 13 ausgewählt. Wenn jedoch der Inhalt des
Leseadreßzählers 13 ungeradzahlig ist, wird von dem Schalt-
Schaltkreis 15 der Leseadreßzähler 14 ausgewählt. Die LSBs der
Adreßzähler 13 und 14 werden jeweils als Auswahlsignale zu den
Schalt-Schaltkreisen 5 und 6 geschickt.
-
Der Puffer-Steuerungsschaltkreis 11 ist ein Schaltkreis
zum Steuern des Lese/Schreib-Zugriffs des Datenpuffers 3 und
sein detailliertes Blockschaltbild ist in Fig. 3 gezeigt.
-
Wenn nach Fig. 3 eine Anforderungsinformation bestehend
aus einem Schreibfestlegungssignal über eine Leitung 111-1 zu
dem Puffer-Steuerungsschaltkreis 11 geschickt wird und die
Anforderungsinformation bestehend aus einem
Schreibelementzählwert über eine Leitung 111-2 zu dem
Puffer-Steuerungsschaltkreis 11 geschickt wird, werden ein Flipflop 201 und ein
Register 202 gesetzt. Beim Setzen des Flipflops 201 wird ein
Wert eines Flipflops 204, der eine Blockadresse für den
Datenpuffer 3 hält, invertiert. Blöcke des Datenpuffers, die
sich in den Einheiten der Schreibzyklen unterscheiden, werden
zugeordnet. Die von dem Flipflop 204 gehaltene Adresse wird
von dem Flipflop 201 in den Schreibadreßzähler 12 gestellt.
Außerdem wird der Inhalt des Flipflops 201 über eine Leitung
113 zu einem Lesestartfestlegungsschaltkreis 209 geschickt.
Dieser Inhalt wird von einem Flipflop 203 um einen Taktzyklus
verzögert, und die verzögerten Daten werden über eine Leitung
302 zu einem Lesestartfestlegungsschaltkreis 209 geschickt.
-
Fig. 4 zeigt die Wahrheitstabelle, die die Logik des
Lesestartfestlegungschaltkreises 209 zeigt.
-
Die Flipflops 205 und 207 sind Anzeiger, die anzeigen,
daß von den Leseadreßzählern 13 und 14 auf den Datenpuffer 3
zugegriffen wurde. Die Flipflops 205 und 207 werden durch die
Lesestartfestlegungssignale 307 und 308 gesetzt und werden bei
der Detektion der Nullwerte der Leserestelemente-Zähler 206
und 208 zurückgesetzt.
-
Der von den Lesestartfestlegungssignalen 307 und 308 im
Register 202 gehaltene Elementzählwert wird als Anfangswert in
die Leserestelemente-Zähler 206 und 208 sowie in die Flipflops
205 und 207 gestellt. Der Zählwert jedes Zählers 206 und 208
wird in jedem Taktzyklus um Eins verringert.
-
Die LSBs der Leseadreßzähler 13 und 14 werden über die
Leitungen 119 und 120 zu dem Lesestartfestlegungsschaltkreis
209 geschickt, um den Lesestart-Zeitpunkt einzustellen.
-
Das Lesestartfestlegungssignal wird von den Flipflops 210
und 211 um einen Taktzyklus verzögert. Die verzögerten Signale
werden über die Leitungen 116 bzw. 118 ausgegeben, um
Anfangswerte in den Leseadreßzählern 13 bzw. 14 zu setzen.
-
In dieser Ausführungsform werden nur 16-Byte-Daten in
jedem Taktzyklus in den Datenpuffer 3 geschrieben. Dieser
Schreibzugriff begrenzt nicht den Anwendungsbereich der
vorliegenden Erfindung. Wenn eine in
JP-A- 59-205645 offenbarte Technik verwendet
wird, ist es für Fachleute offensichtlich, daß die
Lesestartfestlegung ungeachtet des Schreibzugriffs auf den
Datenpuffer 3 ausgeführt werden kann.
-
Mit der obenstehenden Anordnung wird eine Operation
dieser Ausführungsform mit Bezug auf ein Zeitablaufdiagramm
der Fig. 5 beschrieben.
-
Wenn ein Schreibfestlegungssignal und ein
Schreibelementzählwert über die Leitung 111 einen Taktzyklus vor der Zeit T0
gesendet werden, wird das Flipflop 201 gesetzt, und der
Schreibelementzählwert wird in das Register 202 gestellt. In
dieser Ausführungsform wird die Anzahl der Elemente als 10
angesetzt.
-
Wenn das Flipflop 201 gesetzt ist, wird zur Zeit T0 die
Leitung 113 auflogisch "1" gesetzt. Eine Blockadresse von
logisch "0" und eine über eine Leitung 112 zugeführte
Intrablockadresse von logisch "0" werden in den
Schreibadreßzähler 12 gestellt. Das heißt, der Zählwert des
Schreibadreßzählers ist zur Zeit T1 auf "0" gesetzt worden. Der
Schreibzugriff auf acht Elemente wird von der Zeit T1 an für
16 Bytes in jedem Taktzyklus ausgeführt, d.h. je zwei Elemente
in fünf aufeinanderfolgenden Taktzyklen.
-
Wenn zur Zeit T0 von den Leseadreßzählern 13 und 14 kein
Lesezugriff auf den Datenspeicher 3 ausgeführt wird, werden
beide Flipflops 205 und 207 auflogisch "0" gesetzt. Eine
Leitung 309 wird von der in Fig. 4 gezeigten Logik auflogisch
"1" gesetzt. In diesem Fall wird das Flipflop 210 gesetzt. Die
zur Zeit T1 in dem Leseadreßzähler 12 gespeicherte
Blockadresse von logisch "0" wird zur Zeit T1 in den
Leseadreßzähler 13 gestellt. Gleichzeitig wird die Intrablockadresse
auf "0" gelöscht.
-
Der Leseadreßzähler 13 wird zur Zeit T2 auf "0" gesetzt
und wird dann in jedem Taktzyklus hochgezählt. Wenn der Inhalt
des Leseadreßzählers 13 geradzahlig ist, wird das Adreßsignal
zu dem Datenspeicher 3 geschickt. Insbesondere werden 6-Bit-
Daten mit Ausnahme der LSBs zu den Zeiten T2, T4, T6, T8 bzw.
T10 zu dem Datenpuffer 3 geschickt, um die in den Adressen 0,
1, 2, 3 bzw. 4 des Datenpuffers 3 gespeicherten Daten
auszulesen.
-
Das LSB des Leseadreßzählers 13 wird zu dem Schalt-
Schaltkreis 5 geschickt. Wenn der Inhalt des Adreßzählers 13
geradzahlig ist, d.h. wenn das LSB des Adreßzählers 13 auf
logisch "0" gesetzt ist, werden die über die Leitung 103
zugeführten oberen acht Bytes ausgewählt. Wenn der Inhalt des
Adreßzählers 13 ungeradzahlig ist, d.h wenn das LSB auf
logisch "1" gesetzt ist, werden die um einen Taktzyklus
verzögerten und über die Leitung 105 zugeführten unteren acht
Bytes ausgewählt. Die 8-Byte-Daten werden von der Zeit T2 an
in jedem Taktzyklus 10 aufeinanderfolgende Taktzyklen lang zur
Vektorregistergruppe 7 übertragen. Das helßt, 10 Elemente werden
ununterbrochen zur Vektorregistergruppe 7 übertragen.
-
In der Tat sind die Zeitpunkte, zu denen der Inhalt des
Leseadreßzählers 13 geradzahlig ist, die Zeiten T2, T4, T6, T8
und T10. Die oberen 8-Byte-Daten der zu jedem dieser
Zeitpunkte aus dem Datenpuffer 3 ausgelesenen 16-Byte-Daten
werden durch den Schalt-Schaltkreis 5 ausgewählt. Die unteren
8-Byte-Daten werden in das Register 4 gestellt. Im nächsten
Taktzyklus, d.h. zu den Zeiten T3, T5, T7, T9 und T11 werden
die unteren 8-Byte-Daten der zu einer entsprechenden Zeit T2,
T4, T6, T8 und T10 aus dem Datenpuffer 3 ausgelesenen 16-Byte-
Daten durch den Schalt-Schaltkreis 5 ausgewählt. Folglich
werden 8-Byte-Daten, d.h. jedes Element in jedem Taktzyklus
aus dem Datenpuffer 3 über die Leitung 106 zu der
Vektorregistergruppe 7 geschickt.
-
Der Schreibzugriff auf den Datenpuffer 3 ist innerhalb
fünf Zyklen abgeschlossen. Der Schreibzugriff auf die nächsten
Daten wird fünf oder mehr Taktzyklen nach dem Schreibzugriff
auf die vorausgehenden Daten gestartet. Wenn beispielsweise
fünf Taktzyklen nach dem Sc'hreibzugriff auf die vorausgehenden
Daten über die Leitung 111 die Schreibfestlegung der nächsten
Daten detektiert wird, wird, von dem Flipflop 201 um einen
Taktzyklus verzögert, zu einer Zeit TS über die Leitung 113
ein Festlegungssignal zum Einstellen der Anf angsadresse an den
Schreibadreßzähler 12 ausgegeben.
-
Der Wert des Flipflops 204 wird zur Zeit T0 auf logisch
"1" invertiert. Zur Zeit T5 wird dieser Wert als Blockadresse
über die Leitung 112 zu dem Schreibadreßzähler 12 geschickt.
Die Intrablock-Schreibadresse wird über die Leitung 112 auf
"0" gelöscht. Deshalb wird der 6-Bit-Schreibadreßzähler 12 zur
Zeit T6 auf "32" gesetzt und wird dann in jedem Taktzyklus
hochgezählt, wobei die Schreibadresse zu dem Datenpuffer 3
geschickt wird.
-
Zur Zeit T5 bleibt der Leseadreßzähler 13 in Betrieb und
das Flipflop 205 wird auflogisch "1" gesetzt. Da jedoch der
Leseadreßzähler 14 nicht benützt wird, bleibt das Flipflop 207
auflogisch "0". Der Wert des Leseadreßzählers 13 ist "3", und
das LSB von logisch "1" wird zu dem
Lesestartfestlegungsschaltkreis 209 geschickt. Das Lesestartfestlegungssignal wird
gemäß der Logik von Fig. 4 ausgegeben. Das
Lesestartfestlegungssignal wird von dem Flipflop 211 um einen Taktzyklus
verzögert, und die Festlegung der Anfangsadreßeinstellung wird
über die Leitung 118 ausgeführt.
-
Da zur Zeit T6 die Blockadresse 12 des
Schreibadreßzählers auflogisch "1" gesetzt ist, werden die Blockadresse
von logisch "1" und die Intrablockadresse von logisch "0",
d.h. "64", in den Leseadreßzähler 14 gestellt. Anschließend
wird der Leseadreßzähler 14 in jedem Taktzyklus in gleicher
Weise wie beim Lesezugriff auf die vorausgehenden Daten
hochgezählt. Wenn der Inhalt des Leseadreßzählers 13
ungeradzahlig ist, d.h. zu den Zeiten T7, T9, T11,..., wird
das Adreßsignal von dem Leseadreßzähler 14 zu dem Datenpuffer
3 geschickt, um auf den Datenpuffer 3 zuzugreifen. Die 16-
Byte-Daten werden zu jedem dieser Zeitpunkte aus dem
Datenpuffer 3 ausgelesen. Da der Wert des Leseadreßzählers 14
zu diesen Zeitpunkten immer eine gerade Zahl wie 64, 66,
68,... ist, werden die oberen 8-Byte-Daten der aus dem
Datenpuffer 3 ausgelesenen Daten von dem Schalt-Schaltkreis 6
ausgewählt. Die unteren 8-Byte-Daten der zu jeder Zeit T7, T9,
T11, ... ausgelesenen Daten werden zu den nächsten
Zeitpunkten, d.h. zu jeder Zeit T8, T10, T12,... ausgewählt.
Die ausgewählten Daten werden über die Leitung 107 zu der
Vektorregistergruppe 7 geschickt.
-
Zwei Daten werden zu jedem Zeitpunkt T7 bis T11
gleichzeitig über die Leitungen 106 und 107 zu der
Vektorregistergruppe 7 geschickt. Obwohl in der Operation
dieser Ausführungsform nicht beschrieben, ist es für Fachleute
ohne weiteres verständlich, daß, wenn die Schreibfestlegung
z.B. zur Zeit T9 detektiert wird, die Daten von der Zeit T12
an vom Datenpuffer 3 über die Leitungen 106 und 107 zur
Vektorregistergruppe 7 geschickt werden.
-
Gemäß der vorliegenden Erfindung wie obenstehend
beschrieben, sind der Datenpuffer (Speichereinrichtung) und
ein Weg zum gleichzeitigen Übertragen mehrerer Vektordaten vom
Datenpuffer zur Vektorregistergruppe zwischen dem
Hauptspeicher (erste Vorrichtung) und der Vektorregistergruppe
(zweite Vorrichtung) angeordnet. Die Vektordaten können
mittels einer einfachen Steuerung mit hoher Geschwindigkeit
den Vektorregistern zugeführt werden. Ferner kann die
Übertragung der zweiten Vektordaten gestartet werden, ohne auf
das Ende der Übertragung der ersten Vektordaten zu warten.
Deshalb kann der Start der Vektorrechnungen früher ausgeführt
werden.