説明

演算回路及び方法

【課題】切り上げ演算を含む数式の近似計算を高速に行うことができる演算回路及び方法を提供する。
【解決手段】所定のxの関数を所定値で除算した余りをrとする。数式のxをrの関数で置き換えかつ切り上げ演算の代わりに1に近い1未満の値を加算してから小数点以下を切り捨てる演算を行う第1の式から、数式のxをrの関数で置き換えかつ切り上げ演算を行わない第2の式を引いたものを関数f(r)とする。rに対するf(r)の計算結果を予めテーブルにまとめておく。与えられたxの値に対して切り上げ演算を行わないで数式を計算して近似値qを計算する。与えられたxの値に対してrを計算する。計算したrの値に対するf(r)の値をテーブルから取り出し、このf(r)の値と近似値qを足し合わせる。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、資源の配分量を算出する演算回路及び方法に関し、特に切り上げ演算を含む数式の近似計算を高速に行うことができる演算回路及び方法に関する。
【背景技術】
【0002】
通信システムでは取り扱うデータ量が急激に増えており、データ伝送速度の更なる高速化が要求されている。これに対して、アルゴリズムを高速に演算する処理回路として様々なものが提案されている(例えば、特許文献1参照)。
【0003】
また、例えばルータの行うパケット毎の優先制御などにおいて、複数のシステムに資源を効率的に配分することが要求されている。システムが必要とする資源の配分要求量xに対して配分すべき配分量yを算出する演算の一例を以下に示す。
y=ROUNDUP[ROUNDUP(x×5/54,0)×62/5,0] (数式1)
ここで、ROUNDUP(A,K)は数値Aを指定した桁数Kで切り上げる演算関数である。
【0004】
図3は、従来の演算回路を示すブロック図である。演算回路20,22は数式1の乗除算を行い、ROUNDUP回路21,23は数式1の切り上げ演算を行う。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2009−9463号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
切り上げ演算には時間がかかるため、従来の演算回路及び方法は切り上げ演算を含む数式1の計算を高速に行うことができなかった。
【0007】
本発明は、上述のような課題を解決するためになされたもので、その目的は切り上げ演算を含む数式の近似計算を高速に行うことができる演算回路及び方法を得るものである。
【課題を解決するための手段】
【0008】
本発明に係る演算回路は、切り上げ演算を含むxの関数である数式の近似計算を行う演算回路であって、所定のxの関数を所定値で除算した余りをrとし、前記数式のxを前記rの関数で置き換えかつ前記切り上げ演算の代わりに1に近い1未満の値を加算してから小数点以下を切り捨てる演算を行う第1の式から、前記数式のxを前記rの関数で置き換えかつ前記切り上げ演算を行わない第2の式を引いた関数をf(r)とし、rに対するf(r)の計算結果を予めまとめたテーブルと、与えられたxの値に対して前記切り上げ演算を行わないで前記数式を計算して近似値qを計算する回路と、与えられたxの値に対してrを計算する回路と、計算したrの値に対するf(r)の値を前記テーブルから取り出し、このf(r)の値と前記近似値qを足し合わせる回路とを備える。
【0009】
本発明に係る演算方法は、切り上げ演算を含むxの関数である数式の近似計算を行う演算方法であって、所定のxの関数を所定値で除算した余りをrとし、前記数式のxを前記rの関数で置き換えかつ前記切り上げ演算の代わりに1に近い1未満の値を加算してから小数点以下を切り捨てる演算を行う第1の式から、前記数式のxを前記rの関数で置き換えかつ前記切り上げ演算を行わない第2の式を引いた関数をf(r)とし、rに対するf(r)の計算結果を予めテーブルにまとめておく工程と、与えられたxの値に対して前記切り上げ演算を行わないで前記数式を計算して近似値qを計算する工程と、与えられたxの値に対してrを計算する工程と、計算したrの値に対するf(r)の値を前記テーブルから取り出し、このf(r)の値と前記近似値qを足し合わせる工程とを備える。
【発明の効果】
【0010】
本発明により、切り上げ演算を含む数式の近似計算を高速に行うことができる。
【図面の簡単な説明】
【0011】
【図1】本発明の実施の形態に係る演算回路を示すブロック図である。
【図2】各パラーメータについて計算した結果を示す図である。
【図3】従来の演算回路を示すブロック図である。
【発明を実施するための形態】
【0012】
本発明の実施の形態に係る演算回路及び方法について説明する。この演算回路及び方法は、切り上げ演算を含むxの関数である数式1の近似計算を行うことで、システムが必要とする資源の配分要求量xに対して配分すべき配分量yを算出するものである。
【0013】
まず、以下の数式2を定義する。
q=INT[(x×75245+2304)÷216] (数式2)
ここで、qは正整数を表す。INT(B)は数値Bを超えない最大の整数であり、小数点以下を切り捨てるINT演算を行う演算関数である。
【0014】
qは、数式1を切り上げ演算なしで近似した(x×5/54×62/5)を1次関数で線形近似したものである。2のn乗(この場合n=16)の除算で近似しており、nが大きい値ほど近似精度がよくなる。この除算は除数が2のn乗であるためビットシフトで実現することができる。また、2304の数値によりゼロ点をずらすことにより、より近い近似が得られる。
【0015】
数式2に含まれる数値について説明する。数式1の右辺を切り上げ演算なしで近似した(x×5/54×62/5)の1次関数の傾き62/54に216を乗算すると近似的に75245が算出される。この傾きを近似した値と正確な値の差は、(216×62/54−75245)×216=2427.256…である。演算のビット数を抑えるために2のn乗で割れる数にすると9×2=2304が得られる。
【0016】
また、以下の数式3を定義する。
r=MOD[INT[(x×9709+2560)÷212],2] (数式3)
ここで、rは正整数を表す。MOD(C,D)は数値Cを数値Dで割った場合の余りを求める演算関数である。即ち、rは、所定のxの関数[INT[(x×9709+2560)÷212]を所定値2で除算した余りである。2のn乗(この場合n=12)の除算で近似しており、nが大きい値ほど近似精度がよくなる。この除算は除数が2のn乗であるためビットシフトで実現することができる。
【0017】
数式3に含まれる数値について説明する。数式1のROUNDUP(x×5/54,0)は、xが54増えるごとに切り上げた数値が増える。そこで、xが54増えるごとに数値が増えるように、線形近似した1次関数のxの係数mを求める。即ち、m=(212×2)÷54=9709.037…である。この傾きを近似した値と正確な値の差は、(4096×2/54−9709)×65536=2427.258…である。演算のビット数を抑えるために2のn乗で割れる数にすると5×2=2560が得られる。
【0018】
rは0〜127の整数値となる。そこで、0〜53の整数値をとるように以下のrの関数を定義する。
INT(r×54/2+1/2) (数式4)
【0019】
また、以下の数式5を定義する。
f(r)=INT{INT[INT(r×54/2+1/2)×5/54+63/64]×62/5+7/8}−INT[INT(r×54/2+1/2)×62/54] (数式5)
ここで、f(r)は正整数となる。
【0020】
数式5の63/64、7/8は数式1の切り上げ演算をINT演算に変換した場合の切り上げの加算値である。従って、数式5の右辺の第1の式は、数式1のxを数式4で置き換え、かつ切り上げ演算の代わりに1に近い1未満の値を加算してからINT演算を行うものである。一方、数式5の右辺の第2の式は、数式1のxを数式4で置き換え、かつ切り上げ演算を行わないものである。
【0021】
以下の数式6により数式1の近似計算を行うことができる。
y=q+f(r) (数式6)
ここで、0≦x≦(216−1)であれば誤差は生じない。
【0022】
図1は、本発明の実施の形態に係る演算回路を示すブロック図である。演算回路10は数式2の乗算、加算、及び除算を行う。INT回路11は数式2のINT演算を行う。演算回路12は、数式3の乗算、加算、及び除算を行う。INT回路13は数式3のINT演算を行う。MOD回路14は数式3のMOD演算を行う。テーブル15には、rに対するf(r)の計算結果が予めまとめられている。加算回路16は数式6の加算を行う。
【0023】
図2は、各パラーメータについて計算した結果を示す図である。rはxが54増えるごとに周期的に同じ値となる。従って、xの数値範囲に関わらず、rとf(r)の相関関係がまとめられたテーブル15の内容量は限られる。
【0024】
xの値が与えられると、演算回路10及びINT回路11は、数式2に従ってxの値に対して数式2を計算して近似値qを計算する。また、演算回路12、INT回路13及びMOD回路14は、数式3に従ってxの値に対してrを計算する。次に、加算回路16は、計算したrの値に対するf(r)の値をテーブル15から取り出し、このf(r)の値と近似値qを足し合わせる。これによりyの値が求まる。
【0025】
以上説明したように、本実施の形態は、切り上げ演算を行うことなく、数式1の近似計算を行うことができる。従って、切り上げ演算を含む数式1の近似計算を高速に行うことができる。
【0026】
また、2つの乗算は並列動作が可能なため、乗算1段分の速度での高速パイプライン処理も可能となる。そして、乗算回路をハードマクロとして内蔵したFPGA(Field Programmable Gate Array)を使用することで更なる高速処理が可能である。
【符号の説明】
【0027】
10,12 演算回路
11,13 INT回路
14 MOD回路
15 テーブル
16 加算回路

【特許請求の範囲】
【請求項1】
切り上げ演算を含むxの関数である数式の近似計算を行う演算回路であって、
所定のxの関数を所定値で除算した余りをrとし、前記数式のxをrの関数で置き換えかつ前記切り上げ演算の代わりに1に近い1未満の値を加算してから小数点以下を切り捨てる演算を行う第1の式から、前記数式のxを前記rの関数で置き換えかつ前記切り上げ演算を行わない第2の式を引いた関数をf(r)とし、rに対するf(r)の計算結果を予めまとめたテーブルと、
与えられたxの値に対して前記切り上げ演算を行わないで前記数式を計算して近似値qを計算する回路と、
与えられたxの値に対してrを計算する回路と、
計算したrの値に対するf(r)の値を前記テーブルから取り出し、このf(r)の値と前記近似値qを足し合わせる回路とを備えることを特徴とする演算回路。
【請求項2】
切り上げ演算を含むxの関数である数式の近似計算を行う演算方法であって、
所定のxの関数を所定値で除算した余りをrとし、前記数式のxをrの関数で置き換えかつ前記切り上げ演算の代わりに1に近い1未満の値を加算してから小数点以下を切り捨てる演算を行う第1の式から、前記数式のxを前記rの関数で置き換えかつ前記切り上げ演算を行わない第2の式を引いた関数をf(r)とし、rに対するf(r)の計算結果を予めテーブルにまとめておく工程と、
与えられたxの値に対して前記切り上げ演算を行わないで前記数式を計算して近似値qを計算する工程と、
与えられたxの値に対してrを計算する工程と、
計算したrの値に対するf(r)の値を前記テーブルから取り出し、このf(r)の値と前記近似値qを足し合わせる工程とを備えることを特徴とする演算方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate