(57)【要約】【課題】演算実行時に実際に必要なビットを検出し、必要なビット数分のみの演算を行う演算器およびこの演算器を有する通信装置を提供すること。【解決手段】第１および第２のビット列を入力としてｎビットの第３のビット列を出力するとともに、前記第１および第２のビット列の少なくとも一方の上位ビットに関して特定のビット条件が成立した場合に、前記第３のビット列の上位ｐビットの値が既定値として与えられるような演算に関して、前記第３のビット列の各ビットの値を計算可能な演算回路と、前記特定のビット条件が成り立つか否かを判定するビット条件判定回路と、前記特定のビット条件が成立する場合は、前記演算回路の中で前記上位ｐビットの値の計算が可能な回路部分に対する電源を遮断するスイッチ回路と、前記上位ｐビットの値を前記既定値により設定可能なビット値設定回路と、を備える演算器を提供する。【選択図】図１
2010218391.tif 000002
【特許請求の範囲】
【請求項１】
第１および第２のビット列を入力としてｎ（自然数）ビットの第３のビット列を出力するとともに、前記第１および第２のビット列の少なくとも一方の上位ビットに関して特定のビット条件が成立した場合に、前記第３のビット列の上位ｐ（ｐ＜ｎなる自然数）ビットの値が前記特定のビット条件に応じて決まる既定値として与えられるような演算に関する演算器において、
前記第３のビット列の各ビットの値を計算することが可能な演算回路と、
前記第１および第２のビット列に関して前記特定のビット条件が成り立つか否かを判定し、その判定結果を制御信号として出力するビット条件判定回路と、
前記制御信号が前記特定のビット条件の成立を示している場合は、前記演算回路の中で前記上位ｐビットの値の計算が可能な回路部分に対する電源を遮断し、前記制御信号が前記特定のビット条件の成立を示していない場合は、前記回路部分に電源を供給するスイッチ回路と、
前記制御信号が前記特定のビット条件の成立を示している場合は、前記上位ｐビットの値を前記既定値により設定するビット値設定回路と、
を備えることを特徴とする演算器。
【請求項２】
加算器、乗算器、または２の補数系乗算器であることを特徴とする請求項１に記載の演算器。
【請求項３】
前記演算器はパイプライン型演算器であって、
前記演算回路はパイプライン処理を行う複数段のパイプライン処理部を有し、
前記スイッチ回路は、前記制御信号が前記特定のビット条件の成立を示している場合は、前記電源の遮断をパイプライン処理に合わせて前記各段のパイプライン処理部に対して順次行うことを特徴とする請求項１または２に記載の演算器。
【請求項４】
前記ビット条件判定回路は、前記演算回路において演算が開始される前に、前記判定を行うことを特徴とする請求項１〜３のいずれか１項に記載の演算器。
【請求項５】
請求項１〜４に記載の演算器を有することを特徴とするＯＦＤＭを利用した通信装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、演算器、および演算器を有する通信装置に関するものである。
【背景技術】
【０００２】
通信における物理層の信号処理で消費電力を削減することは重要である。消費電力は動作時の電力と待機時の電力に分類できるが、近年の微細化の影響によりリーク電流が増加し、待機時電力の割合が増加する傾向にある。そのため、リーク電流を削減することは特に重要である。
【０００３】
信号処理での各種演算器の消費電力を低減するために、下記に示すようないくつかの提案がなされている。
【０００４】
特許文献１では、外部信号もしくはインストラクションの一部のフィールドを使って演算の精度を指定することで、実際に必要なビットのみを計算するような演算器を提案している。この演算器を利用すれば、必要なビットのみを演算することができ、不要なビットの演算が削減できるため消費電力の低減が期待できる。
【０００５】
また、特許文献２では、特許文献１の技術内容を演算器以外に拡張するような発明が開示されている。具体的には、マイクロコントローラ内に設けたデータ精度保持部に、実行するデータ処理の精度を設定することにより、演算だけではなくレジスタ転送・メモリ転送などにおいても必要なビット幅だけの処理を行い、合わせて電源供給やクロックの供給も制御する。データ精度保持部に設定する値は、あらかじめコンパイル時に決定する。
【０００６】
特許文献１，２に共通して、ビット幅を指定するための情報が必要となる。特許文献１では、演算のビット幅を指定するためにインストラクションの一部を利用するため、同文献に記載の発明を適用しない場合と比べてインストラクションが長くなる（またはオペランド部などの情報を削る必要がある）という欠点がある。また、特許文献２では、データ精度保持部を操作する命令列をコンパイラが生成するので、データの精度を指定すればするほど使用する命令メモリの量は多くなるという問題があった。
【０００７】
また、特許文献１，２ともに演算の精度をあらかじめ見積もっておかなければならないという制約がある。すなわち、コンパイル時には演算の精度を決めなければならず、この制約により、実行時に有効なビット数がコンパイル時に必要であると見積もったビット数より小さい場合には対応できない。例えば、最大２４ビットの演算を行うことができる演算器に対して、コンパイル時に１６ビット同士の加算で十分であると判断したとする。このとき、特許文献１または２の手法を用いると、１６ビットの演算を行うよう演算器を制御することにより２４−１６＝８ビット分の不要な演算を行わずに済む。しかし、その演算器の入力が例えば１＋２であった場合、実際には２ビット同士の加算で十分であるにも関わらず、演算のビット幅をコンパイル時に決めてしまっているので、結局、不要なビットの演算を行うこととなる。つまり、実行時の本当に有効なビット幅がコンパイル時に見積もったビット数よりも更に小さい場合に対応できなかった。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開平６−２５０８１８号公報
【特許文献２】特開２００５−７８５１８号公報
【非特許文献】
【０００９】
【非特許文献１】D.Brooks and M.Martonosi,“Dynamically Exploiting Narrow Width Operands to Improve Processor Power and Performance”, Dept. of Electrical Engineering, Princeton University.
【発明の概要】
【発明が解決しようとする課題】
【００１０】
本発明は、演算実行時に実際に必要なビットを検出し、必要なビット数分のみの演算を行う演算器およびこの演算器を有する通信装置を提供することを目的とする。
【課題を解決するための手段】
【００１１】
本願発明の一態様によれば、第１および第２のビット列を入力としてｎ（自然数）ビットの第３のビット列を出力するとともに、前記第１および第２のビット列の少なくとも一方の上位ビットに関して特定のビット条件が成立した場合に、前記第３のビット列の上位ｐ（ｐ＜ｎなる自然数）ビットの値が前記特定のビット条件に応じて決まる既定値として与えられるような演算に関する演算器において、前記第３のビット列の各ビットの値を計算することが可能な演算回路と、前記第１および第２のビット列に関して前記特定のビット条件が成り立つか否かを判定し、その判定結果を制御信号として出力するビット条件判定回路と、前記制御信号が前記特定のビット条件の成立を示している場合は、前記演算回路の中で前記上位ｐビットの値の計算が可能な回路部分に対する電源を遮断し、前記制御信号が前記特定のビット条件の成立を示していない場合は、前記回路部分に電源を供給するスイッチ回路と、前記制御信号が前記特定のビット条件の成立を示している場合は、前記上位ｐビットの値を前記既定値により設定するビット値設定回路と、を備えることを特徴とする演算器が提供される。
【発明の効果】
【００１２】
本発明によれば、演算実行時に、入力に応じて実際に演算に必要なビットを検出し、必要なビット数分のみの演算を行うとともに、演算が不要なビットの演算回路の電源を遮断して、消費電力を削減することができる、という効果を奏する。
【図面の簡単な説明】
【００１３】
【図１】図１は、第１の実施の形態にかかるＯＦＤＭ受信処理装置の概略構成を示すブロック図である。
【図２】図２は、ＯＦＤＭ信号処理における時間領域の信号データの分布の一例を示す図である。
【図３】図３は、第１の実施の形態にかかる演算器の一例を示す回路構成図であり、具体的には、符号なし３ビット加算器についての回路構成図である。
【図４】図４は、第２の実施の形態にかかる演算器の一例を示す回路構成図であり、具体的には、符号なし３ビット乗算器についての回路構成図である。
【図５】図５は、第３の実施の形態にかかる演算器の一例を示す回路構成図であり、具体的には、２の補数系４ビット乗算器についての回路構成図である。
【図６】図６は、第４の実施の形態にかかる演算器の一例を示す回路構成図であり、具体的には、２の補数系３２ビット２段パイプライン乗算器についての回路構成図である。
【図７】図７は、第５の実施の形態にかかる演算器の一例を示す回路構成図であり、具体的には、符号なし３ビットと符号なし２ビットの乗算器についての回路構成図である。
【図８】図８は、第６の実施の形態にかかる演算器の一例を示す回路構成図であり、具体的には、符号なし３ビット乗算器についての回路構成図である。
【発明を実施するための形態】
【００１４】
以下に添付図面を参照して、本発明の実施の形態にかかる演算器および通信装置を詳細に説明する。なお、これらの実施の形態により本発明が限定されるものではない。
【００１５】
（第１の実施の形態）
本実施の形態にかかる演算器は、例えば無線通信のＯＦＤＭ（Orthogonal Frequency Division Multiplexing）信号処理に適用することができる。図１は、本実施の形態にかかるＯＦＤＭ受信処理装置の概略構成を示すブロック図であり、図２は、ＯＦＤＭ信号処理における時間領域の信号データの分布の一例を示す図である。
【００１６】
図１に示すように、ＯＦＤＭ受信処理装置は、アナログ部１と、ＡＤＣ（Analog Digital Converter）２と、デジタル部３とを備え、アンテナから受信した信号をアナログ部１で処理し、ＡＤＣ２でデジタル信号に変換した後、デジタル部３で処理する。また、デジタル部３は、ＡＤＣ２からの入力に対して時間領域での信号処理を行う時間領域処理部４と、フーリエ変換を行うＦＦＴ部５と、フーリエ変換後に周波数領域での信号処理を行う周波数領域処理部６とを備える。
【００１７】
図２では、ＯＦＤＭ信号処理における時間領域の信号データの分布を、横軸を振幅の絶対値、縦軸をその度数として示している。時間領域の信号データの分布の特徴はつぎのとおりである。すなわち、信号データの振幅の絶対値が小さいデータが出現する頻度が高く、振幅の絶対値が大きいデータはほとんど現れないが、振幅の絶対値が非常に大きな値もわずかに存在する。振幅の絶対値の小さいデータは、ビット数の小さいデータに相当する。このような分布を持つデータ値を、ダイナミックレンジを維持したまま演算するためには、大きな値を演算できるような演算器が必要となる。しかし、頻繁に演算されるデータは小さい値であるため、演算器入力データの上位ビットはたいてい０や１で固定されている。
【００１８】
そこで、本発明に示すような演算器を時間領域処理部４に適用する。これにより、後述するように、演算器の上位ビットの消費電力（リーク電力）が削減できる。なお、下記では、符号なし加算器や乗算器の例を示すがこれ以外の演算器や複素乗算器のようなより複雑な構成においても同様の方式が適用できる。
【００１９】
このように、時間領域処理部４では、入力データについて図２のような分布が仮定できるので、本発明に示すような演算器を用いることにより効果的に消費電力（リーク電力）を削減できる。なお、図１は受信時の信号処理のブロック図であるが、送信処理に関しても同様である。
【００２０】
図３は、本実施の形態にかかる演算器の一例を示す回路構成図であり、具体的には、符号なし３ビット加算器についての回路構成図である。
【００２１】
図３において、入力はＡ２，Ａ１，Ａ０の３ビット（Ａ）およびＢ２，Ｂ１，Ｂ０の３ビット（Ｂ）、出力はＳ３，Ｓ２，Ｓ１，Ｓ０の４ビット（Ｓ）であり、Ａ＋Ｂ＝Ｓなる加算を行う。ここで、Ａ０，Ｂ０，Ｓ０がそれぞれＬＳＢ（least significant bit：最下位）である。この加算では、Ａ２とＢ２が０であれば必ずＳ３が０であるという性質（特定のビット条件）がある。また、Ａ２，Ａ１，Ｂ２，Ｂ１ が全て０であれば必ずＳ３，Ｓ２が０であるという性質（特定のビット条件）がある。
【００２２】
図３に示すように、この演算器は、Ｓ０を計算可能な演算回路１０と、Ｓ１を計算可能な演算回路１１と、Ｓ２を計算可能な演算回路１２と、Ｓ３を計算可能な演算回路１３と、演算回路１１の電源を遮断するためのスイッチ１４と、演算回路１２の電源を遮断するためのスイッチ１５と、演算回路１３の電源を遮断するためのスイッチ１６と、演算回路１１の出力用セレクタ１７と、演算回路１２の出力用セレクタ１８と、演算回路１３の出力用セレクタ１９と、Ａ０およびＢ０を入力とするＡＮＤ回路２６と、Ａ１およびＢ１を入力とするＯＲ回路２７と、Ａ２およびＢ２を入力とするＯＲ回路２８と、ＯＲ回路２７，２８の各出力を入力とするＯＲ回路２９と、を備えている。
【００２３】
スイッチ１４は、図示しない電源と演算回路１１との間に介在し、ＯＲ回路２９からの制御信号に基づいてオン・オフし、これにより演算回路１１への電源を供給しまたは遮断する。具体的には、スイッチ１４は、ＯＲ回路２９からの制御信号が０である場合には演算回路１１への電源を遮断し、ＯＲ回路２９からの制御信号が１である場合には演算回路１１に電源を供給する。スイッチ１５，１６についても同様である。スイッチ１５は、ＯＲ回路２９からの制御信号が０である場合には演算回路１２への電源を遮断し、ＯＲ回路２９からの制御信号が１である場合には演算回路１２に電源を供給する。また、スイッチ１６は、ＯＲ回路２８からの制御信号が０である場合には演算回路１３への電源を遮断し、ＯＲ回路２８からの制御信号が１である場合には演算回路１３に電源を供給する。
【００２４】
セレクタ１９は、ＯＲ回路２８からの制御信号が０である場合は接地信号である０を選択してＳ３として出力し、ＯＲ回路２８からの制御信号が１である場合は演算回路１３の出力を選択してＳ３として出力する。また、セレクタ１７，１８についても同様である。具体的には、セレクタ１８は、ＯＲ回路２９からの制御信号が０の場合は接地信号である０を選択してＳ２として出力し、ＯＲ回路２９からの制御信号が１の場合は演算回路１２の出力を選択してＳ２として出力する。また、セレクタ１７は、ＯＲ回路２９からの制御信号が０である場合はＡＮＤ回路２６の出力を選択してＳ１として出力し、ＯＲ回路２９からの制御信号が１である場合は演算回路１２の出力を選択してＳ１として出力する。
【００２５】
つぎに、本実施の形態の動作について説明する。まず、Ａ２，Ｂ２がともに０の場合の動作について説明する。まず、ＯＲ回路２８は、Ａ２，Ｂ２ともに０が入力されるので、０を出力する。つづいて、この出力０はＯＲ回路２８に接続されたスイッチ１６に入力される。そして、スイッチ１６は、制御信号として０が入力されたため、演算回路１３に供給する電源を遮断する。また、ＯＲ回路２８の出力はセレクタ１９に入力される。セレクタ１９は、制御信号として０が入力されたので、接地信号０を選択してＳ３として出力する。このように、電源遮断時は、演算回路１３から出力される値が不定となるが、セレクタ１９によりＳ３の値を０に固定する。
【００２６】
一方、Ａ２，Ｂ２がともに０以外のときは、ＯＲ回路２８の出力は１となり、スイッチ１６はオン状態となるので、演算回路１３に電源が供給される。したがって、演算回路１３にてＡ０〜Ａ２，Ｂ０〜Ｂ２を入力として演算が実行される。また、セレクタ１９は、制御信号として１が入力されるので、演算回路１３からの入力を選択してこれをＳ３として出力する。
【００２７】
次に、Ａ２，Ａ１，Ｂ２，Ｂ１がすべて０の場合の動作について説明する。Ｓ３については上記と同様であるので、Ｓ２について説明する。ＯＲ回路２７は、Ａ１，Ｂ１ともに０が入力されるので、０を出力する。つづいて、この出力０はＯＲ回路２９に入力される。また、ＯＲ回路２９には、ＯＲ回路２８から０が入力される。したがって、ＯＲ回路２９は０を出力し、この出力はスイッチ１５に入力される。そして、スイッチ１５は、制御信号として０が入力されたため、演算回路１２に供給する電源を遮断する。また、ＯＲ回路２９の出力はセレクタ１８に入力される。セレクタ１８は、制御信号として０が入力されたので、接地信号０を選択してこれをＳ２として出力する。
【００２８】
なお、Ａ１，Ｂ１がともに０でない場合は、ＯＲ回路２７の出力が１となるので、ＯＲ回路２８の出力（あるいは、Ａ２，Ｂ２の値）によらずにＯＲ回路２９の出力が１となる。したがって、スイッチ１５に入力される制御信号は１となり、演算回路１５に電源が供給され、演算回路１５が演算を実行してＳ２を決定する。
【００２９】
また、Ａ１，Ｂ１がともに０であり、且つ、Ａ２，Ｂ２がともに０でない場合は、ＯＲ回路２９からの制御信号は１である。したがって、スイッチ１５に入力される制御信号は１となり、演算回路１５に電源が供給され、演算回路１５が演算を実行してＳ２を決定する。
【００３０】
以上のように、Ａ２，Ｂ２がともに０のときは必ずＳ３が０となる加算の性質を利用して、Ａ２とＢ２がともに０ときはスイッチ１６を切り、Ｓ３を演算する演算回路１３の電源を遮断する。逆に、Ａ２とＢ２がともに０以外のときのみスイッチ１６を入れ、演算回路１３に電源を供給する。また、Ａ２，Ａ１，Ｂ２，Ｂ１がすべて０のときは必ずＳ２が０となる加算の性質を利用して、Ａ２，Ａ１，Ｂ２，Ｂ１がすべて０のときは、Ｓ２を計算する演算回路１２を動かす必要がないためスイッチ１５を切り、演算回路１２の電源を遮断する。
【００３１】
さらに、Ａ２，Ａ１，Ｂ２，Ｂ１がすべて０の場合には、Ｓ１を計算する演算回路１１についても電源を遮断できる。この場合、Ｓ１はＡ０＋Ｂ０のキャリー（桁上がり）を使えばよいからである。詳細には以下のとおりである。まず、ＯＲ回路２９の出力がスイッチ１４に入力されるように回路構成されているため（図３）、Ａ２，Ａ１，Ｂ２，Ｂ１がすべて０の場合は、スイッチ１４に制御信号０が入力され、演算回路１１の電源が遮断される。一方、ＡＮＤ回路２６にはＡ０，Ｂ０が入力され、その出力値はセレクタ１７に入力される。また、セレクタ１７にはＯＲ回路２９から制御信号０が入力されるので、セレクタ１７はＡＮＤ回路２６の出力値を選択してＳ１として出力する。例えば、Ａ０，Ｂ０の少なくとも一方が０の場合は、ＡＮＤ回路２６の出力値は０であり、セレクタ１７は０を選択してＳ１として出力する。また、Ａ０，Ｂ０がともに１の場合は、ＡＮＤ回路２６の出力値は１であり、セレクタ１７は１を選択してＳ１として出力する。後者の場合のセレクタ１７の選択値である１は、演算回路１１にて計算したものではなく、キャリー計算用の回路であるＡＮＤ回路２６の出力に基づいて決定したものである。このように、演算回路１１の電源遮断時は、セレクタ１７により下位ビットからのキャリーを出力する。
【００３２】
なお、図３では、入力が３ビット同士の加算を例に説明したが、一般にｎ（２以上の自然数）ビット同士の加算についても同様に適用できる。
【００３３】
本実施の形態においては、ビット条件判定回路としてのＯＲ回路２７，２８，２９を用いて、入力データの上位ビットに関する特定のビット条件（Ａ２＝＝Ｂ２＝＝０，またはＡ２＝＝Ａ１＝＝Ｂ２＝＝Ｂ１＝＝０）が成り立つか否かを判定し、その判定結果を示す制御信号が前記特定のビット条件が成り立つことを示している場合は、前記特定のビット条件に応じて、演算回路１１〜１３に供給する電源を遮断する。このとき、ビット値設定回路としてのセレクタ１７〜１９およびＡＮＤ回路２６は、演算回路１１〜１３のうち電源の遮断された回路の替わりに、特定のビット条件に応じて決まる既定値（Ｓ３＝０，Ｓ２＝０など）を対応する出力ビットに設定する。
【００３４】
本実施の形態によれば、ビット条件判定回路を用いて特定のビット条件が成立するか否かを判定することにより、演算実行時に実際に演算に必要なビットを検出し、必要なビット数分のみの演算を行うことができる。
【００３５】
また、本実施の形態によれば、演算器の入力に依存して、実行時に動作不要な演算回路の電源を遮断するので、消費電力を削減できる。
【００３６】
また、静的に演算精度を決定して演算する方法（例えば、特許文献１，２）に比べると、演算精度を指定する分のメモリが削減できると同時に、実行時にしかわからない真に必要な演算精度の情報を利用できる。
【００３７】
また、ＯＦＤＭ通信用デジタル回路においては（図１）、入力値の分布について、振幅の小さな値が比較的多く、振幅の大きな値は相対的に少ない（しかし、入力されないわけではない）という性質（図２）がある。本実施の形態は、入力データの性質に依存して電源遮断を行うことができるので、このようなデータに対しては特に有効である。
【００３８】
なお、本実施の形態では、演算回路１１，１２，１３に関して電源遮断を行ったが、例えばＳ３を計算する演算回路１３のみに電源遮断を適用するといったような変形例もある。ビット数の多い加算器においては、どのビットの計算に関する演算回路に電源遮断を適用するかは自由度がある。
【００３９】
また、図３では、電源遮断のための電源スイッチをスイッチ１４，１５，１６と３つ使用している。スイッチ１４，１５は、入力する制御信号が同じなので、共通化してもよい。
【００４０】
また、さらに電源スイッチを減らすために、演算回路１３のスイッチ１６を外し、演算回路１２のスイッチ１５を演算回路１３の電源遮断用に使うという構成を取ることもできる。その場合、演算回路１３の電源が切れる条件は、Ｂ２＝＝Ｂ１＝＝Ａ２＝＝Ａ１＝＝０となる。ただし、この条件は、Ｂ２＝＝Ａ２＝＝０という条件より厳しい条件であるため、演算回路１３の電源が遮断されにくくなる可能性はある。
【００４１】
なお、上記のような電源遮断を行うかどうかの判定を行う部分（ビット条件判定回路）、およびそれに伴う演算結果出力部分（ビット値設定回路）を、入力に関して成り立つ特定のビット条件に応じて、実行時に動的に構成することもできる。すなわち、異なる特定のビット条件に対して、それらの構成を動的に変更することもできる。このためには、例えばＦＰＧＡ（Field Programmable Gate Array）を用いて演算器を構成すればよい。
【００４２】
また、電源遮断を制御する信号の作り方に関しても図３の限りではない。入力Ａと入力Ｂで電源遮断のために参照するビット数は異なっていてもよい。また、加算器のアルゴリズムにも依存して、さまざまな回路構成がありうる。どのような構成で電源遮断の制御信号を作り出すかについては、入力データの分布に偏りがある場合は、それに応じた構成を取ることが好ましい。
【００４３】
（第２の実施の形態）
図４は、本実施の形態にかかる演算器の一例を示す回路構成図であり、具体的には、符号なし３ビット乗算器についての回路構成図である。
【００４４】
図４において、入力はＣ２，Ｃ１，Ｃ０の３ビット（Ｃ）およびＤ２，Ｄ１，Ｄ０の３ビット（Ｄ）、出力はＴ５，Ｔ４，Ｔ３，Ｔ２，Ｔ１，Ｔ０の６ビット（Ｔ）であり、Ｃ×Ｄ＝Ｔなる乗算を行う。ここで、Ｃ０，Ｄ０，Ｔ０がそれぞれＬＳＢ（least significant bit：最下位）である。この乗算では、Ｃ２とＤ２がともに０であれば必ずＴ５およびＴ４が０となるという性質（特定のビット条件）がある。なお、図４は３ビット同士の乗算の例であるが、一般のｎ（２以上の自然数）ビット同士の乗算についても同様に適用することができる。
【００４５】
図４に示すように、この乗算器は、Ｔ０〜Ｔ３を計算可能な演算回路２０と、Ｔ４，Ｔ５を計算可能な演算回路２１と、演算回路２１の電源を遮断するためのスイッチ２２と、演算回路２１の出力用セレクタ２４と、演算回路２１の出力用セレクタ２５と、Ｃ２およびＤ２を入力とするＯＲ回路２３と、を備えている。
【００４６】
つぎに、本実施の形態の動作について説明する。まず、Ｃ２，Ｄ２がともに０の場合の動作について説明する。まず、ＯＲ回路２３は、Ｃ２，Ｄ２ともに０が入力されるので、０を出力する。つづいて、この出力０はＯＲ回路２３に接続されたスイッチ２２に入力される。そして、スイッチ２２は、制御信号として０が入力されたため、演算回路２１に供給する電源を遮断する。また、ＯＲ回路２３の出力はセレクタ２４，２５にそれぞれ入力される。そして、セレクタ２４は、ＯＲ回路２３から制御信号として０が入力されるので、接地信号０を選択してＴ４として出力し、また、セレクタ２５も、ＯＲ回路２３から制御信号として０が入力されるので、接地信号０を選択してＴ５として出力する。このように、電源遮断時は、演算回路２１から出力される値が不定となるが、セレクタ２４，２５によりＴ４，Ｔ５の値を０に固定する。
【００４７】
一方、Ｃ２，Ｄ２がともに０以外のときは、ＯＲ回路２３の出力は１となり、演算回路２１に電源が供給される。したがって、演算回路２１にてＣ２，Ｄ２および演算回路２０の計算結果を入力として演算が実行される。また、セレクタ２４，２５は、それぞれＯＲ回路２３から制御信号として１が入力されるので、演算回路２１からの入力を選択してＴ４，Ｔ５として出力する。なお、その他の下位の演算についても同様にして説明できる。
【００４８】
このように、Ｃ２，Ｄ２ともに０であればＴ５およびＴ４は必ず０となるという乗算の性質を利用すると、Ｃ２＝＝０且つＤ２＝＝０のとき、Ｔ５およびＴ４を計算する演算回路２１を駆動する必要がないため電源が遮断できる。
【００４９】
本実施の形態においては、ビット条件判定回路としてのＯＲ回路２３を用いて、入力データの上位ビットに関する特定のビット条件（Ｃ２＝＝Ｄ２＝＝０）が成り立つか否かを判定し、その判定結果を示す制御信号が前記特定のビット条件が成り立つことを示している場合は、演算回路２１に供給する電源を遮断する。このとき、ビット値設定回路としてのセレクタ２４，２５は、電源の遮断された演算回路２１の替わりに、特定のビット条件に応じて決まる既定値（Ｔ４＝０，Ｔ５＝０）を対応する出力ビットに設定する。
【００５０】
本実施の形態は、乗算器であることを除けば、第１の実施の形態と同様の効果を奏する。また、本実施の形態の乗算器は、第１の実施の形態と同様に、図１のＯＦＤＭ受信処理装置などに好適に適用することができる。
【００５１】
なお、乗算器の構成によっては、Ｃ２＝＝０且つＤ２＝＝０のとき、Ｔ３を計算する演算回路（Ｔ０〜Ｔ３を計算する演算回路２０のうち、Ｔ３を計算する部分）についても電源遮断が可能である。
【００５２】
（第３の実施の形態）
図５は、本実施の形態にかかる演算器の一例を示す回路構成図であり、具体的には、２の補数系４ビット乗算器についての回路構成図である。
【００５３】
図５において、入力はＥ３，Ｅ２，Ｅ１，Ｅ０の４ビット（Ｅ）およびＦ３，Ｆ２，Ｆ１，Ｆ０の４ビット（Ｆ）、出力はＵ７，Ｕ６，Ｕ５，Ｕ４，Ｕ３，Ｕ２，Ｕ１，Ｕ０の８ビット（Ｕ）であり、２の補数系の乗算を行う。ここで、Ｅ０，Ｆ０，Ｕ０がそれぞれＬＳＢ（least significant bit：最下位）である。この演算では、入力Ｅ，Ｆに関してＥ３＝＝Ｅ２且つＦ３＝＝Ｆ２が成り立つときは、Ｕ７およびＵ６は必ずＵ５と等しいという性質（特定のビット条件）がある。
【００５４】
図５に示すように、この補数系４ビット乗算器は、Ｕ０〜Ｕ５を計算可能な演算回路３０と、Ｕ６，Ｕ７を計算可能な演算回路３１と、演算回路３１の電源を遮断するためのスイッチ３２と、演算回路３１の出力用セレクタ３６と、演算回路３１の出力用セレクタ３７と、Ｅ２およびＥ３を入力とするＸＯＲ回路３３と、Ｆ２およびＦ３を入力とするＸＯＲ回路３４と、ＸＯＲ回路３３，３４の各出力を入力とするＯＲ回路３５と、を備えている。
【００５５】
つぎに、本実施の形態の動作について説明する。特に、Ｅ３＝＝Ｅ２且つＦ３＝＝Ｆ２の場合の動作について説明する。まず、ＸＯＲ回路３３は、Ｅ２，Ｅ３が等しいので、０を出力する。また、ＸＯＲ回路３４も同様に０を出力する。そして、ＸＯＲ回路３３，３４の各出力はＯＲ回路３５に入力され、ＯＲ回路３５は０を出力する。つづいて、この出力０はＯＲ回路３５に接続されたスイッチ３２に入力される。そして、スイッチ３２は、制御信号として０が入力されたため、演算回路３１に供給する電源を遮断する。また、ＯＲ回路３５の出力はセレクタ３６，３７にそれぞれ入力される。そして、セレクタ３６は、ＯＲ回路３５から制御信号として０が入力されるので、演算回路３０にて計算されたＵ５を選択してこれをＵ６として出力する。また、セレクタ３７も、ＯＲ回路３５から制御信号として０が入力されるので、演算回路３０にて計算されたＵ５を選択してこれをＵ７として出力する。なお、上記特定のビット条件が成り立たない場合は、ＯＲ回路３５の出力が１となるので、演算回路３１に電源が供給される。したがって、セレクタ３６，３７は、それぞれ、演算回路３１にて計算された値を選択してＵ６，Ｕ７として出力する。なお、その他の場合についても同様にして説明することができる。
【００５６】
このように、Ｅ３＝＝Ｅ２且つＦ３＝＝Ｆ２のとき、Ｕ７およびＵ６を計算するための演算回路３１を駆動する必要はなく、電源が遮断できる。
【００５７】
本実施の形態においては、ビット条件判定回路としてのＸＯＲ回路３３，３４およびＯＲ回路３５を用いて、入力データの上位ビットに関する特定のビット条件（Ｅ３＝＝Ｅ２且つＦ３＝＝Ｆ２）が成り立つか否かを判定し、その判定結果を示す制御信号が前記特定のビット条件が成り立つことを示している場合は、演算回路３１に供給する電源を遮断する。このとき、ビット値設定回路としてのセレクタ３６，３７は、電源の遮断された演算回路３１の替わりに、特定のビット条件に応じて決まる既定値（Ｕ５）を対応する出力ビットに設定する。
【００５８】
なお、本実施の形態における特定のビット条件（Ｅ３＝＝Ｅ２且つＦ３＝＝Ｆ２）は、第１および第２の実施の形態における特定のビット条件と異なり、上位ビットが０になるものではないが、演算に必要なビット数が実質的に低減する条件である。
【００５９】
本実施の形態によれば、２の補数系の乗算器について、第１の実施の形態と同様の効果を得ることができる。また、本実施の形態は、第１の実施の形態と同様に、図１のＯＦＤＭ受信処理装置などに好適に適用することができる。また、本実施の形態は、４ビット以外の計算にも容易に拡張することができる。
【００６０】
（第４の実施の形態）
図６は、本実施の形態にかかる演算器の一例を示す回路構成図であり、具体的には、２の補数系３２ビット２段パイプライン乗算器についての回路構成図である。
【００６１】
図６において、入力はＧ３１〜Ｇ０の３２ビット（Ｇ）およびＨ３１〜Ｈ０の３２ビット（Ｈ）、出力はＶ６３〜Ｖ０の６４ビット（Ｖ）である。ここで、Ｇ０，Ｈ０，Ｖ０がそれぞれＬＳＢ（least significant bit：最下位）である。パイプライン乗算器であるため、入力Ｇ，Ｈを与えた時刻と出力Ｖが確定する時刻は異なる。第３の実施の形態と同様に、この演算では、入力Ｇ，Ｈに関してＧ３１＝＝Ｇ３０且つＨ３１＝＝Ｈ３０が成り立つときは、Ｖ６３およびＶ６２は必ずＶ６１と等しいという性質（特定のビット条件）がある。本実施の形態では、これを利用して、Ｇ３１＝＝Ｇ３０且つＨ３１＝＝Ｈ３０のとき、Ｖ６３，Ｖ６２に対して電源遮断回路を行うような乗算器の構成である。
【００６２】
図６に示すように、この乗算器は、Ｖ０〜Ｖ６１を計算するためのパイプライン１段目の演算回路４０（１段目のパイプライン処理部）と、Ｖ０〜Ｖ６１を計算するためのパイプライン２段目の演算回路４１と（２段目のパイプライン処理部）、Ｖ６２，Ｖ６３を計算するためのパイプライン１段目の演算回路４２（１段目のパイプライン処理部）と、Ｖ６２，６３を計算するためのパイプライン２段目の演算回路４３（２段目のパイプライン処理部）と、演算回路４２の電源を遮断するためのスイッチ４４と、演算回路４３の電源を遮断するためのスイッチ４５と、演算回路４０，４１間に介在するパイプラインレジスタ４６と、演算回路４２，４３間に介在するパイプラインレジスタ４７と、制御信号用のパイプラインレジスタ４８と、演算回路４３の出力用セレクタ８３と、演算回路４３の出力用セレクタ８４と、Ｇ３０およびＧ３１を入力とするＸＯＲ回路８０と、Ｈ３０およびＨ３１を入力とするＸＯＲ回路８１と、ＸＯＲ回路８０，８１の各出力を入力とするＯＲ回路８２と、を備えている。
【００６３】
なお、スイッチ４４は、図示していないがパイプラインレジスタ４７の電源スイッチも兼ねている。すなわち、スイッチ４４により、演算回路４２およびパイプラインレジスタ４７に電源が供され、または演算回路４２およびパイプラインレジスタ４７の電源が遮断される。この構成により、パイプラインレジスタ４７用に電源スイッチを設ける必要がないので、電源スイッチ数を低減できる。
【００６４】
つぎに、本実施の形態の動作について説明する。特に、Ｇ３１＝＝Ｇ３０且つＨ３１＝＝Ｈ３０の場合の動作について説明する。まず、演算回路４０にはＧ０〜Ｇ３１およびＨ０〜Ｈ３１が入力され、演算回路４０はパイプライン１段目の計算を行う。次に、演算回路４０の出力はパイプラインレジスタ４６に一旦格納された後、演算回路４１に渡される。演算回路４１では、パイプラインレジスタ４６からの入力に基づいて演算を行い、Ｖ０〜Ｖ６１の計算結果を出力する。
【００６５】
一方、ＸＯＲ回路８０は、Ｇ３０，Ｇ３１が等しいので、０を出力する。また、ＸＯＲ回路８１も同様に０を出力する。そして、ＸＯＲ回路８０，８１の各出力はＯＲ回路８２に入力され、ＯＲ回路８２は０を出力する。つづいて、この出力０はＯＲ回路８２に接続されたスイッチ４４に入力される。スイッチ４４は、制御信号として０が入力されたため、演算回路４２およびパイプラインレジスタ４７に供給する電源を遮断する。
【００６６】
また、ＯＲ回路８２から出力された制御信号はパイプラインレジスタ４８に一旦格納され、その後、パイプラインレジスタ４８から出力される。つづいて、パイプラインレジスタ４８から出力された制御信号は、スイッチ４５に入力される。スイッチ４５は、制御信号として０が入力されたため、演算回路４３に供給する電源を遮断する。
【００６７】
また、パイプラインレジスタ４８から出力された制御信号は、セレクタ８３，８４にそれぞれ入力される。セレクタ８３は、制御信号として０が入力されたため、演算回路４１にて計算されたＶ６１を選択してこれをＶ６２として出力する。また、セレクタ８４も、制御信号として０が入力されたため、演算回路４１にて計算されたＶ６１を選択してこれをＶ６３として出力する。
【００６８】
このように、本実施の形態では、電源遮断の範囲もパイプラインに合わせて動かしている。このために、演算回路４２およびパイプラインレジスタ４７を電源遮断するための制御信号（ＯＲ回路８２の出力信号）を、パイプラインレジスタ４８に格納し、次のサイクルでは演算回路４３を電源遮断するための制御信号として使用する。
【００６９】
なお、上記特定のビット条件が成り立たない場合は、ＯＲ回路８２の出力が１となるので、演算回路４２およびパイプラインレジスタ４７に電源が供給される。そのため、演算回路４２にてＧ０〜Ｇ３１およびＨ０〜Ｈ３１に基づいて演算がなされ、その演算結果はパイプラインレジスタ４７にて格納された後、演算回路４３に渡される。一方で、ＯＲ回路８２から出力された制御信号は、上記と同様にパイプラインレジスタ４８に格納された後、スイッチ４５に入力される。スイッチ４５には、制御信号として１が入力されるので、演算回路４３には電源が供給される。演算回路４３は演算回路４２から渡された結果に基づいて演算を行い、演算結果をセレクタ８３，８４に出力する。セレクタ８３は、パイプラインレジスタ４８から制御信号として１が入力されたため、演算回路４３の演算結果を選択してこれをＶ６２として出力する。また、セレクタ８４は、パイプラインレジスタ４８から制御信号として１が入力されたため、演算回路４３の演算結果を選択してこれをＶ６３として出力する。
【００７０】
本実施の形態によれば、パイプライン型演算器において、第１の実施の形態と同様の効果を得ることができる。また、本実施の形態は、第１の実施の形態と同様に、図１のＯＦＤＭ受信処理装置などに好適に適用することができる。なお、複数段パイプライン乗算器への拡張も容易である。
【００７１】
（第５の実施の形態）
第１〜第４の実施の形態では、入力データのビット幅が同じものについてのみ説明したが、ビット幅が異なっていてもよい。
【００７２】
図７は、本実施の形態にかかる演算器の一例を示す回路構成図であり、具体的には、符号なし３ビットと符号なし２ビットの乗算器についての回路構成図である。
【００７３】
図７において、入力はＩ２，Ｉ１，Ｉ０の３ビット（Ｉ）およびＪ１，Ｊ０の２ビット（Ｊ）、出力はＷ４，Ｗ３，Ｗ２，Ｗ１，Ｗ０の５ビット（Ｗ）であり、Ｉ×Ｊ＝Ｗなる乗算を行う。ここで、Ｉ０，Ｊ０，Ｗ０がそれぞれＬＳＢ（least significant bit：最下位）である。この乗算では、Ｊ１が０であれば必ずＷ４およびＷ３が０となるという性質（特定のビット条件）がある。
【００７４】
図７に示すように、この乗算器は、Ｗ０〜Ｗ２を計算可能な演算回路５０と、Ｗ３，Ｗ４を計算可能な演算回路５１と、演算回路５１の電源を遮断するためのスイッチ５２と、演算回路５１の出力用セレクタ８５と、演算回路５１の出力用セレクタ８６と、を備えている。
【００７５】
つぎに、本実施の形態の動作について説明する。特に、Ｊ１が０の場合の動作について説明する。本実施の形態においては、Ｊ１の値そのものが制御信号としてスイッチ５２に入力されるように構成されているため（図７）、Ｊ１＝＝０の場合、スイッチ５２は、演算回路５１に供給する電源を遮断する。また、制御信号は、セレクタ８５，８６にそれぞれ入力される。そして、セレクタ８５は、制御信号が０なので、接地信号０を選択してＷ３として出力する。また、セレクタ８６も、制御信号が０なので、接地信号０を選択してＷ４として出力する。
【００７６】
一方、Ｊ１が０でないときは、スイッチ５２に入力される制御信号は１となり、演算回路５１に電源が供給される。したがって、演算回路２１にてＷ３，Ｗ４の演算が実行される。また、セレクタ８５，８６は、それぞれ制御信号１が入力されるので、演算回路５１からの入力を選択してＷ３，Ｗ４として出力する。
【００７７】
このように、Ｊ１が０であればＷ４およびＷ３は必ず０となるという乗算の性質を利用すると、Ｊ１＝＝０のとき、Ｗ３およびＷ４を計算する演算回路５１を駆動する必要がないため電源が遮断できる。
【００７８】
本実施の形態においては、ビット条件判定回路はＪ１を利用する信号値を用い、入力データの上位ビットに関する特定のビット条件（Ｊ１＝＝０）が成り立つか否かを判定し、その判定結果を示す制御信号が前記特定のビット条件が成り立つことを示している場合は、演算回路５１に供給する電源を遮断する。このとき、ビット値設定回路としてのセレクタ８５，８６は、電源の遮断された演算回路５１の替わりに、特定のビット条件に応じて決まる既定値（Ｗ３＝＝０，Ｗ４＝＝０）を対応する出力ビットに設定する。
【００７９】
本実施の形態は、第１の実施の形態と同様の効果を奏する。また、本実施の形態の乗算器は、第１の実施の形態と同様に、図１のＯＦＤＭ受信処理装置などに好適に適用することができる。
【００８０】
（第６の実施の形態）
第１〜第５の実施の形態では、電源を遮断してもよいかどうかの判定を演算回路と並列に実行していたが、その判定を演算回路の手前で事前に行うこともできる。本実施の形態では、第２の実施の形態で説明した符号なし３ビット乗算器を例として、電源遮断の判定を事前に行う構成について説明する。
【００８１】
図８は、本実施の形態にかかる演算器の一例を示す回路構成図であり、具体的には、符号なし３ビット乗算器についての回路構成図である。なお、図８において、図４と同一の構成要素には同一の符号を付してその詳細な説明を省略する。図８において、レジスタ６０、６１は演算器の入力（Ｃ，Ｄ）をラッチするレジスタである。また、レジスタ６２はＯＲ回路８７の後段に設けられ、電源遮断を行うかどうかを判定した結果である制御信号を格納するレジスタである。図８では、演算を行う例えば１クロック前に電源遮断を行うかどうかを判定し、その結果を次のクロックで使用して電源遮断を行う例である。
【００８２】
本実施の形態によれば、事前に電源を遮断すべきか否かを判定できるので、より早い段階で電源を遮断でき、より一層の消費電力削減の効果がある。なお、本実施の形態のその他の効果は第２の実施の形態と同様である。また、本実施の形態の乗算器は、第１の実施の形態と同様に、図１のＯＦＤＭ受信処理装置などに好適に適用することができる。
【００８３】
なお、図８では１クロック前に判定を行っているが、２クロック以上前の段階で判定することもできる。また、電源の遮断・復帰に複数のクロックが必要な場合には、数クロック前から電源を遮断しても良いかまたは復帰すべきかを判断しておき、電源の遮断・復帰を行うという方法を取ることもできる。
【００８４】
ところで、非特許文献１では、動的に演算器の入力上位ビットが０であることを判断して、演算する必要のないビットに関してはクロックを供給しないようなプロセッサが提案されている。すなわち、演算器の入力データに応じて動的にクロックの供給を止めるものである。この方法であれば、特許文献１，２の方法とは異なり、コンパイル時に演算の精度を決めなくてもよい。
【００８５】
しかし、例えばＣＭＯＳ回路においてクロックゲーティングだけでは、この消費電力の低減効果は限定的である。これは、クロックゲーティングによる消費電力低減は動作時電力に対して効果があるからである。例えば、演算器の入力の上位ビットが常に０であったとする。このとき非特許文献１に記載されている方法を使うと、その上位ビットに対応する演算回路へのクロック供給を止めることができ、動作時電力を削減できる。しかし、クロックを停止しなかったとしてもその回路の入力は０に固定されているので、もともと動作時電力は少ない。動作時電力は、回路（ゲート）の出力値（ひいては入力値）が変化する場合に、消費される電力だからである。非特許文献１では、ＣＭＯＳ回路ではなくダイナミック回路を用いた演算器での消費電力削減効果が示されているが、ＣＭＯＳ回路にこの技術を適用した場合その効果は小さいと考えられる。
【００８６】
これに対して、本発明では、入力データに応じて動的に電源遮断を行うことにより、リーク電流を削減する。そして、リーク電流は入力データの上位ビットが常時０であったとしても消費されてしまう電力であるため、本発明における削減効果はきわめて大きい。
【００８７】
また、非特許文献１では、一般的なプロセッサ内の演算器ブロックに関する低消費電力化を述べているが、一般的なプロセッサとすると入力データには何の仮定もできない。従って、どの範囲の上位ビットが０であることを検出して演算を停止するのが効果的かは判断できない。しかし、本発明で示したように、ＯＦＤＭ用途であれば入力データの分布に関してある程度仮定ができるので、その分、簡素な回路で実現できる可能性がある。
【符号の説明】
【００８８】
１  アナログ部、２  ＡＤＣ、３  デジタル部、４  時間領域処理部、５  ＦＦＴ部
６  周波数領域処理部、１０〜１３，２０，２１  演算回路
１４〜１６，２２  スイッチ  １７〜１９，２４，２５，３６，３７  セレクタ
２６  ＡＮＤ回路、２３，２７〜２９，３５，８２  ＯＲ回路
３０，３１，４３  演算回路、３２，４４，４５，５２  スイッチ
３３，３４，８０，８１  ＸＯＲ回路，４０〜４２，５０，５１  演算回路
８３，８４  セレクタ、４６〜４８  パイプラインレジスタ、６０〜６２  レジスタ
【図１】
2010218391.tif 000003
【図２】
2010218391.tif 000004
【図３】
2010218391.tif 000005
【図４】
2010218391.tif 000006
【図５】
2010218391.tif 000007
【図６】
2010218391.tif 000008
【図７】
2010218391.tif 000009
【図８】
2010218391.tif 000010