DE69323477T2 - Vektorprozessor - Google Patents

Vektorprozessor

Info

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
Application number
DE69323477T
Other languages
English (en)
Other versions
DE69323477D1 (de
Inventor
Naoki C/O Fujitsu Limited Kawasaki-Shi Kanagawa 211 Shinjo
Toru C/O Fujitsu Limited Kawasaki-Shi Kanagawa 211 Yoshinaga
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Publication of DE69323477D1 publication Critical patent/DE69323477D1/de
Application granted granted Critical
Publication of DE69323477T2 publication Critical patent/DE69323477T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8053Vector processors
    • G06F15/8076Details on data register access
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • G06F9/30038Instructions to perform operations on packed data, e.g. vector, tile or matrix operations using a mask
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30079Pipeline control instructions, e.g. multicycle NOP
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction 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.
DE69323477T 1992-11-30 1993-09-02 Vektorprozessor Expired - Fee Related DE69323477T2 (de)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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 日本電気株式会社 ベクトル処理装置

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