JP6179524B2 - 実行制御方法及び情報処理装置 - Google Patents
実行制御方法及び情報処理装置 Download PDFInfo
- Publication number
- JP6179524B2 JP6179524B2 JP2014543074A JP2014543074A JP6179524B2 JP 6179524 B2 JP6179524 B2 JP 6179524B2 JP 2014543074 A JP2014543074 A JP 2014543074A JP 2014543074 A JP2014543074 A JP 2014543074A JP 6179524 B2 JP6179524 B2 JP 6179524B2
- Authority
- JP
- Japan
- Prior art keywords
- code
- loop
- true
- condition
- executed
- 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.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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
- G06F8/452—Loops
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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
- G06F9/3844—Speculative instruction execution using dynamic branch prediction, e.g. using branch history tables
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3466—Performance evaluation by tracing or monitoring
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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 OR CALCULATING; 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
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
- G06F9/322—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
- G06F9/325—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for loops, e.g. loop detection or loop counter
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
- G06F9/45516—Runtime code conversion or optimisation
- G06F9/45525—Optimisation or modification within the same instruction set architecture, e.g. HP Dynamo
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3409—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/865—Monitoring of software
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/88—Monitoring involving counting
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
- Complex Calculations (AREA)
- Devices For Executing Special Programs (AREA)
Description
b(TruexTm+α)+(a−b)(TrueyTm+α)
=TruexbTm+bα+TrueyaTm−TrueybTm+(a−b)α
=(Truex−Truey)bTm+TrueyaTm+aα (1)
bTm+(a−b)(TrueyTm+α)
=bTm+TrueyaTm−TrueybTm+(a−b)α
=(1−Truey)bTm+TrueyaTm+(a−b)α
=((1−Truey)b+Trueya)Tm+(a−b)α (2)
aTm>((1−Truey)b+Trueya)Tm+(a−b)α
aTm−((1−Truey)b+Trueya)Tm>(a−b)α
(1−Truey)aTm−(1−Truey)bTm>(a−b)α
(1−Truey)(a−b)Tm>(a−b)α
(1−Truey)Tm>α (3)
(Truex−Truey)bTm+TrueyaTm+aα>((1−Truey)b+Trueya)Tm+(a−b)α
TruexbTm−bTm>−bα
bα>(1−Truex)bTm
α>(1−Truex)Tm (4)
(1−Truex)Tm<α<(1−Truey)Tm
Claims (5)
- 内部に条件分岐を含み且つ予め指定されたループを含むソースコードから生成されたオブジェクトコードに含まれ且つ前記条件分岐がそのままコード化された前記ループについての第1のコード、又は前記オブジェクトコードに含まれ且つ前記条件分岐による条件が真となるループインデックスを抽出した上で抽出されたループインデックスのみについて前記条件が真となる場合における分岐先演算を実行するための第2のコードを実行している間において、前記条件が真となった回数を複数取得し、
取得された複数の回数のうち最も小さい回数と、前記条件が真となった回数の割合であって且つ前記複数の回数の各々について算出される割合のうち最も小さい割合とのいずれかに基づき、前記第2のコードと、前記オブジェクトコードに含まれ且つ述語付き命令を用いて前記条件分岐による分岐先演算のいずれかの演算結果をメモリに書き込むための第3のコードとのうちいずれかをプロセッサに実行させる
処理を、前記プロセッサに実行させるためのプログラム。 - 前記条件が真となった回数を複数取得する処理が、
前記オブジェクトコードの実行中定期的又は不定期に実行される
請求項1記載のプログラム。 - 前記条件が真となった回数を複数取得する処理が、前記条件が真となった回数についてのデータを、前記プロセッサのカウンタから複数回取得する処理を含む
請求項1又は2記載のプログラム。 - 内部に条件分岐を含み且つ予め指定されたループを含むソースコードから生成されたオブジェクトコードに含まれ且つ前記条件分岐がそのままコード化された前記ループについての第1のコード、又は前記オブジェクトコードに含まれ且つ前記条件分岐による条件が真となるループインデックスを抽出した上で抽出されたループインデックスのみについて前記条件が真となる場合における分岐先演算を実行するための第2のコードを実行している間において、前記条件が真となった回数を複数取得し、
取得された複数の回数のうち最も小さい回数と、前記条件が真となった回数の割合であって且つ前記複数の回数の各々について算出される割合のうち最も小さい割合とのいずれかに基づき、前記第2のコードと、前記オブジェクトコードに含まれ且つ述語付き命令を用いて前記条件分岐による分岐先演算のいずれかの演算結果をメモリに書き込むための第3のコードとのうちいずれかをプロセッサに実行させる
処理を含み、前記プロセッサにより実行される実行制御方法。 - 内部に条件分岐を含み且つ予め指定されたループを含むソースコードから生成されたオブジェクトコードに含まれ且つ前記条件分岐がそのままコード化された前記ループについての第1のコード、又は前記オブジェクトコードに含まれ且つ前記条件分岐による条件が真となるループインデックスを抽出した上で抽出されたループインデックスのみについて前記条件が真となる場合における分岐先演算を実行するための第2のコードを実行している間において、前記条件が真となった回数を複数取得する手段と、
取得された複数の回数のうち最も小さい回数と、前記条件が真となった回数の割合であって且つ前記複数の回数の各々について算出される割合のうち最も小さい割合とのいずれかに基づき、前記第2のコードと、前記オブジェクトコードに含まれ且つ述語付き命令を用いて前記条件分岐による分岐先演算のいずれかの演算結果をメモリに書き込むための第3のコードとのうちいずれかをプロセッサに実行させる手段と、
を有する情報処理装置。
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| PCT/JP2012/077599 WO2014064798A1 (ja) | 2012-10-25 | 2012-10-25 | 実行制御方法及び情報処理装置 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JPWO2014064798A1 JPWO2014064798A1 (ja) | 2016-09-05 |
| JP6179524B2 true JP6179524B2 (ja) | 2017-08-16 |
Family
ID=50544196
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2014543074A Expired - Fee Related JP6179524B2 (ja) | 2012-10-25 | 2012-10-25 | 実行制御方法及び情報処理装置 |
Country Status (4)
| Country | Link |
|---|---|
| US (1) | US9459852B2 (ja) |
| EP (1) | EP2913761A4 (ja) |
| JP (1) | JP6179524B2 (ja) |
| WO (1) | WO2014064798A1 (ja) |
Families Citing this family (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US10521208B2 (en) * | 2017-06-23 | 2019-12-31 | Microsoft Technology Licensing, Llc. | Differentiated static analysis for dynamic code optimization |
| JP7091726B2 (ja) * | 2018-03-08 | 2022-06-28 | 富士通株式会社 | 情報処理装置,プログラム及び情報処理方法 |
| US20230315453A1 (en) * | 2022-04-01 | 2023-10-05 | Intel Corporation | Forward conditional branch event for profile-guided-optimization (pgo) |
Family Cites Families (9)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPS59165147A (ja) | 1983-03-11 | 1984-09-18 | Fujitsu Ltd | コンパイラにおける条件文のベクトル命令化方式 |
| JPS608942A (ja) * | 1983-06-28 | 1985-01-17 | Fujitsu Ltd | 条件文のベクトル処理方式 |
| JPS63632A (ja) * | 1986-06-19 | 1988-01-05 | Fujitsu Ltd | 原始プログラムの最適化処理方式 |
| JPS6353646A (ja) * | 1986-08-22 | 1988-03-07 | Nec Corp | 最適目的プログラム生成方式 |
| JPH03110670A (ja) * | 1989-09-25 | 1991-05-10 | Nec Corp | ベクトル計算機 |
| JP3152194B2 (ja) * | 1996-12-26 | 2001-04-03 | 日本電気株式会社 | コンパイル装置、コンパイル方法およびコンパイラを記録した記録媒体 |
| JP3699354B2 (ja) * | 1998-12-22 | 2005-09-28 | 富士通株式会社 | 最適化オブジェクト生成装置及び方法 |
| US8069440B2 (en) * | 2006-10-27 | 2011-11-29 | Oracle America, Inc. | Adaptive code through self steered execution |
| US8793675B2 (en) * | 2010-12-24 | 2014-07-29 | Intel Corporation | Loop parallelization based on loop splitting or index array |
-
2012
- 2012-10-25 JP JP2014543074A patent/JP6179524B2/ja not_active Expired - Fee Related
- 2012-10-25 EP EP12887026.8A patent/EP2913761A4/en not_active Withdrawn
- 2012-10-25 WO PCT/JP2012/077599 patent/WO2014064798A1/ja not_active Ceased
-
2015
- 2015-04-24 US US14/695,344 patent/US9459852B2/en active Active
Also Published As
| Publication number | Publication date |
|---|---|
| EP2913761A4 (en) | 2016-06-15 |
| JPWO2014064798A1 (ja) | 2016-09-05 |
| WO2014064798A1 (ja) | 2014-05-01 |
| US20150234641A1 (en) | 2015-08-20 |
| US9459852B2 (en) | 2016-10-04 |
| EP2913761A1 (en) | 2015-09-02 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP4042604B2 (ja) | プログラム並列化装置,プログラム並列化方法およびプログラム並列化プログラム | |
| US20200159590A1 (en) | Processing method for a multicore processor and multicore processor | |
| EP3106982B1 (en) | Determination of branch convergence in a sequence of program instructions | |
| KR100875836B1 (ko) | 병렬 처리 vliw 컴퓨터를 위한 인스트럭션 명령어 압축장치 및 그 방법 | |
| US8578355B1 (en) | Scenario based optimization | |
| US20120154412A1 (en) | Run-time allocation of functions to a hardware accelerator | |
| KR102379894B1 (ko) | 벡터 연산들 수행시의 어드레스 충돌 관리 장치 및 방법 | |
| CN105579967A (zh) | Gpu发散栅栏 | |
| US10558500B2 (en) | Scheduling heterogenous processors | |
| US20130318540A1 (en) | Data flow graph processing device, data flow graph processing method, and data flow graph processing program | |
| JP6179524B2 (ja) | 実行制御方法及び情報処理装置 | |
| KR20200128702A (ko) | 분기 명령의 추적 | |
| US8850404B2 (en) | Relational modeling for performance analysis of multi-core processors using virtual tasks | |
| US20160357655A1 (en) | Performance information generating method, information processing apparatus and computer-readable storage medium storing performance information generation program | |
| CN105404635B (zh) | 字符串匹配的方法、设备和异构计算系统 | |
| KR102603377B1 (ko) | 데이터 처리 | |
| CN112667170A (zh) | 一种面向滑动窗口数据分析的Spark数据缓存方法 | |
| KR20130066402A (ko) | 트레이스 데이터 저장 장치 및 방법 | |
| KR20240119492A (ko) | Gpu 데이터 접근 코알레싱 시각화 방법 | |
| US11061988B2 (en) | Reducing web page load times | |
| CN104615473B (zh) | 轮廓技术编译的优化方法及装置 | |
| US20170108907A1 (en) | Design space reduction in processor stressmark generation | |
| JP6528531B2 (ja) | コンパイラプログラム、コンパイル方法、及び情報処理装置 | |
| US11561778B1 (en) | Instrumentation for nested conditional checks | |
| US20180011795A1 (en) | Information processing apparatus and cache information output method |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20160705 |
|
| A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20160902 |
|
| A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20170214 |
|
| A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20170417 |
|
| 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: 20170620 |
|
| A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20170703 |
|
| R150 | Certificate of patent or registration of utility model |
Ref document number: 6179524 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
| LAPS | Cancellation because of no payment of annual fees |