JP2010517144A - スピン・ロックによりロッキング公平性及びロッキング性能の両方を達成する方法及びシステム - Google Patents

スピン・ロックによりロッキング公平性及びロッキング性能の両方を達成する方法及びシステム Download PDF

Info

Publication number
JP2010517144A
JP2010517144A JP2009546472A JP2009546472A JP2010517144A JP 2010517144 A JP2010517144 A JP 2010517144A JP 2009546472 A JP2009546472 A JP 2009546472A JP 2009546472 A JP2009546472 A JP 2009546472A JP 2010517144 A JP2010517144 A JP 2010517144A
Authority
JP
Japan
Prior art keywords
spin lock
cache memory
lock
cache
exclusivity
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
JP2009546472A
Other languages
English (en)
Other versions
JP5137971B2 (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.)
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
Publication of JP2010517144A publication Critical patent/JP2010517144A/ja
Application granted granted Critical
Publication of JP5137971B2 publication Critical patent/JP5137971B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • 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/0817Cache consistency protocols using directory methods
    • G06F12/0828Cache consistency protocols using directory methods with concurrent directory accessing, i.e. handling multiple concurrent coherency transactions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • 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
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

【課題】 改善されたロック機構を提供すること。
【解決手段】 各々が少なくとも1つのプロセッサ及びキャッシュ・メモリを有する複数の処理ノードを含むシステムにおいてスピン・ロックを実装する方法であって、この方法は、キャッシュ・メモリに対する排他性を獲得するステップと、スピン・ロックの可用性をチェックするステップと、スピン・ロックが利用可能である場合、スピン・ロックを論理1に設定するステップと、処理が完了すると、スピン・ロックを論理0に設定するステップと、キャッシュ・メモリの排他性を明示的に明け渡すステップとを含む。キャッシュ・メモリの排他性を明け渡すことは、キャッシュ・メモリを非排他的なものとしてマーク付けするように、キャッシュ・コヒーレント・ハードウェアに命令することを含む。キャッシュ・メモリは、一般的に、レベル2キャッシュと呼ばれる。
【選択図】 図4

Description

開示される本発明は、広義には、ロック操作を最適化する分野に関し、より具体的には、スピン・ロックの分野に関する。
コンピュータ・システムは、高いロック競合の結果として、深刻な性能低下に見舞われることがある。ロック操作は、ソフトウェアのロックと関連付けられ、一度に1つのプロセスだけがメモリ領域などの共有リソースにアクセスできることを保証するために用いられる。共有リソースにアクセスする動作は、クリティカル領域(critical region)に入るとも言われる。また、SMP(Symmetric Multi-Processor、対称型マルチ・プロセッサ)アーキテクチャ及びNUMA(Non-Uniform Memory Access、不均等メモリ・アクセス)アーキテクチャのような大部分の共有メモリ・アーキテクチャは、共有キャッシュ・データに相互排他的にアクセスするためのハードウェア支援を提供する。このハードウェア支援は、キャッシュ・コヒーレント機構として知られている。ロックは、共有データへの同時アクセスを制御するための基本的なソフトウェア同期プリミティブである。1つのCPUだけがロックを獲得し、有用な作業を行なうことができ、その間、他の全てのCPUは、ロックの解放を待たなければならないので、高いロック競合状態の下では性能低下が生じる。
スピン・ロック(spin-lock)は、非常に単純であり、正しく言えば、共有リソースへのアクセスを同期させる有効な方法である。「スピン・ロック」は、スピン・ロックが利用可能でない場合、呼び出し側は、ロックが利用可能になるまでビジー・ウェイト(又は「スピン」)することから、そのように名付けられる。これは、「ソフトウェアのスピン待機(spin-waiting)」と呼ばれる。スピン待機のためのアルゴリズムは、非常に単純である。各プロセスは、共有ロック変数をチェックしなければならない。共有リソースが必要であるとき、プロセスは、lock()を呼び出して変数をテスト及び設定し、リソースを解放する準備ができると、プロセスは、unlock()を呼び出して変数を消去する。lock()関数は、リソースが利用可能になるまで待機プロセスをループさせる。リソースの利用可能性は、共有ロック変数の値によって定められる。従来より、この変数の値が0である場合、リソースは利用可能であり、他の場合には、リソースは別のプロセスによって使用中である。リソースがロックされるとき、共有変数は、ゼロでない値を保持する。
ロックを利用するシステムは、一般的に、共有データ構造へのアクセスを得るために、所定のプロセスがアトミック操作を行なうことを必要とする。言い換えると、別のプロセスは、アトミック操作のテスト部分と設定部分との間、ロックにアクセスすることができない。テスト・アンド・セット操作(test-and-set operation)を行って、共有データ構造と関連付けられたロック変数が消去されたかどうかを判断し、ロック変数をアトミックに設定する。つまり、このテストにより、共有データ構造に別のプロセスによるロックがないかどうかを、プロセスが判断することが可能になり、設定操作により、ロック変数が消去された場合に、プロセスがロックを獲得することが可能になる。
ロック設計への鍵は、高競合状態(high contention)における公平性(fairness)と、低競合状態(low contention)における性能との両方を達成することである。ロック設計の文脈における公平性は、既存のロック保持者に対するロック競争者の位置及び/又は関係に関係なく、そのロックを獲得するために、ロックをめぐって競争する全ての競争者の能力を等しくすることと定義される。既存のロッキング機構は、公平性又は高性能を達成するものであるが、両方を達成するものではない。具体的には、最も広く用いられるロック設計のうちの3つは、スピン・ロック(spin lock)、待ち行列ロック(queue lock)、適応ロック(adaptive lock)、及び公平ロック(fairlock)である。
スピン・ロックは、低競合状態における高性能のために広く用いられている。(非特許文献1を参照されたい。)スピン・ロックの実装において、ロック変数のテストが、別のプロセスが共有メモリ領域へのロックを獲得したことを示す場合、ロックの要求者は、ループを開始し、そこで、ロック変数が消去されるまでロック変数を連続的に読み取り、ロック変数が消去された時点で待機プロセスがアトミックのテスト・アンド・セット操作を再開する。NUMAアーキテクチャにおいて、スピン・ロックは、ノード間の大きなメモリ・アクセス待ち時間の相違によって生じるロッキングの不公平(locking unfairness)に起因するロッキング飢餓状態(locking starvation)をもたらすことがある。CPUは、別のノードから同じスピン・ロックにアクセスするよりもずっと速く、そのローカル・キャッシュ内のスピン・ロックにアクセスできるためである。従って、スピン・ロックが位置するものと同じノード上にあるCPUは、別のノード上に常駐するCPUに比べて、ロックを獲得する可能性がずっと高い。
待ち行列ロック(非特許文献2を参照されたい)、及び適応ロック(非特許文献3を参照されたい)は、複雑なロック・データ構造及びアルゴリズムを導入し、ロックの使用及び所有者(ownership)を常時監視することによって、高競合状態の下での不公平を回避する。しかしながら、これらのデータ構造及びアルゴリズムにより、付加的なロッキング待ち時間のオーバーヘッドも導入され、よって、低競合状態におけるロッキング性能が犠牲になる。
公平ロックは、ビット・マスクを用いて競合するCPUを常時監視することによって、高競合状態における公平性を提供し、他の競合するCPUに対してロックを明示的に明け渡す(explicitly yield)よう、ロックを解放するCPUに要求することによって、公平性を強化する。(非特許文献4を参照されたい。)単純なデータ構造及びアルゴリズムが用いられるために、公平ロックは、低競合状態において、待ち行列ロック及び適応ロックよりも良好なロッキング性能を有する。しかしながら、低競合状態におけるそれらのロッキング性能は、依然としてスピン・ロックのものより劣っている。
T.E.Anderson著、「The Performance Implications of Spin Lock Alternatives for Shared−Memory Multiprocessors」、IEEE Transaction on Parallel and Distributed Systems、1(1):6−16、1990年1月 J.M.Mellor−Crummey及びM.L.Scott著、「Algorithm for Scalable Synchronization on Shared−Memory Multiprocessors」、ACM Transaction on Computer Systems、9(1):21−65、1991年2月 B.−H.Lim及びA.Agarwal著、「Reactive Synchronization Algorithms for Multiprocessors」、ASPLOS 1994年 S.Swaminathan、J.Stultz、J.F.Vogel、P.McKenney、Fairlocks著、「A High Performance Fair Locking Scheme」、第14回International Conference on Parallel and Distributed Computing and Systems、2002年11月
従来技術の欠点を克服する、改善されたロック機構に対する必要性がある。
簡単に言うと、本発明の実施形態によれば、各々が少なくとも1つのプロセッサ及びキャッシュ・メモリを有する複数の処理ノードを含むシステムにおいてスピン・ロックを実装する方法が、キャッシュ・メモリに対する排他性を獲得するステップと、スピン・ロックの利用可能性をチェックするステップと、スピン・ロックが利用可能な場合、スピン・ロックを論理1に設定するステップと、処理が完了すると、スピン・ロックを論理0に設定するステップと、キャッシュ・メモリの排他性を明示的に明け渡すステップとを含む。キャッシュ・メモリの排他性を明け渡すことは、キャッシュ・メモリを非排他的なものとしてマーク付けするように、キャッシュ・コヒーレント・ハードウェアに命令することを含む。レベル2(L2)キャッシュと呼ばれるキャッシュ・メモリは、多数の処理ノード間で物理的に分けられるが、多数の処理ノード間で、単一のアドレス可能ユニットとして論理的に共有される。
本発明の特徴であると考えられる特徴が、添付の特許請求の範囲に記載される。しかしながら、本発明自体、並びに好ましい使用形態、さらなる目的及び利点は、添付の図面と併せて読んだときに、例示的な実施形態の以下の詳細な説明を参照することによって、最も良く理解されるであろう。
既知の技術及び本発明の実施形態の両方による、スピン・ロックを作働させるように構成されたコンピュータ・システムの簡単化されたブロック図である。 既知の技術及び本発明の実施形態の両方による、NUMA分散型共有メモリ・アーキテクチャにおける例示的なロッキング機能を示す図である。 既知の技術による、スピン・ロックを用いる典型的な手順を示すフローチャートである。 本発明の実施形態による、「協働的」機能を示すフローチャートである。
特許請求される本発明は、代替的な形態に変更することができるが、その特定の実施形態が、図面に一例として示され、ここで詳細に説明されるであろう。しかしながら、図面及びその詳細な説明は、本発明を開示された特定の形態に限定することを意図するものではなく、反対に、本発明は、本発明の範囲内に含まれる全ての変更物、同等物及び代替物を網羅することを理解すべきである。
本発明の実施形態による、大規模の不均等メモリ・アクセス(NUMA)分散型共有メモリ・マルチプロセッサ・アーキテクチャのための、低競合状態におけるロッキング性能を犠牲にすることなく、高競合状態におけるロッキング公平性を提供する方法を説明する。これは、本発明の主要な態様によって達成される。
既存のスピン・ロック機構と「協働的」な機能(cooperative feature)は、如何なる付加的なロック・データ構造及びアルゴリズムも必要とせずに、高競合状態における統計的なロッキング公平性をもたらし、よって、低競合状態におけるロッキング性能を保持する。既存のロッキング機構が目標とにする絶対的なロッキング公平性ではなく、統計的なロッキング公平性を提供することは、より有益である。統計的公平性とは、全てのロック競争者が、ロックを獲得する等しい機会を有することを意味し、絶対的公平性とは、全てのロック競争者が、ロックを実際に等しい回数獲得することを意味する。統計的公平性は、絶対的公平性よりも弱い条件であるが、統計的公平性は、実際の用途に適しており、ロッキングのオーバーヘッドの低減によって性能を最適化する。統計的公平性は、いつでも、各ロック競争者がロックを正確に同じ回数だけ獲得することを保証するものではないので、弱い条件であると考えられる。寧ろ、統計的公平性は、各ロック競争者がロックを獲得する等しい機会を有することを提供するだけである。従って、いつでも、各ロック競争者がロックを何回獲得したかを調べるとき、回数がみな同じではない可能性がある。しかしながら、時間が無限に経過するにつれて、各ロック競争者は、同じ回数だけロックを獲得するはずである。
本発明は、不均等メモリ・アクセス(NUMA)分散型共有メモリ・マイクロプロセッサ・アーキテクチャにおいて、ロッキング性能及びロッキング公平性の両方を同時に提供する問題に取り組むものである。既存のスピン・ロック機構と「協働的」な機能は、低競合状態の下でのロッキング性能を犠牲にすることなく、高競合状態の下でのロッキング公平性を可能にする。この協働的機能は、現在のスピン・ロックの使用インターフェース及び意味論への如何なる変更も必要とせず、よって、スピン・ロックを利用するアプリケーションへの如何なる変更も必要としない。
別のプロセッサが利用できるようにするために、ロックを解放する前に処理を途中停止する、まれな状況のために、ロック復元可能性機構(lock recoverability mechanism)を用いることができる。
簡単にするために、メモリ・アドレスは、ロックと関連付けられたリソースの一例として用いられ、CPUは、リソースを捜すデバイスの一例として用いられる。ロックが適用可能である、入力/出力インターフェースのような他のデバイス及び他のリソースも、本発明に従った実施形態から利益を得ることができ、本発明の範囲内に含まれ得ることに留意すべきである。
ターゲット環境
ここで、図面、特に図1を具体的に詳細に参照すると、既知の技術及び本発明の実施形態の両方による、ロッキング・スキームを作働させるように構成された情報処理システム100のブロック図が示される。システム100は、多数のマルチプロセッサ・ノードを含むが、1つのノード、すなわちノード105だけがここに示されている。ノード105は、多数のプロセッサを含み、そのうちの2つ、すなわちCPU115及びCPU120が示されている。プロセッサ115及び120は、マイクロプロセッサ又は複数のマイクロプロセッサとすることができる。主メモリ150は、ランダム・アクセス・メモリ、又はハード・ディスク・ドライブなどの磁気媒体大容量記憶装置のような大容量記憶装置を表す。主メモリ150は、揮発性又は不揮発性とすることができる。ノード105はまた、レベル2キャッシュ・メモリ135も含む。ノード105の各プロセッサにより、キャッシュ・コヒーレント・ハードウェア180が共有される。
本発明の別の実施形態によると、CDROM又はDVDROM190のようなコンピュータ可読媒体が、本発明によるシステム100の一部を作働させるためのプログラム命令を含むことができる。示され、説明されているのは、非常に簡単化されたプログラマブル・コンピュータ装置の表示である。当業者であれば、コンピュータ装置のいずれの実際の適用においても、他の低レベル・コンポーネント及び接続が必要であることを理解するであろう。
ここで図2を参照すると、例示的なNUMA分散型共有メモリ・マルチプロセッサ・アーキテクチャの図が示される。本発明のためのターゲット環境は、NUMA分散型共有メモリ・マルチプロセッサ・アーキテクチャ(以下、単にNUMAアーキテクチャと呼ぶ)である。従って、図2は、アーキテクチャ及びそのメモリ・アクセス特性を示すための一例として与えられる。図2の説明及び表示によって、本発明を用いることができる環境の制限を意図又は暗示するものではない。
ここで図2を参照すると、各々が2つのCPUを有する2つのアフィニティ・ノード、すなわちノード105及びノード210をもつNUMAアーキテクチャの図形的表示が示される。CPU115及びCPU120はノード内に常駐し、CPU225及びCPU230はノード内に常駐する。実際には、ノードの数及びノード当たりのCPUの数は、任意の数の組み合わせとすることができ、唯一の制限は、ハードウェアの実装である。全てのノード上の全てのCPUは、単一のアドレス空間で表される同じ主メモリ150を共有する。ノード内の各CPUは、同じL2キャッシュ・メモリを共有する。L2キャッシュは、レベル2キャッシュ、又はマイクロプロセッサの外部にあるキャッシュ・メモリである。L2キャッシュ・メモリは、マイクロプロセッサ・チップ上に常駐するレベル1キャッシュとは対照的に、マイクロプロセッサ・チップから分離したチップ上に常駐する。多数のCPUがキャッシュ・メモリを共有するために、L2キャッシュが必要である。
CPUがメモリからデータ項目を捜すとき、CPUが、メモリ階層内のデータ項目を検索する論理的進行をたどるに伴って、アクセス待ち時間が次第に増大する。最初に、CPUは、そのプライベート・レベル1(L1)キャッシュ(本発明には無関係であるため、図には示されていない)においてデータ項目が入手可能であるかどうかを判断する。プライベートL1キャッシュにおいてデータ項目が入手可能でない場合、ローカルL2キャッシュをチェックする。ローカルL2キャッシュにおいてデータ項目が入手可能でない場合、同じネットワーク内の全ての他のノードのL2キャッシュをチェックする。最終的に、L2キャッシュのいずれからもデータ項目を入手可能でない場合、主メモリ150からデータ項目をフェッチする。心に留めるべき重要なメモリ・アクセス特性は、a)ローカルL2キャッシュにアクセスすることは、一般的に、所望の項目への最速の、最も直接的な経路であること、b)遠隔のL2キャッシュにアクセスすることは、一般的に、ローカルL2キャッシュにアクセスするよりも2〜3倍遅くなること、c)主メモリ150にアクセスすることは、一般的に、遠隔のL2キャッシュにアクセスするよりも2〜3倍遅くなること、である。
ロッキングの不公平
現在のスピン・ロックが、図2に示されるようなNUMAアーキテクチャにおいてロッキングの不公平をもたらす理由を理解するために、ここで、スピン・ロックを用いる標準的な手順を詳述する図3を参照する。スピン・ロックを獲得するために、CPUは、一般的に、処理ループ(ソフトウェアの「スピン待機」)を用いて、スピン・ロック155が成功裏に獲得されたかどうかをテストする。このテストは、CPUが、スピン・ロック155に対するL2キャッシュの排他性を取得するステップ305で開始される。スピン・ロック155の獲得を試みるために、CPUは、最初に、スピン・ロック155を保持するキャッシュに対する排他性を取得しなければならない。キャッシュの排他性を獲得することは、周知のキャッシュ・コヒーレント・プロトコルの部分である。キャッシュ・コヒーレント・プロトコルは、現在どのCPUがキャッシュに対する排他性を保持しているかを見つけ、キャッシュの値が変化した場合に、キャッシュ・コヒーレント・ハードウェア180がキャッシュを再び主メモリに書き込めることを、CPUに知らせることを必要とする。次に、保持中のCPUは、キャッシュに対する排他性を解放し、別の要求中のCPUがキャッシュに対する排他性を取得できるようにする。
一旦キャッシュの排他性を取得すると、ステップ310において、スピン・ロック155をテストして、その値をチェックする。スピン・ロック155が0に等しくない場合、これは、スピン・ロック155が別のプロセッサによってロックされていることを示す。CPUは、ゼロでない値をもつスピン・ロックを獲得できないので、処理ループはステップ305に戻り、CPUは、再びスピン・ロック155の獲得を試みる。このループは、保持中のCPUがスピン・ロック155を解放するまで続く。スピン・ロックの解放は、スピン・ロックに「0」の値を書き込むことによって達成される。値が0に設定されると、これは、保持中のCPUがスピン・ロック155を解放したことを示す。従って、今や、獲得中のCPUが、値「1」をスピン・ロック155に書き込むことができる。
スピン・ロック155が0に等しい場合、今や別のプロセッサが利用可能である。この時点で、処理はステップ315に進み、論理1がスピン・ロック155に格納される。スピン・ロック155を論理1に設定することは、スピン・ロック155が獲得されたことを表示する。これにより、別のプロセスがスピン・ロック155を利用できなくなる。ここで、スピン・ロック155のコピー145が、主メモリ150からL2キャッシュ内にもたらされ、獲得中のCPUは、今や、L2キャッシュに対する排他性を保持する。次に、ステップ320において、CPUは、CPUが必要とするどのような共有データも読み取る及び/又は書き込む等といった、通常のデータ処理ルーティンを実行し続けることができると同時に、スピン・ロック145を制御する。スピン・ロックを0又は1に設定することは、ロックを「オン」又は「オフ」に切り替える一例であることに留意されたい。
CPUがその処理を終えると、CPUは、スピン・ロック145の解放を準備する。スピン・ロック145を解放するためには、それを解放するために値0をスピン・ロック145に格納しなければならないので、ステップ325において、CPUは、再びL2キャッシュに対する排他性を取得しなければならない。スピン・ロック145の獲得を試みる間、別のプロセッサが排他性を得ることが可能であったので、保持中のCPUは、L2キャッシュの排他性を一時的に失うことがある。CPUは、以前、L2キャッシュに対する排他性を保持していたが、スピン・ロックの獲得を試みている(しかしながら、第1のCPUが依然としてL2キャッシュに対する排他性を保持しているため失敗する)別のCPUが、第1のCPUからL2の排他性を「奪った」。ソフトウェアのスピン・ロックを獲得すること、及び、ハードウェア・キャッシュの排他性を取得することは、2つの異なるプロセスであることに留意されたい。ソフトウェアのスピン・ロックを獲得するため、すなわち、スピン・ロックに1を格納するために、CPUは、スピン・ロックに対するハードウェア・キャッシュの排他性を取得しなければならない。しかしながら、スピン・ロックが値0を有しない限り、すなわち、スピン・ロックが別のCPUによって保持されない限り、スピン・ロックに対するハードウェア・キャッシュの排他性を取得したことが、CPUがソフトウェアのスピン・ロックを獲得したことを意味するものではない。CPUは、スピン・ロックが位置するキャッシュに対する排他的権利を有することなく、スピン・ロックに書き込むことはできない。データにアクセスできるように、2つのレベルの排他性を破らなくてならないことに留意されたい。キャッシュの排他性が取り戻されると、ステップ330において、ロック145が、論理0に設定される。スピン・ロック145をゼロに設定することにより、本質的にスピン・ロックが解放され、待機プロセスが利用できるようになる。
値をスピン・ロック145に格納しなければならないことから、スピン・ロック145を獲得し、かつ、これを解放するために、ハードウェアは、最初に、L2キャッシュ内のスピン・ロック145に対する排他性を取得しなければならない(330及び335)ことに留意することが重要である。以下に、スピン・ロック145の獲得(ステップ205)及びその解放(ステップ330)の両方のために、L2キャッシュ内のスピン・ロック145に対する排他性を取得する必要性が、ロッキングの不公平をもたらすことが分かるであろう。
図2及び図3の両方を参照しながら、ここで、例を用いて、ロッキングの不公平がどのように生じ得るかを示す。図2に示されるNUMAアーキテクチャの2つのノード(105及び210)上の4つのCPU(115、120、225及び230)の全てが、主メモリ150に格納された共有データ項目(図示せず)を取り出すことを望むと仮定する。これを行なうために、CPUは、主メモリ150内に常駐するスピン・ロック155を獲得する必要がある。この時点で、スピン・ロック155は主メモリ150内に常駐しており、主メモリ150へのアクセス待ち時間は同じなので、4つのCPUの全てが、スピン・ロック155を獲得する等しい機会を有する。ノード上のCPU(115)が、スピン・ロックに対するL2キャッシュの排他性の取得に成功し、次に、スピン・ロック155を獲得する(ロック155を「オン」に設定する)と仮定しよう。一旦獲得すると、スピン・ロック155のコピー145が、L2キャッシュ135にもたらされる。今や、CPU115は、L2キャッシュ135に対する排他性を保持する。ノード105上のCPU115がキャッシュに対する排他性を獲得した後、ステップ320に示されるように、CPU115は、データ処理を実行し続けることができる。
ロックの所有者
この間、他の3つのCPU、すなわちCPU120、CPU225及びCPU230は、「スピン待機」によって、スピン・ロック155を獲得する自分らの試みを続け、L2キャッシュ135(CPUがスピン・ロックの獲得を試みる場合)又はL2キャッシュ240(CPU又はCPUがスピン・ロックの獲得を試みる場合)のいずれかが、交代でスピン・ロック155に対する排他性を保持することができる。しかしながら、CPU115がスピン・ロック155を解放する前に、スピン・ロックの値は論理1のままなので、3つのCPUのいずれも、スピン・ロック155を獲得することができない。
ステップ330において、CPU115がデータ処理を終え、スピン・ロック155を解放した後、その関連したL2キャッシュ135は、スピン・ロックを「オフ」にする(0をこれに書き込む)ために、最初に、スピン・ロック155に対する排他性を再取得しなければならない。CPU115が排他性を取得し、スピン・ロック155を解放した後、CPU115は、L2キャッシュに対する排他性を自発的には放棄しない。この点こそ、不公平が証明されるところである。スピン・ロック155は、たとえ解放されても、現在のところノード105のL2キャッシュ135内に常駐していることを思い起こされたい。これは、CPU115がそのキャッシュに対する排他性を再取得しなければならなかったためである。また、排他性を取得するために、ローカル・キャッシュにアクセスする方が、遠隔キャッシュにアクセスするよりも速いことに留意されたい。従って、CPU115がスピン・ロック145を保持していた間、スピン・ロック145を獲得するために、どのノードのL2キャッシュ(135又は240)がスピン・ロック145に対する排他性を保持していたかどうかに関係なく、ここで、排他性はL2キャッシュ135に戻る。その後、CPU120は、CPU225又はCPU230のいずれよりも、解放されたばかりのスピン・ロック155を獲得する可能性が高いであろう。これは、CPU115によるスピン・ロック155の解放に起因して、L2キャッシュ135がスピン・ロック145に対する排他性を既に保持していることから、スピン・ロック155の獲得に必要な、L2キャッシュ内のスピン・ロック145に対する排他性を取得するためのステップ(ステップ205)が、CPU又はCPU(225又は230)の場合よりもCPU120の場合にずっと速く完了するためである。他方、L2キャッシュ240がスピン・ロック145に対する排他性を獲得するためには、L2キャッシュ240は、キャッシュ・コヒーレント・ハードウェア180を通してノード間のキャッシュ問い合わせ(点線260で表される)を行なうことが必要であり、これは、一般に、同じL2キャッシュ内で排他性を獲得するより2〜3倍遅くなる。
CPUの現在の実施は、ロック解放後にそのキャッシュの排他性を自発的には放棄しないので、スピン・ロックの排他性の現在の方法は、同じノード内のコプロセッサに利点を与える。
協働的機能
現在のスピン・ロックが、NUMAアーキテクチャにおける高競合状態の下でロッキングの不公平を引き起こす理由が理解された今、問題を解決するために、本発明の「協働的」機能を用いて、ロッキングの不公平を除去する方法を説明する。保持中のCPUによってスピン・ロックが解放された(ステップ330)後、付加的なステップ(440)が影付きボックス内に示される以外は、図3とほぼ全く同じである図4を参照されたい。前のセクションから、CPU115がスピン・ロック155を解放した結果、L2キャッシュ135がスピン・ロック145に対する排他性を既に保持しているので、CPU120は、CPU115によって解放されたばかりのスピン・ロック155を獲得する、CPU又はCPU(225又は230)を凌ぐ公平な利点を有していないことが分かっている。
ステップ440において、協働的機能が作用し始める。論理0がスピン・ロック155に格納された(ステップ330において)後、L2キャッシュ135は、実際面でCPU115がキャッシュに対する排他性を有していても、L2キャッシュ135を、いずれのCPUに対しても非排他的なものとしてマーク付けするように、キャッシュ・コヒーレント・ハードウェアに命じることによって、スピン・ロック155に対するその排他性を明示的に明け渡す。結果的に、そのノード内に常駐するレベル2キャッシュがスピン・ロック145に対する排他性を既に保持しているため、CPU120は、もはや利点を有さない。従って、スピン・ロック155に対する排他性を取得するために、L2キャッシュ135及びL2キャッシュ240の両方が、キャッシュ間の問い合わせ260を行なわなければならない。その結果、他の3つのCPU、すなわちCPU120、CPU225及びCPU230は、CPU115によって解放されたばかりのスピン・ロック155を獲得するために平等に競争し、高競合状態の下での統計的なロッキング公平性が達成される。
協働的機能は、いずれの付加的なロック・データ構造及びアルゴリズムも必要としないので、低競合状態の下でのロッキング性能が保持される。さらに、現在のスピン・ロック使用インターフェース及び意味論への如何なる変更も必要とせず、よって、スピン・ロックを利用するアプリケーションへの如何なる変更も必要としない。
従って、現在のところ好ましい実施形態であると考えられるものを説明してきたが、当業者であれば、本発明の範囲内で他の修正を行ない得ることを理解するであろう。
100、200:情報処理システム
105、210:ノード
115、120、225、230:CPU
135、240:L2キャッシュ・メモリ
145:スピン・ロックのコピー
150:主メモリ
155:スピン・ロック
180:キャッシュ・コヒーレント・ハードウェア
190:CDROM/DVDROM
260:問い合わせ

Claims (20)

  1. 各々が少なくとも1つのプロセッサ及びキャッシュ・メモリを有する複数の処理ノードを含むシステムにおいてスピン・ロックを実装する方法であって、
    前記キャッシュ・メモリに対する排他性を取得するステップと、
    前記スピン・ロックが利用可能であるかどうかを判断するステップと、
    前記スピン・ロックが利用可能であると判断すると同時に、前記スピン・ロックを獲得するステップと、
    処理が完了すると、前記スピン・ロックを解放するステップと、
    前記キャッシュ・メモリに対する前記排他性を明け渡すステップと
    を含む方法。
  2. 前記獲得するステップは、
    前記スピン・ロックを、他のプロセッサが利用できないことを示す論理状態に設定するステップをさらに含む、請求項1に記載の方法。
  3. 前記スピン・ロックを、利用できないことを示す前記論理状態に設定する前記ステップは、前記スピン・ロックを0以外の整数に設定するステップをさらに含む、請求項2に記載の方法。
  4. 前記解放するステップは、
    前記スピン・ロックを、前記他のプロセッサが利用できないことを示す論理状態に設定するステップをさらに含む、請求項1に記載の方法。
  5. 前記スピン・ロックを、前記他のプロセッサが利用できないことを示す論理状態に設定する前記ステップは、前記スピン・ロックを0に設定するステップをさらに含む、請求項4に記載の方法。
  6. 前記キャッシュ・メモリの排他性を明け渡す前記ステップは、前記キャッシュ・メモリを非排他的なものとしてマーク付けするように、前記システム内のキャッシュ・コヒーレント・ハードウェアに命令するステップをさらに含む、請求項1に記載の方法。
  7. 前記キャッシュ・メモリの排他性を明け渡す前記ステップは、前記解放するステップの後に自動的に実行される、請求項6に記載の方法。
  8. 前記獲得するステップは、
    主メモリから前記スピン・ロックにアクセスするステップと、
    前記スピン・ロックを前記キャッシュ・メモリにコピーするステップと
    をさらに含む、請求項1に記載の方法。
  9. 前記解放するステップは、
    前記キャッシュ・メモリの排他性を再獲得するステップをさらに含む、請求項1に記載の方法。
  10. 前記判断するステップは、
    前記スピン・ロックが、前記他のプロセッサが利用できることを示す前記論理状態に設定されたかどうかを判断するために、前記キャッシュ・メモリに問い合わせるステップをさらに含む、請求項1に記載の方法。
  11. スピン・ロックを含む主メモリと、
    前記主メモリに作働的に接続され、各々が、
    キャッシュ・メモリと、
    前記種々のメモリに作動的に接続され、かつ、
    前記キャッシュ・メモリに対する排他性を獲得し、
    前記スピン・ロックの可用性を判断し、
    前記スピン・ロックが利用可能であると判断すると同時に前記スピン・ロックを獲得し、
    処理が完了すると前記スピン・ロックを解放し、
    前記キャッシュ・メモリに対する前記排他性を明け渡す、
    ための命令を実行するように構成された、1つ又は複数のプロセッサと、
    キャッシュ・コヒーレント・ハードウェアと
    を含む複数のノードと
    を備える情報処理システム。
  12. 前記キャッシュ・メモリは、レベル2キャッシュ・メモリである、請求項11に記載の情報処理システム。
  13. 前記1つ又は複数のプロセッサは、
    前記キャッシュ・メモリを非排他的なものとしてマーク付けするように、前記キャッシュ・コヒーレント・ハードウェアに命令することによって、前記キャッシュ・メモリに対する前記排他性を明示的に明け渡すための命令を実行するようにさらに構成される、請求項11に記載の情報処理システム。
  14. 前記1つ又は複数のプロセッサは、
    前記スピン・ロックを、他のプロセッサが利用できないことを示す論理状態に設定するための命令を実行するようにさらに構成される、請求項11に記載の情報処理システム。
  15. 前記スピン・ロックは、前記主メモリに常駐する、請求項11に記載の情報処理システム。
  16. 前記1つ又は複数のプロセッサは、
    前記スピン・ロックを、他のプロセッサが利用できることを示す論理状態に設定するための命令を実行するようにさらに構成される、請求項11に記載の情報処理システム。
  17. 前記論理状態は0である、請求項16に記載の情報処理システム。
  18. 前記論理状態は0以外の整数である、請求項14に記載の情報処理システム。
  19. 前記1つ又は複数のプロセッサは、単一のキャッシュ・コヒーレント・ハードウェアを共有する、請求項11に記載の情報処理システム。
  20. 各々が少なくとも1つのプロセッサ及びキャッシュ・メモリを有する複数の処理ノードを含むシステムにおいてスピン・ロックを実装するためのコンピュータ・プログラムであって、前記コンピュータ・プログラムは、
    前記キャッシュ・メモリに対する排他性を取得するステップと、
    前記スピン・ロックが利用可能であるかどうかを判断するステップと、
    前記スピン・ロックが利用可能であると判断すると同時に、前記スピン・ロックを獲得するステップと、
    処理が完了すると、前記スピン・ロックを解放するステップと、
    前記キャッシュ・メモリに対する前記排他性を明け渡すステップと
    を行なうための論理を含む、コンピュータ・プログラム。
JP2009546472A 2007-01-23 2008-01-15 スピン・ロックによりロッキング公平性及びロッキング性能の両方を達成する方法及びシステム Active JP5137971B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/625,842 2007-01-23
US11/625,842 US7487279B2 (en) 2007-01-23 2007-01-23 Achieving both locking fairness and locking performance with spin locks
PCT/US2008/051047 WO2008091757A2 (en) 2007-01-23 2008-01-15 Achieving both locking fairness and locking performance with spin locks

Publications (2)

Publication Number Publication Date
JP2010517144A true JP2010517144A (ja) 2010-05-20
JP5137971B2 JP5137971B2 (ja) 2013-02-06

Family

ID=39642384

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009546472A Active JP5137971B2 (ja) 2007-01-23 2008-01-15 スピン・ロックによりロッキング公平性及びロッキング性能の両方を達成する方法及びシステム

Country Status (5)

Country Link
US (1) US7487279B2 (ja)
EP (1) EP2126704B1 (ja)
JP (1) JP5137971B2 (ja)
KR (1) KR20090106392A (ja)
WO (1) WO2008091757A2 (ja)

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8719514B2 (en) * 2007-06-27 2014-05-06 Intel Corporation Software filtering in a transactional memory system
US8065490B2 (en) * 2007-09-28 2011-11-22 Intel Corporation Hardware acceleration of strongly atomic software transactional memory
US9021502B2 (en) * 2008-12-29 2015-04-28 Oracle America Inc. Method and system for inter-thread communication using processor messaging
US8799914B1 (en) * 2009-09-21 2014-08-05 Tilera Corporation Managing shared resource in an operating system by distributing reference to object and setting protection levels
JP2011150422A (ja) * 2010-01-19 2011-08-04 Renesas Electronics Corp データ処理装置
US9189228B2 (en) * 2011-07-01 2015-11-17 Adobe Systems Incorporated Systems and methods for developing and testing electronic content using multiple devices
KR101878297B1 (ko) 2012-03-06 2018-08-07 삼성전자주식회사 락 홀더 선점 회복 방법 및 장치
US9146944B2 (en) 2012-03-16 2015-09-29 Oracle International Corporation Systems and methods for supporting transaction recovery based on a strict ordering of two-phase commit calls
US9760584B2 (en) 2012-03-16 2017-09-12 Oracle International Corporation Systems and methods for supporting inline delegation of middle-tier transaction logs to database
US10133596B2 (en) 2012-03-16 2018-11-20 Oracle International Corporation System and method for supporting application interoperation in a transactional middleware environment
US8966491B2 (en) 2012-04-27 2015-02-24 Oracle International Corporation System and method for implementing NUMA-aware reader-writer locks
US8694706B2 (en) 2012-04-27 2014-04-08 Oracle International Corporation System and method for NUMA-aware locking using lock cohorts
US9201809B2 (en) * 2013-05-14 2015-12-01 Globalfoundries Inc. Accidental shared volume erasure prevention
CN104166587B (zh) * 2013-05-17 2018-11-30 新华三技术有限公司 一种临界资源的访问装置和方法
US9996402B2 (en) 2014-04-07 2018-06-12 Oracle International Corporation System and method for implementing scalable adaptive reader-writer locks
GB2532424B (en) 2014-11-18 2016-10-26 Ibm An almost fair busy lock
US9959055B2 (en) * 2016-06-30 2018-05-01 Hewlett Packard Enterprise Development Lp Placement of a processing unit in unfair lock mode in response to a queue in a fair lock mode
CN107370797B (zh) * 2017-06-30 2021-07-27 北京百度网讯科技有限公司 一种基于HBase的强有序队列操作的方法和装置
KR102450133B1 (ko) * 2019-04-04 2022-10-05 한국전자통신연구원 분산 잠금 관리를 하는 분산 시스템 및 그것의 동작 방법
CN112306698A (zh) * 2019-07-29 2021-02-02 华为技术有限公司 一种numa系统中的临界区执行方法及装置
KR20210034372A (ko) * 2019-09-20 2021-03-30 주식회사 엘지화학 배터리 관리 장치 및 방법
JP2021072074A (ja) * 2019-11-03 2021-05-06 ルネサスエレクトロニクス株式会社 半導体装置および半導体装置の制御方法
CN111984428A (zh) * 2020-07-20 2020-11-24 上海金仕达软件科技有限公司 一种资源访问时自旋锁的实现方法、装置及设备
US11669498B2 (en) 2020-07-24 2023-06-06 EMC IP Holding Company LLC Facilitating exclusive local locks on a distributed file system
US11216316B1 (en) * 2020-07-27 2022-01-04 EMC IP Holding Company LLC Facilitating object deletion based on delete lock contention in distributed file systems
CN115934370A (zh) * 2022-12-23 2023-04-07 科东(广州)软件科技有限公司 自旋锁的获取方法、装置、设备及存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04296951A (ja) * 1991-03-19 1992-10-21 Mitsubishi Electric Corp キャッシュメモリ
JPH04350743A (ja) * 1991-05-29 1992-12-04 Mitsubishi Electric Corp キャッシュメモリ
JPH0540689A (ja) * 1991-08-06 1993-02-19 Fujitsu Ltd バツフアメモリ制御方式
JP2000122916A (ja) * 1998-10-12 2000-04-28 Emerging Architectures Llc 原子的更新処理を実行する方法
JP2005316854A (ja) * 2004-04-30 2005-11-10 Fujitsu Ltd 情報処理装置、プロセッサ、プロセッサの制御方法、情報処理装置の制御方法、キャッシュメモリ

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07191944A (ja) * 1991-09-11 1995-07-28 Internatl Business Mach Corp <Ibm> 多重プロセッサによる多数の資源への命令におけるデッドロックを防止するためのシステムおよび方法
US6260117B1 (en) * 1997-09-18 2001-07-10 International Business Machines Corporation Method for increasing efficiency in a multi-processor system and multi-processor system with increased efficiency
US6047316A (en) * 1997-12-12 2000-04-04 Intel Corporation Multiprocessor computing apparatus having spin lock fairness
US6275907B1 (en) * 1998-11-02 2001-08-14 International Business Machines Corporation Reservation management in a non-uniform memory access (NUMA) data processing system
US7246187B1 (en) * 2000-11-28 2007-07-17 Emc Corporation Method and apparatus for controlling exclusive access to a shared resource in a data storage system
US6792497B1 (en) * 2000-12-12 2004-09-14 Unisys Corporation System and method for hardware assisted spinlock
US6779090B2 (en) * 2002-05-21 2004-08-17 International Business Machines Corporation Spinlock for shared memory
US8316048B2 (en) * 2004-08-17 2012-11-20 Hewlett-Packard Development Company, L.P. Method and apparatus for managing a data structure for multi-processor access

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04296951A (ja) * 1991-03-19 1992-10-21 Mitsubishi Electric Corp キャッシュメモリ
JPH04350743A (ja) * 1991-05-29 1992-12-04 Mitsubishi Electric Corp キャッシュメモリ
JPH0540689A (ja) * 1991-08-06 1993-02-19 Fujitsu Ltd バツフアメモリ制御方式
JP2000122916A (ja) * 1998-10-12 2000-04-28 Emerging Architectures Llc 原子的更新処理を実行する方法
JP2005316854A (ja) * 2004-04-30 2005-11-10 Fujitsu Ltd 情報処理装置、プロセッサ、プロセッサの制御方法、情報処理装置の制御方法、キャッシュメモリ

Also Published As

Publication number Publication date
US20080177955A1 (en) 2008-07-24
EP2126704A2 (en) 2009-12-02
WO2008091757A3 (en) 2008-12-18
US7487279B2 (en) 2009-02-03
EP2126704B1 (en) 2014-07-23
WO2008091757A2 (en) 2008-07-31
EP2126704A4 (en) 2012-12-26
KR20090106392A (ko) 2009-10-08
JP5137971B2 (ja) 2013-02-06

Similar Documents

Publication Publication Date Title
JP5137971B2 (ja) スピン・ロックによりロッキング公平性及びロッキング性能の両方を達成する方法及びシステム
Li et al. Algorithmic improvements for fast concurrent cuckoo hashing
Saha et al. McRT-STM: a high performance software transactional memory system for a multi-core runtime
US7571288B2 (en) Scalable rundown protection for object lifetime management
US8417897B2 (en) System and method for providing locale-based optimizations in a transactional memory
JP6333848B2 (ja) スケーラブル競合適応性を有する統計カウンタを実施するシステムおよび方法
US8296524B2 (en) Supporting efficient spin-locks and other types of synchronization in a cache-coherent multiprocessor system
EP0965919A2 (en) A probabilistic queue lock
US7065763B1 (en) Method of reducing contention of a highly contended lock protecting multiple data items
US10929201B2 (en) Method and system for implementing generation locks
US6985984B2 (en) Multiprocessing systems employing hierarchical back-off locks
US11972777B2 (en) Reader bias based locking technique enabling high read concurrency for read-mostly workloads
JP6341931B2 (ja) 更新確率値を格納する共用確率的カウンタを実施するシステムおよび方法
JP2004529415A (ja) 短待ち時間メモリ・アクセスおよび同期化
Afek et al. Fast and scalable rendezvousing
Boroumand et al. LazyPIM: Efficient support for cache coherence in processing-in-memory architectures
JP2016502212A (ja) Numaアウェア統計カウンタを実施するシステムおよび方法
Zhang et al. Scalable adaptive NUMA-aware lock
Yui et al. Nb-GCLOCK: A non-blocking buffer management based on the generalized CLOCK
Gómez-Hernández et al. Efficient, distributed, and non-speculative multi-address atomic operations
Bershad Practical considerations for lock-free concurrent objects
Kuo et al. MP-LOCKs: replacing H/W synchronization primitives with message passing
Yi et al. A scalable lock on NUMA multicore
Atoofian Improving performance of software transactional memory through contention locality
Morrison Fast and Scalable Software Execution on Multicores

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100816

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20120621

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120626

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120814

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120911

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20121009

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

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

R150 Certificate of patent or registration of utility model

Ref document number: 5137971

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20151122

Year of fee payment: 3