(57)【要約】      （修正有）【課題】実行効率の良いトランザクショナルメモリ実装用のシステムおよび方法を提供する。【解決手段】プロセッサは、ブロック６１０で開始したオペレーションのトランザクションモード中にエラーをブロック６７０で検出すると、ブロック６６０によりエラー回復ルーチンを実行し；そうでなければ該プロセッサは、ブロック６８０でブロック６７０で参照した非トランザクショナルメモリアクセスオペレーションにより読み出しおよび／または改変されたメモリ位置の状態に関係なく、当該トランザクションを完了することができる。当該プロセッサは、ライトオペレーションの結果を対応するメモリまたはキャッシュ位置に対しコミットし、当該トランザクションに予め割り当てられていたバッファを開放することができる。ブロック６７０により参照されているオペレーションを完了すると終了する。【選択図】図６
2014194754.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサにより、メモリアクセストランザクションを開始するステップと、
第１メモリ位置に対する、メモリアクセス追跡論理に関連付けられた第１バッファを使用するトランザクショナルリードオペレーション、および、第２メモリ位置に対する、前記メモリアクセス追跡論理に関連付けられた第２バッファを使用するトランザクショナルライトオペレーションの少なくとも１つを実行するステップと、
第３メモリ位置に対する非トランザクショナルリードオペレーション、および、第４メモリ位置に対する非トランザクショナルライトオペレーションの少なくとも１つを実行するステップと、
前記メモリアクセス追跡論理により、前記プロセッサ以外のデバイスによる前記第１メモリ位置および前記第２メモリ位置の少なくとも１つに対するアクセスを検出したことに応じて、前記メモリアクセストランザクションをアボートするステップと、
トランザクションアボート条件の検出の失敗に応じて、前記第３メモリ位置の状態および前記第４メモリ位置の状態に関わり無く、前記メモリアクセストランザクションを完了するステップと、を備える方法。
【請求項２】
前記第１バッファおよび前記第２バッファが、１つのバッファからなる、請求項１に記載の方法。
【請求項３】
前記第１メモリ位置および前記第２メモリ位置が、１つのメモリ位置である、請求項１に記載の方法。
【請求項４】
前記第３メモリ位置および前記第４メモリ位置が、１つのメモリ位置である、請求項１に記載の方法。
【請求項５】
前記第１バッファおよび前記第２バッファの少なくとも１つが、データキャッシュ内の一エントリーによって与えられる、請求項１に記載の方法。
【請求項６】
第２ライトオペレーションを実行するステップは、前記第２ライトオペレーションのコミットをするステップを含む、請求項１から５の何れか一項に記載の方法。
【請求項７】
前記メモリアクセストランザクションを完了するステップは、前記第２バッファから、より高いレベルのキャッシュエントリおよびメモリ位置の一方へデータをコピーするステップを含む、請求項１から５の何れか一項に記載の方法。
【請求項８】
割込み、バッファオーバーフローおよびプログラムエラーの少なくとも１つの検出に応じて、前記メモリアクセストランザクションをアボートするステップを更に含む、請求項１から５の何れか一項に記載の方法。
【請求項９】
前記アボートを行うステップが、前記第１バッファおよび前記第２バッファの少なくとも１つを解放するステップを含む、請求項１から５の何れか一項に記載の方法。
【請求項１０】
前記メモリアクセストランザクションを開始するステップが、更に、保留中のライトオペレーションのコミットをするステップを含む、請求項１から５の何れか一項に記載の方法。
【請求項１１】
前記メモリアクセストランザクションを開始するステップが、割込みを禁止するステップを含む、請求項１から５の何れか一項に記載の方法。
【請求項１２】
前記メモリアクセストランザクションを開始するステップが、データのプリフェッチを禁止するステップを含む、請求項１から５の何れか一項に記載の方法。
【請求項１３】
前記メモリアクセストランザクションを完了する前に、ネスト形メモリアクセストランザクションを開始するステップと、
前記メモリアクセス追跡論理に関連付けられた第３バッファを使用する第２トランザクショナルリードオペレーション、およびメモリアクセス追跡論理に関連付けられた第４バッファを使用する第２トランザクショナルライトオペレーションの少なくとも１つを実行するステップと、
前記ネスト形メモリアクセストランザクションを完了するステップと、を更に備える、請求項１から５の何れか一項に記載の方法。
【請求項１４】
トランザクションアボート条件の検出に応じて、前記メモリアクセストランザクションおよび前記ネスト形メモリアクセストランザクションをアボートするステップを更に備える、請求項１３に記載の方法。
【請求項１５】
メモリアクセス追跡論理と、
前記メモリアクセス追跡論理に関連付けられた第１バッファと、
前記メモリアクセス追跡論理に関連付けられた第２バッファと、
前記第１バッファおよび前記第２バッファに通信式に結合されたプロセッサコアと、を備える処理システムであって、
前記処理システムにおいて、前記プロセッサコアは、複数のオペレーションを行うように構成され、
前記複数のオペレーションは、
メモリアクセストランザクションを開始ステップと、
第１メモリ位置に対する、第１バッファを使用するトランザクショナルリードオペレーション、および、第２メモリ位置に対する、第２バッファを使用するトランザクショナルライトオペレーションの少なくとも１つを実行するステップと、
第３メモリ位置に対する非トランザクショナルリードオペレーション、および、第４メモリ位置に対する非トランザクショナルライトオペレーションの少なくとも１つを実行するステップと、
前記メモリアクセス追跡論理により、前記プロセッサ以外のデバイスによる前記第１メモリ位置および前記第２メモリ位置の少なくとも１つに対するアクセスを検出したことに応じて、前記メモリアクセストランザクションをアボートするステップと、
トランザクションアボート条件の検出の失敗に応じて、前記第３メモリ位置の状態および前記第４メモリ位置の状態に関わり無く、前記メモリアクセストランザクションを完了するステップと、を含む、処理システム。
【請求項１６】
データキャッシュを更に備え、
前記第１バッファおよび前記第２バッファの少なくとも１つが、前記データキャッシュの中に備わっている、請求項１５に記載の処理システム。
【請求項１７】
エラー回復ルーチンのアドレスを格納するためのレジスタを更に備える、請求項１５に記載の処理システム。
【請求項１８】
前記メモリアクセストランザクションのステータスを格納するためのレジスタを更に備える、請求項１５に記載の処理システム。
【請求項１９】
前記第１バッファおよび前記第２バッファが、１つのバッファからなる、請求項１５に記載の処理システム。
【請求項２０】
第３バッファおよび第４バッファが、１つのバッファからなる、請求項１５に記載の処理システム。
【請求項２１】
前記第１メモリ位置および前記第２メモリ位置が、１つのメモリ位置である、
請求項１５に記載の処理システム。
【請求項２２】
前記第３メモリ位置および前記第４メモリ位置が、１つのメモリ位置である、請求項１５に記載の処理システム。
【請求項２３】
割り込み、バッファーオーバフロー、およびプログラムエラーの少なくとも１つの検出に応じて、前記メモリアクセストランザクションをアボートするように前記プロセッサコアが、更に構成されている、請求項１５に記載の処理システム。
【請求項２４】
コンピュータに、
メモリアクセストランザクションを開始する手順と、
第１メモリ位置に対する、メモリアクセス追跡論理に関連付けられた第１バッファを使用するトランザクショナルリードオペレーション、および、第２メモリ位置に対する、前記メモリアクセス追跡論理に関連付けられた第２バッファを使用するトランザクショナルライトオペレーションの少なくとも１つを実行する手順と、
第３メモリ位置に対する非トランザクショナルリードオペレーション、および、第４メモリ位置に対する非トランザクショナルライトオペレーションの少なくとも１つを実行する手順と、
前記メモリアクセス追跡論理により、前記コンピュータ以外のデバイスによる前記第１メモリ位置および前記第２メモリ位置の少なくとも１つに対するアクセスを検出したことに応じて、前記メモリアクセストランザクションをアボートする手順と
トランザクションアボート条件の検出の失敗に応じて、前記第３メモリ位置の状態および前記第４メモリ位置の状態に関わり無く、前記メモリアクセストランザクションを完了する手順と、を実行させるプログラム。
【請求項２５】
メモリと、
前記メモリと結合された処理システムと、を備え、
前記処理システムが、請求項１から１４のいずれか一項に記載の方法を行うように構成される装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般にコンピュータシステムに関し、特にトランザクショナルメモリ実装用のシステムおよび方法に関する。
【背景技術】
【０００２】
複数のプロセスを同時に実行するには、共有資源（例えば、複数のプロセッサからアクセス可能なメモリ）に対し同期メカニズムを実装することが必要である。そのような同期メカニズムの一例は、セマフォア式ロッキングであり、セマフォア式ロッキングによりプロセスの実行が直列化され、その結果、システム全体の性能が悪影響を受ける可能性がある。更に、セマフォア式ロッキングでは、デッドロック（複数のプロセスがそれぞれ、他のプロセスが資源のロックを解除するのを待っているときに起きる状態）を生じる恐れがある。
【図面の簡単な説明】
【０００３】
【図１】本願開示の一または複数態様によるコンピュータシステムの実施例のハイレベルコンポーネント図である。
【図２】本願開示の一または複数態様によるプロセッサのブロック図である。
【図３ａ】本願開示の一または複数態様によるプロセッサマイクロアーキテクチャの要素を概略的に示す図である。
【図３ｂ】本願開示の一または複数態様によるプロセッサマイクロアーキテクチャの要素を概略的に示す図である。
【図４】本願開示の一または複数態様によるトランザクショナルメモリアクセスを実施するコンピュータシステムの実施例の態様を幾つか示す図である。
【図５】本願開示の一または複数態様によるトランザクションモード命令の使用を説明する、コードフラグメントの例を示す図である。
【図６】本願開示の一または複数態様によるトランザクショナルメモリアクセスを実行する方法の流れ図である。
【図７】本願開示の一または複数態様によるコンピュータシステムの実施例のブロック図である。
【発明を実施するための形態】
【０００４】
本発明は限定されるのではなく例示されており、添付図面と関連付けて検討すれる場合、以下の詳細な説明を参照しながら本開示内容を十分に理解できるであろう。
【０００５】
コンピュータシステムによりトランザクショナルメモリアクセスを実施するための方法およびシステムを本願明細書において説明する。「トランザクショナルメモリアクセス」とは、１つのプロセッサが複数のメモリアクセス命令をアトミックオペレーションとして、それらの命令が一括で成功か失敗かの何れかになるように実行することを指す。後者の状況では、メモリが変更されずに一連のオペレーションのうち最初のオペレーションの実行前に存続している状態であり、且つまたは他の修正動作を行ってもよい。特定の実装において、推論式に、即ちアクセスされているメモリをロックせずに、トランザクショナルメモリアクセスを実行することもあり、その結果、同時に実行中の複数のスレッドおよび／またはプロセスによる一つの共有資源へのアクセスを同期するための有効なメカニズムを設けることになる。
【０００６】
トランザクショナルメモリアクセスを実施するには、トランザクション開始命令と、トランザクション終了命令をプロセッサ命令セットに入れればよい。オペレーションのトランザクションモードでは、プロセッサは、それぞれのリードバッファおよび／またはライトバッファを介して、推論式に複数のメモリリードオペレーションおよび／またはメモリライトオペレーションを行うことができる。対応するメモリ位置にデータを記憶せずに、ライトバッファは、メモリライトオペレーションの結果を保持する。バッファに関連付けられるメモリ追跡論理は、指定されたメモリ位置への別の装置によるアクセスを検出すると、エラーの状態をプロセッサへ信号送信する。エラー信号を受信すると、プロセッサは、そのトランザクションをアボートして、エラー回復ルーチンへ制御を移す。あるいは、トランザクション終了命令が到達した時点で、プロセッサがエラーをチェックしてもよい。トランザクションアボート条件が無ければ、プロセッサは、ライトオペレーションの結果を対応するメモリまたはキャッシュ位置に記憶する。オペレーションのトランザクションモードでは、トランザクションが無事完了したかアボートしたかに関わりなく、プロセッサは、メモリリードオペレーションおよび／またはライトオペレーションを１回または複数回実行するが、それは、これらのオペレーションの結果が他のデバイス（例えば、他のプロセッサコアまたは他のプロセッサ）に直ちに見えるように迅速に記憶される。トランザクションの範囲内で非トランザクショナルメモリアクセスを行うことが可能であることで、プロセッサのプログラミングに関し融通性が更に良くなり、所定のプログラミングタスクを完了するのに必要なトランザクション数を潜在的に減らすことにより、実行効率全体が向上する。
【０００７】
上に参照した方法およびシステムの種々の態様は、本願明細書では以下に、制限ではなく一例として詳細に説明する。
【０００８】
以下の説明では、本発明を徹底的に理解できるように、特定の複数種類のプロセッサおよびシステム構成、特定のハードウェア構造、特定の設計上、つまりミクロ設計上の細部、特定のレジスタ構成、特定の命令型、特定のシステムコンポーネント、特定の寸法／高さ、特定のプロセッサパイプラインステージ、およびオペレーション等の実施例のような数多くの具体的細部を記述している。しかしながら、本発明を実施するために、これらの具体的細部を使用する必要がないことは、当業者には明らかとなるであろう。他の例では、特定および代替プロセッサアーキテクチャ、特定の論理回路／記述されたアルゴリズム用のコード、特定のファームウェアコード、特定の相互接続オペレーション、特定の論理構成、特定の製造技術および材料、特定のコンパイラの実行、コードでの特定のアルゴリズム表現、特定のパワーダウンおよびゲーティング技術／論理、その他コンピュータシステムの特定のオペレーション上の詳細など、周知のコンポーネントまたは方法については、本発明を不必要に不明瞭にすることを避けるために、詳述しなかった。
【０００９】
以下の実施態様はプロセッサに関して記載されているが、他の実施態様は他の種類の集積回路および論理デバイスに適用することができる。類似の技術および本発明の実施態様による開示内容は、より高いパイプラインスループットおよび改良された性能の恩恵を受け得る他の種類の回路または半導体デバイスに適用することができる。データ操作を実行するいかなるプロセッサまたはマシンに対しても、本発明の実施態様の開示内容は、適用することができる。しかしながら、本発明は、５１２ビット、２５６ビット、１２８ビット、６４ビット、３２ビットまたは１６ビットのデータオペレーションを行うプロセッサまたはマシンに限定されるのではなく、データ操作または管理が行われるいかなるプロセッサおよびマシンにも適用することができる。また以下の説明は実施例を提供し、添付図面は例示のため様々な実施例を示す。しかし、これらの実施例は、本発明の実施態様の可能性のある実施の全ての完全なリストを提供するよりはむしろ、本発明の実施態様の実例を提供するように意図されているにすぎないため、それらの実施例は、限定の意味で解釈してはならない。
【００１０】
下記の実施例では、実行ユニットと論理回路を例にとって命令の処理と分散を説明してあるが、本発明の他の実施態様は、機械読取り可能な有形媒体上に記憶されたデータまたは命令により実現可能であり、機械による動作時には、同機械は、少なくとも一実施態様に一致する機能を果たす。ある一実施態様では、本発明の複数の実施態様に関連した複数の機能が機械にて実行可能な命令の中で実現される。命令を用いてプログラムを受ける汎用または特殊用途のプロセッサに本発明のステップを行わせるために、複数の命令を使用することがある。本発明の実施態様は、コンピュータプログラム製品またはソフトウェアとして提供することも可能であり、そのようなコンピュータプログラム製品またはソフトウェアは、本発明の実施態様による一または複数のオペレーションを行うようにコンピュータ（または他の電子デバイス）をプログラムするために使用することができる命令が記憶された機械またはコンピュータ読取り可能媒体を含むものでもよい。あるいは、本発明の実施態様のオペレーションは、同オペレーションを実施するための一定の機能を有する論理を具備する特定のハードウェアコンポーネント、またはプログラムドコンピュータコンポーネントと一定の機能を有するハードウェアコンポーネントとの何らかの組合せにより、実施してもよい。
【００１１】
本発明の実施態様を実施するための論理をプログラムするために使用される命令は、ＤＲＡＭ、キャッシュ、フラッシュメモリまたは他の記憶装置等の当該システム内のメモリに記憶することができる。更に、それらの命令は、ネットワークを介して分散するか、他のコンピュータ読取り可能媒体により分散することができる。機械読取り可能媒体は、機械（例えば、コンピュータ）で読み取ることができる形態で情報を記憶または送信するための何らかのメカニズムを具備してよく、そのような媒体は、一例として、フロッピー（登録商標）ディスク、光ディスク、コンパクトディスク−リードオンリーメモリ（ＣＤ―ＲＯＭ）、光磁気ディスク、リードオンリーメモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、消去可能プログラム可能リードオンリーメモリ（ＥＰＲＯＭ）、電気的消去可能プログラム可能リードオンリーメモリ（ＥＥＰＲＯＭ）、磁気または光カード、フラッシュメモリ、または電気形態、光形態、音響形態または他の形態の伝播信号（例えば、搬送波、赤外線信号、デジタル信号など）によりインターネット経由で情報を送信する際に使用される有形の機械読取り可能な記憶装置であるが、これらに限定されるものではない。従って、コンピュータ読取り可能媒体は、機械（例えば、コンピュータ）で読取り可能な形態で電子命令または情報を記憶または送信するのに適した、何らかの種類の有形の機械読取り可能媒体を含む。
【００１２】
本願明細書における「プロセッサ」は、符号化算数演算、論理演算、または入出力オペレーションのための命令を実行可能なデバイスを指す。実例の一つでは、プロセッサは、フォンノイマンアーキテクチャモデルに従い、算数論理演算装置（ＡＬＵ）、コントロールユニット、および複数のレジスタを具備する。更に別の態様では、プロセッサは、一または複数のプロセッサコアを含むものでよく、従って、通常単一命令パイプラインを処理するシングルコアプロセッサ、または複数の命令パイプライン同時に処理することができるマルチコアプロセッサでよい。また別の態様では、プロセッサは、単一の集積回路または複数の集積回路として実装してもよいし、さもなければ、マルチチップモジュールの一コンポーネントでもよい（例えば、マルチチップモジュールでは、個々のマイクロプロセッサダイが単一の集積回路パッケージに含まれ、従って個々のマイクロプロセッサチップが一つのソケットを共有する）。
【００１３】
図１は、本願開示の一態様または複数の態様によるコンピュータシステムの実施例のハイレベルコンポーネント図を示す。コンピュータシステム１００は、本願明細書に記載の実施態様により、データを処理するためのアルゴリズムを実行するための論理を含む実行ユニットを使用するためのプロセッサ１０２を含む。システム１００は、カリフォルニア州サンタクララのインテル社から入手可能なＰｅｎｔｉｕｍ（登録商標）  ＩＩＩ、Ｐｅｎｔｉｕｍ（登録商標）  ４、Ｘｅｏｎ（登録商標）、Ｉｔａｎｉｕｍ、ＸＳｃａｌｅ（登録商標）および／またはＳｔｒｏｎｇＡＲＭ（登録商標）マイクロプロセッサを使用した処理システムを表しているが、他のシステム（他のマイクロプロセッサを有するＰＣ、エンジニアリングワークステーション、セットトップボックス等）を使用してもよい。一実施態様では、サンプルシステム１００は、ワシントン州レドモンドのマイクロソフト社から入手可能なＷＩＮＤＯＷＳ（登録商標）バージョンのオペレーティングシステムを実行するが、他のオペレーティングシステム（例えば、ＵＮＩＸ（登録商標）やＬｉｎｕｘ（登録商標））、埋込み型ソフトウェア、および／またはグラフィカルユーザインタフェースも使用することができる。このように、本発明の実施態様は、ハードウェア回路構成とソフトウェアの如何なる特定の組合せにも限定されるものではない。
【００１４】
実施態様は、コンピュータシステムに限定されるものではない。本発明の別の実施態様は、携帯用装置や埋込み型アプリケーションのような他の装置で使用することができる。携帯用装置の実施例には、携帯電話、インターネットプロトコルデバイス、デジタルカメラ、携帯情報端末（ＰＤＡ）、携帯用ＰＣがある。埋込み型アプリケーションとしては、マイクロコントローラ、デジタル信号プロセッサ（ＤＳＰ）、システムオンチップ、ネットワークコンピュータ（ＮｅｔＰＣ）、セットトップボックス、ネットワークハブ、広域ネットワーク（ＷＡＮ）スイッチ、あるいは少なくとも１つの実施態様による一または複数の命令を実行することができる何らかの他のシステムが可能である。
【００１５】
この実例では、プロセッサ１０２は、一または複数の命令（例えば、トランザクショナルメモリアクセス命令）を実行するためのアルゴリズムを実行するための一または複数の実行ユニット１０８を含む。一実施態様は、シングルプロセッサデスクトップまたはサーバーシステムに関して記述されているが、別の実施態様は、マルチプロセッサシステムに含まれる。システム１００は、「ハブ」システムアーキテクチャの一例である。コンピュータシステム１００は、データ信号を処理するためのプロセッサ１０２を含む。実例としてのプロセッサ１０２は、例えば、複雑命令セットコンピュータ（ＣＩＳＣ）マイクロプロセッサ、縮小命令セットコンピューティング（ＲＩＳＣ）マイクロプロセッサ、超長命令語（ＶＬＩＷ）マイクロプロセッサ、命令セットの組合せを実行するプロセッサ、またはデジタル信号プロセッサのような他のプロセッサ装置を含む。プロセッサ１０２は、システム１００内でプロセッサ１０２と他のコンポーネントとの間でデータ信号を送信するプロセッサバス１１０に結合されている。システム１００の構成要素（例えば、グラフィックスアクセラレータ１１２、メモリコントローラハブ１１６、メモリ１２０、入出力コントローラハブ１２４、無線トランシーバ１２６、フラッシュＢＩＯＳ１２８、ネットワークコントローラ１３４、オーディオコントローラ１３６、シリアル拡張ポート１３８、入出力コントローラ１４０等）は、当業者に周知の従来機能を果たす。
【００１６】
一実施態様において、プロセッサ１０２は、レベル１（Ｌ１）の内部キャッシュ１０４を含む。そのアーキテクチャに依存して、プロセッサ１０２は、単一の内部キャッシュまたは複数レベルの内部キャッシュを有する。他の実施態様は、個別の実装と必要性に応じて、内部キャッシュと外部キャッシュの両方の組合せを含む。レジスタファイル１０６は、整数レジスタ、浮動小数点レジスタ、ベクトルレジスタ、バンクドレジスタ、シャドウレジスタ、チェックポイントレジスタ、ステータスレジスタ、および命令ポインタレジスタ等の様々なレジスタに異なる種類のデータを記憶することになる。
【００１７】
プロセッサ１０２は、整数および浮動小数点演算を行うための論理を含む実行ユニット１０８も具備する。プロセッサ１０２は、一実施態様において、マイクロコードを記憶するためのマイクロコード（μｃｏｄｅ）ＲＯＭを含み、実行時には、特定のマクロ命令のためのアルゴリズムを実行するか、あるいは複雑なシナリオを処理する。ここで、場合によって、マイクロコードは、プロセッサ１０２に対し論理バグ／修正を処理するように更新することができる。一実施態様に関しては、実行ユニット１０８は、圧縮された命令セット１０９を処理するための論理を含む。汎用プロセッサ１０２の命令セットの中に圧縮された命令セット１０９を入れることによって、命令を実行するための関連回路構成と共に、多くのマルチメディア・アプリケーションにより使用されるオペレーションが、汎用プロセッサ１０２内のパックデータを使用しながら行われる。このように、多くのマルチメディア・アプリケーションは、加速されて、パックデータに対しオペレーションを実行するためのプロセッサのデータバスの全幅を使うことでより効率的に実行される。これによって、一または複数のオペレーションを行うために、一度に一データ要素づつ、より小さな単位のデータをプロセッサのデータバス越しに転送する必要が潜在的に無くなっている。
【００１８】
別の実施例では、実行ユニット１０８は、マイクロコントローラ、埋込み型プロセッサ、グラフィックスデバイス、ＤＳＰ、および他の種類の論理回路でも使用することができる。システム１００は、メモリ１２０を含む。メモリ１２０は、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）デバイス、スタティックランダムアクセスメモリ（ＳＲＡＭ）デバイス、フラッシュメモリデバイス、またはその他メモリデバイスを含む。メモリ１２０は、命令および／またはプロセッサ１０２が実行するデータ信号により表されたデータを記憶する。
【００１９】
システム論理チップ１１６は、プロセッサバス１１０およびメモリ１２０に結合されている。例示した実施態様では、システム論理チップ１１６は、メモリコントローラハブ（ＭＣＨ）である。プロセッサ１０２は、プロセッサバス１１０を介してＭＣＨ１１６と通信することができる。ＭＣＨ１１６は、命令およびデータの記憶兼グラフィックスコマンド、データおよびテクスチャの記憶用のメモリ１２０への高帯域メモリパス１１８を与える。ＭＣＨ１１６は、プロセッサ１０２と、メモリ１２０と、システム１００内の他のコンポーネントとの間で、データ信号を指示し、プロセッサバス１１０と、メモリ１２０と、システム入出力１２２との間で、データ信号の橋渡しをする。一部の実施態様では、システム論理チップ１１６により、グラフィックスコントローラ１１２へ結合するためのグラフィックスポートを設けることが可能になっている。ＭＣＨ１１６は、メモリインタフェース１１８を介してメモリ１２０に結合されている。グラフィックスカード１１２は、アクセラレイティッド・グラフィックス・ポート（ＡＧＰ）相互接続部１１４を介してＭＣＨ１１６に結合されている。
【００２０】
システム１００独自のハブインタフェースバス１２２を使用して、ＭＣＨ１１６を入出力コントローラハブ（ＩＣＨ）１３０に結合する。ＩＣＨ１３０は、ローカル入出力バスを介して、幾つかの入出力装置への直接接続を可能にする。ローカル入出力バスは、周辺機器をメモリ１２０、チップセット、およびプロセッサ１０２に接続するための高速入出力バスである。幾つかの例は、オーディオコントローラ、ファームウェアハブ（フラッシュＢＩＯＳ）１２８、無線トランシーバ１２６、データ記憶装置１２４、ユーザ入力装置およびキーボードインタフェースを具備するレガシー入出力コントローラ、ユニバーサルシリアルバス（ＵＳＢ）のようなシリアル拡張ポート、およびネットワークコントローラ１３４である。データ記憶装置１２４は、ハードディスクドライブ、フロッピー（登録商標）ディスクドライブ、ＣＤ−ＲＯＭ装置、フラッシュメモリデバイス、または他の大容量記憶装置が可能である。
【００２１】
別の実施例のシステムでは、一実施態様による命令は、システムオンチップに対し使用することができる。一実施態様のシステムオンチップは、プロセッサとメモリとを含む。そのようなシステムのメモリは、フラッシュメモリである。フラッシュメモリは、プロセッサおよびその他システムコンポーネントと同じダイの上に配置することができる。更に、メモリコントローラまたはグラフィックスコントローラのような他の論理ブロックをシステムオンチップ上に配置することもできる。
【００２２】
上記実施例のプロセッサ１０２は、トランザクショナルメモリアクセスを実行する。ある種の実行の際には、プロセッサ１０２は、一または複数回のメモリリードオペレーションおよび／またはライトオペレーションも実行するが、以下に更に詳細に述べるように、これらのオペレーションは、トランザクション無事完了またはアボートに関係なく、結果が他の装置（例えば、他のプロセッサコア、または他のプロセッサ）から直ちに見えるように、迅速に行われる。
【００２３】
図２は、本発明の一実施態様によるトランザクショナルメモリアクセス命令および／または非トランザクショナルメモリアクセス命令を実行するための論理回路を含むプロセッサ２００用のマイクロアーキテクチャのブロック図である。幾つかの実施態様では、一実施態様による命令を実行し、バイト、ワード、ダブルワード、クワッドワード等のサイズを有するデータエレメントにも、単精度整数データ型および倍精度整数データ型、ならびに浮動小数点データ型のようなデータ型のデータエレメントにも作用することが可能である。また、一実施態様において、間順フロントエンド２０１は、実行対象の命令を取り出し、後からプロセッサパイプラインで使用するように命令を準備するプロセッサ２００の部分である。フロントエンド２０１は、幾つかのユニットを含んでよい。一実施態様において、命令事前取出し部２２６は、メモリから命令を取り出し、それらの命令を命令デコーダ２２８へ供給し、命令デコーダは、命令を順次復号化または解釈実行する。例えば、一実施態様において、デコーダは受け取った命令を、機械が実行可能な「マイクロ命令」または「マイクロオペレーション」（マイクロＯＰまたはμＯＰとも称する）と称する一または複数のオペレーションに復号化する。別の実施態様では、デコーダは、命令を解析して、一実施態様によるオペレーションを行うためのマイクロアーキテクチャにより使用されるオペコードおよび対応するデータ、ならびにコントロールフィールドとする。また、一実施態様では、トレースキャッシュ２３０は、復号化されたμＯＰを取得し、それらをアセンブルして、実行用のμＯＰキュー２３４の中のプログラムオーダードシーケンスまたはトレースとする。トレースキャッシュ２３０が、複雑命令に遭遇すると、マイクロコードＲＯＭ２３２は、オペレーションを完了するために必要なμＯＰを供給する。
【００２４】
一部の命令は、単一のマイクロＯＰに変換されるが、他の命令は、全オペレーションを完了するために、数個のマイクロＯＰを必要とする。また、一実施態様では、４以上のマイクロＯＰが命令を完了するために必要な場合、デコーダ２２８は、マイクロコードＲＯＭ２３２にアクセスして、命令を実行する。一実施態様において、一つの命令は、命令デコーダ２２８での処理用の少数のマイクロＯＰに復号化される。また別の実施態様では、マイクロコードＲＯＭ２３２内に一つの命令を記憶可能であり、若干数のマイクロＯＰが、そのオペレーションの遂行に必要とされるはずである。トレースキャッシュ２３０は、一実施態様による一または複数の命令を完了するためのマイクロコードシーケンスを、マイクロコードＲＯＭ２３２から読み出すための正しいマイクロ命令ポインタを決定するためのエントリポイントプログラム可能論理アレイ（ＰＬＡ）を指す。命令に対するマイクロＯＰの順序付けをマイクロコードＲＯＭ２３２が完了した後、当該機械のフロントエンド２０１は、トレースキャッシュ２３０からのマイクロＯＰの取出しを再開する。
【００２５】
アウト・オブ・オーダー実行エンジン２０３は、命令が実行用に準備される場所である。アウト・オブ・オーダー実行論理は、命令がパイプラインを下り実行についてスケジュールされるときに、命令の流れを平滑化して再順序付けし、性能を最適化するための若干数のバッファを有する。アロケータ論理は、各μＯＰが順次実行する必要があるバッファおよび資源をマシンに割り当てる。レジスタ・リネーミング論理は、論理レジスタをレジスタファイル内のエントリにリネームする。また、命令スケジューラの前に、アロケータは、２本のμＯＰキュー（メモリオペレーション用に１キューと、ノンメモリオペレーション用に１キュー）のうちの１本キューの各μＯＰ毎に１エントリを割り当てるが、ここで命令スケジューラは、メモリスケジューラ、高速スケジューラ２０２、低速／汎用浮動小数点スケジューラ２０４、および単純浮動小数点スケジューラ２０６である。μＯＰスケジューラ２０２、２０４、２０６は、それらの従属入力レジスタ・オペランド・ソースの準備性および実行資源の入手可能性に基づいて、オペレーションを完了する必要があるμＯＰの実行の準備ができるときを決定する。一実施態様の高速スケジューラ２０２は、主クロックサイクルの１／２毎にスケジュールを行い、他のスケジューラは、一主プロセッサクロックサイクル毎に１回スケジュールを行うことができる。スケジューラは、ディスパッチポートについて調停を行い、実行のためにμＯＰをスケジュールする。
【００２６】
レジスタファイル２０８、２１０は、スケジューラ２０２、２０４、２０６と実行ブロック２１１内の実行ユニット２１２、２１４、２１６、２１８、２２０、２２２、２２４との間に位置する。整数オペレーションと浮動小数点オペレーション用にそれぞれ別のレジスタファイル２０８、２１０が存在する。一実施態様による各レジスタファイル２０８、２１０は、バイパスネットワークも含んでおり、同バイパスネットワークは、レジスタファイルに未だ書き込んでいない丁度終了した結果を、新しい従属μＯＰへバイパスするか、あるいは転送する。整数レジスタファイル２０８および浮動小数点レジスタファイル２１０も、互いにデータ通信を行うことが可能である。一実施態様において、整数レジスタファイル２０８は、２つの異なるレジスタファイルに分割されており、一方のレジスタファイルは、下位３２ビットデータ用で、二つめのレジスタファイルは、高位３２ビットデータ用である。一実施態様による浮動小数点レジスタファイル２１０は、１２８ビット幅のエントリを有する。これは、浮動小数点命令が、通常、幅６４から１２８ビットのオペランドを有するからである。
【００２７】
実行ブロック２１１は、実行ユニット２１２、２１４、２１６、２１８、２２０、２２２、２２４を含み、これらの実行ユニットで、命令が実際に実行される。このセクションは、マイクロ命令を実行する必要がある整数および浮動小数点データオペランド値を記憶するレジスタファイル２０８、２１０を含む。また、一実施態様によるプロセッサ２００は、若干数の実行ユニット、すなわちアドレス生成ユニット（ＡＧＵ）２１２、ＡＧＵ２１４、高速算術論理演算装置２１６、高速算術論理演算装置２１８、低速算術論理演算装置２２０、浮動小数点算術論理演算装置２２２、浮動小数点ムーブユニット２２４から成る。一実施態様において、浮動小数点実行ブロック２２２、２２４は、浮動小数点、ＭＭＸ、ＳＩＭＤおよびＳＳＥ、またはその他オペレーションを実行する。一実施態様による浮動小数点算術論理演算装置２２２は、除算、平方根、および剰余マイクロＯＰを実行するための６４ビット／６４ビット浮動小数点除算器を含む。本発明の実施態様においては、浮動小数点値を含む命令は、浮動小数点ハードウェアを用いて処理すればよい。一実施態様では、算術論理演算装置のオペレーションは、高速算術論理演算装置実行ユニット２１６、２１８によりなされる。一実施態様による高速算術論理演算装置２１６、２１８は、クロックサイクルの半分の効果的レイテンシで、高速オペレーションを実行することができる。
また、一実施態様において、最も複雑な整数オペレーションは、低速算術論理演算装置２２０によりなされるが、これは、低速算術論理演算装置２２０が、乗算器、シフト、フラグ論理、および分岐処理のような長レイテンシ型のオペレーション用の整数実行ハードウェアを含んでいるからである。メモリロード／記憶オペレーションは、ＡＧＵ２１２、２１４により実行される。一実施態様において、整数算術論理演算装置２１６、２１８、２２０は、６４ビットデータオペランドに対する整数オペレーションの実施に関して説明する。また、別の実施態様では、１６、３２、１２８、２５６等の様々なデータビットをサポートできるように、算術論理演算装置２１６、２１８、２２０を実装することができる。同様に、浮動小数点ユニット２２２、２２４は、複数ビットの様々な幅を有するオペランドの範囲をサポートするように実装することができる。また、一実施態様において、浮動小数点ユニット２２２、２２４は、ＳＩＭＤおよびマルチメディア命令と共に１２８ビット幅のパックデータオペランドに対し作用することが可能である。
【００２８】
一実施態様において、μＯＰスケジューラ２０２、２０４、２０６は、ペアレントロードが実行し終わる前に従属オペレーションをディスパッチする。μＯＰは、プロセッサ２００において、推論式にスケジュールされて実行されるので、プロセッサ２００は、メモリミスを処理するための論理も含む。データキャッシュにおいてデータロードが失敗する場合は、一時的にデータが間違った状態でスケジューラを放置するパイプラインにおいて一斉処理中の複数の従属オペレーションが存在し得る。リプライメカニズムは、間違ったデータを使用している命令を追跡して再実行する。従属オペレーションは繰り返されるはずであるが、無関係なオペレーションは、完了することができる。スケジューラと、プロセッサの一実施態様のリプライメカニズムは、テキストストリング比較オペレーションのために命令シーケンスを取得するようにも設計されている。
【００２９】
「レジスタ」という用語は、オペランドを識別する命令の一部として使用されるオンボードのプロセッサ記憶位置を指す。すなわち、レジスタは、（プログラマーの立場から）プロセッサの外部から使用することができるレジスタである。しかし、実施態様のレジスタは、効果の面で、特別な種類の回路に限定すべきではない。むしろ、実施態様のレジスタは、データを記憶、提供し、本願明細書に記載の機能を果たすことができる。専用の物理レジスタ、レジスタのリネームを用いる動的に割り当てられた物理レジスタ、専用の物理レジスタと動的に割り当てられた物理レジスタとの組合せ等の、任意の数の異なる技術を使用するプロセッサ内の回路構成により、本願明細書記載のレジスタを実装することができる。また一実施態様において、整数レジスタは、３２ビットの整数データを記憶する。また、一実施態様によるレジスタファイルは、パックデータ用に８つのマルチメディアＳＩＭＤレジスタも含む。以下の解説に関しては、レジスタは、カリフォルニア州サンタクララのインテル社によるＭＭＸ（登録商標）テクノロジーを用いて可能となるマイクロプロセッサにおける６４ビット幅ＭＭＸレジスタ（場合によって、「ｍｍ」レジスタとも称される）のようなパックデータを保持するように設計されたデータレジスタとして見なす。これらのＭＭＸレジスタは、整数形態と浮動小数点形態の両方で入手可能であり、ＳＩＭＤおよびＳＳＥ命令を伴うパックデータ要素を用いて作用する。同様に、ＳＳＥ２、ＳＳＥ３、ＳＳＥ４、またはこれらを超えるテクノロジー（一般に、「ＳＳＥｘ」と称する）に関係する１２８ビット幅ＸＭＭレジスタは、そのようなパックデータオペランドを保持するためにも使用することができる。また、一実施態様において、パックデータおよび整数データを記憶する際、レジスタは、これら２つのデータ型の差別化を必要としない。更にまた、一実施態様において、整数および浮動小数点は、同じレジスタファイルに格納されるか、または異なるレジスタファイルに格納されるかのいずれかである。更に、一実施態様において、浮動小数点データおよび整数データは、異なるレジスタに記憶されるか、同じレジスタに記憶してよい。
【００３０】
図３ａおよび図３ｂは、本願開示の一または複数態様によるプロセッサマイクロアーキテクチャの構成要素を概略的に例示している。図３ａにおいて、プロセッサパイプライン４００は、フェッチステージ４０２、長さ復号化ステージ４０４、復号化ステージ４０６、割付けステージ４０８、リネーミングステージ４１０、スケジューリング（ディスパッチまたは問題としても既知）ステージ４１２、レジスタリード／メモリリードステージ４１４、実行ステージ４１６、ライトバック／メモリライトステージ４１８、例外処理ステージ４２２、およびコミットステージ４２４を含む。
【００３１】
図３ｂにおいて、矢印は、複数のユニット間の結合を表しており、矢印の方向は、それらのユニット間のデータフローの方向を示している。図３ｂは、実行エンジンユニット４５０に結合されたフロントエンドユニット４３０を含むプロセッサコア４９０を示しており、共に、メモリユニット４７０と結合されている。
【００３２】
コア４９０は、縮小命令セットコンピューティング（ＲＩＳＣ）コア、複雑命令セットコンピューティング（ＣＩＳＣ）コア、超長命令語（ＶＬＩＷ）コア、またはハイブリッドまたは代替コア型でよい。また別の選択肢として、コア４９０は、例えばネットワークまたは通信コア、圧縮エンジン、グラフィックスコア等の特殊用途のコアでよい。ある特定の実装においては、コア４９０は、本願開示の一または複数態様によるトランザクショナルメモリアクセス命令および／または非トランザクショナルメモリアクセス命令を実行可能に構成することができる。
【００３３】
フロントエンドユニット４３０は、命令キャッシュユニット４３４に結合された分岐予測ユニット４３２を含み、これは、命令トランザクション・ルックアサイド・バッファ（ＴＬＢ）４３６に結合されており、該命令トランザクション・ルックアサイド・バッファは、命令フェッチユニット４３８に結合されており、該命令フェッチユニットは、復号化ユニット４４０に接合されている。復号化ユニット、すなわちデコーダは、命令を復号化し、出力として、一または複数のマイクロオペレーション、マイクロコードエントリポイント、マイクロ命令、その他の命令、またはその他の制御信号を生成するが、これらは、元の命令から復号化されるか、もしくは別の方法で元の命令を反映しているか、または元の命令から得たものである。デコーダは、様々に異なるメカニズムを使用して実装することができる。好適なメカニズムの実施例は、ルックアップテーブル、ハードウェア実装、プログラム可能論理アレイ（ＰＬＡ）、マイクロコード・リード・オンリー・メモリ（ＲＯＭ）等であるが、これらに限定されるものではない。命令キャッシュユニット４３４は、メモリユニット４７０において、レベル２（Ｌ２）のキャッシュユニット４７６に更に結合されている。復号化ユニット４４０は、実行エンジンユニット４５０内のリネーム／アロケータユニット４５２に結合されている。
【００３４】
実行エンジンユニット４５０は、リタイアメントユニット４５４と一または一セットのスケジューラユニット４５６とに結合されたリネーム／アロケータユニット４５２を含む。スケジューラユニット４５６は、任意の数の異なるスケジューラを表しており、予約ステーション、中央命令ウインドウ等を含む。一または複数のスケジューラユニット４５６の一セットは、物理レジスタファイル（複数可）のユニット（複数可）４５８に結合されている。物理レジスタファイル（複数可）の複数ユニット４５８のうちの各ユニットは、物理レジスタファイル（複数可）に相当し、異なる物理レジスタファイルは、一または複数異なるデータ型、例えばスカラー整数、スカラー浮動小数点、パック整数、パック浮動小数点、ベクトル整数、ベクトル浮動小数点等、ステータス（例えば、次の実行対象の命令のアドレスである命令ポインタ）等を保存する。上記物理レジスタファイル（複数可）のユニット（複数可）４５８は、リタイアメントユニット４５４と重複させて、レジスタエイリアシングとアウト・オブ・オーダー式の実行が行われる様々な様子を例示する。（この例示は、例えば、リオーダバッファ（複数可）およびリタイアメントレジスタファイル（複数可）を使用しながら；フューチャーファイル（複数可）およびヒストリバッファ（複数可）とリタイアメントレジスタファイル（複数可）を使用しながら；レジスタマップ（複数可）およびレジスタ・プールを使用しながら行う。）一般に、アーキテクチャ上のレジスタは、プロセッサの外側から、つまりプログラマーの立場から見える。レジスタは、いかなる周知の特定の種類の回路にも限定されていない。
本願明細書において記載されているようにレジスタがデータを記憶して提供することができる限り、様々な種類のレジスタが好適である。制限するものではないが、好適なレジスタの例には、専用の物理レジスタ、レジスタエイリアシングを用いる動的に割り付けられた物理レジスタ、専用の物理レジスタと動的に割り当てられた物理レジスタとの組合せ等がある。リタイアメントユニット４５４と、物理レジスタファイル（複数可）のユニット（複数可）４５８とは、実行クラスタ（複数可）４６０と結合されている。実行クラスタ（複数可）４６０は、一または複数の実行ユニット１６２の一セットおよび一または複数のメモリアクセスユニット４６４の一セットを含む。実行ユニット４６２は、様々な型（例えば、スカラー浮動小数点、パック整数、パック浮動小数点、ベクトル整数、ベクトル浮動小数点）のデータに対し様々な演算（例えば、シフト、加算、減算、乗算）を行うことができる。一部の実施態様には、特定の機能または機能セットに専用の若干数の実行ユニットを含んでもよいが、他の実施態様では、一実行ユニット、または全てが全部の機能を果たす複数の実行ユニットを含んでもよい。スケジューラユニット（複数可）４５６、物理レジスタファイル（複数可）のユニット（複数可）４５８、および実行クラスタ（複数可）４６０は、できる限り複数であるかのように示した。これは、ある特定の実施態様では、ある特定の型のデータ／オペレーションに対する別々のパイプライン（例えば、それぞれスケジューラユニット、物理レジスタファイル（複数可）のユニット、および／または実行クラスタを有する、スカラー整数パイプライン、スカラー浮動小数点／パック整数／パック浮動小数点／ベクトル整数／ベクトル浮動小数点パイプラインおよび／またはメモリアクセスパイプライン、ただし、個別のメモリアクセスパイプラインの場合、特定の実施態様が実施され、その際、このパイプラインの実行クラスタは、メモリアクセスユニット（複数可）４６４を有する）を生成するからである。別々のパイプラインが使用される場合、それらのパイプラインの一または複数がアウト・オブ・オーダー問題／実行となり、残りは、間順となり得るということも理解されるはずである。
【００３５】
該一組のメモリアクセスユニット４６４は、メモリユニット４７０に結合されており、同メモリユニットは、データＴＬＢユニット４７２を含む。同データＴＬＢユニット４７２は、データキャッシュユニット４７４に結合されており、同データキャッシュユニットは、レベル２（Ｌ２）のキャッシュユニット４７６に結合されている。代表的な一実施態様において、メモリアクセスユニット４６４は、ロードユニット、格納アドレスユニット、および格納データユニットを含み、これらのユニットは各々メモリユニット４７０内のデータＴＬＢユニット４７２に結合されている。Ｌ２キャッシュユニット４７６は、一または複数の他のレベルのキャッシュ、および最終的にはメインメモリに結合される。
【００３６】
例えば、アウト・オブ・オーダー問題／実行のコア・アーキテクチャでは、パイプライン４００を以下のように実装すればよい：命令フェッチ４３８により、取出しステージ４０２および長さ復号化ステージ４０４を実行する；復号化ユニット４４０により復号化ステージ４０６を実行する；リネーム／アロケータユニット４５２により、割付けステージ４０８およびリネーミングステージ４１０を実行する；スケジューラユニット（複数可）４５６により、スケジュールステージ４１２を実行する；物理レジスタファイル（複数可）のユニット（複数可）４５８、およびメモリユニット４７０により、レジスタリード／メモリリードステージ４１４を実行する；実行クラスタ４６０により実行ステージ４１６を実行する；メモリユニット４７０および物理レジスタファイル（複数可）のユニット（複数可）４５８により、ライトバック／メモリライトステージ４１８を実行する；各種ユニットを、例外処理ステージ４２２に関係させてもよい；ならびにリタイアメントユニット４５４および物理レジスタファイル（複数可）のユニット（複数可）４５８により、コミットステージ４２４を実行する。
【００３７】
コア４９０は、一または複数の命令セットをサポート可能である（例えば、ｘ８６命令セット（新しいバージョンでは、一部の拡張が追加済み）；カリフォルニア州サニーベール（Ｓｕｎｎｙｖａｌｅ，ＣＡ）のＭＩＰＳテクノロジーズ社によるＭＩＰＳ命令セット；およびカリフォルニア州サニーベール（Ｓｕｎｎｙｖａｌｅ，ＣＡ）のＡＲＭホーディングス社によるＡＲＭ命令セット（ＮＥＯＮ等の拡張が追加））。
【００３８】
特定の実装では、該コアは、マルチスレッディングをサポート（複数の並列セットのオペレーションまたはスレッドを実行）し、以下に挙げる様々な方法でこれを行う：時間スライスマルチスレッディング、同時マルチスレッディング（単一の物理コアが同時にマルチスレッディングする各スレッド毎に、同物理コアが論理コアを提供する）、およびこれらの組合せ（例えば、時間スライスフェッチおよび復号化、ならびにその後の、Ｉｎｔｅｌ（登録商標）ハイパースレッディングテクノロジー（Ｈｙｐｅｒｔｈｒｅａｄｉｎｇ  ｔｅｃｈｎｏｌｏｇｙ）等の同時マルチスレッディング）。
【００３９】
既に示した本プロセッサの実施態様は、個別の命令、データキャッシュユニット４３４／４７４、および共有Ｌ２キャッシュユニット４７６も含むが、別の実施態様は、命令とデータの両方用に単一の内部キャッシュ、例えば、レベル１（Ｌ１）の内部キャッシュまたは複数レベルの内部キャッシュを有する。一部の実施態様では、当該システムは、内部キャッシュと、コアおよび／またはプロセッサの外側にある外部キャッシュとの組合せを含んでよい。あるいは、キャッシュ全てをコアおよび／またはプロセッサの外側に配置してもよい。
【００４０】
図４は、本願開示の一または複数態様によるコンピュータシステム１００の幾つかの態様を概略的に例示する。本願明細書において上で言及し、かつ図４で概略的に例示したように、プロセッサ１０２は、命令および／またはデータを格納するための一または複数のキャッシュ１０４を具備してよく、例えば、Ｌ１キャッシュおよびＬ２キャッシュを含む。キャッシュ１０４は、一または複数のプロセッサコア１２３によりアクセス可能である。特定の実装においては、キャッシュ１０４は、ライト・スルー・キャッシュでもよく、キャッシュライトオペレーション毎に、システムメモリ１２０に対するライトオペレーションを発生させる。代わりに、キャッシュ１０４を、ライトバックキャッシュとしてもよく、その場合、キャッシュライトオペレーションは、システムメモリ１２０に対し、迅速に反映されない。特定に実装においては、キャッシュ１０４には、キャッシュ・コヒーレンシ・プロトコル、例えば、ＭＥＳＩ（Ｍｏｄｉｆｉｅｄ−Ｅｘｃｌｕｓｉｖｅ−Ｓｈａｒｅｄ−Ｉｎｖａｌｉｄ）プロトコルを導入し、一または複数のキャッシュに格納したデータの共有メモリに対する一貫性を与える。
【００４１】
また、特定の実装においては、プロセッサ１０２は更に、メモリ１２０から読み出したデータ／同メモリへ書き込むデータを保持するための、一または複数のリードバッファ１２７と、一または複数のライトバッファ１２９とを含む。これらのバッファは、同じサイズでも、異なる一定サイズでもよく、さもなければ、可変サイズでもよい。一例では、リードバッファとライトバッファは、同じ複数のバッファでもよい。また一例では、リードバッファおよび／またはライトバッファは、キャッシュ１０４の複数のキャッシュエントリでもよい。
【００４２】
プロセッサ１０２は更に、バッファ１２７および１２９に関連付けられたメモリ追跡論理１３１を含んでよい。同メモリ追跡論理は、（例えば、物理アドレスによって識別される）メモリ位置へのアクセスを追跡するように構成された回路構成を特徴とし、これらのメモリ位置は、前もってバッファ１２７および／または１２９に格納してあり、結果的に、対応するメモリ位置に対するバッファ１２７および／または１２９に格納されているデータのコヒーレンシを提供する。また、特定の実装においては、バッファ１２７および／または１２９は、これらに関連付けられたアドレスタグを有し、バッファに格納しているメモリ位置のアドレスを保持することができる。該メモリ追跡論理１３１を実装する回路構成は、コンピュータシステム１００のアドレスバスに通信式に結合しており、従って、アドレスバス上で他のデバイス（例えば、他のプロセッサ、またはダイレクトメモリアクセス（ＤＭＡ）コントローラ）により指定されたアドレスを読み出すこと、およびそれらのアドレスを、予めバッファ１２７および／または１２９に格納したメモリ位置を識別するアドレスと比較することによって、スヌーピングを実施することができる。
【００４３】
プロセッサ１０２は更に、本願明細書で以下により詳細に説明するようなトランザクションの異常終了の場合に実行すべきエラー回復ルーチンのアドレスを保持するためのエラー回復ルーチンアドレスレジスタ１３５を含んでよい。プロセッサ１０２は更に、本願明細書で以下により詳細に説明するようなトランザクションエラーコードを保持するためのトランザクションステータスレジスタ１３７を含んでよい。
【００４４】
プロセッサ１０２がトランザクショナルメモリアクセスを実施できるように、その命令セットは、トランザクション開始（ＴＸ＿ＳＴＡＲＴ）命令と、トランザクション終了（ＴＸ＿ＥＮＤ）命令とを含んでよい。ＴＸ＿ＳＴＡＲＴ命令は、トランザクションが異常終了した場合に、プロセッサ１０２が実行すべきエラー回復ルーチンのアドレス、および／またはトランザクションを行うために必要なハードウェアバッファの数を含む一または複数のオペランドを含む。
【００４５】
特定の実装において、トランザクション開始命令により、プロセッサに、当該トランザクションを実行するために、リードバッファおよび／またはライトバッファを割り当てさせてもよい。また、特定の実装において、トランザクション開始命令により、更に、保留中の格納オペレーションの全てをプロセッサに処理させて、前に実行したメモリアクセスオペレーションの結果が同じメモリにアクセスする他のデバイスに確実に見えるようにしてもよい。更にまた特定の実装において、トランザクション開始命令により更に、当該プロセッサに、データをプリフェッチするのを止めさせてもよい。また更に、特定の実装において、（トランザクションが保留になっている間に発生した割り込みがトランザクションを無効にする可能性があるため）トランザクションが成功する機会を改善するために、トランザクション開始命令により更に、当該プロセッサに、規定されたサイクル数の間、割込みを無効にさせてもよい。
【００４６】
ＴＸ＿ＳＴＡＲＴ命令の処理に応じて、該プロセッサ１０２は、対応するＴＸ＿ＥＮＤ命令またはエラーの状態の検出によって、終了させることができるオペレーションのトランザクションモードに入ることができる。オペレーションのトランザクションモードでは、プロセッサ１０２は、それぞれのリードバッファ１２７および／またはライトバッファ１２９を介してメモリリードオペレーションおよび／またはメモリライトオペレーションを推論式に（つまり、アクセス中のメモリに対しロックを取得せずに）複数回行うことができる。
【００４７】
オペレーションのトランザクションモードでは、該プロセッサは、各ロード取得オペレーション毎に、リードバッファ１２７を割り当てることができる（アクセスされているメモリ位置の内容を既に保持している場合、既存バッファは再利用することができるが、そうでない場合は新しいバッファが割り当てられる）。該プロセッサは更に、各格納取得オペレーション毎に、ライトバッファ１２９を割り当てることができる（アクセスされているメモリ位置の内容を既に保持している場合、既存バッファは再利用することができるが、そうでない場合は新しいバッファが割り当てられる）。ライトバッファ１２９は、対応するメモリ位置に対しデータを記憶せずに、ライトオペレーションの結果を保持することができる。メモリ追跡論理１３１は、指定されたメモリ位置に対する他のデバイスによるアクセスを検出すると、プロセッサ１０２に対しエラーの状態を信号送信することができる。このエラー信号を受信すると、プロセッサ１０２は、当該トランザクションをアボートし、対応するＴＸ＿ＳＴＡＲＴ命令により指定されるエラー回復ルーチンへ制御を移す。他に、ＴＸ＿ＥＮＤ命令を受信すると、プロセッサ１０２は、対応するメモリまたはキャッシュ位置に対し、ライトオペレーションを行う。
【００４８】
オペレーションのトランザクションモードでは、該プロセッサは、当該トランザクションが無事完了またはアボートかに関わりなく、オペレーションの結果が他のデバイス（例えば、他のプロセッサコアまたは他のプロセッサ）に直ちに見えるようになるように、一または複数のメモリリードオペレーションおよび／またはライトオペレーションを実行することもできる。一トランザクションの範囲内で非トランザクショナルメモリアクセスを実行可能であることで、当該プロセッサのプログラミングの自由度は向上し、また、実行効率を更に改善することができる。
【００４９】
リードバッファ１２７および／またはライトバッファ１２９は、プロセッサ１０２の最低レベルのデータキャッシュ内で、複数のキャッシュエントリを割り当てることによって、実装することができる。トランザクションがアボートされるならば、リードバッファおよび／またはライトバッファは、無効および／または利用可のように、マークすればよい。本願明細書中上記で言及したように、実行のトランザクションモード中、読出しおよび／または改変中のメモリに対する他のデバイスによるアクセスを検出すると、トランザクションをアボートすることができる。他のトランザクションアボート条件には、ハードウェアによる割込み、ハードウェアバッファのオーバーフローおよび／または、トランザクションモードの実行中に検出されたプログラムエラーを入れてよい。更に、特定の実装においては、トランザクションモードの実行の際に検出したエラーの源を示すステータスを保持するために、ステータスフラグ、例えば、ゼロフラグ、キャリーフラグ、および／またはオーバーフローフラグ等を使用することができる。また代わりに、トランザクションエラーコードを、トランザクションステータスレジスタ１３７に格納してもよい。
【００５０】
実行が対応するＴＸ＿ＥＮＤ命令に達し、バッファ１２７および／または１２９にバッファされたデータが、読み出しも改変もされない場合、トランザクションは、正常に完了する。ＴＸ＿ＥＮＤ命令に達すると、当該プロセッサは、オペレーションのトランザクションモード中にトランザクションアボート条件が発生しなかった旨の確認に応じて、ライトオペレーションの結果を対応するメモリまたはキャッシュ位置にコミットし、予めトランザクションに割り当て済みであるバッファ１２７および／または１２７を開放する。特定の実装においては、プロセッサ１０２は、非トランザクショナルメモリアクセスオペレーションにより読み出しおよび／または改変されたメモリ位置の状態に関係なく、トランザクショナルライトオペレーションをコミットすることができる。
【００５１】
トランザクションアボート条件を検出すると、当該プロセッサは、当該トランザクションをアボートし、アドレスがエラー回復ルーチンアドレスレジスタ１３５に格納可能であるエラー回復ルーチンへ制御を移せばよい。トランザクションがアボートされるならば、予めトランザクションに割り当てておいたバッファ１２７および／または１２９は、無効および／または利用可のように、マークすればよい。
【００５２】
特定の実装においては、プロセッサ１０２は、ネスト形トランザクションにサポートすることができる。ネスト形トランザクションは、別の（外側の）トランザクションの範囲内で実行されるＴＸ＿ＳＴＡＲＴ命令によって開始することができる。ネスト形トランザクションを実施しても、該ネスト形トランザクションの結果に対する外側のトランザクションの範囲内で見えるようにする以外には、外側のトランザクションの状態に対する影響は無い可能性がある。しかし、それらの結果は、外側のトランザクションもコミットするまで、他のデバイスから隠れたままにすることができる。
【００５３】
ネスト形トランザクションを実施するには、ＴＸ＿ＥＮＤ命令は、対応するＴＸ＿ＳＴＡＲＴ命令のアドレスを示すオペランドを含めばよい。更に、エラー回復ルーチンアドレスレジスタ１３５は、同時に有効にすることができる幾つかのネスト形トランザクション用のエラー回復ルーチンアドレスを保持するように拡張することができる。
【００５４】
ネスト形トランザクションの範囲内で発生しているエラーは、外側のトランザクション全てを無効にすることができる。一連のネスト形トランザクションの範囲内の各エラー回復ルーチンは、対応する外側トランザクションのエラー回復ルーチンを呼び出す役目を果たすことができる。
【００５５】
特定の実装においては、トランザクション開始命令およびトランザクション終了命令は、本願明細書中の上に詳述したように、幾つかのロード取得命令および／または格納取得命令をトランザクションモードで実行される一連の命令にグループ化することによって、プロセッサの命令セットの中に存在しているロード取得命令および／または格納取得命令の作用を改変するために使用することができる。
【００５６】
実施例のコードフラグメントが図５に示してあり、トランザクションモード命令の使用を例示している。コードフラグメント５００により、２つの口座間での送金を説明する。ＥＢＸに蓄えた金額は、ＳｒｃＡｃｃｏｕｎｔからＤｓｔＡｃｃｏｕｎｔへ振替えられる。コードフラグメント５００は更に、非トランザクショナルメモリオペレーションを例示する。ＳｏｍｅＳｔａｔｉｓｔｉｃカウンタの内容は、レジスタへロードされ、インクリメントされ、読出しおよび改変中のメモリのステータスを監視せずに、該メモリへ戻して格納される。ＳｏｍｅＳｔａｔｉｓｔｉｃカウンタのアドレスに対する格納オペレーションの結果は、直ちにコミットされ、それ故、直ちに他のデバイスの全てで見えるようになる。
【００５７】
図６は、本願開示内容の一または複数態様によるトランザクショナルメモリアクセスの方法の実施例の流れ図を表す。当該方法６００は、コンピュータシステムにより実施することが可能であり、同コンピュータシステムは、ハードウェア（例えば、回路構成、専用の論理、および／またはプログラム可能論理）、及びソフトウェア（例えば、コンピュータシステムに対して実行可能で、ハードウェアシミュレーションを行うための命令）、またはこれらの組合せを特徴とする。本方法６００および／または、その機能、ルーチン、サブルーチン、もしくはオペレーションの各々は、本方法を実行するコンピュータシステムの一または複数の物理プロセッサによって実施される。２またはそれ以上の機能、ルーチン、サブルーチン、または方法６００のオペレーションは、同じメモリにアクセスしている異なるプロセッサによって並列に、あるいは上記の順序とは異なる順序で行われる。一実施例において、図６により示したように、本方法６００は、トランザクショナルメモリアクセスを実行するための、図１のコンピュータシステム１００により実施することができる。
【００５８】
図６を参照すると、ブロック６１０で、プロセッサが、メモリアクセストランザクションを開始することができる。本願明細書中上で言及したように、メモリアクセストランザクションは、専用のトランザクション開始命令によって開始することができる。トランザクション開始は、トランザクションが異常に終了する場合、プロセッサにより実行すべきエラー回復ルーチンのアドレスおよび／または、トランザクションの実施に必要なハードウェアバッファの数を含む一または複数のオペランドを含めばよい。また、特定の実装においては、トランザクション開始命令は、更に、トランザクションを実行するために、該プロセッサにリードバッファおよび／またはライトバッファ割り当てさせることができる。特定の実装において、また更に、トランザクション開始命令は、該プロセッサに保留中の格納オペレーション全てをコミットさせて、前に実行済みのメモリアクセスオペレーションの結果が、同じメモリにアクセスしている他のデバイスに見えるように確実にする。また更に特定の実装においては、トランザクション開始命令は更に、該プロセッサにデータをプリフェッチするのを止めさせることができる。
【００５９】
ブロック６２０では、該プロセッサは、メモリ追跡論理に関連付けられた一または複数のハードウェアバッファを介して、一または複数のメモリリードオペレーション推論式に実行することができる。読出し対象の各メモリブロックは、開始アドレスとサイズによるか、またはアドレス範囲によって識別することができる。メモリ追跡論理は、他のデバイスによって、指定されたメモリアドレスへのアクセスを検出し、エラー状態を当該プロセッサに対し信号送信する。
【００６０】
ブロック６３０において、プロセッサは、メモリ追跡論理に関連付けた一または複数のハードウェアバッファを介して一または複数のメモリライトオペレーションを推論式に実行することができる。書込み対象の各メモリブロックは、開始アドレスとサイズによるか、またはアドレス範囲によって識別することができる。ライトバッファが、メモリライトオペレーションの結果を保持し、対応するメモリ位置にデータをコミットしない。メモリ追跡論理は、他のデバイスによって、指定されたメモリアドレスへのアクセスを検出すると、エラーの状態をプロセッサへ信号送信する。
【００６１】
ブロック６４０により概略的に示してあるように、ブロック６３０により参照されるメモリライトオペレーション中のエラーを検出すると、該プロセッサは、ブロック６６０で、ＴＸ＿ＳＴＡＲＴ命令により指定されたエラー回復ルーチンを実行するが、さもなければ、ブロック６７０で、処理を継続することができる。
【００６２】
ブロック６７０では、該プロセッサは、一または複数のメモリリードオペレーションおよび／またはライトオペレーションを実行し、直ちにコミットすることができる。それらのオペレーションが直ちにコミットされるので、それらの結果は、当該トランザクションが無事完了またはアボートかに関わりなく、他のデバイス（例えば、他のプロセッサコアまたは他のプロセッサ）に対し直ちに見えるようになる。
【００６３】
トランザクション終了命令に到達すると、当該プロセッサは、ブロック６７０で概略的に示されているように、トランザクションアボート条件がオペレーションのトランザクションモード中に生じていないことを確かめることができる。ブロック６１０で開始したオペレーションのトランザクションモード中にエラーをブロック６７０で検出すると、該プロセッサは、ブロック６６０により概略的に示すように、エラー回復ルーチンを実行し；そうでなければ該プロセッサは、ブロック６８０で概略的に示されるように、ブロック６７０で参照した非トランザクショナルメモリアクセスオペレーションにより読み出しおよび／または改変されたメモリ位置の状態に関係なく、当該トランザクションを完了することができる。当該プロセッサは、ライトオペレーションの結果を対応するメモリまたはキャッシュ位置に対しコミットし、当該トランザクションに予め割り当てられていたバッファを開放することができる。ブロック６７０により参照されているオペレーションを完了すると、本方法は、終了することができる。
【００６４】
特定の実装において、トランザクションエラーも、オペレーションのトランザクションモードにおいて、幾つかの命令（ロードまたは格納命令など）の実行中に検出することができる。図６では、ブロック６２０および６３０から生じている破線は、オペレーションのトランザクションモードにおいて、実行される幾つかの命令からエラー回復ルーチンへの分岐を概略的に示している。
【００６５】
特定の実装においては、トランザクションエラーも、トランザクション終了命令の実行中に検出することができる。（例えば、他のデバイスによる、トランザクショナルメモリに対するアクセスを報告する論理内に遅延が生じている場合）。図６では、ブロック６８０からの破線は、トランザクション終了命令からエラー回復ルーチンへの分岐を概略的に示している。
【００６６】
図７は、本願開示の一または複数態様によるコンピュータシステムの実施例のブロック図である。図７に示すように、マルチプロセッサシステム７００は、ポイントツーポイントの相互接続システムであり、また、ポイントツーポイント相互接続部７５０を介して結合されている第１プロセッサ７７０と第２プロセッサ７８０を含む。プロセッサ７７０および７８０の各プロセッサは、本願明細書において上でより詳細に説明したように、トランザクショナルメモリアクセスオペレーションおよび／または非トランザクショナルメモリアクセスオペレーションを実行することができるプロセッサ１０２の何らかのバージョンでよい。
【００６７】
２つのプロセッサ７７０、７８０しか図示していないが、本発明の範囲がそのように制限されるものではない。他の実施態様では、一または複数の追加のプロセッサが、所定のプロセッサ内に存在することが可能である。
【００６８】
図示したプロセッサ７７０、７８０は、集積メモリコントローラユニット７７２、７８２をそれぞれ含む。プロセッサ７７０は、そのバスコントローラユニットの一部として、ポイントツーポイント（Ｐ−Ｐ）インタフェース７７６、７７８も具備する；同様に、第２プロセッサ７８０は、Ｐ−Ｐインタフェース７８６、７８８を具備する。プロセッサ７７０、７８０は、Ｐ−Ｐインタフェース回路７７８、７８８を使用しながら、ポイントツーポイント（Ｐ−Ｐ）インタフェース７５０を介して情報を交換することができる。図７に示すように、ＩＭＣ７７２、７８２は、プロセッサをそれぞれのメモリ、即ち、メモリ７３２およびメモリ７３４に結合させており、これらは、それぞれのプロセッサに局所的に取り付けられたメインメモリの部分である。
【００６９】
プロセッサ７７０、７８０は、ポイントツーポイントインタフェース回路７７６、７９４、７８６、７９８を使用して、個々のＰ−Ｐインタフェース７５２、７５４経由で、チップセット７９０と互いに情報を交換することができる。チップセット７９０も、高性能グラフィックスインタフェース７３９を介して、高性能グラフィックス回路７３８と情報を交換することができる。
【００７０】
共用キャッシュ（図示無し）は、何れのプロセッサ内にも、あるいは両プロセッサの外側にも、含めることが可能であるが、Ｐ−Ｐ相互接続部を介して、それぞれのプロセッサと接続されており、プロセッサが低パワーモードにある場合、これらのプロセッサの一方または両方のローカルキャッシュ情報を共用キャッシュに格納することができる。
【００７１】
チップセット７９０は、インタフェース７９６を介して、第１バス７１６に結合することができる。更に一実施態様において、第１バス７１６は、周辺コンポーネント相互接続（ＰＣＩ）バスもしくはＰＣＩ高速バスのようなバス、またはその他第三世代の入出力相互接続バスでよいが、本発明の範囲は、そのように限定されるものではない。
【００７２】
図７に示したように、各種入出力装置７１４は、第１バス７１６を第２バス７２０に結合するバスブリッジ７１８と共に、第１バス７１６に結合することができる。一実施態様では、第２バス７２０は、低ピンカウント（ＬＰＣ）バスでよい。一実施態様においては、様々なデバイスは、第２バス７２０に結合させることが可能であり、例えば、キーボードおよび／またはマウス７２２、通信装置７２７およびディスクドライブや、命令／コードおよびデータ７３０を含む可能性がある他の大容量記憶装置のような記憶装置ユニット７２８を含む。更に、オーディオ入出力７２４は、第２バス７２０と結合させることができる。なお、ここで、他のアーキテクチャは可能であるということを書き留めておく。例えば、図７のポイントツーポイントアーキテクチャに代えて、システムは、マルチドロップバスまたは他のそのようなアーキテクチャを実装することができる。
【００７３】
以下の実施例では、本願開示の一または複数態様による様々な実装を示す。
【００７４】
実施例１は、トランザクショナルメモリアクセスの方法である。本方法は、    プロセッサにより、メモリアクセストランザクションを開始するステップと；    第１メモリ位置に対する、メモリアクセス追跡論理に関連付けられた第１バッファを使用するトランザクショナルリードオペレーション、および第２メモリ位置に対する、該メモリアクセス追跡論理に関連付けられた第２バッファを使用するトランザクショナルライトオペレーションの少なくとも１つを実行するステップと；    第３メモリ位置に対する非トランザクショナルリードオペレーション、および第４メモリ位置に対する非トランザクショナルライトオペレーションの少なくとも１つを実行するステップと；    該メモリアクセス追跡論理による、該第１メモリ位置および該第２メモリ位置の少なくとも１つに対する、該プロセッサ以外のデバイスによるアクセスの検出に応じて、該メモリアクセストランザクションをアボートするステップと；    トランザクションアボート条件の検出の失敗に応じて、該第３メモリ位置の状態と該第４メモリ位置の状態に関わり無く、該メモリアクセストランザクションを完了するステップとを含みなる。
【００７５】
実施例２において、実施例１の方法における第１バッファおよび第２バッファが１つのバッファに相当する。
【００７６】
実施例３において、実施例１の方法における第１メモリ位置および第２メモリ位置は、一メモリ位置により表すことができる。
【００７７】
Ｉ実施例４において、実施例１の方法における第３メモリ位置および第４メモリ位置は、一メモリ位置により表すことができる。
【００７８】
実施例５において、実施例１の方法における第１バッファと第２バッファのうちの少なくとも１つが、データキャッシュ内のエントリによって与えられる。
【００７９】
実施例６において、実施例１から６の何れかの方法における上記実行オペレーションは、第２ライトオペレーションを行うことを含む。
【００８０】
実施例７において、実施例１から６の何れかの方法における上記完了オペレーションは、上記第２バッファから、より高いレベルのキャッシュエントリおよびメモリ位置の一方へデータをコピーすることを含む。
【００８１】
実施例８において、実施例１から６の何れかの方法は、割込み、バッファオーバーフローおよびプログラムエラーの少なくとも１つの検出に応じて、上記メモリアクセストランザクションをアボートするステップを更に含む。
【００８２】
実施例９において、実施例１から６の何れかの方法における上記アボートのオペレーションが、上記第１バッファおよび上記第２バッファの少なくとも１つを解放するステップを含む。
【００８３】
実施例１０において、実施例１から６の何れかの方法における上記開始オペレーションが、保留中のライトオペレーションにコミットするステップを含む。
【００８４】
実施例１１において、実施例１から６の何れかの方法における上記開始オペレーションが、割込みを禁止するステップを含む。
【００８５】
実施例１２において、実施例１から６の何れかの方法における上記開始オペレーションが、データのプリフェッチを禁止するステップを含む。
【００８６】
実施例１３において、実施例１から６の何れかの方法は、更に、上記メモリアクセストランザクションを完了する前に、ネスト形メモリアクセストランザクションを開始するステップと；上記メモリアクセス追跡論理に関連付けられた第３バッファを使用する第２トランザクショナルリードオペレーション、およびメモリアクセス追跡論理に関連付けられた第４バッファを使用する第２トランザクショナルライトオペレーションの少なくとも１つを実行するステップと；上記ネスト形メモリアクセストランザクションを完了するステップを含む。
【００８７】
実施例１４において、実施例１３の方法は、更に、トランザクションアボート条件の検出に応じて、上記メモリアクセストランザクションおよび上記ネスト形メモリアクセストランザクションをアボートするステップを含む。
【００８８】
実施例１５は、処理システムであり、同処理システムは、メモリアクセス追跡論理と；上記メモリアクセス追跡論理に関連付けられた第１バッファと；上記メモリアクセス追跡論理に関連付けられた第２バッファと；上記第１バッファおよび上記第２バッファに通信式に結合されたプロセッサコアとを含む。上記処理システムにおいて、上記プロセッサコアは、複数オペレーションを行うように構成されており、上記複数オペレーションは、メモリアクセストランザクションを開始ステップと；第１メモリ位置に対する、第１バッファを使用するトランザクショナルリードオペレーション、および第２メモリ位置に対する、第２バッファを使用するトランザクショナルライトオペレーションの少なくとも１つを実行するステップと；第３メモリ位置に対する非トランザクショナルリードオペレーション、および第４メモリ位置に対する非トランザクショナルライトオペレーションの少なくとも１つを実行するステップと；上記メモリアクセス追跡論理による、上記第１メモリ位置および上記第２メモリ位置の少なくとも１つに対する、上記プロセッサ以外のデバイスによるアクセスの検出に応じて、上記メモリアクセストランザクションをアボートするステップと；トランザクションアボート条件の検出の失敗に応じて、上記第３メモリ位置の状態と上記第４メモリ位置の状態に関わり無く、上記メモリアクセストランザクションを完了するステップと、を含む。
【００８９】
実施例１６は、処理システムであり、同処理システムは、メモリアクセス追跡手段と；上記メモリアクセス追跡手段に関連付けられた第１バッファと；上記メモリアクセス追跡手段に関連付けられた第２バッファと；上記第１バッファおよび上記第２バッファに通信式に結合されたプロセッサコアとを含む。上記処理システムにおいて、上記プロセッサコアは、複数オペレーションを行うように構成されており、上記複数オペレーションは、メモリアクセストランザクションを開始ステップと；第１メモリ位置に対する、第１バッファを使用するトランザクショナルリードオペレーション、および第２メモリ位置に対する、第２バッファを使用するトランザクショナルライトオペレーションの少なくとも１つを実行するステップと；第３メモリ位置に対する非トランザクショナルリードオペレーション、および第４メモリ位置に対する非トランザクショナルライトオペレーションの少なくとも１つを実行するステップと；上記メモリアクセス追跡手段による、上記第１メモリ位置および上記第２メモリ位置の少なくとも１つに対する、上記プロセッサ以外のデバイスによるアクセスの検出に応じて、上記メモリアクセストランザクションをアボートするステップと；トランザクションアボート条件の検出の失敗に応じて、上記第３メモリ位置の状態と上記第４メモリ位置の状態に関わり無く、上記メモリアクセストランザクションを完了するステップと、を含む。
【００９０】
実施例１７において、実施例１５および１６の何れかの処理システムは、更に、データキャッシュを含み、上記第１バッファおよび上記第２バッファの少なくとも１つが、上記データキャッシュの中に備わっている。
【００９１】
実施例１８において、実施例１５および１６の何れかの処理システムは、エラー回復ルーチンのアドレスを格納するためのレジスタを更に含む。
【００９２】
実施例１９において、実施例１５および１６の何れかの処理システムは、上記メモリアクセストランザクションの状態を格納するためのレジスタを更に含む。
【００９３】
実施例２０において、実施例１５および１６の何れかの処理システムの上記第１バッファおよび上記第２バッファは、１つのバッファからなる。
【００９４】
実施例２１において、実施例１５および１６の何れかの処理システムの上記第３バッファおよび上記第４バッファは、１つのバッファからなる。
【００９５】
実施例２２において、実施例１５および１６の何れかの処理システムの上記第１メモリ位置および上記第２メモリ位置は、１つのメモリ位置である。
【００９６】
実施例２３において、実施例１５および１６の何れかの処理システムの上記第３メモリ位置および上記第４メモリ位置は、１つのメモリ位置である。
【００９７】
実施例２４において、実施例１５および１６の何れかの処理システムのプロセッサコアは、更に、割込み、バッファオーバーフロー、およびプログラムエラーの少なくとも１つの検出に応じて、上記メモリアクセストランザクションをアボートするように構成することができる。
【００９８】
実施例２５において、実施例１５の処理システムのプロセッサコアは、更に、次のことを行うように構成することができる。上記メモリアクセストランザクションを完了する前に、ネスト形メモリアクセストランザクションを開始する；上記メモリアクセス追跡論理に関連付けられた第３バッファを使用する第２トランザクショナルリードオペレーション、およびメモリアクセス追跡論理に関連付けられた第４バッファを使用する第２トランザクショナルライトオペレーションの少なくとも１つを実行する；上記ネスト形メモリアクセストランザクションを完了する。
【００９９】
実施例２６において、実施例１６の処理システムのプロセッサコアは、更に、次のことを行うように構成することができる。上記メモリアクセストランザクションを完了する前に、ネスト形メモリアクセストランザクションを開始する；上記メモリアクセス追跡手段に関連付けられた第３バッファを使用する第２トランザクショナルリードオペレーション、およびメモリアクセス追跡手段に関連付けられた第４バッファを使用する第２トランザクショナルライトオペレーションの少なくとも１つを実行する；上記ネスト形メモリアクセストランザクションを完了する。
【０１００】
実施例２７において、実施例２５および２６の処理システムのプロセッサコアは、トランザクションアボート条件の検出に応答して、上記メモリアクセストランザクションおよびネスト形メモリアクセストランザクションをアボートするように構成することができる。
【０１０１】
実施例２８は、メモリと上記メモリに結合された処理システムとを含む装置である。同装置において、該処理システムは、実施例１から１４の何れかの方法を行うように構成されている。
【０１０２】
実施例２９は、コンピュータ読取り可能非一時的記憶媒体である。同記憶媒体は、実行可能命令を具備し、プロセッサが上記実行可能命令を実行するとき、同プロセッサに：メモリアクセストランザクションを開始させ、第１メモリ位置に対する、メモリアクセス追跡論理に関連付けられた第１バッファを使用するトランザクショナルリードオペレーション、および第２メモリ位置に対する、上記メモリアクセス追跡論理に関連付けられた第２バッファを使用するトランザクショナルライトオペレーションの少なくとも１つを実行させ、第３メモリ位置に対する非トランザクショナルリードオペレーション、および第４メモリ位置に対する非トランザクショナルライトオペレーションの少なくとも１つを実行させ、上記メモリアクセス追跡論理による、上記第１メモリ位置および上記第２メモリ位置の少なくとも１つに対する、上記プロセッサ以外のデバイスによるアクセスの検出に応じて、上記メモリアクセストランザクションをアボートし；トランザクションアボート条件の検出の失敗に応じて、上記第３メモリ位置の状態と上記第４メモリ位置の状態に関わり無く、上記メモリアクセストランザクションを完了する。
【０１０３】
詳細な説明の一部は、コンピュータ・メモリの範囲内でデータ・ビット上のオペレーションのアルゴリズムおよび象徴的表象に関して示される。これらのアルゴリズムの説明および表現は、データ処理技術に熟練した人々によって他の当業者に最も効果的にそれらの仕事の要旨を伝えるために用いる手段である。一アルゴリズムはここで、また一般に、所望の結果に至る首尾一貫した一連のオペレーションであると考えられている。オペレーションは、物理量の物理的操作を必要とするオペレーションである。通常、必然的ではないが、これらの量は格納、転送、合成、比較、その他操作を行うことができる電気信号か磁気信号の形をとる。これらの信号をビット，値，要素，シンボル，文字，用語，数字等で参照することは、主に一般的な使用法の理由から便利であることが時々に証明されている。
【０１０４】
しかし、これらの全て、および類似の用語は、適切な物理量に関連付けられたものであり、それら物理量に対する便宜上のラベルに過ぎない。他に特に言及しなければ、上記説明から明白であるように、全体にわたって説明、用語（「暗号化」、「解読」「記憶」「供給」「誘導・派生」「入手」「受け取り」「認証」「削除」「実行」「要求」「通信」等）を使用した考察では、計算システムのレジスタおよびメモリの範囲内で、物理（ｅ．ｇ．電子）量として表されるデータを操作し、計算システムのメモリもしくはレジスタ、その他情報記憶装置、伝送または表示装置の範囲内で物理量として同様に表される別のデータへ変換させる計算システムまたは類似の電子計算装置の動作およびプロセスに言及しているという事実を認識されたい。
【０１０５】
本願明細書で使用されている「実施例」または「典型的」なる文言は、典型もしくは実例、または事例となっていることを意味する。本願明細書に「実施例」または「典型的」と記載されている如何なる態様またはデザインも、必ずしも他の態様またはデザインよりも好適または有利であるかのように解釈されるべきものではない。むしろ、「実施例」または「典型的」なる文言の使用により、具体的なやり方で概念を示すことを意図している。本願で使用されているように、「または」なる言葉は、排他的な「または」ではなく、包括的「または」を意味するように意図した。すなわち、別に指定が無いか、または前後関係から明らかでなければ、「Ｘは、ＡまたはＢを含む」は、任意のありのままの包括的順列を意味するように意図している。即ち、ＸがＡを含み、ＸがＢを含み、またはＸがＡとＢの両方を含むとすると、上記の事例の何れであっても、「Ｘは、ＡまたはＢを含む」という条件が満たされる。その上、本願および添付のクレームで使用されている冠詞"ａ"および"ａｎ"は、一般に、別に指定しない限り、または前後関係から単数形で指示が出されていることが明らかにならない限りは、「一または複数」を意味すると解釈すべきでる。更に、全体にわたる「実施態様（ａｎ  ｅｍｂｏｄｉｍｅｎｔ）」もしくは「一実施態様（ｏｎｅ  ｅｍｂｏｄｉｍｅｎｔ）」または「実装（ａｎ  ｉｍｐｌｅｍｅｎｔａｔｉｏｎ）」もしくは「一実装（ｏｎｅ  ｉｍｐｌｅｍｅｎｔａｔｉｏｎ）」なる語の使用は、そのように説明されていなければ、同じ実施態様または実装を意味するようには意図されていない。また、本願明細書において使用されている「第１」、「第２」、「第３」、「第４」等の語は、異なる要素をラベルのように差別化するためのものであり、必ずしも数の記号どおりに序数の意味を持っているわけではない。
【０１０６】
本願明細書に記載の実施態様は、本願明細書に記載のオペレーションを行うための装置にも関係する可能性がある。この装置は、求められている目的に応じて特別に構築されるか、またはコンピュータに格納されているコンピュータプログラムによって選択的に活性化されるか再構成される汎用コンピュータを含むものでよい。そのようなコンピュータプログラムは、非一時的コンピュータ読取り可能記憶媒体に格納することが可能であり、この非一時的コンピュータ読取り可能記憶媒体は、任意の種類のディスク、限定されるものではないが、例えば、フロッピー（登録商標）ディスク、光ディスク、ＣＤ―ＲＯＭおよび磁気光ディスク、リードオンリーメモリ（ＲＯＭｓ）、ランダムアクセスメモリ（ＲＡＭｓ）、ＥＰＲＯＭｓ、ＥＥＰＲＯＭｓ、磁気または光カード、フラッシュメモリ、または電子命令を格納するのに好適な任意の種類の媒体である。「コンピュータ読取り可能記憶媒体」という文言は、一または複数命令セットを格納する単一媒体または複数媒体（例えば、集中もしくは分散データベース、ならびに／または関連付けられたキャッシュおよびサーバー）を含むように解釈すべきである。「コンピュータ読取り可能媒体」なる語も、マシンによる実行用の命令セットを格納し、符号化し、あるいは担持することができる任意の媒体であって、本実施態様の技法のうちの任意の一または複数の技法をマシンに行わせる、任意の媒体を含むように解釈すべきである。従って、「コンピュータ読取り可能記憶媒体」なる語は、限定されるものではないが、固体メモリ、光学媒体、磁気媒体、当該マシンによる実行用の命令セットを格納することができる任意の媒体であって、当該マシンに対し、本実施態様の任意の一または複数の技法を行わせる媒体を含むように解釈すべきである。
【０１０７】
本願明細書に記載のアルゴリズムおよびディスプレイは、任意の特定コンピュータまたはその他装置に本質的に関係しているわけではない。本願明細書に記載教示内容に従って、様々な汎用システムをプログラムと共に使用することができるし、あるいは、必要な方法オペレーションを行うためのより専門化された装置を構成するには、都合が良いことが証明された。多種多様なこれらのシステム用に必要な構造は、下の説明から明らかになるだろう。加えて、本実施態様は、何らかの特別なプログラミング言語を参照しながら、記述されたものではない。本願明細書に記載した実施態様の教示内容を実践するために、様々なプログラミング言語が使用できることが理解されるであろう。
【０１０８】
以上の説明には、一部の実施態様について、十分な理解が得られるように、特定のシステム、コンポーネント、方法等の実施例のような多数の具体的細部が記載されている。しかし、少なくとも一部の実施態様が、これらの具体的細部無しで実施可能であることは当業者には明らかであろう。また、他の例では、周知のコンポーネントまたは方法が詳細に記述されていないし、あるいは本実施態様を不必要に曖昧にすることを回避するために、単純なブロック図の形式で提示されている。このように、上記に記載の具体的細部は、単に典型的なだけである。特定の実装は、これらの典型的な詳細から変化することができて、本実施例の範囲内であるために、まだ意図されることができる。
【０１０９】
上記説明は例示的なものであり限定的ではないことが意図されていることは、理解されるはずである。前記説明を読み理解すれば、多くの他の実施態様は、当業者にとって明白なものとなる。従って、本実施態様の範囲は、この種の請求が受ける等価物の全範囲とともに、本実施態様の範囲は、添付の特許請求の範囲を参照して決定しなければならない。
【図１】
2014194754.tif 000003
【図２】
2014194754.tif 000004
【図３ａ】
2014194754.tif 000005
【図３ｂ】
2014194754.tif 000006
【図４】
2014194754.tif 000007
【図５】
2014194754.tif 000008
【図６】
2014194754.tif 000009
【図７】
2014194754.tif 000010
【外国語明細書】
2014194754000001.pdf