(57)【要約】   命令スレッドの実行を管理する本コンピュータシステム（１８）は、同じ中央処理装置に属する複数の仮想プロセッサ（２４Ｃ、２４Ｓ、２６Ｃ、２６Ｓ）上で複数の命令スレッドを組み合わせて実行する少なくとも１つの中央処理装置（２４、２６）と、仮想プロセッサに命令スレッドの実行を分散する少なくとも１つのマネージャ（３８）とを有する。本コンピュータシステムはさらに、実行する前記命令スレッドを複数の所定のタイプ（Ｃ、Ｓ）に応じて分類する分類手段（３６）を有し、前記命令スレッドの実行を分散する前記マネージャ（３８）は、実行する前記命令スレッドをそれぞれタイプに応じて前記仮想プロセッサ（２４Ｃ、２４Ｓ、２６Ｃ、２６Ｓ）に方向付けるように設計する。【選択図】図１
2013506179.tif 000002
【特許請求の範囲】
【請求項１】
命令スレッドの実行を管理するコンピュータシステム（１８）であって、同じ中央処理装置に属する複数の仮想プロセッサ（２４Ｃ、２４Ｓ、２６Ｃ、２６Ｓ）上で複数の命令スレッドを組み合わせて実行する少なくとも１つの中央処理装置（２４、２６）と、前記仮想プロセッサに命令スレッドの実行を分散する少なくとも１つのマネージャ（３８）とを有するコンピュータシステムにおいて、実行する前記命令スレッドを複数の所定のタイプに応じて分類する分類手段（３６）を有することと、前記命令スレッドの実行を分散する前記マネージャ（３８）を、実行する前記命令スレッドをそれぞれタイプに応じて前記仮想プロセッサ（２４Ｃ、２４Ｓ、２６Ｃ、２６Ｓ）に方向付けるように設計することを特徴とするコンピュータシステム。
【請求項２】
前記同じ中央処理装置（２４、２６）の各仮想プロセッサ（２４Ｃ、２４Ｓ、２６Ｃ、２６Ｓ）を前記所定のタイプの１つに関連付ける手段（Ｃ、Ｓ）を備える、請求項１に記載のコンピュータシステムにおいて、前記命令スレッドの実行を分散する前記マネージャ（３８）を、実行する前記命令スレッドをそれぞれ該スレッドと同じタイプの仮想プロセッサ（２４Ｃ、２４Ｓ、２６Ｃ、２６Ｓ）に方向付けるように設計するコンピュータシステム。
【請求項３】
前記中央処理装置（２４、２６）は２つの仮想プロセッサ（２４Ｃ、２４Ｓ、２６Ｃ、２６Ｓ）を有し、１つは命令スレッドの第１のタイプ（Ｃ）に関連付け、もう１つは命令スレッドの第２のタイプ（Ｓ）に関連付け、実行するコンピュータプロセスはそれぞれ前記第１のタイプか前記第２のタイプである、請求項１または２に記載のコンピュータシステム。
【請求項４】
−  「計算」と呼ぶ命令スレッドの前記第１のタイプ（Ｃ）は、結果を供給するように前記コンピュータシステムが実行するようになっているプログラムに対して、該プログラムの実行に参加して結果を直接生成する命令スレッドに関係し、
−  「サービス」と呼ぶプロセスの前記第２のタイプ（Ｓ）は、該プログラムの実行に参加して「計算」タイプの前記命令スレッドに付属サービスを供給する命令スレッドに関係する、
請求項３に記載のコンピュータシステム。
【請求項５】
少なくとも２つの中央処理装置（２４、２６）を有し、それぞれが複数の仮想プロセッサ（２４Ｃ、２４Ｓ、２６Ｃ、２６Ｓ）を備え、仮想プロセッサ上で複数の命令スレッドを組み合わせて実行する、請求項１から４のいずれか一項に記載のコンピュータシステムにおいて、前記命令スレッドの実行を分散する前記マネージャ（３８）を、中央処理装置にある仮想プロセッサとは独立して、実行する命令スレッドそれぞれに対して中央処理装置を選択するように設計するコンピュータシステム。
【請求項６】
コンピュータシステム（１８）の同じ中央処理装置（２４、２６）に属する複数の仮想プロセッサ（２４Ｃ、２４Ｓ、２６Ｃ、２６Ｓ）上で複数の命令スレッドを組み合わせて実行するのを管理する方法であって、前記仮想プロセッサに前記命令スレッドの実行を分散するステップ（１０４）を含む方法において、複数の所定のタイプに応じて実行する前記命令スレッドを分類する予備ステップ（１００）を含むことと、前記命令スレッドの実行を分散するステップ（１０４）で、実行する命令スレッドそれぞれをタイプに応じて仮想プロセッサに方向付けることとを特徴とする方法。
【請求項７】
前記分類ステップ（１００）で、命令スレッドを管理するアプリケーションプログラミングインターフェースの関数でタイプを識別するパラメータに基づいて、前記命令スレッドをそれぞれタイプで分類する、請求項６に記載の方法。
【請求項８】
前記分類ステップ（１００）で、命令スレッドの実行を含むプログラムの実行コマンドでタイプを識別するパラメータに基づいて、前記命令スレッドをそれぞれこのタイプで分類する、請求項６に記載の方法。
【請求項９】
スーパーコンピュータタイプのサーバクラスタ（１０）の複数の処理ノード上で複数の命令スレッドを実行することの管理に対する請求項６から８のいずれか一項に記載の方法の適用であって、各処理ノード（１８）が、同じ中央処理装置に属する複数の仮想プロセッサ（２４Ｃ、２４Ｓ、２６Ｃ、２６Ｓ）上で複数の命令スレッドを組み合わせて実行する少なくとも１つの中央処理装置（２４、２６）を有する適用。
【請求項１０】
通信ネットワークからダウンロード可能なコンピュータプログラムおよび／またはコンピュータで再生可能な媒体に記録したコンピュータプログラムおよび／またはプロセッサのなかでもとりわけコンピュータのオペレーティングシステム（３４）で実行可能なコンピュータプログラムであって、前記プログラムをコンピュータ上で実行した場合に、請求項６から８のいずれか一項に記載の複数の命令スレッドを組み合わせた実行の管理方法のステップを実行するプログラムコードの命令を含むことを特徴とするコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、命令スレッドの実行を管理するコンピュータシステムであって、同じ中央処理装置に属する複数の仮想プロセッサ上で複数の命令スレッドを組み合わせて実行する少なくとも１つの中央処理装置と、命令スレッドの実行を仮想プロセッサに分散する少なくとも１つのマネージャとを有するコンピュータシステムに関する。本発明はまた、その方法、サーバクラスタへの本方法の適用、および本方法を実行するための命令を含むコンピュータプログラムにも係る。
【背景技術】
【０００２】
以下の説明文において、「コンピュータシステム」とは、コンピュータプログラムの命令を実行することができ、そのために少なくとも１つの中央処理装置でプロセッサの計算コアまたはＣＰＵ（英語の「Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ」）とも呼ばれるものを有する少なくとも１つのプロセッサを備えるあらゆるシステムを指す。プロセッサには、単一の計算コアのみ、または複数の計算コアを備えることができることがわかるであろう。本発明によるコンピュータシステムは、複雑性が増す順に、１つまたは複数の計算コアを有するマイクロプロセッサ、１つまたは複数のマイクロプロセッサを有する単純なマイクロコンピュータ、または複数のマイクロコンピュータを、データ転送ネットワークを介して相互接続したさらに複雑なシステムで構成することができる。本発明を実装することができるコンピュータシステムの複雑性は、原則として目的とする適用例によって異なる。
【０００３】
「コンピュータプロセス」とは、より一般には「プロセス」と呼ばれ、プロセッサの中央処理装置（すなわち計算コア）によって、場合よってはその他の資源を用いて、特別に割り当てたメモリ空間で実行する命令の集合を指す。コンピュータプログラム自体は命令を構造化した集合で構成されるため、コンピュータプロセスをコンピュータプログラムまたはコンピュータプログラムの一部分を実行するインスタンスと考えることができる。同じ１つのプログラムを（同じ１つのプロセッサまたはさまざまなプロセッサ上で平行かつ連続的に）複数回実行することができるため、このプログラムは複数のコンピュータプロセスを生成することができる。
【０００４】
コンピュータプロセスは、必ずしも単一の線形的な命令系列を備えている必要はなく、非同期に複数の系列を要求することができる。そのため、より一般に「スレッド」と呼ばれる「命令スレッド」とは、コンピュータプロセスの実行に参加するこのような線形的な命令系列を指す。その結果、命令実行の観点から、コンピュータプロセスとは常に命令スレッドまたは命令スレッドの集合であると考えてよい。
【０００５】
「同じ中央処理装置に属する複数の仮想プロセッサ上で複数の命令スレッドを組み合わせて実行する中央処理装置」とは、命令スレッド実行の並列処理を、中央処理装置の内部資源（とりわけ実行の「パイプライン」、レジスタおよびキャッシュメモリ）のいくつかを共有することによって増進させるメカニズムを備える中央処理装置のことである。このような中央処理装置には、資源を同時に共有することができる命令スレッドと同じだけ仮想プロセッサがある。ユーザから見れば、単一の中央処理装置ではなく、複数、さらに正確にはこの中央処理装置にある仮想プロセッサの数だけ中央処理装置があるかのように見える。
【０００６】
このメカニズムは一般に、「ハイパースレッディング」または「同時マルチスレッディング」と呼ばれる。このメカニズムを実装している中央処理装置の目的は、命令スレッドの共有メモリ空間からくるデータを待つことで生じる非アクティブな時間を活用することである。具体的には、命令スレッドがこのような待機状態にあるとき、この命令スレッドを実行する中央処理装置は自動的に別の命令スレッドの実行に進むため、複数の異なる仮想プロセッサがあるかのような印象を与える。
【０００７】
オペレーティングシステムＬｉｎｕｘ（登録商標）は、現在このようなメカニズムをサポートしており、ハイパースレッディングメカニズムを搭載したマイクロプロセッサ上でこのオペレーティングシステムを実行すると、このメカニズムがアクティブのときにはこのマイクロプロセッサに属するＮ個の仮想プロセッサがあるようにユーザには見える。またこのオペレーティングシステムは、有利なように命令スレッドを実行する際にロードバランシングアルゴリズムも実行するため、この命令スレッドには仮想プロセッサの特性を考慮する必要がある。特に、このオペレーティングシステムは、同じ中央処理装置の別の仮想プロセッサに命令スレッドを切り替えて仮想プロセッサをアンロードすることはない。この制約により、ロードバランシングアルゴリズムが非常に重くなる。
【０００８】
具体的には、この制約は、例えば携帯電話のアプリケーションに内蔵するマイクロプロセッサなどに用いるリアルタイム計算およびオンボード処理のアプリケーションでとりわけ問題が起こる。
【０００９】
具体的な第２の例によれば、サーバクラスタに組織した複数の処理ノードを有するＨＰＣ（英語の「Ｈｉｇｈ  Ｐｅｒｆｏｒｍａｎｃｅ  Ｃｏｍｐｕｔｉｎｇ」）タイプのスーパーコンピュータの環境では、ユーザは中央処理装置上でのアプリケーションの配置を細かくコントロールすることを望み、例えばそれぞれの通信メカニズムに有利に働く共有キャッシュを利用することもある。
【００１０】
これらの命令スレッドを管理するアプリケーションプログラミングインターフェースのシステムを呼び出すことによって、命令スレッドを細かく配置できる可能性があり、それによってユーザ（すなわちプログラマ）は、命令スレッドに対するオペレーティングシステムタスクのスケジューラの挙動を明示することができるが、これには関連するアプリケーションに対して、コンピュータシステムのトポロジーの知識およびソフトウェア層との競合が生じるおそれのある配置作業が必要になる。
【００１１】
仮想プロセッサの特性を考慮することは、実際には複雑である。それによって実際に問題が起こり、ＨＰＣスーパーコンピュータのアプリケーションで自動的な管理ができなくなることさえある。
【発明の概要】
【発明が解決しようとする課題】
【００１２】
そのため、前述の問題および制約を少なくとも部分的に緩和することができる、命令スレッドを組み合わせた実行の管理システムを備えることが望まれる。
【課題を解決するための手段】
【００１３】
よって本発明は、命令スレッドの実行を管理するコンピュータシステムであって、同じ中央処理装置に属する複数の仮想プロセッサ上で複数の命令スレッドを組み合わせて実行する少なくとも１つの中央処理装置と、命令スレッドの実行を仮想プロセッサに分散する少なくとも１つのマネージャとを有するコンピュータシステムにおいて、実行する命令スレッドを複数の所定のタイプに応じて分類する分類手段を有することと、命令スレッドの実行を分散するマネージャを、実行する命令スレッドをそれぞれタイプに応じて仮想プロセッサに方向付けるように設計することを特徴とするコンピュータシステムを目的とする。
【００１４】
したがって、命令スレッドをタイプごとに分類し、これをタイプに応じて命令スレッドの実行を分散するマネージャを用いて体系的にそれぞれの仮想プロセッサに方向付けることによって、計算資源を保護する。その結果、中央処理装置を最適な形で使用することになり、関連するアプリケーションの実行が加速する。さらに、ハイパースレッディングメカニズムによりユーザ（プログラマ）が原因となることもあるエラーのリスクが抑えられる。
【００１５】
選択的に、本発明によるコンピュータシステムはさらに、この同じ中央処理装置の各仮想プロセッサをこれらの所定のタイプの１つに関連付ける手段を備えることができ、命令スレッドの実行を分散するマネージャを、実行する命令スレッドをそれぞれこのスレッドと同じタイプの仮想プロセッサに方向付けるように設計することができる。
【００１６】
したがって、命令スレッドを分散するマネージャは、場合によっては命令スレッドに対して中央処理装置を選択するのに関わるだけでよく、仮想プロセッサの正確な選択は命令スレッドのタイプによって自動的に決まる。その結果、ハイパースレッディングメカニズムはユーザから隠すことができる。よって、ユーザがこのメカニズムを理解していないためにエラーが生じるリスクは一切なくなる。さらに、命令スレッドは自動的に正しい仮想プロセッサに方向付けられるため、パフォーマンスは一層改善される。
【００１７】
同じく選択的に、中央処理装置は２つの仮想プロセッサを有し、１つは命令スレッドの第１のタイプに関連付け、もう１つは命令スレッドの第２のタイプに関連付け、実行するコンピュータプロセスはそれぞれ第１のタイプか第２のタイプとする。
【００１８】
同じく選択的に、
−  「計算」と呼ぶ命令スレッドの第１のタイプは、結果を供給するようにコンピュータシステムが実行するようになっているプログラムに対して、このプログラムの実行に参加して結果を直接生成する命令スレッドに関係し、
−  「サービス」と呼ぶプロセスの第２のタイプは、このプログラムの実行に参加して「計算」タイプの命令スレッドに付属サービスを供給する命令スレッドに関係する。
【００１９】
同じく選択的に、本発明によるコンピュータシステムは、少なくとも２つの中央処理装置を備えることができ、それぞれがこの同じ中央処理装置に属する複数の仮想プロセッサ上で複数の命令スレッドを組み合わせて実行し、命令スレッドの実行を分散するマネージャを、中央処理装置が備える仮想プロセッサとは独立して、実行する命令スレッドそれぞれに対して中央処理装置を選択するように設計することができる。
【００２０】
本発明はまた、コンピュータシステムの同じ中央処理装置に属する複数の仮想プロセッサ上で複数の命令スレッドを組み合わせて実行するのを管理する方法であって、仮想プロセッサに命令スレッドの実行を分散するステップを含む方法において、複数の所定のタイプに応じて実行する命令スレッドを分類する予備ステップを含むことと、命令スレッドの実行を分散するステップで、実行する命令スレッドそれぞれをタイプに応じて仮想プロセッサに方向付けることとを特徴とする方法も目的とする。
【００２１】
選択的に、分類ステップで、命令スレッドを管理するアプリケーションプログラミングインターフェースの関数でタイプを識別するパラメータに基づいて、命令スレッドをそれぞれタイプで分類する。
【００２２】
同じく選択的に、分類ステップで、命令スレッドの実行を含むプログラムの実行コマンドでタイプを識別するパラメータに基づいて、この命令スレッドをそれぞれこのタイプで分類する。
【００２３】
本発明はまた、スーパーコンピュータタイプのサーバクラスタの複数の処理ノード上で複数の命令スレッドを実行することの管理に対する上記のように定義した方法の適用であって、各処理ノードが、同じ中央処理装置に属する複数の仮想プロセッサ上で複数の命令スレッドを組み合わせて実行する少なくとも１つの中央処理装置を有する適用も目的とする。
【００２４】
最後に、本発明はまた、通信ネットワークからダウンロード可能なコンピュータプログラムおよび／またはコンピュータで再生可能な媒体に記録したコンピュータプログラムおよび／またはプロセッサのなかでもとりわけコンピュータのオペレーティングシステムで実行可能なコンピュータプログラムであって、前記プログラムをコンピュータ上で実行した場合に、上記のように定義した複数の命令スレッドを組み合わせた実行の管理方法のステップを実行するプログラムコードの命令を含むことを特徴とするコンピュータプログラムも目的とする。
【００２５】
本発明は、添付の図を参照しながら例のみを目的として挙げた以下の説明文を読めばよりよく理解できるであろう。
【図面の簡単な説明】
【００２６】
【図１】本発明の一実施形態による少なくとも１つのコンピュータシステムを有する設備の全体構造の概略図である。
【図２】本発明の一実施形態による、図１の設備で実施することのできる複数のコンピュータプロセスを組み合わせた実行の管理方法を示す一連のステップの全体図である。
【発明を実施するための形態】
【００２７】
本発明はどのようなアプリケーションからも独立して、同じ中央処理装置に属する複数の仮想プロセッサ上で複数の命令スレッドを組み合わせて実行する少なくとも１つの中央処理装置と、仮想プロセッサに命令スレッドの実行を分散する少なくとも１つのマネージャとを備えるあらゆるコンピュータシステムに実装することができ、以下に一実施形態を詳細に説明する。
【００２８】
最も単純な事例では、本発明は、ハイパースレッディングメカニズムを搭載したマイクロプロセッサを備えれば実装することができる。リアルタイム計算および／またはオンボードのアプリケーションが本発明から利益を引き出すことができる。
【００２９】
ネットワーク接続したコンピューティングデバイスまたはＨＰＣスーパーコンピュータの最も複雑なアプリケーションでは、少なくとも１つのマイクロプロセッサを有する各装置が本発明を実装できることが有利である。
【００３０】
図１に示す実施形態はＨＰＣコンピュータの適用例であり、以下に本発明の一実施形態を詳細に説明する。実際にこれは本発明の特に重要な産業上の適用例である。ただし、前述したとおり、本発明はこのようなＨＰＣコンピュータの設備に限定されるものではないことは明らかである。
【００３１】
図１に示すコンピューティングデバイス１２、１４、１６、１８の設備１０は、例えば帯域がきわめて広いデータ伝送ネットワーク２０を少なくとも１つ介して相互接続したサーバクラスタで組織したＨＰＣコンピュータを非常に簡略化した不完全な例である。この設備１０は、例えばとりわけ計算ノードを形成する符号１２、１４、１６および１８で示したコンピューティングデバイスと、サービスノード、管理ノードまたは格納ノードを形成するコンピューティングデバイス（図示せず）とを有する。計算ノード１２、１４、１６および１８の全体構造は同じであってもよいが、コンピューティングデバイス１８の構造のみを以下に詳述する。
【００３２】
例えばマイクロコンピュータタイプの計算サーバであるコンピューティングデバイス１８は、
−  第１の中央処理装置２４および第２の中央処理装置２６が接続する通信バスであって、コンピュータプログラム、さらに詳細には命令スレッドにより生じるコンピュータプロセスを実行するための通信バス２２と、
−  ＲＯＭ２８（英語の「Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ」）タイプの読み出し専用メモリ、および処理データおよび／または起動プログラム（例えばＢＩＯＳタイプのアプリケーション）を格納し、周辺機器を管理するためのＲＡＭ３０（英語の「Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ」）タイプの書き込み可能なメモリと、
−  少なくとも１つのハードディスク３２と
を有する。
【００３３】
このコンピューティングデバイス１８は、場合によってはさらに（この図には示していないが）従来のように、以下の素子：スクリーン、キーボード、マウス、ネットワーク２０との通信インターフェース、およびＣＤ−ＲＯＭまたはＤＶＤのリーダ／レコーダなどの交換可能な媒体へのデータのリーダ／レコーダを１つまたは複数有する。
【００３４】
ハードディスク３２は、コンピューティングデバイス１８の起動時にＢＩＯＳアプリケーションをロードしたＬｉｎｕｘシステムなどのオペレーティングシステム３４をファイルの形態で格納する。同じ中央処理装置の複数の仮想プロセッサ上で命令スレッドを組み合わせて実行するメカニズムが、このオペレーティングシステムに対してアクティブになる。例えばこのメカニズムは、中央処理装置２４および２６にそれぞれ２つの仮想プロセッサがあるようなものである。つまり、仮想プロセッサ２４Ｃおよび２４Ｓは第１の中央処理装置２４に、仮想プロセッサ２６Ｃおよび２６Ｓは第２の中央処理装置２６に対するものである。
【００３５】
変形例では、オペレーティングシステム３４を外部の格納手段（ハードディスクタイプの外部媒体、ネットワーク等）に格納することができる。この変形例では、リーダ／レコーダおよびコンピューティングデバイス１８の通信インターフェースは、外部媒体からハードディスク３２へデータを転送してオペレーティングシステム３４をロードすることができる。
【００３６】
どのような場合においても、オペレーティングシステム３４は、通信ネットワークからダウンロード可能なコンピュータプログラムおよび／またはコンピュータで再生可能な媒体に記録したコンピュータプログラムおよび／またはプロセッサムで実行可能なコンピュータプログラムであって、複数の命令スレッドを組み合わせて実行する管理方法のステップを実行するためのプログラムコードの命令を含むコンピュータプログラムであり、これについては図２を参照しながら説明する。
【００３７】
より一般に、前述の構造は、コンピューティングデバイスのあらゆるタイプのネットワークに適しているためＨＰＣタイプである必要はなく、この構造では各コンピューティングデバイスのオペレーティングシステムは、仮想プロセッサ上で命令スレッドを組み合わせて実行するメカニズムを利用する。
【００３８】
つまり、先ほど構造的に説明したようなコンピューティングデバイス１８は、本発明を実装することができる装置の非限定的な一例にすぎないことがわかるであろう。コンピューティングデバイスの構想には多種多様なアーキテクチャがあり、同じ中央処理装置に属する複数の仮想プロセッサ上で複数の命令スレッドを組み合わせて実行する中央処理装置を最低１つ備える装置はすべて適切である。
【００３９】
本発明の一実施形態によれば、コンピューティングデバイス１８は、複数の所定のタイプに応じて、また特に、
−  「計算」と呼ぶ命令スレッドの第１のタイプは、結果を供給するようにコンピューティングデバイス１８が実行するようになっているプログラムに対して、このプログラムの実行に参加して結果を直接生成する命令スレッドに関係し、
−  「サービス」と呼ぶプロセスの第２のタイプは、このプログラムの実行に参加して「計算」タイプの命令スレッドに付属サービスを供給する命令スレッドに関係する
という２つのタイプの命令スレッドに応じて、実行する命令スレッドを分類する分類手段３６を有する。
【００４０】
サービスの命令スレッドは、例えば結果の保存、メモリの管理、出入力の管理、データの通信、モニタリング、ファイルへのアクセスなどに係る。
【００４１】
アプリケーションに応じて、分類手段３６はさまざまな形態を取ることができる。
【００４２】
第１の適用例では、実行するプログラムが複数の命令スレッドの実行を要求し、そのうちのいくつかの命令スレッドが計算に参加し、残りの命令スレッドが付属サービスに参加する。この場合、このプログラムは、命令スレッドを管理するアプリケーションプログラミングインターフェースの関数である、例えばアプリケーションプログラミングインターフェースＰＯＳＩＸの関数ｓｃｈｅｄ＿ｓｅｔｓｃｈｅｄｕｌｅｒ（）を、計算タイプ（ＨＴＣＡＬＣＵＬ）かサービスタイプ（ＨＴ＿ＳＥＲＶＩＣＥ）かを識別するパラメータに基づいて呼び出すように設計する。したがって、オペレーティングシステム３４によって実装する命令スレッドの分類手段３６は、このパラメータを自動的に認識して仮想プロセッサに方向付ける命令スレッドのタイプを識別することからなる。
【００４３】
第２の適用例では、複数のプログラムを実行する必要があり、そのうちのいくつかは計算プログラム、残りはサービスプログラムである。この場合、ユーザは、計算かサービスかのタイプをパラメータで識別するコマンドを用いてプログラムの実行を開始するようにする。例えばこれは、コマンドｈｔ＿ｓｃｈｅｄ−［ＣＡＬＣＵＬまたはＳＥＲＶＩＣＥ］＜プログラム名＞である。このようにオペレーティングシステム３４で実装した命令スレッドの分類手段３６は、このパラメータを自動的に認識してプログラムが要求する命令スレッドのタイプを識別することからなる。
【００４４】
第３の適用例では、並列計算プログラムに広く使用されるＭＰＩ（英語の「Ｍｅｓｓａｇｅ  Ｐａｓｓｉｎｇ  Ｉｎｔｅｒｆａｃｅ」）ライブラリが、計算モードで開始される主要プログラムの枠組みでのサービスに向けた固有の命令スレッドを生成する（第２の適用例を参照）。この場合、このライブラリは、サービスタイプ（ＨＴ＿ＳＥＲＶＩＣＥ）を識別するパラメータに基づいて関数ｓｅｔｓｃｈｅｄｕｌｅｒ（）を呼び出すことができる。したがって、オペレーティングシステム３４によって実装する命令スレッドの分類手段３６は、このパラメータを自動的に認識してこのＭＰＩライブラリが生成する命令スレッドのタイプを識別することからなる。
【００４５】
命令スレッドのタイプが前述したように先験的に明示されない第４の適用例では、オペレーティングシステム３４の分類手段３６を、自動的に、その上簡潔に、とりわけこれらの命令スレッドの起動元であるアプリケーションを自動的に認識することによってタイプを決定するように設計することができる。
【００４６】
その上、コンピューティングデバイス１８は、同じ中央処理装置の各仮想プロセッサを前述した２つのタイプの一方に関連付ける手段を有する。図１に示すように、この関連付け手段は、例えば計算タイプかサービスタイプかをそれぞれ識別するパラメータＣおよびＳである。この関連付け手段は、例えば該当する中央処理装置２４、２６、または変形例ではオペレーティングシステム３４によって明示的または暗黙的に管理される。したがって、図１に概略的に示した例では、第１の中央処理装置２４の仮想プロセッサ２４Ｃは計算タイプであり、第１の中央処理装置２４の仮想プロセッサ２４Ｓはサービスタイプであり、第２の中央処理装置２６の仮想プロセッサ２６Ｃは計算タイプであり、第２の中央処理装置２６の仮想プロセッサ２６Ｓはサービスタイプである。
【００４７】
オペレーティングシステム３４は、仮想プロセッサ２４Ｃ、２４Ｓ、２６Ｃおよび２６Ｓに命令スレッドの実行を分散するマネージャ３８を有する。さらに正確には、この分散マネージャ３８は、実行する命令スレッドをそれぞれタイプに応じて１つの仮想プロセッサに方向付けし、さらに正確にはタイプが同じ仮想プロセッサにも方向付けするように設計する。したがって、仮想プロセッサ２４Ｃまたは２６Ｃには計算タイプの命令スレッドしか方向付けできず、仮想プロセッサ２４Ｓまたは２６Ｓにはサービスタイプの命令スレッドしか方向付けできない。
【００４８】
具体的には、分散マネージャ３８は、
−  実行する命令スレッドそれぞれに対して、中央処理装置にある仮想プロセッサ２４Ｃ、２４Ｓまたは２６Ｃ、２６Ｓとは独立して中央処理装置２４または２６を選択する第１のソフトウェア手段４０と、
−  選択した中央処理装置の仮想プロセッサのうち、実行する命令スレッドと同じタイプのものを自動的に割り当てる第２のソフトウェア手段４２と
を有する。
【００４９】
次に、図１のコンピューティングデバイス１８が実装する複数のコンピュータプロセスを組み合わせた実行の管理方法を図２を参照して詳述する。
【００５０】
第１の分類ステップ１００では、実行待機状態にある命令スレッドＴ１、Ｔ２およびＴ３を計算タイプ（右斜線）かサービスタイプ（左斜線）であるかによって分類する。このタイプは、コマンドのパラメータまたはアプリケーションプログラミングインターフェースの関数のパラメータで先験的に定義し、前述したようにオペレーティングシステム３４のソフトウェア手段３６によって自動的に認識することができる。このタイプは、オペレーティングシステム３４のソフトウェア手段３６によって直接、自動的に定義することもできる。
【００５１】
次のステップ１０２では、オペレーティングシステム３４の分散マネージャ３８は、ソフトウェア手段４０を用いて各命令スレッドに対して中央処理装置２４または２６を選択し、選択した中央処理装置の待ち行列にこの命令スレッドを配置する。
【００５２】
その後、各命令スレッドをソフトウェア手段４２が実行する仮想プロセッサに割り当てるステップ１０４では、中央処理装置２４または２６の待ち行列に配置した各命令スレッドが、実際にはこの命令スレッドと同じタイプのこの中央処理装置２４または２６の仮想プロセッサの待ち行列に自動的に配置される。
【００５３】
最後に、実行ステップ１０６では、前のステップで割り当てられた仮想プロセッサによって各命令スレッドを実行する。
【００５４】
前述したようなコンピューティングデバイス１８によって、複数の仮想プロセッサ上での命令スレッドの実行管理が容易になることは明らかである。
【００５５】
先行技術では、仮想プロセッサ上で命令スレッドを組み合わせて実行するメカニズムを実装することができるコンピューティングデバイスにロードしたオペレーティングシステムは、一般の計算媒体と同じようにあらゆる仮想プロセッサを備えているため、命令スレッドの分散が一層複雑になっている。
【００５６】
本発明によれば、オペレーティングシステムによる命令スレッドの分散が簡略化し、とりわけＨＰＣスーパーコンピュータまたはリアルタイム計算のアプリケーションを実装するプロセッサなど計算が強く求められる環境で、命令スレッドを組み合わせて実行するメカニズムから多くの利益が引き出される。さらに正確には、前述した実施形態では、同じ１つの中央処理装置にある２つの仮想プロセッサを、相互に交換可能な２つの計算媒体ではなく、計算に対する１つの主要な実行媒体および付属サービスに対する１つの二次的な実行媒体として示した。したがって、Ｎ個の中央処理装置がある一般化したコンピューティングデバイス１８では、命令スレッドを組み合わせて実行するメカニズムを実装したとしても、実際にはユーザ（およびオペレーティングシステム）にはＮ個の中央処理装置しか見えず、このメカニズムを実装していないかのように見える。その結果、命令スレッドの分散で起こる管理上の制約を受けることなくこのメカニズムから利益が引き出される。
【００５７】
選択した中央処理装置の仮想プロセッサに命令スレッドを自動的に割り当てることによって、命令スレッドはその役割および制約に応じて仮想プロセッサに分配され、ユーザまたはオペレーティングシステムがこの分配に介入することはない。
【００５８】
命令スレッドが分配されると、同じ１つの中央処理装置にある２つの仮想プロセッサ上で実行メカニズムを平行に実装することの利点が、以下の点にあることがわかる。
−  中央処理装置は２つの異なる待ち行列を管理するため、１つの命令スレッドから別の命令スレッドへの移行を管理する必要がなくなり、この同時の実行はハードウェアが管理する。
−  特に、仮想プロセッサが実行する命令スレッドが１つしか残っていないとき、中央処理装置は仮想プロセッサに割り込むことなく仮想プロセッサにコードを実行させることができる。
−  １つのプログラムから別のプログラムへの移行は、命令ごとに行われる。
【００５９】
この非常に細かい粒度は、とりわけ支障を来すおそれのあるデーモンの場合に明確に有益になり得る。実際、同じ１つの中央処理装置にある計算の仮想プロセッサは減速するが、一定時間の間サービスの仮想プロセッサからブロックされることはない。支障（デーモンおよび割り込み）による影響は、計算の仮想プロセッサによって著しく減少する。
【００６０】
ＨＰＣ環境では、計算コードを計算の仮想プロセッサに配置し、付属サービスをサービスの仮想プロセッサに配置することができ、これはバッチマネージャなどの使用ツールに対して明白な方法で行う。リアルタイム環境では、これによって重要な命令スレッドを他のすべてのサービス命令スレッドから自動的に隔離し、スケジューリングのために起こる割り込みは一切なく、選択した中央処理装置で利用可能な実行時間の最低５０％をこの重要な命令スレッドのために確保することができる。
【００６１】
最後に、コンピューティングデバイス１８と、各命令スレッドに１つのタイプを先験的に割り当てるこの機能性を考慮していないプログラムとの互換性に関しては、デフォルトとして命令スレッドを１つのサービスの仮想プロセッサに方向付ける必要があることは明らかである。実際、オペレーティングシステムが開始するデーモンはすべて、計算に支障を来さないようにサービスの仮想プロセッサで実行する必要がある。そのため、命令スレッドを計算の仮想プロセッサに方向付けるために計算コードのみを特別に適合させる必要がある。この適合は、必ずしもプログラム自体から行う必要はなく、例えば前述のＭＰＩライブラリなど外部のツールで実行してもよい。
【００６２】
さらに、本発明は前述した実施形態に限定されるものではないことがわかるであろう。とりわけ、各中央処理装置が３つ以上の仮想プロセッサを備えられるメカニズムを実装することができる場合、３つ以上のタイプの命令スレッドを定義することが有利になり得る。
【００６３】
また、何度も前述して示唆したように、図１に示すＨＰＣスーパーコンピュータの設備が本発明を実装できる唯一のものではない。例えばリアルタイム計算および／またはオンボード処理などこれよりも遙かに簡易なコンフィギュレーションでは、複数の仮想プロセッサ上で複数の命令スレッドを組み合わせて実行する少なくとも１つの中央処理装置を有する単一のプロセッサ（またはこのようなプロセッサを備えるコンピュータ）を備えていれば、本発明を実装することができる。
【００６４】
さらに一般的には、ここに開示した教示に照らし合わせて、上に記載した実施形態にさまざまな修正を加えてもよいことは当業者には明らかであろう。以下の特許請求の範囲では、使用した用語が請求項を本明細書で明らかにした実施形態に限定するものと解釈してはならず、本文の記載およびそこから予見される内容は、ここに開示した教示の実装に一般知識を応用することによって当業者が到達しうる範囲内であることから、請求項が範囲に含めると想定するあらゆる同等のものも含まれると解釈すべきである。
【図１】
2013506179.tif 000003
【図２】
2013506179.tif 000004
【国際調査報告】
2013506179.tif 000005
2013506179.tif 000006
2013506179.tif 000007
2013506179.tif 000008
2013506179.tif 000009
2013506179.tif 000010