(57)【要約】【課題】剰余系による加減乗算の高速化と、スケーリング演算の高速化とを両立して実現する剰余系演算システムを提供する。【解決手段】数値を第１モジュラスによる剰余値及び第２モジュラスによる剰余値の組による第１の剰余形式で表現する剰余系において、第１の剰余形式の入力値を第２モジュラスで割った第１の剰余形式の商を算出するスケーリング演算器であって、入力値における、第１モジュラスによる剰余値及び第２モジュラスによる剰余値の差分値であるモジュラス間差分値を出力する減算器と、モジュラス間差分値に基づいて、商の第１モジュラスによる剰余値及び商の第２モジュラスによる剰余値の組を商として出力する商出力部とを備えるスケーリング演算器を提供する。【選択図】図２
2005056032.tif 000002
【特許請求の範囲】
【請求項１】
数値を第１モジュラス（法）による剰余値及び第２モジュラスによる剰余値の組による第１の剰余形式で表現する剰余系において、前記第１の剰余形式の入力値を前記第２モジュラスで割った前記第１の剰余形式の商を算出するスケーリング演算器であって、
前記入力値における、前記第１モジュラスによる剰余値及び前記第２モジュラスによる剰余値の差分値であるモジュラス間差分値を出力する減算器と、
前記モジュラス間差分値に基づいて、前記商の第１モジュラスによる剰余値及び前記商の前記第２モジュラスによる剰余値の組を前記商として出力する商出力部と
を備えるスケーリング演算器。
【請求項２】
前記第１モジュラス及び前記第２モジュラスは互いに素である請求項１記載のスケーリング演算器。
【請求項３】
前記第１モジュラス及び前記第２モジュラスの差は１であり、
前記商出力部は、前記商の第１モジュラスによる剰余値及び前記商の前記第２モジュラスによる剰余値として、前記モジュラス間差分値の前記第１モジュラスによる剰余値を出力する
請求項２記載のスケーリング演算器。
【請求項４】
前記減算器は、前記剰余形式の前記入力値における、前記第１モジュラス及び前記第２モジュラスのうちより小さいモジュラスによる剰余値からより大きいモジュラスによる剰余値を減じた前記モジュラス間差分値を出力し、
前記商出力部は、前記モジュラス間差分値を前記第１モジュラス及び前記第２モジュラスの差の絶対値により割った値の前記第１モジュラスによる剰余値を、前記商の第１モジュラスによる剰余値及び前記商の前記第２モジュラスによる剰余値として算出する
請求項１記載のスケーリング演算器。
【請求項５】
前記第１モジュラスは、互いに素な複数の整数である複数の第１サブモジュラスの積であり、
前記第２モジュラスは、互いに素な複数の整数である複数の第２サブモジュラスの積であり、
前記入力値の前記第１モジュラスによる剰余値が、前記複数の第１サブモジュラスのそれぞれにより前記入力値を割った複数の第１サブ剰余値により表現され、前記入力値の前記第２モジュラスによる剰余値が、前記複数の第２サブモジュラスのそれぞれにより前記入力値を割った複数の第２サブ剰余値により表現された第２の剰余形式の前記入力値を、前記第１の剰余形式の前記入力値に変換する剰余形式変換器と、
前記商出力部が出力した前記第１の剰余形式の前記商を、前記第２の剰余形式の前記商に変換する剰余形式逆変換器と
を備える請求項１記載のスケーリング演算器。
【請求項６】
前記第１モジュラスは、互いに素な複数の整数である複数の第１サブモジュラスの積であり、
前記第２モジュラスは、互いに素な複数の整数である複数の第２サブモジュラスの積であり、
前記入力値は、前記第１モジュラスによる剰余値が、前記複数の第１サブモジュラスのそれぞれにより前記入力値を割った複数の第１サブ剰余値により表現され、前記第２モジュラスによる剰余値が、前記複数の第２サブモジュラスのそれぞれにより前記入力値を割った複数の第２サブ剰余値により表現された第２の剰余形式により更に表現され、
前記複数の第１サブ剰余値により表現された、前記入力値の前記第１モジュラスによる剰余値を、前記複数の第２サブモジュラスのそれぞれによる剰余である複数の第１変換サブ剰余値に変換する第１サブ剰余値変換部を更に備え、
前記減算器は、前記入力値の前記第１モジュラスによる剰余値を示す前記複数の第１変換サブ剰余値と、前記入力値の前記第２モジュラスによる剰余値を示す前記複数の第２サブ剰余値との差分値であって、前記複数の第２サブモジュラスのそれぞれにより当該差分値を割った複数の剰余値により表現された第１の前記モジュラス間差分値を出力する第２モジュラス対応減算器を有し、
前記商出力部は、前記第１のモジュラス間差分値に基づいて、前記複数の第２サブモジュラスのそれぞれによる複数の剰余値により表現された前記商の前記第２モジュラスによる剰余値を出力する第２モジュラス対応商出力部を有する
請求項１記載のスケーリング演算器。
【請求項７】
前記複数の第２サブ剰余値により表現された、前記入力値の前記第２モジュラスによる剰余値を、前記複数の第１サブモジュラスのそれぞれによる剰余である複数の第２変換サブ剰余値に変換する第２サブ剰余値変換部を更に備え、
前記減算器は、前記入力値の前記第２モジュラスによる剰余値を示す前記複数の第２変換サブ剰余値と、前記入力値の前記第１モジュラスによる剰余値を示す前記複数の第１サブ剰余値との差分値であって、前記複数の第１サブモジュラスのそれぞれにより当該差分値を割った複数の剰余値により表現された第２の前記モジュラス間差分値を出力する第１モジュラス対応減算器を更に有し、
前記商出力部は、前記第２のモジュラス間差分値に基づいて、前記複数の第１サブモジュラスのそれぞれによる複数の剰余値により表現された前記商の前記第１モジュラスによる剰余値を出力する第１モジュラス対応商出力部を更に有する
請求項６記載のスケーリング演算器。
【請求項８】
前記入力値の前記第１モジュラスによる剰余値と、前記入力値の前記第２モジュラスによる剰余値とが、予め定められた大小関係を満たすか否かを判断する条件判断部を更に備え、
前記商出力部は、前記入力値の前記第１モジュラスによる剰余値と、前記入力値の前記第２モジュラスによる剰余値とが、前記予め定められた大小関係を満たす場合に、前記第１のモジュラス間差分値及び前記第２のモジュラス間差分値の一方に予め定められた定数を加えて調整した前記第１のモジュラス間差分値及び前記第２のモジュラス間差分値を、前記第１モジュラス対応商出力部及び前記第２モジュラス対応商出力部にそれぞれ供給する差分値調整部を更に有する
請求項７記載のスケーリング演算器。
【請求項９】
前記第１サブ剰余値変換部は、
前記複数の第１サブ剰余値により表現された前記入力値の前記第１モジュラスによる剰余値を初期値とする被変換値における、前記複数の第１サブモジュラスのそれぞれにより前記被変換値を割った複数の被変換剰余値のそれぞれについて、前記被変換値から減じた場合に、順次当該被変換剰余値を０とし、かつ、既に０に変換された他の全ての前記被変換剰余値を０に保つ変換係数を算出する変換係数算出部と、
前記変換係数算出部により順次算出される、前記第１モジュラスによる剰余値により表現された前記変換係数を、順次加算していく変換係数加算器と、
前記変換係数算出部により順次算出される、前記複数の第１サブモジュラスのそれぞれによる複数の剰余値により表現された前記変換係数を、前記被変換値から順次減じる被変換値減算器と、
前記複数の被変換剰余値の全てについて算出された全ての前記変換係数が前記変換係数加算器により加算された加算値を前記複数の第２サブモジュラスのそれぞれにより割った複数の剰余値を、前記複数の第１変換サブ剰余値として出力する変換結果出力部と
を備える請求項７記載のスケーリング演算器。
【請求項１０】
前記変換係数算出部は、前記複数の被変換剰余値のそれぞれについて、当該被変換剰余値に対応するアドレスに、当該被変換剰余値に対応する前記変換係数をデータとして格納するメモリを含む請求項９記載のスケーリング演算器。
【請求項１１】
前記第１モジュラスは、互いに素な複数の整数である複数の第１サブモジュラスの積であり、
前記第２モジュラスは、互いに素な複数の整数である複数の第２サブモジュラスの積であり、
前記入力値は、前記第１モジュラスによる剰余値が、前記複数の第１サブモジュラスのそれぞれにより前記入力値を割った複数の第１サブ剰余値により表現され、前記入力値の前記第２モジュラスによる剰余値が、前記複数の第２サブモジュラスのそれぞれにより前記入力値を割った複数の第２サブ剰余値により表現された第２の剰余形式により更に表現され、
前記複数の第１サブ剰余値により表現された前記入力値の前記第１モジュラスによる剰余値を、前記複数の第２サブモジュラスのそれぞれによる剰余である複数の第１変換サブ剰余値に変換する第１サブ剰余値変換部を更に備え、
前記減算器は、前記入力値の前記第１モジュラスによる剰余値を示す前記複数の第１変換サブ剰余値と、前記入力値の前記第２モジュラスによる剰余値を示す前記複数の第２サブ剰余値との差分値であって、前記複数の第２サブモジュラスのそれぞれにより当該差分値を割った複数の剰余値により表現された第１の前記モジュラス間差分値を出力する第２モジュラス対応減算器を有し、
更に、前記複数の第２サブモジュラスのそれぞれによる複数の剰余値により表現された前記第１のモジュラス間差分値を、前記複数の第１サブモジュラスのそれぞれによる複数の剰余値により表現された変換モジュラス間差分値に変換する第２サブ剰余値変換部を備え、
前記商出力部は、
前記変換モジュラス間差分値に基づいて、前記複数の第１サブモジュラスのそれぞれによる複数の剰余値により表現された前記商の前記第１モジュラスによる剰余値を出力する第１モジュラス対応商出力部と、
前記第１のモジュラス間差分値に基づいて、前記複数の第２サブモジュラスのそれぞれによる複数の剰余値により表現された前記商の前記第２モジュラスによる剰余値を出力する第２モジュラス対応商出力部と
を有する請求項１記載のスケーリング演算器。
【請求項１２】
数値を第１モジュラス（法）による剰余値及び第２モジュラスによる剰余値の組による第１の剰余形式で表現する剰余系を用いる剰余系演算システムであって、
演算対象となる２つの被演算値を入力し、２つの被演算値の間で加算、減算、又は乗算を行う剰余系演算器と、
前記剰余系演算器による演算結果にスケーリングが必要である場合に、前記演算結果を入力値として入力し、前記入力値を前記第２モジュラスで割った商を前記演算結果のスケーリング結果として算出するスケーリング演算器と
を備え、
前記スケーリング演算器は、
前記入力値における、前記第１モジュラスによる剰余値及び前記第２モジュラスによる剰余値の差分値であるモジュラス間差分値を出力する減算器と、
前記モジュラス間差分値に基づいて、前記商の第１モジュラスによる剰余値及び前記商の前記第２モジュラスによる剰余値の組を前記商として出力する商出力部と
を有する剰余系演算システム。
【請求項１３】
数値を第１モジュラス（法）による剰余値及び第２モジュラスによる剰余値の組による第１の剰余形式で表現する剰余系において、前記第１の剰余形式の入力値を前記第２モジュラスで割った前記第１の剰余形式の商を演算器により算出するスケーリング演算方法であって、
前記入力値における、前記第１モジュラスによる剰余値及び前記第２モジュラスによる剰余値の差分値であるモジュラス間差分値を出力する減算段階と、
前記モジュラス間差分値に基づいて、前記商の第１モジュラスによる剰余値及び前記商の前記第２モジュラスによる剰余値の組を前記商として出力する商出力段階と
を備えるスケーリング演算方法。
【請求項１４】
前記第１モジュラスは、互いに素な複数の整数である複数の第１サブモジュラスの積であり、
前記第２モジュラスは、互いに素な複数の整数である複数の第２サブモジュラスの積であり、
前記入力値は、前記第１モジュラスによる剰余値が、前記複数の第１サブモジュラスのそれぞれにより前記入力値を割った複数の第１サブ剰余値により表現され、前記第２モジュラスによる剰余値が、前記複数の第２サブモジュラスのそれぞれにより前記入力値を割った複数の第２サブ剰余値により表現された第２の剰余形式により更に表現され、
前記複数の第１サブ剰余値により表現された、前記入力値の前記第１モジュラスによる剰余値を、前記複数の第２サブモジュラスのそれぞれによる剰余である複数の第１変換サブ剰余値に変換する第１サブ剰余値変換段階を更に備え、
前記減算段階は、前記入力値の前記第１モジュラスによる剰余値を示す前記複数の第１変換サブ剰余値と、前記入力値の前記第２モジュラスによる剰余値を示す前記複数の第２サブ剰余値との差分値であって、前記複数の第２サブモジュラスのそれぞれにより当該差分値を割った複数の剰余値により表現された第１の前記モジュラス間差分値を出力する第２モジュラス対応減算段階を有し、
前記商出力段階は、前記第１のモジュラス間差分値に基づいて、前記複数の第２サブモジュラスのそれぞれによる複数の剰余値により表現された前記商の前記第２モジュラスによる剰余値を出力する第２モジュラス対応商出力段階を有する
請求項１３記載のスケーリング演算方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、剰余系演算システム、スケーリング演算器、スケーリング演算方法、及びそのプログラムと記録媒体に関する。特に本発明は、剰余系で表現された数値のスケーリング演算を効率良く行う剰余系演算システム、スケーリング演算器、スケーリング演算方法、及びそのプログラムと記録媒体に関する。
【背景技術】
【０００２】
従来、ディジタル回路による数値演算は、２進数にもとづく論理回路により実現されている。また近年、剰余系(Residue Number System; RNS)による数値演算方法が提案されている（非特許文献１）。剰余系による加算、減算、及び乗算は、次に述べる理由により、従来の２進数による演算よりも高速に計算できることが知られている。
【０００３】
２進数での加算は、各ビットの演算から桁上がり（キャリー）信号が生じ、さらにLSB側からMSB側に伝播する。このため、(i-１)番目のビットのキャリーが到達するまで。i番目の桁の計算結果は決定できない。したがって、演算対象となるオペランドのビット数に比例して遅延量は大きくなる。一方、剰余系による演算は、各剰余桁で独立して並列に計算することができ、計算速度が計算ビット数に依存しないため、高速化することができる。
【０００４】
剰余系では１つの数値Xを、N個の剰余数（剰余値）の組み合わせで表現する。
【０００５】
【数１】
2005056032.tif 000003
【０００６】
式（１−１）においてxi = X mod mi（xi = |X|miとも表現する）であり、Xをi番目のモジュラス（modulus：法）miで割った剰余 (Residue)である。また，xiを剰余桁(Residue Digit) 、又は、モジュラスmiによる剰余値ともよぶ。ここで、modはmoduloの略であり、以下の式（１−２）が成立することを意味する。
【０００７】
【数２】
2005056032.tif 000004
【０００８】
ここでpはXをmiで割った商である。このときXとxiはモジュラスmiについて合同(congruent)であるといい、合同式(congruence)をもちいて以下の式により表現してもよい。
【０００９】
【数３】
2005056032.tif 000005
【００１０】
N個のモジュラスmi(i = 0,1,2,…,N-1)が互いに素(relatively prime)であるとき、以下に示す範囲のすべての数値Xを、N個の剰余数の一意的組み合わせで表現することができる。このとき，{m0, m1, m2, …, mN-1}をモジュラスセットとよぶ。
【００１１】
【数４】
2005056032.tif 000006
【００１２】
例として，モジュラスセット{m0, m1, m2, m3}= {8,7,5,3}をもちいた剰余表現を考えると、この剰余系では M = 8×7×5×3 = 840個の整数を表現することができる。例えば、(0,0,0,0)RNS は 0 または 840 または 1680…、(1,1,1,1)RNS は 1 または 841 または 1681…、(0,1,3,2)RNS は 8 または 848 または 1688…、(0,1,4,1)RNS は 64 または 904 または 1744…、となる。そしてモジュラス セット{8,7,5,3}の場合、各剰余桁を表現するために必要となるビット数は、 [3bit, 3bit, 3bit, 2bit ] = 11bitである。
【００１３】
剰余系においては、加算、減算、乗算について、各剰余桁同士を独立に演算することにより実現することができ、剰余桁間の情報の伝播は不要である。すなわち、次に示す定理が成立する。
【００１４】
（剰余系加減乗算の定理）
演算子「〇」を加算、減算、又は乗算を表現する演算子とし、剰余系のモジュラスを{m0,m1,…,mN-1}、オペランドをA= (a0,a1,a2,...,aN-1)、B= (b0,b1,b2,...,bN-1)とすると、Z=A〇Bは、オペランドの各モジュラスに対する剰余桁同士の演算により実現できる。
【００１５】
【数５】
2005056032.tif 000007
【００１６】
ここで、左辺はYのmiによる剰余値である。また、式（１−５）による演算を剰余加算、剰余減算、又は剰余乗算とよぶ。剰余系加減乗算の定理は、以下に示すように証明される。
【００１７】
（剰余系加減乗算の定理の証明）
剰余系の数値表現の定義から、以下の式（１−６）が成立する。
【００１８】
【数６】
2005056032.tif 000008
【００１９】
ここで、piはAをモジュラスmiで割った商であり、qiはBをモジュラスmiで割った商である。
【００２０】
加減算においては、以下の式（１−７）が成立する。
【００２１】
【数７】
2005056032.tif 000009
【００２２】
ここで、(pi+qi)mi≡0より、以下の式（１−８）が成立する。
【００２３】
【数８】
2005056032.tif 000010
【００２４】
一方、乗算においては、以下の式（１−９）が成立する。
【００２５】
【数９】
2005056032.tif 000011
【００２６】
ここで、(piqimi+pibi+qiai)mi≡0より、以下の式（１−１０）が成立する。
【００２７】
【数１０】
2005056032.tif 000012
【００２８】
上記の式（１−８）及び式（１−１０）から、A及びBの各剰余桁同士の演算により、Yの各剰余桁を算出できることが分かる。したがって、式（１−５）の定理が成立することが証明される。
【００２９】
剰余系加減乗算の定理より、剰余系での加減乗算は、入力される２つのオペランドA及びBと、出力される演算結果Yの対応する剰余桁毎に、当該剰余桁についての演算を行う剰余演算ＡＬＵ（Arithmetic Logic Unit）を設けることにより実現することができる。そして、ある剰余桁の計算は、他の剰余桁の計算と独立に行うことができる。各剰余桁に対応する剰余演算ＡＬＵでの演算においては、キャリー伝搬による遅延が当該剰余桁のビット数分に限定できるため、より高速に計算することができる。
【００３０】
剰余系を用いて数値演算を高速化するためには、２進数系又は１０進数系から剰余系への変換(Binary-to-Residue (B/R) converter)、および剰余系から２進数系又は１０進数系への変換(Residue-to-Binary (R/B) converter)が必要である。B/R converterは比較的簡単に実現でき、R/B converterを実現する方法はいくつか検討されている。
【００３１】
R/B converterとしては、中国人の剰余定理（Chinese Remainder Theorem）を用いるものが一般的である。モジュラスセットが{m0,m1,m2,m3}={8,7,5,3}の場合において、Y = (y0,y1,y2,y3)=(5,3,4,2)を10進数に変換する場合を例に示す。
(5,3,4,2)は、式（１−５）に示した剰余系加減乗算の定理から以下の式（１−１１）に示すように変形でき、更に式（１−１２）を得ることができる。
【００３２】
【数１１】
2005056032.tif 000013
【００３３】
【数１２】
2005056032.tif 000014
【００３４】
このように、(1,0,0,0) , (0,1,0,0), (0,0,1,0), (0,0,0,1)に対応する１０進数表現を予め求めておけば、以下の式（１−１３）を用いて任意の剰余表現(y0,y1,y2,y3)を１０進数表現に変換できる。
【００３５】
【数１３】
2005056032.tif 000015
【００３６】
ここで、(1,0,0,0)は、モジュラス8(=m0)に対する剰余が１、かつ、モジュラスのサブセット{7,5,3}={m1,m2,m3}に対する剰余が０である数値である。後者の条件は、m1, m2, m3の最小公倍数であることを条件として(1,0,0,0)を算出すれば満たすことができる。これらの条件は、以下の式（１−１４）により表すことができる。
【００３７】
【数１４】
2005056032.tif 000016
【００３８】
ここでβ0は自然数である。そして、m1,m2,m3が互いに素であれば、式（１−４）よりa)及びb)の条件は以下の式（１−１５）に書き換えることができる。
【００３９】
【数１５】
2005056032.tif 000017
【００４０】
上記の自然数β0を求めることにより、(1,0,0,0)の10進数表現を求めることができる。以下に、{8,7,5,3}剰余系について(1,0,0,0) , (0,1,0,0), (0,0,1,0), (0,0,0,1)の10進数表現を示す。
【００４１】
【数１６】
2005056032.tif 000018
【００４２】
式（１−１６）から、{8,7,5,3}剰余系で表現された数値(5,3,4,2)の１０進数への変換は、5×105 + 3×120 + 4×336 + 2×280 = 2117となる。ただし、この剰余系で表現できる数値は0≦Y＜M=840であるため、Y =|2117|M = 437となる。
【００４３】
一般に，中国人の剰余定理は次式で導かれる。
【００４４】
【数１７】
2005056032.tif 000019
【００４５】
【非特許文献１】B. Parhami, Computer Arithmetic, Oxford University Press, ２０００年, pp. 54-72
【発明の開示】
【発明が解決しようとする課題】
【００４６】
剰余系をもちいると、加減乗算を高速に計算できる。しかし，次に述べるスケーリング演算のため、２進数で加減乗算を計算するよりも高速にならないという問題点がある。
【００４７】
２進数でn ビット× n ビットの乗算をおこなうと、乗算結果は(2n)ビットとなる。(514)×(237)のように１回の乗算であれば、入力n ビットにたいして(2n) ビットの乗算結果をそのまま出力すればよい。
【００４８】
ところが(514)×(237)×・・・×(353)のように乗算を繰り返すと、出力ビット数は大きくなってしまう。例えば10進数の(15/16)×(15/16)を計算すると、(225/256)が乗算結果となるが、出力ビットが4ビットしかないときは計算結果の一部を切捨て(truncate)て、入力ビット数と同じn ビットを計算結果として出力する。これは n ビット右へシフトするという処理に相当する。本例においては(15/16)×(15/16) =(225/256)を、４ビットシフトし、乗算結果として(14/16)を出力する。この桁合わせ処理のことをスケーリング(Scaling：縮小化)といい、例えば浮動小数点乗算における仮数部の桁合わせ等に用いられる。
【００４９】
このスケーリング処理を２進数に施すには、２進数の各桁に対応して重み付けされているから、ビットシフト処理、あるいは不要なビットをマスクするだけでよい。すなわちnビットに対応するシフト時間を必要とするのみである。しかし、剰余系で表現された数値に対しては、スケーリングをビットシフト操作で実現できない。例えば{8,7,5,3}剰余系で、(5,3,4,2)×(3,2,4,2) (=437×779 dec)の乗算をすると、乗算結果は340,423 decとなる。この剰余系では最大839までの数値しか表現できない。したがって，{8,7,5,3}剰余系のM=840でスケーリングして、乗算結果を405とする必要がある。ところが，(5,3,4,2) × (3,2,4,2) = (7,6,1,1)RNS{8,7,5,3}となり、このままでは405 = (5,6,0,0)にスケーリングすることができない。
【００５０】
剰余系においてスケーリングを行うために、中国人の剰余定理を利用する方法も考えられる。すなわち、乗算結果(7,6,1,1)を2進数(1010011000111000111)に変換し、この結果を上述したビットシフトによりスケーリングして(101001100)を得る。そして、再び剰余系に変換して(5,6,0,0)を得るという処理である。しかしながら、中国人の剰余定理は式（１−１７）に示したように、各剰余桁yiと定数bi・(M/mi)との乗算を伴うため、計算時間を要することになる。乗算を多用するような数値計算処理を行うとき、乗算毎に中国人の剰余定理を用いて2進数に変換しスケーリングすると、剰余系で乗算するメリット（計算速度向上）が失われてしまう。
【００５１】
そこで本発明は、上記の課題を解決することのできる剰余系演算システム、スケーリング演算器、スケーリング演算方法、及びそのプログラムと記録媒体を提供することを目的とする。この目的は特許請求の範囲における独立項に記載の特徴の組み合わせにより達成される。また従属項は本発明の更なる有利な具体例を規定する。
【課題を解決するための手段】
【００５２】
本発明の第１の形態によると、数値を第１モジュラス（法）による剰余値及び第２モジュラスによる剰余値の組による第１の剰余形式で表現する剰余系において、前記第１の剰余形式の入力値を前記第２モジュラスで割った前記第１の剰余形式の商を算出するスケーリング演算器であって、前記入力値における、前記第１モジュラスによる剰余値及び前記第２モジュラスによる剰余値の差分値であるモジュラス間差分値を出力する減算器と、前記モジュラス間差分値に基づいて、前記商の第１モジュラスによる剰余値及び前記商の前記第２モジュラスによる剰余値の組を前記商として出力する商出力部とを備えるスケーリング演算器を提供する。
【００５３】
前記第１モジュラス及び前記第２モジュラスは互いに素であってよい。また、前記第１モジュラス及び前記第２モジュラスの差は１であり、前記商出力部は、前記商の第１モジュラスによる剰余値及び前記商の前記第２モジュラスによる剰余値として、前記モジュラス間差分値の前記第１モジュラスによる剰余値を出力してよい。
【００５４】
また、前記第１モジュラス及び前記第２モジュラスの積を前記第１モジュラス及び前記第２モジュラスの差の絶対値により割った値が前記入力値以上の場合に、前記入力値のオーバーフローを検出するオーバーフロー検出器を更に備えてもよい。
【００５５】
また、前記減算器は、前記剰余形式の前記入力値における、前記第１モジュラス及び前記第２モジュラスのうちより小さいモジュラスによる剰余値からより大きいモジュラスによる剰余値を減じた前記モジュラス間差分値を出力し、前記商出力部は、前記モジュラス間差分値を前記第１モジュラス及び前記第２モジュラスの差の絶対値により割った値の前記第１モジュラスによる剰余値を、前記商の第１モジュラスによる剰余値及び前記商の前記第２モジュラスによる剰余値として算出してもよい。
【００５６】
また、前記第１モジュラスは、互いに素な複数の整数である複数の第１サブモジュラスの積であり、前記第２モジュラスは、互いに素な複数の整数である複数の第２サブモジュラスの積であり、前記入力値の前記第１モジュラスによる剰余値が、前記複数の第１サブモジュラスのそれぞれにより前記入力値を割った複数の第１サブ剰余値により表現され、前記入力値の前記第２モジュラスによる剰余値が、前記複数の第２サブモジュラスのそれぞれにより前記入力値を割った複数の第２サブ剰余値により表現された第２の剰余形式の前記入力値を、前記第１の剰余形式の前記入力値に変換する剰余形式変換器と、前記商出力部が出力した前記第１の剰余形式の前記商を、前記第２の剰余形式の前記商に変換する剰余形式逆変換器とを備えてもよい。
【００５７】
また、前記第１モジュラスは、互いに素な複数の整数である複数の第１サブモジュラスの積であり、前記第２モジュラスは、互いに素な複数の整数である複数の第２サブモジュラスの積であり、前記入力値は、前記第１モジュラスによる剰余値が、前記複数の第１サブモジュラスのそれぞれにより前記入力値を割った複数の第１サブ剰余値により表現され、前記第２モジュラスによる剰余値が、前記複数の第２サブモジュラスのそれぞれにより前記入力値を割った複数の第２サブ剰余値により表現された第２の剰余形式により更に表現され、前記複数の第１サブ剰余値により表現された、前記入力値の前記第１モジュラスによる剰余値を、前記複数の第２サブモジュラスのそれぞれによる剰余である複数の第１変換サブ剰余値に変換する第１サブ剰余値変換部を更に備え、前記減算器は、前記入力値の前記第１モジュラスによる剰余値を示す前記複数の第１変換サブ剰余値と、前記入力値の前記第２モジュラスによる剰余値を示す前記複数の第２サブ剰余値との差分値であって、前記複数の第２サブモジュラスのそれぞれにより当該差分値を割った複数の剰余値により表現された第１の前記モジュラス間差分値を出力する第２モジュラス対応減算器を有し、前記商出力部は、前記第１のモジュラス間差分値に基づいて、前記複数の第２サブモジュラスのそれぞれによる複数の剰余値により表現された前記商の前記第２モジュラスによる剰余値を出力する第２モジュラス対応商出力部を有してもよい。
【００５８】
また、前記複数の第２サブ剰余値により表現された、前記入力値の前記第２モジュラスによる剰余値を、前記複数の第１サブモジュラスのそれぞれによる剰余である複数の第２変換サブ剰余値に変換する第２サブ剰余値変換部を更に備え、前記減算器は、前記入力値の前記第２モジュラスによる剰余値を示す前記複数の第２変換サブ剰余値と、前記入力値の前記第１モジュラスによる剰余値を示す前記複数の第１サブ剰余値との差分値であって、前記複数の第１サブモジュラスのそれぞれにより当該差分値を割った複数の剰余値により表現された第２の前記モジュラス間差分値を出力する第１モジュラス対応減算器を更に有し、前記商出力部は、前記第２のモジュラス間差分値に基づいて、前記複数の第１サブモジュラスのそれぞれによる複数の剰余値により表現された前記商の前記第１モジュラスによる剰余値を出力する第１モジュラス対応商出力部を更に有してもよい。
【００５９】
また、前記入力値の前記第１モジュラスによる剰余値と、前記入力値の前記第２モジュラスによる剰余値とが、予め定められた大小関係を満たすか否かを判断する条件判断部を更に備え、前記商出力部は、前記入力値の前記第１モジュラスによる剰余値と、前記入力値の前記第２モジュラスによる剰余値とが、前記予め定められた大小関係を満たす場合に、前記第１のモジュラス間差分値及び前記第２のモジュラス間差分値の一方に予め定められた定数を加えて調整した前記第１のモジュラス間差分値及び前記第２のモジュラス間差分値を、前記第１モジュラス対応商出力部及び前記第２モジュラス対応商出力部にそれぞれ供給する差分値調整部を更に有してもよい。
【００６０】
また、前記第１モジュラスは、前記第２モジュラスより１大きく、前記条件判断部は、前記入力値の前記第１モジュラスによる剰余値が前記入力値の前記第２モジュラスによる剰余値より大きい場合に、前記入力値の前記第１モジュラスによる剰余値と、前記入力値の前記第２モジュラスによる剰余値とが、前記予め定められた大小関係を満たすと判断し、前記予め定められた大小関係を満たす場合に、前記差分値調整部は、前記第２のモジュラス間差分値に１を加えて調整し、前記第１モジュラス対応商出力部は、前記差分値調整部により調整された前記第２のモジュラス間差分値を、前記複数の第１サブモジュラスのそれぞれによる複数の剰余値により表現された前記商の前記第１モジュラスによる剰余値とし、前記第２モジュラス対応商出力部は、前記第１のモジュラス間差分値を、前記複数の第２サブモジュラスのそれぞれによる複数の剰余値により表現された前記商の前記第２モジュラスによる剰余値としてもよい。
【００６１】
また、前記第１サブ剰余値変換部は、前記複数の第１サブ剰余値により表現された前記入力値の前記第１モジュラスによる剰余値を初期値とする被変換値における、前記複数の第１サブモジュラスのそれぞれにより前記被変換値を割った複数の被変換剰余値のそれぞれについて、前記被変換値から減じた場合に、順次当該被変換剰余値を０とし、かつ、既に０に変換された他の全ての前記被変換剰余値を０に保つ変換係数を算出する変換係数算出部と、前記変換係数算出部により順次算出される、前記第１モジュラスによる剰余値により表現された前記変換係数を、順次加算していく変換係数加算器と、前記変換係数算出部により順次算出される、前記複数の第１サブモジュラスのそれぞれによる複数の剰余値により表現された前記変換係数を、前記被変換値から順次減じる被変換値減算器と、前記複数の被変換剰余値の全てについて算出された全ての前記変換係数が前記変換係数加算器により加算された加算値を前記複数の第２サブモジュラスのそれぞれにより割った複数の剰余値を、前記複数の第１変換サブ剰余値として出力する変換結果出力部とを備えてもよい。
【００６２】
また、前記変換係数算出部は、前記複数の被変換剰余値のそれぞれについて、当該被変換剰余値に対応するアドレスに、当該被変換剰余値に対応する前記変換係数をデータとして格納するメモリを含んでもよい。
【００６３】
また、前記第１モジュラスは、互いに素な複数の整数である複数の第１サブモジュラスの積であり、前記第２モジュラスは、互いに素な複数の整数である複数の第２サブモジュラスの積であり、前記入力値は、前記第１モジュラスによる剰余値が、前記複数の第１サブモジュラスのそれぞれにより前記入力値を割った複数の第１サブ剰余値により表現され、前記第２モジュラスによる剰余値が、前記複数の第２サブモジュラスのそれぞれにより前記入力値を割った複数の第２サブ剰余値により表現された第２の剰余形式により更に表現され、前記複数の第１サブ剰余値により表現された前記入力値の前記第２モジュラスによる剰余値を初期値とする被変換値における、前記複数の第１サブモジュラスのそれぞれにより前記被変換値を割った複数の被変換剰余値のそれぞれについて、前記被変換値から減じた場合に、順次当該被変換剰余値を０とし、かつ、既に０に変換された他の全ての前記被変換剰余値を０に保つ変換係数を算出する変換係数算出部と、前記変換係数算出部により順次算出される、前記複数の第１サブモジュラスのそれぞれによる複数の剰余値により表現された前記変換係数を、前記被変換値から順次減じる被変換値減算部とを更に備え、前記減算器は、前記変換係数算出部により順次算出される、前記複数の第２サブモジュラスのそれぞれによる複数の剰余値により表現された前記変換係数を、前記複数の第２サブ剰余値により表現された前記入力値の前記第２モジュラスによる剰余値から順次減じて前記複数の第２サブモジュラスのそれぞれによる複数の剰余値により表現された第１の前記モジュラス間差分値を出力する第２モジュラス対応減算器を有し、前記商出力部は、前記第１のモジュラス間差分値に基づいて、前記複数の第２サブモジュラスのそれぞれによる複数の剰余値により表現された前記商の前記第２モジュラスによる剰余値を出力する第２モジュラス対応商出力部を有してもよい。
【００６４】
また、前記第１モジュラスは、互いに素な複数の整数である複数の第１サブモジュラスの積であり、前記第２モジュラスは、互いに素な複数の整数である複数の第２サブモジュラスの積であり、前記入力値は、前記第１モジュラスによる剰余値が、前記複数の第１サブモジュラスのそれぞれにより前記入力値を割った複数の第１サブ剰余値により表現され、前記入力値の前記第２モジュラスによる剰余値が、前記複数の第２サブモジュラスのそれぞれにより前記入力値を割った複数の第２サブ剰余値により表現された第２の剰余形式により更に表現され、前記複数の第１サブ剰余値により表現された前記入力値の前記第１モジュラスによる剰余値を、前記複数の第２サブモジュラスのそれぞれによる剰余である複数の第１変換サブ剰余値に変換する第１サブ剰余値変換部を更に備え、前記減算器は、前記入力値の前記第１モジュラスによる剰余値を示す前記複数の第１変換サブ剰余値と、前記入力値の前記第２モジュラスによる剰余値を示す前記複数の第２サブ剰余値との差分値であって、前記複数の第２サブモジュラスのそれぞれにより当該差分値を割った複数の剰余値により表現された第１の前記モジュラス間差分値を出力する第２モジュラス対応減算器を有し、更に、前記複数の第２サブモジュラスのそれぞれによる複数の剰余値により表現された前記第１のモジュラス間差分値を、前記複数の第１サブモジュラスのそれぞれによる複数の剰余値により表現された変換モジュラス間差分値に変換する第２サブ剰余値変換部を備え、前記商出力部は、前記変換モジュラス間差分値に基づいて、前記複数の第１サブモジュラスのそれぞれによる複数の剰余値により表現された前記商の前記第１モジュラスによる剰余値を出力する第１モジュラス対応商出力部と、前記第１のモジュラス間差分値に基づいて、前記複数の第２サブモジュラスのそれぞれによる複数の剰余値により表現された前記商の前記第２モジュラスによる剰余値を出力する第２モジュラス対応商出力部とを有してもよい。
【００６５】
本発明の第２の形態によれば、数値を第１モジュラス（法）による剰余値及び第２モジュラスによる剰余値の組による第１の剰余形式で表現する剰余系を用いる剰余系演算システムであって、演算対象となる２つの被演算値を入力し、２つの被演算値の間で加算、減算、又は乗算を行う剰余系演算器と、前記剰余系演算器による演算結果にスケーリングが必要である場合に、前記演算結果を入力値として入力し、前記入力値を前記第２モジュラスで割った商を前記演算結果のスケーリング結果として算出するスケーリング演算器とを備え、前記スケーリング演算器は、前記入力値における、前記第１モジュラスによる剰余値及び前記第２モジュラスによる剰余値の差分値であるモジュラス間差分値を出力する減算器と、前記モジュラス間差分値に基づいて、前記商の第１モジュラスによる剰余値及び前記商の前記第２モジュラスによる剰余値の組を前記商として出力する商出力部とを有する剰余系演算システムを提供する。
【００６６】
本発明の第３の形態によれば、数値を第１モジュラス（法）による剰余値及び第２モジュラスによる剰余値の組による第１の剰余形式で表現する剰余系において、前記第１の剰余形式の入力値を前記第２モジュラスで割った前記第１の剰余形式の商を算出するスケーリング演算器としてコンピュータを機能させるプログラムであって、前記コンピュータを、前記入力値における、前記第１モジュラスによる剰余値及び前記第２モジュラスによる剰余値の差分値であるモジュラス間差分値を出力する減算器と、前記モジュラス間差分値に基づいて、前記商の第１モジュラスによる剰余値及び前記商の前記第２モジュラスによる剰余値の組を前記商として出力する商出力部として機能させるプログラム、又は、当該プログラムを記録した記録媒体を提供する。
【００６７】
本発明の第４の形態によれば、数値を第１モジュラス（法）による剰余値及び第２モジュラスによる剰余値の組による第１の剰余形式で表現する剰余系において、前記第１の剰余形式の入力値を前記第２モジュラスで割った前記第１の剰余形式の商を演算器により算出するスケーリング演算方法であって、前記入力値における、前記第１モジュラスによる剰余値及び前記第２モジュラスによる剰余値の差分値であるモジュラス間差分値を出力する減算段階と、前記モジュラス間差分値に基づいて、前記商の第１モジュラスによる剰余値及び前記商の前記第２モジュラスによる剰余値の組を前記商として出力する商出力段階とを備えるスケーリング演算方法を提供する。
【００６８】
前記第１モジュラスは、互いに素な複数の整数である複数の第１サブモジュラスの積であり、前記第２モジュラスは、互いに素な複数の整数である複数の第２サブモジュラスの積であり、前記入力値は、前記第１モジュラスによる剰余値が、前記複数の第１サブモジュラスのそれぞれにより前記入力値を割った複数の第１サブ剰余値により表現され、前記第２モジュラスによる剰余値が、前記複数の第２サブモジュラスのそれぞれにより前記入力値を割った複数の第２サブ剰余値により表現された第２の剰余形式により更に表現され、前記複数の第１サブ剰余値により表現された、前記入力値の前記第１モジュラスによる剰余値を、前記複数の第２サブモジュラスのそれぞれによる剰余である複数の第１変換サブ剰余値に変換する第１サブ剰余値変換段階を更に備え、前記減算段階は、前記入力値の前記第１モジュラスによる剰余値を示す前記複数の第１変換サブ剰余値と、前記入力値の前記第２モジュラスによる剰余値を示す前記複数の第２サブ剰余値との差分値であって、前記複数の第２サブモジュラスのそれぞれにより当該差分値を割った複数の剰余値により表現された第１の前記モジュラス間差分値を出力する第２モジュラス対応減算段階を有し、前記商出力段階は、前記第１のモジュラス間差分値に基づいて、前記複数の第２サブモジュラスのそれぞれによる複数の剰余値により表現された前記商の前記第２モジュラスによる剰余値を出力する第２モジュラス対応商出力段階を有してもよい。
【００６９】
なお、上記の発明の概要は、本発明の必要な特徴の全てを列挙したものではなく、これらの特徴群のサブコンビネーションもまた、発明となりうる。
【発明の効果】
【００７０】
本発明によれば、剰余系による加減乗算の高速化と、スケーリング演算の高速化とを両立して実現する剰余系演算システムを提供することができる。
【発明を実施するための最良の形態】
【００７１】
以下、発明の実施の形態を通じて本発明を説明するが、以下の実施形態は特許請求の範囲にかかる発明を限定するものではなく、また実施形態の中で説明されている特徴の組み合わせの全てが発明の解決手段に必須であるとは限らない。
【００７２】
本実施形態に係る剰余系演算システムは、以下に示すスケーリング剰余系(Scaling RNS)と算術剰余系(Arithmetic RNS)の２種類の剰余表現を用い、加減乗算は算術剰余系で、スケーリングはスケーリング剰余系で計算させることにより、加減乗算とスケーリング演算を高速に実現する。
【００７３】
（１）スケーリング剰余系(Scaling RNS)
スケーリング剰余系は、被スケーリング数Yを高速にスケーリングすることを目的とする剰余系である。ここで、スケーリング剰余系を用いたスケーリング方法を、「スケーリング剰余系によるスケーリング(Scaling by the Difference in Scaling RNS; SDSRNS)」と呼ぶ。
【００７４】
スケーリング剰余系は、モジュラス{m↑,m↓}が与えられ、数値を第１モジュラスm↑による剰余値及び第２モジュラスm↓による剰余値の組による第１の剰余形式で表現する剰余系である。本実施形態において、m↑及びm↓は互いに素であり、m↑及びm↓の差が1、より具体的にはm↓=m↑-1である場合を中心に説明する。
【００７５】
m↓=m↑-1の場合、後述の補足説明１に示した通り、Y=p・m↑+y↑かつY=p・m↓+y↓とすると、Yをm↓により割った商q、すなわちYをm↓によりスケーリングしたスケーリング結果q=(q mod m↑,q mod m↓)は、以下の式（２−１）により求められる。
【００７６】
【数１８】
2005056032.tif 000020
【００７７】
図１は、SDSRNS法によるスケーリング処理の概略を示す。本図に示したスケーリング演算器３は、SDSRNS法を用いて式（２−１）に基づきスケーリング処理を行う。これにより、スケーリング演算器３は、入力値Yの剰余桁間の減算結果を用いて高速にスケーリングを行うことができる。
【００７８】
（２）算術剰余系(Arhithmetic RNS)
SDSRNS法を用いることにより、上記の式（２−１）に示した様に、従来の剰余系におけるスケーリングで必要となる中国人の剰余定理を用いた乗算等の、演算ビット数の２乗に比例する演算量を要する処理が不要になる。このため、スケーリング処理を高速化することができる。
しかし、SDSRNS法においては、被スケーリング数を２つのモジュラスにより表現するため、各モジュラスが大きい値となり、加減乗算のときにキャリー伝播遅延が大きくなるという問題点がある。例えば、表現する数値の最大値Mを224とすると、m↑及びm↓は212近傍の値となり、{m↑,m↓}={4097,4096}をモジュラスセットにすることが考えられる。この結果、各剰余桁の計算のビット数が12(=log2M)となる。このように、SDSRNS法によれば、キャリー伝播遅延がlog2Mに比例して大きくなる。本来の剰余系のメリットは、４〜５ビット程度のモジュラスを組み合わせて剰余桁毎に独立して計算することにより、キャリー伝播遅延を低減できることにある。このため、Mが大きくなるにつれてキャリー伝播遅延も大きくなるスケーリング剰余系によれば、剰余系のメリットを十分に活かせない。
【００７９】
そこで、スケーリングの際に用いるスケーリング剰余系に加えて、スケーリング以外の演算に用いる算術剰余系を導入し、数値演算処理の高速化とスケーリングの高速化を両立させる。以下に、算術剰余系を定義する。
【００８０】
算術剰余系は、スケーリング剰余系の第１モジュラスm↑を素因数分解して得られる複数のモジュラス{m↑0，m↑1，m↑2，…，m↑j-1}と、第２モジュラスm↓を素因数分解して得られる複数のモジュラス{ m↓0，m↓1，m↓2，…，m↓k-1}とをモジュラスセットとする。すなわち、算術剰余系は、{{m↑0，m↑1，m↑2，…，m↑j-1},{ m↓0，m↓1，m↓2，…，m↓k-1}}をモジュラスセットとする剰余系である。
【００８１】
ここで、第１モジュラスm↑に対応する複数のモジュラス{m↑0，m↑1，m↑2，…，m↑j-1}を、第１モジュラスm↑に対応するモジュラスサブセット又は複数の第１サブモジュラス{m↑0，m↑1，m↑2，…，m↑j-1}と呼び、第２モジュラスm↓に対応する複数のモジュラス{ m↓0，m↓1，m↓2，…，m↓k-1}の組を、第２モジュラスm↓に対応するモジュラスサブセット又は第２サブモジュラス{ m↓0，m↓1，m↓2，…，m↓k-1}と呼ぶ。
【００８２】
このとき、以下の式（２−２）に示すように、第１モジュラスm↑は、互いに素な複数の整数である複数の第１サブモジュラス{m↑0，m↑1，m↑2，…，m↑j-1}の積となり、第２モジュラスm↓は、互いに素な複数の整数である複数の第２サブモジュラス{ m↓0，m↓1，m↓2，…，m↓k-1}の積となる。
【００８３】
【数１９】
2005056032.tif 000021
【００８４】
ここで表現を簡略化するため、以下の式（２−３）に示すように、スケーリング剰余系で表現された数値を｜X｜ScalingRNS、算術剰余系で表現された数値を｜X｜ArithmeticRNSと表現する。
【００８５】
【数２０】
2005056032.tif 000022
【００８６】
式（２−３）により、算術剰余系は、Xの第１モジュラスm↑による剰余値x↑が、複数の第１サブモジュラス{m↑0，m↑1，m↑2，…，m↑j-1}のそれぞれによりXを割った複数のサブ剰余値(x↑0, x↑1，…，x↑j-1)により表現され、Xの第２モジュラスm↓による剰余値x↓が、複数の第２サブモジュラス{m↓0，m↓1，m↓2，…，m↓j-1}のそれぞれによりXを割った複数のサブ剰余値(x↓0, x↓1，…，x↓j-1)により表現された第２の剰余形式を採るとみなすことができる。
【００８７】
本実施形態に係る剰余系演算システム５は、算術剰余系で表現された数｜A｜ArithmeticRNS及び｜B｜ArithmeticRNSを入力として剰余系演算器１０により加減乗算を行う。剰余系演算器１０による計算の結果スケーリングが必要となった場合に、計算結果｜Y｜ArithmeticRNS を算術剰余形式からスケーリング剰余形式に変換し、｜Y｜ScalingRNSを得る。次に、スケーリング剰余系で前述したSDSRNS法によるスケーリングを行い、｜Y/m↓｜ScalingRNSを得る。そして、これをスケーリング剰余形式から算術剰余形式に変換し、｜Y/m↓｜ArithmeticRNSを得る。これにより剰余系演算システム５は、加減乗算の高速化と、スケーリングの高速化を両立させることができる。すなわち、加減乗算は各剰余桁表現が例えば４ビット等の、スケーリング剰余系と比較しビット幅の小さい算術剰余系でおこなうため、キャリー伝播遅延を小さく抑えることができる。そして、スケーリングはSDSRNS法により減算のみで実現できるため、従来の中国人の剰余定理を利用するスケーリング方法より高速に計算できる。
【００８８】
図２は、本実施形態に係る剰余系演算システム５の構成を示す。剰余系演算システム５は、剰余系の数値Ａ及びＢを入力して各種の演算を行う剰余系演算器１０と、剰余系演算器１０による演算の結果スケーリング処理が必要となった場合に、スケーリング演算を行うスケーリング演算器１００とを備える。ここでスケーリング演算器１００は、剰余系演算器１０による演算結果を入力し、入力値の剰余桁間で減算した結果に基づいて、入力値をモジュラスの１つで割った商をスケーリング結果として算出する。これによりスケーリング演算器１００は、中国人の剰余定理を利用して一旦２進数又は１０進数に変換した後にスケーリングを行う場合と比較して高速にスケーリングを行うことができる。
【００８９】
剰余系演算システム５は、剰余系演算器１０と、スケーリング演算器１００とを備える。
剰余系演算器１０は、本発明に係る第２の剰余形式の一例である算術剰余形式により表現されたオペランドA及びBを入力し、A及びBの間で加算、減算、又は乗算を行う。本実施形態において、オペランドAは、複数の第１サブモジュラス{m↑0,m↑1,m↑2,m↑3}のそれぞれによりオペランドAを割った複数の剰余値(a↑0,a↑1,a↑2,a↑3)と、複数の第２サブモジュラス{m↓0,m↓1,m↓2}のそれぞれによりオペランドAを割った複数の剰余値 (a↓0,a↓1,a↓2)との組により表現される。同様にオペランドBは、複数の剰余値(b↑0,b↑1,b↑2,b↑3)と、複数の剰余値 (b↓0,b↓1,b↓2)との組により表現される。剰余系演算器１０は、オペランドA及びオペランドBの対応する剰余桁の剰余値の間で加算、減算、又は乗算を行う複数の剰余演算ＡＬＵ２０を有する。
【００９０】
スケーリング演算器１００は、剰余系演算器１０による演算結果Y=(y↑0,y↑1,y↑2,y↑3,y↓0,y↓1,y↓2)を入力値として入力し、入力値Yをm↓で割った商を演算結果Yのスケーリング結果Z=(z↑0,z↑1,z↑2,z↑3,z↓0,z↓1,z↓2)として算出する。スケーリング演算器１００は、オーバーフロー検出器１１０と、剰余形式変換器１２０と、減算器１３０と、商出力部１４０と、剰余形式逆変換器１５０とを有する。
【００９１】
オーバーフロー検出器１１０は、スケーリング演算器１００に入力される入力値Yのオーバーフローを検出する。剰余形式変換器１２０は、算術剰余系により表現された入力値Yを、スケーリング剰余系により表現された入力値Y=(y↑,y↓)に変換する。減算器１３０は、スケーリング剰余系により表現された入力値Yに対して、後述の式（３−５）に示した剰余桁間の減算を行い、剰余桁間の差分値であるモジュラス間差分値を出力する。商出力部１４０は、式（２−１）に示した様に、モジュラス間差分値に基づいて、スケーリング剰余系により表現されたスケーリング結果Z=(z↑,z↓)、すなわち入力値Yをm↓で割った商Zを出力する。剰余形式逆変換器１５０は、スケーリング剰余系により表現されたスケーリング結果Zを、算術剰余系により表現されたスケーリング結果Z=(z↑0,z↑1,z↑2,z↑3,z↓0,z↓1,z↓2)に変換し、スケーリング結果として出力する。
【００９２】
図３は、本実施形態に係る剰余系演算システム５の動作フローを示す。
まず、剰余系演算器１０は、演算対象となる２つの被演算値であるオペランドA及びBを入力して、A及びBの間で加算、減算、又は乗算を行う（ステップＳ２００）。次に剰余系演算器１０は、演算結果Yをスケーリングすべきか否かを判断する（Ｓ２１０）。スケーリングが不要である場合、剰余系演算器１０は、第２の剰余形式による演算結果Yを演算結果として出力する。
【００９３】
一方、スケーリングが必要である場合、剰余系演算器１０は、第２の剰余形式の演算結果Yをスケーリング演算器１００に入力する。オーバーフロー検出器１１０は、スケーリング演算器１００に入力された入力値Yのオーバーフローを検出する（Ｓ２２０）。すなわち、後述の補足説明１の（１）に記載したように、被スケーリング数である入力値Yの上限が制限されている場合、オーバーフロー検出器１１０はオーバーフローを検出する。
また、m↑≠m↓-1により剰余系演算システム５を実現した場合、オーバーフロー検出器１１０は、第１モジュラスm↑及び第２モジュラスの積m↓を第１モジュラスm↑及び第２モジュラスm↓の差の絶対値により割った値が入力値Y以上である場合に、入力値Yのオーバーフローを検出する。これにより、後述の補足説明１の（２）又は（３）に記載した式（３−１３）及び式（３−１６）が成立する範囲に入力値Yを制限することができる。
【００９４】
次に、剰余形式変換器１２０は、算術剰余系により表現された入力値Yを、スケーリング剰余系により表現された入力値Yに変換する。すなわち剰余形式変換器１２０は、入力値Yの第１モジュラスm↑による剰余値y↑が、複数の第１サブモジュラス{m↑0,m↑1,m↑2,m↑3}のそれぞれにより入力値Yを割った複数の第１サブ剰余値(y↑0,y↑1,y↑2,y↑3)により表現され、入力値Yの第２モジュラスm↓による剰余値y↓が、複数の第２サブモジュラス{m↓0,m↓1,m↓2}のそれぞれにより入力値を割った複数の第２サブ剰余値(y↓0,y↓1,y↓2)により表現された算術剰余形式の入力値Yを、スケーリング剰余形式の入力値Yに変換する。
【００９５】
次に、減算器１３０は、入力値Yにおける、第１モジュラスm↑による剰余値y↑及び第２モジュラスm↓による剰余値y↓の差分値であるモジュラス間差分値を出力する。より具体的には、減算器１３０は、後述の補足説明１の式（３−５）、（３−６）、（３−１１）、又は（３−１２）等に示した(y↓- y↑) mod m↑又は(y↑- y↓) mod m↑を、モジュラス間差分値として算出し出力する剰余減算器である。ここで、減算器１３０は、剰余形式の入力値における、第１モジュラスm↑及び第２モジュラスm↓のうちより小さいモジュラス（例えばm↓）による剰余値（例えばy↓）からより大きいモジュラス（例えばm↑）による剰余値（例えばy↑）を減じたモジュラス間差分値(y↓- y↑) mod m↑を出力してよい。
【００９６】
次に、商出力部１４０は、モジュラス間差分値に基づいて、商qの第１モジュラスm↑による剰余値及び商qの第２モジュラスm↓による剰余値の組を商qとして出力する。より具体的には、商出力部１４０は、後述の補足説明１の式（３−１０）、（３−１３）、又は（３−１６）に示した商qを出力する。
すなわち、第１モジュラスm↑及び第２モジュラスm↓の差が１である場合、商出力部１４０は、式（３−１０）に示した様に、商qの第１モジュラスm↑による剰余値及び商qの第２モジュラスm↓による剰余値として、モジュラス間差分値の第１モジュラスm↑による剰余値を出力する。また、式（３−１０）を用いる場合において、商出力部１４０は、q mod m↑=m↓の場合にq mod m↑=0に変換する等により剰余桁の補正を行い、スケーリング剰余形式の商qを出力してよい。
【００９７】
また、第１モジュラスm↑及び第２モジュラスm↓の差が１でない場合、商出力部１４０は、式（３−１３）又は（３−１６）に示した様に、モジュラス間差分値(y↓- y↑) mod m↑又は(y↑- y↓) mod m↑を第１モジュラスm↑及び第２モジュラスm↓の差の絶対値｜m↑-m↓｜により割った値の第１モジュラスm↑による剰余値を、商qの第１モジュラスm↑による剰余値及び商qの第２モジュラスm↓による剰余値として算出する。
【００９８】
次に、剰余形式逆変換器１５０は、商出力部１４０が出力したスケーリング剰余形式の商qを、算術剰余形式の商qに変換し、算術剰余形式のスケーリング結果Z=(z↑0,z↑1,z↑2,z↑3,z↓0,z↓1,z↓2)として出力する。
【００９９】
以上に示した剰余系演算システム５によれば、算術剰余系を用いて加減乗算を行う一方、スケーリング剰余系を用いてスケーリング演算を行うため、剰余系による加減乗算の高速化と、スケーリング演算の高速化とを両立して実現することができる。
【０１００】
図４は、本実施形態の第１変形例に係るスケーリング演算器１００の構成を示す。本変形例に係るスケーリング演算器１００は、スケーリング剰余系と算術剰余系の間で剰余系の変換を行うのに代えて、第１モジュラスm↑に対応する複数の第１サブモジュラス{m↑0,m↑1,m↑2,m↑3}により表された複数の剰余桁を、第２モジュラスm↓に対応する複数の第２サブモジュラス{m↓0,m↓1,m↓2}により表された複数の剰余桁に変換し、変換された第１モジュラスm↑による剰余値及び第２モジュラスm↓による剰余値の差分値をモジュラス間差分値として算出する。これにより、剰余形式変換器１２０及び剰余形式逆変換器１５０による変換処理のオーバーヘッドを低減することができる。
なお、算術剰余系におけるモジュラスセット{{m↑0,m↑1,m↑2,m↑3},{m↓0,m↓1,m↓2}}のモジュラスサブセット{m↑0,m↑1,m↑2,m↑3}及び{m↓0,m↓1,m↓2}の間で剰余数を変換することを、「モジュラスサブセットの桁揃え(Base Extention for Moduli Subset; BEMS)」と呼ぶ。
【０１０１】
本変形例に係るスケーリング演算器１００は、入力値Yの第１モジュラスm↑による剰余値y↑が、複数の第１サブモジュラス{m↑0,m↑1,m↑2,m↑3}のそれぞれにより入力値Yを割った複数の第１サブ剰余値(y↑0,y↑1,y↑2,y↑3)により表現され、入力値Yの第２モジュラスm↓による剰余値が、複数の第２サブモジュラス{m↓0,m↓1,m↓2}のそれぞれにより入力値Yを割った複数の第２サブ剰余値(y↓0,y↓1,y↓2)により表現された算術剰余形式の入力値Yを入力し、この入力値Yに対してスケーリングを行う。スケーリング演算器１００は、第１サブ剰余値変換部３００と、第２サブ剰余値変換部３１０と、減算器３２０と、条件判断部３５０と、商出力部３７０とを有する。
第１サブ剰余値変換部３００は、複数の第１サブ剰余値(y↑0,y↑1,y↑2,y↑3)により表現された、入力値Yの第１モジュラスm↑による剰余値y↑を、複数の第２サブモジュラス{m↓0,m↓1,m↓2}のそれぞれによる剰余である複数の第１変換サブ剰余値(ψ↓0,ψ↓1,ψ↓2) に変換する。第１サブ剰余値変換部３００は、複数の第１サブ剰余値(y↑0,y↑1,y↑2,y↑3)により表現された第１モジュラスm↑による剰余値y↑を２進数のy↑に変換する剰余値変換器３０２と、２進数のy↑を複数の第１変換サブ剰余値(ψ↓0,ψ↓1,ψ↓2) に変換する変換結果出力部３０４を含む。ここで、複数の第１変換サブ剰余値(ψ↓0,ψ↓1,ψ↓2)は、(y↓0,y↓1,y↓2)との差分値を求めることによりスケーリングを実現することができるため、スケーリング係数Ψ↓と表現してよい。
【０１０２】
第２サブ剰余値変換部３１０は、複数の第２サブ剰余値(y↓0,y↓1,y↓2)により表現された、入力値Yの第２モジュラスm↓による剰余値を、複数の第１サブモジュラス{m↑0,m↑1,m↑2,m↑3}のそれぞれによる剰余である複数の第２変換サブ剰余値(ψ↑0,ψ↑1,ψ↑2,ψ↑3)に変換する。第１サブ剰余値変換部３００は、複数の第２サブ剰余値(y↓0,y↓1,y↓2)により表現された第２モジュラスm↓による剰余値y↓を２進数のy↓に変換する剰余値変換器３１２と、２進数のy↓を複数の第２変換サブ剰余値(ψ↑0,ψ↑1,ψ↑2,ψ↑3)に変換する変換結果出力部３１４を含む。ここで、複数の第２変換サブ剰余値(ψ↑0,ψ↑1,ψ↑2,ψ↑3)を、スケーリング係数Ψ↑と表現してもよい。
【０１０３】
減算器３２０は、入力値Yにおける、第１モジュラスm↑による剰余値y↑及び第２モジュラスm↓による剰余値y↓の差分値であるモジュラス間差分値を出力する。減算器３２０は、第１モジュラス対応減算器３３０及び第２モジュラス対応減算器３４０を含む。
第１モジュラス対応減算器３３０は、入力値Yの第２モジュラスm↓による剰余値y↓を示す複数の第２変換サブ剰余値(ψ↑0,ψ↑1,ψ↑2,ψ↑3)と、入力値Yの第１モジュラスm↑による剰余値y↑を示す複数の第１サブ剰余値(y↑0,y↑1,y↑2,y↑3)との差分値であって、複数の第１サブモジュラス{m↑0,m↑1,m↑2,m↑3}のそれぞれにより当該差分値を割った複数の剰余値により表現された第２のモジュラス間差分値(zUP↑0,zUP↑1,zUP↑2,zUP↑3)を出力する。
【０１０４】
第２モジュラス対応減算器３４０は、入力値Yの第１モジュラスm↑による剰余値y↑を示す複数の第１変換サブ剰余値(ψ↓0,ψ↓1,ψ↓2)と、入力値Yの第２モジュラスm↓による剰余値y↓を示す複数の第２サブ剰余値(y↓0,y↓1,y↓2)との差分値であって、複数の第２サブモジュラス{m↓0,m↓1,m↓2}のそれぞれにより当該差分値を割った複数の剰余値により表現された第１のモジュラス間差分値を出力する。後述の補足説明１に示したように、第１のモジュラス間差分値は、m↑=m↓-1の場合スケーリング結果(z↓0,z↓1,z↓2)と同一となる。
【０１０５】
条件判断部３５０は、第１サブ剰余値変換部３００内の剰余値変換器３０２が２進数の形式で出力する、入力値Yの第１モジュラスm↑による剰余値bin y↑と、第１サブ剰余値変換部３００内の第２サブ剰余値変換部３１０が２進数の形式で出力する、入力値Yの第２モジュラスm↓による剰余値bin y↓とが、予め定められた大小関係を満たすか否かを判断する。
【０１０６】
ここで第１モジュラスが第２モジュラスより１大きい場合（m↑=m↓-1の場合）、条件判断部３５０は、後述の補足説明２に示した様に、入力値Yの第１モジュラスm↑による剰余値bin y↑が入力値の第２モジュラスm↓による剰余値bin y↓より大きい場合に、入力値Yの第１モジュラスm↑による剰余値y↑と、入力値の第２モジュラスm↓による剰余値y↓とが、予め定められた大小関係を満たすと判断する。
【０１０７】
商出力部３７０は、第１のモジュラス間差分値及び第２のモジュラス間差分値に基づいて、スケーリング結果Zとなる商qの第１モジュラスm↑による剰余値z↑=(z↑0,z↑1,z↑2,z↑3)、及び、商qの第２モジュラスm↓による剰余値z↓=(z↓0,z↓1,z↓2)の組を商qとして出力する。商出力部３７０は、差分値調整部３６０と、第１モジュラス対応商出力部３７２と、第２モジュラス対応商出力部３７４とを含む。
【０１０８】
差分値調整部３６０は、入力値Yの第１モジュラスm↑による剰余値y↑と、入力値Yの第２モジュラスm↓による剰余値y↓とが、条件判断部３５０により予め定められた大小関係を満たすと判断された場合に、第１のモジュラス間差分値及び第２のモジュラス間差分値の一方に予め定められた定数を加えて調整した第１のモジュラス間差分値及び第２のモジュラス間差分値を、第１モジュラス対応商出力部３７２及び第２モジュラス対応商出力部３７４にそれぞれ供給する。ここでm↓=m↑-1の場合、差分値調整部３６０は、条件判断部３５０によりbin y↓＜bin y↑の大小関係を満たすと判断された場合に、第２のモジュラス間差分値(zUP↑0,zUP↑1,zUP↑2,zUP↑3)に１を加えて調整した第２のモジュラス間差分値を第１モジュラス対応商出力部３７２に、第１のモジュラス間差分値を第２モジュラス対応商出力部３７４にそれぞれ供給する。
【０１０９】
第１モジュラス対応商出力部３７２は、差分値調整部３６０から供給された第２のモジュラス間差分値に基づいて、複数の第１サブモジュラス{m↑0,m↑1,m↑2,m↑3}のそれぞれによる複数の剰余値(z↑0,z↑1,z↑2,z↑3)により表現されたスケーリング結果Zとなる商の、第１モジュラスm↑による剰余値z↑を出力する。ここでm↓=m↑-1の場合、第１モジュラス対応商出力部３７２は、差分値調整部３６０により調整された第２のモジュラス間差分値を、複数の第１サブモジュラス{m↑0,m↑1,m↑2,m↑3}のそれぞれによる複数の剰余値{z↑0,z↑1,z↑2,z↑3}により表現された商qの第１モジュラスm↑による剰余値とする。
【０１１０】
第２モジュラス対応商出力部３７４は、第１のモジュラス間差分値に基づいて、複数の第２サブモジュラス{m↓0,m↓1,m↓2}のそれぞれによる複数の剰余値(z↓0,z↓1,z↓2)により表現されたスケーリング結果Zとなる商の、第２モジュラスm↓による剰余値z↓を出力する。ここでm↓=m↑-1の場合、第２モジュラス対応商出力部３７４は、第１のモジュラス間差分値を、複数の第２サブモジュラス{m↓0,m↓1,m↓2}のそれぞれによる複数の剰余値{z↓0,z↓1,z↓2}により表現された商qの第２モジュラスm↓による剰余値とする。
【０１１１】
図５は、本実施形態の第１変形例に係る第１サブ剰余値変換部３００及び第２モジュラス対応減算器３４０の構成を示す。なお、第２サブ剰余値変換部３１０及び第１モジュラス対応減算器３３０は、剰余桁の数が異なる点を除いて第１サブ剰余値変換部３００及び第２モジュラス対応減算器３４０と略同様の構成をとるため、説明を省略する。
【０１１２】
第１サブ剰余値変換部３００内の剰余値変換器３０２は、複数の第２サブモジュラス{m↓0,m↓1,m↓2}のそれぞれによる剰余値の形式に変換すべき被変換値Ξ(0)の初期値(ξ0(0),ξ1(0),ξ2(0),ξ3(0))として、複数の第１サブ剰余値(y↑0,y↑1,y↑2,y↑3)により表現された、入力値Yの第１モジュラスm↑による剰余値y↑を入力する。そして剰余値変換器３０２は、第１モジュラスm↑による剰余値y↑を２進数に変換する。
【０１１３】
剰余値変換器３０２は、被変換値減算器４００ａ〜ｃと、変換係数算出部４１０ｂ〜ｄと、変換係数加算器４２０ｂ〜ｄとを含む。
被変換値減算器４００ａは、被変換値Ξ(0)における、複数の第１サブモジュラス{m↑0,m↑1,m↑2,m↑3}のそれぞれにより被変換値Ξ(0)を割った複数の被変換剰余値(ξ0(0),ξ1(0),ξ2(0),ξ3(0))のうち、第１サブモジュラスm↑0に対応する被変換剰余値ξ0(0)を０に変換するべくξ0(0)を被変換値Ξ(0)から減じて被変換値Ξ(1)とする。この結果、被変換値Ξ(1)の第１サブモジュラスm↑0に対応する剰余値が０となり、Ξ(1)= (0,ξ1(0)-ξ0(0),ξ2(0)-ξ0(0),ξ3(0)-ξ0(0))= (0,ξ1(1),ξ2(1),ξ3(1))となる。そして被変換値Ξ(0)から減じたξ0(0)は、被変換剰余値ξ0(0)を０に変換するために用いた変換係数α1として変換係数加算器４２０ｂに入力される。
【０１１４】
変換係数算出部４１０ｂは、被変換値Ξ(1)から減じた場合に、被変換剰余値ξ1(1)を０とし、かつ、既に０に変換された、第１サブモジュラスm↑0に対応する被変換剰余値を０に保つ変換係数α2を算出する。なお、変換係数αnが満たすべき条件については後述する。
【０１１５】
変換係数加算器４２０ｂは、変換係数算出部４１０ｂにより算出される、２進数により表現された変換係数α2を、変換係数α1に加算する。ここで、y↑は第１モジュラスm↑より小さいため、変換係数の加算値は第１モジュラスm↑による剰余値であると見なせる。
【０１１６】
被変換値減算器４００ｂは、変換係数算出部４１０ｂにより算出された、第１モジュラスm↑による剰余値により表現された変換係数α2を、被変換値Ξ(1)から減じて被変換値Ξ(2)とする。この結果、被変換値Ξ(2)の２つの第１サブモジュラスm↑0及びm↑1に対応する被変換剰余値がそれぞれ０となり、Ξ(2)= (0, 0,ξ2(1)-ξ1(1),ξ3(1)-ξ1(1))= (0,0,ξ2(2),ξ3(2))となる。
【０１１７】
変換係数算出部４１０ｃは、被変換値Ξ(2)から減じた場合に、被変換剰余値ξ2(2)を０とし、かつ、既に０に変換された、２つの第１サブモジュラスm↑0及びm↑1に対応する被変換剰余値を０に保つ変換係数α3を算出する。
【０１１８】
変換係数加算器４２０ｃは、変換係数算出部４１０ｃにより算出される、２進数により表現された変換係数α3を、変換係数α1及びα2の加算値に加算する。
【０１１９】
被変換値減算器４００ｃは、変換係数算出部４１０ｃにより算出された、第１モジュラスm↑による剰余値により表現された変換係数α3を、被変換値Ξ(2)から減じて被変換値Ξ(3)とする。この結果、被変換値Ξ(3)の３つの第１サブモジュラスm↑0からm↑2に対応する被変換剰余値がそれぞれ０となり、Ξ(3)= (0, 0,0,ξ3(2)-ξ2(2))= (0,0,0,ξ3(3))となる。
【０１２０】
変換係数算出部４１０ｄは、被変換値Ξ(3)から減じた場合に、被変換剰余値ξ3(3)を０とし、かつ、既に０に変換された、３つの第１サブモジュラスm↑0からm↑2に対応する被変換剰余値を０に保つ変換係数α4を算出する。
【０１２１】
変換係数加算器４２０ｄは、変換係数算出部４１０ｄにより算出される、２進数により表現された変換係数α4を、変換係数α1からα3の加算値に加算する。そして変換係数加算器４２０ｄは、全ての変換係数の加算値を、２進数の剰余値y↑として出力する。
【０１２２】
以上において、変換係数算出部４１０ｂ〜ｄは、変換係数αnとして、既に０に変換された１又は複数の第１サブモジュラスの倍数であり、かつ、次に０に変換する被変換剰余値を０とする、以下の式（２−４）を満たす最小の自然数を算出する。ただし、sn及びtnは自然数である。
【０１２３】
【数２１】
2005056032.tif 000023
【０１２４】
以上に示した様に、初期値をy↑とする被変換値から変換係数を順次剰余減算する一方、被変換値から減じた変換係数を順次２進数で加算していくことにより、被変換値が０となった時点でy↑に対応する２進数のy↑を得ることができる。
【０１２５】
変換結果出力部３０４は、複数の被変換剰余値の全てについて算出された全ての変換係数α1からα4が変換係数加算器４２０ｂ〜ｄにより加算された加算値である２進数の剰余値y↑を、複数の第２サブモジュラス{m↓0,m↓1,m↓2}のそれぞれにより割った複数の剰余値を、複数の第１変換サブ剰余値{m↓0,m↓1,m↓2}として出力する。変換結果出力部３０４は、２進数の剰余値y↑の、複数の第２サブモジュラス{m↓0,m↓1,m↓2}のそれぞれによる剰余である複数の第１変換サブ剰余値(ψ↓0,ψ↓1,ψ↓2)を算出する複数の剰余演算器４３０を含む。
【０１２６】
第２モジュラス対応減算器３４０は、複数の第２サブモジュラス{m↓0,m↓1,m↓2}のそれぞれに対応する剰余桁間の減算を行う複数の剰余減算器４４０を含み、第１変換サブ剰余値(ψ↓0,ψ↓1,ψ↓2)と、複数の第２サブ剰余値(y↓0,y↓1,y↓2)との差分値である第１のモジュラス間差分値(z↓0,z↓1,z↓2)を出力する。
【０１２７】
図６は、本実施形態の第１変形例に係る条件判断部３５０及び差分値調整部３６０の構成を示す。
条件判断部３５０は、入力値Yの第１モジュラスm↑による剰余値bin y↑と、入力値Yの第２モジュラスm↓による剰余値bin y↓とが、予め定められた大小関係を満たすか否かを判断する。第１モジュラスが第２モジュラスより１大きい場合（m↑=m↓-1の場合）、条件判断部３５０は、入力値Yの第１モジュラスm↑による剰余値bin y↑が入力値の第２モジュラスm↓による剰余値bin y↓より大きい場合に、論理値１を出力する比較器５００を含む。
【０１２８】
差分値調整部３６０は、比較器５００が論理値０を出力した場合に出力値０が選択され、比較器５００が論理値１を出力した場合に出力値１が選択されるセレクタ５１０と、セレクタ５１０の出力値を第２のモジュラス間差分値(zUP↑0,zUP↑1,zUP↑2,zUP↑3)に加える複数の剰余加算器５２０とを含む。
【０１２９】
以上に示した条件判断部３５０及び差分値調整部３６０により、スケーリング演算器１００は、式（４−８）及び式（４−９）に示した方法を用いて第２のモジュラス間差分値(zUP↑0,zUP↑1,zUP↑2,zUP↑3)を調整し、スケーリング結果Zの第１モジュラスm↑による剰余値z↑=(z↑0,z↑1,z↑2,z↑3)を出力することができる。
【０１３０】
図７は、本実施形態の第１変形例に係るスケーリング演算器１００の動作フローを示す。
算術剰余形式の被スケーリング数である入力値Yが入力されると、第１サブ剰余値変換部３００内の剰余値変換器３０２は、複数の第１サブ剰余値(y↑0,y↑1,y↑2,y↑3)により表現された、入力値Yの第１モジュラスm↑による剰余値y↑を、２進数のy↑に変換する（Ｓ６００）。また、第２サブ剰余値変換部３１０内の剰余値変換器３１２は、複数の第２サブ剰余値(y↓0,y↓1,y↓2)により表現された第２モジュラスm↓による剰余値を、２進数のy↓に変換する。
【０１３１】
より具体的には、剰余値変換器３０２内の変換係数算出部４１０ｂ〜ｄは、複数の第１サブ剰余値(y↑0,y↑1,y↑2,y↑3)により表現された入力値Yの第１モジュラスm↑による剰余値y↑を初期値Ξ(0)とする被変換値Ξ(n)における、複数の第１サブモジュラス{m↑0,m↑1,m↑2,m↑3}のそれぞれにより被変換値Ξ(n)を割った複数の被変換剰余値(ξ0,ξ1,ξ2,ξ3)のそれぞれについて、被変換値Ξ(n)から減じた場合に、順次当該被変換剰余値ξnを０とし、かつ、既に０に変換された他の全ての被変換剰余値ξ0からξn-1を０に保つ変換係数αn+1を算出する。
【０１３２】
ここで剰余値変換器３０２は、１番目の被変換剰余値ξ0については、変換係数α1をξ0とする。そして、被変換値減算器４００ａは、被変換値Ξ(0)の各剰余桁から変換係数α1を減じて被変換値をΞ(1)に更新する。
【０１３３】
次に、剰余値変換器３０２内の変換係数加算器４２０ｂ〜ｄは、変換係数算出部４１０ｂ〜ｄにより順次算出される、第１モジュラスm↑による剰余値により表現された変換係数αn+1を、順次加算していく。そして、被変換値減算器４００ｂ〜ｄは、変換係数算出部４１０ｂ〜ｃにより順次算出される、第１モジュラスm↑による剰余値により表現された変換係数αn+1を、被変換値Ξ(n)から順次減じる。
【０１３４】
次に、変換結果出力部３０４は、２進数のy↑を複数の第１変換サブ剰余値(ψ↓0,ψ↓1,ψ↓2) に変換し、変換結果出力部３１４は、２進数のy↓を複数の第２変換サブ剰余値(ψ↑0,ψ↑1,ψ↑2,ψ↑3)に変換する（Ｓ６１０）。次に、減算器３２０は、入力値Yにおける、第１モジュラスm↑による剰余値y↑及び第２モジュラスm↓による剰余値y↓の差分値である第１のモジュラス間差分値(z↓0,z↓1,z↓2)と、第２のモジュラス間差分値(zUP↑0,zUP↑1,zUP↑2,zUP↑3)とを出力する（Ｓ６２０）。
【０１３５】
次に、入力値Yの第１モジュラスm↑による剰余値bin y↑が入力値の第２モジュラスm↓による剰余値bin y↓より大きい場合に、条件判断部３５０は、y↑及びy↓が予め定められた大小関係を満たすと判断する（Ｓ６３０）。
【０１３６】
y↑及びy↓が予め定められた大小関係を満たす場合（Ｓ６３０：Ｙｅｓ）、差分値調整部３６０は、第２のモジュラス間差分値(zUP↑0,zUP↑1,zUP↑2,zUP↑3)を調整する（Ｓ６４０）。一方、y↑及びy↓が予め定められた大小関係を満たさない場合（Ｓ６３０：Ｎｏ）、差分値調整部３６０は、第２のモジュラス間差分値(zUP↑0,zUP↑1,zUP↑2,zUP↑3)を調整せず、そのまま商出力部３７０に供給する（Ｓ６５０）。
【０１３７】
次に、商出力部３７０は、第１のモジュラス間差分値及び第２のモジュラス間差分値に基づいて、スケーリング結果Zとなる商qの第１モジュラスm↑による剰余値z↑=(z↑0,z↑1,z↑2,z↑3)、及び、商qの第２モジュラスm↓による剰余値z↓=(z↓0,z↓1,z↓2)の組を商qとして出力する（Ｓ６６０）。
【０１３８】
以上に示した通り、第１変形例に係るスケーリング演算器１００によれば、算術剰余系における複数の剰余桁の一部を、他の複数の剰余桁における表現に変換してモジュラス間差分値を算出する。これにより、スケーリング剰余系と算術剰余系の間で剰余系の変換を行った場合と比較し変換処理のオーバーヘッドを低減することができる。
【０１３９】
なお、以上の変換係数算出部４１０ｂ〜ｄは、剰余系加算器により実現するのに代えて、各被変換剰余値ξを入力し、当該被変換剰余値ξに対応する変換係数αを出力するルックアップテーブルにより構成してもよい。より具体的には、変換係数算出部４１０ｂ〜ｄは、複数の被変換剰余値のそれぞれについて、当該被変換剰余値に対応するアドレスに、当該被変換剰余値に対応する変換係数をデータとして格納するメモリを含み、被変換剰余値に対応する変換係数を当該メモリから出力してよい。
【０１４０】
この場合、当該メモリは、被変換剰余値の値に対応するアドレスに、当該被変換剰余値に対応する変換係数を、２進数の値、及び、複数の第２サブモジュラスによる複数の剰余値の２通りのデータとして格納してよい。これにより、変換係数算出部４１０ｂ〜ｄから変換係数加算器４２０ｂ〜ｄに供給する２進数の変換係数と、被変換値減算器４００ｂ〜ｃに供給する、複数の第２サブモジュラスにより表現された変換係数とを、メモリから直接読み出して供給することができる。
【０１４１】
また、変換係数算出部４１０ｂ〜ｄは、被変換値Ξにおける、複数の被変換剰余値ξのそれぞれについて、複数の第１サブモジュラスm0↑からmj-1↑のうちより大きい第１サブモジュラスmn↑に対応する被変換剰余値ξnから順に、変換係数αn+1を算出してよい。これにより、変換係数算出部４１０ｂ〜ｄをルックアップテーブルにより構成した場合等におけるハードウェア量を低減することができる。
【０１４２】
また、以上に示した変換係数加算器４２０ｂ〜ｄを設ける代わりに、第２モジュラス対応減算器３４０は、変換係数算出部４１０ｂ〜ｄにより順次算出される変換係数を、入力値Yの第２モジュラスによる剰余値(y↓0,y↓1,y↓2)から順次減じて第１のモジュラス間差分値を算出し出力してもよい。より具体的には、第２モジュラス対応減算器３４０は、変換係数算出部４１０ｂ〜ｄにより順次算出される、複数の第２サブモジュラス{m↓0,m↓1,m↓2}のそれぞれによる複数の剰余値により表現された変換係数αnを、複数の第２サブ剰余値{m↓0,m↓1,m↓2}により表現された入力値Yの第２モジュラス{m↓0,m↓1,m↓2}による剰余値(y↓0,y↓1,y↓2)から順次減じて、複数の第２サブモジュラス{m↓0,m↓1,m↓2}のそれぞれによる複数の剰余値により表現された第１のモジュラス間差分値(z↓0,z↓1,z↓2)を出力してよい。
【０１４３】
図８は、本実施形態の第２変形例に係るスケーリング演算器１００の構成を示す。本変形例に係るスケーリング演算器１００は、一方のスケーリング結果Z mod m↓=z↓=(z↓0,z↓1,z↓2)から、他方のスケーリング結果Z mod m↑=z↑=(z↑0,z↑1,z↑2,z↑3)を算出する。ここで後述の式（３−８）よりZ≦m↑であるから、後述の式（３−９）を適用すれば以下の式（２−５）が成立する。
【０１４４】
【数２２】
2005056032.tif 000024
【０１４５】
従って、図４の第２サブ剰余値変換部３１０を使用すれば、複数の第２サブモジュラス{m↓0,m↓1,m↓2}のそれぞれによる複数の剰余値により表現された第１のモジュラス間差分値であるスケーリング結果(z↓0,z↓1,z↓2)を、複数の第１サブモジュラス{m↑0,m↑1,m↑2,m↑3}のそれぞれによる複数の剰余値により表現された変換モジュラス間差分値であるスケーリング結果(z↑0,z↑1,z↑2,z↑3)に変換することができる。
【０１４６】
本変形例に係るスケーリング演算器１００は、第１サブ剰余値変換部３００と、第２モジュラス対応減算器３４０を含む減算器３２０と、第２サブ剰余値変換部３１０と、商出力部３７０とを有する。本変形例に係る第１サブ剰余値変換部３００、第２サブ剰余値変換部３１０、第２モジュラス対応減算器３４０、及び商出力部３７０は、図４に示した第１サブ剰余値変換部３００、第２サブ剰余値変換部３１０、第２モジュラス対応減算器３４０、及び商出力部３７０とそれぞれ同様の機能及び構成をとるため、以下相違点を除き説明を省略する。
【０１４７】
減算器３２０は、入力値Yにおける、第１モジュラスm↑による剰余値y↑及び第２モジュラスm↓による剰余値y↓の差分値であるモジュラス間差分値として、第２モジュラス対応減算器３４０により出力された第１のモジュラス間差分値を出力する。後述の補足説明１に示したように、第１のモジュラス間差分値は、m↑=m↓-1の場合スケーリング結果(z↓0,z↓1,z↓2)と同一となる。
【０１４８】
第２サブ剰余値変換部３１０は、複数の第２サブモジュラス{m↓0,m↓1,m↓2}のそれぞれによる複数の剰余値により表現された第１のモジュラス間差分値(z↓0,z↓1,z↓2)を、複数の第１サブモジュラス{m↑0,m↑1,m↑2,m↑3}のそれぞれによる複数の剰余値により表現された変換モジュラス間差分値に変換する。
【０１４９】
商出力部３７０は、差分値調整部３６０を有さず、変換モジュラス間差分値に基づいて、複数の第１サブモジュラス{m↑0,m↑1,m↑2,m↑3}のそれぞれによる複数の剰余値により表現された、スケーリング結果Zとなる商qの第１モジュラスによる剰余値(z↑0,z↑1,z↑2,z↑3)を出力する第１モジュラス対応商出力部３７２と、第１のモジュラス間差分値に基づいて、複数の第２サブモジュラスのそれぞれによる複数の剰余値により表現された、スケーリング結果Zとなる商qの第２モジュラスによる剰余値(z↓0,z↓1,z↓2)を出力する。
【０１５０】
図９は、本実施形態の第２変形例に係るスケーリング演算器１００の動作フローを示す。
算術剰余形式の被スケーリング数である入力値Yが入力されると、第１サブ剰余値変換部３００内の剰余値変換器３０２は、複数の第１サブ剰余値(y↑0,y↑1,y↑2,y↑3)により表現された、入力値Yの第１モジュラスm↑による剰余値y↑を、２進数のy↑に変換する（Ｓ８００）。次に、変換結果出力部３０４は、２進数のy↑を複数の第１変換サブ剰余値(ψ↓0,ψ↓1,ψ↓2) に変換する（Ｓ８１０）。
【０１５１】
次に、減算器３２０は、入力値Yにおける、第１モジュラスm↑による剰余値y↑及び第２モジュラスm↓による剰余値y↓の差分値であるモジュラス間差分値として、第２モジュラス対応減算器３４０により出力された第１のモジュラス間差分値を出力する（Ｓ８２０）。
【０１５２】
次に、第２サブ剰余値変換部３１０は、複数の第２サブモジュラス{m↓0,m↓1,m↓2}のそれぞれによる複数の剰余値により表現された第１のモジュラス間差分値を、複数の第１サブモジュラス{m↑0,m↑1,m↑2,m↑3}のそれぞれによる複数の剰余値により表現された変換モジュラス間差分値に変換する（Ｓ８３０）。
【０１５３】
次に、商出力部３７０は、変換モジュラス間差分値に基づいて、スケーリング結果Zとなる商qの第１モジュラスによる剰余値(z↑0,z↑1,z↑2,z↑3)及び第２モジュラスによる剰余値(z↓0,z↓1,z↓2)の組を出力する（Ｓ８５０）。
【０１５４】
以上に示した通り、第２変形例に係るスケーリング演算器１００によれば、算術剰余系における複数の剰余桁の一部を、他の複数の剰余桁における表現に変換してモジュラス間差分値を算出する。これにより、スケーリング剰余系と算術剰余系の間で剰余系の変換を行った場合と比較し変換処理のオーバーヘッドを低減することができる。また、減算器３２０が算出した１つのモジュラス間差分値を用いて、スケーリング結果Zの各剰余桁を生成することができ、ハードウェア量を低減することができる。
【０１５５】
図１０は、本実施形態に係るコンピュータ９００のハードウェア構成の一例を示す。本実施形態に係るコンピュータ９００は、ＣＰＵ１０００、ＲＯＭ１０１０、ＲＡＭ１０２０、通信インターフェイス１０３０、ハードディスク・ドライブ１０４０、フレキシブルディスク・ドライブ１０５０、及びＣＤ−ＲＯＭドライブ１０６０を備える。
【０１５６】
ＣＰＵ１０００は、ＲＯＭ１０１０及びＲＡＭ１０２０に格納されたプログラムに基づいて動作し、各部の制御を行う。ＲＯＭ１０１０は、コンピュータ９００の起動時にＣＰＵ１０００が実行するブートプログラムや、コンピュータ９００のハードウェアに依存するプログラム等を格納する。ＲＡＭ１０２０は、ＣＰＵ１０００が実行するプログラム及びＣＰＵ１０００が使用するデータ等を格納する。通信インターフェイス１０３０は、通信ネットワークを介して他の装置と通信する。ハードディスク・ドライブ１０４０は、コンピュータ９００が使用するプログラム及びデータを格納し、ＲＡＭ１０２０を介してＣＰＵ１０００に供給する。フレキシブルディスク・ドライブ１０５０は、フレキシブルディスク１０７０からプログラム又はデータを読み取り、ＲＡＭ１０２０に提供する。ＣＤ−ＲＯＭドライブ１０６０は、ＣＤ−ＲＯＭ１０８０からプログラム又はデータを読み取り、ＲＡＭ１０２０に提供する。
【０１５７】
ＲＡＭ１０２０を介してＣＰＵ１０００に提供されるプログラムは、フレキシブルディスク１０７０、ＣＤ−ＲＯＭ１０８０、又はＩＣカード等の記録媒体に格納されて利用者によって提供される。プログラムは、記録媒体から読み出され、ＲＡＭ１０２０を介してコンピュータ９００にインストールされ、コンピュータ９００において実行される。
【０１５８】
コンピュータ９００にインストールされて実行され、コンピュータ９００を剰余系演算システム５として機能させるプログラムは、剰余系演算モジュールと、オーバーフロー検出モジュール、剰余形式変換モジュール、減算モジュール、商出力モジュール、及び剰余形式逆変換モジュールを含むスケーリング演算モジュールとを備える。これらのプログラム又はモジュールは、コンピュータ９００内のＣＰＵ１０００及び／又はＲＡＭ１０２０等を、剰余系演算器１０と、オーバーフロー検出器１１０、剰余形式変換器１２０、減算器１３０、商出力部１４０、及び剰余形式逆変換器１５０を含むスケーリング演算器１００としてそれぞれ機能させる。
【０１５９】
これに代えて、スケーリング演算モジュールは、剰余値変換モジュール及び変換結果出力モジュールを含む第１サブ剰余値変換モジュールと、剰余値変換モジュール及び変換結果出力モジュールを含む第２サブ剰余値変換モジュールと、第１モジュラス対応減算モジュール及び第２モジュラス対応減算モジュールを含む減算モジュールと、条件判断モジュールと、差分値調整モジュール、第１モジュラス対応商出力モジュール、及び第２モジュラス対応商出力モジュールを含む商出力モジュールとを備えてもよい。これらのプログラム又はモジュールは、コンピュータ９００内のＣＰＵ１０００及び／又はＲＡＭ１０２０等を、剰余値変換器３０２及び変換結果出力部３０４を含む第１サブ剰余値変換部３００と、剰余値変換器３１２及び変換結果出力部３１４を含む第２サブ剰余値変換部３１０と、第１モジュラス対応減算器３３０及び第２モジュラス対応減算器３４０を含む減算器３２０と、条件判断部３５０と、差分値調整部３６０、第１モジュラス対応商出力部３７２、及び第２モジュラス対応商出力部３７４を含む商出力部３７０としてそれぞれ機能させる。
【０１６０】
また、スケーリング演算モジュールは、剰余値変換モジュール及び変換結果出力モジュールを含む第１サブ剰余値変換モジュールと、剰余値変換モジュール及び変換結果出力モジュールを含む第２サブ剰余値変換モジュールと、第２モジュラス対応減算モジュールを含む減算モジュールと、第１モジュラス対応商出力モジュール及び第２モジュラス対応商出力モジュールを含む商出力モジュールとを備えてもよい。これらのプログラム又はモジュールは、コンピュータ９００内のＣＰＵ１０００及び／又はＲＡＭ１０２０等を、剰余値変換器３０２及び変換結果出力部３０４を含む第１サブ剰余値変換部３００と、剰余値変換器３１２及び変換結果出力部３１４を含む第２サブ剰余値変換部３１０と、第２モジュラス対応減算器３４０を含む減算器３２０と、商出力部３７０としてそれぞれ機能させる。
【０１６１】
以上に示したプログラム又はモジュールは、外部の記録媒体に格納されてもよい。記録媒体としては、フレキシブルディスク１０７０、ＣＤ−ＲＯＭ１０８０の他に、ＤＶＤやＰＤ等の光学記録媒体、ＭＤ等の光磁気記録媒体、テープ媒体、ＩＣカード等の半導体メモリ等を用いることができる。また、専用通信ネットワークやインターネットに接続されたサーバシステムに設けたハードディスク又はＲＡＭ等の記憶装置を記録媒体として使用し、通信ネットワークを介して外部のネットワークからプログラムをコンピュータ９００に提供してもよい。
【０１６２】
以上に示したスケーリング演算器１００によるスケーリング演算の計算量を、従来方式と比較する。
例えば、{25,8,7,3,19,17,13}という７個のモジュラスで表現される算術剰余系の数値をスケーリングする場合、式（１−１７）に示した中国人の剰余定理を用いると、２進数の２４ビット乗算を７回行うこととなる。これに対し、図２に示したスケーリング演算器１００によれば、１２ビット乗算を７回行うことにより同様のスケーリングを実現できる。ここで、積和演算の計算量はビット数の2乗に比例する。この様に、２進数でnビットとなる数値をスケーリングする場合、１ビット加算器の計算量をC(Complexity)とすると、従来方式ではn2Cの計算量に対して、図２に示したスケーリング演算器１００では(n/2)2Cの計算量となる。従って、図２に示したスケーリング演算器１００によれば、従来方式と比較し計算量を１／４に低減させることができる。
【０１６３】
また、図４に示したスケーリング演算器１００において、剰余値変換器３０２内の変換係数算出部４１０ｂ〜ｄをルックアップテーブルにより構成すれば、２進数の各剰余桁（２から５ビット）の剰余加減算を９から１２回行うこととなる。この様に、図４に示したスケーリング演算器１００においては、モジュラスの選択によるが、概ね(n+(1/2)n)Cの計算量となり、従来方式と比較し計算量を約(1/24)nに低減させることができる。
【０１６４】
以上、本発明を実施の形態を用いて説明したが、本発明の技術的範囲は上記実施の形態に記載の範囲には限定されない。上記実施の形態に、多様な変更または改良を加えることが可能であることが当業者に明らかである。その様な変更または改良を加えた形態も本発明の技術的範囲に含まれ得ることが、特許請求の範囲の記載から明らかである。
【０１６５】
以下に、剰余系演算システム５を実現する前提となる事項について補足説明を行う。
【０１６６】
（補足説明１）スケーリング剰余系によるスケーリング方式の説明
以下に、スケーリング剰余系によるスケーリング方式(SDSRNS方式)について、m↓=m↑-1及びm↓≠m↑-1の各場合に分けて説明する。
【０１６７】
（１）m↓=m↑-1の場合
モジュラスが{m↑, m↓}の２個からなるスケーリング剰余系において、Yをm↓でスケーリングしたスケーリング結果は、Yをm↓で割った商qを用いて(q mod m↑，q mod m↓)という形で与えられる。ここで、m↑及びm↓は互いに素であり、m↑とm↓の間には、以下の式（３−１）の関係があるものとする。
【０１６８】
【数２３】
2005056032.tif 000025
【０１６９】
この場合、スケーリング剰余系で表現できる数値の最大値はM=m↑m↓=m↑(m↑-1)となる。
【０１７０】
被スケーリング数Yをモジュラスm↓でスケーリングした結果qを算出する方法を以下に示す。なお、被スケーリング数Yのモジュラスm↑によるスケーリング結果pは、同様の方法で算出できるため説明を省略する。
【０１７１】
被スケーリング数Yは、第１のモジュラスm↑による剰余値y↑及び第２のモジュラスm↓による剰余値y↓の組による第１の剰余形式(y↑,y↓)で表現される。ここで式（１−２）より、以下の式（３−２）及び式（３−３）が成立する。ただし、y↑はYをm↑で割った剰余値、y↓はYをm↓で割った剰余値、pはYをm↑で割った商（p= Y/m↑）、qはYをm↓で割った商(q= Y/m↓)である。
【０１７２】
【数２４】
2005056032.tif 000026
【０１７３】
【数２５】
2005056032.tif 000027
【０１７４】
式（３−１）を式（３−３）に代入し、これを式（３−２）より引くと、以下の式（３−４）を得ることができ、式（３−５）が成立することが分かる。
【０１７５】
【数２６】
2005056032.tif 000028
【０１７６】
【数２７】
2005056032.tif 000029
【０１７７】
式（３−５）から、２つの剰余数の差(y↓− y↑)を計算することにより、Yをモジュラスm↓でスケーリングした結果qを得ることができる。同様に、Yをモジュラスm↑でスケーリングした結果pの２進数表現は、以下の式（３−６）で得られる。
【０１７８】
【数２８】
2005056032.tif 000030
【０１７９】
つぎに，２進数表現のスケーリング結果qを、スケーリング剰余系による表現に変換する。モジュラスが十分に大きな数であるとき、以下の式（３−７）の近似を用いて、式（３−８）を導くことができる。
【０１８０】
【数２９】
2005056032.tif 000031
【０１８１】
【数３０】
2005056032.tif 000032
【０１８２】
すなわち、剰余桁の差でもとめられる計算結果qは、必ずモジュラスm↑ (m↓)よりも小さいと近似することができ、以下の式（３−９）が成立する。
【０１８３】
【数３１】
2005056032.tif 000033
【０１８４】
以上により、Yをモジュラスm↓でスケーリングした結果は、以下の式（３−１０）により求めることができる。
【０１８５】
【数３２】
2005056032.tif 000034
【０１８６】
ただし、以上の式（３−７）の近似は、q=m↓となる場合には成立しない。そこで、被スケーリング数Yの上限をY＜ m↓×m↓に制限するか、m↑によりスケーリングを行うか、q mod m↑=m↓の場合にq mod m↓=0に変換するかのいずれかの手段を用いて実現してよい。
【０１８７】
（２）m↑≠m↓-1の場合
m↑≠m↓-1かつm↑＞m↓の場合、式（３−２）及び（３−３）から以下の式（３−１１）を導くことができる。
【０１８８】
【数３３】
2005056032.tif 000035
【０１８９】
ここで、q・(m↑-m↓)＜m↑に制限すると、以下の式（３−１２）が成立する。なお、この制限により、Yの最大値Mは(m↑×m↓)/(m↑-m↓)未満に制限される。
【０１９０】
【数３４】
2005056032.tif 000036
【０１９１】
以上より、Yをモジュラスm↓でスケーリングした結果は、式（３−６）から式（３−１０）と同様にして、以下の式（３−１３）により求めることができる。
【０１９２】
【数３５】
2005056032.tif 000037
【０１９３】
一方、m↑≠m↓-1かつm↑＜m↓の場合、式（３−２）及び（３−３）から以下の式（３−１４）を導くことができる。
【０１９４】
【数３６】
2005056032.tif 000038
【０１９５】
ここで、q・(m↓-m↑)＜m↑に制限すると、以下の式（３−１５）が成立する。なお、この制限により、Yの最大値Mは(m↑×m↓)/(m↓-m↑)未満に制限される。
【０１９６】
【数３７】
2005056032.tif 000039
【０１９７】
以上より、Yをモジュラスm↓でスケーリングした結果は、以下の式（３−１６）により求めることができる。
【０１９８】
【数３８】
2005056032.tif 000040
【０１９９】
（補足説明２）差分値調整によるスケーリング結果の算出方法
複数の第２サブ剰余値(y↓0,y↓1,y↓2)により表現される被スケーリング数y↓を、複数の第２変換サブ剰余値(ψ↑0,ψ↑1,ψ↑2,ψ↑3)により表現されるスケーリング係数Ψ↑に変換したモジュラス間差分値を用いて、スケーリング結果Zにおけるz↑を算出する方法を説明する。以下説明の便宜上スケーリング剰余系を用いる。
【０２００】
まず、z↑のm↑によるスケーリング結果(以下zUP↑)から、z↑のm↓によるスケーリング結果（以下zLO↑）を導出するために、zUP↑及びzLO↑の関係を示す。ここで、zUP↑及びzLO↑の間には、以下の補助定理が成立する。
【０２０１】
補助定理：m↓=m↑-1の場合、zUP↑及びzLO↑は、zLO↑=zUP↑又はzLO↑= zUP↑+ 1を満たす。
【０２０２】
証明：zLO↑=zUP↑+Jと仮定する。ただし、Jは整数である。また、zLO↑はYをm↓でスケーリングした結果、zUP↑はYをm↑でスケーリングした結果である。式（１−２）より、スケーリング剰余系(y↑,y↓)を用いて以下の式（４−１）及び式（４−２）が得られる。
【０２０３】
【数３９】
2005056032.tif 000041
【０２０４】
【数４０】
2005056032.tif 000042
【０２０５】
式（４−１）は、m↓=m↑-1を用いて以下の式（４−３）に変形することができる。
【０２０６】
【数４１】
2005056032.tif 000043
【０２０７】
式（４−２）と式（４−３）により、以下の式（４−４）が成立する。
【０２０８】
【数４２】
2005056032.tif 000044
【０２０９】
ここで、y↑は第１モジュラスm↑の剰余であるため、0≦y↑＜m↑を満たす。また、y↓は第２モジュラスm↓の剰余であるため、 0≦y↓＜m↓を満たす。従って、以下の式（４−５）が成立する。
【０２１０】
【数４３】
2005056032.tif 000045
【０２１１】
更に、zUP↑はYをm↑でスケーリングした結果であるから、式（３−８）を適用すれば以下の式（４−６）が成立する。
【０２１２】
【数４４】
2005056032.tif 000046
【０２１３】
ここで、式（４−４）においてJ≧2と仮定し、y↑をとりえる最小値である0、zUP↑をとりえる最大値である（m↓−１）とすると、以下の式（４−７）となり、0≦y↑＜m↑に矛盾する。
【０２１４】
【数４５】
2005056032.tif 000047
【０２１５】
また、J＜0と仮定した場合においても、y↓=(1-J)m↓−1+y↑＞m↓となり、0≦y↑＜m↑に矛盾する。従って、Jの取り得る値は0又は1である。すなわち、zLO↑=zUP↑又はzLO↑=zUP↑+1となる。
【０２１６】
以上に示した補助定理を用いて、zUP↑からスケーリング結果z↑(=zLO↑)を算出することができる。以下に、２進数のy↑(bin y↑)及びy↓(bin y↓)を用いてzLO↑がzUP↑又はzUP↑+1のいずれであるかを判定する方法を示す。
【０２１７】
式（４−４）から、J=0のときy↓-y↑= zUP↑≧0となり、J=1のときy↓-y↑= zUP↑- m↓＜0となる。このため、以下の式（４−８）及び式（４−９）が成立する。
【０２１８】
【数４６】
2005056032.tif 000048
【０２１９】
【数４７】
2005056032.tif 000049
【０２２０】
したがってbin y↓≧bin y↑の場合にはzUP↑を、bin y↓＜bin y↑の場合にはzUP↑+1を、スケーリング結果z↑として出力すればよい。
【図面の簡単な説明】
【０２２１】
【図１】本発明の実施形態に係るスケーリング処理の概略を示す。
【図２】本発明の実施形態に係る剰余系演算システム５の構成を示す。
【図３】本発明の実施形態に係る剰余系演算システム５の動作フローを示す。
【図４】本発明の実施形態の第１変形例に係るスケーリング演算器１００の構成を示す。
【図５】本発明の実施形態の第１変形例に係る第１サブ剰余値変換部３００及び第２モジュラス対応減算器３４０の構成を示す。
【図６】本発明の実施形態の第１変形例に係る条件判断部３５０及び差分値調整部３６０の構成を示す。
【図７】本発明の実施形態の第１変形例に係るスケーリング演算器１００の動作フローを示す。
【図８】本発明の実施形態の第２変形例に係るスケーリング演算器１００の構成を示す。
【図９】本発明の実施形態の第２変形例に係るスケーリング演算器１００の動作フローを示す。
【図１０】本発明の実施形態に係るコンピュータ９００のハードウェア構成の一例を示す。
【符号の説明】
【０２２２】
３  スケーリング演算器
５  剰余系演算システム
１０  剰余系演算器
２０  剰余演算ＡＬＵ
１００  スケーリング演算器
１１０  オーバーフロー検出器
１２０  剰余形式変換器
１３０  減算器
１４０  商出力部
１５０  剰余形式逆変換器
３００  第１サブ剰余値変換部
３０２  剰余値変換器
３０４  変換結果出力部
３１０  第２サブ剰余値変換部
３１２  剰余値変換器
３１４  変換結果出力部
３２０  減算器
３３０  第１モジュラス対応減算器
３４０  第２モジュラス対応減算器
３５０  条件判断部
３６０  差分値調整部
３７０  商出力部
３７２  第１モジュラス対応商出力部
３７４  第２モジュラス対応商出力部
４００ａ〜ｃ  被変換値減算器
４１０ｂ〜ｄ  変換係数算出部
４２０ｂ〜ｄ  変換係数加算器
４３０  剰余演算器
４４０  剰余減算器
５００  比較器
５１０  セレクタ
５２０  剰余加算器
９００  コンピュータ
１０００  ＣＰＵ
１０１０  ＲＯＭ
１０２０  ＲＡＭ
１０３０  通信インターフェイス
１０４０  ハードディスク・ドライブ
１０５０  フレキシブルディスク・ドライブ
１０６０  ＣＤ−ＲＯＭドライブ
１０７０  フレキシブルディスク
１０８０  ＣＤ−ＲＯＭ
【図１】
2005056032.tif 000050
【図２】
2005056032.tif 000051
【図３】
2005056032.tif 000052
【図４】
2005056032.tif 000053
【図５】
2005056032.tif 000054
【図６】
2005056032.tif 000055
【図７】
2005056032.tif 000056
【図８】
2005056032.tif 000057
【図９】
2005056032.tif 000058
【図１０】
2005056032.tif 000059