DE69323477T2 - Vektorprozessor - Google Patents
VektorprozessorInfo
- Publication number
- DE69323477T2 DE69323477T2 DE69323477T DE69323477T DE69323477T2 DE 69323477 T2 DE69323477 T2 DE 69323477T2 DE 69323477 T DE69323477 T DE 69323477T DE 69323477 T DE69323477 T DE 69323477T DE 69323477 T2 DE69323477 T2 DE 69323477T2
- Authority
- DE
- Germany
- Prior art keywords
- vector
- data
- register
- unit
- address
- 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
- 239000000872 buffer Substances 0.000 claims description 79
- 238000012545 processing Methods 0.000 claims description 23
- 238000000034 method Methods 0.000 description 14
- 238000010586 diagram Methods 0.000 description 13
- 238000012546 transfer Methods 0.000 description 12
- 238000013519 translation Methods 0.000 description 8
- 230000004044 response Effects 0.000 description 5
- 101150087426 Gnal gene Proteins 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000010792 warming Methods 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
-
- 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/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- 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/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
- G06F9/30038—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations using a mask
-
- 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/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
-
- 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/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
- G06F9/30079—Pipeline control instructions, e.g. multicycle NOP
-
- 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
-
- 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/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
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)
- Mathematical Physics (AREA)
- Computing Systems (AREA)
- Complex Calculations (AREA)
Description
- Die vorliegende Erfindung bezieht sich auf eine Vektorverarbeitungsvorrichtung, die eine große Menge an Daten durch eine Anweisung verarbeitet.
- Eine Vektorverarbeitungsvorrichtung weist eine Vielzahl von Pipelines auf und führt einen komplexen Prozeß mittels der Pipelines aus, wodurch eine große Menge an Daten mit einer hohen Geschwindigkeit verarbeitet werden kann. Normalerweise enthält die Vektorverarbeitungsvorrichtung eine Anweisungsausführeinheit, die aus einer Vektoreinheit und einer Skalar- oder Scaler-Einheit (engl. scaler unit) besteht, eine Hauptspeichereinheit und eine Speichersteuereinheit. Die Vektoreinheit enthält ein Vektorregister und Operation-Pipelines für Addition, Multiplikation und Division. Zu verarbeitende Daten, d. h. Operationsdaten werden von der Hauptspeichereinheit gelesen und in einem in der Speichersteuereinheit vorgesehenen Datenpuffer gespeichert. Die Operationsdaten werden danach von dem Datenpuffer gelesen und in das Vektorregister geladen. Die Operationsdaten werden durch die Operation- Pipelines gemäß einer Vektoranweisung bearbeitet. Das Ergebnis der Operation wird von der Vektoreinheit übertragen und in dem Datenpuffer in der Speichersteuereinheit gespeichert. Das Operationsergebnis wird danach in der Hauptspeichereinheit gespeichert.
- Vor kurzem hat die Vektorverarbeitungsvorrichtung einen Verkettungsprozeß für Vektorregister verwendet, um Daten mit einer hohen Geschwindigkeit zu verarbeiten. Das Verketten von Vektorregistern ist derart, daß, wenn auf ein Vektorregister, in dem das Operationsergebnis einer vorhergehenden Vektoranweisung gespeichert ist, durch eine nachfolgende Vektoranweisung Bezug genommen wird, eine Ausführung der nachfolgenden Vektoranweisung gestartet wird, bevor die vorhergehende Anweisung alle Daten in das Vektorregister schreibt.
- Das Verketten von Vektorregistern ist mit einem zu lösenden Hauptproblem verbunden. Das heißt, wenn die vorhergehende Vektoranweisung eine Ladeanweisung ist, werden infolge einer Kollision, die auftritt, wenn auf die Hauptspeichereinheit zugegriffen wird, Vektordaten nicht an die die nachfolgende Vektoranweisung ausführenden Operation-Pipelines in jedem Zyklus geliefert. In diesem Fall kann der Prozeß nicht korrekt ausgeführt werden. Um die obige Situation zu vermeiden, ist es notwendig, eine Steuerung derart durchzuführen, daß die Operation-Pipelines, die die nachfolgende Vektoranweisung ausführen, und eine Datenübertragung-Pipeline vorübergehend am Arbeiten gehindert werden und daher das Lesen von Daten von den Vektorregistern unterbrochen wird. Die vorliegende Erfindung wurde vor dem obigen gedanklichen Hintergrund gemacht.
- Gemäß der vorliegenden Erfindung wird eine Vektorverarbeitungsvorrichtung geschaffen mit: einer Vektoreinheit, die Operation-Pipelines und ein mit den Operation-Pipelines verbundenes Vektorregister aufweist; einer Speichereinheit, die durch die Operation-Pipelines und die Ergebnisse von Operationen zu betreiben ist, die von den Operation-Pipelines erhalten werden; einer Speichersteuereinheit mit einem Datenpuffer, der zwischen dem Vektorregister und der Speichereinheit vorgesehen ist; einem ersten Mittel mit einem Zähler zum Erhöhen oder Inkrementieren eines Zählwertes jedesmal, wenn von dem Vektorregister Daten in den Datenpuffer geschrieben werden, und Vermindern oder Dekrementieren des Zählwertes jedesmal, wenn Daten von dort gelesen werden; und einem zweiten Mittel zum Stoppen aller Operationen der Pipelines, wenn der Wert des Zählers unter eine vorbestimmte Schwelle fällt.
- Eine Ausführungsform der vorliegenden Erfindung kann eine Vektorverarbeitungsvorrichtung liefern, in der Datenpuffer effizient verwendet werden und eine Datenübertragung-Pipeline (insbesondere eine Speicher-Pipeline) keine Störung aufweist, wenn es notwendig ist, die Operation von Operation-Pipelines vorübergehend zu stoppen, während eine Vektoranweisung in dem Verkettungszustand der Vektorregister gerade ausgeführt wird. Auf die beiliegenden Zeichnungen wird beispielhaft Bezug genommen, in denen:
- Fig. 1 ein Blockdiagramm der Gesamtstruktur einer Vektorverarbeitungsvorrichtung ist;
- Fig. 2 ein Blockdiagramm der Details der in Fig. 1 gezeigten Vektorverarbeitungsvorrichtung ist;
- Fig. 3 ein Diagramm ist, das eine Kette von Vektorregistern zeigt;
- Fig. 4 ein Blockdiagramm wesentlicher Teile der in Fig. 2 gezeigten Struktur ist;
- Fig. 5 ein Blockdiagramm des Prinzips der vorliegenden Erfindung ist;
- Fig. 6 ein Blockdiagramm einer Ausführungsform der vorliegenden Erfindung ist;
- Fig. 7 ein Flußdiagramm der Operation eines in Fig. 6 gezeigten Anforderungsadreßgenerators ist;
- Fig. 8 ein Flußdiagramm der Operation eines in Fig. 6 gezeigten Register-Lese-Controllers ist;
- Fig. 9 ein Flußdiagramm der Operation eines in Fig. 6 gezeigten Datenpuffer-Gültig-Zählers ist;
- Fig. 10 ein Flußdiagramm der Operation eines in Fig. 6 gezeigten Pipeline-Stop-Steuerprediktors (engl. pipeline stop control predictor) ist;
- Fig. 11 ein Flußdiagramm eines in Fig. 6 gezeigten Puffer-Annulier-Prozessors ist;
- Fig. 12 ein Flußdiagramm der Operation eines in Fig. 6 gezeigten Puffer-Schreib-Controllers ist;
- Fig. 13 ein Zeitsteuerdiagramm der Operation im Stand der Technik und der Operation der Ausführungsform der vorliegenden Erfindung ist; und
- Fig. 14 ein Zeitsteuerdiagramm der Operation der Ausführungsform der vorliegenden Erfindung ist.
- Fig. 1 ist ein Blockdiagramm der Struktur einer Vektorverarbeitungsvorrichtung. Die in Fig. 1 gezeigte Vektorverarbeitungsvorrichtung enthält eine Anweisungsausführeinheit 100, eine Speichersteuereinheit (MCU) 200 und eine Hauptspeicher-(Speicherungs-)-Einheit (MSU) 300. Die Operationsausführeinheit 100 enthält eine Vektoreinheit VU und eine Skalar- oder Scaler-Einheit SU. Die Vektoreinheit VU führt durch eine Anweisung eine aus einer Vielzahl von Elementen bestehende Operation aus. Die Scaler-Einheit SU führt durch eine Anweisung eine aus einem einzigen Element bestehende Operation aus. Die Vektoreinheit VU enthält einen Vektoranweisungsausführungssteuerteil VI, einen Operation-Pipeline-Teil VE und einen Zugriff-Pipeline-Teil VS. Die Scaler-Einheit SU enthält ähnlich einen Scaler-Anweisungsausführungssteuerteil I, einen Scaler-Operationsteil E und ein Zugriffsteil S.
- Adreß- und Speicherdaten (zu speichernde Daten) von der Scaler-Einheit SU werden über die Speichersteuereinheit 200 an die Hauptspeichereinheit 300 gesendet, und Anweisungs- und Ladedaten (zu ladende Daten) werden über die Speichersteuereinheit 200 an die Scaler-Einheit SU gesendet. Adreß- und Speicherdaten von der Vektoreinheit VU werden ähnlich über die Speichersteuereinheit 200 an die Hauptspeichereinheit 300 gesendet, und Ladedaten von der Hauptspeichereinheit 300 werden über die Speichersteuereinheit 200 an die Vektoreinheit VU gesendet.
- Fig. 2 ist ein Blockdiagranmm der Details der in Fig. 1 gezeigten Vektorverarbeitungsvorrichtung. Der Zugriff - Pipeline-Teil VS der Vektoreinheit VU enthält ein Vektorregister 12, ein Maskenregister 14, einen Controller 16 und Datenübertragung-Pipelines 18 und 20. Der Operation-Pipeline- Teil VE enthält eine Addier/Logik-Operation-Pipeline ADD, eine Multiplikation-Pipeline MLT, eine Division-Pipeline DIV und eine Maske-Pipeline MSK. Der in Fig. 1 gezeigte Vektoranweisungsausführungssteuerteil VI ist der Einfachheit halber in Fig. 2 nicht dargestellt. Die Scaler-Operationseinheit E der Scaler-Einheit SU enthält eine Scaler-Operationseinheit 22, und der Zugriffsteil S enthält ein Scaler-Register 24 und einen Puffer 26. Der in Fig. 1 gezeigte Scaler-Anweisungsausführungssteuerteil I ist der Einfachheit halber weggelassen. Die Speichersteuereinheit 200 enthält einen Datenpuffer 30 und einen Controller 32.
- Die in Fig. 2 gezeigte Vektorverarbeitungsvorrichtung arbeitet wie folgt. Eine Ausführung einer Vektoradditionsanweisung wird nun beispielhaft beschrieben. Die Vektoradditionsanweisung VADD wird wie folgt ausgeführt:
- VLADE VR1
- VLADE VR2
- VADD VR1, VR2, VR3
- VSPEICH VR3.
- Am Beginn einer Ausführung der Vektoradditionsanweisung wird die erste Vektorladeanweisung VLADE ausgeführt, und daher werden Daten von der Hauptspeichereinheit 300 über den Datenpuffer 30 der Speichersteuereinheit 200 und die Lade- Pipeline 18 der Vektoreinheit VU in ein Register VR1 geladen, das in dem Vektorregister 12 gebildet ist. Als nächstes wird die zweite Vektorladeanweisung VLADE ausgeführt, und daher werden Daten von der Hauptspeichereinheit 300 über die gleiche Route in ein Register VR2 im Vektorregister 12 geladen. Unter Verwendung der Addition/Logik-Pipeline ADD wird dann die Vektoradditionsanweisung VADD ausgeführt, und daher werden die in dem Register VR1 gespeicherten Daten und die in dem Register VR2 gespeicherten Daten addiert. Das Ergebnis der Additionsoperation wird in einem im Vektorregister 12 gebildeten Register VR3 gespeichert. Die Vektorspeicheranweisung VSPEICH wird schließlich ausgeführt, und daher wird das im Register VR3 gespeicherte Operationsergebnis über die Speicher-Pipeline 20 und den Datenpuffer 30 in der Hauptspeichereinheit 300 gespeichert. Fig. 3 veranschaulicht eine Ausführung der obigen Vektoradditionsanweisung.
- Wie vorher beschrieben wurde, verwendet die Vektorverarbeitungsvorrichtung das Verketten von Vektorregistern, um die Operationsgeschwindigkeit zu verbessern. In dem in Fig. 3 gezeigten Beispiel wird eine Ausführung der Vektoradditionsanweisung VADD gestartet, bevor alle Daten in das Vektorregister durch Ausführung der Vektorladeanweisung VLADE geschrieben sind, die der Vektoradditionsanweisung VADD vorausgeht. Wenn die vorhergehende Vektorladeanweisung während eines Zugreifens der Hauptspeichereinheit 300 mit einer anderen Vektorladeanweisung kollidiert, können in diesem Fall Vektordaten nicht an die Addition/Logik-Pipeline geliefert werden. Dies verhindert die normale Ausführung der Vektoroperation.
- Das obige Problem kann eliminiert werden, indem das Zuführen eines Taktsignals gestoppt wird, das verwendet wird, um Daten von dem Vektorregister 12 zu lesen, so daß das Lesen von Daten unterbrochen wird. Das Stoppen eines Zuführens des Taktsignals beeinflußt den Operation-Pipeline-Teil VE nicht sehr.
- Ein Stoppen des Zuführens des Taktsignals verursacht jedoch das folgende Problem bezüglich der Datenübertragung- Pipelines 18 und 20. Normalerweise wird eine Bedingung für die Speicher-Pipelines bestimmt, in der ein Datenpuffer 30 zwischen der Hauptspeichereinheit 300 und dem Vektorregister 12 vorgesehen ist, und Vektordaten können eindeutig gelesen und während einer vorbestimmten Zahl von Maschinenzyklen an den Datenpuffer 30 gesendet werden. Die vorbestimmte Zahl von Maschinenzyklen entspricht der Zeit, die notwendig ist, um Daten an die Hauptspeichereinheit 300 zu senden, nachdem die Prioritätsordnung einer Ausführung in dem Controller 32 der Speichersteuereinheit 200 bestimmt ist.
- Unter der obigen Bedingung können Daten nicht in den Datenpuffer 30 geschrieben werden, falls das Taktsignal, das verwendet wird, um Daten von dem Vektorpuffer 12 zu lesen, in einem Fall gestoppt wird, in dem zu speichernde Daten von dem Vektorregister 12 gelesen und an den Datenpuffer 30 zur gleichen Zeit gesendet werden, während der Controller 16 der Vektoreinheit VU eine Zugriffsanforderung an die Hauptspeichereinheit 300 sendet, und in dem die im Datenpuffer 30 gespeicherten Daten als Antwort auf einen Empfang eines Schreib- Freigabesignals gelesen werden. Daher ist es nicht möglich, eine solche Operation sicherzustellen, in der Daten bezüglich einer Zugriffsanforderung, die gesendet wurde, oder einer Zugriffsanforderung, die der Prioritätsordnung zugewiesen wurde, innerhalb der vorbestimmten Zahl von Maschinenzyklen in dem Datenpuffer 30 gespeichert werden können. In diesem Fall werden die gespeicherten Daten von den ursprünglichen Daten verschieden werden.
- Alternativ dazu kann es möglich sein, ein Zugreifen von der Vektoreinheit VU auf die Speichersteuereinheit 200 zu stoppen, um das Lesen von Daten von der Speicher-Pipeline zu unterbrechen.
- Fig. 4 ist ein Diagramm der Struktur des Controllers 16 der Vektoreinheit VU, der in Fig. 2 gezeigt ist, in bezug auf eine Zugriffsanforderung (Adreßerzeugung der Hauptspeichereinheit 300). Ein Register-Lese-Steuerteil 34 steuert die Leseoperationen des Vektorregisters 12 und des Maskenregisters 14. Der Register-Lese-Steuerteil 34 enthält einen darin vorgesehenen Pipeline-Stop-Prediktor 36. Wenn der Pipeline-Stop- Prediktor 36 von dem Vektoranweisungsausführungssteuerteil VI ein Alarmwarnsignal für einen Operation-Pipeline-Stop VE- STOP-WARMUNG empfängt, trifft der Prediktor 36 eine Entscheidung, daß es notwendig ist, das Lesen von Daten von dem Vektorregister 12 zu unterbrechen, und erzeugt sofort ein Zugriffsanforderungsstopsignal VE-STOP. Das Operation-Pipeline- Stop-Warnsignal VE-STOP-WARNUNG zeigt eine Situation an, daß es infolge einer Datensenke (engl. drain of data) in dem Verkettungszustand der Vektorregister notwendig ist, die Opera tion der Operation-Pipelines zu stoppen, und daß es notwendig ist, ein Speichern von Daten zu stoppen.
- Die Adreßerzeugung wird mittels eines Distanzwert-Registers 38, eines Beginn-Adresse-Registers 40, eines Volladdierers 42, eines Logische-Adresse-Registers 44, eines Adreßumsetzers oder Adreßübersetzers 46 und eines Reale-Adresse- Registers 48 ausgeführt. Die Beginn-Adresse der Hauptspeichereinheit 300 und der Distanzwert (eine Information, die die Position von Daten angibt, die an allen Bytes entsprechend dem Distanzwert plaziert ist) werden als Startsignale in die Register 40 bzw. 38 geschrieben. Der Volladdierer 42 leitet von den in die Register 38 und 40 geschriebenen Adressen eine logische Adresse ab und schreibt die logische Adresse in ein Register 44. Die logische Adresse wird durch den Adreßübersetzer 46 in eine absolute oder reale Adresse der Hauptspeichereinheit 300 übersetzt und dann in ein Register 48 geschrieben.
- Die in das Register 48 geschriebene reale Adresse wird in einem Adreß-Warteschlangenpuffer 50 in dem Controller 32 der Speichersteuereinheit 200 in einer Warteschlange eingereiht. Der Controller 32 führt einen eine Anforderungsprioritätsordnung bestimmenden Prozeß bezüglich der in einer Warteschlange eingereihten realen Adresse durch und wählt über eine Leseeinheit 52 eine reale Adresse aus.
- Das oben erwähnte Adreßanforderungsstopsignal VE-STOP wird an das Logische-Adresse-Register 44 angelegt und stoppt die Operation des Registers 44. Die logische Adresse kann somit nicht für den Adreßübersetzer 46 verwendet werden, und daher kann die reale Adresse nicht an das Adreß-Warteschlangenregister 50 geliefert werden. Der Pipeline-Stop-Prediktor 36 stoppt ein Ausgeben des Zugriffsanforderungsstopsignals VE-STOP, z. B. wenn eine vorbestimmte Zeit nach Empfangen des Operation-Pipeline-Stop-Warnsignals VE-STOP-WARNUNG verstrichen ist.
- Die in Fig. 4 gezeigte Struktur unterbricht jedoch eine Datenübertragung durch eine Zugriffsanforderung, die nach dem Zugriffsanforderungsstopsignal VE-STOP erzeugt wird und nicht notwendig ist, um eine Ausführung der Datenübertragung zu stoppen. Folglich wird ein verschwenderischer leerer Bereich im Datenpuffer 30 geschaffen, und die Operation der Speicher- Pipeline ist gestört.
- Die vorliegende Erfindung ist soll die obigen Nachteile eliminieren.
- Fig. 5 ist ein Blockdiagramm des Prinzips der vorliegenden Erfindung und zeigt einen wesentlichen Teil der in Fig. 6 gezeigten Vektorverarbeitungsvorrichtung, die später ausführlich beschrieben wird. Um die obigen Nachteile zu eliminieren, enthält die Vektorverarbeitungsvorrichtung der vorliegenden Erfindung eine Vektoreinheit 100A (Fig. 6) mit einer Vielzahl von Pipelines und ein Vektorregister 12 (Fig. 6), das mit den Pipelines verbunden ist, eine Speichereinheit 300 (Fig. 6), die durch die Piplines zu verarbeitende Daten und die Ergebnisse von Operationen speichert, eine Speichersteuereinheit 200A (Fig. 6) mit einem Datenpuffer 30 (Fig. 6), der in dem Vektorregister und der Speichereinheit vorgesehen ist, ein erstes Mittel (Datenpuffer-Gültig-Zähler) 70 zum Zählen der Anzahl von Elementen von Daten, die von dem Vektorregister gelesen und zum Datenpuffer gesendet werden, und ein zweites Mittel (Pipeline-Stop-Prediktor) 72, um in einem Zustand, in dem die Operation-Pipelines über das Vektorregister verkettet sind, eine Zugriffsanforderung von der Vektoreinheit auf die Speichereinheit auf der Basis der durch das erste Mittel gezählten Anzahl von Datenelementen selektiv zu unterbrechen.
- In der Konfiguration, die mit Verweis auf Fig. 4 beschrieben wurde, wird das Senden aller Zugriffsanforderungen gestoppt, wenn eine Datensenke in den Operation-Pipelines in dem Verkettungszustand vorliegt. Gemäß der vorliegenden Erfindung wird es andererseits möglich, nur eine minimale Zahl notwendiger Zugriffsanforderungen zu unterbrechen, indem durch das zweite Mittel das Senden von Zugriffsanforderungen von der Vektoreinheit an die Speichereinheit auf der Grundlage der durch das erste Mittel gezählten Anzahl von Datenstücken in dem Zustand selektiv unterbrochen wird, in dem die Operation-Pipelines über das Vektorregister verkettet sind.
- Fig. 6 ist ein Blockdiagramm einer Vektorverarbeitungsvorrichtung gemäß einer Ausführungsform der vorliegenden Erfindung. In Fig. 6 sind Teilen, die die gleichen wie in Fig. 2 gezeigte Teile sind, die gleichen Bezugsziffern gegeben.
- Die in Fig. 6 gezeigte Vektorverarbeitungsvorrichtung enthält die Vektoreinheit 100A, die Speichersteuereinheit 200A, die Hauptspeichereinheit 300 und eine Scaler-Einheit. Der Einfachheit halber wird die Scaler-Einheit aus Fig. 6 weggelassen.
- Die Vektoreinheit 100A enthält einen Vektoranweisungsausführungssteuerteil 110, einen Controller 16A, das Vektorregister 12, das Maskenregister 14 und Operation-Pipelines. Der Einfachheit halber sind in Fig. 6 die Operation-Pipelines nicht dargestellt, sind aber mit dem Vektorregister 12 und dem Maskenregister 14 wie in Fig. 2 gezeigt verbunden. Der Vektoranweisungsausführungssteuerteil 110 ist mit der nicht dargestellten Scaler-Einheit verbunden und sendet ein Startsignal START und das Operation-Pipeline-Stop-Warnsignal VE- STOP-WARNUNG an den Controller 16A. Der Vektoranweisungsausführungssteuerteil 110 empfängt ferner von dem Controller 16A ein Schreib-Gültig-Signal WV.
- Der Controller 16A enthält einen Anforderungsadreßgenerator 54, einen Register-Schreib-Controller 56, einen Register- Lese-Controller 58, einen Puffer-Schreib-Controller 60 und einen Puffer-Lese-Controller 62. Diese Controller sind durch z. B. jeweilige Mikrocomputer oder einen einzigen Mikrocomputer gebildet und führen Programme aus, die später beschrieben werden.
- Fig. 5, die vorher beschrieben wurde, zeigt die jeweiligen wesentlichen Teile des Anforderungsadreßgenerators 54, des Register-Lese-Controllers 58 und einer eine Anforderungsprioritätsordnung bestimmenden Einheit 64, die später beschrieben wird. Der Anforderungsadreßgenerator 54 enthält das oben erwähnte Distanzwert-Register 38, das Beginn- Adresse-Register 40, den Volladdierer 42, das Logische- Adresse-Register 44, den Adreßübersetzer 46 und das Reale- Adresse-Register 48. Die logische Adresse in dem Logische- Adresse-Register 44 ist eine zugewiesene Identifikationsinformation ID, die die logische Adresse identifiziert. Die Identifikationsinformation ID wird durch den Vektoroperationsausführungssteuerteil 110 der Adresse zugewiesen und wird auch der von der logischen Adresse übersetzten realen Adresse zugewiesen. Die reale Adresse mit der dazu hinzugefügten Identifikationsinformation ID wird zum Adreß-Warteschlangenregister 50 übertragen.
- Wie in Fig. 5 gezeigt ist, enthält der Register-Lese- Controller 58 einen Datenpuffer-Gültig-Zähler 70 und einen Pipeline-Stop-Prediktor 72. Der Zähler 70 und der Prediktor 72 werden durch z. B. Software gebildet, die durch den Register-Lese-Controller 58 ausgeführt wird. Wie später beschrieben wird, zählt der Datenpuffer-Gültig-Zähler 70 die Zahl von Datenstücken, die von dem Vektorregister 12 gelesen und zum Datenpuffer 30 gesendet werden, um die Operation der Übertragung-Pipeline, die verwendet wird, um Daten zu speichern, bezüglich nur einer minimalen Zahl notwendiger Zugriffsanforderungen zu unterbrechen. Der Pipeline-Stop-Prediktor 72 empfängt das Operation-Pipeline-Stop-Warnsignal VE-STOP-WARNUNG von dem Vektoranweisungsausführungssteuerteil 110 und sendet das Zugriffsanforderung-Stop-Signal VE-STOP an die eine Anforderungsprioritätsordnung bestimmende Einheit 64 der Speichersteuereinheit 200A zusammen mit der Identifikationsinformation ID, die der zu stoppenden Vektoranweisung zugewiesen ist.
- Der Register-Schreib-Controller 56 steuert die Schreiboperation des Vektorregisters 12 und des Maskenregisters 14. Der Register-Lese-Controller 58 steuert die Leseoperation des Vektorregisters 12 und des Maskenregisters 14. Der Puffer- Schreib-Controller 60 steuert die Schreiboperation des Datenpuffers 30 in der Speichersteuereinheit 200A. Der Puffer- Lese-Controller 62 steuert die Lesesteuerung des Datenpuffers 30.
- Der Controller 32A der Speichersteuereinheit 200A enthält die eine Anforderungsprioritätsordnung bestimmende Einheit 64, einen Puffer-Annulier-Prozessor 66 und einen Hauptspeichereinheit-Controller 68. Wie in Fig. 5 gezeigt ist, enthält die eine Anforderungsprioritätsordnung bestimmende Einheit 64 das Adreß-Warteschlangenregister 50 und die Leseeinheit 52 zusätzlich zu einem Teil, der eine Steuerung ausführt, die später beschrieben wird. Die in dem Adreß-Warteschlangenregister 50 gespeicherte reale Adresse (Zugriffsanforderung) wird in dem Adreß-Warteschlangenregister 50 vorübergehend gespeichert, bis ihr die Anforderungsprioritätsordnung zugewiesen ist. Wenn die Leseeinheit 52 das Zugriffsanforderungsstopsi gnal VE-STOP und die Identifikationsinformation ID empfängt, liest die Leseeinheit 52 unter in dem Adreß-Warteschlangenregister 50 gespeicherten realen Adressen nur die reale Adresse, der eine verschiedene Identifiktionsinformation ID zugewiesen wurde, und sendet die gelesene reale Adresse an den Hauptspeicher-Controller 68. Daher kann nur eine minimale Zahl notwendiger Zugriffsanforderungen unterbrochen werden, ohne Zugriffsanforderungen zu unterbrechen, die zu unterbrechen unnötig ist.
- Der Hauptspeicher-Controller 68 empfängt die Zugriffsanforderung (reale Adresse) von der eine Anforderungsprioritätsordnung bestimmenden Einheit 64 und gibt notwendige Signale einschließlich der realen Adresse an die Hauptspeichereinheit 300 aus. Der Puffer-Annulier-Prozessor 66 führt einen Annulierprozeß für den Puffer 26 der in Fig. 2 gezeigten Scaler-Einheit durch. Der Datenpuffer 30 ist in einen Bereich für die Speicheroperation und einen Bereich für die Ladeoperation segmentiert.
- Die Operation der Ausführungsform der vorliegenden Erfindung, die in Fig. 5 und 6 gezeigt ist, wird nun beschrieben.
- Zuerst wird eine Beschreibung eines Überblicks der Operation gegeben, die ausgeführt wird, wenn eine Ladeanweisung oder eine Speicheranweisung ausgeführt wird. Die Scaler- Einheit SU empfängt eine über den Datenpuffer 30 von der Hauptspeichereinheit 300 gelesene Vektoranweisung und sendet die empfangene Vektoranweisung an den Vektoranweisungsausführungssteuerteil 110.
- Wenn die empfangene Vektoranweisung eine Ladeanweisung ist, erzeugt der Anforderungsadreßgenerator 54 eine Zugriffsanforderung (die Erzeugung der realen Adresse) als Antwort auf das Startsignal START der Vektoranweisung. Auf der Basis der Zugriffsanforderung, der die Prioritätsordnung durch die eine Prioritätsordnung bestimmende Einheit 64 zugewiesen wird, sendet der Hauptspeicher-Controller 68 das Adreßsignal und ein Startsignal (LOS) an die Hauptspeichereinheit 300. Zur gleichen Zeit sendet der Hauptspeicher-Controller 68 ein Datenausgabesignal an den Puffer-Schreib-Controller 60 synchron mit einer Zeitsteuerung, mit der Daten von der Hauptspeichereinheit 300 abgerufen werden. Der Puffer-Schreib- Controller 60 empfängt das obige Datenausgabesignal und schreibt die abgerufenen Daten von der Hauptspeichereinheit 300 in den Datenpuffer 30. Der Register-Schreib-Controller 56 schreibt dann die in den Datenpuffer 30 geschriebenen Daten in das Vektorregister 12.
- Wenn die von der Scaler-Einheit SU empfangene Vektoranweisung eine Speicheranweisung ist, liest der Register-Lese- Controller 58 von dem Vektorregister 12 Daten zur gleichen Zeit wie das Ausgeben des Startsignals START der Vektoranweisung und schreibt die empfangenen Daten in den Datenpuffer 30. Die eine Prioritätsordnung bestimmende Einheit 64 weist der Zugriffsanforderung die Prioritätsordnung zu und sendet das Datenübertragungssignal an den Puffer-Lese-Controller 62 und den Puffer-Annulier-Prozessor 66. Wenn die Zugriffsanforderung eine Abrufoperation von der Scaler-Einheit SU ist, registriert der Puffer-Annulier-Prozessor 66 die relevante Adresse in einem Etikett-Register (ETIKETT), das darin vorgesehen ist. Wenn die Zugriffsanforderung eine Vektorspeicheroperation ist, nimmt der Puffer-Annulier-Prozessor 66 auf das Etikett-Register Bezug und führt den Annulierprozeß für den Puffer 26 (Fig. 2) der Scaler-Einheit SU durch, wenn die Adresse in dem Etikett-Register registriert wurde. Als Antwort auf das Datenübertragungssignal liest der Puffer-Lese- Controller 62 die gespeicherten Daten von dem Datenpuffer 30 und sendet die gelesenen Daten an die Hauptspeichereinheit 300. Zur gleichen Zeit wie der obigen sendet der Hauptspeicher-Controller 68 der Speichersteuereinheit 200A die Adresse und das Startsignal (LOS) an die Hauptspeichereinheit 300.
- Nun wird eine ausführliche Beschreibung der Operation der Ausführungsform der vorliegenden Erfindung gegeben.
- Fig. 7 ist ein Flußdiagramm der Operationen des Anforderungsadreßgenerators 54 und der eine Anforderungsprioritätsordnung bestimmenden Einheit 64. Der Prozeß wird als Antwort auf das Startsignal START von der Scaler-Einheit SU gestartet (Schritt S11). Eine Information, die die Beginn-Adresse und einen Distanzwert der Zugriffsanforderung anzeigt, wird von der Vektoranweisungsausführungssteuereinheit 110 erhalten, und die logische Adresse wird daraus berechnet (Schritt S12). Wenn bestätigt wird, daß die logische Adresse einer Vektorlänge entspricht (Schritt S13), bestimmt der Anforderungsadreßgenerator 54, ob ein Virtuelle-Adresse-Modus eingestellt wurde oder nicht (Schritt S14). Wenn bestimmt wird, daß der Virtuelle-Adresse-Modus eingestellt wurde, wird die logische Adresse in die reale Adresse übersetzt (Schritt S15). Der Anforderungsadreßgenerator 54 bestimmt dann, ob irgendeine gelesene Adresse in dem Adreß-Warteschlangenpuffer 50 gehalten wird oder nicht (Schritt S16). Wenn der Virtuelle-Adresse- Modus nicht spezifiziert wurde, wird Schritt S16 ohne Schritt S15 ausgeführt.
- Wenn in Schritt S16 bestimmt wird, daß eine reale Adresse (Zugriffsanforderung) in dem Adreß-Warteschlangenregister 50 registriert wurde, wird Schritt S20 durchgeführt. Wenn nicht, bestimmt der Anforderungsadreßgenerator 54, ob die eine Anforderungsprioritätsordnung bestimmende Einheit 64 tätig oder besetzt ist oder nicht (Schritt S17). Diese Bestimmung kann ausgeführt werden, indem z. B. auf den Zustand einer Besetzt- Signal-Leitung Bezug genommen wird, die von der eine Anforderungsprioritätsordnung bestimmenden Einheit 64 ausgeht. Wenn bestimmt wird, daß die Einheit 64 tätig ist, wird Schritt S20 ausgeführt. Wenn in Schritt S17 bestimmt wird, daß die Einheit 64 nicht tätig ist, bestimmt die Leseeinheit 52 der eine Anforderungsprioritätsordnung bestimmenden Einheit 64, ob das Zugriffsanforderungsstopsignal VE-STOP geliefert wurde oder nicht (Schritt S18). Wenn das Bestimmungsergebnis von Schritt S18 NEIN ist, wird die Zugriffsanforderung (reale Adresse) sofort über die eine Anforderungsprioritätsordnung bestimmende Einheit 64 an die Hauptspeichereinheit 300 gesendet, ohne die reale Adresse in das Adreß-Warteschlangenregister 50 zu schreiben (Schritt S22).
- Wenn in Schritt S18 bestimmt wird, daß das Zugriffsanforderungsstopsignal VE-STOP geliefert wurde, wird bestimmt, ob die der realen Adresse von dem Anforderungsadreßgenerator 54 zugewiesene Identifikationsinformation ID mit der Identifikationsinformation ID von dem Register-Lese-Controller 58 übereinstimmt (Schritt S19). Wenn die Identifikationsinformation ID von dem Anforderungsadreßgenerator 54 nicht mit der Identifikationsinformation ID von dem Register-Lese-Controller 58 übereinstimmt, werden die Adresse und das Start-Signal sofort an die Hauptspeichereinheit 300 gesendet (Schritt S22). Wenn in Schritt S19 bestimmt wird, daß die Identifikationsinformation ID von dem Anforderungsadreßgenerator 54 mit der Identi fikationsinformation ID von dem Register-Lese-Controller 58 übereinstimmt, wird die gelesene Adresse in den Adreß-Warteschlangenpuffer 50 geschrieben und gehalten, bis das Zuführen des Zugriffsanforderungsstopsignals VE-STOP gestoppt wird. Das heißt, der Schritt S22 wird ausgeführt, wenn in Schritt S21 auf das Adreß-Warteschlangenregister 50 zugegriffen wird und die Bestimmungsergebnisse der Schritte S16 und S17 NEIN sind und wenn das Bestimmungsergebnis von Schritt S18 JA ist.
- Fig. 8 ist ein Flußdiagramm der Operation des Register- Lese-Controllers 58. Zuerst bestimmt der Register-Lese- Controller 58, ob der Datenpuffer 30 voll ist oder nicht (Schritt S31). Wenn bestimmt wird, daß der Datenpuffer 30 voll ist, führt der Register-Lese-Controller 58 wiederholt Schritt S31 aus, bis das Bestimmungsergebnis von Schritt S32 NEIN wird. Wenn das Bestimmungsergebnis von Schritt S32 NEIN wird, bestimmt der Register-Lese-Controller 58, ob das Zugriffsanforderungsstopsignal VE-STOP erzeugt wurde oder nicht (Schritt S32). Wenn das Ergebnis dieser Bestimmung JA ist, kehrt der Prozeß zu Schritt S31 zurück. Wenn das Ergebnis von Schritt S32 NEIN ist, bestimmt der Register-Lese-Controller 58, ob Daten gleich der Vektorlänge von dem Vektorregister 12 gelesen wurden oder nicht (Schritt S33). Wenn das Ergebnis dieser Bestimmung NEIN ist, kehrt der Prozeß zu Schritt S31 zurück. Wenn das Bestimmungsergebnis von Schritt S33 JA ist, liest der Register-Lese-Controller 58 die Daten von dem Vektorregister 12 (Schritt S34) und schreibt die gelesenen Daten in den Datenpuffer 30 (Schritt S35).
- Fig. 9 ist ein Flußdiagramm der Operation des Datenpuffer-Gültig-Zählers 70, der in dem in Fig. 5 gezeigten Register-Lese-Controller 58 vorgesehen ist. Der Register-Lese- Controller 58 bestimmt auf der Basis des Schreib-Gültig- Signals WV, das erzeugt wird, wenn der Schreib-Controller 56 Daten in das Vektorregister 12 schreibt, ob das Schreiben von Daten in das Vektorregister 12 ausgeführt wurde oder nicht (Schritt S41). Wenn das Ergebnis dieser Bestimmung JA ist, inkrementiert der Register-Lese-Controller 58 den Zählwert des Dätenpuffer-Gültig-Zählers 70 um 1 (Schritt S42). Der Register-Lese-Controller 58 bestimmt auf der Basis eines Lese- Gültig-Signals RV, das erzeugt wird, wenn Daten von dem Vektorregister 12 gelesen werden, ob das Lesen von Daten von dem Register 12 ausgeführt wurde oder nicht (Schritt S43). Wenn das Ergebnis dieser Bestimmung JA ist, dekrementiert der Register-Lese-Controller 58 den Zählwert des Datenpuffer- Gültig-Zählers 70 um 1 (Schritt S44). Der Prozeß kehrt dann zu Schritt S41 zurück.
- Fig. 10 ist ein Flußdiagramm der Operation des Pipeline- Stop-Prediktors 72, der in dem in Fig. 5 gezeigten Register- Lese-Controller 58 vorgesehen ist. Das Operation-Pipeline- Stop-Warnsignal VE-STOP-WARNUNG wird zuerst von dem Vektoranweisungsausführungssteuerteil 110 (Fig. 6) empfangen (Schritt S51). Als Antwort auf das Signal VE-STOP-WARNUNG bestimmt der Prediktor 72, ob der Zählerwert des Datenpuffer-Gültig- Zählers 70 (die Zahl von Datenstücken, die von dem Vektorregister 12 gelesen wurden) kleiner als ein vorbestimmter Wert X ist (Schritt S52). Der vorbestimmte Wert X entspricht einem vorhergesagten Wert einer zulässigen Zahl von Zugriffen (zulässige Datenmenge), selbst wenn das Operation-Pipeline-Stop- Warnsignal VE-STOP-WARNUNG, das eine Datensenke in der Operation-Pipeline VE anzeigt, erzeugt wird. Falls der Zählerwert des Datenpuffer-Gültig-Zählers 70 gleich dem oder kleiner als der vorbestimmte Wert X wird, besteht infolge einer Akzeptanz der Zugriffsanforderung eine Möglichkeit, daß eine Störung (eine Datensenke) in einer Ausführung von Vektoranweisungen in dem Verkettungszustand der Vektorregister auftreten kann.
- Wenn in Schritt S52 bestimmt wird, daß der Zählerwert des Datenpuffer-Gültig-Zählers 70 kleiner als der vorbestimmte Wert ist, wird entschieden, daß die Operation der Pipelines gestoppt werden sollte (Schritt S53), und der Prediktor 72 gibt das Zugriffsanforderungsstopsignal VE-STOP zusammen mit der Identifikationsinformation ID an die Leseeinheit 52 aus.
- Fig. 11 ist ein Flußdiagramm der Operation des Datenpuffer-Annulier-Prozessors 66. Der Puffer-Annulier-Prozessor 66 empfängt das Datenübertragungssignal von der eine Anforderungsprioritätsordnung bestimmenden Einheit 64 (Schritt S61) und bestimmt, ob das empfangene Datenübertragungssignal eine Speicheranweisung ist oder nicht (Schritt S62). Wenn das empfangene Signal keine Speicheranweisung ist, bestimmt der Prozessor 66, ob die Zugriffsanforderung ein Abruf von der Scaler-Einheit SU ist oder nicht (Schritt S63). Wenn die Zugriffsanforderung ein Abruf von der Scaler-Einheit SU ist, registriert der Puffer-Annulier-Prozessor 66 die Adresse der Zugriffsanforderung in dem darin vorgesehenen Etikett-Register (ETIKETT) (Schritt S64). Der Puffer-Annulier-Prozessor 66 bestimmt ferner, ob die Zugriffsanforderung eine Speicheranweisung von der Vektoreinheit 100A ist oder nicht (Schritt S65). Wenn das Bestimmungsergebnis von Schritt S65 JA ist, nimmt der Prozessor 66 Bezug auf das Etikett-Register (Schritt S66). Wenn die Zugriffsanforderung in dem Etikett- Register registriert wurde (Schritt S67), speichert der Prozessor 66 die Zugriffsanforderung in dem darin vorgesehenen Warteschlangenregister (Schritt S68) und führt dann den Annulierprozeß für den (in Fig. 2 gezeigten) Puffer 26 aus (Schritt S69).
- Fig. 12 ist ein Flußdiagramm der Operation des Puffer- Schreib-Controllers 58. Der Puffer-Schreib-Controller 58 empfängt ein Warnsignal DTW (Datenübertragungswarnung), das eine Datensenke anzeigt, von der eine Anforderungsprioritätsordnung bestimmenden Einheit 64 (Schritt S71). Der Puffer- Schreib-Controller 58 liest dann Daten von dem Datenpuffer 30 (Schritt S72) und meldet dem Register-Lese-Controller 58 das Lesen von Daten (Schritt S73).
- Fig. 13 ist ein Zeitsteuerdiagramm der Operation der Ausführungsform der vorliegenden Erfindung. Ein Teil I von Fig. 13 zeigt die herkömmliche Zugriffssteueroperation, und ein Teil II davon zeigt die Zugriffssteueroperation gemäß der Ausführungsform der vorliegenden Erfindung. Teile (A) in I von Fig. 13 und (C) in II davon zeigen die Operationszeitsteuerungen der Ladeanweisung, und Teile (B) in I von Fig. 13 und (D) in II davon zeigen die Operationszeitsteuerung der Speicheranweisung. Die Operationszeitsteuerung der Ladeanweisung im Stand der Technik ist die gleiche wie die der Ladeanweisung gemäß der Ausführungsform der vorliegenden Erfindung.
- In der herkömmlichen Ausführung der Speicheranweisung wird, wie in (B) in I von Fig. 13 gezeigt, die Adreßübersetzung nicht durchgeführt, während das Zugriffsanforderungsstopsignal VE-STOP aktiv ist. Wie vorher mit Verweis auf Fig. 4 beschrieben wurde, wird das Zugriffsanforderungsstopsignal VE-STOP an das Logische-Adresse-Register 44 ausgegeben, und das Ausgeben der logischen Adresse an den Adreßübersetzer 46 wird gesperrt. Wenn das Zugriffsanforderungsstopsignal VE- STOP AUS-geschaltet wird, wird die Adreßübersetzungsoperation gestartet.
- Gemäß der Ausführungsform der vorliegenden Erfindung wird, wie in (D) in II von Fig. 13 gezeigt ist, die Adreßübersetzungsoperation ausgeführt, während das Zugriffsanforderungsstopsignal VE-STOP EIN-geschaltet ist. Wie vorher beschrieben wurde, wird nur eine minimale Zahl notwendiger Zugriffsanforderungen unterbrochen, und daher wird die Adreßübersetzungsoperation weiter ausgeführt. Wenn das Zugriffsanforderungsstopsignal VE-STOP AUS-geschaltet wird, wird den Zugriffsanforderungen die Prioritätsordnung gegeben.
- Fig. 14 ist ein Diagramm, das eine andere Ausführungszeitsteuerung der Speicheranweisung zeigt. Ein Teil (A) von Fig. 14 zeigt die herkömmliche Operationszeitsteuerung der Speicheranweisung, und ein Teil (B) davon zeigt die Operationszeitsteuerung der Speicheranweisung gemäß der Ausführungsform der vorliegenden Erfindung. In der herkömmlichen Steuerung wird, wenn das Zugriffsanforderungsstopsignal VE-STOP während der Adreßübersetzungsoperation EIN-geschaltet wird, die Adreßübersetzungsoperation sofort gestoppt. Die vorhergehende Anweisung, die der Prioritätsordnung zugewiesen wurde, wird weiter ausgeführt, und Daten werden vom Datenpuffer 30 gelesen und in der Hauptspeichereinheit 300 gespeichert. Wenn das Zugriffsanforderungsstopsignal VE-STOP AUS-geschaltet wird, wird die Adreßübersetzungsoperation wieder gestartet.
- Gemäß der Ausführungsform der vorliegenden Erfindung wird die Adreßübersetzungsoperation nicht unterbrochen, selbst wenn das Zugriffsanforderungssignal VE-STOP EIN-geschaltet wird.
- Wenn die Operation selektiv ausgeführt werden muß, wird das Maskenregister 14 verwendet, um die Anwendung des Pipeline-Prozesses auszudehnen, indem das Ergebnis einer Entscheidung über die Auswahl als ein Maskenmuster einer Bitsequenz geliefert wird. Das Maskenregister 14 wird durch die Ausführungsform der vorliegenden Erfindung jedoch nicht direkt in der Steuerung verwendet, und daher werden die Einzelheiten der Operation des Maskenregisters 14 weggelassen.
- Gemäß der vorliegenden Erfindung werden die folgenden Vorteile erhalten.
- Erstens wird es mit dem Datenpuffer-Gültig-Zähler möglich, nur eine minimale Zahl notwendiger Zugriffsanforderungen zu unterbrechen, indem auf den Zustand des Datenpuffers Bezug genommen wird, wenn die Pipelines in den Zustand gelangen, in dem deren Operation gestoppt werden sollte. Es wird daher möglich, die Pipelines mit den Datenpuffer effizient zu verwenden.
- Zweitens wird es möglich, die Vektoranweisung sicher zu identifizieren, deren Adreßanforderung gestoppt werden sollte, indem die Identifikationsinformation ID jeder Vektoranweisung zugewiesen und sie mit einer Identifikationsinformation einer Vektoranweisung verglichen wird, die angefordert wurde, um gestoppt zu werden.
- Drittens wird es möglich, die oben erwähnte Steuerung für eine Vektorverarbeitungsvorrichtung zu verwenden, die unter einer Bedingung arbeitet, in der der Durchsatz einer Adreßerzeugung nicht dem Durchsatz eines Lesens von Daten von dem Vektorregister entspricht. Herkömmlicherweise wird unter einer solchen Bedingung die Operation der Pipelines gestoppt.
- Die vorliegende Erfindung ist nicht auf die konkret offenbarten Ausführungsformen begrenzt, und Variationen und Modifikationen können vorgenommen werden, ohne vom Umfang der vorliegenden Erfindung, wie sie durch die beigefügten Ansprüche definiert ist, abzuweichen.
Claims (5)
1. Vektorverarbeitungsvorrichtung mit:
einer Vektoreinheit (100A) mit Operation-Pipelines und
einem mit den Operation-Pipelines verbundenen Vektorregister;
einer Speichereinheit (300), die durch die Operation-
Pipelines und Ergebnisse von Operationen, die von den
Operation-Pipelines erhalten werden, zu betreiben ist;
einer Speichersteuereinheit (200A) mit einem Datenpuffer
(30), die zwischen dem Vektorregister und der Speichereinheit
vorgesehen ist;
dadurch gekennzeichnet, daß sie ferner aufweist:
ein erstes Mittel (70) mit einem Zähler zum
Inkrementieren eines Zählwertes jedesmal, wenn Daten von dem
Vektorregister in den Datenpuffer geschrieben werden, und
Dekrementieren des Zählwertes jedesmal, wenn Daten von dort gelesen
werden; und
ein zweites Mittel (72) zum Speichern aller Operationen
der Pipelines, wenn der Wert des Zählers unter eine
vorbestimmte Schwelle fällt.
2. Vektorverarbeitungsvorrichtung nach Anspruch 1, worin
der Zähler (70) die Zahl von Datenstücken auf der Basis einer
ersten Zahl von Malen zählt, daß Daten in dem Datenpuffer in
das Vektorregister geschrieben werden, und einer zweiten Zahl
von Malen, daß Daten von dem Vektorregister gelesen und zum
Datenpuffer gesendet werden.
3. Vektorverarbeitungsvorrichtung nach Anspruch 1, ferner
mit:
einem dritten Mittel (54) zum Empfangen einer logischen
Adresse, die einer Zugriffsanforderung von der Vektoreinheit
auf die Speichereinheit zugeordnet ist, und zum Ausgeben
einer Adreßinformation, die eine der logischen Adresse
entsprechende reale Adresse und eine die logische Adresse
identifizierende Identifikationsinformation enthält;
einem vierten Mittel (50), das in der
Speichersteuereinheit vorgesehen ist, zum vorübergehenden Speichern der
Adreßinformation; und
einem fünften Mittel (52, 72) zum selektiven Unterbrechen
der Zugriffsanforderung, indem auf die in dem vierten Mittel
gespeicherte Identifikationsinformation Bezug genommen und
die Zugriffsanforderung unter den Zugriffsanforderungen von
der Vektoreinheit auf die Speichereinheit ausgewählt wird.
4. Vektorverarbeitungsvorrichtung nach Anspruch 1, 2 oder
3, worin das zweite Mittel (72) auf ein Signal (VE STOP_
WARNUNG) anspricht, das vor einer Datensenke warnt, die an eine
der über das Vektorregister verketteten Operation-Pipelines
geliefert werden.
5. Vektorverarbeitungsvorrichtung nach Anspruch 2, worin
das zweite Mittel (72) alle Operation der Pipelines auf der
Basis einer Differenz zwischen der ersten Zahl von Malen und
der zweiten Zahl von Malen stoppt.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP32059392A JP3304444B2 (ja) | 1992-11-30 | 1992-11-30 | ベクトル処理装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
DE69323477D1 DE69323477D1 (de) | 1999-03-25 |
DE69323477T2 true DE69323477T2 (de) | 1999-06-24 |
Family
ID=18123150
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE69323477T Expired - Fee Related DE69323477T2 (de) | 1992-11-30 | 1993-09-02 | Vektorprozessor |
Country Status (4)
Country | Link |
---|---|
US (1) | US5598574A (de) |
EP (1) | EP0600165B1 (de) |
JP (1) | JP3304444B2 (de) |
DE (1) | DE69323477T2 (de) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5881302A (en) * | 1994-05-31 | 1999-03-09 | Nec Corporation | Vector processing unit with reconfigurable data buffer |
US5689653A (en) * | 1995-02-06 | 1997-11-18 | Hewlett-Packard Company | Vector memory operations |
US6854003B2 (en) | 1996-12-19 | 2005-02-08 | Hyundai Electronics America | Video frame rendering engine |
JP3739888B2 (ja) * | 1997-03-27 | 2006-01-25 | 株式会社ソニー・コンピュータエンタテインメント | 情報処理装置および方法 |
US6430589B1 (en) | 1997-06-20 | 2002-08-06 | Hynix Semiconductor, Inc. | Single precision array processor |
US5946496A (en) * | 1997-12-10 | 1999-08-31 | Cray Research, Inc. | Distributed vector architecture |
US5913069A (en) * | 1997-12-10 | 1999-06-15 | Cray Research, Inc. | Interleaving memory in distributed vector architecture multiprocessor system |
US6167500A (en) * | 1998-08-10 | 2000-12-26 | International Business Machines Corp. | Mechanism for queuing store data and method therefor |
US6665749B1 (en) * | 1999-08-17 | 2003-12-16 | Nec Electronics, Inc. | Bus protocol for efficiently transferring vector data |
US9009528B2 (en) * | 2008-08-15 | 2015-04-14 | Apple Inc. | Scalar readXF instruction for processing vectors |
US8271832B2 (en) * | 2008-08-15 | 2012-09-18 | Apple Inc. | Non-faulting and first-faulting instructions for processing vectors |
US8862932B2 (en) * | 2008-08-15 | 2014-10-14 | Apple Inc. | Read XF instruction for processing vectors |
US8938642B2 (en) * | 2008-08-15 | 2015-01-20 | Apple Inc. | Confirm instruction for processing vectors |
Family Cites Families (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS5725069A (en) * | 1980-07-21 | 1982-02-09 | Hitachi Ltd | Vector data processing equipment |
JPH0766329B2 (ja) * | 1985-06-14 | 1995-07-19 | 株式会社日立製作所 | 情報処理装置 |
US4789925A (en) * | 1985-07-31 | 1988-12-06 | Unisys Corporation | Vector data logical usage conflict detection |
US4873630A (en) * | 1985-07-31 | 1989-10-10 | Unisys Corporation | Scientific processor to support a host processor referencing common memory |
JPS62120574A (ja) * | 1985-11-20 | 1987-06-01 | Fujitsu Ltd | ベクトル処理装置 |
JPH0731669B2 (ja) * | 1986-04-04 | 1995-04-10 | 株式会社日立製作所 | ベクトル・プロセツサ |
US4974198A (en) * | 1986-07-16 | 1990-11-27 | Nec Corporation | Vector processing system utilizing firm ware control to prevent delays during processing operations |
US4722046A (en) * | 1986-08-27 | 1988-01-26 | Amdahl Corporation | Cache storage priority |
JP2760790B2 (ja) * | 1986-10-09 | 1998-06-04 | 株式会社日立製作所 | データ処理装置 |
US5010477A (en) * | 1986-10-17 | 1991-04-23 | Hitachi, Ltd. | Method and apparatus for transferring vector data between parallel processing system with registers & logic for inter-processor data communication independents of processing operations |
US4839801A (en) * | 1986-11-03 | 1989-06-13 | Saxpy Computer Corporation | Architecture for block processing computer system |
JPH06103494B2 (ja) * | 1986-11-18 | 1994-12-14 | 株式会社日立製作所 | ベクトル処理装置の制御方式 |
JP2679994B2 (ja) * | 1987-08-14 | 1997-11-19 | 株式会社日立製作所 | ベクトル処理装置 |
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 |
US5179674A (en) * | 1988-07-25 | 1993-01-12 | Digital Equipment Corporation | Method and apparatus for predicting valid performance of virtual-address to physical-address translations |
US5123095A (en) * | 1989-01-17 | 1992-06-16 | Ergo Computing, Inc. | Integrated scalar and vector processors with vector addressing by the scalar processor |
US5179530A (en) * | 1989-11-03 | 1993-01-12 | Zoran Corporation | Architecture for integrated concurrent vector signal processor |
US5197130A (en) * | 1989-12-29 | 1993-03-23 | Supercomputer Systems Limited Partnership | Cluster architecture for a highly parallel scalar/vector multiprocessor system |
US5193167A (en) * | 1990-06-29 | 1993-03-09 | Digital Equipment Corporation | Ensuring data integrity by locked-load and conditional-store operations in a multiprocessor system |
WO1992009968A1 (en) * | 1990-11-27 | 1992-06-11 | Cray Research, Inc. | VECTOR WORD SHIFT BY Vo SHIFT COUNT IN VECTOR SUPERCOMPUTER PROCESSOR |
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 |
JP2665111B2 (ja) * | 1992-06-18 | 1997-10-22 | 日本電気株式会社 | ベクトル処理装置 |
-
1992
- 1992-11-30 JP JP32059392A patent/JP3304444B2/ja not_active Expired - Fee Related
-
1993
- 1993-09-02 EP EP93114050A patent/EP0600165B1/de not_active Expired - Lifetime
- 1993-09-02 DE DE69323477T patent/DE69323477T2/de not_active Expired - Fee Related
-
1996
- 1996-03-18 US US08/617,148 patent/US5598574A/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
EP0600165A1 (de) | 1994-06-08 |
EP0600165B1 (de) | 1999-02-10 |
JP3304444B2 (ja) | 2002-07-22 |
DE69323477D1 (de) | 1999-03-25 |
US5598574A (en) | 1997-01-28 |
JPH06168264A (ja) | 1994-06-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE69032334T2 (de) | Virtuelles Computersystem mit Ein-/Ausgabeunterbrechungssteuerung | |
DE3685863T2 (de) | Rechnersystem zur steuerung virtueller maschinen. | |
DE69128565T2 (de) | Mikrorechner ausgestattet mit einer DMA-Steuerung | |
DE3785897T2 (de) | Steuervorrichtung zum vorabruf von befehlen. | |
DE69331448T2 (de) | Dataprozessor mit einem Cachespeicher | |
DE68928113T2 (de) | Reihenfolgesteuersystem zur Behandlung von Befehlen | |
DE3210816C2 (de) | ||
DE69227664T2 (de) | Hardwarekonfiguriertes Betriebssystemkern für einen Multitaskprozessor | |
DE69319763T2 (de) | Verfahren und Gerät zur Durchführung eines Busarbitrierungsprotokolls in einem Datenverarbeitungssystem | |
DE69930614T2 (de) | VERFAHREN UND GERÄT ZUM HANDHABEN VON mehrfachen flanken- und zustandsausgelösten unterbrechungen | |
DE69329630T2 (de) | Vorrichtung zur Vektorverarbeitung | |
DE68927492T2 (de) | Verfahren und Vorrichtung zur gleichzeitigen Verteilung von Befehlen an mehrere funktionelle Einheiten | |
DE69619885T2 (de) | Datenverarbeitungsanordnung mit Koprozessor | |
DE69323477T2 (de) | Vektorprozessor | |
DE69114333T2 (de) | Rechner mit der Fähigkeit mehrere Befehle gleichzeitig auszuführen. | |
DE69228380T2 (de) | Verfahren zur erhöhung der datenverarbeitungsgeschwindigkeit in einem rechnersystem | |
DE69812685T2 (de) | System und verfahren zur spekulativen arbitrierung bei datenübertragung | |
DE69127851T2 (de) | Direktspeicherzugriffübertragungssystem und Benutzung | |
DE69130757T2 (de) | Ausführungsvorrichtung für bedingte Verzweigungsbefehle | |
DE69414592T2 (de) | Ausführung von datenverarbeitungsbefehlen | |
DE69030931T2 (de) | Mehrfachsequenzprozessorsystem | |
DE2953861C2 (de) | ||
DE10211889B4 (de) | Verarbeitungseinheit zur Ausführung von Ereignisprozessen in Echtzeit ohne Verursachung einer Prozessstörung | |
DE3854369T2 (de) | Zentralprozessoreinheit für digitale datenverarbeitungsanordnung mit cache-speicherverwaltungsvorrichtung. | |
DE4104781A1 (de) | Speicherzugriffsverfahren und -vorrichtung |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8364 | No opposition during term of opposition | ||
8339 | Ceased/non-payment of the annual fee |