JP2019505039A - マルチスレッド処理を調整するためのハードウェアアクセスカウンタとイベント生成 - Google Patents
マルチスレッド処理を調整するためのハードウェアアクセスカウンタとイベント生成 Download PDFInfo
- 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
Links
- 230000000903 blocking effect Effects 0.000 claims abstract description 4
- 238000000034 method Methods 0.000 claims description 39
- 230000004044 response Effects 0.000 claims description 16
- 230000009471 action Effects 0.000 abstract description 4
- 230000006870 function Effects 0.000 description 23
- 238000010586 diagram Methods 0.000 description 14
- 238000004590 computer program Methods 0.000 description 8
- 230000008569 process Effects 0.000 description 5
- 230000003287 optical effect Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000009466 transformation Effects 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/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/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/30—Arrangements for executing machine instructions, e.g. instruction decode
-
- 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/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
-
- 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/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/52—Indexing scheme relating to G06F9/52
- G06F2209/521—Atomic
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/52—Indexing scheme relating to G06F9/52
- G06F2209/522—Manager
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はイベントをプロセッサに出力する。次に、プロセッサは、イベントによって影響を受けたスレッドを識別し、そのイベントに基づいて所定の動作(例えば、スレッドのブロック、分岐、ブロック解除)をとる。
【選択図】図2
Description
Claims (20)
- 実行可能なデータを格納するメモリデバイスを提供するステップと、
前記メモリデバイスに接続され、前記実行可能なデータを抽出して実行するように動作可能な処理デバイスを提供するステップと、
前記処理デバイスに動作可能に接続されたハードウェア同期コンポーネントを提供するステップと、
前記処理デバイスによって複数の実行スレッドを同時に実行するステップと、
前記複数の実行スレッドによって、命令を前記ハードウェア同期コンポーネントに発行するステップと、
前記ハードウェア同期コンポーネントによって、前記命令に応答して前記ハードウェア同期コンポーネントの状態を更新するステップと、
前記ハードウェア同期コンポーネントによって、前記ハードウェア同期コンポーネントの前記状態が閾値条件を満たすと判定するステップと、
前記ハードウェア同期コンポーネントの前記状態が前記閾値条件を満たすと判定したことに応答して、前記ハードウェア同期コンポーネントによってイベントを前記処理デバイスに出力するステップと、
前記ハードウェア同期コンポーネントから前記イベントを受信することに応答して、前記処理デバイスによって、前記複数の実行スレッドのうちの少なくとも1つのスレッドの実行を改変するステップと、
を含む、方法。 - 前記処理デバイスによって、スレッドスケジューラに前記イベントを入力するステップと、および
前記イベントに応答して前記スレッドスケジューラによって、前記少なくとも1つのスレッドの前記実行を前記改変することを引き起こすステップと、
を更に含む、請求項1に記載の方法。 - 前記少なくとも1つのスレッドの実行を改変するステップは、前記少なくとも1つのスレッドをブロックするステップを含む、請求項1に記載の方法。
- 前記少なくとも1つのスレッドの実行を改変するステップは、前記少なくとも1つのスレッドに分岐するように命令するステップを含む、請求項1に記載の方法。
- 前記命令に応答して前記ハードウェア同期コンポーネントの前記状態を更新するステップは、前記命令の数だけカウンタをインクリメントするステップを含む、請求項1に記載の方法。
- 前記ハードウェア同期コンポーネントの前記状態が前記閾値条件を満たすと判定するステップは、前記カウンタが前記閾値条件を満たすと判定するステップを含む、請求項5に記載の方法。
- 前記命令は、1クロックサイクル中に受信された命令であり、第1の命令および第2の命令を含み、
前記ハードウェア同期コンポーネントの前記状態を更新するステップは、
前記第1の命令の数だけ第1のカウンタをインクリメントするステップと、
前記第2の命令の数だけ第2のカウンタをインクリメントするステップと、
を含む、請求項1に記載の方法。 - 前記ハードウェア同期コンポーネントの前記状態が前記閾値条件を満たすと判定するステップは、
前記第1のカウンタの第1の値および前記第2のカウンタの第2の値を関数に入力して関数出力を取得するステップと、
前記関数出力が前記閾値条件を満たすと判定するステップと、
を含む、請求項7に記載の方法。 - 前記関数は、前記第1の値と前記第2の値との間の差分である、請求項8に記載の方法。
- 前記第1の命令は書き込み命令であり、前記第2の命令は読み出し命令であり、前記読み出し命令及び前記書き込み命令は先入れ先出しバッファを参照する、請求項9に記載の方法。
- 実行可能なデータを格納するメモリデバイスと、
前記メモリデバイスに接続され、前記実行可能なデータを抽出して実行するように動作可能な処理デバイスと、
前記処理デバイスに動作可能に接続されたハードウェア同期コンポーネントと、
を含み、
前記処理デバイスは、
前記処理デバイスによって複数の実行スレッドを同時に実行し、
命令を前記ハードウェア同期コンポーネントに発行する、
ようにプログラムされており、
前記ハードウェア同期コンポーネントは、
前記命令に応答して前記ハードウェア同期コンポーネントの状態を更新し、
前記ハードウェア同期コンポーネントの前記状態が閾値条件を満たすと判定し、
前記ハードウェア同期コンポーネントの前記状態が前記閾値条件を満たすと判定することに応答して、イベントを前記処理デバイスに出力する、
ようにプログラムされており、
前記処理デバイスはさらに、前記イベントに応答して前記複数の実行スレッドのうちの少なくとも1つのスレッドの実行を改変するようにプログラムされているシステム。 - 前記処理デバイスはさらに、
スレッドスケジューラに前記イベントを入力し、
前記イベントに応答して前記スレッドスケジューラによって前記少なくとも1つのスレッドの前記実行を改変することを引き起こす、
ように更にプログラムされる、請求項11に記載のシステム。 - 前記プロセッサは、前記少なくとも1つのスレッドをブロックすることによって前記少なくとも1つのスレッドの実行を改変するようにプログラムされる、請求項11に記載のシステム。
- 前記プロセッサは、前記少なくとも1つのスレッドに分岐するように命令をすることによって、前記少なくとも1つのスレッドの実行を改変するようにプログラムされる、請求項11に記載のシステム。
- 前記ハードウェア同期コンポーネントは、前記命令に応答して、前記命令の数だけカウンタをインクリメントすることによって前記ハードウェア同期コンポーネントの前記状態を更新するようにプログラムされる、請求項11に記載のシステム。
- 前記ハードウェア同期コンポーネントは、前記カウンタが前記閾値条件を満たすと判定することによって、前記ハードウェア同期コンポーネントの前記状態が前記閾値条件を満たすと判定するようにプログラムされる、請求項15に記載のシステム。
- クロック周期を有するクロックを更に含み、
前記ハードウェア同期コンポーネントは、前記ハードウェア同期コンポーネントの前記状態を、
前記クロックの1クロックサイクルの期間中に受信された前記命令の第1の命令の数だけ第1のカウンタをインクリメントし、
前記クロックサイクルの期間中に受信された前記命令の第2の命令の数だけ第2のカウンタをインクリメントする、
ことによって更新するようにプログラムされる、請求項11に記載のシステム。 - 前記ハードウェア同期コンポーネントは、
前記第1のカウンタの第1の値および前記第2のカウンタの第2の値を関数に入力して関数出力を取得し、
前記関数出力が前記閾値条件を満たすと判定する、
ことによって前記ハードウェア同期コンポーネントの前記状態が前記閾値条件を満たすと判定するようにプログラムされる、請求項17に記載のシステム。 - 前記関数は、前記第1の値と前記第2の値との間の差分である、請求項18に記載のシステム。
- 前記第1の命令は書き込み命令であり、前記第2の命令は読み出し命令であり、前記読み出し命令及び前記書き込み命令は先入れ先出しバッファを参照する、請求項19に記載のシステム。
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)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114490001A (zh) * | 2022-02-17 | 2022-05-13 | 支付宝(杭州)信息技术有限公司 | 一种聚合事件流的执行方法、装置以及设备 |
Citations (4)
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)
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 |
-
2015
- 2015-12-11 US US14/966,867 patent/US9928117B2/en active Active
-
2016
- 2016-12-12 CN CN201680070290.4A patent/CN108292230B/zh active Active
- 2016-12-12 KR KR1020187018994A patent/KR102651864B1/ko active IP Right Grant
- 2016-12-12 EP EP16874039.7A patent/EP3387524B1/en active Active
- 2016-12-12 JP JP2018529224A patent/JP6966999B2/ja active Active
- 2016-12-12 WO PCT/US2016/066110 patent/WO2017100749A1/en active Application Filing
Patent Citations (4)
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 |