JP2013502648A - 最適化simdコードのための動作指示命令の挿入 - Google Patents
最適化simdコードのための動作指示命令の挿入 Download PDFInfo
- Publication number
- JP2013502648A JP2013502648A JP2012525576A JP2012525576A JP2013502648A JP 2013502648 A JP2013502648 A JP 2013502648A JP 2012525576 A JP2012525576 A JP 2012525576A JP 2012525576 A JP2012525576 A JP 2012525576A JP 2013502648 A JP2013502648 A JP 2013502648A
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- value
- code
- exception
- vector
- 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
- 238000003780 insertion Methods 0.000 title description 31
- 230000037431 insertion Effects 0.000 title description 31
- 239000013598 vector Substances 0.000 claims abstract description 240
- 238000012545 processing Methods 0.000 claims abstract description 49
- 230000004044 response Effects 0.000 claims abstract description 11
- 238000000034 method Methods 0.000 claims description 56
- 238000004364 calculation method Methods 0.000 claims description 30
- 238000003860 storage Methods 0.000 claims description 30
- 230000009466 transformation Effects 0.000 claims description 18
- 238000004590 computer program Methods 0.000 claims description 17
- 238000006243 chemical reaction Methods 0.000 claims description 14
- 230000009471 action Effects 0.000 claims description 12
- 230000008569 process Effects 0.000 claims description 11
- 230000000873 masking effect Effects 0.000 claims description 6
- 238000012546 transfer Methods 0.000 claims description 3
- 238000006467 substitution reaction Methods 0.000 claims 1
- 230000007246 mechanism Effects 0.000 abstract description 51
- 238000010586 diagram Methods 0.000 description 45
- 230000006870 function Effects 0.000 description 26
- 238000012360 testing method Methods 0.000 description 16
- 230000000644 propagated effect Effects 0.000 description 13
- 238000007792 addition Methods 0.000 description 12
- 238000005457 optimization Methods 0.000 description 8
- 230000006399 behavior Effects 0.000 description 6
- 230000008901 benefit Effects 0.000 description 6
- 230000008859 change Effects 0.000 description 6
- 230000002195 synergetic effect Effects 0.000 description 4
- 238000000844 transformation Methods 0.000 description 4
- 230000009286 beneficial effect Effects 0.000 description 3
- 238000001514 detection method Methods 0.000 description 3
- 230000014509 gene expression Effects 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000001902 propagating effect Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 230000001419 dependent effect Effects 0.000 description 2
- 230000009977 dual effect Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 230000000977 initiatory effect Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 230000003190 augmentative effect Effects 0.000 description 1
- 230000001427 coherent effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000001976 improved effect Effects 0.000 description 1
- 230000009249 intrinsic sympathomimetic activity Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 230000008685 targeting Effects 0.000 description 1
- 230000001131 transforming effect Effects 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Images
Classifications
-
- 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
-
- 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/45—Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
- G06F8/451—Code distribution
-
- 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/30007—Arrangements for executing specific machine instructions to perform operations on data operands
-
- 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/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30021—Compare instructions, e.g. Greater-Than, Equal-To, MINMAX
-
- 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/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- 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/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
-
- 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/3861—Recovery, e.g. branch miss-prediction, exception handling
- G06F9/3865—Recovery, e.g. branch miss-prediction, exception handling using deferred exception handling, e.g. exception flags
-
- 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/3885—Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
- G06F9/3887—Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
Abstract
【解決手段】 コンパイルのために第1のコード(620)の一部分を受信する。第1のコード(620)の一部分を分析して、指定の非投機的動作を実行し、置換動作指示命令(1020)へのベクトル・レジスタ入力内に存在する特殊例外値(840)に対応する任意の例外条件を示すための指示動作をさらに実行する置換動作指示命令による置換の候補である第1のコード(620)内の指定の非投機的動作を実行している非投機的命令を識別する。置換を実行し(1080)、少なくとも1つの非投機的命令の置換に基づいて第2のコード(630)を生成する。コンパイル済みコード(630)を実行しているこのデータ処理システム(100)は、投機的命令が例外条件を生成したことに応答して、例外処理を開始せずに、特殊例外値(840)をベクトル出力レジスタ(1130)に保管するように構成される。
【選択図】 図5
Description
a[i]=b[i]/=0?1/b[i]:DEFAULT;
Claims (20)
- データ処理システム(100)において、据え置かれた例外条件を示すインデータ・パス特殊例外値(840)についてチェックするための命令をコード(620)に挿入するための方法であって、
前記データ処理システム(100)のプロセッサ(110、120〜134)上で実行されるコンパイラ(610)により、第1のコード(620)の一部分を分析して、指定の非投機的動作を実行し、動作指示命令(1020)へのベクトル・レジスタ入力のベクトル・スロット内に存在するインデータ・パス特殊例外値(840)に対応する任意の例外条件を示すための指示動作をさらに実行する前記動作指示命令による置換の候補である前記第1のコード(620)内の前記指定の非投機的動作を実行している少なくとも1つの非投機的命令を識別することと、
前記プロセッサ(110、120〜134)上で実行される前記コンパイラ(610)により、前記第1のコード内の指定の非投機的動作を実行している前記少なくとも1つの非投機的命令を前記動作指示命令(1080)で置換することと、
前記プロセッサ(110、120〜134)上で実行される前記コンパイラ(610)により、前記第1のコード(620)内の前記少なくとも1つの非投機的命令の前記置換に基づいて第2のコード(630)を生成すること
を含む、方法。 - 前記動作指示命令(1080)が、メモリ(163〜170、199)への保管動作を実行し、インデータ・パス特殊例外値(840)がある場合にそれに対応する例外条件を示す保管指示命令、ベクトル入力をあるベクトル・レジスタから他のベクトル・レジスタに移動し、インデータ・パス特殊例外値(840)がある場合にそれに対応する例外条件を示す移動指示命令、または入力ベクトルについて計算動作を実行し、ベクトル出力を生成し、インデータ・パス特殊例外値(840)がある場合にそれに対応する例外条件を示す計算指示命令のうちの1つである、請求項1記載の方法。
- 前記第1のコード(620)が単一命令多重データ(SIMD)コードを含む、請求項1記載の方法。
- 前記第1のコード(620)の前記一部分を分析することが、前記第1のコード(620)の前記一部分の依存グラフ(1125)を分析して、そのノードに対応する命令に関する置換として動作指示命令を挿入できる前記依存グラフ(1125)内のノードを識別することを含む、請求項1記載の方法。
- 前記第1のコード(620)の前記一部分を分析することが、前記ノードに対応する前記命令のベクトル出力レジスタ(1130)がチェック可能であるかまたはチェック不能であるかを判断することをさらに含み、
ベクトル出力レジスタ(1130)の各スロットに保管された各値がチェック可能である場合に、前記ベクトル出力レジスタ(1130)がチェック可能であり、
値が生であり、実際に計算された浮動小数点値である場合、または前記値が例外条件を引き起こさないことが保証されている場合に、前記値がチェック可能であり、
値が前記データ処理システム(100)のメモリ(163〜170、199)の記憶イメージまたは前記第1のコード(620)の決定プロセスに影響を与えるか、あるいは前記値を使用する次の計算が前記記憶イメージまたは決定プロセスに影響を与える場合に、前記値が生である、請求項4記載の方法。 - 前記少なくとも1つの非投機的命令を前記動作指示命令(1080)で置換することが、前記第1のコード(620)の前記一部分の前記依存グラフ(1125)内のノードであって、前記第1のコード(620)の前記一部分の前記ベクトル出力レジスタ(1130)の生浮動小数点値が前記インデータ・パス特殊例外値(840)についてチェックされる前記ノードにおいて前記動作指示命令を挿入することを含む、請求項5記載の方法。
- 前記少なくとも1つの非投機的命令を前記動作指示命令で置換することが、前記第1のコード(620)の前記一部分の前記依存グラフ(1125)内の計算が実行される各ノードにおいて前記動作指示命令(1080)を挿入することを含む、請求項5記載の方法。
- 前記第1のコード(620)の前記一部分を分析することが、
その出力ベクトル・レジスタがチェック可能である命令(1030)に関連する少なくとも1つのノードが前記依存グラフ内に存在するかどうかを判断することと、
その出力ベクトル・レジスタ(1130)がチェック可能である命令に関連する少なくとも1つのノードが前記依存グラフ(1125)内に存在しないと判断したことに応答して、前記依存グラフ(1125)内の少なくとも1つのノードが、その出力ベクトル・レジスタ(1130)がチェック可能出力ベクトル・レジスタ(1050)に変換可能である命令に関連する変換可能ノードであるかどうかを判断することと、
前記少なくとも1つの変換可能ノードに関連する前記命令の前記出力ベクトル・レジスタ(1130)がチェック可能であるように、前記少なくとも1つの変換可能ノード(1070)に関連する前記命令を変換すること
をさらに含む、請求項5記載の方法。 - 前記少なくとも1つの変換可能ノード(1070)に関連する前記命令を変換することが、前記出力ベクトル・レジスタ内の非チェック可能値をマスキングすることを含む、請求項8記載の方法。
- 前記少なくとも1つの変換可能ノード(1070)に関連する前記命令を変換することが、前記出力ベクトル・レジスタがチェック可能値のみを保管するようにループ・ピーリングを実行することを含む、請求項8記載の方法。
- 前記少なくとも1つの変換可能ノードに関連する前記命令の前記変換に関連するコストがしきい値を上回るかどうかを判断することと、
前記コストが前記しきい値を上回ることに応答して、前記少なくとも1つの変換可能ノードに関連する前記命令の前記変換を実行しないこと
をさらに含む、請求項8記載の方法。 - 前記コストが前記しきい値を上回る場合に、前記第2のコード(630)のベクトル化が少なくとも部分的に戻される、請求項11記載の方法。
- 前記データ処理システム(100)が、投機的命令が例外条件(820)を生成したことに応答して、例外処理(840)を開始せずに、前記インデータ・パス特殊例外値をベクトル出力レジスタ(1130)に保管するように構成される、請求項1記載の方法。
- 前記少なくとも1つの非投機的命令を前記動作指示命令(1080)で置換することが、前記第1のコード(620)の前記一部分の前記依存グラフ(1125)内のノードであって、比較動作が実行される前記ノードにおいて前記動作指示命令を挿入することを含む、請求項1記載の方法。
- 前記インデータ・パス特殊例外値が、非数値(NaN)値(920)、正の無限大値(950)、または負の無限大値(950)のうちの少なくとも1つである、請求項1記載の方法。
- 前記動作指示命令によって識別される前記インデータ・パス特殊例外値が、前記第2のコード(630)が実行されるコンピューティング・デバイスの構成設定によって制御され、前記構成設定が前記NaN値(920)、正の無限大値(950)、または負の無限大値(950)のうちの1つまたは複数を前記動作指示命令による識別のために使用可能であるものとして指定する、請求項15記載の方法。
- 前記第2のコード(630)を生成することが、前記動作指示命令によって後でチェックされる対応するベクトル・レジスタ(1130)のベクトル要素にインデータ・パス特殊例外値(840)を挿入することにより例外を据え置く投機的命令を前記第2のコード(630)内で生成することを含む、請求項1記載の方法。
- 割り込みがベクトル出力レジスタ内のチェック可能値または非チェック可能値によるものであるかどうかを検出する割り込みハンドラを提供することであって、前記割り込みがチェック可能値によるものであることに応答して前記割り込みハンドラが前記割り込みを処理するための動作を実行し、前記割り込みが非チェック可能値によるものであることに応答して前記割り込みハンドラが前記割り込みを無視すること
をさらに含む、請求項5記載の方法。 - コンピュータ可読プログラムがそこに記録されたコンピュータ可読記憶媒体を含むコンピュータ・プログラムであって、前記コンピュータ可読プログラムが、コンピューティング・デバイス(100)上で実行されると、
第1のコード(620)の一部分を分析して、指定の非投機的動作を実行し、動作指示命令(1020)へのベクトル・レジスタ入力のベクトル・スロット内に存在するインデータ・パス特殊例外値(840)に対応する任意の例外条件を示すための指示動作をさらに実行する前記動作指示命令による置換の候補である前記第1のコード(620)内の前記指定の非投機的動作を実行している少なくとも1つの非投機的命令を識別することと、
前記第1のコード(620)内の指定の非投機的動作を実行している前記少なくとも1つの非投機的命令を前記動作指示命令(1080)で置換することと、
前記少なくとも1つの非投機的命令の前記置換に基づいて第2のコード(630)を生成すること
を前記コンピューティング・デバイス(100)に実行させる、コンピュータ・プログラム。 - データ処理システム(100)において、据え置かれた例外条件を示す特殊値(840)についてチェックするための命令をコードに挿入するための方法であって、
前記データ処理システム(100)のプロセッサ(110、120〜134)により、第1のコード(620)を分析して、指定の非投機的動作を実行し、動作指示命令(1020)へのベクトル・レジスタ入力のベクトル・スロット内に存在するインデータ・パス特殊例外値(840)に対応する任意の例外条件を示すための指示動作をさらに実行する前記動作指示命令による置換の候補である前記第1のコード(620)内の前記指定の非投機的動作を実行している少なくとも1つの非投機的命令を識別することと、
前記プロセッサ(110、120〜134)により、前記第1のコード(620)内の指定の非投機的動作を実行している前記少なくとも1つの非投機的命令を前記動作指示命令(1080)で置換することと、
前記プロセッサ(110、120〜134)により、前記少なくとも1つの非投機的命令の前記置換に基づいて第2のコード(630)を生成することと、
前記データ処理システム(100)の前記プロセッサ(110、120〜134)または他のプロセッサ(110、120〜134)内であるいは他のコンピューティング・デバイス内で前記第2のコード(630)を実行することと、
例外ハンドラを呼び出さずに、例外条件を示す特殊値(840)を使用して前記第2のコード(630)内の投機的命令の実行中に前記例外条件を追跡することと、
前記特殊値(840)を検出し、前記動作指示動作を実行するために、前記第2のコード(630)内の前記動作指示命令を実行することであって、前記指示動作により前記例外ハンドラが呼び出されること
を含む、方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/543,628 US8458684B2 (en) | 2009-08-19 | 2009-08-19 | Insertion of operation-and-indicate instructions for optimized SIMD code |
US12/543,628 | 2009-08-19 | ||
PCT/US2010/042377 WO2011022142A1 (en) | 2009-08-19 | 2010-07-19 | Insertion of operation-and-indicate instructions for optimized simd code |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2013502648A true JP2013502648A (ja) | 2013-01-24 |
JP5583770B2 JP5583770B2 (ja) | 2014-09-03 |
Family
ID=43606222
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2012525576A Expired - Fee Related JP5583770B2 (ja) | 2009-08-19 | 2010-07-19 | 最適化simdコードのための動作指示命令の挿入 |
Country Status (6)
Country | Link |
---|---|
US (1) | US8458684B2 (ja) |
JP (1) | JP5583770B2 (ja) |
CN (1) | CN102473104B (ja) |
DE (1) | DE112010003308T5 (ja) |
GB (1) | GB2486117B (ja) |
WO (1) | WO2011022142A1 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11886839B2 (en) | 2020-01-07 | 2024-01-30 | Fujitsu Limited | Non-transitory computer-readable recording medium, function generation method, and information processing device |
Families Citing this family (39)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7779399B2 (en) * | 2005-05-16 | 2010-08-17 | Armorize Technologies, Inc. | System and method for securing web application code and verifying correctness of software |
US8327344B2 (en) * | 2008-10-14 | 2012-12-04 | International Business Machines Corporation | Array reference safety analysis in the presence of loops with conditional control flow |
US9652231B2 (en) * | 2008-10-14 | 2017-05-16 | International Business Machines Corporation | All-to-all permutation of vector elements based on a permutation pattern encoded in mantissa and exponent bits in a floating-point SIMD architecture |
US8423983B2 (en) * | 2008-10-14 | 2013-04-16 | International Business Machines Corporation | Generating and executing programs for a floating point single instruction multiple data instruction set architecture |
US9411585B2 (en) | 2011-09-16 | 2016-08-09 | International Business Machines Corporation | Multi-addressable register files and format conversions associated therewith |
US9727336B2 (en) * | 2011-09-16 | 2017-08-08 | International Business Machines Corporation | Fine-grained instruction enablement at sub-function granularity based on an indicated subrange of registers |
US8892946B2 (en) * | 2011-12-15 | 2014-11-18 | International Business Machines Corporation | Verifying speculative multithreading in an application |
US9946540B2 (en) | 2011-12-23 | 2018-04-17 | Intel Corporation | Apparatus and method of improved permute instructions with multiple granularities |
WO2013095620A1 (en) | 2011-12-23 | 2013-06-27 | Intel Corporation | Apparatus and method of improved insert instructions |
US9632980B2 (en) * | 2011-12-23 | 2017-04-25 | Intel Corporation | Apparatus and method of mask permute instructions |
US9268569B2 (en) * | 2012-02-24 | 2016-02-23 | Apple Inc. | Branch misprediction behavior suppression on zero predicate branch mispredict |
US9501276B2 (en) * | 2012-12-31 | 2016-11-22 | Intel Corporation | Instructions and logic to vectorize conditional loops |
EP2757468A1 (en) * | 2013-01-22 | 2014-07-23 | Siemens Aktiengesellschaft | Apparatus and method for managing a software development and maintenance system |
US9823924B2 (en) * | 2013-01-23 | 2017-11-21 | International Business Machines Corporation | Vector element rotate and insert under mask instruction |
US20140244987A1 (en) * | 2013-02-22 | 2014-08-28 | Mips Technologies, Inc. | Precision Exception Signaling for Multiple Data Architecture |
CN103207786B (zh) * | 2013-04-28 | 2016-03-23 | 中国人民解放军信息工程大学 | 渐进式智能回溯向量化代码调优方法 |
US9256631B2 (en) | 2013-07-31 | 2016-02-09 | Oracle International Corporation | Building a hash table using vectorized instructions |
US9659046B2 (en) * | 2013-07-31 | 2017-05-23 | Oracle Inernational Corporation | Probing a hash table using vectorized instructions |
US20150052400A1 (en) * | 2013-08-19 | 2015-02-19 | Concurix Corporation | Breakpoint Setting Through a Debugger User Interface |
CA2831711A1 (en) * | 2013-10-31 | 2015-04-30 | Ibm Canada Limited - Ibm Canada Limitee | Performing safe conditional-load and conditional-store operations |
WO2015089314A1 (en) | 2013-12-11 | 2015-06-18 | Mill Computing, Inc. | Computer processor employing operand data with associated meta-data |
US9501268B2 (en) * | 2013-12-23 | 2016-11-22 | International Business Machines Corporation | Generating SIMD code from code statements that include non-isomorphic code statements |
US9529622B1 (en) * | 2014-12-09 | 2016-12-27 | Parallel Machines Ltd. | Systems and methods for automatic generation of task-splitting code |
US10169014B2 (en) | 2014-12-19 | 2019-01-01 | International Business Machines Corporation | Compiler method for generating instructions for vector operations in a multi-endian instruction set |
US9696992B2 (en) | 2014-12-23 | 2017-07-04 | Intel Corporation | Apparatus and method for performing a check to optimize instruction flow |
US9880821B2 (en) * | 2015-08-17 | 2018-01-30 | International Business Machines Corporation | Compiler optimizations for vector operations that are reformatting-resistant |
US9720691B2 (en) * | 2015-09-23 | 2017-08-01 | Qualcomm Incorporated | Speculative scalarization in vector processing |
GB2543302B (en) * | 2015-10-14 | 2018-03-21 | Advanced Risc Mach Ltd | Vector load instruction |
US10671398B2 (en) * | 2017-08-02 | 2020-06-02 | International Business Machines Corporation | Low-overhead, low-latency operand dependency tracking for instructions operating on register pairs in a processor core |
US10534609B2 (en) * | 2017-08-18 | 2020-01-14 | International Business Machines Corporation | Code-specific affiliated register prediction |
US11176084B2 (en) * | 2017-11-09 | 2021-11-16 | International Business Machines Corporation | SIMD instruction sorting pre-sorted source register's data elements into a first ascending order destination register and a second descending destination register |
EP3797355A4 (en) * | 2018-06-22 | 2021-06-09 | Huawei Technologies Co., Ltd. | METHOD FOR DAUGHTER DETECTION AND SYNCHRONIZATION OF OPTIMIZATIONS ON ASYNCHRONOUS PROCESSOR ARCHITECTURES |
US11169804B2 (en) * | 2018-09-24 | 2021-11-09 | Oracle International Corporation | Method for vectorizing d-heaps using horizontal aggregation SIMD instructions |
CN109947479A (zh) * | 2019-01-29 | 2019-06-28 | 安谋科技(中国)有限公司 | 指令执行方法及其处理器、介质和系统 |
CN110806897B (zh) * | 2019-10-29 | 2022-02-01 | 中国人民解放军战略支援部队信息工程大学 | 面向多代码粒度的向量并行性发掘方法 |
US11630864B2 (en) | 2020-02-27 | 2023-04-18 | Oracle International Corporation | Vectorized queues for shortest-path graph searches |
US11222070B2 (en) | 2020-02-27 | 2022-01-11 | Oracle International Corporation | Vectorized hash tables |
US11461297B1 (en) | 2021-06-09 | 2022-10-04 | T-Mobile Usa, Inc. | Ensuring database integrity using a data flow in a graph, such as for use by a wireless telecommunications service provider |
CN117472388B (zh) * | 2023-12-28 | 2024-04-05 | 睿思芯科(深圳)技术有限公司 | 一种优化程序性能的方法、系统及相关设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2000122875A (ja) * | 1998-10-19 | 2000-04-28 | Internatl Business Mach Corp <Ibm> | 例外処理方法およびシステム |
US20030028759A1 (en) * | 1999-08-13 | 2003-02-06 | J. Arjun Prabhu | Exception handling for simd floating point-instructions |
JP2006518060A (ja) * | 2000-12-27 | 2006-08-03 | インテル・コーポレーション | 単一命令多重データ管理のための方法および計算機プログラム |
US20090327665A1 (en) * | 2008-06-30 | 2009-12-31 | Zeev Sperber | Efficient parallel floating point exception handling in a processor |
Family Cites Families (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5655096A (en) * | 1990-10-12 | 1997-08-05 | Branigin; Michael H. | Method and apparatus for dynamic scheduling of instructions to ensure sequentially coherent data in a processor employing out-of-order execution |
US5778219A (en) * | 1990-12-14 | 1998-07-07 | Hewlett-Packard Company | Method and system for propagating exception status in data registers and for detecting exceptions from speculative operations with non-speculative operations |
US5386563A (en) * | 1992-10-13 | 1995-01-31 | Advanced Risc Machines Limited | Register substitution during exception processing |
US5430668A (en) * | 1994-03-07 | 1995-07-04 | Nec Corporation | Floating point multiplier capable of easily performing a failure detection test |
US5799179A (en) * | 1995-01-24 | 1998-08-25 | International Business Machines Corporation | Handling of exceptions in speculative instructions |
US5655115A (en) * | 1995-02-14 | 1997-08-05 | Hal Computer Systems, Inc. | Processor structure and method for watchpoint of plural simultaneous unresolved branch evaluation |
US5742840A (en) * | 1995-08-16 | 1998-04-21 | Microunity Systems Engineering, Inc. | General purpose, multiple precision parallel operation, programmable media processor |
US5748936A (en) * | 1996-05-30 | 1998-05-05 | Hewlett-Packard Company | Method and system for supporting speculative execution using a speculative look-aside table |
US5915117A (en) * | 1997-10-13 | 1999-06-22 | Institute For The Development Of Emerging Architectures, L.L.C. | Computer architecture for the deferral of exceptions on speculative instructions |
US6301705B1 (en) * | 1998-10-01 | 2001-10-09 | Institute For The Development Of Emerging Architectures, L.L.C. | System and method for deferring exceptions generated during speculative execution |
JP3334658B2 (ja) * | 1999-01-07 | 2002-10-15 | 三菱マテリアル株式会社 | 無線通信処理装置およびその記録媒体 |
US6519694B2 (en) * | 1999-02-04 | 2003-02-11 | Sun Microsystems, Inc. | System for handling load errors having symbolic entity generator to generate symbolic entity and ALU to propagate the symbolic entity |
US7000226B2 (en) * | 2002-01-02 | 2006-02-14 | Intel Corporation | Exception masking in binary translation |
DE10206764A1 (de) * | 2002-02-19 | 2003-08-28 | Bosch Gmbh Robert | Verfahren zum Einparken eines Fahrzeugs |
AU2003286131A1 (en) * | 2002-08-07 | 2004-03-19 | Pact Xpp Technologies Ag | Method and device for processing data |
US7707566B2 (en) * | 2003-06-26 | 2010-04-27 | Microsoft Corporation | Software development infrastructure |
US7613950B2 (en) * | 2004-02-27 | 2009-11-03 | Hewlett-Packard Development Company, L.P. | Detecting floating point hardware failures |
US7826380B2 (en) * | 2005-03-30 | 2010-11-02 | International Business Machines Corporation | Apparatus, system, and method for data tracking |
US7421566B2 (en) * | 2005-08-12 | 2008-09-02 | International Business Machines Corporation | Implementing instruction set architectures with non-contiguous register file specifiers |
US8201159B2 (en) * | 2006-08-04 | 2012-06-12 | International Business Machines Corporation | Method and apparatus for generating data parallel select operations in a pervasively data parallel system |
CN100555240C (zh) * | 2007-01-16 | 2009-10-28 | 国际商业机器公司 | 用于诊断应用程序的方法和系统 |
-
2009
- 2009-08-19 US US12/543,628 patent/US8458684B2/en not_active Expired - Fee Related
-
2010
- 2010-07-19 WO PCT/US2010/042377 patent/WO2011022142A1/en active Application Filing
- 2010-07-19 DE DE112010003308T patent/DE112010003308T5/de not_active Ceased
- 2010-07-19 GB GB1204358.4A patent/GB2486117B/en active Active
- 2010-07-19 JP JP2012525576A patent/JP5583770B2/ja not_active Expired - Fee Related
- 2010-07-19 CN CN201080036667.7A patent/CN102473104B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2000122875A (ja) * | 1998-10-19 | 2000-04-28 | Internatl Business Mach Corp <Ibm> | 例外処理方法およびシステム |
US20030028759A1 (en) * | 1999-08-13 | 2003-02-06 | J. Arjun Prabhu | Exception handling for simd floating point-instructions |
JP2006518060A (ja) * | 2000-12-27 | 2006-08-03 | インテル・コーポレーション | 単一命令多重データ管理のための方法および計算機プログラム |
US20090327665A1 (en) * | 2008-06-30 | 2009-12-31 | Zeev Sperber | Efficient parallel floating point exception handling in a processor |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11886839B2 (en) | 2020-01-07 | 2024-01-30 | Fujitsu Limited | Non-transitory computer-readable recording medium, function generation method, and information processing device |
Also Published As
Publication number | Publication date |
---|---|
GB201204358D0 (en) | 2012-04-25 |
JP5583770B2 (ja) | 2014-09-03 |
US8458684B2 (en) | 2013-06-04 |
CN102473104B (zh) | 2015-05-20 |
US20110047359A1 (en) | 2011-02-24 |
WO2011022142A1 (en) | 2011-02-24 |
GB2486117A (en) | 2012-06-06 |
GB2486117B (en) | 2017-03-22 |
CN102473104A (zh) | 2012-05-23 |
DE112010003308T5 (de) | 2012-06-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5583770B2 (ja) | 最適化simdコードのための動作指示命令の挿入 | |
US20110047358A1 (en) | In-Data Path Tracking of Floating Point Exceptions and Store-Based Exception Indication | |
US8327344B2 (en) | Array reference safety analysis in the presence of loops with conditional control flow | |
US8627043B2 (en) | Data parallel function call for determining if called routine is data parallel | |
US8650240B2 (en) | Complex matrix multiplication operations with data pre-conditioning in a high performance computing architecture | |
US9529574B2 (en) | Auto multi-threading in macroscalar compilers | |
US7380112B2 (en) | Processor and compiler for decoding an instruction and executing the decoded instruction with conditional execution flags | |
US8683185B2 (en) | Ceasing parallel processing of first set of loops upon selectable number of monitored terminations and processing second set | |
US20130151822A1 (en) | Efficient Enqueuing of Values in SIMD Engines with Permute Unit | |
US8762444B2 (en) | Fast condition code generation for arithmetic logic unit | |
US20160321039A1 (en) | Technology mapping onto code fragments | |
US20170090922A1 (en) | Efficient Instruction Pair for Central Processing Unit (CPU) Instruction Design | |
US9262140B2 (en) | Predication supporting code generation by indicating path associations of symmetrically placed write instructions | |
US11226821B2 (en) | Computer processor employing operand data with associated meta-data | |
TW201716993A (zh) | 向量資料轉換指令 | |
KR20130097676A (ko) | 제로 프레디케이트 브랜치 예측실패에 대한 브랜치 예측실패 거동 억제 | |
CN110825437B (zh) | 用于处理数据的方法和装置 | |
US7945766B2 (en) | Conditional execution of floating point store instruction by simultaneously reading condition code and store data from multi-port register file | |
US20130067196A1 (en) | Vectorization of machine level scalar instructions in a computer program during execution of the computer program | |
US7010676B2 (en) | Last iteration loop branch prediction upon counter threshold and resolution upon counter one | |
US7120905B2 (en) | System and method for transformation of assembly code for conditional execution | |
US7219336B2 (en) | Tracking format of registers having multiple content formats in binary translation | |
Jeroen van Straten | ρ-VEX user manual |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20130408 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20140225 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20140311 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20140605 |
|
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: 20140701 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20140716 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5583770 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |