(57)【要約】【課題】剰余演算回路の構成の簡略化及び処理の高速化【解決手段】被演算値を、ＬＳＢ側から所定ビット数づつのビットグループ毎に、或る除数による剰余演算を行って、上記除数に対する剰余値を算出する第１の部分剰余演算部（ＰＭ３：１１−１〜１１−４）と、複数の上記部分剰余演算部により得られた複数の剰余値を加算するとともに、加算結果を上記除数に対する剰余を表現できる最小ビット数の値に変換する部分加算部（ＰＡＭ３）と、部分加算部により生成された値に対し、ＬＳＢ側から上記所定ビット数づつのビットグループ毎に剰余演算を行って、被演算値の除数に対する剰余値を算出する第２の部分剰余演算部（ＰＭ３：１３−１，１３−２、１５）を有する。そして第１の部分剰余演算部と部分加算部と第２の部分剰余演算部をツリー構造で配する。部分加算部で各剰余値を加算した際には、剰余値を表現できる最小ビット数に変換して出力することで、加算時の桁上がり処理に起因する演算量の増大を抑制する。【選択図】      図３
2005128832.tif 000002
【特許請求の範囲】
【請求項１】
入力データもしくは該入力データに対応した被演算値について剰余演算を行う剰余演算手段と、
上記剰余演算手段によって得られた剰余に応じて上記入力データを処理する処理手段とを備え、
上記剰余演算手段は、
上記入力データ又は上記被演算値のいずれか一方に対し、ＬＳＢ側から所定ビット数づつのビットグループ毎に或る除数による剰余演算を行って、上記除数に対する剰余値を算出する第１の部分剰余演算部と、
上記第１の部分剰余演算部により得られた複数の剰余値を加算するとともに、加算結果を上記除数に対する剰余を表現できる最小ビット数の値に変換する部分加算部と、
上記部分加算部により生成された値に対し、ＬＳＢ側から上記所定ビット数づつのビットグループ毎に上記除数による剰余演算を行って、上記入力データ又は上記被演算値の上記除数に対する剰余値を算出する第２の部分剰余演算部と、
を含むことを特徴とするデータ処理装置。
【請求項２】
上記剰余演算手段は、
Ｎビット（Ｎは３以上の整数）の上記入力データ又は上記被演算値について、ＬＳＢ側から各ビットの剰余パターンが同一となる所定ビット数づつのビットグループ毎に、上記除数による剰余演算を行うことを特徴とする請求項１に記載のデータ処理装置。
【請求項３】
上記第１の部分剰余演算部は、
Ｎビット（Ｎは３以上の整数）の上記入力データ又は上記被演算値について、ＬＳＢ側から順に２ビットづつのビットグループ毎に除数「３」による剰余演算を行って２ビットの剰余値を算出し、
上記部分加算部は、
上記第１の部分剰余演算部により得られた複数の剰余値を加算するとともに、加算結果を２ビットの値に変換することを特徴とする請求項１に記載のデータ処理装置。
【請求項４】
被演算値を、ＬＳＢ側から所定ビット数づつのビットグループ毎に、或る除数による剰余演算を行って、上記除数に対する剰余値を算出する第１の部分剰余演算部と、
上記第１の部分剰余演算部により得られた複数の剰余値を加算するとともに、加算結果を上記除数に対する剰余を表現できる最小ビット数の値に変換する部分加算部と、
上記部分加算部により生成された値に対し、ＬＳＢ側から上記所定ビット数づつのビットグループ毎に上記除数による剰余演算を行って、上記被演算値の上記除数に対する剰余値を算出する第２の部分剰余演算部と、
を含むことを特徴とする剰余演算回路。
【請求項５】
Ｎビット（Ｎは３以上の整数）の上記被演算値について、ＬＳＢ側から各ビットの剰余パターンが同一となる所定ビット数づつのビットグループ毎に、上記除数による剰余演算を行うことを特徴とする請求項４に記載の剰余演算回路。
【請求項６】
上記第１の部分剰余演算部は、
Ｎビット（Ｎは３以上の整数）の上記被演算値について、ＬＳＢ側から順に２ビットづつのビットグループ毎に除数「３」による剰余演算を行って２ビットの剰余値を算出し、
上記部分加算部は、
上記第１の部分剰余演算部により得られた複数の剰余値を加算するとともに、加算結果を２ビットの値に変換することを特徴とする請求項４に記載の剰余演算回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、剰余演算を用いたデータ処理装置、及び剰余演算回路に関するものである。
【背景技術】
【０００２】
【特許文献１】特許第２５４１７５８号公報
【０００３】
一般に剰余演算は繰り返し減算による順序回路で構成されるが、演算結果が出力されるまでに時間がかかるという欠点がある為、除数が固定の値の場合においては変換テーブルにて構成した方が回路規模が小さくなる。
但し入力と出力の関係を使いそのまま論理合成をかけたり、若しくは変換テーブルをリードオンリメモリに保持させる等の手法を採る場合、回路規模が大きくなる等の難点がある。
【０００４】
このような点を解決する従来技術としては、上記特許文献１に開示されているものがある。図９に、上記特許文献１に記載された剰余算出回路を示す。
この回路では、除数を３とする場合、被除数としての２進数の各ビット（各桁）の重みはＬＳＢ（第０ビット）側から１，２，１，２，１，２・・・となることに着目している。即ち被除数において０を含む偶数ビット（重み１のビット）が「１」であれば、余りは「１」であり、奇数ビット（重み２のビット）が「１」であれば余りは「２」となる。そして偶数ビットの余りの合計と奇数ビットの余りの合計の和が、被除数を３で割った余りとなる。
この原理を利用して、１２ビットの被除数に対する剰余算出回路が図９のように構成されている。
【０００５】
図９では、各全加算器７１〜８２の入出力信号線に付した「１」，「２」の数字は重み（余り）「１」，「２」を示すものとしている。
全加算器７１，７２は被除数の偶数ビット（重み１）の加算を行い、全加算器７３，７４は奇数ビット（重み２）の全加算を行う。全加算器７５は前段の全加算器７１，７２の重み１の信号Ｓを加算し、全加算器７６は前段の全加算器７１，７２の重み２の信号ＣＲＹと全加算器７５の重み２の信号ＣＲＹとを加算する。
全加算器７７は前段の全加算器７３，７４の重み２の信号Ｓを加算し、全加算器７８は前段の全加算器７３，７４の重み１の信号ＣＲＹと全加算器７７の重み１の信号ＣＲＹとを加算する。
次段以降の各全加算器７９〜８２においても各信号の重みを考慮しつつ同一重み同士の加算処理を行い、最終的に３ビット信号となるまで前述の加算処理が繰返される。そして、この最終的な３ビットの信号をモジュロ３算出回路４５へ入力して剰余出力ＯＵＴが得られる。
【０００６】
即ちこの回路では、２進数の被除数の各ビットについて、偶数ビットは重み１、奇数ビットは重み２を持たせ、重み１同士、重み２同士のビットを全加算器に入れると、全加算器の和Ｓと桁上げＣに、重み１若しくは重み２のいずれかが入力値の重みの種類によって一意に出力されることを利用して、この全加算器を通過する毎に元の値を１ビットずつ減らしていく。そしてこれを繰り返すことで必要最低限のビット数に変換した後に小さな規模のモジュロ３算出演算器を利用可能にしており、結果として全体の回路規模縮小と回路速度の向上を図っている。
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら上記特許文献１の回路では、モジュロ３算出を行っている事が既知であるにもかかわらず、それを利用しているのは回路の最終段のみであり、途中の演算で直接それを利用している所が無い。
例えば初期の段階で奇数ビットと偶数ビットの組合せの際、両方とも１、つまり１０進表現で「３」という値の場合は、モジュロ３（除数が３の剰余）では「０」に等価である。従って奇数ビットと偶数ビットの組み合わせで２進数値「１１」となる場合、「００」に変換することで伝播させる情報量が削減できることが考えられるが、その特徴が生かされておらず、回路規模縮小や回路速度向上の効果が少ない。
【課題を解決するための手段】
【０００８】
そこで本発明では、回路規模縮小及び回路速度向上という点で、より効果の大きい剰余演算回路を提案し、またその剰余演算回路を用いたデータ処理装置を提案する。
【０００９】
本発明のデータ処理装置は、入力データもしくは該入力データに対応した被演算値について剰余演算を行う剰余演算手段と、上記剰余演算手段によって得られた剰余に応じて上記入力データを処理する処理手段とを備える。
そして上記剰余演算手段は、上記入力データ又は上記被演算値のいずれか一方に対し、ＬＳＢ側から所定ビット数づつのビットグループ毎に或る除数による剰余演算を行って、上記除数に対する剰余値を算出する第１の部分剰余演算部と、上記第１の部分剰余演算部により得られた複数の剰余値を加算するとともに、加算結果を上記除数に対する剰余を表現できる最小ビット数の値に変換する部分加算部と、上記部分加算部により生成された値に対し、ＬＳＢ側から上記所定ビット数づつのビットグループ毎に上記除数による剰余演算を行って、上記入力データ又は上記被演算値の上記除数に対する剰余値を算出する第２の部分剰余演算部とを含む。
また上記剰余演算手段は、Ｎビット（Ｎは３以上の整数）の上記入力データ又は上記被演算値について、ＬＳＢ側から各ビットの剰余パターンが同一となる所定ビット数づつのビットグループ毎に、上記除数による剰余演算を行う。
また、特に除数を「３」とする場合、上記第１の部分剰余演算部は、Ｎビット（Ｎは３以上の整数）の上記入力データ又は上記被演算値について、ＬＳＢ側から順に２ビットづつのビットグループ毎に除数「３」による剰余演算を行って２ビットの剰余値を算出し、上記部分加算部は、上記第１の部分剰余演算部により得られた複数の剰余値を加算するとともに、加算結果を２ビットの値に変換する。
本発明の剰余演算回路は、上記剰余演算手段としての構成を有するものである。
【００１０】
このような本発明においては、剰余演算手段（剰余演算回路）では、第１の部分剰余演算部により、入力データ又は被演算値について、例えば２ビットづつなどのビットグループ毎に剰余を算出する。このとき剰余値は、当然ながら除数に応じてあり得る値のみとなる。例えば除数３であれば、剰余値は０，１，２のいずれかとなる。そしてその後、部分加算部で各剰余値を加算するわけであるが、例えば除数３の場合、被加算数と加算数ともに０〜２の範囲に抑えられる性質を利用して加算論理構成を採ることができ、加算時の桁上がり処理に起因する演算量の増大を抑制できる。また加算結果を除数に対する剰余を表現できる最小ビット数（除数３の場合は０，１，２を表現できる２ビット）の値に変換する。この値は、ビット数が削減された入力データ又は被演算値を構成する値ともいえる。つまり、ツリー構造上で並列の複数の部分加算部の出力は、この時点で当初の入力データ又は被演算値よりビット数の削減された被演算値となる。その被演算値については、さらに第２の部分剰余演算部により、ビットグループ毎に処理される。
このようにして、部分剰余演算部と部分加算部のツリー構造において伝播させる情報量を削減していく。
【発明の効果】
【００１１】
本発明によれば、剰余演算回路（剰余演算手段）において、入力データ又は被演算値を複数のビットグループに分けて剰余演算を行い、各剰余値を加算し、かつその際に加算結果を除数に対する剰余を表現できる最小ビット数の値に変換していく処理を繰り返すことで、最終的に、当初の被演算値に対する所定の除数による剰余値を得る。このため、剰余演算過程において効率的に伝搬される情報量が削減されていくことになり、結果として回路規模の縮小と回路速度の向上に大きな効果を得ることができる。
また、このような剰余演算手段を用いたデータ処理装置は、剰余演算手段の回路規模の縮小化に伴って、全体の規模を削減し、また剰余演算手段の処理の高速化により高速処理が可能となる。
【発明を実施するための最良の形態】
【００１２】
本発明の実施の形態のデータ処理装置の構成例を図１，図２に示す。
本発明のデータ処理装置は、入力データの値、もしくは該入力データに対応された被演算値について剰余演算を行う剰余演算手段と、この剰余演算手段によって得られた剰余に基づいて、上記入力データの処理を選択する選択処理手段とを備えるものであり、このようなデータ処理装置の一例として、図１では、メモリに対するデータ記憶の選択制御を行うデータ処理装置を示している。
【００１３】
図１のデータ処理装置は、データＤＴを、その各データＤＴに与えられたアドレスＡｄの剰余に応じて、記憶するメモリ部を振り分けて記憶させる装置である。この場合ＣＰＵ３は、記憶すべきデータＤＴ及びアドレスＡｄを出力する部位として示している。ＣＰＵ３はバスＢ２によりデータＤＴ及びアドレスＡｄを選択処理部２に供給する。
メモリ４Ａ，４Ｂは、データＤＴを記憶するメモリである。メモリ４ＡはバスＢ１によって書込／読出アクセスが行われ、またメモリ４Ｂは、バスＢ２によって書込／読出アクセスが行われるものとしている。
剰余演算回路１は、アドレスＡｄとしてのＮビットの２進数値を被演算値として入力し、その被演算値に対して例えば除数３で割った余りとしての剰余値ｍを出力する。
剰余値ｍは選択処理部２に供給される。除数３の場合、剰余値ｍは、０，１，２のいずれかとなる。
選択処理部２は、例えば剰余値ｍ＝０のアドレスＡｄが与えられたデータＤＴについては、メモリ４Ｂに書き込み、剰余値ｍ＝１又は２のアドレスＡｄが与えられたデータＤＴについては、メモリ４Ａに書き込むように選択処理を行う。即ち、剰余値ｍ＝０の場合は、バスＢ２を選択してＣＰＵ３からのデータＤＴ及びアドレスＡｄを出力し、剰余値ｍ＝１又は２の場合は、バスＢ１を選択してＣＰＵ３からのデータＤＴ及びアドレスＡｄを出力する。
【００１４】
即ちこのデータ処理装置は、例えばアドレスＡｄ及びデータＤＴに規則性があり、アドレスが３の倍数の値のときのデータＤＴが、アドレスが３の倍数でない値のデータＤＴと異なる性質を持つ場合に、これをメモリ４Ａ、４Ｂに振り分けて格納する装置である。
例えばアドレスが３の倍数の値のデータＤＴは、ビット数Ｂ１のデータであり、アドレスが３の倍数でない値のデータＤＴはビット数Ｂ２のデータであるとすると、この場合、メモリ４Ａはビット数Ｂ２のデータの格納領域、メモリ４Ｂはビット数Ｂ１のデータの格納領域として使用されることになる。従って、データビット長に応じてデータを振り分ける用途に好適な装置となる。
【００１５】
なお、例えばこの図１のように供給されたデータの記憶領域を選択するのではなく、アドレス値に応じてデータを取捨するデータ処理装置も構成できる。即ち、選択処理部２が、アドレスＡｄの剰余値ｍ＝０の場合のみ、そのデータＤＴ及びアドレスＡｄをメモリに転送して記憶させ、アドレスＡｄの剰余値ｍ＝１又は２の場合は、そのデータＤＴの記憶は行わないようにする装置である。
また、図１の例ではメモリ４Ａ、４Ｂへの記憶の振り分けとしたが、メモリ４Ａ、４Ｂに代えて２種類のデータ処理部を設け、入力されたデータをアドレスの剰余値ｍに応じて２つのデータ処理部の一方に振り分けるような構成も考えられる。例えばデータの加算、累積、平均化、最大・最小検出などのデータ処理や、データ合成などの処理に対して、入力データの振り分けを行う。
これら各種の構成において、データＤＴに対応された値としてアドレスＡｄの剰余演算を行って、その結果に応じてデータ経路を選択する構成が、剰余演算回路１を含むデータ処理装置として想定される。
もちろんデータＤＴに対応された値、つまり剰余演算回路１での被演算値となるアドレス値としては、メモリに対応する狭義のアドレスに限らず、特定のデータフォーマット上で規定されるセクタ番号など、データ単位毎に付された値であればよい。
【００１６】
図２は、入力データＤＴ自体が、剰余演算回路１での被演算値とされるデータ処理装置例を示している。
この場合、入力データＤＴが選択処理部２Ａ及び剰余演算回路１に供給され、また剰余演算回路１は、データＤＴについて例えば除数３による剰余値ｍを選択処理部２Ａに供給する。
選択処理部２Ａは、例えば剰余値ｍ＝０のデータのみを、データ処理部５に転送する。
このデータ処理装置は、データ自体の値として、３の倍数のデータを抽出し、所定のデータ処理を行う回路となる。例えば３の倍数という特定のデータ値が発生することをトリガとして特定の処理を実行したり、或いは３の倍数というデータ値のみの積算、平均化、データ収集などを行う回路として好適である。
もちろん、図２のようにデータＤＴ自体の剰余値ｍを求める場合でも、選択処理部２Ａにおいて、データの取捨ではなく、出力経路の振り分けという処理を行うようにしてもよい。
【００１７】
そして、以上の図１，図２で例示したようなデータ処理装置では、剰余演算回路１の回路規模や動作速度は、全体の回路規模や動作性能に大きく関わることは言うまでもない。
図１，図２の実施の形態における剰余演算回路１は、以下説明する構成とされることで、小さい回路規模であることと高速演算動作を実現する。
【００１８】
図３に、剰余演算回路１の構成例を示す。この図３の剰余演算回路１は、８ビットの被演算値が入力され、これに対して除数３による剰余値を算出する構成例としている。ここでいう８ビットの被演算値とは、図１の場合、アドレスａｄに相当し、図２の場合データＤＴに相当する。８ビットの被演算値はＬＳＢ側からビットｂ０・・・ｂ７として示している。
この剰余演算回路１は、基本的に、部分剰余演算部（ＰＭ３）と、部分加算部（ＰＡＭ３）とがツリー構造をとって構成される。
即ち、部分剰余演算部（ＰＭ３）１１−１〜１１−４、１３−１，１３−２、１５と、部分加算部（ＰＡＭ３）１２−１，１２−２、１４を備える。
なお、本発明の請求項の記載に対応させれば、部分剰余演算部１１−１〜１１−４は第１の部分剰余演算部、部分剰余演算部１３−１，１３−２、１５は第２の部分剰余演算部となる。
【００１９】
部分剰余演算部１１−１〜１１−４は、被演算値を、ＬＳＢ側から複数のビットグループに分けた状態において、各ビットグループに対して所定の除数による剰余演算を行って、除数に対する剰余値を算出する。具体的には８ビットの被演算値を、ＬＳＢ側から各ビットの剰余パターンが同一となる複数のビットグループに分ける。この場合、除数３であることで、８ビットの各桁の剰余（重み）は、上記もしたようにＬＳＢ側から１，２，１，２，１，２，１，２となる。そのため剰余パターンとして「１，２」のパターンを１グループとする。つまり、８ビットの被演算値を、ＬＳＢ側から順に２ビットづつの複数のビットグループに分けた状態において、各ビットグループに対して除数「３」による剰余演算を行って２ビットの剰余値を算出する構成とされる。
部分剰余演算部１１−１は、８ビットの被演算値の一部であるビットｂ０，ｂ１について、除数３による剰余を出力する。
同様に部分剰余演算部１１−２は、ビットｂ２，ｂ３について、除数３による剰余を出力する。
部分剰余演算部１１−３は、ビットｂ４，ｂ５について、除数３による剰余を出力する。
部分剰余演算部１１−４は、ビットｂ６，ｂ７について、除数３による剰余を出力する。
各部分剰余演算部１１（１１−１〜１１−４）により出力される剰余値は、除数３であることにより、０，１，２のいずれかである。つまり２ビット値として「００」「０１」「１０」のいずれかとなる。
【００２０】
部分剰余演算部１１−１、１１−２の各２ビットの出力（剰余値）は、部分加算部１２−１に供給される。
また部分剰余演算部１１−３、１１−４の各２ビットの出力（剰余値）は、部分加算部１２−２に供給される。
部分加算部１２−１，１２−２は、それぞれ、複数の部分剰余演算部により得られた複数の剰余値を加算するとともに、加算結果を除数３に対する剰余を表現できる最小ビット数の値に変換し、この値を、ビット数が削減された被演算値を構成する値とする。除数３の場合、剰余値は０，１，２のいずれかであるため、除数３に対する剰余を表現できる最小ビット数とは２ビットである。
従って、部分加算部１２−１は、部分剰余演算部１１−１、１１−２からの各２ビットの剰余値を加算し、これを２ビット値で出力する。ここで、部分剰余演算部１１−１、１１−２からの剰余値は、それぞれ０，１，２のいずれかであることで、加算値としては、０，１，２，３，４のいずれかとなる。加算値４を考慮すると、出力に３ビットが必要であるが、部分加算部１２−１はこれを２ビットで出力する。つまり、剰余としては「４」は「１」と等価であることから、加算値として「４」が得られた場合は「１」（つまり２ビット値「０１」）として出力する。これは換言すれば、加算した結果により一部の剰余演算を行っていることにもなる。
そしてこれは、加算結果による桁上がりを無くし、加算時の桁上がり処理に起因する演算量の増大を抑制する作用をなすものとなる。
【００２１】
部分加算部１２−２は、部分剰余演算部１１−３、１１−４からの各２ビットの剰余値を加算し、これを部分加算部１２−１と同様にして２ビット値で出力する。
【００２２】
部分加算部１２−１、１２−２から各２ビット出力されることで、その段階で被演算値は８ビットから４ビットに削減されたことになる。つまり各部分加算部１２−１、１２−２からの各２ビットの出力は、ビット数が４ビットに削減された被演算値を構成する値となる。
この４ビットのうちのＬＳＢ側の２ビット、つまり部分加算部１２−１の出力は、部分剰余演算部１３−１に供給される。
また４ビットのうちのＭＳＢ側の２ビット、つまり部分加算部１２−２の出力は、部分剰余演算部１３−２に供給される。
部分剰余演算部１３−１、１３−２は、上記部分剰余演算部１１−１〜１１−４と同様の構成である。つまりこの場合、部分剰余演算部１３−１、１３−２は、４ビットの被演算値を、ＬＳＢ側から２ビットづつの複数のビットグループに分けた状態において、各ビットグループに対して除数「３」による剰余演算を行い、２ビットの剰余値を算出する。
部分剰余演算部１３−１、１３−２が、部分剰余演算部１１−１〜１１−４と同様に２ビット値に対して除数３の剰余を算出することで、部分剰余演算部１３−１、１３−２の出力値（剰余値）は、それぞれ０，１，２のいずれかとなる。
【００２３】
部分剰余演算部１３−１、１３−２の各２ビットの出力（剰余値）は、部分加算部１４に供給される。部分加算部１４は、上記部分加算部１２−１，１２−２と同様の構成とされる。
即ち部分加算部１４は、複数の部分剰余演算部により得られた複数の剰余値を加算するとともに、加算結果を除数３に対する剰余を表現できる最小ビット数（２ビット）の値に変換し、この値を、ビット数が削減された被演算値を構成する値とする。つまり、部分加算部１４の出力の時点で、もともとの８ビットの被演算値は、２ビットの被演算値に削減されたものとなる。
【００２４】
部分加算部１４の２ビットの出力は、部分剰余演算部１５に供給される。部分剰余演算部１５は、上記部分剰余演算部１１−１〜１１−４、１３−１，１３−２と同様の構成であり、２ビットのビットグループに対して除数「３」による剰余演算を行い、２ビットの剰余値を算出する。
すると、この部分剰余演算部１４から出力される２ビットの剰余値ｍ０，ｍ１が、元々の８ビットの被演算値に対する剰余値ｍとなる。この剰余値が上記図１，図２における選択処理部２（２Ａ）に供給される。
【００２５】
このように剰余演算回路１は、部分剰余演算部（ＰＭ３）と部分加算部（ＰＡＭ３）が、入力される被演算値に対して、部分的に剰余を算出しながらビット数を順次削減していくようなツリー構成を採る。
部分剰余演算部ＰＭ３（１１，１３，１５）と、部分加算部ＰＡＭ３（１２，１４）の構成を図４，図６に示す。
【００２６】
部分剰余演算部ＰＭ３は、図４に示すようにアンドゲート２１，２２により構成される。
上述のように部分剰余演算部には２ビットが入力されるが、２ビットのＭＳＢ側の入力値ＩM(PM)は、アンドゲート２１に非反転入力され、またアンドゲート２２に反転入力される。
また２ビットのうちのＬＳＢ側の入力値ＩL(PM)は、アンドゲート２１に反転入力され、またアンドゲート２２に非反転入力される。
アンドゲート２１の出力はＭＳＢ側の出力値ＯM(PM)となり、アンドゲート２２の出力はＬＳＢ側の出力値ＯL(PM)となる。
この場合、２ビットの入力値ＩM(PM)、ＩL(PM)に対して、出力される２ビットの出力値ＯM(PM)、ＯL(PM)を、図５に示している。
図示するように、入力値ＩM(PM)、ＩL(PM)としての「００」「０１」「１０」「１１」に対して、２ビットの出力値ＯM(PM)、ＯL(PM)は、それぞれ「００」「０１」「１０」「００」が出力される。つまり、１０進数の値０，１，２，３に対して、３を除数とする剰余値０，１，２，０が出力されることになる。
【００２７】
次に図６に部分加算部ＰＡＭ３の構成を示す。上記のように部分剰余演算部ＰＭ３は、２ビットの出力値ＯM(PM)、ＯL(PM)として、「００」「０１」「１０」のいずれかとなり、「１１」はあり得ないため、部分加算部ＰＡＭ３は、部分剰余演算部ＰＭ３からの「１１」の入力を考慮しない論理回路構成を採ることができる。
部分加算部ＰＡＭ３は、図６のように、ナンドゲート３１、アンドゲート３２，３５，３６、オアゲート３３，３８、イクスクルーシブオアゲート３７、マルチプレクサ３４により構成される。
【００２８】
上述した図３からわかるように、部分加算部ＰＡＭ３には、２つの部分剰余演算部ＰＭ３から、各２ビットの剰余値が入力される。
一方の部分剰余演算部ＰＭ３からの２ビットの出力値ＯM(PM)、ＯL(PM)は、それぞれ図６の部分剰余演算部ＰＭ３に対して入力値ＩM1(PAM)、ＩL1(PAM)として入力される。また他方の部分剰余演算部ＰＭ３からの２ビットの出力値ＯM(PM)、ＯL(PM)は、それぞれ入力値ＩM2(PAM)、ＩL2(PAM)として入力される。
例えば図３の部分加算部１２−１の場合、部分剰余演算部１１−１の出力値ＯM(PM)、ＯL(PM)が、入力値ＩM1(PAM)、ＩL1(PAM)となり、部分剰余演算部１１−２の出力値ＯM(PM)、ＯL(PM)が、入力値ＩM2(PAM)、ＩL2(PAM)となる。
【００２９】
入力値ＩM1(PAM)、入力値ＩM2(PAM)は、ナンドゲート３１、オアゲート３３、アンドゲート３６に供給される。
入力値ＩL1(PAM)、入力値ＩL2(PAM)は、アンドゲート３５、イクスクルーシブオアゲート３７に供給される。
オアゲート３３の出力は、反転入力、及び非反転入力としてマルチプレクサ３４の２つの入力となる。
マルチプレクサ３４は、アンドゲート３５の出力に応じて入力を選択する。即ち、アンドゲート３５の出力が「０」であれば、「０」側の入力を選択する。この場合マルチプレクサ３４は、オアゲート３３の論理和を、アンドゲート３２に供給することになる。
また、アンドゲート３５の出力が「１」であれば、マルチプレクサ３４は「１」側の入力を選択する。この場合マルチプレクサ３４は、オアゲート３３の論理和の反転値を、アンドゲート３２に供給することになる。
【００３０】
ナンドゲート３１の出力とマルチプレクサ３４の出力に対して、アンドゲート３２で論理積がとられて、これがＭＳＢ側の出力値ＯM(PAM)となる。
またアンドゲート３６の出力とイクスクルーシブオアゲート３７の出力に対して、オアゲート３８で論理和がとられて、これがＬＳＢ側の出力値ＯL(PAM)となる。
出力値ＯM(PAM)、ＯL(PAM)が、部分加算部ＰＡＭ３による２ビットの出力値である。
【００３１】
このような部分加算部ＰＡＭ３において、入力値ＩM1(PAM)、ＩL1(PAM)、ＩM2(PAM)、ＩL2(PAM)に対して、出力される２ビットの出力値ＯM(PAM)、ＯL(PAM)を、図７に示す。
部分加算部ＰＡＭ３は、入力値ＩM1(PAM)、ＩL1(PAM)と、入力値ＩM2(PAM)、ＩL2(PAM)の加算を行い、かつ加算結果について部分的に剰余をとることでを２ビット値に変換して出力する。
上記のように入力値ＩM1(PAM)、ＩL1(PAM)、及び入力値ＩM2(PAM)、ＩL2(PAM)としては「１１」という値は発生しないため、入力値の関係は図７の９とおりとなる。そして、各場合の加算値を１０進表記で示しているが、加算値が「０」〜「３」のいずれかの場合は、その値が２ビットの出力値ＯM(PAM)、ＯL(PAM)として出力される。また加算値が「４」となる場合は、出力は３ビットの「１００」ではなく、剰余値「１」として、２ビットの出力値ＯM(PAM)、ＯL(PAM)は「０１」として出力される。
【００３２】
以上の構成からわかるように本例では、部分剰余演算部ＰＭ３は、２ビットの入力に対して０，１，２のいずれかの剰余値を算出する。また部分加算部ＰＡＭ３は、２つの部分剰余演算部ＰＭ３からの出力を加算し、さらにそれを２ビット値として出力する。そしてこの部分剰余演算部ＰＭ３と部分加算部ＰＡＭ３が、図３のようにツリー構造とされることで、効率的に剰余演算を行い、回路規模の縮小や処理の高速化を実現するものである。
【００３３】
除数が固定値３の場合を考えると、被除数（被演算値）を２進数で表した場合、第０ビットから２ビットずつとってそれぞれに対し３で割った余りを求め、その結果を加算して再び３で割った余りを求め、という作業を繰り返して最終的に得た値は、元の被除数を直接３で割った余りと同じ値になる。つまり、上記構成により正しく８ビットの被演算値に対する剰余が求められるものである。
また、２ビットに対して３で割った余りは０，１，２のいずれかであり、それらを加算した場合とりうる値は０，１，２，３，４となり、２ビット同士の加算で３ビット目に桁上がりするのは加算結果が４の場合のみである。さらにその場合においては１ビット目、２ビット目は必ず０である為、４を３で割った余り１に一意的に写像させることができる。これが部分加算部ＰＡＭ３において行われることで、演算途中の段階で不要な桁上がり演算の量を効果的に削減できる。
そしてこのような桁上がり演算量の削減が、従来の剰余演算回路に比較して、大幅な構成の簡略化や処理速度の向上に有効である。
実際上、被除数が８ビットの場合では、入力と出力の関係を羅列して論理合成を掛けた場合に比べ、ゲート数を約３分の１にする事ができる。
【００３４】
また上記特許文献１における入力値が１２ビットの場合の回路例を図９に示したが、これと比較するために、本例において入力値を１２ビットとした場合の構成を図８に示す。
この場合も、１２ビットの入力値は、ＭＳＢ側から２ビットづつ、それぞれ部分剰余演算部ＰＭ３（１１−１〜１１−６）で剰余値が算出され、２つの部分剰余演算部ＰＭ３からの出力が、部分加算部ＰＡＭ３（１２−１、１２−２，１２−３）で加算されると共に２ビット値として出力される。
以降、図示するように部分剰余演算部１３−１，１３−２、部分加算部１４、部分剰余演算部１５−１，１５−２、部分加算部１６、部分剰余演算部１７がツリー上に配されることで、順次伝搬される情報量が削減されながら最終的にｍ０，ｍ１として剰余値ｍが得られるものとなる。
この図８の構成と、図９の構成を比較したところ、本例によれば回路面積で約10%〜30%の縮小、遅延時間（処理速度）で約20%〜30%の短縮を図ることができる事が確認された。
【００３５】
以上、本発明の実施の形態について説明してきたが、本発明は多様な変形例が考えられる。剰余演算回路１としては、もちろん、入力値が例示した８ビット、１２ビットの場合以外でも、同様にツリー構造を採ることで本発明の回路を実現できる。
また、除数は３の場合で述べたが、もちろん他の除数の場合も適用できる。
また、上記例では、入力値をＬＳＢ側から２ビットづつのビットグループに分けて、それぞれを部分剰余演算部ＰＭ３で剰余値を得るものとしたが、例えば４ビットづつに分けるなど、他の例も考えられる。なお、その場合、各ビットグループは剰余パターンが同一となるグループとすることが好適である。つまり、除数に応じて、２進数値の各桁の重みは規則性を有するが（例えば除数５であれば、各桁の重みはＬＳＢ側から１，２，４，３のパターンが繰り返される）そのパターン毎を１つのビットグループと回路構成上、最も効率がよい。
【図面の簡単な説明】
【００３６】
【図１】本発明の実施の形態のデータ処理装置の構成例のブロック図である。
【図２】実施の形態の他のデータ処理装置の構成例のブロック図である。
【図３】実施の形態の剰余演算回路のブロック図である。
【図４】実施の形態の部分剰余演算部の回路図である。
【図５】実施の形態の部分剰余演算部の入出力値の説明図である。
【図６】実施の形態の部分加算部の回路図である。
【図７】実施の形態の部分加算部の入出力値の説明図である。
【図８】実施の形態の他の剰余演算回路のブロック図である。
【図９】従来の剰余演算回路のブロック図である。
【符号の説明】
【００３７】
１  剰余演算回路、２，２Ａ  選択処理部、３  ＣＰＵ、４Ａ，４Ｂ  メモリ、５  データ処理部、ＰＭ３，１１−１〜１１−４、１３−１，１３−２、１５，１５−１，１５−２，１７  部分剰余演算部、ＰＡＭ３，１２−１，１２−２，１２−３，１４，１６  部分加算部
【図１】
2005128832.tif 000003
【図２】
2005128832.tif 000004
【図３】
2005128832.tif 000005
【図４】
2005128832.tif 000006
【図５】
2005128832.tif 000007
【図６】
2005128832.tif 000008
【図７】
2005128832.tif 000009
【図８】
2005128832.tif 000010
【図９】
2005128832.tif 000011