JP2019505039A - マルチスレッド処理を調整するためのハードウェアアクセスカウンタとイベント生成 - Google Patents

マルチスレッド処理を調整するためのハードウェアアクセスカウンタとイベント生成 Download PDF

Info

Publication number
JP2019505039A
JP2019505039A JP2018529224A JP2018529224A JP2019505039A JP 2019505039 A JP2019505039 A JP 2019505039A JP 2018529224 A JP2018529224 A JP 2018529224A JP 2018529224 A JP2018529224 A JP 2018529224A JP 2019505039 A JP2019505039 A JP 2019505039A
Authority
JP
Japan
Prior art keywords
synchronization component
hardware synchronization
state
thread
instruction
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
JP2018529224A
Other languages
English (en)
Other versions
JP2019505039A5 (ja
JP6966999B2 (ja
Inventor
ロー,マンキット
Original Assignee
ビバンテ コーポレーション
ビバンテ コーポレーション
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 ビバンテ コーポレーション, ビバンテ コーポレーション filed Critical ビバンテ コーポレーション
Publication of JP2019505039A publication Critical patent/JP2019505039A/ja
Publication of JP2019505039A5 publication Critical patent/JP2019505039A5/ja
Application granted granted Critical
Publication of JP6966999B2 publication Critical patent/JP6966999B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/3009Thread control instructions
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/52Indexing scheme relating to G06F9/52
    • G06F2209/521Atomic
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Executing Machine-Instructions (AREA)
  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)
  • Advance Control (AREA)

Abstract

コンピュータシステムは、ハードウェア同期コンポーネント(HSC)を含む。
複数の同時実行スレッドは、HSCの状態を更新する命令を発行する。複数のスレッドは、同じクロックサイクル内で状態を更新し得、スレッドは、HSCの状態を更新する前にHSCの制御を受ける必要がない。同じクロックサイクルの期間中に受信された状態を参照する命令が集約され、命令の数に従って状態が更新される。状態は、閾値条件に関して評価される。閾値条件が満たされる場合、HSCはイベントをプロセッサに出力する。次に、プロセッサは、イベントによって影響を受けたスレッドを識別し、そのイベントに基づいて所定の動作(例えば、スレッドのブロック、分岐、ブロック解除)をとる。
【選択図】図2

Description

本発明は、同時に実行する複数のスレッド間で動作を調整するためのシステムおよび方法に関する。
従来のコンピュータシステムでは、処理リソースを最大限に活用するために、複数の実行スレッド(threads of execution)が実行され得る。しかし、多くのアプリケーションでは、個別の実行スレッド間で調整が必要ある。これは、少数のスレッドについては、スレッド内で、他のスレッドと共有される複数のイベントを生成し、その後、これらイベントに基づいて適切な動作を実行することによって容易に実行される。しかし、このアプローチは、遅延と高い処理のオーバーヘッドを招く。
本明細書で記載されるシステムおよび方法は、スレッド間を調整するための改良されたアプローチを提供する。
本発明の効果が容易に理解されるように、上記に簡単に記述した本発明のより具体的な記述が、添付の図面に示される特定の実施形態を参照して提供される。これらの図面は、本発明の典型的な実施形態のみを示すものであり、したがって、その範囲を限定するものとみなされるべきではないと理解されたく、本発明は、添付の図面の使用を通して、さらなる具体性および詳細とともに記述および説明される。
本発明の実施形態に係る方法を実装するのに適したコンピュータシステムの概略ブロック図である。 本発明の一実施形態に係るハードウェアイベント生成を実装するための構成要素の概略ブロック図である。 本発明の一実施形態に係るイベント生成のためのハードウェアカウンタを更新する方法のプロセスフロー図である。 本発明の一実施形態に係るハードウェアカウンタに基づいてイベントを生成する方法のプロセスフロー図である。 本発明の一実施形態に係るハードウェア生成されたイベントを処理する方法のプロセスフロー図である。
本明細書内で概括的に記述および図示されている本発明の構成要素は、多種多様な異なる構成で配置および設計できることが容易に理解されるであろう。したがって、図面に表された本発明の実施形態の以下のより詳細な説明は、請求される本発明の範囲を限定する意図はではなく、単に本発明に係る現在考えられる実施形態の特定の例を表している。現在記述されている実施形態は、同様の部材が全体を通じて同様の数字で示されている図面を参照することで最も正しく理解されるであろう。
本発明に係る実施形態は、装置、方法、またはコンピュータプログラム製品として具体化され得る。したがって、本発明は、完全にハードウェアの実施形態、完全にソフトウェアの実施形態(ファームウェア、常駐ソフトウェア、マイクロコードなどを含む)、または、本明細書では包括的に「モジュール」または「システム」としてすべて参照され得るソフトウェアおよびハードウェアの態様を組み合わせた実施形態の形態をとってよい。さらに、本発明は、任意の有形的表現媒体内で具体化されるコンピュータプログラム製品の形態を取ってよく、こうした有形的表現媒体内で、コンピュータ使用可能プログラムコードが具体化される。
非一時的媒体を含む、1つまたは複数のコンピュータ使用可能媒体またはコンピュータ可読媒体の任意の組み合わせが利用され得る。例えば、コンピュータ可読媒体は、ポータブルコンピュータディスケット、ハードディスク、ランダムアクセスメモリ(RAM)デバイス、読み出し専用メモリ(ROM)デバイス、消去可能プログラマブル読み出し専用メモリ(EPROMまたはフラッシュメモリ)デバイス、ポータブルコンパクトディスク読み出し専用メモリ(CDROM)、光記憶デバイス、および磁気記憶デバイスのうちの1つまたは複数を含み得る。選ばれた実施形態では、コンピュータ可読媒体は、命令実行システム、装置、またはデバイスによって使用される、あるいはそれに関連して使用されるプログラムを含むこと、格納すること、通信すること、伝播すること、または転送することができる任意の非一時的媒体を含み得る。
本発明の操作を実行するためのコンピュータプログラムコードは、Java、Smalltalk、C++などのオブジェクト指向プログラミング言語、および"C"プログラミング言語または同様のプログラミング言語などの従来の手続き型プログラミング言語を含む、1つまたは複数のプログラミング言語の任意の組み合わせで記載され得る。こうしたプログラムコードは、その全体をスタンドアローンのソフトウェアパッケージとしてコンピュータシステム上で実行すること、スタンドアローンのハードウェアユニット上で実行すること、その一部をコンピュータからある程度の距離の離れたリモートコンピュータ上で実行することもでき、或いは、その全体をリモートコンピュータ又はリモートサーバ上で実行することもできる。後者の場合では、リモートコンピュータは、ローカルエリアネットワーク(LAN)またはワイドエリアネットワーク(WAN)を含む任意のタイプのネットワークを介してコンピュータに接続されてもよく、或いは、(例えば、インターネットサービスプロバイダを使用してインターネットを介して)外部コンピュータに接続されてもよい。
本発明の実施形態に係る方法、装置(システム)およびコンピュータプログラム製品のフローチャート図および/またはブロック図を参照して以下に本発明は記載される。フローチャート図および/またはブロック図の各ブロック、ならびにフローチャート図および/またはブロック図におけるブロックの組み合わせは、コンピュータプログラム命令またはコードによって実装できることが理解されよう。これらのコンピュータプログラム命令を、汎用コンピュータ、専用コンピュータ、または他のプログラム可能データ処理装置のプロセッサに提供して、マシンを製造することもでき、こうすることで、その命令が、コンピュータまたは他のプログラム可能データ処理装置のプロセッサを介して実行され、フローチャートおよび/またはブロック図のブロックまたは複数のブロックで指定された機能/動作を実装するための手段を作成する。
これらのコンピュータプログラム命令は、コンピュータまたは他のプログラム可能データ処理装置に特定の機能を行うように指示することができる非一時的コンピュータ可読媒体に格納することもでき、こうすることで、そのコンピュータ可読媒体に格納された命令が、フローチャートおよび/またはブロック図のブロックまたは複数のブロックで指定された機能/動作を実装する命令手段を含む製造品を製造する。
コンピュータプログラム命令を、コンピュータまたは他のプログラム可能データ処理装置にロードして、コンピュータまたは他のプログラム可能装置上で一連の操作ステップを実行させて、コンピュータまたは他のプログラム可能装置上で実行される命令が、フローチャートおよび/またはブロック図のブロックまたは複数のブロックで指定される機能/動作を実装するためのプロセスを提供するようにコンピュータ実装プロセスを生成してもよい。
図1は、例示的なコンピュータデバイス100を示すブロック図である。コンピュータデバイス100は、本明細書で論じられるものなどの様々な手順を実行するために使用され得る。コンピュータデバイス100は、サーバ、クライアント、または任意の他のコンピューティングエンティティ(computing entity)として機能することができる。コンピュータデバイスは、本明細書で論じるような様々なモニタリング機能を実行することができ、本明細書に記述するアプリケーションプログラムなどの1つまたは複数のアプリケーションプログラムを実行することができる。コンピュータデバイス100は、例えば、デスクトップコンピュータ、ノートブックコンピュータ、サーバコンピュータ、ハンドヘルドコンピュータ、タブレットコンピュータなどの多種多様なコンピュータデバイスのいずれかとすることができる。
コンピュータデバイス100は、1つまたは複数のプロセッサ102、1つまたは複数のメモリデバイス104、1つまたは複数のインタフェース106、1つまたは複数の大容量記憶デバイス108、1つまたは複数の入力/出力(I/O)デバイス、および表示デバイス130を含み、これらすべてはバス112に接続される。(1つまたは複数の)プロセッサ102は、(1つもしくは複数の)メモリデバイス104および/または(1つもしくは複数の)大容量記憶デバイス108に格納された命令を実行する1つまたは複数のプロセッサまたはコントローラを含む。(1つまたは複数の)プロセッサ102は、キャッシュメモリなどの様々な種類のコンピュータ可読媒体を含んでもよい。
(1つまたは複数の)メモリデバイス104は、揮発性メモリ(例えば、ランダムアクセスメモリ(RAM)114)および/または不揮発性メモリ(例えば、読み出し専用メモリ(ROM)116)などの様々なコンピュータ可読媒体を含む。(1つまたは複数の)メモリデバイス104はまた、フラッシュメモリなどの書き換え可能なROMを含んでもよい。
(1つまたは複数の)大容量記憶デバイス108は、磁気テープ、磁気ディスク、光ディスク、ソリッドステートメモリ(例えば、フラッシュメモリ)などの様々なコンピュータ可読媒体を含む。図1に示すように、具体的な大容量記憶デバイスの1つはハードディスクドライブ124である。(1つまたは複数の)大容量記憶デバイス108に様々なドライブを含めて、様々なコンピュータ可読媒体からの読み出しおよび/または書き込みを可能にしてもよい。(1つまたは複数の)大容量記憶デバイス108は、リムーバブルメディア126および/または非リムーバブルメディアを含む。
(1つまたは複数の)I/Oデバイス110は、データおよび/または他の情報がコンピュータデバイス100に入力されるか、またはコンピュータデバイス100から抽出されることを可能にする様々なデバイスを含む。例示的な(1つまたは複数の)I/Oデバイス110は、カーソル制御デバイス、キーボード、キーパッド、マイク、モニタまたは他の表示デバイス、スピーカー、プリンタ、ネットワークインタフェースカード、モデム、レンズ、CCDまたは他の画像キャプチャデバイスなどを含む。
表示デバイス130は、コンピュータデバイス100の1人または複数人のユーザに情報を表示することができる任意の種類のデバイスを含む。表示デバイス130の例は、モニタ、表示端末、ビデオ投影デバイスなどを含む。
グラフィックス・プロセッシングユニット(GPU)132が、(1つまたは複数の)プロセッサ102および/または表示デバイス130に接続されてよい。GPUは、コンピュータ生成された画像をレンダリングし、また、他のグラフィカル処理を実行するように動作可能であってよい。GPUは、(1つまたは複数の)プロセッサ102などの汎用プロセッサの機能の一部または全部を含み得る。GPUは、グラフィックス処理に特有の追加の機能を含んでもよい。GPUは、座標変換、シェーディング、テクスチャリング、ラスタライズ、およびコンピュータ生成された画像のレンダリングに役立つ他の機能に関連するハードコードされたグラフィックス機能、および/またはハードワイヤードのグラフィックス機能を含み得る。
(1つまたは複数の)インタフェース106は、コンピュータデバイス100が他のシステム、デバイス、またはコンピューティング環境と情報をやり取りすることを可能にする様々なインタフェースを含む。例示的な(1つまたは複数の)インタフェース106は、ローカルエリアネットワーク(LAN)、広域ネットワーク(WAN)、無線ネットワーク、およびインターネットへのインタフェースなどの任意の数の様々なネットワークインタフェース120を含む。他の(1つまたは複数の)インタフェースは、ユーザインタフェース118と周辺デバイスインタフェース122とを含む。(1つまたは複数の)インタフェース106はまた、1つまたは複数のユーザインタフェース要素118を含んでもよい。(1つまたは複数の)インタフェース106はまた、例えば、プリンタ、ポインティングデバイス(マウス、トラックパッドなど)、キーボードなどのためのインタフェースのような、1つまたは複数の周辺インタフェースを含んでもよい。
バス112は、(1つまたは複数の)プロセッサ102、(1つまたは複数の)メモリデバイス104、(1つまたは複数の)インタフェース106、(1つまたは複数の)大容量記憶デバイス108、および(1つまたは複数の)I/Oデバイス110が相互に通信することを可能にし、バス112に接続された他のデバイスまたは構成要素との通信も可能にする。バス112は、システムバス、PCIバス、IEEE1394バス、USBバスなどのいくつかの種類のバス構造のうちの1つまたは複数を表す。
説明のために、プログラムおよび他の実行可能なプログラム構成要素は、本明細書では個別のブロックとして示されているが、そのようなプログラムおよび構成要素は、様々な時間で、コンピュータデバイス100の異なる記憶構成要素内に存在し得、(1つまたは複数の)プロセッサ102によって実行されることが理解される。あるいは、本明細書に記載のシステムおよび手順は、ハードウェアで、またはハードウェア、ソフトウェア、および/またはファームウェアの組み合わせで実装されることもできる。例えば、1つまたは複数の特定用途向け集積回路(ASIC)を、本明細書で記載されるシステムおよび手順のうちの1つまたは複数を実行するようにプログラムすることができる。
図2を参照すると、処理デバイス102は、1つまたは複数のスレッド200を実行し得る。上述したように、コンピュータシステム100は、複数の処理デバイス102を含み得る。処理デバイス102のいずれか1つまたは処理デバイス102の組み合わせが、以下の説明において「処理デバイス」102に属する機能を実行し得る。スレッドは、処理デバイス102によって実行されるアプリケーションによってインスタンス化(instantiated)され得る。プロセッサは、従来の方式で、処理リソースを分散し、実行を1つのスレッド200から別のスレッドに切り替え得る。スレッド200は、ハードウェア同期コンポーネント(HSC)202に命令を発行し得る。HSC202は命令を受信し、その状態を更新する。HSC202の状態に基づいて、HSC202は、スレッドスケジューラ206にイベント204を出力し得る。スレッドスケジューラ206は、その後、1つまたは複数のプロセッサスレッド200の実行を改変し得る。例えば、スレッドスケジューラ206は、イベント204に応答して、スレッド200のうちの1つをブロック、ブロック解除、または分岐させ得る。
HSC202は、アグリゲータ208を含み得る。HSC202は、複数の状態を含み得、その各々は個別に扱われ得る。各状態は、状態を規定する1つまたは複数の値を含み得る。したがって、アグリゲータ208は、或る期間中(例えば、プロセッサ102、HSC202、バス112、または他の構成要素の1クロックサイクル)に受信される各状態の各値を参照する命令を集約し得る。
各状態の各値に対して、カウンタ210a〜210bは更新され得る。具体的には、各カウンタ210a〜210bは、1クロックサイクル中の個々の状態およびその状態の値を参照する命令の数をカウントし得る。
例えば、1クロックサイクル毎に1度などのように周期的に、関係関数(relation function)212が各状態に対して実行され得る。関係関数212は、各状態に対する出力値を生成し得る。出力値は、次に、閾値比較器214に入力される。閾値比較器は、別の入力として閾値216をとる。閾値216は、各状態について同じであってもよく、或いは1つまたは複数の状態が異なる閾値216を有してもよい。
ある状態に対して閾値216によって指定された閾値条件を、出力値が満たすと閾値比較器214が判定した場合、イベント204が生成される。いくつかの実施形態では、閾値比較器214は、生成されたイベント204の記録を保持し、閾値条件が満たされない場合にイベントをクリア(消去)し得る。例えば、関係関数212および比較器214の実行の繰り返しにより、閾値条件216が満たされることに起因して或る状態に対してイベント204が生成され得る。次の繰り返しでは、関係関数212の出力値は、もはや閾値条件216を満たさない場合もある。したがって、閾値条件216がもはや満たされないことの検出に応答して、この事実を示すイベント204が生成されてよい。
上述したように、HSCは、複数の状態を実装し得る。それに応じて、1つまたは複数のMUX218a〜218bは、複数の状態を評価するために同じ回路が使用され得るように、各状態のカウンタ210a〜210bの値を関係関数212および比較器214に選択的に結び付け得る。
図2の図示された構成要素は、同時に実行するスレッド間で任意のタイプの同期を実行するために使用され得る。上記の説明から明らかなように、複数のスレッドは、別のスレッドがHSC202の状態の更新を完了するのをそれぞれが待たなければならないというよりもむしろ、HSC202の状態のうちの1つを更新し得る。
一例では、ある状態が、先入れ先出しバッファを実装し得る。この例では、カウンタ210aはFIFOバッファへの書き込み命令をカウントし得、カウンタ210bはFIFOバッファへの読み出し命令をカウントし得る。関係関数212は、カウンタ210aからカウンタ210bの値を減算し得る。比較器214は、1つまたは複数の閾値に関してこの差分を評価し得る。この差分がゼロの場合、FIFOバッファは空である。この差分が第1の閾値よりも小さい場合、FIFOバッファは空に近い状態にある。この差分がFIFOバッファのサイズと等しい場合、FIFOバッファは満杯である。この差分が第1の閾値よりも高い第2の閾値(例えば、バッファサイズの90%)を上回る場合、FIFOバッファは満杯に近い状態にある。したがって、閾値216は、ほぼ空の状態を示す低い値とほぼ満杯の状態を示す高い値とを指定し得る。次に、閾値比較器214は、上記の条件のいずれかを差分が満たすことに基づいて、一部または全て空の複数のイベント、ほぼ空の複数のイベント、満杯の複数のイベント、およびほぼ満杯の複数のイベントを生成し得る。
他の例では、状態は単一の値を含み得、その値が閾値条件を満たすこと(例えば、閾値を上回る又は下回る)応じてイベントが生成される。
図3を参照すると、図示された方法300は、HSC202によって実行され得る。方法300は、上記のように1クロックサイクルごとに一度実行されてよい。方法300は、HSC202の各状態の各値に対して実行され得る。方法300は、1クロックサイクル中にゼロ個以上の命令を受信するステップ(302)と、そのサイクル中に受信された命令の数を集計する(例えば、カウントする)ステップ(304)と、ステップ304における命令の数だけカウンタをインクリメントすることによってなど、各状態の各値ごとにカウンタを更新するステップ(306)と、を含む。
図4を参照すると、図示された方法400は、HSC202によって実行され得る。方法400は、1クロックサイクルごとに、またはNクロックサイクル(Nは1より大きい)ごとに1度実行され得る。方法400は、HSC202の各状態に対して実行され得る。いくつかの実施形態では、方法400は、そのクロックサイクル中または直前のクロックサイクル中に状態が変化した場合にのみ、その状態に対して実行される。
方法400は、状態の値に対して関係関数を実行するステップ(402)を含む。関係関数は、或るカウンタの値を別のカウンタの値から減算すること、カウンタ値を合計すること、カウンタ値を掛け合わせること、または何らかの任意の関数にカウンタ値を入力すること、を含み得る。次に、関係関数の出力は、閾値条件と比較される(404)。この条件が満たされると判定される(406)場合、閾値条件が満たされることを示すイベントが出力される。そのように判定されない場合、方法400は終了する。いくつかの実施形態では、状態に対して複数の閾値条件が規定され得る。したがって、生成されたイベント(408)は、満たされる閾値条件を参照し得る。閾値条件は、関数値の出力が閾値よりも大きいこと、又は小さいこと、或いは複数の閾値の範囲内に位置することを含み得る。
図5を参照すると、図示された方法500は、処理デバイス102或いは処理デバイス102に接続され、及びスレッドスケジューリング機能を実行するようにプログラムされた構成要素によって実行され得る。方法500は、イベントがHSC202によって生成されているか否かを評価するステップ(502)を含み得る。生成されていれば、1つまたは複数の影響を受けたスレッドが識別され得る(504)。例えば、アプリケーションは、HSC状態をインスタンス化し得、更に、そのアプリケーションの1つまたは複数のスレッドをスレッドスケジューラ206に登録して、そのHSC状態からイベントを受け取り得る。そのアプリケーションは、イベントに応答してスレッドスケジューラ206によって実行される動作をさらに指定し得る。例えば、そのアプリケーションは、HSC状態に対して生成された特定のイベントに応答して、スレッドがブロックされるべきか、または異なるスレッドに分岐することを指定し得る。
したがって、イベントによって影響を受けたスレッドを識別するステップ(504)は、そのイベントが生成および/または登録されたHSC状態に対応するものとしてアプリケーションによって登録されたスレッドを識別して、ステップ502で受信されたイベントのイベントタイプを受信することを含み得る。次に、方法500は、イベント(例えば、ブロック、ブロック解除、分岐、終了など)に応答して実行される動作を識別するステップ(506)を含み得る。実行されることになる動作は、特定の状態の特定のイベントに対するスレッドを登録するときに、アプリケーションによってスレッドスケジューラへと指定され得る。したがって、指定された動作は、ステップ506においてスレッドスケジューラによって抽出され得る。次に、指定された動作が実行される(508)。したがって、影響を受けた各スレッドに対して、指定された動作に従って、ブロック、ブロック解除、分岐、終了などが実行され得る。
本発明は、その趣旨または本質的な特徴から逸脱することなく、他の特定の形態で実施され得る。記載された実施形態は、すべての点において、例示的なものであり、限定的なものではないとみなされるべきである。したがって、本発明の範囲は、前述の説明によってではなく、添付の特許請求の範囲によって示される。特許請求の範囲と均等の意味および範囲内に入るすべての変更は、その範囲内に含まれるべきである。

Claims (20)

  1. 実行可能なデータを格納するメモリデバイスを提供するステップと、
    前記メモリデバイスに接続され、前記実行可能なデータを抽出して実行するように動作可能な処理デバイスを提供するステップと、
    前記処理デバイスに動作可能に接続されたハードウェア同期コンポーネントを提供するステップと、
    前記処理デバイスによって複数の実行スレッドを同時に実行するステップと、
    前記複数の実行スレッドによって、命令を前記ハードウェア同期コンポーネントに発行するステップと、
    前記ハードウェア同期コンポーネントによって、前記命令に応答して前記ハードウェア同期コンポーネントの状態を更新するステップと、
    前記ハードウェア同期コンポーネントによって、前記ハードウェア同期コンポーネントの前記状態が閾値条件を満たすと判定するステップと、
    前記ハードウェア同期コンポーネントの前記状態が前記閾値条件を満たすと判定したことに応答して、前記ハードウェア同期コンポーネントによってイベントを前記処理デバイスに出力するステップと、
    前記ハードウェア同期コンポーネントから前記イベントを受信することに応答して、前記処理デバイスによって、前記複数の実行スレッドのうちの少なくとも1つのスレッドの実行を改変するステップと、
    を含む、方法。
  2. 前記処理デバイスによって、スレッドスケジューラに前記イベントを入力するステップと、および
    前記イベントに応答して前記スレッドスケジューラによって、前記少なくとも1つのスレッドの前記実行を前記改変することを引き起こすステップと、
    を更に含む、請求項1に記載の方法。
  3. 前記少なくとも1つのスレッドの実行を改変するステップは、前記少なくとも1つのスレッドをブロックするステップを含む、請求項1に記載の方法。
  4. 前記少なくとも1つのスレッドの実行を改変するステップは、前記少なくとも1つのスレッドに分岐するように命令するステップを含む、請求項1に記載の方法。
  5. 前記命令に応答して前記ハードウェア同期コンポーネントの前記状態を更新するステップは、前記命令の数だけカウンタをインクリメントするステップを含む、請求項1に記載の方法。
  6. 前記ハードウェア同期コンポーネントの前記状態が前記閾値条件を満たすと判定するステップは、前記カウンタが前記閾値条件を満たすと判定するステップを含む、請求項5に記載の方法。
  7. 前記命令は、1クロックサイクル中に受信された命令であり、第1の命令および第2の命令を含み、
    前記ハードウェア同期コンポーネントの前記状態を更新するステップは、
    前記第1の命令の数だけ第1のカウンタをインクリメントするステップと、
    前記第2の命令の数だけ第2のカウンタをインクリメントするステップと、
    を含む、請求項1に記載の方法。
  8. 前記ハードウェア同期コンポーネントの前記状態が前記閾値条件を満たすと判定するステップは、
    前記第1のカウンタの第1の値および前記第2のカウンタの第2の値を関数に入力して関数出力を取得するステップと、
    前記関数出力が前記閾値条件を満たすと判定するステップと、
    を含む、請求項7に記載の方法。
  9. 前記関数は、前記第1の値と前記第2の値との間の差分である、請求項8に記載の方法。
  10. 前記第1の命令は書き込み命令であり、前記第2の命令は読み出し命令であり、前記読み出し命令及び前記書き込み命令は先入れ先出しバッファを参照する、請求項9に記載の方法。
  11. 実行可能なデータを格納するメモリデバイスと、
    前記メモリデバイスに接続され、前記実行可能なデータを抽出して実行するように動作可能な処理デバイスと、
    前記処理デバイスに動作可能に接続されたハードウェア同期コンポーネントと、
    を含み、
    前記処理デバイスは、
    前記処理デバイスによって複数の実行スレッドを同時に実行し、
    命令を前記ハードウェア同期コンポーネントに発行する、
    ようにプログラムされており、
    前記ハードウェア同期コンポーネントは、
    前記命令に応答して前記ハードウェア同期コンポーネントの状態を更新し、
    前記ハードウェア同期コンポーネントの前記状態が閾値条件を満たすと判定し、
    前記ハードウェア同期コンポーネントの前記状態が前記閾値条件を満たすと判定することに応答して、イベントを前記処理デバイスに出力する、
    ようにプログラムされており、
    前記処理デバイスはさらに、前記イベントに応答して前記複数の実行スレッドのうちの少なくとも1つのスレッドの実行を改変するようにプログラムされているシステム。
  12. 前記処理デバイスはさらに、
    スレッドスケジューラに前記イベントを入力し、
    前記イベントに応答して前記スレッドスケジューラによって前記少なくとも1つのスレッドの前記実行を改変することを引き起こす、
    ように更にプログラムされる、請求項11に記載のシステム。
  13. 前記プロセッサは、前記少なくとも1つのスレッドをブロックすることによって前記少なくとも1つのスレッドの実行を改変するようにプログラムされる、請求項11に記載のシステム。
  14. 前記プロセッサは、前記少なくとも1つのスレッドに分岐するように命令をすることによって、前記少なくとも1つのスレッドの実行を改変するようにプログラムされる、請求項11に記載のシステム。
  15. 前記ハードウェア同期コンポーネントは、前記命令に応答して、前記命令の数だけカウンタをインクリメントすることによって前記ハードウェア同期コンポーネントの前記状態を更新するようにプログラムされる、請求項11に記載のシステム。
  16. 前記ハードウェア同期コンポーネントは、前記カウンタが前記閾値条件を満たすと判定することによって、前記ハードウェア同期コンポーネントの前記状態が前記閾値条件を満たすと判定するようにプログラムされる、請求項15に記載のシステム。
  17. クロック周期を有するクロックを更に含み、
    前記ハードウェア同期コンポーネントは、前記ハードウェア同期コンポーネントの前記状態を、
    前記クロックの1クロックサイクルの期間中に受信された前記命令の第1の命令の数だけ第1のカウンタをインクリメントし、
    前記クロックサイクルの期間中に受信された前記命令の第2の命令の数だけ第2のカウンタをインクリメントする、
    ことによって更新するようにプログラムされる、請求項11に記載のシステム。
  18. 前記ハードウェア同期コンポーネントは、
    前記第1のカウンタの第1の値および前記第2のカウンタの第2の値を関数に入力して関数出力を取得し、
    前記関数出力が前記閾値条件を満たすと判定する、
    ことによって前記ハードウェア同期コンポーネントの前記状態が前記閾値条件を満たすと判定するようにプログラムされる、請求項17に記載のシステム。
  19. 前記関数は、前記第1の値と前記第2の値との間の差分である、請求項18に記載のシステム。
  20. 前記第1の命令は書き込み命令であり、前記第2の命令は読み出し命令であり、前記読み出し命令及び前記書き込み命令は先入れ先出しバッファを参照する、請求項19に記載のシステム。
JP2018529224A 2015-12-11 2016-12-12 マルチスレッド処理を調整するためのハードウェアアクセスカウンタとイベント生成 Active JP6966999B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/966,867 2015-12-11
US14/966,867 US9928117B2 (en) 2015-12-11 2015-12-11 Hardware access counters and event generation for coordinating multithreaded processing
PCT/US2016/066110 WO2017100749A1 (en) 2015-12-11 2016-12-12 Hardware access counters and event generation for coordinating multithreaded processing

Publications (3)

Publication Number Publication Date
JP2019505039A true JP2019505039A (ja) 2019-02-21
JP2019505039A5 JP2019505039A5 (ja) 2020-01-16
JP6966999B2 JP6966999B2 (ja) 2021-11-17

Family

ID=59013415

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018529224A Active JP6966999B2 (ja) 2015-12-11 2016-12-12 マルチスレッド処理を調整するためのハードウェアアクセスカウンタとイベント生成

Country Status (6)

Country Link
US (1) US9928117B2 (ja)
EP (1) EP3387524B1 (ja)
JP (1) JP6966999B2 (ja)
KR (1) KR102651864B1 (ja)
CN (1) CN108292230B (ja)
WO (1) WO2017100749A1 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114490001A (zh) * 2022-02-17 2022-05-13 支付宝(杭州)信息技术有限公司 一种聚合事件流的执行方法、装置以及设备

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10177559A (ja) * 1996-12-16 1998-06-30 Internatl Business Mach Corp <Ibm> データ処理装置、方法及びシステム
JP2004522233A (ja) * 2001-06-29 2004-07-22 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ データ処理装置およびデータ処理装置の動作方法
JP2005528671A (ja) * 2001-12-14 2005-09-22 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ 多重プロセッサデータ処理システムにおけるデータ処理方法及び対応するデータ処理システム
JP2005284749A (ja) * 2004-03-30 2005-10-13 Kyushu Univ 並列処理コンピュータ

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4531826A (en) 1982-04-30 1985-07-30 Danyl Corporation Event counter and access controller
US5430850A (en) 1991-07-22 1995-07-04 Massachusetts Institute Of Technology Data processing system with synchronization coprocessor for multiple threads
US5901302A (en) * 1995-01-25 1999-05-04 Advanced Micro Devices, Inc. Superscalar microprocessor having symmetrical, fixed issue positions each configured to execute a particular subset of instructions
US6263410B1 (en) 1998-09-15 2001-07-17 Industrial Technology Research Institute Apparatus and method for asynchronous dual port FIFO
US7587584B2 (en) * 2003-02-19 2009-09-08 Intel Corporation Mechanism to exploit synchronization overhead to improve multithreaded performance
US7260735B2 (en) * 2003-12-18 2007-08-21 Lsi Corporation Method and system for maintaining a running count of events updated by two asynchronous processes
CN101051266A (zh) * 2005-03-02 2007-10-10 英特尔公司 具有虚拟多线程的处理器
US7543136B1 (en) 2005-07-13 2009-06-02 Nvidia Corporation System and method for managing divergent threads using synchronization tokens and program instructions that include set-synchronization bits
GB0524720D0 (en) 2005-12-05 2006-01-11 Imec Inter Uni Micro Electr Ultra low power ASIP architecture II
US7788468B1 (en) 2005-12-15 2010-08-31 Nvidia Corporation Synchronization of threads in a cooperative thread array
US7426253B2 (en) 2006-08-21 2008-09-16 International Business Machines Corporation Low latency counter event indication
US8381203B1 (en) 2006-11-03 2013-02-19 Nvidia Corporation Insertion of multithreaded execution synchronization points in a software program
US8108659B1 (en) 2006-11-03 2012-01-31 Nvidia Corporation Controlling access to memory resources shared among parallel synchronizable threads
US7958333B2 (en) 2007-05-30 2011-06-07 XMOS Ltd. Processor with memory access stage adapted to fetch an instruction of a thread when no memory access operation is detected
US9043553B2 (en) * 2007-06-27 2015-05-26 Microsoft Technology Licensing, Llc Leveraging transactional memory hardware to accelerate virtualization and emulation
US8161250B2 (en) 2009-05-20 2012-04-17 Sharp Laboratories Of America, Inc. Methods and systems for partially-transacted data concurrency
US8499305B2 (en) 2010-10-15 2013-07-30 Via Technologies, Inc. Systems and methods for performing multi-program general purpose shader kickoff
US9146746B2 (en) 2011-03-01 2015-09-29 University Of Washington Through Its Center Of Commercialization Systems and methods for providing deterministic execution
US8689237B2 (en) * 2011-09-22 2014-04-01 Oracle International Corporation Multi-lane concurrent bag for facilitating inter-thread communication
US8345816B1 (en) 2011-12-06 2013-01-01 International Business Machines Corporation RAM-based event counters using transposition
US20130198419A1 (en) 2012-01-30 2013-08-01 Stephen Jones Lock-free fifo
US8904067B2 (en) * 2012-03-13 2014-12-02 Microsoft Corporation Adaptive multi-threaded buffer
US9424099B2 (en) 2012-06-01 2016-08-23 Advanced Micro Devices, Inc. Method and system for synchronization of workitems with divergent control flow
US9229721B2 (en) 2012-09-10 2016-01-05 Qualcomm Incorporated Executing subroutines in a multi-threaded processing system
US9021493B2 (en) 2012-09-14 2015-04-28 International Business Machines Corporation Management of resources within a computing environment
US20140380020A1 (en) * 2013-06-24 2014-12-25 Honeywell International Inc. System and methods for synchronization of redundant processing elements

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10177559A (ja) * 1996-12-16 1998-06-30 Internatl Business Mach Corp <Ibm> データ処理装置、方法及びシステム
JP2004522233A (ja) * 2001-06-29 2004-07-22 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ データ処理装置およびデータ処理装置の動作方法
JP2005528671A (ja) * 2001-12-14 2005-09-22 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ 多重プロセッサデータ処理システムにおけるデータ処理方法及び対応するデータ処理システム
JP2005284749A (ja) * 2004-03-30 2005-10-13 Kyushu Univ 並列処理コンピュータ

Also Published As

Publication number Publication date
JP6966999B2 (ja) 2021-11-17
EP3387524A4 (en) 2019-07-17
KR102651864B1 (ko) 2024-03-26
US9928117B2 (en) 2018-03-27
US20170168875A1 (en) 2017-06-15
CN108292230A (zh) 2018-07-17
CN108292230B (zh) 2022-06-10
WO2017100749A1 (en) 2017-06-15
EP3387524B1 (en) 2021-09-08
EP3387524A1 (en) 2018-10-17
KR20180105130A (ko) 2018-09-27

Similar Documents

Publication Publication Date Title
KR102683211B1 (ko) 다중 스레드 액세스를 위한 소프트웨어로 한정된 fifo 버퍼
JP6888019B2 (ja) メモリアクセスコマンドの転送記述子
KR101862180B1 (ko) 스푸프 클록의 사용 및 미세 수준 주파수 제어를 통한 역 호환성
US9703670B2 (en) Performance state machine control with aggregation insertion
US10013290B2 (en) System and method for synchronizing threads in a divergent region of code
WO2024152820A1 (zh) 一种端到端的时间延迟的检测方法、装置以及设备
CN107250979B (zh) 应用事件跟踪
KR102651864B1 (ko) 하드웨어 액세스 카운터 및 다중 스레드 처리를 조정하기 위한 이벤트 생성
CN107769987B (zh) 一种报文转发性能评估方法和装置
CN113190427A (zh) 卡顿监控方法、装置、电子设备及存储介质
WO2018098960A1 (zh) 一种触屏设备操作方法及触屏设备
CN109074189A (zh) 用于对输入感测、渲染及显示进行定时以便最小化时延的系统和方法
JP2016515741A (ja) マルチフィンガータッチインタラクション中のパンおよびスケーリングの検出
CN117931346B (zh) 一种数据展示方法及装置
US20240338251A1 (en) Thread local event based profiling with performance and scaling analysis

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20191121

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20191121

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20201225

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210209

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210426

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20210426

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20211022

R150 Certificate of patent or registration of utility model

Ref document number: 6966999

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250