[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

JP2009537053A - 仮想化されたトランザクショナルメモリのグローバルオーバーフロー方法 - Google Patents

仮想化されたトランザクショナルメモリのグローバルオーバーフロー方法 Download PDF

Info

Publication number
JP2009537053A
JP2009537053A JP2009511265A JP2009511265A JP2009537053A JP 2009537053 A JP2009537053 A JP 2009537053A JP 2009511265 A JP2009511265 A JP 2009511265A JP 2009511265 A JP2009511265 A JP 2009511265A JP 2009537053 A JP2009537053 A JP 2009537053A
Authority
JP
Japan
Prior art keywords
transaction
memory
overflow
bit
cache
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2009511265A
Other languages
English (en)
Other versions
JP5366802B2 (ja
Inventor
バーンズ、ジェシー
ラジワー、ラヴィ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of JP2009537053A publication Critical patent/JP2009537053A/ja
Application granted granted Critical
Publication of JP5366802B2 publication Critical patent/JP5366802B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/22Microcontrol or microprogram arrangements

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Advance Control (AREA)

Abstract

トランザクショナルメモリを仮想化及び/又は拡張するための方法及び装置を記載する。トランザクションは、キャッシュメモリといったローカルの共有トランザクショナルメモリを用いて実行される。共有トランザクショナルメモリは、オーバーフローすると、システムメモリといった上位メモリ内へと仮想化/又は拡張される。現在ペンディングのトランザクションの間に前にアクセスされたキャッシュラインを退避させるといったオーバーフローイベントが発生すると、オーバーフローフラグがセットされて、トランザクショナルメモリはグローバルオーバーフローテーブル内に仮想化されるべきであることがプロセッサ/コアに通知される。グローバルオーバーフローテーブルのベースアドレスも上位メモリにおけるグローバルオーバーフローテーブルのベースを参照すべく格納されうる。
【選択図】 なし

Description

本発明は、プロセッサの実行の分野に係り、より具体的には、オペレーション群の実行に係る。
半導体処理及びロジック設計における発展は、集積回路デバイス上に存在しうるロジックの量を増加可能にした。その結果、コンピュータシステム構成は、1つのシステム内に単一又は複数の集積回路という構成から、個々の集積回路上に複数のコア及び複数のロジカルプロセッサが存在するという構成に進化した。プロセッサ又は集積回路は、一般に、単一のプロセッサダイを含み、このプロセッサダイには、任意の数のコア又はロジカルプロセッサが含まれうる。
一例として、単一の集積回路が、1つの又は複数のコアを有しうる。「コア」という用語は、通常、アーキテクチャステートを維持する、集積回路上のロジックの独立した能力を指し、各独立したアーキテクチャステートは、少なくとも幾つかの専用実行リソースに関連付けられる。別の例として、単一の集積回路又は単一のコアは、複数のソフトウェアスレッドを実行するための複数のハードウェアスレッドを有してもよく、それゆえ、マルチスレッディング集積回路又はマルチスレッディングコアとも呼ばれる。複数のハードウェアスレッドは、通常、共通のデータキャッシュ、命令キャッシュ、実行ユニット、分岐予測器、制御ロジック、バスインターフェイス、及び他のプロセッサリソースを共有し、同時に、各ロジカルプロセッサについて一意のアーキテクチャステートを維持する。
集積回路上のコア及びロジカルプロセッサの数がかつてないほどに増加することにより、より多くのソフトウェアスレッドを実行することができる。しかし、同時に実行されうるソフトウェアスレッドの数が増加することによって、ソフトウェアスレッド間で共有されるデータを同期する際の問題をもたらした。複数のコア又は複数のロジカルプロセッサを有するシステムにおいて共有データにアクセスすることに対する一般的な解決策は、共有データへの複数アクセス間での相互排除を保証するロックを使用することである。しかし、複数のソフトウェアスレッドを実行する能力がかつてないほどに増加していることによって、実行の偽の競合及びシリアライゼーションをもたらしてしまいうる。
別のデータ同期化技術では、トランザクショナルメモリ(TM)を使用する。多くの場合、トランザクションの実行には、複数のマイクロオペレーション、オペレーション、又は命令を有する群を投機的に実行することが含まれる。しかし、従前のハードウェアTMシステムでは、1つのトランザクションが、1つのメモリに対して大きくなりすぎる、即ち、メモリをオーバーフローする場合、そのトランザクションは、通常、再スタートされる。このとき、オーバーフローとなるまでにトランザクションの実行にかかった時間は無駄となってしまいうる。
本発明を、添付図面によって限定的ではなく例示的に説明する。
トランザクショナルメモリを拡張可能なマルチコアプロセッサの一実施形態を示す図である。
各コアがオーバーフローフラグを格納するレジスタを含むマルチコアプロセッサの一実施形態を示す図である。
オーバーフローフラグを格納するグローバルレジスタを含むマルチコアプロセッサの別の実施形態を示す図である。
各コアがオーバーフローテーブルのベースアドレスを格納するベースアドレスレジスタを含むマルチコアプロセッサの一実施形態を示す図である。
オーバーフローテーブルの一実施形態を示す図である。
オーバーフローテーブルの別の実施形態を示す図である。
複数のページを含むオーバーフローテーブルの別の実施形態を示す図である。
トランザクショナルメモリを仮想化するシステムの一実施形態を示す図である。
トランザクショナルメモリを仮想化するためのフロー図の一実施形態を示す図である。
トランザクショナルメモリを仮想化するためのフロー図の別の実施形態を示す図である。
以下の説明において、トランザクションの実行のための具体的なハードウェアサポート、プロセッサ内の具体的なローカル/メモリのタイプ、及び、メモリアクセスとロケーションの具体的なタイプ等の例といった多数の具体的な詳細を、本発明の完全な理解を与えるべく記載する。しかし、当業者には、これらの具体的な詳細は、本発明を実施するのに必ずしも用いなくともよいことは明らかであろう。また、ソフトウェアでのトランザクションのコーディング、トランザクションの境界設定、具体的なマルチコア及びマルチスレッドプロセッサアーキテクチャ、インタラプト発生/処理、キャッシュ編成、及びマイクロプロセッサの具体的なオペレーションの詳細といった周知の要素又は方法は、本発明を不必要に不明瞭とすることを回避すべく詳細には記載していない。
本願に記載する方法及び装置は、トランザクションの実行中におけるローカルメモリのオーバーフローをサポートすべくトランザクショナルメモリ(TM)を拡張及び/又は仮想化することを目的とする。具体的には、トランザクショナルメモリの仮想化及び/又は拡張は、主に、マルチコアプロセッサコンピュータシステムを参照して説明する。しかし、トランザクショナルメモリを拡張/仮想化する方法及び装置は、これに限定されず、この方法及び装置は、携帯電話機、携帯情報端末、組み込みコントローラ、モバイルプラットホーム、デスクトッププラットホーム、及びサーバプラットホームといった任意の集積回路デバイス又はシステム上で又は関連付けられて、トランザクショナルメモリを使用するハードウェア/ソフトウェアスレッドといった他のリソースとともに実施されうる。図1を参照するに、トランザクショナルメモリを拡張可能なマルチコアプロセッサ100の一実施形態を示す。トランザクションの実行には、通常、複数の命令又はオペレーションを1つのトランザクション、コードのアトミックセクション、又は、コードのクリティカルセクションにまとめることが含まれる。「命令」という用語は、複数のオペレーションからなるマクロ命令をさす場合もある。トランザクションを特定する方法は概して2通りある。第1の例は、ソフトウェアでトランザクションを境界設定することである。ここでは、幾つかのソフトウェア境界設定(demarcation)がコード内に含まれてトランザクションを特定する。上記のソフトウェア境界設定とともに実施されうる別の実施形態では、複数のトランザクションは、ハードウェアによってまとめられるか、又は、トランザクションの開始とトランザクションの終了を示す命令によって認識される。
プロセッサにおいて、トランザクションは、投機的に又は非投機的に実行される。第2の場合では、複数の命令を有する群は、アクセスされるメモリロケーションに対するなんらかの形のロック又は保証された有効アクセスを用いて実行される。別の例では、トランザクションの投機的実行がより一般的であり、この場合、トランザクションは投機的に実行され、トランザクションが終了するとコミットされる。本願にて用いる「トランザクションのペンデンシ(pendency)」とは、トランザクションの実行は開始されたが、コミット又はアボートされていない、即ち、ペンディング(保留中)であることをさす。
一般に、トランザクションの投機的な実行時は、メモリの更新は、トランザクションがコミットされるまで他のデバイスには認識されない。トランザクションが依然としてペンディングである間、メモリからロードされ且つメモリ内に書込みされるロケーションは追跡される。これらのメモリロケーションのバリデーションが成功すると、トランザクションはコミットされ、トランザクション時に行われた更新は、他のデバイスにも認識されるようになる。しかし、トランザクションがそのペンデンシ中に無効となると、当該トランザクションは、更新をグローバルに可視化することなく再スタートされる。
図示する実施形態では、プロセッサ100は、2つのコア、即ち、コア101及び102を含むが、任意の数のコアが存在しうる。コアとは、多くの場合、独立したアーキテクチャステートを維持可能な集積回路上に配置される任意のロジックであって、独立して維持されるアーキテクチャステートのそれぞれは、少なくとも幾つかの専用実行リソースに関連付けられるロジックを指す。例えば、図1では、コア101は、複数の実行ユニット110を含み、コア102は、複数の実行ユニット115を含む。実行ユニット110及び115は、論理的に別個のものとして示すが、これらは、同じユニットの一部として又は近接して物理的に配置されてもよい。しかし、例えば、スケジューラ120は、コア101用の実行を、実行ユニット115上で処理するようスケジュールすることはできない。
コアとは対照的に、ハードウェアスレッドは、一般に、独立したアーキテクチャステートを維持可能な集積回路上に配置される任意のロジックであって、独立して維持される複数のアーキテクチャステートは、実行リソースへのアクセスを共有するロジックを指す。以上のように、ある処理リソースは共有され、他の処理リソースは1つのアーキテクチャステート専用であるので、ハードウェアスレッドとコアの定義は重なる場合もある。しかし、多くの場合、コアとハードウェアスレッドは、オペレーティングシステムによって、それぞれスレッドを実行可能な個別のロジカルプロセッサとしてみなされる。したがって、プロセッサ100といったプロセッサは、スレッド160、165、170、及び175といった複数のスレッドを実行可能である。コア101といったコアはそれぞれスレッド160及び165といった複数のソフトウェアスレッドを実行可能であるように図示するが、コアは単一のスレッドのみを実行可能であってもよい。
一実施形態では、プロセッサ100は、対称のコア101及び102を含む。この場合、コア101及びコア102は、同様の構成要素及びアーキテクチャを有する同様のコアとなる。或いは、コア101及び102は、異なる構成要素及び構成を有する非対称のコアであってもよい。しかし、コア101及び102は対称コアとして記載するので、コア101の機能ブロックについて説明し、コア102に関して説明は繰り返さない。なお、図示する機能ブロックは、ロジカル機能ブロックであって、これらは、他の機能ブロック間で共有される又は他の機能ブロックと境界が重なるロジックを含みうる。更に、各機能ブロックは必ずしも必要ではなく、また、様々な構成で相互接続されうる。例えば、フェッチ/デコードブロック140は、フェッチ及び/又はプリフェッチユニットと、フェッチユニットに結合されたデコードユニットと、フェッチユニットの前で、デコードユニットの後に、又は、フェッチユニット及びデコードユニットの両方に結合された命令キャッシュとを含みうる。
一実施形態では、プロセッサ100は、外部装置との通信用のバスインターフェイスユニット150と、コア101及び102間で共有される第2レベルキャッシュといった上位キャッシュ145とを含む。別の実施形態では、コア101及び102はそれぞれ別個の第2レベルキャッシュを含む。
フェッチ/デコード/分岐予測ユニット140は、第2レベルキャッシュ145に結合される。一例では、コア101は、命令をフェッチするフェッチユニットと、フェッチされた命令をデコードするデコードユニットと、フェッチされた命令、デコードされた命令、又はフェッチされた命令とデコードされた命令の組み合わせを格納する命令キャッシュ又はトレースキャッシュとを含む。別の実施形態では、フェッチ/デコードブロック140は、分岐予測器及び/又は分岐先バッファを有するプリフェッチャを含む。更に、マイクロコードROM135といった読出し専用メモリを用いてより長い又はより複雑なデコード済み命令を格納してもよい。
一例では、アロケータ/リネーマブロック130は、命令処理結果を格納すべくレジスタファイルといったリソースを予約するアロケータを含む。しかし、コア101は、アウトオブオーダ実行が可能である場合があり、この場合、アロケータ/リネーマブロック130は、命令を追跡すべくリオーダバッファといった他のリソースも予約する。ブロック130は更に、プログラム/命令参照レジスタをコア101の内部の他のレジスタに名前を変更するレジスタリネーマを含みうる。リオーダ/リタイアメントユニット125は、上述したリオーダバッファといった構成要素を含み、アウトオブオーダ実行と、アウトオブオーダで実行された命令の後のリタイアメントをサポートする。一例として、リオーダバッファ内にロードされたマイクロオペレーションは、実行ユニットによってアウトオブオーダで実行され、次に、マイクロオペレーションがリオーダバッファに入れられた順序と同じ順序で、リオーダバッファから取り出される、即ち、リタイアされる。
スケジューラ/レジスタファイルブロック120は、一実施形態では、実行ユニット110での命令をスケジュールするスケジューラユニットを含む。実際には、命令は、命令のタイプ及び実行ユニット110の利用可能性とに応じて実行ユニット110にスケジューリングされうる。例えば、浮動小数点命令は、利用可能な浮動小数点実行ユニットを有する実行ユニット110のポートにスケジューリングされる。実行ユニット110に関連付けられるレジスタファイルは更に、情報命令処理結果を格納する。コア101において利用可能である例示的な実行ユニットには、浮動小数点実行ユニット、整数実行ユニット、ジャンプ実行ユニット、ロード実行ユニット、ストア実行ユニット、及び他の既知の実行ユニットが含まれる。一実施形態では、実行ユニット110は更に、リザベーションステーション及び/又はアドレス生成ユニットも含む。
図示する実施形態では、下位キャッシュ103をトランザクショナルメモリとして使用する。具体的には、下位キャッシュ103は、データオペランドといった最近に使用した/処理されたエレメントを格納する第1レベルキャッシュである。キャッシュ103は、ライン104、105、及び106といった複数のキャッシュラインを含み、これらは、キャッシュ103内のメモリロケーション又はブロックとも呼ばれうる。一実施形態では、キャッシュ103は、セット・アソシエティブ・キャッシュとして編成される。しかし、キャッシュ103は、フル・アソシエティブ・キャッシュ、セット・アソシエティブ・キャッシュ、ダイレクト・マップド・キャッシュ、又は他の既知のキャッシュ編成として編成されてもよい。
図示するように、ライン104、105、及び106は、ポーション104a及びフィールド104bといったポーション又はフィールドを含む。一実施形態では、ライン104、105、及び106のポーション104a、105a、及び106aといったライン、ロケーション、ブロック、又はワードは、複数のエレメントを格納可能である。エレメントとは、任意の命令、オペランド、データオペランド、変数、又は、メモリ内に一般的に格納されるロジカル値の他の群を指す。一例として、キャッシュライン104は、1つの命令と3つのオペランドを含む4つのエレメントをポーション104aに格納する。キャッシュライン104aに格納されたエレメントは、パック又は圧縮された状態であっても、非圧縮状態であってもよい。更に、エレメントは、キャッシュ103のライン、セット、又はウェイの境界に合わされることなくキャッシュ103に格納されうる。メモリ103については、以下の例示的な実施形態を参照してより詳細に説明する。
キャッシュ103、並びにプロセッサ100内の他の特徴及びデバイスは、ロジック値を格納及び/又は処理する。多くの場合、ロジックレベル、ロジック値、又はロジカル値の使用は、複数の1と複数の0として示され、これらは単純に2進法のロジックステートを表す。例えば、「1」は高ロジックレベルを指し、「0」は低ロジックレベルを指す。ロジカル値又は2進値の10進法及び16進法表現/表示といったコンピュータシステムにおける値の他の表現法も用いられてきている。例えば、10進法による数「10」を例とすると、これは、2進値では「1010」と表され、16進法では文字「A」として表される。
図1に示す実施形態では、ライン104、105、及び106へのアクセスは、トランザクションの実行をサポートすべく追跡される。フィールド104b、105b、及び106bといったアクセス追跡フィールドを用いて、フィールドの対応するメモリラインへのアクセスを追跡する。例えば、メモリライン/ポーション104aは、対応する追跡フィールド104bに関連付けられる。この場合、アクセス追跡フィールド104bは、キャッシュライン104の一部である複数のビットを含むのでキャッシュライン104aに関連付けられ且つ対応する。関連付けは、図示するように物理的な配置によって行われても、アクセス追跡フィールド104bを、ハードウェア又はソフトウェアルックアップテーブル内のアドレス参照メモリライン104a又は104bに関連させる又はマッピングするといった他の関連付けによって行われてもよい。実際には、トランザクションアクセスフィールドは、ハードウェア、ソフトウェア、ファームウェア、又はそれらの任意の組み合わせで実施される。
したがって、トランザクションの実行時にライン104aがアクセスされると、アクセス追跡フィールド104bがアクセスを追跡する。アクセスには、読出し、書込み、ストア、ロード、退避、スヌープ、又は、メモリロケーションへの他の既知のアクセスといったオペレーションが含まれる。
例示的な簡略例として、アクセス追跡フィールド104b、105b、及び105bが、2つのトランザクションビット、即ち、第1の読出し追跡ビットと第2の書込み追跡ビットを含むと想定する。デフォルトステート、即ち、第1のロジカル値では、アクセス追跡フィールド104b、105b、及び105bにおける第1の及び第2のビットは、キャッシュライン104、105、及び106はそれぞれトランザクションが実行される間に、即ち、トランザクションのペンデンシの間にアクセスされなかったことを示す。キャッシュライン104aからのロードオペレーションによって、又は、キャッシュライン104aに関連付けられるシステムメモリロケーションがライン104aからのロードがもたらされると、アクセスフィールド104bにおける第1の読出し追跡ビットは、第2のロジカル値といった第2のステート/値にセットされ、トランザクションが実行される間にキャッシュライン104からの読出しが行われたことを表す。同様に、キャッシュライン105aに書込みが行われると、アクセスフィールド105b内の第2の書込み追跡ビットは、第2のステートにセットされて、トランザクションが実行される間にキャッシュライン105への書込みが行われたことを表す。
したがって、ライン104aに関連付けられるフィールド104a内のトランザクションビットがチェックされ、当該トランザクションビットがデフォルトステートを表す場合、キャッシュライン104は、トランザクションのペンデンシの間にアクセスされていない。反対に、第1の読出し追跡ビットが第2の値を表す場合、キャッシュライン104は、トランザクションのペンデンシの間に前にアクセスされている。より具体的には、トランザクションが実行される間に行われるライン104aからのロードは、アクセスフィールド104bにおける第1の読出し追跡ビットがセットされることによって表される。
アクセスフィールド104b、105b、及び105bは、トランザクションの実行時に他の使用も有しうる。例えば、トランザクションのバリデーションが、従来から2つの方法で行われてきている。1つは、トランザクションをアボートしてしまう無効なアクセスが追跡される場合、無効アクセス時にトランザクションはアボートされ、再スタートされうる。或いは、トランザクションが実行される間にアクセスされたライン/ロケーションのバリデーションは、トランザクションの終了時、コミットメントの前に行われる。その際、トランザクションは、バリデーションが成功した場合は、コミットされ、バリデーションが失敗した場合には、アボートされる。いずれの場合においても、トランザクションの実行時にどのラインがアクセスされたのかを特定するのでアクセス追跡フィールド104b、105b、及び105bは有用である。
別の例示的な簡略例として、第1のトランザクションが実行されており、その第1のトランザクションが実行される間に、ライン105aからのロードが行われたと想定する。結果として、対応するアクセス追跡フィールド105bが、トランザクションが実行される間にライン105へのアクセスが行われたことを示す。第2のトランザクションが、ライン1050に関してコンフリクトを引き起こす場合、アクセス追跡フィールド105bが、ライン105は第1のペンディングのトランザクションによってロードされたことを表すので、第2のトランザクションによるライン105へのアクセスに基づいて第1のトランザクション又は第2のトランザクションのどちらかがすぐにアボートされうる。
一実施形態では、第2のトランザクションがライン105に関してコンフリクトを引き起こし、対応するフィールド105bが第1のペンディングのトランザクションによって前にアクセスされたことを示すと、インタラプトが生成される。このインタラプトは、2つのペンディングのトランザクション間にコンフリクトが発生すると第1又は第2のトランザクションのどちらかのアボートを開始するデフォルトハンドラ及び/又はアボートハンドラによって処理される。
トランザクションがアボート又はコミットされると、トランザクションが実行される間にセットされたトランザクションビットはクリアにされて、トランザクションビットのステートが、後続のトランザクション時のアクセスの追跡のためにデフォルトステートにリセットすることが確実にされる。別の実施形態では、アクセス追跡フィールドは、コアID又はスレッドID、及びトランザクションIDといったリソースIDも格納しうる。
図1を参照して上述したように且つ以下に説明するように、下位キャッシュ103を、トランザクショナルメモリとして用いる。しかし、トランザクショナルメモリはこれに限定されない。実際には、上位キャッシュ145もトランザクショナルメモリとして用いてもよい。この場合、キャッシュ145のラインへのアクセスが追跡される。上述したように、スレッドID又はトランザクションIDといった識別子を、キャッシュ145といった上位メモリにおいて用いて、どのトランザクション、スレッド、又はリソースがキャッシュ145内で追跡されるアクセスを行ったか追跡しうる。
トランザクショナルメモリとして可能性のある更に別の例として、変数、命令、又はデータを格納する実行空間又はスクラッチパッドとして処理エレメント又はリソースに関連付けられる複数のレジスタを、トランザクショナルメモリとして用いてもよい。この例では、メモリロケーション104、105、及び106は、レジスタ104、105、及び106を含む複数のレジスタを有する群である。トランザクショナルメモリの他の例には、キャッシュ、複数のレジスタ、レジスタファイル、静的ランダムアクセスメモリ(SRAM)、複数のラッチ、又は、他の格納エレメントが含まれる。なお、プロセッサ100、又は、プロセッサ100上の任意の処理リソースが、メモリロケーションから読出す又はメモリロケーションに書込むときに、システムメモリロケーション、仮想メモリアドレス、物理アドレス、又は、他のアドレスをアドレス指定しうることに留意されたい。
トランザクションが、下位キャッシュ103といったトランザクショナルメモリをオーバーフローしない限り、トランザクション間のコンフリクトは、それぞれ、対応するライン104、105、及び105へのアクセスを追跡するアクセスフィールド104b、105b、及び105bのオペレーションによって検出される。上述したように、トランザクションは、アクセス追跡フィールド104b、105b、及び105bを用いて有効にされ、コミットされ、無効にされ、及び/又は、アボートされうる。しかし、トランザクションがメモリ103をオーバーフローする場合、オーバーフローモジュール107が、オーバーフローイベントに呼応して、トランザクショナルメモリ103の仮想化及び/又は拡張をサポートする、即ち、当該トランザクションのステートを第2のメモリに格納する。したがって、メモリ103がオーバーフローした際にトランザクションをアボートするのではなく(これは、トランザクション内のそれまでのオペレーションの実行にかかった実行時間の損失につながる)、当該トランザクションのステートは仮想化されて、実行を継続される。
オーバーフローイベントには、メモリ103の実際のオーバーフロー、又は、メモリ103のオーバーフローの予測が含まれうる。一実施形態では、オーバーフローイベントとは、現在ペンディングであるトランザクションが実行される時に前にアクセスされたメモリ103内のラインを退避のために選択すること、又は、そのラインの実際の退避である。つまり、オペレーションがメモリ103をオーバーフローするとは、当該メモリ103は、現在ペンディングのトランザクションによってアクセスされたことのあるメモリラインでフルであることを示す。この結果、メモリ103は、退避させるべき、ペンディングのトランザクションに関連付けられたラインを選択する。基本的に、メモリ103はフルであり、依然としてペンディングであるトランザクションに関連付けられるラインを退避させることによってスペースを作ろうと試みる。既知の又は利用可能である技術を、キャッシュの置換、ラインの退避、コミットメント、アクセスの追跡、トランザクションコンフリクトのチェック、及びトランザクションのバリデーションに用いうる。
しかし、オーバーフローイベントは、メモリ103の実際のオーバーフローに限定されない。例えば、トランザクションが、メモリ103に対して大きすぎるという予測も、オーバーフローイベントとなりうる。この場合、アルゴリズム又は他の予測方法を用いて、トランザクションのサイズを決定し、メモリ103が実際にオーバーフローする前にオーバーフローイベントを作成する。別の実施形態では、オーバーフローイベントは、ネスト式トランザクション(nested transaction)の開始である。ネスト式トランザクションはより複雑であり、また、従来ではサポートするためにはより多くのメモリを占有するので、第1レベルのネスト式トランザクション又は後続レベルのネスト式トランザクションの検出は、オーバーフローイベントをもたらしうる。
一実施形態では、オーバーフローロジック107は、オーバーフロービットを格納するレジスタといったオーバーフロー格納エレメントと、ベースアドレス格納エレメントを含む。オーバーフローロジック107を、キャッシュコントロールロジックと同じ機能ブロック内に示すが、オーバーフロービットを格納するオーバーフローレジスタ及びベースアドレスレジスタは、マイクロプロセッサ100内のどこにでも存在しうる。一例として、プロセッサ100上の各コアは、グローバルオーバーフローテーブル用のベースアドレスの表現とオーバーフロービットを格納するオーバーフローレジスタを含む。しかし、オーバーフロービット及びベースアドレスの実施は、これに限定されない。実際には、プロセッサ100上の全てのコア又はスレッドに可視であるグローバルレジスタが、オーバーフロービット及びベースアドレスを含む場合がある。或いは、各コア又はハードウェアスレッドがベースアドレスレジスタを含み、グローバルレジスタがオーバーフロービットを含む。以上のように、オーバーフロービットと、オーバーフローテーブルのベースアドレスを格納するために任意の数の構成を実施することができる。
オーバーフロービットは、オーバーフローイベントに基づいてセットされる。上述した実施形態について説明を続けるに、ペンディングのトランザクションが実行される間に前にアクセスされたメモリ103内のラインを退避のために選択することがオーバーフローイベントとなる場合、オーバーフロービットは、ペンディングのトランザクションが実行される間に前にアクセスされたメモリ103内のラインを退避のために選択することに基づいてセットされる。
一実施形態では、オーバーフロービットは、ライン104といったラインが退避のために選択され、また、ペンディングのトランザクションの間に前にアクセスされている場合に、オーバーフロービットをセットするロジックといったハードウェアを使用してオーバーフロービットをセットする。例えば、キャッシュコントローラ107は、任意の数の既知又は利用可能であるキャッシュ置換アルゴリズムに基づいて退避用のライン104を選択する。実際には、キャッシュ置換アルゴリズムは、ペンディングのトランザクションが実行される間に前にアクセスされたライン104といったキャッシュラインの置換を行わないようにされうる。それにも関わらず、退避用にライン104を選択する場合、キャッシュコントローラ又は他のロジックは、アクセス追跡フィールド104bをチェックする。ロジックは、フィールド104b内の値に基づいて、上述したように、キャッシュライン104がペンディングのトランザクションが実行される間にアクセスされたかどうかを判断する。キャッシュライン104が、ペンディングのトランザクション時に前にアクセスされている場合、プロセッサ100内のロジックが、グローバルオーバーフロービットをセットする。
別の実施形態では、ソフトウェア又はファームウェアがグローバルオーバーフロービットをセットする。同様のシナリオにおいて、ライン104がペンディングのトランザクション時に前にアクセスされたことが判断されると、インタラプトが生成される。このインタラプトは、実行ユニット110内で実行されるユーザハンドラ及び/又はアボートハンドラによって処理され、グローバルオーバーフロービットがセットされる。なお、グローバルオーバーフロービットが現在セットされている場合、メモリ103は既にオーバーフローしている状態なのでハードウェア及び/又はソフトウェアは、当該ビットを再びセットする必要はないことに留意されたい。
オーバーフロービットの使用の例示的な例として、オーバーフロービットがセットされると、ハードウェア及び/又はソフトウェアは、キャッシュライン104、105、及び106へのアクセスを追跡し、トランザクションを有効にし、コンフリクトをチェックし、一般にメモリ103とアクセスフィールド104b、105b、及び106bに関連付けられる他のトランザクション関連のオペレーションを拡張トランザクショナルメモリを用いて行う。
ベースアドレスを用いて、仮想化されたトランザクショナルメモリのベースアドレスを特定する。一実施形態では、仮想化されたトランザクショナルメモリは、上位キャッシュ145といったメモリ103より大きい第2メモリデバイス、又は、プロセッサ100に関連付けられるシステムメモリデバイスに格納される。この結果、第2メモリは、メモリ103をオーバーフローしたトランザクションを取り扱うことができるようになる。
一実施形態では、拡張トランザクショナルメモリは、トランザクションのステートを格納するグローバルオーバーフローテーブルと呼ばれる。したがって、ベースアドレスは、トランザクションのステートを格納するグローバルオーバーフローテーブルのベースアドレスを表す。グローバルオーバーフローテーブルのオペレーションは、アクセス追跡フィールド104b、105b、及び106bに関するメモリ103のオペレーションと同じである。例示的な例として、ライン106が退避のために選択されたと想定する。しかし、アクセスフィールド106bは、ライン106が、ペンディングのトランザクションが実行される間に前にアクセスされたことを表す。上述したように、グローバルオーバーフロービットが現在セットされていない場合には、オーバーフローイベントに基づいてグローバルオーバーフロービットがセットされる。
グローバルオーバーフローテーブルがセットアップされていない場合、第2メモリのある量が、テーブルに割り当てられる。一例として、オーバーフローテーブルの初期ページが割り当てられていないことを示すページフォルトが生成される。オペレーティングシステムは、次に、第2メモリのある範囲を、グローバルオーバーフローテーブルに割り当てる。第2メモリのこの範囲は、グローバルオーバーフローテーブルの1ページと呼ばれうる。そして、グローバルオーバーフローテーブルのベースアドレスの表示が、プロセッサ100に格納される。
ライン106を退避させる前に、トランザクションのステートがグローバルオーバーフローテーブルに格納される。一実施形態では、トランザクションのステートの格納には、オーバーフローイベントに関連付けられるオペレーション及び/又はライン106に対応するエントリをグローバルオーバーフローテーブルに格納することが含まれる。当該エントリは、ライン106に関連付けられる物理アドレスといったアドレス、アクセス追跡フィールド106bのステート、ライン106に関連付けられるデータエレメント、ライン106のサイズ、オペレーティングシステムコントロールフィールド、及び/又は他のフィールドの任意の組み合わせを含みうる。グローバルオーバーフローテーブル及び第2メモリは、図3−5を参照して以下により詳細に説明する。
したがって、トランザクションの一部としての命令又はオペレーションが、プロセッサ100のパイプラインを通ると、キャッシュ103といったトランザクショナルメモリへのアクセスが追跡される。更に、トランザクショナルメモリがフルである、即ち、オーバーフローする場合、トランザクショナルメモリは、プロセッサ100上、又は、プロセッサ100に関連付けられる/結合される他のメモリ内に拡張される。更に、プロセッサ100内のいずれのレジスタも、トランザクショナルメモリがオーバーフローとなったことを表すオーバーフローフラグと、拡張トランザクショナルメモリのベースアドレスを特定するベースアドレスを格納しうる。
図1に示す例示的なマルチコアアーキテクチャを参照してトランザクショナルメモリを具体的に説明したが、トランザクショナルメモリの拡張及び/又は仮想化は、命令を実行する/データを処理する任意の処理システムにおいて実施されうる。一例として、複数のトランザクションを並列に実行可能な組み込みプロセッサが仮想化されたトランザクショナルメモリを実装しうる。
図2aを参照するに、マルチコアプロセッサ200の一実施形態を示す。この場合、プロセッサ200は、4つのコア、即ち、コア205−208を含むが、任意の数のコアを用いてよい。一実施形態では、メモリ210はキャッシュメモリである。ここでは、メモリ210は、コア205−208の機能ボックス外として示す。一実施形態では、メモリ210は、第2レベル又は他の上位キャッシュといった共有キャッシュである。しかし、一実施形態では、機能ブロック205−208は、コア205−208のアーキテクチャステートを表し、メモリ210は、コア205又はコア205−208といった複数のコアのうちの1つに割り当てられる/関連付けられる第1レベル又は下位キャッシュである。したがって、図示するメモリ210は、図1に示すメモリ103といったコア内の下位キャッシュであっても、図1に示すキャッシュ145といった上位キャッシュであっても、複数のレジスタの集合である上述した例のような他の格納エレメントであってもよい。
各コアは、レジスタ230、235、240、及び245といったレジスタを含む。一実施形態では、レジスタ230、235、240、及び245は、マシン固有レジスタ(MSR)である。しかし、レジスタ230、235、240、及び245は、各コアのアーキテクチャステートレジスタのセットの一部であるレジスタといった、プロセッサ200内の任意のレジスタであってよい。
各レジスタは、トランザクションオーバーフローフラグ、即ち、フラグ231、236、241、及び246を含む。上述したように、オーバーフローイベントが発生すると、トランザクションオーバーフローフラグがセットされる。オーバーフローフラグは、ハードウェア、ソフトウェア、ファームウェア、又は、これらの任意の組み合わせによってセットされる。一実施形態では、オーバーフローフラグは、2つのロジカルステートを有しうる1つのビットである。しかし、オーバーフローフラグは、任意の数のビットであっても、メモリがオーバーフローした場合を特定するステートの他の表示であってもよい。
例えば、コア205上で実行されるトランザクションの一部としてのオペレーションが、キャッシュ210をオーバーフローさせる場合、ロジックといったハードウェア、又は、オーバーフローインタラプトを処理すべく呼び出されたユーザハンドラといったソフトウェアが、フラグ231をセットする。デフォルトステートである第1のロジカルステートでは、コア205は、メモリ210を用いてトランザクションを実行する。通常の退避、アクセス追跡、コンフリクトチェック、及びバリデーションが、ブロック215、220、及び225と対応するフィールド216、221、及び226を含むキャッシュ210を用いて行われる。しかし、フラグ231が、第2のステートにセットされると、キャッシュ210は拡張される。フラグ231といった1つのフラグがセットされることに基づいて、残りのフラグ236、241、及び246もセットされうる。
例えば、コア205−208間で送信されるプロトコルメッセージが、1つのオーバーフロービットがセットされたことに基づいて他のフラグをセットする。一例として、オーバーフローフラグ231が、この例ではコア205内の第1レベルデータキャッシュであるメモリ210内で発生したオーバーフローイベントに基づいてセットされたと想定する。一実施形態では、フラグ231のセット後、ブロードキャストメッセージが、コア205−208を相互接続するバス上を送信されて、フラグ236、241、及び246がセットされる。コア205−208がポイント・ツー・ポイントで、リング、又は他の形式で接続される別の実施形態では、コア205からのメッセージが、各コアに送信されるか、又は、コアからコアに転送されて、フラグ236、241、及び246がセットされる。なお、以下に説明するように、同様のメッセージング等をマルチプロセッサフォーマットにおいても行いフラグが複数の物理プロセッサ間でセットされることを確実にしうることに留意されたい。コア205−208内のフラグがセットされると、次のトランザクションの実行は、アクセス追跡、コンフリクトチェック、及び/又はバリデーションについて仮想化/拡張メモリをチェックするよう通知される。
上記の説明は、複数のコアを有する単一の物理プロセッサ200に関するものである。しかし、コア205−208が1つのシステム内の別個の物理プロセッサである場合も同様の構成、プロトコル、ハードウェア、及びソフトウェアを用いる。この場合、各プロセッサが、それぞれのオーバーフローフラグとともにレジスタ230、235、240、及び245といったオーバーフローレジスタを有する。1つのオーバーフローフラグがセットされると、残りのフラグも、プロセッサ間の相互接続部上のプロトコル通信を介して同様にセットされうる。ここでは、ブロードキャスティングバス又はポイント・ツー・ポイント相互接続部上での通信交換によって、発生したオーバーフローイベントを表す値にセットされたオーバーフローフラグの値を通信する。
次に、図2bを参照するに、オーバーフローフラグを有するマルチコアプロセッサの別の実施形態を示す。図2aとは対照的に、各コア205−208がオーバーフローレジスタとオーバーフローフラグを含むのではなく、単一のオーバーフローレジスタ250とオーバーフローフラグ251がプロセッサ200内に存在する。したがって、オーバーフローイベントが発生すると、フラグ251がセットされ、これは、各コア205−208に対してグローバルに可視である。したがって、フラグ251がセットされると、アクセス追跡、バリデーション、コンフリクトチェック、及び、他のトランザクションの実行に関するオペレーションが、グローバルオーバーフローテーブルを用いて行われる。
例示的な実施例として、メモリ210が、トランザクションが実行される間にオーバーフローし、その結果、レジスタ250内のオーバーフロービット251がセットされたと想定する。更に、後続のオペレーションは、仮想化トランザクショナルメモリを用いて追跡されたとする。トランザクションをコミットする前に、メモリ210だけがコンフリクトチェック又はバリデーションに使用される場合、オーバーフローメモリによって追跡されたコンフリクト/アクセスは発見されない。しかし、コンフリクトチェック及びバリデーションがオーバーフローメモリを用いて行われる場合、当該コンフリクトは検出され、コンフリクトするトランザクションをコミットするのではなく当該トランザクションはアボートされる。
上述したように、現在セットされていないオーバーフローフラグをセットすると、既に割り当てられていない場合は、グローバルオーバーフローテーブルのためのスペースが要求される/割り当てられる。反対に、トランザクションがコミット又はアボートされると、当該トランザクションに対応するグローバルオーバーフローテーブル内のエントリは解放される。一実施形態では、エントリの解放には、エントリ内のアクセス追跡ステート又は他のフィールドをクリアすることが含まれる。別の実施形態では、エントリの解放には、グローバルオーバーフローテーブルからエントリを削除することが含まれる。オーバーフローテーブル内の最後のエントリが解放されると、グローバルオーバーフロービットは、デフォルトステートとなるようクリアされる。基本的に、グローバルオーバーフローテーブル内の最後のエントリを解放することは、任意のペンディングのトランザクションは、キャッシュ210内に納まり、トランザクションの実行のためにオーバーフローメモリが現在使用されないことを表す。図3−5は、オーバーフローメモリ、より具体的にはグローバルオーバーフローテーブルをより詳細に説明する。
図3を参照するに、上位メモリに結合された複数のコアを有するプロセッサの一実施形態を示す。メモリ310は、複数のライン315、320、及び325を含む。アクセス追跡フィールド316、321、及び326は、それぞれ、ライン315、320、及び325に対応する。各アクセスフィールドは、メモリ310内のこれらのフィールドに対応するラインへのアクセスを追跡する。プロセッサ300は更に、複数のコア305−308も含む。なお、メモリ310は、コア305−308のうちの任意のコア内の下位キャッシュでも、コア305−308によって共有される上位キャッシュであっても、トランザクショナルメモリとして用いられるプロセッサ内の任意の他の既知の又は利用可能であるメモリであってよいことに留意されたい。各コアは、レジスタ330、335、340、及び345といった、グローバルオーバーフローテーブル655のベースアドレスを格納するレジスタを含む。メモリ310を用いてトランザクションを実行する場合は、ベースアドレス331、336、341、及び346は、グローバルオーバーフローテーブルは割り当てられていない場合があるので、グローバルオーバーフローテーブルのベースアドレスを格納しなくともよい。
しかし、メモリ310がオーバーフローすると、オーバーフローテーブル355が割り当てられる。一実施形態では、オーバーフローテーブル355がまだ割り当てられていない場合は、メモリ310をオーバーフローしたオペレーションに基づいてインタラプト又はページフォルトが生成される。ユーザハンドラ又はカーネルレベルのソフトウェアが、上位メモリ350のある範囲を、インタラプト又はページフォルトに基づいてオーバーフローテーブル355に割り当てる。別の例として、グローバルオーバーフローテーブルは、オーバーフローフラグがセットされたことに基づいて割り当てられる。この場合、オーバーフローフラグがセットされると、グローバルオーバーフローテーブルへの書込みが試みられる。この書込みが失敗する場合、グローバルオーバーフローテーブル内に新しいページが割り当てられる。
上位メモリ350は、上位キャッシュ、プロセッサ300のみに関連付けられるメモリ、プロセッサ300を含むシステムにより共有されるシステムメモリ、メモリ310より上位にある任意の他のメモリでありうる。オーバーフローテーブル355に割り当てられたメモリ350の第1の範囲は、オーバーフローテーブル355の第1のページと呼ぶ。複数のページを有するオーバーフローテーブルについて、図5を参照しながらより詳細に説明する。
オーバーフローテーブル355へのスペースの割り当てした際、又は、オーバーフローテーブル355へのメモリの割り当てした後、オーバーフローテーブル355のベースアドレスが、レジスタ330、335、340、及び/又は345に書込まれる。一実施形態では、カーネルレベルのコードが、グローバルオーバーフローテーブルのベースアドレスをベースアドレスレジスタ330、335、340、及び345のそれぞれに書込む。或いは、ハードウェア、ソフトウェア、又はファームウェアが、ベースアドレスをベースアドレスレジスタ330、335、340、及び345のうちの1つに書込み、そのベースアドレスは、コア305−308間のメッセージングプロトコルを介して残りのベースアドレスレジスタに伝えられる。
説明したように、オーバーフローテーブル355は、複数のエントリ360、365、及び370を含む。各エントリ360、365、及び370は、それぞれ、アドレスフィールド361、366、及び371と、トランザクションステート情報(TSI)フィールド362、367、及び372を含む。オーバーフローテーブル355のオペレーションの非常に簡単化した例として、第1のトランザクションからのオペレーションが、対応するアクセスフィールド316、321、及び326のステートによって表されるように、ライン315、320、及び325をアクセスしたと想定する。第1のトランザクションのペンデンシの間に、ライン315が退避のために選択される。アクセス追跡フィールド316のステートは、ライン315が、まだペンディングされている第1のトランザクションの間に前にアクセスされたことを表すので、オーバーフローイベントが発生する。上述したように、オーバーフローフラグ/ビットがセットされうる。更に、ページが割り当てられていない又は追加のページが必要である場合、メモリ350内のページがオーバーフローテーブル355に割り当てられる。
ページ割り当てが必要ではない場合、グローバルオーバーフローテーブルの現在のベースアドレスがレジスタ330、335、340、又は345によって格納される。或いは、最初の割り当ての際に、オーバーフローテーブル355のベースアドレスは、レジスタ330、335、340、又は345に書込まれる/伝えられる。オーバーフローイベントに基づいて、エントリ360がオーバーフローテーブル355に書込まれる。エントリ360は、ライン315に関連付けられるアドレスの表示を格納するアドレスフィールド361を含む。
一実施形態では、ライン315に関連付けられるアドレスは、ライン315に格納されたエレメントのロケーションの物理アドレスである。例えば、物理アドレスは、当該エレメントが格納されるシステムメモリといったホスト格納デバイス内のロケーションの物理アドレスの表示である。オーバーフローテーブル355内に物理アドレスを格納することによって、オーバーフローテーブルは、コア305−308による全てのアクセス間のコンフリクトを検出しうる。
対照的に、仮想メモリアドレスが、アドレスフィールド361、366、及び367に格納される場合、異なる仮想メモリベースアドレスとオフセットを有するプロセッサ又はコアは、メモリの異なるロジカルビューを有する。この結果、同じ物理メモリロケーションへのアクセスはコンフリクトとして検出されない場合があり、これは、物理メモリロケーションの仮想メモリアドレスは、コア間で異なって見られうるからである。しかし、仮想アドレスメモリロケーションが、オペレーティングシステム(OS)コントロールフィールド内のコンテキスト識別子と組み合わされてオーバーフローテーブル355に格納される場合、グローバルのコンフリクトが発見されうる。
ライン315に関連付けられるアドレスの表示の他の実施形態は、仮想メモリアドレス、キャッシュラインアドレス、又は他の物理アドレスの一部又は全てを含む。アドレスの表示には、10進値、16進値、2進値、ハッシュ値、又は、1つのアドレスの全ての又は任意の一部の他の表示/操作を含む。一実施形態では、アドレスの一部であるタグ値が、アドレスの表示である。
エントリ360は、アドレスフィールド361に加えて、トランザクションステート情報(TSI)フィールド362を含む。一実施形態では、TSIフィールド362は、アクセス追跡フィールド316のステートを格納する。例えば、アクセス追跡フィールド316が、ライン315に対する書込み及び読出しをそれぞれ追跡すべく、2つのビット、即ち、トランザクション書込みビット及びトランザクション読出しビットを含む場合、トランザクション書込みビット及びトランザクション読出しビットのロジカルステートが、TSIフィールド362に格納される。しかし、トランザクションに関連する任意の情報をTSIフィールド362に格納してよい。オーバーフローテーブル355及びオーバーフローテーブル355に格納されうる他のフィールドを、図4a−4bを参照して説明する。
図4aは、グローバルオーバーフローテーブルの一実施形態を示す。グローバルオーバーフローテーブル400は、トランザクションが実行される間にメモリをオーバーフローさせたオペレーションに対応するエントリ405、410、及び415を含む。一例として、実行されたトランザクションのあるオペレーションがメモリをオーバーフローさせたとする。エントリ405が、グローバルオーバーフローテーブル400に書込まれる。エントリ405は、物理アドレスフィールド406を含む。一実施形態では、物理アドレスフィールド406は、メモリをオーバーフローさせたオペレーションによって参照されるメモリ内のラインに関連付けられる物理アドレスを格納する。
例示的な例として、トランザクションの一部として実行される第1のオペレーションは、物理アドレスABCDを有するシステムメモリロケーションを参照すると想定する。当該オペレーションに基づいて、キャッシュコントローラは、物理アドレスの一部、即ち、ABCによって退避用のキャッシュラインにマッピングされたキャッシュラインを選択し、その結果、オーバーフローイベントが発生する。なお、ABCのマッピングには、アドレスABCに関連付けられる仮想メモリアドレスへの変換も含まれうることに留意されたい。オーバーフローイベントが発生したので、オペレーション及び/又はキャッシュラインに関連付けられるエントリ405がオーバーフローテーブル400に書込まれる。この例では、エントリ405は、物理アドレスフィールド406に物理アドレスABCDの表示を含む。ダイレクト・マップド編成及びセット・アソシエティブ編成といった多くのキャッシュ編成によって、複数のシステムメモリロケーションが、単一のキャッシュライン又は複数のキャッシュラインを含むセットにマッピングされるので、キャッシュラインアドレスは、ABCA、ABCB、ABCC、ABCE等の複数のシステムメモリロケーションを参照しうる。したがって、物理アドレスABCD又はその何らかの表示を、物理アドレス406に格納することによって、トランザクションのコンフリクトはより容易に検出することができうる。
物理アドレスフィールド406に加えて、他のフィールドには、データフィールド407、トランザクションステートフィールド408、及びオペレーティングシステムコントロールフィールド409が含まれる。データフィールド407は、命令、オペランド、データ、又は、メモリをオーバーフローさせるオペレーションに関連付けられる他のロジカル情報といったエレメントを格納する。なお、各メモリラインは、複数のデータエレメント、命令、又は他のロジカル情報を格納可能でありうることに留意されたい。一実施形態では、データフィールド407は、退避されるべきメモリライン内の1つのデータエレメント又は複数のデータエレメントを格納する。この場合、データフィールド407は、オプションとして用いられうる。例えば、オーバーフローイベントが発生した場合、エレメントは、退避されるべきメモリラインが、変更(modified)ステート又は他のキャッシュコヒーレンシステートにない限り、エントリ405に格納されない。また、データフィールド407は、命令、オペランド、データエレメント、及び他のロジカル情報に加えて、メモリラインのサイズといった他の情報も含みうる。
トランザクションステートフィールド408は、トランザクショナルメモリをオーバーフローさせるオペレーションに関連付けられるトランザクションステート情報を格納する。一実施形態では、キャッシュラインの追加の複数のビットは、そのキャッシュラインへのアクセスに関するトランザクションステート情報を格納するアクセス追跡フィールドである。この場合、追加の複数ビットのロジカルステートが、トランザクションステートフィールド408に格納される。基本的に、退避されるメモリラインは仮想化され、物理アドレスとトランザクションステート情報とともに高位メモリに格納される。
更に、エントリ405は、オペレーティングシステム(OS)コントロールフィールド409を含む。一実施形態では、OSコントロールフィールド409は、実行のコンテキストを追跡する。例えば、OSコントロールフィールド409は、エントリ405に関連付けられる実行のコンテキストを追跡するコンテキストIDの表示を格納する64ビットのフィールドである。エントリ410及び415といった複数のエントリも、物理アドレスフィールド411及び416、データフィールド412及び413、トランザクションステートフィールド413及び418、並びにOSフィールド414及び419といった同様のフィールドを含む。
次に、図4bを参照するに、トランザクションステート情報を格納するオーバーフローテーブルの具体的な例示的な実施形態を示す。オーバーフローテーブル400は、図4aを参照して説明したフィールドと同様のフィールドを含む。対照的に、エントリ405、410、及び415は、トランザクション読出し(Tr)フィールド451、456、及び461と、トランザクション書込み(Tw)フィールド452、457、及び462を含む。一実施形態では、Trフィールド451、456、及び461と、Twフィールド452、457、及び462は、それぞれ、読出しビット又は書込みビットのステートを格納する。一実施形態では、読出しビット及び書込みビットは、関連付けられたキャッシュラインに対する読出し及び書込みを追跡する。オーバーフローテーブル400にエントリ405を書込むと、読出しビットのステートがTrフィールド451に格納され、書込みビットのステートがTwフィールド452に格納される。この結果、トランザクションのステートが、Trフィールド及びTwフィールドにおいてどのエントリがトランザクションのペンデンシ時にアクセスされたのかを示すことによってオーバーフローテーブル400に格納される。
図5を参照するに、マルチページオーバーフローテーブルの一実施形態を示す。ここでは、メモリ500内に格納されるオーバーフローテーブル505は、ページ510、515、及び520といった複数ページを含む。一実施形態では、プロセッサ内のレジスタが、第1のページ510のベースアドレスを格納する。テーブル505への書込みが行われると、オフセット、ベースアドレス、物理アドレス、仮想アドレス、又はこれらの組み合わせが、テーブル505内のロケーションを参照する。
ページ510、515、及び520は、オーバーフローテーブル505において連続的であってよいが連続的である必要はない。実際、一実施形態では、ページ510、515、及び520は、複数のページからなるリンク付けされたリストである。この場合、ページ510といった前のページが、次のページ515のベースアドレスを、エントリ511といったエントリに格納する。
最初は、オーバーフローテーブル505内には複数のページが存在しない場合がある。例えば、オーバーフローが発生していない場合は、オーバーフローテーブル505にはスペースは割り当てられない。図示しない別のメモリがオーバーフローされると、ページ510がオーバーフローテーブル505に割り当てられる。ページ510内のエントリは、オーバーフロー状態において続行されるトランザクション実行として書込まれる。
一実施形態では、ページ510がフルになると、オーバーフローテーブル505への書込みが試みられると、ページ510内にスペースが残っていないのでページフォルトが生成される。この場合、追加の、即ち、次のページ515が割り当てられる。前に試みられたエントリの書込みは、ページ515にそのエントリを書込むことにより完了される。更に、ページ515のベースアドレスはページ510のフィールド511に格納され、オーバーフローテーブル505用の複数のページからなるリンク付けされたリストが形成される。同様に、ページ515も、ページ520が割り当てられる場合に、フィールド516内にページ520のベースアドレスを格納する。
次に、図6を参照するに、トランザクショナルメモリを仮想化可能なシステムの一実施形態を示す。マイクロプロセッサ600は、キャッシュメモリであるトランザクショナルメモリ(TM)610を含む。一実施形態では、TM610は、図1におけるキャッシュ103の例示と同様に、コア630内の第1レベルキャッシュである。また、TM610は、コア635内の下位キャッシュであってもよい。別の実施形態では、キャッシュ610は、上位キャッシュ、又は、プロセッサ600内のメモリの利用可能なセクションである。キャッシュ610は、ライン615、620、及び625を含む。キャッシュライン615、620、及び625に関連付けられる追加のフィールドは、トランザクション読出し(Tr)フィールド616、621、及び626と、トランザクション書込み(Tw)フィールド617、622、及び627である。一例として、Trフィールド616とTwフィールド617はキャッシュライン615に対応し、また、キャッシュライン615へのアクセスを追跡する。
一実施形態では、Trフィールド616及びTwフィールド617は、それぞれ、キャッシュライン615における単一のビットである。デフォルトとして、Trフィールド616及びTwフィールド617は、ロジカル1といったデフォルト値にセットされる。ペンディングのトランザクションが実行される間にライン615からの読出し又はロードによって、Trフィールド616は、ロジカル0といった第2の値にセットされ、ペンディングのトランザクションが実行される間に読出し/ロードが発生したことを表す。対応して、ペンディングのトランザクション時にライン615への書込み又はロードが発生すると、Twフィールド617は第2の値にセットされて、ペンディングのトランザクションが実行される間に発生した書込み又は格納を表す。トランザクションをアボート又はコミットすると、コミット又はアボートされるべき当該トランザクションに関連付けられる全てのTrフィールド及びTwフィールドは、デフォルトステートにリセットされて、対応するキャッシュラインへのアクセスの次の追跡を可能にする。
マイクロプロセッサ600は更に、トランザクションを実行するコア630及びコア635を含む。コア630は、オーバーフローフラグ632及びベースアドレス633を有するレジスタ631を含む。更に、TM610がコア630内にある実施形態では、TM610は、第1レベルのキャッシュ、又は、コア630内で利用可能な格納領域である。同様に、コア635は、オーバーフローフラグ637、ベースアドレス638、及び、可能な場合にはTM610を上述したように含む。図6では、レジスタ631及び636は、別個のレジスタとして示すが、オーバーフローフラグ及びベースアドレスを格納する他の構成も可能である。例えば、マイクロプロセッサ600上の単一のレジスタがオーバーフローフラグ及びベースアドレスを格納し、コア630及び635は、当該レジスタをグローバルに見る。或いは、マイクロプロセッサ400上に別個のレジスタがある、又は、コア630及び635が、別個のオーバーフローレジスタ及び別個のベースアドレスレジスタを含む。
最初のトランザクションの実行は、トランザクショナルメモリ610を用いてトランザクションを実行する。アクセスの追跡、コンフリクトチェック、バリデーション、及びトランザクションの他の実行技術は、Tr及びTwフィールドを用いて行われる。しかし、トランザクションメモリ610がオーバーフローされると、トランザクションメモリ610は、メモリ650へと拡張される。図示するように、メモリ650は、プロセッサ600専用、又は、システム全体で共有されるシステムメモリである。しかし、メモリ650は、上述したように第2レベルキャッシュといったプロセッサ600上のメモリであってもよい。この場合、メモリ650内に格納されるオーバーフローテーブル655を用いてトランザクショナルメモリ610を拡張する。上位メモリへの拡張は、トランザクショナルメモリの仮想化、又は、仮想メモリへの拡張とも呼びうる。ベースアドレスフィールド633及び638は、システムメモリ650内のグローバルオーバーフローテーブルのベースアドレスを格納する。オーバーフローテーブル655はマルチページオーバーフローテーブルである一実施形態では、ページ660といった前のページが、オーバーフローテーブル655の次のページ、即ち、ページ665の次のベースアドレスを、フィールド661といったフィールドに格納する。次のページのアドレスを前のページに格納することにより、メモリ650内に複数のページからなるリンク付けされたリストが作成され、マルチページオーバーフローテーブル655が形成される。
トランザクショナルメモリを仮想化するシステムの一実施形態のオペレーションを例示するために以下の例を説明する。第1のトランザクションは、ライン615からロードし、ライン625からロードし、計算オペレーションを実行し、結果をライン620に書込み、バリデーション/コミットを試みる前に他の諸々のオペレーションを実行する。ライン615からロードされると、Trフィールド616は、デフォルトのロジカルステート1からロジカル値0にセットされて、ライン615からのロードが、まだペンディングである第1のトランザクションが実行される間に発生したことを表す。同様に、Trフィールド626は、ロジカル値0にセットされて、ライン625からのロードが表される。ライン620への書込みが発生すると、Twフィールド622は、ロジカル0にセットされて、第1のトランザクションのペンデンシ時に発生したライン620への書込みを表す。
第2のトランザクションは、第1のトランザクションがまだペンディングである間に、キャッシュライン615をミスし、最後に用いられてから最も長い時間が経過したアルゴリズムといった置換アルゴリズムを介して、キャッシュライン615が退避のために選択されるオペレーションを含むと想定する。キャッシュコントローラ、又は、図示しない他のロジックは、Trフィールド616が、まだペンディングである第1のトランザクションが実行される間にライン615が読出されたことを表すロジカル0にセットされるので、ライン615の退避を検出する。ラインの退避は、オーバーフローイベントをもたらす。一実施形態では、ロジックは、オーバーフローイベントに基づいて、オーバーフローフラグ632といったオーバーフローフラグをセットする。別の実施形態では、Trフィールド616がロジカル0にセットされてキャッシュライン615が退避のために選択されるとインタラプトが生成される。オーバーフローフラグ632は、インタラプトの処理に基づいてハンドラによってセットされる。コア630と636間の通信プロトコルを用いてオーバーフローフラグ637がセットされ、これにより、両方のコアは、オーバーフローイベントが発生し、トランザクショナルメモリ610が仮想化されるべきであることが通知される。
キャッシュライン615を退避させる前に、トランザクショナルメモリ610は、メモリ650へと拡張される。この場合、トランザクションステート情報が、オーバーフローテーブル655に格納される。最初にオーバーフローテーブル655が割り当てられていない場合、ページフォルト、インタラプト、又は、カーネルレベルのプログラムへの他の通信が生成されてオーバーフローテーブル655の割り当てを要求する。そうするとオーバーフローテーブル655のページ660が、メモリ650内に割り当てられる。オーバーフローテーブル655、即ち、ページ660のベースアドレスが、ベースアドレスフィールド633及び638に書込まれる。なお、上述したように、ベースアドレスは、コア635といった1つのコアに書込まれ、次に、メッセージングプロトコルを介して、オーバーフローテーブル655のベースアドレスはもう1つのベースアドレスフィールド633に書込まれてもよいことに留意されたい。
オーバーフローテーブル655のページ660が既に割り当てられている場合、エントリがページ660に書込まれる。一実施形態では、エントリには、ライン615に格納されたエレメントに関連付けられる物理アドレスの表示が含まれる。この物理アドレスは、キャッシュライン615と、トランザクションメモリ610をオーバーフローさせたオペレーションにも関連付けられると言える場合がある。このエントリには、トランザクションステート情報も含まれる。この場合、エントリは、それぞれ、ロジカル0及び1であるTrフィールド616及びTwフィールド617の現在のステートを含む。
エントリ内の他の可能なフィールドには、オペランド、命令、又はキャッシュライン615に格納された他の情報を格納するエレメントフィールドと、コンテキスト識別子といったオペレーティングシステム(OS)コントロール情報を格納するOSコントロールフィールドが含まれる。エレメントフィールド及び/又はエレメントサイズフィールドを、キャッシュライン615のキャッシュコヒーレンシステートに基づいてオプションとして用いうる。例えば、キャッシュラインがMESIプロトコルの変更(modified)ステートにある場合、エレメントはエントリに格納される。或いは、エレメントが、排他的(exclusive)ステート、共有(shared)ステート、又は、無効(invalid)ステートにある場合、エントリ内にはエレメントは格納されない。
ページ660がエントリで一杯になったことによって、ページ660へのエントリの書込みがページフォルトをもたらすと想定すると、オペレーティングシステムといったカーネルレベルのプログラムに、追加のページの要求がなされる。追加のページ665は、オーバーフローテーブル655に割り当てられる。ページ665のベースアドレスは、前のページ660のフィールド661に格納されて、複数のページからなるリンク付けされたリストが形成される。それ以降、エントリは新しく追加されたページ667に書込まれる。
別の実施形態では、ライン625からのロード及びライン620への書込みに基づいたエントリといった、第1のトランザクションに関連付けられる他のエントリは、オーバーフローに基づいてオーバーフローテーブル655に書込まれ、それにより、第1のトランザクション全体を仮想化する。しかし、トランザクションによりアクセスされた全てのラインをオーバーフローテーブルにコピーすることは必要ではない。実際には、アクセスの追跡、バリデーション、コンフリクトチェック、及びトランザクションの他の実行技術は、トランザクショナルメモリ610及びメモリ650の両方において行われうる。
例えば、第2のトランザクションが、ライン625内に現在格納されているエレメントと同じ物理メモリロケーションに書込みを行うと、Tr626が第1のトランザクションはライン625からロードしたことを表すので、第1のトランザクションと第2のトランザクションとの間のコンフリクトが検出されうる。この結果、インタラプトが生成され、ユーザハンドラ/アボートハンドラが、第1のトランザクション又は第2のトランザクションのアボートを開始する。更に、第3のトランザクションが、ライン615に関連付けられるページ660内のエントリの一部である物理アドレスへの書込みである場合。オーバーフローテーブルを用いて、複数のアクセス間のコンフリクトを検出し、同様のインタラプト/アボートハンドラルーチンを開始する。
第1のトランザクションが実行される間に無効なアクセス/コンフリクトが検出されない場合、又は、バリデーションが成功した場合、第1のトランザクションはコミットされる。第1のトランザクションに関連付けられた、オーバーフローテーブル655内の全てのエントリは解放される。この場合、エントリを解放することには、オーバーフローテーブル655からエントリを削除することが含まれる。或いは、エントリを解放することには、エントリ内のTrフィールド及びTwフィールドをリセットすることが含まれる。オーバーフローテーブル655内の最後のエントリが解放されると、オーバーフローフラグ632及び637はデフォルトステートにリセットされ、トランザクショナルメモリ610は現在オーバーフローしていないことを示す。オーバーフローテーブル655は、メモリ650を効率よく使用することができるように、オプションとして、割り当てが解除されてもよい。
図7を参照するに、トランザクショナルメモリを仮想化する方法のフロー図の一実施形態を示す。段階705において、1つのトランザクションの一部として実行されるオペレーションに関連付けられたオーバーフローイベントが検出される。当該オペレーションは、トランザクショナルメモリにおけるメモリラインを参照する。一実施形態では、当該メモリは、物理プロセッサ上の複数のコアのうちの1つのコア内にある下位データキャッシュである。この場合、第1のコアがトランザクショナルメモリを含み、他のコアは、当該下位データキャッシュに格納されたエレメントに対してスヌープする/要求を出すことができることによってメモリへのアクセスを共有する。或いは、トランザクショナルメモリは、複数のコア間で直接共有される、第2レベル又は上位キャッシュである。
メモリラインを参照するアドレスは、変換、操作、又は他の計算を介して、メモリラインに関連付けられたアドレスを参照するアドレスへの参照を含む。例えば、オペレーションは、変換されると、システムメモリ内の物理ロケーションを参照する仮想メモリメモリアドレスを参照する。大抵の場合、キャッシュは、アドレスのポーション又はタグ値によってインデックス付けされる。したがって、キャッシュの共有ラインをインデックス付けするアドレスのタグ値が、タグ値となるよう変換及び/又は操作される仮想メモリアドレスにより参照される。
一実施形態では、オーバーフローイベントには、オペレーションによって参照されたメモリ内のラインを、そのメモリ内のラインがペンディングのトランザクションによって前にアクセスされている場合に、退避させる又は退避のために選択することが含まれる。或いは、オーバーフローの予測、又は、オーバーフローをもたらすイベントも、オーバーフローイベントとしてみなされうる。
段階710において、オーバーフローイベントに基づいてオーバーフロービット/フラグがセットされる。一実施形態では、メモリがオーバーフローすると、トランザクションを実行するようスケジューリングされるコア又はプロセッサ内にオーバーフロービット/フラグを格納するレジスタがアクセスされてオーバーフローフラグがセットされる。レジスタ内のオーバーフローを示すシングルビットは、全てのコア又はプロセッサがグローバルに見ることができ、それにより、どのコアもメモリがオーバーフローして仮想化されたことを認識していることを確実にする。或いは、各コア又はプロセッサは、各プロセッサにオーバーフロー及び仮想化を通知するメッセージングプロトコルを介してセットされるオーバーフロービットを含む。
オーバーフロービットがセットされると、メモリは仮想化される。一実施形態では、メモリの仮想化には、メモリラインに関連付けられたトランザクションステート情報をグローバルオーバーフローテーブルに保存することを含む。基本的に、メモリのオーバーフローに関連するメモリのラインの表示が、上位メモリにおいて仮想化、拡張、及び/又は部分的に複製される。一実施形態では、アクセス追跡フィールドのステートと、オペレーションによって参照されたメモリのラインに関連付けられた物理アドレスが、上位メモリ内のグローバルオーバーフローテーブルに格納される。上位メモリにおけるエントリは、アクセスの追跡、コンフリクトの検出、トランザクションバリデーションの実行等に、メモリと同様に用いられる。
図8を参照するに、トランザクショナルメモリを仮想化するシステムのためのフロー図の例示的な実施形態を示す。段階805において、1つのトランザクションが実行される。トランザクションには、複数のオペレーション又は命令を有する群が含まれる。上述したように、トランザクションは、ソフトウェア、ハードウェア、又は、それらの組み合わせによって境界設定される。オペレーションは、大抵の場合、仮想メモリアドレスを参照し、このアドレスは、変換されると、システムメモリ内のリニア及び/又は物理アドレスを参照する。キャッシュといった複数のプロセッサ又はコアによって共有されるトランザクショナルメモリは、トランザクションが実行される間にアクセスの追跡、コンフリクトの検出、バリデーションの実行等のために用いられる。一実施形態では、各キャッシュラインは、アクセスフィールドに対応し、これは、上述したオペレーションを実行する際に用いられる。
段階810において、キャッシュ内のキャッシュラインが退避のために選択される。この場合、別のトランザクション又はオペレーションがメモリロケーションへのアクセスを試みることによって、退避すべきキャッシュラインが選択される。キャッシュコントローラ又は他のロジックにより任意の既知の又は利用可能なキャッシュ置換アルゴリズムを用いて退避のためのラインを選択しうる。
次に、判断段階815において、選択されたキャッシュラインは、トランザクションのペンデンシの間に前にアクセスされたかどうか判断される。ここでは、アクセス追跡フィールドをチェックして、選択されたキャッシュラインへのアクセスが発生していたか否かを判断する。アクセスが追跡されない場合には、当該キャッシュラインは、段階820において退避される。退避が、トランザクション内のオペレーションによるものである場合、退避/アクセスは追跡されうる。しかし、依然としてペンディング中であるトランザクションの実行時にアクセスが追跡される場合、段階825において、グローバルオーバーフロービットが現在セットされているか否か判断される。
グローバルオーバーフロービットが現在セットされていない場合、段階830において、ペンディングのトランザクションが実行される間にアクセスされたキャッシュラインを退避させることによりキャッシュのオーバーフローが発生すると、グローバルオーバーフロービットがセットされる。なお、別の実施形態では、段階825は、グローバルオーバーフロービットが現在セットされてキャッシュは既にオーバーフローしていることが示される場合、段階815、820、及び830の前に行っても、段階815、820、及び830は省略してもよい。基本的に、この別の実施形態では、オーバーフロービットは既にキャッシュがオーバーフローしたことを表しているので、オーバーフローイベントを検出する必要はない。
フロー図を再び参照するに、グローバルオーバーフロービットがセットされている場合、段階835において、グローバルオーバーフローテーブルの第1のページが割り当てられているか否か判断される。一実施形態では、グローバルオーバーフローテーブルの第1のページが割り当てられているか否かの判断には、当該ページが割り当てられているか否かを判断すべくカーネルレベルのプログラムと通信することが含まれる。グローバルオーバーフローテーブルが割り当てられていない場合、段階840において、第1のページが割り当てられる。ここでは、オペレーティングシステムにメモリのページを割り当てるよう要求することによって、グローバルオーバーフローテーブルが割り当てられる。別の実施形態では、以下により詳細に説明する段階855−870を用いて、第1のページが割り当てられているか否かを判断し、第1のページを割り当てる。この実施形態には、テーブルが割り当てられていない場合にはページフォルトをもたらす、ベースアドレスを用いたグローバルオーバーフローテーブルへの書込みを試みることと、ページフォルトに基づいてページを割り当てることが含まれる。いずれの場合においても、オーバーフローテーブルの最初のページを割り当てた後、オーバーフローテーブルのベースアドレスは、トランザクションを実行するプロセッサ/コア内のレジスタに書込まれる。その結果、後続の書込みは、レジスタに書込まれたベースアドレスとともに任意のエントリに対して正しい物理メモリロケーションを参照するオフセット、又は、他のアドレスを参照しうる。
段階850において、キャッシュラインに関連付けられたエントリが、グローバルオーバーフローテーブルに書込まれる。上述したように、グローバルオーバーフローテーブルは、次のフィールドの任意の組み合わせを含みうる。即ち、アドレスフィールド、エレメントフィールド、キャッシュラインのサイズフィールド、トランザクションステート情報フィールド、及びオペレーティングシステムコントロールフィールド。
段階855において、書込みした際にページフォルトが発生した否かを判断する。上述したように、ページフォルトは、オーバーフローテーブルの初期の割り当てがないこと、又は、オーバーフローテーブルが現在フルであることによって発生されうる。書込みが成功した場合、通常の実行、バリデーション、アクセスの追跡、コミットメント、アボート等が続行され、段階805に戻る。しかし、ページフォルトが、オーバーフローテーブル内にスペースが必要であることを示すべく発生する場合、段階860において、グローバルオーバーフローテーブルに追加のページが割り当てられる。段階870において、追加のページのベースアドレスは、前のページに書込まれる。これにより、リンク付けされたリスト型の複数のページからなるテーブルが形成される。試みられた書込みは、新しく割り当てられた追加のページに当該エントリを書込むことにより完了される。
上述したように、ローカルトランザクショナルメモリを用いてハードウェアにおいてトランザクションを実行することによる利点は、小さくあまり複雑でないトランザクションに対して得られる。更に、実行されるトランザクションの数とこれらのトランザクションの複雑さが増加するに従って、トランザクショナルメモリは仮想化されて、ローカルで共有されるトランザクショナルメモリがオーバーフローしても実行を続行することをサポートする。トランザクションをアボートして実行時間を無駄にするのではなく、トランザクションの実行、コンフリクトのチェック、バリデーション、及びコミットメントは、トランザクショナルメモリがオーバーフロー状態でなくなるまでグローバルオーバーフローテーブルを用いて完了される。グローバルオーバーフローは、仮想メモリの異なるビューを有するコンテキスト間のコンフリクトが検出されることを確実にすべく物理アドレスを格納しうる。
上述した方法、ソフトウェア、ファームウェア、又はコードの実施形態は、処理エレメントによって実行可能な機械アクセス可能又は機械読出し可能媒体上に格納された命令又はコードを介して実施されうる。機械アクセス可能/読出し可能媒体には、コンピュータ又は電子システムといった機械によって読出し可能な形式で情報を提供する(即ち、格納及び/又は送信する)任意の機構が含まれる。例えば、機械アクセス可能媒体には、静的RAM(SRAM)又は動的RAM(DRAM)といったランダムアクセスメモリ(RAM)、ROM、磁気又は光格納媒体、フラッシュメモリデバイス、及び、電気、光、音響、又は他の形式の伝播信号(例えば、搬送波、赤外線信号、デジタル信号等)が含まれる。
上記の明細書において、詳細な説明を具体的な例示的実施形態を参照して与えた。しかし、特許請求の範囲に示す本発明の広義の精神及び範囲から逸脱することなく様々な修正及び変更を実施形態に行いうることは明らかであろう。したがって、明細書及び図面は、限定的ではなく例示的に解釈されるべきである。また、実施形態という用語及び例示的であることを示す他の用語の使用は、必ずしも同じ実施形態又は実施例を指すものではなく、異なる別個の実施形態及び潜在的に同じ実施形態を指すものでありうる。

Claims (45)

  1. トランザクションを実行する実行モジュールと、
    前記実行モジュールに結合され、複数のメモリラインを有し、前記複数のメモリラインのうちの一のメモリラインは、前記トランザクションの実行中における前記メモリラインへのアクセスを追跡する対応追跡フィールドに関連付けられる、第1のメモリと、
    前記トランザクションの実行中における前記メモリラインに関連するオーバーフローイベントに呼応して、前記第1のメモリを第2のメモリへと拡張することをサポートするオーバーフローロジックと、
    を含む装置。
  2. 前記第2のメモリは、前記オーバーフローイベントに呼応して、前記メモリラインに関連付けられたトランザクションステート情報を格納する、請求項1に記載の装置。
  3. 前記オーバーフローロジックは、
    前記オーバーフローイベントに呼応してセットされる一のオーバーフロービットを格納する格納エレメントと、
    前記第2のメモリ内のグローバルオーバーフローテーブル用のベースアドレスの表示を格納するベースアドレス格納エレメントと、
    を含み、
    前記グローバルオーバーフローテーブルは、前記メモリラインに関連付けられた前記トランザクションステート情報を格納する、請求項2に記載の装置。
  4. 前記トランザクションの実行中における前記メモリラインへのアクセスを追跡する前記対応追跡フィールドは、
    前記トランザクションの実行中における前記メモリラインからのロードを追跡する第1のビットと、
    前記トランザクションの実行中における前記メモリラインへのストアを追跡する第2のビットと、
    を含む、請求項3に記載の装置。
  5. 前記メモリラインに関連付けられた前記トランザクションステート情報を格納する前記グローバルオーバーフローテーブルは、
    前記オーバーフローテーブル内のオーバーフローエントリ内に、メモリラインに関連付けられたエレメントを格納するエレメントフィールドと、
    前記オーバーフローエントリ内に、前記エレメントに関連付けられた物理アドレスを格納するアドレスフィールドと、
    前記オーバーフローエントリ内に、前記対応追跡フィールドの前記第1のビットのステートを格納するトランザクション読出しステートフィールドと、
    前記オーバーフローエントリ内に、前記対応追跡フィールドの前記第2のビットのステートを格納するトランザクション書込みステートフィールドと、
    を含む、請求項4に記載の装置。
  6. 前記第1のメモリは、キャッシュメモリであり、
    前記第2のメモリは、複数のコアのうちで共有される上位メモリであり、
    前記複数のコアの各コアは、前記オーバーフロービットがセットされている場合は、バリデーション時にコンフリクトがあるか否か前記グローバルオーバーフローテーブルをチェックする、請求項5に記載の装置。
  7. オーバーフローイベントは、前記トランザクションの実行中に、前記第1のビットが前記メモリラインからの前のロードを追跡した場合に、又は、前記トランザクションの実行中に、前記第2のビットが前記メモリラインへの前のストアを追跡した場合に、退避すべき前記メモリラインを選択することである、請求項4に記載の装置。
  8. オーバーフローイベントは、前記トランザクションにおいてネストされた第2のトランザクション用のトランザクション開始命令を実行することである、請求項4に記載の装置。
  9. 一のトランザクションにまとめられた複数のオペレーションを実行する実行ユニットと、
    前記実行モジュールに結合され、複数のブロックを有するトランザクショナルメモリと、
    前記実行ユニットに結合され、トランザクションオーバーフローフラグを格納するレジスタと、
    を含み、
    前記トランザクションオーバーフローフラグは、前記一のトランザクションにまとめられた前記複数のオペレーションのうちの一のオペレーションが、前記メモリをオーバーフローさせる場合にセットされる、装置。
  10. 前記レジスタ内の前記トランザクションオーバーフローフラグは、複数のコアに対して可視である、請求項9に記載の装置。
  11. 前記トランザクションオーバーフローフラグを格納する前記レジスタは、複数のコアのうちの、前記一のトランザクションにまとめられた前記複数のオペレーションを実行する一のコア内にある、請求項9に記載の装置。
  12. 前記複数のコアの各コアは、コンフリクトをチェックするときに、前記トランザクションオーバーフローフラグがセットされている場合に、コンフリクトをチェックすべくグローバルオーバーフローテーブルにアクセスする、請求項10に記載の装置。
  13. 前記トランザクションオーバーフローフラグは、前記グローバルオーバーフローテーブル内の最後のエントリが解放されるとクリアされる、請求項12に記載の装置。
  14. 前記トランザクションオーバーフローフラグを格納する前記レジスタは、マシン固有レジスタ(MSR)である、請求項9に記載の装置。
  15. 前記メモリをオーバーフローさせる、前記一のトランザクションにまとめられた前記複数のオペレーションのうちの一のオペレーションは、実行されると、前記トランザクションの実行中に前にアクセスされた前記メモリ内の前記複数のブロックのうちの一のブロックを退避させる、前記複数のオペレーションのうちの一のオペレーションを含む、請求項9に記載の装置。
  16. 一のトランザクション内の複数のオペレーションを実行する実行ユニットと、
    前記実行ユニットに結合され、複数のキャッシュラインを含むキャッシュと、
    前記一のトランザクション内の前記複数のオペレーションのうちの一のオペレーションに関連するオーバーフローイベントに呼応して、グローバルオーバーフローテーブルのベースアドレスの表示を格納するベースアドレスレジスタと、
    を有するプロセッサを含む、装置。
  17. 前記グローバルオーバーフローテーブルは、前記複数のオペレーションのうちの前記一のオペレーションによって参照される、前記複数のキャッシュラインのうちの一のキャッシュラインに関連付けられたエントリを格納し、
    前記エントリは、前記一のキャッシュラインに関連付けられた物理アドレスと、トランザクションステート情報とを有する、請求項16に記載の装置。
  18. 前記トランザクションステート情報は、前記一のオペレーションによって参照される前記一のキャッシュラインに関連付けられた第1のビットのステート及び第2のビットのステートを含み、
    前記第1のビットは、前記一のキャッシュラインからの読出しを追跡し、
    前記第2のビットは、前記一のキャッシュラインへの書込みを追跡する、請求項17に記載の装置。
  19. 前記エントリは更に、前記一のキャッシュラインが変更ステートにある場合に、前記一のキャッシュラインに関連付けられたデータエレメントのコピーを有する、請求項18に記載の装置。
  20. 前記エントリは更に、オペレーティングシステム(OS)コントロールフィールドを有する、請求項18に記載の装置。
  21. オーバーフローテーブルは更に、前記オーバーフローテーブルにおける次のページの物理アドレスを格納する、請求項16に記載の装置。
  22. トランザクションを実行する実行モジュールと、
    前記実行モジュールに結合され、複数のブロックを有し、前記複数のブロックのうちの一のブロックは、前記トランザクションの実行中における前記ブロックへのアクセスを追跡する第1のビット及び第2のビットに関連付けられる、メモリと、
    オーバーフローフラグを格納する第1の格納エレメントと、
    前記オーバーフローフラグがセットされている場合に、グローバルオーバーフローテーブルのベースアドレスを格納する第2の格納エレメントと、
    を含み、
    前記オーバーフローフラグは、前記メモリへの現在のアクセスが前記一のブロックを退避させることであり、且つ、前記第1のビット又は前記第2のビットが前記トランザクションの実行中における前記ブロックへの前のアクセスを追跡した場合に、前記現在のアクセスが行われると、セットされる、装置。
  23. トランザクションの実行中における前記ブロックへのアクセスを追跡する前記第1のビット及び前記第2のビットは、
    前記トランザクションの実行中に前記ブロックからのロードがあると、前記第1のビットをセットするロジックと、
    前記トランザクションの実行中に前記ブロックへのストアがあると、前記第2のビットをセットするロジックと、
    前記トランザクションの実行中に前記第1のビットがセットされていた場合に、前記トランザクションをコミットして前記第1のビット及び前記第2のビットをクリアにするロジックと、
    を含む、請求項22に記載の装置。
  24. 前記グローバルオーバーフローテーブルは、前記グローバルオーバーフロービットがセットされている場合に、前記ブロックに関連付けられたエントリを格納し、
    前記エントリは、
    前記一のブロックに関連付けられた物理アドレスと
    前記ブロックが第1のステートにある場合に、前記ブロックに関連付けられたデータエレメントと、
    前記第1のビットのロジカル値と、
    前記第2のビットのロジカル値と、
    オペレーティングシステム(OS)コントロールフィールドと、
    を含む、請求項23に記載の装置。
  25. 前記メモリは、キャッシュであり、
    前記第1のステートは、変更ステートである、請求項24に記載の装置。
  26. 前記オーバーフローフラグ及び前記ベースアドレスは、マシン固有レジスタ(MSR)内に格納される、請求項22に記載の装置。
  27. 前記第1の格納エレメントは、オーバーフローレジスタであり、
    前記第2の格納エレメントは、ベースアドレスレジスタである、請求項22に記載の装置。
  28. 前記オーバーフローフラグは、一のオーバーフロービットであり、
    前記メモリは、キャッシュメモリであり、
    前記グローバルオーバーフローテーブルの前記ベースアドレスは、メモリ階層において、前記キャッシュメモリより上位のメモリ内の物理ベースアドレスである、請求項22に記載の装置。
  29. トランザクションを実行する実行ユニットと、前記実行ユニットに結合され、複数のラインを有し、各ラインは、前記トランザクションの実行中におけるアクセスを追跡する対応トランザクション追跡フィールドを有する、トランザクショナルメモリ(TM)と、前記トランザクションの実行中に発生するオーバーフローイベントに呼応して、前記TMの仮想化をサポートするオーバーフローロジックとを有するマイクロプロセッサと、
    前記仮想化されたTMを格納する、メモリ階層において前記TMより上位の第2のメモリと、
    を含むシステム。
  30. 前記TMの仮想化は、前記トランザクションのステートをグローバルオーバーフローテーブル内に保存することであり、
    前記第2のメモリは、前記グローバルオーバーフローテーブルを格納する、請求項29に記載のシステム。
  31. 前記オーバーフローロジックは、
    前記トランザクションの実行中に発生する前記オーバーフローイベントに呼応してセットされる一のオーバーフロービットを格納する第1のレジスタと、
    前記システムメモリ内の前記グローバルオーバーフローテーブルの物理ベースアドレスを格納する第2のレジスタと、
    を含む、請求項30に記載のシステム。
  32. 前記第2のメモリ内の前記グローバルオーバーフローテーブルは、複数のページを有し、
    前記複数のページの各ページは、前記グローバルオーバーフローテーブルの次のページ用の次の物理ベースアドレスを格納する、請求項31に記載のシステム。
  33. 前記TMは、キャッシュメモリであり、
    前記第2のメモリは、システムメモリであり、
    オーバーフローイベントは、前記複数のキャッシュラインのうちの退避させるべき一のキャッシュラインを、前記対応トランザクション追跡フィールドが、前記トランザクションの実行中における前記一のキャッシュラインへのアクセスを前に追跡した場合に、選択することである、請求項31に記載のシステム。
  34. 退避させるべき前記複数のキャッシュラインのうちの一のキャッシュラインを選択することは、キャッシュコントローラによって行われ、
    前記対応トランザクション追跡フィールドが、前記トランザクションの実行中における前記一のキャッシュラインへのアクセスを前に追跡した場合に、前記オーバーフロービットを、退避させるべく前記複数のキャッシュラインのうちの一のキャッシュラインを選択することに基づいてセットすることは、
    前記対応トランザクション追跡フィールドが、前記トランザクションの実行中における前記キャッシュラインへのアクセスを前に追跡した場合に、インタラプトを生成することと、
    前記インタラプトを処理すべく呼び出されたハンドラを用いて前記オーバーフロービットをセットすることと、
    を含む、請求項33に記載のシステム。
  35. トランザクションの一部として実行され、トランザクショナルメモリ内のメモリラインを参照するオペレーションに関連するオーバーフローイベントを検出することと、
    オーバーフロービットが現在セットされていない場合に、前記オーバーフローイベントに呼応して前記オーバーフロービットをセットすることと、
    前記オーバーフロービットがセットされたことに呼応して、前記トランザクショナルメモリを第2のメモリに拡張することと、
    を含む方法。
  36. 前記オーバーフロービットがセットされたことに呼応して、前記トランザクショナルメモリを第2のメモリに拡張することは、
    前記オーバーフロービットがセットされたことに呼応して、前記トランザクションのステートをグローバルオーバーフローテーブル内に格納することを含む、請求項35に記載の方法。
  37. トランザクションの一部として実行されるオペレーションに関連するオーバーフローイベントを検出することは、
    退避させるべく前記メモリラインを選択することと、
    前記メモリラインに関連付けられたアクセス追跡フィールドから、前記メモリラインが前記トランザクションの実行中に前にアクセスされたか否かを判断することと、
    前記メモリラインが前記トランザクションの実行中に前にアクセスされたと判断される場合に、オーバーフローイベントを検出することと、
    を含む、請求項35に記載の方法。
  38. 前記オーバーフロービットは、複数のコアによって可視であるマシン固有レジスタ(MSR)内に格納される、請求項35に記載の方法。
  39. 前記トランザクションの前記ステートを前記グローバルオーバーフローテーブル内に格納することは、前記グローバルオーバーフローテーブルにエントリを書込むことを含み、
    前記エントリは、
    前記メモリラインに関連付けられた物理アドレスと、
    前記トランザクションの実行中における前記メモリラインからのロードを追跡する第1の追跡フィールドのステートと、
    前記トランザクションの実行中における前記メモリラインへのストアを追跡する第2の追跡フィールドのステートと、
    前記メモリラインが変更ステートにある場合に、前記物理アドレスに関連付けられたデータエレメントと、
    を含む、請求項36に記載の方法。
  40. 一のトランザクションにまとめられた複数のオペレーションのうちの一のオペレーションを実行することと、
    前記一のオペレーションに基づいて、キャッシュ内の退避させるべきキャッシュラインを選択することと、
    前記選択されたキャッシュラインが、前記一のトランザクションのペンディング中において前にアクセスされている場合に、
    グローバルオーバーフロービットが現在セットされていない場合に前記グローバルオーバーフロービットをセットすることと、
    前記一のトランザクションに関連付けられたステート情報を格納するグローバルオーバーフローテーブル用の第1のページが現在割り当てられていない場合に、メモリの前記第1のページを前記グローバルオーバーフローテーブル用の第2のメモリ内に割り当てることと、
    前記グローバルオーバーフローテーブル用の前記第1のページが割り当てられると、前記システムメモリ内の前記第1のページのベースアドレスをベースアドレスレジスタに書込むことと、
    を含む、方法。
  41. 前記選択されたキャッシュラインが、前記トランザクションのペンディング中において前にアクセスされている場合に、インタラプトを生成することと、
    前記インタラプトを、ハンドラによって処理することと、
    を含み、
    前記グローバルオーバーフロービットは、前記インタラプトの前記処理に基づいてセットされる、請求項40に記載の方法。
  42. 前記トランザクションに関連付けられたステート情報は、前記トランザクションのペンディング中において前記キャッシュラインへのアクセスを追跡するアクセス追跡フィールドのステートを有する、請求項41に記載の方法。
  43. 前記グローバルオーバーフローテーブルは更に、
    前記キャッシュラインに関連付けられた物理アドレスと、
    オペレーティングシステム(OS)コントロールフィールド情報と、
    を格納する、請求項42に記載の方法。
  44. 前記OSは、前記インタラプトに基づいて、メモリの前記第1のページを前記第2のメモリ内に割り当てる、請求項43に記載の方法。
  45. オーバーフローページフォルトが発生し、且つ、少なくとも前記第1のページが、前記グローバルオーバーフローテーブルに現在割り当てられている場合に、前記グローバルオーバーフローテーブル用の前記第2のメモリ内に追加のページを割り当てることと、
    前記第2のメモリ内の前記追加のページの追加のベースアドレスを、前記第2のメモリ内の前のページに書込むことと、
    を更に含み、
    前記前のページは、前記グローバルオーバーフローテーブルにおいて前記追加のページに論理的に先行する、請求項40に記載の方法。
JP2009511265A 2006-06-30 2007-06-20 仮想化されたトランザクショナルメモリのグローバルオーバーフロー方法 Expired - Fee Related JP5366802B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/479,902 2006-06-30
US11/479,902 US20080005504A1 (en) 2006-06-30 2006-06-30 Global overflow method for virtualized transactional memory
PCT/US2007/071711 WO2008005687A2 (en) 2006-06-30 2007-06-20 Global overflow method for virtualized transactional memory

Publications (2)

Publication Number Publication Date
JP2009537053A true JP2009537053A (ja) 2009-10-22
JP5366802B2 JP5366802B2 (ja) 2013-12-11

Family

ID=38878245

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009511265A Expired - Fee Related JP5366802B2 (ja) 2006-06-30 2007-06-20 仮想化されたトランザクショナルメモリのグローバルオーバーフロー方法

Country Status (7)

Country Link
US (1) US20080005504A1 (ja)
JP (1) JP5366802B2 (ja)
KR (1) KR101025354B1 (ja)
CN (1) CN101097544B (ja)
DE (2) DE112007001171T5 (ja)
TW (1) TWI397813B (ja)
WO (1) WO2008005687A2 (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012514254A (ja) * 2008-12-30 2012-06-21 インテル・コーポレーション トランザクショナルメモリシステム内でのハードウェア属性のメモリモデル
JP2014112406A (ja) * 2008-12-30 2014-06-19 Intel Corp トランザクショナルメモリ(tm)システムにおける読み出し及び書き込み監視属性
KR20140113605A (ko) * 2013-03-15 2014-09-24 인텔 코오퍼레이션 영구 저장소로의 라이트백을 요구하는 비 트랜잭션 코드 영역의 시작과 끝을 마킹하는 명령어들
JP2016532233A (ja) * 2014-10-03 2016-10-13 インテル・コーポレーション アドレスへの書き込みに対する監視命令を実行するスケーラブル機構
US10705961B2 (en) 2013-09-27 2020-07-07 Intel Corporation Scalably mechanism to implement an instruction that monitors for writes to an address

Families Citing this family (95)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8190859B2 (en) * 2006-11-13 2012-05-29 Intel Corporation Critical section detection and prediction mechanism for hardware lock elision
US7802136B2 (en) * 2006-12-28 2010-09-21 Intel Corporation Compiler technique for efficient register checkpointing to support transaction roll-back
US8132158B2 (en) * 2006-12-28 2012-03-06 Cheng Wang Mechanism for software transactional memory commit/abort in unmanaged runtime environment
US8719807B2 (en) * 2006-12-28 2014-05-06 Intel Corporation Handling precompiled binaries in a hardware accelerated software transactional memory system
US8185698B2 (en) * 2007-04-09 2012-05-22 Bratin Saha Hardware acceleration of a write-buffering software transactional memory
US9280397B2 (en) * 2007-06-27 2016-03-08 Intel Corporation Using buffered stores or monitoring to filter redundant transactional accesses and mechanisms for mapping data to buffered metadata
US8140773B2 (en) 2007-06-27 2012-03-20 Bratin Saha Using ephemeral stores for fine-grained conflict detection in a hardware accelerated STM
US8990527B1 (en) * 2007-06-29 2015-03-24 Emc Corporation Data migration with source device reuse
US7620860B2 (en) * 2007-09-07 2009-11-17 Dell Products, Lp System and method of dynamically mapping out faulty memory areas
US8719555B2 (en) * 2008-01-31 2014-05-06 Arm Norway As Method for overcoming livelock in a multi-threaded system
US8719553B2 (en) * 2008-01-31 2014-05-06 Arm Norway As Method for re-circulating a fragment through a rendering pipeline
US8930644B2 (en) 2008-05-02 2015-01-06 Xilinx, Inc. Configurable transactional memory for synchronizing transactions
CN101587447B (zh) * 2008-05-23 2013-03-27 国际商业机器公司 基于预测的事务执行系统和方法
JP2011529603A (ja) * 2008-07-28 2011-12-08 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド バーチャル化可能な高度な同期機構
CN101739298B (zh) * 2008-11-27 2013-07-31 国际商业机器公司 共享缓存管理方法和系统
US8799582B2 (en) * 2008-12-30 2014-08-05 Intel Corporation Extending cache coherency protocols to support locally buffered data
US9785462B2 (en) 2008-12-30 2017-10-10 Intel Corporation Registering a user-handler in hardware for transactional memory event handling
US8127057B2 (en) * 2009-08-13 2012-02-28 Advanced Micro Devices, Inc. Multi-level buffering of transactional data
US8473723B2 (en) * 2009-12-10 2013-06-25 International Business Machines Corporation Computer program product for managing processing resources
KR101639672B1 (ko) * 2010-01-05 2016-07-15 삼성전자주식회사 무한 트랜잭션 메모리 시스템 및 그 동작 방법
US8479053B2 (en) 2010-07-28 2013-07-02 Intel Corporation Processor with last branch record register storing transaction indicator
US9104690B2 (en) * 2011-01-27 2015-08-11 Micron Technology, Inc. Transactional memory
US9265004B2 (en) 2011-02-02 2016-02-16 Altair Semiconductor Ltd Intermittent shutoff of RF circuitry in wireless communication terminals
US9582275B2 (en) 2011-05-31 2017-02-28 Intel Corporation Method and apparatus for obtaining a call stack to an event of interest and analyzing the same
US9043363B2 (en) * 2011-06-03 2015-05-26 Oracle International Corporation System and method for performing memory management using hardware transactions
KR101540451B1 (ko) * 2011-12-27 2015-07-31 네이버 주식회사 사용자들간의 친밀도에 기초하여 친구의 친구를 추천하는 소셜 네트워크 서비스 시스템 및 방법
US9104681B2 (en) 2011-12-27 2015-08-11 Nhn Corporation Social network service system and method for recommending friend of friend based on intimacy between users
US9146871B2 (en) * 2011-12-28 2015-09-29 Intel Corporation Retrieval of previously accessed data in a multi-core processor
US8682877B2 (en) 2012-06-15 2014-03-25 International Business Machines Corporation Constrained transaction execution
US9436477B2 (en) 2012-06-15 2016-09-06 International Business Machines Corporation Transaction abort instruction
US9384004B2 (en) 2012-06-15 2016-07-05 International Business Machines Corporation Randomized testing within transactional execution
US9361115B2 (en) 2012-06-15 2016-06-07 International Business Machines Corporation Saving/restoring selected registers in transactional processing
US8880959B2 (en) 2012-06-15 2014-11-04 International Business Machines Corporation Transaction diagnostic block
US10437602B2 (en) 2012-06-15 2019-10-08 International Business Machines Corporation Program interruption filtering in transactional execution
US9367323B2 (en) 2012-06-15 2016-06-14 International Business Machines Corporation Processor assist facility
US9740549B2 (en) 2012-06-15 2017-08-22 International Business Machines Corporation Facilitating transaction completion subsequent to repeated aborts of the transaction
US9336046B2 (en) 2012-06-15 2016-05-10 International Business Machines Corporation Transaction abort processing
US9448796B2 (en) 2012-06-15 2016-09-20 International Business Machines Corporation Restricted instructions in transactional execution
US20130339680A1 (en) 2012-06-15 2013-12-19 International Business Machines Corporation Nontransactional store instruction
US8966324B2 (en) 2012-06-15 2015-02-24 International Business Machines Corporation Transactional execution branch indications
US9348642B2 (en) 2012-06-15 2016-05-24 International Business Machines Corporation Transaction begin/end instructions
US9317460B2 (en) 2012-06-15 2016-04-19 International Business Machines Corporation Program event recording within a transactional environment
US8688661B2 (en) 2012-06-15 2014-04-01 International Business Machines Corporation Transactional processing
US9442737B2 (en) 2012-06-15 2016-09-13 International Business Machines Corporation Restricting processing within a processor to facilitate transaction completion
US9772854B2 (en) 2012-06-15 2017-09-26 International Business Machines Corporation Selectively controlling instruction execution in transactional processing
CN102761487B (zh) * 2012-07-12 2016-04-27 国家计算机网络与信息安全管理中心 数据流处理方法和系统
US9411739B2 (en) * 2012-11-30 2016-08-09 Intel Corporation System, method and apparatus for improving transactional memory (TM) throughput using TM region indicators
US9182986B2 (en) 2012-12-29 2015-11-10 Intel Corporation Copy-on-write buffer for restoring program code from a speculative region to a non-speculative region
KR102219288B1 (ko) 2013-12-09 2021-02-23 삼성전자 주식회사 캐시 모드 및 메모리 모드 동작을 지원하는 메모리 장치 및 이의 동작 방법
US20150242216A1 (en) * 2014-02-27 2015-08-27 International Business Machines Corporation Committing hardware transactions that are about to run out of resource
US9489142B2 (en) 2014-06-26 2016-11-08 International Business Machines Corporation Transactional memory operations with read-only atomicity
US9495108B2 (en) 2014-06-26 2016-11-15 International Business Machines Corporation Transactional memory operations with write-only atomicity
US10025715B2 (en) 2014-06-27 2018-07-17 International Business Machines Corporation Conditional inclusion of data in a transactional memory read set
KR101819315B1 (ko) 2014-12-14 2018-01-16 비아 얼라이언스 세미컨덕터 씨오., 엘티디. 비순차 프로세서에서 작성 결합 메모리 공간 접근에 따라 로드 리플레이를 억제하기 위한 장치 및 방법
US10108421B2 (en) 2014-12-14 2018-10-23 Via Alliance Semiconductor Co., Ltd Mechanism to preclude shared ram-dependent load replays in an out-of-order processor
WO2016097791A1 (en) 2014-12-14 2016-06-23 Via Alliance Semiconductor Co., Ltd. Apparatus and method for programmable load replay preclusion
JP6286066B2 (ja) 2014-12-14 2018-02-28 ヴィア アライアンス セミコンダクター カンパニー リミテッド アウトオブオーダープロセッサでのロードリプレイを低減する節電メカニズム
US10127046B2 (en) 2014-12-14 2018-11-13 Via Alliance Semiconductor Co., Ltd. Mechanism to preclude uncacheable-dependent load replays in out-of-order processor
WO2016097804A1 (en) 2014-12-14 2016-06-23 Via Alliance Semiconductor Co., Ltd. Programmable load replay precluding mechanism
WO2016097786A1 (en) 2014-12-14 2016-06-23 Via Alliance Semiconductor Co., Ltd. Mechanism to preclude load replays dependent on page walks in out-of-order processor
US10083038B2 (en) 2014-12-14 2018-09-25 Via Alliance Semiconductor Co., Ltd Mechanism to preclude load replays dependent on page walks in an out-of-order processor
US10175984B2 (en) 2014-12-14 2019-01-08 Via Alliance Semiconductor Co., Ltd Apparatus and method to preclude non-core cache-dependent load replays in an out-of-order processor
US10108428B2 (en) 2014-12-14 2018-10-23 Via Alliance Semiconductor Co., Ltd Mechanism to preclude load replays dependent on long load cycles in an out-of-order processor
US10089112B2 (en) 2014-12-14 2018-10-02 Via Alliance Semiconductor Co., Ltd Mechanism to preclude load replays dependent on fuse array access in an out-of-order processor
US10133579B2 (en) 2014-12-14 2018-11-20 Via Alliance Semiconductor Co., Ltd. Mechanism to preclude uncacheable-dependent load replays in out-of-order processor
WO2016097811A1 (en) 2014-12-14 2016-06-23 Via Alliance Semiconductor Co., Ltd. Mechanism to preclude load replays dependent on fuse array access in out-of-order processor
US10228944B2 (en) 2014-12-14 2019-03-12 Via Alliance Semiconductor Co., Ltd. Apparatus and method for programmable load replay preclusion
US10114646B2 (en) 2014-12-14 2018-10-30 Via Alliance Semiconductor Co., Ltd Programmable load replay precluding mechanism
US10095514B2 (en) 2014-12-14 2018-10-09 Via Alliance Semiconductor Co., Ltd Mechanism to preclude I/O-dependent load replays in an out-of-order processor
US9804845B2 (en) 2014-12-14 2017-10-31 Via Alliance Semiconductor Co., Ltd. Apparatus and method to preclude X86 special bus cycle load replays in an out-of-order processor
US10120689B2 (en) 2014-12-14 2018-11-06 Via Alliance Semiconductor Co., Ltd Mechanism to preclude load replays dependent on off-die control element access in an out-of-order processor
US10146539B2 (en) 2014-12-14 2018-12-04 Via Alliance Semiconductor Co., Ltd. Load replay precluding mechanism
US10146540B2 (en) 2014-12-14 2018-12-04 Via Alliance Semiconductor Co., Ltd Apparatus and method to preclude load replays dependent on write combining memory space access in an out-of-order processor
US10108420B2 (en) 2014-12-14 2018-10-23 Via Alliance Semiconductor Co., Ltd Mechanism to preclude load replays dependent on long load cycles in an out-of-order processor
US10088881B2 (en) 2014-12-14 2018-10-02 Via Alliance Semiconductor Co., Ltd Mechanism to preclude I/O-dependent load replays in an out-of-order processor
WO2016097790A1 (en) 2014-12-14 2016-06-23 Via Alliance Semiconductor Co., Ltd. Apparatus and method to preclude non-core cache-dependent load replays in out-of-order processor
US10108430B2 (en) 2014-12-14 2018-10-23 Via Alliance Semiconductor Co., Ltd Mechanism to preclude load replays dependent on off-die control element access in an out-of-order processor
KR101822726B1 (ko) 2014-12-14 2018-01-26 비아 얼라이언스 세미컨덕터 씨오., 엘티디. 로드 리플레이를 억제하는 메커니즘
US10108429B2 (en) 2014-12-14 2018-10-23 Via Alliance Semiconductor Co., Ltd Mechanism to preclude shared RAM-dependent load replays in an out-of-order processor
WO2016097815A1 (en) 2014-12-14 2016-06-23 Via Alliance Semiconductor Co., Ltd. Apparatus and method to preclude x86 special bus cycle load replays in out-of-order processor
WO2016106738A1 (zh) * 2014-12-31 2016-07-07 华为技术有限公司 事务冲突检测方法、装置及计算机系统
US10204047B2 (en) * 2015-03-27 2019-02-12 Intel Corporation Memory controller for multi-level system memory with coherency unit
US10361940B2 (en) * 2015-10-02 2019-07-23 Hughes Network Systems, Llc Monitoring quality of service
US10095631B2 (en) * 2015-12-10 2018-10-09 Arm Limited System address map for hashing within a chip and between chips
US9514006B1 (en) 2015-12-16 2016-12-06 International Business Machines Corporation Transaction tracking within a microprocessor
CN107870872B (zh) * 2016-09-23 2021-04-02 伊姆西Ip控股有限责任公司 用于管理高速缓存的方法和设备
US10268413B2 (en) * 2017-01-27 2019-04-23 Samsung Electronics Co., Ltd. Overflow region memory management
US20190065373A1 (en) * 2017-08-30 2019-02-28 Micron Technology, Inc. Cache buffer
US11294743B2 (en) 2017-10-26 2022-04-05 SK Hynix Inc. Firmware event tracking for NAND-based storage devices, and methods and instruction sets for performing the same
US10877897B2 (en) * 2018-11-02 2020-12-29 Intel Corporation System, apparatus and method for multi-cacheline small object memory tagging
KR20200107101A (ko) 2019-03-06 2020-09-16 에스케이하이닉스 주식회사 주소 변환 기능을 갖는 메모리 관리 유닛, 이를 포함하는 데이터 처리 구조 및 주소 변환 정보 생성 방법
US11620377B2 (en) 2020-08-27 2023-04-04 Ventana Micro Systems Inc. Physically-tagged data cache memory that uses translation context to reduce likelihood that entries allocated during execution under one translation context are accessible during execution under another translation context
US11625479B2 (en) 2020-08-27 2023-04-11 Ventana Micro Systems Inc. Virtually-tagged data cache memory that uses translation context to make entries allocated during execution under one translation context inaccessible during execution under another translation context
KR102579320B1 (ko) 2023-04-19 2023-09-18 메티스엑스 주식회사 캐시 메모리 장치 및 이를 이용하는 캐시 스케줄링 구현 방법
KR102639415B1 (ko) * 2023-07-18 2024-02-23 메티스엑스 주식회사 프로세서에서 단일 트랜잭션으로부터 변환된 복수의 트랜잭션들을 처리하는 방법 및 이를 수행하기 위한 프로세서

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006107494A (ja) * 2004-09-30 2006-04-20 Intel Corp 仮想メモリを利用したトランザクショナルメモリ実行

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4761733A (en) * 1985-03-11 1988-08-02 Celerity Computing Direct-execution microprogrammable microprocessor system
US5428761A (en) * 1992-03-12 1995-06-27 Digital Equipment Corporation System for achieving atomic non-sequential multi-word operations in shared memory
JP4235753B2 (ja) * 1997-08-04 2009-03-11 東洋紡績株式会社 空気清浄用フィルタ濾材
JP3468041B2 (ja) * 1997-08-07 2003-11-17 三菱電機株式会社 浴水浄化ユニット
US6684398B2 (en) * 2000-05-31 2004-01-27 Sun Microsystems, Inc. Monitor entry and exit for a speculative thread during space and time dimensional execution
AU2002367955A1 (en) * 2001-06-26 2004-01-06 Sun Microsystems, Inc. Method and apparatus for facilitating speculative loads in a multiprocessor system
US6704841B2 (en) * 2001-06-26 2004-03-09 Sun Microsystems, Inc. Method and apparatus for facilitating speculative stores in a multiprocessor system
US7568023B2 (en) * 2002-12-24 2009-07-28 Hewlett-Packard Development Company, L.P. Method, system, and data structure for monitoring transaction performance in a managed computer network environment
TWI220733B (en) * 2003-02-07 2004-09-01 Ind Tech Res Inst System and a method for stack-caching method frames
US7269694B2 (en) * 2003-02-13 2007-09-11 Sun Microsystems, Inc. Selectively monitoring loads to support transactional program execution
US7269693B2 (en) * 2003-02-13 2007-09-11 Sun Microsystems, Inc. Selectively monitoring stores to support transactional program execution
US7269717B2 (en) * 2003-02-13 2007-09-11 Sun Microsystems, Inc. Method for reducing lock manipulation overhead during access to critical code sections
US6862664B2 (en) * 2003-02-13 2005-03-01 Sun Microsystems, Inc. Method and apparatus for avoiding locks by speculatively executing critical sections
US7089374B2 (en) * 2003-02-13 2006-08-08 Sun Microsystems, Inc. Selectively unmarking load-marked cache lines during transactional program execution
US7340569B2 (en) * 2004-02-10 2008-03-04 Wisconsin Alumni Research Foundation Computer architecture providing transactional, lock-free execution of lock-based programs
US7206903B1 (en) * 2004-07-20 2007-04-17 Sun Microsystems, Inc. Method and apparatus for releasing memory locations during transactional execution
US7856537B2 (en) * 2004-09-30 2010-12-21 Intel Corporation Hybrid hardware and software implementation of transactional memory access
US7984248B2 (en) * 2004-12-29 2011-07-19 Intel Corporation Transaction based shared data operations in a multiprocessor environment

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006107494A (ja) * 2004-09-30 2006-04-20 Intel Corp 仮想メモリを利用したトランザクショナルメモリ実行

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
JPN6011047518; C. Scott Ananian et al.: 'Unbounded Transactional Memory' Micro, IEEE vol.26, no.1, 200601, pp.59-69, IEEE Computer Society *
JPN6011047521; C. Scott Ananian et al.: 'Unbounded Transactional Memory' Proceedings of the 11th Int'l Symposium on High-Performance Computer Architecture (HPCA-11 2005) , 20050212, pp.316-327, IEEE Computer Society *

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012514254A (ja) * 2008-12-30 2012-06-21 インテル・コーポレーション トランザクショナルメモリシステム内でのハードウェア属性のメモリモデル
JP2014112406A (ja) * 2008-12-30 2014-06-19 Intel Corp トランザクショナルメモリ(tm)システムにおける読み出し及び書き込み監視属性
KR20140113605A (ko) * 2013-03-15 2014-09-24 인텔 코오퍼레이션 영구 저장소로의 라이트백을 요구하는 비 트랜잭션 코드 영역의 시작과 끝을 마킹하는 명령어들
JP2014182836A (ja) * 2013-03-15 2014-09-29 Intel Corp 永続記憶装置へのライトバックを必要とする非トランザクションコード領域の先頭および終端を指し示す命令
JP2016129041A (ja) * 2013-03-15 2016-07-14 インテル・コーポレーション 永続記憶装置へのライトバックを必要とする非トランザクションコード領域の先頭および終端を指し示す命令
KR101673280B1 (ko) 2013-03-15 2016-11-07 인텔 코포레이션 영구 저장소로의 라이트백을 요구하는 비 트랜잭션 코드 영역의 시작과 끝을 마킹하는 명령어들
US9547594B2 (en) 2013-03-15 2017-01-17 Intel Corporation Instructions to mark beginning and end of non transactional code region requiring write back to persistent storage
JP2017130229A (ja) * 2013-03-15 2017-07-27 インテル・コーポレーション 永続記憶装置へのライトバックを必要とする非トランザクションコード領域の先頭および終端を指し示す命令
US9817758B2 (en) 2013-03-15 2017-11-14 Intel Corporation Instructions to mark beginning and end of non transactional code region requiring write back to persistent storage
US10705961B2 (en) 2013-09-27 2020-07-07 Intel Corporation Scalably mechanism to implement an instruction that monitors for writes to an address
JP2016532233A (ja) * 2014-10-03 2016-10-13 インテル・コーポレーション アドレスへの書き込みに対する監視命令を実行するスケーラブル機構

Also Published As

Publication number Publication date
DE202007019502U1 (de) 2013-02-18
WO2008005687A3 (en) 2008-02-21
WO2008005687A2 (en) 2008-01-10
TWI397813B (zh) 2013-06-01
CN101097544A (zh) 2008-01-02
TW200817894A (en) 2008-04-16
DE112007001171T5 (de) 2009-04-30
KR101025354B1 (ko) 2011-03-28
CN101097544B (zh) 2013-05-08
KR20090025295A (ko) 2009-03-10
JP5366802B2 (ja) 2013-12-11
US20080005504A1 (en) 2008-01-03

Similar Documents

Publication Publication Date Title
JP5366802B2 (ja) 仮想化されたトランザクショナルメモリのグローバルオーバーフロー方法
JP6342970B2 (ja) トランザクショナルメモリ(tm)システムにおける読み出し及び書き込み監視属性
JP5451776B2 (ja) ハードウェアフィールドにロッシーなメタデータを保持するためのメタフィジカルアドレス空間
JP5860450B2 (ja) ローカルにバッファリングされたデータをサポートするためのキャッシュコヒーレンスプロトコルの拡張
US8688951B2 (en) Operating system virtual memory management for hardware transactional memory
JP5416223B2 (ja) トランザクショナルメモリシステム内でのハードウェア属性のメモリモデル
US20180011748A1 (en) Post-retire scheme for tracking tentative accesses during transactional execution
CN107220032B (zh) 无消歧乱序加载存储队列
US9575754B2 (en) Zero cycle move
CN107748673B (zh) 包括虚拟加载存储队列的处理器和系统
US20150205605A1 (en) Load store buffer agnostic to threads implementing forwarding from different threads based on store seniority
US20150100766A1 (en) Reordered speculative instruction sequences with a disambiguation-free out of order load store queue
US20180189115A1 (en) Method and system for implementing recovery from speculative forwarding miss-predictions/errors resulting from load store reordering and optimization
US9740623B2 (en) Object liveness tracking for use in processing device cache
US20150095588A1 (en) Lock-based and synch-based method for out of order loads in a memory consistency model using shared memory resources
US20150100734A1 (en) Semaphore method and system with out of order loads in a memory consistency model that constitutes loads reading from memory in order
US7363435B1 (en) System and method for coherence prediction
CN111095203A (zh) 实时寄存器值的集群间通信
US20150095591A1 (en) Method and system for filtering the stores to prevent all stores from having to snoop check against all words of a cache
US20080104335A1 (en) Facilitating load reordering through cacheline marking

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110913

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20111213

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20111220

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120113

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20120424

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120824

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20120827

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20120918

A912 Re-examination (zenchi) completed and case transferred to appeal board

Free format text: JAPANESE INTERMEDIATE CODE: A912

Effective date: 20121019

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20130605

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20130610

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130910

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees