(57)【要約】【課題】  マルチコアプロセッサにおけるプロセッサコアの効率的な停止および開始制御を行う。【解決手段】  CPUコア状態検出部110は、複数のプロセッサコアそれぞれの停止状態および開始状態を検出する。CPU使用量監視部108は、開始状態にある注目プロセッサコアのプロセッサ使用量を取得する。CPUコア制御部109は、注目プロセッサコアに割り当てられたプロセスの数を取得し、停止状態および開始状態、並びに、プロセッサ使用量およびプロセスの数に基づき、プロセッサコアの停止制御および開始制御を行う。【選択図】  図1
2013149221.tif 000002
【特許請求の範囲】
【請求項１】
複数のプロセッサコアを有するプロセッサの制御装置であって、
前記複数のプロセッサコアそれぞれの停止状態および開始状態を検出する手段と、
前記開始状態にある注目プロセッサコアのプロセッサ使用量を取得する手段と、
前記注目プロセッサコアに割り当てられたプロセスの数を取得する手段と、
前記検出された停止状態および開始状態、並びに、前記取得されたプロセッサ使用量およびプロセスの数に基づき、プロセッサコアの停止制御および開始制御を行う制御手段とを有することを特徴とする制御装置。
【請求項２】
前記制御手段は、前記開始状態にあるプロセッサコアを前記停止状態にする条件であるプロセッサコアの停止閾値およびプロセス停止閾値を保持し、前記プロセッサ使用量が前記プロセッサコアの停止閾値未満、前記プロセスの数が前記プロセス停止閾値未満、かつ、前記開始状態にあるプロセッサコアが複数存在する場合、前記注目プロセッサコアの停止制御を行うことを特徴とする請求項1に記載された制御装置。
【請求項３】
前記制御手段は、前記注目プロセッサコアに割り当てられたプロセスの数が前記プロセス停止閾値以上の場合、前記注目プロセッサコアの停止制御を行わないことを特徴とする請求項2に記載された制御装置。
【請求項４】
前記制御手段は、前記停止状態にあるプロセッサコアを前記開始状態にする条件であるプロセッサコアの開始閾値およびプロセス開始閾値を保持し、前記プロセッサ使用量が前記プロセッサコアの開始閾値以上、前記プロセスの数が前記プロセス開始閾値以上、かつ、前記停止状態にあるプロセッサコアが存在する場合、前記停止状態にあるプロセッサコアの開始制御を行うことを特徴とする請求項1から請求項3の何れか一項に記載された制御装置。
【請求項５】
前記制御手段は、前記注目プロセッサコアに割り当てられたプロセスの数が前記プロセス開始閾値未満の場合、前記開始制御を行わないことを特徴とする請求項4に記載された制御装置。
【請求項６】
複数のプロセッサコアを有するプロセッサを制御する制御方法であって、
検出手段が、前記複数のプロセッサコアそれぞれの停止状態および開始状態を検出し、
使用量の取得手段が、前記開始状態にある注目プロセッサコアのプロセッサ使用量を取得し、
プロセス数の取得手段が、前記注目プロセッサコアに割り当てられたプロセスの数を取得し、
制御手段が、前記検出された停止状態および開始状態、並びに、前記取得されたプロセッサ使用量およびプロセスの数に基づき、プロセッサコアの停止制御および開始制御を行うことを特徴とする制御方法。
【請求項７】
プロセッサ装置に請求項6に記載された制御を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マルチコアプロセッサにおけるプロセッサコアの停止および開始制御に関する。
【背景技術】
【０００２】
組込用途のマルチコアプロセッサには、プロセッサコア（CPUコア）単位に停止および開始制御を行う機能を備え、マルチプロセッサで行われているCPUコア単位の停止および開始制御と同等の制御が可能なものがある。
【０００３】
特許文献1が示す技術は、システム制御装置によりプロセッサにおけるCPU使用量を監視し、CPU使用量に応じてCPUコア単位の停止および開始制御を行う。この技術は、マルチコアプロセッサ環境において、CPU使用量だけに基づきCPUコアの停止および開始制御を行う。そのため、負荷が小さいプロセスが多数割り当てられているCPUコアにおいても、CPU使用量が一定量まで低下すると当該CPUコアは停止状態にされる。
【０００４】
停止するCPUコアに割り当てられたプロセスは、動作している他のCPUコアへ再割当され、プロセスを再割当されたCPUコアのプロセス数は増加して、当該CPUコアのコンテキストスイッチのオーバヘッドが大きく増加する場合がある。
【０００５】
また、割り当てられたプロセス数は少ないが、負荷が大きいプロセスが割り当てられたCPUコアが存在する場合がある。この場合、当該CPUコアのCPU使用量が一定量まで増加すると、停止状態にあるCPUコアが開始状態に制御され、幾つかのプロセスが新たに開始状態になったCPUコアに再割当される。しかし、負荷が小さいプロセスが新たに開始状態になったCPUコアに再割当されたとしても、負荷が大きいプロセスが割り当てられたCPUコアのCPU使用量が大きく減少するわけではない。また、処理が必要なプロセスが少なければ、新たに開始状態になったCPUコアを含め複数のCPUコアでプロセスを分担したとしても処理時間が大きく減少するわけではない。
【０００６】
このように、CPU使用量だけに基づきCPUコアの停止および開始制御を行えば、処理効率は大きくは変わらず、CPUコアの余分な停止および開始制御を行って、マルチコアプロセッサの消費電力を増加させる可能性がある。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開平11-202988号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
本発明は、マルチコアプロセッサにおけるプロセッサコアの効率的な停止および開始制御を行うことを目的とする。
【課題を解決するための手段】
【０００９】
本発明は、前記の目的を達成する一手段として、以下の構成を備える。
【００１０】
本発明にかかる制御は、複数のプロセッサコアを有するプロセッサを制御する際に、前記複数のプロセッサコアそれぞれの停止状態および開始状態を検出し、前記開始状態にある注目プロセッサコアのプロセッサ使用量を取得し、前記注目プロセッサコアに割り当てられたプロセスの数を取得し、前記検出された停止状態および開始状態、並びに、前記取得されたプロセッサ使用量およびプロセスの数に基づき、プロセッサコアの停止制御および開始制御を行うことを特徴とする。
【発明の効果】
【００１１】
本発明によれば、マルチコアプロセッサにおけるプロセッサコアの効率的な停止および開始制御を行うことができる。
【図面の簡単な説明】
【００１２】
【図１】実施例の制御装置の構成例を説明するブロック図。
【図２】情報処理装置の構成例を説明するブロック図。
【図３】CPUコアとRUNキューの関係例を説明する図。
【図４】CPUコアの停止制御を説明するフローチャート。
【図５】CPUコアの開始制御を説明するフローチャート。
【図６】CPUコアを停止状態にする条件を示す図。
【図７】CPUコアを開始状態にする条件を示す図。
【発明を実施するための形態】
【００１３】
以下、本発明にかかる実施例のプロセッサの制御を図面を参照して詳細に説明する。
【００１４】
［制御装置の構成］
図1のブロック図により実施例のプロセッサ装置である制御装置の構成例を説明する。
【００１５】
マイクロプロセッサ(CPU)101は、第一のプロセッサコア（CPUコア）102と第二のプロセッサコア（CPUコア）103を有する。CPUコア102にはプロセス数104が示す数のプロセスが割り当てられ、CPUコア102のプロセッサ使用量（以下、CPU使用量）はCPU使用量105によって示される。また、CPUコア103にはプロセス数106が示す数のプロセスが割り当てられ、CPUコア103のCPU使用量はCPU使用量107によって示される。なお、CPU使用量105とCPU使用量107はそれぞれ、CPUコア単体の使用率を表す。
【００１６】
CPU使用量監視部108は、所定の間隔で、CPU使用量105とCPU使用量107を監視する。CPUコア制御部109は、プロセス数104とプロセス数106を監視するとともに、CPUコア102とCPUコア103の停止制御および開始制御を行う。CPUコア状態検出部110は、CPUコア102とCPUコア103の停止状態および開始状態を検出する。
【００１７】
なお、後述する停止状態への遷移条件および開始状態への遷移条件である各種閾値は、CPU使用量監視部108やCPUコア制御部109が参照可能な、図示しないレジスタに保持されている。
【００１８】
［情報処理装置の構成］
図2のブロック図により情報処理装置の構成例を説明する。
【００１９】
情報処理装置200は、図1に示すCPU101を有し、CPUコア102とCPUコア103は、CPUバス203を介してRAM201に接続されている。RAM201に格納されたプログラム202は、CPUコア102とCPUコア103により並列に実行される。つまり、CPUコア102とCPUコア103が開始状態にある場合、CPUコア102はプログラム202のプロセスの一部を実行し、CPU103はプログラム202の他の一部を実行する。また、一方のCPUコアが停止状態にある場合、他方のCPUコアがプログラム202の一部または全部を実行する。
【００２０】
図3によりCPUコアとRUNキューの関係例を説明する。CPUコア102はRUNキュー301を有し、CPUコア103はRUNキュー302を有する。CPUコア102は、割り当てられたプロセスをRUNキュー301に格納し、CPUコア103は、割り当てられたプロセスをRUNキュー302に格納する。
【００２１】
なお、後述する停止状態への遷移条件および開始状態への遷移条件である各種閾値は、CPU使用量監視部108やCPUコア制御部109が参照可能なレジスタの代わりに、RAM201に保持してもよい。その場合、各種閾値の変更が容易になる。
【００２２】
［停止および開始制御］
●停止状態への遷移条件
CPUコアを停止状態にする判断は、CPU使用量監視部108が有するCPUコア停止閾値Rstopthと、CPUコア制御部109が有するプロセス停止閾値Nstopthを使用して行われる。CPUコアは停止状態に遷移する条件は次のとおりである。
(1)CPUコアのCPU使用量RuがCPUコア停止閾値Rstopth未満、
(2)当該CPUコアのプロセス数Npがプロセス停止閾値Nstopth未満、
(3)開始状態のCPUコアが複数ある。
【００２３】
つまり、条件(3)を満たす場合は条件(1)と(2)を満たすCPUコアを停止状態に遷移し、何れかの条件を満たさない場合はCPUコアの停止および開始制御は行わない。従って、CPUコアを停止状態にする条件は図6に示すとおりである。
【００２４】
●開始状態への遷移条件
CPUコアを開始状態にする判断は、CPU使用量監視部108が有するCPUコア開始閾値Rstartthと、CPUコア制御部109が有するプロセス開始閾値Nstartthを使用して行われる。CPUコアを開始状態に遷移する条件は次のとおりである。
(4)CPUコアのCPU使用量RuがCPUコア開始閾値Rstartth以上、
(5)当該CPUコアのプロセス数Npがプロセス開始閾値Nstartth以上、
(6)停止状態のCPUコアがある。
【００２５】
つまり、条件(4)と(5)を満たすCPUコアがあり、条件(6)を満たす場合、停止状態のCPUコアを開始状態に遷移し、何れかの条件を満たさない場合はCPUコアの停止および開始制御は行わない。従って、CPUコアを開始状態にする条件は図7に示すとおりである。
【００２６】
●停止制御
図4のフローチャートによりCPUコアの停止制御を説明する。
【００２７】
CPU使用量監視部108は、開始状態にあるCPUコアのCPU使用量を監視し(S401)、取得したCPU使用量を判定する(S402)。
【００２８】
CPU使用量監視部108がCPU使用量を取得したCPUコア（以下、注目プロセッサコアまたは注目CPUコア）のCPU使用量がCPUコア停止閾値以上（Ru≧Rustopth）と判定した場合の処理は、後述する「開始制御」において説明する。また、CPUコア停止閾値未満（Ru＜Rustopth）と判定された場合、CPUコア制御部109は、注目CPUコアのRUNキュー内のプロセス数を取得し(S403)、取得したプロセス数を判定する(S404)。
【００２９】
CPUコア制御部109がプロセス数はプロセス停止閾値以上（Np≧Nstopth）と判定した場合、処理はステップS401に戻る。また、プロセス停止閾値未満（Np＜Nstopth）と判定された場合、CPUコア状態検出部110は、開始状態にあるCPUコアが複数存在するか否かを判定する(S405)。開始状態にあるCPUコアが一つしか存在しない、言い替えれば、注目CPUコアだけが開始状態にある場合、処理はステップS401に戻る。
【００３０】
開始状態にあるCPUコアが複数存在する場合、CPUコア制御部109は、注目CPUコアの停止処理を行う。つまり、注目CPUコアのRUNキュー内のプロセスを開始状態にある別のCPUコアへ再割当し(S406)、注目CPUコアのキャッシュデータをRAM201に戻し(S407)、注目CPUコアを停止状態にする(S408)。その後、処理はステップS401に戻る。
【００３１】
このように、注目CPUコアのRUNキュー内のプロセス数がプロセス停止閾値以上の場合は注目CPUコアの停止処理を行わない。その結果、コンテキストスイッチのオーバヘッドを抑えて、処理効率を優先することができる。
【００３２】
なお、開始状態にあるCPUコアが一つしか存在しない場合、注目CPUコアの停止処理を行えば、すべてのCPUコアが停止状態となり処理が継続できなくなるため、注目CPUコアの停止処理は行わない。
【００３３】
●開始制御
図5のフローチャートによりCPUコアの開始制御を説明する。なお、図5に示すステップS401とS402の処理は図4に示すステップS401とS402の処理と同様であり、その詳細説明を省略する。
【００３４】
CPU使用量監視部108は、注目CPUコアのCPU使用量がCPUコア停止閾値以上（Ru≧Rustopth）と判定した場合(S402)、当該CPU使用量がCPUコア開始閾値以上か否かを判定する(S503)。
【００３５】
CPU使用量監視部108が注目CPUコアのCPU使用量がCPUコア開始閾値未満（Ru＜Rustartth）と判定した場合、処理はステップS401に戻る。また、CPUコア開始閾値以上（Ru≧Rustartth）と判定された場合、CPUコア制御部109は、注目CPUコアのRUNキュー内のプロセス数を取得し(S504)、取得したプロセス数を判定する(S505)。
【００３６】
CPUコア制御部109がプロセス数はプロセス開始閾値未満（Np＜Nstartth）と判定した場合、処理はステップS401に戻る。また、プロセス開始閾値以上（Np≧Nstartth）と判定された場合、CPUコア状態検出部110は、停止状態にあるCPUコアが存在するか否かを判定する(S506)。停止状態にあるCPUコアが存在しない場合、処理はステップS401に戻る。
【００３７】
停止状態にあるCPUコアが存在する場合、CPUコア制御部109は、停止状態にあるCPUコアの開始処理を行う。つまり、停止状態にあるCPUコアのうち一つを開始状態にし(S507)、RUNキュー内のプロセスの再割当を行う(S508)。その後、処理はステップS401に戻る。なお、開始状態にするCPUコアとして、停止状態にあるCPUコアから例えばCPU番号が最も小さい（または最も大きい）CPUコアを選択する。
【００３８】
なお、プロセスの再割当とは、CPU使用量がCPUコア開始閾値以上、かつ、プロセス数がプロセス開始閾値以上と判定された注目CPUコアのRUNキューに格納されたプロセスの一部を、開始状態にしたCPUコアのRUNキューに移動することである。
【００３９】
このように、注目CPUコアのRUNキュー内のプロセス数がプロセス開始閾値未満の場合はCPUコアの開始処理を行わない。つまり、CPUコアのCPU使用量は大きいがプロセス数が小さい場合、停止状態のCPUコアを開始処理して並列処理を行っても、処理効率は大きくは変わらないため、停止状態のCPUコアの開始処理を行わない。その結果、CPUコアの余分な停止および開始制御を行わず、マルチプロセッサの消費電力の増加を防ぐことができる。
【００４０】
［変形例］
上記では、CPUコア停止閾値RstopthとCPUコア開始閾値Rstartthを有するCPU使用量監視部108がCPU使用量を判定する例を説明した。同様に、プロセス停止閾値Nstopthとプロセス開始閾値Nstartthを有するCPUコア制御部109がプロセス数を判定する例を説明した。しかし、例えば、CPUコア制御部109がそれら閾値すべて有し、CPU使用量監視部108が取得し供給するCPU使用量の判定を行ってもよい。
【００４１】
さらに、CPU使用量とプロセス数を取得する取得部を設けて、CPUコア制御部109が、取得部が取得し供給するCPU使用量とプロセス数の判定を行ってもよい。
【００４２】
また、上記では、二つのCPUコアを有するマルチコアプロセッサにおける停止および開始制御を説明した。しかし、本発明は、例えば四つや八つなどCPUコアの数自体には関係なく、複数のCPUコアを有するマルチコアプロセッサの停止および開始処理に適用することができる。
【００４３】
また、上記では、マルチコアプロセッサ101を有する制御装置のハードウェアが停止および開始制御を行う例を説明したが、RAM201にロードされたプログラムによって停止および開始制御を行うこともできる。
【００４４】
［その他の実施例］
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステムあるいは装置のコンピュータ（又はCPUやMPU等）がプログラムを読み出して実行する処理である。
【図１】
2013149221.tif 000003
【図２】
2013149221.tif 000004
【図３】
2013149221.tif 000005
【図４】
2013149221.tif 000006
【図５】
2013149221.tif 000007
【図６】
2013149221.tif 000008
【図７】
2013149221.tif 000009