(57)【要約】【課題】非プリエンプタブルなデータ参照者に影響する共用データ要素の更新動作の後に、猶予期間の低電力検出のための技術を提供する。【解決手段】実装される猶予期間処理アクションは、さらなる猶予期間処理を進めることができる前に、共用データ要素の非プリエンプタブルな参照者を実行中のプロセッサが、静止状態を通過することを必要とする。また、プロセッサの電力状況が決定される。もし、前記電力状況が、前記プロセッサによる静止状態処理が不要であることを指示すれば、前記プロセッサが静止状態を通過することを必要とすることなく、さらなる猶予期間処理を進めることができる。【選択図】  図１２
2010033556.tif 000002
【特許請求の範囲】
【請求項１】
非プリエンプタブルなデータ参照者に影響する共用データ要素の更新動作の後に、猶予期間の低電力検出のための方法であって、
さらなる猶予期間処理を進めることができる前に、前記共用データ要素の非プリエンプタブルな参照者を実行中のプロセッサが静止状態を通過することを必要とする、猶予期間処理アクションを実装するステップにして、前記静止状態が、前記参照者が前記さらなる猶予期間処理によって影響されないことを保証するものであるステップと、
前記プロセッサの電力状況を決定するステップと、
前記プロセッサによる静止状態処理が不要であることを前記電力状況が指示する場合は、前記プロセッサが前記静止状態を通過することを必要とすることなく、前記さらなる猶予期間処理を進めるステップとを含む、方法。
【請求項２】
前記電力状況が、前記プロセッサの非低電力状態又は低電力状態の何れかを含む、請求項１記載の方法。
【請求項３】
前記低電力状態が、前記プロセッサのダイナミック・ティック・タイマ・モードを含む、請求項２記載の方法。
【請求項４】
前記電力状況が、前記プロセッサの現在の電力状態によって決定され、前記現在の電力状態が低電力状態である場合は、前記静止状態を通過したものとして前記プロセッサが指定される、請求項１記載の方法。
【請求項５】
前記電力状況が、前記プロセッサが低電力状態に入るか又は低電力状態から出るときに、前記プロセッサによって操作される電力状況標識から決定される、請求項１記載の方法。
【請求項６】
前記さらなる猶予期間処理が、前記共用データ要素を解放すること、前記共用データ要素を解放するコールバックを処理すること又は前記共用データ要素によって決定される動作モードを変更することを含む、請求項１記載の方法。
【請求項７】
非プリエンプタブルなデータ参照者に影響する共用データ要素の更新動作の後に、猶予期間の低電力検出のためのシステムであって、
１つ以上のプロセッサと、
前記１つ以上のプロセッサに結合されたメモリとを備え、
前記メモリ内に格納された少なくとも１つのプログラムの命令が、前記１つ以上のプロセッサに
さらなる猶予期間処理を進めることができる前に、前記共用データ要素の非プリエンプタブルな参照者を実行中のプロセッサが静止状態を通過することを必要とする、猶予期間処理アクションを実装するステップにして、前記静止状態が、前記参照者が前記さらなる猶予期間処理によって影響されないことを保証するものであるステップと、
前記プロセッサの電力状況を決定するステップと、
前記プロセッサによる静止状態処理が不要であることを前記電力状況が指示する場合は、前記プロセッサが前記静止状態を通過することを必要とすることなく、前記さらなる猶予期間処理を進めるステップとを実行させる、システム。
【請求項８】
請求項１ないし請求項６の何れか１項に記載の方法の各ステップをコンピュータに実行させるためのコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ資源が複数の消費者間で同時に共用される際に、各消費者に関するデータの完全性及び一貫性を維持するようにしたコンピュータ・システム及び方法に係り、さらに詳細に説明すれば、低電力状態を呈することがあるプロセッサを有する非プリエンプティブ・リアルタイム・コンピュータ環境において、「読み取り・コピー・更新」（read-copy-update：以下「ＲＣＵ」と略記）として知られている相互排他機構を実装することに係る。
【背景技術】
【０００２】
ＲＣＵ技術とは、ロック、共用メモリへの書き込み、メモリ・バリア、アトミック命令又は計算コストが高い他の同期機構を使用することなく、読み取りのために共用データにアクセスすることを可能にするとともに、当該データを同時に更新（修正、削除、挿入）することを可能にする相互排他技術である。ＲＣＵ技術を使用するのに特に適したマルチプロセッサ・コンピュータ環境とは、共用データセットにアクセスする読み取り動作（参照者）の数が更新動作（更新者）の数より大きく、しかも各読み取り動作のために他の相互排他技術（例えば、ロック）を使用するオーバーヘッド・コストが高い、というものである。例えば、読み取り側のロック獲得が著しい負担となるケースは、数分おきに１回だけ更新されるが、毎秒数千回も検索されるようなネットワーク経路指定テーブルである。
【０００３】
ＲＣＵ技術は、データ更新を２つの段階で実装する。第１（初期更新）段階では、実際のデータ更新は、更新中データの２つのビューを一時的に保存するという態様で実行される。１つのビューは、当該更新と同時に当該データを参照中の読み取り動作のために維持される、古い（更新前の）データ状態である。他のビューは、当該更新の後に当該データにアクセスする動作のために使用可能な、新しい（更新後の）データ状態である。これらの他の読み取り動作が、古いデータを見出すことはなく、従って更新者はそれらに関心を払う必要はない。しかし、更新者は、第１グループの読み取り動作が参照中の古いデータを早期に除去しないようにする必要がある。従って、第２（遅延型更新）段階では、古いデータ状態は、「猶予期間」の後にだけ除去される。「猶予期間」は、第１グループの読み取り動作がもはや更新前のデータへの参照を維持しないであろうということを保証するように十分に長くなっている。第２段階の更新動作は、典型的には、古いデータ要素を解放することを含む。特定のＲＣＵ実装では、第２段階の更新動作は、第１段階の更新に従った動作状態を変更するような、他の操作を含むことがある。
【０００４】
図１〜図４は、１グループのデータ要素Ａ〜Ｃのうちデータ要素Ｂを修正する場合の、ＲＣＵ機構の使用例を示す。データ要素Ａ〜Ｃは、循環的に探索される単方向連結リスト内に配列され、その各要素は、データの或るアイテムを格納することに加えて、当該リスト内の次の要素へのポインタ（最後の要素の場合はヌル・ポインタ）を保持する。グローバル・ポインタ（図示せず）が、当該リストの第１のメンバである、データ要素Ａを指すものと仮定する。当業者には明らかなように、データ要素Ａ〜Ｃは、Ｃ言語の「struct」変数によって定義されるデータ構造を含む、種々の伝統的プログラミング構文のうち任意のものを使用して実装することができる。
【０００５】
ここで、図１〜図４の単方向連結リストが、複数の参照者によって（ロックなしで）同時に探索され、そして当該リスト内のデータ要素を削除、挿入又は修正する更新者によって時々更新されるものと仮定する。図１では、データ要素Ｂの下部にある矢印によって示すように、参照者ｒ１がデータ要素Ｂを参照中である。図２では、更新者ｕ１は、データ要素Ｂを修正することにより、連結リストを更新することを望んでいる。参照者ｒ１がデータ要素Ｂを参照中であるという事実を考慮することなくデータ要素Ｂを単に更新する代わりに（そのようにすると、参照者ｒ１を破壊することがある）、更新者ｕ１は、データ要素Ｂを保存し、他方、その更新バージョン（図３のデータ要素Ｂ’）を生成し且つ当該更新バージョンを連結リスト内に挿入する。具体的には、更新者ｕ１は、適切なロックを獲得し、データ要素Ｂ’用の新しいメモリを割り振り、データ要素Ｂの内容をデータ要素Ｂ’にコピーし、必要に応じてデータ要素Ｂ’を修正し、データ要素Ｂ’を指すようにＡからＢへのポインタを更新し、ロックを解除する。ロッキングの代替手段として、複数のデータ更新を直列化するために、非ブロッキング同期又は指定された更新スレッドのような他の技術を使用することができる。連結リストを探索する後続（更新後）の全ての参照者（例えば、参照者ｒ２）は、データ要素Ｂ’に遭遇することにより、更新動作の結果を見出すであろう。他方、古い参照者ｒ１は、データ要素Ｂの原バージョン及びデータ要素Ｃへのそのポインタが保存されるという理由で、影響を受けないであろう。参照者ｒ１は、現に古いデータを読み取り中であるが、これを許容することができる多くのケースが存在する。１例を挙げると、データ要素がコンピュータ・システムの外部にあるコンポーネントの状態（例えば、ネットワーク接続性）を追跡するときは、通信遅延のために古いデータを許容しなければならない。
【０００６】
前記更新後の或る時間に、参照者ｒ１は、連結リストの探索を継続し、そしてデータ要素Ｂのその参照から移動しているであろう。さらに、他の如何なる参照者プロセスも、データ要素Ｂにアクセスする資格を有さない時点が存在するであろう。この時点は、前述の猶予期間の満了を表し、図４に示すように、この時点で、更新者ｕ１は、データ要素Ｂを解放することができる。
【０００７】
図５〜図７は、単方向連結リスト内のデータ要素Ａ〜Ｃのうちデータ要素Ｂを削除する場合の、ＲＣＵ機構の使用例を示す。図５に示すように、参照者ｒ１が現にデータ要素Ｂを参照中であり、そして更新者ｕ１がデータ要素Ｂを削除することを望んでいるものと仮定する。図６に示すように、更新者ｕ１は、データ要素Ａがデータ要素Ｃを指すようにＡからＢへのポインタを更新する。このように、参照者ｒ１は、妨害されないが、後続の参照者ｒ２は、削除の結果を見出す。図７に示すように、参照者ｒ１は、その後にデータ要素Ｂのその参照から移動し、その結果、猶予期間の満了後にデータ要素Ｂを解放することを許容するであろう。
【０００８】
ＲＣＵ機構の文脈では、猶予期間は、ＲＣＵ機構によって保護されたデータ要素にアクセスする全ての実行中プロセス（又はプロセス内のスレッド）が、「静止状態」を通過した時点を表す。なお、この「静止状態」では、これらの実行中プロセス（又はプロセス内のスレッド）は、もはや当該データ要素への参照を維持したり、当該データ要素上のロックを表明したり、或いはデータ要素の状態に関する如何なる仮定も行うことができない。規約により、オペレーティング・システムのカーネル・コード・パス、コンテキスト（プロセス）スイッチ、アイドル・ループ及びユーザ・モードの実行については、その全ては、非プリエンプタブル・コード（他の同様の動作は省略）を実行中の所与のＣＰＵのための静止状態を表す。プリエンプタブルな参照者に適した幾つかのＲＣＵ実装では、ＲＣＵ読み取り側のクリティカル・セクションの外部にある全ての読み取り動作は、静止状態である。
【０００９】
図８では、４つの別個のＣＰＵ上で実行中のプロセス０〜３は、（２重の垂直バーによって表された）静止状態を定期的に通過するように示されている。猶予期間は、プロセス０〜３の全てがそれぞれ１つの静止状態を通過する、時間フレームを包含する。もし、プロセス０〜３が、図１〜図４又は図５〜図７の単方向連結リストを探索する参照者プロセスであれば、猶予期間の前に古いデータ要素Ｂを参照していたどのプロセスも、猶予期間の後は、当該古いデータ要素Ｂへの参照を維持することができないであろう。これらのプロセスによって行われる猶予期間後の全ての探索は、更新者によって挿入されたリンクを辿って、データ要素Ｂをバイパスするであろう。
【００１０】
猶予期間後に遅延型データ更新を実装するために使用することができる、種々の方法が存在する。その１つは、米国特許第５４４２７５８号明細書に記載のコールバック処理を使用するものである。一般的に使用される他の技術は、猶予期間が完了するまで、更新者を阻止（待機）させるというものである。
【００１１】
前述の説明から明らかなように、ＲＣＵ同期技術の基本的な動作は、特定の猶予期間の完了に関連する全ての参照者を待機させることを必要とする。従って、ＲＣＵのマルチプロセッサ実装は、他のプロセッサによって実行されるアクションの影響を監視しなければならない。ＲＣＵの非プリエンプタブルな変形は、参照者がプリエンプション及び再スケジューリングを回避することを必要とする。正常な猶予期間処理は、各参照者のプロセッサ上の実行が静止状態を通過するのを待機させることにより、保証することができる。しかし、ＲＣＵ実装は、静止状態に到達した時点を検出するように、それらのプロセッサを調整することを必要とする。さらに、ＲＣＵ実装は、各プロセッサを待機させるのではなく、できるだけ早く静止状態に入るように各プロセッサを強制することを選択することがある。このことが生じるのは、待機時間が長すぎるか、又は待機中のプロセッサが多すぎることをＲＣＵ実装が決定する場合である。
【００１２】
非プリエンプタブルな参照者のために使用される従来のＲＣＵ実装は、プロセッサの電力状態を考慮していない。最近のプロセッサは、低電力状態（例えば、インテル（登録商標）プロセッサ上のＣ１Ｅ停止状態、Ｃ２停止状態等）から大きな恩恵を受けている。これらの低電力状態は、より長いウェイクアップ待ち時間を有する。このため、頻繁にウェイクアップすることを強制されるならば、プロセッサ及びオペレーティング・システムは、これらの状態に入ることを選択しない。リナックス（登録商標）カーネルの現行バージョンに搭載されているダイナミック・ティック（dynamic tick）フレームワーク（「dyntick」又は「nohz」とも呼ばれるもの）のような機構を有するオペレーティング・システムは、通常のタイマ割り込み（不要なウェイクアップの原因）の必要性を回避し、その代わりに、作業を実行する必要があるときにのみプロセッサをウェイクアップすることにより、低電力状態を一層良好に使用することができる。従って、ウェイクアップし且つ作業を実行するように他のプロセッサに強制するＲＣＵ実装は、待ち時間がより長い低電力状態を有するプロセッサ上でより大きな電力を消費することに帰着する。その結果、バッテリ電源式システム（例えば、ラップトップ及び組み込みシステム）のバッテリ寿命が減少し、電力消費量がより大きくなり（大型のデータ・センタについては特に問題）、発熱量が増大し、さらには環境に優しい「グリーン」システムのための種々の基準を順守することが著しく困難となる。
【先行技術文献】
【特許文献】
【００１３】
【特許文献１】米国特許第５４４２７５８号明細書
【発明の概要】
【発明が解決しようとする課題】
【００１４】
従って、前述の問題を解決するためには、ＲＣＵの猶予期間処理中に、不要なウェイクアップを回避することが望ましい。
【課題を解決するための手段】
【００１５】
非プリエンプタブルなデータ参照者に影響する共用データ要素の更新動作の後に、猶予期間の低電力検出のための方法、システム及びコンピュータ・プログラムが提供される。実装される猶予期間処理アクションは、さらなる猶予期間処理を進めることができる前に、共用データ要素の非プリエンプタブルな参照者を実行中のプロセッサが、静止状態を通過することを必要とする。また、前記プロセッサの電力状況が決定される。もし、前記電力状況が、前記プロセッサによる静止状態の処理が不要であることを指示すれば、前記プロセッサが静止状態を通過することを必要とすることなく、さらなる猶予期間処理を進めることができる。
【発明の効果】
【００１６】
本発明は、１つ以上のプロセッサの電力状況が静止状態処理を必要とするようなものでない場合は、それらのプロセッサの不要なウェイクアップを回避することができるという効果を奏する。
【図面の簡単な説明】
【００１７】
【図１】従来のＲＣＵ機構に従った、単方向連結リスト内の１グループのデータ要素のうち一のデータ要素を置換するための一連の動作を例示する図である。
【図２】従来のＲＣＵ機構に従った、単方向連結リスト内の１グループのデータ要素のうち一のデータ要素を置換するための一連の動作を例示する図である。
【図３】従来のＲＣＵ機構に従った、単方向連結リスト内の１グループのデータ要素のうち一のデータ要素を置換するための一連の動作を例示する図である。
【図４】従来のＲＣＵ機構に従った、単方向連結リスト内の１グループのデータ要素のうち一のデータ要素を置換するための一連の動作を例示する図である。
【図５】従来のＲＣＵ機構に従った、単方向連結リスト内の１グループのデータ要素のうち一のデータ要素を削除するための一連の動作を例示する図である。
【図６】従来のＲＣＵ機構に従った、単方向連結リスト内の１グループのデータ要素のうち一のデータ要素を削除するための一連の動作を例示する図である。
【図７】従来のＲＣＵ機構に従った、単方向連結リスト内の１グループのデータ要素のうち一のデータ要素を削除するための一連の動作を例示する図である。
【図８】従来技術に従った、猶予期間内に、４つのプロセスが静止状態を通過する態様を例示する図である。
【図９】本発明に従った、猶予期間処理を実装するための例示的な環境を表す、マルチプロセッサ・コンピュータ・システムを示すブロック図である。
【図１０】図９のマルチプロセッサ・コンピュータ・システムの各プロセッサによって実装される、ＲＣＵサブシステムを示すブロック図である。
【図１１】図９のマルチプロセッサ・コンピュータ・システムの各プロセッサによって実行される、電力状況通知処理を例示するフローチャートである。
【図１２】図９のマルチプロセッサ・コンピュータ・システムの各プロセッサによって実行される、猶予期間処理を例示するフローチャートである。
【図１３】本発明に従った猶予期間処理を実装するためのコンピュータ・プログラムを提供するために使用されるコンピュータ可読媒体を示す図である。
【発明を実施するための形態】
【００１８】
図９は、本発明の低電力技術をその内部で実装することができる、コンピュータ環境を例示する。具体的には、対称型マルチプロセッサ（ＳＭＰ）コンピュータ・システム２が図示され、その内部にある複数のプロセッサ４１〜４ｎは、共通システム・バス６を介して共用メモリ８に接続される。プロセッサ４１〜４ｎに関連して、通常のキャッシュ・メモリ１０１〜１０ｎ及び通常のキャッシュ・コントローラ１２１〜１２ｎがそれぞれ設けられる。通常のメモリ・コントローラ１４が、共用メモリ８に関連する。コンピュータ・システム２は、ＳＭＰ環境内で使用するのに適した、単一のマルチタスキング・オペレーティング・システムの管理下にあるものと仮定する。
【００１９】
また、カーネル又はユーザ・モードのプロセス、スレッド又は他の実行コンテキスト内で実行される更新動作が、共用メモリ８内に格納された１セットの共用データ１６の定期的な更新を実行するものと仮定する。参照番号１８１〜１８ｎは、プロセッサ４１〜４ｎ上で定期的に実行される、個別的なデータ更新動作（更新者）を示す。前述の背景技術の項で説明したように、データ更新者１８１〜１８ｎによって実行される更新は、連結リストの要素を修正し、当該リストに新しい要素を挿入し、当該リストから要素を削除することに加えて、他の多くのタイプの動作を含むことができる。かかる更新を促進するために、プロセッサ４１〜４ｎは、それらのオペレーティング・システム又はユーザ・アプリケーション機能の一部としてそれぞれのＲＣＵインスタンス２０１〜２０ｎを定期的に実行することにより、ＲＣＵサブシステム２０を実装するようにプログラムされる。また、プロセッサ４１〜４ｎは、共用データ１６上で、読み取り動作（参照者）２１１〜２１ｎを定期的に実行する。かかる読み取り動作は、典型的には、更新よりも遙かに多く実行されるであろう。これがＲＣＵの使用の基礎となる前提のうちの１つである。
【００２０】
ＲＣＵサブシステム２０によって実行される諸機能の１つは、共用データ要素への既存の参照が除去されるまで、当該共用データ要素の破壊を遅延させるための猶予期間処理である。この処理は、古いデータ要素を安全に解放する時点をＲＣＵサブシステム２０が認知するように、新しい猶予期間を開始し且つ古い猶予期間の終わりを検出することを必要とする。非プリエンプタブルな参照者を処理するように設計されたＲＣＵ実装（以下「非プリエンプタブルなＲＣＵ」と称する）では、猶予期間を追跡するため、ＲＣＵ参照者を実行中の各プロセッサが、静止状態を通過することを必要とする。例えば、ＲＣＵ更新者は、データ要素を更新した後に、残りの全てのプロセッサにプロセッサ間割り込み（ＩＰＩ）を送る。このＩＰＩは、（低電力状態にある）各プロセッサをウェイクアップし、そして割り込みハンドラは、当該プロセッサが再スケジュールすべきであることを指示する、フラグをセットするためのコードを実行する。代替的に、ＲＣＵ更新者は、データ要素を更新した後に、他のプロセッサ上で実行するスレッド又はデーモンをスケジュールすることにより、コンテキスト・スイッチを実行するように当該プロセッサを強制する。さらに他の例では、更新者は、データ要素を更新した後に、残りのプロセッサごとに１ビットを保持する、静止状態ビット・マスクをセットする。所与のプロセッサが静止状態に達するたびに、当該プロセッサは、当該ビット・マスク内のそのビットをクリアする。全てのビットがクリアされるとき、猶予期間が満了する。
【００２１】
ＲＣＵ猶予期間処理の他の例では、更新者は、共用データ要素を更新した後に、プロセッサ対応のコールバック・リスト上にコールバックをエンキューする。或る数のコールバックが累積した後、このプロセッサは、他の全てのプロセッサに対し、静止状態を通過するように要求する。各プロセッサが当該要求を確認すると、当該プロセッサは、静止状態が検出されるたびにインクリメントされる、プロセッサ対応の１つ以上の静止状態カウンタのスナップ・ショットを取る。各プロセッサは、そのスナップ・ショットをそのカウンタの現在値と定期的に比較する。任意のカウンタがスナップ・ショットと相違するとすぐに、当該プロセッサは、当該プロセッサが静止状態を通過したことを記録する。静止状態を通過したことを最後に記録するプロセッサは、猶予期間が終了したことも記録する。最初のプロセッサが猶予期間の終了を確認するとき、当該プロセッサは、猶予期間の終了を待機していたその全てのコールバックを実行する。前述の例の変形では、コールバックを処理する必要のあるプロセッサは、プロセッサ対応のカウンタをインクリメントし、トークン・パッシング・サイクルを開始する。隣接プロセッサが、前記インクリメントされたカウンタがそれ自体のプロセッサ対応のカウンタよりも大きいことを確認するとき、当該プロセッサは、そのカウンタを隣接プロセッサのカウンタより１だけ大きい値にインクリメントする。この処理は、前記トークンが最初のプロセッサに還流するまで各プロセッサ上で実行され、その時点で、このプロセッサは、前記トークンが最初にパスされたときに未処理であった全てのコールバックを処理する。
【００２２】
当業者には明らかなように、前述の猶予期間処理技術の各々は、低電力状態のプロセッサ動作と適合していない。というのは、プロセッサがスリープしているときは、猶予期間の進行に必要な静止状態処理が実行されないからである。もし、猶予期間処理を駆動するために通常のクロック・タイマ割り込みが必要とされるならば、ダイナミック・ティックのような比較的軽い低電力状態でさえ問題となることがある。
【００２３】
低電力状態のプロセッサ動作をサポートするため、図９のＲＣＵサブシステム２０は、低電力状態にあるプロセッサの不要なウェイクアップを回避するように適合されている。特に、ＲＣＵサブシステム２０は、プロセッサの低電力状態が、当該プロセッサ上で如何なるＲＣＵ参照者も実行不能であることを意味すれば、当該プロセッサの低電力状態を静止状態として解釈する。これは、非プリエンプタブルなＲＣＵのケースであろう。というのは、実行可能なタスクを有するプロセッサは、低電力状態に入らず、そして非プリエンプタブルなＲＣＵ参照者は、それらが静止状態を通過するまで、常に実行可能に留まるからである。従って、ＲＣＵサブシステム２０は、低電力状態にあるプロセッサがアクティブなＲＣＵ参照者を有しておらず、従って当該プロセッサをウェイクアップする必要はないことを仮定する。
【００２４】
ＲＣＵサブシステム２０は、プロセッサ４１〜４ｎが低電力状態に入るか又は低電力状態から出るときに、プロセッサ４１〜４ｎから電力状況通知を獲得するように編成される。この通知は、任意の適切な方法で提供することができる。例えば、幾つかの実装では、既存の電源制御論理が提供する汎用機構によって、プロセッサの電力状態が他のプロセッサによって認識可能にされる。かかる機構が存在しなければ、各プロセッサ４１〜４ｎは、当該プロセッサが低電力状態に入るときは常に、プロセッサ対応の電力状況情報を明示的に格納するようにプログラムされる。前述の事項の一般性を制限することなく、プロセッサが電力状況情報を格納する１つの方法は、プロセッサ対応の電力状況標識を操作する（例えば、当該プロセッサが低電力状態に入るときに、プロセッサ対応のフラグをセットし且つ当該プロセッサが低電力状態から出るときに、当該フラグをクリアする）ことであろう。各プロセッサ４１〜４ｎは、当該プロセッサが低電力状態に入るとき又は低電力状態から出るときは常に、かかる指標を操作することができる。その後、ＲＣＵサブシステム２０は、全ての電力状況標識を照会することにより、各プロセッサから電力状況通知を獲得することができる。この電力状況通知は、ＲＣＵサブシステム２０が、プロセッサ４１〜４ｎのうちどのプロセッサが低電力状態にあるかを追跡し、可能であれば、これらのプロセッサの不要なウェイクアップを回避することを可能にする。
【００２５】
図９のシステム２では、猶予期間処理アクションに応答して静止状態処理を実行するように単にプロセッサ４１〜４ｎをウェイクアップする代わりに、ＲＣＵサブシステム２０は、各プロセッサの格納された電力状況情報を調べることにより、当該プロセッサの電力状況を決定する。もし、この電力状況情報が、プロセッサ４１〜４ｎが全電力状態にあることを指示すれば、ＲＣＵサブシステム２０は、猶予期間の進行を促進するために必要な静止状態処理を実行するように、当該プロセッサに依頼する。実際に、プロセッサ４１〜４ｎがＲＣＵ参照者２１１〜２１ｎを実行中であれば、当該プロセッサは、可能な破損及びデータ損失から当該参照者を保護するために、静止状態を実装しなければならないであろう。他方、この電力状況情報が、プロセッサ４１〜４ｎが低電力状態にある（従って、アクティブなＲＣＵ参照者２１１〜２１ｎを有していない）ことを指示すれば、ＲＣＵサブシステム２０は、当該プロセッサの静止状態確認の不在を安全に無視する。当該プロセッサの低電力状態が静止状態と同等であるという理由で、ＲＣＵサブシステム２０は、静止状態を通過したものとして当該プロセッサを指定する。かかる低電力−認知−猶予期間処理に起因して、プロセッサ４１〜４ｎは、低電力状態に留まることができ、これを不要にウェイクアップする必要はない。その結果、電力を節約することができるばかりか、低電力状態にあるプロセッサからの静止状態確認の不在にも拘わらず、猶予期間処理を進めることが可能になる。従って、低電力状態の動作を危険にさらすことなく、猶予期間を正常に進めることができる。
【００２６】
前述の処理は、図１０に例示する論理によって実装することができる。特に、通知コンポーネント２２は、各プロセッサ４１〜４ｎ上で定期的に実行され、プロセッサの電力状況の変化に応答してプロセッサ対応の電力状況標識２４を操作する。前述のように、通知コンポーネント２２は、他のプロセッサによってアクセス可能なプロセッサの電力状況情報を供給する、汎用の電力状態制御論理によって提供することができる。他のケースでは、通知コンポーネント２２を別個に構築する必要があろう。図１０に示すように、ＲＣＵサブシステム２０内の猶予期間処理コンポーネント２６は、通知コンポーネント２２と同様に、各プロセッサ４１〜４ｎ上で定期的に実行される。猶予期間処理コンポーネント２６は、他の全てのプロセッサ４１〜４ｎからの静止状態確認を必要とする猶予期間処理アクションを実装する場合は常に、他の全てのプロセッサ４１〜４ｎの電力状況標識２４を調べる。猶予期間処理コンポーネント２６は、種々の方法で実装することができる。例えば、猶予期間処理コンポーネント２６は、他のプロセッサ上の静止状態を強制して猶予期間を進めるために、プロセッサ４１〜４ｎ上の更新者１８１〜１８ｎによって呼び出される、ＲＣＵプリミティブ又は他の関数とすることができる。また、猶予期間処理コンポーネント２６は、コールバックを処理するために、各プロセッサ４１〜４ｎ上で定期的に実行されるルーチンとすることができる。このルーチンが所与のプロセッサ４１〜４ｎ上で呼び出されるとき、このルーチンは、コールバックを処理する前に、残りのプロセッサが静止状態を実装したことを確認することを必要とする。猶予期間処理コンポーネント２６がどのように実装されるかに拘わらず、猶予期間処理コンポーネント２６は、１つ以上のプロセッサの電力状況が静止状態処理を必要とするようなものでない場合は、それらのプロセッサの不要なウェイクアップを回避することができる。このように、１つ以上のプロセッサが低電力状態にある場合でさえ、猶予期間を進めることができる。以下、図１１及び図１２を参照して、これを達成する方法の１つの例を説明する。
【００２７】
図１１は、全てのプロセッサ４１〜４ｎが低電力状態に入り且つ低電力状態から出るとき、これらのプロセッサ上の通知コンポーネント２２によって実行される通知処理を例示する。ブロック３０及び３２は、それぞれ低電力状態に入り且つ低電力状態から出ることをチェックする。ブロック３４では、ブロック３０及び３２の条件のどれが満たされるかに従って、電力状況標識２４がセットされる。例えば、電力状況標識２４がフラグであれば、低電力状態に入るとき、このフラグがセットされ、低電力状態から出るとき、このフラグがクリアされる。
【００２８】
図１２は、プロセッサ４１〜４ｎの１つにある猶予期間処理コンポーネント２６によって実行され且つ静止状態処理を要求するために他のプロセッサと対話する必要があるか否かを決定するための、猶予期間処理を例示する。ブロック４０では、猶予期間処理アクションが実装される。この猶予期間処理アクションは、さらなる猶予期間処理を進めることができる前に、非プリエンプタブルなＲＣＵ参照者２１１〜２１ｎを実行中の他の全てのプロセッサ４１〜４ｎが静止状態を実装することを必要とする。例えば、ブロック４０は、古いデータ要素を解放することができるように、更新の後に猶予期間処理コンポーネント２６を呼び出す、更新者１８１〜１８ｎを表すことがある。代替的に、ブロック４０は、累積されたコールバックを処理するために、（例えば、スケジューラ等による、クロック・タイマ割り込みに起因する）猶予期間処理コンポーネント２６の定期的な呼び出しを表すことがある。ブロック４２では、猶予期間処理コンポーネント２６は、他のプロセッサ４１〜４ｎのうちの１つの電力状況を決定する。ブロック４４では、猶予期間処理コンポーネント２６は、プロセッサ４１〜４ｎの電力状況が、このプロセッサによる静止状態処理が不要であることを指示するか否かを決定する。この決定は、プロセッサ４１〜４ｎが現に低電力状態にあるか否かに基づいて行うことができる。そうであれば、ブロック４６は、必要とされる静止状態処理を実行したものとして当該プロセッサを指定し、次のプロセッサを評価するためにブロック５０に進む。ブロック４４の決定結果が否定的であれば、ブロック４８で、猶予期間処理コンポーネント２６は、当該プロセッサに静止状態処理を実行するように要求する。ブロック５０は、残存するプロセッサ４１〜４ｎごとに、図１２の処理をブロック４２に戻させる。もし、全てのプロセッサ４１〜４ｎが静止状態を通過するか、又は低電力状態にあることの結果として如何なるＲＣＵ参照者２１１〜２１ｎも有していなければ、ブロック５２で、さらなる猶予期間処理が実行される。前述のように、この処理は、古いデータ要素を解放するか又はコールバックを処理することができる。また、他のさらなる猶予期間処理アクションも実行することができる。例えば、共用データ１６がシステム２の動作モードを管理する場合、さらなる猶予期間処理は、データ要素の更新に従って当該動作モードを変更することを含むことがある。
【００２９】
開示された技術について留意すべき１つの側面は、猶予期間処理コンポーネント２６がクロック・タイマ割り込みによって呼び出されるスレッド又はデーモンを使用して実装される場合、開示された技術が猶予期間処理コンポーネント２６をサポートするということである。かかる実装では、猶予期間処理コンポーネント２６は、他のプロセッサ上の静止状態処理を開始すること及びかかる処理を実行することの両方について責任を有する。特に、猶予期間処理コンポーネント２６は、１つのプロセッサ上で猶予期間トークン処理を開始し、現在の割り込みの終わりに終了し、次に、隣接プロセッサ上でトークン処理を実行するために当該隣接プロセッサ上の次の割り込みで再度呼び出すことができる。猶予期間処理コンポーネント２６は、それが以前にパスしたトークンに遭遇し、このトークンを他のプロセッサにパスし、その結果、当該他のプロセッサが次の割り込み中に静止状態処理を実行するであろう。もし、全てのプロセッサ４１〜４ｎが覚醒していれば、猶予期間処理コンポーネント２６が全てのプロセッサを巡回し、静止状態処理が完了し、そして（例えば、猶予期間処理アクションを開始したプロセッサ上の全てのコールバックを処理することにより）猶予期間検出が次の段階に進行するであろう。低電力のダイナミック・ティック・モードを使用する１つの結果は、クロック・タイマ割り込みに依存する猶予期間処理コンポーネント２６が、クロック・タイマ・ティックの不在に起因して諸プロセッサを通して進行しないことがあるということである。本明細書に開示した低電力技術の利点は、低電力のダイナミック・ティック状態にあり、如何なるＲＣＵ参照者２１１〜２１ｎも有しないプロセッサ４１〜４ｎ上で、猶予期間処理コンポーネント２６を実行する必要がないということである。従って、ダイナミック・ティック・モード中にそのクロック・タイマ割り込みを実行しないということは無関係である。
【００３０】
従って、不要なウェイクアップを回避し且つ猶予期間処理状態の進行を促進する、低電力使用のためのプリエンプタブルなＲＣＵ（読み取り・コピー・更新）を最適化するための技術が開示された。当業者には明らかなように、前述の概念は、データ処理システム、コンピュータ実装方法及びコンピュータ・プログラムのうち任意のもので種々に具体化され、そしてそのプログラミング論理は、必要とされる諸機能を実行するようにデータ処理システムを制御する際に使用するための１つ以上のコンピュータ可読媒体によって提供される。図１３は、かかるプログラミング論理を提供するために使用することができる、コンピュータ可読媒体１００を例示する。この媒体１００は、市販ソフトウェアの販売に一般に使用される、読み取り専用のＣＤ−ＲＯＭ、読み書き可能なＣＤ−Ｒ／Ｗ及びＤＶＤのような、可搬型の光ストレージ・ディスクとして示されている。かかる媒体は、本発明のプログラミング論理を単独で格納するか、又はオペレーティング・システムのような必要とされる機能を組み込んだ他のソフトウェア製品と共に格納することができる。また、このプログラミング論理は、可搬型の磁気媒体（例えば、フレキシブル・ディスク、フラッシュ・メモリ・スティック等）、ドライブ・システム（例えば、ディスク・ドライブ）と組み合わされた磁気媒体、或いはランダム・アクセス・メモリ（ＲＡＭ）、読み取り専用メモリ（ＲＯＭ）、又は他の半導体若しくは固体メモリのようなデータ処理プラットフォームに統合された媒体によって提供することができる。広義には、この媒体は、データ処理システム、コンピュータ、他の命令実行システム又は装置によって、又はこれらに関連して使用するためのプログラミング論理を格納し、通信し、伝播し又は移送することができる、電子、磁気、光学、電磁気、赤外線、半導体システム若しくは装置、伝送媒体（例えば、ネットワーク）、又は他のエンティティのうち任意のものとすることができる。
【００３１】
以上、本発明の種々の実施形態を説明したが、本発明に従って多数の変形及び代替的な実施形態を実装することができることは明らかである。従って、本発明は、請求項の記載事項及びそれらの均等物の精神に従う場合を除き、限定されるべきものではない。
【符号の説明】
【００３２】
Ａ〜Ｃ・・・・・・データ要素
Ｂ’・・・・・・・データ要素Ｂの更新バージョン
ｒ１、ｒ２・・・・読み取り動作（参照者）
ｕ１・・・・・・・更新動作（更新者）
２・・・・・・・・対称型マルチプロセッサ（ＳＭＰ）コンピュータ・システム
４１〜４ｎ・・・・・プロセッサ
６・・・・・・・・ 共通システム・バス
８・・・・・・・・ 共用メモリ
１０１〜１０ｎ・・・ キャッシュ・メモリ
１２１〜１２ｎ・・・ キャッシュ・コントローラ
１４・・・・・・・ メモリ・コントローラ
１６・・・・・・・ 共用データセット
１８１〜１８ｎ・・・ 更新動作（更新者）
２０１〜２０ｎ・・・ ＲＣＵインスタンス（ＲＣＵサブシステム）
２１１〜２１ｎ・・・ 読み取り動作（参照者）
２２・・・・・・・ 通知コンポーネント
２４・・・・・・・ 電力状況標識
２６・・・・・・・ 猶予期間処理コンポーネント
１００・・・・・・ コンピュータ可読媒体
【図１】
2010033556.tif 000003
【図２】
2010033556.tif 000004
【図３】
2010033556.tif 000005
【図４】
2010033556.tif 000006
【図５】
2010033556.tif 000007
【図６】
2010033556.tif 000008
【図７】
2010033556.tif 000009
【図８】
2010033556.tif 000010
【図９】
2010033556.tif 000011
【図１０】
2010033556.tif 000012
【図１１】
2010033556.tif 000013
【図１２】
2010033556.tif 000014
【図１３】
2010033556.tif 000015