JP2010224853A - ベクトル計算機およびベクトル計算機におけるマイクロプロセッサのスケジューリング方法 - Google Patents
ベクトル計算機およびベクトル計算機におけるマイクロプロセッサのスケジューリング方法 Download PDFInfo
- Publication number
- JP2010224853A JP2010224853A JP2009071208A JP2009071208A JP2010224853A JP 2010224853 A JP2010224853 A JP 2010224853A JP 2009071208 A JP2009071208 A JP 2009071208A JP 2009071208 A JP2009071208 A JP 2009071208A JP 2010224853 A JP2010224853 A JP 2010224853A
- Authority
- JP
- Japan
- Prior art keywords
- microprocessor
- microprocessors
- operating state
- vector
- threshold
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Withdrawn
Links
Images
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Abstract
【課題】実行中のジョブを停止させたり処理時間を過剰に冗長させたりすることなくベクトル計算機における単位時間当たりの電力消費を軽減する。
【解決手段】a1〜ajのマイクロプロセッサのうちベクトル命令を実行するマイクロプロセッサの稼働時間の総和を1サンプリング周期毎に求める。1サンプリング周期に相当する全マイクロプロセッサa1〜ajの稼働可能時間の総和に対してベクトル命令を実行するマイクロプロセッサの稼働時間の総和が占める割合が予め決められた稼動停止閾値6と稼動再開閾値7の間に収まるようにマイクロプロセッサa1〜ajの各々を稼動状態から非稼動状態に、あるいは、非稼動状態から稼動状態に切り替え制御する。
【選択図】図1
【解決手段】a1〜ajのマイクロプロセッサのうちベクトル命令を実行するマイクロプロセッサの稼働時間の総和を1サンプリング周期毎に求める。1サンプリング周期に相当する全マイクロプロセッサa1〜ajの稼働可能時間の総和に対してベクトル命令を実行するマイクロプロセッサの稼働時間の総和が占める割合が予め決められた稼動停止閾値6と稼動再開閾値7の間に収まるようにマイクロプロセッサa1〜ajの各々を稼動状態から非稼動状態に、あるいは、非稼動状態から稼動状態に切り替え制御する。
【選択図】図1
Description
本発明は、ベクトル計算機およびベクトル計算機におけるマイクロプロセッサのスケジューリング方法に関する。
計算機システムには、多プロセッサ化や多ノード化あるいは大規模化が進むにつれ、実行時の消費電力も多くなるといった問題がある。
また、ベクトル計算機にあっては、スカラ命令を実行する場合に比べ、ベクトル命令を実行する場合の方が消費電力が大きくなるという傾向がある。例えば、あるベクトル計算機で実測した場合、ベクトル命令使用時の電力消費量は、スカラ命令使用時の1.3倍となり、ベクトル命令を使用する場合の方が多くの電力を消費することは明らかである。
また、ベクトル計算機にあっては、スカラ命令を実行する場合に比べ、ベクトル命令を実行する場合の方が消費電力が大きくなるという傾向がある。例えば、あるベクトル計算機で実測した場合、ベクトル命令使用時の電力消費量は、スカラ命令使用時の1.3倍となり、ベクトル命令を使用する場合の方が多くの電力を消費することは明らかである。
一般的なジョブスケジューラでは、例えば、特許文献1に開示されるように、同時に実行するジョブ数を制限することやジョブの実行できるマイクロプロセッサの数を制限するといった方法でマイクロプロセッサの負荷や消費電力を軽減する方法を提供しているが、ベクトル計算機上で実行されるプログラム中で使用されるベクトル命令数の比率は一様ではないから、単純にジョブ数を制限したりタスクを割り当てるマイクロプロセッサ数を制限したりしても消費電力の削減になるとは限らず、消費電力を考慮した制御が困難であった。しかも、実行するジョブ数を制限して負荷を軽減する方法では、実行中のジョブを停止させなければならないという問題もある。
省電力を実現する他の方法としては、コンパイル時の中間コードからプログラムブロック毎の実行時刻をプロファイル情報として抽出し、更に、プロファイル情報を解析してアイドル時間を見積り、プログラムブロックの実行に支障を生じない程度にアイドル時間中のクロック周波数を低下させるようにした情報処理装置の省電力化方法が特許文献2として提案されている。
しかしながら、このような方法では、プロファイル情報の抽出やアイドル時間の見積りおよびクロック周波数の特定といった前処理が必要となって全体的な処理時間が冗長する不都合、クロック周波数を調整するためのハードウェアの実装による装置の複雑化やコストアップの問題が派生する可能性が高い。また、複数のジョブが同時に実行されるような状況下にあっては、プロファイル情報の抽出やプロファイル情報の解析ひいてはアイドル時間の見積りやアイドル時間に適したクロック周波数の特定といった処理それ自体が著しく複雑化して非実用的となるといったことも想定される。
しかしながら、このような方法では、プロファイル情報の抽出やアイドル時間の見積りおよびクロック周波数の特定といった前処理が必要となって全体的な処理時間が冗長する不都合、クロック周波数を調整するためのハードウェアの実装による装置の複雑化やコストアップの問題が派生する可能性が高い。また、複数のジョブが同時に実行されるような状況下にあっては、プロファイル情報の抽出やプロファイル情報の解析ひいてはアイドル時間の見積りやアイドル時間に適したクロック周波数の特定といった処理それ自体が著しく複雑化して非実用的となるといったことも想定される。
また、これとは別に、ソースプログラムを解析してベクトル処理が可能なコード部分を抽出するベクトル化の処理を行い、全体的な処理時間が最小化されるように、ベクトルプロセッサとスカラプロセッサにベクトル化されたコードの命令を分配するようにしたベクトル化方式が特許文献3として提案されている。
しかしながら、このものも、ソースプログラムの解析や処理時間を最小化するための処理が前処理として必要となる点では前述の省電力化方法と同様であり、全体的な処理時間が冗長するといった不都合は免れない。
しかしながら、このものも、ソースプログラムの解析や処理時間を最小化するための処理が前処理として必要となる点では前述の省電力化方法と同様であり、全体的な処理時間が冗長するといった不都合は免れない。
なお、マルチコア環境下における複数のマイクロプロセッサにタスクを割り当てるための処理(ディスパッチング手段)については特許文献2の段落0018等で既に公知であり、また、ベクトル命令とスカラ命令を実行する複数のマイクロプロセッサを備えたベクトル計算機の基本的な構成については特許文献3の段落0002−0003等で既に公知である。
そこで、本発明の目的は、実行中のジョブを停止させたり処理時間を過剰に冗長させたりすることなくベクトル計算機における単位時間当たりの電力消費を軽減することのできるベクトル計算機およびベクトル計算機におけるマイクロプロセッサのスケジューリング方法を提供することにある。
本発明のベクトル計算機は、ベクトル命令とスカラ命令を実行する複数のマイクロプロセッサと、前記各マイクロプロセッサに実行対象とするタスクを割り当てるディスパッチング手段とを備えたベクトル計算機であり、前記目的を達成するため、特に、
前記各マイクロプロセッサを稼動状態とすべきか非稼動状態とすべきかを各マイクロプロセッサ毎に記憶する動作態様記憶手段と、
予め決められた1サンプリング周期内においてベクトル命令を実行するマイクロプロセッサの稼働時間の総和を求めるベクトル実行時間測定手段と、
前記1サンプリング周期に相当する全マイクロプロセッサの稼働可能時間の総和に対して前記稼働時間の総和が占める割合を求め、その割合が予め設定された閾値を上回ると前記動作態様記憶手段を参照して稼動状態とすべきマイクロプロセッサのうち少なくとも1つのマイクロプロセッサを非稼動状態とすべきマイクロプロセッサとして前記動作態様記憶手段に更新記憶させる一方、前記割合が予め設定された閾値を下回ると前記動作態様記憶手段を参照して非稼動状態とすべきマイクロプロセッサのうち少なくとも1つのマイクロプロセッサを稼動状態とすべきマイクロプロセッサとして前記動作態様記憶手段に更新記憶させるCPU稼動判定手段とを設け、
前記ディスパッチング手段は、前記動作態様記憶手段に稼動状態とすべきマイクロプロセッサとして記憶されているマイクロプロセッサに対してのみ実行対象とするタスクを割り当て、他のマイクロプロセッサを非稼動状態とするように構成したことを特徴とする構成を有する。
前記各マイクロプロセッサを稼動状態とすべきか非稼動状態とすべきかを各マイクロプロセッサ毎に記憶する動作態様記憶手段と、
予め決められた1サンプリング周期内においてベクトル命令を実行するマイクロプロセッサの稼働時間の総和を求めるベクトル実行時間測定手段と、
前記1サンプリング周期に相当する全マイクロプロセッサの稼働可能時間の総和に対して前記稼働時間の総和が占める割合を求め、その割合が予め設定された閾値を上回ると前記動作態様記憶手段を参照して稼動状態とすべきマイクロプロセッサのうち少なくとも1つのマイクロプロセッサを非稼動状態とすべきマイクロプロセッサとして前記動作態様記憶手段に更新記憶させる一方、前記割合が予め設定された閾値を下回ると前記動作態様記憶手段を参照して非稼動状態とすべきマイクロプロセッサのうち少なくとも1つのマイクロプロセッサを稼動状態とすべきマイクロプロセッサとして前記動作態様記憶手段に更新記憶させるCPU稼動判定手段とを設け、
前記ディスパッチング手段は、前記動作態様記憶手段に稼動状態とすべきマイクロプロセッサとして記憶されているマイクロプロセッサに対してのみ実行対象とするタスクを割り当て、他のマイクロプロセッサを非稼動状態とするように構成したことを特徴とする構成を有する。
また、本発明のベクトル計算機におけるマイクロプロセッサのスケジューリング方法は、ベクトル命令とスカラ命令を実行する複数のマイクロプロセッサに実行対象とするタスクを割り当ててベクトル命令とスカラ命令を並列的に実行するベクトル計算機におけるマイクロプロセッサのスケジューリング方法であり、前記と同様の目的を達成するため、特に、
ベクトル命令を実行するマイクロプロセッサの稼働時間の総和を1サンプリング周期毎に求め、
前記1サンプリング周期に相当する全マイクロプロセッサの稼働可能時間の総和に対して前記稼働時間の総和が占める割合が予め決められた閾値を上回ると稼動状態にあるマイクロプロセッサのうち少なくとも1つのマイクロプロセッサを非稼動状態とする一方、前記割合が予め決められた閾値を下回ると非稼動状態にあるマイクロプロセッサのうち少なくとも1つのマイクロプロセッサを稼動状態とし、
稼動状態にあるマイクロプロセッサに対してのみ実行対象とするタスクを割り当てるようにしたことを特徴とする構成を有する。
ベクトル命令を実行するマイクロプロセッサの稼働時間の総和を1サンプリング周期毎に求め、
前記1サンプリング周期に相当する全マイクロプロセッサの稼働可能時間の総和に対して前記稼働時間の総和が占める割合が予め決められた閾値を上回ると稼動状態にあるマイクロプロセッサのうち少なくとも1つのマイクロプロセッサを非稼動状態とする一方、前記割合が予め決められた閾値を下回ると非稼動状態にあるマイクロプロセッサのうち少なくとも1つのマイクロプロセッサを稼動状態とし、
稼動状態にあるマイクロプロセッサに対してのみ実行対象とするタスクを割り当てるようにしたことを特徴とする構成を有する。
本発明のベクトル計算機およびベクトル計算機におけるマイクロプロセッサのスケジューリング方法は、ベクトル命令を実行するマイクロプロセッサの稼働時間の総和を1サンプリング周期毎に求め、この1サンプリング周期に相当する全マイクロプロセッサの稼働可能時間の総和に対してベクトル命令を実行するマイクロプロセッサの稼働時間の総和が占める割合が予め決められた閾値を上回ると稼動状態にあるマイクロプロセッサのうち少なくとも1つのマイクロプロセッサを非稼動状態とするようにしているので、ベクトル計算機に処理の対象として入力されるプログラム中で使用されるベクトル命令数の比率が如何に高くとも、ベクトル計算機における単位時間当たりの電力消費が極端に増大することはない。
また、非稼動状態とするマイクロプロセッサはベクトル命令を実行するマイクロプロセッサあるいはスカラ命令を実行するマイクロプロセッサといったふうに特に指定せず、稼動状態にあるマイクロプロセッサに対してのみ実行対象とするタスクを割り当てるようにしているので、実行中のジョブを停止させる必要はなく、しかも、プロファイル情報の抽出やアイドル時間の見積りのための前処理を行なう必要がないので、全体的な処理時間が冗長する問題や複数のジョブを同時に実行する場合に前処理自体が不能となるような問題は発生せず、クロック周波数を調整する必要もないので、装置の複雑化やコストアップといった弊害も生じない。
また、非稼動状態とするマイクロプロセッサはベクトル命令を実行するマイクロプロセッサあるいはスカラ命令を実行するマイクロプロセッサといったふうに特に指定せず、稼動状態にあるマイクロプロセッサに対してのみ実行対象とするタスクを割り当てるようにしているので、実行中のジョブを停止させる必要はなく、しかも、プロファイル情報の抽出やアイドル時間の見積りのための前処理を行なう必要がないので、全体的な処理時間が冗長する問題や複数のジョブを同時に実行する場合に前処理自体が不能となるような問題は発生せず、クロック周波数を調整する必要もないので、装置の複雑化やコストアップといった弊害も生じない。
次に、本発明を実施するための形態について一例を挙げ、図面を参照して詳細に説明する。
図1は、本発明のベクトル計算機におけるマイクロプロセッサのスケジューリング方法を適用した一実施形態のベクトル計算機1の構成の概略について示した機能ブロック図である。
ベクトル計算機1の主要部は、ベクトル命令とスカラ命令を共に実行可能な複数のマイクロプロセッサa1〜ajと、ベクトル命令を含む複数のベクトルプログラムb1〜bkやベクトル命令を含まない複数のスカラプログラムc1〜cmの各々を各マイクロプロセッサa1〜aj(但し、a1〜ajのうち稼動状態にあるマイクロプロセッサに限る)に実行対象のタスクとして割り当てるためのディスパッチング手段2と、各マイクロプロセッサa1〜ajを稼動状態とすべきか非稼動状態とすべきかを各マイクロプロセッサa1〜aj毎に記憶する動作態様記憶手段3と、予め決められた1サンプリング周期内でベクトル命令を実行するマイクロプロセッサa1〜aj(但し、a1〜ajのうちベクトル命令を実行するマイクロプロセッサに限る)の稼働時間の総和を求めるベクトル実行時間測定手段4と、1サンプリング周期内における全マイクロプロセッサa1〜aj(但し、a1〜ajのうち稼動状態にあるマイクロプロセッサと非稼動状態にあるマイクロプロセッサを合わせた全数=j個)の稼働可能時間の総和に対して前述の稼働時間の総和が占める割合を求め、その割合が予め設定された閾値を上回ると動作態様記憶手段3を参照して稼動状態とすべきマイクロプロセッサのうち少なくとも1つのマイクロプロセッサ(但し、a1〜ajのうち稼動状態にあるマイクロプロセッサのうちの1つ以上)を非稼動状態とすべきマイクロプロセッサとして動作態様記憶手段3に再記憶させる一方、その割合が予め設定された閾値を下回ると動作態様記憶手段3を参照して非稼動状態とすべきマイクロプロセッサのうち少なくとも1つのマイクロプロセッサ(但し、a1〜ajのうち非稼動状態にあるマイクロプロセッサのうちの1つ以上)を稼動状態とすべきマイクロプロセッサとして動作態様記憶手段3に再記憶させるCPU稼動判定手段5によって構成される。
以下、予め決められた1サンプリング周期内でベクトル命令を実行するマイクロプロセッサa1〜aj(但し、a1〜ajのうちベクトル命令を実行するマイクロプロセッサに限る)の稼働時間の総和を単に「稼働時間の総和」といい、1サンプリング周期内における全マイクロプロセッサa1〜ajの稼働可能時間の総和を単に「稼働可能時間の総和」という。
また、ディスパッチング手段2は、稼動状態とすべきマイクロプロセッサとして動作態様記憶手段3に記憶されているマイクロプロセッサに対してのみ実行対象とするタスクを割り当て、他のマイクロプロセッサを非稼動状態(アイドリング状態)とするようになっている。
この実施形態に限っていえば、稼動停止閾値6および該稼動停止閾値6よりも値の小さな稼動再開閾値7を閾値として記憶する閾値記憶手段8と、閾値記憶手段8に稼動停止閾値6や稼動再開閾値7を設定するための閾値設定手段9も、ベクトル計算機1の構成要素の一部である。
ベクトル計算機1のベクトル実行時間測定手段4とCPU稼動判定手段5は、マイクロプロセッサa1〜ajと独立して動作する制御用マイクロプロセッサ10と、当該マイクロプロセッサ10に接続されたROM11に格納されたマイクロプロセッサ10用の制御プログラム(図2参照)によって構成され、ベクトル計算機1の閾値記憶手段8は、マイクロプロセッサ10に接続された不揮発性メモリによって構成されている。閾値記憶手段8は2組のディップスイッチ等で構成してもよく、その場合は、これらのディップスイッチが閾値設定手段9としても機能することになる。
また、動作態様記憶手段3は、制御用マイクロプロセッサ10に接続された一時記憶メモリの記憶領域の一部を利用して構築されたCPU稼動フラグf1〜fjによって構成され、マイクロプロセッサ10に接続された不揮発性メモリを閾値記憶手段8とした際の閾値設定手段9は、キーボード等のマン・マシン・インターフェイスによって構成される。
この実施形態においては、更に、動作態様記憶手段3として機能する一時記憶メモリの記憶領域の他の一部を利用して、CPU稼動フラグf1〜fjと一対一に対応する処理態様記憶フラグf1’〜fj’が設けられ、ディスパッチング手段2からの指令により、処理態様記憶フラグf1’〜fj’が独立的にセット/リセットできるようになっている。
この実施形態においては、更に、動作態様記憶手段3として機能する一時記憶メモリの記憶領域の他の一部を利用して、CPU稼動フラグf1〜fjと一対一に対応する処理態様記憶フラグf1’〜fj’が設けられ、ディスパッチング手段2からの指令により、処理態様記憶フラグf1’〜fj’が独立的にセット/リセットできるようになっている。
図2はベクトル実行時間測定手段4およびCPU稼動判定手段5として機能する制御用マイクロプロセッサ10が所定のサンプリング周期毎に繰り返し実行する割合算出/フラグ設定処理の概略を示したフローチャート、また、図3はディスパッチング手段2が所定周期毎に繰り返し実行するCPU稼動バランス調整処理の概略を示したフローチャートである。
この実施形態では、動作態様記憶手段3として機能する一時記憶メモリをCPU稼動判定手段5とディスパッチング手段2との間で共有メモリとして使用し、「稼働時間の総和」が「稼働可能時間の総和」に対して占める割合に基いてCPU稼動判定手段5がCPU稼動フラグf1〜fjの各々をセット/リセットする一方、ディスパッチング手段2がCPU稼動フラグf1〜fjの値を参照してマイクロプロセッサa1〜ajの各々を稼動状態から非稼動状態に或いは非稼動状態から稼動状態に切り替えるようにしているので、CPU稼動バランス調整処理の実行周期を必ずしもベクトル実行時間測定手段4のサンプリング周期に合わせる必要はない。
但し、CPU稼動バランス調整処理の実行周期がベクトル実行時間測定手段4のサンプリング周期よりも短いとマイクロプロセッサa1〜ajの動作態様が変更されないままCPU稼動バランス調整処理が冗長的に繰り返し実行される場合があり(CPU稼動判定手段5によってCPU稼動フラグf1〜fjの値が変更されないにも関わらずCPU稼動バランス調整処理が複数回実行されるため)、また、CPU稼動バランス調整処理の実行周期がベクトル実行時間測定手段4のサンプリング周期よりも長いとマイクロプロセッサa1〜ajの動作態様の切り替えに遅れが生じる場合があるので(CPU稼動フラグf1〜fjの値の変更がCPU稼動バランス調整処理に直ちに反映されないため)、両者の処理周期(処理の実行タイミングではなく処理を実行する時間間隔)は同等とするに越したことはなく、この実施形態にあっては、両者の処理周期を同じにしている。
無論、1処理周期内で生じる遅れに関しては特に問題とはならないので、処理の実行タイミングの一致という意味合いでの同期制御は不要である。
次に、図2〜図3を参照して、本実施形態のベクトル計算機1におけるディスパッチング手段2,ベクトル実行時間測定手段4,CPU稼動判定手段5の処理動作と動作態様記憶手段3,閾値記憶手段8の機能について説明する。
但し、閾値記憶手段8には予め稼動停止閾値6の値(例えば80%)と稼動再開閾値7の値(例えば60%)が設定されており、動作態様記憶手段3におけるCPU稼動フラグf1〜fjの各々には、ベクトル計算機1への電源投入時点で実行される制御用マイクロプロセッサ10の初期化処理により、マイクロプロセッサa1〜ajが稼動状態であることを示す値「1」が自動的にセットされるものとする。
電源投入時の初期化処理が完了し、図3に示されるCPU稼動バランス調整処理が開始されると、ディスパッチング手段2は、まず、一時記憶メモリからなる動作態様記憶手段3のCPU稼動フラグfiの値をi=1〜jに亘って全て参照し、各CPU稼動フラグfiの値として、対応するマイクロプロセッサaiを稼動状態とすべきことを示す値「1」がセットされているのか、対応するマイクロプロセッサaiを非稼動状態とすべきことを示す値「0」がセットされているのかを判定する(以上、ステップt1)。
既に述べた通り、電源投入直後の時点ではi=1〜jのCPU稼動フラグfiの全てに値「1」がセットされているので、ステップt1の判定結果はi=1〜jの全てのマイクロプロセッサaiについて偽となり、ディスパッチング手段2は、全てのマイクロプロセッサa1〜ajを稼動状態とし、従来と同様に、全てのマイクロプロセッサa1〜ajにベクトルプログラムb1〜bkやスカラプログラムc1〜cmを実行対象のタスクとして割り当て、更に、実行対象のタスクとしてベクトルプログラムb1〜bkを割り当てたマイクロプロセッサa1〜aj(但し、a1〜ajのうちベクトルプログラムを割り当てたマイクロプロセッサに限る)に対応する処理態様記憶フラグf1’〜fj’(但し、f1’〜fj’のうちベクトルプログラムを割り当てたマイクロプロセッサに対応する処理態様記憶フラグに限る)にベクトルプログラムの実行履歴を示す値「1」をセットし、また、実行対象のタスクとしてスカラプログラムc1〜cmを割り当てたマイクロプロセッサa1〜aj(但し、a1〜ajのうちスカラプログラムを割り当てたマイクロプロセッサに限る)に対応する処理態様記憶フラグf1’〜fj’(但し、f1’〜fj’のうちスカラプログラムを割り当てたマイクロプロセッサに対応する処理態様記憶フラグに限る)にスカラプログラムの実行履歴を示す値「0」をセットする(以上、ステップt2)。
また、電源投入時の初期化処理が完了すると、前述のCPU稼動バランス調整処理に対して相対的に1処理周期の時間的な遅れで図2に示される割合算出/フラグ設定処理が開始され、まず、ベクトル実行時間測定手段4として機能する制御用マイクロプロセッサ10が、マイクロプロセッサ10の一時記憶メモリの記憶領域の一部を利用して構成された処理態様記憶フラグf1’〜fj’の値を参照し、値が「1」となっている処理態様記憶フラグf1’〜fj’の個数(但し、f1’〜fj’のうち値が「1」となっている処理態様記憶フラグの個数に限る)を求め、この値に基いて直前の1サンプリング周期内においてベクトル命令を実行したマイクロプロセッサa1〜ajの「稼働時間の総和」(但し、a1〜ajのうちベクトル命令を実行したマイクロプロセッサに限る)を求める(ステップs1)。
直前の1サンプリング周期内においてベクトル命令を実行したマイクロプロセッサa1〜aj(但し、a1〜ajのうちベクトル命令を実行したマイクロプロセッサに限る)の「稼働時間の総和」は、ベクトル命令を実行した各マイクロプロセッサa1〜aj(但し、a1〜ajのうちベクトル命令を実行したマイクロプロセッサに限る)の稼働時間を全て加算した値であるが、ベクトル命令を実行した各マイクロプロセッサa1〜aj(但し、a1〜ajのうちベクトル命令を実行したマイクロプロセッサに限る)の実質的な稼働時間は全てサンプリング周期と同等であるから、このサンプリング周期をΔt、また、ベクトル命令を実行したマイクロプロセッサa1〜aj(但し、a1〜ajのうちベクトル命令を実行したマイクロプロセッサに限る)の個数をnとすれば、「稼働時間の総和」はn×Δtとなり、Δtの値は一定であるから、結果として、ベクトル命令を実行したマイクロプロセッサa1〜aj(但し、a1〜ajのうちベクトル命令を実行したマイクロプロセッサに限る)の個数nそれ自体によって「稼働時間の総和」に相当する値を代表させることができる。
よって、この実施形態では、処理の簡略化の都合上、値が「1」となっている処理態様記憶フラグf1’〜fj’の個数nそれ自体を「稼働時間の総和」として利用することにしている。
次いで、CPU稼動判定手段5として機能する制御用マイクロプロセッサ10は、1サンプリング周期に相当する全マイクロプロセッサa1〜ajの「稼働可能時間の総和」に対して「稼働時間の総和」が占める割合を求める(ステップs2)。
マイクロプロセッサa1〜ajの「稼働可能時間の総和」は、各マイクロプロセッサa1〜ajの稼働可能時間の値を全て加算した値であるが、マイクロプロセッサa1〜ajの個数は一定の値jであり、各マイクロプロセッサa1〜ajの稼働可能時間は全てサンプリング周期と同等であるから、このサンプリング周期をΔt、また、マイクロプロセッサa1〜ajの全数をjとすれば、「稼働可能時間の総和」はj×Δtとなり、Δtの値は一定であるから、結果として、マイクロプロセッサa1〜ajの全数jそれ自体によって「稼働可能時間の総和」の値を代表させることができる。
よって、この実施形態では処理の簡略化の都合上、マイクロプロセッサa1〜ajの全数jそれ自体を「稼働可能時間の総和」として利用することにしている。
つまり、「稼働時間の総和」が「稼働可能時間の総和」に対して占める割合は、〔n/j〕×100%である。
無論、サンプリング周期Δtが1ジョブの実行所要時間に比べて長い場合には、サンプリング周期Δtそれ自体がベクトル命令を実行した各マイクロプロセッサa1〜aj(但し、a1〜ajのうちベクトル命令を実行したマイクロプロセッサに限る)の実質的な稼動時間とはならないので、ベクトル命令を実行した各マイクロプロセッサa1〜aj(但し、a1〜ajのうちベクトル命令を実行したマイクロプロセッサに限る)の「稼働時間の総和」は、ベクトル命令を実行した各マイクロプロセッサa1〜aj(但し、a1〜ajのうちベクトル命令を実行したマイクロプロセッサに限る)の実際の稼働時間を個別に測定し、それらを加算する必要があるが、そのような内部処理は技術的に可能である。
次いで、CPU稼動判定手段5として機能する制御用マイクロプロセッサ10は、「稼働時間の総和」が「稼働可能時間の総和」に対して占める割合〔n/j〕×100%が閾値記憶手段8に予め記憶されている稼動停止閾値6の値(例えば80%)を上回っているか否かを判定する(ステップs3)。
ここで、ステップs3の判定結果が真となった場合、つまり、「稼働時間の総和」が「稼働可能時間の総和」に対して占める割合が稼動停止閾値6の値を上回っていることが明らかとなった場合には、CPU稼動判定手段5として機能する制御用マイクロプロセッサ10は、動作態様記憶手段3のCPU稼動フラグf1〜fjの値を順に参照し、フラグの値が「1」となっているCPU稼動フラグとして最初に検出されたCPU稼動フラグの値を「1」から「0」に書き換えることにより、このCPU稼動フラグに対応するマイクロプロセッサa1〜aj(但し、a1〜ajのうちの1つのマイクロプロセッサに限る)を、稼動状態から非稼動状態に切り替えるべきマイクロプロセッサとして動作態様記憶手段3に更新記憶させて、消費電力の軽減を試みる(ステップs4)。
なお、「稼働時間の総和」が「稼働可能時間の総和」に対して占める割合が稼動停止閾値6の値を上回っている場合にあっては、マイクロプロセッサa1〜ajの全てが非稼動状態となっていることは有り得ないので、フラグの値が「1」となっているCPU稼動フラグは必ず見つかる。
一方、ステップs3の判定結果が偽となった場合、つまり、「稼働時間の総和」が「稼働可能時間の総和」に対して占める割合が稼動停止閾値6の値に達していない場合にあっては、マイクロプロセッサa1〜ajの何れか(但し、稼動状態にあるマイクロプロセッサに限る)を非稼動状態として消費電力を軽減する必要はないので、ステップs4の処理はスキップされ、CPU稼動判定手段5として機能する制御用マイクロプロセッサ10は、更に、「稼働時間の総和」が「稼働可能時間の総和」に対して占める割合〔n/j〕×100%が閾値記憶手段8に予め記憶されている稼動再開閾値7の値(例えば60%)を下回っているか否かを判定する(ステップs5)。
ここで、ステップs5の判定結果が真となった場合、つまり、「稼働時間の総和」が「稼働可能時間の総和」に対して占める割合が稼動再開閾値7の値を下回っていることが明らかとなった場合には、現在非稼動状態となっているマイクロプロセッサを稼動状態にしても「稼働時間の総和」が「稼働可能時間の総和」に対して占める割合が稼動停止閾値6の値を上回ることはないものと予想されるので、CPU稼動判定手段5として機能する制御用マイクロプロセッサ10は、動作態様記憶手段3のCPU稼動フラグf1〜fjの値を順に参照し、フラグの値が「0」となっているCPU稼動フラグとして最初に検出されたCPU稼動フラグの値を「0」から「1」に書き換えることにより、このCPU稼動フラグに対応するマイクロプロセッサa1〜aj(但し、a1〜ajのうちの1つのマイクロプロセッサに限る)を、非稼動状態から稼動状態に切り替えるべきマイクロプロセッサとして動作態様記憶手段3に更新記憶させ、全体的な処理動作の効率の向上を試みる(ステップs6)。
なお、「稼働時間の総和」が「稼働可能時間の総和」に対して占める割合が稼動再開閾値7の値を下回っている場合にあっては、マイクロプロセッサa1〜ajの全てが稼動状態となっていることは有り得ないので、フラグの値が「0」となっているCPU稼動フラグは必ず見つかる。
また、ステップs3およびステップs5の判定結果が共に偽となった場合には、「稼働時間の総和」が「稼働可能時間の総和」に対して占める割合が稼動停止閾値6と稼動再開閾値7との間にあって全体的な処理動作の効率と電力消費のバランスが適正に保持されていると考えられるので、制御用マイクロプロセッサ10は、ステップs4とステップs6の処理を共に非実行とし、この時点で稼動状態にあるマイクロプロセッサを稼動状態に、また、この時点で非稼動状態にあるマイクロプロセッサを非稼動状態のままに保持する。
このようにして更新された動作態様記憶手段3のCPU稼動フラグf1〜fjの値は、この後に実行される図3のCPU稼動バランス調整処理におけるステップt1の処理によってディスパッチング手段2によって参照される。
そして、ディスパッチング手段2は、各CPU稼動フラグfiの値として、対応するマイクロプロセッサaiを稼動状態とすべきことを示す値「1」がセットされているのか、対応するマイクロプロセッサaiを非稼動状態とすべきことを示す値「0」がセットされているのかを判定する(以上、ステップt1)。
CPU稼動バランス調整処理の第2周期目以降の処理では、CPU稼動フラグf1〜fjの値の幾つかは「1」から「0」に書き換えられている可能性があり、また、CPU稼動バランス調整処理の第3周期目以降の処理では、CPU稼動フラグf1〜fjの値の幾つかは改めて「0」から「1」に書き換えられている可能性がある。
従って、ディスパッチング手段2は、値が「1」であるCPU稼動フラグに対応するマイクロプロセッサa1〜aj(但し、CPU稼動フラグの値が「1」となっているマイクロプロセッサに限る)に関しては其の稼動状態を保持し、あるいは、其の状態を非稼動状態から稼動状態に切り替えて、当該時点で稼動状態となっているマイクロプロセッサa1〜aj(但し、現時点で稼動状態のマイクロプロセッサに限る)にベクトルプログラムb1〜bkやスカラプログラムc1〜cmを実行対象のタスクとして割り当て、更に、実行対象のタスクとしてベクトルプログラムb1〜bkを割り当てたマイクロプロセッサa1〜aj(但し、a1〜ajのうちベクトルプログラムを割り当てたマイクロプロセッサに限る)に対応する処理態様記憶フラグf1’〜fj’(但し、f1’〜fj’のうちベクトルプログラムを割り当てたマイクロプロセッサに対応する処理態様記憶フラグに限る)にベクトルプログラムの実行履歴を示す値「1」をセットし、また、実行対象のタスクとしてスカラプログラムc1〜cmを割り当てたマイクロプロセッサa1〜aj(但し、a1〜ajのうちスカラプログラムを割り当てたマイクロプロセッサに限る)に対応する処理態様記憶フラグf1’〜fj’(但し、f1’〜fj’のうちスカラプログラムを割り当てたマイクロプロセッサに対応する処理態様記憶フラグに限る)にはスカラプログラムの実行履歴を示す値「0」をセットする(以上、ステップt2)。
また、対応するマイクロプロセッサaiを非稼動状態とすべきことを示す値「0」がセットされているCPU稼動フラグに対応するマイクロプロセッサa1〜aj(但し、CPU稼動フラグの値が「0」となっているマイクロプロセッサに限る)については、ディスパッチング手段2は、マイクロプロセッサa1〜aj(但し、CPU稼動フラグの値が「0」となっているマイクロプロセッサに限る)の非稼動状態を保持し、あるいは、其の状態を稼動状態から非稼動状態に切り替え、当該時点で非稼動状態となっているマイクロプロセッサa1〜aj(但し、現時点で非稼動状態のマイクロプロセッサに限る)に対応する処理態様記憶フラグf1’〜fj’(但し、現時点で非稼動状態のマイクロプロセッサに対応する処理態様記憶フラグに限る)の値を「0」に初期化する(以上、ステップt3)。
このようにして、制御用マイクロプロセッサ10による割合算出/フラグ設定処理とディスパッチング手段2によるCPU稼動バランス調整処理が繰り返し実行される結果、図2に示される割合算出/フラグ設定処理のステップs3の処理で「稼働時間の総和」が「稼働可能時間の総和」に対して占める割合が稼動再開閾値7の値を下回っていることが確認される度に、動作態様記憶手段3における何れかのCPU稼動フラグの値が「0」から「1」に書き換えられて、図3に示されるCPU稼動バランス調整処理におけるステップt2の処理で、当該CPU稼動フラグに対応する非稼動状態のマイクロプロセッサが稼動状態とされる。
また、これとは逆に、図2に示される割合算出/フラグ設定処理のステップs3の処理で「稼働時間の総和」が「稼働可能時間の総和」に対して占める割合が稼動停止閾値6の値を上回っていることが確認されると、動作態様記憶手段3における何れかのCPU稼動フラグの値が「1」から「0」に書き換えられ、図3に示されるCPU稼動バランス調整処理におけるステップt3の処理で、当該CPU稼動フラグに対応する稼動状態のマイクロプロセッサが非稼動状態とされる。
この結果、スカラ命令を実行する場合に比べて消費電力が大きくなるベクトル命令を実行するマイクロプロセッサの「稼働時間の総和」が「稼働可能時間の総和」に対して占める割合は自動的に稼動停止閾値6と稼動再開閾値7との間に収められ、全体的な処理動作の効率と電力消費のバランスが適正に保持されるようになる。
ベクトル計算機1のマイクロプロセッサa1〜ajがベクトルプログラムb1〜bkおよびスカラプログラムc1〜cmを処理する場合の各マイクロプロセッサa1〜ajに対するタスクの割り当ての変化と各マイクロプロセッサa1〜ajの稼動/非稼動の態様変化の一例を図4の作用原理図に簡略化して示す。ここでは、稼動停止閾値6の値は80%、また、稼動再開閾値7の値は60%としている。
まず、電源投入時の初期化処理が完了した直後の時点、つまり、図4の作用原理図の時間軸において0〜Δtの時間区間では、既に述べた通り、CPU稼動フラグf1〜fjの全てにマイクロプロセッサa1〜ajが稼動状態であることを示す値「1」がセットされているので(段落0027参照)、ディスパッチング手段2は、全てのマイクロプロセッサa1〜ajを稼動状態とし、従来と同様に、全てのマイクロプロセッサa1〜ajにベクトルプログラムb1〜bkやスカラプログラムc1〜cmを実行対象のタスクとして割り当てる(段落0029参照)。
図4の例では、作用原理図の時間軸上のΔtの時点つまりCPU稼動バランス調整処理に対して相対的に1処理周期の遅れで実行される割合算出/フラグ設定処理の実行時点において、「稼働可能時間の総和」に対し「稼働時間の総和」が占める割合が稼動停止閾値6と稼動再開閾値7との間(60%〜80%)にあるので、稼動状態にあるマイクロプロセッサを非稼動状態にしたり非稼動状態にあるマイクロプロセッサを稼動状態にするといったような処理は行なわれない(段落0044参照)。
このため、図4の作用原理図の時間軸においてΔt〜2×Δtの時間区間では、マイクロプロセッサa1〜ajの稼動状態は0〜Δtの時間区間と同様となり、全てのマイクロプロセッサa1〜ajが稼動している。
但し、0〜Δtの時間区間ではベクトルプログラムを処理するマイクロプロセッサが7個であったのに対し、Δt〜2×Δtの時間区間ではベクトルプログラムを処理するマイクロプロセッサが8個に増大するので、この結果として、「稼働可能時間の総和」に対し「稼働時間の総和」が占める割合が、0〜Δtの時間区間の場合と比べて増大する。
この結果、作用原理図の時間軸上の2×Δtの時点で実行される割合算出/フラグ設定処理の実行時点においては、「稼働可能時間の総和」に対し「稼働時間の総和」が占める割合が稼動停止閾値6(80%)を超える。このため、割合算出/フラグ設定処理におけるステップs3の判定結果が真となり、CPU稼動判定手段5として機能する制御用マイクロプロセッサ10が、ステップs4の処理で動作態様記憶手段3のCPU稼動フラグf1〜fjの値を順に参照し、フラグの値が「1」となっているCPU稼動フラグとして最初に検出されたCPU稼動フラグ例えばCPU稼動フラグfjの値を「1」から「0」に書き換える(段落0039参照)。
このため、図4の作用原理図の時間軸における2×Δt〜3×Δtの時間区間ではマイクロプロセッサajが稼動状態から非稼動状態に切り替えられ、マイクロプロセッサajがアイドリング状態となり、この結果として、「稼働可能時間の総和」に対し「稼働時間の総和」が占める割合が、Δt〜2×Δtの時間区間の場合と比べて減少する。
図4の例では、マイクロプロセッサajがアイドリング状態となり「稼働可能時間の総和」に対して「稼働時間の総和」が占める割合が減少することにより、「稼働可能時間の総和」に対して「稼働時間の総和」が占める割合が再び稼動停止閾値6と稼動再開閾値7との間(60%〜80%)に入るので、3×Δtの時点で実行される割合算出/フラグ設定処理では、稼動状態にあるマイクロプロセッサを非稼動状態にしたり非稼動状態にあるマイクロプロセッサを稼動状態にするといったような処理は行なわれない(段落0044参照)。
従って、図4の作用原理図の時間軸において3×Δt〜4×Δtの時間区間では、マイクロプロセッサa1〜ajの稼動状態は2×Δt〜3×Δtの時間区間と同様となり、マイクロプロセッサa1〜aj−1が稼動状態を保持し、マイクロプロセッサajは非稼動状態を保持する。
但し、2×Δt〜3×Δtの時間区間ではベクトルプログラムを処理するマイクロプロセッサが7個であったのに対し、3×Δt〜4×Δtの時間区間ではベクトルプログラムを処理するマイクロプロセッサが6個に減少するので、この結果として、「稼働可能時間の総和」に対し「稼働時間の総和」が占める割合が、2×Δt〜3×Δtの時間区間の場合と比べて減少する。
この結果、作用原理図の時間軸上の4×Δtの時点で実行される割合算出/フラグ設定処理の実行時点においては、「稼働可能時間の総和」に対し「稼働時間の総和」が占める割合が稼動再開閾値7(60%)を下回る。このため、割合算出/フラグ設定処理におけるステップs5の判定結果が真となり、CPU稼動判定手段5として機能する制御用マイクロプロセッサ10が、ステップs6の処理で動作態様記憶手段3のCPU稼動フラグf1〜fjの値を順に参照し、フラグの値が「0」となっているCPU稼動フラグとして最初に検出されたCPU稼動フラグつまりCPU稼動フラグfjの値を「0」から「1」に書き換える(段落0042参照)。
このため、図4の作用原理図の時間軸における4×Δt〜5×Δtの時間区間ではマイクロプロセッサajが非稼動状態から稼動状態に切り替えられ、再び、全ての全てのマイクロプロセッサa1〜ajが稼動することになる。
また、高負荷のベクトルプログラムを主体とするプログラムを複数のマルチプロセッサa1〜ajによって処理する場合にあっては、処理の内容に応じ、例えば、図5(a)に示されるように、1つのベクトルプログラムを複数のスレッドに分割し、各スレッドの処理をマルチプロセッサa1〜ajに割り当てて実行させるのが一般的である。
そうした場合にあっては個々のスレッド(ジョブ)の負荷も高いため、図5(b)に示されるように、ベクトル計算機1のマイクロプロセッサa1〜ajのうちの幾つか例えばマイクロプロセッサa1〜a4に負荷の大きなベクトルプログラムのスレッドが割り当てられ、その結果として、幾つものマイクロプロセッサ例えばマイクロプロセッサa5〜ajを同時に非稼動状態とせざるを得なくなるような場合がある。
また、稼動停止閾値6の値と稼動再開閾値7の値を共に低い値に設定した場合、例えば、稼動停止閾値6の値を50%とし稼動再開閾値7の値を30%として設定したような場合にあっても、前記と同様、例えば図5(b)に示されるように、ベクトル計算機1の幾つものマイクロプロセッサ例えばマイクロプロセッサa5〜ajを同時に非稼動状態とする必要が生じる場合がある。
この実施形態では、「稼働時間の総和」が「稼働可能時間の総和」に対して占める割合が稼動停止閾値6と稼動再開閾値7との間に収まるように、CPU稼動判定手段5として機能する制御用マイクロプロセッサ10が動作態様記憶手段3のCPU稼動フラグf1〜fjのセット/リセット状態を調整し(ステップs4,ステップs6)、ディスパッチング手段2が動作態様記憶手段3のCPU稼動フラグf1〜fjのセット/リセット状態を参照し、マイクロプロセッサa1〜ajの各々を稼動状態とするか非稼動状態とするかを決めた上で、その時点で稼動状態となっているマイクロプロセッサa1〜aj(但し、その時点で稼動状態とされているマイクロプロセッサに限る)に対してタスクすなわち処理の対象となるスレッドを割り当てるようにしているので、幾つものマイクロプロセッサ例えばマイクロプロセッサa5〜ajを同時に非稼動状態とした場合であっても、稼動中のマイクロプロセッサa1〜a4に割り振れなくなったスレッドが次の処理周期に見送られるだけであり、プログラムの実行自体が停止するといた不都合は生じない。
図5(b)に示される例では、実行すべきスレッドが8個であるのに対し稼動状態にあるマイクロプロセッサの数が4個つまりマイクロプロセッサa1〜a4に制限されているが、スレッド1〜スレッド4と共に実行できないスレッド5〜スレッド8は、次の処理周期においてマイクロプロセッサa1〜a4によって実行される。つまり、プログラムの実行に必要とされる所要時間は増加するが、プログラム自体が停止するといった問題は生じない。
従って、様々な事情から更に消費電力を抑えたい場合であっても、稼動停止閾値6や稼動再開閾値7の値を調整することにより消費電力を調整することが可能である。
従って、様々な事情から更に消費電力を抑えたい場合であっても、稼動停止閾値6や稼動再開閾値7の値を調整することにより消費電力を調整することが可能である。
以上の実施形態では、1サンプリング周期で1つのマイクロプロセッサの動作態様のみを切り替えるようにしているが、2つ以上のマイクロプロセッサを同時に稼動状態から非稼動状態に切り替えたり非稼動状態から稼動状態に切り替えたりするように構成してもよい。その場合も全体的な処理の流れについては前記と同様である。
2つ以上のマイクロプロセッサを同時に稼動状態から非稼動状態に切り替えたり非稼動状態から稼動状態に切り替えたりする場合は、割合算出/フラグ設定処理のステップs4の処理においてフラグの値が「1」となっているCPU稼動フラグとして検出された2つ以上のCPU稼動フラグの値を「1」から「0」に書き換え、また、ステップs6の処理においてフラグの値が「0」となっているCPU稼動フラグとして検出された2つ以上のCPU稼動フラグの値を「0」から「1」に書き換えるようにすればよい。
2つ以上のマイクロプロセッサを同時に稼動状態から非稼動状態に切り替えたり非稼動状態から稼動状態に切り替えたりする場合は、割合算出/フラグ設定処理のステップs4の処理においてフラグの値が「1」となっているCPU稼動フラグとして検出された2つ以上のCPU稼動フラグの値を「1」から「0」に書き換え、また、ステップs6の処理においてフラグの値が「0」となっているCPU稼動フラグとして検出された2つ以上のCPU稼動フラグの値を「0」から「1」に書き換えるようにすればよい。
以上に述べた通り、この実施形態では、ベクトル命令を実行するマイクロプロセッサa1〜aj(但し、a1〜ajのうちベクトル命令を実行するマイクロプロセッサに限る)の「稼働時間の総和」を1サンプリング周期毎に求め、この1サンプリング周期に相当する全マイクロプロセッサa1〜ajの「稼働可能時間の総和」に対して「稼働時間の総和」が占める割合が予め決められた稼動停止閾値6を上回ると稼動状態にあるマイクロプロセッサa1〜aj(但し、a1〜ajのうち稼動中のマイクロプロセッサに限る)のうち少なくとも1つのマイクロプロセッサを非稼動状態とするようにしているので、ベクトル計算機1に処理の対象として入力されるプログラム中で使用されるベクトル命令数の比率が如何に高くとも、ベクトル計算機1における単位時間当たりの電力消費が極端に増大することはなく、全体的な処理動作の効率と電力消費のバランスが適正に保持される。
また、プロファイル情報の抽出やアイドル時間の見積りといった前処理を行なう必要はないので、煩雑な前処理によって全体的な処理時間が冗長する問題や複数のジョブを同時に実行する場合にプロファイル情報の抽出やアイドル時間の見積りが困難となって前処理が実行不能となるといった問題も発生しない。更に、消費電力の調整のために各マイクロプロセッサa1〜ajのクロック周波数を調整する必要もないので、ベクトル計算機1の構造の複雑化やコストアップといった弊害も生じない。
また、プロファイル情報の抽出やアイドル時間の見積りといった前処理を行なう必要はないので、煩雑な前処理によって全体的な処理時間が冗長する問題や複数のジョブを同時に実行する場合にプロファイル情報の抽出やアイドル時間の見積りが困難となって前処理が実行不能となるといった問題も発生しない。更に、消費電力の調整のために各マイクロプロセッサa1〜ajのクロック周波数を調整する必要もないので、ベクトル計算機1の構造の複雑化やコストアップといった弊害も生じない。
本発明は、ベクトル計算機の省電力化技術に関し、特に複数のプロセッサから構成されるベクトル計算機の省電力の実現に利用可能である。
1 ベクトル計算機
2 ディスパッチング手段
3 動作態様記憶手段(一時記憶メモリ)
4 ベクトル実行時間測定手段
5 CPU稼動判定手段
6 稼動停止閾値
7 稼動再開閾値
8 閾値記憶手段(不揮発性メモリ)
9 閾値設定手段
10 制御用マイクロプロセッサ(ベクトル実行時間測定手段,CPU稼動判定手段)
11 ROM
a1〜aj マイクロプロセッサ
b1〜bk ベクトルプログラム
c1〜cm スカラプログラム
f1〜fj CPU稼動フラグ
f1’〜fj’ 処理態様記憶フラグ
2 ディスパッチング手段
3 動作態様記憶手段(一時記憶メモリ)
4 ベクトル実行時間測定手段
5 CPU稼動判定手段
6 稼動停止閾値
7 稼動再開閾値
8 閾値記憶手段(不揮発性メモリ)
9 閾値設定手段
10 制御用マイクロプロセッサ(ベクトル実行時間測定手段,CPU稼動判定手段)
11 ROM
a1〜aj マイクロプロセッサ
b1〜bk ベクトルプログラム
c1〜cm スカラプログラム
f1〜fj CPU稼動フラグ
f1’〜fj’ 処理態様記憶フラグ
Claims (5)
- ベクトル命令とスカラ命令を実行する複数のマイクロプロセッサと、前記各マイクロプロセッサに実行対象とするタスクを割り当てるディスパッチング手段とを備えたベクトル計算機であって、
前記各マイクロプロセッサを稼動状態とすべきか非稼動状態とすべきかを各マイクロプロセッサ毎に記憶する動作態様記憶手段と、
予め決められた1サンプリング周期内においてベクトル命令を実行するマイクロプロセッサの稼働時間の総和を求めるベクトル実行時間測定手段と、
前記1サンプリング周期に相当する全マイクロプロセッサの稼働可能時間の総和に対して前記稼働時間の総和が占める割合を求め、その割合が予め設定された閾値を上回ると前記動作態様記憶手段を参照して稼動状態とすべきマイクロプロセッサのうち少なくとも1つのマイクロプロセッサを非稼動状態とすべきマイクロプロセッサとして前記記憶手段に更新記憶させる一方、前記割合が予め設定された閾値を下回ると前記動作態様記憶手段を参照して非稼動状態とすべきマイクロプロセッサのうち少なくとも1つのマイクロプロセッサを稼動状態とすべきマイクロプロセッサとして前記動作態様記憶手段に更新記憶させるCPU稼動判定手段とを設け、
前記ディスパッチング手段は、前記動作態様記憶手段に稼動状態とすべきマイクロプロセッサとして記憶されているマイクロプロセッサに対してのみ実行対象とするタスクを割り当て、他のマイクロプロセッサを非稼動状態とするように構成したことを特徴とするベクトル計算機。 - 前記閾値として稼動停止閾値と該稼動停止閾値よりも値の小さな稼動再開閾値とを記憶する閾値記憶手段を有し、
前記CPU稼動判定手段は、前記割合が前記稼動停止閾値を上回ると稼動状態とすべきマイクロプロセッサのうち少なくとも1つのマイクロプロセッサを非稼動状態とすべきマイクロプロセッサとして前記動作態様記憶手段に更新記憶させる一方、前記割合が前記稼動再開閾値を下回ると非稼動状態とすべきマイクロプロセッサのうち少なくとも1つのマイクロプロセッサを稼動状態とすべきマイクロプロセッサとして前記動作態様記憶手段に更新記憶させるように構成されていることを特徴とする請求項1記載のベクトル計算機。 - 前記閾値記憶手段に閾値を設定するための閾値設定手段を備えたことを特徴とする請求項1または請求項2のうち何れか一項に記載のベクトル計算機。
- ベクトル命令とスカラ命令を実行する複数のマイクロプロセッサに実行対象とするタスクを割り当ててベクトル命令とスカラ命令を並列的に実行するベクトル計算機におけるマイクロプロセッサのスケジューリング方法であって、
ベクトル命令を実行するマイクロプロセッサの稼働時間の総和を1サンプリング周期毎に求め、
前記1サンプリング周期に相当する全マイクロプロセッサの稼働可能時間の総和に対して前記稼働時間の総和が占める割合が予め決められた閾値を上回ると稼動状態にあるマイクロプロセッサのうち少なくとも1つのマイクロプロセッサを非稼動状態とする一方、前記割合が予め決められた閾値を下回ると非稼動状態にあるマイクロプロセッサのうち少なくとも1つのマイクロプロセッサを稼動状態とし、
稼動状態にあるマイクロプロセッサに対してのみ実行対象とするタスクを割り当てるようにしたことを特徴とするベクトル計算機におけるマイクロプロセッサのスケジューリング方法。 - 前記割合が予め決められた稼動停止閾値を上回ると稼動状態にあるマイクロプロセッサのうち少なくとも1つのマイクロプロセッサを非稼動状態とする一方、前記割合が前記稼動停止閾値よりも小さな値からなる予め決められた稼動再開閾値を下回ると非稼動状態にあるマイクロプロセッサのうち少なくとも1つのマイクロプロセッサを稼動状態とすることを特徴とした請求項4記載のベクトル計算機におけるマイクロプロセッサのスケジューリング方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2009071208A JP2010224853A (ja) | 2009-03-24 | 2009-03-24 | ベクトル計算機およびベクトル計算機におけるマイクロプロセッサのスケジューリング方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2009071208A JP2010224853A (ja) | 2009-03-24 | 2009-03-24 | ベクトル計算機およびベクトル計算機におけるマイクロプロセッサのスケジューリング方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2010224853A true JP2010224853A (ja) | 2010-10-07 |
Family
ID=43041975
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2009071208A Withdrawn JP2010224853A (ja) | 2009-03-24 | 2009-03-24 | ベクトル計算機およびベクトル計算機におけるマイクロプロセッサのスケジューリング方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2010224853A (ja) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2014167780A (ja) * | 2013-02-28 | 2014-09-11 | Toshiba Corp | 情報処理装置、動作状態制御方法及びプログラム |
CN104375898A (zh) * | 2014-11-20 | 2015-02-25 | 无锡悟莘科技有限公司 | 一种移动终端cpu占用率优化方法 |
US10120834B2 (en) | 2013-06-03 | 2018-11-06 | Fujitsu Limited | Signal processing device and signal processing method using a corresponding table and a switching pattern |
-
2009
- 2009-03-24 JP JP2009071208A patent/JP2010224853A/ja not_active Withdrawn
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2014167780A (ja) * | 2013-02-28 | 2014-09-11 | Toshiba Corp | 情報処理装置、動作状態制御方法及びプログラム |
US9625970B2 (en) | 2013-02-28 | 2017-04-18 | Kabushiki Kaisha Toshiba | Information processing apparatus, operation state control method, and computer program product |
US10120834B2 (en) | 2013-06-03 | 2018-11-06 | Fujitsu Limited | Signal processing device and signal processing method using a corresponding table and a switching pattern |
CN104375898A (zh) * | 2014-11-20 | 2015-02-25 | 无锡悟莘科技有限公司 | 一种移动终端cpu占用率优化方法 |
CN104375898B (zh) * | 2014-11-20 | 2017-12-01 | 无锡悟莘科技有限公司 | 一种移动终端cpu占用率优化方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5411587B2 (ja) | マルチスレッド実行装置、マルチスレッド実行方法 | |
KR101629155B1 (ko) | 전력-인식 스레드 스케줄링 및 프로세서들의 동적 사용 | |
US8707314B2 (en) | Scheduling compute kernel workgroups to heterogeneous processors based on historical processor execution times and utilizations | |
JP5688462B2 (ja) | 処理ノードの動的パフォーマンス制御 | |
US9146761B2 (en) | Virtualization system and resource allocation method thereof | |
US20090172428A1 (en) | Apparatus and method for controlling power management | |
EP2073097A2 (en) | Transitioning a processor package to a low power state | |
JP5345990B2 (ja) | 特定のプロセスを短時間で処理する方法およびコンピュータ | |
TWI489266B (zh) | 指定應用程式執行緒的效能狀態之指令 | |
JPWO2005106623A1 (ja) | Cpuクロック制御装置、cpuクロック制御方法、cpuクロック制御プログラム、記録媒体、及び伝送媒体 | |
JP5347451B2 (ja) | マルチプロセッサシステム、競合回避プログラム及び競合回避方法 | |
Sahba et al. | Improving IPC in simultaneous multi-threading (SMT) processors by capping IQ utilization according to dispatched memory instructions | |
US9910717B2 (en) | Synchronization method | |
WO2007077516A1 (en) | Power aware dynamic scheduling in multiprocessor system employing voltage islands | |
US20030177163A1 (en) | Microprocessor comprising load monitoring function | |
Feliu et al. | Symbiotic job scheduling on the IBM POWER8 | |
JP2010224853A (ja) | ベクトル計算機およびベクトル計算機におけるマイクロプロセッサのスケジューリング方法 | |
US9785463B2 (en) | Using per task time slice information to improve dynamic performance state selection | |
JP2009048358A (ja) | 情報処理装置及びスケジューリング方法 | |
US7603673B2 (en) | Method and system for reducing context switch times | |
Eitschberger et al. | Energy-efficient task scheduling in manycore processors with frequency scaling overhead | |
CN103176835A (zh) | 用于在数据处理中规划流程的电路装置 | |
JP2016184315A (ja) | 電子制御装置 | |
Krishna | Global voltage scaling across multiple cores for real-time workloads | |
Islam et al. | Learning based power management for periodic real-time tasks |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A300 | Application deemed to be withdrawn because no request for examination was validly filed |
Free format text: JAPANESE INTERMEDIATE CODE: A300 Effective date: 20120605 |