(57)【要約】【課題】実行中のジョブを停止させたり処理時間を過剰に冗長させたりすることなくベクトル計算機における単位時間当たりの電力消費を軽減する。【解決手段】ａ１〜ａｊのマイクロプロセッサのうちベクトル命令を実行するマイクロプロセッサの稼働時間の総和を１サンプリング周期毎に求める。１サンプリング周期に相当する全マイクロプロセッサａ１〜ａｊの稼働可能時間の総和に対してベクトル命令を実行するマイクロプロセッサの稼働時間の総和が占める割合が予め決められた稼動停止閾値６と稼動再開閾値７の間に収まるようにマイクロプロセッサａ１〜ａｊの各々を稼動状態から非稼動状態に、あるいは、非稼動状態から稼動状態に切り替え制御する。【選択図】図１
2010224853.tif 000002
【特許請求の範囲】
【請求項１】
ベクトル命令とスカラ命令を実行する複数のマイクロプロセッサと、前記各マイクロプロセッサに実行対象とするタスクを割り当てるディスパッチング手段とを備えたベクトル計算機であって、
前記各マイクロプロセッサを稼動状態とすべきか非稼動状態とすべきかを各マイクロプロセッサ毎に記憶する動作態様記憶手段と、
予め決められた１サンプリング周期内においてベクトル命令を実行するマイクロプロセッサの稼働時間の総和を求めるベクトル実行時間測定手段と、
前記１サンプリング周期に相当する全マイクロプロセッサの稼働可能時間の総和に対して前記稼働時間の総和が占める割合を求め、その割合が予め設定された閾値を上回ると前記動作態様記憶手段を参照して稼動状態とすべきマイクロプロセッサのうち少なくとも1つのマイクロプロセッサを非稼動状態とすべきマイクロプロセッサとして前記記憶手段に更新記憶させる一方、前記割合が予め設定された閾値を下回ると前記動作態様記憶手段を参照して非稼動状態とすべきマイクロプロセッサのうち少なくとも1つのマイクロプロセッサを稼動状態とすべきマイクロプロセッサとして前記動作態様記憶手段に更新記憶させるＣＰＵ稼動判定手段とを設け、
前記ディスパッチング手段は、前記動作態様記憶手段に稼動状態とすべきマイクロプロセッサとして記憶されているマイクロプロセッサに対してのみ実行対象とするタスクを割り当て、他のマイクロプロセッサを非稼動状態とするように構成したことを特徴とするベクトル計算機。
【請求項２】
前記閾値として稼動停止閾値と該稼動停止閾値よりも値の小さな稼動再開閾値とを記憶する閾値記憶手段を有し、
前記ＣＰＵ稼動判定手段は、前記割合が前記稼動停止閾値を上回ると稼動状態とすべきマイクロプロセッサのうち少なくとも1つのマイクロプロセッサを非稼動状態とすべきマイクロプロセッサとして前記動作態様記憶手段に更新記憶させる一方、前記割合が前記稼動再開閾値を下回ると非稼動状態とすべきマイクロプロセッサのうち少なくとも1つのマイクロプロセッサを稼動状態とすべきマイクロプロセッサとして前記動作態様記憶手段に更新記憶させるように構成されていることを特徴とする請求項１記載のベクトル計算機。
【請求項３】
前記閾値記憶手段に閾値を設定するための閾値設定手段を備えたことを特徴とする請求項１または請求項２のうち何れか一項に記載のベクトル計算機。
【請求項４】
ベクトル命令とスカラ命令を実行する複数のマイクロプロセッサに実行対象とするタスクを割り当ててベクトル命令とスカラ命令を並列的に実行するベクトル計算機におけるマイクロプロセッサのスケジューリング方法であって、
ベクトル命令を実行するマイクロプロセッサの稼働時間の総和を１サンプリング周期毎に求め、
前記１サンプリング周期に相当する全マイクロプロセッサの稼働可能時間の総和に対して前記稼働時間の総和が占める割合が予め決められた閾値を上回ると稼動状態にあるマイクロプロセッサのうち少なくとも1つのマイクロプロセッサを非稼動状態とする一方、前記割合が予め決められた閾値を下回ると非稼動状態にあるマイクロプロセッサのうち少なくとも1つのマイクロプロセッサを稼動状態とし、
稼動状態にあるマイクロプロセッサに対してのみ実行対象とするタスクを割り当てるようにしたことを特徴とするベクトル計算機におけるマイクロプロセッサのスケジューリング方法。
【請求項５】
前記割合が予め決められた稼動停止閾値を上回ると稼動状態にあるマイクロプロセッサのうち少なくとも1つのマイクロプロセッサを非稼動状態とする一方、前記割合が前記稼動停止閾値よりも小さな値からなる予め決められた稼動再開閾値を下回ると非稼動状態にあるマイクロプロセッサのうち少なくとも1つのマイクロプロセッサを稼動状態とすることを特徴とした請求項４記載のベクトル計算機におけるマイクロプロセッサのスケジューリング方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ベクトル計算機およびベクトル計算機におけるマイクロプロセッサのスケジューリング方法に関する。
【背景技術】
【０００２】
計算機システムには、多プロセッサ化や多ノード化あるいは大規模化が進むにつれ、実行時の消費電力も多くなるといった問題がある。
また、ベクトル計算機にあっては、スカラ命令を実行する場合に比べ、ベクトル命令を実行する場合の方が消費電力が大きくなるという傾向がある。例えば、あるベクトル計算機で実測した場合、ベクトル命令使用時の電力消費量は、スカラ命令使用時の１．３倍となり、ベクトル命令を使用する場合の方が多くの電力を消費することは明らかである。
【０００３】
一般的なジョブスケジューラでは、例えば、特許文献１に開示されるように、同時に実行するジョブ数を制限することやジョブの実行できるマイクロプロセッサの数を制限するといった方法でマイクロプロセッサの負荷や消費電力を軽減する方法を提供しているが、ベクトル計算機上で実行されるプログラム中で使用されるベクトル命令数の比率は一様ではないから、単純にジョブ数を制限したりタスクを割り当てるマイクロプロセッサ数を制限したりしても消費電力の削減になるとは限らず、消費電力を考慮した制御が困難であった。しかも、実行するジョブ数を制限して負荷を軽減する方法では、実行中のジョブを停止させなければならないという問題もある。
【０００４】
省電力を実現する他の方法としては、コンパイル時の中間コードからプログラムブロック毎の実行時刻をプロファイル情報として抽出し、更に、プロファイル情報を解析してアイドル時間を見積り、プログラムブロックの実行に支障を生じない程度にアイドル時間中のクロック周波数を低下させるようにした情報処理装置の省電力化方法が特許文献２として提案されている。
しかしながら、このような方法では、プロファイル情報の抽出やアイドル時間の見積りおよびクロック周波数の特定といった前処理が必要となって全体的な処理時間が冗長する不都合、クロック周波数を調整するためのハードウェアの実装による装置の複雑化やコストアップの問題が派生する可能性が高い。また、複数のジョブが同時に実行されるような状況下にあっては、プロファイル情報の抽出やプロファイル情報の解析ひいてはアイドル時間の見積りやアイドル時間に適したクロック周波数の特定といった処理それ自体が著しく複雑化して非実用的となるといったことも想定される。
【０００５】
また、これとは別に、ソースプログラムを解析してベクトル処理が可能なコード部分を抽出するベクトル化の処理を行い、全体的な処理時間が最小化されるように、ベクトルプロセッサとスカラプロセッサにベクトル化されたコードの命令を分配するようにしたベクトル化方式が特許文献３として提案されている。
しかしながら、このものも、ソースプログラムの解析や処理時間を最小化するための処理が前処理として必要となる点では前述の省電力化方法と同様であり、全体的な処理時間が冗長するといった不都合は免れない。
【０００６】
なお、マルチコア環境下における複数のマイクロプロセッサにタスクを割り当てるための処理（ディスパッチング手段）については特許文献２の段落００１８等で既に公知であり、また、ベクトル命令とスカラ命令を実行する複数のマイクロプロセッサを備えたベクトル計算機の基本的な構成については特許文献３の段落０００２−０００３等で既に公知である。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００７−３３４７８２号公報（段落００１０）
【特許文献２】特開２００７−３３４４９７号公報（段落００１０，００１８）
【特許文献３】特開２００４−４６７４７号公報（段落００１１，０００２−０００３）
【発明の概要】
【発明が解決しようとする課題】
【０００８】
そこで、本発明の目的は、実行中のジョブを停止させたり処理時間を過剰に冗長させたりすることなくベクトル計算機における単位時間当たりの電力消費を軽減することのできるベクトル計算機およびベクトル計算機におけるマイクロプロセッサのスケジューリング方法を提供することにある。
【課題を解決するための手段】
【０００９】
本発明のベクトル計算機は、ベクトル命令とスカラ命令を実行する複数のマイクロプロセッサと、前記各マイクロプロセッサに実行対象とするタスクを割り当てるディスパッチング手段とを備えたベクトル計算機であり、前記目的を達成するため、特に、
前記各マイクロプロセッサを稼動状態とすべきか非稼動状態とすべきかを各マイクロプロセッサ毎に記憶する動作態様記憶手段と、
予め決められた１サンプリング周期内においてベクトル命令を実行するマイクロプロセッサの稼働時間の総和を求めるベクトル実行時間測定手段と、
前記１サンプリング周期に相当する全マイクロプロセッサの稼働可能時間の総和に対して前記稼働時間の総和が占める割合を求め、その割合が予め設定された閾値を上回ると前記動作態様記憶手段を参照して稼動状態とすべきマイクロプロセッサのうち少なくとも1つのマイクロプロセッサを非稼動状態とすべきマイクロプロセッサとして前記動作態様記憶手段に更新記憶させる一方、前記割合が予め設定された閾値を下回ると前記動作態様記憶手段を参照して非稼動状態とすべきマイクロプロセッサのうち少なくとも1つのマイクロプロセッサを稼動状態とすべきマイクロプロセッサとして前記動作態様記憶手段に更新記憶させるＣＰＵ稼動判定手段とを設け、
前記ディスパッチング手段は、前記動作態様記憶手段に稼動状態とすべきマイクロプロセッサとして記憶されているマイクロプロセッサに対してのみ実行対象とするタスクを割り当て、他のマイクロプロセッサを非稼動状態とするように構成したことを特徴とする構成を有する。
【００１０】
また、本発明のベクトル計算機におけるマイクロプロセッサのスケジューリング方法は、ベクトル命令とスカラ命令を実行する複数のマイクロプロセッサに実行対象とするタスクを割り当ててベクトル命令とスカラ命令を並列的に実行するベクトル計算機におけるマイクロプロセッサのスケジューリング方法であり、前記と同様の目的を達成するため、特に、
ベクトル命令を実行するマイクロプロセッサの稼働時間の総和を１サンプリング周期毎に求め、
前記１サンプリング周期に相当する全マイクロプロセッサの稼働可能時間の総和に対して前記稼働時間の総和が占める割合が予め決められた閾値を上回ると稼動状態にあるマイクロプロセッサのうち少なくとも1つのマイクロプロセッサを非稼動状態とする一方、前記割合が予め決められた閾値を下回ると非稼動状態にあるマイクロプロセッサのうち少なくとも1つのマイクロプロセッサを稼動状態とし、
稼動状態にあるマイクロプロセッサに対してのみ実行対象とするタスクを割り当てるようにしたことを特徴とする構成を有する。
【発明の効果】
【００１１】
本発明のベクトル計算機およびベクトル計算機におけるマイクロプロセッサのスケジューリング方法は、ベクトル命令を実行するマイクロプロセッサの稼働時間の総和を１サンプリング周期毎に求め、この１サンプリング周期に相当する全マイクロプロセッサの稼働可能時間の総和に対してベクトル命令を実行するマイクロプロセッサの稼働時間の総和が占める割合が予め決められた閾値を上回ると稼動状態にあるマイクロプロセッサのうち少なくとも1つのマイクロプロセッサを非稼動状態とするようにしているので、ベクトル計算機に処理の対象として入力されるプログラム中で使用されるベクトル命令数の比率が如何に高くとも、ベクトル計算機における単位時間当たりの電力消費が極端に増大することはない。
また、非稼動状態とするマイクロプロセッサはベクトル命令を実行するマイクロプロセッサあるいはスカラ命令を実行するマイクロプロセッサといったふうに特に指定せず、稼動状態にあるマイクロプロセッサに対してのみ実行対象とするタスクを割り当てるようにしているので、実行中のジョブを停止させる必要はなく、しかも、プロファイル情報の抽出やアイドル時間の見積りのための前処理を行なう必要がないので、全体的な処理時間が冗長する問題や複数のジョブを同時に実行する場合に前処理自体が不能となるような問題は発生せず、クロック周波数を調整する必要もないので、装置の複雑化やコストアップといった弊害も生じない。
【図面の簡単な説明】
【００１２】
【図１】本発明のベクトル計算機におけるマイクロプロセッサのスケジューリング方法を適用した一実施形態のベクトル計算機の構成の概略について示した機能ブロック図である。
【図２】ベクトル実行時間測定手段およびＣＰＵ稼動判定手段として機能するベクトル計算機の制御用マイクロプロセッサが所定のサンプリング周期毎に繰り返し実行する割合算出／フラグ設定処理の概略を示したフローチャートである。
【図３】ベクトル計算機のディスパッチング手段が所定周期毎に繰り返し実行するＣＰＵ稼動バランス調整処理の概略を示したフローチャートである。
【図４】ベクトル計算機の複数のマイクロプロセッサがベクトルプログラムおよびスカラプログラムを処理する場合の各マイクロプロセッサに対するタスクの割り当ての変化とベクトル計算機の各マイクロプロセッサの稼動／非稼動の態様変化の一例を簡略化して示した作用原理図である。
【図５】ベクトル計算機の幾つものマイクロプロセッサを同時に非稼動状態とせざるを得なくなった場合の各マイクロプロセッサに対するタスクの割り当ての変化と各マイクロプロセッサの稼動／非稼動の態様変化の一例を示し作用原理図であり、図５（ａ）では比較的負荷の小さなスレッドが多数のマイクロプロセッサに分散して割り当てられた状態について、また、図５（ａ）では負荷の大きなスレッドを少数のマイクロプロセッサに割り当てて処理を行なっている状態について示している。
【発明を実施するための形態】
【００１３】
次に、本発明を実施するための形態について一例を挙げ、図面を参照して詳細に説明する。
【００１４】
図１は、本発明のベクトル計算機におけるマイクロプロセッサのスケジューリング方法を適用した一実施形態のベクトル計算機１の構成の概略について示した機能ブロック図である。
【００１５】
ベクトル計算機１の主要部は、ベクトル命令とスカラ命令を共に実行可能な複数のマイクロプロセッサａ１〜ａｊと、ベクトル命令を含む複数のベクトルプログラムｂ１〜ｂｋやベクトル命令を含まない複数のスカラプログラムｃ１〜ｃｍの各々を各マイクロプロセッサａ１〜ａｊ（但し、ａ１〜ａｊのうち稼動状態にあるマイクロプロセッサに限る）に実行対象のタスクとして割り当てるためのディスパッチング手段２と、各マイクロプロセッサａ１〜ａｊを稼動状態とすべきか非稼動状態とすべきかを各マイクロプロセッサａ１〜ａｊ毎に記憶する動作態様記憶手段３と、予め決められた１サンプリング周期内でベクトル命令を実行するマイクロプロセッサａ１〜ａｊ（但し、ａ１〜ａｊのうちベクトル命令を実行するマイクロプロセッサに限る）の稼働時間の総和を求めるベクトル実行時間測定手段４と、１サンプリング周期内における全マイクロプロセッサａ１〜ａｊ（但し、ａ１〜ａｊのうち稼動状態にあるマイクロプロセッサと非稼動状態にあるマイクロプロセッサを合わせた全数＝ｊ個）の稼働可能時間の総和に対して前述の稼働時間の総和が占める割合を求め、その割合が予め設定された閾値を上回ると動作態様記憶手段３を参照して稼動状態とすべきマイクロプロセッサのうち少なくとも1つのマイクロプロセッサ（但し、ａ１〜ａｊのうち稼動状態にあるマイクロプロセッサのうちの１つ以上）を非稼動状態とすべきマイクロプロセッサとして動作態様記憶手段３に再記憶させる一方、その割合が予め設定された閾値を下回ると動作態様記憶手段３を参照して非稼動状態とすべきマイクロプロセッサのうち少なくとも1つのマイクロプロセッサ（但し、ａ１〜ａｊのうち非稼動状態にあるマイクロプロセッサのうちの１つ以上）を稼動状態とすべきマイクロプロセッサとして動作態様記憶手段３に再記憶させるＣＰＵ稼動判定手段５によって構成される。
【００１６】
以下、予め決められた１サンプリング周期内でベクトル命令を実行するマイクロプロセッサａ１〜ａｊ（但し、ａ１〜ａｊのうちベクトル命令を実行するマイクロプロセッサに限る）の稼働時間の総和を単に「稼働時間の総和」といい、１サンプリング周期内における全マイクロプロセッサａ１〜ａｊの稼働可能時間の総和を単に「稼働可能時間の総和」という。
【００１７】
また、ディスパッチング手段２は、稼動状態とすべきマイクロプロセッサとして動作態様記憶手段３に記憶されているマイクロプロセッサに対してのみ実行対象とするタスクを割り当て、他のマイクロプロセッサを非稼動状態（アイドリング状態）とするようになっている。
【００１８】
この実施形態に限っていえば、稼動停止閾値６および該稼動停止閾値６よりも値の小さな稼動再開閾値７を閾値として記憶する閾値記憶手段８と、閾値記憶手段８に稼動停止閾値６や稼動再開閾値７を設定するための閾値設定手段９も、ベクトル計算機１の構成要素の一部である。
【００１９】
ベクトル計算機１のベクトル実行時間測定手段４とＣＰＵ稼動判定手段５は、マイクロプロセッサａ１〜ａｊと独立して動作する制御用マイクロプロセッサ１０と、当該マイクロプロセッサ１０に接続されたＲＯＭ１１に格納されたマイクロプロセッサ１０用の制御プログラム（図２参照）によって構成され、ベクトル計算機１の閾値記憶手段８は、マイクロプロセッサ１０に接続された不揮発性メモリによって構成されている。閾値記憶手段８は２組のディップスイッチ等で構成してもよく、その場合は、これらのディップスイッチが閾値設定手段９としても機能することになる。
【００２０】
また、動作態様記憶手段３は、制御用マイクロプロセッサ１０に接続された一時記憶メモリの記憶領域の一部を利用して構築されたＣＰＵ稼動フラグｆ１〜ｆｊによって構成され、マイクロプロセッサ１０に接続された不揮発性メモリを閾値記憶手段８とした際の閾値設定手段９は、キーボード等のマン・マシン・インターフェイスによって構成される。
この実施形態においては、更に、動作態様記憶手段３として機能する一時記憶メモリの記憶領域の他の一部を利用して、ＣＰＵ稼動フラグｆ１〜ｆｊと一対一に対応する処理態様記憶フラグｆ１’〜ｆｊ’が設けられ、ディスパッチング手段２からの指令により、処理態様記憶フラグｆ１’〜ｆｊ’が独立的にセット／リセットできるようになっている。
【００２１】
図２はベクトル実行時間測定手段４およびＣＰＵ稼動判定手段５として機能する制御用マイクロプロセッサ１０が所定のサンプリング周期毎に繰り返し実行する割合算出／フラグ設定処理の概略を示したフローチャート、また、図３はディスパッチング手段２が所定周期毎に繰り返し実行するＣＰＵ稼動バランス調整処理の概略を示したフローチャートである。
【００２２】
この実施形態では、動作態様記憶手段３として機能する一時記憶メモリをＣＰＵ稼動判定手段５とディスパッチング手段２との間で共有メモリとして使用し、「稼働時間の総和」が「稼働可能時間の総和」に対して占める割合に基いてＣＰＵ稼動判定手段５がＣＰＵ稼動フラグｆ１〜ｆｊの各々をセット／リセットする一方、ディスパッチング手段２がＣＰＵ稼動フラグｆ１〜ｆｊの値を参照してマイクロプロセッサａ１〜ａｊの各々を稼動状態から非稼動状態に或いは非稼動状態から稼動状態に切り替えるようにしているので、ＣＰＵ稼動バランス調整処理の実行周期を必ずしもベクトル実行時間測定手段４のサンプリング周期に合わせる必要はない。
【００２３】
但し、ＣＰＵ稼動バランス調整処理の実行周期がベクトル実行時間測定手段４のサンプリング周期よりも短いとマイクロプロセッサａ１〜ａｊの動作態様が変更されないままＣＰＵ稼動バランス調整処理が冗長的に繰り返し実行される場合があり（ＣＰＵ稼動判定手段５によってＣＰＵ稼動フラグｆ１〜ｆｊの値が変更されないにも関わらずＣＰＵ稼動バランス調整処理が複数回実行されるため）、また、ＣＰＵ稼動バランス調整処理の実行周期がベクトル実行時間測定手段４のサンプリング周期よりも長いとマイクロプロセッサａ１〜ａｊの動作態様の切り替えに遅れが生じる場合があるので（ＣＰＵ稼動フラグｆ１〜ｆｊの値の変更がＣＰＵ稼動バランス調整処理に直ちに反映されないため）、両者の処理周期（処理の実行タイミングではなく処理を実行する時間間隔）は同等とするに越したことはなく、この実施形態にあっては、両者の処理周期を同じにしている。
【００２４】
無論、１処理周期内で生じる遅れに関しては特に問題とはならないので、処理の実行タイミングの一致という意味合いでの同期制御は不要である。
【００２５】
次に、図２〜図３を参照して、本実施形態のベクトル計算機１におけるディスパッチング手段２，ベクトル実行時間測定手段４，ＣＰＵ稼動判定手段５の処理動作と動作態様記憶手段３，閾値記憶手段８の機能について説明する。
【００２６】
但し、閾値記憶手段８には予め稼動停止閾値６の値（例えば８０％）と稼動再開閾値７の値（例えば６０％）が設定されており、動作態様記憶手段３におけるＣＰＵ稼動フラグｆ１〜ｆｊの各々には、ベクトル計算機１への電源投入時点で実行される制御用マイクロプロセッサ１０の初期化処理により、マイクロプロセッサａ１〜ａｊが稼動状態であることを示す値「１」が自動的にセットされるものとする。
【００２７】
電源投入時の初期化処理が完了し、図３に示されるＣＰＵ稼動バランス調整処理が開始されると、ディスパッチング手段２は、まず、一時記憶メモリからなる動作態様記憶手段３のＣＰＵ稼動フラグｆｉの値をｉ＝１〜ｊに亘って全て参照し、各ＣＰＵ稼動フラグｆｉの値として、対応するマイクロプロセッサａｉを稼動状態とすべきことを示す値「１」がセットされているのか、対応するマイクロプロセッサａｉを非稼動状態とすべきことを示す値「０」がセットされているのかを判定する（以上、ステップｔ１）。
【００２８】
既に述べた通り、電源投入直後の時点ではｉ＝１〜ｊのＣＰＵ稼動フラグｆｉの全てに値「１」がセットされているので、ステップｔ１の判定結果はｉ＝１〜ｊの全てのマイクロプロセッサａｉについて偽となり、ディスパッチング手段２は、全てのマイクロプロセッサａ１〜ａｊを稼動状態とし、従来と同様に、全てのマイクロプロセッサａ１〜ａｊにベクトルプログラムｂ１〜ｂｋやスカラプログラムｃ１〜ｃｍを実行対象のタスクとして割り当て、更に、実行対象のタスクとしてベクトルプログラムｂ１〜ｂｋを割り当てたマイクロプロセッサａ１〜ａｊ（但し、ａ１〜ａｊのうちベクトルプログラムを割り当てたマイクロプロセッサに限る）に対応する処理態様記憶フラグｆ１’〜ｆｊ’（但し、ｆ１’〜ｆｊ’のうちベクトルプログラムを割り当てたマイクロプロセッサに対応する処理態様記憶フラグに限る）にベクトルプログラムの実行履歴を示す値「１」をセットし、また、実行対象のタスクとしてスカラプログラムｃ１〜ｃｍを割り当てたマイクロプロセッサａ１〜ａｊ（但し、ａ１〜ａｊのうちスカラプログラムを割り当てたマイクロプロセッサに限る）に対応する処理態様記憶フラグｆ１’〜ｆｊ’（但し、ｆ１’〜ｆｊ’のうちスカラプログラムを割り当てたマイクロプロセッサに対応する処理態様記憶フラグに限る）にスカラプログラムの実行履歴を示す値「０」をセットする（以上、ステップｔ２）。
【００２９】
また、電源投入時の初期化処理が完了すると、前述のＣＰＵ稼動バランス調整処理に対して相対的に１処理周期の時間的な遅れで図２に示される割合算出／フラグ設定処理が開始され、まず、ベクトル実行時間測定手段４として機能する制御用マイクロプロセッサ１０が、マイクロプロセッサ１０の一時記憶メモリの記憶領域の一部を利用して構成された処理態様記憶フラグｆ１’〜ｆｊ’の値を参照し、値が「１」となっている処理態様記憶フラグｆ１’〜ｆｊ’の個数（但し、ｆ１’〜ｆｊ’のうち値が「１」となっている処理態様記憶フラグの個数に限る）を求め、この値に基いて直前の１サンプリング周期内においてベクトル命令を実行したマイクロプロセッサａ１〜ａｊの「稼働時間の総和」（但し、ａ１〜ａｊのうちベクトル命令を実行したマイクロプロセッサに限る）を求める（ステップｓ１）。
【００３０】
直前の１サンプリング周期内においてベクトル命令を実行したマイクロプロセッサａ１〜ａｊ（但し、ａ１〜ａｊのうちベクトル命令を実行したマイクロプロセッサに限る）の「稼働時間の総和」は、ベクトル命令を実行した各マイクロプロセッサａ１〜ａｊ（但し、ａ１〜ａｊのうちベクトル命令を実行したマイクロプロセッサに限る）の稼働時間を全て加算した値であるが、ベクトル命令を実行した各マイクロプロセッサａ１〜ａｊ（但し、ａ１〜ａｊのうちベクトル命令を実行したマイクロプロセッサに限る）の実質的な稼働時間は全てサンプリング周期と同等であるから、このサンプリング周期をΔｔ、また、ベクトル命令を実行したマイクロプロセッサａ１〜ａｊ（但し、ａ１〜ａｊのうちベクトル命令を実行したマイクロプロセッサに限る）の個数をｎとすれば、「稼働時間の総和」はｎ×Δｔとなり、Δｔの値は一定であるから、結果として、ベクトル命令を実行したマイクロプロセッサａ１〜ａｊ（但し、ａ１〜ａｊのうちベクトル命令を実行したマイクロプロセッサに限る）の個数ｎそれ自体によって「稼働時間の総和」に相当する値を代表させることができる。
【００３１】
よって、この実施形態では、処理の簡略化の都合上、値が「１」となっている処理態様記憶フラグｆ１’〜ｆｊ’の個数ｎそれ自体を「稼働時間の総和」として利用することにしている。
【００３２】
次いで、ＣＰＵ稼動判定手段５として機能する制御用マイクロプロセッサ１０は、１サンプリング周期に相当する全マイクロプロセッサａ１〜ａｊの「稼働可能時間の総和」に対して「稼働時間の総和」が占める割合を求める（ステップｓ２）。
【００３３】
マイクロプロセッサａ１〜ａｊの「稼働可能時間の総和」は、各マイクロプロセッサａ１〜ａｊの稼働可能時間の値を全て加算した値であるが、マイクロプロセッサａ１〜ａｊの個数は一定の値ｊであり、各マイクロプロセッサａ１〜ａｊの稼働可能時間は全てサンプリング周期と同等であるから、このサンプリング周期をΔｔ、また、マイクロプロセッサａ１〜ａｊの全数をｊとすれば、「稼働可能時間の総和」はｊ×Δｔとなり、Δｔの値は一定であるから、結果として、マイクロプロセッサａ１〜ａｊの全数ｊそれ自体によって「稼働可能時間の総和」の値を代表させることができる。
【００３４】
よって、この実施形態では処理の簡略化の都合上、マイクロプロセッサａ１〜ａｊの全数ｊそれ自体を「稼働可能時間の総和」として利用することにしている。
【００３５】
つまり、「稼働時間の総和」が「稼働可能時間の総和」に対して占める割合は、〔ｎ／ｊ〕×１００％である。
【００３６】
無論、サンプリング周期Δｔが１ジョブの実行所要時間に比べて長い場合には、サンプリング周期Δｔそれ自体がベクトル命令を実行した各マイクロプロセッサａ１〜ａｊ（但し、ａ１〜ａｊのうちベクトル命令を実行したマイクロプロセッサに限る）の実質的な稼動時間とはならないので、ベクトル命令を実行した各マイクロプロセッサａ１〜ａｊ（但し、ａ１〜ａｊのうちベクトル命令を実行したマイクロプロセッサに限る）の「稼働時間の総和」は、ベクトル命令を実行した各マイクロプロセッサａ１〜ａｊ（但し、ａ１〜ａｊのうちベクトル命令を実行したマイクロプロセッサに限る）の実際の稼働時間を個別に測定し、それらを加算する必要があるが、そのような内部処理は技術的に可能である。
【００３７】
次いで、ＣＰＵ稼動判定手段５として機能する制御用マイクロプロセッサ１０は、「稼働時間の総和」が「稼働可能時間の総和」に対して占める割合〔ｎ／ｊ〕×１００％が閾値記憶手段８に予め記憶されている稼動停止閾値６の値（例えば８０％）を上回っているか否かを判定する（ステップｓ３）。
【００３８】
ここで、ステップｓ３の判定結果が真となった場合、つまり、「稼働時間の総和」が「稼働可能時間の総和」に対して占める割合が稼動停止閾値６の値を上回っていることが明らかとなった場合には、ＣＰＵ稼動判定手段５として機能する制御用マイクロプロセッサ１０は、動作態様記憶手段３のＣＰＵ稼動フラグｆ１〜ｆｊの値を順に参照し、フラグの値が「１」となっているＣＰＵ稼動フラグとして最初に検出されたＣＰＵ稼動フラグの値を「１」から「０」に書き換えることにより、このＣＰＵ稼動フラグに対応するマイクロプロセッサａ１〜ａｊ（但し、ａ１〜ａｊのうちの１つのマイクロプロセッサに限る）を、稼動状態から非稼動状態に切り替えるべきマイクロプロセッサとして動作態様記憶手段３に更新記憶させて、消費電力の軽減を試みる（ステップｓ４）。
【００３９】
なお、「稼働時間の総和」が「稼働可能時間の総和」に対して占める割合が稼動停止閾値６の値を上回っている場合にあっては、マイクロプロセッサａ１〜ａｊの全てが非稼動状態となっていることは有り得ないので、フラグの値が「１」となっているＣＰＵ稼動フラグは必ず見つかる。
【００４０】
一方、ステップｓ３の判定結果が偽となった場合、つまり、「稼働時間の総和」が「稼働可能時間の総和」に対して占める割合が稼動停止閾値６の値に達していない場合にあっては、マイクロプロセッサａ１〜ａｊの何れか（但し、稼動状態にあるマイクロプロセッサに限る）を非稼動状態として消費電力を軽減する必要はないので、ステップｓ４の処理はスキップされ、ＣＰＵ稼動判定手段５として機能する制御用マイクロプロセッサ１０は、更に、「稼働時間の総和」が「稼働可能時間の総和」に対して占める割合〔ｎ／ｊ〕×１００％が閾値記憶手段８に予め記憶されている稼動再開閾値７の値（例えば６０％）を下回っているか否かを判定する（ステップｓ５）。
【００４１】
ここで、ステップｓ５の判定結果が真となった場合、つまり、「稼働時間の総和」が「稼働可能時間の総和」に対して占める割合が稼動再開閾値７の値を下回っていることが明らかとなった場合には、現在非稼動状態となっているマイクロプロセッサを稼動状態にしても「稼働時間の総和」が「稼働可能時間の総和」に対して占める割合が稼動停止閾値６の値を上回ることはないものと予想されるので、ＣＰＵ稼動判定手段５として機能する制御用マイクロプロセッサ１０は、動作態様記憶手段３のＣＰＵ稼動フラグｆ１〜ｆｊの値を順に参照し、フラグの値が「０」となっているＣＰＵ稼動フラグとして最初に検出されたＣＰＵ稼動フラグの値を「０」から「１」に書き換えることにより、このＣＰＵ稼動フラグに対応するマイクロプロセッサａ１〜ａｊ（但し、ａ１〜ａｊのうちの１つのマイクロプロセッサに限る）を、非稼動状態から稼動状態に切り替えるべきマイクロプロセッサとして動作態様記憶手段３に更新記憶させ、全体的な処理動作の効率の向上を試みる（ステップｓ６）。
【００４２】
なお、「稼働時間の総和」が「稼働可能時間の総和」に対して占める割合が稼動再開閾値７の値を下回っている場合にあっては、マイクロプロセッサａ１〜ａｊの全てが稼動状態となっていることは有り得ないので、フラグの値が「０」となっているＣＰＵ稼動フラグは必ず見つかる。
【００４３】
また、ステップｓ３およびステップｓ５の判定結果が共に偽となった場合には、「稼働時間の総和」が「稼働可能時間の総和」に対して占める割合が稼動停止閾値６と稼動再開閾値７との間にあって全体的な処理動作の効率と電力消費のバランスが適正に保持されていると考えられるので、制御用マイクロプロセッサ１０は、ステップｓ４とステップｓ６の処理を共に非実行とし、この時点で稼動状態にあるマイクロプロセッサを稼動状態に、また、この時点で非稼動状態にあるマイクロプロセッサを非稼動状態のままに保持する。
【００４４】
このようにして更新された動作態様記憶手段３のＣＰＵ稼動フラグｆ１〜ｆｊの値は、この後に実行される図３のＣＰＵ稼動バランス調整処理におけるステップｔ１の処理によってディスパッチング手段２によって参照される。
【００４５】
そして、ディスパッチング手段２は、各ＣＰＵ稼動フラグｆｉの値として、対応するマイクロプロセッサａｉを稼動状態とすべきことを示す値「１」がセットされているのか、対応するマイクロプロセッサａｉを非稼動状態とすべきことを示す値「０」がセットされているのかを判定する（以上、ステップｔ１）。
【００４６】
ＣＰＵ稼動バランス調整処理の第２周期目以降の処理では、ＣＰＵ稼動フラグｆ１〜ｆｊの値の幾つかは「１」から「０」に書き換えられている可能性があり、また、ＣＰＵ稼動バランス調整処理の第３周期目以降の処理では、ＣＰＵ稼動フラグｆ１〜ｆｊの値の幾つかは改めて「０」から「１」に書き換えられている可能性がある。
【００４７】
従って、ディスパッチング手段２は、値が「１」であるＣＰＵ稼動フラグに対応するマイクロプロセッサａ１〜ａｊ（但し、ＣＰＵ稼動フラグの値が「１」となっているマイクロプロセッサに限る）に関しては其の稼動状態を保持し、あるいは、其の状態を非稼動状態から稼動状態に切り替えて、当該時点で稼動状態となっているマイクロプロセッサａ１〜ａｊ（但し、現時点で稼動状態のマイクロプロセッサに限る）にベクトルプログラムｂ１〜ｂｋやスカラプログラムｃ１〜ｃｍを実行対象のタスクとして割り当て、更に、実行対象のタスクとしてベクトルプログラムｂ１〜ｂｋを割り当てたマイクロプロセッサａ１〜ａｊ（但し、ａ１〜ａｊのうちベクトルプログラムを割り当てたマイクロプロセッサに限る）に対応する処理態様記憶フラグｆ１’〜ｆｊ’（但し、ｆ１’〜ｆｊ’のうちベクトルプログラムを割り当てたマイクロプロセッサに対応する処理態様記憶フラグに限る）にベクトルプログラムの実行履歴を示す値「１」をセットし、また、実行対象のタスクとしてスカラプログラムｃ１〜ｃｍを割り当てたマイクロプロセッサａ１〜ａｊ（但し、ａ１〜ａｊのうちスカラプログラムを割り当てたマイクロプロセッサに限る）に対応する処理態様記憶フラグｆ１’〜ｆｊ’（但し、ｆ１’〜ｆｊ’のうちスカラプログラムを割り当てたマイクロプロセッサに対応する処理態様記憶フラグに限る）にはスカラプログラムの実行履歴を示す値「０」をセットする（以上、ステップｔ２）。
【００４８】
また、対応するマイクロプロセッサａｉを非稼動状態とすべきことを示す値「０」がセットされているＣＰＵ稼動フラグに対応するマイクロプロセッサａ１〜ａｊ（但し、ＣＰＵ稼動フラグの値が「０」となっているマイクロプロセッサに限る）については、ディスパッチング手段２は、マイクロプロセッサａ１〜ａｊ（但し、ＣＰＵ稼動フラグの値が「０」となっているマイクロプロセッサに限る）の非稼動状態を保持し、あるいは、其の状態を稼動状態から非稼動状態に切り替え、当該時点で非稼動状態となっているマイクロプロセッサａ１〜ａｊ（但し、現時点で非稼動状態のマイクロプロセッサに限る）に対応する処理態様記憶フラグｆ１’〜ｆｊ’（但し、現時点で非稼動状態のマイクロプロセッサに対応する処理態様記憶フラグに限る）の値を「０」に初期化する（以上、ステップｔ３）。
【００４９】
このようにして、制御用マイクロプロセッサ１０による割合算出／フラグ設定処理とディスパッチング手段２によるＣＰＵ稼動バランス調整処理が繰り返し実行される結果、図２に示される割合算出／フラグ設定処理のステップｓ３の処理で「稼働時間の総和」が「稼働可能時間の総和」に対して占める割合が稼動再開閾値７の値を下回っていることが確認される度に、動作態様記憶手段３における何れかのＣＰＵ稼動フラグの値が「０」から「１」に書き換えられて、図３に示されるＣＰＵ稼動バランス調整処理におけるステップｔ２の処理で、当該ＣＰＵ稼動フラグに対応する非稼動状態のマイクロプロセッサが稼動状態とされる。
【００５０】
また、これとは逆に、図２に示される割合算出／フラグ設定処理のステップｓ３の処理で「稼働時間の総和」が「稼働可能時間の総和」に対して占める割合が稼動停止閾値６の値を上回っていることが確認されると、動作態様記憶手段３における何れかのＣＰＵ稼動フラグの値が「１」から「０」に書き換えられ、図３に示されるＣＰＵ稼動バランス調整処理におけるステップｔ３の処理で、当該ＣＰＵ稼動フラグに対応する稼動状態のマイクロプロセッサが非稼動状態とされる。
【００５１】
この結果、スカラ命令を実行する場合に比べて消費電力が大きくなるベクトル命令を実行するマイクロプロセッサの「稼働時間の総和」が「稼働可能時間の総和」に対して占める割合は自動的に稼動停止閾値６と稼動再開閾値７との間に収められ、全体的な処理動作の効率と電力消費のバランスが適正に保持されるようになる。
【００５２】
ベクトル計算機１のマイクロプロセッサａ１〜ａｊがベクトルプログラムｂ１〜ｂｋおよびスカラプログラムｃ１〜ｃｍを処理する場合の各マイクロプロセッサａ１〜ａｊに対するタスクの割り当ての変化と各マイクロプロセッサａ１〜ａｊの稼動／非稼動の態様変化の一例を図４の作用原理図に簡略化して示す。ここでは、稼動停止閾値６の値は８０％、また、稼動再開閾値７の値は６０％としている。
【００５３】
まず、電源投入時の初期化処理が完了した直後の時点、つまり、図４の作用原理図の時間軸において０〜Δｔの時間区間では、既に述べた通り、ＣＰＵ稼動フラグｆ１〜ｆｊの全てにマイクロプロセッサａ１〜ａｊが稼動状態であることを示す値「１」がセットされているので（段落００２７参照）、ディスパッチング手段２は、全てのマイクロプロセッサａ１〜ａｊを稼動状態とし、従来と同様に、全てのマイクロプロセッサａ１〜ａｊにベクトルプログラムｂ１〜ｂｋやスカラプログラムｃ１〜ｃｍを実行対象のタスクとして割り当てる（段落００２９参照）。
【００５４】
図４の例では、作用原理図の時間軸上のΔｔの時点つまりＣＰＵ稼動バランス調整処理に対して相対的に１処理周期の遅れで実行される割合算出／フラグ設定処理の実行時点において、「稼働可能時間の総和」に対し「稼働時間の総和」が占める割合が稼動停止閾値６と稼動再開閾値７との間（６０％〜８０％）にあるので、稼動状態にあるマイクロプロセッサを非稼動状態にしたり非稼動状態にあるマイクロプロセッサを稼動状態にするといったような処理は行なわれない（段落００４４参照）。
【００５５】
このため、図４の作用原理図の時間軸においてΔｔ〜２×Δｔの時間区間では、マイクロプロセッサａ１〜ａｊの稼動状態は０〜Δｔの時間区間と同様となり、全てのマイクロプロセッサａ１〜ａｊが稼動している。
【００５６】
但し、０〜Δｔの時間区間ではベクトルプログラムを処理するマイクロプロセッサが７個であったのに対し、Δｔ〜２×Δｔの時間区間ではベクトルプログラムを処理するマイクロプロセッサが８個に増大するので、この結果として、「稼働可能時間の総和」に対し「稼働時間の総和」が占める割合が、０〜Δｔの時間区間の場合と比べて増大する。
【００５７】
この結果、作用原理図の時間軸上の２×Δｔの時点で実行される割合算出／フラグ設定処理の実行時点においては、「稼働可能時間の総和」に対し「稼働時間の総和」が占める割合が稼動停止閾値６（８０％）を超える。このため、割合算出／フラグ設定処理におけるステップｓ３の判定結果が真となり、ＣＰＵ稼動判定手段５として機能する制御用マイクロプロセッサ１０が、ステップｓ４の処理で動作態様記憶手段３のＣＰＵ稼動フラグｆ１〜ｆｊの値を順に参照し、フラグの値が「１」となっているＣＰＵ稼動フラグとして最初に検出されたＣＰＵ稼動フラグ例えばＣＰＵ稼動フラグｆｊの値を「１」から「０」に書き換える（段落００３９参照）。
【００５８】
このため、図４の作用原理図の時間軸における２×Δｔ〜３×Δｔの時間区間ではマイクロプロセッサａｊが稼動状態から非稼動状態に切り替えられ、マイクロプロセッサａｊがアイドリング状態となり、この結果として、「稼働可能時間の総和」に対し「稼働時間の総和」が占める割合が、Δｔ〜２×Δｔの時間区間の場合と比べて減少する。
【００５９】
図４の例では、マイクロプロセッサａｊがアイドリング状態となり「稼働可能時間の総和」に対して「稼働時間の総和」が占める割合が減少することにより、「稼働可能時間の総和」に対して「稼働時間の総和」が占める割合が再び稼動停止閾値６と稼動再開閾値７との間（６０％〜８０％）に入るので、３×Δｔの時点で実行される割合算出／フラグ設定処理では、稼動状態にあるマイクロプロセッサを非稼動状態にしたり非稼動状態にあるマイクロプロセッサを稼動状態にするといったような処理は行なわれない（段落００４４参照）。
【００６０】
従って、図４の作用原理図の時間軸において３×Δｔ〜４×Δｔの時間区間では、マイクロプロセッサａ１〜ａｊの稼動状態は２×Δｔ〜３×Δｔの時間区間と同様となり、マイクロプロセッサａ１〜ａｊ−１が稼動状態を保持し、マイクロプロセッサａｊは非稼動状態を保持する。
【００６１】
但し、２×Δｔ〜３×Δｔの時間区間ではベクトルプログラムを処理するマイクロプロセッサが７個であったのに対し、３×Δｔ〜４×Δｔの時間区間ではベクトルプログラムを処理するマイクロプロセッサが６個に減少するので、この結果として、「稼働可能時間の総和」に対し「稼働時間の総和」が占める割合が、２×Δｔ〜３×Δｔの時間区間の場合と比べて減少する。
【００６２】
この結果、作用原理図の時間軸上の４×Δｔの時点で実行される割合算出／フラグ設定処理の実行時点においては、「稼働可能時間の総和」に対し「稼働時間の総和」が占める割合が稼動再開閾値７（６０％）を下回る。このため、割合算出／フラグ設定処理におけるステップｓ５の判定結果が真となり、ＣＰＵ稼動判定手段５として機能する制御用マイクロプロセッサ１０が、ステップｓ６の処理で動作態様記憶手段３のＣＰＵ稼動フラグｆ１〜ｆｊの値を順に参照し、フラグの値が「０」となっているＣＰＵ稼動フラグとして最初に検出されたＣＰＵ稼動フラグつまりＣＰＵ稼動フラグｆｊの値を「０」から「１」に書き換える（段落００４２参照）。
【００６３】
このため、図４の作用原理図の時間軸における４×Δｔ〜５×Δｔの時間区間ではマイクロプロセッサａｊが非稼動状態から稼動状態に切り替えられ、再び、全ての全てのマイクロプロセッサａ１〜ａｊが稼動することになる。
【００６４】
また、高負荷のベクトルプログラムを主体とするプログラムを複数のマルチプロセッサａ１〜ａｊによって処理する場合にあっては、処理の内容に応じ、例えば、図５（ａ）に示されるように、１つのベクトルプログラムを複数のスレッドに分割し、各スレッドの処理をマルチプロセッサａ１〜ａｊに割り当てて実行させるのが一般的である。
【００６５】
そうした場合にあっては個々のスレッド（ジョブ）の負荷も高いため、図５（ｂ）に示されるように、ベクトル計算機１のマイクロプロセッサａ１〜ａｊのうちの幾つか例えばマイクロプロセッサａ１〜ａ４に負荷の大きなベクトルプログラムのスレッドが割り当てられ、その結果として、幾つものマイクロプロセッサ例えばマイクロプロセッサａ５〜ａｊを同時に非稼動状態とせざるを得なくなるような場合がある。
【００６６】
また、稼動停止閾値６の値と稼動再開閾値７の値を共に低い値に設定した場合、例えば、稼動停止閾値６の値を５０％とし稼動再開閾値７の値を３０％として設定したような場合にあっても、前記と同様、例えば図５（ｂ）に示されるように、ベクトル計算機１の幾つものマイクロプロセッサ例えばマイクロプロセッサａ５〜ａｊを同時に非稼動状態とする必要が生じる場合がある。
【００６７】
この実施形態では、「稼働時間の総和」が「稼働可能時間の総和」に対して占める割合が稼動停止閾値６と稼動再開閾値７との間に収まるように、ＣＰＵ稼動判定手段５として機能する制御用マイクロプロセッサ１０が動作態様記憶手段３のＣＰＵ稼動フラグｆ１〜ｆｊのセット／リセット状態を調整し（ステップｓ４，ステップｓ６）、ディスパッチング手段２が動作態様記憶手段３のＣＰＵ稼動フラグｆ１〜ｆｊのセット／リセット状態を参照し、マイクロプロセッサａ１〜ａｊの各々を稼動状態とするか非稼動状態とするかを決めた上で、その時点で稼動状態となっているマイクロプロセッサａ１〜ａｊ（但し、その時点で稼動状態とされているマイクロプロセッサに限る）に対してタスクすなわち処理の対象となるスレッドを割り当てるようにしているので、幾つものマイクロプロセッサ例えばマイクロプロセッサａ５〜ａｊを同時に非稼動状態とした場合であっても、稼動中のマイクロプロセッサａ１〜ａ４に割り振れなくなったスレッドが次の処理周期に見送られるだけであり、プログラムの実行自体が停止するといた不都合は生じない。
【００６８】
図５（ｂ）に示される例では、実行すべきスレッドが８個であるのに対し稼動状態にあるマイクロプロセッサの数が４個つまりマイクロプロセッサａ１〜ａ４に制限されているが、スレッド１〜スレッド４と共に実行できないスレッド５〜スレッド８は、次の処理周期においてマイクロプロセッサａ１〜ａ４によって実行される。つまり、プログラムの実行に必要とされる所要時間は増加するが、プログラム自体が停止するといった問題は生じない。
従って、様々な事情から更に消費電力を抑えたい場合であっても、稼動停止閾値６や稼動再開閾値７の値を調整することにより消費電力を調整することが可能である。
【００６９】
以上の実施形態では、１サンプリング周期で１つのマイクロプロセッサの動作態様のみを切り替えるようにしているが、２つ以上のマイクロプロセッサを同時に稼動状態から非稼動状態に切り替えたり非稼動状態から稼動状態に切り替えたりするように構成してもよい。その場合も全体的な処理の流れについては前記と同様である。
２つ以上のマイクロプロセッサを同時に稼動状態から非稼動状態に切り替えたり非稼動状態から稼動状態に切り替えたりする場合は、割合算出／フラグ設定処理のステップｓ４の処理においてフラグの値が「１」となっているＣＰＵ稼動フラグとして検出された２つ以上のＣＰＵ稼動フラグの値を「１」から「０」に書き換え、また、ステップｓ６の処理においてフラグの値が「０」となっているＣＰＵ稼動フラグとして検出された２つ以上のＣＰＵ稼動フラグの値を「０」から「１」に書き換えるようにすればよい。
【００７０】
以上に述べた通り、この実施形態では、ベクトル命令を実行するマイクロプロセッサａ１〜ａｊ（但し、ａ１〜ａｊのうちベクトル命令を実行するマイクロプロセッサに限る）の「稼働時間の総和」を１サンプリング周期毎に求め、この１サンプリング周期に相当する全マイクロプロセッサａ１〜ａｊの「稼働可能時間の総和」に対して「稼働時間の総和」が占める割合が予め決められた稼動停止閾値６を上回ると稼動状態にあるマイクロプロセッサａ１〜ａｊ（但し、ａ１〜ａｊのうち稼動中のマイクロプロセッサに限る）のうち少なくとも１つのマイクロプロセッサを非稼動状態とするようにしているので、ベクトル計算機１に処理の対象として入力されるプログラム中で使用されるベクトル命令数の比率が如何に高くとも、ベクトル計算機１における単位時間当たりの電力消費が極端に増大することはなく、全体的な処理動作の効率と電力消費のバランスが適正に保持される。
また、プロファイル情報の抽出やアイドル時間の見積りといった前処理を行なう必要はないので、煩雑な前処理によって全体的な処理時間が冗長する問題や複数のジョブを同時に実行する場合にプロファイル情報の抽出やアイドル時間の見積りが困難となって前処理が実行不能となるといった問題も発生しない。更に、消費電力の調整のために各マイクロプロセッサａ１〜ａｊのクロック周波数を調整する必要もないので、ベクトル計算機１の構造の複雑化やコストアップといった弊害も生じない。
【産業上の利用可能性】
【００７１】
本発明は、ベクトル計算機の省電力化技術に関し、特に複数のプロセッサから構成されるベクトル計算機の省電力の実現に利用可能である。
【符号の説明】
【００７２】
１  ベクトル計算機
２  ディスパッチング手段
３  動作態様記憶手段（一時記憶メモリ）
４  ベクトル実行時間測定手段
５  ＣＰＵ稼動判定手段
６  稼動停止閾値
７  稼動再開閾値
８  閾値記憶手段（不揮発性メモリ）
９  閾値設定手段
１０  制御用マイクロプロセッサ（ベクトル実行時間測定手段，ＣＰＵ稼動判定手段）
１１  ＲＯＭ
ａ１〜ａｊ  マイクロプロセッサ
ｂ１〜ｂｋ  ベクトルプログラム
ｃ１〜ｃｍ  スカラプログラム
ｆ１〜ｆｊ  ＣＰＵ稼動フラグ
ｆ１’〜ｆｊ’  処理態様記憶フラグ
【図１】
2010224853.tif 000003
【図２】
2010224853.tif 000004
【図３】
2010224853.tif 000005
【図４】
2010224853.tif 000006
【図５】
2010224853.tif 000007