JP7006808B2 - 演算処理装置および演算処理装置の制御方法 - Google Patents

演算処理装置および演算処理装置の制御方法 Download PDF

Info

Publication number
JP7006808B2
JP7006808B2 JP2020554661A JP2020554661A JP7006808B2 JP 7006808 B2 JP7006808 B2 JP 7006808B2 JP 2020554661 A JP2020554661 A JP 2020554661A JP 2020554661 A JP2020554661 A JP 2020554661A JP 7006808 B2 JP7006808 B2 JP 7006808B2
Authority
JP
Japan
Prior art keywords
arithmetic
circuit
arithmetic processing
calculation
log
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.)
Active
Application number
JP2020554661A
Other languages
English (en)
Other versions
JPWO2020090025A1 (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.)
Fujitsu Ltd
Original Assignee
Fujitsu 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 Fujitsu Ltd filed Critical Fujitsu Ltd
Publication of JPWO2020090025A1 publication Critical patent/JPWO2020090025A1/ja
Application granted granted Critical
Publication of JP7006808B2 publication Critical patent/JP7006808B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/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/556Logarithmic or exponential functions

Landscapes

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

Description

本発明は、演算処理装置および演算処理装置の制御方法に関する。
図8は従来の演算処理回路500の構成を示す図である。
この図8に示す演算処理回路500は、レジスタ501~504,判定回路505,CSA(Carry-Save Adder:桁上げ保存加算器)506,507,Log Table回路508,右シフト回路(RSFT)509,510および演算回路511~514を備える。
演算処理回路500は指数(EXP)演算および対数(LOG)演算を行なう演算回路である。例えば、演算1回で商2bitを求めるradix-4のSTL(Sequential Table Lookup)法を用いる。
演算処理回路500は、指数演算において、xを入力とし、exp(x)を求める。
Lはべき数の空間の変数であり、Eは指数の空間の変数である。また、iは演算の繰り返し回数である。
Liの算出(Li演算)には、以下の式(1)を用いる。
Li+1= Li - log(1 + n × 2^-2i) ・・・(1)
また、Eiの算出(Ei演算)には、以下の式(2)を用いる。
Ei+1= Ei × (1 + n × 2^-2i)
=Ei+ Ei × n × 2^-2i ・・・(2)
ただし、n = -2, -1, 0, +1, +2であり、Liと0との大小関係および差分を判定し、Liが0に一番近づくようにnを選ぶ。
なお、レジスタ501,502,503,504に格納される値(レジスタ値)を、それぞれLS,LC,ES,ECという場合がある。また、レジスタ501,502,503,504を、それぞれレジスタLS,LC,ES,ECという場合がある。
演算処理回路500においては、初期値をL1 = x,E1 = exp(0) = 1となるよう、レジスタ501~504の初期化が行なわれる。
なお、LS + LC = L1であり、例えば、LSとLCとのいずれか一方にxを設定し、他方に0を設定する。同様に、ES + EC =E1であり、ESとECとのいずれか一方に1を設定し、他方に0を設定する。
演算処理回路500においては、x = log(Ei) + Liを満たしつつ、演算を繰り返してLiを少しずつ0に近づけることで、Eiがexp(x)に近づく(Li=x→0、Ei=exp(0)→exp(x))。
すなわち、処理対象の指数演算においてiが予め規定された最大値(imax)に到達するまで、Liを算出するLi演算とEiを算出するEi演算とを繰り返し行なう。
演算処理回路500は、対数演算において、xを入力とし、log(x)を求める。
Lは対数の空間の変数であり、Eは真数の空間の変数である。またiは繰り返し演算の回数である。
初期値をL1= log(1) = 0,E1 = xとし、x = Ei × exp(Li)を満たしつつ、演算を繰り返してEiを少しずつ1に近づけることで、Liがlog(x)に近づく(Ei=x→1、Li=log(1)→log(x))。
対数演算におけるLiおよびEiの演算方法(Li演算,Ei演算)は概ね指数演算と同様であるが、nの選び方は異なる。すなわち、Eiと1との大小関係および差分を判定し、Eiが1に一番近づくようにnを選ぶ。
演算処理回路500において、Log Table回路508およびCSA506が、指数演算または対数演算におけるLi演算を実現する。また、右シフト回路509,510,演算回路511~514およびCSA507が、指数演算または対数演算におけるEi演算を実現する。
指数演算を行なう場合、判定回路505は、Liに基づき、nを選択する。判定回路505は、Liと0との大小関係および差分を判定し、Liが0に一番近づくnの値を選択する。一方、対数演算を行なう場合、判定回路505は、Eiに基づき、nを選択する。判定回路505は、Eiと1との大小関係および差分を判定し、Eiが1に一番近づくnの値を選択する。選択されたnはLog Table回路508に出力される。
Log Table回路508には、予め変数i, nに対応するlog(1+n*2^-2i)の値が設定されており、iと判定回路505から入力されるnとに応じたlog(1+n*2^-2i)の値をCSA506に出力する。
CSA506は、桁上を伝播させずにそのまま出力する加算器であり、上記式(1)を用いてLi演算(参照)を行なう。CSA506の出力(演算結果)のうち部分和ビットの列は、レジスタ501に入力される。一方、CSA506の出力(演算結果)のうち桁上げビットの列はレジスタ502に入力される。
また、右シフト回路509,510,演算回路511~514およびCSA507が、指数演算におけるEi演算(上記式(2)参照)を実現する。
右シフト回路509,510は、レジスタ503,504から読み出された値ES,ECに対して2iビットの右シフト演算を行なうことで2^-2i倍算を実現する。これにより、上記式(2)の2^-2iの演算が実現される。なお、その後、演算回路511~514によりEi×n×2^-2iの演算が実現される。
演算回路511,512は、右シフト回路509,510から出力された値に対して、1倍(×1)演算または2倍(×2)演算を行なう。例えば、判定回路505において決定されたnが+2または-2である場合に、演算回路511,512は×2演算を行なう。一方、判定回路505において決定されたnが+1または-1である場合に、演算回路511,512は×1演算を行なう。
演算回路513,514は、演算回路511,512から出力された値をスルー(+)または符号反転(-)して出力する。例えば、判定回路505において決定されたnが+2,+1,0のいずれかである場合に、演算回路513,514はスルー出力する。一方、判定回路505において決定されたnが-2または-1である場合に、演算回路513,514は符号反転して出力する。
CSA507は、桁上を伝播させずにそのまま出力する加算器であり、上記式(2)を用いてEi演算を行なう。CSA507の出力(演算結果)のうち部分和ビットの列は、レジスタ503に入力される。一方、CSA507の出力(演算結果)のうち桁上げビットの列はレジスタ504に入力される。
演算処理回路500においては、指数演算の結果としてレジスタ503,504の値Eiを出力し、対数演算の結果としてレジスタ501,502の値Liを出力する。
しかしながら、このような従来の演算処理回路500においては、指数演算を行なう場合に、Liが0から遠い時点では、1回の演算でEiがexp(x)に十分近づかず、結果として演算を繰り返してもEiがexp(x)に収束しないことがある。同様に、対数演算を行なう場合に、Eiが1から遠い時点では、1回の演算でLiがlog(x)に十分近づかず、結果として演算を繰り返してもLiがlog(x)に収束しないことがある。EiもしくはLiが解にある程度近い範囲にあることを想定しているのに対し、繰り返し回数(i)が少ない時点では、その範囲から外れる場合があるからである。
すなわち、演算を繰り返しても指数演算のEiもしくは対数演算のLiが解に収束しない場合がある。
図9は上述の如き演算処理回路500による問題を解消するための従来の演算処理回路600の構成を示す図である。
この図9に示す演算処理回路600においては、図8に示した演算処理回路500の判定回路505に代えて判定回路601,1st_nテーブル回路602およびセレクタ603を備える。また、演算処理回路500の演算回路511,512に代えて演算回路604,605を備えるとともに、Log Table回路508に代えてLog Table回路606を備える。その他の部分は図8の演算処理回路500と同様に構成されている。
なお、図中、既述の符号と同一の符号は同様の部分を示しているので、その説明は省略する。
この図9に示す演算処理回路600においては、演算1回目(i=1)だけnの選択論理を変更する。
1st_nテーブル回路602および判定回路601の各出力がセレクタ603に入力される。
1st_nテーブル回路602は、演算1回目(i=1)においてのみ参照される参照テーブル(lookup table)である。演算1回目(i=1)だけ、L1もしくはE1(つまり入力x)をインデックスとして1st_nテーブル回路602が参照され、セレクタ603は1st_n テーブル回路602の出力を選択して出力する。
なお、演算2回目以降は、セレクタ603は判定回路601の出力を選択して出力する。また、判定回路601においては、図8に示した判定回路505に比べてnの選択肢に±3が追加されている。すなわち、判定回路601は、選択肢nとして、-3,-2,-1,0,+1,+2,+3を有する。
セレクタ603の出力は、演算回路513,514,604,605およびLog Table回路606に入力される。
Log Table回路606においては、Log Table回路508に比べて、エントリにn=-3,+3に対応する値を追加して備える。
演算回路604,605は、それぞれ、×1 or ×2 or ×3回路であり、判定回路601から出力されるnに応じて、スルー(×1)または、左シフト(×2)または×3乗算のいずれかを行なう。
特開平8-123785号公報 特開平2-170285号公報
しかしながら、このような図9に示す従来の演算処理回路600においては、1st_nテーブル回路602やセレクタ603,演算回路604,605を備えることで、回路規模が大きくなる。これにより、クリティカルパスの論理段数が多くなり、ディレイが大きくなるという課題がある。
本発明は、このような課題に鑑み創案されたもので、回路規模を大きくすることなく指数演算または対数演算において解に収束できるようにすることを目的とする。
上記の目的を達成するために、この演算処理装置は、指数演算または対数演算を行なう演算回路と、前記演算回路による演算繰り返し回数が閾値以下の場合に、1サイクル当たりに前記演算回路が求めるビット数を第1数に設定し、前記演算繰り返し回数が前記閾値よりも多い場合に、1サイクル当たりに前記演算回路が求めるビット数を、前記第1数よりも多い第2数に設定する設定部とを備える。
回路規模を大きくすることなく指数演算または対数演算において解に収束できる。
実施形態の一例としての演算処理回路の構成を例示する図である。 実施形態の一例としての演算処理回路におけるLog Table回路のインデックスとエントリとの関係を例示する図である。 実施形態の一例としての演算処理回路における右シフト回路の回路構成を例示する図である。 図3に例示した右シフト回路のセレクタの切り替えルールを例示する図である。 実施形態の一例としての演算処理回路の処理の概要を説明するためのフローチャートである。 実施形態の一例としての演算処理回路における演算処理を説明するためのフローチャートである。 実施形態の一例としての演算処理回路をプロセッサに実装する構成例を示す図である。 従来の演算処理回路の構成を示す図である。 従来の演算処理回路の構成を示す図である。
以下、図面を参照して本演算処理装置および演算処理装置の制御方法に係る実施の形態を説明する。ただし、以下に示す実施形態はあくまでも例示に過ぎず、実施形態で明示しない種々の変形例や技術の適用を排除する意図はない。すなわち、本実施形態を、その趣旨を逸脱しない範囲で種々変形して実施することができる。また、各図は、図中に示す構成要素のみを備えるという趣旨ではなく、他の機能等を含むことができる。
図1は実施形態の一例としての演算処理回路1の構成を例示する図である。
演算処理回路(演算器)1は、例えば情報処理装置のプロセッサ(演算処理装置)に備えられ、演算を実現する。図1に示す演算処理回路1は、指数(EXP)演算および対数(LOG)演算の2種類の演算を実現する演算処理回路である。すなわち、本演算処理回路1は、指数演算および対数演算のいずれかを選択的に実現する。
[指数演算]
指数演算においては、例えば、演算1回で商2bitを求めるradix4のSTL(Sequential Table Lookup)法を用いてもよい。
例えば、xを入力とし、exp(x)を求める。
Lはべき数の空間の変数であり、Eは指数の空間の変数である。また、iは演算の繰り返し回数である。
初期値をL1= x,E1 = exp(0) = 1とし、x = log(Ei) + Liを満たしつつ、演算を繰り返してLiを少しずつ0に近づけることで、Eiがexp(x)に近づく(Li=x→0、Ei=exp(0)→exp(x))。
[対数演算]
対数演算にSTL法を用いてもよい。
例えば、xを入力とし、log(x)を求める。
Lは対数の空間の変数であり、Eは真数の空間の変数である。またiは繰り返し演算の回数である。
初期値をL1= log(1) = 0,E1 = xとし、x = Ei × exp(Li)を満たしつつ、演算を繰り返してEiを少しずつ1に近づけることで、Liがlog(x)に近づく(Ei=x→1、Li=log(1)→log(x))。
対数演算におけるLiおよびEiの演算方法(Li演算,Ei演算)は概ね指数演算と同様であるが、nの選び方は異なる。すなわち、Eiと1との大小関係および差分を判定し、Eiが1に一番近づくようにnを選ぶ。
(A)構成
図1に示す演算処理回路1は、レジスタ101~104,判定回路105,CSA107,114,Log Table回路106,右シフト回路(RSFT2)108,109および演算回路110~113を備える。
以下、レジスタ101をレジスタLSと表す場合がある。同様に、レジスタ102をレジスタLCと表す場合があり、レジスタ103をレジスタESと表す場合があり、レジスタ104をレジスタECと表す場合がある。
レジスタ101は、判定回路105およびCSA107にそれぞれ接続されている。レジスタ101には、後述するCSA107によるLi演算の結果(sum)が格納される。すなわち、レジスタ101には、演算処理の過程でCSA107によって生成された演算途中値が格納される。
また、レジスタ101から読み出されたレジスタ値Liは、判定回路105およびCSA107のそれぞれに入力される。
レジスタ102は、判定回路105およびCSA107にそれぞれ接続されている。レジスタ102にCSA107によるLi演算の結果(carry)が格納される。すなわち、レジスタ102には、演算処理の過程でCSA107によって生成された演算途中値が格納される。
レジスタ102から読み出されたレジスタ値Liは判定回路105およびCSA107のそれぞれに入力される。
Log Table回路106およびCSA107が、指数演算または対数演算におけるLi演算を実現する。右シフト回路108,109,演算回路110~113およびCSA114が、指数演算または対数演算におけるEi演算を実現する。
ここで、本演算処理回路1においては、繰り返し回数(i)が少ない時点、すなわちiが閾値k以下の時点では1サイクルあたりに求めるビット数(第1数)を少なくする(例えば、1回)。そして、繰り返し回数(i)が閾値kよりも大きくなった以降は1サイクルあたりに求めるビット数(第2数)を増やす(例えば、2回以上)。第2数は第1数よりも多くする。
具体的には、例えば、Liの算出(Li演算)およびEiの算出(Ei演算)には、以下の式(3)を用いる。
Figure 0007006808000001
なお、n = -2, -1, 0, +1, +2である。
本実施形態においては、i≦kのときには1サイクルあたりに求めるビット数(第1数)は1であり、i>kのときには1サイクルあたりに求めるビット数(第2数)は2である。
指数演算を行なう場合、判定回路105は、Liに基づき、nを選択する。判定回路105は、Liと0との大小関係および差分を判定し、Liが0に一番近づくnの値を選択する。対数演算を行なう場合、判定回路105は、Eiに基づき、nを選択する。判定回路105は、Eiと1との大小関係および差分を判定し、Eiが1に一番近づくnの値を選択する。
判定回路105によって決定されたnの値は、演算回路110~113およびLog Table回路106に入力される。
Log Table回路106は、log(1+n*2^-A)の値を出力する。ここで、i≦kのとき A=iであり、i>kのときA=2i-kである。
Log Table回路106には、変数であるi, nに対応するlog(1+n*2^-A)の値が予め設定されており、iと判定回路105から入力されるnとに応じたlog(1+n*2^-A)の値を出力する。
すなわち、Log Table回路106は、インデックスとしてiおよびnを有し、エントリとしてlog(1+n×2^-i)やlog(1+n×2^-(2i-k))の各値を有する。
図2は実施形態の一例としての演算処理回路1におけるLog Table回路106のインデックスとエントリとの関係を例示する図である。
この図2においては、1≦i≦9であり、k=3の例について示す。また、図2中においては、便宜上、各エントリをlogを冠した対数の形式で示しているが、実際には各エントリには対数を計算した数値が保持される。また、図2中において“don't care”が示された箇所は選択されることがない。
Log Table回路106は、入力されたiおよびnに対応するエントリの値をCSA107に出力する。
なお、Log Table回路106は、図2に例示するようなインデックスとエントリとを対応付けた情報を図示しない記憶装置に格納し、iおよびnが入力された場合に、この情報を、入力されたi,nをインデックスとして参照して、対応するエントリの値を取得し、出力してもよい。
また、Log Table回路106は、図2に例示するような情報を制御ユニット10等から取得してもよい。
CSA107は、3入力-2出力(3 in - 2 out)の桁上げ保存加算器であり、レジスタ101,102およびLog Table回路106から各出力が入力される。また、このCSA107の出力(演算結果)のうち、部分和ビットの列はレジスタ101に入力される。一方、CSA107の出力(演算結果)のうち、桁上げビットの列はレジスタ102に入力される。
CSA107は、Li+1の演算(Li演算)を行なう。CSA107は、Log Table回路106から出力されたlog(1+n*2^-A)の値を用いて、上記式(3)に基づきLiを算出する。
レジスタ103は、判定回路105,右シフト回路108およびCSA114にそれぞれ接続されており、このレジスタ103に後述するCSA114によるEi演算の結果(sum)が格納される。すなわち、レジスタ103には、演算処理の過程でCSA114によって生成された演算途中値が格納される。
レジスタ103から読み出されたレジスタ値Eiは、判定回路105,右シフト回路108およびCSA114のそれぞれに入力される。
レジスタ104は、判定回路105,右シフト回路109およびCSA114にそれぞれ接続されている。このレジスタ104にCSA114によるEi演算の結果(carry)が格納される。すなわち、レジスタ104には、演算処理の過程でCSA114によって生成された演算途中値が格納される。
レジスタ104から読み出されたレジスタ値Eiは、判定回路105,右シフト回路109およびCSA114のそれぞれに入力される。
CSA114は、4入力-2出力(4 in - 2 out)の桁上げ保存加算器であり、レジスタ103,104および演算回路112,113からの各出力が入力される。
CSA114は、指数演算または対数演算に用いられる。CSA114は、Ei+1の演算を行なう。CSA114は、レジスタ103,104および演算回路112,113のそれぞれから出力された値を用いて、上記式(3)に基づきEiを算出する。
CSA114の出力(演算結果)のうち部分和ビットの列は、レジスタ103に入力される。一方、CSA114の出力(演算結果)のうち桁上げビットの列はレジスタ104に入力される。
右シフト回路108,109は、処理対象データのビット列に対して右シフトを行なうものであり、処理対象データに対して、演算繰り返し回数iに応じた数のビットシフトを行なう。右シフト回路108は、レジスタ103のレジスタ出力ESに対して、また、右シフト回路109は、レジスタ104のレジスタ出力ECに対して、それぞれ右シフト演算を行なうことで、Ei×2^-iの演算またはEi×2^-(2i-k)の演算を実現する。
右シフト回路108,109は、i≦kのとき Ei×2^-iの演算を行ない、i>kのときEi×2^-(2i-k)の演算を行なう。
右シフト回路108,109は、iだけEiを右シフトすることでEi×2^-iの演算を実現し、2i-kだけEiを右シフトすることでEi×2^-(2i-k)の演算を実現する。なお、右シフト回路108,109は互いに同様の構成を有する。
図3は実施形態の一例としての演算処理回路1における右シフト回路108,109の回路構成を例示する図、図4は図3に例示した右シフト回路108,109のセレクタ1081の切り替えルールを例示する図である。
右シフト回路108,109は図4に例示する切り替えルールに従って各セレクタ1081による選択出力を行なうことで、i≦kの場合にEi×2^-iの演算結果の出力を行ない、i>kの場合にEi×2^-(2i-k)の演算結果の出力を実現する。
図3および図4においてはデータ幅が16bitの右シフト回路108,109を例示しており、また、k=3の場合について示すものとする。
D[15:0]は、シフト対象のデータを示し、R[15:0]はシフト後のデータを示す。なお、[15]は符号ビットである。また、iは繰り返し演算の回数である。
右シフト回路108,109は、Rの各ビット(R[0]~R[15])に対し、Dを入力とするセレクタ1081をそれぞれ備える。セレクタ1081は、図4に例示する切り替えルールを参照してiに応じた選択および出力を行なう。セレクタ1801の入力数はiのとり得る数(図4に示す例では9)である。
図4に例示する切り替えルールにおいて、例えばR[0]は、i≦3の場合にはシフト量がiのデータが出力データとして選択され、i≧4の場合にはシフト量が2i-kのデータが出力データとして選択されている。すなわち、右シフト回路108,109においては、閾値k(図4に示す例ではk=3)を境にシフト量が変更され、i≦3の場合にEi×2^-iの演算によりシフト量=iビットとなり、i>kの場合にEi×2^-(2i-k)の演算によりシフト量=2i-kビットとなる。
このように、右シフト回路108,109は、処理対象データに対して、演算繰り返し回数iに応じた数のビットシフトを行なう。入力D[15:0]がiビット右シフトしたものがR[15:0]となる。
演算回路110,111は、入力された値に対して、1倍(×1)演算または2倍(×2)演算を行なう。演算回路110,111は、入力された値をスルーすることで1倍(×1)演算を実現し、入力されたレジスタ値を1bit左シフトすることで2倍(×2)演算を実現する。
例えば、判定回路105において決定されたnが+2または-2である場合に、演算回路110,111は×2演算を行なう。一方、判定回路105において決定されたnが+1または-1である場合に、演算回路110,111は×1演算を行なう。
演算回路110による演算結果は演算回路112に入力され、演算回路111による演算結果は演算回路113に入力される。
演算回路112,113は、入力された値をスルー(+)または符号反転(-)して出力する。演算回路112,113には、判定回路105からの出力が入力される。演算回路112,113は、判定回路105において決定されたnの符号に応じた符号を選択して設定する。
制御ユニット10は本演算処理回路1における演算処理を制御する。制御ユニット10は、プログラムからの指示で動作する。
制御ユニット10は、命令デコーダとしての機能を備え、図示しない命令レジスタに読み込まれた命令の内容を解読し、本演算処理回路1を制御する。
メモリ11は、例えばRAM(Random Access Memory)である。メモリ11には、例えば、各レジスタ101~104の初期値が格納されている。初期値は演算処理の種類(指数演算および対数演算)に応じて、それぞれ備えられている。
制御ユニット10は、本演算処理回路1における演算処理の開始時に、各レジスタ101~104の初期化を行なう。制御ユニット10は本演算処理回路1において実行する演算種類に応じた初期値をメモリ11から読み出し、各レジスタ101~104に格納することで初期化を行なってもよい。
また、制御ユニット10は、演算処理の結果を格納するレジスタ101~104から演算結果を読み出し、出力させる。
制御ユニット10は、Log Table回路106が参照するインデックスとエントリとを対応付けた情報(図2参照)を、メモリ11に格納し、適宜、Log Table回路106に提供してもよい。
また、制御ユニット10は、右シフト回路108,109が参照するセレクタ1081の切り替えルール(図4参照)をメモリ11に格納し、適宜、右シフト回路108,109に提供してもよい。
また、制御ユニット10は、本演算処理回路1における演算処理の開始指示を行なってもよい。
制御ユニット10は、本演算処理回路1における演算の繰り返し(ループ)回数を示すiを管理してもよい。制御ユニット10は、iのカウントを行ない、このiの値と予め設定された閾値(imax)とを比較することでループが終わったという判断を行なってもよい。
(B)動作
上述の如く構成された実施形態の一例としての演算処理回路1の処理の概要を、図5に示すフローチャート(ステップA1~A15)に従って説明する。
ステップA1において、制御ユニット10は演算種類の確認を行なう。演算種類が指数演算である場合には(ステップA1のEXPルート参照)、ステップA2に移行する。
ステップA2において、例えば右シフト回路108,109は、演算の繰り返し回数iが所定の閾値k(例えば、k=3)以下であるかを確認する。
確認の結果、演算の繰り返し回数iが閾値k以下である場合には(ステップA2のYESルート参照)、ステップA3に移行する。ステップA3において、演算処理回路1は、1サイクルあたりに求めるビット数として規定の第1の数(第1のビット数:例えば1bit)を設定する。
一方、演算の繰り返し回数iが閾値kよりも多い場合には(ステップA2のNOルート参照)、ステップA4に移行する。ステップA4において、演算処理回路1は、1サイクルあたりに求めるビット数として、第1の数よりも多い第2の数(第2のビット数:例えば2bit)を設定する。右シフト回路108,109が、設定されたシフト数に応じた右シフト演算を実行する。
ステップA5において、判定回路105は、Liに基づいてnを選択する。
ステップA6において、ステップA3またはステップA4において設定された第1の数または第2の数に応じたビット数で、指数演算が実行される。
ステップA7において、制御ユニット10は指数演算が終了したかを確認する。この確認の結果、指数演算が終了していない場合には(ステップA7のNOルート参照)、ステップA8においてiの値をインクリメント(i++)した後、ステップA2に戻る。
また、ステップA7における確認の結果、指数演算が終了している場合には(ステップA7のYESルート参照)、ステップA15に移行する。
ステップA15においては、レジスタ103,104の値がEi演算の結果として出力される。
一方、ステップA1における確認の結果、演算種類が対数演算である場合には(ステップA1のLOGルート参照)、ステップA9に移行する。
ステップS9において、制御ユニット10は、演算の繰り返し回数iが所定の閾値k(例えば、k=3)以下であるかを確認する。
確認の結果、演算の繰り返し回数iが閾値k以下である場合には(ステップA9のYESルート参照)、ステップA10に移行する。ステップA10において、演算処理回路1は、1サイクルあたりに求めるビット数として規定の第1の数(第1のビット数:例えば1bit)を設定する。
一方、演算の繰り返し回数iが閾値kよりも多い場合には(ステップA9のNOルート参照)、ステップA11に移行する。ステップA11において、演算処理回路1は、1サイクルあたりに求めるビット数として、第1の数よりも多い第2の数(第2のビット数:例えば2bit)を設定する。右シフト回路108,109が、設定されたシフト数に応じた右シフト演算を実行する。
ステップA12において、判定回路105は、Eiに基づいてnを選択する。
その後、ステップA6において、ステップA10またはステップA11において設定された第1の数または第2の数に応じたビット数で、対数演算が実行される。
ステップA13において、制御ユニット10は対数演算が終了したかを確認する。この確認の結果、対数演算が終了していない場合には(ステップA13のNOルート参照)、ステップA14においてiの値をインクリメント(i++)した後、ステップA9に戻る。
また、ステップA13における確認の結果、対数演算が終了している場合には(ステップA13のYESルート参照)、ステップA15に移行する。
ステップA15においては、レジスタ101,102の値がLi演算の結果として出力される。
次に、実施形態の一例としての演算処理回路1における演算処理を、図6に示すフローチャート(ステップB1~B23)に従って説明する。
演算処理の開始に際して、xが入力される。ステップB1において、制御ユニット10は演算種類の確認を行なう。演算種類が指数演算である場合には(ステップB1のEXPルート参照)、ステップB2に移行する。
ステップB2において、レジスタ101~104の初期化が行なわれる。レジスタの初期化は、例えば、制御ユニット10によって行なわれる。例えば、レジスタ101~104に対して、L1=x,E1=1となるように初期化が行なわれる。なお、LS + LC = L1であり、例えば、LSとLCとのいずれか一方にxを設定し、他方に0を設定する。同様に、ES + EC =E1であり、ESとECとのいずれか一方に1を設定し、他方に0を設定する。
ステップB3において、処理対象の指数演算においてiが予め規定された最大値(imax)に到達するまで、ステップB11までの制御を繰り返し実施するループ処理を開始する。
ステップB4において、例えば右シフト回路108,109は、演算の繰り返し回数iが所定の閾値k(例えば、k=3)以下であるかを確認する。
確認の結果、演算の繰り返し回数iが閾値k以下である場合には(ステップB4のYESルート参照)、ステップB5において、A=iが設定される。一方、演算の繰り返し回数iが閾値kよりも多い場合には(ステップB4のNOルート参照)、ステップB6において、A=2i-kが設定される。
その後、ステップB7において、判定回路105は、Liと0との大小関係および差分を判定し、Liが0に一番近づくnの値を選択する。
ステップB8において、Log Table回路106は、iと判定回路105によって選択されたnとに対応するlog(1+n*2^-A)の値を出力する。
ステップB9において、CSA107が、Log Table回路106から取得したlog(1+n*2^-A)を用いて、上記式(3)に基づきLi演算を行なう。すなわち、CSA107は、Li+1 = Li- log(1 + n × 2^-A)を算出する。
また、ステップB10において、右シフト回路108,109,演算回路110~113およびCSA114が、指数演算におけるEi演算(上記式(3)参照)を実現する。すなわち、CSA114等は、Ei+1 = Ei + Ei × n × 2^-A を算出する。
その後、制御がステップB11に進む。ステップB11では、ステップB3に対応するループ端処理が実施される。ここで、iがimaxに到達すると(i = imax)、ステップB12に移行する。
ステップB12において、Eiは後段の処理部(例えば、他の演算回路等)に出力され、処理を終了する。
ステップB1における演算種類の確認の結果、演算種類が対数演算である場合には(ステップB1のLOGルート参照)、ステップB13に移行する。
ステップB13において、レジスタ101~104の初期化が行なわれる。レジスタの初期化は、例えば、制御ユニット10によって行なわれる。例えば、レジスタ101~104に対して、L1=0,E1=xとなるように初期化が行なわれる。なお、LS + LC = L1であり、例えば、LSとLCとのそれぞれに0を設定する。同様に、ES + EC =E1であり、ESとECとのいずれか一方にxを設定し、他方に0を設定する。
ステップB14において、処理対象の指数演算においてiが予め規定された最大値(imax)に到達するまで、ステップB22までの制御を繰り返し実施するループ処理を開始する。
ステップB15において、例えば右シフト回路108,109は、演算の繰り返し回数iが所定の閾値k(例えば、k=3)以下であるかを確認する。
確認の結果、演算の繰り返し回数iが閾値k以下である場合には(ステップB15のYESルート参照)、ステップB16において、A=iが設定される。一方、演算の繰り返し回数iが閾値kよりも多い場合には(ステップB15のNOルート参照)、ステップB17において、A=2i-kが設定される。
その後、ステップB18において、判定回路105は、Eiと1との大小関係および差分を判定し、Eiが0に一番近づくnの値を選択する。
ステップB19において、Log Table回路106は、iと判定回路105によって選択されたnとに対応するlog(1+n*2^-A)の値を出力する。
ステップB20において、CSA107が、Log Table回路106から取得したlog(1+n*2^-A)を用いて、上記式(3)に基づきLi演算を行なう。すなわち、CSA107は、Li+1 = Li- log(1 + n × 2^-A)を算出する。
また、ステップB21において、右シフト回路108,109,演算回路110~113およびCSA114が、指数演算におけるEi演算(上記式(3)参照)を実現する。すなわち、CSA114等は、Ei+1 = Ei + Ei × n × 2^-A を算出する。
その後、制御がステップB22に進む。ステップB22では、ステップB14に対応するループ端処理が実施される。ここで、iがimaxに到達すると(i = imax)、ステップB23に移行する。
ステップB23において、Liは後段の処理部(例えば、他の演算回路等)に出力され、処理を終了する。
(C)効果
このように、実施形態の一例としての演算処理回路1によれば、演算の繰り返し回数iが閾値k以下の時点において、1サイクル当たりに求めるビット数を少なくするとともに、演算の繰り返し回数iが閾値kよりも多い時点において、1サイクル当たりに求めるビット数を多くする。これにより、指数演算のEiをexp(x)に、対数演算のLiをlog(x)にそれぞれ収束させることができる。
また、図9に示した従来の演算処理回路と比べて、1st_nテーブル回路等を備える必要がなく、回路規模を削減することができる。これにより、クリティカルパスの論理段数を減らし、ディレイを小さくすることができる。
すなわち、回路規模を大きくすることなく指数演算または対数演算において解に収束できるのである。
(D)その他
図7は上述した実施形態の一例としての演算処理回路1を、例えば、ディープラーニング等の用途のプロセッサに実装する構成例を示す図である。
ディープラーニング等を用途とするプロセッサは、図7に例示するように、複数の演算器を備え、並列演算を行なう。
各演算器は、それぞれ指数演算および対数演算を行なうEXP/LOG演算器を備え、図7に示すように、プロセッサに備えられるEXP/LOG演算器として本演算処理回路1を用いてもよい。
図7に例示するプロセッサは、命令ユニットと、複数のレジスタファイル#1~#mと、複数の実行ユニット#1~#mを備える。
各実行ユニットは複数(n個)の演算器#1~#nを備え、これらの演算器に演算処理回路1が備えられる。
この図7に例示するプロセッサシステムは、全体に対する演算器の占有率が大きいものであるが、このような各演算器に本演算処理回路1を適用することで、演算器の回路規模削減の効果を奏することができる。
そして、本発明は上述した実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲で種々変形して実施することができる。
また、上述した開示により本実施形態を当業者によって実施・製造することが可能である。
1 演算処理回路
10 制御ユニット
11 メモリ
12 プロセッサ
101~104 レジスタ
105 判定回路
107,114 CSA
106 Log Table回路
108,109 右シフト回路
110~113 演算回路
1081 セレクタ

Claims (5)

  1. 指数演算または対数演算を行なう演算回路と、
    前記演算回路による演算繰り返し回数が閾値以下の場合に、1サイクル当たりに前記演算回路が求めるビット数を第1数に設定し、前記演算繰り返し回数が前記閾値よりも多い場合に、1サイクル当たりに前記演算回路が求めるビット数を、前記第1数よりも多い第2数に設定する設定部と
    を備えること特徴とする、演算処理装置。
  2. 前記設定部が、処理対象データのビット列に対して右シフトを行なう右シフト回路であって、
    前記右シフト回路が、前記処理対象データに対して、前記演算繰り返し回数に応じた数のビットシフトを行なう
    ことを特徴とする、請求項1に記載の演算処理装置。
  3. 前記演算回路が、指数演算を実施する指数演算回路であり、
    演算繰り返し回数(i)が閾値以下の場合に、Li+1 = Li - log(1 + n × 2^-i)を演算し、
    前記演算繰り返し回数(i)が前記閾値よりも多い場合に、Li+1 = Li- log(1 + n × 2^-(2i-k))を演算する
    ことを特徴とする、請求項1または2記載の演算処理装置。
  4. 前記演算回路が、対数演算を実施する指数演算回路であり、
    演算繰り返し回数(i)が閾値以下の場合に、Ei+1 = Ei + Ei× n × 2^-iを演算し、
    前記演算繰り返し回数(i)が前記閾値よりも多い場合に、Ei+1 = Ei+ Ei × n × 2^-(2i-k)を演算する
    ことを特徴とする、請求項1~3のいずれか1項に記載の演算処理装置。
  5. 指数演算または対数演算を行なう演算回路を備える演算処理装置において、
    前記演算回路による演算繰り返し回数を確認する処理と、
    前記演算回路による前記演算繰り返し回数が閾値以下の場合に、1サイクル当たりに前記演算回路が求めるビット数を第1数に設定し、前記演算繰り返し回数が前記閾値よりも多い場合に、1サイクル当たりに前記演算回路が求めるビット数を、前記第1数よりも多い第2数に設定する処理
    とを備えること特徴とする、演算処理装置の制御方法。
JP2020554661A 2018-10-31 2018-10-31 演算処理装置および演算処理装置の制御方法 Active JP7006808B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2018/040476 WO2020090025A1 (ja) 2018-10-31 2018-10-31 演算処理装置および演算処理装置の制御方法

Publications (2)

Publication Number Publication Date
JPWO2020090025A1 JPWO2020090025A1 (ja) 2021-09-24
JP7006808B2 true JP7006808B2 (ja) 2022-01-24

Family

ID=70462894

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020554661A Active JP7006808B2 (ja) 2018-10-31 2018-10-31 演算処理装置および演算処理装置の制御方法

Country Status (2)

Country Link
JP (1) JP7006808B2 (ja)
WO (1) WO2020090025A1 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113721886A (zh) * 2020-05-25 2021-11-30 瑞昱半导体股份有限公司 对数计算方法及对数计算电路

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009276990A (ja) 2008-05-14 2009-11-26 Sharp Corp 演算装置およびその演算方法、信号処理装置、演算装置制御プログラム、並びに該プログラムを記録した記録媒体

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2822399B2 (ja) * 1988-10-28 1998-11-11 日本電気株式会社 対数関数演算装置
JP3110288B2 (ja) * 1995-07-21 2000-11-20 日本電気株式会社 指数対数変換回路

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009276990A (ja) 2008-05-14 2009-11-26 Sharp Corp 演算装置およびその演算方法、信号処理装置、演算装置制御プログラム、並びに該プログラムを記録した記録媒体

Also Published As

Publication number Publication date
WO2020090025A1 (ja) 2020-05-07
JPWO2020090025A1 (ja) 2021-09-24

Similar Documents

Publication Publication Date Title
JP6540725B2 (ja) 演算処理装置、方法、およびプログラム
US8271571B2 (en) Microprocessor
JPWO2019168084A1 (ja) 推論装置、畳み込み演算実行方法及びプログラム
JP6882281B2 (ja) ベクトルの処理のためのレーン位置情報
JP7096828B2 (ja) 入力オペランド値を処理するための装置及び方法
CN110955406A (zh) 浮点动态范围扩展
US20210081173A1 (en) Concurrent multi-bit adder
JP2019139338A (ja) 情報処理装置、情報処理方法、およびプログラム
US20030212723A1 (en) Computer methods of vector operation for reducing computation time
KR100744216B1 (ko) 계산 장치 및 방법과 컴퓨터 프로그램 저장 매체
JP7006808B2 (ja) 演算処理装置および演算処理装置の制御方法
TWI235328B (en) Logic network and methods of computing
JPH0317132B2 (ja)
US9703525B2 (en) Partially and fully parallel normaliser
US9612800B2 (en) Implementing a square root operation in a computer system
JPH0234054B2 (ja)
US7016927B2 (en) Method and apparatus for modular multiplication
JP7120320B2 (ja) 演算処理装置および演算処理装置の制御方法
JP7131627B2 (ja) 演算処理装置
Maxfield An introduction to different rounding algorithms
CN116149600B (zh) 多常数乘法器的逻辑电路设置方法、装置、设备及介质
JP4399280B2 (ja) 剰余装置、剰余方法、プログラム及び記録媒体
KR101980448B1 (ko) Rsa 알고리즘 용 몽고메리 알고리즘 파라미터 계산 방법
JP7078129B2 (ja) 演算処理装置及び演算処理装置の制御方法
JP7120885B2 (ja) 半導体装置、および除算方法

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210311

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210311

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20211207

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20211220

R150 Certificate of patent or registration of utility model

Ref document number: 7006808

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150