JP6491348B2 - ハードウェアトランザクションメモリ(htm)トランザクションを実行するデータ処理システム、データ処理方法、およびコンピュータプログラム - Google Patents

ハードウェアトランザクションメモリ(htm)トランザクションを実行するデータ処理システム、データ処理方法、およびコンピュータプログラム Download PDF

Info

Publication number
JP6491348B2
JP6491348B2 JP2017546983A JP2017546983A JP6491348B2 JP 6491348 B2 JP6491348 B2 JP 6491348B2 JP 2017546983 A JP2017546983 A JP 2017546983A JP 2017546983 A JP2017546983 A JP 2017546983A JP 6491348 B2 JP6491348 B2 JP 6491348B2
Authority
JP
Japan
Prior art keywords
htm
transaction
data processing
commit
memory
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.)
Active
Application number
JP2017546983A
Other languages
English (en)
Other versions
JP2018516394A (ja
Inventor
アヴニ、ヒレル
レヴィー、エリエゼル
メンデルソン、アヴィ
ウー、ツーグアン
Original Assignee
ホアウェイ・テクノロジーズ・カンパニー・リミテッド
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 ホアウェイ・テクノロジーズ・カンパニー・リミテッド filed Critical ホアウェイ・テクノロジーズ・カンパニー・リミテッド
Publication of JP2018516394A publication Critical patent/JP2018516394A/ja
Application granted granted Critical
Publication of JP6491348B2 publication Critical patent/JP6491348B2/ja
Active 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/084Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
    • 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/46Multiprogramming arrangements
    • G06F9/466Transaction processing
    • G06F9/467Transactional memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1441Resetting or repowering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1471Saving, restoring, recovering or retrying involving logging of persistent data for recovery
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1474Saving, restoring, recovering or retrying in transactions
    • 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
    • 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/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2365Ensuring data consistency and integrity
    • 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/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Quality & Reliability (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Computer Security & Cryptography (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Retry When Errors Occur (AREA)

Description

本発明は、データ処理システム及び方法に関し、詳細には、データ処理システムの共有メモリへのストレージアクセスに関する。
並列プログラミングコンピューティング環境において、並列プロセッサコア又はプログラムが同じメモリ位置へのアクセスを共有する場合、このアクセスは、適切に管理及び同期されなければならない。いくつかのこのような環境において、トランザクションメモリパラダイムが、スレッドによる同期されたメモリアクセスを管理するために用いられることがある。トランザクションメモリアプローチによれば、スレッドは、その後トランザクションがコミットするまで、共有メモリ位置の内容を変更することなく、トランザクションを投機的に実行することができる。2つのトランザクションの間にコンフリクトが検出された場合、トランザクションの1つはアボートされてよい。これにより、他のトランザクションはコミットすることができ、その時点で、コミットされたトランザクションは、共有メモリ位置の内容を変更してよい。
より具体的には、従来のマルチプロセッサコンピュータシステムは、複数の処理ユニット、ならびに1つ又は複数のアドレス、データ及び制御バスを含む。システムメモリが、複数の処理ユニットに連結される。これは、マルチプロセッサコンピュータシステムにおける揮発性メモリの最下位レベルを表し、概して、読み出し及び書き込みアクセスのために、全ての処理ユニットによってアクセス可能である。システムメモリに存在する命令及びデータへのアクセスレイテンシ低減のために、各処理ユニットは、典型的には、それぞれのマルチレベルキャッシュ階層によってさらにサポートされる。その下位レベルは、1つ又は複数のプロセッサコアによって共有されることがある。
キャッシュメモリは、一般的に、必要なデータ及び命令をシステムメモリからロードしなければならないことにより生じるアクセスレイテンシを低減することによって処理を高速化するために、プロセッサによってアクセスされ得るメモリブロックを、一時的にバッファするために用いられる。いくつかのマルチプロセッサシステムにおいて、キャッシュ階層は、少なくとも2つのレベルを含む。レベル1(L1)又は上位レベルのキャッシュは、通常、特定のプロセッサコアに関連付けられたプライベートキャッシュであり、マルチプロセッサシステムにおける他のコアによってはアクセス不可能である。典型的には、ロード又はストア命令のようなメモリアクセス命令に応答して、プロセッサコアは、最初に、上位レベルのキャッシュのディレクトリにアクセスする。要求されたメモリブロックが上位レベルのキャッシュにおいて見つからない場合、プロセッサコアは、次に、要求されたメモリブロックのために、下位レベルのキャッシュ(例えば、レベル2(L2)又はレベル3(L3)キャッシュ)又はシステムメモリにアクセスする。最下位レベルのキャッシュ(例えば、L3キャッシュ)は、しばしば、いくつかのプロセッサコアで共有される。
このようなシステムにおいて、マルチプロセッサソフトウェアは、複数のソフトウェアスレッドから、共有データ構造に同時にアクセスする。共有データに同時にアクセスする場合、典型的には、いわゆる「制約のない競争」又は「コンフリクト」を防止する必要がある。2つのメモリアクセスが同じメモリ位置に対して発生し、これらの少なくとも1つが書き込みであり、これらのアクセス発生の秩序化を確保する手段がない場合に、これらの間でコンフリクトが発生する。
マルチプロセッサソフトウェアは、典型的には、メモリにおける位置の同時の読み出し及び修正を、秩序立った、コンフリクトのない態様で調整するために、ロック変数を用いる。ロック変数は、読み出されるメモリにおける位置であり、次に、おそらくは読み出された値に基づいて、アトミックな態様で特定値に設定される。ロック変数に対する読み出し修正書き込みオペレーションは、しばしば、アトミックな読み出し修正書き込み命令を用いて、又は、ロック変数の読み出し及び修正をアトミックに実行する単一の命令と同じ効果を提供する一連の命令によって、実現される。
このように、アトミックな読み出し修正書き込み命令を介して最初の「アンロック」値を読み出したソフトウェアスレッドは、ロックを「取得」し、ロックを解放するまで、ロックを保持する唯一のソフトウェアスレッドとなるとされている。ロックを保持するスレッドは、現在のスレッドがロックを解放するまで他のスレッドがロックを取得できないので、ロックによって保護される共有メモリ位置を、他のスレッドとコンフリクトすることなく安全に更新することができる。共有位置が適切に読み出し及び/又は修正された場合、ロックを保持するスレッドは、(例えば、ロック変数を書き込み、「アンロック」値にすることによって)ロックを解放し、他のスレッドがストレージにおける共有位置にアクセスすることを可能とする。
ロックが競合するスレッドの共有データへのアクセスを調整する一方で、ロックは、多数の周知の欠点を抱える。これらは、とりわけ、第1に、所与のスレッドが1つより多くのロックを保持し、他のスレッドの前進を防止する場合に、デッドロックを引き起こす可能性、第2に、共有データへのコンフリクトアクセスが発生しなかったであろうことから、ロックが厳密には必要でなかった可能性がある場合のロック取得のパフォーマンスのコストを含む。
これらの制限を克服すべく、トランザクションメモリの概念が利用可能である。トランザクションメモリにおいて、ロード及び/又はストア命令のセットは、「トランザクション」として処理される。構成要素であるロード及びストアオペレーションが他のスレッドとコンフリクトすることなくアトミックに行われる場合、トランザクションは成功する。他のスレッドとのコンフリクトが存在する場合、トランザクションは失敗し、次に、再試行可能となる。トランザクションが失敗し続ける場合、ソフトウェアは、共有データの秩序立ったアクセスを確保すべく、ロックの利用に戻ってよい。
トランザクションメモリをサポートすべく、トランザクションを実行するとコンフリクトが発生する場合のために、基礎となるハードウェアは、トランザクションに関与するストレージ位置、すなわち、トランザクションフットプリントを追跡する。コンフリクトがトランザクションフットプリントにおいて発生した場合、トランザクションはアボートされ、おそらくはリスタートされる。典型的な場合、ロックは保持されない(コンフリクトが発生する場合、トランザクションは、単に1つ又は複数のストレージアクセスを試行し、リスタートする)ので、トランザクションメモリの利用は、複数のロックを保持するスレッドに起因するデッドロックの可能性を低減する。さらに、ロックを取得するオーバヘッドの処理が、概して回避される。
トランザクションメモリは、ハードウェアトランザクションメモリ(HTM)及びソフトウェアトランザクションメモリ(STM)の形式で知られている。ハードウェアトランザクションメモリ(HTM)システムは、トランザクションをサポートすべく、プロセッサ、キャッシュ及びバスプロトコルにおける修正を含んでよい。ソフトウェアトランザクションメモリ(STM)は、ソフトウェアランタイムライブラリ又はプログラミング言語において、トランザクションメモリのセマンティックを提供する。いくつかの将来的なマルチコアプロセッサ世代は、「インテル(登録商標)アーキテクチャ命令セット拡張プログラミングリファレンス」という文献から認識可能であるように、ハードウェアトランザクションメモリ(HTM)の形式を実装する。
本発明の目的は、改良されたデータ処理システム及び方法を提供することである。
この目的は、独立請求項の主題によって実現される。さらなる実装形式が、従属請求項、発明の詳細な説明及び図面において提供される。
本発明は、ハードウェアトランザクションメモリ(HTM)が、システム障害の間であっても、不揮発性メモリにおいて一貫性及び持続性を維持することを可能とすべく、HTMコミット内に持続的な指示をアトミックに追加し、各HTMの書き込みをロギングし、コミット後に各HTMの書き込みをフラッシュするという一般的概念に基づく。
本発明の第1の態様によれば、データ処理システムは、ハードウェアトランザクションメモリ(HTM)トランザクションを実行するように構成される。データ処理システムは、
データを持続的に格納するためのバイトアドレス指定可能な不揮発性メモリと、
HTMトランザクションのコミット成功を示すインジケータを不揮発性メモリに書き込むことによって、HTMトランザクションのコミットに関するアトミックなHTMの書き込みオペレーションを実行するように構成されるプロセッサと、
を備える。
第1の態様の第1の実装形式によれば、プロセッサは、複数のキャッシュラインによってキャッシュメモリに連結され、キャッシュメモリは、キャッシュコヒーレンスなプロトコルを用いてデータをキャッシュするために、プロセッサによって用いられるように構成される。
第1の態様の第2の実装形式によれば、データ処理システムは、HTMトランザクションのコミット成功より前に、HTMトランザクションに関連する書き込みオペレーションを不揮発性メモリにロギングするようにさらに構成される。
第1の態様の第3の実装形式によれば、データ処理システムは、HTMトランザクションのコミット成功より前に、HTMトランザクションに関連する書き込みオペレーションのログを不揮発性メモリにトランスペアレントにフラッシュすることによって、HTMトランザクションに関連する書き込みオペレーションを、不揮発性メモリにロギングするように構成される。
第1の態様の第4の実装形式によれば、データ処理システムは、HTMトランザクションに関連する書き込みオペレーションのログが不揮発性メモリに存在し、HTMトランザクションがロギング状態にある場合には、データ処理システムのリスタートの際に、ロギングを再実行し、詳細には、インジケータを設定し、トランザクションの再実行が完了した場合には、HTMトランザクションを非ロギング状態に設定し、詳細には、インジケータを設定解除する。
ように構成されるリカバリユニットをさらに備える。
第1の態様の第5の実装によれば、データ処理システムは、HTMトランザクションのコミット成功の後で、HTMのオペレーションによって書き込まれたデータを、キャッシュメモリから不揮発性メモリにフラッシュするようにさらに構成される。
第1の態様の第6の実装形式によれば、データ処理システムは、HTMトランザクションのコミット成功の後で、HTMトランザクションを非ロギング状態に設定し、詳細には、インジケータを設定解除するようにさらに構成される。
第1の態様の第7の実装によれば、データ処理システムは、HTMトランザクションをアボートすることなく、HTMのオペレーションによって書き込まれたデータを、キャッシュメモリから不揮発性メモリにトランスペアレントにフラッシュするようにさらに構成される。
第1の態様の第8の実装形式によれば、HTMトランザクションのコミット成功を示すインジケータは、HTMトランザクション識別子、詳細には、コミット記録を含む。
第2の態様によれば、ハードウェアトランザクションメモリ(HTM)トランザクションを実行するためのデータ処理方法は、HTMトランザクションのコミット成功を示すインジケータを不揮発性メモリに書き込むことによって、HTMトランザクションのコミットに関するアトミックなHTMの書き込みオペレーションを実行する段階を備える。
第2の態様の第1の実装形式は、HTMトランザクションのコミット成功より前に、HTMトランザクションに関連する書き込みオペレーションのログを不揮発性メモリにトランスペアレントにフラッシュすることによって、HTMトランザクションに関連する書き込みオペレーションを不揮発性メモリにおいて実行する段階を備える。
第2の態様の第2の実装形式は、HTMトランザクションに関連する書き込みオペレーションのログが不揮発性メモリに存在し、HTMトランザクションがロギング状態である場合には、データ処理システムのリスタートの際に、ロギングを再実行し、詳細には、インジケータを設定し、トランザクションの再実行が完了した場合には、HTMトランザクションを非ロギング状態に設定し、詳細には、インジケータを設定解除する段階を備える。
第2の態様の第3の実装形式は、HTMトランザクションのコミット成功の後で、HTMのオペレーションによって書き込まれたデータを、キャッシュメモリから不揮発性メモリにフラッシュする段階を備える。
第2の態様の第4の実装形式は、HTMトランザクションのコミット成功の後で、HTMトランザクションを非ロギング状態に設定し、詳細には、インジケータを設定解除する段階を備える。
第2の態様の第5の実装形式は、HTMトランザクションをアボートすることなく、HTMのオペレーションによって書き込まれたデータを、キャッシュメモリから不揮発性メモリにトランスペアレントにフラッシュする段階を備える。
本発明の第3の態様によれば、コンピュータプログラムコードは、コンピュータ上で実行された場合に、第2の態様又はその実装形式のデータ処理方法を実行する。
本発明のさらなる実施形態が、以下の図に関連して説明される。
実施形態に係るデータ処理システムの模式図を示す。 実施形態に係るデータ処理方法の模式図を示す。 実施形態に係るデータ処理システムの状態図を示す。 実施形態に係るデータ処理システムの異なる態様を示し、各段階の実装に関する詳細を提供する模式図を示す。
以下の詳細な説明において、開示の一部を形成し、例示により、本開示が実施可能な具体的態様が示される添付図面が参照される。他の態様が利用されてよく、構造的又は論理的変更が、本開示の範囲から逸脱することなく実行可能であることを理解されたい。以下の詳細な説明は、従って、限定する意味でとらえられるべきものではなく、本開示の範囲は、添付の特許請求の範囲によって規定される。
説明される方法に関する開示は、方法を実行するように構成される対応デバイス又はシステムにも適用されてよく、逆もまた同様であることを理解されたい。例えば、具体的な方法の段階が説明される場合、対応デバイス又はシステムは、このようなユニットが明示的に説明又は図示されていないとしても、説明される方法の段階を実行するユニットを含んでよい。さらに、本明細書で説明される様々な例示的態様の特徴は、具体的にそうでないことが示されない限り、互いに組み合わせられてよいことを理解されたい。
図1は、実施形態に係るデータ処理システム100の模式図を示す。データ処理システム100は、ハードウェアトランザクションメモリ(HTM)トランザクションを実行するように構成される。データ処理システム100は、データを持続的に格納するためのバイトアドレス指定可能な不揮発性メモリ101と、プロセッサ103と、を含む。プロセッサ103は、HTMトランザクションのコミット成功を示すインジケータを不揮発性メモリに書き込むことによって、HTMトランザクションのコミットに関するアトミックなHTMの書き込みオペレーションを実行するように構成される。実施形態において、インジケータは、HTMトランザクションのコミットにおける不揮発性ビットであってよい。
不揮発性メモリ(NVM又はNVRAM)は、バイトアドレス指定可能なメモリである。これは、耐久性が高い、すなわち、メモリのデータは、電力障害の間、持続的である。実施形態によれば、ログ記録(コミット成功インジケータを含む)及びアプリケーションデータは、NVMにおいて維持される。
実施形態によれば、HTMトランザクションは、それ自体又は他の進行中のトランザクションをアボートすることなく、NVMにおいて、ログ記録を書き込み、ログ記録及びアプリケーションデータの両方をフラッシュする必要がある。これは、HTMシステムにトランスペアレントな、特別なタイプのフラッシュ命令を必要とし、我々は、これをトランスペアレントフラッシュ(TF)と命名した。主要ベンダの現在のアーキテクチャは、キャッシュからフラッシュされたアドレスを排除しないフラッシュ命令を用い、これらにTFメカニズムを実装できる可能性がある。例えば、X86マイクロアーキテクチャにおいて、TSXブロックを伴うHTMトランザクションを動作させるスレッドは、ログ記録をキャッシュに書き込み、次に、ログ記録をNVMにおけるログ記録エリアにフラッシュするCLWB命令を用いる。
リカバリプロセスは、マシンがリスタートした後で、NVMからコミットインジケータを読み出す。トランザクションが成功したものの、なおロギング状態であることを意味する真に、コミットインジケータが設定されている場合、リカバリプロセスは、適宜、ログ記録を読み出し、アプリケーションデータエリアに書き込む。
実施形態によれば、インジケータは、図4におけるコミット記録によって実装されてよい。コミット成功は、トランザクション書き込みが、システムにおける全ての処理ユニットに対してアトミックに可視化されているポイントである。
実施形態において、プロセッサ103は、複数のキャッシュライン106によってキャッシュメモリ105に連結され、キャッシュメモリ105は、キャッシュコヒーレンスなプロトコルを用いてデータをキャッシュするために、プロセッサ103によって用いられるように構成される。
実施形態において、データ処理システム100は、ログ記録を不揮発性メモリ101のログ記録エリアに形成し、HTMトランザクションに関連するキャッシュデータの書き込みオペレーションを、ログ記録エリアにロギングするようにさらに構成される。ログ記録のデータ構造は、図4を参照可能であり、例えば、Commit Record、Self_id、Size及び<DATA,ADDR>タプルを含む。Commit Recordは、持続的なコミット成功のインジケータである。Self IDは、トランザクション固有の識別子である。<DATA,ADDR>タプル:トランザクションによって書き込まれた、単一のキャッシュラインのデータ及びアドレスのログ記録である。Sizeは、1つのトランザクションにおけるログ記録の数である。
実施形態において、データ処理システム100は、HTMトランザクションのコミットより前に、HTMトランザクションに関連するキャッシュデータの書き込みオペレーションのログを、不揮発性メモリ101にトランスペアレントにフラッシュすることによって、HTMトランザクションに関連するキャッシュデータの書き込みオペレーションを、ログ記録エリアにロギングするように構成される。トランスペアレントフラッシュは、キャッシュメモリ105及びHTMシステムには不可視である。
実施形態において、データ処理システム100は、Commit Recordが真に設定され、HTMのオペレーションに関連するログ記録のデータが不揮発性メモリ101に存在する場合には、データ処理システム100のリスタートの際に、ロギングを再実行するように構成されるリカバリユニット107をさらに含む。ロギングの再実行は、システム障害、例えば、電力障害より前に、なおロギング状態にあり、不揮発性メモリ101にフラッシュされていない可能性のあるアプリケーションデータエリアを、ログ記録エリアから再書き込みすることを意味する。
実施形態において、データ処理システム100は、HTMトランザクションのコミットの後で、HTMのオペレーションに関連する修正されたアプリケーションデータを、キャッシュから不揮発性メモリ101におけるアプリケーションデータエリアにフラッシュするようにさらに構成される。
実施形態において、データ処理システム100は、HTMトランザクションのコミットより前に、キャッシュから図4に示される不揮発性メモリ101におけるログ記録エリアに、HTMのオペレーションに関連する修正されたアプリケーションデータをトランスペアレントにフラッシュし、HTMトランザクションのコミットの後で、HTMトランザクションをアボートすることなく、キャッシュから図4に示される不揮発性メモリ101におけるアプリケーションデータエリアに、HTMのオペレーションに関連する修正されたアプリケーションデータをトランスペアレントにフラッシュするようにさらに構成される。
実施形態において、HTMトランザクションのコミット成功を示すインジケータは、HTMトランザクションのコミット記録を含む。コミット記録は、ブーリアン変数であってよい。ここで、真の値は、トランザクションが成功裏にコミットされたことを意味する。コミット記録が設定される限り、トランザクションの書き込みは、ロギング状態にあり、リスタートにおいてリカバーされる。
図2は、実施形態に係る持続的なHTMトランザクションの主な段階のフローチャートである。
これは、成功した持続的なHTMトランザクションの全ての段階を示す。
1.HTMトランザクションを開始する。
2.アプリケーションデータをキャッシュに書き込み、これをNVMのログ記録エリアにおけるログ記録にロギングする。
3.トランザクションを成功裏にコミットし、同時に、NVMのログ記録エリアにおけるコミット記録において、インジケータを真に設定する。
4.障害が発生しなかった場合、修正されたアプリケーションデータを、キャッシュからNVMにおけるアプリケーションデータエリアにフラッシュする。
5.障害が発生した場合であって、インジケータが真である場合、リスタートにおいて、修正されたアプリケーションデータを、NVMのログ記録エリアからNVMのアプリケーションデータエリアにおけるアプリケーションデータにコピーする。あるいは、インジケータが偽である場合、トランザクションを無視する。
6.NVMのログ記録エリアにおけるコミット記録において、インジケータを偽に設定する。
以下、データ処理システム100及びデータ処理方法200のさらなる実施形態及び実装形式が、以下の表記及び定義を用いて、より詳細に説明される。
例えば、プロセッサ103によって実行されるHTMトランザクションは、Tと示される。データ処理システム100のリスタートにより、データは整合性を有する状態となり、コミットされていないトランザクションの効果を除去し、コミットされたものの喪失した効果を適用する(Restart)。トランザクションは、成功裏にコミットされた場合にファイナライズ(Finalization)され、キャッシュにおけるその全ての書き込みが、NVM101におけるアプリケーションデータエリアにフラッシュされ、コミット記録は、偽に設定される。従って、トランザクションは、その後リスタートが発生した場合には、無視される。αがキャッシュ105におけるメモリアドレスである場合、トランスペアレントフラッシュと称されるTF(α)は、αを不揮発性メモリのアプリケーションデータエリア又はログ記録エリアのいずれかに書き込むが、これを無効化せず、キャッシュコヒーレンシには何ら影響を及ぼさない。
実施形態において、HTMトランザクションTによって書き込まれた、NVM101におけるデータ項目x(アドレス指定可能ワード)の状態は、図3に示される以下の3つのキャラクタリスティックによって定義される。
(1)「Private」/「Shared」:「Private」は、xが1つのスレッドのL1キャッシュにのみ存在し、他のスレッドには不可視であることを意味する。xが「Shared」である場合、キャッシュコヒーレンスにより、その新たな値は可視となる。
(2)「Persistent」/「Volatile」:「Persistent」は、xの最後の書き込みがNVM101に存在することを意味する。あるいは、xの新たな値がキャッシュ105における「Volatile」であり、電力障害において消失することを意味する。
(3)「Logged」/「Clear」:xが「Logged」である場合、リスタートにより、xは、不揮発性ログからリカバーされる。xが「Clear」である場合、そのログ記録がファイナライズされている、又はそのトランザクションが成功裏にコミットされていないので、リスタートは、xに関与しない。
図3は、本願に係るデータ処理システム、例えば、図1に示されるデータ処理システム100によって実行可能なHTMトランザクションにおける、単一の書き込みのステートマシンを示す。実施形態によれば、メカニズムは、<「Private」,「Clear」>の<「Shared」,「Logged」>への移行をアトミックにし、<「Volatile」>の<「Persistent」>への移行が、その項目を読み出す同時HTMトランザクションをアボートしないことを可能とする。概して、「Logged」キャラクタリスティックは、HTMトランザクション全体に適用される。単一のトランザクションの全ての書き込みを、「Clear」から「Logged」に移行させることは、単一の持続的な書き込みを必要とする。本願の実施形態に係るHTMコミットにおいて、全ての書き込みがHTMによって顕在化され、同時にロギングされる。実施形態において、各書き込みは、持続的なログ記録を生成するが、コミット成功まで、書き込みがリスタートプロセスによって再生されないという意味では、書き込みは、ロギングされていない。図4は、異なる段階におけるアクションの詳細なフローチャートである。
HTMトランザクションTが変数xに書き込む場合、xは、L1キャッシュ、例えば、プロセッサ103の図1に示されるキャッシュ105において、トランザクション進行中としてマークされ、「private」、すなわち、プロセッサ103のL1キャッシュ105において排他的である。それがキャッシュ105にのみ存在すると、「volatile」であり、トランザクションがまだコミットされていないと、「clear」である、すなわち、「logged」ではない。loggedではないということは、xがリスタートプロセスによって書き込まれないことを暗示する。データ処理システム100のアボート又は電力障害の際、xの「volatile」及び「private」値は破棄され、以前のその「shared」及び「persistent」値に戻る。
実施形態において、HTMコミットにおいて、xの状態は、2回変化する。これは、「shared」になる、すなわち、可視となり、同時に、「logged」でもある。実施形態において、両方の変化は、コミット成功の際に、アトミックに発生する。コミット成功の後で、HTMは、xの新たな値をNVM101にトランスペアレントにフラッシュし、xをクリアする。クリアすることは、第1に、コミット記録(インジケータ)を偽に設定し、第2の段階において、ログマークを設定解除することである。ログマークの役割は、アドレスがシステムにおける1つのトランザクションのみによってロギングされ、リスタートプロセスが、HTMトランザクションによってアドレスに書き込まれた最後の値によって、最大で一度、アドレスを書き込んだことを検証することである。ログマークは、実施形態であり、本特許における特許請求の範囲の一部ではない。xが「logged」である場合にシステム100に障害が発生し、そのリスタートを実行する場合、プロセッサ103は、xのコミットされた値を、NVMのアプリケーションデータエリアにおけるxのログ記録に書き込み、次に、xをクリアするように構成される。
実施形態において、NVM101におけるログ記録は、典型的な連続ログではない。代わりに、これは、インフライトのトランザクション、又はHTMによってコミットされたが、そのログ記録がまだリサイクルされていないトランザクションのうち、いずれかのみのログ記録を保持してよい。
当業者であれば理解するように、L1キャッシュ105が不揮発性であった場合、HTMは、何らさらなる修正がない場合にそうであるように、持続的であろう。リスタートイベントは、インフライトのトランザクションをアボートすることがあり、コミットされたHTMトランザクションは、キャッシュ105にある間、直ちに持続的となり、何らロギングを必要としないであろう。しかしながら、ハードウェアの制限、例えば、NVM101の高速消耗及び低速書き込みに起因して、キャッシュ階層は、予見可能な将来のために、揮発性SRAMに留まる。
図3に示されるように、実施形態において、トランザクションTのコミット成功は、図4に示されるように、自動的に、インジケータ、すなわち、Tのコミット記録を真に設定する。実施形態において、これは、「tx_end_log(T)」命令を用いて、プロセッサ103によって実装されてよい。この命令は、HTMコミットを実行し、Tのコミット記録を設定する。図4は、実施形態に係るNVM101におけるトランザクションTの持続的なフットプリントのレイアウトを模式的に示す。ここには、Tのコミット記録として機能し得る「logged」が示される。命令「tx_end_log(T)」は、コミット記録をNVM101に書き込み、さらに、Tの書き込みステータスを「logged」に設定する。
実施形態において、プロセッサ103は、進行中のトランザクションをアボートすることなく、これらのトランザクションによって、修正されたデータをキャッシュ105からNVM103にフラッシュするように構成される。トランザクションTのファイナライズ中、例えば、命令「tx_end_log(T)」の後、すなわち、HTMのコミットの後で、Tによってキャッシュ105からNVM103におけるアプリケーションデータエリアに書き込まれたアプリケーションデータをフラッシュすることは、この値を読み出す同時進行中のトランザクションをアボートしない。実施形態において、これらのフラッシュは、何らコヒーレンシ要求を生成せず、キャッシュ105のデータを無効化しない。このようなオペレーションは、キャッシュ階層及びHTMサブシステムに影響を及ぼさないので、本明細書において、トランスペアレントフラッシュ(TF)と称される。
実施形態において、プロセッサ103は、HTMトランザクションを開始及びコミットする「tx_start()」及び「tx_end()」関数を含むAPIを、HTMトランザクションに提供してよい。非持続的なHTMの実現は、このような関数を含む。持続的なHTMにおいて、「tx_start()」は、揮発性における場合のように、HTMトランザクションを開始し、一方で、「tx_end()」は、拡張され、トランザクションのログ記録をキャッシュからNVMにおけるログ記録エリアにフラッシュする。続いて、「tx_end_log(T)」命令のようなAPIから呼び出された同時HTMコミット及びインジケータ設定が実行される。続いて、アプリケーションデータ自体がキャッシュからNVMにおけるアプリケーションデータエリアにフラッシュされる。実施形態において、マシンストア命令は、プリプロセッサによって、「tx_write(address,data,size)」関数のような関数と置換されてよい。tx_write関数は、NVMのログ記録エリアにおいて、例えば、非一時的書き込みによって、ログ記録を形成し、アプリケーションデータをアプリケーションデータのキャッシュに書き込む。実施形態において、図4に示されるHTMトランザクションに出現するログ記録及びsizeフィールドは、コミット命令の一部としてではなく、トランザクションの一部としてフラッシュされる。しかしながら、同じキャッシュラインに対する複数の書き込みは、同じログ記録への書き込みが可能である。従って、実施形態において、ログ記録は、同じデータの複数のフラッシュを防止すべく、コミット前に一度のみフラッシュされる。
実施形態において、プロセッサ103は、プロセッサ103が進行保証を付与しないという意味で、ベストエフォートポリシに従うように構成される。結果として、従来の揮発性HTMにおける特定数のアボートの後で、トランザクションは、グローバルロック及びコミットを実行しなければならない。しかしながら、NVMについて、一時的な書き込みが既にメモリを損なっていることがあるので、グローバルロックでは十分ではない。従って、実施形態において、揮発性HTMの書き込み毎に、実行取り消しログエントリが形成される。代替的な実施形態において、全ての再実行ログが、最初の値がNVM101に書き込まれる前に形成される。第1の実施形態は、書き込み後読み出しのオーバヘッドを低減する。
既に上述されたように、図1に示されるキャッシュ105のような揮発性キャッシュ、及びキャッシュにおけるその書き込みの全てに対応するコミットされたHTMトランザクションによれば、実施形態において、プロセッサ103は、書き込みがなお揮発性であった場合に、リスタートがHTMのコミット後に発生した場合のリカバリを可能するために、書き込みをロギングするように構成される。実施形態において、プロセッサ103は、ログへの全ての書き込みがHTMのコミットより前にNVM101に到達する一方で、全てのトランザクションの書き込みが、キャッシュ105に留まるように構成される。実施形態において、プロセッサ103は、既に上述されたように、トランザクションの実行をアボートすることなく、すなわち、トランスペアレントに、ログをNVM101にフラッシュするように構成される。
実施形態において、プロセッサ103は、ロギングが、ロギングされた各変数xに対して最後にコミットされた値によるリスタートプロセスを提供可能であるように構成される。実施形態において、プロセッサ103は、バージョンをxに付加するように構成される。実施形態において、プロセッサ103は、xがシステム100において一度だけロギングされたことを検証するように構成される。複数のログにおけるxの出現が許容される場合、xのログの最新バージョンが保持されなければならない。
実施形態において、各アドレスは、最大で1つのログにおける出現が許容される。複数のログに同じアドレスという例を回避すべく、実施形態において、各メモリアドレスが1つのマークにマッピングされる、ログマークの揮発性アレイが追加される。実施形態において、トランザクションがxを書き込もうとする場合、これは、さらに、xをロギングされたものとしてマークする。実施形態において、xがフラッシュされるまで、いずれの他のトランザクションも、これに書き込むことを許容されない。実施形態において、マーク又はインジケータが用いられる理由は、既に他のトランザクションに書き込まれたものの、まだフラッシュされておらず、従って、なおロギングされている変数への書き込みを防止するためである。全ての他のコンフリクトは、HTMによって直接処理されてよい。実施形態において、リスタートの場合のように、ロギングされたアドレスは固有であり、リスタート及びリカバリプロセスは新たなログ記録を形成しないことが知られているので、マーク又はインジケータのアレイは、揮発性であってよい。実施形態によれば、リスタートの後で、マーク又はインジケータの新たな空のアレイが、割り当てられてよい。
実施形態において、マーク又はインジケータの書き込みは、トランザクションの一部である。すなわち、トランザクションTがxを書き込む場合、これは、さらにxをマークする。コミットにおいて、書き込み及びマーキングは、これらが両方ともトランザクションの書き込みである場合は、同時に有効とされ、一方で、アボートにおいては、両方ともキャンセルされる。実施形態において、マークが設定される限り、Tのログに出現するxの値は、変更不可能である。従って、xがキャッシュからNVM101におけるアプリケーションデータエリアにフラッシュされ、コミット記録が偽に設定された後で、マークは、設定解除されてよい。トランザクションのロード命令は、マークを無視してフルスピードで実行してよく、このことは、読み出されたトランザクションがハードウェアのスピードで処理されるので、本願に係るHTMの主な利点であることを強調することが重要である。
図4は、実施形態に係るトランザクションTのログ記録の持続的な構造を示す。実施形態において、Tは、図4に示されるように、tx_end_logで設定されるブーリアン型のコミット記録を有する。実施形態において、コミット記録は、HTMコミットマイクロコードによって書き込まれ、そのため、利用可能な最速の不揮発性メモリに存在するはずである。実施形態において、トランザクションは、self_idに格納される固有IDをさらに有する。実施形態において、トランザクションは、ログ記録のセットを有する。実施形態において、各ログ記録は、図4に示されるように、修正されたキャッシュラインにおけるデータ、及びシステムメモリにおける当該ラインのアドレスから構成される。実施形態において、データの最大合計サイズは、書き込まれたデータ、従って、ロギングされたデータの最大サイズであるL1キャッシュ105のサイズに等しい。実施形態において、sizeフィールドは、トランザクションのログにおけるログ記録の数である。実施形態において、sizeがゼロの場合はトランザクションがloggedではないと仮定すると、logged及びsizeはまとめられてよい。ただし、ここでは明確性のために、これらは別個に処理される。実施形態において、Tの、図4におけるログ記録エリアの全ては、一度だけNVM101にフラッシュされる。そのため、キャッシュラインが同じトランザクションにおいて複数回書き込まれた場合、このラインのデータは、Tのコミット前に、一度だけログにフラッシュされる。
実施形態において、NVMにおけるアプリケーションデータのアドレス及び対応データである、ログ記録におけるDATA.ADDRフィールドは、リスタートプロセス又はファイナライズが、どのアドレス及びアプリケーションデータを書き込み又はフラッシュするかを認識することを可能とする。実施形態において、アドレスは、キャッシュのフラグメンテーションを回避すべく、別個のアレイに存在し、データには付随しない。実施形態において、アドレス自体のマッピングは、書き込みのインストルメンテーション及びファイナライズにおけるマークを占有及び解放するために用いられる。
開示の具体的な機能又は態様が、いくつかの実装又は実施形態の1つのみに関連して開示されたであろう一方で、このような機能又は態様は、あらゆる所与の又は具体的な用途にとって望ましく有利となり得るように、他の実装又は実施形態の1つ又は複数の他の機能又は態様と組み合わせられてよい。さらに、用語「含む」、「有する」、「伴う」、又はこれらの他の変形が詳細な説明又は特許請求の範囲のいずれかにおいて用いられる程度において、このような用語は、用語「備える」と類似した態様に含まれることが意図される。また、用語「例示的な」、「例えば(for example)」及び「例えば(e.g.)」は、最良又は最適であることを意味するのではなく、単に例であることを意味する。用語「連結」及び「接続」は、これらの派生語と共に用いられていてよい。これらの用語は、2つの要素が、直接物理的又は電気的な接触にあるか、又はこれらが互いに接触していないかに関わらず、これらが直接互いに協働又は相互作用することを示すために用いられたであろうことを理解されたい。
具体的態様が本明細書において図示及び説明されたが、当業者であれば、様々な変更及び/又は均等な実装が、本開示の範囲から逸脱することなく、図示及び説明された具体的態様の代わりに用いられ得ることが理解されよう。本願は、本明細書において説明された具体的態様のあらゆる応用形態又はバリエーションを包含することを意図するものである。
以下の特許請求の範囲の要素は、対応する符号と共に、特定の順序で記載されているが、特許請求の範囲の記載が、これらの要素のいくつか又は全てを実装するための特定の順序を暗示しない限り、これらの要素が当該特定の順序で実装されるように限定することを必ずしも意図するものではない。
多数の代替形態、修正形態、及びバリエーションが、上述の教示に鑑れば、当業者には明らかであろう。勿論、当業者であれば、本発明の多数の応用形態が本明細書において説明されたものを越えて存在することを容易に認識する。本発明は、1つ又は複数の具体的実施形態に関連して説明されたが、当業者であれば、多数の変更が、本発明の範囲から逸脱することなくなされ得ることを認識する。従って、添付の特許請求の範囲及びこれらの均等物の範囲内において、本発明は、本明細書において具体的に説明された以外の態様で実施され得ることを理解されたい。

Claims (9)

  1. ハードウェアトランザクションメモリ(HTM)トランザクションを実行するデータ処理システムであって、
    データを持続的に格納するためのバイトアドレス指定可能な不揮発性メモリと、
    前記HTMトランザクションのコミット成功を示すインジケータを前記不揮発性メモリに書き込むことによって、前記HTMトランザクションのコミットに関するアトミックなHTMの書き込みオペレーションを実行するプロセッサと、
    を備え、
    前記データ処理システムは、さらに、前記HTMトランザクションの前記コミット成功の後で、前記HTMのオペレーションによって書き込まれたデータを、キャッシュメモリから前記不揮発性メモリにフラッシュする、データ処理システム。
  2. ハードウェアトランザクションメモリ(HTM)トランザクションを実行するデータ処理システムであって、
    データを持続的に格納するためのバイトアドレス指定可能な不揮発性メモリと、
    前記HTMトランザクションのコミット成功を示すインジケータを前記不揮発性メモリに書き込むことによって、前記HTMトランザクションのコミットに関するアトミックなHTMの書き込みオペレーションを実行するプロセッサと、
    を備え、
    前記データ処理システムは、さらに、HTMトランザクションをアボートすることなく、前記HTMのオペレーションによって書き込まれたデータを、キャッシュメモリから前記不揮発性メモリにトランスペアレントにフラッシュする、データ処理システム。
  3. 前記プロセッサは、複数のキャッシュラインによってキャッシュメモリに連結され、前記キャッシュメモリは、キャッシュコヒーレンスなプロトコルを用いてデータをキャッシュするために、前記プロセッサによって用いられる、請求項1または2に記載のデータ処理システム。
  4. 前記データ処理システムは、さらに、前記HTMトランザクションの前記コミット成功の後で、前記HTMトランザクションを非ロギング状態に設定し、詳細には、前記インジケータを設定解除する、請求項1からのいずれか1項に記載のデータ処理システム。
  5. 前記HTMトランザクションの前記コミット成功を示すインジケータは、HTMトランザクション識別子、詳細には、コミット記録を含む、請求項1からのいずれか1項に記載のデータ処理システム。
  6. ハードウェアトランザクションメモリ(HTM)トランザクションを実行するためのデータ処理方法であって、
    前記HTMトランザクションのコミット成功を示すインジケータを不揮発性メモリに書き込むことによって、前記HTMトランザクションのコミットに関するアトミックなHTMの書き込みオペレーションを実行する段階と、
    前記HTMトランザクションの前記コミット成功の後で、前記HTMのオペレーションによって書き込まれたデータを、キャッシュメモリから前記不揮発性メモリにフラッシュする段階と、
    を備えるデータ処理方法。
  7. ハードウェアトランザクションメモリ(HTM)トランザクションを実行するためのデータ処理方法であって、
    前記HTMトランザクションのコミット成功を示すインジケータを不揮発性メモリに書き込むことによって、前記HTMトランザクションのコミットに関するアトミックなHTMの書き込みオペレーションを実行する段階と、
    HTMトランザクションをアボートすることなく、前記HTMのオペレーションによって書き込まれたデータを、キャッシュメモリから前記不揮発性メモリにトランスペアレントにフラッシュする段階と、
    を備えるデータ処理方法。
  8. 前記HTMトランザクションの前記コミット成功の後で、前記HTMトランザクションを非ロギング状態に設定し、詳細には、前記インジケータを設定解除する段階を備える、請求項6または7に記載のデータ処理方法。
  9. 請求項からのいずれか1項に記載のデータ処理方法をコンピュータに実行させるプログラム。
JP2017546983A 2015-07-22 2016-07-21 ハードウェアトランザクションメモリ(htm)トランザクションを実行するデータ処理システム、データ処理方法、およびコンピュータプログラム Active JP6491348B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
PCT/EP2015/066802 WO2017012667A1 (en) 2015-07-22 2015-07-22 Hardware transactional memory in non volatile memory with log and no lock
EPPCT/EP2015/066802 2015-07-22
PCT/EP2016/067403 WO2017013202A1 (en) 2015-07-22 2016-07-21 Coherence protocol for hardware transactional memory in shared memory using non volatile memory with log and no lock

Publications (2)

Publication Number Publication Date
JP2018516394A JP2018516394A (ja) 2018-06-21
JP6491348B2 true JP6491348B2 (ja) 2019-03-27

Family

ID=53716497

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017546983A Active JP6491348B2 (ja) 2015-07-22 2016-07-21 ハードウェアトランザクションメモリ(htm)トランザクションを実行するデータ処理システム、データ処理方法、およびコンピュータプログラム

Country Status (7)

Country Link
US (1) US11614959B2 (ja)
EP (1) EP3274826B1 (ja)
JP (1) JP6491348B2 (ja)
KR (1) KR102009259B1 (ja)
CN (2) CN113505088A (ja)
SG (1) SG11201707261TA (ja)
WO (2) WO2017012667A1 (ja)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10303477B2 (en) * 2015-06-26 2019-05-28 Intel Corporation Persistent commit processors, methods, systems, and instructions
US10430186B2 (en) * 2017-10-27 2019-10-01 Vmware, Inc. Speeding up transactions in non-volatile memory using hardware transactional memory
US11307854B2 (en) * 2018-02-07 2022-04-19 Intel Corporation Memory write log storage processors, methods, systems, and instructions
US10678587B2 (en) 2018-02-16 2020-06-09 Oracle International Corporation Persistent multi-word compare-and-swap
US10445238B1 (en) * 2018-04-24 2019-10-15 Arm Limited Robust transactional memory
US11137373B2 (en) * 2018-05-24 2021-10-05 Hf Scientific, Inc. QCM measurement of scale formation
CN108897642B (zh) * 2018-06-27 2020-11-27 清华大学 持久性事务内存系统中日志机制的优化方法及装置
KR102695771B1 (ko) * 2018-07-06 2024-08-19 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작방법
US10754776B2 (en) * 2018-07-30 2020-08-25 International Business Machines Corporation Cache balance when using hardware transactional memory
US10846222B1 (en) 2019-07-01 2020-11-24 Vmware, Inc. Dirty data tracking in persistent memory systems
US11144221B1 (en) * 2020-04-10 2021-10-12 Dell Products L.P. Efficient resilience in a metadata paging array for in-flight user data
CN112256200A (zh) * 2020-10-21 2021-01-22 宝能(广州)汽车研究院有限公司 数据读写方法和存储介质

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5369757A (en) * 1991-06-18 1994-11-29 Digital Equipment Corporation Recovery logging in the presence of snapshot files by ordering of buffer pool flushing
US5897656A (en) 1996-09-16 1999-04-27 Corollary, Inc. System and method for maintaining memory coherency in a computer system having multiple system buses
CA2313802A1 (en) * 2000-07-11 2002-01-11 Michael Corcoran Dynamic web page caching system and method
US8683143B2 (en) * 2005-12-30 2014-03-25 Intel Corporation Unbounded transactional memory systems
US8321637B2 (en) * 2007-05-14 2012-11-27 International Business Machines Corporation Computing system with optimized support for transactional memory
US8001548B2 (en) * 2008-10-20 2011-08-16 Microsoft Corporation Transaction processing for side-effecting actions in transactional memory
US9785462B2 (en) * 2008-12-30 2017-10-10 Intel Corporation Registering a user-handler in hardware for transactional memory event handling
CN101510162B (zh) * 2009-03-26 2011-11-02 浙江大学 一种基于延时策略的软件事务内存的实现方法
CN101872299B (zh) * 2010-07-06 2013-05-01 浙江大学 冲突预测实现方法及所用冲突预测处理装置事务存储器
US8352688B2 (en) 2010-11-15 2013-01-08 Advanced Micro Devices, Inc. Preventing unintended loss of transactional data in hardware transactional memory systems
US10817390B2 (en) * 2011-09-14 2020-10-27 Hewlett Packard Enterprise Development Lp Imparting durability to a transactional memory system
US9213501B2 (en) * 2013-05-23 2015-12-15 Netapp, Inc. Efficient storage of small random changes to data on disk
US9146774B2 (en) * 2013-12-12 2015-09-29 International Business Machines Corporation Coalescing memory transactions
CN104657153B (zh) * 2015-03-19 2017-10-17 哈尔滨工业大学 一种基于签名技术的硬件事务内存系统

Also Published As

Publication number Publication date
KR102009259B1 (ko) 2019-08-09
SG11201707261TA (en) 2017-10-30
US20180143850A1 (en) 2018-05-24
CN113505088A (zh) 2021-10-15
CN107851037A (zh) 2018-03-27
US11614959B2 (en) 2023-03-28
WO2017013202A1 (en) 2017-01-26
EP3274826A1 (en) 2018-01-31
EP3274826B1 (en) 2024-09-11
WO2017012667A1 (en) 2017-01-26
JP2018516394A (ja) 2018-06-21
CN107851037B (zh) 2021-06-08
KR20170123683A (ko) 2017-11-08

Similar Documents

Publication Publication Date Title
JP6491348B2 (ja) ハードウェアトランザクションメモリ(htm)トランザクションを実行するデータ処理システム、データ処理方法、およびコンピュータプログラム
US9195600B2 (en) Mechanisms to accelerate transactions using buffered stores
KR100954623B1 (ko) 무한 트랜잭션 메모리 시스템
US8140773B2 (en) Using ephemeral stores for fine-grained conflict detection in a hardware accelerated STM
US8200909B2 (en) Hardware acceleration of a write-buffering software transactional memory
US8364911B2 (en) Efficient non-transactional write barriers for strong atomicity
RU2501071C2 (ru) Механизм запроса поздней блокировки для пропуска аппаратной блокировки (hle)
US10445238B1 (en) Robust transactional memory
US8255626B2 (en) Atomic commit predicated on consistency of watches
US20080065864A1 (en) Post-retire scheme for tracking tentative accesses during transactional execution
TWI801603B (zh) 處理獨佔式載入指令的資料處理設備、方法及電腦程式
KR102284957B1 (ko) 트랜잭션 데이터 처리 실행 모드에 대한 호출 스택 유지
KR20190129720A (ko) 트랜잭셔널 메모리를 이용하는 시스템에서 캐시 구조체를 관리하는 기술
CN113722052B (zh) 一种基于数据双版本的非易失内存更新方法
WO2017074451A1 (en) Resuming execution in response to a failure
US12050810B2 (en) Systems and methods for hardware-based asynchronous persistence
WO2024217677A1 (en) Crash-consistent persistent memory devices and methods
Sanyal et al. QuickTM: A hardware solution to a high performance unbounded transactional memory

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180522

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180813

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20180828

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20181228

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

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20190111

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: 20190129

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190228

R150 Certificate of patent or registration of utility model

Ref document number: 6491348

Country of ref document: JP

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

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250