JP4613992B2 - Simd演算器、simd演算器の演算方法、演算処理装置及びコンパイラ - Google Patents
Simd演算器、simd演算器の演算方法、演算処理装置及びコンパイラ Download PDFInfo
- Publication number
- JP4613992B2 JP4613992B2 JP2008215137A JP2008215137A JP4613992B2 JP 4613992 B2 JP4613992 B2 JP 4613992B2 JP 2008215137 A JP2008215137 A JP 2008215137A JP 2008215137 A JP2008215137 A JP 2008215137A JP 4613992 B2 JP4613992 B2 JP 4613992B2
- Authority
- JP
- Japan
- Prior art keywords
- value
- register
- register group
- input
- unit
- 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 - Fee Related
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)
- Advance Control (AREA)
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の方法が知られている(非特許文献1)。
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
ここで、Dekkerの方法では、|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は、本発明の実施の形態にかかる演算処理装置を示す図である。図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とを有する。
VFCRG V2,V0,V1 :V2(i)←{V0(i),V1(i)}
VFCRL V0,V0,V1 :V0(i)←{V0(i),V1(i)}
VFAD V1,V0,V2 :V1(i)←V0(i)+V2(i)
VFSB V2,V1,V2 :V2(i)←V1(i)−V2(i)
VFSB V2,V0,V2 :V2(i)←V0(i)−V2(i)
尚、上述した本発明の実施の形態1及び2では、IEEE754浮動小数点データ形式の倍精度形式(バイナリ64)を前提として記述しているので、扱うデータ幅を64ビットとしているが、このデータ幅に依存するものではない。単精度形式(バイナリ32)等々、他の形式でも実現できることは勿論である。
2 コンパイラ
3 演算装置
4 主記憶部
5 命令判定部
6 SIMD命令実行部
10 演算処理装置
11 レジスタ出力部クロスバ
12 VFCRG演算実行部
13 VFCRL演算実行部
14 浮動小数点加算器
15 VFCR演算実行部
16 レジスタ入力部クロスバ
17 SIMD用レジスタ
18 演算部
30 命令制御部
41 バッファ
42 バッファ
43 インバータ
44 加算器
45 セレクタ
46 インバータ
47 排他的論理和
170 SIMD用レジスタ
171 第1のレジスタ群
172 第2のレジスタ群
173 第3のレジスタ群
174 第4のレジスタ群
180 演算部
181 第1の演算部
182 第2の演算部
183 第3の演算部
S1 命令の格納
S2 命令の入力
S3 命令実行制御
S4 演算データ入力
S5 演算結果出力
S6 VFCR入力
S7 VFCR入力
S6a VFCRG入力
S7a VFCRG入力
S6b VFCRL入力
S7b VFCRL入力
S8 加算器入力
S9 加算器入力
S10 VFCRG出力
S11 VFCRL出力
S12 加算器出力
S13 V0出力
S14 V1出力
S15 V2出力
S16 演算部制御
S17 レジスタ制御
S18 出力部クロスバ制御
S19 入力部クロスバ制御
S21 V0入力
S22 V1入力
S23 V2入力
S31 64ビットデータ
S32 63ビットデータ
S33 64ビットデータ
S34 63ビットデータ
S35 反転63ビットデータ
S36 桁上がり信号
S37 変換後桁上がり信号
S38 変換後桁上がり信号
S39 VFCR制御
Claims (18)
- 複数の演算を単一の命令(SIMD)で実行する演算器であって、
複数のレジスタからなる第1のレジスタ群及び第2のレジスタ群を有するSIMD用レジスタと、
前記第1のレジスタ群及び前記第2のレジスタ群から入力される2つの入力値をSIMD方式に基づいて演算する演算手段とを有し、
前記演算手段は、
前記2つの入力値の絶対値を比較し、絶対値の大きい値又は等しい値を第1の値として出力する第1の演算手段と、
前記2つの入力値の絶対値を比較し、絶対値の小さい値又は等しい値を第2の値として出力する第2の演算手段と、
前記第1の値及び前記第2の値を使用した加減算を実行する第3の演算手段と、を有する演算器。 - 前記第1及び第2の演算手段による演算結果を前記SIMD用レジスタに入力するレジスタ用入力手段と、
前記レジスタ用入力手段を制御する命令制御手段とを有し、
前記SIMD用レジスタは、複数のレジスタからなる第3のレジスタ群をさらに有し、
前記命令制御手段は、前記第1の値を前記第3のレジスタ群に入力し、前記第2の値を前記第1のレジスタ群に入力するよう前記レジスタ用入力手段を制御する
ことを特徴とする請求項1記載の演算器。 - 前記SIMD用レジスタからのデータを前記第1乃至第3の演算手段に出力するレジスタ用出力手段を有し、
前記命令制御手段は、前記第3の演算手段の加減算結果を前記第3のレジスタ群に入力するよう前記レジスタ用入力手段を制御し、前記第1乃至第3のレジスタ群からの出力を前記第1乃至第3の演算手段のいずれかに入力するよう前記レジスタ用出力手段を制御する
ことを特徴とする請求項2記載の演算器。 - IEEE754規格で定義される浮動小数点演算を行うものであって、前記第1及び第2のレジスタ群に格納される値は、符号ビット、指数部及び仮数部からなり、
前記第1及び第2のレジスタ群から入力される2つの入力の符号ビットを除き指数部及び仮数部を比較する比較手段と、
前記比較手段の比較結果に基づき、前記2つの入力値のいずれかを前記第1の値又は前記第2の値として出力する選択手段と
を有することを特徴とする請求項1乃至3のいずれか1項記載の演算器。 - 前記命令制御手段からの指示に応じて、前記比較手段の比較結果を変換せずに出力するか若しくは反対の値に変換して出力する処理手段をさらに有し、
前記選択手段は、前記処理手段により出力された前記比較結果に基づき、前記2つの入力値のいずれかを前記第1の値又は前記第2の値として出力する
ことを特徴とする請求項2又は3に従属する請求項4記載の演算器。 - 前記第3の演算手段は、前記第1の値と前記第2の値を加算し、当該加算結果から前記第1の値を減算し、前記第2の値から当該減算結果を減算する
ことを特徴とする請求項1乃至5のいずれか1項記載の演算器。 - 倍精度加算結果の計算誤差を算出するものである
ことを特徴とする請求項1乃至6のいずれか1項記載の演算器。 - 加算誤差を使用するプログラムをコンパイルするコンパイラと、
前記コンパイラからの複数の命令を格納する記憶手段と、
前記記憶手段から読み出した命令に基づき、複数の演算を単一の命令(SIMD)で実行する演算器とを有し、
前記演算器は、
複数のレジスタからなる第1のレジスタ群及び第2のレジスタ群を有するSIMD用レジスタと、
前記第1のレジスタ群及び前記第2のレジスタ群から入力される2つの入力値をSIMD方式に基づいて演算する演算手段とを有し、
前記演算手段は、
前記2つの入力値の絶対値を比較し、絶対値の大きい値又は等しい値を第1の値として出力する第1の演算手段と、
前記2つの入力値の絶対値を比較し、絶対値の小さい値又は等しい値を第2の値として出力する第2の演算手段と、
前記第1の値及び前記第2の値を使用した加減算を実行する第3の演算手段と、を有する演算処理装置。 - 前記演算器は、
前記第1及び第2の演算手段による演算結果を前記SIMD用レジスタに入力するレジスタ用入力手段と、
前記レジスタ用入力手段を制御する命令制御手段とを有し、
前記SIMD用レジスタは、複数のレジスタからなる第3のレジスタ群をさらに有し、
前記命令制御手段は、前記第1の値を前記第3のレジスタ群に入力し、前記第2の値を前記第1のレジスタ群に入力するよう前記レジスタ用入力手段を制御する
ことを特徴とする請求項8記載の演算処理装置。 - 前記コンパイラは、前記2つの入力値の絶対値を比較させ、絶対値の大きい値又は等しい値を前記第1の値として前記第3のレジスタ群に格納させる第1の命令と、前記2つの入力値の絶対値を比較させ、絶対値の小さい値又は等しい値を前記第2の値として前記第1のレジスタ群に格納させる第2の命令と、前記第1の値及び第2の値を使用して前記演算手段により演算を実行させる第3の命令とを生成し、前記記憶手段へ格納し、
前記演算器は、命令判定手段を有し、前記記憶手段から読み出した前記第1乃至第3の命令を前記命令制御手段に入力する
ことを特徴とする請求項9記載の演算処理装置。 - 前記演算器は、前記SIMD用レジスタからのデータを前記第1乃至第3の演算手段に出力するレジスタ用出力手段を有し、
前記命令制御手段は、前記第3の演算手段の加減算結果を前記第3のレジスタ群に入力するよう前記レジスタ用入力手段を制御し、前記第1乃至第3のレジスタ群からの出力を前記第1乃至第3の演算手段のいずれかに入力するよう前記レジスタ用出力手段を制御する
ことを特徴とする請求項9記載の演算処理装置。 - 前記演算器は、
IEEE754規格で定義される浮動小数点演算を行うものであって、前記第1及び第2のレジスタ群に格納される値は、符号ビット、指数部及び仮数部からなり、
前記第1及び第2のレジスタ群から入力される2つの入力の符号ビットを除き指数部及び仮数部を比較する比較手段と、
前記比較手段の比較結果に基づき、前記2つの入力値のいずれかを前記第1の値又は前記第2の値として出力する選択手段と
を有することを特徴とする請求項7乃至10のいずれか1項記載の演算処理装置。 - 前記演算器は、
前記命令制御手段からの指示に応じて、前記比較手段の比較結果を変換せずに出力するか若しくは反対の値に変換して出力する処理手段をさらに有し、
前記選択手段は、前記処理手段により出力された前記比較結果に基づき、前記2つの入力値のいずれかを前記第1の値又は前記第2の値として出力する
ことを特徴とする請求項9乃至11のいずれか1項に従属する請求項12記載の演算処理装置。 - 倍精度加算結果の計算誤差を算出するものである
ことを特徴とする請求項7乃至13のいずれか1項記載の演算処理装置。 - 複数の演算を単一の命令(SIMD)で実行する演算器の演算方法であって、
複数のレジスタからなる第1のレジスタ群及び第2のレジスタ群からの2つの入力の絶対値を比較し、絶対値が大きい値又は等しい値を第1の値として複数のレジスタからなる第3のレジスタ群へ格納する第1のステップと、
前記第1のレジスタ群及び前記第2のレジスタ群からの2つの入力の絶対値を比較し、絶対値が小さい値又は等しい値を第2の値として第1のレジスタ群へ格納する第2のステップと、
前記第3のレジスタ群に格納された第1の値及び前記第1のレジスタ群に格納された第2の値を使用して演算を実行する第3のステップと、を含む演算方法。 - 前記第3のステップは、前記第3のレジスタ群からの前記第1の値と前記第1のレジスタ群からの前記第2の値を加算し、当該加算結果を前記第2のレジスタ群に格納し、
前記第2のレジスタ群からの当該加算結果から前記第3のレジスタ群からの前記第1の値を減算し、当該減算結果を前記第3のレジスタ群に格納する第4のステップと、
前記第1のレジスタ群からの前記第2の値から前記第3のレジスタ群からの当該減算結果を減算する第5のステップと、
をさらに含むことを特徴とする請求項15記載の演算方法。 - 複数の演算を単一の命令(SIMD)で実行する演算器の命令列を生成するコンパイラであって、
複数のレジスタからなる第1のレジスタ群、第2のレジスタ群及び第3のレジスタ群を有するSIMD用レジスタの前記第1のレジスタ群及び前記第2のレジスタ群から出力される2つのデータを演算手段に入力し、絶対値を比較させ、絶対値が大きい値又は等しい値を第1の値として前記第3のレジスタ群に格納させる第1の命令と、
前記第1のレジスタ群及び前記第2のレジスタ群から出力される2つのデータを演算手段に入力し、絶対値を比較させ、絶対値が小さい値又は等しい値を第2の値として前記第1のレジスタ群に格納させる第2の命令と、
前記第1の値及び第2の値を使用して前記演算手段により演算を実行させる第3の命令と、を生成するコンパイラ。 - 前記第3の命令は、前記第3のレジスタ群からの前記第1の値と前記第1のレジスタ群からの前記第2の値を前記演算手段に入力し、加算させ、当該加算結果を前記第2のレジスタ群に格納させ、
前記第2のレジスタ群からの当該加算結果から前記第3のレジスタ群からの前記第1の値を減算させ、当該減算結果を前記第3のレジスタ群に格納させる第4の命令と、
前記第1のレジスタ群からの前記第2の値から前記第3のレジスタ群からの当該減算結果を減算させる第5の命令とを更に生成する
ことを特徴とする請求項17記載のコンパイラ。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008215137A JP4613992B2 (ja) | 2008-08-25 | 2008-08-25 | 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 |
---|---|---|---|
JP2008215137A JP4613992B2 (ja) | 2008-08-25 | 2008-08-25 | Simd演算器、simd演算器の演算方法、演算処理装置及びコンパイラ |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2010049611A JP2010049611A (ja) | 2010-03-04 |
JP4613992B2 true JP4613992B2 (ja) | 2011-01-19 |
Family
ID=42066618
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2008215137A Expired - Fee Related JP4613992B2 (ja) | 2008-04-16 | 2008-08-25 | Simd演算器、simd演算器の演算方法、演算処理装置及びコンパイラ |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4613992B2 (ja) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6964744B2 (ja) * | 2019-05-07 | 2021-11-10 | 株式会社ユニバーサルエンターテインメント | 遊技機 |
JP6743259B2 (ja) * | 2019-09-05 | 2020-08-19 | 株式会社ユニバーサルエンターテインメント | 遊技機 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH08202530A (ja) * | 1995-01-24 | 1996-08-09 | Hitachi Ltd | 正規化前丸め手段を有する浮動小数点加減算処理装置及び方法 |
JP2009258980A (ja) * | 2008-04-16 | 2009-11-05 | Nec Corp | Simd演算器、simd演算器の演算方法、演算処理装置及びコンパイラ |
-
2008
- 2008-08-25 JP JP2008215137A patent/JP4613992B2/ja not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH08202530A (ja) * | 1995-01-24 | 1996-08-09 | Hitachi Ltd | 正規化前丸め手段を有する浮動小数点加減算処理装置及び方法 |
JP2009258980A (ja) * | 2008-04-16 | 2009-11-05 | Nec Corp | Simd演算器、simd演算器の演算方法、演算処理装置及びコンパイラ |
Also Published As
Publication number | Publication date |
---|---|
JP2010049611A (ja) | 2010-03-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9916130B2 (en) | Apparatus and method for vector processing | |
KR102447636B1 (ko) | 부동 소수점 수를 누산하기 위한 산술 연산을 수행하는 장치 및 방법 | |
US7949696B2 (en) | Floating-point number arithmetic circuit for handling immediate values | |
JP4064989B2 (ja) | パック・データの乗加算演算を実行する装置 | |
US8626813B1 (en) | Dual-path fused floating-point two-term dot product unit | |
US20130246496A1 (en) | Floating-point vector normalisation | |
JP4388980B2 (ja) | 浮動小数点数の除算または平方根演算を行う演算装置及び演算方法 | |
JP7115211B2 (ja) | 演算処理装置および演算処理装置の制御方法 | |
JP4476210B2 (ja) | 逆数演算の結果値の初期推定値を求めるデータ処理装置および方法 | |
JP4601544B2 (ja) | 入力値に逆数演算を実施して結果値を作り出すデータ処理装置および方法 | |
JPWO2007094047A1 (ja) | 演算装置および演算方法 | |
JPH09212337A (ja) | 浮動小数点演算処理装置 | |
US6912559B1 (en) | System and method for improving the accuracy of reciprocal square root operations performed by a floating-point unit | |
JP4613992B2 (ja) | Simd演算器、simd演算器の演算方法、演算処理装置及びコンパイラ | |
GB2549153B (en) | Apparatus and method for supporting a conversion instruction | |
US10459688B1 (en) | Encoding special value in anchored-data element | |
US8041927B2 (en) | Processor apparatus and method of processing multiple data by single instructions | |
JP4502040B2 (ja) | Simd演算器、simd演算器の演算方法、演算処理装置及びコンパイラ | |
US10963245B2 (en) | Anchored data element conversion | |
US20200133633A1 (en) | Arithmetic processing apparatus and controlling method therefor | |
KR20240102915A (ko) | 부동소수점 연산 방법 및 연산 장치 | |
JP5376659B2 (ja) | 積和演算装置及び積和演算装置の制御方法 | |
Kehtarnavaz et al. | Fixed-Point vs. Floating-Point | |
JPH0293728A (ja) | 演算処理装置 | |
JP2003058362A (ja) | データ演算処理装置及びデータ演算処理プログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20100803 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20100901 |
|
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: 20100921 |
|
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: 20101004 |
|
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: 20131029 Year of fee payment: 3 |
|
LAPS | Cancellation because of no payment of annual fees |