(57)【特許請求の範囲】
【請求項１】
オペレーティングシステムのスレッドスケジューラにおいて、プロセッサにより実行されるスレッドにページフォールトが発生したことを検出する段階と、
ページフォールトの検出に応じてプロセッサを実行するスレッドからスイッチアウトする段階と、
前記プロセッサに対して他のスレッドがスケジュールされているかを判断する段階と、
スケジュールされていない場合において、前記プロセッサが予めリザーブしたプロセッサ実行リソースを解放して待機することを、前記プロセッサに命令する段階と
を備え、
前記プロセッサに命令する段階は、前記プロセッサにより前記プロセッサを待機状態に移行させるように要求するプロセッサ命令を実行させ、解放した前記プロセッサ実行リソースを他のプロセッサに動的に割り当てる段階を更に備え、
前記プロセッサがウェイクアップ信号を受信することに応じて、前記プロセッサ実行リソースを前記プロセッサに割り当て、新規スレッドまたはレジュームするスレッドを実行する段階を更に備える方法。
【請求項２】
前記プロセッサに命令する段階において、前記プロセッサ実行リソースを他のプロセッサからアクセス可能な動的に割り当てられるプロセッサ実行リソースの共通プールに解放する、請求項１に記載の方法。
【請求項３】
前記プロセッサが、スケジュールされたスレッドにページフォールトが発生したために、実行するスレッドからスイッチアウトされて前記スレッドスケジューラの実行に戻る段階を更に備える請求項１または２に記載の方法。
【請求項４】
前記プロセッサに対して予めリザーブされた前記プロセッサ実行リソースは、前記プロセッサに対して予め静的に割り当てられた前記プロセッサ実行リソースを更に備え、前記プロセッサ実行リソースをプロセッサ実行リソースの共通プールに解放する段階は、前記プロセッサ実行リソースを解放して前記プロセッサ実行リソースを他のプロセッサに対して動的に割り当て可能にする段階を更に備える請求項２に記載の方法。
【請求項５】
前記プロセッサに対して予めリザーブされた前記プロセッサ実行リソースは、前記プロセッサによって予めロックされた前記プロセッサ実行リソースを更に備え、前記プロセッサ実行リソースをプロセッサ実行リソースの共通プールに解放する段階は、前記プロセッサが前記プロセッサ実行リソースをアンロックする段階を更に備える請求項２または４に記載の方法。
【請求項６】
複数のプロセッサ実行リソースを共有する複数の論理プロセッサと、
論理プロセッサにより実行されるスレッドにページフォールトが発生したことを検出するスケジューラを含むファームウェアと
前記ファームウェアと前記論理プロセッサとを相互接続するバスと
を備えるシステムであって、
前記論理プロセッサは、前記スケジューラによりスレッドにページフォールトが検出されたことに応じて実行するスレッドからスイッチアウトし、
前記スケジューラは、前記論理プロセッサに対して他のスレッドがスケジュールされているかを判断し、前記論理プロセッサに対して他のスレッドがスケジュールされていない場合に、前記プロセッサが予めリザーブしたプロセッサ実行リソースを解放して、前記論理プロセッサが待機状態に移行ようにスケジュールして、
前記論理プロセッサが待機状態に移行するようにスケジュールされることは、前記論理プロセッサに前記論理プロセッサを待機状態に移行させるように要求するプロセッサ命令を実行させて、解放した前記プロセッサ実行リソースを他のプロセッサに動的に割り当てさせる段階を更に含み、前記論理プロセッサは、ウェイクアップ信号を受信することに応じて、前記プロセッサ実行リソースを再取得して、新規スレッドまたはレジュームするスレッドを実行するシステム。
【請求項７】
前記スケジューラは、前記論理プロセッサに対して他のスレッドがスケジュールされていない場合に、前記プロセッサ実行リソースを他のプロセッサからアクセス可能な動的に割り当てられるプロセッサ実行リソースの共通プールに解放する、請求項６に記載のシステム。
【請求項８】
前記プロセッサ実行リソースの共通プールは、トランスレーション・ルックアサイド・バッファであり、前記プロセッサ実行リソースは、前記トランスレーション・ルックアサイド・バッファ内のトランスレーション・キャッシュ・エントリである、
請求項７に記載のシステム。
【請求項９】
前記論理プロセッサが、スケジュールされたスレッドにページフォールトが発生したために、実行するスレッドからスイッチアウトされて前記スケジューラの実行に戻る請求項７または８に記載のシステム。
【請求項１０】
前記論理プロセッサに対して予めリザーブされた前記プロセッサ実行リソースは、前記論理プロセッサに対して予め静的に割り当てられた前記プロセッサ実行リソースを更に備え、前記プロセッサ実行リソースをプロセッサ実行リソースの共通プールに解放することは、前記プロセッサ実行リソースを解放して前記プロセッサ実行リソースを他のプロセッサに対して動的に割り当て可能にすることを更に備える請求項７から９のいずれか１項に記載のシステム。
【請求項１１】
前記論理プロセッサに対して予めリザーブされた前記プロセッサ実行リソースは、前記論理プロセッサに対して予め静的に割り当てられた前記プロセッサ実行リソースを更に備え、前記プロセッサ実行リソースをプロセッサ実行リソースの共通プールに解放することは、前記論理プロセッサが前記プロセッサ実行リソースをアンロックすることを更に備える請求項７から１０のいずれか１項に記載のシステム。
【請求項１２】
複数のプロセッサが複数のプロセッサ実行リソースを共有するプロセッサ・ベースのシステムに、
オペレーティングシステムのスレッドスケジューラにおいて、プロセッサにより実行されるスレッドにページフォールトが発生したことを検出する段階と、
ページフォールトの検出に応じてプロセッサを実行するスレッドからスイッチアウトする段階と、
前記プロセッサに対して他のスレッドがスケジュールされているかを判断する段階と、
スケジュールされていない場合において、前記プロセッサが予めリザーブしたプロセッサ実行リソースを解放して待機することを、前記プロセッサに命令する段階と
を実行させ、
前記プロセッサに命令する段階は、前記プロセッサを待機状態に移行させるように命令して、解放した前記プロセッサ実行リソースを他のプロセッサに動的に割り当てる段階を更に備え、
前記プロセッサがウェイクアップ信号を受信することに応じて、前記プロセッサ実行リソースを前記プロセッサに割り当て、新規スレッドまたはレジュームするスレッドを前記システムに実行させる段階を更に備えるプログラム。
【請求項１３】
前記プロセッサに命令する段階において、前記プロセッサ実行リソースを他のプロセッサからアクセス可能な動的に割り当てられるプロセッサ実行リソースの共通プールに解放する、請求項１２に記載のプログラム。
【請求項１４】
スケジュールされたスレッドにページフォールトが発生したために、実行するスレッドからスイッチアウトされて前記スレッドスケジューラの実行に戻る段階を更に前記システムに実行させる請求項１２または１３に記載のプログラム。
【請求項１５】
前記プロセッサに対して予めリザーブされた前記プロセッサ実行リソースは、前記プロセッサに対して予め静的に割り当てられた前記プロセッサ実行リソースを更に備え、前記プロセッサ実行リソースをプロセッサ実行リソースの共通プールに解放する段階は、前記プロセッサ実行リソースを解放して前記プロセッサ実行リソースを他のプロセッサに対して動的に割り当て可能にする段階を更に前記システムに実行させる請求項１３に記載のプログラム。
【請求項１６】
前記プロセッサに対して予めリザーブされた前記プロセッサ実行リソースは、前記プロセッサによって予めロックされた前記プロセッサ実行リソースを更に備え、前記プロセッサ実行リソースをプロセッサ実行リソースの共通プールに解放する段階は、前記プロセッサが前記プロセッサ実行リソースをアンロックする段階を更に前記システムに実行させる請求項１３または１５に記載のプログラム。
【発明の詳細な説明】
【背景技術】
【０００１】
図１aに示されるプロセッサの概念図を参照すると、プロセッサは、例えばレジスタやプログラムカウンタのようなプロセッサのアーキテクチャステートを実装する第１のコンポーネント、および、例えばトランスレーション・ルックアサイド・バッファ（ＴＬＢ）のようなプロセッサ実行リソースから成る第２のコンポーネントの２つのコンポーネントから構成されていると概念化されうる。
【０００２】
図１ｂに示されるマルチプロセッシング・プロセッサ・ベースのシステムの一形態では、複数の物理プロセッサは、バスシステムによって相互に接続され、各物理プロセッサは、それぞれ独立したハードウェアのアーキテクチャステートと、独立したハードウェアのプロセッサ実行リソースのセットとを保持する。このようなシステムの各プロセッサがそれぞれ異なるスレッドを実行するようにスケジュールされるスレッド・スケジューリング・シナリオでは、システムのプロセッサの１つがディスクドライブのようなシステム内の遅いデバイスを待つため、または、スレッドを実行するようにスケジュールされていないために待機状態となりうる。この状況では、プロセッサだけでなくその全ての実行リソースも待機状態となり、これらはシステムの他のプロセッサから使用不可能となる。
【０００３】
図１ｃに示されるプロセッサ・ベースのシステムのもう１つの形態では、ハードウェアプロセッサは、複数の論理プロセッサに対してそれぞれ独立したプロセッサ・ハードウェアのアーキテクチャステートを保持するが、複数の論理プロセッサによって共有される１つのプロセッサ・コア・パイプラインと、ＴＬＢを含む複数の論理プロセッサによって共有される１つのプロセッサ実行リソースセットとを有してもよい。このようなプロセッサ・アーキテクチャは、数あるプロセッサの中でも特にハイパースレッディングテクノロジを有するIntel Xeon（登録商標）プロセッサによって例証されており、よく知られた従来技術である。
【０００４】
このような論理マルチプロセッシング・システムでは、各論理プロセッサが他の全ての論理プロセッサから独立して自身のアーキテクチャステートを保持するため、スレッドスケジューラは、各論理プロセッサ上でそれぞれ異なるスレッドを実行するようにスケジュールしてもよい。オペレーティングシステムのスレッドスケジューラによって論理プロセッサが待機状態とされたとき、または、論理プロセッサが遅いストレージデバイスからのデータを待っているとき、論理プロセッサは、一般的に小規模なループである待機タスクを実行して定期的にインタラプトを確認する、または、自身の実行をサスペンドしてスレッドの実行を再開するような働きをするウェイクアップ信号を待つ。
【０００５】
プロセッサ実行リソースが物理的に独立しているマルチプロセッシング・システムに対して、このような論理マルチプロセッシング・システムでは、システムの複数の論理プロセッサのうち１つが待機状態となった場合には、待機状態の論理プロセッサによって使用されていない動的に割り当てられるプロセッサ実行リソースは、ユーザまたはシステムのスレッドを実行している他の論理プロセッサに対して使用可能にされてもよい。
【０００６】
しかし、論理マルチプロセッシング・システムのプロセッサ実行リソースは、論理プロセッサに対してリザーブされることがある。この状況は種々の方法によって起こりうる。その方法の一例としては、論理プロセッサは、ＴＬＢからトランスレーションレジスタ（ＴＲ）のような動的に割り当てられるプロセッサ実行リソースをロックし、結果的にそのリソースを他の論理プロセッサから使用不可能とすることがある。その方法の他の一例としては、ＴＣのようなプロセッサ実行リソースが論理プロセッサに対して静的に割り当てられ、結果として、静的に割り当てられたリソースは、他の論理プロセッサから使用不可能となりうる。これらのリザーブされたリソースは、これらのリソースがリザーブされた論理プロセッサが待機状態になった後も、概して、他の論理プロセッサから使用不可能であり続ける。このように、論理プロセッサによってロックされたＴＲは、概して、論理プロセッサが待機状態である間も論理プロセッサによってロックされ続け、また、論理プロセッサに対して静的に割り当てられたＴＣは、論理プロセッサが待機状態である間も論理プロセッサに対して静的に割り当てられ続ける。
【図面の簡単な説明】
【０００７】
【図１ａ】種々のタイプのプロセッサ・アーキテクチャを示す第１の概念図である。
【図１ｂ】種々のタイプのプロセッサ・アーキテクチャを示す第２の概念図である。
【図１ｃ】種々のタイプのプロセッサ・アーキテクチャを示す第３の概念図である。
【図２】本発明の一実施形態における処理を示すフロー図である。
【図３】本発明の一実施形態におけるプロセッサ・ベースのシステムを示す図である。
【発明を実施するための最良の形態】
【０００８】
本発明の一実施形態では、処理は、図２のフロー図に示されるように行われる。図２を参照すると、２つの論理プロセッサ、プロセッサ１  ２００およびプロセッサ２  ２０５は、スレッドスケジューラ２１０を含む、オペレーティングシステムによってスケジュールされたスレッドを実行する。２１５において、プロセッサ１は、例えばスレッドの実行終了またはページフォールトのために、実行するスレッドからスイッチアウトされてスレッドスケジューラの実行に戻る。２２０において、この論理プロセッサに対してスケジュールされたタスクがこれ以上存在しない場合、プロセッサは、２２５から２３０の待機シーケンスを実行する。まず、２２５において、論理プロセッサは、自身が確保する全てのリザーブされたプロセッサ実行リソースの確保を取りやめて、それらを共通プール２６０に解放する。このように、例えば、プロセッサ１は、トランスレーション・キャッシュ・エントリまたはトランスレーション・キャッシュ・レジスタを、トランスレーション・ルックアサイド・バッファ内にあるレジスタの一般プールに返還する。
【０００９】
本発明の他の実施形態では、ステップ２２５における処理は異なってもよい。本発明のいくつかの実施形態では、解放された独占的に確保されたリソースは、動的に割り当てられるリソースであり、かつ、プロセッサ１によって予めロックされていたリソースであってもよい。このような実施形態では、ステップ２２５において、論理プロセッサは、リソースをアンロックしてそのリソースを他の論理プロセッサから使用可能にする。別の実施形態では、独占的に確保されたリソースは、プロセッサ１に対して予め静的に割り当てられているリソースであってもよい。このような実施形態では、ステップ２２５において、静的に割り当てられたリソースは解放され、そのリソースは動的に割り当てられるリソースのプール２６０に返還される。
【００１０】
プロセッサ１は、本実施形態におけるサスペンション状態２３０のような待機状態に移行したあと、インタラプト２３５のようなウェイクアップ信号よって、新規スレッドまたはレジュームするスレッドの実行を要求されうる。本発明の他の実施形態では、プロセッサは、２３０に示されるサスペンション状態ではなく待機タスクループに移行して定期的にインタラプトを確認してもよい。
【００１１】
ウェイクアップ信号に続いて、２４０において、論理プロセッサは、必要に応じてリソースをロック、または、リソースを自身に対して静的に割り当てることによって、独占的にリザーブするリソースを再取得する。そして、論理プロセッサは、２４５において、入力されたスレッドにスイッチしてそのスレッドの実行を継続する。
【００１２】
２２５において、サスペンション状態または待機状態の前にプロセッサ１によって解放されたリソースは、図示されたユーザスレッド２５０のようなスレッドを実行する、プロセッサ２  ２０５のような他の論理プロセッサから使用可能となる。その後、これらのリソースは、スレッドの実行中２５５に、共有プロセッサ実行リソースのプールから論理プロセッサに対して必要に応じて動的に割り当てられてもよい。
【００１３】
図３は、本発明の一実施形態における、プロセッサ３００の一部として論理プロセッサが実装されたプロセッサ・ベースのシステムを示す。論理プロセッサ上で実行されるプログラムは、バスシステム３２０によってプロセッサと接続されたメモリ３４０に保存される。メモリは、上述の処理を実質的に実行するスレッドスケジューラを含むファームウェアを保存する非揮発性メモリのセクションを有してもよい。
【００１４】
この他多くの実施形態が可能である。例えば、上述の説明はその説明の対象を論理プロセッサに限定しているが、あらゆる共通実行リソースを共有する物理的に独立したマルチプロセッサに対しても、同様の処理が適用可能である。そのような実施形態では、独立したアーキテクチャステートおよびいくつかの実行リソースはハードウェア的に独立するが、その他の実行リソースはハードウェア的に共有され、図２に示される方法と同様の処理を使用して解放されうる、論理マルチプロセッシングおよび物理マルチプロセッシングのハイブリッド版が実装される。上述のスレッドスケジューラは、本発明のいくつかの実施形態では、図３に示される非揮発性メモリ内に存在するファームウェアのコンポーネントの形をとってもよく、その他の実施形態においては、プロセッサからアクセス可能なディスクメディア上に保存されたオペレーティングシステムの一部分の形をとってもよい。プロセッサ実行リソースを解放およびリザーブするために実行される動作は、本発明のいくつかの実施形態では、ハードウェアに直接実装されてプロセッサの命令実行システムを補助してもよく、その他の実施形態では、１つ以上の命令の実行の一部としてプロセッサによって実行される動作であってもよい。本発明のいくつかの実施形態では、共有される実行リソースは、ＴＬＢとは無関係の特別な目的を有するレジスタを含んでもよい。本発明の実施形態は、２つのプロセッサに制限されず、３つ以上のプロセッサが実行リソースを共有して、上述の処理に類似する処理を実行してもよい。
【００１５】
特許請求の範囲に従った実施形態は、マシンによってアクセスされたときにマシンが特許請求の範囲に従った処理を実行するデータが保存されたマシン読み取り可能な媒体を含む、コンピュータ・プログラム・プロダクトとして提供されてもよい。マシン読み取り可能な媒体は、フロッピーディスク、光ディスク、ＤＶＤ−ＲＯＭディスク、ＤＶＤ−ＲＡＭディスク、ＤＶＤ−ＲＷディスク、ＤＶＤ＋ＲＷディスク、ＣＤ−Ｒディスク、ＣＤ−ＲＷディスク、ＣＤ−ＲＯＭディスクおよび磁気光ディスク、ＲＯＭｓ、ＲＡＭｓ、ＥＰＲＯＭｓ、ＥＥＰＲＯＭｓ、磁気または光カード、フラッシュメモリ、またはその他の電子命令の保存に適したメディア／マシン読み取り可能な媒体を含んでもよく、また、これらに限定されない。更に、本発明の実施形態は、通信リンク（例：モデムまたはネットワーク接続）による搬送波内またはその他の伝播媒体内に埋め込まれたデータ信号によってプログラムがリモートコンピュータから要求側コンピュータに転送されるように、コンピュータ・プログラム・プロダクトとしてダウンロードされてもよい。
【００１６】
多くの方法は最も基本的な形式で説明されているが、特許請求の範囲の基本的な領域から逸れることなく、上述の方法に対して手順が追加または削除されることができ、また、上述の説明内容に対して情報が追加または削除されることができる。当業者にとって、更なる修正または適用が可能であることは明白である。特定の実施形態は、本発明を制限するためではなく、本発明を説明するために提供される。本発明の特許請求の範囲は、上述の特定の例によっては決定されず、添付の特許請求の範囲によってのみ決定される。
【図１ａ】
0005546529.tif 000002
【図１ｂ】
0005546529.tif 000003
【図１ｃ】
0005546529.tif 000004
【図２】
0005546529.tif 000005
【図３】
0005546529.tif 000006