"能動的アトミックメモリトランザクション試行のリードセットにおける2つ以上のワードのグループの指定されたワードに対する早期リリース表示を受け取るように構成されるハードウェアトランザクションメモリシステムを備える装置であって、前記ハードウェアトランザクションメモリシステムは前記早期リリース表示を受け取ることと前記指定されたワード以外の前記グループ内のワードが前記能動的アトミックメモリトランザクション試行の間に投機的に読み出されなかったのを決定することとに応答して前記ワードのグループを前記リードセットから除去するように構成される装置。前記ハードウェアトランザクションメモリシステムは、処理コアが前記ワードのグループのいずれか1つを投機的に読み出すことに応答して前記ワードのグループを前記能動的アトミックメモリトランザクション試行の前記リードセットに加えるように構成され、当該1つのワードは、前記能動的アトミックメモリトランザクション試行を実行することの一部として投機的に読み出されたグループ内の最初のものである請求項1の装置。前記ワードのグループは前記処理コアのキャッシュ内の単一のキャッシュラインに対応し、前記ワードのグループを前記リードセットに加えることは、前記キャッシュライン内の前記ワードのグループが前記能動的トランザクションの前記リードセット内にあることを示すために前記キャッシュラインに関連付けられるフラグをセットすることを備える請求項2の装置。前記ワードのグループを前記リードセットに加えることは、記憶アレイの所与のインデックスにフラグをセットすることを備え、前記ワードのグループ内の各ワードに対して、前記インデックスは、当該ワードが記憶される共有メモリ内の個別のアドレスに所与のハッシュ関数を適用することの結果に対応する請求項2の装置。前記ワードのグループを前記能動的アトミックメモリトランザクション試行の前記リードセットに加えることは、前記能動的トランザクション内で最初に投機的に読み出されることになった前記グループ内の前記1つのワードの表示を記録することを備え、前記1つのワードの前記表示は、前記ワードのグループの順序における前記1つのワードの位置を示すインデックスを備える請求項2の装置。前記ハードウェアトランザクションメモリは、前記1つのワードを読み出した後に前記グループ内の別のワードを前記処理コアが読み出すことに応答するように更に構成され、当該応答は、前記1つのワード及び前記別のワードが同じメモリアドレスに対応するかどうかを決定することと、前記1つのワード及び前記別のワードが同じメモリアドレスに対応しないと決定することに応答して、前記グループ内の複数のワードが投機的に読み出されたとの表示を記録することと、によってなされる請求項5の装置。前記早期リリース表示は前記リードセットから除去する前記グループの複数のワードを指定し、前記ハードウェアトランザクションメモリシステムは、当該指定された複数のワード以外の前記グループ内のワードが前記能動的トランザクションの間に投機的に読み出されなかったとの決定に少なくとも部分的に基づいて、前記指定された複数のワードを前記リードセットから除去するように更に構成される請求項1の装置。ハードウェアトランザクションメモリシステムが能動的アトミックメモリトランザクション試行のリードセットにおける2つ以上のワードのグループの指定されたワードに対する早期リリース表示を受け取ることと、前記グループ内の他のワードが前記能動的アトミックメモリトランザクション試行の間に投機的に読み出されなかったことに応答して前記ハードウェアトランザクションメモリシステムが前記ワードのグループを前記能動的アトミックメモリトランザクション試行の前記リードセットから除去することと、を備える方法。前記早期リリース表示を受け取る前に、処理コアが前記ワードのグループの1つのワードを投機的に読み出すことに応答して前記ワードのグループを前記能動的アトミックメモリトランザクション試行の前記リードセットに加えることを更に備え、前記1つのワードは、前記能動的トランザクションを実行することの一部として投機的に読み出されたグループ内の最初のものである請求項8の方法。ライトセットワードのグループはキャッシュの単一のキャッシュラインに対応し、前記ワードのグループを前記リードセットに加えることは、前記キャッシュライン内の前記ワードのグループが前記能動的トランザクションの前記リードセット内にあることを示すために前記キャッシュラインに関連付けられるフラグをセットすることを備える請求項9の方法。前記ワードのグループを前記リードセットに加えることは、記憶アレイの所与のインデックスにフラグをセットすることを備え、前記ワードのグループ内の各ワードに対して、前記インデックスは、当該ワードが記憶される共有メモリ内の個別のアドレスに所与のハッシュ関数を適用することの結果に対応する請求項9の方法。前記ワードのグループを前記能動的アトミックメモリトランザクション試行の前記リードセットに加えることは、前記能動的トランザクション内で最初に投機的に読み出されることになった前記グループ内の前記1つのワードの表示を記録することを備える請求項9の方法。前記1つのワードの前記表示は、ライトセットワードのグループの順序における前記1つのワードの位置を示すインデックスを備える請求項12の方法。前記1つのワードが読み出された後に前記グループ内の別のワードが投機的に読み出されることと、前記1つのワード及び前記別のワードが同じメモリアドレスに対応しないと決定することと、に応答して、前記グループ内の複数のワードが投機的に読み出されたとの表示を記録することを更に備える請求項12の方法。コンピュータシステム上で実行可能なプログラムによって動作させられるデータ構造を備えるコンピュータ可読記憶媒体であって、前記プログラムは前記データ構造上で動作して前記データ構造によって記述される回路を含む集積回路を製造するための処理の一部を行い、前記データ構造において記述される前記回路は、能動的アトミックメモリトランザクション試行のリードセットにおける2つ以上のワードのグループの指定されたワードに対する早期リリース表示を受け取るように構成されるハードウェアトランザクションメモリシステムを含み、前記ハードウェアトランザクションメモリシステムは、前記早期リリース表示を受け取ることと前記指定されたワード以外の前記グループ内のワードが前記能動的アトミックメモリトランザクション試行の間に投機的に読み出されなかったのを決定することとに応答して前記ワードのグループを前記リードセットから除去するように構成されるコンピュータ可読記憶媒体。HTMシステムはハードウェアにおいて実装されるので、リードセット及びライトセットの経過を追うための資源は限定されており、HTM資源を効率的に使用するための種々の技術が用いられてきた。そのような技術の一群としてワードグループ化があり、それにより、HTMは、リードセット及び/又はライトセットにおいて複数のアドレス可能ワードをグループ化すると共にまとめてそれらの経過を追うことができる。例えば、ある能動的トランザクションにおける所与のワードへの投機的アクセスを検出することに応答して、HTMは、そのワードが属するキャッシュライン全体複数の異なるアドレス可能ワードを保持しているを、そのトランザクションのリードセット又はライトセット内にあるものとしてマーキングすることができる。あるキャッシュラインをマーキングすることは、そのキャッシュラインに関連付けられるフラグをセットすることにより行われることがある。従って、グループ内の単一のワードのみが投機的にアクセスされた場合であっても、HTMはキャッシュライン内の全てのワードをリードセット又はライトセット内へと加える。HTM資源を効率的に使用するための別の技術は、早期リリースである。この技術においては、プログラマは、アドレス可能ワードを能動的トランザクションのリードセットから明示的にリリースすることが許可されている例えば明示的リリース命令を用いて。例えば、所与のトランザクションがそのトランザクションにおける特定の点を越える所与のリード値に頼らない場合、プログラマは、その値が読み出されたメモリアドレスをリードセットから明示的に除去してよい。これらの技術を用いることによって、HTM設計者は、彼らのシステムの容量を増大することを可能にしてきたし、またプログラマがHTMを用いてより大きな及びより複雑なアトミックメモリトランザクションを表現し及び実行することを可能にしてきた。投機的に読み出されたデータの早期リリースをハードウェアトランザクションメモリシステムにおいて実装するための方法及び装置が開示される。処理コアは、能動的トランザクションのリードセットにおけるワードのグループの指定されたワードに対する早期リリース命令等の早期リリース表示を受け取るように構成されるハードウェアトランザクションメモリシステムを備える。早期リリース表示は、指定されたワードをリードセットから除去するための要求を備える。早期リリース表示に応答して、処理コアは、指定されたワード以外のグループ内のワードが能動的トランザクションの間に投機的に読み出されなかったことを決定した後にのみ、ワードのグループをリードセットから除去する。幾つかの実施形態においては、ワードのグループはハードウェアトランザクションメモリシステムによってまとめて経過を追われてよく、ワードのグループのいずれか1つが能動的トランザクションの間に投機的に読み出された場合には、グループ内の全てのワードが能動的トランザクションのリードセットに追加されてよい。例えば幾つかの実施形態においては、ワードのグループは、処理コアのキャッシュ内の単一のキャッシュラインに対応していてよく、またそのキャッシュラインに関連付けられるフラグをセットすることによって、まとめてリードセットに加えられてよい。他の実施形態においては、グループは、ブルームフィルタ内のインデックスを用いて経過を追われてよく、またそのブルームフィルタインデックスにフラグをセットすることによってリードセットに加えられてよい。本明細書は1つの実施形態又はある実施形態への参照を含む。1つの実施形態においてにおける又はある実施形態においてにおけるの句の出現は、必ずしも同じ実施形態を参照しない。特定の特徴、構成又は特性は、本開示に合致する任意の適切な方法において組み合わされてよい。用語。以下の幾つかの段落は、本開示添付の特許請求の範囲を含むにおいて見出される用語に対する定義及び/又は文脈を提供する。~を備える。この用語は非制限的である。添付の特許請求の範囲において用いられるように、この用語は追加的な構造又はステップを排除しない。1つ以上のプロセッサユニットを備える装置と記載された請求項を考える。そのような請求項は、その装置が追加的なコンポーネント例えばネットワークインタフェースユニット、グラフィクス回路等を含むことを排除しない。~ように構成される。種々のユニット、回路又は他のコンポーネントは、単一又は複数のタスクを行うように構成されるものとして記載され又は特許請求され得る。そのような文脈において、~ように構成されるは、動作中に当該単一又は複数のタスクを行う構造例えば回路をユニット/回路/コンポーネントが含むことを示すことによって構造を含意するために用いられる。従って、ユニット/回路/コンポーネントは、特定のユニット/回路/コンポーネントがその時点で動作中でない例えばオンでないとしても、当該タスクを行うように構成されるものと言うことができる。~ように構成されるの言語と共に用いられるユニット/回路/コンポーネントは、ハードウェア、例えば回路、当該動作を実装するように実行可能なプログラム命令を記憶するメモリ等、を含む。ユニット/回路/コンポーネントが1つ以上のタスクを行う~ように構成されると記載しているのは、当該ユニット/回路/コンポーネントに対して35U.S.C.§112第6段落を行使すべきではないことを明示的に意図するものである。加えて、~ように構成されるは、ソフトウェア及び/又はファームウェア例えばFPGA又は汎用プロセッサ実行ソフトウェアによって操作されて問題となっている単一又は複数のタスクを行うことが可能な方法で動作する汎用構造例えば汎用回路を含むことができる。~ように構成されるはまた、1つ以上のタスクを実装し又は行うように構成されるデバイス例えば集積回路を製造することに製造プロセス例えば半導体製造設備を適合させることを含み得る。第1の、第2の等。ここで用いられるこれらの用語は、これらの後に続く名詞のための標識として用いられており、いかなる種類の順序例えば空間的な、時間的な、論理的な、等をも暗示しない。例えば、8個の処理要素又はコアを有するプロセッサにおいて、第1の及び第2の処理要素は、それら8個の処理要素の任意の2つを参照するために用いられ得る。つまり、第1の及び第2の処理要素は、論理処理要素0及び1に限定されない。基づく、基づき、基づいて。ここで用いられるこの用語は、決定に影響する1つ以上の要因を記述するために用いられる。この用語は決定に影響し得る追加的な要因を排除しない。即ち、決定は当該要因にのみ基づいていてよいし又は少なくとも当該要因に基づいていてよい。Bに基づきAを決定するという句を考える。BはAの決定に影響する1つの要因であってよい一方で、そのような句はCにも基づくAの決定を排除しない。他の例では、AはBにのみ基づき決定され得る。HTMシステムはハードウェア内に実装されるので、リードセット及びライトセットの経過を追うための資源が限定される。従って、これらの資源を効率的に使用するための種々の技術が用いられてきた。例えば、そのような技術は、グループとしてアドレス可能ワードの経過を追うこと即ちワードグループ化、指定されたアドレスをプログラムがリードセットからリリースするのを可能にすること即ち早期リリース及び他の技術を含む。ワードグループ化においては、HTMは、グループ内のいずれかのワードがアクセスされた場合にそのグループ全体例えばキャッシュラインをリードセット又はライトセット内にエンターするであろう。続いて、HTMは、各ワードの粒度よりもむしろグループ全体の粒度での衝突を検出するであろう。例えば、各キャッシュラインは、投機的にアクセスされたデータを含むかどうかを示すフラグを含んでいることがあり又はそのフラグに関連付けられていることがある。早期リリースは、リリース命令を明示的に実行する等によって、指定されたワードをプログラマが能動的トランザクションのリードセットから明示的に除去することを可能にし得るここで用いられるトランザクションは、開始されたが未だコミットされていない場合に能動的である。上述の例における従来の早期リリースシステムは、キャッシュライン上のフラグをアンセットすることによって所与のワードをリリースし、それによりキャッシュライン内の全てのワードをリードセットから除去してしまうであろう。しかし、従来のシステムは、ワードグループ化と早期リリースの両方の最適化を図ろうとする場合に正確性を保証することができない。例えば、ある能動的トランザクションが、たまたま同じグループ内にある2つの個別的にアドレス可能なワードを読み出し且つそれらに頼る場合、従来のワードグループ化システムは、両ワード及び当該グループ内の全てのワードをトランザクションのリードセット内に置いてしまう。ところが、その能動的トランザクションのリードセットからそれら2つのワードの一方を続いて除去するために早期リリースメカニズムが用いられると、従来のシステムは、他のワードも含めてワードのグループ全体をリリースしてしまうことになる。しかし、この場合にワードのグループ全体をリリースすることは、プログラマの意図するところではない。むしろ、プログラマは、指定されたワードだけをリリースすることを意図していたはずである。従って、従来のHTMは、他のワードに関する後続のデータ衝突を検出し得ないであろうし、また不正確なプログラム挙動が結果としてもたらされることがある例えばアトミシティの違反。この現象は、ここでは不慮のデータリリースと称されることがある。幾つかの実施形態においては、HTMは、ワードグループ化と早期リリースの技術間での的確な共存を実装するように構成され得る。そのようなHTMは、所与のグループ内の複数のワードが能動的トランザクションによって読み出されたかどうかの経過を追ってよく、またそのグループ内の他のワードがそのトランザクションによってアクセスされなかったと決定された場合に、その所与のグループ内のあるワードの任意の早期リリースを条件付けてよい。このようにして、HTMは、能動的トランザクションのリードセットから1つ以上のワードを気づかずにリリースしてしまうことを回避し得る。図1は幾つかの実施形態に従いワードグループ化及び早期リリースの機能を伴うハードウェアトランザクションメモリを実装するように構成されるシステムを示すブロック図である。図示された実施形態によると、システム100は、プロセッサ105及び他の単一又は複数のプロセッサ130を含む多重プロセッサを含む。ここで用いられるプロセッサの用語は、コンピュータプログラム命令を実行するように構成される処理コアを参照する。従って、プロセッサの用語は、専用のチップ上の又は1つ以上の他の処理コア例えばチップ多重プロセッサを含むチップ上の物理的又は論理的例えば対称多重スレッド処理コアを参照し得る。後者の場合、プロセッサ105及び130は、同じチップ上に存在してよく、またシステムバス150等よりもむしろチップ上ネットワークによって接続されてよい。一般的用語であるプロセッサがここでの実施形態を説明するために用いられているが、その用語自体は、複数の処理コアの特定の配置又は1つ以上のチップ上でのそれらの分散化に実施形態を限定することを意味しない。図1に示されるように、プロセッサ105はHTMメカニズム110を備え、HTMメカニズム110は、コードの投機的な領域を隔絶されたアトミックトランザクションとして検出し且つ/又は実行するように構成される1つ以上のハードウェアユニットを含む。これらのHTMメカニズムは、ワードグループ化及び早期リリースの動作を行いながら正しいプログラム挙動を維持するためにプロセッサによって用いられる種々のコンポーネントを含んでいてよい。図示された実施形態に示されるように、プロセッサ105は任意の数のレジスタ120を含んでいてもよく、これらは、マイクロアーキテクチャレジスタファイル及び1つ以上のローカルデータキャッシュ125例えばL1キャッシュとして実装されてよい。データキャッシュ125は、プロセッサ105による迅速なアクセスのために、共有メモリ140からデータをキャッシュしてよい。単一又は複数のデータキャッシュ125が多重キャッシュを含む実施形態においては、これらのキャッシュはキャッシュ階層として機能するように構成されてよい。プロセッサ105及び/又はデータキャッシュ125は、異なる複数のプロセッサによって用いられる別個のプライベートキャッシュが存在する場合におけるメモリの無矛盾性ビューを維持するために他のプロセッサ例えば130と通信するように構成されるキャッシュコヒーレンスメカニズムを含んでいてよい。プロセッサ105が多重処理コアを含む実施形態においては、1つ以上のキャッシュ125は、これら処理コアの種々のコアによって共有されてよい。幾つかの実施形態においては、データキャッシュ125及び/又は共有キャッシュ135は多重ブロック即ち複数のキャッシュラインとして配置されてよく、その各々は、共有メモリ140からのシーケンシャルにアドレスされた複数のワード例えば各8バイトワードの1つのブロックを記憶するために用いられ得る。幾つかの実施形態においては、これらのワードの1つ以上には、異なる複数の命令がアドレスしてよい。例えば、早期リリース命令は、データキャッシュ125内の所与のワードにアドレスしてよく、そしてそれが能動的トランザクションのリードセットからリリースされるべきであることを表示してよい。種々の実施形態において、データキャッシュ125及び/又は共有キャッシュ135は、バッファリングされたデータのオーバフローを取り扱うための異なるセットアソシアティブ性及び/又はエビクションのポリシーに従って管理されてよい。図示された実施形態によると、プロセッサ105及び130は、バス150を介して互いに接続され、共有メモリ140に接続され、そして任意の数の共有データキャッシュ135に接続される。ここで用いられるメモリ階層の用語は、システムの共有メモリ、及びデータを記憶するために所与のプロセッサによって用いられる一連のキャッシュ即ちキャッシュ階層を参照する。幾つかの実施形態においては、プロセッサ105及び130は、キャッシュコヒーレンスプロトコル例えばMESI,MOESIの一部としてのキャッシュコヒーレンスメッセージ等のメッセージを互いに通信するためにバス150を利用してよい。そのような実施形態においては、プロセッサ105及び130等の多重プロセッサは、それらのそれぞれのキャッシュ内にキャッシュされた共有メモリデータの無矛盾性ビューを維持してよい。幾つかの実施形態においては、プロセッサ105は、HTMトランザクションをサポートするために投機的データバッファを実装してよい。種々の実施形態において、そのようなバッファは、その全て又は一部において、データキャッシュ125、ブルームフィルタユニット及び/又は他のメカニズムを用いて実装されてよい。例えば幾つかの実施形態においては、HTMメカニズム110は、種々のフィールドをデータキャッシュ125内の各ラインと関連付けてよく、またそれらフィールドを用いて、当該ライン内の任意のワードが能動的トランザクションのリードセット又はライトセットのいずれにあるのかを表示してよい。他の実施形態においては、HTMメカニズム110は、ブルームフィルタユニットを用いてリードセット及び/又はライトセットの経過を追ってよい。そのような実施形態においては、あるワードがトランザクション内から投機的にアクセスされる場合、HTMシステムは、ハッシュ関数をアドレスに適用してインデックスを得る等することによって、ワードのアドレスを特殊目的アレイ例えばリードセットブルームフィルタのインデックスへとマッピングしてよい。HTMは次いで、得られたインデックスに、所与のアドレスが既に投機的に読み出されている又はライトセットブルームフィルタの場合には、書き込まれていることを示すフラグをセットしてよい。ここでは単一のアレイ及びハッシュ関数を利用するブルームフィルタ実装が論じられているが、当業者であれば、異なる実施形態においてはブルームフィルタ実装が多重のハッシュ関数及び/又はアレイを利用し得ることを理解するはずである。尚、異なる複数のワードのそれぞれのアドレスは同じブルームフィルタインデックスへとマッピングし得るので、リードセットの経過を追うためのブルームフィルタの使用は、ワードグループ化の一形態である。図2は幾つかの実施形態に従うコードの投機的領域のコンポーネントを示す図である。図示された実施形態によると、投機的領域200はトランザクション開始表示205で始まり、1つ以上の命令のトランザクションボディ210がそれに続き、そして投機的領域200はトランザクションコミット表示215で終了する。幾つかの実施形態においては、トランザクション開始表示は、投機的領域の開始を示す特殊目的命令を備えていてよい。例えば、開始表示205は、投機的領域の開始を示す投機的命令を含んでいてよい。他の実施形態においては、開始表示は、コードの投機的領域を表示し得るロック取得等の汎用命令に対応していてよい。あるトランザクションが開始された後であるがコミットされる例えば215において前にあっては、そのトランザクションは能動的であると称される。尚、衝突及び/又は他の停止の条件に起因して、能動的トランザクションは、最終的に成功するまで何度も再試行されてよい。トランザクションボディ210は1つ以上のプログラム命令を含んでいてよく、プログラム命令は1つ以上のメモリ動作を含んでいてよい。幾つかの実施形態においては、トランザクションボディ210は、トランザクションの一部として指定されるメモリ動作の第1のサブセットと、トランザクションの一部ではないとして指定されるメモリ動作の第2のサブセットと、を含んでいてよい。そのような例においては、HTMは、トランザクションの一部として指定された命令のみをトランザクション的に実行し且つボディ内の他の命令に対してはそのようなアトミシティ又は隔絶の保証を提供しないように構成されてよい。そのような実行においては、投機的命令を実行した結果としてアクセスされるメモリアドレスは、必要に応じて能動的トランザクションのリードセット又はライトセットの一部として経過を追われてよい。図示された実施形態に示されるように、投機的領域200は、開始表示205によって開始された投機的領域の終了を示すコミット表示例えば215を含んでいてよい。幾つかの実施形態においては、コミット表示は、特殊目的コミット命令を備えていてよい。他の実施形態においては、215のコミット表示は、例えば開始表示205において先に取得されたロックのリリース等の汎用命令に対応していてよい。図3は幾つかの実施形態に従い不慮のデータリリースを回避する方法においてワードグループ化及び早期リリースの技術を用いてアトミックメモリトランザクションを実行する高度な方法を示すフロー図である。図3の方法は、HTMメカニズムを含むプロセッサ105等のプロセッサによって実行されてよい。図示された実施形態によると、方法300は、305に示されるようにプロセッサが投機的実行モードにエンターすると開始する。上述したように、プロセッサは、コードのトランザクション領域の開始を示す投機的命令を実行することに応答して、そのようなモードにエンターする。トランザクションの一部として、プロセッサは、310に示されるようにあるワードを共有メモリから投機的にロードしてよい。このワードは、ロード命令によって直接的にロードされてよく、又は何らかの他の命令を実行することの一部として間接的にロードされてよい。データはトランザクション内から投機的に読み出されたものであるから、プロセッサは、315に示されるように、投機的にロードされたワード及びそのグループ全体をトランザクションのリードセットに加える。種々の実施形態において、ワードグループをリードセットに加えることは、ワードがロードされたキャッシュライン内にフラグをセットすることを含んでいてよい。これにより、キャッシュライン内の即ちグループ内の全ての他のワードがリードセットに効率的に加えられる。他の実施形態においては、315においてグループをリードセットに加えることは、ワードが投機的にロードされた元となるアドレスに対応するインデックスでブルームフィルタ内にビットをセットすることを備えていてよい。例えば315において、HTMは、投機的にロードされたワードのアドレスにハッシュ関数を適用することによって、インデックスを得てよい。しかし、315において得られたインデックスでビットをセットすることによって、システムは、本質的に、そのインデックス値をアドレスがハッシュする全てのワードをリードセットに加える。従って、実際には1つのそのようなアドレスのみが投機的に読み出されたとしても、ブルームフィルタ内にビットをセットすることにより、本質的には、複数ワードのグループが、HTMによって経過を追われているリードセットに加えられることになる。図示された実施形態によると、プロセッサは続いてリリース命令を検出してよく、リリース命令は、320からの肯定出口によって示されるように、リードセットからリリースするワードを指定する。この場合、HTMは、指定されたワードが属するグループ例えばキャッシュライン、ブルームフィルタインデックス等を決定してよく、また325に示されるように、グループ内の2つ以上のワードが投機的に読み出されたかどうかを決定してよい。HTMは、後で更に詳細に説明されるようにこの決定をなしてよい。325からの否定出口によって示されるように、リリースのために指定されたワードがグループ内の投機的に読み出されたワードだけである場合には、HTMは、330に示されるように、リリース指定されたワードをリードセットから除去してよい。種々の実施形態において、リリース指定されたワードを除去することは、投機的に読み出されたワードに及び/又はそのグループに関連付けられるフラグをアンセットすることを含んでいてよい。一方、325からの肯定出口によって示されるように、指定されたワードのグループ内の複数のワードが能動的トランザクションにおいて投機的に読み出されたとHTMが決定した場合には、HTMは、指定されたワードをリードセットから除去しない。尚、幾つかの実施形態においては、グループ内の複数のワードが投機的に読み出されたが、それらの各々がグループ内の次のワードが読み出される前に成功裏にトランザクションリードセットからリリースされた場合には、325の判定は否定として決定されることになる。例えばそのような実施形態においては、あるグループ内の第1のワードが読み出され次いでリリースされ、このリリースに続いてそのグループ内の第2のワードが読み出される場合、第2のワードをリリースしようとする試み320に示されるようなは、325における否定決定をもたらすことになる。あるワードが一旦リードセットからリリースされると、そのワードは、トランザクションに対してもはやデータ衝突を生じない。即ち、そのリリースされたワードのアドレスに別のスレッドが書き込んだとしても、トランザクション停止が必ずしもトリガーされることはない。図示された実施形態によると、トランザクションが継続するにつれて、停止条件が検出されると335に示されるように、HTMはトランザクションを停止してよく340に示されるように、そしてトランザクションを再試行してよい340から310のフィードバックループによって示されるように。幾つかの実施形態においては、トランザクションを再試行することは、明示的な再開命令を発行することを備えていてよい。トランザクションを停止することは、全てのワードをリードセット及びライトセットから除去すること、トランザクション試行によって試みられた全てのメモリ修正をロールバック及び/若しくはドロップすること、トランザクション領域の開始に向かうように命令ポインタを修正すること、並びに/又は他の実装固有のステップを備えていてよい。345からの肯定出口によって示されるように、未だ実行されていない更なる命令をトランザクション領域が含む間は、プロセッサは実行を継続する。345からの否定出口によって示されるように、プログラム制御がトランザクション領域の終了に到達すると、350に示されるようにHTMはトランザクションの結果をコミットしてよい。350において結果をコミットすることは、トランザクションの結果例えばライトセットにおける値をメモリへとフラッシュすることを含んでいてよく、このことは異なる実施形態において異なってなされてよい例えばリドゥー対アンドゥーモデル。幾つかの実施形態によると、所与のグループ内の複数のワードが投機的に読み出されたかどうかの経過をプロセッサが追い得るように、種々のフラッグが投機的バッファリングメカニズムに追加されてよい。図4a及び図4bは、この目的のためのそれぞれのフラグを含む投機的バッファリングメカニズムの2つの実施形態を提示している。図4aは幾つかの実施形態に従いワードグループ化及び早期リリースのメカニズムの的確な共存をサポートするために備えられたキャッシュベースの投機的バッファのブロック図である。幾つかの実施形態においては、図4aのデータキャッシュ400は、図1のデータキャッシュ125等のプライベートL1データキャッシュに対応していてよい。図示された実施形態においては、データキャッシュ400はキャッシュライン405等の多重キャッシュラインを備える。各ラインは、メモリの所与の領域からのデータの複数のワードのシーケンスを記憶するために用いられてよい。例えばキャッシュライン405のデータ425は、64又は128バイトの記憶スペースを備えていてよい。従って、メモリからの8個又は16個のアドレス可能8バイトワードを記憶するために使用され得る。例えばデータ425が64バイト長である場合、共有メモリは複数の64バイトブロック即ち複数のワードグループへと分割されていてよく、1つのブロック内のいずれかのワードを読み出すことに応答して、システムは、そのブロック全体をデータキャッシュ400のあるライン例えばキャッシュライン405内のデータ425へとコピーしてよい。ラインは、現在どのメモリブロックがキャッシュライン内に記憶されているのかを示すためにタグ付けされてよい例えばアドレスタグ410を用いて。図4aに示されるように、キャッシュライン405はまた、他のプロセッサによりキャッシュされたデータとのコヒーレンスを維持するために使用可能な種々のキャッシュコヒーレンスフィールド415と、430及び435等の投機的バッファフィールドと、を含んでいてよい。例えば幾つかの実施形態においては、SWフィールド430は、データ425内の少なくとも何らかのデータが能動的トランザクションによって投機的に書き込まれたことを示すためにセットされてよい。同様に、SRフィールド435は、データ425内の少なくとも何らかのデータが能動的トランザクションによって投機的に読み出されたことを示すために使用可能であってよい。このように、HTMはデータ衝突を検出するときにこれらのフィールドを用いることができる。図示された実施形態によると、キャッシュライン405はまた、ULフィールド440及びFAフィールド445を含む。幾つかの実施形態においては、これらのフィールドは、キャッシュライン例えばデータ425内の2つ以上のワードが能動的トランザクションの一部として投機的に読み出されたかどうかを決定するために、HTMによって使用可能であってよい図3の325に示されるように。幾つかの実施形態においては、FAフィールド445は、能動的トランザクションの間に最初に投機的に読み出されたキャッシュライン405内の即ちデータ425内のワードの表示を記憶するために用いられてよい。種々の実施形態において、この表示は、当該特定のワードのアドレス、当該ワード例えばブロック内の5番目のワードに対応するキャッシュライン内へのインデックス、又は他のうちで最初に投機的に読み出されたワードを一意的に区別する別の識別子であってよい。例えば幾つかの実施形態においては、キャッシュライン405が64バイト幅である即ち8個の一意的にアドレス可能な8バイトワードを保持する場合には、FAフィールド445は、8個の一意的なインデックスを表示するために使用可能な3ビットを含んでいてよい。従って、FAフィールドの値は、キャッシュライン内に記憶された8ワードのどれが最初に投機的に読み出されることになったのかを識別することができる。幾つかの実施形態においては、あるワードをリードセットに加えるための論理は、SRフィールド435が既にセットされているかどうかを決定することと、これがセットされていない場合に、キャッシュラインがトランザクションのリードセット内にあることを示す値にSRフィールド435をセットし且つそのワードを示す値にFAフィールド445をセットすることと、を含んでいてよい。幾つかの実施形態においては、SRフィールドがクリアされると、FAフィールド及び/又はULフィールドもクリアされてよい。幾つかの実施形態においては、ULフィールド440は、キャッシュライン405内の複数のワードが能動的トランザクションによって投機的に読み出されたものであるかどうかを示すために使用可能であってよい。例えば、あるワードをリードセットに加えるための論理は、SRフィールド435が既にセットされているかどうかを決定することと、これがセットされている場合に、FAフィールドがそのワードを示しているかどうかを決定することと、を含んでいてよい。そのワードを示していない場合には、そのワードはリードセットに加えられているはずのグループ内の最初のワードではないので、プロセッサはその旨を示す値にULフィールド440をセットしてよい。幾つかの実施形態においては、ULフィールド440は単一ビットを備えていてよく、この単一ビットは、複数のワードがリードセット内にあるかどうかを示すためにセット又はアンセットされてよい。HTMは、このようにしてULフィールドとFAフィールドの組み合わせを用いて、所与のキャッシュライン即ちワードグループ内の複数のワードが能動的トランザクションによって投機的に読み出されたものであるかどうかの経過を追い且つそれを決定することができる。図5は幾つかの実施形態に従い所与のキャッシュライン内の複数のワードが能動的トランザクションによって投機的に読み出されたことを決定することに応答して早期リリース動作を除くための方法を示すフロー図である。方法500は、ここに説明される早期リリース及びワードグループ化の両方をサポートするプロセッサによって実行されてよい。図示された実施形態によると、方法500は、505に示されるようにプロセッサが投機的実行モードにエンターすると開始する。プロセッサは次いで、510に示されるように、所与のワードをトランザクションの一部として投機的に読み出す。ワードを投機的に読み出すことに応答して、メモリサブシステムは、ワードが属するブロックがキャッシュライン内に未だない場合にそのブロックをそのキャッシュラインにコピーする。更に、515に示されるように、HTMはそのキャッシュラインをトランザクションのリードセットに加える。幾つかの実施形態においては、キャッシュラインをリードセットに加えることは、キャッシュラインのSRビットをセットすることと、これに従いキャッシュライン内に記憶されるブロック全体をリードセットに効果的に加えることと、を備えていてよい。515に示されるようにキャッシュラインをトランザクションリードセットに加えた後又は加えることの一部として、HTMは、520に示されるようにFAフラグを当該所与のワードを示す値にセットしてよい。例えば、510で読み出されたワードがアドレス順に従いブロック内の3番目のワードであるとすると、520においてFAフラグはバイナリ値010にセットされてよく、これは0インデックススキームに従うと3番目のインデックスを示している。種々の他の識別子スキームが可能である。図示された実施形態によると、所与のワードを投機的に読み出すこと510及びキャッシュラインをリードセットに加えること515に続いて、プロセッサは、525に示されるように別のワードを同じところから投機的に読み出す。プロセッサがその別のワードを読み出すことに応答して、HTMは、そのワードを含むキャッシュラインのSRフィールドが既にセットされていると決定し、そしてこれに応答してキャッシュラインのFAフィールドを読み出して530に示されるように、その別のワードが、投機的に読み出されているはずのキャッシュライン内の最初のワードと同じであるかどうかを決定する。例えば、FAフィールドがブロック内の所与のワードのインデックスを示している場合には、HTMは、その別のワードが同じインデックスを有しているかどうかを決定してよい。これらのインデックスが異なる場合530で示されるようにには、その所与のワードとその別のワードは同じではない。その別の投機的に読み出されたワードが510で読み出されたものと同じでないと決定することに応答して、HTMは535に示されるようにキャッシュラインのULフラグをセットする。ULフラグをセットすることは、キャッシュライン内の複数のワードが現在のトランザクション内で投機的に読み出されたことを示す。セットされたULフラグは、ワードのサブセットのみを目標とすることが意図されている早期リリース命令に応答してキャッシュライン内のワードが全てリリースされてしまうと、トランザクションデータの不慮の喪失が生じる可能性があることをHTMに対して示す。540においては、プロセッサは、所与の投機的に読み出されたワードがリードセットからリリースされるべきであることを特定するリリース命令を検出する。本例のリリース命令は、早期リリースメカニズムに対応する。リリース命令に応答して、HTMは、所与のワードのキャッシュラインの場所を探し、そして550に示されるようにキャッシュラインのULフラグをチェックしてULフラグがセットされていることを決定する。ULフラグはセットされているので、HTMは、キャッシュライン内の複数のワードが投機的に読み出されており、キャッシュライン全体がリリースされてしまうと意図しない且つ/又は的確でない挙動がもたらされ得るものと決定する。従って555においてHTMは、リリース命令によって示される早期リリース機能を止める。早期リリースは止められるので、HTMはキャッシュラインのSRフラグをクリアせず、キャッシュライン内のそれらワードはリードセット内に残り、そしてHTMはそれらワードに関与するデータ衝突のチェックを継続する。図5の例は投機的に書き込まれているはずの最初のワードを目標とするリリース命令を含むが、リリース命令が別のワードを目標としていたとしてもシステム挙動は同様であってよい。このように、幾つかの実施形態においては、同じキャッシュライン即ちワードグループ内の少なくとも2つのワードが一旦投機的に読み出されると、そのキャッシュライン内のワードは、早期リリースに対する適格性は最早ない。種々の実施形態において、ULフィールド440及びFAフィールド445等の不慮損失フィールドは、キャッシュ以外のメカニズムを伴って実装される投機的バッファに対しても、早期リリースを伴うワードグループ化を可能にするように適合させられ得る。例えば図4bは幾つかの実施形態に従いワードグループ化及び早期リリースの安全な共存を可能にする不慮喪失フィールドを伴うブルームフィルタを示すブロック図である。上述したように、HTMがリードセットの経過を追い得る別のワードグループ化方法は、ハードウェア実装されたブルームフィルタを用いることによるものである。図4bは幾つかの実施形態に従いワードグループ化及び早期リリースのメカニズムの的確な共存をサポートするために備えられたブルームフィルタベースの投機的バッファのブロック図である。そのような幾つかの実施形態においては、あるワードが投機的に読み出されるとき、HTMは、そのワードのアドレスにハッシュ関数を適用する等によって、そのワードのインデックスを決定してよい。HTMは次いで、そのワードが投機的に読み出されたことを示すために、ブルームフィルタ450等の特殊目的アレイのインデックス値でフラグをセットしてよい。別のスレッドが所与のメモリアドレスにアクセスしたことを示すプローブをプロセッサが受け取ると、プロセッサは、受け取ったメモリアドレスにハッシュ関数を適用して、インデックスを決定すると共にブルームフィルタ内のフラグがそのインデックスにセットされているかどうかをチェックしてよい。幾つかの実施形態においては、HTMは、不慮喪失フィールド440及び445等をリードセットブルームフィルタの各インデックスに関連付けてよい。例えば、ブルームフィルタ450の各フィールドインデックス460及び470等は、それぞれの不慮喪失フィールド462及び472等に関連付けられてよい。幾つかの実施形態においては、これらのフィールドは、ブルームフィルタそれ自体の一部であってよく、別個のハードウェア構造内に含まれていてよく、さもなければブルームフィルタのそれぞれのインデックスに関連付けられていてよい。図示された実施形態によると、不慮喪失フィールド462及び472の各々は、それぞれのULフィールド464及び474とFAフィールド466及び476とを備える。これらのフィールドは、データキャッシュ実装におけるフィールド440及び445と同様のものであってよい。例えば、プロセッサが所与のアドレスにあるあるワードを投機的に読み出し、このアドレスがインデックス460にハッシュする場合、HTMは、インデックス460での値が、このアドレスが既にリードセット内にあることを示しているかどうかを決定してよい。インデックス460での値が、このアドレスが既にリードセット内にあることを示していない場合には、HTMは、インデックス460をそのような値にセットしてよく、そして所与のアドレスを識別する値にFAフィールド466をセットしてよい。データキャッシュ実装と同様に、FAフィールド466は、アドレスそれ自体を保持してよく、インデックス460へマッピングするアドレスのグループ内へのオフセットを保持してよく、又は別の識別子を保持してよい。例えば、用いられるハッシュ関数がモジュロ関数である場合、所与のアドレスのための識別子を得る1つの方法は、アドレスをlog2Mビットだけシフトさせることであってよく、ここでMはブルームフィルタインデックスの数である。一方、インデックス460内の値が、アドレスが既にリードセット内にあることを示している場合には、HTMは、アドレスの識別子をFAフィールド466内に記憶されるものと比較してよい。2つの値が同じでない場合には、プロセッサは同じグループ内の少なくとも2つの異なるワードを読み出していたことになるので、HTMは、早期リリースからの不慮の喪失の危険性を示す値にULフィールド464をセットすることによって応答してよい。データキャッシュ実装と同様に、グループ内の複数のワードが投機的に読み出されたことをULフィールド464が示している場合には、HTMは、インデックス460を目標とする早期リリース動作を止めてよい。図6は幾つかの実施形態に従い早期リリースを伴うワードグループ化をサポートするように構成されるHTMのコンポーネントのブロック図である。図6のHTM110は図1のHTMメカニズム110に対応していてよい。図示された実施形態によると、HTM110は、ワードグループ化及び早期リリースの両方をサポートする605等の投機的バッファを含んでいてよい。幾つかの実施形態においては、投機的バッファ605は、キャッシュ例えばデータキャッシュ400を用いて、ブルームフィルタ例えばブルームフィルタ450を用いて、且つ/又は他のメカニズムを用いて実装されてよい。幾つかの実施形態においては、投機的バッファ605は、共有メモリ内のワードのグループの少なくとも1つがトランザクションのリードセット例えばSRフィールド435、インデックス460等内にあることを示すために使用可能なフィールドを含んでいてよい。幾つかの実施形態においては、投機的バッファ605はまた、所与のグループ内の複数のワードが能動的トランザクション内で投機的に読み出されたかどうかを示すために用いられ得るフィールドを含んでいてよい例えばULフィールド440,464,474等。図示された実施形態においては、HTM110はまた、所与のワードが投機的に読み出されるときに投機的バッファ605内で適切なフラグを決定し且つセットするように構成されるワードグループ化論理610を含む。例えば、投機的バッファ605が図4aにおけるデータキャッシュ400として実装される場合、ワードグループ化論理610は、所与のアドレスに対応するSRフィールド、ULフィールド及びFAフィールドを、そのアドレスでのワードが投機的に読み出されることに応答して読み出し且つセットするように構成されてよい。図6に示される実施形態によると、HTM110はまた、早期リリース論理615を含んでいてよく、早期リリース論理615は、早期リリース機能を認識しているワードグループ化を実装するように構成されてよい。例えば早期リリース論理615は、ここで説明されるように、能動的トランザクションのリードセットからリリースするメモリアドレスを指定するリリース命令を実行するように構成されてよい。論理615はまた、指定されたアドレスのグループを決定すると共に、グループ内の複数のワードが能動的トランザクションによって投機的に読み出されたことを決定することに応答して当該機能を止めるように構成されてよい。例えば、早期リリース論理615は、投機的バッファ605内の適切なULフィールドを読み出すことによって、グループ内の2つ以上のワードが少なくとも部分的に読み出されたかどうかを決定してよい。投機的バッファ605、ワードグループ化論理610及び早期リリース論理615は図6において別々のコンポーネントとして図示されているが、種々の実施形態において、それらは組み合わされてよく且つ/又は更に分割されてよい。幾つかの実施形態においては、HTM110は、キャッシュコヒーレンスメカニズム、アボート論理、コミット論理、順序外実行サポート等の種々の他のコンポーネントを更に含んでいてよい。図7は種々の実施形態に従いここに説明されるワードグループ化及び早期リリースのメカニズムを伴うハードウェアトランザクションメモリを実装するように構成されるコンピュータシステムを示すブロック図である。コンピュータシステム700は、種々のデバイスの任意のものに対応していてよく、これらは、限定はされないが、パーソナルコンピュータシステム、デスクトップコンピュータ、ラップトップ若しくはノートブックコンピュータ、メインフレームコンピュータシステム、ハンドヘルドコンピュータ、ワークステーション、ネットワークコンピュータ、コンシューマデバイス、アプリケーションサーバ、記憶デバイス、周辺デバイス、例えばスイッチ、モデム、ルータ等、又は一般的に任意の種類のコンピュータデバイスを含む。コンピュータシステム700は1つ以上のプロセッサ760を含んでいてよく、これらのうちの任意のものは多重の物理コア及び/又は論理コアを含んでいてよい。プロセッサ760は、メカニズム770等のここに説明されるワードグループ化及び早期リリースのメカニズムを伴うHTMを実装するためのそれぞれのメカニズムを含んでいてよい。例えば幾つかの実施形態においては、HTM770は、データキャッシュ400及び/又はブルームフィルタ450等の適切な投機的バッファを含んでいてよい。コンピュータシステム700はまた、データを永続的に記憶しえる1つ以上の永続的記憶デバイス750例えば光学的ストレージ、磁気的ストレージ、ハードドライブ、テープドライブ、ソリッドステートメモリ等を含んでいてよい。図示された実施形態においては、コンピュータシステム700はまた、1つ以上の共有メモリ710例えば1つ以上のキャッシュ、SRAM、DRAM、RDRAM、EDO_RAM、DDR10RAM、SDRAM、ラムバスRAM、EEPROM等を含んでいてよく、共有メモリ710は複数のプロセッサ760によって共有されてよい。1つ以上のプロセッサ760、記憶デバイス750及び共有メモリ710は、相互接続740を介して結合されてよい。種々の実施形態において、システムは、より少ないコンポーネント又は図7には図示されない付加的なコンポーネント例えばビデオカード、オーディオカード、追加的なネットワークインタフェース、周辺デバイス、ネットワークインタフェース、例えばATMインタフェース、イーサネット登録商標インタフェース、フレームリレーインタフェース、モニター、キーボード、スピーカ等を含んでいてよい。幾つかの実施形態においては、共有メモリ710はプログラム命令720を記憶してよく、プログラム命令720は、プラットフォームネイティブバイナリの任意のインタープリタ型言語、例えばJava登録商標バイトコード若しくは任意の他の言語、例えばC/C、Java登録商標、等、又はそれらの任意の組み合わせにおいてエンコードされてよい。プログラム命令720は1つ以上の多重スレッドアプリケーション722を実装するプログラム命令を含んでいてよく、多重スレッドアプリケーション722は、それぞれ単一のアトミックトランザクションとして実行されるコードの投機的部分を含む。幾つかの実施形態においては、プログラム命令720はまた、アプリケーション722を実行するためのソフトウェアサポート例えばスケジューリング、ソフトウェア信号処理等を提供するオペレーティングシステム724を実装するように実行可能な命令を含んでいてよい。図示された実施形態によると、共有メモリ710は共有データ730を含み、共有データ730は多重のプロセッサ760によってアクセスされてよい。プロセッサ760の幾つかは、共有データ730の種々のコンポーネントをローカルキャッシュ内にキャッシュしてよく、またここに説明されるようなキャッシュコヒーレンスプロトコルに従ってメッセージを交換することによって、これらのキャッシュ内のデータを連携させてよい。多重スレッドアプリケーション722及び/又はオペレーティングシステム724を実装されるために用いられる等のプログラム命令720は、コンピュータ可読記憶媒体に記録されてよい。コンピュータ可読記憶媒体は、機械例えばコンピュータによって可読な形態例えばソフトウェア、処理アプリケーションで情報を記憶するための任意のメカニズムを含んでいてよい。コンピュータ可読記憶媒体は、限定はされないが、磁気記憶媒体例えばフロッピー登録商標ディスク;光学的記憶媒体例えばCD-ROM;磁気光学的記憶媒体;リードオンリメモリROM;ランダムアクセスメモリRAM;消去可能プログラム可能メモリ例えばEPROM及びEEPROM;フラッシュメモリ;プログラム命令を記憶するのに適する電気的な又は他の種類の媒体を含み得る。上述したコンピュータ可読記憶媒体は、プログラムによって読み出された命令を記憶するための幾つかの実施形態において用いられてよく、また1つ以上のプロセッサ760を備えるハードウェアを製造するために直接的に又は間接的に用いられてよい。例えば命令は、ベリログ又はVHDL等の高レベル設計言語HDLにおけるハードウェア機能の行動レベル又はレジスタ転送レベルRTLの記述を記述する1つ以上のデータ構造を記述してよい。記述は合成ツールによって読み出されてよく、合成ツールは記述を合成してネットリストを作成することができる。ネットリストは一連のゲート例えば合成ライブラリにおいて定義されるを備えていてよく、一連のゲートはプロセッサ500の機能を表す。ネットリストは次いで、マスクに適用されるべき幾何学的形状を記述するデータセットを作成するために配置されると共に経路付けられてよい。マスクは次いで、プロセッサ500に対応する単一又は複数の半導体回路を製造するために種々の半導体製造ステップにおいて使用されてよい。代替的には、必要に応じてデータテーブルがネットリスト合成ライブラリを伴う又は伴わない又はデータセットであってよい。幾つかの特定の実施形態がこれまで説明されてきたが、これらの実施形態は、特定の特徴に関して単一の実施形態のみが開示されているとしても、本開示の範囲を限定することは意図されていない。本開示において提供される特徴の例は、特に明記しない限り、限定的ではなく例示的なものであることが意図されている。上述の説明は、本開示の利益を享受する当業者にとって明らかであろうように、そのような代替案、修正及び均等なものを網羅することが意図されている。本開示の範囲は、ここで取り上げられている問題の一部又は全部を軽減するしないにかかわらず、ここに開示される明示的に又は暗黙的に任意の特徴又は特徴の組み合わせ、あるいはその任意の一般化を含む。従って、本出願又はそれに対して優先権を主張する出願の手続きの間に任意のそのような特徴の組み合わせに関して新たな特許請求の範囲が編成されることがある。特に、添付の特許請求の範囲を参照して、従属請求項からの特徴が独立請求項の特徴と組み合わされることがあり、またそれぞれの独立請求項からの特徴は、添付の特許請求の範囲に列挙される特定の組み合わせにおけるだけでなく任意の適切な方法において組み合わされることがある。"