(57)【特許請求の範囲】
【請求項１】
入出力（Ｉ／Ｏ）割込みの改良型優先ルーティングを実施する方法であって、
プロセッサによって、コアについて前記Ｉ／Ｏ割込みが保留中であるか否かを判断することと、
前記プロセッサによって、前記Ｉ／Ｏ割込みが保留中であるとの判断に応答して、前記コアの複数のゲスト・スレッドのいずれかが、前記割込みのゲスト・スレッド処理のために割込み可能であるか否かを判断することと、
前記プロセッサによって、ゲスト・スレッド処理のために割込み可能な前記複数のゲスト・スレッドのうちの少なくとも１つが待ち状態であるか否かを判断することと、
ゲスト・スレッド処理のために割込み可能な前記複数のゲスト・スレッドのうちの前記少なくとも１つが待ち状態であるとの判断に基づいて、前記プロセッサによって前記Ｉ／Ｏ割込みを、ゲスト・スレッド処理のために割込み可能であって待ち状態であるゲスト・スレッドにルーティングすることと、
前記複数のゲスト・スレッドのうちのいずれも前記ゲスト・スレッド処理のために割込み可能でないとの判断に基づいて、前記Ｉ／Ｏ割込みをホストにルーティングするために遅延を開始することを含む方法。
【請求項２】
前記Ｉ／Ｏ割込みが保留割込みアレイにおいて保留として示される、請求項１に記載の方法。
【請求項３】
各ゲスト・スレッドの状況ビットおよび制御ビットが、前記割込みの前記ゲスト・スレッド処理のために前記スレッドを割込み可能にするように構成された、請求項１に記載の方法。
【請求項４】
ゲスト・スレッド処理のために割込み可能な前記複数のゲスト・スレッドのいずれも待ち状態でないとの判断に基づいて、ゲスト・スレッド処理のために割込み可能な前記複数のゲスト・スレッドのうちの１つに前記Ｉ／Ｏ割込みをルーティングすることをさらに含む、請求項１に記載の方法。
【請求項５】
ゲスト・スレッド処理のために割込み可能な前記複数のゲスト・スレッドのうちの複数が待ち状態であるとの判断に応答して、前記ゲスト・スレッドの選択のためにルーティング・アルゴリズムが使用される、請求項１に記載の方法。
【請求項６】
前記遅延の開始後に、前記コアの前記複数のゲスト・スレッドのいずれかがゲスト・スレッド処理のために割込み可能であるか否かを判断することをさらに含む、請求項１に記載の方法。
【請求項７】
入出力（Ｉ／Ｏ）割込みの改良型優先ルーティングを実施するシステムであって、プロセッサとメモリとを含み、前記プロセッサは、
コアについて前記Ｉ／Ｏ割込みが保留中であるか否かを判断し、
前記Ｉ／Ｏ割込みが保留中であるとの判断に基づいて、前記コアの複数のゲスト・スレ
ッドのいずれかが、前記割込みのゲスト・スレッド処理のために割込み可能であるか否かを判断し、
ゲスト・スレッド処理のために割込み可能な前記複数のゲスト・スレッドのうちの少なくとも１つが待ち状態であるか否かを判断し、
ゲスト・スレッド処理のために割込み可能な前記複数のゲスト・スレッドのうちの前記少なくとも１つが待ち状態であるとの判断に基づいて、前記Ｉ／Ｏ割込みを、ゲスト・スレッド処理のために割込み可能であって待ち状態であるゲスト・スレッドにルーティングし、
前記複数のゲスト・スレッドのうちのいずれも前記ゲスト・スレッド処理のために割込み可能でないとの判断に基づいて、前記Ｉ／Ｏ割込みをホストにルーティングするために遅延を開始するように構成された、システム。
【請求項８】
前記Ｉ／Ｏ割込みが保留割込みアレイにおいて保留として示される、請求項７に記載のシステム。
【請求項９】
各ゲスト・スレッドの状況ビットおよび制御ビットが、前記割込みの前記ゲスト・スレッド処理のために前記スレッドを割込み可能にするように構成された、請求項７に記載のシステム。
【請求項１０】
前記プロセッサは、ゲスト・スレッド処理のために割込み可能な前記複数のゲスト・スレッドのいずれも待ち状態でないとの判断に基づいて、ゲスト・スレッド処理のために割込み可能な前記複数のゲスト・スレッドのうちの１つに前記Ｉ／Ｏ割込みをルーティングするようにさらに構成された、請求項７に記載のシステム。
【請求項１１】
ゲスト・スレッド処理のために割込み可能な前記複数のゲスト・スレッドのうちの複数が待ち状態であるとの判断に応答して、前記ゲスト・スレッドの選択のためにルーティング・アルゴリズムが使用される、請求項７に記載のシステム。
【請求項１２】
前記プロセッサは、前記遅延の開始後に、前記コアの前記複数のゲスト・スレッドのいずれかがゲスト・スレッド処理のために割込み可能であるか否かを判断するようにさらに構成された、請求項７に記載のシステム。
【請求項１３】
入出力（Ｉ／Ｏ）割込みの改良型優先ルーティングを実施するためのコンピュータ・プログラムであって、前記プログラム命令はプロセッサに、
コアについて前記Ｉ／Ｏ割込みが保留中であるか否かを判断させ、
前記Ｉ／Ｏ割込みが保留中であるとの判断に基づいて、前記コアの複数のゲスト・スレッドのいずれかが、前記割込みのゲスト・スレッド処理のために割込み可能であるか否かを判断させ、
ゲスト・スレッド処理のために割込み可能な前記複数のゲスト・スレッドのうちの少なくとも１つが待ち状態であるか否かを判断させ、
ゲスト・スレッド処理のために割込み可能な前記複数のゲスト・スレッドのうちの前記少なくとも１つが待ち状態であるとの判断に基づいて、前記Ｉ／Ｏ割込みを、ゲスト・スレッド処理のために割込み可能であって待ち状態であるゲスト・スレッドにルーティングさせ、
前記複数のゲスト・スレッドのうちのいずれも前記ゲスト・スレッド処理のために割込み可能でないとの判断に基づいて、前記Ｉ／Ｏ割込みをホストにルーティングするために遅延を開始させる
コンピュータ・プログラム。
【請求項１４】
前記Ｉ／Ｏ割込みが保留割込みアレイにおいて保留として示される、請求項１３に記載
のコンピュータ・プログラム。
【請求項１５】
各ゲスト・スレッドの状況ビットおよび制御ビットが、前記割込みの前記ゲスト・スレッド処理のために前記スレッドを割込み可能にするように構成された、請求項１３に記載のコンピュータ・プログラム。
【請求項１６】
前記プログラム命令は、前記プロセッサに、
ゲスト・スレッド処理のために割込み可能な前記複数のゲスト・スレッドのいずれも待ち状態でないとの判断に基づいて、ゲスト・スレッド処理のために割込み可能な前記複数のゲスト・スレッドのうちの１つに前記Ｉ／Ｏ割込みをルーティングさせる、請求項１３に記載のコンピュータ・プログラム。
【請求項１７】
ゲスト・スレッド処理のために割込み可能な前記複数のゲスト・スレッドのうちの複数が待ち状態であるとの判断に応答して、前記ゲスト・スレッドの選択のためにルーティング・アルゴリズムが使用される、請求項１３に記載のコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般には、マルチスレッド・プロセッサの効率的割込みルーティングに関し、より詳細には、ホストまたは割込み可能コアによる待ち状態のスレッドの処理を容易にする、入出力（Ｉ／Ｏ）割込みの改良型優先ルーティングに関する。
【背景技術】
【０００２】
一般に、プロセッサ速度は過去数十年間で向上したが、それに応じたメモリ・アクセス速度の向上はなかった。その結果として、コンピューティング・システムにおけるプロセッサ・サイクル・タイムが高速であるほど、メモリからのデータを待つ際の遅延が顕著になる。このような遅延の影響は、コンピューティング・システムのプロセッサ内のマルチスレッディングによって低減される場合がある。マルチスレッディングは、プロセッサの様々なコアをスレッドと呼ばれる複数の命令ストリームが共用することができるようにする。例えば、コアによって処理されている第１のスレッドにおける待ち時間中に、第２のスレッドがそのコアの資源を使用することができる。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
しかし、この待ち時間を利用するためには、コアはＩ／Ｏ割込みを受け取る必要がある。Ｉ／Ｏ割込みの現在の管理方法では、割込み可能なホスト（例えばハイパーバイザ）が、コアの割込み可能ゲストよりも高い優先順位で処理割込みを受け取る必要がある。従って、Ｉ／Ｏ割込み処理を完了するために、ホスト自体がゲストの割込みの最初の処理を行い、その後、割込み可能スレッド、場合によってはそのコア上で動作していた同じスレッドをディスパッチする必要がある。残念ながら、現ゲスト・スレッドのうちの１つが同じＩ／Ｏ割込みが可能である間のホストによるＩ／Ｏ割込みのこのような現在の管理方法は、処理待ち時間を生じさせる。従って発明が解決しようとする課題はマルチスレッド・プロセッサの効率的割込みルーティングの方法を提供することである。
【課題を解決するための手段】
【０００４】
本発明の一実施形態によると、入出力（Ｉ／Ｏ）割込みの改良型優先ルーティングを実施する方法は、プロセッサが、コアについて前記Ｉ／Ｏ割込みが保留中であるか否かを判断することと、プロセッサが、Ｉ／Ｏ割込みが保留中であるとの判断に応じて、コアの複数のゲスト・スレッドのいずれかが、割込みのゲスト・スレッド処理のために割込み可能であるか否かを判断することと、プロセッサが、ゲスト・スレッド処理のために割込み可能な複数のゲスト・スレッドのうちの少なくとも１つが待ち状態であるか否かを判断することと、ゲスト・スレッド処理のために割込み可能な複数のゲスト・スレッドのうちの少なくとも１つが待ち状態であるとの判断に応じて、プロセッサが前記Ｉ／Ｏ割込みを、ゲスト・スレッド処理のために割込み可能であって待ち状態であるゲスト・スレッドにルーティングすることとを含む。
【０００５】
本発明の技術により、その他の特徴および利点も実現される。本発明のその他の実施形態および態様が本明細書で詳細に記載されており、特許請求の範囲に記載の発明の一部とみなされる。その利点および特徴とともに本発明についてよりよく理解するために、本明細書の記載および図面を参照されたい。
【０００６】
本発明とみなされる対象物は、本明細書末尾にある特許請求の範囲で詳細に示され、明確に請求されている。本発明の上記およびその他の特徴および利点は、以下の詳細な説明を添付図面とともに読めば明らかになる。
【図面の簡単な説明】
【０００７】
【図１】マルチスレッディング・システムのコンピューティング・デバイスの概略を示す図である。
【図２】マルチスレッディング・システムのプロセッサの概略を示す図である。
【図３】マルチスレッディング・システムによるプロセス・フローを示す図である。
【図４】マルチスレッディング・システムによるプロセス・フローを示す図である。
【図５】マルチスレッディング・システムによるプロセス・フローを示す図である。
【図６】マルチスレッディング・システムによるプロセス・フローを示す図である。
【発明を実施するための形態】
【０００８】
上述のように、マルチスレッド・プロセッサのホストによるＩ／Ｏ割込みの管理によって、処理待ち時間が生じる。従って、ホストまたは割込み可能コアが現在待ち状態にあるスレッドを優先させることを容易にする、入出力（Ｉ／Ｏ）割込みの改良型優先ルーティングが必要である。
【０００９】
一般には、本明細書で開示する本発明の実施形態は、複数のスレッドを処理するために複数のコアのうちの少なくとも１つのコアを使用するマルチスレッディング・システム、方法またはコンピュータ・プログラム製品あるいはこれらの組合せを含むことができる。また、任意の時点で、複数のコアの外部で発信された割込み信号を、複数のコアにブロードキャストすることもできる。割込み信号がブロードキャストされると、割込み可能なコアのうちの１つのコアにのみ割込み信号を送る、複数コアのうちの割込み可能コア間の直列化が行われる。即ち、Ｉ／Ｏ割込みは浮動割込みである（例えば、システムにおいてＩ／Ｏ割込みが保留にされると、そのＩ／Ｏ割込みはシステム内のすべての物理コアで保留にされる）。その後、それらのコア上の各スレッドはそれらの割込みが可能とされるかまたは不能にされる。例えば、以下でさらに説明するように、割込み可能または割込み不能は、ゲスト・プログラム状況ワード・ビット６（ｗｏｒｄ  ｂｉｔ  ６：ＰＳＷ．６）、ゲスト制御レジスタ６（ｃｏｎｔｒｏｌ  ｒｅｇｉｓｔｅｒ：ＣＲ６）、ホストＰＳＷ．６、およびゾーン・マスク・テーブル（ｚｏｎｅ  ｍａｓｋ  ｔａｂｌｅ：ＺＭＴ）に基づくことができる。システムにおいて割込み可能な各コア上のハードウェアが独立してＩ／Ｏ割込みファームウェア・ルーチンを呼び出し、その割込みがゲスト割込みであるかホスト割込みであるかをファームウェアに示す。このファームウェア・ルーチンは、呼び出されると割込みの「デキュー」を試みる。このデキューに応答して、システム・ハードウェアが１つのコア（例えばデキューを要求した最初のコア）に対して、そのコアが割込みのデキューに成功したことを示し、システムにおいて保留でなくなるようにそのＩ／Ｏ割込みをキューから除去する。システム内の他のコアが同じＩ／Ｏ割込みのデキューを試みた場合、そのデキューが失敗したことがそのコアに通知される。割込みのデキューに成功したコア上のファームウェアは、ハードウェアによって決まる優先順位に基づいてそのＩ／Ｏ割込みをハイパーバイザ（例えばホスト）またはゲスト・ソフトウェアに提示する。ゲストがアクティブである間に割込みがホストに提示される場合は、ファームウェアがハードウェアにおいてゲスト状態を保存してホスト状態を復元するために必要とする処理がある。ハイパーバイザが割込みを受け取ると、ハイパーバイザにもゲスト状態を復元してそのＩ／Ｏ割込みを適切なゲストに提示するために行う追加の作業がある。
【００１０】
動作時、例えばチャネル・サブシステムからシステムにＩ／Ｏ割込みが提示された場合、（例えばその割込みに関連付けられた）割込みデバイスのゾーンおよび割込みサブクラス（ｉｎｔｅｒｒｕｐｔ  ｓｕｂｃｌａｓｓ：ＩＳＣ）に対応するビットが、各コアの保留割込みアレイ（ｐｅｎｄｉｎｇ  ｉｎｔｅｒｒｕｐｔｉｏｎ  ａｒｒａｙ：ＰＩＡ）に設定される。ＩＳＭは、ビットのマスクであり、ＩＳＣごとに１つずつ設けられ、例えば割込み許可を制御するためのＣＲ６におけるＩＳＭである。ＰＩＡ項目はゾーン番号が付けられ、同様にＩＳＭと考えることもできる。一実施形態では、８個のＩＳＣがあり、従ってＰＩＡはサポートされている論理区画（ＬＰＡＲ）またはゾーンごとに８ビットを含む。ゲスト・スレッドに関連する唯一のＰＩＡ項目は、現在コア・ハードウェア上で動作しているゾーンの保留Ｉ／Ｏ割込みを表す項目である。現在のゾーンおよび特定のＩＳＣについてＩ／Ｏ割込みが保留中の場合、その割込みは、１）ゲストＰＳＷ．６でＩ／Ｏ許可がオンになっており、２）ゲストＣＲ６の８ビット割込みサブクラス・マスク（ＩＳＭ）ビットにおいてそのＩＳＣに対応するビットがオンになっている場合に、ゲストにおいて可能にされる。ゲストを実行中のホストの観点から見ると、ＰＩＡで示される保留Ｉ／Ｏ割込みは、現在のゾーンを含めていずれのゾーンにも適用可能である。特定のゾーン内の特定のＩＳＣについてＩ／Ｏ割込みが保留中の場合、その割込みは、１）ホストＰＳＷビット６がオンであり、２）対応するＺＭＴにおいてその特定のゾーンおよびＩＳＣのための割込み許可がオンになっている場合に、ホストにおいて可能にされる。ＺＭＴには、サポートされているゾーンごとに８個の割込み許可ビットがあり、ＰＩＡ内のビットに直接対応する。現在のゾーンについて保留中のＩ／Ｏ割込みは、ゲストとホストの両方で同時に可能とすることができる。
【００１１】
ＰＩＡにおいて保留中の割込みが１つまたは複数のゲスト・スレッドまたはホストあるいはその両方で可能にされると、コア・ハードウェア上でＩ／Ｏ割込み優先処理が呼び出される。従来の実装形態では、ゲストとホストの両方が任意の所定のスレッドで特定のＩ／Ｏ割込みが可能になっている場合、そのＩ／Ｏ割込みは（例えばホストの優先順位がより高いため）ホストに提示されることになる。本明細書に記載の実施形態では、これと同じ場合に、Ｉ／Ｏ割込みは代わりにゲストに提示され得る。さらに、ゲストＰＳＷビット１４で示されているゲスト待ち状態に基づいて、割込み可能ゲスト・スレッドのうちで優先されているコア上の１つの物理スレッドにのみ特定のＩ／Ｏ割込みを提示するために、優先ハードウェアが追加された。この優先方式は、コア内のスレッド間で優先順位を付ける。さらに、Ｉ／Ｏ割込みが保留中であって、そのコア上のホストにおいて割込み可能であり、そのコア上のゲスト・スレッドでその割込みが可能とされていないか、またはその割込みがそのコア上で実行されているスレッドに適用されない場合、そのホスト割込みを提示する（例えばそのコア上で割込みを受け付ける）前に遅延が加えられる。これによって、別のコア上の割込み可能なゲスト・スレッドがあればそのゲスト・スレッドが最初にそのＩ／Ｏ割込みを行うことができ、それによってシステム内のコア間で間接的に優先順位が付けられる。
【００１２】
次に図１を参照すると、コンピューティング・デバイス１１２を含むマルチスレッディング・システム１００の例が示されている。マルチスレッディング・システム１００は、適合するコンピューティング・ノードの一例に過ぎず、本明細書に記載の発明の実施形態の使用または運用性の範囲について制限を示唆することを意図したものではない（実際に、追加または代替構成要素または実装形態あるいはその両方を使用することができる）。即ち、マルチスレッディング・システム１００およびその要素は、多くの異なる形態をとることができ、複数または代替あるいはその両方の構成要素および機構を含み得る。また、マルチスレッディング・システム１００は、本明細書に記載されているように様々な通信技術を利用する任意の数および組合せのコンピューティング・デバイスおよびネットワークを含むかまたは採用することができ、あるいはその両方とすることができる。それにもかかわらず、マルチスレッディング・システム１００は、実装可能であるかまたは本明細書に記載の運用性のいずれかを実行することが可能であるか、あるいはその両方である。
【００１３】
マルチスレッディング・システム１００内には、他の多くの汎用または専用コンピューティング・システム環境または構成とともに動作可能なコンピューティング・デバイス１１２がある。マルチスレッディング・システム１００またはコンピューティング・デバイス１１２あるいはその両方などのシステムまたはコンピューティング・デバイスあるいはその両方は、米国ニューヨーク州アーモンクのインターナショナル・ビジネス・マシーンズ・コーポレーションによって流通されているＡＩＸ  ＵＮＩＸ（Ｒ）およびｚ／ＯＳオペレーティング・システム、マイクロソフト・ウィンドウズ（Ｒ）（Ｍｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ（Ｒ））オペレーティング・システム、Ｕｎｉｘ（Ｒ）オペレーティング・システム（例えば米国カリフォルニア州レッドウッドショアーズのオラクル・コーポレーションによって流通されているソラリス（Ｓｏｌａｒｉｓ）オペレーティング・システム）、Ｌｉｎｕｘオペレーティング・システム、米国カリフォルニア州クパティーノのアップル社によって流通されているＭａｃ  ＯＳ  ＸおよびｉＯＳオペレーティング・システム、カナダ国ウォータールーのリサーチ・イン・モーションによって流通されているブラックベリー（ＢｌａｃｋＢｅｒｒｙ）ＯＳ、およびオープン・ハンドセット・アライアンスによって開発されたアンドロイド（Ａｎｄｒｏｉｄ）オペレーティング・システムの様々なバージョンまたは種類あるいはその両方を含むがこれらには決して限定されない、いくつかのコンピュータ・オペレーティング・システムのうちの任意のオペレーティング・システムを採用することができる。コンピューティング・デバイス１１２とともに使用するのに適合すると考えられるコンピューティング・システム、環境または構成あるいはこれらの組合せの例としては、パーソナル・コンピュータ・システム、サーバ・コンピュータ・システム、シン・クライアント、シック・クライアント、ハンドヘルドまたはラップトップ・デバイス、マルチプロセッサ・システム、マイクロプロセッサ・ベースのシステム、セット・トップ・ボックス、プログラマブル民生電子機器、ネットワークＰＣ、ミニコンピュータ・システム、コンピュータ・ワークステーション、サーバ、デスクトップ、ノートブック、ネットワーク・デバイス、メインフレーム・コンピュータ・システム、および上記のシステムまたはデバイスのいずれかを含む分散クラウド・コンピューティング環境などが含まれるがこれらには限定されない。
【００１４】
コンピューティング・デバイス１１２については、コンピュータ・システムによって実行されるプログラム・モジュールなどのコンピュータ・システム実行可能命令の一般の文脈で説明することができる。一般に、プログラム・モジュールは、特定のタスクを実行するかまたは特定の抽象データ型を実装する、ルーチン、プログラム、オブジェクト、コンポーネント、ロジック、データ構造などを含み得る。コンピューティング・デバイス１１２は、通信ネットワークを介して接続されているリモート処理デバイスによってタスクが実行される分散クラウド・コンピューティング環境で実施されてもよい。分散クラウド・コンピューティング環境では、プログラム・モジュールはメモリ・ストレージ・デバイスを含むローカルとリモートの両方のコンピュータ・システム記憶媒体に収容され得る。
【００１５】
図１に示すように、マルチスレッディング・システム１００におけるコンピューティング・デバイス１１２は、マルチスレッディング・システム１００、その方法または要素あるいはそれらの組合せの動作および機能に基づいて改良される汎用コンピューティング・デバイスの形で示されている。コンピューティング・デバイス１１２の構成要素には、１つまたは複数のプロセッサまたは処理ユニット（例えば複数のスレッド１１５をサポートする少なくとも１つのコア１１４ａを含むプロセッサ１１４、例えば２つ以上のスレッド１１５を含むプロセッサ１１４のコア１１４ａを含むマルチスレッディング・システム１００）と、メモリ１１６と、プロセッサ１１４およびメモリ１１６を含む様々なシステム構成要素を結合するバス１１８とが含まれることがあるがこれらには限定されない。コンピューティング・デバイス１１２は、典型的には、様々なコンピュータ・システム可読媒体も含む。そのような媒体は、コンピューティング・デバイス１１２がアクセス可能な任意の入手可能な媒体とすることができ、揮発性媒体と不揮発性媒体の両方、取り外し可能と取り外し不能媒体の両方を含む。
【００１６】
プロセッサ１１４は、メモリ１１６からコンピュータ可読プログラム命令を受け取ると、それらの命令を実行することによって、マルチスレッディング・システム１００によって定義された１つまたは複数のプロセスを実行することができる。プロセッサ１１４は、算術演算、論理演算または入出力演算あるいはこれらの組合せを実行することによってコンピュータ可読プログラム命令を実行する、コンピューティング・デバイス１１２によって使用される任意の処理ハードウェア、ソフトウェア、またはハードウェアとソフトウェアとの組合せを含み得る。プロセッサ１１４およびコア１１４ａの要素の例としては、算術演算および論理演算を実行する算術論理演算ユニット、メモリから命令を取り出し、復号し、実行する制御ユニット、および複数の並列コンピューティング要素を使用するアレイ・ユニットが含まれるがこれらには限定されない。
【００１７】
図２に、コントローラ２１５に結合されたプロセッサ１１４を含むコンピューティング環境の実施形態を示す。一例では、ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅに基づくコンピューティング環境が、米国ニューヨーク州アーモンクのインターナショナル・ビジネス・マシーンズ・コーポレーションによって提供されるＳｙｓｔｅｍ  ｚサーバを含む。プロセッサ１１４は、例えば、１つまたは複数の区画（例えば論理区画ＬＰ１ないしＬＰｎ）と、１つまたは複数の物理コア（例えばコア１ないしコアｍ）と、レベル０ハイパーバイザ２１４（例えば論理区画マネージャ）とを含むことができる。コントローラ２１５は、要求を出す異なるプロセッサ間のアービトレーションを司る集中ロジックを含むことができる。例えば、コントローラ２１５がメモリ・アクセス要求を受け取ると、コントローラ２１５はその記憶場所へのアクセスが許可されているか否かを判断し、許可されている場合は、その記憶場所の内容をプロセッサ１１４に提供すると同時に、そのコンプレックス内のプロセッサ間のメモリ整合性を維持する。別のコントローラ２１５が、図１に示すＩ／Ｏインターフェース１３０を介しておよびネットワーク・アダプタ１３２から、Ｉ／Ｏアダプタとの間で要求を管理してもよい。
【００１８】
物理コアは、論理区画に割り当てられた物理プロセッサ資源を含む。論理区画は、１つまたは複数の論理プロセッサを含むことができ、各論理プロセッサはその区画に割り当てられた物理プロセッサ資源のすべてまたは割当て分を表す。物理コアは、基礎をなすコアの物理プロセッサ資源がその区画のために確保されるように特定の区画の論理コア専用とされるか、または、基礎をなすコア資源の物理プロセッサ資源が別の区画にとって利用可能となり得るように、別の区画の論理コアと共用されてもよい。各論理区画は、別個のシステムとして機能可能とすることができる。即ち、各論理区画は独立してリセットすることができ、望ましい場合は、最初にオペレーティング・システム（例えばオペレーティング・システムＯＳ１ないしＯＳｎ）をロードすることができ、異なるプログラムとともに動作することができる。論理区画で動作するオペレーティング・システムまたはアプリケーション・プログラムは、全システムにアクセスすることができるように見える場合があるが、実際には利用可能なのはシステム全体の一部のみである。ハードウェアとライセンス内部コード（Ｌｉｃｅｎｓｅｄ  Ｉｎｔｅｒｎａｌ  Ｃｏｄｅ）（ファームウェア、マイクロコードまたはミリコードとも呼ばれる）との組合せが、１つの論理区画内のプログラムが異なる論理区画内のプログラムにアクセスしたり、干渉したりするのを防止する。これによって、いくつかの異なる論理区画が単一または複数の物理コア上でタイム・スライス方式により動作することが可能になる。一実施形態では、各物理コアは１つまたは複数の中央プロセッサ（本明細書では「物理スレッド」とも呼ぶ）を含む。図２に示す例では、各論理区画は常駐オペレーティング・システムを有し、常駐オペレーティング・システムは１つまたは複数の論理区画ごとに異なっていてもよい。各論理区画は、オペレーティング・システムが動作可能な仮想マシンまたはゲスト構成の例である。
【００１９】
図２に示す実施形態では、論理区画ＬＰ１ないしＬＰｎは、物理コアであるコア１ないしコアｍ上で動作するファームウェアによって実装されるレベル０ハイパーバイザ２１４によって管理される。論理区画ＬＰ１ないしＬＰｎおよびハイパーバイザ２１４はそれぞれ、物理コアであるコア１ないしコアｍに関連付けられた中央ストレージ（メモリ）のそれぞれの部分に存在する１つまたは複数のプログラムを含む。ハイパーバイザ２１４の一例は、米国ニューヨーク州アーモンクのインターナショナル・ビジネス・マシーンズ・コーポレーションによって提供されるプロセッサ資源／システム管理機構（Ｐｒｏｃｅｓｓｏｒ  Ｒｅｓｏｕｒｃｅ／Ｓｙｓｔｅｍｓ  Ｍａｎａｇｅｒ：ＰＲ／ＳＭ（商標））である。
【００２０】
図１をいま一度参照すると、メモリ１１６は、コンピューティング・デバイス１１２のプロセッサ１１４による使用のためにマルチスレッディング・システム１００によって提供されるコンピュータ可読プログラム命令を保持し、記憶する、有形のデバイスを含み得る。メモリ１１６は、ランダム・アクセス・メモリ１２０、キャッシュ・メモリ１２２またはストレージ・システム１２４あるいはこれらの組合せなどの揮発性メモリの形態のコンピュータ・システム可読媒体を含み得る。バス１１８は、様々なバス・アーキテクチャのいずれかを使用する、メモリ・バスまたはメモリ・コントローラ、周辺機器用バス、アクセラレーテッド・グラフィクス・ポート、およびプロセッサ・バスまたはローカル・バスを含む、いくつかの種類のバス構造のうちのいずれか１つまたは複数のバス構造を表す。例として、そのようなアーキテクチャは、インダストリアル・スタンダード・アーキテクチャ（Ｉｎｄｕｓｔｒｉａｌ  Ｓｔａｎｄａｒｄ  Ａｒｃｈｉｔｅｃｔｕｒｅ：ＩＳＡ）バス、マイクロ・チャネル・アーキテクチャ（Ｍｉｃｒｏ  ｃｈａｎｎｅｌ  Ａｒｃｈｉｔｅｃｔｕｒｅ：ＭＣＡ）バス、エンハンストＩＳＡ（ＥＩＳＡ）バス、ビデオ・エレクトロニクス・スタンダーズ・アソシエーション（Ｖｉｄｅｏ  Ｅｌｅｃｔｒｏｎｉｃｓ  Ｓｔａｎｄａｒｄｓ  Ａｓｓｏｃｉａｔｉｏｎ：ＶＥＳＡ）ローカル・バス、およびペリフェラル・コンポーネント・インターコネクト（ＰＣＩ）バスを含むが、これらには限定されない。
【００２１】
一例に過ぎないが、ストレージ・システム１２４は、取り外し不能不揮発性磁気媒体（図示せず。典型的には「ハード・ドライブ」と呼ばれる）との間での読み書きのために設けることができる。図示されていないが、取り外し可能不揮発性磁気ディスク（例えば「フロッピー（Ｒ）・ディスク」）との間での読み書きのための磁気ディスク・ドライブ、および、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭまたはその他の光媒体などの取り外し可能不揮発性光ディスクとの間での読み書きのための光ディスク・ドライブを設けることができる。そのような場合、１つまたは複数のデータ媒体インターフェースによってそれぞれをバス１１８に接続することができる。以下でさらに図示し、説明するように、メモリ１１６は、本発明の実施形態の動作を実行するように構成された１組（例えば少なくとも１つ）のプログラム・モジュールを有する少なくとも１つのプログラム製品を含むことができる。ストレージ・システム１２４（またはメモリ１１６あるいはその両方）は、データベース、データ・リポジトリまたはその他のデータ・ストアを含むことができ、階層データベース、ファイル・システムにおける１組のファイル、プロプライエタリ形式のアプリケーション・データベース、リレーショナル・データベース・マネージメント・システム（ＲＤＢＭＳ）などを含む様々な種類のデータの記憶、このデータへのアクセス、およびこのデータの取出しのための様々な種類の機構を含み得る。ストレージ・システム１２４は、一般には、例示のように、上記のもののうちの１つなどのコンピュータ・オペレーティング・システムを採用するコンピューティング・デバイス１１２内に含めることができ、様々な方式のうちの１つまたは複数でネットワークを介してアクセスされる。
【００２２】
１組（少なくとも１つ）のプログラム・モジュール１２８を有するプログラム／ユーティリティ１２６を、例えば、オペレーティング・システム、１つまたは複数のアプリケーション・プログラム、その他のプログラム・モジュール、およびプログラム・データとともにメモリ１１６に記憶することができるが、これには限定されない。オペレーティング・システム、１つまたは複数のアプリケーション・プログラム、その他のプログラム・モジュール、およびプログラム・データまたはこれらの何らかの組合せのそれぞれは、ネットワーク環境の実装形態を含み得る。
【００２３】
コンピューティング・デバイス１１２は、入出力（Ｉ／Ｏ）インターフェース１３０またはネットワーク・アダプタ１３２あるいはその両方を介して通信することもできる。Ｉ／Ｏインターフェース１３０またはネットワーク・アダプタ１３２あるいはその両方は、コンピューティング・デバイス１１２によって、コンピューティング・デバイス１１２の内部または外部あるいはその両方の要素間で通信するために使用される物理または仮想あるいはその両方の機構を含み得る。例えば、Ｉ／Ｏインターフェース１３０は、キーボード、ポインティング・デバイス、ディスプレイ１４２などの１つまたは複数の外部デバイス１４０、またはユーザがコンピューティング・デバイス１１２と対話することができるようにする１つまたは複数のデバイス、またはコンピューティング・デバイス１１２が１つまたは複数の他のコンピューティング・デバイスと通信することができるようにする任意のデバイス（例えばネットワーク・カード、モデムなど）あるいはこれらの組合せと通信することができる。また、コンピューティング・デバイス１１２は、ネットワーク・アダプタ１３２を介して、ローカル・エリア・ネットワーク（ＬＡＮ）、または一般のワイド・エリア・ネットワーク（ＷＡＮ）、またはパブリック・ネットワーク（例えばインターネット）あるいはこれらの組合せなどの１つまたは複数のネットワークと通信することができる。従って、Ｉ／Ｏインターフェース１３０またはネットワーク・アダプタ１３２あるいはその両方は、コンピューティング・デバイス１１２内で、またはコンピューティング・デバイス１１２のために、信号またはデータを受信または送信するように構成され得る。図のように、Ｉ／Ｏインターフェース１３０およびネットワーク・アダプタ１３２は、バス１１８を介してコンピューティング・デバイス１１２の他の構成要素と通信する。なお、図示はされていないが、他のハードウェアまたはソフトウェアあるいはその両方の構成要素をコンピューティング・デバイス１１２とともに使用し得ることを理解されたい。例としては、マイクロコード、デバイス・ドライバ、冗長処理ユニット、外部ディスク・ドライブ・アレイ、ＲＡＩＤシステム、テープ・ドライブ、およびデータ・アーカイバル・ストレージ・システムなどがあるがこれらには限定されない。
【００２４】
図１によって、マルチスレッディング・システム１００のための単一アイテム（およびその他のアイテム）を示しているが、これらの表現は限定的であることを意図したものではなく、従って任意のアイテムが複数のアイテムを表現し得る。例えば、プロセッサ１１４は、それぞれの処理コアが複数のスレッドを実行し、本明細書に記載の改良型ルーティング優先に基づいてＩ／Ｏ割込みを受け取ることが可能な、複数の処理コアを含んでもよい。
【００２５】
図３を参照しながら、マルチスレッディング・システム１００による改良型優先ルーティングの一実施形態について説明する。図３は、プロセス・フロー３００を示す。プロセス・フロー３００は、ブロック３０５で開始し、処理を必要としＰＩＡで保留になっているＩ／Ｏ割込みが、複数のコアのうちのコア上で可能にされる。Ｉ／Ｏ割込みは、ゲストＰＳＷ．６と、ゲストＣＲ６のＩＳＭとを介してコアのゲスト・スレッドについて可能にされる。ホスト監視のために、現在コア上で動作していないゾーンを含めてすべてのゾーンのＩ／Ｏ割込みが、ホストＰＳＷ．６およびＺＭＴを介して可能にされる。現在のゾーンについて保留中のＩ／Ｏ割込みがあれば、ゲストとホストの両方で同時に可能とすることができる。
【００２６】
決定ブロック３２０で、プロセス・フロー３００は、ゲスト制御ビットと状況ビットとが、保留Ｉ／Ｏ割込みが可能にされているか否かを判断する。例えば、プロセス・フロー３００は、コアのゲスト・スレッドのいずれかのゲストＰＳＷ．６とＣＲ６とで保留Ｉ／Ｏ割込みが可能になっているか否かを判断する。いずれかのゲスト・スレッドが割込み可能の場合、プロセス・フロー３００は決定ブロック３２５に進み（例えば「Ｙｅｓ」矢印で示すように）、そのコア上にあってその割込みが可能な複数のゲスト・スレッドのいずれかが待ち状態であるか否かを判断する。そのＩ／Ｏ割込みについて待ち状態の割込み可能なゲスト・スレッドがない場合、プロセス・フロー３００はブロック３３０に進み（例えば「Ｎｏ」矢印で示すように）、保留Ｉ／Ｏ割込みは、その保留Ｉ／Ｏ割込みが可能とされているゲスト・スレッドにルーティングされる。複数のゲスト・スレッドのうちの少なくとも１つが保留Ｉ／Ｏ割込みについて待ち状態であり、割込み可能にされている場合、プロセス・フローはブロック３３５に進み（例えば「Ｙｅｓ」矢印で示すように）、保留Ｉ／Ｏ割込みはこの割込みのために待ち状態にあり、割込み可能にされているゲスト・スレッドにルーティングされる。このようにして、プロセス・フロー３００は、待ち状態のゲスト・スレッドによる処理を容易にするＩ／Ｏ割込みの改良型優先ルーティングを実施する。詳細には、Ｉ／Ｏ割込みルーティング優先順位は次のように変更される。１つまたは複数の待ち状態の割込み可能スレッドがある場合、それらのスレッドのうちの１つにＩ割込みが与えられる。待ち状態であって、保留中の割込みが可能にされているスレッドがない場合、Ｉ／Ｏ割込みはその割込みが可能にされているスレッドに与えられる。また、待ち状態の複数のスレッドにルーティングするか（３３５）、または待ち状態でない複数のスレッドにルーティングするか（３３０）の判断は、マルチスレッディング・システム１００がランダムまたはその他のルーティング・アルゴリズムを使用して選択してもよい。
【００２７】
別の例として、図４にＩ／Ｏ割込みをルーティングする細分プロセス・フロー４００を示す。即ち、マルチスレッディング・システム１００のハードウェアが、ＰＩＡ４０５内のＩ／Ｏ割込み保留がアクティブなゾーンのＩ／Ｏ割込み保留であり、ゲストＰＳＷ．６とゲストＣＲ６とが割込み可能になっていることを検出した後、ブロック４３０に示すようにゲストにおいてそのＩ／Ｏ割込みが可能にされる。このゲスト割込み許可は、コア上のスレッドごとに独立して適用される。ＰＩＡ４０５にいずれかのゾーンのＩ／Ｏ割込み保留がある場合、ホストＰＳＷ．６およびＺＭＴ４１０内の対応するビットがオンであれば、ブロック４５０に示すように、ホスト監視によってその割込みが可能にされる（ただし、ゾーン０にはＺＭＴ参照は適用されない）。特定の割込みが、このコア上のゲスト・スレッドとホストの両方で可能になっている場合、その割込みはゲストに与えられる。
【００２８】
この改良型優先ルーティングをマルチスレッディング・システム１００によって使用することができるようにする遅延の一実施形態について、図５を参照しながら説明する。図５はプロセス・フロー５００を示す。プロセス・フロー５００はブロック５０５で開始し、処理する必要がありＰＩＡで保留になっているＩ／Ｏ割込みが、複数のコアのうちのコア上で可能にされる。Ｉ／Ｏ割込みは、ゲストＰＳＷ．６と、ゲストＣＲ６のＩＳＭとを介してコアのゲスト・スレッドについて可能にされる。ホスト監視のために、現在コア上で動作していないゾーンを含めてすべてのゾーンのＩ／Ｏ割込みが、ホストＰＳＷ．６およびＺＭＴを介して可能にされる（ただし、ゾーン０にはＺＭＴ参照は適用されない）。現在のゾーンについて保留中のＩ／Ｏ割込みがあれば、ゲストとホストの両方で同時に可能とすることができる。
【００２９】
決定ブロック５２０で、プロセス・フロー５００は、ゲスト制御および状況ビットでその保留Ｉ／Ｏ割込みが可能になっているか否かを判断する。例えば、プロセス・フロー５００は、保留Ｉ／Ｏ割込みが、コアのゲスト・スレッドのうちのいずれかのゲストＰＳＷ．６とＣＲ６とで可能になっているか否かを判断する。いずれかのゲスト・スレッドが割込み可能になっている場合、プロセス・フロー５００はブロック５３０に進み（例えば「Ｙｅｓ」矢印で示すように）、保留Ｉ／Ｏ割込みはその保留Ｉ／Ｏ割込みが可能になっているゲスト・スレッドにルーティングされる。プロセス・フロー５００が、保留Ｉ／Ｏ割込みに、コア上の複数のスレッドのいずれにおいても可能になっている対応するゲストＰＳＷ．６およびＣＲ６がないと判断した場合、プロセス・フロー５００は（「Ｎｏ」矢印で示すように）ブロック５４０に進む。ブロック５４０で、プロセス・フロー５００はその保留Ｉ／Ｏ割込みについてホスト監視のみが可能になっていると特定し、例えばこのコア上でその割込みを受け付ける前に、（遅延がすでに進行中でない場合は）、遅延を開始する。遅延は、マルチスレッディング・システム、方法またはコンピュータ・プログラム製品あるいはこれらの組合せによって、ハードコーディングまたはプログラムすることができる。ブロック５４５で、プロセス・フロー５００は遅延が完了したか調べる。
【００３０】
遅延が完了していない場合（例えば「Ｎｏ」矢印で示すように）、決定ブロック５５５で（このコア上で割込みが受け付けられる前の遅延中に）、プロセス・フロー５００は、Ｉ／Ｏ割込み保留がまだあるか否かを判断する。Ｉ／Ｏ割込みがない場合（例えば別のコアが割込みを受け付けた場合）、プロセス・フロー５００はブロック５６０に進み（例えば「Ｎｏ」矢印で示すように）、ハードウェアＩ／Ｏ割込み優先プロセスを終了する。また、決定ブロック５５５で、Ｉ／Ｏ割込みがまだ保留中の場合、プロセス・フロー５００はブロック５２０に戻り（例えば「Ｙｅｓ」矢印で示すように）、遅延を再び調べる前に、ゲスト・スレッド割込み許可がないか複数のスレッドを調べる。この遅延の結果として、そのコア上のスレッドうちの１つまたは別のコア上のスレッドが、ゲストにおいて保留Ｉ／Ｏ割込みを可能にしてＩ／Ｏ割込みを行うことができるようになる。
【００３１】
一般に、ホストＩ／Ｏ割込みを提示する前の遅延中にプロセス・フロー５００がその反復をループするとき、所望の結果は最終的に、元のホスト割込みがこのコアまたは別のコアによってゲスト割込みとして行われたためにＰＩＡ内に保留Ｉ／Ｏ割込みがなくなることである。ブロック５４５の判断で遅延が完了した場合、プロセス・フロー５００はブロック５５０に進み、（例えば「Ｙｅｓ」矢印で示すように）保留Ｉ／Ｏ割込みはホスト処理のためにホストにルーティングされる。従って、Ｉ／Ｏ割込みが遅延の終わりで依然として保留になっている場合にのみ、Ｉ／Ｏ割込みはホストに与えられる。さらに、一実施形態では、遅延の終わりにすべての可能な保留Ｉ／Ｏ割込みが実行され、可能なすべてのＩ／Ｏ割込みが処理されるまでは遅延は開始しない。
【００３２】
マルチスレッディング・システム１００による改良型優先ルーティングの一実施形態について、図６を参照しながら説明する。図６はプロセス・フロー６００を示す。プロセス・フロー６００は、ブロック６０５で始まり、処理する必要がありＰＩＡで保留になっているＩ／Ｏ割込みが、複数のコアのうちのコア上で可能にされる。Ｉ／Ｏ割込みは、コアのゲスト・スレッドについてゲストＰＳＷ．６とゲストＣＲ６のＩＳＭとを介して可能にされる。ホスト監視のために、コア上で現在動作していないゾーンを含めてすべてのゾーンのＩ／Ｏ割込みが、ホストＰＳＷ．６およびＺＭＴを介して可能にされる。現在のゾーンについて保留中のＩ／Ｏ割込みがあれば、ゲストとホストの両方で同時に可能にされ得る。
【００３３】
決定ブロック６２０で、プロセス・フロー６００は、保留Ｉ／Ｏ割込みがゲスト制御ビットおよび状況ビットで可能になっているか否かを判断する。例えば、プロセス・フロー６００は、保留Ｉ／Ｏ割込みがコアのゲスト・スレッドのいずれかのゲストＰＳＷ．６およびＣＲ６で可能になっているか否かを判断する。いずれかのゲスト・スレッドが割込み可能になっている場合、プロセス・フロー６００は、(例えば「Ｙｅｓ」矢印で示すように)決定ブロック６２５に進み、コア上で実行中の、その割込みが可能にされている複数のゲスト・スレッドのいずれかが、待ち状態になっているか判断する。そのＩ／Ｏ割込みのために待ち状態になっており割込み可能になっているゲスト・スレッドがない場合（例えば「Ｎｏ」矢印で示すように）、プロセス・フロー６００はブロック６３０に進み、保留Ｉ／Ｏ割込みは、その保留Ｉ／Ｏ割込みが可能になっているゲスト・スレッドにルーティングされる。複数のゲスト・スレッドのうちの少なくとも１つがその保留Ｉ／Ｏ割込みについて待ち状態であり、割込み可能になっている場合、プロセス・フローは（例えば「Ｙｅｓ」矢印で示すように）ブロック６３５に進み、保留Ｉ／Ｏ割込みは待ち状態の複数のゲスト・スレッドのうち、割込みが可能になっている１つのスレッドにルーティングされる。マルチスレッディング・システム１００は、待ち状態の複数の割込み可能なスレッドに対するルーティング（６３５）か待ち状態でない複数の割込み可能スレッドに対するルーティング（６３０）かを決定する際に、選択のためにランダムまたはその他のルーティング・アルゴリズムを使用してもよい。
【００３４】
決定ブロック６２０に戻り、プロセス・フロー６００が、保留Ｉ／Ｏ割込みに、コアの複数のスレッドのうちのいずれかについて可能にされた対応するゲストＰＳＷ．６およびＣＲ６がないと判断した場合、プロセス・フロー６００は（例えば「Ｎｏ」矢印で示すように）ブロック６４０に進む。ブロック６４０で、プロセス・フロー６００は、保留Ｉ／Ｏ割込みについてホスト監視のみが可能になっていると特定しており、ホストへの保留Ｉ／Ｏ割込みの提示を受け付ける前に、（遅延がすでに進行中でない場合は）、遅延を開始する。遅延は、マルチスレッディング・システム、方法またはコンピュータ・プログラム製品あるいはこれらの組合せによってハードコーディングまたはプログラムすることができる。ブロック６４５で、プロセス・フロー６００は遅延が完了したか確認する。
【００３５】
遅延が完了していない場合(例えば「Ｎｏ」矢印で示すように)、決定ブロック６５５で（このコア上で割込みを受け付ける前の遅延中に）、プロセス・フロー６００は、保留中のＩ／Ｏ割込みがあるか否かを判断する。Ｉ／Ｏ割込みがない場合、プロセス・フロー６００はブロック６６０に進み、(例えば「Ｎｏ」矢印で示すように)ハードウェアＩ／Ｏ割込み優先処理を終了する。また、決定ブロック６５５で、Ｉ／Ｏ割込みがまだ保留中の場合、プロセス・フロー６００は（例えば「Ｙｅｓ」矢印で示すように）、ブロック６２０に戻り、遅延を再び調べる前にゲスト・スレッドＩ／Ｏ割込み許可がないか複数のスレッドを調べる。この遅延の結果として、そのコア上のスレッドうちの１つまたは別のコア上のスレッドが、ゲストにおいて保留Ｉ／Ｏ割込みを可能にしてＩ／Ｏ割込みを行うことができるようになる。
【００３６】
一般に、ホストＩ／Ｏ割込みを受け付ける前の遅延中にプロセス・フロー６００がその反復をループするとき、所望の結果は最終的に、元のホスト割込みがこのコアまたは別のコアによってゲスト割込みとして行われたためにＰＩＡ内に保留Ｉ／Ｏ割込みがなくなることである。ブロック６４５の判断で遅延が完了した場合、プロセス・フロー６００はブロック６５０に進み、（例えば「Ｙｅｓ」矢印で示すように）保留Ｉ／Ｏ割込みはホスト処理のためにホストにルーティングされる。従って、Ｉ／Ｏ割込みが遅延の終わりで依然として保留になっている場合にのみ、Ｉ／Ｏ割込みはホストに与えられる。さらに、一実施形態では、遅延の終わりにすべての可能な保留Ｉ／Ｏ割込みが実行され、可能なすべてのＩ／Ｏ割込みが処理されるまでは遅延は開始しない。
【００３７】
従って、上記に鑑み、マルチスレッディング・システム１００は、（例えば、その時点で重要な作業を行っていないため）割込みを処理するのに最善の状態にある割込み可能待ち状態のゲスト・スレッドにＩ／Ｏ割込みを提示するか、またはそれが不可能な場合は、待ち状態でない割込み可能ゲスト・スレッドにＩ／Ｏ割込みを提示する。また、マルチスレッディング・システム１００は、ホストのＺＭＴによってのみ割込み可能にされたこのコア上のＩ／Ｏ割込みを遅延させることによって、いずれかのゲスト・スレッドが割込み可能とされて割込みを行うための時間を与える。これにより、コアはエミューレーション・モードを出る（例えばコア上のすべてのアクティブ・スレッドを中断させる）必要がなく、Ｉ／Ｏ割込み可能にされたコアを見つけるための不要なホスト処理もない。また、コアは、エミューレーション・モードから出されず、その結果、Ｉ／Ｏ割込みを処理するために同じ構成の割込み可能ゲスト・スレッドをコア上に再ディスパッチすることができる。
【００３８】
改良型優先動作または方法あるいはその両方を実行するマルチスレッディング・システム１００の別の例では、複数のゲスト・スレッドがアクティブになっている論理コアが物理コアにディスパッチされる場合、それらのスレッドのうちの１つまたは複数が、他のスレッドのうちの１つまたは複数がコア上でアクティブに動作している間に割込み可能待ち状態になっていることができる。アクティブ・スレッドは、ＰＳＷ．６およびＣＲ６を介してＩ／Ｏ割込み可能とされるか、またはＩ／Ｏ割込み不能とされてもよい。さらに、ホストは、このゾーンまたは何らかの他のゾーンに対するゾーン・マスク・テーブルを介してＩ／Ｏ割込みについて監視することができる。従って、処理を必要とするＩ／Ｏ割込みが可能とされているスレッドが１つのみの場合、そのＩ／Ｏ割込みはそのスレッドにルーティングされる。処理を必要とするＩ／Ｏ割込みが可能とされているスレッドが複数あり、それらのスレッドのうちの少なくとも１つが割込み可能待ち状態の場合、マルチスレッディング・システム１００の割込み論理は、そのＩ／Ｏ割込みをそれらのスレッドのうち割込み可能待ち状態である１つのスレッドに優先的に与える。Ｉ／Ｏ割込みの許可を現在割込み可能待ち状態になっているスレッドに優先的に与えることによって、Ｉ／Ｏ割込みは有用な動作をしていないスレッドでより速やかに処理され、現在アクティブ状態になっているスレッド上のアプリケーションの実行に割り込むことを回避する。
【００３９】
改良型優先動作または方法あるいはその両方を実行するマルチスレッディング・システム１００の別の例では、複数のゲスト・スレッドが、処理を必要とするＩ／Ｏ割込みが可能な状態であり、それらのスレッドのいずれも割込み可能待ち状態ではない場合、マルチスレッディング・システム１００のルーティング論理は、ランダムに、または内部アルゴリズム（例えばラウンド・ロビンなど）を使用して、Ｉ／Ｏ割込みを受け取るスレッドをそのスレッドの割込み可能状態に基づいて選択してもよい。他のＩＳＣビットに基づいて異なるＩ／Ｏ割込みが可能な状態にある可能性のある他のすべてのスレッドは、最初のスレッドがその割込みの受け付けを完了するまで待たされる。最初のスレッドが受け付けを完了すると、処理を必要とする残りのＩ／Ｏ割込みがまだ可能な状態にあるスレッドによって後続の保留Ｉ／Ｏ割込みが処理される。上記のように、Ｉ／Ｏ割込みのルーティングは、現在待ち状態にあるスレッドがあればそのスレッドを優先させることができる。
【００４０】
改良型優先動作または方法あるいはその両方を実行するマルチスレッディング・システム１００の別の例では、処理を必要とするＩ／Ｏ割込みが可能な状態であるスレッドがコア上になく、しかもそのコアでホストがＺＭＴを介してＰＩＡで現在保留になっている割込みがないか監視中である場合、ホストには処理のためにその割込みがただちには許可されない。逆に、そのコア上での割込み処理の許可に遅延を生じさせ、その割込みはＰＩＡで保留のままとなり、処理のためにただちにはホストに許可されない。この遅延によって、このコア上のスレッドまたは何らかの他のコア上のスレッドがそのＩ／Ｏ割込みを可能な状態にし、その後、そのＩ／Ｏ割込みを処理することができる。即ち、遅延が完了した後、Ｉ／Ｏ割込みが依然として処理を必要とする場合にのみ、そのＩ／Ｏ割込みが処理のためにホストに与えられる。
【００４１】
改良型優先動作または方法あるいはその両方を実行するマルチスレッディング・システム１００の別の例では、待ち状態であって、かつ、処理を必要とするＩ／Ｏ割込みが可能とされているゲスト・スレッドがコア上になく、しかも、待ち状態であってその割込みが可能なゲスト・スレッドが少なくとも１つある場合、割込み可能で待ち状態でないスレッドは、処理のために割込みがただちには許可されない。逆に、そのコア上での割込み処理の許可に遅延を生じさせ、その割込みはＰＩＡで保留のままとなり、処理のためにただちにはホストに許可されない。この遅延によって、そのコア上のスレッドまたは何らかの他のコア上のスレッドがそのＩ／Ｏ割込みのために待ち状態になることができ、その後、そのＩ／Ｏ割込みを処理することが可能になる。即ち、遅延が完了した後、そのＩ／Ｏ割込みを依然として処理する必要がある場合にのみ、Ｉ／Ｏ割込みは処理のためにそのゲストに与えられる。一実施形態では、この遅延は割込みをホストに与えるための上述の遅延よりも短い。このようにして、３段階のバイアスが導入され、最初に待ち状態のゲスト・スレッドが優先され、次に待ち状態でないゲスト・スレッドが選択され、最後にホストが最も好ましくない選択肢として選択される。
【００４２】
一般に、コンピューティング・デバイスはプロセッサ（例えば図１のプロセッサ１１４）とコンピュータ可読記憶媒体（例えば図１のメモリ１１６）とを含み、プロセッサは、例えばコンピュータ可読記憶媒体からコンピュータ可読プログラム命令を受け取り、それらの命令を実行することによって、本明細書に記載のプロセスのうちの１つまたは複数を含む、１つまたは複数のプロセスを実行する。
【００４３】
コンピュータ可読プログラム命令は、アセンブラ命令、インストラクション・セット・アーキテクチャ（ＩＳＡ）命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、または、Ｓｍａｌｌｔａｌｋ（Ｒ）、Ｃ＋＋などのオブジェクト指向プログラミング言語、および「Ｃ」プログラミング言語または同様のプログラミング言語などの従来の手続き型プログラミング言語を含む１つまたは複数のプログラミング言語の任意の組合せで書かれたソース・コードまたはオブジェクト・コードを使用して作成されたコンピュータ・プログラムから、コンパイルまたは解釈実行することができる。コンピュータ可読プログラム命令は、スタンドアロン・ソフトウェア・パッケージとして全体がコンピューティング・デバイス上で、または一部がコンピューティング・デバイス上で、または一部がローカル・コンピューティング・デバイス上で一部がリモート・コンピュータ・デバイス上で、または全体がリモート・コンピュータ・デバイス上で実行されてよい。後者の場合、リモート・コンピュータは、ローカル・エリア・ネットワーク（ＬＡＮ）またはワイド・エリア・ネットワーク（ＷＡＮ）を含む、任意の種類のネットワークを介してローカル・コンピュータに接続することができ、または接続は外部コンピュータ（例えば、インターネット・サービス・プロバイダを使用してインターネットを介して）に対して行ってもよい。実施形態によっては、本発明の各態様を実行するために、例えばプログラマブル・ロジック回路、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）、またはプログラマブル・ロジック・アレイ（ＰＬＡ）を含む電子回路が、コンピュータ可読プログラム命令の状態情報を使用して電子回路をパーソナライズすることにより、コンピュータ可読プログラム命令を実行することができる。本明細書に記載のコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれのコンピューティング／処理デバイスに、または、ネットワーク（例えば、通信をサポートするコンピューティング・デバイスと接続との任意の組合せ）を介して外部コンピュータまたは外部記憶デバイスにダウンロードすることもできる。例えば、ネットワークは、インターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワークまたは無線ネットワークあるいはこれらの組合せであってよく、銅伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバあるいはこれらの組合せを含んでよく、無線技術、セルラー技術などの複数の通信技術を使用してよい。
【００４４】
コンピュータ可読記憶媒体は、命令実行デバイスによる使用のための命令を保持し、記憶する有形のデバイスとすることができる（例えば上述のようなコンピューティング・デバイス）。コンピュータ可読記憶媒体は、例えば、電子記憶デバイス、磁気記憶デバイス、光記憶デバイス、電磁気記憶デバイス、半導体記憶デバイス、またはこれらの任意の適合する組合せとすることができるが、これらには限定されない。コンピュータ可読記憶媒体のより具体的な例の非網羅的リストには、以下のものが含まれる。即ち、携帯型コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ（ＲＡＭ）、読取り専用メモリ（ＲＯＭ）、消去可能プログラマブル読取り専用メモリ（ＥＰＲＯＭまたはフラッシュ・メモリ）、スタティック・ランダム・アクセス・メモリ（ＳＲＡＭ）、携帯型コンパクト・ディスク読取り専用メモリ（ＣＤ−ＲＯＭ）、デジタル多用途ディスク（ＤＶＤ）、メモリ・スティック、フロッピー（Ｒ）・ディスク、パンチ・カードまたは命令が記録された溝内の隆起構造などの機械的に符号化されたデバイス、およびこれらの任意の適合する組合せが含まれる。本明細書で使用するコンピュータ可読記憶媒体とは、電波またはその他の自由に伝播する電磁波、導波路またはその他の伝送媒体を伝播する電磁波（例えば光ファイバ・ケーブルを通る光パルス）、または電線を介して伝送される電気信号などの、一時的な信号自体であると解釈すべきではない。
【００４５】
従って、マルチスレッディング・システムおよび方法またはそれらの要素あるいはこれらの組合せは、関連付けられたコンピュータ可読記憶媒体に記憶された、１つまたは複数のコンピューティング・デバイス上のコンピュータ可読プログラム命令として実装され得る。コンピュータ・プログラム製品は、マルチスレッディング・システムおよび方法の動作を実行するかまたはプロセッサに実行させるかあるいはその両方のために、コンピュータ可読記憶媒体に記憶されたそのようなコンピュータ可読プログラム命令を含み得る。実装されまたは特許請求の範囲に記載された、あるいはその両方のマルチスレッディング・システムおよび方法またはそれらの要素あるいはこれらの組合せは、改良型優先ルーティングが、待ち状態のスレッドによる処理を容易にし、それによって処理資源の効率と速度を向上させるため、コンピュータまたはプロセッサ自体あるいはその両方の機能を向上させる。即ち、Ｉ／Ｏ割込みがホストレベルでのみこのコアで可能にされている場合、ハードウェアは、別のプロセッサまたはこのプロセッサ上の別のゲスト割込み可能スレッドが最初にこの割込みを行うことを期待して、Ｉ／Ｏ割込みファームウェアの呼び出しを遅延させる。これによって、ホスト割込み可能スレッドのデキューのためのオーバーヘッドがなくなるが、さらに重要なのは、割込みを処理するオーバーヘッドが大幅に少ないゲスト・スレッドに、割込みを処理する優先権が与えられることである。その結果として、割込み可能な実行中のゲストがない場合にのみ、任意の所定のＩ／Ｏ割込みの処理のためにホストに対して割込みが行われる。さらに、ゲストとホストの両方のレベルで任意の所定のコアが割込み可能である場合、ハードウェアがミリコードに対して、割込みがゲスト割込みであることを示す。マルチスレッディングの導入により、ハードウェアは、任意の所定のコア上の２つのスレッドが両方ともゲスト・レベルで割込みが可能な場合、待ち状態で動作していないスレッドではなく、現在待ち状態で動作しているスレッドに割込みを提示することができる。
【００４６】
本発明の態様について、本発明の実施形態による方法、装置（システム）、およびコンピュータ・プログラム製品を示すフローチャート図またはブロック図あるいはその両方を参照しながら説明している。フローチャート図またはブロック図あるいはその両方の各ブロック、およびフローチャート図またはブロック図あるいはその両方のブロックの組合せは、コンピュータ可読プログラム命令によって実装可能であることがわかるであろう。
【００４７】
上記のコンピュータ可読プログラム命令は、コンピュータまたはその他のプログラマブル・データ処理装置のプロセッサを介して実行される上記の命令が、フローチャートまたはブロック図あるいはその両方の１つまたは複数のブロックで規定されている動作／作用を実装する手段を形成するように、汎用コンピュータ、専用コンピュータ、またはその他のプログラマブル・データ処理装置のプロセッサに供給されてマシンを実現するものであってよい。上記のコンピュータ可読プログラム命令は、命令が記憶されたコンピュータ可読記憶媒体が、フローチャートまたはブロック図あるいはその両方の１つまたは複数のブロックで規定されている動作／作用の態様を実装する命令を含む製造品を含むように、コンピュータ可読媒体に記憶され、コンピュータ、プログラマブル・データ処理装置、またはその他のデバイス、あるいはこれらの組合せに対して特定の方式で動作するように指示することができるものであってもよい。
【００４８】
上記のコンピュータ可読プログラム命令は、コンピュータ、その他のプログラマブル装置またはその他のデバイス上で実行される上記命令がフローチャートまたはブロック図あるいはその両方の１つまたは複数のブロックで規定されている動作／作用を実装するように、コンピュータ実装プロセスを生成するべく、コンピュータ、その他のプログラマブル・データ処理装置、またはその他のデバイスにロードされ、コンピュータ、その他のプログラマブル装置、またはその他のデバイス上で一連の動作ステップを実行させるものであってもよい。
【００４９】
図面中のフローチャートおよびブロック図は、本発明の様々な実施形態によるシステム、方法およびコンピュータ・プログラム製品の可能な実装形態のアーキテクチャ、運用性および動作を示す。これに関連して、フローチャートまたはブロック図の各ブロックは、規定されている論理演算を実装するための１つまたは複数の実行可能命令を含む、命令のモジュール、セグメント、または部分を表し得る。ある代替実装形態では、ブロックに記載されている動作は、図に記載されている順序とは異なる順序で行われてもよい。例えば、連続して示されている２つのブロックは、関与する運用性に応じて、実際には実質的に並行して実行されてよく、またはそれらのブロックは場合によっては逆の順序で実行されてもよい。また、ブロック図またはフローチャート図あるいはその両方の各ブロック、およびブロック図またはフローチャート図あるいはその両方のブロックの組合せは、規定されている動作または作用を実行する専用ハードウェア・ベースのシステムによって実装されるか、または専用ハードウェアとコンピュータ命令の組合せを実行することができることもわかるであろう。
【００５０】
本発明の様々な実施形態について例示を目的として説明したが、本発明の説明は網羅的であること、または開示されている実施形態に限定することを意図したものではない。当業者には、記載されている実施形態の範囲および趣旨から逸脱することなく多くの変更および変形が明らかであろう。本明細書で使用されている用語は、実施形態の原理、実際の適用、または市場に見られる技術の技術的改善を最もよく説明するため、または他の当業者が本明細書で開示されている実施形態を理解することができるようにするために選択されたものである。
【００５１】
本明細書で使用されている用語は、特定の実施形態を説明することのみを目的としており、本発明を限定することを意図していない。本明細書で使用されている単数形の「１つの（ａ）」、「１つの（ａｎ）」および「その（ｔｈｅ）」は、文脈が明示しない限り複数形も含むことを意図している。また、本明細書で使用されている「含む（ｃｏｍｐｒｉｓｅｓまたはｃｏｍｐｒｉｓｉｎｇ）あるいはその両方」という用語は、記載されている特徴、整数、ステップ、動作、要素または構成要素あるいはこれらの組合せの存在を規定するが、１つまたは複数の他の特徴、整数、ステップ、動作、要素、構成要素またはこれらのグループあるいはこれらの組合せの存在または追加を排除しないことがわかるであろう。
【００５２】
本明細書で図示されている流れ図は、一例に過ぎない。本発明の範囲から逸脱することなく本明細書に記載の図またはステップ（または動作）には多くの変形があり得る。例えば、ステップは異なる順序で実行されてもよく、またはステップが追加、削除または修正されてもよい。これらの変形態様のすべては特許請求の範囲に記載の本発明の一部とみなされる。
【００５３】
以上、本発明の好ましい実施形態について説明したが、当業者は、現在および将来の両方にわたり、以下の特許請求の範囲に含まれる様々な改善および改良を加えることができることがわかるであろう。以下の特許請求の範囲は始めに述べた本発明の適切な保護を維持するものと解釈すべきである。
【図１】
0006537599.tif 000002
【図２】
0006537599.tif 000003
【図３】
0006537599.tif 000004
【図４】
0006537599.tif 000005
【図５】
0006537599.tif 000006
【図６】
0006537599.tif 000007