JP2875426B2 - Pseudo vector processor - Google Patents

Pseudo vector processor

Info

Publication number
JP2875426B2
JP2875426B2 JP4076608A JP7660892A JP2875426B2 JP 2875426 B2 JP2875426 B2 JP 2875426B2 JP 4076608 A JP4076608 A JP 4076608A JP 7660892 A JP7660892 A JP 7660892A JP 2875426 B2 JP2875426 B2 JP 2875426B2
Authority
JP
Japan
Prior art keywords
register
instruction
physical
general
floating
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
JP4076608A
Other languages
Japanese (ja)
Other versions
JPH05282352A (en
Inventor
喜三郎 中澤
宏 中村
弘充 位守
英夫 和田
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
Imori Hiromitsu
Original Assignee
Hitachi Ltd
Imori Hiromitsu
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Ltd, Imori Hiromitsu filed Critical Hitachi Ltd
Priority to JP4076608A priority Critical patent/JP2875426B2/en
Priority to US07/977,298 priority patent/US5438669A/en
Priority to DE69229771T priority patent/DE69229771T2/en
Priority to EP92119710A priority patent/EP0543366B1/en
Publication of JPH05282352A publication Critical patent/JPH05282352A/en
Application granted granted Critical
Publication of JP2875426B2 publication Critical patent/JP2875426B2/en
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Description

【発明の詳細な説明】DETAILED DESCRIPTION OF THE INVENTION

【0001】[0001]

【産業上の利用分野】 本発明はデ−タ処理装置に関
し、さらに具体的には命令によってアドレス可能なレジ
スタの数より多いレジスタをデ−タ処理装置がアクセス
可能とする技術に関する。特に、このようにすることに
よって、キャッシュがあまり有効でない大規模なデ−タ
を連続的に処理するいわゆるベクトル処理のうち、主と
して疎行列の計算に用いられるリストベクトル演算に際
して、主記憶からの転送のための性能低下がほとんど生
じないようにし、効率のよい擬似ベクトル処理を通常の
デ−タ処理装置で実現可能とする技術に関する。
BACKGROUND OF THE INVENTION 1. Field of the Invention The present invention relates to a data processing apparatus, and more particularly, to a technique for enabling a data processing apparatus to access more registers than the number of registers addressable by an instruction. In particular, in this manner, in the so-called vector processing for continuously processing large-scale data for which the cache is not very effective, the transfer from the main memory is mainly used for the list vector operation mainly used for calculating the sparse matrix. The present invention relates to a technique which makes it possible to realize efficient pseudo vector processing with an ordinary data processing device by preventing almost any performance degradation from occurring.

【0002】[0002]

【従来の技術】 (従来技術1)従来、命令によってア
ドレス可能なレジスタの数より多いレジスタをデ−タ処
理装置がアクセス可能とする技術としては、特開昭57
−166649号に記載があり、その方式によると、ま
ず、プログラムによってアドレス可能な汎用レジスタの
数よりも多いハ−ドウエアレジスタと称するレジスタ群
を設け、異なった主記憶アドレスから同一の汎用レジス
タに対する複数のロ−ド命令があったら、該ロ−ド命令
の数だけハ−ドウエアレジスタに保持する(すなわち、
プログラムによってアドレス可能な汎用レジスタの数が
16である場合、ハ−ドウエアレジスタを各汎用レジス
タ当たり16、つまり、合計256用意し、たとえば、
汎用レジスタ0にはハ−ドウエアレジスタ0から15を
割り当てる。汎用レジスタ0に対して16個の異なった
主記憶アドレスを指定したロ−ド命令が実行された場合
は、該16個のロ−ド命令からのデ−タをハ−ドウエア
レジスタ0からハ−ドウエアレジスタ15までの中に保
持する)。そして、過去に実行されたロ−ド命令の主記
憶アドレスとその時ロ−ドされたデ−タが格納されてい
るハ−ドウエアレジスタ番号を登録しておく記憶機構を
設け、プログラムで発行されたロ−ド命令の主記憶アド
レスが該記憶機構に登録されている主記憶アドレスと一
致したら、主記憶からデ−タを読まずに、対応するハ−
ドウエアレジスタからデ−タを読みだす。この方式によ
り、主記憶参照回数が低減でき、また、命令間の参照レ
ジスタのぶつかりによる性能低下を防ぐことができる。
2. Description of the Related Art Conventionally, as a technique for enabling a data processing device to access more registers than the number of registers addressable by an instruction, Japanese Patent Laid-Open No.
According to this method, first, a register group called a hardware register is provided which is larger than the number of general-purpose registers addressable by a program, and a plurality of registers for the same general-purpose register are provided from different main memory addresses. Are stored in the hardware register by the number of the load instructions (that is, the number of the load instructions).
If the number of general-purpose registers that can be addressed by the program is 16, hardware registers are prepared for each general-purpose register, ie, a total of 256 hardware registers.
Hardware registers 0 to 15 are assigned to general-purpose register 0. When a load instruction specifying 16 different main storage addresses is executed for the general-purpose register 0, data from the 16 load instructions is transferred from the hardware register 0 to the hardware register 0. The data is stored in the hardware register 15). A storage mechanism is provided for registering a main memory address of a previously executed load instruction and a hardware register number in which data loaded at that time is stored. If the main memory address of the load instruction matches the main memory address registered in the storage mechanism, the data is not read from the main memory, and the corresponding hardware is read.
Reads data from the hardware register. According to this method, the number of times of referring to the main memory can be reduced, and performance degradation due to collision of the reference register between instructions can be prevented.

【0003】(従来技術2)従来、命令によってアドレ
ス可能なレジスタの数より多いレジスタをデ−タ処理装
置がアクセス可能とする技術としては、J.L.Hen
nesy and D.A.Patterson ”C
omputerArchitecture : A Q
uantitativeApproach”, Mor
gan Kaufmann Publish−ers,
Inc.(1990)に記載があり、その方式による
と、まず、プログラムによってアドレス可能なレジスタ
の数より多い物理レジスタと称するレジスタを設け、該
物理レジスタを複数個のウィンドウと呼ばれる部分に分
ける。すなわち、各ウィンドウは複数個の物理レジスタ
から成る。たとえば、プログラムによってレジスタが番
号1からnまで番号づけられるとし、物理レジスタがn
*m個、すなわち、番号1からn*mまで設けられたと
する。ウィンドウをm個、すなわち、番号1からmまで
設けるとすれば、ウィンドウ1は物理レジスタ1から
n、ウィンドウ2は物理レジスタn+1から2nという
ように割り当てることができる。実際には、全ウィンド
ウ共通の物理レジスタや、隣合うウィンドウ共通の物理
レジスタなどを設けるのが通例であるが、簡単のため、
前記の例を示した。各ウィンドウは1つのプログラムが
使用するレジスタを持つ。すなわち、あるプログラムで
アドレス可能なレジスタを参照することは、実際には、
あるウィンドウに属する物理レジスタを参照することに
なる。たとえば、前記の例では、あるプログラムにウィ
ンドウ2が割当てられていたとしたら、該プログラムで
レジスタkを指定したら、参照される物理レジスタは物
理レジスタn+kになる。
(Prior Art 2) Conventionally, as a technique for enabling a data processing device to access more registers than the number of registers addressable by an instruction, J. L. Hen
nesy and D.S. A. Patternson "C
outputArchitecture: A Q
"antiativeApproach", Mor
gan Kaufmann Publish-ers,
Inc. (1990). According to this method, first, a register called a physical register that is larger than the number of registers addressable by a program is provided, and the physical register is divided into a plurality of windows. That is, each window is composed of a plurality of physical registers. For example, assume that registers are numbered from 1 to n by a program, and physical registers are n
* M, that is, numbers 1 to n * m are provided. Assuming that there are m windows, that is, numbers 1 to m, window 1 can be assigned to physical registers 1 to n, window 2 can be assigned to physical registers n + 1 to 2n, and so on. In practice, it is customary to provide a physical register common to all windows and a common physical register adjacent to windows, but for simplicity,
The above example was shown. Each window has registers used by one program. That is, referring to a register that can be addressed by a program is actually
It refers to a physical register belonging to a certain window. For example, in the above example, if window 2 is assigned to a certain program, if register k is specified in the program, the physical register to be referred to is physical register n + k.

【0004】このウィンドウは以下のように使う。仮
に、あるプログラムにウィンドウjが割当てられていた
場合、該プログラムが別のプログラムを呼んだ(cal
lした)場合、呼ばれたプログラムには、ウィンドウj
+1が割当てられる。また、あるプログラムにウィンド
ウjが割当てられていた場合、該プログラムから該プロ
グラムを呼んだプログラムに戻った(returnし
た)場合、戻り先のプログラムには、ウィンドウj−1
が割当てられる。このように使うことによって、以下の
効果がある。プログラムによってアドレス可能なレジス
タの数だけのレジスタしか持たないシステムでは、前記
のようなプログラムの呼びが発生するたびに、該呼び発
生時点の情報保存のために、レジスタに格納されていた
デ−タを主記憶に格納しなければならず、プログラムの
戻りが発生するたびに、プログラムの再開のために、主
記憶に格納されていたデ−タをレジスタに書き戻さなく
てはならない。前記のウィンドウの機構を持つシステム
では、異なるウィンドウが割当てられているプログラム
は異なる物理レジスタを参照しているので、前記のレジ
スタからの主記憶への格納、主記憶からレジスタへの書
き戻しの操作が不要になり、処理が高速化される。
This window is used as follows. If window j is assigned to a certain program, the program calls another program (cal
l), the called program contains a window j
+1 is assigned. Further, when a window j is allocated to a certain program, when the program returns (returns) to the program that called the program, the return destination program includes a window j-1.
Is assigned. By using in this way, the following effects are obtained. In a system having only as many registers as the number of registers that can be addressed by a program, each time a program call as described above occurs, the data stored in the register is used to save information at the time of the call. Must be stored in the main memory, and every time the program returns, the data stored in the main memory must be written back to the register in order to restart the program. In a system having the above window mechanism, since a program to which a different window is assigned refers to a different physical register, an operation of storing data from the above-mentioned register to the main memory and writing back from the main memory to the register is performed. Becomes unnecessary, and the processing speed is increased.

【0005】ただし、該ウィンドウの機構を持つシステ
ムでは、「最大のウィンドウ番号のプログラムからプロ
グラムの呼びが発された場合、ウィンドウオ−バフロ−
の割込みを起こし、最小のウィンドウ番号のプログラム
からプログラムの戻りが発された場合、ウィンドウアン
ダフロ−の割込みを起こす」という制御が必要になる。
[0005] However, in a system having the window mechanism, when a program call is issued from the program having the largest window number, the window overflow is performed.
When the program returns from the program with the smallest window number, a window underflow interrupt is caused. "

【0006】[0006]

【発明が解決しようとする課題】本発明は命令によって
アドレス可能なレジスタの数より多いレジスタをデ−タ
処理装置がアクセス可能とする技術に関するものである
が、特許請求の範囲の請求項1に記した第1レジスタと
して浮動小数点数が格納される浮動小数点レジスタ、第
2レジスタとして固定小数点数、論理デ−タ、2進整数
などが格納される汎用レジスタを例にとった実施例を述
べる。
SUMMARY OF THE INVENTION The present invention relates to a technique for enabling a data processing device to access more registers than the number of registers addressable by an instruction. An example will be described in which a floating-point register storing a floating-point number is described as the first register, and a general-purpose register storing a fixed-point number, logical data, binary integer, and the like is described as the second register.

【0007】科学技術計算において重要な演算にリスト
ベクトル演算がある。それは、以下の式で表され、主と
して疎行列の計算に用いられる。
An important operation in scientific and technical calculations is a list vector operation. It is expressed by the following equation and is mainly used for calculating a sparse matrix.

【0008】 ソ−スインデクス型演算:A(i)=B(Li(i)) i=1,N (1) タ−ゲットインデクス型演算:A(Li(i))=B(i) i=1,N (2) 粒子推進型演算:A(Li(i))=A(Li(i))@B(i) i=1,N (3) ここで、Liをリストベクトルと呼ぶ。(1)では、
A、Liは要素数Nのベクトル、(2)では、B、Li
は要素数Nのベクトル、(3)では、B,Liは要素数
Nのベクトルである。(3)で@は加減乗除等の演算を
示す。
Source index type operation: A (i) = B (Li (i)) i = 1, N (1) Target index type operation: A (Li (i)) = B (i) i = 1, N (2) Particle propulsion type operation: A (Li (i)) = A (Li (i)) @ B (i) i = 1, N (3) Here, Li is called a list vector. In (1),
A and Li are vectors of the number of elements N, and in (2), B and Li
Is a vector of the number of elements N, and in (3), B and Li are vectors of the number of elements N. In (3), @ indicates an operation such as addition, subtraction, multiplication and division.

【0009】式(1)からわかる通り、ソ−スインデク
ス型演算は、リストベクトルのi番目の要素を要素番号
とするベクトルBの要素が、ベクトルAのi番目の要素
に格納されるものである。式(2)からわかる通り、タ
−ゲットインデクス型演算は、ベクトルBのi番目の要
素が、リストベクトルのi番目の要素を要素番号とする
ベクトルAの要素に格納されるものである。式(3)か
らわかる通り、粒子推進型演算は、リストベクトルのi
番目の要素を要素番号とするベクトルAの要素が、ベク
トルBのi番目の要素と演算され、演算結果がリストベ
クトルのi番目の要素を要素番号とするベクトルAの要
素に格納される。すなわち、式(1)、(2)、(3)
は、あるベクトルの要素番号を別のベクトル(リストベ
クトル)の要素とする演算である。ここで、式(3)は
疎行列の計算の中でも、特に粒子推進の分野によく利用
されるので、粒子推進型演算と呼ぶことにする。以下、
本特許では、式(3)の演算(すなわち、@)を加算と
する例を述べる。
As can be seen from equation (1), the source index type operation is that the element of vector B having the element number of the i-th element of the list vector is stored in the i-th element of vector A. is there. As can be seen from equation (2), in the target index type operation, the ith element of the vector B is stored in the element of the vector A whose element number is the ith element of the list vector. As can be seen from equation (3), the particle propulsion type operation is performed by
The element of the vector A whose element number is the element of the vector B is operated on the ith element of the vector B, and the operation result is stored in the element of the vector A whose element number is the ith element of the list vector. That is, equations (1), (2), and (3)
Is an operation in which the element number of a certain vector is used as an element of another vector (list vector). Here, Equation (3) is often used in the field of particle propulsion among calculations of sparse matrices, and will be referred to as a particle propulsion type operation. Less than,
In this patent, an example will be described in which the operation of equation (3) (that is, @) is added.

【0010】式(1)を、汎用計算機で実行すると、表
1のようなプログラムになる。
When the equation (1) is executed by a general-purpose computer, a program as shown in Table 1 is obtained.

【0011】[0011]

【表1】 [Table 1]

【0012】以下の説明で、汎用レジスタ、浮動小数点
レジスタのデ−タ幅は8バイトとする。
In the following description, the data width of a general-purpose register and a floating-point register is assumed to be 8 bytes.

【0013】表1中の各命令の機能を以下に説明する。The function of each instruction in Table 1 will be described below.

【0014】GLDM a(GRm),GRn (機能)汎用レジスタmの値で表される主記憶アドレス
から8バイトのデ−タを読みだし、汎用レジスタnに格
納する。
GLDMa (GRm), GRn (Function) Reads 8 bytes of data from the main memory address represented by the value of general-purpose register m and stores it in general-purpose register n.

【0015】その後、汎用レジスタmの値をa加える。Thereafter, the value of the general-purpose register m is added by a.

【0016】FLDM a(GRm),FRn (機能)汎用レジスタmの値で表される主記憶アドレス
から8バイトのデ−タを読みだし、浮動小数点レジスタ
nに格納する。
FLDM a (GRm), FRn (Function) 8-byte data is read from the main memory address represented by the value of the general-purpose register m and stored in the floating-point register n.

【0017】その後、汎用レジスタmの値をa加える。Thereafter, the value of the general-purpose register m is added by a.

【0018】FSTM a(GRm),FRn (機能)浮動小数点レジスタnの値(8バイト)を汎用
レジスタmの値で表される主記憶アドレスにストアす
る。
FSTM a (GRm), FRn (Function) Stores the value (8 bytes) of floating-point register n in the main memory address represented by the value of general-purpose register m.

【0019】その後、汎用レジスタmの値をa加える。Thereafter, the value of the general-purpose register m is added by a.

【0020】BCNT GRm,t (機能)汎用レジスタmの値を1減じる。その値がゼロ
でなければ、番地tに分岐する。ゼロならば、分岐しな
い。
BCNT GRm, t (Function) Decreases the value of general-purpose register m by one. If the value is not zero, branch to address t. If zero, do not branch.

【0021】ここで、表1のプログラムの実行に先だっ
て、ベクトルLは、主記憶アドレスad1から始まる連
続領域に格納されているものとする。すなわち、L
(1)の主記憶アドレスがad1、L(2)の主記憶ア
ドレスがad1+8というように格納されている。同様
にベクトルAは、主記憶アドレスad2から始まる連続
領域に格納するものとする。また、ベクトルBは、主記
憶アドレスad3から始まる連続領域に格納されている
ものとする。汎用レジスタ1にはad1が、汎用レジス
タ2にはad2が、汎用レジスタ4にはNが前もって格
納されているものとする。ここで、ベクトルLはリスト
ベクトルLiを以下のように変形したものである。
Here, it is assumed that the vector L is stored in a continuous area starting from the main storage address ad1 prior to the execution of the program shown in Table 1. That is, L
The main storage address of (1) is stored as ad1, and the main storage address of L (2) is stored as ad1 + 8. Similarly, the vector A is stored in a continuous area starting from the main storage address ad2. It is assumed that the vector B is stored in a continuous area starting from the main storage address ad3. It is assumed that ad1 is stored in the general-purpose register 1, ad2 is stored in the general-purpose register 2, and N is stored in the general-purpose register 4 in advance. Here, the vector L is obtained by modifying the list vector Li as follows.

【0022】 L(i)=8*(Li(i)−1)+ad3 (4) すなわち、L(i)にはB(Li(i))のアドレスが
格納されている。Li(i)を用いて式(1)を実現し
ようとすると、(Li(i)−1)を8倍する操作とa
d3を加える操作がはいってプログラムが煩雑になるの
で、簡単化のためにL(i)を導入する。
L (i) = 8 * (Li (i) −1) + ad3 (4) That is, the address of B (Li (i)) is stored in L (i). When trying to realize Equation (1) using Li (i), an operation of multiplying (Li (i) -1) by 8 and a
Since the operation of adding d3 is inserted and the program becomes complicated, L (i) is introduced for simplification.

【0023】表1からわかるように、No.1のGLD
M命令で、L(i)が汎用レジスタ20にロ−ドされ、
No.2のFLDM命令で、該汎用レジスタが示す主記
憶アドレスからB(Li(i))が浮動小数点レジスタ
20にロ−ドされ、No.3のFSTM命令で該浮動小
数点レジスタの値がA(i)にストアされる。
As can be seen from Table 1, no. 1 GLD
With the M instruction, L (i) is loaded into the general-purpose register 20,
No. With the FLDM instruction No. 2, B (Li (i)) is loaded into the floating-point register 20 from the main memory address indicated by the general-purpose register. The value of the floating-point register is stored in A (i) by the third FSTM instruction.

【0024】すなわち、4命令からなるル−プを1回実
行することによって、1要素の結果が求まり、このル−
プをN回実行することによって全要素計算ができる。
That is, by executing a loop consisting of four instructions once, a result of one element is obtained.
By executing the loop N times, all element calculations can be performed.

【0025】ここで、1ル−プの実行時間が問題にな
る。まずNo.1のGLDM命令で汎用レジスタ20に
主記憶からデ−タをロ−ドしており、No.2のFLD
M命令は、汎用レジスタ20を使うので、該ロ−ドが完
了しないと、実行が開始できない。さらに、No.2の
FLDM命令は浮動小数点レジスタ20に主記憶からデ
−タをロ−ドしており、No.3のFSTM命令は、浮
動小数点レジスタ20を使うので、該ロ−ドが完了しな
いと、実行が開始できない。ここでNo.1のGLDM
命令とNo.2のFLDM命令でそれぞれ汎用レジスタ
20と浮動小数点レジスタ20に主記憶からデ−タをロ
−ドしているが、キャッシュにデ−タがある場合はGL
DM命令およびFLDM命令は短いサイクル数で終わる
が、キャッシュにない場合は、キャッシュよりはかなり
低速の主記憶からデ−タを読みださなくてはならず、キ
ャッシュにデ−タがある場合に比べ、かなり時間がかか
ることになる。すなわち、(1)デ−タ読みだし時間、
(2)レジスタのぶつかりという2つの性能低下要因が
ル−プの実行時間を長くすることになる。特に(1)は
長大デ−タを扱う計算の場合は深刻で、必要なデ−タが
キャッシュにはいりきらない場合が多くなり、性能の低
下は大きくなる。
Here, the execution time of one loop becomes a problem. First, no. The data is loaded from the main memory to the general-purpose register 20 by the GLDM instruction of No. 1. FLD of 2
Since the M instruction uses the general-purpose register 20, the execution cannot be started unless the load is completed. In addition, No. The FLDM instruction No. 2 loads data from the main memory to the floating-point register 20, The third FSTM instruction uses the floating-point register 20, so that the execution cannot be started unless the load is completed. Here, No. 1 GLDM
Instruction and No. Data is loaded from the main memory to the general-purpose register 20 and the floating-point register 20 by the FLDM instruction No. 2; however, if there is data in the cache, the GL is used.
The DM and FLDM instructions end in a short number of cycles, but if they are not in the cache, the data must be read from main memory, which is much slower than the cache. In comparison, it will take much time. That is, (1) data read time,
(2) Two performance degradation factors, such as register collision, increase the execution time of the loop. In particular, the case (1) is serious in the case of calculation for handling long data, and in many cases, necessary data cannot be stored in the cache, resulting in a large decrease in performance.

【0026】同様に、式(2)を、汎用計算機で実行す
ると、表2のようなプログラムになる。
Similarly, when equation (2) is executed by a general-purpose computer, a program as shown in Table 2 is obtained.

【0027】[0027]

【表2】 [Table 2]

【0028】ここで、表2のプログラムの実行に先だっ
て、ベクトルLは、主記憶アドレスad1から始まる連
続領域に格納されているものとする。すなわち、L
(1)の主記憶アドレスがad1、L(2)の主記憶ア
ドレスがad1+8というように格納されている。同様
にベクトルBは、主記憶アドレスad2から始まる連続
領域に格納するものとする。また、ベクトルAは、主記
憶アドレスad3から始まる連続領域に格納されている
ものとする。汎用レジスタ1にはad1が、汎用レジス
タ2にはad2が、汎用レジスタ4にはNが前もって格
納されているものとする。ここで、ベクトルLはリスト
ベクトルLiを式(4)のように変形したものである。
すなわち、L(i)にはA(Li(i))のアドレスが
格納されている。
Here, it is assumed that the vector L is stored in a continuous area starting from the main storage address ad1 prior to execution of the program shown in Table 2. That is, L
The main storage address of (1) is stored as ad1, and the main storage address of L (2) is stored as ad1 + 8. Similarly, the vector B is stored in a continuous area starting from the main storage address ad2. It is assumed that the vector A is stored in a continuous area starting from the main storage address ad3. It is assumed that ad1 is stored in the general-purpose register 1, ad2 is stored in the general-purpose register 2, and N is stored in the general-purpose register 4 in advance. Here, the vector L is obtained by modifying the list vector Li as shown in Expression (4).
That is, the address of A (Li (i)) is stored in L (i).

【0029】表2からわかるように、No.1のGLD
M命令で、L(i)が汎用レジスタ20にロ−ドされ、
No.2のFLDM命令で、B(i)が浮動小数点レジ
スタ20にロ−ドされ、No.3のFSTM命令で、前
記汎用レジスタが示す主記憶アドレス、すなわち、A
(Li(i))の主記憶アドレスに前記浮動小数点レジ
スタの値B(i)がストアされる。
As can be seen from Table 2, 1 GLD
With the M instruction, L (i) is loaded into the general-purpose register 20,
No. B (i) is loaded into the floating-point register 20 by the FLDM instruction No. 2 and the FL. 3, the main memory address indicated by the general-purpose register, that is, A
The value B (i) of the floating-point register is stored at the main storage address of (Li (i)).

【0030】すなわち、4命令からなるル−プを1回実
行することによって、1要素の結果が求まり、このル−
プをN回実行することによって全要素計算ができる。
That is, by executing a loop consisting of four instructions once, a result of one element is obtained.
By executing the loop N times, all element calculations can be performed.

【0031】ここで、表1と同様に、1ル−プの実行時
間が問題になる。まずNo.1のGLDM命令で汎用レ
ジスタ20に主記憶からデ−タをロ−ドしており、N
o.3のFSTM命令は、汎用レジスタ20を使うの
で、該ロ−ドが完了しないと、実行が開始できない。さ
らに、No.2のFLDM命令は浮動小数点レジスタ2
0に主記憶からデ−タをロ−ドしており、No.3のF
STM命令は、浮動小数点レジスタ20を使うので、該
ロ−ドが完了しないと、実行が開始できない。すなわ
ち、やはり、表1と同じように、(1)デ−タ読みだし
時間、(2)レジスタのぶつかりという2つの性能低下
要因がル−プの実行時間を長くすることになる。特に
(1)は長大デ−タを扱う計算の場合は深刻で、必要な
デ−タがキャッシュにはいりきらない場合が多くなり、
性能の低下は大きくなる。
Here, similarly to Table 1, the execution time of one loop becomes a problem. First, no. Data is loaded from the main memory to the general-purpose register 20 by one GLDM instruction.
o. Since the FSTM instruction of No. 3 uses the general-purpose register 20, the execution cannot be started unless the loading is completed. In addition, No. 2 FLDM instructions are floating point register 2
No. 0 is loaded with data from the main memory. 3 F
Since the STM instruction uses the floating point register 20, the execution cannot be started until the loading is completed. In other words, as in Table 1, two performance degradation factors, (1) data read time and (2) register collision, increase the loop execution time. In particular, the case (1) is serious in the case of a calculation that handles long data, and in many cases, the necessary data cannot be stored in the cache.
The decrease in performance is significant.

【0032】同様に、式(3)を、汎用計算機で実行す
ると、表3のようなプログラムになる。ここで、式
(3)中の演算として加算の例を示す。
Similarly, when equation (3) is executed by a general-purpose computer, a program as shown in Table 3 is obtained. Here, an example of addition is shown as an operation in Expression (3).

【0033】[0033]

【表3】 [Table 3]

【0034】ここで表3で新たに加わった命令の機能を
以下に示す。
The functions of the newly added instructions in Table 3 are shown below.

【0035】FADD FRm,FRn (機能)浮動小数点レジスタmの値(8バイト)と浮動
小数点レジスタnの値(8バイト)を加えて浮動小数点
レジスタmに格納する。
FADD FRm, FRn (Function) The value (8 bytes) of the floating-point register m and the value (8 bytes) of the floating-point register n are added and stored in the floating-point register m.

【0036】ここで、表3のプログラムの実行に先だっ
て、ベクトルLは、主記憶アドレスad1から始まる連
続領域に格納されているものとする。すなわち、L
(1)の主記憶アドレスがad1、L(2)の主記憶ア
ドレスがad1+8というように格納されている。同様
にベクトルBは、主記憶アドレスad2から始まる連続
領域に格納するものとする。また、ベクトルAは、主記
憶アドレスad3から始まる連続領域に格納されている
ものとする。汎用レジスタ1にはad1が、汎用レジス
タ2にはad2が、汎用レジスタ4にはNが前もって格
納されているものとする。ここで、ベクトルLはリスト
ベクトルLiを式(4)のように変形したものである。
すなわち、L(i)にはA(Li(i))のアドレスが
格納されている。
Here, it is assumed that the vector L is stored in a continuous area starting from the main storage address ad1 prior to the execution of the program shown in Table 3. That is, L
The main storage address of (1) is stored as ad1, and the main storage address of L (2) is stored as ad1 + 8. Similarly, the vector B is stored in a continuous area starting from the main storage address ad2. It is assumed that the vector A is stored in a continuous area starting from the main storage address ad3. It is assumed that ad1 is stored in the general-purpose register 1, ad2 is stored in the general-purpose register 2, and N is stored in the general-purpose register 4 in advance. Here, the vector L is obtained by modifying the list vector Li as shown in Expression (4).
That is, the address of A (Li (i)) is stored in L (i).

【0037】表3からわかるように、No.1のGLD
M命令で、L(i)が汎用レジスタ20にロ−ドされ、
No.2のFLDM命令で、B(i)が浮動小数点レジ
スタ21にロ−ドされ、No.3のFLDM命令で、前
記汎用レジスタが示す主記憶アドレス、すなわち、A
(Li(i))の主記憶アドレスからA(Li(i))
が読みだされ、浮動小数点レジスタ20に格納される。
No.4のFADD命令で、浮動小数点レジスタ20の
値(すなわちA(Li(i)))と浮動小数点レジスタ
21の値(すなわちB(i))が加えられ、浮動小数点
レジスタ20に格納される。No.5のFSTM命令
で、浮動小数点レジスタ20の値(すなわちA(Li
(i))+B(i))が前記汎用レジスタが示す主記憶
アドレス、すなわち、A(Li(i))の主記憶アドレ
スに格納される。
As can be seen from Table 3, no. 1 GLD
With the M instruction, L (i) is loaded into the general-purpose register 20,
No. B (i) is loaded into the floating-point register 21 by the FLDM instruction No. 2 and 3 FLDM instruction, the main memory address indicated by the general-purpose register, that is, A
A (Li (i)) from the main memory address of (Li (i))
Is read out and stored in the floating-point register 20.
No. 4, the value of the floating-point register 20 (that is, A (Li (i))) and the value of the floating-point register 21 (that is, B (i)) are added, and stored in the floating-point register 20. No. 5, the value of the floating-point register 20 (that is, A (Li
(I)) + B (i)) is stored in the main storage address indicated by the general-purpose register, that is, the main storage address of A (Li (i)).

【0038】すなわち、6命令からなるル−プを1回実
行することによって、1要素の結果が求まり、このル−
プをN回実行することによって全要素計算ができる。
That is, by executing a loop consisting of six instructions once, a one-element result is obtained.
By executing the loop N times, all element calculations can be performed.

【0039】ここで、表1と同様に、1ル−プの実行時
間が問題になる。まずNo.1のGLDM命令で汎用レ
ジスタ20に主記憶からデ−タをロ−ドしており、N
o.3のFLDM命令は、汎用レジスタ20を使うの
で、該ロ−ドが完了しないと、実行が開始できない。さ
らに、No.2のFLDM命令は浮動小数点レジスタ2
1に主記憶からデ−タをロ−ドしており、No.4のF
ADD命令は、浮動小数点レジスタ21を使うので、該
ロ−ドが完了しないと、実行が開始できない。また、N
o.3のFLDM命令は浮動小数点レジスタ20に主記
憶からデ−タをロ−ドしており、No.4のFADD命
令は、浮動小数点レジスタ20を使うので、該ロ−ドが
完了しないと、実行が開始できない。また、No.4の
FADD命令は、演算した結果を浮動小数点レジスタ2
0に格納しており、No.5のFSTM命令は、浮動小
数点レジスタ20を使うので、該演算、格納が完了しな
いと実行できない。すなわち、やはり、表1と同じよう
に、(1)デ−タ読みだし時間、(2)レジスタのぶつ
かりという2つの性能低下要因がル−プの実行時間を長
くすることになる。特に(1)は長大デ−タを扱う計算
の場合は深刻で、必要なデ−タがキャッシュにはいりき
らない場合が多くなり、性能の低下は大きくなる。
Here, similarly to Table 1, the execution time of one loop becomes a problem. First, no. Data is loaded from the main memory to the general-purpose register 20 by one GLDM instruction.
o. Since the FLDM instruction No. 3 uses the general-purpose register 20, the execution cannot be started unless the loading is completed. In addition, No. 2 FLDM instructions are floating point register 2
No. 1 loads data from the main memory. F of 4
Since the ADD instruction uses the floating-point register 21, execution cannot be started unless the loading is completed. Also, N
o. The FLDM instruction of No. 3 loads data from the main memory to the floating-point register 20, and Since the FADD instruction No. 4 uses the floating-point register 20, the execution cannot be started until the loading is completed. In addition, No. The FADD instruction No. 4 stores the result of the operation in the floating-point register 2
0 and stored in No. Since the FSTM instruction No. 5 uses the floating-point register 20, it cannot be executed unless the operation and storage are completed. In other words, as in Table 1, two performance degradation factors, (1) data read time and (2) register collision, increase the loop execution time. In particular, the case (1) is serious in the case of calculation for handling long data, and in many cases, necessary data cannot be stored in the cache, resulting in a large decrease in performance.

【0040】表1、表2、表3のプログラムで生じるこ
の(1)デ−タ読みだし時間、(2)レジスタのぶつか
りという2つの性能低下要因の問題を解決する一手法が
ル−プアンロ−リングであり、表1のプログラムにル−
プアンロ−リングの手法を適用したものが表4であり、
表2のプログラムにル−プアンロ−リングの手法を適用
したものが表5であり、表3のプログラムにル−プアン
ロ−リングの手法を適用したものが表6である。すなわ
ち、1ル−プで複数要素(=nとする)を処理し、1ル
−プで1要素を処理する場合に比べ、ル−プ回数を1/
nにする方式である。表4、表5、表6とも1ル−プで
4要素を処理する方式である。
One method for solving the two problems of performance degradation, namely, (1) data read time and (2) register collision, which occurs in the programs shown in Tables 1, 2 and 3, is a loop unrolling method. It is a ring.
Table 4 shows the result of applying the Pun rolling method.
Table 5 shows an example in which the loop unrolling method is applied to the program in Table 2, and Table 6 shows an example in which the loop unrolling method is applied to the program in Table 3. That is, a plurality of elements (= n) are processed in one loop, and the number of loops is reduced by 1 / compared to the case where one element is processed in one loop.
This is a method of setting n. Table 4, Table 5, and Table 6 are all systems for processing four elements in one loop.

【0041】[0041]

【表4】 [Table 4]

【0042】[0042]

【表5】 [Table 5]

【0043】[0043]

【表6】 [Table 6]

【0044】まず、表4について説明する。ここで、表
4のプログラムの実行に先だって、ベクトルLは、主記
憶アドレスad1から始まる連続領域に格納されている
ものとする。すなわち、L(1)の主記憶アドレスがa
d1、L(2)の主記憶アドレスがad1+8というよ
うに格納されている。同様にベクトルAは、主記憶アド
レスad2から始まる連続領域に格納するものとする。
また、ベクトルBは、主記憶アドレスad3から始まる
連続領域に格納されているものとする。汎用レジスタ1
にはad1が、汎用レジスタ2にはad2が、汎用レジ
スタ4にはN/4が前もって格納されているものとす
る。ここで、ベクトルLはリストベクトルLiを式
(4)のように変形したものである。
First, Table 4 will be described. Here, it is assumed that prior to the execution of the program in Table 4, the vector L is stored in a continuous area starting from the main storage address ad1. That is, the main storage address of L (1) is a
The main storage addresses of d1 and L (2) are stored as ad1 + 8. Similarly, the vector A is stored in a continuous area starting from the main storage address ad2.
It is assumed that the vector B is stored in a continuous area starting from the main storage address ad3. General-purpose register 1
Is stored in advance, ad2 is stored in general-purpose register 2, and N / 4 is stored in general-purpose register 4 in advance. Here, the vector L is obtained by modifying the list vector Li as shown in Expression (4).

【0045】表4からわかるように、13命令からなる
ル−プを1回実行することによって、4要素の結果が求
まり、このル−プをN/4回実行することによって、全
要素計算ができる。
As can be seen from Table 4, by executing a loop consisting of 13 instructions once, a four-element result is obtained, and by executing this loop N / 4 times, the calculation of all elements is completed. it can.

【0046】表4からわかる通り、i番目の要素に関
し、Lのロ−ドをNo.1のGLDM命令で、B(L
i)のロ−ドをNo.5のFLDM命令で、B(Li)
のAへの格納をNo.9のFSTM命令で行う。同様
に、i+1番目の要素に関し、Lのロ−ドをNo.2の
GLDM命令で、B(Li)のロ−ドをNo.6のFL
DM命令で、B(Li)のAへの格納をNo.10のF
STM命令で行う。同様に、i+2番目の要素に関し、
Lのロ−ドをNo.3のGLDM命令で、B(Li)の
ロ−ドをNo.7のFLDM命令で、B(Li)のAへ
の格納をNo.11のFSTM命令で行う。同様に、i
+3番目の要素に関し、Lのロ−ドをNo.4のGLD
M命令で、B(Li)のロ−ドをNo.8のFLDM命
令で、B(Li)のAへの格納をNo.12のFSTM
命令で行う。したがって、表1に比べ、ある1つの要素
番号に対応する、Lの要素のロ−ド、B(Li)の要素
のロ−ド、B(Li)の要素のAへの格納という一連の
処理が、命令列上で離れることになり、前記の(1)デ
−タ読みだし時間、(2)レジスタのぶつかりという2
つの性能低下の要因の影響を低減できる。たとえば、N
o.1のGLDM命令で、L(i)のロ−ドが行われ、
そのロ−ド結果が使われるのが、4命令後になるので、
デ−タ読みだし時間が4サイクル以内ならば、そのロ−
ド結果を使うNo.5のFLDM命令が待たされること
はない。また、No.5のFLDM命令でロ−ドされた
B(Li(i))が使われるのが、4命令後になるの
で、デ−タ読みだし時間が4サイクル以内ならば、その
ロ−ド結果を使うNo.9のFSTM命令が待たされる
ことはない。
As can be seen from Table 4, with respect to the i-th element, the load of L is changed to No. With one GLDM instruction, B (L
The load of i) is No. 5 FLDM instruction, B (Li)
Is stored in A. 9 with the FSTM instruction. Similarly, regarding the (i + 1) th element, the load of L is set to No. The GLDM instruction of No. 2 changes the load of B (Li) to No. FL of 6
With the DM instruction, the storage of B (Li) in A is No. 10 F
This is performed by the STM instruction. Similarly, for the i + 2 element,
L is No.L. The GLDM instruction of No. 3 changes the load of B (Li) to No. 3. In the FLDM instruction of No. 7, the storage of B (Li) in A is No. 11 FSTM instructions. Similarly, i
With respect to the + 3rd element, the load of L is No. 4 GLD
With the M instruction, the load of B (Li) is set to No. No. 8, the storage of B (Li) in A is No. 12 FSTM
Perform by instruction. Therefore, as compared with Table 1, a series of processing of loading an L element, loading a B (Li) element, and storing a B (Li) element in A corresponding to a certain element number. Are separated on the instruction sequence, and the above-mentioned (1) data read time and (2) register collision occur.
The effect of the two performance degradation factors can be reduced. For example, N
o. With one GLDM instruction, L (i) is loaded,
Since the load result is used after 4 instructions,
If the data reading time is within 4 cycles,
No. to use the result 5 FLDM instructions are not awaited. In addition, No. The B (Li (i)) loaded by the FLDM instruction of No. 5 is used after four instructions, so if the data read time is within four cycles, the load result is used. . Nine FSTM instructions are not awaited.

【0047】次に、表5について説明する。ここで、表
5のプログラムの実行に先だって、ベクトルLは、主記
憶アドレスad1から始まる連続領域に格納されている
ものとする。すなわち、L(1)の主記憶アドレスがa
d1、L(2)の主記憶アドレスがad1+8というよ
うに格納されている。同様にベクトルBは、主記憶アド
レスad2から始まる連続領域に格納するものとする。
また、ベクトルAは、主記憶アドレスad3から始まる
連続領域に格納されているものとする。汎用レジスタ1
にはad1が、汎用レジスタ2にはad2が、汎用レジ
スタ4にはN/4が前もって格納されているものとす
る。ここで、ベクトルLはリストベクトルLiを式
(4)のように変形したものである。
Next, Table 5 will be described. Here, it is assumed that the vector L is stored in a continuous area starting from the main storage address ad1 prior to execution of the program in Table 5. That is, the main storage address of L (1) is a
The main storage addresses of d1 and L (2) are stored as ad1 + 8. Similarly, the vector B is stored in a continuous area starting from the main storage address ad2.
It is assumed that the vector A is stored in a continuous area starting from the main storage address ad3. General-purpose register 1
Is stored in advance, ad2 is stored in general-purpose register 2, and N / 4 is stored in general-purpose register 4 in advance. Here, the vector L is obtained by modifying the list vector Li as shown in Expression (4).

【0048】表5からわかるように、13命令からなる
ル−プを1回実行することによって、4要素の結果が求
まり、このル−プをN/4回実行することによって、全
要素計算ができる。
As can be seen from Table 5, by executing a loop consisting of 13 instructions once, a four-element result is obtained, and by executing this loop N / 4 times, the calculation of all elements becomes it can.

【0049】表5からわかる通り、i番目の要素に関
し、Lのロ−ドをNo.1のGLDM命令で、Bのロ−
ドをNo.5のFLDM命令で、BのA(Li)への格
納をNo.9のFSTM命令で行う。同様に、i+1番
目の要素に関し、Lのロ−ドをNo.2のGLDM命令
で、Bのロ−ドをNo.6のFLDM命令で、BのA
(Li)への格納をNo.10のFSTM命令で行う。
同様に、i+2番目の要素に関し、Lのロ−ドをNo.
3のGLDM命令で、Bのロ−ドをNo.7のFLDM
命令で、BのA(Li)への格納をNo.11のFST
M命令で行う。同様に、i+3番目の要素に関し、Lの
ロ−ドをNo.4のGLDM命令で、Bのロ−ドをN
o.8のFLDM命令で、BのA(Li)への格納をN
o.12のFSTM命令で行う。したがって、表2に比
べ、ある1つの要素番号に対応する、Lの要素のロ−
ド、Bの要素のロ−ド、Bの要素のA(Li)への格納
という一連の処理が、命令列上で離れることになり、前
記の(1)デ−タ読みだし時間、(2)レジスタのぶつ
かりという2つの性能低下の要因の影響を低減できる。
たとえば、No.1のGLDM命令で、L(i)のロ−
ドが行われ、そのロ−ド結果が使われるのが、8命令後
になるので、デ−タ読みだし時間が8サイクル以内なら
ば、そのロ−ド結果を使うNo.9のFSTM命令が待
たされることはない。また、No.5のFLDM命令で
ロ−ドされたB(i)が使われるのが、4命令後になる
ので、デ−タ読みだし時間が4サイクル以内ならば、そ
のロ−ド結果を使うNo.9のFSTM命令が待たされ
ることはない。
As can be seen from Table 5, the load of L is set to No. With one GLDM instruction, B
No. to No. In the FLDM instruction of No. 5, the storage of B in A (Li) is No. 9 with the FSTM instruction. Similarly, regarding the (i + 1) th element, the load of L is set to No. The GLDM instruction of No. 2 changes the load of B to No. 6 FLDM instructions, B's A
(Li) is stored in No. Performed by 10 FSTM instructions.
Similarly, regarding the (i + 2) th element, the load of L is changed to No.
In the GLDM instruction of No. 3, the load of B is No. 7 FLDM
With the instruction, the storage of B in A (Li) is No. 11 FSTs
Perform with M instructions. Similarly, regarding the (i + 3) th element, the load of L is set to No. 4 GLDM instruction, load B to N
o. The FLDM instruction of 8 stores B in A (Li) by N
o. 12 FSTM instructions. Therefore, compared to Table 2, the row of the element of L corresponding to a certain element number
A series of processes, ie, loading of the element of B, loading of the element of B, and storing of the element of B in A (Li) are separated on the instruction sequence. 2.) It is possible to reduce the influence of two performance degradation factors, such as register collision.
For example, No. With one GLDM instruction, the row of L (i)
Since the load result is used and the load result is used after eight instructions, if the data read time is within eight cycles, No. using the load result is used. Nine FSTM instructions are not awaited. In addition, No. Since B (i) loaded by the FLDM instruction of No. 5 is used after four instructions, if the data read time is within four cycles, No. 5 using the load result is used. Nine FSTM instructions are not awaited.

【0050】次に、表6について説明する。Next, Table 6 will be described.

【0051】ここで、表6のプログラムの実行に先だっ
て、ベクトルLは、主記憶アドレスad1から始まる連
続領域に格納されているものとする。すなわち、L
(1)の主記憶アドレスがad1、L(2)の主記憶ア
ドレスがad1+8というように格納されている。同様
にベクトルBは、主記憶アドレスad2から始まる連続
領域に格納するものとする。また、ベクトルAは、主記
憶アドレスad3から始まる連続領域に格納されている
ものとする。汎用レジスタ1にはad1が、汎用レジス
タ2にはad2が、汎用レジスタ4にはN/4が前もっ
て格納されているものとする。ここで、ベクトルLはリ
ストベクトルLiを式(4)のように変形したものであ
る。
Here, it is assumed that the vector L is stored in a continuous area starting from the main storage address ad1 prior to the execution of the program shown in Table 6. That is, L
The main storage address of (1) is stored as ad1, and the main storage address of L (2) is stored as ad1 + 8. Similarly, the vector B is stored in a continuous area starting from the main storage address ad2. It is assumed that the vector A is stored in a continuous area starting from the main storage address ad3. It is assumed that ad1 is stored in general-purpose register 1, ad2 is stored in general-purpose register 2, and N / 4 is stored in general-purpose register 4 in advance. Here, the vector L is obtained by modifying the list vector Li as shown in Expression (4).

【0052】表6からわかるように、21命令からなる
ル−プを1回実行することによって、4要素の結果が求
まり、このル−プをN/4回実行することによって、全
要素計算ができる。
As can be seen from Table 6, by executing the loop consisting of 21 instructions once, a four-element result is obtained. By executing this loop N / 4 times, the calculation of all elements is completed. it can.

【0053】表6からわかる通り、i番目の要素に関
し、Lのロ−ドをNo.1のGLDM命令で、Bのロ−
ドをNo.5のFLDM命令で、A(Li)のロ−ドを
No.9のFLDM命令で、BとA(Li)の加算をN
o.13のFADD命令で、加算結果のA(Li)への
格納をNo.17のFSTM命令で行う。同様に、i+
1番目の要素に関し、Lのロ−ドをNo.2のGLDM
命令で、Bのロ−ドをNo.6のFLDM命令で、A
(Li)のロ−ドをNo.10のFLDM命令で、Bと
A(Li)の加算をNo.14のFADD命令で、加算
結果のA(Li)への格納をNo.18のFSTM命令
で行う。同様に、i+2番目の要素に関し、Lのロ−ド
をNo.3のGLDM命令で、Bのロ−ドをNo.7の
FLDM命令で、A(Li)のロ−ドをNo.11のF
LDM命令で、BとA(Li)の加算をNo.15のF
ADD命令で、加算結果のA(Li)への格納をNo.
19のFSTM命令で行う。同様に、i+3番目の要素
に関し、Lのロ−ドをNo.4のGLDM命令で、Bの
ロ−ドをNo.8のFLDM命令で、A(Li)のロ−
ドをNo.12のFLDM命令で、BとA(Li)の加
算をNo.16のFADD命令で、加算結果のA(L
i)への格納をNo.20のFSTM命令で行う。した
がって、表3に比べ、ある1つの要素番号に対応する、
Lの要素のロ−ド、Bの要素のロ−ド、A(Li)の要
素のロ−ド、Bの要素とA(Li)の要素の加算、加算
結果のA(Li)への格納という一連の処理が、命令列
上で離れることになり、前記の(1)デ−タ読みだし時
間、(2)レジスタのぶつかりという2つの性能低下の
要因の影響を低減できる。たとえば、No.1のGLD
M命令で、L(i)のロ−ドが行われ、そのロ−ド結果
が使われるのが、8命令後になるので、デ−タ読みだし
時間が8サイクル以内ならば、そのロ−ド結果を使うN
o.9のFLDM命令が待たされることはない。また、
No.5のFLDM命令でロ−ドされたB(i)が使わ
れるのが、8命令後になるので、デ−タ読みだし時間が
8サイクル以内ならば、そのロ−ド結果を使うNo.1
3のFADD命令が待たされることはない。また、N
o.13のFADD命令で浮動小数点レジスタに格納さ
れた演算結果、すなわち、A(Li(i))+B
(i)、が使われるのが4命令後になるので、演算と演
算結果の格納に要する時間が4サイクル以内ならばN
o.17のFSTM命令が待たされることはない。
As can be seen from Table 6, the load of L is set to No. With one GLDM instruction, B
No. to No. 5, the load of A (Li) is set to No. 9 FLDM instructions add B and A (Li) to N
o. No. 13 indicates that the addition result is stored in A (Li) by the FADD instruction No. 13. 17 FSTM instructions. Similarly, i +
Regarding the first element, the load of L is No. GLDM of 2
Instruct the load of B to No. 6 FLDM instructions, A
The load of (Li) is No. In the FLDM instruction of No. 10, the addition of B and A (Li) is No. In the FADD instruction No. 14, the storage of the addition result in A (Li) is No. 18 FSTM instructions. Similarly, regarding the (i + 2) th element, the load of L is changed to No. In the GLDM instruction of No. 3, the load of B is No. 7, the load of A (Li) is set to No. 7 by the FLDM instruction of No. 7. 11 F
In the LDM instruction, the addition of B and A (Li) is No. 15 F
With the ADD instruction, the storage of the addition result in A (Li) is No.
19 FSTM instructions. Similarly, regarding the (i + 3) th element, the load of L is set to No. In the GLDM instruction of No. 4, the load of B is No. 8 FLDM instruction, A (Li)
No. to No. In the FLDM instruction No. 12, the addition of B and A (Li) is No. With 16 FADD instructions, A (L
i) is stored in No. 20 FSTM instructions. Therefore, as compared with Table 3, one element number corresponds to
Load of L element, load of B element, load of A (Li) element, addition of B element and A (Li) element, storage of addition result in A (Li) The series of processes described above are separated on the instruction sequence, and the effects of the two performance degradation factors (1) data read time and (2) register collision can be reduced. For example, No. 1 GLD
The L (i) is loaded by the M instruction, and the result of the load is used after 8 instructions. If the data read time is within 8 cycles, the load is performed. Use result N
o. Nine FLDM instructions are not awaited. Also,
No. Since B (i) loaded by the FLDM instruction of No. 5 is used after eight instructions, if the data read time is within eight cycles, the No. 5 using the load result is used. 1
No 3 FADD instruction is awaited. Also, N
o. 13, the operation result stored in the floating-point register by the FADD instruction, that is, A (Li (i)) + B
Since (i) is used after four instructions, if the time required for the operation and storing the operation result is within four cycles, N
o. Seventeen FSTM instructions are not awaited.

【0054】このように、ル−プアンロ−リングによっ
て、性能は向上するが、この方式の欠点は、多くのレジ
スタを必要とすることである。表1のプログラムがベク
トルデ−タ格納用に1本の浮動小数点レジスタと1本の
汎用レジスタを必要とするのに対し、表4のプログラム
は、4本の浮動小数点レジスタと4本の汎用レジスタを
必要とする。同様に、表2のプログラムがベクトルデ−
タ格納用に1本の浮動小数点レジスタと1本の汎用レジ
スタを必要とするのに対し、表5のプログラムは、4本
の浮動小数点レジスタと4本の汎用レジスタを必要とす
る。同様に、表3のプログラムがベクトルデ−タ格納用
に2本の浮動小数点レジスタと1本の汎用レジスタを必
要とするのに対し、表6のプログラムは、8本の浮動小
数点レジスタと4本の汎用レジスタを必要とする。デ−
タの読みだしに要する時間がさらに長かったり、演算に
要する時間がさらに長かったりすると、もっと多くの要
素を1ル−プで処理しなくてはならず、より多くのレジ
スタが必要となることになる。
Thus, while loop unrolling improves performance, the disadvantage of this scheme is that it requires many registers. The program in Table 1 requires one floating-point register and one general-purpose register for storing vector data, while the program in Table 4 uses four floating-point registers and four general-purpose registers. I need. Similarly, the program in Table 2 is a vector data
The program in Table 5 requires four floating point registers and four general registers, while one floating point register and one general purpose register are required for data storage. Similarly, the program in Table 3 requires two floating point registers and one general purpose register for storing vector data, while the program in Table 6 requires eight floating point registers and four general purpose registers. Requires general purpose registers. Date
If the time required to read the data is longer or the time required for the operation is longer, more elements must be processed in one loop, and more registers are required. Become.

【0055】一般に、レジスタはアクティブな素子(す
なわち、メモリ素子ではない)で構成され、読みだし/
書き込みのためのポ−ト(すなわち、デ−タの出入口)
を多く用意することができるので、いわゆる記憶装置が
1つの動作サイクルに1個のデ−タの読みだし/書き込
みしかできないのに比べ、極めて高速である。したがっ
て、主記憶はもちろん、キャッシュに比べても、高速化
のためには、十分な容量のレジスタをもっていることが
必要不可欠である。それにもかかわらず、従来、レジス
タの数が比較的少なかったのは、ビット当たりのコスト
が高価であったことと、下記に示すように命令形式上の
レジスタ番号のフィ−ルドの長さに制限があったためで
ある。コストの問題はLSI化で解決されつつあるが、
後者はまだ未解決であった。
In general, a register is made up of active elements (ie, not memory elements),
Port for writing (ie, data entry / exit)
Can be prepared, so that the speed of the storage device is much higher than that of a storage device which can only read / write one piece of data in one operation cycle. Therefore, it is indispensable to have a register with a sufficient capacity for speeding up, not only the main memory but also the cache. Nevertheless, conventionally, the number of registers was relatively small because of the high cost per bit and the restriction on the length of the register number field in the instruction format as shown below. Because there was. Although the problem of cost is being solved by LSI,
The latter was still unresolved.

【0056】しかし、プログラムでアドレス可能なレジ
スタの数は、ア−キテクチャ上から制限されている。た
とえば、命令語中にレジスタ指定フィ−ルドが5ビット
あれば、アドレス可能なレジスタの数は32(2の5
乗)である。該レジスタ指定フィ−ルドのビット数を増
せば、プログラムでアドレス可能なレジスタの数は増え
るが、命令形式が変わるので、既存のプログラムの変更
が必要となり、非現実的である。
However, the number of registers that can be addressed by a program is limited in terms of architecture. For example, if the instruction word has a register specification field of 5 bits, the number of addressable registers is 32 (5 of 2).
Squared). Increasing the number of bits in the register specification field increases the number of registers that can be addressed by the program, but changes the instruction format, and requires modification of the existing program, which is impractical.

【0057】そこで、デ−タ処理装置のア−キテクチャ
を変えずに、命令によってアドレス可能なレジスタの数
より多いレジスタをデ−タ処理装置がアクセス可能とす
る方式が必要となるが、従来技術1では、過去にロ−ド
命令が実行された主記憶アドレスに対し、新たにロ−ド
命令が発行された場合は高速化される。しかし、式
(1)、(2)、(3)のようなベクトル計算は多くの
場合、表1、2、3のプログラムのように1つの主記憶
アドレスに対するロ−ド要求は1度しか出ないので、従
来技術では高速化されないという問題がある。
Therefore, it is necessary to provide a method that allows the data processing device to access more registers than the number of registers addressable by an instruction without changing the architecture of the data processing device. In 1, when a new load instruction is issued for a main memory address where a load instruction was executed in the past, the speed is increased. However, in many cases, the vector calculation as in the equations (1), (2), and (3) is performed only once when a load request for one main memory address is issued as in the programs shown in Tables 1, 2, and 3. Therefore, there is a problem that the speed is not increased by the conventional technology.

【0058】また、従来技術2では、1つのプログラム
で使えるのはある1つのウィンドウに属する物理レジス
タのみであり、その数はプログラムでアドレス可能なレ
ジスタの数に等しく、1つのプログラムで行なわれる演
算を高速化できない。すなわち、前記のウィンドウの機
能は、プログラムの呼びと戻りが発生する場合のみ処理
の高速化がなされ、式(1)、(2)、(3)のベクト
ル計算のように1つのプログラムで処理が完結している
ような場合は高速化されないという問題がある。また、
前記のウィンドウオ−バフロ−、ウィンドウアンダフロ
−の割込みは式(1)、(2)、(3)のベクトル計算
のように1つのプログラムで処理が完結していて、プロ
グラムの呼びと戻りが発生しない場合は不要であるとい
う問題がある。
Further, in the prior art 2, only one physical register belonging to a certain window can be used in one program, and the number thereof is equal to the number of registers addressable by the program, and the number of operations performed by one program Can not speed up. In other words, the function of the window can be speeded up only when a program call and return occur, and the processing can be performed by one program as in the vector calculation of equations (1), (2) and (3). There is a problem that the speed is not increased when the operation is completed. Also,
The interruption of the window overflow and the window underflow is completed by one program as in the vector calculation of the equations (1), (2) and (3). If it does not occur, there is a problem that it is unnecessary.

【0059】本発明の目的は、デ−タ処理装置のア−キ
テクチャを変えずに、命令によってアドレス可能なレジ
スタの数より多いレジスタをデ−タ処理装置がアクセス
可能とし、科学技術計算におけるリストベクトル計算を
高速に実行する方式を提供することにある。
An object of the present invention is to make it possible for a data processing device to access more registers than the number of registers addressable by an instruction without changing the architecture of the data processing device, and to provide a list for scientific and technical calculations. An object of the present invention is to provide a method for performing vector calculation at high speed.

【0060】[0060]

【課題を解決するための手段】上記目的を達成するため
に、命令によってアドレス可能な浮動小数点レジスタの
数より多い物理浮動小数点レジスタと呼ばれる浮動小数
点レジスタ、論理浮動小数点レジスタ番号と呼ばれる、
プログラム命令中の浮動小数点レジスタ番号を、物理浮
動小数点レジスタ番号に変換するパタ−ンを示す現浮動
小数点ウインドウポインタを格納する現浮動小数点ウイ
ンドウポインタレジスタ、現浮動小数点ウインドウポイ
ンタを用いて論理浮動小数点レジスタ番号を物理浮動小
数点レジスタ番号に変換する第1変換回路、命令によっ
てアドレス可能な浮動小数点レジスタの数および命令に
よってアドレス可能な汎用レジスタの数より多い物理汎
用レジスタと呼ばれる汎用レジスタ、前記論理浮動小数
点レジスタ番号、または論理汎用レジスタ番号と呼ばれ
る、プログラム命令中の汎用レジスタ番号を、物理汎用
レジスタ番号に変換するパタ−ンを示す現汎用ウインド
ウポインタを格納する現汎用ウインドウポインタレジス
タ、現汎用ウインドウポインタを用いて論理浮動小数点
レジスタ番号または論理汎用レジスタ番号を物理汎用レ
ジスタ番号に変換する第2変換回路、現浮動小数点ウイ
ンドウポインタおよび現汎用ウインドウポインタが有効
であることを示す値を格納しておく現ウインドウポイン
タ有効レジスタ、現浮動小数点ウインドウポインタをセ
ットする現浮動小数点ウインドウポインタ変更命令、現
汎用ウインドウポインタをセットする現汎用ウインドウ
ポインタ変更命令、論理汎用レジスタ番号を現汎用ウイ
ンドウポインタを用いて変換した物理汎用レジスタに格
納されている主記憶アドレスからデ−タを読みだし、論
理浮動小数点レジスタ番号を現浮動小数点ウインドウポ
インタから決定されるが現浮動小数点ウインドウポイン
タとは異なる値を現浮動小数点ウインドウポインタとし
て変換した物理浮動小数点レジスタに、該デ−タを格納
する浮動小数点レジスタプリロ−ド命令、論理浮動小数
点レジスタ番号を現浮動小数点ウインドウポインタから
決定されるが現浮動小数点ウインドウポインタとは異な
る値を現浮動小数点ウインドウポインタとして変換した
物理浮動小数点レジスタからデ−タを読みだし、論理汎
用レジスタ番号を現汎用ウインドウポインタを用いて変
換した物理汎用レジスタに格納されている主記憶アドレ
スに、該デ−タを格納する浮動小数点レジスタポストス
トア命令、命令中のレジスタ番号を現汎用ウインドウポ
インタから決定されるが現汎用ウインドウポインタの値
とは異なる値を現汎用ウインドウポインタとして変換し
た物理汎用レジスタ中に格納されている主記憶アドレス
からデ−タを読出し、論理浮動小数点レジスタ番号を現
浮動小数点ウインドウポインタから決定されるが現浮動
小数点ウインドウポインタの値とは異なる値を現浮動小
数点ウインドウポインタの値として変換した物理浮動小
数点レジスタに、該デ−タを格納する浮動小数点レジス
タリストロ−ド命令、第1の論理汎用レジスタ番号を現
汎用ウインドウポインタの値を用いて変換した物理汎用
レジスタ中に格納されている情報を用いて主記憶アドレ
スを決定し、該主記憶アドレスからデ−タを読みだし
て、第2の論理汎用レジスタ番号を現汎用ウインドウポ
インタから決定されるが現汎用ウインドウポインタとは
異なる値を現汎用ウインドウポインタとして変換した物
理汎用レジスタに格納する汎用レジスタリストロ−ド命
令、論理浮動小数点レジスタ番号を現浮動小数点ウイン
ドウポインタから決定されるが現浮動小数点ウインドウ
ポインタの値とは異なる値を現浮動小数点ウインドウポ
インタの値として変換した物理浮動小数点レジスタから
デ−タを読出し、命令中のレジスタ番号を現汎用ウイン
ドウポインタから決定されるが現汎用ウインドウポイン
タの値とは異なる値を現汎用ウインドウポインタとして
変換した物理汎用レジスタ中に格納されている主記憶ア
ドレスに、該デ−タを格納する浮動小数点レジスタリス
トストア命令を設ける。
In order to achieve the above object, a floating point register called a physical floating point register, called a logical floating point register number, which has more than the number of floating point registers addressable by an instruction,
A current floating-point window pointer register for storing a current floating-point window pointer indicating a pattern for converting a floating-point register number in a program instruction into a physical floating-point register number, a logical floating-point register using the current floating-point window pointer A first conversion circuit for converting a number into a physical floating-point register number, a general-purpose register called a physical general-purpose register having more than the number of floating-point registers addressable by an instruction and the number of general-purpose registers addressable by an instruction, and the logical floating-point register A current general-purpose window pointer register, a current general-purpose window that stores a general-purpose window pointer indicating a pattern for converting a general-purpose register number in a program instruction into a physical general-purpose register number, which is called a number or a logical general-purpose register number. A second conversion circuit for converting the logical floating-point register number or the logical general-purpose register number into a physical general-purpose register number by using a pointer, a current floating-point window pointer, and a value indicating that the current general-purpose window pointer is valid. The current window pointer valid register, the current floating point window pointer change instruction for setting the current floating point window pointer, the current general purpose window pointer change instruction for setting the current general purpose window pointer, and the logical general purpose register number are converted using the current general purpose window pointer. Data is read from the main memory address stored in the physical general-purpose register, and the logical floating-point register number is determined from the current floating-point window pointer, but a value different from the current floating-point window pointer is determined. A floating-point register preload instruction for storing the data and a logical floating-point register number are determined from the current floating-point window pointer in the physical floating-point register converted as the doe pointer, but a value different from the current floating-point window pointer Is read from the physical floating-point register converted as a current floating-point window pointer, and the logical general-purpose register number is stored in the main memory address stored in the physical general-purpose register converted using the current general-purpose window pointer. Floating-point register post-store instruction for storing data, the register number in the instruction is determined from the current general-purpose window pointer, but a value different from the value of the current general-purpose window pointer is converted into the physical general-purpose register as the current general-purpose window pointer. Main memory address stored The logical floating-point register number is determined from the current floating-point window pointer, but a value different from the current floating-point window pointer value is converted to a physical floating-point register converted as the current floating-point window pointer value. A floating-point register list load instruction for storing the data, and a main register using the information stored in the physical general-purpose register obtained by converting the first logical general-purpose register number using the value of the current general-purpose window pointer. The storage address is determined, data is read from the main storage address, and the second logical general-purpose register number is determined from the current general-purpose window pointer, but a value different from the current general-purpose window pointer is used as the current general-purpose window pointer. General register list load instruction to store in converted physical general register, logical floating point The data is read from the physical floating-point register in which the register number is determined from the current floating-point window pointer but is different from the value of the current floating-point window pointer as the value of the current floating-point window pointer, and the register in the instruction is read. The number is determined from the current general-purpose window pointer, but the data is stored in the main memory address stored in the physical general-purpose register obtained by converting a value different from the value of the current general-purpose window pointer as the current general-purpose window pointer. Provide a floating point register list store instruction.

【0061】ここで、上記の浮動小数点レジスタリスト
ロ−ド命令の記述中の「命令中のレジスタ番号」とは論
理浮動小数点レジスタ番号または論理汎用レジスタ番号
のことであるが、実施例は論理浮動小数点レジスタ番号
としたものを示す。上記の汎用レジスタリストロ−ド命
令の記述中の「物理汎用レジスタ中に格納されている情
報を用いて主記憶アドレスを決定」の動作は、物理汎用
レジスタ中に格納されている情報をそのまま主記憶アド
レスとするものを実施例に示す。上記の浮動小数点レジ
スタリストストア命令の記述中の「命令中のレジスタ番
号」とは論理浮動小数点レジスタ番号または論理汎用レ
ジスタ番号のことであるが、実施例は論理浮動小数点レ
ジスタ番号としたものを示す。
The "register number in the instruction" in the above description of the floating point register reload instruction is a logical floating point register number or a logical general purpose register number. Indicates the decimal point register number. The operation of "determining the main storage address using the information stored in the physical general-purpose register" in the description of the above general-purpose register list load instruction is performed by directly using the information stored in the physical general-purpose register. The storage address will be described in the embodiment. The “register number in the instruction” in the above description of the floating-point register list store instruction is a logical floating-point register number or a logical general-purpose register number, but the embodiment shows the logical floating-point register number. .

【0062】[0062]

【作用】前記浮動小数点レジスタプリロ−ド命令、前記
浮動小数点レジスタポストストア命令、前記浮動小数点
レジスタリストロ−ド命令、前記汎用レジスタリストロ
−ド命令、前記浮動小数点レジスタリストストア命令以
外の浮動小数点レジスタを参照する命令では全て、現ウ
インドウポインタ有効レジスタの値が1であれば、現浮
動小数点ウインドウポインタの値を用いて論理浮動小数
点レジスタ番号−物理浮動小数点レジスタ番号変換が行
われ、浮動小数点レジスタの参照で物理浮動小数点レジ
スタ番号が参照される。現ウインドウポインタ有効レジ
スタの値が0であれば、論理浮動小数点レジスタ番号は
物理浮動小数点レジスタ番号に等しい。 前記浮動小数
点レジスタプリロ−ド命令、前記浮動小数点レジスタポ
ストストア命令、前記浮動小数点レジスタリストロ−ド
命令、前記汎用レジスタリストロ−ド命令、前記浮動小
数点レジスタリストストア命令以外の汎用レジスタを参
照する命令では全て、現ウインドウポインタ有効レジス
タの値が1であれば、現汎用ウインドウポインタを用い
て論理汎用レジスタ番号−物理汎用レジスタ番号変換が
行われ、汎用レジスタの参照で物理汎用レジスタ番号が
参照される。現ウインドウポインタ有効レジスタの値が
0であれば、論理汎用レジスタ番号は物理汎用レジスタ
番号に等しい。
The floating-point registers other than the floating-point register preload instruction, the floating-point register post-store instruction, the floating-point register list-load instruction, the general-purpose register list-load instruction, and the floating-point register list-store instruction. If the value of the current window pointer valid register is 1, the logical floating-point register number-physical floating-point register number conversion is performed using the value of the current floating-point window pointer. The reference refers to the physical floating-point register number. If the value of the current window pointer valid register is 0, the logical floating point register number is equal to the physical floating point register number. Instructions for referring to general-purpose registers other than the floating-point register preload instruction, the floating-point register post-store instruction, the floating-point register list load instruction, the general-purpose register list load instruction, and the floating-point register list store instruction In all cases, if the value of the current window pointer valid register is 1, the logical general-purpose register number-physical general-purpose register number conversion is performed using the current general-purpose window pointer, and the physical general-purpose register number is referred to by referring to the general-purpose register. . If the value of the current window pointer valid register is 0, the logical general register number is equal to the physical general register number.

【0063】前記浮動小数点レジスタプリロ−ド命令、
前記浮動小数点レジスタポストストア命令、前記浮動小
数点レジスタリストロ−ド命令、前記汎用レジスタリス
トロ−ド命令、前記浮動小数点レジスタリストストア命
令では、現ウインドウポインタ有効レジスタの値が1で
あれば、前記の命令仕様の通り、論理浮動小数点レジス
タ番号−物理浮動小数点レジスタ番号変換、論理浮動小
数点レジスタ番号−物理汎用レジスタ番号変換、論理汎
用レジスタ番号−物理汎用レジスタ番号変換が行われ、
変換後の番号の示す物理浮動小数点レジスタまたは物理
汎用レジスタが参照される。現ウインドウポインタ有効
レジスタの値が0であれば、前記の命令仕様中の論理浮
動小数点レジスタ番号−物理浮動小数点レジスタ番号変
換に関しては、論理浮動小数点レジスタ番号は参照され
る物理浮動小数点レジスタ番号に等しく、論理浮動小数
点レジスタ番号−物理汎用レジスタ番号変換に関しては
論理浮動小数点レジスタ番号は参照される物理汎用レジ
スタ番号に等しく、論理汎用レジスタ番号−物理汎用レ
ジスタ番号変換に関しては、論理汎用レジスタ番号は参
照される物理汎用レジスタ番号に等しい。
The floating-point register preload instruction,
In the floating-point register post-store instruction, the floating-point register list-load instruction, the general-purpose register list-load instruction, and the floating-point register list-store instruction, if the value of the current window pointer valid register is 1, According to the instruction specifications, logical floating-point register number-physical floating-point register number conversion, logical floating-point register number-physical general-purpose register number conversion, logical general-purpose register number-physical general-purpose register number conversion are performed,
The physical floating-point register or the physical general-purpose register indicated by the converted number is referred to. If the value of the current window pointer valid register is 0, the logical floating-point register number is equal to the referenced physical floating-point register number with respect to the logical floating-point register number-physical floating-point register number conversion in the above-mentioned instruction specification. For the logical floating-point register number-physical general-purpose register number conversion, the logical floating-point register number is equal to the referenced physical general-purpose register number, and for the logical general-purpose register number-physical general-purpose register number conversion, the logical general-purpose register number is referred to. Equivalent to the physical general register number.

【0064】論理浮動小数点レジスタ番号−物理浮動小
数点レジスタ番号変換は以下のようにして行われる。論
理浮動小数点レジスタ番号が物理浮動小数点レジスタ番
号のどの範囲を指定するかを、複数通り設け、この範囲
の指定をウインドウと呼ぶ。
The conversion of the logical floating-point register number to the physical floating-point register number is performed as follows. A plurality of ranges of the logical floating-point register number that specify the physical floating-point register number are provided, and the specification of this range is called a window.

【0065】ウインドウの設けかたの一例を図1に示
す。本例では、論理浮動小数点レジスタは32本で、論
理浮動小数点レジスタ番号は0から31まで指定可能と
する。物理浮動小数点レジスタは88本で、物理浮動小
数点レジスタ番号は0から87である。ウインドウはw
0からw3の4通り設け、現浮動小数点ウインドウポイ
ンタ0から3でそれぞれ指定される。
FIG. 1 shows an example of how to provide a window. In this example, there are 32 logical floating point registers, and logical floating point register numbers 0 to 31 can be specified. There are 88 physical floating point registers, and physical floating point register numbers are 0 to 87. The window is w
0 to w3 are provided and specified by the current floating point window pointers 0 to 3, respectively.

【0066】ここで、現浮動小数点ウインドウポインタ
をw、論理浮動小数点レジスタ番号をrと表記し、物理
浮動小数点レジスタ番号はwとrから決まるので、<
w,r>と表記することにする。
Here, the current floating point window pointer is represented by w, the logical floating point register number is represented by r, and the physical floating point register number is determined by w and r.
w, r>.

【0067】命令でwの増減を行なうが、該増減は4を
法として行なわれる。たとえば、w=3では、w+1の
値は0になる。
An instruction is used to increase or decrease w, and the increase or decrease is performed modulo 4. For example, when w = 3, the value of w + 1 is 0.

【0068】図1の例では、以下のように論理浮動小数
点レジスタ番号−物理浮動小数点レジスタ番号変換が行
われる。
In the example of FIG. 1, the conversion of the logical floating point register number to the physical floating point register number is performed as follows.

【0069】 1. 0≦r≦7の時 : wに関係なく<w,r>=r (5) 2. 8≦r≦31の時 : <0,r>=r (6) <1,r>=r+20 (7) <2,r>=r+40 (8) <3,r>=r+60 (8≦r≦27) r−20 (28≦r≦31) (9) 論理浮動小数点レジスタ番号−物理汎用レジスタ番号変
換および論理汎用レジスタ番号−物理汎用レジスタ番号
変換は以下のようにして行われる。論理浮動小数点レジ
スタ番号および論理汎用レジスタ番号が物理汎用レジス
タ番号のどの範囲を指定するかを、複数通り設け、この
範囲の指定をウインドウと呼ぶ。
1. When 0 ≦ r ≦ 7: <w, r> = r regardless of w (5) When 8 ≦ r ≦ 31: <0, r> = r (6) <1, r> = r + 20 (7) <2, r> = r + 40 (8) <3, r> = r + 60 (8 ≦ r ≦ 27) r-20 (28 ≦ r ≦ 31) (9) Logical floating-point register number-physical general-purpose register number conversion and logical general-purpose register number-physical general-purpose register number conversion are performed as follows. A plurality of ranges of the logical floating-point register number and the logical general-purpose register number that specify the physical general-purpose register number are provided, and the specification of this range is called a window.

【0070】ウインドウの設けかたの一例を図2に示
す。本例では、論理浮動小数点レジスタは32本で、論
理浮動小数点レジスタ番号は0から31まで指定可能で
あり、論理汎用レジスタは32本で、論理汎用レジスタ
番号は0から31まで指定可能とする。物理汎用レジス
タは88本で、物理汎用レジスタ番号は0から87であ
る。ウインドウはwG0からwG3の4通り設け、現汎
用ウインドウポインタ0から3でそれぞれ指定される。
FIG. 2 shows an example of how to provide a window. In this example, the number of logical floating-point registers is 32, the number of logical floating-point registers can be specified from 0 to 31, and the number of logical general-purpose registers is 32, and the number of logical general-purpose registers can be specified from 0 to 31. The number of physical general-purpose registers is 88, and the number of physical general-purpose registers is 0 to 87. The windows are provided in four ways, wG0 to wG3, and are specified by current general-purpose window pointers 0 to 3, respectively.

【0071】ここで、現汎用ウインドウポインタをw
G、論理浮動小数点レジスタ番号または論理汎用レジス
タ番号をrと表記し、物理汎用レジスタ番号はwGとr
から決まるので、<wG,r>と表記することにする。
Here, the current general-purpose window pointer is set to w
G, the logical floating-point register number or the logical general-purpose register number is denoted by r, and the physical general-purpose register numbers are wG and r.
Therefore, it is described as <wG, r>.

【0072】命令でwGの増減を行なうが、該増減は4
を法として行なわれる。たとえば、wG=3では、wG
+1の値は0になる。
The value of wG is increased or decreased by an instruction.
Is performed modulo. For example, if wG = 3, wG
The value of +1 becomes 0.

【0073】図2の例では、以下のように論理浮動小数
点レジスタ番号または論理汎用レジスタ番号−物理汎用
レジスタ番号変換が行われる。
In the example of FIG. 2, the conversion of the logical floating-point register number or the logical general-purpose register number to the physical general-purpose register number is performed as follows.

【0074】 1. 0≦r≦7の時 : wGに関係なく<wG,r>=r (10) 2. 8≦r≦31の時 : <0,r>=r (11) <1,r>=r+20 (12) <2,r>=r+40 (13) <3,r>=r+60 (8≦r≦27) r−20 (28≦r≦31) (14) 上記の式(5)−(14)で表わされる変換法で以下の
2つが特長的である。
1. When 0 ≦ r ≦ 7: <wG, r> = r regardless of wG (10) When 8 ≦ r ≦ 31: <0, r> = r (11) <1, r> = r + 20 (12) <2, r> = r + 40 (13) <3, r> = r + 60 (8 ≦ r ≦ 27) r-20 (28 ≦ r ≦ 31) (14) The following two methods are characteristic of the conversion method represented by the above equations (5) to (14).

【0075】1. 0番から7番の物理汎用レジスタお
よび物理浮動小数点レジスタは、各ウインドウ共通に使
う。これらのレジスタは、global regist
erとして、それぞれのウインドウを用いる演算ル−プ
に共通のデ−タを保持する。
1. The physical general-purpose registers 0 to 7 and the physical floating-point registers are used in common for each window. These registers are global register
As er, data common to the operation loop using each window is held.

【0076】2. 物理浮動小数点レジスタ(図1)に
ついていえば、各ウインドウの論理浮動小数点レジスタ
28番から31番は、ウインドウポインタが1つ大きい
ウインドウの論理浮動小数点レジスタ8番から11番と
同一の物理浮動小数点レジスタを指す。
2. Regarding the physical floating point registers (FIG. 1), the logical floating point registers 28 to 31 of each window are the same physical floating point registers as the logical floating point registers 8 to 11 of the window whose window pointer is one larger. Point to.

【0077】物理汎用レジスタ(図2)についていえ
ば、論理汎用レジスタ番号が物理汎用レジスタ番号に変
換される場合は、各ウインドウの論理汎用レジスタ28
番から31番は、ウインドウポインタが1つ大きいウイ
ンドウの論理汎用レジスタ8番から11番と同一の物理
汎用レジスタを指し、論理浮動小数点レジスタ番号が物
理汎用レジスタに変換される場合は、各ウインドウの論
理浮動小数点レジスタ番号28から31は、ウインドウ
ポインタが1つ大きいウインドウの論理浮動小数点レジ
スタ番号8から11と同一の物理汎用レジスタを指す。
Regarding the physical general-purpose register (FIG. 2), when the logical general-purpose register number is converted into the physical general-purpose register number, the logical general-purpose register 28 of each window is used.
The numbers 31 to indicate the same physical general registers as the logical general registers 8 to 11 of the window whose window pointer is larger by one. When the logical floating-point register number is converted to the physical general registers, The logical floating point register numbers 28 to 31 indicate the same physical general purpose registers as the logical floating point register numbers 8 to 11 of the window whose window pointer is larger by one.

【0078】これらのレジスタは、over−lapp
ing registerとして隣合うウインドウを用
いる演算ル−プ間のデ−タの受渡しに用いる。
These registers are over-lapp
It is used to transfer data between operation loops that use adjacent windows as the ing register.

【0079】前記新設命令の命令ニモニックと機能を、
一例として、以下のように定める。
The instruction mnemonics and functions of the new instruction are as follows:
As an example, it is determined as follows.

【0080】ここで、下記の拡張浮動小数点レジスタプ
リロ−ド命令は、上記の記述にないが、浮動小数点レジ
スタプリロ−ド命令の機能を拡張した命令として新設す
る。
Here, the following extended floating-point register preload instruction, which is not described above, is newly provided as an instruction obtained by extending the function of the floating-point register preload instruction.

【0081】1.現浮動小数点ウインドウポインタ変更
命令 (命令ニモニック)CFRWPS GRm (機能)汎用レジスタmの値を現浮動小数点ウインドウ
ポインタにセットする。 2.現汎用ウインドウポインタ変更命令 (命令ニモニック)CGRWPS GRm (機能)汎用レジスタmの値を現汎用ウインドウポイン
タにセットする。
1. Current floating point window pointer change instruction (instruction mnemonic) CFRWPS GRm (Function) Sets the value of the general-purpose register m to the current floating point window pointer. 2. Current general-purpose window pointer change instruction (instruction mnemonic) CGRWPS GRm (Function) Sets the value of general-purpose register m to the current general-purpose window pointer.

【0082】3.浮動小数点レジスタプリロ−ド命令 (命令ニモニック)FLDPRM a(GRm),FR
n (機能)汎用レジスタmの値で表される主記憶アドレス
から8バイトのデ−タを読みだし、浮動小数点レジスタ
nに格納する。このとき、(現浮動小数点ウインドウポ
インタ+1)を現浮動小数点ウインドウポインタとし
て、論理浮動小数点レジスタ番号−物理浮動小数点レジ
スタ番号変換が行われ、現汎用ウインドウポインタを用
いて論理汎用レジスタ番号−物理汎用レジスタ番号変換
が行われる。
3. Floating point register preload instruction (instruction mnemonic) FLDPRM a (GRm), FR
n (Function) 8-byte data is read from the main memory address represented by the value of the general-purpose register m and stored in the floating-point register n. At this time, logical floating-point register number-physical floating-point register number conversion is performed using (current floating-point window pointer + 1) as the current floating-point window pointer, and using the current general-purpose window pointer, logical general-purpose register number-physical general-purpose register Number conversion is performed.

【0083】その後、汎用レジスタmの値をa加える。
このとき、現汎用ウインドウポインタを用いて論理汎用
レジスタ番号−物理汎用レジスタ番号変換が行われる。
Thereafter, the value of the general-purpose register m is added by a.
At this time, logical general-purpose register number-physical general-purpose register number conversion is performed using the current general-purpose window pointer.

【0084】4.拡張浮動小数点レジスタプリロ−ド命
令 (命令ニモニック)FLDPRE a(GRm),FR
n (機能)汎用レジスタmの値で表される主記憶アドレス
から8バイトのデ−タを読みだし、浮動小数点レジスタ
nに格納する。このとき、(現浮動小数点ウインドウポ
インタ+2)を現浮動小数点ウインドウポインタとし
て、論理浮動小数点レジスタ番号−物理浮動小数点レジ
スタ番号変換が行われ、現汎用ウインドウポインタを用
いて論理汎用レジスタ番号−物理汎用レジスタ番号変換
が行われる。
4. Extended floating point register preload instruction (instruction mnemonic) FLDPRE a (GRm), FR
n (Function) 8-byte data is read from the main memory address represented by the value of the general-purpose register m and stored in the floating-point register n. At this time, logical floating-point register number-physical floating-point register number conversion is performed using (current floating-point window pointer + 2) as the current floating-point window pointer. Number conversion is performed.

【0085】その後、汎用レジスタmの値をa加える。
このとき、現汎用ウインドウポインタを用いて論理汎用
レジスタ番号−物理汎用レジスタ番号変換が行われる。
Thereafter, the value of the general-purpose register m is added by a.
At this time, logical general-purpose register number-physical general-purpose register number conversion is performed using the current general-purpose window pointer.

【0086】5.浮動小数点レジスタポストストア命令 FSTPOM a(GRm),FRn (機能)浮動小数点レジスタnの値(8バイト)を汎用
レジスタmの値で表される主記憶アドレスにストアす
る。このとき、(現浮動小数点ウインドウポインタ−
1)を現浮動小数点ウインドウポインタとして、論理浮
動小数点レジスタ番号−物理浮動小数点レジスタ番号変
換が行われ、現汎用ウインドウポインタを用いて論理汎
用レジスタ番号−物理汎用レジスタ番号変換が行われ
る。
5. Floating-point register post store instruction FSTPOM a (GRm), FRn (Function) Stores the value (8 bytes) of floating-point register n at the main memory address represented by the value of general-purpose register m. At this time, (current floating point window pointer-
Using 1) as the current floating-point window pointer, logical floating-point register number-physical floating-point register number conversion is performed, and logical general-purpose register number-physical general-purpose register number conversion is performed using the current general-purpose window pointer.

【0087】その後、汎用レジスタmの値をa加える。
このとき、現汎用ウインドウポインタを用いて論理汎用
レジスタ番号−物理汎用レジスタ番号変換が行われる。
Thereafter, the value of the general-purpose register m is added by a.
At this time, logical general-purpose register number-physical general-purpose register number conversion is performed using the current general-purpose window pointer.

【0088】6.浮動小数点レジスタリストロ−ド命令 (命令ニモニック)FLDLI, FRn (機能)汎用レジスタnの値で表される主記憶アドレス
から8バイトのデ−タを読みだし、浮動小数点レジスタ
nに格納する。このとき、論理浮動小数点番号nに関し
て、(現浮動小数点ウインドウポインタ+1)を現浮動
小数点ウインドウポインタとして、論理浮動小数点レジ
スタ番号−物理浮動小数点レジスタ番号変換が行われ、
また、論理浮動小数点レジスタ番号nに関して、(現汎
用ウインドウポインタ+1)を現汎用ウインドウポイン
タとして、論理浮動小数点レジスタ番号−物理汎用レジ
スタ番号変換が行われる。
6. Floating-point register reload instruction (instruction mnemonic) FLDLI, FRn (Function) Reads 8 bytes of data from the main memory address represented by the value of general-purpose register n and stores it in floating-point register n. At this time, regarding the logical floating-point number n, the logical floating-point register number-physical floating-point register number conversion is performed using (current floating-point window pointer + 1) as the current floating-point window pointer.
With respect to the logical floating-point register number n, the logical floating-point register number-physical general-purpose register number conversion is performed using (current general-purpose window pointer + 1) as the current general-purpose window pointer.

【0089】7.汎用レジスタリストロ−ド命令 (命令ニモニック)GLDLIM a(GRm),GR
n (機能)汎用レジスタmの値で表される主記憶アドレス
から8バイトのデ−タを読みだし、汎用レジスタnに格
納する。このとき、論理汎用レジスタ番号nに関して
(現汎用ウインドウポインタ+2)を現汎用ウインドウ
ポインタとして、論理汎用レジスタ番号−物理汎用レジ
スタ番号変換が行われ、汎用レジスタmに関して現汎用
ウインドウポインタを用いて論理汎用レジスタ番号−物
理汎用レジスタ番号変換が行われる。
7. General-purpose register reload instruction (instruction mnemonic) GLDLIM a (GRm), GR
n (Function) 8-byte data is read from the main memory address represented by the value of the general-purpose register m, and stored in the general-purpose register n. At this time, logical general-purpose register number-physical general-purpose register number conversion is performed using (current general-purpose window pointer + 2) as the current general-purpose window pointer for logical general-purpose register number n, and logical general-purpose register m is logically general-purpose using the current general-purpose window pointer. Register number-physical general-purpose register number conversion is performed.

【0090】その後、汎用レジスタmの値をa加える。
このとき、現汎用レジスタウインドウポインタを用いて
論理汎用レジスタ番号−物理汎用レジスタ番号変換が行
われる。
Thereafter, the value of the general-purpose register m is added by a.
At this time, logical general-purpose register number-physical general-purpose register number conversion is performed using the current general-purpose register window pointer.

【0091】8.浮動小数点レジスタリストストア命令 (命令ニモニック)FSTLI FRn (機能)浮動小数点レジスタnの値(8バイト)を汎用
レジスタnの値で表される主記憶アドレスにストアす
る。このとき、論理浮動小数点レジスタ番号nに関して
(現浮動小数点ウインドウポインタ−1)を現浮動小数
点ウインドウポインタとして、論理浮動小数点レジスタ
番号−物理浮動小数点レジスタ番号変換が行われ、ま
た、論理浮動小数点レジスタ番号nに関して(現汎用ウ
インドウポインタ−1)を現汎用ウインドウポインタと
して論理浮動小数点レジスタ番号−物理汎用レジスタ番
号変換が行われる。
8. Floating-point register list store instruction (Instruction mnemonic) FSTLI FRn (Function) Stores the value (8 bytes) of floating-point register n in the main memory address represented by the value of general-purpose register n. At this time, with respect to the logical floating-point register number n, (current floating-point window pointer-1) is used as the current floating-point window pointer, logical floating-point register number-physical floating-point register number conversion is performed. With respect to n, the logical floating-point register number-physical general-purpose register number conversion is performed using (current general-purpose window pointer-1) as the current general-purpose window pointer.

【0092】また、一般の浮動小数点命令(すなわち、
浮動小数点レジスタを用いる命令で上記3−8を除く命
令)では、現浮動小数点ウインドウポインタを用いて、
論理浮動小数点レジスタ番号−物理浮動小数点レジスタ
番号変換が行われる。 また、一般の汎用命令(すなわ
ち、汎用レジスタを用いる命令で、上記3−8を除く命
令)では、現汎用ウインドウポインタを用いて論理汎用
レジスタ番号−物理汎用レジスタ番号変換が行われる。
In addition, a general floating-point instruction (ie,
In the instruction using the floating-point register except the above 3-8), the current floating-point window pointer is used to
Logical floating-point register number-physical floating-point register number conversion is performed. In general general-purpose instructions (that is, instructions using general-purpose registers and excluding the above 3-8), logical general-purpose register number-physical general-purpose register number conversion is performed using the current general-purpose window pointer.

【0093】ソ−スインデックス型演算の式(1)を、
上記新設機能を用いると、表7のようなプログラムにな
る。
Equation (1) of the source index type operation is
When the new function is used, a program as shown in Table 7 is obtained.

【0094】[0094]

【表7】 [Table 7]

【0095】ここで、表7のプログラムの実行に先だっ
て、ベクトルLは、主記憶アドレスad1から始まる連
続領域に格納されているものとする。すなわち、L
(1)の主記憶アドレスがad1、L(2)の主記憶ア
ドレスがad1+8というように格納されている。同様
にベクトルAは、主記憶アドレスad2から始まる連続
領域に格納されているものとする。また、ベクトルB
は、主記憶アドレスad3から始まる連続領域に格納す
るものとする。汎用レジスタ1にはad1が、汎用レジ
スタ2にはad2が、汎用レジスタ4にはN−3、汎用
レジスタ5には1、汎用レジスタ6には0、現浮動小数
点ウインドウポインタには0、現汎用ウインドウポイン
タには0が、また、現ウインドウポインタ有効レジスタ
には1が格納されているものとする。ここで、前述のよ
うに、ベクトルLはリストベクトルLiを式(4)のよ
うに変形したものである。
Here, it is assumed that prior to the execution of the program in Table 7, the vector L is stored in a continuous area starting from the main storage address ad1. That is, L
The main storage address of (1) is stored as ad1, and the main storage address of L (2) is stored as ad1 + 8. Similarly, it is assumed that the vector A is stored in a continuous area starting from the main storage address ad2. Also, the vector B
Is stored in a continuous area starting from the main storage address ad3. Ad1 for general register 1, ad2 for general register 2, N-3 for general register 4, 1 for general register 5, 0 for general register 6, 0 for current floating point window pointer, current general It is assumed that 0 is stored in the window pointer and 1 is stored in the current window pointer valid register. Here, as described above, the vector L is obtained by modifying the list vector Li as shown in Expression (4).

【0096】ここで、表7には、上記の記述にないAD
D命令、SUB命令が含まれているので、該2命令の機
能を以下に述べる。
Here, Table 7 shows ADs not described above.
Since the D instruction and the SUB instruction are included, the functions of the two instructions will be described below.

【0097】ADD GRj,GRm (機能)汎用レジスタjの値と汎用レジスタmの値を加
えて汎用レジスタjに格納する。
ADD GRj, GRm (Function) The value of the general-purpose register j and the value of the general-purpose register m are added and stored in the general-purpose register j.

【0098】SUB GRj,GRm (機能)汎用レジスタjの値から汎用レジスタmの値を
減じて汎用レジスタjに格納する。
SUB GRj, GRm (Function) The value of general-purpose register m is subtracted from the value of general-purpose register j and stored in general-purpose register j.

【0099】以下、表7について説明する。No.1の
GLDM命令では、現汎用ウインドウポインタで論理汎
用レジスタ番号−物理汎用レジスタ番号変換が行われる
ので、L(1)すなわち「B(Li(1))のアドレ
ス」が物理汎用レジスタ<0、20>に格納される。N
o.2のFLDM命令では、現汎用ウインドウポインタ
で論理汎用レジスタ番号−物理汎用レジスタ番号変換
が、現浮動小数点ウインドウポインタで論理浮動小数点
レジスタ番号−物理浮動小数点レジスタ番号変換が行わ
れるので、物理汎用レジスタ<0、20>に格納されて
いるL(1)の示すアドレスの主記憶デ−タすなわちB
(Li(1))が物理浮動小数点レジスタ<0、20>
に格納される。
Hereinafter, Table 7 will be described. No. In the GLDM instruction of No. 1, the logical general-purpose register number-physical general-purpose register number conversion is performed by the current general-purpose window pointer. > Is stored. N
o. In the FLDM instruction No. 2, the logical general-purpose register number-physical general-purpose register number conversion is performed by the current general-purpose window pointer, and the logical floating-point register number-physical floating-point register number conversion is performed by the current floating-point window pointer. 0, 20> at the address indicated by L (1), that is, B
(Li (1)) is a physical floating point register <0, 20>
Is stored in

【0100】No.3のADD命令では、論理汎用レジ
スタ6が指定されており、該レジスタは、式(10)よ
り物理汎用レジスタ6である(すなわち、Global
register)ので、物理汎用レジスタ6の値を
1にする。No.4のCFRWPS命令で現浮動小数点
ウインドウポインタに物理汎用レジスタ6の値をセット
し、すなわち、値を1にする。同様にNo.5のCGR
WPS命令で現汎用ウインドウポインタに物理汎用レジ
スタ6の値をセットし、すなわち、値を1にする。
No. In the ADD instruction of No. 3, the logical general-purpose register 6 is specified, and the register is the physical general-purpose register 6 according to the equation (10) (that is, Global).
register), the value of the physical general-purpose register 6 is set to 1. No. 4 sets the value of the physical general-purpose register 6 to the current floating-point window pointer by the CFRWPS instruction, that is, sets the value to 1. Similarly, No. 5 CGR
The value of the physical general-purpose register 6 is set to the current general-purpose window pointer by the WPS instruction, that is, the value is set to 1.

【0101】No.6のGLDM命令では、現汎用ウイ
ンドウポインタで論理汎用レジスタ番号−物理汎用レジ
スタ番号変換が行われるので、L(2)すなわち「B
(Li(2))のアドレス」が物理浮動小数点レジスタ
<1、20>に格納される。No.7のFLDM命令で
は、現汎用ウインドウポインタで論理汎用レジスタ番号
−物理汎用レジスタ番号変換が、現浮動小数点ウインド
ウポインタで論理浮動小数点レジスタ番号−物理浮動小
数点レジスタ番号変換が行われるので、物理汎用レジス
タ<1、20>に格納されているL(2)の示すアドレ
スの主記憶デ−タすなわちB(Li(2))が物理浮動
小数点レジスタ<1、20>に格納される。 No.8
のADD命令で物理汎用レジスタ6の値を2にする。N
o.9のCFRWPS命令で現浮動小数点ウインドウポ
インタに物理汎用レジスタ6の値をセットし、すなわ
ち、値を2にする。同様にNo.10のCGRWPS命
令で現汎用ウインドウポインタに物理汎用レジスタ6の
値をセットし、すなわち、値を2にする。
No. In the GLDM instruction No. 6, since the conversion of the logical general-purpose register number to the physical general-purpose register number is performed using the current general-purpose window pointer, L (2), ie, “B
(Li (2)) address ”is stored in the physical floating-point register <1, 20>. No. In the FLDM instruction No. 7, the conversion of the logical general-purpose register number to the physical general-purpose register number is performed by the current general-purpose window pointer, and the conversion of the logical floating-point register number to the physical floating-point register number is performed by the current floating-point window pointer. The main storage data of the address indicated by L (2) stored in <1,20>, that is, B (Li (2)) is stored in the physical floating point register <1,20>. No. 8
The value of the physical general-purpose register 6 is set to 2 by the ADD instruction. N
o. The value of the physical general-purpose register 6 is set to the current floating-point window pointer by the CFWWPS instruction of No. 9, that is, the value is set to 2. Similarly, No. The value of the physical general-purpose register 6 is set to the current general-purpose window pointer by the 10 CGRWPS instruction, that is, the value is set to 2.

【0102】No.11のGLDM命令では、現汎用ウ
インドウポインタで論理汎用レジスタ番号−物理汎用レ
ジスタ番号変換が行われるので、L(3)すなわち「B
(Li(3))のアドレス」が物理浮動小数点レジスタ
<2、20>に格納される。
No. In the GLDM instruction No. 11, since the logical general-purpose register number-physical general-purpose register number conversion is performed using the current general-purpose window pointer, L (3), ie, “B
(Li (3) address) is stored in the physical floating-point register <2, 20>.

【0103】No.12のSUB命令で物理汎用レジス
タ6の値を1にする。No.13のCFRWPS命令で
現浮動小数点ウインドウポインタに物理汎用レジスタ6
の値をセットし、すなわち、値を1にする。同様にN
o.14のCGRWPS命令で現汎用ウインドウポイン
タに物理汎用レジスタ6の値をセットし、すなわち、値
を1にする。
No. The value of the physical general-purpose register 6 is set to 1 by the 12 SUB instructions. No. 13 physical general register 6 to the current floating-point window pointer with 13 CFRWPS instructions
Is set, that is, the value is set to 1. Similarly N
o. The value of the physical general-purpose register 6 is set to the current general-purpose window pointer by the 14 CGRWPS instructions, that is, the value is set to 1.

【0104】No.15のGLDLIM命令からNo.
21のBCNT命令までが、ル−プを構成し、N−3回
くりかえし実行される。以下、ル−プ内での現浮動小数
点ウインドウポインタの値をw、現汎用ウインドウポイ
ンタの値をWGとする。第i回目に実行されるル−プに
ついて見る(iは2から始まる)。物理汎用レジスタ1
の値からわかる通り、No.15のGLDLIM命令で
物理汎用レジスタ<WG+2,20>にロ−ドされるの
は、L(i+2)すなわち「B(Li(i+2))のア
ドレス」になる。物理汎用レジスタ<WG+1,20>
の値からわかる通り、No.16のFLDLI命令で物
理浮動小数点レジスタ<w+1,20>にロ−ドされる
のは、B(Li(i+1))になる。汎用レジスタ2の
値からわかる通り、No.17のFSTPOM命令で物
理浮動小数点レジスタ<w−1,20>の値がA(i−
1)の主記憶位置に格納される。No.18のADD命
令、No.19のCFRWPS命令、No.20のCG
RWPS命令で現浮動小数点ウインドウポインタwが+
1され、また、現汎用ウインドウポインタWGが+1さ
れル−プの先頭に戻る。
No. No. 15 from the GLDLIM instruction.
Up to 21 BCNT instructions constitute a loop and are executed N-3 times. Hereinafter, the value of the current floating-point window pointer in the loop is denoted by w, and the value of the current general-purpose window pointer is denoted by WG. Let us look at the loop executed at the i-th time (i starts from 2). Physical general register 1
As can be seen from the values of No. What is loaded into the physical general-purpose register <WG + 2, 20> by the 15 GLDLIM instructions is L (i + 2), that is, “the address of B (Li (i + 2))”. Physical general-purpose register <WG + 1, 20>
As can be seen from the values of No. It is B (Li (i + 1)) that is loaded into the physical floating point register <w + 1, 20> by the 16 FLDLI instructions. As can be seen from the value of general-purpose register 2, 17, the value of the physical floating-point register <w-1, 20> is A (i-
It is stored in the main storage location of 1). No. No. 18 ADD instruction, No. 18 19 CFWWPS instruction, No. 19 20 CGs
With the RWPS instruction, the current floating point window pointer w is +
In addition, the current general-purpose window pointer WG is incremented by one, and returns to the beginning of the loop.

【0105】すなわち、1つのル−プの中では、ル−プ
内での現浮動小数点ウインドウポインタの値をw、現汎
用ウインドウポインタの値をWGとすると、1つ後のル
−プで物理浮動小数点レジスタ<w+2,20>に格納
されるデ−タB(Li(i+2))のアドレス、すなわ
ち、L(i+2)を物理汎用レジスタ<WG+2,20
>に格納し、前のル−プで物理汎用レジスタ<WG+
1,20>に格納されたL(i+1)すなわち「B(L
i(i+1))のアドレス」からB(Li(i+1))
を読みだして、物理浮動小数点レジスタ<w+1,20
>に格納する。2つ前のル−プで物理浮動小数点レジス
タ<w−1,20>に格納されたB(Li(i−1))
を、A(i−1)の主記憶位置に格納する。
That is, in one loop, if the value of the current floating-point window pointer in the loop is w and the value of the current general-purpose window pointer is WG, the physical value of the next loop is The address of the data B (Li (i + 2)) stored in the floating-point register <w + 2, 20>, that is, L (i + 2) is stored in the physical general-purpose register <WG + 2, 20>.
> In the previous loop, and the physical general-purpose register <WG +
1,20>, that is, L (i + 1), ie, “B (L
i (i + 1)) to B (Li (i + 1))
Is read, and the physical floating-point register <w + 1, 20
>. B (Li (i-1)) stored in the physical floating point register <w-1, 20> in the previous loop
Is stored in the main storage location of A (i-1).

【0106】ル−プを抜けた後のNo.22からNo.
28の命令は、未処理の要素の処理であり、No.23
のFSTPOM命令でB(Li(N−2))をA(N−
2)の主記憶アドレスへのストアを行い、No.27の
FSTPOM命令でB(Li(N−1))をA(N−
1)の主記憶アドレスへのストアを行い、No.28の
FSTM命令でB(Li(N))をA(N)の主記憶ア
ドレスへのストアを行う。 ル−プ内の処理をからわか
るように、No.15のGLDLIM命令で論理汎用レ
ジスタ20を指定して汎用レジスタにデ−タを書き込
み、No.16のFLDLI命令で論理汎用レジスタ2
0を指定して汎用レジスタを読みだしているが、アクセ
スしている物理汎用レジスタは<wG+2,20>と<
wG+1,20>であり、異なる。No.16のFLD
LI命令で論理浮動小数点レジスタ番号20を指定し
て、浮動小数点レジスタに書き込みを行ない、No.1
7のFSTPOM命令で論理浮動小数点レジスタ番号2
0を指定して、浮動小数点レジスタから読出しを行なっ
ているが、アクセスしている物理浮動小数点レジスタは
<w+1,20>と<w−1,20>であり異なる。し
たがって、表1のプログラムで発生した、デ−タ読みだ
し待ちで後続命令の実行が待たされるという現象は起こ
らず、言いかえれば、デ−タ読みだしは次ル−プの実行
までに完了すればよいわけで、プログラムが高速に実行
される。また、プログラムで指定しているベクトルデ−
タ格納用の論理浮動小数点レジスタと論理汎用レジスタ
はそれぞれ1本ずつであり、表4のプログラムのように
浮動小数点レジスタと汎用レジスタを数多く使う必要も
ない。
No. after exiting the loop. No. 22 to No. 22.
The instruction of No. 28 is processing of an unprocessed element. 23
B (Li (N-2)) is converted to A (N-
No. 2) is stored in the main memory address. B (Li (N-1)) is converted to A (N-
No. 1) is stored in the main memory address. B (Li (N)) is stored in the main storage address of A (N) by the 28 FSTM instruction. As can be seen from the processing in the loop, No. 15, the logical general-purpose register 20 is designated by the GLDLIM instruction, and data is written into the general-purpose register. Logical general register 2 with 16 FLDLI instructions
The general-purpose register is read out by designating 0, but the physical general-purpose registers being accessed are <wG + 2, 20> and <
wG + 1,20>, which is different. No. 16 FLDs
The logical floating point register number 20 is designated by the LI instruction, and the data is written to the floating point register. 1
7 FSPOM instruction, logical floating point register number 2
Reading from the floating point register is performed by designating 0, but the physical floating point registers accessed are <w + 1, 20> and <w−1, 20>, which are different. Therefore, the phenomenon that the execution of the subsequent instruction is waited while waiting for data reading, which occurs in the program of Table 1, does not occur. In other words, the data reading is completed by the execution of the next loop. That is why the program runs at high speed. Also, the vector data specified in the program
There is only one logical floating-point register and one logical general-purpose register for storing data, and there is no need to use many floating-point registers and general-purpose registers as in the program of Table 4.

【0107】ここで、表7のプログラムには、表1のプ
ログラムにはない現浮動小数点ウインドウポインタと現
汎用ウインドウポインタの更新の処理があってオ−バヘ
ッドになっている。たとえば、表1のプログラムのル−
プが4命令で構成されているのに対し、表7のプログラ
ムのル−プは7命令で構成されている。しかし、表1の
プログラムにあるデ−タ読みだし待ちで後続命令の実行
が待たされるオ−バヘッドの方がはるかに大きい。ま
た、表4のプログラムのようなル−プアンロ−リングの
手法も、プログラムで指定できるレジスタを使い果たし
てしまうと実現できないので、現浮動小数点ウインドウ
ポインタと現汎用ウインドウポインタの更新のオ−バヘ
ッドがあっても、本発明の方式のほうがすぐれていると
考えられる。 次にタ−ゲットインデックス型演算の式
(2)を、上記新設機能を用いると、表8のようなプロ
グラムになる。
Here, the program of Table 7 has a process of updating the current floating-point window pointer and the current general-purpose window pointer which is not included in the program of Table 1, and thus has an overhead. For example, the program rule in Table 1
While the loop is composed of four instructions, the loop of the program in Table 7 is composed of seven instructions. However, the overhead of waiting for data reading in the program of Table 1 and waiting for the execution of the subsequent instruction is much larger. Also, the loop unrolling method as shown in the program of Table 4 cannot be realized if the registers that can be specified by the program are exhausted, so that there is overhead for updating the current floating-point window pointer and the current general-purpose window pointer. However, it is considered that the method of the present invention is superior. Next, when the above-mentioned new function is used for the expression (2) of the target index type operation, a program as shown in Table 8 is obtained.

【0108】[0108]

【表8】 [Table 8]

【0109】ここで、表8のプログラムの実行に先だっ
て、ベクトルLは、主記憶アドレスad1から始まる連
続領域に格納されているものとする。すなわち、L
(1)の主記憶アドレスがad1、L(2)の主記憶ア
ドレスがad1+8というように格納されている。同様
にベクトルBは、主記憶アドレスad2から始まる連続
領域に格納するものとする。また、ベクトルAは、主記
憶アドレスad3から始まる連続領域に格納されている
ものとする。汎用レジスタ1にはad1が、汎用レジス
タ2にはad2が、汎用レジスタ4にはN−3、汎用レ
ジスタ5には1、汎用レジスタ6には0、現浮動小数点
ウインドウポインタには0、現汎用ウインドウポインタ
には0が、また、現ウインドウポインタ有効レジスタに
は1が格納されているものとする。ここで、前述のよう
に、ベクトルLはリストベクトルLiを式(4)のよう
に変形したものである。
Here, it is assumed that the vector L is stored in a continuous area starting from the main storage address ad1 prior to the execution of the program shown in Table 8. That is, L
The main storage address of (1) is stored as ad1, and the main storage address of L (2) is stored as ad1 + 8. Similarly, the vector B is stored in a continuous area starting from the main storage address ad2. It is assumed that the vector A is stored in a continuous area starting from the main storage address ad3. Ad1 for general register 1, ad2 for general register 2, N-3 for general register 4, 1 for general register 5, 0 for general register 6, 0 for current floating point window pointer, current general It is assumed that 0 is stored in the window pointer and 1 is stored in the current window pointer valid register. Here, as described above, the vector L is obtained by modifying the list vector Li as shown in Expression (4).

【0110】以下、表8について説明する。No.1の
GLDM命令では、現汎用ウインドウポインタで論理汎
用レジスタ番号−物理汎用レジスタ番号変換が行われる
ので、L(1)すなわち「A(Li(1))のアドレ
ス」が物理汎用レジスタ<0、20>に格納される。N
o.2のFLDM命令では、現浮動小数点ウインドウポ
インタで論理浮動小数点レジスタ番号−物理浮動小数点
レジスタ番号変換が行われるので、B(1)が物理浮動
小数点レジスタ<0、20>に格納される。
Hereinafter, Table 8 will be described. No. In the GLDM instruction of No. 1, since the conversion of the logical general-purpose register number to the physical general-purpose register number is performed by the current general-purpose window pointer, L (1), that is, the “address of A (Li (1))” is set to the physical general-purpose register <0, 20. > Is stored. N
o. In the FLDM instruction No. 2, B (1) is stored in the physical floating-point register <0, 20> because the logical floating-point register number-physical floating-point register number conversion is performed by the current floating-point window pointer.

【0111】No.3のADD命令で、物理汎用レジス
タ6の値を1にする(汎用レジスタ6はGlobal
registerなので論理汎用レジスタ番号−物理汎
用レジスタ番号変換を受けない)。No.4のCFRW
PS命令で現浮動小数点ウインドウポインタに物理汎用
レジスタ6の値をセットし、値を1にする。同様にN
o.5のCGRWPS命令で現汎用ウインドウポインタ
に物理汎用レジスタ6の値をセットし、値を1にする。
No. 3, the value of the physical general-purpose register 6 is set to 1 (the general-purpose register 6 is
Since the register is a register, the logical general-purpose register number-physical general-purpose register number is not converted.) No. 4 CFRW
The value of the physical general-purpose register 6 is set to the current floating-point window pointer by the PS instruction, and the value is set to 1. Similarly N
o. The value of the physical general-purpose register 6 is set to the current general-purpose window pointer by the CGRWPS instruction of No. 5, and the value is set to 1.

【0112】No.6のGLDM命令では、現汎用ウイ
ンドウポインタで論理汎用レジスタ番号−物理汎用レジ
スタ番号変換が行われるので、L(2)すなわち「A
(Li(2))のアドレス」が物理汎用レジスタ<1、
20>に格納される。No.7のFLDM命令では、現
浮動小数点ウインドウポインタで論理浮動小数点レジス
タ番号−物理浮動小数点レジスタ番号変換が行われるの
で、B(2)が物理浮動小数点レジスタ<1、20>に
格納される。
No. In the GLDM instruction No. 6, since the conversion of the logical general-purpose register number to the physical general-purpose register number is performed using the current general-purpose window pointer, L (2), ie, “A
(Li (2) address) is a physical general-purpose register <1,
20>. No. In the FLDM instruction No. 7, B (2) is stored in the physical floating-point register <1, 20> because the logical floating-point register number-physical floating-point register number conversion is performed by the current floating-point window pointer.

【0113】No.8のADD命令で、物理汎用レジス
タ6の値を2にする(汎用レジスタ6はGlobal
registerなので論理汎用レジスタ番号−物理汎
用レジスタ番号変換を受けない)。No.9のCFRW
PS命令で現浮動小数点ウインドウポインタに物理汎用
レジスタ6の値をセットし、値を2にする。同様にN
o.10のCGRWPS命令で現汎用ウインドウポイン
タに物理汎用レジスタ6の値をセットし、値を2にす
る。
No. 8, the value of the physical general-purpose register 6 is set to 2 (the general-purpose register 6 is
Since the register is a register, the logical general-purpose register number-physical general-purpose register number is not converted.) No. 9 CFRW
The value of the physical general-purpose register 6 is set to the current floating-point window pointer by the PS instruction, and the value is set to 2. Similarly N
o. The value of the physical general-purpose register 6 is set to the current general-purpose window pointer by the 10 CGRWPS instruction, and the value is set to 2.

【0114】No.11のGLDM命令では、現汎用ウ
インドウポインタで論理汎用レジスタ番号−物理汎用レ
ジスタ番号変換が行われるので、L(3)すなわち「A
(Li(3))のアドレス」が物理汎用レジスタ<2、
20>に格納される。
No. In the GLDM instruction of No. 11, since the conversion of the logical general-purpose register number to the physical general-purpose register number is performed using the current general-purpose window pointer, L (3), that is, “A
(Li (3)) address is a physical general-purpose register <2,
20>.

【0115】No.12のSUB命令で物理汎用レジス
タ6の値を1にする。No.13のCFRWPS命令で
現浮動小数点ウインドウポインタに物理汎用レジスタ6
の値をセットし、値を1にする。同様にNo.14のC
GRWPS命令で現汎用ウインドウポインタに物理汎用
レジスタ6の値をセットし、値を1にする。
No. The value of the physical general-purpose register 6 is set to 1 by the 12 SUB instructions. No. 13 physical general register 6 to the current floating-point window pointer with 13 CFRWPS instructions
Is set, and the value is set to 1. Similarly, No. 14 C
The value of the physical general-purpose register 6 is set to the current general-purpose window pointer by the GRWPS instruction, and the value is set to 1.

【0116】No.15のGLDLIM命令からNo.
21のBCNT命令までが、ル−プを構成し、N−3回
くりかえし実行される。以下、ル−プ内での現浮動小数
点ウインドウポインタの値をw、現汎用ウインドウポイ
ンタの値をWGとする。第i回目に実行されるル−プに
ついて見る(iは2から始まる)。汎用レジスタ1の値
からわかる通り、No.15のGLDLIM命令で物理
汎用レジスタ<WG+2,20>にロ−ドされるのは、
L(i+2)すなわち「A(Li(i+2))のアドレ
ス」になる。汎用レジスタ2の値からわかる通り、N
o.16のFLDPRM命令で物理浮動小数点レジスタ
<w+1、20>にロ−ドされるのは、B(i+1)に
なる。No.17のFSTLI命令で、物理浮動小数点
レジスタ<w+1、20>の値、すなわちB(i−1)
がA(Li(i−1))の主記憶位置に格納される。N
o.18のADD命令、No.19のCFRWPS命
令、No.20のCGRWPS命令で現浮動小数点ウイ
ンドウポインタwが+1され、また、現汎用ウインドウ
ポインタWGが+1されル−プの先頭に戻る。
No. No. 15 from the GLDLIM instruction.
Up to 21 BCNT instructions constitute a loop and are executed N-3 times. Hereinafter, the value of the current floating-point window pointer in the loop is denoted by w, and the value of the current general-purpose window pointer is denoted by WG. Let us look at the loop executed at the i-th time (i starts from 2). As can be seen from the value of general-purpose register 1, No. The 15 GLDLIM instructions loaded into the physical general-purpose register <WG + 2, 20>
L (i + 2), that is, “address of A (Li (i + 2))”. As can be seen from the value of general register 2, N
o. It is B (i + 1) that is loaded into the physical floating point register <w + 1, 20> by the 16 FLDPRM instructions. No. In 17 FSTLI instructions, the value of the physical floating-point register <w + 1, 20>, that is, B (i−1)
Is stored in the main storage location of A (Li (i-1)). N
o. No. 18 ADD instruction, No. 18 19 CFWWPS instruction, No. 19 The current floating-point window pointer w is incremented by 1 with the 20 CGRWPS instructions, and the current general-purpose window pointer WG is incremented by 1 to return to the beginning of the loop.

【0117】すなわち、1つのル−プの中では、ル−プ
内での現浮動小数点ウインドウポインタの値をw、現汎
用ウインドウポインタの値をWGとすると、3つ後のル
−プでB(i+2)をストアするアドレスL(i+2)
すなわち「A(Li(i+2))のアドレス」を物理汎
用レジスタ<WG+2,20>に格納し、2つ後のル−
プで主記憶にストアされるB(i+1)を物理浮動小数
点レジスタ<w+1,20>に格納し、3つ前のル−プ
で物理汎用レジスタ<WG−1,20>に格納されたL
(i−1)すなわち「A(Li(i−1))のアドレ
ス」に、2つ前のル−プで物理浮動小数点レジスタ<w
−1,20>に格納されたB(i−1)をストアする。
That is, in one loop, assuming that the value of the current floating-point window pointer in the loop is w and the value of the current general-purpose window pointer is WG, B in the next three loops Address L (i + 2) for storing (i + 2)
That is, the “address of A (Li (i + 2))” is stored in the physical general-purpose register <WG + 2, 20>, and the next two
B (i + 1) stored in the main memory by the loop is stored in the physical floating-point register <w + 1,20>, and the L (L + 1) stored in the physical general-purpose register <WG-1,20> by the loop three before is stored.
(I-1), ie, "address of A (Li (i-1))", the physical loop register <w
-1, 20> is stored.

【0118】ル−プを抜けた後のNo.22からNo.
28の命令は、未処理の要素の処理であり、No.23
のFSTLI命令でB(N−2)をA(Li(N−
2))の主記憶アドレスへのストアを行い、No.27
のFSTLI命令でB(N−1)をA(Li(N−
1))の主記憶アドレスへのストアを行い、No.28
のFSTM命令でB(N)をA(Li(N))の主記憶
アドレスへのストアを行う。
No. after exiting the loop. No. 22 to No. 22.
The instruction of No. 28 is processing of an unprocessed element. 23
B (N-2) with A (Li (N-
2)) is stored in the main memory address, and 27
B (N-1) with A (Li (N-
1)) is stored in the main storage address, and No. 1 is stored. 28
B (N) is stored in the main storage address of A (Li (N)) by the FSTM instruction.

【0119】ル−プ内の処理をからわかるように、N
o.15のGLDLIM命令で論理汎用レジスタ番号2
0を指定して、汎用レジスタに書き込みを行い、No.
17のFSTLI命令で、論理浮動小数点レジスタ番号
20を指定して、汎用レジスタを読みだしているが、ア
クセスしている物理汎用レジスタは<WG+2,20>
と<WG−1,20>であり、異なる。No.16のF
LDPRM命令で論理浮動小数点レジスタ番号20を指
定して浮動小数点レジスタにデ−タを書き込み、直後の
No.17のFSTLI命令で論理浮動小数点レジスタ
番号20を指定して浮動小数点レジスタを読みだしてい
るが、アクセスしている物理浮動小数点レジスタは<w
+1,20>と<w−1,20>であり、異なる。した
がって、表2のプログラムで発生した、デ−タ読みだし
待ちで後続命令の実行が待たされるという現象は起こら
ず、言いかえれば、デ−タ読みだしは次ル−プの実行ま
でに完了すればよいわけで、プログラムが高速に実行さ
れる。また、プログラムで指定しているベクトルデ−タ
を格納する論理浮動小数点レジスタと論理汎用レジスタ
はそれぞれ1本ずつであり、表5のプログラムのように
浮動小数点レジスタと汎用レジスタを数多く使う必要も
ない。
As can be seen from the processing in the loop, N
o. Logical general register number 2 with 15 GLDLIM instructions
0 is designated, and writing is performed to the general-purpose register.
The FSTLI instruction of No. 17 specifies the logical floating-point register number 20 to read the general-purpose register, but the physical general-purpose register being accessed is <WG + 2, 20>
And <WG-1, 20>, which are different. No. 16 F
The data is written to the floating-point register by designating the logical floating-point register number 20 by the LDPRM instruction. The FSTLI instruction of No. 17 specifies the logical floating-point register number 20 to read the floating-point register, but the physical floating-point register being accessed is <w
+1 and 20> and <w−1, 20>, which are different from each other. Therefore, the phenomenon that the execution of the subsequent instruction is waited while waiting for data reading, which occurs in the program of Table 2, does not occur. In other words, the data reading is completed by the execution of the next loop. That is why the program runs at high speed. Further, there is only one logical floating point register and one logical general purpose register for storing the vector data specified by the program, and there is no need to use many floating point registers and general purpose registers as in the program of Table 5.

【0120】ここで、表8のプログラムには、表2のプ
ログラムにはない現浮動小数点ウインドウポインタと現
汎用ウインドウポインタの更新の処理があってオ−バヘ
ッドになっている。たとえば、表2のプログラムのル−
プが4命令で構成されているのに対し、表8のプログラ
ムのル−プは7命令で構成されている。しかし、表2の
プログラムにあるデ−タ読みだし待ちで後続命令の実行
が待たされるオ−バヘッドの方がはるかに大きい。ま
た、表5のプログラムのようなル−プアンロ−リングの
手法も、プログラムで指定できるレジスタを使い果たし
てしまうと実現できないので、現浮動小数点ウインドウ
ポインタと現汎用ウインドウポインタの更新のオ−バヘ
ッドがあっても、本発明の方式のほうがすぐれていると
考えられる。
Here, the program in Table 8 has a process of updating the current floating-point window pointer and the current general-purpose window pointer which is not included in the program in Table 2, and thus has an overhead. For example, the program rule in Table 2
While the loop is composed of four instructions, the loop of the program in Table 8 is composed of seven instructions. However, the overhead of waiting for data reading in the program of Table 2 and waiting for execution of the subsequent instruction is much larger. Also, the loop unrolling method as in the program of Table 5 cannot be realized if the registers that can be specified by the program are exhausted, so that the overhead of updating the current floating-point window pointer and the current general-purpose window pointer is required. However, it is considered that the method of the present invention is superior.

【0121】次に粒子推進型演算の式(3)を、上記新
設機能を用いると、表9のようなプログラムになる。
Next, when the equation (3) of the particle propulsion type calculation is used with the above-described new function, a program as shown in Table 9 is obtained.

【0122】[0122]

【表9】 [Table 9]

【0123】ここで、表9のプログラムの実行に先だっ
て、ベクトルLは、主記憶アドレスad1から始まる連
続領域に格納されているものとする。すなわち、L
(1)の主記憶アドレスがad1、L(2)の主記憶ア
ドレスがad1+8というように格納されている。同様
にベクトルAは、主記憶アドレスad3から始まる連続
領域に格納されているものとする。また、ベクトルB
は、主記憶アドレスad2から始まる連続領域に格納す
るものとする。汎用レジスタ1にはad1が、汎用レジ
スタ2にはad2が、汎用レジスタ4にはN−3、汎用
レジスタ5には1、汎用レジスタ6には0、現浮動小数
点ウインドウポインタには0、現汎用ウインドウポイン
タには0が、また、現ウインドウポインタ有効レジスタ
には1が格納されているものとする。ここで、前述のよ
うに、ベクトルLはリストベクトルLiを式(4)のよ
うに変形したものである。
Here, it is assumed that the vector L is stored in a continuous area starting from the main storage address ad1 prior to the execution of the program shown in Table 9. That is, L
The main storage address of (1) is stored as ad1, and the main storage address of L (2) is stored as ad1 + 8. Similarly, it is assumed that the vector A is stored in a continuous area starting from the main storage address ad3. Also, the vector B
Is stored in a continuous area starting from the main storage address ad2. Ad1 for general register 1, ad2 for general register 2, N-3 for general register 4, 1 for general register 5, 0 for general register 6, 0 for current floating point window pointer, current general It is assumed that 0 is stored in the window pointer and 1 is stored in the current window pointer valid register. Here, as described above, the vector L is obtained by modifying the list vector Li as shown in Expression (4).

【0124】以下、表9について説明する。No.1の
GLDM命令では、現汎用ウインドウポインタで論理汎
用レジスタ番号−物理汎用レジスタ番号変換が行われる
ので、L(1)が物理汎用レジスタ<0,20>に格納
される。No.2のFLDM命令では、現浮動小数点ウ
インドウポインタで論理浮動小数点レジスタ番号−物理
浮動小数点レジスタ番号変換が、現汎用ウインドウポイ
ンタで論理汎用レジスタ番号−物理汎用レジスタ番号変
換が行われるので、L(1)の示すアドレスの主記憶デ
−タすなわちA(Li(1))が物理浮動小数点レジス
タ<0、20>に格納される。No.3のFLDM命令
では、現浮動小数点ウインドウポインタで論理浮動小数
点レジスタ番号−物理浮動小数点レジスタ番号変換が行
われるので、B(1)が物理浮動小数点レジスタ<0、
21>に格納される。No.4のFADD命令では、現
浮動小数点ウインドウポインタで論理浮動小数点レジス
タ番号−物理浮動小数点レジスタ番号変換が行われるの
で、物理浮動小数点レジスタ<0、20>の値と物理浮
動小数点レジスタ<0、21>の値が加え合わされ、そ
の結果すなわち「A(Li(1))+B(1)」が物理
浮動小数点レジスタ<0、20>に格納される。
Hereinafter, Table 9 will be described. No. In the GLDM instruction of No. 1, since the conversion of the logical general-purpose register number to the physical general-purpose register number is performed by the current general-purpose window pointer, L (1) is stored in the physical general-purpose register <0, 20>. No. In the FLDM instruction No. 2, since the conversion of the logical floating-point register number to the physical floating-point register number is performed by the current floating-point window pointer and the conversion of the logical general-purpose register number to the physical general-purpose register number is performed by the current general-purpose window pointer, L (1) Is stored in the physical floating point register <0, 20>. No. In the FLDM instruction 3, the logical floating point register number-physical floating point register number conversion is performed using the current floating point window pointer.
21>. No. In the FADD instruction No. 4, since the logical floating-point register number-physical floating-point register number conversion is performed by the current floating-point window pointer, the value of the physical floating-point register <0, 20> and the physical floating-point register <0, 21> , And the result, that is, “A (Li (1)) + B (1)” is stored in the physical floating-point register <0, 20>.

【0125】No.5のADD命令で、物理汎用レジス
タ6の値を1にする(汎用レジスタ6は、式(10)よ
りGlobal register)。No.6のCF
RWPS命令で現浮動小数点ウインドウポインタに物理
汎用レジスタ6の値をセットし、すなわち、値を1にす
る。同様にNo.7のCGRWPS命令で現汎用ウイン
ドウポインタに物理汎用レジスタ6の値をセットし、す
なわち、値を1にする。 No.8のGLDM命令で
は、現汎用ウインドウポインタで論理汎用レジスタ番号
−物理汎用レジスタ番号変換が行われるので、L(2)
すなわち「A(Li(2))のアドレス」が物理汎用レ
ジスタ<1,20>に格納される。No.9のFLDM
命令では、現浮動小数点ウインドウポインタで論理浮動
小数点レジスタ番号−物理浮動小数点レジスタ番号変換
が行われ、現汎用ウインドウポインタで論理汎用レジス
タ番号−物理汎用レジスタ番号変換が行われるので、L
(2)の示すアドレスの主記憶デ−タすなわちA(Li
(2))が物理浮動小数点レジスタ<1、20>に格納
される。No.10のFLDM命令では、現浮動小数点
ウインドウポインタで論理浮動小数点レジスタ番号−物
理浮動小数点レジスタ番号変換が行われるので、B
(2)が物理浮動小数点レジスタ<1、21>に格納さ
れる。
No. With the ADD instruction of 5, the value of the physical general-purpose register 6 is set to 1 (the general-purpose register 6 is a global register according to the equation (10)). No. 6 CF
The value of the physical general-purpose register 6 is set to the current floating-point window pointer by the RWPS instruction, that is, the value is set to 1. Similarly, No. 7, the value of the physical general-purpose register 6 is set in the current general-purpose window pointer by the CGRWPS instruction 7, that is, the value is set to 1. No. In the GLDM instruction of No. 8, since the conversion of the logical general-purpose register number to the physical general-purpose register number is performed using the current general-purpose window pointer, L (2)
That is, the “address of A (Li (2))” is stored in the physical general-purpose register <1, 20>. No. 9 FLDM
In the instruction, logical floating-point register number-physical floating-point register number conversion is performed by the current floating-point window pointer, and logical general-purpose register number-physical general-purpose register number conversion is performed by the current general-purpose window pointer.
The main memory data of the address indicated by (2), that is, A (Li
(2)) is stored in the physical floating-point register <1, 20>. No. In the FLDM instruction No. 10, since the logical floating point register number-physical floating point register number conversion is performed by the current floating point window pointer, B
(2) is stored in the physical floating-point register <1, 21>.

【0126】No.11のADD命令で、物理汎用レジ
スタ6の値を2にする。No.12のCFRWPS命令
で現浮動小数点ウインドウポインタに物理汎用レジスタ
6の値をセットし、すなわち、値を2にする。同様にN
o.13のCGRWPS命令で現汎用ウインドウポイン
タに物理汎用レジスタ6の値をセットし、すなわち、値
を2にする。
No. The value of the physical general-purpose register 6 is set to 2 by the 11 ADD instruction. No. The value of the physical general-purpose register 6 is set to the current floating-point window pointer by the 12 CFRWPS instructions, that is, the value is set to 2. Similarly N
o. The value of the physical general-purpose register 6 is set to the current general-purpose window pointer by the 13 CGRWPS instruction, that is, the value is set to 2.

【0127】No.14のGLDM命令では、現汎用ウ
インドウポインタで論理汎用レジスタ番号−物理汎用レ
ジスタ番号変換が行われるので、L(3)すなわち「A
(Li(3))のアドレス」が物理汎用レジスタ<2、
20>に格納される。 No.15のSUB命令で物理
汎用レジスタ6の値を1にする。No.16のCFRW
PS命令で現浮動小数点ウインドウポインタに物理汎用
レジスタ6の値をセットし、すなわち、値を1にする。
同様にNo.17のCGRWPS命令で現汎用ウインド
ウポインタに物理汎用レジスタ6の値をセットし、すな
わち、値を1にする。
No. In the GLDM instruction of No. 14, since the logical general-purpose register number-physical general-purpose register number conversion is performed by the current general-purpose window pointer, L (3), that is, "A
(Li (3)) address is a physical general-purpose register <2,
20>. No. The value of the physical general-purpose register 6 is set to 1 by the 15 SUB instructions. No. 16 CFRW
The value of the physical general register 6 is set to the current floating point window pointer by the PS instruction, that is, the value is set to 1.
Similarly, No. The value of the physical general-purpose register 6 is set to the current general-purpose window pointer by the 17 CGRWPS instruction, that is, the value is set to 1.

【0128】No.18のGLDLIM命令からNo.
26のBCNT命令までが、ル−プを構成し、N−3回
くりかえし実行される。以下、ル−プ内での現浮動小数
点ウインドウポインタの値をw、現汎用ウインドウポイ
ンタの値をWGとする。第i回目に実行されるル−プに
ついて見る(iは2から始まる)。汎用レジスタ1の値
からわかる通り、No.18のGLDLIM命令で物理
汎用レジスタ<WG+2,20>にロ−ドされるのは、
L(i+2)すなわち「A(Li(i+2))のアドレ
ス」になる。物理汎用レジスタ<WG+1,20>から
わかる通り、No.19のFLDLI命令で物理浮動小
数点レジスタ<w+1,20>にロ−ドされるのは、A
(Li(i+1))になり、汎用レジスタ2の値からわ
かる通り、No.20のFLDPRM命令で物理浮動小
数点レジスタ<w+1,21>にロ−ドされるのは、B
(i+1)になる。No.21のFADD命令で、物理
浮動小数点レジスタ<w,20>の値すなわちA(Li
(i))と物理浮動小数点レジスタ<w,21>の値す
なわちB(i)が加算され、物理浮動小数点レジスタ<
w,20>に格納される。No.21のFSTLI命令
で、物理浮動小数点レジスタ<w−1,20>の値すな
わち「A(Li(i−1))+B(i−1)」が、汎用
レジスタ<WG−1,20>で示される主記憶アドレス
すなわちL(i−1)(すなわち「A(Li(i−
1))のアドレス」)に格納される。No.23のAD
D命令、No.24のCFRWPS命令、No.25の
CGRWPS命令で現浮動小数点ウインドウポインタw
が+1され、また、現汎用ウインドウポインタWGが+
1されル−プの先頭に戻る。
No. No. 18 from the GLDLIM instruction.
Up to 26 BCNT instructions constitute a loop and are repeatedly executed N-3 times. Hereinafter, the value of the current floating-point window pointer in the loop is denoted by w, and the value of the current general-purpose window pointer is denoted by WG. Let us look at the loop executed at the i-th time (i starts from 2). As can be seen from the value of general-purpose register 1, No. What is loaded to the physical general-purpose register <WG + 2, 20> by the 18 GLDLIM instruction is
L (i + 2), that is, “address of A (Li (i + 2))”. As can be seen from the physical general-purpose register <WG + 1, 20>, What is loaded into the physical floating-point register <w + 1, 20> by the 19 FLDLI instructions is A
(Li (i + 1)), and as can be seen from the value of the general-purpose register 2, No. What is loaded into the physical floating point register <w + 1, 21> by the 20 FLDPRM instructions is B
(I + 1). No. 21, the value of the physical floating point register <w, 20>, that is, A (Li
(I)) and the value of the physical floating-point register <w, 21>, that is, B (i), are added, and the physical floating-point register <
w, 20>. No. In the FSTLI instruction No. 21, the value of the physical floating-point register <w-1, 20>, that is, "A (Li (i-1)) + B (i-1)" is indicated by the general-purpose register <WG-1, 20>. Main memory address, i.e., L (i-1) (i.e., "A (Li (i-
1)) address)). No. 23 AD
D instruction, No. 24 CFRWPS instruction, No. 24 25 CGRWPS instructions, the current floating point window pointer w
Is incremented by 1, and the current general-purpose window pointer WG is incremented by +
1 is returned to the beginning of the loop.

【0129】すなわち、1つのル−プの中では、ル−プ
内での現浮動小数点ウインドウポインタの値をw、現汎
用ウインドウポインタの値をWGとすると、No.18
のGLDLIM命令で、1つ後のル−プで物理浮動小数
点レジスタ<w+2,20>に格納されるデ−タA(L
i(i+2))のアドレスL(i+2)すなわち「A
(Li(i+2))のアドレス」を、主記憶から読み出
し、物理汎用レジスタ<WG+2,20>に格納し、N
o.19のFLDLI命令で、1つ前のル−プで物理汎
用レジスタ<WG+1,20>に格納されたL(i+
1)すなわち「A(Li(i+1))のアドレス」から
A(Li(i+1))を読みだして、物理浮動小数点レ
ジスタ<w+1,20>に格納し、No.20のFLD
PRM命令で、1つ後のル−プで加算に使われる、デ−
タB(i+1)を物理浮動小数点レジスタ<w+1,2
1>に格納し、No.21のFADD命令で、前のル−
プで物理浮動小数点レジスタ<w,20>と物理浮動小
数点レジスタ<w,21>にそれぞれロ−ドされたA
(Li(i))とB(i)を加えあわせて、物理浮動小
数点レジスタ<w,20>に格納し、No.22のFS
TLI命令で、1つ前のル−プで物理浮動小数点レジス
タ<w−1,20>に格納された、A(Li(i−
1))+B(i−1)を、3つ前のル−プで物理汎用レ
ジスタ<WG−1,20>にロ−ドされた主記憶アドレ
スすなわちL(i−1)(すなわち「A(Li(i−
1))のアドレス」)にストアする。
That is, in one loop, if the value of the current floating-point window pointer in the loop is w and the value of the current general-purpose window pointer is WG, no. 18
GLDLIM instruction, the data A (L) stored in the physical floating-point register <w + 2, 20> in the next loop
i (i + 2)) at address L (i + 2), ie, “A
(Li (i + 2) address) is read from the main memory and stored in the physical general-purpose register <WG + 2, 20>.
o. With the FLDLI instruction of No. 19, L (i +) stored in the physical general-purpose register <WG + 1, 20> in the immediately preceding loop
1), that is, A (Li (i + 1)) is read from “address of A (Li (i + 1))” and stored in the physical floating-point register <w + 1, 20>. 20 FLDs
In the PRM instruction, the data used for addition in the next loop
Data B (i + 1) is stored in the physical floating-point register <w + 1,2
1>. With the 21 FADD instruction, the previous loop
Loaded into the physical floating-point register <w, 20> and the physical floating-point register <w, 21>, respectively.
(Li (i)) and B (i) are added and stored in the physical floating-point register <w, 20>. 22 FS
In the TLI instruction, A (Li (i−i) stored in the physical floating-point register <w−1, 20> in the previous loop.
1)) + B (i-1) is the main memory address loaded into the physical general-purpose register <WG-1, 20>, ie, L (i-1) (that is, "A ( Li (i-
1)))).

【0130】ル−プを抜けた後のNo.28からNo.
36の命令は、未処理の要素の処理であり、No.30
のFSTLI命令でA(Li(N−2))+B(N−
2)をA(Li(N−2))の主記憶アドレスへのスト
アを行い、No.35のFSTLI命令でA(Li(N
−1))+B(N−1)をA(Li(N−1))の主記
憶アドレスへのストアを行ない、No.36のFSTM
命令でA(Li(N))+B(N)をA(Li(N))
の主記憶アドレスへのストアを行なう。
No. after exiting the loop. 28 to No. 28
The instruction No. 36 is processing of an unprocessed element. 30
A (Li (N-2)) + B (N-
2) is stored in the main storage address of A (Li (N−2)), and No. 2 is stored. A (Li (N
-1)) + B (N-1) is stored in the main memory address of A (Li (N-1)). 36 FSTM
A (Li (N)) + B (N) is converted to A (Li (N))
Is stored in the main storage address.

【0131】ル−プ内の処理をからわかるように、N
o.18のGLDLIM命令で論理汎用レジスタ番号2
0を指定して、汎用レジスタに書き込みを行い、No.
19のFLDLI命令で論理浮動小数点レジスタ番号2
0を指定して汎用レジスタの読出しを行っているが、ア
クセスしている物理汎用レジスタは<WG+2,20>
と<WG+1,20>であり、異なる。また、No.1
9のFLDLI命令で論理浮動小数点レジスタ番号20
を指定して浮動小数点レジスタにデ−タを書き込み、N
o.21のFADD命令で論理浮動小数点レジスタ番号
20を指定して浮動小数点レジスタから読みだしを行な
っているが、アクセスしている物理浮動小数点レジスタ
は<w+1,20>と<w,20>であり、異なる。ま
た、No.20のFLDPRM命令で論理浮動小数点レ
ジスタ番号21を指定して浮動小数点レジスタにデ−タ
を書き込み、No.20のFADD命令で論理浮動小数
点レジスタ番号21を指定して浮動小数点レジスタから
読みだしを行なっているが、アクセスしている物理浮動
小数点レジスタは<w+1,21>と<w,21>であ
り、異なる。また、No.21のFADD命令で論理浮
動小数点レジスタ番号20を指定して、浮動小数点レジ
スタに書き込みを行い、No.22のFSTLI命令で
論理浮動小数点レジスタ番号20を指定して浮動小数点
レジスタから読出しを行っているが、アクセスしている
物理浮動小数点レジスタは<w,20>と<w−1,2
0>であり、異なる。したがって、表3のプログラムで
発生した、デ−タ読みだし待ちで後続命令の実行が待た
されるという現象は起こらず、言いかえれば、デ−タ読
みだしは次ル−プの実行までに完了すればよいわけで、
プログラムが高速に実行される。 また、プログラムで
指定しているベクトルデ−タを格納する論理浮動小数点
レジスタは2本、論理汎用レジスタは1本だけであり、
表6のプログラムのように浮動小数点レジスタと汎用レ
ジスタを数多く使う必要もない。
As can be seen from the processing in the loop, N
o. Logical general register number 2 by 18 GLDLIM instructions
0 is designated, and writing is performed to the general-purpose register.
Logical floating point register number 2 with 19 FLDLI instructions
The general-purpose register is read by designating 0, but the physical general-purpose register being accessed is <WG + 2, 20>
And <WG + 1,20>, which are different. In addition, No. 1
Floating point register number 20 by FLDLI instruction 9
And write data to the floating-point register.
o. Reading from the floating-point register by designating the logical floating-point register number 20 with the 21 FADD instruction, the physical floating-point registers being accessed are <w + 1, 20> and <w, 20>. different. In addition, No. 20, the data is written to the floating-point register by designating the logical floating-point register number 21 with the FLDPRM instruction of No. 20; Reading is performed from the floating-point register by designating the logical floating-point register number 21 with the 20 FADD instructions, but the physical floating-point registers accessed are <w + 1, 21> and <w, 21>. different. In addition, No. The logical floating-point register number 20 is designated by the FADD instruction of No. 21 and the floating-point register is written. The FSTLI instruction No. 22 specifies the logical floating-point register number 20 to read from the floating-point register, but the physical floating-point registers being accessed are <w, 20> and <w-1,
0>, which is different. Therefore, the phenomenon that the execution of the subsequent instruction is waited while waiting for data reading, which occurs in the program of Table 3, does not occur. In other words, the data reading is completed by the execution of the next loop. All you have to do is
The program runs fast. Also, there are two logical floating-point registers and only one logical general-purpose register for storing vector data specified by the program.
It is not necessary to use many floating-point registers and general-purpose registers as in the program of Table 6.

【0132】ここで、表9のプログラムには、表3のプ
ログラムにはない現浮動小数点ウインドウポインタと現
汎用ウインドウポインタの更新の処理があってオ−バヘ
ッドになっている。たとえば、表3のプログラムのル−
プが6命令で構成されているのに対し、表9のプログラ
ムのル−プは9命令で構成されている。しかし、表3の
プログラムにあるデ−タ読みだし待ちで後続命令の実行
が待たされるオ−バヘッドの方がはるかに大きい。ま
た、表6のプログラムのようなル−プアンロ−リングの
手法も、プログラムで指定できるレジスタを使い果たし
てしまうと実現できないので、現浮動小数点ウインドウ
ポインタと現汎用ウインドウポインタの更新のオ−バヘ
ッドがあっても、本発明の方式のほうがすぐれていると
考えられる。
Here, the program in Table 9 has a process of updating the current floating-point window pointer and the current general-purpose window pointer which is not included in the program in Table 3, and thus has an overhead. For example, the program rule in Table 3
While the loop is composed of six instructions, the loop of the program in Table 9 is composed of nine instructions. However, the overhead of waiting for data reading in the program of Table 3 and waiting for the execution of a subsequent instruction is much larger. Also, the loop unrolling method as shown in the program of Table 6 cannot be realized if the registers that can be specified by the program are exhausted, so that there is overhead for updating the current floating point window pointer and the current general-purpose window pointer. However, it is considered that the method of the present invention is superior.

【0133】以上のように、本発明の方式によって、命
令列のル−プのくりかえしが主となる科学技術計算のベ
クトル計算の中のリストベクトル演算では、ル−プごと
に現浮動小数点ウインドウポインタと現汎用ウインドウ
ポインタを変え、すなわち、使うウインドウを変え、ソ
−スインデクス型演算では、i番目の要素の処理を、第
i−2ル−プにおける汎用レジスタリストロ−ド命令に
よるリストベクトルの第i要素の汎用レジスタへのロ−
ド、該汎用レジスタ内のデ−タを主記憶アドレスに用い
た、第i−1ル−プにおける浮動小数点レジスタリスト
ロ−ド命令による「ソ−スベクトル(読みだされるベク
トル)の、リストベクトルの第i要素が示す要素」の浮
動小数点レジスタへのロ−ド、第i+1ル−プにおける
浮動小数点レジスタポストストア命令によるタ−ゲット
ベクトル(書き込まれるベクトル)の第i要素への、該
浮動小数点レジスタ内のデ−タのストアによって行なう
ことによって、1つの要素番号に対するリストベクトル
のロ−ド、ソ−スベクトルのロ−ド、タ−ゲットベクト
ルへのストアの処理の命令列上での距離が大きくなり、
デ−タの読みだし時間の影響による性能低下を防ぐこと
ができ、高速化ができ、タ−ゲットインデクス型演算で
は、i番目の要素の処理を、第i−2ル−プにおける汎
用レジスタリストロ−ド命令によるリストベクトルの第
i要素の汎用レジスタへのロ−ド、第i−1ル−プにお
ける浮動小数点レジスタプリロ−ド命令によるソ−スベ
クトル(読みだされるベクトル)の第i要素の浮動小数
点レジスタへのロ−ド、第i+1ル−プにおける浮動小
数点レジスタリストストア命令による該汎用レジスタ内
のデ−タを主記憶アドレスに用いた該浮動小数点レジス
タ内のデ−タの、「タ−ゲットベクトルの、リストベク
トルの第i要素の示す要素」へのストアによって行うこ
とによって、1つの要素番号に対するリストベクトルの
ロ−ド、ソ−スベクトルのロ−ド、タ−ゲットベクトル
へのストアの処理の命令列上での距離が大きくなり、デ
−タの読みだし時間の影響による性能低下を防ぐことが
でき、高速化ができ、粒子推進型演算では、i番目の要
素の処理を、第i−2ル−プにおける汎用レジスタリス
トロ−ド命令によるリストベクトルの第i要素の汎用レ
ジスタへのロ−ド、第i−1ル−プにおける浮動小数点
レジスタリストロ−ド命令による第1ベクトル(すなわ
ち、式(3)のベクトルA)の、リストベクトルの第i
要素が示す要素の第1の浮動小数点レジスタへのロ−
ド、浮動小数点レジスタプリロ−ド命令による第2ベク
トル(すなわち、式(3)のベクトルB)の第i要素の
第2の浮動小数点レジスタへのロ−ド、第iル−プにお
ける、浮動小数点加算命令による、前記2浮動小数点レ
ジスタの加算(すなわち、第1ベクトルの、リストベク
トルの第i要素が示す要素と、第2ベクトルの第i要素
の加算)、第i+1ル−プにおける、浮動小数点レジス
タリストストア命令による、前記加算結果の、前記汎用
レジスタの値を主記憶アドレスに用いた「第1ベクトル
の、リストベクトルの第i要素が示す要素」へのストア
によって行うことによって、1つの要素番号に対するリ
ストベクトルのロ−ド、第1ベクトルのロ−ド、第2ベ
クトルのロ−ド(第1ベクトルのロ−ドと第2ベクトル
のロ−ドは相関がないので、同一ル−プで行われる)、
第1ベクトルの要素と第2ベクトルの要素の加算、加算
結果の第1ベクトルへのストアの処理の命令列上での距
離が大きくなり、デ−タの読みだし時間、演算実行時間
の影響による性能低下を防ぐことができ、高速化ができ
る。
As described above, according to the method of the present invention, in the list vector operation in the vector calculation of the scientific and technical calculation in which the loop of the instruction sequence is mainly performed, the current floating point window pointer is provided for each loop. And the current general-purpose window pointer is changed, that is, the window to be used is changed. In the source index type operation, the processing of the i-th element is performed by the general register list load instruction by the general-purpose register list load instruction in the (i-2) -th loop. Load the i-th element to the general-purpose register.
A list of source vectors (vectors to be read) by a floating-point register list load instruction in the (i-1) -th loop using data in the general-purpose register as a main memory address. Loading the element indicated by the ith element of the vector into the floating-point register, and floating the target vector (the vector to be written) to the ith element by the floating-point register post-store instruction in the (i + 1) -th loop. By storing the data in the decimal point register, the load of the list vector for one element number, the load of the source vector, and the processing of the store to the target vector are performed on the instruction sequence. The distance increases,
The performance can be prevented from being degraded due to the influence of the data reading time, and the speed can be increased. In the target index type operation, the processing of the i-th element is performed by the general register list in the (i-2) -th loop. Load the ith element of the list vector to the general-purpose register by the load instruction, and the ith element of the source vector (vector to be read) by the floating point register preload instruction in the (i-1) -th loop And loading data in the floating-point register using the data in the general-purpose register as a main memory address by the floating-point register list store instruction in the (i + 1) -th loop. By storing the target vector in the “element indicated by the i-th element of the list vector”, the load and source of the list vector for one element number are performed. The load on the instruction and the distance in the instruction sequence for the processing of the store to the target vector are increased, the performance can be prevented from deteriorating due to the influence of the data read time, and the speed can be increased. In the propulsion type operation, the processing of the i-th element is performed by loading the list vector into the general-purpose register of the i-th element by the general-purpose register list load instruction in the (i-2) -th loop. Of the first vector (i.e., vector A in equation (3)) by the floating point register reload instruction in the
Loads the element pointed to by the first floating-point register.
Loading the i-th element of the second vector (i.e., the vector B in equation (3)) into the second floating-point register by the floating-point register preload instruction, and adding the floating-point at the i-th loop. Instructions, the addition of the two floating point registers (i.e., the addition of the element indicated by the ith element of the list vector of the first vector and the ith element of the second vector), and the floating point register at the (i + 1) -th loop By performing a list store instruction to store the addition result in the “element indicated by the i-th element of the list vector of the first vector” using the value of the general-purpose register as a main storage address, one element number is obtained. , The first vector load, the second vector load (the first vector load and the second vector load have no correlation). In Ino, same Le - performed in-flop),
The distance between the addition of the elements of the first vector and the elements of the second vector and the processing of storing the addition result in the first vector on the instruction sequence becomes large, and the influence of the data reading time and the operation execution time is increased. The performance can be prevented from lowering, and the speed can be increased.

【0134】[0134]

【実施例】以下、本発明の一実施例を図を用いて説明す
る。図3に本実施例のデ−タ処理装置を示す。デ−タ処
理装置は、命令の発行および実行を行なう命令処理ユニ
ット10、命令処理ユニットで実行する命令やデ−タを
記憶する主記憶30、命令処理ユニットと主記憶との間
のデ−タのやりとりを制御する記憶制御ユニット20か
ら構成される。
DESCRIPTION OF THE PREFERRED EMBODIMENTS One embodiment of the present invention will be described below with reference to the drawings. FIG. 3 shows a data processing apparatus according to the present embodiment. The data processing device includes an instruction processing unit 10 for issuing and executing instructions, a main memory 30 for storing instructions and data to be executed by the instruction processing unit, and data between the instruction processing unit and the main memory. And a storage control unit 20 for controlling the exchange of data.

【0135】命令処理ユニット10は、実行する命令を
保持する命令レジスタ101、命令レジスタ101の内
容を解読し、命令実行の制御を行なう命令制御部10
2、汎用演算およびアドレス計算に必要なデ−タを保持
する物理汎用レジスタ群103、命令で指定される汎用
演算を実行する汎用演算器104、浮動小数点演算に必
要なデ−タを保持する物理浮動小数点レジスタ群10
5、命令で指定される浮動小数点演算を実行する浮動小
数点演算器106、主記憶デ−タをアクセスするための
主記憶アドレスを計算するアドレス加算器107、記憶
制御ユニット20から読みだされた主記憶デ−タを保持
するキャッシュ108、キャッシュ108の検索結果に
従い記憶制御ユニット20から主記憶デ−タを読みだす
などの制御を行なう主記憶アクセス制御部109、現浮
動小数点ウィンドウポインタを格納する現浮動小数点ウ
ィンドウポインタレジスタ110、現汎用ウィンドウポ
インタを格納する現汎用ウィンドウポインタレジスタ1
13、現浮動小数点ウィンドウポインタおよび現汎用ウ
ィンドウポインタが有効であることを示す現ウィンドウ
ポインタ有効レジスタ111、命令で指定された論理浮
動小数点レジスタ番号を示す信号115、信号115を
物理浮動小数点レジスタ番号に式(5)−(9)にした
がって変換する第1変換回路112、命令で指定された
論理汎用レジスタ番号を示す信号116、信号115ま
たは信号116を物理汎用レジスタ番号に式(10)−
(14)にしたがって変換する第2変換回路114から
構成される。なお、命令中に複数の汎用レジスタ番号ま
たは複数の浮動小数点レジスタ番号を指定する命令のた
めに、信号115、信号116は複数のレジスタ番号を
転送できる。
The instruction processing unit 10 has an instruction register 101 for holding an instruction to be executed, an instruction control unit 10 for decoding the contents of the instruction register 101 and controlling the instruction execution.
2. Physical general-purpose register group 103 for holding data required for general-purpose operation and address calculation, general-purpose arithmetic unit 104 for executing general-purpose operation specified by an instruction, and physical for holding data required for floating-point operation Floating point register group 10
5. Floating point arithmetic unit 106 for executing a floating point operation specified by the instruction, address adder 107 for calculating a main storage address for accessing main storage data, and a main read from storage control unit 20 A cache 108 for holding storage data, a main storage access control unit 109 for controlling reading of main storage data from the storage control unit 20 in accordance with a search result of the cache 108, and a current storage for a current floating point window pointer. Floating point window pointer register 110, current general-purpose window pointer register 1 for storing the current general-purpose window pointer
13, a current window pointer valid register 111 indicating that the current floating-point window pointer and the current general-purpose window pointer are valid, a signal 115 indicating a logical floating-point register number specified by an instruction, and a signal 115 as a physical floating-point register number. The first conversion circuit 112 for converting according to the equations (5)-(9), the signal 116 indicating the logical general-purpose register number specified by the instruction, the signal 115 or the signal 116 is converted into the physical general-purpose register number by the equation (10)-
It comprises a second conversion circuit 114 for converting according to (14). Note that the signal 115 and the signal 116 can transfer a plurality of register numbers for an instruction that specifies a plurality of general-purpose register numbers or a plurality of floating-point register numbers in the instruction.

【0136】ここで、このデ−タ処理装置には、8つの
命令が新たに追加され、図4にその命令形式を示す。該
追加命令は、(a)現浮動小数点ウィンドウポインタ変
更命令、(b)現汎用ウィンドウポインタ変更命令、
(c)浮動小数点レジスタプリロ−ド命令、(d)拡張
浮動小数点レジスタプリロ−ド命令、(e)浮動小数点
レジスタポストストア命令、(f)浮動小数点レジスタ
リストロ−ド命令、(g)汎用レジスタリストロ−ド命
令、(h)浮動小数点レジスタリストストア命令、であ
る。前記命令の命令ニモニックと機能は「作用」の項に
述べた。
Here, eight instructions are newly added to this data processing device, and FIG. 4 shows the instruction format. The additional instructions include (a) a current floating-point window pointer change instruction, (b) a current general-purpose window pointer change instruction,
(C) floating-point register preload instruction, (d) extended floating-point register preload instruction, (e) floating-point register post-store instruction, (f) floating-point register reload instruction, (g) general-purpose register reload instruction (H) floating point register list store instruction. The instruction mnemonics and functions of the instructions have been described in the section "Action".

【0137】現浮動小数点ウィンドウポインタ変更命令
は現浮動小数点ウィンドウポインタを指定する命令であ
る。図4(a)中、命令コ−ドは、現浮動小数点ウィン
ドウポインタ変更命令であることを示すものである。汎
用レジスタ番号は、セットする現浮動小数点ウィンドウ
ポインタの値が格納されている汎用レジスタを指定す
る。
The current floating point window pointer change instruction is an instruction for designating the current floating point window pointer. In FIG. 4A, the instruction code indicates that the instruction is a current floating-point window pointer change instruction. The general-purpose register number designates a general-purpose register in which the value of the current floating-point window pointer to be set is stored.

【0138】現汎用ウィンドウポインタ変更命令は現汎
用ウィンドウポインタを指定する命令である。図4
(b)中、命令コ−ドは、現汎用ウィンドウポインタ変
更命令であることを示すものである。汎用レジスタ番号
は、セットする現汎用ウィンドウポインタの値が格納さ
れている汎用レジスタを指定する。
The current general-purpose window pointer change instruction is an instruction for designating the current general-purpose window pointer. FIG.
In (b), the instruction code indicates that the instruction is a current general-purpose window pointer change instruction. The general-purpose register number designates a general-purpose register in which the value of the current general-purpose window pointer to be set is stored.

【0139】浮動小数点レジスタプリロ−ド命令は、現
ウインドウに属する汎用レジスタの示す主記憶アドレス
から、デ−タを読みだし、(現浮動小数点ウィンドウポ
インタ+1)のウィンドウに属する浮動小数点レジスタ
に格納する命令である。図4(c)中、命令コ−ドは、
浮動小数点レジスタプリロ−ド命令であることを示すも
のである。浮動小数点レジスタ番号は論理浮動小数点レ
ジスタ番号(rとする)であり、現浮動小数点ウィンド
ウポインタをwとして、デ−タが格納される物理浮動小
数点レジスタ番号は<w+1,r>である。汎用レジス
タ番号は論理汎用レジスタ番号(rGとする)であり、
現汎用ウィンドウポインタをwGとして、物理汎用レジ
スタ<wG,rG>の値がデ−タが読みだされる主記憶
アドレスである。該読みだし実行後、物理汎用レジスタ
<wG,rG>に加える値がインクリメント値である。
The floating-point register preload instruction reads data from the main memory address indicated by the general-purpose register belonging to the current window, and stores the data in the floating-point register belonging to the (current floating-point window pointer + 1) window. It is. In FIG. 4C, the instruction code is:
This indicates that the instruction is a floating point register preload instruction. The floating-point register number is a logical floating-point register number (r), and the physical floating-point register number in which data is stored is <w + 1, r>, where w is the current floating-point window pointer. The general-purpose register number is a logical general-purpose register number (rG),
Assuming that the current general-purpose window pointer is wG, the value of the physical general-purpose register <wG, rG> is the main memory address from which data is read. After the reading, the value added to the physical general-purpose register <wG, rG> is an increment value.

【0140】拡張浮動小数点レジスタプリロ−ド命令
は、現ウインドウに属する汎用レジスタの示す主記憶ア
ドレスから、デ−タを読みだし、(現浮動小数点ウィン
ドウポインタ+2)のウィンドウに属する浮動小数点レ
ジスタに格納する命令である。図4(d)中、命令コ−
ドは、拡張浮動小数点レジスタプリロ−ド命令であるこ
とを示すものである。浮動小数点レジスタ番号は論理浮
動小数点レジスタ番号(rとする)であり、現浮動小数
点ウィンドウポインタをwとして、デ−タが格納される
物理浮動小数点レジスタ番号は<w+2,r>である。
汎用レジスタ番号は論理汎用レジスタ番号(rGとす
る)であり、現汎用ウィンドウポインタをwGとして、
物理汎用レジスタ<wG,rG>の値がデ−タが読みだ
される主記憶アドレスである。該読みだし実行後、物理
汎用レジスタ<wG,rG>に加える値がインクリメン
ト値である。
The extended floating-point register preload instruction reads data from the main memory address indicated by the general-purpose register belonging to the current window and stores the data in the floating-point register belonging to the (current floating-point window pointer + 2) window. Instruction. In FIG. 4D, the instruction code
The command indicates that the instruction is an extended floating-point register preload instruction. The floating point register number is a logical floating point register number (r), and the physical floating point register number in which data is stored is <w + 2, r>, where w is the current floating point window pointer.
The general-purpose register number is a logical general-purpose register number (rG), and the current general-purpose window pointer is wG,
The value of the physical general-purpose register <wG, rG> is a main memory address from which data is read. After the reading, the value added to the physical general-purpose register <wG, rG> is an increment value.

【0141】浮動小数点レジスタポストストア命令は、
(現浮動小数点ウィンドウポインタ−1)のウィンドウ
に属する浮動小数点レジスタからデ−タを読みだし、現
ウインドウに属する汎用レジスタの示す、主記憶アドレ
スに格納する命令である。図4(e)中命令コ−ドは、
浮動小数点レジスタポストストア命令であることを示す
ものである。浮動小数点レジスタ番号は論理浮動小数点
レジスタ番号(rとする)であり、現浮動小数点ウィン
ドウポインタをwとして、デ−タが読みだされる物理浮
動小数点レジスタ番号は<w−1,r>である。汎用レ
ジスタ番号は論理汎用レジスタ番号(rGとする)であ
り、現汎用ウィンドウポインタをwGとして、物理汎用
レジスタ<wG,rG>の値がデ−タが格納される主記
憶アドレスである。該読みだし実行後、物理汎用レジス
タ<wG,rG>に加える値がインクリメント値であ
る。
The floating-point register post-store instruction is
This instruction reads data from the floating-point register belonging to the window of (current floating-point window pointer-1) and stores the data in the main memory address indicated by the general-purpose register belonging to the current window. The instruction code in FIG.
Indicates that the instruction is a floating-point register post-store instruction. The floating-point register number is a logical floating-point register number (r), and the physical floating-point register number from which data is read is <w-1, r>, where w is the current floating-point window pointer. . The general-purpose register number is a logical general-purpose register number (rG), and the value of the physical general-purpose register <wG, rG> is a main storage address where data is stored, with the current general-purpose window pointer being wG. After the reading, the value added to the physical general-purpose register <wG, rG> is an increment value.

【0142】浮動小数点リストロ−ド命令は、(現汎用
ウインドウポインタ+1)のウインドウに属する汎用レ
ジスタの示す主記憶アドレスからデ−タを読出し、(現
浮動小数点ウインドウポインタ+1)のウインドウに属
する浮動小数点レジスタに格納する命令である。図4
(f)中、命令コ−ドは、浮動小数点レジスタリストロ
−ド命令であることを示すものである。浮動小数点レジ
スタ番号は論理浮動小数点レジスタ番号(rとする)で
あり、現浮動小数点ウィンドウポインタをwとして、デ
−タが格納される物理浮動小数点レジスタ番号は<w+
1,r>である。汎用レジスタ番号は論理汎用レジスタ
番号(rGとする)であり、現汎用ウィンドウポインタ
をwGとして、物理汎用レジスタ<wG+1,rG>の
値がデ−タが読みだされる主記憶アドレスである。
The floating-point restore load instruction reads data from the main memory address indicated by the general-purpose register belonging to the window of (current general-purpose window pointer + 1), and reads the data of floating-point number belonging to the window of (current floating-point window pointer + 1). This is an instruction to be stored in a register. FIG.
In (f), the instruction code indicates that the instruction is a floating-point register reload instruction. The floating-point register number is a logical floating-point register number (r), and the current floating-point window pointer is w, and the physical floating-point register number in which data is stored is <w +
1, r>. The general-purpose register number is a logical general-purpose register number (rG), and the value of the physical general-purpose register <wG + 1, rG> is a main storage address from which data is read, with the current general-purpose window pointer being wG.

【0143】汎用レジスタリストロ−ド命令は、現ウイ
ンドウに属する汎用レジスタの示す主記憶アドレスか
ら、デ−タを、(現汎用ウインドウポインタ+2)のウ
インドウに属する汎用レジスタに格納する命令である。
図4(g)中、命令コ−ドは、汎用レジスタリストロ−
ド命令であることを示すものである。汎用レジスタ番号
1は論理汎用レジスタ番号(rG1とする)であり、現
汎用ウィンドウポインタをwGとして、物理汎用レジス
タ<wG,rG1>の値がデ−タが読みだされる主記憶
アドレスである。汎用レジスタ番号2は論理汎用レジス
タ番号(rG2とする)であり、デ−タが格納される物
理汎用レジスタの番号が<wG+2,rG2>である。
該読出し実行後、物理汎用レジスタ<wG,rG1>に
加える値がインクリメント値である。
The general-purpose register list load instruction is an instruction for storing data in the general-purpose register belonging to the window of (current general-purpose window pointer + 2) from the main memory address indicated by the general-purpose register belonging to the current window.
In FIG. 4 (g), the instruction code is a general-purpose register reload.
This indicates that the instruction is a command. The general-purpose register number 1 is a logical general-purpose register number (rG1). The value of the physical general-purpose register <wG, rG1> is a main storage address from which data is read, with the current general-purpose window pointer being wG. The general-purpose register number 2 is a logical general-purpose register number (rG2), and the number of a physical general-purpose register in which data is stored is <wG + 2, rG2>.
After the execution of the reading, the value added to the physical general-purpose register <wG, rG1> is the increment value.

【0144】浮動小数点レジスタリストストア命令は、
(現浮動小数点ウィンドウポインタ−1)のウィンドウ
に属する浮動小数点レジスタからデ−タを読みだし、
(現汎用ウインドウポインタ−1)のウインドウに属す
る汎用レジスタの示す、主記憶アドレスに格納する命令
である。図4(h)中、命令コ−ドは、浮動小数点レジ
スタリストストア命令であることを示すものである。浮
動小数点レジスタ番号は論理浮動小数点レジスタ番号
(rとする)であり、現浮動小数点ウィンドウポインタ
をwとして、デ−タが読みだされる物理浮動小数点レジ
スタ番号は<w−1,r>である。現汎用ウィンドウポ
インタをwGとして、物理汎用レジスタ<wG−1,r
>の値がデ−タが格納される主記憶アドレスである。
The store floating point register list instruction is
Data is read from the floating point register belonging to the window of (current floating point window pointer -1),
This is an instruction to be stored in the main memory address indicated by the general-purpose register belonging to the window of (current general-purpose window pointer-1). In FIG. 4H, the instruction code indicates a floating-point register list store instruction. The floating-point register number is a logical floating-point register number (r), and the physical floating-point register number from which data is read is <w-1, r>, where w is the current floating-point window pointer. . Assuming that the current general-purpose window pointer is wG, the physical general-purpose register <wG-1, r
The value of> is the main memory address where the data is stored.

【0145】これらの命令の動作を図3に従い、説明す
る。まず、現浮動小数点ウィンドウポインタ変更命令に
ついて説明する。命令レジスタ101に命令が取り込ま
れていると、命令は命令制御部102で解読され、現浮
動小数点ウィンドウポインタ変更命令であることが識別
されると、命令中に指定された汎用レジスタが読みださ
れ、該レジスタに格納されている値が現浮動小数点ウィ
ンドウポインタレジスタ110にセットされる。
The operation of these instructions will be described with reference to FIG. First, the current floating point window pointer change instruction will be described. When the instruction is loaded into the instruction register 101, the instruction is decoded by the instruction control unit 102. When the instruction is identified as the current floating-point window pointer change instruction, the general-purpose register specified in the instruction is read. , The value stored in the register is set in the current floating point window pointer register 110.

【0146】次に、現汎用ウィンドウポインタ変更命令
について説明する。命令レジスタ101に命令が取り込
まれていると、命令は命令制御部102で解読され、現
汎用ウィンドウポインタ変更命令であることが識別され
ると、命令中に指定された汎用レジスタが読みだされ、
該レジスタに格納されている値が現汎用ウィンドウポイ
ンタレジスタ113にセットされる 次に浮動小数点レジスタプリロ−ド命令について説明す
る。命令レジスタ101に命令が取り込まれていると、
命令は命令制御部102で解読され、浮動小数点レジス
タプリロ−ド命令であることが識別されると、命令中に
指定された汎用レジスタ番号である論理汎用レジスタ番
号(rGとする)が信号116経由で第2変換回路11
4に転送され、現汎用ウィンドウポインタレジスタ11
3の値をwGとすると、第2変換回路114で物理汎用
レジスタ<wG,rG>に変換され、アドレス加算器1
07は、該物理汎用レジスタの内容を、デ−タを主記憶
から読みだすための主記憶アドレスとする。主記憶アク
セス制御部109は前記主記憶アドレスをもとにキャッ
シュ108を検索し、キャッシュに所望のデ−タがあれ
ば、キャッシュからデ−タを転送し、なければ、記憶制
御ユニット20経由で、主記憶30からデ−タを転送す
る。該転送デ−タは、浮動小数点レジスタ105に格納
されるが、格納される浮動小数点レジスタの物理浮動小
数点レジスタ番号は、第1変換回路112で以下のよう
にして求められる。命令中に指定された浮動小数点レジ
スタ番号は論理浮動小数点レジスタ番号(rとする)で
あり、信号115経由で第1変換回路112に転送さ
れ、現浮動小数点ウィンドウポインタレジスタ110の
値をwとして、<w+1,r>が物理浮動小数点レジス
タ番号になる。該デ−タ転送動作開始後、汎用演算器1
04で物理汎用レジスタ<wG,rG>の値にインクリ
メント値を加える。
Next, the current general-purpose window pointer change instruction will be described. When the instruction is loaded into the instruction register 101, the instruction is decoded by the instruction control unit 102. When the instruction is identified as the current general-purpose window pointer change instruction, the general-purpose register specified in the instruction is read out.
The value stored in the register is set in the current general-purpose window pointer register 113. Next, the floating-point register preload instruction will be described. When an instruction is taken into the instruction register 101,
The instruction is decoded by the instruction control unit 102. When the instruction is identified as a floating-point register preload instruction, a logical general register number (rG), which is a general register number specified in the instruction, is transmitted via a signal 116. Second conversion circuit 11
4 and the current general-purpose window pointer register 11
Assuming that the value of 3 is wG, the second conversion circuit 114 converts the value into a physical general-purpose register <wG, rG>, and the address adder 1
Reference numeral 07 denotes the content of the physical general-purpose register as a main storage address for reading data from the main storage. The main memory access control unit 109 searches the cache 108 based on the main memory address. If desired data is found in the cache, the data is transferred from the cache. The data is transferred from the main memory 30. The transfer data is stored in the floating point register 105. The physical floating point register number of the stored floating point register is obtained by the first conversion circuit 112 as follows. The floating point register number specified in the instruction is a logical floating point register number (r), which is transferred to the first conversion circuit 112 via a signal 115, and the value of the current floating point window pointer register 110 is w. <W + 1, r> is the physical floating-point register number. After the data transfer operation starts, the general-purpose arithmetic unit 1
At step 04, an increment value is added to the value of the physical general-purpose register <wG, rG>.

【0147】次に拡張浮動小数点レジスタプリロ−ド命
令について説明する。命令レジスタ101に命令が取り
込まれていると、命令は命令制御部102で解読され、
拡張浮動小数点レジスタプリロ−ド命令であることが識
別されると、命令中に指定された汎用レジスタ番号であ
る論理汎用レジスタ番号(rGとする)が信号116経
由で第2変換回路114に転送され、現汎用ウィンドウ
ポインタレジスタ113の値をwGとすると、第2変換
回路114で物理汎用レジスタ<wG,rG>に変換さ
れ、アドレス加算器107は、該物理汎用レジスタの内
容を、デ−タを主記憶から読みだすための主記憶アドレ
スとする。主記憶アクセス制御部109は前記主記憶ア
ドレスをもとにキャッシュ108を検索し、キャッシュ
に所望のデ−タがあれば、キャッシュからデ−タを転送
し、なければ、記憶制御ユニット20経由で、主記憶3
0からデ−タを転送する。該転送デ−タは、浮動小数点
レジスタ105に格納されるが、格納されるレジスタの
物理浮動小数点レジスタ番号は、変換回路112で以下
のようにして求められる。命令中に指定された浮動小数
点レジスタ番号は論理浮動小数点レジスタ番号(rとす
る)であり、信号115経由で第1変換回路112に転
送され、現浮動小数点ウィンドウポインタレジスタ11
0の値をwとして、<w+2,r>が物理浮動小数点レ
ジスタ番号になる。該デ−タ転送動作開始後、汎用演算
器104で物理汎用レジスタ<wG,rG>の値にイン
クリメント値を加える。
Next, the extended floating-point register preload instruction will be described. When the instruction is taken into the instruction register 101, the instruction is decoded by the instruction control unit 102,
If it is determined that the instruction is an extended floating-point register preload instruction, a logical general register number (rG), which is a general register number specified in the instruction, is transferred to the second conversion circuit 114 via a signal 116, and Assuming that the value of the current general-purpose window pointer register 113 is wG, it is converted into a physical general-purpose register <wG, rG> by the second conversion circuit 114, and the address adder 107 mainly stores the data of the physical general-purpose register as data. It is a main storage address for reading from storage. The main memory access control unit 109 searches the cache 108 based on the main memory address. If desired data is found in the cache, the data is transferred from the cache. , Main memory 3
Data is transferred from 0. The transfer data is stored in the floating point register 105. The physical floating point register number of the stored register is obtained by the conversion circuit 112 as follows. The floating-point register number specified in the instruction is a logical floating-point register number (referred to as r), which is transferred to the first conversion circuit 112 via the signal 115, and the current floating-point window pointer register 11
Assuming that the value of 0 is w, <w + 2, r> is the physical floating-point register number. After the start of the data transfer operation, the general-purpose arithmetic unit 104 adds an increment value to the value of the physical general-purpose register <wG, rG>.

【0148】次に浮動小数点レジスタポストストア命令
について説明する。命令レジスタ101に命令が取り込
まれていると、命令は命令制御部102で解読され、浮
動小数点レジスタポストストア命令であることが識別さ
れると、命令中に指定された汎用レジスタ番号である論
理汎用レジスタ番号(rGとする)が信号116経由で
第2変換回路114に転送され、現汎用ウィンドウポイ
ンタレジスタ113の値をwGとすると、第2変換回路
114で物理汎用レジスタ<wG,rG>に変換され、
アドレス加算器107は、該物理汎用レジスタの内容を
デ−タを主記憶に格納するための主記憶アドレスとす
る。浮動小数点レジスタ105からデ−タが読みだされ
るが、読みだされるレジスタの物理浮動小数点レジスタ
番号は、変換回路112で以下のようにして求められ
る。命令中に指定された浮動小数点レジスタ番号は論理
浮動小数点レジスタ番号(rとする)であり、信号11
5経由で第1変換回路112に転送され、現浮動小数点
ウィンドウポインタレジスタ110の値をwとして、<
w−1,r>が物理浮動小数点レジスタ番号になる。主
記憶アクセス制御部109は前記主記憶アドレスをもと
にキャッシュ108を検索し、キャッシュ中に、主記憶
30の該主記憶アドレスに格納されているデ−タの写し
があれば、該デ−タを前記読みだしデ−タに置き換え、
なければ、キャッシュは操作しない。さらに、主記憶ア
クセス制御部109は記憶制御ユニット20経由で、主
記憶30の前記主記憶アドレスに前記読みだしデ−タを
格納する。該デ−タ転送動作開始後、汎用演算器104
で物理汎用レジスタ<wG,rG>の値にインクリメン
ト値を加える。
Next, the floating-point register post-store instruction will be described. When the instruction is loaded into the instruction register 101, the instruction is decoded by the instruction control unit 102. When the instruction is identified as a floating-point register post-store instruction, a logical general-purpose register number designated in the instruction is used. When the register number (rG) is transferred to the second conversion circuit 114 via the signal 116 and the value of the current general-purpose window pointer register 113 is wG, it is converted by the second conversion circuit 114 into the physical general-purpose register <wG, rG>. And
The address adder 107 uses the contents of the physical general-purpose register as a main memory address for storing data in the main memory. Data is read from the floating point register 105. The physical floating point register number of the register to be read is obtained by the conversion circuit 112 as follows. The floating-point register number specified in the instruction is a logical floating-point register number (referred to as r).
5 and is transferred to the first conversion circuit 112, and the value of the current floating-point window pointer
w-1, r> is the physical floating-point register number. The main memory access control unit 109 searches the cache 108 based on the main memory address, and if there is a copy of the data stored in the main memory address of the main memory 30 in the cache, the data is retrieved. Replace the data with the read data,
If not, the cache is not operated. Further, the main memory access control unit 109 stores the read data at the main memory address of the main memory 30 via the storage control unit 20. After the start of the data transfer operation, the general-purpose computing unit 104
Adds an increment value to the value of the physical general-purpose register <wG, rG>.

【0149】次に浮動小数点レジスタリストロ−ド命令
について説明する。命令レジスタ101に命令が取り込
まれていると、命令は命令制御部102で解読され、浮
動小数点レジスタリストロ−ド命令であることが識別さ
れると、命令中に指定された浮動小数点レジスタ番号で
ある論理浮動小数点レジスタ番号(rとする)が信号1
15経由で第2変換回路114に転送され、現汎用ウィ
ンドウポインタレジスタ113の値をwGとすると、第
2変換回路114で物理汎用レジスタ<wG+1,r>
に変換され、アドレス加算器107は、該物理汎用レジ
スタの内容を、デ−タを主記憶から読みだすための主記
憶アドレスとする。主記憶アクセス制御部109は前記
主記憶アドレスをもとにキャッシュ108を検索し、キ
ャッシュに所望のデ−タがあれば、キャッシュからデ−
タを転送し、なければ、記憶制御ユニット20経由で、
主記憶30からデ−タを転送する。該転送デ−タは、浮
動小数点レジスタ105に格納されるが、格納される浮
動小数点レジスタの物理浮動小数点レジスタ番号は、第
1変換回路112で以下のようにして求められる。命令
中に指定された浮動小数点レジスタ番号は論理浮動小数
点レジスタ番号rであり、信号115経由で第1変換回
路112に転送され、現浮動小数点ウィンドウポインタ
レジスタ110の値をwとして、<w+1,r>が物理
浮動小数点レジスタ番号になる。
Next, the floating point register reload instruction will be described. When an instruction is loaded into the instruction register 101, the instruction is decoded by the instruction control unit 102, and when it is identified that the instruction is a floating point register reload instruction, the instruction is executed with the floating point register number specified in the instruction. A certain logical floating-point register number (r) is a signal 1
15, the value of the current general-purpose window pointer register 113 is defined as wG, and the second general-purpose conversion circuit 114 transfers the physical general-purpose register <wG + 1, r>
The address adder 107 uses the contents of the physical general-purpose register as a main memory address for reading data from the main memory. The main memory access control unit 109 searches the cache 108 based on the main memory address, and if desired data exists in the cache, the data is read from the cache.
If not, via the storage control unit 20,
The data is transferred from the main memory 30. The transfer data is stored in the floating point register 105. The physical floating point register number of the stored floating point register is obtained by the first conversion circuit 112 as follows. The floating-point register number specified in the instruction is the logical floating-point register number r, which is transferred to the first conversion circuit 112 via the signal 115, and the value of the current floating-point window pointer register 110 is w, where <w + 1, r > Is the physical floating point register number.

【0150】次に汎用レジスタリストロ−ド命令につい
て説明する。命令レジスタ101に命令が取り込まれて
いると、命令は命令制御部102で解読され、汎用レジ
スタリストロ−ド命令であることが識別されると、命令
中に指定された第1の汎用レジスタ番号である論理汎用
レジスタ番号1(rG1とする)が信号116経由で第
2変換回路114に転送され、現汎用ウィンドウポイン
タレジスタ113の値をwGとすると、第2変換回路1
14で物理汎用レジスタ<wG,rG1>に変換され、
アドレス加算器107は、該物理汎用レジスタの内容を
デ−タを主記憶から読みだすための主記憶アドレスとす
る。主記憶アクセス制御部109は前記主記憶アドレス
をもとにキャッシュ108を検索し、キャッシュに所望
のデ−タがあれば、キャッシュからデ−タを転送し、な
ければ、記憶制御ユニット20経由で、主記憶30から
デ−タを転送する。該転送デ−タは、汎用レジスタ10
3に格納されるが、格納される汎用レジスタの物理汎用
レジスタ番号は、第2変換回路114で以下のようにし
て求められる。命令中に指定された第2の汎用レジスタ
番号である論理汎用レジスタ番号2(rG2とする)が
信号116経由で第2変換回路114に転送され、第2
変換回路114で物理汎用レジスタ<wG+2,rG2
>に変換される。
Next, a general-purpose register reload instruction will be described. When the instruction is loaded into the instruction register 101, the instruction is decoded by the instruction control unit 102, and when the instruction is identified as a general register reload instruction, the first general register number designated in the instruction is read. Is transferred to the second conversion circuit 114 via the signal 116, and if the value of the current general-purpose window pointer register 113 is wG, the second conversion circuit 1
At 14, it is converted into a physical general-purpose register <wG, rG1>
The address adder 107 sets the contents of the physical general-purpose register as a main storage address for reading data from the main storage. The main memory access control unit 109 searches the cache 108 based on the main memory address. If desired data is found in the cache, the data is transferred from the cache. The data is transferred from the main memory 30. The transfer data is stored in the general-purpose register 10.
The physical conversion register number of the stored general-purpose register is obtained by the second conversion circuit 114 as follows. The logical general-purpose register number 2 (rG2), which is the second general-purpose register number specified in the instruction, is transferred to the second conversion circuit 114 via the signal 116, and
In the conversion circuit 114, the physical general-purpose register <wG + 2, rG2
>.

【0151】該デ−タ転送動作開始後、汎用演算器10
4で物理汎用レジスタ<wG,rG1>の値にインクリ
メント値を加える。
After the start of the data transfer operation, the general-purpose arithmetic unit 10
In step 4, an increment value is added to the value of the physical general-purpose register <wG, rG1>.

【0152】次に浮動小数点レジスタリストストア命令
について説明する。命令レジスタ101に命令が取り込
まれていると、命令は命令制御部102で解読され、浮
動小数点レジスタリストストア命令であることが識別さ
れると、浮動小数点レジスタ105からデ−タが読みだ
されるが、読みだされるレジスタの物理浮動小数点レジ
スタ番号は、第1変換回路112で以下のようにして求
められる。命令中に指定された浮動小数点レジスタ番号
は論理浮動小数点レジスタ番号(rとする)であり、信
号115経由で第1変換回路112に転送され、現浮動
小数点ウィンドウポインタレジスタ110の値をwとし
て、<w−1,r>が物理浮動小数点レジスタ番号にな
る。また,論理浮動小数点レジスタ番号rは信号115
経由で第2変換回路114に転送され、現汎用ウィンド
ウポインタレジスタ113の値をwGとすると、物理汎
用レジスタ番号<wG−1,r>に変換され、アドレス
加算器107は、該物理汎用レジスタの内容を、前記物
理浮動小数点レジスタからデ−タを格納する主記憶アド
レスとする。主記憶アクセス制御部109は前記主記憶
アドレスをもとにキャッシュ108を検索し、キャッシ
ュ中に、主記憶30の該主記憶アドレスに格納されてい
るデ−タの写しがあれば、該デ−タを前記読みだしデ−
タに置き換え、なければ、キャッシュは操作しない。さ
らに、主記憶アクセス制御部109は記憶制御ユニット
20経由で、主記憶30の前記主記憶アドレスに前記読
みだしデ−タを格納する。
Next, the floating point register list store instruction will be described. If the instruction is loaded into the instruction register 101, the instruction is decoded by the instruction control unit 102. If it is determined that the instruction is a floating-point register list store instruction, data is read from the floating-point register 105. However, the physical floating-point register number of the register to be read out is obtained by the first conversion circuit 112 as follows. The floating point register number specified in the instruction is a logical floating point register number (r), which is transferred to the first conversion circuit 112 via a signal 115, and the value of the current floating point window pointer register 110 is w. <W-1, r> is the physical floating-point register number. The logical floating point register number r is the signal 115
When the value of the current general-purpose window pointer register 113 is set to wG, the value is converted to a physical general-purpose register number <wG-1, r>, and the address adder 107 stores the value of the physical general-purpose register. The content is a main storage address for storing data from the physical floating point register. The main memory access control unit 109 searches the cache 108 based on the main memory address, and if there is a copy of the data stored in the main memory address of the main memory 30 in the cache, the data is retrieved. Read the data
If it is not replaced, the cache is not operated. Further, the main memory access control unit 109 stores the read data at the main memory address of the main memory 30 via the storage control unit 20.

【0153】また、一般の浮動小数点命令(すなわち、
浮動小数点レジスタを用いる命令で、前記の浮動小数点
レジスタプリロ−ド命令、拡張浮動小数点レジスタプリ
ロ−ド命令、浮動小数点レジスタポストストア命令、浮
動小数点レジスタリストロ−ド命令、汎用レジスタリス
トロ−ド命令、浮動小数点レジスタリストストア命令を
除く命令)では、現ウインドウポインタ有効レジスタ1
11が「1」であると、命令中に示された論理浮動小数
点レジスタ番号rは、現浮動小数点ウィンドウポインタ
レジスタ110の値をwとして、<w,r>で示される
物理浮動小数点レジスタ番号に、第1変換論理112で
変換され、該物理浮動小数点レジスタ番号の示す物理浮
動小数点レジスタが参照される。現ウインドウポインタ
有効レジスタ111が「0」であると、命令中に示され
た論理浮動小数点レジスタ番号rは、第1変換論理11
2で変換を受けず、物理浮動小数点レジスタ番号rの示
す物理浮動小数点レジスタが参照される。
In addition, a general floating-point instruction (ie,
Instructions using floating-point registers, such as the floating-point register preload instruction, extended floating-point register preload instruction, floating-point register post-store instruction, floating-point register list load instruction, general-purpose register list load instruction, and floating-point register In instructions except for the decimal point register list store instruction), the current window pointer valid register 1
If 11 is “1”, the logical floating-point register number r indicated in the instruction is the physical floating-point register number indicated by <w, r>, where w is the value of the current floating-point window pointer register 110. Are converted by the first conversion logic 112, and the physical floating-point register indicated by the physical floating-point register number is referred to. If the current window pointer valid register 111 is “0”, the logical floating-point register number r indicated in the instruction becomes the first conversion logic 11
2, no conversion is performed, and the physical floating-point register indicated by the physical floating-point register number r is referred to.

【0154】また、一般の汎用命令(すなわち、汎用レ
ジスタを用いる命令で、前記の浮動小数点レジスタプリ
ロ−ド命令、拡張浮動小数点レジスタプリロ−ド命令、
浮動小数点レジスタポストストア命令、浮動小数点レジ
スタリストロ−ド命令、汎用レジスタリストロ−ド命
令、浮動小数点レジスタリストストア命令を除く命令)
では、現ウインドウポインタ有効レジスタ111が
「1」であると、命令中に示された論理汎用レジスタ番
号rGは、現汎用ウィンドウポインタレジスタ113の
値をwGとして、<wG,rG>で示される物理汎用レ
ジスタ番号に、第2変換論理114で変換され、該物理
汎用レジスタ番号の示す物理汎用レジスタが参照され
る。現ウインドウポインタ有効レジスタ111が「0」
であると、命令中に示された論理汎用レジスタ番号rG
は、第2変換論理114で変換を受けず、物理汎用レジ
スタ番号rGの示す物理汎用レジスタが参照される。
A general-purpose instruction (ie, an instruction using a general-purpose register, such as the floating-point register preload instruction, the extended floating-point register preload instruction,
Instructions except floating-point register post store instruction, floating-point register list load instruction, general-purpose register list load instruction, and floating-point register list store instruction)
When the current window pointer valid register 111 is “1”, the logical general-purpose register number rG indicated in the instruction is the physical general number indicated by <wG, rG> where the value of the current general-purpose window pointer register 113 is wG. The data is converted into the general-purpose register number by the second conversion logic 114, and the physical general-purpose register indicated by the physical general-purpose register number is referred to. Current window pointer valid register 111 is "0"
Is the logical general register number rG indicated in the instruction.
Is not converted by the second conversion logic 114, and the physical general-purpose register indicated by the physical general-purpose register number rG is referred to.

【0155】前記の浮動小数点レジスタプリロ−ド命
令、拡張浮動小数点レジスタプリロ−ド命令、浮動小数
点レジスタポストストア命令、浮動小数点レジスタリス
トロ−ド命令、汎用レジスタリストロ−ド命令、浮動小
数点レジスタリストストア命令では、現ウインドウポイ
ンタ有効レジスタ111が「1」であると、前記の命令
仕様通り、論理浮動小数点レジスタ番号−物理浮動小数
点レジスタ番号変換、論理浮動小数点レジスタ番号−物
理汎用レジスタ番号変換、論理汎用レジスタ番号−物理
汎用レジスタ番号変換が行われ、変換後の番号の示す物
理浮動小数点レジスタまたは物理汎用レジスタが参照さ
れる。現ウインドウポインタ有効レジスタ111が
「0」であると、論理浮動小数点レジスタ番号−物理浮
動小数点レジスタ番号変換に関しては、論理浮動小数点
レジスタ番号は、物理浮動小数点レジスタ番号に等し
く、論理浮動小数点レジスタ番号−物理汎用レジスタ番
号変換に関しては、論理浮動小数点レジスタ番号は、物
理汎用レジスタ番号に等しく、論理汎用レジスタ番号−
物理汎用レジスタ番号変換に関しては、論理汎用レジス
タ番号は、物理汎用レジスタ番号に等しい。
The above floating point register preload instruction, extended floating point register preload instruction, floating point register post store instruction, floating point register list load instruction, general purpose register list load instruction, floating point register list store instruction If the current window pointer valid register 111 is “1”, the logical floating-point register number-physical floating-point register number conversion, logical floating-point register number-physical general-purpose register number conversion, logical general-purpose register Number-physical general-purpose register number conversion is performed, and the physical floating-point register or physical general-purpose register indicated by the converted number is referred to. When the current window pointer valid register 111 is “0”, the logical floating-point register number is equal to the physical floating-point register number and the logical floating-point register number is equal to the logical floating-point register number. Regarding the physical general register number conversion, the logical floating point register number is equal to the physical general register number, and the logical general register number−
Regarding the physical general register number conversion, the logical general register number is equal to the physical general register number.

【0156】ここで、現ウィンドウポインタ有効レジス
タ111には、デ−タ処理システムの制御情報を格納す
る既存のレジスタの空きビットを割当てれば良く、該レ
ジスタに値を格納する既存の命令を用いて値をセットす
るものとする。
Here, an empty bit of an existing register for storing control information of the data processing system may be assigned to the current window pointer valid register 111. An existing instruction for storing a value in the register is used. Value is set.

【0157】以上のように現浮動小数点ウィンドウポイ
ンタ変更命令、現汎用ウィンドウポインタ変更命令、浮
動小数点レジスタプリロ−ド命令、拡張浮動小数点レジ
スタプリロ−ド命令、浮動小数点レジスタポストストア
命令、浮動小数点レジスタリストロ−ド命令、汎用レジ
スタリストロ−ド命令、浮動小数点レジスタリストスト
ア命令、現浮動小数点ウィンドウポインタと現汎用ウィ
ンドウポインタの制御下での一般の浮動小数点命令、一
般の汎用命令は動作する。
As described above, the current floating-point window pointer change instruction, current general-purpose window pointer change instruction, floating-point register preload instruction, extended floating-point register preload instruction, floating-point register poststore instruction, and floating-point register reload instruction Instruction, general register list load instruction, floating point register list store instruction, general floating point instruction under the control of the current floating point window pointer and the current general purpose window pointer, and general general instructions operate.

【0158】上記の実施例により、表7、表8、表9の
ようなプログラムが実現でき、リストベクトル計算が高
速化されることは、「作用」の欄に述べた。
The fact that the above-described embodiments can realize the programs shown in Tables 7, 8, and 9 and that the list vector calculation is speeded up has been described in the column of "Action".

【0159】したがって、本発明の方式によると、現浮
動小数点ウィンドウポインタを変えることにより、命令
中のある浮動小数点レジスタ番号は異なる物理浮動小数
点レジスタ番号に変換され、現汎用ウィンドウポインタ
を変えることにより、命令中のある浮動小数点レジスタ
番号または汎用レジスタ番号は異なる物理汎用レジスタ
番号に変換されるので、命令によってアドレス可能なレ
ジスタの数よりも多い物理レジスタをデ−タ処理装置の
ア−キテクチャを変えることなくアクセス可能にでき、
表7、表8、表9に示すようなプログラムが実現でき、
デ−タ読みだし、レジスタのぶつかりによって命令実行
が待たされることによる性能低下を防ぐことができ、プ
ログラムの高速な実行が可能である。
Therefore, according to the method of the present invention, by changing the current floating point window pointer, a certain floating point register number in the instruction is converted to a different physical floating point register number, and by changing the current general purpose window pointer, Since the number of a floating-point register or a general-purpose register in an instruction is converted into a different physical general-purpose register number, changing the architecture of the data processing device to more physical registers than the number of registers addressable by the instruction. Access without
The programs shown in Tables 7, 8, and 9 can be realized,
It is possible to prevent performance degradation due to waiting for instruction execution due to data reading and register collision, thereby enabling high-speed execution of a program.

【0160】特に、表7、表8、表9のプログラムから
もわかる通り、命令列のル−プのくりかえしが主となる
科学技術計算のベクトル計算の中のリストベクトル演算
では、ル−プごとに使うウインドウを変え、ソ−スイン
デクス型演算では、i番目の要素の処理を、第i−2ル
−プにおける汎用レジスタリストロ−ド命令によるリス
トベクトルの第i要素の汎用レジスタへのロ−ド、該汎
用レジスタ内のデ−タを主記憶アドレスに用いた、第i
−1ル−プにおける浮動小数点レジスタリストロ−ド命
令による「ソ−スベクトル(読みだされるベクトル)
の、リストベクトルの第i要素が示す要素」の浮動小数
点レジスタへのロ−ド、第i+1ル−プにおける浮動小
数点レジスタポストストア命令によるタ−ゲットベクト
ル(書き込まれるベクトル)の第i要素への、該浮動小
数点レジスタ内のデ−タのストアによって行うことによ
って、1つの要素番号に対するリストベクトルのロ−
ド、ソ−スベクトルのロ−ド、タ−ゲットベクトルへの
ストアの処理の命令列上での距離が大きくなり、デ−タ
の読みだし時間の影響による性能低下を防ぐことがで
き、高速化ができ、タ−ゲットインデクス型演算では、
i番目の要素の処理を、第i−2ル−プにおける汎用レ
ジスタリストロ−ド命令によるリストベクトルの第i要
素の汎用レジスタへのロ−ド、第i−1ル−プにおける
浮動小数点レジスタプリロ−ド命令によるソ−スベクト
ル(読みだされるベクトル)の第i要素の浮動小数点レ
ジスタへのロ−ド、第i+1ル−プにおける浮動小数点
レジスタリストストア命令による該汎用レジスタ内のデ
−タを主記憶アドレスに用いた該浮動小数点レジスタ内
のデ−タの「タ−ゲットベクトルの、リストベクトルの
第i要素の示す要素」へのストアを行うことによって、
1つの要素番号に対するリストベクトルのロ−ド、ソ−
スベクトルのロ−ド、タ−ゲットベクトルへのストアの
処理の命令列上での距離が大きくなり、デ−タの読みだ
し時間の影響による性能低下を防ぐことができ、高速化
ができ、粒子推進型演算では、i番目の要素の処理を、
第i−2ル−プにおける汎用レジスタリストロ−ド命令
によるリストベクトルの第i要素の汎用レジスタへのロ
−ド、第i−1ル−プにおける、浮動小数点レジスタリ
ストロ−ド命令による第1ベクトル(すなわち、式
(3)のベクトルA)の、リストベクトルの第i要素が
示す要素の第1の浮動小数点レジスタへのロ−ド、浮動
小数点レジスタプリロ−ド命令による第2ベクトル(す
なわち、式(3)のベクトルB)の第i要素の第2の浮
動小数点レジスタへのロ−ド、第iル−プにおける、浮
動小数点加算命令による、前記2浮動小数点レジスタの
値の加算(すなわち、第1ベクトルの、リストベクトル
の第i要素が示す要素と第2ベクトルの第i要素の加
算)、第i+1ル−プにおける、浮動小数点レジスタリ
ストストア命令による、前記加算結果の、前記汎用レジ
スタの値を主記憶アドレスに用いた「第1ベクトルの、
リストベクトルの第i要素が示す要素」へのストアを行
うことによって、1つの要素番号に対するリストベクト
ルのロ−ド、第1ベクトルのロ−ド、第2ベクトルのロ
−ド(第1ベクトルのロ−ドと第2ベクトルのロ−ドは
相関がないので、同一ル−プで行われる)、第1ベクト
ルの要素と第2ベクトルの要素の加算、加算結果の第1
ベクトルへのストア処理の命令列上での距離が大きくな
り、デ−タの読みだし時間と演算実行時間の影響による
性能低下を防ぐことができ、高速化ができる。
In particular, as can be seen from the programs shown in Tables 7, 8, and 9, in the list vector operation in the vector calculation of the scientific and technical calculation in which the loop of the instruction sequence is mainly performed, each loop is used. In the source index type operation, the processing of the i-th element is performed by loading the list vector into the general-purpose register of the i-th element by the general-purpose register list load instruction in the (i-2) -th loop. And i-th data using the data in the general-purpose register as a main storage address.
"Source vector (vector to be read) by floating-point register reload instruction in -1 loop"
Of the element indicated by the i-th element of the list vector to the floating-point register, and the target vector (vector to be written) to the i-th element by the floating-point register post-store instruction in the (i + 1) -th loop. , By storing the data in the floating-point register, to load the list vector for one element number.
The distance in the instruction sequence of the processing of loading the source and source vectors to the load and target vectors is increased, and performance degradation due to the influence of the data read time can be prevented. In the target index type operation,
The processing of the i-th element is performed by loading the list vector into the general-purpose register of the i-th element by the general-purpose register reload instruction in the (i-2) -th loop and the floating-point register pre-load in the (i-1) -th loop. Loading a source vector (vector to be read) into the floating-point register of the i-th element by a load instruction, and data in the general-purpose register by a floating-point register list store instruction in the (i + 1) -th loop. By storing the data in the floating-point register in the “element indicated by the i-th element of the list vector” in the floating-point register using
Load of list vector for one element number, source
The distance on the instruction sequence of the load of the data vector and the processing of the store to the target vector on the instruction sequence is increased, and the performance can be prevented from deteriorating due to the influence of the data read time, and the speed can be increased. In the particle propulsion type operation, the processing of the i-th element is
Load the i-th element of the list vector to the general-purpose register by the general-purpose register reload instruction in the (i-2) -th loop, and execute the floating-point register reload instruction in the (i-1) -th loop. Loading one vector (ie, vector A in equation (3)) into the first floating-point register of the element indicated by the i-th element of the list vector, and the second vector (ie, the vector A by the floating-point register preload instruction) Loading the ith element of the vector B) of equation (3) into the second floating-point register, adding the value of the two floating-point registers by a floating-point addition instruction in the ith loop (i.e., The addition of the element indicated by the ith element of the list vector of the first vector and the ith element of the second vector), by the floating-point register list store instruction in the (i + 1) -th loop The serial addition result, the value of the general purpose register used in the main storage address "of the first vector,
By storing in the element indicated by the i-th element of the list vector, the loading of the list vector, the loading of the first vector, and the loading of the second vector (the loading of the first vector) for one element number are performed. Since the load and the load of the second vector have no correlation, they are performed in the same loop), the addition of the element of the first vector and the element of the second vector, and the first of the addition results.
The distance in the instruction sequence of the store processing to the vector is increased, and the performance can be prevented from being deteriorated due to the influence of the data reading time and the operation execution time, and the speed can be increased.

【0161】ここで、表7、表8、表9にない拡張浮動
小数点プリロ−ド命令が実施例では導入されているが、
これは、主記憶からデ−タを読みだす時間が長いシステ
ムにおいては、表8のプログラムのように、プリロ−ド
命令を発行したル−プの次のル−プでロ−ドされたデ−
タを演算しようとしても、まだロ−ドが完了していなく
て、演算命令が待たされる場合が生じる恐れがある。し
たがって、プリロ−ド命令を発行したル−プの次の次の
ル−プで、ロ−ドされたデ−タを演算するように、プロ
グラムできるように拡張浮動小数点プリロ−ド命令を考
案した。
Here, an extended floating point preload instruction not shown in Tables 7, 8, and 9 is introduced in the embodiment.
This is because, in a system that takes a long time to read data from the main memory, as shown in the program of Table 8, the data loaded in the loop following the loop that issued the preload instruction. −
Even if an attempt is made to operate the data, there is a possibility that the load has not been completed yet and the operation instruction has to wait. Therefore, an extended floating-point preload instruction has been devised so that it can be programmed to operate the loaded data in the next loop following the loop that issued the preload instruction. .

【0162】[0162]

【発明の効果】本発明によれば、現浮動小数点ウィンド
ウポインタを変えることにより、命令中のある浮動小数
点レジスタ番号は異なる物理浮動小数点レジスタ番号に
変換され、現汎用ウィンドウポインタを変えることによ
り、命令中のある浮動小数点レジスタ番号または汎用レ
ジスタ番号は異なる物理汎用レジスタ番号に変換される
ので、命令によってアドレス可能なレジスタの数よりも
多い物理レジスタをデ−タ処理装置のア−キテクチャを
変えることなくアクセス可能にできるので、デ−タ読み
だし、レジスタのぶつかりによって命令実行が待たされ
ることによる性能低下を防ぐことができ、プログラムの
高速な実行が可能であるという効果がある。
According to the present invention, by changing the current floating-point window pointer, a certain floating-point register number in an instruction is converted to a different physical floating-point register number. Some floating-point register numbers or general-purpose register numbers are converted to different physical general-purpose register numbers, so that more physical registers than the number of registers addressable by the instruction can be used without changing the architecture of the data processing device. Since access can be made, it is possible to prevent performance degradation due to data reading and waiting for instruction execution due to collision of a register, and it is possible to execute a program at high speed.

【0163】特に、命令列のル−プのくりかえしが主と
なる科学技術計算のベクトル計算の中のリストベクトル
演算では、ル−プごとに使うウインドウを変え、ソ−ス
インデクス型演算では、i番目の要素の処理を、第i−
2ル−プにおける汎用レジスタリストロ−ド命令による
リストベクトルの第i要素の汎用レジスタへのロ−ド、
該汎用レジスタ内のデ−タを主記憶アドレスに用いた、
第i−1ル−プにおける浮動小数点レジスタリストロ−
ド命令による「ソ−スベクトル(読みだされるベクト
ル)の、リストベクトルの第i要素が示す要素」の浮動
小数点レジスタへのロ−ド、第i+1ル−プにおける浮
動小数点ポストストア命令によるタ−ゲットベクトル
(書き込まれるベクトル)の第i要素への、該浮動小数
点レジスタ内のデ−タのストアによって行うことによっ
て、1つの要素番号に対するリストベクトルのロ−ド、
ソ−スベクトルのロ−ド、タ−ゲットベクトルへのスト
アの処理の命令列上での距離が大きくなり、デ−タの読
みだし時間の影響による性能低下を防ぐことができ、高
速化ができ、タ−ゲットインデクス型演算では、i番目
の要素の処理を、第i−2ル−プにおける汎用レジスタ
リストロ−ド命令によるリストベクトルの第i要素の汎
用レジスタへのロ−ド、第i−1ル−プにおける浮動小
数点レジスタプリロ−ド命令によるソ−スベクトル(読
みだされるベクトル)の第i要素の浮動小数点レジスタ
へのロ−ド、第i+1ル−プにおける浮動小数点レジス
タリストストア命令による該汎用レジスタ内のデ−タを
主記憶アドレスに用いた該浮動小数点レジスタ内のデ−
タの、「タ−ゲットベクトルの、リストベクトルの第i
要素が示す要素」へのストアによって行うことによっ
て、1つの要素番号に対するリストベクトルのロ−ド、
ソ−スベクトルのロ−ド、タ−ゲットベクトルへのスト
アの処理の命令列上での距離が大きくなり、デ−タの読
みだし時間の影響による性能低下を防ぐことができ、高
速化ができ、粒子推進型演算では、i番目の要素の処理
を、第i−2ル−プにおける汎用レジスタリストロ−ド
命令によるリストベクトルの第i要素の汎用レジスタへ
のロ−ド、第i−1ル−プにおける浮動小数点レジスタ
リストロ−ド命令による第1ベクトル(すなわち、式
(3)のベクトルA)の、リストベクトルの第i要素が
示す要素の第1の浮動小数点レジスタへのロ−ド、浮動
小数点レジスタプリロ−ド命令による第2ベクトル(す
なわち、式(3)のベクトルB)の第i要素の第2の浮
動小数点レジスタへのロ−ド、第iル−プにおける、浮
動小数点加算命令による前記2浮動小数点レジスタの値
の加算(すなわち、第1ベクトルの、リストベクトルの
第i要素が示す要素と第2ベクトルの第i要素の加
算)、第i+1ル−プにおける、浮動小数点レジスタリ
ストストア命令による、前記加算結果の、前記汎用レジ
スタの値を主記憶アドレスに用いた「第1ベクトルの、
リストベクトルの第i要素が示す要素」へのストアを行
うことによって、1つの要素番号に対するリストベクト
ルのロ−ド、第1ベクトルのロ−ド、第2ベクトルのロ
−ド(第1ベクトルのロ−ドと、第2ベクトルのロ−ド
は相関がないので同一ル−プで行われる)、第1ベクト
ルの要素と第2ベクトルの要素の加算、加算結果の第1
ベクトルへのストアの処理の命令列上での距離が大きく
なり、デ−タの読みだし時間と演算実行時間の影響によ
る性能低下を防ぐことができ、高速化ができる。
In particular, in the list vector operation in the vector calculation of the scientific and technical calculation in which the repetition of the loop of the instruction sequence is the main, the window used for each loop is changed, and in the source index type operation, i is used. The processing of the i-th element is
Loading the i-th element of the list vector into the general-purpose register by the general-purpose register list load instruction in the 2 loop;
The data in the general-purpose register is used as a main storage address,
Floating-point register restore in i-1 loop
Load of the source vector (the vector to be read) indicated by the i-th element of the list vector to the floating-point register, and the data by the floating-point post-store instruction in the (i + 1) -th loop. Loading of the list vector for one element number, by doing by storing the data in the floating point register to the ith element of the get vector (the vector to be written);
The distance on the instruction sequence of the processing of loading the source vector and storing it in the target vector becomes longer, and it is possible to prevent a decrease in performance due to the influence of the data reading time, thereby increasing the speed. In the target index type operation, the processing of the i-th element is performed by loading the list vector into the general-purpose register of the i-th element by the general register list load instruction in the (i-2) -th loop. Load a source vector (read vector) to the floating-point register of the i-th element by the floating-point register preload instruction in the i-1 loop, and store the floating-point register list in the i + 1-th loop The data in the floating-point register using the data in the general-purpose register by the instruction as the main storage address.
Of the target vector, the i-th of the list vector
By doing a store to "element indicated by element", load the list vector for one element number,
The distance on the instruction sequence of the processing of loading the source vector and storing it in the target vector becomes longer, and it is possible to prevent a decrease in performance due to the influence of the data reading time, thereby increasing the speed. In the particle propulsion type operation, the processing of the i-th element is performed by loading the list vector into the general-purpose register of the i-th element by the general-purpose register list load instruction in the (i-2) -th loop. Load the first vector (ie, vector A in equation (3)) by the floating point register list load instruction in one loop to the first floating point register of the element indicated by the ith element of the list vector. Loading the i-th element of the second vector (i.e., the vector B in equation (3)) into the second floating-point register by the floating-point register preload instruction, and adding the floating-point at the i-th loop. By order (I.e., the addition of the element indicated by the i-th element of the list vector of the first vector and the i-th element of the second vector) of the floating-point register list in the (i + 1) -th loop Using the value of the general-purpose register of the addition result by the store instruction as the main storage address,
By storing in the element indicated by the i-th element of the list vector, the loading of the list vector, the loading of the first vector, and the loading of the second vector (the loading of the first vector) for one element number are performed. Since the load and the load of the second vector have no correlation, they are performed in the same loop.) The addition of the first vector element and the second vector element, and the first
The distance in the instruction sequence of the store processing to the vector is increased, and the performance can be prevented from deteriorating due to the influence of the data read time and the operation execution time, and the speed can be increased.

【図面の簡単な説明】[Brief description of the drawings]

【図1】 本発明による論理浮動小数点レジスタ番号−
物理浮動小数点レジスタ番号変換の1実施例。
FIG. 1 shows a logical floating-point register number according to the present invention.
One embodiment of physical floating point register number conversion.

【図2】 本発明による論理浮動小数点レジスタ番号−
物理汎用レジスタ番号変換および論理汎用レジスタ番号
−物理汎用レジスタ番号変換の1実施例。
FIG. 2 shows a logical floating-point register number according to the present invention.
One embodiment of physical general register number conversion and logical general register number-physical general register number conversion.

【図3】 本発明による図4で示す命令を実行するデ−
タ処理装置の1実施例を示す構成図。
FIG. 3 shows data for executing the instruction shown in FIG. 4 according to the present invention.
FIG. 1 is a configuration diagram showing one embodiment of a data processing device.

【図4】 本発明による現浮動小数点ウィンドウポイン
タ変更命令、現汎用ウインドウポインタ変更命令、浮動
小数点レジスタプリロ−ド命令、拡張浮動小数点レジス
タプリロ−ド命令、浮動小数点レジスタポストストア命
令、浮動小数点レジスタリストロ−ド命令、汎用レジス
タリストロ−ド命令、浮動小数点レジスタリストストア
命令の命令形式の1実施例を示す図。
FIG. 4 shows a current floating-point window pointer change instruction, a current general-purpose window pointer change instruction, a floating-point register preload instruction, an extended floating-point register preload instruction, a floating-point register post-store instruction, and a floating-point register reload instruction according to the present invention. FIG. 4 is a diagram showing an embodiment of an instruction format of a load instruction, a general-purpose register list load instruction, and a floating-point register list store instruction.

【符号の説明】[Explanation of symbols]

10は命令処理ユニット、20は記憶制御ユニット、3
0は主記憶、101は命令レジスタ、102は命令制御
部、103は物理汎用レジスタ群、104は汎用演算
器、105は物理浮動小数点レジスタ群、106は浮動
小数点演算器、107はアドレス加算器、108はキャ
ッシュ、109は主記憶アクセス制御部、110は現浮
動小数点ウィンドウポインタレジスタ、111は現ウィ
ンドウポインタ有効レジスタ、112は第1変換回路、
113は現汎用ウィンドウポインタレジスタ、114は
第2変換回路、115、116は信号線
10 is an instruction processing unit, 20 is a storage control unit, 3
0 is a main memory, 101 is an instruction register, 102 is an instruction control unit, 103 is a general-purpose register group, 104 is a general-purpose operation unit, 105 is a physical floating-point register group, 106 is a floating-point operation unit, 107 is an address adder, 108 is a cache, 109 is a main memory access control unit, 110 is a current floating point window pointer register, 111 is a current window pointer valid register, 112 is a first conversion circuit,
113 is a current general-purpose window pointer register, 114 is a second conversion circuit, and 115 and 116 are signal lines

───────────────────────────────────────────────────── フロントページの続き (72)発明者 中村 宏 茨城県つくば市並木4丁目1043番 (72)発明者 位守 弘充 茨城県つくば市天久保2丁目23番6号 (72)発明者 和田 英夫 神奈川県秦野市堀山下1番地 株式会社 日立製作所神奈川工場内 (56)参考文献 特開 昭61−267134(JP,A) 特開 昭61−241870(JP,A) 特開 昭61−136131(JP,A) 特開 昭60−129838(JP,A) 情報処理学会研究報告ARC91−8 p.61−68 (58)調査した分野(Int.Cl.6,DB名) G06F 17/16 G06F 9/38 ──────────────────────────────────────────────────続 き Continued on the front page (72) Inventor Hiroshi Nakamura 4-1043 Namiki, Tsukuba, Ibaraki (72) Inventor Hiromitsu 2-23-6, Akumabo, Tsukuba, Ibaraki (72) Inventor Hideo Wada No. 1 Horiyamashita, Hadano-shi, Kanagawa Hitachi, Ltd. Kanagawa Plant (56) References JP-A-61-267134 (JP, A) JP-A-61-241870 (JP, A) JP-A-61-136131 (JP) , A) JP-A-60-129838 (JP, A) Information Processing Society of Japan Research Report ARC91-8 p. 61-68 (58) Field surveyed (Int. Cl. 6 , DB name) G06F 17/16 G06F 9/38

Claims (3)

(57)【特許請求の範囲】(57) [Claims] 【請求項1】命令やデ−タを保持する主記憶と、該主記
憶内に保持された主記憶デ−タを用いて命令を実行し、
その命令には、該主記憶から主記憶デ−タを読みだし、
命令中で番号づけされたレジスタに格納するロ−ド命
令、命令中で番号づけされたレジスタから該主記憶にデ
−タを格納するストア命令、該主記憶または命令中で番
号づけされたレジスタからデ−タを読出し、該デ−タに
ついて演算を行い、演算結果を命令中で番号づけされた
レジスタに格納する演算命令を含む命令処理ユニットか
ら成るデ−タ処理装置において、命令によってアドレス
可能な第1レジスタと呼ばれる第1の種類のレジスタの
数より多い物理第1レジスタと呼ばれるレジスタ、複数
のビットから成る現第1ウインドウポインタレジスタと
呼ばれるレジスタ、1ビットの現ウインドウポインタ有
効レジスタと呼ばれるレジスタ、該現ウインドウポイン
タ有効レジスタの値が1のときに、命令中の第1レジス
タ番号を物理第1レジスタ番号へ変換し、かつ前記現第
1ウインドウポインタレジスタの値によって該変換のパ
タ−ンを変える第1変換回路、命令によってアドレス可
能な前記第1レジスタの数および命令によってアドレス
可能な第2レジスタと呼ばれる第2の種類のレジスタの
数より多い物理第2レジスタと呼ばれるレジスタ、複数
のビットから成る現第2ウインドウポインタレジスタと
呼ばれるレジスタ、前記現ウインドウポインタ有効レジ
スタの値が1のときに、命令中の第1レジスタ番号また
は第2レジスタ番号を物理第2レジスタ番号へ変換し、
かつ前記現第2ウインドウポインタレジスタの値によっ
て該変換のパタ−ンを変える第2変換回路とを有し、前
記命令処理ユニットは、前記現第1ウインドウポインタ
レジスタの値を変更するための現第1ウインドウポイン
タ変更命令、前記現第2ウインドウポインタレジスタの
値を変更するための現第2ウインドウポインタ変更命
令、命令中の第2レジスタ番号を前記現第2ウインドウ
ポインタレジスタの値を用いて前記第2変換回路で第2
物理レジスタへ変換し、該第2物理レジスタ番号の示す
第2物理レジスタ中に格納されている主記憶アドレスか
らデ−タを読みだし、命令中の第1レジスタ番号を前記
現第1ウインドウポインタレジスタの値から決定される
が該現第1ウインドウポインタレジスタの値とは異なる
値を前記現第1ウインドウポインタレジスタの値とみな
して前記第1変換回路で物理第1レジスタ番号へ変換
し、該物理第1レジスタ番号の示す物理第1レジスタに
前記デ−タを格納する第1レジスタプリロ−ド命令、命
令中の第1レジスタ番号を前記現第1ウインドウポイン
タレジスタの値から決定されるが該現第1ウインドウポ
インタレジスタの値とは異なる値を前記現第1ウインド
ウポインタレジスタの値とみなして前記第1変換回路で
物理第1レジスタ番号へ変換し、該物理第1レジスタ番
号の示す物理第1レジスタからデ−タを読みだし、命令
中の第2レジスタ番号を前記現第2ウインドウポインタ
レジスタの値を用いて前記第2変換回路で第2物理レジ
スタへ変換し、該第2物理レジスタ番号の示す第2物理
レジスタ中に格納されている主記憶アドレスに、前記デ
−タを格納する第1レジスタポストストア命令、命令中
のレジスタ番号を前記現第2ウインドウポインタレジス
タの値から決定されるが前記現第2ウインドウポインタ
レジスタの値とは異なる値を前記現第2ウインドウポイ
ンタレジスタの値とみなして前記第2変換回路で物理第
2レジスタ番号へ変換し、該物理第2レジスタ番号の示
す物理第2レジスタ中に格納されている主記憶アドレス
からデ−タを読みだし、命令中の第1レジスタ番号を前
記現第1ウインドウポインタレジスタの値から決定され
るが前記現第1ウインドウポインタレジスタとは異なる
値を前記現第1ウインドウポインタレジスタの値とみな
して前記第1変換回路で物理第1レジスタ番号へ変換
し、該物理第1レジスタ番号の示す物理第1レジスタに
前記デ−タを格納する第1レジスタリストロ−ド命令、
命令中の第1の第2レジスタ番号を前記現第2ウインド
ウポインタレジスタを用いて前記第2変換回路で物理第
2レジスタ番号へ変換し、該物理第2レジスタ番号の示
す物理第2レジスタ中に格納されている情報を用いて主
記憶アドレスを決定し、該主記憶アドレスからデ−タを
読みだし、命令中の第2の第2レジスタ番号を前記現第
2ウインドウポインタレジスタの値から決定されるが前
記現第2ウインドウポインタレジスタの値とは異なる値
を前記現第2ウインドウポインタレジスタの値とみなし
て前記第2変換回路で物理第2レジスタ番号へ変換し、
該物理第2レジスタ番号の示す物理第2レジスタに前記
デ−タを格納する第2レジスタリストロ−ド命令、命令
中の第1レジスタ番号を前記現第1ウインドウポインタ
レジスタの値から決定されるが前記現第1ウインドウポ
インタレジスタの値とは異なる値を前記現第1ウインド
ウポインタレジスタの値とみなして前記第1変換回路で
物理第1レジスタ番号へ変換し、該物理第1レジスタ番
号の示す物理第1レジスタからデ−タを読みだし、命令
中のレジスタ番号を前記現第2ウインドウポインタレジ
スタの値から決定されるが前記現第2ウインドウポイン
タレジスタの値とは異なる値を前記現第2ウインドウポ
インタレジスタの値とみなして前記第2変換回路で物理
第2レジスタ番号へ変換し、該物理第2レジスタ番号の
示す物理第2レジスタ中に格納されている主記憶アドレ
スに前記デ−タを格納する第1レジスタリストストア命
を実行する手段を有し、前記第1レジスタプリロ−ド
命令、前記第1レジスタポストストア命令、前記第1レ
ジスタリストロ−ド命令、前記第2レジスタリストロ−
ド命令、前記第1レジスタリストストア命令を除く前記
ロ−ド命令、前記ストア命令、前記演算命令の実行では
命令中の第1レジスタ番号は前記現第1ウインドウポイ
ンタレジスタの値を用いて前記第1変換回路で物理第1
レジスタ番号へ変換し、該物理第1レジスタ番号の示す
物理第1レジスタを参照し、命令中の第2レジスタ番号
は前記現第2ウインドウポインタレジスタの値を用いて
前記第2変換回路で物理第2レジスタ番号へ変換し、該
物理第2レジスタ番号の示す物理第2レジスタを参照す
るように制御することを特徴とするデ−タ処理装置。
An instruction is executed using a main memory for holding instructions and data, and main memory data held in the main memory.
The instruction includes reading main memory data from the main memory,
A load instruction to be stored in the register numbered in the instruction, a store instruction to store data from the register numbered in the instruction to the main memory, a register numbered in the main memory or the instruction Data is read from the memory, an operation is performed on the data, and an operation result is stored in a register numbered in the instruction. A register called a physical first register, a register called a current first window pointer register composed of a plurality of bits, and a register called a 1-bit current window pointer valid register, the number of which is larger than the number of registers of a first type called a first type register When the value of the current window pointer valid register is 1, the first register number in the instruction is changed to the physical first register. A first conversion circuit, which converts the number of the first registers into address numbers and changes the pattern of the conversion according to the value of the current first window pointer register; the number of the first registers addressable by an instruction; and the second register addressable by an instruction. When the value of the physical second register is larger than the number of registers of the second type called register, the register called current second window pointer register comprising a plurality of bits, and the value of the current window pointer valid register is 1, the instruction Converting the first register number or the second register number in the above into a physical second register number,
And pattern of the conversion by the current second window pointer register value - and a second converting circuit for changing the down, before
The instruction processing unit includes a current first window pointer change instruction for changing a value of the current first window pointer register, a current second window pointer change instruction for changing a value of the current second window pointer register, The second register number in the instruction is converted into a second number by the second conversion circuit using the value of the current second window pointer register.
The data is converted into a physical register, data is read from the main memory address stored in the second physical register indicated by the second physical register number, and the first register number in the instruction is replaced with the current first window pointer register. , But is different from the value of the current first window pointer register as the value of the current first window pointer register, and converted by the first conversion circuit into a physical first register number. A first register preload instruction for storing the data in the physical first register indicated by the first register number, and the first register number in the instruction is determined from the value of the current first window pointer register. A value different from the value of the first window pointer register is regarded as the value of the current first window pointer register, and the first conversion circuit determines the physical first register number. The data is read from the physical first register indicated by the physical first register number, and the second register number in the instruction is converted by the second conversion circuit using the value of the current second window pointer register. A first register post-store instruction for converting the data into a second physical register and storing the data at a main memory address stored in the second physical register indicated by the second physical register number; Is determined from the value of the current second window pointer register, but a value different from the value of the current second window pointer register is regarded as the value of the current second window pointer register. The data is read from the main memory address stored in the physical second register indicated by the physical second register number, and converted into the first number in the instruction. The register number is determined from the value of the current first window pointer register. However, a value different from the current first window pointer register is regarded as the value of the current first window pointer register, and the first conversion circuit performs the physical first A first register reload instruction for converting to a register number and storing the data in the physical first register indicated by the physical first register number;
The first second register number in the instruction is converted into a physical second register number by the second conversion circuit using the current second window pointer register, and the first second register number is stored in the physical second register indicated by the physical second register number. The main memory address is determined using the stored information, data is read from the main memory address, and the second second register number in the instruction is determined from the value of the current second window pointer register. However, a value different from the value of the current second window pointer register is regarded as the value of the current second window pointer register and is converted by the second conversion circuit into a physical second register number.
A second register reload instruction for storing the data in the physical second register indicated by the physical second register number, and the first register number in the instruction is determined from the value of the current first window pointer register. Considers a value different from the value of the current first window pointer register as the value of the current first window pointer register, converts the value into the physical first register number by the first conversion circuit, and indicates the physical first register number. The data is read from the physical first register, and the register number in the instruction is determined from the value of the current second window pointer register, but the value of the current second window pointer register is different from the value of the current second window pointer register. Assuming the value of the window pointer register, the second conversion circuit converts the value into the physical second register number, and the physical second register indicated by the physical second register number. The de in the main memory address stored in the data - has means for executing a first register list store instruction for storing data, said first register preload - de instruction, the first register poststore instruction, the first One register reload instruction, the second register reload instruction
In the execution of the load instruction, the store instruction, and the operation instruction except for the load instruction, the first register list store instruction, the first register number in the instruction is determined by using the value of the current first window pointer register. Physical 1st by 1 conversion circuit
The register is converted to a register number, the physical first register indicated by the physical first register number is referred to, and the second register number in the instruction is converted to the physical first register by the second conversion circuit using the value of the current second window pointer register. 2. A data processing device, wherein the data is converted into two register numbers and controlled so as to refer to the physical second register indicated by the physical second register number.
【請求項2】前記第1レジスタリストロ−ド命令と前記
第1レジスタリストストア命令における命令中のレジス
タ番号が、第1レジスタ番号であることを特徴とする請
求項1記載のデ−タ処理装置。
2. The data processing according to claim 1, wherein a register number in said first register list load instruction and said first register list store instruction is a first register number. apparatus.
【請求項3】前記命令中で番号づけされた第1レジスタ
と前記物理第1レジスタが浮動小数点レジスタと呼ばれ
る、浮動小数点数を格納する専用のレジスタであり、前
記命令中で番号づけされた第2レジスタと前記物理第2
レジスタが汎用レジスタと呼ばれる、固定小数点数、論
理デ−タ、2進整数などを格納する汎用のレジスタであ
ることを特徴とする請求項1記載のデ−タ処理装置。
3. The first register numbered in the instruction and the physical first register are dedicated registers for storing a floating-point number, which are called floating-point registers, and the first register numbered in the instruction. 2 registers and the physical second
2. The data processing apparatus according to claim 1, wherein the register is a general-purpose register called a general-purpose register for storing fixed-point numbers, logical data, binary integers, and the like.
JP4076608A 1991-11-20 1992-03-31 Pseudo vector processor Expired - Lifetime JP2875426B2 (en)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP4076608A JP2875426B2 (en) 1992-03-31 1992-03-31 Pseudo vector processor
US07/977,298 US5438669A (en) 1991-11-20 1992-11-16 Data processor with improved loop handling utilizing improved register allocation
DE69229771T DE69229771T2 (en) 1991-11-20 1992-11-19 Data processing method and device
EP92119710A EP0543366B1 (en) 1991-11-20 1992-11-19 Data processing method and apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP4076608A JP2875426B2 (en) 1992-03-31 1992-03-31 Pseudo vector processor

Publications (2)

Publication Number Publication Date
JPH05282352A JPH05282352A (en) 1993-10-29
JP2875426B2 true JP2875426B2 (en) 1999-03-31

Family

ID=13610055

Family Applications (1)

Application Number Title Priority Date Filing Date
JP4076608A Expired - Lifetime JP2875426B2 (en) 1991-11-20 1992-03-31 Pseudo vector processor

Country Status (1)

Country Link
JP (1) JP2875426B2 (en)

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
情報処理学会研究報告ARC91−8 p.61−68

Also Published As

Publication number Publication date
JPH05282352A (en) 1993-10-29

Similar Documents

Publication Publication Date Title
JP2725546B2 (en) Data processing device
US5081572A (en) Manipulation of time-ordered lists and instructions therefor
EP0543366B1 (en) Data processing method and apparatus
US4320455A (en) Queue structure for a data processing system
JPH0588888A (en) Address formation mechanism and method of previously fetching data
EP0394624B1 (en) Multiple sequence processor system
JPH0778734B2 (en) Subsystem and method for changing program status word
JPH0855028A (en) Microprocessor
JPH063584B2 (en) Information processing equipment
EP0149900B1 (en) Data storage apparatus
US5974522A (en) Machine for processing interrupted out-of-order instructions
US5729723A (en) Data processing unit
JPH0820951B2 (en) How to speed up your processor
JP2875426B2 (en) Pseudo vector processor
JP3317985B2 (en) Pseudo vector processor
JP2618187B2 (en) Method and system for fast floating point exception handling in a multiscalar processor system
US5765221A (en) Method and system of addressing which minimize memory utilized to store logical addresses by storing high order bits within a register
JPH0512751B2 (en)
JP3097981B2 (en) Data processing device
JPS6116335A (en) Information processor
JPS60129839A (en) Information processor
WO1998011484A1 (en) Command processor having history memory
JP2000029865A (en) Data processor
JP2511978B2 (en) Data processing device
JPH0434191B2 (en)

Legal Events

Date Code Title Description
FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20080114

Year of fee payment: 9

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20080114

Year of fee payment: 9

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090114

Year of fee payment: 10

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090114

Year of fee payment: 10

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100114

Year of fee payment: 11

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110114

Year of fee payment: 12

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110114

Year of fee payment: 12

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120114

Year of fee payment: 13

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130114

Year of fee payment: 14

EXPY Cancellation because of completion of term
FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130114

Year of fee payment: 14