JP2009258980A - Simd演算器、simd演算器の演算方法、演算処理装置及びコンパイラ - Google Patents
Simd演算器、simd演算器の演算方法、演算処理装置及びコンパイラ Download PDFInfo
- Publication number
- JP2009258980A JP2009258980A JP2008107061A JP2008107061A JP2009258980A JP 2009258980 A JP2009258980 A JP 2009258980A JP 2008107061 A JP2008107061 A JP 2008107061A JP 2008107061 A JP2008107061 A JP 2008107061A JP 2009258980 A JP2009258980 A JP 2009258980A
- Authority
- JP
- Japan
- Prior art keywords
- value
- register
- unit
- simd
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic instructions
- G06F9/30014—Arithmetic instructions with variable precision
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
【解決手段】演算処理装置10は、加算誤差を使用するプログラム1をコンパイルするコンパイラ2と、コンパイラ2からの複数の命令を格納する主記憶部4と、主記憶部4から読み出した命令に基づき、複数の演算を一の命令で実行するシングル命令マルチデータ(SIMD)方法の演算で計算誤差を求めるSIMD命令実行部6を有する。SIMD命令実行部6は、複数のレジスタからなる第1のレジスタ群171及び第2のレジスタ群172を有するSIMD用レジスタ177と、第1のレジスタ群171及び第2のレジスタ群172から入力される2つの入力の絶対値を比較する処理をSIMD方式で実行し、絶対値の大きい方を第1の値、小さい方を第2の値とする演算部18とを有し、演算部18は、第1の値及び第2の値を使用した加減算をSIMD方式で実行する。
【選択図】図1
Description
Double-double形式の加算:(c.hi,c.lo)=(a.hi,a.lo)+(b.hi,b.lo)
ここで、下記のようにおく。fl(op(A))は、op(A)を正規化した結果、err(op(A))は、op(A)の演算誤差を示す。
a.hi+b.hi=fl(a.hi+b.hi)+err(a.hi+b.hi)=fl.hi+err.hi
a.lo+b.lo=fl(a.lo+b.lo)+err(a.lo+b.lo)=fl.lo+err.lo
この形式で加算をするためには、倍精度加算結果の計算誤差を算出する必要がある。この方法として、Dekkerの方法と、Knuthの方法が知られている。
x←a+b
bvirtual←x−a
avirtual←x−bvirtual
broundoff←b−bvirtual
aroundoff←a−avirtual
y←aroundoff+broundoff
しかしながら、Knuthの方法では計算誤差算出に必要な演算数が多いという問題点がある。
x←a+b
bvirtual←x−a
y←b−bvirtual
ここで、Knuthの方法では、|a|>|b|が前提となっている。
Jonathan Richard Shewchuk, "Adaptive Precision Floating-Point Arithmetic and Fast Robust Geometric Predicates", School of Computer Science Carnegie Mellon University Pittsburgh, PA 15213
図1は、本発明の実施の形態にかかる演算処理装置100を示す図である。図1に示すように、加算誤差を使用するプログラム1をコンパイルするコンパイラ(翻訳装置)2と、コンパイラ2からの複数の命令を格納する主記憶部4と、主記憶部4から読み出した命令に基づき、複数の演算を一の命令で実行するシングル命令マルチデータ(SIMD)方法の演算で計算誤差を求めるSIMD演算手段としてのSIMD命令実行部6とを有する。
次に、本発明の第2の実施の形態について説明する。図2は、本発明の実施の形態にかかる演算処理装置10を示す図である。図2に示すように、演算処理装置10は、プログラム1が入力される翻訳装置(コンパイラ)2と、演算装置3と、主記憶部4とを有する。演算装置3は、命令判定部5と、複数の演算を一の命令で実行するシングル命令マルチデータ(SIMD)方法の演算で計算誤差を求めるSIMD演算器として機能するSIMD命令実行部6とを有する。
VFCR V0,V1 :(V0(i),V1(i))←(V0(i),V1(i))
VFAD V2,V0,V1 :V2(i)←V0(i)+V1(i)
VFSB V2,V2,V0 :V2(i)←V2(i)−V0(i)
VFSB V2,V1,V2 :V2(i)←V1(i)−V2(i)
3 演算装置
4 主記憶部
5 命令判定部
6 SIMD命令実行部
10、100 演算処理装置
11 レジスタ出力部クロスバ
12 VFCR演算実行部
13 浮動小数点加算器
14 書き戻し制御部
16 レジスタ入力部クロスバ
17 SIMD用レジスタ
18 演算部
30 命令制御部
41、42 バッファ
43 インバータ
44 加算器
45 セレクタ
112 比較演算部
113 加算部
117 SIMD用レジスタ
171−173 レジスタ群
Claims (17)
- 複数の演算を単一の命令(SIMD)で実行する演算器であって、
複数のレジスタからなる第1のレジスタ群及び第2のレジスタ群を有するSIMD用レジスタと、
前記第1のレジスタ群及び第2のレジスタ群から入力される2つの入力の絶対値を比較する処理をSIMD方式で実行し、絶対値の大きい方を第1の値、小さい方を第2の値とする演算手段とを有し、
前記演算手段は、前記第1の値及び前記第2の値を使用した加減算をSIMD方式で実行する、演算器。 - 前記演算手段による演算結果を前記SIMD用レジスタに入力するレジスタ用入力手段と、
前記レジスタ用入力手段を制御する命令制御手段とを有し、
前記命令制御手段は、前記第1の値を前記第1のレジスタ群に入力し、前記第2の値を前記第2のレジスタ群に入力するよう前記レジスタ用入力手段を制御する
ことを特徴とする請求項1記載の演算器。 - 前記演算手段は、前記第1のレジスタ群及び第2のレジスタ群から入力される2つの入力の絶対値を比較する処理をSIMD方式で実行し、絶対値の大きい方を第1の値、小さい方を第2の値とする比較演算手段と、前記第1の値及び前記第2の値を使用した加減算をSIMD方式で実行する加算手段とを有する
ことを特徴とする請求項2記載の演算器。 - 前記SIMD用レジスタからのデータを前記演算手段に出力するレジスタ用出力手段を有し、
前記SIMD用レジスタは、前記第1及び第2のレジスタ群と、前記加算手段の演算結果を格納する第3のレジスタ群を有し、
前記命令制御手段は、前記比較演算手段の比較演算結果を前記第1及び第2のレジスタ群に入力し前記加算手段の加減算結果を前記第3のレジスタ群に入力するよう前記レジスタ用入力手段を制御し、前記第1乃至第3のレジスタ群からの出力を前記比較演算手段又は前記加算手段のいずれに入力するよう前記レジスタ用出力手段を制御する
ことを特徴とする請求項3記載の演算器。 - IEEE754規格で定義される浮動小数点演算を行うものであって、前記第1及び第2のレジスタ群に格納される値は、符号ビット、指数部及び仮数部からなり、
前記第1及び第2のレジスタ群から入力される2つの入力の符号ビットを除き指数部及び仮数部を比較する比較手段と、
前記比較手段の比較結果に基づき絶対値が大きい方を前記第1の値として出力し、絶対値が小さい方を前記第2の値として出力する選択手段と
を有することを特徴とする請求項1乃至4のいずれか1項記載の演算器。 - 前記加算手段は、前記第1の値と前記第2の値を加算し、当該加算結果から前記第1の値を減算し、前記第2の値から当該減算結果を減算する
ことを特徴とする請求項1乃至5のいずれか1項記載の演算器。 - 倍精度加算結果の計算誤差を算出するものである
ことを特徴とする請求項1乃至6のいずれか1項記載の演算器。 - 加算誤差を使用するプログラムをコンパイルするコンパイラと、
前記コンパイラからの複数の命令を格納する記憶手段と、
前記記憶手段から読み出した命令に基づき、複数の演算を単一の命令(SIMD)で実行する演算器とを有し、
前記演算器は、
複数のレジスタからなる第1のレジスタ群及び第2のレジスタ群を有するSIMD用レジスタと、
前記第1のレジスタ群及び第2のレジスタ群から入力される2つの入力の絶対値を比較する処理をSIMD方式で実行し、絶対値の大きい方を第1の値、小さい方を第2の値とする演算手段とを有し、
前記演算手段は、前記第1の値及び前記第2の値を使用した加減算をSIMD方式で実行する、演算処理装置。 - 前記演算手段による演算結果を前記SIMD用レジスタに入力するレジスタ用入力手段と、
前記レジスタ用入力手段を制御する命令制御手段とを有し、
前記命令制御手段は、前記第1の値を前記第1のレジスタ群に入力し、前記第2の値を前記第2のレジスタ群に入力するよう前記レジスタ用入力手段を制御する
ことを特徴とする請求項7記載の演算処理装置。 - 前記演算器は、命令判定手段を有し、前記記憶手段から読み出した命令に基づき、2つの入力の絶対値を比較し絶対値が大きい前記第1の値を前記第1のレジスタ群に、絶対値が小さい前記第2の値を前記第2のレジスタ群に格納する第1の命令と、前記第1の値と前記第2の値を加算する第2の命令と、当該加算結果から前記第1の値を減算する第3の命令と、前記第2の値から当該減算結果を減算する第4の命令を生成し、前記命令制御手段に入力する
ことを特徴とする請求項7記載の演算処理装置。 - 前記演算手段は、前記第1のレジスタ群及び第2のレジスタ群から入力される2つの入力の絶対値を比較する処理をSIMD方式で実行し、絶対値の大きい方を第1の値、小さい方を第2の値とする比較演算手段と、前記第1の値及び前記第2の値を使用した加減算をSIMD方式で実行する加算手段とを有する
ことを特徴とする請求項9記載の演算処理装置。 - 前記SIMD用レジスタからのデータを前記演算手段に出力するレジスタ用出力手段を有し、
前記SIMD用レジスタは、前記第1及び第2のレジスタ群と、前記加算手段の演算結果を格納する第3のレジスタ群を有し、
前記命令制御手段は、前記比較演算手段の比較演算結果を前記第1及び第2のレジスタ群に入力し前記加算手段の加減算結果を前記第3のレジスタ群に入力するよう前記レジスタ用入力手段を制御し、前記第1乃至第3のレジスタ群からの出力を前記比較演算手段又は前記加算手段のいずれに入力するよう前記レジスタ用出力手段を制御する
ことを特徴とする請求項11記載の演算処理装置。 - IEEE754規格で定義される浮動小数点演算を行うものであって、前記第1及び第2のレジスタ群に格納される値は、符号ビット、指数部及び仮数部からなり、
前記第1及び第2のレジスタ群から入力される2つの入力の符号ビットを除き指数部及び仮数部を比較する比較手段と、
前記比較手段の比較結果に応じて絶対値が大きい方を前記第1の値として出力し、絶対値が小さい方を前記第2の値として出力する選択手段と
を有することを特徴とする請求項8乃至12記載の演算処理装置。 - 倍精度加算結果の計算誤差を算出するものである
ことを特徴とする請求項8乃至13のいずれか1項記載の演算処理装置器。 - 複数の演算を単一の命令(SIMD)で実行する演算器の演算方法であって、
複数のレジスタからなる第1のレジスタ群及び第2のレジスタ群からの2つの入力の絶対値を比較し、絶対値が大きい方を第1の値とし、絶対値が小さい方を第2の値とし、
前記第1の値が前記第1のレジスタ群、前記第2の値が前記第2のレジスタ群に格納されるようレジスタの値を入れ替え、
前記第1及び第2のレジスタ群に格納されたそれぞれ前記第1の値及び第2の値を使用して演算を実行する演算方法。 - 複数の演算を単一の命令(SIMD)で実行する演算器の命令列を生成するコンパイラであって、
複数のレジスタからなる第1のレジスタ群及び第2のレジスタ群を有するSIMD用レジスタの前記第1のレジスタ群及び第2のレジスタ群から出力される2つのデータを演算手段に入力し、絶対値を比較させ、絶対値が大きい第1の値を前記第1のレジスタ群に、絶対値が小さい第2の値を前記第2のレジスタ群に格納させる第1の命令と、
前記第1の値及び第2の値を使用して前記演算手段により演算を実行させる第2の命令とを生成するコンパイラ。 - 前記第1のレジスタ群からの前記第1の値と前記第2のレジスタ群からの前記第2の値を前記演算手段に入力し、加算させ、当該加算結果を複数のレジスタからなる第3のレジスタ群に入力する前記第2の命令と、
前記第3のレジスタ群からの当該加算結果から前記第1のレジスタ群からの前記第1の値を減算させ、当該減算結果を前記第3のレジスタ群に入力する第3の命令と、
前記第2のレジスタ群からの前記第2の値から前記第3のレジスタ群からの当該減算結果を減算させる第4の命令とを更に生成する
ことを特徴とする請求項14記載のコンパイラ。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008107061A JP4502040B2 (ja) | 2008-04-16 | 2008-04-16 | Simd演算器、simd演算器の演算方法、演算処理装置及びコンパイラ |
US12/385,406 US8041927B2 (en) | 2008-04-16 | 2009-04-07 | Processor apparatus and method of processing multiple data by single instructions |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008107061A JP4502040B2 (ja) | 2008-04-16 | 2008-04-16 | Simd演算器、simd演算器の演算方法、演算処理装置及びコンパイラ |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2009258980A true JP2009258980A (ja) | 2009-11-05 |
JP4502040B2 JP4502040B2 (ja) | 2010-07-14 |
Family
ID=41386321
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2008107061A Expired - Fee Related JP4502040B2 (ja) | 2008-04-16 | 2008-04-16 | Simd演算器、simd演算器の演算方法、演算処理装置及びコンパイラ |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4502040B2 (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010049611A (ja) * | 2008-08-25 | 2010-03-04 | Nec Corp | Simd演算器、simd演算器の演算方法、演算処理装置及びコンパイラ |
US8041927B2 (en) | 2008-04-16 | 2011-10-18 | Nec Corporation | Processor apparatus and method of processing multiple data by single instructions |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0612226A (ja) * | 1992-06-25 | 1994-01-21 | Mitsubishi Electric Corp | 絶対値比較装置 |
US20030221089A1 (en) * | 2002-05-23 | 2003-11-27 | Sun Microsystems, Inc. | Microprocessor data manipulation matrix module |
-
2008
- 2008-04-16 JP JP2008107061A patent/JP4502040B2/ja not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0612226A (ja) * | 1992-06-25 | 1994-01-21 | Mitsubishi Electric Corp | 絶対値比較装置 |
US20030221089A1 (en) * | 2002-05-23 | 2003-11-27 | Sun Microsystems, Inc. | Microprocessor data manipulation matrix module |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8041927B2 (en) | 2008-04-16 | 2011-10-18 | Nec Corporation | Processor apparatus and method of processing multiple data by single instructions |
JP2010049611A (ja) * | 2008-08-25 | 2010-03-04 | Nec Corp | Simd演算器、simd演算器の演算方法、演算処理装置及びコンパイラ |
JP4613992B2 (ja) * | 2008-08-25 | 2011-01-19 | 日本電気株式会社 | Simd演算器、simd演算器の演算方法、演算処理装置及びコンパイラ |
Also Published As
Publication number | Publication date |
---|---|
JP4502040B2 (ja) | 2010-07-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6694880B2 (ja) | 有効度整合 | |
KR102447636B1 (ko) | 부동 소수점 수를 누산하기 위한 산술 연산을 수행하는 장치 및 방법 | |
JP6684713B2 (ja) | 融合積和演算を実行するための方法及びマイクロプロセッサ | |
US7720900B2 (en) | Fused multiply add split for multiple precision arithmetic | |
JP7115211B2 (ja) | 演算処理装置および演算処理装置の制御方法 | |
US20130246496A1 (en) | Floating-point vector normalisation | |
JP4388980B2 (ja) | 浮動小数点数の除算または平方根演算を行う演算装置及び演算方法 | |
JP2006107463A (ja) | パック・データの乗加算演算を実行する装置 | |
JP2006154979A (ja) | 浮動小数点数演算回路 | |
JP4482052B2 (ja) | 演算装置および演算方法 | |
JP2020507844A (ja) | 入力オペランド値を処理するための装置及び方法 | |
JP4476210B2 (ja) | 逆数演算の結果値の初期推定値を求めるデータ処理装置および方法 | |
JP4601544B2 (ja) | 入力値に逆数演算を実施して結果値を作り出すデータ処理装置および方法 | |
JP4502040B2 (ja) | Simd演算器、simd演算器の演算方法、演算処理装置及びコンパイラ | |
JP4613992B2 (ja) | Simd演算器、simd演算器の演算方法、演算処理装置及びコンパイラ | |
US8041927B2 (en) | Processor apparatus and method of processing multiple data by single instructions | |
KR20210122828A (ko) | 앵커 데이터 요소에서의 특수 값 인코딩 | |
US10963245B2 (en) | Anchored data element conversion | |
JP7087918B2 (ja) | 演算処理装置及びその制御方法 | |
KR20240102915A (ko) | 부동소수점 연산 방법 및 연산 장치 | |
JPWO2002029546A1 (ja) | 演算器及びそれを用いた電子回路装置 | |
JP3522167B2 (ja) | 演算処理回路及び演算処理方法 | |
JP5010648B2 (ja) | 演算装置及び演算方法 | |
JP2013210837A (ja) | 演算回路及び演算方法 | |
JP2002304288A (ja) | データ演算処理装置及びデータ演算処理プログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
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: 20100330 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20100412 |
|
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: 20130430 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130430 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140430 Year of fee payment: 4 |
|
LAPS | Cancellation because of no payment of annual fees |