(57)【要約】【課題】省電力化を図る。【解決手段】情報処理装置１は、コア部１１−１〜１１−ｎ、アンコア部１２およびスケジューラ２３を備える。コア部１１−１〜１１−ｎは、マルチコアプロセッサのプロセッサコアに該当する。アンコア部１２は、コア部１１−１〜１１−ｎの共有リソースである。スケジューラ２３は、実行タイミングの調整が許容されている第１のプロセス以外の第２のプロセスが、複数のコア部１１−１〜１１−ｎのうちの一部のコア部で実行されている期間に、未使用のコア部に第１のプロセスを実行させるように、第１のプロセスの実行タイミングを調整する。【選択図】図１
2013047892.tif 000002
【特許請求の範囲】
【請求項１】
複数のコア部を有するプロセッサと、
コア部へのプロセススケジューリングを行うスケジューラと、
を備え、
前記スケジューラは、
実行タイミングの調整が許容されている第１のプロセス以外の第２のプロセスが、前記複数のコア部のうちの一部のコア部で実行されている期間に、未使用のコア部に前記第１のプロセスを実行させるように、前記第１のプロセスの実行タイミングを調整する、
ことを特徴とする情報処理装置。
【請求項２】
前記第１のプロセスをキューイングする第１のキューと、前記第２のプロセスをキューイングする第２のキューとをさらに備え、
前記スケジューラは、
前記第２のキューに前記第２のプロセスがキューイングされている場合は、前記第１のプロセスより優先して、前記第２のキューから前記第２のプロセスを取り出してコア部に実行させ、
前記第２のプロセスを実行しているコア部が存在し、未使用のコア部が存在する場合には、前記第１のキューから前記第１のプロセスを取り出して、未使用の該コア部に実行させる、
ことを特徴とする請求項１記載の情報処理装置。
【請求項３】
前記スケジューラは、
前記第２のキューに前記第２のプロセスがキューイングされておらず、前記第１のキューに、未使用のコア部の数分の前記第１のプロセスがキューイングされている場合は、未使用のコア部の数分の前記第１のプロセスを、該コア部に一括して実行させる、
ことを特徴とする請求項２記載の情報処理装置。
【請求項４】
前記第１のプロセスまたは前記第２のプロセスの実行時に負荷のかかるリソースを検出する検出部をさらに備え、
前記スケジューラは、前記第１のプロセスを実行すると、前記第１のプロセスと実行中の前記第２のプロセスとの間で、実行時に負荷のかかるリソースの競合が発生すると認識した場合は、前記第１のプロセスの実行を抑止することを特徴とする請求項１記載の情報処理装置。
【請求項５】
前記スケジューラは、前記第２のプロセスの実行時に負荷のかかる前記リソースが不明であって、前記第１のプロセスの実行時に負荷のかかる前記リソースがコア部以外の場合は、前記第１のプロセスと前記第２のプロセスとを実行した際にリソース競合が発生すると判定する、
ことを特徴とする請求項４記載の情報処理装置。
【請求項６】
コンピュータが、
マルチコアプロセッサの複数のコア部に実行させるプロセスのスケジューリング時を判定し、
前記スケジューリング時になると、実行タイミングの調整が許容されている第１のプロセス以外の第２のプロセスが、前記複数のコア部のうちの一部のコア部で実行されている期間に、未使用のコア部に前記第１のプロセスを実行させるように、前記第１のプロセスの実行タイミングを調整する、
ことを特徴とするスケジューリング方法。
【請求項７】
コンピュータに、
マルチコアプロセッサの複数のコア部に実行させるプロセスのスケジューリング時を判定し、
前記スケジューリング時になると、実行タイミングの調整が許容されている第１のプロセス以外の第２のプロセスが、前記複数のコア部のうちの一部のコア部で実行されている期間に、未使用のコア部に前記第１のプロセスを実行させるように、前記第１のプロセスの実行タイミングを調整する、
処理をコンピュータに実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、スケジューリング方法およびプログラムに関する。
【背景技術】
【０００２】
近年のプロセッサは、省電力化のために、処理すべきプロセスのないアイドル（idle）状態になると、より消費電力の小さい省電力状態に移行する機構を備えている。
マルチコアプロセッサは、複数のコア（core）部と、コア間で共有されるリソース部分であるアンコア（uncore）部を備え、コア部、アンコア部のそれぞれに省電力状態が定義されている。
【０００３】
コア部が省電力状態になるのは、コア部がアイドルになるときである。また、アンコア部が省電力状態になるのは、アンコア部を共有しているすべてのコア部がアイドルになるときである。そのためマルチコアプロセッサでは、あるコア部がアイドルであっても、その時間帯に他のコア部が動作していると、アンコア部は省電力状態にならない。このような状態が続くと、アンコア部は省電力状態への移行が行われず、省電力化されない。そこで、プロセスを複数のコアで同時に実行させ、プロセス実行完了後にプロセッサ全体をアイドル状態にすることで省電力化を図ることが考えられている（非特許文献１）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平９−１８５５８９号公報
【特許文献２】特開平４−２１５１６８号公報
【非特許文献】
【０００５】
【非特許文献１】“Energy-Efficient Platforms - Considerations for Application Software and Services"(Whitepaper)、Revision 1.0、[online]、March 2011、Intel Corporation、［平成23年8月10日検索］、インターネット<URL:http://download.intel.com/technology/pdf/Green＿Hill＿Software.pdf>
【発明の概要】
【発明が解決しようとする課題】
【０００６】
プロセスを複数コアで同時に実行するためには、プロセスの実行のタイミングを調整する必要がある。例えば、１つのプロセスのみ実行される状況では、そのプロセスの実行は待ち、実行は他のプロセスの実行時に合わせる。
【０００７】
プロセスの実行のタイミングを調整することをデスクトップ環境で行うことを考えると、プロセッサコアで実行されるプロセスの中には、実行のタイミングを任意に調整するのが適切でないプロセスが存在する。例えばインタラクティブ処理のように、ユーザからの要求に応じた処理の実行に用いられるユーザプロセスがある。ユーザプロセスは、通常、ユーザが処理を要求したタイミングで遅滞なく実行される。ところが、省電力化のために、例えばユーザプロセスの実行タイミングを任意に調整してしまうと、処理要求に対する応答が遅延し、ユーザプロセスを用いて実行される処理の効率が低下する。
【０００８】
このように、省電力化のために、プロセスの種別を問わずに各プロセスの実行タイミングを調整すると、インタラクティブ処理のような即時に実行する処理の効率低下を招くという問題がある。
【０００９】
１つの側面では、本発明は、プロセッサの省電力化を図ることを目的とする。
【課題を解決するための手段】
【００１０】
上記課題を解決するために、情報処理装置が提供される。情報処理装置は、複数のコア部を有するプロセッサと、コア部へのプロセススケジューリングを行うスケジューラと、を備え、前記スケジューラは、実行タイミングの調整が許容されている第１のプロセス以外の第２のプロセスが、前記複数のコア部のうちの一部のコア部で実行されている期間に、未使用のコア部に前記第１のプロセスを実行させるように、前記第１のプロセスの実行タイミングを調整する。
【発明の効果】
【００１１】
プロセッサの省電力化が図られる。
【図面の簡単な説明】
【００１２】
【図１】情報処理装置の構成例を示す図である。
【図２】マルチコアプロセッサの消費電力状態を示す図である。
【図３】コア部の同時利用による省電力化を説明するための図である。
【図４】コア部の同時利用による省電力化を説明するための図である。
【図５】デスクトップ環境におけるプロセスの一例を示す図である。
【図６】アシストプロセスの実行タイミング調整を説明するための図である。
【図７】アシストプロセスの実行タイミング調整を説明するための図である。
【図８】リソース競合発生時の性能低下状態を説明するための図である。
【図９】リソース競合発生時の性能低下状態を説明するための図である。
【図１０】情報処理装置の構成例を示す図である。
【図１１】アシストプロセステーブルの構成例を示す図である。
【図１２】通常プロセステーブルの構成例を示す図である。
【図１３】負荷の種類の調査フローを示す図である。
【図１４】スケジューリングのフローを示す図である。
【図１５】スケジューリングのフローを示す図である。
【図１６】競合判定テーブルの構成例を示す図である。
【図１７】リソース競合判定処理の動作フローを示す図である。
【図１８】リソース競合判定処理の動作フローを示す図である。
【図１９】コンピュータのハードウェアの一構成例を示す図である。
【発明を実施するための形態】
【００１３】
以下、本発明の実施の形態を図面を参照して説明する。図１は情報処理装置の構成例を示す図である。情報処理装置１は、マルチコアプロセッサを有し、複数のコア部１１−１〜１１−ｎを有するプロセッサ１１、アンコア部１２およびスケジューラ２３を備える。
【００１４】
コア部１１−１〜１１−ｎは、マルチコアプロセッサのプロセッサコアに該当する。アンコア部１２は、コア部１１−１〜１１−ｎの共有リソースであり、例えば、キャッシュメモリやメモリコントローラ等が該当する。
【００１５】
スケジューラ２３は、コア部１１−１〜１１−ｎに対して、プロセススケジューリングを行う。スケジューラ２３には、実行タイミングの調整が許容されている第１のプロセスが指定されている。例えば第１のプロセスは、ウィルススキャン処理のように、即時に実行することが要求されていない処理を実行するプロセスである。そしてスケジューラ２３は、第１のプロセス以外の第２のプロセスが、コア部１１−１〜１１−ｎのうちの一部のコア部で実行されている期間に、未使用のコア部に第１のプロセスを実行させるように、第１のプロセスの実行タイミングを調整する。例えば第２のプロセスは、インタラクティブ処理のように、即時に実行することが要求されている処理を実行するプロセスである。
【００１６】
ここで、コア部１１−１〜１１−ｎのいずれか１つでも動作していると、他のコア部が未使用（例えば、アイドルの状態）であっても、アンコア部１２は、アクティブとなって省電力状態とはならない。
【００１７】
なお、省電力状態とは、具体的には例えば、動作クロックの供給停止やキャッシュのフラッシュを行い、コアまたはアンコアを停止させた状態のことをいう。
したがって、情報処理装置１では、第２のプロセスが、コア部１１−１〜１１−ｎのうちの一部のコア部で実行されている期間に、未使用のコア部に第１のプロセスを実行させるように、第１のプロセスの実行タイミングを調整する構成とした。
【００１８】
これにより、プロセスの実行タイミングを適切に調整して、コア部１１−１〜１１−ｎで同時にプロセスを実行させることが可能となり、アンコア部１２がアクティブ状態となる時間帯を減少し、効率的な省電力化を実現することが可能になる。
【００１９】
また、アンコア部１２をより長く省電力状態に保つことができるので、プロセッサの省電力化が図られる。
次にマルチコアプロセッサの電力状態について説明する。図２はマルチコアプロセッサの電力状態を示す図である。２つのコア部を有するデュアルコアプロセッサ５０の電力状態を示している。
【００２０】
デュアルコアプロセッサ５０は、コア部５１、５２およびアンコア部（例えば、キャッシュメモリ）５３を備える。コア部５１、５２は、アンコア部５３を共有している。
状態ｓ１では、コア部５１、５２には、プロセスが割り当てられておらず、アイドル状態（例えば、割り当てプロセスが待ち状態にあるなど）であるため、コア部５１、５２は省電力状態となる。また、アンコア部５３も、コア部５１、５２が共にアイドルであるため、省電力状態になる。
【００２１】
状態ｓ２では、コア部５２は、プロセスが割り当てられてプロセス処理中であり、コア部５２が利用するアンコア部５３もアクティブ状態となる。コア部５１は、プロセスが割り当てられておらず、アイドルである。したがって、コア部５１のみが省電力状態になる。
【００２２】
状態ｓ３では、コア部５１、５２は、プロセスが割り当てられてプロセス処理中であり、アンコア部５３もアクティブ状態となる。したがって、省電力状態の構成部はない。
上記の状態ｓ１〜ｓ３の中で、消費電力が最も低いのが状態ｓ１であり、次に低いのが状態ｓ２であり、消費電力が最も高いのは状態ｓ３となる。
【００２３】
次にコア部の同時利用（複数のコア部による同時プロセス処理）による省電力化について説明する。図３、図４はコア部の同時利用による省電力化を説明するための図である。図３はコア部の同時利用の適用前を示しており、図４はコア部の同時利用の適用後を示している。
【００２４】
図３において、コア部５１では、時間ｔ０から時間ｔ２までプロセスが実行され、コア部５２では時間ｔ１から時間ｔ３までプロセスが実行されるとする。このとき、アンコア部５３を見ると、アンコア部５３では、共有するコア部の一方が動作していればアクティブとなるので、この例では、時間ｔ０〜ｔ３まではアクティブとなっている。
【００２５】
図４において、コア部５１では、時間ｔ０から時間ｔ２までプロセスが実行され、コア部５２では、時間ｔ０から時間ｔ２の範囲内でプロセスが実行されている。コア部５１で実行しているプロセスの終了時間ｔ２では、コア部５２で実行していたプロセスも終了しているので、時間ｔ２以降では、コア部５１、５２は共にアイドルとなる。
【００２６】
したがって、時間ｔ２以降では、アンコア部５３は省電力状態になり、図３の場合と比べて、アンコア部５３をより長く省電力状態にすることができる。このように、コア部の同時利用を行うことで、アンコア部をより長く省電力状態にすることが可能になる。
【００２７】
次にプロセスの実行タイミングの調整について説明する。上記のようなコア部の同時利用を行うためには、プロセスの実行タイミングを調整し、１つのコア部で動作している時間帯があるときには、他のコア部でもその時間帯でプロセスを実行させる。
【００２８】
図５はデスクトップ環境におけるプロセスの一例を示す図である。図からわかるように、デスクトップ環境では、ユーザプロセス、システムプロセスなどが様々に存在しており、これらのプロセスは各々のタイミングで実行される。
【００２９】
コア部の同時利用を行うには、これらのタイミングを調整することになるが、これらプロセスの内、ユーザプロセスは、ユーザが各々のタイミングで実行するものであるので、ユーザプロセスのタイミングを操作することは難しい。
【００３０】
一方、システムプロセスの中には、ウイルススキャンを行うプロセスや、ファイル検索の高速化のためのインデキシングを行うプロセスがある（以降、アシストプロセスと呼ぶ）。
【００３１】
このようなアシストプロセスは、システムがアイドル状態にあるか、またはアイドル状態に移行する条件が満たされたときに起動されるプロセスである。アイドル状態に移行する条件とは、例えば即時に実行を開始することが要求されている実行可能状態のプロセスが存在しなくなることである。アシストプロセスは、システムの動作状況に応じて実行されるものであり、実行タイミングに強い制約があるわけではない。したがって、アシストプロセスであれば、実行タイミングを調整することができる。
【００３２】
図６、図７はアシストプロセスの実行タイミング調整を説明するための図である。図６は実行タイミング調整前の図であり、図７は実行タイミング調整後の図である。
図６において、コア部５１は、時間ｔ０〜ｔ１の間がアイドルであったため、時間ｔ１からアシストプロセスを実行している。コア部５２は、時間ｔ２から時間ｔ４までユーザプロセスを実行している。また、アンコア部５３は、時間ｔ１〜ｔ４までの間はアクティブとなる。
【００３３】
図７において、コア部５２が、時間ｔ２〜ｔ４の間でユーザプロセスを処理しており、コア部５１では、時間ｔ３でユーザプロセスが実行されているのを確認したタイミングでアシストプロセスを実行している。その結果、コア部５１、５２のアイドル期間が図６の場合よりも長くなるので、アンコア部５３をより長く省電力状態にすることができる。
【００３４】
上記で見たように、アシストプロセスの実行のタイミングを調整することで、複数コアの同時利用を実現し、省電力化が達成される。
次にプロセスの実行タイミングを調整する際のプロセススケジューリングについて説明する。プロセススケジューリングでは、アシストプロセス以外のプロセス（以下、通常プロセスと呼ぶ）が実行されているのを検知すると、アシストプロセスも実行させるスケジューリングを行う。なおアシストプロセスは第１のプロセスに該当し、通常プロセスは第２のプロセスに該当する。
【００３５】
ただし、アシストプロセスと通常プロセスとが共に共有リソース（メモリ、ディスク等）を利用してリソースの競合が発生する場合には、アシストプロセスの実行を停止して、該アシストプロセスを実行可能状態に戻す。リソース競合が発生すると、プロセスの実行時間が延びてしまうためである。
【００３６】
図８、図９はリソース競合発生時の性能低下状態を説明するための図である。図８はリソース競合が生じていない場合であり、図９はリソース競合が生じている場合である。
図８において、コア部５１が実行するアシストプロセスと、コア部５２が実行する通常プロセスとは、プロセス実行時に共有のリソースを利用しないとする。このとき、コア部５２が、時間ｔ２〜ｔ４の間で通常プロセスを処理している。コア部５１は、時間ｔ３で通常プロセスが実行されているのを確認したタイミングで、アシストプロセスを実行している。アンコア部５３は、時間ｔ２〜ｔ４の間、アクティブとなる。
【００３７】
図９において、コア部５１が実行するアシストプロセスと、コア部５２が実行する通常プロセスとは、プロセス実行時に共有のリソースを利用するものとする。このとき、コア部５２が、時間ｔ２〜ｔ５の間で通常プロセスを処理している。コア部５１は、時間ｔ３で通常プロセスが実行されているのを確認したタイミングで、アシストプロセスを実行している。アンコア部５３は、時間ｔ２〜ｔ５の間、アクティブとなる。
【００３８】
ここで、図８では、アシストプロセスと通常プロセスが同じ共有リソースを利用しないので、各プロセスの実行時間は同時実行を行わない場合と変わらない。これに対し、図９では、アシストプロセスと通常プロセスが同じ共有リソースを利用するので、通常プロセスとアシストプロセスの同時実行によるリソース競合が生じ、各プロセスの実行時間が延びてしまう。
【００３９】
例えば、メモリからデータを転送するプロセスが複数同時に実行される場合、複数のプロセスでメモリからデータ転送をすると、転送待ちの時間が長くなる。
プロセスの実行時間が延びると、図９に示すように、アンコア部５３がアクティブとなる時間が長くなり、コアの同時利用をしても、省電力の効果を得ることができない。
【００４０】
したがって、通常プロセスの実行時にアシストプロセスを実行する際は、それぞれのプロセスが、どのようなリソースに負荷を与えるかを調査しておく。そして、通常プロセスとリソース競合を起こさない場合に、アシストプロセスを実行させる。
【００４１】
次に情報処理装置１の構成例について説明する。図１０は情報処理装置の構成例を示す図である。情報処理装置１−１は、ハードウェア１０、オペレーティングシステム２０およびアプリケーション３０を備える。
【００４２】
ハードウェア１０は、コア部１１−１〜１１−ｎ、アンコア部１２およびメモリ１３を含む。オペレーティングシステム２０は、実行可能アシストプロセスキュー２１（第１のキューに該当）、実行可能プロセスキュー２２（第２のキューに該当）、スケジューラ２３および負荷調査デーモン２４（検出部に該当）を含む。アプリケーション３０は、プロセスを含む。
【００４３】
次にアシストプロセステーブルおよび通常プロセステーブルについて説明する。図１１はアシストプロセステーブルの構成例を示す図である。アシストプロセステーブルＴ１は、アシストプロセスの名称および負荷の属性が登録されたテーブルであり、例えば、メモリ１３内のテーブル管理領域で保持される。
【００４４】
図の例では、アシストプロセスの名称がassist−A、負荷はディスクとなっている。これは、アシストプロセス（assist−A）を実行する場合は、リソースとしてディスクに最も負荷がかかる（ディスクを最も頻繁に利用する）ことを表している。
【００４５】
また、アシストプロセスの名称がassist−B、負荷はＣＰＵとなっている。これは、アシストプロセス（assist−B）を実行する場合は、リソースとしてＣＰＵに対して最も負荷がかかることを表している。
【００４６】
さらに、アシストプロセスの名称がassist−Ｎ、負荷はメモリとなっている。これは、アシストプロセス（assist−Ｎ）を実行する場合は、リソースとしてメモリに対して最も負荷がかかることを表している。
【００４７】
なお、スケジューラ２３では、対象のアシストプロセスが、実行タイミングを調整すべきアシストプロセスかどうかを判定する際にアシストプロセステーブルＴ１を用いる。さらに、アシストプロセステーブルＴ１は、通常プロセスと同時実行することで、リソース競合を起こすかどうかを判定する際にも用いられる。また、アシストプロセステーブルＴ１は、例えば、専用サーバに問い合わせることで取得することができる。
【００４８】
図１２は通常プロセステーブルの構成例を示す図である。通常プロセステーブルＴ２は、通常プロセスの名称および負荷の属性が登録されたテーブルであり、例えば、メモリ１３内のテーブル管理領域で保持される。
【００４９】
図の例では、通常プロセスの名称がprocess−A、負荷はディスクとなっている。これは、通常プロセス（process−A）を実行する場合は、リソースとしてディスクに最も負荷がかかる（ディスクを最も頻繁に利用する）ことを表している。
【００５０】
なお、スケジューラ２３では、実行中の通常プロセスの負荷の参照に、通常プロセステーブルＴ２を用いる（実行すべきプロセスの名称は、スケジューラ２３で記入される）。
次に負荷の種類の調査について説明する。負荷の種類は、タスクマネージャなどで取得できるリソース使用量により決定する。また、このような負荷の種類の調査は、負荷調査デーモン２４によって定期的に行い、通常プロセステーブルＴ２に負荷の種類を記入して更新する。
【００５１】
図１３は負荷の種類の調査フローを示す図である。
〔Ｓ１〕負荷調査デーモン２４は、リソース使用量を取得する。
〔Ｓ２〕負荷調査デーモン２４は、ディスクＩ／Ｏの読み書きバイト数は閾値以上か否かを判定する。閾値以上ならステップＳ３へ行き、閾値未満ならステップＳ４へ行く。
【００５２】
〔Ｓ３〕負荷調査デーモン２４およびスケジューラ２３は、負荷の種類をディスクと判定する。
〔Ｓ４〕負荷調査デーモン２４は、メモリの読み書きバイト数は閾値以上か否かを判定する。閾値以上ならステップＳ５へ行き、閾値未満ならステップＳ６へ行く。
【００５３】
〔Ｓ５〕負荷調査デーモン２４およびスケジューラ２３は、負荷の種類をメモリと判定する。
〔Ｓ６〕負荷調査デーモン２４およびスケジューラ２３は、負荷の種類をＣＰＵと判定する。
【００５４】
次にスケジューラ２３におけるプロセススケジューリングのアルゴリズムについて説明する。情報処理装置１−１では、アシストプロセスを管理するために、実行可能状態にあるアシストプロセスをキューイングして管理する実行可能アシストプロセスキュー２１を備えている。
【００５５】
通常プロセスのスケジューリングを行う場合では、一定時間毎のタイマ割り込みなどのスケジューリングを契機に、実行可能状態にある通常プロセスをキューイングする実行可能プロセスキュー２２から通常プロセスを取り出して実行権を与えていく。
【００５６】
一方、アシストプロセスのプロセススケジューリングでは、通常プロセスに実行権が与えられる場合で、タスク割り当てがされていないアイドルのコア部が存在するときには、実行可能アシストプロセスキュー２１からアシストプロセスを取り出し、アシストプロセスに対しても実行権を与える。
【００５７】
なお、実行可能プロセスキュー２２に通常プロセスがキューイングされている場合は、アシストプロセスより優先して、実行可能プロセスキュー２２から通常プロセスを取り出して未使用のコア部に実行させる。
【００５８】
上記のように、通常プロセスをキューイングする実行可能プロセスキュー２２の他に、アシストプロセスキューをキューイングして管理する実行可能アシストプロセスキュー２１を設けておく。
【００５９】
そして、通常プロセスに実行権が与えられ、アイドルのコア部が存在するときには、実行可能アシストプロセスキュー２１からアシストプロセスを取り出し、アシストプロセスに対しても実行権を与える構成とした。
【００６０】
これにより、アシストプロセスの実行タイミングを調整し、コア部１１−１〜１１−ｎで同時にプロセスを実行することができ、省電力化を実現することが可能になる。
一方、通常プロセスが実行可能状態にない場合であって、実行可能アシストプロセスキュー２１に対して、アイドルのコア数分のアシストプロセスが格納されている場合は、これらアシストプロセスに一括して実行権を与える。
【００６１】
このように、実行可能プロセスキュー２２に通常プロセスがキューイングされておらず、実行可能アシストプロセスキュー２１に、アイドルのコア数分のアシストプロセスがキューイングされている場合は、アイドルのコア数分のアシストプロセスに一括して実行権を与える構成とした。
【００６２】
これにより、実行可能な通常プロセスがない場合であっても、アイドルのコア数分のアシストプロセスに実行権を与えるので、コア部１１−１〜１１−ｎで同時にプロセスを実行することができ、省電力化を実現することが可能になる。
【００６３】
なお、アシストプロセスと同時に実行されているプロセスが終了した場合は、別の実行可能状態にある通常プロセスがあればこれを実行させ、プロセスが同時に実行されるようにする。または、実行可能状態にある通常プロセスがない場合は、実行可能状態にあるアシストプロセスがあればこれを実行する。なお、割り当てるプロセスがない場合には、実行中のアシストプロセスを実行可能状態に戻す。
【００６４】
図１４、図１５はスケジューリングのフローを示す図である。
〔Ｓ１１〕スケジューラ２３は、実行可能プロセスキュー２２は空か否かを判定する。空でない場合は、ステップＳ１２へ行き、空の場合はステップＳ１９へ行く。
【００６５】
〔Ｓ１２〕スケジューラ２３は、実行可能プロセスキュー２２に格納されている通常プロセスの数は、現在アイドルであるコア数分あるか否かを判定する。通常プロセス数が、現在アイドルであるコア数分あればステップＳ１３へ行き、なければステップＳ１４へ行く。
【００６６】
〔Ｓ１３〕スケジューラ２３は、実行可能プロセスキュー２２に格納されている、コア数分の通常プロセスを取り出して実行権を与える。
〔Ｓ１４〕スケジューラ２３は、実行可能プロセスキュー２２に格納されている、現在アイドルであるコア数分より少ない個数の通常プロセスを取り出して実行権を与える。
【００６７】
〔Ｓ１５〕スケジューラ２３は、実行可能アシストプロセスキュー２１は空か否かを判定する。空でない場合は、ステップＳ１６へ行き、空の場合は終了する。
〔Ｓ１６〕スケジューラ２３は、実行可能アシストプロセスキュー２１の中から、ステップＳ１４で実行権を与えた通常プロセスとリソース競合しないアシストプロセスを探索する。
【００６８】
〔Ｓ１７〕スケジューラ２３は、通常プロセスとリソース競合しないアシストプロセスが存在するか否かを判定する。通常プロセスとリソース競合しないアシストプロセスがあればステップＳ１８へ行き、なければ終了する。
【００６９】
〔Ｓ１８〕スケジューラ２３は、実行可能アシストプロセスキュー２１から、通常プロセスとリソース競合しないアシストプロセスを取り出して、実行権を与える。
〔Ｓ１９〕スケジューラ２３は、実行可能アシストプロセスキュー２１の中に、現在アイドルであるコア数分のアシストプロセスが格納されているか否かを判定する。現在アイドルであるコア数分のアシストプロセスが格納されていなければステップＳ２０へ行き、格納されていればステップＳ２１へ行く。
【００７０】
〔Ｓ２０〕スケジューラ２３は、アシストプロセスに実行権を与えない。
〔Ｓ２１〕スケジューラ２３は、実行可能アシストプロセスキュー２１に格納されている、コア数分のアシストプロセスの中から、リソース競合しないアシストプロセスの組合せを探索する。
【００７１】
〔Ｓ２２〕スケジューラ２３は、リソース競合しないアシストプロセスの組合せが存在するか否かを判定する。存在する場合はステップＳ２３へ行き、存在しない場合はステップＳ２４へ行く。
【００７２】
〔Ｓ２３〕スケジューラ２３は、実行可能アシストプロセスキュー２１から、リソース競合しないアシストプロセスの組合せを取り出して、実行権を与える。
〔Ｓ２４〕スケジューラ２３は、アシストプロセスに実行権を与えない。
【００７３】
なお、上記のスケジューリングフローに関しては、上述の内容に限られるものではなく、他にも色々な実施方法が考えられる。
例えば、図１５のステップＳ１９、Ｓ２０のフローは、アイドルコア数分のアシストプロセスがなければ、「アシストプロセスに実行権を付与しない」としているが、「アシストプロセスが複数あれば実行権の割当てを行う」というようにしてもよい。
【００７４】
例えば、コアが４つのプロセッサの場合で、図１５のステップＳ１９の時点で通常プロセスがなく４コアともアイドルであり、かつキューイングされているアシストプロセスが３つある場合を考える。図１５のフローチャートに従うとアシストプロセスは実行されないが、この場合のようにアシストプロセスが３つあるのであれば、これら３つのアシストプロセスを同時実行させるという制御にしてもよい。
【００７５】
次にリソース競合判定について説明する。アシストプロセスを通常プロセスと同時に実行させる場合、またはアシストプロセスを複数同時に実行する場合には、リソース競合が生じるか否かの競合判定を行う。
【００７６】
図１６は競合判定テーブルの構成例を示す図である。競合判定テーブルＴ３は、プロセスの互いの負荷がどのような種類のときにリソース競合が生じるかのパターンを登録したテーブルであり、例えば、メモリ１３内のテーブル管理領域で保持される。
【００７７】
図中、○印はリソース競合が発生しないことを表し、×印はリソース競合が発生することを表している。
競合判定テーブルＴ３において、一方のプロセスの負荷がＣＰＵの場合は、他方のプロセスの負荷がＣＰＵ、メモリ、ディスクのいずれであってもリソース競合は生じない。
【００７８】
また、一方のプロセスの負荷がメモリの場合は、他方のプロセスの負荷もメモリである場合にリソース競合が生じ、他方のプロセスの負荷がＣＰＵまたはディスクの場合はリソース競合は生じない。
【００７９】
さらに、一方のプロセスの負荷がディスクの場合は、他方のプロセスの負荷もディスクである場合にリソース競合が生じ、他方のプロセスの負荷がＣＰＵまたはメモリの場合は、リソース競合は生じない。
【００８０】
図１７、図１８はリソース競合判定処理の動作フローを示す図である。
〔Ｓ３１〕スケジューラ２３は、リソース競合判定対象のプロセスが、アシストプロセスのみか否かを判定する。アシストプロセスのみの場合はステップＳ３２へ行き、通常プロセスが含まれる場合はステップＳ３４へ行く。
【００８１】
〔Ｓ３２〕スケジューラ２３は、アシストプロセステーブルＴ１を参照して、判定対象のアシストプロセスの負荷の種類を認識する。
〔Ｓ３３〕スケジューラ２３は、競合判定テーブルＴ３を参照して、リソース競合が生じるか否かを判定する。具体的には、双方のアシストプロセスの負荷が共にメモリまたはディスクであるか否かを判定し、共にメモリまたはディスクである場合はステップＳ３ａへ行き、共にメモリまたはディスクでない場合はステップＳ３ｂへ行く。
【００８２】
〔Ｓ３ａ〕スケジューラ２３は、リソース競合の発生ありと認識する。
〔Ｓ３ｂ〕スケジューラ２３は、リソース競合の発生なしと認識する。
〔Ｓ３４〕スケジューラ２３は、リソース競合判定対象のプロセスに通常プロセスが含まれているので、判定対象の通常プロセスの負荷の種類を知るために、通常プロセステーブルＴ２を参照する。
【００８３】
〔Ｓ３５〕スケジューラ２３は、判定対象の通常プロセスの負荷の種類が、通常プロセステーブルＴ２に登録されているか否かを判定する。未登録の場合はステップＳ３６へ行き、登録されていればステップＳ３７へ行く。
【００８４】
〔Ｓ３６〕スケジューラ２３は、判定対象プロセスの中のアシストプロセスの負荷がＣＰＵか否かを判定する。ＣＰＵであればステップＳ３ｃへ行き、ＣＰＵでなければステップＳ３ｄへ行く。
【００８５】
〔Ｓ３ｃ〕スケジューラ２３は、リソース競合の発生なしと認識する。
なお、競合判定テーブルＴ３の登録内容にもとづき、アシストプロセスの負荷がＣＰＵであれば、他方の通常プロセスの負荷がＣＰＵ、メモリ、ディスクのいずれであっても、リソース競合は生じないので、リソース競合発生なしとしている。
【００８６】
〔Ｓ３ｄ〕スケジューラ２３は、リソース競合発生の可能性があるので、リソース競合の発生ありと認識する。
なお、競合判定テーブルＴ３の登録内容にもとづき、アシストプロセスの負荷がＣＰＵでない場合、他方の通常プロセスの負荷がＣＰＵであれば、リソース競合は発生しないが、通常プロセスの負荷がメモリ、ディスクの場合は、リソース競合が発生する。したがって、この状態では、通常プロセスの負荷は不明であるので、リソース競合発生の可能性があるとみなして、リソース競合発生ありとしている。
【００８７】
〔Ｓ３７〕スケジューラ２３は、競合判定テーブルＴ３を参照して、リソース競合が生じるか否かを判定する。具体的には、双方のプロセスの負荷が共にメモリまたはディスクであるか否かを判定し、共にメモリまたはディスクである場合はステップＳ３ｅへ行き、共にメモリまたはディスクでない場合はステップＳ３ｆへ行く。
【００８８】
〔Ｓ３ｅ〕スケジューラ２３は、リソース競合の発生ありと認識する。
〔Ｓ３ｆ〕スケジューラ２３は、リソース競合の発生なしと認識する。
上記のように、プロセス処理の実行時に共有されるリソースの競合が発生すると認識した場合は、アシストプロセスに実行権を与えない構成とした。これにより、コアの同時利用時に、リソース競合が生じた際のプロセスの実行時間が延びて、結果的にアンコア部５３のアクティブ状態の時間が長くなってしまうといった現象の発生を抑制することができる。
【００８９】
なお、上記では、アシストプロセスは事前にその負荷の種類が明らかになるが、通常プロセスの負荷の種類は、スケジューリング時に明らかになっていない場合がある。このため、ステップＳ３５において、通常プロセスの負荷の種類が通常プロセステーブルＴ２に登録されているか否かを判定している。
【００９０】
さらに、通常プロセスの負荷の種類が未登録の場合には、ステップＳ３６において、判定対象プロセスの中のアシストプロセスの負荷の判定処理を行い、負荷がＣＰＵであれば、共有リソースを利用しないので、リソース競合は起こらないと判定する。また、アシストプロセスの負荷がＣＰＵ以外の場合は、通常プロセスの実行に影響を与える可能性があるので、リソース競合が起こる可能性ありと判定している。
【００９１】
このように、通常プロセスの実行時に負荷のかかるリソースが不明であっても、アシストプロセスの負荷がＣＰＵ以外の場合は、通常プロセスとアシストプロセスとを実行した際にリソース競合が起こると判定される。そのため、リソース競合の発生の抑制を確実に行うことができる。
【００９２】
以上説明したように、情報処理装置１には、実行タイミングの調整が許容されているアシストプロセスが予め指定されている。そして情報処理装置１では、アシストプロセス以外の通常プロセスが、複数のコア部のうちの一部のコア部で実行されている期間に、未使用のコア部にアシストプロセスを実行させるように、アシストプロセスの実行タイミングを調整する構成とした。
【００９３】
これにより、アシストプロセスがアイドル時の任意のタイミングで実行される場合に比べて、アンコア部１２の省電力状態をより長く続けることができ、省電力化を実現することが可能になる。
【００９４】
なお、上記に示した処理機能は、コンピュータによって実現することができる。図１９は、本実施の形態に用いるコンピュータのハードウェアの一構成例を示す図である。コンピュータ１００は、ＣＰＵ１０１によって装置全体が制御されている。ＣＰＵ１０１には、バス１０８を介してＲＡＭ１０２と複数の周辺機器が接続されている。
【００９５】
ＲＡＭ１０２は、コンピュータ１００の主記憶装置として使用される。ＲＡＭ１０２には、ＣＰＵ１０１に実行させるＯＳ（Operating System）のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、ＲＡＭ１０２には、ＣＰＵ１０１による処理に必要な各種データが格納される。
【００９６】
バス１０８に接続されている周辺機器としては、ＨＤＤ１０３、グラフィック処理装置１０４、入力インタフェース１０５、光学ドライブ装置１０６、および通信インタフェース１０７がある。
【００９７】
ＨＤＤ１０３は、内蔵したディスクに対して、磁気的にデータの書き込みおよび読み出しを行う。ＨＤＤ１０３は、コンピュータ１００の二次記憶装置として使用される。ＨＤＤ１０３には、ＯＳのプログラム、アプリケーションプログラム、および各種データが格納される。なお、二次記憶装置としては、フラッシュメモリなどの半導体記憶装置を使用することもできる。
【００９８】
グラフィック処理装置１０４には、モニタ１０４ａが接続されている。グラフィック処理装置１０４は、ＣＰＵ１０１からの命令に従って、画像をモニタ１０４ａの画面に表示させる。モニタ１０４ａとしては、ＣＲＴ（Cathode Ray Tube）を用いた表示装置や液晶表示装置などがある。
【００９９】
入力インタフェース１０５には、キーボード１０５ａとマウス１０５ｂとが接続されている。入力インタフェース１０５は、キーボード１０５ａやマウス１０５ｂから送られてくる信号をＣＰＵ１０１に送信する。なお、マウス１０５ｂは、ポインティングデバイスの一例であり、他のポインティングデバイスを使用することもできる。他のポインティングデバイスとしては、タッチパネル、タブレット、タッチパッド、トラックボールなどがある。
【０１００】
光学ドライブ装置１０６は、レーザ光などを利用して、光ディスク１０６ａに記録されたデータの読み取りを行う。光ディスク１０６ａは、光の反射によって読み取り可能なようにデータが記録された可搬型の記録媒体である。光ディスク１０６ａには、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）、ＣＤ−Ｒ（Recordable）／ＲＷ（Re Writable）などがある。
【０１０１】
通信インタフェース１０７は、ネットワーク１１０に接続されている。通信インタフェース１０７は、ネットワーク１１０を介して、他のコンピュータまたは通信機器との間でデータの送受信を行う。
【０１０２】
以上のようなハードウェア構成によって、本実施の形態の処理機能を実現することができる。
以上、実施の形態を例示したが、実施の形態で示した各部の構成は同様の機能を有する他のものに置換することができる。また、他の任意の構成物や工程が付加されてもよい。
【符号の説明】
【０１０３】
１  情報処理装置
１１  プロセッサ
１１−１〜１１−ｎ  コア部
１２  アンコア部
２３  スケジューラ
【図１】
2013047892.tif 000003
【図２】
2013047892.tif 000004
【図３】
2013047892.tif 000005
【図４】
2013047892.tif 000006
【図５】
2013047892.tif 000007
【図６】
2013047892.tif 000008
【図７】
2013047892.tif 000009
【図８】
2013047892.tif 000010
【図９】
2013047892.tif 000011
【図１０】
2013047892.tif 000012
【図１１】
2013047892.tif 000013
【図１２】
2013047892.tif 000014
【図１３】
2013047892.tif 000015
【図１４】
2013047892.tif 000016
【図１５】
2013047892.tif 000017
【図１６】
2013047892.tif 000018
【図１７】
2013047892.tif 000019
【図１８】
2013047892.tif 000020
【図１９】
2013047892.tif 000021