JP7403465B2 - 短絡高速化のための複合条件の並べ替え - Google Patents
短絡高速化のための複合条件の並べ替え Download PDFInfo
- Publication number
- JP7403465B2 JP7403465B2 JP2020556305A JP2020556305A JP7403465B2 JP 7403465 B2 JP7403465 B2 JP 7403465B2 JP 2020556305 A JP2020556305 A JP 2020556305A JP 2020556305 A JP2020556305 A JP 2020556305A JP 7403465 B2 JP7403465 B2 JP 7403465B2
- Authority
- JP
- Japan
- Prior art keywords
- conditions
- ordering
- code block
- constraints
- orderings
- 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.)
- Active
Links
- 150000001875 compounds Chemical class 0.000 title claims description 44
- 238000000034 method Methods 0.000 claims description 42
- 238000011156 evaluation Methods 0.000 claims description 17
- 238000004891 communication Methods 0.000 description 8
- 238000012545 processing Methods 0.000 description 8
- 230000006870 function Effects 0.000 description 5
- 238000004364 calculation method Methods 0.000 description 3
- 239000002131 composite material Substances 0.000 description 3
- 238000007667 floating Methods 0.000 description 3
- 230000003068 static effect Effects 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 101000822695 Clostridium perfringens (strain 13 / Type A) Small, acid-soluble spore protein C1 Proteins 0.000 description 1
- 101000655262 Clostridium perfringens (strain 13 / Type A) Small, acid-soluble spore protein C2 Proteins 0.000 description 1
- 240000007594 Oryza sativa Species 0.000 description 1
- 235000007164 Oryza sativa Nutrition 0.000 description 1
- 101000655256 Paraclostridium bifermentans Small, acid-soluble spore protein alpha Proteins 0.000 description 1
- 101000655264 Paraclostridium bifermentans Small, acid-soluble spore protein beta Proteins 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000003190 augmentative effect Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000007177 brain activity Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000004883 computer application Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000011982 device technology Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 235000009566 rice Nutrition 0.000 description 1
- 238000013515 script Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3604—Software analysis for verifying properties of programs
- G06F11/3616—Software analysis for verifying properties of programs using software metrics
-
- 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
-
- 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/43—Checking; Contextual analysis
-
- 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/43—Checking; Contextual analysis
- G06F8/433—Dependency analysis; Data or control flow analysis
-
- 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/3005—Arrangements for executing specific machine instructions to perform operations for flow control
- G06F9/30058—Conditional branch instructions
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Devices For Executing Special Programs (AREA)
- Stored Programmes (AREA)
- Executing Machine-Instructions (AREA)
Description
[0004] 以上のコード例では、基本的コード生成方式が、最初に、条件1、条件2、および条件3を計算する式を計算する。次いで、生成されたコードが「&&」演算を実行して、最終的な1つの条件値を計算し、これに基づいて、IFコードを実行すべきか、またはELSEコードを実行すべきかについて判断を下す。
[0065] この態様によれば、各コード・ブロックが基本ブロックであってもよい。
[0067] この態様によれば、プロセッサーが、各順序付けについて、少なくとも部分的に、その順序付けに含まれる各命令に推定コスト・スコアを割り当て、各命令に割り当てられたそれぞれの推定コスト・スコアを合計することによって、それぞれの推定計算コストを判定するように構成されてもよい。
[0073] この態様によれば、各コード・ブロックが基本ブロックであってもよい。
Claims (15)
- プロセッサーを備えるコンピューティング・デバイスであって、
前記プロセッサーが、コンパイラにおいてソース・コードを受けるように構成され、
前記ソース・コードが、
複数の条件を有する少なくとも1つの複合条件と、
前記複数の条件の中の各条件について、前記条件を評価するための1つ以上の命令を含むそれぞれのコード・ブロックと、
を含み、
前記複数の条件の複数の順序付けの中の2つ以上の順序付けが、前記複数の条件の構文構造に対する1つ以上の正当さ制約を満たし、かつ、前記複数の順序付けの内少なくとも1つの順位付けが前記1つ以上の正当さ制約を満たさないことを判定し、
前記1つ以上の正当さ制約を満たさない前記少なくとも1つの順序付けによる、前記複数の条件のコンパイルを禁止し、
前記1つ以上の正当さ制約を満たす前記複数の順序付けの中の各順序付けについて、前記順序付けが前記1つ以上の正当さ制約を満たすことを判定した後に、当該順序付けのそれぞれの推定計算コストを判定し、
前記1つ以上の正当さ制約を満たす前記複数の順序付けの内、最低の推定計算コストを有する順序付けを有するように、前記複数の条件を並べ替える、コンピューティング・デバイス。 - 請求項1記載のコンピューティング・デバイスにおいて、前記ソース・コードが、更に、
前記複数の条件が真のときに実行されるように構成された1つ以上の第1分岐評価命令を含む第1分岐コード・ブロックと、
前記複数の条件の内少なくとも1つの条件が偽のときに実行されるように構成された1つ以上の第2分岐評価命令を含む第2分岐コード・ブロックと、
を含む、コンピューティング・デバイス。 - 請求項2記載のコンピューティング・デバイスにおいて、前記1つ以上の正当さ制約が、前記ソース・コードが1つの第1分岐コード・ブロックと1つの第2分岐コード・ブロックとを含むという制約を含む、コンピューティング・デバイス。
- 請求項1記載のコンピューティング・デバイスにおいて、前記1つ以上の正当さ制約が、各条件のそれぞれのコード・ブロックが、共通目標コード・ブロックに進むための命令を含むという制約を含む、コンピューティング・デバイス。
- 請求項4記載のコンピューティング・デバイスにおいて、前記1つ以上の正当さ制約が、前記複数の条件のそれぞれのコード・ブロックの最後のコード・ブロックの後ろであって、前記共通目標コード・ブロックの前にある前記ソース・コードの部分が、1つの入口ポイントおよび1つの出口ポイントを有するという制約を含む、コンピューティング・デバイス。
- 請求項1記載のコンピューティング・デバイスにおいて、前記1つ以上の正当さ制約が、未定義変数をコールする命令はないという制約を含む、コンピューティング・デバイス。
- 請求項1記載のコンピューティング・デバイスにおいて、各コード・ブロックが基本ブロックである、コンピューティング・デバイス。
- 請求項1記載のコンピューティング・デバイスにおいて、少なくとも1つのコード・ブロックが、複数の基本ブロックを含む、コンピューティング・デバイス。
- 請求項1記載のコンピューティング・デバイスにおいて、前記プロセッサーが、少なくとも部分的に、
前記順序付けに含まれる各命令に推定コスト・スコアを割り当て、
各命令に割り当てられた前記それぞれの推定コスト・スコアを合計することによって、
各順序付けについて、それぞれの推定計算コストを判定するように構成される、コンピューティング・デバイス。 - 請求項1記載のコンピューティング・デバイスにおいて、前記複合条件が、3つ以上の条件を含む、コンピューティング・デバイス。
- コンピューティング・デバイスのプロセッサーによって実行される方法であって、前記方法が、コンパイラにおいてソース・コードを受けるステップであって、
前記ソース・コードが、
複数の条件を有する少なくとも1つの複合条件と、
前記複数の条件の中の各条件について、前記条件を評価するための1つ以上の命令を含むそれぞれのコード・ブロックと、
を含む、ステップと、
前記複数の条件の複数の順序付けの中の2つ以上の順序付けが、前記複数の条件の構文構造に対する1つ以上の正当さ制約を満たし、かつ、前記複数の順序付けの内少なくとも1つの順位付けが前記1つ以上の正当さ制約を満たさないことを判定するステップと、
前記1つ以上の正当さ制約を満たさない前記少なくとも1つの順序付けによる、前記複数の条件のコンパイルを禁止するステップと、
前記1つ以上の正当さ制約を満たす前記複数の順序付けの中の各順序付けについて、前記順序付けが前記1つ以上の正当さ制約を満たすことを判定した後に、当該順序付けのそれぞれの推定計算コストを判定するステップと、
前記1つ以上の正当さ制約を満たす前記複数の順序付けの内、最も低い推定計算コストを有する順序付けを有するように、前記複数の条件を並べ替えるステップと、
を含む、方法。 - 請求項11記載の方法において、前記コードが、更に、
前記複数の条件が真のときに実行されるように構成された1つ以上の第1分岐評価命令を含む第1分岐コード・ブロックと、
前記複数の条件の内少なくとも1つの条件が偽のときに実行されるように構成された1つ以上の第2分岐評価命令を含む第2分岐コード・ブロックと、
を含む、方法。 - 請求項11記載の方法において、前記1つ以上の正当さ制約が、各条件のそれぞれのコード・ブロックが、共通目標コード・ブロックに進むための命令を含むという制約を含む、方法。
- 請求項11記載の方法において、前記1つ以上の正当さ制約が、未定義変数をコールする命令はないという制約を含む、方法。
- 請求項11記載の方法において、各順序付けについて、前記それぞれの推定計算コストを判定するステップが、
前記順序付けに含まれる各命令に、推定コスト・スコアを割り当てるステップと、
各命令に割り当てられた前記それぞれの推定コスト・スコアを合計するステップと、
を含む、方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/953,334 US11334469B2 (en) | 2018-04-13 | 2018-04-13 | Compound conditional reordering for faster short-circuiting |
US15/953,334 | 2018-04-13 | ||
PCT/US2019/021719 WO2019199401A1 (en) | 2018-04-13 | 2019-03-12 | Compound conditional reordering for faster short-circuiting |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2021521538A JP2021521538A (ja) | 2021-08-26 |
JP7403465B2 true JP7403465B2 (ja) | 2023-12-22 |
Family
ID=66102751
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2020556305A Active JP7403465B2 (ja) | 2018-04-13 | 2019-03-12 | 短絡高速化のための複合条件の並べ替え |
Country Status (13)
Country | Link |
---|---|
US (2) | US11334469B2 (ja) |
EP (1) | EP3776182B1 (ja) |
JP (1) | JP7403465B2 (ja) |
KR (1) | KR102696696B1 (ja) |
CN (1) | CN111971651A (ja) |
AU (1) | AU2019253162A1 (ja) |
BR (1) | BR112020018280A2 (ja) |
CA (1) | CA3094994A1 (ja) |
IL (1) | IL277945B1 (ja) |
MX (1) | MX2020010614A (ja) |
PH (1) | PH12020551688A1 (ja) |
SG (1) | SG11202008493SA (ja) |
WO (1) | WO2019199401A1 (ja) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20200167668A1 (en) * | 2018-11-27 | 2020-05-28 | Sap Se | Dynamic rule execution order |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2004021553A (ja) | 2002-06-14 | 2004-01-22 | Matsushita Electric Ind Co Ltd | プロセッサ、プログラム変換装置及びプログラム変換方法、並びにコンピュータプログラム |
US20070174830A1 (en) | 2006-01-24 | 2007-07-26 | Kim-Chyan Gan | Method and apparatus for optimizing boolean expression evaluation |
Family Cites Families (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
IL100990A (en) * | 1991-02-27 | 1995-10-31 | Digital Equipment Corp | Multilingual optimization compiler that uses Gladi in the production of a multi-pass cipher |
JPH0736706A (ja) * | 1993-07-19 | 1995-02-07 | Matsushita Electric Ind Co Ltd | 最適化コンパイラ |
JPH0869380A (ja) * | 1994-08-29 | 1996-03-12 | Fujitsu Ltd | ソースプログラムチェック装置 |
JP3650649B2 (ja) * | 1995-06-16 | 2005-05-25 | 松下電器産業株式会社 | 最適化装置 |
US7725885B1 (en) * | 2000-05-09 | 2010-05-25 | Hewlett-Packard Development Company, L.P. | Method and apparatus for trace based adaptive run time compiler |
CA2321016A1 (en) * | 2000-09-27 | 2002-03-27 | Ibm Canada Limited-Ibm Canada Limitee | Interprocedural dead store elimination |
US8307197B2 (en) | 2001-02-14 | 2012-11-06 | University Of North Carolina At Charlotte | Short-circuit evaluation of Boolean expression by rolling up sub-expression result in registers storing default value |
US7308683B2 (en) * | 2003-10-30 | 2007-12-11 | International Business Machines Corporation | Ordering of high use program code segments using simulated annealing |
US7747992B2 (en) * | 2004-08-23 | 2010-06-29 | Intel Corporation | Methods and apparatus for creating software basic block layouts |
US7716630B2 (en) * | 2005-06-27 | 2010-05-11 | Ab Initio Technology Llc | Managing parameters for graph-based computations |
JP4860240B2 (ja) * | 2005-11-11 | 2012-01-25 | パナソニック株式会社 | 翻訳方法および実行通知命令の埋め込み方法 |
US8032875B2 (en) * | 2006-11-28 | 2011-10-04 | Oracle America, Inc. | Method and apparatus for computing user-specified cost metrics in a data space profiler |
US8024719B2 (en) * | 2008-11-03 | 2011-09-20 | Advanced Micro Devices, Inc. | Bounded hash table sorting in a dynamic program profiling system |
US8429635B2 (en) * | 2009-10-28 | 2013-04-23 | International Buisness Machines Corporation | Controlling compiler optimizations |
US8683468B2 (en) * | 2011-05-16 | 2014-03-25 | Advanced Micro Devices, Inc. | Automatic kernel migration for heterogeneous cores |
US8600727B2 (en) * | 2011-10-11 | 2013-12-03 | Unisys Corporation | Streamlined execution of emulated code using block-based translation mode |
US9483275B2 (en) * | 2011-12-16 | 2016-11-01 | Intel Corporation | Method and system using exceptions for code specialization in a computer architecture that supports transactions |
US9195441B2 (en) * | 2013-07-30 | 2015-11-24 | Facebook, Inc. | Systems and methods for incremental compilation at runtime using relaxed guards |
US20170123775A1 (en) * | 2014-03-26 | 2017-05-04 | Empire Technology Development Llc | Compilation of application into multiple instruction sets for a heterogeneous processor |
US9274771B1 (en) | 2014-09-22 | 2016-03-01 | Oracle International Corporation | Automated adaptive compiler optimization |
US10175964B2 (en) * | 2014-09-26 | 2019-01-08 | Microsoft Technology Licensing, Llc | Compiler caching for runtime routine redundancy tracking |
US10025690B2 (en) * | 2016-02-23 | 2018-07-17 | International Business Machines Corporation | Method of reordering condition checks |
US11093225B2 (en) * | 2018-06-28 | 2021-08-17 | Xilinx, Inc. | High parallelism computing system and instruction scheduling method thereof |
-
2018
- 2018-04-13 US US15/953,334 patent/US11334469B2/en active Active
-
2019
- 2019-03-12 IL IL277945A patent/IL277945B1/en unknown
- 2019-03-12 AU AU2019253162A patent/AU2019253162A1/en not_active Abandoned
- 2019-03-12 EP EP19717015.2A patent/EP3776182B1/en active Active
- 2019-03-12 MX MX2020010614A patent/MX2020010614A/es unknown
- 2019-03-12 CN CN201980025128.4A patent/CN111971651A/zh active Pending
- 2019-03-12 KR KR1020207029211A patent/KR102696696B1/ko active IP Right Grant
- 2019-03-12 CA CA3094994A patent/CA3094994A1/en active Pending
- 2019-03-12 JP JP2020556305A patent/JP7403465B2/ja active Active
- 2019-03-12 WO PCT/US2019/021719 patent/WO2019199401A1/en active Application Filing
- 2019-03-12 SG SG11202008493SA patent/SG11202008493SA/en unknown
- 2019-03-12 BR BR112020018280-0A patent/BR112020018280A2/pt unknown
-
2020
- 2020-10-13 PH PH12020551688A patent/PH12020551688A1/en unknown
-
2022
- 2022-05-13 US US17/663,303 patent/US20220283927A1/en active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2004021553A (ja) | 2002-06-14 | 2004-01-22 | Matsushita Electric Ind Co Ltd | プロセッサ、プログラム変換装置及びプログラム変換方法、並びにコンピュータプログラム |
US20070174830A1 (en) | 2006-01-24 | 2007-07-26 | Kim-Chyan Gan | Method and apparatus for optimizing boolean expression evaluation |
Also Published As
Publication number | Publication date |
---|---|
CN111971651A (zh) | 2020-11-20 |
PH12020551688A1 (en) | 2021-07-19 |
KR102696696B1 (ko) | 2024-08-19 |
MX2020010614A (es) | 2020-10-20 |
EP3776182B1 (en) | 2024-04-24 |
US11334469B2 (en) | 2022-05-17 |
EP3776182A1 (en) | 2021-02-17 |
SG11202008493SA (en) | 2020-10-29 |
AU2019253162A1 (en) | 2020-10-01 |
WO2019199401A1 (en) | 2019-10-17 |
US20190317881A1 (en) | 2019-10-17 |
BR112020018280A2 (pt) | 2020-12-29 |
KR20200139698A (ko) | 2020-12-14 |
IL277945B1 (en) | 2024-07-01 |
US20220283927A1 (en) | 2022-09-08 |
IL277945A (en) | 2020-11-30 |
CA3094994A1 (en) | 2019-10-17 |
JP2021521538A (ja) | 2021-08-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10877757B2 (en) | Binding constants at runtime for improved resource utilization | |
US8549502B2 (en) | Compiler with user-defined type inference rules | |
CN105849698B (zh) | 动态编程中的执行防护 | |
US11550554B2 (en) | Merged machine-level intermediate representation optimizations | |
JP2016224882A (ja) | 並列計算装置、コンパイル装置、並列処理方法、コンパイル方法、並列処理プログラムおよびコンパイルプログラム | |
US9921951B2 (en) | Optimizations for regression tracking and triaging in software testing | |
KR20220125198A (ko) | 데이터의 추가 기록 방법, 장치, 전자 기기, 저장 매체 및 컴퓨터 프로그램매체 | |
EP3438814B1 (en) | Storing memory profile data of an application in non-volatile memory | |
JP7403465B2 (ja) | 短絡高速化のための複合条件の並べ替え | |
US8769498B2 (en) | Warning of register and storage area assignment errors | |
US10459817B2 (en) | Evaluating performance improvement of executing instructions in a first processor over execution on a second processor | |
US11593078B2 (en) | Reload ordering for executable code modules | |
US11573777B2 (en) | Method and apparatus for enabling autonomous acceleration of dataflow AI applications | |
US10936290B2 (en) | Compile-time folding of assumed constant values | |
CN114041116A (zh) | 数据移动任务优化的方法和装置 | |
US10795682B2 (en) | Generating vector based selection control statements | |
US11398004B2 (en) | Allocating device buffer on GPGPU for an object with metadata using access boundary alignment | |
US11157252B2 (en) | Assessment of the benefit of post-inlining program transformation in inlining decisions | |
US10970073B2 (en) | Branch optimization during loading | |
Conlan et al. | High-Performance Computing |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20220311 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20230308 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20230502 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20230802 |
|
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: 20231113 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20231212 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 7403465 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |