(57)【要約】【課題】非対称型マルチプロセッサを、システムの破綻を起こすことなく、正常に停止させること【解決手段】管理リスト１６２は、各プロセッサがスリープ状態であるか否かを記憶する。システム停止部１６５は、管理リスト１６２を参照し、プロセッサの全てがスリープ状態であるシステム停止可能状態であるか否かを判断し、システム停止可能状態である場合にマルチプロセッサ１０を停止する。割込み状態通知部１６１は、システム停止部１６５によるシステム停止可能状態か否かの判断の前または同時に、外部からの割込み要求を制御する内部割込み制御部１５０に全てのプロセッサへの割込みの禁止を通知する。また、割込み状態通知部１６１は、システム停止部１６５によるシステム停止可能状態か否かの判断の後に、内部割込み制御部１５０に全てのプロセッサへの割込みの禁止の解除を通知する。【選択図】図１
2011107799.tif 000002
【特許請求の範囲】
【請求項１】
複数のプロセッサを備える非対称型マルチプロセッサの停止方法であって、
プロセッサの全てがスリープ状態であるシステム停止可能状態であるか否かを判断する場合に、全てのプロセッサへの割込みを禁止し、
前記システム停止可能状態である場合には、非対称型マルチプロセッサ自体を停止し、
前記システム停止可能状態ではない場合には、全てのプロセッサへの割込みの禁止を解除する、非対称型マルチプロセッサの停止方法。
【請求項２】
一のプロセッサがスリープ状態へ移行するスリープ状態通知を受け付けた場合、全てのプロセッサからのスリープ状態通知の受け付けを待ち状態とし、
前記割込み禁止の解除処理とともに、全てのプロセッサからのスリープ状態通知の受け付けを可能とする請求項１に記載の非対称型マルチプロセッサの停止方法。
【請求項３】
各プロセッサは、行うべき処理がなく、かつドライバソフトウェアが外部からの処理受け付け待ちではない場合に、前記スリープ状態通知を行うことを特徴とする請求項１または請求項２に記載の非対称型マルチプロセッサの停止方法。
【請求項４】
複数のプロセッサを備える非対称型マルチプロセッサであって、
プロセッサの全てがスリープ状態であるシステム停止可能状態であるか否かを判断する場合に、全てのプロセッサへの割込みを禁止し、
前記システム停止可能状態である場合には、非対称型マルチプロセッサ自体を停止し、
前記システム停止可能状態ではない場合には、全てのプロセッサへの割込みの禁止を解除するマルチプロセッサ停止手段、を備える非対称型マルチプロセッサ。
【請求項５】
前記マルチプロセッサ停止手段は、
各プロセッサがスリープ状態であるか否かを記憶する管理リストと、
前記管理リストを参照し、プロセッサの全てがスリープ状態であるシステム停止可能状態であるか否かを判断し、前記システム停止可能状態である場合にマルチプロセッサ自体を停止するシステム停止部と、
前記システム停止部によるシステム停止可能状態か否かの判断の前または同時に、外部からの割込み要求を制御する内部割込み制御部に対して、全てのプロセッサへの割込みの禁止を通知し、前記システム停止部により前記システム停止可能状態ではないと判断された場合に前記内部割込み制御部に全てのプロセッサへの割込みの禁止の解除を通知する割込み状態通知部と、
を備える請求項４に記載の非対称型マルチプロセッサ。
【請求項６】
前記マルチプロセッサ停止手段は、
一のプロセッサからスリープ状態へ移行することを通知するスリープ状態通知を受け付けた場合に、他のプロセッサからのスリープ状態通知の受け付けを保留し、前記スリープ状態通知を通知した一のプロセッサをスリープ状態にした後に、各プロセッサからのスリープ状態通知の受け付けを再開する受付部、を備える請求項４または請求項５に記載の非対称型マルチプロセッサ。
【請求項７】
前記マルチプロセッサ停止手段は、
前記スリープ状態通知を行ったプロセッサへの電力供給を停止し、前記管理リストを更新する内部電源制御部、を備える請求項４乃至請求項６に記載の非対称型マルチプロセッサ。
【請求項８】
各プロセッサが、  
ドライバソフトウェアからの通知を受け付けて、ドライバソフトウェアが動作中か否かを記憶するドライバ管理部と、
前記ドライバ管理部を参照して、スリープ可能状態と判断された場合に前記スリープ状態受付部に前記スリープ状態通知を行うＩＤＬＥモジュールと、を備えることを特徴とする請求項４乃至請求項７に記載の非対称型マルチプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はマルチプロセッサの割込み制御方法に関し、特に非対称型マルチプロセッサの割込み制御方法に関する。
【背景技術】
【０００２】
近年では、家電製品等に利用する組み込みシステムにマルチプロセッサを採用することが多い。マルチプロセッサの採用は、組み込みシステムの低クロック化、応答性の向上、消費電力の低減等に有利である。特に、携帯型の組み込みシステム、例えば携帯電話、ＰＤＡ（Personal Digital Assistant）等では、消費電力低減のためにマルチプロセッサを採用することが望まれる。
【０００３】
マルチプロセッサには、各ＣＰＵ（Central Processing Unit）に負荷を分散させる対称型マルチプロセッサ(ＳＭＰ, Symmetric Multiple Processor)と、各ＣＰＵに機能を分散させる非対称型マルチプロセッサ(ＡＭＰ, Asymmetric Multi Processor)と、の２種類がある。
【０００４】
対称型マルチプロセッサでは、ある一のＣＰＵが、他のＣＰＵであるクライアントＣＰＵを制御するマスターＣＰＵとなる。このマスターＣＰＵが、クライアントＣＰＵに処理を割り当てるか否かを決定する。マスターＣＰＵは、マルチプロセッサの動作中のある時点において動的に決定される。また、マスターＣＰＵがクライアントＣＰＵの停止及び起動を制御する。さらに、マスターＣＰＵは、マルチプロセッサ自体を停止する処理を行う。マルチプロセッサ自体が起動する際に、最初に起動するＣＰＵもマスターＣＰＵとなる。このように、クライアントＣＰＵの動作は、マスターＣＰＵによって制御される。すなわち、対称型マルチプロセッサでは、マスターＣＰＵと、クライアントＣＰＵと、が密接に関連づいた密結合の関係となる。
【０００５】
一方、非対称型マルチプロセッサでは、各ＣＰＵは、他のＣＰＵと連携を取りつつも、自己に割り当てられた機能を実現するために個々に独立した動作を行う。また、各ＣＰＵは、起動及びスリープを独立して行う。そのため、非対称型マルチプロセッサでは、対称型マルチプロセッサの場合と異なり、各ＣＰＵはマスターとクライアントという関係にはならない。各ＣＰＵは、他のＣＰＵによる動作の影響を受けることが少なく、各ＣＰＵ間の関係は疎結合となる。
【０００６】
非対称型マルチプロセッサではマスターＣＰＵが存在しないため、マルチプロセッサ自体を停止するＣＰＵは、停止の直前まで決定しない。そのため、非対称型マルチプロセッサにおいて、マルチプロセッサ自体の停止を行っている最中に他のＣＰＵが独自に起動しないように、最後に停止処理を行うＣＰＵが割込み制御を行う必要がある。
【０００７】
特許文献１には、並列処理の処理効率を向上させたマルチプロセッサシステムが開示されている。特許文献１に記載のマルチプロセッサシステムの構成を図８に示す。ハードウェアセマフォ部６００は、ハードウェアリソースを占有する処理をいずれのプロセッサ（Ｐ０〜Ｐ３）が優先的に実行するかを、セマフォを用いることで制御する。単位プロセッサＰ０があるハードウェアリソースを使用するために、対応するセマフォの取得を要求した場合、ハードウェアセマフォ部６００は、セマフォが取得中か否かを判断する。セマフォが取得中である場合、プロセッサＰ０はセマフォの取得をするために、待機状態となる。一方、セマフォが取得中ではない場合、ハードウェアセマフォ部６００はプログラム制御部７００に、セマフォの取得を許可する。セマフォの取得を行った単位プロセッサＰ０は、ハードウェアリソースを占有し、処理を実行する。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００７−１８８３９７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
一般に、非対称型マルチプロセッサにおいて、全てのＣＰＵがスリープ状態である場合には非対称型マルチプロセッサ自体の停止を行う。しかしながら、既存の非対称型マルチプロセッサに関する公知文献等において、スリープ状態に移行するＣＰＵが最後にスリープとなるＣＰＵか否かを判断する処理について詳しい技術開示がない。そのため、スリープ状態に移行するＣＰＵが最後にスリープ状態となるＣＰＵか否かを判断する場合に、全てのＣＰＵに対する割込みを禁止することが考慮されていない。ここで、あるＣＰＵが最後にスリープ状態となるＣＰＵか否かを判断している最中に、他のＣＰＵに割込みが発生して起動状態になった場合、起動状態のＣＰＵが存在するにもかかわらずマルチプロセッサ自体を停止してしまう可能性がある。これにより非対称型マルチプロセッサを有するシステムが破綻してしまう恐れがある。
【課題を解決するための手段】
【００１０】
本発明にかかる非対称型マルチプロセッサの停止方法の一態様は、複数のプロセッサを備える非対称型マルチプロセッサの停止方法であって、プロセッサの全てがスリープ状態であるシステム停止可能状態であるか否かを判断する場合に、全てのプロセッサへの割込みを禁止し、前記システム停止可能状態である場合には、非対称型マルチプロセッサ自体を停止し、前記システム停止可能状態ではない場合には、全てのプロセッサへの割込みの禁止を解除する、ものである。
【００１１】
本発明においては、全てのプロセッサがスリープ状態であり、かつ割込み処理を禁止した状態において、マルチプロセッサ自体の停止を行う。これにより、プロセッサが動作中に、マルチプロセッサ自体の停止を行うことがなくなる。
【発明の効果】
【００１２】
本発明によれば、非対称型マルチプロセッサを、システムの破綻を起こすことなく、正常に停止させることができる。
【図面の簡単な説明】
【００１３】
【図１】実施の形態１にかかるマルチプロセッサシステムの図である。
【図２】実施の形態１にかかるマルチプロセッサの処理を示すフローチャートである。
【図３】実施の形態１にかかるマルチプロセッサの処理を示すフローチャートである。
【図４】実施の形態１にかかるマルチプロセッサの処理を示すシーケンス図である。
【図５】実施の形態１にかかるマルチプロセッサの処理を示すシーケンス図である。
【図６】実施の形態２にかかるマルチプロセッサの処理を示すシーケンス図である。
【図７】実施の形態２にかかるマルチプロセッサの処理を示すシーケンス図である。
【図８】従来のマルチプロセッサシステムの図である。
【発明を実施するための形態】
【００１４】
実施の形態１
以下、図面を参照して本発明の実施の形態について説明する。まず、図１を参照して、本実施の形態にかかるマルチプロセッサの基本構成について説明する。マルチプロセッサ１０は、ＣＰＵ１００ａ〜ＣＰＵ１００ｎ（以下の記載では「ＣＰＵ１００」は、ＣＰＵ１００ａ〜１００ｎのいずれか一を示すものとする。）と、内部割込み制御部１５０と、パワー管理部１６０と、を備える。
【００１５】
ＣＰＵ１００は、ドライバ管理部１１０と、ＩＤＬＥモジュール１２０ａ〜１２０ｎ（以下の記載では「ＩＤＬＥモジュール１２０」は、ＩＤＬＥモジュール１２０ａ〜１２０ｎのいずれか一を示すものとする。）と、ドライバ群１３０と、アプリケーションＳＷ（Software）１４０と、を備える。ドライバ管理部１１０は、ドライバ群１３０に含まれる各ドライバの状態（"使用中"、"未使用"）を記憶する。
【００１６】
ＩＤＬＥモジュール１２０は、ＣＰＵ１００が実行すべき処理がなくなった場合に動作するモジュールである。ＩＤＬＥモジュール１２０は、ＣＰＵ１００が実行すべき処理がなくなった場合、ドライバ管理部１１０にドライバ群１３０の状況を問い合わせる。全てのドライバが"未使用"の状態であれば、ＩＤＬＥモジュール１２０は、パワー管理部１６０に該当ＣＰＵ１００がスリープ状態に移行する旨を通知する。一方、１つでもドライバが"使用中"の状態であれば、ＩＤＬＥモジュール１２０は、パワー管理部１６０に該当ＣＰＵ１００が"割込み待ち"状態であることを通知する。"割込み待ち"状態とは、ＣＰＵ１００が処理すべき処理がなく、Ｈ／Ｗ群４００ａ〜４００ｎのいずれか一からの処理を待っている状態を指す。なお、以下の記載では、「Ｈ／Ｗ群４００」は、Ｈ／Ｗ群４００ａ〜４００ｎのいずれか一を示すものとする。
【００１７】
ドライバ群１３０は、Ｈ／Ｗ群４００を制御するためのソフトウェアである。アプリケーションＳＷ１４０がＨ／Ｗ群４００を使用する場合、ドライバ群１３０はアプリケーションＳＷ１４０からリクエストを受け付け、外部電源制御部２００に通知を行う（図示せず）。アプリケーションＳＷ１４０は、コンピュータ上で動作する任意のアプリケーションソフトウェアである。
【００１８】
内部割込み制御部１５０は、ＣＰＵ１００に対する割込み処理を制御するための制御部である。内部割込み制御部１５０は、外部割込み制御装置３００からＣＰＵ１００への割込みのリクエストを受け付ける。内部割込み制御部１５０は、リクエストのあったＣＰＵ１００を起動状態にする。また、内部割込み制御部１５０は、起動状態にしたＣＰＵ１００の情報をパワー管理部１６０に通知する。
【００１９】
パワー管理部１６０は、割込み状態通知部１６１と、管理リスト１６２と、スリープ状態受付部１６３と、内部電源制御部１６４と、システム遮断部１６５と、を備える。割込み状態通知部１６１は、スリープ状態受付部１６３がＩＤＬＥモジュール１２０からのスリープ状態通知を受け付けた場合に、内部割込み制御部１５０に対して、全てのＣＰＵに対する割込みの禁止を要求する。また、あるＣＰＵをスリープ状態とした後に、全てのＣＰＵがスリープ状態ではなかった場合、割込み状態通知部１６１は、内部割込み制御部１５０に対して、全てのＣＰＵに対する割込みの許可を通知する。
【００２０】
管理リスト１６２は、すべてのＣＰＵ（ＣＰＵ１００ａ〜１００ｎ）の動作状態（スリープ状態か否か）を管理する。管理リスト１６２は、内部電源制御部１６４によりＣＰＵ１００への電力供給を遮断した際に更新される。また、内部割込み制御部１５０が起動状態にしたＣＰＵ１００の情報をパワー管理部１６０に通知した際にも、管理リスト１６２は更新される。
【００２１】
スリープ状態受付部１６３は、ＩＤＬＥモジュール１２０から状態（スリープ状態、または割込み待ち状態）通知を受け付ける。スリープ状態通知を受け付けた場合、スリープ状態受付部１６３は、割込み状態通知部１６１と、内部電源制御部１６４と、システム遮断部１６５と、にその旨を通知する。
【００２２】
内部電源制御部１６４は、すべてのＣＰＵ（ＣＰＵ１００ａ〜１００ｎ）に対して電源の供給を行う制御部である。内部電源制御部１６４は、 スリープ状態の通知を行ったＣＰＵ１００への電力供給を停止する。
【００２３】
システム遮断部１６５は、管理リスト１６２を参照し、全てのＣＰＵがスリープ状態か否かを判定する。全てのＣＰＵがスリープ状態である場合、システム遮断部１６５は、マルチプロセッサ１０の停止処理を実行する。
【００２４】
外部電源制御部２００は、外部割込み制御装置３００、及びＨ／Ｗ群４００ａ〜４００ｎに電力を供給するための制御部である。外部電源制御部２００は、ドライバ群１３０が使用するＨ／Ｗ群４００の情報を受け付け、該当するＨ／Ｗ群４００の電源の投入を行う。
【００２５】
外部割込み制御装置３００は、Ｈ／Ｗ群４００からＣＰＵ１００への割込み要求を受け付ける。外部割込み制御装置３００は、受け付けたリクエストを内部割込み制御部１５０に入力する。
【００２６】
Ｈ／Ｗ群４００ａ〜４００ｎは、マルチプロセッサ１０と接続可能な任意のハードウェアである。Ｈ／Ｗ群４００は、外部割込み制御装置３００に対し、ＣＰＵ１００への割込み要求を行う。
【００２７】
続いて、ＣＰＵ１００がＨ／Ｗ群４００を使用する場合の動作の流れを図２のフローチャートを用いて説明する。アプリケーションＳＷ１４０は、Ｈ／Ｗ群４００を使用する場合、ドライバ群１３０にリクエストを送信する（Ｓ２１）。
【００２８】
リクエストを受け付けたドライバ群１３０は、外部電源制御部２００に通知を行う（Ｓ２２）。外部電源制御部２００は、リクエストに対応するＨ／Ｗ群４００の電源を投入する。続いて、ドライバ群１３０は、ドライバ管理部１１０の該当ドライバの状態を"使用中"に更新する（Ｓ２３）。その後、ＣＰＵ１００は、Ｈ／Ｗ群４００を制御する（Ｓ２４）。ＣＰＵ１００によるＨ／Ｗ群４００の制御が終了した後に、ドライバ群１３０は、ドライバ管理部１１０の該当ドライバの状態を"未使用"に変更する（Ｓ２５）。また、ドライバ群１３０は、制御していたＨ／Ｗ群４００の情報を外部電源制御部２００に通知する。外部電源制御部２００は、通知にかかるＨ／Ｗ群４００の電源を遮断する（Ｓ２６）。
【００２９】
次に、各ＣＰＵにおいて実行すべき処理がなくなった場合の、マルチプロセッサ１０の動作の流れを図３のフローチャートを用いて説明する。各ＣＰＵにおいて、実行すべき処理がなくなった場合、ＩＤＬＥモジュール１２０が起動する（Ｓ３１）。ＩＤＬＥモジュール１２０は、ドライバ管理部１１０にドライバ群１３０の状態を問い合わせる（Ｓ３２）。全てのドライバが"未使用"の状態であれば、ＩＤＬＥモジュール１２０は、パワー管理部１６０に該当ＣＰＵ１００がスリープ状態に移行する旨を通知する（Ｓ３３）。一方、１つでもドライバが"使用中"の状態であれば、ＩＤＬＥモジュール１２０は、パワー管理部１６０に該当ＣＰＵ１００が"割込み待ち"状態であることを通知する（Ｓ３３）。
【００３０】
パワー管理部１６０内のスリープ状態受付部１６３は、ＩＤＬＥモジュール１２０から状態通知（スリープ状態、または割込み待ち状態）を受け付ける（Ｓ３４）。割込み待ち状態の通知を受け付けた場合、処理をそのまま終了する（Ｓ３５：Ｎｏ）。スリープ状態の通知を受け付けた場合（Ｓ３５：Ｙｅｓ）、スリープ状態受付部１６３は、他のＣＰＵからの状態通知の受付を保留する（Ｓ３６）。また、割込み状態通知部１６１を介して、内部割込み制御部１５０に、全てのＣＰＵに対する割込みの禁止を要求する（Ｓ３７）。内部割込み制御部１５０は、割込み禁止の要求に応じて、Ｈ／Ｗ群４００から外部割込み制御装置３００を介したＣＰＵ１００への割込みを全て禁止する（Ｓ３８）。ここで、スリープ状態受付部１６３による状態通知の受付処理（Ｓ３４）から、内部割込み制御部１５０による割込みの禁止処理（Ｓ３８）までの処理は、他の動作が実行されることがなく、必ず一続きに行われるアトミックな処理として動作させる。たとえば、当該一連の処理を１クロック内での処理とする。
【００３１】
続いて、内部電源制御部１６４は、スリープ状態の通知を行ったＣＰＵへの電力供給を停止する（Ｓ３９）。これにより、ＣＰＵをスリープ状態とすることができる。内部電源制御部１６４は、スリープ状態となったＣＰＵの情報を管理リスト１６２に反映する（Ｓ４０）。
【００３２】
スリープ状態の通知を行ったＣＰＵをスリープ状態とした後に、システム遮断部１６５は、管理リスト１６２を参照し、全てのＣＰＵがスリープ状態か否かを判定する（Ｓ４１）。全てのＣＰＵがスリープ状態である場合（Ｓ４１：Ｙｅｓ）、システム遮断部１６５は、マルチプロセッサ１０の停止処理を実行する（Ｓ４２）。ここで、システム遮断部１６５による全てのＣＰＵがスリープ状態か否かの判定処理（Ｓ４１）から、システム遮断部１６５によるマルチプロセッサ１０の停止処理（Ｓ４２）までの処理は、他の動作が実行されることがなく、必ず一続きに行われるアトミックな処理として動作させる。たとえば、当該一連の処理を１クロック内での処理とする。
【００３３】
一方、全てのＣＰＵがスリープ状態ではない場合（Ｓ４１：Ｎｏ）、割込み状態通知部１６１は、内部割込み制御部１５０に全てのＣＰＵに対する割込みの許可を通知する（Ｓ４３）。内部割込み制御部１５０は、割込み許可の通知に応じて、Ｈ／Ｗ群４００から外部割込み制御装置３００を介したＣＰＵ１００への割込みを許可する（Ｓ４４）。また、スリープ状態受付部１６３は、他のＣＰＵからの状態通知の受付を再開する（Ｓ４５）。ここで、システム遮断部１６５による全てのＣＰＵがスリープ状態か否かの判定処理（Ｓ４１）から、スリープ状態受付部１６３による状態通知の受付の再開処理（Ｓ４５）までの処理は、他の動作が実行されることのなく、必ず一続きに行われるアトミックな処理として動作させる。たとえば、当該一連の処理を１クロック内での処理とする。
【００３４】
次に、図４、及び図５のシーケンス図を用いて本実施の形態にかかるマルチプロセッサシステムの動作を説明する。図４、及び図５は、ＣＰＵを３つ備えるマルチプロセッサシステムを想定する。なお、図４、及び図５において、点線で囲った処理は、アトミックな処理を示す。
【００３５】
図４においては、ＣＰＵがそれぞれ間隔を空けてスリープ状態に遷移している。具体的には、ＣＰＵ１がスリープ状態になった後に、ＣＰＵ２のＩＤＬＥモジュールが起動している。また、ＣＰＵ２がスリープ状態になった後に、ＣＰＵ３のＩＤＬＥモジュールが起動している。パワー管理部１６０は、各ＣＰＵからスリープ状態通知を受け付けた後に、他のＣＰＵからの要求の保留、割込み禁止要求、ＣＰＵ電力停止、及びＣＰＵ割込み禁止解除要求またはマルチプロセッサ１０の停止（ＨＡＬＴ）を行っている。ここで、マルチプロセッサ１０を停止する際には、各ＣＰＵへの割込みが禁止された状態となっている。
【００３６】
図５は、ＣＰＵのＩＤＬＥモジュールがほぼ同時に動作する場合の動作を示すシーケンス図である。ＣＰＵ２のＩＤＬＥモジュールは、ＣＰＵ１の電力供給停止前にスリープ状態通知を行っている。ここで、パワー管理部１６０は、ＣＰＵからの通知保留を行っているため、ＣＰＵ２の電力停止作業は、待ち状態となる。パワー管理部１６０は、ＣＰＵ１に関する一連の処理が終了した後に、ＣＰＵ２についての電力停止作業に移行する。また、ＣＰＵ３に関しても同様に、ＣＰＵ２に関する一連の処理が終了した後に、ＣＰＵ３についての電力停止作業に移行する。パワー管理部１６０は、最後に動作中であったＣＰＵ３の電力供給を停止した後に、マルチプロセッサ１０を停止（ＨＡＬＴ）している。ここで、マルチプロセッサ１０を停止する際には、各ＣＰＵへの割込みが禁止された状態となっている。
【００３７】
次に、本実施の形態におけるマルチプロセッサの効果について説明する。上述のように、パワー管理部１６０が全てのＣＰＵがスリープ状態か否かを判断する際に、全てのＣＰＵに対する割込み処理が禁止されている。全てのＣＰＵがスリープ状態であれば、パワー管理部１６０は各ＣＰＵに対する割込み処理の禁止したまま、マルチプロセッサ１０の停止処理を行う。これにより、各ＣＰＵがスリープ状態のままマルチプロセッサ１０を停止することができる。言い換えると、ＣＰＵが動作中にもかかわらずマルチプロセッサ１０を停止してしまう、という問題が解決される。
【００３８】
本実施の形態にかかる非対称型マルチプロセッサは、ＣＰＵがスリープ状態に移行する場合に、当該ＣＰＵ内のＩＤＬＥモジュールが他のＣＰＵへの割込み処理禁止を通知する構成にも適応可能である。以下に具体例を示す。
【００３９】
図６、及び図７は、各ＣＰＵが割り込み禁止通知を行うＩＤＬＥモジュールを備えている場合の処理を示すシーケンス図である。図６、及び図７は、ＣＰＵを３つ備えるマルチプロセッサシステムを想定する。
【００４０】
図６は、ＣＰＵ１、ＣＰＵ２、ＣＰＵ３の順番でスリープ状態とし、マルチプロセッサシステムを停止（ＨＡＬＴ）させる処理を示している。ＩＤＬＥモジュールは、（１）全てのＣＰＵに対して割込み処理の禁止、（２）セマフォの取得、（３）最後にスリープ状態となるＣＰＵか否かを判断、（４）セマフォの解放、（５）全てのＣＰＵに対して割込み処理の許可、という処理を行う。なお、最後にスリープ状態となるＣＰＵである場合、当該ＣＰＵは割込み処理の許可を行わない。また、最後にスリープ状態となるＣＰＵである場合、当該ＣＰＵは非対称型マルチプロセッサの停止処理も行う。
【００４１】
図６においては、ＣＰＵ１がスリープ状態になった後に、ＣＰＵ２のＩＤＬＥモジュールが起動している。また、ＣＰＵ２がスリープ状態になった後に、ＣＰＵ３のＩＤＬＥモジュールが起動している。ここで、ＣＰＵ３のＩＤＬＥモジュールの動作中は、外部から各ＣＰＵへの割込みが禁止されている。そのため、各ＣＰＵがＩＤＬＥモジュールを有する構成であれば、マルチプロセッサシステムを正常に停止（ＨＡＬＴ）させることが可能である。
【００４２】
図７は、各ＣＰＵのＩＤＬＥモジュールが同時に動作する場合の処理を示している。ＣＰＵ１のＩＤＬＥモジュールが正常に動作した後に、ＣＰＵ１はスリープ状態となる。次に、ＣＰＵ２のＩＤＬＥモジュールが動作し、その後、ＣＰＵ２のＩＤＬＥモジュールの処理が終了する前に、ＣＰＵ３のＩＤＬＥモジュールが動作し始めている。
【００４３】
ここで、ＣＰＵ３のＩＤＬＥモジュールが行った全てのＣＰＵに対する割込み処理の禁止命令が、ＣＰＵ２のＩＤＬＥモジュールの全てのＣＰＵに対する割込み処理の解除命令により解除されてしまう。そのため、ＣＰＵ３のＩＤＬＥモジュールの動作中にもかかわらず、全てのＣＰＵに対する割込み処理が可能な状態となる。ここで、例えばＣＰＵ２に対して割込み処理が発生した場合、ＣＰＵ２はスリープ状態から起動状態に遷移する。この場合、ＣＰＵ３のＩＤＬＥモジュールによるシステム停止（ＨＡＬＴ）処理が発生すると、ＣＰＵ２が起動中にもかかわらず、システムが停止してしまう。この場合は、システムの破綻を招く恐れがある。
【００４４】
よってこの構成の場合、各ＣＰＵが実施の形態１におけるパワー管理部１６０相当の処理を実行する構成とすれば上記の問題が解決できる。たとえば、各ＣＰＵがスリープ状態となる前に全てのＣＰＵへの割込み禁止を通知し、他のＣＰＵが、当該ＣＰＵがスリープ状態になったか否かを監視し、スリープ状態となった後に全てのＣＰＵへの割込みの許可を通知する。また、各ＣＰＵは独自に管理リストを備え、全てのＣＰＵの状態を記憶する。これにより、上記のシステム破綻の問題が回避できる。
【００４５】
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。
【符号の説明】
【００４６】
１０    マルチプロセッサ
１００ａ〜１００ｎ  ＣＰＵ
１１０  ドライバ管理部
１２０ａ〜１２０ｎ  ＩＤＬＥモジュール
１３０  ドライバ群
１４０  アプリケーションＳＷ（SoftWare）
１５０  内部割込み制御部
１６０  パワー管理部
１６１  割込み状態通知部
１６２  管理リスト
１６３  スリープ状態受付部
１６４  内部電源制御部
１６５  システム遮断部
２００  外部電源制御部
３００  外部割込み制御装置
４００ａ〜４００ｎ  Ｈ／Ｗ群
【図１】
2011107799.tif 000003
【図２】
2011107799.tif 000004
【図３】
2011107799.tif 000005
【図４】
2011107799.tif 000006
【図５】
2011107799.tif 000007
【図６】
2011107799.tif 000008
【図７】
2011107799.tif 000009
【図８】
2011107799.tif 000010