DE3587167T2 - Geraet zur vektorverarbeitung. - Google Patents
Geraet zur vektorverarbeitung.Info
- Publication number
- DE3587167T2 DE3587167T2 DE8585115752T DE3587167T DE3587167T2 DE 3587167 T2 DE3587167 T2 DE 3587167T2 DE 8585115752 T DE8585115752 T DE 8585115752T DE 3587167 T DE3587167 T DE 3587167T DE 3587167 T2 DE3587167 T2 DE 3587167T2
- Authority
- DE
- Germany
- Prior art keywords
- vector
- elements
- address
- data
- instruction
- 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
- 239000013598 vector Substances 0.000 title claims description 129
- 238000012545 processing Methods 0.000 title claims description 66
- 239000000872 buffer Substances 0.000 claims description 57
- 238000013519 translation Methods 0.000 claims description 9
- 230000015654 memory Effects 0.000 description 111
- 101000822028 Homo sapiens Solute carrier family 28 member 3 Proteins 0.000 description 12
- 102100021470 Solute carrier family 28 member 3 Human genes 0.000 description 12
- 101000685663 Homo sapiens Sodium/nucleoside cotransporter 1 Proteins 0.000 description 11
- 102100023116 Sodium/nucleoside cotransporter 1 Human genes 0.000 description 11
- 238000010586 diagram Methods 0.000 description 10
- FFKXTXJQZGIKQZ-UHFFFAOYSA-N ROPA Natural products O1C2C3C=C(CO)CC(C(C(C)=C4)=O)(O)C4C3(O3)C(C)CC2(C(C)=C)OC31CC1=CC=CC=C1 FFKXTXJQZGIKQZ-UHFFFAOYSA-N 0.000 description 9
- 101000821827 Homo sapiens Sodium/nucleoside cotransporter 2 Proteins 0.000 description 6
- 102100021541 Sodium/nucleoside cotransporter 2 Human genes 0.000 description 6
- 238000000034 method Methods 0.000 description 6
- 101100382854 Arabidopsis thaliana CCD7 gene Proteins 0.000 description 5
- 101100129499 Arabidopsis thaliana MAX2 gene Proteins 0.000 description 5
- 101100129496 Arabidopsis thaliana CYP711A1 gene Proteins 0.000 description 4
- 101100083446 Danio rerio plekhh1 gene Proteins 0.000 description 4
- 102100033045 G-protein coupled receptor 4 Human genes 0.000 description 4
- 101000871138 Homo sapiens G-protein coupled receptor 4 Proteins 0.000 description 4
- 238000007781 pre-processing Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 2
- 238000012805 post-processing Methods 0.000 description 2
- 238000010276 construction Methods 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- PSLWZOIUBRXAQW-UHFFFAOYSA-M dimethyl(dioctadecyl)azanium;bromide Chemical compound [Br-].CCCCCCCCCCCCCCCCCC[N+](C)(C)CCCCCCCCCCCCCCCCCC PSLWZOIUBRXAQW-UHFFFAOYSA-M 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000000717 retained effect Effects 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/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30021—Compare instructions, e.g. Greater-Than, Equal-To, MINMAX
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
- G06F15/8053—Vector processors
- G06F15/8076—Details on data register access
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30032—Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
-
- 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
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)
- Memory System Of A Hierarchy Structure (AREA)
Description
- Die vorliegende Erfindung bezieht sich auf einen Vektorrechner.
- Ein Vektorrechner, der eine Kombination aus einer universalen Skalardaten-Verarbeitungseinheit und einer Operationseinheit für die Verarbeitung von Vektorelementen darstellt, ist bekannt (Japanische Patentanmeldungen Nrn. 58-52265 und 59-25264). In einem solchen Vektorrechner werden die Indiz es von Vektoroperanden gleichmäßig inkrementiert, um die Vektorelemente zu verarbeiten. Bei der Vektorverarbeitung, bei der das Inkrement der Indizes der Vektoroperanden vom Operationsergebnis der Daten abhängt, wird jedoch keine Hochgeschwindigkeits-Vektoroperation erzielt.
- Ein weiterer Vektorprozessor ist in der EP 0149213 offenbart, welche unter den Artikel 54(3) EPÜ fällt. Dieses Dokument beschreibt, daß der Vektorprozessor versehen ist mit einer Speichereinrichtung zum Speichern von Vektoroperanden, mit einer Operationseinrichtung zum Ausführen von Vergleichs- und Auswahloperationen auf der Grundlage von ersten und zweiten Vektoroperanden von der Speichereinrichtung und zur Ausgabe eines als Ergebnis der Operationen erhaltenen dritten Vektoroperanden an die Speichereinrichtung, einer ersten bis dritten Angabeeinrichtung für die Angabe der jeweiligen Anzahl der Elemente der ersten bis dritten Vektoroperanden, die momentan von der Operationseinrichtung verarbeitet werden, und einer Steuereinrichtung für die jeweils unabhängige Steuerung der entsprechenden der ersten bis dritten Angabeeinrichtungen.
- Ferner ist aus der EP 0126247 bekannt, daß Computersysteme eine Speicherhierarchie, Verarbeitungseinheiten, E/A- Steuerungen und eine CPU (Zentraleinheit) für die Ausführung von Befehlen enthalten. Dieses System enthält einen VNR-Speicher (Vektormaskenregister), der mit der CPU verbunden ist, um einen Satz von Ergebnissen zu speichern, die die Ergebnisse der Ausführung des Befehls darstellen, und eine Zähl- und Adressenspeichereinrichtung, die mit dem VMR-Speicher verbunden ist, um die Speicherung des Satzes von Ergebnissen zu überwachen, wobei die Zähl- und Adressenspeichereinrichtung gleichzeitig zur Speicherung des Satzes von Ergebnissen im VMR-Speicher Information erzeugt und speichert, die auf den Satz von Ergebnissen bezogen ist, wobei die Information nach Beendigung der Speicherung des Satzes von Ergebnissen sofort zur Verfügung steht.
- In diesen Einrichtungen ist jedoch die für die Vektoroperation erforderliche Zeit für bestimmte Anwendungen nicht kurz genug.
- Es ist die Aufgabe der vorliegenden Erfindung, einen Vektorrechner zu schaffen, mit dem eine Vektoroperation eines Typs möglich ist, bei dem das Inkrement von Vektorindizes vom Operationsergebnis von Daten abhängt.
- Diese Aufgabe wird gemäß den Merkmalen des Anspruches 1 gelöst. Weitere Entwicklungen und vorteilhafte Ausführungsformen sind in den Ansprüchen 2 und 3 offenbart.
- Erfindungsgemäß werden mittels eines Befehls bezeichnete Vektoroperanden nacheinander aus einem Speicher in eine Vektorrechner-Einrichtung geholt und in einem Puffer in der Vektorrechner-Einrichtung gehalten. Die Vektorrechner-Einrichtung liest Elemente der Vektoroperanden aus dem Puffer aus und operiert mit ihnen, indem sie beispielsweise zwei Elemente vergleicht. Entsprechend dem Operationsergebnis steuert die Vektorrechner-Einrichtung den Abruf von als nächstes zu verarbeitenden Vektorelementen aus dem Puffer.
- Fig. 1 ist ein Blockschaltbild einer Ausführungsform der vorliegenden Erfindung,
- Fig. 2 zeigt ein MISCHSORTIERUNGS-Befehlsformat und eine Befehlsoperation,
- Fig. 3 ist ein Programmanalysediagramm für die Darstellung der Operation des MISCHSORTIERUNGS-Befehls,
- Fig. 4 ist ein Blockschaltbild, das eine Einzelheit von Fig. 1 zeigt,
- Fig. 5 ist ein Zeitablaufdiagramm zur Erläuterung einer Operation von Fig. 4,
- Fig. 6 ist ein Blockschaltbild, das eine Einzelheit eines Vektorrechners von Fig. 1 zeigt,
- Fig. 7 ist ein Zeitablaufdiagramm zur Erläuterung einer Operation von Fig. 6,
- Fig. 8 ist ein Blockschaltbild einer weiteren Ausführungsform der vorliegenden Erfindung,
- Fig. 9 zeigt ein MISCHVEREINIGUNGS-Befehlsformat und eine Befehlsoperation,
- Fig. 10 ist ein Programmanalysediagramm zur Erläuterung der Operation des MISCHVEREINIGUNGS-Befehls,
- Fig. 11 ist ein Blockschaltbild, das eine Einzelheit von Fig. 8 zeigt,
- Fig. 12 ist ein Zeitablaufdiagramm zur Erläuterung einer Operation von Fig. 11,
- Fig. 13 ist ein Blockschaltbild, das eine Einzelheit eines Vektorrechners von Fig. 8 zeigt, und
- Fig. 14 ist ein Zeitablaufdiagramm zur Erläuterung einer Operation von Fig. 13.
- Fig. 1 zeigt einen Gesamtaufbau einer Ausführungsform der vorliegenden Erfindung. Das Bezugszeichen 9 bezeichnet einen Hauptspeicher, das Bezugszeichen 8 bezeichnet eine Speichersteuereinheit, das Bezugszeichen 10 bezeichnet einen Eingabe-/Ausgabeprozessor, das Bezugszeichen 11 bezeichnet einen Skalarprozessor und das Bezugszeichen 7 bezeichnet einen Vektorprozessor für die ausschließliche Verarbeitung von Vektordaten.
- Vor der Erläuterung einer Abarbeitung eines Vektorbefehls in Fig. 1 wird ein MISCHSORTIERUNGS-Befehl erläutert.
- Fig. 2 zeigt ein MISCHSORTIERUNGS-Befehlsformat und dessen Operation. Der MISCHSORTIERUNGS-Befehl besitzt eine Länge von vier Bytes (4B). Die 0-ten - 15-ten Bits des Befehls enthalten einen Operationscode, der den MISCHSOR- TIERUNGS-Befehl spezifiziert. Die 16ten - 23ten Bits des Befehls haben keine Bedeutung. Die Anzahl der verarbeiteten Operanden von Vektoroperanden sind in drei Universalregistern enthalten, deren Seriennummern bei der Nummer beginnen, die durch die 24-ten - 27-ten Bits (R1-Feld) des Befehls spezifiziert ist. Ein Beschreibungstabellenursprung (DTO) einer Beschreibungstabelle (DT) ist in einem Universalregister enthalten, dessen Nummer durch die 28-ten - 31-ten Bits (R2-Feld) des Befehls spezifiziert ist. Die Universalregister sind in einer Universalregister-Einheit 4 enthalten. Die durch den DTO spezifizierte DT befindet sich im Hauptspeicher 9 und enthält Startadressen der Vektoroperanden und die maximale Anzahl der Elemente. Der durch die DT indirekt spezifizierte Vektoroperand enthält ein erstes 4-Byte-Ganzzahlfeld ohne Vorzeichen zur Identifizierung von Daten und ein zweites 4- Byte-Numerikdatenfeld, das sortiert werden soll. In Mol-%2 gilt:
- maximale Anzahl von Elementen für OP2 = 4,
- maximale Anzahl von Elementen für OP3 = 4,
- maximale Anzahl von Elementen für OP1 = 8,
- wobei OP2, OP3 und OP1 einen zweiten, einen dritten bzw. einen ersten Operanden darstellen.
- In dem MISCHSORTIERUNGS-Befehl werden das OP2-Element und das OP3-Element verglichen, wobei das kleinere von ihnen gespeichert wird. (Wenn beide gleich sind, wird das OP2- Element gespeichert.) Beispielsweise werden in Fig. 2 das #0-Datenfeld von OP2 und das #0-Datenfeld von OP3 verglichen, wobei die Daten von OP2 gewählt und gespeichert werden. Der nächste Vergleich wird zwischen dem nächsten Element des gewählten Operanden und dem vorigen Element des nicht gewählten Operanden ausgeführt. Im Beispiel von Fig. 2 werden #1 von OP2 und #0 von OP3 verglichen. Diese Operation wird so lange fortgesetzt, bis sämtliche Elemente von OP2 und OP3 gespeichert sind.
- Daher kann der MISCHSORTIERUNGS-Befehl als Befehl angesehen werden, mit dem aus zwei kürzeren sortierten Vektoren ein längerer sortierter Vektor erzeugt wird. Der MISCHSORTIERUNGS-Befehl wirkt in einer Tabelle, die gemäß einer relationalen Datenbank sortiert ist. Der MISCHSOR- TIERUNGS-Befehl ist ein Vektorbefehl eines Typs, in dem das Inkrement der jeweiligen Anzahl der verarbeiteten Elemente von OP2 und OP3 vom Vergleichsergebnis von OP2 und OP3 abhängt.
- Fig. 3 zeigt eine Operation des MISCHSORTIERUNGS-Befehls anhand eines Programmanalysediagramms (PAD). Die in Mol-%3 verwendeten Symbole entsprechen denen von Fig. 2 folgendermaßen:
- OP2 die zweiten 4 Bytes (hinterer Teil eines jeden Elementes) A(i)
- OP3 die zweiten 4 Bytes (hinterer Teil eines jeden Elementes) B(j)
- OP1 die zweiten 4 Bytes (hinterer Teil eines jeden Elementes) C(k)
- OP2 Anzahl der verarbeiteten Elemente i
- OP3 Anzahl der verarbeiteten Elemente j
- OP1 Anzahl der verarbeiteten Elemente k
- OP2 maximale Anzahl von Elementen imax
- OP3 maximale Anzahl von Elementen jmax
- In Fig. 3:
- P1: Setzen von i, j und k auf 0. Setzen von STOPP auf falsch. Gehe zu P2.
- P2: Ausführen von P3 ff., bis STOPP wahr wird.
- P3: Setzen des kleineren von A(i) und B(j) auf x. Gehe zu P4.
- P4: Falls A(i) ≤ B(j) in P3, dann gehe zu PS. Wenn nicht A(i) ≤ B(j) dann gehe zu P8.
- PS: Wenn i < imax, dann gehe zu P6. Wenn nicht i < imax, dann gehe zu P7.
- P6: Addiere Eins zu i und gehe zu P11.
- P7: Addiere Eins zu j und gehe zu P11.
- P8: Falls j < jmax, dann gehe zu P9, andernfalls gehe zu P10.
- P9: Addiere Eins zu j und gehe zu P11.
- P10:Addiere Eins zu j und gehe zu P11.
- P11: Setze x auf C(k). Das heißt, setze das kleinere von A(i) und B(j) auf C(k). Addiere Eins zu k. Gehe zu P12.
- P12: Falls i < imax oder j < jmax, dann gehe zu P3, zeige andernfalls an, daß die maximale Anzahl von Elementen, die durch OP2 oder OP3 spezifiziert sind, verarbeitet worden sind. Gehe zu P13.
- P13: Setze STOPP auf wahr.
- Das Ende der Verarbeitung in P12 kann beliebig festgelegt werden. Beispielsweise kann es bei der Bedingung "k < kmax" beendet werden. Daher sind im MISCHSORTIERUNGS-Befehl die Inkremente von i und j nicht gleich und hängen vom Vergleichsergebnis von A(i) und B(j) ab.
- Wie wiederum in Fig. 1 gezeigt, wird der aus der Pufferspeicher-Steuereinheit 1 über einen Pfad 13 abgerufene Befehl durch eine Befehlseinheit 3 decodiert. Wenn die Decodierung den MISCHSORTIERUNGS-Befehl zum Ergebnis hat, meldet die Befehlseinheit 3 der Abarbeitungseinheit 5 über einen Pfad 35 den MISCHSORTIERUNGS-Befehl und die zu verwendenden Registernummern (R1- und R2-Feld) und gibt die Steuerung an die Skalarabarbeitungseinheit 5 ab.
- Die Skalarabarbeitungseinheit 5 schickt die von der Befehlseinheit 3 gemeldeten Nummern der R1- und R2-Felder über einen Pfad 54E an das Universalregister (GPR) 4, um den Inhalt des GPR 4 über einen Pfad 45 auszulesen.
- Fig. 4 zeigt eine detaillierte Konfiguration der Adressensteuereinheit 3, der Pufferspeicher-Steuereinheit 1 und der Abarbeitungseinheit 5 von Fig. 1. Fig. 5 ist ein Zeitablaufdiagramm zur Erläuterung der Operation von Fig. 4.
- Die Operation von Fig. 1 wird im einzelnen mit Bezug auf die Fig. 4 und 5 erläutert.
- In Fig. 5 stellt:
- OP2A eine Startadresse von OP2;
- OP3A eine Startadresse von OP3;
- OP1A eine Startadresse von OP1;
- GR(R1) die Anzahl der verarbeiteten Elemente von OP2;
- GR(R1+1) die Anzahl der verarbeiteten Elemente von OP3;
- GR(R1+2) die Anzahl der verarbeiteten Elemente von OP1;
- OP2A' die Startadresse der nicht verarbeiteten Elemente von OP2;
- OP3A' die Startadresse der nicht verarbeiteten Elemente von OP3; und
- OP1A' die Startadresse der nicht verarbeiteten Elemente von OP1 dar.
- Wie in Fig. 4 gezeigt, werden die Registernummern in den R1- und R2-Feldern, die von der Befehlseinheit 3 über den Pfad 35 übertragen werden, in einem Register 508 gesetzt. Der Operationscode wird an den Vektorprozessor 7 geschickt. Eine Wähleinrichtung 509 wählt zunächst das R2- Feld und setzt den Inhalt des R2-Feldes in einem EL-Register 510. Der Inhalt des EL 510 wird über den Pfad 54E an das GPR 4 geschickt, welches den DTO über den Pfad 45 ausliest und über eine Wähleinrichtung 506 in einem Arbeitsregister B (WBR) 501 setzt. Der im WBR 501 gesetzte DTO wird von einer Wähleinrichtung 504 gewählt und in einem Nurabruf-Adressenregister B (SAB) 201 (Fig. 5) in der Adressensteuereinheit 2 über eine Wähleinrichtung 207 gesetzt.
- In der Adressensteuereinheit 2 ist ein weiteres Nurabruf- Adressenregister (SAA) 200 vorgesehen, so daß diese Register zwei Adressenübersetzungseinheiten und zwei Pufferspeichern in der Pufferspeicher-Steuereinheit 1 entsprechen. Diese beiden Adressenübersetzungseinheiten und die beiden Pufferspeicher sind jeweils funktional identisch und doppelt vorgesehen, um eine Hochgeschwindigkeitsverarbeitung der Elemente zu erzielen. Die doppelten Einheiten werden mit 0-System und 1-System bezeichnet. In der folgenden Beschreibung verwendet der DTO-Abruf das 1-System. Der Inhalt (DTO) des SAB 2 wird über einen Pfad 21b an die Pufferspeicher-Steuereinheit 1 geschickt. Der DTO wird durch die Adressenübersetzungseinheit AT1 101 von einer virtuellen Adresse in eine reale Adresse übersetzt, welche in einem Pufferspeicher-Adressenregister BSAR1 103 gesetzt wird (Fig. 5 T1). Auf den Pufferspeicher BS1 105 wird durch den Inhalt (DTO) des BSAR1 103 zugegriffen, wobei die daraus ausgelesenen Daten in dem 8-Byte-Auslesedatenregister DR1 107 gesetzt werden (Fig. 5 T2). Im Ergebnis wird die Startadresse des OP2 in den ersten vier Bytes des DR1 107 gesetzt, während die maximale Anzahl von Elementen des OP2 in den zweiten vier Bytes gesetzt wird. Die aus dem DR1 107 ausgelesenen Daten werden über den Pfad 156 an die Skalarabarbeitungseinheit 5 geschickt.
- Die Pufferspeicher BS0 104, BS1 105 enthalten Teilkopien des Hauptspeichers. Wenn die Daten, auf die zugegriffen werden soll, nicht in den Pufferspeichern vorliegen, werden die Daten unter der Steuerung der Pufferspeicher- Steuereinheit 1 von der Hauptspeichereinheit 9 übertragen.
- Die Skalarabarbeitungseinheit 5 setzt die über den Pfad 15b geschickten Daten im WBR 501 (Fig. 5 T3). Die Skalarabarbeitungseinheit 5 wählt das im Register 508 gehaltene R1-Feld mittels der Wähleinrichtung 509 und setzt es im EL-Register 510 (Fig. 5 T2). Der Inhalt (die Anzahl der verarbeiteten Elemente des OP2) des Universalregisters, welches durch das R1-Feld bezeichnet ist, wird durch das EL-Register 510 über den Pfad 45 ausgelesen und im Arbeitsregister A (WAR) 500 über die Wähleinrichtung 505 gesetzt (Fig. 5 T3). Der Inhalt des WAR 500 wird mittels einer Operationseinheit 503 mit der Anzahl (8) der Elemente multipliziert, wobei das Ergebnis über die Wähleinrichtung 505 im WAR 500 gesetzt wird (Fig. 5 T4). Der Inhalt des WAR 500 und die ersten vier Bytes (Startadresse von OP2) werden mittels der Operationseinheit 503 addiert, wobei die Summe über die Wähleinrichtung 507 im Arbeitsregister c (WCR) 502 gesetzt wird (Fig. 5 T5). Die Anzahl der verarbeiteten Elemente, die aus dem GPR4 in das WAR 500 gelesen werden, ist normalerweise Null, so daß das Produkt nach der Multiplikation mit der Anzahl der Elemente ebenfalls Null ist. Wenn jedoch der MISCHSORTIERUNGS-Befehl unterbrochen wird, wird die Anzahl der bis dahin verarbeiteten Elemente im GPR4 gehalten. Wenn daher der Prozeß wieder aufgenommen wird, wird die Anzahl der verarbeiteten Elemente, die mit der Anzahl der Elemente multipliziert ist, zu der durch die DT spezifizierten Startadresse addiert, um die Adresse des wieder aufgenommenen Elementes zu erzeugen.
- Der Inhalt des WCR 502 wird von der wähleinrichtung 504 gewählt und über den Pfad 52 und die Wähleinrichtung 206 an das SAA 200 in der Adressensteuereinheit 2 übertragen (Fig. 5 T6). Die zweiten 4 Bytes (maximale Anzahl von Elementen des OP2) des WBR 501 werden von der Wähleinrichtung 504 gewählt und über den Pfad 57 an den Vektorprozessor 7 übertragen.
- Die nächsten 8 Bytes der DT werden in Überlappung mit den ausgelesenen ersten 8 Bytes ausgelesen. Dies ist in Mol-%5 gezeigt. Die +8- und +16-Operationen des DTO werden durch die Operationseinheit 204 in der Adressensteuereinheit 2 ausgeführt. Wie in Fig. 5 gezeigt, wird die Vektoroperandenadresse, bei der die Verarbeitung beginnen soll, im SAA 200 und im SAB 201 und im Nurspeicher-Adressenregister (DAR) 202 in der Adressenregister-Steuereinheit 2 gesetzt.
- Die Inhalte der drei Universalregister, deren Seriennummern bei der durch das R1-Feld des Befehls spezifizierten Nummer beginnen, werden über den Pfad 45 aus dem GPR4 in die Skalarverarbeitungseinheit 5 seriell eingelesen und über die Wähleinrichtung 504 und den Pfad 57 zum Vektorprozessor 7 geschickt. Die +1- und +2-Operationen des R1- Feldes werden durch die Operationseinheit 512 ausgeführt.
- Fig. 6 zeigt einen inneren Aufbau des Vektorprozessors 7. Die maximale Anzahl von Elementen der Operanden, die von der Skalarabarbeitungseinheit 5 über den Pfad 57 geschickt werden, werden in Registern MAX2 700, MAX3 701 und MAX1 702 für die maximale Anzahl von Elementen gesetzt, während die Anzahl der verarbeiteten Elemente der Operanden in Elementzählern CNT2 703, CNT3 704 und CNT1 705 gesetzt werden.
- Damit ist die Vorverarbeitung für den Beginn der Operationen für die Vektorelemente beendet. Mit Bezug auf Mol-%4 wird eine Übersicht der Verarbeitung der Vektorelemente des MISCHSORTIERUNGS-Befehls erläutert.
- Von der Adressensteuereinheit 2 wird unter der Steuerung der skalaren Abarbeitungseinheit 5 an die Pufferspeicher- Steuereinheit 1 eine durch das SAA 200 und das SAB 201 adressierte Abrufanforderung ausgegeben. Das SAA 200 und das SAB 201 enthalten die Startadressen der unverarbeiteten Elemente des OP2 bzw. des OP3.
- Die Pufferspeicher-Steuereinheit 1 übersetzt den Inhalt des SAA 200, der über den Pfad 21a geschickt wird, mittels der Adressenübersetzungseinheit (AT0) 100 und setzt die übersetzte Adresse im BSAR0 102, greift mittels der übersetzten Adresse auf das BS0 104 zu und setzt die gelesenen Daten im DRO 106. Außerdem greift sie mittels des Inhaltes des SAB 201, der über den Pfad 21b geschickt wird, auf das BS1 105 zu und setzt die gelesenen Daten im DR1 107. Im Ergebnis enthalten das DR0 106 und das DR1 107 die Startelemente der unverarbeiteten Elemente des OP2 bzw. des OP3.
- Die skalare Abarbeitungseinheit 5 liest den Inhalt des DR0 106 über den Pfad 15a aus und setzt ihn im WAR 500. Außerdem liest sie den Inhalt des DR1 107 über den Pfad 15b aus und setzt ihn im WBR 501.
- Die skalare Abarbeitungseinheit 5 schickt die Daten über die Pfade 57a und 57b zum Vektorprozessor 7. Wenn der Vektorprozessor 7 die Vektoroperandendaten über die Pfade 57a und 57b empfängt, vergleicht er die zweiten vier Bytes der Daten und schickt die kleineren Daten (die OP2- Elemente, falls beide gleich sind) über den Pfad 75 an die skalare Abarbeitungseinheit 5.
- Nach einer festen Anzahl von Zyklen seit dem Senden der Daten von der skalaren Abarbeitungseinheit 5 an den Vektorprozessor 7 empfängt die skalare Abarbeitungseinheit 5 die Daten vom Vektorprozessor 7 über den Pfad 75 und setzt sie im WCR 502.
- Die Adressensteuereinheit 2 schickt unter der Steuerung der skalaren Abarbeitungseinheit 5 eine durch das DAR 202 adressierte Speicheranforderung an die Pufferspeicher- Steuereinheit 1. Das DAR 202 zeigt auf die Startadresse der unverarbeiteten Elemente des OP3.
- Andererseits werden die im WCR 502 gespeicherten Daten im Schreibdatenregister (FR) 108 in der Pufferspeicher-Steuereinheit 1 unter dem Befehl der skalaren Abarbeitungseinheit 5 gesetzt. Die Pufferspeicher-Steuereinheit 1 übersetzt die von der Adressensteuereinheit 2 geschickte Adresse, wobei sie, wenn die übersetzte Adresse im BS0 104 und im BS1 105 vorliegt, den Inhalt des FR 108 schreibt. Außerdem schickt sie die Speicheranforderung an den Hauptspeicher 9.
- Bei der Datenübertragung der Vektoroperandendaten verwenden die Register und Pfade, die von denjenigen des Vektorprozessors verschieden sind, Betriebsmittel, die bei der Abarbeitung von skalaren Befehlen üblicherweise verwendet werden. Die Daten werden unter der Steuerung der skalaren Abarbeitungseinheit 5 übertragen.
- Im MISCHSORTIERUNGS-Befehl werden das OP2-Element und das OP3-Element miteinander verglichen, wobei das kleinere (das OP2-Element, falls beide gleich sind) gewählt und gespeichert wird. Z.B. werden in dem in Fig. 2 gezeigten Beispiel das #0-Element von OP2 und das #0-Element von OP3 miteinander verglichen, wobei das kleinere von beiden, nämlich das OP2-Element, gewählt und gespeichert wird. Dann werden das nächste Element des gewählten Operanden und das vorige Element des nicht gewählten Operanden miteinander verglichen. Im Beispiel von Fig. 2 werden das #1-Element von OP2 und das #0-Element von OP3 miteinander verglichen.
- Zur Erzielung der obigen Operation muß das Vergleichsergebnis im Vektorprozessor bei der Aktualisierung des SAA 200 oder des SAB 201 in der Adressensteuereinheit 2 berücksichtigt werden. Die Steuerleitungen 72a und 72b, die der Adressensteuereinheit 2 melden, ob im Vergleich im Vektorprozessor 7 der OP2 oder der OP3 gewählt worden sind, dienen dazu, daß das Vergleichsergebnis im Vektorprozessor 7 bei der Aktualisierung des Adressenregisters in der Adressensteuereinheit 2 berücksichtigt wird.
- In einem praktischen Verfahren werden das #0-Element des OP2 und das #0-Element des OP3 miteinander verglichen, wird das OP2-Element gewählt, wird das die OP2-Adresse haltende SAA 200 mittels der Steuerleitung 72a um 8 inkrementiert und wird die Abrufanforderung für das # 1-Element des OP2 ausgesandt. In diesem Verfahren wird jedoch eine Hochgeschwindigkeits-Pipelineoperation nicht erhalten.
- In der vorliegenden Ausführungsform wird das Operandenadressenregister für den gewählten Operanden nicht aktualisiert, hingegen wird die Aktualisierung des Operandenregisters für den nicht gewählten Operanden unterdrückt, ferner wird die Abrufanforderung in jedem Zyklus ausgesandt. Das bedeutet:
- (1) Der Vektorprozessor 7 setzt die Steuerleitung 72b für einen Maschinenzyklus auf "1", falls der OP2 als Vergleichsergebnis gewählt wird, während er die Steuerleitung 72a auf "1" setzt, wenn der OP3 gewählt wird.
- (2) Die Adressensteuereinheit 2 addiert mittels der Addiereinrichtung 203 8 zum SAA 200, falls die Steuerleitung 72a in dem Zyklus, in dem die Abrufanforderung für das OP2 ausgegeben wird, auf "0" liegt, und unterdrückt die Aktualisierung, falls die Steuerleitung 72a auf "1" liegt.
- (3) Die Adressensteuereinheit 2 addiert mittels der Addiereinrichtung 204 8 zum SAB 201, falls die Steuerleitung 72b in dem Zyklus, in dem die Abrufanforderung für das OP3 ausgegeben wird, auf "0" liegt, und unterdrückt die Aktualisierung, falls die Steuerleitung 72b auf "1" liegt.
- (4) Andererseits wird das DAR 202 für jeden Vergleich mittels der Addiereinrichtung 205 um 8 inkrementiert, weil jedesmal entweder OP2 oder OP3 gespeichert wird.
- Da in diesem Verfahren in jedem Zyklus sowohl das SAA 200 als auch das SAB 201 um 8 inkrementiert wird, bis der Vergleich des #0-Elementes des OP2 und des #0-Elementes des OP3 abgeschlossen ist, benötigt der Vektorprozessor 7 einen Puffer, um die erforderlichen Daten zu speichern. Wenn die Aktualisierung des Adressenregisters unterdrückt wird und die Abrufanforderung in jedem Zyklus ausgegeben wird, werden dieselben Daten wiederholt ausgelesen. Durch die Steuerung des Vektorprozessors 7, derart, daß er die Daten nicht aus der Skalarabarbeitungseinheit 5 abruft, wird der Abruf von nicht erforderlichen Daten in den Operandenpuffer verhindert.
- Fig. 6 zeigt eine Ausführungsform des Vektorprozessors 7. Das Bezugszeichen 707 bezeichnet einen Operandenpuffer A (ROBA) zum Speichern der OP2-Daten, während das Bezugszeichen 708 einen Operandenpuffer B (ROBB) zum Speichern der OP3-Daten bezeichnet. Der ROBA 707 und der ROBB 708 können jeweils fünf Elemente #0 bis #4 halten. Sie empfangen und halten die OP2-Daten und die OP3-Daten, die von der Skalarabarbeitungseinheit 5 über die Pfade 57a bzw. 57b geschickt werden. Ein Einlese-Zeiger 719 ist ein 3-Bit-Zähler, der von 4 bis 0 umläuft. Die vom Pfad 57a geschickten Daten werden an einer Datenposition im ROBA 707 gesetzt, die durch den Einlese-Zeiger 719 angegeben ist. Ein Einlese-Zeiger 720 ist ein Zähler, dessen Konstruktion identisch mit derjenigen des Einlese-Zeigers 719 ist. Die Daten vom Pfad 57b werden an einer Datenposition des ROBB 708 gesetzt, welche durch den Einlese- Zeiger 720 bezeichnet ist. Wenn-die Daten im ROBA 707 und im ROBB 708 gesetzt sind, werden die Einlese-Zeiger 719 bzw. 720 jeweils um Eins inkrementiert. Das Setzen der Daten im ROBA 707 und im ROBB 708 wird durch die Ausgänge von Verzögerungsschaltungen 726 bzw. 727 ausgeführt.
- Ein Auslese-Zeiger (ROPA) 706 und ein Auslese-Zeiger (ROPB) 709 sind 3-Bit-Zähler, die von 4 bis 0 umlaufen. Die Ausgänge des ROPA 706 und des ROPB 709 werden an Wähleinrichtungen 710 bzw. 711 geliefert, welche die Elemente an den Datenpositionen des ROBA 707 und des ROBB 708 auslesen, die durch den ROPA 706 bzw. durch den ROPB 709 bezeichnet sind. Daher sind der ROBA 707 und der ROBB 708 vom FIFO-Typ (first-in/first-out-Typ).
- Die Elementdaten von den Wähleinrichtungen 710 und 711 werden von einem Komparator 712 verglichen. Das Vergleichsergebnis des Komparators 712 wird an eine Entscheidungsschaltung 713 geliefert. Die Entscheidungsschaltung 713 aktiviert über einen Pfad 725 entsprechend dem Vergleichsergebnis des Komparators 712 eine Wähleinrichtung 714, so daß die kleineren Elementdaten in einem Register 715 gesetzt werden. Die Operation des in Fig. 6 gezeigten Vektorprozessors 7 wird mit Bezug auf ein in Fig. 7 gezeigtes Zeitablaufdiagramm erläutert. In dem Zeitablaufdiagramm von Fig. 7 sind der OP2 und der OP3 diejenigen, die in Fig. 2 gezeigt sind, wobei die Anzahl der unverarbeiteten Elemente des OP2 bzw. des OP3 jeweils Null ist.
- Wenn von der Adressensteuereinheit 8 im Zyklus 0 das Startelement ausgegeben wird, erreichen die Daten den Vektorprozessor 7 im Zyklus 4. Das #0-Element des OP2 und das #0-Element des OP3 werden im Zyklus 2 in das DRO bzw. in das DR1 bei der OP2-Adresse OP2A' bzw. bei der OP3- Adresse OP3A', die im Zyklus 0 durch den SAA 200 bzw. durch den SAB 201 bezeichnet werden, gelesen. Im Zyklus 3 werden sie an das WAR bzw. an das WBR übertragen, während sie im Zyklus 4 im ROBA bzw. im ROBB gesetzt werden. Im Zyklus 4 werden sie aus dem ROBA und aus dem ROBB ausgelesen und verglichen. Wenn als Ergebnis des Vergleichs des OP2-Elementes mit dem OP3-Element mittels des Komparators 712 das OP2-Element gewählt wird, arbeitet die Entscheidungsschaltung 713 folgermaßen:
- Wählen der OP2-Daten mittels der Wähleinrichtung 714 durch den Ausgang 725.
- Inkrementieren des ROPA 706 um Eins durch den Ausgang 722 und Setzen des durch die Addiereinrichtung 719 inkrementierten Wertes im CNT2 703 über die Wähleinrichtung 716.
- Setzen des durch die Addiereinrichtung 721 inkrementierten Wertes im CNT1 705 über die Wähleinrichtung 718 durch den Ausgang 724.
- Unterdrücken der Aktualisierung des SAB 201 im nächsten Zyklus durch den Ausgang 72b.
- Wie in Fig. 7 gezeigt, werden die durch die Abrufanforderung für die Elemente #0 bis #4 des OP3 abgerufenen Operandendaten sequentiell im ROBB 708 gesetzt, bis der Ausgang 72b bei der Aktualisierung des Adressenregisters wiedergegeben ist. Die Abrufanforderung für das Element #5 des OP3 wird ebenfalls ausgegeben, ferner werden die dadurch abgerufenen Operandendaten im WBR 501 der skalaren Abarbeitungseinheit 5 gesetzt, sie werden jedoch nicht im ROBB 708 gesetzt, weil der Ausgang 72b der Entscheidungsschaltung 713 über die Verzögerung 727 vier Zyklen später an den ROBB 708 geliefert wird, um das Setzen im ROBB 708 zu unterdrücken. Daher ist für den ROBB 708 eine Speicherkapazität von wenigstens (Anzahl der Abrufanforderungen für Überlauf -1) · 8 Bytes, d. h. 40 Bytes erforderlich. Der ROBA 707 arbeitet auf ähnliche Weise und wird durch eine 4-Zyklen-Verzögerung 726 gesteuert.
- Im Zyklus 5 wird der ROPA 706 um Eins erhöht, während der ROPB 709 nicht aktualisiert wird. Somit werden als nächstes das #1-Element von OP2 und das #0-Element von OP3 verglichen. Daraus ergibt sich, daß die folgende Operation stattfindet:
- Wählen der OP3-Daten durch die Wähleinrichtung 714 aufgrund des Ausgangs 725.
- Inkrementieren des ROPB 709 um Eins durch den Ausgang 723 und Setzen des mittels der Addiereinrichtung 720 um Eins inkrementierten Wertes im CNT3 704 über die Wähleinrichtung 717.
- Setzen des mittels der Addiereinrichtung 721 um Eins inkrementierten Wertes im CNT 705 über die Wähleinrichtung 718 aufgrund des Ausgangs 724.
- Unterdrücken der Aktualisierung des SAA 200 im nächsten Zyklus aufgrund des Ausgangs 72a.
- Die Operation wird wie in Fig. 7 gezeigt fortgesetzt. Der ROPA 706 und der ROPB 709, die die Elemente angeben, welche als nächstes verarbeitet werden sollen, nachdem sie von den Puffern 707 und 708 abgerufen worden sind, werden nicht in jedem Zyklus gleichmäßig inkrementiert, sondern entsprechend dem Vergleichsergebnis des Komparators 712 gesteuert. Ähnlich wird die Aktualisierung der Elementzähler 703 und 704 gesteuert.
- Wie oben beschrieben, kann der MISCHSORTIERUNGS-Befehl im Abstand eines Maschinenzyklus verarbeitet werden, indem eine ausreichende Kapazität des Operandenpuffers für jeden Operanden bereitgestellt wird und indem in einem Maschinenzyklus die Operanden verglichen werden und das Vergleichsergebnis im Operandenpuffer-Auslesezeiger und im Elementzähler berücksichtigt werden.
- Mit Bezug auf die Fig. 6 und 4 wird die Operation des MISCHSORTIERUNGS-Befehls nach der elementweisen Vergleichsoperation erläutert.
- Nun wird zunächst mit Bezug auf Fig. 6 die Erfassung des Endes der Operation erläutert. Die Ausgänge der Komparatoren 716, 717 und 718 werden an die Entscheidungsschaltung 713 geliefert. Die Elementzähler CNT2 703, CNT3 704 und CNT1 705 werden hochgezählt, wie in Fig. 7 gezeigt ist. Wenn der Vergleich des CNT2 703 des OP2 mit dem MAX2 700 des OP2 durch den Komparator 716 Gleichheit ergibt und wenn der Vergleich des CNT3 704 des OP3 mit dem MAX3 701 des OP3 durch den Komparator 717 Gleichheit ergibt, wird an die Skalarabarbeitungseinheit 5 über die Leitung 72c synchron zum Senden der Speicheranforderung vom WCR 502 des letzten Elementes das Nichtvorhandensein eines effektiven Elementes gemeldet. Im Ergebnis hält die Skalarabarbeitungseinheit 5 das Senden der im WCR 502 gespeicherten Daten an und beginnt mit der Endverarbeitung. In der Endverarbeitung werden die Inhalte der Zähler CNT2 703, CNT3 704 und CNT1 705 der jeweiligen Operanden im Vektorprozessor 7 über die Wähleinrichtung 714 unter der Steuerung der skalaren Abarbeitungseinheit 5 sequentiell ausgelesen; über den Pfad 75 im WCR 502 gesetzt, über den Pfad 54 zum GPR4 geschickt und in drei Universalregister geschrieben, deren Seriennummern bei derjenigen Nummer beginnen, die durch das R1-Feld des Befehls spezifiziert ist. Nachdem sämtliche Zählstände in die drei Universalregister geschrieben worden sind, meldet die Abarbeitungseinheit 5 der Befehlseinheit 5 das Ende des MISCHSORTIERUNGS-Befehls.
- In Fig. 8 ist eine weitere Ausführungsform der vorliegenden Erfindung gezeigt. Die Konfiguration von Fig. 8 ist ähnlich derjenigen von Fig. 1. Das Bezugszeichen 1011 bezeichnet einen Skalarprozessor, der eine Pufferspeicher- Steuereinheit 1001, eine Adressensteuereinheit 1002, eine Befehlseinheit 1003, Universalregister (GPR) 1004 und eine Abarbeitungssteuereinheit 1005 umfaßt. Der Skalarprozessor 1011 liest und schreibt Daten über die Speichersteuereinheit 1008 in Verbindung mit einem Eingabe/Ausgabeprozessor 1010 aus einem Hauptspeicher 1009 bzw. in den Hauptspeicher 1009. Mit der Abarbeitungssteuereinheit 1005 des Skalarprozessors 1011 ist ein Vektorprozessor 1007 verbunden. Der Vektorprozessor 1007 führt einen neuen Typ einer Vektoroperation aus, in dem eine zu verarbeitende Anzahl von Elementen durch ein Operationsergebnis der vorhergehenden Vektorelemente bestimmt wird.
- Vor der Erläuterung der Vektoroperation von Fig. 8 wird ein MISCHVEREINIGUNGS-Befehl erläutert, der einer der Befehle für die Ausführung der Vektoroperation ist.
- Fig. 9 zeigt ein Format des MISCHVEREINIGUNGS-Befehls und dessen Operation. Der MISCHVEREINIGUNGS-Befehl besitzt eine Länge von 4 Bytes, sein Format ist identisch mit demjenigen des MISCHSORTIERUNGS-Befehls. Die Bits 16 bis 23 des Befehls haben keine Bedeutung. Die Universalregister, deren vier Seriennummern bei der Nummer beginnen, die durch die Bits 24 bis 27 (R1-Feld) des Befehls spezifiziert ist, bezeichnen einen primären Elementzähler eines zweiten Operanden (erster Zähler von OP2), einen Elementzähler eines dritten Operanden (Zähler von OP3), einen Elementzähler eines ersten Operanden (Zähler von OP1) und einen sekundären Elementzähler des zweiten Operanden (zweiter Zähler von OP2). Für den zweiten Operanden sind zwei Zähler erforderlich, um eine Rückführung zu ermöglichen. Das durch die Bits 28 bis 31 (R2-Feld) spezifizierte Universalregister bezeichnet einen Beschreibungstabellenursprung (DTO), der eine Startadresse einer Beschreibungstabelle (DT) ist. Die DT befindet sich im Hauptspeicher 1009 und enthält die Startadresse des Vektoroperanden und die maximale Anzahl von Elementen. Der Vektoroperand, der durch die DT indirekt spezifiziert ist, ist durch Doppelvektordaten gegeben, in denen die ersten vier Bytes eine ganze Zahl ohne Vorzeichen enthalten, um die Daten zu identifizieren, während die zweiten vier Bytes die zu vergleichenden Daten enthalten. In einem einfachen Beispiel enthalten die ersten vier Bytes einen Namencode, während die zweiten vier Bytes die Gehaltsliste enthalten. In einem weiteren Beispiel enthalten die ersten vier Bytes einen Code für mechanischen Teile, während die zweiten vier Bytes deren Preis enthalten. In Fig. 9 wird der MIScHVEREINIGUNGS-Befehl verwendet, derart, daß:
- die maximale Anzahl der Elemente von OP2 = 4,
- die maximale Anzahl der Elemente von OP3 = 6 und
- die maximale Anzahl der Elemente von OP1 = 5 ist.
- In Fig. 9 stellt "#" die Elementnummer dar. Die ersten vier Bytes der Vektordaten werden vorderer Teil genannt, während die zweiten vier Bytes hinterer Teil genannt werden. Der Vektor mit zwei Teilen, dem vorderen Teil und dem hinteren Teil, wird Doppelvektor genannt.
- Der MISCHVEREINIGUNGS-Befehl vergleicht die hinteren Teile der Doppelvektoren für OP2 und OP3, deren hintere Teile sortiert sind, wobei dann, wenn sie gleich sind, die vorderen Teile der jeweiligen Doppelvektoren ausgeblendet werden, um einen neuen Doppelvektor (OP1) zu erzeugen. Der MISCHVEREINIGUNGS-Befehl wirkt in einer Tabellenvereinigungsverarbeitung in der relationalen Datenbank.
- Fig. 10 ist ein Programmanalysediagramm, das die Operation des MISCHVEREINIGUNGS-Befehls erläutert. In Fig. 10 stellen n&sub1;, n&sub2;, n&sub3; und n&sub4; Anfangswerte der die Elementnummern haltenden Elementzähler dar, die ganzzahlig sind. Die Elementzähler werden zum gleichen Zweck wie in der vorhergehenden Ausführungsform verwendet, d. h. für die Anzahl der verarbeiteten Elemente. Es wird angenommen, das 0 ≤ n&sub1; ≤ imax, 0 ≤ n&sub2; ≤ jmax, 0 ≤ n&sub3; ≤ kmax und 0 ≤ n&sub4; ≤ imax, wobei imax, jmax und kmax jeweils eine maximale Elementanzahl ist, welche den Endzustand der Vektoroperation definiert, ferner ist INC eine Funktion, die die folgende Bedingung erfüllt: falls
- Wenn i = imax, dann ist A(i) · HINTEN = A(i+1) · HINTEN falsch, ferner ist A(i) · HINTEN ≠ A(i+1) · HINTEN wahr. Das gleiche gilt, wenn j = jmax.
- Die Korrespondenz zwischen den Fig. 9 und 10 ist im folgenden gezeigt:
- Die ersten vier Bytes von OP2 A(i) · VORNE
- die zweiten vier Bytes von OP2 A(i) · HINTEN
- die ersten vier Bytes von OP3 B(i) · VORNE;
- die zweiten vier Bytes von OP3
- Bezugszeichenliste
- B(i) · HINTEN
- die ersten vier Bytes von OP1 C(i) · VORNE;
- die zweiten vier Bytes von OP1 C(i) · HINTEN
- maximale Anzahl der Elemente von OP2 imax
- maximale Anzahl der Elemente von OP3 jmax
- maximale Anzahl der Elemente von OP1 kmax.
- Der MISCHVEREINIGUNGS-Befehl ist ebenfalls ein Vektorbefehl eines Typs, bei dem das Inkrement von i und von j vom Vergleichsergebnis der hinteren Teile von A(i) und von B(j) abhängt.
- Nun wird die Operation für die Ausführung des MISCHVEREI- NIGUNGS-Befehls erläutert.
- In Fig. 8 wird der von der Pufferspeicher-Steuereinheit 1001 über den Pfad 1013 abgerufene Befehl durch die Befehlseinheit 1003 decodiert. Wenn er als MISCHVEREINI- GUNGS-Befehl decodiert ist, meldet die Befehlseinheit 1003 an die Abarbeitungseinheit 1005 über den Pfad 1035, daß es sich um den MISCHVEREINIGUNGS-Befehl handelt, ferner schickt sie die zu verwendenden Registernummern (R1- und R2-Felder) an die Abarbeitungseinheit 1005, die die von der Befehlseinheit 1003 geschickten Registernummern der R1- und 2-Felder über den Pfad 1054 an das GPR 1004 schickt, um den Inhalt des GPR 1004 über den Pfad 1045 auszulesen.
- Fig. 11 zeigt eine Einzelheit der Pufferspeicher-Steuereinheit 1001, der Adressensteuereinheit 1002 und der Abarbeitungseinheit 1005 von Fig. 8. In Fig. 11 ist der Pfad 1035 mit einer Steuereinheit 1036 verbunden, die die Register 508 und 510, die Wähleinrichtung 509 und die Operationseinheit 512, die in Fig. 4 gezeigt sind, umfaßt. Die Steuerschaltung 1036 schickt die Registernummer im R2-Feld über den Pfad 1054E an das GPR 1004. Der vom GPR 1004 über den Pfad 1045 geschickte DTO wird in einem Arbeitsregister (WBR) 1501 in der Abarbeitungseinheit 1005 gesetzt. Der Inhalt (erster Zähler von OP2) des GPR 1004, das durch das R1-Feld des MISCHVEREINIGUNGS-Befehls spezifiziert ist, wird in einem Arbeitsregister (WAR) 1500 gesetzt. Der im WAR 1501 gesetzte DTO wird über den Pfad 1052 in einem Nurabruf-Adressenregister (SAB) 1201 in der Adressensteuereinheit 1002 gesetzt. Der Inhalt DTO des SAB 1201 wird über einen Pfad 1021b zur Pufferspeicher-Steuereinheit 1001 geschickt. Der DTO wird mittels einer Adressenübersetzungseinheit (AT1) 1101 von einer virtuellen in eine reale Adresse übersetzt, woraufhin die übersetzte reale Adresse in einem Pufferadressenregister (BSAR1) 1103 gesetzt wird. Auf einen Pufferspeicher (BS1) 1105 wird durch den Inhalt (DTO) des BSAR1 1103 zugegriffen, wobei die gelesenen Daten in einem 8-Byte-Datenregister (DR1) 1107 gesetzt werden. Im Ergebnis enthalten die ersten vier Bytes des DR1 1107 die OP2-Startadresse, während die zweiten vier Bytes die maximale Anzahl der Elemente des OP2 enthalten. Die Daten des DR1 1107 werden über den Pfad 1015b an die Abarbeitungseinheit 1005 geschickt.
- Die Pufferspeicher-Steuereinheit 1001 enthält eine Adressenübersetzungseinheit ATO 1100, ein Pufferspeicher- Adressenregister BSAR0 1102, Pufferspeicher BS0 1104 und Datenregister DR0 1106, die mit den Einrichtungen AT1 1101, BSAR1 1103, BS1 1105 und DR1 1107, mit denen die vorhergehenden Ausführungsformen arbeiten, funktional identisch sind. Der BS0 1104 und der BS1 1105 sind Hochgeschwindigkeitsspeicher zum Speichern von Teilkopien des Hauptspeichers 1009. Wenn die Daten, auf die zugegriffen werden soll, nicht im BS0 oder BS1 enthalten sind, werden sie vom Hauptspeicher 1009 unter der Steuerung der Pufferspeicher-Steuereinheit 1001 übertragen.
- Die Abarbeitungseinheit 1005 setzt die über den Pfad 1015b geschickten Daten im WBR 1501, addiert mittels einer Addiereinrichtung 1503 zu den ersten vier Bytes (OP2- Startadresse) des WBR 1501 den mit der Länge des Elements (d. h. 8) multiplizierten Inhalt des Universalregisters, das durch das im WAR 1500 gesetzte R1-Feld spezifiziert ist. Der Inhalt des WCR 1502 wird mittels einer Wähleinrichtung 1504 gewählt und über einen Pfad 1052 an ein Nurabruf-Adressenregister (SAA) 1200 in der Adressensteuereinheit 1002 übertragen. Die zweiten vier Bytes (maximale Anzahl von Elementen des OP2) des WBR 1501 werden über einen Pfad 1057 zum Vektorprozessor 1007 übertragen.
- Dann werden auf ähnliche Weise die nächsten 8 Bytes der in Fig. 9 gezeigten DT ausgelesen. Sie werden in Überlappung mit den ausgelesenen ersten 8 Bytes gelesen. Dies ist in Fig. 12 dargestellt, in der:
- OP2A die OP2-Startadresse,
- OP3A die OP3-Startadresse,
- OP1A die OP1-Startadresse,
- GR(R1) den Inhalt des ersten Zählers von OP2,
- GR(R1+1) den Inhalt des Zählers von OP3,
- GR(R1+2) den Inhalt des Zählers von OP1,
- GR(R1+3) den Inhalt des zweiten Zählers von OP2,
- OP2A' die Startadresse der unverarbeiteten Elemente von OP2,
- OP3A' die Startadresse der unverarbeiteten Elemente von OP3 und
- OP1A' die Startadresse der unverarbeiteten Elemente von OP1
- darstellt.
- Wie in Fig. 12 gezeigt, werden die Vektoroperanden für den Beginn der ersten Verarbeitung im SAA 1200, SAB 1201 und DAR 1202 in der Adressenregister-Steuereinheit 1002 gesetzt. Die Inhalte der vier Universalregister, deren Seriennummern bei der durch das R1-Feld des Befehls spezifizierten Nummer beginnen, werden nacheinander über den Pfad 1045 in die Abarbeitungseinheit 1005 eingelesen und über die Wähleinrichtung 1504 und den Pfad 1057 zum Prozessor 1007 geschickt.
- Fig. 13 zeigt einen internen Aufbau des Vektorprozessors 1007. Die jeweils maximale Anzahl von Elementen der Operanden, die von der Abarbeitungseinheit 1005 über den Pfad 1057 geschickt werden, werden in den Registern MAX2 1700, MAX3 1701 und MAX1 1702 für die maximale Anzahl von Elementen gesetzt, während die Zählstände der Operanden in den Elementzähler CNT2P 1703, CNT3 1704, CNT1 1705 und CNT2S 1706, die das Ende bestimmen, und in CNT2S1 1727, CNT3S 1728, CNT1S 1729 und CNT2S2 1730 gesetzt, die die jeweilige Anzahl der verarbeiteten Elemente zählen, gesetzt.
- Dann ist die Vorverarbeitung für den Beginn der Operation der Vektorelemente abgeschlossen.
- Die Übersicht der Verarbeitung der Vektorelemente mittels des MISCHVEREINIGUNGS-Befehls wird mit Bezug auf Fig. 11 erläutert.
- Von der Adressensteuereinheit 1002 wird an die Pufferspeicher-Steuereinheit 1001 eine durch das SAA 1200 und durch das SAB 1201 adressierte Abrufanforderung ausgegeben. Das SAA 1200 und das SAB 1201 enthalten die Startadresse der unverarbeiteten Elemente des OP2 und die Startadresse der unverarbeiteten Elemente des OP3. Die Pufferspeicher-Steuereinheit 1001 übersetzt den über den Pfad 1021a geschickten Inhalt des SAA 1200 mittels der ATO 1100, setzt die übersetzte Adresse im BSAR 1102, greift mittels dieser Adresse auf den BS0 1104 zu und setzt die gelesenen Daten im DR0 1106. Außerdem greift sie mittels des über den Pfad 1021b geschickten Inhaltes des SAB 1201 auf den BS1 1105 zu und setzt die gelesenen Daten im DR1 1107. Im Ergebnis enthält das DR0 1106 das Startelement der unverarbeiteten Elemente von OP2, während das DR1 1107 das Startelement der unverarbeiteten Elemente von OP3 enthält.
- Da das AT0 1100, das BSAR0 1102, der BS0 1104, das DR0 1106 und das AT1 1101, das BSAR1 1103, der BS1 1105 und das DR1 1107 der Pufferspeicher-Steuereinheit 1001 parallel arbeiten können, wird die Vergleichsoperation des Vektorprozessors 1007 nicht verzögert, so daß die Daten ohne Verzögerung geliefert werden können.
- Die Abarbeitungseinheit 1005 liest den Inhalt des DR0 1106 über den Pfad 1015a aus und setzt ihn im WAR 1500. Außerdem liest sie den Inhalt des DR1 1107 über den Pfad 1015b aus und setzt ihn im WBR 1501. Dann befiehlt die Abarbeitungseinheit 1005 dem Vektorprozessor 1007, die Daten über die Pfade 1057a und 1057b abzurufen.
- Wenn der Vektorprozessor 1007 die über die Pfade 1057a und 1057b geschickten Vektoroperandendaten empfängt, beginnt er mit dem Vergleich der hinteren Teile (der zweiten vier Bytes) der Operanden, wobei er dann, wenn die hinteren Teile von OP2 und OP3 gleich sind, zu 8-Byte-Daten kombiniert und an die Abarbeitungseinheit 1005, über den Pfad 1075a ein Vergleichsergebnissignal und über den Pfad 1075 die gespeicherten Daten schickt.
- Wenn die Abarbeitungseinheit 1005 über den Pfad 1075a das Vergleichsergebnissignal empfängt, welches angibt, daß die hinteren Teile von OP2 und OP3 gleich sind, schickt sie an die Speicheranforderungs-Steuerschaltung 1109 der Pufferspeicher-Steuereinheit 1001 über die Speicheranforderungs-Steuerschaltung 1505 und den Pfad 1051 eine Speicheranforderung. Außerdem setzt sie die vom Vektorprozessor 1007 über den Pfad 1075 geschickten gespeicherten Daten über das WCR 1502 und den Pfad 1051a im FR 1108 der Pufferspeicher-Steuereinheit 1001. Außerdem schickt sie die Speicheradresse im Speicheradressenregister (DAR) 1202 der Adressensteuereinheit an die Pufferspeicher- Steuereinheit 1001. Nun zeigt das DAR 1202 die Startadresse der unverarbeiteten Elemente von OP1 an. Die Pufferspeicher-Steuereinheit 1001 übersetzt die von der Adressensteuereinheit 1002 geschickte Adresse, wobei sie dann, wenn die übersetzte Adresse im BS0 1104 oder im BS1 1105 vorhanden ist, den Inhalt des FR 1108 in den entsprechenden BS schreibt. Außerdem schickt sie die Speicheranforderung über den Pfad 1001a an die Hauptspeicher- Steuereinheit 1008 und schickt die Speicherdaten über den Pfad 1001c, damit sie in den Hauptspeicher 1009 geschrieben werden. Nach der Speicherung der Daten im Hauptspeicher 1009 wird von der Hauptspeicher-Steuereinheit 1008 über den Pfad 1001b an die Pufferspeicher-Steuereinheit 1001 ein Speicherendesignal geschickt.
- Wenn andererseits die hinteren Teile von OP2 und von OP3 nicht gleich sind, antwortet die Speicheranforderungs- Steuerschaltung 1505 der Abarbeitungseinheit 1005 auf das vom Vektorprozessor 1007 über den Pfad 1075a geschickte Vergleichsergebnissignal, indem es zur Speicheranforderung eine "ungültige" zusätzliche Information addiert und über den Pfad 1051 an die Pufferspeicher-Steuereinheit 1001 schickt. Wenn die hinteren Teile von OP2 und von OP3 nicht gleich sind, schickt der Vektorprozessor 1007 ein Signal für die Unterdrückung der Aktualisierung der Speicheradresse über den Pfad 1072a an die Adressensteuereinheit 1002.
- In einem Computer mit virtuellem Speicherschema sind die gewünschten Daten nicht stets im Hauptspeicher vorhanden, sondern können in einen Hilfsspeicher ausgelagert sein. Folglich kann es im Verlauf der Verarbeitung der Vektoroperation notwendig werden, die Verarbeitung für eine Seitenübersetzung zu unterbrechen. Wenn gemäß der vorliegenden Erfindung eine solche Unterbrechung erforderlich ist, kann der dem verarbeiteten Element entsprechende Zählstand in das GPR 1004 zurückgeschrieben werden, weil die Operandenzähler vorgesehen sind, die denjenigen Elementen entsprechen, die im Hauptspeicher gespeichert worden sind. Nach der Unterbrechungsoperation wird der Befehl erneut gestartet, so daß der Zählstand aus dem GPR 1004 ausgelesen wird, um die Verarbeitung wieder aufzunehmen. Eine solche Funktion ist bei der Spezifikation der die Ausnahme darstellenden Elementnummer in der Vektoroperation, die bei der Abarbeitung die Daten- oder Operationsunterbrechung hervorruft, wirksam. Wenn die Operationsunterbrechung auftritt, kann der Zähler, der für den Vergleich der Anzahl der verarbeiteten Elemente mit der anfangs gesetzten maximalen Anzahl von Elementen verwendet wird, überlaufen, ferner steigt in der Vektoroperation die Anzahl der verarbeiteten Elemente nicht immer in einem festen Zyklus bezüglich sämtlicher Operanden an. Daher kann die richtige Anzahl von Elementen durch Subtraktion einer festen Zahl von den Zählern CNT2P 1703, CNT3 1704, CNT1 1705 und CNT2S 1706 von Fig. 13 nicht bestimmt werden. Da die Zähler CNT2S1 1727, CNT3S 1728, CNT1S 1729 und CNT2S2 1730, die die jeweilige Anzahl der verarbeiteten Elemente zählen, später hochgezählt werden (genauer nach der Bestimmung des Vorliegens oder Nichtvorliegens der Unterbrechung), kann, wenn die Unterbrechung festgestellt wird, die Hochzählung unterdrückt werden, so daß die jeweilige Elementanzahl der normalerweise verarbeiteten Elemente gehalten werden kann.
- Fig. 13 zeigt eine Konfiguration des Vektorprozessors 1007 für die Verarbeitung der Vektorelemente des MISCHVER- EINIGUNGS-Befehls.
- In dem Vektorprozessor von Fig. 13 ist ROBA 1708 ein Operandenpuffer zum Speichern der OP2-Daten, ROPA 1707 ist ein Auslese-Zeiger für den ROBA 1708, ROBB 1709 ist ein Operandenpuffer zum Speichern der OP3-Daten, schließlich ist ROPB 1710 ein Auslese-Zeiger für den ROBB 1709. In Fig. 13 sind Einlese-Zeiger für die Operandenpuffer 1708 und 1709 weggelassen, obwohl Einlese-Zeiger, die den Einlese-Zeigern 719 und 720 in Fig. 6 ähneln, vorgesehen sind.
- Das Bezugszeichen 1713 bezeichnet einen Komparator für den Vergleich der zweiten vier Bytes der Operandendaten, das Bezugszeichen 1714 bezeichnet einen Komparator für den Vergleich des durch den OP2-Zähler CNT2P 1703 bezeichneten Elements mit dem nächsten Element, und das Bezugszeichen 1715 bezeichnet einen Komparator für den Vergleich des durch den OP3-Zähler CNT3 1704 bezeichneten Elements mit dem nächsten Element. Wenn die hinteren Teile (die zweiten vier Bytes der Daten) von OP2 und von OP3 gleich sind, kombiniert ein Register 1716 die vorderen Teile (die ersten vier Bytes der Daten) von OP2 und von OP3 mittels des Steuersignals von einem Pfad 1725 und einer Wähleinrichtung 1717 zu 8-Byte-Daten und schickt diese 8-Byte-Daten über den Pfad 1075 an die Abarbeitungseinheit 1005, liest die Inhalte der Zähler CNT2S1 1727, CNT3S 1728, CNT1S 1729 und CNT2S2 1730 aus und schreibt diese über die Pfade 1075 und 1054 (Fig. 11) in das GPR 1004. Eine Entscheidungsschaltung 1721 empfängt das Vergleichsergebnis bezüglich des hinteren Teils von OP2 und von OP3 und das Vergleichsergebnis der Zähler CNT2P 1703, CNT3 1704 und CNT1 1705 und der Register MAX2 1700, MAX3 1701 und MAX1 1702, um festzustellen, ob das Ende erreicht ist und welcher Zähler inkrementiert werden soll. Die Entscheidung der Entscheidungsschaltung 1721 wird über einen Codierer 1742 in einem Entscheidungswarteschlangen-Register 1724 gesetzt. Eine Setzposition und eine Ausgangsposition des Entscheidungswarteschlangen-Registers 1724 werden mittels eines Einlese-Zeigers 1723 und eines Auslese-Zeigers 1725 angezeigt. Der Ausgang des Warteschlangenregisters 1724 wird über eine Wähleinrichtung 1744 an einen Decodierer 1743 geliefert. Der Ausgang des Decodierers 1743 steuert die Zähler 1727 bis 1730.
- Wenn von der Abarbeitungseinheit 1005 an die Pufferspeicher-Steuereinheit 1001 eine Abrufanforderung ausgegeben wird und der OP2 und der OP3 abgerufen werden, werden die abgerufenen Daten des OP2 über den Pfad 1015a von Mol-%11, das WAR 1500 und den Pfad 1057a im ROBA 1708 gesetzt. Die Daten des OP3 werden über den Pfad 1015b, das WAR 1501 und den Pfad 1057b im ROBB 1709 gesetzt. Dann werden sie miteinander verglichen. Die Entscheidung der Entscheidungsschaltung 1721 wird durch den Codierer 1742 codiert, woraufhin die codierten Daten in das Entscheidungswarteschlangen-Register 1724 an einer durch den Einlese-Zeiger 1723 gezeigten Position gesetzt werden. Die Entscheidung wird außerdem über den Pfad 1075a an die Abarbeitungseinheit 1005 geschickt.
- Die Abarbeitungseinheit 1005 addiert mittels der Speichersteuerschaltung 1505 zur Speicheranforderung eine gültige oder eine ungültige Information und schickt die Speicheranforderung zur speicheranforderungs-Steuerschaltung 1109 in der Pufferspeicher-Steuereinheit 1001. Je nachdem, ob die zusätzliche Information gültig oder ungültig ist, setzt die Speicheranforderungs-Steuerschaltung 1109 die Speicheranforderung in einer Firstin/first-out-Warteschlange. Wenn in der Hauptspeicher- Steuereinheit 1008 keine Speicheranforderung verarbeitet wird oder wenn das Ende der Verarbeitung der vorhergehenden Speicheranforderung über den Pfad 1001b an die Speicheranforderungs-Steuerschaltung 1109 gemeldet wird, liest die Speicheranforderungs-Steuerschaltung 1109 die Speicheranforderung und die zusätzliche Information aus der Warteschlange im First-in/first-out-Schema aus. Wenn die zusätzliche Information angibt, daß die Speicheranforderung gültig ist, schickt die Speicheranforderungs- Steuerschaltung 1109 die Speicheranforderung an die Hauptspeicher-Steuereinheit 1008. Wenn sie die Ungültigkeit angibt, wird das Signal bezüglich des Endes einer Speicheranforderungsverarbeitung über den Pfad 1016 an die Abarbeitungseinheit 1005 geschickt. Wenn die Speicheranforderung gültig ist und an die Hauptspeicher-Steuereinheit 1008 ausgegeben wird, hält die Speicheranforderungs-Steuerschaltung 1109 den Abruf der nächsten Anforderung aus der Warteschlange so lange an, bis das Ende der Speicherung über den Pfad 1001b gemeldet wird, um den Überlauf der Verarbeitung zu verhindern. Das von der Pufferspeicher-Steuereinheit 1001 erfaßte Vorliegen oder Nichtvorliegen der Speicherzugriffsunterbrechung wird über den Pfad 1016 zusammen mit dem Signal bezüglich des Endes der Speicheranforderungsverarbeitung ebenfalls an die Abarbeitungseinheit 1005 geschickt. Die Speicheranforderungs-Steuerschaltung 1505 in der Abarbeitungseinheit 1505 gibt das von der Pufferspeicher-Steuereinheit 1001 geschickte Signal bezüglich des Endes der Speicheranforderungsverarbeitung über den Pfad 1058 zum Vektorprozessor 1007.
- Wenn das Signal bezüglich des Endes der Speicheranforderungsverarbeitung und das Zugriffsunterbrechungssignal von der Abarbeitungseinheit 1005 über den ,Pfad 1058 geschickt werden, erfaßt die Entscheidungsschaltung im Vektorprozessor 1007 das Vorliegen oder Nichtvorliegen der Zugriffsunterbrechung, wobei sie dann, wenn die Unterbrechung nicht vorliegt, den Auslese-Zeiger 1725 des Entscheidungswarteschlangen-Registers 1024 um Eins erhöht und eine der in der Wartschlange 1024 gehaltenen Entscheidungen entnimmt. Diese wird mittels eines Decodierers 1743 decodiert, woraufhin eine Operation ausgeführt wird, die durch den decodierten Inhalt bezeichnet ist (Inkrementieren des entsprechenden Zählers um Eins, Kopieren des Inhaltes des CNT2 1727 in den CNT2S2 1730 oder Unterdrücken der Aktualisierung des Zählers). Wenn die entnommene Entscheidung das Ende der Verarbeitung anzeigt, werden die Zähler CNT2S1 1027 CNT3S 1728, CNT1S 1729 und CNT2S2 1730 nicht angepaßt. Wenn das von der Zugriffsunterbrechung begleitete Signal bezüglich des Endes der Speicheranforderungsverarbeitung entnommen wird, werden die Zähler nicht aktualisiert, woraufhin die Zugriffsunterbrechungsverarbeitung an die Abarbeitungseinheit 1005 abgegeben wird.
- Auf diese Weise wird die jeweilige richtige Anzahl der verarbeiteten Elemente in den Zählern CNT2S1 1727, CNT3S 1728, CNT1S 1729 und CNT2S2 1730 gehalten.
- Wenn die Entscheidungsschaltung 1721 das Auftreten einer "Rückführung" (die später erläutert wird) erfaßt, schickt der Vektorprozessor 1007 ein Setzsignal für das SAA 1200 des Abrufadressenregisters (SASR) 1206 über den Pfad 1072c an die Adressensteuereinheit 1002. Ein Setzsignal zum Setzen des Inhaltes des CNT2S 1706 im CNT2P 1703 wird über den Pfad 1741 ebenfalls von der Entscheidungsschaltung 1721 ausgesandt. Das Auftreten der Rückführung wird über den Pfad 1075a an die Abarbeitungseinheit 1005 gemeldet.
- Wenn der Abarbeitungseinheit 1005 das Auftreten der Rückführung durch den Vektorprozessor 1007 gemeldet wird, schickt sie die Abrufanforderung an die Pufferspeicher- Steuereinheit 1001, wobei die Abrufanforderung durch das SAA 1200 adressiert ist, in dem der Inhalt des SASR 1206 gesetzt ist. Der Vektorprozessor 1007 hält die Entscheidung so lange, bis die Abrufdaten aufgrund der Anforderung ankommen. Die Aktualisierung der Zähler CNT2P 1703, CNT3 1704, CNT1 1705 und CNT2S 1706 wird unterdrückt, jedoch wird die Aktualisierung der Zähler CNT2S1 1727, CNT3S 1728, CNT1S 1729 und CNT2S2 1730 mittels des über den Pfad 1058 geschickten Signals bezüglich des Endes der Speicherabrufverarbeitung auf normale Weise ausgeführt.
- Fig. 14 zeigt ein Zeitablaufdiagramm, das die Abarbeitung des MISCHVEREINIGUNGS-Befehls im Vektorprozessor 1007 erläutert. In Fig. 14 ist angenommen, daß der OP2 und der OP3 wie in Fig. 9 gezeigt beschaffen sind und daß die jeweilige Start-Elementanzahl der unverarbeiteten Elemente von OP2 bzw. von OP3 "0" ist. Es wird außerdem angenommen, daß die Eingangsdaten des MISCHVEREINIGUNGS-Befehls in bezug auf ihre hinteren Teile sortiert worden sind und daß die Abrufdaten der Operanden bei den Puffern 1708 und 1709 im Vektorprozessor im Zyklus 0 ankommen, um für den Vergleich bereit zu sein.
- In Fig. 14 werden das #0-Element von OP2 und das # 0-Element von OP3 durch den Komparator 1713 im Zyklus 0 verglichen. Dies entspricht P10 in Fig. 10. Weil (hinterer Teil von OP2) < (hinterer Teil von OP3), befiehlt die Entscheidungsschaltung im Zyklus 1 die folgenden Operationen:
- (1) Inkrementieren von ROPA 1707, CNT2P 1703 und CNT2S 1706 um Eins durch die Ausgänge 1722, 1741 bzw. 1738.
- (2) Unterdrücken der Aktualisierung des DAR 1202 und des DSAB 1201 im nächsten Zyklus durch die Ausgänge 1072a bzw. 1072b.
- Daher werden im nächsten Zyklus 1 das #1-Element von OP2 und das #0-Element von OP3 miteinander verglichen. Dies entspricht P11 in Fig. 10. Weil (hinterer Teil von OP2) > (hinterer Teil von OP3), befiehlt die Entscheidungsschaltung 1721 im Zyklus 2 die folgenden Operationen:
- (1) Inkrementieren von ROPB 1710 und von CNT3 um Eins mittels der Ausgänge 1723 bzw. 1740.
- (2) Unterdrücken der Aktualisierung von DAR 1202 und von SAA 1200 im nächsten Zyklus mittels der Ausgänge 1072a bzw. 1072b.
- Daher werden im Zyklus 2 das #1-Element von OP2 und das #1-Element von OP3 miteinander verglichen. Dies entspricht P9 in Fig. 10. Weil (hinterer Teil von OP2) = (hinterer Teil von OP3), vergleicht der Komparator 1714 A(i) · HINTEN und A(i+1) · HINTEN mit B(i) · HINTEN und B(i+1) · HINTEN. Die Entscheidungsschaltung 1721 befiehlt im Zyklus 2 die folgenden Operationen:
- (1) Inkrementieren von ROPA 1707 und von CNT2P 1703 um Eins mittels der Ausgänge 1722 bzw. 1741.
- (2) Wählen der vorderen Teile von OP2 und von OP3 mittels der Wähleinrichtung 1717 und des Ausgangs 1725.
- (3) Inkrementieren von CNT1 1705 um Eins mittels des Ausgangs 1739.
- Im Zyklus 3 findet der Vorgang statt, der P8 in Fig. 10 entspricht. D.h.:
- (1) Befehlen des Setzens des Inhaltes von CNT2S 1706 im CNT2P 1703 mittels des Ausgangs 1741.
- (2) Befehlen des Setzens des Inhaltes des SASR 1206 im SAA 1200 mittels des Ausgangs 1072c.
- (3) Wählen des vorderen Teils des #1-Elementes von OP2 und des #1-Elementes von OP3 mittels der Wähleinrichtung 1717 durch den Ausgang 1725.
- (4) Inkrementieren von CNT1 1705 um Eins mittels des Ausgangs 1739.
- Auf diese Weise werden die Adresse und der Zählstand auf die gesicherten vorigen Werte zurückgestellt. Dies ist ein Beispiel für die Rückführung.
- Im vorliegenden Beispiel werden sie auf die unmittelbar vorhergehende Elementadresse und die unmittelbar vorhergehende Elementnummer zurückgeführt. In bestimmten Fällen können sie um mehr als ein Element zurückgeführt werden. Wenn daher der Abarbeitungseinheit 1005 vom Vektorprozessor 1007 über den Pfad 1075a das Auftreten der Rückführung gemeldet wird, gibt sie erneut eine Abrufanforderung aus. In diesem Fall wird die Adresse verwendet, die im SAA 1200 gehalten wird, indem der Inhalt des SASR 1206 gesetzt ist. Die Zyklen 5-7 von Fig. 14 zeigen das Warten auf die Ankunft der Daten für die Abrufanforderung.
- In Fig. 14 entsprechen die auf der Zeile des Entscheidungsergebnisses gezeigten Symbole dem PAD in Fig. 10 und geben die in Übereinstimmung mit der Entscheidung befohlenen Operationen an. Der Befehl erscheint in den Inhalten der Zähler im nächsten Zyklus.
- Die Verarbeitung nach der Vergleichsoperation der Elemente des MISCHVEREINIGUNGS-Befehls wird mit Bezug auf die Fig. 11 und 13 erläutert.
- Wenn die OP1-Speicherbedingung nicht vorliegt (d. h., daß die hinteren Teile von OP2 und von OP3 gleich sind), wenn die Inhalte des Zählers CNT2P 1703 im Vektorprozessor 1007 gleich den Inhalten von MAX2 1700 sind und die Inhalte des Zählers CNT3 1704 gleich den Inhalten von MAX3 1701 sind oder wenn die Inhalte von CNT1 1705 gleich den Inhalten von MAX1 1702 sind oder wenn an die Entscheidungsschaltung das Auftreten einer Unterbrechung gemeldet wird, ist der Zustand des Verarbeitungsendes erreicht, so daß die Entscheidungsschaltung 1721 einen Befehl zum Beenden der Verarbeitung ausgibt. Wenn die Abarbeitungseinheit 1005 den Befehl bezüglich des Verarbeitungsendes empfängt, wartet sie zum Löschen der Verarbeitung auf die Speicheranforderung in der Pufferspeicher-Steuereinheit 1001, d. h. auf das Aussenden sämtlicher Signale bezüglich des Endes der Speicheranforderungsverarbeitung für die Speicheranforderung an den Vektorprozessor 1007. Wenn sämtliche Signale bezüglich des Endes der Speicheranforderungsverarbeitung an den Vektorprozessor 1007 ausgesandt worden sind, halten die Zähler CNT2S1 1727, CNT3S 1728, CNT1S 1729 und CNT2S2 1730 im Vektorprozessor 1007 die den verarbeiteten Elementen entsprechenden Elementnummern. Danach werden die Zähler CNT2S1 1727, CNT3S 1728, CNT1S 1729 und CNT2S2 1730 im Vektorprozessor 1007 unter der Steuerung der Abarbeitungseinheit 1005 sequentiell gelesen, wobei ihre Inhalte über die Wähleinrichtung 1717, das Register 1716 und den Pfad 1075 im WCR 1502 gesetzt werden und über den Pfad 1054 in vier Universalregister geschrieben werden, deren Seriennummern bei derjenigen Nummer beginnen, die durch das R1-Feld des Befehls bezeichnet ist. Nachdem die vier Zählstände in die Universalregister geschrieben worden sind, meldet die Abarbeitungseinheit 1005 der Befehlseinheit 1003 des Ende des MISCHVEREINIGUNGS-Befehls.
- Die Nachverarbeitung bei einer Unterbrechung wie etwa einer Seitenübersetzung, die während der Verarbeitung der Vektorelemente aufgetreten ist, ist ähnlich der obenbeschriebenen Nachverarbeitung. Im Ergebnis werden die Zähler für normal verarbeitete Elemente aktualisiert, wobei die Zählstände der nicht verarbeiteten Elemente im GPR gehalten werden. Wenn der Befehl nach der Verarbeitung der Unterbrechung erneut gestartet wird, kann die Abarbeitung des Vektorbefehls durch Ausführen derselben Vorverarbeitung für den Beginn der Vektorverarbeitung wie beim ersten Mal wieder aufgenommen werden.
Claims (3)
1. Vektorrechner mit:
- Speichervorrichtung (1104, 1105) für die Speicherung
mehrerer Vektoroperanden, die im ersten Teil
numerische Daten und im zweiten Teil eine Kennung für die
numerischen Daten enthalten,
- Instruktionseinheit (1003) für die Angabe einer
Startadresse und einer maximalen Zahl von
Vektoroperanden durch eine Instruktion,
- Adreßsteuerung (1002) für die Steuerung des
Auslesens von Vektoroperanden aus der Speichervorrichtung
(1104, 1105) entsprechend den Startadressen, die von
der Instruktionseinheit (1003) ausgegeben werden und
- Vektorprozessor (1007) für die Bearbeitung der
Vektoroperandenelemente mit einem Operationsergebnis mit
- Puffern (1708, 1709) für die Speicherung von
Vektoroperanden aus der Speichervorrichtung (1104,
1105),
- erstem Komparator (1713) für den Vergleich der
Vektoroperandenelemente aus der Speichervorrichtung
(1104, 1105),
- Elementzählern (1703, 1704, 1705, 1706) für die
Bestimmung der Anzahl der Vektoroperanden, wobei
jeder Elementzähler (1703, 1704, 1705, 1706) je nach
Operationsergebnis durch die Steuerung (1707, 1710,
1711, 1712, 1721) auf den aktuellen Stand gebracht
wird,
- Steuerung (1707, 1710, 1711, 1712) für die
Steuerung des Einlesens eines als nächstes zu
bearbeitenden Elementes aus dem Puffer (1708, 1709)
entsprechend dem Operationsergebnis, welche die
Vorrichtungen (1700, 1701, 1702, 1731, 1732, 1733) für
die Bestimmung des Endes der Bearbeitung aufgrund
der maximalen Zahl der Elemente jedes
Vektoroperanden umfaßt, das durch die Instruktionseinheit
(1003) und die Anzahl jedes Zählers (1703, 1704,
1705) bestimmt wird,
und
- zweitem Komparator (1714, 1715) für den Vergleich
benachbarter Elemente desselben Operanden und mit
dem ersten Komparator (1713) und dem zweiten
Komparator (1714, 1715) verbundene Vorrichtungen
(1717, 1716), um die Identifizierungskennung der
Elemente mit denselben numerischen Daten zu
verbinden, um Vektorelemente mit kombinierter
Identifizierungskennung entsprechend dem Vergleichsergebnis
des ersten und des zweiten Komparators (1713, 1714,
1715) zu bilden, und um die kombinierte Information
in die Speichervorrichtung (1104, 1105) zu
übertragen, in der der Inhalt aus den Elementzählern
(1703, 1704, 1705, 1706) auf einen früheren Wert
zurückgeführt wird, wenn beide Komparatoren (1713,
1714, 1715) gleiche numerische Daten ermitteln.
2. Vektorrechner nach Anspruch 1,
gekennzeichnet durch
Vektorprozessor (1007) mit Adressendekodierer (1100,
1101) für die Dekodierung der Adressen aus dem
Adreßregister (1200, 1201), Vorrichtung (1721) für die
Aufnahme einer Dekodierungsmeldung, und zusätzliche Zähler
(1727, 1728, 1729, 1730), welche nach Feststellung, ob
eine Übersetzungsmeldung vorlag oder nicht die Zahl der
abgearbeiteten Elemente zählen.
3. Vektorrechner nach Anspruch 1 oder 2,
gekennzeichnet durch
Adreßdekodierer (1002) mit Adreßregister (1200, 1201)
für das Auslesen der Vektoroperandenelemente und
Aktualisierungsvorrichtungen (1203, 1204) für die Steuerung
der Aktualisierung der Adreßregister (1200, 1201)
entsprechend dem Operationsergebnis der Steuerung (1721).
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP59260708A JPH0731588B2 (ja) | 1984-12-12 | 1984-12-12 | ベクトル処理装置 |
JP60026893A JPS61187076A (ja) | 1985-02-14 | 1985-02-14 | ベクトル処理装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
DE3587167D1 DE3587167D1 (de) | 1993-04-15 |
DE3587167T2 true DE3587167T2 (de) | 1993-08-12 |
Family
ID=26364747
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE8585115752T Expired - Fee Related DE3587167T2 (de) | 1984-12-12 | 1985-12-11 | Geraet zur vektorverarbeitung. |
Country Status (3)
Country | Link |
---|---|
US (1) | US4890220A (de) |
EP (1) | EP0184828B1 (de) |
DE (1) | DE3587167T2 (de) |
Families Citing this family (29)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0227900B1 (de) * | 1985-12-02 | 1993-03-31 | International Business Machines Corporation | Datenverarbeitungsgerät mit Drei-Adress-Befehlen |
JP2760790B2 (ja) * | 1986-10-09 | 1998-06-04 | 株式会社日立製作所 | データ処理装置 |
JP3070744B2 (ja) * | 1987-04-10 | 2000-07-31 | 株式会社日立製作所 | ベクトル処理装置 |
JPS63253468A (ja) * | 1987-04-10 | 1988-10-20 | Hitachi Ltd | ベクトル処理装置 |
WO1989003091A1 (en) * | 1987-09-25 | 1989-04-06 | Hitachi, Ltd. | Method of sorting vector data and a vector processor adapted thereto |
JP2902402B2 (ja) * | 1987-09-30 | 1999-06-07 | 三菱電機株式会社 | データ処理装置 |
JPH0766324B2 (ja) * | 1988-03-18 | 1995-07-19 | 三菱電機株式会社 | データ処理装置 |
US5210834A (en) * | 1988-06-01 | 1993-05-11 | Digital Equipment Corporation | High speed transfer of instructions from a master to a slave processor |
US5130797A (en) * | 1989-02-27 | 1992-07-14 | Mitsubishi Denki Kabushiki Kaisha | Digital signal processing system for parallel processing of subsampled data |
JPH0760411B2 (ja) * | 1989-05-23 | 1995-06-28 | 株式会社日立製作所 | バッファ記憶制御装置 |
US5197138A (en) * | 1989-12-26 | 1993-03-23 | Digital Equipment Corporation | Reporting delayed coprocessor exceptions to code threads having caused the exceptions by saving and restoring exception state during code thread switching |
JPH07104784B2 (ja) * | 1990-04-03 | 1995-11-13 | 富士ゼロックス株式会社 | デジタルデータ処理装置 |
EP0607988B1 (de) * | 1993-01-22 | 1999-10-13 | Matsushita Electric Industrial Co., Ltd. | Programmgesteuertes Prozessor |
US5689653A (en) * | 1995-02-06 | 1997-11-18 | Hewlett-Packard Company | Vector memory operations |
JP3518034B2 (ja) * | 1995-03-30 | 2004-04-12 | 三菱電機株式会社 | ソート方法並びにソート処理装置並びにデータ処理装置 |
GB2343268B (en) * | 1998-10-30 | 2003-06-04 | Ericsson Telefon Ab L M | Memory devices |
US6857061B1 (en) * | 2000-04-07 | 2005-02-15 | Nintendo Co., Ltd. | Method and apparatus for obtaining a scalar value directly from a vector register |
US8504806B2 (en) * | 2008-08-15 | 2013-08-06 | Apple Inc. | Instruction for comparing active vector elements to preceding active elements to determine value differences |
US9342304B2 (en) | 2008-08-15 | 2016-05-17 | Apple Inc. | Processing vectors using wrapping increment and decrement instructions in the macroscalar architecture |
US9335980B2 (en) | 2008-08-15 | 2016-05-10 | Apple Inc. | Processing vectors using wrapping propagate instructions in the macroscalar architecture |
US9335997B2 (en) | 2008-08-15 | 2016-05-10 | Apple Inc. | Processing vectors using a wrapping rotate previous instruction in the macroscalar architecture |
US8209525B2 (en) * | 2008-08-15 | 2012-06-26 | Apple Inc. | Method and apparatus for executing program code |
US9389860B2 (en) | 2012-04-02 | 2016-07-12 | Apple Inc. | Prediction optimizations for Macroscalar vector partitioning loops |
US9348589B2 (en) | 2013-03-19 | 2016-05-24 | Apple Inc. | Enhanced predicate registers having predicates corresponding to element widths |
US9817663B2 (en) | 2013-03-19 | 2017-11-14 | Apple Inc. | Enhanced Macroscalar predicate operations |
US10809978B2 (en) * | 2017-06-02 | 2020-10-20 | Texas Instruments Incorporated | Merge sort accelerator |
US10831503B2 (en) | 2018-11-06 | 2020-11-10 | International Business Machines Corporation | Saving and restoring machine state between multiple executions of an instruction |
US10831502B2 (en) | 2018-11-06 | 2020-11-10 | International Business Machines Corporation | Migration of partially completed instructions |
US10831478B2 (en) * | 2018-11-06 | 2020-11-10 | International Business Machines Corporation | Sort and merge instruction for a general-purpose processor |
Family Cites Families (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB747847A (en) * | 1950-09-29 | 1956-04-18 | Standard Telephones Cables Ltd | Improvements in or relating to electrical circuits for transferring information between information storage circuits |
US3161764A (en) * | 1961-07-25 | 1964-12-15 | Burroughs Corp | Electronic multiplier for a variable field length computer |
US3541516A (en) * | 1965-06-30 | 1970-11-17 | Ibm | Vector arithmetic multiprocessor computing system |
US3428946A (en) * | 1965-08-26 | 1969-02-18 | Goodyear Aerospace Corp | Means for merging data |
US3573851A (en) * | 1968-07-11 | 1971-04-06 | Texas Instruments Inc | Memory buffer for vector streaming |
US3775753A (en) * | 1971-01-04 | 1973-11-27 | Texas Instruments Inc | Vector order computing system |
US3827031A (en) * | 1973-03-19 | 1974-07-30 | Instr Inc | Element select/replace apparatus for a vector computing system |
JPS5148937A (en) * | 1974-10-25 | 1976-04-27 | Fujitsu Ltd | Kiokusochi niokeru junjoseigyohoshiki |
US4128880A (en) * | 1976-06-30 | 1978-12-05 | Cray Research, Inc. | Computer vector register processing |
JPS5852265B2 (ja) * | 1977-01-12 | 1983-11-21 | 株式会社日立製作所 | デ−タ処理装置 |
JPS5725069A (en) * | 1980-07-21 | 1982-02-09 | Hitachi Ltd | Vector data processing equipment |
KR860001434B1 (ko) * | 1980-11-21 | 1986-09-24 | 후지쑤 가부시끼가이샤 | 데이타 처리시 스템 |
JPS57134774A (en) * | 1981-02-13 | 1982-08-20 | Hitachi Ltd | Vector operating device |
US4541046A (en) * | 1981-03-25 | 1985-09-10 | Hitachi, Ltd. | Data processing system including scalar data processor and vector data processor |
JPS57209570A (en) * | 1981-06-19 | 1982-12-22 | Fujitsu Ltd | Vector processing device |
JPS58114274A (ja) * | 1981-12-28 | 1983-07-07 | Hitachi Ltd | デ−タ処理装置 |
US4594682A (en) * | 1982-12-22 | 1986-06-10 | Ibm Corporation | Vector processing |
JPS59160267A (ja) * | 1983-03-02 | 1984-09-10 | Hitachi Ltd | ベクトル処理装置 |
US4630192A (en) * | 1983-05-18 | 1986-12-16 | International Business Machines Corporation | Apparatus for executing an instruction and for simultaneously generating and storing related information |
JPH077385B2 (ja) * | 1983-12-23 | 1995-01-30 | 株式会社日立製作所 | データ処理装置 |
US4620275A (en) * | 1984-06-20 | 1986-10-28 | Wallach Steven J | Computer system |
-
1985
- 1985-12-10 US US06/806,801 patent/US4890220A/en not_active Expired - Lifetime
- 1985-12-11 DE DE8585115752T patent/DE3587167T2/de not_active Expired - Fee Related
- 1985-12-11 EP EP85115752A patent/EP0184828B1/de not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
EP0184828A2 (de) | 1986-06-18 |
EP0184828A3 (en) | 1988-10-12 |
DE3587167D1 (de) | 1993-04-15 |
US4890220A (en) | 1989-12-26 |
EP0184828B1 (de) | 1993-03-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE3587167T2 (de) | Geraet zur vektorverarbeitung. | |
DE3851488T2 (de) | Registerverwaltungssystem mit Ausführung von Befehlen in Unordnung in einem Computerprozessor. | |
DE69506623T2 (de) | Datenprozessor mit einer Ausführungseinheit zur Durchführung von Ladebefehlen und Verfahren zu seinem Betrieb | |
DE68928677T2 (de) | Verfahren und digitaler Computer zur Vorverarbeitung mehrerer Befehle | |
DE3852928T2 (de) | Datenprozessor mit A/D-Umsetzer, um mehrere analoge Eingabekanäle in Digitaldaten umzusetzen. | |
DE69331311T2 (de) | Datenkommunikationssystem und Verfahren | |
DE69419680T2 (de) | Skalierbare Unterbrechungsstruktur für ein Simultanverarbeitungssystem | |
DE60010907T2 (de) | Sram-steuerungvorrichtung für parallele prozessorarchitektur mit adressen- und befehlswarteschlange und arbiter | |
DE69932066T2 (de) | Mechanismus zur "store-to-load forwarding" | |
DE2855106C2 (de) | Einrichtung zur Durchführung von bedingten Verzweigungen | |
DE3785897T2 (de) | Steuervorrichtung zum vorabruf von befehlen. | |
DE69329778T2 (de) | System und verfahren zur handhabung von laden und/oder speichern in einem superskalar mikroprozessor | |
DE3853529T2 (de) | Dynamische Mehrbefehle-Mehrdaten-Mehrpipeline-Gleitpunkteinheit. | |
DE68927492T2 (de) | Verfahren und Vorrichtung zur gleichzeitigen Verteilung von Befehlen an mehrere funktionelle Einheiten | |
DE69227664T2 (de) | Hardwarekonfiguriertes Betriebssystemkern für einen Multitaskprozessor | |
DE69130630T2 (de) | Synchrones Verfahren und Gerät für Prozessoren | |
DE3751356T2 (de) | Informationsverarbeitungssystem. | |
DE3687744T2 (de) | Aktualisierung der verzweigungsgeschichtstabelle in einem pipeline-verarbeitungssystem. | |
DE69624158T2 (de) | Superskalarer Prozessor mit mehreren Registerblöcken und Erzeugung von spekulativen Antwortadressen | |
DE3750935T2 (de) | Verfahren und System zum Erleichtern der Befehlsausführung in einem digitalen Rechner. | |
DE69323790T2 (de) | Verfahren und Vorrichtung für mehreren ausstehende Operationen in einem cachespeicherkohärenten Multiprozessorsystem | |
DE68911398T2 (de) | Methode und digitaler computer zum vorausholen von vektordaten aus dem speicher in einem für skalaverarbeitung bestimmten speichersystem. | |
DE69231197T2 (de) | Verfahren und Vorrichtung für eine verbesserte Speicherarchitektur | |
DE69305366T2 (de) | System und verfahren zum kennzeichnen von befehlen zur steuerung der befehlsausführung | |
DE3851746T2 (de) | Sprungvorhersage. |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8364 | No opposition during term of opposition | ||
8339 | Ceased/non-payment of the annual fee |