JP2008518337A - 多数のプロセッサをグレースフルに処理するアトミック命令なしリード・コピー・アップデートの猶予時間検出 - Google Patents

多数のプロセッサをグレースフルに処理するアトミック命令なしリード・コピー・アップデートの猶予時間検出 Download PDF

Info

Publication number
JP2008518337A
JP2008518337A JP2007538381A JP2007538381A JP2008518337A JP 2008518337 A JP2008518337 A JP 2008518337A JP 2007538381 A JP2007538381 A JP 2007538381A JP 2007538381 A JP2007538381 A JP 2007538381A JP 2008518337 A JP2008518337 A JP 2008518337A
Authority
JP
Japan
Prior art keywords
processing
token
indicator
data element
processor
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
JP2007538381A
Other languages
English (en)
Other versions
JP4551452B2 (ja
JP2008518337A5 (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 JP2008518337A publication Critical patent/JP2008518337A/ja
Publication of JP2008518337A5 publication Critical patent/JP2008518337A5/ja
Application granted granted Critical
Publication of JP4551452B2 publication Critical patent/JP4551452B2/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/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/526Mutual exclusion algorithms
    • 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
    • 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
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/52Indexing scheme relating to G06F9/52
    • G06F2209/522Manager
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99951File or database maintenance
    • Y10S707/99952Coherency, e.g. same view to multiple users
    • Y10S707/99953Recoverability
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99951File or database maintenance
    • Y10S707/99956File allocation
    • Y10S707/99957Garbage collection

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Multi Processors (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Image Processing (AREA)

Abstract

【課題】 不要な猶予時間トークン処理を回避する新しいリード・コピー・アップデート猶予時間検出技術を提供する。
【解決手段】 共有データ要素への既存の参照が除去されるまで共有データ要素の除去を据え置くことが必要なリード・コピー・アップデート・サブシステム又は他の処理環境において、アトミック命令なしに猶予時間を検出するための方法、システム、及びコンピュータ・プログラム製品である。猶予時間の検出は、データ要素へのアクセスを共有する処理エンティティ間で循環されるトークンを確立することを含む。トークンが処理エンティティ間を周回するたびに、猶予時間が経過する。各々の処理エンティティと関連付けられた分散インジケータが、いずれかの共有データ要素に関する除去処理を行う必要があるかどうかを示す。分散インジケータは、各々の処理エンティティがトークン処理を行う前に、各々の処理エンティティにおいて処理される。トークン処理は、分散インジケータによって保証されたときだけ行われる。このようにして、分散インジケータがこうした処理を保証しないときは、不要なトークン処理を回避することができる。
【選択図】 図9

Description

本発明は、各々の利用者に対するデータ保全性(integrity)及びデータ整合性(consistency)を保持しながら、同時データ利用者間でデータ・リソースが共有されるコンピュータ・システム及び方法に関する。より具体的には、本発明は、ロック・フリーのデータ読み取り動作がデータ更新動作と同時に実行される「リード・コピー・アップデート(read copy update)」として知られる相互排他機構の改善に関する。
背景として、リード・コピー・アップデートは、同時にデータを更新(修正、削除、挿入など)できるようにしながら、ロック、共有メモリへの書き込み、メモリ・バリア、アトミック命令、又はコンピュータ的に高価な他の同期機構を使用しない読み取りのために、共有データにアクセスできるようにする相互排他技術である。この技術は、共有データ・セットにアクセスする読み取り動作(リーダ)の数が更新動作(アップデータ(updater))の数と比べて大きく、読み取り動作毎に(ロックなどの)他の相互排他技術を使用することに関するオーバーヘッド・コストが高くなる、マルチプロセッサ・コンピュータ環境に適している。例として、多くても数分に1回更新されるが、1秒当たり数千回も検索されるネットワーク・ルーティング・テーブルが、読み取り側のロック取得がかなり負担になるケースである。
リード・コピー・アップデート技術は、データ更新を2つのフェーズで実行する。第1の(初期更新)フェーズにおいては、実際のデータ更新は、更新されているデータの2つのビューを一時的に保持するように行われる。一方のビューは、データを現在参照している可能性のある動作に役立つように維持される古い(更新前)データ状態である。他方のビューは、更新後にデータにアクセスする動作に役立つようにするための利用可能な新しい(更新後)データ状態である。第2の(据え置き更新(deferred update))フェーズにおいては、古いデータ状態は、全ての実行動作がもはや更新前のデータへの参照を維持しないことが確実となる十分な長さの「猶予時間(grace period)」後に、削除される。
図1〜図4は、リード・コピー・アップデートを用いて、データ要素A、B、及びCのグループにおけるデータ要素Bを修正することを示す。データ要素A、B、及びCは、非巡回式(acyclic fashion)にトラバース(traverse)される単方向リンク・リスト(singly-linked list)として並べられ、各々の要素は、データの幾つかの項目を格納することに加えて、リスト内の次の要素へのポインタ(又は、最後の要素についてはNULLポインタ)を含む。グローバル・ポインタ(図示せず)が、リストの最初のメンバであるデータ要素Aをポイントすると仮定する。当業者であれば、C言語の「struct」変数によって定められるデータ構造を含むがこれに限定されるものではない、様々な従来のプログラミング構造体のいずれかを用いて、データ要素A、B、及びCを実装できることが分かるであろう。
図1〜図4のデータ要素のリストは、多数の同時リーダによって(ロックすることなく)トラバースされ、場合によっては、リスト内のデータ要素を削除し、挿入し、又は修正するアップデータによって更新されるものとする。図1においては、データ要素Bは、データ要素の下の垂直矢印によって示されるように、リーダr1によって参照されている。図2においては、アップデータu1が、データ要素Bを修正することによってリンク・リストを更新しようとしている。r1がこのデータ要素を参照していることを考慮することなくこのデータ要素を単純に更新する(これは、r1をクラッシュする可能性がある)代わりに、u1は、Bを保持すると同時にその更新されたバージョン(図3においてデータ要素B´として示される)を生成し、それをリンク・リストに挿入する。これは、u1が、スピンロックを取得し、新しいメモリをB´に割り当て、BのコンテンツをB´にコピーし、必要に応じてB´を修正し、B´をポイントするようにポインタをAからB´に更新し、スピンロックを解除することによって行われる。したがって、リンク・リストをトラバースするリーダr2などの全ての後続の(更新後の)リーダは、B´に遭遇することによって更新動作の影響を認識することになる。一方、古いリーダr1は、Bの元のバージョンとそのCへのポインタとが保持されているため、影響を受けないことになる。ここではr1が失効データ(stale data)を読み込んでいることになるが、データ要素が、コンピュータ・システムの外部にあるコンポーネントの状態(例えば、ネットワーク接続性)を追跡し、通信遅延のために古いデータを許容しなければならないときなど、これを許容せざるを得ない場合が多く存在する。
更新後のある時点において、r1は、リンク・リストのトラバースを継続しており、その参照をBから移動させている。さらに、他のリーダ・プロセスがBにアクセスする権利が与えられない時間が存在する。図4に示されるように、u1がBを解放することができるのは、上述の猶予時間の満了を表すこの時点である。
図5〜図7は、リード・コピー・アップデートを用いて、データ要素A、B、及びCの単方向リンク・リストのうちのデータ要素Bを削除することを示す。図5に示されるように、リーダr1が、現時点でBを参照していると仮定され、アップデータu1が、Bを削除しようとしている。図6に示されるように、アップデータu1は、ここではAがCをポイントするように、ポインタをAからCに更新する。このように、r1は妨害されないが、後続のリーダr2は、削除の影響を認識する。図7に示されるように、r1は、その後その参照をBから移動させ、猶予時間の満了後にBを解放することが可能になる。
リード・コピー・アップデート機構のコンテクストにおいては、猶予時間は、リード・コピー・アップデートによって保護されるデータ要素にアクセスできる実行中の全てのプロセスが、もはやデータ要素への参照を維持することも、データ要素のロックをアサートすることも、データ要素の状態について何らかの推測を行うこともできない「静止状態(quiescent state)」を経た時点を表す。従来、オペレーティング・システムのカーネル・コード・パスについて、コンテクスト(プロセス)スイッチ、アイドル・ループ、及びユーザ・モード実行の全てが、いずれかの所与のCPUについての静止状態を表す(ここで挙げられていない他の動作も可能である)。
図8においては、4つの別個のCPUで実行される4つのプロセス0、1、2、及び3が、(垂直の二重バーによって表される)静止状態を定期的に経ることが示されている。(垂直の点線線によって示される)猶予時間は、4つのプロセス全てが1つの静止状態を経た時間フレームを含む。4つのプロセス0、1、2、及び3が、図1〜図4又は図5〜図7のリンク・リストをトラバースするリーダ・プロセスである場合には、猶予時間前に古いデータ要素Bを参照するこれらのプロセスのいずれも、猶予時間後には古いデータ要素Bへの参照を維持することができない。これらのプロセスによって行われる猶予時間後の全ての検索が、アップデータによって挿入されるリンクを辿ることによってBを迂回する。
発明の名称を「Apparatus And Method For Achieving ReducedOverhead Mutual-Exclusion And Maintaining Coherency In A Multiprocessor System UtilizingExecution History And Thread Monitoring」とする、同一出願人による特許文献1に記載されるコールバック処理の使用を含むがこれに限定されるものではない、猶予時間後の据え置きデータ更新を実行するのに用いることができる様々な方法が存在する。特許文献1の内容は、引用により本明細書に組み込まれる。
コールバック処理技術は、共有データ要素のアップデータが、更新されているデータの新しいビューを作成する初期(第1のフェーズ)データ更新動作を行い、次いで、更新されているデータの古いビューを除去する据え置き(第2のフェーズ)データ更新動作を行うためのコールバック機能を指定するものである。アップデータは、猶予時間の最後にコールバック機能(これ以降、「コールバック」と呼ぶ)を実行できるように、コールバックをリード・コピー・アップデート・サブシステムに登録する。リード・コピー・アップデート・サブシステムは、プロセッサ毎に保留コールバック(pending callback)を追跡し、各々のプロセッサの現在の猶予時間がいつ終了したかを検出するためにプロセッサ毎の静止状態の行為(activity)を監視する。各々の猶予時間が終了するときに、処理の準備が整った全ての予定コールバックが実行される。
リード・コピー・アップデートの実行を成功させるためには、猶予時間の長さを推定するための効率的な機構が必要である。1つの重要な実行のクラスは、猶予時間トークンを1つのプロセッサから次のプロセッサに渡して、そのトークンを所有するプロセッサについて猶予時間の最後に到達したことを示す。猶予時間トークンは、プロセッサ間で明示的に渡される識別値とすることができる。しかしながら、この技術を用いるときは、2つのメモリ書き込みアクセス、すなわち、1つはトークンをその現在のオーナーから除去することであり、もう1つはそのトークンを新しいオーナーに渡すことが必要である。猶予時間トークンを処理するより効率的な方法が、プロセッサ毎の静止状態カウンタと、それに関連するポーリング機構とを用いて、猶予時間トークンを黙示的に(implicitly)渡すことである。この技術によれば、プロセッサが静止状態を経るたびに、そのポーリング機構は、隣接するプロセッサのカウンタが現在のプロセッサの最後の猶予時間以降に変化したどうかを確認するために、隣接するプロセッサの静止状態カウンタを検査する。それが変化した場合には、現在のプロセッサは、最後にトークンを持ったとき以降に、新しい猶予時間が経過したと判断する。現在のプロセッサは、その保留コールバックを実行し、次いで、その静止状態カウンタを、隣接するプロセッサのカウンタより高い値に変更する。次いで、次のプロセッサは、このプロセッサの変更されたカウンタ値を確認し、その保留コールバックを処理し、自分自身のカウンタを増加させる。このシーケンスは継続し、猶予時間トークンは最終的に、ラウンドロビン方式でプロセッサの全てを通って進む。
猶予時間トークンがどのように実装されるかに関わらず、各々のプロセッサは、トークンを受け取ったときだけコールバックを処理する。猶予時間トークンが、現在の所有者であるプロセッサに到達する前に他の全てのプロセッサの間を移動しなければならない限り、現在のプロセッサは、常に、現在のプロセッサが最後にトークンを所有して以降に他のプロセッサが静止状態を経たことが保証され、したがって猶予時間が経過したことが確実となる。
トークン操作を用いる猶予時間検出は、プロセッサが静止状態を経るときにプロセッサ・サイクルを消費するため、リード・コピー・アップデート・サブシステムに保留コールバックが存在しない場合には、こうしたオーバーヘッドが発生することは望ましくない。そのため、効率的なトークンベースのリード・コピー・アップデート実装は、猶予時間トークンの処理の前にテストされる共有インジケータ(すなわち、グローバル変数)を用いて、リード・コピー・アップデート・サブシステムがアイドル状態であるかどうかを判断する。それがアイドル状態である場合には、猶予時間トークンを渡す必要がなく、関連する処理オーバーヘッドを回避することができる。共有インジケータは、典型的には、保留コールバック数のカウントである。コールバックが所与のプロセッサにおいて登録されるたびに、共有インジケータは、新しいコールバックを反映するように操作される。その後、そのコールバックが処理されるときに、共有インジケータは、リード・コピー・アップデート・サブシステムからのコールバックの除去を反映するように再度操作される。
米国特許第5,727,209号 "Read Copy Update",Ottawa Linux Symposium(2002)
保留コールバックの存在についてテストするために共有インジケータを用いることについての欠点は、多数のプロセッサによるインジケータに関する動作を同期させるために、共有インジケータが操作されるたびにアトミック命令、ロック、又は、他の比較的高価な相互排他機構を呼び出さなければならないことである。さらに、各々のプロセッサによる、共有インジケータの従来のハードウェア・キャッシングは、通信キャッシュ・ミス及びキャッシュ・ライン・バウンシングをもたらす傾向がある。ビットマップ・インジケータの場合には、さらなる欠点は、多数のプロセッサが正常に適応できないことである。
本発明は、上述の問題を解決することに向けられている。特に、必要とされているのは、保留コールバック状態の共有インジケータに関するオーバーヘッドが発生することなく、不要な猶予時間トークン処理を回避する新しいリード・コピー・アップデート猶予時間検出技術である。
共有データ要素への既存の参照が除去されるまで該共有データ要素の除去を据え置くことが必要なリード・コピー・アップデート・サブシステム又は他の処理環境において、アトミック命令なしに猶予時間を検出するための方法、システム、及びコンピュータ・プログラム製品によって、上述の問題が解決され、当該技術分野が進歩する。猶予時間検出は、共有データ要素へのアクセスを共有する処理エンティティ間で循環されるトークンを確立することを含む。トークンが処理エンティティ間を周回するたびに、猶予時間が経過したと判断することができる。データ要素又は処理エンティティによって共有される他のデータ要素に関する除去処理を行う必要があるかどうか(例えば、本発明がコールバックベースのリード・コピー・アップデート・システムに実装される場合には、コールバック処理を保証する保留コールバックが存在するかどうか)を示す分散インジケータ(distributed indicator)が、処理エンティティの各々と関連付けられる。分散インジケータは、処理エンティティにおいてトークン処理が行われる前に、処理エンティティの各々において処理される。トークン処理は、分散インジケータによって保証されたときだけ、処理エンティティにおいて行われる。このようにして、分散インジケータがこうした処理を保証しないときは、不要なトークン処理を回避することができる。
本発明の例示的な実施形態においては、分散インジケータは、処理エンティティと関連付けられたキャッシュ・メモリにローカル変数として格納される(そして、一連の処理の間に、従来のキャッシュ・コヒーレンス機構を介して1つのキャッシュ・メモリから別のキャッシュ・メモリに複製される)。こうした実施形態においては、分散インジケータは、設計の初期設定に応じて、異なる種類の情報を表すことができる。例えば、分散インジケータは、代替的に、処理エンティティによって共有されるデータ要素の更新を行う保留要求を有する処理エンティティの数、更新の総数、又は、保留更新要求(pending update requests)を有する処理エンティティを特定するビットマップ、を表すことができる。
種々の処理エンティティによって分散インジケータに生じた変化の伝搬もまた、設計の初期設定に応じて異なる方法で行うことができる。例示的な実施形態においては、処理エンティティは、隣接する処理エンティティによって維持される分散インジケータを定期的に調べ、現在の処理エンティティにおけるデータ要素除去要求行為(data element removal request activity)(例えば、コールバック登録)の変化を反映させるため必要に応じてインジケータを調整する。データ要素除去要求行為の変化があったかどうかは、トークンの循環を保証するために、処理エンティティのうちの1つにおいてしきい数の保留データ要素除去要求が存在するかどうかなどといった種々の要因の判断を含むことができる。代替的に、こうした判断は、処理エンティティの1つにおいていずれかの保留データ要素除去要求が存在するかどうかに基づくものとすることができる。
本発明の上述の及び他の特徴及び利点は、添付図面に示されるように、本発明の例示的な実施形態に関する以下のより具体的な説明から明らかとなるであろう。
ここで、同じ参照数字が幾つかの図面の全てにおいて同じの要素を表す図を参照すると、図9は、本発明を実装することができる例示的なコンピュータ環境を示す。具体的には、多数のプロセッサ4、4・・・4が共通バス6によって共有メモリ8に接続される、対称型マルチプロセッサ(SMP;symmetrical multiprocessor)コンピュータ・システム2が示される。各々のプロセッサ4、4・・・4とそれぞれ関連付けられるのが、従来型のキャッシュ・メモリ10、10・・・10及びキャッシュ・コントローラ12、12・・・12である。従来型のメモリ・コントローラ14が、共有メモリ8と関連付けられる。コンピュータ・システム2は、SMP環境において用いられるのに適した単一のマルチタスク・オペレーティング・システムの管理下にあると仮定する。
さらに、カーネル若しくはユーザ・モード・プロセス、スレッド、又は他の実行コンテクスト内で実行される更新動作が、共有メモリ8に格納される共有データ・セット16の更新を定期的に行うと仮定する。参照数字18、18・・・18は、幾つかのプロセッサ4、4・・・4上で定期的に実行することができる個々のデータ更新動作(アップデータ)を示す。上の背景によって説明されたように、データ・アップデータ18、18・・・18によって行われる更新は、リンク・リストの要素を修正すること、新しい要素をリストに挿入すること、要素をリストから削除すること、及び他の多くのタイプの動作を含むことができる。こうした更新を容易にするために、幾つかのプロセッサ4、4・・・4は、それらのオペレーティング・システム機能の一部としてそれぞれのリード・コピー・アップデート・インスタンス20、20・・・20を定期的に実行することなどによって、リード・コピー・アップデート(RCU)サブシステム20を実行するようにプログラムされる。図面には示されていないが、プロセッサ4、4・・・4も共有データ・セット16上で読み取り動作を実行することが分かるであろう。こうした読み取り動作は、典型的には、これがリード・コピー・アップデートの使用の基礎となる前提の1つである限り、更新よりはるかに頻繁に行われることになる。
図10において示されるように、リード・コピー・アップデート・サブシステム・インスタンス20、20・・・20の各々は、コールバック登録コンポーネント22を含む。コールバック登録コンポーネント22は、アップデータ自体によって行われる初期(第1のフェーズ)更新後の据え置き(第2のフェーズ)データ要素更新についての要求を登録するためにアップデータ18・・・18によって呼び出すことができる、リード・コピー・アップデート・サブシステム20へのAPI(アプリケーション・プログラミング・インタフェース)として機能する。当該技術分野において知られているように、これらの据え置き更新要求は、失効したデータ要素の除去を含み、リード・コピー・アップデート・サブシステム20内でコールバックとして扱われることになる。リード・コピー・アップデート・サブシステム・インスタンス20、20・・・20の各々は、さらに、コールバック処理システム26と共に、静止状態カウンタ操作及びポーリング機構24(又は、トークンを渡すための他の機能)を含む。機能24及び26は、従来のように、カーネル・スケジューラの一部として実装できることに留意されたい。
プロセッサ4、4・・・4と関連付けられたキャッシュ・メモリ10、10・・・10は、それぞれ、静止状態カウンタ28、28・・・28と、1つ又は複数のコールバック・キュー30、30・・・30を格納する。静止状態カウンタ28、28・・・28は、プロセッサ4、4・・・4間で猶予時間トークンを渡すために、カウンタ操作及びポーリング機構24(トークン・マニピュレータ)によって管理される。他のいくつかの形式のトークン渡し(token passing)を用いる場合には、静止状態カウンタ28、28・・・28を必要としないことが分かるであろう。コールバック・キュー30、30・・・30には、新しいコールバックがコールバック登録コンポーネント22によって登録されるときに、こうしたコールバックが追加される(又は、先頭に加えられる)。コールバック処理システム26は、コールバック・キュー30、30・・・30上で参照されるコールバックを実行し、次いでコールバックが処理されたときにそれらを除去する役割を果たす。
図12及び図13は、静止状態カウンタ28、28・・・28をどのように用いて、プロセッサが静止状態を経るときに例示的な4プロセッサ・システムにおけるプロセッサ間で猶予時間トークンを渡すことができるかを示す。図12における各々の列は、所与の時点における全てのプロセッサの静止状態カウンタの例示的な値を示す。網掛けしたセルは、対応するプロセッサが猶予時間トークンのオーナーであることを示す。いずれの場合においても、オーナーは、カウンタが最小値を有し、かつ、隣接するプロセッサがトークンのオーナーのカウンタ値に対して不連続なカウンタ値を有する、プロセッサである。
図12及び図13によって表されるトークン渡し技術は、当該技術分野において知られており、したがって、これらの図は「従来技術」と表記されている。上の背景によって説明されたように、所与のプロセッサは、隣接するプロセッサ(例えば、プロセッサ数を法(%)として、プロセッサ番号が現在のプロセッサより1大きいプロセッサ)の1つによって維持される静止状態カウンタを参照することによって、猶予時間トークンを所有するかどうかを確認する。隣接するプロセッサの静止状態カウンタが、現在のプロセッサの最後の猶予時間以降に変化していない(すなわち、カウンタ値の不連続が存在しない)場合には、現在のプロセッサは、新しい猶予時間がまだ経過していないと判断し、通常の処理を再開する。隣接するプロセッサのカウンタが、現在のプロセッサの最後の猶予時間以降に変化した(すなわち、カウンタ値の不連続が存在する)場合には、現在のプロセッサは、新しい猶予時間が経過したと判断する。現在のプロセッサは、その保留コールバックを処理し、自分自身の静止状態カウンタを隣接するプロセッサのカウンタの値より1大きい値に増加させ、これにより、カウンタ値の不連続を自分自身に移動させる。例として、図12の時間t=0においては、最小の静止状態カウンタ値(1)を有するプロセッサ3は、プロセッサ0における不連続のカウンタ値(4)を確認する。これは、プロセッサ3の最後の猶予時間以降にそのピア・プロセッサが経た静止状態が3(4−1)回存在したことを、プロセッサ3に対して示す。プロセッサ3は、このようにして、新しい猶予時間が経過し、かつ、現時点でプロセッサ3が猶予時間トークンを持っていると判断する。プロセッサ3は、コールバック処理を行い、その静止状態カウンタ値を4+1=5に設定する。時間t=1においては、静止状態カウンタ値2を有するプロセッサ2が、プロセッサ3における不連続のカウンタ値5を確認する。プロセッサ2は、猶予時間トークンを持っていると判断し、コールバック処理を行い、そのカウンタ値を5+1=6に設定する。このシーケンスを続けると、プロセッサ1は、時間t=2において猶予時間トークンを取得し、プロセッサ0は、時間t=3においてトークンを取得する。時間t=4において、トークンはプロセッサ3に戻り、このパターンが繰り返される。図13においてさらに示されるように、プロセッサ3は、時間t=0、4、及び8においてトークン(T)を取得し、プロセッサ2は、時間t=1及び5においてトークンを取得し、プロセッサ1は、時間t=2及び6においてトークンを取得し、プロセッサ0は、時間t=3及び7においてトークンを取得することになる。
上の背景でも説明されたように、従来技術におけるリード・コピー・アップデート実装は、リード・コピー・アップデート・サブシステムにおいて処理を必要とする保留コールバックが存在するかどうかに関する共有インジケータとして機能するグローバル変数を操作することによって、不要なトークン処理を回避しようとするものである。例えば、P.McKenney他の非特許文献1において開示されるように、「rcu−sched」として知られているリード・コピー・アップデートのLinux実装は、リード・コピー・アップデート・サブシステムにおける保留コールバック数のカウントを表す共有変数「rcu_pending」を用いる。関数呼び出し「atomic_inc(&rcu_pending)」によって、新しいコールバックが登録されたときにLinuxアトミック・インクリメント・プリミティブ「atomic_inc」を呼び出してrcu_pendingを増加させる。次いで、関数呼び出し「atomic_dec(&rcu_pending)」によって、コールバックが処理された後にLinuxアトミック・デクリメント・プリミティブ「atomic_dec」を呼び出してrcu_pendingを減少させる。「rcu−sched」は、図12及び図13に示されるように、カウンタベースの猶予時間トークン渡しスキームを用いるリード・コピー・アップデート実装の一例であることも指摘されるべきである。
保留コールバックに関する共有インジケータを増加又は減少させるアトミック動作(又は、他の同時制御機構)の使用に関する欠点を回避するために、本発明は、代替的な手法を提案する。図11において示されるように、分散コールバック・インジケータ32を、プロセッサ4、4・・・4の各々のキャッシュ・メモリ10に維持し、リード・コピー・アップデート・サブシステム20の変化を反映するローカル変数として操作することができる。各々の分散コールバック・インジケータ32は、リード・コピー・アップデート・サブシステム20の状態を表す。次いで、リード・コピー・アップデート・サブシステム・インスタンス20、20・・・20の各々の中の関連するコールバック・インジケータ処理機構34(図10においても示される)は、ローカルの分散コールバック・インジケータ32を調べて、猶予時間トークン処理が必要であるかどうかを判断することができる。ローカルの分散コールバック・インジケータ32が、リード・コピー・アップデート・サブシステムがアイドル状態であることを示す場合には、トークンを渡す必要はない。一方、ローカルの分散コールバック・インジケータ32は、リード・コピー・アップデート・サブシステムにおいて保留コールバックが存在し、現在のプロセッサにおいて猶予時間トークン処理が必要であることを示すことができる。
リード・コピー・アップデート・サブシステム20内において条件が変わるときに、分散コールバック・インジケータ32を現在のままに保つために、図12及び図13の猶予時間トークン渡しスキームに若干類似する伝播技術を用いることができる。他の実装形態も可能である。この伝搬技術によれば、プロセッサ4、4・・・4の各々が静止状態を経るときに、そのコールバック・インジケータ処理機構34は、隣接するプロセッサの分散コールバック・インジケータ32を調べ、現在のプロセッサの最後の猶予時間以降のローカル・コールバック履歴を考慮すると共に、隣接するプロセッサの値に応じて自分自身のローカル・コールバック・インジケータを調整する。
本発明の一実施形態においては、分散コールバック・インジケータ32は、保留コールバックを有するプロセッサの数に関するプロセッサ毎のカウンタとして実装される。これらのプロセッサは、「コールバック・プロセッサ」と呼ぶことができ、分散コールバック・インジケータ32は、コールバック・プロセッサ・カウンタと考えることができる。このカウンタを操作するために、プロセッサは、このプロセッサの最後の猶予時間以降にそのローカル・コールバック状態に何らかの変化が存在したかどうかを確認する。変化が生じなかった場合には、現在のプロセッサのカウンタは、隣接するプロセッサのカウンタと同じ値に設定される。プロセッサのコールバック履歴が、猶予時間トークンが最後にこのプロセッサを離れたときにはローカル・コールバックが登録されていなかったが、最後の猶予時間以降に必要な数の新しいローカル・コールバックが登録されたことを示す場合には、現在のプロセッサのカウンタは、隣接するプロセッサのカウンタの値より1大きい値に増加させられることになる。プロセッサのコールバック履歴が、猶予時間トークンが最後にこのプロセッサを離れたときにローカル・コールバックが登録されていたが、最後の猶予時間以降に必要な数の新しいローカル・コールバックが登録されなかったことを示す場合には、現在のプロセッサのカウンタは、隣接するプロセッサのカウンタの値より1小さい値になるように減少させられることになる。
本発明の第2の実施形態においては、保留コールバックの総数の表示を追跡するために、分散コールバック・インジケータ32が実装される。この場合において、分散コールバック・インジケータ32は、コールバック・カウンタと考えることができる。このカウンタを操作するために、プロセッサは、このプロセッサの最後の猶予時間以降に登録されたローカル・コールバックの数を、猶予時間トークンが最後にプロセッサを離れたときに登録されていたローカル・コールバックの数と比較する。現在のプロセッサのカウンタは、ローカル・コールバックの純増又は純減を反映するように調整した隣接するプロセッサのカウンタ値に設定される。
本発明の第3の実施形態においては、分散コールバック・インジケータ32は、保留コールバックを有するプロセッサを特定するビットマップとして実装される。ビットマップを操作するために、プロセッサは、猶予時間トークンが最後にこのプロセッサを離れて以降に登録された必要な数のローカル・コールバックが存在するかどうかを判断する。存在する場合には、現在のプロセッサのビットマップは、隣接するプロセッサのビットマップに対応するように設定されるが、現在のプロセッサのビットは1に設定される。最後の猶予時間以降に、必要な数のローカル・コールバックが登録されなかった場合には、ビットマップにおける現在のプロセッサのビット値は、ゼロに設定される。この実装形態の1つの欠点は、プロセッサの数が多くなるのに従って大きなビットマップを処理することが必要になるため、多数のプロセッサを正常に扱えないことである。
図14は、分散コールバック・インジケータ32が保留コールバックを有するプロセッサ4、4・・・4の数のカウントである上述の第1の実施形態に従って行うことができる処理ステップの例示的な手順を示す。図14のプロセスは、分散コールバック・インジケータとして、「cbcpus」(「callback cpus」の省略形)と呼ばれるプロセッサ毎のローカル変数を用いる。この変数は、処理を必要とするコールバックを有するプロセッサのカウントである。「lastcbs」(「last callbacks」の省略形)と呼ばれるプロセッサ毎の別のローカル変数は、現在のプロセッサが、猶予時間トークンが最後にこのプロセッサを離れたときに登録されたコールバックを持つかどうかを示すフラグである。「numcbs」(「number of callbacks」の省略形)と呼ばれるプロセッサ毎の第3の変数は、最後の猶予時間以降に現在のプロセッサにおいて登録されたコールバックの数のカウントである。
図14のステップ40においては、n番目のプロセッサのコールバック・インジケータ処理機構34は、プロセッサn+1のcbcpusの値を取得する(所望の伝搬方向によってプロセッサn−1を用いることもできる)。ステップ42においては、プロセッサnは、猶予時間を開始するための基準を満たすいずれかの新しいコールバック(numcbs)が存在するかどうかを判断する。幾つかの場合においては、一つでもコールバックが存在すれば、この基準を満たすことになる。他の場合においては、猶予時間を開始するのに必要なコールバックの数を指定するコールバックしきい値と、コールバックしきい値に達しない場合であってもコールバック処理を起動する経過時間しきい値とを設定することによって、コールバックをバッチ処理することが望ましいことがある。ステップ42において、処理を必要とする新しいコールバックが存在する場合には、ステップ44において、現在のプロセッサのcbcpusの値は、隣接するプロセッサのcbcpusの値より1大きい値から現在のプロセッサのlastcbsを引いた値に設定される。次いで、lastcbsの値は、現在のプロセッサ上のコールバックが猶予時間を開始するための基準を満たす場合に限り、ステップ46において1に設定される。ステップ42において、処理を必要とする新しいコールバックが存在しない場合には、ステップ48において、現在のプロセッサのcbcpusの値は、隣接するプロセッサのcbcpusの値と等しい値から現在のプロセッサのlastcbsを引いた値に設定される。次いで、lastcbsの値は、猶予時間を開始するための基準を満たす新しいコールバックが現在のプロセッサ上に存在しない場合に限り、ステップ50において0に設定される。
各々のプロセッサが、静止状態を経ながら上述の処理を行うときに、新しいコールバックの登録又は古いコールバックの処理による変化が、分散コールバック・インジケータ(この例においては、cbcpus)の各々によって迅速に反映されることになる。伝搬する分散コールバック・インジケータを各々のプロセッサにおいてテストすることによって、猶予時間トークンの循環を保証する十分なコールバックが存在しないときには潜在的に高価なトークン処理を回避することができる。図15の表は、例示的な4つのプロセッサ・システムにおけるこうした処理を示す。図15は、図12を基にしたものであるが、プロセッサ0、1、2、及び3毎に、表の各々の要素の左側には猶予時間トークンを示し、表の各々の要素の右側には分散コールバック・インジケータ(この例においては、cbcpus)を示す。この場合も、網掛けしたセルは、対応するプロセッサが猶予時間トークンのオーナーであることを示す。いずれの場合においても、オーナーは、静止状態カウンタが最小値を有し、かつ、隣接するプロセッサがトークンのオーナーのカウンタ値に対して不連続なカウンタ値を有する、プロセッサである。
図15において、プロセッサ3は、プロセッサ0から猶予時間トークンを受け取る。しかしながら、プロセッサ3の分散コールバック・インジケータの値が0であるため、トークン処理は行われない。分散コールバック・インジケータ32がコールバック・プロセッサのカウント(cbcpus)である現在の例においては、0の値は、処理を保証する必要な数のコールバックを有するプロセッサが存在しないことを意味する。このようにして、プロセッサ3は、このプロセッサのグループについてのリード・コピー・アップデート・サブシステムはアイドル状態であると判断する。図15の時間t=1においては、プロセッサ2は、新しいコールバック行為を有していると判断し、分散コールバック・インジケータの値を1に設定する。プロセッサ3は、(現在の例によれば、プロセッサ3は、コールバック・インジケータの動きについてプロセッサ0のみに注意を向けているため)影響を受けず、この場合も、猶予時間トークン処理を行わない。時間t=2において、プロセッサ2の分散コールバック・インジケータ値は、プロセッサ1に伝搬する。プロセッサ3は、影響を受けず、この場合も猶予時間トークン処理を行わない。時間t=3において、プロセッサ1の分散コールバック・インジケータ値は、プロセッサ0に伝搬する。プロセッサ3は、影響を受けず、この場合も猶予時間トークン処理を行わない。時間t=4において、プロセッサ0の分散コールバック・インジケータ値がプロセッサ3に伝搬したことによって、プロセッサ3は、猶予時間トークン処理を行い、トークンをプロセッサ2に渡す。時間t=5において、プロセッサ2は、猶予時間トークン処理を行い、トークンをプロセッサ1に渡す。時間t=6において、プロセッサ1は、猶予時間トークン処理を行い、トークンをプロセッサ0に渡す。さらに、プロセッサ2は、そのコールバックが処理され、その分散コールバック・インジケータが0に設定されていると判断したと思われる。時間t=7において、プロセッサ0は、猶予時間トークン処理を行い、トークンをプロセッサ3に渡す。さらに、プロセッサ2の分散コールバック・インジケータは、プロセッサ1に伝搬する。時間t=8において、プロセッサ3は、猶予時間トークン処理を行い、トークンをプロセッサ2に渡す。さらに、プロセッサ1の分散コールバック・インジケータは、プロセッサ0に伝搬する。図14のシステムにおいて新しいコールバックが登録されていないと仮定すると、プロセッサ2の分散コールバック・インジケータが0であるため、ここで、猶予時間トークンは、プロセッサ2においてアイドル状態となる。
図16は、上述の処理を要約するものである。図16は、プロセッサ3が時間t=0、7においてトークン(T)を取得することを示す。次いで、トークンは、時間t=1、2、及び3の間、プロセッサ3においてアイドル状態となる。次いで、プロセッサ2は、時間t=4、8においてトークンを取得する。プロセッサ1は、時間t=5においてトークンを取得する。プロセッサ0は、時間t=6においてトークンを取得する。
ここで、図17を参照すると、図14の分散コールバック・インジケータ処理の代替形が示される。この代替的な手法によれば、(図14のステップ42に対応する)ステップ42aは、しきい値に達したかどうかを考慮することなく、numcbsが非ゼロであるかどうかを調べる。(図14のステップ46に対応する)ステップ46aは、numcbsが0より大きい場合に限り、lastcbsを1に設定する。(図14のステップ50に対応する)ステップ50aは、numcbsが0である場合に限り、lastcbsを0に設定する。この代替的な手法の利点は、ごくわずかなコールバックを有するプロセッサが、それらのコールバック処理要求を別のプロセッサの猶予時間トークンの循環に「載せて運び(piggyback)」、トークンを移動させ続けることができることである。欠点は、付加的な猶予時間検出動作が生じる可能性があることである。
図18は、分散コールバック・インジケータ32が保留コールバックの数のカウントである上述の第2の実施形態に従って行うことができる処理ステップの例示的なシーケンスを示す。図18のプロセスは、分散コールバック・インジケータとして、「cbspen」(「callbacks pending」の省略形)と呼ばれるプロセッサ毎のローカル変数を用いる。「lastcbs」(「last callbacks」の省略形)と呼ばれるプロセッサ毎の別のローカル変数は、猶予時間トークンが最後にこのプロセッサを離れたときに現在のプロセッサが登録したコールバックの数を示す値である。「numcbs」(「number of callbacks」の省略形)と呼ばれるプロセッサ毎の第3の変数は、最後の猶予時間以降に現在のプロセッサにおいて登録されたコールバックの数のカウントである。
図18のステップ60においては、n番目のプロセッサのコールバック・インジケータ処理機構34は、プロセッサn+1のcbspenの値を取得する(所望の伝搬方向によってプロセッサn−1を用いることもできる)。ステップ62においては、現在のプロセッサのcbspenの値は、隣接するプロセッサのcbspenの値に現在のプロセッサのnumcbsの値を加えて、現在のプロセッサのlastcbsの値を引いた値に設定される。次いで、lastcbsの値は、ステップ64においてnumcbsに設定される。
図19は、分散コールバック・インジケータ32がどのプロセッサが保留コールバックを有するかを示すビットマップである上述の第3の実施形態に従って行うことができる処理ステップの例示的な手順を示す。図19のプロセスは、分散コールバック・インジケータとして、「cbcpumap」(「callback cpu map」の省略形)と呼ばれるプロセッサ毎のローカル・ビットマップ変数を用いる。「numcbs」(「number of callbacks」の省略形)と呼ばれるプロセッサ毎の別のローカル変数は、最後の猶予時間以降に現在のプロセッサにおいて登録されたコールバックの数のカウントである。
図19のステップ80においては、n番目のプロセッサのコールバック・インジケータ処理機構34は、プロセッサn+1のcbcpumapの値を取得する(所望の伝搬方向によってプロセッサn−1を用いることもできる)。ステップ82においては、プロセッサnは、(例えば、図14に関して上述された)設定された何らかのしきい値を満足する、このプロセッサにおいて登録されたいずれかの新しいコールバック(numcbs)が存在するかどうかを判断する。ステップ82において処理を必要とする新しいコールバックが存在する場合には、ステップ84において、現在のプロセッサのcbcpumapはプロセッサn+1と等しい値に設定されるが、cbcpumapのn番目のビットは1に設定される。ステップ82において処理を必要とする新しいコールバックが存在しない場合には、ステップ86において、現在のプロセッサのcbcpumapの値はプロセッサn+1と等しい値に設定されるが、cbcpumapのn番目のビットは0に設定される。
以上の通り、アトミック命令を必要とせず、多数のプロセッサを正常に処理するために実装することができる、リード・コピー・アップデート猶予時間検出のための技術が開示された。上述の概念は、データ処理システム、マシン実装方法、及び、必要な機能を行うようにデータ処理システムを制御するのに用いるためにプログラム手段が1つ又は複数のデータ記憶媒体上に記録されたコンピュータ・プログラム製品のいずれかにおいて、様々に具体化できることが分かるであろう。こうしたプログラム手段を格納するための例示的なデータ記憶媒体が、図20において参照数字100によって示される。媒体100は、従来から市販のソフトウェア販売に用いられているタイプの携帯型光記憶ディスクとして示される。こうした媒体は、本発明のプログラム手段を、単独で、又はリード・コピー・アップデート機能を組み込んだオペレーティング・システム若しくは他のソフトウェア製品と共に、格納することができる。プログラム手段は、(フロッピー・ディスク、フラッシュ・メモリ・スティックなどといった)携帯型磁気媒体上に、又はコンピュータ・プラットフォームに組み込まれたドライブ・システム(例えば、ディスク・ドライブ)と組み合わされた磁気媒体上に、格納することもできる。
本発明の種々の実施形態を説明したが、本発明に従って多くの変形及び代替的な実施形態を実装できることが明らかである。したがって、本発明は、特許請求の範囲及びその均等物の趣旨に合致する場合を除いて、どのような形であっても限定されるべきではないことが理解される。
従来のリード・コピー・アップデート機構によってデータ要素が置換されるデータ要素のリンク・リストを表す図である。 従来のリード・コピー・アップデート機構によってデータ要素が置換されるデータ要素のリンク・リストを表す図である。 従来のリード・コピー・アップデート機構によってデータ要素が置換されるデータ要素のリンク・リストを表す図である。 従来のリード・コピー・アップデート機構によってデータ要素が置換されるデータ要素のリンク・リストを表す図である。 従来のリード・コピー・アップデート機構によってデータ要素が削除されるデータ要素のリンク・リストを表す図である。 従来のリード・コピー・アップデート機構によってデータ要素が削除されるデータ要素のリンク・リストを表す図である。 従来のリード・コピー・アップデート機構によってデータ要素が削除されるデータ要素のリンク・リストを表す図である。 4つのプロセスが静止状態を経る猶予時間を示すフロー図である。 本発明を実装することができる1つの例示的な環境を表すマルチプロセッサ・コンピュータ・システムを示す機能ブロック図である。 図9のマルチプロセッサ・コンピュータ・システムの各々のプロセッサによって実装されるリード・コピー・アップデート・サブシステムを示す機能ブロック図である。 図9のマルチプロセッサ・コンピュータ・システムの各々のプロセッサと関連付けられるキャッシュ・メモリを示す機能ブロック図である。 リード・コピー・アップデートを実装する仮想的な4プロセッサ・データ処理システムにおける例示的な静止状態カウンタの値を示す表である。 リード・コピー・アップデート処理の際に、時間毎に猶予時間トークンを渡す場合の図12の4つのプロセッサを示す機能ブロック図である。 保留コールバックを有するプロセッサのカウントとして実装される分散コールバック・インジケータの操作を示すフロー図である。 リード・コピー・アップデートを実装する仮想的な4プロセッサ・データ処理システムにおける、例示的な静止状態カウンタの値と分散コールバック・インジケータの値とを示す表である。 リード・コピー・アップデート処理の際に、時間毎に猶予時間トークンを渡す場合の図15の4つのプロセッサを示す機能ブロック図である。 図14のフロー図の修正形を表すフロー図である。 保留コールバックのカウントとして実装される分散コールバック・インジケータの操作を示すフロー図である。 保留コールバックを有するプロセッサを特定するビットマップとして実装される分散コールバック・インジケータの操作を示すフロー図である。 本発明に係るリード・コピー・アップデート猶予時間検出機能を実装するためのコンピュータ・プログラム製品を格納するのに用いることができる記憶媒体を示す図である。

Claims (16)

  1. 共有データ要素への既存の参照が除去されるまで前記共有データ要素の除去を据え置くための猶予時間を検出する方法であって、
    前記共有データ要素へのアクセスを共有する処理エンティティ間で循環されるトークンを確立するステップと、
    前記トークンが前記処理エンティティ間を周回したときに、前記猶予時間が経過したと判断するステップと、
    前記処理エンティティによって共有される前記共有データ要素又は他のデータ要素に関する除去処理を行う必要があるかどうかを示す分散インジケータを、前記処理エンティティの各々と関連付けるステップと、
    前記処理エンティティにおいてトークン処理を行う前に、前記処理エンティティの各々において前記分散インジケータを処理するステップと、
    前記分散インジケータによって保証されたときだけ、前記処理エンティティにおいてトークン処理を行うステップと、
    を含み、
    前記分散インジケータがこうした処理を保証しないときは、不要なトークン処理を回避することが可能な方法。
  2. 前記分散インジケータの各々は、前記処理エンティティの1つと関連付けられたキャッシュ・メモリにローカル変数として格納される、請求項1に記載の方法。
  3. 前記分散インジケータは、前記処理エンティティによって共有されるデータ要素を除去するための保留要求を有する前記処理エンティティの数、又は、前記処理エンティティによって共有されるデータ要素を除去するための保留要求の数を表す、請求項1に記載の方法。
  4. 前記分散インジケータは、前記処理エンティティによって共有されるデータ要素を除去するための保留要求を有する前記処理エンティティを特定するビットマップを表す、請求項1、請求項2、又は請求項3に記載の方法。
  5. 前記処理エンティティのうちの1つにおける前記分散インジケータの1つに生じた変化が、前記処理エンティティのうちの他の処理エンティティに伝搬される、請求項1〜4のいずれか1つの請求項に記載の方法。
  6. 前記処理エンティティのうちの第1の処理エンティティにおける前記分散インジケータの1つの値が、前記処理エンティティのうちの前記第1の処理エンティティにおけるデータ要素除去要求行為を反映させるため必要に応じて調整される、前記処理エンティティの隣接する第2の処理エンティティにおける前記分散インジケータのうちの第2の分散インジケータの値を反映する、請求項1〜5のいずれか1つの請求項に記載の方法。
  7. 前記分散インジケータの前記処理は、前記トークンの循環を保証するために前記処理エンティティのうちの1つにおいてしきい数の保留データ要素除去要求が存在するかどうかを判断すること、又は、前記処理エンティティのうちの1つにおいていずれかの保留データ要素除去要求が存在するかどうかを判断することを含む、請求項1〜6のいずれか1つの請求項に記載の方法。
  8. リード・コピー・アップデート相互排他技術の一部として実装され、前記共有データ要素の除去は、前記処理エンティティにおいてコールバックを登録することによって実行され、前記分散インジケータは、リード・コピー・アップデート・サブシステムにおけるコールバック行為を反映する分散コールバック・インジケータである、請求項1〜7のいずれか1つの請求項に記載の方法。
  9. 1つ又は複数のプロセッサ、メモリ、及び、前記1つ又は複数のプロセッサと前記メモリとの間の通信経路を有し、前記プロセッサのうちの1つによる共有データ要素の除去を、前記プロセッサのうちの他のプロセッサによって維持される前記共有データ要素への既存の参照が除去されるまで据え置くための猶予時間を検出するように適合されたデータ処理システムであって、
    前記プロセッサ間で循環されるトークンと、
    前記トークンを循環させ、前記プロセッサ間を周回する前記トークンにより前記猶予時間が経過したかどうかを判断するように適合された、前記プロセッサの各々と関連付けられたトークン・マニピュレータと、
    前記プロセッサによって共有される前記共有データ要素又は他のデータ要素に関する除去処理を行う必要があるかどうかを示す、前記プロセッサの各々と関連付けられた分散インジケータと、
    前記トークン・マニピュレータによるトークン処理の前に前記分散インジケータを処理するように適合された、前記プロセッサの各々と関連付けられた分散インジケータ処理機構と、
    前記分散インジケータによって保証されたときだけ、前記トークン・マニピュレータが前記プロセッサにおいてトークン処理を行うことができるようにさらに適合された、前記分散インジケータ処理機構と、
    を備え、
    前記分散インジケータがこうした処理を保証しないときは、不要なトークン処理を回避することが可能なデータ処理システム。
  10. 共有データ要素への既存の参照が除去されるまで前記共有データ要素の除去を据え置くための猶予時間を検出するコンピュータ・プログラム製品であって、
    1つ又は複数のデータ記憶媒体と、
    前記共有データ要素へのアクセスを共有する処理エンティティ間で循環されるトークンを確立すること、
    前記トークンが前記処理エンティティ間を周回したときに、前記猶予時間が経過したと判断すること、
    前記処理エンティティによって共有される前記共有データ要素又は他のデータ要素に関する除去処理を行う必要があるかどうかを示す分散インジケータを、前記処理エンティティの各々と関連付けること、
    前記処理エンティティにおいてトークン処理を行う前に、前記処理エンティティの各々において前記分散インジケータを処理すること、及び、
    前記分散インジケータによって保証されたときだけ、前記処理エンティティにおいてトークン処理を行うこと、
    によって動作するようにデータ処理プラットフォームをプログラムするための、前記データ記憶媒体に記録される手段と、
    を含み、
    前記分散インジケータがこうした処理を保証しないときは、不要なトークン処理を回避することが可能なコンピュータ・プログラム製品。
  11. 前記プログラム手段は、リード・コピー・アップデート・サブシステムのコンピュータ・プログラム製品の一部として実装され、前記共有データ要素の除去は、前記処理エンティティにおいてコールバックを登録することによって実行され、前記分散インジケータは、前記リード・コピー・アップデート・サブシステムにおけるコールバック行為を反映する分散コールバック・インジケータである、請求項21に記載のコンピュータ・プログラム製品。
  12. 保留コールバックをいつ実行することができるかを判断するために、リード・コピー・アップデート・サブシステムにおいて猶予時間を検出する方法であって、
    データ要素へのアクセスを共有するプロセッサの組の各々に静止状態カウンタを実装するステップと、
    前記静止状態カウンタによって維持されるカウント値の不連続として猶予時間トークンを確立するステップと、
    前記トークンが前記プロセッサの組の間を周回して前記プロセッサの1つに戻ったときに、前記プロセッサの前記1つにおいて前記猶予時間が経過したと判断するステップと、
    前記コールバックを処理する必要があるかどうかを示す分散コールバック・インジケータを、前記プロセッサの各々と関連付けられたキャッシュ・メモリ内のローカル変数として関連付けるステップと、
    前記プロセッサにおいてトークン処理を行う前に、前記プロセッサの各々において前記分散コールバック・インジケータを処理するステップと、
    前記分散コールバック・インジケータによって保証されたときだけ、前記プロセッサにおいてトークン処理を行うステップと、
    を含み、
    前記分散コールバック・インジケータがこうした処理を保証しないときは、不要なトークン処理を回避することが可能な方法。
  13. 1つ又は複数のプロセッサ、メモリ、及び、前記1つ又は複数のプロセッサと前記メモリとの間の通信経路を有し、保留コールバックをいつ実行することができるかを判断するために猶予時間を検出するように適合されたリード・コピー・アップデート・サブシステムを含むデータ処理システムであって、
  14. 共有データ要素への既存の参照が除去されるまで前記共有データ要素の除去を据え置くための猶予時間を検出する方法であって、
    前記共有データ要素へのアクセスを共有する処理エンティティ間で循環されるトークンを確立するステップと、
    前記トークンが前記処理エンティティ間を周回したときに、前記猶予時間が経過したと判断するステップと、
    前記処理エンティティによって共有されるデータ要素を除去するための保留要求を有する前記処理エンティティの数を表す分散インジケータを、前記処理エンティティの各々と関連付けるステップと、
    前記処理エンティティにおいてトークン処理を行う前に、前記処理エンティティの各々において前記分散インジケータを処理するステップであって、前記処理は、前記処理エンティティの隣接する1つにおける前記分散インジケータの値に従って前記分散インジケータを修正することを含み、前記分散インジケータの修正は、(1)現在の猶予時間と関連付けられた除去要求が存在し、前の猶予時間と関連付けられた除去要求が存在しないかどうかに応じて行われ、この場合には前記分散インジケータを増加させ、(2)現在の猶予時間と関連付けられた除去要求が存在せず、前の猶予時間と関連付けられた除去要求が存在したかどうかに応じて行われ、この場合には前記分散インジケータを減少させ、又は、(3)現在の猶予時間と前の猶予時間の両方について除去要求が存在するかどうか、若しくは、現在の猶予時間と前の猶予時間の両方について除去要求が存在しないかどうかに応じて行われ、この場合には前記分散インジケータは同じままである、ステップと、
    前記分散インジケータによって保証されたときだけ、前記処理エンティティにおいてトークン処理を行うステップと、
    を含み、
    前記分散インジケータがこうした処理を保証しないときは、不要なトークン処理を回避することが可能な方法。
  15. 共有データ要素への既存の参照が除去されるまで前記共有データ要素の除去を据え置くための猶予時間を検出する方法であって、
    前記共有データ要素へのアクセスを共有する処理エンティティ間で循環されるトークンを確立するステップと、
    前記トークンが前記処理エンティティ間を周回したときに、前記猶予時間が経過したと判断するステップと、
    前記処理エンティティによって共有されるデータ要素を除去するための保留要求の総数を表す分散インジケータを、前記処理エンティティの各々と関連付けるステップと、
    前記処理エンティティにおいてトークン処理を行う前に、前記処理エンティティの各々において前記分散インジケータを処理するステップであって、前記処理は、前記処理エンティティの隣接する1つにおける前記分散インジケータの値に従って前記分散インジケータを修正することを含み、前記値の修正は、現在の猶予時間の間に追加された除去要求の数と以前の猶予時間の間に処理された除去要求の数との間の差に応じて行われる、ステップと、
    前記分散インジケータによって保証されたときだけ、前記処理エンティティにおいてトークン処理を行うステップと、
    を含み、
    前記分散インジケータがこうした処理を保証しないときは、不要なトークン処理を回避することが可能な方法。
  16. 共有データ要素への既存の参照が除去されるまで前記共有データ要素の除去を据え置くための猶予時間を検出する方法であって、
    前記共有データ要素へのアクセスを共有する処理エンティティ間で循環されるトークンを確立するステップと、
    前記トークンが前記処理エンティティ間を周回したときに、前記猶予時間が経過したと判断するステップと、
    前記処理エンティティによって共有されるデータ要素を除去するための保留要求を有する前記処理エンティティのビットマップを表す分散インジケータを、前記処理エンティティの各々と関連付けるステップと、
    前記処理エンティティにおいてトークン処理を行う前に、前記処理エンティティの各々において前記分散インジケータを処理するステップであって、前記処理は、前記処理エンティティの隣接する1つにおける前記分散インジケータの値に従って前記分散インジケータを修正することと、(1)現在の猶予時間と関連付けられた除去要求が存在するかどうかに応じて、評価している処理エンティティに対応するビットを1に設定するか、又は、(2)現在の猶予時間と関連付けられた除去要求が存在しないかどうかに応じて、評価している処理エンティティに対応するビットを0に設定することとを含む、ステップと、
    前記分散インジケータによって保証されたときだけ、前記処理エンティティにおいてトークン処理を行うステップと、
    を含み、
    前記分散インジケータがこうした処理を保証しないときは、不要なトークン処理を回避することが可能な方法。
JP2007538381A 2004-10-27 2005-10-13 多数のプロセッサをグレースフルに処理するアトミック命令なしリード・コピー・アップデートの猶予時間検出 Expired - Fee Related JP4551452B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/974,514 US7454581B2 (en) 2004-10-27 2004-10-27 Read-copy update grace period detection without atomic instructions that gracefully handles large numbers of processors
PCT/EP2005/055240 WO2006045704A1 (en) 2004-10-27 2005-10-13 Read-copy update grace period detection without atomic instructions that gracefully handles large numbers of processors

Publications (3)

Publication Number Publication Date
JP2008518337A true JP2008518337A (ja) 2008-05-29
JP2008518337A5 JP2008518337A5 (ja) 2008-08-14
JP4551452B2 JP4551452B2 (ja) 2010-09-29

Family

ID=35989206

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007538381A Expired - Fee Related JP4551452B2 (ja) 2004-10-27 2005-10-13 多数のプロセッサをグレースフルに処理するアトミック命令なしリード・コピー・アップデートの猶予時間検出

Country Status (8)

Country Link
US (2) US7454581B2 (ja)
EP (1) EP1836571B1 (ja)
JP (1) JP4551452B2 (ja)
KR (1) KR100910821B1 (ja)
CN (1) CN101142551B (ja)
AT (1) ATE426853T1 (ja)
DE (1) DE602005013578D1 (ja)
WO (1) WO2006045704A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010033556A (ja) * 2008-07-24 2010-02-12 Internatl Business Mach Corp <Ibm> 非プリエンプタブルなデータ参照者に影響する共用データ要素の更新動作の後に猶予期間の低電力検出のための方法、システム及びコンピュータ・プログラム

Families Citing this family (50)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7454581B2 (en) * 2004-10-27 2008-11-18 International Business Machines Corporation Read-copy update grace period detection without atomic instructions that gracefully handles large numbers of processors
KR100763526B1 (ko) * 2005-12-12 2007-10-04 한국전자통신연구원 애플리케이션 컨텍스트 관리 장치 및 방법
US7664786B2 (en) * 2005-12-12 2010-02-16 Electronics And Telecommunications Research Institute Apparatus and method for managing application context
US7353346B2 (en) * 2006-03-24 2008-04-01 International Business Machines Corporation Read-copy-update (RCU) operations with reduced memory barrier usage
JP5103807B2 (ja) * 2006-06-30 2012-12-19 富士通株式会社 制御プログラム、制御方法、情報処理装置及び情報処理システム
US8495641B2 (en) * 2007-06-29 2013-07-23 International Business Machines Corporation Efficiently boosting priority of read-copy update readers while resolving races with exiting and unlocking processes
US8706706B2 (en) * 2007-09-13 2014-04-22 International Business Machines Corporation Fast path for grace-period detection for read-copy update system
US8055918B2 (en) * 2008-04-03 2011-11-08 International Business Machines Corporation Optimizing preemptible read-copy update for low-power usage by avoiding unnecessary wakeups
US7953778B2 (en) * 2008-05-20 2011-05-31 International Business Machines Corporation Efficient support of consistent cyclic search with read-copy update and parallel updates
US8020160B2 (en) * 2008-07-28 2011-09-13 International Business Machines Corporation User-level read-copy update that does not require disabling preemption or signal handling
US7953708B2 (en) * 2008-07-28 2011-05-31 International Business Machines Corporation Optimizing grace period detection for preemptible read-copy update on uniprocessor systems
US8195893B2 (en) * 2008-11-03 2012-06-05 International Business Machines Corporation Eliminating synchronous grace period detection for non-preemptible read-copy update on uniprocessor systems
US8065489B1 (en) 2009-03-31 2011-11-22 Symantec Corporation Method and apparatus for managing concurrent access among computers to a bitmap stored on disk storage
US8185704B2 (en) * 2009-09-02 2012-05-22 International Business Machines Corporation High performance real-time read-copy update
US9459963B2 (en) * 2009-09-03 2016-10-04 International Business Machines Corporation Safely rolling back transactions in a transactional memory system with concurrent readers
US8407503B2 (en) 2010-09-27 2013-03-26 International Business Machines Corporation Making read-copy update free-running grace period counters safe against lengthy low power state sojourns
US9189413B2 (en) 2011-06-20 2015-11-17 International Business Machines Corporation Read-copy update implementation for non-cache-coherent systems
US8615771B2 (en) 2011-06-20 2013-12-24 International Business Machines Corporation Effective management of blocked-tasks in preemptible read-copy update
US9250978B2 (en) 2011-06-27 2016-02-02 International Business Machines Corporation Asynchronous grace-period primitives for user-space applications
JP5772458B2 (ja) * 2011-09-29 2015-09-02 富士通株式会社 データ管理プログラム、ノード、および分散データベースシステム
US8661005B2 (en) 2011-12-08 2014-02-25 International Business Machines Corporation Optimized deletion and insertion for high-performance resizable RCU-protected hash tables
US9009122B2 (en) 2011-12-08 2015-04-14 International Business Machines Corporation Optimized resizing for RCU-protected hash tables
US9256476B2 (en) 2011-12-10 2016-02-09 International Business Machines Corporation Expedited module unloading for kernel modules that execute read-copy update callback processing code
CN102609313B (zh) * 2012-01-13 2014-04-02 汉柏科技有限公司 多核系统资源延迟回收锁的实现方法及系统
US9003420B2 (en) 2012-05-18 2015-04-07 International Business Machines Corporation Resolving RCU-scheduler deadlocks
US8938631B2 (en) 2012-06-30 2015-01-20 International Business Machines Corporation Energy efficient implementation of read-copy update for light workloads running on systems with many processors
US8874535B2 (en) 2012-10-16 2014-10-28 International Business Machines Corporation Performance of RCU-based searches and updates of cyclic data structures
US8924655B2 (en) 2013-02-04 2014-12-30 International Business Machines Corporation In-kernel SRCU implementation with reduced OS jitter
US8972801B2 (en) 2013-02-04 2015-03-03 International Business Machines Corporation Motivating lazy RCU callbacks under out-of-memory conditions
US9348765B2 (en) 2013-03-14 2016-05-24 International Business Machines Corporation Expediting RCU grace periods under user mode control
US9244844B2 (en) 2013-03-14 2016-01-26 International Business Machines Corporation Enabling hardware transactional memory to work more efficiently with readers that can tolerate stale data
US9396226B2 (en) 2013-06-24 2016-07-19 International Business Machines Corporation Highly scalable tree-based trylock
US9389925B2 (en) 2013-12-03 2016-07-12 International Business Machines Corporation Achieving low grace period latencies despite energy efficiency
US9720836B2 (en) 2015-05-11 2017-08-01 International Business Machines Corporation Preemptible-RCU CPU hotplugging while maintaining real-time response
US9552236B2 (en) 2015-05-12 2017-01-24 International Business Machines Corporation Tasks—RCU detection of tickless user mode execution as a quiescent state
US9886329B2 (en) * 2015-06-25 2018-02-06 International Business Machines Corporation Scalable RCU callback offloading
US9965432B2 (en) 2015-10-02 2018-05-08 International Business Machines Corporation Handling CPU hotplug events in RCU without sleeplocks
US10140131B2 (en) 2016-08-11 2018-11-27 International Business Machines Corporation Shielding real-time workloads from OS jitter due to expedited grace periods
US10353748B2 (en) 2016-08-30 2019-07-16 International Business Machines Corporation Short-circuiting normal grace-period computations in the presence of expedited grace periods
US10282230B2 (en) 2016-10-03 2019-05-07 International Business Machines Corporation Fair high-throughput locking for expedited grace periods
US10146577B2 (en) 2016-12-11 2018-12-04 International Business Machines Corporation Enabling real-time CPU-bound in-kernel workloads to run infinite loops while keeping RCU grace periods finite
US10372510B2 (en) 2017-03-15 2019-08-06 International Business Machines Corporation Using expedited grace periods to short-circuit normal grace-period computations
US11055271B2 (en) 2017-11-13 2021-07-06 International Business Machines Corporation Funnel locking for sleepable read-copy update
US10983840B2 (en) 2018-06-21 2021-04-20 International Business Machines Corporation Consolidating read-copy update types having different definitions of a quiescent state
US10268610B1 (en) 2018-08-16 2019-04-23 International Business Machines Corporation Determining whether a CPU stalling a current RCU grace period had interrupts enabled
US10831542B2 (en) 2018-10-01 2020-11-10 International Business Machines Corporation Prevent counter wrap during update-side grace-period-request processing in tree-SRCU implementations
US10613913B1 (en) 2018-10-06 2020-04-07 International Business Machines Corporation Funnel locking for normal RCU grace period requests
US11386079B2 (en) 2019-06-26 2022-07-12 International Business Machines Corporation Replacing preemptible RCU with an augmented SRCU implementation
US10977042B2 (en) 2019-07-26 2021-04-13 International Business Machines Corporation Using expedited RCU grace periods to avoid out-of-memory conditions for offloaded RCU callbacks
US11321147B2 (en) 2019-08-29 2022-05-03 International Business Machines Corporation Determining when it is safe to use scheduler lock-acquiring wakeups to defer quiescent states in real-time preemptible read-copy update

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4685082A (en) 1985-02-22 1987-08-04 Wang Laboratories, Inc. Simplified cache with automatic update
US5442758A (en) 1993-07-19 1995-08-15 Sequent Computer Systems, Inc. Apparatus and method for achieving reduced overhead mutual exclusion and maintaining coherency in a multiprocessor system utilizing execution history and thread monitoring
US6311289B1 (en) 1998-11-03 2001-10-30 Telefonaktiebolaget Lm Ericsson (Publ) Explicit state copy in a fault tolerant system using a remote write operation
US6490671B1 (en) * 1999-05-28 2002-12-03 Oracle Corporation System for efficiently maintaining translation lockaside buffer consistency in a multi-threaded, multi-processor virtual memory system
US6405201B1 (en) 1999-12-02 2002-06-11 Sun Microsystems, Inc. Method and apparatus for reducing network traffic for remote file append operations
US6502165B1 (en) 1999-12-03 2002-12-31 International Business Machines Corporation Balanced access to data volumes with redundant copies stored in data storage libraries
CN1114874C (zh) * 2000-05-15 2003-07-16 倚天资讯股份有限公司 利用双向无线传输进行软件更新的方法及其系统
US6502170B2 (en) 2000-12-15 2002-12-31 Intel Corporation Memory-to-memory compare/exchange instructions to support non-blocking synchronization schemes
US20030110232A1 (en) * 2001-12-11 2003-06-12 International Business Machines Corporation Distributing messages between local queues representative of a common shared queue
US7454581B2 (en) * 2004-10-27 2008-11-18 International Business Machines Corporation Read-copy update grace period detection without atomic instructions that gracefully handles large numbers of processors

Non-Patent Citations (7)

* Cited by examiner, † Cited by third party
Title
CSND200401003002, 山本高志、岩本俊弘, "カーネル2.6のすべて Part 2 カーネルの実力検証", 日経Linux, 20030908, 第5巻,第10号, pp.47−51, JP, 日経BP社 *
CSND200500441016, 高橋浩和, "Linuxカーネル2.6解読室 第5回 同期と排他", UNIX USER, 20041001, 第13巻,第10号, pp.119−134, JP, ソフトバンクパブリッシング株式会社 *
JPN5007018718, Paul E. McKenney et al., "Read Copy Update", Proceedings of Ottawa Linux Symposium 2002, 20020629, pp.339−343 *
JPN5007018720, Andrea Arcangeli et al., "Using Read−Copy−Update Techniques for System V IPC in the Linux 2.5 Kernel", Proceedings of the FREENIX Track: 2003 USENIX Annual Technical Conference, 20030609, pp.297−309, US *
JPN5007018721, Ben Gamsa et al., "Tornado: Maximizing Locality and Concurrency in a Shared Memory. Multiprocessor Operating System", Proceedings of the 3rd Symposium on Operating Systems Design and Implementation (OSDI ’99), 19990222, pp.87−100, US *
JPN6010020621, 山本高志、岩本俊弘, "カーネル2.6のすべて Part 2 カーネルの実力検証", 日経Linux, 20030908, 第5巻,第10号, pp.47−51, JP, 日経BP社 *
JPN6010020635, 高橋浩和, "Linuxカーネル2.6解読室 第5回 同期と排他", UNIX USER, 20041001, 第13巻,第10号, pp.119−134, JP, ソフトバンクパブリッシング株式会社 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010033556A (ja) * 2008-07-24 2010-02-12 Internatl Business Mach Corp <Ibm> 非プリエンプタブルなデータ参照者に影響する共用データ要素の更新動作の後に猶予期間の低電力検出のための方法、システム及びコンピュータ・プログラム

Also Published As

Publication number Publication date
KR100910821B1 (ko) 2009-08-04
JP4551452B2 (ja) 2010-09-29
US7689789B2 (en) 2010-03-30
US20060123100A1 (en) 2006-06-08
CN101142551B (zh) 2010-05-05
ATE426853T1 (de) 2009-04-15
EP1836571B1 (en) 2009-03-25
US20080288749A1 (en) 2008-11-20
EP1836571A1 (en) 2007-09-26
CN101142551A (zh) 2008-03-12
KR20070064646A (ko) 2007-06-21
US7454581B2 (en) 2008-11-18
WO2006045704A1 (en) 2006-05-04
DE602005013578D1 (de) 2009-05-07

Similar Documents

Publication Publication Date Title
JP4551452B2 (ja) 多数のプロセッサをグレースフルに処理するアトミック命令なしリード・コピー・アップデートの猶予時間検出
US7734879B2 (en) Efficiently boosting priority of read-copy update readers in a real-time data processing system
US8495641B2 (en) Efficiently boosting priority of read-copy update readers while resolving races with exiting and unlocking processes
US7395383B2 (en) Realtime-safe read copy update with per-processor read/write locks
US7904436B2 (en) Realtime-safe read copy update with lock-free readers
US7953708B2 (en) Optimizing grace period detection for preemptible read-copy update on uniprocessor systems
US8020160B2 (en) User-level read-copy update that does not require disabling preemption or signal handling
JP2500101B2 (ja) 共用変数の値を更新する方法
US20080082532A1 (en) Using Counter-Flip Acknowledge And Memory-Barrier Shoot-Down To Simplify Implementation of Read-Copy Update In Realtime Systems
US7472228B2 (en) Read-copy update method
US8881153B2 (en) Speculative thread execution with hardware transactional memory
US8438571B2 (en) Thread speculative execution and asynchronous conflict
US10282230B2 (en) Fair high-throughput locking for expedited grace periods
US9940290B2 (en) Handling CPU hotplug events in RCU without sleeplocks
US20180046521A1 (en) Shielding Real-Time Workloads From OS Jitter Due To Expedited Grace Periods
Anderson et al. Efficient object sharing in quantum-based real-time systems
JP6637450B2 (ja) トランザクションにおけるレジスタの動的なセーブ
Tomar Dynamic prediction based scheduling for tm

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080627

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080627

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20100315

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20100330

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100420

RD12 Notification of acceptance of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7432

Effective date: 20100506

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20100506

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100616

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

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20100706

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

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20130716

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees