(57)【特許請求の範囲】
【請求項１】
ローカルトランザクショナルキャッシュと、
当初のアドレスを参照し、要求元スレッドに関連付けされるトランザクショナルメモリ要求に応答して、前記ローカルトランザクショナルキャッシュが前記トランザクショナルメモリ要求を収容可能であるか判断し、前記ローカルトランザクショナルキャッシュが前記トランザクショナルメモリ要求を収容可能であることに応答して、前記ローカルトランザクショナルキャッシュを前記トランザクショナルメモリ要求を実行するのに使用するリソースマネージャと、
前記ローカルトランザクショナルキャッシュが前記トランザクショナルメモリ要求を収容不可であることに応答して、前記要求元スレッドのアドレス空間内の新たなアドレスを前記要求元スレッドのアドレス空間に保持されるエントリにおける前記当初のアドレスと関連付け、前記当初のアドレスから前記新たなアドレスへの前記トランザクショナルメモリ要求に関連するデータのオーバフローを管理するトランザクションアドレス変換テーブルウォーカーと、
前記ローカルトランザクショナルキャッシュが前記トランザクショナルメモリ要求を収容不可であることに応答して、前記当初のアドレスがオーバフローしたことを示すコンフリクト検出フィルタ（ＣＤＦ）と、
を含むプロセッサを有する装置であって、
前記トランザクションアドレス変換テーブルウォーカーは、前記ＣＤＦに基づき要求元スレッドの仮想アドレス空間にコピーされたオーバフローしたデータを利用する装置。
【請求項２】
請求項１記載の装置であって、さらに、
前記要求元スレッドのアドレス空間に対応する物理メモリの一部に保持されるトランザクションアドレス変換テーブル（ＸＡＴＴ）を有し、
前記トランザクションアドレス変換テーブルウォーカーは、前記エントリにおいて前記新たなアドレスを前記当初のアドレスと関連付けるため、前記ＸＡＴＴのエントリへの少なくとも前記当初のアドレスと前記新たなアドレスとの格納を開始する装置。
【請求項３】
請求項２記載の装置であって、
前記アドレス空間は、前記要求元スレッドの仮想アドレス空間を有し、
前記当初のアドレスは、仮想アドレスを有し、
前記新たなアドレスは、前記仮想アドレス空間内の新たな仮想アドレスを有し、
前記プロセッサはさらに、前記仮想アドレス空間を前記物理メモリの一部を含む物理アドレス空間に変換し、前記当初の仮想アドレスを当初の物理アドレスに変換し、前記新たな仮想アドレスを前記物理アドレス空間内の前記当初の物理アドレスと異なる新たな物理アドレスに変換するアドレス変換ロジックを有する装置。
【請求項４】
請求項３記載の装置であって、
前記トランザクションアドレス変換テーブルウォーカーはさらに、前記当初の物理アドレスと、前記新たな物理アドレスと、前記トランザクショナルメモリ要求に係る現在のトランザクションの状態を表すトランザクションアクションポインタ（ＸＰＴＲ）との前記エントリへの格納を開始する装置。
【請求項５】
請求項４記載の装置であって、
前記現在トランザクションの状態は、ローカル、オーバフロー、アクティブ、スワップ済、実行中、終了及びコミット済からなる群から選ばれる装置。
【請求項６】
請求項２記載の装置であって、
前記プロセッサはさらに、前記ＸＡＴＴのエントリの少なくとも一部をキャッシュする変換バッファを有する装置。
【請求項７】
請求項４記載の装置であって、
前記トランザクショナルメモリ要求を含むオーバフローしたトランザクションの試行されたコミットに応答して、前記トランザクションアドレス変換テーブルウォーカーは、前記ＸＡＴＴのエントリに保持されているＸＰＴＲをチェックし、
終了状態を表す前記ＸＡＴＴのＸＰＴＲに応答して、前記オーバフローしたトランザクションが終了される装置。
【請求項８】
請求項２記載の装置であって、
前記ＸＡＴＴは、前記要求元スレッドに係るすべてのオーバフローしたトランザクションに対してエントリを保持し、
第２のＸＡＴＴは、第２スレッドに係るすべてのオーバフローしたトランザクションに対してエントリを保持する装置。
【請求項９】
プロセッサ内に常駐するキャッシュが、当初のアドレスに係るトランザクショナルメモリ要求を収容可能であるか、前記プロセッサ内に実現されるリソースマネージャにより仮想アドレス空間に関連付けされる要求元スレッドから判断するステップと、
前記ローカルキャッシュが前記トランザクショナルメモリ要求を収容可能であると前記リソースマネージャが判断することに応答して、前記ローカルキャッシュにより前記トランザクショナルメモリ要求を実行するステップと、
前記ローカルキャッシュが前記トランザクショナルメモリ要求を収容不可であると前記リソースマネージャが判断することに応答して、前記当初のアドレスがオーバフローしたことを示すようコンフリクト検出フィルタ（ＣＤＦ）を更新するとともに、トランザクションアドレス変換テーブル（ＸＡＴＴ）のエントリ内において新たなアドレスを前記トランザクショナルメモリ要求に割当て、前記新たなアドレスに前記オーバフローしたトランザクショナルメモリ要求のデータをコピーするステップと、
を有する方法。
【請求項１０】
請求項９記載の方法であって、
前記プロセッサ内のＸＡＴＴウォーカーは、前記仮想アドレス空間に係る物理メモリに格納されているＸＡＴＴに対して処理することによって、前記新たなアドレスを割り当てる方法。
【請求項１１】
請求項１０記載の方法であって、
前記新たなアドレスを割り当てるステップは、新たな仮想アドレスと新たな物理アドレスとを前記トランザクショナルメモリ要求に割当て、
前記新たな仮想アドレスと新たな物理アドレスとの前記トランザクショナルメモリ要求への割当ては、前記新たな仮想アドレス、当初の仮想アドレス、前記新たな物理アドレス及び当初の物理アドレスを保持するため、前記仮想アドレス空間に係る物理メモリに格納されている前記ＸＡＴＴにおけるエントリを更新することを含む方法。
【請求項１２】
請求項１１記載の方法であって、さらに、
前記ＸＡＴＴにおけるエントリ内のトランザクショナルメモリ要求を含む現在トランザクションの状態を割当てるステップを有することを特徴とする方法。
【請求項１３】
請求項１２記載の方法であって、
前記現在トランザクションの状態は、ローカルまたはオーバフローの１つであることを特徴とする方法。
【請求項１４】
マシーンによる実行時、
仮想アドレス空間に係る要求元スレッドからのストアデータの当初のアドレスを参照するトランザクショナルメモリストア要求が、プロセッサ内のローカルメモリをオーバフローするか判断するステップと、
前記トランザクショナルメモリストア要求が前記ローカルメモリをオーバフローしないと判断することに応答して、前記ローカルメモリによりトランザクショナルメモリトランザクションを実行するステップと、
前記トランザクショナルメモリストア要求が前記ローカルメモリをオーバフローすると判断することに応答して、前記当初のアドレスがオーバフローしたことを示すようコンフリクト検出フィルタ（ＣＤＦ）を更新するとともに、トランザクションアドレス変換テーブル（ＸＡＴＴ）のエントリ内において新たなアドレスを前記トランザクショナルメモリストア要求に割当て、前記新たなアドレスに前記オーバフローしたトランザクショナルメモリストア要求のデータをコピーするステップと、
を有する処理を前記マシーンに実行させる命令を格納するマシーン可読媒体。
【請求項１５】
請求項１４記載のマシーン可読媒体であって、
前記仮想アドレス空間に係る新たなアドレスを割り当てるステップは、前記新たなアドレスと前記当初のアドレスとを保持するよう前記プロセッサに接続された物理メモリに保持されるＸＡＴＴテーブルのエントリを前記プロセッサ内のＸＡＴＴウォーカーに更新させることを含む媒体。
【請求項１６】
請求項１５記載のマシーン可読媒体であって、
前記当初のアドレスは、当初の仮想アドレスを有し、
前記新たなアドレスは、前記仮想アドレス空間内の新たな仮想アドレスを有する媒体。
【請求項１７】
請求項１５記載のマシーン可読媒体であって、
前記当初のアドレスは、前記プロセッサにおける変換バッファによる変換時、当初の物理アドレスを参照するための当初の仮想アドレスを有し、
前記新たなアドレスは、前記変換バッファにより変換時、前記仮想アドレス空間内の新たな仮想アドレスを参照するための新たな物理アドレスを有する媒体。
【請求項１８】
請求項１７記載のマシーン可読媒体であって、
前記ＸＡＴＴテーブルのエントリは、前記当初の仮想アドレス、前記新たな仮想アドレス、前記当初の物理アドレス、前記新たな物理アドレス及び前記トランザクショナルメモリストア要求を含むトランザクションの状態を保持する媒体。
【請求項１９】
請求項１４記載のマシーン可読媒体であって、
前記トランザクショナルメモリストア要求を含むトランザクションのコミットに応答して、前記マシーンに前記新たなアドレスから前記当初のアドレスに前記ストアデータをコピーさせる命令をさらに有する媒体。
【請求項２０】
請求項１４記載のマシーン可読媒体であって、
前記トランザクショナルメモリストア要求を含むトランザクションの終了に応答して、前記マシーンに前記新たなアドレスから前記ストアデータを破棄させる命令をさらに有する媒体。
【請求項２１】
アプリケーションアドレス空間内にトランザクショナル変換テーブルを保持するシステムメモリと、
前記システムメモリに接続されるプロセッサと、
を有するコンピュータシステムであって、
前記プロセッサは、
ローカルキャッシュと、
前記ローカルキャッシュが、当初のアドレスを参照するため、前記アプリケーションアドレス空間に係るアプリケーションの要求元スレッドからのトランザクショナルメモリ要求を収容可能であるか判断するリソースマネージャと、
前記アプリケーションアドレス空間内の前記当初のアドレスに関連付けされ、前記トランザクショナルメモリ要求に関連するオーバフローデータを保持するための新たなアドレスを保持するため、前記トランザクショナル変換テーブルのエントリの更新を開始するためのトランザクショナル変換テーブルウォーカーと、
前記ローカルキャッシュをオーバフローさせた当初のアドレスへの参照を保持するコンフリクト検出ロジックと、
を有し、
前記トランザクショナル変換テーブルウォーカーが、前記ＣＤＦに基づき要求元スレッドの仮想アドレス空間にコピーされたオーバフローしたデータを利用するコンピュータシステム。
【請求項２２】
請求項２１記載のコンピュータシステムであって、
前記プロセッサはさらに、仮想アドレスを物理アドレスに変換するための変換ロジックを有し、
前記当初のアドレスは、前記変換ロジックによる変換時、当初の物理アドレスを参照するための当初の仮想アドレスを有し、
前記新たなアドレスは、前記変換ロジックによる変換時、前記アプリケーションアドレス空間内の前記システムメモリにおける物理メモリ位置の新たな物理アドレスを参照するための新たな仮想アドレスを有するコンピュータシステム。
【請求項２３】
請求項２２記載のコンピュータシステムであって、
前記プロセッサはさらに、前記トランザクショナル変換テーブルの最近更新されたエントリをキャッシュするためのトランザクション変換キャッシュを有するコンピュータシステム。
【請求項２４】
請求項２１記載のコンピュータシステムであって、
前記ローカルキャッシュは、前記プロセッサ内のデータキャッシュとは独立したトランザクショナルキャッシュを有するコンピュータシステム。
【請求項２５】
請求項２１記載のコンピュータシステムであって、
前記ローカルキャッシュは、トランザクショナルキャッシュとしても使用されるデータキャッシュを有するコンピュータシステム。
【請求項２６】
請求項２２記載のコンピュータシステムであって、
前記トランザクショナルテーブルのエントリは、前記当初の仮想アドレス、前記新たな仮想アドレス、前記当初の物理アドレス、前記新たな物理アドレス、及び前記トランザクショナルメモリ要求を含むトランザクションの状態を保持するコンピュータシステム。
【請求項２７】
請求項２１記載のコンピュータシステムであって、
前記アプリケーションアドレス空間内のトランザクショナル変換テーブルは、前記トランザクショナルメモリ要求を含む１つのトランザクションにのみ関連付けされるコンピュータシステム。
【請求項２８】
請求項２１記載のコンピュータシステムであって、
前記アプリケーションアドレス空間内のトランザクショナル変換テーブルは、前記係るアプリケーションの要求元スレッドからのすべてのトランザクションに関連付けされるコンピュータシステム。
【請求項２９】
ローカルメモリと、
ストアデータを参照するためのトランザクショナルストア処理と、前記ストアデータの当初の仮想アドレスとを少なくとも有するトランザクションを含むスレッドであって、仮想アドレス空間に係るスレッドを実行する実行リソースと、
前記仮想アドレス空間内の仮想アドレスを前記プロセッサに関連付けされる物理メモリの物理アドレスに変換する変換ロジックと、
受信時に前記トランザクショナルストア処理が前記ローカルメモリをオーバフローさせるか判断するオーバフローロジックと、
前記トランザクショナルストア処理が前記ローカルメモリをオーバフローさせると前記オーバフローロジックが判断することに応答して、前記スレッドに関連付けされる前記仮想アドレス空間内の新たな仮想アドレスを前記当初の仮想アドレスに関連付ける変換ロジックと、
前記トランザクショナルストア処理が前記ローカルメモリをオーバフローさせると前記オーバフローロジックが判断することに応答して、前記当初の物理アドレスを追跡するコンフリクト検出ロジックと、
を含むプロセッサを有する装置であって、
前記新たな仮想アドレスは、前記変換ロジックによる変換時、前記ストアデータを保持するため前記物理メモリの新たな物理アドレスを参照するためのものであり、
前記変換ロジックは、前記ＣＤＦに基づき要求元スレッドの仮想アドレス空間にコピーされたオーバフローしたデータを利用する装置。
【請求項３０】
請求項２９記載の装置であって、
前記ローカルメモリは、キャッシュメモリを有し、
前記実行リソースは、前記スレッドを含む複数のスレッドを少なくとも部分的にパラレルに実行可能であり、
前記当初の仮想アドレスは、前記変換ロジックによる変換時、前記物理メモリの当初の物理アドレスを参照するためのものであり、
前記物理メモリは、コンピュータシステム内に前記プロセッサに接続される記憶装置を有する装置。
【請求項３１】
請求項３０記載の装置であって、
前記変換ロジックは、前記新たな仮想アドレスと前記当初の仮想アドレスとを関連付けるため、前記新たな仮想アドレスと前記当初の仮想アドレスとを保持するためのテーブルのエントリを更新するため、前記物理メモリに保持される前記テーブルへのライトを開始する装置。
【請求項３２】
請求項３１記載の装置であって、
前記プロセッサはさらに、前記トランザクションロジックが前記テーブルへのライトを開始することに応答して、前記テーブルのエントリの少なくとも一部をキャッシュするためのトランザクション変換キャッシュを有する装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、トランザクショナルメモリ（ｔｒａｎｓａｃｔｉｏｎａｌ  ｍｅｍｏｒｙ）及びトランザクショナル実行（ｔｒａｎｓａｃｔｉｏｎａｌ  ｅｘｅｃｕｔｉｏｎ）の技術分野に関する。より詳細には、本発明は、ハードウェアサポートを有する、または有しない仮想メモリを用いたトランザクショナルメモリ実行を可能にすることに関する。
【背景技術】
【０００２】
トランザクショナルメモリ実行は、アプリケーション、プログラム、モジュールなど、特にアプリケーションプログラムインタフェース（ＡＰＩ）がアトミック（ａｔｏｍｉｃ）にデータベースファイルや他のタイプのメモリファイルにアクセスすることを可能にする。例えば、トランザクショナルメモリは、データベースやディレクトリサービスなどのパーシスタントポインタリッチデータ構造（ｐｅｒｓｉｓｔｅｎｔ  ｐｏｉｎｔｅｒ−ｒｉｃｈ  ｄａｔａ  ｓｔｒｕｃｔｕｒｅ）を管理するランタイムエンジンの一部として利用される。
【０００３】
ＡＰＩは、オペレーティングシステムやデータベースマネージメントシステム（ＤＢＭＳ）などのシステムプログラムと通信するため、アプリケーション、プログラム、モジュールなどにより利用される言語またはメッセージフォーマットとしてみなすことができる。ＡＰＩは、ファンクションコールをプログラムに書き込むことにより実現可能であり、実行のための具体的なサブルーチンへのリンクを提供する。
【０００４】
トランザクショナルメモリは、パラレルなプログラムの書き込みを容易にし、トランザクショナルメモリの使用は、各スレッドを同時処理することを可能にし、これにより、極めて高い処理効率を達成することを可能にする。
【０００５】
トランザクショナルメモリは、典型的には、データベーストランザクションから導出されるものとみなされる。一般に、トランザクションとは、ＡＣＩＤ（Ａｔｏｍｉｃｉｔｙ  Ｃｏｎｓｉｓｔｅｎｃｙ  Ｉｓｏｌａｔｉｏｎ  ａｎｄ  Ｄｕｒａｂｉｌｉｔｙ）プロパティと呼ばれる４つのプロパティを満たすことを必要とする処理群である。第１のＡＣＩＤプロパティはアトミシティ（ａｔｏｍｉｃｉｔｙ）である。アトミシティは、トランザクションがオール・オア・ナッシング的に実行されることを求める。トランザクションは、プログラムが終了（ａｂｏｒｔ）したり、あるいはエラーにより終了するかもしれない。アトミシティは、トランザクションのすべての処理が実行されるか、あるいはトランザクションの何れの処理も実行されないかの何れか一方を要求する。第２のＡＣＩＤプロパティは、コンシスタンシ（ｃｏｎｓｉｓｔｅｎｃｙ）である。コンシスタンシは、トランザクションの実行前に、データベースがコンシスタントな状態にある場合、データベースがコンシスタントな状態に留められることを要求する。第３のＡＣＩＤプロパティは、アイソレーション（ｉｓｏｌａｔｉｏｎ）である。アイソレーションプロパティは、実行されるすべてのトランザクションが逐次的順序により実行されるようにする必要があることを示している（すなわち、これらのトランザクションが逐次化可能となるべきである）。ＡＣＩＤの下で必要とされる第４のプロパティは、デュラビリティ（ｄｕｒａｂｉｌｉｔｙ）である。デュラビリティは、トランザクションがマシーンクラッシュを切り抜けることを要求する。すなわち、トランザクションは、それがコミット可能とされる前に、ステーブルな記憶装置（ディスクなど）への書き込みを必要とする。
【０００６】
トランザクショナルメモリ及びトランザクショナル実行は、マルチスレッドアプリケーションがロウバストでハイパフォーマンスな方法により書き込まれることを可能にする。このことは、デスクトップやサーバなどのコンピュータシステムがヘビーなスレッド環境において動作することを要求されることが増大するに従いより重要となる。特に、現在のプロセッサの投機的な実行サポートは、マルチスレッドアプリケーションを効率的に実現するため、コードブロックを投機的に実行するのに利用可能である。しかしながら、トランザクショナルメモリやトランザクショナル実行を実現する現在の技術は、任意のサイズまたは長さのトランザクションを処理することができないという点でリソース制約を被り、これにより、プログラミングとトランザクショナル実行の双方に対する大きな制約が課される。
【発明の概要】
【発明が解決しようとする課題】
【０００７】
本発明の課題は、上記問題点に鑑み、ハードウェアサポートなしにトランザクショナルメモリ実行が仮想メモリを利用することを可能にする技術を提供することである。
【課題を解決するための手段】
【０００８】
上記課題を解決するため、本発明は、ローカルトランザクショナルキャッシュを有するプロセッサと、要求元スレッドからのトランザクショナルメモリトランザクション要求に応答して、前記ローカルトランザクショナルキャッシュが前記トランザクショナルメモリトランザクション要求を収容可能であるか判断するリソースマネージャとから構成される装置であって、前記トランザクショナルメモリトランザクション要求が収容可能である場合には、前記ローカルトランザクショナルキャッシュは前記トランザクショナルメモリトランザクションを実行し、前記トランザクショナルメモリトランザクション要求が収容可能でない場合には、前記トランザクショナルメモリトランザクション要求が、前記要求元スレッドに係るアプリケーション仮想アドレス空間にオーバフローされることを特徴とする装置を提供する。
【０００９】
また、本発明は、ローカルトランザクショナルキャッシュが要求元スレッドからトランザクショナルメモリトランザクション要求を収容可能であるか判断するステップと、前記ローカルトランザクショナルキャッシュが前記トランザクショナルメモリトランザクションを収容可能である場合、前記ローカルトランザクショナルキャッシュとの前記トランザクショナルメモリトランザクションを実行するステップと、前記ローカルトランザクショナルキャッシュが前記トランザクショナルメモリトランザクション要求を収容可能でない場合、前記要求元スレッドに係るアプリケーション仮想アドレス空間に前記トランザクショナルメモリトランザクション要求のデータをオーバフローするステップとから構成される方法を提供する。
【００１０】
さらに、本発明は、マシーンによる実行時、ローカルトランザクショナルキャッシュが要求元スレッドからのトランザクショナルメモリトランザクション要求を収容可能であるか判断するステップと、前記ローカルトランザクショナルキャッシュが前記トランザクショナルメモリトランザクションを収容可能である場合、前記ローカルトランザクショナルキャッシュとの前記トランザクショナルメモリトランザクションを実行するステップと、前記ローカルトランザクショナルキャッシュが前記トランザクショナルメモリトランザクション要求を収容可能でない場合、前記要求元スレッドに係るアプリケーション仮想アドレス空間に前記トランザクショナルメモリトランザクション要求のデータをオーバフローするステップとから構成される処理を前記マシーンに実行させる命令を格納することを特徴とするマシーン可読媒体を提供する。
【００１１】
さらに、本発明は、ローカルトランザクショナルキャッシュを有するプロセッサと、データベースと、アプリケーションプログラムインタフェース（ＡＰＩ）からの要求元スレッドからのトランザクショナルメモリトランザクション要求がデータベースのメモリにアクセスするよう要求することに応答して、前記ローカルトランザクショナルキャッシュが前記トランザクショナルメモリトランザクション要求を収容可能であるか判断するリソースマネージャとから構成されるコンピュータシステムであって、前記トランザクショナルメモリトランザクション要求が収容可能である場合には、前記ローカルトランザクショナルキャッシュは前記トランザクショナルメモリトランザクションを実行し、前記トランザクショナルメモリトランザクション要求が収容可能でない場合には、前記トランザクショナルメモリトランザクション要求が、前記要求元スレッドに係るアプリケーション仮想アドレス空間にオーバフローされることを特徴とするコンピュータシステムを提供する。
【発明の効果】
【００１２】
本発明によると、ハードウェアサポートなしにトランザクショナルメモリ実行が仮想メモリを利用することを可能にする技術を提供することができる。
【図面の簡単な説明】
【００１３】
【図１】図１は、本発明の実施例が実現されるコンピュータシステム構成の一例に関する部分的なブロック図を示す。
【図２】図２は、仮想メモリを用いたトランザクショナルメモリ実行に関する本発明の実施例を実現するためのプロセスを示すフロー図である。
【図３】図３は、本発明の一実施例によるＸＡＴＴ（Ｔｒａｎｓａｃｔｉｏｎ  Ａｄｄｒｅｓｓ  Ｔｒａｎｓｌａｔｉｏｎ  Ｔａｂｌｅ）の構成図である。
【図４】図４は、本発明の一実施例による新しい仮想アドレス及び物理アドレスを取得するためのプロセスを示すフロー図である。
【図５】図５は、本発明の一実施例によるＶＴＭ（Ｖｉｒｔｕａｌ  Ｔｒａｎｓａｃｔｉｏｎ  Ｍｅｍｏｒｙ）トランザクションなどの仮想メモリを利用したトランザクショナルメモリトランザクションの実行中に、トランザクションのスレッドがとりうる各種状態の一例を示す図である。
【図６】図６は、本発明の一実施例によるトランザクショナルメモリトランザクションがオーバフロー要求を生成する方法に関するプロセスを示すフロー図である。
【図７】図７は、本発明の一実施例によるトランザクションをコミットするプロセスを示すフロー図である。
【図８】図８は、本発明の一実施例による入力された要求にオーバフローされたトランザクションが応答する方法に関するプロセスを示すフロー図である。
【発明を実施するための形態】
【００１４】
以下において、本発明の様々な実施例が詳細に説明される。しかしながら、そのような詳細は、本発明の理解を容易にし、本発明を利用するための実施例を説明するために含まれる。本発明の範囲内に属しながら、他の変形及び実施例が可能であるため、このような詳細は本発明を説明された特定の実施例に限定するのに利用されるべきではない。さらに、本発明の実施例の完全なる理解を提供するため、多数の詳細が提供されるが、これらの具体的詳細が本発明の実施例を実現するのに要求されるものではないということが、当業者には明らかであろう。他の具体例では、本発明を不明瞭にすることを避けるため、周知の方法、データタイプ、プロトコル、手順、コンポーネント、電気構造及び回路などの詳細は説明されないか、あるいはブロック図により示される。さらに、本発明の実施例は、特定の実施例により説明されるが、ハードウェア、ソフトウェア、ファームウェア、ミドルウェアまたはこれらの組み合わせにより実現されるようにしてもよい。
【００１５】
図１は、本発明の実施例が実現されるコンピュータシステム構成の一例の部分的なブロック図を示す。システム構成１００は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）などの少なくとも１つのプロセッサ１０１、チップセット１０３、システムメモリ装置１０５、１以上の入出力（Ｉ／Ｏ）装置１１３とのインタフェースのための１以上のインタフェース１１１、及びネットワークインタフェース１０７から構成される。
【００１６】
チップセット１０３は、ＭＣＨ（Ｍｅｍｏｒｙ  Ｃｏｎｔｒｏｌ  Ｈｕｂ）及び／またはＩ／Ｏコントロールハブを有するようにしてもよい。チップセット１０３は、プロセッサ１０１とコンピュータシステム１００の他のコンポーネントとの間のデータ転送のためのハブまたはコアとして機能する１以上の集積回路チップであってもよい。さらに、コンピュータシステム１００は、他のプロセッサ（例えば、マルチプロセッサシステムにおける）、コプロセッサや他のコンポーネントなどの追加的なコンポーネント（図示せず）を有するようにしてもよく、以上はコンピュータシステムの基本例である。
【００１７】
ここでの説明のため、「プロセッサ」または「ＣＰＵ」という用語は、命令シーケンスを実行可能な任意のマシーンを表すものであり、以下に限定されるものではないが、汎用マイクロプロセッサ、特定用途マイクロプロセッサ、特定用途向け集積回路（ＡＳＩＣ）、マルチメディアコントローラ、信号プロセッサ、マイクロコントローラなどを含むものとされる。一実施例では、ＣＰＵ１０１は、インテルアーキテクチャ命令セットの実行が可能な汎用的な高速マイクロプロセッサである。例えば、ＣＰＵ１０１は、ＩＮＴＥＬ（登録商標）Ａｒｃｈｉｔｅｃｔｕｒｅ  ３２−ｂｉｔ（ＩＡ−３２）プロセッサ（ＰＥＮＴＩＵＭ（登録商標）４Ｍなど）などのＩＮＴＥＬ（登録商標）ＰＥＮＴＩＵＭ（登録商標）プロセッサ群の１つとすることが可能である。
【００１８】
ＣＰＵ１０１、チップセット１０３及び他のコンポーネントは、チップセット１０３を介しシステムメモリ装置１０５にアクセスする。例えば、メモリコントロールハブを用いたチップセット１０３は、システムメモリ装置１０５を対象とするメモリトランザクションに供する。
【００１９】
システムメモリ装置１０５は、ＳＲＡＭ（Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＳＤＲＡＭ（Ｓｙｎｃｈｒｏｎｏｕｓ  Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、及び／またはＤＤＲ（Ｄｏｕｂｌｅ  Ｄａｔａ  Ｒａｔｅ）ＳＤＲＡＭまたはＤＲＡＭなど、デジタル情報を格納するよう構成される任意の記憶装置を有するものであってもよい。従って一実施例では、システムメモリ装置１０５は、揮発性メモリを含む。さらに、システムメモリ装置はまた、ＲＯＭ（Ｒｅａｄ−Ｏｎｌｙ  Ｍｅｍｏｒｙ）などの不揮発性メモリを有することが可能である。
【００２０】
さらに、システムメモリ装置１０５はさらに、ハードディスクドライブ、フロッピー（登録商標）ディスクドライブ、光ディスクドライブなどの他の記憶装置、及び適切なインタフェースを有するようにしてもよい。
【００２１】
本発明の実施例は、仮想メモリを用いてデータフットプリントサイズ、実行される命令、プロセスマイグレーション（ｐｒｏｃｅｓｓ  ｍｉｇｒａｔｉｏｎ）などのリソースに関する任意のサイズのトランザクションを可能にすることにより、プロセッサにおけるエンハンストトランザクショナルメモリ実行サポートを提供する。さらに、これは、プログラマーがリソース問題を解決するため、何れか特別な方法によりソフトウェアを書き込むことを必要としないように、透過的に実行される。以降において、「トランザクション」という用語は、アトミック的に実行される命令シーケンスを表す。さらに、トランザクションはまた、上述されたＡＣＩＤプロパティに従うものであってもよい。
【００２２】
説明されるように、本発明の実施例は、プロセッサのトランザクショナルキャッシュ構造にバッファリングできないデータをオーバフローするため、アプリケーションの仮想アドレス空間を利用することによって、トランザクショナルメモリ実行におけるリソース問題を効果的に解決するため、仮想メモリを用いたトランザクショナルメモリ実行サポートに関する。これは、トランザクションのリソース要求がローカルトランザクションキャッシュにより解決可能な通常のケースの大部分に対して、また、データフットプリントサイズがローカルトランザクションキャッシュより大きく、データが処理のため、アプリケーション自体の仮想アドレス空間にオーバフローするあまり通常ではないが、重要なケースに対して、ハードウェアまたはプロセッサのトランザクショナル実行サポートを可能にする。プロセッサの既存のローカルキャッシュはまたトランザクショナルキャッシュとして利用されてもよく、あるいはトランザクショナルキャッシュは独立したハードウェア構成とすることも可能である。
【００２３】
さらに、システムメモリ装置１０５は、本発明の実施例に従う技術を実現するためプロセッサ１０１により実現されるように、仮想メモリを用いるトランザクショナルメモリ（ＴＭ）実行に役立つプログラムを不揮発性メモリに格納する。特に一実施例では、そのようなプログラムは、コンピュータシステム１００の内部において、特に後述されるように、プロセッサのトランザクショナルキャッシュ１２４、物理的メモリ１４０またはページメモリ１４１、仮想メモリ１７０とデータベース１０８との間のトランザクショナルメモリアクセスを可能にすることに用いられる。
【００２４】
物理的メモリ１４０、ページメモリ１４１、仮想メモリ１７０などと共にシステムメモリ装置１０５は、データベース１０８とのメモリトランザクションを実現するのに利用可能である。例えば、データベース１０８は、企業データベース、金融データベース、プロジェクト管理データベース、ディレクトリサービスなどのデータベースや、典型的にはトランザクショナルメモリタイプトランザクションにより利用される他のポインタリッチデータ構造を有するものであってもよい。
【００２５】
さらに、コンピュータシステム１００は、ディスクドライブ、モニタ、キーパッド、モデム、プリンタ、あるいは他の適切なＩ／Ｏ装置などのＩ／Ｏ装置１１３とのインタフェースのための適切なインタフェース１１を有するようにしてもよい。
【００２６】
コンピュータシステム１００は、ローカルエリアネットワーク（ＬＡＮ）、ワイドエリアネットワーク（ＷＡＮ）やインターネットなどのネットワーク１０９とコンピュータシステム１００とのインタフェースのためのネットワークインタフェース１０７を有するようにしてもよい。
【００２７】
図１の基本的なコンピュータシステム構成１００は、後述されるように、仮想メモリｗ用いてトランザクショナルメモリ実行を実現するのに利用可能な１つのタイプのコンピュータシステムの一例である。図１の一例となるコンピュータシステム構成１００は、基本的なコンピュータシステムの単なる一例であり、他の多くのタイプ及び変形が可能であることが、当業者に理解されるべきである。さらに、当業者は図１に示された一例となる環境が本発明の実施例を限定するものではないということを認識するであろう。さらに、単一のコンピュータシステム構成１００に加えて、あるいはその代わりに、コンピュータクラスタまたは他のグループ（コンピュータシステム構成１００と類似、または異なる）が、本発明の実施例を実現するのに利用されてもよい。
【００２８】
図１に示されるように、より詳細には、プロセッサ１０１は、仮想メモリ１７０と共に物理メモリ１４０とページメモリ１４１に格納されているトランザクションアドレステーブル１４５（以降では、ＸＡＴＴと呼ばれる）、ローカルトランザクショナルキャッシュ１２４及び標準的なトランザクション実行機能１２０と共に、トランザクションアドレス変換テーブルウォーカー１３２（以降では、ＸＡＴＴウォーカーと呼ばれる）を用いることによって、仮想メモリ機能１３０を利用したトランザクショナルメモリ（ＴＭ）実行を実現する。さらに、より詳細に後述されるように、仮想メモリ１３０を用いたＴＭ実行はまた、トランザクションアドレス変換キャッシュ１３４（以降では、ＸＡＴＣと呼ばれる）と、コンフリクト検出フィルタ１３６（以降では、ＣＤＦと呼ばれる）を実現してもよい。
【００２９】
プロセッサ１０１は、リソース要求がリクエストされたトランザクションに対してローカルトランザクショナルキャッシュ１２４により満たされることが可能であるとき、ローカルトランザクショナルキャッシュ１２４により動作する標準的なトランザクション実行機能１２０を利用して、標準的なトランザクショナル実行機能１２０を実現するようにしてもよい。しかしながら他のケースでは、トランザクションがローカルトランザクショナルキャッシュより大きなデータリソースを要求するとき、あるいはローカルトランザクショナルキャッシュを超えるパーシスタンスを要求するコンテクストスイッチ（ｃｏｎｔｅｘｔ  ｓｗｉｔｃｈ）などのイベントに直面するとき、データは仮想メモリ１７０を用いたトランザクショナルメモリ実行をシームレスに行うため、対応するアプリケーション１７２の仮想アドレス空間にオーバフローされる。後述されるようにこれは、トランザクションアドレス変換テーブル（ＸＡＴＴ）ウォーカー１３２と、トランザクションアドレス変換テーブル（ＸＡＴＴ）１４５と、仮想メモリ１７０及び物理メモリ１４０の利用の一意的かつ非自明な組み合わせとの組み合わせにより実現される。
【００３０】
一実施例では、プロセッサ１０１は、ローカルトランザクショナルキャッシュ１２４とリソースマネージャ１３１を含む。リソースマネージャ１３１は、要求元のスレッドからのトランザクショナルメモリトランザクション要求１１６に応答して、ローカルトランザクショナルキャッシュがトランザクショナルメモリトランザクション要求を収容可能であるか判断し、収容可能である場合には、ローカルトランザクショナルキャッシュはトランザクショナルメモリトランザクションを実行する。しかしながら、ローカルトランザクショナルキャッシュ１２４がトランザクショナルメモリトランザクション要求を収容できない場合、トランザクショナルメモリトランザクション要求のデータは、要求元スレッドに関するアプリケーションの仮想アドレス空間１７０にオーバフローされる。
【００３１】
図１に示されるように、コンピュータシステム構成１００は、ＸＡＴＴ１４５、新しい物理アドレス（ＰＡｎｅｗ）１５０及びもとの物理アドレス（ＰＡｏｒｉｇ）１５２を有する物理メモリ１４０を有する。ページメモリの実施例１４１では、ＸＡＴＴ１４５がまた利用されてもよい。コンピュータシステム構成１００はまた、アプリケーションのための仮想アドレス空間１７２を実現するための仮想メモリ１７０を有し、仮想アドレス空間１７０は、後述されるように、新しい仮想アドレス（ＶＡｎｅｗ）１７４と、もとの仮想アドレス（ＶＡｏｒｉｇ）１７６を有する。
【００３２】
特にＡＰＩ要求、あるいは他のタイプのプログラムまたはモジュール要求１１６（すなわち、トランザクショナルメモリトランザクションを要求するスレッド）に基づき、プロセッサ１０１は、後述されるトランザクショナルメモリトランザクションを実現するため、仮想メモリを潜在的に利用するトランザクショナルメモリ実行を実行する。例えばこれは、プログラムの現在アクティブなスレッドに対してトランザクショナルにメモリを単に更新するため実行されてもよいし、あるいはデータベース１０８をトランザクショナルに最終的に更新するようにしてもよい。
【００３３】
図２を参照するに、図２は、仮想メモリを用いたトランザクショナルメモリ実行に関する本発明の実施例を実現するためのプロセス２００を示すフロー図である。ブロック２０２において、要求元スレッドからのトランザクショナルメモリトランザクション要求に基づき、プロセス２００は、要求されたトランザクションのリソース要求が、プロセッサのローカルトランザクショナルキャッシュ１２４により収容可能であるか判断する。例えば、リソースマネージャ１３１によりこの判定が実行されてもよい。リソース要求が収容可能である場合、トランザクション実行機能１２０とローカルトランザクショナルキャッシュ１２４を利用するプロセッサ１０１は、要求元スレッドに対してローカルトランザクショナルキャッシュ１２４を用いたトランザクショナルメモリトランザクションを実行する（ブロック２０４）。そうでない場合には、要求元スレッドに対する要求されたトランザクショナルメモリトランザクションのデータは、要求元アプリケーションの仮想アドレス空間１７２にオーバフローされる（ブロック２０６）。このデータオーバフローは、ＸＡＴＴウォーか０１３２を用いて管理される（ブロック２０８）。より詳細に後述されるように、アプリケーション１７２の仮想アドレス空間を利用することにより、トランザクショナルメモリトランザクションがさらに処理可能である。
【００３４】
従って、標準的なトランザクション実行機能は、アプリケーションのスレッドからの要求されたトランザクションのリソース要求がローカルトランザクショナルキャッシュ１２４により収容可能である通常のケースをサポートするのに利用される。
【００３５】
しかしながら、要求されるデータリソースがローカルトランザクショナルキャッシュ１２４のものより大きいとき、データはコピー・オン・ライト（ｃｏｐｙ−ｏｎ−ｗｒｉｔｅ）技術を用いて、仮想メモリ１７０のアプリケーション自体の仮想アドレス空間１７２にオーバフローされる。アプリケーションと同じ仮想アドレス空間においてオーバフロー情報を保持することにより、コンテクストスイッチ、プロセスマイグレーションなどの重要な状況が自動的に処理される。効果的には、ユーザはこのプロセスに関与しない。後述されるように、ページウォーカーと同様に、ＸＡＴＴウォーカー１３２は、ローカルトランザクショナルキャッシュの代わりに、仮想メモリを用いてトランザクショナルメモリトランザクションが実現可能な機構を提供する。
【００３６】
これらのオーバフローを処理するため、２つのコンポーネントが利用される。すなわち、物理メモリ１４０またはページメモリ１４１に格納されるＸＡＴＴ１４５と、プロセッサにより実現されるＸＡＴＴウォーカー１３２である。ＸＡＴＴ１４５は、この機能を実現するようＸＡＴＴウォーカー１３２により処理される。後述されるように、ＸＡＴＴは、ページテーブルが管理されるのと同様に管理され、ＸＡＴＴウォーカー１３２は、ページウォーカーと同様に実現される。ＸＡＴＴウォーカー１３２がプロセッサ１０１により実現されるように示されているが、それはまたソフトウェアサポートによるハイブリッドな方法により実現されてもよい。
【００３７】
図３を参照するに、図３は、本発明の一実施例によるＸＡＴＴ３００の構成図である。上述のように、ＸＡＴＴは物理メモリまたはページメモリに格納されてもよい。さらに、ＸＡＴＴ３００は、対象とされるアプリケーションのアドレスベース内で実行されるすべてのトランザクションに共通なものであってもよいし、あるいはトランザクション単位のものであってもよい。
【００３８】
特に、ＸＡＴＴは、もとの仮想アドレス（ＶＡｏｒｉｇ）３０２、新しい仮想アドレス（ＶＡｎｅｗ）３０６、もとの物理アドレス（ＰＡｏｒｉｇ）３１０、新しい物理アドレス（ＰＡｎｅｗ）３１６及びトランザクションポインタ（ＸＰＴＲ）３２０の５つのフィールドを有する。ＸＡＴＴ３００は、１）オーバフローされたリードセット（例えば、トランザクションで読み出されたブロックなど）の追跡と、２）オーバフローされたライトセット（たとえば、トランザクションで書き込まれたブロックなど）とそれらの変換されたアドレスの追跡との２つの主要な機能を実行する。ここで、ＸＡＴＴ３００は、単一構造であってもよいし、あるいはいくつかの個別の構成に分割されていてもよい。ＸＡＴＴ自体は、変換されたアドレスに対応するデータを格納するのに利用されてもよい。
【００３９】
図４を参照するに、図４は、本発明の一実施例による新しい仮想アドレスと物理アドレスを取得するためのプロセス４００を示す。もとの仮想アドレス（ＶＡｏｒｉｇ）は、典型的には、オーバフローされるデータブロックのキャッシュブロック整列されたアドレスである。オーバフローがトリガーされると、新しい仮想アドレス（ＶＡｎｅｗ）がこの新しい仮想アドレスに対応するよう（それ自体の新しい物理アドレス（ＰＡｎｅｗ）に）割当てられる。
【００４０】
特に図４に示されるように、ブロック４０２において、プロセス４００は、オーバフローが検出されたか判断する。検出されない場合、標準的な処理が実行される（ブロック４０４）。しかしながら、オーバフローが検出される場合、新しい仮想アドレス（ＶＡｎｅｗ）がもとの仮想アドレス（ＶＡｏｒｉｇ）に対応して割当てられる。さらにブロック４０８において、新しい物理アドレス（ＰＡｎｅｗ）が、もとの物理的アドレス（ＰＡｏｒｉｇ）に対応して割当てられる。
【００４１】
ＶＡｎｅｗは、プロセッサやランタイムライブラリにより動的割当てがされてもよいし、あるいは、コンピュータシステム設定によってアドレス空間実現が処理される方法に依存して、コンパイラによってコンパイル時に静的割当てがなされてもよい。もとの仮想アドレス（ＶＡｏｒｉｇ）は、既存の仮想メモリ管理機構を用いて取得される。新しい仮想アドレス（ＶＡｎｅｗ）は、アプリケーション自体のアドレス空間に属する。新しい仮想アドレスは、ＸＡＴＴ自体の一部であってもよい。
【００４２】
もとの仮想アドレス（ＶＡｏｒｉｇ）３０２、新しい仮想アドレス（ＶＡｎｅｗ）３０６、もとの物理アドレス（ＰＡｏｒｉｇ）３１０、新しい物理アドレス（ＰＡｎｅｗ）３１６の値と共に、トランザクションアクションポインタ３２０の値もまた（より詳細に後述される）、ＸＡＴＴ３００に入れられ、物理メモリ１４０及び／またはページメモリ１４１に格納される。
【００４３】
ＸＡＴＴ３００は、２つの方法により実現可能である。一実施例では、ＸＡＴＴは、アプリケーション内のトランザクション単位により実現される。このように実現されると、各トランザクションは、それ自体の一意的な新しい物理アドレスの値（ＰＡｎｅｗ）を有する。これにより、トランザクションは他の何れのトランザクションと干渉することなく、オーバフローされたブロックに対する変更を一時的に更新することが可能となる。ＰＡｎｅｗは、処理中のトランザクションに対してのみ参照可能である。このアプローチは複数のコピー更新を可能にするが、もとの物理アドレス（ＰＡｏｒｉｇ）は、トランザクションがコミットする場合、新しい物理アドレスの値（ＰＡｎｅｗ）により更新される必要がある。これは、ＸＡＴＴウォーカー１３２がコミットトランザクションをトリガーすることにより発生する。
【００４４】
他の実施例では、ＸＡＴＴ３００は、アプリケーション内のすべてのトランザクションに共通に実現されてもよい。この手法では、新しい物理アドレス（ＰＡｎｅｗ）は、すべてのトランザクションに共通している。従って、１つの物理的位置のみが任意の時点で与えられたオーバフローブロックに対して書き込む可能であるため、正確な値が参照可能となることを保証するのにコピー更新は必要でない。さらに、すべてのトランザクションは、直近に更新されたデータを取得した物理アドレスを自動的に認識する。
【００４５】
トランザクションポインタ（ＸＰＴＲ）３２０は、あるオーバフローされたブロックを現在所有しているトランザクションのヘッダデータ構造をポインタ指定する。特に、より詳細に説明されるように、ＸＰＴＲ３２０は、実行中（ｒｕｎｎｉｎｇ）、終了（ａｂｏｒｔｅｄ）またはコミット済（ｃｏｍｉｔｔｅｄ）のモードの１つに設定される。ブロックを所持するトランザクションの状態は、ＸＰＴＲをクエリすることにより取得される。トランザクションヘッダの「状態」がそれを終了するよう設定されている場合、バルクスカッシュ（ｂｕｌｋ−ｓｑｕａｓｈ）が実行されてもよい。その後、終了したものはＸＰＴＲをそれ自体にポインタ指定することが可能である。
【００４６】
オーバフロートランザクションがコミットする前、ＸＰＴＲ３２０が依然として当該トランザクションを所有していることを確認するため、ＸＰＴＲ３２０をチェックすることが要求される。それのポインタがそれを終了するよう設定されている場合、当該トランザクションは再試行される必要がある。終了されていない場合、それの状態はコミット済に自動的に設定される。このことは、以前のトランザクションがコミットされているという点で、他のスレッドが入力されていることを示している。テーブルは、定期的にクリーンアップされてもよい。ＸＰＴＲ３２０は、オーバフローされたブロックによりトランザクションをアトミック的にコミットまたは終了させる機能を提供する。
【００４７】
グローバルまたはプライベートＸＡＴＴが使用されるとき、ＸＰＴＲ３２０は常にトランザクションヘッダをポインタ指定する。各トランザクションのヘッダは、トランザクショナルメモリ装置によりアクセス可能である。これにより、トランザクションヘッダ状態を終了に設定することにより、アクティブなトランザクションがスワップされたトランザクションでさえ終了することを可能にする。
【００４８】
図５を参照するに、図５は、本発明の一実施例による仮想トランザクションメモリ（ＶＴＭ）トランザクションなどの仮想メモリを利用したトランザクショナルメモリトランザクションを実行しながら、トランザクションのスレッドに可能な各種状態の一例を示す図である。さらに前述のように、ＶＴＭ状態がトランザクションためＸＡＴＴのＸＰＴＲに格納されてもよい。
【００４９】
例えば、ＸＰＴＲ３２０のＶＴＭ状態は、実行中に設定されてもよい（５０２）。「実行中」との状態は、実行中の終了状態がわかっていないトランザクションを表す。他方、ＶＴＭ状態は、終了に設定されてもよい（５０４）。状態が終了に設定される場合、それはトランザクションが強制的に終了されたという事実を表す。この終了状態は、オーバフローのケースでは、「即座の」破棄が可能ではないため、トランザクションが最終的に終了されるまで時間があることから必要とされる。
【００５０】
あるいは、ＸＰＴＲ３２０のＶＴＭ状態がコミット済に設定されるかもしれない（５０６）。コミット済の状態はトランザクションの実行が成功したことを意味する。コミット済の状態は、「即座の」更新が可能ではないため、トランザクション状態が最終的にコミットされるまでには時間がある。さらに、ＶＴＭ状態は、トランザクションがアクティブであるか（５０８）、あるいはスワップされたか（５１０）否かを記述する。アクティブ状態５０８は、トランザクションがプロセッサ上で現在実行されていることを示す。他方、スワップ状態５１０は、トランザクションがコンテキスト・スイッチアウトされたことを示す。
【００５１】
他のＶＴＭ状態は、ローカル状態５１２またはオーバフロー状態５１４を含む。ローカル状態５１２は、ローカルハードウェアバッファリングが、トランザクションを完了させるのに十分であることを示す。他方、オーバフロー状態５１４は、トランザクションがローカルハードウェアバッファリングスペース（例えば、ローカルトランザクションキャッシュ１２４など）を使い果たし、仮想メモリ（仮想メモリ１７０など）がトランザクショナルメモリトランザクションを完了させるのに利用される。
【００５２】
図６を参照するに、図６は、本発明の一実施例によるトランザクションメモリトランザクションがオーバフロー要求を生成する方法に関するプロセス６００を示すフロー図である。ここで、スレッドに関するトランザクションは要求自体を生成するか、あるいは、スレッドに関する他のトランザクションから要求を受信するようにしてもよいということが理解される。
【００５３】
まずブロック６０２において、ＸＡＴＴウォーカーは、トランザクションがＸＡＴＴをウォークすることによりオーバフローしたか判断する。上述のように、ＸＰＴＲはローカルまたはオーバフロー状態を含む。オーバフローしていない場合、ブロック６０４において、当該プロセスは終了される。しかしながら、トランザクションがオーバフローした場合、プロセス６００はブロック６０６において、もとの仮想アドレス（ＶＡｏｒｉｇ）がオーバフローし、マッピングされたか判断する。オーバフローされていない場合、新しい仮想アドレスと物理アドレス（ＶＡｎｅｗ及びＰＡｎｅｗ）が割当てられる（ブロック６０８）。ＸＡＴＴウォーカーは、ＸＡＴＴテーブルをウォークしてそれを適切に更新する。何れの場合でも、ブロック６１０において、ＶＡｎｅｗとＰＡｎｅｗの値が取得される。ＰＡｏｒｉｇを用いて、コヒーレンシが維持される。しかしながら、トランザクションは、ライトを実行するとＰＡｎｅｗを更新する。それは他のすべてのトランザクションが知っているアドレスであるため、コンフリクト検出がＰＡｏｒｉｇを用いて実行される（一意的なＸＡＴＴが利用されると仮定すると）。
【００５４】
ＸＡＴＴウォーカーはまた、ＶＡｏｒｉｇにマッピングされた他のトランザクションがないことを保証する。ＶＡｏｒｉｇエントリがない場合、新しいエントリがブロック６２０においてインストールされる。特に、ＶＡｎｅｗとＰＡｎｅｗがＸＡＴＴに入れられる。しかしながら、もとの仮想アドレスエントリが存在する場合、ブロック６１８において、プロセス６００は、現在のトランザクションが待機すべきか、あるいは前のトランザクションがＸＡＴＴのＸＰＴＲの状態に基づき終了されるべきか判断する。何れの場合でも、ＸＡＴＴにＶＡｎｅｗとＰＡｎｅｗが入れられる。ＸＡＴＴウォーカーがこれらのアクションを行い、ＸＰＴＲを直接実行することにより、これを行うことができる。
【００５５】
図７を参照するに、図７は、本発明の一実施例によるトランザクションをコミットするためのプロセス７００を示すフロー図である。特に、オーバフロートランザクションのコミット前、ＸＰＴＲをチェックしてそれが現在のトランザクションにより依然として所有されているか確認すべきである（例えば、それが依然としてアクティブであり、スワップされていないか確かめるためチェックすることにより）（ブロック７０２）。次にブロック７０４において、プロセス７００は、ＸＰＴＲが「終了」に設定されているか確認するためチェックすべきである。終了に設定されている場合、ブロック７１０においてトランザクションは終了される。他方、ポインタが終了に設定されていない場合、トランザクションはアトミック的にコミット済に設定されるべきである。従って、ＸＰＴＲは、オーバフローしたブロックに対するトランザクションをアトミック的にコミットまたは終了する機能を提供する。トランザクショナルメモリトランザクションがコミットされる場合、トランザクショナルメモリトランザクションは、ローカルトランザクショナルキャッシュに加えて、またはそれに代わってアプリケーション仮想アドレス空間を利用して実行される。
【００５６】
図８を参照するに、図８は、本発明の一実施例による入力要求にオーバフローしたトランザクションがどのように応答するかに関するプロセス８００を示すフロー図である。ブロック８０２において、オーバフロートランザクションに対する入力された要求が受信される。この入力された要求は、通常実行中は他のトランザクションにより、またコンフリクトが検出され、オーバフロートランザクションが実際にコミットされたときにはＸＡＴＴウォーカーにより生成されてもよい。これらのケースは共に同様のアクションを要する。従って、入力した要求の処理が通常実行中に他のトランザクションスレッドにより生成される場合、入力要求がオーバフロートランザクションにより受信されると、ブロック８０４において、オーバフロートランザクションは当該入力要求がローカルアドレスまたはオーバフローされたアドレスに一致するか判断する。それがローカルアドレスである場合には、ブロック８１０において、トランザクションはローカルトランザクションキャッシュを利用するプロセッサによりローカルに処理される。
【００５７】
しかしながら、それがオーバフローされたアドレスであると判定されると、ブロック８１２において、ＸＡＴＴはそれがオーバフローされたトランザクションであることを保証するため、ＸＡＴＴウォーカーによりウォークされる。その後ブロック８１４において、ＸＡＴＴウォーカーは、一致を判断するためＸＡＴＴをウォークする。一致が検出されない場合、ブロック８１６においてコンフリクトが存在しないということが宣言され、ブロック８１８において要求されたトランザクションが実行される。しかしながら、一致がある場合、ＸＡＴＴウォーカーはそれのトランザクションを終了するか、あるいは優先度に応じてコンフリクトするトランザクションに終了を通知する（ブロック８２０）。
【００５８】
上述のように、オーバフローしたトランザクションのコミットに関して、ＸＡＴＴウォーカーはまず、ＸＰＴＲのＸＡＴＴエントリが更新されていることを確実にする。トランザクションヘッダのデータ構造を更新することにより、すべての適切なオーバフローされたブロックに対するＸＡＴＴにおける対応するすべてのエントリが、アトミック的にコミットされる。これが成功するときのみ、バッファリングされているローカルハードウェアブロック（オーバフローされていない）がコミットされる。この２つの処理のコミットは、ローカルハードウェアコミットとオーバフローされたソフトウェアコミットが同期されていることを確実にする。
【００５９】
オーバーフローは比較的通常のものではないため、ＸＡＴＴウォーカーによるＸＡＴＴのウォークのパフォーマンスのペナルティは、ごくわずかなものである。また、プロセスマイグレーション、タイマ中断及びコンテクストスイッチは、ローカルにバッファリングされた非オーバフローブロックのすべてを強制的にＸＡＴＴにオーバフローすることにより処理可能である。
【００６０】
図１を参照するに、ＸＡＴＣ（Ｔｒａｎｓａｃｔｉｏｎ  Ａｄｄｒｅｓｓ  Ｔｒａｎｓｌａｔｉｏｎ  Ｃａｃｈｅ）１３４とＣＤＦ（Ｃｏｎｆｌｉｃｔ  Ｄｅｔｅｃｔｉｏｎ  Ｆｉｌｔｅｒ）１３６は効率性を向上させるのに利用され、上述されたように、本発明の実施例による仮想メモリを用いるトランザクショナルメモリ実行と共に利用されるとき、迅速なトランザクション変換とトランザクション間のコンフリクト管理を提供する。
【００６１】
一実施例では、ＸＡＴＣ１３４は、変換の決定をスピードアップするため、オーバフローされたアドレス変換をキャッシュ処理するのに利用可能である。特に、ＸＡＴＣ１３４は、アドレスやＸＰＴＲなどのＸＡＴＴ（Ｔｒａｎｓｌａｔｉｏｎ  Ａｄｄｒｅｓｓ  Ｔｒａｎｓｌａｔｉｏｎ  Ｔａｂｌｅ）の一部をキャッシュ処理する。これは、ページテーブルに対してＴＬＢ（Ｔｒａｎｓｌａｔｉｏｎ  Ｌｏｏｋａｓｉｄｅ  Ｂｕｆｆｅｒ）が果たす役割と同様である。
【００６２】
より詳細には、プロセッサトランザクションがオーバフローしたとき、アドレス実行中にプロセッサはＸＡＴＣ１３４を検索し、１）アドレスが以前にリマップされているか、２）新しい変換が必要であるか、判断する。もとの物理アドレスと新しいアドレスの両方に対して、コヒーレンス動作が呼び出される。ＸＡＴＣ１３４は、ＸＡＴＴへのウォークの必要性を最小化する。しかしながら、コンテクストスイッチでは、ＸＡＴＣ１３４は無効とされる。
【００６３】
さらに、ＣＤＦ（Ｃｏｎｆｌｉｃｔ  Ｄｅｔｅｃｔｉｏｎ  Ｆｉｌｔｅｒ）１３６はまた、入力された要求がアドレスとコンフリクトするか、あるいは要求元が他のトランザクションとコンフリクトするかの判断をスピードアップするのに利用されてもよい。ＣＤＦ１３６は、オーバフローしたアドレスを粗く追跡する。ＣＤＦ１３６はまた、スワップアウトされたトランザクションに属するアドレスを追跡する。従って、ＣＤＦ１３６はスワップされたトランザクションを含むすべてのトランザクションに共通なものである。これは、スワップされたトランザクションがアクティブに実行されているトランザクションではなく、コンフリクト発生しているか自ら判断することができないために必要とされる。当該要求を生成するトランザクションは、ＣＤＦ１３６に対するチェックを行い、スワップされたトランザクションがＸＡＴＴにおいてリマップされたアドレスを有しているか判断する。そうすることにより、要求が生成されるたびにＸＡＴＴをウォークする必要がなくなるかもしれない。
【００６４】
ＣＤＦ１３６を実現する１つの方法は、Ｂｌｏｏｍフィルタの概念を拡張することによるものである。ＣＤＦ１３６は、最大となるカウンタ値がオーバフロー可能なトランザクションまたはロケーションの最大数となるカウンタアレイとして実現されてもよい。アドレスがオーバフローされることを示すために、ＰＡｏｒｉｇがハッシュ関数ｈ１，．．．，ｈｋによりハッシュ処理され、ＣＤＦ１３６のこれらのカウンタがインクリメントされる。当該アドレスを削除するため、同一のカウンタがデクリメントされる。アドレスが存在するかテストするため、これらのカウンタがテストされ、そのすべてが非零であるか判断される。その場合、潜在的なコンフリクトが検出されたこととなる。
【００６５】
ＣＤＦ１３６とＸＡＴＣ１３４の双方がパフォーマンスのためリソースをトレードする。すなわち、大きなキャッシュはリソースを占有するが、変換をスピードアップする一方、大きなフィルタハ小さいフィルタより偽陽性を生じさせない。このフレキシビリティは、同一の構造がリソースリッチ及びリソースプアなプラットフォームの両方で利用可能であることを意味する。
【００６６】
本発明の実施例とその各種機能コンポーネントが特定の実施例において説明されたが、本発明の実施例が、ハードウェア、ソフトウェア、ファームウェア、ミドルウェアまたはそれらの組み合わせにより実現され、システム、サブシステム、コンポーネントまたはサブコンポーネントにおいて利用可能であるということは理解されるであろう。ソフトウェアまたはファームウェアで実現されるとき、本発明の要素は、必要なタスクを実行するための命令／コードセグメントである。プログラムまたはコードセグメントは、マシーン可読媒体（例えば、プロセッサ可読媒体やコンピュータプログラムプロダクツなど）に格納可能であるか、あるいは搬送波において実現されるコンピュータデータ信号、キャリアにより変調される信号によって送信媒体や通信リンクを介し送信することが可能である。マシーン可読媒体は、マシーン（プロセッサ、コンピュータなど）により可読で実行可能な形式により情報を格納または転送することができる任意の媒体を含むものであってもよい。マシーン可読媒体の例には、電子回路、半導体記憶装置、ＲＯＭ、フラッシュメモリ、ＥＰＲＯＭ（Ｅｒａｓａｂｌｅ  Ｐｒｏｇｒａｍｍａｂｌｅ  ＲＯＭ）、フロッピー（登録商標）ディスケット、コンパクトディスクＣＤ−ＲＯＭ、光ディスク、ハードディスク、光ファイバ媒体、無線周波数（ＲＦ）リンクなどが含まれる。コンピュータデータ信号には、電子ネットワークチャネル、光ファイバ、空気、電磁気、ＲＦリンク、バーコードなどの送信媒体を介し伝搬可能な任意の信号が含まれてもよい。コードセグメントは、インターネット、イントラネットなどのネットワークを介しダウンロード可能である。
【００６７】
さらに、本発明の実施例が例示された実施例を参照することにより説明されたが、これらの説明は限定的なものと解釈されるべきではない。本発明が属する技術分野の当業者には明らかな例示された実施例の様々な変更や本発明の他の実施例は、本発明の趣旨及び範囲内に属するものとみなされる。
【符号の説明】
【００６８】
１００  コンピュータシステム構成
１０１  プロセッサ（ＣＰＵ）
１０３  チップセット
１０５  システムメモリ装置
１０７  ネットワークインタフェース
１０８  データベース
１０９  ネットワーク
１１１  インタフェース
１１３  入出力装置
１２０  標準トランザクション実行機能
１２４  トランザクショナルキャッシュ
１３０  仮想メモリ機能
１３２  ＸＡＴＴウォーカー
１３４  ＸＡＴＣ
１３６  ＣＤＦ
１４０  物理メモリ
１４１  ページメモリ
１７０  仮想メモリ
【図１】
0005425551.tif 000002
【図２】
0005425551.tif 000003
【図３】
0005425551.tif 000004
【図４】
0005425551.tif 000005
【図５】
0005425551.tif 000006
【図６】
0005425551.tif 000007
【図７】
0005425551.tif 000008
【図８】
0005425551.tif 000009