JP2010117869A - メモリ制御装置、プログラム及び方法 - Google Patents

メモリ制御装置、プログラム及び方法 Download PDF

Info

Publication number
JP2010117869A
JP2010117869A JP2008290387A JP2008290387A JP2010117869A JP 2010117869 A JP2010117869 A JP 2010117869A JP 2008290387 A JP2008290387 A JP 2008290387A JP 2008290387 A JP2008290387 A JP 2008290387A JP 2010117869 A JP2010117869 A JP 2010117869A
Authority
JP
Japan
Prior art keywords
update
transaction
shared memory
entry
version
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2008290387A
Other languages
English (en)
Other versions
JP4702962B2 (ja
Inventor
Takuya Nakaike
卓也 仲池
Rei Ohira
怜 大平
Takeshi Ogasawara
武史 小笠原
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.)
International Business Machines Corp
Original Assignee
International Business Machines 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 International Business Machines Corp filed Critical International Business Machines Corp
Priority to JP2008290387A priority Critical patent/JP4702962B2/ja
Priority to US12/616,236 priority patent/US8271739B2/en
Publication of JP2010117869A publication Critical patent/JP2010117869A/ja
Application granted granted Critical
Publication of JP4702962B2 publication Critical patent/JP4702962B2/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
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

【課題】プログラムの実行効率を向上させる。
【解決手段】共有メモリに対するアクセスをトランザクション単位で制御するメモリ制御装置であって、共有メモリに記憶されたデータのバージョンを記憶する管理部と、トランザクションの処理中の共有メモリに対する更新処理の実行に応じて、当該更新処理をしたデータのバージョンを含む更新エントリを、トランザクション毎に記憶するログ記憶部と、トランザクションのコミット要求が与えられたことに応じて、更新エントリに含まれるバージョンと管理部に記憶されたバージョンとが一致する場合、当該更新処理の実行に応じた処理結果を共有メモリに書き込み、一致しない場合、当該更新処理を再実行して再実行結果を共有メモリに書き込む制御部と、を備えるメモリ制御装置を提供する。
【選択図】図3

Description

本発明は、共有メモリに対するアクセスをトランザクション単位で制御するメモリ制御装置、プログラム及び方法に関する。
コンピュータシステムにおいて、複数のスレッドが複数の処理を並列に実行するマルチスレッドが用いられる。マルチスレッドを用いたコンピュータシステムでは、各スレッドが、複数のスレッドが共通に用いる共有変数にアクセスする場合、他のスレッドとの同期をとらなければならない。マルチスレッドにおける同期方法としては、例えば、ロックを使用した排他制御が知られている。しかし、ロックを使用した排他制御では、排他的に実行される処理領域(即ち、クリティカルセクション)が大きくなると、マルチスレッドによる処理の並列性が損なわれ、性能を低下させてしまう。
このような問題を解決する同期機構の一つに、トランザクショナルメモリが存在する。トランザクショナルメモリは、クリティカルセクションをトランザクションとして扱い、トランザクション内のメモリアクセスをアトミックに処理する。即ち、トランザクショナルメモリは、トランザクション内の共有変数に対するメモリアクセスをログし、トランザクション内での共有変数の値の変更を、当該トランザクションがコミットされるまで、他のトランザクションから不可視とする。そして、トランザクショナルメモリは、トランザクションの最後において共有変数に対するアクセスの衝突を確認して、衝突がなければ当該トランザクションをコミットして共有変数の値の変更を反映し、衝突があれば当該トランザクションをロールバックする。
図1は、2つのトランザクションT1、T2が並行して共有変数Vの値をリードモディファイライトした場合の処理の流れを示す。例えば、トランザクションT1内での共有変数Vの値の変更がコミットされ、トランザクションT2がトランザクションT1においてコミットされる前の共有変数Vの値を読んでいる。この場合、トランザクションT1とトランザクションT2との間で共有変数Vに対するメモリアクセスが衝突し、トランザクションT2のコミットが失敗する。コミットに失敗したトランザクションT2は、ロールバックされる。即ち、トランザクションT2は、トランザクション内のメモリアクセスが、トランザクションの開始時の状態に巻き戻されて、再実行される。
T.Harris,S. Stipic、"Abstract nested Transactions"、[online]、TRANSACT 2007、[平成20年10月27日検索]、インターネット <URL http://www.cs.rochester.edu/meetings/TRANSACT07/papers/harris.pdf>
ところで、このようなトランザクショナルメモリでは、トランザクション中に、変数の値を読み出して読み出した値に対して演算をした後に書き戻すリードモディファイライトが存在すると、ロールバックが頻繁に発生する可能性がある。ロールバックによるオーバヘッドは、トランザクションのサイズが大きいほど大きい。従って、大きなサイズのトランザクションにリードモディファイライトが含まれている場合、プログラムの実行効率が悪くなってしまう。
このような問題を回避する方法として、非特許文献1には、トランザクションのコミット失敗時において、トランザクション全体を再実行しなくてよい方法が記載されている。非特許文献1に記載された方法は、プログラマがトランザクションを構成するコード中に、ANT(Abstract nested Transactions)ブロックを設ける。そして、ANTブロックの実行のログおよびANTブロック以外のコードの実行のログを別個に取得し、もしANTブロック中のメモリアクセスのみがロールバックの原因となっている場合、ANTブロックのみの再実行を試みる。そして、最初の実行結果と再実行の結果とを比較して、もし再実行がプログラムの実行結果に影響しない場合、再実行の結果を基にコミットする。
しかし、非特許文献1に記載された方法では、プログラマがリードモディファイライト等のロールバックの原因となる箇所を指定しなければならない。従って、ソースコードが存在しないライブラリの中のリードモディファイライトが原因でロールバックが頻発した場合、トランザクション全体の再実行を回避することができない。
そこで本発明は、上記の課題を解決することのできるメモリ制御装置、プログラム及び方法を提供することを目的とする。この目的は特許請求の範囲における独立項に記載の特徴の組み合わせにより達成される。また従属項は本発明の更なる有利な具体例を規定する。
上記課題を解決するために、本発明の第1の態様においては、共有メモリに対するアクセスをトランザクション単位で制御するメモリ制御装置であって、前記共有メモリに記憶されたデータのバージョンを記憶する管理部と、トランザクションの処理中の前記共有メモリに対する更新処理の実行に応じて、当該更新処理をしたデータのバージョンを含む更新エントリを、トランザクション毎に記憶するログ記憶部と、トランザクションのコミット要求が与えられたことに応じて、更新エントリに含まれるバージョンと前記管理部に記憶されたバージョンとが一致する場合、当該更新処理の実行に応じた処理結果を前記共有メモリに書き込み、一致しない場合、当該更新処理を再実行して再実行結果を前記共有メモリに書き込む制御部と、を備えるメモリ制御装置を提供する。更に、このようなメモリ制御装置としてコンピュータを機能させるプログラム及び方法を提供する。
なお、上記の発明の概要は、本発明の必要な特徴の全てを列挙したものではなく、これらの特徴群のサブコンビネーションもまた、発明となりうる。
以下、発明の実施の形態を通じて本発明を説明するが、以下の実施形態は特許請求の範囲にかかる発明を限定するものではなく、また実施形態の中で説明されている特徴の組み合わせの全てが発明の解決手段に必須であるとは限らない。
図2は、本実施形態に係るコンピュータシステム10の構成を示す。コンピュータシステム10は、複数のスレッド12と、共有メモリ14とを備える。複数のスレッド12は、それぞれがプロセッサを有し、複数のプログラムを並行して実行する。共有メモリ14は、それぞれのスレッド12からアクセスされる共有変数を記憶する。
また、複数のスレッド12のそれぞれは、トランザクショナルメモリの機能を有する。これにより、複数のスレッド12のそれぞれは、他のスレッド12との同期を取って、共有メモリ14に対してアクセスをすることができる。
図3は、本実施形態に係るメモリ制御装置30の機能構成を、共有メモリ14及び実行部20と共に示す。実行部20は、スレッド12内のプロセッサがプログラムを実行することにより実現される。実行部20は、共有メモリ14に対するアクセスを実行する。より具体的には、実行部20は、共有メモリ14に記憶されているデータを読み出す読出処理、共有メモリ14に対してデータを書き込む書込処理を実行する。更に、実行部20は、共有メモリ14に記憶されているデータを読み出して読み出したデータに所定の演算処理を施したデータを共有メモリ14に書き戻す更新処理を実行する。
メモリ制御装置30は、実行部20による共有メモリ14に対するアクセスをトランザクション単位で制御して、トランザクショナルメモリの機能を実現する。メモリ制御装置30は、複数のスレッド12のそれぞれにより個別に実現されてもよいし、複数のスレッド12のうちの何れか一つにより当該コンピュータシステム10の共通機能として実現されてもよい。
なお、ここで、トランザクションとは、実行部20による複数の処理を一つにまとめた単位をいう。トランザクションは、コミットまたはロールバックにより処理が完了する。メモリ制御装置30は、一のトランザクション内の全ての処理が不整合無く完了できる場合には、処理結果を共有メモリ14に反映するコミット処理を実行する。また、メモリ制御装置30は、一のトランザクション内の少なくとも1つの処理に不整合が発生する場合には、実行部20に対してロールバックを要求して、実行部20により当該一のトランザクションを再実行させる。
メモリ制御装置30は、管理部32と、ログ記憶部34と、制御部36とを備える。管理部32は、共有メモリ14に記憶されたそれぞれのデータのバージョンを記憶する。ここで、管理部32は、それぞれのデータのバージョンを、当該コンピュータシステム10において実行される複数のトランザクションに対して同期して管理する。管理部32は、一例として、複数のスレッド12によりアクセスがされるメモリ上にバージョンを表わす値を記憶して、記憶した値をロックを用いた排他制御により管理する。
ログ記憶部34は、トランザクションの処理中の共有メモリ14に対する更新処理の実行に応じて、当該更新処理をしたデータのバージョンを含む更新エントリを、トランザクション毎に記憶する。より具体的には、ログ記憶部34は、トランザクションの処理中において共有メモリ14に対する更新処理が実行された場合、更新処理の対象となるデータのバージョンを管理部32から読み出す。そして、ログ記憶部34は、読み出したバージョンを含む更新エントリを生成して、生成した更新エントリを当該トランザクションに対応させて記憶する。
制御部36は、実行部20からトランザクションのコミット要求が与えられたことに応じて、更新エントリに含まれるバージョンと管理部32に記憶されたバージョンとが一致するか否かを判断する。そして、制御部36は、一致する場合、当該更新処理の実行に応じた処理結果を共有メモリ14に書き込み、一致しない場合、当該更新処理を再実行して再実行結果を共有メモリ14に書き込む。
ただし、制御部36は、トランザクションのコミット要求が与えられたことに応じて、更新エントリに含まれるバージョンと管理部32に記憶されたバージョンとが一致せず且つ当該更新処理の実行に応じた処理結果が読み出されている場合、再実行結果を共有メモリ14に書き込むことなく、当該トランザクションをロールバックさせる。また、制御部36は、トランザクションのコミット要求が与えられたことに応じて、更新エントリに含まれるバージョンと管理部32に記憶されたバージョンとが一致せず且つ当該更新処理の処理結果が他の書込処理に応じて上書きされている場合、上書きされたデータを共有メモリ14に書き込む。
このようにメモリ制御装置30は、当該トランザクション内の更新処理の対象のデータが、当該更新処理を実行してからコミットまでの間に他のトランザクション内の処理において書き換えられた場合であっても、コミット時まで実行を遅らせることができる更新処理についてはコミット時において再実行する。これにより、メモリ制御装置30によれば、トランザクションの全体の再実行を回避して、プログラムの実行効率を向上させることができる。
図4は、管理部32内に記憶されたデータの一例を示す。管理部32は、一例として、共有メモリ14に記憶されたデータのバージョンを共有メモリ14のアドレス毎に管理してよい。
管理部32は、一例として、図4に示されるように、インデックス、バージョンおよびロックビットを見出しとして含むテーブルを記憶してよい。インデックスには、共有メモリ14のアドレスを表わす値が格納される。
バージョンには、対応するアドレスに記憶されたデータのバージョンを表す値が格納される。例えば、バージョンには、初期値(例えば0)から最終値(例えば1023)までの範囲を、サイクリックに、1ずつインクリメントまたはデクリメントされる整数値が格納されてよい。ロックビットには、当該行におけるバージョンの更新を排他管理するためのビット値が格納される。管理部32は、このようなテーブルを記憶することにより、共有メモリ14に記憶されたデータのバージョンを共有メモリ14のアドレス毎に管理することができる。
なお、管理部32は、アドレスの下位ビットの値毎に、データのバージョンを管理してもよい。この場合、管理部32は、アドレスの下位ビットが同一となる複数のデータのバージョンを共通に管理するので、コミット時においてバージョンの不一致が生じる可能性が高くなるデメリットが生じるが、記憶容量を少なくすることができるというメリットが生じる。
図5は、ログ記憶部34内に記憶されるデータの構成の一例を示す。ログ記憶部34は、読出エントリ、更新エントリおよび書込エントリをトランザクション毎に記憶する。
より詳しくは、ログ記憶部34は、トランザクションの処理中の共有メモリ14に対する読出処理および更新処理の実行に応じて、読出エントリをトランザクション毎に記憶する。ここで、ログ記憶部34は、それぞれの読出エントリに、当該読出処理又は当該更新処理において読み出すデータの共有メモリ14上のアドレス、および、当該読出処理又は当該更新処理において読み出すデータのバージョンを含めて記憶する。
また、ログ記憶部34は、トランザクションの処理中の共有メモリ14に対する更新処理の実行に応じて、更新エントリをトランザクション毎に記憶する。ここで、ログ記憶部34は、それぞれの更新エントリに、当該更新処理において更新するデータの共有メモリ14上のアドレス、当該更新処理において更新するデータのバージョン、および、当該更新処理の処理結果を含む書込エントリへのポインタを含めて記憶する。
また、ログ記憶部34は、トランザクションの処理中の共有メモリ14に対する書込処理および更新処理の実行に応じて、書込エントリをトランザクション毎に記憶する。ここで、ログ記憶部34は、それぞれの書込エントリに、アドレス、データ、読出フラグ、上書フラグおよび内容情報を含めて記憶する。
各書込エントリに含まれるアドレスは、当該書込処理又は当該更新処理において書き込むデータの共有メモリ14上のアドレスである。各書込エントリに含まれるデータは、当該書込処理において共有メモリ14に書き込むデータ、または、当該更新処理において共有メモリ14に書き込む当該更新処理の処理結果であるデータである。
また、各書込エントリに含まれる読出フラグは、当該書込エントリに含まれるデータが読み出されたことを示すフラグである。各書込エントリに含まれる上書フラグは、当該書込エントリのデータが更新処理以外の処理に応じて書き込まれたことを示すフラグである。
各書込エントリに含まれる内容情報は、当該更新処理の内容を表わす情報である。ログ記憶部34は、一例として、内容情報として、値を読み出して1を加算して書き戻す処理(インクリメント)、値を読み出して1を減算して書き戻す処理(デクリメント)、値を読み出して定数を加算して書き戻す処理、値を読み出して定数を乗算して書き戻す処理等を識別する情報を記憶する。
なお、このようなログ記憶部34は、トランザクションの処理中の共有メモリ14に対する更新処理の実行において、当該更新処理において更新するデータの共有メモリ14上のアドレスが既に何れかの書込エントリに含まれている場合、当該更新処理に対応する新たな更新エントリを記憶しない。そして、この場合には、ログ記憶部34は、当該更新処理において更新するデータの共有メモリ14上のアドレスを含む書込エントリに更新処理結果を格納する。
図6は、実行部20によるトランザクションの処理中の共有メモリ14に対する読出処理の実行において、メモリ制御装置30が行う処理のフローを示す。メモリ制御装置30の制御部36は、実行部20によるトランザクションの処理中の共有メモリ14に対する読出処理の実行に応じて、当該読出処理において読み出すデータの共有メモリ14上のアドレスを実行部20から受け取る。そして、制御部36は、受け取ったアドレスが、当該トランザクションに対応してログ記憶部34内に記憶された何れかの書込エントリに含まれているか否かを判断する(S101)。即ち、制御部36は、当該読出処理により読み出すデータが、当該トランザクションの処理中の当該読出処理より以前の書込処理により書き込まれたデータであるか否かを判断する。
制御部36は、当該読出処理において読み出すデータの共有メモリ14上のアドレスが当該トランザクションに対応する何れの書込エントリにも含まれていない場合(S101のNO)、共有メモリ14からデータを読み出す(S102)。続いて、制御部36は、共有メモリ14から読み出したデータのバージョンを、管理部32から読み出す(S103)。続いて、制御部36は、読み出したデータの共有メモリ14上のアドレスおよびバージョンを含む読出エントリを、新たに追加してログ記憶部34に記憶させる(S104)。
一方、制御部36は、当該読出処理において読み出すデータの共有メモリ14上のアドレスが当該トランザクションに対応する何れかの書込エントリに含まれていた場合(S101のYES)、当該書込エントリからデータを読み出す(S105)。続いて、制御部36は、当該書込エントリに、読出フラグを設定する(S106)。
ステップS104またはステップS106の処理を終えると、続いて、制御部36は、共有メモリ14または書込エントリから読み出したデータを実行部20に返信する(S107)。ステップS107の処理を終えると、制御部36は、当該書込処理に応じた処理を終了する。制御部36は、以上のステップS101からステップS107の処理を、実行部20において読出処理が実行される毎に実行する。
図7は、実行部20によるトランザクションの処理中の共有メモリ14に対する書込処理の実行において、メモリ制御装置30が行う処理のフローを示す。メモリ制御装置30の制御部36は、実行部20によるトランザクションの処理中の共有メモリ14に対する書込処理の実行に応じて、当該書込処理において共有メモリ14に書き込むデータおよび共有メモリ14上のアドレスを、実行部20から受け取る。そして、制御部36は、受け取ったアドレスが、当該トランザクションに対応してログ記憶部34内に記憶された何れかの書込エントリに含まれているか否かを判断する(S121)。即ち、制御部36は、当該トランザクションの処理中の当該書込処理より以前に書き込んだデータに、新たなデータを上書するか否かを判断する。
制御部36は、当該書込処理においてデータを書き込む共有メモリ14上のアドレスが当該トランザクションに対応する何れの書込エントリにも含まれていない場合(S121のNO)、書込エントリを新たに追加してログ記憶部34に記憶させる(S122)。一方、制御部36は、当該書込処理においてデータを書き込む共有メモリ14上のアドレスが当該トランザクションに対応する何れかの書込エントリに含まれていた場合(S121のYES)、新たな書込エントリを追加せずに、当該書込エントリをログ記憶部34に上書きして記憶させる(S123)。
ここで、ログ記憶部34は、当該書込処理が更新処理に伴った処理である場合には、書込エントリに、アドレス、データ及び内容情報を含め、読出フラグ及び上書フラグを含めずに記憶する。また、ログ記憶部34は、当該書込処理が更新処理に伴っていない処理である場合には、書込エントリに、アドレス、データ及び上書フラグを含め、読出フラグ及び内容情報を含めずに記憶する。
ステップS122またはステップS123の処理を終えると、制御部36は、書込処理に応じた処理を終了する。制御部36は、以上のステップS121からステップS123の処理を、実行部20において書込処理が実行される毎に実行する。
図8は、実行部20によるトランザクションの処理中の共有メモリ14に対する更新処理の実行において、メモリ制御装置30が行う処理のフローを示す。メモリ制御装置30の制御部36は、実行部20によるトランザクションの処理中の共有メモリ14に対する更新処理の実行に応じて、当該更新処理において読み出すデータの共有メモリ14上のアドレスを、実行部20から受け取る。そして、制御部36は、図6のステップS101からステップS107において示した読出処理と同様の処理を実行する(S131)。実行部20は、ステップS131において読み出されたデータに対して、インクリメントおよびデクリメント等の更新処理のための演算を施す。
続いて、制御部36は、更新処理のための演算をした結果を実行部20から受け取る。これとともに、制御部36は、更新処理の処理内容を実行部20から受け取る。そして、制御部36は、図7のステップS121からステップS123において示した書込処理と同様の処理を実行する(S132)。
続いて、制御部36は、受け取ったアドレスが、当該トランザクションに対応してログ記憶部34内に記憶された何れかの更新エントリに含まれているか否かを判断する(S133)。制御部36は、当該更新処理においてデータを書き込む共有メモリ14上のアドレスが当該トランザクションに対応する何れの更新エントリにも含まれていない場合(S133のNO)、アドレス、データ及びポインタを含めた更新エントリを、ログ記憶部34に新たに追加して記憶させる(S134)。そして、制御部36は、当該更新処理を終了する。
一方、制御部36は、当該更新処理においてデータを書き込む共有メモリ14上のアドレスが当該トランザクションに対応する何れかの更新エントリに含まれていた場合(S133のYES)、新たな更新エントリを追加せずに、処理を終了する。制御部36は、以上のステップS131からステップS134の処理を、実行部20において更新処理が実行される毎に実行する。
図9は、実行部20からトランザクションのコミット要求が与えられた場合に、メモリ制御装置30が行う処理のフローを示す。メモリ制御装置30の制御部36は、実行部20からトランザクションのコミット要求が与えられたことに応じて、以下のステップS141からステップS152の処理を実行する。
制御部36は、トランザクションのコミット要求が与えられると、当該トランザクションに対応して記憶した、全ての書込エントリに含まれるアドレスを読出して、読み出したそれぞれのアドレスについてロックを取得する(S141)。これにより、制御部36は、これらのアドレスに対して、他のトランザクションによるデータの書き換えを禁止することができる。
なお、制御部36は、読み出したアドレスのうち何れか1つでもロックが取得できなかった場合には、実行部20による当該トランザクションの処理を開始時の状態にロールバックさせて処理を終了する(S142)。これにより、制御部36は、当該トランザクションの処理中に書き込まれるべきデータが、他のトランザクションにより書き換えられている場合には、当該トランザクションをロールバックして再実行させるので、他のトランザクションとの同期を取ることができる。
ロックが取得できると、続いて、制御部36は、当該トランザクションの処理中において記憶された読出エントリのそれぞれについて、当該読出エントリに含まれるバージョンと、当該読出エントリに含まれるアドレスに対応する管理部32に記憶されたバージョンとが一致するか否かを比較する(S143)。読出エントリに含まれるバージョンと管理部32に記憶されたバージョンとが一つでも一致しない場合、制御部36は、実行部20による当該トランザクションの処理を開始時の状態にロールバックさせて処理を終了する(S142)。これにより、制御部36は、当該トランザクションの処理中に読み出されたデータが他のトランザクションにより書き換えられた場合には、当該トランザクションをロールバックして再実行させるので、当該データの整合性を保つことができる。
当該読出エントリに含まれるバージョンと管理部32に記憶されたバージョンとが全て一致する場合、制御部36は、処理をステップS144に進める。ステップS144において、制御部36は、当該トランザクションの処理中において記憶された更新エントリのそれぞれについて、当該更新エントリに含まれるバージョンと、当該更新エントリに含まれるアドレスに対応する管理部32に記憶されたバージョンとが一致するか否かを比較する(S144)。制御部36は、当該更新エントリに含まれるバージョンと管理部32に記憶されたバージョンとが全て一致する場合、処理をステップS151に進める。
制御部36は、当該更新エントリに含まれるバージョンと管理部32に記憶されたバージョンとが一つでも一致しない場合、処理をステップS145に進める。次にステップS145において、制御部36は、当該トランザクションの処理中において記憶された更新エントリのそれぞれついて、当該更新エントリに含まれるバージョンと管理部32に記憶されたバージョンとが一致せず且つ当該更新エントリに含まれるポインタにより示された書込エントリに読出フラグが含まれるか否かを判断する(S145)。制御部36は、更新エントリの何れか一つでも、当該更新エントリのバージョンが不一致で且つポインタにより示された書込エントリに読出フラグが含まれる場合、実行部20による当該トランザクションの処理を開始時の状態にロールバックさせて処理を終了する(S142)。これにより、制御部36は、更新処理をした処理結果が当該トランザクション中において読み出されており、且つ、当該更新処理をすべきデータが他のトランザクションにおいて書き換えられた場合には、当該トランザクションをロールバックして再実行させるので、当該データの整合性を保つことができる。
更新エントリの何れもが、当該更新エントリのバージョンが不一致で且つポインタにより示された書込エントリに読出フラグが含まれない場合、制御部36は、処理をステップS146に進める。制御部36は、当該トランザクションの処理中において記憶された更新エントリのそれぞれについて、ステップS147からステップS149の処理を実行する(S146、S150)。
制御部36は、ステップS147において、当該更新エントリに含まれるポインタにより示された書込エントリに上書フラグが含まれるか否かを判断する(S147)。当該更新エントリに含まれるポインタにより示された書込エントリに上書フラグが含まれない場合(S147のNO)、当該更新処理を再実行する(S148)。この場合において、制御部36は、再実行対象となる更新処理に対応する更新エントリに含まれるポインタにより示された書込エントリ内の内容情報に応じた更新処理を再実行する。続いて、制御部36は、更新処理を再実行した再実行結果を再実行対象となる更新処理に対応する更新エントリに含まれるポインタにより示された書込エントリ内に上書きする(S149)。
また、制御部36は、当該更新エントリに含まれるポインタにより示された書込エントリに上書フラグが含まれる場合(S147のYES)、当該更新エントリに対応する更新処理を再実行しない。以上のように、制御部36は、当該更新エントリに含まれるポインタにより示された書込エントリに上書フラグが含まれず且つ当該更新エントリに含まれるバージョンと管理部32に記憶されたバージョンとが一致しない場合、当該更新処理を再実行することができる。
当該トランザクションの処理中において記憶された更新エントリのそれぞれについて、ステップS147からステップS149の処理を終了すると、制御部36は、処理をステップS151に進める。ステップS151において、制御部36は、当該トランザクションに対応するそれぞれの書込エントリに含まれるデータを、共有メモリ14の当該書込エントリに含まれたアドレスに書き込む(S151)。
続いて、制御部36は、共有メモリ14に書き込んだデータのバージョンを更新する(S152)。制御部36は、一例として、更新エントリに含まれるそれぞれのアドレスに対応するバージョンを管理部32から読み出して、読み出した値を例えば1ずつインクリメントして、管理部32に書き戻す。
このようにメモリ制御装置30は、当該トランザクション内の更新処理の対象のデータが、当該更新処理を実行してからコミットまでの間に書き換えられてバージョンの不一致が発生した場合であっても、コミット時まで実行を遅らせることができる更新処理についてはコミット時において再実行する。これにより、メモリ制御装置30によれば、トランザクションの全体の再実行を回避して、プログラムの実行効率を向上させることができる。
図10は、本実施形態に係るコンピュータ1900のハードウェア構成の一例を示す。本実施形態に係るコンピュータ1900は、ホスト・コントローラ2082により相互に接続されるCPU2000、RAM2020、グラフィック・コントローラ2075、及び表示装置2080を有するCPU周辺部と、入出力コントローラ2084によりホスト・コントローラ2082に接続される通信インターフェイス2030、ハードディスクドライブ2040、及びCD−ROMドライブ2060を有する入出力部と、入出力コントローラ2084に接続されるROM2010、フレキシブルディスク・ドライブ2050、及び入出力チップ2070を有するレガシー入出力部とを備える。
ホスト・コントローラ2082は、RAM2020と、高い転送レートでRAM2020をアクセスするCPU2000及びグラフィック・コントローラ2075とを接続する。CPU2000は、ROM2010及びRAM2020に格納されたプログラムに基づいて動作し、各部の制御を行う。グラフィック・コントローラ2075は、CPU2000等がRAM2020内に設けたフレーム・バッファ上に生成する画像データを取得し、表示装置2080上に表示させる。これに代えて、グラフィック・コントローラ2075は、CPU2000等が生成する画像データを格納するフレーム・バッファを、内部に含んでもよい。
入出力コントローラ2084は、ホスト・コントローラ2082と、比較的高速な入出力装置である通信インターフェイス2030、ハードディスクドライブ2040、CD−ROMドライブ2060を接続する。通信インターフェイス2030は、ネットワークを介して他の装置と通信する。ハードディスクドライブ2040は、コンピュータ1900内のCPU2000が使用するプログラム及びデータを格納する。CD−ROMドライブ2060は、CD−ROM2095からプログラム又はデータを読み取り、RAM2020を介してハードディスクドライブ2040に提供する。
また、入出力コントローラ2084には、ROM2010と、フレキシブルディスク・ドライブ2050、及び入出力チップ2070の比較的低速な入出力装置とが接続される。ROM2010は、コンピュータ1900が起動時に実行するブート・プログラム、及び/又は、コンピュータ1900のハードウェアに依存するプログラム等を格納する。フレキシブルディスク・ドライブ2050は、フレキシブルディスク2090からプログラム又はデータを読み取り、RAM2020を介してハードディスクドライブ2040に提供する。入出力チップ2070は、フレキシブルディスク・ドライブ2050を入出力コントローラ2084へと接続すると共に、例えばパラレル・ポート、シリアル・ポート、キーボード・ポート、マウス・ポート等を介して各種の入出力装置を入出力コントローラ2084へと接続する。
RAM2020を介してハードディスクドライブ2040に提供されるプログラムは、フレキシブルディスク2090、CD−ROM2095、又はICカード等の記録媒体に格納されて利用者によって提供される。プログラムは、記録媒体から読み出され、RAM2020を介してコンピュータ1900内のハードディスクドライブ2040にインストールされ、CPU2000において実行される。
コンピュータ1900にインストールされ、コンピュータ1900をメモリ制御装置30として機能させるプログラムは、管理モジュールと、ログ記憶モジュールと、制御モジュールとを備える。これらのプログラム又はモジュールは、CPU2000等に働きかけて、コンピュータ1900を、管理部32、ログ記憶部34および制御部36としてそれぞれ機能させる。
これらのプログラムに記述された情報処理は、コンピュータ1900に読込まれることにより、ソフトウェアと上述した各種のハードウェア資源とが協働した具体的手段である管理部32、ログ記憶部34および制御部36として機能する。そして、これらの具体的手段によって、本実施形態におけるコンピュータ1900の使用目的に応じた情報の演算又は加工を実現することにより、使用目的に応じた特有のメモリ制御装置30が構築される。
一例として、コンピュータ1900と外部の装置等との間で通信を行う場合には、CPU2000は、RAM2020上にロードされた通信プログラムを実行し、通信プログラムに記述された処理内容に基づいて、通信インターフェイス2030に対して通信処理を指示する。通信インターフェイス2030は、CPU2000の制御を受けて、RAM2020、ハードディスクドライブ2040、フレキシブルディスク2090、又はCD−ROM2095等の記憶装置上に設けた送信バッファ領域等に記憶された送信データを読み出してネットワークへと送信し、もしくは、ネットワークから受信した受信データを記憶装置上に設けた受信バッファ領域等へと書き込む。このように、通信インターフェイス2030は、DMA(ダイレクト・メモリ・アクセス)方式により記憶装置との間で送受信データを転送してもよく、これに代えて、CPU2000が転送元の記憶装置又は通信インターフェイス2030からデータを読み出し、転送先の通信インターフェイス2030又は記憶装置へとデータを書き込むことにより送受信データを転送してもよい。
また、CPU2000は、ハードディスクドライブ2040、CD−ROMドライブ2060(CD−ROM2095)、フレキシブルディスク・ドライブ2050(フレキシブルディスク2090)等の外部記憶装置に格納されたファイルまたはデータベース等の中から、全部または必要な部分をDMA転送等によりRAM2020へと読み込ませ、RAM2020上のデータに対して各種の処理を行う。そして、CPU2000は、処理を終えたデータを、DMA転送等により外部記憶装置へと書き戻す。このような処理において、RAM2020は、外部記憶装置の内容を一時的に保持するものとみなせるから、本実施形態においてはRAM2020および外部記憶装置等をメモリ、記憶部、または記憶装置等と総称する。本実施形態における各種のプログラム、データ、テーブル、データベース等の各種の情報は、このような記憶装置上に格納されて、情報処理の対象となる。なお、CPU2000は、RAM2020の一部をキャッシュメモリに保持し、キャッシュメモリ上で読み書きを行うこともできる。このような形態においても、キャッシュメモリはRAM2020の機能の一部を担うから、本実施形態においては、区別して示す場合を除き、キャッシュメモリもRAM2020、メモリ、及び/又は記憶装置に含まれるものとする。
また、CPU2000は、RAM2020から読み出したデータに対して、プログラムの命令列により指定された、本実施形態中に記載した各種の演算、情報の加工、条件判断、情報の検索・置換等を含む各種の処理を行い、RAM2020へと書き戻す。例えば、CPU2000は、条件判断を行う場合においては、本実施形態において示した各種の変数が、他の変数または定数と比較して、大きい、小さい、以上、以下、等しい等の条件を満たすかどうかを判断し、条件が成立した場合(又は不成立であった場合)に、異なる命令列へと分岐し、またはサブルーチンを呼び出す。
また、CPU2000は、記憶装置内のファイルまたはデータベース等に格納された情報を検索することができる。例えば、第1属性の属性値に対し第2属性の属性値がそれぞれ対応付けられた複数のエントリが記憶装置に格納されている場合において、CPU2000は、記憶装置に格納されている複数のエントリの中から第1属性の属性値が指定された条件と一致するエントリを検索し、そのエントリに格納されている第2属性の属性値を読み出すことにより、所定の条件を満たす第1属性に対応付けられた第2属性の属性値を得ることができる。
以上に示したプログラム又はモジュールは、外部の記録媒体に格納されてもよい。記録媒体としては、フレキシブルディスク2090、CD−ROM2095の他に、DVD又はCD等の光学記録媒体、MO等の光磁気記録媒体、テープ媒体、ICカード等の半導体メモリ等を用いることができる。また、専用通信ネットワーク又はインターネットに接続されたサーバシステムに設けたハードディスク又はRAM等の記憶装置を記録媒体として使用し、ネットワークを介してプログラムをコンピュータ1900に提供してもよい。
以上、本発明を実施の形態を用いて説明したが、本発明の技術的範囲は上記実施の形態に記載の範囲には限定されない。上記実施の形態に、多様な変更または改良を加えることが可能であることが当業者に明らかである。その様な変更または改良を加えた形態も本発明の技術的範囲に含まれ得ることが、特許請求の範囲の記載から明らかである。
請求の範囲、明細書、および図面中において示した装置、システム、プログラム、および方法における動作、手順、ステップ、および段階等の各処理の実行順序は、特段「より前に」、「先立って」等と明示しておらず、また、前の処理の出力を後の処理で用いるのでない限り、任意の順序で実現しうることに留意すべきである。請求の範囲、明細書、および図面中の動作フローに関して、便宜上「まず、」、「次に、」等を用いて説明したとしても、この順で実施することが必須であることを意味するものではない。
図1は、2つのトランザクションT1、T2が並行して共有変数Vの値をリードモディファイライトした場合の処理の流れを示す。 図2は、本実施形態に係るコンピュータシステム10の構成を示す。 図3は、本実施形態に係るメモリ制御装置30の機能構成を、共有メモリ14及び実行部20と共に示す。 図4は、管理部32内に記憶されたデータの一例を示す。 図5は、ログ記憶部34内に記憶されるデータの構成の一例を示す。 図6は、実行部20によるトランザクションの処理中の共有メモリ14に対する読出処理の実行において、メモリ制御装置30が行う処理のフローを示す。 図7は、実行部20によるトランザクションの処理中の共有メモリ14に対する書込処理の実行において、メモリ制御装置30が行う処理のフローを示す。 図8は、実行部20によるトランザクションの処理中の共有メモリ14に対する更新処理の実行において、メモリ制御装置30が行う処理のフローを示す。 図9は、実行部20からトランザクションのコミット要求が与えられた場合に、メモリ制御装置30が行う処理のフローを示す。 本発明の実施形態に係るコンピュータ1900のハードウェア構成の一例を示す。
符号の説明
10 コンピュータシステム
12 スレッド
14 共有メモリ
20 実行部
30 メモリ制御装置
32 管理部
34 ログ記憶部
36 制御部
1900 コンピュータ
2000 CPU
2010 ROM
2020 RAM
2030 通信インターフェイス
2040 ハードディスクドライブ
2050 フレキシブルディスク・ドライブ
2060 CD−ROMドライブ
2070 入出力チップ
2075 グラフィック・コントローラ
2080 表示装置
2082 ホスト・コントローラ
2084 入出力コントローラ
2090 フレキシブルディスク
2095 CD−ROM

Claims (13)

  1. 共有メモリに対するアクセスをトランザクション単位で制御するメモリ制御装置であって、
    前記共有メモリに記憶されたデータのバージョンを記憶する管理部と、
    トランザクションの処理中の前記共有メモリに対する更新処理の実行に応じて、当該更新処理をしたデータのバージョンを含む更新エントリを、トランザクション毎に記憶するログ記憶部と、
    トランザクションのコミット要求が与えられたことに応じて、更新エントリに含まれるバージョンと前記管理部に記憶されたバージョンとが一致する場合、当該更新処理の実行に応じた処理結果を前記共有メモリに書き込み、一致しない場合、当該更新処理を再実行して再実行結果を前記共有メモリに書き込む制御部と、
    を備えるメモリ制御装置。
  2. 前記制御部は、トランザクションのコミット要求が与えられたことに応じて、更新エントリに含まれるバージョンと前記管理部に記憶されたバージョンとが一致せず且つ当該更新処理の実行に応じた処理結果が読み出されている場合、再実行結果を前記共有メモリに書き込むことなく、当該トランザクションをロールバックさせる
    請求項1に記載のメモリ制御装置。
  3. 前記制御部は、トランザクションのコミット要求が与えられたことに応じて、更新エントリに含まれるバージョンと前記管理部に記憶されたバージョンとが一致せず且つ当該更新処理の処理結果が他の書込処理に応じて上書きされている場合、上書きされたデータを前記共有メモリに書き込む
    請求項1から2の何れかに記載のメモリ制御装置。
  4. 前記管理部は、前記共有メモリに記憶されたデータのバージョンをアドレス毎に管理し、
    前記ログ記憶部は、それぞれの更新エントリに、当該更新処理において更新するデータの共有メモリ上のアドレスおよび当該更新処理において更新するデータのバージョンを含めて記憶し、
    前記制御部は、トランザクションのコミット要求が与えられたことに応じて、当該トランザクションの処理中において記憶された更新エントリのそれぞれについて、当該更新エントリに含まれるバージョンと前記管理部に記憶されたバージョンとが一致する場合、当該更新処理の実行に応じた処理結果を前記共有メモリの当該更新エントリに含まれたアドレスに書き込み、一致しない場合、当該更新処理を再実行して再実行結果を前記共有メモリの当該更新エントリに含まれたアドレスに書き込む
    請求項1から3の何れかに記載のメモリ制御装置。
  5. 前記ログ記憶部は、
    トランザクションの処理中の前記共有メモリに対する読出処理の実行に応じて、当該読出処理において読み出すデータの共有メモリ上のアドレスおよび当該読出処理において読み出すデータのバージョンを含む読出エントリを、トランザクション毎に記憶し、
    トランザクションの処理中の前記共有メモリに対する書込処理の実行に応じて、当該書込処理において書き込むデータの共有メモリ上のアドレスおよび当該書込処理において前記共有メモリに書き込むデータを含む書込エントリを、トランザクション毎に記憶し、
    トランザクションの処理中の前記共有メモリに対する更新処理の実行に応じて、当該更新処理において読み出すデータの共有メモリ上のアドレスおよび当該更新処理において読み出すデータのバージョンを含む読出エントリを、トランザクション毎に記憶し、
    トランザクションの処理中の前記共有メモリに対する更新処理の実行に応じて、当該更新処理において書き込むデータの共有メモリ上のアドレスおよび当該更新処理において前記共有メモリに書き込む当該更新処理の処理結果であるデータを含む書込エントリを、トランザクション毎に記憶する
    請求項4に記載のメモリ制御装置。
  6. 前記ログ記憶部は、トランザクションの処理中の前記共有メモリに対する更新処理の実行において、当該更新処理において更新するデータの共有メモリ上のアドレスが既に何れかの書込エントリに含まれている場合、当該更新処理に対応する新たな更新エントリを記憶せずに、当該更新処理において更新するデータの共有メモリ上のアドレスを含む書込エントリに更新処理結果を格納する
    請求項5に記載のメモリ制御装置。
  7. 前記ログ記憶部は、それぞれの更新エントリに、当該更新処理の処理結果を含む書込エントリへのポインタを含めて記憶し、
    前記制御部は、
    トランザクションのコミット要求が与えられたことに応じて、
    当該トランザクションの処理中において記憶された更新エントリのそれぞれについて、当該更新エントリに含まれるバージョンと前記管理部に記憶されたバージョンとが一致しない場合、当該更新処理を再実行し、
    更新処理を再実行した再実行結果を、再実行対象となる更新処理に対応する更新エントリに含まれる前記ポインタにより示された書込エントリ内に上書きし、
    当該トランザクションに対応するそれぞれの書込エントリに含まれるデータを、前記共有メモリの当該書込エントリに含まれたアドレスに書き込む
    請求項5から6の何れかに記載のメモリ制御装置。
  8. 前記ログ記憶部は、更新処理の処理結果を含む書込エントリに、当該更新処理の内容を表わす内容情報を含めて記憶し、
    前記制御部は、再実行対象となる更新処理に対応する更新エントリに含まれる前記ポインタにより示された書込エントリ内の内容情報に応じた更新処理を再実行する
    請求項7に記載のメモリ制御装置。
  9. 前記ログ記憶部は、それぞれの書込エントリに、当該書込エントリに含まれるデータが読み出されたことを示す読出フラグを含めて記憶し、
    前記制御部は、トランザクションの処理中の前記共有メモリに対する読出処理の実行に応じて、当該読出処理において読み出すデータの共有メモリ上のアドレスが当該トランザクションに対応する何れの書込エントリにも含まれていない場合、前記共有メモリからデータを読み出し、何れかの書込エントリに含まれていた場合、当該書込エントリからデータを読み出すとともに当該書込エントリに前記読出フラグを設定し、
    前記制御部は、トランザクションのコミット要求が与えられたことに応じて、当該トランザクションの処理中において記憶された更新エントリの何れかについて、当該更新エントリに含まれるバージョンと前記管理部に記憶されたバージョンとが一致せず且つ当該更新エントリに含まれる前記ポインタにより示された書込エントリに前記読出フラグが含まれる場合、書込エントリに含まれるデータを前記共有メモリに書き込むことなく、当該トランザクションをロールバックさせる
    請求項7から8の何れかに記載のメモリ制御装置。
  10. 前記ログ記憶部は、それぞれの書込エントリに、当該書込エントリのデータが更新処理以外の処理に応じて書き込まれたことを示す上書フラグを含んで記憶し、
    前記制御部は、トランザクションのコミット要求が与えられたことに応じて、当該トランザクションの処理中において記憶された更新エントリのそれぞれについて、当該更新エントリに含まれる前記ポインタにより示された書込エントリに前記上書フラグが含まれる場合、当該更新エントリに対応する更新処理を再実行せずに、当該書込エントリに含まれるデータを前記共有メモリの当該書込エントリに含まれたアドレスに書き込む
    請求項7から9の何れかに記載のメモリ制御装置。
  11. 共有メモリに対するアクセスをトランザクション単位で制御するメモリ制御装置であって、
    前記共有メモリに記憶されたデータのバージョンをアドレス毎に管理する管理部と、
    トランザクションの処理中の前記共有メモリに対する更新処理の実行に応じて、当該更新処理において更新するデータの共有メモリ上のアドレスおよび当該更新処理をしたデータのバージョンを含む更新エントリを、トランザクション毎に記憶するログ記憶部と、
    制御部と、
    を備え、
    前記制御部は、
    トランザクションのコミット要求が与えられたことに応じて、
    当該トランザクションの処理中において記憶された更新エントリのそれぞれについて、当該更新エントリに含まれるバージョンと前記管理部に記憶されたバージョンとが一致する場合、当該更新処理の実行に応じた処理結果を前記共有メモリの当該更新エントリに含まれたアドレスに書き込み、一致しない場合、当該更新処理を再実行して再実行結果を前記共有メモリの当該更新エントリに含まれたアドレスに書き込み、
    当該トランザクションの処理中において記憶された更新エントリの何れかについて、更新エントリに含まれるバージョンと前記管理部に記憶されたバージョンとが一致せず且つ当該更新処理の実行に応じた処理結果が読み出されている場合、再実行結果を前記共有メモリに書き込むことなく、当該トランザクションをロールバックさせ、
    当該トランザクションの処理中において記憶された更新エントリのそれぞれについて、更新エントリに含まれるバージョンと前記管理部に記憶されたバージョンとが一致せず且つ当該更新処理の処理結果が他の書込処理に応じて上書きされている場合、上書きされたデータを前記共有メモリに書き込む
    メモリ制御装置。
  12. 共有メモリに対するアクセスをトランザクション単位で制御するメモリ制御装置として、コンピュータを機能させるプログラムであって、
    前記コンピュータを、
    前記共有メモリに記憶されたデータのバージョンを記憶する管理部と、
    トランザクションの処理中の前記共有メモリに対する更新処理の実行に応じて、当該更新処理をしたデータのバージョンを含む更新エントリを、トランザクション毎に記憶するログ記憶部と、
    トランザクションのコミット要求が与えられたことに応じて、更新エントリに含まれるバージョンと前記管理部に記憶されたバージョンとが一致する場合、当該更新処理の実行に応じた処理結果を前記共有メモリに書き込み、一致しない場合、当該更新処理を再実行して再実行結果を前記共有メモリに書き込む制御部と、
    して機能させるプログラム。
  13. 共有メモリに対するアクセスをトランザクション単位で制御するメモリ制御装置として、コンピュータを動作させる方法であって、
    前記コンピュータは、
    前記共有メモリに記憶されたデータのバージョンを記憶する管理部と、
    トランザクションの処理中の前記共有メモリに対する更新処理の実行に応じて、当該更新処理をしたデータのバージョンを含む更新エントリを、トランザクション毎に記憶するログ記憶部と、
    を備え、
    トランザクションのコミット要求が与えられたことに応じて、更新エントリに含まれるバージョンと前記管理部に記憶されたバージョンとが一致する場合、当該更新処理の実行に応じた処理結果を前記共有メモリに書き込み、一致しない場合、当該更新処理を再実行して再実行結果を前記共有メモリに書き込む
    方法。
JP2008290387A 2008-11-12 2008-11-12 メモリ制御装置、プログラム及び方法 Expired - Fee Related JP4702962B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2008290387A JP4702962B2 (ja) 2008-11-12 2008-11-12 メモリ制御装置、プログラム及び方法
US12/616,236 US8271739B2 (en) 2008-11-12 2009-11-11 Memory control apparatus, program, and method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008290387A JP4702962B2 (ja) 2008-11-12 2008-11-12 メモリ制御装置、プログラム及び方法

Publications (2)

Publication Number Publication Date
JP2010117869A true JP2010117869A (ja) 2010-05-27
JP4702962B2 JP4702962B2 (ja) 2011-06-15

Family

ID=42166242

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008290387A Expired - Fee Related JP4702962B2 (ja) 2008-11-12 2008-11-12 メモリ制御装置、プログラム及び方法

Country Status (2)

Country Link
US (1) US8271739B2 (ja)
JP (1) JP4702962B2 (ja)

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9569254B2 (en) * 2009-07-28 2017-02-14 International Business Machines Corporation Automatic checkpointing and partial rollback in software transaction memory
JP2011134202A (ja) * 2009-12-25 2011-07-07 Internatl Business Mach Corp <Ibm> メモリ管理装置、メモリ管理方法、及びメモリ管理プログラム
US9384004B2 (en) 2012-06-15 2016-07-05 International Business Machines Corporation Randomized testing within transactional execution
US9442737B2 (en) 2012-06-15 2016-09-13 International Business Machines Corporation Restricting processing within a processor to facilitate transaction completion
US8966324B2 (en) 2012-06-15 2015-02-24 International Business Machines Corporation Transactional execution branch indications
US8880959B2 (en) 2012-06-15 2014-11-04 International Business Machines Corporation Transaction diagnostic block
US9317460B2 (en) 2012-06-15 2016-04-19 International Business Machines Corporation Program event recording within a transactional environment
US8682877B2 (en) 2012-06-15 2014-03-25 International Business Machines Corporation Constrained transaction execution
US8688661B2 (en) * 2012-06-15 2014-04-01 International Business Machines Corporation Transactional processing
US20130339680A1 (en) 2012-06-15 2013-12-19 International Business Machines Corporation Nontransactional store instruction
US9367323B2 (en) 2012-06-15 2016-06-14 International Business Machines Corporation Processor assist facility
US9740549B2 (en) 2012-06-15 2017-08-22 International Business Machines Corporation Facilitating transaction completion subsequent to repeated aborts of the transaction
US9448796B2 (en) 2012-06-15 2016-09-20 International Business Machines Corporation Restricted instructions in transactional execution
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
US10437602B2 (en) 2012-06-15 2019-10-08 International Business Machines Corporation Program interruption filtering in transactional execution
US9772854B2 (en) 2012-06-15 2017-09-26 International Business Machines Corporation Selectively controlling instruction execution in transactional processing
US9436477B2 (en) 2012-06-15 2016-09-06 International Business Machines Corporation Transaction abort instruction
US9348642B2 (en) 2012-06-15 2016-05-24 International Business Machines Corporation Transaction begin/end instructions
US11257271B2 (en) 2013-09-26 2022-02-22 Imagination Technologies Limited Atomic memory update unit and methods
US9466091B2 (en) * 2013-09-26 2016-10-11 Imagination Technologies Limited Atomic memory update unit and methods
CN110097492A (zh) * 2013-09-26 2019-08-06 想象技术有限公司 原子存储器更新单元和方法
US10242042B2 (en) * 2013-10-31 2019-03-26 Hewlett Packard Enterprise Development Lp Copy-on-write update-triggered consistency

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001527242A (ja) * 1997-12-22 2001-12-25 ティモシー アール リーモント ロックグループを用いた楽観的並行処理制御のためのきめ細やかな整合性をもたらす仕組み

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5493668A (en) * 1990-12-14 1996-02-20 International Business Machines Corporation Multiple processor system having software for selecting shared cache entries of an associated castout class for transfer to a DASD with one I/O operation
JPH0827755B2 (ja) * 1991-02-15 1996-03-21 インターナショナル・ビジネス・マシーンズ・コーポレイション データの単位を高速度でアクセスする方法
US7917494B2 (en) * 2008-07-11 2011-03-29 Adobe Software Trading Company Limited System and method for a log-based data storage

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001527242A (ja) * 1997-12-22 2001-12-25 ティモシー アール リーモント ロックグループを用いた楽観的並行処理制御のためのきめ細やかな整合性をもたらす仕組み

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
CSND200601415004, 鈴村 幸太郎, "アプリケーション開発の必修知識 トランザクション完全理解", 日経ソフトウエア 第9巻 第9号, 20060724, p.66−75, JP, 日経BP社 *

Also Published As

Publication number Publication date
JP4702962B2 (ja) 2011-06-15
US8271739B2 (en) 2012-09-18
US20100122041A1 (en) 2010-05-13

Similar Documents

Publication Publication Date Title
JP4702962B2 (ja) メモリ制御装置、プログラム及び方法
US11386065B2 (en) Database concurrency control through hash-bucket latching
JP4774056B2 (ja) トランザクショナルなメモリアクセスのハイブリッドハードウェア・ソフトウェア実現のための方法及び装置
US8484438B2 (en) Hierarchical bloom filters for facilitating concurrency control
US8316366B2 (en) Facilitating transactional execution in a processor that supports simultaneous speculative threading
US20110029490A1 (en) Automatic Checkpointing and Partial Rollback in Software Transaction Memory
JP2008225693A (ja) データベース管理方法、装置およびプログラム
US9652492B2 (en) Out-of-order execution of strictly-ordered transactional workloads
US10007548B2 (en) Transaction system
US8244682B2 (en) Saving snapshot of a knowledge base without blocking
JP2004252986A (ja) 複製コマンド配布のシステムおよび方法
US20150019580A1 (en) Efficiently searching and modifying a variable length queue
JPH08328933A (ja) 並列処理システムのファイルアクセス制御方式
US9442837B2 (en) Accelerating multiversion concurrency control using hardware transactional memory
JP5181183B2 (ja) 変換装置、サーバシステム、変換方法およびプログラム
US11126459B2 (en) Filesystem using hardware transactional memory on non-volatile dual in-line memory module
Dong et al. Fine-Grained Re-Execution for Efficient Batched Commit of Distributed Transactions
US10430287B2 (en) Computer
JP5186334B2 (ja) 変換装置、プログラムおよび変換方法
Meng et al. SwingDB: An embedded in-memory DBMS enabling instant snapshot sharing
WO2014064914A1 (ja) データ格納装置、データ格納方法およびプログラム
WO2019198824A1 (ja) 制御処理装置、制御処理方法および制御処理プログラム
KR20070096195A (ko) 램 트랜잭션 버퍼를 이용한 트랜잭션 처리방법
JP5832592B1 (ja) データ管理装置
KR101881039B1 (ko) 비휘발성 메모리에 저장된 메모리 매핑 파일의 비동기식 원자적 업데이트 방법 및 제어 장치

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20101028

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20101221

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110127

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20110215

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20110216

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110307

LAPS Cancellation because of no payment of annual fees