DE68925572T2 - Vektorprozessor - Google Patents
VektorprozessorInfo
- Publication number
- DE68925572T2 DE68925572T2 DE68925572T DE68925572T DE68925572T2 DE 68925572 T2 DE68925572 T2 DE 68925572T2 DE 68925572 T DE68925572 T DE 68925572T DE 68925572 T DE68925572 T DE 68925572T DE 68925572 T2 DE68925572 T2 DE 68925572T2
- Authority
- DE
- Germany
- Prior art keywords
- access
- time
- bank
- vector data
- memory
- 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
- 230000004044 response Effects 0.000 claims description 6
- 238000010586 diagram Methods 0.000 description 4
- 238000000034 method Methods 0.000 description 4
- 230000003111 delayed effect Effects 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
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3409—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
- G06F11/3419—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment by assessing time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/88—Monitoring involving counting
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Quality & Reliability (AREA)
- Complex Calculations (AREA)
- Debugging And Monitoring (AREA)
- Memory System (AREA)
Description
- Die Erfindung betrifft eine Datenverarbeitungsvorrichtung und insbesondere eine Datenverarbeitungsvorrichtung, die Vektordaten verarbeitet.
- In einer herkömmlichen Datenverarbeitungsvorrichtung, die Vektordaten verarbeitet, muß, um eine schnelle arithmetische Operation auszuführen, schnell auf eine große Datenmenge zugegriffen werden, um die Zugriffsdaten an eine arithmetische Einheit zu übergeben. Daher haben verschiedene Techniken zur Verwirklichung eines hohen Durchsatzes, z.B. eine Mehrfachbank-Technik, breite Anwendung gefunden. Wenn jedoch z.B. auf Elemente eines zweidimensionalen Datenfeldes in Spaltenrichtung zugegriffen wird, greifen abhängig von der Feldgröße oft alle Elemente auf eine einzige Bank zu, und der Durchsatz kann oft erheblich vermindert werden.
- Falls in der oben erwähnten herkömmlichen Datenverarbeitungsvorrichtung der Durchsatz eines ganzen Systems aufgrund eines Durchsatzes des Speicherzugriffs vermindert wird, muß, um festzustellen, daß ein Verlust während des Speicherzugriffs die Leistungsverminderung verursacht, ein Programm analysiert werden, um eine Stelle zu suchen, wo die Ursache liegt, d.h. ob die Ursache im Speicherzugriff oder in anderen Operationen liegt. Eine Programmanalyse muß verschiedene Gesichtspunkte berücksichtigen, abhängig von den Fällen, wo Ursachen im Speicherzugriff und in anderen Operationen liegen. Daher ist, wenn eine Ursache nicht offenkundig ist, eine nicht wünschenswerte große Anzahl von Arbeitsschritten erforderlich.
- EP-A-232 287 offenbart einen Vektorprozessor mit einem Hauptspeicher mit mehreren Bänken und mit Stapelspeichern, die Hauptspeicher-Zugriffsanforderungen speichern. Ein Komparator vergleicht Adressen im Hauptspeicher.
- Es ist eine Hauptaufgabe, eine Datenverarbeitungsvorrichtung bereitzustellen, die eine Verzögerungszeit zählen kann, die durch einen Bankkonflikt zwischen Elementen von Vektordaten verursacht wird, wenn auf die Vektordaten zugegriffen wird. Diese Aufgabe wird mit den Merkmalen der Ansprüche gelöst.
- Es zeigen:
- Fig. 1 ein Blockschaltbild, das eine Anordnung einer Datenverarbeitungsvorrichtung entsprechend einer ersten erfindungsgemäßen Ausführungsform darstellt;
- Fig. 2 ein Blockschaltbild, das eine ausführliche Anordnung einer in Fig. 1 dargestellten Speicherzugriffssteuereinheit darstellt;
- Fig. 3 und 4 Zeitdiagramme zur Erklärung einer Operation in der ersten Ausführungsform;
- Fig. 5 ein Blockschaltbild, das eine Anordnung einer Datenverarbeitungsvorrichtung entsprechend einer zweiten erfindungsgemäßen Ausführungsform darstellt;
- Fig. 6 ein Blockschaltbild, das eine ausführliche Anordnung einer in Fig. 5 dargestellten Speicherzugriffssteuereinheit darstellt; und
- Fig. 7 und 8 Zeitdiagramme zur Erklärung einer Operation in der zweiten Ausführungsform.
- Die Erfindung wird nachfolgend mit Bezug auf die beigefügten Zeichnungen ausführlich beschrieben.
- Fig. 1 stellt eine Anordnung einer Datenverarbeitungsvorrichtung entsprechend einer ersten erfindungsgemäßen Ausführungsform dar. Die Datenverarbeitungsvorrichtung weist eine Befehlssteuereinheit 1, eine Speicherzugriffssteuereinheit 2, einen Speicher 3, ein Arithmetikeinheit-Zählregister 11, ein Speicherkanal-Zählregister 12, eine Schiebeschaltung 13, ein Register 14, einen Zugriffszeitzähler 15, einen Komparator 16 und einen Bankwartezeitzähler 17 auf.
- Die Befehlssteuereinheit 1 steuert Befehle und führt sie aus. Diese Einheit weist einen oder mehrere Sätze von Pipelines für arithmetische Operationen auf, die durch das Arithmetikeinheit-Zählregister 11 (das später beschrieben wird) festgelegt werden. In den mehreren Pipelines für arithmetische Operationen werden die identischen arithmetischen Operationen parallel ausgeführt. Wenn die Befehlssteuereinheit 1 einen Speicheradressierungsbefehl ausführt, wird eine Speicherzugriffsanforderung ausgegeben, und Zugriffsdaten, z.B. ein Anforderungssignal, eine Anforderungsadresse, ein Zwischenelementabstand der Vektordaten im Speicher und die Anzahl der Elemente der Vektordaten, werden an die Speicherzugriffssteuereinheit 2 über einen Pfad 101 übergeben.
- Die Speicherzugriffssteuereinheit 2 steuert den Zugriff auf den Speicher 3 entsprechend den von der Befehlssteuereinheit 1 über den Pfad 101 übergebenen Zugriffsdaten. Die Anzahl der Elemente der Vektordaten wird über einen Pfad 113 an die Schiebeschaltung 13 übergeben, ein Zugriffsstart-Signal für den Speicher 3 wird über einen Pfad 115 an das Register 14 und den Zugriffszeitzähler 15 übergeben, und ein Zugriff-läuft- Signal für den Speicher 3 wird über einen Pfad 118 an den Komparator 16 übergeben.
- Der Speicher 3 besteht aus mehreren Bänken und ist über einen Pfad 102 durch mehrere Kanäle mit der Speicherzugriffssteuereinheit 2 verbunden.
- Das Arithmetikeinheit-Zählregister 11 hält die Anzahl der Sätze von Pipelines für arithmetische Operationen in der Befehlssteuereinheit 1. Ein Wert wird in das Register 11 nach Initialisierung des Systems über eine (nicht dargestellte) Leitung eingesetzt. Der gehaltene Wert wird über einen Pfad 111 an die Schiebeschaltung 13 übergeben.
- Das Speicherkanal-Zählregister 12 hält die Anzahl der Speicherkanäle zwischen der Speicherzugriffssteuereinheit 2 und dem Speicher 3. Ein Wert wird in das Register 12 nach Initialisierung des Systems über eine (nicht dargestellte) Leitung eingesetzt. Der gehaltene Wert wird über einen Pfad 112 an die Schiebeschaltung 13 übergeben.
- Die Schiebeschaltung 13 empfängt die Anzahl der Elemente der Vektordaten von der Speicherzugriffssteuereinheit 2 über den Pfad 113. Die übergebenen Daten werden auf der Grundlage der Anzahl der gleichzeitig zugänglichen Daten, die entsprechend der über den Pfad 111 übergebenen Anzahl der Sätze von Pipelines für arithmetische Operationen und der über den Pfad 112 übergebenen Anzahl der Speicherkanäle festgelegt ist, als eine Schiebezahl nach rechts verschoben. Wenn die verschobenen Bits ein Bit "1" enthalten, wird das Ergebnis der Verschiebung um "1" erhöht, um einen Zeitabschnitt zu ermitteln, der erforderlich ist, wenn kein Bankkonflikt zwischen Zugriffsoperationen der Elemente, die gerade auf die Vektordaten zugreifen, besteht. Der ermittelte Zeitabschnitt wird über einen Pfad 114 an das Register 14 übergeben.
- Das Register 14 hält den Zeitabschnitt, der erforderlich ist, wenn während des Zugriffs auf die Vektordaten kein Bankkonflikt zwischen den die Vektordaten bildenden Elementen besteht und der über den Pfad 114 übergeben worden ist. Das Register 14 wird in einem Takt gesetzt, wo ein über einen Pfad 115 übergebenes Zugriffsstart-Signal auf "1" gesetzt wird. Der Inhalt des Registers 14 wird über einen Pfad 116 an den Komparator 16 übergeben.
- Der Zugriffszeitzähler 15 wird als Antwort auf das über den Pfad 115 übergebene Zugriffsstart-Signal auf "0" zurückgesetzt. Danach wird der Zähler 15 bei jedem Zyklus um eins heraufgesetzt. Der Inhalt des Zählers 15 wird über einen Pfad 117 an den Komparator 16 übergeben.
- Der Komparator 16 vergleicht den Zeitabschnitt, der erforderlich ist, wenn kein Bankkonflikt besteht, wobei diese Zeitdaten über den Pfad 116 übergeben werden, mit einem Zeitabschnitt, der nach dem Beginn des Zugriffs vergangen ist, wobei diese Zeitdaten über den Pfad 117 übergeben werden. Während eines Zeitabschnitts, wo der nach dem Beginn des Zugriffs vergangene Zeitabschnitt größer oder gleich dem Zeitabschnitt ist, der erforderlich ist, wenn kein Bankkonflikt besteht, und das über einen Pfad 118 übergebene Zugriff-läuft-Signal auf "1" gesetzt ist, wird ein Pfad 119 auf "1" gesetzt, und das Vergleichsergebnis wird an den Bankwartezeitzähler 17 ausgegeben.
- Der Bankwartezeitzähler 17 wird bei jedem Zyklus um eins heraufgesetzt als Antwort auf ein Signal, das anzeigt, daß der nach dem Beginn des Zugriffs vergangene Zeitabschnitt, wobei diese Zeitdaten über den Pfad 119 übergeben werden, den Zeitabschnitt, der erforderlich ist, wenn kein Bankkonflikt besteht, überschreitet. Der Bankwartezeitzähler 17 stellt eine Wartezeit dar, die auf den Bankkonflikt zurückzuführen ist.
- Fig. 2 stellt eine ausführliche Anordnung der in Fig. 1 dargestellten Speicherzugriffssteuereinheit 2 dar.
- Ein Anforderungssignal, eine Anforderungsadresse, ein Zwischenelementabstand der Vektordaten und die Anzahl der Elemente der Vektordaten werden von Pfaden 101-1 bis 101-4 übergeben und in Register 51, 53, 54 bzw. 55 eingesetzt. Das Register 51 hält das Anforderungssignal nur während eines Zyklus und weist den Beginn des Zugriffs auf die Vektordaten über den Pfad 115 an. Ein Zugriff-läuft-Flag 52 wird ebenfalls durch das Register 51 gesetzt. Das Zugriff-läuft-Flag 52 hält "1", bis es als Antwort auf ein über einen Pfad 205 übergebenes Zugriffsende-Signal zurückgesetzt wird. Der Inhalt des Flags 52 wird über den Pfad 118 an einen Decodierer 56 übergeben und wird außerdem an den in Fig. 1 dargestellten Komparator 16 übergeben. Eine Steueroperation wird über eine (nicht dargestellte) Leitung ausgeführt, so daß während eines Abschnitts, wo das Zugriff-läuft-Flag 52 auf "1" gesetzt ist, kein Anforderungssignal über den Pfad 101-1 übergeben wird.
- Die Anforderungsadresse stellt eine Adresse des ersten Elements der Vektordaten dar und wird vom Register 53 über einen Pfad 201 an einen Adreßaddierer 59 übergeben. Der Adreßaddierer 59 addiert über einen Pfad 202 übergebene Zwischenelementabstände zur Anforderungsadresse, um eine Adresse jedes Elements zu berechnen. Der Inhalt des Addierers 59 wird über den Pfad 102-2 an den Speicher 3 übergeben. Der Adreßaddierer 59 ist über mehrere Kanäle mit dem Speicher 3 verbunden. Eine Adresse wird in Einheiten von Kanälen erzeugt. Die Adresse des ersten Elements, auf das im nachfolgenden Takt zugegriffen wird, wird erzeugt, indem ein Wert, der durch Multiplizieren des Zwischenelementabstands mit der Anzahl der gleichzeitig zugänglichen Elemente, die über den Pfad 203 übergeben wird, ermittelt wird, zur Adresse des ersten Elements im vorangegangenen Takt addiert wird. Ebenso werden die Adressen der die Vektordaten bildenden Elemente erzeugt, bis die Adresse des letzten Elements erzeugt worden ist, und der Inhalt wird an den Speicher 3 übergeben. Die Anzahl der gleichzeitig zugänglichen Elemente kann durch Decodieren des Zwischenelementabstands durch den Decodierer 56 ermittelt werden.
- Der Decodierer 56 decodiert den über den Pfad 202 übergebenen Zwischenelementabstand. In jedem Zyklus wird entsprechend einer Beziehung zwischen dem Zwischenelementabstand und der Anzahl der Bänke im Speicher auf die gleiche Anzahl von Elementen zugegriffen. In diesem Fall wird diese Beziehung davon abgeleitet, ob der Zwischenelementabstand relativ teilerfremd mit der Anzahl der Bänke im Speicher ist. Die Anzahl der gleichzeitig zugänglichen Elemente, die keinen Bankkonflikt zwischen den Elementen verursachen, wird berechnet. Gleichzeitig wird ein Zeitintervall berechnet, in dem auf den Speicher 3 zugegriffen werden kann. Die Anzahl der gleichzeitig zugänglichen Elemente wird über einen Pfad 203 an einen Zähler für die restlichen Elemente 57 und an den Adreßaddierer 59 übergeben.
- Der Decodierer 56 erzeugt einen Anforderungstakt bezüglich des Speichers 3 unter Verwendung eines Zeitintervalls, in dem auf den Speicher zugegriffen werden kann, wie z.B. in der offengelegten Japanischen Patentschrift 60-57447 offenbart. Der Anforderungstakt wird über einen Pfad 102-1 an den Speicher 3, einen Bank-besetzt-Zähler 58 und den Zähler für die restlichen Elemente 57 übergeben. Der Anforderungstakt wird nur während eines Abschnitts, wo das Zugriff-läuft-Flag 52 auf "1" gesetzt ist, auf "1" gesetzt, und der Zugriff auf den Speicher 3 kann in der Praxis nur begonnen werden, wenn ein Wert im Bank-besetzt-Zähler 58 auf "0" gesetzt ist.
- Der Zähler für die restlichen Elemente 57 überwacht die Anzahl der zu verarbeitenden restlichen Elemente. Der Zähler 57 empfängt die Anzahl der Elemente über den Pfad 113. Die Anzahl der Zugriffsoperationen für den Speicher 3 wird entsprechend der über den Pfad 203 übergebenen Anzahl der gleichzeitig zugänglichen Elemente ermittelt, und die ermittelte Anzahl wird als Anfangswert in den Zähler 57 eingesetzt. Der Wert wird bei jedem über den Pfad 102-1 an den Speicher 3 übergebenen Anforderungstakt um eins heruntergesetzt. Wenn der Zähler 57 feststellt, daß der Wert auf "0" gesetzt ist, d.h. daß der Zähler auf "1" gesetzt ist und der Pfad 102-1 auf "1" gesetzt ist, wird das Zugriffsende-Signal auf einem Pfad 205 auf "1" gesetzt, und das Zugriff-läuft-Flag 52 wird zurückgesetzt.
- Eine Bankzykluszeit wird im Bank-besetzt-Zähler 58 bei jeder an den Speicher 3 übergebenen Anforderung als Anfangswert gesetzt. Der Wert wird in jedem Zyklus um eins heruntergesetzt. Wenn der Wert auf "0" gesetzt ist, sind alle Bänke nicht besetzt, und ein 1-Bit-Ausgangssignal aus dem Zähler 58 wird an den Decodierer 56 übergeben.
- Nit der oben erläuterten Anordnung wird nachfolgend eine Operation in der ersten Ausführungsform mit Bezug auf Zeitdiagramme beschrieben. Zusätzlich wird angenommen, daß in dieser Ausführungsform die Anzahl der Speicherkanäle 2 ist, die Anzahl der Sätze von Pipelines für arithmetische Operationen 2 ist, die Anzahl der Bänke im Speicher 16 (8 für jeden Kanal) ist und eine Bankzykluszeit von 8 Zyklen gegeben ist. Es wird angenommen, daß jede Bank eine Breite von 8 Byte aufweist. Das heißt, es kann maximal auf zwei Elemente gleichzeitig zugegriffen werden.
- Fig. 3 stellt eine Operation dar, wo auf Vektordaten mit einem Zwischenelementabstand von 8 Byte zugegriffen wird. Die Anzahl der Elemente ist 8. Wenn von der Befehlssteuereinheit 1 während eines Zeitintervalls T&sub0; ein Anforderungssignal über den Pfad 101-1 an die Speicherzugriffssteuereinheit 2 übergeben wird, wird das Register 51 auf "1" gesetzt, und eine Startadresse, ein Zwischenelementabstand und die Anzahl der Elemente werden in die Register 53, 54 bzw. 55 eingesetzt.
- Da das Register 51 während eines Zeitintervalls T&sub1; auf "1" gesetzt wird, wird durch den Pfad 115 das Zugriff-läuft- Flag 52 gesetzt. Außerdem wird ein Zeitabschnitt, der erforderlich ist, wenn kein Bankkonflikt besteht, in das Register 14 eingesetzt. Da die maximale Anzahl der gleichzeitig zugänglichen Elemente 2 ist, wird zu diesem Zeitpunkt in das Register 14 ein Wert "4" eingesetzt, der durch Dividieren der Anzahl der Elemente "8" durch 2 ermittelt wird. Außerdem wird der Zugriffszeitzähler 15 gelöscht.
- Danach wird der Zugriffszeitzähler 15 während der Zeitintervalle T&sub2;, T&sub3;, T&sub4;, ... um eins heruntergesetzt, und der im Zähler 15 gesetzte Wert ist der gleiche wie der während des Zeitintervalls T&sub6; im Register 14 gehaltene Wert "4". Da jedoch der Zugriff auf den Speicher während vier Zyklen, d.h. während der Zeitintervalle T&sub2;, T&sub3;, T&sub4; und T&sub5;, abgeschlossen wird, wird das Zugriff-läuft-Flag 52 während des Zeitintervalls T&sub6; auf "0" zurückgesetzt, und ein Ausgangssignal vom Komparator 16 wird ungültig. Daher wird, wenn auf die Vektordaten mit dem Zwischenelementabstand von 8 Byte zugegriffen wird, der Bankwartezeitzähler 17 nie heraufgesetzt.
- Fig. 4 stellt eine Operation dar, wo auf Vektordaten mit einem Zwischenelementabstand von 32 Byte und vier Elementen zugegriffen wird. Wie in Fig. 3 wird von der Befehlssteuereinheit 1 während eines Zeitintervalls T&sub0; ein Anforderungssignal über den Pfad 101-1 übergeben und eine Startadresse, ein Zwischenelementabstand und die Anzahl der Elemente werden in die Register 53, 54 bzw. 55 eingesetzt.
- Das Zugriff-läuft-Flag 52 wird während eines Zeitintervalls T&sub1; gesetzt, und in das Register 14 wird ein Wert "2" eingesetzt, der durch Dividieren der Anzahl der Elemente "4" durch die maximale Anzahl der gleichzeitig zugänglichen Elemente ermittelt wird. Außerdem wird der Zugriffszeitzähler 15 während des Zeitintervalls T&sub1; auf "0" zurückgesetzt.
- Der Zugriffszeitzähler 15 wird von einem Zeitintervall T&sub2; an mit jedem Zyklus um eins heraufgesetzt und während eines Zeitintervalls T&sub3; von "1" auf "2" heraufgesetzt. Danach wird ein Wert, der größer ist als "2", in den Zähler 15 eingesetzt, bis der Zugriff auf die nächsten Vektordaten begonnen wird. Wenn der Zwischenelementabstand mit 32 Byte gegeben ist, kann während zweier Zyklen unter den gegebenen Umständen, nämlich der Anzahl der Bänke und der Bankzykluszeit, nur auf ein Element zugegriffen werden. In der Praxis wird der Zugriff auf jede vierte Bank ausgeführt, so daß der Zugriff wieder auf die erste Bank erfolgt, nachdem auf vier Elemente zugegriffen wurde. Daher tritt, wenn auf jedes Element in jedem zweiten Zyklus zugegriffen wird, keinerlei Bankkonflikt zwischen zwei Elementen auf, weil die Bankzykluszeit mit 8 Zyklen gegeben ist.
- Aus diesem Grund wird der Zähler für die restlichen Elemente 57 als Antwort auf die erste Anforderung an den Speicher auf dem Pfad 102-1 während des Zeitintervalls T&sub2; um eins heruntergesetzt. Danach wird der Zähler 57 alle zwei Zyklen um eins heruntergesetzt. Wenn die letzte Anforderung während eines Zeitintervalls T&sub8; an den Speicher übergeben worden ist, wird der Zähler auf "0" gesetzt. Daher wird das Zugriff-läuft- Flag 52 während eines Zyklus vom Zeitintervall T&sub2; zum Zeitintervall T&sub8; auf "1" gesetzt. Außerdem wird während eines Abschnitts, in dem während des Zyklus vom Zeitintervall T&sub2; bis zum Zeitintervall T&sub8; ein im Zugriffszeitzähler 15 gesetzter Wert größer oder gleich einem im Register 14 gehaltenen Wert "2" ist, d.h. eines Abschnitts von 5 Zyklen vom Zeitintervall T&sub4; bis zum Zeitintervall T&sub8;, der Bankwartezeitzähler 17 heraufgesetzt. Von einem Zeitintervall T&sub9; an ist der Wert am Zähler 17 um "5" heraufgesetzt.
- In der Praxis sind aufgrund eines Bankkonflikts 7 Zyklen für den Zugriff erforderlich, obwohl nur 2 Zyklen erforderlich sind, wenn kein Bankkonflikt besteht. Ein z.B. für die Bänke erforderlicher Zeitabschnitt ist mit 5 Zyklen gegeben, und dieser Wert wird im Bankwartezeitzähler 17 durch Summieren ermittelt.
- Fig. 5 stellt eine Anordnung einer Datenverarbeitungsvorrichtung entsprechend einer zweiten erfindungsgemäßen Ausführungsform dar. Diese Vorrichtung weist eine Befehlssteuereinheit 1, eine Speicherzugriffssteuereinheit 2a, einen Speicher 3, ein Arithmetikeinheit-Zählregister 11, ein Speicherkanal-Zählregister 12, eine Schiebeschaltung 13, ein Register 14, einen Zugriffszeitzähler 15, einen Subtrahierer 16a und ein Bankwartezeitregister 17a auf. Es werden nachstehend nur Unterschiede zwischen der ersten und zweiten Ausführungsform beschrieben.
- Die Speicherzugriffssteuereinheit 2a übergibt ein Zugriffsende-Signal für den Speicher 3 über einen Pfad 118a an das Bankwartezeitregister 17a.
- Der Inhalt des Registers 14 wird über einen Pfad 116 an den Subtrahierer 16a übergeben. Der Inhalt des Zugriffszeitzählers 15 wird über einen Pfad 117 an den Subtrahierer 16a übergeben. Der Subtrahierer 16a subtrahiert einen Zeitabschnitt, der erforderlich ist, wenn kein Bankkonflikt besteht, wobei diese Zeitdaten über den Pfad 116 übergeben werden, von einer Zeit, die nach dem Beginn des Zugriffs vergangen ist, wobei diese Zeitdaten über den Pfad 117 übergeben werden, und diese Differenz wird über einen Pfad 119 an das Bankwartezeitregister 17a übergeben. Das Bankwartezeitregister 17a addiert die Differenz zwischen der Zeit, die nach dem Beginn des Zugriffs vergangen ist, wobei diese Zeitdaten über den Pfad 117 übergeben werden, und dem Zeitabschnitt, der erforderlich ist, wenn kein Bankkonflikt besteht, zu einem vom Register 17a gehaltenen Wert. Außerdem wird das Register 17a bei einem über den Pfad 118a übergebenen Zugriffsende-Takt gesetzt, um einen aufgrund eines Bankkonflikts verzögerten Zeitabschnitt durch Summieren zu ermitteln.
- Fig. 6 stellt eine ausführliche Anordnung der in Fig. 5 dargestellten Speicherzugriffssteuereinheit 2a dar. Es werden nachstehend nur Unterschiede in der Speicherzugriffssteuereinheit zwischen der ersten und zweiten Ausführungsform beschrieben.
- Ein Zugriff-läuft-Flag 52 hält "1", bis es als Antwort auf ein über einen Pfad 205 übergebenes Zugriffsende-Signal zurückgesetzt wird. Der Inhalt des Flags 52 wird über einen Decodierer 56 an einen Pfad 205 übergeben.
- Wenn der Zähler für die restlichen Elemente 57 feststellt, daß sein Wert auf "0" gesetzt ist, wird ein Zugriffsende-Flag 60 gesetzt. Das Zugriffsende-Flag 60 ist ein Flipflop zum Halten des Zugriffsende-Signals vom Pfad 205 während eines Zyklus. Der Inhalt des Flags 60 wird über den Pfad 118a an das Bankwartezeitregister 17a übergeben.
- Mit der oben dargestellten Anordnung wird nachfolgend eine Operation in der zweiten Ausführungsform mit Bezug auf die Zeitdiagramme beschrieben. Es wird angenommen, daß in dieser Ausführungsforn die Anzahl der Speicherkanäle 2 ist, die Anzahl der Sätze von Pipelines für arithmetische Operationen 2 ist, die Anzahl der Bänke im Speicher 16 (8 für jeden Kanal) ist und wie in der ersten Ausführungsform eine Bankzykluszeit von 8 Zyklen gegeben ist. Außerdem wird angenommen, daß jede Bank eine Breite von 8 Byte aufweist. Das heißt, es kann maximal auf zwei Elemente gleichzeitig zugegriffen werden.
- Fig. 7 stellt eine Operation dar, wo auf Vektordaten mit einem Zwischenelementabstand von 8 Byte zugegriffen wird. Die Anzahl der Elemente ist 8. Wenn von der Befehlssteuereinheit 1 während eines Zeitintervalls T&sub0; ein Anforderungssignal über den Pfad 101-1 an die Speicherzugriffssteuereinheit 2a übergeben wird, wird ein Register 51 auf "1" gesetzt, und eine Startadresse, ein Zwischenelementabstand und die Anzahl der Elemente werden in die Register 53, 54 bzw. 55 eingesetzt.
- Da das Register 51 während eines Zeitintervalls T&sub1; auf "1" gesetzt wird, wird das Zugriff-läuft-Flag 52 durch einen Pfad 115 gesetzt. Außerdem wird ein Zeitabschnitt, der erforderlich ist, wenn kein Bankkonflikt besteht, in das Register 14 eingesetzt. Da die maximale Anzahl der gleichzeitig zugänglichen Elemente 2 ist, wird zu diesem Zeitpunkt in das Register 14 ein Wert "4" eingesetzt, der durch Dividieren der Anzahl der Elemente "8" durch 2 ermittelt wird. Außerdem wird der Zugriffszeitzähler 15 gelöscht.
- Wenn der Zwischenelementabstand mit 8 Byte gegeben ist, wird mit jedem Zyklus über einen Pfad 102-1 ein Anforderungssignal an den Speicher 3 übergeben. Daher wird die letzte Anforderung während eines Zeitintervall T&sub5; übergeben. Da der Zähler für die restlichen Elemente 57 in diesem Takt auf "1" gesetzt ist, wird das Zugriffsende-Signal auf dem Pfad 205 auf "1" gesetzt, und das Zugriffsende-Flag 60 wird auf "1" gesetzt. Daher wird während eines Zeitintervalls T&sub6;, der der nachfolgende Zyklus ist, eine Differenz zwischen dem im Zugriffszeitzähler 15 gesetzten Wert und demjenigen im Register 14 an das Bankwartezeitregister 17a übergeben. Der im Zugriffszeitzähler 15 gesetzte Wert ist nur "4", obwohl er mit jedem Zyklus von einem Zeitintervall T&sub2; an um "1" heraufgesetzt wird. Eine Differenz in den Werten zwischen dem Zähler 15 und dem Register 14 ist "0", und der im Bankwartezeitregister 17a gesetzte Wert wird nicht geändert.
- Fig. 8 stellt eine Operation dar, wo auf Vektordaten mit einem Zwischenelementabstand von 32 Byte und vier Elementen zugegriffen wird. Wie in Fig. 7 wird von der Befehlssteuereinheit 1 während eines Zeitintervalls T&sub0; ein Anforderungssignal über den Pfad 101-1 übergeben, und eine Startadresse, ein Zwischenelementabstand und die Anzahl der Elemente werden in die Register 53, 54 bzw. 55 eingesetzt.
- Das Zugriff-läuft-Flag 52 wird während eines Zeitintervalls T&sub1; gesetzt, und in das Register 14 wird ein Wert "2" eingesetzt, der durch Dividieren der Anzahl der Elemente "4" durch die maximale Anzahl der gleichzeitig zugänglichen Elemente, d.h. "2", ermittelt wird. Außerdem wird der Zugriffszeitzähler 15 während des Zeitintervalls T&sub1; auf "0" zurückgesetzt.
- Wenn der Zwischenelementabstand mit 32 Byte gegeben ist, kann während zweier Zyklen unter den gegebenen Umständen, nämlich der Anzahl der Bänke und der Bankzykluszeit, nur auf ein Element zugegriffen werden. In der Praxis wird der Zugriff auf jede vierte Bank ausgeführt, so daß der Zugriff wieder auf die erste Bank erfolgt, nachdem auf vier Elemente zugegriffen wurde. Daher tritt, wenn auf jedes Element in jedem zweiten Zyklus zugegriffen wird, keinerlei Bankkonflikt zwischen zwei Elementen auf, weil die Bankzykluszeit mit 8 Zyklen gegeben ist.
- Aus diesem Grund wird, nachdem während des Zeitintervalls T&sub1; ein Wert "4", der die Anzahl der Elemente darstellt, in den Zähler für die restlichen Elemente 57 eingesetzt worden ist, der Zähler 57 mit jeder Ausgabe eines über den Pfad 102-1 an den Speicher 3 übergebenen Anforderungssignals um eins heraufgesetzt. Der Wert im Zähler 57 wird während eines Zeitintervalls T&sub8; auf "1" gesetzt. Das letzte Anforderungssignal wird an den Speicher 3 übergeben, und das Zugriffsende-Flag 60 wird gesetzt. Andererseits wird der Zugriffszeitzähler 15 mit jedem Zyklus von T&sub2; an um eins heraufgesetzt, und der Wert im Zähler 15 wird während eines Zeitintervalls T&sub9; auf "7" gesetzt. Daher wird während des Zeitintervalls T&sub9; eine Differenz "5" zwischen einem Wert "7" im Zugriffszeitzähler 15 und einem vom Register 14 gehaltenen Wert "2" an das Bankwartezeitregister 17a übergeben.
- In der Praxis sind aufgrund eines Bankkonflikts 7 Zyklen für den Zugriff erforderlich, obwohl nur 2 Zyklen erforderlich sind, wenn kein Bankkonflikt besteht, und ein Zeitabschnitt, der erforderlich ist, um auf den Bankzugriff zu warten, d.h. 5 Zyklen, wird im Bankwartezeitzähler 17a durch Summieren ermittelt.
- Wie oben beschrieben worden ist, wird erfindungsgemäß beim Zugriff auf Vektordaten der Zeitabschnitt, der erforderlich ist, wenn kein Bankkonflikt zwischen den Elementen besteht, mit einer Zeit verglichen, die nach dem Beginn des Zugriffs in der Praxis vergangen ist. Wenn die vergangene Zeit gleich dem Zeitabschnitt ist oder ein Zähler, der um eine Differenz zwischen den beiden Zeitabschnitten heraufgesetzt wird, angeordnet ist oder eine Einrichtung zum Subtrahieren des Zeitabschnitts, der erforderlich ist, wenn kein Bankkonflikt zwischen den Elementen in den Vektordaten besteht, von einer in der Praxis vom Beginn des Zugriffs bis zum Zugriffsende erforderlichen Zeit angeordnet ist, kann eine Zeitverzögerung, die auf den Bankkonflikt zwischen Elementen in den Vektordaten beim Zugriff auf die Vektordaten zurückzuführen ist, gezählt werden.
Claims (2)
1. Datenverarbeitungsvorrichtung zum Zugriff auf
Vektordaten aus einem Speicher mit mehreren Bänken, um eine
Vektorarithmetikoperation auszuführen, gekennzeichnet durch:
eine Berechnungseinrichtung (11-14) zum Berechnen eines
Mindestzeitabschnitts, der erforderlich ist, um auf alle
Elemente, die die Vektordaten bilden, zuzugreifen, wenn auf die
Vektordaten zugegriffen wird, wobei der Mindestzeitabschnitt
für den Fall berechnet wird, wo kein Bankkonflikt besteht;
eine erste Zähleinrichtung (15) zum Zählen einer Zeit,
die vergeht, nachdem der Zugriff auf die Vektordaten begonnen
worden ist;
eine Vergleichseinrichtung (16) zum Vergleichen eines
von der Berechnungseinrichtung berechneten Werts mit einem von
der ersten Zähleinrichtung ermittelten Wert; und
eine zweite Zähleinrichtung (17), die bei jedem Zyklus
um eins heraufgesetzt wird, wenn das Vergleichsergebnis der
Vergleichseinrichtung (16) anzeigt, daß der von der ersten
Zähleinrichtung (15) ermittelte Wert den von der
Berechnungseinrichtung (11-14) berechneten Wert übersteigt, so daß die
zweite Zähleinrichtung eine Wartezeit infolge von
Bankkonflikten darstellt.
2. Datenverarbeitungsvorrichtung zum Zugriff auf
Vektordaten aus einem Speicher mit mehreren Bänken, um eine
Vektorarithmetikoperation auszuführen, gekennzeichnet durch:
eine Berechnungseinrichtung (11-14) zum Berechnen eines
Mindestzeitabschnitts, der erforderlich ist, um auf alle
Elemente, die die Vektordaten bilden, zuzugreifen, wenn auf die
Vektordaten zugegriffen wird, wobei der Mindestzeitabschnitt
für den Fall berechnet wird, wo kein Bankkonflikt besteht;
eine Zähleinrichtung (15) zum Zählen einer Zeit, die
vergeht, nachdem der Zugriff auf die Vektordaten begonnen
worden ist;
eine Subtrahiereinrichtung (16a) zum Berechnen einer
Differenz zwischen einem von der Zähleinrichtung (15)
ermittelten Wert und einem von der Berechnungseinrichtung (11-14)
berechneten Wert; und
eine Summiereinrichtung zum direkten Laden der von der
Subtrahiereinrichtung (16a) ermittelten tatsächlichen
Differenz (119) in ein Register (17a) als Antwort auf ein Signal (118a),
das das Ende des Zugriffs auf die Vektordaten anzeigt.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP63279410A JP2674809B2 (ja) | 1988-11-07 | 1988-11-07 | 情報処理装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
DE68925572D1 DE68925572D1 (de) | 1996-03-14 |
DE68925572T2 true DE68925572T2 (de) | 1996-06-05 |
Family
ID=17610708
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE68925572T Expired - Fee Related DE68925572T2 (de) | 1988-11-07 | 1989-11-06 | Vektorprozessor |
Country Status (5)
Country | Link |
---|---|
US (1) | US5251309A (de) |
EP (1) | EP0372231B1 (de) |
JP (1) | JP2674809B2 (de) |
CA (1) | CA2001886C (de) |
DE (1) | DE68925572T2 (de) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
IL96808A (en) * | 1990-04-18 | 1996-03-31 | Rambus Inc | Introductory / Origin Circuit Agreed Using High-Performance Brokerage |
US6324120B2 (en) | 1990-04-18 | 2001-11-27 | Rambus Inc. | Memory device having a variable data output length |
US6751696B2 (en) | 1990-04-18 | 2004-06-15 | Rambus Inc. | Memory device having a programmable register |
US6539440B1 (en) | 1998-11-16 | 2003-03-25 | Infineon Ag | Methods and apparatus for prediction of the time between two consecutive memory accesses |
US6216178B1 (en) | 1998-11-16 | 2001-04-10 | Infineon Technologies Ag | Methods and apparatus for detecting the collision of data on a data bus in case of out-of-order memory accesses of different times of memory access execution |
US6453370B1 (en) | 1998-11-16 | 2002-09-17 | Infineion Technologies Ag | Using of bank tag registers to avoid a background operation collision in memory systems |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3588837A (en) * | 1968-12-30 | 1971-06-28 | Comcet Inc | Systems activity monitor |
US3577185A (en) * | 1969-10-02 | 1971-05-04 | Ibm | On-line system for measuring the efficiency of replacement algorithms |
US3723975A (en) * | 1971-06-28 | 1973-03-27 | Ibm | Overdue event detector |
US4217636A (en) * | 1976-02-27 | 1980-08-12 | Black Bocs, Ltd. | Computer performance measurement device and process |
KR860001434B1 (ko) * | 1980-11-21 | 1986-09-24 | 후지쑤 가부시끼가이샤 | 데이타 처리시 스템 |
JPS6052468B2 (ja) * | 1982-03-04 | 1985-11-19 | 株式会社東芝 | Dmaバス負荷可変装置 |
JPS6057447A (ja) * | 1983-09-09 | 1985-04-03 | Nec Corp | メモリアクセス制御方式 |
EP0205193B1 (de) * | 1985-06-17 | 1996-10-23 | Nec Corporation | Informationsverarbeitungssystem mit einer Steuerschaltung zum Abwarten einer Registererneuerung und einem Aufnahmemittel des zu erneuernden Registers |
US4745545A (en) * | 1985-06-28 | 1988-05-17 | Cray Research, Inc. | Memory reference control in a multiprocessor |
JPS62180470A (ja) * | 1986-02-04 | 1987-08-07 | Hitachi Ltd | ベクトル処理装置 |
JP2806524B2 (ja) * | 1988-03-04 | 1998-09-30 | 日本電気株式会社 | ベクトル演算命令発行制御方法 |
-
1988
- 1988-11-07 JP JP63279410A patent/JP2674809B2/ja not_active Expired - Lifetime
-
1989
- 1989-10-31 CA CA002001886A patent/CA2001886C/en not_active Expired - Fee Related
- 1989-11-03 US US07/431,188 patent/US5251309A/en not_active Expired - Fee Related
- 1989-11-06 EP EP89120475A patent/EP0372231B1/de not_active Expired - Lifetime
- 1989-11-06 DE DE68925572T patent/DE68925572T2/de not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
EP0372231A3 (de) | 1993-01-13 |
JP2674809B2 (ja) | 1997-11-12 |
EP0372231B1 (de) | 1996-01-31 |
EP0372231A2 (de) | 1990-06-13 |
CA2001886A1 (en) | 1990-05-07 |
CA2001886C (en) | 1995-12-12 |
DE68925572D1 (de) | 1996-03-14 |
JPH02126365A (ja) | 1990-05-15 |
US5251309A (en) | 1993-10-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE3686789T2 (de) | Vektorverarbeitungsgeraet. | |
DE68922261T2 (de) | Verfahren und Vorrichtung für die Datenübertragung zwischen mehreren Aufgaben in Datenverarbeitungssystemen. | |
DE69031233T2 (de) | Adaptive Arbeitsfolgeplanung für Mehrfachverarbeitungssysteme | |
DE68928530T2 (de) | Modulare Kreuzschienenzwischenverbindungen in einem digitalen Rechner | |
DE69422448T2 (de) | Multi-tasking-steuerungsgerät mit geringem energieverbrauch | |
DE19983330B4 (de) | Computerprozessor mit einem Wiederholsystem mit einem Stufungsabschnitt zum getakteten Verzögern und Verfahren zum Verarbeiten eines Befehls in einem solchen Prozessor | |
DE3850485T2 (de) | Zeitmultiplexvermittlung für Mehrkanal-Verbindungen, welche zwei Zeitvermittlungsspeicher als Rahmenausgleicher verwendet. | |
DE68919539T2 (de) | Datenverarbeitungssystem mit Zugriffsquellen von verschiedenem Durchsatz. | |
DE68917317T2 (de) | Befehlsausgabesteuerung mit vorausschau für einen rechner. | |
DE69025650T2 (de) | Multiprozessorsystem mit Vektorpipelinen | |
DE2809405B2 (de) | Prioritätssteuerschaltung | |
DE3688400T2 (de) | Cachespeicherschaltung geeignet zur verarbeitung einer leseanforderung waehrend der uebertragung eines datenblocks. | |
DE69025524T2 (de) | Vorrichtung und Verfahren zur Steuerung von Speicherzugriffsanforderungen in einem digitalen Datenverarbeitungssystem | |
DE68925572T2 (de) | Vektorprozessor | |
DE69230626T2 (de) | Informationsverarbeitungssystem mit der Fähigkeit zum Betreiben von mehreren Vektorpipelines in zwei unterscheidlichen Wirkungsweisen | |
EP0657044B1 (de) | Verfahren zum betrieb eines rechnersystems mit mindestens einem mikroprozessor und mindestens einem coprozessor | |
DE3851241T2 (de) | Speicheranordnung. | |
DE10063915B4 (de) | Informationsverarbeitungsgerät, das eine Mehrzweckverarbeitung und Transaktionsverarbeitung ausführt | |
DE2706877C2 (de) | Mikroprogramm-Steuereinrichtung | |
DE68928507T2 (de) | Vektordatenverarbeitungsvorrichtung | |
DE3486073T2 (de) | Vektorverarbeitungsgeraet. | |
DE69029250T2 (de) | Pipelinerechner mit einer, jedem Halboperationszyklus alternierenden Schreibsteuerung zur Vermeidung von Zugriffskonflikten in Mehrzweckregistern | |
DE3447530A1 (de) | Vektorprozessor | |
DE69519486T2 (de) | Multiprozessorsystem mit Prioritätsarbiter zur Arbitrierung von Anforderungen aus den Prozessoren | |
DE69225628T2 (de) | Gerät für die orthogonale Transformation für die Videosignalverarbeitung |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8364 | No opposition during term of opposition | ||
8339 | Ceased/non-payment of the annual fee |