JP3776652B2 - Vector arithmetic unit - Google Patents
Vector arithmetic unit Download PDFInfo
- Publication number
- JP3776652B2 JP3776652B2 JP32874699A JP32874699A JP3776652B2 JP 3776652 B2 JP3776652 B2 JP 3776652B2 JP 32874699 A JP32874699 A JP 32874699A JP 32874699 A JP32874699 A JP 32874699A JP 3776652 B2 JP3776652 B2 JP 3776652B2
- Authority
- JP
- Japan
- Prior art keywords
- data
- vector
- adder
- rearranging
- input
- 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
Links
Images
Landscapes
- Complex Calculations (AREA)
Description
【0001】
【発明の属する技術分野】
本発明は、ベクトル演算装置に関し、特に、ベクトル総和演算を行う際に指数合わせによる誤差を小さくして高精度な演算処理を行いうるようにしたベクトル演算装置に関する。
【0002】
【従来の技術】
ベクトル総和演算を行う従来のベクトル演算装置を図5に示す。図5に示すとおり、従来のベクトル演算装置は、ベクトルデータを格納するベクトルレジスタ111と、総和演算処理を行う加算器121と、演算結果を格納するベクトルレジスタ112とを具える。図5において、命令制御部(図示せず)から総和命令、すなわち命令語300が発行されると、命令語300中の読み出しレジスタを指定するRRフィールド302によって指定されたベクトルレジスタ111からベクトルデータが読み出され、加算器121に入力する。加算器121は、入力データの総和演算処理を行い、命令語300中の書き込みレジスタを指定するWRフィールド303によって指定されたベクトルレジスタ112に最終結果を格納する。加算器121における総和演算処理方法は以下の通りである。
【0003】
まず、ベクトルデータを格納しているベクトルレジスタ111から、1クロック毎に1つのベクトルデータが読み出され、加算器121に順次入力される。加算器121は、最終結果以外の加算結果が再び加算器121に入力され、ベクトルレジスタから読み出されたベクトルデータと加算されるように構成されている。
【0004】
図6は、図5に示すベクトル演算装置の加算器121内の処理を示す模式図である。例えば加算器121内の処理時間を4クロックとすると、ベクトルレジスタ111から読み出された要素は、4クロック後に再び加算器21に入力され加算される。
【0005】
ここで、ベクトルデータをa1、a2、a3、a4、a5、a7、a6、a7、a8...とする。データa1は、1クロック目でベクトルレジスタ111から読み出されて、2クロック目で加算器121内の加算処理1に入力され、即値”0”との加算が行われる。加算器内処理2、3が順次行われ、5クロック目には加算器内処理4によってa1+0の結果が求められる。そして次クロック(6クロック目)で、この結果a1+0は再度加算器内処理1に入力される。
【0006】
一方で、5クロック目にはベクトルレジスタ111からデータa5が読み出されており、6クロック目でこのデータa5が加算器内処理1に入力され、再度入力されたa1+0と加算されて、a1+a5の処理が行われる。データa2、a3、a4についてもa1の場合と同様に、加算器内処理で即値0との加算が行われ(a2+0、a3+0、a4+0)、その結果が7、8、9クロック目に再度加算器内処理1に入力され、a2+a6、a3+a7、a4+a8の結果が求められる。
【0007】
ここで、a1+a5、a2+a6、a3+a7、a4+a8の加算結果をそれぞれS1、S2、S3、S4とすると、加算器内処理1には、10クロック目にS1とa9、11クロック目にS2とa10、12クロック目にS3とa11、13クロック目にS4とa12が入力され、S1+a9、S2+a10、S3+a11、S4+a12の結果が得られる。
【0008】
最終結果の算出方法は様々であるが、ここでは図7に示す方法で求めるものとする。図7では、ベクトル処理要素数が8の時の最終結果の算出方法を示す。S1、S2、S3、S4は上述した方法により算出される。S3が加算器内処理1に入力するタイミングで、S1が加算器内処理1に入力されるように演算器内で制御され、S1+S3=S5が計算されるものとする。同様に、S4が加算器内処理1に入力されるタイミングで、S2が加算器内処理1に入力されるように演算器内で制御され、S2+S4=S6が計算されるものとする。また、S6が加算器内処理1に入力されるタイミングでS5が加算器内処理1に入力されるように演算器内で制御され、S5+S6=総和が計算されるものとする。
【0009】
このように、最終的に1つの総和結果が得られ、その結果はベクトルレジスタ12に格納される。一般的に、ベクトル演算装置における総和処理は上述のように加算器内でデータを回帰させることによって処理の高速化を図るようにしている。スカラ処理を行う場合は、通常a1から要素順に加算されるが、ベクトル演算装置で処理する場合は、要素順には加算されないので、スカラ処理時とは加算順序が異なる。ところが、加算処理は公知のように加算処理前に以下のような指数合わせを行う必要がある。
【0010】
計算機上で扱われる浮動小数点データは通常16進数で表され、指数部と仮数部で示すことができる。加算処理において、一般には指数合わせは指数の大きい方へ指数の小さい方を合わせる。加算する2つのデータの指数部の差分だけ指数の小さい方の仮数部を右にシフトするので、シフトアウトしたビットは切捨てられる。このように、加算処理においては指数合わせを行う必要があるので、加算する2つのデータの指数差が大きい場合には、シフトアウトされるビット数が多くなり、加算結果が誤差を含むことになる。
【0011】
この誤差について、計算機上で扱われるデータを10進数で表して以下に簡単に説明する。加算器の有効桁数は小数点以下5桁であると仮定し、ベクトル処理要素数が8の場合の具体的な動作について説明する。a1〜a8の各データを、a1=1.00000E+00、a2=2.00000E+00、a3=3.00000E+00、a4=4.00000E+00、a5=5.00000E+00、a6=1.00000E+00、a7=2.00000E+00、a8=1.00000E+06とすると、途中加算結果であるS1〜S6と最終結果(総和)は以下のようになる。
S1=a1+a5=1.00000E+00+5.00000E+00=6.00000E+00
S2=a2+a6=2.00000E+00+1.00000E+00=3.00000E+00
S3=a3+a7=3.00000E+00+2.00000E+00=5.00000E+00
S4=a4+a8=4.00000E+00+1.00000E+06=0.00000E+06+1.00000E+06=1.00000E+06
S5=S1+S3=6.00000E+00+5.00000E+00=1.1000E+01
S6=S2+S4=3.00000E+00+1.00000E+06=0.00000E+06+1.00000E+06=1.00000E+06
総和=S5+S6=1.10000E+01+1.00000E+06=0.00001E+06+1.00000E+06=1.00001E+06
総和処理の最終結果は、1.00001E+06になる。
【0012】
同様の計算をスカラで処理した場合は、a1からa8まで要素順に加算するので、最終結果(総和)は以下のようになる。
a1+a2=1.00000E+00+2.00000E+00=3.00000E+00…S1
S1+a3=3.00000E+00+3.00000E+00=6.00000E+00…S2
S2+a4=6.00000E+00+4.00000E+00=1.00000E+01…S3
S3+a5=3.00000E+01+5.00000E+00=1.50000E+01…S4
S4+a6=3.00000E+01+1.00000E+00=1.60000E+01…S5
S5+a7=1.60000E+01+2.00000E+00=1.80000E+01…S6
S6+a8=1.80000E+01+1.00000E+06=1.00002E+06…総和
このように、入力データに依存するものの、最終総和結果は加算順序によってベクトル処理とスカラ処理とで変わる可能性がある。
【0013】
【発明が解決しようとする課題】
しかしながら、スカラ処理時とベクトル処理時とで総和処理結果が異なる場合は、ほとんどの場合スカラ処理時の結果が正しいとされている。これは、プログラム上は要素順に加算するように書かれているので、スカラ処理時における指数合わせによって発生する誤差は避けられないものであるからである。このように総和処理結果が異なる場合は、プログラムソース中の総和処理が発生する箇所のみスカラ処理を行うことが可能である。しかし、この場合は、ベクトル演算で処理できる箇所をあえてスカラで処理するため、処理時間が遅くなるという問題がある。
【0014】
また、スカラ処理時以上に高精度の演算結果が必要な場合は、処理対象要素を昇順に並べ換えた後、スカラで処理を行うことによって指数合わせなどによる誤差を小さくすることが可能になる。しかし、この場合は、処理要素を並べ換えるためのプログラムソースが必要となり、人手がかかる上に、処理時間も遅くなってしまう。
【0015】
上述したように、ベクトル演算処理では、総和演算処理の高速化を図っているために総和処理時の加算順序がスカラ処理時と異なることになるが、従来のベクトル演算装置では、ベクトル総和処理時に加算順序を変更することができないため、処理するデータによってはスカラ処理による総和結果と比べて、ベクトル処理の総和結果の精度が劣るという問題がある。更に、入力データを並べ換える手段がないため、スカラ処理で行う以上の高精度の演算結果は期待できない。
【0016】
本発明は上記課題を解決すべくなされたものであり、ベクトル総和処理時に入力データを昇順に並べ換え、更に要素順に加算を行うことによって、高精度の総和処理結果を得ることができるベクトル演算装置を提供することを目的とする。
【0017】
【課題を解決するための手段】
上記課題を解決するため、本発明のベクトル演算装置は、少なくとも1つのベクトルレジスタと、当該ベクトルレジスタ内のベクトルデータを総和演算処理する加算器とを具えるベクトル処理装置において、前記ベクトルレジスタ内のベクトルデータを並べ換えるデータ並べ替え手段と、当該データ並べ換え手段で並べ換えたデータを前記加算器に順次入力して、前記データをキー値が小さい要素順に加算して総和演算処理を行うようにしたことを特徴とする。
【0018】
このように構成することによって、小さいデータから順に加算処理を行うことができるので、指数合わせにより発生する誤差を抑えることが可能となる。このため、高精度な総和処理結果を得ることができる。
【0019】
又、本発明のベクトル演算装置は、前記データ並べ換え手段が、前記ベクトルデータを並べ換えるデータソート手段と、当該データソート手段により並べ換えたデータを格納するデータ格納手段と、当該データ格納手段に格納したベクトルデータを所定のタイミングで読み出して前記加算器に送出するデータ読み出しタイミング指示手段を具えることを特徴とする。
【0020】
更に本発明のベクトル演算装置は、前記加算器が最終加算結果以外の途中加算結果が再度当該加算器に入力されるように構成されており、前記データ読み出しタイミング指示手段が、先行要素の加算結果が前記加算器に再度入力されるのと同時に次要素を前記データ格納手段から読み出して前記加算器に入力するように指示することを特徴とする。
【0021】
このように構成することにより、ベクトルデータを並べ換え、その後に所定のタイミング、特に加算器における動作タイミングに同期してデータを読み出して加算器に送出することができるので、高精度で高速な総和演算処理を実行することができる。
【0022】
又、本発明のベクトル演算装置は、前記ベクトルレジスタ内のベクトルデータを直接前記加算器に送り込む第1のデータラインと、前記ベクトルデータを前記データ並べ換え手段を介して前記加算器に送り込む第2のデータラインとを具え、前記加算器へのベクトルデータの供給ラインを前記第1のデータラインと第2のデータラインとの間で切り換えるデータ供給切り換え手段を具えることを特徴とする。
【0023】
このように、ベクトルデータを並べ替える必要のない時は、データをそのままの順で加算処理することが可能となるので、その場合に応じた適切な加算処理を行うことができる。
【0024】
又、本発明のベクトル演算装置は、前記ベクトルデータの並べ換えが昇順で行われることを特徴とする。
【0025】
このように、ベクトルデータを昇順に並べ換えることによって、小さいデータから順に加算処理を行うことができるので、指数合わせによって発生する誤差を小さくすることが可能となる。
【0026】
又、本発明のベクトル演算装置は、コンパイラが作成した命令語内に、前記ベクトルデータの並べ換え処理を行うか否かの指示信号が設定されていることを特徴とする。
【0027】
又、本発明のベクトル演算装置は、プロセス状態語内に前記ベクトルデータの並べ換え処理を行うか否かの指示信号が設定されていることを特徴とする。
【0028】
このように構成することによって、プログラム実行者は任意の箇所の総和処理のみデータを昇順に並べ換えて行うことができるので、全体のプログラムの実行時間を極端に遅くすることなく高精度な結果を得ることができる
【0029】
又、本発明のベクトル演算装置は、当該演算装置内で行われる総和演算のうちの一部を指定して、当該指定した部分について前記並べ替え手段を介してベクトル総和演算処理を行うようにしたことを特徴とする。
【0030】
このように構成することによって、全体のプログラムの実行時間を極端に遅くすることなく高精度な総和演算処理を実行することができる。
【0031】
【発明の実施の形態】
本発明のベクトル処理装置を添付の図面を参照して詳細に説明する。図1は、本発明の第1の実施形態の構成を示すブロック図である。本発明のベクトル処理装置は、ベクトルデータを格納するベクトルレジスタ11と、総和演算を処理する加算器21と、ベクトルデータの並べ替えを行うか否かの切り替えをする入力切り替え手段30と、ベクトルデータを昇順に並べ換えるデータ並べ換え手段40と、演算結果を保存するベクトルレジスタ12とを具える。
【0032】
入力切り替え手段30は、データソート指示信号50にしたがってベクトルレジスタ11から読み出したベクトルデータを加算器21に直接入力するか、あるいはデータ並べ換え手段40を介して加算器21に供給するかを切り替える。データ並べ換え手段40は、データソート手段41と、データ格納手段42と、読み出しタイミング制御手段43とを具える。データソート手段41は、入力切り替え手段30を介して送出されてきた複数要素のベクトルデータを昇順に並べ換え、その結果をデータ格納手段42に格納する。データ格納手段42内のベクトルデータは、読み出しタイミング指示手段43によって読み出され、その後加算器21に供給される。読み出しタイミング指示手段43は、各ベクトルデータをデータ格納手段42から読み出すタイミングを指示するが、このタイミングは加算器21内の処理時間によって決定し、先行要素の加算結果が加算器21へ入力されるのと同時に次要素をデータ格納手段42から読み出して加算器21へ入力されるように指示する。尚、加算器21は、最終演算結果以外の途中結果は再度加算器21に入力され、最終結果のみをベクトルレジスタ12に格納するように構成されている。
【0033】
図2は、本発明のベクトル処理装置における命令語を示す図である。命令語100において、OPフィールド101は命令を示すオペレーションコードを示し、RRフィールド103はデータを読み出すベクトルレジスタを指定し、WRフィールドは104は演算結果を書き込むベクトルレジスタを指定する。また、ソート指示ビット102は、入力データを昇順に並べ換えるべきか並べ換えずに通常の総和処理を行うかを指定するビットである。
【0034】
データの並べ替えを行わずに通常通りの総和処理を行う場合はソース指示ビット102を”0”に、入力データを並べ換える場合は”1”に指定するようにする。このビットは、コンパイラが命令語を生成する際に”0”か”1”かを指定する。尚、プログラム中の一部にコンパイラ指示行が書かれている場合は、指定された部分のみの総和演算命令を対象にして、並べ替えを行うようにする。一方、コンパイルオプションなどで指定する場合は、プログラム中のすべての総和演算命令を対象にして、並べ替えを行うことができる。このソート指示ビット102が”0”の場合は、図1に示すデータソート指示信号50は”0”となり、通常の総和演算処理が行われ、ソート指示ビット102が”1”の場合は、ソート指示信号は”1”となって、データの並べ替えを行って演算処理が実行される。
【0035】
又、上述の実施形態では、ソート指示信号50は命令語100中のソート指示ビットによって決定しているが、例えば図3に示すようなプロセス状態語200内にソート指示信号を設け、HWの初期設定値として設定し前総和演算命令を対象とするようにしてもよい。
【0036】
次に、本発明に係るベクトル処理装置の動作の流れについて図1及び図2を参照しながら説明する。図1において、命令制御部(図示せず)から総和演算命令が発行されると、命令語100(図2参照)中のRRフィールド103によってベクトルレジスタ11が指定され、このレジスタからベクトルデータが読み出される。次いで、データ切り替え手段30は、データソート指示信号50が”0”の場合は、ベクトルレジスタ11から読み出したベクトルデータを、加算器21に直接入力するようにデータレートの切り替えを行う。一方、データソート指示信号50が”1”の場合は、データ並べ換え手段40にルートを切り替えて、ベクトルデータをデータ並べ換え手段40入力させる。
【0037】
データソート信号50が”1”の場合は、ベクトルレジスタ11からのベクトルデータはデータ並べ換え手段40に送出され、データソート手段41にて、複数要素のデータを昇順に並べ換える。この結果はデータ格納手段42に格納される。読み出しタイミング指示手段43にタイミング信号に応じてデータ格納手段42から読み出されて、加算器21に入力される。読み出しタイミング手段43がベクトルデータを読み出すタイミングは、加算器21内の処理時間によって決定し、先行要素の加算結果が加算器21に入力されるのと同時に次要素がデータ格納手段42から読み出され、加算器21へ入力される。加算器21での最終結果以外の途中結果は再度加算器21に入力され、最終結果のみ命令語100中のWRフィールド104で指定されたベクトルレジスタ、この場合ベクトルレジスタ12に送出され、格納される。
【0038】
データソート信号50が”0”の場合、すなわちベクトルレジスタ11から読み出したベクトルデータを加算器21に直接入力する場合は、従来の総和処理と同様であるので、ここでの説明は省略する。又、加算器21における浮動小数点加算における加算方法は、公知であるのでここでの説明は省略する。
【0039】
次に、図4を参照してソート指示信号50が”1”の場合の本発明の加算器21内の処理動作を詳細に説明する。ここで、加算器21内の処理時間を4クロックと仮定し、データ並べ換え手段40によって昇順に並べ換えられたデータを、A1、A2、A3、A4...とする。
【0040】
図4に示すとおり、クロック1においてデータ格納手段42から第1要素(A1)が読み出され、次のクロック2で加算器内処理1へ入力される。この時、加算器21ではA1を即値”0”と加算する。次いで加算器内処理2、3を経て、5クロック目には加算器内処理4においてA1+0の結果が求められる。この結果は次のクロック(6クロック目)で再度加算器内処理1に入力される。A1+0の結果が6クロック目に加算器内処理1に入力されることは予め予測することが可能であるので、読み出しタイミング指示手段43は、5クロック目にデータ格納手段42からA2を読み出して、6クロック目に次要素(A2)が加算器内処理1に入力するようにする。すなわち、読み出しタイミング指示手段43は、4クロック毎にデータ格納手段42からデータを読み出すようにする。
【0041】
図4に示すように、6クロック目には、加算器内処理1においてA1+A2(=S1)が求められる。以後同様に、9クロック目にデータ格納手段42から第3要素(A3)が読み出され、10クロック目にはS1とA3が加算器内処理1に入力され、加算器内処理2、3を経て13クロック目にはS1+A3(=S2)が算出される。このようにして、データソート手段41によって昇順に並べ換えられたベクトルデータをデータの小さい順に加算することによって総和演算処理を行い、最終的に求められた総和をベクトルレジスタ12に格納する。
【0042】
【発明の効果】
上述したように、本発明のベクトル処理装置によれば、総和処理を行うベクトルデータを昇順に並べ換えた後、小さいデータから順に加算処理を行うことができるので、指数合わせによって発生する誤差を抑えることができる。このため、高精度な演算結果を得ることができる。
【0043】
又、プログラム実行者が任意の箇所の総和演算処理のみについてデータを並べ換えて演算処理を行うようにすることができるので、全体のプログラムの実行時間を極端に遅くすることなく高精度な結果を得ることができる。
【図面の簡単な説明】
【図1】 図1は、本発明のベクトル演算装置の構成を示すブロック図である。
【図2】 図2は、本発明のベクトル演算装置における命令語を示す図である。
【図3】 図3は、本発明のベクトル演算装置におけるプロセス状態語を示す図である。
【図4】 図4は、本発明のベクトル演算装置の加算器内の処理動作を示す図である。
【図5】 図5は、従来のベクトル演算装置の構成を示すブロック図である。
【図6】 図6は、従来のベクトル演算装置の加算器内の処理動作を示す図である。
【図7】 図7は、従来のベクトル演算装置の加算器内のもう一つの処理動作を示す図である。
【符号の説明】
11、12、111、112 ベクトルレジスタ
21、121 加算器
30 入力切り替え手段
40 データ並べ換え手段
41 データソート手段
42 データ格納手段
43 読み出しタイミング指示手段
50 データソート信号
100 命令語
101、301 OPフィールド
102 ソート指示ビット
103、303 RRフィールド
104、304 WRフィールド
200 プロセス状態語
201 ソート指示ビット
300 命令語[0001]
BACKGROUND OF THE INVENTION
The present invention relates to a vector arithmetic apparatus, and more particularly to a vector arithmetic apparatus that can perform high-precision arithmetic processing by reducing an error due to exponent matching when performing vector summation.
[0002]
[Prior art]
FIG. 5 shows a conventional vector arithmetic apparatus that performs vector summation. As shown in FIG. 5, the conventional vector operation device includes a
[0003]
First, one vector data is read every clock from the
[0004]
FIG. 6 is a schematic diagram showing processing in the adder 121 of the vector arithmetic apparatus shown in FIG. For example, if the processing time in the adder 121 is 4 clocks, the elements read from the
[0005]
Here, the vector data are a1, a2, a3, a4, a5, a7, a6, a7, a8. . . And The data a1 is read from the
[0006]
On the other hand, the data a5 is read from the
[0007]
Here, if the addition results of a1 + a5, a2 + a6, a3 + a7, and a4 + a8 are S1, S2, S3, and S4, respectively, S1 and a9 at the 10th clock, and S2 and a10, 12 at the 11th clock. S3 and a11 are input to the clock, S4 and a12 are input to the 13th clock, and the results of S1 + a9, S2 + a10, S3 + a11, and S4 + a12 are obtained.
[0008]
Although there are various methods for calculating the final result, the method shown in FIG. 7 is used here. FIG. 7 shows a method of calculating the final result when the number of vector processing elements is eight. S1, S2, S3, and S4 are calculated by the method described above. It is assumed that S1 is input to the in-
[0009]
Thus, one total result is finally obtained, and the result is stored in the
[0010]
Floating-point data handled on a computer is usually represented by a hexadecimal number and can be represented by an exponent part and a mantissa part. In addition processing, in general, index matching is performed by adjusting the smaller index to the larger index. Since the mantissa having the smaller exponent is shifted to the right by the difference between the exponents of the two data to be added, the shifted out bits are discarded. Thus, since it is necessary to perform exponent matching in the addition processing, if the exponent difference between the two data to be added is large, the number of bits shifted out increases and the addition result includes an error. .
[0011]
This error will be briefly described below by representing data handled on a computer in decimal. A specific operation when the number of significant digits of the adder is assumed to be 5 digits after the decimal point and the number of vector processing elements is 8 will be described. a1 = 1.000000E + 00, a2 = 2.00000E + 00, a3 = 3.00000E + 00, a4 = 4.00000E + 00, a5 = 5.000000E + 00, a6 = 1.00000E + 00, a7 = 2.00000E + 00, Assuming that a8 = 1.00000E + 06, S1 to S6 as intermediate addition results and the final result (total) are as follows.
S1 = a1 + a5 = 1.00000E + 00 + 5.00000E + 00 = 6.00000E + 00
S2 = a2 + a6 = 2.00000E + 00 + 1.00000E + 00 = 3.00000E + 00
S3 = a3 + a7 = 3.00000E + 00 + 2.00000E + 00 = 5.00000E + 00
S4 = a4 + a8 = 4.00000E + 00 + 1.00000E + 06 = 0.00000E + 06 + 1.00000E + 06 = 1.00000E + 06
S5 = S1 + S3 = 6.00000E + 00 + 5.00000E + 00 = 1.1000E + 01
S6 = S2 + S4 = 3.00000E + 00 + 1.00000E + 06 = 0.00000E + 06 + 1.00000E + 06 = 1.00000E + 06
Sum = S5 + S6 = 1.10000E + 01 + 1.00000E + 06 = 0.00001E + 06 + 1.00000E + 06 = 1.00001E + 06
The final result of the summation process is 1.00001E + 06.
[0012]
When the same calculation is processed with a scalar, since a1 to a8 are added in element order, the final result (sum) is as follows.
a1 + a2 = 1.00000E + 00 + 2.00000E + 00 = 3.00000E + 00 ... S1
S1 + a3 = 3.00000E + 00 + 3.00000E + 00 = 6.00000E + 00 ... S2
S2 + a4 = 6.00000E + 00 + 4.00000E + 00 = 1.00000E + 01… S3
S3 + a5 = 3.00000E + 01 + 5.00000E + 00 = 1.50000E + 01… S4
S4 + a6 = 3.00000E + 01 + 1.00000E + 00 = 1.60000E + 01… S5
S5 + a7 = 1.60000E + 01 + 2.00000E + 00 = 1.80000E + 01… S6
S6 + a8 = 1.80000E + 01 + 1.00000E + 06 = 1.00002E + 06 ... Sum In this way, although depending on the input data, the final sum result may vary between vector processing and scalar processing depending on the order of addition. .
[0013]
[Problems to be solved by the invention]
However, if the summation processing results are different between the scalar processing and the vector processing, the result of the scalar processing is assumed to be correct in most cases. This is because, in the program, it is written to add in the order of elements, so that an error caused by exponent matching at the time of scalar processing is unavoidable. In this way, when the sum processing results are different, it is possible to perform the scalar processing only at the place where the sum processing occurs in the program source. However, in this case, there is a problem that the processing time is slow because a portion that can be processed by the vector operation is intentionally processed by the scalar.
[0014]
In addition, when a calculation result with higher accuracy than that at the time of scalar processing is required, it is possible to reduce errors due to exponent matching by rearranging the processing target elements in ascending order and then performing processing with the scalar. However, in this case, a program source for rearranging the processing elements is required, which requires labor and slows down the processing time.
[0015]
As described above, in the vector calculation process, the sum calculation process is speeded up, so the addition order during the sum process is different from the scalar process. However, in the conventional vector calculation device, during the vector sum process, Since the order of addition cannot be changed, there is a problem that the accuracy of the summation result of the vector processing is inferior to the summation result of the scalar processing depending on the data to be processed. Furthermore, since there is no means for rearranging input data, it is not possible to expect a calculation result with higher accuracy than that performed by scalar processing.
[0016]
The present invention has been made to solve the above-described problem. A vector arithmetic apparatus capable of obtaining a high-precision summation processing result by rearranging input data in ascending order during vector summation processing and further performing addition in element order. The purpose is to provide.
[0017]
[Means for Solving the Problems]
In order to solve the above-mentioned problem, a vector operation device according to the present invention is a vector processing device comprising at least one vector register and an adder that performs a sum operation on vector data in the vector register. A data rearrangement unit for rearranging vector data, and the data rearranged by the data rearrangement unit are sequentially input to the adder, and the sum is calculated by adding the data in the order of elements having the smallest key value. It is characterized by.
[0018]
With such a configuration, addition processing can be performed in order from the smallest data, so that errors caused by index matching can be suppressed. For this reason, a highly accurate summation processing result can be obtained.
[0019]
Further, in the vector operation device of the present invention, the data rearrangement means stores the data sort means for rearranging the vector data, the data storage means for storing the data rearranged by the data sort means, and the data storage means. Data read timing instruction means for reading vector data at a predetermined timing and sending it to the adder is provided.
[0020]
Further, in the vector operation device according to the present invention, the adder is configured so that an intermediate addition result other than the final addition result is input again to the adder, and the data read timing instruction means includes the addition result of the preceding element. Is input to the adder again, and at the same time, the next element is read from the data storage means and instructed to be input to the adder.
[0021]
By configuring in this way, vector data can be rearranged, and then the data can be read out and sent to the adder in synchronization with a predetermined timing, particularly the operation timing in the adder. Processing can be executed.
[0022]
The vector arithmetic unit of the present invention includes a first data line for directly sending the vector data in the vector register to the adder, and a second data line for sending the vector data to the adder via the data rearranging means. And a data supply switching means for switching a supply line of vector data to the adder between the first data line and the second data line.
[0023]
As described above, when it is not necessary to rearrange the vector data, the data can be added in the order as they are, so that an appropriate addition process corresponding to the case can be performed.
[0024]
In the vector operation device of the present invention, the vector data is rearranged in ascending order.
[0025]
In this way, by rearranging the vector data in ascending order, addition processing can be performed in order from the smallest data, so that an error caused by index matching can be reduced.
[0026]
Also, the vector arithmetic unit of the present invention is characterized in that an instruction signal for determining whether or not the vector data is rearranged is set in an instruction word created by a compiler.
[0027]
The vector operation device of the present invention is characterized in that an instruction signal for determining whether or not the vector data is rearranged is set in a process state word.
[0028]
With this configuration, the program executor can rearrange the data in ascending order only for the summation process at an arbitrary location, so that a highly accurate result can be obtained without extremely slowing the execution time of the entire program. [0029]
In the vector operation device of the present invention, a part of the sum operation performed in the operation device is specified, and the specified portion is subjected to vector sum operation processing via the rearranging means. It is characterized by that.
[0030]
With this configuration, it is possible to execute high-precision summation processing without extremely delaying the execution time of the entire program.
[0031]
DETAILED DESCRIPTION OF THE INVENTION
The vector processing apparatus of the present invention will be described in detail with reference to the accompanying drawings. FIG. 1 is a block diagram showing the configuration of the first exemplary embodiment of the present invention. The vector processing apparatus of the present invention includes a
[0032]
The
[0033]
FIG. 2 is a diagram showing instruction words in the vector processing apparatus of the present invention. In the instruction word 100, an
[0034]
When normal summation processing is performed without data rearrangement, the source instruction bit 102 is designated as “0”, and when input data is rearranged, “1” is designated. This bit specifies “0” or “1” when the compiler generates an instruction word. When a compiler instruction line is written in a part of the program, the rearrangement is performed only on the sum calculation instruction of the designated part. On the other hand, when it is specified by a compile option or the like, it can be rearranged for all the sum operation instructions in the program. When this sort instruction bit 102 is “0”, the data sort instruction signal 50 shown in FIG. 1 is “0”, the normal summation processing is performed, and when the sort instruction bit 102 is “1”, the sort is performed. The instruction signal is “1”, and the arithmetic processing is executed by rearranging the data.
[0035]
In the above-described embodiment, the sort instruction signal 50 is determined by the sort instruction bit in the instruction word 100. For example, a sort instruction signal is provided in the process state word 200 as shown in FIG. It may be set as a set value so as to target the previous sum operation instruction.
[0036]
Next, the operation flow of the vector processing apparatus according to the present invention will be described with reference to FIGS. In FIG. 1, when a sum operation instruction is issued from an instruction control unit (not shown), the
[0037]
When the data sort signal 50 is “1”, the vector data from the
[0038]
When the data sort signal 50 is “0”, that is, when the vector data read from the
[0039]
Next, the processing operation in the adder 21 of the present invention when the sort instruction signal 50 is “1” will be described in detail with reference to FIG. Here, assuming that the processing time in the adder 21 is 4 clocks, the data rearranged in the ascending order by the data rearranging means 40 are A1, A2, A3, A4. . . And
[0040]
As shown in FIG. 4, the first element (A1) is read from the data storage means 42 at the
[0041]
As shown in FIG. 4, A1 + A2 (= S1) is obtained in the
[0042]
【The invention's effect】
As described above, according to the vector processing device of the present invention, the vector data to be summed can be rearranged in ascending order, and then addition processing can be performed in ascending order, so that errors caused by index matching can be suppressed. Can do. For this reason, a highly accurate calculation result can be obtained.
[0043]
In addition, since the program executor can rearrange the data for only the sum calculation processing at an arbitrary place and perform the calculation processing, a highly accurate result can be obtained without extremely slowing the execution time of the entire program. be able to.
[Brief description of the drawings]
FIG. 1 is a block diagram showing a configuration of a vector arithmetic apparatus according to the present invention.
FIG. 2 is a diagram showing instruction words in the vector operation device of the present invention.
FIG. 3 is a diagram showing process state words in the vector operation device of the present invention.
FIG. 4 is a diagram showing a processing operation in an adder of the vector arithmetic apparatus according to the present invention.
FIG. 5 is a block diagram showing a configuration of a conventional vector operation device.
FIG. 6 is a diagram illustrating a processing operation in an adder of a conventional vector operation device.
FIG. 7 is a diagram showing another processing operation in the adder of the conventional vector arithmetic apparatus.
[Explanation of symbols]
11, 12, 111, 112 Vector register 21, 121
Claims (6)
前記ベクトルレジスタ内のベクトルデータを並べ換えるデータソート手段と、
このデータソート手段により並べ換えたデータを格納するデータ格納手段と、
このデータ格納手段に格納されている並べ換えられたベクトルデータの次要素を、前記加算器の動作タイミングに応じたタイミングで読み出して前記加算器に送出し、回帰させられた加算出力と加算させるデータ読み出しタイミング指示手段と、を具えることを特徴とするベクトル演算装置。A vector that includes at least one vector register and an adder that changes the addition order of vector data by regressing an addition output, and performs summation processing on the vector data in the vector register using the adder In the processing device,
Data sorting means for rearranging vector data in the vector register ;
Data storage means for storing the data rearranged by the data sorting means;
Data reading for reading out the next element of the rearranged vector data stored in the data storage means at a timing according to the operation timing of the adder, sending it to the adder, and adding it to the regressed addition output And a timing instruction means .
前記ベクトルレジスタ内のベクトルデータを並べ換えるデータ並べ換え手段と、
前記ベクトルレジスタ内のベクトルデータを前記加算器に送り込む第1のデータラインと、
前記ベクトルデータを前記データ並べ換え手段を介して前記加算器に送り込む第2のデータラインと、
前記加算器へのベクトルデータの供給ラインを前記第1のデータラインと第2のデータラインとの間で切り換えるデータ供給切り換え手段とを具え、
前記第2のデータラインが指定されたときには前記並べ換え手段で並べ換えたデータを前記加算器に順次入力して、前記データを昇順に加算して総和演算処理を行うことを特徴とするベクトル演算装置。 In a vector processing apparatus comprising at least one vector register and an adder that performs a sum operation on the vector data in the vector register using a floating-point operation ,
Data rearranging means for rearranging vector data in the vector register;
First data line to feed vector data in the vector register to said adder,
A second data line for sending the vector data to the adder via the data rearranging means ;
Comprising a data supply switching means for switching between said first data line and the second data lines supply lines of the vector data to the adder,
When the second data line is designated , the vector arithmetic apparatus is characterized in that the data rearranged by the rearranging means is sequentially input to the adder, and the data is added in ascending order to perform a sum operation process .
前記ベクトルレジスタ内のベクトルデータを並べ換えるデータ並べ換え手段と、前記ベクトルデータを前記ベクトルレジスタから直接加算器へ入力するか前記データ並べ換え手段を介して入力するかを切り換える入力切り換え手段とを具え、
前記入力切り換え手段は、コンパイラが作成した命令語内に前記ベクトルデータの並べ換え処理を行う指示信号が設定されている場合に、ベクトルデータを前記データ並べ換え手段を介して前記加算器に順次入力して、前記データを昇順に加算して総和演算処理を行わせることを特徴とするベクトル演算装置。 And one vector register even without low, the vector data using a floating-point operation in said vector register, the vector processing device comprising an adder for summation processing,
Data rearranging means for rearranging vector data in the vector register; and input switching means for switching whether the vector data is input directly from the vector register to the adder or input via the data rearranging means,
The input switching means sequentially inputs vector data to the adder via the data rearranging means when an instruction signal for rearranging the vector data is set in an instruction word created by a compiler. A vector arithmetic apparatus characterized in that the data are added in ascending order to perform summation processing .
前記ベクトルレジスタ内のベクトルデータを並べ換えるデータ並べ換え手段と、前記ベクトルデータを前記ベクトルレジスタから直接加算器へ入力するか前記データ並べ換え手段を介して入力するかを切り換える入力切り換え手段とを具え、
前記入力切り換え手段は、プロセス状態語内に、前記ベクトルデータの並べ換え処理を行う指示信号が設定されている場合に、ベクトルデータを前記データ並べ換え手段を介して前記加算器に順次入力して、前記データを昇順に加算して総和演算処理を行わせることを特徴とするベクトル演算装置。 And one vector register even without low, the vector data using a floating-point operation in said vector register, the vector processing device comprising an adder for summation processing,
Data rearranging means for rearranging vector data in the vector register, and input switching means for switching whether the vector data is input directly from the vector register to the adder or input via the data rearranging means,
The input switching means sequentially inputs vector data to the adder via the data rearranging means when an instruction signal for rearranging the vector data is set in the process state word . A vector arithmetic apparatus characterized in that the data is added in ascending order to perform a sum operation process .
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP32874699A JP3776652B2 (en) | 1999-11-18 | 1999-11-18 | Vector arithmetic unit |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP32874699A JP3776652B2 (en) | 1999-11-18 | 1999-11-18 | Vector arithmetic unit |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2001147914A JP2001147914A (en) | 2001-05-29 |
JP3776652B2 true JP3776652B2 (en) | 2006-05-17 |
Family
ID=18213720
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP32874699A Expired - Lifetime JP3776652B2 (en) | 1999-11-18 | 1999-11-18 | Vector arithmetic unit |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3776652B2 (en) |
-
1999
- 1999-11-18 JP JP32874699A patent/JP3776652B2/en not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
JP2001147914A (en) | 2001-05-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US4016545A (en) | Plural memory controller apparatus | |
EP0111776B1 (en) | Interrupt processor | |
US6334176B1 (en) | Method and apparatus for generating an alignment control vector | |
US6542985B1 (en) | Event counter | |
US3983539A (en) | Polymorphic programmable units employing plural levels of sub-instruction sets | |
US4558411A (en) | Polymorphic programmable units employing plural levels of sub-instruction sets | |
EP0902361A2 (en) | Single-chip CPU and microcomputer | |
US3983541A (en) | Polymorphic programmable units employing plural levels of phased sub-instruction sets | |
US4541045A (en) | Microprocessor architecture employing efficient operand and instruction addressing | |
KR100346515B1 (en) | Temporary pipeline register file for a superpipe lined superscalar processor | |
JPS6351287B2 (en) | ||
JP2653037B2 (en) | Data processing system | |
EP0094535B1 (en) | Pipe-line data processing system | |
EP0093430A2 (en) | Pipeline data processing system | |
JPH03286332A (en) | Digital data processor | |
EP1193594B1 (en) | Register renaming apparatus and processor | |
US3001708A (en) | Central control circuit for computers | |
US5590359A (en) | Method and apparatus for generating a status word in a pipelined processor | |
US5867696A (en) | Saving a program counter value as the return address in an arbitrary general purpose register | |
EP1634163B1 (en) | Result partitioning within simd data processing systems | |
JPH034936B2 (en) | ||
JP3776652B2 (en) | Vector arithmetic unit | |
US6240540B1 (en) | Cyclic redundancy check in a computer system | |
JP2553200B2 (en) | Information processing device | |
US6339821B1 (en) | Data processor capable of handling an increased number of operation codes |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20040727 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20040927 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20050614 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20050811 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20060207 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20060223 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100303 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100303 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110303 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120303 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130303 Year of fee payment: 7 |