DE69230626T2 - Informationsverarbeitungssystem mit der Fähigkeit zum Betreiben von mehreren Vektorpipelines in zwei unterscheidlichen Wirkungsweisen - Google Patents
Informationsverarbeitungssystem mit der Fähigkeit zum Betreiben von mehreren Vektorpipelines in zwei unterscheidlichen WirkungsweisenInfo
- Publication number
- DE69230626T2 DE69230626T2 DE69230626T DE69230626T DE69230626T2 DE 69230626 T2 DE69230626 T2 DE 69230626T2 DE 69230626 T DE69230626 T DE 69230626T DE 69230626 T DE69230626 T DE 69230626T DE 69230626 T2 DE69230626 T2 DE 69230626T2
- Authority
- DE
- Germany
- Prior art keywords
- vector
- mode
- instruction
- scalar
- pipeline
- 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
- 230000010365 information processing Effects 0.000 title claims description 31
- 238000012545 processing Methods 0.000 claims description 62
- 230000004044 response Effects 0.000 claims description 8
- 238000004364 calculation method Methods 0.000 description 16
- 238000000034 method Methods 0.000 description 7
- 238000010586 diagram Methods 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 230000007257 malfunction Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
Classifications
-
- 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/30181—Instruction operation extension or modification
- G06F9/30189—Instruction operation extension or modification according to execution mode, e.g. mode flag
-
- 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/8061—Details on data memory access
- G06F15/8069—Details on data memory access using a cache
-
- 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/8092—Array of vector units
-
- 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
-
- 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
-
- 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/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
-
- 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/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
-
- 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/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3887—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Complex Calculations (AREA)
Description
- Diese Erfindung betrifft ein Informationsverarbeitungssystem zur Verwendung bei der Verarbeitung eines Vektorbefehls in einer Pipeline-Art zusätzlich zu einem Skalarbefehl.
- Ein herkömmliches Informationsverarbeitungssystem der beschriebenen Art umfaßt einen Prozessorabschnitt, der mit einem Speicherabschnitt unter Steuerung eines Speichersteuerabschnitts zusammenarbeitet, um eine Folge von Befehle zu verarbeiten, die in Skalar- und Vektorbefehle klassifiziert sind. Um solche Skalar- und Vektorbefehle zu verarbeiten, umfaßt der Prozessor einen Skalarverarbeitungsabschnitt zur Verarbeitung der Skalarbefehle zusammen mit Skalardatensignalen und einen Vektorverarbeitungsabschnitt zur Verarbeitung der Vektorbefehle zusammen mit Vektordatensignalen.
- Ferner sind Überlegungen darüber angestellt worden, effektiv und schnell die Vektorbefehle in einer Pipeline-Art zu verarbeiten. Zu diesem Zweck ist ein Vorschlag angeboten worden hinsichtlich eines Informationsverarbeitungssystems, das mehrere Vektorpipeline-Sätze in einem Vektorverarbeitungsabschnitt aufweist und das im folgenden als ein Parallelpipeline- System bezeichnet wird. In diesem Fall weist jeder der Vektorpipeline-Sätze mehrere Vektorregister zum Speichern von Vektordatensignalen und mehrere Pipeline-Rechner zum Ausführen von Vektorberechnungen der Vektordatensignale, die in den Vektorregistern gespeichert sind, auf. Das Parallelpipeline-System sollte eine Vektorprozessoreinheit aufweisen zur Steuerung der mehreren Vektorpipeline-Sätze, indem die Vektorbefehle decodiert werden und ein Steuersignal, nämlich Vektorbefehlsinformationssignale an die Vektorpipeline-Sätze als Reaktion auf jeden Vektorbefehl geliefert werden.
- Insbesondere ist die Vektorprozessoreinheit betriebsfähig, als Reaktion auf jeden der Vektorbefehle eine Folge von Vektordatensignalen oder Elementen an die Vektorregister zu verteilen, die in den mehreren Vektorpipeline-Sätzen angeordnet sind und das Vektorregister mit den Vektordatensignalen zu laden. Solche Vektordatensignale werden parallel zueinander verarbeitet, um eine spezifische der Vektorberechnungen in jedem Vektorpipeline-Satz auszuführen, an dem die Vektordatensignale verteilt werden. Mit anderen Worten werden die Vektordatensignale oder Elemente in gleicher Weise an die jeweiligen Vektorpipeline-Sätze verteilt, um sie immer parallel zu verarbeiten.
- Mit dieser Struktur werden, wenn die Anzahl der Vektordatensignale oder Elemente sehr groß ist, alle Vektorpipeline- Sätze effektiv und in gleicher Weise für die spezifische Vektorberechnung betrieben oder verwendet. Wenn jedoch die Anzahl der Vektordatenelemente für die spezifische Vektorberechnung vergleichsweise klein ist, und wenn unterschiedliche Vektorberechnungen nach der spezifischen Vektorberechnung hintereinander ausgeführt werden müssen, treten sehr häufig in jeder der Vektorpipelines inaktive oder ungenutzte Zeitspannen auf. Dies führt zu einer Verminderung der Nutzungseffizienz der Hardware.
- Im Artikel von Augin M. u. a. "The OPSILA computer" Parallel Algorithms and Architectures; Proc. of the International Workshop, Luminy, Frankreich, 14.-18. April 1986, Seiten 143-153, wird der OPSILA-Comouter offenbart, der in zwei unterschiedlichen Betriebsarten betriebsfähig ist, um zwei unterschiedliche Arten von Parallelität zu realisieren. Eine der Betriebsarten wird als SIMD- (Einzelbefehl, mehrfacher Datenstrom) Verarbeitungsart bezeichnet, während die andere SPMD- (Einzelprogramm, mehrfacher Datenstrom) Verarbeitungsart bezeichnet wird. In der SPMD-Verarbeitungsart, wird das einzelne Programm in jede Speicherbank dupliziert oder kopiert, um die SPMD-Verarbeitungsart auszuführen. Zusätzlich sendet eine Steuereinheit einen Verzweigungsbefehl, der erzwingt, daß freigegebene Verarbeitungselemente unter der SPMD-Verarbeitungsart laufen. Zusätzlich wird eine Verknüpfungssynchronisation implementiert, um zur SIMD-Verarbeitungsart zurückzukehren.
- GB-A-2,136,172 lehrt einen Vektorprozessor, der in einem parallelen Modus und einem seriellen Modus durch die Verwendung eines Modussteuer-Flipflops betriebsfähig ist. Der Vektorprozessor teilt die Vektorverarbeitungsoperationen auf und führt sie im parallelen Modus parallel aus. Ein solcher paralleler Modus wird für einfache Vektorbefehle ausgeführt. Andererseits werden die Vektorverarbeitungsoperationen für komplizierte Vektorbefehle im seriellen Modus ausgeführt, ohne die Vektorverarbeitungsoperationen aufzuteilen.
- Es ist eine Aufgabe dieser Erfindung, ein Informationsverarbeitungssystem bereitzustellen, das effektiv zur parallelen Verarbeitung von Vektordatenelementen fähig ist.
- Es ist eine weitere Aufgabe dieser Erfindung, ein Informationsverarbeitungssystem der beschriebenen Art bereitzustellen, das für eine kurze Zeit unterschiedliche Vektorberechnungen ohne Leerlaufzeiten ausführen kann.
- Es ist noch eine weitere Aufgabe dieser Erfindung, ein Informationsverarbeitungssystem der beschriebenen Art bereitzustellen, das fähig ist, Vektorpipeline-Sätze flexibel zu nutzen.
- Fig. 1 ist ein Zeitdiagramm zur Verwendung beim Beschreiben einer Vektorverarbeitungsoperation, die durch einen Satz von Vektorbefehlen ausgeführt wird;
- Fig. 2 ist ein Zeitdiagramm zur Verwendung beim Beschreiben einer Folge von Vektorverarbeitungsoperationen, die durch mehrere Sätze der Vektorbefehle ausgeführt werden;
- Fig. 3 ist ein Blockschaltbild eines Informationsverarbeitungssystems gemäß einer bevorzugten Ausführungsform dieser Erfindung;
- Fig. 4 ist ein Befehlsformat, das im Informationsverarbeitungssystem verwendet wird, das in Fig. 3 dargestellt wird; und
- Fig. 5 ist ein Zeitdiagramm zur Verwendung beim Beschreiben einer Operation, die durch das in Fig. 3 dargestellte Informationsverarbeitungssystem ausgeführt wird.
- Bezugnehmend auf Fig. 1, wird eine Beschreibung eines herkömmlichen Informationsverarbeitungssystems vorgenommen für ein besseres Verständnis dieser Erfindung. Zuerst wird angenommen, daß das Informationsverarbeitungssystem vier Sätze von Vektorpipelines, nämlich vier Vektorpipeline-Sätze aufweist, und hintereinander Vektorverarbeitungsoperationen ausführt, die definiert sind durch:
- DO 100 I = 1, 64
- X(I) = X(I) + S · U(I)
- Y(I) = Y(I) + S · V(I)
- Z(I) = Z(I) + S · W(I)
- 100 CONTINUE
- Das obige Vektorverarbeitungsoperation wird als eine besondere Vektorverarbeitungsoperation bezeichnet.
- In diesem Zusammenhang werden die vier Vektorpipeline-Sätze als nullte bis dritte Vektorpipeline-Sätze bezeichnet.
- Die oben erwähnte besondere Vektorverarbeitungsoperation dient dazu, Determinanten hinsichtlich jeder Vektorvariablen X, Y und Z hintereinander zu berechnen. Im oben erwähnten Beispiel wird die Vektorverarbeitungsoperation hintereinander in Verbindung mit jeder Variable X und Z ausgeführt, indem eine innere Schleife ausgeführt wird, die aus ersten bis fünften Schritten besteht, die an jeder der Vektorvariablen X, Y und Z ausgeführt werden, wie im folgenden beschrieben wird. Daher wird die Vektorverarbeitungsoperation hinsichtlich der ersten bis fünften Schritte beschrieben, die bezüglich nur der Vektorvariable X ausgeführt werden. Hierin ist zu beachten, daß jeder Vektorpipeline-Satz mehrere Vektorregister und mehrere Vektorpipeline-Rechner umfaßt, wie in der Technik bekannt ist.
- Beim ersten Schritt SS1 wird irgendeines der Vektorregister als ein Multiplikand mit dem Vektordatenelement aus einem Speicherabschnitt auf eine bekannte Weise geladen. Das Vektordatenelement U(I) wird am zweiten Schritt SS2 mit einer Skalarvariablen oder einem Parameter S multipliziert, der in einem Skalarregister gespeichert ist, um ein Multiplikationsergebnis zu berechnen. Beim dritten Schritt SS3 wird das Vektordatenelement X(I) aus dem Speicherabschnitt ausgelesen und in das Vektorregister geladen. Beim vierten Schritt SS4 wird das beim zweiten Schritt SS2 berechnete Multiplikationsergebnis zum beim dritten Schritt 553 geladenen Vektordatenelement X(I) addiert, um eine Summe des Multiplikationsergebnisses und des Vektordatenelements X(I) zu berechnen. Die Summe wird beim fünften Schritt SS5 im Speicherabschnitt gespeichert.
- Insbesondere wird die Anzahl jedes der Vektordatenelemente X(I) und U(I) jedem der nullten bis dritten Vektorpipeline- Sätze zugewiesen und ist gleich vierundsechzig. Daher wird der nullte Vektorpipeline-Satz den vierundsechzig Vektorelementen gegeben, die als 0, 4, 8, ..., 252 numeriert werden, während der erste Vektorpipeline-Satz den Vektorelementen gegeben wird, die als 1, 5, 9, ..., 253 numeriert werden. Ebenso werden die zweiten und die dritten Vektorpipeline-Sätze den Vektorelementen 2, 6, 10, ..., 254 und den Vektorelementen 3, 7, 11, ..., 255 gegeben.
- Aus dieser Tatsache heraus ist ohne weiteres zu verstehen, daß die Vektorregister der nullten bis dritten Vektorpipeline- Sätze zuerst mit einem Satz jeweils der Vektorelemente X(0), X(1), X(2) und X(3) geladen werden, und danach jeweils mit X(4), X(5), X(6) und X(7) geladen werden.
- In Fig. 1 werden die Vektorregister der nullten bis dritten Vektorpipeline-Sätze beim ersten Schritt SS1 mit Vektorelementen U(I) geladen. Ebenso werden die Vektorregister der nullten bis dritten Vektorpipeline-Sätze ebenfalls mit den Vektorelemente X(I) geladen, in einer Weise, die ähnlich zu den Vektorelementen U(I) ist, wie beim dritten Schritt SS3 gezeigt.
- Beim zweiten Schritt SS2 werden die Vektorelemente U(I), die in die Vektorregister der nullten bis dritten Vektorpipeline-Sätze geladen sind, gleichzeitig mit dem Skalardatenelement S in den jeweiligen Vektorpipeline-Sätze multipliziert, um Multiplikationsergebnisse zu erhalten. Die Multiplikationsergebnisse werden jeweils in den Vektorregistern der nullten bis dritten Vektorpipeline-Sätze gespeichert. Konkret werden die Multiplikationsergebnisse Speicherstellen der jeweiligen Vektorregister zugewiesen, die in Beziehung zu den Vektordatenelementzahlen bestimmt werden. Wie vorher erwähnt, wird der dritte Schritt SS3 ausgeführt, um die Vektorelemente X(I) in das Vektorregister in der oben erwähnten Weise zu speichern, während beim zweiten Schritt SS2 Multiplikationen berechnet werden. Der vierte Schritt SS4 wird gestartet, um die Summen der Vektorelemente X(I) und der Multiplikationsergebnisse zu berechnen, wenn beim dritten Schritt SS3 die Multiplikationsergebnisse berechnet werden und die Vektorelemente X(I) in die Vektorregister geladen werden. Die Summen werden beim fünften Schritt SS5 als Vektorsummenelemente im Speicher gespeichert. Auf das Speichern der Vektorsummenelemente hin, die von den jeweiligen Vektorpipeline-Sätzen geschickt werden, werden die Vektorsummenelemente in aufeinanderfolgend numerierte Elemente umgeordnet.
- Eine entsprechende Operation wird ausgeführt, um die anderen Vektorelemente Y(I) und Z(I) zu berechnen.
- Bezugnehmend auf Fig. 2, werden die Vektorvariablen X, Y und Z innerhalb erster bis dritter Ausführungszeiten in der dargestellten Weise hintereinander verarbeitet. Wie in Fig. 2 gezeigt, ist jede der ersten bis dritten Ausführungszeiten in eine Anstiegszeit R und eine Durchsatzzeit T unterteilt. Wenn die Anstiegszeit R und die Durchsatzzeit T für jede Vektorvariable gleich den Anstiegszeiten R und den Durchsatzzeiten T für die anderen Variablen sind, wird eine Gesamtheit der Ausführungszeiten gleich einer Summe von 3R und 3T und wird im folgenden als eine Gesamtverarbeitungszeit T1 bezeichnet.
- Das herkömmliche Informationsverarbeitungssystem ist nachteilig, wie in der Einleitung der gegenwärtigen Beschreibung dargelegt. Zum Beispiel wird angenommen, daß erste bis N-te Vektorberechnungen durch die Verwendung von nullten bis m-ten Vektorpipeline-Sätze auf die herkömmliche Weise ausgeführt werden. In diesem Fall wird die Gesamtverarbeitungszeit T1 gegeben durch:
- T1 = (R + [n/m] · t) · N, (1)
- wobei t die Anzahl der Referenztakte, n die Anzahl der Vektorelemente und [n/m] eine Ganzzahl repräsentiert, die durch Aufrunden der ersten Dezimalstelle erhalten wird.
- In Gleichung (1) ist, wenn angenommen wird, daß die Anzahl n der Vektorelemente extrem groß ist, die Anstiegszeit R im Vergleich mit dem Term n · t vernachlässigbar klein. Wenn jedoch die Anzahl n klein ist, wie der größte Teil jeder Ausführungszeit durch die Anstiegszeit R eingenommen.
- Andererseits sind Anstrengungen unternommen worden, die Anzahl t der Referenztakte zu reduzieren, um eine Arbeitsgeschwindigkeit zu verbessern. Jedoch sind solche Anstrengungen nicht so effektiv, den Term n · t zu vermindern. Es ist herausgefunden worden, daß die Anstiegszeit R stark von einem räumlichen Gebiet des Systems abhängig ist.
- Bezugnehmend auf Fig. 3, weist ein Informationsverarbeitungssystem gemäß einer bevorzugten Ausführungsform dieser Erfindung einen Speicherabschnitt 11, einen Speichersteuerabschnitt 12 und einen Prozessorabschnitt 13 auf, der betriebsfähig ist, Vektordatenelemente mit einer hohen Geschwindigkeit zu verarbeiten, in einer Weise, die später im Detail beschrieben werden soll.
- In Fig. 3 besteht der Speicherabschnitt 11 aus mehreren Bänken, die einen Hochgeschwindigkeitszugriff in Anbetracht einer Arbeitsgeschwindickeit des Prozessorabschnitts 13 ermöglichen. Mit dieser Struktur ist es möglich, durch die Verwendung einer Verschachtelungstechnik, einen Unterschied zwischen einem Maschinenzyklus des Prozessorabschnitts 13 und einer Zykluszeit jedes Speicherelements auszugleichen, das im Speicherabschnitt 11 enthalten ist.
- Der dargestellte Speichersteuerabschnitt 12 weist eine Speichersteuereinheit 121 und einen Speicherkreuzschienen schalter 122 auf. Die Speichersteuereinheit 121 ist mit dem Prozessorabschnitt 13 durch eine Signalleitung L1 verbunden, um die Bänke und den Speicherkreuzschienenschalter 122 zu überwachen oder zu beaufsichtigen. Zu diesem Zweck ist die Speichersteuereinheit 121 durch Signalleitungen L2 und L3 mit dem Speicherabschnitt 11 bzw. dem Speicherkreuzschienenschalter 122 verbunden. Konkret wird die Speichersteuereinheit 121 mit einem Anforderungscode versorgt, um Einheitssteuersignale durch die Signalleitungen L2 und L3 an den Speicherabschnitt 11 und den Speicherkreuzschienenschalter zu liefern.
- Andererseits ist die Speicherkreuzschieneneinheit 122 mit den Bänken und dem Prozessorabschnitt 13 durch Signalleitungsgruppen L4 und L5 verbunden und ist selektiv in einem Lade- oder Auslesemodus und einem Speichermodus betriebsfähig.
- Während des Lademodus wird der Speicherkreuzschienenschalter 122 von den Bänken durch die Signalleitungsgruppe L4 mit Datensignalen versorgt und ordnet die Datensignale als Reaktion auf die Einheitssteuersignale, die von der Speichersteuereinheit 121 geschickt werden, in umgeordnete Datensignale um. Die umgeordneten Datensignale werden durch die Signalleitungsgruppe L5 an den Prozessorabschnitt 13 geliefert. Andererseits werden während dem Speichermodus dem Speicherkreuzschienenschalter 122 durch die Signalleitungsgruppe L5 Datensignale vom Prozessorabschnitt 13 gegeben, um die Datensignale als Reaktion auf die Einheitssteuersignale durch die Signalleitungsgruppe L4 an die Bänke zu liefern. Als Ergebnis werden die Datensignale in Adressen der zu speichernden Bänke gespeichert. Hierin ist zu beachten, daß die Datensignale in Skalar- und Vektordatensignale klassifiziert werden, während die Befehle ebenfalls in Skalar- und Vektorbefehle klassifiziert werden.
- Nun weist der Prozessorabschnitt 13 einen Skalarprozessor 131 zur Verarbeitung der Skalardatensignale gemäß den Skalarbefehlen, einen Vektorprozessor 132 zur Verarbeitung der Vektordatensignale gemäß den Vektorbefehlen und einen Befehlskontroller 133 auf, der vom Speicherabschnitt 11 mit den Befehlen beliefert wird, um die Hardware-Ressourcen zu verwalten und um Befehlssteuersignale zu erzeugen, nämlich Skalar und Vektorbefehlsinformationssignale.
- Wie in der Technik bekannt ist, weist der Skalarprozessor 131 Allgemeinregister zum Speichern von Steuerparametern und Adreßparametern zusätzlich zu den Skalardatensignalen für die Skalarverarbeitung auf. Ferner sind eine Festkomma-Arithmetikeinheit, eine Fließkomma-Arithmetikeinheit, eine Logikeinheit und so weiter im Skalarprozessor 131 enthalten, um eine Adreßberechnung, ein Indexberechnung und eine Steuerparameterberechnung auszuführen.
- Im dargestellten Beispiel weist der Vektorprozessor 132 auf: nullte bis m-te Vektorpipeline-Sätze 150 bis 15 m, von denen jeder mehrere Vektorregister aufweist (die zusammen bei 16 dargestellt werden) zum Speichern der Vektordatensignale oder Elemente, mehrere Pipeline-Rechner 17, die mit den Vektorregistern 16 verbunden sind, und einen Pipeline-Kreuzschienenschalter 18 zum Übertragen von Vektordatensignalen längs Vektorpipelines jedes Satzes, wie im nullten Vektorpipeline-Satz 150 veranschaulicht wird. Zusätzlich sind die nullten bis m-ten Vektorpipeline-Sätze 150 bis 15 m mit einem Vektordatenspeicher 21 durch einen zusätzlichen Pipeline-Kreuzschienenschalter 22 verbunden.
- Wie später im Detail beschrieben wird, können die nullten bis m-ten Vektorpipeline-Sätze 150 bis 15 m parallel oder einzeln betrieben werden. Mit anderen Worten ist jeder Vektorpipeline-Satz 150 bis 15 m selektiv in einem Parallelmodus oder einem Einzelmodus betriebsfähig, die als erste bzw. zweite Modi bezeichnet werden können. Der Einzelmodus kann häufig als ein unabhängiger Modus bezeichnet werden.
- Mit dieser Struktur ist es möglich, auf den Vektordatenspeicher 21 von jedem der nullten bis m-ten Vektorpipeline- Sätze 150 bis 15 m zuzugreifen.
- Ferner weist der Befehlskontroller 133 auf: einen Befehlsdecoder 31, der mit dem Speichersteuerabschnitt 12 durch eine Signalleitung L6 verbunden ist, einen Skalarbefehlskontroller 32, der mit dem Befehlsdecoder 31 durch eine Signalleitung L7 verbunden ist, und einen Vektorbefehlskontroller 33, der mit dem Befehlsdecoder 31 durch eine Signalleitung L8 verbunden ist. Der Befehlsdecoder 31 wird vom Speicherabschnitt 11 durch die Signalleitung L6 mit einem Eingabebefehl versorgt, um den Eingabebefehl in einen decodierten Befehl zu decodieren und um zu entscheiden, ob der decodierte Befehl durch den Skalarbefehlskontroller 32 oder den Vektorbefehlskontroller 33 verarbeitet wird. Wenn der decodierte Befehl durch den Skalarbefehlskontrol ler 32 verarbeitet wird, wird der decodierte Befehl an den Skalarbefehlskontroller 32 geliefert, und andernfalls wird der decodierte Befehl an den Vektorbefehlskontroller 33 geliefert.
- Kurzgesagt ist jeder der Skalar- und Vektorbefehlskontroller 32 und 33 betriebsfähig, um Zustände von Hardware-Ressourcen, wie Register, Arithmetikeinheiten, Datenbusse, die in jedem Prozessor 131 und 132 enthalten sind, zu verwalten, um Zustände der Hardware-Ressourcen, die durch jeden Eingabebefehl benötigt werden, mit praktisch anwendbaren Zuständen zu vergleichen, die durch jeden Kontroller 32 und 33 verwaltet werden, und um eine Steueroperation so auszuführen, daß jede der Hardware-Ressourcen eingeschaltet wird, nachdem ein Besetztzustand aufgehoben wird, wenn jede Ressource in den Besetztzustand versetzt wird.
- Der dargestellte Skalarbefehlskontroller 32 verarbeitet ebenfalls Steuerbefehle zur Steuerung einer Gesamtheit des Systems zusätzlich zur Steuerung des Skalarprozessors 131. Überdies ist der Skalarbefehlskontroller 32 mit einem Modus-Merkerregister 35 verbunden, das einen Modus-Merker speichert, der dafür repräsentativ ist, ob die nullten bis m-ten Vektorpipeline-Sätze im Einzelmodus oder im Parallelmodus betrieben werden. In diesem Zusammenhang kann der Modus-Merker als ein Betriebsmodus-Merker bezeichnet werden. Der Betriebsmodus-Merker wird durch einen spezifischen der Steuerbefehle gesetzt oder rückgesetzt, die vom Skalarbefehlskontroller durch eine Signalleitung L9 gesendet werden. Im dargestellten Beispiel wird angenommen, daß die nullten bis m-ten Vektorpipeline-Sätze 150 bis 15 m im Einzelmodus betrieben werden, wenn der Betriebsmodus-Merker in den gesetzten Zustand versetzt wird, und sie andernfalls im Parallelmodus betrieben werden.
- Im dargestellten Vektorbefehlskontroller 33 ist ein lokaler Befehlsdecoder 41 mit dem Befehlsdecoder 31 und dem Modus-Merkerregister 35 durch die Signalleitung L8 bzw. eine Signalleitung L10 verbunden. Der lokale Befehlsdecoder 41 ist auch mit den nullten bis m-ten Vektorbefehlsteuereinheiten 420 bis 42 m verbunden, die jeweils den nullten bis m-ten Vektorpipeline- Sätzen 150 bis 15 m entsprechen.
- Wenn der Betriebsmodus-Merker in den rückgesetzten Zustand versetzt wird, um den Parallelmodus anzuzeigen, versorgt der lokale Befehlsdecoder 41 alle Vektorbefehlsteuereinheiten 420 bis 42 m mit den Vektorbefehlsinformationssignalen, die vom Befehlsdecoder 31 gesendet werden. Folglich werden die Vektorbefehlsinformationssignale in die Vektorbefehlsteuereinheiten 420 bis 42 m gesetzt.
- Wenn andererseits der Betriebsmodus-Merker in den gesetzten Zustand versetzt wird, um den Einzelmodus anzuzeigen, wird eine ausgewählte der Vektorbefehlsteuereinheiten durch ein Vektorpipeline-Satz-Anzeigesignal angezeigt, das vom Befehlsdecoder 31 gesendet wird, und wird mit dem Vektorsteuerinformationssignal durch den lokalen Befehlsdecoder 41 versorgt.
- Jede der Vektorbefehlsteuereinheiten 420 bis 42 m weist ein Vektorlängenregister 43 auf, das dazu dient, eine Operation des entsprechenden Vektorpipeline-Satzes zu definieren. Die nullten bis m-ten Vektorbefehlsteuereinheiten 420 bis 42 m sind miteinander durch Signalleitungen L11 verbunden, um einander Steuerinformationssignale zu überwachen oder zu überprüfen, und sind mit der Speichersteuereinheit 121 durch eine Signalleitungsgruppe L12 verbunden.
- Bezugnehmend auf Fig. 4, wird ein Befehl veranschaulicht, der im Informationsverarbeitungssystem verwendet wird, das in Fig. 3 dargestellt wird, und der ein Operationscodefeld OP für einen Operationscode und ein Adreßfeld aufweist, das in erste, zweite und dritte Felder x, y und z unterteilt ist. Das erste Feld x weist ein Vektorpipeline-Satz-Anzeigefeld Cx und ein Operationsergebnis-Speicherregister-Anzeigefeld Vx auf, während das zweite Feld y ein Berechnungsdatenregister-Anzeigefeld Vy aufweist. Das dritte Feld z weist ein Vektordatenspeicher- Steuerfeld Cx und ein Vektordatenregister-Anzeigefeld Vz auf.
- Konkret dient das Vektorpipeline-Satz-Anzeigefeld Cx dazu, die Vektorpipeline-Sätze anzuzeigen, die den Befehl im Einzelmodus ausführen. Daher wird das Vektorpipeline-Satz-Anzeigefeld Cx verwendet, um die Vektorpipeline-Sätze anzuzeigen, wenn der Betriebsmodus-Merker gesetzt ist. Das Operationsergebnis-Speicherregister-Anzeigefeld Vx und das Berechnungsdatenregister- Anzeigefeld Vy dienen dazu, die Vektorregister anzuzeigen, die im Vektorpipeline-Satz eingeschlossen sind und die durch den Befehl verwendet werden. Das Vektordatenspeichersteuerfeld Cz dient dazu, festzustellen, ob der Vektordatenspeicher 131 durch den fraglichen Befehl verwendet wird oder nicht. Wenn zum Beispiel dieses Feld Cz in einen Logikpegel "1" gesetzt ist, wird der Vektordatenspeicher 131 verwendet, und andernfalls wird der Vektordatenspeicher 131 nicht verwendet. Das Vektordatenregister-Anzeigefeld Vz zeigt die Vektordatenspeicheranzahl an, die durch den Befehl verwendet wird, wenn das Steuerfeld Cz in den Logikpegel "1" gesetzt ist. Die anderen Felder werden nicht beschrieben werden, weil sie für die vorliegende Erfindung nicht bachtenswert sind.
- Hierin sollte beachtet werden, daß das dargestellte Informationsverarbeitungssystem in einer Weise betriebsfähig ist, die ähnlich zum herkömmlichen Informationsverarbeitungssystem ist, wenn der Betriebsmodus-Merker in den rückgesetzten Zustand versetzt wird, um den Parallelmodus anzuzeigen, weil alle Vektorpipeline-Sätze gleichzeitig parallel miteinander betrieben werden. Folglich wird keine Beschreibung des Parallelmodus, sondern nur des Einzelmodus gegeben.
- Erneut auf Fig. 3 bezugnehmend, sind die ersten bis m-ten Vektorbefehlsteuereinheiten 420 bis 42 m im Vektorbefehlskontroller 33 enthalten, um die nullten bis m-ten Vektorpipeline- Sätze 150 bis 15 m zu betreiben. Dies unterscheidet sich vom herkömmlichen Informationsverarbeitungssystem, das nur einen einzelnen Satz einer Vektorbefehlsteuereinheit aufweist, um nur einen Betrieb im Parallelmodus auszuführen.
- Wenn die nullten bis m-ten Vektorbefehlssteuereinheiten 420 bis 42 m im Vektorbefehlskontroller 33 enthalten sind und unabhängig voneinander betriebsfähig sind, könnte eine Störung oder ein Fehler einzeln in jeder der nullten bis m-ten Vektorbefehlsteuereinheiten 420 bis 42 m auftreten. Eine solche fehlerhafte Vektorbefehlsteuereinheit könnte in einer Weise betrieben werden, die sich von den anderen unterscheidet. Unter Umständen sollte ein fehlerhafte Vektorbefehlsteuereinheit korrekt ermittelt werden. Zu diesem Zweck werden die Vektorbefehlsteuereinheiten 420 bis 42 m untereinander überwacht, indem sie spezifische Informations- oder Steuersignale austauschen, die durch die Signalleitung L11 an jeden Vektorpipeline-Satz gesendet werden. Mit dieser Struktur ist es möglich, das Auftreten eines Fehlers oder einer Störung im Parallelmodus zu ermitteln, indem die Erzeugung eines unterschiedlichen der spezifischen Steuersignale von einer der Vektorbefehlsteuereinheiten überwacht wird, die mit demselben Timing zu betreiben sind. Die Signalleitung L11 dient dazu, die Störung in jeder der Vektorbefehlsteuereinheiten 420 bis 42 m zu ermitteln.
- Nun wird eine Beschreibung des Einzelmodus gegeben, der ausgeführt wird, indem der Betriebsmodus-Merker in den gesetzten Zustand versetzt wird. Hierin sei vorausgesetzt, daß eine besondere Vektorverarbeitungsoperation, wie in Verbindung mit Fig. 2 erwähnt, im Informationsverarbeitungssystem ausgeführt wird, das in Fig. 3 dargestellt wird. Auf jeden Fall ist die besondere Vektorverarbeitungsoperation für eine Summe von Produkten der drei Vektorvariablen X(I), Y(I) und Z(I) repräsentativ.
- Um eine solche besondere Vektorverarbeitungsoperation im Einzel- oder unabhängigen Modus gemäß der vorliegenden Erfindung auszuführen, wird eine Folge von Befehlen durch einen Kompilierer erzeugt und wird auf einer Assembler-Ebene beschrieben, wie im folgenden veranschaulicht wird.
- LVL(0) S0
- VLD(0) VR0
- VFMP(0) VR1, S10, VR0
- VLD(0) VR2
- VFAD(0) VR3, VR1, VR2
- VST(0) VR3
- VLD(1) VR0
- VFMP(1) VR1, S10, VR0
- VLD(1) VR2
- VFAD(1) VR3, VR1, VR2
- VST(1) VR3
- VLD(2) VR0
- VFMP(2) VR1, S10, VR0
- VLD(2) VR2
- VFAD(2) VR3, VR1, VR2
- VST(2) VR3
- In der obigen Befehlsfolge dient der Befehl PARSET dazu, irgendeinen des Parallelmodus und des Einzelmodus festzulegen, und versetzt den Betriebsmodus-Merker in den gesetzten Zustand und den rückgesetzten Zustand, wenn ein erster Operand "S" bzw. "R" trägt. Im Beispiel wird der Betriebsmodus-Merker in den Modus-Merkerregister 35 gesetzt, um den Vektorprozessor 132 im Einzelmodus ausführen zu lassen, wie oben erwähnt.
- Der Befehl LVL(n) S0, wie in der zweiten Reihe gezeigt, definiert, einen Inhalt eines nullten der Skalarregister S0 in das Vektorlängenregister 43 (Suffix weggelassen) einer n-ten der Vektorbefehlsteuereinheiten 42 zu laden. Zusätzlich dient der Befehl VLD(n) zum Laden eines Vektordatensignals, das im n- ten Vektorppeline-Satz gespeichert ist, während der Befehl VFMP(n) eine Fließkomma-Multiplikation von Vektordatensignalen im n-ten Vektorpipeline-Satz anzeigt. Ebenso zeigen die Befehle VFAD(n) und VST(n) eine Fließkomma-Addition von Vektordatensignalen bzw. eines Speichers der Vektordatensignale im n-ten Vektorpipeline-Satz an. Solche Befehle sind ähnlich zu herkömmlichen Befehlen, außer daß jeder der erstgenannten Befehle ein Anzeigefeld aufweist, wie Cx in Fig. 4, das einen der Vektorpipeline-Sätze anzeigt, der im Einzelmodus verarbeitet wird.
- Berücksichtigt man das vorstehende, wird angenommen, daß die besondere Vektorverarbeitungsoperation entsprechend der oben erwähnten Befehlsfolge ausgeführt wird. Zuerst wird der Befehl PARSET S aus dem Speicherabschnitt 11 ausgelesen, um durch die Signalleitung L6 zum Befehlsdecoder 31 des Befehlskontrollers 133 geschickt zu werden. Versorgt mit dem Befehl PARSET S, entscheidet der Befehlsdecoder 133, daß der Befehl PARSET S ein spezifischer Skalarbefehl zum Versetzen des Modus- Merkerregisters 35 in den gesetzten Zustand des Logikpegels "1" ist. Folglich liefert der Befehlsdecoder 31 den Befehl PARSET S an den Skalarbefehlskontroller 32 durch die Signalleitung L7. Der Skalarbefehlskontroller 32 versetzt das Modus-Merkerregister 35 in den gesetzten Zustand durch die Signalleitung L9. Folglich wird der Betriebsmodus-Merker gesetzt, um die Vektorpipeline-Sätze in der folgenden Vektorverarbeitung einzeln zu steuern.
- Anschließend wird der nächste Befehl LVL(0) S0 durch den Befehlsdecoder 31 in die entsprechenden Vektorbefehlsinformationssignale decodiert, die durch die Signalleitung L8 zum lokalen Befehlsdecoder 41 des Vektorbefehlskontrollers 33 übertragen werden, dem der Betriebsmodus-Merker des Logikpegels "1" durch die Signalleitung L10 gegeben wird. Versorgt mit dem Betriebsmodus-Merker des Logikpegels "1" und dem Befehl LVL(0) S0, ermittelt der lokale Befehlsdecoder 41 den Einzelmodus aus dem Betriebsmodus-Merker des Logikpegels "1" und setzt einen Inhalt des Skalarregisters S0 in das Vektorlängenregister 430 der nullten Vektorbefehlsteuereinheit 420, die durch die Pipeline-Anzeigeinformation "0" des Befehls LVL(0) angezeigt wird. Folglich hält das Vektorlängenregister 430 den Inhalt des Skalarregisters S0 als eine Vektorlänge bis die Vektorlänge durch den nächsten LVL(0) Befehl erneuert wird, und als Ergebnis der nullte Vektorpipeline-Satz 190 die Vektorverarbeitungsoperation gemäß der Vektorlänge ausführt, die im Vektorlängenregister 430 gesetzt ist.
- Ebenso decodiert der Befehlsdecoder 31 hintereinander die Befehle VLD(0), VFMP(0), VLD(0), VFAT(0) und VST(0), um die decodierten Befehle, nämlich die Vektorbefehlsinformationssignale zum Vektorbefehlskontroller 33 durch die Signalleitung L8 zu schicken. Der Vektorbefehlskontroller 33 entscheidet, daß der Betriebsmodus-Merker den Einzelmodus anzeigt und daß die obigen Befehle die nullte Vektorbefehlssteuereinheit 420 anzeigen. Folglich werden Befehlsinformationssignale in der nullten Vektorbefehlssteuereinheit 420 gesetzt und gehalten.
- In der Zwischenzeit sind die nullten bis m-ten Vektorbefehlsteuereinheiten 420 bis 42 m jeweils mit den nullten bis m- ten Vektorpipeline-Sätzen 150 bis 15 m durch eine Signalleitungsgruppe L13 verbunden, wie in Fig. 3 dargestellt.
- Im dargestellten Beispiel, verwaltet die nullte Vektorbefehlssteuereinheit 420 Zustände von Hardware-Ressourcen, die im nullten Vektorpipeline-Satz 150 enthalten sind, um den nullten Vektorpipeline-Satz 150 mit einem Ausführungsstartsignal zusammen mit Steuerinformationssignalen zu versorgen, wenn empfangene Befehle den nullten Vektorpipeline-Satz 150 verwenden und die Hardware-Ressourcen des nullten Pipeline-Satzes 150 in betriebsfähige Zustände versetzt werden.
- Versorgt mit dem Ausführungsstartsignal, führt der nullte Vektorpipeline-Satz 150 eine Verarbeitungsoperation gemäß den Steuerinformationssignalen, die zusammen mit dem Ausführungsstartsignal gesendet werden, unabhängig von den anderen Vektorpipeline-Sätzen aus.
- Wenn andererseits die empfangenen Befehle einen Speicherzugriffsbefehl angeben, wird ein Anforderungsinformationssignal, nämlich ein Anforderungscode, der den Vektorpipeline- Satz-Betriebsmodus-Merker enthält, und das Vektorpipeline- Satz-Anzeigesignal an den Speichersteuerabschnitt 12 durch die Signalleitung L12 übertragen, nachdem die Hardware-Ressourcen des nullten Vektorpipeline-Satzes in Übertragungszustände versetzt werden. Indem sie auf das Anforderungsinformationssignal anspricht, entscheidet die Speichersteuereinheit 121 den Einzelmodus aus dem Betriebsmodus-Merker, der im Anforderungsinformationssignal enthalten ist und entscheidet auch den nullten Vektorpipeline-Satz 150 als ein Zugriffsobjekt aus dem Vektorpipeline-Satz-Anzeigesignal. In der oben erwähnten Befehlsfolge wird, wenn der Befehl VLD(0) der dritten Reihe ausgeführt wird, der Speicherkreuzschienenschalter 122 so gesteuert, daß alle Vektordatensignale, die aus dem Speicherabschnitt 11 abgerufen werden, hintereinander zum Vektorregister des nullten Vektorpipeline-Satzes 150 in der Form von umgeordneten Datensignalen geschickt werden.
- Einhergehend mit der Ausführung der oben erwähnten Befehle, empfängt und decodiert der Befehlskontroller 133 hintereinander die nächste folgende Befehlsfolge, wie LVL(1), VLAD(1) und so weiter, auf eine ähnliche Weise. Die nächste folgende Befehlsfolge dient dazu, wie oben veranschaulicht, den ersten Vektorpipeline-Satz 151 zu betreiben und wird an den Vektorbefehlskontroller 33 in der Form von Befehlsinformationssignalen übertragen. Die Befehlsinformationssignale werden in die erste Vek torbefehlssteuereinheit 421 gemäß dem Vektorpipeline-Satz-Anzeigesignal gesetzt. Die erste Vektorbefehlssteuereinheit 421 verwaltet Zustände von Hardware-Ressourcen, die im ersten Vektorpipeline-Satz 151 enthalten sind, um eine Ausführungsanzeige eines Ausführungsbefehl an den ersten Vektorpipeline-Satz 151 auszugeben.
- In einer ähnlichen Weise wird eine andere Befehlsfolge, wie LVL(2), VLD(2) in die zweite Vektorbefehlssteuereinheit 422 gesetzt, um darin hintereinander verarbeitet zu werden. Auf jeden Fall kann jede Operation in den nullten bis zweiten Vektorpipeline-Sätzen 150 bis 152 auf eine in Fig. 1 dargestellte Weise ausgeführt werden.
- Praktisch wird jeder Befehlsfolge für die nullten bis zweiten Vektorpipeline-Sätze 150 bis 152 synchron mit dem Maschinenzyklus in einer Pipeline-Art innerhalb jedes der nullten bis zweiten Vektorpipeline-Sätze 150 bis 152 verarbeitet.
- Hierin ist es möglich, jede der Befehlsfolgen vom Befehlsdecoder 133 an die entsprechenden Vektorbefehlsteuereinheiten im wesentlichen parallel miteinander zu liefern.
- Bezugnehmend auf Fig. 5, können die nullten bis zweiten Vektorpipeline-Sätze 150 bis 152 die Verarbeitungsoperation, die die Variablen X(I), Y(I) und Z(I) betrifft, im wesentlichen parallel miteinander ausführen. In Fig. 5 wird eine Gesamtverarbeitungszeit T2 durch eine Summe einer Anstiegszeit R, einer Durchsatzzeit T, und einer Zusatzzeit repräsentiert, die notwendig ist, einen Datensatz jeder Variablen Y(I) und Z(I) zu erheben.
- Angenommen, daß die ersten, zweiten und dritten Verarbeitungen durch die Verwendung einer gemeinsamen Variablen oder Parameters P(I) ausgeführt werden. In diesem Fall kann die gemeinsame Variable P(I) vorher aus dem Speicherabschnitt 11 aus gelesen und im Vektordatenspeicher 21 gespeichert werden, um jedesmal durch den Pipeline-Kreuzschienenschalter 22 aus dem Vektordatenspeicher 21 in jeden Vektorpipeline-Satz geladen zu werden, wenn die gemeinsame Variable P(I) in jeder der ersten bis dritten Verarbeitungen verwendet wird.
- Zum Beispiel ist eine solche gemeinsame Verwendung der Variablen P(I) sehr effektiv, um die ersten bis dritten Verarbeitungen auszuführen, die bei A, B und C wie folgt dargestellt werden.
- DO 10 I = 1, 5
- X(I) = X(I) + P(I) · U(I) (A)
- Y(I) = Y(I) + P(I) · V(I) (B)
- Z(I) = Z (I) + P(I) · W(I) (C)
- 10 CONTINUE
- Mit dieser Struktur ist es möglich, eine Zusatzzeit im Vergleich mit dem herkömmlichen Informationsverarbeitungssystem, wobei ein gemeinsamer Speicher zu Lieferung einer solchen gemeinsamen Variablen zwischen Aufgaben verwendet wird, abzukürzen. Dies ist so, weil eine Anstiegszeit für eine Lade/Speicheroperation kurz wird.
- Wie vorher erwähnt, kann das erfindungsgemäße Informationsverarbeitungssystem einzeln oder unabhängig jeden Vektorpipeline-Satz bearbeiten. Daher ist die Gesamtverarbeitungszeit T2 dieser Erfindung gegeben durch:
- T2 = ((s + n · t) · N)/m, (2)
- wobei s für eine Anstiegszeit jeder Vektoroperation; n für die Anzahl der Vektordatenelemente; t für die Anzahl der Referenztakte; m für die Anzahl der Pipelines; und N für die Anzahl der Vektorberechnungen repräsentativ ist.
- Wenn die Gleichungen (1) und (2) miteinander verglichen werden, ist eine Differenz zwischen den Gesamtverarbeitungszeiten T1 und T2 gegeben durch:
- T1 - T2 = N · s · (1 - 1/m). (3)
- Aus Gleichung (2) ist ohne weiteres zu verstehen, daß die vorliegende Erfindung verglichen mit dem herkömmlichen Informationsverarbeitungssystem eine Verminderung der Gesamtverarbeitungszeit ermöglicht.
- Zusätzlich kann ein Mehraufgabenbetrieb parallel miteinander erzielt werden, mit einer kleinen Zusatzzeit, wenn jede Aufgabe eine kleine Anzahl von Vektorelementen aufweist.
- Während diese Erfindung soweit in Verbindung mit einer bevorzugten Ausführungsform derselben beschrieben worden ist, wird es für Fachleute ohne weiteres möglich sein, diese Erfindung auf verschiedene andere Weisen in die Praxis umzusetzen. Zum Beispiel ist es möglich, alle anderen Vektorberechnungen, außer der besonderen Vektorberechnung auszuführen.
Claims (10)
1. Informationsverarbeitungssystem mit einem
Speicherabschnitt (11) zum Speichern von Datensignalen und einer Folge
von Befehlen, einem Verarbeitungsabschnitt (13) zum
Verarbeiten der Datensignale gemäß den Befehlen und einen
Speichersteuerabschnitt (12) zum Steuern der Datensignale und
der Befehle, um die Datensignale und die Befehle zwischen
dem Verarbeitungsabschnitt und dem Speicherabschnitt zu
liefern,
wobei die Datensignale in Skalar- und Vektordatensignale
klassifiziert werden, während die Befehle ebenfalls in
Skalar- und Vektorbefehle klassifiziert werden,
wobei der Verarbeitungsabschnitt (13) aufweist: einen
Befehlskontroller (133), der durch den
Speichersteuerabschnitt (12) mit der Befehlsfolge versorgt wird, zum
Erzeugen von Skalar- und Vektorbefehlsinformationssignalen als
Antwort auf die Skalar- bzw. die Vektorbefehle, einen
Skalarprozessor (131) zum Verarbeiten der Skalardatensignale,
wenn die Skalarbefehlsinformationssignale vom
Befehlskontroller (133) erzeugt werden, und einen Vektorprozessor
(132) zum Verarbeiten der Vektordatensignale, um ein
Ergebnissignal zu erzeugen, das repräsentativ für ein Ergebnis
der Verarbeitung ist, wenn die
Vektorbefehlsinformationssignale vom Befehlskontroller (133) erzeugt werden,
wobei der Vektorprozessor (132) mehrere Vektorpipeline-
Sätze umfaßt zum Verarbeiten der Vektordatensignale auf
Pipeline-Arten als Antwort auf die
Vektorinformationssignale in Zusammenarbeit mit dem Speichersteuerabschnitt
(14) und selektiv in einem ersten Modus und einem zweiten
Modus betriebsfähig ist, um die Vektorpipeline-Sätze
jeweils parallel miteinander zu betreiben und sie in einer im
wesentlichen parallelen Weise zu betreiben, dadurch
gekennzeichnet, daß:
der zweite Modus dazu dient, die Vektorpipeline-Sätze
unabhängig voneinander einzeln zu betreiben;
wobei die Befehle einen Modusbefehl aufweisen zum Betreiben
der Vektorpipeline-Sätze in einem ausgewählten der ersten
und zweiten Modi, während die Befehle Anzeigefelder
aufweise, von denen jedes einen der Vektorpipeline-Sätze
anzeigt, die im zweiten Modus verwendet werden;
wobei der Befehlskontroller (133) aufweist:
eine Modusanzeigeeinrichtung (35), um die Vektorpipeline-
Sätze parallel miteinander bzw. unabhängig voneinander zu
betreiben, wenn die ersten bzw. zweiten Modi durch den
Modusbefehl angezeigt werden;
wobei der Befehlskontroller (133) im zweiten Modus
betriebsfähig ist, um die Befehle hintereinander an die
Vektorpipeline-Sätze geordnet unter Bezugnahme auf die Anzeigefelder
zu liefern.
2. Informationsverarbeitungssystem nach Anspruch 1, wobei der
Befehlskontroller (133) aufweist:
eine Decodiereinrichtung (31) zum Decodieren des
Modusbefehls, um einen Betriebsmodus-Merker zu erzeugen, der
repräsentativ für irgendeinen der ersten und zweiten Modi ist;
wobei die Modusanzeigeeinrichtung aufweist:
eine Merkerregistereinrichtung (35) zum Speichern des
Betriebsmodus-Merkers, wenn der Modusbefehl durch die
Decodiereinrichtung decodiert wird; und
einen Vektorbefehlskontroller (33), der mit der
Decodiereinrichtung (31) und der Merkerregistereinrichtung (35)
gekoppelt ist zur Steuerung der Vektorpipeline-Sätze (150 bis
15 m) in irgendeinem der ersten und zweiten Modi.
3. Informationsverarbeitungssystem nach Anspruch 1 oder 2,
wobei jeder der Vektorbefehle ein Pipeline-Satz-Anzeigefeld
(Cx) aufweist zum Anzeigen, welcher der Vektorpipeline-
Sätze (150 bis 15 m) verwendet wird, wenn der zweite Modus
durch die Merkerregistereinrichtung (35) angezeigt wird.
4. Informationsverarbeitungssystem nach Anspruch 2 oder 3,
wobei der Vektorbefehlskontroller (33) aufweist:
mehrere Vektorsteuereinheiten (420 bis 42 m), die mit den
jeweiligen Vektorpipeline-Sätzen (150 bis 15 m) verbunden sind
zum einzelnen Betreiben der jeweiligen Vektorpipeline-
Sätze, wenn der zweite Modus durch die
Merkerregistereinrichtung (35) angezeigt wird.
5. Informationsverarbeitungssystem nach einem der Ansprüche 1
bis 4, wobei die Vektordatensignale aus mehreren
Vektorelementen zusammengesetzt sind, die eine Vektorlänge
definieren, wobei jede der Vektorsteuereinheiten (420 bis 42 m) ein
Vektorlängenregister (43) aufweist zum Speichern der
Vektorlänge, um jeden der Vektorpipeline-Sätze (150 bis 15 m)
im zweiten Modus zu steuern.
6. Informationsverarbeitungssystem nach einem der Ansprüche 1
bis 5, wobei der Vektorprozessor ferner aufweist:
einen Vektordatenspeicher (21), der durch jeden der
Vektorpipeline-Sätze (150 bis 15 m) zugänglich ist zum Speichern
eines gemeinsamen Datensignals, das in jedem der
Vektorpipeline-Sätze im zweiten Modus verwendet wird; und
einen Pipeline-Kreuzschienenschalter (22) zwischen den
Vektorpipeline-Sätzen (150 bis 15 m) und dem
Vektordatenspeicher (21) zum Liefern des gemeinsamen Datensignals zwischen
dem Vektordatenspeicher und den jeweiligen Vektorpipeline-
Sätzen.
7. Informationsverarbeitungssystem nach einem der Ansprüche 1
bis 6, wobei der Vektorbefehlskontroller ferner aufweist:
eine Einrichtung (121), die betriebsfähig ist, spezifische
Informationen unter den Vektorsteuereinheiten (420 bis 42 m)
auszutauschen, um zu prüfen, ob jede der
Vektorsteuereinheiten fehlerhaft ist oder nicht.
8. Informationsverarbeitungssystem nach einem der Ansprüche 1
bis 7, wobei jeder der Vektorpipeline-Sätze (150 bis 15 m)
aufweist:
mehrere Vektorregister (16) zum Speichern der
Vektordatensignale; und
mehrere Pipeline-Rechner (17), die mit den jeweiligen
Vektorregistern (16) gekoppelt sind zur Verarbeitung der
Vektordatensignale, um das Ergebnissignal zu erzeugen.
9. Informationsverarbeitungssystem nach einem der Ansprüche 1
bis 8, wobei der Befehlskontroller (133) ferner aufweist:
einen Skalarbefehlskontroller (32), der mit den
Skalarbefehlen versorgt wird zum Liefern der
Skalarbefehlsinformationssignale an den Skalarprozessor (131).
10. Verarbeitungsabschnitt zur Verwendung in einem
Informati
onsverarbeitungssystem nach einem der Ansprüche 1 bis 9,
wobei der Verarbeitungsabschnitt (13) aufweist: einen
Befehlskontroller (133), der mit der Befehlsfolge durch den
Speichersteuerabschnitt (12) versorgt wird zum Erzeugen von
Skalar- und Vektorbefehlsinformationssignalen als Antwort
auf die Skalar- bzw. die Vektorbefehle, einen
Skalarprozessor (131) zum Verarbeiten der Skalardatensignale, wenn die
Skalarbefehlsinformationssignale vom Befehlskontroller
(133) erzeugt werden, und einen Vektorprozessor (132) zum
Verarbeiten der Vektordatensignale, um ein Ergebnissignal
zu erzeugen, das repräsentativ für ein Ergebnis der
Verarbeitung ist, wenn die Vektorbefehlsinformationssignale vom
Befehlskontroller (133) erzeugt werden,
wobei der Vektorprozessor (132) mehrere Vektorpipelines
(150 bis 15 m) aufweist zum Verarbeiten der
Vektordatensignale in Pipeline-Arten als Antwort auf die
Vektorinformationssignale in Zusammenarbeit mit dem
Speichersteuerabschnitt (12),
wobei die Befehle einen Modusbefehl zum Betreiben der
Vektorpipeline-Sätze in einem ausgewählten eines ersten Modus
und eines zweiten Modus, der sich vom ersten Modus
unterscheidet, aufweisen;
wobei der Befehlskontroller (133) aufweist:
eine Modusanzeigeeinrichtung (35) zum Betreiben der
Vektorpipeline-Sätze (150 bis 15 m) parallel miteinander bzw.
unabhängig voneinander, wenn die ersten bzw. die zweiten Modi
durch den Modusbefehl angezeigt werden.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP3107721A JPH04336378A (ja) | 1991-05-14 | 1991-05-14 | 情報処理装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
DE69230626D1 DE69230626D1 (de) | 2000-03-09 |
DE69230626T2 true DE69230626T2 (de) | 2000-06-15 |
Family
ID=14466265
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE69230626T Expired - Fee Related DE69230626T2 (de) | 1991-05-14 | 1992-05-13 | Informationsverarbeitungssystem mit der Fähigkeit zum Betreiben von mehreren Vektorpipelines in zwei unterscheidlichen Wirkungsweisen |
Country Status (4)
Country | Link |
---|---|
US (1) | US5625834A (de) |
EP (1) | EP0517013B1 (de) |
JP (1) | JPH04336378A (de) |
DE (1) | DE69230626T2 (de) |
Families Citing this family (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH07271764A (ja) * | 1994-03-24 | 1995-10-20 | Internatl Business Mach Corp <Ibm> | 計算機プロセッサ及びシステム |
US5630161A (en) * | 1995-04-24 | 1997-05-13 | Martin Marietta Corp. | Serial-parallel digital signal processor |
US5961632A (en) * | 1996-07-25 | 1999-10-05 | Texas Instruments Incorporated | Microprocessor with circuits, systems, and methods for selecting alternative pipeline instruction paths based on instruction leading codes |
KR100267089B1 (ko) * | 1996-08-19 | 2000-11-01 | 윤종용 | 스칼라/벡터연산이조합된단일명령복수데이터처리 |
US6401194B1 (en) * | 1997-01-28 | 2002-06-04 | Samsung Electronics Co., Ltd. | Execution unit for processing a data stream independently and in parallel |
US5913069A (en) * | 1997-12-10 | 1999-06-15 | Cray Research, Inc. | Interleaving memory in distributed vector architecture multiprocessor system |
US5946496A (en) * | 1997-12-10 | 1999-08-31 | Cray Research, Inc. | Distributed vector architecture |
US6823016B1 (en) * | 1998-02-20 | 2004-11-23 | Intel Corporation | Method and system for data management in a video decoder |
US6263417B1 (en) * | 1998-10-30 | 2001-07-17 | Nec Corporation | Method of implementing vector operation using a processor chip which is provided with a vector unit |
US6665749B1 (en) * | 1999-08-17 | 2003-12-16 | Nec Electronics, Inc. | Bus protocol for efficiently transferring vector data |
US6857061B1 (en) | 2000-04-07 | 2005-02-15 | Nintendo Co., Ltd. | Method and apparatus for obtaining a scalar value directly from a vector register |
GB2382887B (en) * | 2001-10-31 | 2005-09-28 | Alphamosaic Ltd | Instruction execution in a processor |
DE102007018604A1 (de) * | 2007-04-18 | 2008-10-23 | Rs2 Software Ltd. | System, Verfahren und Karte zur Authentisierung und Verifizierung mit einem einmaligen, einzigen PIN, basierend auf der Biometrie |
US8522076B2 (en) * | 2010-06-23 | 2013-08-27 | International Business Machines Corporation | Error detection and recovery in a shared pipeline |
US9285793B2 (en) * | 2010-10-21 | 2016-03-15 | Bluewireless Technology Limited | Data processing unit including a scalar processing unit and a heterogeneous processor unit |
US9830156B2 (en) * | 2011-08-12 | 2017-11-28 | Nvidia Corporation | Temporal SIMT execution optimization through elimination of redundant operations |
GB2553010B (en) * | 2017-01-16 | 2019-03-06 | Imagination Tech Ltd | Efficient data selection for a processor |
US10997116B2 (en) * | 2019-08-06 | 2021-05-04 | Microsoft Technology Licensing, Llc | Tensor-based hardware accelerator including a scalar-processing unit |
US11409533B2 (en) | 2020-10-20 | 2022-08-09 | Micron Technology, Inc. | Pipeline merging in a circuit |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS59160267A (ja) * | 1983-03-02 | 1984-09-10 | Hitachi Ltd | ベクトル処理装置 |
JPS60136872A (ja) * | 1983-12-26 | 1985-07-20 | Hitachi Ltd | ベクトル処理装置 |
CA1233260A (en) * | 1985-03-13 | 1988-02-23 | Chuck H. Ngai | High performance parallel vector processor having a modified vector register/element processor configuration |
JP2610821B2 (ja) * | 1986-01-08 | 1997-05-14 | 株式会社日立製作所 | マルチプロセツサシステム |
JP2540199B2 (ja) * | 1988-02-25 | 1996-10-02 | アメリカン テレフォン アンド テレグラフ カムパニー | デバイスの製造方法 |
JP2658397B2 (ja) * | 1989-06-13 | 1997-09-30 | 日本電気株式会社 | マルチプロセッサシステム |
US5239654A (en) * | 1989-11-17 | 1993-08-24 | Texas Instruments Incorporated | Dual mode SIMD/MIMD processor providing reuse of MIMD instruction memories as data memories when operating in SIMD mode |
US5355508A (en) * | 1990-05-07 | 1994-10-11 | Mitsubishi Denki Kabushiki Kaisha | Parallel data processing system combining a SIMD unit with a MIMD unit and sharing a common bus, memory, and system controller |
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 |
CA2073516A1 (en) * | 1991-11-27 | 1993-05-28 | Peter Michael Kogge | Dynamic multi-mode parallel processor array architecture computer system |
-
1991
- 1991-05-14 JP JP3107721A patent/JPH04336378A/ja active Pending
-
1992
- 1992-05-13 EP EP92108062A patent/EP0517013B1/de not_active Expired - Lifetime
- 1992-05-13 DE DE69230626T patent/DE69230626T2/de not_active Expired - Fee Related
-
1995
- 1995-03-27 US US08/411,076 patent/US5625834A/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
US5625834A (en) | 1997-04-29 |
JPH04336378A (ja) | 1992-11-24 |
EP0517013B1 (de) | 2000-02-02 |
EP0517013A2 (de) | 1992-12-09 |
DE69230626D1 (de) | 2000-03-09 |
EP0517013A3 (de) | 1994-02-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE69230626T2 (de) | Informationsverarbeitungssystem mit der Fähigkeit zum Betreiben von mehreren Vektorpipelines in zwei unterscheidlichen Wirkungsweisen | |
DE68927911T2 (de) | Datenverarbeitungssystem | |
DE68927371T2 (de) | Verfahren und Vorrichtung zur Verarbeitung von mehreren Zustandscodes wie für einen Parallel-Pipeline-Rechner | |
DE69227664T2 (de) | Hardwarekonfiguriertes Betriebssystemkern für einen Multitaskprozessor | |
DE69033398T2 (de) | Rechnerarchitektur mit Mehrfachbefehlsausgabe | |
DE69636861T2 (de) | Mikroprozessor mit Lade-/Speicheroperation zu/von mehreren Registern | |
DE3650413T2 (de) | Verfahren und Vorrichtung zur Annulierung eines Befehls. | |
DE68923264T2 (de) | Gerät zum Ausführen arithmetischer Gleitkommaoperationen. | |
DE69033065T2 (de) | Mehrfachbefehlsdecoder | |
DE3689394T2 (de) | Informationsverarbeitungsanlage mit einem Allzweckprozessor und einem Sonderzweckprozessor. | |
DE69032381T2 (de) | Vorrichtung und Verfahren für die kollektive Verzweigung in einem Mehrbefehlsstrommultiprozessor | |
DE3587277T2 (de) | System fuer die umgehungssteuerung beim pipelinebetrieb eines computers. | |
DE3851488T2 (de) | Registerverwaltungssystem mit Ausführung von Befehlen in Unordnung in einem Computerprozessor. | |
DE69017178T2 (de) | Datenverarbeitungssystem mit Vorrichtung zur Befehlskennzeichnung. | |
DE69033443T2 (de) | Mechanismus zur Verzweigungsrücksetzung in einem Prozessor mit gepaarten Befehlen | |
DE4222776C2 (de) | Parallelverarbeitungseinheit und Verfahren zum Ausführen von Befehlen | |
DE2714805C2 (de) | ||
DE69429226T2 (de) | Absendung von Befehlen an mehrere Verarbeitungseinheiten | |
DE3638572C2 (de) | ||
DE3882487T2 (de) | Vektorprozessor zur schnellen verarbeitung von rekursiven gleichungen. | |
DE102018126001A1 (de) | Synchronisation in einem Multi-Kachel-Verarbeitungsarray | |
DE69033131T2 (de) | Logikvorrichtung und Verfahren zur Verwaltung einer Befehlseinheit in einer Pipeline-Verarbeitungseinheit | |
DE69232045T2 (de) | Vorrichtung und verfahren zur ausführung von instruktionen in nicht sequentieller reihenfolge | |
DE60006021T2 (de) | VLIW-Prozessor und Programmkomprimierungsgerät and -verfahren | |
DE69130757T2 (de) | Ausführungsvorrichtung für bedingte Verzweigungsbefehle |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8364 | No opposition during term of opposition | ||
8339 | Ceased/non-payment of the annual fee |