JP6310943B2 - Numaアウェア統計カウンタを実施するシステムおよび方法 - Google Patents
Numaアウェア統計カウンタを実施するシステムおよび方法 Download PDFInfo
- Publication number
- JP6310943B2 JP6310943B2 JP2015549709A JP2015549709A JP6310943B2 JP 6310943 B2 JP6310943 B2 JP 6310943B2 JP 2015549709 A JP2015549709 A JP 2015549709A JP 2015549709 A JP2015549709 A JP 2015549709A JP 6310943 B2 JP6310943 B2 JP 6310943B2
- Authority
- JP
- Japan
- Prior art keywords
- counter
- increment
- node
- thread
- shared counter
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims description 162
- 230000015654 memory Effects 0.000 claims description 55
- 230000004044 response Effects 0.000 claims description 23
- 230000007423 decrease Effects 0.000 claims description 9
- 230000000977 initiatory effect Effects 0.000 claims description 4
- 230000008685 targeting Effects 0.000 claims description 4
- 238000013459 approach Methods 0.000 description 48
- 238000010586 diagram Methods 0.000 description 31
- 238000007667 floating Methods 0.000 description 24
- 230000003044 adaptive effect Effects 0.000 description 12
- 230000006978 adaptation Effects 0.000 description 10
- 238000004422 calculation algorithm Methods 0.000 description 10
- 230000006870 function Effects 0.000 description 8
- 238000012545 processing Methods 0.000 description 8
- 230000001360 synchronised effect Effects 0.000 description 8
- 238000004891 communication Methods 0.000 description 7
- 230000000694 effects Effects 0.000 description 7
- 238000004364 calculation method Methods 0.000 description 6
- 230000008901 benefit Effects 0.000 description 5
- 230000008859 change Effects 0.000 description 5
- 230000001419 dependent effect Effects 0.000 description 5
- 230000007246 mechanism Effects 0.000 description 4
- 230000000903 blocking effect Effects 0.000 description 3
- 230000003111 delayed effect Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000002474 experimental method Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000012544 monitoring process Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000001427 coherent effect Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 235000003642 hunger Nutrition 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 239000000523 sample Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000011105 stabilization Methods 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/18—Handling requests for interconnection or transfer for access to memory bus based on priority control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
- G06F9/526—Mutual exclusion algorithms
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Debugging And Monitoring (AREA)
Description
開示の分野
この開示は、共用統計カウンタに関し、より具体的には、共用統計カウンタへのアクセスを含むアプリケーションの性能を向上させる技術に関する。
マルチコアアーキテクチャ設計における現在の傾向は、シンプルなバスベースの設計から分散型不均一メモリアクセス(NUMA)およびキャッシュ干渉性NUMA(CC−NUMA)アーキテクチャへの移行が将来的に加速することを暗に示している。NUMAにおいて、所与のアクセスについてのメモリアクセス時間は、プロセッサに対するアクセスされるメモリの位置に依存する。このようなアーキテクチャは、通常、速いローカルメモリ(たとえば、プロセッサに対して密接に結合される、および/または同じ単一マルチコアチップ上に位置するメモリ)を有する演算コアの集合から構成され、より遅い(チップ間)通信媒体を介して互いに通信する。このようなシステムにおいて、プロセッサは、通常、非ローカルメモリよりも速い、自己のキャッシュメモリなどの自己のローカルメモリにアクセスし得る。一部のシステムにおいて、非ローカルメモリは、プロセッサ間で共用されるメモリの1つ以上のバンク、および/または他のプロセッサのローカルのメモリを含み得る。多くのNUMAシステムを含む一部のシステムは、他のプロセッサコアのキャッシュに対するアクセス時間が要求側コアからの物理的距離に応じて変化する不均一通信アーキテクチャ(NUCA)特性を提供する。これらのシステムにおいて、コアによるローカルメモリへのアクセス、および特定的には共用ローカルキャッシュへのアクセスは、リモートメモリ(たとえば、他のチップ上に位置するキャッシュ)へのアクセスよりも数倍(またはそれ以上)速い。
ここに記載されるシステムおよび方法は、様々な実施形態において、スケーラブル統計カウンタを実施するために使用され得る。一部の実施形態において、標準的なカウンタではなくこれらのカウンタを使用することにより、NUMAスタイルメモリアーキテクチャを採用する、および/またはNUCA特性を示すシステムにおいて実行されるアプリケーションの性能が向上し得る。ここで使用される、「NUMA」および「NUMAスタイルメモリアーキテクチャ」の用語は、NUMAおよび/またはNUCA特性を示す任意のシステムに関して使用され得る。一部の実施形態において、カウンタは、カウント値部分とノード識別子部分とを含むデータ構造として実施され得る。ノード識別子部分は、最も新しくカウンタをインクリメントしたスレッドが実行されていたノード、または共用カウンタをインクリメントするプライオリティを要求したスレッドが実行されていたノードを識別し得る。カウンタデータ構造のノード識別子部分によって識別されたノード上で実行されるスレッドは、カウンタをインクリメントさせる優先度が他のスレッドよりも高くなり得る。一部の実施形態において、カウンタデータ構造のノード識別子部分によって識別されたノード以外のノード上で実行されるスレッドは、リトライする前にカウンタをインクリメントする試みを遅らせ得る。これにより、単一のノード上のスレッドからの連続的な更新が促され得て、キャッシュミスが減少し、全体的な性能が向上する。一部の実施形態において、性急な(impatient)スレッドは、データ構造のノード識別子部分を更新するよう試み得て、または別個のアンチスタベーション変数(非枯渇変数:anti-starvation variable)を更新し得て(たとえば、スレッドが実行されているノードの識別子を書き込むことにより)、共用カウンタをインクリメントさせるプライオリティの要求を示す。
上記のように、統計カウンタの使用は、多くの大きなソフトウェアシステムにおいて非常に一般的である。共用統計カウンタへのアクセスは、ハードウェアおよび/またはソフトウェアのトランザクションメモリを支持するシステムにおいて実行されるものを含む、マルチスレッドアプリケーションの同時スレッド間の競合の原因となり得る。マルチコアマシンは、サイズが大きくなっており、シンプルなバスベースの設計からNUMAおよびCC−NUMAスタイルのメモリアーキテクチャへ移行されている。この移行に伴い、スケーラブル統計カウンタの必要性が増している。ここに記載のシステムおよび方法は、一部の実施形態において、スケーラブル統計カウンタを実施するために使用され得る。異なる実施形態において、ここに記載されるスケーラブル統計カウンタは、カウンタを複数のコンポーネントに分割して各コンポーネントにおける競合を減少させることにより、またはより低い頻度でカウンタを更新する技術を採用することにより、このスケーラビリティを実現する。両方のクラスの技術は、それらを使用する同時に実行されるアトミックトランザクション間のコンフリクトを大きく減少させ、成功の機会を向上させるとともに、スケーラブル性能の実現を助ける。
たとえば、一実施形態において、カウンタは32ビットを含み得て、そのうちの3つがNUMAノードIDを格納するために抜き取られ得て、カウンタの範囲が229−1に制限される。この例において、これらの3つのビットは、カウンタが最後にインクリメントされたノードのIDをカウンタと合わせて格納するために使用され得て、識別されたノード上での連続的なインクリメントを促すために他のノード上のスレッドがカウンタをインクリメントする試みを控えることが許容および/または要求される。他の実施形態において、カウンタデータ構造の異なるビット数が使用され得て、カウンタを更新するプライオリティを現在有するスレッドのノードの識別子が格納される。
この例において、aは、以下で説明するように、カウンタの正確性を制御する値のパラメータである。この例において、(分母にみられるように)n/aに1を加えることにより、関数が良好に定義され、n=0の時にゼロに等しくなることが保証される。加えて、log(1+1/a)で割ることにより、n=1の時に関数が1となることが保証される。言い換えると、この近似により、少なくとも0および1の値について正確な値をカウンタが含むことが保証される。この定義に続いて、カウンタに格納される値がvである時、表わされる正確なカウントは以下のとおりとなる。
ここでの様々な記載において、確率的カウンタに物理的に格納される値vは「格納値」と言われ得て、それが表わす値n(v)は、確率的カウンタによって「カウントされる」タイプの発生事象の数の「予測値」または「推測値」と言われ得る。言い換えると、モーリスカウンタは、確率的近似v(n)を格納し、nは正確なカウントである。この例において、この例が8ビットのみを使用するものと仮定されることから、格納値は整数でなければならない。結果として、格納値から正確なカウントを判定することはできない。このため、カウンタの値が高い格納値によって表されるように十分なインクリメントが発生したことを反映するためにカウンタに格納される値をいつインクリメントするかを知る確定的な方法はない。これらの問題に対処するために、モーリスカウンタアルゴリズムは、以下のように、カウンタが値vを含む時に、確率p(v)を用いて格納値をインクリメントする。
直観的に、これは、平均的に、モーリスカウンタに格納された値が、任意の値vが格納された後にn(v+1)−n(v)インクリメント演算からひとたび外れるとインクリメントされることを意味する。これにより、格納値によって予測される値が、正確なカウントに等しい期待値を有するランダム変数であることが保証される。各インクリメントに対する確率の演算を回避するために、この確率的カウンタを実施する既存のアルゴリズムは、所与の値aについてのすべての256通りの確率を事前に演算し、それらをルックアップテーブルに格納する。この例において、ルックアップテーブルは、各カウンタについて複製される必要はなく、各正確性クラスのみについて複製される(すなわち、aの各選択)。
1つの例において、a=30の正確性パラメータを選択することにより、約1/8のRSTDVがもたらされる。この例において、このaの選択により、カウンタはn(255)を表わし、これは約130,000である。8ビットのみを使用するカウンタ構造においてこれは強い効果を生むものとなり得るところ、これは近代のコンピュータシステムにおいて使用される統計カウンタの多くのタイプに対して(範囲および/または正確性の点において)満足なものとはなり得ない。以下により詳細に記載されるように、この手法は、一部の実施形態において、より大きな範囲および高い正確性を伴うスケーラブルカウンタを実施するために変更され得る。
この例において、仮数閾値について対応する式は、上記の疑似コード(および仮数閾値=2M)の18行目に見つけられる。なお、一部の実施形態において、BFP−DUPカウンタは、指数のインクリメント間の仮数に対するインクリメントの数を2の乗数に制限しないことから、この手法を使用することにより、この計算に基づいて仮数閾値を選択する柔軟性が提供され得て、正確性と性能のトレードオフに対するよりきめ細かい制御が得られる。一部の実施形態において(ここに記載される様々な実験においてモデル化されたものを含む)、RSTDVに対する1%の制限を反映するように正確性パラメータ値が設定され、結果として仮数閾値が7500に設定される。
Claims (16)
- 方法であって、
複数の計算ノードによって実行され、前記計算ノードの各々は少なくとも1つのプロセッサコアとメモリとを含み、方法は、
共用カウンタをインクリメントする1つ以上の演算を含むマルチスレッドアプリケーションの実行を始めるステップを備え、前記共用カウンタは、前記マルチスレッドアプリケーションの複数のスレッドによってアクセス可能なデータ構造として実施され、前記データ構造はカウント値部分とノード識別子部分とを含み、方法はさらに、
前記マルチスレッドアプリケーションの所与のスレッドにより、前記共用カウンタを標的としたインクリメント演算を開始するステップと、
前記データ構造の前記ノード識別子部分に格納された値に少なくとも基づいて、前記インクリメント演算を実行する、または前記インクリメント演算の実行を遅らせるよう試みるかを判定するステップとを備え、
前記データ構造の前記ノード識別子部分に格納された前記値は、前記複数の計算ノードのうちの特定の1つにおける1つ以上のスレッドが、前記共用カウンタをインクリメントするプライオリティを有するかを示す、方法。 - 前記データ構造の前記ノード識別子部分に格納された前記値は、最も新しく前記共用カウンタをインクリメントしたスレッドが実行された前記複数の計算ノードのうちの前記特定の1つを識別し、
前記識別された計算ノード上で実行されるスレッドのインクリメント演算は、前記複数の計算ノードのうちの他のノード上で実行されるスレッドのインクリメント演算よりも高い優先度を有し、
前記判定するステップは、前記データ構造の前記ノード識別子部分に格納された前記値が、前記所与のスレッドが実行されるノード以外の計算ノードを示すか否かを判定することを含む、請求項1に記載の方法。 - 前記判定するステップは、さらに、前記共用カウンタに関連付けられるアンチスタベーション変数に基づいて、前記インクリメント演算を実行する、または前記インクリメント演算の実行を遅らせるよう試みるかを判定することを含み、
前記アンチスタベーション変数は、前記複数の計算ノードのうちの特定の1つにおける1つ以上のスレッドが、前記共用カウンタをインクリメントするプライオリティを要求したかを示し、
前記判定するステップは、前記アンチスタベーション変数が、前記所与のスレッドが実行されるノード以外の計算ノードのスレッドによって前記共用カウンタをインクリメントするプライオリティが要求されたことを示す否かを判定することを含む、請求項1に記載の方法。 - インクリメント演算を行なうよう試みることは、前記データ構造の前記カウント値部分に格納された値をインクリメントし、単一のアトミック演算を使用して、前記データ構造の前記ノード識別子部分に、前記所与のスレッドが実行される前記計算ノードの識別子を格納するよう試みることを含む、請求項3に記載の方法。
- 前記判定するステップは、前記データ構造の前記ノード識別子部分の前記値が、前記複数の計算ノード上のスレッドのいずれも前記共用カウンタをインクリメントするプライオリティを有さないことを示す、または前記共用カウンタをインクリメントするプライオリティを要求しなかったことを示すと判定することを含み、
前記データ構造の前記カウント値部分に格納された値をインクリメントし、前記所与のスレッドが実行される前記計算ノードの識別子を前記データ構造の前記ノード識別子部分に格納する前記試みは、前記データ構造の前記ノード識別子部分に値を書き込むことなく、前記データ構造の前記カウント値部分をインクリメントする試みが1回以上失敗したことに応答して行なわれる、請求項4に記載の方法。 - 前記所与のスレッドが実行される前記計算ノード以外の前記複数の計算ノードのうちの特定の1つにおける1つ以上のスレッドが、前記共用カウンタをインクリメントするプライオリティを有する、または前記共用カウンタをインクリメントするプライオリティを要求したことを判定することに応答し、
前記インクリメント演算の実行を遅らせることと、
前記遅れに続いてインクリメント演算を行なうよう試みることとをさらに備える、請求項3〜5のいずれか1項に記載の方法。 - 前記所与のスレッドが実行される前記複数の計算ノードのうちの1つのスレッドが前記共用カウンタをインクリメントするプライオリティを有する、もしくは前記共用カウンタをインクリメントするプライオリティを要求したこと、または前記複数の計算ノードのいずれのスレッドも前記共用カウンタをインクリメントするプライオリティを有さない、もしくは前記共用カウンタをインクリメントするプライオリティを要求しなかったことを判定することに応答して、遅れなくインクリメント演算を行なうよう試みることをさらに備える、請求項3〜6のいずれか1項に記載の方法。
- 前記データ構造の前記ノード識別子部分に格納された前記値が前記所与のスレッドが実行されるノード以外の計算ノードを示すとの判定に応答して、前記所与のスレッドが、前記所与のスレッドが実行される前記計算ノードの識別子を、前記共用カウンタをインクリメントするプライオリティについての要求を示すために前記アンチスタベーション変数に格納することをさらに備える、請求項3〜7のいずれか1項に記載の方法。
- 前記格納に続き、前記所与のスレッドが実行される前記計算ノード上で実行されるスレッドが遅れなくインクリメント演算を行なうよう試みることをさらに備える、請求項8に記載の方法。
- 前記複数の計算ノード上のスレッドはいずれも前記共用カウンタをインクリメントするプライオリティを有さない、または前記共用カウンタをインクリメントするプライオリティを要求しなかったことを示すために、初期もしくはデフォルト値を前記データ構造の前記ノード識別子部分に格納することをさらに備え、
前記格納は、前記マルチスレッドアプリケーションの初期化時、周期的、または前記共用カウンタの競合の減少に応答して行なわれる、請求項3〜9のいずれか1項に記載の方法。 - システムであって、
複数の計算ノードを備え、各計算ノードは、マルチスレッドを集合的に支持する1つ以上のプロセッサコアと、プログラム命令を格納するメモリとを備え、前記プログラム命令が1つ以上の計算ノード上で実行されると、前記1つ以上の計算ノードは、
共用カウンタをインクリメントする1つ以上の演算を含むマルチスレッドアプリケーションの実行を始め、前記共用カウンタは、前記複数の計算ノード上で実行される前記マルチスレッドアプリケーションの複数のスレッドによってアクセス可能であるデータ構造として実施され、前記データ構造はカウント値部分とノード識別子部分とを含み、前記1つ以上の計算ノードはさらに、
前記マルチスレッドアプリケーションの所与のスレッドにより、前記共用カウンタを標的としたインクリメント演算を開始し、
前記データ構造の前記ノード識別子部分に格納された値に少なくとも基づいて、前記インクリメント演算または前記インクリメント演算の遅延を行なうよう試みるかを判定し、
前記データ構造の前記ノード識別子部分に格納された前記値は、前記複数の計算ノードのうちの特定の1つにおける1つ以上のスレッドが、前記共用カウンタをインクリメントするプライオリティを有するかを示す、システム。 - 前記データ構造の前記ノード識別子部分に格納された前記値は、最も新しく前記共用カウンタをインクリメントしたスレッドが実行された前記複数の計算ノードのうちの前記特定の1つを識別し、
前記識別された計算ノード上で実行されるスレッドのインクリメント演算は、前記複数の計算ノードのうちの他のノード上で実行されるスレッドのインクリメント演算よりも高い優先度を有し、
前記判定することは、前記データ構造の前記ノード識別子部分に格納された前記値が、前記所与のスレッドが実行されるノード以外の計算ノードを示すか否かを判定することを含む、請求項11に記載のシステム。 - 前記判定することは、前記共用カウンタに関連付けられるアンチスタベーション変数に基づいて、前記インクリメント演算を実行する、または前記インクリメント演算の実行を遅らせるよう試みるかをさらに判定することを含み、
前記アンチスタベーション変数は、前記複数の計算ノードのうちの特定の1つにおける1つ以上のスレッドが、前記共用カウンタをインクリメントするプライオリティを要求したかを示し、
前記プログラム命令が前記1つ以上の計算ノード上で実行されると、前記1つ以上の計算ノードはさらに、
前記所与のスレッドが実行される前記計算ノード以外の前記複数の計算ノードのうちの特定の1つにおける1つ以上のスレッドが、前記共用カウンタをインクリメントするプライオリティを有する、または前記共用カウンタをインクリメントするプライオリティを要求したことを判定することに応答し、
前記インクリメント演算の実行を遅らせ、
前記遅れに続いてインクリメント演算を行なうよう試みる、請求項11または12に記載のシステム。 - 前記プログラム命令が前記1つ以上の計算ノード上で実行されると、前記1つ以上の計算ノードはさらに、
前記所与のスレッドが実行される前記複数の計算ノードのうちの1つのスレッドが前記共用カウンタをインクリメントするプライオリティを有する、もしくは前記共用カウンタをインクリメントするプライオリティを要求したこと、または前記複数の計算ノードのいずれのスレッドも前記共用カウンタをインクリメントするプライオリティを有さない、もしくは前記共用カウンタをインクリメントするプライオリティを要求しなかったことを判定することに応答して、遅れなくインクリメント演算を行なうよう試みる、請求項13に記載のシステム。 - 前記プログラム命令が前記1つ以上の計算ノード上で実行されると、前記1つ以上の計算ノードはさらに、
前記データ構造の前記ノード識別子部分に格納された前記値が前記所与のスレッドが実行されるノード以外の計算ノードを示すとの判定に応答して、前記所与のスレッドが、前記所与のスレッドが実行される前記計算ノードの識別子を、前記共用カウンタをインクリメントするプライオリティについての要求を示すために前記アンチスタベーション変数に格納し
前記格納に続き、前記所与のスレッドが実行される前記計算ノード上で実行されるスレッドが遅れなくインクリメント演算を行なうよう試みる、請求項13または14のいずれか1項に記載のシステム。 - コンピュータ読み取り可能プログラムであって、前記プログラムが1つ以上のコンピュータ上で実行されると、前記1つ以上のコンピュータは、
共用カウンタをインクリメントする1つ以上の演算を含むマルチスレッドアプリケーションの実行を始め、前記共用カウンタは、複数の計算ノード上で実行される前記マルチスレッドアプリケーションの複数のスレッドによってアクセス可能であるデータ構造として実施され、前記データ構造はカウント値部分とノード識別子部分とを含み、前記1つ以上のコンピュータはさらに、
前記マルチスレッドアプリケーションの所与のスレッドにより、前記共用カウンタを標的としたインクリメント演算を開始し、
前記データ構造の前記ノード識別子部分に格納された値に基づいて、前記インクリメント演算または前記インクリメント演算の遅延を行なうよう試みるかを判定し、
前記データ構造の前記ノード識別子部分に格納された前記値は、前記複数の計算ノードのうちの特定の1つにおける1つ以上のスレッドが、前記共用カウンタをインクリメントするプライオリティを有するかを示す、コンピュータ読み取り可能プログラム。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/722,817 | 2012-12-20 | ||
US13/722,817 US8918596B2 (en) | 2012-12-20 | 2012-12-20 | System and method for implementing NUMA-aware statistics counters |
PCT/US2013/076509 WO2014100395A1 (en) | 2012-12-20 | 2013-12-19 | System and method for implementing numa-aware statistics counters |
Publications (3)
Publication Number | Publication Date |
---|---|
JP2016502212A JP2016502212A (ja) | 2016-01-21 |
JP2016502212A5 JP2016502212A5 (ja) | 2017-01-19 |
JP6310943B2 true JP6310943B2 (ja) | 2018-04-11 |
Family
ID=49956416
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2015549709A Active JP6310943B2 (ja) | 2012-12-20 | 2013-12-19 | Numaアウェア統計カウンタを実施するシステムおよび方法 |
Country Status (5)
Country | Link |
---|---|
US (1) | US8918596B2 (ja) |
EP (1) | EP2936313B1 (ja) |
JP (1) | JP6310943B2 (ja) |
CN (1) | CN105190560B (ja) |
WO (1) | WO2014100395A1 (ja) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8446824B2 (en) * | 2009-12-17 | 2013-05-21 | Intel Corporation | NUMA-aware scaling for network devices |
WO2014074251A1 (en) | 2012-11-06 | 2014-05-15 | Coherent Logix, Incorporated | Multiprocessor programming toolkit for design reuse |
US9552223B2 (en) * | 2014-09-30 | 2017-01-24 | International Business Machines Corporation | Post-return asynchronous code execution |
US9477471B1 (en) * | 2015-07-07 | 2016-10-25 | Versa Networks, Inc. | Maintaining lock-free, high frequency, high performance counters in software |
US10616330B2 (en) * | 2016-01-26 | 2020-04-07 | Pure Storage, Inc. | Utilizing tree storage structures in a dispersed storage network |
CN108563511A (zh) * | 2018-02-28 | 2018-09-21 | 南京邮电大学 | 一种多线程计数操作控制方法 |
US11972261B2 (en) * | 2021-12-27 | 2024-04-30 | Advanced Micro Devices, Inc. | Hardware device for enforcing atomicity for memory operations |
Family Cites Families (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7366961B1 (en) * | 2000-01-24 | 2008-04-29 | Ati Technologies, Inc. | Method and system for handling errors |
US20030188300A1 (en) * | 2000-02-18 | 2003-10-02 | Patrudu Pilla G. | Parallel processing system design and architecture |
US6940852B1 (en) | 2000-12-26 | 2005-09-06 | Juniper Networks, Inc. | Probabilistic counter |
US6985984B2 (en) * | 2002-11-07 | 2006-01-10 | Sun Microsystems, Inc. | Multiprocessing systems employing hierarchical back-off locks |
US7765214B2 (en) | 2005-05-10 | 2010-07-27 | International Business Machines Corporation | Enhancing query performance of search engines using lexical affinities |
EP1783604A3 (en) * | 2005-11-07 | 2007-10-03 | Slawomir Adam Janczewski | Object-oriented, parallel language, method of programming and multi-processor computer |
EP1870813B1 (en) * | 2006-06-19 | 2013-01-30 | Texas Instruments France | Page processing circuits, devices, methods and systems for secure demand paging and other operations |
US8146066B2 (en) * | 2006-06-20 | 2012-03-27 | Google Inc. | Systems and methods for caching compute kernels for an application running on a parallel-processing computer system |
US8136104B2 (en) * | 2006-06-20 | 2012-03-13 | Google Inc. | Systems and methods for determining compute kernels for an application in a parallel-processing computer system |
US8443348B2 (en) * | 2006-06-20 | 2013-05-14 | Google Inc. | Application program interface of a parallel-processing computer system that supports multiple programming languages |
US8108844B2 (en) * | 2006-06-20 | 2012-01-31 | Google Inc. | Systems and methods for dynamically choosing a processing element for a compute kernel |
US8024708B2 (en) * | 2006-06-20 | 2011-09-20 | Google Inc. | Systems and methods for debugging an application running on a parallel-processing computer system |
US8381202B2 (en) * | 2006-06-20 | 2013-02-19 | Google Inc. | Runtime system for executing an application in a parallel-processing computer system |
US8375368B2 (en) * | 2006-06-20 | 2013-02-12 | Google Inc. | Systems and methods for profiling an application running on a parallel-processing computer system |
US8136102B2 (en) * | 2006-06-20 | 2012-03-13 | Google Inc. | Systems and methods for compiling an application for a parallel-processing computer system |
US8108659B1 (en) * | 2006-11-03 | 2012-01-31 | Nvidia Corporation | Controlling access to memory resources shared among parallel synchronizable threads |
US8151008B2 (en) * | 2008-07-02 | 2012-04-03 | Cradle Ip, Llc | Method and system for performing DMA in a multi-core system-on-chip using deadline-based scheduling |
JP5270268B2 (ja) * | 2008-09-05 | 2013-08-21 | インターナショナル・ビジネス・マシーンズ・コーポレーション | 共有データへの排他的アクセスを許すためのコンピュータ・システム、並びにその方法及びコンピュータ読み取り可能な記録媒体 |
JP2010140290A (ja) * | 2008-12-12 | 2010-06-24 | Panasonic Corp | マルチプロセッサシステム及びその排他制御の調停方法 |
JP2011129024A (ja) * | 2009-12-21 | 2011-06-30 | Renesas Electronics Corp | データ処理システム及びデータ処理方法 |
US8931088B2 (en) | 2010-03-26 | 2015-01-06 | Alcatel Lucent | Adaptive distinct counting for network-traffic monitoring and other applications |
JP5458030B2 (ja) * | 2011-01-20 | 2014-04-02 | 日本電信電話株式会社 | 並列カウント処理装置、通信装置、並列カウント処理方法、およびプログラム |
US20140040526A1 (en) * | 2012-07-31 | 2014-02-06 | Bruce J. Chang | Coherent data forwarding when link congestion occurs in a multi-node coherent system |
-
2012
- 2012-12-20 US US13/722,817 patent/US8918596B2/en active Active
-
2013
- 2013-12-19 EP EP13821300.4A patent/EP2936313B1/en active Active
- 2013-12-19 WO PCT/US2013/076509 patent/WO2014100395A1/en active Application Filing
- 2013-12-19 CN CN201380072254.8A patent/CN105190560B/zh active Active
- 2013-12-19 JP JP2015549709A patent/JP6310943B2/ja active Active
Also Published As
Publication number | Publication date |
---|---|
JP2016502212A (ja) | 2016-01-21 |
EP2936313A1 (en) | 2015-10-28 |
CN105190560B (zh) | 2018-12-11 |
EP2936313B1 (en) | 2019-09-25 |
CN105190560A (zh) | 2015-12-23 |
US8918596B2 (en) | 2014-12-23 |
WO2014100395A1 (en) | 2014-06-26 |
US20140181423A1 (en) | 2014-06-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6333848B2 (ja) | スケーラブル競合適応性を有する統計カウンタを実施するシステムおよび方法 | |
JP6341931B2 (ja) | 更新確率値を格納する共用確率的カウンタを実施するシステムおよび方法 | |
JP6310943B2 (ja) | Numaアウェア統計カウンタを実施するシステムおよび方法 | |
US10176057B2 (en) | Multi-lock caches | |
US8689221B2 (en) | Speculative thread execution and asynchronous conflict events | |
JP5137971B2 (ja) | スピン・ロックによりロッキング公平性及びロッキング性能の両方を達成する方法及びシステム | |
US8438568B2 (en) | Speculative thread execution with hardware transactional memory | |
US8341321B2 (en) | Managing a resource lock | |
US9619303B2 (en) | Prioritized conflict handling in a system | |
US9229869B1 (en) | Multi-lock caches | |
US10929201B2 (en) | Method and system for implementing generation locks | |
CN106415512B (zh) | 存储器管理算法的动态选择 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20161201 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20161201 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20171030 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20171107 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20180202 |
|
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: 20180220 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20180319 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6310943 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |