JP2617733B2 - 初等関数演算装置 - Google Patents

初等関数演算装置

Info

Publication number
JP2617733B2
JP2617733B2 JP62225656A JP22565687A JP2617733B2 JP 2617733 B2 JP2617733 B2 JP 2617733B2 JP 62225656 A JP62225656 A JP 62225656A JP 22565687 A JP22565687 A JP 22565687A JP 2617733 B2 JP2617733 B2 JP 2617733B2
Authority
JP
Japan
Prior art keywords
value
elementary function
iterative
arithmetic
elementary
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
JP62225656A
Other languages
English (en)
Other versions
JPS63184135A (ja
Inventor
栄樹 近藤
茂樹 森永
隆男 柳沼
剛 浅井
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Publication of JPS63184135A publication Critical patent/JPS63184135A/ja
Application granted granted Critical
Publication of JP2617733B2 publication Critical patent/JP2617733B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods 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/544Methods 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/5446Methods 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 using crossaddition algorithms, e.g. CORDIC

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Computing Systems (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Complex Calculations (AREA)

Description

【発明の詳細な説明】 〔産業上の利用分野〕 本発明は、初期関数演算装置に係り、特に精度の良い
初等関数の値を高速に求めるのに好適な2進の初等関数
演算装置に関する。
〔従来の技術〕
従来の初等関数を求める一つの方法であるコーデイク
(CORDIC)法は、ア ユニイフイード アルゴリズム
フオー エレメンタリー フアンクシヨンズ ボリユー
ム38 1971年 スプリングジヨイント コンピユータ
コンフアレンスページ379〜385(A Unified Algorithm
for Elementary Functions、Vol.38.1971SJCC,PP.379−
385)に記載のように、座標ベクトルを逐次回転して初
等関数を求めるアルゴリズムである。
その逐次反復式は(1.1)式で表される。
ここでXi,YiはベクトルのXY座標系でのX軸,Y軸の値
であり、Ziはベクトルの逐次反復回転によるベクトルの
回転角(α)の累積であり、δは任意の変分であ
る。
ここで、mは求める初等関数が三角関係(逆三角関数
を含む)か双曲線関数(逆双曲線関数を含む)によつて
m=1,m=−1の2値を取るパラメータである。また、
PはYiまたはZiを零に収束させるための極性であり、各
反復過程でP=±1の2値をとる。
ここで、Zi+1を零にするようにPの極性を制御し、n
回反復したXi+1,Yi+1,Zi+1の値をXn,Yn,Znとすれば、次
の(1.2)式の結果を得る。
ここで、K1は反復回数nとδによつて定まる定数で
あり、 で表わされる。
次に、Yi+1を零にするようにPの極性を制御し、n回
反復すると、その結果は(1.3)式となる。
従がつて(1.2)式,(1.3)式で表わされるように、
Xi,Yi,Ziの初期値であるX0,Y0,Z0を適切に選択すれば、
(例えばcos を求める場合は(1.2)式において、X0=1/K1,Y0=0,Z0
=ωと選択する。)Xn,Yn,Znのいずれかにその値を求め
ることができる。以上がCORDIC法の基本アルゴリズムで
ある。
一方、CORDIC法を2進の演算器でハードを構成する上
では、δ=2-j(j:正の整数)を引用し、(1.1)式の
逐次反復をする過程で、Yi・δi,Xi・δの乗算をバレ
ルシフトすることで実現しており、αは反復数毎にメ
モリ(ROM)に格納しているデータを利用している。し
たがつて、レジスタと加減算器とバレルシフタとメモリ
によつて初等関数演算装置が構成されている。
第2図は従来の初等関数演算装置を示したものであ
る。第2図において3つの初期値(a0,b0,c0)を与え
る。ここで、a0,b0の与え方は図示するものとは逆の形
で入力しても同じであるが、100にb0を、101にa0を与え
るものでもよい。3つの初期値の1つは求める初等関数
の引数(cos(ω)の場合、引数とはωを意味する。)
であり、他の二つは求めるべき初等関数に応じて定める
定数である。3つの初期値は演算器100,101,102によりa
i+1=ai±bi・δi,bi+1=bi±aii,ci+1=ci±cRi
関係式にもとづいてそれぞれn回逐次反復演算を行う。
δは任意の変分である。cRiは反複数に応じた定数で
あり、メモリ103にあらかじめ格納されている。
反復過程でbiまたはciの値はコントローラ104に入力
され、求める初等関数に応じて制御信号aにより演算器
のi+1回における演算が加算か減算かを制御する。n
回反復後のそれぞれの出力an,bn,cnは求める初等関数に
応じてコントローラの制御信号bにより制御されるマル
チプレクサ105によりan,bn,cnのいずれかを選択し、出
力dnを得る。マルチプレクサ105が1の位置に選択され
ればdn=anであり2の場合はdn=bnであり3つの場合は
dn=cnである。このdnが初等関数値である。
〔発明が解決しようとする問題点〕
上記従来のコーデイク法で2進数の初等関数演算装置
を構成した場合、δに2-jの関数を用いれば、(1.1)
式中のXi・δi,Yi・δの乗数はバレルシフターで実現
できる。したがつて有効な最大の反復回数はレジスタの
ビツト数となる。それ以上の反復は乗算項が一方の加算
項に対し全て桁落ちとなるため、無意味となる。
一方、精度の良い初等関数値を得るためには、Ziまた
はYiを十分に収束させる必要が有る。そのため、コーデ
イツク法では2進数の初等関数演算装置において最大精
度を得るためには、レジスタのビツト数と同じだけの反
復が必要となる。反復回数が少ない場合は、ZiまたはYi
が十分零に収束せず、求めた初期関数値に誤差を含む。
したがつて、精度を良くするには反復回数が多くなるた
め、初等関数演算スピードが遅くなり、合わせて反復回
数分だけ必要な(1.1)式のαのデータを格納するメ
モリの容量が増す。つまり、従来技術においては、精度
を良くするには反復演算回数を多くすることが必要であ
り、しかも反復演算回数を多くするには、反復演算回数
に応じた定数を格納するメモリとして大容量のものが必
要である。
本発明の目的は、精度を低下させることなく反復演算
回数を低減することができる初等関数演算装置を提供す
ることにある。
〔問題点を解決するための手段〕
従来のコーデイツク法において比較的少ないn回の反
復回数でXn,Yn,Znのいずれかに求められる初等関数の値
をCn、真の初等関数の値をTn、誤差をEnとすれば、Cn
Tn+Enと表わすことができる。
コーデイツク法で誤差Enが発生する原因は、Ziまたは
Yiが十分零に近値してしないことにある。その零との偏
差をΔeとすれば、EnはΔeの値によつて変化する関数
と見ることができる。その関数をf(Δe)とすれば上
式はCn=Tn+f(Δe)となる。
したがつて、 Tn=Cn−f(Δe) …(2.1) となる。つまり誤差を含んだCnよりΔeによつて変化す
る誤差f(Δe)を引くことにより真値Tnを求めること
が可能となる。したがつて(2.1)式は誤差補正を行う
ことである。
以上のことから本発明は、XY座標系における座標ベク
トルを複数回(n回)回転したときのX軸の値(Xn)を
求める初等関数の値として第1逐次反復式Xi+1=Xi+
m・P・Yi・δiに従って反復演算する第1反復演算器
と、XY座標系における座標ベクトルを複数回(n回)回
転したときのY軸の値(Yn)を求める初等関数の値とし
て第2逐次反復式Yi+1=Xi−P・Xi・δiに従って反
復演算する第2反復演算器と、XY座標系における座標ベ
クトルを複数回(n回)回転したときの座標ベクトルの
回転角(αi)の累積(Zn)を第3逐次反復式Zi+1=
Zi+P・αi(ただし、 δiは任意の変分、PはYiまたはZiを零に収束させるた
めの極性、mは初等関数によって1または−1の値を取
るパラメータを示す。)に従って反復演算する第3反復
演算器と、第3反復演算器の各反復演算時に使用する定
数として座標ベクトルの各回転時の回転角(αi)に関
する値を格納する定数メモリと、第2反復演算器の演算
値または第3反復演算器の演算値を零に収束するための
極性を第2反復演算器の演算値または第3反復演算器の
演算値に従って各反復演算毎に判定しこの判定結果を加
算または減算の指示として第1反復演算器と第2反復演
算器および第3反復演算器に出力するコントローラとを
備え、第1反復演算器と第2反復演算器および第3反復
演算器のうち一つの反復演算器には求める初等関数の引
数を初期値として入力し、他の二つの反復演算器には求
める初等関数によって定まる定数であって相異なる値を
それぞれ初期値として入力してなる初等関数演算装置に
おいて、 前記第1反復演算器と第2反復演算器および第3反復
演算器により反復演算された複数回(n回)目の各演算
値を基にこれら演算値のうち一つの演算値を他の二つの
演算値によって補正する補正演算器を備えてなることを
特徴とする初等関数演算装置を構成したものである。
〔作用〕
上述した本発明は、上記(2.1)式で示される誤差補
正を行うものであり、この誤差補正は少ない反復演算回
数で求めた誤差の多い初等関数値の誤差を打ち消すよう
に動作する。それによつて少ない反復演算回数で精度の
良い初等関数の値を求めることができる。したがつて、
初等関数演算スピードを高速にし合わせて初等関数演算
に必要なメモリ容量を少なくでき、精度も悪くならな
い。
〔実施例〕
次に、本発明の実施例を図面に基づいて説明する。
初等関数の値と誤差の関係 まず、(1.1)式についてn回反復後の値をXn,Yn,Zn
とした場合における各初等関数の値と誤差の関係につき
考察する。
1.Zi+1を零へ収束させる場合 n回反復後のZi+1の値をZeとすると(1.1)式は
(3)式となる。
したがつてα=Ze−Z0となり、この式を(3)式の
Xn,Ynに代入整理すると(4)式になる。
ここでZeが0に近いなら であることに着目し、この式を(4)式に代入し整理す
ると(5)式が得られる。
(5)式において反復前の初期値の一例としてX0=1/
K,Y0=0,Z0=ωを代え、代入すると(6)式を得る。
(6)式においてZe 2≪1であるためZe 2は無視し、更
にZe=Znであることから(6)式より(7)式を得る。
(7)式が求めるべき誤差と関係式であり、アンダー
ライン部分が誤差補正式である。
2.Yi+1を零へ収束させる場合 Xi,YiとX軸のなす角AiとするとAi+1=Ai−αとな
りn回反復後は(8)式となる。
n回反復後のYnの値をYeとすれば、Anは、 この式を(8)式に代入すると(9)式となる。
(9)式においてYeが零に近いなら であることに着眼し、この式を(9)式に代入すると
(10)式となる。
ここで(10)式を(1.3)式に代入し、初期値の1例
としてX0=1,Y0=ω,Z0=0を代入し整理すると下式が
得られる。
ここでYe=Ynであるから上式は(11)式となる。
(11)式が求めるべき誤差との関係式であり、アンダ
ーライン部分が誤差補正式である。
以上のようにZi+1を零へ収束させて求める初等関数は
(7)式のごとく1回乗算及び加減算であり、Yi+1を零
へ収束させて求める初等関数は(11)式のごとく1回の
除算及び加算で誤差補正する方法が導かれた。前者のZ
i+1を零へ収束させる時の誤差補正方法を示したのが第
3図のフローチヤートであり、後者のYi+1を零へ収束さ
せる時の誤差補正方法を示したのが第4図のフローチヤ
ートである。
第3図において初期値X0,Y0,Z0をセツトし(ステツプ
300)、i=0をセツトする(ステツプ301)。次にZi
±の極性を判定し(ステツプ302)、その適正に応じて
下式の演算を実行する。
(1)Zi≧0の場合(ステツプ303) (2)Zi<0の場合(ステツプ304) mは三角関数である場合1、双曲線関数である場合−
1を取る。
次に反復回数をチエツクし(ステツプ305)、規定回
数に達していない場合はiをi+1に置き換えZiの極性
判定に戻る(ステツプ306)。規定回数に達すると、誤
差補正演算を下式で実施する(ステツプ307)。
(1)Xnによつて初等関数の値を求める場合 dn=Xn-m・Yn・Zn (2)Ynによつて初等関数の値を求める場合 dn=Yn+Xn・Zn この誤差補正を行つた値dnを誤差の少ない初等関数値
として出力する(ステツプ308)。
第4図において初期値X0,Y0,Z0をセツトし(ステツプ
400)、i=0をセツトする(ステツプ401)。次にYi
±の極性を判定し(ステツプ402)、その極性に応じて
下式の演算を実行する。
(1)Yi≧0の場合(ステツプ403) (2)Yi<0の場合(ステツプ404) mは三角関数なら1、双曲線関数なら−1を取る。次
に反復関数をチエツクし(ステツプ405)、規定回数に
達していない場合はiをi+1に置き換えZiの極性判定
に戻る(ステツプ406)。規定回数に達すると、誤差補
正演算を下式で実施する(ステツプ407)。
dn=Zn+Yn/Xn この誤差補正を行つた値dnを誤差の少ない初等関数値
として出力する(ステツプ408)。
初等関数演算装置の構成 第1図に前記の誤差補正方式を用いた初等関数演算装
置を示す。
第1図において、求める初等関数の引数及び求める初
等関数に応じて定まる2つの定数の3つの初期値(a0,b
0,c0)を入力し、その初期値を入力された演算器100,10
1,102はそれぞれai+1=ai±bi・δi,bi+1=bi±ai
δi,ci+1=cii±cRiの関係式に基づいてn回の逐次反復
演算を行う。δは任意の変分である。cRiは反復数に
応じた定数でありメモリ103にあらかじめ格納されてい
る。
例えば、δiとして2-j(j=正の整数)を用い、δ
iの値を2-1〜2-nとしたときには、cRi=αiとして、t
an-1(2-1)〜tan-1(2-n)の値がメモリ103に格納され
る。これらの値が設定されると、各演算器100、101、10
2は反復演算器として、i=0〜nの値を順次反復演算
することになる。即ち、演算器100は、i=0〜nの値
として、a1=a0±b0・2-1〜an+1=an±bn・2-nを反復演
算し、演算器101は、i=0〜nの値として、b1=b0±a
0・2-1〜bn+1=bn±an・2-nを反復演算し、演算器102
は、i=0〜nの値として、c1=c0±tan-1(2-1)〜c
n+1=cn±tan-1(2-n)を反復演算する。ここで、初等
関数のうち三角関数、例えば、sin(ω)、cos(ω)の
値を求めるときには、各演算器100、101、102に対する
初期値a0、b0、c0として、a0=1/K1(K1は反復回数nと
δiによって定まる定数。)b0=0、c0=ωを入力す
る。これらの初期値は、XY座標系において、a0=1/K1
b0=0がそれぞれX軸上の座標(1/K1,0)を示し、c0
ωが、求める三角関数の座標ベクトルとX軸とのなす角
度を示す。そして、まず、座標(1/K1,0)を基準とした
座標ベクトルと、求める三角関数の座標ベクトルとの差
をc1として求め、c1が0に収束してないときには、c1
座標を基準とした座標ベクトルを求め、この座標ベクト
ルと、求める三角関数の座標ベクトルとの差をc2として
求める。このような処理をn回繰返し、cnの値が0に収
束するように、aiとbiの値を基に座標ベクトルを順次回
転させる。この場合(tan-1(2-i)=π/4としたと
き)、座標ベクトルの回転角度は、π/4、π/4±π/8、
π/4±π/8±π/16、……のように、順次小さくなる。
そして、n回目の演算で座標として、(an,bn)が得ら
れたときには、anの値からcos(ω)が求められ、bnの
値からsin(ω)が求められる。
但し、n回目の演算で得られた値からsin(ω)、cos
(ω)の値を求めたのでは、誤差を含むことがあるの
で、(7)式に従った補正演算を演算器106によって実
行することとしている。即ち、cos(ω)を求めるとき
には、dn=an−m・bn・cnを演算し、この演算値からco
s(ω)を求める。即ち、n回目の演算値として得られ
たcnの値が十分に0に収束しないときには(真値との間
に偏差があるとき)、bn・cnの積をanの値から減算し、
この減算により得られた値をanの真値dnとしている。一
方、sin(ω)を求めるときには、dn=bn−an・cnを演
算し、この演算値からsin(ω)を求める。また、双曲
線関数を求めるときには、(11)式に従った補正演算と
して、dn=cn+(bn/an)の値を求める。
本実施例によれば、規定の反復回数(n回)だけ反復
演算を実行した後、(7)式または(11)式に従った補
正演算を実行するようにしているため、初等関数の値と
して精度の良いものを求めることができる。さらに、規
定の反復回数(n回)よりも少ない回数で反復演算をや
めて、(7)式または(11)式に従った補正演算を実行
することで、演算速度を高めたり、定数を格納するメモ
リ103の容量を少なくしたりすることができる。
初等関数演算装置の回路例 以下前述の初等関数演算装置を2進数で実現した場合
の2進の初等関数演算装置の一実施例を第3図〜第9図
により説明する。
第8図は、浮動小数点演算を可能にするマイクロコン
ピュータシステム図を示す。このシステムは、浮動小数
点演算を行うために、CPU(Central Processing Unit)
800とFPU(Floating−Point Processing Unit)801の2
つの演算回路を持つものである。CPU800とFPU801とは好
ましくは異なる単一の半導体基板に設け集積化される
が、CPU800とFPU801とが同一の半導体基板に集積化され
ても良い。CPU800は本来、整数型タイプのデータのみを
演算するもので浮動小数点型タイプのデータを演算する
ことができない。一方、FPU801は、浮動小数点型タイプ
のデータの四則演算及び初等関数演算を実行することが
できる。ROM(Read Only Memory)802は、前記CPU800と
FPU801の2つの演算回路へのマクロ命令が混在するプロ
グラムを格納している。しかし、マクロ命令を解読でき
るのはCPU800である。そのため、FPU801はCPU800とのプ
ロトコルにより、インターフエイスされる。ここで、こ
のようなFPU801をプロセツサと呼ぶことにする。RAM(R
andom Access Memory)803は、整数型や浮動小数点の引
数データを保持するものである。804は、CPU800から出
力されるアドレス・バスである。805は、データ・バス
で、806は、インターフエイスに関するための制御を行
うコントロール・バスである。
第9図は、浮動小数点演算コプロセツサ(FPU)801の
ブロツク図を示す。
900は高速のコプロセツサ・インターフエイスを実行
するバス・コントロール・ユニツト(BCU)である。該B
CU900に接続されている入力信号は、CLK.D31〜D0, CPST2〜CPST0,AT3〜AT0,A2〜A0である。CLKは、外部か
ら供給されるクロツク信号で、浮動小数点演算プロセツ
サの内部動作の基準となる信号である。D31〜D0はデー
タ信号である。
は、FPU801を選ぶためのチツプセレクト信号である。
はアドレス・バス804上にアドレス信号が存在すること
を示すアドレス・ストローブ入力信号である。
はデータ・バス805上にデータ信号が存在することを示
すデータ・ストローブ入力信号である。
はデータ転送の方向を示す入力信号であり、CPUが外部
メモリをリードする場合は“1"となり、ライトの場合で
は“0"となる。
はデータ・バス805上のデータ転送が終了したことを示
す。
は、コプロセツサ・データ・イネーブル信号であり、こ
の信号がアサートされて、1クロツク・サイクル経過
後、FPU801は、デステイネーシヨンオペランドをデータ
・バス805上に出力する。CPST2〜CPST0は、FPU801の内
部動作状態を示す信号である。また、AT2〜AT0はCPU800
より出力されるアクセスの種類を示す信号である。
FPU801は、CPU800からAT2〜AT0を受けて動作し、動作
状態としてCPST2〜CPST0をCPU800に返すことで、コプロ
セツサ・プロトコルを実行する。
901は、外部型式で記述されている単精度データ、倍
精度データおよび拡張倍精度データを内部型式(拡張倍
精度型式)のデータに変換するフオーマツト交換ユニツ
ト(FCU)である。
FCU901への入出力データは、BCU900と変換データ・バ
ス806を介して、受渡しが行われる。
902は、浮動小数点演算を行う演算装置(FU)であ
る。EU902は、FCU901から変換された内部型式(拡張倍
精度)のデータを演算データ・バス907を介して受取
り、コマンドを命令バス908を介して受取る。902は内部
に上述のコマンドおよびデータにより初等関数演算を含
む浮動小数点演算を実行するため、第3図,第4図に示
される処理フローと実行するマイクロプログラム記憶装
置と命令シーケンサと第5図,第6図に示されるレジス
タとMPXとバレルシフタとAUとメモリと極性判定器など
から構成される。
第5図は4つの演算ユニツトを用いて演算処理を並列
化し、高速化を図つた実施例であり、第6図は1つの演
算装置を用いて演算処理を逐次処理とし、1つの装置の
小形化を図つた実施例である。
第5図において、1点鎖線で囲まれた部分106が本発
明における誤差補正を実施する誤差補正演算ユニツト部
分である。初期値は入力1,2,3より入力され、MPX(マル
チプレクサ)4,MPX5,MPX6はコントローラ104よりfの制
御信号で制御され初期値をそれぞれレジスタ7,レジスタ
8,レジスタ9にセツトする。次にレジスタ7,レジスタ8,
レジスタ9の出力はそれぞれAU(算術演算器)10,AU11,
AU12の入力のA側へ入力される。さらにレジスタ7,レジ
スタ8の出力はaの制御信号でコントローラ104に制御
され、任意のビツト数のシフトを行うバレルシフタ13,
バレルシフタ14にそれぞれ入力される。バレルシフタ1
3,14では、反復回数に応じい入力値をバレルシフトす
る。バレルシフトされたバレルシフタ13,バレルシフタ1
4の出力はコントローラ104よりbの制御信号で制御され
たMPX15,MPX16により選択され、バレルシフタ13の出力
はAU11,バレルシフタ14の出力はAU10のそれぞれB側へ
入力される。一方、関数によつてレジスタ8またはレジ
スタ9の極性を判定するようにjの制御信号で制御され
た極性判定器の出力eはコントローラ104内で変換さ
れ、cの制御信号でAU10,AU11,AU12を制御し、それによ
りAU10,AU11,AU12では加減算を行う。AU12ではレジスタ
9の出力とiの制御信号によつて制御されるメモリ103
のデータを前述のbの制御信号で制御されたMPX25を通
じてB側へ入力される。AU10,AU11,AU12の出力は反復回
数が現在値以内であればMPX4,MPX5,MPX6を通じてレジス
タ7,レジスタ8,レジスタ9のそれぞれにセツトされる。
以上により前述の(1.1)式の反復計算が実現され、n
回反復後はAU10,AU11,AU12の出力に(1.2)式のXn,Yn,Z
nの値が得られる。
n回反復後、本発明の要めである誤差補正を行う誤差
補正演算ユニツト106に前述のAU10,AU11,AU12の出力は
入力される。各出力はgの制御信号により制御されるMP
X17,MPX18により、AU19にAU10の出力とAU11の出力、AU1
1の出力とAU12の出力、AU10の出力とAU12の出力の3種
類のパターンで入力される。hの制御信号で制御される
AU19は入力されたデータを、求める初等関数によつて乗
算または除算を実施する。その出力はbの制御信号によ
り制御されるMPX15,MPX16,MPX25のいずれか1つを通じ
てAU10がAU11かAU12のB側へ入力され、レジスタ7,レジ
スタ8,レジスタ9に格納されている値であるXn,Yn,Zn
値と減加算され、その出力をレジスタ7,レジスタ8,レジ
スタ9のいずれかに格納し、その値を外部へ出力する。
以上誤差補正演算ユニツト106により、レジスタ7,レジ
スタ8,レジスタ9のいずれかに前述の(7)式または
(11)式の誤差の少ない初等関数の値を求めることがで
きる。
第6図において、初期値(Xi,Yi,Zi;i=0)はレジス
タ24に格納されている。それらのデータはまずXiはAU22
のA側へ入力され、Yiはコントローラ104からjの制御
信号により制御されるMPX20によりバレルシフタ21側に
切換えられる。バレルシフタ21はコントローラ104から
kの制御信号で反復回路iに応じて入力側をバレルシフ
トしAU22のB側へ入力する。AU22は制御信号lによりコ
ントローラ104より制御され加減算を行う。AU22の出力X
i+1はレジスタ24へ格納される。次にYiはAU22のA側へ
そしてXiはMPX20を通り、バレルシフタ21を通つてAU22
のB側へ入力されのそAU22の出力はYi+1としてレジスタ
24へ格納される。それらの制御は前記のコントローラ10
4の制御信号j,k,lによつて行われる。次に、ZiはAU22の
A側へ入力され、B側にはメモリ103より読み出した反
復数に応じた定数を制御信号jによつて制御されるMPX2
0を通つて入力される。AU22は制御信号lによつて加減
算を行い、その出力Zi+1をレジスタ24へ格納する。以上
の一連の算術演算をn回反復する。なお、その反復過程
において、Yi+1,Zi+1の値を求める初等関数に応じてコ
ントローラ104の制御信号mにより、いずれか一方が極
性判定器23に入力され、極性判定器23は入力された値の
正負を判定し、その判定信号nはコントローラ104へ入
力され、コントローラ104において次の反復時に加算か
減算かの制御信号lを作る。
n回反復後、レジスタ24にはXn,Yn,Znの値が残る。コ
ントローラ104は次にAU22を用いてXn,・ZnかYn・Znまた
はYn/Xnの算術演算を加減算の逐次処理にて実行し、そ
の値ERをレジスタ24に格納し、その後レジスタ24内の
Xn,Yn,Znのいずれかの値と加減算をAU22で行い、その出
力dnをレジスタ24に格納し、その値を外部へ出力する。
以上により、レジスタ24のdn値に前述の(7)式また
は(11)式の誤差の少ない初等関数値を求めることがで
きる。
第7図は第6図のコントローラ104の制御内容をフロ
ーチヤートで示したものである。第7図においてコント
ローラ104はX0,Y0,Z0を各レジスタ24に入力させ(ステ
ツプ900)、i=0をセツトする(ステツプ901)。次
に、Xi+1←Xi±Yi・2-jを第6図における演算装置に演
算を実行させ、その結果であるXi+1をレジスタ24に格納
させる(ステツプ902,903)。
同様にYi+1←Yi±Xi・2-jとZi+1←Zi±αを実施さ
せレジスタ24に格納させる(ステツプ904〜907)。次
に、反復回数をチエツクし(ステツプ908)、規定反復
回数に達つしていなければiをi+1に置き換え(ステ
ツプ909)、規定数(n)に達するまで反復演算する。
規定数に達した場合、第6図における演算装置にER=Xn
・Zn,ER=Yn・Zn,ER=Yn/Xnのいずれかの演算をするか
指定し実行させ、その値ERをレジスタ24に格納させる
(ステツプ910,911)。その後、レジスタ24に格納させ
ている値を用いて下記のいずれの演算を実行するか指定
し、第6図の演算装置に実行させる(ステツプ912)。
dn=Xn±ER dn=Yn+ER dn=Zn+ER 実行後の結果、dnは求める初等関数値として出力され
る(ステツプ913)。
〔発明の効果〕
本発明によれば、誤差補正により比較的少ない反復回
数でも、精度の良い初等関数を求めることができる効果
がある。また、誤差補正を実施しない精度と同程度の精
度で良いのであれば、規定反復回数より以前に反復をや
めて、誤差補正式(7)式,(11)式を実行し演算スピ
ードを早め、さらにメモリ内に収納すべき定数の値も反
復回数に応じて少なくし、メモリ容量を少なくできる効
果もある。
【図面の簡単な説明】
第1図は本発明の実施例を示すブロツク図、第2図は従
来の初等関数演算装置のブロツク図、第3図,第4図は
本発明における誤差補正処理のフローチヤート、第5図
は本発明に係る並列処理方法の初等関数演算装置の具体
例を示す回路図、第6図は本発明に係る直列処理方式の
初等関数演算装置の具体例を示す回路図、第7図は第6
図の場合の動作を示すフローチヤート、第8図は浮動小
数点演算を可能にするマイクロコンピユータのシステム
図、第9図は浮動小数点演算コプロセツサのブロツク図
である。 100,101,102……演算器、103……メモリ、104……コン
トローラ、106……演算器。
───────────────────────────────────────────────────── フロントページの続き (72)発明者 柳沼 隆男 茨城県日立市久慈町4026番地 株式会社 日立製作所日立研究所内 (72)発明者 浅井 剛 茨城県日立市幸町3丁目2番1号 日立 エンジニアリング株式会社内

Claims (1)

    (57)【特許請求の範囲】
  1. 【請求項1】XY座標系における座標ベクトルを複数回
    (n回)回転したときのX軸の値(Xn)を求める初等関
    数の値として第1逐次反復式Xi+1=Xi+m・P・Yi・
    δiに従って反復演算する第1反復演算器と、XY座標系
    における座標ベクトルを複数回(n回)回転したときの
    Y軸の値(Yn)を求める初等関数の値として第2逐次反
    復式Yi+1=Xi−P・Xi・δiに従って反復演算する第
    2反復演算器と、XY座標系における座標ベクトルを複数
    回(n回)回転したときの座標ベクトルの回転角(α
    i)の累積(Zn)を第3逐次反復式Zi+1=Zi+P・α
    i(ただし、 δiは任意の変分、PはYiまたはZiを零に収束させるた
    めの極性、mは初等関数によって1または−1の値を取
    るパラメータを示す。)に従って反復演算する第3反復
    演算器と、第3反復演算器の各反復演算時に使用する定
    数として座標ベクトルの各回転時の回転角(αi)に関
    する値を格納する定数メモリと、第2反復演算器の演算
    値または第3反復演算器の演算値を零に収束するための
    極性を第2反復演算器の演算値または第3反復演算器の
    演算値に従って各反復演算毎に判定しこの判定結果を加
    算または減算の指示として第1反復演算器と第2反復演
    算器および第3反復演算器に出力するコントローラとを
    備え、第1反復演算器と第2反復演算器および第3反復
    演算器のうち一つの反復演算器には求める初等関数の引
    数を初期値として入力し、他の二つの反復演算器には求
    める初等関数によって定まる定数であって相異なる値を
    それぞれ初期値として入力してなる初等関数演算装置に
    おいて、 前記第1反復演算器と第2反復演算器および第3反復演
    算器により反復演算された複数回(n回)目の各演算値
    を基にこれら演算値のうち一つの演算値を他の二つの演
    算値によって補正する補正演算器を備えてなることを特
    徴とする初等関数演算装置。
JP62225656A 1986-09-09 1987-09-09 初等関数演算装置 Expired - Lifetime JP2617733B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP21231886 1986-09-09
JP61-212318 1986-09-09

Publications (2)

Publication Number Publication Date
JPS63184135A JPS63184135A (ja) 1988-07-29
JP2617733B2 true JP2617733B2 (ja) 1997-06-04

Family

ID=16620561

Family Applications (1)

Application Number Title Priority Date Filing Date
JP62225656A Expired - Lifetime JP2617733B2 (ja) 1986-09-09 1987-09-09 初等関数演算装置

Country Status (2)

Country Link
US (1) US4888721A (ja)
JP (1) JP2617733B2 (ja)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE68920388T2 (de) * 1988-09-19 1995-05-11 Fujitsu Ltd Paralleles Rechnersystem mit Verwendung eines SIMD-Verfahrens.
US5042001A (en) * 1989-10-02 1991-08-20 Cyrix Corporation Method and apparatus for performing mathematical functions using polynomial approximation and a rectangular aspect ratio multiplier
US5119323A (en) * 1990-01-16 1992-06-02 United Technologies Corporation Numerical processing of optical wavefront data
US5167008A (en) * 1990-12-14 1992-11-24 General Electric Company Digital circuitry for approximating sigmoidal response in a neural network layer
US5607154A (en) * 1995-08-09 1997-03-04 Meumann; Richard E. Blade replacement system for hockey sticks
US6480871B1 (en) * 1999-04-07 2002-11-12 Dhananjay S. Phatak Algorithm (Method) and VLSI architecture for fast evaluation of trigonometric functions
US6845912B2 (en) * 2002-12-12 2005-01-25 Thomas Whittier Scannell Bar code for measuring distance and position
RU2602989C2 (ru) * 2015-01-12 2016-11-20 Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования "Владимирский государственный университет имени Александра Григорьевича и Николая Григорьевича Столетовых" (ВлГУ) Устройство для вычисления функциональных зависимостей
JP6919539B2 (ja) 2017-12-06 2021-08-18 富士通株式会社 演算処理装置および演算処理装置の制御方法

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4231102A (en) * 1978-12-21 1980-10-28 Raytheon Company Cordic FFT processor
US4338675A (en) * 1980-02-13 1982-07-06 Intel Corporation Numeric data processor
US4484259A (en) * 1980-02-13 1984-11-20 Intel Corporation Fraction bus for use in a numeric data processor

Also Published As

Publication number Publication date
US4888721A (en) 1989-12-19
JPS63184135A (ja) 1988-07-29

Similar Documents

Publication Publication Date Title
US6138135A (en) Propagating NaNs during high precision calculations using lesser precision hardware
US6327605B2 (en) Data processor and data processing system
Schulte et al. A family of variable-precision interval arithmetic processors
JPH0635675A (ja) データプロセッサにおいて除算を行うための方法および装置
JP2617733B2 (ja) 初等関数演算装置
TW201030607A (en) Instruction and logic for performing range detection
Liu et al. $\pi $ π-BA: Bundle Adjustment Hardware Accelerator Based on Distribution of 3D-Point Observations
US4373182A (en) Indirect address computation circuit
US9703626B2 (en) Recycling error bits in floating point units
US6941334B2 (en) Higher precision divide and square root approximations
US7047269B2 (en) Cordic method and architecture applied in vector rotation
EP0395240B1 (en) High speed numerical processor
US6952710B2 (en) Apparatus, methods and computer program products for performing high speed division calculations
CN112486907A (zh) 可重构处理器上多层循环任务的硬件实现方法
JPH09146924A (ja) 演算方法、演算装置及びマイクロプロセッサ
JPS63123125A (ja) 浮動小数点数の加算装置
JPH10187416A (ja) 浮動小数点演算装置
JP2741869B2 (ja) 座標逆変換プロセッサ
JP3310316B2 (ja) 演算装置
JPS6228872A (ja) 三角関数発生処理装置
JP2972326B2 (ja) 平方根計算装置
JP2760808B2 (ja) データ処理装置
SU1476462A1 (ru) Конвейерное устройство дл вычислени функций синуса и косинуса
SU857979A1 (ru) Вычислительное устройство дл поворота вектора
SU888131A1 (ru) Процессор дл вычислени элементарных функций