JP2007299417A - マルチプロセッサコンピュータでjavaスレッドによる同期を行うフレキシブルなアクセラレーション - Google Patents

マルチプロセッサコンピュータでjavaスレッドによる同期を行うフレキシブルなアクセラレーション Download PDF

Info

Publication number
JP2007299417A
JP2007299417A JP2007160652A JP2007160652A JP2007299417A JP 2007299417 A JP2007299417 A JP 2007299417A JP 2007160652 A JP2007160652 A JP 2007160652A JP 2007160652 A JP2007160652 A JP 2007160652A JP 2007299417 A JP2007299417 A JP 2007299417A
Authority
JP
Japan
Prior art keywords
lock
count
threshold
processor
thread
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
JP2007160652A
Other languages
English (en)
Other versions
JP4739282B2 (ja
Inventor
Deep K Buch
ケイ ブーク,ディープ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of JP2007299417A publication Critical patent/JP2007299417A/ja
Application granted granted Critical
Publication of JP4739282B2 publication Critical patent/JP4739282B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

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
    • 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

Abstract

【課題】Java(登録商標)スレッドによる同期の性能を向上するためのソフトウェア及びハードウェアの提供。
【解決手段】ロックに関する競合のレベル従って、「ホットな」ロックと「コールドな」ロックを区別するためにロックを要求するスレッドによる要求を測定する。ハードウェアアクセラレータは、性能を改善するためのホットロックへのアクセスを管理する。ホットロックを示す閾値とそれぞれのアクセスカウント値とが比較される。モニタカウントは閾値と比較され、該カウント値が閾値を超えない場合、特定のロックに関して更なる動作は実行されない。達成されたカウント値が閾値を超えた場合、ホットロックのリストに追加される。
【選択図】図3

Description

本発明は、Java(登録商標)スレッドによる同期の性能を向上するためのソフトウェア及びハードウェアのアプローチに関する。
サーバ、或いは上位エンドワークステーション上で実行されるJava(登録商標)ソフトウェアは、多くのCPU(中央処理装置)による実行を可能にするように設計されている場合がある。Java(登録商標)は、スレッドで一般に実行される。スレッドは、プログラムで実行する1つの連続的な制御フローである。また、スレッドは、実行環境又は軽量プロセスと呼ばれる。複数のスレッドは、同時に実行する。スレッドは、グローバルデータ、メモリ、コードのクリティカルセクション及び他のリソースのようなリソースを共有する。共有リソースは、関連する「ロック」を有している。スレッドは、あるリソースにアクセスするために、そのリソースに関するロックを取得しなければならない。性能を制限するキーとなるボトルネックは、「ロッキング」、すなわち複数のスレッドによる同じ共有リソースへのアクセスの同期を実現することである。Java(登録商標)プログラムでは、一般に使用されているアクセス制御は、「モニタ」構造である。基礎になるJava(登録商標)仮想マシン(JVM)は、ソフトウェアで具体化され、Java(登録商標)プログラムのためのランタイム環境を提供し、要求されるロック機構を実現するための役割を果たす。JVMにより採用される実現のアプローチ、及びプラットフォームにおける同期のプリミティブのためのハードウェアのサポートに依存して、マルチプロセッササーバ上で実行する電子商取引事業で使用されるJava(登録商標)ソフトウェアに関して広いバリエーションの性能を実現することができる。
同期のために使用され、殆どのプロセッサで実現されている一般的なハードウェア技術は、“XCHG”のような命令の実行によりもたらされる、極微な読出し・修正・書込みバスサイクルである。ロック(したがって、ロックによりプロテクトされるリソース)を求める競合が深刻な環境では、複数のCPUは、同じロック又は一組のロックのオーナシップを確保しようとして、ロックされた読出し・修正・書込み処理を同時に実行することができる。これは、大群(thundering herd)問題と呼ばれ、システムバスでの重度の競合を引き起こす。結果的に、マイクロプロセッサのスケーラビリティが制限される。結果として、性能上の深刻な低下を受ける。
この問題を例示するサンプルコードが以下の表1に示される。
Figure 2007299417
4行目において、処理cmpxchg命令は、利用可能なロックを探す。5行目において、利用可能なロックが発見されない場合、ロック状態は0から1に変化される。9行目において、あるロックを確保する試みがある。10行目において、そのロックが空いているかに関して問合せがあり、11行目で回答が提供される。この場合では、そのロックを取得するための試みは不成功であり、ロックされていないリソースを発見するまで、処理は継続されなければならない。ロックの競合に関連するオーバヘッドを最小にすることが望まれている。
本発明は、添付図面を参照して以下の記載における例示を通して説明される。
従来技術のJVM又は等価なランタイム環境は、Java(登録商標)プログラムと、該プログラムが実行するプラットフォームとの間の「媒介者」としてのその役割のため、ユニークな位置にある。プラットフォームは、オペレーティングシステム及びハードウェアを含んでいる。多くのJVMは、プログラムが殆どの時間を費やすコードの最適化のために使用される適応型のコンパイル技術と合わせて、ジャストインタイム・コンパイラを含んでいる。図1は、モニタのデータ構造に関する図である。
「モニタ」は、共有リソースへのアクセスを制御するための技術である。モニタは、明示的なキューとの共有クラスである。共有クラスの効果は、たとえば、クラスを作成することによりJava(登録商標)で達成される。Java(登録商標)では、全てのフィールドは、プライベートフィールドであり、全ての方式が同期される。1を超えるスレッドによりアクセスすることができる変数のみがモニタのフィールドである。モニタの方式は、同期される。したがって、モニタにおけるアクセスは、相互に排他的である。結果的に、モニタは、スレッドへの相互に排他的なアクセスを提供するための必要を満たす。本発明の1つの特徴は、ロックの競合に関する動的なプロファイル(属性分類)情報(dynamic profiling information)を収集するための能力を提供することにある。このために、モニタデータ構造10には、拡張フィールド14が追加される。
Java(登録商標)の「モニタ」方式は、2種類のスレッド同期、排他制御及び相互連動をサポートする。排他制御は、オブジェクトロックを介してJava(登録商標)仮想マシンでサポートされており、これにより、複数のスレッドは、互いに干渉しあうことなしに共有データに関して独立に作業することができる。相互連動は、「待ち」及び「修正」方法を介してJava(登録商標)仮想マシンにおいてサポートされており、これにより、スレッドは、共通の目的に向けて互いに作業することができる。本実施の形態に係る記載は、排他制御の環境におけるものである。
1つのスレッドは、あるモニタを同時に取得する。拡張フィールド14は、JVMのソフトウェアにおけるモニタデータ構造10に追加される。典型的なモニタデータ構造は、数ビットの追加によりメモリ使用の大幅な増加が引き起こされないように、すなわちJava(登録商標)の性能に悪影響を及ぼさないように十分に大きい。この拡張フィールド14は、Java(登録商標)スレッドが所与のモニタに関するオーナシップを得るために要求する情報をJVMに与える。あるスレッドは、オブジェクトを使用するための権利を取得し、次いで、権利の取得が行われたときにロック/モニタを解除する。そのスレッドが、そのオブジェクトを使用することを再び必要とするとき、そのロックを再び取得し、ロックの取得が行われたときに再びロックを解除する、等が行われる。拡張フィールドは、所与の時間において唯一のスレッド(unique thread)によりモニタに対して行われる唯一のアクセス(unique access)の「カウント」を保持するために、JVMにより使用される。短時間の間に、あるモニタのオーナシップを得ることを多数のスレッドが試みた場合、カウントは、大きな数であり、ロックは、「ホットな」ロック、すなわち重度に競合しているロックとして識別される。モニタが1つのスレッドにより主としてアクセスされている場合、カウントは1であり、ロックは「コールドな」ロックである。
JVMがどのロックが「ホット」であるかを一旦判定すると、JVMは、このロックのグループについて使用すべき最も適切な同期技術を選択することができる。JVMは、競合に関する閾値を設定する。この閾値は、実際のカウント値に対して比較される。カウント値がホットなロックを識別するために割り当てられた閾値を超える場合、JVMは、これらのホットロックのためにハードウェア・アクセラレート技術を使用する判定を行う。図2は、所与のロックについて軽度の競合がある例での処理を説明している。図2において、ブロック20では、あるスレッドは、あるモニタを取得する。ブロック22で、この要求しているスレッドは、そのモニタを前に要求したスレッドと異なるスレッドであるかが判定される。異なるスレッドではない場合、特定のモニタについてのアクセスカウントをインクリメントするための動作は行われず、処理はブロック20に戻る。前のスレッドとは異なるスレッドがロックについて競合している場合、ブロック24で、そのモニタについてのアクセスカウントがインクリメントされる。
図3は、ホットロックを示す閾値とそれぞれのアクセスカウント値とを比較する処理を表している。ブロック30では、モニタカウントは閾値と比較される。ブロック32で、該カウント値が閾値を超えない場合、特定のロックに関して更なる動作が実行されず、処理はブロック30に戻る。実際に、ブロック24で達成されたカウント値が閾値を超えた場合、動作はブロック34に進み、ここでは、あるロックがホットロックのリストに追加される。図2及び図3の処理は、JVM又はハードウェアで実現される。このように、ホットロックの識別が提供される。
先の表1に関する従来技術の処理に戻り、この処理は、重度の競合を本質的に提供することがわかる。競合は、ロックを求める複数のプロセッサの要求を記録することができ、かつ、あるロックの割り当てを調停することができる中央のエンティティがないことが原因である。結果的に、プロセッサは、ロックを得ることを繰り返し試みなければならない。中央のエンティティが存在する場合、これは、余分のステップ及び余分の時間、すなわちオーバヘッドの観点で高価なものである、要求される読出し・修正・書込みのサイクル数を大幅に低減することができる。図4には、中央のエンティティを提供するハードウェアが例示されており、この図は、4つのCPUのバスに基づいた構成からなるブロック図である。4つのCPUの構成に焦点が当てられ、本発明の特定の実施の形態に関する説明が提供される。しかし、他の数のCPUが利用される場合がある。例示される構造は、スケーラブルである。4つのCPUは、フロントサイドバスに配列されて接続されている。他の装置の配列が提供される場合がある。
図4では、言及される4つのCPUは、CPU40,42,44及び46である。これらは、データバス50とそれぞれ通信し、また、データバス50は、チップセット52と通信する。また、チップセット54は、メモリ56に接続されるホストメモリコントローラ54を備えている。4つのロック58−1〜58−4は、メモリ56へのアクセスの制御を示すために例示されている。メモリ56は、共有のリソースである。
また、チップセット52には、ロックレジスタ装置60がある。必ずしも、チップセット52にロックレジスタ装置60を設ける必要はないが、ロックレジスタ装置60を設けることが好ましい。ロックレジスタユニット58は、本実施の形態では、4つのロックレジスタ64を含んでいる。4つのロックレジスタ64は、便宜上例示されている。通常、基準のアプリケーションにおけるロックレジスタの数は、非常に多くなる。しかし、ロックレジスタ64の数は、説明の容易さのために制限されている。ロックレジスタ64の数は、プラットフォームに依存する。初期化のとき、ロックレジスタの数は、JVMに伝達される。JVMによるハードウェアアクセラレーションの使用は、利用可能なロックレジスタの数に制限される。利用可能なロックレジスタ64がない場合、JVMは、ソフトウェアで同期を管理する。
より多くのロックレジスタ64をハードウェアで実現するか、ソフトウェアで実現するか関する柔軟性を提供することで、設計者には、性能対費用をトレードオフするための機会が与えられる。本実施の形態では、ロックレジスタ64は、4つのロックのそれぞれについて提供される。これらのロックは、ロック58−1,58−2,58−3及び58−4として識別される。それぞれのロックレジスタ64は、それぞれのロック58について、CPUのロック要求を記憶するためのカウンタを備えている。ロックレジスタ装置60は、あるロックへのアクセスが与えられるCPUを選択するアービタ68をさらに備える。そのロックへのアクセスが与えられた現在のCPUは、「勝者」と呼ばれる。現在の「敗者」のCPUには、スピンして再びアクセスを要求するためのスピンフラグが提供される。勝者のCPUがロックを一旦解除すると、ロックレジスタユニット60は、アービタ68を介して、次の勝者を選択し、保留の要求が存在する限り、上述した処理を繰り返す。
ロックレジスタカウンタ64は、CPUのロック要求を記録する。オーナシップを示すレジスタ66は、それぞれのロックレジスタ64に対応するために含まれており、ロック番号、スレッド番号、CPU番号及びスピンフラグにより識別される現在のロックのオーナシップを記録する。ロックレジスタ66は、あるスレッドのIDを記憶する。これは、ハードウェアのロックが一旦割り当てられていると、JVMは、ロック要求とロック解除の間で異なるCPUにスレッドが移動しないことを保証する必要があるからである。この移動の防止は、スレッドの親和性結合(affinity−binding)を要求するために、標準的なオペレーティングシステムの呼出しを使用すること通して行われる。
代替的な実現は(理想的ではないが)、かかる親和度を要求しないが、代わりに、あるスレッドがあるCPUから別のCPUに移動する場合、CPU番号のフィールドを更新して、個別のスピンフラグを発生する。
ロックレジスタユニット60は、簡単なラウンドロビン方式の調停を使用して、複数の要求の間で調停することができる。この技術は、優先度に基づく調停のような、他の調停モデルに応用することができる。
スピンフラグの提供は、以下の例により説明されるように非常に望ましい。CPU44がある特定のロック62を要求したが調停で敗者となり、CPU40がオーナシップを有する場合、従来技術のモデルでは、CPU44は、スピンして(しばらく待って)再び要求する。また、CPUは、プロセッサと呼ばれる場合がある。再び要求を試みることは、読出し・修正・書込みを発することにより作用される。先に説明したように、これは、バスの競合及び性能の問題につながる処理である。本発明では、CPU44が特定のロック62にオーナシップを得たことをロックレジスタユニット60が判定したときに、中央のエンティティとしてのその役割においてロックレジスタ装置60は、通知をCPU44に提供する。
この動作は、以下のように進行する。CPU44が「敗者」となったとき、CPU44は、キャッシュ可能なメモリにおける特定のフラグに関してスピンする。最初のアクセスの後、読出しがCPU44のキャッシュからあり、バストラフィックを生じない。CPU44がオーナシップを得たと思われるとき、レジスタユニット60は、そのメモリにおけるフラグ変数に書込みを行い、プロセッサバス50にスヌープ・バスサイクル(snoop bus cycle)を発する。
スヌープ値は、フラグ値を無効にし、CPU44は、メモリ56から新たな値を得るために、読出しサイクルを発する。新たな値により、CPU44は、スピンループを始動して、そのクリティカルセクションに入る。スピンフラグのアドレス値は、JVMにより、又はJVMの代わりにチップセットドライバによりチップセットにプログラムされている。ドライバは、特定のスレッドのスピンフラグに対応する物理アドレスを得るために、仮想アドレスから物理アドレスへのアドレス変換を行うことが必要である。
なお、ロックの競合に関する動的なプロファイリング、及び同期技術を選択及び調整するためのプロファイルデータの使用は、個々の趣旨において使用される。これらは、ハードウェアと同様にソフトウェアでも実現される。
上述した方法は、機械読み取り可能な媒体により実行される場合がある。機械読み取り可能な媒体は、機械(たとえば、コンピュータ)により読取り可能な形式で情報を提供する(すなわち、記憶及び/又は送信)任意のメカニズムを含んでいる。たとえば、機械読み取り可能な媒体は、リードオンリメモリ(ROM)、ランダムアクセスメモリ(RAM)、磁気ディスク記憶媒体、光記憶媒体、フラッシュメモリ装置、電気的、光学的、音響的又は他の形態の伝播信号(たとえば、搬送波、赤外線信号、デジタル信号又は他の形式の信号)を含んでいる。
提供される技術は、ロックの競合に関する動的なプロファイリングのための方法及び装置であり、使用される同期技術を選択及び調整するためのプロファイルデータを使用するための方法及び装置であり、及び、動的なプロファイリング及び同期技術の選択について対話型であってプラットフォーム依存型の同期アクセラレーションハードウェアである。上述した特定仕様により、当業者であれば、本発明に係る方法及び装置を提供するために、先に説明した特定の例における多くの変更を行うことができるであろう。
ロックの競合に関する動的なプロファイル情報をモニタするための、本発明で使用されるソフトウェアデータ構造の図である。 Java(登録商標)仮想マシンにおけるロックの競合に関する動的なプロファイルを説明するフローチャートである。 Java(登録商標)仮想マシンにおけるロックの競合に関する動的なプロファイルを説明するフローチャートである。 本発明に係る同期アクセラレーションを提供するハードウェアのブロック図である。

Claims (15)

  1. ロック要求を処理するためのデータ構造を有するモニタを利用して、複数のプロセッサにより実行される競合するスレッドによる共有リソースへのアクセスを制御するステップと、前記データ構造は、所与の期間における固有のスレッドのアクセスのカウントを保持する拡張フィールドを有しており、
    前記所与の期間における競合するスレッドによるロックの固有の要求の数を前記カウントとして記憶するステップと、
    前記カウントが競合の閾値を超えているかを判定して、前記ロックを「重度に競合している」ロックとして識別するステップと、
    前記カウントが前記閾値を超えない場合に前記カウントを保持するステップと、
    前記ロックへのアクセスを得ていない前記複数のプロセッサのうちの第一のプロセッサによりアクセス可能なメモリにフラグ変数を設定するステップと、
    前記複数のプロセッサのうちの第二のプロセッサが前記ロックを解除したときに、アクセスを得ていない前記第一のプロセッサにアクセスを許可するため、バススヌープサイクルの間に前記フラグ変数を変更するステップとを含み、
    前記第一のプロセッサは、スピンスループの状態のままであり、前記フラグ変数の変更までバストラフィックを発生しない、
    ことを特徴とする方法。
  2. 当該方法は、前記カウントを記憶する前に、
    モニタについてのスレッドの要求を検知するステップと、
    要求しているスレッドが前に要求したスレッドと異なるかを判定するステップと、
    前記要求しているスレッドが前記前に要求したスレッドと異なることを示す比較に応答して、競合を示す前記カウントをインクリメントするステップと、
    を更に含む請求項1記載の方法。
  3. 前記カウントが競合の前記閾値を超えているかを判定する前記ステップは、
    前記カウントを前記閾値と比較するステップと、
    前記カウントが前記閾値を超えるときを判定するステップと、
    前記閾値を超える前記カウントに応答して、前記ロックを「重度に競合している」ロックとして識別するステップと、
    を含む請求項2記載の方法。
  4. 前記カウントが競合の前記閾値を超えているかを判定する前記ステップは、
    ロックについて重度に競合しているために選択された方式に従ってロック要求を選択することで、前記ロックを重度に競合しているとする前記識別に応答するステップを更に含む、
    請求項3記載の方法。
  5. 前記カウントが競合の前記閾値を超えているかを判定する前記ステップは、
    前記複数のプロセッサにより共有リソースへの前記ロックの要求を処理するステップと、
    前記要求の間で調停を行うステップと、
    前記第二のプロセッサである勝者のプロセッサによる前記ロックへのアクセスを提供するステップと、
    前記勝者のプロセッサに対してキャッシュ可能なメモリにおける前記フラグ変数へのアクセスを発するステップと、
    を含む請求項4記載の方法。
  6. アクセスを得ていない前記第一のプロセッサが、該アクセスを得ていない前記第一のプロセッサにより実行される前記スピンループを分離するためにメモリエレメントから新たな値を取得するため、リードサイクルを発するステップを更に含む、
    請求項1記載の方法。
  7. 前記メモリエレメントは前記メモリである、
    請求項6記載の方法。
  8. プロセッサにより実行されたときに、プロセッサに、
    ロック要求を処理するためのデータ構造を有するモニタを利用して、競合するスレッドによる共有リソースへのアクセスを制御し、
    前記モニタのデータ構造に、所与の期間における固有のスレッドのアクセスのカウントを保持する拡張フィールドを設け、
    競合するスレッドによるロックについて複数のプロセッサによる固有の要求の数を記録し、前記所与の期間における競合するスレッドの数を示すカウントを記録し、
    前記カウントが閾値を超えているかを判定して、前記ロックを「重度に競合している」ロックとして識別し、
    前記カウントが前記閾値を超えない場合に前記カウントを保持し、
    前記ロックへのアクセスを得ていない前記複数のプロセッサのうちの第一のプロセッサによりアクセス可能なメモリにフラグ変数を設定し、
    第二のプロセッサが前記ロックを解除したときに、アクセスを得ていない前記第一のプロセッサにアクセスを許可するため、バスサイクルの間に前記フラグ変数を変更し、
    アクセスを得ていない前記第一のプロセッサは、スピンスループの状態のままであり、前記フラグ変数の変更までバストラフィックを発生しない、
    動作を実行させる命令を提供するコンピュータ読取り可能な記録媒体。
  9. 前記カウントを記録する前記命令は、
    モニタについてスレッドの要求を検知し、
    要求しているスレッドが前に要求したスレッドと異なるかを判定し、前記要求しているスレッドが前記前に要求したスレッドと異なることを示す比較に応答して、競合を示す前記カウントをインクリメントする、
    動作を実行させる命令を含む請求項8記載のコンピュータ読取り可能な記録媒体。
  10. 前記カウントが競合の前記閾値を超えているかを判定する前記命令は、
    前記カウントを前記閾値と比較し、
    前記カウントが前記閾値を超えるときを判定し、
    前記閾値を超える前記カウントに応答して、前記ロックを「重度に競合している」ロックとして識別する、
    動作を実行させる命令を含む請求項9記載のコンピュータ読取り可能な記録媒体。
  11. ロックについて重度に競合しているために選択された方式に従ってロック要求を選択することで、前記ロックが重度に競合しているとする前記識別に応答する、
    動作を実行させる命令を更に含む請求項10記載のコンピュータ読取り可能な記録媒体。
  12. 前記カウントが競合の前記閾値を超えているかを判定する前記命令は、
    前記複数のプロセッサにより共有リソースへの前記ロックの要求を処理し、
    前記要求の間で調停を行うステップと、
    前記第二のプロセッサである勝者のプロセッサによる前記ロックへのアクセスを提供し、
    前記第一のプロセッサに対してキャッシュ可能なメモリにおける前記フラグ変数へのアクセスを発する、
    動作を実行させる命令を更に含む請求項8記載のコンピュータ読取り可能な記録媒体。
  13. 当該コンピュータ読取り可能な記録媒体は、Java(登録商標)仮想マシンである、
    請求項12記載のコンピュータ読取り可能な記録媒体。
  14. バスサイクルの間に前記フラグ変数を変更した後、前記第一のプロセッサは、前記第一のプロセッサにより実行されている前記スピンループを分離するためにメモリエレメントから新たな値を取得するため、リードサイクルを更に発する、
    動作を実行させる命令を更に含む請求項8記載のコンピュータ読取り可能な記録媒体。
  15. 前記バスサイクルはスヌープバスサイクルである、
    請求項14記載のコンピュータ読取り可能な記録媒体。
JP2007160652A 2001-09-28 2007-06-18 マルチプロセッサコンピュータでjavaスレッドによる同期を行うフレキシブルなアクセラレーション Expired - Fee Related JP4739282B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/968,347 US7159220B2 (en) 2001-09-28 2001-09-28 Flexible acceleration of java thread synchronization on multiprocessor computers
US09/968,347 2001-09-28

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2003531319A Division JP2005527876A (ja) 2001-09-28 2002-09-27 マルチプロセッサコンピュータでjavaスレッドによる同期を行うフレキシブルなアクセラレーション

Publications (2)

Publication Number Publication Date
JP2007299417A true JP2007299417A (ja) 2007-11-15
JP4739282B2 JP4739282B2 (ja) 2011-08-03

Family

ID=25514128

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2003531319A Pending JP2005527876A (ja) 2001-09-28 2002-09-27 マルチプロセッサコンピュータでjavaスレッドによる同期を行うフレキシブルなアクセラレーション
JP2007160652A Expired - Fee Related JP4739282B2 (ja) 2001-09-28 2007-06-18 マルチプロセッサコンピュータでjavaスレッドによる同期を行うフレキシブルなアクセラレーション

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2003531319A Pending JP2005527876A (ja) 2001-09-28 2002-09-27 マルチプロセッサコンピュータでjavaスレッドによる同期を行うフレキシブルなアクセラレーション

Country Status (8)

Country Link
US (1) US7159220B2 (ja)
JP (2) JP2005527876A (ja)
KR (1) KR100612803B1 (ja)
CN (1) CN100541434C (ja)
DE (1) DE10297275T5 (ja)
GB (1) GB2396462B (ja)
HK (1) HK1062724A1 (ja)
WO (1) WO2003027845A2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010113585A (ja) * 2008-11-07 2010-05-20 Internatl Business Mach Corp <Ibm> 外部資源を排他使用しながら実行される命令の実行時間の遅延を防ぐためのコンピュータ・システム、並びにその方法及びコンピュータ・プログラム
CN113641477A (zh) * 2021-08-17 2021-11-12 南方电网深圳数字电网研究院有限公司 基于Zookeeper的线程调度方法及装置

Families Citing this family (42)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7392513B2 (en) * 2004-03-19 2008-06-24 Intel Corporation Methods and apparatus for merging critical sections
US7644409B2 (en) * 2004-06-04 2010-01-05 Sun Microsystems, Inc. Techniques for accessing a shared resource using an improved synchronization mechanism
US8046760B2 (en) * 2004-07-09 2011-10-25 Hewlett-Packard Development Company, L.P. Lock contention pinpointing
US7516313B2 (en) * 2004-12-29 2009-04-07 Intel Corporation Predicting contention in a processor
TW200708963A (en) * 2005-08-26 2007-03-01 Ind Tech Res Inst Method and apparatus for synchronization in a multi-processor system
GB0518516D0 (en) * 2005-09-10 2005-10-19 Ibm Managing a resource lock
CN100450105C (zh) * 2005-09-13 2009-01-07 中兴通讯股份有限公司 一种基于java消息服务的同步消息接口实现方法
CN100342342C (zh) * 2005-12-14 2007-10-10 浙江大学 支持多进程的Java虚拟机实现方法
US7987452B2 (en) * 2005-12-15 2011-07-26 International Business Machines Corporation Profile-driven lock handling
DE102006014019A1 (de) * 2006-03-27 2007-10-11 Siemens Ag Verfahren zum Steuern der Zugriffe auf Ressourcen eines Computersystems
US8726279B2 (en) * 2006-05-06 2014-05-13 Nvidia Corporation System for multi threaded multi processor sharing of asynchronous hardware units
US20080133862A1 (en) * 2006-10-05 2008-06-05 Holt John M Contention detection with modified message format
US20080133691A1 (en) * 2006-10-05 2008-06-05 Holt John M Contention resolution with echo cancellation
WO2008040073A1 (en) * 2006-10-05 2008-04-10 Waratek Pty Limited Contention resolution with counter rollover
US8473564B2 (en) * 2006-10-05 2013-06-25 Waratek Pty Ltd. Contention detection and resolution
US8095616B2 (en) * 2006-10-05 2012-01-10 Waratek Pty Ltd. Contention detection
EP2069930A4 (en) * 2006-10-05 2012-05-30 Waratek Pty Ltd ADVANCED CONTENT DETECTION
US20080250221A1 (en) * 2006-10-09 2008-10-09 Holt John M Contention detection with data consolidation
US8356284B2 (en) * 2006-12-28 2013-01-15 International Business Machines Corporation Threading model analysis system and method
US7757070B1 (en) 2007-04-10 2010-07-13 Marvell International Ltd. Methods, apparatuses, and system for facilitating control of multiple instruction threads
US8140823B2 (en) * 2007-12-03 2012-03-20 Qualcomm Incorporated Multithreaded processor with lock indicator
US8683483B2 (en) * 2008-03-25 2014-03-25 Oracle America, Inc. Resource utilization monitor
EP2144163A1 (en) * 2008-07-09 2010-01-13 Software AG Method and system for synchronizing the execution of a critical code section
US9304831B2 (en) * 2008-09-29 2016-04-05 Microsoft Technology Licensing, Llc Scheduling execution contexts with critical regions
JP5300005B2 (ja) * 2008-11-28 2013-09-25 インターナショナル・ビジネス・マシーンズ・コーポレーション スレッド実行制御方法、およびシステム
US20100153974A1 (en) * 2008-12-16 2010-06-17 International Business Machines Corporation Obtain buffers for an input/output driver
US8533436B2 (en) * 2009-06-26 2013-09-10 Intel Corporation Adaptively handling remote atomic execution based upon contention prediction
JP2011150422A (ja) * 2010-01-19 2011-08-04 Renesas Electronics Corp データ処理装置
US8990823B2 (en) 2011-03-10 2015-03-24 International Business Machines Corporation Optimizing virtual machine synchronization for application software
JP5725162B2 (ja) * 2011-03-31 2015-05-27 富士通株式会社 排他制御方法、および排他制御プログラム
US8893134B2 (en) 2011-04-13 2014-11-18 International Business Machines Corporation Locating bottleneck threads in multi-thread applications
CN103092703A (zh) * 2011-10-31 2013-05-08 国际商业机器公司 Java资源访问的同步方法和装置
JP5989574B2 (ja) * 2013-02-28 2016-09-07 株式会社東芝 計算機、メモリ管理方法およびプログラム
CA2831134A1 (en) * 2013-10-24 2015-04-24 Ibm Canada Limited - Ibm Canada Limitee Identification of code synchronization points
KR102273023B1 (ko) * 2014-10-16 2021-07-05 삼성전자주식회사 화질 개선 알고리즘 처리 방법 및 장치
CN105071973B (zh) * 2015-08-28 2018-07-17 迈普通信技术股份有限公司 一种报文接收方法及网络设备
US9772874B2 (en) * 2016-01-29 2017-09-26 International Business Machines Corporation Prioritization of transactions based on execution by transactional core with super core indicator
CN107515789A (zh) * 2016-06-15 2017-12-26 阿里巴巴集团控股有限公司 锁竞争的分析方法及设备
US10331500B2 (en) * 2017-04-05 2019-06-25 Cavium, Llc Managing fairness for lock and unlock operations using operation prioritization
TWI650648B (zh) * 2018-02-09 2019-02-11 慧榮科技股份有限公司 系統晶片及存取系統晶片中記憶體的方法
US11036528B2 (en) 2019-10-02 2021-06-15 International Business Machines Corporation Efficient profiling-based lock management in just-in-time compilers
CN111124622A (zh) * 2019-11-22 2020-05-08 深圳震有科技股份有限公司 一种多线程访问临界资源的方法、存储介质及智能终端

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2000050993A2 (en) * 1999-02-25 2000-08-31 Sun Microsystems, Inc. Monitor conversion in a multi-threaded computer system

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4435766A (en) * 1981-06-16 1984-03-06 International Business Machines Corporation Nested resource control using locking and unlocking routines with use counter for plural processes
JPS58165164A (ja) 1982-03-25 1983-09-30 Canon Inc 情報源管理方式
US5669002A (en) * 1990-06-28 1997-09-16 Digital Equipment Corp. Multi-processor resource locking mechanism with a lock register corresponding to each resource stored in common memory
US5734909A (en) * 1995-09-01 1998-03-31 International Business Machines Corporation Method for controlling the locking and unlocking of system resources in a shared resource distributed computing environment
US5717897A (en) * 1996-09-09 1998-02-10 Unisys Corporation System for coordinating coherency of cache memories of multiple host computers of a distributed information system
US5968157A (en) * 1997-01-23 1999-10-19 Sun Microsystems, Inc. Locking of computer resources
US6237043B1 (en) * 1997-11-19 2001-05-22 International Business Machines Corporation System and method for adding highly optimized synchronization capability to objects at run-time
CA2222389A1 (en) * 1997-11-27 1999-05-27 Ibm Canada Limited-Ibm Canada Limitee A mechanism for managing the locking and unlocking of objects in java
FR2784478B1 (fr) * 1998-10-09 2000-11-17 Bull Sa Architecture de verrou pour grand systeme
US6754898B2 (en) * 1998-12-08 2004-06-22 Sun Microsystems, Inc. Method and apparatus for converting a lightweight monitor to a heavyweight monitor
US6529983B1 (en) * 1999-11-03 2003-03-04 Cisco Technology, Inc. Group and virtual locking mechanism for inter processor synchronization
JP3575593B2 (ja) * 1999-12-27 2004-10-13 インターナショナル・ビジネス・マシーンズ・コーポレーション オブジェクトのロック管理方法及び装置
US6792601B1 (en) * 2000-05-18 2004-09-14 International Business Machines Corporation Multiple mode object locking method and system
US6782440B2 (en) 2000-07-26 2004-08-24 T.N.S. Holdings, Inc. Resource locking and thread synchronization in a multiprocessor environment
US6735760B1 (en) * 2000-11-08 2004-05-11 Sun Microsystems, Inc. Relaxed lock protocol

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2000050993A2 (en) * 1999-02-25 2000-08-31 Sun Microsystems, Inc. Monitor conversion in a multi-threaded computer system

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010113585A (ja) * 2008-11-07 2010-05-20 Internatl Business Mach Corp <Ibm> 外部資源を排他使用しながら実行される命令の実行時間の遅延を防ぐためのコンピュータ・システム、並びにその方法及びコンピュータ・プログラム
US8201178B2 (en) 2008-11-07 2012-06-12 International Business Machines Corporation Preventing delay in execution time of instruction executed by exclusively using external resource
CN113641477A (zh) * 2021-08-17 2021-11-12 南方电网深圳数字电网研究院有限公司 基于Zookeeper的线程调度方法及装置

Also Published As

Publication number Publication date
WO2003027845A9 (en) 2003-07-31
WO2003027845A3 (en) 2005-04-28
CN100541434C (zh) 2009-09-16
JP2005527876A (ja) 2005-09-15
KR20040037182A (ko) 2004-05-04
CN1630852A (zh) 2005-06-22
DE10297275T5 (de) 2004-09-23
US20030065704A1 (en) 2003-04-03
WO2003027845A2 (en) 2003-04-03
KR100612803B1 (ko) 2006-08-21
HK1062724A1 (en) 2004-11-19
JP4739282B2 (ja) 2011-08-03
GB2396462A (en) 2004-06-23
GB2396462B (en) 2006-02-08
GB0406646D0 (en) 2004-04-28
US7159220B2 (en) 2007-01-02

Similar Documents

Publication Publication Date Title
JP4739282B2 (ja) マルチプロセッサコンピュータでjavaスレッドによる同期を行うフレキシブルなアクセラレーション
JP5467661B2 (ja) トランザクション・メモリ管理における競合調停のための優先順位付けのための方法、システム、およびコンピュータ・プログラム(トランザクション・メモリ管理における競合調停のための優先順位付け)
US7191272B2 (en) Adaptive reader-writer lock
US20080276256A1 (en) Method and System for Speeding Up Mutual Exclusion
JP3634932B2 (ja) データ完全性を維持するためのスピン・バッファおよび方法
US20070124546A1 (en) Automatic yielding on lock contention for a multi-threaded processor
KR20130063003A (ko) 컨텍스트 스위칭
WO2013080434A1 (en) Dynamic process/object scoped memory affinity adjuster
JP4219106B2 (ja) 動的優先順位外部トランザクション・システム
Schmid et al. High-performance distributed RMA locks
JPH1115793A (ja) 資源の保全性を保護する方法
GB2525215A (en) A busy lock and a passive lock featuring embedded load management capabilities
GB2287159A (en) Initialization mechanism for symmetric arbitration agents
US8495307B2 (en) Target memory hierarchy specification in a multi-core computer processing system
US6928525B1 (en) Per cache line semaphore for cache access arbitration
US20050283783A1 (en) Method for optimizing pipeline use in a multiprocessing system
US7099974B2 (en) Method, apparatus, and system for reducing resource contention in multiprocessor systems
US6701429B1 (en) System and method of start-up in efficient way for multi-processor systems based on returned identification information read from pre-determined memory location
Bryant et al. Scaling linux to the extreme
WO2017131624A1 (en) A unified lock
US8316048B2 (en) Method and apparatus for managing a data structure for multi-processor access
US20080059778A1 (en) Determination Of Running Status Of Logical Processor
US8185697B1 (en) Methods and systems for coherence protocol tuning
US10051087B2 (en) Dynamic cache-efficient event suppression for network function virtualization
US11880304B2 (en) Cache management using cache scope designation

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100803

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20101101

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20110405

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110427

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

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees