DE69521089T2 - Vektordatenumgehungsmechanismus für einen Vektorrechner - Google Patents
Vektordatenumgehungsmechanismus für einen VektorrechnerInfo
- Publication number
- DE69521089T2 DE69521089T2 DE69521089T DE69521089T DE69521089T2 DE 69521089 T2 DE69521089 T2 DE 69521089T2 DE 69521089 T DE69521089 T DE 69521089T DE 69521089 T DE69521089 T DE 69521089T DE 69521089 T2 DE69521089 T2 DE 69521089T2
- Authority
- DE
- Germany
- Prior art keywords
- register
- data
- vector
- bypass
- write
- 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 - Fee Related
Links
- 230000007246 mechanism Effects 0.000 title description 4
- 238000010586 diagram Methods 0.000 description 7
- 230000006870 function Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 230000002411 adverse Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000000034 method Methods 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
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
- G06F15/8076—Details on data register access
- G06F15/8084—Special arrangements thereof, e.g. mask or switch
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/30105—Register structure
- G06F9/30109—Register structure having multiple operands in a single register
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/30141—Implementation provisions of register files, e.g. ports
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3824—Operand accessing
- G06F9/3826—Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Complex Calculations (AREA)
Description
- Die Erfindung betrifft einen Vektordatenumgehungsmechanismus in einem Vektorrechner und insbesondere einen Mechanismus für einen Vektorrechner mit einem Vektormaskenregister.
- Der Vektorrechner ist im allgemeinen mit mehreren Verarbeitungseinheiten zur Verarbeitung einer großen Menge von Einergruppendaten ausgestattet. Wie aus Fig. 1 ersichtlich, weist der auf die vorliegende Erfindung anwendbare Vektorrechner eine Steuereinheit 100, einen Hauptspeicher 200, eine Vektorregistereinheit 300, ein Maskenregister 400 und mehrere Ausführungseinheiten 500 auf. Die Steuereinheit 100 steuert den gesamten Vektorrechner entsprechend einem Befehl von außerhalb des Vektorrechners. Der Hauptspeicher 200 speichert Vektordaten. Die Vektorregistereinheit 300 ist zwischen dem Hauptspeicher 200 und der Ausführungseinheit 500 angeordnet, um die Vektordaten zu halten. Die Vektorregistereinheit 300 weist mehrere Vektorregister 310 und ein Netzwerk 320 auf, das diese Vektorregister 310 mit der Ausführungseinheit 500 verbindet. Jedes Element des Maskenregisters 400 zeigt an, ob eine bestimmte Verarbeitung in Verbindung mit dem Element jedes Vektorregisters zu maskieren ist oder nicht. Jede der Ausführungseinheiten 500 weist zeitverschachtelt bzw. im Pipelinesystem arbeitende ALUs (Arithmetik-Logik-Einheiten) auf.
- Wie aus Fig. 5 erkennbar, weist das Vektorregister in einem herkömmlichen Vektorrechner eine Steuergerät 311, ein Leseadressenregister 312, ein Schreibfreigaberegister 313, ein Schreibadressenregister 314, ein Schreibdatenregister 315, Register 316, ein Lesedatenregister 319 und einen Wähler 309 auf. Das Steuergerät 311 erzeugt auf der Basis eines Befehlssteuersignals 101 von der Steuereinheit 100 eine Leseadresse oder Schreibadresse. Das Befehlssteuersignal 101 enthält den Typ eines Befehls (z. B. ein Ladebefehl oder ein Additionsbefehl) und eine Adresseninformation (z. B. eine Startadresse, eine Entfernung oder eine Vektorlänge) usw. Das Leseadressenregister 312 hält eine Leseadresse für die Register 316. Das Schreibfreigaberegister 313 hält Daten aus dem Maskenregister 400 und übermittelt den Registern 316 einen Befehl, der besagt, ob die Daten dort einzuschreiben sind oder nicht. Das Schreibadressenregister 314 hält die Schreibadresse zur Übermittlung zu den Registern 318. Das Schreibdatenregister 315 hält Daten, die in die Register 316 einzuschreiben sind. Die Register 316 umfassen mehrere Wörter und halten Vektordaten. Das Lesedatenregister 319 hält Daten, die aus den Registern 316 ausgelesen werden. Der Wähler 309 wählt irgendein Datenelement aus dem Hauptspeicher 200 und Daten aus der Ausführungseinheit 500 über das Netzwerk 320 aus.
- Im herkömmlichen Vektorrechner werden beim Einschreiben von Daten in das Vektorregister irgendein Datenelement aus dem Hauptspeicher 200 und Daten aus der Ausführungseinheit 500 über das Netzwerk 320 ausgewählt und zunächst im Schreibdatenregister 315 gehalten. Dann wird der Inhalt des Schreibdatenregisters 315 in eine Adresse der Register 316 eingeschrieben, die durch das Schreibadressenregister 314 angezeigt wird. Das Element, das im Schreibfreigaberegister 313 als ungültig angezeigt wird, wird nicht eingeschrieben.
- In diesem herkömmlichen Vektorrechner werden beim Auslesen von Daten aus dem Vektorregister zunächst Daten im Leseadressenregister 312 gehalten. Als Ergebnis wird eine Adresse an die Register 316 übergeben, und die Lesedaten werden im Lesedatenregister 319 gehalten.
- Wenn dementsprechend im herkömmlichen Vektorrechner Daten, die gemäß einem vorhergehenden Befehl in das Vektorregister eingeschrieben wurden, gemäß einem nachfolgenden Befehl gelesen werden, können die Daten nicht gelesen werden, wenn sie nicht zuvor in die Register 316 eingeschrieben worden sind. Mit anderen Worten, falls Befehle mit der vorstehenden Lese-nach-Schreib-Beziehung in zeitlichem Abstand voneinander verarbeitet werden, entsteht kein Problem. Wenn jedoch die beiden Befehle zeitlich aneinandergrenzend verarbeitet werden, kann dies zu einer Verzögerung des nachfolgenden Befehls führen. Dies wirkt sich nachteilig auf die Leistung aus.
- Im IEEE Journal of Solid State Circuits, Bd. 26, Nr. 12, 1. Dezember 1991, S. 1885-1892, wird ein zeitverschachtelt arheitender, ultrahöchstintegrierter (ULSI) Vektorprozessorchip beschrieben. Der Chip weist einen SRAM-Speicher mit zwei Adreßeingängen und zwei Datenausgängen und mit Umgehungsschaltungen auf.
- Die vorliegende Erfindung, wie in den beigefügten Patentansprüchen definiert, ist entwickelt worden, um die vorerwähnten Probleme zu lösen, und daher besteht eine Aufgabe der Erfindung darin, einen Vektordatenumgehungsmechanismus bereitzustellen, der mit hoher Geschwindigkeit einen nachfolgenden Befehl verarbeitet, welcher auf das Ausführungsergebnis eines vorhergehenden Befehls Bezug nimmt.
- Eine weitere Aufgabe der vorliegenden Erfindung besteht darin, einen Vektorrechner bereitzustellen, der eine Zeit für das Lesen aus einem Vektorregister flexibel verändern kann.
- In einer bevorzugten Ausführungsform weist ein erfindungsgemäßer Vektorrechner auf: eine Umgehungseinrichtung zur Umgehung von Daten, die in ein Register innerhalb eines Vektorregisters einzuschreiben sind; einen Wähler zum Auswählen irgendwelcher Daten aus dem Register und von Daten aus der Umgehungseinrichtung und einen Decodierer zum Erzeugen eines Steuersignals für den Wähler entsprechend der Umgehungsinformation und der Maskeninformation.
- Eine Ausführungsform der vorliegenden Erfindung geht aus der Beschreibung anhand der folgenden Zeichnungen hervor. Dabei zeigen:
- Fig. 1 ein Blockschaltbild, das den Gesamtaufbau eines bei der vorliegenden Erfindung verwendeten Vektorrechners darstellt;
- Fig. 2 ein Blockschaltbild, das den Aufbau eines erfindungsgemäßen Vektorregisters darstellt;
- Fig. 3 ein Diagramm, das eine Funktionstabelle eines erfindungsgemäßen Decodierers darstellt;
- Fig. 4 ein Zeitdiagramm, das eine Betriebszeitsteuerung jedes Elements gemäß der vorliegenden Erfindung darstellt;
- Fig. 5 ein Blockschaltbild, das den Aufbau eines Vektorregisters nach dem Stand der Technik darstellt; und
- Fig. 6 ein Zeitdiagramm, das eine Betriebszeitsteuerung jedes Elements nach dem Stand der Technik darstellt.
- Nachstehend wird eine Ausführungsform der vorliegenden Erfindung anhand der beigefügten Zeichnungen beschrieben.
- Wie aus Fig. 1 erkennbar, weist ein Vektorrechner nach einer Ausführungsform der vorliegenden Erfindung eine Steuereinheit 100, einen Hauptspeicher 200, eine Vektorregistereinheit 300, ein Maskenregister 400 und m (m ist eine ganze Zahl) Ausführungseinheiten 500 auf. Die Steuereinheit 100 steuert den gesamten Vektorrechner entsprechend einem von außen gegebenen Befehl. Der Hauptspeicher 200 speichert hauptsächlich Vektordaten. Die Vektorregistereinheit 300 befindet sich zwischen dem Hauptspeicher 200 und der Ausführungseinheit 500, um die Vektordaten aufzunehmen bzw. zu halten. Die Vektorregistereinheit 300 schließt n (n ist eine ganze Zahl) Vektorregister 310 sowie ein Netzwerk 320 ein, das die Verbindung zwischen diesen Vektorregistern 310 und der Ausführungseinheit 500 herstellt. Das Netzwerk 320 kann eine Busstruktur oder eine Struktur mit Verwendung eines Kreuzschienenverteilers aufweisen. Jedes Element des Maskenregisters 400 zeigt an, ob eine bestimmte Verarbeitung in Verbindung mit dem Element jedes Vektorregisters zu maskieren ist oder nicht. Jede der m Ausführungseinheiten 500 weist zeitverschachtelt arbeitende ALUs (Arithmetik-Logik-Einheiten) auf.
- Wie aus Fig. 2 erkennbar, weist das Vektorregister 310 ein Steuergerät 311, ein Leseadressenregister 312, ein Schreibfreigaberegister 313, ein Schreibadressenregister 314, ein Schreibdatenregister 315, Register 316, einen Decodierer 317, einen Wähler 318, ein Lesedatenregister 319 und einen Wähler 309 auf. Das Steuergerät 311 erzeugt eine Leseadresse oder eine Schreibadresse auf der Basis eines Befehlssteuersignals 101 von der Steuereinheit 100. Außerdem umgeht das Steuergerät 311 ferner Daten, die in die Register 316 einzuschreiben sind, und legt einen Zeitpunkt fest, zu dem die Daten durch das Lesedatenregister 319 gelesen werden. Das Leseadressenregister 312 hält eine Leseadresse für die Register 316. Das Schreibfreigaberegister 313 hält Daten vom Maskenregister 400 und übermittelt an die Register 316 einen Befehl, der angibt, ob die Daten darin einzuschreiben sind oder nicht. Das Schreibadressenregister 314 hält die Schreibadresse, um sie an die Register 316 zu übergeben. Das Schreibdatenregister 315 hält Daten, die in die Register 316 einzuschreiben sind. Die Register umfassen mehrere Wörter und halten Vektordaten. Der Wähler 318 wählt Daten aus den Registern 316 oder seine Umgehungsdaten aus. Der Decodierer 317 zeigt dem Wähler 318 Daten an, die auf der Basis einer zu umgehenden Zeit und eines Zustands des Maskenregisters im Lesedatenregister 319 zu halten sind. Das Lesedatenregister 319 hält Daten, die aus den Registern 316 ausgelesen werden. Der Wähler 309 wählt irgendeines der vom Hauptspeicher 200 übertragenen Datenelemente sowie Daten aus, die von der Ausführungseinheit 500 über das Netzwerk 320 übertragen wurden.
- Der Decodierer 317 erzeugt ein Steuersignal für den Wähler 318 entsprechend der in Fig. 3 dargestellten Funktionstabelle. Mit anderen Worten, der Decodierer 317 gibt ein Umgehungssignal 3111 vom Steuergerät 311, ein Maskensignal 401 vom Maskenregister 400 und ein Schreibfreigabesignal 3131 vom Schreibfreigaberegister 313 ein, um Wählsignale SEL-A, B und C zu erzeugen.
- In diesem Beispiel wird angenommen, daß das Umgehungssignal 3111 den Wert "00" anzeigt, wenn keine Umgehung erfolgt, "01", wenn eine Umgehung um einen Takt erfolgt, und "10", wenn eine Umgehung um zwei Takte erfolgt. Eine Zeitsteuzuerung für die Umgehung wird entsprechend der Zeit zwischen dem vorhergehenden Befehl und dem nachfolgenden Befehl festgelegt, wenn ein Befehl ausgegeben wird oder dergleichen. Außerdem zeigen das Maskensignal 401 und das Schreibfreigabesignal 3131 den Wert "1" an, wenn entsprechende Daten gültig sind, aber "0", wenn sie ungültig sind.
- Das Wählsignal SEL-A nimmt den Wert "1" an, wenn Daten aus den Registern 316 auszuwählen sind. Das Wählsignal SEL-B nimmt den Wert "1" an, wenn Daten aus dem Schreibdatenregister 315 auszuwählen sind. Das Wählsignal SEL-C nimmt den Wert "1" an, wenn Daten aus dem Wähler 309 auszuwählen sind.
- Wie in Fig. 3 erkennbar, wird das Ausgabesignal der Register 316 ausgewählt, wenn das Umgehungssignal 3111 "keine Umgehung" anzeigt. Außerdem wird selbst dann, wenn es "Umgehung" anzeigt, gleichfalls das Ausgabesignal der Register 316 ausgewählt, wenn das dieser Umgehungszeit entsprechende Schreibfreigabesignal, d. h. das Maskensignal 401 oder das Schreibfreigabesignal 3131, "ungültig" anzeigt. Wenn umgekehrt das dieser Umgehungszeit entsprechende Schreibfreigabesignal "gültig" anzeigt, wird die Verarbeitung umgangen. Mit anderen Worten, wenn die Umgehungszeit einen Takt beträgt, dann wird das Ausgabesignal des Schreibdatenregisters 315 ausgewählt, während bei einer Umgehungszeit von zwei Takten das Ausgabesignal des Wählers 309 ausgewählt wird.
- Die Vektordaten aus dem Hauptspeicher 200 werden zunächst im Schreibdatenregister 315 gehalten, nachdem sie durch den Schreibdatenregisterwähler 309 ausgewählt worden sind. Es wird angenommen, daß die Register 316 aus einem Speicherelement bestehen, daß zum Schreiben und Lesen eine Taktperiode benötigt. Beim Schreiben von Daten werden vom Schreibfreigaberegister 313 bzw. vom Schreibadressenregister 314 das Schreibfreigabesignal 3131 bzw. das Schreibadressensignal ausgegeben. Als Ergebnis werden die vom Schreibdatenregister 315 ausgegebenen Vektordaten in einer Position eines festgelegten Elements der Register 316 eingeschrieben. Beim Lesen von Daten werden Daten aus der Position des festgelegten Elements der Register 316 auf der Basis des vom Leseadressenregister 312 ausgegebenen Leseadressensignals ausgelesen.
- Im Falle des Speicherns von Daten im Vektorregister werden, wie oben beschrieben, die Vektordaten 3091 nacheinander im Schreibdatenregister 315 des Vektorregisters 310 gehalten. Dann wird ein Maskensignal 401, das die Gültigkeit/Ungültigkeit dieser Vektordaten darstellt, mit diesen Vektordaten 3091 synchronisiert im Schreibfreigaberegister 313 gehalten. Das Maskensignal 401 wird gleichzeitig in den Decodierer 317 eingegeben. Andererseits wird das Umgehungssignal 3111 von Steuergerät 311 synchronisiert mit den Vektordaten 3091 und dem Maskensignal 401 in den Decodierer 317 eingegeben. Außerdem wird das Schreibadressensignal, das die Position eines Elements innerhalb der Register 316 zum Speichern der Vektordaten 3091 festlegt, synchron mit den Vektordaten 3091 und dem Maskensignal 401 vom Steuergerät 311 erzeugt und dann im Schreibadressenregister 314 gehalten.
- Die Register 316 empfangen Vektordaten 3151, die von dem Schreibdatenregister 315 eingegeben werden, sowie das Schreibfreigabesignal 3131, das vom Schreibfreigaberegister 313 eingegeben wird. Dann wird, falls das Schreibfreigabesignal 3131 den Wert "gültig" anzeigt, der Wert des Schreibdatenregisters 315 in die Position des Elements der Register 316 eingeschrieben, das durch das vom Schreibadressenregister 314 eingegebene Adressensignal bezeichnet wird. Falls das Schreibfreigabesignal 3131 den Wert "ungültig" anzeigt, wird das Schreiben dieser Vektordaten nicht ausgeführt, und Daten, die in der Position des ursprünglich festgelegten Elements gespeichert worden sind, werden unverändert gehalten. Entsprechend der Anzahl von Vektorelementen, die durch das Befehlssteuersignal 101 bezeichnet werden, werden im Steuergerät 311 nacheinander eine Anzahl von Schreibadressen erzeugt und dann im Schreibadressenregister 314 gehalten.
- Beim Auslesen von Daten aus dem Vektorregister wird nach Empfang einer vom Befehlssteuersignal 101 ausgegebenen Leseanforderung die Leseadresse für jedes Datenelement im Steuergerät 311 erzeugt und dann in dem Leseadressenregister 312 gehalten. In den Registern 316 werden die entsprechenden Daten aus der Position des Elements ausgelesen, die durch das Leseadressensignal vom Leseadressenregister 314 bezeichnet wird. Die Lesedaten werden über den Wähler 318 im Lesedatenregister 319 aufgenommen. Dann werden die vom Lesedatenregister 319 ausgegebenen Vektordaten nacheinander zur Ausführungseinheit 500 oder zum Hauptspeicher 200 ausgegeben.
- Im folgenden wird eine Arbeitsweise in dem Falle beschrieben, wo die Vektordaten, die man als Verarbeitungsergebnis nach dem vorhergehenden Befehl erhält, mit den Vektordaten übereinstimmen, die als Bezugsoperand im nachfolgenden Befehl festgelegt worden sind.
- Wie aus Fig. 2 erkennbar, werden die von der Ausführungseinheit 500 ausgegebenen Vektordaten 321 nacheinander über den Wähler 309 im Schreibdatenregister 315 aufgenommen. Gleichzeitig werden die Vektordaten auch über eine Signalleitung 3091 in den Wähler 318 eingegeben. Das Maskensignal 401, das die Gültigkeit der Vektordaten 321 darstellt, wird mit den Vektordaten 321 synchronisiert im Schreibfreigaberegister 313 gehalten. Das Maskensignal wird außerdem gleichzeitig in den Decodierer 317 eingegeben. Dann bezieht sich die Steuereinheit 100 auch auf den nachfolgenden Befehl sowie auf den Betriebszustand einer Ressource bzw. eines Betriebsmittels, das durch den nachfolgenden Befehl benutzt wird. Wenn danach die Steuereinheit 100 einschätzt, daß die Verarbeitung durch den nachfolgenden Befehl sofort ausführbar ist, wird eine Ausleseanforderung ausgegeben, so daß die Ausleseoperation des nachfolgenden Befehls gleichzeitig mit der Ausgabe des Kopfelements der Vektordaten beginnt, die man als Operationsergebnis des vorhergehenden Befehls erhält. Nach Empfang der Ausleseanforderung gibt das Steuergerät 311 das Leseadressensignal aus. Das Leseadressensignal wird im Leseadressenregister 314 gehalten. Andererseits wird das Umgehungssignal 3111 vor seiner Eingabe in den Decodierer 317 vom Steuergerät 311 ausgegeben.
- Der Decodierer 317 empfängt das vom Steuergerät 311 ausgegebene Umgehungssignal 3111, das mit den Vektordaten 3091 synchronisiert eingegebene Maskensignal 401 und das Schreibfreigabesignal 3131 vom Schreibfreigaberegister 313. Bei der oben anhand von Fig. 3 beschriebenen Operation gibt der Decodierer 317 die Steuersignale SEL-A, B und C des Wählers 318 aus. Als Reaktion auf das Wählsignal vom Decodierer 317 wählt der Wähler 318 die Vektordaten aus einem der Register 316, dem Schreibdatenregister 315 und dem Wähler 309 aus. Die ausgewählten Daten werden im Lesedatenregister 319 gehalten.
- Das Steuergerät 311 erzeugt nacheinander das Schreibadressensignal des vorhergehenden Befehls und das Leseadressensignal des nachfolgenden Befehls. Dann wählt der Decodierer 317 die Lesedaten als Reaktion auf den Inhalt des Maskenregisters und den Takt der festgelegten Umgehung aus. Wie oben beschrieben, wird eine Folge von Lese-/Schreib-Operationen für die Register 316 wiederholt hintereinander ausgeführt, wobei die Anzahl der Wiederholungen gleich der Anzahl der Elemente ist, die durch das Befehlssteuersignal 101 bezeichnet werden. Im folgenden wird eine Operation des Vektorrechners nach der vorerwähnten Ausführungsform der Erfindung beschrieben.
- Wie aus den Fig. 1, 2 und 4 erkennbar, gibt die Steuereinheit 100 nach Empfang eines vorgegebenen Befehls das Befehlssteuersignal 101 aus. Das Befehlssteuersignal 101 wird in die entsprechenden Vektorregister 310 eingegeben. In jedem der Vektorregister 310 wird das Befehlssteuersignal 101 durch das Steuergerät 311 empfangen. In dieser Situation wird festgestellt, daß die Vektordaten als Verarbeitungsergebnis des vorhergehenden Befehls mit den Vektordaten übereinstimmen, die als Bezugsoperand im nachfolgenden Befehl bezeichnet sind, und es wird angenommen, daß "10", d. h. "2-Takt-Umgehung", als Umgehungssignal festgelegt ist.
- In einem ersten Takt werden die in der Ausführungseinheiten 500 erzeugten Ergebnisdaten A (0) über das Netzwerk 320 in die entsprechenden Vektorregister 310 eingegeben. Zur gleichen Zeit wird auch der Inhalt des Kopfelements des Maskenregisters 400 über die Signalleitung 401 in die entsprechenden Vektorregister 310 eingegeben. Das Steuergerät 311 erzeugt die Leseadresse 0, die dem Kopfelement des nachfolgenden Befehls entspricht, zu einem Zeitpunkt, der um einen Takt früher liegt als der obenerwähnte Zeitpunkt, und hält sie in dem Leseadressenregister 312. Als Ergebnis werden die Daten in der Adresse 0 aus den Registern 316 zur gleichen Zeit ausgelesen wie die Ergebnisdaten A (0) aus der vorerwähnten Ausführungseinheit 500. Zu beachten ist, daß die Ergebnisdaten des vorhergehenden Befehls nicht durch die Register 316 wiedergespiegelt werden und deshalb deren vorhergehender Zustand ausgelesen wird. Im folgenden werden diese Daten als "A'(0)" oder dergleichen dargestellt. Der Wähler 318 wählt das Ausgabesignal 3091 des Wählers 309, das der Tabelle von Fig. 3 entspricht, da das Umgehungssignal 3111 den Wert "10" hat und der Wert des Maskenregisters 400 gleich "1" ist. Die ausgewählten Daten A (0) werden im Lesedatenregister 319 gehalten und der Ausführungseinheit 500 zur Verarbeitung des nachfolgenden Befehls übermittelt. Zu beachten ist, daß die durch die Ausführungseinheit 500 erzeugten Ergebnisdaten A(0) im zweiten Takt über das Schreibdatenregister 315 in den Registern 316 gespeichert werden.
- Im zweiten Takt werden die durch die Ausführungseinheit 500 erzeugten Ergebnisdaten A(1) über das Netzwerk 320 in das entsprechende Vektorregister 310 eingegeben. Zur gleichen Zeit wird auch der Inhalt des zweiten Elements des Maskenregisters 400 über die Signalleitung 401 in das entsprechende Vektorregister 310 eingegeben. Das Steuergerät 311 erzeugt die Leseadresse 1, die dem zweiten Element des nachfolgenden Befehls entspricht, zu einem Zeitpunkt, der um einem Takt früher liegt als der vorerwähnte Zeitpunkt, und hält sie im Leseadressenregister 312. Als Ergebnis werden die Daten A'(1) unter der Adresse 1 zum gleichen Zeitpunkt aus den Register 316 ausgelesen wie die Ergebnisdaten A(1) aus der vorerwähnten Ausführungseinheit 500. Der Wähler 318 wählt das Ausgabesignal 3161 der Register 316, das mit der Tabelle von Fig. 3 übereinstimmt, da das Umgehungssignal 3111 den Wert "10" hat und der Wert des Maskenregisters 400 gleich "0" ist. Die ausgewählten Daten A'(1) werden im Lesedatenregister 319 gehalten und der Ausführungseinheit 500 zu Verarbeitung des nachfolgenden Befehls übermittelt. Zu beachten ist, daß die durch die Ausführungseinheit 500 erzeugten Ergebnisdaten A(1) zunächst im Schreibdatenregister 315 gehalten werden. Da jedoch das zweite Element des Maskenregisters 400 den Wert "0" hat, werden sie nicht in die Register 316 eingeschrieben. Dementsprechend werden die Daten A' (1) unter der Adresse 1 der Register 316 unverändert gespeichert.
- Auf ähnliche Weise werden in den auf den obigen Takt folgenden Takten die Ergebnisdaten aus der Ausführungseinheit 500 oder die Daten aus den Registern 316 durch den Wähler 318 ausgewählt und nacheinander durch das Lesedatenregister 319 gehalten, bevor sie zur Ausführungseinheit 500 übermittelt werden.
- Wie aus Fig. 6, dem Zeitdiagramm nach dem Stand der Technik, erkennbar, werden andererseits Daten A(0), die im ersten Takt von der Ausführungseinheit 500 über das Netzwerk 321 übermittelt werden, im Schreibdatenregister 315 gehalten und im zweiten Takt in die Register 316 eingeschrieben. Wenn dementsprechend die Daten A(0) aus den Registern 316 ohne Umgehung ausgelesen werden, erfolgt dies frühestens im dritten Takt. Infolgedessen wird A(0) im vierten Takt zur Ausführungseinheit 500 übermittelt.
- Wenn man dementsprechend Fig. 4, die das Zeitdiagramm nach dem Ausführungsbeispiel der vorliegenden Erfindung darstellt, mit Fig. 6 vergleicht, die das Zeitdiagramm nach dem Stand der Technik darstellt, so ist erkennbar, daß die Übertragungszeit der Vektordaten zur Ausführungseinheit 500 gemäß der vorliegenden Erfindung um zwei Takte verkürzt wird.
- Zu beachten ist, daß, um die Datenübertragung zur Ausführungseinheit 500 nicht um zwei Takte, sondern um einen Takt verkürzen, das Umgehungssignal 3111 auf "01" gesetzt werden muß. Ferner muß die Ausgabezeit der Leseadresse vom Steuergerät 311 im Vergleich zu der in Fig. 6 dargestellten um einen Takt verzögert werden.
- Wie oben beschrieben, können erfindungsgemäß in dem Falle, wo im nachfolgenden Befehl auf die durch den vorhergehenden Befehl erzeugten Vektordaten Bezug genommen wird, noch bevor die Vektordaten durch den vorhergehenden Befehl in das Vektorregister eingeschrieben und festgesetzt werden, die Daten gemäß dem nachfolgenden Befehl ausgelesen werden. Als Ergebnis kann eine Folge von Lese-/Schreib-Operationen bei der Vektorverarbeitung mit hoher Geschwindigkeit ausgeführt werden.
- Die vorstehende Beschreibung einer bevorzugten Ausführungsform der Erfindung ist zu Erläuterungs- und Beschreibungszwecken gegeben worden. Sie soll nicht erschöpfend sein oder die Erfindung genau auf die offenbarte Form beschränken, und in Anbetracht der obigen Lehren sind Modifikationen und Abänderungen möglich oder können aus der praktischen Ausführung der Erfindung entwickelt werden. Die Ausführungsform wurde gewählt und beschrieben, um die Grundgedanken der Erfindung und ihre praktische Anwendung zu erläutern und einen Fachmann in die Lage zu versetzen, die Erfindung in verschiedenen Ausführungsformen und mit verschiedenen Modifikationen zu nutzen, die für den jeweils beabsichtigten Einsatz geeignet sind. Der Umfang der Erfindung soll durch die hier angefügten Patentansprüche und ihre Äquivalente definiert werden.
Claims (4)
1. Vektorrechner mit einem Vektorregister (310),
dadurch gekennzeichnet, daß er aufweist:
eine Umgehungseinrichtung (3151, 3091) zum Umgehen von
Daten, die innerhalb des Vektorregisters in ein Register (316)
einzuschreiben sind:
einen Wähler (318) zum Auswählen eines der
Datenelemente aus dem Register (316) und von Daten aus der
Umgehungseinrichtung (3151, 3091); und
einen Decodierer (317) zum Erzeugen eines Steuersignals
für den Wähler (318) in Übereinstimmung mit
Umgehungsinformationen, die Vektordaten entsprechen, und Maskeninformationen
(401), welche die Gültigkeit/Ungültigkeit der Vektordaten
darstellen.
2. Vektorrechner nach Anspruch 1, der ferner aufweist:
eine Vektorregistereinheit (300) zum Halten von
Vektordaten;
ein Maskenregister (400) zum Halten von
Maskeninformationen;
mindestens ein Vektorregister (310) mit mindestens
einer Ausführungseinheit (500) zum Verarbeiten der Vektordaten,
wobei die Vektorregistereinheit (300) mindestens ein
Vektorregister (310) aufweist, das mit jeder der Ausführungseinheiten
(500) verbunden ist,
wobei das Vektorregister ferner aufweist:
Register (316) zum Halten der Vektordaten;
ein Steuergerät (311) zum Erzeugen einer Leseadresse
und einer Schreibadresse für die Register (316), um eine
Umgehungszeit festzulegen;
wobei der Decodierer (317) ein Steuersignal für den
Wähler gemäß den Maskeninformationen erzeugt, die den
Vektordaten und der Umgehungszeit (3111) entsprechen.
3. Vektorrechner nach Anspruch 2, wobei das
Vektorregister (310) ferner ein Schreibdatenregister (315) zum
aufeinanderfolgenden Halten von Daten aus der Ausführungseinheit (500)
aufweist, und wobei die Umgehungseinrichtung (3151, 3091) eine
Einrichtung (3091) zum Umgehen eines Eingabesignals der
Schreibdaten und eine Einrichtung (3151) zum Umgehen eines
Ausgabesignals des Schreibdatenregisters aufweist.
4. Vektorrechner nach Anspruch 3, wobei das
Vektorregister (310) ferner ein Schreibfreigaberegister (313) zum
aufeinanderfolgenden Halten der entsprechenden Elemente des
Maskenregisters (400) aufweist, und wobei der Decodierer (317)
das Eingabesignal (401) und das Ausgabesignal (3131) des
Schreibfreigaberegisters (313) als Maskeninformation verwendet
und, falls als Umgehungszeit keine Umgehung festgesetzt ist,
den Wähler (318) so steuert, daß das Ausgabesignal der
Register (316) für den Wähler (318) ausgewählt wird, und in dem
Falle, wo als Umgehungszeit eine Umgehung von einem Takt
festgesetzt ist, Daten aus der Umgehungseinrichtung auswählt, wenn
der Wert des Maskenregisters (400) gültig ist, aber das
Ausgabesignal der Register (316) auswählt, wenn der Wert des
Maskenregisters (400) ungültig ist, und in dem Falle, wo als
Umgehungszeit eine Umgehung von zwei Zyklen festgesetzt ist,
Daten aus der Einrichtung zur Umgehung des Eingabesignals des
Schreibdatenregisters (315) auswählt, wenn der Wert des
Maskenregisters (400) gültig ist, und das Ausgabesignal der
Register auswählt, wenn der Wert des Maskenregisters (400)
ungültig ist.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP6209961A JPH0877143A (ja) | 1994-09-02 | 1994-09-02 | ベクトルデータ処理装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
DE69521089D1 DE69521089D1 (de) | 2001-07-05 |
DE69521089T2 true DE69521089T2 (de) | 2001-11-15 |
Family
ID=16581544
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE69521089T Expired - Fee Related DE69521089T2 (de) | 1994-09-02 | 1995-09-01 | Vektordatenumgehungsmechanismus für einen Vektorrechner |
Country Status (5)
Country | Link |
---|---|
US (1) | US5802384A (de) |
EP (1) | EP0700005B1 (de) |
JP (1) | JPH0877143A (de) |
CA (1) | CA2157435C (de) |
DE (1) | DE69521089T2 (de) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100274988A1 (en) * | 2002-02-04 | 2010-10-28 | Mimar Tibet | Flexible vector modes of operation for SIMD processor |
US7793084B1 (en) | 2002-07-22 | 2010-09-07 | Mimar Tibet | Efficient handling of vector high-level language conditional constructs in a SIMD processor |
US7873812B1 (en) | 2004-04-05 | 2011-01-18 | Tibet MIMAR | Method and system for efficient matrix multiplication in a SIMD processor architecture |
JP2009104494A (ja) * | 2007-10-25 | 2009-05-14 | Nec Computertechno Ltd | ベクトル処理装置 |
CN103946797B (zh) * | 2011-12-06 | 2017-07-04 | 英特尔公司 | 用于转换矢量指令的系统、装置和方法 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS6057467A (ja) * | 1983-09-09 | 1985-04-03 | Nec Corp | ベクトルデ−タ処理装置 |
DE3585972D1 (de) * | 1984-07-02 | 1992-06-11 | Nec Corp | Rechner-vektorregisterverarbeitung. |
US4837730A (en) * | 1987-02-06 | 1989-06-06 | Scientific Computer Systems Corporation | Linking scalar results directly to scalar operation inputs on a bidirectional databus in a computer which superpositions vector and scalar operations |
US4888679A (en) * | 1988-01-11 | 1989-12-19 | Digital Equipment Corporation | Method and apparatus using a cache and main memory for both vector processing and scalar processing by prefetching cache blocks including vector data elements |
JPH0769821B2 (ja) * | 1988-03-04 | 1995-07-31 | 日本電気株式会社 | 情報処理装置におけるバイパスライン制御方式 |
US5151995A (en) * | 1988-08-05 | 1992-09-29 | Cray Research, Inc. | Method and apparatus for producing successive calculated results in a high-speed computer functional unit using low-speed VLSI components |
JPH0253142A (ja) * | 1988-08-17 | 1990-02-22 | Hitachi Ltd | ベクトルレジスタ診断方式 |
JPH02288975A (ja) * | 1989-02-17 | 1990-11-28 | Nec Eng Ltd | ベクトル演算装置 |
US5555384A (en) * | 1989-12-01 | 1996-09-10 | Silicon Graphics, Inc. | Rescheduling conflicting issued instructions by delaying one conflicting instruction into the same pipeline stage as a third non-conflicting instruction |
US5590365A (en) * | 1990-03-30 | 1996-12-31 | Kabushiki Kaisha Toshiba | Pipeline information processing circuit for floating point operations |
JP2988965B2 (ja) * | 1990-06-07 | 1999-12-13 | 株式会社東芝 | パイプライン情報処理回路 |
-
1994
- 1994-09-02 JP JP6209961A patent/JPH0877143A/ja active Pending
-
1995
- 1995-09-01 US US08/522,589 patent/US5802384A/en not_active Expired - Lifetime
- 1995-09-01 EP EP95113766A patent/EP0700005B1/de not_active Expired - Lifetime
- 1995-09-01 CA CA002157435A patent/CA2157435C/en not_active Expired - Fee Related
- 1995-09-01 DE DE69521089T patent/DE69521089T2/de not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
EP0700005B1 (de) | 2001-05-30 |
US5802384A (en) | 1998-09-01 |
DE69521089D1 (de) | 2001-07-05 |
EP0700005A1 (de) | 1996-03-06 |
CA2157435C (en) | 2000-05-16 |
JPH0877143A (ja) | 1996-03-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP1097460B1 (de) | Integrierte schaltung mit einer selbsttesteinrichtung zur durchführung eines selbsttests der integrierten schaltung | |
DE3210816C2 (de) | ||
DE69127101T2 (de) | System für verteilte mehrfachrechnerkommunikation | |
DE69906156T2 (de) | Mikroprozessorvorrichtung mit programmierbaren wartezuständen | |
DE2354521C2 (de) | Verfahren und Einrichtung zum gleichzeitigen Zugriff zu verschiedenen Speichermoduln | |
DE2953861C2 (de) | ||
DE69428634T2 (de) | Hardware-Anordnung und Verfahren zur Ausdehnung der Datenverarbeitungszeit in den Fliessbandstufen eines Mikrorechnersystems | |
DE2145120A1 (de) | Digitales Datenverarbeitungsgerat | |
DE3638572C2 (de) | ||
DE69031524T2 (de) | Verfahren und Vorrichtung zur Datenübertragung zwischen Prozessorelementen | |
DE3750028T2 (de) | Pipelineprozessor mit schwacher Kopplung. | |
DE2829668A1 (de) | Kanaldatenpufferspeicher | |
DE2036729A1 (de) | Digital Datenverarbeiter | |
DE19983098B4 (de) | Mehrfach-Bitanzeige zur Behandlung von Schreib-nach-Schreib-Fehlern und zur Eliminierung von Bypass-Komparatoren | |
DE3400723C2 (de) | ||
DE69031297T2 (de) | Eingabewarteschlange für Speichersubsysteme | |
DE68927202T2 (de) | Paralleler Prozessor | |
DE69033416T2 (de) | Hauptspeicherkarten mit Einzelbit-Setz- und Rücksetz-Funktion | |
DE68926374T2 (de) | Seriellumsetzungssteuerungssystem für Hauptspeicherreferenz | |
DE2617485C3 (de) | Schaltungsanordnung für Datenverarbeitungsanlagen zur Abarbeitung von Mikrobefehlsfolgen | |
DE69521089T2 (de) | Vektordatenumgehungsmechanismus für einen Vektorrechner | |
DE3486073T2 (de) | Vektorverarbeitungsgeraet. | |
DE68903280T2 (de) | Vektorschlange in computern mit vektorregister. | |
DE2227761B2 (de) | Speichersystem | |
DE2245284A1 (de) | Datenverarbeitungsanlage |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8364 | No opposition during term of opposition | ||
8339 | Ceased/non-payment of the annual fee |