JP6563485B2 - 複数のスレッドを実行するデータ処理装置における共有リソース - Google Patents
複数のスレッドを実行するデータ処理装置における共有リソース Download PDFInfo
- Publication number
- JP6563485B2 JP6563485B2 JP2017512043A JP2017512043A JP6563485B2 JP 6563485 B2 JP6563485 B2 JP 6563485B2 JP 2017512043 A JP2017512043 A JP 2017512043A JP 2017512043 A JP2017512043 A JP 2017512043A JP 6563485 B2 JP6563485 B2 JP 6563485B2
- Authority
- JP
- Japan
- Prior art keywords
- thread
- threads
- lock
- instruction
- program 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
- 238000012545 processing Methods 0.000 title claims description 62
- 230000006870 function Effects 0.000 claims description 45
- 230000004044 response Effects 0.000 claims description 25
- 230000004888 barrier function Effects 0.000 claims description 13
- 230000008859 change Effects 0.000 claims description 10
- 238000003672 processing method Methods 0.000 claims description 5
- 238000000034 method Methods 0.000 description 27
- 230000008569 process Effects 0.000 description 10
- 230000007246 mechanism Effects 0.000 description 5
- 238000012544 monitoring process Methods 0.000 description 5
- 238000013459 approach Methods 0.000 description 4
- 230000000694 effects Effects 0.000 description 3
- 238000010586 diagram Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000008685 targeting Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000011112 process operation Methods 0.000 description 1
- 230000002250 progressing effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Classifications
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
- G06F9/30087—Synchronisation or serialisation instructions
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
- G06F9/3009—Thread control instructions
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3887—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
-
- 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
-
- 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/524—Deadlock detection or avoidance
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Executing Machine-Instructions (AREA)
- Computer And Data Communications (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Description
スレッドの部分集合の選択されたスレッドを選び出し、且つ、汎用プログラム・カウンタを選択されたスレッドに関連するスレッド・プログラム・カウンタに設定するステップであって、汎用プログラム・カウンタが、スレッドの部分集合について実行されるべき命令ストリーム内の1つの命令を特定する、ステップと、
選択されたスレッドを含むスレッドの部分集合の1つ又は複数について、汎用プログラム・カウンタによって特定された命令を実行するステップと
を含み、
スレッドの部分集合が、スレッドの部分集合のどれが共有リソースへの排他的アクセスを有するかを追跡する、少なくとも1つのロック・パラメータに関連しており、
少なくとも1つのロック・パラメータが、スレッドがそのスレッドについて実行された第1の命令に応答して共有リソースへの排他的アクセスを獲得していることを示すように変更され、且つ、スレッドがそのスレッドについて実行された第2の命令に応答して共有リソースへの排他的アクセスをもはや有してないことを示すように変更され、
セレクタが、少なくとも1つのロック・パラメータに基づいて、選択されたスレッドを選び出すように構成されるデータ処理方法が提供される。
複数のスレッドの少なくとも部分集合について実行される、命令ストリーム内の1つの命令を特定する汎用プログラム・カウンタ手段であって、部分集合内の各スレッドが、命令ストリーム内の1つの命令を特定するための関連するスレッド・プログラム・カウンタ手段を有する汎用プログラム・カウンタ手段と、
スレッドの部分集合の選択されたスレッドを選び出し、且つ、汎用プログラム・カウンタ手段を選択されたスレッドに関連するスレッド・プログラム・カウンタ手段に設定する選択手段と、
選択されたスレッドを含むスレッドの部分集合の1つ又は複数について、汎用プログラム・カウンタ手段によって特定された命令を実行する、プロセッサ手段と
を備え、
スレッドの部分集合が、スレッドの部分集合のどれが共有リソースへの排他的アクセスを有するかを追跡する、少なくとも1つのロック・パラメータに関連しており、
プロセッサ手段が、スレッドがそのスレッドについて実行された第1の命令に応答して共有リソースへの排他的アクセスを獲得していることを示すように少なくとも1つのロック・パラメータを変更し、且つ、スレッドがそのスレッドについて実行された第2の命令に応答して共有リソースへの排他的アクセスをもはや有していないことを示すように少なくとも1つのロック・パラメータを変更するためのものであり、
選択手段が、少なくとも1つのロック・パラメータに基づいて選択されたスレッドを選び出すためのものであるデータ処理装置が提供される。
・群内のいずれかのスレッドが1つ又は複数の共有リソースをロックしているかどうかを示すロック設定フラグ500
・群のどのスレッドが1つ又は複数の共有リソースをロックしているかを示すロック所有者パラメータ502
・いくつのリソースが、ロック所有者パラメータ502によって示されたロック所有スレッドによってロックされているかを示すロック・カウント・パラメータ504
いくつかの実例では、ロック設定フラグ500は省かれてもよく、その代わりに、ロック所有者パラメータ502又はロック・カウント・パラメータ504が、スレッドがロックを保持しているか否かを知らせるために使用され得る。たとえば、ロック・カウント・パラメータがゼロである場合、これがロックを保持しているスレッドがないことの知らせであり得、ロック・カウント・パラメータが非ゼロ値を有する場合、これがスレッドがロックを保持していることの知らせであり得る。あるいは、ロック所有者パラメータ502は、スレッドの1つがロックを保持している場合、そのスレッドに対応する値を有することができ、ロックを保持しているスレッドがない場合、スレッドのいずれにも対応しない値を有することができ、それによって、これが、ロックが設定されているか否かを効果的に示すことができる。しかしながら、ロックが設定されているか否かを示す別個のロック設定フラグ500を提供することは、たとえば、ロック設定フラグ500が、ロック所有者パラメータ502又はロック・カウント値504に対応するマルチ・ビット値よりも、確認するのにより早く且つエネルギー効率がよいシングル・ビットを含み得ることから、時には有用であり得る。
ライン0:ロッキング・シーケンスの開始を表すラベルで、プロセッサにおける何の特定の動作を引き起こさない。
ライン1:inc_lock_countは、ロッキング特権(スレッドがリソースに対して、1つ又は複数のロックを設定する権利)を要求する命令である。この命令は、群内の1つのスレッドについてのみ、成功のうちに実行され得る。これにより、この命令に引き続いて、1つのスレッドが(このスレッドのプログラム・カウンタを次の命令にインクリメントすることで)次の命令に進むことができる一方、他のスレッドは、この命令に失敗する(それによって、それらのスレッド・プログラム・カウンタは、それを成功のうちに実行するまで、同じ命令inc_lock_countに留まる)。inc_lock_countが成功のうちに実行されると、スレッドがロッキング特権を保持していることを示すためにロック設定フラグ500を設定し、現在のスレッドの識別を示すためにロック所有者パラメータ502を設定し、さらにロック・カウント504をインクリメントする。
ライン2:ロッキング特権を有するスレッドがロックを得ることができなかった場合に分岐する先であるラベルretry_lock。
ライン3〜5:図4のライン1〜3と同じで、別のプロセス(たとえば、現在のスレッドの群の外のスレッド、又はマルチプロセッサ・システムにおける異なるプロセッサ上で実行されるプロセスなど)が、レジスタx19内のアドレスによって特定されたリソースに対して、すでにロックを得ているか否かを確認する。
ライン6:x19内で特定されたアドレスに対して別のプロセスがロックを保持している場合にライン10〜12における「バックオフ」シーケンスに分岐する、条件付き分岐。
ライン7〜8:図4のライン5及び7と同じ。レジスタx19内のアドレスに対してロックを設定するストア排他命令、及びストア排他命令が失敗した場合にライン2に後方分岐する条件付き分岐。図4のライン6とは異なり、図8においてロック・カウントがライン1ですでにインクリメントされていることから、ロックが成功のうちに取得された場合にロック・カウントをインクリメントする条件付き命令はない。
ライン9:ロックが成功のうちに取得されたとき、ロックされたリソースを使用して何かを行うためにライン13に分岐する。
ライン10:レジスタx19内のアドレスによって特定されたリソースに対するロックがすでに設定されている場合に、ロッキング特権を放棄するためのバックオフ・シーケンスの開始を表すラベル「backoff_lock」。ロッキング特権を放棄することによって、レジスタx19のそのバージョンにある異なるアドレスを有し得る別のスレッドが、そのロックを成功のうちに取得し、進行することが可能であり得る。
ライン11:ロック・カウント504をデクリメントする。この結果によりロック・カウント504がゼロになるとロック設定フラグ500も消去し、別のスレッドがロッキング特権を得ることができる。ライン11の後、同じ群の他のスレッドがロックを使用したその処理を終了し、且つロックを解放する時間を許すために、スレッドはしばらく待機することができる。
ライン12:ロックの取得を再度試みるために、ライン0におけるロッキング・シーケンスの開始に後方分岐する。
ライン13:ロックが成功のうちに取得された場合に実行されるシーケンスの開始を表すラベル「lock_acquired」。これに続いて、任意の個数の命令がロックされたリソースを使用して実行され得る。
ライン14:ロックされたリソースを使用して処理が完了すると、アンロッキング・シーケンスを開始する。
ライン15〜17:この場合には、dec_lock_count命令が実行され、その結果としてロック・カウント504がゼロになるとロック設定フラグ500が消去されることを除き、ロックを放棄する図4のライン10〜12と同じ。
Claims (27)
- 複数のスレッドを実行するように構成されたデータ処理装置であって、
前記複数のスレッドの少なくとも部分集合について実行される、命令ストリーム内の1つの命令を特定する汎用プログラム・カウンタであって、前記部分集合内の各スレッドが、前記命令ストリーム内の1つの命令を特定するための関連するスレッド・プログラム・カウンタを有する汎用プログラム・カウンタと、
スレッドの前記部分集合の選択されたスレッドを選び出し、且つ、前記汎用プログラム・カウンタを前記選択されたスレッドに関連する前記スレッド・プログラム・カウンタに設定するように構成されたセレクタと、
前記選択されたスレッドを含むスレッドの前記部分集合の1つ又は複数について、前記汎用プログラム・カウンタによって特定された命令を実行するように構成されたプロセッサと
を備え、
スレッドの前記部分集合が、スレッドの前記部分集合のどれが共有リソースへの排他的アクセスを有するかを追跡する、少なくとも1つのロック・パラメータに関連しており、
前記プロセッサが、スレッドがそのスレッドについて実行された第1の命令に応答して前記共有リソースへの排他的アクセスを獲得していることを示すように前記少なくとも1つのロック・パラメータを変更し、且つ、前記スレッドがそのスレッドについて実行された第2の命令に応答して前記共有リソースへの排他的アクセスをもはや有していないことを示すように前記スレッドに関連する前記少なくとも1つのロック・パラメータを変更するように構成され、
前記セレクタが、前記少なくとも1つのロック・パラメータに基づいて前記選択されたスレッドを選び出すように構成される、データ処理装置。 - 前記プロセッサが、そのスレッドについて実行される少なくとも1つのロック命令を含むロッキング・シーケンスに応答して、前記共有リソースへの排他的アクセスを、スレッドに認めるように構成される、請求項1に記載のデータ処理装置。
- 前記ロッキング・シーケンスが、前記第1の命令を含まない、請求項2に記載のデータ処理装置。
- 前記プロセッサが、そのスレッドについて実行される少なくとも1つのアンロック命令を含むアンロッキング・シーケンスに応答して、スレッドのための前記共有リソースへの排他的アクセスを放棄するように構成される、請求項1から3のいずれか一項に記載のデータ処理装置。
- 前記アンロッキング・シーケンスが、前記第2の命令を含まない、請求項4に記載のデータ処理装置。
- 前記セレクタが、前記共有リソースへの排他的アクセスを有さないとして前記少なくとも1つのロック・パラメータによって示された第2のスレッドに優先して、前記共有リソースへの排他的アクセスを有するとして前記少なくとも1つのロック・パラメータによって示された第1のスレッドを、前記選択されたスレッドとして選び出すように構成される、請求項1から5のいずれか一項に記載のデータ処理装置。
- 前記セレクタが、スレッドの前記部分集合の各スレッドに関連する関数呼び出し深さパラメータに基づいて前記選択されたスレッドを選び出すように構成される、請求項1から6のいずれか一項に記載のデータ処理装置。
- 前記セレクタが、スレッドの前記部分集合の各スレッドに関連する前記スレッド・プログラム・カウンタに基づいて前記選択されたスレッドを選び出すように構成される、請求項1から7のいずれか一項に記載のデータ処理装置。
- 前記部分集合の各スレッドが、対応するロック・パラメータを有し、前記プロセッサが、スレッドがそのスレッドについて実行された第1の命令に応答して前記共有リソースへの排他的アクセスを獲得していることを示すように、前記スレッドに対応する前記ロック・パラメータを変更し、且つ、前記スレッドがそのスレッドについて実行された第2の命令に応答して前記共有リソースへの排他的アクセスをもはや有していないことを示すように、前記スレッドに対応する前記ロック・パラメータを変更するように構成される、請求項1から8のいずれか一項に記載のデータ処理装置。
- 前記プロセッサが、第2のスレッドが第2の共有リソースへの排他的アクセスを有している一方で、第1のスレッドに第1の共有リソースへの排他的アクセスを有することを許可するように構成される、請求項9に記載のデータ処理装置。
- 前記セレクタが、スレッドの前記部分集合の各スレッドの前記対応するロック・パラメータに基づいてスレッドの第1の集合を選択するように構成され、
前記セレクタが、関数呼び出し深さパラメータに基づいてスレッドの第2の集合を、スレッドの前記第1の集合の中から、選択するように構成され
前記セレクタが、スレッドの前記第2の集合の前記スレッドに関連する前記スレッド・プログラム・カウンタに基づいて、スレッドの前記第2の集合から、前記選択されたスレッドを選び出すように構成される、請求項9及び10のいずれか一項に記載のデータ処理装置。 - 前記少なくとも1つのロック・パラメータが、スレッドの前記部分集合の間で共有される共有ロック・パラメータと、スレッドの前記部分集合のいずれが共有リソースへの排他的アクセスを有するかを示すロック所有者パラメータとを含む、請求項1から8のいずれか一項に記載のデータ処理装置。
- 前記共有ロック・パラメータが、スレッドの前記部分集合のいずれかが共有リソースへの排他的アクセスを有するかどうかを示すロック・フラグを含む、請求項12に記載のデータ処理装置。
- 前記共有ロック・パラメータが、前記ロック所有者パラメータによって示された前記スレッドが排他的アクセスを有するリソースの数を示すロック・カウントを含む、請求項12及び13のいずれか一項に記載のデータ処理装置。
- 第1のスレッドが第1の共有リソースへの排他的アクセスを有する場合、前記プロセッサが、第2のスレッドが第2の共有リソースへの排他的アクセスを有することを防ぐように構成される、請求項12から14のいずれか一項に記載のデータ処理装置。
- 前記少なくとも1つのロック・パラメータがスレッドが共有リソースへの排他的アクセスを有することを示す場合、前記セレクタが、前記ロック所有者パラメータによって示された前記スレッドを前記選択されたスレッドとして選び出すように構成され、
前記少なくとも1つのロック・パラメータが共有リソースへの排他的アクセスを有するスレッドがないことを示す場合、前記セレクタが、関数呼び出し深さパラメータに基づいて、スレッドの前記部分集合の中からスレッドのさらなる部分集合を選択し、且つ、スレッドの前記さらなる部分集合の前記スレッドに関連する前記スレッド・プログラム・カウンタに基づいて、スレッドの前記さらなる部分集合の中から前記選択されたスレッドを選び出すように構成される、請求項12から15のいずれか一項に記載のデータ処理装置。 - 前記プロセッサが、前記第1の命令に応答して前記少なくとも1つのロック・パラメータをインクリメントするように構成され、
前記プロセッサが、前記第2の命令に応答して前記少なくとも1つのロック・パラメータをデクリメントするように構成される、請求項1から16のいずれか一項に記載のデータ処理装置。 - 前記少なくとも1つのロック・パラメータが、スレッドが排他的アクセスを有する共有リソースの数を示す、請求項17に記載のデータ処理装置。
- スレッドの前記部分集合の前記1つ又は複数が、前記選択されたスレッドの対応するスレッド・パラメータに一致する1つ又は複数の関連するスレッド・パラメータを有する前記スレッドを含み、前記1つ又は複数の関連するスレッド・パラメータが少なくとも前記スレッド・プログラム・カウンタを含む、請求項1から18のいずれか一項に記載のデータ処理装置。
- 前記命令が、マイクロ−オペレーションを含む、請求項1から19のいずれか一項に記載のデータ処理装置。
- 前記第1の命令と前記第2の命令とが、少なくとも1つの所定の命令セットにおいてNOOP命令として符号化される、請求項1から20のいずれか一項に記載のデータ処理装置。
- 前記プロセッサが、前記第1及び第2の命令の少なくとも1つに応答してさらなるオペレーションを行うように構成される、請求項1から21のいずれか一項に記載のデータ処理装置。
- 前記さらなるオペレーションが、前記共有リソースへの排他的アクセスを獲得するロッキング・シーケンスの一部であるオペレーションと、前記共有リソースへの排他的アクセスを放棄するアンロッキング・シーケンスの一部であるオペレーションと、前記共有リソースにアクセスするオペレーションと、前記スレッドが前記共有リソースへの排他的アクセスを有するかを決定するオペレーションと、比較及び交換オペレーションと、の1つ又は複数である、請求項22に記載のデータ処理装置。
- 前記共有リソースが、メモリ内のデータを含む、請求項1から23のいずれか一項に記載のデータ処理装置。
- 前記プロセッサが、前記共有リソースへの排他的アクセスを放棄する前に、前記メモリにメモリ・バリア・オペレーションを発行するように構成される、請求項24に記載のデータ処理装置。
- 複数のスレッドの部分集合について命令ストリームを実行するデータ処理方法であって、前記部分集合の各スレッドが前記命令ストリーム内の1つの命令を特定する関連するスレッド・プログラム・カウンタを有し、当該データ処理方法が、
スレッドの前記部分集合の選択されたスレッドを選び出し、且つ、汎用プログラム・カウンタを前記選択されたスレッドに関連する前記スレッド・プログラム・カウンタに設定するステップであって、前記汎用プログラム・カウンタが、スレッドの前記部分集合について実行されるべき命令ストリーム内の1つの命令を特定する、ステップと、
前記選択されたスレッドを含むスレッドの前記部分集合の1つ又は複数について、前記汎用プログラム・カウンタによって特定された命令を実行するステップと
を含み、
スレッドの前記部分集合が、スレッドの前記部分集合のどれが共有リソースへの排他的アクセスを有するかを追跡する、少なくとも1つのロック・パラメータに関連しており、
前記少なくとも1つのロック・パラメータが、スレッドがそのスレッドについて実行された第1の命令に応答して前記共有リソースへの排他的アクセスを獲得していることを示すように変更され、且つ、前記スレッドがそのスレッドについて実行された第2の命令に応答して前記共有リソースへの排他的アクセスをもはや有していないことを示すように変更され、
セレクタが、前記少なくとも1つのロック・パラメータに基づいて、前記選択されたスレッドを選び出すように構成される、データ処理方法。 - 複数のスレッドを実行するように構成されたデータ処理装置であって、
前記複数のスレッドの少なくとも部分集合について実行される、命令ストリーム内の1つの命令を特定する汎用プログラム・カウンタ手段であって、前記部分集合内の各スレッドが、前記命令ストリーム内の1つの命令を特定するための関連するスレッド・プログラム・カウンタ手段を有する汎用プログラム・カウンタ手段と、
スレッドの前記部分集合の選択されたスレッドを選び出し、且つ、前記汎用プログラム・カウンタ手段を前記選択されたスレッドに関連する前記スレッド・プログラム・カウンタ手段に設定する選択手段と、
前記選択されたスレッドを含むスレッドの前記部分集合の1つ又は複数について、前記汎用プログラム・カウンタ手段によって特定された命令を実行する、プロセッサ手段と
を備え、
スレッドの前記部分集合が、スレッドの前記部分集合のどれが共有リソースへの排他的アクセスを有するかを追跡する、少なくとも1つのロック・パラメータに関連しており、
前記プロセッサ手段が、スレッドがそのスレッドについて実行された第1の命令に応答して前記共有リソースへの排他的アクセスを獲得していることを示すように前記少なくとも1つのロック・パラメータを変更し、且つ、前記スレッドがそのスレッドについて実行された第2の命令に応答して前記共有リソースへの排他的アクセスをもはや有していないことを示すように前記少なくとも1つのロック・パラメータを変更するためのものであり、
前記選択手段が、前記少なくとも1つのロック・パラメータに基づいて前記選択されたスレッドを選び出すためのものである、データ処理装置。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB1415834.9A GB2529899B (en) | 2014-09-08 | 2014-09-08 | Shared Resources in a Data Processing Apparatus for Executing a Plurality of Threads |
GB1415834.9 | 2014-09-08 | ||
PCT/GB2015/052177 WO2016038328A1 (en) | 2014-09-08 | 2015-07-28 | Shared resources in a data processing appartus for executing a plurality of threads |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2017530455A JP2017530455A (ja) | 2017-10-12 |
JP6563485B2 true JP6563485B2 (ja) | 2019-08-21 |
Family
ID=51796341
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2017512043A Active JP6563485B2 (ja) | 2014-09-08 | 2015-07-28 | 複数のスレッドを実行するデータ処理装置における共有リソース |
Country Status (11)
Country | Link |
---|---|
US (1) | US10528350B2 (ja) |
EP (1) | EP3191955B1 (ja) |
JP (1) | JP6563485B2 (ja) |
KR (1) | KR102449957B1 (ja) |
CN (1) | CN106716348B (ja) |
GB (1) | GB2529899B (ja) |
IL (1) | IL250301B (ja) |
RU (1) | RU2685021C2 (ja) |
SG (1) | SG11201701158XA (ja) |
TW (1) | TWI695319B (ja) |
WO (1) | WO2016038328A1 (ja) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108021339B (zh) * | 2017-11-03 | 2021-05-04 | 网宿科技股份有限公司 | 一种磁盘读写的方法、设备以及计算机可读存储介质 |
CN108037680B (zh) * | 2017-12-14 | 2020-05-19 | 北京霍因数字科技有限公司 | 一种指令处理方法及装置 |
EP3588280B1 (en) * | 2018-06-25 | 2021-09-08 | ARM Limited | Handling load-exclusive instructions in apparatus having support for transactional memory |
CN109271260A (zh) * | 2018-08-28 | 2019-01-25 | 百度在线网络技术(北京)有限公司 | 临界区加锁方法、装置、终端及存储介质 |
CN109831585B (zh) * | 2019-02-22 | 2021-06-25 | 维沃移动通信有限公司 | 一种运行参数调整方法及移动终端 |
CN111352762A (zh) * | 2020-03-04 | 2020-06-30 | 恒生电子股份有限公司 | 一种进程访问确定方法和相关装置 |
CN113377492B (zh) * | 2020-03-10 | 2022-05-24 | 阿里巴巴集团控股有限公司 | 内存管理方法、装置、电子设备及计算机可读存储介质 |
CN112000019B (zh) * | 2020-07-24 | 2024-04-26 | 青岛海尔空调器有限总公司 | 用于共享设备指令控制的方法、装置及设备 |
CN111913810B (zh) * | 2020-07-28 | 2024-03-19 | 阿波罗智能技术(北京)有限公司 | 多线程场景下的任务执行方法、装置、设备和存储介质 |
CN115408178B (zh) * | 2022-10-31 | 2023-02-21 | 北京登临科技有限公司 | 用于保护对片上资源的访问的方法、介质和电子设备 |
Family Cites Families (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6598068B1 (en) * | 1996-01-04 | 2003-07-22 | Sun Microsystems, Inc. | Method and apparatus for automatically managing concurrent access to a shared resource in a multi-threaded programming environment |
US6357016B1 (en) * | 1999-12-09 | 2002-03-12 | Intel Corporation | Method and apparatus for disabling a clock signal within a multithreaded processor |
US7363474B2 (en) * | 2001-12-31 | 2008-04-22 | Intel Corporation | Method and apparatus for suspending execution of a thread until a specified memory access occurs |
US7015913B1 (en) * | 2003-06-27 | 2006-03-21 | Nvidia Corporation | Method and apparatus for multithreaded processing of data in a programmable graphics processor |
US7496918B1 (en) * | 2004-06-01 | 2009-02-24 | Sun Microsystems, Inc. | System and methods for deadlock detection |
US7765547B2 (en) * | 2004-11-24 | 2010-07-27 | Maxim Integrated Products, Inc. | Hardware multithreading systems with state registers having thread profiling data |
US8566827B2 (en) | 2005-10-27 | 2013-10-22 | International Business Machines Corporation | System and method of arbitrating access of threads to shared resources within a data processing system |
US20070124545A1 (en) * | 2005-11-29 | 2007-05-31 | Anton Blanchard | Automatic yielding on lock contention for multi-threaded processors |
US8683143B2 (en) * | 2005-12-30 | 2014-03-25 | Intel Corporation | Unbounded transactional memory systems |
US8453147B2 (en) | 2006-06-05 | 2013-05-28 | Cisco Technology, Inc. | Techniques for reducing thread overhead for systems with multiple multi-threaded processors |
US20080270732A1 (en) * | 2007-04-27 | 2008-10-30 | Weidong Cai | Adaptive arena assignment based on arena contentions |
US8140823B2 (en) * | 2007-12-03 | 2012-03-20 | Qualcomm Incorporated | Multithreaded processor with lock indicator |
TWI462011B (zh) * | 2007-12-28 | 2014-11-21 | Accton Technology Corp | 程序之執行緒群組管理方法 |
US8055856B2 (en) | 2008-03-24 | 2011-11-08 | Nvidia Corporation | Lock mechanism to enable atomic updates to shared memory |
US8166480B2 (en) * | 2008-07-29 | 2012-04-24 | International Business Machines Corporation | Reducing lock contention by adding a time slice to an active thread holding a lock |
US8312470B2 (en) * | 2009-12-22 | 2012-11-13 | International Business Machines Corporation | Recursive locking of a thread-shared resource |
US20120054394A1 (en) * | 2010-09-01 | 2012-03-01 | Alcatel-Lucent Usa Inc. | Fast Biased Locks |
JP5725162B2 (ja) | 2011-03-31 | 2015-05-27 | 富士通株式会社 | 排他制御方法、および排他制御プログラム |
CN104583942B (zh) * | 2012-06-15 | 2018-02-13 | 英特尔公司 | 乱序加载的基于锁的和基于同步的方法 |
US9229721B2 (en) | 2012-09-10 | 2016-01-05 | Qualcomm Incorporated | Executing subroutines in a multi-threaded processing system |
US9678897B2 (en) | 2012-12-27 | 2017-06-13 | Nvidia Corporation | Approach for context switching of lock-bit protected memory |
US9304940B2 (en) * | 2013-03-15 | 2016-04-05 | Intel Corporation | Processors, methods, and systems to relax synchronization of accesses to shared memory |
-
2014
- 2014-09-08 GB GB1415834.9A patent/GB2529899B/en active Active
-
2015
- 2015-07-28 US US15/505,714 patent/US10528350B2/en active Active
- 2015-07-28 WO PCT/GB2015/052177 patent/WO2016038328A1/en active Application Filing
- 2015-07-28 CN CN201580046904.0A patent/CN106716348B/zh active Active
- 2015-07-28 JP JP2017512043A patent/JP6563485B2/ja active Active
- 2015-07-28 SG SG11201701158XA patent/SG11201701158XA/en unknown
- 2015-07-28 EP EP15744324.3A patent/EP3191955B1/en active Active
- 2015-07-28 KR KR1020177008698A patent/KR102449957B1/ko active IP Right Grant
- 2015-07-28 RU RU2017110464A patent/RU2685021C2/ru active
- 2015-08-20 TW TW104127210A patent/TWI695319B/zh active
-
2017
- 2017-01-26 IL IL250301A patent/IL250301B/en active IP Right Grant
Also Published As
Publication number | Publication date |
---|---|
GB2529899A (en) | 2016-03-09 |
CN106716348A (zh) | 2017-05-24 |
TWI695319B (zh) | 2020-06-01 |
WO2016038328A1 (en) | 2016-03-17 |
RU2017110464A3 (ja) | 2019-02-07 |
US20170286107A1 (en) | 2017-10-05 |
KR20170051465A (ko) | 2017-05-11 |
SG11201701158XA (en) | 2017-03-30 |
IL250301A0 (en) | 2017-03-30 |
US10528350B2 (en) | 2020-01-07 |
GB201415834D0 (en) | 2014-10-22 |
KR102449957B1 (ko) | 2022-10-05 |
EP3191955A1 (en) | 2017-07-19 |
JP2017530455A (ja) | 2017-10-12 |
IL250301B (en) | 2020-08-31 |
RU2685021C2 (ru) | 2019-04-16 |
GB2529899B (en) | 2021-06-23 |
CN106716348B (zh) | 2021-05-18 |
TW201617859A (zh) | 2016-05-16 |
EP3191955B1 (en) | 2021-09-22 |
RU2017110464A (ru) | 2018-10-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6563485B2 (ja) | 複数のスレッドを実行するデータ処理装置における共有リソース | |
US8464261B2 (en) | System and method for executing a transaction using parallel co-transactions | |
EP0145889B1 (en) | Non-spinning task locking using compare and swap | |
US7685583B2 (en) | Obstruction-free mechanism for atomic update of multiple non-contiguous locations in shared memory | |
US8819352B2 (en) | Hybrid Transactional Memory (HybridTM) | |
US8190859B2 (en) | Critical section detection and prediction mechanism for hardware lock elision | |
US8627048B2 (en) | Mechanism for irrevocable transactions | |
JP2511588B2 (ja) | デ―タ処理ネットワ―ク、ロックを獲得させる方法及び直列化装置 | |
US9342380B2 (en) | System and method for implementing reader-writer locks using hardware transactional memory | |
US20060265373A1 (en) | Hybrid multi-threaded access to data structures using hazard pointers for reads and locks for updates | |
JP2002508564A (ja) | 実行パイプラインの外部に複数のプログラム・カウンタとトレース・バッファを有するプロセッサ | |
US10423467B2 (en) | Data processing apparatus and method for performing lock-protected processing operations for multiple threads | |
WO2015021855A1 (en) | Efficient task scheduling using locking mechanism | |
WO2006128891A2 (en) | Shared memory synchronization | |
US20230325194A1 (en) | In-core parallelisation in a data processing apparatus and method | |
US20030131168A1 (en) | Ensuring fairness in a multiprocessor environment using historical abuse recongnition in spinlock acquisition | |
CN108027727B (zh) | 内存访问指令的调度方法、装置及计算机*** | |
KR20100120133A (ko) | 멀티-프로세서 동기화를 활성화하는 방법 | |
US8977795B1 (en) | Method and apparatus for preventing multiple threads of a processor from accessing, in parallel, predetermined sections of source code | |
US8549043B2 (en) | Concurrent insertion of elements into data structures | |
Attiya et al. | Highly-concurrent multi-word synchronization | |
Cursaru | Improving the Dynamic Elimination-Combining Stack Implementation |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20180723 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20190328 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20190416 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20190620 |
|
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: 20190702 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20190724 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6563485 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 |