JP2013196672A - マルチプロセッサシステムおよび電力制御方法 - Google Patents
マルチプロセッサシステムおよび電力制御方法 Download PDFInfo
- Publication number
- JP2013196672A JP2013196672A JP2012066726A JP2012066726A JP2013196672A JP 2013196672 A JP2013196672 A JP 2013196672A JP 2012066726 A JP2012066726 A JP 2012066726A JP 2012066726 A JP2012066726 A JP 2012066726A JP 2013196672 A JP2013196672 A JP 2013196672A
- Authority
- JP
- Japan
- Prior art keywords
- thread
- processor
- power
- processors
- threads
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3234—Power saving characterised by the action undertaken
- G06F1/3287—Power saving characterised by the action undertaken by switching off individual functional units in the computer system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3206—Monitoring of events, devices or parameters that trigger a change in power modality
- G06F1/3228—Monitoring task completion, e.g. by use of idle timers, stop commands or wait commands
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Power Sources (AREA)
Abstract
【課題】性能低下を抑制しつつ消費電力を低減すること。
【解決手段】共有メモリは、待ちイベントを有するスレッドが待ちイベント数と対応付けて登録されるスレッドプールと、待ちイベントを有さないスレッドが登録されるスレッドキューと、を備えている。第1のプロセッサは、スレッドキューから第1のスレッドを取得して実行する。第2のプロセッサは、第1のスレッドの実行状況に基づいて前記スレッドプールに登録されている待ちイベント数を更新し、待ちイベント数がゼロ値となったとき、当該第2のスレッドを前記スレッドキューに登録する。第3のプロセッサは、スレッドキューに登録されているスレッドの数と、スレッドプールに登録されている、待ちイベント数が所定数以上のスレッドの数と、に基づいて、第1のプロセッサに対する電源供給を個別に停止/再開する。
【選択図】図8
【解決手段】共有メモリは、待ちイベントを有するスレッドが待ちイベント数と対応付けて登録されるスレッドプールと、待ちイベントを有さないスレッドが登録されるスレッドキューと、を備えている。第1のプロセッサは、スレッドキューから第1のスレッドを取得して実行する。第2のプロセッサは、第1のスレッドの実行状況に基づいて前記スレッドプールに登録されている待ちイベント数を更新し、待ちイベント数がゼロ値となったとき、当該第2のスレッドを前記スレッドキューに登録する。第3のプロセッサは、スレッドキューに登録されているスレッドの数と、スレッドプールに登録されている、待ちイベント数が所定数以上のスレッドの数と、に基づいて、第1のプロセッサに対する電源供給を個別に停止/再開する。
【選択図】図8
Description
本発明の実施形態は、マルチプロセッサシステムおよび電力制御方法に関する。
従来、消費電力の削減を目的としてプロセッサ毎に電源供給を停止したり再開したりする機能を備えるマルチプロセッサシステムがある。
マルチプロセッサシステムの消費電力を低減する手法として、例えば、プロセッサがスレッドを実行中であるか非実行中であるかに基づいてプロセッサの電源をオンしたりオフしたりする手法が考えられる。一般に、プロセッサの電源をオンからオフおよびオフからオンに遷移するとき、プロセッサの静電容量に相当する電流が流れるため、低消費電力化の観点からは電源のオンとオフの遷移の頻度はあまり高くないほうがよい。しかしながら、この手法によると、プロセッサに空きがあればすぐにでも実行されることが可能なスレッド(以降、実行可能スレッド)の数が頻繁に変化すると、電源オン・オフの遷移の頻度が高くなってしまい、消費電力が増加する場合がある。
また、電源状態の遷移には幾分かの時間がかかる。電源のオフ状態またはオン状態が保たれる時間が短くなると、スレッドの実行時間に対する電源のオンとオフの遷移にかかる時間の割合が増大し、結果としてマルチプロセッサシステムの性能低下を招く。
本発明の一つの実施形態は、性能低下を抑制しつつ消費電力を低減するマルチプロセッサシステムおよびマルチプロセッサシステムの電力制御方法を提供することを目的とする。
本発明の一つの実施形態によれば、マルチプロセッサシステムは、複数のプロセッサと、前記複数のプロセッサに個別に電源を供給する電源供給装置と、前記複数のプロセッサ間で共有され、夫々、前記複数のプロセッサのうちの1つに実行される複数のスレッドを記憶する共有メモリと、を備える。前記共有メモリは、前記複数のスレッドのうちの待ちイベントを有するスレッドが待ちイベント数と対応付けて登録されるスレッドプールと、前記複数のスレッドのうちの待ちイベントを有さないスレッドが登録されるスレッドキューと、を備える。前記複数のプロセッサは、1以上の第1のプロセッサと、第2のプロセッサと、第3のプロセッサとを備える。第1のプロセッサは、前記電源供給装置から電源が供給されたときに、前記スレッドキューから第1のスレッドを取得して、取得した第1のスレッドを実行する。第2のプロセッサは、前記第1のスレッドの実行状況に基づいて、前記第1のスレッドを待ちイベントとする前記スレッドプールに登録されている第2のスレッドの、待ちイベント数を更新し、前記第2のスレッドの待ちイベント数がゼロ値となったとき、当該第2のスレッドを前記スレッドキューに登録する。第3のプロセッサは、前記スレッドキューに登録されているスレッドの数と、前記スレッドプールに登録されている、待ちイベント数が第1のしきい値以下のスレッドの数と、に基づいて、前記第1のプロセッサに対する前記電源供給装置からの電源供給を個別に停止/再開する。
以下に添付図面を参照して、実施形態にかかるマルチプロセッサシステムおよび電力制御方法を詳細に説明する。なお、これらの実施形態により本発明が限定されるものではない。
(第1の実施形態)
図1は、第1の実施形態のマルチプロセッサシステムの構成図である。図1のマルチプロセッサシステム1は、4個のプロセッサ10a〜10dと、共有メモリ11と、電源供給装置12と、バス13と、電力供給線14とを備えている。プロセッサ10a〜10dおよび共有メモリ11はバス13に接続されている。プロセッサ10a〜10dは、バス13を介して共有メモリ11にアクセスすることができる。電源供給装置12は、電力供給線14を介してプロセッサ10a〜10dに電力を供給する。
図1は、第1の実施形態のマルチプロセッサシステムの構成図である。図1のマルチプロセッサシステム1は、4個のプロセッサ10a〜10dと、共有メモリ11と、電源供給装置12と、バス13と、電力供給線14とを備えている。プロセッサ10a〜10dおよび共有メモリ11はバス13に接続されている。プロセッサ10a〜10dは、バス13を介して共有メモリ11にアクセスすることができる。電源供給装置12は、電力供給線14を介してプロセッサ10a〜10dに電力を供給する。
なお、図1では、電力供給線14はプロセッサ10a〜10dに共通接続されているものとして描画されているが、実際には電力供給線14はプロセッサ10a〜10dに個別に接続されている。電源供給装置12は、プロセッサ10a〜10dの夫々に電源を供給したり電源供給を停止したりすることができる。例えば、プロセッサ10a〜10dは、ターゲットのプロセッサを指定して、電源を供給せしめる指令または電源供給を停止せしめる指令を図示しない専用線を用いて電源供給装置12に送信する。電源供給装置12は、ターゲットのプロセッサに対し、指令の内容に対応する処置を実行する。なお、以降、プロセッサに電源が供給されている状態を電源オン状態、プロセッサに電源が供給されていない状態を電源オフ状態ということとする。
共有メモリ11は、例えばメモリ、レジスタ、外部記憶装置、またはそれらの組み合わせにより構成される。共有メモリ11は、プロセッサ10a〜10dで実行されるプログラムであるアプリケーションプログラム20を予め記憶している。アプリケーションプログラム20は、複数のスレッドT1、T2、T3、…と、これらのスレッドを管理するユーザタスク21とにより構成される。
図2は、アプリケーションプログラム20に含まれる複数のスレッドの構造の一例を説明する図である。図2において、スレッドを表すボックスに括弧書きで記述されている数字は、スレッドの実行にかかる時間であり、ボックス間の矢印はイベントの関係を示している。例えば、スレッドT1は、実行時間が40であり、実行が完了したときに、スレッドT5およびスレッドT6にイベントを送信する。スレッドT5は、スレッドT1〜T4の実行が完了したとき、言い換えると、スレッドT1〜T4からのイベントを受信したとき、実行が可能な状態となる。なお、スレッドが実行可能な状態になるために実行完了する必要があるスレッドを、待ちイベントということとする。即ち、スレッドT5の待ちイベントはスレッドT1〜T4である。また、そのスレッドの待ちイベントの実行が完了していないためにすぐに実行されることが不可能なスレッドをイベント待ちスレッドということとする。
共有メモリ11は、スレッドの実行を制御するとともにプロセッサ10a〜10dの電力制御を実行するスレッド実行制御タスク111と、アプリケーションプログラム20が含むスレッドを後述の実行可能スレッドキュー112またはイベント待ちスレッドプール113に登録するスレッド登録処理114と、スレッドがイベントを送信する際に当該スレッドによって呼び出されるイベント送信処理115とを予め記憶している。スレッド実行制御タスク111、スレッド登録処理114、イベント送信処理115は夫々、プログラムモジュールとして共有メモリ11に格納されている。
また、共有メモリ11は、実行可能スレッドキュー112およびイベント待ちスレッドプール113を備えている。実行可能スレッドキュー112およびイベント待ちスレッドプール113は夫々スレッド管理のためのデータ構造である。
実行可能スレッドキュー112は、例えばFIFOであって、実行可能スレッドを特定する情報が登録される。図3は、実行可能スレッドキュー112のデータ構造例を示す図である。図3の実行可能スレッドキュー112には、実行可能スレッドの実行開始アドレスが登録されている。実行開始アドレスは、スレッドの実体であるプログラムモジュールの先頭アドレスである。
イベント待ちスレッドプール113は、イベント待ちスレッド毎に待ちイベント数を記録したエントリが登録される。図4は、イベント待ちスレッドプール113のデータ構造例を示す図である。図4のイベント待ちスレッドプール113には、イベント待ちスレッド毎に、IDと、待ちイベントの数と、イベント待ちスレッドの実行開始アドレスが登録されている。なお、夫々のエントリに記述されている待ちイベント数は、IDあるいは実行開始アドレスにより特定されるスレッドにかかる待ちイベントの実行が完了する毎にイベント送信処理115によりデクリメントされる。待ちイベント数が0になると、そのエントリはイベント待ちスレッドプール113から削除され、そのエントリが示すスレッドが実行可能スレッドキュー112に登録される。
電源供給装置12は、プロセッサ10a〜10dが電源オン状態であるか電源オフ状態であるかをプロセッサ毎に示すプロセッサ電源状態フラグ(フラグ情報)121を備えている。プロセッサ10a〜10dの夫々は、プロセッサ電源状態フラグ121を参照することによって他のプロセッサが電源オン状態であるか電源オフ状態であるかを認識することができる。図5は、プロセッサ電源状態フラグ121の一例を示す図である。この例によると、プロセッサ電源状態フラグ121は、電源オン状態である場合には「1」を、電源オフ状態である場合には「0」を示す1ビットの情報を、4つのプロセッサ10a〜10dの夫々について備えている。プロセッサ電源状態フラグ121は、例えば、電源供給装置12の中または外に設けられた、レジスタや小規模なメモリに保持される。
次に、図6〜図11を参照して、第1の実施形態のマルチプロセッサシステム1の動作を説明する。プロセッサ10a〜10dの夫々は、共有メモリ11が記憶するプログラムモジュール(ユーザタスク21、複数のスレッド、スレッド実行制御タスク111、スレッド登録処理114、またはイベント送信処理115)による制御の下で動作するが、以降の動作の説明では、対応するプログラムモジュールを動作主体として説明する。
第1の実施形態のマルチプロセッサシステム1の動作は、プロセッサ10a〜10dのうちの1つにユーザタスク21が起動されてから開始される。図6は、ユーザタスク21の動作を説明するフローチャートである。ユーザタスク21は、起動されると、ユーザタスク21自身の初期化を行い(S1)、その後、ユーザタスク21を実行するプロセッサを除く他の全てのプロセッサにスレッド実行制御タスク111を起動する(S2)。なお、プロセッサ10a〜10dの初期状態はすべて電源オン状態であるものとしている。続いて、ユーザタスク21は、アプリケーションプログラム20に含まれる複数のスレッドのうちの1つを指定してスレッド登録処理114を実行する(S3)。
図7は、スレッド登録処理114の動作を説明するフローチャートである。スレッド登録処理114は、指定されたスレッドが0より大きい数(即ち1つ以上)の待ちイベントを有するか否かを判定する(S11)。指定されたスレッドが1以上の待ちイベントを有する場合(S11、Yes)、指定されたスレッドはイベント待ちスレッドであるので、スレッド登録処理114は、指定されたスレッドをイベント待ちスレッドプール113に登録する(S12)。即ち、スレッド登録処理114は、指定されたスレッドのID、待ちイベント数、および実行開始アドレスをイベント待ちスレッドプール113に登録する。指定されたスレッドが1未満(即ち0)の待ちイベントを有する場合(S11、No)、指定されたスレッドは実行可能スレッドであるので、スレッド登録処理114は、指定されたスレッドを実行可能スレッドキュー112に登録する(S13)。即ち、スレッド登録処理114は、指定されたスレッドの実行開始アドレスを実行可能スレッドキュー112に登録する。S12またはS13の後、指定されたスレッドに対するスレッド登録処理114の動作が終了となる。
ユーザタスク21は、S3の後、アプリケーションプログラム20に含まれる全てのスレッドに対するスレッド登録処理114が完了したか否かを判定する(S4)。スレッド登録処理114が未完了のスレッドが存在する場合(S4、No)、ユーザタスク21は、スレッド登録処理114が未完了のスレッドを指定してS3を実行する。全てのスレッドに対するスレッド登録処理114が完了した場合(S4、Yes)、ユーザタスク21は、登録した全てのスレッドの実行が完了するまで待機し(S5)、全てのスレッドの実行が完了した後、ユーザタスク21自身の終了処理を実行して(S6)、動作を終了する。
図8は、S2にて起動されたスレッド実行制御タスク111の動作を説明するフローチャートである。始めに、スレッド実行制御タスク111は、実行可能スレッドキュー112に1以上のスレッドが登録されているか否かを判定する(S21)。実行可能スレッドキュー112に1以上のスレッドが登録されている場合(S21、Yes)、スレッド実行制御タスク111は、実行可能スレッドキュー112から1つのスレッドを取り出す(S22)。そして、スレッド実行制御タスク111は、電源オン状態とするプロセッサ数設定値の算出を実行する(S23)。
図9は、S23にて実行される、プロセッサ数設定値を算出する処理のフローチャートである。スレッド実行制御タスク111は、実行可能スレッドキュー112に登録されているスレッドの数(A)を、イベント待ちスレッドプール113に登録されている待ちイベント数が予め設定された値(ここでは1)のスレッドの数(B)を、それぞれ取得する(S41、S42)。そして、スレッド実行制御タスク111は、あらかじめ設定されたイベント待ちスレッド数しきい値(C)を用いて、A+(B−C)を演算し、得られた値をプロセッサ数設定値とする(S43)。そして、スレッド実行制御タスク111は、プロセッサ数設定値がS2の処理によりスレッド実行制御タスク111が起動されたプロセッサの数より大きい場合には、算出したプロセッサ数設定値をスレッド実行制御タスク111が起動されたプロセッサの数で丸めて(S44)、S23を終了する。例えば、実行可能スレッドキュー112に登録されている実行可能スレッドの数が1で、イベント待ちスレッドプール113に登録されているスレッドのうちの待ちイベント数が1のスレッドの数が2で、イベント待ちスレッド数しきい値が1である場合は、プロセッサ数設定値は2となる。
S23に続いて、スレッド実行制御タスク111は、プロセッサ電源状態フラグ121を参照することによって、その時点で電源オン状態のプロセッサ数がプロセッサ数設定値未満であるか否かを判定する(S24)。電源オン状態のプロセッサ数がプロセッサ数設定値未満である場合(S24、Yes)、スレッド実行制御タスク111は、電源オン状態のプロセッサ数がプロセッサ数設定値に等しくなるまでプロセッサ10a〜10dのうちの電源オフ状態のプロセッサを電源オン状態に遷移させる(S25)。そして、S22により取得したスレッドを実行する(S26)。
図10は、S26(即ちスレッドの動作)のフローチャートである。スレッドは、当該スレッドのプログラムモジュールに基づく固有の演算処理を実行する(S51)。演算処理が完了すると、スレッドは、イベント送信処理115を実行し(S52)、動作を終了する。
図11は、イベント送信処理115の動作を説明するフローチャートである。イベント送信処理115は、イベント送信処理115を呼び出したスレッドを待ちイベントとするスレッドのIDをキーとしてイベント待ちスレッドプール113を検索して、見つかったエントリに記述されている待ちイベント数を1だけデクリメントし(S61)、デクリメント後の待ちイベント数が0であるか否かを判定する(S62)。なお、夫々のスレッドは、自スレッドを待ちイベントとするスレッドのIDを知っているものとしている。待ちイベント数が0である場合(S62、Yes)、スレッドは、待ちイベント数が0となったスレッドを実行可能スレッドキュー112に登録するとともに(S63)、待ちイベント数が0となったスレッドにかかるエントリをイベント待ちスレッドプール113から削除して(S64)、動作を終了する。待ちイベント数が0でない場合(S62、No)、S63およびS64がスキップされる。
なお、イベント送信処理115を呼び出したスレッドを待ちイベントとするスレッドが複数存在する場合には、イベント送信処理115を呼び出したスレッドを待ちイベントとするスレッド毎にイベント送信処理115が実行される。また、イベント送信処理115は、スレッドが自スレッドに固有の演算処理が完了した後に実行されるものとしたが、演算処理の途中にイベントを送信可能である場合には、演算処理の途中にイベントを送信するようにしてもよい。
スレッドの実行が完了すると、スレッド実行制御タスク111は、S21を実行する。電源オン状態のプロセッサ数がプロセッサ数設定値を越える場合(S24、No)、S25はスキップされる。
実行可能スレッドキュー112に登録されているスレッドがない場合(S21、No)、スレッド実行制御タスク111は、S23と同様の手順でプロセッサ数設定値を算出する(S27)。そして、スレッド実行制御タスク111は、その時点で電源オン状態のプロセッサ数がプロセッサ数設定値より大きいか否かを判定する(S28)。電源オン状態のプロセッサ数がプロセッサ数設定値より大きい場合(S28、Yes)、スレッド実行制御タスク111は、自タスク111を実行しているプロセッサを電源オフ状態に遷移させ(S29)、動作を停止する(S30)。スレッド実行制御タスク111は、自タスク111を実行するプロセッサが他のプロセッサにて実行されているスレッド実行制御タスク111によって電源オン状態に遷移せしめられると(S31)、S21を実行する。電源オン状態のプロセッサ数がプロセッサ数設定値未満である場合(S28、No)、スレッド実行制御タスク111は、S21を実行する。
図12−1は、第1の実施形態のマルチプロセッサシステムにおけるプロセッサの状態の遷移を説明する図である。図12−1は、図2に示した構造のスレッドが実行せしめられた場合のプロセッサ10a〜10dの状態の遷移を示している。例えば時刻が40を経過した直後では、スレッドT5およびスレッドT6が待ちイベント数が1のイベント待ちスレッドに該当する。その時点においては、プロセッサ10aは、スレッドT1の実行が終わり、実行可能スレッドの数がゼロとなっているにもかかわらず、電源オフ状態に移行していない。スレッドT2の実行が完了すると、スレッドT5およびスレッドT6が実行可能スレッドキュー112に登録される。そして、電源オン状態を保たれていたプロセッサ10aはスレッドT6の実行を開始し、スレッドT2の実行を完了したプロセッサ10bはスレッドT5の実行を開始する。
図12−2は、第1の実施形態と比較される技術(比較例)を適用したマルチプロセッサシステムにおけるプロセッサの状態の遷移を説明する図である。比較例によれば、実行可能スレッドキューにスレッドが登録されたとき、プロセッサが電源オン状態に遷移せしめられる。そして、プロセッサがスレッドを実行完了した後、実行可能スレッドキューに取得可能なスレッドがない場合に、当該プロセッサが電源オフ状態に遷移せしめられる。比較例によると、例えば、プロセッサ10aは、スレッドT1の実行を完了した後、状態遷移のための時間を費やして電源オフ状態に移行する。そして、スレッドT2の実行が完了すると、プロセッサ10aは、再度、状態遷移のための時間を費やして電源オン状態に移行する。このように、比較例によると、第1の実施形態に比べて電源オン状態と電源オフ状態との間を遷移する頻度が高いため、遷移のために消費される電力が増加する。また、プロセッサ10aが第1の実施形態のケースよりも20だけ後の時刻に実行完了している。これは、電源オン状態と電源オフ状態間の遷移があまりにも多いために、遷移にかかる時間がスレッドの実行にかかる時間に対して相対的に増加したことによる。
第1の実施形態によれば、待ちイベント数が1のイベント待ちスレッドの数(即ち近い将来に実行可能スレッドとなるスレッドの数)を考慮に入れてプロセッサを電源オン状態と電源オフ状態間を遷移せしめるので、遷移の頻度を低減することができる。これにより、性能低下を抑えつつ消費電力を低減することができる。
なお、以上の説明においては、スレッドを実行するプロセッサが、当該スレッドにかかるイベント送信処理115の一環としてイベント待ちスレッドプール113と実行可能スレッドキュー112とを更新するものとして説明した。しかしながら、スレッドを実行するとともに当該スレッドにかかるイベントの送信を実行するプロセッサと、イベント待ちスレッドプール113および実行可能スレッドキュー112を更新するプロセッサとは、異なっていてもよい。
また、スレッド実行制御タスク111を実行するプロセッサが、スレッドを実行するとともに、実行可能スレッドキュー112に登録されているスレッドの数とイベント待ちスレッドプール113に登録されているスレッドの数とに基づいて自他のプロセッサの電源制御を実行する、として説明した。しかしながら、スレッド実行制御タスク111の機能のうちのスレッドを取得して実行する機能のみを実行するプロセッサと、プロセッサ10a〜10dの電源制御を実行するプロセッサとは、異なっていてもよい。即ち、プロセッサ10a〜10dの電源制御を実行する特定のプロセッサを用意するようにしてもよい。
以上述べたように、本発明の第1の実施形態のマルチプロセッサシステム1は、実行可能スレッドキュー112に登録されているスレッドの数と、イベント待ちスレッドプール113に登録されている、待ちイベント数が所定のしきい値以上のスレッドの数と、に基づいて、スレッド実行制御タスク111を実行するプロセッサに対する電源供給装置12からの電源供給を個別に停止/再開する。そのため、近い将来に実行可能となるスレッドの数を考慮して電源オン状態と電源オフ状態間の遷移を実行するので、性能低下を抑制しつつ消費電力を低減することができる。
また、マルチプロセッサシステム1は、実行可能スレッドキュー112に登録されているスレッドの数Aに、待ちイベント数が所定のしきい値以上のスレッドの数Bを加算するとともに、予め決められたイベント待ちスレッド数しきい値Cを減算してプロセッサ数設定値を算出し、電源供給がオンとなっているプロセッサ10a〜10dの数がプロセッサ数設定値と等しくなるようにプロセッサ10a〜10dの電源供給を停止/再開するので、性能低下を抑制しつつ消費電力を低減することができる。
また、スレッド実行制御タスク111の下でスレッドを実行するプロセッサ10a〜10dは夫々、電源供給がオンとなっているプロセッサ10a〜10dの数がプロセッサ数設定値よりも小さいとき、電源供給が停止されている他のプロセッサ10a〜10dへの電源供給を再開し、電源が供給されているプロセッサ10a〜10dの数がプロセッサ数設定値よりも大きいとき、自プロセッサに対する電源供給を停止するので、電源制御用のプロセッサを特別に用意することなくプロセッサ10a〜10dに対する電源供給の停止/再開の制御を実現することができる。
また、プロセッサ10a〜10dのうちの1つのプロセッサは、ユーザタスク21の制御の下で、共有メモリ11が記憶する複数のスレッドの夫々を、待ちイベント数に基づいて、イベント待ちスレッドプール113または実行可能スレッドキュー112に登録するので、起動時にスレッドの分類を行うことができるようになる。
また、電源供給装置12は、電源が供給されているか電源供給が停止されているかをプロセッサ10a〜10dの夫々について記述したプロセッサ電源状態フラグ121を備え、プロセッサ10a〜10dは、プロセッサ電源状態フラグ121を参照することによって電源オン状態のプロセッサの数を特定する。これにより、プロセッサ10a〜10dの夫々は、簡単な構成で他のプロセッサ10a〜10dの電源の状態を確認することができる。
(第2の実施形態)
イベント待ちスレッド数しきい値を1で固定すると、待ちイベント数が1であるイベント待ちスレッドの数が急激に増大した場合に、スレッドを非実行中であるにも関わらず電源オン状態のまま待機せしめられるプロセッサの数が多くなり、消費電力が増大する事態が発生する。そこで、第2の実施形態のマルチプロセッサシステムは、イベント待ちスレッド数しきい値の変更が可能に構成されている。
イベント待ちスレッド数しきい値を1で固定すると、待ちイベント数が1であるイベント待ちスレッドの数が急激に増大した場合に、スレッドを非実行中であるにも関わらず電源オン状態のまま待機せしめられるプロセッサの数が多くなり、消費電力が増大する事態が発生する。そこで、第2の実施形態のマルチプロセッサシステムは、イベント待ちスレッド数しきい値の変更が可能に構成されている。
図13は、第2の実施形態のマルチプロセッサシステムの構成図である。第2の実施形態の説明においては、第1の実施形態と同一の構成要素には同一の名称および符号を付して、重複する説明を省略する。
図13のマルチプロセッサシステム2は、4個のプロセッサ10a〜10dと、共有メモリ11aと、電源供給装置12と、バス13と、電力供給線14とを備えている。共有メモリ11aは、第1の実施形態の構成に加え、イベント待ちスレッド数しきい値変更処理212を予め記憶している。また、共有メモリ11aには、イベント待ちスレッド数しきい値設定値211が格納される。イベント待ちスレッド数しきい値設定値211は、イベント待ちスレッド数変更処理212によって変更される。
図14は、第2の実施形態のユーザタスク22の動作を説明するフローチャートである。ユーザタスク22は、起動されると、ユーザタスク22自身の初期化を行い(S71)、イベント待ちスレッド数しきい値設定値211を初期設定するためにイベント待ちスレッド数変更処理212を実行する(S72)。ここでは、イベント待ちスレッド数変更処理212は、ユーザタスク22により指定される値をイベント待ちスレッド数しきい値設定値211に設定する。なお、イベント待ちスレッド数変更処理212の動作は後述する。
その後、ユーザタスク22は、ユーザタスク22を実行するプロセッサを除く他の全てのプロセッサにスレッド実行制御タスク111を起動する(S73)。続いて、ユーザタスク22は、アプリケーションプログラム20に含まれ、イベント待ちスレッド数しきい値設定値211で実行せしめるスレッドのうちの1つを指定して、スレッド登録処理114を実行する(S74)。そして、ユーザタスク22は、イベント待ちスレッド数しきい値設定値211で実行せしめる全てのスレッドに対するスレッド登録処理114が完了したか否かを判定する(S75)。イベント待ちスレッド数しきい値設定値211で実行せしめる全てのスレッドに対するスレッド登録処理114が未完了である場合(S75、No)、ユーザタスク22は、スレッド登録処理114が未完了のスレッドを指定してS74を実行する。イベント待ちスレッド数しきい値設定値211で実行せしめる全てのスレッドに対するスレッド登録処理114が完了した場合(S75、Yes)、ユーザタスク22は、登録した全てのスレッドの実行が完了するまで待機する(S76)。
登録した全てのスレッドの実行が完了した後、ユーザタスク22は、再度イベント待ちスレッド数変更処理212を実行してイベント待ちスレッド数しきい値設定値211を変更し(S77)、アプリケーションプログラム20に含まれ、したイベント待ちスレッド数しきい値設定値211で実行せしめるスレッドのうちの1つを指定して、スレッド登録処理114を実行する(S78)。そして、ユーザタスク22は、イベント待ちスレッド数しきい値設定値211で実行せしめる全てのスレッドに対するスレッド登録処理114が完了したか否かを判定する(S79)。イベント待ちスレッド数しきい値設定値211で実行せしめる全てのスレッドに対するスレッド登録処理114が未完了である場合(S79、No)、ユーザタスク22は、スレッド登録処理114が未完了のスレッドを指定してS78の動作を実行する。イベント待ちスレッド数しきい値設定値211で実行せしめる全てのスレッドに対するスレッド登録処理114が完了した場合(S79、Yes)、ユーザタスク22は、登録した全てのスレッドの実行が完了するまで待機する(S80)。登録した全てのスレッドの実行が完了した後、ユーザタスク22は、ユーザタスク22自身の終了処理を実行して(S81)、動作を終了する。
図15は、イベント待ちスレッド数変更処理212の動作を説明するフローチャートである。イベント待ちスレッド数変更処理212は、ユーザタスク22に予めプログラムされている値をイベント待ちスレッド数しきい値設定値211に設定し(S91)、プロセッサ数設定値を算出する(S92)。そして、イベント待ちスレッド数変更処理212は、その時点で電源オン状態のプロセッサ数がプロセッサ数設定値未満であるか否かを判定する(S93)。電源オン状態のプロセッサ数がプロセッサ数設定値未満である場合(S93、Yes)、イベント待ちスレッド数変更処理212は、電源オン状態のプロセッサ数がプロセッサ数設定値に等しくなるまで電源オフ状態のプロセッサを電源オン状態に遷移させて(S94)、処理を終了する。電源オン状態のプロセッサ数がプロセッサ数設定値以上の場合(S93、No)、S94はスキップされる。
図16は、第2の実施形態のマルチプロセッサシステム2において実行されるプロセッサ数設定値の算出処理のフローチャートである。始めに、イベント待ちスレッド数変更処理212は、実行可能スレッドキュー112に登録されているスレッドの数(A)を、イベント待ちスレッドプール113に登録されている待ちイベント数が1のスレッドの数(B)を、それぞれ取得する(S101、S102)。そして、イベント待ちスレッド数変更処理212は、イベント待ちスレッド数しきい値設定値211(C2)を読み出して(S103)、A+(B−C2)を演算し、得られた値をプロセッサ数設定値とする(S104)。そして、イベント待ちスレッド数変更処理212は、プロセッサ数設定値が、S73によりスレッド実行制御タスク111が起動されるプロセッサの数より大きい場合には、算出したプロセッサ数設定値をスレッド実行制御タスク111を実行するプロセッサの数で丸めて(S105)、プロセッサ数設定値を算出する処理を終了する。
なお、スレッド実行制御タスク111がプロセッサ数設定値を算出する際にも、スレッド実行制御タスク111は図16と同様の手順でプロセッサ数設定値を算出する。
なお、以上の説明においては、ユーザタスク22がイベント待ちスレッド数しきい値設定値211を予めプログラムされたタイミングで設定変更するものとして説明したが、プロセッサ10a〜10dのうちの例えば1つのプロセッサに、アプリケーションプログラム20が含む複数のスレッドの構造に基づいてイベント待ちスレッド数しきい値設定値211を動的に変更せしめるタスクを実行させるようにしてもよい。例えばこのタスクは、待ちイベント数が1であるイベント待ちスレッドの数の増減に応じてイベント待ちスレッド数しきい値設定値211を増減せしめることができる。
このように、第2の実施形態のマルチプロセッサシステム2は、予めプログラムされたタイミングで、またはアプリケーションプログラム20が含む複数のスレッドの構造に基づくタイミングで、動的にイベント待ちスレッド数しきい値設定値211を変更するので、例えば待ちイベント数が1以上のスレッドの数が多くなったときにイベント待ちスレッド数しきい値設定値211をより大きい値に変更することで、電源オン状態で待機するプロセッサの数を小さくすることができ、より効率的な電力制御が可能となる。
(第3の実施形態)
待ちイベント数が1のスレッドの数を用いてプロセッサ数設定値を算出するようにしたとしても、アプリケーションプログラムが、実行時間が短い多数のスレッドを含んでいると、待ちイベント数が1のイベント待ちスレッドの数が頻繁に変化する。その結果、電源供給の停止/再開の頻度をそれほど大きくは低減できないという事態が発生する。そこで、第3の実施形態のマルチプロセッサシステムは、1以上の値でかつ変更可能な値をしきい値とし、待ちイベント数がこのしきい値以下のスレッドの数を用いてプロセッサ数設定値を算出する。
待ちイベント数が1のスレッドの数を用いてプロセッサ数設定値を算出するようにしたとしても、アプリケーションプログラムが、実行時間が短い多数のスレッドを含んでいると、待ちイベント数が1のイベント待ちスレッドの数が頻繁に変化する。その結果、電源供給の停止/再開の頻度をそれほど大きくは低減できないという事態が発生する。そこで、第3の実施形態のマルチプロセッサシステムは、1以上の値でかつ変更可能な値をしきい値とし、待ちイベント数がこのしきい値以下のスレッドの数を用いてプロセッサ数設定値を算出する。
図17は、第3の実施形態のマルチプロセッサシステムの構成を示す図である。第3の実施形態の説明においては、第2の実施形態と同一の構成要素には同一の名称および符号を付して、重複する説明を省略する。
図17のマルチプロセッサシステム3は、4個のプロセッサ10a〜10dと、共有メモリ11bと、電源供給装置12と、バス13と、電力供給線14とを備えている。共有メモリ11bは、第2の実施形態の構成に加え、待ちイベント数しきい値変更処理312を予め記憶している。また、共有メモリ11bには、さらに待ちイベント数しきい値設定値311が格納される。待ちイベント数しきい値設定値311は、待ちイベント数しきい値変更処理312により変更される。
ユーザタスク23は、図14にて説明した手順を実行するほか、予めユーザタスク23にプログラムされたタイミングで待ちイベント数しきい値変更処理312を実行する。ここでは、ユーザタスク23は、待ちイベント数しきい値設定値311に設定する値を指定して待ちイベント数しきい値変更処理312を実行するものとする。
図18は、待ちイベント数しきい値変更処理312の動作を説明するフローチャートである。始めに、待ちイベント数しきい値変更処理312は、ユーザタスク23から指定された値を待ちイベント数しきい値設定値311に設定し(S111)、プロセッサ数設定値の算出を行う(S112)。そして、待ちイベント数しきい値変更処理312は、その時点で電源オン状態のプロセッサ数がプロセッサ数設定値未満であるか否かを判定する(S113)。電源オン状態のプロセッサ数がプロセッサ数設定値未満である場合(S113、Yes)、待ちイベント数しきい値変更処理312は、電源オン状態のプロセッサ数がプロセッサ数設定値に等しくなるまで電源オフ状態のプロセッサを電源オン状態に遷移させて(S114)、処理を終了する。電源オン状態のプロセッサ数がプロセッサ数設定値以上の場合(S113、No)、S114はスキップされる。
図19は、第3の実施形態のマルチプロセッサシステム3において実行されるプロセッサ数設定値の算出処理のフローチャートである。始めに、待ちイベント数しきい値変更処理312は、実行可能スレッドキュー112に登録されているスレッドの数(A)を取得する(S121)。そして、待ちイベント数しきい値変更処理312は、待ちイベント数しきい値設定値311(X)を読み出して(S122)、イベント待ちスレッドプール113に登録されている待ちイベント数がX以下のスレッドの数(B2)を取得する(S123)。そして、待ちイベント数しきい値変更処理312は、イベント待ちスレッド数しきい値設定値211(C2)を読み出して(S124)、A+(B2−C2)を演算し、得られた値をプロセッサ数設定値とする(S125)。そして、待ちイベント数しきい値変更処理312は、プロセッサ数設定値が、S73によりスレッド実行制御タスク111が起動されるプロセッサの数より大きい場合には、算出したプロセッサ数設定値をスレッド実行制御タスク111を実行するプロセッサの数で丸めて(S126)、プロセッサ数設定値を算出する処理を終了する。
なお、スレッド実行制御タスク111がプロセッサ数設定値を算出する際にも、スレッド実行制御タスク111は図19に示した手順と同様の手順でプロセッサ数設定値を算出する。また、イベント待ちスレッド数変更処理212がプロセッサ数設定値を算出する際にも、イベント待ちスレッド数変更処理212は図19と同様の手順でプロセッサ数設定値を算出する。
なお、以上の説明においては、ユーザタスク23が待ちイベント数しきい値設定値311を予めプログラムされたタイミングで設定変更するものとして説明したが、プロセッサ10a〜10dのうちの例えば1つのプロセッサに、アプリケーションプログラム20が含む複数のスレッドの構造に基づいて待ちイベント数しきい値設定値311を動的に変更せしめるタスクを実行させるようにしてもよい。例えばアプリケーションプログラム20が動画再生のプログラムである場合には、同一のスレッドの構造が周期的に繰り返される。このタスクは、周期的に繰り返されるスレッドの構造を解析して、実行時間が短い複数のスレッドが同時に実行可能スレッドとなるタイミングを予測することができる。このタスクは、予測したタイミングで、待ちイベント数しきい値設定値311を増加させることができる。
このように、第3の実施形態のマルチプロセッサシステム3は、待ちイベント数しきい値設定値311を、予めプログラムされたタイミングで、またはアプリケーションプログラム20が含む複数のスレッドの構造に基づくタイミングで、動的に変更するので、より効率的な電力制御が可能となる。
(第4の実施形態)
電源オフ状態から電源オン状態に遷移せしめるプロセッサの選択を所定のルールに基づいて実行されるようにしてもよい。第4の実施形態のマルチプロセッサシステムは、電源オフ状態に遷移したタイミングが遅いプロセッサほど優先的に電源オン状態に遷移させる。
電源オフ状態から電源オン状態に遷移せしめるプロセッサの選択を所定のルールに基づいて実行されるようにしてもよい。第4の実施形態のマルチプロセッサシステムは、電源オフ状態に遷移したタイミングが遅いプロセッサほど優先的に電源オン状態に遷移させる。
図20は、第4の実施形態のマルチプロセッサシステムの構成を示す図である。第4の実施形態の説明においては、第1の実施形態と同一の構成要素には同一の名称および符号を付して、重複する説明を省略する。
第4の実施形態のマルチプロセッサシステム4は、4個のプロセッサ10a〜10dと、共有メモリ11cと、電源供給装置12と、バス13と、電力供給線14とを備えている。共有メモリ11cは、スレッド実行制御タスク411と、スレッド登録処理114と、イベント送信処理115と、電源オフプロセッサ登録処理413と、電源オフプロセッサ選択処理414とを予め記憶している。また、共有メモリ11cは、実行可能スレッドキュー112、イベント待ちスレッドプール113および電源オフプロセッサスタック412を備えている。電源オフプロセッサスタック412は、電源オフ状態のプロセッサを識別する情報がスタックされるデータ構造である。
図21は、第4の実施形態のスレッド実行制御タスク411の動作を説明するフローチャートである。始めに、スレッド実行制御タスク411は、実行可能スレッドキュー112に1以上のスレッドが登録されているか否かを判定する(S131)。実行可能スレッドキュー112に1以上のスレッドが登録されている場合(S131、Yes)、スレッド実行制御タスク411は、実行可能スレッドキュー112から1つのスレッドを取り出す(S132)。そして、スレッド実行制御タスク411は、プロセッサ数設定値の算出を実行する(S133)。そして、スレッド実行制御タスク411は、その時点で電源オン状態のプロセッサ数がプロセッサ数設定値未満であるか否かを判定する(S134)。電源オン状態のプロセッサ数がプロセッサ数設定値未満である場合(S134、Yes)、スレッド実行制御タスク411は、電源オフプロセッサ選択処理414を実行する(S135)。
図22は、電源オフプロセッサ選択処理414の動作を説明するフローチャートである。電源オフプロセッサ選択処理414は、電源オフプロセッサスタック412の末尾に登録されているプロセッサの識別情報を取り出して(S151)、動作を終了する。
スレッド実行制御タスク411は、S135により取り出された識別情報が示す電源オフ状態のプロセッサを電源オン状態に遷移させて(S136)、その時点で電源オン状態のプロセッサ数がプロセッサ数設定値に等しいか否かを判定する(S137)。電源オン状態のプロセッサ数がプロセッサ数設定値に等しくない場合(S137、No)、スレッド実行制御タスク411は、S135を実行する。電源オン状態のプロセッサ数がプロセッサ数設定値に等しい場合(S137、Yes)、スレッド実行制御タスク411は、S132により取得したスレッドを実行する(S138)。そして、スレッド実行制御タスク411は、スレッドの実行を完了すると、S131を実行する。
一方で、実行可能スレッドキュー112に登録されているスレッドがない場合(S131、No)、スレッド実行制御タスク411は、プロセッサ数設定値を算出する(S139)。そして、スレッド実行制御タスク411は、その時点で電源オン状態のプロセッサ数がプロセッサ数設定値より大きいか否かを判定する(S140)。電源オン状態のプロセッサ数がプロセッサ数設定値より大きい場合(S140、Yes)、スレッド実行制御タスク411は、電源オフプロセッサ登録処理413を実行する(S141)。
図23は、電源オフプロセッサ登録処理413の動作を説明するフローチャートである。電源オフプロセッサ登録処理413は、自処理413を実行するプロセッサの識別情報を電源オフプロセッサスタック412の末尾に登録して(S161)、動作を終了する。
電源オフプロセッサ登録処理413を実行した後、スレッド実行制御タスク411は、自タスク411を実行しているプロセッサを電源オフ状態に遷移させ(S142)、動作を停止する(S143)。スレッド実行制御タスク411は、自タスク411を実行するプロセッサが他のプロセッサにて実行されているスレッド実行制御タスク411によって電源オン状態に遷移せしめられると(S143)、S131を実行する。電源オン状態のプロセッサ数がプロセッサ数設定値未満である場合(S140、No)、スレッド実行制御タスク411は、S131を実行する。
このように、第4の実施形態のマルチプロセッサシステム4は、電源オフ状態に移行したタイミングが遅いプロセッサを優先して電源オン状態に移行させるので、プロセッサの利用を偏らせることが可能となる。
(第5の実施形態)
第5の実施形態のマルチプロセッサシステムは、電源オフ状態に遷移したタイミングが早いプロセッサほど優先的に電源オン状態に遷移させる。
第5の実施形態のマルチプロセッサシステムは、電源オフ状態に遷移したタイミングが早いプロセッサほど優先的に電源オン状態に遷移させる。
図24は、第5の実施形態のマルチプロセッサシステムの構成図である。第5の実施形態の説明においては、第1の実施形態と同一の構成要素には同一の名称および符号を付して、重複する説明を省略する。
第5の実施形態のマルチプロセッサシステム4は、4個のプロセッサ10a〜10dと、共有メモリ11dと、電源供給装置12と、バス13と、電力供給線14とを備えている。共有メモリ11dは、スレッド実行制御タスク511と、スレッド登録処理114と、イベント送信処理115と、電源オフプロセッサ登録処理513と、電源オフプロセッサ選択処理514とを予め記憶している。また、共有メモリ11dは、実行可能スレッドキュー112、イベント待ちスレッドプール113および電源オフプロセッサキュー512を備えている。電源オフプロセッサキュー512は、電源オフ状態のプロセッサを識別する情報が登録されるFIFO構造のデータ構造である。
図25は、第5の実施形態のスレッド実行制御タスク511の動作を説明するフローチャートである。始めに、スレッド実行制御タスク511は、実行可能スレッドキュー112に1以上のスレッドが登録されているか否かを判定する(S171)。実行可能スレッドキュー112に1以上のスレッドが登録されている場合(S171、Yes)、スレッド実行制御タスク511は、実行可能スレッドキュー112から1つのスレッドを取り出す(S172)。そして、スレッド実行制御タスク511は、プロセッサ数設定値の算出を実行する(S173)。そして、スレッド実行制御タスク511は、その時点で電源オン状態のプロセッサ数がプロセッサ数設定値未満であるか否かを判定する(S174)。電源オン状態のプロセッサ数がプロセッサ数設定値未満である場合(S174、Yes)、スレッド実行制御タスク511は、電源オフプロセッサ選択処理514を実行する(S175)。
図26は、電源オフプロセッサ選択処理514の動作を説明するフローチャートである。電源オフプロセッサ選択処理514は、電源オフプロセッサキュー512の先頭に登録されているプロセッサの識別情報を取り出して(S191)、動作を終了する。
スレッド実行制御タスク511は、S175により取り出された識別情報が示す電源オフ状態のプロセッサを電源オン状態に遷移させて(S176)、その時点で電源オン状態のプロセッサ数がプロセッサ数設定値に等しいか否かを判定する(S177)。電源オン状態のプロセッサ数がプロセッサ数設定値に等しくない場合(S177、No)、スレッド実行制御タスク511は、S175を実行する。電源オン状態のプロセッサ数がプロセッサ数設定値に等しい場合(S177、Yes)、スレッド実行制御タスク511は、S172により取得したスレッドを実行する(S178)。そして、スレッド実行制御タスク511は、スレッドの実行を完了すると、S171を実行する。
一方、実行可能スレッドキュー112に登録されているスレッドがない場合(S171、No)、スレッド実行制御タスク511は、プロセッサ数設定値を算出する(S179)。そして、スレッド実行制御タスク511は、その時点で電源オン状態のプロセッサ数がプロセッサ数設定値と等しいか否かを判定する(S180)。電源オン状態のプロセッサ数がプロセッサ数設定値と等しい場合(S180、Yes)、スレッド実行制御タスク511は、電源オフプロセッサ選択処理514を再度実行し(S181)、電源オフ状態のプロセッサの識別情報を取得できたか否かを判定する(S182)。電源オフ状態のプロセッサがない等の理由で電源オフ状態のプロセッサの識別情報を取得できなかった場合(S182、No)、スレッド実行制御タスク511は、S171を実行する。
電源オフ状態のプロセッサの識別情報を取得できた場合(S182、Yes)、スレッド実行制御タスク511は、取得した識別情報が示すプロセッサを電源オフ状態から電源オン状態に遷移させ(S183)、電源オフプロセッサ登録処理513を実行する(S184)。
図27は、電源オフプロセッサ登録処理513の動作を説明するフローチャートである。電源オフプロセッサ登録処理513は、自処理513を実行するプロセッサの識別情報を電源オフプロセッサキュー512の末尾に登録して(S201)、動作を終了する。
電源オフプロセッサ登録処理513を実行した後、スレッド実行制御タスク511は、自タスク511を実行しているプロセッサを電源オフ状態に遷移させ(S185)、動作を停止する(S186)。スレッド実行制御タスク511は、自タスク511を実行するプロセッサが他のプロセッサにて実行されているスレッド実行制御タスク511によって電源オン状態に遷移せしめられると(S187)、S171を実行する。
電源オン状態のプロセッサ数がプロセッサ数設定値と等しくない場合(S180、No)、スレッド実行制御タスク511は、その時点で電源オン状態のプロセッサ数がプロセッサ数設定値より大きいか否かを判定する(S188)。スレッド実行制御タスク511は、電源オン状態のプロセッサ数がプロセッサ数設定値より大きい場合(S188、Yes)、S184を実行し、電源オン状態のプロセッサ数がプロセッサ数設定値未満である場合(S188、No)、S171を実行する。
このように、第5の実施形態のマルチプロセッサシステム5は、電源オフ状態に移行したタイミングが早いプロセッサを優先して電源オン状態に移行させるので、プロセッサ10a〜10dを満遍なくプロセッサが利用され、プロセッサ10a〜10dの温度を略平均化させることができるようになる。
なお、第1〜第5の実施形態の説明において、マルチプロセッサシステムは、実行可能スレッドキュー112に登録されているスレッドの数に対し、イベント待ちスレッドプール113に登録されている待ちイベント数が予め設定された値のスレッドの数を加算し、イベント待ちスレッド数しきい値を減算することによって、プロセッサ数設定値を算出する(第1の算出方法)、として説明したが、プロセッサ数設定値の算出方法は、実行可能スレッドの数と、待ちイベント数が所定数以下のスレッドの数と、に基づいて算出するものであれば上記に限定されない。
例えば、待ちイベント数が所定数以下のスレッドの数に所定の重み付け係数を乗算するとともに、実行可能スレッドの数を加算することによって、プロセッサ数設定値を算出するようにしてもよい(第2の算出方法)。第2の算出方法によれば、重み付け係数を1より小さい値に設定されることによって、待ちイベント数が所定数以下のスレッドの数が急激に増加/減少してもプロセッサ数設定値の変動を小さく抑えることができる。
また、プロセッサ数設定値の算出方法を、ユーザタスクにプログラムされたタイミングで、またはアプリケーションプログラム20に含まれる複数のスレッドの構造に基づくタイミングで、動的に変更されるようにしてもよい。
このように、第1〜第5の実施形態のマルチプロセッサシステムは、実行可能スレッドキュー112に登録されているスレッドの数と、イベント待ちスレッドプール113に登録されている、待ちイベント数が所定のしきい値以上のスレッドの数と、に基づいて、プロセッサ10a〜10dのうちのスレッド実行制御タスク111を実行するプロセッサに対する電源供給装置12からの電源供給を個別に停止/再開するので、性能低下を抑制しつつ消費電力を低減することができる。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
1〜5 マルチプロセッサシステム、10a〜10d プロセッサ、11 共有メモリ、12 電源供給装置、20 アプリケーションプログラム、111 スレッド実行制御タスク、112 実行可能スレッドキュー、113 イベント待ちスレッドプール、114 スレッド登録処理、115 イベント送信処理、121 プロセッサ電源状態フラグ、211 イベント待ちスレッド数しきい値設定値、311 待ちイベント数しきい値設定値、412 電源オフプロセッサスタック、512 電源オフプロセッサキュー。
Claims (5)
- 複数のプロセッサと、前記複数のプロセッサに個別に電源を供給する電源供給装置と、前記複数のプロセッサ間で共有され、夫々、前記複数のプロセッサのうちの1つに実行される複数のスレッドを記憶する共有メモリと、を備えるマルチプロセッサシステムであって、
前記共有メモリは、
前記複数のスレッドのうちの待ちイベントを有するスレッドが待ちイベント数と対応付けて登録されるスレッドプールと、
前記複数のスレッドのうちの待ちイベントを有さないスレッドが登録されるスレッドキューと、
を備え、
前記複数のプロセッサは、
前記電源供給装置から電源が供給されたときに、前記スレッドキューから第1のスレッドを取得して、前記第1のスレッドを実行する1以上の第1のプロセッサと、
前記第1のスレッドの実行状況に基づいて、前記第1のスレッドを待ちイベントとする前記スレッドプールに登録されている第2のスレッドの、待ちイベント数を更新し、前記第2のスレッドの待ちイベント数がゼロ値となったとき、当該第2のスレッドを前記スレッドキューに登録する第2のプロセッサと、
前記スレッドキューに登録されているスレッドの数と、前記スレッドプールに登録されている、待ちイベント数が第1のしきい値以下のスレッドの数と、に基づいて、前記第1のプロセッサに対する前記電源供給装置からの電源供給を個別に停止/再開する第3のプロセッサと、
を備えることを特徴とするマルチプロセッサシステム。 - 前記第3のプロセッサは、前記スレッドキューに登録されているスレッドの数に、前記待ちイベント数が第1のしきい値以下のスレッドの数を加算するとともに、第2のしきい値を減算して、プロセッサ数設定値を算出し、電源が供給された第1のプロセッサの数が前記プロセッサ数設定値と等しくなるように前記第1のプロセッサの電源供給を停止/再開する、
ことを特徴とする請求項1に記載のマルチプロセッサシステム。 - 前記第2のしきい値を、予めプログラムされたタイミングで、または前記共有メモリが記憶する複数のスレッドの構造に基づくタイミングで、動的に変更する第4のプロセッサをさらに備える、ことを特徴とする請求項2に記載のマルチプロセッサシステム。
- 前記第3のプロセッサは、前記待ちイベント数が第1のしきい値以下のスレッドの数に所定の重み付け係数を乗算するとともに、前記スレッドキューに登録されているスレッドの数を加算して、プロセッサ数設定値を算出し、電源が供給された第1のプロセッサの数が前記プロセッサ数設定値と等しくなるように前記第1のプロセッサの電源供給を停止/再開する、
ことを特徴とする請求項1に記載のマルチプロセッサシステム。 - 複数のプロセッサと、前記複数のプロセッサに個別に電源を供給する電源供給装置と、前記複数のプロセッサ間で共有され、夫々、前記複数のプロセッサのうちの1つに実行される複数のスレッドを記憶する共有メモリと、を備えるマルチプロセッサシステムの電力制御方法であって、
前記共有メモリが記憶する複数のスレッドのうちの待ちイベント数を有するスレッドを待ちイベント数と対応付けてスレッドプールに登録し、
前記共有メモリが記憶する複数のスレッドのうちの待ちイベント数を有さないスレッドをスレッドキューに登録し、
前記複数のプロセッサのうちの前記電源供給装置からの電源が供給されたプロセッサが前記スレッドキューから第1のスレッドを取得して、取得した第1のスレッドを実行し、
前記第1のスレッドの実行状況に基づいて、前記第1のスレッドを待ちイベントとする前記スレッドプールに登録されている第2のスレッドの、待ちイベント数を更新し、
前記第2のスレッドの待ちイベント数がゼロ値となったとき、当該第2のスレッドを前記スレッドキューに登録し、
前記スレッドキューに登録されているスレッドの数と、前記スレッドプールに登録されている、待ちイベント数が第1のしきい値以下のスレッドの数と、に基づいて、プロセッサ数設定値を算出し、
電源が供給されたプロセッサの数が前記プロセッサ数設定値と等しくなるように前記複数のプロセッサに対する前記電源供給装置からの電源供給を個別に停止/再開する、
を備えることを特徴とする電力制御方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2012066726A JP5554358B2 (ja) | 2012-03-23 | 2012-03-23 | マルチプロセッサシステムおよび電力制御方法 |
US13/727,866 US9047088B2 (en) | 2012-03-23 | 2012-12-27 | Multiprocessor system and method of controlling power |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2012066726A JP5554358B2 (ja) | 2012-03-23 | 2012-03-23 | マルチプロセッサシステムおよび電力制御方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2013196672A true JP2013196672A (ja) | 2013-09-30 |
JP5554358B2 JP5554358B2 (ja) | 2014-07-23 |
Family
ID=49213481
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2012066726A Expired - Fee Related JP5554358B2 (ja) | 2012-03-23 | 2012-03-23 | マルチプロセッサシステムおよび電力制御方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US9047088B2 (ja) |
JP (1) | JP5554358B2 (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2016105273A (ja) * | 2014-11-18 | 2016-06-09 | エイチジーエスティーネザーランドビーブイ | 装置における電源管理のためのリソース割当及び解除 |
JP2018173956A (ja) * | 2017-03-31 | 2018-11-08 | 三星電子株式会社Samsung Electronics Co.,Ltd. | 半導体装置 |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10479380B2 (en) * | 2016-03-07 | 2019-11-19 | Westinghouse Air Brake Technologies Corporation | Hazardous event alert systems and methods |
US11148692B2 (en) * | 2012-09-20 | 2021-10-19 | Westinghouse Air Brake Technologies Corporation | Alerting system and method |
WO2016105219A1 (en) * | 2014-12-22 | 2016-06-30 | Intel Corporation | Reverse polish notation processing elements with power saving |
US20170031724A1 (en) * | 2015-07-31 | 2017-02-02 | Futurewei Technologies, Inc. | Apparatus, method, and computer program for utilizing secondary threads to assist primary threads in performing application tasks |
US10399551B2 (en) * | 2016-03-07 | 2019-09-03 | Westinghouse Air Brake Technologies Corporation | System, method, and apparatus for improving safety of ECP-equipped trains with flammable cargo |
WO2018174758A1 (en) * | 2017-03-23 | 2018-09-27 | Telefonaktiebolaget Lm Ericsson (Publ) | A memory allocation manager and method performed thereby for managing memory allocation |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010271930A (ja) * | 2009-05-21 | 2010-12-02 | Toshiba Corp | マルチコアプロセッサシステム |
WO2011084260A1 (en) * | 2009-12-16 | 2011-07-14 | Qualcomm Incorporated | System and method for controlling central processing unit power based on inferred workload parallelism |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008129846A (ja) | 2006-11-21 | 2008-06-05 | Nippon Telegr & Teleph Corp <Ntt> | データ処理装置、データ処理方法およびプログラム |
US8010822B2 (en) | 2008-03-28 | 2011-08-30 | Microsoft Corporation | Power-aware thread scheduling and dynamic use of processors |
-
2012
- 2012-03-23 JP JP2012066726A patent/JP5554358B2/ja not_active Expired - Fee Related
- 2012-12-27 US US13/727,866 patent/US9047088B2/en not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010271930A (ja) * | 2009-05-21 | 2010-12-02 | Toshiba Corp | マルチコアプロセッサシステム |
WO2011084260A1 (en) * | 2009-12-16 | 2011-07-14 | Qualcomm Incorporated | System and method for controlling central processing unit power based on inferred workload parallelism |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2016105273A (ja) * | 2014-11-18 | 2016-06-09 | エイチジーエスティーネザーランドビーブイ | 装置における電源管理のためのリソース割当及び解除 |
JP2018173956A (ja) * | 2017-03-31 | 2018-11-08 | 三星電子株式会社Samsung Electronics Co.,Ltd. | 半導体装置 |
JP7154788B2 (ja) | 2017-03-31 | 2022-10-18 | 三星電子株式会社 | 半導体装置 |
US11645072B2 (en) | 2017-03-31 | 2023-05-09 | Samsung Electronics Co., Ltd. | Semiconductor device |
Also Published As
Publication number | Publication date |
---|---|
US20130254576A1 (en) | 2013-09-26 |
JP5554358B2 (ja) | 2014-07-23 |
US9047088B2 (en) | 2015-06-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5554358B2 (ja) | マルチプロセッサシステムおよび電力制御方法 | |
JP6219121B2 (ja) | 電子装置及びその制御方法 | |
JP4370336B2 (ja) | 低消費電力ジョブ管理方法及び計算機システム | |
US20030009701A1 (en) | Computer system and computer-readable recording medium | |
JP5093259B2 (ja) | Biosとbmcとの間の通信パス強化方法、その装置及びそのプログラム | |
JP2011065645A (ja) | マルチコアプロセッサシステム | |
KR102208349B1 (ko) | 전력-성능 관리를 위한 애플리케이션 프로파일링 | |
US20120166777A1 (en) | Method and apparatus for switching threads | |
JP5445669B2 (ja) | マルチコアシステムおよび起動方法 | |
US20140101670A1 (en) | Computing system including multi-core processor and load balancing method thereof | |
JP5861767B2 (ja) | 稼働管理装置、稼働管理方法、稼働管理プログラム及び記録媒体 | |
US9507641B1 (en) | System and method for dynamic granularity control of parallelized work in a portable computing device (PCD) | |
EP2282265A1 (en) | A hardware task scheduler | |
WO2016085680A1 (en) | System and method for adaptive thread control in a portable computing device (pcd) | |
US20160321057A1 (en) | Electronic apparatus | |
US20150262696A1 (en) | Memory system and control method of memory system | |
JP2007188212A (ja) | マルチプロセッサ及びマルチプロセッサの制御方法をコンピュータに実行させるためのプログラム | |
JP6442947B2 (ja) | 情報処理装置、情報処理方法及びそのプログラム | |
WO2021023312A1 (zh) | 一种片上系统的存储器快速启动方法 | |
JP2012043254A (ja) | マイクロプロセッサ、電子制御ユニット、電源制御方法 | |
JP2010131801A (ja) | 印刷システム、プリンタ、および、常駐プログラム | |
US9098224B2 (en) | Information processing apparatus, method, and storage medium for setting a waiting time | |
US20140036295A1 (en) | Information processing apparatus and method therefor | |
JP2010097427A (ja) | 処理装置、処理方法及びコンピュータプログラム | |
TW201727435A (zh) | 具有多核心處理器的電子裝置以及多核心處理器的管理方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20140205 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20140415 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20140430 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20140528 |
|
LAPS | Cancellation because of no payment of annual fees |