DE69229771T2 - Datenverarbeitungsverfahren und -vorrichtung - Google Patents

Datenverarbeitungsverfahren und -vorrichtung

Info

Publication number
DE69229771T2
DE69229771T2 DE69229771T DE69229771T DE69229771T2 DE 69229771 T2 DE69229771 T2 DE 69229771T2 DE 69229771 T DE69229771 T DE 69229771T DE 69229771 T DE69229771 T DE 69229771T DE 69229771 T2 DE69229771 T2 DE 69229771T2
Authority
DE
Germany
Prior art keywords
register
window pointer
instruction
floating point
physical
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 - Lifetime
Application number
DE69229771T
Other languages
English (en)
Other versions
DE69229771D1 (de
Inventor
Hiromitsu Imori
Hiroshi Nakamura
Kisaburo Nakazawa
Hideo Wada
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from JP30447691A external-priority patent/JP3317985B2/ja
Priority claimed from JP4076608A external-priority patent/JP2875426B2/ja
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Publication of DE69229771D1 publication Critical patent/DE69229771D1/de
Application granted granted Critical
Publication of DE69229771T2 publication Critical patent/DE69229771T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30138Extension of register space, e.g. register cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30101Special purpose registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Computational Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Computing Systems (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Complex Calculations (AREA)

Description

    HINTERGRUND DER ERFINDUNG Gebiet der Erfindung
  • Die vorliegende Erfindung bezieht sich auf ein Verfahren und eine Vorrichtung zur Datenverarbeitung und insbesondere auf eine Technik, bei der der Datenprozessor auf eine größere Anzahl von Registern zugreifen kann, als von den Befehlen adressiert werden kann. Genauer bezieht sich diese Erfindung auf ein Verfahren und eine Vorrichtung zur Vektorverarbeitung, die in der Praxis die Leistungsbeeinträchtigung verhindern, die verursacht wird durch die Datenübertragung aus dem Hauptspeicher während einer sogenannten Vektorverarbeitung, die eine große Menge an Daten kontinuierlich verarbeitet und für die ein Cache- Speicher nicht sehr effektiv ist.
  • BESCHREIBUNG DES STANDES DER TECHNIK
  • Eine herkömmliche Technik, die dem Datenprozessor ermöglicht, auf eine größere Anzahl von Registern zuzugreifen, als von den Befehlen adressiert werden kann, ist beschrieben in der offengelegten japanischen Patentanmeldung JP-A-166649/1982. Gemäß diesem Verfahren wird eine Gruppe von Hardware-Registern geschaffen, die zahlreicher sind als die allgemeinen Register, die von Programmen adressiert werden können. Wenn zwei oder mehr Ladebefehle für dasselbe allgemeine Register von unterschiedlichen Hauptspeicheradressen vorhanden sind, werden die Ladebefehle in diesen Hardware-Registern gehalten. Wenn die Anzahl der allgemeinen Register, die vom Programm adressiert: werden können, gleich 16 ist, werden für jedes allgemeine Register 16 Hardware-Register geschaffen. Mit anderen Worten, es werden insgesamt 256 Hardware-Register bereitgestellt. Ein allgemeines Register 0 ist z. B. den Hardware-Registern 0 bis 15 zugewiesen. Wenn 16 Ladebefehle, die unterschiedliche Hauptspeicheradressen spezifizieren, für das allgemeine Register 0 ausgeführt werden, werden die Daten der 16 Ladebefehle in den Hardwareregistern 0 bis 15 gehalten.
  • Es wird eine Speicherarchitektur geschaffen, um die Hauptspeicheradressen der Ladebefehle zu registrieren, die in der Vergangenheit ausgeführt worden sind, und die Hardwareregisternummern, in denen die geladenen Daten gespeichert wurden. Wenn die Hauptspeicheradresse eines Ladebefehls, der vom Programm ausgegeben wird, mit der im Speicher registrierten Hauptspeicheradresse übereinstimmt, liest das Programm die Daten aus dem entsprechenden Hardwareregister statt aus dem Hauptspeicher. Dieses Verfahren reduziert die Häufigkeit der Hauptspeicherzugriffe und verhindert eine Leistungsbeeinträchtigung aufgrund von Referenzregisterkonflikten zwischen Befehlen.
  • Eine der herkömmlichen Techniken, die dem Datenprozeß erlaubt, auf eine größere Anzahl von Registern zuzugreifen, als von den Befehlen adressiert werden kann, ist beschrieben in einem Buch "Computer Architecture: A Quantitative Approach", S. 450-454, von J. L. Hennessy und D. A. Patterson, herausgegeben von Morgan Kaufmann Publishers Inc. (1990). Gemäß diesem Verfahren wird eine größere Anzahl von Registern mit der Bezeichnung "physikalische Register" geschaffen, als von den Programmen adressiert werden kann, wobei diese in mehrere Teile unterteilt werden, die als Fenster bezeichnet werden. Das heißt, jedes Fenster umfaßt mehrere physikalische Register.
  • Es sei z. B. angenommen, daß das Programm die Register von 1 bis n durchnumeriert und daß es n · m physikalische Register gibt, die von 1 bis n · m durchnumeriert sind. Wenn m Fenster vorgesehen sind, die von 1 bis m numeriert sind, kann ein Fenster 1 den physikalischen Registern 1 bis n zugewiesen sein und ein Fenster 2 den physikalischen Registern n+1 bis 2n zugewiesen sein. Es ist allgemein üblich, physikalische Register vorzusehen, die für alle Fenster gemeinsam sind, oder solche, die für benachbarte Fenster gemeinsam sind. Der Einfachheit halber wird jedoch das obige Beispiel beschrieben. Jedes Fenster besitzt Register, die von einem Programm verwendet werden. Mit anderen Worten, ein Zugreifen auf Register, die von einem Programm adressiert werden, bedeutet einen Zugriff auf physikalische Register, die zu einem bestimmten Fenster gehören. Wenn im vorangehenden Beispiel ein bestimmtes Programm einem Fenster 2 zugewiesen ist und das Programm ein Register k spezifiziert, ist das physikalische Register, auf das zugegriffen werden soll, das Register n+k.
  • Dieses Fenster wird auf folgende Weise verwendet. Es sei angenommen, daß ein bestimmtes Programm einem Fenster j zugewiesen ist. Wenn dieses Programm andere Programme aufruft, wird das aufgerufene Programm einem Fenster j+1 zugewiesen. Wenn ein bestimmtes Programm einem Fenster j zugewiesen ist und die Steuerung von diesem Programm zum ursprünglichen Programm zurückkehrt, ist das letztere Programm, zu dem die Steuerung zurückgekehrt ist, einem Fenster j-1 zugewiesen. Die Verwendung der Register auf diese Weise bietet folgende Vorteile. In einem System, das nur die Anzahl von Registern hat, die von Programmen adressiert werden kann, müssen die in den Registern gespeicherten Daten jedesmal dann im Hauptspeicher gespeichert werden, wenn ein Aufruf für ein Programm statt findet, um die Informationen zu sichern, die zum Zeitpunkt des Aufrufs vorhanden sind. Ferner müssen jedesmal dann, wenn die Steuerung zum aufrufenden Programm zurückkehrt, die im Hauptspeicher gesicherten Daten erneut in die Register geschrieben werden, um die Ausführung des Programms fortzusetzen. Im System mit der obenerwähnten Fensterarchitektur greifen die unterschiedlichen Fenstern zugewiesenen Programme auf unterschiedliche physikalische Register zu, so daß es nicht notwendig ist, Daten vom Register zum Hauptspeicher zu sichern und die Daten erneut vom Hauptspeicher in die Register zurückzuschreiben, wodurch der Prozeß schneller wird.
  • In einem System mit der obenerwähnten Fensterstruktur ist jedoch eine Steuerung erforderlich, durch die dann, wenn ein Programmaufruf von einem Programm mit der maximalen Fensteranzahl durchgeführt wird, eine Fensterüberlaufunterbrechung erzeugt wird, und dann, wenn ein Programmrücksprung von einem Programm mit der minimalen Fensteranzahl eingeleitet wird, eine Fensterunterlaufunterbrechung erzeugt wird.
  • Wissenschaftliche und technische Berechnungen entsprechen meistens den im folgenden gezeigten Vektorberechnungen.
  • C(i) = A(i) + B(i), i = 1, ..., N (1)
  • wobei A, B, C Vektoren mit der Elementanzahl N sind. Unter den wichtigen Berechnungen in wissenschaftlichen und technischen Berechnungen gibt es eine Listenvektorberechnung, die mit den folgenden Gleichungen ausgedrückt wird und hauptsächlich für eine Berechnung einer dünn besetzten Matrix verwendet wird.
  • A(i) = B(Li(i)), i = 1, N (2)
  • A (Li(i)) = B(i), 1 = 1, N (3)
  • A(Li(i)) = A(Li(i)) @B (i), 1 = 1, N (4)
  • wobei Li als Listenvektor bezeichnet wird. Die Gleichung (2) ist eine Quellenindextyp-Berechnung, wobei A und Li Vektoren mit einer Elementanzahl N sind; die Gleichung (3) ist eine Zielindextyp-Berechnung, wobei B und Li Vektoren mit einer Elementanzahl N sind; Gleichung (4) ist eine Partikelschiebertyp-Berechnung, wobei B und Li Vektoren mit einer Elementanzahl N sind. In der Gleichung (3) stellt das Zeichen @ eine Berechnung dar wie z. B. eine Addition, eine Subtraktion, eine Multiplikation oder eine Division.
  • Wie aus Gleichung (2) deutlich wird, speichert die Quellenindextyp-Berechnung in einem i-ten Element des Vektors A ein Element des Vektors B, dessen Elementnummer ein i- tes Element des Listenvektors ist. Die Gleichung (3) zeigt, daß die Zielindextyp-Berechnung ein i-tes Element des Vektors B in einem Element des Vektors A speichert, dessen Elementnummer ein i-tes Element des Listenvektors ist. Die Gleichung (4) zeigt, daß die Partikelschieberberechnung eine Operation mit einem Element des Vektors A durchführt, dessen Elementnummer ein i-tes Element des Listenvektors ist, und mit einem i-ten Element des Vektors B, und das Berechnungsergebnis im Element des Vektors A speichert, dessen Elementnummer das i-te Element des Listenvektors ist. Das heißt, die Gleichungen (2), (3) und (4) sind Berechnungen, die eine Elementnummer eines Vektors als ein Element eines weiteren Vektors (Listenvektor) nehmen. Die Gleichung (4) wird in einer dünn besetzten Matrix verwendet, insbesondere auf dem Gebiet des Partikelschiebers, und wird daher als Partikelschiebertyp-Berechnung bezeichnet.
  • Wenn die Gleichung (1) von einem gewöhnlichen Computer ausgeführt wird, ist das Programm so beschaffen, wie in Fig. 7 gezeigt ist.
  • Wenn die Gleichung (2) von einem gewöhnlichen Computer ausgeführt wird, ist das Programm so beschaffen, wie in Fig. 8 gezeigt ist.
  • In der folgenden Erläuterung werden die Datenbreiten der allgemeinen Register und der Gleitkommaregister mit 8 Bytes angenommen.
  • Die Funktion jedes Befehls in den Fig. 7 und 8 wird im folgenden beschrieben.
  • GLDM a (GRm), GRn
  • (Funktion) 8 Bytes an Daten werden aus der Hauptspeicheradresse gelesen, die vom Wert des allgemeinen Registers m spezifiziert wird, wobei die Daten im Standardregister n gespeichert werden.
  • Anschließend wird der Wert des Standardregisters m zu a addiert.
  • FLDM a (GRm), FRn
  • (Funktion) Es werden 8-Byte-Daten aus der Hauptspeicheradresse gelesen, die vom Wert des Standardregisters m spezifiziert wird, und im Gleitkommaregister n gespeichert.
  • Anschließend wird der Wert des Standardregisters m zu a addiert.
  • FADD FRj, FRm, FRn
  • (Funktion) Der Wert des Gleitkommaregisters m und der Wert des Gleitkommaregisters n werden addiert und anschließend wird das Ergebnis im Gleitkommaregister j gespeichert.
  • FADD FRm, FRn
  • (Funktion) Der Wert des Gleitkommaregisters m und der Wert des Gleitkommaregisters n werden addiert und ansch ließend wird das Ergebnis im Gleitkommaregister m gespeichert.
  • FSTM a (GRm), FRn
  • (Funktion) Der Wert (8 Bytes) des Gleitkommaregisters n wird in der Hauptspeicheradresse gespeichert, die vom Wert des Standardregisters m spezifiziert wird.
  • Anschließend wird der Wert des Standardregisters m zu a addiert.
  • BCNT GRm, t
  • (Funktion) der Wert des Standardregisters m wird um 1 dekrementiert. Wenn das Ergebnis ungleich 0 ist, verzweigt das Programm zu einer Adresse t. Wenn das dekrementierte Ergebnis gleich 0 ist, wird keine Verzweigung durchgeführt.
  • Es wird angenommen, daß vor der Ausführung des Programms der Fig. 7 der Vektor A in einem zusammenhängenden Bereich im Hauptspeiche r beginnend bei der Adresse ad1 gespeichert wird. Das heißt, die Hauptspeicheradresse von A(1) ist ad1, und diejenige von A(2) ist ad1+8. In ähnli cher Weise wird angenommen, daß der Vektor B in einem zusammenhängenden Bereich des Hauptspeichers beginnend bei der Adresse ad2 gespeichert wird. Es wird angenommen, daß der Vektor C in einem zusammenhängenden Bereich des Hauptspeichers beginnend bei der Adresse ad3 gespeichert wird. Ferner wird angenommen, daß das Standardregister 1 mit ad1 voreingestellt ist, das Standardregister 2 mit ad2 voreingestellt ist, das Standardregister 3 mit ad3 voreingestellt ist und das Standardregister 4 mit N voreingestellt ist.
  • Wie in Fig. 7 gezeigt, laden die FLDM-Befehle Nr. 1 und Nr. 2 A(i) und B(i) in die Gleitkommaregister 12, 13, addieren die Werte der zwei Register, speichern das Ergebnis im Gleitkommaregister 20 und speichern anschließend den Inhalt des Registers in C(i).
  • Das heißt, die einmalige Ausführung der Schleife der fünf Befehle erzeugt ein Ergebnis für ein Element. Durch N- maliges Wiederholen dieser Schleife können die Ergebnisse für alle Elemente erhalten werden.
  • Hierbei ist die Ausführungszeit einer Schleife wichtig. Die FLDM-Befehle Nr. 1 und Nr. 2 laden die Daten vom Hauptspeicher in die Gleitkommaregister 12, 13. Wenn die Daten im Cache-Speicher vorhanden sind, wird der FLDM- Befehl in einer kleinen Anzahl von Zyklen abgeschlossen. Wenn jedoch die Daten nicht im Cache-Speicher vorhanden sind, müssen sie aus dem Hauptspeicher gelesen werden, der sehr viel langsamer ist als der Cache-Speicher, wodurch eine erheblich längere Zeitspanne erforderlich ist, als wenn die Daten im Cache-Speicher vorhanden sind. Als nächstes verwendet der FADD-Befehl Nr. 3 die Werte der Gleitkommaregister 12, 13. Da die Werte der Gleitkommaregister 12, 13 nur ermittelt werden können, nachdem die zwei vorangehenden FLDM-Befehle ausgeführt worden sind, d. h. nachdem die Daten ausgelesen worden sind, kann der FADD-Befehl bis dahin nicht ausgeführt werden. Ferner verwendet der FSTM-Befehl Nr. 4 den Wert des Gleitkommaregisters 20. Der Wert des Gleitkommaregisters 20 kann jedoch nicht ermittelt werden, bevor der vorangehende FADD-Befehl abgeschlossen ist, so daß der FSTM- Befehl bis dahin nicht ausgeführt werden kann. Das heißt, zwei leistungsbeeinträchtigende Faktoren - (1) die Datenlesezeitspanne und (2) der Konflikt zwischen den Registern - verlängern die Ausführungszeit der Schleife. Insbesondere der Faktor (1) ist ein schwerwiegendes Problem für eine Berechnung, die eine große Menge an Daten behandelt, da eine große Menge an Daten häufig nicht im Cache-Speicher untergebracht werden kann, was zu einer erheblichen Herabsetzung der Leistungsfähigkeit führt.
  • Es wird angenommen, daß vor der Ausführung des Programms der Fig. 8 der Vektor L in einem zusammenhängenden Bereich im Hauptspeicher beginnend bei der Adresse ad1 gespeichert wird. Das heißt, die Hauptspeicheradresse von L(1) ist ad1, während diejenige von L(2) gleich ad1+8 ist. In ähnlicher Weise wird angenommen, daß der Vektor A in einem zusammenhängenden Bereich des Hauptspeichers beginnend bei der Adresse ad2 gespeichert wird; Es wird angenommen, daß der Vektor B in einem zusammenhängenden Bereich des Hauptspeichers beginnend bei der Adresse ad3 gespeichert wird. Es wird ferner angenommen, daß das Standardregister 1 mit ad1, das Standardregister 2 mit ad2 und das Standardregister 4 mit N voreingestellt werden. Der Vektor L ist eine Variation des Listenvektors Li, wie im folgenden gezeigt ist.
  • L(i) = 8 · (Li(i) - 1) + ad3 (5)
  • Das heißt, L(i) enthält die Adresse von B(Li(i)). Wenn die Gleichung (2) unter Verwendung von Li(i) ausgedrückt wird, wird das Programm komplex, da es die Operationen enthält, die (Li(i)-1) mit 8 multiplizieren und ad3 zum Ergebnis addieren. Der Einfachheit halber wird daher L(i) eingeführt.
  • Wie in Fig. 8 gezeigt, lädt der GLDM-Befehl Nr. 1 L(i) in das Standardregister 20, wobei der FLDM-Befehl Nr. 2 B(Li(i)) aus der Hauptspeicheradresse, die vom Standardregister spezifiziert wird, in das Gleitkommaregister 20 lädt und der FSTM-Befehl Nr. 3 den Wert des Gleitkommaregisters in A(i) speichert. Durch einmaliges Ausführen der aus den vier Befehlen bestehenden Schleife ist es möglich, das Ergebnis eines Elements zu ermitteln. Die Nfache Ausführung dieser Schleife berechnet die Ergebnisse für alle Elemente.
  • Hierbei ist die Ausführungszeit einer Schleife wichtig, wie in Fig. 7 gezeigt ist. Der GLDM-Befehl Nr. 1 lädt die Daten aus dem Hauptspeicher in das Standardregister 20. Der FLDM-Befehl Nr. 2 verwendet das Standardregister 20, so daß er seine Ausführung nicht einleiten kann, bevor der Ladevorgang abgeschlossen ist. Da ferner der FLDM- Befehl Nr. 2 die Daten aus dem Hauptspeicher in das Gleitkommaregister 20 lädt und der FSTM-Befehl Nr. 3 das Gleitkommaregister 20 verwendet, kann die Befehlsausführung nicht gestartet werden, bevor der Datenladevorgang abgeschlossen ist. Ähnlich dem Fall der Fig. 7 verlängern zwei leistungsbeeinträchtigende Faktoren - (1) die Datenlesezeitspanne und (2) der Registerkonflikt - die Ausführungszeit der Schleife.
  • In ähnlicher Weise sind die Programme dann, wenn die Gleichungen (3) und (4) von einem Standardcomputer ausgeführt werden, so beschaffen, wie in den Fig. 9 und 10 gezeigt ist. Die gleichen leistungsbeeinträchtigenden Faktoren verlängern die Ausführungszeit der Schleife. Die Beschreibung der Programme wird weggelassen.
  • Es ist möglich, ein Schleifenentrollverfahren als eine Einrichtung zum Lösen des Problems der zwei leistungsbeeinträchtigenden Faktoren - (1) der Datenlesezeit und (2) dem Registerkonflikt - die durch die in den Fig. 7 bis 10 gezeigten Vektorverarbeitungsprogramme erzeugt werden, zu lösen. Mit diesem Schleifenentrollverfahren werden mehrere Elemente (= n) in einer Schleife verarbeitet. Im Vergleich zum herkömmlichen Verfahren, bei dem ein Element in einer Schleife verarbeitet wird, hat dieses Schleifenentrollverfahren 1/n der Anzahl der Schleifen, die vom herkömmlichen Verfahren benötigt werden. Das Prinzip des Schleifenentrollverfahrens ist beschrieben im obenerwähnten Buch "Computer Architecture: A Quantitative Approach", S. 314-318, von J. L. Nennessy und D. A. Patterson.
  • Die Erfinder der vorliegenden Erfindung wenden das Schleifenentrollverfahren auf die obenbeschriebenen Programme an. Die Anwendung des Schleifenentrollverfahrens auf diese Programme führt zu den in den Fig. 11 und 12 gezeigten Programmen. In beiden Programmen werden in einer Schleife vier Elemente verarbeitet.
  • Es sei angenommen, daß vor der Ausführung des Programms der Fig. 11 das Standardregister 4 mit N/4 voreingestellt ist. Die anderen voreingestellten Daten sind dieselben, wie bei der Ausführung des in Fig. 7 gezeigten Programms. Wie in Fig. 11 gezeigt, ermittelt die einmalige Ausführung der Schleife, die aus 17 Befehlen besteht, die Ergebnisse von vier Elementen, wobei das N/4-fache Wiederholen dieser Schleife das Berechnungsergebnis für alle Elemente erzeugt.
  • Wie in Fig. 11 gezeigt, wird für das i-te Element die Ladeoperation von den FLDM-Befehlen Nr. 1 und Nr. 2 durchgeführt, die Additionsoperation vom FADD-Befehl Nr. 9 durchgeführt und die Speicheroperation vom FSTM- Befehl Nr. 13 durchgeführt. In ähnlicher Weise wird für das (i+1)-te Element die Ladeoperation von den FLDM- Befehlen Nr. 3 und Nr. 4 durchgeführt, die Additionsoperation vom FADD-Befehl Nr. 10 durchgeführt und die Speicheroperation vom FSTM-Befehl Nr. 14 durchgeführt. In ähnlicher Weise wird für das (i+2)-te Element die Ladeoperation von den FLDM-Befehlen Nr. 5 und Nr. 6 durchgeführt, die Additionsoperation vom FADD-Befehl Nr. 11 durchgeführt und die Speicheroperation vom FSTM-Befehl Nr. 15 durchgeführt. Für das (i+3)-te Element wird die Ladeoperation von den FLDM-Befehlen Nr. 7 und Nr. 8 durchgeführt, die Additionsoperation vom FADD-Befehl Nr. 12 durchgeführt und die Speicheroperation vom FSTM- Befehl Nr. 16 durchgeführt.
  • Anders als bei den Befehlen in Fig. 7 ist daher die Serie von Operationen - Laden, Addieren und Speichern - für ein bestimmtes Element von anderen Befehlen für die Befehlssequenz getrennt, wodurch die Auswirkungen der Leistungsbeeinträchtigung reduziert werden, die von (1) der Datenlesezeitspanne und (2) dem Registerkonflikt hervorgerufen werden. Zum Beispiel laden die FLDM-Befehle Nr. 1 und Nr. 2 A(i) und B(i), wobei das Ergebnis der Ladeoperation sieben Befehle später verwendet wird, so daß dann, wenn die Datenlesezeit innerhalb der sieben Zyklen liegt, der FADD-Befehl Nr. 9, der das Ergebnis der Leseoperation verwendet, nicht warten muß. Da ferner das Ergebnis der Addition A(i) + B(i), die vom FADD-Befehl Nr. 9 ausgeführt wird, vier Befehle später verwendet wird, muß der FSTM-Befehl Nr. 13 nicht warten, wenn die Additionszeit kleiner ist als vier Zyklen.
  • Im folgenden wird das in Fig. 12 gezeigte Programm beschrieben. Es sei angenommen, daß vor der Ausführung des Programms der Fig. 12 das Standardregister 4 mit N/4 voreingestellt ist. Die anderen vorhandenen Daten sind dieselben wie bei der Ausführung des in Fig. 8 gezeigten Programms. Wie in Fig. 12 gezeigt, ermittelt die einmalige Ausführung der aus 13 Befehlen bestehenden Schleife die Ergebnisse von vier Elementen, wobei durch N/4-faches Wiederholen dieser Schleife das Berechnungsergebnis für alle Elemente erzeugt wird.
  • Wie in Fig. 12 gezeigt, wird für das i-te Element die Ladeoperation von L vom GLDM-Befehl Nr. 1 durchgeführt, die Ladeoperation von B(Li) vom FLDM-Befehl Nr. 5 durchgeführt und die Speicheroperation von B(Li) in A vom FSTM-Befehl Nr. 9 durchgeführt. In ähnlicher Weise wird für das (i+1)-te Element die Ladeoperation von L vom GLDM-Befehl Nr. 2 durchgeführt, die Ladeoperation von B(Li) vom FLDM-Befehl Nr. 6 durchgeführt und die Speicheroperation von B(Li)in A vom FSTM-Befehl Nr. 10 durchgeführt. In ähnlicher Weise wird für das (i+2)-te Element L vom GLDM-Befehl Nr. 3 geladen, B(Li) vom FLDM-Befehl Nr. 7 geladen und B(Li) in A vom FSTM-Befehl Nr. 11 gespeichert. Für das (i+3)-te Element wird das Laden von L vom GLDM-Befehl Nr. 4 durchgeführt, das Laden von B(Li) vom FLDM-Befehl Nr. 8 durchgeführt und das Speichern von B(Li) in A vom FSTM-Befehl Nr. 12 durchgeführt.
  • Anders als bei den Befehlen in Fig. 8 ist daher die Serie der Operationen - Laden des Elements L, Laden des Elements B(Li) und Speichern des Elements B(Li) in A - für eine bestimmte Elementnummer von anderen Befehlen für die Befehlssequenz getrennt, wodurch die Auswirkungen der zwei leistungsbeeinträchtigenden Faktoren - (1) der Datenlesezeit und (2) dem Registerkonflikt - reduziert werden. Zum Beispiel lädt der GLDM-Befehl Nr. 1 L(i), wobei das Ergebnis der Ladeoperation vier Befehle später verwendet wird, so daß dann, wenn die Datenlesezeit innerhalb vier Taktzyklen liegt, der FLDM-Befehl Nr. 5, der das Ergebnis der Ladeoperation verwendet, nicht warten muß. Da ferner das Ergebnis der Ladeoperation B(Li(i)), die vom FLDM-Befehl Nr. 5 durchgeführt wird, vier Befehle später verwendet wird, muß der FSTM-Befehl Nr. 9, der das Ergebnis der Ladeoperation verwendet, nicht: warten, wenn die Datenlesezeit kleiner ist als vier Zyklen.
  • Obwohl die genaue Beschreibung der Anwendung des Schleifenentrollverfahrens für die in den Fig. 9 und 10 gezeigten Programme nicht gegeben sind, zeigt das Ergebnis der Studie der Erfinder der vorliegenden Erfindung die gleichen Wirkungen wie oben beschrieben.
  • Gemäß der Studie der Erfinder der vorliegenden Erfindung wurde festgestellt, daß das Schleifenentrollverfahren, obwohl es die Leitungsfähigkeit verbessert, auch den Nachteil besitzt, daß es viele Register erfordert. Das in Fig. 7 gezeigte Programm erfordert drei Gleitkommaregister, während das in Fig. 11 gezeigte Programm zwölf Gleitkommaregister erfordert. Das in Fig. 8 gezeigte Programm erfordert ein Gleitkommaregister und ein Standardregister, während das in Fig. 12 gezeigte Programm vier Gleitkommaregister und vier Standardregister erfordert. In ähnlicher Weise erfordert das in Fig. 9 gezeigte Programm ein Gleitkommaregister und ein Standardregister für die Vektordatenspeicherung, während das Programm mit dem Schleifenentrollverfahren vier Gleitkommaregister und vier Standardregister erfordert. In ähnlicher Weise erfordert das in Fig. 10 gezeigte Programm zwei Gleitkommaregister und ein Standardregister für die Vektordatenspeicherung, während das Programm mit dem Schleifenentrollverfahren acht Gleitkommaregister und vier Standardregister erfordert. Wenn die zum Lesen der Daten oder zum Ausführen der Berechnung erforderliche Zeitspanne ansteigt, muß eine größere Anzahl von Elementen in einer Schleife verarbeitet werden, was eine größere Anzahl von Registern erfordert.
  • Im allgemeinen werden die Register von aktiven Elementen (d. h. Nicht-Speicherelementen) gebildet und können daher viele Lese/Schreib-Anschlüsse (Datenzugriffsanschlüsse) besitzen, die eine sehr viel schnellere Operation erlauben als die Speichervorrichtung, die nur eine Daten- Lese/Schreib-Operation in einem Operationszyklus durchführen kann. Es ist daher notwendig, Register mit einer ausreichenden Kapazität vorzusehen, um die Operationsgeschwindigkeit zu erhöhen. Trotzdem wurde herkömmlicherweise nur eine kleine Anzahl von Registern verwendet, da die Kosten je Bit hoch sind und die folgende Einschränkung für die Feldlänge der Registernummer im Befehlsformat vorhanden ist. Das Kostenproblem wurde mit dem Fortschreiten der LSI (hohe Integrationsdichte) gemildert, während das letztere Problem immer noch ungelöst ist.
  • Die Anzahl der Register, die vom Programm adressiert werden können, ist durch die Architektur beschränkt. Wenn z. B. das Befehlswort 5 Bits für das Registerspezifikationfeld besitzt, ist die Anzahl der adressierbaren Register gleich 32 (fünfte Potenz von 2). Eine Erhöhung der Anzahl der Bits des Registerspezifikationfeldes erhöht die Anzahl der Register, die vom Programm adressiert werden können. Dies verändert jedoch das Befehlsformat, was eine Modifikation des bestehenden Programms erfordert, was unrealistisch ist. Es ist daher notwendig, ein Verfahren zu schaffen, das dem Datenprozessor erlaubt, auf eine größere Anzahl von Registern zuzugreifen, als von den Befehlen adressiert werden kann, ohne die Architektur des Datenprozessors zu verändern.
  • Mit dem ersten Verfahren, das in der offengelegten japanischen Patentanmeldung JP-A-166649/1982 beschrieben ist, wird die Operation schneller, wenn ein neuer Ladebefehl für die Hauptspeicheradresse ausgegeben wird, für die ein Ladebefehl in der Vergangenheit ausgeführt worden ist. Da jedoch die Vektorberechnung ähnlich der Gleichungen (1), (2), (3) und (4) die Ladeanforderung meistens für eine Hauptspeicheradresse nur einmal durchführt, wie bei den Programmen der Fig. 7 bis 10, wird die Operationsgeschwindigkeit durch die herkömmliche Technik nicht erhöht.
  • Bei der zweiten Register/Fenster-Ausführungsform des Standes der Technik sind die Register, die ein Programm verwenden kann, diejenigen physikalischen Register, die zu einem Fenster gehören, wobei deren Anzahl gleich der Anzahl der vom Programm adressierbaren Register ist. Dies bedeutet, daß die von einem Programm ausgeführte Berechnung nicht beschleunigt werden kann. Das heißt, die vorher erwähnte Fensterarchitektur kann die Verarbeitungsgeschwindigkeit nur dann erhöhen, wenn ein Programmaufruf und ein Rücksprung stattfinden. Wenn die Verarbeitung mit einem Programm abgeschlossen wird, wie in der Vektorberechnung der Gleichungen (1), (2), (3) und (4), kann keine Geschwindigkeitssteigerung erhalten werden.
  • Ein weiteres Computersystem gemäß dem Stand der Technik ist beschrieben in JP-A-62242349. Das Computersystem des Standes der Technik ist mit einer großen Anzahl von Registern ausgestattet, die eine sehr viel kürzere Zugriffszeit aufweisen als ein Hauptspeicher, wobei ein Registerbezeichnungsadreßabschnitt, in dem die Zuweisung eines Bereichsregisters mit einer Registeradresse eines Registerbereiches als dessen Wert und die Zuweisung eines Registerverschiebungswerts, der eine relative Regi steradresse innerhalb des Registerbereichs ausdrückt, kombiniert sind, in jedem Befehl vorgesehen ist, so daß selbst dann, wenn physikalische Register vermehrt werden, das Sichern und Wiederherstellen von Registern aufgrund von Aufgabenumschaltvorgängen und dergleichen verhindert werden kann, um eine erhöhte Geschwindigkeit der Programmablaufverarbeitung zu erreichen. Ein Adreßabschnitt für die Bezeichnung des Hauptspeichers ist im selben Befehl vorgesehen.
  • ZUSAMMENFASSUNG DER ERFINDUNG
  • Es ist eine Aufgabe der vorliegenden Erfindung, ein Datenverarbeitungsverfahren und einen Datenprozessor zu schaffen, die auf eine größere Anzahl von Registern zugreifen können, als die Register, auf die von den Befehlen zugegriffen werden kann, ohne die Architektur des Datenprozessors zu verändern.
  • Es ist eine weitere Aufgabe der vorliegenden Erfindung, ein Vektorverarbeitungsverfahren und einen Vektorprozessor zu schaffen, die eine Vektorberechnung einer großen Anzahl von Daten durchführen können, ohne Leistungsbeeinträchtigung aufgrund der für die Datenübertragung zu und von einem Hauptspeicher erforderlichen Zeitspanne.
  • Es ist eine weitere Aufgabe der vorliegenden Erfindung, ein Vektorverarbeitungsverfahren und einen Vektorprozessor zu schaffen, die eine Listenvektorberechnung für wissenschaftliche und technische Berechnungen durchführen können.
  • Um die obenerwähnten Aufgaben der vorliegenden Erfindung zu lösen, können mehrere physikalische Register in einer größeren Anzahl vorgesehen sein, als von Programmbefehlen adressiert werden können. Die physikalischen Register sind in mehrere Partialgruppen unterteilt (im folgenden als Fenster bezeichnet). Jedes der physikalischen Register wird mit einer physikalischen Registernummer spezifiziert, die bestimmt wird durch eine Kombination aus der Nummer des Fensters und einer Registernummer (im folgenden als logische Registernummer bezeichnet) in einem Befehl. Die logische Registernummer wird in die physikalische Registernummer umgesetzt unter Verwendung der Fensternummer. Bei der Ausführung eines Berechnungsprogramms mit Wiederholungsschleifen einer Befehlssequenz wird für jede Schleife das Fenster gewechselt. Ein in der i-ten Schleife zu berechnendes Element wird in der Schleife vor der i-ten Schleife geladen (im folgenden als eine Vorschleife bezeichnet), wobei das Ergebnis der Berechnung in der 1-ten Schleife in der Schleife nach der i-ten Schleife (im folgenden als Nachschleife bezeichnet) gespeichert wird.
  • Der Datenprozessor kann mehrere physikalische Register umfassen, in einer größeren Anzahl, als von den Programmbefehlen adressiert werden kann, wobei die physikalischen Register in mehrere Fenster unterteilt sind und jedes der physikalischen Register spezifiziert wird durch eine physikalische Registernummer, die ermittelt wird durch eine Kombination aus einer Fensternummer und einer logischen Registernummer, ein aktuelles Fensterzeigerregister zum Speichern eines Fensterzeigers, der die Fensternummer anzeigt, und eine Umsetzungseinrichtung zum Umsetzen der logischen Registernummer, die die Registernummer in einem Programmbefehl darstellt, in die physikalische Registernummer unter Verwendung des aktuellen Fensterzeigers.
  • Der Datenprozessor enthält vorzugsweise ferner eine Aktuell-Fensterzeigergültigkeitsanzeigeeinrichtung, die anzeigt, daß der aktuelle Fensterzeiger gültig ist, der im Aktuellfensterzeigerregister gespeichert ist.
  • Der Datenprozessor kann mehrere physikalische Gleitkommaregister enthalten, in einer größeren Anzahl als die Gleitkommaregister, die von den Programmbefehlen adressiert werden können, wobei die physikalischen Gleitkommaregister in mehrere Fenster unterteilt sind und jedes der physikalischen Gleitkommaregister spezifiziert wird durch eine physikalische Gleitkommaregisternummer, die ermittelt wird durch eine Kombination aus der Fensternummer und einer Gleitkommaregisternummer (im folgenden als logische Gleitkommaregisternummer bezeichnet) in einem Befehl, ein aktuelles Gleitkommafensterzeigerregister zum Speichern eines aktuellen Gleitkommafensterzeigers, der die Fensternummer anzeigt, ein Aktuell-Gleitkommafensterzeigergültigkeitsregister zum Speichern eines Wertes, der anzeigt, daß der aktuelle Gleitkommafensterzeiger gültig ist, sowie eine Umsetzungsschaltung zum Umsetzen der logischen Gleitkommaregisternummer in die physikalische Gleitkommaregisternummer in einem Programmbefehl unter Verwendung des aktuellen Gleitkommafensterzeigers.
  • Für die Verarbeitungsoperation durch den Datenprozessor sind vorgesehen:
  • ein Aktuell-Gleitkommafensterzeigeränderungsbefehl zum Ändern des aktuellen Gleitkommafensterzeigers;
  • ein Gleitkommaregistervorladebefehl zum Umsetzen der logischen Gleitkommaregisternummer in die physikalische Gleitkommaregisternummer durch Verwenden eines aktuellen Gleitkommafensterzeigers mit einem anderen Wert als den aktuellen Gleitkommafensterzeiger, der im Aktuell-Gleitkommafensterzeigerregister gespeichert ist, wobei der andere Wert aus dem Aktuell-Gleitkommafensterzeiger ermittelt wird, der im Aktuell-Gleitkommafensterzeigerregister gespeichert ist, und wobei die Daten in dem physikalischen Gleitkommaregister gespeichert werden, das durch die umgesetzte physikalische Gleitkommaregisternummer spezifiziert ist; und
  • ein Gleitkommaregistervorspeicherbefehl zum Umsetzen der logischen Gleitkommaregisternummer in die physikalische Gleitkommaregisternummer unter Verwendung eines Gleitkommafensterzeigers mit einem anderen Wert als den Gleitkommafensterzeiger, der im Gleitkommafensterzeigerregister gespeichert ist, wobei der andere Wert ermittelt wird aus dem Gleitkommafensterzeiger, der im Gleitkomma fensterzeigerregister gespeichert ist, und die Daten vom physikalischen Gleitkommaregister, das durch die umgesetzte physikalische Gleitkommaregisternummer spezifiziert ist, in einem Hauptspeicher gespeichert werden.
  • Der Datenprozessor kann umfassen: mehrere physikalische Gleitkommaregister in einer größeren Anzahl als die Gleitkommaregister, die von Programmbefehlen adressiert werden können, wobei die Gleitkommaregister in mehrere Fenster unterteilt sind und jedes physikalische Gleitkommaregister spezifiziert wird durch eine physikalische Gleitkommaregisternummer, die bestimmt wird durch eine Kombination aus dem Fenster und der logischen Gleitkommaregisternummer;
  • ein Aktuell-Gleitkommafensterzeigerregister zum Speichern eines aktuellen Gleitkommafensterzeigers, der zum Umsetzen der logischen Gleitkommaregisternummer verwendet werden soll, die die Gleitkommaregisternummer in einem Programmbefehl anzeigt;
  • eine erste Umsetzungsschaltung zum Umsetzen der logischen Gleitkommaregisternummer in die physikalische Gleitkommaregisternummer durch Verwenden des aktuellen Gleitkommafensterzeigers;
  • mehrere physikalische Standardregister in einer größeren Anzahl als die Gleitkommaregister, die von den Befehlen adressiert werden können, und in einer größeren Anzahl als die Standardregister, die von den Befehlen adressiert werden können;
  • ein Aktuell-Standardfensterzeigerregister zum Speichern eines aktuellen Standardgleitkommaregisters, das für die Umsetzung einer logischen Gleitkommaregisternummer und einer Standardregisternummer in einem Programmbefehl verwendet werden soll;
  • eine zweite Umsetzungsschaltung zum Umsetzen entweder der logischen Gleitkommaregisternummer oder der logischen Standardregisternummer in die physikalische Standardregisternummer unter Verwendung des Aktuell- Standardgleitkommafensterzeigers; und
  • ein Aktuell-Standardfensterzeigergültigkeitsregister zum Speichern eines Wertes, der angibt, daß der aktuelle Standardfensterzeiger gültig ist.
  • Für die Verarbeitungsoperation durch den Datenprozessor werden wenigstens geschaffen:
  • ein Aktuell-Gleitkommafensterzeigeränderungsbefehl zum Ändern des aktuellen Gleitkommafensterzeigers;
  • ein Aktuell-Standardfensterzeigeränderungsbefehl zum Ändern des aktuellen Gleitkommafensterzeigers;
  • ein Gleitkommaregistervorladebefehl zum Lesen von Daten aus einem Hauptspeicher an einer Hauptspeicheradresse, die im physikalischen Standardregister gespeichert ist, das spezifiziert wird durch Umsetzen der logischen Standardregisternummer in die physikalische Standardregisternummer unter Verwendung des aktuellen Standardfensterzeigers, Umsetzen der logischen Gleitkommaregisternummer in die physikalische Gleitkommaregisternummer unter Verwendung eines aktuellen Gleitkommafensterzeigers mit einem anderen Wert als dem aktuellen Gleitkommafensterzeiger, der im Aktuell-Gleitkommafensterzeigerregister gespeichert ist, wobei der andere Wert aus dem aktuellen Gleitkommafensterzeiger ermittelt wird, der im Aktuell-Gleitkommafensterzeigerregister gespeichert ist, und Speichern der Daten im physikalischen Gleitkommaregister, das durch die umgesetzte physikalische Gleitkommaregisternummer spezifiziert wird; und
  • ein Gleitkommaregisternachspeicherbefehl zum Lesen der Daten aus dem physikalischen Gleitkommaregister, das durch die physikalische Gleitkommaregisternummer spezifiziert wird, die aus der logischen Gleitkommaregisternummer umgesetzt wird durch Verwenden eines Gleitkommafensterzeigers mit einem anderen Wert als der Gleitkommafensterzeiger, der im Gleitkommafensterzeigerregister gespeichert ist, wobei der andere Wert ermittelt wird aus dem Gleitkommafensterzeiger, der im Gleitkommafensterzeigerregister gespeichert ist, und zum Speichern der Daten im Hauptspeicher an einer Hauptspeicheradresse, die im physikalischen Standardregister gespeichert ist, das durch Umsetzen der logischen Standardregisternummer in die physikalische Standardregisternummer unter Verwendung des aktuellen Standardfensterzeigers spezifiziert wird.
  • Ferner sind vorgesehen:
  • ein Datenprozessor, wobei der Datenprozessor ein Vektordatenprozessor ist und ferner versehen ist einer Fensterzeigergültigkeitsanzeigeeinrichtung, die anzeigt, daß der in der Fensterzeigerspeichereinrichtung gespeicherte Fensterzeiger gültig ist;
  • ein Datenprozessor mit mehreren physikalischen Universalregistern in einer größeren Anzahl als die Gleitkommaregister, die von den Befehlen adressiert werden können, und in einer größeren Anzahl als die Universalregister, die von den Befehlen adressiert werden können; eine zweite Fensterzeigerspeichereinrichtung zum Speichern eines zweiten Fensterzeigers, der verwendet wird zum Umsetzen der logischen Registernummer oder einer Universalregisternummer als eine logische Universalregisternummer in einem Befehl; eine zweite Umsetzungsein richtung zum Umsetzen der logischen Registernummer oder einer logischen Universalregisternummer in die physikalische Universalregisternummer unter Verwendung des zweiten Fensterzeigers; und das Fensterzeigergültigkeitsregister zum Speichern eines Wertes, der anzeigt, daß der erste Fensterzeiger gültig ist und der zweite Fensterzeiger gültig ist;
  • ein Datenprozessor, bei dem die Befehle enthalten: einen, zweiten Fensterzeigeränderungsbefehl zum Ändern des zweiten Fensterzeigers; einen Gleitkommaregistervorladebefehl zum Lesen der Vektordaten aus der Hauptspeichereinrichtung an einer Hauptspeicheradresse, die in dem physikalischen Universalregister gespeichert ist, das durch Umsetzen der logischen Universalregisternummer in die physikalische Universalregisternummer unter Verwendung des zweiten Fensterzeigers, und durch Umsetzen der logischen Registernummer in die physikalische Registernummer unter Verwendung des Fensterzeigers mit einem anderen Wert als dem Fensterzeiger, der in der Fensterzeigerspeichereinrichtung gespeichert ist, spezifiziert wird, wobei der andere Wert aus dem Fensterzeiger ermittelt wird, der in der Fensterzeigerspeichereinrichtung gespeichert ist, und Speichern der Vektordaten im physikalischen Register, das durch die umgesetzte physikalische Registernummer spezifiziert wird; und einen Gleitkommaregisternachspeicherbefehl zum Lesen der Vektordaten aus dem physikalischen Register, das durch die physikalische Registernummer spezifiziert wird, die aus der logischen Registernummer unter Verwendung des Fensterzeigers mit einem anderen Wert als den im Fensterzeigerspeicherregister gespeicherten Fensterzeiger umgesetzt worden ist, wobei der andere Wert ermittelt wird aus dem Fensterzeiger, der in der Fensterzeigerspeichereinrichtung gespeichert ist, und zum Speichern der Vektordaten in der Hauptspeichereinrichtung an eine Hauptspeicheradresse, die im physikalischen Universalregister ge speichert ist, das durch Umsetzen der logischen Universalregisternummer in die physikalische Universalregisternummer unter Verwendung des zweiten Fensterzeigers spezifiziert wird;
  • ein Datenprozessor, bei dem die Befehle ferner umfassen: einen Gleitkommaregisterlistenladebefehl zum Lesen der Vektordaten aus der Speichereinrichtung an einer. Hauptspeicheradresse, die im physikalischen Universalregister gespeichert ist, das spezifiziert wird durch Umsetzen der logischen Universalregisternummer unter Verwendung eines zweiten Fensterzeigers mit einem anderen Wert als dem zweiten Fensterzeiger, der in der zweiten Fensterzeigerspeichereinrichtung gespeichert ist, wobei der andere Wert ermittelt wird aus dem zweiten Fensterzeiger, der in der zweiten Fensterzeigerspeichereinrichtung gespeichert ist, und zum Speichern der Vektordaten im physikalischen Register, das spezifiziert wird durch Umsetzen der logischen Registernummer unter Verwendung des Fensterzeigers mit einem anderen Wert als dem in der Fensterzeigerspeichereinrichtung gespeicherten Fensterzeiger, wobei der andere Wert ermittelt wird aus dem in der Fensterzeigerspeichereinrichtung gespeicherten Fensterzeiger; einen Standardregisterlistenladebefehl zum Lesen von Vektordaten aus der Hauptspeichereinrichtung an einer Hauptspeicheradresse, die aus den Informationen ermittelt werden, die im physikalischen Universalregister gespeichert sind, das spezifiziert wird durch Umsetzen der ersten logischen Universalregisternummer unter Verwendung des zweiten Fensterzeigers, und zum Speichern der Vektordaten im physikalischen Universalregister, das spezifiziert wird durch Umsetzen einer zweiten logischen Universalregisternummer unter Verwendung eines zweiten Fensterzeigers mit einem anderen Wert als dem zweiten Fensterzeiger, der in der zweiten Fensterzeigerspeichereinrichtung gespeichert ist, wobei der andere Wert ermittelt wird aus dem zweiten Fensterzeiger, der in der zweiten Fensterzeigerspeichereinrichtung gespeichert ist; und einem Gleitkommaregisterlistenspeicherbefehl zum Lesen von Vektordaten aus dem physikalischen Register, das durch Umsetzen der logischen Registernummer unter Verwendung des Fensterzeigers mit einem anderen Wert als dem in der Fensterzeigerspeichereinrichtung gespeicherten Fensterzeiger spezifiziert wird, wobei der andere Wert ermittelt wird aus dem in der Fensterzeigerspeichereinrichtung gespeicherten Fensterzeiger, und zum Speichern der Vektordaten in der Hauptspeichereinrichtung an einer Hauptspeicheradresse, die im physikalischen Universalregister gespeichert ist, das spezifiziert wird durch Umsetzen der logischen Universalregisternummer unter Verwendung eines zweiten Fensterzeigers mit einem anderen Wert als dem zweiten Fensterzeiger, der in der zweiten Fensterzeigerspeichereinrichtung gespeichert ist, wobei der andere Wert aus dem in der Fensterzeigerspeichereinrichtung gespeicherten zweiten Fensterzeiger ermittelt wird;
  • ein Vektorprozessor, bei dem die Fensterzeigerspeichereinrichtung mit der zweiten Fensterzeigerspeichereinrichtung identisch ist;
  • ein Datenprozessor, der ferner eine Fensterzeigergültigkeitsanzeigeeinrichtung enthält, die anzeigt, daß der in der Fensterzeigerspeichereinrichtung gespeicherte Fensterzeiger gültig ist.
  • Die "Registernummer im Befehl", die oben in der Beschreibung des Gleitkommaregisterlistenladebefehls erwähnt worden ist, bezeichnet eine logische Gleitkommaregisternummer oder eine logische Standardregisternummer. In den später beschriebenen Ausführungsformen stellt diese die logische Gleitkommaregisternummer dar. In der obigen Beschreibung des Standardregisterlistenladebefehls nimmt die Operation, die "eine Speicheradresse aus der im physikalischen Standardregister enthaltenen Information ermittelt" die im physikalischen Standardregister enthaltenen Informationen als die Hauptspeicheradresse in den Ausführungsformen. In der obigen Beschreibung des Gleitkommaregisterlistenspeicherbefehls bezeichnet die "Registernummer im Befehl" eine logische Gleitkommaregisternummer oder eine logische Standardregisternummer. In den später beschriebenen Ausführungsformen stellt sie die logische Gleitkommaregisternummer dar.
  • Alle Befehle, die auf die Gleitkommaregister zugreifen - mit Ausnahme des Gleitkommaregistervorladebefehls, des Gleitkommaregisternachspeicherbefehls, des Gleitkommaregisterlistenladebefehls, des Standardregisterlistenladebefehls und des Gleitkommaregisterlistenspeicherbefehls - setzen die logische Gleitkommaregisternummer in die physikalische Gleitkommaregisternummer um unter Verwendung des aktuellen Gleitkommafensterzeigers, wenn der Wert des Aktuell-Fensterzeigergültigkeitsregisters gleich 1 ist, so daß der Zugriff auf die Gleitkommaregister sich auf die entsprechende physikalische Gleitkommaregisternummer bezieht. Wenn der Wert des Aktuell-Fensterzeigergültigkeitsregisters gleich 0 ist, ist die logische Gleitkommaregisternummer gleich der physikalischen Gleitkommaregisternummer.
  • Alle Befehle, die auf die Standardregister zugreifen - mit Ausnahme des Gleitkommaregistervorladebefehls, des Gleitkommaregisternachspeicherbefehls, des Gleitkommaregisterlistenladebefehls, des Standardregisterlistenladebefehls und des Gleitkommaregisterlistenspeicherbefehls - setzen die logische Standardregisternummer in die physikalische Standardregisternummer um unter Verwendung des aktuellen Standardfensterzeigers, wenn der Wert des Aktuell-Fensterzeigergültigkeitsregisters gleich 1 ist, so daß der Zugriff auf die Standardregister sich auf die entsprechende physikalische Standardregisternummer be zieht. Wenn der Wert des Aktuell-Fensterzeigergültigkeitsregisters gleich 0 ist, ist die logische Standardregisternummer gleich der physikalischen Standardregisternummer.
  • Der Gleitkommaregistervorladebefehl, der Gleitkommaregisternachspeicherbefehl, der Gleitkommaregisterlistenladebefehl, der Standardregisterlistenladebefehl und der Gleitkommaregisterlistenspeicherbefehl führen die Umsetzung von der logischen Gleitkommaregisternummer in die physikalische Gleitkommaregisternummer, von der logischen Gleitkommaregisternummer in die physikalische Standardregisternummer und von der logischen Standardregisternummer in die physikalische Standardregisternummer der obenerwähnten Befehlsspezifikation durch, wenn der Wert des Aktuell-Fensterzeigergültigkeitsregisters gleich 1 ist, und greifen anschließend auf das physikalische Gleitkommaregister oder das physikalische Standardregister zu, das spezifiziert wird durch die Registernummer, die als Ergebnis der Umsetzung erhalten wird. Wenn der Wert des Aktuell-Fensterzeigergültigkeitsregisters gleich 0 ist, ist die logische Gleitkommaregisternummer in der Befehlsspezifikation, die sich auf die Umsetzung von der logischen Gleitkommaregisternummer in die physikalische Gleitkommaregisternummer bezieht, gleich der physikalischen Gleitkommaregisternummer, auf die zugegriffen werden soll; wie bei der Umsetzung von der logischen Gleitkommaregisternummer in die physikalische Standardregisternummer ist die logische Gleitkommaregisternummer gleich der physikalischen Standardregisternummer, auf die zugegriffen werden soll; und bei der Umsetzung von der logischen Standardregisternummer in die physikalische Standardregisternummer ist die logische Standardregisternummer gleich der physikalischen Standardregisternummer, auf die zugegriffen werden soll.
  • Die obenbeschriebenen Hauptspeicherdaten bezeichnen die im Hauptspeicher gespeicherten Daten, einschließlich der Daten, die im Cache-Speicher gespeichert sind. Solche Hauptspeicherdaten enthalten Vektordaten.
  • KURZBESCHREIBUNG DER ZEICHNUNGEN
  • Fig. 1 ist ein erläuterndes Schaubild, das eine Ausführungsform zum Umsetzen einer logischen Gleitkommaregisternummer in eine physikalische Gleitkommaregisternummer gemäß der Erfindung zeigt;
  • Fig. 2 ist ein erläuterndes Schaubild, das eine Ausführungsform zum Umsetzen einer logischen Gleitkommaregisternummer oder einer logischen Standardregisternummer in eine physikalische Standardregisternummer gemäß der Erfindung zeigt;
  • Fig. 3 ist Blockschaltbild, das eine Ausführungsform eines Datenprozessors zeigt, der die in den Fig. 4A bis 4D gezeigten Befehle ausführt;
  • Fig. 4A bis 4D zeigen Beispiele der Formate eines Aktuell-Gleitkommafensterzeigeränderungsbefehls, eines Gleitkommaregistervorladebefehls, eines erweiterten Gleitkommaregistervorladebefehls bzw. eines Gleitkommaregisternachspeicherbefehls;
  • Fig. 5 ist ein Blockschaltbild, das eine Ausführungsform eines Datenprozessors zeigt, der die in den Fig. 6A bis 6H gezeigten Befehle ausführt;
  • Fig. 6A bis 6H zeigen Beispiele der Formate eines Aktuell-Gleitkommafensterzeigeränderungsbefehls, eines Aktuell-Standardfensterzeigeränderungsbefehls, eines Gleitkommaregistervorladebefehls, eines erweiterten Gleitkom maregistervorladebefehls, eines Gleitkommaregisternachspeicherbefehls, eines Gleitkommaregisterlistenladebefehls, eines Standardregisterlistenladebefehls bzw. eines Gleitkommaregisterlistenspeicherbefehls;
  • Fig. 7 zeigt ein Beispiel eines Programms zur Vektorberechnung, das Teil einer wissenschaftlichen und technischen Berechnung ist, die in Universalcomputern ausgeführt wird;
  • Fig. 8 zeigt ein Beispiel eines Programms zur Quellenindextyp-Listenvektorberechnung, die Teil einer wissenschaftlichen und technischen Berechnung ist, die auf Universalcomputern ausgeführt wird;
  • Fig. 9 zeigt ein Beispiel eines Programms für die Zielindextyp-Listenvektorberechnung, die Teil einer wissenschaftlichen und technischen Berechnung ist, die auf Universalcomputern ausgeführt wird;
  • Fig. 10 zeigt ein Beispiel eines Programms für die Partikelschiebertyp-Listenvektörberechnung, die Teil einer wissenschaftlichen und technischen Berechnung ist, die auf Universalcomputern ausgeführt wird;
  • Fig. 11 zeigt ein Programm der Fig. 7, das mittels des Schleifenentrollverfahrens umgeschrieben ist;
  • Fig. 12 zeigt ein Programm der Fig. 8, das mittels des Schleifenentrollverfahrens umgeschrieben ist;
  • Fig. 13 zeigt ein Beispiel eines Programms für eine Vektorberechnung gemäß einer Ausführungsform der vorliegenden Erfindung;
  • Fig. 14A und 14B zeigen ein Beispiel eines Programms für eine Quellenindextyp-Listenvektorberechnung gemäß einer Ausführungsform der vorliegenden Erfindung;
  • Fig. 15A und 15B zeigen ein Beispiel eines Programms für die Zielindextyp-Listenvektorberechnung gemäß einer Ausführungsform der vorliegenden Erfindung; und
  • Fig. 16A und 16B zeigen ein Beispiel eines Programms für die Partikelschiebertyp-Listenvektorberechnung gemäß einer Ausführungsform der vorliegenden Erfindung.
  • BESCHREIBUNG DER BEVORZUGTEN AUSFÜHRUNGSFORMEN
  • Im folgenden werden mit Bezug auf die beigefügten Zeichnungen bevorzugte Ausführungsformen der vorliegenden Erfindung beschrieben.
  • Eine Ausführungsform der Umsetzung von einer logischen Gleitkommaregisternummer in eine physikalische Gleitkommaregisternummer wird im folgenden mit Bezug auf Fig. 1 beschrieben. In dieser Ausführungsform definiert ein Fenster dieser Ausführungsform den Bereich einer physikalischen Gleitkommaregisternummer, die eine logische Gleitkommaregisternummer bezeichnet.
  • In dieser in Fig. 1 gezeigten Ausführungsform gibt es 32 logische Gleitkommaregister, deren Registernummern mit 0 bis 31 spezifiziert sind. 88 physikalische Gleitkommaregister sind den Registernummern 0 bis 87 zugewiesen. Es sind vier Fenster w0 bis w3 vorgesehen, die durch die aktuellen Gleitkommafensterzeiger 0 bis 3 spezifiziert werden.
  • w steht für den aktuellen Gleitkommafensterzeiger und r steht für die logische Gleitkommaregisternummer. Die physikalische Gleitkommaregisternummer wird aus w und r ermittelt und ausgedrückt durch < w,r> . w wird durch Befehle entsprechend Modulo 4 erhöht oder reduziert. Wenn z. B. w = 3 gilt, ist der Wert w + 1 gleich 0.
  • In der in Fig. 1 gezeigten Ausführungsform wird die folgende Umsetzung von der logischen Gleitkommaregisternummer zur physikalischen Gleitkommaregisternummer durchgeführt.
  • 1. Wenn 0 &le; r &le; 7: < w,r> = r unabhängig von w (6)
  • 2. Wenn 8 &le; r &le; 31: < 0,r> = r (7)
  • < 1,r> = r + 20 (8)
  • < 2,r> = r + 40 (9)
  • < 3,r> = r + 60 (8 &le; r &le; 27)
  • r - 20 (28 &le; r &le; 31) (10)
  • Eine weitere Ausführungsform der Umsetzung von einer logischen Registernummer in eine physikalische Registernummer wird mit Bezug auf Fig. 2 im folgenden beschrieben. In dieser Ausführungsform definiert ein Fenster dieser Ausführungsform den Bereich einer physikalischen Standardregisternummer, die eine logische Gleitkommaregisternummer oder eine logische Standardregisternummer bezeichnet.
  • In dieser in Fig. 2 gezeigten Ausführungsform gibt es 32 logische Gleitkommaregister, deren Registernummern mit 0 bis 31 spezifiziert sind. 88 physikalische Standardregister sind den Registernummern 0 bis 87 zugewiesen. Es sind vier Fenster w0 bis w3 vorgesehen, die durch die aktuellen Standardfensterzeiger 0 bis 3 spezifiziert sind.
  • wG steht für den aktuellen Standardfensterzeiger und r für die logische Standardregisternummer oder Gleitkommaregisternummer. Die physikalische Standardregisternummer wird aus wG und r ermittelt und dargestellt durch < wG,r> .
  • wG wird durch Befehle entsprechend Modulo 4 erhöht oder reduziert. Wenn z. B. wG = 3 gilt, ist der Wert wG + 1 gleich 0.
  • In der in Fig. 2 gezeigten Ausführungsform wird die folgende Umsetzung von der logischen Gleitkommaregisternummer oder der logischen Standardregisternummer in die physikalische Standardregisternummer durchgeführt.
  • 1. Wenn 0 &le; r &le; 7: < wG,r> = r unabhängig von wG (11)
  • 2. Wenn 8 &le; r &le; 31: < 0,r> = r (12)
  • < 1,r> = r + 20 (13)
  • < 2,r> = r + 40 (14)
  • < 3,r> = r + 60 (8 &le; r &le; 27)
  • r - 20 (28 &le; r &le; 31) (15)
  • Das obige Umsetzungsverfahren, ausgedrückt durch die Gleichungen (6) bis (15), besitzt folgende Merkmale.
  • 1. Die physikalischen Standardregister und physikalischen Gleitkommaregister 0 bis 7 werden gewöhnlich für alle Fenster verwendet. Diese Register halten als globale Register die Daten, die für alle Berechnungsschleifen gemeinsam sind, die die entsprechenden Fenster benutzen.
  • 2. Wie bei den physikalischen Gleitkommaregistern (Fig. 1) stellen die logischen Gleitkommaregisternummern 28 bis 31 in jedem Fenster die physikalischen Gleitkommaregister dar, die mit den logischen Gleitkommaregisternummern 8 bis 11 in einem Fenster identisch sind, dessen Fensterzeiger um 1 größer ist.
  • Wie für die physikalischen Standardregister (Fig. 2), stellen die logischen Standardregisternummer 28 bis 31 in jedem Fenster dann, wenn eine logische Standardregisternummer in eine physikalische Standardregisternummer umgesetzt wird, die physikalischen Standardregister dar, die mit den logischen Standardregisternummern 8 bis 11 in einem Fenster identisch sind, dessen Fensterzeiger um 1 größer ist. Wenn eine logische Gleitkommaregisternummer in eine physikalische Standardregisternummer umgesetzt wird, stellen die logischen Gleitkommaregisternummern 28 bis 31 in jedem Fenster die physikalischen Standardregister dar, die mit den logischen Gleitkommaregisternummern 8 bis 11 in einem Fenster identisch sind, dessen Fensterzeiger um 1 größer ist.
  • Diese Register werden als Überlappungsregister für die Datenübertragung zwischen den Berechnungsschleifen verwendet, die benachbarte Fenster nutzen.
  • Die Befehls-Mnemonics und Funktionen der neu hinzugefügten Befehle, die oben erwähnt worden sind, sind wie folgt definiert. Ein im folgenden gezeigter erweiterter Gleitkommaregistervorladebefehl, obwohl er vorher nicht erwähnt worden ist, wird als ein Befehl neu hinzugefügt, der eine erweiterte Funktion des Gleitkommaregistervorladebefehls besitzt.
  • 1. Aktuell-Gleitkommafensterzeigeränderungsbefehle:
  • (Befehls-Mnemonic) CFRWPS GRm
  • (Funktion) setzt den Wert des Standardregisters m in den aktuellen Gleitkommafensterzeiger ein.
  • 2. Aktuell-Standardfensterzeigeränderungsbefehl:
  • (Befehls-Mnemonic) CGRWPS GRm
  • (Funktion) setzt den Wert des Standardregisters m in den aktuellen Standardfensterzeiger ein.
  • 3. Gleitkommaregistervoriadebefehl:
  • (Befehls-Mnemonic) FLDPRM a (GRm), FRn
  • (Funktion) liest die 8-Byte-Daten aus der Hauptspeicheradresse, die durch den Wert des Standardregisters m spezifiziert wird und speichert diese im Gleitkommaregister n. Zu diesem Zeitpunkt wird die Umsetzung von einer logischen Gleitkommaregisternummer in eine physikalische Gleitkommaregisternummer bewerkstelligt durch Nehmen von (aktueller Gleitkommafensterzeiger + 1) als einen neuen aktuellen Gleitkommafensterzeiger. Eine logische Standardregisternummer wird in eine physikalische Standardregisternummer umgesetzt unter Verwendung eines aktuellen Standardfensterzeigers.
  • Anschließend wird der Wert des Standardregisters m zu a addiert. Zu diesem Zeitpunkt wird die Umsetzung von der logischen Standardregisternummer in die physikalische Standardregisternummer durchgeführt unter Verwendung des aktuellen Standardfensterzeigers.
  • 4. Erweiterter Gleitkommaregistervorladebefehl:
  • (Befehls-Mnemonic) FLDPRE a (GRm), FRn
  • (Funktion) liest die 8-Byte-Daten aus der Hauptspeicheradresse, die durch den Wert des Standardregisters m spezifiziert wird, und speichert diese im Gleitkommaregister n. Die Umsetzung von einer logischen Gleitkommaregisternummer in eine physikalische Gleitkommaregisternummer wird bewerkstelligt durch Nehmen von (aktueller Gleitkommafensterzeiger + 2) als den neuen aktuellen Gleitkommafensterzeiger. Eine logi sche Standardregisternummer wird in eine physikalische Standardregisternummer umgesetzt unter Verwendung eines aktuellen Standardfensterzeigers.
  • Anschließend wird der Wert des Standardregisters m zu a addiert. Zu diesem Zeitpunkt wird die Umsetzung von der logischen Standardregisternummer in die physikalische Standardregisternummer bewerkstelligt unter Verwendung des aktuellen Standardfensterzeigers.
  • 5. Gleitkommaregisternachspeicherbefehl:
  • (Befehls-Mnemonic) FSTPOM a (GRm), FRn
  • (Funktion) speichert den Wert (8 Bytes) des Gleitkommaregisters n in der Hauptspeicheradresse, die durch den Wert des Standardregisters m spezifiziert wird. Zu diesem Zeitpunkt wird die Umsetzung von der logischen Gleitkommaregisternummer in die physikalische Gleitkommaregisternummer bewerkstelligt durch Nehmen von (aktueller Gleitkommafensterzeiger - 1) als den neuen aktuellen Gleitkommafensterzeiger. Eine logische Standardregisternummer wird in eine physikalische Standardregisternummer umgesetzt unter Verwendung eines aktuellen Standardfensterzeigers.
  • Anschließend wird der Wert des Standardregisters m zu a addiert. Zu diesem Zeitpunkt wird die Umsetzung von der logischen Standardregisternummer in die physikalische Standardregisternummer unter Verwendung des aktuellen Standardfensterzeigers durchgeführt.
  • 6. Gleitkommaregisterlistenladebefehl:
  • (Befehls-Mnemonic) FLDLI, FRn
  • (Funktion) liest die 8-Byte-Daten aus der Hauptspeicheradresse, die durch den Wert des Standardregisters n spezifiziert wird, und speichert diese im Gleitkommaregister n. Zu diesem Zeitpunkt wird für eine logi sche Gleitkommaregisternummer n die Umsetzung von der logischen Gleitkommaregisternummer in die physikalische Gleitkommaregisternummer durchgeführt durch Nehmen von (aktueller Gleitkommafensterzeiger + 1) als den neuen aktuellen Gleitkommafensterzeiger. Für eine logische Gleitkommaregisternummer n wird die Umsetzung von der logischen Gleitkommaregisternummer in die physikalische Standardregisternummer durchgeführt durch Nehmen von (aktueller Standardfensterzeiger + 1) als den neuen aktuellen Standardfensterzeiger.
  • 7. Standardregisterlistenladebefehl:
  • (Befehls-Mnemonic) GLDLIM a (GRm), GRn
  • (Funktion) liest die 8-Byte-Daten aus der Hauptspeicheradresse, die durch den Wert des Standardregisters m spezifiziert wird, und speichert diese im Standardregister n. Zu diesem Zeitpunkt wird für eine logische Standardregisternummer n die Umsetzung von der logischen Standardregisternummer in die physikalische Standardregisternummer durchgeführt durch Nehmen von (aktueller Standardfensterzeiger + 2) als den neuen aktuellen Standardfensterzeiger. Für ein Standardregister m wird die Umsetzung von der logischen Standardregisternummer in die physikalische Standardregisternummer durchgeführt unter Verwendung des aktuellen Standardfensterzeigers.
  • Anschließend wird der Wert des Standardregisters m zu a addiert. Zu diesem Zeitpunkt wird die Umsetzung von der logischen Standardregisternummer in die physikalische Standardregisternummer bewerkstelligt unter Verwendung des aktuellen Standardregisterfensterzeigers.
  • 8. Gleitkommaregisterlistenspeicherbefehl:
  • (Befehls-Mnemonic) FSTLI, FRn
  • (Funktion) speichert den Wert (8 Bytes) des Gleitkommaregisters n in der Hauptspeicheradresse, die durch den Wert des Standardregisters n spezifiziert wird. Zu diesem Zeitpunkt wird für eine logische Gleitkommaregisternummer n die Umsetzung von der logischen Gleitkommaregisternummer in die physikalische Gleitkommaregisternummer durchgeführt durch Nehmen von (aktueller Gleitkommafensterzeiger - 1) als den neuen aktuellen Gleitkommafensterzeiger. Für eine logische Gleitkommaregisternummer n wird die Umsetzung von der logischen Gleitkommaregisternummer in die physikalische Standardregisternummer durchgeführt durch Nehmen von (aktueller Standardfensterzeiger - 1) als den neuen aktuellen Standardfensterzeiger.
  • In allgemeinen Gleitkommabefehlen (diejenigen, die die Gleitkommaregister verwenden, mit Ausnahme der Befehle 3 bis 8), wird der aktuelle Gleitkommafensterzeiger beim Umsetzen der logischen Gleitkommaregisternummer in die physikalische Gleitkommaregisternummer verwendet. Bei allgemeinen Befehlen (diejenigen, die die Standardregister verwenden, mit Ausnahme der Befehle 3 bis 8), wird der aktuelle Standardfensterzeiger bei der Umsetzung der logischen Standardregisternummer in die physikalische Standardregisternummer verwendet.
  • Bei allen obenbeschriebenen Befehlen wird auf die physikalischen Gleitkommaregister oder die physikalischen Standardregister Bezug genommen unter Verwendung der physikalischen Gleitkommaregisternummer oder der physikalischen Standardregisternummer, die aus dem aktuellen Gleitkommafensterzeiger oder dem aktuellen Standardfensterzeiger sowie der logischen Gleitkommaregisternummer oder der logischen Standardregisternummer in einem Befehl erzeugt werden. Ein Befehl für die direkte Spezifizierung der physikalischen Gleitkommaregisternummer oder der physikalischen Standardregisternummer, d. h. ein Befehl mit einem breiteren Registernummernfeld als andere Befehle, kann jedoch ebenfalls verwendet werden.
  • Die Verwendung der obigen neuen Mnemonics und Funktionen der Befehle in der Gleichung (1) führt zu einem in Fig. 13 gezeigten Programm. Dieses Programm wird im folgenden mit Bezug auf Fig. 3 beschrieben.
  • Es wird angenommen, daß vor der Ausführung des Programms der Fig. 13 das Standardregister 4 mit N - 2, das Standardregister 5 mit 1, das Standardregister 6 mit 0 und der aktuelle Gleitkommaregisterfensterzeiger mit 0 vorgestellt werden.
  • Die anderen Einstellungen sind dieselben wie diejenigen, die im Programm der Fig. 7 gezeigt sind.
  • Die Fig. 13 enthält einen ADD-Befehl, der oben nicht beschrieben worden ist. Die Funktion dieses Befehls wird im folgenden beschrieben.
  • ADD GRj, GRm
  • (Funktion) addiert den Wert des Standardregisters j und den Wert des Standardregisters m und speichert das Ergebnis ins Standardregister j.
  • Die Fig. 13 wird im folgenden erläutert. Der FLDM-Befehl Nr. 1 führt die Umsetzung von der logischen Gleitkommaregisternummer in die physikalische Gleitkommaregisternummer aus mittels des aktuellen Gleitkommaregisterfensterzeigers und speichert A(1) im physikalischen Gleitkommaregister < 0,12> . In ähnlicher Weise speichert der FLDM- Befehl Nr. 2 B(1) im physikalischen Gleitkommaregister < 0,13> .
  • Der FLDPRM-Befehl Nr. 3 führt die Umsetzung von der logischen Gleitkommaregisternummer in die physikalische Gleit kommaregisternummer aus unter Verwendung des Wertes von (aktueller Gleitkommaregisterfensterzeiger + 1) und speichert A(2) im physikalischen Gleitkommaregister < 1,12> . In derselben Weise speichert der FLDPRM-Befehl Nr. 4 B(2) im physikalischen Gleitkommaregister < 1,13> .
  • Der FADD-Befehl Nr. 5 führt die Umsetzung von der logischen Gleitkommaregisternummer in die physikalische Gleitkommaregisternummer aus unter Verwendung des aktuellen Gleitkommaregisterfensterzeigers und addiert die Werte der physikalischen Gleitkommaregister < 0,12> und < 0,13> und speichert das Ergebnis im physikalischen Gleitkommaregister < 0,20> . Da die FLDM-Befehle Nr. 1 und Nr. 2 A(1) und B(1) in den physikalischen Gleitkommaregistern < 0,12> bzw. < 0,13> speichern, wird A(1) + B(1) im physikalischen Gleitkommaregister < 0,20> gespeichert. Der ADD-Befehl Nr. 5 und der CFRWPS-Befehl Nr. 6 inkrementieren den aktuellen Gleitkommaregisterfensterzeiger mit +1 auf 1. Der FLDPRM-Befehl Nr. 8 bis zum BCNT-Befehl Nr. 14 bilden eine Schleife und werden N - 2 mal wiederholt.
  • w steht für den Wert des aktuellen Gleitkommaregisterfensterzeigers in der Schleife. Nun sei die Schleife betrachtet, die das (i-1)-te mal ausgeführt wird. Anhand der Werte der Standardregister 1 und 2 wird deutlich, daß die Daten, die vom FADD-Befehl Nr. 10 addiert worden sind, A(i) und B(i) sind, wobei A(i+1) und B(i+1) von den FLDPRM-Befehlen Nr. 8 und 9 in die physikalischen Gleitkommaregister < w+1,12> und < w+1,13> geladen wird. Wie aus dem Wert des Standardregisters 3 deutlich wird, speichert der FSTPOM-Befehl Nr. 11 den Wert des physikalischen Gleitkommaregisters < w-1,20> in die Hauptspeicheradresse C(i-1). Der ADD-Befehl Nr. 12 und der CRFWPS-Befehl Nr. 13 inkrementieren den aktuellen Gleitkommaregister fensterzeiger w um +1, wobei das Programm zum Anfang der Schleife zurückkehrt. Das heißt, in einer Schleife werden die Daten A(i+1), B(i+1), die in der nächsten Schleife addiert werden sollen, in den physikalischen Gleitkommaregistern < w+1,12> und < w+1,13> gespeichert. A(i) und B(i), die in den physikalischen Gleitkommaregistern < w,12> und < w,13> in der vorangehenden Schleife gespeichert worden sind, werden addiert, wobei das Ergebnis im physikalischen Gleitkommaregister < w,20> gespeichert wird. A(i-1) + B(i-1), das im physikalischen Gleitkommaregister < w-1,20> in der vorangehenden Schleife gespeichert worden ist, wird in der Hauptspeicheradresse C(i-1) gespeichert.
  • Die Befehle Nr. 15 bis Nr. 19 nach dem Verlassen der Schleife rufen die Verarbeitung der unverarbeiteten Elemente auf. Der FADD-Befehl Nr. 15 führt A(N) + B(N) aus, während die FSTPOM-Befehle Nr. 16 und Nr. 19 A(N-1) + B(N-1), bzw. A(N) + B(N) im Hauptspeicher speichern.
  • Wie aus der Verarbeitung in der Schleife deutlich wird, spezifizieren die FLDPRM-Befehle Nr. 8 und Nr. 9 die logischen Gleitkommaregister 12, 13, während der nachfolgende FADD-Befehl Nr. 10, obwohl er dieselben logischen Gleitkommaregister 12, 13 verwendet, auf andere physikalische Gleitkommaregister zugreift. Der FADD-Befehl Nr. 10 speichert das Additionsergebnis im logischen Gleitkommaregister 20, wobei der nächste FSTPOM-Befehl, obwohl er dasselbe logische Gleitkommaregister 20 verwendet, auf andere physikalische Gleitkommaregister zugreift. Somit tritt das Phänomen nicht auf, das mit dem Programm der Fig. 7 aufgetreten ist - wie z. B. das Anhalten der Ausführung der nachfolgenden Befehle, bis die Daten ausgelesen sind oder die vorangehende Berechnung abgeschlossen ist. Mit anderen Worten, der Datenle sevorgang und die Berechnung müssen nur abgeschlossen sein, bevor die nächste Schleife eingeleitet wird, was eine Ausführung des Programms mit höherer Geschwindigkeit ermöglicht. Ferner werden nur drei logische Gleitkommaregister vom Programm spezifiziert, im Gegensatz zu vielen Gleitkommaregistern, die vom Programm der Fig. 11 benötigt werden.
  • Im Vergleich zu den Programmen der Fig. 7 und 11 besitzt das Programm der Fig. 13 einen größeren Überhang, da es eine zusätzliche Verarbeitung zur Aktualisierung des aktuellen Gleitkommaregisterfensterzeigers besitzt, die in den Programmen 7 und 11 nicht enthalten ist. Während z. B. die Programmschleife der Fig. 7 aus fünf Befehlen gebildet wird, umfaßt die Programmschleife der Fig. 13 sieben Befehle. Es ist jedoch zu beachten, daß dieser durch das Anhalten der Ausführen der nachfolgenden Befehle, bis die Daten ausgelesen sind oder die Berechnung abgeschlossen ist, wie es im Programm der Fig. 7 festgestellt wird, sehr viel größer ist. Das Schleifenentrollverfahren des Programms der Fig. 11 kann nicht verwirklicht werden, wenn die Register, die vom Programm spezifiziert werden können, alle aufgebraucht sind.
  • In der Vektorberechnung sowie bei der wissenschaftlichen und technischen Berechnung, die hauptsächlich die Ausführung der Schleife der Befehlsketten wiederholt, verändert diese Erfindung den aktuellen Gleitkommaregisterfensterzeiger für jede Schleife, d. h. sie ändert das zu verwendende Fenster. Das i-te Element wird verarbeitet durch Laden des i-ten Elements des Operandenvektors durch den Gleitkommaregistervorladebefehl in der (i-1)-ten Schleife; durch Ausführen der Berechnung in der i-ten Schleife; und durch Speichern des Ergebnisses der Berechnung im i- ten Element des Ergebnisspeichervektors mittels des Gleitkommaregisternachspeicherbefehls, der in der (i+1)- ten Schleife ausgeführt wird. Diese Verarbeitung erhöht den Abstand in der Befehlskette zwischen den Lade-, Berechnungs- und Speicherbefehlen für einen Datensatz, was die Leistungsbeeinträchtigung aufgrund der verlängerten Datenlesezeit und der Berechnungsausführungszeit beseitigt und somit die Operationsgeschwindigkeit erhöht.
  • Die Wirkung der Erhöhung der Operationsgeschwindigkeit wird im folgenden quantitativ beschrieben.
  • Es sei angenommen, daß die für das Lesen der Daten während der Ladeoperation benötigte Zeitspanne vier Zyklen beträgt und die für eine Addition erforderliche Zeitspanne vier Zyklen beträgt. Wie oben beschrieben worden ist, kann im Programm der Fig. 7 der FADD-Befehl Nr. 3 nicht ausgeführt werden, bis die von den FLDM-Befehlen Nr. 1 und Nr. 2 gelesenen Daten in FR12 und FR13 gespeichert worden sind. Der FSTM-Befehl Nr. 4 kann nicht ausgeführt werden, bis das Additionsergebnis vom FADD- Befehl Nr. 3 in FR20 gespeichert worden ist. Das heißt, eine Schleife benötigt 11 Zyklen = 5 + 3 + 3 = (die Anzahl der Befehle) + (Datenlesewartezykluszahl - 1) + (Additionszykluszahl - 1). Die "-1" in den zweiten und dritten Termen resultiert daraus, daß ein Zyklus in der Datenlesewartezyklusanzahl und der Additionszyklusanzahl im ersten Term enthalten ist. Die Verarbeitungsgeschwindigkeit beträgt daher 1 Element / 11 Zyklen = 0,09 Elemente.
  • Wie vorher beschrieben worden ist, erscheint in dem in Fig. 11 gezeigten Programm die Zeitspanne, die für das Lesen der Daten und die Addition während einer Ladeoperation erforderlich ist, nicht, so daß eine Schleife eine Anzahl von Zyklen benötigt, die der Anzahl der Befehle entspricht. Die Verarbeitungsgeschwindigkeit beträgt somit 4 Elemente / 17 Zyklen = 0,24 Elemente/Zyklus.
  • Gemäß der vorliegenden Erfindung, wie in Fig. 13 gezeigt, erscheint die Zeitspanne, die für den Datenlesevorgang und die Addition während der Ladeoperation erforderlich ist, nicht, so daß eine Schleife eine Anzahl von Zyklen benötigt, die der Anzahl der Befehle entspricht. In diesem Fall erfordert eine Schleife sieben Zyklen und verarbeitet ein Element. Somit beträgt die Verarbeitungsgeschwindigkeit 1 Element / 7 Zyklen = 0,14 Elemente/Zyklus.
  • Aus dem Vergleich der Fig. 7, 11 und 13 wird deutlich, daß die Verarbeitungsgeschwindigkeit in der Reihenfolge von Fig. 11, Fig. 13 und Fig. 7 schneller wird.
  • Das in Fig. 11 gezeigte Programm verwendet eine Anzahl von Registern, die von den Befehlen zugewiesen wird, wodurch das schwerwiegende Problem entsteht, daß die nutzbaren Anwendungsprogramme beschränkt sind. Das heißt, die Anzahl der Gleitkommaregister, die von den Befehlen in dem in Fig. 7 gezeigten Programm zugewiesen werden können, beträgt 3, die Anzahl der Gleitkommaregister, die von den Befehlen in dem in Fig. 11 gezeigten Programm zugewiesen werden können, beträgt 12, und die Anzahl der Gleitkommaregister, die von den Befehlen in dem in Fig. 13 gezeigten Programm zugewiesen werden können, beträgt 3.
  • Die in den Fig. 7 und 13 gezeigten Programme können von einem Datenprozessor mit 3 Bits eines Gleitkommaregisterspezifikationsfeldes ausgeführt werden, jedoch kann das in Fig. 11 gezeigte Programm nicht ausgeführt werden.
  • Das Datenverarbeitungsverfahren bietet daher ein Verfahren des Erhöhens der Operationsgeschwindigkeit, indem nicht die Zeitspanne verwendet wird, die für den Datenle sevorgang und die Berechnung benötigt werden, ohne die Architektur des Datenprozessors zu ändern.
  • Als nächstes wird mit Bezug auf die beigefügten Zeichnungen eine Ausführungsform eines Datenprozessors der vorliegenden Erfindung zur Ausführung des obenbeschriebenen Datenverarbeitungsverfahrens beschrieben.
  • Die Fig. 3 zeigt den Datenprozessor dieser Ausführungsform. Der Datenprozessor enthält: eine Befehlverarbeitungseinheit 10 zum Ausgeben und Ausführen von Befehlen; einen Hauptspeicher 30 zum Speichern von Befehlen und Daten, die von der Befehlverarbeitungseinheit ausgeführt werden; und eine Speichersteuereinheit 20 zum Steuern der Datenübertragung zwischen der Befehlverarbeitungseinheit und dem Hauptspeicher.
  • Die Befehlverarbeitungseinheit 10 enthält: ein Befehlsregister 101 zum Halten des auszuführenden Befehls; eine Befehlssteuervorrichtung 102 zum Lesen der Inhalte des Befehlsregisters 101 und zum Steuern der Ausführung der Befehle; eine Standardregistergruppe 103 zum Halten der Daten, die für die Standardberechnung und die Adreßberechnung erforderlich sind; einen Standardrechner 104 zum Ausführen der Standardberechnung, die vom Befehl spezifiziert wird; eine physikalische Gleitkommaregistergruppe 105 zum Halten der Daten, die für die Gleitkommabrechnung erforderlich sind; einen Gleitkommarechner 106 zum Ausführen der Gleitkommabrechnung, die vom Befehl spezifiziert wird; einen Adressenaddierer 107 zum Berechnen der Hauptspeicheradresse, die die Daten enthält, auf die zugegriffen werden soll; einen Cache-Speicher 108 zum Halten der Hauptspeicherdaten, die von der Speichersteuereinheit 20 ausgelesen worden sind; eine Hauptspeicherzugriffsteuervorrichtung 109 zum Ausführen der Steuerung, wie z. B. das Lesen der Hauptspeicherdaten von der Spei chersteuereinheit 20 entsprechend dem Ergebnis der Suche im Cache-Speicher 108; ein Aktuell-Gleitkommafensterzeigerregister 110 zum Speichern eines aktuellen Gleitkommaregisterfensterzeigers; ein Aktuell-Gleitkommafensterzeigergültigkeitsregister 111, das anzeigt, daß der aktuelle Gleitkommaregisterfensterzeiger gültig ist; und eine Umsetzungslogik 112 zum Umsetzen der vom Befehl spezifizierten logischen Gleitkommaregisternummer in eine physikalische Gleitkommaregisternummer gemäß den Gleichungen (6) bis (10).
  • Der Datenprozessor, wie in den Fig. 4A-4D gezeigt, ist mit vier neuen Befehlen versehen. Diese sind in Fig. 4A gezeigt als Aktuell-Gleitkommafensterzeigeränderungsbefehl, in 4B als Gleitkommaregistervorladebefehl, in 4C als erweiterter Gleitkommaregistervorladebefehl und in 4D als Gleitkommaregisternachspeicherbefehl. Die Befehls- Mnemonics und die Funktionen der obenerwähnten Befehle wurden bereits beschrieben.
  • Die Fig. 4A zeigt den Befehlscode des Aktuell-Gleitkommafensterregisteränderungsbefehls. Die Standardregisternummer spezifiziert das Standardregister, das einen Wert des aktuellen Gleitkommaregisterfensterzeigers enthält, der zu setzen ist. Der Gleitkommaregistervorladebefehl ist ein Befehl zum Speichern der Hauptspeicherdaten in einem Gleitkommaregister, das zum Fenster von (aktueller Gleitkommaregisterfensterzeiger + 1) gehört.
  • Der Befehlscode in Fig. 4 stellt den Gleitkommaregistervorladebefehl dar. Die Gleitkommaregisternummer stellt eine logische Gleitkommaregisternummer (r) dar, an der die Hauptspeicherdaten gespeichert sind. Die entsprechende physikalische Gleitkommaregisternummer ist < w+1,r> , wobei w ein aktueller Gleitkommaregisterfensterzeiger ist. Der Wert des Standardregisters ist die Haupt speicheradresse, aus der die Daten ausgelesen werden sollen. Nachdem die Daten ausgelesen worden sind, ist der zum Standardregister zu addierende Wert ein Inkrementwert. Der erweiterte Gleitkommaregistervorladebefehl ist ein Befehl zum Speichern der Hauptspeicherdaten in einem Gleitkommaregister, das zu einem Fenster von (aktueller Gleitkommaregisterfensterzeiger + 2) gehört.
  • Der Befehlscode in Fig. 4C stellt den erweiterten Gleitkommaregistervorladebefehl dar. Die Gleitkommaregisternummer stellt eine logische Gleitkommaregisternummer (r) dar, an der die Hauptspeicherdaten gespeichert sind. Die entsprechende physikalische Gleitkommaregisternummer ist < w+2,r> , wobei w ein aktueller Gleitkommaregisterfensterzeiger ist. Der Wert des Standardregisters ist die Hauptspeicheradresse, aus der die Daten ausgelesen werden sollen. Nachdem die Daten ausgelesen worden sind, ist der zum Standardregister zu addierende Wert ein Inkrementwert.
  • Die Funktion des erweiterten Gleitkommaregistervorladebefehls ist einfach eine Erweiterung des Gleitkommaregistervorladebefehls und ist in Bezug auf die obige Beschreibung selbsterläuternd. Der erweiterte Gleitkommaregistervorladebefehl wird im folgenden Fall verwendet. In der in Fig. 13 gezeigten Ausführungsform liegt die Datenlesezeitspanne innerhalb von acht Zyklen. Die vom FLDPRM- Befehl Nr. 9 während der (i-1)-ten Schleife gelesenen Daten werden im physikalischen Gleitkommaregister < w+1,13> gespeichert, das während der i-ten Schleife vom FADD-Befehl Nr. 13 gelesen wird, innerhalb von acht Zyklen nach der Ausführung des Befehls Nr. 9. Somit muß die Ausführung des Befehls Nr. 10 nicht warten, wobei die Befehle in der Schleife vom Befehl Nr. 8 bis zum Befehl Nr. 14 mit jeweils einem Befehl pro Zyklus ausgeführt werden können.
  • Zum Beispiel sei angenommen, daß die Datenlesezeitspanne lang wird und aufgrund eines langsamen Speicherelements die acht Zyklen überschreitet. In einem solchen Fall werden die vom FLDPRM-Befehl während der (i-1)-ten Schleife gelesenen Daten im physikalischen Gleitkommaregister < w+1,13> gespeichert, das vom FADD-Befehl Nr. 10 während der i-ten Schleife gelesen wird, mehr als neun Zyklen nach der Ausführung des Befehls Nr. 9. Daher muß die Ausführung des Befehls Nr. 10 warten. Das heißt, die Befehle innerhalb der Schleife vom Befehl Nr. 8 bis zum Befehl Nr. 14 kann nicht mit einer Rate von einem Befehl pro Zyklus ausgeführt werden.
  • In einem solchen Fall wird als Alternative des Gleitkommaregistervorladebefehls der erweiterte Gleitkommaregistervorladebefehl verwendet. Das Programm wird so verändert, daß der Zeitpunkt, zu dem die vom erweiterten Gleitkommaregistervorladebefehl gelesenen Daten im Gleitkommaregister gespeichert werden, um zwei Schleifen verzögert wird. Das heißt, obwohl bei dem in Fig. 13 gezeigten Programm die während der (i-1)-ten Schleife gelesenen Daten während der i-ten Schleife im Gleitkommaregister gespeichert werden, wird es möglich, durch Verwenden des erweiterten Gleitkommaregistervorladebefehls die während der (i-1)-ten Schleife gelesenen Daten während der (i+1)-ten Schleife im Gleitkommaregister zu speichern. Durch entsprechendes Ändern des Programms kann der Befehl innerhalb der Schleife mit einer Rate von einem Befehl pro Zyklus ausgeführt werden, selbst im Fall einer längeren Datenlesezeitspanne.
  • Der Befehlscode in Figur D stellt den Gleitkommaregisternachspeicherbefehl dar. Die Gleitkommaregisternummer stellt eine logische Gleitkommaregisternummer (r) dar, aus der die Daten gelesen werden. Die entsprechende physikalische Gleitkommaregisternummer ist < w-1,r> , wobei w ein aktueller Gleitkommaregisterfensterzeiger ist. Der Wert des Standardregisters ist die Hauptspeicheradresse, an der die Daten gespeichert werden sollen. Nachdem die Daten ausgelesen worden sind, ist der zum Standardregister zu addierende Wert ein Inkrementwert.
  • Im folgenden wird mit Bezug auf Fig. 3 die Operation dieser Befehle erläutert. Zuerst wird der Aktuell-Gleitkommaregisterfensterzeigeränderungsbefehl erläutert. Wenn ein Befehl in das Befehlsregister 101 übernommen wird, wird der Befehl von der Befehlssteuervorrichtung 102 decodiert. Wenn der Befehl als ein Aktuell-Gleitkommaregisterfensterzeigeränderungsbefehl identifiziert wird, wird das vom Befehl spezifizierte Standardregister aus der Standardregistergruppe 103 gelesen und der Wert dieses Registers wird in das aktuelle Gleitkommafensterzeigerregister 110 eingesetzt.
  • Als nächstes wird der Gleitkommaregistervorladebefehl erläutert. Wenn der Befehl in das Befehlsregister 101 übernommen wird, wird der Befehl von der Befehlssteuervorrichtung 102 decodiert. Wenn der Befehl als ein Gleitkommaregistervorladebefehl identifiziert ist, nimmt der Adressenaddierer 107 den Inhalt des vom Befehl spezifizierten Standardregisters auf und gibt ihn als Hauptspeicheradresse aus, aus der Daten zu lesen sind. Die Hauptspeicherzugriffssteuervorrichtung 109 durchsucht den Cache-Speicher 108 nach der Hauptspeicheradresse. Wenn sich die gewünschten Daten im Cache-Speicher befinden, überträgt die Steuervorrichtung 109 diese aus dem Cache- Speicher, während dann, wenn die Daten nicht gefunden werden, sie die Daten aus dem Hauptspeicher 30 über die Speichersteuereinheit 20 überträgt. Die übertragenen Daten werden im Gleitkommaregister 105 gespeichert. Die physikalische Gleitkommaregisternummer, in der die Daten gespeichert sind, wird von der Umsetzungsschaltung 112 wie folgt ermittelt. Die vom Befehl spezifizierte Gleitkommaregisternummer stellt eine logische Gleitkommaregisternummer (r) dar, wobei die physikalische Gleitkommaregisternummer gleich < w+1,r> ist, wobei w der Wert des aktuellen Gleitkommafensterzeigerregisters 110 ist. Nachdem die Datenübertragung begonnen hat, addiert der Standardrechner 104 einen Inkrementwert zum Wert des Standardregisters.
  • Wenn die Daten nicht im Cache-Speicher 108 vorhanden sind, kann angenommen werden, daß die vom Hauptspeicher 30 übertragenen Daten in das Gleitkommaregister 105 und in den Cache-Speicher 108 geschrieben werden. Die Schreiboperation in den Cache-Speicher 108 erfordert jedoch im allgemeinen zwei oder mehr Zyklen. Somit besteht die Gefahr, daß die Ausführung des nächsten Befehls angehalten wird, wodurch die Verarbeitungsgeschwindigkeit von einem Befehl pro Zyklus nicht sichergestellt werden kann. Wenn in dieser Ausführungsform die Daten nicht im Cache-Speicher vorliegen, werden im Hinblick hierauf die aus dem Hauptspeicher 30 übertragenen Daten nicht in den Cache-Speicher 108 geschrieben, sondern nur in das Gleitkommaregister 105.
  • Als nächstes wird der erweiterte Gleitkommaregistervorladebefehl erläutert. Wenn der Befehl in das Befehlsregister 101 übernommen wird, wird der Befehl von der Befehlssteuervorrichtung 102 decodiert. Wenn der Befehl als ein erweiterter Gleitkommaregistervorladebefehl identifiziert wird, nimmt der Adressenaddierer 107 den Inhalt des vom Befehl spezifizierten Standardregisters auf und gibt ihn als Hauptspeicheradresse aus, aus der Daten gelesen werden sollen. Die Hauptspeicherzugriffsteuervorrichtung 109 durchsucht den Cache-Speicher 108 nach der Hauptspeicheradresse. Wenn sich die gewünschten Daten im Cache- Speicher befinden, überträgt die Steuervorrichtung 109 diese aus dem Cache-Speicher, während dann, wenn die Daten nicht gefunden werden, die Daten über die Speichersteuereinheit 20 aus dem Hauptspeicher 30 übertragen werden. Die übertragenen Daten werden im Gleitkommaregister 105 gespeichert. Die physikalische Gleitkommaregisternummer, in der die Daten gespeichert werden, wird von der Umsetzungsschaltung 112 wie folgt ermittelt. Die vom Befehl spezifizierte Gleitkommaregisternummer stellt eine logische Gleitkommaregisternummer (r) dar, wobei die physikalische Gleitkommaregisternummer gleich < w+2,r> ist, wobei w der Wert des aktuellen Gleitkommafensterzeigerregisters 110 ist. Nachdem die Datenübertragung begonnen hat, addiert der Standardrechner 104 einen Inkrementwert zum Wert des Standardregisters.
  • Als nächstes wird der Gleitkommaregisternachspeicherbefehl beschrieben. Wenn der Befehl in das Befehlsregister 101 übernommen wird, wird der Befehl von der Befehlssteuervorrichtung 102 decodiert. Wenn der Befehl als ein Gleitkommaregisternachspeicherbefehl identifiziert wird, nimmt der Adressenaddierer 107 den Inhalt des vom Befehl spezifizierten Standardregisters auf und gibt ihn als eine Hauptspeicheradresse aus, an der die Daten zu speichern sind. Die Daten werden aus dem Gleitkommaregister 105 gelesen. Die physikalische Gleitkommaregisternummer, aus der die Daten ausgelesen werden, wird von der Umsetzungsschaltung 112 wie folgt ermittelt. Die vom Befehl spezifizierte Gleitkommaregisternummer stellt eine logische Gleitkommaregisternummer (r) dar, während die physikali sche Gleitkommaregisternummer gleich < w-1,r> ist, wobei w der Wert des aktuellen Gleitkommafensterzeigerregisters 110 ist. Die Hauptspeicherzugriffsteuervorrichtung 109 durchsucht den Cache-Speicher 108 nach der Hauptspeicheradresse. Wenn der Cache-Speicher ein Kopie der Daten enthält, die in der Hauptspeicheradresse ge speichert sind, ersetzt die Steuervorrichtung 109 diese Daten durch die gelesenen Daten. Wenn die Daten nicht im Cache-Speicher gefunden werden, wird der Cache-Speicher nicht verändert. Die Hauptspeicherzugriffsteuervorrichtung 109 speichert die gelesenen Daten über die Speichersteuereinheit 20 in die Hauptspeicheradresse. Nachdem die Datenübertragung begonnen hat, addiert der Standardrechner 104 einen Inkrementwert zum Wert des Standardregisters.
  • Wenn eine Kopie der im Hauptspeicher 30 gespeicherten Daten nicht im Cache-Speicher 108 vorhanden ist, kann angenommen werden, daß die aus dem Gleitkommaregister 105 gelesenen Daten an der entsprechenden Adresse im Hauptspeicher 30 und auch im Cache-Speicher 108 gespeichert werden. Jedoch erfordert die Schreiboperation in den Cache-Speicher 108 im allgemeinen zwei oder mehr Zyklen. Somit besteht die Gefahr, daß die Ausführung des nächsten Befehls angehalten wird, so daß die Verarbeitungsgeschwindigkeit von einem Befehl pro Zyklus nicht sichergestellt werden kann. Im Hinblick hierauf werden in dieser Ausführungsform dann, wenn eine Kopie der im Hauptspeicher 30 gespeicherten Daten nicht im Cache-Speicher vorhanden ist, die aus dem Gleitkommaregister 105 gelesenen Daten an der entsprechenden Adresse im Hauptspeicher 30 gespeichert, jedoch nicht in den Cache-Speicher 108 geschrieben.
  • Bei den allgemeinen Gleitkommabefehlen (Berechnung, Laden und Speichern) wird die im Befehl angegebene logische Gleitkommaregisternummer r von der Umsetzungslogik 112 in eine physikalische Gleitkommaregisternummer umgesetzt, die gegeben ist durch < w,r> , wobei w der Wert des aktuellen Gleitkommafensterzeigerregisters 110 ist. Anschließend wird auf das Gleitkommaregister zugegriffen, das von der physikalischen Gleitkommaregisternummer dargestellt wird.
  • Wenn der Wert des Aktuell-Gleitkommafensterzeigergültigkeitsregisters 111 gleich "1" ist, ist der aktuelle Gleitkommaregisterfensterzeiger gültig. Das heißt, die Umsetzungsschaltung 112 setzt die logische Registernummer in die physikalische Registernummer um. Wenn das Register 111 den Wert "0" enthält, wird die Umsetzung der logischen Registernummer in die physikalische Registernummer nicht durchgeführt, wodurch die vom Befehl spezifizierte logische Gleitkommaregisternummer zu einer physikalischen Gleitkommaregisternummer wird. Somit wird auf das physikalische Gleitkommaregister zugegriffen, das durch diese hergeleitete physikalische Gleitkommaregisternummer spezifiziert wird. Das Aktuell-Gleitkommafensterzeigergültigkeitsregister 111 kann ein Leerlaufbit eines bestehenden Registers zugewiesen erhalten, das Steuerungsinformationen des Datenverarbeitungssystems enthält, wobei das Gültigkeitsbit unter Verwendung eines bestehenden Befehls gesetzt werden kann, um einen Wert im Register zu speichern.
  • In der Beschreibung der obigen Ausführungsform wird ein aktuelles Gleitkommaregisterfensterzeigerregister 111 verwendet. Es können jedoch zwei solche aktuellen Gleitkommaregisterfensterzeigerregister verwendet werden, wobei eines (als Register A bezeichnet) nur vom Gleitkommaregistervorladebefehl verwendet wird und das andere (als Register B bezeichnet) nur von anderen Befehlen verwendet wird, mit Ausnahme des Gleitkommaregistervorladebefehls und des Aktuell-Gleitkommafensterzeigeränderungsbefehls, die beide gleichzeitig die Aktuell-Gleitkommaregisterfensterzeigerregister ändern. Eine solche Anordnung ist effektiv für eine längere Speicherlesezeitspanne, wie im folgenden beschrieben wird.
  • Für den Gleitkommaregistervorladebefehl kann die Verarbeitungsrate von einem Befehl pro Zyklus unter der Bedingung sichergestellt werden, daß die Speicherlesezeit erlaubt, die vom i-ten Schleifenbefehl gelesenen Daten im Gleitkommaregister zu speichern, bevor der Berechnungsbefehl in der (i+1)-ten Schleife beginnt, wie vorher beschrieben worden ist.
  • Für den erweiterten Gleitkommaregistervorladebefehl kann die Verarbeitungsrate von einem Befehl pro Zyklus unter der Bedingung sichergestellt werden, daß die Speicherlesezeit erlaubt, daß die vom i-ten Schleifenbefehl gelesenen Daten im Gleitkommaregister gespeichert werden, bevor der Berechnungsbefehl in der (i+2)-ten Schleife beginnt, wie vorher beschrieben worden ist.
  • Wenn die Speicherlesezeit länger ist als die Zeitspanne, die erforderlich ist, um die vom i-ten Schleifenbefehl gelesenen Daten im Gleitkommaregister zu speichern, bevor der Berechnungsbefehl in der (i+2)-ten Schleife beginnt, ist es nicht möglich, die Verarbeitungsrate von einem Befehl pro Zyklus sicherzustellen. Es ist möglich, einen Befehl zu verwenden, der gegenüber dem obenbeschriebenen erweiterten Gleitkommaregistervorladebefehl stärker erweitert ist, jedoch ist eine Erhöhung der Anzahl der Befehle nicht erwünscht.
  • Wenn sich in diesem Zusammenhang der Fensterzeiger, der vom Gleitkommaregistervorladebefehl verwendet werden soll, von anderen Fensterzeigern unterscheidet, die von anderen Befehlen verwendet werden sollen, ist es möglich, eine Änderung der Speicherlesezeit zu berücksichtigen, ohne den erweiterten Gleitkommaregistervorladebefehl zu verwenden.
  • Wenn z. B. die Speicherlesezeit innerhalb einer solchen Zeitperiode liegt, die ermöglicht, daß die während der i- ten Schleife gelesenen Daten im Gleitkommaregister gespeichert werden bevor der Berechnungsbefehl in der (i+1)-ten Schleife beginnt, ist es möglich, die Verarbeitungsrate von einem Befehl pro Zyklus sicherzustellen durch Ausgeben des Gleitkommaregistervorladebefehls und Ladern der Daten in das Register des Fensters (b+1), während das Register B auf einen Wert w gesetzt wird und das Register A während der i-ten Schleife auf den Wert w gesetzt wird. Wenn die Speicherlesezeit nicht kürzer ist als eine solche Zeitspanne, die erlaubt, daß die während der i-ten Schleife gelesenen Daten im Gleitkommaregister gespeichert werden können bevor der Berechnungsbefehl in der (i+2)-ten Schleife beginnt, jedoch innerhalb einer solchen Zeitperiode liegt, die erlaubt, daß die während der i-ten Schleife gelesenen Daten im Gleitkommaregister gespeichert werden können bevor der Berechnungsbefehl in der (i+3)-ten Schleife beginnt, ist es möglich, die Verarbeitungsrate von einem Befehl pro Zyklus sicherzustellen, indem der Gleitkommaregistervorladebefehl ausgegeben wird und die Daten im Register des Fensters (w+3) geladen werden, während das Register B auf einen Wert (w) und das Register A auf einen Wert (w+2) während der i-ten Schleife gesetzt werden.
  • Am Ende einer Schleife addiert der Aktuell-Gleitkommafensterzeigeränderungsbefehl 1 gleichzeitig zu den zwei aktuellen Gleitkommaregisterfensterzeigerregistern, was die konkurrierende Verarbeitung in der nächsten Schleife erlaubt.
  • Im Vorangehenden wurde der Weg beschrieben, wie die Befehle arbeiten - d. h. der Aktuell-Gleitkommafensterzeigeränderungsbefehl, der Gleitkommaregistervorladebefehl, der erweiterte Gleitkommaregistervorladebefehl, der Gleitkommaregisternachspeicherbefehl und die allgemeinen Gleitkommabefehle unter der Steuerung des Gleitkommafensterzeigers.
  • Mit der obigen Ausführungsform kann das in Fig. 13 gezeigte Programm implementiert werden, das die Geschwindigkeit der Vektorberechnung erhöht. Dies wurde beschrieben.
  • Gemäß dem Verfahren dieser Erfindung wird der aktuelle Gleitkommafensterzeiger geändert, um eine Gleitkommaregisternummer in einem Befehl in eine andere physikalische Gleitkommaregisternummer umzusetzen, wodurch es möglich wird, auf eine größere Anzahl von physikalischen Registern zuzugreifen, als von den Befehlen adressiert werden kann, ohne die Architektur des Datenprozessors zu ändern. Dieses Verfahren verwirklicht ein Programm, wie in Fig. 13 gezeigt, das die Leistungsbeeinträchtigung verhindert, die ansonsten durch das Anhalten der Befehlsausführung aufgrund eines verlängerten Datenlesevorgangs oder von Registerkonflikten hervorgerufen werden kann. Dies stellt wiederum eine schnellere Ausführung der Programme sicher.
  • Wie aus dem Programm der Fig. 13 deutlich wird, führt die Vektorberechnung, wie sie in wissenschaftlichen und technischen Berechnungen verwendet wird, die hauptsächlich die Ausführung der Schleife von Befehlsketten wiederholt, die Verarbeitung wie folgt durch, indem sie unterschiedliche Fenster unterschiedlichen Schleifen zuweist. Das i-te Element wird verarbeitet durch Laden des i-ten Elements des Operandenvektors mittels des Gleitkommavorladebefehls in der (i-1)-ten Schleife; durch Ausführen der Berechnung in der i-ten Schleife; und durch Speichern des Ergebnisses der Berechnung in das i-te Element des Ergebnisspeichervektors mittels des Gleitkom manachspeicherbefehls, der in der (i+1)-ten Schleife ausgeführt wird. Diese Verarbeitung erhöht den Abstand in der Befehlskette zwischen den Lade-, Berechnungs- und Speicherbefehlen für einen Datensatz, wodurch die Leistungsbeeinträchtigung aufgrund der verlängerten Datenlesezeit und der Berechnungsausführungszeit beseitigt wird und die Operationsgeschwindigkeit erhöht wird.
  • Als nächstes wird mit Bezug auf die beigefügten Zeichnungen eine Ausführungsform eines Datenprozessors der vorliegenden Erfindung zur Ausführung des obenbeschriebenen Datenverarbeitungsverfahrens beschrieben.
  • Als nächstes wird mit Bezug auf die beigefügten Zeichnungen eine Ausführungsform eines Datenverarbeitungsverfahrens und eines Datenprozessors beschrieben, die die vorliegende Erfindung auf eine Listenvektorberechnung anwenden.
  • Ein in den Fig. 14A und 14B gezeigtes Programm wird erhalten, wenn die vorliegende Erfindung auf die Gleichung (2) der Quellenindextyp-Berechnung angewendet wird. Es wird angenommen, daß vor der Ausführung des Programms der Fig. 14A und 14B die Vektoren L, A und B in zusammenhängenden Bereichen des Hauptspeichers beginnend bei den Adressen ad1, ad2 und ad3 gespeichert werden. Ferner sei angenommen, daß das Standardregister 1 mit ad1, das Standardregister 2 mit ad2, das Standardregister 4 mit N-3, das Standardregister 5 mit 1, das Standardregister 6 mit 0, der aktuelle Gleitkommafensterzeiger mit 0, der aktuelle Standardfensterzeiger mit 0 und das Aktuell- Fensterzeigergültigkeitsregister mit 1 voreingestellt sind. Der Vektor L ist eine Variation des Listenvektors Li, wie in Gleichung (5) gezeigt ist.
  • Die Fig. 14A und 14B enthalten den SUB-Befehl, der oben nicht beschrieben worden ist. Diese Funktion wird im folgenden erläutert.
  • SUB GRj, GRm
  • (Funktion) subtrahiert den Wert des Standardregisters m vom Wert des Standardregisters j und speichert das Ergebnis im Standardregister j.
  • Im folgenden werden die Fig. 14A und 14B erläutert. Der GLDM-Befehl Nr. 1 setzt die logische Standardregisternummer in die physikalische Standardregisternummer um unter Verwendung des aktuellen Standardfensterzeigers. Somit wird L(1), d. h. "Adresse von B(Li(1))", im physikalischen Standardregister < 0,20> gespeichert. Der FLDM- Befehl Nr. 2 setzt die logische Standardregisternummer in die physikalische Standardregisternummer um unter Verwendung des aktuellen Standardfensterzeigers und setzt die logische Gleitkommaregisternummer in die physikalische Gleitkommaregisternummer um unter Verwendung des aktuellen Gleitkommafensterzeigers. Somit werden die Daten B(Li(1)) in der Hauptspeicheradresse, die durch das im physikalischen Standardregiste r < 0,20> enthaltene L(1) spezifiziert wird, im physikalischen Gleitkommaregister < 0,20> gespeichert.
  • Der ADD-Befehl Nr. 3 spezifiziert das logische Standardregister 6. Da aus der Gleichung (10) deutlich wird, daß dieses Register ein physikalisches Standardregister 6 ist (globales Register), wird der Wert des physikalischen Standardregisters 6 auf 1 gesetzt. Der CFRWPS-Befehl Nr. 4 setzt den Wert des physikalischen Standardregisters 6 in den aktuellen Gleitkommafensterzeiger ein, d. h. er setzt den Fensterzeiger auf 1. In ähnlicher Weise setzt der CGRWPS-Befehl Nr. 5 den Wert des physikalischen Standardregisters 6 in den aktuellen Standardfensterzeiger ein, d. h. er setzt den Fensterzeiger auf 1.
  • Der GLDM-Befehl Nr. 6 führt die Umsetzung von der logischen Standardregisternummer in eine physikalische Standardregisternummer durch unter Verwendung des aktuellen Standardfensterzeigers. Dies bewirkt, daß L(2), d. h. die "Adresse von B(Li(2))", im physikalischen Gleitkommaregister < 1,20> gespeichert wird. Der FLDM-Befehl Nr. 7 setzt die logische Standardregisternummer in die physikalische Standardregisternummer um unter Verwendung des aktuellen Standardfensterzeigers, und setzt ferner die logische Gleitkommaregisternummer in die physikalische Gleitkommaregisternummer um unter Verwendung des aktuellen Gleitkommafensterzeigers. Als Ergebnis werden die Daten B(Li(2)) in der Hauptspeicheradresse, die durch das im physikalischen Standardregister < 1,20> enthaltene L(2) spezifiziert wird, im physikalischen Gleitkommaregister < 1,20> gespeichert.
  • Der ADD-Befehl Nr. 8 setzt 2 in das physikalische Standardregister 6 ein. Der CFRWPS-Befehl Nr. 9 setzt den Wert des physikalischen Standardregisters 6 in den aktuellen Gleitkommafensterzeiger ein, d. h. er setzt 2 in den Fensterzeiger ein. In ähnlicher Weise setzt der CGRWPS-Befehl Nr. 10 den Wert des physikalischen Standardregisters 6 in den aktuellen Standardfensterzeiger ein, d. h. er setzt 2 in den Fensterzeiger ein.
  • Der GLDM-Befehl Nr. 11 führt die Umsetzung von der logischen Standardregisternummer in die physikalische Standardregisternummer durch unter Verwendung des aktuellen Standardfensterzeigers. Dies bewirkt, daß L(3), d. h. die "Adresse von B(Li(3))", im physikalischen Gleitkommaregister < 2,20> gespeichert wird.
  • Der SUB-Befehl Nr. 12 setzt 1 in das physikalische Standardregister 6 ein. Der CFRWPS-Befehl Nr. 13 setzt den Wert des physikalischen Standardregisters 6 in den aktuellen Gleitkommafensterzeiger ein, d. h. er setzt 1 in den Fensterzeiger ein. In ähnlicher Weise setzt der CGRWPS-Befehl Nr. 14 den Wert des physikalischen Standardregisters 6 in den aktuellen Standardfensterzeiger ein, d. h. er setzt 1 in den Fensterzeiger ein.
  • Die Befehle GLDLIM Nr. 15 bis BCNT Nr. 21 bilden eine Schleife, die N-3 mal wiederholt ausgeführt wird. Es soll w für den Wert des aktuellen Gleitkommafensterzeigers stehen und WG für den Wert des aktuellen Standardfensterzeigers. Nun sei die Schleife betrachtet, die das i-te mal ausgeführt wird (i beginnt bei 2). Wie aus dem Wert des physikalischen Standardregisters 1 deutlich wird, wird L(i+2), d. h. "die Adresse von B(Li(i+2))", vom GLDLIM-Befehl Nr. 15 in das physikalische Standardregister < WG+2,20> geladen. Aus dem Wert des physikalischen Standardregisters < WG+1,20> wird deutlich, daß B(Li(i+1)) vom FLDLI-Befehl Nr. 16 in das physikalische Gleitkommaregister < w+1,20> geladen wird. Wie aus dem Wert des Standardregisters 2 deutlich wird, speichert der FSTPOM- Befehl Nr. 17 den Wert des physikalischen Gleitkommaregisters < w-1,20> in der Hauptspeicheradresse von A(i-1). Der ADD-Befehl Nr. 18, der CFRWPS-Befehl Nr. 19 und der CGRWPS-Befehl Nr. 20 inkrementieren den aktuellen Gleitkommafensterzeiger um +1 und den aktuellen Standardfensterzeiger WG um +1, bevor das Programm zum Anfang der Schleife zurückkehrt.
  • Es wird angenommen, daß der aktuelle Gleitkommafensterzeiger in einer Schleife einen Wert w besitzt und der aktuelle Standardfensterzeiger einen Wert WG besitzt. Die Adresse der Daten B(Li(i+2)), die im physikalischen Gleitkommaregister < w+2,20> in der nächsten Schleife gespeichert werden, d. h. L(i+2), werden im physikalischen Standardregister < WG+2,20> gespeichert. Aus der Adresse der Daten B(Li(i+1)), d. h. L(i+1), die im physikalischen Standardregister < WG+1,20> in der vorangehenden Schleife gespeichert wurde, werden die Daten B(Li(i+1)) ausgelesen und im physikalischen Gleitkommaregister < w+1,20> gespeichert. Die Daten B(Li(i-1)), die im physikalischen Gleitkommaregister < w-1,20> zwei Schleifen vorher gespeichert wurden, werden in der Hauptspeicheradresse von A(i-1) gespeichert.
  • Die Befehle Nr. 22 bis Nr. 28 rufen nach dem Verlassen der Schleife die Verarbeitung der unverarbeiteten Elemente auf. Der STPOM-Befehl Nr. 23 speichert B(Li(N-2)) in der Hauptspeicheradresse von A(N-2). Der FSTPOM-Befehl Nr. 27 speichert B(Li(N-1)) in der Hauptspeicheradresse von A(N-1). Der FSTM-Befehl Nr. 28 speichert B(Li(N)) in der Hauptspeicheradresse von A(N).
  • Wie aus der Verarbeitung innerhalb der Schleife deutlich wird, spezifiziert der GLDLIM-Befehl Nr. 15 das logische Standardregister 20 und schreibt die Daten in dasselbe, während der FLDLI-Befehl Nr. 16 das logische Standardregister 20 spezifiziert und die Daten aus demselben liest. Es ist jedoch zu beachten, daß auch die physikalischen Standardregister 20, auf die von diesen Befehlen zugegriffen wird, verschieden sind, nämlich < wG+2,20> und < wG+1,20> . Der FLDLI-Befehl Nr. 16 spezifiziert die logische Gleitkommaregisternummer 20 und schreibt die Daten in das Gleitkommaregister, während der FSTPOM- Befehl Nr. 17 die logische Gleitkommaregisternummer 20 spezifiziert und die Daten aus dem Gleitkommaregister liest. Es ist zu beachten, daß die physikalischen Gleitkommaregister, auf die zugegriffen wird, verschieden sind, nämlich < w+1,20> und < w-1,20> . Somit tritt die Erscheinung nicht auf, die mit dem Programm der Fig. 8 aufgetreten ist - wie z. B. das Anhalten der Ausführung der nachfolgenden Befehle, bis die Daten ausgelesen sind. Mit anderen Worten, der Datenlesevorgang muß nur abgeschlossen sein, bevor die nächste Schleife eingeleitet wird, wodurch das Programm mit hoher Geschwindigkeit ausgeführt werden kann. Ferner wird vom Programm für die Vektordatenspeicherung entweder nur das logische Gleitkommaregister oder das logische Standardregister spezifiziert, während von dem Programm der Fig. 12 viele Gleitkommaregister und Standardregister benötigt werden.
  • Im Vergleich zum Programm der Fig. 8 besitzt das Programm der Fig. 14A und 14B einen größeren Überhang, da es eine zusätzliche Verarbeitung der Aktualisierung des aktuellen Gleitkommafensterzeigers und des aktuellen Standardfensterzeigers besitzt, die im Programm der Fig. 8 nicht enthalten ist. Während z. B. die Programmschleife der Fig. 8 aus vier Befehlen gebildet wird, umfaßt die Programmschleife der Fig. 14A und 14B sieben Befehle. Es ist jedoch zu beachten, daß der Überhang, der verursacht wird durch das Anhalten der Ausführung der nachfolgenden Befehle, bis die Daten ausgelesen sind, wie es im Programm der Fig. 8 vorkommt, sehr viel größer ist. Das Schleifenentrollverfahren des Programms in Fig. 12 kann nicht verwirklicht werden, wenn die Register, die von dem Programm spezifiziert werden können, alle aufgebraucht sind. Obwohl es aufgrund der Aktualisierung des aktuellen Gleitkommafensterzeigers und des aktuellen Standardfensterzeigers einen Überhang besitzt, wird daher dieses Verfahren als überlegen betrachtet.
  • Die Gleichung (3) der Zielindextyp-Berechnung wird vom Programm der Fig. 15A und 15B verwirklicht, wenn die oben neu hinzugefügten Funktionen verwendet werden.
  • Es wird angenommen, daß vor der Ausführung des Programms der Fig. 15A und 15B der Vektor L in einem zusammenhängenden Bereich im Speicher beginnend bei der Adresse ad1 gespeichert wird. Das heißt, die Hauptspeicheradresse von L(1) ist ad1 und diejenige von L(2) ist ad1+8. Es wird angenommen, daß in ähnlicher Weise der Vektor B in einem zusammenhängenden Bereich des Hauptspeichers beginnend bei der Adresse ad2 gespeichert wird. Es wird angenommen, daß der Vektor A in einem zusammenhängenden Bereich des Hauptspeichers beginnend bei der Adresse ad3 gespeichert wird. Ferner wird angenommen, daß das Standardregister 1 mit ad1, das Standardregister 2 mit ad2, das Standardregister 4 mit N-3, das Standardregister 5 mit 1, das Standardregister 6 mit 0, der aktuelle Gleitkommafensterzeiger mit 0, der aktuelle Standardfensterzeiger mit 0 und das Aktuell-Fensterzeigergültigkeitsregister mit 1 voreingestellt werden. Der Vektor L ist eine Variation des Listenvektors Li, wie in Gleichung (5) gezeigt ist.
  • Im folgenden werden die Fig. 15A und 15B erläutert. Der GLDM-Befehl Nr. 1 führt die Umsetzung von der logischen Standardregisternummer in die physikalische Standardregisternummer durch unter Verwendung des aktuellen Standardfensterzeigers und speichert somit L(1), d. h. die Adresse von A(Li(1)), im physikalischen Standardregister < 0,20> . Der FLDM-Befehl Nr. 2 setzt die logische Gleitkommaregisternummer in die physikalische Gleitkommaregisternummer um unter Verwendung des aktuellen Gleitkommafensterzeigers und speichert somit B(1) im physikalischen Gleitkommaregister < 3,20> .
  • Der ADD-Befehl Nr. 3 setzt 1 in das physikalische Standardregister 6 ein (das Standardregister 6 ist ein globales Register und unterliegt somit nicht der Umsetzung von der logischen Standardregisternummer in die physikalische Standardregisternummer). Der CFRWPS-Befehl Nr. 4 setzt den Wert des physikalischen Standardregisters 6 in den aktuellen Gleitkommafensterzeiger ein, d. h. er setzt 1 in den Fensterzeiger ein. In ähnlicher Weise setzt der CGRWPS-Befehl Nr. 5 den Wert des physikalischen Standardregisters 6 in den aktuellen Standardfensterzeiger ein, um 1 in den Fensterzeiger einzusetzen.
  • Der GLDM-Befehl Nr. 6 setzt die logische Standardregisternummer in die physikalische Standardregisternummer um unter Verwendung des aktuellen Standardfensterzeigers und speichert somit L (2), d. h. die Adresse von A(Li (2)), im physikalischen Standardregister < 1,20> . Der FLDM-Befehl Nr. 7 setzt die logische Gleitkommaregisternummer in die physikalische Gleitkommaregisternummer um unter Verwendung des aktuellen Gleitkommafensterzeigers und speichert somit. B(2) im physikalischen Gleitkommaregister < 1,20> .
  • Der ADD-Befehl Nr. 8 setzt 2 in das physikalische Standardregister 6 ein (das Standardregister 6 ist ein globales Register und unterliegt daher nicht der Umsetzung von der logischen Standardregisternummer in die physikalische Standardregisternummer). Der CFRWPS-Befehl Nr. 9 setzt den Wert des physikalischen Standardregisters 6 in den aktuellen Gleitkommafensterzeiger ein, d. h. er setzt 2 in den Fensterzeiger ein. In ähnlicher Weise setzt der CGRWPS-Befehl Nr. 10 den Wert des physikalischen Standardregisters 6 in den aktuellen Standardfensterzeiger ein, um 2 in den Fensterzeiger einzusetzen.
  • Der GLDM-Befehl Nr. 11 setzt die logische Standardregisternummer in die physikalische Standardregisternummer um unter Verwendung des aktuellen Standardfensterzeigers und speichert somit L(3), d. h. die Adresse von A(Li(3)), im physikalischen Standardregister < 2,20> .
  • Der SUB-Befehl Nr. 12 setzt 1 in das physikalische Standardregister 6 ein. Der CFRWPS-Befehl Nr. 13 setzt den Wert des physikalischen Standardregisters 6 in den aktuellen Gleitkommafensterzeiger ein, um 1 in den Fensterzeiger einzusetzen. In ähnlicher Weise setzt der CGRWPS- Befehl Nr. 14 den Wert des physikalischen Standardregisters 6 in den aktuellen Standardfensterzeiger ein, um 1 in den Fensterzeiger einzusetzen.
  • Die Befehle GLDLIM Nr. 15 und BCNT Nr. 21 bilden eine Schleife, die N-3 mal wiederholt ausgeführt wird. Es soll w für den Wert des aktuellen Gleitkommafensterzeigers stehen und WG für den Wert des aktuellen Standardfensterzeigers. Es sei die Schleife betrachtet, die das i-te mal (i beginnt bei 2) ausgeführt wird. Wie aus dem Wert des Standardregisters 1 deutlich wird, wird L(i+2), d. h. "die Adresse von A(Li(i+2))", vom GLDLIM-Befehl Nr. 15 in das physikalische Standardregister < WG+2,20> geladen. Aus dem Wert des Standardregisters 2 wird deutlich, daß B(i+1) vom FLDPRM-Befehl Nr. 16 in das physikalische Gleitkommaregister < w+1,20> geladen wird. Der FSTLI- Befehl Nr. 17 speichert den Wert des physikalischen Gleitkommaregisters < w+1,20> , d. h. B(i-1), in der Hauptspeicheradresse von A(Li(i-1)). Der ADD-Befehl Nr. 18, der CFRWPS-Befehl Nr. 19 und der CGRWPS-Befehl Nr. 20 inkrementieren den aktuellen Gleitkommafensterzeiger um +1 und ferner den aktuellen Standardfensterzeiger WG um +1, bevor das Programm zum Anfang der Schleife zurückkehrt.
  • Es wird angenommen, daß in einer Schleife der aktuelle Gleitkommafensterzeiger einen Wert w besitzt und der aktuelle Standardfensterzeiger einen Wert WG besitzt. Die Adresse der Daten A(Li(i+2)), d. h. die Adresse L(i+2), in der drei Schleifen später B(i+2) gespeichert wird, ist im physikalischen Standardregister < WG+2,20> gespeichert.
  • B(i+1), das zwei Schleifen später im Hauptspeicher gespeichert werden soll, ist im physikalischen Gleitkommaregister < w+1,20> gespeichert. B(i-1), das im physikalischen Gleitkommaregister < w-1,20> zwei Schleifen vorher gespeichert wurde, wird in die Adresse von A(Li(i-1)) gespeichert, d. h. L(i-1), das drei Schleifen vorher im physikalischen Standardregister < WG-1,20> gespeichert wurde.
  • Die Befehle Nr. 22 bis Nr. 28 rufen nach dem Verlassen der Schleife die Verarbeitung für die unverarbeiteten Elemente auf. Der FSTLI-Befehl Nr. 23 speichert B(N-2) in der Hauptspeicheradresse von A(Li(N-2)). Der FSTLI-Befehl Nr. 27 speichert B(N-1) in der Hauptspeicheradresse von A(Li(N-1)). Der FSTM-Befehl Nr. 28 speichert B(N) in der Hauptspeicheradresse von A(Li(N)).
  • Wie aus der Verarbeitung in der Schleife deutlich wird, sind, obwohl der GLDLIM-Befehl Nr. 15 die logische Standardregisternummer 20 spezifiziert und Daten in das Standardregister schreibt und der FSTLI-Befehl Nr. 17 die logische Gleitkommaregisternummer 20 spezifiziert und Daten aus dem Standardregister liest, die physikalischen Standardregister, auf die zugegriffen wird, verschieden, nämlich < WG+2,20> und < WG-1,20> . Der FLDPRM-Befehl Nr. 16 spezifiziert die logische Gleitkommaregisternummer 20 und schreibt Daten in das Gleitkommaregister, während der unmittelbar folgende FSTLI-Befehl Nr. 17 die logische Gleitkommaregisternummer 20 spezifiziert und Daten aus dem Gleitkommaregister liest. Es ist zu beachten, daß die physikalischen Gleitkommaregister, auf die zugegriffen wird, verschieden sind, nämlich < w+1,20> und < w-1,20> . Somit tritt das Phänomen nicht auf, das bei dem Programm der Fig. 9 aufgetreten ist - wie z. B. das Anhalten der Ausführung der nachfolgenden Befehle, bis die Daten ausgelesen sind. Mit anderen Worten, der Datenlesevorgang muß nur abgeschlossen sein, bevor die nächste Schleife eingeleitet wird, was eine Ausführung des Programms mit höherer Geschwindigkeit erlaubt.
  • Im Vergleich zum Programm der Fig. 9 besitzt das Programm der Fig. 15A und 15B einen größeren Überhang, da es die zusätzliche Verarbeitung der Aktualisierung des aktuellen Gleitkommafensterzeigers und des aktuellen Standardfensterzeigers enthält, die im Programm der Fig. 9 nicht enthalten ist. Während z. B. die Programmschleife der Fig. 9 von vier Befehlen gebildet wird, umfaßt die Programmschleife der Fig. 15A und 15B sieben Befehle. Es ist jedoch zu beachten, daß der Überhang, der verursacht wird durch das Anhalten der Ausführung der nachfolgenden Befehle, bis die Daten ausgelesen sind, wie z. B. im Programm der Fig. 9, sehr viel größer ist. Obwohl es aufgrund der Aktualisierung des aktuellen Gleitkommafensterzeigers und des aktuellen Standardfensterzeigers einen Überhang aufweist, wird dieses Verfahren daher als überlegen betrachtet.
  • Unter Verwendung der obenerwähnten neuen Funktionen wird die Gleichung (4) für die Partikelschiebertyp-Berechnung von dem in den Fig. 16A und 16B gezeigten Programm implementiert. Es wird angenommen, daß vor der Ausführung des Programms der Fig. 16A und 16B der Vektor L in einem zusammenhängenden Bereich im Hauptspeicher beginnend bei der Adresse ad1 gespeichert wird. Das heißt, die Hauptspeicheradresse von L(1) ist ad1 und diejenige von L(2) ist ad1+8. Es wird angenommen, daß in ähnlicher Weise der Vektor A in einem zusammenhängenden Bereich des Hauptspeichers beginnend bei der Adresse ad3 gespeichert wird. Es wird angenommen, daß der Vektor B in einem zusammenhängenden Bereich des Hauptspeichers beginnend bei der Adresse ad2 gespeichert wird. Ferner wird angenommen, daß das Standardregister 1 mit ad1, das Standardregister 2 mit ad2, das Standardregister 4 mit N-3, das Standardregister 5 mit 1, das Standardregister 6 mit 0, der aktuelle Gleitkommafensterzeiger mit 0, der aktuelle Standardfensterzeiger mit 0 und das Aktuell-Fensterzeigergültigkeitsregister mit 1 voreingestellt sind. Der Vektor L ist eine Variation des Listenvektors Li, wie in Gleichung (4) gezeigt ist.
  • Im folgenden werden die Fig. 16A und 16B erläutert. Der GLDM-Befehl Nr. 1 führt die Umsetzung von der logischen Standardregisternummer in die physikalische Standardregisternummer durch unter Verwendung des aktuellen Standardfensterzeigers und speichert anschließend L(1) im physikalischen Standardregister < 0,20> . Der FLDM-Befehl Nr. 2 setzt die logische Gleitkommaregisternummer in die physikalische Gleitkommaregisternummer um unter Verwendung des aktuellen Gleitkommafensterzeigers, und setzt ferner die logische Standardregisternummer in die physikalische Standardregisternummer um unter Verwendung des aktuellen Standardfensterzeigers. Der Befehl Nr. 2 speichert somit die Hauptspeicherdaten an einer Adresse, die spezifiziert wird durch L(1), d. h. A(Li(1)), im physikalischen Gleitkommaregister < 0,20> . Der FLDM-Befehl Nr. 3 setzt die logische Gleitkommaregisternummer in die physikalische Gleitkommaregisternummer um unter Verwendung des aktuellen Gleitkommafensterzeigers und speichert somit B(1) im physikalischen Gleitkommaregister < 0,20> . Der FADD-Befehl Nr. 4 setzt die logische Gleitkommaregisternummer in die physikalische Gleitkommaregisternummer um unter Verwendung des aktuellen Gleitkommafensterzeigers, addiert den Wert des physikalischen Gleitkommaregisters < 0,20> und den Wert des physikalischen Gleitkommaregisters < 0,21> und speichert das Ergebnis A(Li(1)) + B(1) im physikalischen Gleitkommaregister < 0,20> .
  • Der ADD-Befehl Nr. 5 setzt 1 in das physikalische Standardregister 6 ein (das Standardregister 6 ist ein globales Register aus der Gleichung (10)). Der CFRWPS-Befehl Nr. 6 setzt den Wert des physikalischen Standardregisters 6 in den aktuellen Gleitkommafensterzeiger ein, d. h. er setzt 1 in den Fensterzeiger ein. In ähnlicher Weise setzt der CGRWPS-Befehl Nr. 7 den Wert des physikalischen Standardregisters 6 in den aktuellen Standardfensterzeiger ein, um 1 in den Fensterzeiger einzusetzen. Der GLDM- Befehl Nr. 8 setzt die logische Standardregisternummer in die physikalische Standardregisternummer um unter Verwendung des aktuellen Standardfensterzeigers und speichert somit L(2), d. h. die Adresse von A(Li(2)) im physikalischen Standardregister < 1,20> . Der FLDM-Befehl Nr. 9 setzt die logische Gleitkommaregisternummer in die physikalische Gleitkommaregisternummer um unter Verwendung des aktuellen Gleitkommafensterzeigers und setzt ferner die logische Standardregisternummer in die physikalische Standardregisternummer um unter Verwendung des aktuellen Standardfensterzeigers und speichert somit die Hauptspeicherdaten an einer Adresse, die durch L(2), d. h. durch A(Li(2)), spezifiziert wird, im physikalischen Gleitkommaregister < 1,20> . Der FLDM-Befehl Nr. 10 setzt die logische Gleitkommaregisternummer in die physikalische Gleitkommaregisternummer um unter Verwendung des aktuellen Gleitkommafensterzeigers und speichert somit B(2) im physikalischen Gleitkommaregister < 1,21> .
  • Der ADD-Befehl Nr. 11 setzt 2 in das physikalische Standardregister 6 ein. Der CFRWPS-Befehl Nr. 12 setzt den Wert des physikalischen Standardregisters 6 in den aktuellen Gleitkommafensterzeiger ein, d. h. er setzt 2 in den Fensterzeiger ein. In ähnlicher Weise setzt der CGRWPS-Befehl Nr. 13 den Wert des physikalischen Standardregisters 6 in den aktuellen Standardfensterzeiger ein, um 2 in den Fensterzeiger einzusetzen.
  • Der GLDM-Befehl Nr. 14 setzt die logische Standardregisternummer in die physikalische Standardregisternummer um unter Verwendung des aktuellen Standardfensterzeigers und speichert somit L(3), d. h. die Adresse von A(Li (3)), im physikalischen Standardregister < 2,20> . Der SUB-Befehl Nr. 15 setzt 1 in das physikalische Standardregister 6 ein. Der CFRWPS-Befehl Nr. 16 setzt den Wert des physikalischen Standardregisters 6 in den aktuellen Gleitkommafensterzeiger ein, um 1 in den Fensterzeiger einzusetzen. In ähnlicher Weise setzt der CGRWPS-Befehl Nr. 17 den Wert des physikalischen Standardregisters 6 in den aktuellen Standardfensterzeiger ein, um 1 in den Fensterzeiger einzusetzen.
  • Die Befehle GLDLIM Nr. 18 bis BCNT Nr. 26 bilden eine Schleife, die N-3 mal wiederholt ausgeführt wird. Es soll w für den Wert des aktuellen Gleitkommafensterzeigers stehen und WG für den Wert des aktuellen Standardfensterzeigers. Es sei die Schleife betrachtet, die das i-te mal ausgeführt wird (i beginnt bei 2). Wie aus dem Wert des Standardregisters 1 deutlich wird, wird L(i+2), d. h. "die Adresse von A(Li(i+2))", vom GLDLIM-Befehl Nr. 18 in das physikalische Standardregister < WG+2,20> geladen. Aus dem physikalischen Standardregister < WG+1,20> wird deutlich, daß A(Li(i+1)) vom FLDLI-Befehl Nr. 19 in das physikalische Gleitkommaregister < w+1,20> geladen wird. Ferner wird aus dem Wert des Standardregisters 2 deutlich, daß B(i+1) vom FLDPRM-Befehl Nr. 20 in das physikalische Gleitkommaregister < w+1,21> geladen wird. Der FADD-Befehl Nr. 21 addiert den Wert des physikalischen Gleitkommaregisters < w,20> , d. h. L(i), und den Wert des physikalischen Gleitkommaregisters < w,21> , d. h. B(i), und speichert das Ergebnis im physikalischen Gleitkommaregister < w,20> . Der FSTLI-Befehl Nr. 21 speichert den Wert des physikalischen Gleitkommaregisters < w-1,20> , d. h. A(Li(i-1)) + B(i-1), in der Hauptspeicheradresse, die spezifiziert wird durch das Standardregister < WG-1,20> , d. h. L(i-1) oder die Adresse von A(Li (i-1)). Der ADD-Befehl Nr. 23, der CFRWPS-Befehl Nr. 24 und der CGRWPS-Befehl Nr. 25 inkrementieren den aktuellen Gleitkommafensterzeiger um +1 und ferner den aktuellen Standardfensterzeiger WG um +1, bevor das Programm zum Anfang der Schleife zurückkehrt.
  • Es sei angenommen, daß in einer Schleife der aktuelle Gleitkommafensterzeiger einen Wert w besitzt und der aktuelle Standardfensterzeiger einen Wert WG. Der GLDLIM- Befehl Nr. 18 liest aus dem Hauptspeicher die Adresse der Daten A(Li(i+2)) - die im physikalischen Gleitkommaregister < w+2,20> in der nächsten Schleife gespeichert werden sollen - d. h., die Adresse L(i+2) oder die Adresse von A(Li(i+2)), und speichert anschließend die Adresse im physikalischen Standardregister < WG+2,20> . Der FLDLI- Befehl Nr. 19 liest A(Li(i+1)) von L(i+1) oder die Adresse von A(Li(i+1)), die eine Schleife vorher im physikalischen Standardregister < WG+1,20> gespeichert wurde, und speichert die Daten im physikalischen Gleitkommaregister < w+1,20> . Der FLDPRM-Befehl 20 speichert die Daten B(i+1) im physikalischen Gleitkommaregister < w+1,21> , die in der Additionsberechnung in der nächsten Schleife verwendet werden sollen. Der FADD-Befehl Nr. 21 addiert A(Li(i)) und B(i), die in die physikalischen Gleitkommaregister < w,20> und < w,21> in der vorangehenden Schleife geladen wurden, und speichert das Ergebnis im physikalischen Gleitkommaregister < w,20> . Der FSTLI- Befehl Nr. 22 speichert A(Li(i-1)) + B(i-1) - die eine Schleife vorher im physikalischen Gleitkommaregister < w-1,20> gespeichert wurden - in der Hauptspeicheradresse oder L(i-1) (d. h. in der Adresse von A(Li(i-1))), die drei Schleifen vorher in das physikalische Standardregister < WG-1,20> geladen wurde.
  • Die Befehle Nr. 28 bis Nr. 36 rufen nach dem Verlassen der Schleife die Verarbeitung für die unverarbeiteten Elemente auf. Der FSTLI-Befehl Nr. 30 speichert A(Li(N-2)) + B(N-2) in der Hauptspeicheradresse von A(Li(N-2)). Der FSTLI-Befehl Nr. 35 speichert A(Li(N-1)) + B(N-1) in der Hauptspeicheradresse von A(Li(N-1)). Der FSTM-Befehl Nr. 36 speichert A(Li(N)) + B(N) in der Hauptspeicheradresse von A(Li(N)).
  • Wie aus der Verarbeitung in der Schleife deutlich wird, sind, obwohl der GLDLIM-Befehl Nr. 18 die logische Standardregisternummer 20 spezifiziert und Daten in das Standardregister schreibt und der FLDLI-Befehl Nr. 19 die logische Standardregisternummer 20 spezifiziert und Daten aus dem Standardregister liest, die physikalischen Standardregister, auf die zugegriffen wird, unterschiedlich, nämlich < WG+2,20> und < WG+1,20> . Der FLDLI-Befehl Nr. 19 spezifiziert die logische Gleitkommaregisternummer 20 und schreibt Daten in das Gleitkommaregister, während der FADD-Befehl die logische Gleitkommaregisternummer 20 spezifiziert und Daten aus dem Gleitkommaregister liest. Es ist zu beachten, daß die physikalischen Gleitkommaregister, auf die zugegriffen wird, verschieden sind, nämlich < w+1,20> und < w,20> . Ferner spezifiziert der FLDPRM-Befehl Nr. 20 die logische Gleitkommaregisternummer 21 und schreibt Daten in das Gleitkommaregister, während der FADD-Befehl Nr. 20 die logische Gleitkommaregisternummer 21 spezifiziert und Daten aus dem Gleitkommaregister liest. Die physikalischen Gleitkommaregister, auf die zugegriffen wird, sind jedoch verschieden, nämlich < w+1,21> und < w,21> . Der FADD-Befehl Nr. 21 spezifiziert die logische Gleitkommaregisternummer 20 und schreibt Daten in das Gleitkommaregister, während der FSTLI-Befehl Nr. 22 die logische Gleitkommaregisternummer 20 spezifiziert und Daten aus dem Gleitkommaregister liest. Die physikalischen Gleitkommaregister, auf die zugegriffen wird, sind jedoch verschieden, nämlich < w,20> und < w-1,20> . Das Phänomen, das beim Programm der Fig. 10 aufgetreten ist - wie z. B. das Anhalten der Ausführung der nachfolgenden Befehle, bis die Daten ausgelesen sind, tritt somit nicht auf. Mit anderen Worten, der Datenlesevorgang muß nur abgeschlossen sein bevor die nächste Schleife eingeleitet wird, was eine Ausführung des Programms mit hoher Geschwindigkeit ermöglicht.
  • Im Vergleich zum Programm der Fig. 10 besitzt das Programm der Fig. 16A und 16B einen größeren Überhang, da es die zusätzliche Verarbeitung der Aktualisierung des aktuellen Gleitkommafensterzeigers und des aktuellen Standardfensterzeigers enthält, die im Programm der Fig. 10 nicht enthalten ist. Während z. B. die Programmschleife der Fig. 10 von sechs Befehlen gebildet wird, umfaßt die Programmschleife der Fig. 16A und 16B neun Befehle. Es ist jedoch zu beachten, daß der Überhang, der verursacht wird durch das Anhalten der Ausführung der nachfolgenden Befehle, bis die Daten ausgelesen sind, was z. B. im Programm der Fig. 10 vorkommt, sehr viel größer ist. Obwohl es aufgrund der Aktualisierung des aktuellen Gleitkommafensterzeigers und des aktuellen Standardfensterzeigers einen Überhang besitzt, wird dieses Programm daher als überlegen betrachtet.
  • Bei der Listenvektorberechnung - ein Teil der Vektorberechnung in wissenschaftlichen und technischen Berechnungen - in der hauptsächlich die Ausführung der Schleife der Befehlssequenz wiederholt wird, verändert diese Erfindung den aktuellen Gleitkommafensterzeiger und den aktuellen Standardfensterzeiger für jede Schleife, d. h. sie verändert das zu benutzende Fenster. Bei der Quellenindextyp-Berechnung wird das i-te Element durch die folgenden Schritte verarbeitet: Laden eines i-ten Ele ments des Listenvektors in ein Standardregister mittels des Standardregisterlistenladebefehls in der (i-2)-ten Schleife; Laden eines Elements des Quellenvektors (ein auszulesender Vektor), der vom i-ten Element des Listenvektors spezifiziert wird, in ein Gleitkommaregister - das die Daten im Standardregister als seine Hauptspeicheradresse verwendet - mittels des Gleitkommaregisterlistenladebefehls in der (i-1)-ten Schleife; und Speichern der Daten des Gleitkommaregisters in einem i-ten Element des Zielvektors (ein Vektor, in den geschrieben werden soll) mittels eines Gleitkommaregisternachspeicherbefehls in der (i+1)-ten Schleife. Diese Serie von Operationen erhöht die Abstände in der Befehlskette zwischen Listenvektorlade-, Quellenvektorlade- und Zielvektorspeicheroperationen für eine Elementnummer, wobei die Leistungsbeeinträchtigung aufgrund einer verlängerten Datenlesezeitspanne beseitigt wird und somit die Operationsgeschwindigkeit erhöht wird.
  • Bei der Zielindextyp-Berechnung wird das i-te Element mittels der folgenden Schritte verarbeitet: Laden eines i-ten Elements des Listenvektors in ein Standardregister mittels des Standardregisterlistenladebefehls in der (i-2)-ten Schleife; Laden eines i-ten Elements des Quellenvektors (eines auszulesenden Vektors) in ein Gleitkommaregister mittels eines Gleitkommaregistervorladebefehls in der (i-1)-ten Schleife; und Speichern der Daten im Gleitkommaregister - das die Daten im Standardregister als seine Hauptspeicheradresse verwendet - in einem Element des Zielvektors, der durch das i-te Element des Listenvektors spezifiziert wird, mittels des Gleitkommaregisterlistenspeicherbefehls in der (i+1)-ten Schleife. Diese Serie von Operationen erhöht die Abstände in der Befehlskette zwischen den Listenvektorlade-, Quellenvektorlade- und Zielvektorspeicheroperationen für eine Elementnummer, wodurch die Leistungsbeeinträchtigung aufgrund der verlängerten Datenlesezeitspanne beseitigt wird und somit die Operationsgeschwindigkeit erhöht wird.
  • Bei der Partikelschiebertyp-Berechnung wird das i-te Element mittels der folgenden Schritte verarbeitet: Laden eines i-ten Elements des Listenvektors in ein Standardregister mittels des Standardregisterlistenladebefehls in der (i-2)-ten Schleife; Laden eines Elements eines ersten Vektors (d. h. des Vektors A der Gleichung (4), der durch das i-te Element des Listenvektors spezifiziert wird, in ein Gleitkommaregister mittels des Gleitkommaregisterlistenladebefehls in der (i-1)-ten Schleife; Laden eines i- ten Elements des zweiten Vektors (d. h. des Vektors B der Gleichung (4)) in ein zweites Gleitkommaregister mittels des Gleitkommaregistervorladebefehls; Addieren der Werte der zwei Gleitkommaregister (d. h. Addieren des Elements des ersten Vektors, der durch das i-te Element eines Listenvektors spezifiziert wird, und des i-ten Elements des zweiten Vektors) mittels des Gleitkommaadditionsbefehls in der i-ten Schleife; und Speichern des Ergebnisses der Addition im Element des ersten Vektors, der durch das i-te Element des Listenvektors spezifiziert wird, wobei das Element den Wert des Standardregisters als seine Hauptspeicheradresse verwendet. Diese Serie von Operationen erhöht die Abstände in der Befehlskette zwischen den verschiedenen Operationen für eine Elementnummer, d. h. zwischen dem Listenvektorladevorgang, dem ersten Vektorladevorgang, dem zweiten Vektorladevorgang (die ersten und zweiten Vektorladevorgänge werden in einer Schleife ausgeführt, da sie nicht miteinander in Beziehung stehen), der Addition der ersten und zweiten Vektorelemente und der Speicherung des Additionsergebnisses im ersten Vektor, wodurch die Leistungsbeeinträchtigung aufgrund der verlängerten Datenlesezeitspanne und der Berechnungsausführungszeitspanne beseitigt wird und somit die Operationsgeschwindigkeit erhöht wird.
  • Im folgenden wird mit Bezug auf die beigefügten Zeichnungen eine Ausführungsform eines Datenprozessors beschrieben, der für die Ausführung einer Listenvektorberechnung geeignet ist. Die Fig. 5 zeigt den Datenprozessor dieser Ausführungsform. In Fig. 5 sind Elemente, die den in Fig. 3 gezeigten Elementen ähnlich sind, mit denselben Bezugszeichen bezeichnet.
  • Die Hauptschaltung der Befehlverarbeitungseinheit 10 enthält: ein aktuelles Gleitkommafensterzeigerregister 110 zum Speichern eines aktuellen Gleitkommafensterzeigers; ein Aktuell-Standardfensterzeigerregister 113 zum Speichern eines aktuellen Standardfensterzeigers; ein Aktuell-Fensterzeigergültigkeitsregister 111, das anzeigt, daß der aktuelle Gleitkommafensterzeiger und der aktuelle Standardfensterzeiger gültig sind; ein Signal 115, das die logische Gleitkommaregisternummer darstellt, die vom Befehl spezifiziert wird; eine erste Umsetzungsschaltung 112 zum Umsetzen des Signals 115 in eine physikalische Gleitkommaregisternummer gemäß den Gleichungen (6) bis (10); ein Signal 116, das die logische Standardregisternummer darstellt, die vom Befehl spezifiziert wird; und eine zweite Umsetzungsschaltung 114 zum Umsetzen des Signals 115 oder 116 in eine physikalische Standardregisternummer gemäß den Gleichungen (11) bis (15). Das Signal 115 und das Signal 116 kann jeweils mehrere Registernummern führen, um die Ausführung der Befehle zu ermöglichen, die mehrere Standardregisternummern oder Gleitkommaregisternummern spezifizieren.
  • Wie in den Fig. 6A bis 6H gezeigt, sind dem Datenprozessor acht neue Befehle hinzugefügt. Diese sind gezeigt als ein Aktuell-Gleitkommafensterzeigeränderungsbefehl in Fig. 6A, ein Aktuell-Standardfensterzeigeränderungsbefehl in Fig. 6B, ein Gleitkommaregistervorladebefehl in Fig. 6C, ein erweiterter Gleitkommaregistervorladebefehl in Fig. 6D, ein Gleitkommaregisternachspeicherbefehl in Fig. 6E, ein Gleitkommaregisterlistenladebefehl in Fig. 6F, ein Standardregisterlistenladebefehl in Fig. 6G und ein Gleitkommaregisterlistenspeicherbefehl in Fig. 6H. Die Mnemonics und Funktionen dieser Befehle sind bereits beschrieben worden. Der Aktuell-Gleitkommafensterzeigeränderungsbefehl ist ein Befehl zum Spezifizieren eines aktuellen Gleitkommafensterzeigers. Wie in Fig. 6A gezeigt, zeigt der Befehlscode an, daß der Befehl ein Aktuell-Gleitkommafensterzeigeränderungsbefehl ist. Die Standardregisternummer spezifiziert ein Standardregister, das den zu setzenden Wert des aktuellen Gleitkommafensterzeigers enthält.
  • Der Aktuell-Standardfensterzeigeränderungsbefehl ist ein Befehl zum Spezifizieren eines aktuellen Standardfensterzeigers. Wie in Fig. 6B gezeigt, zeigt der Befehlscode an, daß der Befehl ein Aktuell-Standardfensterzeigeränderungsbefehl ist. Die Standardregisternummer spezifiziert ein Standardregister, das den zu setzenden Wert des aktuellen Standardfensterzeigers enthält.
  • Der Gleitkommaregistervorladebefehl ist ein Befehl zum Lesen von Daten aus der Hauptspeicheradresse, die durch das Standardregister spezifiziert wird, das zum aktuellen Fenster gehört, und zum Speichern der Hauptspeicherdaten in einem Gleitkommaregister, das zu einem Fenster von (aktueller Gleitkommafensterzeiger + 1) gehört. Wie in Fig. 6 gezeigt, stellt der Befehlscode den Gleitkommaregistervorladebefehl dar. Die Gleitkommaregisternummer stellt eine logische Gleitkommaregisternummer (r) dar. Das entsprechende physikalische Gleitkommaregister, in dem die Daten gespeichert sind, besitzt die Nr. < w+1,r> , wobei w ein aktueller Gleitkommafensterzeiger ist. Die Standardregisternummer stellt eine logische Standardregi sternummer (rG) dar. Der Wert eines physikalischen Standardregisters < wG,rG> , wobei wG für den aktuellen Standardfensterzeiger steht, stellt eine Hauptspeicheradresse dar, aus der die Daten auszulesen sind. Nachdem die Daten ausgelesen worden sind, wird das physikalische Standardregister < wG,rG> zu einem Inkrementwert addiert.
  • Der erweiterte Gleitkommaregistervorladebefehl ist ein Befehl zum Lesen von Daten aus der Hauptspeicheradresse, die durch das Standardregister spezifiziert wird, das zum aktuellen Fenster gehört, und zum Speichern der Hauptspeicherdaten in einem Gleitkommaregister, das zu einem Fenster von (aktueller Gleitkommafensterzeiger + 2) gehört. Wie in Fig. 6D gezeigt, zeigt der Befehlscode an, daß der Befehl ein erweiterter Gleitkommaregistervorladebefehl ist. Die Gleitkommaregisternummer stellt eine logische Gleitkommaregisternummer (r) dar. Das entsprechende physikalische Gleitkommaregister, in dem die Daten zu speichern sind, besitzt die Nr. < w+2,r> , wobei w ein aktueller Gleitkommafensterzeiger ist. Die Standardregisternummer stellt eine logische Standardregisternummer (rG) dar. Der Wert eines physikalischen Standardregisters < wG,rG> , wobei wG für den aktuellen Standardfensterzeiger steht, stellt eine Hauptspeicheradresse dar, aus der die Daten auszulesen sind. Nachdem die Daten ausgelesen sind, wird zum physikalischen Standardregister < wG,rG> ein Inkrementwert addiert.
  • Der Gleitkommaregisternachspeicherbefehl ist ein Befehl zum Lesen von Daten aus einem Gleitkommaregister, das zu einem Fenster von (aktueller Gleitkommafensterzeiger - 1) gehört, und zum Speichern von Daten in der Hauptspeicheradresse, die durch das Standardregister spezifiziert wird, das zum aktuellen Fenster gehört. Wie in Fig. 6D gezeigt, zeigt der Befehlscode an, daß der Befehl ein Gleitkommaregisternachspeicherbefehl ist. Die Gleitkomma registernummer stellt eine logische Gleitkommaregisternummer (r) dar. Das entsprechende physikalische Gleitkommaregister, aus dem die Daten auszulesen sind, besitzt die Nr. < w+2,r> , wobei w ein aktueller Gleitkommafensterzeiger ist. Die Standardregisternummer stellt eine logische Standardregisternummer (rG) dar. Der Wert eines physikalischen Standardregisters < wG,rG> , wobei wG für den aktuellen Standardfensterzeiger steht, stellt eine Hauptspeicheradresse dar, in die die Daten zu speichern sind. Nachdem die Daten ausgelesen worden sind, wird zum physikalischen Standardregister < wG,rG> ein Inkrementwert addiert.
  • Der Gleitkommalistenladebefehl liest Daten aus einer Hauptspeicheradresse, die durch das Standardregister spezifiziert wird, die zu einem Fenster von (aktueller Standardfensterzeiger +1) gehört, und speichert Daten in einem Gleitkommaregister, das zu einem Fenster von (aktueller Gleitkommafensterzeiger +1) gehört. Wie in Fig. 6F gezeigt, zeigt der Befehlscode an, daß der Befehl ein Gleitkommaregisterlistenladebefehl ist. Die Gleitkommaregisternummer stellt eine logische Gleitkommaregisternummer (r) dar. Das entsprechende physikalische Gleitkommaregister, in dem die Daten zu speichern sind, besitzt eine Nummer < w+1,r> , wobei w ein aktueller Gleitkommafensterzeiger ist. Die Standardregisternummer stellt eine logische Standardregisternummer (rG) dar. Der Wert des physikalischen Standardregisters < wG+1,rG> , wobei wG für den aktuellen Standardfensterzeiger steht, stellt eine Hauptspeicheradresse dar, aus der die Daten auszulesen sind.
  • Der Standardregisterlistenladebefehl speichert Daten aus seiner Hauptspeicheradresse, die durch ein Standardregister spezifiziert wird, das zum aktuellen Fenster gehört, in ein Standardregister, das zu einem Fenster von (aktueller Standardfensterzeiger + 2) gehört. Wie in Fig. 4 G gezeigt, zeigt der Befehlscode an, daß der Befehl ein Standardregisterlistenladebefehl ist. Die Standardregisternummer 1 stellt eine logische Standardregisternummer (rG1) dar. Der Wert des physikalischen Standardregisters < wG,rG1> , wobei wG für den aktuellen Standardfensterzeiger steht, zeigt eine Hauptspeicheradresse an, aus der die Daten auszulesen sind. Die Standardregisternummer 2 stellt eine logische Standardregisternummer (rG2) dar. Die Nummer eines physikalischen Standardregisters, in dem die Daten zu speichern sind, ist < wG+2,rG2> . Nachdem die Daten ausgelesen worden sind, wird zum physikalischen Standardregister < wG,rG1> ein Inkrementwert addiert.
  • Der Gleitkommaregisterlistenspeicherbefehl liest Daten aus einem Gleitkommaregister, das zu einem Fenster von (aktueller Gleitkommafensterzeiger - 1) gehört und speichert die Daten in einer Hauptspeicheradresse, die durch ein Standardregister spezifiziert wird, das zu einem Fenster von (aktueller Standardfensterzeiger - 1) gehört. Wie in Fig. 4H gezeigt, zeigt der Befehlscode an, daß der Befehl ein Gleitkommaregisterlistenspeicherbefehl ist. Die Gleitkommaregisternummer ist eine logische Gleitkommaregisternummer (r). Das physikalische Gleitkommaregister, aus dem die Daten auszulesen sind, besitzt die Nr. < w-1,r> , wobei w für den aktuellen Gleitkommafensterzeiger steht. Der Wert des physikalischen Standardregisters < wG-1,r> , wobei wG für den aktuellen Standardfensterzeiger steht, stellt eine Hauptspeicheradresse dar, in der die Daten gespeichert werden sollen.
  • Im folgenden wird mit Bezug auf die Fig. 5 die Operation dieser Befehle erläutert. Zuerst wird der Aktuell-Gleitkommafensterzeigeränderungsbefehl erläutert. Wenn ein Befehl in das Befehlsregister 101 aufgenommen wird, wird der Befehl von der Befehlssteuervorrichtung 102 decodiert. Wenn der Befehl als ein Aktuell-Gleitkommafensterzeigeränderungsbefehl identifiziert ist, wird das vom Befehl spezifizierte Standardregister gelesen und der Wert dieses Registers in das Aktuell-Gleitkommafensterzeigerregister 110 eingesetzt.
  • Als nächstes wird der Aktuell-Standardfensterzeigeränderungsbefehl beschrieben. Wenn ein Befehl in das Befehlsregister 101 aufgenommen wird, wird der Befehl von der Befehlssteuervorrichtung 102 decodiert. Wenn der Befehl als ein Aktuell-Standardfensterzeigeränderungsbefehl identifiziert ist, wird das vom Befehl spezifizierte Standardregister gelesen und der Wert dieses Registers in das Aktuell-Standardfensterzeigerregister 113 eingesetzt.
  • Als nächstes wird der Gleitkommaregistervorladebefehl erläutert. Wenn der Befehl in das Befehlsregister 101 aufgenommen wird, wird der Befehl von der Befehlssteuervorrichtung 102 decodiert. Wenn der Befehl als ein Gleitkommaregistervorladebefehl identifiziert ist, wird die vom Befehl spezifizierte logische Standardregisternummer (rG) über das Signal 116 zur zweiten Umsetzungsschaltung 114 übertragen, wo es in ein physikalisches Standardregister < wG,rG> umgesetzt wird, wobei wG für den Wert des aktuellen Standardfensterzeigerregisters 113 steht. Der Adressenaddierer 107 nimmt den Inhalt des physikalischen Standardregisters auf und gibt ihn als eine Hauptspeicheradresse aus, von der die Daten zu lesen sind. Die Hauptspeicherzugriffssteuervorrichtung 109 durchsucht den Cache-Speicher 108 nach der Hauptspeicheradresse. Wenn sich die gewünschten Daten im Cache-Speicher befinden, überträgt die Steuervorrichtung 109 diese aus dem Cache- Speicher, während sie dann, wenn die Daten nicht gefunden werden, die Daten aus dem Hauptspeicher 30 über die Speichersteuereinheit 20 überträgt. Die übertragenen Daten werden im Gleitkommaregister 105 gespeichert. Die physikalische Gleitkommaregisternummer, in der die Daten gespeichert sind, wird von der ersten Umsetzungsschaltung 112 wie folgt ermittelt. Die vom Befehl spezifizierte Gleitkommaregisternummer stellt eine logische Gleitkommaregisternummer (r) dar und wird über das Signal 115 zur ersten Umsetzungsschaltung 112 übertragen. Die physikalische Gleitkommaregisternummer wird ermittelt als < w+1,r> , wobei w der Wert des Aktuell-Gleitkommafensterzeigerregisters 110 ist. Nachdem die Datenübertragung begonnen hat, addiert der Standardrechner 104 einen Inkrementwert zum Wert des physikalischen Standardregisters < wG,rG> .
  • Als nächstes wird der erweiterte Gleitkommaregistervorladebefehl erläutert. Wenn der Befehl in das Befehlsregister 101 aufgenommen wird, wird der Befehl von der Befehlssteuervorrichtung 102 decodiert. Wenn der Befehl als ein erweiterter Gleitkommaregistervorladebefehl identifiziert ist, wird die vom Befehl spezifizierte logische Standardregisternummer (rG) über das Signal 116 zur zweiten Umsetzungsschaltung 114 übertragen, wo es in ein physikalisches Standardregister < wG,rG> umgesetzt wird, wobei wG für den Wert des aktuellen Standardfensterzeigerregisters 113 steht. Der Adressenaddierer 107 nimmt den Inhalt des physikalischen Standardregisters auf und gibt ihn als eine Hauptspeicheradresse aus, von der die Daten zu lesen sind. Die Hauptspeicherzugriffssteuervorrichtung 109 durchsucht den Cache-Speicher 108 nach der Hauptspeicheradresse. Wenn sich die gewünschten Daten im Cache-Speicher befinden, überträgt die Steuervorrichtung 109 diese aus dem Cache-Speicher, während sie dann, wenn die Daten nicht gefunden werden, die Daten aus dem Hauptspeicher 30 über die Speichersteuereinheit 20 überträgt. Die übertragenen Daten werden im Gleitkommaregister 105 gespeichert. Die physikalische Gleitkommaregisternummer, in der die Daten gespeichert sind, wird von der ersten Umsetzungsschaltung 112 wie folgt ermittelt. Die vom Befehl spezifizierte Gleitkommaregisternummer stellt eine logische Gleitkommaregisternummer (r) dar und wird über das Signal 115 zur ersten Umsetzungsschaltung 112 übertragen. Die physikalische Gleitkommaregisternummer wird ermittelt als < w+2,r> , wobei w der Wert des Aktuell- Gleitkommafensterzeigerregisters 110 ist. Nachdem die Datenübertragung begonnen hat, addiert der Standardrechner 104 einen Inkrementwert zum Wert des physikalischen Standardregisters < wG,rG> .
  • Als nächstes wird der Gleitkommaregisternachspeicherbefehl erläutert. Wenn der Befehl in das Befehlsregister 101 aufgenommen wird, wird der Befehl von der Befehlssteuervorrichtung 102 decodiert. Wenn der Befehl als ein Gleitkommaregisternachspeicherbefehl identifiziert ist, wird die vom Befehl spezifizierte logische Standardregisternummer (rG) über das Signal 116 zur zweiten Umsetzungsschaltung 114 übertragen, wo es in ein physikalisches Standardregister < wG,rG> umgesetzt wird, wobei wG für den Wert des aktuellen Standardfensterzeigerregisters 113 steht. Der Adressenaddierer 107 nimmt den Inhalt des physikalischen Standardregisters auf und gibt ihn als eine Hauptspeicheradresse aus, in die die Daten zu speichern sind. Die Daten werden aus dem Gleitkommaregister 105 gelesen, wobei die physikalische Gleitkommaregisternummer, aus der die Daten auszulesen sind, von der ersten Umsetzungsschaltung 112 wie folgt ermittelt wird. Die physikalische Gleitkommaregisternummer wird ermittelt als < w-1,r> , wobei w der Wert des Aktuell-Gleitkommafensterzeigerregisters 110 ist. Die Hauptspeicherzugriffssteuervorrichtung 109 durchsucht den Cache-Speicher 108 nach der Hauptspeicheradresse. Wenn der Cache-Speicher eine Kopie der Daten enthält, die in der Hauptspeicheradresse gespeichert sind, ersetzt die Steuervorrichtung 109 diese Daten durch die gelesenen Daten. Wenn die Daten nicht im Cache-Speicher gefunden werden, wird der Cache-Speicher nicht verändert. Die Hauptspeicherzugriffssteuervorrichtung 109 speichert die gelesenen Daten über die Speichersteuereinheit 20 in der Hauptspeicheradresse. Nachdem die Datenübertragung begonnen hat, addiert der Standardrechner 104 einen Inkrementwert zum Wert des physikalischen Standardregisters < wG,rG> .
  • Als nächstes wird der Gleitkommaregisterlistenladebefehl beschrieben. Wenn der Befehl in das Befehlsregister 101 aufgenommen wird, wird der Befehl von der Befehlssteuervorrichtung 102 decodiert. Wenn der Befehl als ein Gleitkommaregisterlistenladebefehl identifiziert ist, wird die vom Befehl spezifizierte logische Gleitkommaregisternummer (r) über das Signal 116 zur zweiten Umsetzungsschaltung 114 übertragen, wo es in ein physikalisches Standardregister < wG+1,r> umgesetzt wird, wobei wG für den Wert des aktuellen Standardfensterzeigerregisters 113 steht. Der Adressenaddierer 107 nimmt den Inhalt des physikalischen Standardregisters auf und gibt ihn als eine Hauptspeicheradresse aus, von der die Daten zu lesen sind. Die Hauptspeicherzugriffssteuervorrichtung 109 durchsucht den Cache-Speicher 108 nach der Hauptspeicheradresse. Wenn sich die gewünschten Daten im Cache- Speicher befinden, überträgt die Steuervorrichtung 109 diese aus dem Cache-Speicher, während sie dann, wenn die Daten nicht gefunden werden, die Daten aus dem Hauptspeicher 30 über die Speichersteuereinheit 20 überträgt. Die übertragenen Daten werden im Gleitkommaregister 105 gespeichert. Die physikalische Gleitkommaregisternummer, in der die Daten gespeichert sind, wird von der ersten Umsetzungsschaltung 112 wie folgt ermittelt. Die vom Befehl spezifizierte Gleitkommaregisternummer stellt eine logische Gleitkommaregisternummer (r) dar und wird über das Signal 115 zur ersten Umsetzungsschaltung 112 übertragen. Die physikalische Gleitkommaregisternummer wird ermittelt als < w+1,r> , wobei w der Wert des Aktuell- Gleitkommafensterzeigerregisters 110 ist.
  • Als nächstes wird der Standardregisterlistenladebefehl erläutert. Wenn der Befehl in das Befehlsregister 101 aufgenommen wird, wird der Befehl von der Befehlssteuervorrichtung 102 decodiert. Wenn der Befehl als ein Standardregisterlistenladebefehl identifiziert ist, wird die logische Standardregisternummer 1 (rG1) oder die vom Befehl spezifizierte erste Standardregisternummer über das Signal 116 zur zweiten Umsetzungsschaltung 114 übertragen, wo es in ein physikalisches Standardregister < wG,rG1> umgesetzt wird, wobei wG für den Wert des aktuellen Standardfensterzeigerregisters 113 steht. Der Adressenaddierer 107 nimmt den Inhalt des physikalischen Standardregisters auf und gibt ihn als eine Hauptspeicheradresse aus, von der die Daten zu lesen sind. Die Hauptspeicherzugriffssteuervorrichtung 109 durchsucht den Cache-Speicher 108 nach der Hauptspeicheradresse. Wenn sich die gewünschten Daten im Cache-Speicher befinden, überträgt die Steuervorrichtung 109 diese aus dem Cache- Speicher, während sie dann, wenn die Daten nicht gefunden werden, die Daten aus dem Hauptspeicher 30 über die Speichersteuereinheit 20 überträgt. Die übertragenen Daten werden im Standardregister 103 gespeichert. Die physikalische Standardregisternummer, in der die Daten gespeichert sind, wird von der zweiten Umsetzungsschaltung 114 wie folgt ermittelt. Die logische Standardregisternummer 2 (rG2) oder vom Befehl spezifizierte zweite Standardregisternummer wird über das Signal 116 zur zweiten Umsetzungsschaltung 114 übertragen, wo sie in ein physikalisches Standardregister < wG+2,rG2> umgesetzt wird. Nachdem die Datenübertragung begonnen hat, addiert der Standardrechner 104 einen Inkrementwert zum Wert des physikalischen Standardregisters < wG,rG1> .
  • Als nächstes wird der Gleitkommaregisterlistenspeicherbefehl erläutert. Wenn der Befehl in das Befehlsregister 101 übernommen wird, wird der Befehl von der Befehlssteuervorrichtung 102 decodiert. Wenn der Befehl als ein Gleitkommaregisterlistenladebefehl identifiziert ist, werden die Daten aus dem Gleitkommaregister 105 ausgelesen. Die Registernummer des physikalischen Gleitkommaregisters, aus dem die Daten ausgelesen werden, wird von der ersten Umsetzungsschaltung 112 wie folgt ermittelt. Die vom Befehl spezifizierte Gleitkommaregisternummer ist eine logische Gleitkommaregisternummer (r) und wird über das Signal 115 zur ersten Umsetzungsschaltung 112 übertragen, wo sie in eine physikalische Gleitkommaregisternummer < w-1,r> umgesetzt wird, wobei w für den Wert des Aktuell-Gleitkommafensterzeigerregisters 110 steht. Die logische Gleitkommaregisternummer r wird über das Signal 115 zur zweiten Umsetzungsschaltung 114 übertragen, wo sie in eine physikalische Standardregisternummer < wG-1,r> umgesetzt wird. Der Adressenaddierer 107 nimmt den Inhalt des physikalischen Standardregisters auf und gibt ihn als eine Hauptspeicheradresse aus, in die die Daten vom physikalischen Gleitkommaregister gespeichert werden sollen. Die Hauptspeicherzugriffssteuervorrichtung 109 durchsucht den Cache-Speicher 108 nach der Hauptspeicheradresse. Wenn der Cache-Speicher eine Kopie der Daten enthält, die in der Hauptspeicheradresse gespeichert sind, ersetzt die Steuervorrichtung 109 diese Daten durch die gelesenen Daten. Wenn die Daten nicht im Cache-Speicher gefunden werden, wird der Cache-Speicher nicht verändert. Die Hauptspeicherzugriffssteuervorrichtung 109 speichert die gelesenen Daten über die Speichersteuereinheit 20 in der Hauptspeicheradresse.
  • Bei den allgemeinen Gleitkommabefehlen (diejenigen, die Gleitkommaregister verwenden, mit Ausnahme des Gleitkommaregistervorladebefehls, des erweiterten Gleitkommaregi stervorladebefehls, des Gleitkommaregisternachspeicherbefehla, des Gleitkommaregisterlistenladebefehls, des Standardregisterlistenladebefehls und des Gleitkommaregisterlistenspeicherbefehls) wird dann, wenn der Wert des Aktuell-Fensterzeigergültigkeitsregisters 111 gleich "1" ist, die vom Befehl spezifizierte logische Gleitkommaregisternummer r von der ersten Umsetzungslogik 112 in eine physikalische Gleitkommaregisternummer umgesetzt, die gegeben ist durch < w,r> , wobei w der Wert des Aktuell- Gleitkommafensterzeigerregisters 110 ist. Anschließend wird auf das physikalische Gleitkommaregister zugegriffen, das von dieser hergeleiteten physikalischen Gleitkommaregisternummer dargestellt wird. Wenn das Aktuell- Fensterzeigergültigkeitsregister 111 einen Wert von "0" besitzt, wird die vom Befehl spezifizierte logische Gleitkommaregisternummer r keiner Umsetzungsverarbeitung mittels der ersten Umsetzungslogik 112 unterworfen. Folglich wird auf das physikalische Gleitkommaregister zugegriffen, das von der physikalischen Gleitkommaregisternummer r spezifiziert wird.
  • Bei allgemeinen Befehlen (diejenigen, die Standardregister verwenden, mit Ausnahme des Gleitkommaregistervorladebefehls, des erweiterten Gleitkommaregistervorladebefehls, des Gleitkommaregisternachspeicherbefehls, des Gleitkommaregisterlistenladebefehls, des Standardregisterlistenladebefehls und des Gleitkommaregisterlistenspeicherbefehls) wird dann, wenn der Wert des Aktuell- Fensterzeigergültigkeitsregisters 111 gleich "1" ist, die vom Befehl spezifizierte logische Standardregisternummer rG von der zweiten Umsetzungslogik 114 in eine physikalische Standardregisternummer umgesetzt, die gegeben ist durch < wG,rG> , wobei wG der Wert des Aktuell-Standardfensterzeigerregisters 113 ist. Anschließend wird auf das physikalische Standardregister zugegriffen, das von dieser hergeleiteten physikalischen Standardregisternum mer dargestellt wird. Wenn das Aktuell-Fensterzeigergültigkeitsregister 111 einen Wert von "0" besitzt, wird die vom Befehl spezifizierte logische Standardregisternummer rG keiner Umsetzungsverarbeitung mittels der zweiten Umsetzungslogik 114 unterworfen. Folglich wird auf das physikalische Standardregister zugegriffen, das von der physikalischen Standardregisternummer rG spezifiziert wird.
  • Bei dem Gleitkommaregistervorladebefehl, dem erweiterten Gleitkommaregistervorladebefehl, dem Gleitkommaregisternachspeicherbefehl, dem Gleitkommaregisterlistenladebefehl, dem Standardregisterlistenladebefehl und dem Gleitkommaregisterlistenspeicherbefehl werden dann, wenn der Wert des Aktuell-Fensterzeigergültigkeitsregisters 111 gleich "1" ist, die folgenden Umsetzungen wie bei den obenerwähnten Befehlen durchgeführt: Umsetzung von der logischen Gleitkommaregisternummer in die physikalische Gleitkommaregisternummer, Umsetzung von der logischen Gleitkommaregisternummer in die physikalische Standardregisternummer und Umsetzung von der logischen Standardregisternummer in die physikalische Standardregisternummer. Es wird auf das physikalische Gleitkommaregister oder das physikalische Standardregister zugegriffen, die von der umgesetzten Nummer spezifiziert werden. Wenn das Aktuell- Fensterzeigergültigkeitsregister 111 einen Wert von "0" besitzt, ist die logische Gleitkommaregisternummer gleich der physikalischen Gleitkommaregisternummer bei der Umsetzung von der logischen Gleitkommaregisternummer in die physikalische Gleitkommaregisternummer; die logische Gleitkommaregisternummer ist gleich der physikalischen Standardregisternummer bei der Umsetzung von der logischen Gleitkommaregisternummer in die physikalische Standardregisternummer; und die logische Standardregisternummer ist gleich der physikalischen Standardregisternummer bei der Umsetzung von der logischen Standard registernummer in die physikalische Standardregisternummer.
  • Dem Aktuell-Fensterzeigergültigkeitsregister 111 kann ein Leerlaufbit eines bestehenden Registers zugewiesen sein, das Steuerungsinformationen des Datenverarbeitungssystems enthält, wobei das Gültigkeitsbit gesetzt werden kann unter. Verwendung eines bestehenden Befehls zum Speichern eines Wertes im Register.
  • Im Vorangehenden wurde die Art beschrieben, wie die folgenden Befehle arbeiten - der Aktuell-Gleitkommafensterzeigeränderungsbefehl, der Aktuell-Standardfensterzeigeränderungsbefehl, der Gleitkommaregistervorladebefehl, der erweiterte Gleitkommaregistervorladebefehl, der Gleitkommaregisternachspeicherbefehl, der Gleitkommaregisterlistenladebefehl, der Standardregisterlistenladebefehl, der Gleitkommaregisterlistenspeicherbefehl und die gemeinsamen Gleitkommabefehle und die allgemeinen Befehle unter der Steuerung des aktuellen Gleitkommafensterzeigers und des aktuellen Standardfensterzeigers.
  • Bei der obigen Ausführungsform können die in den Fig. 14A, 14B, 15A, 15B, 16A und 16B gezeigten Programme implementiert werden, wodurch die Geschwindigkeit der Listenvektorberechnung erhöht wird.
  • Gemäß dem Verfahren dieser Erfindung wird der aktuelle Gleitkommafensterzeiger geändert, um eine Gleitkommaregisternummer in einem Befehl in eine andere physikalische Gleitkommaregisternummer umzusetzen, wobei der aktuelle Standardfensterzeiger geändert wird, um eine Gleitkommaregisternummer oder eine Standardregisternummer im Befehl in eine andere physikalische Standardregisternummer umzusetzen, wodurch es möglich wird, auf eine größere Anzahl von physikalischen Registern zuzugreifen, als von den Befehlen adressiert werden kann, ohne die Architektur des Datenprozessors zu verändern. Dieses Verfahren verwirklicht Programme wie z. B. diejenigen, die in den Fig. 14A, 14B, 15A, 15B, 16A und 16B gezeigt sind, wodurch eine Leistungsbeeinträchtigung verhindert wird, die ansonsten durch das Anhalten der Befehlsausführung aufgrund eines verlängerten Datenlesevorgangs oder aufgrund von Registerkonflikten hervorgerufen wird. Dies stellt wiederum eine schnellere Ausführung der Programme sicher.
  • Wie aus den Programmen der Fig. 14A, 14B, 15A, 15B, 16A und 16B deutlich wird, verändert die vorliegende Erfindung bei der Listenvektorberechnung - ein Teil der Vektorberechnung in wissenschaftlichen und technischen Berechnungen - die hauptsächlich die Ausführung der Schleife einer Befehlssequenz wiederholt, das zu verwendende Fenster. Bei der Quellenindextyp-Berechnung wird das i-te Element mittels der folgenden Schritte verarbeitet: Laden eines i-ten Elements des Listenvektors in ein Standardregister mittels des Standardregisterlistenladebefehls in der (i-2)-ten Schleife; Laden eines Elements des Quellenvektors (ein auszulesender Vektor), der vom i- ten Element des Listenvektors spezifiziert wird, in ein Gleitkommaregister - das Daten im Standardregister als seine Hauptspeicheradresse verwendet - mittels des Gleitkommaregisterlistenladebefehls in der (i-1)-ten Schleife; und Speichern der Daten des Gleitkommaregisters in einem i-ten Element des Zielvektors (ein Vektor, in den geschrieben werden soll) mittels eines Gleitkommaregisternachspeicherbefehls in der (i+1)-ten Schleife. Diese Serie von Operationen erhöht den Abstand in der Befehlskette zwischen den Listenvektorlade-, Quellenvektorlade- und Zielvektorspeicheroperationen für eine Elementnummer, wodurch die Leistungsbeeinträchtigung aufgrund einer verlängerten Datenlesezeit beseitigt wird und somit die Operationsgeschwindigkeit erhöht wird. Bei der Zielindextyp-Berechnung wird das i-te Element mittels der folgenden Schritte verarbeitet: Laden eines i-ten Elements des Listenvektors in ein Standardregister mittels des Standardregisterlistenladebefehls in der (i-2)-ten Schleife; Laden eines i-ten Elements des Quellenvektors (ein auszulesender Vektor) in ein Gleitkommaregister mittels eines Gleitkommaregistervorladebefehls in der (1-1)-ten Schleife; und Speichern der Daten im Gleitkommaregister - das die Daten im Standardregister als seine Hauptspeicheradresse verwendet - in einem Element des Zielvektors, der durch das i-te Element des Listenvektors spezifiziert wird, mittels des Gleitkommaregisterlistenspeicherbefehls in der (i+1)-ten Schleife. Diese Serie von Operationen erhöht den Abstand in der Befehlskette zwischen den Listenvektorlade-, Quellenvektorlade- und Zielvektorspeicheroperationen für eine Elementnummer, wodurch die Leistungsbeeinträchtigung aufgrund einer verlängerten Datenlesezeitspanne beseitigt wird und somit die Operationsgeschwindigkeit erhöht wird. In der Partikelschiebertyp-Berechnung wird das i-te Element mittels der folgenden Schritte verarbeitet: Laden eines i-ten Elements eines Listenvektors in ein Standardregister mittels des Standardregisterlistenladebefehls in der (i-2)-ten Schleife; Laden eines Elements eines ersten Vektors (d. h. des Vektors A der Gleichung (3), der vom i-ten Element des Listenvektors spezifiziert wird, in ein erstes Gleitkommaregister mittels des Gleitkommaregisterlistenladebefehls in der (i-1)-ten Schleife; Laden eines i-ten Elements eines zweiten Vektors (d. h. des Vektors B der Gleichung (3)) in ein zweites Gleitkommaregister mittels des Gleitkommaregistervorladebefehls; Addieren der Werte der zwei Gleitkommaregister (d. h. Addieren des Elements des ersten Vektors, das durch das i-te Element des Listenvektors spezifiziert wird, und des i-ten Elements des zweiten Vektors) mittels des Gleitkommaadditi onsbefehls in der i-ten Schleife; und Speichern des Ergebnisses der Addition im Element des ersten Vektors, der durch das i-te Element des Listenvektors spezifiziert wird, wobei das Element den Wert des Standardregisters als seine Hauptspeicheradresse verwendet. Diese Serie von Operationen erhöht die Abstände in der Befehlskette zwischen den verschiedenen Operationen für eine Elementnummer, d. h. zwischen dem Listenvektorladevorgang, dem ersten Vektorladevorgang, dem zweiten Vektorladevorgang (die ersten und zweiten Vektorladevorgänge werden in einer Schleife ausgeführt, da sie nicht miteinander in Beziehung stehen), der Addition der ersten und zweiten Vektorelemente und dem Speichern des Additionsergebnisses im ersten Vektor, wodurch die Leistungsbeeinträchtigung aufgrund der verlängerten Datenlesezeitspanne und der Berechnungsausführungszeitspanne beseitigt wird und somit die Operationsgeschwindigkeit erhöht wird.
  • Mit der oben genauer beschriebenen Erfindung wird der aktuelle Gleitkommafensterzeiger geändert, um eine Gleitkommaregisternummer in einem Befehl in eine andere physikalische Gleitkommaregisternummer umzusetzen, wobei der aktuelle Standardfensterzeiger geändert wird, um eine Gleitkommaregisternummer oder eine Standardregisternummer im Befehl in eine andere physikalische Standardregisternummer umzusetzen, wodurch es möglich wird, auf eine größere Anzahl von physikalischen Registern zuzugreifen, als von den Befehlen adressiert werden kann, ohne die Architektur des Datenprozessors zu verändern. Dieses Verfahren verhindert eine Leistungsbeeinträchtigung, die ansonsten durch das Anhalten der Befehlsausführung aufgrund eines verlängerten Datenlesevorgangs oder aufgrund von Registerkonflikten verursacht würde. Dies stellt wiederum eine schnellere Ausführung der Programme sicher.
  • Insbesondere bei einer Vektorberechnung in wissenschaftlichen und technischen Berechnungen, die hauptsächlich die Ausführung der Schleife der Befehlssequenz wiederholt, wird jeder Schleife ein anderes Fenster zugewiesen, wobei das i-te Element verarbeitet wird durch Laden eines i-ten Elements des spezifizierten Operandenvektors mittels des Gleitkommavorladebefehls während der (i-1)-ten Schleife, Ausführen der Berechnung in der i-ten Schleife und Speichern des Ergebnisspeichervektors mittels des Gleitkommanachspeicherbefehls, der in der (i+1)-ten Schleife. Diese Verarbeitung erhöht den Abstand in der Befehlssequenz zwischen den Lade-, Berechnungs- und Speicherbefehlen für einen Datensatz, wodurch die Leistungsbeeinträchtigung aufgrund einer verlängerten Datenlesezeitspanne und einer Berechnungsausführungszeitspanne beseitigt wird und die Operationsgeschwindigkeit erhöht wird.
  • Ferner wird in Listenvektorberechnungen in wissenschaftlichen und technischen Berechnungen, die hauptsächlich die Ausführung der Schleife einer Befehlssequenz wiederholen, wie z. B. bei einer Quellenindextyp-Berechnung, einer Zielindextyp-Berechnung und einer Partikelschiebertyp-Berechnung, jeder Schleife ein anderes Fenster zugewiesen, so daß die Leistungsbeeinträchtigung aufgrund einer verlängerten Datenlesezeitspanne beseitigt werden kann und die Operation beschleunigt werden kann.

Claims (12)

1. Datenprozessor mit einer Haputspeichervorrichtung (30) zum Abspeichern von Befehlen und Daten und einer Befehlsverarbeitungsvorrichtung (10) zum Verarbeiten von Befehlen unter Verwendung von Hauptspeicherdaten in der Hauptspeichervorrichtung, wobei der Datenprozessor umfaßt:
mehrere physikalische Register (105), deren Anzahl größer ist als durch Befehle adressiert werden können, wobei die mehreren physikalischen Register in mehrere partielle Gruppen unterteilt sind, die im folgenden Fenster genannt werden, und jedes der mehreren physikalischen Register durch eine physikalische Registernummer spezifiziert wird, die durch eine Kombination der Nummer des Fensters und einer Registernummer, die im folgenden eine logische Registernummer genannt wird, in einem Befehl bestimmt wird,
wenigstens eine Fensterzeigerspeichervorrichtung (110, 113) zum Abspeichern eines Fensterzeigers, der die Fensternummer anzeigt,
eine Konvertervorrichtung (112) zum Konvertieren der logischen Registernummer in die physikalische Registernummer unter Verwendung des Fensterzeigers,
einen Fensterzeigeränderungsbefehl zum Ändern des Fensterzeigers, der in der Fensterzeigerspeichervorrichtung abgespeichert ist,
einen Registervorladebefehl zum Konvertieren der logischen Registernummer in die physikalische Registernummer und zum Abspeichern von Daten aus der Hauptspeichervorrichtung in das physikalische Register, das durch die konvertierte physikalische Registernummer spezifiziert worden ist, und
einen Registernachspeicherbefehl zum Konvertieren der logischen Registernummer in die physikalische Registernummer und zum Abspeichern von Daten in die Hauptspeichervorrichtung aus dem physikalischen Register, das durch die konvertierte physikalische Registernummer spezifiziert worden ist,
wobei das Konvertieren der logischen Registernummer in die physikalische Registernummer unter Verwendung eines Fensterzeigers mit einem Wert erfolgt, der sich von dem des Fensterzeigers unterscheidet, der in der Fensterzeigerspeichervorrichtung abgespeichert worden ist, wobei der unterschiedliche Wert aus dem Fensterspeicher bestimmt wird, der in der Fensterzeigerspeichervorrichtung abgespeichert worden ist.
2. Datenprozessor nach Anspruch 1, bei dem die zwei Fensterzeigerspeichervorrichtungen (110, 113) vorgesehen sind, wobei eine der beiden Fensterzeigerspeichervorrichtungen nur von dem Registervorladebefehl verwendet wird und die andere der zwei Fensterzeigerspeichervorrichtungen nur von anderen Befehlen als dem Registervorladebefehl verwendet wird, wobei der Inhalt der zwei Fensterzeigerspeichervorrichtungen zur gleichen Zeit durch den Fensterzeigeränderungsbefehl geändert werden.
3. Datenprozessor nach Anspruch 1, bei dem der unterschiedliche Wert, der von dem Registervorladebefehl verwendet werden soll, ein Wert ist, der sich durch Addieren einer vorgegebenen ganzen Zahl zu dem Wert, der in der Fensterzeigerspeichervorrichtung gespeichert ist, ergibt.
4. Datenprozessor nach Anspruch 1, der außerdem umfaßt: einen Cache-Speicher (108) zum temporären Abspeichern eines Teils des Inhalts der Hauptspeichervorrichtung (30), wobei beim Lesen der Hauptspeicherdaten durch den Registervorladebefehl der Inhalt des Cache- Speichers nicht geändert wird, wenn die Hauptspeicherdaten nicht in dem Cache-Speicher gespeichert worden sind, und beim Abspeichern von Daten in der Hauptspeichervorrichtung durch den Registernachspeicherbefehl der Inhalt des Cache-Speichers nicht geändert wird, wenn die Hauptspeicherdaten bei der entsprechenden Adresse nicht in dem Cache-Speicher abgespeichert worden sind.
5. Datenprozessor nach Anspruch 1, bei dem beim Konvertieren der logischen Registernummer in die physikalische Registernummer
wenigstens eine Überlappregisternummer zwischen einer Gruppe aus physikalischen Registernummern, die aus der logischen Registernummer durch einen der Fensterzeiger konvertierbar sind, und einer Gruppe von physikalischen Registernummern, die aus der logischen Registernummer durch einen anderen der Fensterzeiger mit einem um 1 anderen Wert gegenüber dem einen Fensterzeiger konvertierbar sind, vorgesehen ist,
wenigstens eine der logischen Registernummern in dieselbe physikalische Registernummer, die eine globale Registernummer genannt wird, unabhängig von dem Wert des Fensterzeigers konvertiert wird, und
jede der physikalischen Registernummern außer der Überlappregisternummer und der globalen Registernummer unter Verwendung eines entsprechenden unter den Fensterzeigern hergeleitet wird.
6. Datenprozessor nach Anspruch 1, bei dem die logischen und die physikalischen Register, die durch den Befehl adressiert werden, floating-point-Register zum Abspeichern von floating-point-Zahlen sind.
7. Datenprozessor nach Anspruch 6, bei dem der Datenprozessor ein Vektordatenprozessor ist und außerdem ein Fensterzeigergültigkeitsregister (111) zum Anzeigen, daß der Fensterzeiger, der in der Fensterzeigerspeichervorrichtung abgespeichert worden ist, gültig ist, umfaßt.
8. Datenprozessor nach Anspruch 7, der umfaßt:
mehrere physikalische Standardregister (103), deren Anzahl größer als die der durch Befehle adressierbaren floating-point-Register und größer als die der durch Befehle adressierbaren Standardregister ist,
eine zweite Fensterzeigerspeichervorrichtung (113) zum Abspeichern eines zweiten Fensterzeigers, der zum Konvertieren der logischen Registernummer oder einer Standardregisternummer als eine logische Standardregisternummer in einem Befehl verwendet werden soll,
eine zweite Konvertierungsvorrichtung (114) zum Konvertieren der logische Registernummer oder einer logische Standardregisternummer in die physikalische Stan dardregisternummer unter Verwendung des zweiten Fensterzeigers und
das Fensterzeigergültigkeitsregister (111) zum Abspeichern eines Wertes, der darstellt, daß der Fensterzeiger gültig ist und der zweite Fensterzeiger gültig ist.
9. Datenprozessor nach Anspruch 8, bei dem die Befehle umfassen:
einen zweiten Fensterzeigeränderungsbefehl zum Ändern der zweiten Fensterzeigers,
einen floating-point-Registervorladebefehl zum Lesen von Vektordaten aus der Hauptspeichervorrichtung bei einer Hauptspeicheradresse, die in dem physikalischen Standardregister abgespeichert worden ist, das durch Konvertieren der logischen Standardregisternummer in die physikalische Standardregisternummer unter Verwendung des zweiten Fensterzeigers spezifiziert worden ist, wobei die logische Registernummer in die physikalische Registernummer unter Verwendung des Fensterzeigers mit einem gegenüber dem Fensterzeiger, der in der Fensterzeigerspeichervorrichtung (110) abgespeichert worden ist, unterschiedlichen Wert erfolgt, wobei der unterschiedliche Wert aus dem Fensterzeiger hergeleitet wird, der in der Fensterzeigerspeichervorrichtung abgespeichert worden ist, und die Vektordaten in dem physikalischen Register abgespeichert werden, das durch die konvertierte physikalische Registernummer spezifiziert worden ist, und
einen floating-point-Registernachladebefehl zum Lesen von Vektordaten aus dem physikalischen Register, das durch die physikalische Registernummer spezifiziert worden ist, die aus der logischen Registernummer unter Verwendung des Fensterzeigers mit einem gegenüber dem Fensterzeiger, der in der Fensterzeigerspeichervorrichtung abgespeichert worden ist, unterschiedlichen Wert konvertiert worden ist, wobei der unterschiedliche Wert aus dem Fensterzeiger bestimmt wird, der in der Fensterzeigerspeichervorrichtung abgespeichert worden ist, und zum Abspeichern der Vektordaten in die Hauptspeichervorrichtung bei einer Hauptspeicheradresse, die in dem physikalischen Standardregister abgespeichert worden ist, das durch Konvertieren der logischen Standardregisternummer in die physikalische Standardregisternummer unter Verwendung des zweiten Fensterzeigers spezifiziert worden ist.
10. Datenprozessor nach Anspruch 9, bei dem die Befehle außerdem umfassen:
einen floating-point-Registerlistenladebefehl zum Lesen von Vektordaten aus der Hauptspeichervorrichtung bei einer Hauptspeicheradresse, die in dem physikalischen Standardregister, das durch Konvertieren der logischen Standardregisternummer unter Verwendung eines zweiten Fensterzeigers mit einem gegenüber dem zweiten Fensterzeiger, der in der zweiten Fensterzeigerspeichervorrichtung abgespeichert worden ist, unterschiedlichen Wert spezifiziert worden ist, abgespeichert worden ist, wobei der unterschiedliche Wert aus dem zweiten Fensterzeiger bestimmt wird, der in der zweiten Fensterzeigerspeichervorrichtung abgespeichert worden ist, und zum Abspeichern der Vektordaten in das physikalische Register, das durch Konvertieren der logischen Registernummer unter Verwendung des Fensterzeigers mit gegenüber dem Fensterzeiger, der in der Fensterzeigerspeichervorrichtung abgespeichert worden ist, unterschiedlichen Wert spezifiziert worden ist,
wobei der unterschiedliche Wert aus dem Fensterzeiger, der in der Fensterzeigerspeichervorrichtung abgespeichert worden ist, hergeleitet wird,
einen allgemeinen Registerlistenladebefehl zum Lesen von Vektordaten aus der Hauptspeichervorrichtung bei einer Hauptspeicheradresse, die aus Informationen hergeleitet wird, die in dem physikalischen Standardregister abgespeichert worden ist, das durch Konvertieren einer ersten logischen Standardregisternummer unter Verwendung des zweiten Fensterzeigers spezifiziert worden ist, und zum Abspeichern der Vektordaten in das physikalische Standardregister, das durch Konvertieren einer zweiten logischen Standardregisternummer unter Verwendung eines zweiten Fensterzeigers mit einem gegenüber dem zweiten Fensterzeiger, der in der zweiten Fensterzeigerspeichervorrichtung abgespeichert worden ist, unterschiedlichen Wert spezifiziert worden ist, wobei der unterschiedliche Wert aus dem zweiten Fensterzeiger bestimmt wird, der in der zweiten Fensterzeigerspeichervorrichtung abgespeichert worden ist, und
einen floating-point-Registerlistenspeicherbefehl zum Lesen von Vektordaten aus dem physikalischen Register, das durch Konvertieren der logischen Registernummer unter Verwendung des Fensterzeigers mit einem gegenüber dem Fensterzeiger, der in der Fensterzeigerspeichervorrichtung abgespeichert worden ist, unterschiedlichen Wert spezifiziert worden ist, wobei der unterschiedliche Wert aus dem Fensterzeiger bestimmt wird, der in der Fensterzeigerspeichervorrichtung abgespeichert worden ist, und zum Abspeichern der Vektordaten in der Hauptspeichervorrichtung bei einer Hauptspeicheradresse, die in dem physikalischen Standardregister, das durch Konvertieren der logischen Standardre gisternummer unter Verwendung eines zweiten Fensterzeigers mit einem gegenüber dem zweiten Fensterzeiger, der in der zweiten Fensterzeigerspeichervorrichtung abgespeichert worden ist, unterschiedlichen Wert spezifiziert worden ist, wobei der unterschiedliche Wert aus dem zweiten Fensterzeiger bestimmt wird, der in der Fensterzeigerspeichervorrichtung abgespeichert worden ist.
11. Vektorprozessor nach Anspruch 9, bei dem die Fensterzeigerspeichervorrichtung identisch mit der zweiten Fensterzeigerspeichervorrichtung ist.
12. Datenprozessor nach Anspruch 1, der außerdem eine Fensterzeigergültigkeitsanzeigevorrichtung (111) zum Anzeigen, daß der Fensterzeiger, der in der Fensterzeigerspeichervorrichtung abgespeichert worden ist, gültig ist, umfaßt.
DE69229771T 1991-11-20 1992-11-19 Datenverarbeitungsverfahren und -vorrichtung Expired - Lifetime DE69229771T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP30447691A JP3317985B2 (ja) 1991-11-20 1991-11-20 擬似ベクトルプロセッサ
JP4076608A JP2875426B2 (ja) 1992-03-31 1992-03-31 擬似ベクトルプロセッサ

Publications (2)

Publication Number Publication Date
DE69229771D1 DE69229771D1 (de) 1999-09-16
DE69229771T2 true DE69229771T2 (de) 1999-12-23

Family

ID=26417746

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69229771T Expired - Lifetime DE69229771T2 (de) 1991-11-20 1992-11-19 Datenverarbeitungsverfahren und -vorrichtung

Country Status (3)

Country Link
US (1) US5438669A (de)
EP (1) EP0543366B1 (de)
DE (1) DE69229771T2 (de)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5729723A (en) * 1992-11-16 1998-03-17 Hitachi, Ltd. Data processing unit
JP3097981B2 (ja) * 1993-07-16 2000-10-10 株式会社日立製作所 データ処理装置
JP2725546B2 (ja) * 1992-12-07 1998-03-11 株式会社日立製作所 デ−タ処理装置
JP3676411B2 (ja) * 1994-01-21 2005-07-27 サン・マイクロシステムズ・インコーポレイテッド レジスタファイル装置及びレジスタファイルアクセス方法
US5812823A (en) * 1996-01-02 1998-09-22 International Business Machines Corporation Method and system for performing an emulation context save and restore that is transparent to the operating system
US5838984A (en) * 1996-08-19 1998-11-17 Samsung Electronics Co., Ltd. Single-instruction-multiple-data processing using multiple banks of vector registers
US5854933A (en) * 1996-08-20 1998-12-29 Intel Corporation Method for optimizing a computer program by moving certain load and store instructions out of a loop
GB2317464A (en) * 1996-09-23 1998-03-25 Advanced Risc Mach Ltd Register addressing in a data processing apparatus
FR2761495B1 (fr) * 1997-03-28 1999-06-11 Thomson Csf Procede et dispositif de compactage de boucles de microprogrammes
US6247173B1 (en) 1997-09-24 2001-06-12 Hewlett-Packard Company Computer compiler optimizer for reducing computer resource consumption during dependence analysis after loop unrolling
EP0918290A1 (de) * 1997-11-19 1999-05-26 Interuniversitair Micro-Elektronica Centrum Vzw Verfahren zur Übertragung von Datenstrukturen zu und von Vektorregistern eines Prozessors
US6275749B1 (en) * 1998-12-22 2001-08-14 Philips Electronics North America Corporation Interrupt-controlled thread processing
US7571435B2 (en) * 2003-09-29 2009-08-04 International Business Machines Corporation Method and structure for producing high performance linear algebra routines using preloading of floating point registers
JP2006004042A (ja) * 2004-06-16 2006-01-05 Renesas Technology Corp データ処理装置
US20100306300A1 (en) * 2009-05-29 2010-12-02 Microsoft Corporation Sparse Matrix Padding
US8352528B2 (en) * 2009-09-20 2013-01-08 Mimar Tibet Apparatus for efficient DCT calculations in a SIMD programmable processor
US20110289485A1 (en) * 2010-05-21 2011-11-24 International Business Machines Corporation Software Trace Collection and Analysis Utilizing Direct Interthread Communication On A Network On Chip
CN103513957B (zh) * 2012-06-27 2017-07-11 上海芯豪微电子有限公司 高性能缓存方法

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4376297A (en) * 1978-04-10 1983-03-08 Signetics Corporation Virtual memory addressing device
KR860001434B1 (ko) * 1980-11-21 1986-09-24 후지쑤 가부시끼가이샤 데이타 처리시 스템
JPS57166649A (en) * 1981-03-30 1982-10-14 Ibm Data processing system
US4574349A (en) * 1981-03-30 1986-03-04 International Business Machines Corp. Apparatus for addressing a larger number of instruction addressable central processor registers than can be identified by a program instruction
JPS58102381A (ja) * 1981-12-15 1983-06-17 Nec Corp バツフアメモリ
JPS58114274A (ja) * 1981-12-28 1983-07-07 Hitachi Ltd デ−タ処理装置
US4569018A (en) * 1982-11-15 1986-02-04 Data General Corp. Digital data processing system having dual-purpose scratchpad and address translation memory
US4888682A (en) * 1983-09-09 1989-12-19 International Business Machines Corp. Parallel vector processor using multiple dedicated processors and vector registers divided into smaller registers
JPS60134974A (ja) * 1983-12-23 1985-07-18 Hitachi Ltd ベクトル処理装置
JPS60136870A (ja) * 1983-12-26 1985-07-20 Hitachi Ltd ベクトル処理装置
JPS61173345A (ja) * 1985-01-29 1986-08-05 Hitachi Ltd 計算機システム
JPS6298434A (ja) * 1985-10-25 1987-05-07 Hitachi Ltd デ−タ処理システム
US5036453A (en) * 1985-12-12 1991-07-30 Texas Instruments Incorporated Master/slave sequencing processor
JP2545789B2 (ja) * 1986-04-14 1996-10-23 株式会社日立製作所 情報処理装置
JPS62242349A (ja) * 1986-04-14 1987-10-22 Matsushita Electric Works Ltd ピングリツドアレイ
JPS63131230A (ja) * 1986-11-21 1988-06-03 Hitachi Ltd 情報処理装置
EP0348030B1 (de) * 1988-06-23 1996-04-10 International Business Machines Corporation Ergebnisverfügbarkeit einer Rechensequenz
GB2228116B (en) * 1989-02-10 1993-05-26 Intel Corp Pipelined floating-point load instruction for microprocessor
US5179682A (en) * 1990-05-15 1993-01-12 Sun Microsystems, Inc. Method and apparatus for improved current window cache with switchable address in, out, and local cache registers

Also Published As

Publication number Publication date
DE69229771D1 (de) 1999-09-16
EP0543366B1 (de) 1999-08-11
EP0543366A2 (de) 1993-05-26
EP0543366A3 (de) 1994-02-16
US5438669A (en) 1995-08-01

Similar Documents

Publication Publication Date Title
DE69229771T2 (de) Datenverarbeitungsverfahren und -vorrichtung
DE68928677T2 (de) Verfahren und digitaler Computer zur Vorverarbeitung mehrerer Befehle
DE3750935T2 (de) Verfahren und System zum Erleichtern der Befehlsausführung in einem digitalen Rechner.
DE3786594T2 (de) Speicherverwaltungseinheit für Digitalsignalprozessor.
DE3687724T2 (de) Digitalprozessorsteuerung.
DE2704842C2 (de) Im Pipeline-Betrieb arbeitende Datenverarbeitungseinrichtung
DE3688824T2 (de) Datenverarbeitungssystem.
DE3151745C2 (de)
DE19545179A1 (de) Vektorspeicheroperationen
DE69321929T2 (de) Verfahren und System um einen unabhängige Zugriff auf Zwischenspeicherpuffern in einem superskalaren Prozessorsystem zu gewährleisten.
DE69418146T2 (de) Temporärer Registersatz für einen superpipeline-superskalaren Prozessor
DE2230102A1 (de) Rechenwerk fuer variable wortlaengen
DE2630323B2 (de) Datenspeichereinrichtung mit einem Hauptspeicher, einem Hilfsspeicher und einer Vorausschaulogik
DE69130757T2 (de) Ausführungsvorrichtung für bedingte Verzweigungsbefehle
DE3338345A1 (de) Vektor prozessor
DE69429762T2 (de) Verfahren und Vorrichtung zur Befehlsteuerung in einem Pipelineprozessor
DE3855524T2 (de) Arithmetik-Parallelverarbeitungseinheit und zugehöriger Kompilator
DE3856139T2 (de) Mikroprozessor
DE69231237T2 (de) Datenverarbeitungsvorrichtung
DE3900246C2 (de)
DE3688806T2 (de) Instruktionsprozessor.
DE69033846T2 (de) Mikroprozessor zur Bildverarbeitung
DE2625113C2 (de) Speicherschutzeinrichtung
DE69229424T2 (de) Adressengeneration in einer Datenverarbeitungseinheit
DE68903280T2 (de) Vektorschlange in computern mit vektorregister.

Legal Events

Date Code Title Description
8364 No opposition during term of opposition