JP5681473B2 - プログラムの最適化装置、最適化方法および最適化プログラム - Google Patents
プログラムの最適化装置、最適化方法および最適化プログラム Download PDFInfo
- Publication number
- JP5681473B2 JP5681473B2 JP2010279022A JP2010279022A JP5681473B2 JP 5681473 B2 JP5681473 B2 JP 5681473B2 JP 2010279022 A JP2010279022 A JP 2010279022A JP 2010279022 A JP2010279022 A JP 2010279022A JP 5681473 B2 JP5681473 B2 JP 5681473B2
- Authority
- JP
- Japan
- Prior art keywords
- code
- instruction
- program
- branch
- transaction
- 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
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
- G06F8/4443—Inlining
-
- 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/44—Encoding
- G06F8/447—Target code generation
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
Description
Claims (17)
- トランザクションの排他制御を可能にするトランザクショナル・メモリを備えるプログラムの最適化装置であって、
プログラムを解釈し、前記プログラム内の指定された処理を実行するための複数の命令から構成される命令列の前後にトランザクションを開始させる開始命令とトランザクションを終了させる終了命令とを挿入した第1コードを生成する第1コード生成部と、
前記指定された処理に応じて、所定のタイミングで前記複数の命令を用いて第2コードを生成する第2コード生成部と、
トランザクション内で前記第1コードの前記命令列を前記第2コードで上書き、または前記第1コードの一部に前記第2コードを書き込むコード書込部とを備える、プログラムの最適化装置。 - 前記指定された処理は、関数呼び出し処理で、前記複数の命令は、引数を設定する命令と、関数を呼び出す命令と、返し値を読み出す命令とを含む、請求項1に記載のプログラムの最適化装置。
- 前記所定のタイミングは、前記プログラムの実行中に呼び出した関数を解釈した際である、請求項2に記載のプログラムの最適化装置。
- 前記第2コード生成部は、前記呼び出した関数が解釈されたことに応答して、前記命令列内の前記関数を呼び出す命令を、前記呼び出した関数内の値を読み出す命令で置換し、置換した前記値を読み出す命令内のパラメータを変更し、前記命令列内の前記引数を設定する命令および前記返し値を読み出す命令を含む不要な命令群を削除して、最適化した前記第2コードを生成する、請求項3に記載のプログラムの最適化装置。
- 前記第2コードのコード・サイズが前記第1コードの前記命令列のコード・サイズ以下であるかを判定するサイズ判定部をさらに含み、
前記命令列のコード・サイズ以下と判定された場合に、前記コード書込部が、前記第1コードの前記命令列に前記第2コードを上書きする、請求項1〜4のいずれか1項に記載のプログラムの最適化装置。 - 前記指定された処理は、分岐を伴う処理で、前記複数の命令は、少なくとも1つの分岐命令と、分岐先で実行すべき命令とを含む、請求項1に記載のプログラムの最適化装置。
- 前記プログラムを解釈した際に、計測された分岐命令の成立回数および不成立回数から得られる実行頻度を用い、分岐先の実行頻度が閾値より低くなるかどうかを判定する頻度判定部をさらに含み、
前記第2コード生成部は、前記所定のタイミングとして、前記プログラムを解釈した際の前記頻度判定部により分岐先の実行頻度が閾値より低くなると判断されたことに応答して、低くなると判断された前記分岐先の直前の前記分岐命令までの一連の制御フローである、前記第2コードを構成するためのトレースを生成する、請求項6に記載のプログラムの最適化装置。 - 前記プログラムの実行中に前記分岐先の命令がアボートした回数が設定値を超えたか否かを判定するアボート判定部と、前記設定値を超えたと判定した場合に、アボートを発生させた命令を含まない前記トレースを、前記第2コード生成部が生成した複数のトレースの中から検索するトレース検索部とを含み、
前記コード書込部が、トランザクション内で前記第1コードの一部に、検索された前記トレースから構成される前記第2コードを書き込む、請求項7に記載のプログラムの最適化装置。 - トランザクションの排他制御を可能にするトランザクショナル・メモリを備えるプログラムの最適化装置により実行される方法であって、
プログラムを解釈し、前記プログラム内の指定された処理を実行するための複数の命令から構成される命令列の前後にトランザクションを開始させる開始命令とトランザクションを終了させる終了命令とを挿入した第1コードを生成するステップと、
前記指定された処理に応じて、所定のタイミングで前記複数の命令を用いて第2コードを生成するステップと、
トランザクション内で前記第1コードの前記命令列を前記第2コードで上書き、または前記第1コードの一部に前記第2コードを書き込むステップとを含む、プログラムの最適化方法。 - 前記指定された処理は、関数呼び出し処理で、前記複数の命令は、引数を設定する命令と、関数を呼び出す命令と、返し値を読み出す命令とを含む、請求項9に記載のプログラムの最適化方法。
- 前記所定のタイミングは、前記プログラムの実行中に呼び出した関数を解釈した際である、請求項10に記載のプログラムの最適化方法。
- 前記第2コードを生成するステップは、前記呼び出した関数が解釈されたことに応答して、前記命令列内の前記関数を呼び出す命令を、前記呼び出した関数内の値を読み出す命令で置換し、置換した前記値を読み出す命令内のパラメータを変更し、前記命令列内の前記引数を設定する命令および前記返し値を読み出す命令を含む不要な命令群を削除して、最適化した前記第2コードを生成する、請求項11に記載のプログラムの最適化方法。
- 前記第2コードのコード・サイズが前記第1コードの前記命令列のコード・サイズ以下であるかを判定するステップをさらに含み、
前記書き込むステップでは、前記命令列のコード・サイズ以下と判定された場合に前記第1コードの前記命令列に前記第2コードを上書きする、請求項9〜12のいずれか1項に記載のプログラムの最適化方法。 - 前記指定された処理は、分岐を伴う処理で、前記複数の命令は、少なくとも1つの分岐命令と、分岐先で実行すべき命令とを含む、請求項9に記載のプログラムの最適化方法。
- 前記プログラムを解釈した際に、計測された分岐命令の成立回数および不成立回数から得られる実行頻度を用い、分岐先の実行頻度が閾値より低くなるかどうかを判定するステップをさらに含み、
前記第2コードを生成するステップでは、前記所定のタイミングとして、前記プログラムを解釈した際の前記分岐先の実行頻度が閾値より低くなると判断されたことに応答して、低くなると判断された前記分岐先の直前の前記分岐命令までの一連の制御フローである、前記第2コードを構成するためのトレースを生成する、請求項14に記載のプログラムの最適化方法。 - 前記プログラムの実行中に前記分岐先の命令がアボートした回数が設定値を超えたか否かを判定するステップと、前記設定値を超えたと判定した場合に、アボートを発生させた命令を含まない前記トレースを、前記第2コードを生成するステップで生成された複数のトレースの中から検索するステップとを含み、
前記第2コードを書き込むステップにおいて、トランザクション内で前記第1コードの一部に、検索された前記トレースから構成される前記第2コードを書き込む、請求項15に記載のプログラムの最適化方法。 - 請求項9〜16のいずれか1項に記載の方法を実行するためのコンピュータ可読な最適化プログラム。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010279022A JP5681473B2 (ja) | 2010-12-15 | 2010-12-15 | プログラムの最適化装置、最適化方法および最適化プログラム |
US13/307,731 US8990786B2 (en) | 2010-12-15 | 2011-11-30 | Program optimizing apparatus, program optimizing method, and program optimizing article of manufacture |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010279022A JP5681473B2 (ja) | 2010-12-15 | 2010-12-15 | プログラムの最適化装置、最適化方法および最適化プログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2012128628A JP2012128628A (ja) | 2012-07-05 |
JP5681473B2 true JP5681473B2 (ja) | 2015-03-11 |
Family
ID=46236229
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2010279022A Expired - Fee Related JP5681473B2 (ja) | 2010-12-15 | 2010-12-15 | プログラムの最適化装置、最適化方法および最適化プログラム |
Country Status (2)
Country | Link |
---|---|
US (1) | US8990786B2 (ja) |
JP (1) | JP5681473B2 (ja) |
Families Citing this family (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2014075046A (ja) * | 2012-10-04 | 2014-04-24 | International Business Maschines Corporation | トレース生成方法、装置、プログラム、及び該方法を利用したマルチレベルのコンパイレーション |
US9304748B2 (en) * | 2013-08-07 | 2016-04-05 | Qualcomm Incorporated | Method for controlling inlining in a code generator |
US9244724B2 (en) * | 2013-08-15 | 2016-01-26 | Globalfoundries Inc. | Management of transactional memory access requests by a cache memory |
US10025715B2 (en) | 2014-06-27 | 2018-07-17 | International Business Machines Corporation | Conditional inclusion of data in a transactional memory read set |
US10114752B2 (en) | 2014-06-27 | 2018-10-30 | International Business Machines Corporation | Detecting cache conflicts by utilizing logical address comparisons in a transactional memory |
US9772944B2 (en) | 2014-06-27 | 2017-09-26 | International Business Machines Corporation | Transactional execution in a multi-processor environment that monitors memory conflicts in a shared cache |
US9720837B2 (en) | 2014-06-27 | 2017-08-01 | International Business Machines Corporation | Allowing non-cacheable loads within a transaction |
US9658961B2 (en) | 2014-06-27 | 2017-05-23 | International Business Machines Corporation | Speculation control for improving transaction success rate, and instruction therefor |
US10073784B2 (en) | 2014-06-27 | 2018-09-11 | International Business Machines Corporation | Memory performance when speculation control is enabled, and instruction therefor |
US10013351B2 (en) | 2014-06-27 | 2018-07-03 | International Business Machines Corporation | Transactional execution processor having a co-processor accelerator, both sharing a higher level cache |
US9740614B2 (en) | 2014-06-27 | 2017-08-22 | International Business Machines Corporation | Processor directly storing address range of co-processor memory accesses in a transactional memory where co-processor supplements functions of the processor |
US9477481B2 (en) | 2014-06-27 | 2016-10-25 | International Business Machines Corporation | Accurate tracking of transactional read and write sets with speculation |
US9703718B2 (en) | 2014-06-27 | 2017-07-11 | International Business Machines Corporation | Managing read tags in a transactional memory |
JP2016189165A (ja) * | 2015-03-30 | 2016-11-04 | 富士通株式会社 | コンパイルプログラム、コンパイル方法及びコンパイル装置 |
US10042749B2 (en) * | 2015-11-10 | 2018-08-07 | International Business Machines Corporation | Prefetch insensitive transactional memory |
JP6943030B2 (ja) | 2017-06-16 | 2021-09-29 | 富士通株式会社 | 情報処理装置、情報処理方法およびプログラム |
US10642625B2 (en) | 2017-08-11 | 2020-05-05 | Red Hat, Inc. | Branch rewriting device feature optimization |
US10503626B2 (en) * | 2018-01-29 | 2019-12-10 | Oracle International Corporation | Hybrid instrumentation framework for multicore low power processors |
CN110502350B (zh) * | 2019-07-11 | 2023-03-21 | 平安普惠企业管理有限公司 | 节点的调用方法、装置、终端及计算机可读存储介质 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH05334337A (ja) | 1992-06-04 | 1993-12-17 | Hitachi Ltd | 常微分方程式の並列処理方式及びその装置 |
JPH1115362A (ja) | 1997-06-19 | 1999-01-22 | Kubota Corp | シミュレーション方法及びシミュレータ |
JP2002318990A (ja) | 2001-04-20 | 2002-10-31 | Nec Corp | シミュレーション方法及びシミュレータ |
US7747565B2 (en) * | 2005-12-07 | 2010-06-29 | Microsoft Corporation | Garbage collector support for transactional memory |
US20070300238A1 (en) * | 2006-06-21 | 2007-12-27 | Leonidas Kontothanassis | Adapting software programs to operate in software transactional memory environments |
US8214813B2 (en) * | 2007-01-12 | 2012-07-03 | Microsoft Corporation | Code optimization across interfaces |
US9043553B2 (en) | 2007-06-27 | 2015-05-26 | Microsoft Technology Licensing, Llc | Leveraging transactional memory hardware to accelerate virtualization and emulation |
US8739163B2 (en) | 2008-03-11 | 2014-05-27 | University Of Washington | Critical path deterministic execution of multithreaded applications in a transactional memory system |
JP5186334B2 (ja) * | 2008-11-06 | 2013-04-17 | インターナショナル・ビジネス・マシーンズ・コーポレーション | 変換装置、プログラムおよび変換方法 |
US8631225B2 (en) * | 2010-06-25 | 2014-01-14 | International Business Machines Corporation | Dynamically rewriting branch instructions to directly target an instruction cache location |
-
2010
- 2010-12-15 JP JP2010279022A patent/JP5681473B2/ja not_active Expired - Fee Related
-
2011
- 2011-11-30 US US13/307,731 patent/US8990786B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2012128628A (ja) | 2012-07-05 |
US8990786B2 (en) | 2015-03-24 |
US20120159461A1 (en) | 2012-06-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5681473B2 (ja) | プログラムの最適化装置、最適化方法および最適化プログラム | |
JP5284103B2 (ja) | ソフトウェアトランザクショナルメモリ動作の最適化 | |
JP5643345B2 (ja) | アグレッシブ最適化によって施された変更をロールバック可能なアグレッシブ・コード最適化を実行する装置、方法及びコンピュータ・プログラム | |
EP2176763B1 (en) | Memory transaction grouping | |
JP5906325B2 (ja) | トランザクションをサポートするコンピューターアーキテクチャにおけるコード特殊化のための例外を用いるプログラム及びコンピューティングデバイス | |
JP4374221B2 (ja) | コンピュータシステムおよび記録媒体 | |
JP4844971B2 (ja) | インタープリタの最適化をプログラム・コード変換の間に実行する方法及び装置 | |
US10430191B2 (en) | Methods and apparatus to compile instructions for a vector of instruction pointers processor architecture to enable speculative execution and avoid data corruption | |
US8499293B1 (en) | Symbolic renaming optimization of a trace | |
EP2951682B1 (en) | Hardware and software solutions to divergent branches in a parallel pipeline | |
JP5966509B2 (ja) | プログラム、コード生成方法および情報処理装置 | |
US20090055814A1 (en) | Just-in-time compiler support for interruptible code | |
KR100931460B1 (ko) | 단일 스레드 응용을 지원하기 위한 시간-멀티플렉스된스펙큘레이티브 멀티 스레딩 | |
WO2009076324A2 (en) | Strand-based computing hardware and dynamically optimizing strandware for a high performance microprocessor system | |
JP6492943B2 (ja) | 計算機、コンパイル方法、コンパイルプログラム、およびパイプライン処理プログラム | |
JP5536593B2 (ja) | 最適化装置、最適化方法およびコンパイラ・プログラム | |
US7937564B1 (en) | Emit vector optimization of a trace | |
JP2007532990A (ja) | ヘルパーサブスレッドを含むスレッドの実行の明示的ソフトウェア制御のための方法及び構造 | |
US8359589B2 (en) | Helper thread for pre-fetching data | |
WO2021036173A1 (zh) | 解释执行字节码指令流的方法及装置 | |
JP4420055B2 (ja) | マルチスレッドプロセッサ及びそれに用いるスレッド間同期操作方法 | |
JP2004240953A (ja) | コンピュータシステム、その同時多重スレッディング方法およびキャッシュコントローラシステム。 | |
JPH11242599A (ja) | コンピュータプログラム製品 | |
US20050251795A1 (en) | Method, system, and program for optimizing code | |
US20220229664A1 (en) | Information processing device, compiling method, and non-transitory computer-readable recording medium |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20131008 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20140825 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20140909 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20141126 |
|
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: 20141216 |
|
RD14 | Notification of resignation of power of sub attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7434 Effective date: 20141216 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20150109 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5681473 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |