JP2007507048A - マルチスレッディングのためのコンパイラが生成したヘルパースレッドの方法および装置 - Google Patents
マルチスレッディングのためのコンパイラが生成したヘルパースレッドの方法および装置 Download PDFInfo
- Publication number
- JP2007507048A JP2007507048A JP2006528333A JP2006528333A JP2007507048A JP 2007507048 A JP2007507048 A JP 2007507048A JP 2006528333 A JP2006528333 A JP 2006528333A JP 2006528333 A JP2006528333 A JP 2006528333A JP 2007507048 A JP2007507048 A JP 2007507048A
- Authority
- JP
- Japan
- Prior art keywords
- thread
- helper
- main thread
- threads
- helper threads
- 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 74
- 238000012545 processing Methods 0.000 claims abstract description 32
- 230000008569 process Effects 0.000 claims description 32
- 238000004891 communication Methods 0.000 claims description 25
- 230000003068 static effect Effects 0.000 claims description 4
- 230000001419 dependent effect Effects 0.000 claims 4
- 238000005070 sampling Methods 0.000 claims 2
- 238000010586 diagram Methods 0.000 description 20
- 238000005457 optimization Methods 0.000 description 13
- 238000004458 analytical method Methods 0.000 description 9
- 230000006870 function Effects 0.000 description 7
- 238000004364 calculation method Methods 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 6
- 238000004422 calculation algorithm Methods 0.000 description 5
- 230000003287 optical effect Effects 0.000 description 5
- 238000013459 approach Methods 0.000 description 4
- 230000008901 benefit Effects 0.000 description 4
- 230000006872 improvement Effects 0.000 description 4
- 238000005259 measurement Methods 0.000 description 3
- 238000013468 resource allocation Methods 0.000 description 3
- 230000004913 activation Effects 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 238000010276 construction Methods 0.000 description 2
- 238000000354 decomposition reaction Methods 0.000 description 2
- 230000014509 gene expression Effects 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 241000699670 Mus sp. Species 0.000 description 1
- 238000009825 accumulation Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000005352 clarification Methods 0.000 description 1
- 239000012141 concentrate Substances 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000002950 deficient Effects 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000001627 detrimental effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000008030 elimination Effects 0.000 description 1
- 238000003379 elimination reaction Methods 0.000 description 1
- 230000002708 enhancing effect Effects 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000008450 motivation Effects 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000001902 propagating effect Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 238000004064 recycling Methods 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 239000000126 substance Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000001052 transient effect Effects 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 or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/443—Optimisation
- G06F8/4441—Reducing the execution time required by the program code
- G06F8/4442—Reducing the number of cache misses; Data prefetching
-
- 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/3824—Operand accessing
- G06F9/383—Operand prefetching
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Devices For Executing Special Programs (AREA)
- Debugging And Monitoring (AREA)
Abstract
Description
Claims (30)
- 一つ以上の不良ロードを有しうる主要スレッドの領域を特定する段階と、
前記主要スレッドに関連する一つ以上のヘルパースレッドの前記領域を分析する段階と、
前記一つ以上のヘルパースレッド用のコードを生成する段階とを備え、
前記一つ以上の不良ロードは、前記主要スレッドの実行中にキャッシュミスが生じうるロードであり、
前記一つ以上のヘルパースレッドは、前記主要スレッドの前記領域のために一つ以上のタスクを実行する前記主要スレッドに並行して投機的に実行される
方法。 - 前記領域を特定する段階が、
前記領域のキャッシュミスの一つ以上のプロファイルを生成する段階と、
スレッドベースのプリフェッチ処理のための一つ以上の候補を特定するために前記一つ以上のプロファイルを分析する段階と
を備える請求項1に記載の方法。 - 一つ以上のプロファイルを生成する段階が、
デバッグ情報を含む前記主要スレッドに関連付けられたアプリケーションを実行する段階と、
各キャッシュ階層に前記一つ以上のプロファイルを生成する前記領域の静的ロードの各々のために、キャッシュミスをサンプリングし、ハードウエアカウンタに累算する段階と
を備える請求項2に記載の方法。 - 前記一つ以上のプロファイルを分析する段階が、
前記一つ以上のプロファイルを、前記デバッグ情報に基づいた各ソースコードと相互に関連付ける段階と、
前記不良ロードとしての予め定められたレベルを超えるキャッシュミスの原因となるトップロードを特定する段階と
を備える請求項2に記載の方法。 - 前記領域を分析する段階が、
データを取得し、前記主要スレッドの依存関係を制御するディペンデントグラフを構築する段階と、
前記ヘルパースレッドを生成するために前記ディペンデントグラフに基づいて前記主要スレッドの上でスライシング動作を実行する段階と
を備える請求項1に記載の方法。 - 前記領域を分析する段階が、
前記主要スレッドと前記ヘルパースレッドとの間のスケジューリングを実行する段階と、
前記主要スレッドと前記ヘルパースレッドとの間のコミュニケーションスキームを決定する段階と
を更に備える請求項5に記載の方法。 - 前記領域を分析する段階が、
前記主要スレッドと前記ヘルパースレッドとを同期化するために前記ヘルパースレッドの同期化期間を決定する段階
を更に備え、
前記ヘルパースレッドのそれぞれが、前記同期化期間内にそのタスクを実行する
請求項6に記載の方法。 - 機械に方法を実行させるための実行コードを有する機械可読な媒体であって、前記方法が、
一つ以上の不良ロードを有しうる主要スレッドの領域を特定する段階と、
前記主要スレッドに関連する一つ以上のヘルパースレッドの前記領域を分析する段階と、
前記一つ以上のヘルパースレッド用のコードを生成する段階と
を備え、
前記一つ以上の不良ロードは、前記主要スレッドの実行中にキャッシュミスが生じうるロードであり、
前記一つ以上のヘルパースレッドは、前記主要スレッドの前記領域のために一つ以上のタスクを実行する前記主要スレッドに並行して投機的に実行される
機械可読な媒体。 - 前記領域を特定する段階が、
前記領域のキャッシュミスの一つ以上のプロファイルを生成する段階と、
スレッドベースのプリフェッチのための一つ以上の候補を特定するために前記一つ以上のプロファイルを分析する段階と
を備える請求項8に記載の機械可読な媒体。 - 一つ以上のプロファイルを生成する段階が、
デバッグ情報を含む前記主要スレッドに関連付けられたアプリケーションを実行する段階と、
各キャッシュ階層に前記一つ以上のプロファイルを生成する前記領域の静的ロードの各々のために、キャッシュミスをサンプリングし、ハードウエアカウンタに累算する段階と
を備える請求項9に記載の機械可読な媒体。 - 前記一つ以上のプロファイルを分析する段階が、
前記一つ以上のプロファイルを、前記デバッグ情報に基づいた各ソースコードと相互に関連付ける段階と、
前記不良ロードとしての予め定められたレベルを超えるキャッシュミスの原因となるトップロードを特定する段階と
を備える請求項9に記載の機械可読な媒体。 - 前記領域を分析する段階が、
データを取得し、前記主要スレッドの依存関係を制御するディペンデントグラフを構築する段階と、
前記ヘルパースレッドを生成するために前記ディペンデントグラフに基づいて前記主要スレッドの上でスライシング動作を実行する段階と
を備える請求項8に記載の機械可読な媒体。 - 前記領域を分析する段階が、
前記主要スレッドと前記ヘルパースレッドとの間のスケジューリングを実行する段階と、
前記主要スレッドと前記ヘルパースレッドとの間のコミュニケーションスキームを決定する段階と
を更に備える請求項12に記載の機械可読な媒体。 - 前記領域を分析する段階が、
前記主要スレッドと前記ヘルパースレッドとを同期化するために前記ヘルパースレッドの同期化期間を決定する段階
を更に備え、
前記ヘルパースレッドのそれぞれが、前記同期化期間内にその各タスクを実行する
請求項13に記載の機械可読な媒体。 - マルチスレッディング動作を実行することができるプロセッサと、
前記プロセッサに結合するメモリと、
前記メモリから前記プロセッサによって実行されるプロセスと
を備え、
前記プロセスは、前記プロセッサに、一つ以上の不良ロードを有しうる主要スレッドの領域を特定させ、前記主要スレッドに関連する一つ以上のヘルパースレッドの前記領域を分析させ、前記一つ以上のヘルパースレッド用のコードを生成させるために、前記メモリから前記プロセッサによって実行され、
前記一つ以上の不良ロードは、前記主要スレッドの実行中にキャッシュミスが生じうるロードであり、
前記一つ以上のヘルパースレッドは、前記主要スレッドの前記領域のために一つ以上のタスクを実行する前記主要スレッドに並行して投機的に実行される
データ処理システム。 - 前記プロセスが、アプリケーションの編集中にコンパイラによって実行される
請求項15に記載のデータ処理システム。 - マルチスレッディングシステム中でアプリケーションの主要スレッドを実行する段階と、
一つ以上の不良ロードを有する領域に前記主要スレッドが入った場合に、主要スレッドのために一つ以上の演算を実行する前記主要スレッドから一つ以上のヘルパースレッドを生成する段階と
を備え、
前記一つ以上のヘルパースレッドのコードは、前記主要スレッドの編集中に生成される
方法。 - スレッドコンテキストのリストを保持するためのスレッドプールを作成する段階と、
前記一つ以上のヘルパースレッドを生成するために前記スレッドプールから一つ以上のスレッドコンテキストを割り当てる段階と
を更に備える請求項17に記載の方法。 - 前記主要スレッドが前記領域から出た場合に、前記一つ以上のヘルパースレッドを終了する段階と、
前記一つ以上のヘルパースレッドと関連付けられた前記スレッドコンテキストを解放して、前記スレッドプールに戻す段階と
を更に備える請求項18に記載の方法。 - 前記ヘルパースレッドのそれぞれに時間枠を決定する段階
を更に備え、
前記ヘルパースレッドのそれぞれを、前記各時間枠が終了した場合に終了させる
請求項17に記載の方法。 - たとえ前記各ヘルパースレッドが前記主要スレッドによってアクセスされていない場合でも、前記時間枠が終了したときに、前記ヘルパースレッドのそれぞれが終了する
請求項20に記載の方法。 - 前記主要スレッドが前記領域から出た場合に、前記一つ以上のヘルパースレッドによって生成された結果を放棄する段階
を更に備え、
前記結果は、前記主要スレッドの他の領域によって再使用されない
請求項17に記載の方法。 - 機械に方法を実行させるための実行コードを有する機械可読な媒体であって、前記方法が、
マルチスレッディングシステム中でアプリケーションの主要スレッドを実行する段階と、
一つ以上の不良ロードを有する領域に前記主要スレッドが入った場合に、主要スレッドのために一つ以上の演算を実行する前記主要スレッドから一つ以上のヘルパースレッドを生成する段階と
を備え、
前記一つ以上のヘルパースレッドのコードは、前記主要スレッドの編集中に生成される
機械可読な媒体。 - 前記方法が、
スレッドコンテキストのリストを保持するためのスレッドプールを作成する段階と、
前記一つ以上のヘルパースレッドを生成するために前記スレッドプールから一つ以上のスレッドコンテキストを割り当てる段階と
を更に備える請求項23に記載の機械可読な媒体。 - 前記方法が、
前記主要スレッドが前記領域から出た場合に、前記一つ以上のヘルパースレッドを終了する段階と、
前記一つ以上のヘルパースレッドと関連付けられた前記スレッドコンテキストを解放して、前記スレッドプールに戻す段階と
を更に備える請求項24に記載の機械可読な媒体。 - 前記方法が、
前記ヘルパースレッドのそれぞれに時間枠を決定する段階
を更に備え、
前記ヘルパースレッドのそれぞれを、前記各時間枠が終了した場合に終了させる
請求項23に記載の機械可読な媒体。 - たとえ前記各ヘルパースレッドが前記主要スレッドによってアクセスされていない場合でも、前記時間枠が終了したときに、前記ヘルパースレッドのそれぞれが終了する
請求項26に記載の機械可読な媒体。 - 前記方法が、
前記主要スレッドが前記領域から出た場合に、前記一つ以上のヘルパースレッドによって生成された結果を放棄する段階
を更に備え、
前記結果は、前記主要スレッドの他の領域によって再使用されない
請求項23に記載の機械可読な媒体。 - マルチスレッディング動作を実行することができるプロセッサと、
前記プロセッサに結合するメモリと、
前記メモリから前記プロセッサに実行されるプロセスと
を備え、
前記プロセスは、前記プロセッサに、マルチスレッディングシステム中でアプリケーションの主要スレッドを実行させ、一つ以上の不良ロードを有する領域に前記主要スレッドが入った場合に、主要スレッドのために一つ以上の演算を実行する前記主要スレッドから一つ以上のヘルパースレッドを生成させるために、前記メモリから前記プロセッサによって実行され、
前記一つ以上のヘルパースレッドのコードは、前記主要スレッドの編集中に生成される
データ処理システム。 - アプリケーションの編集中にコンパイラによって、前記一つ以上のヘルパースレッドのコードが生成される
請求項29に記載のデータ処理システム。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/676,889 | 2003-09-30 | ||
US10/676,889 US20050071438A1 (en) | 2003-09-30 | 2003-09-30 | Methods and apparatuses for compiler-creating helper threads for multi-threading |
PCT/US2004/032461 WO2005033931A2 (en) | 2003-09-30 | 2004-09-30 | Methods and apparatuses for compiler-creating helper threads for multi-threading |
Publications (3)
Publication Number | Publication Date |
---|---|
JP2007507048A true JP2007507048A (ja) | 2007-03-22 |
JP2007507048A5 JP2007507048A5 (ja) | 2011-03-10 |
JP4701174B2 JP4701174B2 (ja) | 2011-06-15 |
Family
ID=34377482
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006528333A Active JP4701174B2 (ja) | 2003-09-30 | 2004-09-30 | マルチスレッディングのためのコンパイラが生成したヘルパースレッドの方法および装置 |
Country Status (5)
Country | Link |
---|---|
US (2) | US20050071438A1 (ja) |
EP (1) | EP1668502A2 (ja) |
JP (1) | JP4701174B2 (ja) |
CN (1) | CN1853165A (ja) |
WO (1) | WO2005033931A2 (ja) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008090411A (ja) * | 2006-09-29 | 2008-04-17 | Fujitsu Ltd | 情報処理装置、命令制御機構及び命令制御方法 |
JP2009146227A (ja) * | 2007-12-14 | 2009-07-02 | Fujitsu Ltd | 中央処理装置、選択回路および選択方法 |
JP2011141743A (ja) * | 2010-01-07 | 2011-07-21 | Nec Corp | マルチプロセッサ、これを用いたコンピュータシステム、およびマルチプロセッサの処理方法 |
Families Citing this family (85)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040243767A1 (en) * | 2003-06-02 | 2004-12-02 | Cierniak Michal J. | Method and apparatus for prefetching based upon type identifier tags |
US7206795B2 (en) * | 2003-12-22 | 2007-04-17 | Jean-Pierre Bono | Prefetching and multithreading for improved file read performance |
US7665070B2 (en) * | 2004-04-23 | 2010-02-16 | International Business Machines Corporation | Method and apparatus for a computing system using meta program representation |
US8230422B2 (en) * | 2005-01-13 | 2012-07-24 | International Business Machines Corporation | Assist thread for injecting cache memory in a microprocessor |
US7950012B2 (en) * | 2005-03-16 | 2011-05-24 | Oracle America, Inc. | Facilitating communication and synchronization between main and scout threads |
US7849453B2 (en) * | 2005-03-16 | 2010-12-07 | Oracle America, Inc. | Method and apparatus for software scouting regions of a program |
US7818746B2 (en) * | 2005-03-30 | 2010-10-19 | Hewlett-Packard Development Company, L.P. | System and method for benchmarking using a multi-threaded load generator |
US9003421B2 (en) * | 2005-11-28 | 2015-04-07 | Intel Corporation | Acceleration threads on idle OS-visible thread execution units |
KR100679050B1 (ko) * | 2005-12-12 | 2007-02-06 | 삼성전자주식회사 | 태스크간 빠른 문맥 교환을 위해 레지스터 문맥을 저장,복구하는 방법 및 장치 |
US8301870B2 (en) * | 2006-07-27 | 2012-10-30 | International Business Machines Corporation | Method and apparatus for fast synchronization and out-of-order execution of instructions in a meta-program based computing system |
US20100211955A1 (en) * | 2006-09-07 | 2010-08-19 | Cwi | Controlling 32/64-bit parallel thread execution within a microsoft operating system utility program |
WO2008031054A2 (en) | 2006-09-07 | 2008-03-13 | Black Lab Security Systems, Inc. | Creating and using a specific user unique id for security login authentication |
US7852336B2 (en) * | 2006-11-28 | 2010-12-14 | International Business Machines Corporation | Dynamic determination of optimal spatial index mapping to processor thread resources |
JP4821907B2 (ja) * | 2007-03-06 | 2011-11-24 | 日本電気株式会社 | メモリアクセス制御システム、メモリアクセス制御方法およびそのプログラム |
US9361078B2 (en) * | 2007-03-19 | 2016-06-07 | International Business Machines Corporation | Compiler method of exploiting data value locality for computation reuse |
US9223580B2 (en) * | 2007-08-30 | 2015-12-29 | International Business Machines Corporation | Systems, methods and computer products for cross-thread scheduling |
US8413151B1 (en) | 2007-12-19 | 2013-04-02 | Nvidia Corporation | Selective thread spawning within a multi-threaded processing system |
US8321840B2 (en) * | 2007-12-27 | 2012-11-27 | Intel Corporation | Software flow tracking using multiple threads |
CN101482831B (zh) | 2008-01-08 | 2013-05-15 | 国际商业机器公司 | 对工作线程与辅助线程进行相伴调度的方法和设备 |
US8359589B2 (en) * | 2008-02-01 | 2013-01-22 | International Business Machines Corporation | Helper thread for pre-fetching data |
US8225326B2 (en) * | 2008-03-17 | 2012-07-17 | Intel Corporation | Future scheduling by direct representation of possible dependencies |
JP2009237762A (ja) * | 2008-03-26 | 2009-10-15 | Toshiba Corp | プログラム解析装置、プログラム解析方法および解析プログラム |
US20090313600A1 (en) * | 2008-06-13 | 2009-12-17 | Microsoft Corporation | Concurrent code generation |
JP2010039536A (ja) * | 2008-07-31 | 2010-02-18 | Panasonic Corp | プログラム変換装置、プログラム変換方法およびプログラム変換プログラム |
US8615770B1 (en) | 2008-08-29 | 2013-12-24 | Nvidia Corporation | System and method for dynamically spawning thread blocks within multi-threaded processing systems |
US8959497B1 (en) * | 2008-08-29 | 2015-02-17 | Nvidia Corporation | System and method for dynamically spawning thread blocks within multi-threaded processing systems |
US9753698B2 (en) * | 2009-06-10 | 2017-09-05 | Microsoft Technology Licensing, Llc | Language-based model for isolating shared state |
CA2680597C (en) * | 2009-10-16 | 2011-06-07 | Ibm Canada Limited - Ibm Canada Limitee | Managing speculative assist threads |
US9043769B2 (en) * | 2009-12-28 | 2015-05-26 | Hyperion Core Inc. | Optimization of loops and data flow sections in multi-core processor environment |
US8826249B2 (en) * | 2010-02-18 | 2014-09-02 | Oracle International Corporation | Method and system for optimizing code for a multi-threaded application |
US8423750B2 (en) * | 2010-05-12 | 2013-04-16 | International Business Machines Corporation | Hardware assist thread for increasing code parallelism |
CN102255794B (zh) * | 2010-05-17 | 2014-07-30 | 塔塔咨询服务有限公司 | 远程消息收发吞吐量优化和等待时间缩短用系统和方法 |
US8667253B2 (en) | 2010-08-04 | 2014-03-04 | International Business Machines Corporation | Initiating assist thread upon asynchronous event for processing simultaneously with controlling thread and updating its running status in status register |
CN101916203B (zh) * | 2010-08-18 | 2012-12-26 | 优视科技有限公司 | 服务于移动通讯的终端软件平台的编译方法及系统 |
US8713290B2 (en) | 2010-09-20 | 2014-04-29 | International Business Machines Corporation | Scaleable status tracking of multiple assist hardware threads |
US8793474B2 (en) | 2010-09-20 | 2014-07-29 | International Business Machines Corporation | Obtaining and releasing hardware threads without hypervisor involvement |
US8949808B2 (en) | 2010-09-23 | 2015-02-03 | Apple Inc. | Systems and methods for compiler-based full-function vectorization |
US8621448B2 (en) * | 2010-09-23 | 2013-12-31 | Apple Inc. | Systems and methods for compiler-based vectorization of non-leaf code |
US9529574B2 (en) | 2010-09-23 | 2016-12-27 | Apple Inc. | Auto multi-threading in macroscalar compilers |
US8549504B2 (en) | 2010-09-25 | 2013-10-01 | Intel Corporation | Apparatus, method, and system for providing a decision mechanism for conditional commits in an atomic region |
US20120079245A1 (en) * | 2010-09-25 | 2012-03-29 | Cheng Wang | Dynamic optimization for conditional commit |
US8499305B2 (en) * | 2010-10-15 | 2013-07-30 | Via Technologies, Inc. | Systems and methods for performing multi-program general purpose shader kickoff |
US8898646B2 (en) * | 2010-12-22 | 2014-11-25 | Intel Corporation | Method and apparatus for flexible, accurate, and/or efficient code profiling |
US8726251B2 (en) * | 2011-03-29 | 2014-05-13 | Oracle International Corporation | Pipelined loop parallelization with pre-computations |
US9218186B2 (en) | 2011-09-01 | 2015-12-22 | International Business Machines Corporation | Software compiler generated threaded environment |
US8966463B2 (en) * | 2011-11-29 | 2015-02-24 | Microsoft Technology Licensing, Llc | Eliminating redundant function calls |
US9310875B2 (en) | 2011-12-22 | 2016-04-12 | Intel Corporation | Instruction that specifies an application thread performance state |
US8893094B2 (en) * | 2011-12-30 | 2014-11-18 | Intel Corporation | Hardware compilation and/or translation with fault detection and roll back functionality |
US9396020B2 (en) | 2012-03-30 | 2016-07-19 | Intel Corporation | Context switching mechanism for a processing core having a general purpose CPU core and a tightly coupled accelerator |
US8813042B2 (en) * | 2012-04-06 | 2014-08-19 | Hwlett-Packard Development Company, L. P. | Identifying globally consistent states in a multithreaded program |
US8997042B2 (en) * | 2012-10-15 | 2015-03-31 | Pivotal Software, Inc. | Flexible and run-time-modifiable inclusion of functionality in computer code |
US9052888B2 (en) | 2013-02-21 | 2015-06-09 | International Business Machines Corporation | Vectorization in an optimizing compiler |
EP2976861B1 (en) * | 2013-03-21 | 2017-05-17 | Telefonaktiebolaget LM Ericsson (publ) | Method and device for scheduling communication schedulable unit |
US9760346B2 (en) * | 2013-05-31 | 2017-09-12 | Microsoft Technology Licensing, Llc | Deeply parallel source code compilation |
US9690584B2 (en) * | 2013-10-18 | 2017-06-27 | Marvell World Trade Ltd. | Systems and methods for register allocation |
EP2876593B1 (en) * | 2013-11-21 | 2018-09-26 | Nxp B.V. | Method of generating a structure and corresponding structure |
US9830206B2 (en) * | 2013-12-18 | 2017-11-28 | Cray Inc. | Cross-thread exception handling |
US9348595B1 (en) | 2014-12-22 | 2016-05-24 | Centipede Semi Ltd. | Run-time code parallelization with continuous monitoring of repetitive instruction sequences |
US9886317B2 (en) | 2015-02-02 | 2018-02-06 | Oracle International Corporation | Fine-grained scheduling of work in runtime systems |
US9208066B1 (en) * | 2015-03-04 | 2015-12-08 | Centipede Semi Ltd. | Run-time code parallelization with approximate monitoring of instruction sequences |
US10296350B2 (en) | 2015-03-31 | 2019-05-21 | Centipede Semi Ltd. | Parallelized execution of instruction sequences |
US10296346B2 (en) | 2015-03-31 | 2019-05-21 | Centipede Semi Ltd. | Parallelized execution of instruction sequences based on pre-monitoring |
US9715390B2 (en) | 2015-04-19 | 2017-07-25 | Centipede Semi Ltd. | Run-time parallelization of code execution based on an approximate register-access specification |
GB2540543B (en) * | 2015-07-20 | 2020-03-11 | Advanced Risc Mach Ltd | Graphics processing |
US10423330B2 (en) * | 2015-07-29 | 2019-09-24 | International Business Machines Corporation | Data collection in a multi-threaded processor |
US20170031724A1 (en) * | 2015-07-31 | 2017-02-02 | Futurewei Technologies, Inc. | Apparatus, method, and computer program for utilizing secondary threads to assist primary threads in performing application tasks |
US9778951B2 (en) * | 2015-10-16 | 2017-10-03 | Qualcomm Incorporated | Task signaling off a critical path of execution |
US20170372448A1 (en) * | 2016-06-28 | 2017-12-28 | Ingo Wald | Reducing Memory Access Latencies During Ray Traversal |
US10152341B2 (en) | 2016-08-30 | 2018-12-11 | Red Hat Israel, Ltd. | Hyper-threading based host-guest communication |
US10552211B2 (en) * | 2016-09-02 | 2020-02-04 | Intel Corporation | Mechanism to increase thread parallelism in a graphics processor |
CN106569869B (zh) * | 2016-11-14 | 2019-04-19 | 平安科技(深圳)有限公司 | 插件化打包方法及装置 |
US10565676B2 (en) | 2017-04-17 | 2020-02-18 | Intel Corporation | Thread prefetch mechanism |
US10325341B2 (en) | 2017-04-21 | 2019-06-18 | Intel Corporation | Handling pipeline submissions across many compute units |
CN107391266B (zh) * | 2017-06-01 | 2021-03-30 | 华南理工大学 | 一种图形化编程多线程同步方法 |
CN109960571B (zh) * | 2017-12-14 | 2022-03-25 | 北京图森智途科技有限公司 | 一种多模块调度方法、装置及系统 |
US11513840B2 (en) * | 2018-05-07 | 2022-11-29 | Micron Technology, Inc. | Thread creation on local or remote compute elements by a multi-threaded, self-scheduling processor |
US10713052B2 (en) | 2018-06-28 | 2020-07-14 | Intel Corporation | Prefetcher for delinquent irregular loads |
CN109445854B (zh) * | 2018-10-31 | 2019-11-05 | 中科驭数(北京)科技有限公司 | 数据传输方法及装置 |
US10802882B2 (en) * | 2018-12-13 | 2020-10-13 | International Business Machines Corporation | Accelerating memory access in a network using thread progress based arbitration |
US11216278B2 (en) | 2019-08-12 | 2022-01-04 | Advanced New Technologies Co., Ltd. | Multi-thread processing |
CN110569067B (zh) * | 2019-08-12 | 2021-07-13 | 创新先进技术有限公司 | 用于多线程处理的方法、装置及系统 |
US11314718B2 (en) * | 2019-11-21 | 2022-04-26 | International Business Machines Corporation | Shared disk buffer pool update and modification |
US10891708B1 (en) | 2019-11-25 | 2021-01-12 | Arm Limited | Shader program execution in graphics processing |
WO2023177320A1 (en) * | 2022-03-17 | 2023-09-21 | Huawei Technologies Co., Ltd | Smt core controller, compiler, and methods for executeting compiled run-time code on smt core controller |
CN116860436A (zh) * | 2023-06-15 | 2023-10-10 | 重庆智铸达讯通信有限公司 | 线程数据处理方法、装置、设备及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH08263325A (ja) * | 1995-03-20 | 1996-10-11 | Fujitsu Ltd | サーバ処理装置、サーバ内障害検出装置及びサーバ内障害検出方法 |
JP2000267894A (ja) * | 1999-03-17 | 2000-09-29 | Nec Corp | タイムアウト処理システム、処理方法及び記録媒体 |
JP2001188681A (ja) * | 2000-01-04 | 2001-07-10 | Toshiba Corp | 言語処理システム、オブジェクトコード生成方法及びインライン展開方法 |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5249295A (en) * | 1990-06-20 | 1993-09-28 | Rice University | Digital computer register allocation and code spilling using interference graph coloring |
JPH08314979A (ja) * | 1995-03-13 | 1996-11-29 | Matsushita Electric Ind Co Ltd | プログラム情報を表示装置に示す方法および装置 |
US6003041A (en) * | 1998-01-05 | 1999-12-14 | Gateway 2000, Inc. | Method and managing multiple channel maps from multiple input devices in a multimedia system |
US20020097725A1 (en) * | 1998-07-27 | 2002-07-25 | Nec Corporation | Resource and protocol management for virtual private networks within multiprocessor ATM switches |
US6721944B2 (en) * | 2000-05-31 | 2004-04-13 | Sun Microsystems, Inc. | Marking memory elements based upon usage of accessed information during speculative execution |
US7140022B2 (en) * | 2000-06-02 | 2006-11-21 | Honeywell International Inc. | Method and apparatus for slack stealing with dynamic threads |
US6959435B2 (en) * | 2001-09-28 | 2005-10-25 | Intel Corporation | Compiler-directed speculative approach to resolve performance-degrading long latency events in an application |
US6964043B2 (en) * | 2001-10-30 | 2005-11-08 | Intel Corporation | Method, apparatus, and system to optimize frequently executed code and to use compiler transformation and hardware support to handle infrequently executed code |
US20030084433A1 (en) * | 2001-10-31 | 2003-05-01 | Chi-Keung Luk | Profile-guided stride prefetching |
US20030126591A1 (en) * | 2001-12-21 | 2003-07-03 | Youfeng Wu | Stride-profile guided prefetching for irregular code |
US7243267B2 (en) * | 2002-03-01 | 2007-07-10 | Avaya Technology Llc | Automatic failure detection and recovery of applications |
US8095920B2 (en) * | 2002-09-17 | 2012-01-10 | Intel Corporation | Post-pass binary adaptation for software-based speculative precomputation |
US20040128489A1 (en) * | 2002-12-31 | 2004-07-01 | Hong Wang | Transformation of single-threaded code to speculative precomputation enabled code |
US20040154010A1 (en) * | 2003-01-31 | 2004-08-05 | Pedro Marcuello | Control-quasi-independent-points guided speculative multithreading |
JP2006267894A (ja) | 2005-03-25 | 2006-10-05 | Kyocera Mita Corp | 定着装置 |
-
2003
- 2003-09-30 US US10/676,889 patent/US20050071438A1/en not_active Abandoned
-
2004
- 2004-09-30 CN CNA2004800271722A patent/CN1853165A/zh active Pending
- 2004-09-30 WO PCT/US2004/032461 patent/WO2005033931A2/en active Application Filing
- 2004-09-30 JP JP2006528333A patent/JP4701174B2/ja active Active
- 2004-09-30 EP EP04789475A patent/EP1668502A2/en not_active Withdrawn
-
2009
- 2009-12-31 US US12/650,630 patent/US8612949B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH08263325A (ja) * | 1995-03-20 | 1996-10-11 | Fujitsu Ltd | サーバ処理装置、サーバ内障害検出装置及びサーバ内障害検出方法 |
JP2000267894A (ja) * | 1999-03-17 | 2000-09-29 | Nec Corp | タイムアウト処理システム、処理方法及び記録媒体 |
JP2001188681A (ja) * | 2000-01-04 | 2001-07-10 | Toshiba Corp | 言語処理システム、オブジェクトコード生成方法及びインライン展開方法 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008090411A (ja) * | 2006-09-29 | 2008-04-17 | Fujitsu Ltd | 情報処理装置、命令制御機構及び命令制御方法 |
JP2009146227A (ja) * | 2007-12-14 | 2009-07-02 | Fujitsu Ltd | 中央処理装置、選択回路および選択方法 |
JP2011141743A (ja) * | 2010-01-07 | 2011-07-21 | Nec Corp | マルチプロセッサ、これを用いたコンピュータシステム、およびマルチプロセッサの処理方法 |
Also Published As
Publication number | Publication date |
---|---|
EP1668502A2 (en) | 2006-06-14 |
WO2005033931A3 (en) | 2005-12-22 |
US20100281471A1 (en) | 2010-11-04 |
US8612949B2 (en) | 2013-12-17 |
US20050071438A1 (en) | 2005-03-31 |
JP4701174B2 (ja) | 2011-06-15 |
WO2005033931A2 (en) | 2005-04-14 |
CN1853165A (zh) | 2006-10-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4701174B2 (ja) | マルチスレッディングのためのコンパイラが生成したヘルパースレッドの方法および装置 | |
JP4528300B2 (ja) | マルチスレッディングのスレッド管理の方法および装置 | |
JP4003830B2 (ja) | マルチプロセッシング環境における透過動的最適化のための方法およびシステム | |
Joao et al. | Bottleneck identification and scheduling in multithreaded applications | |
US8037465B2 (en) | Thread-data affinity optimization using compiler | |
Franklin et al. | ARB: A hardware mechanism for dynamic reordering of memory references | |
US20180060049A1 (en) | Systems, apparatuses, and methods for a hardware and software system to automatically decompose a program to multiple parallel threads | |
Renau et al. | Tasking with out-of-order spawn in TLS chip multiprocessors: Microarchitecture and compilation | |
KR100722710B1 (ko) | 폐영역 회수를 스케줄하는 방법 | |
Dorai et al. | Transparent threads: Resource sharing in SMT processors for high single-thread performance | |
US9690589B2 (en) | Computer instructions for activating and deactivating operands | |
Balakrishnan et al. | Program demultiplexing: Data-flow based speculative parallelization of methods in sequential programs | |
Chen et al. | TEST: a tracer for extracting speculative threads | |
JPH11272519A (ja) | 最適化を誘導するようにコンピュ―タシステムを監視するための方法及び装置 | |
WO2007055889A1 (en) | Facilitating communication and synchronization between main and scout threads | |
Tsai et al. | Performance study of a concurrent multithreaded processor | |
Taura et al. | Fine-grain multithreading with minimal compiler support—a cost effective approach to implementing efficient multithreading languages | |
Whaley et al. | Heuristics for profile-driven method-level speculative parallelization | |
JPH05242051A (ja) | タスクスケジューリング方式 | |
So et al. | Procedure cloning and integration for converting parallelism from coarse to fine grain | |
Lankamp | Developing a reference implementation for a microgrid of microthreaded microprocessors | |
Wang et al. | Smarq: Software-managed alias register queue for dynamic optimizations | |
Ji et al. | Compiler-Directed Incremental Checkpointing for Low Latency GPU Preemption | |
Kreaseck et al. | Limits of task-based parallelism in irregular applications | |
Ying | Scaling sequential code with hardware-software co-design for fine-grain speculative parallelization |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20090120 |
|
A524 | Written submission of copy of amendment under article 19 pct |
Free format text: JAPANESE INTERMEDIATE CODE: A524 Effective date: 20090420 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20091020 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20100119 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20100126 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20100219 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20100226 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20100318 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20100326 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20100420 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20100525 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20100927 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A821 Effective date: 20100928 |
|
A911 | Transfer to examiner for re-examination before appeal (zenchi) |
Free format text: JAPANESE INTERMEDIATE CODE: A911 Effective date: 20101021 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20101207 |
|
A524 | Written submission of copy of amendment under article 19 pct |
Free format text: JAPANESE INTERMEDIATE CODE: A524 Effective date: 20110124 |
|
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: 20110215 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20110307 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 4701174 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 |
|
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 |