JP4774056B2 - トランザクショナルなメモリアクセスのハイブリッドハードウェア・ソフトウェア実現のための方法及び装置 - Google Patents

トランザクショナルなメモリアクセスのハイブリッドハードウェア・ソフトウェア実現のための方法及び装置 Download PDF

Info

Publication number
JP4774056B2
JP4774056B2 JP2007533617A JP2007533617A JP4774056B2 JP 4774056 B2 JP4774056 B2 JP 4774056B2 JP 2007533617 A JP2007533617 A JP 2007533617A JP 2007533617 A JP2007533617 A JP 2007533617A JP 4774056 B2 JP4774056 B2 JP 4774056B2
Authority
JP
Japan
Prior art keywords
memory
transactional
write
instruction
cache
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2007533617A
Other languages
English (en)
Other versions
JP2008515055A (ja
Inventor
クマール、サンジーブ
ヒューズ、クリストファー
クンドゥ、パーサ
グエン、アンソニー
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of JP2008515055A publication Critical patent/JP2008515055A/ja
Application granted granted Critical
Publication of JP4774056B2 publication Critical patent/JP4774056B2/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
    • 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
    • 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
    • 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/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0846Cache with multiple tag or data arrays being simultaneously accessible
    • G06F12/0848Partitioned cache, e.g. separate instruction and operand caches
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30087Synchronisation or serialisation instructions
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3824Operand accessing
    • G06F9/3834Maintaining memory consistency
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory
    • G06F9/38585Result writeback, i.e. updating the architectural state or memory with result invalidation, e.g. nullification
    • 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
    • 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/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/526Mutual exclusion algorithms
    • G06F9/528Mutual exclusion algorithms by using speculative mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/62Details of cache specific to multiprocessor cache arrangements
    • G06F2212/621Coherency control relating to peripheral accessing, e.g. from DMA or I/O device

Description

本発明の実施の形態は、トランザクショナルメモリ(transactional memory)の技術分野に関する。より詳細には、本発明の実施の形態は、トランザクショナルなメモリアクセスのハイブリッドハードウェア・ソフトウェア実現に関する。
トランザクショナルメモリサービスは、アプリケーション、プログラム、モジュール等、特にアプリケーションプログラムインタフェース(API)が原子的な方法、一貫した方法及び隔離した方法でメモリにアクセスすることを可能にする。例えば、トランザクショナルメモリは、データベースサービス及びディレクトリサービス等のパーシスタントポインタリッチデータ構造を管理するランタイムエンジンの一部として使用され得る。
APIは、オペレーティングシステムやデータベースマネージメントシステム(DBMS)等のシステムプログラムと通信するため、アプリケーション、プログラム、モジュール等により利用される言語又はメッセージフォーマットとみなすことができる。APIは、ファンクションコールをプログラムに書き込むことにより実現可能であり、実行のための具体的なサブルーチンへのリンクを提供する。このように、APIは、何らかのプログラムモジュール又はルーチンが、ファンクションコールによって要求されるタスクを実行するためにすでに所定位置にあるか又はリンクされていることを示す。
トランザクションナルメモリにより、パラレルなプログラムを書き込むことが容易になり、トランザクションメモリを使用することにより、個々のスレッドが同時に進行することが可能になり、それにより極めて高い処理効率が得られる。しかしながら、目下プログラマは、トランザクショナルメモリを利用する際に困難な選択をしなければならない。
1つの選択は、トランザクショナルメモリアプリケーションプログラムインタフェース(API)のハードウェアのみの実現を使用することであり、その場合、プログラマは、プログラムのハードウェア資源要件を追跡し続け、それらが利用可能なハードウェア資源を超えないことを確実にする責任がある。トランザクショナルメモリ(以下、TM)の適用性及び有用性は、この手法の下では制限される。他の選択は、プログラムすることが容易である(実際的に資源の制限がないため)TM APIのソフトウェアのみの実現を使用することであるが、ソフトウェア手法には、高い実行時間オーバヘッドがある。
トランザクショナルメモリ(TM)をより詳細に見ると、TMは、データベーストランザクションから導出される。データベースでは、トランザクションは、ACIDプロパティと呼ばれる4つのプロパティを満足させなければならない動作群である。第1のACIDプロパティは原子性である。原子性は、データベーストランザクションがオール・オア・ナシングに実行されることを要求する。トランザクションは、プログラムがアボートするためか又はエラーによってアボートされる可能性がある。原子性は、トランザクションの動作のすべてが実行されるか、又はそれらのいずれも実行されないことを要求する。第2のACIDプロパティは、一貫性である。一貫性は、トランザクションが実行される前にデータベースが一貫した状態である場合、データベースが一貫した状態のままであるべきことを要求する。第3のACIDプロパティは、隔離性(isolation:アイソレーション)である。隔離性プロパティは、実行されるべきすべてのトランザクションがある種の逐次的順序で行われるように見えなければならない(すなわち、それらは直列可能であるべきである)ことを示す。ACIDの下にあるために必要な最後の且つ第4のプロパティは耐久性である。耐久性は、トランザクションがマシンクラッシュを切り抜けることを要求する。すなわち、トランザクションは、コミットされることが可能になる前に、安定記憶装置(たとえばディスク)に書き込まれなければならない。しかしながら、TMのすべての実現が、トランザクションが上述した4つのプロパティのすべてを満足させるよう要求するとは限らない、ということが留意されるべきである。たとえば、実現によっては、耐久性は要件ではない。
上述したACIDプロパティのすべて又は一部に準拠する以外、トランザクショナルメモリを利用するトランザクション及びデータベースは、同時実行、無デッドロック性及び非ブロッキングプロパティをサポートすることが要求されることが多い。通常、競合しないトランザクションの同時実行は、トランザクショナルメモリシステムによってサポートされる。データベース実現によっては、これらの種類のトランザクションを実現するためにロック(たとえば2位相ロック)を使用する。したがって、これらの場合、デッドロックが発生する可能性がある。トランザクショナルメモリシステムでは、無デッドロック性は、デッドロックを検出すると、単にトランザクションのうちのいくつかをアボートすることによりデッドロックから回復することによって実現される。トランザクショナルメモリシステムにおいてスレッドが他のスレッドの進行を妨げないようにするために、非ブロッキング又は無障害性プロパティが要求される。
これまで、アプリケーションプログラムインタフェース(API)を利用してトランザクショナルなメモリアクセスを実現する2つの一般的な手法があった。一方は、純粋にハードウェアの実現であり、他方は、純粋にソフトウェアの実現である。ハードウェア実現は、Transactional Memory: Architectural Support for Lock-Free Data Structure(Maurice Herlihy、J. Eliot B. Moss著「Transactional Memory: Architectural Support for Lock-Free Data Structures」(International Society for Computers and Their Application, (ISCA) 1993: 289-300))に示されるようなマルチプロセッサアーキテクチャに基づく。この手法を、以下、純ハードウェア手法と呼ぶ。
純ハードウェア手法は、効率的且つ使用が容易なロックを用いない(lock-free)同期方法を提供する。純ハードウェア手法では、通常ロックベースの同期方法に関連する優先順位の逆転、コンボイ現象及びデッドロックがないことを保証することに加えて、パラレルプログラミングに関連する微妙な正確性(subtle correctness)の問題の多くが回避される。
不都合なことに、純ハードウェア手法では、プログラマによる注意深い資源管理が必要である。したがって、純ハードウェア手法は、多種多様のより高度なプロセッサ構造で実現することが非常に困難である。通常、ソフトウェアは、プロセッサ実現を越えて移植性があることが必要であり、アプリケーションレベルにおけるこうした資源の注意深い調整により、純ハードウェア手法の使用が制限される。さらに、動作時、純ハードウェア手法は、トランザクショナルメモリにおけるトランザクションキャッシュしか利用せず、このように資源が制限されるため、プロセススレッドは完了することが保証されず、プログラム誤動作がもたらされる。
APIによるトランザクショナルなメモリアクセスを利用する別の一般的な手法は、たとえば、Software Transactional Memory for Dynamic-Sized Data Structures(Maurice Herlihy、Victor Luchangco、Mark Moir、William N. Scherer III著「Software Transactional Memory for Dynamic-Sized Data Structures」(Principles of Distributed Computing (PODC) 2003))において示されているように、純粋にソフトウェアの手法を利用することによる。この手法を、以下、純ソフトウェア手法と呼ぶ。純ソフトウェア手法の能力は、プログラマが、トランザクショナルメモリセマンティクスを提供するために採用される特定の技法に完全に気付かなくてもよく、APIは特にプログラムが容易である、ということである。不都合なことに、動作時、純ソフトウェア手法の技法では、ソフトウェアオーバヘッドによって著しい減速がもたらされる。
以下の記載において、本発明の様々な実施形態が詳細に説明される。しかしながら、そのような詳細は、本発明の理解を容易にし、本発明を利用するための例示的な実施形態を説明するために含まれる。本発明の範囲内に属しながら、他の変形及び実施形態が可能であるため、このような詳細は本発明を説明された特定の実施形態に限定するのに使用されるべきではない。さらに、本発明の実施形態の完全なる理解を提供するため、多数の詳細が提供されるが、これらの具体的詳細が本発明の実施形態を実現するのに要求されるものではないということが、当業者には明らかであろう。他の具体例では、本発明を不明瞭にすることを避けるため、既知の方法、データタイプ、プロトコル、手順、コンポーネント、電気構造及び回路等の詳細は説明されないか、或いはブロック図により示される。さらに、本発明の実施形態は、特定の実施形態により説明されるが、ハードウェア、ソフトウェア、ファームウェア、ミドルウェア又はこれらの組み合わせにより実現されるようにしてもよい。
本発明の実施形態は、プロセッサの組込みハードウェアサポートを利用し、ハードウェア資源が使い尽くされた場合にソフトウェア方式に戻ることにより、高性能アクセスを提供する、たとえばアプリケーションプログラムインタフェース(API)とともに使用するトランザクショナルメモリ(TM)アクセスのハイブリッドハードウェア・ソフトウェア実現を提供する。このため、ハードウェアTMアクセス及びソフトウェアTMアクセスの利益が同時に達成される。
一実施形態では、後述するように、最も一般的な場合にハードウェアTM支援を可能にするようにオリジナルトランザクションオブジェクトを変更することにより、TM APIソフトウェア手法に関連する性能の不利益が大幅に低減される。このため、一般的な場合は、高性能のために組込みハードウェアサポート(たとえばトランザクショナルメモリキャッシュ)を利用することによって処理され、問題が発生すると、ハードウェアが使い尽くされた場合はソフトウェアTM方式に戻る。
図1は、本発明の実施形態を実現することができるコンピュータシステム構成の一例の部分的なブロック図を示す。システム構成100は、中央処理装置(CPU)等の少なくとも1つのプロセッサ101と、チップセット103と、システムメモリ装置105と、1つ又は複数の入出力(I/O)装置113とのインタフェースのための1つ又は複数のインタフェース111と、ネットワークインタフェース107とを含む。
チップセット103は、メモリコントロールハブ(MCH)及び/又はI/Oコントロールハブを含んでもよい。チップセット103は、プロセッサ101とコンピュータシステム100の他のコンポーネントとの間のデータ転送のためのハブ又はコアとして機能する1つ又は複数の集積回路チップであってもよい。さらに、コンピュータシステム100は、他のプロセッサ(例えば、マルチプロセッサシステムにおける)、コプロセッサ及び他のコンポーネント等の追加的なコンポーネント(図示せず)を含んでもよく、以上はコンピュータシステムのごく基本的な例に過ぎない。
ここでの説明のため、「プロセッサ」又は「CPU」という用語は、命令シーケンスを実行可能な任意の機械を指し、以下に限定されるものではないが、汎用マイクロプロセッサ、特定用途マイクロプロセッサ、特定用途向け集積回路(ASIC)、マルチメディアコントローラ、信号プロセッサ、マイクロコントローラ等を含むものとされる。一実施形態では、CPU101は、インテルアーキテクチャ命令セットの実行が可能な汎用的な高速マイクロプロセッサである。例えば、CPU101は、INTEL(登録商標)Architecture 32−bit(IA−32)プロセッサ(PENTIUM(登録商標)4M等)等のINTEL(登録商標)PENTIUM(登録商標)プロセッサ群の1つとすることが可能である。
CPU101、チップセット103及び他のコンポーネントは、チップセット103を介しシステムメモリ装置105にアクセスする。例えば、メモリコントロールハブを用いるチップセット103は、システムメモリ装置105を対象とするメモリトランザクションに供する。
システムメモリ装置105は、スタティックランダムアクセスメモリ(SRAM)、ダイナミックランダムアクセスメモリ(DRAM)、シンクロナスダイナミックランダムアクセスメモリ(SDRAM)、及び/又はダブルデータレート(DDR)SDRAM又はダブルデータレートDRAM等、デジタル情報を格納するようになっている任意の記憶装置を含んでもよい。したがって一実施形態では、システムメモリ装置105は、揮発性メモリを含む。さらに、システムメモリ装置はまた、読出し専用メモリ(ROM)等の不揮発性メモリを含むことが可能である。
さらに、システムメモリ装置105は、ハードディスクドライブ、フロッピーディスクドライブ、光ディスクドライブ等の他の記憶装置、及び適切なインタフェースをさらに含んでもよい。
さらに、システムメモリ装置105は、コンピュータシステム100内でトランザクショナルなメモリアクセス及びトランザクション(以下、アクセスという用語とトランザクションという用語とは同義で使用する)を可能にするようにプロセッサ101において実現されるハイブリッドハードウェア/ソフトウェアTMエンジンに対する本発明の実施形態に従う技法を実現するようにプロセッサ101が動作するための、ハードウェア/ソフトウェアトランザクションメモリ(TM)エンジンプログラムを不揮発性メモリに格納してもよい。
システムメモリ装置はまた、データベース108とのトランザクショナルメモリトランザクションを実現するために専用のメモリの領域を含んでもよい。たとえば、データベース108は、企業データベース、金融データベース、プロジェクト管理データベース、ディレクトリサービス等のようなデータベースか、又は、通常トランザクショナルメモリタイプトランザクションで利用される他のポインタリッチデータ構造を含んでもよい。
さらに、コンピュータシステム100は、ディスクドライブ、モニタ、キーパッド、モデム、プリンタ、或いは他の適切なタイプのI/O装置等のI/O装置113とのインタフェースのための適切なインタフェース11を含んでもよい。
コンピュータシステム100はまた、さらにローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)やインターネット等のネットワーク109とコンピュータシステム100とのインタフェースのためのネットワークインタフェース107を含んでもよい。
図1の基本的なコンピュータシステム構成100は、トランザクショナルなメモリアクセスのハイブリッドハードウェア・ソフトウェア実現に利用可能な1つのタイプのコンピュータシステムの一例である。例示的な図1のコンピュータシステム構成100は、基本的なコンピュータシステムの一例に過ぎず、他の多くのタイプ及び変形が可能であることが、当業者に理解されるべきである。さらに、当業者は図1に示された例示的な環境が本発明の実施形態を限定するものではないということを認識するであろう。さらに、単一のコンピュータシステム構成100に加えて、或いはその代わりに、コンピュータクラスタ又は他のグループ(コンピュータシステム構成100と類似、又は異なる)が、本発明の実施形態を実現するのに利用されてもよいことが理解されるべきである。
より詳細には、図1に示すように、トランザクショナルエンジン118を利用するプロセッサ101は、ハイブリッドハードウェア/ソフトウェアTMアクセス手法を実現することができる。特に、トランザクショナルエンジン118は、詳細に後述するように、ハイブリッドハードウェア/ソフトウェアTMエンジンに関連する本発明の実施形態を実現するために、トランザクショナルエンジン118によって実現される拡張TM命令セットアーキテクチャとともに標準TM機能を含む。また、プロセッサ101は、互いに結合されてもよいトランザクショナルキャッシュ132とレギュラーメモリキャッシュ134とを含む。
より詳細に後述するように、トランザクショナルエンジン118で実現されるTM ISAは、たとえばAPIとともに使用されるハイブリッドハードウェア/ソフトウェアTMエンジンが、「ハードウェアモード」でハードウェアサポート(たとえばトランザクショナルキャッシュ132)を使用することにより高性能を提供することを可能にし、ハードウェアキャッシュ132が使い尽くされるとソフトウェア方式(又は「ソフトウェアモード」)に戻る。このように、メモリ105及びデータベース108に対しデータの読出し及び書込みを行うAPI要求116が最適化される。なお、以下「ハードウェアモード」は、高性能のために主にトランザクショナルキャッシュ132を利用することを指し、「ソフトウェアモード」は、主に性能は低下するが使い尽くされないレギュラーキャッシュ134及び他のメモリ資源を利用することを指すということが留意されるべきである。
本発明の実施形態及びそのさまざまな機能コンポーネントを、特定の実施形態において説明しており、また以下に説明するが、これらの態様及び機能を、ハードウェア、ソフトウェア、ファームウェア、ミドルウェア又はそれらの組合せで実現することができる、ということが理解されるべきである。
ここで図2を参照すると、図2は、本発明の一実施形態によるトランザクショナルメモリオブジェクトの一例を提供する図である。図2に示すように、トランザクショナルメモリ(TM)オブジェクト202は、ロケータ204によって識別される。読出し専用でない各共有データオブジェクトは、TMオブジェクト202として示されるようにコンテナ内に配置される。トランザクション中、すべてのTMオブジェクト202は、アクセスされる前にオープンされる。これによりオブジェクトがトランザクションと関連付けられ、基礎となるソフトウェアシステムがトランザクション間の競合を検出することができる。通常、スレッドは、オブジェクトが読出し専用にアクセスされるか否かを指定するAPIによってオブジェクトをオープンする。オープンされたトランザクショナルオブジェクト内のデータは、操作することができるようになる。
ロケータ204は、トランザクショナルオブジェクトロケータとして機能する。オブジェクトに同時にアクセスするスレッドの数に関わらず、各トランザクションオブジェクトに対しアクティブであるトランザクションオブジェクトロケータが1つ存在する。状態リスト206は、ソフトウェアモードで目下オブジェクトにアクセスしているトランザクションの状態のメモリアドレスを格納する。通常、トランザクションの状態は、アクティブ(ACTIVE)、コミット(COMMITTED)又はアボート(ABORTED)のうちの1つである(214)。トランザクション毎に1つの状態しかない。ハードウェアモードのトランザクションも状態を有するが、後述するように、それらは決して状態リスト206に存在しない。
TMロケータ204はさらに、オブジェクト210の新しいバージョンの内容218と、オブジェクト212の古いバージョンの内容220とのメモリアドレスを格納する。トランザクションが、内容の最新バージョンを取得するためにTMオブジェクトをオープンする場合、それが取得するバージョンは、書込みのために(すなわち読出し専用ではない)オブジェクトをオープンした最後のトランザクションの状態によって決まる。最後のライタの状態214がアクティブ又はアボートである場合、オブジェクトをオープンしているトランザクションは古いバージョン220を受け取る。最後のライタの状態214がコミットである場合、オブジェクトをオープンしているトランザクションは新しいバージョン218を受け取る。
ソフトウェアモードのトランザクションは、書込みのためにTMオブジェクト202をオープンする時、最新バージョン(上述したような)のアドレスをTMロケータオブジェクト204の古いオブジェクトフィールド212に配置する。トランザクションは、最新内容のコピーを作成し、このコピーのアドレスをTMロケータ204の新しいオブジェクトフィールド210に配置する。ソフトウェアモードのトランザクションがコミットするまで、オブジェクトの新しいコピーはいかなる他のスレッドによってもアクセスされず、したがってローカルである。トランザクションがコミットすると、TMオブジェクトの新しいバージョンは共有オブジェクトになり、それ以上変更することができない。ハードウェアモードのトランザクションは、書込みのためにTMオブジェクト202をオープンする場合、内容のコピーを作成しない。ハードウェアモードのトランザクションは、後述するように、投機的書込みをバッファリングするハードウェアに応じて、オブジェクトの最新バージョンを直接変更する。
TMオブジェクト202は、TMオブジェクト202が読出しモードであるか又は書込みモードであるかを示すモードフィールド208をさらに含む。ソフトウェアモードのトランザクションは、読出しモード又は書込みモード208でTMオブジェクトをオープンする場合、その状態変数214のアドレスを状態リスト206に追加する。これにより他のスレッド(ソフトウェアモード及びハードウェアモードの両モード)がトランザクションをアボートすることができ、個々のオブジェクトに対して妥当性確認動作を行う必要がなくなる。トランザクションを、トランザクションの状態(状態214)を維持する1つのロケーションを単に検査することによって妥当性確認することができる。トランザクションがTMオブジェクト202をオープンし、そのモードフィールド208が読出し専用に設定されている時、オブジェクトが読出し専用モードでオープンされている場合にいかなるトランザクションも明示的にアボートされる必要はないが、オブジェクトが書込みモードでオープンされている場合、状態リスト206のすべてのトランザクションが、それらの状態214がアクティブである場合、アボートされる必要がある。トランザクションがTMオブジェクト202をオープンし、モードフィールド208が、単一トランザクションによって状態リスト206に書き込むように(現ライタ)すでに設定されている場合、この単一トランザクションは、TMオブジェクト202が読出し専用モードでオープンされているか又は書込みモードでオープンされているかに関わらず、その値がアクティブ214である場合にアボートされる必要がある。
この実現では、TMオブジェクト202は、所与の時点で単一リーダ又は単一ライタしか可能にしない。この制限を、実施形態によっては、状態リスト206の複数のトランザクションフィールドが並行するリーダに対応することができるようにすることにより、軽減することができる。これにより、任意の所与の時点においてオブジェクトをオープンする複数の(ただし有限の)トランザクションが提供される。この制限を、オブジェクト単位に設定することができる。後述するように、TMオブジェクト202は、トランザクショナルメモリトランザクションを、ハードウェア/ソフトウェアハイブリッド方式による実現により従うようにする。
本発明の実施形態は、トランザクショナルメモリトランザクションが「ハードウェアモード」又は「ソフトウェアモード」のいずれかで実現されるのを可能にするハードウェア/ソフトウェアトランザクション命令セットアーキテクチャ(ISA)を提供する。トランザクショナルなメモリアクセスは、ハードウェアモードで実行される場合、最初にトランザクショナルキャッシュ132(図1)を利用することによって実行される。このように、トランザクションに対して非常に高い性能を提供することができるが、ハードウェア資源は、使い尽くされる場合がある。さらに、ハードウェアモードでは、プロセッサは、アクセスされるメモリロケーションのすべてを追跡する必要がある。ハードウェアモードでは、同時に実行しているトランザクション間の競合が検出され、競合しているトランザクションのうちの1つがアボートされる。アボート時、トランザクション中に書き込まれたデータが無効にされ、コミット時、そのデータは、原子的にメモリ状態の一部でなければならない。
より詳細には、本発明の実施形態は、コンピュータシステムにおけるトランザクショナルなメモリアクセスのハイブリッドハードウェア・ソフトウェア実現に関する。コンピュータシステムにおいて、トランザクショナルキャッシュ及びレギュラーキャッシュを含むプロセッサが利用される。ポリシマネージャが、メモリにアクセスするアプリケーションプログラムインタフェース(API)要求に応じて、トランザクショナルなメモリアクセスを実現する第1のモード(以下「ハードウェアモード)」か又は第2のモード(以下「ソフトウェアモード」)のうちの一方を選択する。ハードウェアモードでは、メモリ読出し動作及びメモリ書込み動作を実行するためにトランザクショナルキャッシュが利用され、ソフトウェアモードでは、大部分のメモリ読出し動作及びメモリ書込み動作を実行するためにレギュラーキャッシュが利用される(後述するように、トランザクショナルキャッシュには1つのロケーションしか格納されない)。
ポリシマネージャは、まず、トランザクショナルキャッシュにおいてトランザクショナルな読出し命令及び書込み命令を使用して読出し動作及び書込み動作を実行するハードウェアモードを選択する。トランザクショナルキャッシュに、読出し動作及び書込み動作を実行するために十分なメモリ資源が存在する場合、トランザクショナルなメモリアクセスを完了するためにコミット命令が発行される。しかしながら、競合するトランザクショナルな読出し動作及び書込み動作である場合、又はトランザクショナルキャッシュにおいて不十分なメモリ資源が検出される場合、アボート命令が発行される。第1のモードに対してアボート命令が発行されると、ポリシマネージャは、レギュラーキャッシュにおいて通常の読出し命令及び書込み命令を使用して通常の読出し動作及び書込み動作が実行される、ソフトウェアモードを選択してもよい。
トランザクショナルメモリトランザクションを純粋にハードウェアで実現する場合、単一トランザクションがアクセスすることができるメモリロケーションの数に対する制限がある。トランザクションがこの制限を超えると、本発明の一実施形態によれば、トランザクションは「ソフトウェアモード」で再開する。後述するように、ハードウェアトランザクションが無効にされると、そのスレッドによって実行される次のメモリ動作により例外がもたらされる。これにより、無効にされたハードウェアトランザクションが続行しメモリを破壊することが防止される。例外がもたらされ且つソフトウェアモードに入った後、トランザクショナルなメモリアクセスは主にレギュラーキャッシュ及び他のメモリ資源(図1参照)によって実行される。
トランザクショナルなメモリアクセスのためにこのハイブリッドハードウェア・ソフトウェア実現を実現するために、本発明の実施形態は、新規であり且つ自明でないトランザクショナルメモリ命令セットアーキテクチャ(ISA)を提供する。図3を参照すると、図3は、本発明の一実施形態によるハードウェア/ソフトウェアトランザクショナルメモリトランザクションを実現する命令セットを示す表である。
図3に示すように、ハードウェア/ソフトウェアトランザクションISA300は、2つのモードを有するトランザクション開始302を含む。すべてのトランザクション開始(Begin Transaction All)は、「ハードウェアモード」トランザクションを指定することであり、選択トランザクション開始(Begin Transaction Select)は、「ソフトウェアモード」トランザクションに対して使用される。特に、トランザクション開始命令302は、トランザクションの起動をマークする。「ハードウェアモード」に対するすべてのトランザクション開始により、デフォルトによりすべてのメモリアクセスがトランザクショナルとなり(たとえばトランザクショナルキャッシュを利用する)、選択トランザクション開始は、トランザクショナルであると明示的に指定されるメモリ動作のみを行う。
ハードウェアトランザクションをネストすることができない(ソフトウェアベーストランザクションとは対照的に)ということが留意されるべきである。したがって、先のトランザクションがコミットされるか又はアボートされる前に新たなハードウェアトランザクションを開始することができない。トランザクションは、後述するように、トランザクションアボート命令306を実行することによるか、又はデータ競合がある場合にアボートされる。
コミット命令304は、トランザクションの終了をマークするために使用され、トランザクショナルキャッシュを含むトランザクショナルメモリの内容のすべてが体系的(architectural)となるのを可能にする。特に、トランザクショナルストアは、システム状態を変更することが可能とされ、トランザクショナルロードは、トランザクショナルキャッシュからパージされる。先のトランザクションが事前に開始されていなかった場合、トランザクションコミットを開始することはできない。
トランザクションアボート306は、現トランザクションをアボートし、先にバッファリングされていたトランザクション書込みデータのすべてを破棄する。いかなるトランザクションも事前に開始されていなかった場合、エラーが発生する。
さらに、ハードウェア/ソフトウェアトランザクションISA300はまた、トランザクショナルメモリロード/ストア動作を実行するトランザクションロード/ストア命令308も含む。
ハードウェア/ソフトウェアトランザクションISA300は、非トランザクショナルメモリロード/ストア動作を実行する通常のロード/ストア命令をさらに含む。
状態チェックポイント及び回復命令312も提供される。チェックポイント命令は、現レジスタ状態をメモリにチェックポイントする。回復命令は、メモリから現レジスタ状態を回復する。
ハードウェア/ソフトウェアトランザクションISA300はまた、オーファン(orphan)トランザクション例外命令314も含む。トランザクションは、コミットすることができない場合、オーファンであると定義される。たとえば、これは、別のプロセスが、それがトランザクショナルに読出しをしているロケーションに書込みをしている場合に発生する可能性がある。この場合、オーファントランザクションは、一貫しない状態でメモリを見る可能性があり、それにより、プログラムは、0による除算又は範囲外のメモリアドレスへのアクセス等の例外をもたらす可能性がある。さらに悪いことには、有効なメモリロケーションに間違った値を書き込み、システム状態を破壊する可能性がある。
オーファントランザクション例外命令は、これらの問題を回避する。特に、後述するように、スレッドによって実行される最初のロード命令は、そのトランザクションがオーファンになった後、オーファントランザクション例外314を生成する。
ここで図4Aを参照すると、図4Aは、本発明の一実施形態による、トランザクショナルなメモリアクセスのハイブリッドハードウェア・ソフトウェア実現のためのプロセス400を示すフローチャートである。プロセス400は、ほとんどの通常の場合に対し、トランザクショナルなメモリアクセスは、「ハードウェアモード」で実現される(たとえば、主にプロセッサのトランザクショナルキャッシュを利用する)場合に非常に高速且つ最適に完了する、という事実を利用する。しかしながら、プロセスはまた、プロセッサによりハードウェアモードで実現される場合、トランザクションを完了することができない可能性があることを考慮し、したがって、常にトランザクションを完了することが保証される「ソフトウェアモード」に戻る。対照的に、「ソフトウェアモード」は、主にレギュラーキャッシュ及び他のメモリ資源を使用する。後述するように、ハードウェアトランザクションが無効にされる場合、次のメモリ動作によってオーファントランザクション例外がもたらされ、これにより、無効にされたハードウェアトランザクションが続行してメモリを破損することが防止される。
プロセス400を詳細に見ると、ブロック402において、トランザクション(たとえばAPIから)が開始される。ブロック404において、ポリシマネージャが、トランザクションを開始するためにハードウェアモード又はソフトウェアモードを選択する。一実施形態では、まず、高速なハードウェア処理(たとえばトランザクショナルキャッシュを介する)を利用するためにハードウェアモードが選択され、バックアップとしてソフトウェアモードを使用することができる。
ハードウェアモードの選択の後、ハードウェア/ソフトウェアトランザクションISA300からのすべてのトランザクション開始命令302が起動され、それによりモードがハードウェアに設定される。さらに、ハードウェア/ソフトウェアトランザクションISAからのトランザクションロード命令308も起動され、トランザクショナルメモリ状態がロードされる。次に、ブロック408において、上述したように、トランザクショナルな読出し動作及び書込み動作を使用して、TMオブジェクトに対し所定の位置で、トランザクションに対する書込み及び読出し動作が実行される。ハードウェアトランザクションを完了することができる場合(たとえば、トランザクショナルキャッシュでトランザクションを完了するために十分なハードウェア資源がある場合)、トランザクションコミット命令が生成され、ブロック410に示すように、状態がコミットに設定されトランザクションがコミットされる。トランザクションに対する処理は、このようにコミットされることになる(ブロック415)。
しかしながら、ハードウェアでトランザクションをコミットすることができない(たとえば、トランザクショナルキャッシュに十分なハードウェア資源がない)場合、トランザクションアボート命令が起動され、状態がアボートに設定され、トランザクションがアボートされる(ブロック420)。このように、プロセスがアボートされる(ブロック422)。
トランザクションがアボートされる場合、オーファントランザクション例外命令424が生成される。これは、トランザクショナルな読出し/書込み命令が競合していることか、又はハードウェア資源が不十分であることによる可能性がある。いずれの場合も、トランザクショナルメモリはクリーンアップされ、トランザクションは再試行される(ブロック426)。通常、ハードウェアモードで障害が発生した場合、次の試行に対し、ポリシマネージャはソフトウェアモードを選択する。
簡単に、コミット命令及びアボート命令についてより詳細に述べる。特に、上述したように、トランザクショナルメモリを、トランザクショナルキャッシュを用いて実現してもよい。たとえば、図1に示すように、プロセッサ101は、トランザクショナルキャッシュ132及びレギュラーキャッシュ134を含んでもよい。ハードウェア/ソフトウェアトランザクションISA300からのトランザクションロード及びストア308を使用して読出し及び書込みが行われるすべてのロケーションは、トランザクショナルキャッシュに格納される。トランザクションがコミットするまで、すべてのトランザクショナル書込みはトランザクショナルキャッシュに留まる。トランザクションによって読出しがなされたトランザクショナルキャッシュのロケーションに、異なるスレッドによって書込みがなされる場合、そのトランザクションはオーファンとなり、最終的にアボートされることになる。
トランザクションコミット命令304は、トランザクションの終了をマークし、トランザクションキャッシュの内容のすべてが体系的になるのを可能にする(たとえば、トランザクショナルストアは、システム状態を変更することが可能とされ、トランザクショナルロードは、トランザクションキャッシュからパージされる)。
トランザクションは、コミットすることができない場合、オーファンであるように定義される。たとえば、トランザクションは、別のスレッドが、それが読出しをしたロケーションに書込みをした場合にオーファン化される可能性がある。オーファントランザクションは、一貫しない状態でメモリを見る可能性があり、プロセッサに対し、0による除算か又は範囲外のメモリロケーションへのアクセスのような例外をもたらさせる可能性がある。さらに悪いことには、有効なメモリロケーションに間違った値を書き込みシステム状態を破壊する可能性が高い。したがって、これが発生する場合、オーファントランザクション例外命令314が起動され、動作がアボートされる(422)。
このように、プロセス400及びハードウェア/ソフトウェアトランザクションISA300は、それが実行しているトランザクションがオーファンとなった場合にスレッドに通知するように例外が非同期に使用されるのを可能にする。トランザクションがオーファン化すると、スレッドはアボートされ、そのスレッドは、メモリからの新たなロード動作から返されるデータを消費することができなくなる。
これを達成するために、すべてのロードにおいて特別な例外が利用される。特に、スレッドがオーファン化した後の最初のロードは、そのロードに対して例外を強要し、スレッドはアボートされる。そして、例外ハンドラは、トランザクションの開始に戻るよう分岐する責任を有し、それを、クリーンアップ及び再試行ブロック426として上述したように達成してもよい。このように、トランザクションアボート命令306とともに実現されるユーザ例外ハンドラは、クリーンアップ及び再試行426を利用して、トランザクションをアボートし、スタックを展開し、アボートしたトランザクションを再開する責任がある。
図4Bを簡単に参照すると、図4Bは、特にオーファントランザクションを監視するプロセス448を示すフローチャートである。ブロック450において、トランザクションロード時、ステータスフラグがトランザクション有効に設定される。次に、プロセス448は、別のプロセッサ又はスレッドによる競合がないか監視する(ブロック452)。ブロック454において競合が検出されない場合、処理が継続する(ブロック456)。しかしながら、ブロック454において、競合が検出される場合、ステータスフラグはトランザクション無効に再設定され、トランザクションがアボートされたことがマークされる(ブロック460)。第1のトランザクションロードに続くすべてのロードは、ステータスフラグを検査することにより、コミットする前にそれがトランザクション有効に設定されていることを確認する(たとえばデータをプロセッサに返す)。一方、ステータスフラグが再設定される場合、ロードはコミットすることが可能とされず、上述したアボートプロセスが発生する。
図4Aに戻り、競合するトランザクション読出し/書込み動作か又はハードウェア資源の使い尽しによりハードウェアトランザクションがアボートされたとすると、ポリシマネージャは、ブロック404において、トランザクションの完了を確実にするために「ソフトウェアモード」を選択してもよい。ブロック430において、ハードウェア/ソフトウェアトランザクションISA300から選択トランザクション開始命令302が起動され、それによりモードがソフトウェアに設定され、トランザクション状態がロードされる。ソフトウェアモードで実行している時、プロセッサはすべてのメモリアクセスをトランザクショナルとして扱うとは限らないことに留意されるべきである。各トランザクションに対し、1つのロケーションのみがトランザクショナルにアクセスされ(たとえば、トランザクションロード命令308を利用する)、すなわちそれはトランザクションの状態を含むロケーションである。
次に、ブロック432において、通常の読出し動作及び書込み動作(たとえば、通常のロード/ストア命令310)をコピーするとともに使用することにより、トランザクションに対して読出し動作及び書込み動作が実行される。さらに、トランザクショナルキャッシュの代りに、レギュラーキャッシュ及び他のメモリ資源が利用される。トランザクションに対する読出し動作及び書込み動作を実行することができる場合、トランザクションコミット命令304が起動され、状態はコミットに設定される(ブロック434)。このように、メモリに対する読出し動作及び書込み動作がコミットされる(ブロック415)。
一方、競合するトランザクショナルな書込み動作が検出されると、プロセスをアボートしてもよく、状態はアボートに設定される(ブロック436)。このように、ブロック422においてトランザクションがアボートされ、競合する書込みトランザクションの例外438に基づき、ソフトウェアモードのプロセス400は、ソフトウェアモードにおいてトランザクショナルな動作をクリーンアップし再び再試行してもよい(ブロック440)。
本発明の別の実施形態では、上述したハードウェア/ソフトウェアトランザクションISA300を、ロックを効率的に実現するために利用してもよい。簡単に言えば、ロック取得機能が呼び出されると、プロセッサは、トランザクショナルメモリ拡張を使用してハードウェアモードでクリティカルセクション(たとえば、ロック取得と後続するロック解放との間のコード)を実行しようとし、これが失敗する場合、プロセスはソフトウェアモードに戻る。
ハードウェアモードにおいてクリティカルセクションが完了し損なう可能性のある3つの理由があり得る。たとえば、資源が使い尽くされる可能性があり、その場合、トランザクショナル状態を維持するために使用されるトランザクショナルキャッシュがオーバフローする。別に、データに対する衝突があり得る。たとえば、2つのスレッドがハードウェアモードにおいてそれらのクリティカルセクションを実行しようとし、同じデータに対して競合する動作を実行しようと試みる場合、これもまた障害をもたらす可能性がある。たとえば、1つのスレッドが、他のスレッドがすでに読み出したキャッシュラインに書き込む場合がある。また、ソフトウェアモードへの遷移において障害がある場合もある。たとえば、スレッドがソフトウェアモードにおいてロックを獲得する場合、そのロックを必要とするクリティカルセクションの中間にあった他のスレッドのすべてがアボートされることになる。
任意のロックに対し、ハードウェアモードにおいて複数のスレッドがクリティカルセクションにある可能性があるか、又はソフトウェアモードにおいて単一スレッドがロックを保持している可能性があることに留意されるべきである。ハードウェアモードにおいてロックのクリティカルセクションに入るために、スレッドは、ロックが利用可能であることを確実にするように検査し、それをロックされているものとマークすることなくクリティカルセクションに入る。ソフトウェアモードにおいてロックのクリティカルセクションに入るためには、スレッドはロックが利用可能であることを確実にするように検査し、それをロックされているものとマークする。これにより、ハードウェアモードにおいてすでにクリティカルセクションにある任意のスレッドがアボートされ、ハードウェアモード又はソフトウェアモードのいずれにおいてもいかなる新たなスレッドもそのクリティカルセクションに入ることが防止される。
図5を見ると、図5は、本発明の一実施形態による、ハードウェア/ソフトウェアトランザクションISA300を効率的に利用してロックを実現するプロセス500を示すフローチャートである。ブロック502において、ロックが取得されるか又は起動される。ブロック504において、ポリシマネージャがモードを選択する。通常、上述したように、まずトランザクショナルメモリトランザクションを最も効率的に達成しようと試みるためにハードウェアモードが選択される。そして、ハードウェアモードがトランザクションを完了することができない場合、ソフトウェアモードに戻る。
次に、ブロック506において、ロックが開始され、トランザクションISA300のすべてのトランザクション開始命令302によってモードがハードウェアに設定される。ブロック508において、トランザクショナルな読出し動作及び書込み動作(たとえばトランザクションロード/ストア308)を使用して、トランザクション(たとえばトランザクショナルキャッシュにある)に対し読出し動作及び書込み動作が実行される。トランザクションが完了すると、ロックは解放され(ブロック510)、トランザクションはコミットされる。
しかしながら、競合するトランザクショナルな読出し/書込み動作520による例外がある場合、ロックがアボートされる。そして、クリーンアップ及び再試行動作(ブロック522)が起動され、ソフトウェアモードにおいてロックが試みられる。このため、ブロック504において、ポリシマネージャはソフトウェアモードを選択する。
この場合、ロックはソフトウェアモードで開始され、ロックの状態はロックに設定される(ブロック530)。次に(ブロック532)、通常の読出し動作及び書込み動作(たとえば通常のロード及びストア命令310)を使用して、読出し動作及び書込み動作が実行される。ソフトウェアモードでは、ブロック534において、ロックは通常常に完了し、その後ロックは解放され、ロック状態はアンロックに設定される。これによりプロセス500は完了する。
さらなる性能の利益を得るために、プロセッサは競合解決を実行してもよい。詳細には、データ競合が検出されると、プロセッサは競合を解決し、トランザクションのうちの1つが完了できるようにしてもよい。残りの競合するトランザクションを、それらが読み出したメモリロケーションの任意のものが別のスレッドによって書き込まれたか否かに応じて、遅延させるか又はアボートさせてもよい。さらに、上述したように例外520(たとえばオーファントランザクション例外)が発生した場合、トランザクションが資源の使い尽しによってオーファン化したか又はデータ競合によってオーファン化したかに関する記録を行ってもよい。そして、資源が使い尽くされている場合にのみソフトウェアモードに戻るように例外ハンドラを変更してもよい。データ競合のみが発生した場合、ソフトウェアモードに自動的に切り替わる代りに、トランザクションが再度ハードウェアモードで再試行される変更を実現してもよい。
本発明の実施形態及びその各種機能コンポーネントが特定の実施形態において説明されたが、本発明の実施形態が、ハードウェア、ソフトウェア、ファームウェア、ミドルウェア又はそれらの組み合わせにより実現され、システム、サブシステム、コンポーネント又はそれらのサブコンポーネントにおいて利用可能であるということは理解されるであろう。ソフトウェア又はファームウェアで実現されるとき、本発明の要素は、必要なタスクを実行するための命令/コードセグメントである。プログラム又はコードセグメントは、機械可読媒体(例えば、プロセッサ可読媒体やコンピュータプログラム製品等)に格納可能であるか、或いは搬送波において実現されるコンピュータデータ信号、又はキャリアにより変調される信号によって送信媒体又は通信リンクを介し送信することが可能である。機械可読媒体は、機械(例えばプロセッサ、コンピュータ等)により可読で実行可能な形式により情報を格納又は転送することができる任意の媒体を含むものであってもよい。機械可読媒体の例には、電子回路、半導体記憶装置、ROM、フラッシュメモリ、消去可能プログラマブルROM(EPROM)、フロッピーディスケット、コンパクトディスクCD−ROM、光ディスク、ハードディスク、光ファイバ媒体、無線周波数(RF)リンク等が含まれる。コンピュータデータ信号には、電子ネットワークチャネル、光ファイバ、空気、電磁気、RFリンク、バーコード等の送信媒体を介し伝搬可能な任意の信号が含まれてもよい。コードセグメントは、インターネット、イントラネット等のネットワークを介しダウンロード可能である。
さらに、本発明の実施形態が例示された実施形態を参照することにより説明されたが、これらの説明は限定的なものと解釈されるべきではない。本発明の実施形態が属する技術分野の当業者には明らかな例示された実施形態の様々な変更及び本発明の他の実施形態は、本発明の精神及び範囲内に属するものとみなされる。
本発明の実施形態を実施することができる、コンピュータシステム構成の一例の部分的なブロック図である。 本発明の一実施形態によるトランザクショナルメモリオブジェクトの一例を提供する図である。 本発明の一実施形態による、ハードウェア/ソフトウェアトランザクショナルメモリトランザクションを実現する命令セットアーキテクチャを示す表である。 本発明の一実施形態による、トランザクショナルなメモリアクセスのハイブリッドハードウェア・ソフトウェア実現のためのプロセスを示すフローチャートである。 本発明の一実施形態による、特にオーファントランザクションを監視するプロセスを示すフローチャートである。 本発明の一実施形態による、ハードウェア/ソフトウェアトランザクションISAを効率的に利用するロックを実現するプロセスを示すフローチャートである。

Claims (28)

  1. トランザクショナルキャッシュ及びレギュラーキャッシュを含むプロセッサと、
    トランザクショナルなメモリアクセスを実現するためにハードウェアモード又はソフトウェアモードのうちの一方を選択するポリシマネージャと
    を具備する装置であって、
    前記ハードウェアモードでは、トランザクショナルなメモリ読出し動作及びメモリ書込み動作を実行するために前記トランザクショナルキャッシュが利用され、前記ソフトウェアモードでは、通常の(regular)読出し命令及び書込み命令による通常のメモリ読出し動作及びメモリ書込み動作を実行するために前記レギュラーキャッシュが利用される、装置。
  2. 前記トランザクショナルキャッシュにおいて、前記トランザクショナルなメモリ読出し動作及び書込み動作を実行するために十分なメモリ資源が存在する場合、前記トランザクショナルなメモリアクセスを完了するためにコミット命令が発行される、請求項に記載の装置。
  3. 競合するトランザクショナルなメモリ読出し動作及びメモリ書込み動作が検出される場合、アボート命令が発行される、請求項1または2に記載の装置。
  4. 前記トランザクショナルキャッシュに不十分なメモリ資源が検出される場合、アボート命令が発行される、請求項1から3のいずれかに記載の装置。
  5. 前記ハードウェアモードに対してアボート命令が発行される場合、前記ポリシマネージャは前記ソフトウェアモードを選択し、そこでは、前記レギュラーキャッシュにおいて通常の(regular)読出し命令及び書込み命令を使用して通常のメモリ読出し動作及びメモリ書込み動作が実行される、請求項3または4に記載の装置。
  6. 前記ソフトウェアモードで動作している時、競合する書込みトランザクションが検出される場合、アボート命令が発行される、請求項に記載の装置。
  7. 競合する書込みトランザクションが検出されない場合、前記メモリアクセスを完了するためにコミット命令が発行される、請求項5または6に記載の装置。
  8. ポリシマネージャが、トランザクショナルなメモリアクセスを実現するためにハードウェアモード又はソフトウェアモードのうちの一方を選択すること、
    プロセッサが、前記ハードウェアモードにおいてトランザクショナルキャッシュを利用してトランザクショナルなメモリ読出し動作及びメモリ書込み動作を実行すること、並びに
    前記プロセッサが、前記ソフトウェアモードにおいてレギュラーキャッシュを利用して通常の読出し命令及び書込み命令による通常のメモリ読出し動作及びメモリ書込み動作を実行すること
    を含む方法。
  9. 前記プロセッサが、前記トランザクショナルキャッシュにおいて、前記トランザクショナルなメモリ読出し動作及びメモリ書込み動作を実行するために十分なメモリ資源が存在する場合、前記トランザクショナルなメモリアクセスを完了するためにコミット命令を発行することをさらに含む、請求項に記載の方法。
  10. 前記プロセッサが、競合するトランザクショナルなメモリ読出し動作及びメモリ書込み動作が検出される場合、アボート命令を発行することをさらに含む、請求項8または9に記載の方法。
  11. 前記プロセッサが、前記トランザクショナルキャッシュに不十分なメモリ資源が検出される場合、アボート命令を発行することをさらに含む、請求項8から10のいずれかに記載の方法。
  12. 前記ハードウェアモードにおいてアボート命令が発行される場合、
    前記ポリシマネージャが、前記ソフトウェアモードを選択すること、並びに
    前記プロセッサが、通常の読出し命令及び書込み命令を使用して前記レギュラーキャッシュにおいて通常のメモリ読出し動作及びメモリ書込み動作を実行すること
    をさらに含む、請求項10または11に記載の方法。
  13. 前記プロセッサが、前記ソフトウェアモードで動作している間、競合する書込みトランザクションが検出される場合、アボート命令を発行することをさらに含む、請求項12に記載の方法。
  14. 前記プロセッサが、競合する書込みトランザクションが検出されない場合、前記メモリアクセスを完了するコミット命令を発行することをさらに含む、請求項12または13に記載の方法。
  15. コンピュータシステムにより実行されるプログラムであって、
    当該プログラムは、前記コンピュータシステムに、
    トランザクショナルなメモリアクセスを実現するためにハードウェアモード又はソフトウェアモードのうちの一方を選択すること、
    前記ハードウェアモードにおいてトランザクショナルキャッシュを利用してトランザクショナルなメモリ読出し動作及びメモリ書込み動作を実行すること、並びに
    前記ソフトウェアモードにおいてレギュラーキャッシュを利用して通常の読出し命令及び書込み命令による通常のメモリ読出し動作及びメモリ書込み動作を実行すること
    実行させるプログラム
  16. 当該プログラムは、前記コンピュータシステムに、前記トランザクショナルキャッシュにおいて前記トランザクショナルなメモリ読出し動作及びメモリ書込み動作を実行するために十分なメモリ資源が存在する場合に、前記トランザクショナルなメモリアクセスを完了するコミット命令を発行する動作を実行させる、請求項15に記載のプログラム
  17. 当該プログラムは、前記コンピュータシステムに、競合するトランザクショナルなメモリ読出し動作及びメモリ書込み動作が検出される場合にアボート命令を発行する動作を実行させる、請求項15または16に記載のプログラム
  18. 当該プログラムは、前記コンピュータシステムに、前記トランザクショナルキャッシュにおいて不十分なメモリ資源が検出される場合にアボート命令を発行する動作を実行させる、請求項15から17のいずれかに記載のプログラム
  19. 当該プログラムは、前記コンピュータシステムに、
    前記ハードウェアモードにおいてアボート命令が発行される場合、
    前記ソフトウェアモードを選択する動作と、
    通常の読出し命令及び書込み命令を使用して前記レギュラーキャッシュにおいて通常のメモリ読出し動作及びメモリ書込み動作を実行する動作と
    さらに実行させる、請求項17または18に記載のプログラム
  20. 当該プログラムは、前記コンピュータシステムに、前記ソフトウェアモードで動作している間、競合する書込みトランザクションが検出される場合にアボート命令を発行する動作を実行させる、請求項19に記載のプログラム
  21. 当該プログラムは、前記コンピュータシステムに、競合する書込みトランザクションが検出されない場合に前記メモリアクセスを完了するコミット命令を発行する動作を実行させる、請求項19または20に記載のプログラム
  22. トランザクショナルキャッシュ及びレギュラーキャッシュを含むプロセッサと、
    データベースのメモリにアクセスするアプリケーションプログラムインタフェース(API)要求に応じてトランザクショナルなメモリアクセスを実現するためにハードウェアモード又はソフトウェアモードのうちの一方を選択するポリシマネージャと
    を具備するコンピュータシステムであって、
    前記ハードウェアモードでは、トランザクショナルなメモリ読出し動作及びメモリ書込み動作を実行するために前記トランザクショナルキャッシュが利用され、前記ソフトウェアモードでは、通常の読出し命令及び書込み命令による通常のメモリ読出し動作及びメモリ書込み動作を実行するために前記レギュラーキャッシュが利用される、コンピュータシステム。
  23. 前記トランザクショナルキャッシュにおいて、前記トランザクショナルなメモリ読出し動作及びメモリ書込み動作を実行するために十分なメモリ資源が存在する場合、前記トランザクショナルなメモリアクセスを完了するためにコミット命令が発行される、請求項22に記載のコンピュータシステム。
  24. 競合するトランザクショナルなメモリ読出し動作及びメモリ書込み動作が検出される場合、アボート命令が発行される、請求項22または23に記載のコンピュータシステム。
  25. 前記トランザクショナルキャッシュに不十分なメモリ資源が検出される場合、アボート命令が発行される、請求項22から24のいずれかに記載のコンピュータシステム。
  26. 前記ハードウェアモードに対してアボート命令が発行される場合、前記ポリシマネージャは前記ソフトウェアモードを選択し、そこでは、前記レギュラーキャッシュにおいて通常の読出し命令及び書込み命令を使用して通常のメモリ読出し動作及びメモリ書込み動作が実行される、請求項24または25に記載のコンピュータシステム。
  27. 前記ソフトウェアモードで動作している時、競合する書込みトランザクションが検出される場合、アボート命令が発行される、請求項26に記載のコンピュータシステム。
  28. 競合する書込みトランザクションが検出されない場合、前記メモリアクセスを完了するためにコミット命令が発行される、請求項26または27に記載のコンピュータシステム。
JP2007533617A 2004-09-30 2005-09-21 トランザクショナルなメモリアクセスのハイブリッドハードウェア・ソフトウェア実現のための方法及び装置 Expired - Fee Related JP4774056B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10/956,179 2004-09-30
US10/956,179 US7856537B2 (en) 2004-09-30 2004-09-30 Hybrid hardware and software implementation of transactional memory access
PCT/US2005/033917 WO2006039174A1 (en) 2004-09-30 2005-09-21 Hybrid hardware and software implementation of transactional memory access

Publications (2)

Publication Number Publication Date
JP2008515055A JP2008515055A (ja) 2008-05-08
JP4774056B2 true JP4774056B2 (ja) 2011-09-14

Family

ID=35519767

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007533617A Expired - Fee Related JP4774056B2 (ja) 2004-09-30 2005-09-21 トランザクショナルなメモリアクセスのハイブリッドハードウェア・ソフトウェア実現のための方法及び装置

Country Status (5)

Country Link
US (6) US7856537B2 (ja)
JP (1) JP4774056B2 (ja)
CN (2) CN101807169B (ja)
DE (1) DE112005002402B4 (ja)
WO (1) WO2006039174A1 (ja)

Families Citing this family (126)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7921407B2 (en) * 2004-08-10 2011-04-05 Oracle America, Inc. System and method for supporting multiple alternative methods for executing transactions
US7685365B2 (en) * 2004-09-30 2010-03-23 Intel Corporation Transactional memory execution utilizing virtual memory
US7856537B2 (en) 2004-09-30 2010-12-21 Intel Corporation Hybrid hardware and software implementation of transactional memory access
US7984248B2 (en) * 2004-12-29 2011-07-19 Intel Corporation Transaction based shared data operations in a multiprocessor environment
USRE45632E1 (en) * 2005-01-03 2015-07-28 O'shantel Software L.L.C. Memory-controller-embedded apparatus and procedure for achieving system-directed checkpointing without operating-system kernel support
US7630991B2 (en) * 2005-10-27 2009-12-08 Microsoft Corporation Compiling join patterns using software transactional memories
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
US8813052B2 (en) 2005-12-07 2014-08-19 Microsoft Corporation Cache metadata for implementing bounded transactional memory
US8683143B2 (en) * 2005-12-30 2014-03-25 Intel Corporation Unbounded transactional memory systems
US7730286B2 (en) * 2005-12-30 2010-06-01 Intel Corporation Software assisted nested hardware transactions
US20070186056A1 (en) * 2006-02-07 2007-08-09 Bratin Saha Hardware acceleration for a software transactional memory system
US8898652B2 (en) * 2006-03-23 2014-11-25 Microsoft Corporation Cache metadata for accelerating software transactional memory
US8180977B2 (en) * 2006-03-30 2012-05-15 Intel Corporation Transactional memory in out-of-order processors
US8180967B2 (en) * 2006-03-30 2012-05-15 Intel Corporation Transactional memory virtualization
US8108627B2 (en) * 2006-03-31 2012-01-31 Intel Corporation Array comparison and swap operations
US7792805B2 (en) * 2006-05-30 2010-09-07 Oracle America, Inc. Fine-locked transactional memory
US20080005504A1 (en) * 2006-06-30 2008-01-03 Jesse Barnes Global overflow method for virtualized transactional memory
US20080040524A1 (en) * 2006-08-14 2008-02-14 Zimmer Vincent J System management mode using transactional memory
US9798590B2 (en) * 2006-09-07 2017-10-24 Intel Corporation Post-retire scheme for tracking tentative accesses during transactional execution
US8924653B2 (en) * 2006-10-31 2014-12-30 Hewlett-Packard Development Company, L.P. Transactional cache memory system
US8806495B2 (en) * 2006-11-20 2014-08-12 Microsoft Corp. Lightweight transactional memory for data parallel programming
US8522223B2 (en) * 2006-11-22 2013-08-27 Intel Corporation Automatic function call in multithreaded application
US8060482B2 (en) * 2006-12-28 2011-11-15 Intel Corporation Efficient and consistent software transactional memory
US7802136B2 (en) * 2006-12-28 2010-09-21 Intel Corporation Compiler technique for efficient register checkpointing to support transaction roll-back
US7689733B2 (en) * 2007-03-09 2010-03-30 Microsoft Corporation Method and apparatus for policy-based direct memory access control
US8185698B2 (en) * 2007-04-09 2012-05-22 Bratin Saha Hardware acceleration of a write-buffering software transactional memory
US7908255B2 (en) * 2007-04-11 2011-03-15 Microsoft Corporation Transactional memory using buffered writes and enforced serialization order
US8095750B2 (en) * 2007-05-14 2012-01-10 International Business Machines Corporation Transactional memory system with fast processing of common conflicts
US8117403B2 (en) * 2007-05-14 2012-02-14 International Business Machines Corporation Transactional memory system which employs thread assists using address history tables
US8688920B2 (en) * 2007-05-14 2014-04-01 International Business Machines Corporation Computing system with guest code support of transactional memory
US8095741B2 (en) * 2007-05-14 2012-01-10 International Business Machines Corporation Transactional memory computing system with support for chained transactions
US9009452B2 (en) 2007-05-14 2015-04-14 International Business Machines Corporation Computing system with transactional memory using millicode assists
US7644238B2 (en) 2007-06-01 2010-01-05 Microsoft Corporation Timestamp based transactional memory
US8458724B2 (en) * 2007-06-15 2013-06-04 Microsoft Corporation Automatic mutual exclusion
US9043553B2 (en) * 2007-06-27 2015-05-26 Microsoft Technology Licensing, Llc Leveraging transactional memory hardware to accelerate virtualization and emulation
US8176253B2 (en) * 2007-06-27 2012-05-08 Microsoft Corporation Leveraging transactional memory hardware to accelerate virtualization and emulation
US8140773B2 (en) 2007-06-27 2012-03-20 Bratin Saha Using ephemeral stores for fine-grained conflict detection in a hardware accelerated STM
US8266387B2 (en) * 2007-06-27 2012-09-11 Microsoft Corporation Leveraging transactional memory hardware to accelerate virtualization emulation
US9280397B2 (en) * 2007-06-27 2016-03-08 Intel Corporation Using buffered stores or monitoring to filter redundant transactional accesses and mechanisms for mapping data to buffered metadata
US8612643B2 (en) 2007-06-30 2013-12-17 Microsoft Corporation Interfaces for digital media processing
CN101452400B (zh) * 2007-11-29 2011-12-28 国际商业机器公司 处理多处理器系统中事务缓冲器溢出的方法和系统
US7966459B2 (en) * 2007-12-31 2011-06-21 Oracle America, Inc. System and method for supporting phased transactional memory modes
US8140497B2 (en) * 2007-12-31 2012-03-20 Oracle America, Inc. System and method for implementing nonblocking zero-indirection transactional memory
US8019945B2 (en) * 2008-01-31 2011-09-13 Oracle International Corporation System and method for transactional cache
US8533663B2 (en) * 2008-05-12 2013-09-10 Oracle America, Inc. System and method for utilizing available best effort hardware mechanisms for supporting transactional memory
CN101587447B (zh) * 2008-05-23 2013-03-27 国际商业机器公司 基于预测的事务执行系统和方法
US9047139B2 (en) * 2008-06-27 2015-06-02 Microsoft Technology Licensing, Llc Primitives for software transactional memory
US8166481B2 (en) * 2008-10-20 2012-04-24 Microsoft Corporation Transaction processing in transactional memory
US8776063B2 (en) * 2008-11-26 2014-07-08 Oracle America, Inc. Method and system for hardware feedback in transactional memory
US8789057B2 (en) * 2008-12-03 2014-07-22 Oracle America, Inc. System and method for reducing serialization in transactional memory using gang release of blocked threads
US8627017B2 (en) * 2008-12-30 2014-01-07 Intel Corporation Read and write monitoring attributes in transactional memory (TM) systems
US8312219B2 (en) * 2009-03-02 2012-11-13 International Business Machines Corporation Hybrid caching techniques and garbage collection using hybrid caching techniques
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
US8370577B2 (en) 2009-06-26 2013-02-05 Microsoft Corporation Metaphysically addressed cache metadata
US8250331B2 (en) 2009-06-26 2012-08-21 Microsoft Corporation Operating system virtual memory management for hardware transactional memory
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
US8161247B2 (en) * 2009-06-26 2012-04-17 Microsoft Corporation Wait loss synchronization
US8812796B2 (en) 2009-06-26 2014-08-19 Microsoft Corporation Private memory regions and coherence optimizations
US8229907B2 (en) * 2009-06-30 2012-07-24 Microsoft Corporation Hardware accelerated transactional memory system with open nested transactions
US8566524B2 (en) 2009-08-31 2013-10-22 International Business Machines Corporation Transactional memory system with efficient cache support
US9639392B2 (en) 2013-12-17 2017-05-02 Intel Corporation Unbounded transactional memory with forward progress guarantees using a hardware global lock
US20110113409A1 (en) * 2009-11-10 2011-05-12 Rodrick Evans Symbol capabilities support within elf
US8402218B2 (en) * 2009-12-15 2013-03-19 Microsoft Corporation Efficient garbage collection and exception handling in a hardware accelerated transactional memory system
US8539465B2 (en) * 2009-12-15 2013-09-17 Microsoft Corporation Accelerating unbounded memory transactions using nested cache resident transactions
US8533440B2 (en) * 2009-12-15 2013-09-10 Microsoft Corporation Accelerating parallel transactions using cache resident transactions
US9092253B2 (en) 2009-12-15 2015-07-28 Microsoft Technology Licensing, Llc Instrumentation of hardware assisted transactional memory system
US8739164B2 (en) * 2010-02-24 2014-05-27 Advanced Micro Devices, Inc. Automatic suspend atomic hardware transactional memory in response to detecting an implicit suspend condition and resume thereof
US8402227B2 (en) 2010-03-31 2013-03-19 Oracle International Corporation System and method for committing results of a software transaction using a hardware transaction
US8464261B2 (en) 2010-03-31 2013-06-11 Oracle International Corporation System and method for executing a transaction using parallel co-transactions
US8214560B2 (en) 2010-04-20 2012-07-03 International Business Machines Corporation Communications support in a transactional memory
US9411634B2 (en) 2010-06-21 2016-08-09 Microsoft Technology Licensing, Llc Action framework in software transactional memory
US8719515B2 (en) 2010-06-21 2014-05-06 Microsoft Corporation Composition of locks in software transactional memory
US9110691B2 (en) * 2010-11-16 2015-08-18 Advanced Micro Devices, Inc. Compiler support technique for hardware transactional memory systems
US9043363B2 (en) * 2011-06-03 2015-05-26 Oracle International Corporation System and method for performing memory management using hardware transactions
US9870384B2 (en) * 2012-03-30 2018-01-16 International Business Machines Corporation Database system transaction management
US20130332778A1 (en) * 2012-06-07 2013-12-12 Vmware, Inc. Performance-imbalance-monitoring processor features
US10437602B2 (en) 2012-06-15 2019-10-08 International Business Machines Corporation Program interruption filtering in transactional execution
US9436477B2 (en) 2012-06-15 2016-09-06 International Business Machines Corporation Transaction abort instruction
US9336046B2 (en) 2012-06-15 2016-05-10 International Business Machines Corporation Transaction abort processing
US9361115B2 (en) 2012-06-15 2016-06-07 International Business Machines Corporation Saving/restoring selected registers in transactional processing
US9772854B2 (en) 2012-06-15 2017-09-26 International Business Machines Corporation Selectively controlling instruction execution in transactional processing
US9384004B2 (en) 2012-06-15 2016-07-05 International Business Machines Corporation Randomized testing within transactional execution
US9348642B2 (en) 2012-06-15 2016-05-24 International Business Machines Corporation Transaction begin/end instructions
US9448796B2 (en) 2012-06-15 2016-09-20 International Business Machines Corporation Restricted instructions in transactional execution
US8966324B2 (en) 2012-06-15 2015-02-24 International Business Machines Corporation Transactional execution branch indications
US9367323B2 (en) 2012-06-15 2016-06-14 International Business Machines Corporation Processor assist facility
US20130339680A1 (en) 2012-06-15 2013-12-19 International Business Machines Corporation Nontransactional store instruction
US8682877B2 (en) 2012-06-15 2014-03-25 International Business Machines Corporation Constrained transaction execution
US9317460B2 (en) 2012-06-15 2016-04-19 International Business Machines Corporation Program event recording within a transactional environment
US8880959B2 (en) 2012-06-15 2014-11-04 International Business Machines Corporation Transaction diagnostic block
US9311101B2 (en) 2012-06-15 2016-04-12 International Business Machines Corporation Intra-instructional transaction abort handling
US8688661B2 (en) * 2012-06-15 2014-04-01 International Business Machines Corporation Transactional processing
US9262320B2 (en) * 2012-06-15 2016-02-16 International Business Machines Corporation Tracking transactional execution footprint
US9223687B2 (en) 2012-06-15 2015-12-29 International Business Machines Corporation Determining the logical address of a transaction abort
US9442737B2 (en) 2012-06-15 2016-09-13 International Business Machines Corporation Restricting processing within a processor to facilitate transaction completion
US9740549B2 (en) 2012-06-15 2017-08-22 International Business Machines Corporation Facilitating transaction completion subsequent to repeated aborts of the transaction
US9298469B2 (en) 2012-06-15 2016-03-29 International Business Machines Corporation Management of multiple nested transactions
US9015419B2 (en) 2012-06-15 2015-04-21 International Business Machines Corporation Avoiding aborts due to associativity conflicts in a transactional environment
US9298631B2 (en) 2012-06-15 2016-03-29 International Business Machines Corporation Managing transactional and non-transactional store observability
US10095557B2 (en) * 2012-06-29 2018-10-09 Intel Corporation System and method to provide single thread access to a specific memory region
US9058282B2 (en) 2012-12-31 2015-06-16 Intel Corporation Dynamic cache write policy
US9032152B2 (en) 2013-03-22 2015-05-12 Applied Micro Circuits Corporation Cache miss detection filter
US9361152B2 (en) * 2013-07-15 2016-06-07 Intel Corporation Transactional memory management techniques
US9183043B2 (en) * 2013-07-16 2015-11-10 Oracle International Corporation Systems and methods for adaptive integration of hardware and software lock elision techniques
US9558229B2 (en) * 2013-11-26 2017-01-31 Sap Se Transaction private log buffering for high performance of transaction processing
JP6244916B2 (ja) 2014-01-06 2017-12-13 富士通株式会社 演算処理装置,演算処理装置の制御方法及び情報処理装置
US9471371B2 (en) * 2014-02-27 2016-10-18 International Business Machines Corporation Dynamic prediction of concurrent hardware transactions resource requirements and allocation
US9971627B2 (en) * 2014-03-26 2018-05-15 Intel Corporation Enabling maximum concurrency in a hybrid transactional memory system
JP6023765B2 (ja) * 2014-09-01 2016-11-09 インテル・コーポレーション 無制限トランザクショナルメモリ(utm)システムの最適化
US10387156B2 (en) 2014-12-24 2019-08-20 Intel Corporation Systems, apparatuses, and methods for data speculation execution
US10061589B2 (en) 2014-12-24 2018-08-28 Intel Corporation Systems, apparatuses, and methods for data speculation execution
US10303525B2 (en) 2014-12-24 2019-05-28 Intel Corporation Systems, apparatuses, and methods for data speculation execution
US10061583B2 (en) 2014-12-24 2018-08-28 Intel Corporation Systems, apparatuses, and methods for data speculation execution
US10942744B2 (en) 2014-12-24 2021-03-09 Intel Corporation Systems, apparatuses, and methods for data speculation execution
US10387158B2 (en) * 2014-12-24 2019-08-20 Intel Corporation Systems, apparatuses, and methods for data speculation execution
US10180921B2 (en) * 2015-06-26 2019-01-15 International Business Machines Corporation Non-interfering transactions
US10445271B2 (en) 2016-01-04 2019-10-15 Intel Corporation Multi-core communication acceleration using hardware queue device
JP6318440B2 (ja) * 2016-10-07 2018-05-09 インテル・コーポレーション 無制限トランザクショナルメモリ(utm)システムの最適化
US10929033B2 (en) 2018-04-25 2021-02-23 Micron Technology, Inc. Allocating variable media types of memory devices in a memory system
US11010309B2 (en) * 2018-05-18 2021-05-18 Intel Corporation Computer system and method for executing one or more software applications, host computer device and method for a host computer device, memory device and method for a memory device and non-transitory computer readable medium
US10754776B2 (en) 2018-07-30 2020-08-25 International Business Machines Corporation Cache balance when using hardware transactional memory
US20230342157A1 (en) * 2021-01-11 2023-10-26 Next Silicon Ltd Optimizing reconfigurable hardware using data sampling
US11741007B2 (en) * 2021-01-15 2023-08-29 Neo4J Sweden Ab Memory guards for continuous load-adaptive processing of transactions in databases
CN113778330B (zh) * 2021-08-05 2023-04-25 无锡融卡科技有限公司 一种基于Flash存储器的事务处理方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5428761A (en) * 1992-03-12 1995-06-27 Digital Equipment Corporation System for achieving atomic non-sequential multi-word operations in shared memory
JP2000231536A (ja) * 1999-01-05 2000-08-22 Internatl Business Mach Corp <Ibm> 状態ベースのトランザクション・スケジューリングを有する回路及び方法
JP2003167765A (ja) * 2001-11-30 2003-06-13 Canon Inc 情報処理装置及び方法
JP2004152247A (ja) * 2002-10-31 2004-05-27 Lg Electronics Inc 移動コンピュータ環境におけるトランザクションキャッシュ一貫性維持システム及びその方法

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5347428A (en) * 1992-12-03 1994-09-13 Irvine Sensors Corporation Module comprising IC memory stack dedicated to and structurally combined with an IC microprocessor chip
US6360231B1 (en) * 1999-02-26 2002-03-19 Hewlett-Packard Company Transactional memory for distributed shared memory multi-processor computer systems
US7685583B2 (en) * 2002-07-16 2010-03-23 Sun Microsystems, Inc. Obstruction-free mechanism for atomic update of multiple non-contiguous locations in shared memory
US6976131B2 (en) 2002-08-23 2005-12-13 Intel Corporation Method and apparatus for shared cache coherency for a chip multiprocessor or multiprocessor system
US7213248B2 (en) * 2002-10-10 2007-05-01 International Business Machines Corporation High speed promotion mechanism suitable for lock acquisition in a multiprocessor data processing system
US20040163082A1 (en) * 2003-02-13 2004-08-19 Marc Tremblay Commit instruction to support transactional program execution
US7587615B2 (en) * 2003-09-12 2009-09-08 International Business Machines Corporation Utilizing hardware transactional approach to execute code after initially utilizing software locking by employing pseudo-transactions
US20050086446A1 (en) * 2003-10-04 2005-04-21 Mckenney Paul E. Utilizing software locking approach to execute code upon failure of hardware transactional approach
US7856537B2 (en) * 2004-09-30 2010-12-21 Intel Corporation Hybrid hardware and software implementation of transactional memory access
US8683143B2 (en) * 2005-12-30 2014-03-25 Intel Corporation Unbounded transactional memory systems
US7792805B2 (en) * 2006-05-30 2010-09-07 Oracle America, Inc. Fine-locked transactional memory
US7793052B2 (en) * 2007-12-31 2010-09-07 Oracle America, Inc. System and method for implementing hybrid single-compare-single-store operations
US7966459B2 (en) * 2007-12-31 2011-06-21 Oracle America, Inc. System and method for supporting phased transactional memory modes
US20090177847A1 (en) * 2008-01-09 2009-07-09 International Business Machines Corporation System and method for handling overflow in hardware transactional memory with locks
US7908265B2 (en) * 2008-02-19 2011-03-15 Microsoft Corporation Transactional memory with dynamic separation

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5428761A (en) * 1992-03-12 1995-06-27 Digital Equipment Corporation System for achieving atomic non-sequential multi-word operations in shared memory
JP2000231536A (ja) * 1999-01-05 2000-08-22 Internatl Business Mach Corp <Ibm> 状態ベースのトランザクション・スケジューリングを有する回路及び方法
JP2003167765A (ja) * 2001-11-30 2003-06-13 Canon Inc 情報処理装置及び方法
JP2004152247A (ja) * 2002-10-31 2004-05-27 Lg Electronics Inc 移動コンピュータ環境におけるトランザクションキャッシュ一貫性維持システム及びその方法

Also Published As

Publication number Publication date
US7856537B2 (en) 2010-12-21
CN1755635B (zh) 2010-05-12
US10102123B2 (en) 2018-10-16
US8661206B2 (en) 2014-02-25
US10180903B2 (en) 2019-01-15
CN101807169A (zh) 2010-08-18
US10268579B2 (en) 2019-04-23
US9529715B2 (en) 2016-12-27
US20110055837A1 (en) 2011-03-03
US20170206159A1 (en) 2017-07-20
DE112005002402T5 (de) 2007-08-16
US20060085591A1 (en) 2006-04-20
US20170039068A1 (en) 2017-02-09
CN1755635A (zh) 2006-04-05
US20140136783A1 (en) 2014-05-15
DE112005002402B4 (de) 2020-11-05
US20170206160A1 (en) 2017-07-20
JP2008515055A (ja) 2008-05-08
CN101807169B (zh) 2014-06-25
WO2006039174A1 (en) 2006-04-13

Similar Documents

Publication Publication Date Title
JP4774056B2 (ja) トランザクショナルなメモリアクセスのハイブリッドハードウェア・ソフトウェア実現のための方法及び装置
JP5964382B2 (ja) 無限トランザクション型メモリ(utm)システムにおけるモード切り替えの実行
EP2150900B1 (en) Transactional memory using buffered writes and enforced serialization order
EP1910929B1 (en) Direct-update software transactional memory
US9569254B2 (en) Automatic checkpointing and partial rollback in software transaction memory
US9411635B2 (en) Parallel nested transactions in transactional memory
US9052947B2 (en) Unified optimistic and pessimistic concurrency control for a software transactional memory (STM) system
US7840530B2 (en) Parallel nested transactions in transactional memory
US8166255B2 (en) Reservation required transactions
US20090171962A1 (en) System and Method for Implementing Nonblocking Zero-Indirection Transactional Memory
CN104598397A (zh) 使用缓冲存储加速事务的机构
Lupei A study of conflict detection in software transactional memory
Tabassum et al. Transactional Memory: A Review
Rossbach et al. Solving Difficult HTM Problems Without Difficult Hardware

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100511

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100809

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

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110624

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140701

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

Ref document number: 4774056

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

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

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

LAPS Cancellation because of no payment of annual fees