JP2000293494A - 並列計算装置および並列計算方法 - Google Patents
並列計算装置および並列計算方法Info
- Publication number
- JP2000293494A JP2000293494A JP11102020A JP10202099A JP2000293494A JP 2000293494 A JP2000293494 A JP 2000293494A JP 11102020 A JP11102020 A JP 11102020A JP 10202099 A JP10202099 A JP 10202099A JP 2000293494 A JP2000293494 A JP 2000293494A
- Authority
- JP
- Japan
- Prior art keywords
- floating
- format
- point data
- point
- data
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/483—Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/30025—Format conversion instructions, e.g. Floating-Point to Integer, decimal conversion
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/544—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
- G06F7/5443—Sum of products
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Computational Mathematics (AREA)
- Computing Systems (AREA)
- Nonlinear Science (AREA)
- Advance Control (AREA)
- Complex Calculations (AREA)
Abstract
(57)【要約】
【課題】 オーバースペックになるようなハードウエア
規模とする必要がなく、また、計算速度も高速を保ちな
がら、高精度の並列計算ができる。 【解決手段】 ホストプロセッサと、複数個の専用プロ
セッサとがバスを介して接続されてシステムが構成され
る。ホストプロセッサでは、倍精度浮動小数点のフォー
マットで演算を行い、専用プロセッサでは、それより高
精度の浮動小数点の内部フォーマットで演算を行う。内
部フォーマットと、倍精度浮動小数点データとは、符号
部と、指数部とが共通の構成を有し、仮数部のビット幅
が内部フォーマットの方が大きく設定する。専用プロセ
ッサでは、倍精度から内部フォーマットへの変換を行う
入力データ変換部と、内部フォーマットから倍精度への
変換を行う出力データ変換部を備える。これらデータ変
換部では、変換の前後のデータにおいて、符号部および
指数部は、共通にデータを使用することができるので、
仮数部のみを、特定の手順で変換を行う。
規模とする必要がなく、また、計算速度も高速を保ちな
がら、高精度の並列計算ができる。 【解決手段】 ホストプロセッサと、複数個の専用プロ
セッサとがバスを介して接続されてシステムが構成され
る。ホストプロセッサでは、倍精度浮動小数点のフォー
マットで演算を行い、専用プロセッサでは、それより高
精度の浮動小数点の内部フォーマットで演算を行う。内
部フォーマットと、倍精度浮動小数点データとは、符号
部と、指数部とが共通の構成を有し、仮数部のビット幅
が内部フォーマットの方が大きく設定する。専用プロセ
ッサでは、倍精度から内部フォーマットへの変換を行う
入力データ変換部と、内部フォーマットから倍精度への
変換を行う出力データ変換部を備える。これらデータ変
換部では、変換の前後のデータにおいて、符号部および
指数部は、共通にデータを使用することができるので、
仮数部のみを、特定の手順で変換を行う。
Description
【0001】
【発明の属する技術分野】この発明は、医薬品の分子構
造設計や物性の予測などに用いられる非経験的分子軌道
計算を初めとする、浮動小数点演算による高精度な積和
演算を多数含んだ物理現象の解析に使用される並列計算
システムに関する。
造設計や物性の予測などに用いられる非経験的分子軌道
計算を初めとする、浮動小数点演算による高精度な積和
演算を多数含んだ物理現象の解析に使用される並列計算
システムに関する。
【0002】
【従来の技術】近年、半導体の微細化、高速化に伴い、
計算機の高性能化が実現され、薬学における分子構造設
計、物性値予測の分野にも、非経験的分子軌道計算を用
いた分子シミュレーションが行われるようになってき
た。
計算機の高性能化が実現され、薬学における分子構造設
計、物性値予測の分野にも、非経験的分子軌道計算を用
いた分子シミュレーションが行われるようになってき
た。
【0003】非経験的分子軌道計算の中でも、比較的計
算量が少なく、定性的な解析には十分に対応することが
できる、ハートレーフォック法(HF法)が最も広く用
いられている。このHF法については、例えば「藤永
茂、分子軌道法、岩波書店(1980)」、「大澤映二
編、分子軌道法、講談社サイエンティフィク(199
4)」、「菊池修、基礎量子化学、朝倉書店(199
7)」などに示されている。以下、HF法の概要につい
て述べる。
算量が少なく、定性的な解析には十分に対応することが
できる、ハートレーフォック法(HF法)が最も広く用
いられている。このHF法については、例えば「藤永
茂、分子軌道法、岩波書店(1980)」、「大澤映二
編、分子軌道法、講談社サイエンティフィク(199
4)」、「菊池修、基礎量子化学、朝倉書店(199
7)」などに示されている。以下、HF法の概要につい
て述べる。
【0004】HF法は、フォック方程式を、後述するS
CF法によって解く方法として定式化されている。ここ
で、フォック方程式は、分子に含まれている原子軌道の
総数をN、原子軌道の線形近似で表される分子軌道の総
数をmとすると、分子全体に関するシュレディンガー方
程式に対して1電子近似、線形近似を行った結果得られ
る FC=SCε (1) という式で表される。このフォック方程式を解くことに
よって、分子の有するエネルギーが求まるため、その値
により分子が安定な状態かどうかを判定できる。
CF法によって解く方法として定式化されている。ここ
で、フォック方程式は、分子に含まれている原子軌道の
総数をN、原子軌道の線形近似で表される分子軌道の総
数をmとすると、分子全体に関するシュレディンガー方
程式に対して1電子近似、線形近似を行った結果得られ
る FC=SCε (1) という式で表される。このフォック方程式を解くことに
よって、分子の有するエネルギーが求まるため、その値
により分子が安定な状態かどうかを判定できる。
【0005】(1)式において、Fはフォック行列と呼
ばれるN×Nの行列であり、また、Sは重なり行列と呼
ばれるN×Nの行列、Cは係数を表すN×mの行列、ε
は分子軌道を占有するそれぞれの電子が持つエネルギー
を表すm×mの対角行列である。
ばれるN×Nの行列であり、また、Sは重なり行列と呼
ばれるN×Nの行列、Cは係数を表すN×mの行列、ε
は分子軌道を占有するそれぞれの電子が持つエネルギー
を表すm×mの対角行列である。
【0006】ここで、フォック行列の要素Frs(r,
s=1〜N)は、以下の式で表される。
s=1〜N)は、以下の式で表される。
【0007】 Frs=hrs+grs =hrs+Σ〔t,u=1〜N〕Ptu((rs,tu) −(1/2)(rt,su)) (2)
【0008】この(2)式のhrsは、1電子に対する
エネルギーを表す積分量であり、(1)式の1回の計算
でN2 個に比例する数だけ計算される。
エネルギーを表す積分量であり、(1)式の1回の計算
でN2 個に比例する数だけ計算される。
【0009】なお、この明細書において、Σ〔i,j=
1〜N〕f(i,j)は、iおよびjについて1からN
までの総和を関数f(i,j)について求める演算を示
すものとしている。また、Σ〔i=1〜N〕f(i)
は、iについて1からNまでの総和を関数f(i)につ
いて求める演算を示すものとしている。
1〜N〕f(i,j)は、iおよびjについて1からN
までの総和を関数f(i,j)について求める演算を示
すものとしている。また、Σ〔i=1〜N〕f(i)
は、iについて1からNまでの総和を関数f(i)につ
いて求める演算を示すものとしている。
【0010】(2)式のPtuは、密度行列と呼ばれ、
以下のように上記の行列Cを用いて表される。
以下のように上記の行列Cを用いて表される。
【0011】 Ptu=Σ(j=1〜m)Ctj・Cuj (3) また、(2)式の(rs,tu)(r,s,t,u=1
〜N)は2電子積分と呼ばれる物理量であり、原子軌道
χi(r)(i=1〜N,rは座標)を用いて以下の式
のように表される。
〜N)は2電子積分と呼ばれる物理量であり、原子軌道
χi(r)(i=1〜N,rは座標)を用いて以下の式
のように表される。
【0012】 (rs,tu)=∫∫χr(r1)χs(r1)(1/r12) ×χt(r2)χu(r2)dr1・dr2 (4)
【0013】ここで、r1、r2はそれぞれ独立した2
つの座標系であり、それぞれ全空間にわたって二重積分
が行われる。また、r12は、座標系r1とr2との間の
距離を表す。この2電子積分は、r,s,t,uが、そ
れぞれ原子軌道の数だけ存在するので、(1)式の1回
の計算でN4 個に比例した数だけ必要となる。
つの座標系であり、それぞれ全空間にわたって二重積分
が行われる。また、r12は、座標系r1とr2との間の
距離を表す。この2電子積分は、r,s,t,uが、そ
れぞれ原子軌道の数だけ存在するので、(1)式の1回
の計算でN4 個に比例した数だけ必要となる。
【0014】次に、重なり行列Sの要素Srsは以下の
式で表される。
式で表される。
【0015】 Srs=∫χr(r1)χs(r1)dr1 (5) このように表されるので、HF法は(1)式で表される
m個の固有値εi、固有ベクトルCi(i=1〜m)を
求める問題となる。しかしながら、(2)式、(3)式
より分かるように、(1)式に含まれるフォック行列
は、係数を表すベクトルCiを使って求められるので、
(1)式を解いて得られるCiを使用しないと、Fの値
も求められないことになる。
m個の固有値εi、固有ベクトルCi(i=1〜m)を
求める問題となる。しかしながら、(2)式、(3)式
より分かるように、(1)式に含まれるフォック行列
は、係数を表すベクトルCiを使って求められるので、
(1)式を解いて得られるCiを使用しないと、Fの値
も求められないことになる。
【0016】したがって、まず、Ciの初期推定値(i
nitial guess)として適当な値を設定し、
そのCiを使用してFを求め、(1)式の固有値問題を
解いて、新たなCiを求める。次に、このCiを使っ
て、新たなFを計算して(1)式を解く。このように繰
り返し計算を行い、最後にFの計算に使用されたCi
と、求められたCiとの間に殆ど差がなくなったところ
で計算を終了する。この方法は、SCF(self−c
onsistent field)法と呼ばれ、分子軌
道計算において広く使われている方法である。
nitial guess)として適当な値を設定し、
そのCiを使用してFを求め、(1)式の固有値問題を
解いて、新たなCiを求める。次に、このCiを使っ
て、新たなFを計算して(1)式を解く。このように繰
り返し計算を行い、最後にFの計算に使用されたCi
と、求められたCiとの間に殆ど差がなくなったところ
で計算を終了する。この方法は、SCF(self−c
onsistent field)法と呼ばれ、分子軌
道計算において広く使われている方法である。
【0017】(1)式で表される2電子積分の個数は、
原子軌道の総数Nの4乗に比例するため、例えば生物学
などの分野でよく現れる100個程度の原子からなる分
子を考えた場合、Nの値は1000程度となり、その4
乗の100兆個のオーダーにものぼる。ここで、2電子
積分を計算する前に、値が小さいものを判定してカット
オフする方法が良く用いられるものの、計算が必要な2
電子積分の数は1億個程度であり、膨大な数であること
に変わりはない。
原子軌道の総数Nの4乗に比例するため、例えば生物学
などの分野でよく現れる100個程度の原子からなる分
子を考えた場合、Nの値は1000程度となり、その4
乗の100兆個のオーダーにものぼる。ここで、2電子
積分を計算する前に、値が小さいものを判定してカット
オフする方法が良く用いられるものの、計算が必要な2
電子積分の数は1億個程度であり、膨大な数であること
に変わりはない。
【0018】このため、SCF法の各反復には同じ2電
子積分が使用されるものの、2電子積分を一旦計算して
格納しておくメモリスペースがないため、反復毎に2電
子積分を計算し直すというダイレクト法が通常用いられ
る。このダイレクト法による分子軌道計算では、2電子
積分の計算に大部分の計算時間が占有されるため、この
部分の高速化が重要となる。
子積分が使用されるものの、2電子積分を一旦計算して
格納しておくメモリスペースがないため、反復毎に2電
子積分を計算し直すというダイレクト法が通常用いられ
る。このダイレクト法による分子軌道計算では、2電子
積分の計算に大部分の計算時間が占有されるため、この
部分の高速化が重要となる。
【0019】ここで、(4)式で表される原子軌道χi
には、通常、2電子積分を解析的に求めることができる
ガウス型関数が使用される。このガウス型関数の原子軌
道を用いた高速な2電子積分の計算法としては、従来、
文献1”S.Obara and A.Saika,
J.Chem.Phys.84,3963(198
6)”に示されている方法(以下、小原の方法と称す
る)が知られていた。
には、通常、2電子積分を解析的に求めることができる
ガウス型関数が使用される。このガウス型関数の原子軌
道を用いた高速な2電子積分の計算法としては、従来、
文献1”S.Obara and A.Saika,
J.Chem.Phys.84,3963(198
6)”に示されている方法(以下、小原の方法と称す
る)が知られていた。
【0020】小原の方法は、2電子積分を拡張した補助
積分という値を導入し、補助積分を含んだ漸化式の形式
で表される。この漸化式によって、1つの2電子積分
は、より低次の補助積分を含む積和演算の形式によって
表される。ある2電子積分を求めるときは、まず、漸化
式に従って、最も次数の低い補助積分だけを含んだ形式
に展開し、次に、積和演算によって、次数の高い補助積
分を順次求めていくことによって計算が行われる。以下
に、小原の方法の具体的な計算方法を示す。
積分という値を導入し、補助積分を含んだ漸化式の形式
で表される。この漸化式によって、1つの2電子積分
は、より低次の補助積分を含む積和演算の形式によって
表される。ある2電子積分を求めるときは、まず、漸化
式に従って、最も次数の低い補助積分だけを含んだ形式
に展開し、次に、積和演算によって、次数の高い補助積
分を順次求めていくことによって計算が行われる。以下
に、小原の方法の具体的な計算方法を示す。
【0021】まず、小原の方法では、ガウス型関数で表
される原子軌道χは、以下の式で表されている。
される原子軌道χは、以下の式で表されている。
【0022】 χ(r−R;n,ζ)=(rx−Rx)nx(ry−Ry)ny ×(rz−Rz)nzexp[−ζ(r−R)2 ] (6)
【0023】ここで、rとRは、空間上の位置を表すベ
クトルであり、特に、Rは原子の中心を表す。また、n
は0以上の整数で構成されるベクトルであり、軌道量子
数ベクトルと呼ばれる。この軌道量子数ベクトルは、r
などと同様、x,y,zの3つの成分nx,ny,nz
をもつ。
クトルであり、特に、Rは原子の中心を表す。また、n
は0以上の整数で構成されるベクトルであり、軌道量子
数ベクトルと呼ばれる。この軌道量子数ベクトルは、r
などと同様、x,y,zの3つの成分nx,ny,nz
をもつ。
【0024】さらに、ζは、原子の種類や軌道の種類に
応じて変化する軌道指数と呼ばれる 定数である。また、軌道量子数ベクトルの3成分の和 λ=nx+ny+nz (7) は、軌道量子数と呼ばれる。軌道量子数λが、それぞれ
0、1、2、3のとき、対応するガウス関数はs関数、
p関数、d関数、f関数と呼ばれ、原子の持つs軌道、
p軌道、d軌道、f軌道にそれぞれ対応した波動関数と
して扱われる。
応じて変化する軌道指数と呼ばれる 定数である。また、軌道量子数ベクトルの3成分の和 λ=nx+ny+nz (7) は、軌道量子数と呼ばれる。軌道量子数λが、それぞれ
0、1、2、3のとき、対応するガウス関数はs関数、
p関数、d関数、f関数と呼ばれ、原子の持つs軌道、
p軌道、d軌道、f軌道にそれぞれ対応した波動関数と
して扱われる。
【0025】各軌道に対する波動関数は、これらの関数
の線形結合で近似される。例えば水素原子の1s軌道に
対応する波動関数は、(7)式においてn=(0,0,
0)とした上で、軌道指数ζが数種類の異なる値をとる
ものの線形結合で表される。このときのζの種類は基底
関数系で異なる。
の線形結合で近似される。例えば水素原子の1s軌道に
対応する波動関数は、(7)式においてn=(0,0,
0)とした上で、軌道指数ζが数種類の異なる値をとる
ものの線形結合で表される。このときのζの種類は基底
関数系で異なる。
【0026】なお、軌道量子数λが0でないときには、
波動関数は複数個存在する。例えば、軌道量子数λが2
で表されるd関数は、軌道量子数ベクトルn=(2,
0,0)、(0,2,0)、(0,0,2)、(1,
1,0)、(0,1,1)、(1,0,1)に応じて、
dx2 、dy2 、dz2 、dxy、dyz、dzxの6
通りが存在する。
波動関数は複数個存在する。例えば、軌道量子数λが2
で表されるd関数は、軌道量子数ベクトルn=(2,
0,0)、(0,2,0)、(0,0,2)、(1,
1,0)、(0,1,1)、(1,0,1)に応じて、
dx2 、dy2 、dz2 、dxy、dyz、dzxの6
通りが存在する。
【0027】したがって、(4)式で表される2電子積
分の中に1個のd関数が含まれている場合は、これらの
関数に応じて6通りの2電子積分が求められる。ここ
で、(6)式で表されるガウス型関数において、軌道量
子数と、原子の中心座標Rと、パラメータζとが同じガ
ウス型関数の集合は、シェルと呼ばれる。したがって、
軌道量子数λに応じてpシェル、dシェルなどに分類さ
れ、例えばdシェルには6つのガウス型関数が含まれて
いる。
分の中に1個のd関数が含まれている場合は、これらの
関数に応じて6通りの2電子積分が求められる。ここ
で、(6)式で表されるガウス型関数において、軌道量
子数と、原子の中心座標Rと、パラメータζとが同じガ
ウス型関数の集合は、シェルと呼ばれる。したがって、
軌道量子数λに応じてpシェル、dシェルなどに分類さ
れ、例えばdシェルには6つのガウス型関数が含まれて
いる。
【0028】なお、(4)式の左辺で表される2電子積
分は、(p*s*,p*s*)など、それぞれの波動関
数が有するp、sなどの型で表すこともある。この場合
は、型の名前には「*」を付与して、波動関数名と区別
するものとする。
分は、(p*s*,p*s*)など、それぞれの波動関
数が有するp、sなどの型で表すこともある。この場合
は、型の名前には「*」を付与して、波動関数名と区別
するものとする。
【0029】前記文献1では、(1)式で表される2電
子積分に含まれる波動関数a、b、c、dを、(3)式
で表現されるガウス型関数を使って表わしたとき、2電
子積分の値を効率的に計算する方法が、再帰的な式で表
されている。小原の方法では、2電子積分(ab,c
d)に対して補助積分(ab,cd)(m) (mは0以上
の整数)という補助的な物理量が導入され、これを使っ
て以下のような形式の再帰式が導かれている。
子積分に含まれる波動関数a、b、c、dを、(3)式
で表現されるガウス型関数を使って表わしたとき、2電
子積分の値を効率的に計算する方法が、再帰的な式で表
されている。小原の方法では、2電子積分(ab,c
d)に対して補助積分(ab,cd)(m) (mは0以上
の整数)という補助的な物理量が導入され、これを使っ
て以下のような形式の再帰式が導かれている。
【0030】 (ab,cd)=(ab,cd)(0) (8) (a+1ib,cd)(m) =P0(ab,cd)(m) +P1(ab,cd)(m+1) +Ni(a)×P2(a−1ib,cd)(m) +Ni(a)×P3(a−1ib,cd)(m+1) +Ni(b)×P4(ab−1i,cd)(m) +Ni(b)×P5(ab−1i,cd)(m+1) +Ni(c)×P6(ab,c−1id)(m+1) +Ni(d)×P7(ab,cd−1i)(m+1) (9) (但し、i=x,y,z) (ab,cd)(m) =(s*s*,s*s*)(m) =P8×K(A,B,ζa,ζb)×K(C,D,ζc,ζd)×Fm(T) (10)
【0031】ここで、波動関数a,b,c,dは、全て
(6)式で表されるガウス型関数であり、それぞれが特
定の軌道量子数ベクトルnを持つ。また、記号a+1i
は、ガウス型関数aの軌道量子数ベクトルのうち、i成
分(i=x,y,z)の値を1つだけ増加させたガウス
型関数を意味する。したがって、例えば、aがn=
(1,0,0)で表されるpx関数の場合、a+1x
は、n=(2,0,0)で表されるdx2 関数となる。
(6)式で表されるガウス型関数であり、それぞれが特
定の軌道量子数ベクトルnを持つ。また、記号a+1i
は、ガウス型関数aの軌道量子数ベクトルのうち、i成
分(i=x,y,z)の値を1つだけ増加させたガウス
型関数を意味する。したがって、例えば、aがn=
(1,0,0)で表されるpx関数の場合、a+1x
は、n=(2,0,0)で表されるdx2 関数となる。
【0032】また、記号a−1iは、ガウス型関数aの
軌道量子数ベクトルのうち、i成分(i=x,y,z)
の値を1つだけ減少させたガウス型関数を意味する。ま
た、記号Ni(a)は、ガウス型関数aの軌道量子数ベ
クトルのi成分を表す。したがって、例えば波動関数b
の軌道量子数ベクトルのi成分が0であるときは、
(9)式のb−1iに関する項は0となる。
軌道量子数ベクトルのうち、i成分(i=x,y,z)
の値を1つだけ減少させたガウス型関数を意味する。ま
た、記号Ni(a)は、ガウス型関数aの軌道量子数ベ
クトルのi成分を表す。したがって、例えば波動関数b
の軌道量子数ベクトルのi成分が0であるときは、
(9)式のb−1iに関する項は0となる。
【0033】また、補助積分に対して成立する関係 を利用すると、(ab+1i,cd)(m) 、(ab,c
+1id)(m) 、(ab,cd+1i)(m) に関しても
(9)式と同様の関係式を導くことができる。
+1id)(m) 、(ab,cd+1i)(m) に関しても
(9)式と同様の関係式を導くことができる。
【0034】さらに、(9)式の補助積分の係数P0〜
P7は、中心となる原子核の座標A,B,C,Dや波動
関数a,b,c,dの(6)式の軌道指数ζに対応する
ζa,ζb,ζc,ζdから計算されるパラメータであ
り、以下の式で表される。
P7は、中心となる原子核の座標A,B,C,Dや波動
関数a,b,c,dの(6)式の軌道指数ζに対応する
ζa,ζb,ζc,ζdから計算されるパラメータであ
り、以下の式で表される。
【0035】 P0=Pi−Ai (11) P1=Wi−Pi (12) P2=1/(2ζ) (13) P3=−ρ/(2ζ2 ) (14) P4=1/(2ζ) (15) P5=−ρ/(2ζ2 ) (16) P6=1/(2(ζ+η)) (17) P7=1/(2(ζ+η)) (18) ここで、 ζ=ζa+ζb (19) η=ζc+ζd (20) P=(ζaA+ζbB)/ζ (21) Q=(ζcC+ζdD)/η (22) W=(ζP+ηQ)/(ζ+η) (23) ρ=ζη/(ζ+η) (24) となる。
【0036】また、(10)式の右辺を形成する係数P
8、パラメータT、および関数K(R0,R1,ζ0,
ζ1)、関数Fm(T)は、それぞれ以下の関係式で表
される。
8、パラメータT、および関数K(R0,R1,ζ0,
ζ1)、関数Fm(T)は、それぞれ以下の関係式で表
される。
【0037】 P8=(ζ+η)-1/2 (25) T=ρ(P−Q)2 (26) K(R0,R1,ζ0,ζ1)={21/2 ・π5/4 /(ζ0+ζ1)} ×exp[−{ζ0ζ1/(ζ0+ζ1)}(R0−R1)2 ] (27) Fm(T)=(0〜l)∫t2m・exp[−Tt2 ]dt (28)
【0038】ここで、(28)式の関数Fm(T)は誤
差関数と呼ばれ、上記の文献1ではテーラー展開を使っ
て計算する方法が挙げられている。なお、(28)式に
おいて、(0〜l)∫は、0からlまでの有限積分を示
すものとする。
差関数と呼ばれ、上記の文献1ではテーラー展開を使っ
て計算する方法が挙げられている。なお、(28)式に
おいて、(0〜l)∫は、0からlまでの有限積分を示
すものとする。
【0039】以上のように、小原の方法では2電子積分
が(8)〜(10)式のように再帰的に表わされている
ので、(9)式を繰り返して適用して、右辺に軌道量子
数が0の補助積分が現れるようにして、さらに、(1
0)式を用いて軌道量子数が0の補助積分を求めること
によって、目的とする2電子積分の値を得ることができ
る。
が(8)〜(10)式のように再帰的に表わされている
ので、(9)式を繰り返して適用して、右辺に軌道量子
数が0の補助積分が現れるようにして、さらに、(1
0)式を用いて軌道量子数が0の補助積分を求めること
によって、目的とする2電子積分の値を得ることができ
る。
【0040】例えば、2電子積分(p*p*,s*s
*)を求める場合を例にして説明する。ここで、2電子
積分に含まれる4つのガウス型関数は、すべて特定のシ
ェルに含まれているとする。このとき、前述のように、
p関数には、その軌道量子数ベクトルに応じて、px、
py、pzの3通りが存在するから、求めるべき2電子
積分は、(px*px*,s*s*)、(px*py
*,s*s*)、(px*pz*,s*s*)、(py
*px*,s*s*)、(py*py*,s*s*)、
(py*pz*,s*s*)、(pz*px*,s*s
*)、(pz*py*,s*s*)、(pz*pz*,
s*s*)の9通りとなる。
*)を求める場合を例にして説明する。ここで、2電子
積分に含まれる4つのガウス型関数は、すべて特定のシ
ェルに含まれているとする。このとき、前述のように、
p関数には、その軌道量子数ベクトルに応じて、px、
py、pzの3通りが存在するから、求めるべき2電子
積分は、(px*px*,s*s*)、(px*py
*,s*s*)、(px*pz*,s*s*)、(py
*px*,s*s*)、(py*py*,s*s*)、
(py*pz*,s*s*)、(pz*px*,s*s
*)、(pz*py*,s*s*)、(pz*pz*,
s*s*)の9通りとなる。
【0041】ここで、まず、このうちの(px*py
*,s*s*)を求める場合について説明する。
(8)、(9)式によって展開すると、以下の関係が成
立する。
*,s*s*)を求める場合について説明する。
(8)、(9)式によって展開すると、以下の関係が成
立する。
【0042】 (px*py*,s*s*) =(px*py*,s*s*)(0) =P0(s*py*,s*s*)(0) +P1(s*py*,s*s*)(1) (29)
【0043】この(29)式の右辺の補助積分は、2番
目の波動関数だけがs関数でない形になっている。この
形式の補助積分に対しても、前述したように、波動関数
の入れ替えによって、(9)式と同様の式を得ることが
できる。したがって、(29)式の右辺の補助積分を、
(9)式に再度適用して展開することによって、以下の
2つの式を得ることができる。
目の波動関数だけがs関数でない形になっている。この
形式の補助積分に対しても、前述したように、波動関数
の入れ替えによって、(9)式と同様の式を得ることが
できる。したがって、(29)式の右辺の補助積分を、
(9)式に再度適用して展開することによって、以下の
2つの式を得ることができる。
【0044】 (s*py*,s*s*)(0) =P0’(s*s*,s*s*)(0) +P1’(s*s*,s*s*)(1) (30) (s*py*,s*s*)(1) =P0’’(s*s*,s*s*)(1) +P1’’(s*s*,s*s*)(2) (31)
【0045】このようにして、全ての項を(s*s*,
s*s*)(m) の形で表すことができた。次に、(3
0)式、(31)式の右辺の(s*s*,s*s*)
(0) 、(s*s*,s*s*)(1) 、(s*s*,s*
s*)(2) を、(10)式を使用して求め、以後、展開
とは逆の順番で、最初に求められた値を、(30)式、
(31)式の右辺に代入して、(s*py*,s*s
*)(0) と(s*py*,s*s*)(1) を求める。さ
らに、これを(29)式の右辺に適用して最終的に(p
x*py*,s*s*)=(px*py*,s*s*)
(0) を得ることができる。
s*s*)(m) の形で表すことができた。次に、(3
0)式、(31)式の右辺の(s*s*,s*s*)
(0) 、(s*s*,s*s*)(1) 、(s*s*,s*
s*)(2) を、(10)式を使用して求め、以後、展開
とは逆の順番で、最初に求められた値を、(30)式、
(31)式の右辺に代入して、(s*py*,s*s
*)(0) と(s*py*,s*s*)(1) を求める。さ
らに、これを(29)式の右辺に適用して最終的に(p
x*py*,s*s*)=(px*py*,s*s*)
(0) を得ることができる。
【0046】また、残りの8つの2電子積分も、(2
9)式、(30)式、(31)式と同様の数式に展開し
て求めることができる。このとき、(30)式、(3
1)式で使用した(s*s*,s*s*)(0) 、(s*
s*,s*s*)(1) 、(s*s*,s*s*)(2) が
必ず使用されるので、これらの値を求め直すことなく、
再利用できる。また、これらの2電子積分は、原子核の
座標とζの値が同じであるため、積和計算に使用するP
0、P1などの係数の値も、ほぼ共通に使用することが
できる。
9)式、(30)式、(31)式と同様の数式に展開し
て求めることができる。このとき、(30)式、(3
1)式で使用した(s*s*,s*s*)(0) 、(s*
s*,s*s*)(1) 、(s*s*,s*s*)(2) が
必ず使用されるので、これらの値を求め直すことなく、
再利用できる。また、これらの2電子積分は、原子核の
座標とζの値が同じであるため、積和計算に使用するP
0、P1などの係数の値も、ほぼ共通に使用することが
できる。
【0047】このように、2電子積分に含まれる4つの
ガウス型関数が、それぞれ特定のシェルに含まれている
ときは、共通に利用できる補助積分が多い。したがっ
て、特定のシェルに含まれているガウス型関数を使った
2電子積分は、通常、まとめて計算される。2電子積分
の値は、以上の手順に従って、(8)式〜(10)式を
使用することによって求めることができる。
ガウス型関数が、それぞれ特定のシェルに含まれている
ときは、共通に利用できる補助積分が多い。したがっ
て、特定のシェルに含まれているガウス型関数を使った
2電子積分は、通常、まとめて計算される。2電子積分
の値は、以上の手順に従って、(8)式〜(10)式を
使用することによって求めることができる。
【0048】以上述べたように、2電子積分の計算は、
(9)式のように、(係数×補助積分)の値を、別の補
助積分の値に足し込んでいく、浮動小数点積和演算の繰
り返しで表される。このとき、(28)式の誤差関数の
計算は、テーラー展開で表され、さらに(13)式など
に現れる逆数、(25)式に現れる平方根の逆数、さら
に(27)式に現れるexp計算も、公知のニュートン
法、テーラー展開で計算できる。
(9)式のように、(係数×補助積分)の値を、別の補
助積分の値に足し込んでいく、浮動小数点積和演算の繰
り返しで表される。このとき、(28)式の誤差関数の
計算は、テーラー展開で表され、さらに(13)式など
に現れる逆数、(25)式に現れる平方根の逆数、さら
に(27)式に現れるexp計算も、公知のニュートン
法、テーラー展開で計算できる。
【0049】ニュートン法やテーラー展開も、浮動小数
点積和演算の繰り返しによって表わすことができるの
で、結局、2電子積分は、連続する積和演算の繰返しと
なる。また、(9)式による1回の展開によって最大8
個の積和演算が増加するため、1つの2電子積分を計算
するときに必要となる積和演算の数も多くなる。
点積和演算の繰り返しによって表わすことができるの
で、結局、2電子積分は、連続する積和演算の繰返しと
なる。また、(9)式による1回の展開によって最大8
個の積和演算が増加するため、1つの2電子積分を計算
するときに必要となる積和演算の数も多くなる。
【0050】以上述べたように、HF法に従った分子軌
道計算を行う場合、SCF計算の1回の繰り返しにおい
て現れる2電子積分を、浮動小数点積和演算によって計
算することが必要とされる。この計算量は、2電子積分
の数および1つの2電子積分の計算に要する計算量の観
点から見て、膨大なものとなる。
道計算を行う場合、SCF計算の1回の繰り返しにおい
て現れる2電子積分を、浮動小数点積和演算によって計
算することが必要とされる。この計算量は、2電子積分
の数および1つの2電子積分の計算に要する計算量の観
点から見て、膨大なものとなる。
【0051】従来、分子軌道計算を高速に行う例とし
て、「超高速分子軌道計算専用機MOEのアーキテクチ
ャ」(白川他、信学技報、CPSY96−46(199
6−05))(文献2)があった。これは、2電子積分
の計算は、ある程度独立に可能であることを利用して、
複数の2電子積分の計算を並列化するものである。
て、「超高速分子軌道計算専用機MOEのアーキテクチ
ャ」(白川他、信学技報、CPSY96−46(199
6−05))(文献2)があった。これは、2電子積分
の計算は、ある程度独立に可能であることを利用して、
複数の2電子積分の計算を並列化するものである。
【0052】この文献2の例では、システムに、複数の
プロセッサエレメントを用意して、それぞれのプロセッ
サエレメントに、2電子積分の計算の一部を分担させ
る。2電子積分の計算は、前述の小原の方法に基づく浮
動小数点積和演算によって行われ、プロセッサエレメン
トは、(2)式で表されるフォック行列のうち、grs
までを計算して、この値をホストプロセッサに送信す
る。その後、ホストプロセッサでは、(1)式で表され
る固有値問題が解かれる。
プロセッサエレメントを用意して、それぞれのプロセッ
サエレメントに、2電子積分の計算の一部を分担させ
る。2電子積分の計算は、前述の小原の方法に基づく浮
動小数点積和演算によって行われ、プロセッサエレメン
トは、(2)式で表されるフォック行列のうち、grs
までを計算して、この値をホストプロセッサに送信す
る。その後、ホストプロセッサでは、(1)式で表され
る固有値問題が解かれる。
【0053】また、別の例としては、特開平9−504
28号公報に示されているものがある。この例では、複
数の相互接続された計算機よりなる計算機クラスタを備
え、各計算機において、2電子積分や(2)式で表され
るフォック行列要素を計算し、この値をベクトル計算機
に送る。その後、ベクトル計算機において(1)式で表
される固有値問題が解かれる。
28号公報に示されているものがある。この例では、複
数の相互接続された計算機よりなる計算機クラスタを備
え、各計算機において、2電子積分や(2)式で表され
るフォック行列要素を計算し、この値をベクトル計算機
に送る。その後、ベクトル計算機において(1)式で表
される固有値問題が解かれる。
【0054】
【発明が解決しようとする課題】以上述べたような2電
子積分やフォック行列要素の計算では、前述の通り膨大
な浮動小数点演算が行われるため、演算の途中で発生す
る誤差およびそれによる精度が問題となってくる。そこ
で、まず、計算に必要とされる精度について検討する。
子積分やフォック行列要素の計算では、前述の通り膨大
な浮動小数点演算が行われるため、演算の途中で発生す
る誤差およびそれによる精度が問題となってくる。そこ
で、まず、計算に必要とされる精度について検討する。
【0055】分子軌道計算の規模は、分子の大きさや、
使用する基底系によっても変わってくるため、計算に必
要とされる精度を一律に決めることは困難であるが、前
述の文献1によれば、非経験的分子軌道計算の結果が十
分な精度をもつための目安として、(28)式で表され
る誤差関数の値が持つ相対誤差が10-15 程度よりも小
さい精度を持つことが必要とされている。
使用する基底系によっても変わってくるため、計算に必
要とされる精度を一律に決めることは困難であるが、前
述の文献1によれば、非経験的分子軌道計算の結果が十
分な精度をもつための目安として、(28)式で表され
る誤差関数の値が持つ相対誤差が10-15 程度よりも小
さい精度を持つことが必要とされている。
【0056】つまり、誤差関数を、この程度の精度で計
算することによって、最終的にその誤差関数を使った分
子軌道計算で得られるエネルギーの値が、特定の範囲の
規模の分子軌道計算を行う場合に対して、実用上十分な
精度となる。そこで、文献1に示された目安をもとにし
て、精度の見積もりを行うことにする。
算することによって、最終的にその誤差関数を使った分
子軌道計算で得られるエネルギーの値が、特定の範囲の
規模の分子軌道計算を行う場合に対して、実用上十分な
精度となる。そこで、文献1に示された目安をもとにし
て、精度の見積もりを行うことにする。
【0057】ここで、IEEE規格754で定められて
いる倍精度の浮動小数点表現では、その仮数部の長さが
52ビットであり、このうち、最上位の1の値は含まれ
ないために、53ビットの精度をもつと考えられる。こ
のビット長は、相対誤差にして、2-53 =1.11×1
0-16 であるから、倍精度の浮動小数点は、上記精度を
満足している。
いる倍精度の浮動小数点表現では、その仮数部の長さが
52ビットであり、このうち、最上位の1の値は含まれ
ないために、53ビットの精度をもつと考えられる。こ
のビット長は、相対誤差にして、2-53 =1.11×1
0-16 であるから、倍精度の浮動小数点は、上記精度を
満足している。
【0058】そこで、ここでは、(28)式に従って求
められた誤差関数が、仮数部が53ビットの倍精度浮動
小数点の精度を持っていることを条件として、積和演算
が満足すべき精度を見積もることにする。
められた誤差関数が、仮数部が53ビットの倍精度浮動
小数点の精度を持っていることを条件として、積和演算
が満足すべき精度を見積もることにする。
【0059】このとき、前に述べたように、(21)〜
(24)式などで用いられる割り算の計算には、ニュー
トン法による逆数計算を用い、(28)式の誤差関数の
計算には、テーラー展開による計算を用いることを前提
とする。したがって、誤差関数の値は、予め与えられた
A、B、C、D、ζa、ζb、ζb、ζdの値から積和
演算の繰り返しで計算する。
(24)式などで用いられる割り算の計算には、ニュー
トン法による逆数計算を用い、(28)式の誤差関数の
計算には、テーラー展開による計算を用いることを前提
とする。したがって、誤差関数の値は、予め与えられた
A、B、C、D、ζa、ζb、ζb、ζdの値から積和
演算の繰り返しで計算する。
【0060】数学辞典(岩波書店)などによると、一般
に、誤差は、(1)入力誤差、(2)打ち切り誤差、
(3)丸め誤差、の3つに分類される。誤差関数の計算
値には、これら3種類の誤差が影響すると考えられる。
そこで、積和演算に必要な精度を見積もる準備として、
これら3つの誤差による影響について説明する。
に、誤差は、(1)入力誤差、(2)打ち切り誤差、
(3)丸め誤差、の3つに分類される。誤差関数の計算
値には、これら3種類の誤差が影響すると考えられる。
そこで、積和演算に必要な精度を見積もる準備として、
これら3つの誤差による影響について説明する。
【0061】まず、入力誤差とは、予め与えられるデー
タの中に既に存在している誤差のことであり、浮動小数
点で表されたA、B、C、D、ζa、ζb、ζb、ζd
(初期パラメータと称する)に含まれる誤差のことを指
す。ここでは、初期パラメータは、倍精度浮動小数点で
与えられると仮定する。したがって、これらの値は53
ビット仮数部以上の精度を持っており、入力誤差もこの
程度である。
タの中に既に存在している誤差のことであり、浮動小数
点で表されたA、B、C、D、ζa、ζb、ζb、ζd
(初期パラメータと称する)に含まれる誤差のことを指
す。ここでは、初期パラメータは、倍精度浮動小数点で
与えられると仮定する。したがって、これらの値は53
ビット仮数部以上の精度を持っており、入力誤差もこの
程度である。
【0062】次に、打ち切り誤差とは、例えば上述のよ
うに割り算をニュートン法、また、(28)式の値をテ
ーラー展開で近似したときに、その繰り返し回数や展開
項数を有限回数で打ち切ることに由来する誤差である。
この誤差は、ニュートン法の繰り返し数、テーラー展開
の展開項数や、初期値や係数値の値の精度を大きくとる
ことによって制御できる。したがって、打ち切り誤差も
入力誤差と同様十分に小さくするように制御すると仮定
する。
うに割り算をニュートン法、また、(28)式の値をテ
ーラー展開で近似したときに、その繰り返し回数や展開
項数を有限回数で打ち切ることに由来する誤差である。
この誤差は、ニュートン法の繰り返し数、テーラー展開
の展開項数や、初期値や係数値の値の精度を大きくとる
ことによって制御できる。したがって、打ち切り誤差も
入力誤差と同様十分に小さくするように制御すると仮定
する。
【0063】さらに、丸め誤差とは、計算の各段階で得
られる数値を限られた桁数に丸めるために発生する誤差
のことである。ここでは、有限長の乗算および加減算に
よる積和演算を繰り返し用いることによって、丸め誤差
が発生する。
られる数値を限られた桁数に丸めるために発生する誤差
のことである。ここでは、有限長の乗算および加減算に
よる積和演算を繰り返し用いることによって、丸め誤差
が発生する。
【0064】このとき、入力誤差、打ち切り誤差とも十
分に小さく、倍精度浮動小数点のもつ誤差以下と仮定し
ているので、これら2種類の誤差が誤差関数の値に与え
る影響は少ない。そこで、この解析では丸め誤差だけを
考慮し、積和演算の繰り返しによって累積する丸め誤差
を考慮しても、計算された誤差関数の値が、なお、53
ビット仮数部を持つ倍精度浮動小数点の精度を維持して
いる、という条件から、積和演算に必要な精度を計算で
きる。
分に小さく、倍精度浮動小数点のもつ誤差以下と仮定し
ているので、これら2種類の誤差が誤差関数の値に与え
る影響は少ない。そこで、この解析では丸め誤差だけを
考慮し、積和演算の繰り返しによって累積する丸め誤差
を考慮しても、計算された誤差関数の値が、なお、53
ビット仮数部を持つ倍精度浮動小数点の精度を維持して
いる、という条件から、積和演算に必要な精度を計算で
きる。
【0065】次に、誤差関数の精度を具体的に解析する
前に、誤差関数の計算で使用される要素的な計算の誤差
を見積もる。
前に、誤差関数の計算で使用される要素的な計算の誤差
を見積もる。
【0066】まず、積和演算に含まれる加算、乗算によ
って発生する相対誤差について説明する。この説明で
は、有限長の桁数で行われて丸め誤差が生じる加算、乗
算を便宜的に+r、×rと表記し、無限長の桁数で行わ
れて丸め誤差が発生しない加算、乗算を便宜的に+i、
×iと表記することにする。また、簡単のため、有限長
の加算、乗算によって、一律に、有限長演算によって発
生する最悪の相対誤差εだけ相対誤差が発生するものと
仮定する。
って発生する相対誤差について説明する。この説明で
は、有限長の桁数で行われて丸め誤差が生じる加算、乗
算を便宜的に+r、×rと表記し、無限長の桁数で行わ
れて丸め誤差が発生しない加算、乗算を便宜的に+i、
×iと表記することにする。また、簡単のため、有限長
の加算、乗算によって、一律に、有限長演算によって発
生する最悪の相対誤差εだけ相対誤差が発生するものと
仮定する。
【0067】このとき、あるパラメータA、Bの間の有
限長の加算、乗算は、以下の(32)式、(33)式の
ように表される。
限長の加算、乗算は、以下の(32)式、(33)式の
ように表される。
【0068】 A+rB=(1+ε)(A+iB) (32) A×rB=(1+ε)(A×iB) (33)
【0069】また、パラメータA、B、C、Dを使っ
て、パラメータX、Yが X=A+rB (34) Y=C+rD (35) と表されるとき、XとYとの有限長の加算、乗算は以下
の(36)式、(37)式のように表される。
て、パラメータX、Yが X=A+rB (34) Y=C+rD (35) と表されるとき、XとYとの有限長の加算、乗算は以下
の(36)式、(37)式のように表される。
【0070】 X+rY=(A+rB)+r(C+rD) =(1+ε)(A+iB)+r(1+ε)(C+iD) =(1+ε)2 ((A+iB)+i(C+iD)) (36) X×rY=(A+rB)×r(C+rD) =(1+ε)(A+iB)×r(1+ε)(C+iD) =(1+ε)3 ((A+iB)×r(C+iD)) (37)
【0071】したがって、(36)式のように有限長の
加算を行うときは、理想的な結果に対して相対誤差の2
乗がかかり、(37)式のように有限長の乗算を行うと
きは、理想的な結果に対して相対誤差が3乗でかかって
くる。このように、丸め誤差を含んだ式同志の演算で
は、式に含まれている相対誤差の残り方が、加算の場合
と乗算の場合とで異なる。
加算を行うときは、理想的な結果に対して相対誤差の2
乗がかかり、(37)式のように有限長の乗算を行うと
きは、理想的な結果に対して相対誤差が3乗でかかって
くる。このように、丸め誤差を含んだ式同志の演算で
は、式に含まれている相対誤差の残り方が、加算の場合
と乗算の場合とで異なる。
【0072】さらに、パラメータA〜Dの累積を求める
場合、(36)式のように、X、Yを、まず、求めてか
ら両者を加算する方法では、相対誤差が(1+ε)2 に
なるのに対し、パラメータA〜Dを順番に足していく方
法では、その式は、以下の(38)式に示すように展開
される。
場合、(36)式のように、X、Yを、まず、求めてか
ら両者を加算する方法では、相対誤差が(1+ε)2 に
なるのに対し、パラメータA〜Dを順番に足していく方
法では、その式は、以下の(38)式に示すように展開
される。
【0073】 ((A+rB)+rC)+rD =(1+ε)3 A+i(1+ε)3 B+i(1+ε)2 C+i(1+ε)D (38)
【0074】したがって、AとBに対しては、相対誤差
が(1+ε)3 になるため、この式全体に関しても、理
想的な結果に対して相対誤差が(1+ε)3 になるとみ
なされる。このように、加算の順番に対しても丸め誤差
が変わってくる。
が(1+ε)3 になるため、この式全体に関しても、理
想的な結果に対して相対誤差が(1+ε)3 になるとみ
なされる。このように、加算の順番に対しても丸め誤差
が変わってくる。
【0075】次に、逆数の値を求めるニュートン法によ
る丸め誤差について解析する。ある値yの逆数を求める
ためのニュートン法のステップは、まず、値yを特定の
範囲に正規化して、その逆数に近いxの値を選び、以下
の(39)〜(41)式を繰り返すことによって得られ
るxの計算値を、逆に正規化することで得ることができ
る。
る丸め誤差について解析する。ある値yの逆数を求める
ためのニュートン法のステップは、まず、値yを特定の
範囲に正規化して、その逆数に近いxの値を選び、以下
の(39)〜(41)式を繰り返すことによって得られ
るxの計算値を、逆に正規化することで得ることができ
る。
【0076】 y0=y×x (39) r=2−y0 (40) x=r×x (41)
【0077】このときの繰り返し回数は、最初に選択し
たxの値と真の値との差に依存するので、初期値の正確
さに依存する。ここでは、繰り返し回数を3としたとき
に、十分な打切り誤差となると仮定する。このとき、
(39)〜(41)式を有限長の乗算、加算で行うこと
によって、相対誤差は、それぞれ(1+ε)が1回ずつ
かかる形になる。したがって、3回の繰り返しによって
発生する相対誤差は(1+ε)9 となる。
たxの値と真の値との差に依存するので、初期値の正確
さに依存する。ここでは、繰り返し回数を3としたとき
に、十分な打切り誤差となると仮定する。このとき、
(39)〜(41)式を有限長の乗算、加算で行うこと
によって、相対誤差は、それぞれ(1+ε)が1回ずつ
かかる形になる。したがって、3回の繰り返しによって
発生する相対誤差は(1+ε)9 となる。
【0078】ニュートン法は、上記(39)〜(41)
式の繰り返しによってxの値を(1/y)に近づけてい
く方法であるため、実際には、繰り返しの途中で混入す
る丸め誤差も補償されていく。このため、上記の(1+
ε)9 という相対誤差の値は、オーバーエステイメイト
であるが、ここでは最悪のケースを想定して、この値を
使用することにする。
式の繰り返しによってxの値を(1/y)に近づけてい
く方法であるため、実際には、繰り返しの途中で混入す
る丸め誤差も補償されていく。このため、上記の(1+
ε)9 という相対誤差の値は、オーバーエステイメイト
であるが、ここでは最悪のケースを想定して、この値を
使用することにする。
【0079】さらに、(28)式に対し、テーラー展開
を適用したときの丸め誤差について解析する。前述の文
献1には、7項の展開の例が示されているので、ここで
も7項の展開を仮定する。このとき、テーラー展開は、
以下の(42)式で表される。
を適用したときの丸め誤差について解析する。前述の文
献1には、7項の展開の例が示されているので、ここで
も7項の展開を仮定する。このとき、テーラー展開は、
以下の(42)式で表される。
【0080】Fm(T)=Σ〔k=0〜6〕1/k!・
Ck(T−T´) (42)ここで、T´は、与えら
れたTの範囲を所定の分割数で分割したときに、Tに最
も近い境界値である。この分割数は、前述のように、テ
ーラー展開の打ち切り誤差が小さくなるように、十分大
きく取られていると仮定する。また、CkはそのT´の
値に応じて決定される係数の値である。このテーラー展
開は、実際には以下のような手順で計算される。
Ck(T−T´) (42)ここで、T´は、与えら
れたTの範囲を所定の分割数で分割したときに、Tに最
も近い境界値である。この分割数は、前述のように、テ
ーラー展開の打ち切り誤差が小さくなるように、十分大
きく取られていると仮定する。また、CkはそのT´の
値に応じて決定される係数の値である。このテーラー展
開は、実際には以下のような手順で計算される。
【0081】 F6=(1/6)×(T−T´)×C6 (43) F5=(1/5)×(T−T´)×(F6+C5) (44) F4=(1/4)×(T−T´)×(F5+C4) (45) ...... Fm(T)=F0=(T−T´)×(F1+C0) (46)
【0082】(43)〜(46)式を有限長の乗算、加
算を使って行うとき、(43)式にかかる相対誤差は
(1+ε)3 、また、(44)式以降にかかる相対誤差
は(1+ε)4 となる。但し、F4、F2、F1、F0
に対しては、最初の(整数分の1)の乗算は正確にでき
るので、(1+ε)3 となる。この結果、テーラー展開
によって発生する相対誤差は、(1+ε)24となる。
算を使って行うとき、(43)式にかかる相対誤差は
(1+ε)3 、また、(44)式以降にかかる相対誤差
は(1+ε)4 となる。但し、F4、F2、F1、F0
に対しては、最初の(整数分の1)の乗算は正確にでき
るので、(1+ε)3 となる。この結果、テーラー展開
によって発生する相対誤差は、(1+ε)24となる。
【0083】実際のテーラー展開では、分割数は上述の
ように十分に大きくとられるため、(42)式の(T−
T´)の値は十分に小さい。したがって、例えば(4
4)式に含まれる(F6+C5)のように、直前に求め
られた値Fと係数Cとの足し算では、直前に(1/k)
や(T−T´)の値が掛け合わされているFよりも係数
Cの方が十分大きく、Fの値に混入している丸め誤差の
値は問題とならない可能性もある。このため、上記(1
+ε)24という相対誤差の値は、オーバーエステイメイ
トであるが、最悪のケースを想定して、この値を使用す
ることにする。
ように十分に大きくとられるため、(42)式の(T−
T´)の値は十分に小さい。したがって、例えば(4
4)式に含まれる(F6+C5)のように、直前に求め
られた値Fと係数Cとの足し算では、直前に(1/k)
や(T−T´)の値が掛け合わされているFよりも係数
Cの方が十分大きく、Fの値に混入している丸め誤差の
値は問題とならない可能性もある。このため、上記(1
+ε)24という相対誤差の値は、オーバーエステイメイ
トであるが、最悪のケースを想定して、この値を使用す
ることにする。
【0084】さらに、(43)〜(46)式によって求
められる際に、(T−T´)が1回ずつ掛け合わされ
る。このため、機械的に解析すると、Tに含まれる相対
誤差は6乗となると思われるが、この相対誤差も繰り返
しの各段階におけるFの値に混入していくため、上で述
べた理由により6乗とすることもオーバーエステイメイ
トである。しかし、ここでも最悪の場合を想定してTに
含まれる誤差を6乗とみなすことにする。
められる際に、(T−T´)が1回ずつ掛け合わされ
る。このため、機械的に解析すると、Tに含まれる相対
誤差は6乗となると思われるが、この相対誤差も繰り返
しの各段階におけるFの値に混入していくため、上で述
べた理由により6乗とすることもオーバーエステイメイ
トである。しかし、ここでも最悪の場合を想定してTに
含まれる誤差を6乗とみなすことにする。
【0085】次に、以上述べた誤差関数の要素的な計算
に混入する相対誤差を考慮しながら、誤差関数の計算に
現れる丸め誤差について述べる。上述したように、ここ
で見積もった丸め誤差の値は、オーバーエステイメイト
な部分も含まれているが、ここでは誤差関数の値が所定
の誤差の範囲内にとどまるようにするために十分となる
積和演算の精度を求めたいので、見積もった誤差の値を
そのまま使用する。
に混入する相対誤差を考慮しながら、誤差関数の計算に
現れる丸め誤差について述べる。上述したように、ここ
で見積もった丸め誤差の値は、オーバーエステイメイト
な部分も含まれているが、ここでは誤差関数の値が所定
の誤差の範囲内にとどまるようにするために十分となる
積和演算の精度を求めたいので、見積もった誤差の値を
そのまま使用する。
【0086】図7は、初期パラメータA、B、C、D、
ζa、ζb、ζc、ζdから誤差関数Fm(T)を計算
するまでの経路と、各計算で発生する相対誤差とを示し
たものである。この図7では、誤差関数が初期パラメー
タから順次積和演算を使って求められる経路を矢印で示
し、各積和演算だけによってかかる相対誤差の値を式の
右側に示している。
ζa、ζb、ζc、ζdから誤差関数Fm(T)を計算
するまでの経路と、各計算で発生する相対誤差とを示し
たものである。この図7では、誤差関数が初期パラメー
タから順次積和演算を使って求められる経路を矢印で示
し、各積和演算だけによってかかる相対誤差の値を式の
右側に示している。
【0087】まず、(26)式のTの値に含まれる相対
誤差を検討する。ここで、Tは、ρと、(P−Q)2 と
の2つの値の乗算で表されているため、これら2つの値
に含まれる丸め誤差について述べる。
誤差を検討する。ここで、Tは、ρと、(P−Q)2 と
の2つの値の乗算で表されているため、これら2つの値
に含まれる丸め誤差について述べる。
【0088】最初に、(P−Q)2 の相対誤差は、図7
のステップ1〜5のパスを解析することによって得られ
る。ステップ1〜3までは、各ステップでの相対誤差を
そのまま掛け合わせることで、Pxの相対誤差が得ら
れ、その値は(1+ε)13である。
のステップ1〜5のパスを解析することによって得られ
る。ステップ1〜3までは、各ステップでの相対誤差を
そのまま掛け合わせることで、Pxの相対誤差が得ら
れ、その値は(1+ε)13である。
【0089】次に、ステップ4の値は、Pxを含む項が
2回かかった形になっているため、相対誤差は、((1
+ε)13)2 ×(1+ε)3 =(1+ε)29とみなし、
さらに、ステップ5の相対誤差をかけると、(1+ε)
31となる。この値が、(P−Q)2 の相対誤差となる。
2回かかった形になっているため、相対誤差は、((1
+ε)13)2 ×(1+ε)3 =(1+ε)29とみなし、
さらに、ステップ5の相対誤差をかけると、(1+ε)
31となる。この値が、(P−Q)2 の相対誤差となる。
【0090】次に、ρの相対誤差は、ステップ1、6、
7、8のパスと、ステップ1、8のパスを考慮する。ス
テップ1、6、7で、相対誤差は、(1+ε)11であ
り、ステップ8では、3者の乗算となるため、結局(1
+ε)13となる。この値が、ρの相対誤差となる。
7、8のパスと、ステップ1、8のパスを考慮する。ス
テップ1、6、7で、相対誤差は、(1+ε)11であ
り、ステップ8では、3者の乗算となるため、結局(1
+ε)13となる。この値が、ρの相対誤差となる。
【0091】以上求められた、(P−Q)2 の相対誤
差、ρの相対誤差から、ステップ9で求められるTに含
まれる相対誤差は、(1+ε)31+13+1 =(1+ε)
45と計算される。
差、ρの相対誤差から、ステップ9で求められるTに含
まれる相対誤差は、(1+ε)31+13+1 =(1+ε)
45と計算される。
【0092】さらに、Tに含まれる相対誤差から、ステ
ップ10の誤差関数に含まれる相対誤差を求める。前述
したテーラー展開の丸め誤差による影響に基づいて計算
すると、誤差関数の相対誤差は、(1+ε)45×6+24
=(1+ε)294 となる。
ップ10の誤差関数に含まれる相対誤差を求める。前述
したテーラー展開の丸め誤差による影響に基づいて計算
すると、誤差関数の相対誤差は、(1+ε)45×6+24
=(1+ε)294 となる。
【0093】実際の誤差解析では、減算にともなう桁落
ちも考慮しなければならない。この場合は、(26)式
に含まれる(P−Q)の計算において、Pの値とQの値
がかなり近い場合に、減算結果の有効桁数が減少してし
まうものである。ただし、この場合は、(P−Q)で桁
落ちが発生するとTの値も小さくなり、この結果、(4
2)式の(T−T´)の値も小さいとみなされ、結果的
に誤差関数に影響するのは、(42)式のC0を含んだ
(T−T´)がかかっていない項とみなすことができ
る。このため、桁落ちが発生するときには、むしろ誤差
の影響は軽減されると考えられるので、今回は、桁落ち
は考慮しないことにする。
ちも考慮しなければならない。この場合は、(26)式
に含まれる(P−Q)の計算において、Pの値とQの値
がかなり近い場合に、減算結果の有効桁数が減少してし
まうものである。ただし、この場合は、(P−Q)で桁
落ちが発生するとTの値も小さくなり、この結果、(4
2)式の(T−T´)の値も小さいとみなされ、結果的
に誤差関数に影響するのは、(42)式のC0を含んだ
(T−T´)がかかっていない項とみなすことができ
る。このため、桁落ちが発生するときには、むしろ誤差
の影響は軽減されると考えられるので、今回は、桁落ち
は考慮しないことにする。
【0094】以上述べたように、初期パラメータから誤
差関数を計算する際に混入する丸めによる相対誤差は、
(1+ε)294 となる。上で述べた丸め誤差に対する条
件から、この相対誤差が、倍精度浮動小数点に含まれる
相対誤差以下であることが要請されるため、積和演算器
による1回の相対誤差εに対して、以下の式が成り立
つ。
差関数を計算する際に混入する丸めによる相対誤差は、
(1+ε)294 となる。上で述べた丸め誤差に対する条
件から、この相対誤差が、倍精度浮動小数点に含まれる
相対誤差以下であることが要請されるため、積和演算器
による1回の相対誤差εに対して、以下の式が成り立
つ。
【0095】 (1+ε)294 <(1+2-53 ) (47) ここで、εが2-53 より小さい数字であるため、ε<<
294である。この結果、(47)式の左辺は1+29
4εと近似でき、最終的に、(47)式は、ε≦2-62
と変形される。この条件式より、誤差関数が倍精度浮動
小数点程度の精度を持つために十分となる積和演算器の
仮数部の桁数は、62ビットである。
294である。この結果、(47)式の左辺は1+29
4εと近似でき、最終的に、(47)式は、ε≦2-62
と変形される。この条件式より、誤差関数が倍精度浮動
小数点程度の精度を持つために十分となる積和演算器の
仮数部の桁数は、62ビットである。
【0096】前述の文献2のような例では、通常、誤差
関数の計算と、2電子積分やフォック行列要素の計算と
に用いられる積和演算は、共通の演算装置が使用され
る。したがって、仮数部が62ビット以上の積和演算
は、誤差関数だけでなく、2電子積分やフォック行列要
素を求めるときにも使われる。
関数の計算と、2電子積分やフォック行列要素の計算と
に用いられる積和演算は、共通の演算装置が使用され
る。したがって、仮数部が62ビット以上の積和演算
は、誤差関数だけでなく、2電子積分やフォック行列要
素を求めるときにも使われる。
【0097】このように、62ビット以上の積和演算で
計算することによって、誤差関数は、前述の文献1に目
安として示された精度を持つため、分子軌道計算の結果
にも十分な精度を持たせることができると考えられる。
計算することによって、誤差関数は、前述の文献1に目
安として示された精度を持つため、分子軌道計算の結果
にも十分な精度を持たせることができると考えられる。
【0098】しかしながら、特開平9−50428号公
報に示されている方法では、既存のホストとなるベクト
ル計算機と、計算機クラスタを構成する汎用計算機を用
いて分子軌道計算を行っている。このため、ホストとな
るベクトル計算機や、クラスタを構成する計算機に予め
用意されている演算精度によって、誤差関数の計算や、
固有値の演算精度が制限されてしまう問題がある。
報に示されている方法では、既存のホストとなるベクト
ル計算機と、計算機クラスタを構成する汎用計算機を用
いて分子軌道計算を行っている。このため、ホストとな
るベクトル計算機や、クラスタを構成する計算機に予め
用意されている演算精度によって、誤差関数の計算や、
固有値の演算精度が制限されてしまう問題がある。
【0099】特に、通常の計算機では、IEEE規格7
54で定められている倍精度浮動小数点表現に対応する
乗算回路や加減算回路が用意されているため、(1)式
で表される固有値の演算精度は上記の要求を満足するも
のの、誤差関数の計算には演算精度が不足するものとな
ってしまう。
54で定められている倍精度浮動小数点表現に対応する
乗算回路や加減算回路が用意されているため、(1)式
で表される固有値の演算精度は上記の要求を満足するも
のの、誤差関数の計算には演算精度が不足するものとな
ってしまう。
【0100】ここで、4倍精度浮動小数点などの高精度
な演算を用意している計算機を、クラスタとして使用す
ることもできるが、その場合には、誤差関数の計算に十
分な演算精度よりもかなりオーバースペックとなってし
まうため、ハードウエア資源を無駄に使用してしまうこ
とになり、効率が悪い。
な演算を用意している計算機を、クラスタとして使用す
ることもできるが、その場合には、誤差関数の計算に十
分な演算精度よりもかなりオーバースペックとなってし
まうため、ハードウエア資源を無駄に使用してしまうこ
とになり、効率が悪い。
【0101】さらに、IEEE規格754で定められて
いる倍精度浮動小数点と4倍精度浮動小数点のフォーマ
ットの変換に手間がかかる。例えば、倍精度浮動小数点
と4倍精度浮動小数点では、指数の値に対して特定のオ
フセットを加算したものを、指数を表すフィールドに格
納するが、倍精度浮動小数点と4倍精度浮動小数点と
で、この加算するオフセットの値が異なるため、両者の
間で指数部に対する加減算処理を行う等の処理が必要と
なる。
いる倍精度浮動小数点と4倍精度浮動小数点のフォーマ
ットの変換に手間がかかる。例えば、倍精度浮動小数点
と4倍精度浮動小数点では、指数の値に対して特定のオ
フセットを加算したものを、指数を表すフィールドに格
納するが、倍精度浮動小数点と4倍精度浮動小数点と
で、この加算するオフセットの値が異なるため、両者の
間で指数部に対する加減算処理を行う等の処理が必要と
なる。
【0102】また、倍精度浮動小数点に対応したハード
ウエアを使い、ソフトウエア的に4倍精度浮動小数点な
どの、より精度の高い計算を行うことも可能であるが、
計算に余分なステップ数を要するため、その演算速度が
低下してしまう。
ウエアを使い、ソフトウエア的に4倍精度浮動小数点な
どの、より精度の高い計算を行うことも可能であるが、
計算に余分なステップ数を要するため、その演算速度が
低下してしまう。
【0103】このように、目的とするフォーマットより
も小さい回路を用いて、そのフォーマットの計算を行う
例としては、特開平2−171923号公報、特開平6
−301710号公報、特開平8−185309号公報
に記載のものも挙げられるが、いずれも演算時間がかか
ってしまう問題がある。
も小さい回路を用いて、そのフォーマットの計算を行う
例としては、特開平2−171923号公報、特開平6
−301710号公報、特開平8−185309号公報
に記載のものも挙げられるが、いずれも演算時間がかか
ってしまう問題がある。
【0104】以上の点にかんがみ、この発明は、オーバ
ースペックになるようなハードウエア規模とする必要が
なく、また、計算速度も高速を保ちながら、高精度の並
列計算ができるようにした装置および方法を提供するこ
とを目的とする。
ースペックになるようなハードウエア規模とする必要が
なく、また、計算速度も高速を保ちながら、高精度の並
列計算ができるようにした装置および方法を提供するこ
とを目的とする。
【0105】
【課題を解決するための手段】上記課題を解決するため
に、請求項1の発明においては、ホストプロセッサと、
このホストプロセッサとバスを介して接続される1また
は複数のプロセッサエレメントとからなり、前記ホスト
プロセッサと、前記1または複数のプロセッサエレメン
トとが、特定の計算プロセスに含まれる浮動小数点演算
処理を分担して計算する並列計算装置において、前記プ
ロセッサエレメントは、前記ホストプロセッサとの間
で、1ビットの符号部と、meビットのビット幅の指数
部と、m0ビットのビット幅の仮数部とからなる第1の
形式の浮動小数点データを入出力する浮動小数点入出力
インタフェース部と、前記浮動小数点入出力インタフェ
ース部より入力される前記第1の形式の浮動小数点デー
タを、1ビットの符号部と、前記meビットのビット幅
の指数部と、前記m0よりも大きいm1ビットのビット
幅の仮数部とからなる第2の形式の浮動小数点データに
変換する入力データ変換部と、浮動小数点乗算手段およ
び浮動小数点加減算手段を備え、前記入力データ変換部
からの前記第2の形式の浮動小数点データについて、浮
動小数点演算処理を実行する浮動小数点演算部と、前記
浮動小数点演算部で演算が施された前記第2の形式の浮
動小数点データを前記第1の形式の浮動小数点データに
変換して、前記浮動小数点入出力インタフェース部に供
給する出力データ変換部と、を備えることを特徴とす
る。
に、請求項1の発明においては、ホストプロセッサと、
このホストプロセッサとバスを介して接続される1また
は複数のプロセッサエレメントとからなり、前記ホスト
プロセッサと、前記1または複数のプロセッサエレメン
トとが、特定の計算プロセスに含まれる浮動小数点演算
処理を分担して計算する並列計算装置において、前記プ
ロセッサエレメントは、前記ホストプロセッサとの間
で、1ビットの符号部と、meビットのビット幅の指数
部と、m0ビットのビット幅の仮数部とからなる第1の
形式の浮動小数点データを入出力する浮動小数点入出力
インタフェース部と、前記浮動小数点入出力インタフェ
ース部より入力される前記第1の形式の浮動小数点デー
タを、1ビットの符号部と、前記meビットのビット幅
の指数部と、前記m0よりも大きいm1ビットのビット
幅の仮数部とからなる第2の形式の浮動小数点データに
変換する入力データ変換部と、浮動小数点乗算手段およ
び浮動小数点加減算手段を備え、前記入力データ変換部
からの前記第2の形式の浮動小数点データについて、浮
動小数点演算処理を実行する浮動小数点演算部と、前記
浮動小数点演算部で演算が施された前記第2の形式の浮
動小数点データを前記第1の形式の浮動小数点データに
変換して、前記浮動小数点入出力インタフェース部に供
給する出力データ変換部と、を備えることを特徴とす
る。
【0106】また、請求項2の発明は、請求項1に記載
の並列計算装置において、前記入力データ変換部は、前
記第1の形式の浮動小数点データの符号部を、前記第2
の形式の浮動小数点データの符号部とし、前記第1の形
式の浮動小数点データの指数部を、前記第2の形式の浮
動小数点データの指数部とし、前記m0ビットの前記第
1の形式の浮動小数点データの仮数部を、前記m1ビッ
トの前記第2の形式の浮動小数点データの仮数部のうち
の上位の前記m0ビットとし、前記第2の形式の浮動小
数点データの仮数部の下位m1−m0ビットを所定の数
値とし、前記出力データ変換部は、前記第2の形式の浮
動小数点データの符号部を、前記第1の形式の浮動小数
点データの符号部とし、前記第2の形式の浮動小数点デ
ータの指数部を、前記第1の形式の浮動小数点データの
指数部とし、前記第2の形式の浮動小数点データの仮数
部の上位の前記m0ビットを、前記第1の形式の浮動小
数点データの仮数部としたことを特徴とする。
の並列計算装置において、前記入力データ変換部は、前
記第1の形式の浮動小数点データの符号部を、前記第2
の形式の浮動小数点データの符号部とし、前記第1の形
式の浮動小数点データの指数部を、前記第2の形式の浮
動小数点データの指数部とし、前記m0ビットの前記第
1の形式の浮動小数点データの仮数部を、前記m1ビッ
トの前記第2の形式の浮動小数点データの仮数部のうち
の上位の前記m0ビットとし、前記第2の形式の浮動小
数点データの仮数部の下位m1−m0ビットを所定の数
値とし、前記出力データ変換部は、前記第2の形式の浮
動小数点データの符号部を、前記第1の形式の浮動小数
点データの符号部とし、前記第2の形式の浮動小数点デ
ータの指数部を、前記第1の形式の浮動小数点データの
指数部とし、前記第2の形式の浮動小数点データの仮数
部の上位の前記m0ビットを、前記第1の形式の浮動小
数点データの仮数部としたことを特徴とする。
【0107】また、請求項3の発明は、請求項1に記載
の並列計算装置において、前記入力データ変換部は、前
記第1の形式の浮動小数点データの符号部を、前記第2
の形式の浮動小数点データの符号部とし、前記第1の形
式の浮動小数点データの指数部を、前記第2の形式の浮
動小数点データの指数部とし、前記m1ビットの前記第
2の形式の浮動小数点データの仮数部のうち、その最上
位1ビットは1とし、最上位よりも下位の前記m0ビッ
トは前記第1の形式の浮動小数点データの仮数部とし、
さらにそれより下位の前記m1−前記m0−1ビットは
所定の数値とし、前記出力データ変換部は、前記第2の
形式の浮動小数点データの符号部を、前記第1の形式の
浮動小数点データの符号部とし、前記第2の形式の浮動
小数点データの指数部を、前記第1の形式の浮動小数点
データの指数部とし、前記第2の形式の浮動小数点デー
タの仮数部の上位2ビット目からのm0ビットを、前記
m0ビットの第1の形式の浮動小数点データの仮数部と
したことを特徴とする。
の並列計算装置において、前記入力データ変換部は、前
記第1の形式の浮動小数点データの符号部を、前記第2
の形式の浮動小数点データの符号部とし、前記第1の形
式の浮動小数点データの指数部を、前記第2の形式の浮
動小数点データの指数部とし、前記m1ビットの前記第
2の形式の浮動小数点データの仮数部のうち、その最上
位1ビットは1とし、最上位よりも下位の前記m0ビッ
トは前記第1の形式の浮動小数点データの仮数部とし、
さらにそれより下位の前記m1−前記m0−1ビットは
所定の数値とし、前記出力データ変換部は、前記第2の
形式の浮動小数点データの符号部を、前記第1の形式の
浮動小数点データの符号部とし、前記第2の形式の浮動
小数点データの指数部を、前記第1の形式の浮動小数点
データの指数部とし、前記第2の形式の浮動小数点デー
タの仮数部の上位2ビット目からのm0ビットを、前記
m0ビットの第1の形式の浮動小数点データの仮数部と
したことを特徴とする。
【0108】また、請求項4の発明は、請求項1〜3の
いずれかに記載の並列計算装置において、前記第2の形
式の浮動小数点データにおいては、前記指数部が第1の
所定の値emaxのときに符号付き無限大を表し、前記
指数部が第2の所定の値eminのときに零を表し、前
記浮動小数点演算部に含まれる浮動小数点乗算手段は、
オーバーフローを発生すると出力データの指数部を前記
値emaxとし、アンダーフローを発生すると出力デー
タの指数部を前記値eminとし、入力される前記第2
の形式の2つの浮動小数点データのうち、どちらか1つ
の指数部が前記値emaxのときに出力データの指数部
を前記値emaxとし、前記入力される前記第2の形式
の2つの浮動小数点データのうち双方とも指数部が前記
値emaxでなく、かつ、どちらか1つの指数部が前記
値eminのときに出力データの指数部を前記値emi
nとし、前記浮動小数点演算部に含まれる浮動小数点加
減算手段は、オーバーフローを発生すると出力データの
指数部を前記値emaxとし、アンダーフローを発生す
ると出力データの指数部を前記値eminとし、入力さ
れる前記第2の形式の2つの浮動小数点データのうち、
どちらか1つの指数部が前記値emaxのときに出力デ
ータの指数部を前記値emaxとすることを特徴とす
る。
いずれかに記載の並列計算装置において、前記第2の形
式の浮動小数点データにおいては、前記指数部が第1の
所定の値emaxのときに符号付き無限大を表し、前記
指数部が第2の所定の値eminのときに零を表し、前
記浮動小数点演算部に含まれる浮動小数点乗算手段は、
オーバーフローを発生すると出力データの指数部を前記
値emaxとし、アンダーフローを発生すると出力デー
タの指数部を前記値eminとし、入力される前記第2
の形式の2つの浮動小数点データのうち、どちらか1つ
の指数部が前記値emaxのときに出力データの指数部
を前記値emaxとし、前記入力される前記第2の形式
の2つの浮動小数点データのうち双方とも指数部が前記
値emaxでなく、かつ、どちらか1つの指数部が前記
値eminのときに出力データの指数部を前記値emi
nとし、前記浮動小数点演算部に含まれる浮動小数点加
減算手段は、オーバーフローを発生すると出力データの
指数部を前記値emaxとし、アンダーフローを発生す
ると出力データの指数部を前記値eminとし、入力さ
れる前記第2の形式の2つの浮動小数点データのうち、
どちらか1つの指数部が前記値emaxのときに出力デ
ータの指数部を前記値emaxとすることを特徴とす
る。
【0109】また、請求項5の発明は、請求項1〜4の
いずれかに記載の並列計算装置において、前記浮動小数
点演算部に含まれる浮動小数点乗算手段は、その出力デ
ータの仮数部を求めるときに、切り捨てを実施し、前記
浮動小数点演算部に含まれる浮動小数点加減算手段は、
その出力データの仮数部を求めるときに、切り捨てを実
施することを特徴とする。
いずれかに記載の並列計算装置において、前記浮動小数
点演算部に含まれる浮動小数点乗算手段は、その出力デ
ータの仮数部を求めるときに、切り捨てを実施し、前記
浮動小数点演算部に含まれる浮動小数点加減算手段は、
その出力データの仮数部を求めるときに、切り捨てを実
施することを特徴とする。
【0110】また、請求項6の発明は、ホストプロセッ
サと、このホストプロセッサとバスを介して接続される
1または複数のプロセッサエレメントとにより、特定の
計算プロセスに含まれる浮動小数点演算処理を分担して
計算する並列計算方法において、前記ホストプロセッサ
は、1ビットの符号部と、meビットのビット幅の指数
部と、m0ビットのビット幅の仮数部とからなる第1の
形式の浮動小数点データについて演算処理を行い、前記
プロセッサエレメントは、前記第1の形式よりも高精度
で、1ビットの符号部と、前記meビットのビット幅の
指数部と、前記m0よりも大きいm1ビットのビット幅
の仮数部とからなる第2の形式の浮動小数点データにつ
いて、浮動小数点演算処理を実行するものであって、か
つ、前記バスを通じて入力される第1の形式の浮動小数
点データ入力の符号部を前記第2の形式の浮動小数点デ
ータの符号部とし、前記第1の形式の浮動小数点データ
入力の指数部を前記第2の形式の浮動小数点データの指
数部とし、前記第1の形式の浮動小数点データ入力の仮
数部を、前記m1ビットの前記第2の形式の浮動小数点
データの仮数部のうちの上位m0ビットとすると共に、
前記第2の形式の浮動小数点データの仮数部の下位m1
−m0ビットを所定の数値として、前記第1の形式の浮
動小数点データ入力を、前記第2の形式の浮動小数点デ
ータに変換する入力データ変換工程と、前記入力データ
変換工程で変換された前記第2の形式の浮動小数点デー
タについて、浮動小数点演算を実行し、その演算結果と
しての前記第2の形式の浮動小数点データを得る浮動小
数点演算工程と、前記浮動小数点演算工程で得られる前
記演算結果としての前記第2の形式の浮動小数点データ
の符号部を前記第1の形式の浮動小数点データの符号部
とし、前記演算結果としての前記第2の形式の浮動小数
点データの指数部を前記第1の形式の浮動小数点データ
の指数部とし、さらに前記演算結果としての前記第2の
形式の浮動小数点データの仮数部の上位m0ビットを前
記第1の形式の浮動小数点データの仮数部として、前記
演算結果としての前記第2の形式の浮動小数点データ
を、前記第1の形式の浮動小数点データ出力に変換し
て、前記バスに出力する出力データ変換工程と、を備え
ることを特徴とする。
サと、このホストプロセッサとバスを介して接続される
1または複数のプロセッサエレメントとにより、特定の
計算プロセスに含まれる浮動小数点演算処理を分担して
計算する並列計算方法において、前記ホストプロセッサ
は、1ビットの符号部と、meビットのビット幅の指数
部と、m0ビットのビット幅の仮数部とからなる第1の
形式の浮動小数点データについて演算処理を行い、前記
プロセッサエレメントは、前記第1の形式よりも高精度
で、1ビットの符号部と、前記meビットのビット幅の
指数部と、前記m0よりも大きいm1ビットのビット幅
の仮数部とからなる第2の形式の浮動小数点データにつ
いて、浮動小数点演算処理を実行するものであって、か
つ、前記バスを通じて入力される第1の形式の浮動小数
点データ入力の符号部を前記第2の形式の浮動小数点デ
ータの符号部とし、前記第1の形式の浮動小数点データ
入力の指数部を前記第2の形式の浮動小数点データの指
数部とし、前記第1の形式の浮動小数点データ入力の仮
数部を、前記m1ビットの前記第2の形式の浮動小数点
データの仮数部のうちの上位m0ビットとすると共に、
前記第2の形式の浮動小数点データの仮数部の下位m1
−m0ビットを所定の数値として、前記第1の形式の浮
動小数点データ入力を、前記第2の形式の浮動小数点デ
ータに変換する入力データ変換工程と、前記入力データ
変換工程で変換された前記第2の形式の浮動小数点デー
タについて、浮動小数点演算を実行し、その演算結果と
しての前記第2の形式の浮動小数点データを得る浮動小
数点演算工程と、前記浮動小数点演算工程で得られる前
記演算結果としての前記第2の形式の浮動小数点データ
の符号部を前記第1の形式の浮動小数点データの符号部
とし、前記演算結果としての前記第2の形式の浮動小数
点データの指数部を前記第1の形式の浮動小数点データ
の指数部とし、さらに前記演算結果としての前記第2の
形式の浮動小数点データの仮数部の上位m0ビットを前
記第1の形式の浮動小数点データの仮数部として、前記
演算結果としての前記第2の形式の浮動小数点データ
を、前記第1の形式の浮動小数点データ出力に変換し
て、前記バスに出力する出力データ変換工程と、を備え
ることを特徴とする。
【0111】また、請求項7の発明は、ホストプロセッ
サと、このホストプロセッサとバスを介して接続される
1または複数のプロセッサエレメントとにより、特定の
計算プロセスに含まれる浮動小数点演算処理を分担して
計算する並列計算方法において、前記ホストプロセッサ
は、1ビットの符号部と、meビットのビット幅の指数
部と、m0ビットのビット幅の仮数部とからなる第1の
形式の浮動小数点データについて演算処理を行い、前記
プロセッサエレメントは、前記第1の形式よりも高精度
で、1ビットの符号部と、前記meビットのビット幅の
指数部と、前記m0よりも大きいm1ビットのビット幅
の仮数部とからなる第2の形式の浮動小数点データにつ
いて、浮動小数点演算処理を実行するものであって、か
つ、前記バスを通じて入力される第1の形式の浮動小数
点データ入力の符号部を前記第2の形式の浮動小数点デ
ータの符号部とし、前記第1の形式の浮動小数点データ
入力の指数部を前記第2の形式の浮動小数点データの指
数部とし、さらにm1ビットの第2の形式の浮動小数点
データの仮数部のうち、その最上位1ビットは1とし、
最上位よりも下位の前記m0ビットは前記第1の形式の
浮動小数点データ入力の仮数部とし、さらにそれより下
位の前記m1−前記m0−1ビットは所定の数値とし
て、前記第1の形式の浮動小数点データ入力を、前記第
2の形式の浮動小数点データに変換する入力データ変換
工程と、前記入力データ変換工程で変換されて得られた
前記第2の形式の浮動小数点データについて、浮動小数
点演算を実行して、その演算結果としての前記第2の形
式の浮動小数点データを得る浮動小数点演算工程と、前
記浮動小数点演算工程で得られる前記演算結果としての
前記第2の形式の浮動小数点データの符号部を前記第1
の形式の浮動小数点データの符号部とし、また前記演算
結果としての前記第2の形式の浮動小数点データの指数
部を前記第1の形式の浮動小数点データの指数部とし、
さらに前記演算結果としての前記第2の形式の浮動小数
点データの仮数部の上位2ビット目からのm0ビット
を、m0ビットの前記第1の形式の浮動小数点データの
仮数部として、前記演算結果としての前記第2の形式の
浮動小数点データを、前記第1の形式の浮動小数点デー
タ出力に変換して、前記バスに出力する出力データ変換
工程と、を備えることを特徴とする。
サと、このホストプロセッサとバスを介して接続される
1または複数のプロセッサエレメントとにより、特定の
計算プロセスに含まれる浮動小数点演算処理を分担して
計算する並列計算方法において、前記ホストプロセッサ
は、1ビットの符号部と、meビットのビット幅の指数
部と、m0ビットのビット幅の仮数部とからなる第1の
形式の浮動小数点データについて演算処理を行い、前記
プロセッサエレメントは、前記第1の形式よりも高精度
で、1ビットの符号部と、前記meビットのビット幅の
指数部と、前記m0よりも大きいm1ビットのビット幅
の仮数部とからなる第2の形式の浮動小数点データにつ
いて、浮動小数点演算処理を実行するものであって、か
つ、前記バスを通じて入力される第1の形式の浮動小数
点データ入力の符号部を前記第2の形式の浮動小数点デ
ータの符号部とし、前記第1の形式の浮動小数点データ
入力の指数部を前記第2の形式の浮動小数点データの指
数部とし、さらにm1ビットの第2の形式の浮動小数点
データの仮数部のうち、その最上位1ビットは1とし、
最上位よりも下位の前記m0ビットは前記第1の形式の
浮動小数点データ入力の仮数部とし、さらにそれより下
位の前記m1−前記m0−1ビットは所定の数値とし
て、前記第1の形式の浮動小数点データ入力を、前記第
2の形式の浮動小数点データに変換する入力データ変換
工程と、前記入力データ変換工程で変換されて得られた
前記第2の形式の浮動小数点データについて、浮動小数
点演算を実行して、その演算結果としての前記第2の形
式の浮動小数点データを得る浮動小数点演算工程と、前
記浮動小数点演算工程で得られる前記演算結果としての
前記第2の形式の浮動小数点データの符号部を前記第1
の形式の浮動小数点データの符号部とし、また前記演算
結果としての前記第2の形式の浮動小数点データの指数
部を前記第1の形式の浮動小数点データの指数部とし、
さらに前記演算結果としての前記第2の形式の浮動小数
点データの仮数部の上位2ビット目からのm0ビット
を、m0ビットの前記第1の形式の浮動小数点データの
仮数部として、前記演算結果としての前記第2の形式の
浮動小数点データを、前記第1の形式の浮動小数点デー
タ出力に変換して、前記バスに出力する出力データ変換
工程と、を備えることを特徴とする。
【0112】また、請求項8の発明は、請求項1〜5の
いずれかに記載の並列計算装置において、前記計算プロ
セスは、分子軌道法に基づく計算プロセスであることを
特徴とする。
いずれかに記載の並列計算装置において、前記計算プロ
セスは、分子軌道法に基づく計算プロセスであることを
特徴とする。
【0113】さらに、請求項9の発明は、請求項6また
は請求項7に記載の並列計算方法において、前記計算プ
ロセスは、分子軌道法に基づく計算プロセスであること
を特徴とする。
は請求項7に記載の並列計算方法において、前記計算プ
ロセスは、分子軌道法に基づく計算プロセスであること
を特徴とする。
【0114】
【作用】請求項1の発明においては、ホストプロセッサ
は、第1の形式、例えば倍精度浮動小数点データについ
て演算処理を実行すると共に、このホストプロセッサと
浮動小数点演算処理を分担処理するプロセッサエレメン
トは、第1の形式の浮動小数点データよりも高精度であ
って、仮数部のビット幅のみが異なる第2の形式の浮動
小数点データを使って浮動小数点演算を行う。したがっ
て、4倍精度を用いる場合のような過剰なオーバースペ
ックとなってしまうようなことはない。
は、第1の形式、例えば倍精度浮動小数点データについ
て演算処理を実行すると共に、このホストプロセッサと
浮動小数点演算処理を分担処理するプロセッサエレメン
トは、第1の形式の浮動小数点データよりも高精度であ
って、仮数部のビット幅のみが異なる第2の形式の浮動
小数点データを使って浮動小数点演算を行う。したがっ
て、4倍精度を用いる場合のような過剰なオーバースペ
ックとなってしまうようなことはない。
【0115】そして、プロセッサエレメントにおいて、
ホストプロセッサから入力データを受けるときに、入力
データ変換部により、第1の形式から第2の形式に浮動
小数点データの形式の変換を行うと共に、プロセッサエ
レメントからホストプロセッサに向けてデータを出力す
るときに、出力データ変換部により、第2の形式から第
1の形式に浮動小数点データの形式の変換を行う。
ホストプロセッサから入力データを受けるときに、入力
データ変換部により、第1の形式から第2の形式に浮動
小数点データの形式の変換を行うと共に、プロセッサエ
レメントからホストプロセッサに向けてデータを出力す
るときに、出力データ変換部により、第2の形式から第
1の形式に浮動小数点データの形式の変換を行う。
【0116】この浮動小数点データの形式の変換は、仮
数部のみが異なるので、前述した4倍精度と倍精度との
間での変換のように、指数部の変換を行う必要がない。
このため、簡単な変換処理で済むので、演算処理速度の
低下が少ない。
数部のみが異なるので、前述した4倍精度と倍精度との
間での変換のように、指数部の変換を行う必要がない。
このため、簡単な変換処理で済むので、演算処理速度の
低下が少ない。
【0117】そして、一般に、並列計算装置において
は、プロセッサエレメントでの計算量が、ホストプロセ
ッサよりも多いが、上述の構成の請求項1によれば、こ
の計算量の多い演算が、高精度で実施されることにな
り、精度の高い計算が可能となるものである。
は、プロセッサエレメントでの計算量が、ホストプロセ
ッサよりも多いが、上述の構成の請求項1によれば、こ
の計算量の多い演算が、高精度で実施されることにな
り、精度の高い計算が可能となるものである。
【0118】また、請求項2の発明によれば、入力デー
タ変換部および出力データ変換部で行われる第1の形式
の浮動小数点データと第2の形式の浮動小数点データと
の間の変換において、符号部と指数部とは、全く同一に
することができる。したがって、変換を単純に行うこと
ができるので、変換に要するハードウエア規模が小さく
なる。
タ変換部および出力データ変換部で行われる第1の形式
の浮動小数点データと第2の形式の浮動小数点データと
の間の変換において、符号部と指数部とは、全く同一に
することができる。したがって、変換を単純に行うこと
ができるので、変換に要するハードウエア規模が小さく
なる。
【0119】また、請求項3の発明によれば、入力デー
タ変換部および出力データ変換部で行われる第1の形式
の浮動小数点データと第2の形式の浮動小数点データと
の変換を単純に保ったまま、第2の形式の浮動小数点デ
ータの仮数部を浮動小数点乗算手段で計算を行い易いよ
うに変更される。したがって、浮動小数点乗算手段の回
路規模を小さくできる。
タ変換部および出力データ変換部で行われる第1の形式
の浮動小数点データと第2の形式の浮動小数点データと
の変換を単純に保ったまま、第2の形式の浮動小数点デ
ータの仮数部を浮動小数点乗算手段で計算を行い易いよ
うに変更される。したがって、浮動小数点乗算手段の回
路規模を小さくできる。
【0120】また、請求項4の発明によれば、第2の形
式の浮動小数点データにおいて、零と無限大とが指数部
だけで表されるようになる。したがって、浮動小数点乗
算手段、および浮動小数点加減算手段で、零や無限大を
扱うための回路規模を小さくすることができる。
式の浮動小数点データにおいて、零と無限大とが指数部
だけで表されるようになる。したがって、浮動小数点乗
算手段、および浮動小数点加減算手段で、零や無限大を
扱うための回路規模を小さくすることができる。
【0121】また、請求項5の発明においては、浮動小
数点乗算手段および浮動小数点加減算手段では、仮数部
を求めるときに、丸め処理が省略されて、切り捨て処理
が行われる。
数点乗算手段および浮動小数点加減算手段では、仮数部
を求めるときに、丸め処理が省略されて、切り捨て処理
が行われる。
【0122】この請求項5の発明の場合、第2の形式の
浮動小数点データの仮数部のビット幅が、第1の形式の
浮動小数点データの仮数部のビット幅が大きいことか
ら、丸め処理をしても、第1の形式の浮動小数点データ
として必要な仮数部のビット幅に影響がないようにする
ことができる。このため、丸め処理を省略しても、高精
度を維持することが可能であるとともに、丸め処理を省
略できるので、浮動小数点乗算手段、浮動小数点加減算
手段の回路規模を小さくし、高速に演算が実施できるよ
うになる。
浮動小数点データの仮数部のビット幅が、第1の形式の
浮動小数点データの仮数部のビット幅が大きいことか
ら、丸め処理をしても、第1の形式の浮動小数点データ
として必要な仮数部のビット幅に影響がないようにする
ことができる。このため、丸め処理を省略しても、高精
度を維持することが可能であるとともに、丸め処理を省
略できるので、浮動小数点乗算手段、浮動小数点加減算
手段の回路規模を小さくし、高速に演算が実施できるよ
うになる。
【0123】また、請求項6および請求項7の発明によ
れば、第1の形式の浮動小数点データと第2の形式の浮
動小数点データとの間の変換工程によって、汎用的に使
用されるプロセッサを使用して変換が高速であり、ま
た、精度の高い浮動小数点演算を実行することができ
る。
れば、第1の形式の浮動小数点データと第2の形式の浮
動小数点データとの間の変換工程によって、汎用的に使
用されるプロセッサを使用して変換が高速であり、ま
た、精度の高い浮動小数点演算を実行することができ
る。
【0124】また、請求項8および請求項9の発明によ
れば、従来と同程度の速度で、従来よりも高精度で分子
軌道計算を実行することができる。
れば、従来と同程度の速度で、従来よりも高精度で分子
軌道計算を実行することができる。
【0125】
【発明の実施の形態】以下、この発明による並列計算装
置および並列計算方法の実施の形態を、図を参照して説
明する。
置および並列計算方法の実施の形態を、図を参照して説
明する。
【0126】図1は、実施の形態の並列計算装置のシス
テム構成のブロック図である。この図1において、1は
ホストプロセッサであり、既存のパソコンやワークステ
ーションで構成される。2はプロセッサエレメントの例
としての専用プロセッサであり、システムに複数個用意
される。この複数個の専用プロセッサ2は、所定の個数
ごとにまとめられ、そのまとめられた単位はボード3と
して構成される。ホストプロセッサ1と、複数個のボー
ド3との間は、バス4によって接続される。
テム構成のブロック図である。この図1において、1は
ホストプロセッサであり、既存のパソコンやワークステ
ーションで構成される。2はプロセッサエレメントの例
としての専用プロセッサであり、システムに複数個用意
される。この複数個の専用プロセッサ2は、所定の個数
ごとにまとめられ、そのまとめられた単位はボード3と
して構成される。ホストプロセッサ1と、複数個のボー
ド3との間は、バス4によって接続される。
【0127】ここで、ボード3上では、バスプロトコル
変換用のバスブリッジを介してホストから出るバスとは
異なるバスを使用しても良いが、この例では、簡単のた
めに、ホストプロセッサ1から出るバスと、ボード3上
のバスとは同じものを使用するものとする。したがっ
て、この例では、バス4は、ホストプロセッサ1と、複
数個の専用プロセッサとの間を接続するものとなってい
る。
変換用のバスブリッジを介してホストから出るバスとは
異なるバスを使用しても良いが、この例では、簡単のた
めに、ホストプロセッサ1から出るバスと、ボード3上
のバスとは同じものを使用するものとする。したがっ
て、この例では、バス4は、ホストプロセッサ1と、複
数個の専用プロセッサとの間を接続するものとなってい
る。
【0128】この図1のシステムは、前述の文献2に記
載されているシステムと、ほぼ同じ方法で分子軌道計算
を実施する。まず、以下に、このシステムによる分子軌
道計算の実施手順を示す。
載されているシステムと、ほぼ同じ方法で分子軌道計算
を実施する。まず、以下に、このシステムによる分子軌
道計算の実施手順を示す。
【0129】(手順1)ボード3上に位置する複数の専
用プロセッサ2は、分子軌道計算で必要となる膨大な2
電子積分の計算を分担する。このため、まず、ホストプ
ロセッサ1は、各専用プロセッサ2での計算に必要とな
る原子の中心座標A、B、C、Dや、軌道指数ζ、さら
に、係数Cの値から、前述の(3)式によって求めた密
度行列Ptuなどの初期パラメータを、バス4を通し
て、予め、各専用プロセッサ2に送信する。各専用プロ
セッサ2では、受け取ったこれらの初期パラメータを、
内蔵するメモリに格納する。
用プロセッサ2は、分子軌道計算で必要となる膨大な2
電子積分の計算を分担する。このため、まず、ホストプ
ロセッサ1は、各専用プロセッサ2での計算に必要とな
る原子の中心座標A、B、C、Dや、軌道指数ζ、さら
に、係数Cの値から、前述の(3)式によって求めた密
度行列Ptuなどの初期パラメータを、バス4を通し
て、予め、各専用プロセッサ2に送信する。各専用プロ
セッサ2では、受け取ったこれらの初期パラメータを、
内蔵するメモリに格納する。
【0130】(手順2)次に、各専用プロセッサ2で
は、内蔵するメモリに格納された初期パラメータの値を
使用して、内蔵されている積和演算回路を使いながら、
誤差関数Fm(T)の計算や、前述の(9)式や(1
0)式で表される2電子積分の計算、および密度行列の
値を使用して、前述の(2)式で表されるフォック行列
要素を構成するgrsの計算を実施する。その後、各専
用プロセッサ2は、ホストプロセッサ1に対して、求め
たgrsの値をバス4を通して送り返す。
は、内蔵するメモリに格納された初期パラメータの値を
使用して、内蔵されている積和演算回路を使いながら、
誤差関数Fm(T)の計算や、前述の(9)式や(1
0)式で表される2電子積分の計算、および密度行列の
値を使用して、前述の(2)式で表されるフォック行列
要素を構成するgrsの計算を実施する。その後、各専
用プロセッサ2は、ホストプロセッサ1に対して、求め
たgrsの値をバス4を通して送り返す。
【0131】(手順3)ホストプロセッサ1では、前述
の(2)式に含まれるhrsを計算し、また、各専用プ
ロセッサ2から送り返されたgrsの値とともに、フォ
ック行列要素Frsを計算する。また、ホストプロセッ
サ1は、求めたフォック行列要素Frsの値を元にし
て、前述の(1)式の固有値問題を解き、新たな係数C
を求める。
の(2)式に含まれるhrsを計算し、また、各専用プ
ロセッサ2から送り返されたgrsの値とともに、フォ
ック行列要素Frsを計算する。また、ホストプロセッ
サ1は、求めたフォック行列要素Frsの値を元にし
て、前述の(1)式の固有値問題を解き、新たな係数C
を求める。
【0132】上に述べた手順1〜3を繰返すことによっ
て、SCF法が実現される。また、ホストプロセッサ1
は、求められた係数Cの値を、SCFの直前の繰り返し
で求められた係数の値と比較して、その差が十分に小さ
ければ、SCFの繰り返しを終了する。このシステムを
使って、以上のような手順で、計算を繰り返すことによ
り、分子のエネルギー値が求まる。
て、SCF法が実現される。また、ホストプロセッサ1
は、求められた係数Cの値を、SCFの直前の繰り返し
で求められた係数の値と比較して、その差が十分に小さ
ければ、SCFの繰り返しを終了する。このシステムを
使って、以上のような手順で、計算を繰り返すことによ
り、分子のエネルギー値が求まる。
【0133】ここで、この実施の形態では、ホストプロ
セッサ1で扱う第1の形式の浮動小数点データは、IE
EE規格795で定められている倍精度の浮動小数点デ
ータとする(以下、単に倍精度という)。すなわち、こ
の実施の形態では、ホストプロセッサ1で実施される浮
動小数点演算は、全て倍精度で行われる。また、初期パ
ラメータも倍精度で表されている。この精度は、前述も
したように、ホストプロセッサ1で行われる固有値の演
算精度を満足するものである。また、前述の誤差関数の
精度に必要となる初期パラメータの入力誤差も満足して
いる。
セッサ1で扱う第1の形式の浮動小数点データは、IE
EE規格795で定められている倍精度の浮動小数点デ
ータとする(以下、単に倍精度という)。すなわち、こ
の実施の形態では、ホストプロセッサ1で実施される浮
動小数点演算は、全て倍精度で行われる。また、初期パ
ラメータも倍精度で表されている。この精度は、前述も
したように、ホストプロセッサ1で行われる固有値の演
算精度を満足するものである。また、前述の誤差関数の
精度に必要となる初期パラメータの入力誤差も満足して
いる。
【0134】次に、専用プロセッサ2の構成について説
明する。図2は、この実施の形態で用いられている専用
プロセッサ2の内部構成を示したブロック図である。こ
の専用プロセッサ2では、後述するように、第1の形式
である倍精度の浮動小数点データよりも、仮数部のビッ
ト幅が大きい第2の形式の浮動小数点データを扱うもの
である。
明する。図2は、この実施の形態で用いられている専用
プロセッサ2の内部構成を示したブロック図である。こ
の専用プロセッサ2では、後述するように、第1の形式
である倍精度の浮動小数点データよりも、仮数部のビッ
ト幅が大きい第2の形式の浮動小数点データを扱うもの
である。
【0135】図2に示すように、専用プロセッサ2は、
バスインタフェース回路10と、入力データ変換回路1
1と、出力データ変換回路12と、積和演算回路20
と、メモリ30と、制御回路40と、プログラムメモリ
41とを備える。また、内部バス100、101、10
2と、メモリデータバス103と、メモリアドレスバス
104とを備える。
バスインタフェース回路10と、入力データ変換回路1
1と、出力データ変換回路12と、積和演算回路20
と、メモリ30と、制御回路40と、プログラムメモリ
41とを備える。また、内部バス100、101、10
2と、メモリデータバス103と、メモリアドレスバス
104とを備える。
【0136】バスインタフェース回路10は、バス4と
専用プロセッサ2とのインタフェースを行う。入力デー
タ変換回路11は、バス4から入力される第1の形式の
浮動小数点データを、第2の形式の浮動小数点データに
変換する。出力変換回路12は、演算結果をバス4へ出
力するために、第2の形式の浮動小数点データを、第1
の形式である倍精度の浮動小数点データに変換する。
専用プロセッサ2とのインタフェースを行う。入力デー
タ変換回路11は、バス4から入力される第1の形式の
浮動小数点データを、第2の形式の浮動小数点データに
変換する。出力変換回路12は、演算結果をバス4へ出
力するために、第2の形式の浮動小数点データを、第1
の形式である倍精度の浮動小数点データに変換する。
【0137】積和演算回路20は、第2の形式の浮動小
数点データについて積和演算を行うための回路で、第2
の形式の浮動小数点データを格納するレジスタ21と、
浮動小数点乗算を実行する乗算回路22と、浮動小数点
加減算を実行する加減算回路23とを備える。
数点データについて積和演算を行うための回路で、第2
の形式の浮動小数点データを格納するレジスタ21と、
浮動小数点乗算を実行する乗算回路22と、浮動小数点
加減算を実行する加減算回路23とを備える。
【0138】メモリ30は、演算前後の第2の形式の浮
動小数点データを格納する。制御回路40は、専用プロ
セッサ2の内部を制御する。プログラムメモリ41は、
制御回路40で実行されるプログラムを保持する。
動小数点データを格納する。制御回路40は、専用プロ
セッサ2の内部を制御する。プログラムメモリ41は、
制御回路40で実行されるプログラムを保持する。
【0139】内部バス100〜102は、積和演算回路
20に入力するデータを伝達するためのものである。メ
モリデータバス103は、メモリ30に入出力するデー
タを伝達する。メモリアドレスバス104は、メモリ3
0のアドレスを伝達する。なお、200は、バス4と入
出力を行うための入出力端子である。
20に入力するデータを伝達するためのものである。メ
モリデータバス103は、メモリ30に入出力するデー
タを伝達する。メモリアドレスバス104は、メモリ3
0のアドレスを伝達する。なお、200は、バス4と入
出力を行うための入出力端子である。
【0140】次に、以上のような構成の専用プロセッサ
2の機能について説明する。まず、ホストプロセッサ1
と専用プロセッサ2とのデータ入出力機能について述べ
る。
2の機能について説明する。まず、ホストプロセッサ1
と専用プロセッサ2とのデータ入出力機能について述べ
る。
【0141】専用プロセッサ2は、前述のように、第1
の形式である倍精度の浮動小数点データを、ホストプロ
セッサ1と入出力する。一方、専用プロセッサ2の内部
では、前述の通り、倍精度よりも高い精度の第2の形式
の浮動小数点フォーマットで演算を行うことが必要なの
で、この例では、倍精度の64ビットよりも大きい76
ビットの独自のフォーマット(以下、内部フォーマット
と呼ぶ)を用いて計算を行う。内部フォーマットに関す
る詳しい説明は、後述する。
の形式である倍精度の浮動小数点データを、ホストプロ
セッサ1と入出力する。一方、専用プロセッサ2の内部
では、前述の通り、倍精度よりも高い精度の第2の形式
の浮動小数点フォーマットで演算を行うことが必要なの
で、この例では、倍精度の64ビットよりも大きい76
ビットの独自のフォーマット(以下、内部フォーマット
と呼ぶ)を用いて計算を行う。内部フォーマットに関す
る詳しい説明は、後述する。
【0142】このため、ホストプロセッサ1から専用プ
ロセッサ2にデータを入力するときは、バスインタフェ
ース回路10で、バス4の伝送手順で入力される信号か
ら倍精度浮動小数点データを構成し、入力データ変換回
路12によって、倍精度浮動小数点データを76ビット
の内部フォーマットを持ったデータに変換し、この変換
後データをメモリデータバス103を経由してメモリ3
0に出力する。
ロセッサ2にデータを入力するときは、バスインタフェ
ース回路10で、バス4の伝送手順で入力される信号か
ら倍精度浮動小数点データを構成し、入力データ変換回
路12によって、倍精度浮動小数点データを76ビット
の内部フォーマットを持ったデータに変換し、この変換
後データをメモリデータバス103を経由してメモリ3
0に出力する。
【0143】これと同時に、バスインタフェース回路1
0は、バス4から指定されるメモリ30のアドレスを生
成して、メモリアドレスバス104を経由してメモリ3
0に供給する。その後、制御回路40は、適切な制御信
号を、メモリ30に供給することにより、76ビットデ
ータをメモリ30に書き込む。
0は、バス4から指定されるメモリ30のアドレスを生
成して、メモリアドレスバス104を経由してメモリ3
0に供給する。その後、制御回路40は、適切な制御信
号を、メモリ30に供給することにより、76ビットデ
ータをメモリ30に書き込む。
【0144】また、専用プロセッサ2からホストプロセ
ッサ1にデータを出力するときは、バスインタフェース
回路10で、バス4から指定されるメモリ30のアドレ
スを生成して、メモリ30に供給し、メモリデータバス
103を経由して、76ビットの内部フォーマットで表
されたデータを読み出す。その後、出力データ変換回路
11によって、このデータを倍精度浮動小数点データに
変換し、バスインタフェース回路10で、バス4の伝送
手順で入力される信号を生成して、バス4に出力する。
ッサ1にデータを出力するときは、バスインタフェース
回路10で、バス4から指定されるメモリ30のアドレ
スを生成して、メモリ30に供給し、メモリデータバス
103を経由して、76ビットの内部フォーマットで表
されたデータを読み出す。その後、出力データ変換回路
11によって、このデータを倍精度浮動小数点データに
変換し、バスインタフェース回路10で、バス4の伝送
手順で入力される信号を生成して、バス4に出力する。
【0145】次に、積和演算回路20の機能について説
明する。積和演算回路20は、制御回路40の制御を受
けながら、メモリ30やレジスタ21に格納された76
ビットの内部フォーマットで表された浮動小数点データ
を使用して積和演算を実行し、その結果を、メモリ30
やレジスタ21に格納する。このとき、プログラムメモ
リ41には、積和演算プログラムが予め格納されてお
り、制御回路40は、積和演算プログラムを順番に読み
出して、それに従った制御信号を生成することにより、
積和演算回路20やメモリ30を制御する。以下に、積
和演算回路20の各部分の機能をさらに詳しく述べる。
明する。積和演算回路20は、制御回路40の制御を受
けながら、メモリ30やレジスタ21に格納された76
ビットの内部フォーマットで表された浮動小数点データ
を使用して積和演算を実行し、その結果を、メモリ30
やレジスタ21に格納する。このとき、プログラムメモ
リ41には、積和演算プログラムが予め格納されてお
り、制御回路40は、積和演算プログラムを順番に読み
出して、それに従った制御信号を生成することにより、
積和演算回路20やメモリ30を制御する。以下に、積
和演算回路20の各部分の機能をさらに詳しく述べる。
【0146】レジスタ21あるいはメモリ30からは、
76ビットの内部フォーマットで表された浮動小数点デ
ータが、メモリデータバス103を経由して内部バス1
00〜102を通して積和演算回路20の内部の乗算回
路22、加減算回路23に供給される。
76ビットの内部フォーマットで表された浮動小数点デ
ータが、メモリデータバス103を経由して内部バス1
00〜102を通して積和演算回路20の内部の乗算回
路22、加減算回路23に供給される。
【0147】このとき、レジスタ21は、3ポートの読
み出しポートを有しており、各ポートから内部バス10
0〜102に、独立にデータが読み出される。さらに、
メモリ30から読み出されたデータは、メモリデータバ
ス103を通して、内部バス100〜102のどれかに
入力される。
み出しポートを有しており、各ポートから内部バス10
0〜102に、独立にデータが読み出される。さらに、
メモリ30から読み出されたデータは、メモリデータバ
ス103を通して、内部バス100〜102のどれかに
入力される。
【0148】読み出しを行うときのレジスタ21やメモ
リ30へのアドレス、制御信号は、ともに制御回路40
で、プログラムメモリ41の積和演算プログラムに従っ
て生成される。
リ30へのアドレス、制御信号は、ともに制御回路40
で、プログラムメモリ41の積和演算プログラムに従っ
て生成される。
【0149】積和演算回路20内部の乗算回路22、加
減算回路23は、内部バス100〜102を通して供給
されたデータを使用して積和演算を実行し、その演算結
果を出力する。図2に示すように、乗算回路22は、内
部バス101、102からデータを入力し、また、加減
算回路23は、乗算回路22の結果と内部バス100か
らデータを入力する。この構成によって積和演算が実現
され、加減算回路23の出力が、積和演算結果となって
出力される。
減算回路23は、内部バス100〜102を通して供給
されたデータを使用して積和演算を実行し、その演算結
果を出力する。図2に示すように、乗算回路22は、内
部バス101、102からデータを入力し、また、加減
算回路23は、乗算回路22の結果と内部バス100か
らデータを入力する。この構成によって積和演算が実現
され、加減算回路23の出力が、積和演算結果となって
出力される。
【0150】また、制御回路40は、積和演算プログラ
ムに従って、乗算回路22、加減算回路23の制御信号
を生成して、積和演算回路20に供給し、積和演算回路
20の動作タイミングを制御する。
ムに従って、乗算回路22、加減算回路23の制御信号
を生成して、積和演算回路20に供給し、積和演算回路
20の動作タイミングを制御する。
【0151】また、乗算回路22、加減算回路23は、
入力を、そのまま出力にバイパスする機能を備えてお
り、この機能は、制御回路40からの制御信号によって
制御される。加減算回路23の、乗算回路22からの入
力を、出力にバイパスすることにより乗算が実現され、
また、乗算回路22の片方の入力を出力にバイパスする
ことによって加算や減算が実現される。積和演算回路2
0の好適な構成として、この例では、パイプライン動作
するものが用いられる。
入力を、そのまま出力にバイパスする機能を備えてお
り、この機能は、制御回路40からの制御信号によって
制御される。加減算回路23の、乗算回路22からの入
力を、出力にバイパスすることにより乗算が実現され、
また、乗算回路22の片方の入力を出力にバイパスする
ことによって加算や減算が実現される。積和演算回路2
0の好適な構成として、この例では、パイプライン動作
するものが用いられる。
【0152】積和演算回路20で求められた演算結果
は、加減算回路23から出力され、レジスタ21、また
は、メモリ30に書き込まれる。メモリ30には、メモ
リデータバス103を経由して積和演算の結果が供給さ
れる。このときのレジスタ21やメモリ30へのアドレ
スおよび制御信号は、読み出し時と同様にして、積和演
算プログラムに基づいて、制御回路40によって生成さ
れ、供給される。
は、加減算回路23から出力され、レジスタ21、また
は、メモリ30に書き込まれる。メモリ30には、メモ
リデータバス103を経由して積和演算の結果が供給さ
れる。このときのレジスタ21やメモリ30へのアドレ
スおよび制御信号は、読み出し時と同様にして、積和演
算プログラムに基づいて、制御回路40によって生成さ
れ、供給される。
【0153】専用プロセッサ2は、以上のように動作す
るので、2電子積分の計算や、(2)式のgrsの計算
を行うことが可能である。そこで、次に、専用プロセッ
サ2が、以上述べた機能を使って、ホストプロセッサ1
から初期パラメータを受け取り、(2)式のgrsを計
算するまでの手順について説明する。
るので、2電子積分の計算や、(2)式のgrsの計算
を行うことが可能である。そこで、次に、専用プロセッ
サ2が、以上述べた機能を使って、ホストプロセッサ1
から初期パラメータを受け取り、(2)式のgrsを計
算するまでの手順について説明する。
【0154】専用プロセッサ2は、まず、軌道指数ζや
座標A、B、C、D、さらに密度行列Ptuや(42)
式に示したテーラー展開の係数などを、倍精度浮動小数
点データの形式で、ホストプロセッサ1から受け取り、
入力データ変換回路11で、76ビットの内部フォーマ
ットに変換した後、メモリ30に格納する。
座標A、B、C、D、さらに密度行列Ptuや(42)
式に示したテーラー展開の係数などを、倍精度浮動小数
点データの形式で、ホストプロセッサ1から受け取り、
入力データ変換回路11で、76ビットの内部フォーマ
ットに変換した後、メモリ30に格納する。
【0155】次に、予め、プログラムメモリ41に格納
された積和演算プログラムの計算手順に従って、メモリ
30に格納した初期パラメータを読み出しながら、積和
演算回路20を使用して、前述した(1)〜(28)式
の通りに、誤差関数Fm(T)、(s*s*,s*s
*)(m) の値、2電子積分の値、grsの値を順番に計
算し、求められたgrsの値をメモリ30に書き込む。
このときの演算は、全て76ビットの内部フォーマット
を使用して行われる。
された積和演算プログラムの計算手順に従って、メモリ
30に格納した初期パラメータを読み出しながら、積和
演算回路20を使用して、前述した(1)〜(28)式
の通りに、誤差関数Fm(T)、(s*s*,s*s
*)(m) の値、2電子積分の値、grsの値を順番に計
算し、求められたgrsの値をメモリ30に書き込む。
このときの演算は、全て76ビットの内部フォーマット
を使用して行われる。
【0156】また、この計算の途中で現れる中間結果
は、レジスタ21やメモリ30に格納して使用する。さ
らに、(25)式に現れる(1/2)乗の逆数は、ニュ
ートン法により、(27)式に現れるexp計算は、テ
ーラー展開により、前述した逆数や誤差関数の計算と同
様に、積和演算の繰り返しによって計算される。したが
って、全ての計算は、積和演算回路20を使って求めら
れる。
は、レジスタ21やメモリ30に格納して使用する。さ
らに、(25)式に現れる(1/2)乗の逆数は、ニュ
ートン法により、(27)式に現れるexp計算は、テ
ーラー展開により、前述した逆数や誤差関数の計算と同
様に、積和演算の繰り返しによって計算される。したが
って、全ての計算は、積和演算回路20を使って求めら
れる。
【0157】最後に、このようにしてメモリ30に格納
された内部フォーマットのgrsの値を、出力データ変
換回路12で、倍精度浮動小数点データに変換した後、
バスインタフェース回路10によってバス4に出力し、
ホストプロセッサ1に送る。以上のような計算手順によ
って、上述の実施の形態のシステムを用いた分子軌道計
算が実現される。
された内部フォーマットのgrsの値を、出力データ変
換回路12で、倍精度浮動小数点データに変換した後、
バスインタフェース回路10によってバス4に出力し、
ホストプロセッサ1に送る。以上のような計算手順によ
って、上述の実施の形態のシステムを用いた分子軌道計
算が実現される。
【0158】次に、この実施の形態で使用する、76ビ
ット浮動小数点の内部フォーマットについて説明する。
図3(A)に、IEEE規格754で決められている倍
精度浮動小数点のフォーマットを、また、図3(B)
に、この実施の形態で使用する専用プロセッサ2の内部
フォーマットを、それぞれ示す。
ット浮動小数点の内部フォーマットについて説明する。
図3(A)に、IEEE規格754で決められている倍
精度浮動小数点のフォーマットを、また、図3(B)
に、この実施の形態で使用する専用プロセッサ2の内部
フォーマットを、それぞれ示す。
【0159】まず、IEEE規格754で定められてい
る倍精度浮動小数点フォーマットについて説明する。図
3(A)に示したこのフォーマットは、1ビットの符号
部sと、11ビットの指数部eと、52ビットの仮数部
f0とからなる。このフォーマットによって表現される
実数vは、図3(A)に示した式に基づいて計算され
る。
る倍精度浮動小数点フォーマットについて説明する。図
3(A)に示したこのフォーマットは、1ビットの符号
部sと、11ビットの指数部eと、52ビットの仮数部
f0とからなる。このフォーマットによって表現される
実数vは、図3(A)に示した式に基づいて計算され
る。
【0160】すなわち、この倍精度浮動小数点のフォー
マットで、0以外の実数vを、浮動小数点で表現すると
きは、 v=(−1)sign×2exp ×(1.xxx...) (48) と正規化し、signを符号部sに、2進数で表された
最も右側の(1.xxx...)の部分の小数点以下の
部分xxx...のうち上位52ビットを仮数部f0
に、また、正規化するための指数expを指数部eに、
それぞれ格納する。
マットで、0以外の実数vを、浮動小数点で表現すると
きは、 v=(−1)sign×2exp ×(1.xxx...) (48) と正規化し、signを符号部sに、2進数で表された
最も右側の(1.xxx...)の部分の小数点以下の
部分xxx...のうち上位52ビットを仮数部f0
に、また、正規化するための指数expを指数部eに、
それぞれ格納する。
【0161】但し、expの値は負になりうるため、予
め、1023のオフセットが加えられて、指数部eに格
納される。このことにより、指数部eの値を1〜204
6として、expの値は、−1022〜+1023の範
囲で指定することができる。
め、1023のオフセットが加えられて、指数部eに格
納される。このことにより、指数部eの値を1〜204
6として、expの値は、−1022〜+1023の範
囲で指定することができる。
【0162】また、指数部eの値が0のときには、特別
な数字を表しており、そのときの仮数部f0が0なら実
数v=0であり、そのときの仮数部f0が0でないとき
には、実数vは、(48)式に示した正規化ができない
ほど、その絶対値が小さい数を表すものとされる(非正
規化数と呼ぶ)。
な数字を表しており、そのときの仮数部f0が0なら実
数v=0であり、そのときの仮数部f0が0でないとき
には、実数vは、(48)式に示した正規化ができない
ほど、その絶対値が小さい数を表すものとされる(非正
規化数と呼ぶ)。
【0163】また、指数部eの値が2047のときにも
特別な数字を表しており、そのときの仮数部f0が0な
ら実数v=±∞であり、そのときの仮数部f0が0でな
ければ、実数vは、例えば0×∞の計算を行った結果の
ように、不定となった数を表すものとされる。
特別な数字を表しており、そのときの仮数部f0が0な
ら実数v=±∞であり、そのときの仮数部f0が0でな
ければ、実数vは、例えば0×∞の計算を行った結果の
ように、不定となった数を表すものとされる。
【0164】次に、この実施の形態の専用プロセッサ2
の内部フォーマットの浮動小数点表現について説明す
る。
の内部フォーマットの浮動小数点表現について説明す
る。
【0165】図3(B)に示したように、この内部フォ
ーマットの浮動小数点データは、1ビットの符号部s
と、11ビットの指数部eと、64ビットの仮数部f1
とからなる。1ビットの符号部sと、11ビットの指数
部eは、上述した倍精度浮動小数点フォーマットの符号
部sと、指数部eと同じ構成である。ただし、仮数部f
1は64ビットとされて、倍精度浮動小数点フォーマッ
トよりも高精度の浮動小数点フォーマットとしている。
ーマットの浮動小数点データは、1ビットの符号部s
と、11ビットの指数部eと、64ビットの仮数部f1
とからなる。1ビットの符号部sと、11ビットの指数
部eは、上述した倍精度浮動小数点フォーマットの符号
部sと、指数部eと同じ構成である。ただし、仮数部f
1は64ビットとされて、倍精度浮動小数点フォーマッ
トよりも高精度の浮動小数点フォーマットとしている。
【0166】この内部フォーマットの指数部eには、e
=0、e=2047の場合を除き、倍精度表現と同じ意
味の値が格納される。さらに、仮数部f1は、実数v
を、前述した(48)式のように正規化したときに、
1.xxx...のうちのxxx...の部分の上位6
4ビットを格納したものとなる。
=0、e=2047の場合を除き、倍精度表現と同じ意
味の値が格納される。さらに、仮数部f1は、実数v
を、前述した(48)式のように正規化したときに、
1.xxx...のうちのxxx...の部分の上位6
4ビットを格納したものとなる。
【0167】この内部フォーマットは倍精度浮動小数点
と異なり、非正規化数、不定の数に対する表現は持たな
い。したがって、仮数部f1の値が0であるか否かに拘
らず、指数部e=0のときには、実数v=0であり、ま
た、指数部e=2047のときには、実数v=±∞を表
しているものとする。
と異なり、非正規化数、不定の数に対する表現は持たな
い。したがって、仮数部f1の値が0であるか否かに拘
らず、指数部e=0のときには、実数v=0であり、ま
た、指数部e=2047のときには、実数v=±∞を表
しているものとする。
【0168】この内部フォーマットのように64ビット
の仮数部を持たせると、小数点の上位にある1も含めて
65ビットの精度となるため、前述のように誤差関数の
計算に必要となる62ビットの仮数部の精度を満足して
いる。この場合に、本来ならば、仮数部の精度は、62
ビット丁度あれば良いが、この実施の形態では、仮数部
の長さを2の冪乗の数とすることによって、回路が構成
しやすい場合があるため、3ビット余裕を持たせて64
ビットとしている。
の仮数部を持たせると、小数点の上位にある1も含めて
65ビットの精度となるため、前述のように誤差関数の
計算に必要となる62ビットの仮数部の精度を満足して
いる。この場合に、本来ならば、仮数部の精度は、62
ビット丁度あれば良いが、この実施の形態では、仮数部
の長さを2の冪乗の数とすることによって、回路が構成
しやすい場合があるため、3ビット余裕を持たせて64
ビットとしている。
【0169】次に、この実施の形態の専用プロセッサ2
の内部フォーマットを決定した背景について述べる。
の内部フォーマットを決定した背景について述べる。
【0170】特に、この実施の形態の専用プロセッサの
内部フォーマットは、仮数部が64ビットにも拘わら
ず、従来の4倍精度フォーマットなどとは異なり、指数
部eの長さが、IEEE754規格の倍精度フォーマッ
トと同じになっている。
内部フォーマットは、仮数部が64ビットにも拘わら
ず、従来の4倍精度フォーマットなどとは異なり、指数
部eの長さが、IEEE754規格の倍精度フォーマッ
トと同じになっている。
【0171】この実施の形態のように、特定のアルゴリ
ズムに従って動作する専用計算機のプロセッサは、ある
程度、決められた範囲の値を入力して、特定の手順で計
算を行うので、その計算の途中結果が取り得る範囲は限
定されている。このため、アルゴリズムの工夫などによ
って、内部表現の指数部は、倍精度の浮動小数点表現と
同様の11ビットで表現することが可能である。このこ
とにより、内部フォーマットとしての第2の形式の浮動
小数点データを短くでき、このデータを格納するメモリ
容量を減少させることができるとともに、前述したオフ
セットの値も同じ1023にできるため、指数を計算す
る回路規模も減少させることができる。
ズムに従って動作する専用計算機のプロセッサは、ある
程度、決められた範囲の値を入力して、特定の手順で計
算を行うので、その計算の途中結果が取り得る範囲は限
定されている。このため、アルゴリズムの工夫などによ
って、内部表現の指数部は、倍精度の浮動小数点表現と
同様の11ビットで表現することが可能である。このこ
とにより、内部フォーマットとしての第2の形式の浮動
小数点データを短くでき、このデータを格納するメモリ
容量を減少させることができるとともに、前述したオフ
セットの値も同じ1023にできるため、指数を計算す
る回路規模も減少させることができる。
【0172】また、この内部フォーマットを使用した場
合、ホストプロセッサ1から専用プロセッサ2に送付さ
れる初期パラメータに、万が一、∞や不定が混入してい
た場合には、エラーを出して計算自体を無効にするなど
の措置をホストプロセッサ1で講じれば良いので、専用
プロセッサ2に対して、∞や不定は送付されないとみな
すことができる。
合、ホストプロセッサ1から専用プロセッサ2に送付さ
れる初期パラメータに、万が一、∞や不定が混入してい
た場合には、エラーを出して計算自体を無効にするなど
の措置をホストプロセッサ1で講じれば良いので、専用
プロセッサ2に対して、∞や不定は送付されないとみな
すことができる。
【0173】また、初期パラメータに、万が一、非正規
化数が出てくる場合にも、ホストプロセッサ1で、予
め、値に定数をかけて、非正規化数でないようにすれば
良い。あるいは専用プロセッサ2で、0とみなしても良
い場合には、非正規化数でなく、0の値として送付すれ
ば良い。
化数が出てくる場合にも、ホストプロセッサ1で、予
め、値に定数をかけて、非正規化数でないようにすれば
良い。あるいは専用プロセッサ2で、0とみなしても良
い場合には、非正規化数でなく、0の値として送付すれ
ば良い。
【0174】さらに、きわめてまれに、専用プロセッサ
2での計算の途中結果が、11ビットの指数部eで表せ
ないような非常に小さい数になる場合、あるいは非常に
大きい数になる場合や、乗算器で0×∞などの計算が発
生することもあり得る。このような場合は、積和演算回
路20による計算結果の指数部eが、0か、あるいは2
047かを判定することで検出できる。
2での計算の途中結果が、11ビットの指数部eで表せ
ないような非常に小さい数になる場合、あるいは非常に
大きい数になる場合や、乗算器で0×∞などの計算が発
生することもあり得る。このような場合は、積和演算回
路20による計算結果の指数部eが、0か、あるいは2
047かを判定することで検出できる。
【0175】したがって、専用プロセッサ2は、指数部
eが0か、あるいは2047かを判定することにより、
このような場合を検出したら、非正規化数や不定をホス
トプロセッサ1に送付することなく、専用プロセッサ2
からホストプロセッサ1に割り込みを発生したり、特定
のフラグを立てるなどして通知するようにすることがで
きる。この通知を受けたホストプロセッサ1では、エラ
ーを発生させたり、計算結果を0にするなど、適切に処
理することができる。
eが0か、あるいは2047かを判定することにより、
このような場合を検出したら、非正規化数や不定をホス
トプロセッサ1に送付することなく、専用プロセッサ2
からホストプロセッサ1に割り込みを発生したり、特定
のフラグを立てるなどして通知するようにすることがで
きる。この通知を受けたホストプロセッサ1では、エラ
ーを発生させたり、計算結果を0にするなど、適切に処
理することができる。
【0176】以上のようにして、この実施の形態の76
ビットの内部フォーマットでは、非正規化数や不定に対
する表現は持たず、非常に小さい数は0、非常に大きい
数や不定の数は∞とみなすことで不都合を生じないよう
にしている。
ビットの内部フォーマットでは、非正規化数や不定に対
する表現は持たず、非常に小さい数は0、非常に大きい
数や不定の数は∞とみなすことで不都合を生じないよう
にしている。
【0177】このように、IEEE規格754では、指
数部eと仮数部f0の両方によって、0や非正規化数、
あるいは∞や不定を表しているが、この実施の形態の専
用プロセッサ2の内部フォーマットの場合には、非正規
化数や不定に対する表現は不要であり、この結果、内部
フォーマットでは指数部eの値が,0あるいは2047
のときには、仮数部f1の値に関係なく、0と∞を表す
ようにしている。したがって、積和演算回路20の乗算
回路22や加減算回路23中の例外的な処理を実施する
ための回路が単純になる。
数部eと仮数部f0の両方によって、0や非正規化数、
あるいは∞や不定を表しているが、この実施の形態の専
用プロセッサ2の内部フォーマットの場合には、非正規
化数や不定に対する表現は不要であり、この結果、内部
フォーマットでは指数部eの値が,0あるいは2047
のときには、仮数部f1の値に関係なく、0と∞を表す
ようにしている。したがって、積和演算回路20の乗算
回路22や加減算回路23中の例外的な処理を実施する
ための回路が単純になる。
【0178】次に、この実施の形態において、76ビッ
ト内部フォーマットを用いた乗算、加減算の方法につい
て説明する。
ト内部フォーマットを用いた乗算、加減算の方法につい
て説明する。
【0179】まず、図4を参照して、乗算回路22の構
成と動作について説明する。この実施の形態で使用され
る乗算回路22は、図4のブロック図に示すように、乗
算コア回路300と、オール0判定回路301、302
と、オール1判定回路303、304と、オアゲート3
10、311、312と、マルチプレクサ313、31
4、315とからなる。
成と動作について説明する。この実施の形態で使用され
る乗算回路22は、図4のブロック図に示すように、乗
算コア回路300と、オール0判定回路301、302
と、オール1判定回路303、304と、オアゲート3
10、311、312と、マルチプレクサ313、31
4、315とからなる。
【0180】乗算コア回路300は、76ビットの内部
フォーマットで表された入力Aと、入力Bの浮動小数点
データどうしの乗算を行う。
フォーマットで表された入力Aと、入力Bの浮動小数点
データどうしの乗算を行う。
【0181】オール0判定回路301および302は、
76ビットの内部フォーマットで表現された入力Aおよ
び入力Bの11ビットの指数部を、それぞれ入力として
受けて、その値が全て0のときだけ、出力を“1”にす
る。また、オール1判定回路303および304は、入
力Aおよび入力Bの11ビットの指数部を、それぞれ入
力として受けて、その値が全て1のときだけ、出力を
“1”にする。
76ビットの内部フォーマットで表現された入力Aおよ
び入力Bの11ビットの指数部を、それぞれ入力として
受けて、その値が全て0のときだけ、出力を“1”にす
る。また、オール1判定回路303および304は、入
力Aおよび入力Bの11ビットの指数部を、それぞれ入
力として受けて、その値が全て1のときだけ、出力を
“1”にする。
【0182】オアゲート310は、乗算コア回路300
のアンダーフロー出力ufと、オール0判定回路30
1、302の出力の論理和をとる。オアゲート311
は、乗算コア回路300のオーバーフロー出力ofと、
オール1判定回路303、304の出力の論理和をと
る。さらに、オアゲート312は、オアゲート310と
311の論理和をとる。
のアンダーフロー出力ufと、オール0判定回路30
1、302の出力の論理和をとる。オアゲート311
は、乗算コア回路300のオーバーフロー出力ofと、
オール1判定回路303、304の出力の論理和をと
る。さらに、オアゲート312は、オアゲート310と
311の論理和をとる。
【0183】マルチプレクサ313は、オアゲート31
0および311の出力を2ビットの選択制御信号SE1
として受けて、オール0と、オール1と、乗算コア回路
300の乗算出力M1のうちの指数部データとの3通り
の11ビットの指数部データのうちの1つを選び出す。
0および311の出力を2ビットの選択制御信号SE1
として受けて、オール0と、オール1と、乗算コア回路
300の乗算出力M1のうちの指数部データとの3通り
の11ビットの指数部データのうちの1つを選び出す。
【0184】マルチプレクサ314は、オアゲート31
2の出力を選択制御信号SE2として受けて、オール0
と、乗算コア回路300の乗算出力M1のうちの仮数部
データとの2通りの64ビットの仮数部のうちの1つを
選び出す。
2の出力を選択制御信号SE2として受けて、オール0
と、乗算コア回路300の乗算出力M1のうちの仮数部
データとの2通りの64ビットの仮数部のうちの1つを
選び出す。
【0185】また、マルチプレクサ315は、乗算回路
22の出力MOとする76ビットの内部フォーマットで
表現された浮動小数点データを、2通りのデータから選
択する。選択される2通りのデータの一方は、乗算回路
22をバイパスするときの入力Aである。他方は、乗算
コア回路300の乗算出力M1のうちの符号部と、マル
チプレクサ313で選択された指数部と、マルチプレク
サ314で選択された仮数部からなる76ビットの内部
フォーマットで表現された最終乗算結果M2である。
22の出力MOとする76ビットの内部フォーマットで
表現された浮動小数点データを、2通りのデータから選
択する。選択される2通りのデータの一方は、乗算回路
22をバイパスするときの入力Aである。他方は、乗算
コア回路300の乗算出力M1のうちの符号部と、マル
チプレクサ313で選択された指数部と、マルチプレク
サ314で選択された仮数部からなる76ビットの内部
フォーマットで表現された最終乗算結果M2である。
【0186】マルチプレクサ315は、制御回路40か
ら入力する選択制御信号によって、出力MOとして最終
乗算結果M2を出力するか、バイパス入力データAを出
力するかを選択する。
ら入力する選択制御信号によって、出力MOとして最終
乗算結果M2を出力するか、バイパス入力データAを出
力するかを選択する。
【0187】次に、以上のような構成の乗算回路22の
動作について、説明する。まず、内部フォーマットで表
された2つの入力Aと入力Bとは、乗算コア回路300
によって乗算が行われ、内部フォーマットで表された乗
算結果M1が、乗算コア回路300から出力される。
動作について、説明する。まず、内部フォーマットで表
された2つの入力Aと入力Bとは、乗算コア回路300
によって乗算が行われ、内部フォーマットで表された乗
算結果M1が、乗算コア回路300から出力される。
【0188】この際、乗算コア回路300においては、
2入力A,Bの仮数部どうしの乗算結果は、丸められて
乗算結果M1の仮数部が得られる。この丸めにより、6
5ビットの演算精度が得られる。また、乗算コア回路3
00から出力される内部フォーマットの乗算結果M1の
指数部と仮数部とは、乗算コア回路300の入力および
出力の指数部eフィールドが、1〜2046の範囲にあ
る場合だけに対して正しい結果となっていれば良い。
2入力A,Bの仮数部どうしの乗算結果は、丸められて
乗算結果M1の仮数部が得られる。この丸めにより、6
5ビットの演算精度が得られる。また、乗算コア回路3
00から出力される内部フォーマットの乗算結果M1の
指数部と仮数部とは、乗算コア回路300の入力および
出力の指数部eフィールドが、1〜2046の範囲にあ
る場合だけに対して正しい結果となっていれば良い。
【0189】ここで、図3に示したように、内部フォー
マットは、倍精度浮動小数点の仮数部のビット幅を拡張
しただけなので、このような乗算コア回路は、従来公知
の倍精度浮動小数点に用いる乗算回路を用いて、その仮
数部のビット幅を単純に拡張するだけで構成できる。し
たがって、この実施の形態における乗算コア回路300
の内部構成の詳細は省略する。
マットは、倍精度浮動小数点の仮数部のビット幅を拡張
しただけなので、このような乗算コア回路は、従来公知
の倍精度浮動小数点に用いる乗算回路を用いて、その仮
数部のビット幅を単純に拡張するだけで構成できる。し
たがって、この実施の形態における乗算コア回路300
の内部構成の詳細は省略する。
【0190】また、乗算コア回路300では、(1×2
-1000 )どうしの乗算のように、入力Aと入力Bとは内
部フォーマットで表されているにも拘わらず、指数部が
11ビットの範囲を超えてしまうために、乗算出力が内
部フォーマットで表せないほど小さくなる(アンダーフ
ローする)場合には、アンダーフロー出力ufから
“1”が出力される。
-1000 )どうしの乗算のように、入力Aと入力Bとは内
部フォーマットで表されているにも拘わらず、指数部が
11ビットの範囲を超えてしまうために、乗算出力が内
部フォーマットで表せないほど小さくなる(アンダーフ
ローする)場合には、アンダーフロー出力ufから
“1”が出力される。
【0191】また、(1×2+1000 )どうしの乗算のよ
うに、入力Aと入力Bとは内部フォーマットで表される
にも拘わらず、指数部が11ビットの範囲を超えてしま
うために、乗算出力が内部フォーマットで表せないほど
大きくなる(オーバーフローする)場合には、オーバー
フロー出力ofから“1”が出力される。
うに、入力Aと入力Bとは内部フォーマットで表される
にも拘わらず、指数部が11ビットの範囲を超えてしま
うために、乗算出力が内部フォーマットで表せないほど
大きくなる(オーバーフローする)場合には、オーバー
フロー出力ofから“1”が出力される。
【0192】さらに、内部フォーマットの入力A、入力
Bの指数部は、オール0判定回路301、302および
オール1判定回路303、304に入力されているた
め、オール0判定回路301からは、入力Aが0のと
き、“1”が出力され、また、オール0判定回路302
からは、入力Bが0のとき、“1”が出力され、また、
オール1判定回路303からは、入力Aが∞のとき、
“1”が出力され、また、オール1判定回路304から
は、入力Bが∞のとき、“1”が出力される。
Bの指数部は、オール0判定回路301、302および
オール1判定回路303、304に入力されているた
め、オール0判定回路301からは、入力Aが0のと
き、“1”が出力され、また、オール0判定回路302
からは、入力Bが0のとき、“1”が出力され、また、
オール1判定回路303からは、入力Aが∞のとき、
“1”が出力され、また、オール1判定回路304から
は、入力Bが∞のとき、“1”が出力される。
【0193】次に、乗算コア回路300によって生成さ
れた内部フォーマットの乗算結果M1から、内部フォー
マットの最終乗算結果M2を生成する方法について述べ
る。
れた内部フォーマットの乗算結果M1から、内部フォー
マットの最終乗算結果M2を生成する方法について述べ
る。
【0194】まず、乗算結果M1の符号部は、そのま
ま、最終乗算結果M2の符号部となる。
ま、最終乗算結果M2の符号部となる。
【0195】次に、最終乗算結果M2の指数部は、マル
チプレクサ313によって出力される。このとき、オア
ゲート310には、乗算コア回路300のアンダーフロ
ー出力ufと、オール0判定回路301、302の判定
結果とが入力されているため、乗算がアンダーフローし
た場合、あるいは入力Aか入力Bが0の場合に、オアゲ
ート310の出力は“1”になる。また、オアゲート3
11には、乗算コア回路300のオーバーフロー出力o
fと、オール1判定回路303、304の判定結果とが
入力されているため、乗算がオーバーフローした場合、
あるいは入力Aか入力Bが∞の場合に“1”になる。
チプレクサ313によって出力される。このとき、オア
ゲート310には、乗算コア回路300のアンダーフロ
ー出力ufと、オール0判定回路301、302の判定
結果とが入力されているため、乗算がアンダーフローし
た場合、あるいは入力Aか入力Bが0の場合に、オアゲ
ート310の出力は“1”になる。また、オアゲート3
11には、乗算コア回路300のオーバーフロー出力o
fと、オール1判定回路303、304の判定結果とが
入力されているため、乗算がオーバーフローした場合、
あるいは入力Aか入力Bが∞の場合に“1”になる。
【0196】これらのオアゲート310、311の出力
は、2ビットの選択制御信号SE1としてまとめられ、
マルチプレクサ313に入力されている。そして、マル
チプレクサ313からは、選択制御信号SE1が“0
0”のときには乗算結果M1の指数部が出力され、“1
0”のときには11ビットの0(オール0)が出力さ
れ、それ以外のときには11ビットの1(オール1)が
出力される。
は、2ビットの選択制御信号SE1としてまとめられ、
マルチプレクサ313に入力されている。そして、マル
チプレクサ313からは、選択制御信号SE1が“0
0”のときには乗算結果M1の指数部が出力され、“1
0”のときには11ビットの0(オール0)が出力さ
れ、それ以外のときには11ビットの1(オール1)が
出力される。
【0197】さらに、最終乗算結果M2の仮数部として
は、マルチプレクサ314から、オアゲート312から
の選択制御信号SE2に応じ、信号SE2が“0”のと
きには乗算結果M1の仮数部が、“1”のときには64
ビットの0(オール0)が出力される。オアゲート31
2は、オアゲート310、311の論理和出力を選択制
御信号SE2として出力するので、乗算結果がオーバー
フローした場合、またはアンダーフローした場合、また
は、入力A、入力Bのうち、0か∞のものが1つでもあ
る場合に、選択制御信号SE2が“1”になり、マルチ
プレクサ314からは最終乗算結果M2の仮数部として
64ビットの0が出力され、その他のときには、乗算結
果M1の仮数部が出力される。
は、マルチプレクサ314から、オアゲート312から
の選択制御信号SE2に応じ、信号SE2が“0”のと
きには乗算結果M1の仮数部が、“1”のときには64
ビットの0(オール0)が出力される。オアゲート31
2は、オアゲート310、311の論理和出力を選択制
御信号SE2として出力するので、乗算結果がオーバー
フローした場合、またはアンダーフローした場合、また
は、入力A、入力Bのうち、0か∞のものが1つでもあ
る場合に、選択制御信号SE2が“1”になり、マルチ
プレクサ314からは最終乗算結果M2の仮数部として
64ビットの0が出力され、その他のときには、乗算結
果M1の仮数部が出力される。
【0198】以上の結果、乗算結果M1がオーバーフロ
ーもアンダーフローもせず、また、入力Aも入力Bも0
や∞でない場合には、選択制御信号SE1は“00”、
選択制御信号SE2は“0”になるので、最終乗算結果
M2には乗算結果M1が、そのまま出力される。
ーもアンダーフローもせず、また、入力Aも入力Bも0
や∞でない場合には、選択制御信号SE1は“00”、
選択制御信号SE2は“0”になるので、最終乗算結果
M2には乗算結果M1が、そのまま出力される。
【0199】また、乗算結果がアンダーフローするか、
または、入力Aか入力Bが、0の場合で、かつ、入力
A,Bのどちらも∞でない場合には、選択制御信号SE
1が“10”、選択制御信号SE2が“1”になるの
で、最終乗算結果M2の指数部は0になって、内部フォ
ーマットの0になる。なお、最終乗算結果M2の仮数部
も、マルチプレクサ314によって0になるので、後述
するように、内部フォーマットの64ビット仮数部から
上位52ビットを抽出することにより、IEEE規格7
54の倍精度浮動小数点数を取り出しても、0を表す表
現となっている。
または、入力Aか入力Bが、0の場合で、かつ、入力
A,Bのどちらも∞でない場合には、選択制御信号SE
1が“10”、選択制御信号SE2が“1”になるの
で、最終乗算結果M2の指数部は0になって、内部フォ
ーマットの0になる。なお、最終乗算結果M2の仮数部
も、マルチプレクサ314によって0になるので、後述
するように、内部フォーマットの64ビット仮数部から
上位52ビットを抽出することにより、IEEE規格7
54の倍精度浮動小数点数を取り出しても、0を表す表
現となっている。
【0200】また、乗算結果がオーバーフローするか、
または、入力Aか入力Bが∞の場合で、かつ、入力A,
Bのどちらも0でない場合には、選択制御信号SE1が
“01”、選択制御信号SE2が“1”になるので、最
終乗算結果M2の指数部は、2047となり、内部フォ
ーマットの∞になる。なお、最終乗算結果M2の仮数部
も、マルチプレクサ314によって0になるので、後述
するように、内部フォーマットの64ビット仮数部から
上位52ビットを抽出してIEEE規格754の倍精度
浮動小数点数を取り出しても、∞を表す表現となってい
る。
または、入力Aか入力Bが∞の場合で、かつ、入力A,
Bのどちらも0でない場合には、選択制御信号SE1が
“01”、選択制御信号SE2が“1”になるので、最
終乗算結果M2の指数部は、2047となり、内部フォ
ーマットの∞になる。なお、最終乗算結果M2の仮数部
も、マルチプレクサ314によって0になるので、後述
するように、内部フォーマットの64ビット仮数部から
上位52ビットを抽出してIEEE規格754の倍精度
浮動小数点数を取り出しても、∞を表す表現となってい
る。
【0201】さらに、入力Aと入力Bの一方が0、他方
が∞の場合には、選択制御信号SE1が“11”、選択
制御信号SE2が“1”になるため、最終乗算結果M2
は、上述の∞を出力するときと同じ出力になる。この場
合は、結果を不定にするべきところで、IEEE規格7
54で∞を表す表現となっている。しかし、この実施の
形態のようなシステムでは、∞と不定とを区別する必要
がないので、このまま出力すれば良い。
が∞の場合には、選択制御信号SE1が“11”、選択
制御信号SE2が“1”になるため、最終乗算結果M2
は、上述の∞を出力するときと同じ出力になる。この場
合は、結果を不定にするべきところで、IEEE規格7
54で∞を表す表現となっている。しかし、この実施の
形態のようなシステムでは、∞と不定とを区別する必要
がないので、このまま出力すれば良い。
【0202】最後に、最終乗算結果M2は、マルチプレ
クサ315によって、入力Aのバイパスデータとの間で
選択される一方の出力MOとして出力される。ここで、
入力Aのバイパス路は、前述のように、加減算命令を実
行する場合などのように、バイパスを行うために設けら
れている。
クサ315によって、入力Aのバイパスデータとの間で
選択される一方の出力MOとして出力される。ここで、
入力Aのバイパス路は、前述のように、加減算命令を実
行する場合などのように、バイパスを行うために設けら
れている。
【0203】なお、前述の選択制御信号SE1は、フラ
グ信号FLAG1としても出力され、図2に示した破線
の経路を通じて制御回路40に入力される。制御回路4
0は、このフラグ信号FLAG1による割り込みなどに
よって、乗算結果が0や∞になったことを検知して、そ
れに対応した適当な処理プログラムを実行することがで
きる。
グ信号FLAG1としても出力され、図2に示した破線
の経路を通じて制御回路40に入力される。制御回路4
0は、このフラグ信号FLAG1による割り込みなどに
よって、乗算結果が0や∞になったことを検知して、そ
れに対応した適当な処理プログラムを実行することがで
きる。
【0204】以上のように、上に述べた乗算回路は、公
知の倍精度浮動小数点乗算回路に対してほぼ必要な精度
を満足するビット数だけを拡張した構成をとるので、回
路規模の増加を最小限に抑えることができ、かつ必要な
精度の計算を高速に実施することができる。
知の倍精度浮動小数点乗算回路に対してほぼ必要な精度
を満足するビット数だけを拡張した構成をとるので、回
路規模の増加を最小限に抑えることができ、かつ必要な
精度の計算を高速に実施することができる。
【0205】次に、図5を参照しながら加減算回路23
の構成と動作について説明する。この実施の形態で使用
される加減算回路23は、図5のブロック図に示すよう
に、加減算コア回路400と、オール1判定回路40
1、402と、オアゲート411、412と、マルチプ
レクサ413、414、415とからなる。
の構成と動作について説明する。この実施の形態で使用
される加減算回路23は、図5のブロック図に示すよう
に、加減算コア回路400と、オール1判定回路40
1、402と、オアゲート411、412と、マルチプ
レクサ413、414、415とからなる。
【0206】加減算コア回路400は、76ビットの内
部フォーマットで表された入力Aと、入力Bの浮動小数
点データどうしの加減算を行う。オール1判定回路40
1、402は、76ビットの内部フォーマットで表され
た入力Aおよび入力Bの11ビットの指数部を、それぞ
れ入力として受けて、その値が全て1のときだけ、出力
を“1”にする。
部フォーマットで表された入力Aと、入力Bの浮動小数
点データどうしの加減算を行う。オール1判定回路40
1、402は、76ビットの内部フォーマットで表され
た入力Aおよび入力Bの11ビットの指数部を、それぞ
れ入力として受けて、その値が全て1のときだけ、出力
を“1”にする。
【0207】オアゲート411は、加減算コア回路40
0のオーバーフロー出力ofと、オール1判定回路40
1、402の出力の論理和をとる。オアゲート412
は、加減算コア回路400のアンダーフロー出力uf
と、オアゲート411の出力との論理和をとる。
0のオーバーフロー出力ofと、オール1判定回路40
1、402の出力の論理和をとる。オアゲート412
は、加減算コア回路400のアンダーフロー出力uf
と、オアゲート411の出力との論理和をとる。
【0208】マルチプレクサ413は、加減算コア回路
400のアンダーフロー出力ufと、オアゲート411
の出力との2ビットを、選択制御信号SE3として受け
て、オール0と、オール1と、加減算コア回路400の
加減算出力D1のうちの指数部データとの3通りの11
ビットの指数部データのうちの1つを選び出す。
400のアンダーフロー出力ufと、オアゲート411
の出力との2ビットを、選択制御信号SE3として受け
て、オール0と、オール1と、加減算コア回路400の
加減算出力D1のうちの指数部データとの3通りの11
ビットの指数部データのうちの1つを選び出す。
【0209】マルチプレクサ414は、オアゲート41
2の出力を選択制御信号SE4として受けて、オール0
と、加減算コア回路400の加減算出力D1のうちの仮
数部データとの2通りの64ビットの仮数部のうちの1
つを選び出す。
2の出力を選択制御信号SE4として受けて、オール0
と、加減算コア回路400の加減算出力D1のうちの仮
数部データとの2通りの64ビットの仮数部のうちの1
つを選び出す。
【0210】また、マルチプレクサ415は、加減算回
路23の出力DOとする76ビットの内部フォーマット
で表現された浮動小数点データを、2通りのデータから
選択する回路である。選択される2通りのデータの一方
は、加減算回路23をバイパスするときの入力Aであ
る。他方は、加減算コア回路400の加減算出力D1の
うちの符号部と、マルチプレクサ413で選択された指
数部と、マルチプレクサ414で選択された仮数部から
なる76ビットの内部フォーマットで表現された最終加
減算結果D2である。
路23の出力DOとする76ビットの内部フォーマット
で表現された浮動小数点データを、2通りのデータから
選択する回路である。選択される2通りのデータの一方
は、加減算回路23をバイパスするときの入力Aであ
る。他方は、加減算コア回路400の加減算出力D1の
うちの符号部と、マルチプレクサ413で選択された指
数部と、マルチプレクサ414で選択された仮数部から
なる76ビットの内部フォーマットで表現された最終加
減算結果D2である。
【0211】マルチプレクサ415は、制御回路40か
ら入力する選択制御信号によって、出力DOとして、最
終加減算結果D2を出力するか、バイパス入力データA
を出力するかを選択する。
ら入力する選択制御信号によって、出力DOとして、最
終加減算結果D2を出力するか、バイパス入力データA
を出力するかを選択する。
【0212】次に、以上のような構成の加減算回路23
の動作について、説明する。まず、内部フォーマットで
表された2つの入力Aと入力Bとは、加減算コア回路4
00によって加減算が行われ、内部フォーマットの加減
算結果D1が、加減算コア回路400から出力される。
の動作について、説明する。まず、内部フォーマットで
表された2つの入力Aと入力Bとは、加減算コア回路4
00によって加減算が行われ、内部フォーマットの加減
算結果D1が、加減算コア回路400から出力される。
【0213】この際、加減算コア回路400において
は、2入力A,Bの仮数部どうしの加減算結果は、丸め
られて、加減算結果D1の仮数部が得られる。この丸め
により、65ビットの演算精度が得られる。また、加減
算コア回路400から出力される内部フォーマットの加
減算結果D1の指数部と仮数部とは、加減算コア回路4
00の出力の指数部eフィールドが、1〜2046の範
囲にある場合だけに対して正しい結果となっていれば良
い。
は、2入力A,Bの仮数部どうしの加減算結果は、丸め
られて、加減算結果D1の仮数部が得られる。この丸め
により、65ビットの演算精度が得られる。また、加減
算コア回路400から出力される内部フォーマットの加
減算結果D1の指数部と仮数部とは、加減算コア回路4
00の出力の指数部eフィールドが、1〜2046の範
囲にある場合だけに対して正しい結果となっていれば良
い。
【0214】ここで、図3に示したように、内部フォー
マットは、倍精度浮動小数点データの仮数部のビット幅
を拡張しただけなので、このような加減算コア回路40
0は、従来公知の倍精度浮動小数点データに対する加減
算回路を用いて、その仮数部のビット幅を単純に拡張す
るだけで構成できる。したがって、この実施の形態にお
ける加減算コア回路400の内部構成の詳細は省略す
る。
マットは、倍精度浮動小数点データの仮数部のビット幅
を拡張しただけなので、このような加減算コア回路40
0は、従来公知の倍精度浮動小数点データに対する加減
算回路を用いて、その仮数部のビット幅を単純に拡張す
るだけで構成できる。したがって、この実施の形態にお
ける加減算コア回路400の内部構成の詳細は省略す
る。
【0215】ここで、加減算回路23は、乗算回路22
とは異なり、入力の一方が0の場合でも、入力の他方が
適当な範囲の値を持っていれば、出力は内部フォーマッ
トで表せる範囲の値となるため、乗算回路22のよう
に、入力が0の場合に対応した例外的な処理は設けな
い。
とは異なり、入力の一方が0の場合でも、入力の他方が
適当な範囲の値を持っていれば、出力は内部フォーマッ
トで表せる範囲の値となるため、乗算回路22のよう
に、入力が0の場合に対応した例外的な処理は設けな
い。
【0216】また、加減算コア回路400では、0どう
しの加算や、(1×2+2)−(1×2+2)の計算など、
計算結果が内部表現で1以上の指数部eの値で表せない
ほど小さくなるときには、アンダーフローしたとみなし
てアンダーフロー出力ufから“1”が出力される。
しの加算や、(1×2+2)−(1×2+2)の計算など、
計算結果が内部表現で1以上の指数部eの値で表せない
ほど小さくなるときには、アンダーフローしたとみなし
てアンダーフロー出力ufから“1”が出力される。
【0217】さらに、(1.1×2+1023 )どうしの加
算のように、入力Aと入力Bとは、内部フォーマットで
表されるにも拘わらず、指数部が11ビットの範囲を超
えてしまうために、出力が内部フォーマットで表せない
ほど大きくなる(オーバーフローする)場合には、オー
バーフロー出力ofから“1”が出力される。
算のように、入力Aと入力Bとは、内部フォーマットで
表されるにも拘わらず、指数部が11ビットの範囲を超
えてしまうために、出力が内部フォーマットで表せない
ほど大きくなる(オーバーフローする)場合には、オー
バーフロー出力ofから“1”が出力される。
【0218】また、入力Aの指数部は、オール1判定回
路401に入力され、入力Bの指数部は、オール1判定
回路402に入力されているため、それぞれの判定回路
401、402からは、入力A、入力Bが、∞であると
きに“1”が出力される。
路401に入力され、入力Bの指数部は、オール1判定
回路402に入力されているため、それぞれの判定回路
401、402からは、入力A、入力Bが、∞であると
きに“1”が出力される。
【0219】次に、加減算コア回路400から出力され
た加減算結果D1から、最終加減算結果D2を生成する
方法について説明する。
た加減算結果D1から、最終加減算結果D2を生成する
方法について説明する。
【0220】まず、最終加減算結果D2の符号部には、
加減算結果D1の符号部がそのまま出力される。
加減算結果D1の符号部がそのまま出力される。
【0221】次に、最終加減算結果D2の指数部は、マ
ルチプレクサ413により選択される。このマルチプレ
クサ413の選択制御信号SE3を生成するオアゲート
411には、加減算コア回路400のオーバーフロー出
力ofと、オール1判定回路401、402の判定結果
とが入力されているため、加減算がオーバーフローした
場合、あるいは入力Aか入力Bが∞の場合に、オアゲー
ト411の出力が“1”になる。
ルチプレクサ413により選択される。このマルチプレ
クサ413の選択制御信号SE3を生成するオアゲート
411には、加減算コア回路400のオーバーフロー出
力ofと、オール1判定回路401、402の判定結果
とが入力されているため、加減算がオーバーフローした
場合、あるいは入力Aか入力Bが∞の場合に、オアゲー
ト411の出力が“1”になる。
【0222】オアゲート411の出力は、加減算コア回
路400のアンダーフロー出力ufとともに2ビットの
制御信号SE3とされ、マルチプレクサ413を制御す
る。マルチプレクサ413は、2ビットの選択制御信号
SE3が“00”のときは、加減算結果D1の指数部を
出力し、“10”のときには11ビットの0(オール
0)を出力し、また、“01”あるいは“11”のとき
には11ビットの1(オール1)を出力する。
路400のアンダーフロー出力ufとともに2ビットの
制御信号SE3とされ、マルチプレクサ413を制御す
る。マルチプレクサ413は、2ビットの選択制御信号
SE3が“00”のときは、加減算結果D1の指数部を
出力し、“10”のときには11ビットの0(オール
0)を出力し、また、“01”あるいは“11”のとき
には11ビットの1(オール1)を出力する。
【0223】さらに、最終加減算結果D2の仮数部は、
マルチプレクサ414から出力される。このマルチプレ
クサ414の選択制御信号SE4を出力するオアゲート
412は、加減算コア回路400のアンダーフロー出力
ufと、オアゲート411の出力との論理和をとるの
で、加減算結果D1がオーバーフローした場合や、アン
ダーフローした場合、または、入力A、Bのうち∞のも
のが1つでもある場合に、その出力である選択制御信号
SE4が“1”になる。
マルチプレクサ414から出力される。このマルチプレ
クサ414の選択制御信号SE4を出力するオアゲート
412は、加減算コア回路400のアンダーフロー出力
ufと、オアゲート411の出力との論理和をとるの
で、加減算結果D1がオーバーフローした場合や、アン
ダーフローした場合、または、入力A、Bのうち∞のも
のが1つでもある場合に、その出力である選択制御信号
SE4が“1”になる。
【0224】そして、選択制御信号SE4が、“1”な
ら64ビットの0(オール0)が、“0”なら加減算結
果D1の仮数部が、それぞれマルチプレクサ414から
出力される。
ら64ビットの0(オール0)が、“0”なら加減算結
果D1の仮数部が、それぞれマルチプレクサ414から
出力される。
【0225】以上の結果、加減算結果D1が、オーバー
フローもアンダーフローもせず、また、入力Aも入力B
も、∞でない場合には、選択制御信号SE3は“0
0”、制選択御信号SE4は“0”となるため、最終加
減算結果D2としては、加減算結果D1が、そのまま出
力される。
フローもアンダーフローもせず、また、入力Aも入力B
も、∞でない場合には、選択制御信号SE3は“0
0”、制選択御信号SE4は“0”となるため、最終加
減算結果D2としては、加減算結果D1が、そのまま出
力される。
【0226】また、加減算結果D1がアンダーフローす
る場合には、選択制御信号SE3が“10”になるの
で、最終加減算結果D2の指数部は、オール0になっ
て、内部フォーマットの0になる。なお、このとき、選
択制御信号SE4は“1”になるので、最終加減算結果
D2の仮数部もオール0になり、後述するように、内部
フォーマットの64ビット仮数部から、その上位52ビ
ットを抽出して、IEEE規格754表現の倍精度浮動
小数点数を取り出しても、0を表す表現となっている。
る場合には、選択制御信号SE3が“10”になるの
で、最終加減算結果D2の指数部は、オール0になっ
て、内部フォーマットの0になる。なお、このとき、選
択制御信号SE4は“1”になるので、最終加減算結果
D2の仮数部もオール0になり、後述するように、内部
フォーマットの64ビット仮数部から、その上位52ビ
ットを抽出して、IEEE規格754表現の倍精度浮動
小数点数を取り出しても、0を表す表現となっている。
【0227】さらに、加減算結果D1が、オーバーフロ
ーするか、または、入力Aか入力Bのうちの一方だけ
が、∞の場合には、選択制御信号SE3が“01”にな
るので、最終加減算結果D2の指数部は2047にな
り、内部フォーマットの∞になる。なお、このとき、選
択制御信号SE4は“1”となって、最終加減算結果D
2の仮数部も0になり、後述するように、内部フォーマ
ットの64ビット仮数部から、その上位52ビットを抽
出して倍精度浮動小数点数を取り出しても、IEEE規
格754で∞を表す表現となっている。
ーするか、または、入力Aか入力Bのうちの一方だけ
が、∞の場合には、選択制御信号SE3が“01”にな
るので、最終加減算結果D2の指数部は2047にな
り、内部フォーマットの∞になる。なお、このとき、選
択制御信号SE4は“1”となって、最終加減算結果D
2の仮数部も0になり、後述するように、内部フォーマ
ットの64ビット仮数部から、その上位52ビットを抽
出して倍精度浮動小数点数を取り出しても、IEEE規
格754で∞を表す表現となっている。
【0228】また、∞−∞の計算を実施するときは、選
択制御信号SE3の値が“01”または“11”とな
る。まず、両入力A,Bの仮数部が等しくなければ、加
減算コア回路400のアンダーフロー出力は0であるの
で、上記と同様、選択制御信号SE3は“01”にな
る。
択制御信号SE3の値が“01”または“11”とな
る。まず、両入力A,Bの仮数部が等しくなければ、加
減算コア回路400のアンダーフロー出力は0であるの
で、上記と同様、選択制御信号SE3は“01”にな
る。
【0229】次に、∞−∞の計算において、両入力A,
Bの仮数部が等しければ、加減算コア回路400の内部
での仮数部どうしの減算結果が丁度0になるため、アン
ダーフロー出力が1になり、この結果、選択制御信号S
E3は“11”になる。この場合でも、マルチプレクサ
413からは、最終加減算結果D2の指数部として11
ビットの1(オール1)が出力されるので、加減算結果
D1がオーバーフローする場合と同じく、最終加減算結
果D2は、仮数部が0であるため、IEEE754規格
で∞を表す数字になっている。この場合も、本来は結果
を不定とすべきところであるが、この実施の形態のよう
なシステムでは、∞と不定とを区別する必要がないの
で、このまま出力すれば良い。
Bの仮数部が等しければ、加減算コア回路400の内部
での仮数部どうしの減算結果が丁度0になるため、アン
ダーフロー出力が1になり、この結果、選択制御信号S
E3は“11”になる。この場合でも、マルチプレクサ
413からは、最終加減算結果D2の指数部として11
ビットの1(オール1)が出力されるので、加減算結果
D1がオーバーフローする場合と同じく、最終加減算結
果D2は、仮数部が0であるため、IEEE754規格
で∞を表す数字になっている。この場合も、本来は結果
を不定とすべきところであるが、この実施の形態のよう
なシステムでは、∞と不定とを区別する必要がないの
で、このまま出力すれば良い。
【0230】最後に、最終加減算結果D2は、マルチプ
レクサ415によって、入力Aのバイパスデータとの間
で選択される一方の出力DOとして出力される。ここ
で、入力Aのバイパス路は、前述のように、乗算命令を
実行する場合などのように、バイパスを行うために設け
られている。
レクサ415によって、入力Aのバイパスデータとの間
で選択される一方の出力DOとして出力される。ここ
で、入力Aのバイパス路は、前述のように、乗算命令を
実行する場合などのように、バイパスを行うために設け
られている。
【0231】また、2ビットの選択制御信号SE3は、
フラグ信号FLAG2としても出力され、図2に示した
破線の経路を通じて制御回路40に入力される。制御回
路40は、このフラグ信号FLAG2によって、割り込
みなどにより、加減算結果が0や∞になったことを検知
し、それに対応した適当な処理プログラムを実行するこ
とができる。
フラグ信号FLAG2としても出力され、図2に示した
破線の経路を通じて制御回路40に入力される。制御回
路40は、このフラグ信号FLAG2によって、割り込
みなどにより、加減算結果が0や∞になったことを検知
し、それに対応した適当な処理プログラムを実行するこ
とができる。
【0232】以上のように、上に述べた加減算回路23
は、公知の倍精度浮動小数点加減算回路に対してほぼ必
要な精度を満足するビット数だけを拡張した構成をとる
ので、回路規模の増加を最小限に抑えることができ、か
つ必要な精度の計算を高速に実施することができる。
は、公知の倍精度浮動小数点加減算回路に対してほぼ必
要な精度を満足するビット数だけを拡張した構成をとる
ので、回路規模の増加を最小限に抑えることができ、か
つ必要な精度の計算を高速に実施することができる。
【0233】次に、入力データ変換回路11、出力デー
タ変換回路12について説明する。これらの変換回路で
は、図3(B)に示した内部フォーマットと、図3
(A)に示した倍精度浮動小数点のフォーマットとの変
換をする。まず、倍精度浮動小数点フォーマットで表さ
れた数を、内部フォーマットに変換するための入力デー
タ変換回路11は、以下の(a)、(b)のようにし
て、フォーマット変換を行う。
タ変換回路12について説明する。これらの変換回路で
は、図3(B)に示した内部フォーマットと、図3
(A)に示した倍精度浮動小数点のフォーマットとの変
換をする。まず、倍精度浮動小数点フォーマットで表さ
れた数を、内部フォーマットに変換するための入力デー
タ変換回路11は、以下の(a)、(b)のようにし
て、フォーマット変換を行う。
【0234】(a)倍精度浮動小数点フォーマットの符
号部と指数部は、そのまま内部フォーマットの符号部と
指数部として出力する。
号部と指数部は、そのまま内部フォーマットの符号部と
指数部として出力する。
【0235】(b)内部フォーマットの64ビットの仮
数部の上位52ビットに、倍精度フォーマットの52ビ
ットの仮数部を出力し、また、内部フォーマットの64
ビットの仮数部の下位12ビットに、全て0データを出
力する。
数部の上位52ビットに、倍精度フォーマットの52ビ
ットの仮数部を出力し、また、内部フォーマットの64
ビットの仮数部の下位12ビットに、全て0データを出
力する。
【0236】また、出力データ変換回路12は、以下の
(c)、(d)のようにして、フォーマット変換を行
う。
(c)、(d)のようにして、フォーマット変換を行
う。
【0237】(c)内部フォーマットの符号部と指数部
とは、そのまま倍精度フォーマットの符号部と指数部に
出力する。
とは、そのまま倍精度フォーマットの符号部と指数部に
出力する。
【0238】(d)内部フォーマットの64ビットの仮
数部は、その上位から52ビットを取り出して、倍精度
フォーマットの仮数部に出力する。
数部は、その上位から52ビットを取り出して、倍精度
フォーマットの仮数部に出力する。
【0239】このように、前記(d)のように、出力デ
ータ変換回路12では、内部フォーマットの仮数部の5
3ビット目を、丸めることなしに出力するため、出力デ
ータgrs自体の精度は、丸めがある場合は53ビット
であるのに対し、この場合は52ビットになるが、gr
sを基にして(2)式によって計算されるフォック行列
要素Frsの精度は、52ビットで十分であると考えら
れる。
ータ変換回路12では、内部フォーマットの仮数部の5
3ビット目を、丸めることなしに出力するため、出力デ
ータgrs自体の精度は、丸めがある場合は53ビット
であるのに対し、この場合は52ビットになるが、gr
sを基にして(2)式によって計算されるフォック行列
要素Frsの精度は、52ビットで十分であると考えら
れる。
【0240】以上説明したように、この実施の形態で
は、倍精度浮動小数点よりも高精度の専用プロセッサ2
での内部フォーマットとして、図3に示したような、倍
精度浮動小数点データとは、仮数部のビット幅が異な
り、かつ、その仮数部のビット幅が倍精度浮動小数点の
仮数部よりも大きくしたフォーマットを採用したので、
簡単な倍精度浮動小数点数との間の変換回路を設けるだ
けで、専用プロセッサ2による高精度な浮動小数点演算
を実現できる。
は、倍精度浮動小数点よりも高精度の専用プロセッサ2
での内部フォーマットとして、図3に示したような、倍
精度浮動小数点データとは、仮数部のビット幅が異な
り、かつ、その仮数部のビット幅が倍精度浮動小数点の
仮数部よりも大きくしたフォーマットを採用したので、
簡単な倍精度浮動小数点数との間の変換回路を設けるだ
けで、専用プロセッサ2による高精度な浮動小数点演算
を実現できる。
【0241】なお、上記の実施の形態では、乗算コア回
路300、加減算コア回路400では、丸めが行われる
ため、65ビットの演算精度が確保されていたが、仮数
部どうしの乗算結果、あるいは仮数部どうしの加減算結
果に対して、丸めを行わず、単純に下位のビットを切り
捨てて、結果の仮数部を構成しても良い。
路300、加減算コア回路400では、丸めが行われる
ため、65ビットの演算精度が確保されていたが、仮数
部どうしの乗算結果、あるいは仮数部どうしの加減算結
果に対して、丸めを行わず、単純に下位のビットを切り
捨てて、結果の仮数部を構成しても良い。
【0242】このように構成した場合、演算精度は丸め
を行う場合より1ビット少ない64ビットになるが、誤
差関数に必要な演算の精度である62ビットは満足す
る。また、このような構成とすることにより、丸め回路
が不要になるため、回路規模を小さくできるとともに、
計算を速くすることができる。
を行う場合より1ビット少ない64ビットになるが、誤
差関数に必要な演算の精度である62ビットは満足す
る。また、このような構成とすることにより、丸め回路
が不要になるため、回路規模を小さくできるとともに、
計算を速くすることができる。
【0243】また、図3に示した内部フォーマットの例
では、実数vを、前述の(48)式のように表したとき
のxxx...の部分を仮数部としていたが、図6に示
すように、(48)式の1xxx...の部分を仮数部
としても良い。
では、実数vを、前述の(48)式のように表したとき
のxxx...の部分を仮数部としていたが、図6に示
すように、(48)式の1xxx...の部分を仮数部
としても良い。
【0244】このことによって、乗算コア回路300、
加減算コア回路400で丸めを行わない場合には、演算
精度は、上述の場合よりもさらに1ビット少ない63ビ
ットになるが、誤差関数に必要な演算の精度62ビット
は満足する。また、倍精度浮動小数点に対する乗算を行
う回路では、仮数部の最上位に1を付加することが必要
であったが、この構成にすることにより、乗算コア回路
300では仮数部をそのまま乗算するようにすれば良
く、回路が簡単になる。
加減算コア回路400で丸めを行わない場合には、演算
精度は、上述の場合よりもさらに1ビット少ない63ビ
ットになるが、誤差関数に必要な演算の精度62ビット
は満足する。また、倍精度浮動小数点に対する乗算を行
う回路では、仮数部の最上位に1を付加することが必要
であったが、この構成にすることにより、乗算コア回路
300では仮数部をそのまま乗算するようにすれば良
く、回路が簡単になる。
【0245】このようにする場合には、専用プロセッサ
2の入力データ変換回路11では、(e)倍精度の浮動
小数点データの符号部を、内部フォーマットの浮動小数
点データの符号部とし、(f)倍精度の浮動小数点デー
タの指数部を、内部フォーマットの浮動小数点データの
指数部とし、(g)内部フォーマットの浮動小数点デー
タの仮数部のうち、その最上位1ビットは1とし、最上
位よりも下位の52ビットは倍精度の浮動小数点データ
の仮数部とし、さらにそれより下位のビットは0データ
とすることにより、倍精度の浮動小数点データを、専用
プロセッサ2の内部のフォーマットの浮動小数点データ
に変換する。
2の入力データ変換回路11では、(e)倍精度の浮動
小数点データの符号部を、内部フォーマットの浮動小数
点データの符号部とし、(f)倍精度の浮動小数点デー
タの指数部を、内部フォーマットの浮動小数点データの
指数部とし、(g)内部フォーマットの浮動小数点デー
タの仮数部のうち、その最上位1ビットは1とし、最上
位よりも下位の52ビットは倍精度の浮動小数点データ
の仮数部とし、さらにそれより下位のビットは0データ
とすることにより、倍精度の浮動小数点データを、専用
プロセッサ2の内部のフォーマットの浮動小数点データ
に変換する。
【0246】したがって、この例の場合には、内部フォ
ーマットの浮動小数点データの仮数部には、最上位に1
が含まれているため、乗算を行う場合に、仮数部の最上
位に1を付加することが不要となり、乗算コア回路30
0では仮数部をそのまま乗算するようにすれば良くなっ
て、回路が簡単になるものである。
ーマットの浮動小数点データの仮数部には、最上位に1
が含まれているため、乗算を行う場合に、仮数部の最上
位に1を付加することが不要となり、乗算コア回路30
0では仮数部をそのまま乗算するようにすれば良くなっ
て、回路が簡単になるものである。
【0247】そして、この例の場合、この内部フォーマ
ットの浮動小数点データを、倍精度の浮動小数点データ
に変換する出力データ変換回路12では、(h)内部フ
ォーマットの浮動小数点データの符号部を、倍精度の浮
動小数点データの符号部とし、(i)内部フォーマット
の浮動小数点データの指数部を、倍精度の浮動小数点デ
ータの指数部とし、(j)内部フォーマットの浮動小数
点データの仮数部の上位2ビット目からの52ビット
を、倍精度の浮動小数点データの52ビットの仮数部と
することにより、専用プロセッサ2の内部フォーマット
の浮動小数点データを、倍精度の浮動小数点データに変
換する。
ットの浮動小数点データを、倍精度の浮動小数点データ
に変換する出力データ変換回路12では、(h)内部フ
ォーマットの浮動小数点データの符号部を、倍精度の浮
動小数点データの符号部とし、(i)内部フォーマット
の浮動小数点データの指数部を、倍精度の浮動小数点デ
ータの指数部とし、(j)内部フォーマットの浮動小数
点データの仮数部の上位2ビット目からの52ビット
を、倍精度の浮動小数点データの52ビットの仮数部と
することにより、専用プロセッサ2の内部フォーマット
の浮動小数点データを、倍精度の浮動小数点データに変
換する。
【0248】なお、上述の実施の形態の説明では、プロ
セッサエレメントとして、専用プロセッサを用意して、
倍精度浮動小数点と内部フォーマットとの間の変換や、
内部フォーマットでの浮動小数点演算をハードウエアで
実施する場合について述べたが、従来の倍精度浮動小数
点演算機能が用意されているプロセッサエレメントを使
用して、ソフトウエアでフォーマット間の変換や、内部
フォーマットでの計算を実施することもできる。
セッサエレメントとして、専用プロセッサを用意して、
倍精度浮動小数点と内部フォーマットとの間の変換や、
内部フォーマットでの浮動小数点演算をハードウエアで
実施する場合について述べたが、従来の倍精度浮動小数
点演算機能が用意されているプロセッサエレメントを使
用して、ソフトウエアでフォーマット間の変換や、内部
フォーマットでの計算を実施することもできる。
【0249】この場合は、専用プロセッサを用意する場
合よりも変換と演算の速度は低下するが、4倍精度を使
用する場合よりは、変換などが簡単にできるために高速
であり、この発明は、このような場合にも有効である。
合よりも変換と演算の速度は低下するが、4倍精度を使
用する場合よりは、変換などが簡単にできるために高速
であり、この発明は、このような場合にも有効である。
【0250】また、上記説明では分子軌道計算を例にと
ったが、この発明は分子軌道計算以外の計算を行う、ホ
ストプロセッサと、複数個のプロセッサエレメントとで
浮動小数点による計算を分担するタイプの並列計算装置
のいずれにも適用することができることは言うまでもな
い。
ったが、この発明は分子軌道計算以外の計算を行う、ホ
ストプロセッサと、複数個のプロセッサエレメントとで
浮動小数点による計算を分担するタイプの並列計算装置
のいずれにも適用することができることは言うまでもな
い。
【0251】特に、専用プロセッサが複数個あるような
場合には、一般に、演算回数が多い計算が専用プロセッ
サに割り当てられるため、専用プロセッサでの計算も高
い精度が必要となる。したがって、このような並列計算
装置に対しても、この発明は有効である。
場合には、一般に、演算回数が多い計算が専用プロセッ
サに割り当てられるため、専用プロセッサでの計算も高
い精度が必要となる。したがって、このような並列計算
装置に対しても、この発明は有効である。
【0252】
【発明の効果】以上説明したように、この発明によれ
ば、オーバースペックになるようなハードウエア規模と
する必要がなく、また、計算速度も高速を保ちながら、
高精度の並列計算ができる。特に、フォーマット変換に
必要な回路規模を小さく抑えることができる。
ば、オーバースペックになるようなハードウエア規模と
する必要がなく、また、計算速度も高速を保ちながら、
高精度の並列計算ができる。特に、フォーマット変換に
必要な回路規模を小さく抑えることができる。
【図1】この発明による並列計算装置の実施の形態を示
すブロック図である。
すブロック図である。
【図2】実施の形態のプロセッサエレメントの内部構成
を示すブロック図である。
を示すブロック図である。
【図3】第1の形式の浮動小数点データのフォーマット
の例と、実施の形態で使用される第2の形式の浮動小数
点データフォーマットの例を示す図である。
の例と、実施の形態で使用される第2の形式の浮動小数
点データフォーマットの例を示す図である。
【図4】実施の形態のプロセッサエレメントの積和演算
回路内の乗算回路の内部構成の例を示すブロック図であ
る。
回路内の乗算回路の内部構成の例を示すブロック図であ
る。
【図5】実施の形態のプロセッサエレメントの積和演算
回路内の加減算回路の内部構成の例を示すブロック図で
ある。
回路内の加減算回路の内部構成の例を示すブロック図で
ある。
【図6】この発明の別の実施の形態で使用する第2の形
式の浮動小数点データフォーマットを示す図である。
式の浮動小数点データフォーマットを示す図である。
【図7】誤差関数の計算において、その経路で発生する
丸め誤差を説明するための図である。
丸め誤差を説明するための図である。
1 ホストプロセッサ 2 専用プロセッサ 3 ボード 4 バス 10 バスインタフェース回路 11 入力データ変換回路 12 出力データ変換回路 20 積和演算回路 21 レジスタ 22 乗算回路 23 加減算回路 30 メモリ 40 制御回路 41 プログラムメモリ 100〜102 内部バス 103 メモリデータバス 104 メモリアドレスバス 200 入出力端子 300 乗算コア回路 301、302 オール0判定回路 303、304 オール1判定回路 310〜312 オアゲート 313〜315 マルチプレクサ 400 加減算コア回路 401,402 オール1判定回路 411,412 オアゲート 413〜415 マルチプレクサ
フロントページの続き (72)発明者 山田 想 神奈川県足柄上郡中井町境430 グリーン テクなかい富士ゼロックス株式会社内 (72)発明者 宮川 宣明 神奈川県足柄上郡中井町境430 グリーン テクなかい富士ゼロックス株式会社内 (72)発明者 網崎 孝志 鳥取県米子市旗ケ崎8−11−16 (72)発明者 高島 一 埼玉県大宮市吉野町1−403 大正製薬株 式会社内 (72)発明者 北村 一泰 埼玉県大宮市吉野町1−403 大正製薬株 式会社内 Fターム(参考) 5B013 DD03 DD05 5B022 AA03 BA01 CA01 CA03 CA04 DA04 FA06 5B045 AA07 BB12 GG08 GG11
Claims (9)
- 【請求項1】ホストプロセッサと、このホストプロセッ
サとバスを介して接続される1または複数のプロセッサ
エレメントとからなり、前記ホストプロセッサと、前記
1または複数のプロセッサエレメントとが、特定の計算
プロセスに含まれる浮動小数点演算処理を分担して計算
する並列計算装置において、 前記プロセッサエレメントは、 前記ホストプロセッサとの間で、1ビットの符号部と、
meビットのビット幅の指数部と、m0ビットのビット
幅の仮数部とからなる第1の形式の浮動小数点データを
入出力する浮動小数点入出力インタフェース部と、 前記浮動小数点入出力インタフェース部より入力される
前記第1の形式の浮動小数点データを、1ビットの符号
部と、前記meビットのビット幅の指数部と、前記m0
よりも大きいm1ビットのビット幅の仮数部とからなる
第2の形式の浮動小数点データに変換する入力データ変
換部と、 前記入力データ変換部からの前記第2の形式の浮動小数
点データについて、浮動小数点演算処理を実行する浮動
小数点演算部と、 前記浮動小数点演算部で演算が施された前記第2の形式
の浮動小数点データを前記第1の形式の浮動小数点デー
タに変換して、前記浮動小数点入出力インタフェース部
に供給する出力データ変換部と、 を備えることを特徴とする並列計算装置。 - 【請求項2】請求項1に記載の並列計算装置において、 前記入力データ変換部は、 前記第1の形式の浮動小数点データの符号部を、前記第
2の形式の浮動小数点データの符号部とし、 前記第1の形式の浮動小数点データの指数部を、前記第
2の形式の浮動小数点データの指数部とし、 前記m0ビットの前記第1の形式の浮動小数点データの
仮数部を、前記m1ビットの前記第2の形式の浮動小数
点データの仮数部のうちの上位の前記m0ビットとし、
前記第2の形式の浮動小数点データの仮数部の下位m1
−m0ビットを所定の数値とし、 前記出力データ変換部は、 前記第2の形式の浮動小数点データの符号部を、前記第
1の形式の浮動小数点データの符号部とし、 前記第2の形式の浮動小数点データの指数部を、前記第
1の形式の浮動小数点データの指数部とし、 前記第2の形式の浮動小数点データの仮数部の上位の前
記m0ビットを、前記第1の形式の浮動小数点データの
仮数部としたことを特徴とする並列計算装置。 - 【請求項3】請求項1に記載の並列計算装置において、 前記入力データ変換部は、 前記第1の形式の浮動小数点データの符号部を、前記第
2の形式の浮動小数点データの符号部とし、 前記第1の形式の浮動小数点データの指数部を、前記第
2の形式の浮動小数点データの指数部とし、 前記m1ビットの前記第2の形式の浮動小数点データの
仮数部のうち、その最上位1ビットは1とし、最上位よ
りも下位の前記m0ビットは前記第1の形式の浮動小数
点データの仮数部とし、さらにそれより下位の前記m1
−前記m0−1ビットは所定の数値とし、 前記出力データ変換部は、 前記第2の形式の浮動小数点データの符号部を、前記第
1の形式の浮動小数点データの符号部とし、 前記第2の形式の浮動小数点データの指数部を、前記第
1の形式の浮動小数点データの指数部とし、 前記第2の形式の浮動小数点データの仮数部の上位2ビ
ット目からのm0ビットを、前記m0ビットの第1の形
式の浮動小数点データの仮数部としたことを特徴とする
並列計算装置。 - 【請求項4】前記第2の形式の浮動小数点データにおい
ては、前記指数部が第1の所定の値emaxのときに符
号付き無限大を表し、前記指数部が第2の所定の値em
inのときに零を表し、 前記浮動小数点演算部に含まれる浮動小数点乗算手段
は、 オーバーフローを発生すると出力データの指数部を前記
値emaxとし、 アンダーフローを発生すると出力データの指数部を前記
値eminとし、 入力される前記第2の形式の2つの浮動小数点データの
うち、どちらか1つの指数部が前記値emaxのときに
出力データの指数部を前記値emaxとし、 前記入力される前記第2の形式の2つの浮動小数点デー
タのうち双方とも指数部が前記値emaxでなく、か
つ、どちらか1つの指数部が前記値eminのときに出
力データの指数部を前記値eminとし、 前記浮動小数点演算部に含まれる浮動小数点加減算手段
は、 オーバーフローを発生すると出力データの指数部を前記
値emaxとし、 アンダーフローを発生すると出力データの指数部を前記
値eminとし、 入力される前記第2の形式の2つの浮動小数点データの
うち、どちらか1つの指数部が前記値emaxのときに
出力データの指数部を前記値emaxとすることを特徴
とする請求項1〜3のいずれかに記載の並列計算装置。 - 【請求項5】前記浮動小数点演算部に含まれる浮動小数
点乗算手段は、その出力データの仮数部を求めるとき
に、切り捨てを実施し、 前記浮動小数点演算部に含まれる浮動小数点加減算手段
は、その出力データの仮数部を求めるときに、切り捨て
を実施することを特徴とする請求項1〜4のいずれかに
記載の並列計算装置。 - 【請求項6】ホストプロセッサと、このホストプロセッ
サとバスを介して接続される1または複数のプロセッサ
エレメントとにより、特定の計算プロセスに含まれる浮
動小数点演算処理を分担して計算する並列計算方法にお
いて、 前記ホストプロセッサは、 1ビットの符号部と、meビットのビット幅の指数部
と、m0ビットのビット幅の仮数部とからなる第1の形
式の浮動小数点データについて演算処理を行い、 前記プロセッサエレメントは、 前記第1の形式よりも高精度で、1ビットの符号部と、
前記meビットのビット幅の指数部と、前記m0よりも
大きいm1ビットのビット幅の仮数部とからなる第2の
形式の浮動小数点データについて、浮動小数点演算処理
を実行するものであって、かつ、 前記バスを通じて入力される前記第1の形式の浮動小数
点データ入力の符号部を前記第2の形式の浮動小数点デ
ータの符号部とし、前記第1の形式の浮動小数点データ
入力の指数部を前記第2の形式の浮動小数点データの指
数部とし、前記第1の形式の浮動小数点データ入力の仮
数部を、前記m1ビットの前記第2の形式の浮動小数点
データの仮数部のうちの上位m0ビットとすると共に、
前記第2の形式の浮動小数点データの仮数部の下位m1
−m0ビットを所定の数値として、前記第1の形式の浮
動小数点データ入力を、前記第2の形式の浮動小数点デ
ータに変換する入力データ変換工程と、 前記入力データ変換工程で変換された前記第2の形式の
浮動小数点データについて、浮動小数点演算を実行し、
その演算結果としての前記第2の形式の浮動小数点デー
タを得る浮動小数点演算工程と、 前記浮動小数点演算工程で得られる前記演算結果として
の前記第2の形式の浮動小数点データの符号部を前記第
1の形式の浮動小数点データの符号部とし、前記演算結
果としての前記第2の形式の浮動小数点データの指数部
を前記第1の形式の浮動小数点データの指数部とし、さ
らに前記演算結果としての前記第2の形式の浮動小数点
データの仮数部の上位m0ビットを前記第1の形式の浮
動小数点データの仮数部として、前記演算結果としての
前記第2の形式の浮動小数点データを、前記第1の形式
の浮動小数点データ出力に変換して、前記バスに出力す
る出力データ変換工程と、 を備えることを特徴とする並列計算方法。 - 【請求項7】ホストプロセッサと、このホストプロセッ
サとバスを介して接続される1または複数のプロセッサ
エレメントとにより、特定の計算プロセスに含まれる浮
動小数点演算処理を分担して計算する並列計算方法にお
いて、 前記ホストプロセッサは、 1ビットの符号部と、meビットのビット幅の指数部
と、m0ビットのビット幅の仮数部とからなる第1の形
式の浮動小数点データについて演算処理を行い、 前記プロセッサエレメントは、 前記第1の形式よりも高精度で、1ビットの符号部と、
前記meビットのビット幅の指数部と、前記m0よりも
大きいm1ビットのビット幅の仮数部とからなる第2の
形式の浮動小数点データについて、浮動小数点演算処理
を実行するものであって、かつ、 前記バスを通じて入力される第1の形式の浮動小数点デ
ータ入力の符号部を前記第2の形式の浮動小数点データ
の符号部とし、前記第1の形式の浮動小数点データ入力
の指数部を前記第2の形式の浮動小数点データの指数部
とし、さらにm1ビットの第2の形式の浮動小数点デー
タの仮数部のうち、その最上位1ビットは1とし、最上
位よりも下位の前記m0ビットは前記第1の形式の浮動
小数点データ入力の仮数部とし、さらにそれより下位の
前記m1−前記m0−1ビットは所定の数値として、前
記第1の形式の浮動小数点データ入力を、前記第2の形
式の浮動小数点データに変換する入力データ変換工程
と、 前記入力データ変換工程で変換されて得られた前記第2
の形式の浮動小数点データについて、浮動小数点演算を
実行して、その演算結果としての前記第2の形式の浮動
小数点データを得る浮動小数点演算工程と、 前記浮動小数点演算工程で得られる前記演算結果として
の前記第2の形式の浮動小数点データの符号部を前記第
1の形式の浮動小数点データの符号部とし、また前記演
算結果としての前記第2の形式の浮動小数点データの指
数部を前記第1の形式の浮動小数点データの指数部と
し、さらに前記演算結果としての前記第2の形式の浮動
小数点データの仮数部の上位2ビット目からのm0ビッ
トを、m0ビットの前記第1の形式の浮動小数点データ
の仮数部として、前記演算結果としての前記第2の形式
の浮動小数点データを、前記第1の形式の浮動小数点デ
ータ出力に変換して、前記バスに出力する出力データ変
換工程と、を備えることを特徴とする並列計算方法。 - 【請求項8】前記計算プロセスは、分子軌道法に基づく
計算プロセスであることを特徴とする請求項1〜5のい
ずれかに記載の並列計算装置。 - 【請求項9】前記計算プロセスは、分子軌道法に基づく
計算プロセスであることを特徴とする請求項6または請
求項7に記載の並列計算方法。
Priority Applications (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP11102020A JP2000293494A (ja) | 1999-04-09 | 1999-04-09 | 並列計算装置および並列計算方法 |
| US09/544,359 US6631391B1 (en) | 1999-04-09 | 2000-04-06 | Parallel computer system and parallel computing method |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP11102020A JP2000293494A (ja) | 1999-04-09 | 1999-04-09 | 並列計算装置および並列計算方法 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JP2000293494A true JP2000293494A (ja) | 2000-10-20 |
Family
ID=14316076
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP11102020A Pending JP2000293494A (ja) | 1999-04-09 | 1999-04-09 | 並列計算装置および並列計算方法 |
Country Status (2)
| Country | Link |
|---|---|
| US (1) | US6631391B1 (ja) |
| JP (1) | JP2000293494A (ja) |
Cited By (7)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| WO2007032251A1 (ja) * | 2005-09-13 | 2007-03-22 | Sony Corporation | 復号装置および復号方法 |
| US7447724B2 (en) | 2003-11-27 | 2008-11-04 | Seiko Epson Corporation | Error function calculation device and error function calculation method |
| JP2009140491A (ja) * | 2007-12-07 | 2009-06-25 | Nvidia Corp | 融合型積和演算機能ユニット |
| JP2009245212A (ja) * | 2008-03-31 | 2009-10-22 | Hitachi Ltd | 組み込み制御装置 |
| US7885796B2 (en) | 2003-09-22 | 2011-02-08 | Nec Soft, Ltd. | Parallel calculation method and device |
| CN104866277A (zh) * | 2014-02-26 | 2015-08-26 | 北京国睿中数科技股份有限公司 | 用于浮点复数共轭加减的装置和方法 |
| JP2023040014A (ja) * | 2009-06-19 | 2023-03-22 | シンギュラー コンピューティング、エルエルシー | コンパクトな演算処理要素を用いたプロセッシング |
Families Citing this family (8)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP4159699B2 (ja) * | 1999-04-13 | 2008-10-01 | 大正製薬株式会社 | 並列処理方法および並列処理装置 |
| US7330864B2 (en) * | 2001-03-01 | 2008-02-12 | Microsoft Corporation | System and method for using native floating point microprocessor instructions to manipulate 16-bit floating point data representations |
| JP3990130B2 (ja) * | 2001-09-25 | 2007-10-10 | 独立行政法人科学技術振興機構 | 並列計算方法 |
| JP2005018626A (ja) * | 2003-06-27 | 2005-01-20 | Ip Flex Kk | 並列処理システムの生成方法 |
| US7313584B2 (en) * | 2003-07-31 | 2007-12-25 | International Business Machines Corporation | Increased precision in the computation of a reciprocal square root |
| CN107038016B (zh) * | 2017-03-29 | 2019-11-15 | 广州酷狗计算机科技有限公司 | 一种基于gpu的浮点数转换方法及装置 |
| US10990389B2 (en) | 2019-04-29 | 2021-04-27 | Micron Technology, Inc. | Bit string operations using a computing tile |
| US20230205528A1 (en) * | 2021-12-23 | 2023-06-29 | Intel Corporation | Apparatus and method for vector packed concatenate and shift of specific portions of quadwords |
Family Cites Families (7)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPS5776634A (en) * | 1980-10-31 | 1982-05-13 | Hitachi Ltd | Digital signal processor |
| US5341506A (en) * | 1984-12-10 | 1994-08-23 | Nec Corporation | Data flow processor with a full-to-half word convertor |
| JPH02171923A (ja) | 1988-12-26 | 1990-07-03 | Toshiba Corp | 浮動小数点加減算装置 |
| JPH06301710A (ja) | 1993-04-15 | 1994-10-28 | Fujitsu Ltd | 倍精度積和演算方法および装置 |
| US5631859A (en) | 1994-10-27 | 1997-05-20 | Hewlett-Packard Company | Floating point arithmetic unit having logic for quad precision arithmetic |
| JPH0950428A (ja) | 1995-08-10 | 1997-02-18 | Hitachi Ltd | 分子軌道解析用計算システム |
| JP3033511B2 (ja) * | 1997-03-03 | 2000-04-17 | 富士ゼロックス株式会社 | 大規模積和演算処理方法及び装置 |
-
1999
- 1999-04-09 JP JP11102020A patent/JP2000293494A/ja active Pending
-
2000
- 2000-04-06 US US09/544,359 patent/US6631391B1/en not_active Expired - Fee Related
Cited By (12)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US7885796B2 (en) | 2003-09-22 | 2011-02-08 | Nec Soft, Ltd. | Parallel calculation method and device |
| US7447724B2 (en) | 2003-11-27 | 2008-11-04 | Seiko Epson Corporation | Error function calculation device and error function calculation method |
| WO2007032251A1 (ja) * | 2005-09-13 | 2007-03-22 | Sony Corporation | 復号装置および復号方法 |
| CN101310446B (zh) * | 2005-09-13 | 2012-06-13 | 索尼株式会社 | 解码器和解码方法 |
| KR101312799B1 (ko) | 2005-09-13 | 2013-09-27 | 소니 주식회사 | 복호 장치 및 복호 방법 |
| JP2009140491A (ja) * | 2007-12-07 | 2009-06-25 | Nvidia Corp | 融合型積和演算機能ユニット |
| JP2012084142A (ja) * | 2007-12-07 | 2012-04-26 | Nvidia Corp | 融合型積和演算機能ユニット |
| JP2009245212A (ja) * | 2008-03-31 | 2009-10-22 | Hitachi Ltd | 組み込み制御装置 |
| JP2023040014A (ja) * | 2009-06-19 | 2023-03-22 | シンギュラー コンピューティング、エルエルシー | コンパクトな演算処理要素を用いたプロセッシング |
| JP7565998B2 (ja) | 2009-06-19 | 2024-10-11 | シンギュラー コンピューティング、エルエルシー | コンパクトな演算処理要素を用いたプロセッシング |
| US12299411B2 (en) | 2009-06-19 | 2025-05-13 | Singular Computing Llc | Processing with compact arithmetic processing element |
| CN104866277A (zh) * | 2014-02-26 | 2015-08-26 | 北京国睿中数科技股份有限公司 | 用于浮点复数共轭加减的装置和方法 |
Also Published As
| Publication number | Publication date |
|---|---|
| US6631391B1 (en) | 2003-10-07 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US5357237A (en) | In a data processor a method and apparatus for performing a floating-point comparison operation | |
| Demmel et al. | Parallel reproducible summation | |
| EP1857925B1 (en) | Method and apparatus for decimal number multiplication using hardware for binary number operations | |
| Schulte et al. | A family of variable-precision interval arithmetic processors | |
| US5943249A (en) | Method and apparatus to perform pipelined denormalization of floating-point results | |
| Bruguera et al. | Floating-point fused multiply-add: reduced latency for floating-point addition | |
| JP2000293494A (ja) | 並列計算装置および並列計算方法 | |
| JPH06236257A (ja) | データ・プロセッサにおいて浮動小数点実行ユニット内で後正規化を実行する方法および装置 | |
| JPH02294819A (ja) | 浮動小数点数演算処理装置 | |
| US8166092B2 (en) | Arithmetic device for performing division or square root operation of floating point number and arithmetic method therefor | |
| GB2455401A (en) | Graphical rendering pipeline having double precision fused multiply-add functional unit(DFMA) | |
| CN101692202A (zh) | 一种64比特浮点乘加器及其浮点运算流水节拍处理方法 | |
| US10983755B2 (en) | Transcendental calculation unit apparatus and method | |
| JPH02294820A (ja) | 浮動小数点数演算処理装置および演算処理方法 | |
| Hickmann et al. | A parallel IEEE P754 decimal floating-point multiplier | |
| JP3313560B2 (ja) | 浮動小数点演算処理装置 | |
| Erle et al. | Decimal floating-point multiplication via carry-save addition | |
| CN108139912A (zh) | 在浮点运算期间计算和保留误差边界的装置和方法 | |
| Vázquez et al. | Iterative algorithm and architecture for exponential, logarithm, powering, and root extraction | |
| Quinnell et al. | Bridge floating-point fused multiply-add design | |
| Knofel | Fast hardware units for the computation of accurate dot products | |
| Hao et al. | Cambricon-p: A bitflow architecture for arbitrary precision computing | |
| JPH10143355A (ja) | 種々の書式のオペランドを高効率で乗算する能力を有するマイクロプロセッサ及びその演算方法 | |
| US5752072A (en) | Sorting scheme without compare and branch instructions | |
| Boersma et al. | The POWER7 binary floating-point unit |