(57)【要約】  仮想化またはエミュレーションを促進するトランザクションメモリーハードウェアを使用するための様々な技術や手法が公表されている。CPUにはトランザクションメモリーハードウェアが提供される。非公開メモリー状態とアトミックコミットの機能を保持する装備をサポートするトランザクションメモリーハードウェアを提供すると、コードバックパッチングを促すことができる。特定のコードに行われる変更は非公開状態設備に保存される。バックパッチングの変更は、アトミックコミットの機能を用いてメモリーに対する全ての変更を一度にコミットすることを試みることによって成立する。トランザクションメモリーハードウェアを用いることにより効率的なコールリターンスタックを提供することができる。非公開状態装備に保存されているコールリターンキャッシュは、ゲストの機能が完了したあとに戻すべきホストアドレスを保存する。ダイレクトルックアップハードウェアベースハッシュテーブルはコールリターンキャッシュ用に使用される。
2010532054.tif 000002
【特許請求の範囲】
【請求項１】
コードバックパッチを促進するためのトランザクションメモリーハードウェアを使用する方法であって、
特定のコードに対して行われる変更を、CPU上の前記トランザクションメモリーハードウェアの非公開ステート設備中に保存するステップ（４０４）と、
前記トランザクションメモリーハードウェアのアトミックコミットの機能を用いてメモリーに対する全ての変更を一度にコミットすることを試みることによってバックパッチングの変更を行うステップ（４０６）と
を含むことを特徴とする方法。
【請求項２】
他のスレッドが、変更の必要がある特定のコードの実行を試みている場合、変更をコミットする前記試みは失敗するステップをさらに含む（４０８）ことを特徴とする請求項１に記載の方法。
【請求項３】
前記アトミックコミットの機能を用いてメモリーに対する全ての変更を一度にコミットすることを試みるステップをさらに含む（４０８）ことを特徴とする請求項２に記載の方法。
【請求項４】
特定のコードに対して行われる変更は、異なるスレッドから受け取られたものである（４０４）ことを特徴とする請求項１に記載の方法。
【請求項５】
バックパッチの変更を行うために前記アトミックコミットの機能を用いることで、マルチスレッド環境で動的コード修正が可能になる（４１０）ことを特徴とする請求項１に記載の方法。
【請求項６】
前記動的コード修正が安全に実行される（４１０）ことを特徴とする請求項１に記載の方法。
【請求項７】
コンピューターに、請求項１に記載のステップを実行させるコンピューター実行可能命令が記録されているコンピューター可読メディア（２００）。
【請求項８】
エミュレーションを促進するための非公開ステートを保持する設備を有するトランザクションメモリーハードウェアを含むCPU（１０２）と、
ゲストの機能の実行が完結した後に戻るべきホストアドレスを保存している前記非公開ステート設備に保存されたコールリターンキャッシュ（４３４）と、
前記コールリターンキャッシュに使用するために実行することができるダイレクトルックアップハードウェアベースのハッシュテーブル（４３６）と
を備えることを特徴とするシステム。
【請求項９】
前記コールリターンキャッシュは、ディスパッチテーブルにおいて通常の検索よりも効率的な検索をサポートする（４３８）ことを特徴とする請求項８に記載のシステム。
【請求項１０】
トランザクションメモリーハードウェアを用いてエミュレーションを促進するための方法であって、
エミュレーションを促進することができるトランザクションメモリーハードウェアによりCPUにアクセスするステップ（２０６）と、
エミュレートされたプログラムにとって厳密な例外セマンティックスのエミュレーションを促進するために前記トランザクションメモリーハードウェアを使用するステップ（２０８）と、
エミュレートされたプログラム用にステートの隔離を促進するために前記トランザクションメモリーハードウェアを使用するステップ（２１０）と
を含むことを特徴とする方法。
【請求項１１】
前記トランザクションメモリーハードウェアを使用してエミュレートされたプログラムのための自己書き換えコードの検出を促す（２１２）ことをさらに含むことを特徴とする請求項１０に記載の方法。
【請求項１２】
前記トランザクションメモリーハードウェアを使用してエミュレートされたプログラムのためのディスパッチテーブルの更新を促す（２１４）ことをさらに含むことを特徴とする請求項１０に記載の方法。
【請求項１３】
前記トランザクションメモリーハードウェアを使用してエミュレートされたプログラムのためのコードバックパッチを促す（２１６）ことをさらに含むことを特徴とする請求項１０に記載の方法。
【請求項１４】
前記トランザクションメモリーハードウェアを使用してエミュレートされたプログラムのための効率的なコールリターンキャッシュを促す（２１８）ことをさらに含むことを特徴とする請求項１０に記載の方法。
【請求項１５】
前記トランザクションメモリーハードウェアが非公開ステートを維持する設備を支援することをサポートしている（１２０）ことを特徴とする請求項１０に記載の方法。
【請求項１６】
前記非公開ステートは他のCPUから見ることができない（２４２）ことを特徴とする請求項１５に記載の方法。
【請求項１７】
前記非公開ステートを破棄できない（２４２）ことを特徴とする請求項１５に記載の方法。
【請求項１８】
前記トランザクションメモリーハードウェアは、ソフトウェアが他のCPUによるメモリーアクセスを監視することを可能にする（３４４）ことを特徴とする請求項１０に記載の方法。
【請求項１９】
前記トランザクションメモリーハードウェアがアトミックコミットの機能を支援する（３７２）ことを特徴とする請求項１０に記載の方法。
【請求項２０】
コンピューターに、請求項１０に記載のステップを実行させるコンピューター実行可能命令が記録されているコンピューター可読メディア（２００）。
【発明の詳細な説明】
【技術分野】
【０００１】
発明は仮想化とエミュレーションを促すトランザクションメモリーハードウェアの活用に関する。
【背景技術】
【０００２】
エミュレーションとはソフトウェアからCPUの機能を提供する事に関する技術のことを指す。エミュレーションの一つの利点は、特定タイプのプロセッサ用に設計されたソフトウェアを、他のどのようなタイプのプロセッサ上でも実行することができることである。仮想化とは、複数のOSを同時に実行できるように、ハードウェアをパーティションで区切る機能を提供する技術のことを指す。仮想化によって、物理的には一つのCPUが複数のコンテキストにパーティションで区切られる。それぞれのコンテキストはプロセッサ上で直接実行されるようになる。仮想化による結果は一般的にエミュレーションによる結果より早いが、今日ではどちらの結果も、到達できる速さを制限するいくつかの複雑な問題を抱えている。一例として、エミュレーション中の並行処理は、シリアルパフォーマンスを遅くする可能性のある追加の同期を要求する。別の一例として、エミュレーション下での自己書き換えコードのトラッキングは通常相当のパフォーマンスの負荷を招く。
【発明の概要】
【課題を解決するための手段】
【０００３】
仮想化またはエミュレーションを容易にするトランザクションメモリーハードウェアを使用するための様々な技術や手法が公表されている。仮想化を促進することができるトランザクションメモリーハードウェアが１または複数のCPUに提供される。トランザクションメモリーハードウェアは非公開ステートを維持する機能、ソフトウェアで見ることのできる、ほかのCPUからのメモリーアクセスをレンダリングする機能、および非公開ステートのアトミックコミットの支援を有する。
【０００４】
一実施形態において、例えば、トランザクションメモリーハードウェアは正確な例外セマンティクスのエミュレーションを容易にするために使用することができる。非公開ステートはエミュレートされた状態がアーキテクチャの状態との不整合を保ち、ある境界でのみ同期できるよう動作できる。最適化された命令のシーケンスを、チャンクアキュレートシミュレーションを用いて、全てのチャンクが順調にエミュレートされた場合にのみコミットされる非公開ステートに隔離された、より速度の遅い、インストラクションアキュレートシミュレーションと同じ終端効果が得られるように試行し、得られるように実行する。
【０００５】
他の実施形態において、トランザクションメモリーハードウェア上で、隔離された非公開ステートを提供し、隔離された非公開ステートにおいてエミュレーションを実行しているホストのスタックを保存することで状態の隔離を容易にすることができる。
【０００６】
さらなる他の実施形態において、トランザクションメモリーハードウェアを用いて自己書き換えコードを検出できる。エミュレートされたゲストがゲスト自身のコードシーケンスの自己書き換えを行ったことを検出するためのソフトウェアによって、CPUによって実行されるメモリーアクセスを監視することができる。
【０００７】
一実施形態として、アトミックコミットの機能を利用して、マルチスレッド環境において、ディスパッチテーブルの更新を容易にするためにトランザクションメモリーハードウェアを使用することができる。ゲストプログラムカウンターをホストプログラムカウンターに変換するために、メインメモリーに保存されているディスパッチテーブルを使用するエミュレータは提供される。ディスパッチテーブルが、特定のゲストプログラムカウンターのための特定のホストプログラムカウンターを含んでいるかどうかを知るために、ディスパッチテーブルにアクセスする。ホストプログラムカウンターが見つからない場合、テーブルに新しいマッピングを導入するためにトランザクションメモリーハードウェアを使用することができる。
【０００８】
さらなる他の実施形態において、非公開メモリー状態とアトミックコミットの機能とを保持する設備をサポートするトランザクションメモリーハードウェアを提供すると、コードバックパッチングを容易にすることができる。特定のコードの変更は非公開状態装備に保存される。バックパッチングの変更は、アトミックコミットの機能を用いてメモリーに対するに全ての変更を一度にコミットすることを試みることによって成立する。
【０００９】
一実施形態として、トランザクションメモリーハードウェアを用いることにより効率的なコールリターンキャッシュを提供することができる。非公開状態設備に保存されているコールリターンキャッシュは、ゲストの機能の実行が完了したあとに戻されるためのホストアドレスを保存する。ダイレクトルックアップハードウェアベースハッシュテーブルはコールリターンキャッシュ用に使用される。
【００１０】
この概要は、以下の発明の詳細な説明の中で詳しく述べられている考え方を選出したものを簡単な形式で紹介するものである。この概要は、重要な特徴を述べることを意図したものでも、特許請求の範囲での主題の範囲を決定することを補助するために使用されることを意図したものでもない。
【図面の簡単な説明】
【００１１】
【図１】一実施形態におけるコンピューターシステムを示す線図である。
【図２】図１のコンピューターシステム上で作動する一実施形態における仮想化／エミュレーションアプリケーションを示す線図である。
【図３】厳密に例外的なセマンティックスのエミュレーションを容易にするために、トランザクションメモリーハードウェアの使用に関連している段階を示している図１のシステムの一実施形態におけるプロセスフローチャートである。
【図４】チャンクアキュレートシミュレーションを実行することを示す図１のシステムの一実施形態を示す図である。
【図５】チャンクアキュレートシミュレーションが例外とされた後のインストラクションアキュレートシミュレーションを実行することを示す図１のシステムの一実施形態を示す図である。
【図６】状態の隔離を容易にするためトランザクションのメモリーハードウェアを使用することに関連している段階を示している図１のシステムの一実施形態におけるプロセスフローチャートである。
【図７】エミュレーション中の自己書き換えコードの検出を容易にするためトランザクションメモリーハードウェアを使用することに関連している段階を示している図１のシステムの一実施形態におけるプロセスフローチャートである。
【図８】マルチスレッド環境下におけるディスパッチテーブルの更新を容易にするためトランザクションメモリーハードウェアを使用することに関連している段階を示している図１のシステムの一実施形態におけるプロセスのフローチャートである。
【図９】マルチスレッド環境下におけるコードバックパッチを容易にするためトランザクションメモリーハードウェアを使用することに関連している段階を示している図１のシステムの一実施形態におけるプロセスのフローチャートである。
【図１０】効率的なコールリターンキャッシュを容易にするためトランザクションのメモリーハードウェアを使用することに関連している段階を示している図１のシステムの一実施形態におけるプロセスのフローチャートである。
【発明を実施するための形態】
【００１２】
本明細書における技術と手法は、一般的には、仮想化システムまたはエミュレーションシステムとしての文脈で記述されることもあるが、技術と手法はこれらに加えてほかの用途も提供する。ほかの実施形態においては、システムは、仮想化および／またはエミュレーションを容易にするトランザクションメモリーハードウェアを使用している１または複数のCPUを含むこともある。
【００１３】
図１に示されるように、システムの１または複数の部分を実装する模範的なコンピューターシステムは、コンピューターデバイス１００などのコンピューターデバイスを含んでいる。その最も基本的な設定においては、コンピューターデバイス１００は一般的に少なくとも一つのCPU１０２とメモリー１０４を含んでいる。CPU（群）はそれぞれ、非公開ステート１２０を保持する機能と、ほかのCPUからのメモリーアクセスをソフトウェアに見えるようにレンダリングする機能１２４と、非公開ステート１２６のアトミックコミットのサポートとを含む、トランザクションメモリーハードウェア１１９を有する。非公開ステート１２０は、処理装置を持つことによって明らかにアトミックコミットされるまでほかのCPUから見ることはできない。また、非公開ステート１２０は取り除くことはできない。処理装置が非公開ステートを取り除いた場合、そのメモリーの表示は最新のアーキテクチャの状態に戻る。ソフトウェアから見えるメモリーアクセス１２４は、CPU上で実行されているソフトウェアが、ほかのCPUが特定のメモリーの記憶場所にアクセスするのを検出することを可能にする。アトミックコミット機能１２６は、CPUの非公開ステートが、アトミックコミットの一部として、アトミックに一単位としてメインメモリーシステムに入ることを可能にする。これらトランザクションメモリーハードウェアの機能は、本明細書でさらに詳細に記述されるように、仮想化および／またはエミュレーションを容易にするために様々な状況において使用される。
【００１４】
的確な設定とコンピューターデバイス次第で、メモリー１０４は（RAMなどの）揮発性、（ROM、フラッシュメモリーなどの）不揮発性、またはそれらを組み合わせたものとすることができる。この最も基本的な設定は図１の中では点線１０６で示されている。
【００１５】
加えて、デバイス１００は付加的な特徴／機能を有することもできる。例えば、デバイス１００は、磁気または光ディスクまたはテープを含むがこれらには限定されない、（取り外し可能、および／または固定の）付加的な記憶装置を含むこともできる。このような付加的な記憶装置は図１の中では取り外し可能な記憶装置１０８および固定の記憶装置１１０で示されている。コンピューター記憶メディアは、コンピューター可読命令などの情報、データストラクチャ、プログラムモジュールまたはほかのデータを記憶するための、いかなる方法や技術によっても実装される揮発性および不揮発性、取り外し可能および固定メディアを含んでいる。メモリー１０４、取り外し可能な記憶装置１０８および固定記憶装置１１０は全てコンピューター記憶メディアの例である。コンピューター記憶メディアは、RAM、ROM、EEPROM、フラッシュメモリーまたは他のメモリー技術、CD−ROM、デジタル多用途ディスク（DVD）または他の光記憶装置、磁気カセット、磁気テープ、磁気記憶装置または他の磁気記憶デバイス、または望む情報を記憶するために使用することができ装置１００によってアクセスできる他のいかなるメディアを含むがこれらに限定はされない。このようないかなるコンピューター記憶メディアもデバイス１００の一部である場合がある。
【００１６】
コンピューターデバイス１００は、コンピューターデバイス１００がほかのコンピューター／アプリケーション１１５と通信できるようにするための１または複数の通信接続１１４を含んでいる。デバイス１００はキーボード、マウス、ペン、音声入力デバイス、タッチ入力デバイスなどの入力デバイス（群）１１２も有している場合がある。ディスプレイ、スピーカー、プリンターなどの出力デバイス（群）１１１も含まれる場合もある。これらのデバイスは技術的によく知られていて、ここでは詳細に説明する必要はない。一実施形態において、コンピューターデバイス１００は仮想化／エミュレーションアプリケーション２００を含む。仮想化／エミュレーションアプリケーション２００は図２の中でより詳細に述べる。
【００１７】
引き続き図１に関し、次に図２に移ると、コンピューターデバイス１００上で作動している仮想化／エミュレーションアプリケーション２００が示されている。仮想化／エミュレーションアプリケーション２００はコンピューターデバイス１００に常駐しているアプリケーションプログラムのうちの一つである。しかし、仮想化／エミュレーションアプリケーション２００を、代替的にまたは付加的に１または複数のコンピューター上でコンピューターが実行可能な命令、および／または図1に示すものとは異なる変形において具体化することができる。代替的にまたは付加的に、他のコンピューター上および／またはアプリケーション１１５、またはコンピューターソフトウエア技術の当業者が想起するほかの変形において、仮想化／エミュレーションアプリケーション２００の１または複数のパーツをシステムメモリー１０４の一部にすることができる。
【００１８】
仮想化／エミュレーションアプリケーション２００は、ここで述べるいくつかの、または全ての技術を実行するプログラムロジック２０４を含んでいる。プログラムロジック２０４は、（図３について以下に記述するように）仮想化またはエミュレーションを容易にするためのトランザクションメモリーハードウェアを使用するロジック２０６；（図３−図５について以下に記述するように）厳密な例外セマンティクスのエミュレーションを容易にするためのトランザクションメモリーハードウェアを使用するロジック２０８；（図６について以下に記述するように）状態の隔離を容易にするためのトランザクションメモリーハードウェアを使用するロジック２１０；（図７について以下に記述するように）自己書き換えコードを検出することを容易にするためのトランザクションメモリーハードウェアを使用するロジック２１２；（図８について以下に記述するように）ディスパッチテーブルの更新を容易にするためのトランザクションメモリーハードウェアを使用するロジック２１４；（図９について以下に記述するように）コードバックパッチを容易にするためのトランザクションメモリーハードウェアを使用するロジック２１６；（図１０について以下に記述するように）効率的なコールリターンキャッシュを容易にするためのトランザクションメモリーハードウェアを使用するロジック２１８；およびアプリケーションを実行するためのほかのロジック２２０を含んでいる。一実施形態において、プログラムロジック２０４は、プログラムロジック２０４の中のプロセスを一回呼び出すのに使用するなど、他のプログラムからプログラムで呼び出して動作することができる。
【００１９】
図１−図２をもとに、図３−図１０において、仮想化／エミュレーションアプリケーション２００の1または複数の部品を実装するためのプロセスをより詳しく述べる。いくつかの実施形態において、図３−図１０のプロセスは、コンピューターデバイス１００のオペレーティングロジックにおいて少なくとも部分的に実装されている。図３は、正確なエクセプションセマンティックスのエミュレーションを容易にするためにトランザクションメモリーハードウェアを使用することに関連するプロセスの一実施形態を示している。プロセスは、開始点２４０から開始され、トランザクションメモリーハードウェア中の不可視かつ取り除くことができない非公開ステートを用いてエミュレートされた状態がアーキテクチャの状態と不整合な状態を保ち、粗い境界でのみ同期することができるようにする（段階２４２）。システムは、チャンクアキュレートシミュレーションを用いて、命令の最適系列を実行する（段階２４４）。もし例外が生じなければ（決定点２４６）、システムは通常、完全にインストラクションアキュレートシミュレーションを用いた場合よりも良いパフォーマンスでシミュレーションを完了することができる。しかし、例外が生じた場合（決定点２４６）、メモリーへの未完結の書き込みは破棄される（段階２４８）。エミュレートされたプロセッサ状態は最新の同期位置に戻される（段階２５０）。特定の符号系列は再度、例外がもう一度生じたときにアーキテクチャの状態が正しい状態であるように、インストラクションアキュレートシミュレーションを用いて控えめに実行される（段階２５２）。一実施形態において、アーキテクチャの状態は、エミュレートされる、現実の、仮想ではないシステムがおかれている状態と厳密に同じになり、これは正確なシステムレベルのエミュレーションにとって重要である。この工程は図４および５により詳しく示されている。この工程は終点２５４で終了する。
【００２０】
図４および図５において、エミュレートされた環境において正確なエクセプションセマンティックスのエミュレーションを容易にするトランザクションメモリーハードウェアの使用がより詳しく示されている。図４はチャンクアキュレートシミュレーションを実行する一実施形態における図２７０である。チャンクアキュレートシミュレーションは、命令の最適化されたシーケンスを、インストラクションアキュレートシミュレーションを用いた場合で可能な程度よりもさらに最適化された方法によって、ゲストの命令の新規のシーケンスと同様の最終結果になるよう試み、達成するように実行される。チャンクアキュレートシミュレーションはエミュレートされた状態がアーキテクチャの状態と整合した状態を保ち、基本的にシミュレーションの開始点と終点である粗い境界でのみ同期することができるようにする。チャンクアキュレートシミュレーションの実行中のどの地点においても、例外にぶつかった場合、図５の表２９０に示されたインストラクションアキュレートシミュレーションが実行される。インストラクションアキュレートシミュレーションは、２回目の例外が生じたときにアーキテクチャの状態が正しい状態であることを確実にするためにコードシーケンスを控えめに実行する。
【００２１】
図６は状態が分離するのを容易にするためにトランザクションメモリーハードウェアを使用するときに関係のある段階の一実施形態を示している。工程は、開始点３１０から開始され、トランザクションメモリーハードウェア上に孤立した非公開ステートを作成する（段階３１２）。エミュレートされた環境において、エミュレートを行うホストは孤立した非公開ステートにおいてそのスタックを保存する（段階３１４）。孤立した非公開ステートでは、ホストがスタックをバッファモードに保つことを可能にしてホストに負担のかかる実行時間のチェックをしなくて良いようにする。孤立した非公開ステートは破棄することができる。このことは、CPUが非公開ステートを破棄したとき、メモリーの表示は最新のアーキテクチャの状態に戻ることを意味する。エミュレートされたゲストは孤立した非公開ステートにアクセスしない（段階３１６）。この工程は終点３１８で終了する。
【００２２】
図７は自己書き換えコードを検出することを促すためトランザクションメモリーハードウェアを使用するときに関係のある段階の一実施形態を示している。工程は開始点３４０から始まり、トランザクションメモリーハードウェアを用いてソフトウェア可視メモリーアクセスを提供する（段階３４２）。システムは、エミュレートされているゲストがゲスト自身のコードシーケンスを修正したことを検出するように、CPUによって実行されるメモリーアクセスを監視する（段階３４４）。隔離されたCPUからのメモリーアクセスであっても検出できる。システムは検出したことに基づいて、適正な動作を行う（段階３４６）。このような適正な動作のいくつかの本発明を限定しない例は、ゲストによる自己書き換えを組み込むためにコードシーケンスを再コンパイルし、例外を生じさせ、かつ／または機能の実行をとめることを含むことができる。そのほかの適正な処置のいくつかの制限されない例は、自己書き換えを行うコードの部分のみ、（コンパイルとは対照的に）マシンの命令の解釈に切り替えることを含むことができる。一実施形態において、この方法はコンパイルより時間がかかるが、非常に正確で、自己切り替えの意図する通りに実行される。他の適正な動作を行うことも可能である。工程は終点３４８で終了する。
【００２３】
図８は、マルチスレッド環境において、ディスパッチテーブルを更新することを容易にするためトランザクションメモリーハードウェアを使用することに関係のある段階の一実施形態を示している。工程は開始点３７０から始まり、トランザクションメモリーハードウェアを用いてアトミックコミットの機能を提供する（段階３７２）。システムは、ゲストプログラムカウンタをホストプログラムカウンタに変換するためにメインメモリーに保存されているディスパッチテーブルを使用するエミュレータを提供する（段階３７４）。システムは、与えられたゲストプログラムカウンタ用のホストプログラムカウンタが含まれているかどうかを知るためにディスパッチテーブルにアクセスする（段階３７６）。ホストプログラムカウンタが見つからない場合、システムはゲストコードの関連しているブロックをコンパイルする（段階３７８）。ディスパッチテーブルの更新は非公開メモリーで実行され、更新が完全に実行されたとき、自動的にメインメモリーに対してコミットされる。アトミックコミットの機能を活用して、システムはアトミックな方法によって、最小のオーバーヘッドで、ディスパッチテーブルを更新する（段階３８０）。工程は終点３８２で終了する。
【００２４】
図９は、マルチスレッド環境において、コードバックパッチングを容易にするためトランザクションメモリーハードウェアを使用することに関係のある段階の一実施形態を示している。工程は開始点４００から始まり、トランザクションメモリーハードウェアを用いて不可視非公開状態とアトミックコミットの機能を提供する（段階４０２）。システムは不可視の非公開状態でコードに対してなされる変更を保存する（段階４０４）。コードに対してなされる変更は一つ以上のスレッドから受け取ることができる。バックパッチングの変更は全ての変更をアトミックコミットを使用して一度にメモリーにコミットすることを試みることで成立する（段階４０６）。もし他のスレッドが、変更が必要なコードを実行しようとすると、コミットは失敗し、全ての変更を自動的にメモリーにコミットすることを試みることでバックパッチング工程が再度実行される（段階４０８）。トランザクションメモリー機能と併せてこのようなバックパッチング工程を使用することで、マルチスレッド環境下で安全な動的コード修正を行うことができる（段階４１０）。工程は終点４１２で終了する。
【００２５】
図１０は、効率的なコールリターンキャッシュを容易にするためトランザクションメモリーハードウェアを使用することに関係のある段階の一実施形態を示している。工程は開始点４３０から始まり、トランザクションメモリーハードウェアを用いて不可視かつ破棄できない非公開状態とアトミックコミットの機能を提供する（段階４３２）。システムは、ゲストの機能が完結した後に、戻るためのホストアドレスを保存している非公開ステート設備に保存された、コールリターンキャッシュを提供する（段階４３４）。コールリターンキャッシュには、ダイレクトルックアップハードウェアベースのハッシュテーブルが使用される（段階４３６）。一実施形態において、コールリターンキャッシュは通常のディスパッチテーブルでの探索よりもさらに効果的な探索をサポートする。工程は終点４３８で終了する。
【００２６】
本主題を構造の機能および／または方法論的な動作に特定して記述してきたが、添付の特許請求の範囲の中で定義されている主題はここまでに記述された特定の機能または動作に限定されない。そうではなく、ここまでに記述された特定の機能または動作は特許請求の範囲を実行する例として開示されている。本明細書で、および／または後に挙げる特許請求の範囲に述べられている実施形態の精神の範囲内にある全ての同等な等価物、変更点、修正点が保護されることを希望する。
【００２７】
例えば、コンピューターソフトウェアの技術において通常の知識を持つ者であれば、ここで議論されている例は当該例で表現されたものよりも少ないかまたは多いオプションを含むように、１または複数のコンピューターで異なる形態で編成することができると認識できるであろう。
【図１】
2010532054.tif 000003
【図２】
2010532054.tif 000004
【図３】
2010532054.tif 000005
【図４】
2010532054.tif 000006
【図５】
2010532054.tif 000007
【図６】
2010532054.tif 000008
【図７】
2010532054.tif 000009
【図８】
2010532054.tif 000010
【図９】
2010532054.tif 000011
【図１０】
2010532054.tif 000012
【国際調査報告】
2010532054.tif 000013
2010532054.tif 000014