(57)【要約】【課題】剰余値を高速に算出することができる剰余演算装置を提供する。【解決手段】第１の被演算値の所定ビット数ずつのビットグループ毎に２ｎ−１（ｎは２以上の整数）を満たす除数による剰余演算を行って剰余値を算出する複数の第１の剰余演算回路１０、１１と、前記第１の剰余演算回路により得られた複数の前記剰余値を連結した第２の被演算値に対し前記除数による剰余演算を行って剰余値を算出する第２の剰余演算回路１４と、を備える。【選択図】図１
2008152367.tif 000002
【特許請求の範囲】
【請求項１】
第１の被演算値の所定ビット数ずつのビットグループ毎に２ｎ−１（ｎは２以上の整数）を満たす除数による剰余演算を行って剰余値を算出する複数の第１の剰余演算回路と、
前記第１の剰余演算回路により得られた複数の前記剰余値を連結した第２の被演算値に対し前記除数による剰余演算を行って剰余値を算出する第２の剰余演算回路と、
を備えることを特徴とする剰余演算装置。
【請求項２】
第２の剰余演算回路により得られた剰余値が与えられ、この剰余値の前記除数の約数に対する剰余値を算出する第３の剰余演算回路をさらに備えることを特徴とする請求項１に記載の剰余演算装置。
【請求項３】
２×ｉ×ｊ＋ｋビット（ｉは１以上の整数、ｊは２以上の整数、ｋは１≦ｋ≦ｊを満たす整数）の被演算値が与えられ、２ｎ−１（ｎは２以上の整数）を満たす除数に対する剰余値を算出する剰余演算装置であって、
前記被演算値の最下位ビット側から２×（ｉ−１）×ｊ＋１〜２×ｉ×ｊビットの値について前記除数に対するｊビットの第１の剰余値を算出する第１の剰余演算回路と、
前記第１の剰余値、前記被演算値の最下位ビット側から２×ｉ×ｊ＋１〜２×ｉ×ｊ＋ｋビットの値及びｊ−ｋ個の０値を連結した値について前記除数に対する第２の剰余値を算出する第２の剰余演算回路と、
を備えることを特徴とする剰余演算装置。
【請求項４】
２×ｉ×ｊ＋ｋビット（ｉは１以上の整数、ｊは２以上の整数、ｋは１≦ｋ＜２×ｊを満たす整数）の被演算値が与えられ、２ｎ−１（ｎは２以上の整数）を満たす除数に対する剰余値を算出する剰余演算装置であって、
前記被演算値の最下位ビット側から２×（ｉ−１）×ｊ＋１〜２×ｉ×ｊビットの値について前記除数に対するｊビットの第１の剰余値を算出する第１の剰余演算回路と、
前記被演算値の最下位ビット側から２×ｉ×ｊ＋１〜２×ｉ×ｊ＋ｋビットの値及び２×ｊ−ｋ個の０値を連結した値について前記除数に対するｊビットの第２の剰余値を算出する第２の剰余演算回路と、
前記第１の剰余値及び前記第２の剰余値を連結した値について前記除数に対する第３の剰余値を算出する第３の剰余演算回路と、
を備えることを特徴とする剰余演算装置。
【請求項５】
被除数のビット数及び除数を入力する入力部と、論理ゲート情報と入力された前記被除数のビット数及び除数とを記憶する記憶部と、演算部と、を備えたコンピュータに、
前記除数及び前記論理ゲート情報に基づいて、２ｎ（ｎは前記除数から一意に定まる整数）ビットの被演算値の前記除数に対するｎビットの剰余値を算出する剰余回路を設計する工程と、
前記被除数が２ｎビットずつのビットグループ毎に与えられる１段目の前記剰余回路をレイアウトする工程と、
隣接する前記ビットグループが与えられる２つの前記１段目の剰余回路からそれぞれ算出されるｎビットの剰余値が連結した２ｎビットの値が与えられる２段目の前記剰余回路をレイアウトする工程と、
を含む剰余演算装置の設計処理を実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、剰余演算装置及びプログラムに関するものである。
【背景技術】
【０００２】
剰余演算は暗号技術や誤り訂正技術に使用される重要度の高いものである。この剰余演算をハードウェアで実現する場合、被除数から除数の繰り返し減算を行う順序回路により構成される。回路構成の際は、回路規模削減のため、市販の論理合成ツールを用いて論理合成を行っている。しかし、除数や被除数のビット幅の増加に比例して回路規模や応答時間が増加するため、長ビットの剰余演算に不利である。
【０００３】
回路規模縮小及び回路速度向上の点で効果を有する剰余演算回路として、被演算値についてＬＳＢ（最下位ビット）から２ビットずつのビットグループ毎に除数３で剰余演算を行って２ビットの剰余値の算出をそれぞれ行う複数の第１の部分剰余演算部と、２つの第１の部分剰余演算部により算出された２ビットの剰余値を加算し２ビット値での出力をそれぞれ行う複数の部分加算部と、部分加算部の２ビットの出力値に対して除数３で剰余演算を行って２ビットの剰余値の算出をそれぞれ行う複数の第２の部分剰余演算部と、を備えるものが知られている（例えば特許文献１参照）。部分剰余演算部と部分加算部が、入力される被演算値に対して、部分的に剰余を算出しながらビット数を順次削減していくツリー構成になっている。
【０００４】
しかし、この剰余演算回路では、部分剰余演算を行う度に剰余値の加算を行うため、応答速度向上の妨げになり、また加算のための回路が回路規模縮小の妨げになるという問題を有していた。また、３以外の除数での剰余演算が開示されていない。
【特許文献１】特開２００５−１２８８３２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
本発明は、剰余値を高速に算出することができる剰余演算装置を提供することを目的とする。
【課題を解決するための手段】
【０００６】
本発明の一態様による剰余演算装置は、第１の被演算値の所定ビット数ずつのビットグループ毎に２ｎ−１（ｎは２以上の整数）を満たす除数による剰余演算を行って剰余値を算出する複数の第１の剰余演算回路と、前記第１の剰余演算回路により得られた複数の前記剰余値を連結した第２の被演算値に対し前記除数による剰余演算を行って剰余値を算出する第２の剰余演算回路と、を備えるものである。
【０００７】
さらに、本発明の一態様による剰余演算装置は、２×ｉ×ｊ＋ｋビット（ｉは１以上の整数、ｊは２以上の整数、ｋは１≦ｋ≦ｊを満たす整数）の被演算値が与えられ、２ｎ−１（ｎは２以上の整数）を満たす除数に対する剰余値を算出する剰余演算装置であって、前記被演算値の最下位ビット側から２×（ｉ−１）×ｊ＋１〜２×ｉ×ｊビットの値について前記除数に対するｊビットの第１の剰余値を算出する第１の剰余演算回路と、前記第１の剰余値、前記被演算値の最下位ビット側から２×ｉ×ｊ＋１〜２×ｉ×ｊ＋ｋビットの値及びｊ−ｋ個の０値を連結した値について前記除数に対する第２の剰余値を算出する第２の剰余演算回路と、を備えるものである。
【０００８】
さらに、本発明の一態様による剰余演算装置は、２×ｉ×ｊ＋ｋビット（ｉは１以上の整数、ｊは２以上の整数、ｋは１≦ｋ＜２×ｊを満たす整数）の被演算値が与えられ、２ｎ−１（ｎは２以上の整数）を満たす除数に対する剰余値を算出する剰余演算装置であって、前記被演算値の最下位ビット側から２×（ｉ−１）×ｊ＋１〜２×ｉ×ｊビットの値について前記除数に対するｊビットの第１の剰余値を算出する第１の剰余演算回路と、前記被演算値の最下位ビット側から２×ｉ×ｊ＋１〜２×ｉ×ｊ＋ｋビットの値及び２×ｊ−ｋ個の０値を連結した値について前記除数に対するｊビットの第２の剰余値を算出する第２の剰余演算回路と、前記第１の剰余値及び前記第２の剰余値を連結した値について前記除数に対する第３の剰余値を算出する第３の剰余演算回路と、を備えるものである。
【０００９】
本発明の一態様によるプログラムは、被除数のビット数及び除数を入力する入力部と、論理ゲート情報と入力された前記被除数のビット数及び除数とを記憶する記憶部と、演算部と、を備えたコンピュータに、前記除数及び前記論理ゲート情報に基づいて、２ｎ（ｎは前記除数から一意に定まる整数）ビットの被演算値の前記除数に対するｎビットの剰余値を算出する剰余回路を設計する工程と、前記被除数が２ｎビットずつのビットグループ毎に与えられる１段目の前記剰余回路をレイアウトする工程と、隣接する前記ビットグループが与えられる２つの前記１段目の剰余回路からそれぞれ算出されるｎビットの剰余値が連結した２ｎビットの値が与えられる２段目の前記剰余回路をレイアウトする工程と、を含む剰余演算装置の設計処理を実行させるものである。
【発明の効果】
【００１０】
本発明によれば、剰余値を高速に算出することができる。
【発明を実施するための最良の形態】
【００１１】
以下、本発明の実施の形態を図面に基づいて説明するが、その前に、実施形態の前提となる補題及び定理について説明する。
【００１２】
［補題１］ｍｏｄ（２ｎ、ｄ）＝１を満たす正の整数ｎが存在する除数ｄに対して、任意の被除数Ｘの剰余と、Ｘ・２ｎの剰余は等しい。
【００１３】
［補題１の証明］Ｘの剰余をＲとすると、Ｘ＝ＱＸ・ｄ＋Ｒ（ＱＸ、Ｒは整数）と表すことができる。また、ｍｏｄ（２ｎ、ｄ）＝１であるので、２ｎ＝Ｑｎ・ｄ＋１（Ｑｎは整数）と表すことができる。
【００１４】
これらを用いるとＸ・２ｎ＝（ＱＸ・ｄ＋Ｒ）・（Ｑｎ・ｄ＋１）＝ＱＸ・Ｑｎ・ｄ２＋ＱＸ・ｄ＋Ｒ・Ｑｎ・ｄ＋Ｒ＝（ＱＸ・Ｑｎ・ｄ＋ＱＸ＋Ｒ・Ｑｎ）・ｄ＋Ｒと表すことができる。従ってＸ・２ｎの剰余もＲとなり、Ｘの剰余と等しくなる。
【００１５】
［補題２］任意の除数ｄに対する２つの被除数Ｘ１とＸ２の剰余の和の剰余は、Ｘ１とＸ２の和Ｘ１２の剰余と等しい。
【００１６】
［補題２の証明］Ｘ１のｄに対する剰余をＲ１、Ｘ２のｄに対する剰余をＲ２とすると、Ｘ１＝Ｑ１・ｄ＋Ｒ１、Ｘ２＝Ｑ２・ｄ＋Ｒ２（Ｑ１、Ｑ２は共に整数）と表すことができる。
【００１７】
これを用いるとＸ１２＝Ｘ１＋Ｘ２＝Ｑ１・ｄ＋Ｒ１＋Ｑ２・ｄ＋Ｒ２＝（Ｑ１＋Ｑ２）・ｄ＋Ｒ１＋Ｒ２となる。従ってｍｏｄ（Ｘ１２、ｄ）＝ｍｏｄ（Ｒ１＋Ｒ２、ｄ）となる。従って、Ｘ１とＸ２の和Ｘ１２の剰余はＸ１とＸ２の剰余の和の剰余と等しくなる。
【００１８】
［補題３］ｍｏｄ（２ｎ、ｄ）＝１を満たす正の整数ｎが存在する除数ｄに対して、任意の被除数Ｘ、Ｙの剰余の和の剰余と、被除数Ｘの剰余の２ｎ倍と被除数Ｙの剰余の和の剰余が等しい。即ち、ｍｏｄ（ｍｏｄ（Ｘ、ｄ）＋ｍｏｄ（Ｙ、ｄ）、ｄ）＝ｍｏｄ（ｍｏｄ（Ｘ、ｄ）・２ｎ＋ｍｏｄ（Ｙ、ｄ）、ｄ）が成り立つ。
【００１９】
［補題３の証明］Ｘの剰余をＲ１、Ｙの剰余をＲ２とすると、ｍｏｄ（Ｘ、ｄ）＝Ｒ１、ｍｏｄ（Ｙ、ｄ）＝Ｒ２となる。また、ｍｏｄ（２ｎ、ｄ）＝１であるので、２ｎ＝Ｑ・ｄ＋１（Ｑは整数）と表すことができる。
【００２０】
これらを用いるとｍｏｄ（ｍｏｄ（Ｘ、ｄ）＋ｍｏｄ（Ｙ、ｄ）、ｄ）＝ｍｏｄ（Ｒ１＋Ｒ２、ｄ）となる。
【００２１】
また、ｍｏｄ（ｍｏｄ（Ｘ、ｄ）・２ｎ＋ｍｏｄ（Ｙ、ｄ）、ｄ）＝ｍｏｄ（Ｒ１・（Ｑ・ｄ＋１）＋Ｒ２、ｄ）＝ｍｏｄ（Ｒ１・Ｑ・ｄ＋Ｒ１＋Ｒ２、ｄ）＝ｍｏｄ（Ｒ１＋Ｒ２、ｄ）となる。従って補題３が成り立つことが分かる。
【００２２】
［定理］任意の２Ｎビットの被除数Ｙの除数ｄに対する剰余は、被除数ＹをＮビットで２分割した２つの値ｙ１、ｙ２の除数ｄに対する剰余の一方をｎビット左シフトして他方の剰余と連結した値の剰余と等しい。つまりＹ＝ｙ１・２Ｎ＋ｙ２とすると、ｍｏｄ（Ｙ、ｄ）＝ｍｏｄ（ｍｏｄ（ｙ１、ｄ）・２ｎ＋ｍｏｄ（ｙ２、ｄ）、ｄ）が成り立つ。但し、Ｎはｎの任意の倍数であり、ｄはｍｏｄ（２ｎ、ｄ）＝１を満たす。
【００２３】
［定理の証明］ｍｏｄ（Ｙ、ｄ）＝ｍｏｄ（ｙ１・２Ｎ＋ｙ２、ｄ）と表すことができる。補題２からｍｏｄ（ｙ１・２Ｎ＋ｙ２、ｄ）＝ｍｏｄ（ｍｏｄ（ｙ１・２Ｎ、ｄ）＋ｍｏｄ（ｙ２、ｄ）、ｄ）となる。
【００２４】
また、補題１よりｍｏｄ（ｍｏｄ（ｙ１・２Ｎ、ｄ）＋ｍｏｄ（ｙ２、ｄ）、ｄ）＝ｍｏｄ（ｍｏｄ（ｙ１、ｄ）＋ｍｏｄ（ｙ２、ｄ）、ｄ）となる。
【００２５】
さらに、補題３より、ｍｏｄ（ｍｏｄ（ｙ１、ｄ）＋ｍｏｄ（ｙ２、ｄ）、ｄ）＝ｍｏｄ（ｍｏｄ（ｙ１、ｄ）・２ｎ＋ｍｏｄ（ｙ２、ｄ）、ｄ）となる。
【００２６】
従って、任意の２Ｎビットの被除数Ｙの除数ｄに対する剰余は、被除数ＹをＮビットで２分割した２つの値ｙ１、ｙ２の除数ｄに対する剰余の一方をｎビット左シフトして他方の剰余と連結した値の剰余と等しくなる。尚、Ｎが偶数ならば、ｙ１とｙ２をそれぞれＮ／２ビットで２分割して同様の演算を行うことが可能である。
【００２７】
以上により実施形態の前提となる補題及び定理の説明を終える。続いて実施形態について説明する。
【００２８】
図１に本発明の実施形態に係る剰余演算装置の概略構成を示す。剰余演算装置は複数の剰余回路１０〜１８を備え、剰余回路がツリー構造をとって構成される。それぞれの剰余回路は２・ｎビットの被除数から除数ｄの剰余値を算出する回路である。ｎは除数ｄに対してｍｏｄ（２ｎ、ｄ）＝１を満たす最小の正の整数である。剰余回路から出力される剰余値はｎビットとし、剰余値がビット数ｋ（ｋはｎ＞ｋを満たす正の整数）で表現できる場合はｋビットより上位のビットに０を与えて剰余値を出力する。つまりこの剰余演算装置はｍｏｄ（２ｎ、ｄ）＝１を満たす整数ｎが存在するような除数ｄについての剰余値を算出することができるものである。このような除数ｄは例えば３、７、１５、３１等である。
【００２９】
１段目には剰余回路がｍ個設けられており、それぞれの剰余回路には２・ｎ・ｍビットの被除数Ｘを２・ｎビット単位で分割した値Ｘ１、Ｘ２、…、Ｘｍ−１、Ｘｍが与えられる。被除数ＸはＸ＝Ｘｍ＋Ｘｍ−１・２２ｎ＋Ｘｍ−２・２２・２ｎ＋Ｘｍ−３・２３・２ｎ＋…＋Ｘ２・２（ｍ−２）・２ｎ＋Ｘ１・２（ｍ−１）・２ｎと表すことができる。被除数Ｘが２・ｎ・ｍビット未満の値である場合は下位ビットに０を与えて２・ｎ・ｍビットの値にする。
【００３０】
隣接する２つの１段目の剰余回路から出力されるｎビットの剰余値が連結して２・ｎビットの値となり、２段目の剰余回路に入力される。例えば剰余回路１０及び１１のそれぞれの出力が連結して剰余回路１４に入力される。
【００３１】
このような処理を階層的に繰り返し、最終段の剰余回路１８から最終的な剰余値を算出する。
【００３２】
上述の［定理］より、２Ｎビットの被除数Ｙの除数ｄに対する剰余は、被除数ＹをＮビットで２分割した２つの値ｙ１、ｙ２の除数ｄに対する剰余の一方をｎビット左シフトして他方の剰余と連結した値の剰余と等しいという性質があることがわかる。また、Ｎが偶数であれば、ｙ１、ｙ２をそれぞれＮ／２ビットの値に分割して同様の演算を行うことが可能である。本実施形態による剰余演算装置はこのような処理を階層的に繰り返して剰余値を算出するものである。
【００３３】
この剰余演算装置の一例として１６ビットの被除数Ｘが与えられ、除数３に対する剰余値を算出する構成を図２に示す。１６ビットの被除数Ｘは最上位ビットからＸ［０］、Ｘ［１］、…、Ｘ［１５］として示している。除数は３であるため、ｍｏｄ（２ｎ、３）＝１を満たす最小の正の整数ｎは２となる。従って、剰余演算装置の基本部品となる剰余回路は、図３に示すように、４ビットの入力値ｘ［３：０］から除数３に対する２ビットの剰余値ｒ［１：０］を生成する回路となる。
【００３４】
この剰余回路は入力値ｘ［３：０］が０００１、０１００、０１１１、１０１０、１１０１の場合に生成するｒ［１：０］が０１になり、入力値ｘ［３：０］が００１０、０１０１、１０００、１０１１、１１１０の場合にｒ［１：０］が１０になり、入力値ｘ［３：０］が００００、００１１、０１１０、１００１、１１００、１１１１の場合にｒ［１：０］が００となり、例えば図４に示すようなゲート回路構成になる。この剰余回路はＡＮＤゲート４０ａ〜４０ｊ及びＯＲゲート４１ａ、４１ｂを有する。ＡＮＤゲート４０ａ〜４０ｊにはｘ［０］、ｘ［１］、ｘ［２］、ｘ［３］が入力し、少なくとも１つは反転入力する。例えばＡＮＤゲート４０ｄにはｘ［１］及びｘ［３］が反転入力する。ＯＲゲート４１ａにはＡＮＤゲート４０ａ〜４０ｅの出力が入力され、ＯＲゲート４１ｂにはＡＮＤゲート４０ｆ〜４０ｊの出力が入力される。ＯＲゲート４１ａの出力がｒ［１］、ＯＲゲート４１ｂの出力がｒ［０］となる。
【００３５】
また、論理合成技術を用いることで図５に示すようなゲート回路構成の剰余回路が得られる。
【００３６】
図２において、１６ビットの被除数Ｘは４ビット単位で分割され、それぞれ１段目の剰余回路２１〜２４に入力される。剰余回路２１及び２２から出力される２ビットの剰余値が連結して２段目の剰余回路２５に入力される。また、剰余回路２３及び２４から出力される２ビットの剰余値が連結して２段目の剰余回路２６に入力される。
【００３７】
そして、剰余回路２５及び２６から出力される２ビットの剰余値が連結して３段目（最終段）の剰余回路２７に入力される。剰余回路２７から出力される剰余値Ｒ［１：０］が被除数Ｘ［１５：０］の除数３に対する剰余値となる。
【００３８】
被除数Ｘは１６ビットでなくてもよい。例えば被除数Ｘが１４ビットの場合は、剰余回路２４に入力されるＸ［１４］、Ｘ［１５］に０を与えればよい。また、図６に示すように、Ｘ［１２］、Ｘ［１３］を１段目の剰余回路には入力せず、剰余回路２３から出力される剰余値と連結して２段目の剰余回路２６に入力するような構成にしてもよい。
【００３９】
このように本実施形態による剰余演算装置により剰余値を高速に算出することができる。また、各剰余回路の算出結果を加算せず連結するだけなので、加算器を設ける必要がなく、回路規模を小さくすることができる。
【００４０】
上記実施形態による剰余演算装置はｍｏｄ（２ｎ、ｄ）＝１を満たす整数ｎが存在するような除数ｄ（３、７、１５等）に対する剰余値を算出するものであったが、除数がｍｏｄ（２ｎ、ｄ）＝１を満たす整数ｎが存在するｄの約数ｄ′であるときも、まずｄについて剰余値Ｒを求めた後で、その剰余値Ｒのｄ′に対する剰余値Ｒ′を求めることで、剰余値を高速に求めることができる。
【００４１】
例えば除数を５とし、３２ビットの被除数Ｘ［３１：０］に対する剰余値を算出する剰余演算装置の一例を図７に示す。５はｍｏｄ（２ｎ、ｄ）＝１を満たす整数ｎが存在するｄ（＝１５）の約数である。この剰余演算装置ではまず被除数Ｘの除数１５に対する剰余値を算出し、算出された値の除数５に対する剰余値を求めている。
【００４２】
ｍｏｄ（２ｎ、１５）＝１を満たす最小のｎは４である。従って３２ビットの被除数Ｘが８（＝２・ｎ）ビット毎に分割され、１段目の剰余回路７１〜７４にそれぞれ入力される。１段目の剰余回路７１、７２による算出結果（各４ビット）が連結して２段目の剰余回路７５に入力される。また、１段目の剰余回路７３、７４による算出結果（各４ビット）が連結して２段目の剰余回路７６に入力される。
【００４３】
２段目の剰余回路７５、７６による算出結果（各４ビット）が連結して３段目の剰余回路７７に入力され、被除数Ｘの除数１５に対する剰余値が求まる。この剰余値が除数５に対する剰余値を算出する剰余回路７８に与えられる。この剰余回路７８の算出結果が被除数Ｘの除数５に対する剰余値となる。
【００４４】
このように除数がｍｏｄ（２ｎ、ｄ）＝１を満たす整数ｎが存在するｄを除数とするだけでなく、このｄの約数を除数としても、剰余値を高速に算出することができる。
【００４５】
このような剰余演算装置による演算フローを図８に示す。被除数をＸ、除数をｄとする。
【００４６】
（ステップＳ１）除数ｄ＝２ｎ−１を満たすｎがあるか、つまりｍｏｄ（２ｎ、ｄ）＝１を満たす整数ｎが存在するか、が判定される。ｎが存在する場合はステップＳ２へ、存在しない場合はステップＳ３へ進む。
【００４７】
（ステップＳ２）Ｙ＝ｄとし、ステップＳ４へ進む。
【００４８】
（ステップＳ３）除数ｄはＹ＝２ｎ−１を満たすｎが存在するＹの約数であるかが判定される。約数である場合はステップＳ４に進む。約数でない場合は本実施形態による演算は適用できない。
【００４９】
（ステップＳ４）被除数Ｘのビット数はｎの２倍以上であるかが判定される。２倍以上である場合はステップＳ５へ進み、２倍未満の場合は本実施形態による演算は適用できない。
【００５０】
（ステップＳ５）被除数Ｘのビット数が２・ｎの倍数であるかが判定される。倍数の場合はステップＳ７へ進み、倍数でない場合はステップＳ６へ進む。
【００５１】
（ステップＳ６）被除数Ｘの上位（又は下位）に０値を補間して、ビット数を２・ｎの倍数にするかを選択する。０値を補間して倍数にする場合はステップＳ７へ進み、０値を補間しない場合はステップＳ８へ進む。
【００５２】
（ステップＳ７）被除数Ｘを２・ｎビット毎に分割し、それぞれを除数Ｙについての剰余演算回路に入力する。
【００５３】
（ステップＳ８）被除数Ｘを２・ｎビット毎に分割し、それぞれを除数Ｙについての剰余演算回路に入力する。
【００５４】
（ステップＳ９）被除数Ｘを２・ｎビット毎に分割した際の余った２・ｎビット未満の値ｘはｎビット以下であるかが判定される。ｎビット以下の場合はステップＳ１０へ進み、ｎビットより大きい場合はステップＳ１２へ進む。
【００５５】
（ステップＳ１０）値ｘについては剰余回路を介さず入力と出力を直結する。値ｘの除数Ｙに対する剰余値はｘそのものだからである。
【００５６】
（ステップＳ１１）剰余回路にて演算されて出力される剰余値の総ビット長はｎ以下であるかが判定される。ｎ以下の場合はステップＳ１３へ進み、ｎより大きい場合はステップＳ１２へ進む。
【００５７】
（ステップＳ１２）得られた剰余（及び値ｘ）をすべてビット連結して、新たな被除数とし、ステップＳ５へ戻る。
【００５８】
（ステップＳ１３）Ｙ＝ｄであるか、つまりステップＳ１で除数ｄ＝２ｎ−１を満たす整数ｎが存在していたか、が判定される。Ｙ＝ｄの場合はステップＳ１５へ進み、Ｙ≠ｄの場合はステップＳ１４へ進む。
【００５９】
（ステップＳ１４）ステップＳ１１で得られた剰余値の除数ｄに対する剰余値を求める
（ステップＳ１５）算出された剰余値が被除数Ｘの除数ｄに対する剰余値となる。
【００６０】
次に、このような剰余演算装置を設計する回路設計装置について説明する。回路設計装置の概略構成を図９に示す。回路設計装置は演算処理を行う中央演算装置（ＣＰＵ）９１と、バス９５を介してＣＰＵ９１と接続された入力部９２、表示部９３、記憶部９４を備える。記憶部９４には後述する処理を実行するためのプログラムを記憶可能なプログラム記憶領域９４ａ及び回路を構成する複数の論理ゲートのデータを記憶した素子情報記憶領域９４ｂを有する。
【００６１】
入力部９２から被除数Ｘのビット数及び除数ｄが与えられる。ＣＰＵ９１はこの除数ｄがｍｏｄ（２ｎ、Ｙ）＝１を満たす整数ｎが存在するＹと同一又はその約数かを判定する。また、素子情報記憶領域９４ｂの論理ゲートのデータを参照して論理ゲートの配置、結線を行い、ｎビットの入力値の除数Ｙに対する剰余値を算出する剰余回路を設計し、この剰余回路をツリー状に接続して図１に示すような剰余演算装置を設計する。剰余回路、剰余演算装置の回路図は表示部９３に表示することができる。
【００６２】
この回路設計装置の動作フローを図１０に示す。ここでは簡単化のため、除数ｄはｍｏｄ（２ｎ、ｄ）＝１を満たす整数ｎが存在し、被除数Ｘのビット数は４ｎビットであるとする。
【００６３】
（ステップＳ１０１）入力部９２を介して与えられる除数ｄについてｍｏｄ（２ｎ、ｄ）＝１を満たす最小の整数ｎが演算部９１により算出される。
【００６４】
（ステップＳ１０２）演算部９１により、素子情報記憶領域９４ｂの論理ゲートのデータが参照され、２ｎビットの被演算値の除数ｄに対するｎビットの剰余値を算出する剰余回路が設計される。
【００６５】
（ステップＳ１０３）演算部９１により、入力部９２を介して与えられる被除数Ｘのビット数に基づき、それぞれ２ｎビットのビットグループに分割された被除数Ｘが与えられるように前記剰余回路がレイアウトされる。ここで被除数Ｘのビット数は４ｎビットとしているので、それぞれＸ［２ｎ−１：０］、Ｘ［４ｎ−１：２ｎ］が与えられる２個の前記剰余回路がレイアウトされる。
【００６６】
（ステップＳ１０４）演算部９１により、この２個の剰余回路から出力されるｎビットの剰余値を連結し、この連結した剰余値である２ｎビットの被演算値が入力される前記剰余回路がレイアウトされる。
【００６７】
被除数Ｘのビット数が４ｎビットより大きい場合はステップＳ１０３、Ｓ１０４の動作を繰り返し、剰余回路がツリー状に接続された剰余演算装置をレイアウトすることができる。このようにしてこの回路設計装置により図１に示すような剰余演算装置がレイアウトされる。また、コンピュータ上に図９に示すような回路設計装置を実現できるソフトウェアを用いて剰余演算装置をレイアウトすることができる。
【００６８】
上述した実施の形態は一例であって制限的なものではないと考えられるべきである。本発明の技術的範囲は特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【図面の簡単な説明】
【００６９】
【図１】本発明の実施形態による剰余演算装置の概略構成図である。
【図２】実施例による剰余演算装置の概略構成図である。
【図３】実施例による剰余演算回路の概略構成図である。
【図４】実施例による剰余演算回路の概略構成図である。
【図５】実施例による剰余演算回路の概略構成図である。
【図６】変形例による剰余演算装置の概略構成図である。
【図７】変形例による剰余演算装置の概略構成図である。
【図８】本発明の実施形態による剰余演算のフローチャートを示す図である。
【図９】本発明の実施形態による回路設計装置の概略構成図である。
【図１０】本発明の実施形態による回路設計装置の動作フローを示す図である。
【符号の説明】
【００７０】
１０〜１８  剰余回路
【図１】
2008152367.tif 000003
【図２】
2008152367.tif 000004
【図３】
2008152367.tif 000005
【図４】
2008152367.tif 000006
【図５】
2008152367.tif 000007
【図６】
2008152367.tif 000008
【図７】
2008152367.tif 000009
【図８】
2008152367.tif 000010
【図９】
2008152367.tif 000011
【図１０】
2008152367.tif 000012