(57)【特許請求の範囲】
【請求項１】
同時に実行可能な複数の演算器を有する複数の処理回路と、
各処理回路で実行中の演算器の総数を集計する制御回路と、を備え、
前記複数の処理回路のそれぞれは、前記制御回路が集計した集計結果に応じて自己が有する演算器のうち未実行の演算器を実行するか否かを決定する
演算処理装置。
【請求項２】
前記制御回路は、
前記複数の処理回路全てにおいて同時に実行可能な演算器の数の上限値を記憶する閾値レジスタを有し、
前記複数の処理回路のそれぞれは、自己の処理回路内で同時に実行中の演算器の数である同時実行演算器数を前記制御回路へ通知し、
前記制御回路は、各処理回路から通知された前記同時実行演算器数を集計して前記総数を算出し、
当該総数と前記上限値との差分値を各処理回路へ通知し、
前記複数の処理回路のそれぞれは、前記差分値に応じて前記未実行の演算器を実行するか否かを決定する
ことを特徴とする請求項１に記載の演算処理装置。
【請求項３】
前記複数の処理回路のそれぞれは、当該処理回路において追加して起動を試みた演算器の数が、前記実行すると決定した演算器の数を超える場合、当該超える分の演算器の実行の開始を保留することを特徴とする請求項２に記載の演算処理装置。
【請求項４】
前記制御回路は、前記演算処理装置全体における電圧変動量の許容値に基づき定まる同時に実行可能な演算器の数を外部から受け付け、当該受け付けた演算器の数を前記上限値として前記閾値レジスタを更新することを特徴とする請求項２又は３に記載の演算処理装置。
【請求項５】
前記複数の処理回路のうち一の処理回路は、前記未実行の演算器を実行すると決定した場合、その旨を他の処理回路に対して通知することを特徴とする請求項２乃至４のいずれか１項に記載の演算処理装置。
【請求項６】
前記複数の処理回路のそれぞれは、
各演算器における演算結果のデータのばらつきを示す分布値をさらに考慮して前記未実行の演算器を実行するか否かを決定する
ことを特徴とする請求項１乃至５のいずれか１項に記載の演算処理装置。
【請求項７】
前記複数の処理回路のそれぞれは、
各演算器における演算対象の要素数に応じた前記分布値の閾値を予め保持し、
前記演算結果から分散値を算出する過程で求まる値を前記分布値とし、
当該分布値と前記閾値とに基づいて前記未実行の演算器を実行するか否かを決定する
ことを特徴とする請求項６に記載の演算処理装置。
【請求項８】
同時に実行可能な複数の演算器を有する複数の処理回路を制御する制御回路が、各処理回路で実行中の演算器の総数を集計し、
前記複数の処理回路のそれぞれが、前記集計された集計結果に応じて自己が有する演算器のうち未実行の演算器を実行するか否かを決定する
演算器同時実行制御方法。
【請求項９】
前記複数の処理回路のそれぞれが、自己の処理回路内で同時に実行中の演算器の数である同時実行演算器数を前記制御回路へ通知し、
前記制御回路が、
各処理回路から通知された前記同時実行演算器数を集計して前記総数を算出し、
当該総数と前記複数の処理回路全てにおいて同時に実行可能な演算器の数の上限値との差分値を各処理回路へ通知し、
前記複数の処理回路のそれぞれが、前記差分値に応じて前記未実行の演算器を実行するか否かを決定する
ことを特徴とする請求項８に記載の演算器同時実行制御方法。
【請求項１０】
前記複数の処理回路のそれぞれは、当該処理回路において追加して起動を試みた演算器の数が、前記実行すると決定した演算器の数を超える場合、当該超える分の演算器の実行の開始を保留することを特徴とする請求項９に記載の演算器同時実行制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、演算処理装置及び演算器同時実行制御方法に関し、特に、複数の演算器を有する複数のプロセッサにおいて同時実行される演算器数を制御するための演算処理装置及び演算器同時実行制御方法に関する。
【背景技術】
【０００２】
特許文献１には、低消費電力化と高速化が可能なマイクロプロセッサに関する技術が開示されている。特許文献１にかかるマイクロプロセッサは、各演算回路を操作する命令を先行検出する検出手段と、この検出手段により検出された命令に対応した演算回路を１つ以上演算実行に先立って活性化し、演算終了後に、活性化された演算回路を不活性化する手段とを有する。そして、当該マイクロプロセッサは、ｎ個（ｎ≧２）の命令を同時に読み出してデコードし、ｎ個の演算回路を用いて同時に演算を実行する。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平１０−２０７８５９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
近年、特許文献１に代表される関連技術にかかるマイクロプロセッサを複数搭載した演算処理装置も開発されるようになった。このような演算処理装置では、その処理性能を高めるために、複数の演算器（加算器・乗算器など）を多数実装して、高速なギガヘルツ周波数でこれら演算器を同時に動作させるようにして処理を行っている。ギガヘルツ動作を可能にするためには、高速回路技術とともに回路に電源を供給する側の電源の耐ノイズ設計が重要になる。
【０００５】
上述した演算処理装置では、電圧変動が発生すると回路のディレイ劣化や誤動作を発生させるため、高速化の妨げになってきている。ＬＳＩ（Ｌａｒｇｅ  Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｉｏｎ）チップ内の電圧変動は、（１）回路動作による高周波ノイズと（２）電源抵抗による直流ドロップに大別される。特に（１）が支配的である。そこで、一般的な高周波ノイズの低減策にバイパスコンデンサ（パスコン）をＬＳＩチップに搭載する方法がある。しかし、近年、１チップに複数のプロセッサを実装する傾向にあり、複数プロセッサが同時に起動する場合、電圧変動が大きくなる傾向にある。
【０００６】
図８は、関連技術にかかる命令発行回路を複数搭載した演算処理装置９００の一例を示す図である。演算処理装置９００は、同等の構成を有するプロセッサ９４Ａ〜９４Ｎを備える。プロセッサ９４Ａは、命令発行回路９５Ａと、複数の演算器である加算器６Ａ、加算器７Ａ、乗算器８Ａ及び乗算器９Ａと、汎用レジスタ１０Ａと、閾値レジスタ１２Ａとを備える。以降、同様に、プロセッサ９４Ｎは、命令発行回路９５Ｎと、複数の演算器である加算器６Ｎ、加算器７Ｎ、乗算器８Ｎ及び乗算器９Ｎと、汎用レジスタ１０Ｎと、閾値レジスタ１２Ｎとを備える。ここでは、代表してプロセッサ９４Ａの内部の構成及び動作について説明する。
【０００７】
命令発行回路９５Ａは、加算器６Ａ、加算器７Ａ、乗算器８Ａ及び乗算器９Ａのそれぞれを起動させる場合、加算器６Ａ、加算器７Ａ、乗算器８Ａ及び乗算器９Ａのそれぞれに対して、実行指示１０３Ａ、１０４Ａ、１０５Ａ及び１０６Ａを発行する。加算器６Ａ、加算器７Ａ、乗算器８Ａ及び乗算器９Ａのそれぞれは、各実行命令に応じて独立して動作し、その処理結果を汎用レジスタ１０Ａに格納する。閾値レジスタ１２Ａには、プロセッサ９４Ａ内で同時実行可能な演算器の数の上限値が格納されている。命令発行回路９５Ａは、実行指示１０３Ａ、１０４Ａ、１０５Ａ及び１０６Ａを発行する際に、発行済みの実行指示の数と閾値レジスタ１２Ａに格納された上限値とを比較し、上限値を超える場合は実行指示の発行を抑制し、プロセッサ９４Ａ内で同時に動作させる演算器の数を制御する機構を持っている。
【０００８】
しかしながら、演算処理装置９００には、プロセッサ９４Ａ〜９４Ｎの全体で動作可能な演算器数を制限する機構は持っていなかった。そのため、プロセッサごとに独立して制御をせざるを得ず、動作制限対処範囲が局所的になる。よって、プロセッサ単独では、動作制限を行うことができたとしても、演算処理装置９００全体としては性能が落ちるケースも発生してしまうという問題点があった。例えば、あるプロセッサ内で同時に実行される演算器数が上限値未満であり、さらに演算器を同時に実行させる余裕があったとしても、特定のプロセッサ内で同時に実行される演算器数が上限値を超える可能性がある場合には、当該特定のプロセッサにおける演算器の追加の実行を抑制せざるを得ない。この場合、演算処理装置９００の最大限の性能を発揮することができない。
【０００９】
本発明は、上述した問題点を考慮してなされたものであり、異なるプロセッサ間で同時に演算器が起動する電圧変動最悪パターンを改善するための演算処理装置及び演算器同時実行制御方法を提供することを目的とする。
【課題を解決するための手段】
【００１０】
本発明の第１の態様にかかる演算処理装置は、
同時に実行可能な複数の演算器を有する複数の処理回路と、
各処理回路で実行中の演算器の総数を集計する制御回路と、を備え、
前記複数の処理回路のそれぞれは、前記制御回路が集計した集計結果に応じて自己が有する演算器のうち未実行の演算器を実行するか否かを決定する。
【００１１】
本発明の第２の態様にかかる演算器同時実行制御方法は、
同時に実行可能な複数の演算器を有する複数の処理回路を制御する制御回路が、各処理回路で実行中の演算器の総数を集計し、
前記複数の処理回路のそれぞれが、前記集計された集計結果に応じて自己が有する演算器のうち未実行の演算器を実行するか否かを決定する。
【発明の効果】
【００１２】
本発明により、異なるプロセッサ間で同時に演算器が起動する電圧変動最悪パターンを改善するための演算処理装置及び演算器同時実行制御方法を提供することができる。
【図面の簡単な説明】
【００１３】
【図１】本発明の実施の形態１にかかる演算処理装置の構成を示すブロック図である。
【図２】本発明の実施の形態１にかかる演算器同時実行制御処理の流れを示すフローチャートである。
【図３】本発明の実施の形態２にかかる演算処理装置の構成を示すブロック図である。
【図４】本発明の実施の形態２にかかる演算器同時実行制御処理の例を示すタイムチャートである。
【図５】本発明の実施の形態３にかかる演算処理装置の構成を示すブロック図である。
【図６】本発明の実施の形態３にかかる汎用レジスタとデータ分散値レジスタとの関係を示す図である。
【図７】本発明の実施の形態３にかかる演算器同時実行制御処理の例を示すタイムチャートである。
【図８】関連技術にかかる演算処理装置の構成を示すブロック図である。
【発明を実施するための形態】
【００１４】
以下では、本発明を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。各図面において、同一要素には同一の符号が付されており、説明の明確化のため、必要に応じて重複説明は省略する。
【００１５】
＜発明の実施の形態１＞
図１は、本発明の実施の形態１にかかる演算処理装置１００の構成を示すブロック図である。演算処理装置１００は、複数の演算器を有する複数の処理回路において同時実行される演算器数を制御するものである。演算処理装置１００は、制御回路１１０と、処理回路１２０Ａ〜１２０Ｎとを備える。尚、処理回路１２０Ａ〜１２０Ｎは、複数個であればよい。処理回路１２０Ａは、演算器１３Ａ〜１３Ｍを有する。同様に、処理回路１２０Ｎは、演算器１４Ａ〜１４Ｌを有する。処理回路１２０Ａ〜１２０Ｎのそれぞれは、自己の有する複数の演算器を同時に実行することが可能である。尚、処理回路１２０Ａ〜１２０Ｎにおける演算器の数は、複数個であればよい。
【００１６】
図２は、本発明の実施の形態１にかかる演算器同時実行制御処理の流れを示すフローチャートである。まず、制御回路１１０は、各処理回路で実行中の演算器の総数を集計する（ステップＳ１１）。次に、処理回路１２０Ａ〜１２０Ｎのそれぞれは、制御回路１１０が集計した集計結果に応じて自己が有する演算器のうち未実行の演算器を実行するか否かを決定する（ステップＳ１２）。
【００１７】
このように、本発明の実施の形態１では、異なる処理装置間で同時に実行される演算器数を考慮して自己の演算器の実行可否を決定することができる。そのため、異なる処理装置間で同時に演算器が起動する電圧変動最悪パターンを改善することができる。
【００１８】
＜発明の実施の形態２＞
図３は、本発明の実施の形態２にかかる演算処理装置２００の構成を示すブロック図である。演算処理装置２００は、制御回路１と、プロセッサ４Ａ〜４Ｎとを備える。プロセッサ４Ａ〜４Ｎは、複数の演算器を有し、これらの同時実行を行う。また、制御回路１は、プロセッサ４Ａ〜４Ｎ内の複数の演算器の同時実行数を全体として制御する。
【００１９】
制御回路１は、閾値レジスタ２と、比較報告回路３とを備える。閾値レジスタ２は、プロセッサ４Ａ〜４Ｎ全てにおいて同時に実行可能な演算器の数の上限値を記憶する。
比較報告回路３は、プロセッサ４Ａ〜４Ｎのそれぞれから実行指示同時発行数１００Ａ〜１００Ｎを受け付ける。そして、比較報告回路３は、各プロセッサから通知された実行指示同時発行数１００Ａ〜１００Ｎを集計してその総数を算出する。続いて、比較報告回路３は、当該総数と上限値との差分値（実行可能演算器残数）を各プロセッサへ通知する。ここで、実行指示同時発行数１００Ａ〜１００Ｎは、各プロセッサ内で同時に実行中の演算器の数である同時実行演算器数である。また、実行可能演算器残数は、演算処理装置２００内の全プロセッサで実行可能な演算器の残数である。または、実行可能演算器残数は、演算処理装置２００内の全プロセッサで実行可能な演算器の余裕数と言い換えることもできる。
【００２０】
プロセッサ４Ａは、命令発行回路５Ａ、加算器６Ａ、加算器７Ａ、乗算器８Ａ、乗算器９Ａ及び汎用レジスタ１０Ａを備える。汎用レジスタ１０Ａには、加算器６Ａ、加算器７Ａ、乗算器８Ａ及び乗算器９Ａのそれぞれによる演算結果が格納される。命令発行回路５Ａは、プログラムに従い加算器６Ａ、加算器７Ａ、乗算器８Ａ及び乗算器９Ａについて実行の開始を指示するための実行指示１０３Ａ、１０４Ａ、１０５Ａ及び１０６Ａをそれぞれに対して発行する。特に、命令発行回路５Ａは、同時に動作可能な加算及び乗算の演算があれば、該当する演算器に対して実行指示を行う。具体的には、加算器６Ａの実行が可能なら汎用レジスタ１０Ａからオペランドデータを読み出して加算器６Ａにデータを送付し同時に実行指示１０３Ａを送付する。同様に、乗算器９Ａの実行が可能なら汎用レジスタ１０Ａからオペランドデータを読み出して乗算器９Ａにデータを送付し同時に実行指示１０６Ａを送付する。
【００２１】
また、命令発行回路５Ａは、発行した実行指示の数を実行指示同時発行数として制御回路１へ通知する。そして、命令発行回路５Ａは、制御回路１から実行可能演算器残数を受け付ける。そして、命令発行回路５Ａは、演算器の起動を行う場合、実行可能演算器残数の値を見ながら起動の判断を行っている。他のプロセッサもプロセッサ４Ａと同様の動作を行う。つまり、プロセッサ４Ａ〜４Ｎのそれぞれは、実行可能演算器残数に応じて未実行の演算器を実行するか否かを決定する。そして、複数の処理回路のそれぞれは、実行すると決定した演算器の数が実行可能演算器残数を超える場合、当該超える分の演算器の実行の開始を保留する。これにより、演算処理装置２００全体としての性能の最適化を図ることができる。
【００２２】
尚、プロセッサ４Ｎは他のプロセッサの一例である。プロセッサ４Ｎは、例えば、命令発行回路５Ｎ、加算器６Ｎ、加算器７Ｎ、乗算器８Ｎ、乗算器９Ｎ及び汎用レジスタ１０Ｎを備える。尚、プロセッサ４Ａ〜４Ｎが備える演算器の種類及び数は、上述したものに限定されない。
【００２３】
図４は、本発明の実施の形態２にかかる演算器同時実行制御処理の例を示すタイムチャートである。タイミングｔ１において、命令発行回路５Ａは、加算器６Ａを起動するために実行指示１０３Ａを発行する。同様に、命令発行回路５Ａは、乗算器８Ａを起動するために実行指示１０５Ａを発行する。このとき、命令発行回路５Ａは、タイミングｔ１の実行指示同時発行数１００Ａを"２"として比較報告回路３へ通知する。
【００２４】
同様に、タイミングｔ１において、命令発行回路５Ｎは、加算器６Ｎを起動するために実行指示１０３Ｎを発行する。このとき、命令発行回路５Ｎは、タイミングｔ１の実行指示同時発行数１００Ｎを"１"として比較報告回路３へ通知する。
【００２５】
タイミングｔ１において、比較報告回路３は、全プロセッサからの実行指示同時発行数１００Ａ〜１００Ｎを集計して"３"の値を算出する。そして、制御回路１は、閾値レジスタ２に格納された上限値"５"と上記集計結果"３"との比較を行い、その差分値"２"を算出する。その後、比較報告回路３は、差分値"２"を実行可能演算器残数１０１Ａ〜１０１Ｎとして、プロセッサ４Ａ〜４Ｎのそれぞれへ通知する。
【００２６】
タイミングｔ２において、プロセッサ４Ａは、再度、加算器６Ａ及び乗算器８Ａの起動を試みる。このとき、実行指示同時発行数１００Ａがタイミングｔ１と同数"２"となるため、そのまま実行指示１０３Ａ及び実行指示１０５Ａを発行し、実行指示同時発行数１００Ａ"２"を比較報告回路３へ通知する。また、プロセッサ４Ｎは、加算器６Ｎに加え、加算器７Ｎの起動を試みる。このとき、実行指示同時発行数１００Ｎが直前のタイミングｔ１と比べて"１"大きい"２"となる。但し、タイミングｔ１で通知された実行可能演算器余裕数１０１Ｎが"２"であるため、命令発行回路５Ｎは、そのまま実行指示１０３Ｎ及び実行指示１０４Ｎを発行し、実行指示同時発行数１００Ｎ"２"を比較報告回路３へ通知する。
【００２７】
タイミングｔ２において、比較報告回路３は、全プロセッサからの実行指示同時発行数１００Ａ〜１００Ｎを集計して"４"の値を算出し、上限値"５"との差分値"１"を算出する。その後、比較報告回路３は、差分値"１"を実行可能演算器残数１０１Ａ〜１０１Ｎとして、プロセッサ４Ａ〜４Ｎのそれぞれへ通知する。
【００２８】
タイミングｔ３において、プロセッサ４Ａは、加算器６Ａ及び乗算器８Ａに加え、加算器７Ａの起動を試みる。このとき、実行指示同時発行数１００Ａが直前のタイミングｔ２と比べて"１"大きい"３"となる。但し、タイミングｔ２で通知された実行可能演算器余裕数１０１Ａが"１"であるため、命令発行回路５Ａは、そのまま実行指示１０３Ａ、１０４Ａ及び１０５Ａを発行し、実行指示同時発行数１００Ａ"３"を比較報告回路３へ通知する。また、プロセッサ４Ｎは、再度、加算器６Ｎ及び加算器７Ｎの起動を試みる。このとき、実行指示同時発行数１００Ｎがタイミングｔ２と同数"２"となるため、そのまま実行指示１０３Ｎ及び１０４Ｎを発行し、実行指示同時発行数１００Ｎ"２"を比較報告回路３へ通知する。
【００２９】
タイミングｔ３において、比較報告回路３は、全プロセッサからの実行指示同時発行数１００Ａ〜１００Ｎを集計して"５"の値を算出し、上限値"５"との差分値"０"を算出する。その後、比較報告回路３は、差分値"０"を実行可能演算器残数１０１Ａ〜１０１Ｎとして、プロセッサ４Ａ〜４Ｎのそれぞれへ通知する。
【００３０】
タイミングｔ４において、プロセッサ４Ａは、再度、加算器６Ａ、加算器７Ａ及び乗算器８Ａの起動を試みる。このとき、実行指示同時発行数１００Ａがタイミングｔ３と同数"３"となるため、そのまま実行指示１０３Ａ、１０４Ａ及び１０５Ａを発行し、実行指示同時発行数１００Ａ"３"を比較報告回路３へ通知する。
【００３１】
また、プロセッサ４Ｎは、加算器６Ｎ及び加算器７Ｎに加え、乗算器８Ｎの起動を試みる。このとき、実行指示同時発行数１００Ｎが直前のタイミングｔ３と比べて"１"大きい"３"となってしまう。タイミングｔ３で通知された実行可能演算器余裕数１０１Ｎが"０"であるため、命令発行回路５Ｎは、直前に発行済みの実行指示１０３Ｎ及び１０４Ｎについては継続して発行しつつ、実行指示１０５Ｎについては発行を抑制する。つまり、未実行の演算器である乗算器８Ｎについての実行を保留し、乗算器８Ｎの起動を遅らせている。もし、このときに実行指示１０５Ｎまで発行してしまうと、全プロセッサの演算器の同時実行数の上限値"５"を超えてしまうためである。そして、命令発行回路５Ｎは、実行指示同時発行数１００Ｎ"２"を比較報告回路３へ通知する。
【００３２】
タイミングｔ４において、比較報告回路３は、タイミングｔ３と同様に、差分値"０"を算出し、実行可能演算器残数１０１Ａ〜１０１Ｎとして、プロセッサ４Ａ〜４Ｎのそれぞれへ通知する。
【００３３】
タイミングｔ５において、プロセッサ４Ａは、タイミングｔ３及びｔ４と同様に動作する。そして、プロセッサ４Ｎは、加算器６Ｎ及び乗算器８Ｎの起動を試みる。このとき、加算器７Ｎが演算終了により起動不要となり、乗算器８Ｎの起動が可能となる。すなわち、実行指示同時発行数１００Ｎがタイミングｔ４と同数"２"となるため、プロセッサ４Ｎは、実行指示１０３Ｎ及び１０５Ｎを発行し、実行指示同時発行数１００Ｎ"２"を比較報告回路３へ通知する。
【００３４】
タイミングｔ５において、比較報告回路３は、タイミングｔ４と同様に、差分値"０"を算出し、実行可能演算器残数１０１Ａ〜１０１Ｎとして、プロセッサ４Ａ〜４Ｎのそれぞれへ通知する。
【００３５】
以上説明したように本発明においては、以下に記載するような効果を奏する。それは、全プロセッサにおいて同時に実行可能な演算器の数の上限値を予め保持する閾値レジスタと複数のプロセッサ間における同時に動作させる演算器の動作状態を把握する機構を用意することで、把握した結果から演算器の起動をずらして動作させることが可能となり、同時に動作開始する演算器を減少させて電圧変動を低減できることである。
【００３６】
また、制御回路１は、実行可能演算器残数を集中管理して各プロセッサに配布している。これにより、各プロセッサは、通知された実行可能演算器残数を基に自律的に未実行の演算器の実行可否を判定でき、処理の高速化を図ることができる。
【００３７】
具体的には、制御回路１は、各プロセッサで動作させる演算器数を把握できる信号を各プロセッサから受け付けて集計することで、総数を把握する。そして、各プロセッサは、未実行の演算器を実行させると、全演算器の動作数が閾値を超えてしまう場合には、当該演算器の起動を遅らせる。そして、全演算器の動作数が閾値を下回った場合に、当該起動を遅らせた演算器を起動させる。これにより、電圧変動が急峻になることを防げる。
【００３８】
さらに、制御回路１は、演算処理装置２００全体における電圧変動量の許容値に基づき定まる同時に実行可能な演算器の数を外部のプログラム等から受け付け、当該受け付けた演算器の数を上限値として閾値レジスタ２を更新することが望ましい。プログラムで指定される演算器の動作数に依存して電圧値が変わるが、閾値レジスタを電圧変動の最大許容値に設定することで大きく性能を落とさない処理が可能となる。
【００３９】
また、複数のプロセッサのうち一のプロセッサは、未実行の演算器を実行すると決定した場合、その旨を他のプロセッサに対して通知するとさらに良い。これにより、他のプロセッサが当該通知により自己の未実行の演算器の実行を抑制することで、演算処理装置２００全体の性能を維持することができる。
【００４０】
さらに、複数のプロセッサのうち一のプロセッサは、未実行の演算器を実行すると決定した場合、差分値から当該実行すると決定された演算器の数を減じた値を新たな差分値として他の処理回路に対して通知するようにしてもよい。これにより、各プロセッサは、再度、比較報告回路３から実行可能演算器残数１０１Ａ等の通知を待つことなく、自己の未実行の演算器の実行を抑制することができる。
【００４１】
＜発明の実施の形態３＞
本発明の他の実施形態では、その基本的構成は上記の通りであるが、電圧変動の低減についてさらに工夫している。図５は、本発明の実施の形態３にかかる演算処理装置３００の構成を示すブロック図である。演算処理装置３００は、制御回路１と、プロセッサ４Ａ〜４Ｎとを備える。尚、制御回路１は、実施の形態２の図３と同等であるため、詳細な説明を省略する。
【００４２】
実施の形態３に係る命令発行回路５Ａは、実施の形態２と比べて、閾値レジスタ１２Ａと、データ分散値レジスタ１１Ａをさらに備える。同様に、命令発行回路５Ｎは、閾値レジスタ１２Ｎと、データ分散値レジスタ１１Ｎをさらに備える。命令発行回路５Ａ〜５Ｎのそれぞれは、各演算器における演算結果のデータのばらつきを示す分布値をさらに考慮して未実行の演算器を実行するか否かを決定する。尚、以下では、説明のため命令発行回路５Ａについて記載するが、命令発行回路５Ａ以外についても同様である。
【００４３】
図６は、本発明の実施の形態３にかかる汎用レジスタ１０Ａとデータ分散値レジスタ１１Ａとの関係を示す図である。汎用レジスタ１０Ａには、１セット当たり３２要素のデータを、８セット分（セット０〜７）格納されていることを示す。また、データ分散値レジスタ１１Ａには、セット内のデータにおけるデータのばらつき指標を示す値である分布値が各セットに対応して格納されていることを示す。
【００４４】
図５に戻って説明する。プロセッサ４Ａの加算器６Ａ、加算器７Ａ、乗算器８Ａ及び乗算器９Ａは、例えば、１回の演算で、汎用レジスタ１０Ａから３２要素を２セット分読み出して演算を行うものとする。そして、各演算器は、３２要素（１セット分）の演算を行った演算結果を汎用レジスタ１０Ａに書き込む。併せて、各演算器は、１セット単位に、分布値を算出して、汎用レジスタ１０Ａのセットに対応付けてデータ分散値レジスタ１１Ａに格納する。
【００４５】
ここで、分布値は、データ１つ当たりどの程度ばらついているかを示す値である。分布値に統計学上の分散値を用いる場合には、以下の式（１）により算出することができる。
分散値Ｖ＝｛Σ（Ｘｉ−Ｘｎ）２｝／（ｎ−１）      ・・・（１）
ここで、ｎは、１セット当たりの要素数、Ｘｎは平均値、Ｘｉは、各要素の値、つまり、汎用レジスタ１０Ａに格納される演算結果を示す。
【００４６】
閾値レジスタ１２Ａは、分散値の閾値を予め記憶する。そして、命令発行回路５Ａは、プログラムに従いある演算器に対して実行指示を行う場合、直前に動作していた演算器の演算結果に対応する分散値をデータ分散値レジスタ１１Ａから読み出し、閾値レジスタ１２Ａに格納された閾値と比較する。このとき、実行可能演算器残数１０１Ａが"０"であっても分散値が閾値以内である場合、命令発行回路５Ａは、予定通り演算器へ実行指示を発行する。分散値が小さい場合には、電流変動が小さいと考えられるからである。または、実行可能演算器残数１０１Ａが"１"以上であっても分散値が閾値以上である場合に、命令発行回路５Ａは、演算器へ実行指示を保留しても構わない。例え、同時実行数が許容範囲だとしても、電流変動が大きい可能性があるためである。このように、実施の形態３では、データの変動分を考慮して実行指示を出すことで大きく性能を落とさない処理が可能となる。
【００４７】
また、各演算器における分布値の算出時間を短縮化するために、以下の式（２）により算出される分布値を用いることもできる。
分布値Ｖ'＝｛Σ（Ｘｉ−Ｘｎ）２｝      ・・・（２）
式（２）は、式（１）から要素数に応じた除算を省略したものである。つまり、分布値Ｖ'は、分散値Ｖの除算前の値であり、いわば演算結果から分散値を算出する過程で求まる値である。この場合、閾値レジスタ１２Ａには、各演算器における演算対象の要素数に応じた分布値の閾値を予め格納しておけばよい。分布値Ｖ'は、分散値Ｖと違い、合算する個数（最大３２要素）によっても異なるためである。
【００４８】
そのため、各演算器は、除算を省略して分布値を算出してデータ分散値レジスタ１１Ａに格納できる。その後、命令発行回路５Ａは、演算器の演算対象の要素数に対応する閾値を閾値レジスタ１２Ａから読み出して、データ分散値レジスタ１１Ａから読み出した分布値との間で、同様に比較することができる。これにより、各演算器は、除算動作不要となり分布値Ｖ'の算出時間を短縮することができる。
【００４９】
図７は、本発明の実施の形態３にかかる演算器同時実行制御処理の例を示すタイムチャートである。図７では、演算処理する要素数を"４"としている。尚、実際には、実行指示から結果が得られるまで数サイクルを必要とするが、ここでは、説明の便宜のため、演算結果とデータ分散値はそのタイミングで生成されると仮定したタイムチャートとしている。
【００５０】
ここで、データ分散値（分布値）の生成について説明する。タイミングｔ１において、命令発行回路５Ａは、加算器６Ａを起動するために実行指示１０３Ａを発行し、加算器６Ａは、セット０の演算結果を汎用レジスタ１０Ａに、セット０の分布値Ａ１をデータ分散値レジスタ１１Ａに格納する。次に、タイミングｔ２において、命令発行回路５Ａは、加算器６Ａを起動するために実行指示１０３Ａを発行し、加算器６Ａは、セット１の演算結果を汎用レジスタ１０Ａに、セット０及び１の分布値Ａ２をデータ分散値レジスタ１１Ａに格納する。そして、タイミングｔ３において、命令発行回路５Ａは、加算器６Ａを起動するために実行指示１０３Ａを発行し、加算器６Ａは、セット２の演算結果を汎用レジスタ１０Ａに、セット０〜２の分布値Ａ３をデータ分散値レジスタ１１Ａに格納する。さらに、タイミングｔ４において、命令発行回路５Ａは、加算器６Ａを起動するために実行指示１０３Ａを発行し、加算器６Ａは、セット３の演算結果を汎用レジスタ１０Ａに、セット０〜３の分布値Ａ４をデータ分散値レジスタ１１Ａに格納する。また、乗算器８Ａもタイミングｔ１〜ｔ４において、セット０〜３の演算結果と、セット０〜３の分布値Ｃ１〜Ｃ４とをそれぞれ汎用レジスタ１０Ａ及びデータ分散値レジスタ１１Ａに格納する。このようにデータ分散値は、処理する要素を前タイミング結果に足しこみながら生成していく。
【００５１】
一方、演算器を起動する制御について説明する。タイミングｔ２において、プロセッサ４Ａは、加算器６Ａと乗算器８Ａが動作しているので、実行指示同時発行数１００Ａ"２"を比較報告回路３に通知する。同時に、プロセッサ４Ｎは、加算器６Ｎが動作しているので、実行指示同時発行数１００Ｎ"１"を比較報告回路３に通知する。
【００５２】
タイミングｔ５において、命令発行回路５Ａは、直前のタイミングｔ４で比較報告回路３から通知された実行可能演算器残数１０１Ａ"０"を参照して、演算器の起動を行う。その際に、命令発行回路５Ａは、タイミングｔ４で演算が完了した加算器６Ａの演算結果に対応する分布値Ａ４及び乗算器８Ａの演算結果に対応する分布値Ｃ４を、データ分散値レジスタ１１Ａから参照しつつ、乗算器９Ａの起動判断を行う。ここでは、分布値"Ａ４"と分布値"Ｃ４"の値が閾値より小さいものとする。この場合、命令発行回路５Ａは、乗算器９Ａが実行可能と判断し、タイミングｔ５で実行指示１０６Ａを発行する。また、タイミングｔ５において仮に分布値"Ａ４"と分布値"Ｃ４"の値のいずれかが閾値を上回っていた場合、実行可能演算器残数１０１Ａに余裕があったとしても、命令発行回路５Ａは、乗算器９Ａの実行指示の発行を保留する。
【００５３】
このように、本実施の形態３では、読み出すデータの分散値を参照しながら起動判断を行っているので、データの変動分を考慮して実行指示を出すことができ、演算処理装置３００全体の性能を大きく落とさない処理が可能となる。
【００５４】
＜その他の発明の実施の形態＞
尚、本発明の実施の形態２は、電圧変動に対応した処理装置において、同時に動作させる演算器の動作状態を把握し、把握した結果から演算器起動をずらして動作させることにより、同時に動作開始する演算器を減少させて電圧変動を低減させることを特徴としている。
【００５５】
具体的には、設定値を可変にできる閾値レジスタを用意しておいて、動作させる演算器数を把握できる信号を各プロセッサで把握しながら全演算器の動作数が閾値を超えた場合、電圧変動が急峻にならないように閾値を超えた演算器の動作を遅らせるように動作させる。プログラムで指定される演算器の動作数に依存して電圧値が変わるが、閾値レジスタを電圧変動の最大許容値に設定することで大きく性能を落とさない処理が可能となる。
【００５６】
そして、演算器動作数の他にデータに依存しても電圧変動値が変わるので、演算器で処理するデータのばらつき値として分散値を参照しながら動作させる演算器数を可変にできる処理装置も提供する。具体的には、汎用レジスタにデータを書き込む際に、統計学で使用されている分散値を回路で求めながら最後の算出結果を汎用レジスタ分散値レジスタに保持する。演算器を動作させる場合には、演算器の動作数に加えて汎用レジスタ分散値も参考にしながら電圧変動が急峻にならないように演算器の動作を遅らせるように動作させる。
【００５７】
このように、本発明の実施の形態２では、設定値を可変にできる閾値レジスタを電圧変動の最大許容値に設定しながら演算器の動作状態を把握して処理を行うようにしているので、大きく性能を落とすことなく電圧変動に対応した動作が可能となる。
【００５８】
言い換えると、本発明の実施の形態２にかかる演算処理装置２００は、電圧変動対応処理装置と呼ぶことができる。そして、当該電圧変動対応処理装置は、設定値を可変に変更できる閾値レジスタを追加して、全プロセッサ内の演算器数をカウントする機構を用意する。全プロセッサの演算器数が閾値を超える場合は演算起動が追加される演算器に対して演算起動を遅らせることで、電圧変動を抑止することを特徴とする。
【００５９】
また、本発明の実施の形態３は、演算器が処理する汎用レジスタ内データから分散値から求めて、レジスタに保存する機能を持つ。そして、演算処理を開始する場合、汎用レジスタからのデータ読み出しと同時にデータ分散値の読み出しも行う。ここで、大きなデータ分散差を示す内容では、演算器の電圧変動が大きくなる可能性があり、このデータ分散値を参考にして演算器の動作を制御する。そして、データ分散値が閾値を超える場合は、演算起動が追加される演算器に対して演算起動を遅らせることで、電圧変動を抑止することを特徴とする。
【００６０】
さらに、本発明は上述した実施の形態のみに限定されるものではなく、既に述べた本発明の要旨を逸脱しない範囲において種々の変更が可能であることは勿論である。
【００６１】
上記の実施形態の一部又は全部は、以下の付記のようにも記載され得るが、以下には限られない。
【００６２】
（付記１）  同時に実行可能な複数の演算器を有する複数の処理回路と、
各処理回路で実行中の演算器の総数を集計する制御回路と、を備え、
前記複数の処理回路のそれぞれは、前記制御回路が集計した集計結果に応じて自己が有する演算器のうち未実行の演算器を実行するか否かを決定する
演算処理装置。
【００６３】
（付記２）  前記制御回路は、
前記複数の処理回路全てにおいて同時に実行可能な演算器の数の上限値を記憶する閾値レジスタを有し、
前記複数の処理回路のそれぞれは、自己の処理回路内で同時に実行中の演算器の数である同時実行演算器数を前記制御回路へ通知し、
前記制御回路は、各処理回路から通知された前記同時実行演算器数を集計して前記総数を算出し、
当該総数と前記上限値との差分値を各処理回路へ通知し、
前記複数の処理回路のそれぞれは、前記差分値に応じて前記未実行の演算器を実行するか否かを決定する
ことを特徴とする付記１に記載の演算処理装置。
【００６４】
（付記３）  前記複数の処理回路のそれぞれは、前記実行すると決定した演算器の数が前記差分値を超える場合、当該超える分の演算器の実行の開始を保留することを特徴とする付記２に記載の演算処理装置。
【００６５】
（付記４）  前記制御回路は、前記演算処理装置全体における電圧変動量の許容値に基づき定まる同時に実行可能な演算器の数を外部から受け付け、当該受け付けた演算器の数を前記上限値として前記閾値レジスタを更新することを特徴とする付記２又は３に記載の演算処理装置。
【００６６】
（付記５）  前記複数の処理回路のうち一の処理回路は、前記未実行の演算器を実行すると決定した場合、その旨を他の処理回路に対して通知することを特徴とする付記２乃至４のいずれか１項に記載の演算処理装置。
【００６７】
（付記６）  前記複数の処理回路のそれぞれは、
各演算器における演算結果のデータのばらつきを示す分布値をさらに考慮して前記未実行の演算器を実行するか否かを決定する
ことを特徴とする付記１乃至５のいずれか１項に記載の演算処理装置。
【００６８】
（付記７）  前記複数の処理回路のそれぞれは、
各演算器における演算対象の要素数に応じた前記分布値の閾値を予め保持し、
前記演算結果から分散値を算出する過程で求まる値を前記分布値とし、
当該分布値と前記閾値とに基づいて前記未実行の演算器を実行するか否かを決定する
ことを特徴とする付記６に記載の演算処理装置。
【００６９】
（付記８）  同時に実行可能な複数の演算器を有する複数の処理回路を制御する制御回路が、各処理回路で実行中の演算器の総数を集計し、
前記複数の処理回路のそれぞれが、前記集計された集計結果に応じて自己が有する演算器のうち未実行の演算器を実行するか否かを決定する
演算器同時実行制御方法。
【００７０】
（付記９）  前記複数の処理回路のそれぞれが、自己の処理回路内で同時に実行中の演算器の数である同時実行演算器数を前記制御回路へ通知し、
前記制御回路が、
各処理回路から通知された前記同時実行演算器数を集計して前記総数を算出し、
当該総数と前記複数の処理回路全てにおいて同時に実行可能な演算器の数の上限値との差分値を各処理回路へ通知し、
前記複数の処理回路のそれぞれが、前記差分値に応じて前記未実行の演算器を実行するか否かを決定する
ことを特徴とする付記８に記載の演算器同時実行制御方法。
【００７１】
（付記１０）  前記複数の処理回路のそれぞれは、前記実行すると決定した演算器の数が前記差分値を超える場合、当該超える分の演算器の実行の開始を保留することを特徴とする付記９に記載の演算器同時実行制御方法。
【００７２】
（付記１１）  前記制御回路は、前記演算処理装置全体における電圧変動量の許容値に基づき定まる同時に実行可能な演算器の数を外部から受け付け、当該受け付けた演算器の数を前記上限値として前記閾値レジスタを更新することを特徴とする付記９又は１０に記載の演算器同時実行制御方法。
【００７３】
（付記１２）  前記複数の処理回路のうち一の処理回路は、前記未実行の演算器を実行すると決定した場合、その旨を他の処理回路に対して通知することを特徴とする付記９乃至１１のいずれか１項に記載の演算器同時実行制御方法。
【００７４】
（付記１３）  前記複数の処理回路のそれぞれは、
各演算器における演算結果のデータのばらつきを示す分布値をさらに考慮して前記未実行の演算器を実行するか否かを決定する
ことを特徴とする付記８乃至１２のいずれか１項に記載の演算器同時実行制御方法。
【００７５】
（付記１４）  前記複数の処理回路のそれぞれは、
各演算器における演算対象の要素数に応じた前記分布値の閾値を予め保持し、
前記演算結果から分散値を算出する過程で求まる値を前記分布値とし、
当該分布値と前記閾値とに基づいて前記未実行の演算器を実行するか否かを決定する
ことを特徴とする付記１３に記載の演算器同時実行制御方法。
【符号の説明】
【００７６】
１００  演算処理装置
２００  演算処理装置
３００  演算処理装置
１１０  制御回路
１２０Ａ  処理回路
１２０Ｎ  処理回路
１３Ａ  演算器
１３Ｍ  演算器
１４Ａ  演算器
１４Ｌ  演算器
１  制御回路
２  閾値レジスタ
３  比較報告回路
４Ａ  プロセッサ
５Ａ  命令発行回路
６Ａ  加算器
７Ａ  加算器
８Ａ  乗算器
９Ａ  乗算器
１０Ａ  汎用レジスタ
１１Ａ  データ分散値レジスタ
１２Ａ  閾値レジスタ
１００Ａ  実行指示同時発行数
１０１Ａ  実行可能演算器残数
１０２Ａ  データ分散値
１０３Ａ  実行指示
１０４Ａ  実行指示
１０５Ａ  実行指示
１０６Ａ  実行指示
４Ｎ  プロセッサ
５Ｎ  命令発行回路
６Ｎ  加算器
７Ｎ  加算器
８Ｎ  乗算器
９Ｎ  乗算器
１０Ｎ  汎用レジスタ
１１Ｎ  データ分散値レジスタ
１２Ｎ  閾値レジスタ
１００Ｎ  実行指示同時発行数
１０１Ｎ  実行可能演算器余裕数
１０２Ｎ  データ分散値
１０３Ｎ  実行指示
１０４Ｎ  実行指示
１０５Ｎ  実行指示
１０６Ｎ  実行指示
９００  演算処理装置
９４Ａ  プロセッサ
９５Ａ  命令発行回路
９４Ｎ  プロセッサ
９５Ｎ  命令発行回路
ｔ１  タイミング
ｔ２  タイミング
ｔ３  タイミング
ｔ４  タイミング
ｔ５  タイミング
ｔ６  タイミング
ｔ７  タイミング
ｔ８  タイミング
ｔ９  タイミング
【図１】
0005804507.tif 000002
【図２】
0005804507.tif 000003
【図３】
0005804507.tif 000004
【図４】
0005804507.tif 000005
【図５】
0005804507.tif 000006
【図６】
0005804507.tif 000007
【図７】
0005804507.tif 000008
【図８】
0005804507.tif 000009