JP2017515228A - Simd処理システムにおける直列実行のための技法 - Google Patents
Simd処理システムにおける直列実行のための技法 Download PDFInfo
- Publication number
- JP2017515228A JP2017515228A JP2016563817A JP2016563817A JP2017515228A JP 2017515228 A JP2017515228 A JP 2017515228A JP 2016563817 A JP2016563817 A JP 2016563817A JP 2016563817 A JP2016563817 A JP 2016563817A JP 2017515228 A JP2017515228 A JP 2017515228A
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- thread
- threads
- active
- processor
- 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.)
- Pending
Links
- 238000012545 processing Methods 0.000 title claims description 170
- 238000000034 method Methods 0.000 title claims description 47
- 238000004891 communication Methods 0.000 description 36
- 230000008569 process Effects 0.000 description 15
- 230000006870 function Effects 0.000 description 11
- 238000010586 diagram Methods 0.000 description 7
- 230000004044 response Effects 0.000 description 6
- 238000007796 conventional method Methods 0.000 description 3
- 230000009849 deactivation Effects 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 230000004913 activation Effects 0.000 description 2
- 239000008186 active pharmaceutical agent Substances 0.000 description 2
- 238000013459 approach Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 230000009191 jumping Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 241000699670 Mus sp. Species 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
- 238000010200 validation analysis Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Images
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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
-
- 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/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/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/3888—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple threads [SIMT] in parallel
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)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
- Hardware Redundancy (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
Description
(i=0;i)である場合、//iは波動内のスレッド総数を表し得る
{(thread_id == i ){perform serialized operation}である場合}
LOOP:GetOne_and_branch TRY_AGAIN
{perform serialized operation}
CONTINUEに進む
TRY_AGAIN:LOOPに進む
CONTINUE
LOOP:GetOne_and_branch CONTINUE1
shared_R0=subroutine_target//ターゲットを共有レジスタ内に記憶する
CONTINUE1:(subroutine_target==shared_R0)である場合
{(subroutine_target)を呼び出す
CONTINUE2に進む
}
LOOPに進む
CONTINUE2:
12 GPU
14 システムメモリ
16 プロセッサ
60 ディスプレイ
62 ユーザインターフェース
64 トランシーバモジュール
72 制御装置
74 処理装置
74A〜74D 処理要素
76 命令ストア
78 データストア
80 通信経路
82 通信経路
84 通信経路
86 通信経路
86A〜86D 通信経路
88 プログラムカウンタ
90 フェッチモジュール
92 復号モジュール
94 制御フローモジュール
Claims (20)
- マルチスレッドプロセッサ上で発散演算を実行する方法であって、
複数のスレッドから1つまたは複数のアクティブスレッドを決定するステップと、
前記1つまたは複数のアクティブスレッドから1つのアクティブスレッドを選択するステップと、
前記選択されたアクティブスレッド上で発散演算を実行するステップと
を含む、方法。 - 前記マルチスレッドプロセッサが単一命令マルチデータ(SIMD)プロセッサである、請求項1に記載の方法。
- 前記複数のスレッドが波動を形成し、前記波動が前記SIMDプロセッサによって並行して実行される、請求項2に記載の方法。
- 前記選択されたアクティブスレッド上で前記発散演算を前記実行するステップが、前記選択されたアクティブスレッド上で直列演算を実行するステップを含む、請求項1に記載の方法。
- 前記発散演算を前記実行するステップが、共有レジスタ内にサブルーチンターゲットを記憶するステップを含み、前記方法が、
前記共有レジスタに対するアクセスを有する前記1つまたは複数のアクティブスレッド上の前記サブルーチンターゲットにおいて記憶されたコードを実行するステップ
をさらに含む、請求項1に記載の方法。 - 発散演算を実行するように構成された装置であって、
マルチスレッドプロセッサを備え、前記マルチスレッドプロセッサが、
複数のスレッドから1つまたは複数のアクティブスレッドを決定し、前記1つまたは複数のアクティブスレッドから1つのアクティブスレッドを選択するように構成された制御装置と、
複数の処理要素であって、前記選択されたアクティブスレッドに関連する前記複数の処理要素のうち1つの処理要素が、発散演算を実行するように構成される、複数の処理要素と
を備える、装置。 - 前記マルチスレッドプロセッサが単一命令マルチデータ(SIMD)プロセッサである、請求項6に記載の装置。
- 前記複数のスレッドが波動を形成し、前記波動が前記SIMDプロセッサによって並行して実行される、請求項7に記載の装置。
- 前記選択されたアクティブスレッドに関連する前記処理要素が、直列演算を実行するように構成される、請求項6に記載の装置。
- 前記発散演算が、共有レジスタ内にサブルーチンターゲットを記憶し、前記複数の処理要素が、前記1つまたは複数のアクティブスレッドに関連し、かつ前記共有レジスタに対するアクセスを有する前記複数の処理要素のうちのいずれかの処理要素上の前記サブルーチンターゲットにおいて記憶されたコードを実行するようにさらに構成される、請求項6に記載の装置。
- マルチスレッドプロセッサ上で発散演算を実行するように構成された装置であって、
複数のスレッドから1つまたは複数のアクティブスレッドを決定するための手段と、
前記1つまたは複数のアクティブスレッドから1つのアクティブスレッドを選択するための手段と、
前記選択されたアクティブスレッド上で発散演算を実行するための手段と
を備える、装置。 - 前記マルチスレッドプロセッサが単一命令マルチデータ(SIMD)プロセッサである、請求項11に記載の装置。
- 前記複数のスレッドが波動を形成し、前記波動が前記SIMDプロセッサによって並行して実行される、請求項12に記載の装置。
- 前記選択されたアクティブスレッド上で前記発散演算を前記実行するための手段が、前記選択されたアクティブスレッド上で直列演算を実行するための手段を含む、請求項11に記載の装置。
- 前記発散演算が、共有レジスタ内にサブルーチンターゲットを記憶し、前記装置が、
前記共有レジスタに対するアクセスを有する前記1つまたは複数のアクティブスレッド上の前記サブルーチンターゲットにおいて記憶されたコードを実行するための手段
をさらに備える、請求項11に記載の装置。 - 発散演算を実行するように構成されたマルチスレッドプロセッサであって、
複数のスレッドから1つまたは複数のアクティブスレッドを決定し、前記1つまたは複数のアクティブスレッドから1つのアクティブスレッドを選択するように構成された制御装置と、
複数の処理要素であって、前記選択されたアクティブスレッドに関連する前記複数の処理要素のうち1つの処理要素が、発散演算を実行するように構成される、複数の処理要素と
を備える、マルチスレッドプロセッサ。 - 前記マルチスレッドプロセッサが単一命令マルチデータ(SIMD)プロセッサである、請求項16に記載のマルチスレッドプロセッサ。
- 前記複数のスレッドが波動を形成し、前記波動が前記SIMDプロセッサによって並行して実行される、請求項17に記載のマルチスレッドプロセッサ。
- 前記選択されたアクティブスレッドに関連する前記処理要素が、直列演算を実行するように構成される、請求項16に記載のマルチスレッドプロセッサ。
- 前記発散演算が、共有レジスタ内にサブルーチンターゲットを記憶し、前記複数の処理要素が、前記1つまたは複数のアクティブスレッドに関連し、かつ前記共有レジスタに対するアクセスを有する前記複数の処理要素のうちのいずれかの処理要素上の前記サブルーチンターゲットにおいて記憶されたコードを実行するようにさらに構成される、請求項16に記載のマルチスレッドプロセッサ。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/268,215 | 2014-05-02 | ||
US14/268,215 US10133572B2 (en) | 2014-05-02 | 2014-05-02 | Techniques for serialized execution in a SIMD processing system |
PCT/US2015/025362 WO2015167777A1 (en) | 2014-05-02 | 2015-04-10 | Techniques for serialized execution in a simd processing system |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2017515228A true JP2017515228A (ja) | 2017-06-08 |
JP2017515228A5 JP2017515228A5 (ja) | 2018-05-10 |
Family
ID=53039617
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2016563817A Pending JP2017515228A (ja) | 2014-05-02 | 2015-04-10 | Simd処理システムにおける直列実行のための技法 |
Country Status (8)
Country | Link |
---|---|
US (1) | US10133572B2 (ja) |
EP (1) | EP3137988B1 (ja) |
JP (1) | JP2017515228A (ja) |
KR (1) | KR20160148673A (ja) |
CN (1) | CN106233248B (ja) |
BR (1) | BR112016025511A2 (ja) |
ES (1) | ES2834573T3 (ja) |
WO (1) | WO2015167777A1 (ja) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9898348B2 (en) * | 2014-10-22 | 2018-02-20 | International Business Machines Corporation | Resource mapping in multi-threaded central processor units |
US9921838B2 (en) * | 2015-10-02 | 2018-03-20 | Mediatek Inc. | System and method for managing static divergence in a SIMD computing architecture |
CN107534445B (zh) * | 2016-04-19 | 2020-03-10 | 华为技术有限公司 | 用于分割哈希值计算的向量处理 |
US10334334B2 (en) | 2016-07-22 | 2019-06-25 | Intel Corporation | Storage sled and techniques for a data center |
US10565017B2 (en) * | 2016-09-23 | 2020-02-18 | Samsung Electronics Co., Ltd. | Multi-thread processor and controlling method thereof |
US10990409B2 (en) * | 2017-04-21 | 2021-04-27 | Intel Corporation | Control flow mechanism for execution of graphics processor instructions using active channel packing |
CN108549583B (zh) * | 2018-04-17 | 2021-05-07 | 致云科技有限公司 | 大数据处理方法、装置、服务器及可读存储介质 |
WO2020076630A1 (en) * | 2018-10-08 | 2020-04-16 | Convida Wireless, Llc | Device discovery and connectivity in a cellular network |
US20230097115A1 (en) * | 2021-09-27 | 2023-03-30 | Advanced Micro Devices, Inc. | Garbage collecting wavefront |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009230756A (ja) * | 2008-03-24 | 2009-10-08 | Nvidia Corp | 同期並列スレッドプロセッサにおける間接的な関数呼び出し命令 |
US7634637B1 (en) * | 2005-12-16 | 2009-12-15 | Nvidia Corporation | Execution of parallel groups of threads with per-instruction serialization |
US20110078690A1 (en) * | 2009-09-28 | 2011-03-31 | Brian Fahs | Opcode-Specified Predicatable Warp Post-Synchronization |
WO2012155010A1 (en) * | 2011-05-11 | 2012-11-15 | Advanced Micro Devices, Inc. | Automatic load balancing for heterogeneous cores |
WO2012158753A1 (en) * | 2011-05-16 | 2012-11-22 | Advanced Micro Devices, Inc. | Automatic kernel migration for heterogeneous cores |
WO2014025480A1 (en) * | 2012-08-08 | 2014-02-13 | Qualcomm Incorporated | Selectively activating a resume check operation in a multi-threaded processing system |
US20140075160A1 (en) * | 2012-09-10 | 2014-03-13 | Nvidia Corporation | System and method for synchronizing threads in a divergent region of code |
WO2014039206A1 (en) * | 2012-09-10 | 2014-03-13 | Qualcomm Incorporated | Executing subroutines in a multi-threaded processing system |
JP2014146335A (ja) * | 2013-01-28 | 2014-08-14 | Samsung Electronics Co Ltd | マルチモード支援プロセッサ及びマルチモードを支援する処理方法 |
JP2015036983A (ja) * | 2013-08-13 | 2015-02-23 | 三星電子株式会社Samsung Electronics Co.,Ltd. | 多重スレッド実行プロセッサ、及びその動作方法 |
JP2016532180A (ja) * | 2013-10-01 | 2016-10-13 | クゥアルコム・インコーポレイテッドQualcomm Incorporated | Gpu発散バリア |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6947047B1 (en) | 2001-09-20 | 2005-09-20 | Nvidia Corporation | Method and system for programmable pipelined graphics processing with branching instructions |
US7895328B2 (en) | 2002-12-13 | 2011-02-22 | International Business Machines Corporation | System and method for context-based serialization of messages in a parallel execution environment |
WO2005072307A2 (en) | 2004-01-22 | 2005-08-11 | University Of Washington | Wavescalar architecture having a wave order memory |
US7590830B2 (en) * | 2004-05-28 | 2009-09-15 | Sun Microsystems, Inc. | Method and structure for concurrent branch prediction in a processor |
GB2437837A (en) | 2005-02-25 | 2007-11-07 | Clearspeed Technology Plc | Microprocessor architecture |
US7761697B1 (en) * | 2005-07-13 | 2010-07-20 | Nvidia Corporation | Processing an indirect branch instruction in a SIMD architecture |
US8176265B2 (en) | 2006-10-30 | 2012-05-08 | Nvidia Corporation | Shared single-access memory with management of multiple parallel requests |
US10152329B2 (en) | 2012-02-09 | 2018-12-11 | Nvidia Corporation | Pre-scheduled replays of divergent operations |
-
2014
- 2014-05-02 US US14/268,215 patent/US10133572B2/en active Active
-
2015
- 2015-04-10 WO PCT/US2015/025362 patent/WO2015167777A1/en active Application Filing
- 2015-04-10 ES ES15719929T patent/ES2834573T3/es active Active
- 2015-04-10 JP JP2016563817A patent/JP2017515228A/ja active Pending
- 2015-04-10 BR BR112016025511A patent/BR112016025511A2/pt not_active IP Right Cessation
- 2015-04-10 KR KR1020167033480A patent/KR20160148673A/ko unknown
- 2015-04-10 EP EP15719929.0A patent/EP3137988B1/en active Active
- 2015-04-10 CN CN201580021777.9A patent/CN106233248B/zh active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7634637B1 (en) * | 2005-12-16 | 2009-12-15 | Nvidia Corporation | Execution of parallel groups of threads with per-instruction serialization |
JP2009230756A (ja) * | 2008-03-24 | 2009-10-08 | Nvidia Corp | 同期並列スレッドプロセッサにおける間接的な関数呼び出し命令 |
US20110078690A1 (en) * | 2009-09-28 | 2011-03-31 | Brian Fahs | Opcode-Specified Predicatable Warp Post-Synchronization |
WO2012155010A1 (en) * | 2011-05-11 | 2012-11-15 | Advanced Micro Devices, Inc. | Automatic load balancing for heterogeneous cores |
WO2012158753A1 (en) * | 2011-05-16 | 2012-11-22 | Advanced Micro Devices, Inc. | Automatic kernel migration for heterogeneous cores |
WO2014025480A1 (en) * | 2012-08-08 | 2014-02-13 | Qualcomm Incorporated | Selectively activating a resume check operation in a multi-threaded processing system |
US20140075160A1 (en) * | 2012-09-10 | 2014-03-13 | Nvidia Corporation | System and method for synchronizing threads in a divergent region of code |
WO2014039206A1 (en) * | 2012-09-10 | 2014-03-13 | Qualcomm Incorporated | Executing subroutines in a multi-threaded processing system |
JP2014146335A (ja) * | 2013-01-28 | 2014-08-14 | Samsung Electronics Co Ltd | マルチモード支援プロセッサ及びマルチモードを支援する処理方法 |
JP2015036983A (ja) * | 2013-08-13 | 2015-02-23 | 三星電子株式会社Samsung Electronics Co.,Ltd. | 多重スレッド実行プロセッサ、及びその動作方法 |
JP2016532180A (ja) * | 2013-10-01 | 2016-10-13 | クゥアルコム・インコーポレイテッドQualcomm Incorporated | Gpu発散バリア |
Also Published As
Publication number | Publication date |
---|---|
WO2015167777A1 (en) | 2015-11-05 |
CN106233248B (zh) | 2018-11-13 |
EP3137988A1 (en) | 2017-03-08 |
US10133572B2 (en) | 2018-11-20 |
ES2834573T3 (es) | 2021-06-17 |
US20150317157A1 (en) | 2015-11-05 |
CN106233248A (zh) | 2016-12-14 |
KR20160148673A (ko) | 2016-12-26 |
EP3137988B1 (en) | 2020-09-02 |
BR112016025511A2 (pt) | 2017-08-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10133572B2 (en) | Techniques for serialized execution in a SIMD processing system | |
KR101660659B1 (ko) | 멀티-스레딩된 프로세싱 시스템에서의 서브루틴들의 실행 | |
US8832417B2 (en) | Program flow control for multiple divergent SIMD threads using a minimum resume counter | |
JP5701487B2 (ja) | 同期並列スレッドプロセッサにおける間接的な関数呼び出し命令 | |
US9256429B2 (en) | Selectively activating a resume check operation in a multi-threaded processing system | |
US10706494B2 (en) | Uniform predicates in shaders for graphics processing units | |
US9799094B1 (en) | Per-instance preamble for graphics processing | |
KR20040016829A (ko) | 파이프라인식 프로세서에서의 예외 취급 방법, 장치 및시스템 | |
US8572355B2 (en) | Support for non-local returns in parallel thread SIMD engine | |
KR102495792B1 (ko) | 가변 파면 크기 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20161104 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20180320 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20180320 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20181121 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20190111 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20190805 |