(57)【特許請求の範囲】
【請求項１】
１つ又はそれ以上の仮想処理装置のための仮想化支援を提供するデータを処理する装置を用いて割込み信号を処理する方法であって、
前記データを処理する装置によって受信された割込み信号に応答して、それぞれの仮想処理装置への１つ又はそれ以上の仮想インターフェースのうちの少なくとも１つに、前記割込み信号を特徴付けるデータを書き込むステップであって、前記１つ又はそれ以上の仮想インターフェースが、ハードウェア内に設けられており、各仮想インターフェースは、関連する仮想処理装置に関連しており、前記関連する仮想処理装置についての、物理的割込み番号および仮想割込み番号を示すデータを含む、未完了の割込みのリストを格納する１つ又はそれ以上のリスト・レジスタをそれぞれ含む、ステップと、
前記少なくとも１つの仮想インターフェースの前記リスト・レジスタ内に未完了の割込みの前記リストが書き込まれること応答して、前記関連する仮想処理装置による割込み処理に対応する処理をトリガするために前記仮想インターフェース内の制御回路によって仮想割込み信号を生成し、前記少なくとも１つの仮想インターフェース内に含められた１つ又はそれ以上のインターフェース・レジスタ内に前記仮想割込み信号を特徴付けるデータを提供するステップと、
前記仮想割込み信号に応答して、あたかも前記関連する仮想処理装置で実行されているかのような第１制御プログラムを用いて、前記１つ又はそれ以上のインターフェース・レジスタから前記割込み信号を特徴付ける前記データを読み出すステップと、
前記１つ又はそれ以上のインターフェース・レジスタから読み出された前記割込み信号を特徴付ける前記データに応答して、前記第１制御プログラムの制御の下で、前記関連する仮想処理装置による割込み処理に対応する処理を行うステップと、
を含み、
前記第１制御プログラムの制御の下での前記割込み処理の完了に応答して、前記仮想処理装置によって用いられる仮想割込み番号を、前記データを処理する装置によって受信された前記割込み信号と関連付けられた物理的割込み番号に第２制御プログラムによってマッピングし、前記物理的割込み番号を用いて前記割込み信号のソースへの前記完了の信号伝達をトリガする、方法。
【請求項２】
前記割込み信号を特徴付けるデータを前記１つ又はそれ以上の仮想インターフェースのうちの少なくとも１つに書き込む前記ステップが、前記データを処理する装置によって実行される第２制御プログラムを用いて行われる、請求項１に記載の方法。
【請求項３】
前記第１制御プログラムの制御の下で、前記関連する仮想処理装置による割込み処理に対応する処理を行うステップの後に、前記割込み処理の完了を示すデータを、前記第１制御プログラムの制御の下で、前記１つ又はそれ以上のインターフェース・レジスタに書き込むステップをさらに含む、請求項１に記載の方法。
【請求項４】
前記第２制御プログラムを用いて前記１つ又はそれ以上のインターフェース・レジスタから前記割込み処理の完了を示すデータを読み出して、前記関連する仮想処理装置による前記割込み処理を完了済みとして記録するステップをさらに含む、請求項３に記載の方法。
【請求項５】
複数の仮想処理装置がハードウェア内に提供された仮想インターフェースを共有し、前記第２制御プログラムがどの仮想処理装置が前記仮想インターフェースを現在使用しているかを制御する、請求項１ないし４のいずれか一項に記載の方法。
【請求項６】
前記データを処理する装置が複数のプロセッサを含む多重処理装置であり、各々のプロセッサがハードウェア内に提供された仮想インターフェースを有し、前記仮想インターフェースは、どの仮想処理装置が前記プロセッサによって実行されているかに従って制御される、請求項１から請求項４までのいずれか一項に記載の方法。
【請求項７】
前記第２制御プログラムが、前記１つ又はそれ以上の仮想処理装置の各々に関しての未完了の割込みを特徴付けるデータを維持する、請求項１から請求項６までのいずれか一項に記載の方法。
【請求項８】
前記第２制御プログラムが、現在アクティブな仮想処理装置に対応するように、前記１つ又はそれ以上のリスト・レジスタの中への未完了の割込みを特徴付けるデータと、前記１つ又はそれ以上のリスト・レジスタの外への未完了の割込みを特徴付けるデータとのスワッピングを管理する、請求項５、請求項６、及び請求項７のいずれか一項に記載の方法。
【請求項９】
前記未完了の割込みが、
前記データを処理する装置によって受信された前記割込み信号に起因して生じ、前記第１制御プログラムにまだ通知されていない、保留中の割込みと、
前記第１制御プログラムに通知されており、前記第１制御プログラムの制御の下で依然として前記割込み処理を受ける、アクティブな割込みと、
の１つ又はそれ以上を含む、請求項１から請求項８までのいずれか一項に記載の方法。
【請求項１０】
請求項１から請求項９までのいずれか一項に記載の方法であって、
外部割込みコントローラの複数の割込み信号入力の１つにおいて物理的割込み信号を受信することと、
前記割込み信号に応答して、前記外部割込みコントローラの１つ又はそれ以上の外部インターフェース・レジスタのうちの１つから読み出されるべき前記物理的割込み信号を特徴付けるデータを前記外部割込みコントローラに提供することと、
前記物理的割込み信号に応答する前記処理の一部として前記物理的割込み信号を特徴付ける前記データを前記第２制御プログラムにより前記外部インターフェース・レジスタから読み出すことと、
を含み、
前記外部割込みコントローラは、前記外部インターフェース・レジスタを有する、方法。
【請求項１１】
前記第２制御プログラムによる前記外部インターフェース・レジスタからの前記物理的割込み信号を特徴付ける前記データの前記読み出しが、前記割込み信号の受信に対して肯定応答するように働く、請求項１０に記載の方法。
【請求項１２】
前記外部割込みコントローラが、複数の割込み信号入力で受信された割込み信号を優先順位付けなしに処理する、請求項１０及び請求項１１のいずれか一項に記載の方法。
【請求項１３】
前記外部割込みコントローラが、構成フラグの設定に応答して、複数の割込み信号入力で受信された割込み信号の優先順位付けによる処理に切換える、請求項１２に記載の方法。
【請求項１４】
前記データを処理する装置によって受信された前記割込み信号が割込み番号を有し、前記仮想割込み信号が仮想割込み番号を有し、前記第２制御プログラムが前記割込み番号と前記仮想割込み番号との間でマッピングするように働く、請求項２に記載の方法。
【請求項１５】
前記第２制御プログラムが、前記複数の仮想処理装置のうちのどれが前記割込み処理を行うように働くかを選択する、請求項２に記載の方法。
【請求項１６】
前記第２制御プログラムがまた、前記データを処理する装置によって受信された前記割込み信号の代わりに、ソフトウェアにより生成された割込み信号に応答する、請求項２に記載の方法。
【請求項１７】
前記ソフトウェアにより生成された割込み信号が前記第２制御プログラム内で生成される、請求項１６に記載の方法。
【請求項１８】
前記ソフトウェアにより生成された割込み信号が前記仮想処理装置のうちの１つによって生成される、請求項１６及び請求項１７のいずれか一項に記載の方法。
【請求項１９】
前記１つ又はそれ以上のリスト・レジスタがオーバーフローする場合に、前記第２制御プログラムが未完了の割込みを特徴付けるデータをバッファする、請求項２に記載の方法。
【請求項２０】
前記１つ又はそれ以上のリスト・レジスタ内のフリースペースが利用可能となるときに、前記第２制御プログラムが、前記１つ又はそれ以上のリスト・レジスタに、前記未完了の割込みを特徴付けるデータであって前記第２制御プログラムによってバッファされるデータを再補充する、請求項１９に記載の方法。
【請求項２１】
前記割込み処理が前記第１制御プログラムの制御の下で完了し、前記第２制御プログラムが未完了の割込みを特徴付けるデータをバッファしているときに、ハードウェア内に提供された前記１つ又はそれ以上の仮想インターフェースが、再補充割込みを生成して前記第２制御プログラムによる前記再補充をトリガする、請求項２０に記載の方法。
【請求項２２】
前記再補充割込みの生成がオーバーフロー・フラグによって制御され、前記オーバーフロー・フラグは、前記第２制御プログラムが未完了の割込みを特徴付けるデータをバッファしているときに前記第２制御プログラムによって設定されている、請求項２１に記載の方法。
【請求項２３】
ハードウェア内に提供された前記１つ又はそれ以上の仮想インターフェースが、前記第２制御プログラムが前記再補充割込みに応答することができるよりも前に完了している割込み処理のインスタンスのカウントを維持するように配置されたカウンタ・レジスタを含む、請求項２１及び請求項２２のいずれか一項に記載の方法。
【請求項２４】
前記少なくとも１つの仮想インターフェースが、あたかも前記関連する仮想処理装置で現在行われているかのようなあらゆる割込み処理と関連付けられた優先度レベルを示す優先度データを格納する優先度レジスタを含む、請求項１から請求項２３までのいずれか一項に記載の方法。
【請求項２５】
前記仮想割込み信号の前記生成と前記仮想割込み信号を特徴付ける前記データの前記提供が、前記仮想インターフェースによるハードウェア制御の下で行われる、請求項１から請求項２４までのいずれか一項に記載の方法。
【請求項２６】
１つ又はそれ以上のリスト・レジスタが、
ソフトウェア割込みに関しての多重処理装置内の要求処理装置と、
優先度値と、
有効フラグと、
前記データを処理する装置によって受信された割込み信号のタイプを区別するフラグと、
の１つ又はそれ以上を示すデータを格納し、
前記多重処理装置は、複数のプロセッサを具備するデータを処理する装置である請求項１から請求項２５までのいずれか一項に記載の方法。
【請求項２７】
１つ又はそれ以上のリスト・レジスタが、対応する未完了の割込みが保留中の割込みであるか又はアクティブな割込みであるかを示すデータを格納する、請求項９に記載の方法。
【請求項２８】
１つ又はそれ以上のインターフェース・レジスタが、
物理的割込み番号と、
ソフトウェア割込みに関しての多重処理装置内の要求処理装置と、
の１つ又はそれ以上を示すデータを格納し、
前記多重処理装置は、複数のプロセッサを具備するデータを処理する装置である請求項１から請求項２７までのいずれか一項に記載の方法。
【請求項２９】
前記仮想インターフェースと関連付けられた１つ又はそれ以上の制御レジスタが、
ネストされた割込みと関連付けられたアクティブな割込みの優先度のリストと、
完了済みとマークされていない、完了している割込み処理のインスタンスのカウントと、
バッファされている未完了の割込みを示すフラグと、
優先度マスク値と、
優先度２進小数点値と、
前記仮想インターフェースをイネーブルにするフラグと、
の１つ又はそれ以上を示すデータを格納し、
前記優先度２進小数点値は、現在アクティブな割込みに先行するようにするために、処理されている現在アクティブな割込みを新たな割込みが上回らなければならない量を示す、請求項１から請求項２８までのいずれか一項に記載の方法。
【請求項３０】
前記第２制御プログラムがハイパーバイザ制御プログラムである、請求項１から請求項２９までのいずれか一項に記載の方法。
【請求項３１】
前記第１制御プログラムがゲスト・オペレーティング・システム・プログラムである、請求項１から請求項３０までのいずれか一項に記載の方法。
【請求項３２】
前記データを処理する装置によって受信された前記割込み信号が関連する優先度値を有し、前記割込み信号の受信に応答して前記仮想割込み信号を生成するステップが、前記データを処理する装置によって受信されたより低い優先度の割込み信号の結果として、現在行われている割込み処理が割り込まれないように、前記関連する優先度値と前記優先度レジスタに格納された前記優先度データとの比較に依存する、請求項２４に記載の方法。
【請求項３３】
前記比較が、優先度マスク値と優先度２進小数点値のうちの１つ又はそれ以上に依存し、
前記優先度２進小数点値は、現在アクティブな割込みに先行するようにするために、処理されている現在アクティブな割込みを新たな割込みが上回らなければならない量を示す、請求項３２に記載の方法。
【請求項３４】
１つ又はそれ以上の仮想処理装置のための仮想化支援を提供するデータを処理する装置であって、
前記データを処理する装置によって受信された割込み信号に応答して、第２制御プログラムと通信するように、前記割込み信号を特徴付けるデータを１つ又はそれ以上の外部インターフェース・レジスタに書き込む、外部割込みインターフェース回路と、
仮想インターフェースをそれぞれの仮想処理装置に提供する仮想割込みインターフェース回路であって、前記仮想インターフェースが、関連する仮想処理装置についての、物理的割込み番号および仮想割込み番号を示すデータを含む、未完了の割込みのリストを格納する１つ又はそれ以上のリスト・レジスタを含み、前記１つ又は複数のリスト・レジスタが前記第２制御プログラムによって少なくとも書き込み可能である、仮想割込みインターフェース回路と、
を備え、
前記リスト・レジスタ内に未完了の割込みの前記リストが前記第２制御プログラムによって書き込まれることに応答して、前記仮想割込みインターフェース回路が、
仮想割込み信号を生成して、第１制御プログラムの制御の下で前記関連する仮想処理装置による割込み処理に対応する処理をトリガし、
前記仮想割込み信号を特徴付けるデータを、前記仮想インターフェースについての前記仮想割込みインターフェース回路内に含められた１つ又はそれ以上の仮想インターフェース・レジスタに書込む、
ように働き、
前記第１制御プログラムの制御の下での前記割込み処理の完了に応答して、前記仮想処理装置によって用いられる仮想割込み番号を、前記データを処理する装置によって受信された前記割込み信号と関連付けられた物理的割込み番号にマッピングし、前記物理的割込み番号を用いて前記割込み信号のソースへの前記完了の信号伝達をトリガする、装置。
【請求項３５】
前記１つ又はそれ以上の仮想インターフェース・レジスタが、前記第１制御プログラムの制御の下での前記割込み処理の完了を示すデータの書き込みに割り当てられたフィールドを含む、請求項３４に記載の装置。
【請求項３６】
前記フィールドは、前記１つ又はそれ以上の仮想インターフェース・レジスタが、前記関連する仮想処理装置による前記割込み処理を完了済みとして記録するために、前記割込み処理の完了を示すデータの前記第２制御プログラムによる読み出しに割り当てられる、請求項３５に記載の装置。
【請求項３７】
複数の仮想処理装置が前記仮想割込みインターフェース回路を共有し、前記第２制御プログラムがどの仮想処理装置が前記仮想割込みインターフェース回路を現在使用しているかを制御する、請求項３４、請求項３５、及び請求項３６のいずれか一項に記載の装置。
【請求項３８】
前記データを処理する装置が複数のプロセッサを含む多重処理装置であり、各々のプロセッサがハードウェア内に提供された仮想インターフェースを有し、前記仮想インターフェースは、どの仮想処理装置が前記プロセッサによって実行されているかに従って制御される、請求項３４、請求項３５、及び請求項３６のいずれか一項に記載の装置。
【請求項３９】
前記割込み信号を特徴付けるデータは、前記第２制御プログラムによる前記外部インターフェース・レジスタから読み出され、前記読み出しは、前記外部割込みインターフェース回路の前記割込み信号の受信の肯定応答をトリガするように働く、請求項３４から請求項３８までのいずれか一項に記載の装置。
【請求項４０】
前記外部割込みインターフェース回路が、複数の割込み信号入力で受信された割込み信号を優先順位付けせずに処理する、請求項３４から請求項３８までのいずれか一項に記載の装置。
【請求項４１】
前記外部割込みインターフェース回路が、構成フラグの設定に応答して、複数の割込み信号入力で受信された割込み信号の優先順位付けによる処理に切換える、請求項４０に記載の装置。
【請求項４２】
前記１つ又はそれ以上のリスト・レジスタがオーバーフローする場合に、前記第２制御プログラムが未完了の割込みを特徴付けるデータをバッファする、請求項３４から請求項４１までのいずれか一項に記載の装置。
【請求項４３】
前記第２制御プログラムが、前記１つ又はそれ以上のリスト・レジスタ内のフリースペースが利用可能となるときに、前記１つ又はそれ以上のリスト・レジスタを、前記未完了の割込みを特徴付けるデータであって前記第２制御プログラムによってバッファされる前記データで再補充する、請求項４２に記載の装置。
【請求項４４】
前記割込み処理が前記第１制御プログラムの制御の下で完了し、前記第２制御プログラムが未完了の割込みを特徴付けるデータをバッファしているときに、前記仮想割込みインターフェース回路が再補充割込みを生成して前記第２制御プログラムによる前記再補充をトリガする、請求項４３に記載の装置。
【請求項４５】
前記再補充割込みの生成がオーバーフロー・フラグによって制御され、前記第２制御プログラムが未完了の割込みを特徴付けるデータをバッファしているときに、前記オーバーフロー・フラグが前記第２制御プログラムによって設定されている、請求項４４に記載の装置。
【請求項４６】
前記仮想割込みインターフェース回路が、前記第２制御プログラムが前記再補充割込みに応答することができるよりも前に完了している割込み処理のインスタンスのカウントを維持するように配置されたカウンタ・レジスタを含む、請求項４４に記載の装置。
【請求項４７】
前記仮想割込みインターフェース回路が、あたかも関連する仮想処理装置で現在行われているかのようなあらゆる割込み処理と関連付けられた優先度レベルを示す優先度データを格納する優先度レジスタを含む、請求項３４から請求項４６までのいずれか一項に記載の装置。
【請求項４８】
１つ又はそれ以上のリスト・レジスタが、
ソフトウェア割込みに関しての多重処理装置内の要求処理装置と、
優先度値と、
有効フラグと、
前記データを処理する装置によって受信された割込み信号のタイプを区別するフラグと、
の１つ又はそれ以上を示すデータを格納し、
前記多重処理装置は、複数のプロセッサを具備するデータを処理する装置である請求項３４から請求項４７までのいずれか一項に記載の装置。
【請求項４９】
対応する未完了の割込みが、
前記データを処理する装置によって受信された前記割込み信号に起因して生じ、前記第１制御プログラムにまだ通知されていない、保留中の割込みと、
前記第１制御プログラムに通知されており、前記第１制御プログラムの制御の下で依然として前記割込み処理を受ける、アクティブな割込みと、
のいずれであるかを示すデータを、１つ又はそれ以上のリスト・レジスタが格納する、請求項３４から請求項４８までのいずれか一項に記載の装置。
【請求項５０】
１つ又はそれ以上の仮想インターフェース・レジスタが、
物理的割込み番号と、
ソフトウェア割込みに関しての多重処理装置内の要求処理装置と、
の１つ又はそれ以上を示すデータを格納し、
前記多重処理装置は、複数のプロセッサを具備するデータを処理する装置である請求項３４から請求項４９までのいずれか一項に記載の装置。
【請求項５１】
前記仮想割込みインターフェース回路と関連付けられた１つ又はそれ以上の制御レジスタが、
ネストされた割込みと関連付けられたアクティブな割込みの優先度のリストと、
実行されている前記第２制御プログラムにアクセス可能な、完了済みとマークされていない、完了している割込み処理のインスタンスのカウントと、
前記第２制御プログラムによってバッファされている未完了の割込みを示すフラグと、
優先度マスク値と、
優先度２進小数点値と、
前記仮想インターフェースをイネーブルにするフラグと、
の１つ又はそれ以上を示すデータを格納し、
前記優先度２進小数点値は、現在アクティブな割込みに先行するようにするために、処理されている現在アクティブな割込みを新たな割込みが上回らなければならない量を示す、請求項３４から請求項５０までのいずれか一項に記載の装置。
【請求項５２】
前記第２制御プログラムがハイパーバイザ制御プログラムである、請求項３４から請求項５１までのいずれか一項に記載の装置。
【請求項５３】
前記第１制御プログラムがゲスト・オペレーティング・システム・プログラムである、請求項３４から請求項５２までのいずれか一項に記載の装置。
【請求項５４】
前記データを処理する装置によって受信された前記割込み信号が関連する優先度値を有し、前記仮想割込みインターフェース回路が、前記データを処理する装置によって受信されたより低い優先度の割込み信号の結果として、現在行われている割込み処理が割り込まれないように、前記関連する優先度値と前記優先度レジスタに格納された前記優先度データとの比較に依存する前記割込み信号の受信に応答して仮想割込み信号を生成する、請求項４７に記載の装置。
【請求項５５】
前記比較が、優先度マスク値と優先度２進小数点値のうちの１つ又はそれ以上に依存し、
前記優先度２進小数点値は、現在アクティブな割込みに先行するようにするために、処理されている現在アクティブな割込みを新たな割込みが上回らなければならない量を示す、請求項５４に記載の装置。
【請求項５６】
１つ又はそれ以上の仮想処理装置のための仮想化支援を提供するデータを処理する装置であって、
前記データを処理する装置によって受信された割込み信号に応答して、第２制御プログラムと通信するように、前記割込み信号を特徴付けるデータを１つ又はそれ以上の外部インターフェース・レジスタ手段に書き込むための、外部割込みインターフェース手段と、
仮想インターフェースをそれぞれの仮想処理装置に提供するための仮想割込みインターフェース手段であって、前記仮想インターフェースが、関連する仮想処理装置についての、物理的割込み番号および仮想割込み番号を示すデータを含む、未完了の割込みのリストを格納する１つ又はそれ以上のリスト・レジスタ手段を含み、前記１つ又は複数のリスト・レジスタ手段が前記第２制御プログラムによって少なくとも書き込み可能である、仮想割込みインターフェース手段と、
を備え、
前記リスト・レジスタ手段内に未完了の割込みの前記リストが前記第２制御プログラムによって書き込まれることに応答して、前記仮想割込みインターフェース手段が、
仮想割込み信号を生成して、前記第１制御プログラムの制御の下で前記関連する仮想処理装置による割込み処理に対応する処理をトリガし、
前記仮想インターフェースについての前記仮想割込みインターフェース手段内に含められた１つ又はそれ以上の仮想インターフェース・レジスタ手段に前記仮想割込み信号を特徴付けるデータを書込む、
ように働き、
前記第１制御プログラムの制御の下での前記割込み処理の完了に応答して、前記仮想処理装置によって用いられる仮想割込み番号を、前記データを処理する装置によって受信された前記割込み信号と関連付けられた物理的割込み番号にマッピングし、前記物理的割込み番号を用いて前記割込み信号のソースへの前記完了の信号伝達をトリガする、装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理システムに関する。より詳細には、本発明は、１つ又はそれ以上の仮想処理装置を用いるデータ処理システム内の割込みの取り扱いに関する。
【背景技術】
【０００２】
１つ又はそれ以上の仮想処理装置のための仮想化（ｖｉｒｔｕａｌｉｓａｔｉｏｎ）支援をデータ処理システムに提供することが公知である。こうしたシステムの一例は、どこに特定のプロセッサが物理的に実装されるかであり、多数の仮想機械のための支援を提供することが望ましい。これらの状況において、該物理的プロセッサは、多数の仮想機械のための支援、例えば、実行されている仮想機械の間の切換えを提供するために、ソフトウェア（例えばハイパーバイザ・ソフトウェア）を実行することができる。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
こうした仮想化支援を提供するシステム内の１つの特定の問題は、どのように割込みが取り扱われるかである。割込み処理速度は、特にリアルタイム処理の分野におけるデータ処理システムのしばしば重要なパフォーマンス・パラメータである。１つの方法は、支援される各々の仮想処理システムのためのハイパーバイザ・コードにおけるソフトウェアベースの仮想割込みコントローラを提供することである。該仮想処理システムによる該割込みコントローラにアクセスする試みは、正しい応答をシミュレートすることができるハイパーバイザへのエントリをもたらす。該割込みコントローラへのアクセスが頻繁である場合、これは不都合なほどに遅いことがある。各々の割込みの処理は、典型的に、最少で２回、しばしばそれ以上の、割込みコントローラへのアクセスに関係する。さらにまた、幾つかの仮想処理システムは、割込みコントローラへの頻繁なアクセスを行って、該プロセッサについてのアクティブな優先度レベルを変化させる。したがって、要求される機能性を提供するこのソフトウェアベースの仮想割込みコントローラ技術は、パフォーマンス全体に対して顕著な悪影響を有する。
【０００４】
多数の仮想機械を固有に支援し、ハードウェアにおける適切なアクションへの各仮想機械の割込みコントローラのアクセスをマッピングする、ハードウェア・ベースの機構を構築することも可能である。しかしながら、このハードウェア方法は、不都合なほどに大きいハードウェア・オーバーヘッドを伴うことがあり、そしてまた幾つの割込み及び／又は仮想機械を支援することができるかの観点で潜在的に制限する制約を課すことがある。
【０００５】
さらなる方法は、より効率の良いハイパーコールを用いることによって割込みのオーバーヘッドを減少させるための、準仮想化の使用である。これらの方法でさえも、物理的割込みが到着するときの少なくとも１つのハイパーバイザ・エントリと、割込み処理が完了する（再びイネーブルにされるべき該物理的割込みがイネーブルにされる）ときの別のハイパーバイザ・エントリが存在するであろう。
【課題を解決するための手段】
【０００６】
１つの態様から見て、本発明は、１つ又はそれ以上の仮想処理装置のための仮想化支援を提供するデータを処理する装置を用いて割込み信号を処理する方法であって、
前記データを処理する装置によって受信された割込み信号に応答して、１つ又はそれ以上の仮想インターフェースのうちの少なくとも１つへの前記割込み信号を特徴付けるデータを、それぞれの仮想処理装置に書き込むステップであって、前記１つ又はそれ以上の仮想インターフェースが、ハードウェア内に設けられており、関連する仮想処理装置についての、物理的割込み数および仮想割込み数を示すデータを含む、未完了の割込みのリストを格納する１つ又はそれ以上のリスト・レジスタをそれぞれ含む、ステップと、
前記少なくとも１つの仮想インターフェースの前記リスト・レジスタ内の未完了の割込みの前記リストに応答して、前記関連する仮想処理装置による割込み処理に対応する割込み処理をトリガするために仮想割込み信号を生成し、前記少なくとも１つの仮想インターフェース内に含められた１つ又はそれ以上のインターフェース・レジスタから読み出すために前記仮想割込み信号を特徴付けるデータを提供するステップと、
前記仮想割込み信号に応答して、あたかも前記関連する仮想処理装置で実行されているかのような第１制御プログラムを用いて、前記１つ又はそれ以上のインターフェース・レジスタから前記割込み信号を特徴付ける前記データを読み出すステップと、
前記１つ又はそれ以上のインターフェース・レジスタから読み出された前記割込み信号を特徴付けるデータに応答して、前記第１制御プログラムの制御の下で、前記関連する仮想処理装置による割込み処理に対応する割込み処理を行うステップと、
を含み、
前記第１制御プログラムの制御の下での前記割込み処理の完了に応答して、前記仮想データ処理装置によって用いられる仮想割込み数を、前記データを処理する装置によって受信された前記割込み信号と関連付けられた物理的割込み数にマッピングし、前記物理的割込み数を用いて前記割込み信号のソースへの前記完了の信号伝達をトリガする、方法を提供する。
【０００７】
この技術は、高いオーバーヘッド・コストと前述のような完全にハードウェア・ベースの方法の制限を課されることのない割込み処理に関係する一般的な動作のためのハードウェア・ベースの（したがって速い）支援を提供する。さらにまた、これは、割込みコントローラへのすべてのアクセスがトラップされる純粋にソフトウェアベースの方法よりも、高いパフォーマンスを与える。
【０００８】
本技術は、関連する仮想処理装置についての未完了の割込みのリストを格納する１つ又はそれ以上のリスト・レジスタと共に、このハードウェアによって生成された仮想割込み信号を特徴付けるデータを提供するための１つ又はそれ以上のインターフェース・レジスタを含む、ハードウェアにおける仮想インターフェースを提供する。未完了の割込みの現在のリストと関連付けられた仮想処理装置であたかも実行されているかのような第１制御プログラム（例えば、ゲスト・オペレーティング・システムのような）が、仮想割込み信号に応答して、割込み信号を特徴付けるデータをインターフェース・レジスタから読み出し、次いで、関連する仮想処理装置による割込み処理に対応する処理を行う。この配置は、ハードウェア内に該１つ又はそれ以上の仮想インターフェースが提供されるので、割込みコントローラへのすべてのアクセスをトラップするよりも高いパフォーマンスを与え、なおかつ高いハードウェア・コスト及びフル・ハードウェア・モデルの制限を課されない。仮想インターフェースのハードウェアは、仮想機械が切換えられるときに仮想インターフェース内の状態もまた切換えられるように、関連する仮想処理装置の間で共有されてもよい。実際には、該仮想機械が切換えられるときにより多数のレジスタがスワップされる必要があり、こうした仮想機械の切換え動作には既にかなり多くの時間が費やされているため、これは大きな欠点ではない。
第１制御プログラムの制御の下で処理されている割込みが完了するときに、該仮想割込み数から該物理的割込み数に戻るマッピングを行って、そのように導出された物理的割込み数を用いて該割込み信号のソースへの完了の信号伝達をトリガすることができる。
【０００９】
該割込み信号を特徴付けるデータを仮想インターフェースに書き込むことは、例えば、ハイパーバイザ制御プログラムのような装置によって実行される第２制御プログラムを用いて行われてもよい。
【００１０】
第１制御プログラムは、第１制御プログラムの制御の下で１つ又はそれ以上のインターフェース・レジスタにデータを書き込むことによって、関連する仮想処理装置による割込み処理に対応する処理の完了を示すデータを書き込むことができる。これは、割込み終了イベントを信号伝達するための機構を提供することができる。
【００１１】
関連する仮想処理装置による割込み処理が完了したことを記録するために、第２制御プログラムを用いて該１つ又はそれ以上のインターフェース・レジスタから割込み処理の完了を示すデータを読み出すことができる。これは、こうした完了を、オリジナルの割込みを生成しその割込みの完了の通知を待っている物理的装置のようなシステム内の他のレベルに信号伝達するのに有用であり得る。
【００１２】
前述のように、複数の仮想処理装置が、ハードウェア内に提供された仮想インターフェースを共有してもよく、この文脈において、第２制御プログラムは、どの仮想処理装置が該仮想インターフェースを現在使用しているかを制御することができる。第２制御プログラムがハイパーバイザである場合、これは典型的にどの仮想機械がアクティブであるかを既に管理しており、したがって、仮想機械が切換えられるときに、該仮想インターフェースの使用もまた切換えられてもよい。
【００１３】
データを処理するための装置は、多重処理装置（すなわち、多数のプロセッサ・コアを含む装置）であってもよく、これらのプロセッサの各々は、ハードウェア内に提供された仮想インターフェースを有し、どの仮想処理装置が対応するプロセッサによって支援されているかに基づいて制御されてもよい。
【００１４】
第２制御プログラムは、リスト・レジスタのコンテンツとそれらのリスト・レジスタからのあらゆるオーバーフローとを管理することを含む該１つ又はそれ以上の仮想処理装置の各々に関しての未完了の割込みを特徴付けるデータを維持することができる。
【００１５】
該リスト・レジスタ内に格納された未完了の割込みは、発生したが第１制御プログラムにまだ通知されていない１つ又はそれ以上の保留中の割込みと、第１制御プログラムに通知され依然として第１制御プログラムによる割込み処理を受ける１つ又はそれ以上のアクティブな割込みとを表すことができる。
【００１６】
該データ処理装置は、ハードウェア内に提供され、該処理装置の外部からの物理的割込み信号の受け取りを管理するために１つ又はそれ以上の外部インターフェース・レジスタを有する、外部割込みコントローラを用いてもよい。
【００１７】
該外部インターフェース・レジスタから割込み信号を特徴付けるデータを読み出すことは、その割込み信号の受け取りを外部のシステムに肯定応答するように働くことができる。該外部割込みコントローラは、複数の割込み信号入力で受信された割込み信号を優先順位付けなしに処理することができ、又は、データ処理装置の基礎をなす状態（例えば仮想処理装置が現在エミュレートされているか）に応じて優先順位を付けて処理するために構成フラグを用いて切換えられてもよい。
【００１８】
データを処理するための装置によって受信される物理的割込みは、それらと関連付けられた割込み番号を有することができ、ハードウェア内に提供された仮想インターフェースによって生成される仮想割込み信号は、それと共に関連付けられた仮想割込み番号を有することができる。第２制御プログラムは、該物理的割込み番号と該仮想割込み番号との間のマッピングを行うことができる。
【００１９】
第２制御プログラムは、マルチプロセッサ・システムが用いられているときに、複数の仮想処理装置のうちのどれが割込み処理を行うように働くかを選択することができる。多数の仮想処理装置は、特定の割込みを取り扱うことができ、第２制御プログラムは、作動効率全体の改善を求めるような方法で、これらの候補仮想処理装置のうちの適切な１つに割込みを割り当てることができる可能性がある。第２制御プログラムはまた、データを処理するための装置によって受信された物理的割込み信号の代わりに、ソフトウェアにより生成された割込み信号に応答してもよい。こうしたソフトウェアにより生成された割込み信号は、第２制御プログラム自身によって生成されてもよい。これらのソフトウェアにより生成された割込み信号はまた、例えば、該仮想処理装置の１つによって生成することができる。
【００２０】
該リスト・レジスタは、未完了の割込みを特徴付けるデータを格納するための有限のリソースを表すことが分かるであろう。この問題に対処するために、第２制御プログラムは、該１つ又はそれ以上のリスト・レジスタがオーバーフローする場合に、未完了の割込みを特徴付けるデータをバッファすることができる。第２制御プログラムはまた、該１つ又はそれ以上のリスト・レジスタ内のフリースペースが利用可能となるときに、該１つ又はそれ以上のリスト・レジスタを、未完了の割込みを特徴付けるデータであって第２制御プログラムによってバッファされるデータを再補充するように働くことができる。
【００２１】
該リスト・レジスタの再補充は、第２制御プログラムが、次いでバッファされた未完了の割込みで空きスペースを埋める間に、仮想インターフェースを提供するハードウェアによる入替え再補充割込みの発生によってトリガすることができる。
【００２２】
再補充割込みの発生は、第２制御プログラムが未完了の割込みを特徴付けるいかなるデータをもバッファしない場合に、該リスト・レジスタ内の空きスペースが他の割込みの完了のためにそれが利用可能となったときにすぐに再補充される必要のないように、オーバーフロー・フラグによってゲートされてもよい。
【００２３】
該仮想インターフェースは、あたかも関連する仮想データ処理装置で現在行われているかのようなあらゆる割込み処理と関連付けられた優先度レベルを示すデータを格納する優先度レジスタを含んでもよい。このような優先度レジスタによる優先度レベルのトラッキングは、新たに生じた割込みが既存の割込み処理並びに他の制御手段に先行するべきか否かに関する適切な制御決定が行われることを可能にする。
【００２４】
該仮想割込み信号の生成と、該仮想割込み信号を特徴付けるデータの書き込みは、該仮想インターフェースによるハードウェア制御の下で行うことができる。
【００２５】
該１つ又はそれ以上のリスト・レジスタは、物理的割込み番号、仮想割込み番号、ソフトウェア割込みに関しての多重処理装置内の要求処理装置、優先度値、有効フラグ、及び前記データを処理する装置によって受信された割込み信号のタイプを区別するフラグ、を特徴付けるデータのような種々の異なる形態のデータを格納することができる。
【００２６】
該リスト・レジスタは、対応する未完了の割込みが保留中の割込みであるか又はアクティブな（ａｃｔｉｎｇ）割込みであるか、例えば保留中のフラグ／アクティブなフラグを示すデータを格納することができる。
【００２７】
該１つ又はそれ以上のインターフェース・レジスタは、物理的割込み番号及び／又はソフトウェア割込みに関しての多重処理装置内の要求処理装置を示すデータを格納することができる。
【００２８】
１つ又はそれ以上の制御レジスタは、該仮想インターフェースと関連付けることができ、ネストされた割込みと関連付けられたアクティブな優先度のリスト、前記割込み処理をトラッキングするデータにおける対応する更新なしに完了されている割込み処理のインスタンスのカウントと、バッファされている未完了の割込みを示すフラグと、優先度マスク値と、優先度２進小数点値と、該仮想インターフェースをイネーブルにするフラグと、を含む種々の異なる情報を示すデータを格納することができる。
【００２９】
仮想割込み信号が生成されるとき、該仮想割込み信号は、関連する優先度値を有することができ、仮想割込み信号を生成するステップは、データを処理するための装置によって受信されたより低い優先度の割込み信号の結果として、現在行われている割込み処理が割込まれないように、該関連する優先度値と優先度レジスタ内に格納された優先度値との比較に依存してもよい。
【００３０】
こうした優先度の制御は、１つ又はそれ以上の優先度マスク値（現在アクティブな割込み処理と関連付けられた優先度レベルを示す）と、優先度２進小数点値（その現在アクティブな割込みに先行するようにするために、処理されている現在アクティブな割込みを新たな割込みが上回らなければならない量を示す）とに依存してもよい。
【００３２】
別の態様から見て、本発明は、１つ又はそれ以上の仮想処理装置のための仮想化支援を提供するデータを処理する装置であって、
前記データを処理する装置によって受信された割込み信号に応答して、第２制御プログラムと通信するために前記割込み信号を特徴付けるデータを１つ又はそれ以上の外部インターフェース・レジスタに書き込むための、外部割込みインターフェース回路と、
仮想インターフェースをそれぞれの仮想処理装置に提供する仮想割込みインターフェース回路であって、前記仮想インターフェースが、関連する仮想処理装置についての、物理的割込み数および仮想割込み数を示すデータを含む、未完了の割込みのリストを格納する１つ又はそれ以上のリスト・レジスタを含み、前記１つ又はリスト・レジスタが前記第２制御プログラムによって少なくとも書き込み可能である、仮想割込みインターフェース回路と、
を備え、
前記リスト・レジスタ内の未完了の割込みの前記リストに応答して、前記仮想割込みインターフェース回路が、
仮想割込み信号を生成して、第１制御プログラムの制御の下で前記関連する仮想処理装置による割込み処理に対応する割込み処理をトリガし、
前記仮想インターフェースについての前記仮想割込みインターフェース回路内に含められた１つ又はそれ以上の仮想インターフェース・レジスタに前記仮想割込み信号を特徴付けるデータを書込む、
ように働き、
前記第１制御プログラムの制御の下での前記割込み処理の完了に応答して、前記仮想データ処理装置によって用いられる仮想割込み数を、前記データを処理する装置によって受信された前記割込み信号と関連付けられた物理的割込み数にマッピングし、前記物理的割込み数を用いて前記割込み信号のソースへの前記完了の信号伝達をトリガする、装置を提供する。
【００３３】
本発明の実施形態を、添付の図面を参照しながら単なる例としてここで説明する。
【図面の簡単な説明】
【００３４】
【図１】仮想データ処理装置を支援するシステム内の割込み処理と関連付けられたハードウェア及びソフトウェア要素を概略的に示す図である。
【図２】仮想インターフェースを概略的に示す図である。
【図３】外部割込みインターフェース及び仮想インターフェースを含むデータ処理のための装置を概略的に示す図である。
【図４】物理的割込み番号と仮想割込み番号との間のマッピングを示す図である。
【図５】割込み信号の受信に対するハイパーバイザ・ソフトウェアの応答を概略的に示す流れ図である。
【図６】リスト・レジスタのうちの１つのプログラミングに対する仮想インターフェース・ハードウェアの応答を概略的に示す流れ図である。
【図７】割込み肯定応答信号の受信に対する仮想インターフェース・ハードウェアの応答を概略的に示す流れ図である。
【図８】仮想割込み信号の受信に対するゲスト・オペレーティング・システムの応答を概略的に示す流れ図である。
【図９】割込み終了信号の受信に対する仮想インターフェース・ハードウェアの応答を概略的に示す流れ図である。
【図１０】再補充割込みに対するハイパーバイザ・ソフトウェアの応答を概略的に示す流れ図である。
【図１１】リスト・レジスタ内の完了した割込みをチェックするためにハイパーバイザによって行われる処理を概略的に示す流れ図である。
【図１２】コンテキスト・スイッチ（例えば、仮想機械スイッチ）でハイパーバイザによって行われる幾つかの動作を概略的に示す流れ図である。
【発明を実施するための形態】
【００３５】
図１は、仮想データ処理装置を支援するシステム内の割込み処理に関係するハードウェア及びソフトウェアの種々の部分を示す。これらの要素は、英国ケンブリッジ所在のＡＲＭ  Ｌｉｍｉｔｅｄによって提供されるタイプの汎用割込みコントローラ（ＧＩＣ）の形態をとってもよい、外部割込みインターフェース２を含む。外部割込みインターフェース２に応答するのは、外部割込みインターフェース２並びに同じくハードウェア内に提供された仮想インターフェース６と信号を交換するハイパーバイザ・ソフトウェア４（第２制御プログラム）である。ハイパーバイザ・ソフトウェア４は、仮想処理装置への物理的割込みの割当て、並びに、１つ又はそれ以上の仮想デバイス８によるソフトウェア割込みの生成を担当する。ハイパーバイザ・ソフトウェア４は、１つ又は複数の仮想処理装置のうちのどれが現在アクティブであるか、及び、要求されることがあるこうした仮想処理装置の間のあらゆるコンテキストの切換えを制御する。
【００３６】
基礎をなすハードウェアは、シングル・プロセッサであってもよく、又は、複数のプロセッサ・コアを含むマルチプロセッサにおけるような多重処理装置であってもよいことが分かるであろう。多重処理の実施形態におけるハイパーバイザ・ソフトウェア４は、関係する割込みを処理するための2つ以上の候補が存在する場合に特定の仮想処理装置への特定の割込みの割り当てを担当する。
【００３７】
仮想インターフェース６（ＶＧＩＣ）の下位レベルにおいて、割込みの管理／取り扱いの一部として仮想インターフェース６から割込みを特徴付けるデータを読み出し、並びに、該仮想インターフェースにデータ（割込み終了信号のような）を書き込む、ゲスト・オペレーティング・システム・ソフトウェア１０（第１制御プログラム）が提供される。ゲスト・オペレーティング・システム１０は、受信した割込み信号を処理するための割込み取扱ソフトウェア１２を含む。アプリケーション・プログラム１４及び割込み取扱ソフトウェア１２は、それらがあたかも関連する仮想処理装置で実行されていたかのようにゲスト・オペレーティング・システム１０で実行する。したがって、１つの特定のプロセッサ（又は該プロセッサのインスタンス／使用）について書き込まれたアプリケーション・ソフトウェア１４及び割込みハンドラ１２は、仮想インターフェース６とハイパーバイザ４が周囲の割込み機構と一緒にそれらが書き込まれたことについて特定のプロセッサをエミュレートする環境を提供するので、大きな修正を要求することなく図１のシステム内で再使用することができる。
【００３８】
図１に示された例では、シングル・プロセッサ・コアが用いられており、ゲスト・オペレーティング・システム１０の２つのインスタンスが、コンテキスト・スイッチで切換えられているものとして示される。こうした仮想機械の切換えが行われるとき、この切換えを制御しているハイパーバイザ４はまた、仮想インターフェース内のデータが、支援されている現在の仮想機械についての現在のものであるように、仮想インターフェース４内に格納された割込みを特徴付けるデータ（該ハイパーバイザによってソフトウェア内に格納されたバッファされたあらゆるデータを含む）を切換える。
【００３９】
図２は、仮想インターフェース・ハードウェア１６を概略的に示す。仮想インターフェース・ハードウェア１６は、現在使用中の関連する仮想機械のための未完了の割込みのリストを格納するリスト・レジスタ１８を含む。各々の未完了の割込みについてのリスト・レジスタ内に格納されたデータは、物理的割込み番号、仮想割込み番号、ソフトウェア割込みに関しての多重処理装置内の要求処理装置、優先度値、有効フラグ、異なるタイプの割込み（物理的／ソフトウェア）を区別するフラグ、並びに、リスト・レジスタ１８内の特定のエントリに空きがあることを示す空きフラグのような他のデータ、を含む。仮想インターフェース・ハードウェア１６内に同じく提供されるのは、基礎をなす仮想機械による処理のために該基礎をなす仮想機械に送られている割込みを特徴付けるデータを提供するインターフェース・レジスタ２０である。このデータは、割込みに肯定応答し、割込み終了を信号伝達し、優先度レベルを信号伝達することなどのためにアクセスがなされるレジスタを含むことができる。この仮想インターフェース・ハードウェア１６内に提供されたインターフェース・レジスタ２０は、外部インターフェース・ハードウェア２のインターフェース・レジスタ２０と同じ方法で構成される。ゲスト・オペレーティング・システムを実行する仮想機械は、あたかもそれらのインターフェース・レジスタが外部インターフェース・ハードウェアの一部であったかのようにインターフェース・レジスタ２０と同じ方法で対話することができる。
【００４０】
リスト・レジスタ１８は、ハイパーバイザ４によって管理される。インターフェース・レジスタ２０は、ゲスト・オペレーティング・システムによって管理される。さらにまた、リスト・レジスタ１８とインターフェース・レジスタ２０との両方に結合された制御回路２２は、さらに後述されるようにこれらのハードウェア機構の対話を制御するように働く。制御回路２２は、図６、図７、及び図９と組み合わせて示された挙動を達成するために多様な異なる物理的形態をとることができることが当該技術分野の当業者には分かるであろう。
【００４１】
図３は、複数の物理的割込み信号に応答する汎用割込みコントローラの形態の外部インターフェース・ハードウェア２６を含む集積回路２４を示す。仮想インターフェース・ハードウェア２８は、集積回路４によってエミュレートされた仮想機械であたかも実行されているかのようなゲスト・オペレーティング・システムと組み合わせて用いられる集積回路２内に提供される。同じく該集積回路内に含まれるのは、１つ又はそれ以上のプロセッサ・コア３０と、ソフトウェア（ハイパーバイザ・ソフトウェア、ゲスト・オペレーティング・システム・ソフトウェア、割込みハンドラ・コード、アプリケーション・コード、など）を格納するためのメモリ３２である。集積回路２４に他の機能性を提供するために、ビデオ・コントローラ３４のような物理的デバイスが存在してもよい。図示されるように、外部インターフェース・ハードウェア２６は、該ハイパーバイザ・ソフトウェアによって制御され、仮想インターフェース・ハードウェア２８は、該ゲスト・オペレーティング・システムによって制御される。該ハイパーバイザ・ソフトウェアと該ゲスト・オペレーティング・システムとの双方は、１つ又はそれ以上のプロセッサ・コア３０で実行される。多数のプロセッサ・コア３０が提供される場合、これらの各々に、それ独自の仮想インターフェース・ハードウェア２８が提供されてもよい。仮想インターフェース・ハードウェア２８のこうした多数のインスタンスは、こうした実施形態における多数のプロセッサ・コアの実行も管理しているハイパーバイザ・ソフトウェアによって集合的に管理することができる。
【００４２】
図４は、外部インターフェース・ハードウェア２６によって受信される物理的割込み番号、ハイパーバイザ・ソフトウェアによって動作されるように選択され得る仮想機械インスタンス、及びそれらの仮想機械によって使用され得る仮想割込み番号の間のマッピングを与えるテーブルを示す。図示されるように、各々の物理的割込み番号は別個のものである。所与の仮想機械は、使用される多数の仮想割込み番号を有することができ、例えば、仮想機械＃１は、仮想割込み番号＃１、＃２、及び＃７を使用する。所与の仮想機械は、異なる仮想機械によっても使用される仮想割込み番号を再使用してもよく、例えば、仮想機械＃２は、それ独自の仮想割込み番号＃１及び＃２を有し、これらは典型的に仮想機械＃１についての同様の数の仮想割込みから独立している。外部インターフェース・ハードウェア２６によって受信された物理的割込み信号を特徴付け、それらの仮想機械の１つによるサービスを要求するデータを、リスト・レジスタ１８に入れるために、図４に示されたマッピング・データが管理され、該ハイパーバイザ・ソフトウェアによって使用される。このデータはまた、割込みがそれらの仮想機械のうちの１つによる処理を完了するときに適切な逆マッピングを行うために用いることができ、こうした完了を、外部インターフェース・ハードウェア２６を介して該外部ハードウェアに通知することが望ましい。
【００４３】
外部インターフェース・ハードウェア２６は、それが物理的に受信する割込みを優先させず、基礎をなすハイパーバイザ・ソフトウェアへの優先順位付けを残すように適切なフラグによって構成することができる。代替的に、外部インターフェース・ハードウェア２６は、優先順位付けが望まれる場合には公知の割込みコントローラ技術に従って、ある程度の優先順位付けを提供することができる。幾つかの実施形態において、受信された物理的割込みの詳細を判定するために外部インターフェース・ハードウェア２６がハイパーバイザ・ソフトウェアによって読み出されるときに、これは外部インターフェース・ハードウェア２６によって割込み肯定応答信号として取り扱われる。該割込みを取り扱う仮想機械が処理を完了し、仮想インターフェース・ハードウェア２８を介して外部インターフェース・ハードウェア２６にこれを信号伝達すると、割込み終了信号を、その後、関係する割込みに関して分配することができる。したがって、該ゲスト・オペレーティング・システムは、仮想インターフェース２８のＥＯＩ割込みを（インターフェース・レジスタ２０内に）書き込むことになり、これはリスト・レジスタ１８に格納された物理的割込み番号を用いてＥＯＩ通知を直接に外部インターフェース・ハードウェア２６（リアルＧＩＣ）に転送することになる。
【００４４】
図５は、外部インターフェース・ハードウェア２６からの物理的割込み信号、或いは、仮想デバイスによって又はハイパーバイザ・ソフトウェアを介して該仮想機械のうちの１つで実行するソフトウェアによってハイパーバイザ・ソフトウェア内に内部的に生成されたソフトウェア割込み信号を受信するときの、ハイパーバイザ・ソフトウェアのアクションを概略的に示している流れ図である。ステップ３６において、該ハイパーバイザは、割込み信号を受信し、その割込み信号を処理するためにコードの所定の部分に誘導される。ステップ３８において、該ハイパーバイザは、外部インターフェース・ハードウェア２６を読み出して、生じた物理的割込みの物理的割込み番号を決定する。ステップ４０において、該ハイパーバイザ・ソフトウェアは、どの仮想機械がその物理的割込み信号を取り扱うか及び関係する物理的割込みの仮想割込み番号が幾つであるか、図４の表データ内を参照する。ステップ４０は、ソフトウェア割込みが該ハイパーバイザ・ソフトウェアで処理を開始する時点である。図４における各々の図示された物理的割込みは、その物理的割込みを取り扱うことになる仮想機械を予め割り当てられていることが分かるであろう。例えば、異なる仮想機械のローディング／状態に従って、どの仮想機械が特定の物理的割込みを取り扱うために使用されるべきかを、ハイパーバイザ・ソフトウェアが動的に割り当てることも可能である。
【００４５】
図５に戻ると、ステップ４２は、受信した割込みを取り扱うために用いられるべき仮想機械が現在アクティブな仮想機械であるかを判定する。現在アクティブな仮想機械ではない場合、ステップ４４において対象の仮想機械についての保留中の割込みのリストに割込みが追加される。現在アクティブでない仮想機械についてのこの保留中のリストは、該ハイパーバイザ・ソフトウェアによって管理され、各々のアクティブでない仮想機械についての保留中の割込みを詳述する、潜在的に多数のこうしたリストのうちの１つである。仮想機械がスケジュールされる時、その割込み保留リストのデータは、コンテキスト切換え動作の一部としてリスト・レジスタ１８及びインターフェース・レジスタ２０の中に書き込まれる。ステップ４６は、新たに受信した割込み信号の結果として現在アクティブな仮想機械（仮想処理装置）を再スケジュールする必要があるか判定する。こうした再スケジュールが必要不可欠である場合、これは、図１２と併せて説明されることになるコンテキスト切換えによりステップ４８において行われる。再スケジュールが必要ではない場合、処理はステップ５０に進み、該ゲスト・オペレーティング・システムに戻される。この場合、保留中の割込みは、該ハイパーバイザによって記録され、その仮想機械が該ハイパーバイザ・ソフトウェアによる実行についてスケジュールされるときに、関連する仮想機械によってやがて対処されることになる。
【００４６】
ステップ５２は、受信した割込みを特徴付けるデータをリスト・レジスタ１８内に書き込むことができるか、すなわち、リスト・レジスタ１８内に十分な余地があるかを判定する。これは、空きとしてフラグ付けされたエントリを検索することによってなされてもよい。代替的に、該ソフトウェアは、検索を行う必要のないように、どのエントリが空きであるかのリストを前もって別々に維持することができる。十分な余地がある場合、ステップ５４は、すでに説明したように受信した割込みを特徴付けるデータにより該リスト・レジスタをプログラムする。ステップ５４におけるリスト・レジスタ１８への該データの書き込みは、リスト・レジスタ１８内に格納された種々の割込みと関連付けられる仮想割込み状態の更新をトリガするように働く。この状態の更新は、図６に示された処理に従って制御回路２２のハードウェア制御の下で行われる。
【００４７】
ステップ５２においてリスト・レジスタ１８内に新たに受信した割込みのための余地がないと判定された場合、処理はステップ５６に進み、リスト・レジスタ１８は、それらが何らかの完了した割込みを含むかをチェックされる。この完了した割込みのチェックは、図１１と関連して後述される処理に従って行うことができる。リスト・レジスタ１８内に完了した割込みが識別される場合、それは該リスト・レジスタから空にされる。ステップ４８は、リスト・レジスタ１８内に新たに受信した割込みのための余地が今あるか否かを判定する。ステップ５６における完了した割込みの除去によって余地が利用可能にされている場合、処理はステップ５４に進む。リスト・レジスタ１８内に依然として余地がない場合、ステップ６０が、新たな割込みがリスト・レジスタ１８内に既に存在するどの割込みよりも高い優先度を有するか否かを判定する。該新たな割込みがこうしたより高い優先度を有する場合、それはリスト・レジスタ１８内のより低い優先割込み（好ましくは最も低い優先割込み）を、ハイパーバイザ・ソフトウェアによって保持されたソフトウェア・リストの中に配置されているその除去された割込みと置き換えることができる。リスト・レジスタ１８に存在するものに加えて保留中の割込みが存在することを示すオーバーフロー・ビットも設定される。これらの処理ステップは、ステップ６２及び６４に示されている。処理は次いでステップ５４に進む。
【００４８】
ステップ６０において新たな割込みがリスト・レジスタ１８に入っている既存の割込みよりも高い優先度を有さないと判定した場合、ステップ６６は、オーバーフロー状態ビットを設定し、該新たに受信した割込みがソフトウェアにおけるハイパーバイザ内に保持された保留中の割込みのリストに追加される。ステップ５４及び６６の後で、処理はステップ５０に進み、ゲスト・オペレーティング・システムに戻される。
【００４９】
図５において行われた処理は、この実施形態の例において、該ハイパーバイザ・ソフトウェアによって制御され、該ハイパーバイザ・ソフトウェアによって動作される。図５に示された機能性の一部がハードウェアの中に移された他の配置もまた可能であることが分かるであろう。一般に、ハードウェアにおいて実行される機能とソフトウェアにおいて実行される機能との間の区分は、依然として本技術を用いているが本明細書に記載の実施形態の例とは異なることがある。
【００５０】
図６は、それらのリスト・レジスタに書き込みがなされる（例えば、図５におけるステップ５４）ときにはいつでもリスト・レジスタ１８内に保持された仮想割込みで実行される状態更新動作を示す流れ図である。図６に示された処理は、ハードウェア制御の下で、すなわち、図２に示された制御回路２２の制御の下で行われる。
【００５１】
ステップ６８において、レジスタ・リスト１８内の最も高い優先度の保留中の割込みと最も高い優先度のアクティブな割込みが識別される。ステップ６８における判定は、保留中の割込みが存在しないか識別する（これは、そのデータがクリアされるようにリスト・レジスタ１８内のすべてのデータが書き込まれた場合に生じることがある（すなわち、すべてのエントリが空きとしてマークされている））。この場合、処理はステップ７２に進み、プロセッサ・コア３０に供給された仮想割込み信号ＶＩＮＴがデアサートされる。
【００５２】
少なくとも１つの割込みが途中まで処理される（アクティブ）ように、ネストされた割込みが現在の仮想機械によって取り扱われてもよい。ステップ７０において幾つかの保留中の割込みが存在すると判定した場合、ステップ７４は、最も高い優先度の保留中の割込みの優先度が最も高い優先度のアクティブな割込みの優先度よりも高いか否かを判定する。高くない場合、現在アクティブな割込みは依然として適切であるため、リスト・レジスタ１８への書き込みに応答してアクションは必要とされない。したがって、処理はステップ７２に進むことができる。
【００５３】
ステップ７６は、最も高い優先度の保留中の割込みの優先度がリスト・レジスタ１８の一部を形成する優先度マスク・レジスタに格納された優先度を上回るか否かを判定する。最も高い優先度の保留中の割込みが優先度マスク・レジスタの表示を超える場合、処理はステップ７８に進み、関連するプロセッサのゲスト・オペレーティング・システムをトリガしてその割込みハンドラ１２のうちの１つに誘導し、仮想インターフェース・ハードウェア２８を読み出し、新たに到着した割込みの処理を開始するように、仮想割込み信号ＶＩＮＴがアサートされる。
【００５４】
優先度２進小数点値はまた、リスト・レジスタ１８（すなわち、図２に「状態」として示される制御レジスタ内に格納された）と関連付けられてもよい。この２進小数点値は、既にアクティブな割込みに先行するようにするために新たに受信した割込みの優先度が既にアクティブな割込みの優先度を上回らなければならない量を定義することができる。これは、新たに受信した割込みのみが現在アクティブな割込みよりも優先度において著しく高い場合のみのケースであってもよい、現在アクティブな割込みが終わるのを待つのではなくそれに先行することが可能となるであろう。新たに受信した割込みの優先度が現在の割込みの優先度を上回る度合いによって正当化されないことがある、１つの割込みから別の割込みへの切換えと関連付けられたオーバーヘッドが存在する。
【００５５】
図７は、インターフェース・レジスタ２０内の割込み肯定応答レジスタが割込み肯定応答信号のトリガ発生を読み出すときに制御回路２２の制御の下で仮想インターフェース・ハードウェア１６によって実行される処理を示す。こうした割込みが受信されたとき、ステップ８０は、リスト・レジスタ１８内の最も高い優先度の保留中の割込みと最も高い優先度のアクティブな割込みを識別するように働く。ステップ８２、８４、及び８６は、次いで、割込み肯定応答と現在処理されている割込みを特徴付けるシステムの状態がつじつまの合うか否かを識別する。ステップ８２、８４、及び８６におけるテストのいずれも失敗の場合、処理はステップ８８に進み、スプリアス割込み処理を示す信号が戻される（この値は、割込み肯定応答レジスタからの読み出しの結果である）。ステップ８２、８４、及び８６のすべてがパスされる場合、ステップ９０は、肯定応答されているリスト・レジスタ１８内に保持された割込みの状態を、アクティブとして設定するように働く。ステップ９２が、図２に示されたような優先度レジスタの一部をなす優先度レジスタ内の現在アクティブな割込みの優先度に対応している優先度ビットを設定する。ステップ９４が、図６に従って状態の更新をトリガする。ステップ９６は、仮想機械割込み番号（割込み肯定応答レジスタの読み出しの結果としての現在アクティブな割込みの）を戻す。
【００５６】
図８は、ゲスト・オペレーティング・システム・ソフトウェアによる割込みの処理を示す。ステップ９８において、ゲスト・オペレーティング・システムは、仮想割込み信号（例えば図６のステップ７８を参照）を受信する。ステップ１００において、ゲスト・オペレーティング・システムは、インターフェース・レジスタ２０から仮想機械割込み番号を読み出す。この仮想機械割込み番号は、適切なハンドラ・ソフトウェア１２を選択するためにステップ１０２によって用いられる。次いで、ステップ１０４がこの割込みハンドラ・ソフトウェア１２を実行する。該ハンドラ・ソフトウェアが実行を完了したとき、該ハンドラ・ソフトウェアは、ステップ１０６においてインターフェース・レジスタ２０内の割込み終了レジスタに書き込むことによって割込み終了信号を仮想インターフェース・ハードウェア１６に送信する。ステップ１０８は、図１に示されたアプリケーション・プログラム１４の１つの実行のような、ゲスト・オペレーティング・システムの処理の通常の流れに戻るゲスト・オペレーティング・システムを表す。
【００５７】
図９は、図８のステップ１０６に従ってインターフェース・レジスタ２０に通知されている割込み終了イベントに対する仮想インターフェース・ハードウェア１６の応答を示す。ステップ１１０は、リスト・レジスタ１８内の最も高い優先度のアクティブな割込みを見つけ出すように働く。この割込みがステップ１１２において判定されたことが見出される場合、ステップ１１４がこの割込みを完了済みとしてマークする。今完了した割込みについての物理的割込み番号が設定されている場合、これはステップ１１６において判定される（設定されている物理的割込みは、今完了した割込みをソフトウェアにより生成された割り込みから見分ける及び／又は物理的割込みを割込み終了肯定応答を要求するものとして識別する）。ステップ１１６において物理的割込み番号が識別された場合、ステップ１１８が、割込み終了信号を外部割込みインターフェース２６に送信する。物理的割込み番号が設定されていない場合、ステップ１１８がバイパスされる。
【００５８】
ステップ１２０は、優先度レジスタ内の今完了した割込みについての優先度ビットをクリアする。ステップ１２２は、リスト・レジスタ１８内に何らかの保留中の割込み又はアクティブな割込みが存在するか否かを判定する。こうした保留中の割込み又はアクティブ割込みが存在しない場合、処理はステップ１２４に進み、図６に従う状態更新動作が行われる。リスト・レジスタ１８内に保留中の割込み又はアクティブ割込みが存在する場合、処理はステップ１２６に進み、ハイパーバイザ・ソフトウェアがリスト・レジスタ１８にまだ書き込まれていない他の保留中の割込みに関する詳細を有することを示すオーバーフロー状態ビットが設定されているか否かの判定がなされる。オーバーフロー・ビットが設定されていない場合、処理は再びステップ１２４に進む。該オーバーフロー状態ビットが設定されている場合、処理はステップ１２８に進み、処理がステップ１２４に進む前に再補充割込みがアサートされる。該ハイパーバイザ・ソフトウェアは、図１０に関連して説明したように、再補充割込みに応答する。
【００５９】
ステップ１１２においてリスト・レジスタ１８内にアクティブな割込みが現在存在しないと判定された場合、ステップ１３０は、優先度レジスタ内で設定される最も高い優先度ビットをクリアする。次いで、ステップ１３２は、該ハイパーバイザ・ソフトウェアへの該再補充割込みをアサートし、ステップ１３４は、受信されたが対応する割込みの完了済みとしてのマーク付けによって処理されていない保留中の割込み終了信号の格納されたカウントを増分する。
【００６０】
図９に示された処理は、制御回路２２によって制御される仮想インターフェース・ハードウェア１６によるハードウェア制御の下で行われる。
【００６１】
図１０は、再補充割込みに対する該ハイパーバイザ・ソフトウェアの応答を示す。ステップ１３６において、該再補充割込みは、該ハイパーバイザ・ソフトウェアの所定の部分へのベクターをトリガする。次いで、ステップ１３８は、リスト・レジスタ１８内の完了した割込みのチェックを行い、あらゆる完了した割込みが、図１１と併せて説明されるようなリストから除去される。
【００６２】
ステップ１４０は、保留中の割込み終了カウント（図９のステップ１３４参照）がゼロを上回るか否かを判定する。該保留中の割込み終了カウントがゼロを上回らない場合、処理はステップ１４２に進み、リスト・レジスタ１８内に任意の空きスロットが存在するか否かの判定がなされる。こうした空きスロットが存在する場合、ステップ１４４は、まだリスト・レジスタ１８内に存在していないこの最も高い優先度の保留中の割込み又はアクティブな割込みを有するハイパーバイザによりソフトウェア内に維持されたリストにおける最も高い優先度の保留中の割込み又はアクティブな割込みを見つけ出す。幾つかの実施形態において、割込みは、該ハイパーバイザのソフトウェア・リスト内に書き留められるとともに、同時にリスト・レジスタ１８内に書き留められることが可能である。現在の実施形態の例において、割込みは、該ハイパーバイザ又はリスト・レジスタ１８によって維持されるソフトウェア・リストの１つの中に列挙される。
【００６３】
ステップ１４６が、こうした最も高い優先割込みがステップ１４４において識別されたことを示す場合、ステップ１４８は、このエントリをリスト・レジスタ１８にコピーするように働く。このリスト・レジスタ１８への書き込みは、図６に従って状態更新をトリガすることになる。この時点で処理はステップ１４２に戻って、ハードウェア・リスト内に何らかのさらなる空きスロットが存在するか否かを判定する。
【００６４】
ステップ１４６が、ハイパーバイザにより維持されたソフトウェア・リスト内に保留中の割込み又はアクティブな割込みが保持されないことを示す場合、処理はステップ１５０に進み、該再補充割込みから戻される前に該オーバーフロー状態ビットがクリアされる。
【００６５】
ステップ１４２においてリスト・レジスタ１８内に空きスロットが存在しないと判定された場合、ステップ１５２は、該ハイパーバイザにより維持されたソフトウェア・リストは空か否かを判定する。このリストが空である場合、ステップ１５０は該オーバーフロー状態ビットをクリアする。ソフトウェアにより維持されたリストが空でない場合、ステップ１５４は該オーバーフロー状態ビットを設定する（既に設定されていてもよい）。
【００６６】
ステップ１４０において該保留中の割込み終了カウントがゼロよりも大きいと判定される場合、処理はステップ１５６に進み、ソフトウェアにより維持されたリストの最も高い優先度のアクティブな割込みが識別される。次いで、ステップ１５８は、該ソフトウェア・リストでの最も高い優先度のアクティブな割込みについての物理的割込み番号が設定されているか否かを判定する。こうした物理的割込み番号が設定されている場合、これはステップ１６０において外部割込みインターフェース２６を介して割込み終了信号が送信されるべきであることを示す。物理的割込み番号が設定されていない場合、ステップ１６０はバイパスすることができる。ステップ１６２は、ソフトウェアにより維持されたリストから識別された割込みを削除し、ステップ１６４は、処理がステップ１４０に戻る前に該割込み終了カウントを減らす。
【００６７】
図１１は、前述のような割込み動作を完了するためのチェックを行うために該ハイパーバイザ・ソフトウェアによって行われる処理を示す。ステップ１６６は、完了としてマークされるハードウェア・リスト１８内のあらゆるエントリを見つけ出す。ステップ１６８が、こうしたエントリが見つからないと判定する場合、処理はステップ１７０に進み、そこでこのチェックが終わる。こうした完了エントリが見つかる場合、ステップ１７０は、ソフトウェアにより維持されたリスト内にあらゆる対応するエントリを見つけ出す。ステップ１７２および１７４は、次いで、該ソフトウェア・リストから及び該当するリスト・レジスタ１８から、該完了したエントリを適宜削除する。この図１１の例において、割込みは、該ソフトウェア・リストとリスト・レジスタ１８との両方に維持されることが分かるであろう。割込みがこれらの場所のうちの一方にのみ維持される場合、ハードウェア・リストの完了したエントリを該ハードウェア・リスト（例えば空きとしてマークされたエントリ）から削除することができ、該ソフトウェア・リストにコピーが存在しないので、それを該ソフトウェア・リストから削除する必要はないであろう。これらのメンテナンス動作のパフォーマンスは、ハイパーバイザがその割込みの完了を条件とするあらゆるタスクを実行する機会を与える（ソフトウェアにより生成された割込みにとって、これは処理が完了することを示すコールバックに関係してもよい）。これはまた、今空いているスロットを図５と組み合わせて前述された空きスロット・リストに追加する機会も与える。
【００６８】
図１２は、該ハイパーバイザによりコンテキスト・スイッチに、すなわち仮想機械の変化に行われた処理を示す。ステップ１７６は、完了した割込みをチェックする。この完了した割込みのチェックは、図１１の例に従うことができる。ステップ１７８は、次いで、該ハードウェア・リスト（リスト・レジスタ１８）からのデータを有するハイパーバイザによって管理される保留中の割込みのソフトウェアにより維持されたリストを更新する。このソフトウェア・リストは、スイッチが形成されている仮想機械に特有であり、該仮想機械の中に戻るスイッチが形成されるときに修復することができる。ステップ１８０は、すべてのリスト・レジスタ１８を空きとしてマークする。ステップ１８２は、切換えられる新たな仮想機械のソフトウェア・リストにおける最も高い優先割込みを見つけ出し、ステップ１８４がこれらの識別された最も高い優先割込みをリスト・レジスタ１８に書き込む。仮想機械のスイッチを切換えるときに多くのさらに付加的な処理が行われることになり、図１２に示されたステップが、仮想割込みハードウェアのコンテキストおよび関連するソフトウェア・リストを切り換えるのに必要なアクションに対応することが分かるであろう。
【符号の説明】
【００６９】
２…ハードウェア（ＧＩＣ）、４…ソフトウェア、６…ハードウェア（ＶＧＩＣ）、１０…ソフトウェア。
【図１】
0005499029.tif 000002
【図２】
0005499029.tif 000003
【図３】
0005499029.tif 000004
【図４】
0005499029.tif 000005
【図５】
0005499029.tif 000006
【図６】
0005499029.tif 000007
【図７】
0005499029.tif 000008
【図８】
0005499029.tif 000009
【図９】
0005499029.tif 000010
【図１０】
0005499029.tif 000011
【図１１】
0005499029.tif 000012
【図１２】
0005499029.tif 000013