(57)【要約】【課題】ピーク電力を抑えることができる演算装置を提供する。【解決手段】複数の演算処理部１０ａ１，１０ａ２，・・・，１０ａｍは、互いに異なる処理を行う。複数の演算器２０ａ１，２０ａ２，・・・，２０ａｎは、同一の演算を行う。制御部３０は、処理すべき演算の数と等しい数のデータが、予め設定された処理期間に処理され、かつ、処理期間を分割した複数の分割期間に動作する演算器の数が平均化されるように、複数の分割期間に動作する演算器の数を、処理期間の長さと演算の数とに基づいて制御する。【選択図】図１
2015097021.tif 000002
【特許請求の範囲】
【請求項１】
互いに異なる処理を行う複数の演算処理部と、
同一の演算を行う複数の演算器と、
処理すべき演算の数と等しい数のデータが、予め設定された処理期間に処理され、かつ、前記処理期間を分割した複数の分割期間に動作する前記演算器の数が平均化されるように、前記複数の分割期間に動作する前記演算器の数を、前記処理期間の長さと前記演算の数とに基づいて制御する制御部と、
を有する演算装置。
【請求項２】
前記制御部は、前記処理期間の長さと前記演算の数とが外部から設定されるレジスタを有する請求項１に記載の演算装置。
【請求項３】
前記制御部は、前記複数の分割期間に動作する前記演算器の数を、前記複数の演算処理部から出力されるデータ有効信号から検出された前記処理期間の長さと前記演算の数とに基づいて制御する請求項１に記載の演算装置。
【請求項４】
前記処理期間の長さは、前記複数の演算処理部から出力されるデータ有効信号の２つの有効状態の間隔から検出された時間であり、
前記演算の数は、前記データ有効信号の有効状態の数から検出された数である請求項３に記載の演算装置。
【請求項５】
前記複数の演算処理部と前記複数の演算器との間のデータの転送を制御し、前記複数の演算処理部から出力されるデータ有効信号から前記処理期間の長さと前記演算の数とを検出する調停部をさらに有する請求項３に記載の演算装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、演算装置に関する。
【背景技術】
【０００２】
ＬＳＩ設計において、回路の増大を抑えるために、複数の処理から共通の処理を抽出して、その共通の処理を行う回路を共有するリソースシェアリングという手法が一般的に用いられている。この手法では、例えば１つの処理の中に２回の乗算が含まれる場合、それぞれの乗算の実行タイミングをずらすことにより１つの乗算器（リソース）を共有することができる。この処理の実行タイミングの調整はスケジューリングと呼ばれる。
【０００３】
このようなリソースシェアリングの手法において消費電力の低減が望まれている。特許文献１では、スケジューリングにより排他的に動作する処理部のリソースを共有化し、動作しない処理部のクロックを止めることで消費電力を低減する手法が提案されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００８−２８２３６０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
実際の回路では、１つの処理に要する期間がユースケース（動作状況）毎に変わることがある。また、低速の処理を行う場合にはピーク電力を抑えたいという要望がある。しかし、特許文献１の手法では、想定されるユースケース内で処理が最速となるスケジューリングに合わせて動作が固定される。このため、ユースケース毎に処理速度が変わる場合でも、消費電力が最速動作時のピーク電力と同じ電力になる問題がある。
【０００６】
図１３は、処理が最速となるスケジューリングの例を示している。図１３（ａ）、図１３（ｂ）の横軸は時間を示し、図１３（ａ）、図１３（ｂ）の縦軸は電力を示している。図１３（ａ）、図１３（ｂ）における時間の単位は、回路に供給されるクロックの周期に対応するサイクルである。図１３（ａ）、図１３（ｂ）は、４個の乗算器を有する演算装置のスケジューリングの例を示している。
【０００７】
図１３（ａ）は、２サイクルで８回の乗算を行うスケジューリングの例を示している。４個の乗算器が並列に動作する１サイクルの動作が２回繰り返されることにより、２サイクルで８回の乗算が行われる。図１３（ａ）では、８回の乗算が行われる２サイクルが繰り返される様子が示されている。図１３（ａ）では、ピーク電力は、演算装置が有する全ての乗算器が並列に動作するときの電力（Ｐｍａｘ）である。
【０００８】
図１３（ｂ）は、４サイクルで８回の乗算を行うスケジューリングの例を示している。処理が最速となるようにスケジューリングが行われるため、２サイクルで４個の乗算器が並列に動作する。これにより、２サイクルで８回の乗算が行われる。４個の乗算器が動作する２サイクルの期間が経過した後、次の２サイクルで４個の乗算器は停止する。図１３（ｂ）では、４個の乗算器が並列に動作することにより８回の乗算が行われる２サイクルと、４個の乗算器が停止する２サイクルとが交互に現れる様子が示されている。図１３（ｂ）では、ピーク電力は、演算装置が有する全ての乗算器が並列に動作するときの電力（Ｐｍａｘ）である。
【０００９】
上記のように、所定回数の演算を行うサイクル数が変化した場合でも、ピーク電力は、演算装置が有する全ての乗算器が並列に動作するときの電力となる。このため、ピーク電力を抑えることができない。
【００１０】
本発明は、上述した課題に鑑みてなされたものであって、ピーク電力を抑えることができる演算装置を提供することを目的とする。
【課題を解決するための手段】
【００１１】
本発明は、上記の課題を解決するためになされたもので、互いに異なる処理を行う複数の演算処理部と、同一の演算を行う複数の演算器と、処理すべき演算の数と等しい数のデータが、予め設定された処理期間に処理され、かつ、前記処理期間を分割した複数の分割期間に動作する前記演算器の数が平均化されるように、前記複数の分割期間に動作する前記演算器の数を、前記処理期間の長さと前記演算の数とに基づいて制御する制御部と、を有する演算装置である。
【００１２】
また、本発明の演算装置において、前記制御部は、前記処理期間の長さと前記演算の数とが外部から設定されるレジスタを有する。
【００１３】
また、本発明の演算装置において、前記制御部は、前記複数の分割期間に動作する前記演算器の数を、前記複数の演算処理部から出力されるデータ有効信号から検出された前記処理期間の長さと前記演算の数とに基づいて制御する。
【００１４】
また、本発明の演算装置において、前記処理期間の長さは、前記複数の演算処理部から出力されるデータ有効信号の２つの有効状態の間隔から検出された時間であり、前記演算の数は、前記データ有効信号の有効状態の数から検出された数である。
【００１５】
また、本発明の演算装置は、前記複数の演算処理部と前記複数の演算器との間のデータの転送を制御し、前記複数の演算処理部から出力されるデータ有効信号から前記処理期間の長さと前記演算の数とを検出する調停部をさらに有する。
【発明の効果】
【００１６】
本発明によれば、予め設定された処理期間に、処理すべき演算の数と等しい数のデータが処理され、かつ、処理期間を分割した複数の分割期間に動作する演算器の数が平均化されるように、複数の分割期間に動作する演算器の数を、処理期間の長さと演算の数とに基づいて制御することによって、ピーク電力を抑えることができる。
【図面の簡単な説明】
【００１７】
【図１】本発明の第１の実施形態による演算装置の構成を示すブロック図である。
【図２】本発明の第１の実施形態による演算装置が有する制御部が行うスケジューリングの例を示す参考図である。
【図３】本発明の第１の実施形態による演算装置が有する制御部が行うスケジューリングの例を示すタイミングチャートである。
【図４】本発明の第１の実施形態による演算装置が有する制御部が行うスケジューリングの例を示すタイミングチャートである。
【図５】本発明の第２の実施形態による演算装置の構成を示すブロック図である。
【図６】本発明の第２の実施形態による演算装置が有する制御部の動作の手順を示すフローチャートである。
【図７】本発明の第２の実施形態による演算装置が有する制御部の動作の手順を示すフローチャートである。
【図８】本発明の第２の実施形態による演算装置が有する制御部が行うスケジューリングの例を示す参考図である。
【図９】本発明の第２の実施形態による演算装置が有する制御部の動作の手順を示すフローチャートである。
【図１０】本発明の第２の実施形態による演算装置が有する制御部の動作の手順を示すフローチャートである。
【図１１】本発明の第２の実施形態による演算装置が有する制御部が行うスケジューリングの例を示す参考図である。
【図１２】本発明の第２の実施形態による演算装置が有する制御部が行うスケジューリングの例を示す参考図である。
【図１３】処理が最速となるスケジューリングの例を示す参考図である。
【発明を実施するための形態】
【００１８】
以下、図面を参照し、本発明の実施形態を説明する。以下の実施形態では、リソースシェアリングの手法が用いられる。すなわち、複数の処理のうち、共通する同じ演算が抽出され、共通処理として実装される。また、複数の処理から共通処理を除いた、処理毎に異なる処理が固有処理として実装される。共通処理は、加算、減算、乗算、除算、比較演算、論理演算などである。固有処理は、条件判断処理、代入処理などである。共通処理と固有処理とによって、画像処理などの所定の処理が実現される。
【００１９】
＜第１の実施形態＞
まず、本発明の第１の実施形態を説明する。図１は、本実施形態による演算装置の構成を示している。図１に示す演算装置は、固有処理部１０と、共通処理部２０と、制御部３０とを有する。
【００２０】
固有処理部１０は、互いに異なる処理（条件判断処理、代入処理など）を行う複数の演算処理部１０ａ１，１０ａ２，・・・１０ａｍ（ｍは２以上の整数）を有する。共通処理部２０は、同一の演算（加算、減算、乗算、除算など）を行う複数の演算器２０ａ１，２０ａ２，・・・２０ａｎ（ｎは２以上の整数）を有する。演算処理部１０ａ１，１０ａ２，・・・１０ａｍは、自身の処理の中で、共通処理である演算を行う必要があるとき、演算器２０ａ１，２０ａ２，・・・２０ａｎにデータを出力し、演算器２０ａ１，２０ａ２，・・・２０ａｎから演算結果を受け取る。
【００２１】
制御部３０は、処理すべき演算の数と等しい数のデータが、予め設定された処理期間に処理され、かつ、処理期間を分割した複数の分割期間に動作する演算器の数が平均化されるように、複数の分割期間に動作する演算器の数を、処理期間の長さ（以下、処理速度と記載）と演算の数とに基づいて制御する。処理期間は複数の分割期間を含む。分割期間は、例えば回路に供給されるクロックの周期に対応する１サイクルに基づく期間である。１つの分割期間は、例えば１サイクルと等しい。１つの分割期間が複数サイクルと等しくてもよい。
【００２２】
図２は、制御部３０が行うスケジューリングの例を示している。図２の横軸は時間を示し、図２の縦軸は電力を示している。図２における時間の単位はサイクルである。図２は、４サイクルで８回の乗算を行うスケジューリングの例を示している。
【００２３】
予め設定された処理期間（本実施形態では２サイクル以上の期間）である４サイクルが、例えば１サイクル毎の４つの分割期間に分割される。制御部３０は、それぞれの分割期間に動作する演算器の数（それぞれの分割期間で演算に使用する演算器の数）が平均化されるように、複数の分割期間に動作する演算器の数を制御する。図２では、４つの分割期間（１サイクル）のそれぞれで２個の演算器が並列に動作するようにスケジューリングが行われる。どのサイクルでも２個の演算器が並列に動作するため、４サイクルで８回の乗算が行われる。
【００２４】
本実施形態では、制御部３０は、例えば処理すべき演算の数を、処理期間の長さ（所定の数の演算を行う速さに相当）である処理速度で割った数を算出する。算出された数が、分割期間に動作する演算器の数である。図２に示す例では、処理すべき演算の数が８であり、処理速度が４（サイクル）であるため、８を４で割った２が、１サイクルで動作する演算器の数である。また、制御部３０は、処理期間の長さ（処理速度）と、処理すべき演算の数とが外部から設定されるレジスタを有する。
【００２５】
制御部３０は、予め設定された処理期間の半分よりも長い期間において１個以上の演算器が動作するように、複数の分割期間に動作する演算器の数を制御してもよい。言い換えると、制御部３０は、複数の演算器の全てが停止する期間が、予め設定された処理期間の半分よりも短くなるように、複数の分割期間に動作する演算器の数を制御してもよい。制御部３０は、予め設定された処理期間のうち、複数の演算器の全てが停止する期間（処理期間の半分よりも短い期間）を除く期間において、その期間を分割した複数の分割期間に動作する演算器の数が平均化されるように、複数の分割期間に動作する演算器の数を制御してもよい。
【００２６】
図３は、制御部３０が行うスケジューリングの例を示している。図３には、それぞれの回路に供給されるクロック（ＣＬＫ）と、演算処理部１０ａ１，１０ａ２，１０ａ３，１０ａ４，１０ａ５のそれぞれから出力される有効信号（データ有効信号）と、演算処理部１０ａ１，１０ａ２，１０ａ３，１０ａ４，１０ａ５のそれぞれから出力されるデータとが示されている。また、図３には、制御部３０が決定した、動作する演算器の数が示されている。また、図３には、演算器２０ａ１，２０ａ２のそれぞれに入力されるクロックイネーブル（ＣＬＫＥＮ１，ＣＬＫＥＮ２）と、演算器２０ａ１，２０ａ２のそれぞれから出力されるデータとが示されている。図３の右方向が時間の進む方向である。
【００２７】
有効信号は矩形波である。有効信号の電圧がＨｉｇｈレベルである場合、有効信号は有効状態である。有効信号の電圧がＬｏｗレベルである場合、有効信号は無効状態である（有効状態ではない）。１つの有効状態から次の有効状態までの期間が、予め設定された処理期間である。複数の異なるデータに対応する複数の有効信号が存在する場合、それぞれの有効信号の有効状態から次の有効状態までの期間のうち最小の期間が処理期間である。この処理期間に、演算処理部１０ａ１，１０ａ２，１０ａ３，１０ａ４，１０ａ５のそれぞれから演算対象のデータ（図３中のＡ１，Ｂ１など）が出力される。
【００２８】
クロックイネーブルは矩形波である。クロックイネーブルの電圧がＨｉｇｈレベルである場合、そのクロックイネーブルが入力される演算器が動作する。クロックイネーブルの電圧がＬｏｗレベルである場合、そのクロックイネーブルが入力される演算器が停止する。
【００２９】
図３は、３サイクルで５回の演算（図３に示す例では乗算）を行う例を示している。処理速度（＝３）の情報と、処理すべき演算の数（＝５）の情報とは、ＣＰＵ等の外部の構成によって予め制御部３０内のレジスタに格納されている。制御部３０はレジスタからこれらの情報を読み出し、読み出した情報に基づいて、それぞれのサイクルで動作する演算器の数を決定する。
【００３０】
前述したように、制御部３０は、処理すべき演算の数を処理速度で割った数を算出する。５を３で割った商は１．６６・・・である。小数は切り上げとなる（小数が切り捨てられ、整数が１増える）。したがって、制御部３０は、２個の演算器２０ａ１，２０ａ２が並列に動作するようにスケジューリングを制御する。
【００３１】
２個の演算器２０ａ１，２０ａ２が動作する場合、演算処理部１０ａ１，１０ａ２，１０ａ３から出力されたデータが演算器２０ａ１に入力され、演算処理部１０ａ４，１０ａ５から出力されたデータが演算器２０ａ２に入力される。また、演算器２０ａ１から出力された演算結果が演算処理部１０ａ１，１０ａ２，１０ａ３に入力され、演算器２０ａ２から出力された演算結果が演算処理部１０ａ４，１０ａ５に入力される。例えば制御部３０が回路の入力と出力との切替を制御する機能を有している場合、演算処理部１０ａ１，１０ａ２，１０ａ３，１０ａ４，１０ａ５と演算器２０ａ１，２０ａ２との対応関係は、制御部３０によって制御される。また、回路の入力と出力の切替を制御するスイッチ（セレクタ）が設けられている場合に、演算処理部１０ａ１，１０ａ２，１０ａ３，１０ａ４，１０ａ５と演算器２０ａ１，２０ａ２との対応関係は、スイッチによって制御される。
【００３２】
制御部３０は、３サイクルの処理期間の最初の２サイクルで、演算器２０ａ１，２０ａ２に出力されるクロックイネーブルをＨｉｇｈレベルに設定する。つまり、制御部３０は、３サイクルの処理期間の最初の２サイクルで演算器２０ａ１，２０ａ２を動作させる。この結果、最初の２サイクルで４回の乗算が行われる。
【００３３】
１サイクル目では、演算処理部１０ａ１から出力されたデータ（Ａ１，Ｂ１）を乗算した結果のデータ（Ａ１＊Ｂ１）が演算器２０ａ１から出力されると共に、演算処理部１０ａ４から出力されたデータ（Ｇ１，Ｈ１）を乗算した結果のデータ（Ｇ１＊Ｈ１）が演算器２０ａ２から出力される。２サイクル目では、演算処理部１０ａ２から出力されたデータ（Ｃ１，Ｄ１）を乗算した結果のデータ（Ｃ１＊Ｄ１）が演算器２０ａ１から出力されると共に、演算処理部１０ａ５から出力されたデータ（Ｉ１，Ｊ１）を乗算した結果のデータ（Ｉ１＊Ｊ１）が演算器２０ａ２から出力される。
【００３４】
制御部３０は、３サイクルの処理期間の最後の１サイクルで、演算器２０ａ１に出力されるクロックイネーブルをＨｉｇｈレベルに設定すると共に、演算器２０ａ２に出力されるクロックイネーブルをＬｏｗレベルに設定する。つまり、制御部３０は、３サイクルの処理期間の最後の１サイクルで演算器２０ａ１を動作させると共に、演算器２０ａ２を停止させる。この結果、最後の１サイクルで１回の乗算が行われる。３サイクル目では、演算処理部１０ａ３から出力されたデータ（Ｅ１，Ｆ１）を乗算した結果のデータ（Ｅ１＊Ｆ１）が演算器２０ａ１から出力される。
【００３５】
上記のスケジューリングにより、３サイクルで合計５回の乗算が行われる。３サイクルの処理期間が終了した後、上記と同様のスケジューリングにより演算が行われる。
【００３６】
上記のスケジューリング以外のスケジューリングも可能である。例えば３サイクルの処理期間の１サイクル目で演算器２０ａ１のみが動作し、２サイクル目と３サイクル目で演算器２０ａ１，２０ａ２が動作するようにスケジューリングが行われてもよい。
【００３７】
図４は、６サイクルで５回の演算（図４に示す例では乗算）を行う例を示している。図４には、それぞれの回路に供給されるクロック（ＣＬＫ）と、演算処理部１０ａ１，１０ａ２，１０ａ３，１０ａ４，１０ａ５のそれぞれから出力される有効信号（データ有効信号）と、演算処理部１０ａ１，１０ａ２，１０ａ３，１０ａ４，１０ａ５のそれぞれから出力されるデータとが示されている。また、図４には、制御部３０が決定した、動作する演算器の数が示されている。また、図４には、演算器２０ａ１，２０ａ２のそれぞれに入力されるクロックイネーブル（ＣＬＫＥＮ１，ＣＬＫＥＮ２）と、演算器２０ａ１，２０ａ２のそれぞれから出力されるデータとが示されている。図４の右方向が時間の進む方向である。
【００３８】
処理速度（＝６）の情報と、処理すべき演算の数（＝５）の情報とは、ＣＰＵ等の外部の構成によって予め制御部３０内のレジスタに格納されている。制御部３０はレジスタからこれらの情報を読み出し、読み出した情報に基づいて、それぞれのサイクルで動作する演算器の数を決定する。
【００３９】
前述したように、制御部３０は、処理すべき演算の数を処理速度で割った数を算出する。５を６で割った商は０．８３・・・である。小数は切り上げとなる。したがって、制御部３０は、１個の演算器２０ａ１のみが動作するようにスケジューリングを制御する。
【００４０】
１個の演算器２０ａ１が動作する場合、演算処理部１０ａ１，１０ａ２，１０ａ３，１０ａ４，１０ａ５から出力されたデータが演算器２０ａ１に入力される。また、演算器２０ａ１から出力された演算結果が演算処理部１０ａ１，１０ａ２，１０ａ３，１０ａ４，１０ａ５に入力される。回路の入力と出力との切替は、制御部３０またはスイッチ（セレクタ）によって制御される。
【００４１】
制御部３０は、６サイクルの処理期間の最初の５サイクルで、演算器２０ａ１に出力されるクロックイネーブルをＨｉｇｈレベルに設定すると共に、演算器２０ａ２に出力されるクロックイネーブルをＬｏｗレベルに設定する。つまり、制御部３０は、６サイクルの処理期間の最初の５サイクルで演算器２０ａ１を動作させると共に、演算器２０ａ２を停止させる。この結果、最初の６サイクルで５回の乗算が行われ、乗算が完了する。
【００４２】
１サイクル目では、演算処理部１０ａ１から出力されたデータ（Ａ１，Ｂ１）を乗算した結果のデータ（Ａ１＊Ｂ１）が演算器２０ａ１から出力される。２〜５サイクル目ではそれぞれ、演算処理部１０ａ２，１０ａ３，１０ａ４，１０ａ５から出力されたデータを乗算した結果のデータが演算器２０ａ１から順次出力される。
【００４３】
制御部３０は、６サイクルの処理期間の最後の１サイクルで、演算器２０ａ１，２０ａ２に出力されるクロックイネーブルをＬｏｗレベルに設定する。つまり、制御部３０は、６サイクルの処理期間の最後の１サイクルで演算器２０ａ１，２０ａ２を停止させる。この結果、最後の１サイクルでは乗算が行われない。
【００４４】
上記のスケジューリングにより、６サイクルで合計５回の乗算が行われる。６サイクルの処理期間が終了した後、上記と同様のスケジューリングにより演算が行われる。
【００４５】
上記のスケジューリング以外のスケジューリングも可能である。例えば６サイクルの処理期間の１〜５サイクル目のいずれかで演算器２０ａ１，２０ａ２が停止し、それ以外のサイクルで演算器２０ａ１のみが動作するようにスケジューリングが行われてもよい。
【００４６】
本実施形態によれば、互いに異なる処理を行う複数の演算処理部１０ａ１，１０ａ２，・・・１０ａｍと、同一の演算を行う複数の演算器２０ａ１，２０ａ２，・・・２０ａｎと、処理すべき演算の数と等しい数のデータが、予め設定された処理期間に処理され、かつ、処理期間を分割した複数の分割期間に動作する演算器の数が平均化されるように、処理期間に動作する演算器の数を、処理期間の長さと演算の数とに基づいて制御する制御部３０と、を有する演算装置が構成される。
【００４７】
本実施形態では、予め設定された処理期間に、処理すべき演算の数と等しい数のデータが処理され、かつ、処理期間を分割した複数の分割期間に動作する演算器の数が平均化されるように、複数の分割期間に動作する演算器の数を、処理期間の長さと演算の数とに基づいて制御することによって、ピーク電力を抑えることができる。
【００４８】
＜第２の実施形態＞
次に、本発明の第２の実施形態を説明する。図５は、本実施形態による演算装置の構成を示している。図５に示す演算装置は、固有処理部１０と、共通処理部２０と、制御部３０と、調停部４０とを有する。調停部４０以外の構成については既に説明したので、説明を省略する。
【００４９】
調停部４０は、複数の演算処理部１０ａ１，１０ａ２，・・・１０ａｍと複数の演算器２０ａ１，２０ａ２，・・・２０ａｎとの間のデータの転送を制御することにより、データの調停を行う。また、調停部４０は、複数の演算処理部１０ａ１，１０ａ２，・・・１０ａｍから出力される有効信号（データ有効信号）から、処理期間の長さと、処理すべき演算の数とを検出する。調停部４０は、検出した処理期間の長さの情報と、処理すべき演算の数の情報とを制御部３０に出力する。また、調停部４０は、データの転送に関して、演算処理部１０ａ１，１０ａ２，・・・１０ａｍと演算器２０ａ１，２０ａ２，・・・２０ａｎとの対応関係を制御してもよい。
【００５０】
制御部３０は、処理期間に動作する演算器の数を、複数の演算処理部１０ａ１，１０ａ２，・・・１０ａｍから出力される有効信号（データ有効信号）から検出された処理期間の長さと、処理すべき演算の数とに基づいて制御する。すなわち、制御部３０は、処理期間に動作する演算器の数を、調停部４０によって検出された処理期間の長さと、処理すべき演算の数とに基づいて制御する。制御部３０が、調停部４０の機能のうち、処理期間の長さと、処理すべき演算の数との少なくとも一方を検出する機能を有していてもよい。
【００５１】
処理期間の長さ（処理速度）は、複数の演算処理部１０ａ１，１０ａ２，・・・１０ａｍから出力される有効信号（データ有効信号）の２つの有効状態の間隔から検出された時間である。また、処理すべき演算の数は、複数の演算処理部１０ａ１，１０ａ２，・・・１０ａｍから出力される有効信号（データ有効信号）の有効状態の数（複数の有効信号のそれぞれの有効状態の数の合計）から検出された数である。
【００５２】
図６、図７は、制御部３０の動作の手順の例を示している。また、図８は、制御部３０が行うスケジューリングの例を示している。図８には、それぞれの回路に供給されるクロック（ＣＬＫ）と、演算処理部１０ａ１，１０ａ２，１０ａ３，１０ａ４，１０ａ５のそれぞれから出力されて調停部４０に入力される有効信号（データ有効信号）と、後述する演算有効期間とが示されている。また、図８には、制御部３０が管理する数（演算器の最大数、動作する演算器の数）が示されている。図８の右方向が時間の進む方向である。
【００５３】
図６、図７、図８を参照し、制御部３０の動作を説明する。図６、図７は、制御部３０を構成する組合せ回路が行う処理の内容をフローチャートとして示している。図６、図７は、演算器が１サイクルで１回の演算を行う場合に対応する。
【００５４】
（ステップＳ１００）
ＣＰＵ等の外部の構成により、制御部３０内部のレジスタに対して値が設定される。これにより、演算器の最大数が所定の最大値（Ｍａｘ）に設定され、処理速度が初期設定値に設定され、終了している演算数（以下、終了演算数と記載）が０に設定される。演算器の最大数は、動作可能な演算器の最大数である。Ｍａｘは、例えば演算装置が有する演算器の全体の数である。終了演算数は、演算が行われる毎に増える。
【００５５】
（ステップＳ１０１）
制御部３０は、調停部４０から出力された情報に基づいて処理速度を検出する。制御部３０は、検出した処理速度が、前回検出した処理速度から変化したか否かを確認する。処理速度が変化した場合、処理はステップＳ１０２に進む。処理速度が変化していない場合、処理はステップＳ１０３に進む。図６に示す処理が開始されてから初めて処理速度が検出された場合、処理はステップＳ１０２に進む。
【００５６】
（ステップＳ１０２）
制御部３０は、以下の（１）式により演算可能数を算出する。演算可能数は、処理期間に実行可能な演算の数である。
演算可能数＝演算器の最大数×処理速度  ・・・（１）
また、制御部３０は、サイクル数を管理するための変数であるｕｎｉｔ＿ｔｉｍｅを、処理速度から１を引いた値に設定すると共に、変更フラグを１に設定する。
【００５７】
（ステップＳ１０３）
制御部３０は、調停部４０から出力された情報に基づいて演算有効期間を検出する。制御部３０は、検出した演算有効期間が、前回検出した演算有効期間から変化したか否かを確認する。演算有効期間が変化した場合、処理はステップＳ１０４に進む。演算有効期間が変化していない場合、処理はステップＳ１０５に進む。図６に示す処理が開始されてから初めて処理速度が検出された場合、処理はステップＳ１０４に進む。
【００５８】
演算有効期間は、処理期間に処理すべき演算の数を示している。図８において、例えばそれぞれの有効信号の３サイクルにおける有効状態の数（サイクル数）の合計が演算有効期間となる。最初の３サイクルでは、有効信号１，２，５がそれぞれ１サイクルずつ有効状態であり、有効信号３，４は無効状態である。このため、演算有効期間は３である。有効信号は演算対象のデータを示している。有効信号１，２，５が有効状態となるため、演算処理部１０ａ１，１０ａ２，１０ａ５から演算対象のデータが出力される。つまり、３サイクルのデータに対して演算が必要であることが分かる。演算有効期間は、この演算に必要な期間（処理すべき演算の数と等価）を示している。
【００５９】
（ステップＳ１０４）
制御部３０は、残りの演算数を、演算有効期間から終了演算数を引いた値に設定すると共に、変更フラグを１に設定する。残りの演算数は、必要な演算の数を示している。残りの演算数は、演算が行われる毎に減る。
【００６０】
（ステップＳ１０５）
制御部３０は、変更フラグが１であるか否かを判断する。変更フラグが１である場合、処理はステップＳ１０６に進む。変更フラグが１でない場合、処理はステップＳ１０９に進む。
【００６１】
（ステップＳ１０６）
制御部３０は、演算に必要な演算器の数が多い、あるいは少ないかを判断する。以下の（２）式の条件が満たされる場合、演算に必要な演算器の数が多いため、処理がステップＳ１０７に進み、演算器の最大数が変更される。
演算有効期間≦演算可能数−処理速度  ・・・（２）
以下の（３）式の条件が満たされる場合、演算に必要な演算器の数が少ないため、処理がステップＳ１０７に進み、演算器の最大数が変更される。
演算有効期間＞演算可能数  ・・・（３）
（２）式、（３）式のいずれの条件も満たされない場合、処理がステップＳ１０８に進む。
【００６２】
（ステップＳ１０７）
制御部３０は、以下の（４）式により、演算器の最大数を算出する。
演算器の最大数＝ＲＵ（演算有効期間／処理速度）  ・・・（４）
（４）式のＲＵは、小数を切り上げる（小数を切り捨て、整数を１増やす）ことを意味している。
【００６３】
（ステップＳ１０８）
制御部３０は変更フラグを０に設定する。
【００６４】
（ステップＳ１０９）
制御部３０は、残りの演算数が０であるか否かを判断することにより、演算が必要であるか否かを判断する。残りの演算数が０でない場合、演算が必要であるため、処理がステップＳ１１０に進む。残りの演算数が０である場合、演算が必要でないため、処理がステップＳ１１６に進む。
【００６５】
（ステップＳ１１０）
制御部３０は、残りの演算数と演算器の最大数とを比較することにより、一部の演算器を停止するか否かを判断する。残りの演算数が演算器の最大数よりも小さい場合、一部の演算器を停止するため、処理がステップＳ１１１に進む。残りの演算数が演算器の最大数以上である場合、演算器は停止せず、処理がステップＳ１１２に進む。
【００６６】
（ステップＳ１１１）
制御部３０は、動作する演算器の数を、演算器の最大数から１を引いた値に設定する。次の１サイクルでは、設定された演算器の数と同じ数の演算器に、Ｈｉｇｈレベルのクロックイネーブルが出力される。この後、処理がステップＳ１１３に進む。
【００６７】
（ステップＳ１１２）
制御部３０は、動作する演算器の数を演算器の最大数に設定する。次の１サイクルでは、設定された演算器の数と同じ数の演算器に、Ｈｉｇｈレベルのクロックイネーブルが出力される。この後、処理がステップＳ１１３に進む。
【００６８】
（ステップＳ１１３）
制御部３０は、演算時間を管理する変数であるｃａｌｃ＿ｌａｔｅｎｃｙを、演算所要時間から１引いた値に設定する。演算所要時間は、演算器が１回の演算に要するサイクル数である。本例では、演算所要時間は１サイクルであるため、ｃａｌｃ＿ｌａｔｅｎｃｙは０に設定される。
【００６９】
（ステップＳ１１４）
ｃａｌｃ＿ｌａｔｅｎｃｙが０になるまで、以下の処理が繰り返される。制御部３０は、ｕｎｉｔ＿ｔｉｍｅを１減らす。また、制御部３０は、１サイクルが経過するのを待つ。ｃａｌｃ＿ｌａｔｅｎｃｙの判定は、１サイクルが経過した後に行われる。例えば、ステップＳ１１３でｃａｌｃ＿ｌａｔｅｎｃｙが０となり、ステップＳ１１４でｕｎｉｔ＿ｔｉｍｅが１減ると共に１サイクルが経過する。その後、ｃａｌｃ＿ｌａｔｅｎｃｙが０であることが確認され、ステップＳ１１４の処理が終了する。
【００７０】
（ステップＳ１１５）
制御部３０は、残りの演算数を、現在の残りの演算数から演算器の最大数を引いた値に設定すると共に、終了演算数を、現在の終了演算数に、動作する演算器の数を加えた値に設定する。この後、処理がステップＳ１１８に進む。
【００７１】
（ステップＳ１１６）
制御部３０は、動作する演算器の数を０に設定する。次の１サイクルでは、全ての演算器に、Ｌｏｗレベルのクロックイネーブルが出力される。
【００７２】
（ステップＳ１１７）
ｕｎｉｔ＿ｔｉｍｅが０になるまで、以下の処理が行われる。制御部３０は、ｕｎｉｔ＿ｔｉｍｅを１減らす。また、制御部３０は、１サイクルが経過するのを待つ。この後、処理がステップＳ１０１に進む。ステップＳ１１７では、ｕｎｉｔ＿ｔｉｍｅが減った数と同じ数のサイクルが経過する。ｕｎｉｔ＿ｔｉｍｅの判定は、１サイクルが経過した後に行われる。例えば、ｕｎｉｔ＿ｔｉｍｅがｋ（ｋ≧１）である場合、ステップＳ１１４でｕｎｉｔ＿ｔｉｍｅがｋ減ると共にｋサイクルが経過する。その後、ｕｎｉｔ＿ｔｉｍｅが０であることが確認され、ステップＳ１１７の処理が終了する。この後、処理がステップＳ１１８に進む。
【００７３】
（ステップＳ１１８）
制御部３０は、ｕｎｉｔ＿ｔｉｍｅが０であるか否かを判断する。ｕｎｉｔ＿ｔｉｍｅが０である場合、処理はステップＳ１１９に進む。ｕｎｉｔ＿ｔｉｍｅが０でない場合、処理はステップＳ１０１に進む。
【００７４】
（ステップＳ１１８）
制御部３０は、残りの演算数を、現在の残りの演算数に演算有効期間を加えた値に設定すると共に、終了演算数を０に設定する。この後、処理がステップＳ１０１に進む。
【００７５】
図８に示すスケジューリングを説明する。処理速度は３サイクルである。最初の処理期間に３つの有効信号１，２，５が有効状態となるため、演算有効期間は３サイクルである。以下では、最初の処理期間（３サイクル）の処理を説明する。
【００７６】
（１サイクル目）
演算器の最大数が、例えば５に設定され、処理速度が３に設定されるため（ステップＳ１００に対応）、演算可能数は１５となる（ステップＳ１０２に対応）。また、残りの演算数は３となる（ステップＳ１０４に対応）。
【００７７】
（２）式の条件が満たされるため、（４）式により、演算器の最大数は１となる（ステップＳ１０７に対応）。残りの演算数（＝３）が０でなく（ステップＳ１０９に対応）、残りの演算数（＝３）が演算器の最大数（＝１）よりも大きいため（ステップＳ１１０に対応）、動作する演算器の数は１となる（ステップＳ１１２に対応）。１サイクルが経過した後（ステップＳ１１４に対応）、残りの演算数が２となると共に、終了演算数が１となる（ステップＳ１１５に対応）。
【００７８】
（２サイクル目）
処理速度と演算有効期間とは、変化していない。残りの演算数（＝２）が０でなく（ステップＳ１０９に対応）、残りの演算数（＝２）が演算器の最大数（＝１）よりも大きいため（ステップＳ１１０に対応）、動作する演算器の数は１のままである（ステップＳ１１２に対応）。１サイクルが経過した後（ステップＳ１１４に対応）、残りの演算数が１となると共に、終了演算数が２となる（ステップＳ１１５に対応）。
【００７９】
（３サイクル目）
処理速度と演算有効期間とは、変化していない。残りの演算数（＝１）が０でなく（ステップＳ１０９に対応）、残りの演算数（＝１）が演算器の最大数（＝１）と等しいため（ステップＳ１１０に対応）、動作する演算器の数は１のままである（ステップＳ１１２に対応）。１サイクルが経過した後（ステップＳ１１４に対応）、残りの演算数が０となると共に、終了演算数が３となる（ステップＳ１１５に対応）。また、残りの演算数が３となると共に、終了演算数が０となる（ステップＳ１１９に対応）。
【００８０】
最初の処理期間以降、３サイクルの各処理期間において、上記の処理と同様の処理が行われる。
【００８１】
図８に示すように、最初の処理期間以降の処理期間の中で有効信号３が有効状態となることにより、演算有効期間が３から４に変更される。以下では、この場合の処理期間（３サイクル）の処理を説明する。
【００８２】
（１サイクル目）
動作する演算器の数は、前のサイクルと同じ１である。処理速度は、前のサイクルと同じ３である。演算有効期間は、前のサイクルと同じ３である。残りの演算数は、直前の処理期間の３サイクル目で３に設定されている（ステップＳ１１９に対応）。
【００８３】
残りの演算数（＝３）が０でなく（ステップＳ１０９に対応）、残りの演算数（＝３）が演算器の最大数（＝１）よりも大きいため（ステップＳ１１０に対応）、動作する演算器の数は１のままである（ステップＳ１１２に対応）。１サイクルが経過した後（ステップＳ１１４に対応）、残りの演算数が２となると共に、終了演算数が１となる（ステップＳ１１５に対応）。
【００８４】
（２サイクル目）
処理速度は変化していない。演算有効期間は４サイクルに変化するため（ステップＳ１０３に対応）、残りの演算数が３に設定される（ステップＳ１０４に対応）。
【００８５】
演算可能数は１５のままであり、（２）式の条件が満たされるため、（４）式により、演算器の最大数は２となる（ステップＳ１０７に対応）。残りの演算数（＝３）が０でなく（ステップＳ１０９に対応）、残りの演算数（＝３）が演算器の最大数（＝２）よりも大きいため（ステップＳ１１０に対応）、動作する演算器の数は２となる（ステップＳ１１２に対応）。１サイクルが経過した後（ステップＳ１１４に対応）、残りの演算数が１となると共に、終了演算数が３となる（ステップＳ１１５に対応）。
【００８６】
（３サイクル目）
処理速度と演算有効期間とは、変化していない。残りの演算数（＝１）が０でなく（ステップＳ１０９に対応）、残りの演算数（＝１）が演算器の最大数（＝２）よりも小さいため（ステップＳ１１０に対応）、動作する演算器の数は１となる（ステップＳ１１１に対応）。１サイクルが経過した後（ステップＳ１１４に対応）、残りの演算数が０となると共に、終了演算数が４となる（ステップＳ１１５に対応）。また、残りの演算数が４となると共に、終了演算数が０となる（ステップＳ１１９に対応）。
【００８７】
上記の動作では、処理期間に動作する演算器の数が、有効信号から検出された情報（処理期間の長さ、処理すべき演算の数）に基づいて制御されるため、１サイクル単位で演算器の数を制御することができる。つまり、動的に演算器の数を制御することができる。
【００８８】
図９、図１０は、制御部３０の動作の手順の他の例を示している。図９、図１０は、演算器が複数サイクルで１回の演算を行う場合に対応する。
【００８９】
図９、図１０において、図６、図７に示す処理と同一の処理には同一の符号が付与されている。以下では、図６、図７に示す処理と異なる処理のみについて説明する。図６におけるステップＳ１０２が図９におけるステップＳ１０２ａに変更され、図６におけるステップＳ１０７が図９におけるステップＳ１０７ａに変更され、図７におけるステップＳ１１４が図１０におけるステップＳ１１４ａに変更される。
【００９０】
（ステップＳ１０２ａ）
制御部３０は、以下の（５）式により演算器の処理回数を算出する。演算器の処理回数は、処理期間に演算器が演算を行う回数である。
演算器の処理回数＝ＲＤ（処理速度／演算所要時間）  ・・・（５）
（５）式のＲＤは、小数を切り捨てることを意味している。
また、制御部３０は、以下の（６）式により演算可能数を算出する。
演算可能数＝演算器の最大数×演算器の処理回数  ・・・（６）
また、制御部３０は、処理速度を管理するための変数であるｕｎｉｔ＿ｔｉｍｅを、処理速度から１を引いた値に設定すると共に、変更フラグを１に設定する。
【００９１】
（ステップＳ１０７ａ）
制御部３０は、以下の（７）式により、演算器の最大数を算出する。
演算器の最大数＝ＲＵ（演算有効期間／演算器の処理回数）  ・・・（７）
（７）式のＲＵは、小数を切り上げる（小数を切り捨て、整数を１増やす）ことを意味している。
【００９２】
（ステップＳ１１４ａ）
ｃａｌｃ＿ｌａｔｅｎｃｙが０でない間、以下の処理が行われる。制御部３０は、ｕｎｉｔ＿ｔｉｍｅを１減らすと共に、ｃａｌｃ＿ｌａｔｅｎｃｙを１減らす。また、制御部３０は、１サイクルが経過するのを待つ。
【００９３】
図１１は、制御部３０が行うスケジューリングの例を示している。図１１には、それぞれの回路に供給されるクロック（ＣＬＫ）と、演算処理部１０ａ１，１０ａ２，１０ａ３，１０ａ４，１０ａ５のそれぞれから出力される有効信号（データ有効信号）と、演算処理部１０ａ１，１０ａ２，１０ａ３，１０ａ４，１０ａ５のそれぞれから出力されるデータとが示されている。また、図１１には、制御部３０が管理する数（残りの演算数、演算器の最大数、動作する演算器の数）が示されている。また、図１１には、演算器２０ａ１，２０ａ２，２０ａ３，２０ａ４，２０ａ５のそれぞれに入力されるクロックイネーブル（ＣＬＫＥＮ１，ＣＬＫＥＮ２，ＣＬＫＥＮ３，ＣＬＫＥＮ４，ＣＬＫＥＮ５）と、演算器２０ａ１，２０ａ２，２０ａ３，２０ａ４，２０ａ５のそれぞれから出力されるデータとが示されている。図１１の右方向が時間の進む方向である。
【００９４】
図１１は、３サイクルで演算（図１１に示す例では乗算）を行う例を示している。演算器２０ａ１，２０ａ２，２０ａ３，２０ａ４，２０ａ５は、２サイクルで１回の乗算を行う。以下では、最初の処理期間（３サイクル）の処理を説明する。
【００９５】
（１サイクル目）
全ての演算処理部１０ａ１，１０ａ２，１０ａ３，１０ａ４，１０ａ５から出力される有効信号が有効状態となるため、演算有効期間は５サイクルである。演算器の最大数が５に設定され、処理速度が３に設定される（ステップＳ１００に対応）。処理速度が３であり、演算所要時間が２であるため、演算器の処理回数は１となる（ステップＳ１０２ａに対応）。このため、演算可能数は５となる（ステップＳ１０２ａに対応）。また、残りの演算数は５となる（ステップＳ１０４に対応）。
【００９６】
演算有効期間と演算可能数とが等しいため（ステップＳ１０６）、演算器の最大数は変更されない。残りの演算数（＝５）が０でなく（ステップＳ１０９に対応）、残りの演算数（＝５）が演算器の最大数（＝５）と等しいため（ステップＳ１１０に対応）、動作する演算器の数は５となる（ステップＳ１１２に対応）。演算所要時間が２であるため、ｃａｌｃ＿ｌａｔｅｎｃｙは１に設定される（ステップＳ１１３に対応）。２サイクルが経過した後（ステップＳ１１４ａに対応）、残りの演算数が０となると共に、終了演算数が５となる（ステップＳ１１５に対応）。
【００９７】
（３サイクル目）
処理速度と演算有効期間とは、変化していない。残りの演算数が０であるため（ステップＳ１０９に対応）、動作する演算器の数は０となる（ステップＳ１１６に対応）。３サイクル目ではｕｎｉｔ＿ｔｉｍｅは０になっている。１サイクルが経過した後（ステップＳ１１７に対応）、残りの演算数が５となると共に、終了演算数が０となる（ステップＳ１１９に対応）。その後、次の処理期間（３サイクル）の処理が行われる。
【００９８】
制御部３０は、３サイクルの処理期間の最初の２サイクルで、演算器２０ａ１，２０ａ２，２０ａ３，２０ａ４，２０ａ５のそれぞれに出力されるクロックイネーブルをＨｉｇｈレベルに設定する。つまり、制御部３０は、３サイクルの処理期間の最初の２サイクルで演算器２０ａ１，２０ａ２，２０ａ３，２０ａ４，２０ａ５を動作させる。この結果、最初の２サイクルで５回の乗算が行われ、乗算が完了する。
【００９９】
制御部３０は、３サイクルの処理期間の最後の１サイクルで、演算器２０ａ１，２０ａ２，２０ａ３，２０ａ４，２０ａ５のそれぞれに出力されるクロックイネーブルをＬｏｗレベルに設定する。つまり、制御部３０は、３サイクルの処理期間の最後の１サイクルで演算器２０ａ１，２０ａ２，２０ａ３，２０ａ４，２０ａ５を停止させる。この結果、最後の１サイクルでは乗算が行われない。
【０１００】
上記のスケジューリングにより、３サイクルで合計５回の乗算が行われる。最初の処理期間が終了した後、上記と同様のスケジューリングにより演算が行われる。
【０１０１】
図１２は、７サイクルで演算（図１２に示す例では乗算）を行う例を示している。図１２には、それぞれの回路に供給されるクロック（ＣＬＫ）と、演算処理部１０ａ１，１０ａ２，１０ａ３，１０ａ４，１０ａ５のそれぞれから出力される有効信号（データ有効信号）と、演算処理部１０ａ１，１０ａ２，１０ａ３，１０ａ４，１０ａ５のそれぞれから出力されるデータとが示されている。また、図１２には、制御部３０が管理する数（残りの演算数、演算器の最大数、動作する演算器の数）が示されている。また、図１２には、演算器２０ａ１，２０ａ２，２０ａ３，２０ａ４，２０ａ５のそれぞれに入力されるクロックイネーブル（ＣＬＫＥＮ１，ＣＬＫＥＮ２，ＣＬＫＥＮ３，ＣＬＫＥＮ４，ＣＬＫＥＮ５）と、演算器２０ａ１，２０ａ２，２０ａ３，２０ａ４，２０ａ５のそれぞれから出力されるデータとが示されている。図１２の右方向が時間の進む方向である。
【０１０２】
演算器２０ａ１，２０ａ２，２０ａ３，２０ａ４，２０ａ５は、２サイクルで１回の乗算を行う。以下では、最初の処理期間（７サイクル）の処理を説明する。
【０１０３】
（１サイクル目）
全ての演算処理部１０ａ１，１０ａ２，１０ａ３，１０ａ４，１０ａ５から出力される有効信号が有効状態となるため、演算有効期間は５サイクルである。演算器の最大数が５に設定され、処理速度が７に設定される（ステップＳ１００に対応）。処理速度が７であり、演算所要時間が２であるため、演算器の処理回数は３となる（ステップＳ１０２ａに対応）。このため、演算可能数は１５となる（ステップＳ１０２ａに対応）。また、残りの演算数は５となる（ステップＳ１０４に対応）。
【０１０４】
（２）式の条件が満たされるため（ステップＳ１０６）、（７）式により、演算器の最大数は２となる（ステップＳ１０７ａに対応）。残りの演算数（＝５）が０でなく（ステップＳ１０９に対応）、残りの演算数（＝５）が演算器の最大数（＝２）よりも大きいため（ステップＳ１１０に対応）、動作する演算器の数は２となる（ステップＳ１１２に対応）。演算所要時間が２であるため、ｃａｌｃ＿ｌａｔｅｎｃｙは１に設定される（ステップＳ１１３に対応）。２サイクルが経過した後（ステップＳ１１４ａに対応）、残りの演算数が３となると共に、終了演算数が２となる（ステップＳ１１５に対応）。
【０１０５】
（３サイクル目）
処理速度と演算有効期間とは、変化していない。残りの演算数（＝３）が０でなく（ステップＳ１０９に対応）、残りの演算数（＝３）が演算器の最大数（＝２）よりも大きいため（ステップＳ１１０に対応）、動作する演算器の数は２となる（ステップＳ１１２に対応）。演算所要時間が２であるため、ｃａｌｃ＿ｌａｔｅｎｃｙは１に設定される（ステップＳ１１３に対応）。２サイクルが経過した後（ステップＳ１１４ａに対応）、残りの演算数が１となると共に、終了演算数が４となる（ステップＳ１１５に対応）。
【０１０６】
（５サイクル目）
処理速度と演算有効期間とは、変化していない。残りの演算数（＝１）が０でなく（ステップＳ１０９に対応）、残りの演算数（＝１）が演算器の最大数（＝２）よりも小さいため（ステップＳ１１０に対応）、動作する演算器の数は１となる（ステップＳ１１１に対応）。演算所要時間が２であるため、ｃａｌｃ＿ｌａｔｅｎｃｙは１に設定される（ステップＳ１１３に対応）。２サイクルが経過した後（ステップＳ１１４ａに対応）、残りの演算数が０となると共に、終了演算数が５となる（ステップＳ１１５に対応）。
【０１０７】
（７サイクル目）
処理速度と演算有効期間とは、変化していない。残りの演算数が０であるため（ステップＳ１０９に対応）、動作する演算器の数は０となる（ステップＳ１１６に対応）。７サイクル目ではｕｎｉｔ＿ｔｉｍｅは０になっている。１サイクルが経過した後（ステップＳ１１７に対応）、残りの演算数が５となると共に、終了演算数が０となる（ステップＳ１１９に対応）。その後、次の処理期間（７サイクル）の処理が行われる。
【０１０８】
制御部３０は、７サイクルの処理期間の最初の４サイクルで、演算器２０ａ１，２０ａ２のそれぞれに出力されるクロックイネーブルをＨｉｇｈレベルに設定すると共に、演算器２０ａ３，２０ａ４，２０ａ５に出力されるクロックイネーブルをＬｏｗレベルに設定する。つまり、制御部３０は、７サイクルの処理期間の最初の４サイクルで演算器２０ａ１，２０ａ２を動作させると共に、演算器２０ａ３，２０ａ４，２０ａ５を停止させる。この結果、最初の４サイクルで４回の乗算が行われる。
【０１０９】
制御部３０は、７サイクルの処理期間の次の２サイクルで、演算器２０ａ１に出力されるクロックイネーブルをＨｉｇｈレベルに設定すると共に、演算器２０ａ２，２０ａ３，２０ａ４，２０ａ５に出力されるクロックイネーブルをＬｏｗレベルに設定する。つまり、制御部３０は、７サイクルの処理期間の次の２サイクルで演算器２０ａ１を動作させると共に、演算器２０ａ２，２０ａ３，２０ａ４，２０ａ５を停止させる。この結果、次の２サイクルで１回の乗算が行われる。この時点までに５回の乗算が行われる。つまり、乗算が完了する。
【０１１０】
制御部３０は、７サイクルの処理期間の最後の１サイクルで、演算器２０ａ１，２０ａ２，２０ａ３，２０ａ４，２０ａ５のそれぞれに出力されるクロックイネーブルをＬｏｗレベルに設定する。つまり、制御部３０は、７サイクルの処理期間の最後の１サイクルで演算器２０ａ１，２０ａ２，２０ａ３，２０ａ４，２０ａ５を停止させる。この結果、最後の１サイクルでは乗算が行われない。
【０１１１】
上記のスケジューリングにより、７サイクルで合計５回の乗算が行われる。最初の処理期間が終了した後、上記と同様のスケジューリングにより演算が行われる。
【０１１２】
本実施形態では、処理期間に動作する演算器の数が、有効信号から検出された情報（処理期間の長さ、処理すべき演算の数）に基づいて制御されるため、１サイクル単位で動的に演算器の数を制御することができる。したがって、ピーク電力を抑える制御を、演算の対象となるデータの状況に応じて動的に行うことができる。
【０１１３】
以上、図面を参照して本発明の実施形態について詳述してきたが、具体的な構成は上記の実施形態に限られるものではなく、本発明の要旨を逸脱しない範囲の設計変更等も含まれる。
【符号の説明】
【０１１４】
１０  固有処理部、２０  共通処理部、３０  制御部、４０  調停部
【図１】
2015097021.tif 000003
【図２】
2015097021.tif 000004
【図３】
2015097021.tif 000005
【図４】
2015097021.tif 000006
【図５】
2015097021.tif 000007
【図６】
2015097021.tif 000008
【図７】
2015097021.tif 000009
【図８】
2015097021.tif 000010
【図９】
2015097021.tif 000011
【図１０】
2015097021.tif 000012
【図１１】
2015097021.tif 000013
【図１２】
2015097021.tif 000014
【図１３】
2015097021.tif 000015