(57)【要約】  複数の仮想プロセッサ中のアクティブ仮想プロセッサに関係する命令を実行するための処理回路を含むデータ処理装置が提供される。例外制御回路は、複数の仮想プロセッサ中のターゲット仮想プロセッサに関連する外部例外を受信し、ターゲット仮想プロセッサがアクティブ仮想プロセッサ以外であるときに、例外制御回路は、ターゲット仮想プロセッサをアクティブ仮想プロセッサになるようにスケジュールするスケジューリング動作を引き起こすためにドアベル例外を発行する。記憶回路は、マスキングされた仮想プロセッサのセットの指示を記憶し、スケジューリング動作は、マスキングされた仮想プロセッサのセットに関するドアベル例外を無視するように適応される。
2021517291.tif 000002
【特許請求の範囲】
【請求項１】
複数の仮想プロセッサ中のアクティブ仮想プロセッサに関係する命令を実行する処理回路と、
前記複数の仮想プロセッサ中のターゲット仮想プロセッサに関連する外部例外を受信し、前記ターゲット仮想プロセッサが前記アクティブ仮想プロセッサ以外であるときに、前記ターゲット仮想プロセッサを前記アクティブ仮想プロセッサになるようにスケジュールするスケジューリング動作を引き起こすためにドアベル例外を発行する例外制御回路と、
マスキングされた仮想プロセッサのセットの指示を記憶する記憶回路と
を備え、
前記スケジューリング動作が、マスキングされた仮想プロセッサの前記セットに関するドアベル例外を無視するように適応された、データ処理装置。
【請求項２】
前記スケジューリング動作が前記ターゲット仮想プロセッサを前記アクティブ仮想プロセッサになるようにスケジュールしたとき、前記例外制御回路が、前記ターゲット仮想プロセッサをマスキングされた仮想プロセッサの前記セット中に記憶するように適応された、請求項１に記載のデータ処理装置。
【請求項３】
前記処理回路が前記アクティブ仮想プロセッサを変更したとき、前記アクティブ仮想プロセッサが、マスキングされた仮想プロセッサの前記セットから削除される、請求項２に記載のデータ処理装置。
【請求項４】
前記処理回路が前記アクティブ仮想プロセッサを変更したとき、前記アクティブ仮想プロセッサに関連する前記ドアベル例外がクリアされる、請求項１から３までのいずれか一項に記載のデータ処理装置。
【請求項５】
前記外部例外に関係するデータを記憶する例外データ・ストレージを備え、
前記外部例外を受信したことに応答して、前記例外制御回路が、前記ターゲット仮想プロセッサに関連して前記外部例外に関係する前記データを前記例外データ・ストレージに記憶するように適応された、請求項１から４までのいずれか一項に記載のデータ処理装置。
【請求項６】
前記処理回路が前記アクティブ仮想プロセッサを前記ターゲット仮想プロセッサになるように変更したとき、前記処理回路が、前記アクティブ仮想プロセッサに関連する前記例外データ・ストレージ中に記憶された例外データの各アイテムのための例外処理ルーチンを実行する、請求項５に記載のデータ処理装置。
【請求項７】
前記データ処理装置は、前記アクティブ仮想プロセッサが中断されたときに、前記アクティブ仮想プロセッサをマスキングされた仮想プロセッサの前記セットに追加する命令に応答する、請求項１から６までのいずれか一項に記載のデータ処理装置。
【請求項８】
非アクティブ仮想プロセッサが前記アクティブ仮想プロセッサになるまで、前記非アクティブ仮想プロセッサに関して、最大でも１つのドアベル例外しか生成されない、請求項１から７までのいずれか一項に記載のデータ処理装置。
【請求項９】
前記複数の仮想プロセッサが、前記スケジューリング動作を実行する管理仮想プロセッサを備える、請求項１から８までのいずれか一項に記載のデータ処理装置。
【請求項１０】
前記スケジューリング動作がハイパーバイザの一部である、請求項９に記載のデータ処理装置。
【請求項１１】
前記処理回路は、前記アクティブ仮想プロセッサを備える複数のアクティブ仮想プロセッサのうちの１つに関係する命令を実行するように各々が適応された複数の処理回路のうちの１つである、請求項１から１０までのいずれか一項に記載のデータ処理装置。
【請求項１２】
アクティブ仮想プロセッサに関係する命令を実行することと、
複数の仮想プロセッサの中から前記アクティブ仮想プロセッサをスケジュールすることと、
前記複数の仮想プロセッサ中のターゲット仮想プロセッサに関連する外部例外を受信し、前記ターゲット仮想プロセッサが前記アクティブ仮想プロセッサ以外であるときに、前記ターゲット仮想プロセッサを前記アクティブ仮想プロセッサになるようにスケジュールするスケジューリング動作を引き起こすためにドアベル例外を発行することと、
マスキングされた仮想プロセッサのセットの指示を記憶することと
を含み、
前記スケジューリング動作が、マスキングされた仮想プロセッサの前記セットに関するドアベル例外を無視するように適応された、データ処理方法。
【請求項１３】
命令実行環境を与えるホストデータ処理装置を制御するためのコンピュータ・プログラムであって、
複数の仮想プロセッサ中のアクティブ仮想プロセッサに関係する命令を実行する処理プログラミング論理と、
前記複数の仮想プロセッサ中のターゲット仮想プロセッサに関連する外部例外を受信し、前記ターゲット仮想プロセッサが前記アクティブ仮想プロセッサ以外であるときに、前記ターゲット仮想プロセッサを前記アクティブ仮想プロセッサになるようにスケジュールするスケジューリング動作を引き起こすためにドアベル例外を発行する例外制御プログラミング論理と、
マスキングされた仮想プロセッサのセットの指示を記憶するデータ構造と
を備え、
前記スケジューリング動作が、マスキングされた仮想プロセッサの前記セットに関するドアベル例外を無視するように適応された、コンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本技法はデータ処理に関する。
【背景技術】
【０００２】
いくつかのデータ処理システムは仮想プロセッサを利用する。これらは、一連の命令を実行するために現実の物理プロセッサによって引き受けられ得る特定のプロセッサ状態を表す。実行の期間の後（又はプロセッサが、イベントが発生するのを待っているとき）、仮想プロセッサは中断され、それにより、それの状態が保存される。異なる仮想プロセッサが、次いで、それの状態を物理プロセッサにロードすることによってアクティブ化され得る。これは、異なるタスクの分離を可能にし、物理プロセッサがさもなければアイドルになるであろう時間を利用することによって、効率を改善することができる。イベントの発生は例外によって表され得る。そのような例外が受信されたとき、それが仮想プロセッサが待っていたイベントに関係することを管理システムが決定すると、ドアベル例外が発せられ、それにより、中断された仮想プロセッサがアクティブ化のためにスケジュールされ得る。実際には、しかしながら、そのようなプロセスは、同じ仮想プロセッサに関係する複数の例外が発せられたときに、総合効率を低減し得る。さらに、仮想プロセッサのためのドアベル例外の生成をまとめて無効化し、有効化するためのプロシージャは、限られたリソースがアクセスされることを必要とすることがあり、それもまた総合効率を低減し得る。したがって、仮想プロセッサに関連する例外がシステム効率に及ぼす影響が制限されるシステムを提供することが望ましい。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】「Ｓｏｍｅ  Ｅｆｆｉｃｉｅｎｔ  Ａｒｃｈｉｔｅｃｔｕｒｅ  Ｓｉｍｕｌａｔｉｏｎ  Ｔｅｃｈｎｉｑｕｅｓ」、  Ｒｏｂｅｒｔ  Ｂｅｄｉｃｈｅｋ、１９９０年冬、ＵＳＥＮＩＸ  Ｃｏｎｆｅｒｅｎｃｅ、５３〜６３頁
【発明の概要】
【課題を解決するための手段】
【０００４】
第１の例示的な構成から見ると、複数の仮想プロセッサ中のアクティブ仮想プロセッサに関係する命令を実行する処理回路と、複数の仮想プロセッサ中のターゲット仮想プロセッサに関連する外部例外を受信し、ターゲット仮想プロセッサがアクティブ仮想プロセッサ以外であるときに、ターゲット仮想プロセッサをアクティブ仮想プロセッサになるようにスケジュールするスケジューリング動作を引き起こすためにドアベル例外を発行する例外制御回路と、マスキングされた仮想プロセッサのセットの指示を記憶する記憶回路とを備え、スケジューリング動作が、マスキングされた仮想プロセッサのセットに関するドアベル例外を無視するように適応された、データ処理装置が提供される。
【０００５】
第２の例示的な構成から見ると、アクティブ仮想プロセッサに関係する命令を実行することと、複数の仮想プロセッサの中からアクティブ仮想プロセッサをスケジュールすることと、複数の仮想プロセッサ中のターゲット仮想プロセッサに関連する外部例外を受信し、ターゲット仮想プロセッサがアクティブ仮想プロセッサ以外であるときに、ターゲット仮想プロセッサをアクティブ仮想プロセッサになるようにスケジュールするスケジューリング動作を引き起こすためにドアベル例外を発行することと、マスキングされた仮想プロセッサのセットの指示を記憶することとを含み、スケジューリング動作が、マスキングされた仮想プロセッサのセットに関するドアベル例外を無視するように適応された、データ処理方法が提供される。
【０００６】
第３の例示的な構成から見ると、命令実行環境を与えるホストデータ処理装置を制御するためのコンピュータ・プログラムであって、複数の仮想プロセッサ中のアクティブ仮想プロセッサに関係する命令を実行する処理プログラミング論理と、複数の仮想プロセッサ中のターゲット仮想プロセッサに関連する外部例外を受信し、ターゲット仮想プロセッサがアクティブ仮想プロセッサ以外であるときに、ターゲット仮想プロセッサをアクティブ仮想プロセッサになるようにスケジュールするスケジューリング動作を引き起こすためにドアベル例外を発行する例外制御プログラミング論理と、マスキングされた仮想プロセッサのセットの指示を記憶するデータ構造とを備え、スケジューリング動作が、マスキングされた仮想プロセッサのセットに関するドアベル例外を無視するように適応された、コンピュータ・プログラムが提供される。
【０００７】
添付の図面に示されている本技法の実施例を参照しながら、本技法について、単なる実例としてさらに説明する。
【図面の簡単な説明】
【０００８】
【図１】いくつかの実施例による、データ処理装置を示す図である。
【図２】いくつかの実施例による、例外のルーティングがどのように起こるかを示す図である。
【図３】いくつかの実施例による、例外をルーティングすることのさらなる実例を示す図である。
【図４】いくつかの実施例による、例外をルーティングすることのさらなる実例を示す図である。
【図５】いくつかの実施例による、アクティブ仮想プロセッサが変更される実例を示す図である。
【図６】いくつかの実施例による、仮想プロセッサのうちの１つの上で動作するハイパーバイザ（ｈｙｐｅｒｖｉｓｏｒ）を使用するプロセスを示すフローチャートである。
【図７】いくつかの実施例による、データ処理の方法を示す図である。
【図８】いくつかの実施例による、シミュレータ実装形態を示す図である。
【発明を実施するための形態】
【０００９】
添付図を参照しながら実施例について説明する前に、実施例及び関連する利点についての以下の説明が与えられる。
【００１０】
１つの例示的な構成によれば、アクティブ仮想プロセッサに関係する命令を実行する処理回路と、複数の仮想プロセッサ中のターゲット仮想プロセッサに関連する外部例外を受信し、ターゲット仮想プロセッサがアクティブ仮想プロセッサ以外であるときに、ターゲット仮想プロセッサをアクティブ仮想プロセッサになるようにスケジュールするスケジューリング動作を引き起こすためにドアベル例外を発行する例外制御回路と、マスキングされた仮想プロセッサのセットの指示を記憶する記憶回路とを備え、スケジューリング動作が、マスキングされた仮想プロセッサのセットに関するドアベル例外を無視するように適応された、データ処理装置が提供される。
【００１１】
上記の例示的な構成では、マスキングされた仮想プロセッサのセットが記憶される。仮想プロセッサのマスキングは、例外制御回路が、マスキングされた仮想プロセッサに関して生成されたドアベル例外を無視すべきであることを示す状態である。そのような状態は、ハイパーバイザなどの管理ソフトウェアによって実装され得る。仮想プロセッサは、その仮想プロセッサに対してドアベル例外が生成された結果としてマスキングされ得る。その結果、実行のために仮想プロセッサをスケジュールするプロセスは、継続的に実行されるのではなく抑制され、それによりシステムの効率が改善され得る。当業者は、そのような実施例が特に洗練されていることを理解するであろう。共有される限られたリソースへのアクセスを取得するためにロッキング機構を使用する必要はなくならないとしても、低減され得る。マスキングされたプロセッサのセットの指示のストレージは、マスキングされたプロセッサ自体のセットを記憶することによって、又はマスクキングされていないプロセッサのセットを記憶し、そのセット中にないプロセッサが全てマスキングされていると仮定することによって実装され得ることが理解されよう。
【００１２】
いくつかの実施例では、スケジューリング動作がターゲット仮想プロセッサをアクティブ仮想プロセッサになるようにスケジュールしたとき、例外制御回路は、ターゲット仮想プロセッサをマスキングされた仮想プロセッサのセット中に記憶するように適応される。そのような実施例では、ターゲット仮想プロセッサがアクティブプロセッサになるようにスケジュールされる前か、スケジュールされた後に、そのようなスケジューリングを引き起こすドアベル例外が受信されたことを条件に、ターゲット仮想プロセッサは、マスキングされた仮想プロセッサのセット中に記憶され得る。その結果、ドアベル例外が受信され、ターゲット仮想プロセッサがスケジュールされた場合、同じ仮想プロセッサに対するさらなるドアベル例外が発行され得るが、スケジューリング動作をアクティブにさせない。これにより、スケジューリング動作が繰り返しアクティブ化されることが抑制されるので、効率が改善される。
【００１３】
いくつかの実施例では、処理回路がアクティブ仮想プロセッサを変更するとき、アクティブ仮想プロセッサに関連するアクティブ仮想プロセッサが、マスキングされた仮想プロセッサのセットから削除される。そのような実施例では、仮想プロセッサが常駐（たとえばアクティブ）であることを停止したときに、その仮想プロセッサに関するドアベル例外に課される制限が除去される。
【００１４】
いくつかの実施例では、処理回路がアクティブ仮想プロセッサを変更するとき、ドアベル例外がクリアされる。いくつかの実施例では、ドアベル例外が発せられるのと同時に仮想プロセッサが常駐化される過程にある、「競合（ｒａｃｅ）状態」が発生し得る。そのような場合、仮想プロセッサがすでにアクティブ化される過程にあっても、仮想プロセッサをスケジュールするためにスケジューリング動作がアクティブ化され得る。明らかに、そのようなシナリオは非効率的である。したがって、そのような実施例は、仮想プロセッサがアクティブ化されるときに、そのプロセッサに関して作成されたドアベル例外をクリアすることによって、この状況が起こることを抑制する。
【００１５】
いくつかの実施例では、データ処理装置は、外部例外に関係するデータを記憶する例外データ・ストレージを備え、外部例外を受信したことに応答して、例外制御回路は、ターゲット仮想プロセッサに関連して外部例外に関係するデータを例外データ・ストレージに記憶するように適応される。例外に関係するデータ（たとえば、データが記憶されているメモリ中のデータ、又は生データ自体）を例外データ・ストレージに記憶することによって、例外は後で処理又は応答され得る。
【００１６】
いくつかの実施例では、処理回路がアクティブ仮想プロセッサをターゲット仮想プロセッサになるように変更したとき、処理回路は、アクティブ仮想プロセッサに関連する例外データ・ストレージに記憶された例外データの各アイテムのための例外処理ルーチンを実行する。例外処理ルーチンは、例外に応答するための一連の命令を与える。非常駐仮想プロセッサは、（例外がその仮想プロセッサのために意図される／その仮想プロセッサに関連する場合でも）例外にすぐに応答することができないので、例外に関係するデータは記憶され得る。次いで、仮想プロセッサをアクティブにするようにスケジュールするために、ドアベル例外が発行され得る。仮想プロセッサがアクティブにされると、各例外のために例外処理ルーチンが実行され、それにより、（仮想プロセッサが常駐であった場合よりもわずかに遅れるが）仮想プロセッサが例外に応答することが可能になり得る。
【００１７】
いくつかの実施例では、本装置は、アクティブ仮想プロセッサが中断されたときに、アクティブ仮想プロセッサをマスキングされた仮想プロセッサのセットに追加するための命令に応答する。これにより、仮想プロセッサは、それが非常駐化される（たとえばアクティブであった後に中断される）とすぐに、それがマスキングされたリストに追加されることを明示的に要求することが可能になる。その結果、ドアベル例外により仮想プロセッサがスケジュールされることがなくなる。これは、仮想プロセッサが再びアクティブになるようにすでにプログラムされているとき（たとえば、それが周期的にアクティブ化する場合）に有用である。
【００１８】
いくつかの実施例では、非アクティブ仮想プロセッサがアクティブ仮想プロセッサになるまで、非アクティブ仮想プロセッサに関して、最大でも１つのドアベル例外しか生成されない。その結果、スケジューリング動作は、非アクティブ仮想プロセッサが再びアクティブになる前に、最大でも１回、その仮想プロセッサをスケジュールすることを試みるだけである。仮想プロセッサをスケジュールするためのさらなるスケジュール化の試みはスケジュールにさらなる影響を及ぼすことがないので、これにより、スケジューリング動作が繰り返し実行されることが防止される。
【００１９】
いくつかの実施例では、複数の仮想プロセッサは、スケジューリング動作を実行するための管理仮想プロセッサを備える。そのような実施例は、したがって、他の仮想プロセッサをスケジュールするために、管理仮想プロセッサがアクティブになることを必要とする。そのような状況では、ドアベル例外を受信すると、管理仮想プロセッサをアクティブ化し、ドアベル例外を処理するためにアクティブ（常駐）仮想プロセッサが中断され、前に中断された仮想プロセッサを再開するために管理仮想プロセッサを再中断することになるので、本技法が解決する根本的な問題が倍加される。これが、ほとんど又は全く利益がなく、複数回起こる場合、明らかにシステムの総合効率は低下する。
【００２０】
いくつかの実施例では、スケジューリング動作はハイパーバイザの一部である。ハイパーバイザ・システムは、複数のゲスト・オペレーティング・システムを同時に実行することを可能にする。各オペレーティング・システムは、それ自体のソフトウェアを有することがあり、また、ハードウェア上で実行している唯一のオペレーティング・システムである外観を与えられることがある。ハイパーバイザは、オペレーティング・システム間のスケジューリングを処理し、また、ハードウェアに関係するデータがどのゲスト・オペレーティング・システム（又はどのゲスト・オペレーティング・システムの下でどのアプリケーション）に向けられるべきかを決定するために、ハードウェア・インターフェースを処理する。
【００２１】
いくつかの実施例では、処理回路は、アクティブ仮想プロセッサを備える複数のアクティブ仮想プロセッサのうちの１つに関係する命令を実行するように各々が適応された複数の処理回路のうちの１つである。スケジューリング動作（存在する場合）は、プロセッサごとに動作することが可能であるか、又は、全体的なシステムのために動作すること、すなわち、必要に応じて、仮想プロセッサを利用可能な物理プロセッサ上で動作するようにスケジュールすることが可能である。
【００２２】
次に、図を参照しながら、特定の実施例について説明する
【００２３】
図１は、いくつかの実施例によるデータ処理装置１００を示す。データ処理装置１００は、例外を受信する例外制御回路１１０を含む。そのような例外は、たとえば、ハードウェアとのインターフェースの結果として生成され得る。たとえば、例外は、ハードディスクがソフトウェアによって要求された情報を収集したこと（たとえば、仮想プロセッサ１３０上で実行しているプロセス１２０）のインジケータであり得る。装置１００はまた、どの仮想プロセッサ１３０がどの物理プロセッサ１５０上で実行するべきかを決定するスケジューラ１４０を含む。２つの物理プロセッサ１５０Ａ及び１５０Ｂ、及び４つの仮想プロセッサ１３０Ａ、１３０Ｂ、１３０Ｃ及び１３０Ｄがあるので、仮想プロセッサ１３０のうち最大でも２つしかプロセッサ１５０上で同時に実行することができない。したがって、スケジューラ１４０は、特定の時間に、どの仮想プロセッサ１３０が各プロセッサ１５０上で実行するかを決定する。さらに、例外制御回路１１０との組合せで、スケジューラは例外の伝搬を処理するのに役立つ。特に、例外が例外制御回路１１０によって受信された場合、スケジューラ１４０は、入来例外に関連する仮想プロセッサ１３０をプロセッサ１５０のうちの１つの上で実行するようにスケジュールする。たとえば、特定の仮想プロセッサ１３０Ｂが、ハードディスクにデータを要求した結果を待っている場合、例外制御回路１１０は入来例外を受信し、スケジューラ１４０は、例外を処理するために、仮想プロセッサ１３０Ｂを近い将来にプロセッサ１５０のうちの１つの上で実行するようにスケジュールする。例外は即座に完全に処理されないので、例外に関係するデータは、後で処理するために記憶され得る（以下で説明する）。この実施例では、スケジューラはマスク１５５のセットを含む。これらのマスクは、特定の仮想プロセッサ１３０が、プロセッサ１５０のうちの１つによる実行のためにスケジュールされるべきでないことを示すために使用され得る。これは、たとえば、当該の仮想プロセッサ１３０が実行のためにすでにスケジュールされている場合に起こり得る。この場合、仮想プロセッサ１３０がいつスケジュールされるべきであるかを決定するためにスケジューラを動作させることは、無意味なタスクであり得る。さらに、そのようなタスクは装置１００中のリソースの浪費になり得る。
【００２４】
いくつかの実施例では、スケジューラ１４０は、仮想プロセッサ１３０のうちの１つの上で実行するプロセス１２０である。したがって、例外制御回路１１０によって受信された入来例外がどのようにルーティングされるべきであるかを決定するために、又は、そのような例外の結果として、スケジュールがどのように調整されるべきであるかを決定するためにスケジューリング動作を実行するために、又は、単に仮想プロセッサ１３０のうちのどれが次に特定のプロセッサ１５０上で実行するべきであるかを決定するために、スケジューラ１４０を動作させるには、スケジューラ１４０がプロセッサ１５０のうちの１つの上でアクティブ化される必要がある。もちろん、これが、スケジューラ１４０がそれのタスクを実行する間、他のプロセス１２０が実行されることを抑制することが理解されよう。したがって、スケジューラ１４０が実行する時間を制限することは、全体的な装置１００の効率の改善につながり得る。
【００２５】
図２は、いくつかの実施例において、例外のルーティングがどのように行われるかを示す。前述のように、例外は例外制御回路１１０によって受信される。この場合、例外はタイプ「２」であり、メモリ・アドレス「０ｘ０１１３１４５」に記憶されたデータを有する。データの長さは１６（たとえばバイト）であるとして示されている。例外制御回路１１０は、特定のタイプの例外を仮想プロセッサと関連付けるために例外マップ２００を使用する。もちろん、例外の関連付けの他の方法が実行され得ることが理解されよう。たとえば、例外マップ２００は、例外を仮想プロセッサ上の特定のプロセスと関連付け得る。他の実施例では、例外がどのようにルーティングされるべきかを決定する他の手段があり得る。現在の実例では、例外マップ２００は、タイプ２の例外について、例外が仮想プロセッサ１にルーティングされるべきであることを示す。現在、（図２の仮想プロセッサ１を囲む一点鎖線によって示されているように）仮想プロセッサ１は中断されている。したがって、例外制御回路１１０は、スケジューリング動作に渡されるドアベル例外を生成する。スケジューリング動作は、専用スケジューリング回路などのスケジューラ１４０、仮想プロセッサ１３０のうちの１つの上で実行するプロセス１２０の形態のスケジューラ、又はその２つの組合せによって実行され得る。いずれにしても、ドアベル例外はスケジューリング動作によって受信される。マスキングされた仮想プロセッサのセットを示す、マスク１５５のセットが確認される。仮想プロセッサ１がマスクのセット中に見つけられないので、ドアベル例外は許容され（すなわち反応され）、仮想プロセッサ１は、それにより、実行されるべき仮想プロセッサ２１０のスケジュールに追加される。同時に、例外制御回路１１０は、例外データ、及び関連する仮想プロセッサ（すなわち仮想プロセッサ１）の識別子を例外データ・ストレージ２２０に記憶する。したがって、仮想プロセッサ１  １３０Ａが実行されるようにスケジュールされたとき、例外に関連するデータは例外データ・ストレージ２２０から収集され得る。
【００２６】
この特定の実施例では、ドアベル例外に応答する行為により、仮想プロセッサ１  １３０Ａは、マスキングされた仮想プロセッサのセットに追加されることに留意されたい。その結果、仮想プロセッサ１に関して受信されるさらなるドアベル例外は反応されない。
【００２７】
他の実施例では、マスク１５５のセットはマスキングされていない仮想プロセッサのセットを備え、それらは、プロセッサがマスキングされたときに、そのセットから削除される。ここで、リストからの仮想プロセッサの（存在ではなく）不在は、その仮想プロセッサがマスキングされたことを示す。
【００２８】
図３は、いくつかの実施例による、例外をルーティングする第２の実例を示す。図３の実例では、タイプ「１２」の例外が受信される。この例外に関連するデータはメモリ・アドレス「０ｘ３１２３７６５」において記憶される。データはまた、８（たとえばバイト）の長さを有すると言われる。ここで、例外制御回路１１０は、この場合も例外を受信し、例外マップ２００において、タイプ１２の例外が仮想プロセッサ４  １３０Ｄに関連することに気づく。仮想プロセッサ４  １３０Ｄはこの場合も非アクティブであるので、その結果、ドアベル例外が生成され、スケジューリング動作に渡される。この場合、マスク１５５のセットは仮想プロセッサ４  １３０Ｄを含む。その結果、ドアベル例外は、生成されるが、マスキングされる。その結果、スケジューリング動作は、仮想プロセッサ４  １３０Ｄに関してさらなるスケジューリングを実行しない。スケジュール２１０は、仮想プロセッサ４  １３０Ｄが実行されるべき次の仮想プロセッサであることをすでに示していることに留意されたい。したがって、スケジューリング動作によるドアベル例外のマスキングにより、スケジュール２１０に有益な影響を及ぼさないであろうスケジューリングを実行する必要がなくなった。
【００２９】
図４は、いくつかの実施例によるさらなる実例を示す。ここでは、タイプ「１」の例外が例外制御回路１１０によって受信される。例外マップ２００は、そのような例外が仮想プロセッサ２によって処理されるべきであることを示す。この場合、仮想プロセッサ２は常駐（たとえばアクティブ）である。したがって、例外は仮想プロセッサ２  １３０Ｂに直接ルーティングされ得、ドアベル例外が発生する必要はない。
【００３０】
図５は、アクティブ仮想プロセッサが仮想プロセッサ２  １３０Ｂから仮想プロセッサ４  １３０Ｄに変更される実例を示す。仮想プロセッサ４  １３０Ｄのアクティブ化により、仮想プロセッサ４  １３０Ｄがマスクのセット１５５から削除される。したがって、さらなる行為が取られない限り、仮想プロセッサ４  １３０Ｄが中断された（すなわち、プロセッサ１５０上でもはやアクティブでない）とき、仮想プロセッサ４  １３０Ｄに関して発行されたドアベル例外がスケジューリング動作によって応答される。新たにアクティブ化されると、仮想プロセッサ４  １３０Ｄは、仮想プロセッサ４  １３０Ｄが中断されている間に仮想プロセッサ４  １３０Ｄのための例外が受信されているかどうかを決定するために、例外データ・ストレージ２２０にアクセスする。さらに、それらの例外に関連するデータも収集される。仮想プロセッサ４  １３０Ｄは、次いで、記憶された例外の各々のための例外ハンドラを実行する。さらに、この実例では、仮想プロセッサ４  １３０Ｄの新たなアクティブ化により、ドアベル例外はクリアされる。したがって、これは、仮想プロセッサ１３０のためのドアベル例外が発せられた際に、その仮想プロセッサがアクティブ化される過程にある、仮想プロセッサ１３０のアクティブ化中に起こり得る「競合状態」を回避するために役立つ。この場合、これによりスケジューリング動作が実行され、それにより、仮想プロセッサがすでにアクティブ化される過程にあるとき、その仮想プロセッサはスケジュールに追加される。明らかに、これは、仮想プロセッサが常駐にされ、したがって例外に直接応答することが可能になることを遅延させ、したがって、仮想プロセッサ４がアクティブにされている際に仮想プロセッサ４に関して発生するドアベル例外をクリアすることによって抑制され得る。最後に、図５にも示されているように、仮想プロセッサ４  １３０Ｄはスケジューリング動作にマスク要求をする。これにより、仮想プロセッサ４  １３０Ｄは、プロセッサが中断されたときにマスクのリスト１５５に追加される。その結果、スケジューリング動作は、仮想プロセッサ４  １３０Ｄが中断されたときに、ドアベル例外に応答して仮想プロセッサ４  １３０Ｄのためのスケジューリングを実行しない。これは、たとえば、仮想プロセッサ４  １３０Ｄが、一定時間（たとえば、仮想プロセッサ４  １３０Ｄが、ドアベル例外の結果としてスケジュールに明示的に追加されることなしに、タイムリーな形で例外に応答することを可能にするであろう、短い時間）ごとにスケジュールに追加されるように構成されている場合に役立ち得る。
【００３１】
図６は、仮想プロセッサ１３０のうちの１つの上で動作するハイパーバイザを使用するプロセスを示すフローチャート３００を示す。ステップ３１０において、装置は、例外が受信されたか否かを決定する。そのような決定は例外制御回路１１０によって行われ得る。そうである場合は、ステップ３２０において、アクティブ仮想プロセッサ１３０が中断され、ハイパーバイザ（たとえば管理ソフトウェア又はスケジューリングソフトウェア）を備える仮想プロセスがアクティブ化される。ステップ３４０において、スケジューリング動作が実行され、それにより、入来例外に関連する仮想プロセッサがスケジュールに追加される。プロセスは次いでステップ３７０に進む。代替的に、ステップ３１０において、例外が受信されない場合、ステップ３５０において、コンテキストスイッチが起きる時間であるかどうかが決定される。そうでない場合は、プロセスはステップ３１０に戻る。コンテキストスイッチが起きるべきである場合は、ステップ３６０において、ハイパーバイザがアクティブ化される。ステップ３７０において、コンテキストスイッチのためにハイパーバイザをアクティブ化した後か、又は例外発生の結果としてスケジュールを調整した後のいずれかに、実行されるべき次の仮想プロセッサがハイパーバイザによって決定される。ステップ３８０において、実行されるべき次の仮想プロセッサが次いでアクティブ化され、ステップ３９０において、ハイパーバイザに関連する仮想プロセッサが中断される。プロセスは次いでステップ３１０に戻る。
【００３２】
図７は、いくつかの実施例による、フローチャート４００を使用するデータ処理の方法を示す。ステップ４０５において、ドアベル例外が発せられたかどうかが決定される。そうである場合、ステップ４１０において、ドアベル例外に関連する仮想プロセッサ１３０がマスキングされているかどうかが決定される。そうである場合、ドアベル例外は影響を及ぼさず、プロセスはステップ４０５に戻る。そうでない場合、ステップ４１５において、ドアベル例外に関連する仮想プロセッサ１３０がスケジュールに追加され、ステップ４２０において、ドアベル例外に関連する仮想プロセッサがマスクのセットに追加される。これは、したがって、さらなるドアベル例外が仮想プロセッサをスケジュールすることを抑制する。プロセスは次いでステップ４０５に戻る。ドアベル例外がステップ４０５において発生していない場合、ステップ４３０において、コンテキストスイッチが起きるべきであるかどうかが決定される。そうでない場合、プロセスはステップ４０５に戻る。そうである場合、ステップ４３５において、アクティブ仮想プロセッサ１３０が変更される。このプロセスは、図６に示されたステップ３５０〜ステップ３９０にほぼ対応する。ステップ４４０において、前の仮想プロセッサ（ステップ４３５においてコンテキストスイッチが起きる前にアクティブであった仮想プロセッサ）がマスク要求を行ったことが決定された場合、ステップ４４５において、古い仮想プロセッサがマスキングされる。その結果、マスク要求を行った仮想プロセッサ１３０（すなわち新たに中断された仮想プロセッサ１３０）は、それがマスキングされた仮想プロセッサのセットから削除されるまで（たとえば、それがアクティブになり、マスキングされることを要求することなしに再び中断される場合）、ドアベル例外発生の結果としてスケジュールされない。どちらの場合も、ステップ４５０において、ドアベル例外はクリアされ、新しい仮想プロセッサ１３０に関連するマスクは、それが存在する場合、クリアされる。次いで、ステップ４６０において、新たにアクティブ化された仮想プロセッサに関して例外データ・ストレージ２２０中に記憶される例外のための例外ハンドラが実行される。プロセスは次いでステップ４０５に戻る。
【００３３】
図８は、使用され得るシミュレータ実装形態を示す。上記で説明した実施例は、関係する技法をサポートする特定の処理ハードウェアを動作させるための装置及び方法に関して本発明を実装するが、コンピュータ・プログラムの使用によって実装される本明細書で説明する実施例による命令実行環境を提供することも可能である。そのようなコンピュータ・プログラムは、それらがハードウェア・アーキテクチャのソフトウェアベースの実装を与える限り、しばしばシミュレータと呼ばれる。シミュレータ・コンピュータ・プログラムの種類には、エミュレータ、仮想マシン、モデル、及び動的バイナリ・トランスレータを含むバイナリ・トランスレータが含まれる。一般に、シミュレータ実装は、ホスト・プロセッサ７３０上で動作し、随意にホスト・オペレーティング・システム７２０を動作させ、シミュレータ・プログラム７１０をサポートし得る。いくつかの構成では、ハードウェアと与えられた命令実行環境との間にシミュレーションの複数のレイヤがあることがあり、及び／又は、同じホスト・プロセッサ上に与えられる複数の別個の命令実行環境があることがある。歴史的に、妥当な速度で実行するシミュレータ実装を与えるためには、強力なプロセッサが必要とされてきたが、そのような手法は、互換性又は再利用の理由で、別のプロセッサに対してネイティブなコードを実行する要望があるときなど、いくつかの状況下では正当化され得る。たとえば、シミュレータ実装は、ホスト・プロセッサ・ハードウェアによってサポートされない追加の機能をもつ命令実行環境を提供するか、又は一般に異なるハードウェア・アーキテクチャに関連する命令実行環境を提供し得る。シミュレーションの概観が、「Ｓｏｍｅ  Ｅｆｆｉｃｉｅｎｔ  Ａｒｃｈｉｔｅｃｔｕｒｅ  Ｓｉｍｕｌａｔｉｏｎ  Ｔｅｃｈｎｉｑｕｅｓ」、Ｒｏｂｅｒｔ  Ｂｅｄｉｃｈｅｋ、１９９０年冬、ＵＳＥＮＩＸ  Ｃｏｎｆｅｒｅｎｃｅ、５３〜６３頁に記載されている。
【００３４】
実施例について特定のハードウェア構成又は特徴に関して前に説明した限りでは、シミュレートされた実施例において、同等の機能が好適なソフトウェア構成又は特徴によって提供され得る。たとえば、特定の回路は、シミュレートされた実施例においてコンピュータ・プログラム論理として実装され得る。同様に、レジスタ又はキャッシュなどのメモリ・ハードウェアは、シミュレートされた実施例においてソフトウェア・データ構造として実装され得る。前に説明した実施例において参照されたハードウェア要素のうちの１つ又は複数がホスト・ハードウェア（たとえば、ホスト・プロセッサ７３０）上に存在する構成では、いくつかのシミュレートされた実施例は、適切な場合、ホスト・ハードウェアを利用し得る。
【００３５】
シミュレータ・プログラム７１０は、（非一時的媒体であり得る）コンピュータ可読記憶媒体上に記憶され得、また、シミュレータ・プログラム７１０によってモデル化されるハードウェア・アーキテクチャのアプリケーション・プログラム・インターフェースと同じである（アプリケーション、オペレーティング・システム及びハイパーバイザを含み得る）ターゲット・コード７００へのプログラム・インターフェース（命令実行環境）を提供する。したがって、データ処理装置１００、特に上記で説明したスケジューラ１４０及び例外処理回路１１０の全部又は一部の挙動を含む、ターゲット・コード７００のプログラム命令は、上記で説明したデータ処理装置１００のハードウェア特徴を実際には有しないホスト・コンピュータ７３０がこれらの特徴をエミュレートすることができるように、シミュレータ・プログラム７１０を使用して命令実行環境内から実行され得る。
【００３６】
したがって、ドアベル例外がスケジュールを調整することを防ぐためにマスクを使用することによって、その仮想プロセッサがアクティブにされるようなときまで、各仮想プロセッサについてスケジューリング動作が１回のみ実行される状況を作り出すことが可能であることがわかる。これは、したがって、スケジューリング動作が実行させられる回数を低減することができる。管理ソフトウェアが仮想プロセッサのうちの１つを占有する場合（すなわちスケジューリング動作が、仮想プロセッサのうちの１つを使用して実行される場合）、これは、仮想プロセッサがスワップ・イン及びスワップ・アウトされなければならない範囲を低減することによって、かなりの利益を有することができる。スケジューリング動作が専用プロセッサ又はそれ自体の回路の一部である場合でも、これは、スケジューリング動作が、利益なしに繰り返し実行される結果として非効率を低減することができる。したがって、上記で説明した技法は、利益が限られた又は利益がないスケジューリング動作が実行され得る範囲を制限することによってシステムの効率を改善する上で有益である。
【００３７】
本出願では、「…ように構成された」という単語は、装置の要素が定義された動作を実行することが可能な構成を有することを意味するために使用される。この文脈において、「構成」とは、ハードウェア又はソフトウェアの相互接続の配置又は様式を意味する。たとえば、装置は定義された動作を与える専用のハードウェアを有し得るか、又は、プロセッサ又は他の処理デバイスがその機能を実行するようにプログラムされ得る。「ように構成された」は、装置要素が定義された動作を与えるために何らかの方法で変更される必要があることを暗示しない。
【００３８】
添付の図面を参照しながら本発明の例示的な実施例について本明細書で詳細に説明したが、本発明はそれらの正確な実施例に限定されないこと、及び、添付の特許請求の範囲によって定義された本発明の範囲及び趣旨から逸脱することなく、様々な変更、追加、及び修正が当業者によってその中で実施され得ることを理解されたい。たとえば、独立クレームの特徴と従属クレームの特徴との様々な組合せを、本発明の範囲から逸脱することなく行うことが可能である。
【図１】
2021517291.tif 000003
【図２】
2021517291.tif 000004
【図３】
2021517291.tif 000005
【図４】
2021517291.tif 000006
【図５】
2021517291.tif 000007
【図６】
2021517291.tif 000008
【図７】
2021517291.tif 000009
【図８】
2021517291.tif 000010
【国際調査報告】
2021517291.tif 000011
2021517291.tif 000012
2021517291.tif 000013