JPH0346069A - ベクトル演算方式 - Google Patents

ベクトル演算方式

Info

Publication number
JPH0346069A
JPH0346069A JP18129789A JP18129789A JPH0346069A JP H0346069 A JPH0346069 A JP H0346069A JP 18129789 A JP18129789 A JP 18129789A JP 18129789 A JP18129789 A JP 18129789A JP H0346069 A JPH0346069 A JP H0346069A
Authority
JP
Japan
Prior art keywords
vector
data
sum
intermediate result
result
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.)
Pending
Application number
JP18129789A
Other languages
English (en)
Inventor
Katsumi Nakamura
克巳 中村
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.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric Corp
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 Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Priority to JP18129789A priority Critical patent/JPH0346069A/ja
Publication of JPH0346069A publication Critical patent/JPH0346069A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Complex Calculations (AREA)

Abstract

(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。

Description

【発明の詳細な説明】 〔産業上の利用分野〕 この発明は、科学技術用の数値計算処理に利用されるベ
クトル演算装置において、計算結果の誤差をより小さく
押さえ、ベクトル演算を行なうベクトル演算方式に関す
るものである。
〔従来の技術〕
第4図は、「W、Buchholz、  ”The I
BM System/370 Vector arch
itecture” 、 IBM SYSTEM JO
lJRNAL、 VOL、25.NO,11986,J
 ニ示された、従来のベクトル演算装置のベクトルレジ
スタとその演算方式を示すブロック図である。
従来、科学技術計算の分野において、非常に大きな要素
数のデータの総和、あるいは内積を計算するときには、
丸め誤差の発生が問題となっている。これは、演算が行
われる2つのオペランドの指数部の値の大きさ(以後オ
ーダーと呼ぶ)が大きく異なる場合に顕著なものとなる
。ところが、非常に大きな数のベクトルデータの総和を
計算しようとする場合には、オペランドのデータのオー
ダーが揃っていてもこの問題が発生する。例えば、10
000要素のデータの総和を計算する場合を考えたとき
、単純なプログラムで10000回のループを回して計
算するとしたとき、ループ回数が9000回をこえた時
点では、9000個の要素の部分和と次の9001個目
の要素の加算で考えた場合で、数値には、おそらく3桁
以上のオーダーの差が生じていると予想される。この時
点から考えたとしても、このような誤差の大きいことが
予想される計算を1000回も行った上で、結果が得ら
れることになり、累積される誤差は大きなものとなる可
能性がある。
一般的には、このような事態を避けるために計算するデ
ータの精度を大きくして、2倍精度、4倍精度のデータ
を使用したりする。さらには、プログラムをコーディン
グする時点で、このことを考慮して、ベクトルデータの
和を部分的に計算して、その求められた部分和の和を計
算することによって、部分和を求める段階でもベクトル
データの要素数が押さえられるので、各要素とその段階
での和のオーダーの差は押さえられ、その求められた部
分和の和をとる段階でもデータのオーダーが比較的揃っ
ている可能性が高く、桁落ちが少なくなり精度を維持で
きる。このような措置が計算機を使用する人間によって
行われる。ところが、一部の計Illに精通したユーザ
にとっては可能なこの対策も、その他のアプリケーショ
ンパッケージを使用するだけの一部ユーザには、困難な
作業である。
また、このようなユーザの手によるものではなく、計算
機のハードウェア側で上記措置が考慮されているものが
ある。計算機そのものが、最初からこのような大規模の
技術計算を行うことを想定している一部の高速計算機、
いわゆるスーパーコンピュータにおいては、標準的に精
度を高くするためにデータ長を長くして、精度を高くし
ていたり、より精度の高いデータ形式を使用する、特別
な乗算の方式を使用するなどして、精度を保とうとする
試みが行われている。この例としては、rcRAY R
ESEARCHINC,”FLOATING−POIN
T ARITH)IETIC” 、CRAY−I  S
  5ERIES  1−IAR開^RE  REFE
RENCE  MへNUAL、HR−0808Part
−2,4−20〜4−32(1980)Jに示される方
式がある。この例では、データの精度を標準で2倍精度
とし、その乗算方式では、有効桁以下の位置で、切り捨
てられる数を、考えられうる仝での数字の平均値から求
められる” TRUNCATION C0N5TANT
 ”を無条件に加算してやることによって、切り捨ての
累積による誤差の発生を食い止めるという手法がとられ
ている。
また、「R,W、HOckney、C,R,JeSSh
Ope、  ”PAR^[[[LCO)iPUTER3
” 、J W Arrowsmith Ltd、、Br
1sto11981 Jの第2章′′パイプライン計算
機”2.3′“CYBER205”に述べられた例では
、4倍精度分の128ビツトのデータ幅のパイプライン
演算器を用意し、高い精度の計算に対応できるように構
成している。
これらの従来例では、全ての計算に関して一律に計算の
精度を高めることを狙いとしているものである。
このようなアプローチの他に、特定の演算に的を絞った
専用のハードウェアという観点で検討がなされているも
のとして、「W、Buchholz、  ”TheIB
)I System/370 vector arch
itecture” 、 1B)i 5YSTE)l 
JOURNAL、VOL、25.NO,11986J 
ニ示されテいルベクトル演算装置がある。この例におい
ては、ベクトルの和、あるいはベクトルの内積を計算す
る場合に関して、特別の対策がとられている。このベク
トル演算装置では、ベクトル要素の総和を計算する^C
CU)IULATE ”命令あるいはベクトルの内積を
計算’?f”ル”)IULTIPLY ACCU)tU
LATE ”命令が実行されるときには、無条件に、ベ
クトルレジスタの要素数〈セクションサイズ〉毎に総和
、あるいは内積を計算し、部分和ベクトルを保持してお
き、最後にこの部分和ベクトルのベクトル和を“′S開
PARTIAL StJMS”命令によって求め、ベク
トルデータ仝体の和を計算するという方式をとっている
このようなベクトル演算の方式をとるための、” AC
CU)fULATE ”命令ト5tll(PARTIA
L 5OH3”命令の連絡といった操作は、全てベクト
ル化コンパイラによって自動的(こ行われるためユーザ
にとっては、何等意識することなくこの方式を使用でき
る。こうすることにより、前述のような大きな要素数の
ベクトルデータを積算していったときに発生すると思わ
れる誤差を低く押さえられるということを示している。
〔発明が解決しようとする課題〕
ところが、「W、Buchhols、  ”The I
B)l System/370 vector arc
hitecture” 、 IBM 5YSTEHJO
URNAL。
VOL、25.NO,11986,J ニ示されたベク
トル演算装置では、ベクトルレジスタのサイズに一意に
規定して部分和を計算しているため、ベクトルデータの
指数部の大きさにばらつきがあって、例えば、第5図に
示すようなベクトルデータの加算を行うときには、ベク
トルデータの加算を行って部分和を求めるときには、比
較的オーダーの差は小さく押さえられていても、最後の
部分和同士の加算をするときに、データのオーダーに大
きな差が出てしまうことが考えられる。第5図の例では
、ベクトルデータを128要素毎に部分和を計算する場
合の例で、部分和毎にオーダーが異なっている特に極端
な例を仮定している。部分和が計算される要素数が12
8個であるから部分和のオーダーは、配列要素のオーダ
ーよりおよそ1大きいと考えられる。この場合では、総
和のオーダーは、はとんど第8の部分和のオーダーによ
って決定され、総和の計算が行われるので、実質には第
1の部分和〜第7の部分和は、はとんど存在しなかった
かのような結果が得られることが考えられる。少なくと
も、第1の部分和〜第7の部分和の有効桁の最下位の方
の数字は存在しないに等しいものとなる。
この例では、説明の簡略化のためオーダーが10桁も異
なる極端なデータを仮定しているため、多少の誤差の発
生は、やむを得ない計算であるとの見方もできる。しか
し、オーダーの差が数桁程度の現実的な場合においても
、この問題は起こりうるものであり、むしろ、その有効
桁数の維持と誤差に関していうならば、オーダーの差が
小さい計算になればなるほど、より高い計算精度が要求
されるものとの考え方もできる。ざらに、そのような場
合には、計算の方法を変えて、人為的努力によってプロ
グラムを変更し、より正しい計算結果を得ることが可能
であるように、対策の余地を残していることも明かであ
る。
この発明は、上記のような問題点を解消するためになさ
れたもので、ベクトルデータのオーダーにばらつきがあ
り、通常の処理では、大きな丸め誤差を生じてしまうよ
うなベクトル和、内偵、累積演算をより高い精度で計算
できるようなベクトル演算方式を得ることを目的とする
〔課題を解決するための手段〕
この発明に係るベクトル演算方式は、演算手段(加算器
2)でベクトル演算を行なうベクトルデータの指数部の
大きさの基準値を保持する基準値保持手段(指数部ベー
スレジスタ6)と、上記ベクトルデータの指数部の大き
さを検査する指数部検査手段(指数部コンパレータ8)
と、ベクトル演算の中間結果を一時的に格納する中間結
果格納手段(中間結果ベクトルレジスタ9〉と、この中
間結果格納手段に格納された中間結果の要素数をカウン
トする中間結果要素数カウント手段(中間結果ベクトル
要素カウンタ10)とを備え、ベクトルデータの総和、
内偵、あるいは累積を計算する場合に、上記基準値保持
手段に格納された基準値と、上記演算手段の出力データ
との比較に従って、ベクトルデータを幾つかに分割し、
分割の決定時点まで−の部分和を上記中間結果格納手段
に格納し、最後に該中間結果同士による演算によって全
体のベクトル演算結果を得るものである。
〔作用〕
基準値保持手段(指数部ベースレジスタ6)は演算手段
(加算器2)でベクトル演算を行なうベクトルデータの
指数部の大きさの基準値を保持する。指数部検査手段(
指数部コンパレータ8)は上記ベクトルデータの指数部
の大きさを検査する。
中間結果格納手段(中間結果ベクトルレジスタ9)はベ
クトル演算の中間結果を一時的に格納する。
中間結果要素数カウント手段(中間結果ベクトル要素カ
ウンタ’10)は上記中間結果の要素数をカウントする
。ベクトルデータの総和、内積、あるいは累積を計算す
る場合に、基準値保持手段に格納された基準値と、演算
手段の出力データとが指数部検査手段で比較され、この
比較結果に従ってベクトルデータが幾つかに分割され、
分割の決定時点までの部分和が中間結果格納手段に格納
され、最後に該中間結果同士による演算によって全体の
ベクトル演算結果が得られる。
〔発明の実施例〕
第1図はこの発明の一実施例に係るベクトル演装置、3
はベクトル演算に関するデータを格納する主記憶装置で
ある。ベクトル演算装置1内において、2は演算手段と
しての加算器、6は加算器2でベクトル演算を行なうベ
クトルデータの指数部の大きさの基準値を保持する基準
値保持手段としての指数部ベースレジスタ、8は上記指
数部の大ぎさを検査する指数部検査手段としての指数部
コンパレータ、9はベクトル演算の中間結果を一時的に
格納する中間結果格納手段としての中間語する中間結果
要素数カウント手段としての中間結果ベクトル要素カウ
ンタ、13は加算器2と指数部ベースレジスタ6と中間
結果ベクトル要素カウンタ10等を制御するベクトル演
算制御部である。
4a、4bはベクトルデータ入力パス、5はベクトルデ
ータ出力パス、7は指数部ベースレジスタ書き込みパス
、11は中間結果ベクトルレジスタ出力パス、12a、
12bはベクトル演算器入力セレクタである。
なお、本実施例では、簡単のため、ベクトル演算が行わ
れるベクトルデータに関する、データの流れに関する部
分だけを示してあり、そのデータのアドレス、あるいは
ベクトル命令の命令コード、コマンドといったものの受
は渡しを行う部分は省略している。
次に動作について説明する。第1図において、ベクトル
データの総和をベクトル演算によって計算するときを考
える。ベクトル総和演算が実行されるときには、オペラ
ンドである入力ベクトルは1つでここでは、主記憶装置
3上のあるロケーションに存在しているものとする。
ベクトル総和の命令が遂行されたときには、まず、ベク
トル演算制御部13は、ベクトル演算実行に先だって、
指数部ベースレジスタ6内に、指数部の基準となる値を
指数部ベースレジスタ書き込みパス7から書き込む。こ
のとき書き込まれる値は、プログラムがコンパイルされ
る時点で、例えば、第3図に示すようにユーザによって
、コンパイラに対してオプション指定によって与えられ
た値を使用する。この例では、“’FORTRAN ”
のコンパイラを仮定し、”VECTOR”で示されるオ
プションがベクトル化の指示を示し、“’BASEEX
P ”で示されるオプションが、この基準値を指定する
ことを表し、その“=E12 ”のパラメータが、この
指数部の基準値に当たり、10の12乗を基準のオーダ
ーとすることを表す。“’TESTPRO,F ”は、
コンパイルされるソースプログラムを表す。
ユーザの指定ではなく自動的に設定するとすれば、実行
時に実際に使用されるデータのオーダーをテストして使
用することが可能である。例えば、ベクトル演算器(加
算器2〉に最初に送られて来るベクトルデータの第1番
目の要素のオーダーから計算される値を使用することが
できる。そのままの値を書き込むことも可能であるし、
ベクトル加算によって計算結果が累積されオーダーが大
きくなることを見込んで、例えば3桁分大きく取るもの
と仮定すると、第1番目の要素のオーダーに3だけ加算
した値を使用するといったことも可能である。勿論、こ
の計算式は、どのように変更しても構わず、ベクトル演
算器のパラメータとして、可変のものとすることもでき
る。
以上のようにして、指数部ベースレジスタ6内に、指数
部の一基準となる値を設定したら、つぎに中間結果ベク
トル要素カウンタ10を41011に″リセットしてお
く。この中間結果ベクトル要素カウンタ10の値は、中
間結果ベクトルレジスタ9への書き込みアドレスとして
も使用され、この時点では、中間結果ベクトルレジスタ
9のアドレスOへの書き込みが可能な状態となっている
ベクトルデータは、順次ベクトルデータ入カパス4aか
らベクトル加算器2へ送られる。このとき、ベクトル演
算器入力セレクタ12aは、ベクトルデータ入力パス4
aを選択している。また、ベクトル演算器入力セレクタ
12bは、“Oat入力を選択している。ここで、ベク
トル加算器2は、加算を実行し、結果を出力する。この
結果は、次の加算のときのベクトル加算器2への入力と
なるため、ベクトル演算器入力セレクタ12bをベクト
ル加算器2の出力を入力として選択するように切り換え
る。以後その状態で、ベクトルデータ入力パス4aから
、順次ベクトルデータが読み込まれ、ベクトル総和演算
が遂行される。この間、ベクトル加算器2の出力は、常
に指数部コンパレータ8によって、指数部ベースレジス
タ6の値と比較されている。
総和演算が進行して行き、ある時点において、ベクトル
データー2の出力が、指数部ベースレジスタ6の値より
、大きくなったことが指数部コンパレータ8によって検
出されたときには、このときのベクトル加算器2の出力
を第1の部分和として、中間結果ベクトルレジスタ9の
アドレスOに書き込む。このとき、中間結果ベクトル要
素カウンタ10を1インクリメントして、次の部分和の
ためのアドレス1を示すようにする。さらに、ベタ1〜
ル演算器入力セレクタ12bを次の部分和の最初の要素
に対する加算のためにit O11人力を選択するよう
に切り換える。
以下同様に、第2の部分和に対しても、ベクトル加算器
2の出力が、指数部ベースレジスタ6の値より、大きく
なったことが指数部コンパレータ8によって検出された
ときにベクトル加算器2の出力を第2の部分和として、
中間結果ベクトルレジスタ9のアドレス1に書き込み、
中間結果ベクトル要素カウンタ10をさらに1インクリ
メントして、次の部分和のためのアドレス2を示すよう
に更新、さらにベクトル演算器入力セレクタ]2bを“
Opp入力を選択するように切り換える。
この操作を、第3部分和の計算以降、ベクトルデータの
要素が全て加算されるまで繰り返す。最終的にベクトル
データの要素が全て加算された時点で、N個の部分和が
計算されていたとすると、中間結果ベクトルレジスタ9
には、N個の部分和が格納されており、中間結果ベクト
ル要素カウンタ10は、Nを差している。ここで、ベク
トル演算制御部13は、中間結果ベクトル要素カウンタ
10を1度リセットして先頭要素をアドレスさせ、ベク
トル演算器入力セレクタ12aを中間結果ベクトルレジ
スタ出力パス11を選択するように切り換え、ざらに、
ベクトル演算器入力セレクタ12bを中間結果ベクトル
レジスタ9内の最初の部分和の要素の加算の間“099
人力を選択し、中間結果ベクトル要素カウンタ10に保
持されていた値すなわちN個の要素のベクトル加算を実
行する。この中間結果ベクトルレジスタ9内の部分和の
総和を計算するときには、最早、指数部コンパレータ8
による指数部の検査は不要である。
そのまま、N個の要素の総和演算を実行して、最終的な
総和の演算結果をベクトルデータ出力パス5から、主記
憶装置3へ格納する。
なお、上記の実施例においては、加算器のみを使用して
、2つのベクトルオペランド入力パスの中の一つを使用
して、総和演算を行う場合について述べているが、他の
実施例としてl’−1?、 W、 HOCkney、C
,R,Jesshope、  ”PARALLEL C
0HPUTER3” J W^rrowsmith L
td、、Br1stol 1981Jの第2章“パイプ
ライン計算機” 2. 2 ”CRAY−1”に述べら
れるチエイニングの手法を使用し、第2図に示すように
、2つのベクトルオペランド入力パス16a。
16bとも使用してこれを乗算器14に入力し、この乗
算器14の出力を加算器2の一つの入力として使用する
ことによって、内積演算を行う場合についても、第2図
の加算器2の部分について、上記の構成とすることによ
って、同様の効果が得られることは明かである。
また、上記の実施例においては、ベクトル演算が行われ
るベクトルデーターを主記憶上のベクトルオペランドと
して説明しているが、このデータがベクトルレジスタの
オペランドである場合においても、最後の中間結果の部
分和を加算する処理を後続させるだけで、同様の効果が
得られる。
〔発明の効果〕
以上のように本発明によれば、ベクトルデータに対する
総和、内偵あるいは累積を実行する場合に、ベクトル演
算の途中結果から、演算するデータに依存してベクトル
データを分割して部分和を計算して中間結果として格納
し、最後に該中間結果同士による演算によって全体のベ
クトル演算結果を得るようにしたので、演算手段への入
力オペランドのデータのオーダーに大きな差を生じるこ
とが防止され、これによりベクトル演算の演算結果の丸
め誤差を小さく抑えることができ、したがってベクトル
和、内積、累積演算をより高い精度で実行できるという
効果が得られる。
【図面の簡単な説明】
第1図はこの発明の一実施例に係るベクトル演算方式を
採用したベクトル演算装置の構成を示すブロック図、第
2図は他の実施例を説明するための乗算器及び加算器の
接続ブロック図、第3図はこの実施例におけるベクトル
コンパイラのオプション指定方式を説明するための図、
第4図は従来のベクトル演算装置におけるベクトルレジ
スタとベクトル演算方式を示す図、第5図は従来例にお
いてベクトル総和演算における誤差の発生に関する課題
を説明するための図である。 2・・・・・・加算器(演算手段〉、6・・・・・・指
数部ベースレジスタ(基準値保持手段〉、8・・・・・
・指数部コンパレータ(指数部検査手段〉、9・・・・
・・中間結果ベクトルレジスタ(中間結果格納手段)、
10・・・・・・中間結果ベクトル要素カウンタ(中間
結果要素数カウント手段)。

Claims (1)

    【特許請求の範囲】
  1. 演算手段でベクトル演算を行なうベクトルデータの指数
    部の大きさの基準値を保持する基準値保持手段と、上記
    ベクトルデータの指数部の大きさを検査する指数部検査
    手段と、ベクトル演算の中間結果を一時的に格納する中
    間結果格納手段と、この中間結果格納手段に格納された
    中間結果の要素数をカウントする中間結果要素数カウン
    ト手段とを備え、ベクトルデータの総和、内積、あるい
    は累積を計算する場合に、上記基準値保持手段に格納さ
    れた基準値と、上記演算手段の出力データとの比較に従
    って、ベクトルデータを幾つかに分割し、分割の決定時
    点までの部分和を上記中間結果格納手段に格納し、最後
    に該中間結果同士による演算によって全体のベクトル演
    算結果を得ることを特徴とするベクトル演算方式。
JP18129789A 1989-07-13 1989-07-13 ベクトル演算方式 Pending JPH0346069A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP18129789A JPH0346069A (ja) 1989-07-13 1989-07-13 ベクトル演算方式

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP18129789A JPH0346069A (ja) 1989-07-13 1989-07-13 ベクトル演算方式

Publications (1)

Publication Number Publication Date
JPH0346069A true JPH0346069A (ja) 1991-02-27

Family

ID=16098219

Family Applications (1)

Application Number Title Priority Date Filing Date
JP18129789A Pending JPH0346069A (ja) 1989-07-13 1989-07-13 ベクトル演算方式

Country Status (1)

Country Link
JP (1) JPH0346069A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008151269A (ja) * 2006-12-18 2008-07-03 Ebara Corp 圧力容器の安全装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008151269A (ja) * 2006-12-18 2008-07-03 Ebara Corp 圧力容器の安全装置

Similar Documents

Publication Publication Date Title
KR101731238B1 (ko) 조건부 비교 명령
KR102413832B1 (ko) 벡터 곱셈 덧셈 명령
US7127593B2 (en) Conditional execution with multiple destination stores
KR100681199B1 (ko) 코어스 그레인 어레이에서의 인터럽트 처리 방법 및 장치
TWI728068B (zh) 複數乘法指令
JP2011096254A (ja) 乗累算演算を実行するための装置および方法
TWI733798B (zh) 在執行向量操作時管理位址衝突的設備及方法
TWI740851B (zh) 用於向量負載指示之資料處理設備、方法及電腦程式
KR20130062352A (ko) 벡터 리딩 0, 벡터 트레일링 0, 벡터 오퍼랜드 1 카운트 및 벡터 패리티 계산을 위한 기능 유닛
JP2011501310A (ja) 算術演算のためにマグニチュード検出を実行するための装置および方法
TW201737067A (zh) 向量預測指令
US9817662B2 (en) Apparatus for calculating and retaining a bound on error during floating point operations and methods thereof
RU2193228C2 (ru) Адресация регистров в устройстве обработки данных
JP4476210B2 (ja) 逆数演算の結果値の初期推定値を求めるデータ処理装置および方法
US11481223B2 (en) Reducing operations of sum-of-multiply-accumulate (SOMAC) instructions
JP2022519258A (ja) アンカーデータ要素における特殊値の符号化
JPH0346069A (ja) ベクトル演算方式
US20070011440A1 (en) Processor and processing method
US10963245B2 (en) Anchored data element conversion
JP7006097B2 (ja) コード生成装置、コード生成方法及びコード生成プログラム
JP2022519848A (ja) アンカーデータ値のオーバーフロー又はアンダーフロー処理
US20230273791A1 (en) Floating Point Norm Instruction
US11797300B1 (en) Apparatus for calculating and retaining a bound on error during floating-point operations and methods thereof
JP2004334297A (ja) 並列演算処理装置及び並列演算処理方法
US20010049781A1 (en) Computer with high-speed context switching