(57)【要約】【課題】  ロジカル・パーティション・システム内で仮想割込みを処理するための方法、システム、およびプログラム製品を提供すること。【解決手段】  １つのロジカル・パーティション内で動作する複数の仮想プロセッサに関連する可能性のあるインテリジェント仮想グローバル割込み待ち行列（仮想ＧＩＱ）を使用することができる。仮想割込みを受信すると、仮想ＧＩＱは、関連仮想プロセッサの動作状態を検査することができる。仮想割込みができるだけ迅速に処理されることを保証しようと努力して、仮想ＧＩＱは、仮想割込みを処理するのに最も適した動作状態にあると判定された関連仮想プロセッサの１つに仮想割込みを提示することができる。【選択図】  図１
2004326743.tif 000002
【特許請求の範囲】
【請求項１】
仮想割込みを処理するための方法において、
複数の仮想プロセッサのうちの少なくとも１つの動作状態に基づいて前記仮想割込みを処理するために前記複数の仮想プロセッサから１つを選択するステップと、
前記選択した仮想プロセッサに前記仮想割込みを提示するステップとを有する方法。
【請求項２】
前記仮想割込みを処理するために前記仮想プロセッサから１つを選択するステップが、
前記仮想プロセッサのうちの少なくとも１つの前記動作状態を検査して、前記少なくとも１つの仮想プロセッサが１つまたは複数の基準を満たしているかどうかを判定するステップを有する、請求項１に記載の方法。
【請求項３】
前記基準のうちの１つが、前記少なくとも１つの仮想プロセッサが現在実行中であるかどうかを有する、請求項２に記載の方法。
【請求項４】
前記仮想割込みのソースを決定するステップをさらに有し、
前記基準のうちの１つが、前記少なくとも１つの仮想プロセッサが前記仮想割込みの前記ソースをマスクしているかどうかを有する、請求項２に記載の方法。
【請求項５】
前記少なくとも１つの仮想プロセッサが実行中であり、前記仮想割込みソースがマスクされていない場合に、前記少なくとも１つの仮想プロセッサに前記仮想割込みを提示するステップをさらに有する、請求項４に記載の方法。
【請求項６】
前記少なくとも１つの仮想プロセッサに関連する仮想割込みレジスタに基づいて前記少なくとも１つの仮想プロセッサの前記仮想割込みソースがマスクされているかどうかを判定するステップであって、前記仮想割込みレジスタが前記少なくとも１つの仮想プロセッサの現行割込み優先順位レベルを示すステップをさらに有する、請求項５に記載の方法。
【請求項７】
仮想割込みを提示するために複数の仮想プロセッサから１つを選択するための方法において、
前記仮想プロセッサのうちのいずれかが現在実行中であるかどうかを判定するステップと、
実行中である場合にいずれかの実行中の仮想プロセッサの前記仮想割込みのソースがマスクされていないかどうかを判定するステップと、
マスクされている場合に現在実行中であり、前記仮想割込みソースがマスクされていないと判定された仮想プロセッサに前記仮想割込みを提示するステップとを有する方法。
【請求項８】
前記仮想プロセッサのいずれも現在実行中ではなく、前記仮想割込みのソースがマスクされていない場合に、
前記仮想プロセッサのうちのいずれかが現在実行中であるかどうかを判定するステップと、
実行中である場合に現在実行中であると判定された仮想プロセッサに前記仮想割込みを提示するステップとをさらに有する、請求項７に記載の方法。
【請求項９】
前記仮想プロセッサのいずれも現在実行中ではない場合に、
前記仮想プロセッサのうちのいずれかの前記仮想割込みの前記ソースがマスクされていないかどうかを判定するステップと、
マスクされている場合に前記仮想割込みの前記ソースがマスクされていないと判定された仮想プロセッサに前記仮想割込みを提示するステップとをさらに有する、請求項８に記載の方法。
【請求項１０】
前記仮想プロセッサのいずれも現在実行中ではなく、前記仮想プロセッサのそれぞれの前記割込みの前記ソースがマスクされている場合にのみ、現在実行中ではなく、前記仮想割込みの前記ソースがマスクされている仮想プロセッサに前記仮想割込みを提示するステップをさらに有する、請求項９に記載の方法。
【請求項１１】
仮想割込みを処理するために複数の仮想プロセッサから１つを選択するためのコンピュータ・プログラムにおいて、
プロセッサによって実行されると、
前記仮想プロセッサの動作状態に基づいて前記仮想割込みを処理するために前記複数の仮想プロセッサから１つを選択するステップと、前記選択した仮想プロセッサに前記仮想割込みを提示するステップとを有する動作を実行する、コンピュータ・プログラム。
【請求項１２】
前記仮想割込みを処理するために前記仮想プロセッサから１つを選択するステップが、
前記仮想プロセッサのうちの少なくとも１つの前記動作状態を検査して、前記少なくとも１つの仮想プロセッサが１つまたは複数の基準を満たしているかどうかを判定するステップを有する、請求項１１に記載のコンピュータ・プログラム。
【請求項１３】
前記基準のうちの１つが、前記少なくとも１つの仮想プロセッサが現在実行中であるかどうかを有する、請求項１２に記載のコンピュータ・プログラム。
【請求項１４】
前記動作が、
前記仮想割込みのソースを決定するステップをさらに有し、
前記基準のうちの１つが、前記少なくとも１つの仮想プロセッサが前記仮想割込みの前記ソースをマスクしているかどうかを有する、請求項１３に記載のコンピュータ・プログラム。
【請求項１５】
前記動作が、前記少なくとも１つの仮想プロセッサが実行中であり、前記仮想割込みソースがマスクされていない場合に、前記少なくとも１つの仮想プロセッサに前記仮想割込みを提示するステップをさらに有し、前記基準のうちの１つが、前記少なくとも１つの仮想プロセッサが現在実行中であるかどうかを有する、請求項１２に記載のコンピュータ・プログラム。
【請求項１６】
少なくとも１つのロジカル・パーティションと、
前記ロジカル・パーティションに関連する複数の仮想プロセッサと、
前記ロジカル・パーティションをターゲットにする仮想割込みを受信し、前記仮想プロセッサのうちの少なくとも１つの動作状態に基づいて前記仮想割込みを処理するために前記仮想プロセッサから１つを選択し、前記選択した仮想プロセッサに前記仮想割込みを提示するように構成される仮想グローバル割込み待ち行列とを有するロジカル・パーティション・コンピュータ・システム。
【請求項１７】
現在実行中の仮想プロセッサがまったくない場合にのみ、現在実行中ではない仮想プロセッサに仮想割込みを提示するように前記仮想グローバル割込み待ち行列が構成される、請求項１６に記載のロジカル・パーティション・コンピュータ・システム。
【請求項１８】
複数の仮想プロセッサが実行中である場合に、
前記仮想割込みのソースをマスクしていない実行中の仮想プロセッサがまったくない場合にのみ、前記仮想割込みの前記ソースをマスクしている実行中の仮想プロセッサに割込みを提示するように前記仮想グローバル割込み待ち行列が構成される、請求項１７に記載のロジカル・パーティション・コンピュータ・システム。
【請求項１９】
仮想割込みを生成可能な１つまたは複数の仮想デバイスをさらに有する、請求項１６に記載のロジカル・パーティション・コンピュータ・システム。
【請求項２０】
前記仮想グローバル割込み待ち行列が、複数のロジカル・パーティション間で共用されるハードウェア・グローバル割込み待ち行列を仮想化する、請求項１６に記載のロジカル・パーティション・コンピュータ・システム。
【請求項２１】
複数の関連仮想プロセッサを有する少なくとも１つの追加のロジカル・パーティションと、
前記少なくとも１つの追加のロジカル・パーティションに関連する少なくとも１つの追加の仮想グローバル割込み待ち行列とを有する、請求項１６に記載のロジカル・パーティション・コンピュータ・システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は一般にロジカル・パーティション・コンピュータ・システムに関し、より詳細にはロジカル・パーティションをターゲットにする仮想割込みの処理に関する。
【背景技術】
【０００２】
コンピューティング環境における並列処理は、一般に、複数のコンピューティング・タスクを並列に実行することを指す。伝統的に、並列処理は複数のコンピュータ・システムを必要とし、各コンピュータ・システムのリソースは特定のタスクに専用であるかまたは共通タスクの一部分を実行するために割り振られていた。しかし、最近のコンピュータ・ハードウェアおよびソフトウェア技術の進歩の結果、システム・リソースを種々のタスクにロジカル・パーティション化することにより、単一コンピュータ・システムは非常に複雑な並列処理が可能になっている。ロジカル・パーティション・コンピュータ・システムでは、使用可能なシステム・リソースが複数のロジカル・パーティション間に割り振られ、それぞれが他のものとは無関係に動作するように見えるように設計されている。ロジカル・パーティション間のリソースの割振りの管理は通常、一般にパーティション・マネージャと呼ばれるソフトウェア・コンポーネントの層を介して実施される。
【０００３】
パーティション・マネージャの目的は、通常、ほとんどまたはまったく修正せずに専用コンピュータ・システム上で動作するように開発されたソフトウェア（たとえば、オペレーティング・システムおよびオペレーティング・システム固有アプリケーション）を各ロジカル・パーティションが独立して実行できるようにすることである。たとえば、１つのロジカル・パーティションがＩＢＭのＯＳ／４００などの第１のオペレーティング・システムを実行し、第２のロジカル・パーティションがＩＢＭのＡＩＸなどの第２のオペレーティング・システムを実行し、第３のロジカル・パーティションがＬｉｎｕｘなどの第３のオペレーティング・システムを実行している場合もある。同じコンピュータ・システム上で複数のオペレーティング・システムを実行する能力を提供することにより、ロジカル・パーティション・システムは、それに関してアプリケーション・プログラムが作成されたオペレーティング・システムをほとんどまたはまったく考慮せずにユーザの要求に最も適したアプリケーション・プログラムを選択する際により大きい自由度をユーザに提供することができる。
【０００４】
パーティション・マネージャは通常、ロジカル・パーティションの見地から見ると、対応するハードウェア・コンポーネントと同一の方式で動作する１組の仮想リソース（ソフトウェア・コンポーネント）を各ロジカル・パーティションに提示することにより、各ロジカル・パーティションがソフトウェアを独立して実行できるようにするという目的を達成する。換言すれば、パーティション・マネージャは、各ロジカル・パーティションが実質的にそれ自体の１組の仮想リソースを備えた独立仮想コンピュータ・システム（または仮想計算機）として動作できるようにすることができる。
【０００５】
各ロジカル・パーティションに提示される仮想リソースは１つまたは複数の仮想プロセッサを含むことができる。各パーティション用の仮想プロセッサは、そのパーティションに割り当てられた１つまたは複数の物理的プロセッサの処理リソースを共用することができる。他のタイプの仮想デバイスのサポートを提供するためならびに複数のオペレーティング・システムが１つのパーティション化システム上のプロセッサを共用できるようにするために、仮想プロセッサは仮想割込みを処理できる可能性がある。換言すれば、実際のハードウェア装置が物理的プロセッサ上で割込みを発生する場合があるように、仮想割込みが仮想デバイスによって生成される場合もあれば、仮想割込みを受信した仮想プロセッサを実行しているパーティションとは異なるパーティションからリルート(reroute)された実際のハードウェア割込みの結果として生成される場合もある。仮想割込みを作成するという概念は、２００３年３月３１日に出願され、「Apparatus and Method for Virtualizing Interrupts in a LogicallyPartitioned Computer System」という名称で、本出願人が所有する特許出願第１０／４０３１５８号に詳細に記載されている。
【０００６】
ロジカル・パーティション・コンピュータ・システムなど、複数の物理的プロセッサを備えたコンピュータ・システムは、システム内の物理的プロセッサのうちのどの物理的プロセッサが入出力装置による割込みのターゲットになりうるかを本質的に指定する割込み管理機構（一般に、グローバル割込み待ち行列という）を使用することができる。割込みを受信すると、グローバル割込み待ち行列ハードウェア（および／またはソフトウェア）は、割込みを提示するために関連物理的プロセッサのうちの１つを選択し、それにより、割込み処理のオーバヘッドを複数のプロセッサ間に分散することができる。一部の例では、グローバル割込み待ち行列は、複数の物理的プロセッサから選択した１つであって、他のものより割込みの処理に有利な実行状態にある物理的プロセッサに割込みを提示するように設計することができる。たとえば、他の物理的プロセッサは、他のパーティション・タスクの処理で使用中である場合もあれば、すでに他の割込み（たとえば、優先順位レベルが高いもの）を処理している場合もある。
【０００７】
仮想プロセッサは物理的プロセッサと同様の挙動を示すように設計されているので、１つのロジカル・パーティションに割り当てられた１組の仮想プロセッサも他のものより仮想割込みの処理に有利な実行状態を有することができる。そのロジカル・パーティションをターゲットにする割込みができるだけ早く処理されることを保証するために、最も有利な実行状態にある仮想プロセッサに割込みが提示されることが望ましいだろう。しかし、仮想割込みを受信して、それを処理するために最も有利な動作状態にある仮想プロセッサにそれを経路指定するための機構（たとえば、グローバル割込み待ち行列の機能性と類似した機能性を備えたもの）は、現在、まったく存在しない。
【特許文献１】２００３年３月３１日に出願され、「Apparatus and Method for Virtualizing Interrupts in a LogicallyPartitioned Computer System」という名称で、本出願人が所有する特許出願第１０／４０３１５８号
【特許文献２】２００１年４月１９日に出願され、「Method and Apparatus for Allocating Processor Resources in aLogically Partitioned Computer System」という名称で、本出願人が所有する特許出願第０９／８３８０５７号
【発明の開示】
【発明が解決しようとする課題】
【０００８】
したがって、たとえば、仮想割込みを処理するために有利な動作状態にあると判定された仮想プロセッサに仮想割込みを経路指定するように構成された仮想グローバル割込み待ち行列を実現することにより、仮想割込みを処理するための改良された方法およびシステムが必要である。
【課題を解決するための手段】
【０００９】
本発明は一般に、仮想割込みを処理するための方法、プログラム製品、およびシステムを対象とする。
【００１０】
一実施形態は、仮想割込みを処理するための方法を提供する。この方法は一般に、複数の仮想プロセッサのうちの少なくとも１つの動作状態に基づいて仮想割込みを処理するために複数の仮想プロセッサから１つを選択するステップと、選択した仮想プロセッサに仮想割込みを提示するステップとを含む。
【００１１】
他の実施形態は、仮想割込みを提示するために複数の仮想プロセッサから１つを選択するための方法を提供する。この方法は一般に、仮想プロセッサのうちのいずれかが現在実行中であるかどうかを判定するステップと、実行中である場合にいずれかの実行中の仮想プロセッサの仮想割込みのソースがマスクされていないかどうかを判定するステップと、マスクされている場合に現在実行中であり、その仮想割込みソースがマスクされていないと判定された仮想プロセッサに仮想割込みを提示するステップとを含む。
【００１２】
他の実施形態は、仮想割込みを処理するために複数の仮想プロセッサから１つを選択するためのプログラムを含むコンピュータ・プログラムを提供する。プロセッサによって実行されると、このプログラムは、一般に、仮想プロセッサの動作状態に基づいて仮想割込みを処理するために複数の仮想プロセッサから１つを選択するステップと、選択した仮想プロセッサに仮想割込みを提示するステップとを含む動作を実行する。
【００１３】
他の実施形態は、少なくとも１つのロジカル・パーティションと、そのロジカル・パーティションに関連する複数の仮想プロセッサと、仮想グローバル割込み待ち行列とを含むロジカル・パーティション・コンピュータ・システムを提供する。仮想グローバル割込み待ち行列は一般に、そのロジカル・パーティションをターゲットにする仮想割込みを受信し、その仮想プロセッサのうちの少なくとも１つの動作状態に基づいて仮想割込みを処理するために複数の仮想プロセッサから１つを選択し、選択した仮想プロセッサに仮想割込みを提示するように構成される。
【００１４】
添付図面に例示した本発明の諸実施形態を参照することにより、上記で列挙した本発明の特徴を達成する方法を詳細に理解でき、上記で簡単に要約した本発明のより詳細な説明が可能になるだろう。
【００１５】
しかし、添付図面は本発明の典型的な実施形態のみを例示し、したがって、その範囲を限定するものと見なすべきではなく、本発明は他の同様に効果的な実施形態を認めることが可能であることに留意されたい。
【発明を実施するための最良の形態】
【００１６】
本発明は一般に、ロジカル・パーティション・システム内で仮想割込みを処理するための方法、システム、および製品を対象とする。実施形態では、１つのロジカル・パーティション内で動作する複数の仮想プロセッサに関連する可能性のあるインテリジェント仮想グローバル割込み待ち行列（仮想ＧＩＱ）を提供し使用する。仮想割込みを受信すると、仮想ＧＩＱは、関連仮想プロセッサの動作状態を検査することができる。仮想割込みができるだけ迅速に処理されることを保証しようと努力して、仮想ＧＩＱは、仮想割込みを処理するのに最も適した動作状態にある関連仮想プロセッサの１つに仮想割込みを提示することができる。
【００１７】
本発明の一実施形態は、たとえば図１に示し後述するロジカル・パーティション・コンピュータ・システム１００などのコンピュータ・システムとともに使用するためのプログラム記録媒体として実現される。このプログラム記録媒体のプログラム（複数も可）は、諸実施形態（本明細書に記載する方法を含む）の諸機能を定義するものであり、様々な信号運搬媒体上に含めることができる。例示的な信号運搬媒体としては、（ｉ）書込み不能記憶媒体（たとえば、ＣＤ−ＲＯＭドライブによって読取り可能なＣＤ−ＲＯＭディスクなどのコンピュータ内の読取り専用メモリ・デバイス）上に永続的に記憶された情報、（ｉｉ）書込み可能記憶媒体（たとえば、ディスケット・ドライブ内のフレキシブル・ディスクまたはハードディスク・ドライブ）上に記憶された可変情報、（ｉｉｉ）ワイヤレス通信およびインターネットを含むコンピュータ・ネットワークまたは電話網によるなどの通信媒体によってコンピュータに伝達される情報を含むが、これらに限定されない。
【００１８】
一般に、本発明の諸実施形態を実現するために実行されるルーチンは、たとえば、図１に示すロジカル・パーティション・コンピュータ・システム１００のパーティション・マネージャ１２０の仮想割込み管理機構１２４の１つのコンポーネントにすることができる仮想グローバル割込み待ち行列１２６として実施されるファームウェアを含む、オペレーティング・システムの一部または特定のアプリケーション、コンポーネント、プログラム、モジュール、オブジェクト、または命令シーケンスにすることができる。本発明のソフトウェアは通常、ネイティブ・コンピュータによって機械可読フォーマットに、したがって実行可能命令に変換される多数の命令から構成される。また、プログラムは、プログラムにとってローカルに常駐するか、メモリ内または記憶装置上で検出される変数およびデータ構造から構成される。加えて、以下に記載する様々なプログラムは、本発明の特定の実施形態で実現されるアプリケーションに基づいて識別することができる。しかし、以下に示す特定の名称は単に便宜的に使用するものであり、したがって、本発明はこのような名称によって識別または暗示される特定のアプリケーションのみで使用することに限定するべきではないことを理解されたい。
【００１９】
例示的なロジカル・パーティション・システム
図１は、１つまたは複数のロジカル・パーティション１１０（任意の数Ｎ個のロジカル・パーティション１１０をサポートできることを表すためにロジカル・パーティション１１０1〜１１０Nとして示す）を有するロジカル・パーティション・コンピュータ・システム１００を示している。パーティション・マネージャ１２０は一般に、ロジカル・パーティション１１０の作成および削除を制御することができる。各ロジカル・パーティション１１０は、１つまたは複数の仮想プロセッサ１１４（１つまたは複数の物理的プロセッサ１３０を共有することができるもの）上で動作する関連オペレーティング・システム１１２を有することができる。仮想プロセッサの概念は、２００１年４月１９日に出願され、「Method and Apparatus for Allocating Processor Resources in aLogically Partitioned Computer System」という名称で、本出願人が所有する特許出願第０９／８３８０５７号に詳細に記載されている。
【００２０】
コンピュータ・システム１００は、ネットワーク・サーバ、メインフレーム・コンピュータなど、ロジカル・パーティションをサポート可能な適当なタイプのコンピュータ・システムにすることができる。一実施形態では、コンピュータ・システム１００は、ニューヨーク州アーモンクのＩＢＭ社から入手可能なｅＳｅｒｖｅｒ  ｉＳｅｒｉｅｓコンピュータ・システムである。コンピュータ・システム１００は一般に、メモリ１４０と結合された１つまたは複数の物理的プロセッサ１３０を含む。システム・プロセッサ１３０は、適当な割振り配置に応じてロジカル・パーティション１１０間で割り振ることができる。
【００２１】
たとえば、各ロジカル・パーティション１１０は、システム・プロセッサ１３０のうち、それ自体に専用の１つまたは複数のプロセッサを有する場合もあれば、システム・プロセッサ１３０のうちの１つまたは複数を１つまたは複数の他のロジカル・パーティション１１０と共有する場合もある。各システム・プロセッサ１３０は、ロジカル・パーティション１１０の仮想プロセッサ１１４のうちの１つまたは複数を実行することができる。ロジカル・パーティション１１０間におけるシステム・プロセッサ１３０、メモリ１４０、ならびに入出力装置１５２（広範囲の様々な入出力装置ならびに入出力インタフェース、記憶インタフェース、ネットワーク・インタフェースなどのインタフェース装置を含むことができる）などの様々な他のリソースの割振りは、パーティション・マネージャ１２０によって制御することができる。
【００２２】
図示の通り、システム１００は、入出力装置１５２が生成した割込みを受信し、グローバル割込み待ち行列１５６が指定するように物理的プロセッサ１３０のうちの１つまたは複数にその割込みを経路指定するように構成された割込みコントローラ１５０を含むことができる。パーティション・マネージャ１２０は、一般に（たとえば、グローバル割込み待ち行列１５６を介して提示される入出力割込みの結果として）物理的プロセッサ１３０からの割込みを受信し、処理のためにロジカル・パーティションの１つの仮想プロセッサ１１４にその割込みを経路指定するように構成された仮想割込み管理機構１２４を含むことができる。
【００２３】
仮想割込み管理機構１２４は、その割込みがどのロジカル・パーティション１１０をターゲットにしているかを決定し、このような詳細を物理的プロセッサ１３０から隠すことができる。たとえば、仮想割込み管理機構１２４は、（たとえば、物理的プロセッサ１３０の割込みレジスタ１３６内で識別された通り）割込みソースに基づいてその割込みがどのロジカル・パーティション１１０をターゲットにしているかを決定することができる。割込みを処理するために、仮想割込みは、ターゲットのロジカル・パーティション１１０上で動作する仮想プロセッサ１１４の１つに提示することができる。また、仮想割込み管理機構１２４は、１つまたは複数の仮想デバイス１１８上で発生するイベントに応答して仮想割込みを生成することもできる。
【００２４】
仮想グローバル割込み待ち行列（仮想ＧＩＱ）
いずれの場合も、仮想割込みを提示するために使用可能な仮想プロセッサ１１４は、ターゲットのロジカル・パーティション１１０に関連する仮想ＧＩＱ１２６によって指定することができる。ただし、ロジカル・パーティション１１０は仮想ＧＩＱ１２６に割り当てられていない仮想プロセッサ１１４上で動作している可能性があり、このような仮想プロセッサ１１４が仮想ＧＩＱ１２６を介して仮想割込みを受信しないことを暗示していることに留意されたい。しかし、その場合でもこのような仮想プロセッサ１１４は、特にそれらをターゲットとする仮想割込みのうち、ＧＩＱ１２６により送信されない仮想割込みを受信することができる。図２および図３に示すように、各ロジカル・パーティション１１０はそれ自体の仮想ＧＩＱ１２６（たとえば、仮想ＧＩＱ１２６1〜１２６N）を備えることができる。実現例に応じて、図２に示すように各仮想ＧＩＱ１２６が対応するロジカル・パーティション１１０に専用のハードウェアＧＩＱ１５６を仮想化する場合もあれば、図３に示すようにすべての仮想ＧＩＱ１２６が複数のロジカル・パーティション１１０間で共用されるハードウェアＧＩＱ１５６を共同で仮想化する場合もある。
【００２５】
いずれの場合も、仮想ＧＩＱ１２６は一般に、それぞれの動作状態に基づいてその関連仮想プロセッサ１１４のうちのどの仮想プロセッサが仮想割込みを処理するのに最も適しているかを決定するように構成することができる。この決定を行う際に、仮想ＧＩＱ１２６は、仮想割込みの処理に有利な１つまたは複数の基準を満たしているかどうかを立証するために、その仮想プロセッサ１１４の動作状態を検査することができる。どの仮想プロセッサ１１４が仮想割込みを処理するのに最も適しているかを決定するために多種多様な動作状態基準を適用することができるが、その特定の詳細は異なる実施形態ごとに様々になる可能性がある。
【００２６】
仮想割込みの提示のために仮想プロセッサを選択するときに適用可能な適当な基準の２つの例は、その仮想プロセッサが現在実行中であるかどうかと、その仮想プロセッサが仮想割込みのソースをマスクしているかどうかであり、いずれも仮想プロセッサが仮想割込みを処理できる速度に影響を及ぼす可能性がある。たとえば、第１の仮想プロセッサが現在実行中ではない場合（たとえば、第１のプロセッサが優先使用または放棄され、第２の仮想プロセッサが実行中である場合）、第１の仮想プロセッサが仮想割込みを処理するためには、（たとえば、その実行状態が保管されるなど）第２の仮想プロセッサが先に優先使用されなければならず、第２の仮想プロセッサがディスパッチされるのを待つ間に遅延が発生することになるだろう。仮想プロセッサが実行中であるかどうかは、たとえば、その仮想プロセッサに関連する制御ブロック（図示せず）内のレジスタを介して判定することができる。
【００２７】
仮想割込みを処理する際の遅延は、仮想割込みのソースをマスクした仮想プロセッサに対して仮想割込みを送信する場合にも発生する可能性がある。割込みマスクに関する的確な技法は異なるプロセッサごとに様々になる可能性がある。一般的な技法の１つは、現行割込み優先順位レベルを維持管理し、それにより、受信した割込みのうち、より高い割込み優先順位レベルを有する割込みのみを処理することである。割込み優先順位レベルによる割込みマスクの概念は、それぞれ「０５」および「ＦＦ」（たとえば、１６進数の「ＦＦ」＝１０進数の「２５５」）という現行割込み優先順位レベルを有する２つの仮想プロセッサＶＰ１  １１４1およびＶＰ２  １１４2を示す図４に示されており、ＶＰ２がいかなる割込みもマスクしないように「ＦＦ」は可能な範囲で最低の優先順位レベルである。この例の場合、仮想プロセッサＶＰ１とＶＰ２がいずれも実行中であると想定する。「１０」という優先順位レベルを有する仮想割込みを受信すると、仮想ＧＩＱは、ＶＰ１に提示された場合、ＶＰ１が「１０」より大きい優先順位を有する現在保留中のすべての割込みを処理してしまうまで、その仮想割込みが処理されないだろう（たとえば、ＶＰ１の割込み待ち行列内で保留になるだろう）と判断する可能性がある。これに反して、「ＦＦ」という現行割込み優先順位レベルを有しているので、ＶＰ２は仮想割込みを直ちに処理することができるだろう。したがって、仮想ＧＩＱ１２６はＶＰ２に仮想割込みを提示する。
【００２８】
仮想割込みを経路指定するための例示的な方法
図３は、たとえば、仮想割込みを処理するのに最も適した仮想プロセッサを選択するために仮想ＧＩＱ１２６が実行可能な例示的な動作３００を示す流れ図である。動作３００は、仮想割込みを受信することにより、ステップ３０２から始まる。前述の通り、仮想割込みは、パーティション上の仮想デバイス１１８によるか（たとえば、ソフトウェア割込み）またはハードウェア割込みの結果として（たとえば、入出力装置１５２から）生成することができる。いずれの場合も、仮想ＧＩＱ１２６は、たとえば、前述の通り、どのＶＰが１組の基準を満たしているかを立証しようと努力して各ＶＰの動作状態を検査することにより、その関連ＶＰのうち、どのＶＰが割込みを処理するのに最も適しているかを決定しようと試みる。
【００２９】
したがって、ステップ３０４で仮想ＧＩＱは、各ＶＰの動作状態を検査するための動作のループ（３０６〜３１２）に入る。ステップ３０６で仮想ＧＩＱは、そのＶＰがどの動作状態基準を満たしているかを決定する。たとえば、仮想ＧＩＱは、ＶＰの動作状態に基づいて、所定の１組の基準のうち、どの基準をそのＶＰが満たしているかを示す値（ＶＰCRIT）を返すルーチンを呼び出すことができる。前述の通り、この基準としては適時に割込みを処理するＶＰの能力を示すことができる任意の適当な１組の基準を含むことができ、どの基準を満たしているかに基づいてＶＰCRITに値を割り当てるために適当なアルゴリズムを使用することができる。
【００３０】
たとえば、前述の例示的な基準を使用して、以下の表Ｉに示す４通りのＶＰCRITの値のうちの１つをＶＰに割り当てることができる。
【００３１】
表Ｉ−ＶＰの基準の例
ＶＰCRIT＝１  ＶＰは実行中であり、割込みソースはマスクされていない
ＶＰCRIT＝２  ＶＰは実行中であり、割込みソースはマスクされている
ＶＰCRIT＝３  ＶＰは実行中ではなく、割込みソースはマスクされていない
ＶＰCRIT＝４  ＶＰは実行中ではなく、割込みソースはマスクされている
【００３２】
表に示すように、１というＶＰCRITの値は最も好ましい動作状態に対応する可能性があり、４というＶＰCRITの値は最も好ましくない動作状態に対応する可能性がある。図６は、上記の表Ｉにリストした特定の１組の動作状態基準を適用し、例示したＶＰCRITの値を返すための方法を示している。動作４００は、選択した仮想プロセッサの実行状況と現行割込み優先順位レベルを入手することにより、ステップ４０２から始まる。たとえば、仮想ＧＩＱは、仮想プロセッサ１１４に関連する１組の仮想割込みレジスタ１１６のうちの１つから現行割込み優先順位レベルを読み取ることができる。
【００３３】
ステップ４０４では、選択した仮想プロセッサが現在実行中であるかどうかについての判定が行われる。選択した仮想プロセッサが実行中である場合、処理はステップ４０３に移行し、そこで選択したプロセッサが仮想割込みソースをマスクしているかどうかについての判定が行われる。選択した仮想プロセッサが仮想割込みソースをマスクしていない場合、ステップ４０６で１という基準レベル（ＶＰCRIT）が返される可能性があり、この例では、最も有利な動作状態を示す（たとえば、選択した仮想プロセッサは仮想割込みを直ちに処理できるはずである）。これに反して、選択した仮想プロセッサが仮想割込みソースをマスクしている場合、ステップ４０８で２というＶＰCRITが返される可能性がある。選択した仮想プロセッサが実行中ではない場合、処理はステップ４１０に移行して、仮想プロセッサが仮想割込みソースをマスクしているかどうかを判定する。マスクしていない場合はステップ４１２で３というＶＰCRITが返される可能性があり、仮想プロセッサが仮想割込みソースをマスクしている場合はステップ４１４で４というＶＰCRITが返される。
【００３４】
図５に戻って参照すると、ステップ３０８で判定したように選択した仮想プロセッサが最も有利な動作状態（たとえば、ＶＰCRIT＝１）を有している場合、現在選択している仮想プロセッサが仮想割込みを直ちに処理できるはずなので、他の仮想プロセッサを検査する必要はない。したがって、ステップ３１０で、選択した仮想プロセッサに仮想割込みが提示される。しかし、選択した仮想プロセッサが最も有利な動作状態以外の動作状態を有する場合（たとえば、仮想プロセッサが実行中ではないかまたは仮想割込みソースをマスクしている場合）、後で比較するためにステップ３１２で動作状態が記録される。次に処理はステップ３０４に戻り、次の仮想プロセッサを選択する。
【００３５】
どの仮想プロセッサも最も有利な動作状態にない場合、動作はステップ３１４に移行し、そこで他の仮想プロセッサに比べて最も有利な動作状態を有する仮想プロセッサに仮想割込みが提示される。たとえば、仮想ＧＩＱは単純なルーチンを実行して、ステップ３１２で記録したようにどの仮想プロセッサ１１４が最低のＶＰCRITを有するかを識別し、識別した仮想プロセッサ１１４に仮想割込みを提示することができる。複数の仮想プロセッサが同じ最も有利な動作状態（ＶＰCRITの値）を有する場合、仮想ＧＩＱ１２６は任意に、いずれか一方に仮想割込みを提示するか、または、たとえば他の適当な基準を考慮してアービトレーションを実行することができる。
【００３６】
当然のことながら、動作３００は、種々の実現例のために様々に修正することができる。たとえば、最も有利な動作状態を有する仮想プロセッサ１１４に仮想割込みを提示するのではなく、仮想ＧＩＱ１２６は、仮想プロセッサ１１４が１組の基準のうちの少なくとも１つを有していることを要求することもできる。たとえば、１組の基準のうちのいずれも満たしていない場合、どの仮想プロセッサが最初に仮想割込みを処理できるようになるかを予測するための有効な根拠がまったくない可能性がある。したがって、一部の実施形態では、仮想ＧＩＱ１２６に関連する仮想プロセッサ１１４のいずれも基準をまったく満たしていない場合（たとえば、いずれも実行中ではなく、いずれについても仮想割込みソースがマスクされている場合）、仮想ＧＩＱ１２６は単に待つだけになる可能性がある。たとえば、仮想ＧＩＱ１２６は単に、関連仮想プロセッサ１１４のうちの１つが少なくとも１つの基準を満たすまで仮想割込みを保留のままにすることができるだけである。
【００３７】
仮想デバイスをサポートし、複数のオペレーティング・システムが１つのロジカル・パーティション・コンピュータ・システム内の物理的プロセッサを共用できるようにするために、仮想割込みを使用する。仮想割込みを処理するために最適の動作状態にある仮想プロセッサに仮想割込みを経路指定することにより、本発明の実施形態は、仮想割込みが適時に処理されることを保証することができる。
【００３８】
上記の説明は本発明の実施形態に向けられたものであるが、本発明の基本範囲を逸脱せずに本発明の他の実施形態を考案することができ、その範囲は特許請求の範囲によって決定される。
【００３９】
まとめとして、本発明の構成に関して以下の事項を開示する。
【００４０】
（１）仮想割込みを処理するための方法において、
複数の仮想プロセッサのうちの少なくとも１つの動作状態に基づいて前記仮想割込みを処理するために前記複数の仮想プロセッサから１つを選択するステップと、
前記選択した仮想プロセッサに前記仮想割込みを提示するステップとを有する方法。
（２）前記仮想割込みを処理するために前記仮想プロセッサから１つを選択するステップが、
前記仮想プロセッサのうちの少なくとも１つの前記動作状態を検査して、前記少なくとも１つの仮想プロセッサが１つまたは複数の基準を満たしているかどうかを判定するステップを有する、上記（１）に記載の方法。
（３）前記基準のうちの１つが、前記少なくとも１つの仮想プロセッサが現在実行中であるかどうかを有する、上記（２）に記載の方法。
（４）前記方法が、
前記仮想割込みのソースを決定するステップをさらに有し、
前記基準のうちの１つが、前記少なくとも１つの仮想プロセッサが前記仮想割込みの前記ソースをマスクしているかどうかを有する、上記（２）に記載の方法。
（５）前記少なくとも１つの仮想プロセッサが実行中であり、前記仮想割込みソースがマスクされていない場合に、前記少なくとも１つの仮想プロセッサに前記仮想割込みを提示するステップをさらに有する、上記（４）に記載の方法。
（６）前記少なくとも１つの仮想プロセッサに関連する仮想割込みレジスタに基づいて前記少なくとも１つの仮想プロセッサの前記仮想割込みソースがマスクされているかどうかを判定するステップであって、前記仮想割込みレジスタが前記少なくとも１つの仮想プロセッサの現行割込み優先順位レベルを示すステップをさらに有する、上記（５）に記載の方法。
（７）仮想割込みを提示するために複数の仮想プロセッサから１つを選択するための方法において、
前記仮想プロセッサのうちのいずれかが現在実行中であるかどうかを判定するステップと、
実行中である場合にいずれかの実行中の仮想プロセッサの前記仮想割込みのソースがマスクされていないかどうかを判定するステップと、
マスクされている場合に現在実行中であり、前記仮想割込みソースがマスクされていないと判定された仮想プロセッサに前記仮想割込みを提示するステップとを有する方法。
（８）前記仮想プロセッサのいずれも現在実行中ではなく、前記仮想割込みのソースがマスクされていない場合に、
前記仮想プロセッサのうちのいずれかが現在実行中であるかどうかを判定するステップと、
実行中である場合に現在実行中であると判定された仮想プロセッサに前記仮想割込みを提示するステップとをさらに有する、上記（７）に記載の方法。
（９）前記仮想プロセッサのいずれも現在実行中ではない場合に、
前記仮想プロセッサのうちのいずれかの前記仮想割込みの前記ソースがマスクされていないかどうかを判定するステップと、
マスクされている場合に前記仮想割込みの前記ソースがマスクされていないと判定された仮想プロセッサに前記仮想割込みを提示するステップとをさらに有する、上記（８）に記載の方法。
（１０）前記仮想プロセッサのいずれも現在実行中ではなく、前記仮想プロセッサのそれぞれの前記割込みの前記ソースがマスクされている場合にのみ、現在実行中ではなく、前記仮想割込みの前記ソースがマスクされている仮想プロセッサに前記仮想割込みを提示するステップをさらに有する、上記（９）に記載の方法。
（１１）仮想割込みを処理するために複数の仮想プロセッサから１つを選択するためのプログラムを含むコンピュータ・プログラムにおいて、プロセッサによって実行されると、前記プログラムが、
前記仮想プロセッサの動作状態に基づいて前記仮想割込みを処理するために前記複数の仮想プロセッサから１つを選択するステップと、前記選択した仮想プロセッサに前記仮想割込みを提示するステップとを有する動作を実行する、コンピュータ・プログラム。
（１２）前記仮想割込みを処理するために前記仮想プロセッサから１つを選択するステップが、
前記仮想プロセッサのうちの少なくとも１つの前記動作状態を検査して、前記少なくとも１つの仮想プロセッサが１つまたは複数の基準を満たしているかどうかを判定するステップを有する、上記（１１）に記載のコンピュータ・プログラム。
（１３）前記基準のうちの１つが、前記少なくとも１つの仮想プロセッサが現在実行中であるかどうかを有する、上記（１２）に記載のコンピュータ・プログラム。
（１４）前記動作が、
前記仮想割込みのソースを決定するステップをさらに有し、
前記基準のうちの１つが、前記少なくとも１つの仮想プロセッサが前記仮想割込みの前記ソースをマスクしているかどうかを有する、上記（１３）に記載のコンピュータ・プログラム。
（１５）前記動作が、前記少なくとも１つの仮想プロセッサが実行中であり、前記仮想割込みソースがマスクされていない場合に、前記少なくとも１つの仮想プロセッサに前記仮想割込みを提示するステップをさらに有し、前記基準のうちの１つが、前記少なくとも１つの仮想プロセッサが現在実行中であるかどうかを有する、上記（１２）に記載のコンピュータ・プログラム。
（１６）少なくとも１つのロジカル・パーティションと、
前記ロジカル・パーティションに関連する複数の仮想プロセッサと、
前記ロジカル・パーティションをターゲットにする仮想割込みを受信し、前記仮想プロセッサのうちの少なくとも１つの動作状態に基づいて前記仮想割込みを処理するために前記仮想プロセッサから１つを選択し、前記選択した仮想プロセッサに前記仮想割込みを提示するように構成される仮想グローバル割込み待ち行列とを有するロジカル・パーティション・コンピュータ・システム。
（１７）現在実行中の仮想プロセッサがまったくない場合にのみ、現在実行中ではない仮想プロセッサに仮想割込みを提示するように前記仮想グローバル割込み待ち行列が構成される、上記（１６）に記載のロジカル・パーティション・コンピュータ・システム。
（１８）複数の仮想プロセッサが実行中である場合に、
前記仮想割込みのソースをマスクしていない実行中の仮想プロセッサがまったくない場合にのみ、前記仮想割込みの前記ソースをマスクしている実行中の仮想プロセッサに割込みを提示するように前記仮想グローバル割込み待ち行列が構成される、上記（１７）に記載のロジカル・パーティション・コンピュータ・システム。
（１９）仮想割込みを生成可能な１つまたは複数の仮想デバイスをさらに有する、上記（１６）に記載のロジカル・パーティション・コンピュータ・システム。
（２０）前記仮想グローバル割込み待ち行列が、複数のロジカル・パーティション間で共用されるハードウェア・グローバル割込み待ち行列を仮想化する、上記（１６）に記載のロジカル・パーティション・コンピュータ・システム。
（２１）複数の関連仮想プロセッサを有する少なくとも１つの追加のロジカル・パーティションと、
前記少なくとも１つの追加のロジカル・パーティションに関連する少なくとも１つの追加の仮想グローバル割込み待ち行列とを有する、上記（１６）に記載のロジカル・パーティション・コンピュータ・システム。
【図面の簡単な説明】
【００４１】
【図１】本発明により例証として使用するロジカル・パーティション・コンピュータ・システムを示す図である。
【図２】本発明の諸実施形態によるコンポーネントの関係図である。
【図３】本発明の諸実施形態によるコンポーネントの関係図である。
【図４】本発明の諸実施形態によるコンポーネントの関係図である。
【図５】本発明の一実施形態により仮想割込みを処理するための例示的な動作を示す流れ図である。
【図６】本発明の一実施形態により仮想プロセッサの動作状態を決定するための例示的な動作を示す流れ図である。
【符号の説明】
【００４２】
１１０1  ロジカル・パーティション
１１０N  ロジカル・パーティション
１１２1  オペレーティング・システム
１１２N  オペレーティング・システム
１１４1  仮想プロセッサ（複数も可）
１１４N  仮想プロセッサ（複数も可）
１１６1  仮想割込みレジスタ
１１６N  仮想割込みレジスタ
１１８1  仮想デバイス
１１８N  仮想デバイス
１２０  パーティション・マネージャ
１２４  仮想割込み管理機構
１２６  仮想グローバル割込み待ち行列（複数も可）
１３０1  物理的プロセッサ
１３０N  物理的プロセッサ
１３６1  割込みレジスタ
１３６N  割込みレジスタ
１４０  メモリ
１５０  割込みコントローラ
１５２  入出力装置
１５６  グローバル割込み待ち行列
【図１】
2004326743.tif 000003
【図２】
2004326743.tif 000004
【図３】
2004326743.tif 000005
【図４】
2004326743.tif 000006
【図５】
2004326743.tif 000007
【図６】
2004326743.tif 000008