JP2006323710A - データプロセッサ、データ処理方法及び演算制御プログラム - Google Patents
データプロセッサ、データ処理方法及び演算制御プログラム Download PDFInfo
- Publication number
- JP2006323710A JP2006323710A JP2005147515A JP2005147515A JP2006323710A JP 2006323710 A JP2006323710 A JP 2006323710A JP 2005147515 A JP2005147515 A JP 2005147515A JP 2005147515 A JP2005147515 A JP 2005147515A JP 2006323710 A JP2006323710 A JP 2006323710A
- Authority
- JP
- Japan
- Prior art keywords
- small
- big
- polynomial
- data processing
- calculation
- 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.)
- Withdrawn
Links
Images
Landscapes
- Complex Calculations (AREA)
Abstract
【課題】 演算装置による有効な演算ビット数を拡張することなく関数の近似多項式による演算精度を向上させる。
【解決手段】 データ処理ユニット(20)は、演算制御プログラムに従って所定の関数の値を演算するとき、近似多項式F(x)を分解した和の多項式F1(x)+F2(x)を用いる。前記式F1(x)は前記データ処理ユニットの演算精度に対して正確に計算可能な次数と係数を有しF1(x)=BIG+SMALLとして表現可能である。F1(x)の絶対値はF2(x)の絶対値よりも大きい。BIGの絶対値はSMALLの絶対値よりも大きい。前記多項式F1(x)+F2(x)を用いた演算において、F(x)=BIG+SMALL+F2(x)を求めるとき、BIG+(SMALL+F2(x))の演算を行う。これにより、絶対値の小さいもの同士の加算で生じた丸め誤差はBIGに対して1度だけ作用する。丸め誤差が累積して大きな演算誤差を生ずる方向に最終解が丸められる可能性を低減することができる。
【選択図】 図1
Description
本発明は、sin(x)、atan(x)、sqrt(x)などの関数の値を近似多項式を用いて演算する技術に係り、例えばそのような関数の演算命令を実行可能なマイクロコンピュータに適用して有効な技術に関する。
奇関数の近似多項式は例えば、F(x)=c0*x+c1*x^3+c2*x^5+c3*x^7(*は乗算記号、^は累乗記号である)となる。sin(x)、tan(x)などのように原点位置の微分係数が1となる関数の場合、最も低次のxの係数c0が1若しくは極端に1に近い値(単精度浮動小数点数では1.0fと記す)になる。このような近似多項式をホーナー法で計算する場合には、前記多項式近似をF(x)=x(1+x^2(c1+x^2(c2+x^2(c3))))として、変数の高次側より積和演算を繰り返す。例えば最初にテンポラリな変数ansにc3を代入し(ans=c3)、次にansにc2+x^2*ansを代入する(ans=c2+x^2*ans)というように計算を行う。最後の積和演算部分では、ans=1.0f+ans*d2…(step1)、ans=ans*d1…(step2)、が行われる。前記d2はd1*d1であり、d1は入力xの値である。
なお、多項式近似について記載された文献として非特許文献1、2がある。またC言語について記載された文献として非特許文献3がある。
CODY, W. J., AND WAITE, W. Software Manual for the Elementary Functions. Prentice-Hall, Englewood Cliffs, N.J., 1980.
Fike, C. T. 1968, Computer Evaluation of Mathematical Function(Englewood Cliffs, Nj: Prentice-Hall)
ISO/IEC: International Standard ISO/IEC 9899, Programming LanguageC, 1999
本発明者は関数の近似多項式による演算誤差について検討した。計算機で扱う実数に近い数値は浮動小数点数である。これは数学的な意味の実数とはまったく別物である。例えば単精度浮動小数点数(以下floatと呼ぶ)は32ビットのレジスタなどの入れ物に格納される。従って区間[−∞,∞]の値の内の2^32個の値だけが正確に表現できることになる。その他の値は近似値で我慢する他はない。例えば近似多項式F(x)=x+1/3.0f*x^3+…について考える。初項xは入力であり誤差を持たない。しかし2番目の項は必ず誤差を持っている。まず、float定数1/3.0fは実数の1/3とは異なっている。この時点で誤差を持つ。さらに1/3.0f*x^3で誤差が拡大する。以下同様。しかし、入力xの絶対値が小さい間は、2番目の項の誤差は最終結果に殆ど影響を与えない。誤差を持たない初項xが2番目の項よりも格段に大きくなり、演算後の丸めで丸め方向を間違えることは稀にしか起こらないからである。入力xの絶対値が1に近くなれば、2番目の項の誤差は最終結果にかなり影響を与える。演算後の丸めで丸め方向をかなりの割合で間違えさせることになる。さらに入力xの絶対値が1を超えると、2番目の項の誤差が最終結果にそのまま反映されだす。この場合は最後の演算の桁落ちで、演算結果の精度(相対誤差の意味)が殆ど保証できなくなる。
本発明の目的は、演算装置による有効な演算ビット数を拡張することなく関数の近似多項式による演算精度を向上(丸め方向間違いの頻度を減少)させることにある。
本発明の前記並びにその他の目的と新規な特徴は本明細書の記述及び添付図面から明らかになるであろう。
本願において開示される発明のうち代表的なものの概要を簡単に説明すれば下記の通りである。
〔1〕データプロセッサはデータ処理ユニットと、前記データ処理ユニットが実行する演算制御プログラムを保有するプログラムメモリと、前記演算制御プログラムにしたがって前記データ処理ユニットがアクセスするワークメモリと、を有する。前記データ処理ユニットは、前記演算制御プログラムに従って所定の関数の値を演算するとき、近似多項式F(x)を分解した和の多項式F1(x)+F2(x)を用いる。前記式F1(x)は前記データ処理ユニットの演算精度に対して正確に計算可能な次数と係数を有しF1(x)=BIG+SMALLとして表現可能である。F1(x)の絶対値はF2(x)の絶対値よりも大きい。BIGの絶対値はSMALLの絶対値よりも大きい。前記多項式F1(x)+F2(x)を用いた演算において、F(x)=BIG+SMALL+F2(x)を求めるとき、BIG+(SMALL+F2(x))の演算を行う。これにより、絶対値の小さいもの同士の加算で生じた丸め誤差はBIGに対して1度だけ作用する。丸め誤差が累積して大きな演算誤差を生ずる方向に最終解が丸められる可能性を低減することができる。
本発明の一つの具体的な形態として、前記所定の関数の近似多項式を、F(x)=x+c1*x^3+c2*x^5+c3*x^7+c4*x^9+c5*x^11とする。これに対応する和の多項式を、F(x)=(x+C1*x^3)+((c1−C1)*x^3+c2*x^5+c3*d1^7+c4*x^9+c5*x^11)とする。F1(x)=(x+C1*x^3)であり、F2(x)=((c1−C1)*x^3+c2*x^5+c3*d1^7+c4*x^9+c5*x^11)である。C1は前記演算精度の範囲内のビット数で完全に表現できる浮動小数点数である。F1(x)/x=(1+C1*x^2)の部分演算において、1+C1*x^2の演算結果の上位桁の値をB1に格納し、下位桁の値をS1に格納する。S1の値はB1=1+C1*x^2の演算で失われた(落とされた)下位側ビットによる値であり、これによってそのような失われた値を回復している。そして、BIG=x*B1、SMALL=x*S1とする。これにより、BIGの絶対値はSMALLの絶対値よりも大きいこと、そして、F1(x)は前記データ処理ユニットの演算精度に対して正確に計算可能であることを保証することができる。
本発明の別の一つの具体的な形態として、前記所定の関数の近似多項式を、F(x)=c0+c1*x^2+c2*x^4+c3*x^6+c4*x^8+c5*x^10とする。これに対応する和の多項式をF(x)=(c0+C1*x^2)+((c1−C1)*x^2+c2*x^4+c3*d1^6+c4*x^8+c5*x^10)とする。F1(x)=(c0+C1*x^2)であり、F2(x)=((c1−C1)*x^2+c2*x^4+c3*d1^6+c4*x^8+c5*x^10)である。C1は前記演算精度の範囲内のビット数で完全に表現できる浮動小数点数である。F1(x)=(c0+C1*x^2)の部分演算において、1+C1*x^2の演算結果の上位桁の値をB1に格納し、下位桁の値をS1に格納する。S1の値はB1=1+C1*x^2の演算で失われた(落とされた)下位側ビットによる値であり、これによってそのような失われた値を回復している。そして、BIG=B1、SMALL=S1とする。これにより、BIGの絶対値はSMALLの絶対値よりも大きいこと、そして、F1(x)は前記データ処理ユニットの演算精度に対して正確に計算可能であることを保証することができる。
〔2〕データ処理方法は、コンピュータ装置が演算制御プログラムを実行することにより、所定の関数の値をその近似多項式F(x)を分解した和の多項式F1(x)+F2(x)を用いて取得する。前記式F1(x)は前記コンピュータ装置の演算精度に対して正確に計算可能な次数と係数を有しF1(x)=BIG+SMALLとして表現可能である、F1(x)の絶対値はF2(x)の絶対値よりも大きく、BIGの絶対値はSMALLの絶対値よりも大きい。前記多項式F1(x)+F2(x)を用いた演算において、F(x)=BIG+SMALL+F2(x)を求めるとき、BIG+(SMALL+F2(x))を行う。これにより、絶対値の小さいもの同士の加算で生じた丸め誤差はBIGに対して1度だけ作用する。丸め誤差が累積して大きな演算誤差を生ずる方向に最終解が丸められる可能性を低減することができる。
〔3〕コンピュータ装置によって実行される演算制御プログラムは、所定の関数の値をその近似多項式F(x)を分解した和の多項式F1(x)+F2(x)を用いて取得するデータ処理の制御記述を有する。前記データ処理に用いる前記式F1(x)は前記データ処理ユニットの演算精度に対して正確に計算可能な次数と係数を有しF1(x)=BIG+SMALLとして表現可能である。F1(x)の絶対値はF2(x)の絶対値よりも大きく、BIGの絶対値はSMALLの絶対値よりも大きい。前記データ処理は、前記多項式F1(x)+F2(x)を用いた演算において、F(x)=BIG+SMALL+F2(x)を求めるとき、GIB+(SMALL+F2(x))を行う処理を含む。これにより、絶対値の小さいもの同士の加算で生じた丸め誤差はBIGに対して1度だけ作用する。丸め誤差が累積して大きな演算誤差を生ずる方向に最終解が丸められる可能性を低減することができる。
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば下記の通りである。
すなわち、演算装置による有効な演算ビット数を拡張することなく関数の近似多項式による演算精度を向上させることができる。
図1には本発明の一例に係るマイクロコンピュータが示される。同図に示されるマイクロコンピュータ1は、特に制限されないが、公知の半導体集積回路製造技術によって単結晶シリコンのような1個の半導体基板(半導体チップ)に形成される。このマイクロコンピュータ1は、データ処理ユニット20として、例えば、整数演算を行なう中央処理装置(CPU)2と共に、浮動小数点演算を行なう浮動小数点演算装置(FPU)3を有する。更に、ディジタル信号処理で多用される積和演算に特化した積和演算装置4を有する。
中央処理装置2は内部アドレスバス14及び内部データバス13に結合される。中央処理装置2は、特に制限されないが、汎用レジスタや算術論理演算器で代表される演算部2Aを有する。更に、中央処理装置2は、プログラムカウンタなどの制御用レジスタ群、そして命令のフェッチや解読並びに命令実行手順を制御したり演算制御を行う命令制御部2Bなどを有する。前記内部バス13,14には、前記CPU2が実行する演算制御プログラムなどを保有するプログラムメモリ(PGMM)21と、前記演算制御プログラムにしたがって前記CPU2がアクセスするワークメモリ(WRKM)22とを有する。中央処理装置2は、内部バス13,14に接続されたプログラムメモリ21から命令をフェッチし、その命令を解読し、解読結果に応ずる制御信号を生成することにより、当該命令に応じたデータ処理を行う。
浮動小数点演算装置(FPU)3及び積和演算装置4は内部データバス13に結合される。浮動小数点演算装置(FPU)3及び積和演算装置4は図示を省略する演算回路と共にデータレジスタを有し、このデータレジスタにメモリから演算データがロードされ、演算結果データは、そのレジスタからメモリにストアされる。前記ロード、ストアなどのためのアドレッシング動作はCPU2が行なう。したがって、FPU3及び積和演算装置4はメモリアクセスのためのメモリアドレシング能力を備える必要はない。これは、FPU3及び積和演算装置4によるメモリアドレシング回路の必要性を取り除いてチップ面積を節約するためである。
内部データバス13及び内部アドレスバス14はバスステートコントローラ6に結合される。マイクロコンピュータ1による外部アクセスは、前記バスステートコントローラ6に接続された外部バスインタフェース回路8で行う。外部バスインタフェース回路8は外部データバス18及び外部アドレスバス17に接続される。また、前記バスステートコントローラ6には、周辺データバス16及び周辺アドレスバス15を介して、例えば、クロック発生回路7、システムコントローラ12、シリアルコミュニケーションインタフェースコントローラ(SCI)9、タイマ10及びA/Dコンバータ11が結合される。それら周辺回路はデータレジスタや制御レジスタを有し、それらレジスタは前記バスステートコントローラ6を介してCPU2によってアクセスされる。
CPU2が管理する内部メモリ空間、外部メモリ空間、前記SCI9,タイマ10,A/Dコンバータ11などの周辺回路に対するアドレスエリアの割り当ては予め決定されている。前記バスステートコントローラ6は、アクセスエリア毎にアクセスサイクル数やバス幅などがCPU2によって設定される図示を省略するバスコントロールレジスタを有し、CPU2からのアクセスアドレスで指定されるメモリエリアに対するバス幅やアクセスサイクル数などのバス制御を行なって、バスサイクルを起動する。CPU2からのアクセスの指示はバスコマンド23としてバスステートコントローラ6に与えられる。バスコマンド23にはアクセスサイズの指定や、リード、ライト、メモリアクセス等のストローブ信号が含まれる。
割込みコントローラ5は複数の割込み要求に対する優先制御やマスク制御などを行なって割込み信号25をCPU2に与える。割込み要求は、バスステートコントローラ6からのバスエラー信号24のほか、SCI9、タイマ10、A/Dコンバータ11そして外部からの図示を省略する割込み要求信号によって与えられる。
前記マイクロコンピュータ1は、特に制限されないが、クロック発生回路7から出力されるクロック信号CLK0〜CLK2に同期動作される。前記システムコントローラ12はマイクロコンピュータ1の内蔵モジュールに対する動作停止の制御などを行う。
前記データ処理ユニット20は、プログラムメモリ21が保有する前記演算制御プログラムに従って所定の関数の値を演算するとき、その近似多項式F(x)を分解した和の多項式F1(x)+F2(x)を用いる。この多項式近似による演算として、奇関数sin(x)に適用した例を説明する。以下の説明において浮動小数点数は単精度とする。
前記近似多項式は、
sin(x) ≒F(x) = x +c1*x^3+c2*x^5 +c3*x^7+c4*x^9+c5*x^11
とする。この近似多項式の係数は図2の値とされる。ただしErrは最大相対誤差である。
sin(x) ≒F(x) = x +c1*x^3+c2*x^5 +c3*x^7+c4*x^9+c5*x^11
とする。この近似多項式の係数は図2の値とされる。ただしErrは最大相対誤差である。
前記近似多項式F(x)を2つの多項式に分解し、
sin(x)=F(x)=(x +C1*x^3) +((c1−C1)*x^3 +c2*x^5+c3*x^7+…)=F1(x)+F2(x)
とする。C1は−0.149335208038861fであり、単精度浮動小数点数によって誤差なく表現できる値とする。またF1(x)の絶対値はF2(x)の絶対値よりも大きく、例えばF2(x)/F(x)の絶対値は最大で0.01程度である。要するに、前記式F1(x)は前記データ処理ユニットの演算精度に対して正確に計算可能な次数と係数を有する。そして、F1(x)=BIG+SMALLとして表現する。BIGの絶対値はSMALLの絶対値よりも大きくする。前記多項式F1(x)+F2(x)を用いた演算において、F(x)=BIG+SMALL+F2(x)を求めるとき、GIB+(SMALL+F2(x))の演算を行う。これにより、絶対値の小さいもの同士の加算で生じた丸め誤差はBIGに対して1度だけ作用する。丸め誤差が累積して大きな演算誤差を生ずる方向に最終解が丸められる可能性を低減することができる。
sin(x)=F(x)=(x +C1*x^3) +((c1−C1)*x^3 +c2*x^5+c3*x^7+…)=F1(x)+F2(x)
とする。C1は−0.149335208038861fであり、単精度浮動小数点数によって誤差なく表現できる値とする。またF1(x)の絶対値はF2(x)の絶対値よりも大きく、例えばF2(x)/F(x)の絶対値は最大で0.01程度である。要するに、前記式F1(x)は前記データ処理ユニットの演算精度に対して正確に計算可能な次数と係数を有する。そして、F1(x)=BIG+SMALLとして表現する。BIGの絶対値はSMALLの絶対値よりも大きくする。前記多項式F1(x)+F2(x)を用いた演算において、F(x)=BIG+SMALL+F2(x)を求めるとき、GIB+(SMALL+F2(x))の演算を行う。これにより、絶対値の小さいもの同士の加算で生じた丸め誤差はBIGに対して1度だけ作用する。丸め誤差が累積して大きな演算誤差を生ずる方向に最終解が丸められる可能性を低減することができる。
図3には上記多項式演算による演算方法の具体例がC言語記述で示される。Floatは単精度浮動小数点数を意味する。入力xをd1、テンポラリな変数をd2,d2f,d3,b1,s1とする。b1はBIG/x、s1はSMALL/xである。
図3において、step1,step2,step3で多項式F1(d1)/d1=1.0+C1*d1^2を精度良く計算する。即ち、step1でd1^2を精度良く計算する。d2=d1*d1の計算で失われた小さい値をd2f=d1*d1-d2で回復している。この演算は前記非特許文献3における積和演算fmaf()を前提にしており、積の値総てが加算(減算)に参加することになる。
Step2ではb1=1.0f+C1*d2を精度良く計算する。b1=1.0f+C1*d2で失われた小さい値をs1=1.0f−b1、s1−=C1*d2の2つの実行文で回復している。
1.0f+C1*d2== b1 +s1
ここでの積和演算も前記非特許文献3における積和演算fmaf()を前提にしている。Step3でd1^2とd2との差分であるd2fの寄与をs1に加算している。
ここでの積和演算も前記非特許文献3における積和演算fmaf()を前提にしている。Step3でd1^2とd2との差分であるd2fの寄与をs1に加算している。
1.0f+C1*d1*d1==1.0f+C1*(d2+d2f)==1.0f+C1*d2+C1*d2f==b1+(s1+C1*d2f)=b1+新s1
以上でF1(d1)/d1=1.0+C1*d1*d1を精度良く演算したことになる。要するに、1.0+C1*d1*d1 == b1 + s1ということになる。但し、単精度浮動小数点数を用いているので、上記右辺のb1 + s1をこの時点で計算すればs1の情報が失われてしまうので、この段階では右辺の演算b1 + s1を留保しておく必要がある。
以上でF1(d1)/d1=1.0+C1*d1*d1を精度良く演算したことになる。要するに、1.0+C1*d1*d1 == b1 + s1ということになる。但し、単精度浮動小数点数を用いているので、上記右辺のb1 + s1をこの時点で計算すればs1の情報が失われてしまうので、この段階では右辺の演算b1 + s1を留保しておく必要がある。
図3のstep4からstep5まででF2(x)/xを計算している。ここではホーナー法による計算を行っている。Step6からstep7の演算ではsin(x)の近似多項式F(x)を以下の式で表されるようにして演算している。即ち、Sin(d1)≒F(d1)=F1(d1)+F2(d1)=d1*( b1+s1) +d1^3*ans…(ansはstep5直後のもの)とし、更にF(d1)=d1*b1+(d1*s1+d1^3*ans))とする。この最後の式通りに計算すれば、最終結果の丸め方向間違いを最小化できる。初項の絶対値が圧倒的に大きく、しかも誤差を持たないからである。最後の積和演算も前記非特許文献3における積和演算fmaf()を前提にしている。
図4にはsin(x)の近似多項式に対して単なるホーナー法を用いて演算を行う従来からの一般的な演算手順が示される。奇関数sin(x)の区間[-1.6, 1.6]を近似する多項式F(x) = x + c1*x^3 + c2*x^5+...+c5*x^11
をそのままホーナー法で計算する例である。
をそのままホーナー法で計算する例である。
図5には3種類の異なる演算区間において図4の従来からの演算手法と本発明の演算手法とによって生ずる丸め方向誤りの発生率が対比される。丸め方向に誤りを生じているかを判定するためなお基準の値は、倍精度で計算したsin(x)の値を単精度に丸めたものである。従来法では、入力の絶対値が大きくなると丸め方向を頻繁に間違える。しかし本発明の算法では入力の絶対値が大きい場合でも丸め方向の間違いは少ないままである。
本発明は偶関数にも適用可能である。例えばcos(x)の例を簡単に説明する。最初の2つをマクローリン展開の係数1.0、−0.5に固定した近似多項式を導出できる。そして下記式
cos(x) ≒ F(x)=1.0−0.5*x^2 +c2*x^4+c3*x^6+…=F1(x)+F2(x)
に示されるように、最初の2つの項をF1(x)とする。残りをF2(x)とする。このF1(x)の計算は図3のstep1、step2、step3で実現できる。このF2(x)の計算は図3のstep4からstep5と同様に計算できる。そして以下の等式
F(x) =b1+s1+F2(x)=b1+(s1+F2(x))
の最後の式通りに計算すれば、丸め方向間違いを最小化することができる。
cos(x) ≒ F(x)=1.0−0.5*x^2 +c2*x^4+c3*x^6+…=F1(x)+F2(x)
に示されるように、最初の2つの項をF1(x)とする。残りをF2(x)とする。このF1(x)の計算は図3のstep1、step2、step3で実現できる。このF2(x)の計算は図3のstep4からstep5と同様に計算できる。そして以下の等式
F(x) =b1+s1+F2(x)=b1+(s1+F2(x))
の最後の式通りに計算すれば、丸め方向間違いを最小化することができる。
偶関数cos(x)の更に別の例を説明する。最初の2つをマクローリン展開の係数1.0、−0.5に固定した近似多項式を導出できる。そしてF1(x)を以下の式
F1(x)=(1.0−0.25*x^2)^2
の通りとする。そして残りをF2(x)とする。要するに、下記式
cos(x)≒F(x)=1.0−0.25*x^2)^2+(c2-0.25^2)*x^4+c3*x^6+…= F1(x)+F2(x)
のようにする。このF1(x)の計算は図3のstep1,step2,step3でF1(x)の平方根をb1,s1に求めておき、以下の近似式
F1(x)=(b1+s1)^2≒b1*b1+2*b1*s1
で実現できる。なお、最初の項の乗算と2つの項の加算は留保する。そしてF2(x)の計算は図3のstep4からstep5と同様に計算できる。そして以下の等式
F(x)=b1*b1+2*b1*s1+F2(x)=b1*b1+(2*b1*s1+F2(x))
の最後の式通りに計算すれば、丸め方向間違いを最小化することができる。
F1(x)=(1.0−0.25*x^2)^2
の通りとする。そして残りをF2(x)とする。要するに、下記式
cos(x)≒F(x)=1.0−0.25*x^2)^2+(c2-0.25^2)*x^4+c3*x^6+…= F1(x)+F2(x)
のようにする。このF1(x)の計算は図3のstep1,step2,step3でF1(x)の平方根をb1,s1に求めておき、以下の近似式
F1(x)=(b1+s1)^2≒b1*b1+2*b1*s1
で実現できる。なお、最初の項の乗算と2つの項の加算は留保する。そしてF2(x)の計算は図3のstep4からstep5と同様に計算できる。そして以下の等式
F(x)=b1*b1+2*b1*s1+F2(x)=b1*b1+(2*b1*s1+F2(x))
の最後の式通りに計算すれば、丸め方向間違いを最小化することができる。
以上本発明者によってなされた発明を実施形態に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。
例えば、例えば本発明に適用可能な関数はsin(x)、cos(x)に限定されず、atan(x)など種々の奇関数及び偶関数に関する近似多項式演算に適用することができる。またlog(1+x)にも適用できる。
1 マイクロコンピュータ
2 中央処理装置
3 浮動小数点演算装置
4 積和演算装置
20 データ処理ユニット
21 プログラムメモリ
22 ワークメモリ
2 中央処理装置
3 浮動小数点演算装置
4 積和演算装置
20 データ処理ユニット
21 プログラムメモリ
22 ワークメモリ
Claims (11)
- データ処理ユニットと、前記データ処理ユニットが実行する演算制御プログラムを保有するプログラムメモリと、前記演算制御プログラムにしたがって前記データ処理ユニットがアクセスするワークメモリと、を有し、
前記データ処理ユニットは、前記演算制御プログラムに従って所定の関数の値を演算するとき、近似多項式F(x)を分解した和の多項式F1(x)+F2(x)を用い、
前記式F1(x)は前記データ処理ユニットの演算精度に対して正確に計算可能な次数と係数を有しF1(x)=BIG+SMALLとして表現可能であり、F1(x)の絶対値はF2(x)の絶対値よりも大きく、BIGの絶対値はSMALLの絶対値よりも大きく、
前記多項式F1(x)+F2(x)を用いた演算において、F(x)=BIG+SMALL+F2(x)を求めるとき、BIG+(SMALL+F2(x))を行うデータプロセッサ。 - 前記所定の関数の近似多項式は、F(x)=x+c1*x^3+c2*x^5+c3*x^7+c4*x^9+c5*x^11であり、
これに対応する和の多項式はF(x)=(x+C1*x^3)+((c1−C1)*x^3+c2*x^5+c3*d1^7+c4*x^9+c5*x^11)であり、
F1(x)=(x+C1*x^3)であり、
F2(x)=((c1−C1)*x^3+c2*x^5+c3*d1^7+c4*x^9+c5*x^11)であり、
C1は前記演算精度の範囲内のビット数で完全に表現できる浮動小数点数であり、
F1(x)/x=(1+C1*x^2)の部分演算において、1+C1*x^2の演算結果の上位桁の値をB1に格納し、下位桁の値をS1に格納し、
BIG=x*B1、SMALL=x*S1とする請求項1記載のデータプロセッサ。 - 前記所定の関数の近似多項式は、F(x)=c0+c1*x^2+c2*x^4+c3*x^6+c4*x^8+c5*x^10であり、
これに対応する和の多項式はF(x)=(c0+C1*x^2)+((c1−C1)*x^2+c2*x^4+c3*d1^6+c4*x^8+c5*x^10)であり、
F1(x)=(c0+C1*x^2)であり、
F2(x)=((c1−C1)*x^2+c2*x^4+c3*d1^6+c4*x^8+c5*x^10)であり、
C1は前記演算精度の範囲内のビット数で完全に表現できる浮動小数点数であり、
F1(x)=(c0+C1*x^2)の部分演算において、c0+C1*x^2の演算結果の上位桁の値をB1に格納し、下位桁の値をS1に格納し、
BIG=B1、SMALL=S1とする請求項1記載のデータプロセッサ。 - 前記C1は前記データ処理ユニットの演算精度に対して丸めを必要としない正又は負の値である請求項2又は3記載のデータプロセッサ。
- 前記関数は偶関数又は奇関数である請求項1記載のデータプロセッサ。
- コンピュータ装置が演算制御プログラムを実行することにより、所定の関数の値をその近似多項式F(x)を分解した和の多項式F1(x)+F2(x)を用いて取得するデータ処理方法であって、
前記式F1(x)は前記コンピュータ装置の演算精度に対して正確に計算可能な次数と係数を有しF1(x)=BIG+SMALLとして表現可能であり、F1(x)の絶対値はF2(x)の絶対値よりも大きく、BIGの絶対値はSMALLの絶対値よりも大きく、
前記多項式F1(x)+F2(x)を用いた演算において、F(x)=BIG+SMALL+F2(x)を求めるとき、BIG+(SMALL+F2(x))を行うデータ処理方法。 - 前記所定の関数の近似多項式は、F(x)=x+c1*x^3+c2*x^5+c3*x^7+c4*x^9+c5*x^11であり、
これに対応する和の多項式はF(x)=(x+C1*x^3)+((c1−C1)*x^3+c2*x^5+c3*d1^7+c4*x^9+c5*x^11)であり、
F1(x)=(x+C1*x^3)であり、
F2(x)=((c1−C1)*x^3+c2*x^5+c3*d1^7+c4*x^9+c5*x^11)であり、
C1は前記演算精度の範囲内のビット数で完全に表現できる浮動小数点数であり、
F1(x)/x=(1+C1*x^2)の部分演算において、1+C1*x^2の演算結果の上位桁の値をB1に格納し、下位桁の値をS1に格納し、
BIG=x*B1、SMALL=x*S1とする請求項5記載のデータ処理方法。 - 前記所定の関数の近似多項式は、F(x)=c0+c1*x^2+c2*x^4+c3*x^6+c4*x^8+c5*x^10であり、
これに対応する和の多項式はF(x)=(c0+C1*x^2)+((c1−C1)*x^2+c2*x^4+c3*d1^6+c4*x^8+c5*x^10)であり、
F1(x)=(c0+C1*x^2)であり、
F2(x)=((c1−C1)*x^2+c2*x^4+c3*d1^6+c4*x^8+c5*x^10)であり、
C1は前記演算精度の範囲内のビット数で完全に表現できる浮動小数点数であり、
F1(x)=(c0+C1*x^2)の部分演算において、c0+C1*x^2の演算結果の上位桁の値をB1に格納し、下位桁の値をS1に格納し、
BIG=B1、SMALL=S1とする請求項5記載のデータ処理方法。 - コンピュータ装置によって実行される演算制御プログラムであって、前記演算制御プログラムは、所定の関数の値をその近似多項式F(x)を分解した和の多項式F1(x)+F2(x)を用いて取得するデータ処理の制御記述を有し、
前記データ処理に用いる前記式F1(x)は前記データ処理ユニットの演算精度に対して正確に計算可能な次数と係数を有しF1(x)=BIG+SMALLとして表現可能であり、F1(x)の絶対値はF2(x)の絶対値よりも大きく、BIGの絶対値はSMALLの絶対値よりも大きく、
前記データ処理は、前記多項式F1(x)+F2(x)を用いた演算において、F(x)=BIG+SMALL+F2(x)を求めるとき、GIB+(SMALL+F2(x))を行う処理を含む演算制御プログラム。 - 前記所定の関数の近似多項式は、F(x)=x+c1*x^3+c2*x^5+c3*x^7+c4*x^9+c5*x^11であり、
これに対応する和の多項式はF(x)=(x+C1*x^3)+((c1−C1)*x^3+c2*x^5+c3*d1^7+c4*x^9+c5*x^11)であり、
F1(x)=(x+C1*x^3)であり、
F2(x)=((c1−C1)*x^3+c2*x^5+c3*d1^7+c4*x^9+c5*x^11)であり、
C1は前記演算精度の範囲内のビット数で完全に表現できる浮動小数点数であり、
F1(x)/x=(1+C1*x^2)の部分演算において、1+C1*x^2の演算結果の上位桁の値をB1に格納し、下位桁の値をS1に格納し、
BIG=x*B1、SMALL=x*S1とする請求項9記載の演算制御プログラム。 - 前記所定の関数の近似多項式は、F(x)=c0+c1*x^2+c2*x^4+c3*x^6+c4*x^8+c5*x^10であり、
これに対応する和の多項式はF(x)=(c0+C1*x^2)+((c1−C1)*x^2+c2*x^4+c3*d1^6+c4*x^8+c5*x^10)であり、
F1(x)=(c0+C1*x^2)であり、
F2(x)=((c1−C1)*x^2+c2*x^4+c3*d1^6+c4*x^8+c5*x^10)であり、
C1は前記演算精度の範囲内のビット数で完全に表現できる浮動小数点数であり、
F1(x)=(c0+C1*x^2)の部分演算において、c0+C1*x^2の演算結果の上位桁の値をB1に格納し、下位桁の値をS1に格納し、
BIG=B1、SMALL=S1とする請求項9記載の演算制御プログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005147515A JP2006323710A (ja) | 2005-05-20 | 2005-05-20 | データプロセッサ、データ処理方法及び演算制御プログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005147515A JP2006323710A (ja) | 2005-05-20 | 2005-05-20 | データプロセッサ、データ処理方法及び演算制御プログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2006323710A true JP2006323710A (ja) | 2006-11-30 |
Family
ID=37543328
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2005147515A Withdrawn JP2006323710A (ja) | 2005-05-20 | 2005-05-20 | データプロセッサ、データ処理方法及び演算制御プログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2006323710A (ja) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111913685A (zh) * | 2019-05-09 | 2020-11-10 | 富士通株式会社 | 运算处理装置、运算处理方法和非暂态计算机可读介质 |
WO2021106253A1 (ja) * | 2019-11-27 | 2021-06-03 | 株式会社コアコンセプト・テクノロジー | 情報処理装置、プログラム、及び情報処理方法 |
TWI753668B (zh) * | 2019-11-27 | 2022-01-21 | 日商核心概念科技股份有限公司 | 資訊處理裝置、電腦程式、記錄媒體及資訊處理方法 |
-
2005
- 2005-05-20 JP JP2005147515A patent/JP2006323710A/ja not_active Withdrawn
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111913685A (zh) * | 2019-05-09 | 2020-11-10 | 富士通株式会社 | 运算处理装置、运算处理方法和非暂态计算机可读介质 |
WO2021106253A1 (ja) * | 2019-11-27 | 2021-06-03 | 株式会社コアコンセプト・テクノロジー | 情報処理装置、プログラム、及び情報処理方法 |
TWI753668B (zh) * | 2019-11-27 | 2022-01-21 | 日商核心概念科技股份有限公司 | 資訊處理裝置、電腦程式、記錄媒體及資訊處理方法 |
US11334317B2 (en) | 2019-11-27 | 2022-05-17 | Core Concept Technologies Inc. | Information processing apparatus, program, and information processing method configured to handle a high-precision computer number |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI470545B (zh) | 用以執行範圍檢測之設備,處理器,系統,方法,指令,及邏輯 | |
EP3451153B1 (en) | Apparatus and method for executing transcendental function operation of vectors | |
US7752592B2 (en) | Scheduler design to optimize system performance using configurable acceleration engines | |
US5341320A (en) | Method for rapidly processing floating-point operations which involve exceptions | |
JP5014920B2 (ja) | 回路設計方法、ならびにその方法により製造される集積回路 | |
KR20210028075A (ko) | 범위-특정 계수 세트를 사용하여 단항 함수를 수행하는 시스템 | |
US9170771B2 (en) | Residue-based error detection for a processor execution unit that supports vector operations | |
JP2006323710A (ja) | データプロセッサ、データ処理方法及び演算制御プログラム | |
WO2019023910A1 (zh) | 数据处理方法和设备 | |
US10180826B2 (en) | Estimation of bit widths of variables based on liveness | |
EP2181389A2 (en) | Data processing with protection against soft errors | |
JP2019101962A (ja) | 制御装置 | |
JP2004005395A (ja) | 演算処理装置、半導体デバイス | |
CN113360158A (zh) | 基于向量掩码和向量计数距离的循环向量化 | |
JP5437878B2 (ja) | 情報処理装置 | |
JP2006059085A (ja) | データプロセッサ、データ処理方法及び演算処理プログラム | |
CN109992892B (zh) | 一种参考模型校验方法、装置、电子设备及可读存储介质 | |
CN109669667B (zh) | 一种在定点dsp芯片上实现的数据处理方法及装置 | |
JP2006059084A (ja) | データプロセッサ、データ処理方法及び演算処理プログラム | |
Tiwari et al. | MICROPROCESSOR 8085 AND ITS APPLICATION: A CRITICAL REVIEW | |
JP4109181B2 (ja) | 論理回路、および、それを使用した浮動小数点演算回路とマイクロプロセッサ | |
JP2008217687A (ja) | ローカル分岐履歴を用いた分岐予測装置及び分岐予測方法 | |
US8566772B2 (en) | Method, computer program and computing system for optimizing an architectural model of a microprocessor | |
WO2017033336A1 (ja) | 回路設計支援装置および回路設計支援プログラム | |
JP3773033B2 (ja) | データ演算処理装置及びデータ演算処理プログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A300 | Withdrawal of application because of no request for examination |
Free format text: JAPANESE INTERMEDIATE CODE: A300 Effective date: 20080805 |