JP2007200288A - 実行スレッドをグループ化するためのシステム及び方法 - Google Patents
実行スレッドをグループ化するためのシステム及び方法 Download PDFInfo
- Publication number
- JP2007200288A JP2007200288A JP2006338917A JP2006338917A JP2007200288A JP 2007200288 A JP2007200288 A JP 2007200288A JP 2006338917 A JP2006338917 A JP 2006338917A JP 2006338917 A JP2006338917 A JP 2006338917A JP 2007200288 A JP2007200288 A JP 2007200288A
- Authority
- JP
- Japan
- Prior art keywords
- thread
- instruction
- execution
- instructions
- buddy
- 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
- 238000000034 method Methods 0.000 title claims abstract description 22
- 230000003362 replicative effect Effects 0.000 abstract 1
- 238000010586 diagram Methods 0.000 description 7
- 238000003672 processing method Methods 0.000 description 2
- 239000007787 solid Substances 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/38—Concurrent instruction execution, e.g. pipeline, 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/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/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
Abstract
【解決手段】 複数のスレッドが、二つ以上のスレッドをもつバディーグループに分割され、各スレッドには一以上のバディースレッドが割り当てられる。各バディーグループのうちの一つのスレッドだけが命令をアクティブに実行し、これによって、レジスタのようなハードウェアリソースをバディースレッドが共有することを可能にする。アクティブなスレッドがスワップ命令のようなスワップイベントに遭遇すると、アクティブなスレッドが実行を保留し、そのバディースレッドのうちの一つのスレッドが、当該スレッドのプライベートハードウェアリソース及びバディーグループの共有ハードウェアリソースを使用して実行を開始する。その結果、スレッドごとのハードウェアリソースの全てを複製せずにスレッド数を増加することができる。
【選択図】図7
Description
命令 待ち時間 必要なリソース
1 4クロックサイクル 3個のレジスタ
2 4クロックサイクル 4個のレジスタ
3 4クロックサイクル 3個のレジスタ
4 4クロックサイクル 5個のレジスタ
5 4クロックサイクル 3個のレジスタ
Inst_00: Interpolate iw
Inst_01: Reciprocal w
Inst_02: Interpolate s, w
Inst_03: Interpolate t, w
Inst_04: Texture s, t //Texturereturns r, g, b, a values
Inst_05: Swap
Inst_06: Multiply r, r, w
Inst_07: Multiply g, g, w
スワップ命令(inst_05)は、コンパイラーにより待ち時間の長いテクスチャ命令(inst_04)の直後に挿入される。このように、バディースレッドへのスワップは、待ち時間の長いテクスチャ命令(inst_04)が実行される間に行うことができる。スワップ命令を乗算命令(inst_06)の後に挿入するのは、あまり望ましくない。これは、乗算命令(inst_06)が、テクスチャ命令(Inst_04)の結果に依存し、バディースレッドへのスワップを、待ち時間の長いテクスチャ命令(Inst_04)がその実行を完了する後まで行えないからである。
Claims (10)
- 処理ユニットで複数のスレッドの命令を実行する方法であって、
前記処理ユニットのハードウェアリソースの第1のセット、第2のセット、及び共有のセットを、第1のスレッドの命令及び第2のスレッドの命令に割り当てるステップと、
前記ハードウェアリソースの第1のセット及び共有セットを使用して、所定のイベントが発生するまで、前記第1のスレッドの命令を実行するステップと、
前記所定のイベントの発生に応答して、前記第1のスレッドの命令の実行を保留すると共に、前記ハードウェアリソースの第2のセット及び共有セットを使用して、前記第2のスレッドの命令を実行するステップと、
を備えた方法。 - 前記第2のスレッドの命令は、別の所定のイベントが発生するまで実行され、該別の所定のイベントの発生に応答して、前記第2のスレッドの実行を保留し、前記命令の第1のスレッドの実行を再開する、請求項1に記載の方法。
- 前記第1のスレッドの命令がスワップ命令を含み、前記第1のスレッドにおける該スワップ命令が実行されたときに前記所定のイベントが発生し、前記第2のスレッドの命令がスワップ命令を含み、前記第2のスレッドの該スワップ命令が実行されたときに前記別の所定のイベントが発生する、請求項2に記載の方法。
- ハードウェアリソースの第3のセット及びハードウェアリソースの前記共有セットを第3のスレッドの命令に割り当てるステップを更に備え、前記第2スレッドの命令が、別の所定のイベントが発生するまで実行され、該別の所定のイベントの発生に応答して、前記第2のスレッドの命令の実行を保留すると共に、前記第3のスレッドの命令を実行する、請求項1に記載の方法。
- 前記所定のイベントは、前記第1のスレッドの命令のうち待ち時間の長い命令が実行されたときに発生する、請求項1に記載の方法。
- 前記待ち時間の長い命令はメモリアクセス命令を含む、請求項5に記載の方法。
- 前記ハードウェアリソースはレジスタを含む、請求項1に記載の方法。
- 前記ハードウェアリソースは命令バッファを更に含む、請求項7に記載の方法。
- 前記処理ユニットのハードウェアリソースの第3のセット、第4のセット、及び第5のセットを、第3のスレッドの命令及び第4のスレッドの命令に割り当てるステップと、
前記ハードウェアリソースの第3のセット及び第5のセットを使用して、前記第3のスレッドに対するスワップイベントが発生するまで、前記第3のスレッドの命令を実行するステップと、
前記3のスレッドに対する前記スワップイベントの発生に応答して、前記第3のスレッドの命令の実行を保留し、前記ハードウェアリソースの前記第4のセット及び前記第5のセットを使用して、前記第4のスレッドの命令を実行するステップと、
を更に備える請求項1に記載の方法。 - 前記第4のスレッドの命令は、該第4のスレッドに対するスワップイベントが発生するまで実行され、該第4のスレッドに対する前記スワップイベントの発生に応答して、前記第4のスレッドの命令の実行を保留し、前記第3のスレッドの命令の実行を再開する、請求項9に記載の方法。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/305,558 US20070143582A1 (en) | 2005-12-16 | 2005-12-16 | System and method for grouping execution threads |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2007200288A true JP2007200288A (ja) | 2007-08-09 |
JP4292198B2 JP4292198B2 (ja) | 2009-07-08 |
Family
ID=38165749
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006338917A Active JP4292198B2 (ja) | 2005-12-16 | 2006-12-15 | 実行スレッドをグループ化するための方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20070143582A1 (ja) |
JP (1) | JP4292198B2 (ja) |
CN (1) | CN1983196B (ja) |
TW (1) | TWI338861B (ja) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2012157786A1 (ja) | 2011-05-19 | 2012-11-22 | 日本電気株式会社 | 並列処理装置、並列処理方法、最適化装置、最適化方法、および、コンピュータ・プログラム |
US8850168B2 (en) | 2009-02-24 | 2014-09-30 | Panasonic Corporation | Processor apparatus and multithread processor apparatus |
JP2016511493A (ja) * | 2013-03-15 | 2016-04-14 | クアルコム,インコーポレイテッド | システムメモリ管理ユニットコンテキストを保存および復元するための方法および装置 |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090089564A1 (en) * | 2006-12-06 | 2009-04-02 | Brickell Ernie F | Protecting a Branch Instruction from Side Channel Vulnerabilities |
GB2451845B (en) * | 2007-08-14 | 2010-03-17 | Imagination Tech Ltd | Compound instructions in a multi-threaded processor |
US8601193B2 (en) | 2010-10-08 | 2013-12-03 | International Business Machines Corporation | Performance monitor design for instruction profiling using shared counters |
US8589922B2 (en) | 2010-10-08 | 2013-11-19 | International Business Machines Corporation | Performance monitor design for counting events generated by thread groups |
US8489787B2 (en) | 2010-10-12 | 2013-07-16 | International Business Machines Corporation | Sharing sampled instruction address registers for efficient instruction sampling in massively multithreaded processors |
CN102520916B (zh) * | 2011-11-28 | 2015-02-11 | 深圳中微电科技有限公司 | 在mvp处理器中消除纹理延迟和寄存器管理的方法 |
JP5894496B2 (ja) * | 2012-05-01 | 2016-03-30 | ルネサスエレクトロニクス株式会社 | 半導体装置 |
US9727338B2 (en) | 2012-11-05 | 2017-08-08 | Nvidia Corporation | System and method for translating program functions for correct handling of local-scope variables and computing system incorporating the same |
KR20150019349A (ko) * | 2013-08-13 | 2015-02-25 | 삼성전자주식회사 | 다중 쓰레드 실행 프로세서 및 이의 동작 방법 |
GB2524063B (en) | 2014-03-13 | 2020-07-01 | Advanced Risc Mach Ltd | Data processing apparatus for executing an access instruction for N threads |
GB2540937B (en) * | 2015-07-30 | 2019-04-03 | Advanced Risc Mach Ltd | Graphics processing systems |
GB2544994A (en) * | 2015-12-02 | 2017-06-07 | Swarm64 As | Data processing |
US11537397B2 (en) | 2017-03-27 | 2022-12-27 | Advanced Micro Devices, Inc. | Compiler-assisted inter-SIMD-group register sharing |
CN114035847B (zh) * | 2021-11-08 | 2023-08-29 | 海飞科(南京)信息技术有限公司 | 用于并行执行核心程序的方法和装置 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6092175A (en) * | 1998-04-02 | 2000-07-18 | University Of Washington | Shared register storage mechanisms for multithreaded computer systems with out-of-order execution |
US6735769B1 (en) * | 2000-07-13 | 2004-05-11 | International Business Machines Corporation | Apparatus and method for initial load balancing in a multiple run queue system |
US7681018B2 (en) * | 2000-08-31 | 2010-03-16 | Intel Corporation | Method and apparatus for providing large register address space while maximizing cycletime performance for a multi-threaded register file set |
US7984268B2 (en) * | 2002-10-08 | 2011-07-19 | Netlogic Microsystems, Inc. | Advanced processor scheduling in a multithreaded system |
US7430654B2 (en) * | 2003-07-09 | 2008-09-30 | Via Technologies, Inc. | Dynamic instruction dependency monitor and control system |
-
2005
- 2005-12-16 US US11/305,558 patent/US20070143582A1/en not_active Abandoned
-
2006
- 2006-12-15 TW TW095147158A patent/TWI338861B/zh active
- 2006-12-15 JP JP2006338917A patent/JP4292198B2/ja active Active
- 2006-12-15 CN CN2006101681797A patent/CN1983196B/zh active Active
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8850168B2 (en) | 2009-02-24 | 2014-09-30 | Panasonic Corporation | Processor apparatus and multithread processor apparatus |
WO2012157786A1 (ja) | 2011-05-19 | 2012-11-22 | 日本電気株式会社 | 並列処理装置、並列処理方法、最適化装置、最適化方法、および、コンピュータ・プログラム |
US9152462B2 (en) | 2011-05-19 | 2015-10-06 | Nec Corporation | Parallel processing device, parallel processing method, optimization device, optimization method and computer program |
JP2016511493A (ja) * | 2013-03-15 | 2016-04-14 | クアルコム,インコーポレイテッド | システムメモリ管理ユニットコンテキストを保存および復元するための方法および装置 |
Also Published As
Publication number | Publication date |
---|---|
TW200745953A (en) | 2007-12-16 |
TWI338861B (en) | 2011-03-11 |
CN1983196B (zh) | 2010-09-29 |
JP4292198B2 (ja) | 2009-07-08 |
US20070143582A1 (en) | 2007-06-21 |
CN1983196A (zh) | 2007-06-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4292198B2 (ja) | 実行スレッドをグループ化するための方法 | |
US20210349763A1 (en) | Technique for computational nested parallelism | |
US9830156B2 (en) | Temporal SIMT execution optimization through elimination of redundant operations | |
US8407454B2 (en) | Processing long-latency instructions in a pipelined processor | |
US10007527B2 (en) | Uniform load processing for parallel thread sub-sets | |
US9158595B2 (en) | Hardware scheduling of ordered critical code sections | |
US9798548B2 (en) | Methods and apparatus for scheduling instructions using pre-decode data | |
JP4987882B2 (ja) | スレッドに最適化されたマルチプロセッサアーキテクチャ | |
US20120110586A1 (en) | Thread group scheduler for computing on a parallel thread processor | |
US9069609B2 (en) | Scheduling and execution of compute tasks | |
KR20160138878A (ko) | 워프 클러스터링을 수행하는 방법 | |
JP2010244529A (ja) | デッドロックを起こさないパイプライン処理のためのシステム及び方法 | |
JPH08147165A (ja) | マルチコンテキストをサポートするプロセッサおよび処理方法 | |
US20130166882A1 (en) | Methods and apparatus for scheduling instructions without instruction decode | |
US9626191B2 (en) | Shaped register file reads | |
US9715413B2 (en) | Execution state analysis for assigning tasks to streaming multiprocessors | |
US9286114B2 (en) | System and method for launching data parallel and task parallel application threads and graphics processing unit incorporating the same | |
US10152329B2 (en) | Pre-scheduled replays of divergent operations | |
US9442759B2 (en) | Concurrent execution of independent streams in multi-channel time slice groups | |
CN116414541B (zh) | 兼容多种任务工作模式的任务执行方法和装置 | |
KR101420592B1 (ko) | 컴퓨터 시스템 | |
US20120246656A1 (en) | Scheduling of tasks to be performed by a non-coherent device | |
JP2003167726A (ja) | コプロセッサ装置およびデータ転送を容易にするための方法 | |
US9817668B2 (en) | Batched replays of divergent operations |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20080604 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20080617 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20080916 |
|
RD03 | Notification of appointment of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7423 Effective date: 20080916 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20081014 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20090114 |
|
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: 20090310 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20090406 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 4292198 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120410 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120410 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130410 Year of fee payment: 4 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130410 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140410 Year of fee payment: 5 |
|
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 |
|
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 |
|
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 |