JP2016062404A - 演算処理方法及び演算処理装置 - Google Patents

演算処理方法及び演算処理装置 Download PDF

Info

Publication number
JP2016062404A
JP2016062404A JP2014191010A JP2014191010A JP2016062404A JP 2016062404 A JP2016062404 A JP 2016062404A JP 2014191010 A JP2014191010 A JP 2014191010A JP 2014191010 A JP2014191010 A JP 2014191010A JP 2016062404 A JP2016062404 A JP 2016062404A
Authority
JP
Japan
Prior art keywords
divisor
bits
specific
approximation
shifted
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
Application number
JP2014191010A
Other languages
English (en)
Inventor
裕貴 雪山
Hirotaka Yukiyama
裕貴 雪山
和大 美馬
Kazuhiro Mima
和大 美馬
山崎 尊永
Takanaga Yamazaki
尊永 山崎
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.)
Sanken Electric Co Ltd
Original Assignee
Sanken Electric Co 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 Sanken Electric Co Ltd filed Critical Sanken Electric Co Ltd
Priority to JP2014191010A priority Critical patent/JP2016062404A/ja
Priority to US14/746,929 priority patent/US9851947B2/en
Publication of JP2016062404A publication Critical patent/JP2016062404A/ja
Pending legal-status Critical Current

Links

Images

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/52Multiplying; Dividing
    • G06F7/535Dividing only
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/535Indexing scheme relating to groups G06F7/535 - G06F7/5375
    • G06F2207/5355Using iterative approximation not using digit recurrence, e.g. Newton Raphson or Goldschmidt
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/535Indexing scheme relating to groups G06F7/535 - G06F7/5375
    • G06F2207/5356Via reciprocal, i.e. calculate reciprocal only, or calculate reciprocal first and then the quotient from the reciprocal and the numerator

Landscapes

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

Abstract

【課題】固定小数点演算で精度を高めた高速除算を行う演算処理方法を提供する。
【解決手段】演算処理装置1は、2進数の固定小数点数を乗算式除算する除算装置である。近似前シフト部10は、除数の絶対値が特定範囲内の場合は除数Dを特定ビット数mだけ右シフトし、特定範囲内でない場合は除数Dを右シフトせずに保持する。初期値取得部20は、近似前シフト部10により右シフトされた又は右シフトされずに保持された除数Dに対する近似計算の初期値X0を取得する。漸近近似部30は、初期値取得部20により取得された初期値X0を複数回、漸近近似して、除数の逆数Xnを算出する。乗算シフト部40は、漸近近似部30により算出された逆数Xnと被除数Yとの積を算出し、除数Dがシフトされた場合は算出された積を特定ビット数mだけ右シフトする。
【選択図】図1

Description

本発明は、演算処理方法及び演算処理装置に係り、特に2進数の固定小数点数を乗算式除算する演算処理方法及び演算処理装置に関する。
乗算式除算法は、漸近近似式を繰り返し解いて被除数の逆数を算出し、算出された被除数の逆数と除数とを乗算して、商の近似値を得る除算の手法の一つである。乗算式除算法の代表的手法として、ニュートン・ラプソン(Newton-Raphson)法、及びゴールドシュミット法(Goldschmidt)法が知られている。
いずれの手法も、少ない回数で近似を収束させるために、除数の逆数の粗い近似値(初期値)をルックアップテーブル(Lookup table、以下「LUT」という。)等の手段を用いて取得する。その初期値について、漸近近似による近似計算を繰り返し行うことで、望む精度の逆数を得ることができる。
このような従来のニュートン・ラプソン法を、浮動小数点演算について使用する技術の例が、特許文献1に記載されている。
特開平02−51732号公報
ここで、2進数の固定小数点数について、特許文献1のような乗算式除算法を用いて計算する場合、除数の逆数を生成する手段に入力する値と、当該手段から出力される逆数の値とでビット数を同じにすると、特に除数が大きい領域で除算の精度が劣化していた。これは、大きな入力値の逆数を同じビット数の範囲で表すと、出力の有効ビット数が僅かになってしまうためである。実際のところ、固定小数点数の誤差は、有効ビット数をiとした場合には、±(100/2i−1)%程度となる。このように、固定小数点数の有効ビット数が少なければ、その精度は大きく劣化する。結果として、近似の初期値が十分な精度を持たないと、演算結果の精度も大きく劣化してしまっていた。
このため、2進数の固定小数点数の乗算式除算法でも、精度が高く計算可能な演算処理方法が求められていた。
本発明は、このような状況に鑑みてなされたものであり、上述の問題を解消することを目的とする。
本発明の演算処理方法は、2進数の固定小数点数の演算処理回路により、被除数を除数で乗算式除算する演算を実行させる演算処理方法であって、前記除数の絶対値が特定範囲内の場合は前記除数を特定ビット数だけシフトし、前記特定範囲内でない場合は前記除数をシフトせずに保持し、シフトされた又はシフトされずに保持された前記除数に対する近似計算の初期値を取得し、取得された前記初期値を複数回、漸近近似して、前記除数の逆数を算出し、算出された前記逆数と前記被除数との積を算出し、前記除数がシフトされた場合は算出された積を前記特定ビット数だけシフトすることを特徴とする。
本発明の演算処理方法は、前記除数の有効ビット数を確認し、前記除数の有効ビット数に対応する前記除数の逆数の有効ビット数が得られるよう、前記特定値と前記特定ビット数とを算出することを特徴とする。
本発明の演算処理方法は、ニュートン・ラプソン法により、前記漸近近似を実行することを特徴とする。
本発明の演算処理装置は、2進数の固定小数点数を乗算式除算する演算処理装置であって、前記除数の絶対値が特定範囲内の場合は前記除数を特定ビット数だけシフトし、前記特定範囲内でない場合は前記除数をシフトせずに保持する近似前シフト手段と、該近似前シフト手段によりシフトされた又はシフトされずに保持された前記除数に対する近似計算の初期値を取得する初期値取得手段と、該初期値取得手段により取得された前記初期値を複数回、漸近近似して、前記除数の逆数を算出する漸近近似手段と、該漸近近似手段により算出された前記逆数と前記被除数との積を算出し、前記除数がシフトされた場合は算出された積を前記特定ビット数だけシフトする乗算シフト手段とを備えることを特徴とする。
本発明によれば、除数の絶対値が特定範囲内の場合は除数を特定ビット数だけシフトし、特定範囲内でない場合は除数をシフトせずに保持し、算出された積について除数の逆数がシフトされた場合は特定ビット数だけシフトすることで、固定小数点の乗算式除算で、桁数の少ない乗算器を用いても精度の高い除算結果が得られる演算処理装置を提供することができる。
本発明の実施の形態に係る演算処理装置の機能構成を示すブロック図である。 本発明の実施の形態に係る演算処理装置の回路の概略構成を示すブロック図である。 本発明の実施の形態に係る除算処理のフローチャートである。 図3に示す近似前右シフト処理を説明するための図である。 図3に示すLUT初期近似値取得処理を説明するための図である。 図3に示す漸近近似式計算処理を説明するための図である。 図3に示す乗算及び右シフト処理を説明するための図である。
<実施の形態>
〔演算処理装置1の構成〕
図1を参照し、本発明の実施の形態に係る演算処理装置1の構成について説明する。
本発明の実施形態に係る演算処理装置1は、2進数の固定小数点数を乗算式除算する除算回路を含む装置である。演算処理装置1は、DSP(Digital Signal Processor)、MPU(Micro Processing Unit)、GPU(Graphics Processing Unit)等に使用される除算装置であり、SOC(System-on-a-chip)の一部であってもよい。
演算処理装置1は、図1のように、2進数の固定小数点数について、商U=被除数Y(分子)/除数D(分母)を算出する。この際、漸近近似の近似計算で除数Dの逆数の近似値Xnを算出し、これと被除数Yとの積を計算することで、商Uを算出する。つまり、演算処理装置1は、商U=被除数Y×Xnの高速な乗算式除算の計算を実行する。
また、演算処理装置1は、上述の計算を行う際、下記で説明するように、除数D、Xn等について適切なシフト(bit shift)を実行する。これにより、精度を確保した2進数の固定小数点数の乗算式除算を実行することが可能となる。
より具体的に説明すると、演算処理装置1は、近似前シフト部10(近似前シフト手段)、初期値取得部20(初期値取得手段)、漸近近似部30(漸近近似手段)、及び乗算シフト部40(乗算シフト手段)を備えている。
近似前シフト部10は、除数Dの絶対値が特定範囲内の場合は除数を特定ビット数だけシフトし、特定範囲内でない場合は除数をシフトせずに保持する。具体的には、近似前シフト部10は、除数Dの逆数の近似値Xn等を算出する前に、除数Dの値が特定値によって規定される特定範囲内であるか否かを判断する。近似前シフト部10は、除数Dが特定範囲内であった場合、この特定範囲に対応した特定ビット数だけ、除数Dを右シフトする。右シフトにより、除数Dの値が1/2(特定ビット数)倍となり、シフトされた下位ビットはアンダーフローとなり切り捨てられる。なお、本実施形態においては、最上位ビットの符号を保ったまま、右シフトを行う。
また、近似前シフト部10は、除数Dの有効ビット数を確認し、この有効ビット数に対応した除数Dの逆数Xnの有効ビット数が得られる値となるように、特定範囲と特定ビット数とを算出する。つまり、近似前シフト部10は、シフトによる除数Dの情報喪失がもたらす精度劣化を特定の誤差以下に抑え、除数の逆数の近似値の精度が確保されるように、特定範囲と特定ビット数のペアを算出する。この精度劣化に関する特定の誤差は、例えば、乗算器(Binary Multiplier、以下「MUL」という。)の桁数と、入力された被除数Y又は除数Dのビット数とから、演算処理装置1の使用目的に対応して演算の精度が適切になるようにする。このため、特定範囲及び特定ビット数の複数のペアを用意することが好適である。
このように、除数Dの大きさに応じたシフトを行うことで、除数Dの逆数の精度が悪化する領域を回避して除算することが可能になる。
初期値取得部20は、近似前シフト部10によりシフトされた除数D、又はシフトされずに保持された除数Dについて、漸近近似により算出するための近似計算の初期値X0を取得する。本実施形態では、X0は、後述する逆数近似値生成LUT140(図2)から取得された、除数Dの逆数の粗い近似値である。
漸近近似部30は、初期値取得部20により取得された初期値を複数回、漸近近似して、除数Dの逆数を算出する。本実施形態では、漸近近似部30は、ニュートン・ラプソン法による漸近近似式Xn=Xn-1(2−除数D×Xn-1)の計算を実行する。この近似計算により、Xnが収束する。
乗算シフト部40は、漸近近似部30により算出された逆数Xnと被除数Yとの積を算出し、除数Dがシフトされた場合は算出された積を特定ビット数だけシフトする。本実施形態では、乗算シフト部40は、除数Dが特定範囲内であり、逆数であるXnを算出する前に右シフトされた場合、被除数Y×Xnの演算結果(積)に対しても、同じ特定ビット数の右シフトをして、除算を終了する。これは、特定ビット数mだけ右シフトした除数Dから得られる積は、求める商Uの2m倍となるためである。よって、乗算シフト部40は、この積の値に対して再度、特定ビット数mだけ右シフトを行うことで1/2m倍にし、実際の商Uを算出する。
また、乗算シフト部40は、除数Dが特定範囲内になく、シフトが行われなかった場合は、被除数Y×Xnの演算結果をそのまま商Uとして除算を終了する。
次に、図2を参照して、演算処理装置1の回路(演算処理回路)の概略構成について説明する。
演算処理装置1は、主に、入力データ格納レジスター100、特定値特定ビット数算出回路110、シフター120、シフト後除数保持レジスター130、逆数近似値生成LUT140、漸近近似結果格納レジスター150、MUL160、ALU170(Arithmetic Logic Unit)、及びACC180(Accumulator)を含んで構成される。
入力データ格納レジスター100は、特定の数値を格納する一時記憶媒体であるレジスター(Register)等である。入力データ格納レジスター100は、例えば、16ビットのレジスターが16個あるような、DSP等の汎用レジスターであってもよい。入力データ格納レジスター100には、被除数Y及び除数Dが格納される。
特定値特定ビット数算出回路110は、特定値と特定ビット数を算出する回路である。特定値特定ビット数算出回路110は、入力データ格納レジスター100に格納される除数Dの有効ビット数を確認し、当該有効ビット数から特定値を算出する。特定値特定ビット数算出回路110は、この特定値から特定範囲を算出し、除数Dが特定範囲内にあるか否かを判断して、シフト数を指定する特定ビット数を算出する。なお、特定値特定ビット数算出回路110は、特定値と特定ビット数との関係について、予めゲートを配線した形式のROM(Read Only Memory)等にテーブル等として保持していてもよい。つまり、特定値及び特定範囲は、ROM等に保持された固定値であってもよい。
また、特定値特定ビット数算出回路110は、漸化式の定数を左シフトした値を、ALU170に出力する。この左シフトするビット数は、後述する漸近近似のステップ中の乗算において、MUL160で計算した積で増えた小数部分のビット数である。本実施形態の例では、後述するように、小数部分が増加したビット数は15ビットとなる。よって、本実施形態において、特定値特定ビット数算出回路110は、定数「2」を15ビット左シフトした値(16進表記で「0x10000」)を、ALU170に出力する。なお、この漸化式の定数を左シフトした値についても、特定値特定ビット数算出回路110のROM等に、予め保持されていてもよい。つまり、漸化式の定数を左シフトした値も、ROM等に保持された固定値であってもよい。
シフター120は、入力された値について、入力されたシフト数を指定する信号に対応するよう、右又は左にビットシフト(bit shift、シフト)する回路である。シフター120は、特定値特定ビット数算出回路110により算出された後の特定ビット数により、除数D、被除数Y×Xnの積等を、特定値特定ビット数算出回路110により算出された特定ビット数だけ右シフトして、この小数部分を切り捨てる。また、シフター120は、漸近近似中のXnについて、シフト後除数保持レジスター130に格納可能なビット数にするよう、右シフトする。なお、シフター120は、シフト前後で入力された値を符号拡張してもよい。
シフト後除数保持レジスター130は、シフター120によりシフトされた除数Dを格納するレジスター等である。シフト後除数保持レジスター130は、入力データ格納レジスター100のビット数に、符号ビットを1ビット分加えたビット数のレジスターを使用してもよい。
逆数近似値生成LUT140は、入力された数値に対応した値を、ROM等に保持されたテーブルを参照して出力するLUTである。逆数近似値生成LUT140は、シフター120にシフトされた除数Dを入力すると、除数Dの逆数の粗い近似値を出力する。この近似値は、上述したように、近似計算の初期値X0となる。なお、逆数近似値生成LUT140は、入力された数値に対応する全ての近似値を保持している必要はなく、特定ビットや数値範囲で丸められた値に対応するテーブルを保持したり、線形補間等した値を出力したりしてもよい。
漸近近似結果格納レジスター150は、逆数近似値生成LUT140により出力された初期値X0、漸近近似中のXn等を格納するレジスターである。
MUL160は、入力された二つの値の乗算を実行する乗算回路である。MUL160は、演算処理装置1の使用目的に適合して必要な精度等に対応した規模の回路を用いることが可能である。本実施形態において、MUL160は、漸近近似中の乗算、被除数Yと算出されたXnとの乗算等を実行する。
ALU170は、論理演算、加算、及び減算を実行する回路である。ALU170は、MUL160と合わせて積和演算を実現する。本実施形態において、ALU170は、漸近近似の漸化式の減算等の演算を実行する。ALU170は、MUL160の乗算結果と同じビット数の値を入力可能に構成される。
ACC180は、演算結果を累積するレジスター等である。本実施形態において、ACC180は、近似計算途中の値、算出された除算の商U等を格納する。ACC180は、ALU170の演算結果を格納可能なビット数の値を格納可能であってもよい。
〔本発明の実施の形態に係る除算処理〕
次に、図3〜図7を参照して、本実施形態の演算処理装置1による除算の演算処理方法に係る除算処理の各処理について説明する。
本実施形態の除算処理では、除算方式としてニュートン・ラプソン法を使用し、上位ビットから下位ビットについて符号1ビット+15ビット(16ビット)のフォーマットの固定小数点数の被除数Y及び除数Dを入力に用いて、出力32ビットの符号付き除算を実行する例について説明する。
本実施形態の除算処理では、除数の絶対値が大きい場合には、逆数の計算に入る前に除数に対し右シフトを行い、逆数の精度劣化を回避する。このため、漸近近似前に、特定値及び特定ビット数を算出し、この特定ビット数だけ除数Dを右シフトする(ステップS101)。次に、右シフト後の除数Dの逆数の漸近近似のための初期値Xnを取得する(ステップS102)。次に、漸近近似式、Xn=Xn-1(2−DXn-1)により、Xnを収束させて近似させる(ステップS103〜S104)。最後に、除数Dの逆数の近似結果X3と被除数Yとを乗算する(ステップS105)。この際、特定ビット数mだけ右シフトした除数Dから算出された値は求める値の2n倍となるので、この値に対して再度、特定ビット数m分の右シフトを行うことで、商Uが得られる。
なお、固定小数点の演算の場合、加減算では小数部分のビット数は変わらず、乗除算では掛けた数の小数点の位置だけずれる。このため、以下の説明では、各値の固定小数点の小数部分のビット数を「Q()」のように、Q表記(Qフォーマット)で表す。ここで、本実施形態では、除数Dの小数点部分のビット数はdであり、Q表記はQ(d)と表す。また、被除数Yの小数点部分のビット数はyであり、Q表記はQ(y)と表す。また、下記では、各ビットの左側を上位ビット、右側を下位ビットとして説明する。
以下で、図3のフローチャートにより、本実施形態の除算処理の詳細をステップ毎に説明する。
(ステップS101)
まず、入力データ格納レジスター100、特定値特定ビット数算出回路110、及びシフター120で構成される近似前シフト部10が、近似前右シフト処理を行う。
図4により具体的に説明すると、特定値特定ビット数算出回路110は、入力データ格納レジスター100から除数Dを受け取る。そして、特定値特定ビット数算出回路110は、除数Dのビット数に対応する特定値を算出する。また、特定値特定ビット数算出回路110は、除数Dの有効ビット数を算出する。この際、特定値特定ビット数算出回路110は、除数Dの絶対値の最大ビットを有効ビットとして算出する。特定値特定ビット数算出回路110は、この有効ビットにより除数Dの絶対値が、算出された特定値の間の範囲(特定範囲)内にある場合、特定ビット数として算出する。本実施形態では、特定ビット数は、除数Dの絶対値が大きい場合に行う右シフトのシフト数となる。
具体例で説明すると、特定値特定ビット数算出回路110は、除数Dのビット数が16ビットに対して、有効ビット数11ビットに対応する特定値t1=1024と、有効ビット数14ビットに対応する特定値t2=8192とを算出する。この上で、特定値特定ビット数算出回路110は、除数Dの有効ビット数を算出して、特定値t1、t2により特定される特定範囲と比較する。この例の場合、特定値特定ビット数算出回路110は、特定範囲(a)8192≦|除数D|を満たす場合、除数Dに対して6ビット右シフトするよう、特定ビット数mを「6」と算出する。また、特定値特定ビット数算出回路110は、特定範囲(b)1024≦|除数D|<8192を満たす場合、除数Dに対して5ビット右シフトするよう、特定ビット数mを「5」と算出する。また、特定値特定ビット数算出回路110は、1024>|除数D|である場合、特定範囲内でないとして、除数Dに対してシフトをしないで保持する。この場合、特定値特定ビット数算出回路110は、特定ビット数mを「0」と算出してもよい。特定値特定ビット数算出回路110は、特定ビット数に対応してシフト数を指定する信号をシフター120に出力する。
また、並行して、シフター120は、入力データ格納レジスター100から除数Dを受け取り、まず20ビット分の符号拡張を施す。つまり、シフター120に入力された除数Dは、合計36ビットとなる。この上で、シフター120は、シフト数を指定する信号により、除数Dを特定ビット数だけ右シフトする、又は除数Dをシフトせずに保持する。シフター120は、右シフトされた又は保持された除数D(以下、「除数D’」と記載する。)のうち、下位ビットから16ビット分を、逆数近似値生成LUT140とシフト後除数保持レジスター130とへ出力する。
(ステップS102)
次に、シフト後除数保持レジスター130、逆数近似値生成LUT140、及び漸近近似結果格納レジスター150で構成される初期値取得部20が、LUT初期近似値取得処理を行う。
図5により具体的に説明すると、逆数近似値生成LUT140は、除数D’をシフター120から取得して、この値に対応する除数Dの逆数の近似計算の初期値であるX0を取得し、漸近近似結果格納レジスター150へ出力する。本実施形態では、この漸近近似結果格納レジスター150のビット数は16ビットとなる。また、X0のQ表記は、X0(Q(15−d+m))となる。
また、シフト後除数保持レジスター130は、除数D’を取得して格納する。上述したように、本実施形態では、シフト後除数保持レジスター130は、除数Dのビット数に符号1ビット分を加えて保持するため、本実施形態では、この格納された除数D’のビット数は、(符号1ビット+16ビット)であり、17ビットとなる。また、除数D’のQ表記は、D’(Q(d−m))となる。
(ステップS103)
次に、シフター120、シフト後除数保持レジスター130、漸近近似結果格納レジスター150、MUL160、ALU170、及びACC180で構成される漸近近似部30が、漸近近似式計算処理を行う。
図6により具体的に説明すると、漸近近似部30は、ニュートン・ラプソン法による除数の逆数の近似式Xn=Xn-1(2−D’Xn-1)を計算する。
この式の計算には乗算が2回必要なため、2サイクルを要する。
まず、図6(a)によると、漸近近似部30は、1サイクル目で、積和演算により2−D’Xn-1を計算し、結果をACC180に格納する。具体的に、MUL160は、シフト後除数保持レジスター130に格納された除数D’の値と、漸近近似結果格納レジスター150に格納されたXn-1(初期値は、X0)の値とを取得して、乗算する。本実施形態において、MUL160が17ビット×16ビットの36ビットの乗算を実行する場合、この乗算の結果のQ表記では、Q((15−d+m)+(d−m))となるため、D’Xn-1(Q15)となる。つまり、この1サイクル目でMUL160による乗算の積で増えた小数部分のビット数は15ビットとなる。このため、ALU170は、2を15ビット左シフトした値から、乗算の積を減算し、ACC180に格納する。ACC180に格納された値のQ表記は、2−D’Xn-1(Q(15))となる。
図6(b)によると、2サイクル目は、まず1サイクル目の演算結果である2−DXn-1とXn-1の積を計算し、その積を右シフトして、漸近近似結果格納レジスター150に格納する。具体的には、MUL160は、ACC180に保存された2−DXn-1の値と、漸近近似結果格納レジスター150に格納されたXn-1の値とを取得して乗算する。上述のようにMUL160が17ビット×16ビットの乗算をする場合、この積のQ表記は、Xn-1(2−DXn-1)(Q(30−d+m)となる。シフター120は、この積の値を、15ビット分、右シフトする。シフター120は、この右シフトした積をXnとして、漸近近似結果格納レジスター150に格納する。格納されたXnのQ表記はQ(15−d+m)となる。
(ステップS104)
次に、漸近近似部30が、近似計算によりXnが収束したか否かを判定する。
上述したように、本実施形態の例では、近似計算を3回実行することで収束したものと判断する。よって、漸近近似部30は、X3まで漸近近似式の計算が終了した場合は、Yesと判定し、得られたX3を漸近近似の結果として扱う。逆に、漸近近似部30は、まだX3まで算出していない場合は、Noと判定する。
Yesの場合、漸近近似部30は、処理をステップS105に進める。
NOの場合、漸近近似部30は、処理をステップS103に戻して近似計算を続ける。これにより、ステップS103〜S104が3回実行されることになる。
(ステップS105)
3まで算出された場合、入力データ格納レジスター100、シフター120、シフト後除数保持レジスター130、MUL160、及びACC180で構成される乗算シフト部40が、乗算及び右シフト処理を行う。
乗算シフト部40は、除数Dの逆数の近似結果と被除数Yとの乗算を行い、この積を右シフトして最終的な商Uを算出する。
図7により具体的に説明すると、MUL160は、上述の処理で得られた漸近近似の結果であるX3を漸近近似結果格納レジスター150から取得し、被除数Yを入力データ格納レジスター100から取得して、乗算する。本実施形態では、この際、MUL160は、被除数Yについて1ビット分、符号を付加して17ビットとし、16ビットのX3と乗算する。このため、被除数YのQ表記をY(Q(y))とすると、乗算結果である積のQ表記は、X3Y(Q(15+y−d+m))となる。
シフター120は、この積を入力として、特定ビット数算出回路から特定ビット数mに対応する信号を取得して右シフトする。つまり、シフター120は、ステップS101で被除数Yに対して実行したのと同じビット数だけ、右シフトを実行する。シフター120は、シフト後の結果を、除算命令の結果である商UとしてACC180に格納する。この商UのQ表記はQ(15+y−d)となる。
本実施形態では、これらの処理により、誤差±2%程度の除算の実行が可能となる。また、本実施形態の例では、漸近近似を3回実行するため、ステップS101〜S102を1クロック、ステップS103〜S104を2クロック、ステップS105を1クロック要すると計算すると、8クロックで除算命令を完了できる。
以上により、本発明の実施の形態に係る除算処理を終了する。
以上のように構成することで、以下のような効果を得ることができる。
従来、2進数の固定小数点の乗算式除算装置では、回路規模の小さな(桁数の少ない)乗算器を使うと、出力結果の精度が低くなっていた。これは、除数の絶対値が大きい場合、その逆数の絶対値が小さくなり、必然的に逆数の有効桁数も減少するためであった。
これに対して、本発明の実施の形態に係る演算処理装置1は、2進数の固定小数点数である被除数Yを除数Dで乗算式除算する除算装置であり、除数Dの絶対値が特定範囲内の場合は除数Dを特定ビット数だけシフトし、特定範囲内でない場合は除数Dをシフトせずに保持する近似前シフト部10と、近似前シフト部10によりシフトされた又はシフトされずに保持された除数に対する近似計算の初期値を取得する初期値取得部20と、初期値取得部20により取得された初期値を複数回、漸近近似して、除数の逆数を算出する漸近近似部30と、漸近近似部30により算出された逆数と被除数との積を算出し、除数がシフトされた場合は算出された積を特定ビット数だけシフトする乗算シフト部40とを備えることを特徴とする。
このように構成することで、除数Dの大きな領域での漸近近似を回避して、MUL160の桁数を増やさずに精度の劣化を抑える除算が可能となる。
つまり、除数Dとその逆数の関係は非線形であることに着目すれば、特に除数Dが大きい領域では、下位側のビットをある程度無視しても逆数Xの値にはあまり影響を及ぼさない。この除数Dの大きさに応じたシフトを行えば、除数の逆数の精度が悪化する領域を回避して除算を行うことができ、除算結果の誤差を少なくし精度を高めることができる。
また、従来、固定小数点の乗算式除算について、除算の漸近近似の計算に関する値のビット数を拡張することで、固定小数点数の演算中の精度を確保する方式もあった。このように、精度確保のために演算に関する値のビット数の拡張を行う場合、漸近近似の計算に利用される演算器、特に乗算器の入出力を拡張しなければならない。たとえば、入力16ビット、出力32ビットの符号付き除算を行う場合、例えば、3回の漸近近似を、ニュートン・ラプソン法を用いて行う必要がある。この際、2%以下の誤差の除算を実現するのであれば、5ビット以上のビット数の拡張が必要となる。よって、従来の技術では、乗算器が入力21ビット、出力42ビットの桁数に拡張されていた。
しかしながら、乗算器は論理規模の大きい回路であり、その素子数は入力ビット数の2乗に比例する。入力21ビットの桁数の乗算器は、入力16ビットの桁数の乗算器に比べると、最小でも1.7倍程度の大きさとなり、コストが上昇していた。
これに対して、本実施形態の演算処理方法では、通常の17ビット×16ビットのMUL160を使用しても、±2%の誤差で除算を行うことができる。このため、桁数の大きな乗算器を使う必要がなくなり、回路面積を締小してコストを削減することができる。
また、本発明の実施の形態に係る演算処理装置1は、近似前シフト部10が、除数Dの有効ビット数を確認し、除数Dの有効ビット数に対応する除数の逆数Xnの有効ビット数が得られるよう、特定範囲と特定ビット数とを算出することを特徴とする。つまり、近似前シフト部10は、シフトによる除数Dの情報喪失がもたらす精度劣化を特定値以下に抑え、除数Dの逆数の近似値の精度確保されるよう、特定範囲と特定ビット数とを算出することを特徴とする。
このように構成することで、除数Dの有効ビット数をチェックするだけで、算出される商Uの精度が最適となるようなシフトの特定ビット数が容易に得られる。また、算出のための計算が容易であるので、回路規模を抑えつつ、例えば、1クロック内に特定ビットを算出することができる。
また、本発明の実施の形態に係る演算処理装置1は、漸近近似部30が、ニュートン・ラプソン法により、漸近近似を実行することを特徴とする。
このように構成することで、高速に、精度が確保された2進数の固定小数点数の乗算式除算を行うことが可能となる。また、精度が確保された状態で、除数Dの逆数を確実に収束させることが可能である。
なお、本発明の本実施形態の説明においては、漸近近似をニュートン・ラプソン法で行う例について説明するものの、これに限られず、ゴールドシュミット法等にも適用可能である。この場合、ニュートン・ラプソン法とゴールドシュミット法とで、近似計算の初期値を取得するためのLUTとして、それぞれ異なるものを用意してもよい。
また、本発明の実施の形態においては、逆数Dの絶対値の有効ビット数に対応する特定値の特定範囲と比較したものの、逆数Dの有効ビット数に依存しない特定範囲を設定してもよい。たとえば、逆数Dの絶対値の上位ビットと特定ビット数に対応したテーブルを、特定値特定ビット数算出回路110に保持して、特定ビットを算出してもよい。また、逆数近似値生成LUT140について、算出される特定ビット数により別々のLUTを使用するような構成であってもよい。
なお、上記実施の形態の構成及び動作は例であって、本発明の趣旨を逸脱しない範囲で適宜変更して実行することができることは言うまでもない。
本発明の演算処理方法は、DSPやCPUやGPU等で除算させる回路に適用可能であるため、産業上、利用することができる。
1 演算処理装置
10 近似前シフト部
20 初期値取得部
30 漸近近似部
40 乗算シフト部
100 入力データ格納レジスター
110 特定値特定ビット数算出回路
120 シフター
130 シフト後除数保持レジスター
140 逆数近似値生成LUT
150 漸近近似結果格納レジスター
160 MUL
170 ALU
180 ACC

Claims (4)

  1. 2進数の固定小数点数の演算処理回路により、被除数を除数で乗算式除算する演算を実行させる演算処理方法であって、
    前記除数の絶対値が特定範囲内の場合は前記除数を特定ビット数だけシフトし、前記特定範囲内でない場合は前記除数をシフトせずに保持し、
    シフトされた又はシフトされずに保持された前記除数に対する近似計算の初期値を取得し、
    取得された前記初期値を複数回、漸近近似して、前記除数の逆数を算出し、
    算出された前記逆数と前記被除数との積を算出し、前記除数がシフトされた場合は算出された積を前記特定ビット数だけシフトする
    ことを特徴とする演算処理方法。
  2. 前記除数の有効ビット数を確認し、前記除数の有効ビット数に対応する前記除数の逆数の有効ビット数が得られるよう、前記特定範囲と前記特定ビット数とを算出する
    ことを特徴とする請求項1に記載の演算処理方法。
  3. ニュートン・ラプソン法により、前記漸近近似を実行する
    ことを特徴とする請求項1又は2に記載の演算処理方法。
  4. 2進数の固定小数点数を乗算式除算する演算処理装置であって、
    前記除数の絶対値が特定範囲内の場合は前記除数を特定ビット数だけシフトし、前記特定範囲内でない場合は前記除数をシフトせずに保持する近似前シフト手段と、
    該近似前シフト手段によりシフトされた又はシフトされずに保持された前記除数に対する近似計算の初期値を取得する初期値取得手段と、
    該初期値取得手段により取得された前記初期値を複数回、漸近近似して、前記除数の逆数を算出する漸近近似手段と、
    該漸近近似手段により算出された前記逆数と前記被除数との積を算出し、前記除数がシフトされた場合は算出された積を前記特定ビット数だけシフトする乗算シフト手段とを備える
    ことを特徴とする演算処理装置。
JP2014191010A 2014-09-19 2014-09-19 演算処理方法及び演算処理装置 Pending JP2016062404A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2014191010A JP2016062404A (ja) 2014-09-19 2014-09-19 演算処理方法及び演算処理装置
US14/746,929 US9851947B2 (en) 2014-09-19 2015-06-23 Arithmetic processing method and arithmetic processor having improved fixed-point error

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2014191010A JP2016062404A (ja) 2014-09-19 2014-09-19 演算処理方法及び演算処理装置

Publications (1)

Publication Number Publication Date
JP2016062404A true JP2016062404A (ja) 2016-04-25

Family

ID=55525789

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014191010A Pending JP2016062404A (ja) 2014-09-19 2014-09-19 演算処理方法及び演算処理装置

Country Status (2)

Country Link
US (1) US9851947B2 (ja)
JP (1) JP2016062404A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018139266A1 (ja) * 2017-01-30 2018-08-02 富士通株式会社 演算処理装置、情報処理装置、方法、およびプログラム

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10346351B2 (en) * 2015-10-08 2019-07-09 Via Alliance Semiconductor Co., Ltd. Neural network unit with output buffer feedback and masking capability with processing unit groups that operate as recurrent neural network LSTM cells
US10776690B2 (en) * 2015-10-08 2020-09-15 Via Alliance Semiconductor Co., Ltd. Neural network unit with plurality of selectable output functions
US10146504B2 (en) * 2017-02-24 2018-12-04 Advanced Micro Devices, Inc. Division using the Newton-Raphson method
US11531729B2 (en) 2019-10-04 2022-12-20 Stmicroelectronics S.R.L. Bitwise digital circuit and method for performing approximate operations
US20230214307A1 (en) * 2022-01-06 2023-07-06 Next Silicon Ltd Automatic generation of computation kernels for approximating elementary functions

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06103032A (ja) * 1992-09-22 1994-04-15 Matsushita Electric Ind Co Ltd 除算装置
JPH1083279A (ja) * 1996-09-09 1998-03-31 Toshiba Corp クランプ付除算器、このクランプ付除算器を備えた情報処理装置及び除算処理におけるクランプ方法
US20060184594A1 (en) * 2005-02-16 2006-08-17 Arm Limited Data processing apparatus and method for determining an initial estimate of a result value of a reciprocal operation

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2578482B2 (ja) 1988-08-15 1997-02-05 富士通株式会社 浮動小数点演算器
US7007058B1 (en) * 2001-07-06 2006-02-28 Mercury Computer Systems, Inc. Methods and apparatus for binary division using look-up table
FI20011610A0 (fi) * 2001-08-07 2001-08-07 Nokia Corp Menetelmä ja laite jakolaskun suorittamiseksi
US20060179092A1 (en) * 2005-02-10 2006-08-10 Schmookler Martin S System and method for executing fixed point divide operations using a floating point multiply-add pipeline
JP2008097194A (ja) * 2006-10-10 2008-04-24 Olympus Corp 逆数算出装置、逆数算出方法、及び逆数算出プログラム
US8725786B2 (en) * 2009-04-29 2014-05-13 University Of Massachusetts Approximate SRT division method
US20140195581A1 (en) * 2013-01-08 2014-07-10 Analog Devices, Inc. Fixed point division circuit utilizing floating point architecture

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06103032A (ja) * 1992-09-22 1994-04-15 Matsushita Electric Ind Co Ltd 除算装置
JPH1083279A (ja) * 1996-09-09 1998-03-31 Toshiba Corp クランプ付除算器、このクランプ付除算器を備えた情報処理装置及び除算処理におけるクランプ方法
US5928318A (en) * 1996-09-09 1999-07-27 Kabushiki Kaisha Toshiba Clamping divider, processor having clamping divider, and method for clamping in division
US20060184594A1 (en) * 2005-02-16 2006-08-17 Arm Limited Data processing apparatus and method for determining an initial estimate of a result value of a reciprocal operation
JP2006228191A (ja) * 2005-02-16 2006-08-31 Arm Ltd 逆数演算の結果値の初期推定値を求めるデータ処理装置および方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018139266A1 (ja) * 2017-01-30 2018-08-02 富士通株式会社 演算処理装置、情報処理装置、方法、およびプログラム
US11137981B2 (en) 2017-01-30 2021-10-05 Fujitsu Limited Operation processing device, information processing device, and information processing method

Also Published As

Publication number Publication date
US20160085511A1 (en) 2016-03-24
US9851947B2 (en) 2017-12-26

Similar Documents

Publication Publication Date Title
JP2016062404A (ja) 演算処理方法及び演算処理装置
Bogaert Iteration-free computation of Gauss--Legendre quadrature nodes and weights
JPH0612229A (ja) 乗累算回路
US8990278B1 (en) Circuitry for computing mathematical functions
KR102449169B1 (ko) 나눗셈 연산을 수행하는 장치, 그것을 포함하는 시스템 온 칩 및 그것의 방법
JP4199100B2 (ja) 関数演算方法及び関数演算回路
CN111813371A (zh) 数字信号处理的浮点除法运算方法、系统及可读介质
US8868633B2 (en) Method and circuitry for square root determination
Jain et al. Binary division algorithm and high speed deconvolution algorithm (Based on Ancient Indian Vedic Mathematics)
CN106371803B (zh) 用于蒙哥马利域的计算方法和计算装置
JP2006172035A (ja) 除算・開平演算器
Aslan et al. Realization of area efficient QR factorization using unified division, square root, and inverse square root hardware
JP3660075B2 (ja) 除算装置
Wang et al. A radix-16 combined complex division/square root unit with operand prescaling
CN114385112A (zh) 处理模数乘法的装置及方法
US10353671B2 (en) Circuitry and method for performing division
CN101324836B (zh) 除法电路
Bello et al. A MRC Based RNS to binary converter using the moduli set {22n+ 1-1, 2n-1, 22n-1}
Chang et al. Fixed-point computing element design for transcendental functions and primary operations in speech processing
CN214409954U (zh) 一种ssd主控芯片中乘法运算电路
KR101063814B1 (ko) 디지털 회로 구현을 위한 효율적인 제곱근과 역제곱근 연산기 구조 및 방법
JPH10283165A (ja) 演算装置及び演算方法
RU2652450C1 (ru) Устройство вычисления модулярного произведения Монтгомери
JP6308845B2 (ja) 演算装置、演算方法、及びプログラム
JP5849823B2 (ja) Av信号処理低減装置、av信号処理低減方法、およびav信号処理低減プログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170711

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180129

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180220

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180410

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180508

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20181218