コンピュータプロセッサを備える装置であって、前記コンピュータプロセッサは、複数の投機的メモリアクセス動作をトランザクショナルモードで単一のアトミックトランザクションとして実行するように構成され、前記単一のアトミックトランザクションは、前記投機的メモリアクセス動作によってアクセスされるデータを投機的データであるとしてマークすることを含み、前記プロセッサは、暗黙サスペンド条件を決定するように構成される検出ユニットと、サスペンド条件の表示を受信することに応答して前記トランザクショナルモードの実行をサスペンドするように構成されるトランザクションサスペンションユニットと、を備え、前記トランザクショナルモードのサスペンションに応答して前記プロセッサは投機的データをマークすることをサスペンドするように構成される装置。前記検出ユニットは、前記プロセッサによって実行中のスレッドにおける制御転送を検出することと、前記プロセッサがトランザクショナルモードで実行中であることを検出することと、前記プロセッサが所与の特権レベルで実行中であることを検出することと、によって前記暗黙サスペンド条件を決定するように構成される請求項1の装置。当該検出された制御転送はオペレーティングシステムへの転送である請求項2の装置。前記プロセッサは当該トランザクションがサスペンドされている間に前記アトミックトランザクションが失敗したことを検出するように構成され、前記プロセッサは前記投機的データを廃棄することによるのを含めて当該失敗したトランザクションを停止するように構成される請求項2の装置。前記プロセッサは前記トランザクションに対する前記トランザクショナルモードの実行のための再開条件を検出した後にのみ前記失敗したトランザクションを停止するように構成される請求項4の装置。前記トランザクショナルモードのサスペンションは前記プロセッサがサスペンドフラグをセットすることを含み、前記プロセッサは前記トランザクションが失敗したことを検出することに応答して停止フラグをセットするように更に構成される請求項5の装置。前記プロセッサは前記サスペンドフラグ及び前記停止フラグを実行コンテクストの一部として保存するように構成され、当該保存された実行コンテクストは前記プロセッサによって行われるコンテクストスイッチに際して前記プロセッサの状態をリストアするために使用可能である請求項6の装置。前記検出ユニットは前記制御転送からのリターンに対応するリターン制御転送を検出することによるのを含めて再開条件を決定するように構成され、前記プロセッサは前記再開条件を決定した後にデータを投機的であるとしてマークすることを再開するように構成される請求項2の装置。前記トランザクションサスペンションユニットは前記トランザクショナルモードがサスペンドされていた間に当該トランザクションが失敗したことを検出することに応答して前記トランザクションを停止することによって前記再開条件の決定に応答するように構成され、前記停止することは前記投機的データを廃棄することを含む請求項8の装置。前記トランザクションが再開される場合に前記プロセッサは前記トランザクションのサスペンションの前及び後の両方にマークされた投機的データを非投機的であるとしてマークすることによるのを含めて前記トランザクションをコミットするように構成される請求項9の装置。トランザクショナルメモリシステム内のコンピュータプロセッサが複数の投機的メモリアクセス動作をトランザクショナルモードで単一のアトミックトランザクションとして実行することを備える方法であって、前記実行することは、前記投機的メモリアクセス動作によってアクセスされるデータを投機的データであるとしてマークすることと、暗黙サスペンド条件が存在することを決定することと、前記暗黙サスペンド条件が存在することを決定することに応答して前記トランザクショナルモードの実行をサスペンドすると共に投機的データのマーキングをサスペンドすることと、を備える方法。前記暗黙サスペンド条件を決定することは、前記プロセッサによって実行中のスレッドにおける制御転送を検出することと、前記プロセッサがトランザクショナルモードで実行中であることを検出することと、前記プロセッサが所与の特権レベルで実行中であることを検出することと、を含む請求項11の方法。前記トランザクショナルモードの実行がサスペンドされている間に前記制御転送からのリターンに対応するリターン制御転送を検出することによるのを含めて再開条件を決定することと、前記再開条件を検出することに応答して投機的データのマーキングを再開することと、を更に備える請求項12の方法。当該トランザクションのサスペンションの前及び後の両方にマークされた投機的データを非投機的であるとしてマークすることによるのを含めて前記トランザクションをコミットすることを更に備える請求項13の方法。前記再開条件を検出した後に、前記トランザクショナルモードがサスペンドされていた間に当該トランザクションが失敗したことを検出することに応答して当該トランザクション試行を停止することを更に備え、前記停止することは投機的データであるとしてマークされたデータを廃棄することを含む請求項13の方法。前記トランザクショナルモードの実行がサスペンドされている間に、当該トランザクション試行が失敗したことを決定することと、それに応答して停止フラグをセットすると共に当該トランザクションを当該サスペンドされたモードで実行するのを継続することと、を更に備える請求項11の方法。プロセッサと、前記プロセッサ上の少なくとも1つを含む複数の処理コアによって共有されるメモリと、を備えるシステムであって、前記プロセッサは複数の投機的メモリアクセス動作をトランザクショナルモードで単一のアトミックトランザクションとして実行するように構成され、この実行は、前記投機的メモリアクセス動作によってアクセスされるデータを投機的データであるとしてマークすることと、暗黙サスペンド条件が存在することを決定することと、前記暗黙サスペンド条件が存在することを決定することに応答して前記トランザクショナルモードの実行をサスペンドすると共に投機的データのマーキングをサスペンドすることと、によるものを含むシステム。前記暗黙サスペンド条件を決定することは、前記プロセッサによって実行中のスレッドにおける制御転送を検出することと、前記プロセッサがトランザクショナルモードで実行中であることを検出することと、前記プロセッサが所与の特権レベルで実行中であることを検出することと、にも部分的に基づく請求項17のシステム。前記プロセッサは前記トランザクショナルモードの実行がサスペンドされている間に前記制御転送からのリターンに対応するリターン制御転送を検出することによるのを含めて再開条件を決定するように更に構成され、前記プロセッサは、少なくとも、投機的メモリアクセス動作によってアクセスされるデータを投機的データであるとしてマーキングすることを再開することにより、前記再開条件を検出することに応答するように構成される請求項18のシステム。前記プロセッサは当該トランザクションのサスペンションの前及び後の両方にマークされた投機的データを非投機的であるとしてマークすることによるのを含めて前記トランザクションをコミットするように更に構成される請求項19のシステム。コンピュータシステム上で実行可能なプログラムによって動作させられるデータ構造を備えるコンピュータ可読記憶媒体であって、前記プログラムは前記データ構造上で動作して前記データ構造によって記述される回路を含む集積回路を製造するための処理の一部を行い、前記データ構造において記述される前記回路は、複数の投機的メモリアクセス動作をトランザクショナルモードで単一のアトミックトランザクションとして実行するように構成されるコンピュータプロセッサを含み、前記単一のアトミックトランザクションは、前記投機的メモリアクセス動作によってアクセスされるデータを投機的データであるとしてマークすることを含み、前記プロセッサは、暗黙サスペンド条件を決定するように構成される検出ユニットと、サスペンド条件の表示を受信することに応答して前記トランザクショナルモードの実行をサスペンドするように構成されるトランザクションサスペンションユニットと、を備え、前記トランザクショナルモードのサスペンションに応答して前記プロセッサは投機的データをマークすることをサスペンドするように構成されるコンピュータ可読記憶媒体。この挙動は少なくとも2つの問題を生じさせる可能性がある。第一に、デバイスドライバコード実行中にトランザクションが停止されると、システム障害が発生することがある。例えば、デバイスドライバが、ネットワークインタフェースハードウエアを管理するために、メモリマッピングされたレジスタに書き込むように構成されており、且つレジスタ値を変更している途中に停止されると、インタフェースハードウエアは矛盾したままの状態になり得るので、ネットワークシステムの完全性を壊してしまう。また、上述した例では、デバイスドライバがトランザクションの一部として実行されている間に又はその後でトランザクションを停止することは、ネットワーク接続がパケットを失うことにつながる。例えば、ドライバコードがパケットを処理した後、ドライバは受信確認メッセージをパケット送信機へ送る。このとき送信機は、再送信の必要性はないものとして、パケットを削除するであろう。しかし、トランザクションが後で停止されると、パケットを受信機で記憶するために使用されたメモリ書き込み動作に戻されるであろうし、そしてパケットは恒久的に失われているであろうから、TCP/IPシステムの信頼性のある通信保証を阻害することになる。第二に、セキュリティ問題は、トランザクションの一部としてオペレーティングシステムコードに透過的にジャンプする別の副次的影響である。多くの最新のプロセッサは、オペレーティングシステムとアプリケーションコード実行を分離するために、セキュリティ特徴をサポートする。例えばx86アーキテクチャは、システムコールの境界でコードセグメントセレクタを切り換えることによって、オペレーティングシステム及びアプリケーションが異なるコードセグメント及び特権レベル例えばユーザレベル特権対カーネルレベル特権を使用することを可能にしている。しかし、従来のHTMシステムは、多くの場合、コードセグメントセレクタ等のプロセッサ状態の何らかの部分をチェックポイントにしないし管理しない。ユーザレベルコードに由来するトランザクションがオペレーティングシステムへのシステムコールを実行すると、特権レベルが高くなる。トランザクションが停止すると、従来のHTMは、特権レベルを低いレベルに戻すようには構成されないであろう。従って、結果としてセキュリティリークがもたらされることになる。悪意のあるプログラムは、トランザクションの停止の後にこのセキュリティホールをついてオペレーティングシステム特権レベルを得ることが可能になり得る。多重処理コアによって共有されるメモリにアクセスすると共にメモリアクセス動作をトランザクショナルモードで単一のアトミックトランザクションとして実行するように構成されるコンピュータプロセッサのための装置及び方法が開示される。装置は、暗黙サスペンド条件を決定することに応答してトランザクショナルモードをサスペンドするように構成される。トランザクションを実行することの一部として、プロセッサは、投機的メモリアクセス動作によってアクセスされるデータを投機的データであるとしてマークする。暗黙サスペンド条件を決定すること実行中のスレッドにおける例えばオペレーティングシステムへの制御転送を検出することによるものを含むに応答して、プロセッサはトランザクショナルモードの実行をサスペンドし、このことはサスペンドフラグをセットすることと投機的データのマーキングをサスペンドすることとを含む。後で、プロセッサが再開条件を検出した場合例えば制御転送からのリターンに対応するリターン制御転送を検出することによるには、プロセッサは、投機的データのマーキングを再開することによって、トランザクショナルモードの実行を再開する。幾つかの実施形態においては、プロセッサは、トランザクションがサスペンドされている間にアトミックトランザクションが失敗したことを検出するように更に構成されてよい。幾つかの実施形態においては、プロセッサは、停止フラグをセットすると共にトランザクションを再開する試みがなされるときに停止フラグをチェックすることによって、サスペンドされたトランザクションが失敗したのを検出することに応答してよい。停止フラグがセットされているとチェックが決定した場合には、プロセッサはトランザクションを停止する。幾つかの実施形態においては、プロセッサは、停止フラグ及び/又はサスペンドフラグの値を実行コンテクストの一部としてセーブ/リストアするように構成されてよい。従来のHTM設計は、プログラム制御転送の存在下で正確性及び/又はセキュリティの問題を提示する。ここで用いられる制御転送の用語は、プログラムフロー、例えば何らかの実行中ソフトウエアプログラムから何らかの監視プログラム又はエラー若しくは割り込みのハンドラーへのプログラムフロー及び逆のフロー、における変化を信号として送り、生じさせ又は表示する命令又はイベントを参照する。幾つかの実施形態においては、監視プログラムはオペレーティングシステムであってよい。種々の実施形態において、異なるオペレーティングシステムが用いられてよく例えばLinux登録商標、Windows登録商標等、各オペレーティングシステムは、スケジューリングタスク、実行アプリケーション及び周辺機器制御、等のコンピュータの基本機能をサポートするソフトウエアとして実装されてよい。幾つかの実施形態においては、オペレーティングシステムは、基本機能を実装するためのカーネルを含み得る。種々の実施形態において、オペレーティングシステムのカーネルはモノリシックであってよく、あるいはマイクロカーネルであってよい。幾つかの実施形態においては、1つ以上のオペレーティングシステムは仮想であってよい例えばオペレーティングシステムは仮想マシン内のゲストOSであってよい。そのような実施形態においては、仮想オペレーティングシステムを展開するために用いられるハイパーバイザ又は別のランタイムシステムへの制御転送は、プログラムと仮想オペレーティングシステムの間でプログラム制御を転送してよい。ここに説明される実施形態は、オペレーティングシステムからの/への転送制御を参照するが、実施形態は、仮想オペレーティングシステム、ハイパーバイザ、及び/又は任意の他のランタイムシステムからの/への転送を含むように適合させられ得ることが理解されるべきである。従って、特に断りのないかぎり、制御転送は、何らかの実行中コードとそれが実行中のオペレーティングシステムとの間でのプログラムフローの変化には限定されない。種々の実施形態において、制御転送は、種々のイベント、例えばオペレーティングシステムへのシステムコールを実行中のプログラム、ソフトウエア及び/若しくはハードウエアの例外、ハードウエア割り込み、ソフトウエア信号、又は他のイベント、を検出することに応答して行われてよい。アプリケーションからオペレーティングシステムへの各制御転送は、対応するリターン制御転送を有していてよく、リターン制御転送は、元のサスペンド中の制御転送が生じたプログラムへ制御をリターンする。例えば、プログラムがシステムコールを起動してオペレーティングシステムへの転送を制御する場合、オペレーティングシステムは、何らかの機能を実行し次いでシステムコール起動直後に起動中のプログラム内の点へ制御をリターンすることによって、応答してよい。種々の実施形態において、ハードウエアトランザクショナルメモリシステムHTMは、複数のメモリアクセス動作を単一のアトミックトランザクションとして実行するための機能を提供してよい。幾つかの実施形態においては、プログラムは、トランザクショナルモードの実行を開始するための開始命令及びトランザクショナルモードの実行を終了するためのそれに続く終了命令を実行してよい。HTMは、トランザクショナルモード即ち開始命令及び終了命令の間においてアプリケーションによって実行される幾つかの又は全てのメモリ動作が、システムにおける他のスレッド/プロセッサの実行に対してアトミックに行われるのを確実にするように構成されてよい。アトミックな実行を確実にするために、HTMは、トランザクションのメモリアクセス動作を、トランザクションが成功裏にコミットされるまで投機的なものとして取り扱うと共に停止条件をモニタリングするように構成されてよい。例えばHTMは、トランザクショナルモードの実行の間に投機的命令によって投機的なものとして書き込まれた又は読み出されたデータをマークしてよく、またトランザクションが成功裏に終了した場合即ち停止条件が検出されなかった場合には、HTMは、当該データを非投機的なものとしてマークしてよく且つ/又はそれを共有メモリ内へ組み込んでよい。一方、停止条件が検出された場合には、HTMは、投機的データをドロップ/無効化し且つ/又は投機的データ書き込みの影響を共有メモリへ後退させるように構成されてよい。種々の実施形態に従うと、ハードウエアメカニズム例えばプロセッサ上のは、アクティブトランザクション内でプログラム制御転送を検出することによるものを含めサスペンション条件を自動的に検出すると共にトランザクショナル実行モードをサスペンドすることによって応答するように構成されてよい。幾つかの実施形態においては、HTMは、次いで対応するリターン制御転送を検出して、必要であればトランザクショナルモードの実行を再開するように構成されてよい。幾つかの実施形態においては、トランザクショナル実行モードがサスペンドされている間に、プロセッサは、メモリ動作によってアクセスされるデータを投機的であるとはマークしない。従ってそのような実施形態において、トランザクションが停止された場合、トランザクショナルモードがサスペンドされていた間に実行されたメモリアクセス動作は、後退させられないであろう。幾つかの実施形態において、トランザクショナル実行がサスペンドされている間に停止条件が検出された場合、HTMは、トランザクショナルモードが再開した後までトランザクションを停止するのを遅らせるように構成されてよい。例えば、停止条件例えばデータ衝突によって生じるを検出することに応答して、HTMは、停止フラグをセットし、そしてサスペンドされたトランザクショナルモードで実行を継続してよい。トランザクショナル実行モードを再開する場合、HTMは、停止フラグをチェックし、フラグがセットされている場合には停止を行ってよい。種々の実施形態において、トランザクショナル実行モードのサスペンション/再開は、ソフトウエア実行に対して透過的な方法でHTMによって行われてよい。即ち、HTMは、サスペンド/再開条件を自動的に検出すると共にトランザクショナル実行モードをサスペンド/再開するように構成されているので、ソフトウエア例えばプログラム及び/又はオペレーティングシステムは、トランザクショナル実行モードを適切なタイミングでサスペンドし又は再開することをHTMに指示する特別な命令を実行するように修正される必要はない。図1は幾つかの実施形態に従いサスペンド/再開能力を伴うHTMメカニズムを実装するように構成されるコンピュータシステムを示すブロック図である。図1において、システム100幾つかの実施形態においてはトランザクションメモリシステムと称されることがあるは、コンピュータプロセッサ102、共有メモリ140及び他のプロセッサ150を備える。これらの要素はバス160によって接続されていてよく、バス160は、ブロードキャスト及び/又は点対点を含む種々の相互接続であってよい。種々の実施形態において、他のプロセッサ150は、共有メモリ140をコンピュータプロセッサ102と共有する1つ以上のプロセッサを含んでいてよい。幾つかの実施形態においては、プロセッサ150の各々は、コンピュータプロセッサ102として構成され得る。図示される実施形態に従うと、コンピュータプロセッサ102は、上述したようにサスペンド/再開能力を伴うハードウエアトランザクショナルメモリ機能を実装するためのHTM110を含む。種々の実施形態において、HTM110は種々の方法で投機的データをマークしてよい。例えばHTM110は、データキャッシュ130等のデータキャッシュ内に投機的データを記憶すると共にマークすることによるものを含めキャッシュベースの投機的データバッファを用いてよい。他の実施形態においては、投機的データバッファは、他の構造において、例えばロードキュー、ストアキュー、又はロード/ストアキューにおいて実装されてよい。種々の実施形態において、各プロセッサは、多重の協働する投機的データバッファを実装してよい例えばデータキャッシュ130内に及びロード/ストアキュー内に。システム100において、HTM110は、制御転送検出ユニット112、トランザクションサスペンションユニット114、衝突検出ユニット116及びオーバフロー検出ユニット118を含む種々のハードウエアユニットを含む。種々の実施形態において、これらの要素のうちの種々の要素が全部又は一部において組み合わされてよく、あるいは更なる下位要素へと分解されてよい。幾つかの実施形態においては、制御転送検出ユニット112はサスペンド条件を決定するように構成されてよい。特定の実施形態においては、このサスペンド条件は暗黙的なサスペンド条件であってよく、暗黙サスペンド条件は、明示的な命令例えばポーズ又はサスペンドの存在以外の基準の幾つかのセットに基づいてサスペンド条件が決定されることを意味する。幾つかの実施形態においては、ユニット112は、プロセッサ102によって実行中のスレッドにおける制御転送を検出することに部分的に基づいて、サスペンド条件が存在することを決定するように構成されてよい。例えば、制御転送検出ユニットは、システムコール起動によって又はハードウエア割り込み例えばI/O割り込みによって生じる制御転送を検出してよい。種々の実施形態において、サスペンド状態を決定することはまた、プロセッサ102が現在トランザクショナル実行モードにあること、及び/又はプロセッサがより高い特権レベル例えばカーネルレベルでよりもむしろより低い特権レベル例えばアプリケーションレベルで実行中であること、を確認することを含んでいてよい。例えば幾つかのシステムにおいては、現在の特権レベルCPLはレジスタ例えばレジスタ120内に記憶され、そして種々の特権レベルを表示する値を保持することができる。そのようなシステムにおいては、システムは、より高い特権レベルで、種々のメモリ領域、I/Oポート、及び/又は特殊命令、等の保護された資源への実行スレッドアクセスを許可する。例えばx86アーキテクチャにおいては、最高の特権を有するレベル0から最低の特権を有するレベル3までの4つの特権レベルがある。そのようなシステムにおいては、レベル0はカーネル/エグゼクティブのために用いられ、レベル3はアプリケーションプログラムのために用いられる。幾つかの実施形態においては、高められた特権レベルでソフトウエアが命令を実行する必要がある場合例えばオペレーティングシステムコードを実行する場合には、ソフトウエアは、1つ以上の命令を実行して特権のレベルを上げてよく例えばレベル3からレベル0へ、また高められた特権がもはや必要なくなった場合には、1つ以上の命令を実行して特権レベルを下げてよい例えばレベル0からレベル3へ。幾つかのシステムにおいては、オペレーティングシステムコードが、それぞれエントリ及びエグジットに際して特権レベルを上げること及び下げることが可能である。幾つかの実施形態においては、制御転送検出ユニット112は、aオペレーティングシステムへの制御転送、bプロセッサがトランザクショナルモードで実行中であること、及びc現在の特権レベルが上げられていないこと例えばレベル3であること、を検出することに応答してサスペンション条件を検出するように構成されてよい。サスペンド条件を検出することに応答して、制御転送検出ユニット112は、トランザクションサスペンションユニット114にサスペンド条件を通知してよい。それに応答して、トランザクションサスペンションユニット114は、トランザクショナルモードの実行をサスペンドすることによって、例えばレジスタ120内にサスペンドフラグ122をセットすることによって、応答するように構成されてよい。上述したように、トランザクショナルモードがサスペンドされている間、幾つかの実施形態においては、プロセッサは、メモリ動作によってアクセスされるデータの投機的なものとしてのマーキングをサスペンドするように構成される。しかし、トランザクショナルモードがサスペンドされるよりも前に投機的なものとしてマークされたデータは、投機的マークを伴って保持される。従って、特定の実施形態においては、停止が生じると、サスペンションの間に生じたメモリ値への修正は後退させられないであろう一方で、トランザクショナルモードがサスペンドされるよりも前に又はサスペンドされたよりも後に生じた修正は後退させられることになる。幾つかの実施形態においては、制御転送検出ユニット112は、再開条件を決定するように更に構成されてよく、サスペンド条件を決定するために検出された制御転送に対応するリターン制御転送を検出することによるものがこれに含まれる。例えば、サスペンド条件を決定するために検出された制御転送がオペレーティングシステムに対するシステムコールであったとすると、リターン転送コールはシステムコールからのリターンであってよい。幾つかの状況においては、サスペンド条件を最初に生じさせる制御転送ここではサスペンディング転送と称されるは、サスペンディング制御転送からのリターンが実行されるよりも前に、1つ以上の後続の制御転送によって追従されてよい。この場合、多重リターン制御転送が実行され得るが、トランザクショナルモードは、サスペンディング制御転送に対応するリターン制御転送が実行されるまでに再開されることはないであろう。幾つかの実施形態においては、制御転送検出ユニット112は、トランザクショナルモードの実行を再開することをトランザクションサスペンションユニットに通知することによって、再開条件を検出することに応答するように構成されてよい。幾つかの実施形態においては、トランザクショナルモードを再開することは、サスペンドフラグ122をアンセットすること及び/又は上述したように停止フラグ124をチェックすることを含み得る。図示される実施形態に従うと、HTM110は、他のメカニズム及び/又はユニット、例えば衝突検出ユニット116、を含み得る。種々の実施形態において、衝突検出ユニット116は、種々の停止条件を検出するように構成されてよい。例えば、衝突検出ユニットは、MESI又はMOESI等のキャッシュコヒーレンシプロトコルの一部として他のプロセッサ150から受け取られるキャッシュコヒーレンシメッセージプローブをモニタリングするように構成されてよい。1つ以上のそのようなプローブがデータ衝突を示す場合には、衝突検出ユニット116は、停止条件が存在すること及びトランザクション試行が停止され得ることを決定する。上述したように、幾つかの実施形態においては、HTMは、サスペンドされたトランザクショナルモードで実行中のトランザクション試行を停止することを、トランザクショナル実行モードが再開されるまで遅らせるように構成されてよい。そのような実施形態においては、サスペンドされたトランザクショナルモードの間に停止条件を検出することに応答して、衝突検出ユニットは、トランザクションをすぐに停止させ且つ/又は後退させるよりもむしろ、停止フラグ124等の停止フラグをセットする即ち予め定められた値を適切な記憶ロケーションに記憶させるように構成されてよい。トランザクショナルモードの実行が再開されると例えばオペレーティングシステムカーネルから復帰すると、HTMは、停止フラグ124がセットされていることを検出することができ、またトランザクション試行を停止することによって応答してよい。種々の他のハードウエアが他の停止条件を検出してよい。例えばオーバフロー検出ユニット118は、投機的バッファオーバフロー条件の形態にある停止条件を検出するように構成されてよい。バッファオーバフロー条件は、新たな投機的データをバッファリングするのに容量が十分でない投機的バッファ例えばデータキャッシュ130内に実装されるもの内にデータの所与の部分がバッファリングされることが、トランザクションを実行するために必要な場合に、検出され得る。ここで用いられる投機的バッファオーバフローは、検出されている最中のオーバフロー条件を参照し、投機的データが実際にはバッファから退去させられている状況は参照しない。データ衝突と同様に、サスペンドされたトランザクショナルモードでプロセッサが実行中にオーバフロー検出ユニット118がオーバフロー条件を検出した場合には、停止フラグ124がセットされてよく、これにより、HTM110は、トランザクショナル実行モードが再開されるときにトランザクション試行を停止する/後退させることができる。図2は幾つかの実施形態に従いメモリトランザクションを実行しながらトランザクショナルモードの実行をサスペンドするための方法を示すフロー図である。方法200は、メモリトランザクションを利用するように構成されるコンピュータプログラムを実行する過程においてHTM例えば図1のHTM110によって実行されてよい。図示される実施形態に従うと、方法200は、210に示されるようにプロセッサがトランザクショナルモードでの実行を開始するときに始まる。幾つかの実施形態においては、このことは、トランザクショナル実行を開始するように設計された1つ以上の命令を実行しているソフトウエアプログラムに応答して行われてよい。210に示されるようにトランザクショナル実行モードを開始することは、例えばシステム100のレジスタ120内にあるような1つ以上のフラグをセットすることを含み得る。一旦プロセッサがトランザクショナルモードで実行中になると、220に示されるように、プロセッサは、投機的メモリアクセス動作によってアクセスされるデータを投機的なものとしてマークするように構成されてよい。幾つかの実施形態においては、トランザクショナルモードで実行される全てのメモリアクセス動作は投機的であると考えられてよく、従って各そのようなメモリアクセス動作によってアクセスされるデータは投機的であるとしてマークされてよい。他の実施形態においては、トランザクション内のメモリアクセス動作の一部が、投機的であるとして明示的に指定されてよい。幾つかのそのような実施形態においては、これらの明示的に投機的な命令の各々によってアクセスされるデータのみが、220に示されるように投機的であるとしてマークされてよい。種々の実施形態において、データを投機的であるとしてマークする処理は、HTMによって使用されている投機的バッファの種類に依存するであろう。例えば、投機的データをデータキャッシュ内にバッファリングするHTMに対しては、データを投機的であるとしてマークすることは、当該データのコピーをデータキャッシュ内に記憶することと、1つ以上の投機的ビットを用いて投機的データを含むキャッシュのキャッシュブロックをマークすることと、を含んでいてよい。投機的ビットをマークすることはまた、ロード/ストアキュー等の他の構造によって実装されるバッファ内で投機的データをマークするために用いられてもよい。図示される実施形態に従うと、トランザクショナル実行の間におけるどこかの時点で、230に示されるように、HTM又はその何らかの要素、例えば制御転送検出ユニット112が、制御転送を検出することによるのを含めサスペンド条件を決定する。幾つかの実施形態においては、サスペンド条件は、プログラム制御がまさにオペレーティングシステムカーネルへ転送されようとしていることを示すものであってよい。例えば幾つかの実施形態においては、サスペンド条件は、作成されているシステムコールと、何らかの所与のアプリケーションレベルに対応するプロセッサの現在の特権レベル例えば幾つかの実施形態においてこの所与の特権レベルは3ユーザ又はアプリケーションレベルであってよいと、に応答して検出され得る。別の例においては、サスペンド条件は、ハードウエア割り込みと、CPLがレベル3等のアプリケーションレベル特権を示していることと、を検出することに応答して検出され得る。従ってそのような実施形態においては、制御転送がトランザクショナル実行の間に検出されると、HTMはCPLをチェックして制御転送がアプリケーションからオペレーティングシステムカーネルへのものであるかどうかを決定してよい。そうである場合には、サスペンド条件が存在すると決定され得る。方法200においては、サスペンド条件を検出することに応答して、HTMは、240に示されるようにトランザクショナル実行をサスペンドしてよい。トランザクショナル実行をサスペンドすることは、サスペンドフラグ例えば何らかの記憶ロケーション内に記憶される値を参照するサスペンドフラグ122をセットすることを含んでいてよく、サスペンドフラグは、トランザクショナル実行モードがサスペンドされる旨の信号をHTMへ送ってよい。一旦トランザクショナル実行モードがサスペンドされると、プロセッサは、250に示されるように、アクセスされたデータを投機的であるとしてマークすることなしにメモリ動作を実行してよい。即ち、制御が一旦オペレーティングシステムへ転送されると、トランザクショナル実行モードはサスペンドされ、そしてオペレーティングシステムによって実行されるメモリ動作は、投機的であるとして取り扱われることはなく、それにより停止の場合に後退させられることはない。上述したように、幾つかの実施形態においては、停止条件が検出されたとしても、プロセッサはサスペンドされたモードにある間はトランザクション試行を停止しなくてよい。そのような実施形態においては、プロセッサは、停止フラグ何らかの記憶ロケーションに記憶された値をセットすること、及び一旦トランザクショナル実行モードが再開されたならばトランザクションを停止すること後退させることを含む、によって停止条件を検出することに応答してよい。図3はトランザクションの間にトランザクショナルモードの実行をサスペンドすることによるものを含めHTMを用いたアトミックトランザクションを実行するための方法を示すフロー図である。方法は、305に示されるように、トランザクショナル実行モードを開始することによって始まる。前述と同様に、プロセッサはトランザクション開始命令を実行することに応答してこのステップを行ってよい。方法300において、HTMがサスペンド条件を検出した場合310からの肯定の出口によって示されるには、HTMは、例えば315に示されるようにサスペンドフラグをセットすることによって、トランザクショナルモードをサスペンドしてよい。310においてサスペンド条件を検出することは、図2の230においてサスペンド条件を検出することに類似していてよく、またアクティブなサスペンドされていないトランザクショナルモードの間におけるオペレーティングシステムへの制御転送を検出することを含んでいてよい。オペレーティングシステムへの制御転送を検出することに応答して、HTMはまた、適切なリターン制御転送が後で識別され得るように、用いられる制御転送の種類を記録してもよい。サスペンド条件が検出されない場合には、310からの否定の出口で示されるように、トランザクションはサスペンドされない。方法300に従うと、プロセッサは次いで320に示されるように次のメモリアクセス命令を実行する。トランザクショナルモードの実行がサスペンドされていない場合325からの否定の出口によって示されるには、HTMは、330に示されるように、メモリ動作によってアクセスされる任意の投機的データを投機的であるとしてマークする。例えば、動作が読み出し動作である場合には、HTMは、値が読み出されたメモリロケーションがトランザクションの読み出しセットの一部であることを記録してよい。従って、投機的メモリロケーションに記憶された値を別のプロセッサが修正したことを示す無効化プローブが受信されると、プロセッサは停止条件を検出する。上述したように、幾つかの実施形態においてはアクティブトランザクションにおける全てのメモリ動作が投機的であると考えられてよいが、他の実施形態においては、幾つかのデータ及び/又はメモリ動作は投機的であるとして明示的に識別されてよい一方で他は投機的であるとして明示的に識別されなくてよい。そのような実施形態においては、非投機的データにのみアクセスするメモリ動作は、いかなるデータをも投機的であるとしてマークすることはないであろう。例えば1つのそのような実施形態においては、方法300は、325からの否定的な出口が、既に投機的であるとして明示的にマークされたメモリ動作によってアクセスされるメモリ動作及び/又はデータを更に条件とするように増強されてよい。投機的データバッファを実装するためにキャッシュが用いられる実施形態においては、読み出しデータに対応するキャッシュブロックは、それがトランザクショナル実行モードで読み出されたことを示す投機的フラグを用いてマークされてよい。幾つかの実施形態においては、各キャッシュブロックは、読み出し投機的フラグ及び書き込み投機的フラグを備えていてよく、あるいはこれらに関連付けられていてよく、これらはメモリ区域もしあれば上で実行された投機的メモリアクセス動作の種類を示す。種々の実施形態において、これらのフラグは組み合わされてよく又は別々であってよく、またデータキャッシュ、ロード/ストアキュー、及び/又は他のものによって実装されるような種々の投機的バッファにおいて用いられてよい。図示される実施形態に従うと、トランザクションがサスペンドされた場合325からの肯定的な出口によって示される、投機的データのマーキング330におけるようなはHTMによって行われない。その代わりにHTMは、335にあるように、再開条件が存在するかどうかを決定してよい。幾つかの実施形態においては、再開条件は、オペレーティングシステムからアプリケーションへのリターン制御転送を検出することに応答して検出され得る。幾つかの実施形態においては、そのようなリターン制御転送を検出することは、実行中の又はまさに実行されようとしている制御転送が、オペレーティングシステムへの元のサスペンディング制御転送に対応するリターンであることを決定することを含んでいてよい。加えて、再開条件を検出することは、プロセッサがレベル0等の特権モード例えばカーネルレベルで実行中であることを示すCPLに更に依存していてよい。方法300において、335からの肯定の出口によって示されるように再開条件が検出されると、340に示されるようにトランザクショナルモードの実行が再開されてよい。トランザクショナルモードの実行を再開することは、サスペンドフラグをアンセットすることにより、投機的データのマーキングが必要に応じて再開すべきであることをHTMに示すことを含んでいてよい。図4を参照して後で論じられるように、トランザクショナルモードを再開することはまた、サスペンションの間に停止条件が検出されたかどうかを決定すること例えば停止フラグをチェックすることによってを含み得る。図3に図示される実施形態において、トランザクションが更なる命令を含む場合345からの肯定の出口によって示されるには、プロセッサは方法300を繰り返してよい345から310までのフィードバックループによって示されるように。そうでない場合には、345からの否定の出口によって示されるように、トランザクションは350に示されるようにコミットされてよい。種々の実施形態において、トランザクションをコミットすることは種々のステップを含み得る。例えば、トランザクションをコミットすることの一部として、マークされた投機的データが非投機的であるとしてマークされてよい。幾つかの実施形態においては、トランザクションをコミットすることは、投機的に書き込まれたデータを共有メモリへ書き込むことを含んでいてよく、あるいは投機的に書き込まれたデータをシステム内の他のプロセッサと共有することを含んでいてよい。尚、方法300は、310でサスペンド条件を検出することと335で再開条件を検出することとの間に少なくとも1つのメモリアクセスを実行することを含むが、当業者であればこれが必ずしもサスペンドされたトランザクションの全ての場合ではないことを理解するであろう。図4は幾つかの実施形態に従いサスペンドされたトランザクショナルモードの間に検出される停止条件を処理するための方法を示すフロー図である。前述したのと同様に、方法は、405に示されるようにトランザクショナル実行モードを開始することと、410に示されるようにサスペンド条件を検出することに応答してトランザクショナル実行モードをサスペンドすることと、によって開始する。一旦トランザクショナル実行モードがサスペンドされると、プロセッサは、オペレーティングシステムコードを非トランザクショナルモードで即ちアクセスされたデータを投機的であるとしてマークすることなしに実行することを開始してよい。方法400に従うと、HTMは、415に示されるように、トランザクション試行が失敗したことを示す停止条件を検出してよい。種々の実施形態において、種々の状況が停止条件を引き起こすであろうし、これには、上述したように、別のプロセッサとのデータ衝突、又は投機的バッファオーバフロー条件が検出されること、が含まれる。例えばデータ衝突は、当該プロセッサによって投機的であるとしてマークされたメモリ区域に別のプロセッサがアクセスし且つそのメモリ区域に記憶されたデータをいずれかのプロセッサが修正した場合に生じ得る。停止条件の別の例は、トランザクションの間にアクセスされる全ての投機的データをバッファリングするのに十分な容量を投機的データバッファ例えばデータキャッシュが有していない場合等の投機的バッファオーバフロー条件が検出されることに応答して検出されてよい。過剰な投機的データ及び/又は非投機的データが同時にバッファリングされることに起因して、バッファが十分な容量を有することができない場合がある。従来のシステムにおいては、HTMは、停止条件を検出した場合、即座にトランザクションを停止するはずである。しかし、これにより、オペレーティングシステムソフトウエアの種々の構造が矛盾した状態のままになり得る。対照的に、種々の実施形態におけるHTMは、サスペンドされたトランザクションを、それが再開するまでは停止することを遅らせることができる。例えば図4の方法400においては、415で停止条件を検出することに応答して、HTMは420に示されるように停止フラグをセットし、そして425に示されるようにサスペンドされたトランザクショナルモードで実行を継続する。実行はサスペンドされたトランザクショナルモードでオペレーティングシステムにおいて継続するが、種々の追加的な制御転送が行われてよい。後の時点で、HTMは、サスペンディング制御転送に整合するリターン制御転送を検出すること及び制御をアプリケーションコードへリターンすることに応答して、再開条件を検出してよい430に示されるように。図示される実施形態に従うと、アプリケーションコードへリターンし且つトランザクショナル実行を再開した後に、HTMは停止フラグがセットされているかどうかを435で決定してよい。停止フラグがセットされていない場合には、サスペンドされた実行モードの間にトランザクションは失敗しなかったことになり、従ってHTMは、サスペンドされたフラグをクリアしてよく、またトランザクショナルモードで実行を継続してよい。一方、方法400において420で停止フラグがセットされた場合には、HTMは停止フラグがセットされていると435で決定することになり、これに応答して440でトランザクションを停止することになる。上述したように、440でトランザクションを停止することは、投機的データを無効であるとしてマークすることを含んでいてよい。このことは、ここでは投機的データをドロップすることと称されることがある。投機的データが一旦ドロップされると、その投機的データは他のプロセッサによるアクセスのための共有メモリには記憶されない。例えば、投機的バッファ内の投機的データが無効であるとしてマークされると、プロセッサは、その後の命令実行に対してこのデータに頼らず、またこれを共有メモリへ転送しない。更に、無効化されたデータをシステム内の他のプロセッサと連携させるようなその後のトランザクショナル停止又はキャッシュコヒーレンシアクションは必要ない。図5は幾つかの実施形態に従い自動サスペンド/再開能力を伴うHTMを実装するための特定の方法を示している。方法502は、500に示されるようにトランザクショナル実行モードを開始することによって始まる。実行の間、HTMは、505に示されるようにオペレーティングシステムカーネルへの制御転送を検出する。プロセッサが510からの肯定的な出口によって示されるようにサスペンドされたトランザクショナルモードで実行中の場合、トランザクショナル実行モードをサスペンドすることに関して追加的なアクションがとられる必要はない。一方、プロセッサが現在サスペンドされた状態にあるモードの実行中でない場合、HTMは515に示されるように現在の特権レベルをチェックしてよい。特権レベルが515からの否定的な出口によって示されるように上げられている場合例えばカーネルレベル0又は幾つかの実施形態においては非アプリケーションレベルには、トランザクショナルモードの実行をサスペンドすることに関して更なるアクションがとられる必要はない。図示される実施形態に従うと、プロセッサがサスペンドされたトランザクショナルモードになく510からの否定的な出口且つ現在の特権レベルCPLが515からの肯定的な出口によって示されるようにより低い特権レベル例えばアプリケーションレベル3である場合には、HTMは、制御転送イベントの表示を記録してよく520に示される、またトランザクショナル実行モードをサスペンドしてよい525に示される。方法502においては、525でトランザクショナル実行モードがサスペンドされた後に、HTMは530で別の制御転送を検出してよい。530で検出されたこの後続の制御転送が505のサスペンディング制御転送に対応するリターン制御転送である場合535からの肯定の出口で示されるには、プロセッサは実行をアプリケーションモードにリターンしてよく、またHTMは540に示されるようにトランザクショナル実行モードを再開即ちアンサスペンドしてよい。一方、制御転送が505のサスペンディング制御転送に対応するリターン制御転送でない場合には、HTMは、535から530のフィードバックループによって示されるように、対応するリターン制御転送が発見されるまでトランザクショナル実行モードを継続してよい。場合によっては、最終的にコミットされるまで所与のトランザクションは多重回数サスペンドし及び/又は再開してよい例えば540から505の随意的なフィードバックループによって示されるように。種々の実施形態において、任意の数の制御転送がサスペンディング転送とその対応するリターン制御転送の間に実行されてよい。しかし、幾つかの実施形態においては、サスペンディング転送に対応するリターン制御転送が検出されるとき535からの肯定的な出口だけがHTM再開トランザクショナルモードであってよい。図6は幾つかの実施形態に従いサスペンションが実行され得る種々の制御転送をリストアップした表である。リストアップされた制御転送の種類は、遠い制御転送、システムコール、及び例外/割り込みを含む。各々に対して転送の種類はそれぞれリストアップされたサスペンションイベントによって検出されてよく、また転送からのリターンはそれぞれリストされた再開イベントによって検出されてよい。例えば、オペレーティングシステムへのシステムコールは、SYSENTER命令を検出することによって検出されてよく、またマッチングリターン制御転送はSYSEXIT命令によって示されることになる。図7は幾つかの実施形態に従いここに説明される自動サスペンド/再開機能を伴うハードウエアトランザクショナルメモリシステムを実装するように構成されるコンピュータシステムを示している。コンピュータシステム700は種々のデバイスの任意のものであってよく、限定はされないが例えば、パーソナルコンピュータシステム、デスクトップコンピュータシステム、ラップトップ若しくはノートブック型のコンピュータ、メインフレームコンピュータシステム、ハンドヘルドコンピュータ、ワークステーション、ネットワークコンピュータ、コンシューマデバイス、アプリケーションサーバ、記憶デバイス、周辺機器デバイススイッチ、モデム、ルータ等、又は一般的に任意の種類のコンピューティングデバイスが含まれる。コンピュータシステム700は1つ以上のプロセッサ750を含んでいてよく、1つ以上のプロセッサ750の各々は多重コアを含んでいてよく、多重コアの任意のものは単一スレッド又は多重スレッドにされていてよい。図1に関しても説明されるように、各プロセッサは、種々のフラグ及びオペランドを記憶するために用いられ得るレジスタ752を備えていてよい。プロセッサ750は、アクセスされたデータをキャッシュし且つ/又は投機的データバッファを実装するように構成されるデータキャッシュ754を更に備えていてよい。例えばデータキャッシュ754は、各キャッシュブロックに関連付けられ且つデータを投機的に読み出すこと及び/又は書き込むことのために使用可能な1つ以上のビットを含み得る。プロセッサ750は、制御転送を検出することによるものを含めサスペンド/再開条件を検出するための制御転送検出ユニット756を更に含み得る。図7に従うと、プロセッサ750はまた、ここに説明されるようにトランザクショナル実行モードをサスペンド/再開するためのトランザクションサスペンションユニット758を含み得る。図示される実施形態においては、コンピュータシステム700はまた、オフチップL2又はL3キャッシュ等の1つ以上のオフチップキャッシュ760を含み得る。幾つかの実施形態においては、L2及び/又はL3キャッシュはオンチップで実装されてよい。コンピュータシステム700はまた、永続的記憶デバイス770例えば光学的記憶装置、磁気的記憶装置、ハードドライブ、テープドライブ、ソリッドステートメモリ等を含んでいてよく、永続的記憶デバイス770は、772で示されるようなファイルシステムによって組織化されるデータを記憶してよい。コンピュータシステム700はまた、任意の数のネットワークを介してデータを送信し且つ受信するための780で示されるような1つ以上のネットワークインタフェースを含んでいてよい。コンピュータシステム700はまた、1つ以上のメモリ710例えば1つ以上のキャッシュ、SRAM、DRAM、RDRAM、EDO_RAM、DDR_7_RAM、SDRAM、ラムバスRAM、EEPROM等を含んでいてよい。種々の実施形態は、より少ない要素又は図7には図示されない付加的な要素例えばビデオカード、オーディオカード、追加的なネットワークインタフェース、周辺デバイス、ネットワークインタフェースATMインタフェース、イーサネット登録商標インタフェース、フレームリレーインタフェース等を含んでいてよい。1つ以上のプロセッサ750、単一又は複数の記憶装置740、オフチップキャッシュ760、永続的記憶デバイス770、ネットワークインタフェース780、及びシステムメモリ710は、システム相互接続740を介して結合されてよい。システムメモリ710の1つ以上は、プログラム命令720並びに種々のデータ構造及び変数730を含んでいてよい。プログラム命令720は、プラットフォームネイティブバイナリの任意のインタープリタ型言語、例えばJava登録商標バイトコード、若しくは任意の他の言語、例えばC/C、フォートラン等、又はそれらの任意の組み合わせにおいてエンコードされてよい。プログラム命令720は、単一及び/又は多重スレッドの1つ以上のプログラム722を実装するように実行可能なプログラム命令を含んでいてよく、単一及び/又は多重スレッドの1つ以上のプログラム722は、ここに説明されるように命令の開始及びコミットを実行することによるようなアトミックメモリトランザクションを利用してよい。図示される実施形態に従うと、メモリ710は、Windows登録商標及び/又はLinux登録商標等のオペレーティングシステム724を実装するように実行可能なプログラム命令を備えていてよい。幾つかの実施形態においては、オペレーティングシステム724は、上げられた特権レベルで種々の機能を実行するように構成されるカーネルを含んでいてよい。例えばオペレーティングシステム724は、アプリケーション722が起動し得るシステムコールを定義するアプリケーションプログラミングインタフェースAPIを露出してよい。そのようなシステムコールを起動することに応答して、プロセッサ750は、アプリケーション722によって実行中のアクティブトランザクションを、ここに説明されるようにアプリケーション722及びオペレーティングシステム724に対して実質的に透過的な方法でサスペンドしてよい。アプリケーション722等のソフトウエアプログラムは、コンピュータプログラム製品又はソフトウエアとして提供されてよく、これらは命令が記憶されたコンピュータ可読記憶媒体を含んでいてよく、命令は種々の実施形態に従う処理を行うようにコンピュータシステム又は他の電子デバイスをプログラムするために用いられてよい。コンピュータ可読記憶媒体は、機械例えばコンピュータによって可読な形態例えばソフトウエア、処理アプリケーションで情報を記憶するための任意のメカニズムを含み得る。機械可読記憶媒体持続的機械可読記憶媒体は、限定はされないが、磁気記憶媒体例えばフロッピー登録商標ディスク;リードオンリメモリROM;ランダムアクセスメモリRAM;消去可能プログラム可能メモリ例えばEPROM及びEEPROM;フラッシュメモリ;プログラム命令を記憶するのに適する電気的な又は他の種類の媒体を含み得る。加えて、プログラム命令は、光学的な、音響的な、又は他の形態の伝搬信号例えば搬送波、赤外線信号、デジタル信号等を用いて通信されてよい。上述したコンピュータ可読記憶媒体は、プログラムによって読み出される命令を記憶するための1つの実施形態において用いられてよく、またシステムプロセッサ750を備えるハードウエアを製造するために直接的に又は間接的に用いられてよい。例えば命令は、ベリログ又はVHDL等の高レベル設計言語HDLにおけるハードウエア機能の行動レベル又はレジスタ転送レベルRTLの記述を記述する1つ以上のデータ構造を記述してよい。記述は合成ツールによって読み出されてよく、合成ツールは記述を合成してネットリストを作成することができる。ネットリストは一連のゲート例えば合成ライブラリにおいて定義されるを備えていてよく、一連のゲートはプロセッサ750の機能を表す。ネットリストは次いで、マスクに適用されるべき幾何学的形状を記述するデータセットを作成するために配置されると共に経路付けられてよい。マスクは次いで、プロセッサ750に対応する単一又は複数の半導体回路を製造するために種々の半導体製造ステップにおいて使用されてよい。代替的には、キャリア媒体300上のデータベースが必要に応じてネットリスト合成ライブラリを伴う又は伴わない又はデータセットであってよい。本開示の範囲は、ここで取り上げられている問題の一部又は全部を軽減するしないにかかわらず、ここに開示される明示的に又は暗黙的に任意の特徴又は特徴の組み合わせ、あるいはその任意の一般化を含む。従って、本出願又はそれに対して優先権を主張する出願の手続きの間に任意のそのような特徴の組み合わせに関して新たな特許請求の範囲が編成されることがある。特に、添付の特許請求の範囲を参照して、従属請求項からの特徴が独立請求項の特徴と組み合わされることがあり、またそれぞれの独立請求項からの特徴は、添付の特許請求の範囲に列挙される特定の組み合わせにおけるだけでなく任意の適切な方法において組み合わされることがある。上記実施形態はかなり詳細に説明されてきたが、上記開示が一旦完全に理解されたならば、種々の変形及び修正が当業者にとって明らかなはずである。以下の特許請求の範囲は、全てのそのような変形及び修正を包含することが意図されている。