JP2017073146A - トランザクショナルメモリ(tm)システムにおける読み出し及び書き込み監視属性 - Google Patents

トランザクショナルメモリ(tm)システムにおける読み出し及び書き込み監視属性 Download PDF

Info

Publication number
JP2017073146A
JP2017073146A JP2016217481A JP2016217481A JP2017073146A JP 2017073146 A JP2017073146 A JP 2017073146A JP 2016217481 A JP2016217481 A JP 2016217481A JP 2016217481 A JP2016217481 A JP 2016217481A JP 2017073146 A JP2017073146 A JP 2017073146A
Authority
JP
Japan
Prior art keywords
memory access
cache
memory
access operation
state
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
JP2016217481A
Other languages
English (en)
Other versions
JP6342970B2 (ja
Inventor
シェファー、ガッド
Shaeffer Gad
ライキン、シュロモ
Raikin Shlomo
バシン、ヴァディム
Bassin Vadim
サデ、ラナン
Sade Raanan
コーエン、ユード
Cohen Ehud
マーグリス、オレグ
Margulis Oleg
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 JP2017073146A publication Critical patent/JP2017073146A/ja
Application granted granted Critical
Publication of JP6342970B2 publication Critical patent/JP6342970B2/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
    • 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
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • 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/084Multiuser, multiprocessor or multiprocessing cache systems with a shared cache

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)

Abstract

【課題】トランザクション的実行をサポートするべく、ハードウェアにおけるメモリアクセスを監視するための方法及び装置を提供する。【解決手段】データ項目を参照するメモリアクセスオペレーションを監視すべきかを決定する段階と、キャッシュの複数のラインにわたってデータ項目をキャッシュする段階とを備える。更に、メモリアクセスオペレーションを監視すべきとの決定に応答して、キャッシュのラインとは非整列のデータ項目に関連付けられる属性をキャッシュのライン単位で動的に割り当てる段階と、メモリアクセスオペレーションの種類と関連付けられたアクセス状態を表すように、属性を更新する段階と、を備える。【選択図】図3

Description

本発明は、プロセッサの実行に関し、特に、命令グループの実行に関する。
[関連出願]
本願は、以下に示す特許出願に関連する。2008年12月30日出願、代理人整理番号P29132、米国出願番号12/346,543号明細書、発明者Gad Sheaffer他"Extending Cache Coherency Protocols to Support Locally Buffered Data(ローカルにバッファされたデータをサポートするための、拡張キャッシュコヒーレンシプロトコル)"、2008年12月30日出願、代理人整理番号P29131、米国出願番号12/346,539号明細書、発明者Gad Sheaffer他"Memory Model for Hardware Attributes Within a Transactional Memory System(トランザクションナルメモリシステム内における、ハードウェア属性のためのメモリモデル)"、2008年12月30日出願、代理人整理番号P29129、米国出願番号12/346,518号明細書、発明者Gad Sheaffer他"Registering a User-Handler in Hardware for Transactional Memory Event Handling(トランザクションナルメモリイベント取り扱いのための、ユーザーハンドラのハードウェアへの登録)"、2008年12月30日出願、代理人整理番号P29128、米国出願番号12/346,500号明細書、発明者Gad Sheaffer他"Metaphysical Address Space for Holding Lossy Meta-data in Hardware(ロッシーなメタデータをハードウェアに保持するためのメタフィジカルアドレス空間)"。
半導体プロセス及びロジック設計の技術の発展に伴い、より多くの数のロジックを集積回路(IC)デバイスに組み込むことができるようになってきた。その結果、コンピュータシステム構成は、1つのシステムに1つのIC又は複数のICが設けられていた構成から、複数のコア及び複数の論理プロセッサが個々のICに搭載される構成へと進化を遂げた。典型的なプロセッサ又はICは、1つのプロセッサダイを含み、プロセッサダイは、1つ以上のコア又は論理プロセッサを含む。
コア及び論理プロセッサが数多くICに設けられるようになり、より多くのソフトウェアスレッドを並行に処理できるようになった。しかしながら、同時に実行されるソフトウェアスレッドの数が増加すると、複数のソフトウェアスレッド間で共有されるデータの同期の問題が発生する。複数のコア又は複数の論理プロセッサシステムにおいて、共有データにアクセスするためのよく知られた解決策としては、共有データに対する複数のアクセスに対して、相互排除(排他制御)を保証するロックの使用がある。しかしながら、複数のソフトウェアスレッドを実行する能力が高まり、偽り競合及び実行の直列化につながる可能性が高くなっている。
例えば、共有データを保持するハッシュテーブルを考えてみる。ロックシステムの場合、プログラマーは、ハッシュテーブル全体をロックし、1つのスレッドが全ハッシュテーブルにアクセスできるようにする。しかしながらこの構成では、他のスレッドは、ロックが解除されるまでハッシュテーブルのいかなるエントリにもアクセスできなくなることから、他のスレッドのスループット及び性能には、悪影響となる可能性がある。別の構成として、ハッシュテーブルのエントリそれぞれをロックすることが考えられる。しかしながら、この単純な例から、大きな規模のプログラムの場合について推定すると、ロック競合、直列化、細分化された同期化及びデッドロック回避の複雑性は、プログロマにとって非常に煩雑な仕事となる。
最近のデータ同期技術の別の例として、トランザクショナルメモリ(TM)の使用が含まれる。トランザクションの実行は、複数のマイクロオペレーション、処理又は命令のグループを実行することを含む。上記の例では、2つのスレッドが共にハッシュテーブル内で実行され、これらのメモリアクセスが、監視/追跡される。2つのスレッドが共に、同じエントリにアクセス又は同じエントリを変更する場合には、データの有効性を確保するために、競合解消が行われる。ある種のトランザクション実行は、ソフトウェア・トランザクショナル・メモリ(STM)を含み、この場合、メモリアクセス、競合解消、停止(abort)タスク、及びその他のトランザクションタスクが、多くの場合、ハードウェアのサポート無しで、ソフトウェアで実行される。
強固に不可分なソフトウェア・トランザクショナル・メモリ(STM)では、トランザクション的メモリオペレーションと非トランザクション的メモリオペレーションとの間の実行時間の衝突が発生しないようにするため、コンパイラは、各非トランザクション的メモリオペレーションを、1つのオペレーショントランザクションとして扱う。すなわち、トランザクション的障壁が、トランザクション的メモリアクセスと非トランザクション的メモリアクセスとの間に挿入され、トランザクションを互いに分離し、また非トランザクション的メモリアクセスを分離している。しかしながら、トランザクション的及び非トランザクション的メモリアクセスのそれぞれにおいて、トランザクション的障壁を実行するのは、高価及び複雑になる可能性がある。
別の種類のトランザクション実行は、ハードウェア・トランザクショナル・メモリ(HTM)を含み、この場合、アクセス追跡、競合解消及びその他のトランザクションタスクをサポートするのにハードウェアが含まれる。しかしながら、これまでのところ、トランザクション実行をサポートすることを試みたハードウェアは、例えば、あらゆるデータ粒度レベルにおけるアクセス追跡及び競合検出といったソフトウェアトランザクションの有益な点を取り込めていない。
本発明は、以下、例示のために記載されており、添付の図面によって限定されることを意図していない。
複数のソフトウェアスレッドを並行に実行可能な複数の処理要素を含むプロセッサの一実施形態を示した図である。 トランザクション的実行をサポートするプロセッサにおける構造の一実施形態を示した図である。 メモリアクセス監視のための選択的関連付けモード、又はメモリアクセス監視のための非選択的関連付けモードで動作する方法を示したフローチャートの一実施形態を示した図である。 更なる監視されたキャッシュコヒーレンシ状態を含むキャッシュコヒーレンシ状態に対する状態遷移図の別の実施形態を示した図である。 メモリアクセスを監視する方法のフローチャートの一実施形態を示した図である。
以下、トランザクション実行のための特定のハードウェア構成例、アクセス監視の特定の種類及び実装、特定のキャッシュ実装、特定の種類のキャッシュコヒーレンシモデル、特定のデータ粒度、特定の種類のメモリアクセス及びロケーション等の様々な特定の詳細事項が記載されるが、これらは、本発明の深い理解を提供するためのものである。しかしながら、これらの特定の詳細事項を採用しなくとも、本発明を実行可能であることは、当業者にとって明らかである。また、ソフトウェアにおけるトランザクションのコーディング、トランザクションの境界設定、特定の及び代替のマルチコア及びマルチスレッドプロセッサ構成、特定のコンパイラ方法/実装、及びマイクロプロセッサの特定のオペレーション詳細等の、よく知られている要素又は方法については、本発明を不明瞭にすることを防ぐため、記載を省略する。
本明細書に記載する方法及び装置は、トランザクション実行をサポートするメモリアクセス監視を提供することに関する。具体的には、メモリアクセス監視の提供について、主に、メモリアドレスへのアクセスを追跡するキャッシュメモリ構造と関連付けられた監視を参照して説明する。図2及び図4に示されるキャッシュメモリと関連付けられた監視を特に参照して説明する。しかしながら、メモリアクセス監視を提供する方法及び装置は、これらに限定されず、データ要素へのメモリアクセスを追跡するあらゆる構造と関連して実装されてもよい。
図1には、複数のスレッドを並列して実行可能なプロセッサの一実施形態が示されている。プロセッサ100は、ハードウェアトランザクション実行のためのハードウェアサポートを含んでもよい。ハードウェアトランザクション実行と関連して、又は別に、プロセッサ100は、ソフトウェア・トランザクショナル・メモリ(STM)のハードウェア加速、STMの個別実行、又はこれらの組み合わせに対するハードウェアサポートを提供してもよく、例えば、ハイブリッド・トランザクショナル・メモリ(TM)システムを提供してもよい。プロセッサ100としては、マイクロプロセッサ、埋め込みプロセッサ、デジタル信号プロセッサ(DSP)、ネットワークプロセッサ、又はコードを実行する他のデバイスのようなあらゆるプロセッサが含まれる。図に示すように、プロセッサ100は、複数の処理要素を含む。
ある実施形態では、処理要素とは、スレッドユニット、プロセスユニット、コンテキスト、論理プロセッサ、ハードウェアスレッド、コア、及び/若しくは実行状態又はアーキテクチャ状態のようなプロセッサの状態を保持可能な他の要素のことを指す。すなわち、ある実施形態では、処理要素は、ソフトウェアスレッドのようなコード、OS、アプリケーション又はその他のコードに独立して関連付けることが可能なあらゆるハードウェアを指す。物理的プロセッサとは、典型的には、コア又はハードウェアスレッド等の他の処理要素を1以上含む集積回路(IC)のことを指す。
コアとは、多くの場合、少なくとも幾つかの専用実行リソースと関連付けられたアーキテクチャの状態がそれぞれ独立して保持される独立アーキテクチャ状態を保持可能なICに位置する論理を指す。一方コアに対して、ハードウェアスレッドとは、典型的には、独立して保持されている複数のアーキテクチャ状態が実行リソースへのアクセスを共有する独立アーキテクチャ状態を保持可能なICに位置する論理を指す。このように、あるリソースは共有され、他のリソースは1つのアーキテクチャ状態に占有されている場合には、ハードウェアスレッド及びコアという命名の境界線が重複することとなる。しかしながら、やはりコアとハードウェアとは、OSから見れば個別の論理プロセッサであり、OSは、各論理プロセッサに対して独立してオペレーションをスケジュールすることができる。
図1に示すように、物理プロセッサ100は、高レベルキャッシュ110へのアクセスを共有する2つのコア、すなわち、コア101及びコア102を含む。プロセッサ100は、非対称なコア、すなわち、異なる構成、機能ユニット及び/又はロジックを持ったコアを含んでもよいし、例示したような対称なコアを含んでもよい。コア102は、コア101と同様な構成を持つため、説明の重複を避け、以下にはその構成を詳細に記載しない。コア101は、2つのハードウェアスレッド101a及び101bを含み、コア102は、2つのハードウェアスレッド102a及び102bを含む。したがって、OSのようなソフトウェア実体は、プロセッサ100を4つの別個のプロセッサとして見なすこともでき、すなわち、4つのソフトウェアスレッドを並列に実行可能な4つのプロセッサ又は処理要素として見なすことができる。
第1のスレッドは、複数のアーキテクチャ状態レジスタ101aと関連付けられており、第2のスレッドは、複数のアーキテクチャ状態レジスタ101bと関連付けられており、第3のスレッドは、複数のアーキテクチャ状態レジスタ102aと関連付けられており、第4のスレッドは、複数のアーキテクチャ状態レジスタ102bと関連付けられている。図に示すように、複数のアーキテクチャ状態レジスタ101aは、複数のアーキテクチャ状態101bに複製されており、個々のアーキテクチャ状態/コンテキストは、論理プロセッサ101a及び論理プロセッサ101bに格納可能である。命令ポインタ及びリネーム割り当てロジック130におけるリネーム論理のようなその他の小さなリソースも、スレッド101a及びスレッド101bに対して複製されていてもよい。並べ替え(re‐order)/リタイアメントユニット135における並び換えバッファ、ILTB120、ロード/ストアバッファ及びキューのようなリソースは、領域割り当てを通じて共有されていてもよい。汎用内部レジスタ、ページ‐テーブルベースレジスタ、下位層データキャッシュ及びデータ‐TLB115、1以上の実行ユニット140、及びアウト・オブ・オーダーユニット135の部分のような他のリソースについては、完全に共有されていてもよい。
プロセッサ100は、多くの場合、完全に共有されている、領域割り当てを通じて共有されている、若しくは処理要素について占有の又は占有されている複数の他のリソースを含む。図1には、1つのプロセッサの例示的な複数の機能ユニット/リソースを持つプロセッサの純粋な例が示されている。プロセッサは、例示されている複数の機能ユニットのうち、幾つかを含んでもよいし、又は省略してもよく、図示しない他の既知の機能ユニット、論理又はファームウェアを含んでもよい。
図示するように、プロセッサ100は、プロセッサ100の外部のデバイス、例えば、システムメモリ175、チップセット、ノースブリッジ、又はその他のICとの間で通信を行うためのバスインターフェースモジュール105を含む。メモリ175は、プロセッサ100専用としてもよいし、システム内の他のデバイスと共有するとしてもよい。上位層に位置する又はより離れたところに位置するキャッシュ110は、上位層キャッシュ110から最近フェッチされた要素をキャッシュする。ここで、上位層又はより離れた位置とは、キャッシュレベルがより高い又は実行ユニットからより離れていることを指す。一実施形態では、上位層キャッシュ110は、第2レベルデータキャッシュである。上位層キャッシュ110はこれに限定されず、命令キャッシュに関連付けられてもよいし、命令キャッシュを含んでもよい。命令キャッシュの一種であるトレースキャッシュを、替わりに、デコーダ125の後に連結して、最近デコードされたトレースを記憶してもよい。モジュール120は、実行される/選択される分岐先を予測する分岐先バッファ(Branch Target Buffer:BTB)及び命令についてのアドレス変換エントリを記憶する命令変換バッファ(I‐TLB)を含む。
デコードモジュール125は、フェッチユニット120と連結され、フェッチされた要素をデコードする。ある実施形態では、プロセッサ100は、プロセッサ100で実行可能な命令を規定/特定する命令セットアーキテクチャ(ISA)と関連付けられている。ISAによって認識される機械コード命令は、一般的に、実行すべき命令又はオペレーションを参照する/特定するオペコード(opcode)と呼ばれる命令の一部を含む。
1つの例では、割り当て及びリネームブロック130は、命令処理結果を記憶するレジスタファイルのようなリソースをリザーブする割り当て部を含む。スレッド101a及び101bは、アウト・オブ・オーダー実行を行う能力を備え、割り当て及びリネームブロック130は、命令結果を追跡する記録バッファのように、他のリソースをリザーブする。ユニット130は、プログラム/命令参照レジスタを、プロセッサ100の他の内部レジスタにリネームするレジスタリネーマーを含んでもよい。並べ替え/リタイアメントユニット135は、アウト・オブ・オーダー実行及びアウト・オブ・オーダーで実行される順番が最後の方の命令のリタイアメントをサポートするために、上述のような並び換えバッファ、ロードバッファ、及び記憶バッファのような要素を含んでもよい。
ある実施形態では、スケジューラ及び実行ユニットブロック140は、実行ユニットに対して命令/オペレーションをスケジューリングするスケジューラユニットを含むとしてよい。例えば、浮動小数点命令は、利用可能な浮動小数点実行ユニットを持つ実行ユニットの一部にスケジュールされる。また、情報命令処理結果を記憶するために、実行ユニットに関連付けられたレジスタファイルが含まれている。実行ユニットの例としては、浮動小数点実行ユニット、整数実行ユニット、ジャンプ実行ユニット、ロード実行ユニット、記憶実行ユニット、及びその他の既知の実行ユニットが挙げられる。
下位層データキャッシュ及びデータ変換バッファ(D‐TLB)150は、実行ユニット140に接続されている。データキャッシュは、メモリコヒーレンシ状態で保持されているデータオペランドのような最近利用/処理されたものを、要素に記憶する。D‐TLBは、最近の仮想/線形アドレスから物理アドレスへの変換を記憶する。特別な例として、プロセッサは、物理メモリを複数の仮想ページに分割するためのページテーブル構造を持つとしてよい。
一実施形態において、プロセッサ100は、トランザクション的実行(transactional execution)を行う能力を有する。トランザクション、すなわち、コードのクリティカルな又は不可分な部分は、不可分グループとして実効される命令、オペレーション又はマイクロオペレーションのグループ化を含む。例えば、命令又はオペレーションは、トランザクション又はクリティカル部分の境界を定めるのに使用されてもよい。以下に詳細に記載する一実施形態において、これらの命令は、上述のデコーダのようなプロセッサ100のハードウェアによって認識可能な、例えば命令セットアーキテクチャ(ISA)のような命令セットの一部である。しばしば、高水準(ハイレベル)言語からハードウェアが認識可能なアセンブリ言語へと一旦コンパイルされた命令は、デコード段階においてデコードが認識するオペレーションコード(オペコード)又は命令の別の部分を含む。
一般的には、トランザクションが実行されている間は、メモリへのアップデートは、トランザクションがコミットされるまでは、グローバルに可視化されない。一例として、あるロケーションへのトランザクション的書き込みが、別のスレッドからの読み出しに応答して、ローカルスレッドに対して可視化されたとしても、トランザクション的書き込みを含むトランザクションがコミットされるまでは、書き込みデータは転送されない。トランザクションが処理中である間、メモリ内に書き込まれた又はメモリからロードされたデータ項目/要素が追跡されるが、これについては、以下に詳細に説明する。トランザクションがコミット点に到達し、そのトランザクションについて競合が検出されなかった場合には、トランザクションがコミットされ、トランザクションがグローバルに可視化される間に更新が行われる。
しかしながら、トランザクションが処理中に無効とされた場合には、トランザクションは中止され、更新をグローバルに可視化することなく、リスタートされる可能性がある。したがって、トランザクションの未決の状態という言葉は、本明細書では、実行が始まって、コミットされていない又は中止されていない、すなわち未決の状態であるトランザクションを指す。トランザクション的実行の実装例としては、ハードウェア・トランザクショナル・メモリ(HTM)システム、ソフトウェア・トランザクショナル・メモリ(STM)システム、及びこれらの組み合わせ、又はこれらのハイブリッドのシステムが含まれる。
ソフトウェア・トランザクショナル・メモリ(STM)システムは、多くの場合、アクセス追跡、競合解消、ソフトウェアにおける又は少なくとも一部がソフトウェアにおけるトランザクション的メモリタスクの実行を参照する。一実施形態において、プロセッサ100は、トランザクション的実行をサポートするプログラムコードをコンパイルするコンパイラを実行可能である。ここで、コンパイラは、オペレーション、呼び出し、関数及びトランザクションを実行可能とするその他のコードを挿入してもよい。
コンパイラは、多くの場合、プログラム又はプログラムのセットを含み、ソーステキスト/コードを、目的のテキスト/コードへと変換する。通常、プログラム/アプリケーションコードをコンパイラを使用してコンパイルする場合には、高水準プログラム言語コードを、低水準機械言語コード又はアセンブリ言語へ変換する複数の段階又はパスに分けて実行される。しかしながら、簡単なコンパイルには、単一パスのコンパイラを使用することもできる。コンパイラは、既知のコンパイル技術を利用して、字句解析、前処理、構文解析、意味解析、コード生成、コード変換及びコード最適化のような、既知のコンパイルオペレーションを実行してもよい。
大きなコンパイラは、多くの場合、複数の段階を含み、これらの複数の段階は、主に大きく分けて2つの段階に分けられる。(1)フロントエンド、すなわち、通常では、構文処理、意味処理及び幾つかの変換/最適化が実行される段階、(2)バックエンド、すなわち、通常では、解析、変換、最適化及びコード生成が実行される段階の2つである。コンパイラの中には、ミドルエンドと呼ばれる段階を有し、これは、フロントエンドとバックエンドのコンパイラとの間の境界を曖昧にした例である。挿入、関連付け、生成又はその他のコンパイラのオペレーションは、上述の段階又はパス、及びその他のコンパイラの段階又はパスのいずれかにおいて実行される。一例として、コンパイラは、1以上のコンパイルの段階に、トランザクション的オペレーション、呼び出し、関数等を挿入してもよく、例えば、呼び出し/オペレーションを、コンパイルのフロントエンド段階に挿入し、トランザクショナルメモリ変換段階の間に、呼び出し/オペレーションを低水準コードへと変換してもよい。
実行環境及びコンパイラの動的又は静的性質に関わらず、一実施形態において、コンパイラは、プログラムコードをコンパイルし、トランザクション実行を可能にする。このように、一実施形態において、プログラムコードの実行は、(1)メインプログラムコードをコンパイルして、トランザクション構造を維持する又はオペレーションに関連する他のトランザクションを実行するべく、動的又は静的にコンパイラプログラムを実行すること、(2)トランザクションオペレーション/呼び出しを含むメインプログラムコードを実行すること、(3)ライブラリのようなメインプログラムコードと関連付けられた他のプログラムコードの実行、(4)及びこれらの組み合わせ、を指す。
一実施形態において、プロセッサ100は、ハードウェア/ロジックを利用した、すなわち、ハードウェア・トランザクショナル・メモリ(HTM)システム内で、トランザクションの実行が可能である。HTMの実装に関しては、アーキテクチャ及びマイクロアーキテクチャの両側面において、数多くの特定の実装形態の詳細が存在するが、ここでは、本発明を不必要に曖昧にしてしまうのを回避するために、これらについて説明しない。一部の構造及び実装形態については、例示を目的として開示されている。これらの構造及び実装形態は、必ずしも必要とされず、異なる実装詳細を有する別の構造に拡張及び/又は置き換えられてもよい。
実装設計の選択肢の例として、HTMは、インプレース更新方式、又は書き込みバッファリング方式で、動作してもよい。インプレース更新方式のHTMでは、トランザクション的書き込みは、参照メモリアドレスに対して行われ、そこに保持されていたデータが変更される。変更されたデータは、外部の要求スレッドには提供されない、すなわち、データはグローバルに可視化されないが、ローカルのメモリの順位付けの目的によるローカルな読み出しに対しては提供される。また、すでに保持されているデータは、トランザクションが中止されたときに、そのデータを回復させ、トランザクションが開始される前のスレッドの状態を達成するために、多くの場合"ログ(記録)"されている。
例示のため、データキャッシュ150が、キャッシュ110及びシステムメモリ175のような高次のメモリからのデータを保持する一次データキャッシュを含むとする。データキャッシュ150へのトランザクション的書き込みが発生すると、一実施形態のライトバック・キャッシュにすでに保持されたデータ項目は、そのデータ項目を、高次のキャッシュ110へと書き戻す。あるいは、保持されていたデータが、プロセッサ内に又はプロセッサ100の外側に設けられた別のメモリにログ(記録)されてもよい。保持されていたデータ項目を記録した後、トランザクション的書き込みが実行されて、キャッシュ150内のデータ項目が更新される。ローカルスレッド101aのようなローカルスレッド、すなわち、トランザクション的書き込みと関連付けられたスレッドが、キャッシュ150における変更されたデータ項目から読み出しを行ってもよい。しかしながら、スレッド102bのような別のスレッドでは、トランザクション的書き込みを含むトランザクションがまだコミットされていない場合には、読み出し要求に応答して、変更されたデータではなく、記録されたデータが提供される。トランザクションがコミットされている場合には、記録されたデータは、無効化される又は無視される。トランザクションが中止された場合には、保持されていたデータが、有効なデータとしてリロードされる又はグローバルに特定される。
一方、書き込みバッファリング方式のHTMでは、すでに保持されているデータは、そのロケーションにそのまま残り、トランザクション的書き込みは、書き込みバッファにバッファされる。そして、スレッド102bのようなローカルスレッドが、トランザクション的に書き込まれたデータの読み出しを実行する場合には、変更されたデータが、書き込みバッファから転送される。当然の結果として、トランザクション的書き込みを含むトランザクションが完了していない状態で、外部のスレッドがデータの読み出しを要求した場合、元のロケーションに保持されているデータが供給される。さらに、トランザクションがコミットされると、変更されたデータが対応するメモリアドレスにコピーされ、一方、中断が発生した場合には、バッファされたデータは無視される。
上記で説明したように、ローカル処理要素及び別の処理要素により、データ項目に対するアクセス及び要求がなされる。安全機構を設けずに、これらのアクセスの一部を実行すると、無効データ及び無効な実行となってしまう場合がある、すなわち、読み出しを無効にするデータの書き込み、又は無効データの読み出しとなってしまう場合がある。したがって、プロセッサ100は、潜在的な競合を特定するための、データ項目からの及びデータ項目へのメモリアクセスを追跡又は監視するロジックを含んでもよい。
一実施形態において、プロセッサ100は、メモリアクセスを監視及び/又は追跡する読み出し及び書き込み監視部を含む。第1の例として、データ要素を保持する物理メモリ構造/ロケーションの粒度に限定されることを考慮せずに、監視部が、データ要素の粒度でのデータ要素へのメモリアクセスを監視する場合を考える。データ項目又はデータ要素は、ハードウェア、ソフトウェア又はこれらの組み合わせによって規定されるように、あらゆる粒度レベルでのデータを含んでもよい。
データ、データ要素、データ項目又はこれらを参照するものの例には、メモリアドレス、データオブジェクト、クラス、動的言語コードの種類フィールド、動的言語コードの種類、変数、オペランド、データ構造、及びメモリアドレスの間接的参照が含まれる。データの既知のグループは、データ要素又はデータ項目と呼ばれる場合がある。上記の例のうち、動的言語コードの種類フィールド、動的言語コードの種類といった2、3の要素が、動的言語コードのデータ構造を参照する。例えば、サンマイクロシステム社のJava(登録商標)のような動的言語コードは、強く定型化された言語である。各変数は、コンパイル時に理解される種類を有する。種類は、2つのカテゴリに分類され、1つは、プリミティブ型(例えば、int、floatのような論理式や数値)であり、もう1つは、参照型(クラス、インターフェース及びアレイ)である。参照型の値は、オブジェクトを参照する。Java(登録商標)では、複数フィールドから構成されるオブジェクトは、クラスインスタンス又はアレイである。クラスAのオブジェクトaの場合、タイプAのxのフィールドを指すのにA::xという表記が、クラスAのオブジェクトaのフィールドxを指すのにa.xという表記が慣例的に使用される。例えば、式は、a.x=a.y+a.zと表すことができ、これは、フィールドyとフィールドzがロードされて加算され、その結果が、フィールドxとして記載されることを意味する。
データ項目へのメモリアクセスの監視は、あらゆるレベルの粒度のデータで実行される。例えば、一実施形態では、データへのメモリアクセスは、タイプレベルで監視される。ここで、フィールドA::xへのトランザクション的書き込み、及びフィールドA::yの非トランザクション的ロードは、同じデータ項目、すなわちタイプA、へのアクセスとして監視される。別の実施形態においては、メモリアクセス監視/バッファリングは、フィールドレベルの粒度で実行される。ここで、A::xへのトランザクション的書き込み、及びフィールドA::yの非トランザクション的ロードは、別々のフィールドへの参照であるので、同じデータ項目へのアクセスとして監視されない。データ項目へのメモリアクセスを追跡するのに、別のデータ構造又はプログラミング技術を考えてもよい。例えば、クラスBのオブジェクトを指し示す、クラスAのオブジェクトのフィールドx及びy、すなわち、A::x及びA::yを仮定すると、これらは、新たに割り当てられたオブジェクトに対して初期化され、初期化された後は、二度と書き込まれることがない。一実施形態において、A::xによって示されるオブジェクトのフィールドB::zへのトランザクション的書き込みは、A::yによって示されるオブジェクトのフィールドB::zの非トランザクション的ロードに対して、同じデータ項目へのメモリアクセスとしては監視されない。これらの例から推測するに、監視装置は、あらゆるデータ粒度レベルでの監視を実行可能であると判断できる。
一実施形態において、監視装置は、それぞれ監視すべきと判断されたロード(読み込み)及びストア(格納)を追跡する読み出し監視部、及び書き込み監視部を含む。例えば、ハードウェア読み出し監視部及び書き込み監視部は、データ項目を保持するためのストレージ(記憶領域)構造の粒度に関わらず、少なくともデータ項目の粒度で、データ項目の制限付き監視を実行する。一実施形態において、データ項目の読み出し監視は、データ項目と関連付けられた読み出し属性を第1個数含む。同様に、データ項目の書き込み監視は、データ項目と関連付けられた書き込み属性を第2個数含む。読み出し属性の第1個数と、書き込み属性の第2個数は同じであってもよいし、異なる数の属性が含まれる構成であってもよい。
読み出し属性又は書き込み属性は、データ項目と関連付けられた状態又は情報を保持するための、あらゆるロジック、ファームウェア又は構造を含む。例えば、データ項目に対する属性は、ビットベクトルを含み、ビットベクトルにおける各ビットは、データ項目の属性を表す。データ項目の属性としては、例えば、トランザクション的にロードされた、トランザクション的書き込まれた、非トランザクション的にロードされた、非トランザクション的に書き込まれた、トランザクション的にロードされなかった、トランザクション的に書き込みされなかった、非トランザクション的にロードされなかった、非トランザクション的に書き込みされなかった、アクセス競合が検出された、アクセス競合が検出無し、読み出し要求、読み出し要求無し、書き込み要求、書き込み要求無し、オーナーシップ要求、オーナーシップ要求無し、又は、データ項目に関連付けられたその他の属性又は状態、又はデータ項目を保持するメモリロケーションが含まれる。
別の例として、データ項目に対する属性には、エンコードされた値が含まれる。例えば、状態としては、次のような4つの状態が挙げられる。(1)トランザクション的書き込み、(2)トランザクション的読み出し、(3)トランザクション的に書き込まれない、(4)トランザクション的に読み出されない。これら4つの状態は、2つの属性ビット、すなわち、00、01、11及び10の4つの2進値を利用してエンコードされる。これらの4つの状態は、監視される書き込み状態、監視される読み出し状態、監視されない書き込まれた状態、及び監視されない読み出された状態を含むでもよい。
上述したように、読み出し属性及び書き込み属性は、あらゆる既知の態様でデータ項目/要素と関連付けられてもよい。例えば、監視されるデータ項目の読み出し及び書き込みに対応する、読み出し及び書き込み属性を保持するのに、プロセッサ100内の一般的なストレージを使用してもよい。属性をデータ項目と関連付ける方法は、数多く存在し、全ての方法を詳細に説明することはできない。
第1の例として、属性は、キャッシュラインの複数バイトのサブセットと関連付けられる。例えば、キャッシュ150の1つのキャッシュラインの長さが64バイトであって、プロセッサ100は、8バイトセグメントでアクセス可能であるとする。この場合、属性は、例えば、2、4、8、16、32、64又は128バイトのデータといったように、あらゆる物理粒度の記憶領域と関連付けられていてもよく、また、キャッシュ150の一部分においては4バイト単位の物理記憶領域と、キャッシュ150の別の部分においては8バイト単位の物理記憶領域と関連付けるといったように、キャッシュ150の中で変化してもよい。
一実施形態において、物理的な記憶領域の境界とは関係なく、監視部/属性は、プロセッサ100における物理的記憶領域の粒度、すなわちキャッシュ150の一方又は両方及び属性記憶領域の粒度に関係なく、データ項目の粒度レベルで、データ項目の制限付き監視を実行する。例えば、キャッシュ150が、4バイトセグメントでアクセス可能な16バイトのラインを含む、すなわち、各キャッシュラインに、アクセス可能な4つのセグメントが含まれるとする。さらに、読み出し及び書き込み属性がそれぞれ、各16バイトラインの8バイトセグメントに関連付けられているとする。この場合、キャッシュは、4バイト単位のデータを読み出し及び書き込みすることができ、属性は、8バイト単位のデータを監視することができる。
またこの例において、監視されたロードは、キャッシュ150の2つのキャッシュの一部にわたる20バイトの大きさを有するデータ項目のロードとなる、すなわち、第1ラインの16バイトと第2ラインの最初の4バイトにわたるデータ項目のロードとなる。したがって、キャッシュ150の第1キャッシュラインの16バイトと関連付けられた読み出し属性は、監視されたロードが発生したことを示すべく、更新される。また、データ項目が占有するのは第2キャッシュラインのうちの4バイトのみであっても、キャッシュ150の第2キャッシュラインの最初の8バイトと関連付けられた読み出し属性は、同様に更新される。基本的には、この実施形態においては、データ項目の監視は、少なくともデータ項目の粒度レベルで提供されるが、完全なデータ項目の監視を確実にするために、より大きな粒度で監視を行う、すなわち、制限付き監視も考えられる。言い換えれば、データ項目の属性制限付き監視は、物理的な記憶領域の粒度の制限無しに行われる、又は、物理的記憶領域の粒度に起因して、大きいサイズのデータが含まれる場合であっても、データ項目が監視されることを確実にするために属性と関連付けられて行われる。反対に、属性が、キャッシュ150と比較して小さい粒度を提供する場合には、属性関連付けに基づくデータ項目を追跡する方が、キャッシュ150のアクセシビリティの粒度における監視よりも正確である可能性もある。
上記の例では、16バイトキャッシュラインの8バイト毎に監視を行うといったように、所定のサイズに対する属性/監視の静的な関連付けを仮定している。この関連付けは、単なる一例に過ぎず、より大きな又は小さな監視関連付け粒度を含むといったように、大幅に変更してもよい。別の実施形態では、属性は、データ項目のロード又は格納に伴い、属性のプールから動的に割り当てられる。この観点で、上述の例を再考する。監視されたロードを使用して、20バイトのデータ項目を読み込む時には、読み出し属性は、その時に、データ項目が読み出されたキャッシュ150の20バイトと動的に関連付けられる。ここで、データ項目の監視は、物理的記憶構造の粒度から真に切り離される。上記の両方の例において、下層の記憶構造、すなわちキャッシュ150の粒度に関係なく、データが監視部によって制限される。しかしながら、第1の例においては、キャッシュ150の一部と関連付けられる監視の静的粒度は、データが正しい監視によって制限されていることが確かであることを考慮に入れなければならない。それに対して、第2の例では、監視部は、データ項目の特定の粒度で動的に関連付けられる。
一実施形態において、プロセッサ100内の監視部は、第1モードでは、全てのメモリアクセスを監視する。例えば、トランザクションが実行されている時には、全てのトランザクション的メモリアクセスが監視される。また、別のモードでは、プロセッサ100は、メモリアクセスを選択的に監視可能であってもよい。メモリアクセスの選択的監視は、図3を参照して以下に詳述する。
一実施形態において、メモリアクセスオペレーションを監視するハードウェア監視部が、トランザクションの中止を要求する場合がある無効メモリアクセス検出のような、競合検出に用いられる。どのようにハードウェア監視又は属性の関連付けが実装されているかに関わらず、以下に詳細に説明するように、監視部のアクセス状態が競合検出ロジック、ファームウェア、ソフトウェア、又はこれらの組み合わせにより使用され、潜在的なメモリアクセス競合を検出してもよい。例示のため、キャッシュ150に保持されるデータ項目と関連付けられる読み出しハードウェア監視部が、データ項目がトランザクションによって予めロードされたことを示し、その後、別のスレッドによるデータ項目の書き込み要求が、キャッシュ150のキャッシュ制御ロジックによって受信されたとする。書き込み要求、及び読み出し監視部の現在の状態、すなわちトランザクション的ロードに基づいて、一実施形態ではキャッシュ制御ロジックに含まれる又は接続される競合ロジックが、潜在的な競合を検出する。潜在的な競合に応答して、ハードウェア、ソフトウェア、又はこれらの組み合わせにおいて、1以上のアクションを取ってもよい。図2を参照して、状態レジスタにビットを設定し、又は競合に応答してフラグを設定し、ビット又はフラグの設定に応答して潜在的な競合を扱うハンドラに制御を移譲することを含む例を詳細に説明する。
上記の例から推論されるように、一実施形態においては、属性は、データキャッシュ150のようなキャッシュメモリと関連付けられ、既存のコヒーレンシ及び通信/スヌーププロトコルを、ハードウェア監視部/属性と組み合わせて使用して、競合を検出してもよい。設計に基づいて、競合が発生する可能性のある、キャッシュコヒーレンシ要求、及び監視部/属性の状態の様々な組み合わせが示される。発生する可能性のある競合としては、例えば、監視したデータ項目のロードを示す上記のような読み出し監視、及びそのデータ項目への書き込み要求を示すスヌープが含まれる。反対に、データ項目への監視された書き込みを示す書き込み監視、及びそのデータ項目に対する読み出し要求を示すスヌープの組み合わせを、競合が発生する可能性があるとして考慮してもよい。一実施形態において、このようなアクセス要求と属性状態との組み合わせを検出するために、監視部及び/又は競合検出/報告ロジックのような検出/報告ロジックに、スヌープロジックを接続する。
一実施形態において、検出は、共通のコヒーレンシプロトコルの利用に限定されない。例えば、プロセッサの構造が、図1に示されている。ここでは、別々の物理的スレッドが、データキャッシュ150及び高次キャッシュ110の両方へのアクセスを共有する。したがって、監視部が、キャッシュ150と関連付けられ、キャッシュ150が、スレッド101aとスレッド101bとの間で共有される共有キャッシュである場合、スレッド101a及びスレッド101bからのアクセスに応答して、キャッシュ150に対する相互接続要求が生成されないことから、スレッド101a及び101b間での、潜在的な競合は適切に検出されない場合がある。
そこで、一実施形態において、監視部/属性は、処理エレメント単位を基本として複製される。この例において、属性は、スレッド毎に複製されてもよい、すなわち、同じ属性が、スレッド101a及び101bに対して複製される。属性の複製は、属性の1グループを、様々なスレッド識別子と結び付けることを含む場合があり、この場合、どのスレッドが、属性の1グループの状態と関連付けられているかを示す。一方、複製は、複製された属性の個別のグループを複数含む場合もあり、複製された属性はそれぞれ、1つのスレッドと関連付けられている。例えば、データ項目に対する複数の属性の第1セットは、スレッド101aと関連付けられ、同じデータ項目に対する複数の属性の第2セットは、スレッド101bと関連付けられている。
その結果、キャッシュ150へのアクセスを共有するスレッド101a及びスレッド101bの間の競合の検出は、1スレッド毎といったように、1処理要素単位でアクセストラッキングを行うことを含む。例えば、スレッド101aが、データ項目Dと関連付けられる監視部を設定すると仮定する。この場合、スレッド101aと関連付けられる複製された属性は、適切な監視値に設定される。そして、スレッド101bが、データ項目Dに対して競合する要求を行うと、競合が検出される。一実施形態において、報告ロジックが制御ロジックに接続され、適切なハンドリングを行うために競合報告を検出する。例えば、論理ORのような論理オペレーションは、外部要因(追い出し又は外部のスヌープ)及び共有キャッシュスレッドアクセス競合が原因で起きる監視の失敗のような様々な競合イベントを組み合わせる。
一実施形態において、キャッシュ150に保持されたデータ項目と関連付けられた属性は、一時的な格納又は占有的な格納を利用して実装される。この場合、キャッシュ150内のどこに属性を保持してもよく、例えば、キャッシュ150のラインに保持してもよい。例えば、上述したHTMの一例は、インプレース更新HTMを含む。ここで、トランザクション的に変更されたデータが、現在のメモリロケーションに保持され、元のデータが、例えば、高次メモリに記録/バックアップされている。その結果、一実施形態では、キャッシュ150は、データ項目に関してアクセスされ、属性は、一時的に、データ項目と共にキャッシュ150に格納される。ここで、データ項目が占有状態又は一時的なコヒーレンシ状態に保持されることによって、キャッシュ制御ロジックが、トランザクション的動作の維持を確かにすることができる。すなわち、一時的状態で保持されるデータ項目は、その他のスレッドに提供されることがない。
しかしながら、データ項目がキャッシュ150から追い出されてしまった場合には、占有的に保持されている属性が失われてしまう可能性がある。基本的に、属性は、データ項目を監視するためにシステムが生成し、高次のメモリに書き戻されない。属性が失われてしまう、すなわち、追い出し又はその他のイベントに伴って失われてしまうシナリオでは、上述したような潜在的なアクセス競合を検出するのと同様な態様で、潜在的な競合が誘発される場合がある。バッファ格納及びバッファされた状態のような一時的格納及び占有的状態のバージョンについては、関連出願の代理人整理番号P29132"Extending the MESI protocol to support locally buffered data(バッファされたデータをローカルにサポートするためのMESIプロトコルの拡張)"に記載されている。
上述した例に示されるように、キャッシュにおいてデータ項目と関連付けられるハードウェア属性は、キャッシュの外に保持されてもよく、キャッシュロジック内、キャッシュアレイ内、キャッシュのその他の構造内、又は、一時的であればキャッシュのデータ部分に保持されてもよい。多くの場合、これらのハードウェア属性は、ユーザー命令の実行によって直接操作されることなく、ハードウェアによって維持される。例えば、ソフトウェアプログラムは、データ項目に対するトランザクション的書き込みを含む。プロセッサがトランザクション的書き込みを受け付け、監視すべきと決定した時には、ハードウェアは、データ項目に関連付けられた書き込み属性を適切に更新する。例えば、一時的な格納が挿入されて実行され、キャッシュ150が、データ項目及び関連付けられた書き込み属性によって更新される。別の例では、属性が、キャッシュ150のコヒーレンシ状態ビットに付加されており、データ項目を保持するキャッシュ150のラインのコヒーレンシ状態が、トランザクション的書き込みに応じて更新される。
一実施形態において、ハードウェア監視部/属性のハードウェア管理に加えて、ハードウェアが、命令を認識して属性を直接操作する。例えば、命令又はオペレーションが、命令セットアーキテクチャ(ISA)の一部であって、プロセッサ100によって認識可能であり、プロセッサは、属性に対するオペレーションを実行する。例えば、ISAは、オペコード(opcode)を含み、プロセッサ100のデコーダによって検出され、属性がそれにしたがって変更される。利用される命令の例としては、データ項目に関連付けられた属性をある状態に設定する設定命令、データ項目に関連付けられた属性を初期状態にリセットするリセット命令、属性の状態を読み出すテスト又は読み出し命令、及びトランザクションに対する又はキャッシュ内の全ての属性を消去する消去命令が含まれる。
上記の例に含まれているうちの1つ、属性を消去する消去命令について記載する。一実施形態において、読み出し及び書き込み監視をまとめて消去するのに、バルク消去命令が使用される。バルク消去命令は、数多くのシナリオにおいて、有用である可能性がある。第1に、トランザクションがコミット又は中止されると、そのトランザクションに対する読み出し及び書き込み監視が、消去/リセットされる可能性がある。第2に、1のドメインから別のドメインへのプロセッサ100の遷移に伴って、読み出し及び書き込み監視が、消去/リセットされてもよい。インテル(登録商標)のIA32アーキテクチャは、リード(read)ドメイン、ビッグリアル(big real)ドメイン、そして仮想ドメインを含む。第3に、例外又は割り込みの発生時に、それに伴って、読み出し及び書き込み監視を消去してもよい。このように、消去命令が発生すると、監視、監視範囲、特定の条件に合致する全ての監視、又はキャッシュ内の全ての監視が消去される。
最初に図1を参照して上記で説明したように、プロセッサ100は、説明のために純粋に例示することだけを目的として示されている。同様に、属性をデータ項目/要素と関連付ける上記した特定の例は、単なる例示に過ぎず、ハードウェア監視/属性を様々な粒度でデータ項目と関連付けるあらゆる方法を使用してもよい。キャッシュ内のデータ項目と属性の関連付けの一例を、図2を参照してさらに説明する。
図2には、一実施形態に係る、キャッシュメモリ内のデータ項目と属性との関連付けが示されている。プロセッサ250としては、トランザクション的実行を行う能力を有する1以上の処理要素を有する既知のあらゆる型のプロセッサが含まれる。上述したように、属性は、あらゆる物理サイズの物理的記憶構造と静的に関連付けられてもよいし、動的にデータ項目に割り当てられてもよい。図2の実施形態には、属性、すなわち属性211.r‐226.r及び211.w‐226.wが示されており、それぞれ、キャッシュ205の静的部分、すなわち、部分210−225と関連付けられる。例えば、部分210‐225は、キャッシュの複数のキャッシュラインである。キャッシュ250としては、プロセッサと関連付けられるあらゆるキャッシュが含まれ、例えば、1次キャッシュ又は2次キャッシュが含まれる。
図示されるように、読み出し属性211.rは、キャッシュライン210と関連付けられ、書き込み属性211.wも、キャッシュライン210と関連付けられている。一実施形態において、アレイ235は、属性211.r及び211.wを有するタグアレイを含む。別の実施形態では、アレイ235としては、コヒーレンシ状態アレイのような、状態アレイが含まれ、状態ビット内に属性211.r及び211.wが含まれて、キャッシュ205に対して新たなコヒーレンシ状態を生成している。コヒーレンシ状態を使用する例について、図4を参照して以下に詳細に説明する。もう1つの実施形態において、アレイ235は、図示するように、キャッシュ制御ロジック230内のあらゆるアレイを含み、又は、図示していないが、プロセッサ250内の制御ロジックの外側のその他の属性構造を含む。
一実施形態において、属性211.r‐226.r及び211.w‐226.wは、キャッシュ205内のキャッシュライン境界のような記憶領域構造の物理的な境界に関わらず、データ要素201のようなデータ項目/要素に対するメモリアクセスを監視する。実際には、データ項目は、キャッシュ205のキャッシュラインのような境界で整列していなくてもよい。ここで、キャッシュ205の物理的境界に関わらずデータ項目を監視することは、キャッシュ205の部分と監視される属性との関連付けに基づいて、非整列データ項目を監視と結び付けることを含む。属性は、ライン単位を基本として関連付けられるため、監視されたデータ項目を含むあらゆるラインが、その他のデータを保持していたとしても監視されて、データ項目が適切に監視されるようにしている。
様々なデータ項目の例が、上記に記載されている。図2では、データ項目201は、キャッシュラインの1と2分の1の大きさで表されている。図に示した例では、トランザクション的ロードオペレーションは、データ要素201を参照するメモリデータアドレスからのロードを行うべく実行され、それにより、データ要素201のキャッシュライン210及び215への読み込みが行われる。プロセッサ250は、モード又は条件の設定により、トランザクション的ロードを監視すべきか判断する。
制御ロジック230は、データ項目201が制限されるべきと決定する、すわち、少なくともデータ項目が監視され、更に必要以上のデータが監視されることによって、競合の正確な検出を行う。ここで、制御ロジック230は、フィールド211r及び216rを更新して、キャッシュ215及び216からの監視された読み込みが発生したことを示す。第1例としては、フィールド211r及び216rが、例えば論理値0のような監視されていない論理値から、例えば論理値1のような監視された論理値へと更新される。アレイ235がコヒーレンシ状態アレイである場合の実施形態では、フィールド211及び216は、以下に記載するように、監視された読み出し共有コヒーレンシ状態のような、適切なコヒーレンシ状態へと遷移される。したがって、例えば、制御ロジック230におけるスヌープロジックが、キャッシュライン210又は205のいずれかへの書き込み要求を検出すると、潜在的な競合が検出される。
図2では、主に、属性がキャッシュのデータ部分205から切り離されている場合に注目して例示されているが、上述したように、属性は、データ部分205に保持されていてもよい。1つ前の例を使用すると、監視されたロードに応答して属性211r及び216rを更新する替わりに、属性は、キャッシュライン210又はキャッシュライン215のどちらか、若しくは両方に占有的に格納される。キャッシュライン210及び215の状態は、バッファされた状態又は占有状態へと遷移する。書き込み要求が発生すると、占有的に保持された属性情報を使用して、同様な競合が検出される。しかしながら、ライン210又は215で追い出しが発生した場合には、属性情報の損失、すなわち属性情報が失われてしまう可能性がある。その結果、同様な競合プロセスが、トリガされる。図2を参照した説明には、キャッシュライン1つにつき、属性が1セットのみ含まれている例が示されている。しかしながら、図1のキャッシュ150を参照して説明したように、属性を、プロセッサ250のスレッド単位で複製してもよい。例えば、属性を、キャッシュ205を共有するスレッド毎に複製する。また、例示したように、読み出し属性と書き込み属性が等しい数提供されるのではなく、読み出し属性と書き込み属性との間で異なる数が提供されてもよい。
一実施形態において、キャッシュ制御ロジック230内に含まれる又はキャッシュ制御ロジック230と関連付けられる制御ロジックは、属性と関連付けられた競合を検出する。競合の存在を判断するのに、設計の実装形態に基づいて、属性状態、要求、通信プロトコル、又はコヒーレンシプロトコルのいかなる組み合わせを使用してもよい。単純化した基本的な例として、監視された読み出しへの書き込みは、競合となる可能性があり、監視された書き込みの読み出し又は書き込みも競合となる可能性がある。
一実施形態において、競合が検出されると、報告ロジックが競合を報告する。競合は、ハードウェア、ファームウェア、ソフトウェア又はこれらの組み合わせによって、対処されてもよい。一実施形態において、報告ロジックは、レジスタ245のような記憶要素を含む。記憶要素は、プロセッサ250内に、情報を保持するためのあらゆる構造を含んでもよく、例えば、メモリ、汎用レジスタ又はモデル固有レジスタ(MSR)を含んでもよい。第1の例として、レジスタ245は、状態レジスタを含む。競合を検出した場合には、レジスタ245における値が競合値に設定されて、競合が発生したことを示す。ソフトウェアは、レジスタ245をポールして、値が競合値に設定されているかを確認してもよい。別の例として、プロセッサ250は、オーバフローフラグのようなフラグを含むフラグレジスタを備え、フラグは、ジャンプ命令のような命令によってテストされる。例えば、ロード命令に続く条件付きジャンプ命令は、命令の読み出しセットのコヒーレンシをテストするのに使用されてもよい。
上述したように、追い出し又はその他のイベントによる属性データの損失も、競合であると考えられる。この場合、レジスタ245を同様な方法で利用することによって、属性データの損失を示してもよい。一実施形態において、属性データの損失に応答して、報告ロジックは、プロセッサ250のオペレーションを、ソフトウェアハンドラにリダイレクトして、監視される属性のための限られた記憶容量を提供する。オバーフローイベントに応答したトランザクショナルメモリの仮想化の例については、同時係属中の米国特許出願番号11/479,902"Global Overflow Method for Virtualized Transactional Memory(仮想化されたトランザクショナルメモリに対するグローバルオーバーフロー方法)"に記載されている。また、レジスタ245のような記憶要素を利用してユーザーハンドラを記録し、競合のようなトランザクション的イベントを扱う例については、2008年12月30日出願、代理人整理番号P29129、米国出願番号12/346,518号明細書、発明者Gad Sheaffer他"Registering a User-Handler in Hardware for Transactional Memory Event Handling(トランザクショナルメモリイベント取り扱いのための、ユーザーハンドラのハードウェアへの登録)"に記載されている。
一実施形態において、レジスタ245は、非監視モード、非選択的監視モード、選択的監視モードといったように、プロセッサ250の動作モードを示す値を保持する。選択的監視モードにおいては、レジスタ245又はその他のレジスタは、アクセス監視に対する選択的基準を規定してもよい。状態レジスタ、動作モードを規定するレジスタ、及び選択基準を規定するレジスタとして使用される観点におけるレジスタ245の説明は、上記の記憶要素245の使用可能性のあらゆる組み合わせを実装する複数のレジスタ又は1つのレジスタを参照する。
次に、図3を参照して、様々なモードで監視を行う方法のフローチャートの実施形態を例示する。図3及び図5のフローチャートは、ほぼ順次的に記載されている。しかしながら、これらの図面に示された方法はこれらに限定されず、あらゆる順番で、少なくとも部分的に並行して、フローを実行してもよい。
フロー305において、データ要素を参照するメモリアクセスを監視すべきかを決定する。一実施形態において、非監視、非選択的監視及び選択的監視といったように監視の複数のモードが提供される。例えば、ソフトウェアが、監視モードを設定してもよい。例えば、ユーザー命令が、図2のレジスタ245のようなレジスタをアドレス指定することで、監視モードを示すこともできる。ここでは、ソフトウェアが、どの読み出し及び書き込みを監視すべきかを決定する。例えば、コンパイラのようなソフトウェアコードによって、静的に又は実行時間の間に、又は、アプリケーションコード、オペレーティングシステムコード、ハイパーバイザコード、又はトランザクション的ランタイムコードによって、この決定を行ってもよい。
一実施形態において、監視の選択的モードの間に、あらゆる態様で規定されてもよい特定の基準に当てはまるものを除いて、読み出し及び書き込みが監視される。監視されない場合があるメモリアドレスへのメモリアクセスに対する選択基準の例の不完全なリストとしては、ある範囲内又は外の仮想アドレス又はマスクに適合する仮想アドレス、範囲内外の物理的アドレス又はマスクにマ適合する物理アドレス、特定のメモリタイプに属するアドレス、入出力(I/O)空間内のアドレス、一の保護ドメインでのオペレーションの替わりに別の保護ドメインで実行されるアドレス、特定のオペコード又はプリフィックスによって特定される命令によってアクセスされるアドレス、及び浮動小数点オペレーション又はベクトルオペレーションのような特定のデータタイプに対するメモリアドレスが含まれる。また、ユーザーによって特定され、プロセッサ250のハードウェアによって認識可能な明示的トランザクション的ロード及び明示的トランザクション的格納オペレーションのみ、といったように、特定の認識される命令に応じて、監視する属性を設定してもよい。
フロー350において、監視が適応されるか否かが決定されると、フロー315において、データ要素と関連付けられた監視部の更新を通じて監視が適用される、又は、フロー310において、監視が実行されずアクセスが通常通り実行される。データ要素と関連付けられた属性のような監視部の更新は、本明細書に記載したように、属性を変更してアクセスを適切に監視するあらゆる方法を含む。監視された及び監視されていない読み出し/書き込みに基づいて、様々なコヒーレンシ状態に監視部を更新する例を、以下に記載する。
図4には、監視されたコヒーレンシ状態を含む複数のコヒーレンシ状態間を遷移する方法を示すための、状態遷移図の一実施形態が示されている。図4の状態遷移図は、図を簡略化するために状態図の一部のみを示しており、監視する属性の消去といった状態遷移の一部については図示されていない。また、状態、及び状態間の遷移は、単なる一例である。例えば、図4に例示されているような直接遷移の替わりに、状態間で複数段階の状態遷移が起きてもよい。
例示したキャッシュコヒーレンシ状態としては、以下のような状態が含まれる。(1)変更(M420)状態、すなわち、アドレスが書き込まれたが、それに関連付けられた属性がない、(2)変更読み出し(MR430)状態、すなわち、アドレスが読み出され、それに関連付けられた読み出し属性を有する、(例えば、前にアドレスに対する読み出しがあり、その後、トランザクションがアドレスを書き込んだ場合)、(3)変更書き込み(MW425)状態、すなわち、アドレスは書き込まれ、関連付けられた属性を有する、(4)変更読み出し書き込み(MRW435)状態、すなわち、アドレスが読み出され、そして書き込まれて、関連付けられた読み出し属性及び書き込み属性の両方を有する、(5)排他的(E440)状態、すなわち、アドレスが読み出されたが、関連付けられた属性を有さない、(6)排他的読み出し(ER445)状態、すなわち、アドレスが読み出されたが、関連付けられた読み出し属性を有さない、(7)共有(S410)状態、すなわち、アドレスが読み出されたが、関連付けられた属性を有さない、(8)共有読み出し(SR415)状態、すなわち、アドレスが読み出され、関連付けられた読み出し属性を有する。
一実施形態において、属性が、キャッシュの状態ビット内に含まれ、新しく監視されるコヒーレンシ状態が生成される図2を参照して説明した例に従って、これらの状態を実装してもよい。例えば、1以上のラインが、共有状態410にあり、監視される読み出しが発生する場合には、ラインを含むデータ項目のメモリアドレスの参照が行われ、ラインのコヒーレンシ状態は、SR415状態へと遷移する。その結果、一実施形態において、ラインへの書き込みの外部からの要求は、コヒーレンシ状態がSR415となっていることから、競合になる可能性がある。データ項目の少なくとも一部を含むキャッシュラインが、MWコヒーレンシ状態425に保たれる時の、データ項目に対する外部の読み出し要求のような、その他のメモリアクセス要求の種類との組み合わせによるコヒーレンシ状態に基づくと、その他の潜在的な競合が存在することもある。
図5は、メモリアクセスを実行するためのフローチャートの一実施形態を示したものである。フロー505において、データ項目と関連付けられたメモリを参照するメモリアクセスが発生する。メモリアクセスの発生には、実行のあらゆる段階において実行されるあらゆるメモリアクセス検出方法が含まれる。様々な段階におけるオペレーションの発生の例には、デコーダがメモリアクセスに対するオペコードを認識する、命令キャッシュからメモリアクセスオペレーションを読み出す、メモリアクセスの実行をロード/ストアユニットのような実行ユニットにスケジュールする、メモリアクセスをリタイアさせる等がある。
フロー510において、プロセッサは、オペレーション選択モードで動作する。上述したように、一実施形態において、ソフトウェアは、プロセッサのモードを設定する。ここで、ソフトウェアは、実行の際に、レジスタのような記憶要素を更新して、オペレーションのモードを示す。例えば、トランザクションの実行が開始する時に、ソフトウェアは、モードを非選択モードへと設定する、すなわち、全てのメモリアクセスが監視される。トランザクションが終了する時に、モードは、選択監視又は非監視へと切り替えられる。しかしながら、別の実施形態においては、プロセッサ内のハードウェアが、オペレーションのモードを決定する。
モードが、選択的モードであると決定されると、フロー515において、特定のメモリアクセスを監視すべきかを決定する。この決定には、数多くの選択基準を適用してもよく、参照されたメモリアドレスが、アドレスの特定の範囲内であるか否か、又はデータ項目が特定の種類であるかといった条件が考えられる。加えて、条件は、単純に、メモリアクセスが、ソフトウェアによって特定され監視されるか否かを含んでもよく、明示的トランザクション的メモリアクセスとして特定されるかを含んでもよい。メモリアクセスが監視されない場合には、フロー525において、通常通りに実行される。メモリアクセスが監視される場合には、フロー520において、データ項目と関連付けられるアクセス監視部が更新される。アクセスは、フロー520において監視が更新される前、間、又は後に、フロー525においてアクセスが実行されてもよい。
したがって、上述したように、属性のような監視は、物理的記憶構造の粒度に制限されることなく、少なくともデータ項目/要素の粒度で、メモリアクセスの監視を提供する。その結果、ハードウェア属性が、メモリアドレス及び関連付けられたデータ項目へのアクセスの監視をハードウェア内で提供すると同時に、ソフトウェアのデータ構造レベルにおける競合の監視及び検出を行う能力を維持することができる。また、属性情報が失われてしまう場合には、属性は、ソフトウェアへのオーバーフローをサポートすることにより、大きなトランザクションに対するフィルタとして動作する可能性がある。また、一実施形態において、ユーザーメカニズムが含まれるので、属性にアクセスして、直接オペレーションが実行可能となる。
本明細書で用いられたモジュールとは、任意のハードウェア、ソフトウェア、ファームウェア又はこれらの組み合わせを意味する。別個のものとして図示されているモジュールの境界は、通常変わることが多く、重複する可能性もある。例えば、第1のモジュール及び第2のモジュールは、ハードウェア、ソフトウェア、ファームウェア又はこれらの組み合わせを共有しているとしてもよいし、独立したハードウェア、ソフトウェア又はファームウェアを持つとしてもよい。一実施形態では、ロジックという用語は、例えば、トランジスタ、レジスタのようなハードウェア、又はプログラム可能な論理デバイスのようなその他のハードウェアを含む。しかしながら、別の実施形態では、ロジックはまた、ハードウェアと一体化されたソフトウェア又はコード、例えば、ファームウェア又はマイクロコードを含む。
また、本明細書で使用されている"値"という言葉は、数、状態、論理状態又は2値論理状態のあらゆる既知の表現を含む。また、明細書で使用されている論理レベル、論理値、又は論理的値は、1又は0といった単純に2値論理状態を意味している場合もある。例えば、1は高い論理レベルを指し、0は低い論理レベルを指す。一実施形態では、トランジスタ又はフラッシュセルのような記憶セルは、1つの論理値又は複数の論理値を保持可能であってもよい。しかしながら、コンピュータシステムにおける値の他の表現が使用されてきている。例えば、10進数の10は、2進値表示では、1010と表され、16進数表示ではAと表される。したがって、ある1つの値は、コンピュータシステムに保持される情報のあらゆる表示形式を含む。
さらに、状態は、値又は値の一部によって表されていてもよい。例えば、論理値の1のような第1の値が、デフォルト状態又は最初の状態を表していてもよく、論理値の0のような第2の値が、非デフォルト状態を表していてもよい。加えて、リセット及びセットという言葉はそれぞれ、ある実施形態では、デフォルト値又は状態及び更新された値又は状態を指す。例えば、デフォルト値は、高い論理値、すなわち、リセットを含んでもよく、更新値は、低い論理値、すなわち、セットを含んでもよい。値のどのような組み合わせを、あらゆる数の状態を表すのに利用してもよい。
上記の方法、ハードウェア、ソフトウェア、ファームウェア、コードの実施形態を、機械アクセス可能な又は機械可読な媒体に記憶され、プロセッシング素子によって実効可能な命令又はコードを使用して実装してもよい。機械アクセス可能/機械可読な媒体としては、コンピュータ又は電子システムのような機械によって読み出し可能な形式の情報を提供する(すなわち、記憶及び/又は送信する)あらゆるメカニズムを含む。例えば、機械アクセス可能媒体は、スタティックRAM(SRAM)若しくはダイナミックRAM(DRAM)のようなランダム・アクセス・メモリ(RAM)、ROM,磁気的又は光学的記憶媒体、フラッシュメモリデバイス、電気記憶デバイス、光学記憶デバイス、音響的記憶デバイス、又は他の形態の伝播信号(例えば、搬送波、赤外線信号、デジタル信号)記憶デバイス等が含まれる。例えば、機械は、搬送波のような伝播信号を、搬送波信号によって送信可能な情報を保持可能な媒体から、受信することにより、記憶デバイスにアクセスしてもよい。
また、本明細書における「一実施形態」又は「ある実施形態」という言葉は、実施形態に関連する特定の特徴、構造及び特性が、少なくとも本発明の実施形態の一つに含まれていることを意味する。したがって、本明細書中の様々な箇所で使用されている「一実施形態において」又は「ある実施形態において」という表現は、必ずしも同一の実施形態を示していない。また、1以上の実施形態において、特定の構成、構造又は特徴を、適切な形で組み合わせてもよい。
明細書の上記において、特定の例示された実施形態を参照して、詳細な説明がなされた。しかしながら、添付の特許請求の範囲に記載される本発明の範囲内において、様々な変形及び変更を加えることが可能であることは、明らかである。したがって、明細書及び添付の図面は、発明を制限するものではなく、発明を例示するものであると見なされるべきである。また、上記の実施形態及び他の例で使用された言葉は、同じ実施形態又は同じ例を必ずしも指している必要はなく、異なる及び別の実施形態を指している場合もあるし、同じ実施形態を指している場合もある。
以下、トランザクショナルメモリ(TM)システムにおける読み出し及び書き込み監視属性の諸態様を付記としてまとめて記載する。
(付記1)データ項目と関連付けられたメモリアドレスを参照するトランザクション的メモリアクセスオペレーションを実行する実行ロジックと、
処理ロジックと接続され、前記トランザクション的メモリアクセスオペレーションを実行する前記実行ロジックに応答して、前記データ項目を保持するメモリと、
前記メモリと関連付けられ、前記実行ロジックが前記トランザクション的メモリアクセスオペレーションを実行するのに応答して、前記メモリの粒度に関わりなく、前記データ項目の制限付きアクセス監視を実行するハードウェア監視部と
を備え、
前記メモリはデータキャッシュを含み、
前記データキャッシュの複数のキャッシュラインのうち、2以上のキャッシュラインが、前記複数のキャッシュラインの境界で整列されていない前記データ項目を保持し、
前記ハードウェア監視部は、前記データ項目のサイズに基づいて、前記メモリと動的に関連付けられる
装置。
(付記2)前記実行ロジックがユーザーレベル命令を実行するのに応答して、前記ハードウェア監視部が読み出し可能及び変更可能である付記1に記載の装置。
(付記3)前記データキャッシュと関連付けられたハードウェア監視部は、前記データキャッシュの複数のキャッシュラインに対応する複数の読み出し監視部及び複数の書き込み監視部を含む付記1に記載の装置。
(付記4)前記トランザクション的メモリアクセスオペレーションは、トランザクション的ロードを含み、
前記データキャッシュと関連付けられ、前記実行ロジックが前記トランザクション的ロードを実行するのに応答して、前記メモリの粒度に関わりなく前記データ項目の制限付きアクセス監視を実行する前記ハードウェア監視部は、前記データ項目の少なくとも一部を保持する前記複数のキャッシュラインのうち前記2以上のキャッシュラインに対応する数の前記複数の読み出し監視部を含み、
前記実行ロジックが前記トランザクション的ロードを実行するのに応答して、前記複数の読み出し監視部は、監視読み出し状態に更新される付記3に記載の装置。
(付記5)前記トランザクション的メモリアクセスオペレーションは、トランザクション的ストアを含み、
前記データキャッシュと関連付けられ、前記実行ロジックが前記トランザクション的ストアを実行するのに応答して、前記メモリの粒度に関わりなく前記データ項目の制限付きアクセス監視を実行する前記ハードウェア監視部は、前記データ項目の少なくとも一部を保持する前記複数のキャッシュラインのうち前記2以上のキャッシュラインに対応する数の前記複数の書き込み監視部を含み、
前記実行ロジックがトランザクション的書き込みを実行するのに応答して、前記複数の書き込み監視部は、監視書き込み状態に更新される付記4に記載の装置。
(付記6)前記2以上のキャッシュラインのうちの1つのキャッシュラインに対応する前記複数の読み出し監視部のうちの1つの読み出し監視部が、前記監視読み出し状態に更新され、制御ロジックが、前記1つのキャッシュラインに対する外部からの書き込み要求を検出する場合に、前記制御ロジックは、トランザクション的競合を検出する付記5に記載の装置。
(付記7)前記2以上のキャッシュラインのうちの1つのキャッシュラインに対応する前記複数の書き込み監視部のうちの1つの書き込み監視部が、前記監視書き込み状態に更新され、制御ロジックが、前記1つのキャッシュラインに対する外部からの読み出し要求を検出する場合に、前記制御ロジックは、トランザクション的競合を検出する付記5または6に記載の装置。
(付記8)前記実行ロジックがユーザーレベル消去オペレーションを実行するのに応答して、前記複数の読み出し監視部及び前記複数の書き込み監視部が、非監視状態にリセットされる付記5から7のいずれか一項に記載の装置。
(付記9)前記データ項目のサイズに基づいて前記メモリと動的に関連付けられる前記ハードウェア監視部は、
前記メモリの複数のラインに対して、読み出し監視部及び書き込み監視部のプールから、1つの読み出し監視部及び1つの書き込み監視部を動的に割り当てるロジックを含み、
前記データ項目の前記サイズが、前記メモリの1ラインよりも大きいこと、及び前記実行ロジックが前記トランザクション的メモリアクセスオペレーションを実行することに応答して、前記メモリは、前記データ項目の少なくとも一部を保持する付記1から8のいずれか一項に記載の装置。
(付記10)前記メモリと関連付けられ、前記実行ロジックが前記トランザクション的メモリアクセスオペレーションを実行するのに応答して、前記メモリの粒度に関わりなく前記データ項目の制限付きアクセス監視を実行する前記ハードウェア監視部は、
前記実行ロジックがトランザクション的ロードオペレーションを実行するのに応答して、読み出し監視状態に設定される前記複数のラインに割り当てられる前記読み出し監視部と、
前記実行ロジックがトランザクション的ストアオペレーションを実行するのに応答して、書き込み監視状態に設定される前記複数のラインに割り当てられる前記書き込み監視部とを含む付記9に記載の装置。
(付記11)データ項目を参照するメモリアクセスオペレーションを監視すべきかを決定する段階と、
キャッシュの2以上のラインに、複数のキャッシュラインの境界で整列されていない前記データ項目をキャッシュする段階と、
前記メモリアクセスオペレーションを監視すべきかの決定に応答して、前記データ項目を制限するべく前記キャッシュと関連付けられるハードウェア属性を決定する段階と、
前記メモリアクセスオペレーションの種類と関連付けられたアクセス状態を表すように、前記ハードウェア属性を更新する段階とを備え、
前記データ項目を制限するべく前記キャッシュと関連付けられるハードウェア属性を決定する段階は、前記データ項目と関連付けられて前記キャッシュの粒度に関わりなく前記データ項目の制限付きアクセス監視を実行するための前記ハードウェア属性を動的に割り当てる
方法。
(付記12)前記データ項目を参照するメモリアクセスオペレーションを監視すべきかを決定する段階は、前記メモリアクセスオペレーションを実行するプロセッサの動作モードに基づいて行われる付記11に記載の方法。
(付記13)前記データ項目を参照するメモリアクセスオペレーションを監視すべきかを決定する段階は、オペレーションが監視される時の前記メモリアクセスオペレーションのユーザーレベルソフトウェアによる特定に基づいて行われる付記11に記載の方法。
(付記14)前記データ項目を制限するべく前記キャッシュと関連付けられるハードウェア属性を決定する段階は、前記2以上のラインと関連付けられるコヒーレンシ状態エントリ内に、ハードウェア属性ビットを決定することを含み、
前記メモリアクセスオペレーションの種類と関連付けられたアクセス状態を表すように前記ハードウェア属性を更新する段階は、前記2以上のラインと関連付けられるコヒーレンシ状態エントリ内の前記ハードウェア属性ビットを更新して、前記メモリアクセスオペレーションの前記種類と関連付けられる監視コヒーレンシ状態を表す付記11から13のいずれか一項に記載の方法。
(付記15)前記メモリアクセスオペレーションの前記種類と関連付けられる前記アクセス状態は、
前記メモリアクセスオペレーションの前記種類が、読み出しタイプを含むことに対応した、監視読み出し状態と、
前記メモリアクセスオペレーションの前記種類が、書き込みタイプを含むことに対応した、監視書き込み状態とを有する付記11から14のいずれか一項に記載の方法。
(付記16)前記メモリアクセスオペレーションに続いて外部からのアクセス要求があることに応答して、前記外部からのアクセスの種類、及び前記メモリアクセスオペレーションの種類と関連付けられる前記アクセス状態に基づいて、競合を検出する段階と、
前記競合が検出されたことに応答して、プロセッサ内の状態レジスタを使用して、前記競合をソフトウェアに報告する段階と、
前記プロセッサ内の状態レジスタを使用して前記競合がソフトウェアに報告されたことに応答して、前記競合を扱うソフトウェアハンドラを実行させる段階とを更に備える付記11から15のいずれか一項に記載の方法。

Claims (18)

  1. データ項目を参照するメモリアクセスオペレーションを監視すべきかを決定する段階と、
    キャッシュの複数のラインにわたって前記データ項目をキャッシュする段階と、
    前記メモリアクセスオペレーションを監視すべきかの決定に応答して、前記キャッシュのラインとは非整列の前記データ項目に関連付けられる属性を前記キャッシュのライン単位で動的に割り当てる段階と、
    前記メモリアクセスオペレーションの種類と関連付けられたアクセス状態を表すように、前記属性を更新する段階と
    を備える方法。
  2. 前記データ項目を参照するメモリアクセスオペレーションを監視すべきかを決定する段階は、前記メモリアクセスオペレーションを実行するプロセッサの動作モードに基づいて行われる請求項1に記載の方法。
  3. 前記データ項目を参照するメモリアクセスオペレーションを監視すべきかを決定する段階は、オペレーションが監視される時の前記メモリアクセスオペレーションのユーザーレベルソフトウェアによる特定に基づいて行われる請求項1に記載の方法。
  4. 前記メモリアクセスオペレーションの前記種類と関連付けられる前記アクセス状態は、
    前記メモリアクセスオペレーションの前記種類が、読み出しタイプを含むことに対応した、監視読み出し状態と、
    前記メモリアクセスオペレーションの前記種類が、書き込みタイプを含むことに対応した、監視書き込み状態と
    を有する請求項1から3のいずれか一項に記載の方法。
  5. 前記メモリアクセスオペレーションに続いて外部からのアクセス要求があることに応答して、前記外部からのアクセスの種類、及び前記メモリアクセスオペレーションの種類と関連付けられる前記アクセス状態に基づいて、競合を検出する段階と、
    前記競合が検出されたことに応答して、プロセッサ内の状態レジスタを使用して、前記競合をソフトウェアに報告する段階と、
    前記プロセッサ内の状態レジスタを使用して前記競合がソフトウェアに報告されたことに応答して、前記競合を扱うソフトウェアハンドラを実行させる段階と
    を更に備える請求項1から4のいずれか一項に記載の方法。
  6. データ項目を参照するメモリアクセスオペレーションを監視すべきかを決定する段階と、
    キャッシュの複数のラインにわたって前記データ項目をキャッシュする段階と、
    前記メモリアクセスオペレーションを監視すべきかの決定に応答して、前記複数のラインに関連づけられる複数のコヒーレンシ状態エントリの属性ビットを決定する段階と、
    前記メモリアクセスオペレーションの種類と関連付けられた監視コヒーレンシ状態を表すように、前記複数のラインに関連づけられる前記複数のコヒーレンシ状態エントリの前記属性ビットを更新する段階とを備える方法。
  7. 前記データ項目を参照するメモリアクセスオペレーションを監視すべきかを決定する段階は、前記メモリアクセスオペレーションを実行するプロセッサの動作モードに基づいて行われる請求項6に記載の方法。
  8. 前記データ項目を参照するメモリアクセスオペレーションを監視すべきかを決定する段階は、オペレーションが監視される時の前記メモリアクセスオペレーションのユーザーレベルソフトウェアによる特定に基づいて行われる請求項6に記載の方法。
  9. 前記メモリアクセスオペレーションの前記種類と関連付けられる前記コヒーレンシ状態は、
    前記メモリアクセスオペレーションの前記種類が、読み出しタイプを含むことに対応した、監視読み出し状態と、
    前記メモリアクセスオペレーションの前記種類が、書き込みタイプを含むことに対応した、監視書き込み状態とを有する
    請求項6から8のいずれか一項に記載の方法。
  10. 前記メモリアクセスオペレーションに続いて外部からのアクセス要求があることに応答して、前記外部からのアクセスの種類、及び前記メモリアクセスオペレーションの種類と関連付けられる前記コヒーレンシ状態に基づいて、競合を検出する段階と、
    前記競合が検出されたことに応答して、プロセッサ内の状態レジスタを使用して、前記競合をソフトウェアに報告する段階と、
    前記プロセッサ内の状態レジスタを使用して前記競合がソフトウェアに報告されたことに応答して、前記競合を扱うソフトウェアハンドラを実行させる段階と
    を更に備える請求項6から9のいずれか一項に記載の方法。
  11. プロセッサを備えるシステムであって、
    前記プロセッサは、
    前記プロセッサにより実行されるトランザクション的メモリアクセスオペレーションによって参照されるデータ項目を複数のラインにわたって保持するキャッシュメモリと、
    前記キャッシュメモリと関連付けられ、前記プロセッサが前記メモリアクセスオペレーションを実行するのに応答して、前記キャッシュメモリのラインで整列していない前記データ項目の粒度で前記データ項目のアクセス状態を表す、前記キャッシュメモリのライン単位の属性と、
    前記プロセッサと接続されて、前記データ項目のキャッシュされていないコピーを保持するシステムメモリと
    を有し、
    前記アクセス状態は、前記トランザクション的メモリアクセスオペレーションの種類と関連付けられるシステム。
  12. 前記トランザクション的メモリアクセスオペレーションの前記種類と関連付けられる前記アクセス状態は、
    前記トランザクション的メモリアクセスオペレーションがロードタイプであることに応じたトランザクション的読み出し状態と、
    前記トランザクション的メモリアクセスオペレーションがストアタイプであることに応じたトランザクション的書き込み状態と
    を有する請求項11に記載のシステム。
  13. 前記キャッシュメモリと関連付けられてアクセス状態を表す前記属性は、ビットベクトル、エンコード値及び状態値からなる群から選択される請求項11または12に記載のシステム。
  14. 前記属性は、第1スレッドと関連付けられて、前記プロセッサの前記第1スレッドが前記メモリアクセスオペレーションを実行するのに応答して、前記キャッシュメモリのラインで整列されていない前記データ項目の前記粒度で、前記第1スレッドについての、前記データ項目の前記アクセス状態を表す属性を含み、
    前記属性は複製されて、前記キャッシュメモリへのアクセスを共有する第2スレッドと関連付けられて、前記プロセッサの前記第1スレッドが、前記データ項目を参照する第2のメモリアクセスオペレーションを実行するのに応答して、前記キャッシュメモリのラインで整列されていない前記データ項目の前記粒度で、前記第2スレッドについての、前記データ項目の第2のアクセス状態を表す
    請求項11から13のいずれか一項に記載のシステム。
  15. データ項目を参照するメモリアクセスオペレーションを監視すべきかを決定する段階と、
    キャッシュの複数のラインにわたって前記データ項目をキャッシュする段階と、
    前記メモリアクセスオペレーションを監視すべきかの決定に応答して、前記データ項目を制限するべく前記キャッシュと関連付けられる前記キャッシュのライン単位の属性を決定する段階と、
    前記メモリアクセスオペレーションの種類と関連付けられたアクセス状態を表すように、前記属性を更新する段階とを備える方法。
  16. 前記データ項目を制限するべく前記キャッシュと関連付けられる属性を決定する段階は、前記1以上のラインで整列されていない前記データ項目と関連付けられる前記属性を動的に割り当てることを含む請求項15に記載の方法。
  17. 前記データ項目を制限するべく前記キャッシュと関連付けられる属性を決定する段階は、前記複数のラインと関連付けられる複数のコヒーレンシ状態エントリ内に、属性ビットを決定することを含み、
    前記メモリアクセスオペレーションの種類と関連付けられたアクセス状態を表すように前記属性を更新する段階は、前記複数のラインと関連付けられる前記複数のコヒーレンシ状態エントリ内の前記属性ビットを更新して、前記メモリアクセスオペレーションの前記種類と関連付けられる監視コヒーレンシ状態を表す請求項15または16に記載の方法。
  18. 請求項1から10および15から17のいずれか一項に記載の方法を実行する装置。
JP2016217481A 2008-12-30 2016-11-07 トランザクショナルメモリ(tm)システムにおける読み出し及び書き込み監視属性 Expired - Fee Related JP6342970B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/346,530 US8627017B2 (en) 2008-12-30 2008-12-30 Read and write monitoring attributes in transactional memory (TM) systems
US12/346,530 2008-12-30

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2014006856A Division JP6040176B2 (ja) 2008-12-30 2014-01-17 トランザクショナルメモリ(tm)システムにおける読み出し及び書き込み監視属性

Publications (2)

Publication Number Publication Date
JP2017073146A true JP2017073146A (ja) 2017-04-13
JP6342970B2 JP6342970B2 (ja) 2018-06-13

Family

ID=42286302

Family Applications (3)

Application Number Title Priority Date Filing Date
JP2011542330A Expired - Fee Related JP5462883B2 (ja) 2008-12-30 2009-12-15 トランザクショナルメモリ(tm)システムにおける読み出し及び書き込み監視属性
JP2014006856A Expired - Fee Related JP6040176B2 (ja) 2008-12-30 2014-01-17 トランザクショナルメモリ(tm)システムにおける読み出し及び書き込み監視属性
JP2016217481A Expired - Fee Related JP6342970B2 (ja) 2008-12-30 2016-11-07 トランザクショナルメモリ(tm)システムにおける読み出し及び書き込み監視属性

Family Applications Before (2)

Application Number Title Priority Date Filing Date
JP2011542330A Expired - Fee Related JP5462883B2 (ja) 2008-12-30 2009-12-15 トランザクショナルメモリ(tm)システムにおける読み出し及び書き込み監視属性
JP2014006856A Expired - Fee Related JP6040176B2 (ja) 2008-12-30 2014-01-17 トランザクショナルメモリ(tm)システムにおける読み出し及び書き込み監視属性

Country Status (6)

Country Link
US (2) US8627017B2 (ja)
JP (3) JP5462883B2 (ja)
KR (1) KR101394741B1 (ja)
CN (1) CN101814018B (ja)
TW (1) TWI448897B (ja)
WO (1) WO2010077850A2 (ja)

Families Citing this family (92)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8627017B2 (en) * 2008-12-30 2014-01-07 Intel Corporation Read and write monitoring attributes in transactional memory (TM) systems
US9785462B2 (en) 2008-12-30 2017-10-10 Intel Corporation Registering a user-handler in hardware for transactional memory event handling
US8370577B2 (en) 2009-06-26 2013-02-05 Microsoft Corporation Metaphysically addressed cache metadata
US8812796B2 (en) 2009-06-26 2014-08-19 Microsoft Corporation Private memory regions and coherence optimizations
US8356166B2 (en) * 2009-06-26 2013-01-15 Microsoft Corporation Minimizing code duplication in an unbounded transactional memory system by using mode agnostic transactional read and write barriers
US8489864B2 (en) * 2009-06-26 2013-07-16 Microsoft Corporation Performing escape actions in transactions
US20100332768A1 (en) * 2009-06-26 2010-12-30 Microsoft Corporation Flexible read- and write-monitored and buffered memory blocks
US8250331B2 (en) * 2009-06-26 2012-08-21 Microsoft Corporation Operating system virtual memory management for hardware transactional memory
US8229907B2 (en) * 2009-06-30 2012-07-24 Microsoft Corporation Hardware accelerated transactional memory system with open nested transactions
US8539465B2 (en) * 2009-12-15 2013-09-17 Microsoft Corporation Accelerating unbounded memory transactions using nested cache resident transactions
US9092253B2 (en) * 2009-12-15 2015-07-28 Microsoft Technology Licensing, Llc Instrumentation of hardware assisted transactional memory system
US8402218B2 (en) 2009-12-15 2013-03-19 Microsoft Corporation Efficient garbage collection and exception handling in a hardware accelerated transactional memory system
US8533440B2 (en) 2009-12-15 2013-09-10 Microsoft Corporation Accelerating parallel transactions using cache resident transactions
US8504777B2 (en) * 2010-09-21 2013-08-06 Freescale Semiconductor, Inc. Data processor for processing decorated instructions with cache bypass
US8504774B2 (en) * 2010-10-13 2013-08-06 Microsoft Corporation Dynamic cache configuration using separate read and write caches
CN102486719B (zh) * 2010-12-06 2015-04-15 普天信息技术研究院有限公司 智能存储卡及其事务写的方法
US9104690B2 (en) 2011-01-27 2015-08-11 Micron Technology, Inc. Transactional memory
US8615640B2 (en) * 2011-03-17 2013-12-24 Lsi Corporation System and method to efficiently schedule and/or commit write data to flash based SSDs attached to an array controller
GB2491350B (en) 2011-05-27 2020-02-12 Advanced Risc Mach Ltd Store-exclusive instruction conflict resolution
WO2013115816A1 (en) * 2012-02-02 2013-08-08 Intel Corporation A method, apparatus, and system for speculative abort control mechanisms
US9268596B2 (en) 2012-02-02 2016-02-23 Intel Corparation Instruction and logic to test transactional execution status
WO2013115820A1 (en) * 2012-02-02 2013-08-08 Intel Corporation A method, apparatus, and system for transactional speculation control instructions
US8799588B2 (en) * 2012-02-08 2014-08-05 International Business Machines Corporation Forward progress mechanism for stores in the presence of load contention in a system favoring loads by state alteration
US8984511B2 (en) * 2012-03-29 2015-03-17 Advanced Micro Devices, Inc. Visibility ordering in a memory model for a unified computing system
EP2831721B1 (en) 2012-03-30 2020-08-26 Intel Corporation Context switching mechanism for a processing core having a general purpose cpu core and a tightly coupled accelerator
US9298632B2 (en) * 2012-06-28 2016-03-29 Intel Corporation Hybrid cache state and filter tracking of memory operations during a transaction
CN105760265B (zh) * 2012-06-29 2019-11-05 英特尔公司 用于测试事务性执行状态的指令和逻辑
US9430166B2 (en) * 2012-08-10 2016-08-30 International Business Machines Corporation Interaction of transactional storage accesses with other atomic semantics
US20140129784A1 (en) * 2012-11-07 2014-05-08 Mellanox Technologies, Ltd. Methods and systems for polling memory outside a processor thread
US9411739B2 (en) * 2012-11-30 2016-08-09 Intel Corporation System, method and apparatus for improving transactional memory (TM) throughput using TM region indicators
WO2014094303A1 (zh) * 2012-12-21 2014-06-26 华为技术有限公司 一种监控记录管理方法与装置
US9251073B2 (en) 2012-12-31 2016-02-02 Intel Corporation Update mask for handling interaction between fills and updates
US9026698B2 (en) * 2013-03-15 2015-05-05 Intel Corporation Apparatus, system and method for providing access to a device function
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
US11221967B2 (en) * 2013-03-28 2022-01-11 Hewlett Packard Enterprise Development Lp Split mode addressing a persistent memory
RU2635044C2 (ru) * 2013-06-27 2017-11-08 Интел Корпорейшн Режим слежения в устройстве обработки в системах трассировки команд
US9535744B2 (en) 2013-06-29 2017-01-03 Intel Corporation Method and apparatus for continued retirement during commit of a speculative region of code
US9292444B2 (en) 2013-09-26 2016-03-22 International Business Machines Corporation Multi-granular cache management in multi-processor computing environments
US9298626B2 (en) 2013-09-26 2016-03-29 Globalfoundries Inc. Managing high-conflict cache lines in transactional memory computing environments
US9329890B2 (en) 2013-09-26 2016-05-03 Globalfoundries Inc. Managing high-coherence-miss cache lines in multi-processor computing environments
US9298623B2 (en) * 2013-09-26 2016-03-29 Globalfoundries Inc. Identifying high-conflict cache lines in transactional memory computing environments
US9086974B2 (en) 2013-09-26 2015-07-21 International Business Machines Corporation Centralized management of high-contention cache lines in multi-processor computing environments
US9524195B2 (en) 2014-02-27 2016-12-20 International Business Machines Corporation Adaptive process for data sharing with selection of lock elision and locking
JP6197585B2 (ja) * 2013-11-01 2017-09-20 富士通株式会社 情報処理装置、及び、情報処理装置の制御方法
US9465673B2 (en) 2014-02-27 2016-10-11 International Business Machines Corporation Deferral instruction for managing transactional aborts in transactional memory computing environments to complete transaction by deferring disruptive events handling
US9311178B2 (en) 2014-02-27 2016-04-12 International Business Machines Corporation Salvaging hardware transactions with instructions
US9471371B2 (en) 2014-02-27 2016-10-18 International Business Machines Corporation Dynamic prediction of concurrent hardware transactions resource requirements and allocation
US20150242216A1 (en) 2014-02-27 2015-08-27 International Business Machines Corporation Committing hardware transactions that are about to run out of resource
US9645879B2 (en) 2014-02-27 2017-05-09 International Business Machines Corporation Salvaging hardware transactions with instructions
US9424072B2 (en) 2014-02-27 2016-08-23 International Business Machines Corporation Alerting hardware transactions that are about to run out of space
US9361041B2 (en) 2014-02-27 2016-06-07 International Business Machines Corporation Hint instruction for managing transactional aborts in transactional memory computing environments
US9411729B2 (en) 2014-02-27 2016-08-09 International Business Machines Corporation Salvaging lock elision transactions
US9575890B2 (en) 2014-02-27 2017-02-21 International Business Machines Corporation Supporting atomic accumulation with an addressable accumulator
US9442775B2 (en) 2014-02-27 2016-09-13 International Business Machines Corporation Salvaging hardware transactions with instructions to transfer transaction execution control
US9262206B2 (en) 2014-02-27 2016-02-16 International Business Machines Corporation Using the transaction-begin instruction to manage transactional aborts in transactional memory computing environments
US9442853B2 (en) 2014-02-27 2016-09-13 International Business Machines Corporation Salvaging lock elision transactions with instructions to change execution type
US9430273B2 (en) 2014-02-27 2016-08-30 International Business Machines Corporation Suppressing aborting a transaction beyond a threshold execution duration based on the predicted duration
US9336097B2 (en) 2014-02-27 2016-05-10 International Business Machines Corporation Salvaging hardware transactions
US9329946B2 (en) 2014-02-27 2016-05-03 International Business Machines Corporation Salvaging hardware transactions
US9524187B2 (en) 2014-03-02 2016-12-20 International Business Machines Corporation Executing instruction with threshold indicating nearing of completion of transaction
US9817693B2 (en) * 2014-03-14 2017-11-14 International Business Machines Corporation Coherence protocol augmentation to indicate transaction status
US9971627B2 (en) 2014-03-26 2018-05-15 Intel Corporation Enabling maximum concurrency in a hybrid transactional memory system
CN109240945B (zh) 2014-03-26 2023-06-06 阿里巴巴集团控股有限公司 一种数据处理方法及处理器
US9256553B2 (en) 2014-03-26 2016-02-09 International Business Machines Corporation Transactional processing based upon run-time storage values
US9262343B2 (en) 2014-03-26 2016-02-16 International Business Machines Corporation Transactional processing based upon run-time conditions
US20150278123A1 (en) * 2014-03-28 2015-10-01 Alex Nayshtut Low-overhead detection of unauthorized memory modification using transactional memory
US9778949B2 (en) 2014-05-05 2017-10-03 Google Inc. Thread waiting in a multithreaded processor architecture
US9600442B2 (en) 2014-07-18 2017-03-21 Intel Corporation No-locality hint vector memory access processors, methods, systems, and instructions
US9507938B2 (en) * 2014-12-23 2016-11-29 Mcafee, Inc. Real-time code and data protection via CPU transactional memory support
US9658963B2 (en) * 2014-12-23 2017-05-23 Intel Corporation Speculative reads in buffered memory
US10540524B2 (en) 2014-12-31 2020-01-21 Mcafee, Llc Memory access protection using processor transactional memory support
GB2536871A (en) * 2015-03-04 2016-10-05 Advanced Risc Mach Ltd An apparatus and method to generate trace data in response to transactional execution
US9652168B2 (en) * 2015-04-10 2017-05-16 International Business Machines Corporation Adaptive concurrency control using hardware transactional memory and locking mechanism
CN111858256B (zh) * 2015-12-25 2024-05-28 北京忆芯科技有限公司 命令队列监控电路、数据交换方法及其设备
US10095622B2 (en) 2015-12-29 2018-10-09 Intel Corporation System, method, and apparatuses for remote monitoring
US10547680B2 (en) * 2015-12-29 2020-01-28 Intel Corporation Systems, methods, and apparatuses for range protection
US11163682B2 (en) * 2015-12-29 2021-11-02 Intel Corporation Systems, methods, and apparatuses for distributed consistency memory
CN108595371B (zh) * 2016-01-20 2019-11-19 北京中科寒武纪科技有限公司 用于向量运算的数据读取、写入及读写调度器及保留站
CN105718357B (zh) * 2016-01-22 2018-12-28 烽火通信科技股份有限公司 一种内存监视的方法
SG11201806099WA (en) * 2016-02-19 2018-08-30 Huawei Tech Co Ltd Method and apparatus for accessing flash memory device
CN108701003B (zh) 2016-03-31 2022-04-26 英特尔公司 用于对远程节点的许多存储操作的原子写入的结构弹性支持
US20180004681A1 (en) * 2016-07-02 2018-01-04 Intel Corporation Systems, Apparatuses, and Methods for Platform Security
KR20190130570A (ko) * 2017-02-20 2019-11-22 인텐시베이트 인코포레이티드 슈퍼-스레드 프로세서
EP3610373B1 (en) 2017-04-19 2022-03-30 Huawei Technologies Co., Ltd. Updating metadata in hardware transactional memory user aborts
CN108062224B (zh) * 2017-12-29 2021-04-23 北京奇虎科技有限公司 基于文件句柄的数据读写方法、装置及计算设备
US11383742B2 (en) 2018-05-21 2022-07-12 C.D.L. Electric Company, Inc. Grade crossing gate arm position detection system
EP3588280B1 (en) 2018-06-25 2021-09-08 ARM Limited Handling load-exclusive instructions in apparatus having support for transactional memory
US10795828B2 (en) 2018-08-10 2020-10-06 Micron Technology, Inc. Data validity tracking in a non-volatile memory
US11714676B2 (en) * 2020-01-03 2023-08-01 International Business Machines Corporation Software-directed value profiling with hardware-based guarded storage facility
US11753782B2 (en) 2021-10-11 2023-09-12 C.D.L. Electric Company, Inc. Quick-replacement gear for grade crossing gate mechanism
WO2024107364A1 (en) * 2022-11-14 2024-05-23 Ascenium, Inc. Parallel processing using hazard detection and mitigation
KR102579320B1 (ko) 2023-04-19 2023-09-18 메티스엑스 주식회사 캐시 메모리 장치 및 이를 이용하는 캐시 스케줄링 구현 방법

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006518077A (ja) * 2003-02-13 2006-08-03 サン・マイクロシステムズ・インコーポレイテッド 臨界領域を投機的に実行することによりロックを回避するための方法および装置
WO2007115003A1 (en) * 2006-03-30 2007-10-11 Intel Corporation Transactional memory in out-of-order processors
WO2008005687A2 (en) * 2006-06-30 2008-01-10 Intel Corporation Global overflow method for virtualized transactional memory
US20080104332A1 (en) * 2006-10-31 2008-05-01 Gaither Blaine D Cache memory system and method for providing transactional memory
JP2008515055A (ja) * 2004-09-30 2008-05-08 インテル・コーポレーション トランザクショナルなメモリアクセスのハイブリッドハードウェア・ソフトウェア実現のための方法及び装置
US20080148262A1 (en) * 2006-12-15 2008-06-19 David Dice Method and apparatus for executing a long transaction
JP6040176B2 (ja) * 2008-12-30 2016-12-07 インテル・コーポレーション トランザクショナルメモリ(tm)システムにおける読み出し及び書き込み監視属性

Family Cites Families (43)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB8728494D0 (en) 1987-12-05 1988-01-13 Int Computers Ltd Multi-cache data storage system
JP2651037B2 (ja) 1990-04-23 1997-09-10 株式会社日立製作所 アドレスバス制御装置
US6526481B1 (en) 1998-12-17 2003-02-25 Massachusetts Institute Of Technology Adaptive cache coherence protocols
US6272602B1 (en) 1999-03-08 2001-08-07 Sun Microsystems, Inc. Multiprocessing system employing pending tags to maintain cache coherence
US6549996B1 (en) 1999-07-02 2003-04-15 Oracle Corporation Scalable multiple address space server
US7162612B2 (en) * 2000-08-16 2007-01-09 Ip-First, Llc Mechanism in a microprocessor for executing native instructions directly from memory
US6490668B2 (en) 2000-12-15 2002-12-03 Hewlett-Packard Company System and method for dynamically moving checksums to different memory locations
US7035963B2 (en) 2000-12-27 2006-04-25 Intel Corporation Method for resolving address space conflicts between a virtual machine monitor and a guest operating system
US6499085B2 (en) 2000-12-29 2002-12-24 Intel Corporation Method and system for servicing cache line in response to partial cache line request
US20030005219A1 (en) 2001-06-29 2003-01-02 Royer Robert J. Partitioning cache metadata state
US7272622B2 (en) * 2001-10-29 2007-09-18 Intel Corporation Method and apparatus for parallel shift right merge of data
US7032125B2 (en) 2002-04-25 2006-04-18 Lsi Logic Corporation Method for loosely coupling metadata and data in a storage array
US7003631B2 (en) 2002-05-15 2006-02-21 Broadcom Corporation System having address-based intranode coherency and data-based internode coherency
US7062610B2 (en) 2002-09-30 2006-06-13 Advanced Micro Devices, Inc. Method and apparatus for reducing overhead in a data processing system with a cache
FR2859307A1 (fr) 2003-08-27 2005-03-04 St Microelectronics Sa Memoire cache a lecture asynchrone et dispositif de controle de l'acces a une memoire de donnees comprenant une telle memoire cache
US20050091459A1 (en) 2003-10-23 2005-04-28 Nhon Quach Flexible mechanism for enforcing coherency among caching structures
US8407433B2 (en) * 2007-06-25 2013-03-26 Sonics, Inc. Interconnect implementing internal controls
US7395374B2 (en) 2004-01-20 2008-07-01 Hewlett-Packard Company, L.P. System and method for conflict responses in a cache coherency protocol with ordering point migration
US7177987B2 (en) 2004-01-20 2007-02-13 Hewlett-Packard Development Company, L.P. System and method for responses between different cache coherency protocols
DE602004011689T2 (de) * 2004-04-14 2009-02-05 Telecom Italia S.P.A. Verfahren und System zur Handhabung der Übermittlung von Inhalten in Kommunikationsnetzen
US7644239B2 (en) 2004-05-03 2010-01-05 Microsoft Corporation Non-volatile memory cache performance improvement
US7243200B2 (en) * 2004-07-15 2007-07-10 International Business Machines Corporation Establishing command order in an out of order DMA command queue
JP4431022B2 (ja) 2004-10-18 2010-03-10 株式会社日立製作所 コンピュータシステム及びその制御方法
US7337280B2 (en) * 2005-02-10 2008-02-26 International Business Machines Corporation Data processing system and method for efficient L3 cache directory management
KR100704037B1 (ko) 2005-04-15 2007-04-04 삼성전자주식회사 이종의 비휘발성 메모리를 가지는 데이터 저장장치와 그의구동 방법
US20060236039A1 (en) * 2005-04-19 2006-10-19 International Business Machines Corporation Method and apparatus for synchronizing shared data between components in a group
US7568070B2 (en) * 2005-07-29 2009-07-28 Qualcomm Incorporated Instruction cache having fixed number of variable length instructions
US7533215B2 (en) 2005-09-15 2009-05-12 Intel Corporation Distributed and packed metadata structure for disk cache
US8225297B2 (en) 2005-12-07 2012-07-17 Microsoft Corporation Cache metadata identifiers for isolation and sharing
US8001538B2 (en) 2005-12-07 2011-08-16 Microsoft Corporation Software accessible cache metadata
US8683143B2 (en) * 2005-12-30 2014-03-25 Intel Corporation Unbounded transactional memory systems
US8180967B2 (en) 2006-03-30 2012-05-15 Intel Corporation Transactional memory virtualization
US7949794B2 (en) * 2006-11-02 2011-05-24 Intel Corporation PCI express enhancements and extensions
US7783805B2 (en) * 2006-11-29 2010-08-24 Cisco Technology, Inc. Interlocking input/outputs on a virtual logic unit number
US8060482B2 (en) * 2006-12-28 2011-11-15 Intel Corporation Efficient and consistent software transactional memory
US7937535B2 (en) 2007-02-22 2011-05-03 Arm Limited Managing cache coherency in a data processing apparatus
US7917701B2 (en) * 2007-03-12 2011-03-29 Arm Limited Cache circuitry, data processing apparatus and method for prefetching data by selecting one of a first prefetch linefill operation and a second prefetch linefill operation
US8751859B2 (en) 2007-05-10 2014-06-10 International Business Machines Corporation Monitoring lost data in a storage system
US20080307169A1 (en) 2007-06-06 2008-12-11 Duane Arlyn Averill Method, Apparatus, System and Program Product Supporting Improved Access Latency for a Sectored Directory
US8195832B2 (en) 2007-12-12 2012-06-05 Alcatel Lucent Facilitating management of layer 2 hardware address table based on packet priority information
US8108619B2 (en) * 2008-02-01 2012-01-31 International Business Machines Corporation Cache management for partial cache line operations
US20100122073A1 (en) 2008-11-10 2010-05-13 Ravi Narayanaswamy Handling exceptions in software transactional memory systems
US8370577B2 (en) 2009-06-26 2013-02-05 Microsoft Corporation Metaphysically addressed cache metadata

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006518077A (ja) * 2003-02-13 2006-08-03 サン・マイクロシステムズ・インコーポレイテッド 臨界領域を投機的に実行することによりロックを回避するための方法および装置
JP2008515055A (ja) * 2004-09-30 2008-05-08 インテル・コーポレーション トランザクショナルなメモリアクセスのハイブリッドハードウェア・ソフトウェア実現のための方法及び装置
WO2007115003A1 (en) * 2006-03-30 2007-10-11 Intel Corporation Transactional memory in out-of-order processors
WO2008005687A2 (en) * 2006-06-30 2008-01-10 Intel Corporation Global overflow method for virtualized transactional memory
US20080104332A1 (en) * 2006-10-31 2008-05-01 Gaither Blaine D Cache memory system and method for providing transactional memory
US20080148262A1 (en) * 2006-12-15 2008-06-19 David Dice Method and apparatus for executing a long transaction
JP6040176B2 (ja) * 2008-12-30 2016-12-07 インテル・コーポレーション トランザクショナルメモリ(tm)システムにおける読み出し及び書き込み監視属性

Also Published As

Publication number Publication date
JP6342970B2 (ja) 2018-06-13
US20120117334A1 (en) 2012-05-10
CN101814018B (zh) 2013-11-06
JP2014112406A (ja) 2014-06-19
JP2012513067A (ja) 2012-06-07
JP6040176B2 (ja) 2016-12-07
JP5462883B2 (ja) 2014-04-02
TW201037525A (en) 2010-10-16
KR101394741B1 (ko) 2014-05-15
CN101814018A (zh) 2010-08-25
WO2010077850A2 (en) 2010-07-08
US8688917B2 (en) 2014-04-01
TWI448897B (zh) 2014-08-11
WO2010077850A3 (en) 2010-08-26
US20100169579A1 (en) 2010-07-01
KR20120008483A (ko) 2012-01-30
US8627017B2 (en) 2014-01-07

Similar Documents

Publication Publication Date Title
JP6342970B2 (ja) トランザクショナルメモリ(tm)システムにおける読み出し及び書き込み監視属性
JP5860450B2 (ja) ローカルにバッファリングされたデータをサポートするためのキャッシュコヒーレンスプロトコルの拡張
JP5944417B2 (ja) トランザクショナル・メモリ・イベントの処理のためのハードウェアにおけるユーザハンドラの登録
KR101025354B1 (ko) 가상 트랜잭션 메모리를 위한 글로벌 오버플로우 방법
JP5416223B2 (ja) トランザクショナルメモリシステム内でのハードウェア属性のメモリモデル
JP5608738B2 (ja) 無制限トランザクショナルメモリ(utm)システムの最適化
US8612950B2 (en) Dynamic optimization for removal of strong atomicity barriers
JP5451776B2 (ja) ハードウェアフィールドにロッシーなメタデータを保持するためのメタフィジカルアドレス空間
US9280397B2 (en) Using buffered stores or monitoring to filter redundant transactional accesses and mechanisms for mapping data to buffered metadata
JP6023765B2 (ja) 無制限トランザクショナルメモリ(utm)システムの最適化
JP6318440B2 (ja) 無制限トランザクショナルメモリ(utm)システムの最適化

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A132

Effective date: 20171003

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20171228

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20180302

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180403

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20180417

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180517

R150 Certificate of patent or registration of utility model

Ref document number: 6342970

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees