(57)【要約】  本発明の実施形態は、コンピュータシステムにおけるトランザクショナルなメモリアクセスのハイブリッドハードウェア・ソフトウェア実現に関する。トランザクショナルキャッシュ及びレギュラーキャッシュを含むプロセッサが、トランザクショナルなメモリアクセスを実現するために第１のモード（ハードウェアモード）又は第２のモード（ソフトウェアモード）のうちの一方を選択するポリシマネージャを含むコンピュータシステムにおいて利用される。ハードウェアモードでは、メモリ読出し動作及びメモリ書込み動作を実行するためにトランザクショナルキャッシュが利用され、ソフトウェアモードでは、メモリ読出し動作及びメモリ書込み動作を実行するためにレギュラーキャッシュが利用される。【選択図】図１
2008515055.tif 000002
【特許請求の範囲】
【請求項１】
トランザクショナルキャッシュ及びレギュラーキャッシュを含むプロセッサと、
トランザクショナルなメモリアクセスを実現するために第１のモード又は第２のモードのうちの一方を選択するポリシマネージャと
を具備する装置であって、
前記第１のモードでは、メモリ読出し動作及びメモリ書込み動作を実行するために前記トランザクショナルキャッシュが利用され、前記第２のモードでは、メモリ読出し動作及びメモリ書込み動作を実行するために前記レギュラーキャッシュが利用される、装置。
【請求項２】
前記ポリシマネージャは、前記トランザクショナルキャッシュにおいてトランザクショナルな読出し命令及び書込み命令を使用して読出し動作及び書込み動作を実行するように前記第１のモードを選択する、請求項１に記載の装置。
【請求項３】
前記トランザクショナルキャッシュにおいて、前記読出し動作及び前記書込み動作を実行するために十分なメモリ資源が存在する場合、前記トランザクショナルなメモリアクセスを完了するためにコミット命令が発行される、請求項２に記載の装置。
【請求項４】
競合するトランザクショナルな読出し動作及び書込み動作が検出される場合、アボート命令が発行される、請求項２に記載の装置。
【請求項５】
前記トランザクショナルキャッシュに不十分なメモリ資源が検出される場合、アボート命令が発行される、請求項２に記載の装置。
【請求項６】
前記第１のモードに対してアボート命令が発行される場合、前記ポリシマネージャは前記第２のモードを選択し、そこでは、前記レギュラーキャッシュにおいて通常の（regular）読出し命令及び書込み命令を使用して通常の読出し動作及び書込み動作が実行される、請求項５に記載の装置。
【請求項７】
前記第２のモードで動作している時、競合する書込みトランザクションが検出される場合、アボート命令が発行される、請求項６に記載の装置。
【請求項８】
競合する書込みトランザクションが検出されない場合、前記メモリアクセスを完了するためにコミット命令が発行される、請求項６に記載の装置。
【請求項９】
トランザクショナルなメモリアクセスを実現するために第１のモード又は第２のモードのうちの一方を選択すること、
前記第１のモードにおいてトランザクショナルキャッシュを利用してメモリ読出し動作及びメモリ書込み動作を実行すること、並びに
前記第２のモードにおいてレギュラーキャッシュを利用してメモリ読出し動作及びメモリ書込み動作を実行すること
を含む方法。
【請求項１０】
前記第１のモードを選択すること、並びに
トランザクショナルな読出し命令及び書込み命令を使用して前記トランザクショナルキャッシュにおいて読出し動作及び書込み動作を実行すること
をさらに含む、請求項９に記載の方法。
【請求項１１】
前記トランザクショナルキャッシュにおいて、前記読出し動作及び前記書込み動作を実行するために十分なメモリ資源が存在する場合、前記トランザクショナルなメモリアクセスを完了するためにコミット命令を発行することをさらに含む、請求項１０に記載の方法。
【請求項１２】
競合するトランザクショナルな読出し動作及び書込み動作が検出される場合、アボート命令を発行することをさらに含む、請求項１０に記載の方法。
【請求項１３】
前記トランザクショナルキャッシュに不十分なメモリ資源が検出される場合、アボート命令を発行することをさらに含む、請求項１０に記載の方法。
【請求項１４】
前記第１のモードにおいてアボート命令が発行される場合、
前記第２のモードを選択すること、並びに
通常の読出し命令及び書込み命令を使用して前記レギュラーキャッシュにおいて通常の読出し動作及び書込み動作を実行すること
をさらに含む、請求項１３に記載の方法。
【請求項１５】
前記第２のモードで動作している間、競合する書込みトランザクションが検出される場合、アボート命令を発行することをさらに含む、請求項１４に記載の方法。
【請求項１６】
競合する書込みトランザクションが検出されない場合、前記メモリアクセスを完了するコミット命令を発行することをさらに含む、請求項１４に記載の方法。
【請求項１７】
命令が格納されている機械可読媒体であって、該命令は、機械によって実行されると、該機械に対し
トランザクショナルなメモリアクセスを実現するために第１のモード又は第２のモードのうちの一方を選択すること、
前記第１のモードにおいてトランザクショナルキャッシュを利用してメモリ読出し動作及びメモリ書込み動作を実行すること、並びに
前記第２のモードにおいてレギュラーキャッシュを利用してメモリ読出し動作及びメモリ書込み動作を実行すること
を含む動作を実行させる、機械可読媒体。
【請求項１８】
前記機械に対し、
前記第１のモードを実現すること、並びに
トランザクショナルな読出し命令及び書込み命令を使用して前記トランザクショナルキャッシュにおいて読出し動作及び書込み動作を実行すること
を含む動作を実行させる命令をさらに具備する、請求項１７に記載の機械可読媒体。
【請求項１９】
前記機械に対し、前記トランザクショナルキャッシュにおいて前記読出し動作及び前記書込み動作を実行するために十分なメモリ資源が存在する場合に、前記トランザクショナルなメモリアクセスを完了するコミット命令を発行する動作を実行させる命令をさらに具備する、請求項１８に記載の機械可読媒体。
【請求項２０】
前記機械に対し、競合するトランザクショナルな読出し動作及び書込み動作が検出される場合にアボート命令を発行する動作を実行させる命令をさらに具備する、請求項１８に記載の機械可読媒体。
【請求項２１】
前記機械に対し、前記トランザクショナルキャッシュにおいて不十分なメモリ資源が検出される場合にアボート命令を発行する動作を実行させる命令をさらに具備する、請求項１８に記載の機械可読媒体。
【請求項２２】
前記第１のモードにおいてアボート命令が発行される場合、前記機械に対し、
前記第２のモードを選択する動作と、
通常の読出し命令及び書込み命令を使用して前記レギュラーキャッシュにおいて通常の読出し動作及び書込み動作を実行する動作と
を実行させる命令をさらに具備する、請求項２１に記載の機械可読媒体。
【請求項２３】
前記第２のモードで動作している間、前記機械に対し、競合する書込みトランザクションが検出される場合にアボート命令を発行する動作を実行させる命令をさらに具備する、請求項２２に記載の機械可読媒体。
【請求項２４】
前記機械に対し、競合する書込みトランザクションが検出されない場合に前記メモリアクセスを完了するコミット命令を発行する動作を実行させる命令をさらに具備する、請求項２２に記載の機械可読媒体。
【請求項２５】
トランザクショナルキャッシュ及びレギュラーキャッシュを含むプロセッサと、
データベースのメモリにアクセスするアプリケーションプログラムインタフェース（ＡＰＩ）要求に応じてトランザクショナルなメモリアクセスを実現するために第１のモード又は第２のモードのうちの一方を選択するポリシマネージャと
を具備するコンピュータシステムであって、
前記第１のモードでは、メモリ読出し動作及びメモリ書込み動作を実行するために前記トランザクショナルキャッシュが利用され、前記第２のモードでは、メモリ読出し動作及びメモリ書込み動作を実行するために前記レギュラーキャッシュが利用される、コンピュータシステム。
【請求項２６】
前記ポリシマネージャは、前記トランザクショナルキャッシュにおいてトランザクショナルな読出し命令及び書込み命令を使用して読出し動作及び書込み動作を実行するように前記第１のモードを選択する、請求項２５に記載のコンピュータシステム。
【請求項２７】
前記トランザクショナルキャッシュにおいて、前記読出し動作及び前記書込み動作を実行するために十分なメモリ資源が存在する場合、前記トランザクショナルなメモリアクセスを完了するためにコミット命令が発行される、請求項２６に記載のコンピュータシステム。
【請求項２８】
競合するトランザクショナルな読出し動作及び書込み動作が検出される場合、アボート命令が発行される、請求項２６に記載のコンピュータシステム。
【請求項２９】
前記トランザクショナルキャッシュに不十分なメモリ資源が検出される場合、アボート命令が発行される、請求項２６に記載のコンピュータシステム。
【請求項３０】
前記第１のモードに対してアボート命令が発行される場合、前記ポリシマネージャは前記第２のモードを選択し、そこでは、前記レギュラーキャッシュにおいて通常の読出し命令及び書込み命令を使用して通常の読出し動作及び書込み動作が実行される、請求項２９に記載のコンピュータシステム。
【請求項３１】
前記第２のモードで動作している時、競合する書込みトランザクションが検出される場合、アボート命令が発行される、請求項３０に記載のコンピュータシステム。
【請求項３２】
競合する書込みトランザクションが検出されない場合、前記メモリアクセスを完了するためにコミット命令が発行される、請求項３０に記載のコンピュータシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施の形態は、トランザクショナルメモリ（transactional memory）の技術分野に関する。より詳細には、本発明の実施の形態は、トランザクショナルなメモリアクセスのハイブリッドハードウェア・ソフトウェア実現に関する。
【背景技術】
【０００２】
トランザクショナルメモリサービスは、アプリケーション、プログラム、モジュール等、特にアプリケーションプログラムインタフェース（ＡＰＩ）が原子的な方法、一貫した方法及び隔離した方法でメモリにアクセスすることを可能にする。例えば、トランザクショナルメモリは、データベースサービス及びディレクトリサービス等のパーシスタントポインタリッチデータ構造を管理するランタイムエンジンの一部として使用され得る。
【０００３】
ＡＰＩは、オペレーティングシステムやデータベースマネージメントシステム（ＤＢＭＳ）等のシステムプログラムと通信するため、アプリケーション、プログラム、モジュール等により利用される言語又はメッセージフォーマットとみなすことができる。ＡＰＩは、ファンクションコールをプログラムに書き込むことにより実現可能であり、実行のための具体的なサブルーチンへのリンクを提供する。このように、ＡＰＩは、何らかのプログラムモジュール又はルーチンが、ファンクションコールによって要求されるタスクを実行するためにすでに所定位置にあるか又はリンクされていることを示す。
【０００４】
トランザクションナルメモリにより、パラレルなプログラムを書き込むことが容易になり、トランザクションメモリを使用することにより、個々のスレッドが同時に進行することが可能になり、それにより極めて高い処理効率が得られる。しかしながら、目下プログラマは、トランザクショナルメモリを利用する際に困難な選択をしなければならない。
【０００５】
１つの選択は、トランザクショナルメモリアプリケーションプログラムインタフェース（ＡＰＩ）のハードウェアのみの実現を使用することであり、その場合、プログラマは、プログラムのハードウェア資源要件を追跡し続け、それらが利用可能なハードウェア資源を超えないことを確実にする責任がある。トランザクショナルメモリ（以下、ＴＭ）の適用性及び有用性は、この手法の下では制限される。他の選択は、プログラムすることが容易である（実際的に資源の制限がないため）ＴＭ  ＡＰＩのソフトウェアのみの実現を使用することであるが、ソフトウェア手法には、高い実行時間オーバヘッドがある。
【０００６】
トランザクショナルメモリ（ＴＭ）をより詳細に見ると、ＴＭは、データベーストランザクションから導出される。データベースでは、トランザクションは、ＡＣＩＤプロパティと呼ばれる４つのプロパティを満足させなければならない動作群である。第１のＡＣＩＤプロパティは原子性である。原子性は、データベーストランザクションがオール・オア・ナシングに実行されることを要求する。トランザクションは、プログラムがアボートするためか又はエラーによってアボートされる可能性がある。原子性は、トランザクションの動作のすべてが実行されるか、又はそれらのいずれも実行されないことを要求する。第２のＡＣＩＤプロパティは、一貫性である。一貫性は、トランザクションが実行される前にデータベースが一貫した状態である場合、データベースが一貫した状態のままであるべきことを要求する。第３のＡＣＩＤプロパティは、隔離性（isolation：アイソレーション）である。隔離性プロパティは、実行されるべきすべてのトランザクションがある種の逐次的順序で行われるように見えなければならない（すなわち、それらは直列可能であるべきである）ことを示す。ＡＣＩＤの下にあるために必要な最後の且つ第４のプロパティは耐久性である。耐久性は、トランザクションがマシンクラッシュを切り抜けることを要求する。すなわち、トランザクションは、コミットされることが可能になる前に、安定記憶装置（たとえばディスク）に書き込まれなければならない。しかしながら、ＴＭのすべての実現が、トランザクションが上述した４つのプロパティのすべてを満足させるよう要求するとは限らない、ということが留意されるべきである。たとえば、実現によっては、耐久性は要件ではない。
【０００７】
上述したＡＣＩＤプロパティのすべて又は一部に準拠する以外、トランザクショナルメモリを利用するトランザクション及びデータベースは、同時実行、無デッドロック性及び非ブロッキングプロパティをサポートすることが要求されることが多い。通常、競合しないトランザクションの同時実行は、トランザクショナルメモリシステムによってサポートされる。データベース実現によっては、これらの種類のトランザクションを実現するためにロック（たとえば２位相ロック）を使用する。したがって、これらの場合、デッドロックが発生する可能性がある。トランザクショナルメモリシステムでは、無デッドロック性は、デッドロックを検出すると、単にトランザクションのうちのいくつかをアボートすることによりデッドロックから回復することによって実現される。トランザクショナルメモリシステムにおいてスレッドが他のスレッドの進行を妨げないようにするために、非ブロッキング又は無障害性プロパティが要求される。
【０００８】
これまで、アプリケーションプログラムインタフェース（ＡＰＩ）を利用してトランザクショナルなメモリアクセスを実現する２つの一般的な手法があった。一方は、純粋にハードウェアの実現であり、他方は、純粋にソフトウェアの実現である。ハードウェア実現は、Transactional Memory: Architectural Support for Lock-Free Data Structure（Maurice Herlihy、J. Eliot B. Moss著「Transactional Memory: Architectural Support for Lock-Free Data Structures」（International Society for Computers and Their Application, (ISCA) 1993: 289-300））に示されるようなマルチプロセッサアーキテクチャに基づく。この手法を、以下、純ハードウェア手法と呼ぶ。
【０００９】
純ハードウェア手法は、効率的且つ使用が容易なロックを用いない（lock-free）同期方法を提供する。純ハードウェア手法では、通常ロックベースの同期方法に関連する優先順位の逆転、コンボイ現象及びデッドロックがないことを保証することに加えて、パラレルプログラミングに関連する微妙な正確性（subtle correctness）の問題の多くが回避される。
【発明の開示】
【発明が解決しようとする課題】
【００１０】
不都合なことに、純ハードウェア手法では、プログラマによる注意深い資源管理が必要である。したがって、純ハードウェア手法は、多種多様のより高度なプロセッサ構造で実現することが非常に困難である。通常、ソフトウェアは、プロセッサ実現を越えて移植性があることが必要であり、アプリケーションレベルにおけるこうした資源の注意深い調整により、純ハードウェア手法の使用が制限される。さらに、動作時、純ハードウェア手法は、トランザクショナルメモリにおけるトランザクションキャッシュしか利用せず、このように資源が制限されるため、プロセススレッドは完了することが保証されず、プログラム誤動作がもたらされる。
【００１１】
ＡＰＩによるトランザクショナルなメモリアクセスを利用する別の一般的な手法は、たとえば、Software Transactional Memory for Dynamic-Sized Data Structures（Maurice Herlihy、Victor Luchangco、Mark Moir、William N. Scherer III著「Software Transactional Memory for Dynamic-Sized Data Structures」（Principles of Distributed Computing (PODC) 2003））において示されているように、純粋にソフトウェアの手法を利用することによる。この手法を、以下、純ソフトウェア手法と呼ぶ。純ソフトウェア手法の能力は、プログラマが、トランザクショナルメモリセマンティクスを提供するために採用される特定の技法に完全に気付かなくてもよく、ＡＰＩは特にプログラムが容易である、ということである。不都合なことに、動作時、純ソフトウェア手法の技法では、ソフトウェアオーバヘッドによって著しい減速がもたらされる。
【発明を実施するための最良の形態】
【００１２】
以下の記載において、本発明の様々な実施形態が詳細に説明される。しかしながら、そのような詳細は、本発明の理解を容易にし、本発明を利用するための例示的な実施形態を説明するために含まれる。本発明の範囲内に属しながら、他の変形及び実施形態が可能であるため、このような詳細は本発明を説明された特定の実施形態に限定するのに使用されるべきではない。さらに、本発明の実施形態の完全なる理解を提供するため、多数の詳細が提供されるが、これらの具体的詳細が本発明の実施形態を実現するのに要求されるものではないということが、当業者には明らかであろう。他の具体例では、本発明を不明瞭にすることを避けるため、既知の方法、データタイプ、プロトコル、手順、コンポーネント、電気構造及び回路等の詳細は説明されないか、或いはブロック図により示される。さらに、本発明の実施形態は、特定の実施形態により説明されるが、ハードウェア、ソフトウェア、ファームウェア、ミドルウェア又はこれらの組み合わせにより実現されるようにしてもよい。
【００１３】
本発明の実施形態は、プロセッサの組込みハードウェアサポートを利用し、ハードウェア資源が使い尽くされた場合にソフトウェア方式に戻ることにより、高性能アクセスを提供する、たとえばアプリケーションプログラムインタフェース（ＡＰＩ）とともに使用するトランザクショナルメモリ（ＴＭ）アクセスのハイブリッドハードウェア・ソフトウェア実現を提供する。このため、ハードウェアＴＭアクセス及びソフトウェアＴＭアクセスの利益が同時に達成される。
【００１４】
一実施形態では、後述するように、最も一般的な場合にハードウェアＴＭ支援を可能にするようにオリジナルトランザクションオブジェクトを変更することにより、ＴＭ  ＡＰＩソフトウェア手法に関連する性能の不利益が大幅に低減される。このため、一般的な場合は、高性能のために組込みハードウェアサポート（たとえばトランザクショナルメモリキャッシュ）を利用することによって処理され、問題が発生すると、ハードウェアが使い尽くされた場合はソフトウェアＴＭ方式に戻る。
【００１５】
図１は、本発明の実施形態を実現することができるコンピュータシステム構成の一例の部分的なブロック図を示す。システム構成１００は、中央処理装置（ＣＰＵ）等の少なくとも１つのプロセッサ１０１と、チップセット１０３と、システムメモリ装置１０５と、１つ又は複数の入出力（Ｉ／Ｏ）装置１１３とのインタフェースのための１つ又は複数のインタフェース１１１と、ネットワークインタフェース１０７とを含む。
【００１６】
チップセット１０３は、メモリコントロールハブ（ＭＣＨ）及び／又はＩ／Ｏコントロールハブを含んでもよい。チップセット１０３は、プロセッサ１０１とコンピュータシステム１００の他のコンポーネントとの間のデータ転送のためのハブ又はコアとして機能する１つ又は複数の集積回路チップであってもよい。さらに、コンピュータシステム１００は、他のプロセッサ（例えば、マルチプロセッサシステムにおける）、コプロセッサ及び他のコンポーネント等の追加的なコンポーネント（図示せず）を含んでもよく、以上はコンピュータシステムのごく基本的な例に過ぎない。
【００１７】
ここでの説明のため、「プロセッサ」又は「ＣＰＵ」という用語は、命令シーケンスを実行可能な任意の機械を指し、以下に限定されるものではないが、汎用マイクロプロセッサ、特定用途マイクロプロセッサ、特定用途向け集積回路（ＡＳＩＣ）、マルチメディアコントローラ、信号プロセッサ、マイクロコントローラ等を含むものとされる。一実施形態では、ＣＰＵ１０１は、インテルアーキテクチャ命令セットの実行が可能な汎用的な高速マイクロプロセッサである。例えば、ＣＰＵ１０１は、ＩＮＴＥＬ（登録商標）Ａｒｃｈｉｔｅｃｔｕｒｅ ３２−ｂｉｔ（ＩＡ−３２）プロセッサ（ＰＥＮＴＩＵＭ（登録商標）４Ｍ等）等のＩＮＴＥＬ（登録商標）ＰＥＮＴＩＵＭ（登録商標）プロセッサ群の１つとすることが可能である。
【００１８】
ＣＰＵ１０１、チップセット１０３及び他のコンポーネントは、チップセット１０３を介しシステムメモリ装置１０５にアクセスする。例えば、メモリコントロールハブを用いるチップセット１０３は、システムメモリ装置１０５を対象とするメモリトランザクションに供する。
【００１９】
システムメモリ装置１０５は、スタティックランダムアクセスメモリ（ＳＲＡＭ）、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）、シンクロナスダイナミックランダムアクセスメモリ（ＳＤＲＡＭ）、及び／又はダブルデータレート（ＤＤＲ）ＳＤＲＡＭ又はダブルデータレートＤＲＡＭ等、デジタル情報を格納するようになっている任意の記憶装置を含んでもよい。したがって一実施形態では、システムメモリ装置１０５は、揮発性メモリを含む。さらに、システムメモリ装置はまた、読出し専用メモリ（ＲＯＭ）等の不揮発性メモリを含むことが可能である。
【００２０】
さらに、システムメモリ装置１０５は、ハードディスクドライブ、フロッピーディスクドライブ、光ディスクドライブ等の他の記憶装置、及び適切なインタフェースをさらに含んでもよい。
【００２１】
さらに、システムメモリ装置１０５は、コンピュータシステム１００内でトランザクショナルなメモリアクセス及びトランザクション（以下、アクセスという用語とトランザクションという用語とは同義で使用する）を可能にするようにプロセッサ１０１において実現されるハイブリッドハードウェア／ソフトウェアＴＭエンジンに対する本発明の実施形態に従う技法を実現するようにプロセッサ１０１が動作するための、ハードウェア／ソフトウェアトランザクションメモリ（ＴＭ）エンジンプログラムを不揮発性メモリに格納してもよい。
【００２２】
システムメモリ装置はまた、データベース１０８とのトランザクショナルメモリトランザクションを実現するために専用のメモリの領域を含んでもよい。たとえば、データベース１０８は、企業データベース、金融データベース、プロジェクト管理データベース、ディレクトリサービス等のようなデータベースか、又は、通常トランザクショナルメモリタイプトランザクションで利用される他のポインタリッチデータ構造を含んでもよい。
【００２３】
さらに、コンピュータシステム１００は、ディスクドライブ、モニタ、キーパッド、モデム、プリンタ、或いは他の適切なタイプのＩ／Ｏ装置等のＩ／Ｏ装置１１３とのインタフェースのための適切なインタフェース１１を含んでもよい。
【００２４】
コンピュータシステム１００はまた、さらにローカルエリアネットワーク（ＬＡＮ）、ワイドエリアネットワーク（ＷＡＮ）やインターネット等のネットワーク１０９とコンピュータシステム１００とのインタフェースのためのネットワークインタフェース１０７を含んでもよい。
【００２５】
図１の基本的なコンピュータシステム構成１００は、トランザクショナルなメモリアクセスのハイブリッドハードウェア・ソフトウェア実現に利用可能な１つのタイプのコンピュータシステムの一例である。例示的な図１のコンピュータシステム構成１００は、基本的なコンピュータシステムの一例に過ぎず、他の多くのタイプ及び変形が可能であることが、当業者に理解されるべきである。さらに、当業者は図１に示された例示的な環境が本発明の実施形態を限定するものではないということを認識するであろう。さらに、単一のコンピュータシステム構成１００に加えて、或いはその代わりに、コンピュータクラスタ又は他のグループ（コンピュータシステム構成１００と類似、又は異なる）が、本発明の実施形態を実現するのに利用されてもよいことが理解されるべきである。
【００２６】
より詳細には、図１に示すように、トランザクショナルエンジン１１８を利用するプロセッサ１０１は、ハイブリッドハードウェア／ソフトウェアＴＭアクセス手法を実現することができる。特に、トランザクショナルエンジン１１８は、詳細に後述するように、ハイブリッドハードウェア／ソフトウェアＴＭエンジンに関連する本発明の実施形態を実現するために、トランザクショナルエンジン１１８によって実現される拡張ＴＭ命令セットアーキテクチャとともに標準ＴＭ機能を含む。また、プロセッサ１０１は、互いに結合されてもよいトランザクショナルキャッシュ１３２とレギュラーメモリキャッシュ１３４とを含む。
【００２７】
より詳細に後述するように、トランザクショナルエンジン１１８で実現されるＴＭ  ＩＳＡは、たとえばＡＰＩとともに使用されるハイブリッドハードウェア／ソフトウェアＴＭエンジンが、「ハードウェアモード」でハードウェアサポート（たとえばトランザクショナルキャッシュ１３２）を使用することにより高性能を提供することを可能にし、ハードウェアキャッシュ１３２が使い尽くされるとソフトウェア方式（又は「ソフトウェアモード」）に戻る。このように、メモリ１０５及びデータベース１０８に対しデータの読出し及び書込みを行うＡＰＩ要求１１６が最適化される。なお、以下「ハードウェアモード」は、高性能のために主にトランザクショナルキャッシュ１３２を利用することを指し、「ソフトウェアモード」は、主に性能は低下するが使い尽くされないレギュラーキャッシュ１３４及び他のメモリ資源を利用することを指すということが留意されるべきである。
【００２８】
本発明の実施形態及びそのさまざまな機能コンポーネントを、特定の実施形態において説明しており、また以下に説明するが、これらの態様及び機能を、ハードウェア、ソフトウェア、ファームウェア、ミドルウェア又はそれらの組合せで実現することができる、ということが理解されるべきである。
【００２９】
ここで図２を参照すると、図２は、本発明の一実施形態によるトランザクショナルメモリオブジェクトの一例を提供する図である。図２に示すように、トランザクショナルメモリ（ＴＭ）オブジェクト２０２は、ロケータ２０４によって識別される。読出し専用でない各共有データオブジェクトは、ＴＭオブジェクト２０２として示されるようにコンテナ内に配置される。トランザクション中、すべてのＴＭオブジェクト２０２は、アクセスされる前にオープンされる。これによりオブジェクトがトランザクションと関連付けられ、基礎となるソフトウェアシステムがトランザクション間の競合を検出することができる。通常、スレッドは、オブジェクトが読出し専用にアクセスされるか否かを指定するＡＰＩによってオブジェクトをオープンする。オープンされたトランザクショナルオブジェクト内のデータは、操作することができるようになる。
【００３０】
ロケータ２０４は、トランザクショナルオブジェクトロケータとして機能する。オブジェクトに同時にアクセスするスレッドの数に関わらず、各トランザクションオブジェクトに対しアクティブであるトランザクションオブジェクトロケータが１つ存在する。状態リスト２０６は、ソフトウェアモードで目下オブジェクトにアクセスしているトランザクションの状態のメモリアドレスを格納する。通常、トランザクションの状態は、アクティブ（ACTIVE）、コミット（COMMITTED）又はアボート（ABORTED）のうちの１つである（２１４）。トランザクション毎に１つの状態しかない。ハードウェアモードのトランザクションも状態を有するが、後述するように、それらは決して状態リスト２０６に存在しない。
【００３１】
ＴＭロケータ２０４はさらに、オブジェクト２１０の新しいバージョンの内容２１８と、オブジェクト２１２の古いバージョンの内容２２０とのメモリアドレスを格納する。トランザクションが、内容の最新バージョンを取得するためにＴＭオブジェクトをオープンする場合、それが取得するバージョンは、書込みのために（すなわち読出し専用ではない）オブジェクトをオープンした最後のトランザクションの状態によって決まる。最後のライタの状態２１４がアクティブ又はアボートである場合、オブジェクトをオープンしているトランザクションは古いバージョン２２０を受け取る。最後のライタの状態２１４がコミットである場合、オブジェクトをオープンしているトランザクションは新しいバージョン２１８を受け取る。
【００３２】
ソフトウェアモードのトランザクションは、書込みのためにＴＭオブジェクト２０２をオープンする時、最新バージョン（上述したような）のアドレスをＴＭロケータオブジェクト２０４の古いオブジェクトフィールド２１２に配置する。トランザクションは、最新内容のコピーを作成し、このコピーのアドレスをＴＭロケータ２０４の新しいオブジェクトフィールド２１０に配置する。ソフトウェアモードのトランザクションがコミットするまで、オブジェクトの新しいコピーはいかなる他のスレッドによってもアクセスされず、したがってローカルである。トランザクションがコミットすると、ＴＭオブジェクトの新しいバージョンは共有オブジェクトになり、それ以上変更することができない。ハードウェアモードのトランザクションは、書込みのためにＴＭオブジェクト２０２をオープンする場合、内容のコピーを作成しない。ハードウェアモードのトランザクションは、後述するように、投機的書込みをバッファリングするハードウェアに応じて、オブジェクトの最新バージョンを直接変更する。
【００３３】
ＴＭオブジェクト２０２は、ＴＭオブジェクト２０２が読出しモードであるか又は書込みモードであるかを示すモードフィールド２０８をさらに含む。ソフトウェアモードのトランザクションは、読出しモード又は書込みモード２０８でＴＭオブジェクトをオープンする場合、その状態変数２１４のアドレスを状態リスト２０６に追加する。これにより他のスレッド（ソフトウェアモード及びハードウェアモードの両モード）がトランザクションをアボートすることができ、個々のオブジェクトに対して妥当性確認動作を行う必要がなくなる。トランザクションを、トランザクションの状態（状態２１４）を維持する１つのロケーションを単に検査することによって妥当性確認することができる。トランザクションがＴＭオブジェクト２０２をオープンし、そのモードフィールド２０８が読出し専用に設定されている時、オブジェクトが読出し専用モードでオープンされている場合にいかなるトランザクションも明示的にアボートされる必要はないが、オブジェクトが書込みモードでオープンされている場合、状態リスト２０６のすべてのトランザクションが、それらの状態２１４がアクティブである場合、アボートされる必要がある。トランザクションがＴＭオブジェクト２０２をオープンし、モードフィールド２０８が、単一トランザクションによって状態リスト２０６に書き込むように（現ライタ）すでに設定されている場合、この単一トランザクションは、ＴＭオブジェクト２０２が読出し専用モードでオープンされているか又は書込みモードでオープンされているかに関わらず、その値がアクティブ２１４である場合にアボートされる必要がある。
【００３４】
この実現では、ＴＭオブジェクト２０２は、所与の時点で単一リーダ又は単一ライタしか可能にしない。この制限を、実施形態によっては、状態リスト２０６の複数のトランザクションフィールドが並行するリーダに対応することができるようにすることにより、軽減することができる。これにより、任意の所与の時点においてオブジェクトをオープンする複数の（ただし有限の）トランザクションが提供される。この制限を、オブジェクト単位に設定することができる。後述するように、ＴＭオブジェクト２０２は、トランザクショナルメモリトランザクションを、ハードウェア／ソフトウェアハイブリッド方式による実現により従うようにする。
【００３５】
本発明の実施形態は、トランザクショナルメモリトランザクションが「ハードウェアモード」又は「ソフトウェアモード」のいずれかで実現されるのを可能にするハードウェア／ソフトウェアトランザクション命令セットアーキテクチャ（ＩＳＡ）を提供する。トランザクショナルなメモリアクセスは、ハードウェアモードで実行される場合、最初にトランザクショナルキャッシュ１３２（図１）を利用することによって実行される。このように、トランザクションに対して非常に高い性能を提供することができるが、ハードウェア資源は、使い尽くされる場合がある。さらに、ハードウェアモードでは、プロセッサは、アクセスされるメモリロケーションのすべてを追跡する必要がある。ハードウェアモードでは、同時に実行しているトランザクション間の競合が検出され、競合しているトランザクションのうちの１つがアボートされる。アボート時、トランザクション中に書き込まれたデータが無効にされ、コミット時、そのデータは、原子的にメモリ状態の一部でなければならない。
【００３６】
より詳細には、本発明の実施形態は、コンピュータシステムにおけるトランザクショナルなメモリアクセスのハイブリッドハードウェア・ソフトウェア実現に関する。コンピュータシステムにおいて、トランザクショナルキャッシュ及びレギュラーキャッシュを含むプロセッサが利用される。ポリシマネージャが、メモリにアクセスするアプリケーションプログラムインタフェース（ＡＰＩ）要求に応じて、トランザクショナルなメモリアクセスを実現する第１のモード（以下「ハードウェアモード）」か又は第２のモード（以下「ソフトウェアモード」）のうちの一方を選択する。ハードウェアモードでは、メモリ読出し動作及びメモリ書込み動作を実行するためにトランザクショナルキャッシュが利用され、ソフトウェアモードでは、大部分のメモリ読出し動作及びメモリ書込み動作を実行するためにレギュラーキャッシュが利用される（後述するように、トランザクショナルキャッシュには１つのロケーションしか格納されない）。
【００３７】
ポリシマネージャは、まず、トランザクショナルキャッシュにおいてトランザクショナルな読出し命令及び書込み命令を使用して読出し動作及び書込み動作を実行するハードウェアモードを選択する。トランザクショナルキャッシュに、読出し動作及び書込み動作を実行するために十分なメモリ資源が存在する場合、トランザクショナルなメモリアクセスを完了するためにコミット命令が発行される。しかしながら、競合するトランザクショナルな読出し動作及び書込み動作である場合、又はトランザクショナルキャッシュにおいて不十分なメモリ資源が検出される場合、アボート命令が発行される。第１のモードに対してアボート命令が発行されると、ポリシマネージャは、レギュラーキャッシュにおいて通常の読出し命令及び書込み命令を使用して通常の読出し動作及び書込み動作が実行される、ソフトウェアモードを選択してもよい。
【００３８】
トランザクショナルメモリトランザクションを純粋にハードウェアで実現する場合、単一トランザクションがアクセスすることができるメモリロケーションの数に対する制限がある。トランザクションがこの制限を超えると、本発明の一実施形態によれば、トランザクションは「ソフトウェアモード」で再開する。後述するように、ハードウェアトランザクションが無効にされると、そのスレッドによって実行される次のメモリ動作により例外がもたらされる。これにより、無効にされたハードウェアトランザクションが続行しメモリを破壊することが防止される。例外がもたらされ且つソフトウェアモードに入った後、トランザクショナルなメモリアクセスは主にレギュラーキャッシュ及び他のメモリ資源（図１参照）によって実行される。
【００３９】
トランザクショナルなメモリアクセスのためにこのハイブリッドハードウェア・ソフトウェア実現を実現するために、本発明の実施形態は、新規であり且つ自明でないトランザクショナルメモリ命令セットアーキテクチャ（ＩＳＡ）を提供する。図３を参照すると、図３は、本発明の一実施形態によるハードウェア／ソフトウェアトランザクショナルメモリトランザクションを実現する命令セットを示す表である。
【００４０】
図３に示すように、ハードウェア／ソフトウェアトランザクションＩＳＡ３００は、２つのモードを有するトランザクション開始３０２を含む。すべてのトランザクション開始（Begin Transaction All）は、「ハードウェアモード」トランザクションを指定することであり、選択トランザクション開始（Begin Transaction Select）は、「ソフトウェアモード」トランザクションに対して使用される。特に、トランザクション開始命令３０２は、トランザクションの起動をマークする。「ハードウェアモード」に対するすべてのトランザクション開始により、デフォルトによりすべてのメモリアクセスがトランザクショナルとなり（たとえばトランザクショナルキャッシュを利用する）、選択トランザクション開始は、トランザクショナルであると明示的に指定されるメモリ動作のみを行う。
【００４１】
ハードウェアトランザクションをネストすることができない（ソフトウェアベーストランザクションとは対照的に）ということが留意されるべきである。したがって、先のトランザクションがコミットされるか又はアボートされる前に新たなハードウェアトランザクションを開始することができない。トランザクションは、後述するように、トランザクションアボート命令３０６を実行することによるか、又はデータ競合がある場合にアボートされる。
【００４２】
コミット命令３０４は、トランザクションの終了をマークするために使用され、トランザクショナルキャッシュを含むトランザクショナルメモリの内容のすべてが体系的（architectural）となるのを可能にする。特に、トランザクショナルストアは、システム状態を変更することが可能とされ、トランザクショナルロードは、トランザクショナルキャッシュからパージされる。先のトランザクションが事前に開始されていなかった場合、トランザクションコミットを開始することはできない。
【００４３】
トランザクションアボート３０６は、現トランザクションをアボートし、先にバッファリングされていたトランザクション書込みデータのすべてを破棄する。いかなるトランザクションも事前に開始されていなかった場合、エラーが発生する。
【００４４】
さらに、ハードウェア／ソフトウェアトランザクションＩＳＡ３００はまた、トランザクショナルメモリロード／ストア動作を実行するトランザクションロード／ストア命令３０８も含む。
【００４５】
ハードウェア／ソフトウェアトランザクションＩＳＡ３００は、非トランザクショナルメモリロード／ストア動作を実行する通常のロード／ストア命令をさらに含む。
【００４６】
状態チェックポイント及び回復命令３１２も提供される。チェックポイント命令は、現レジスタ状態をメモリにチェックポイントする。回復命令は、メモリから現レジスタ状態を回復する。
【００４７】
ハードウェア／ソフトウェアトランザクションＩＳＡ３００はまた、オーファン（orphan）トランザクション例外命令３１４も含む。トランザクションは、コミットすることができない場合、オーファンであると定義される。たとえば、これは、別のプロセスが、それがトランザクショナルに読出しをしているロケーションに書込みをしている場合に発生する可能性がある。この場合、オーファントランザクションは、一貫しない状態でメモリを見る可能性があり、それにより、プログラムは、０による除算又は範囲外のメモリアドレスへのアクセス等の例外をもたらす可能性がある。さらに悪いことには、有効なメモリロケーションに間違った値を書き込み、システム状態を破壊する可能性がある。
【００４８】
オーファントランザクション例外命令は、これらの問題を回避する。特に、後述するように、スレッドによって実行される最初のロード命令は、そのトランザクションがオーファンになった後、オーファントランザクション例外３１４を生成する。
【００４９】
ここで図４Ａを参照すると、図４Ａは、本発明の一実施形態による、トランザクショナルなメモリアクセスのハイブリッドハードウェア・ソフトウェア実現のためのプロセス４００を示すフローチャートである。プロセス４００は、ほとんどの通常の場合に対し、トランザクショナルなメモリアクセスは、「ハードウェアモード」で実現される（たとえば、主にプロセッサのトランザクショナルキャッシュを利用する）場合に非常に高速且つ最適に完了する、という事実を利用する。しかしながら、プロセスはまた、プロセッサによりハードウェアモードで実現される場合、トランザクションを完了することができない可能性があることを考慮し、したがって、常にトランザクションを完了することが保証される「ソフトウェアモード」に戻る。対照的に、「ソフトウェアモード」は、主にレギュラーキャッシュ及び他のメモリ資源を使用する。後述するように、ハードウェアトランザクションが無効にされる場合、次のメモリ動作によってオーファントランザクション例外がもたらされ、これにより、無効にされたハードウェアトランザクションが続行してメモリを破損することが防止される。
【００５０】
プロセス４００を詳細に見ると、ブロック４０２において、トランザクション（たとえばＡＰＩから）が開始される。ブロック４０４において、ポリシマネージャが、トランザクションを開始するためにハードウェアモード又はソフトウェアモードを選択する。一実施形態では、まず、高速なハードウェア処理（たとえばトランザクショナルキャッシュを介する）を利用するためにハードウェアモードが選択され、バックアップとしてソフトウェアモードを使用することができる。
【００５１】
ハードウェアモードの選択の後、ハードウェア／ソフトウェアトランザクションＩＳＡ３００からのすべてのトランザクション開始命令３０２が起動され、それによりモードがハードウェアに設定される。さらに、ハードウェア／ソフトウェアトランザクションＩＳＡからのトランザクションロード命令３０８も起動され、トランザクショナルメモリ状態がロードされる。次に、ブロック４０８において、上述したように、トランザクショナルな読出し動作及び書込み動作を使用して、ＴＭオブジェクトに対し所定の位置で、トランザクションに対する書込み及び読出し動作が実行される。ハードウェアトランザクションを完了することができる場合（たとえば、トランザクショナルキャッシュでトランザクションを完了するために十分なハードウェア資源がある場合）、トランザクションコミット命令が生成され、ブロック４１０に示すように、状態がコミットに設定されトランザクションがコミットされる。トランザクションに対する処理は、このようにコミットされることになる（ブロック４１５）。
【００５２】
しかしながら、ハードウェアでトランザクションをコミットすることができない（たとえば、トランザクショナルキャッシュに十分なハードウェア資源がない）場合、トランザクションアボート命令が起動され、状態がアボートに設定され、トランザクションがアボートされる（ブロック４２０）。このように、プロセスがアボートされる（ブロック４２２）。
【００５３】
トランザクションがアボートされる場合、オーファントランザクション例外命令４２４が生成される。これは、トランザクショナルな読出し／書込み命令が競合していることか、又はハードウェア資源が不十分であることによる可能性がある。いずれの場合も、トランザクショナルメモリはクリーンアップされ、トランザクションは再試行される（ブロック４２６）。通常、ハードウェアモードで障害が発生した場合、次の試行に対し、ポリシマネージャはソフトウェアモードを選択する。
【００５４】
簡単に、コミット命令及びアボート命令についてより詳細に述べる。特に、上述したように、トランザクショナルメモリを、トランザクショナルキャッシュを用いて実現してもよい。たとえば、図１に示すように、プロセッサ１０１は、トランザクショナルキャッシュ１３２及びレギュラーキャッシュ１３４を含んでもよい。ハードウェア／ソフトウェアトランザクションＩＳＡ３００からのトランザクションロード及びストア３０８を使用して読出し及び書込みが行われるすべてのロケーションは、トランザクショナルキャッシュに格納される。トランザクションがコミットするまで、すべてのトランザクショナル書込みはトランザクショナルキャッシュに留まる。トランザクションによって読出しがなされたトランザクショナルキャッシュのロケーションに、異なるスレッドによって書込みがなされる場合、そのトランザクションはオーファンとなり、最終的にアボートされることになる。
【００５５】
トランザクションコミット命令３０４は、トランザクションの終了をマークし、トランザクションキャッシュの内容のすべてが体系的になるのを可能にする（たとえば、トランザクショナルストアは、システム状態を変更することが可能とされ、トランザクショナルロードは、トランザクションキャッシュからパージされる）。
【００５６】
トランザクションは、コミットすることができない場合、オーファンであるように定義される。たとえば、トランザクションは、別のスレッドが、それが読出しをしたロケーションに書込みをした場合にオーファン化される可能性がある。オーファントランザクションは、一貫しない状態でメモリを見る可能性があり、プロセッサに対し、０による除算か又は範囲外のメモリロケーションへのアクセスのような例外をもたらさせる可能性がある。さらに悪いことには、有効なメモリロケーションに間違った値を書き込みシステム状態を破壊する可能性が高い。したがって、これが発生する場合、オーファントランザクション例外命令３１４が起動され、動作がアボートされる（４２２）。
【００５７】
このように、プロセス４００及びハードウェア／ソフトウェアトランザクションＩＳＡ３００は、それが実行しているトランザクションがオーファンとなった場合にスレッドに通知するように例外が非同期に使用されるのを可能にする。トランザクションがオーファン化すると、スレッドはアボートされ、そのスレッドは、メモリからの新たなロード動作から返されるデータを消費することができなくなる。
【００５８】
これを達成するために、すべてのロードにおいて特別な例外が利用される。特に、スレッドがオーファン化した後の最初のロードは、そのロードに対して例外を強要し、スレッドはアボートされる。そして、例外ハンドラは、トランザクションの開始に戻るよう分岐する責任を有し、それを、クリーンアップ及び再試行ブロック４２６として上述したように達成してもよい。このように、トランザクションアボート命令３０６とともに実現されるユーザ例外ハンドラは、クリーンアップ及び再試行４２６を利用して、トランザクションをアボートし、スタックを展開し、アボートしたトランザクションを再開する責任がある。
【００５９】
図４Ｂを簡単に参照すると、図４Ｂは、特にオーファントランザクションを監視するプロセス４４８を示すフローチャートである。ブロック４５０において、トランザクションロード時、ステータスフラグがトランザクション有効に設定される。次に、プロセス４４８は、別のプロセッサ又はスレッドによる競合がないか監視する（ブロック４５２）。ブロック４５４において競合が検出されない場合、処理が継続する（ブロック４５６）。しかしながら、ブロック４５４において、競合が検出される場合、ステータスフラグはトランザクション無効に再設定され、トランザクションがアボートされたことがマークされる（ブロック４６０）。第１のトランザクションロードに続くすべてのロードは、ステータスフラグを検査することにより、コミットする前にそれがトランザクション有効に設定されていることを確認する（たとえばデータをプロセッサに返す）。一方、ステータスフラグが再設定される場合、ロードはコミットすることが可能とされず、上述したアボートプロセスが発生する。
【００６０】
図４Ａに戻り、競合するトランザクション読出し／書込み動作か又はハードウェア資源の使い尽しによりハードウェアトランザクションがアボートされたとすると、ポリシマネージャは、ブロック４０４において、トランザクションの完了を確実にするために「ソフトウェアモード」を選択してもよい。ブロック４３０において、ハードウェア／ソフトウェアトランザクションＩＳＡ３００から選択トランザクション開始命令３０２が起動され、それによりモードがソフトウェアに設定され、トランザクション状態がロードされる。ソフトウェアモードで実行している時、プロセッサはすべてのメモリアクセスをトランザクショナルとして扱うとは限らないことに留意されるべきである。各トランザクションに対し、１つのロケーションのみがトランザクショナルにアクセスされ（たとえば、トランザクションロード命令３０８を利用する）、すなわちそれはトランザクションの状態を含むロケーションである。
【００６１】
次に、ブロック４３２において、通常の読出し動作及び書込み動作（たとえば、通常のロード／ストア命令３１０）をコピーするとともに使用することにより、トランザクションに対して読出し動作及び書込み動作が実行される。さらに、トランザクショナルキャッシュの代りに、レギュラーキャッシュ及び他のメモリ資源が利用される。トランザクションに対する読出し動作及び書込み動作を実行することができる場合、トランザクションコミット命令３０４が起動され、状態はコミットに設定される（ブロック４３４）。このように、メモリに対する読出し動作及び書込み動作がコミットされる（ブロック４１５）。
【００６２】
一方、競合するトランザクショナルな書込み動作が検出されると、プロセスをアボートしてもよく、状態はアボートに設定される（ブロック４３６）。このように、ブロック４２２においてトランザクションがアボートされ、競合する書込みトランザクションの例外４３８に基づき、ソフトウェアモードのプロセス４００は、ソフトウェアモードにおいてトランザクショナルな動作をクリーンアップし再び再試行してもよい（ブロック４４０）。
【００６３】
本発明の別の実施形態では、上述したハードウェア／ソフトウェアトランザクションＩＳＡ３００を、ロックを効率的に実現するために利用してもよい。簡単に言えば、ロック取得機能が呼び出されると、プロセッサは、トランザクショナルメモリ拡張を使用してハードウェアモードでクリティカルセクション（たとえば、ロック取得と後続するロック解放との間のコード）を実行しようとし、これが失敗する場合、プロセスはソフトウェアモードに戻る。
【００６４】
ハードウェアモードにおいてクリティカルセクションが完了し損なう可能性のある３つの理由があり得る。たとえば、資源が使い尽くされる可能性があり、その場合、トランザクショナル状態を維持するために使用されるトランザクショナルキャッシュがオーバフローする。別に、データに対する衝突があり得る。たとえば、２つのスレッドがハードウェアモードにおいてそれらのクリティカルセクションを実行しようとし、同じデータに対して競合する動作を実行しようと試みる場合、これもまた障害をもたらす可能性がある。たとえば、１つのスレッドが、他のスレッドがすでに読み出したキャッシュラインに書き込む場合がある。また、ソフトウェアモードへの遷移において障害がある場合もある。たとえば、スレッドがソフトウェアモードにおいてロックを獲得する場合、そのロックを必要とするクリティカルセクションの中間にあった他のスレッドのすべてがアボートされることになる。
【００６５】
任意のロックに対し、ハードウェアモードにおいて複数のスレッドがクリティカルセクションにある可能性があるか、又はソフトウェアモードにおいて単一スレッドがロックを保持している可能性があることに留意されるべきである。ハードウェアモードにおいてロックのクリティカルセクションに入るために、スレッドは、ロックが利用可能であることを確実にするように検査し、それをロックされているものとマークすることなくクリティカルセクションに入る。ソフトウェアモードにおいてロックのクリティカルセクションに入るためには、スレッドはロックが利用可能であることを確実にするように検査し、それをロックされているものとマークする。これにより、ハードウェアモードにおいてすでにクリティカルセクションにある任意のスレッドがアボートされ、ハードウェアモード又はソフトウェアモードのいずれにおいてもいかなる新たなスレッドもそのクリティカルセクションに入ることが防止される。
【００６６】
図５を見ると、図５は、本発明の一実施形態による、ハードウェア／ソフトウェアトランザクションＩＳＡ３００を効率的に利用してロックを実現するプロセス５００を示すフローチャートである。ブロック５０２において、ロックが取得されるか又は起動される。ブロック５０４において、ポリシマネージャがモードを選択する。通常、上述したように、まずトランザクショナルメモリトランザクションを最も効率的に達成しようと試みるためにハードウェアモードが選択される。そして、ハードウェアモードがトランザクションを完了することができない場合、ソフトウェアモードに戻る。
【００６７】
次に、ブロック５０６において、ロックが開始され、トランザクションＩＳＡ３００のすべてのトランザクション開始命令３０２によってモードがハードウェアに設定される。ブロック５０８において、トランザクショナルな読出し動作及び書込み動作（たとえばトランザクションロード／ストア３０８）を使用して、トランザクション（たとえばトランザクショナルキャッシュにある）に対し読出し動作及び書込み動作が実行される。トランザクションが完了すると、ロックは解放され（ブロック５１０）、トランザクションはコミットされる。
【００６８】
しかしながら、競合するトランザクショナルな読出し／書込み動作５２０による例外がある場合、ロックがアボートされる。そして、クリーンアップ及び再試行動作（ブロック５２２）が起動され、ソフトウェアモードにおいてロックが試みられる。このため、ブロック５０４において、ポリシマネージャはソフトウェアモードを選択する。
【００６９】
この場合、ロックはソフトウェアモードで開始され、ロックの状態はロックに設定される（ブロック５３０）。次に（ブロック５３２）、通常の読出し動作及び書込み動作（たとえば通常のロード及びストア命令３１０）を使用して、読出し動作及び書込み動作が実行される。ソフトウェアモードでは、ブロック５３４において、ロックは通常常に完了し、その後ロックは解放され、ロック状態はアンロックに設定される。これによりプロセス５００は完了する。
【００７０】
さらなる性能の利益を得るために、プロセッサは競合解決を実行してもよい。詳細には、データ競合が検出されると、プロセッサは競合を解決し、トランザクションのうちの１つが完了できるようにしてもよい。残りの競合するトランザクションを、それらが読み出したメモリロケーションの任意のものが別のスレッドによって書き込まれたか否かに応じて、遅延させるか又はアボートさせてもよい。さらに、上述したように例外５２０（たとえばオーファントランザクション例外）が発生した場合、トランザクションが資源の使い尽しによってオーファン化したか又はデータ競合によってオーファン化したかに関する記録を行ってもよい。そして、資源が使い尽くされている場合にのみソフトウェアモードに戻るように例外ハンドラを変更してもよい。データ競合のみが発生した場合、ソフトウェアモードに自動的に切り替わる代りに、トランザクションが再度ハードウェアモードで再試行される変更を実現してもよい。
【００７１】
本発明の実施形態及びその各種機能コンポーネントが特定の実施形態において説明されたが、本発明の実施形態が、ハードウェア、ソフトウェア、ファームウェア、ミドルウェア又はそれらの組み合わせにより実現され、システム、サブシステム、コンポーネント又はそれらのサブコンポーネントにおいて利用可能であるということは理解されるであろう。ソフトウェア又はファームウェアで実現されるとき、本発明の要素は、必要なタスクを実行するための命令／コードセグメントである。プログラム又はコードセグメントは、機械可読媒体（例えば、プロセッサ可読媒体やコンピュータプログラム製品等）に格納可能であるか、或いは搬送波において実現されるコンピュータデータ信号、又はキャリアにより変調される信号によって送信媒体又は通信リンクを介し送信することが可能である。機械可読媒体は、機械（例えばプロセッサ、コンピュータ等）により可読で実行可能な形式により情報を格納又は転送することができる任意の媒体を含むものであってもよい。機械可読媒体の例には、電子回路、半導体記憶装置、ＲＯＭ、フラッシュメモリ、消去可能プログラマブルＲＯＭ（ＥＰＲＯＭ）、フロッピーディスケット、コンパクトディスクＣＤ−ＲＯＭ、光ディスク、ハードディスク、光ファイバ媒体、無線周波数（ＲＦ）リンク等が含まれる。コンピュータデータ信号には、電子ネットワークチャネル、光ファイバ、空気、電磁気、ＲＦリンク、バーコード等の送信媒体を介し伝搬可能な任意の信号が含まれてもよい。コードセグメントは、インターネット、イントラネット等のネットワークを介しダウンロード可能である。
【００７２】
さらに、本発明の実施形態が例示された実施形態を参照することにより説明されたが、これらの説明は限定的なものと解釈されるべきではない。本発明の実施形態が属する技術分野の当業者には明らかな例示された実施形態の様々な変更及び本発明の他の実施形態は、本発明の精神及び範囲内に属するものとみなされる。
【図面の簡単な説明】
【００７３】
【図１】本発明の実施形態を実施することができる、コンピュータシステム構成の一例の部分的なブロック図である。
【図２】本発明の一実施形態によるトランザクショナルメモリオブジェクトの一例を提供する図である。
【図３】本発明の一実施形態による、ハードウェア／ソフトウェアトランザクショナルメモリトランザクションを実現する命令セットアーキテクチャを示す表である。
【図４Ａ】本発明の一実施形態による、トランザクショナルなメモリアクセスのハイブリッドハードウェア・ソフトウェア実現のためのプロセスを示すフローチャートである。
【図４Ｂ】本発明の一実施形態による、特にオーファントランザクションを監視するプロセスを示すフローチャートである。
【図５】本発明の一実施形態による、ハードウェア／ソフトウェアトランザクションＩＳＡを効率的に利用するロックを実現するプロセスを示すフローチャートである。
【図１】
2008515055.tif 000003
【図２】
2008515055.tif 000004
【図３】
2008515055.tif 000005
【図４Ａ】
2008515055.tif 000006
【図４Ｂ】
2008515055.tif 000007
【図５】
2008515055.tif 000008
【国際調査報告】
2008515055.tif 000009
2008515055.tif 000010
2008515055.tif 000011