JP5840014B2 - コンパイル方法、プログラムおよび情報処理装置 - Google Patents
コンパイル方法、プログラムおよび情報処理装置 Download PDFInfo
- Publication number
- JP5840014B2 JP5840014B2 JP2012019524A JP2012019524A JP5840014B2 JP 5840014 B2 JP5840014 B2 JP 5840014B2 JP 2012019524 A JP2012019524 A JP 2012019524A JP 2012019524 A JP2012019524 A JP 2012019524A JP 5840014 B2 JP5840014 B2 JP 5840014B2
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- page
- offset
- indirect branch
- memory page
- 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
- 238000000034 method Methods 0.000 title claims description 113
- 230000010365 information processing Effects 0.000 title claims description 38
- 238000012545 processing Methods 0.000 claims description 80
- 238000005457 optimization Methods 0.000 claims description 43
- 238000006073 displacement reaction Methods 0.000 description 8
- 238000013507 mapping Methods 0.000 description 8
- 238000011156 evaluation Methods 0.000 description 6
- 238000010586 diagram Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 4
- 238000013519 translation Methods 0.000 description 4
- 238000006243 chemical reaction Methods 0.000 description 3
- 230000003111 delayed effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000012854 evaluation process Methods 0.000 description 1
- 239000010979 ruby Substances 0.000 description 1
- 229910001750 ruby Inorganic materials 0.000 description 1
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/30003—Arrangements for executing specific machine instructions
- G06F9/3005—Arrangements for executing specific machine instructions to perform operations for flow control
-
- 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/4434—Reducing the memory space required by the program code
-
- 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/30054—Unconditional branch instructions
-
- 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/30061—Multi-way branch instructions, e.g. CASE
-
- 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/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/323—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for indirect branch instructions
-
- 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/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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
Description
Claims (18)
- 機械語で記述された命令列であるトレースをコンパイルする情報処理装置が実行するコンパイル方法であって、前記コンパイル方法は、前記情報処理装置が、
前記トレースから中間コードを生成するステップと、
間接分岐命令の基点となるアドレス値と、前記中間コードに含まれる第1の命令の処理直後に前記情報処理装置が参照すべき仮想アドレスが属するメモリページの開始アドレスとのオフセットを算出するステップと、
前記第1の命令に後続する第2の命令である間接分岐命令による移動量を前記オフセットに加算した値を使用して、前記間接分岐命令によって前記間接分岐命令が割り当てられたメモリページから別のメモリページに処理が移るか否か判断するステップと、
前記判断するステップの結果を用いて前記中間コードを最適化するステップと
を含み、
前記最適化するステップは、
前記第2の命令である間接分岐命令によってページ境界を越えるか否か判断する処理を前記中間コードから削除するステップを含む、コンパイル方法。 - 前記最適化するステップは、
前記判断するステップで前記間接分岐命令が割り当てられたメモリページから別のメモリページに処理が移らないと判断した場合に、
前記情報処理装置のプログラムカウンタを更新する処理を前記中間コードから削除するステップを含む、請求項1に記載のコンパイル方法。 - 前記判断するステップは、
前記オフセットに前記間接分岐命令による移動量を加算した値が0以上かつ前記メモリページの1ページ分のメモリサイズ以下である場合に、前記間接分岐命令が割り当てられたメモリページから別のメモリページに処理が移らないと判断し、
それ以外の場合に、前記間接分岐命令が割り当てられたメモリページから別のメモリページに処理が移ると判断するステップを含む、請求項1に記載のコンパイル方法。 - 前記オフセットを算出するステップは、
前記第1の命令である間接分岐命令の分岐先として予測されるアドレス値の一部から前記移動量を減算して前記オフセットを算出するステップを含む、請求項1に記載のコンパイル方法。 - 前記オフセットを算出するステップは、
前記第1の命令である呼び出し型命令の呼出先として予測されるアドレス値の一部を前記オフセットとして算出するステップを含む、請求項1に記載のコンパイル方法。 - 前記オフセットを算出するステップは、
前記第1の命令によって越えるページ境界の数と前記メモリページの1ページ分のメモリサイズとの乗算値を前記第1の命令に先行する命令のオフセットから減算して、前記第1の命令のオフセットを算出するステップを含む、請求項1に記載のコンパイル方法。 - 前記オフセットを算出するステップは、
前記第1の命令に先行する命令のオフセットから前記メモリページの1ページ分のメモリサイズを減算して、前記オフセットを算出するステップを含む、請求項1に記載のコンパイル方法。 - 前記方法は、前記情報処理装置が、コンパイル対象の命令がインデックスレジスタを使用しない間接分岐命令であるか否か判断するステップをさらに含み、
コンパイル対象の命令がインデックスレジスタを使用しない間接分岐命令である場合に、前記情報処理装置が前記判断するステップを実行する、請求項1に記載のコンパイル方法。 - 機械語で記述された命令列であるトレースをコンパイルする情報処理装置が実行するコンパイル方法を、前記情報処理装置が実行するためのプログラムであって、前記プログラムは、前記情報処理装置が、
前記トレースから中間コードを生成するステップと、
間接分岐命令の基点となるアドレス値と、前記中間コードに含まれる第1の命令の処理直後に前記情報処理装置が参照すべき仮想アドレスが属するメモリページの開始アドレスとのオフセットを算出するステップと、
前記第1の命令に後続する第2の命令である間接分岐命令による移動量を前記オフセットに加算した値を使用して、前記間接分岐命令によって前記間接分岐命令が割り当てられたメモリページから別のメモリページに処理が移るか否か判断するステップと、
前記判断するステップの結果を用いて前記中間コードを最適化するステップと
を実行するためのプログラムであって、
前記最適化するステップは、
前記間接分岐命令によってページ境界を越えるか否か判断する処理を前記中間コードから削除するステップを含む、装置実行可能なプログラム。 - 前記最適化するステップは、
前記判断するステップで前記間接分岐命令が割り当てられたメモリページから別のメモリページに処理が移らないと判断した場合に、
前記情報処理装置のプログラムカウンタを更新する処理を前記中間コードから削除するステップを含む、請求項9に記載の装置実行可能なプログラム。 - 前記判断するステップは、
前記オフセットに前記間接分岐命令による移動量を加算した値が0以上かつ前記メモリページの1ページ分のメモリサイズ以下である場合に、前記間接分岐命令が割り当てられたメモリページから別のメモリページに処理が移らないと判断し、
それ以外の場合に、前記間接分岐命令が割り当てられたメモリページから別のメモリページに処理が移ると判断するステップを含む、請求項9に記載の装置実行可能なプログラム。 - 前記オフセットを算出するステップは、
前記第1の命令である間接分岐命令の分岐先として予測されるアドレス値の一部から前記移動量を減算して、前記オフセットを算出するステップと、
前記第1の命令である呼び出し型の呼出先として予測されるアドレス値の一部を前記オフセットとして算出するステップと、
前記第1の命令によって越えるページ境界の数と前記メモリページの1ページ分のメモリサイズとの乗算値を前記第1の命令に先行する命令のオフセットから減算して、前記第1の命令のオフセットを算出するステップと、および/または
前記第1の命令に先行する命令のオフセットから前記メモリページの1ページ分のメモリサイズを減算して、前記第1の命令のオフセットを算出するステップとを含む、請求項9に記載の装置実行可能なプログラム。 - 前記プログラムは、前記情報処理装置が、
コンパイル対象の命令がインデックスレジスタを使用しない間接分岐命令であるか否か判断するステップをさらに含み、
コンパイル対象の命令がインデックスレジスタを使用しない間接分岐命令である場合に、前記情報処理装置が前記判断するステップを実行するための、請求項9に記載の装置実行可能なプログラム。 - 機械語で記述された命令列であるトレースをコンパイルする情報処理装置であって、
前記トレースから中間コードを生成するインタープリタと、前記中間コードをコンパイルする動的コンパイラとを備え、
前記動的コンパイラは、
間接分岐命令の基点となるアドレス値と、前記中間コードに含まれる第1の命令の処理直後に前記情報処理装置が参照すべき仮想アドレスが属するメモリページの開始アドレスとのオフセットに、前記第1の命令に後続する第2の命令である間接分岐命令による移動量を加算した値を使用して、前記間接分岐命令によって前記間接分岐命令が割り当てられたメモリページから別のメモリページに処理が移るか否か判断し、前記判断の結果を用いて前記中間コードを最適化する最適化処理部を備え、
前記最適化処理部は、前記間接分岐命令によってページ境界を越えるか否か判断する処理を前記中間コードから削除する、情報処理装置。 - 前記最適化処理部は、
前記間接分岐命令が割り当てられたメモリページから別のメモリページに処理が移らないと判断した場合に、前記情報処理装置のプログラムカウンタを更新する処理を前記中間コードから削除する、請求項14に記載の情報処理装置。 - 前記最適化処理部は、
前記オフセットに前記間接分岐命令による移動量を加算した値が0以上かつ前記メモリページの1ページ分のメモリサイズ以下である場合に、前記間接分岐命令が割り当てられたメモリページから別のメモリページに処理が移らないと判断し、
それ以外の場合に、前記間接分岐命令が割り当てられたメモリページから別のメモリページに処理が移ると判断する、請求項14に記載の情報処理装置。 - 前記最適化処理部は、
前記第1の命令である間接分岐命令の分岐先として予測されるアドレス値の一部から前記移動量を減算して、前記オフセットを算出し、
前記第1の命令である呼び出し型の呼出先として予測されるアドレス値の一部を前記オフセットとして算出し、
前記第1の命令に先行する命令のオフセットから前記第1の命令によって越えるページ境界の数と前記メモリページの1ページ分のメモリサイズとの乗算値を減算して、前記第1の命令のオフセットを算出し、または
前記第1の命令に先行する命令のオフセットから前記メモリページの1ページ分のメモリサイズを減算して、前記第1の命令のオフセットを算出する、請求項14に記載の情報処理装置。 - 前記最適化処理部は、
コンパイル対象の命令がインデックスレジスタを使用しない間接分岐命令である場合に、前記間接分岐命令が割り当てられたメモリページから別のメモリページに処理が移るか否か判断する、請求項14に記載の情報処理装置。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2012019524A JP5840014B2 (ja) | 2012-02-01 | 2012-02-01 | コンパイル方法、プログラムおよび情報処理装置 |
US13/755,020 US8869128B2 (en) | 2012-02-01 | 2013-01-31 | Compiling method, program, and information processing apparatus |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2012019524A JP5840014B2 (ja) | 2012-02-01 | 2012-02-01 | コンパイル方法、プログラムおよび情報処理装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2013156971A JP2013156971A (ja) | 2013-08-15 |
JP5840014B2 true JP5840014B2 (ja) | 2016-01-06 |
Family
ID=48871358
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2012019524A Expired - Fee Related JP5840014B2 (ja) | 2012-02-01 | 2012-02-01 | コンパイル方法、プログラムおよび情報処理装置 |
Country Status (2)
Country | Link |
---|---|
US (1) | US8869128B2 (ja) |
JP (1) | JP5840014B2 (ja) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9009686B2 (en) * | 2011-11-07 | 2015-04-14 | Nvidia Corporation | Algorithm for 64-bit address mode optimization |
DE102012010102A1 (de) * | 2012-05-22 | 2013-11-28 | Infineon Technologies Ag | Verfahren und Vorrichtung zur Datenverarbeitung |
US9569185B2 (en) * | 2014-02-07 | 2017-02-14 | Oracle International Corporation | Changing de-optimization guard representation during the compilation process |
US10353680B2 (en) * | 2014-07-25 | 2019-07-16 | Intel Corporation | System converter that implements a run ahead run time guest instruction conversion/decoding process and a prefetching process where guest code is pre-fetched from the target of guest branches in an instruction sequence |
US9921814B2 (en) | 2015-08-24 | 2018-03-20 | International Business Machines Corporation | Control flow graph analysis |
CN107818107B (zh) * | 2016-09-12 | 2020-06-02 | 平安科技(深圳)有限公司 | 控制页面跳转的方法和装置 |
US10409570B2 (en) * | 2016-10-19 | 2019-09-10 | Nxp Usa, Inc. | Feedback directed program stack optimization |
US10691455B2 (en) * | 2017-05-23 | 2020-06-23 | Samsung Electronics Co., Ltd | Power saving branch modes in hardware |
CN112395009A (zh) * | 2019-08-13 | 2021-02-23 | 上海寒武纪信息科技有限公司 | 运算方法、装置、计算机设备和存储介质 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH09231088A (ja) * | 1996-02-27 | 1997-09-05 | Chubu Nippon Denki Software Kk | プログラム変換実行装置およびその方法 |
US6161217A (en) * | 1998-09-14 | 2000-12-12 | Sun Microsystems, Inc. | Accurate method for inlining virtual calls |
JP2002259135A (ja) * | 2001-02-28 | 2002-09-13 | Internatl Business Mach Corp <Ibm> | プログラムの最適化方法及びこれを用いたコンパイラ |
US7404182B1 (en) * | 2003-10-03 | 2008-07-22 | Sun Microsystems, Inc. | Deferring and combining write barriers for a garbage-collected heap |
US7647589B1 (en) * | 2005-02-07 | 2010-01-12 | Parallels Software International, Inc. | Methods and systems for safe execution of guest code in virtual machine context |
US8136091B2 (en) * | 2007-01-31 | 2012-03-13 | Microsoft Corporation | Architectural support for software-based protection |
US7689815B2 (en) * | 2007-10-12 | 2010-03-30 | Freescale Semiconductor, Inc | Debug instruction for use in a data processing system |
US20110078666A1 (en) * | 2009-05-26 | 2011-03-31 | University Of California | System and Method for Reproducing Device Program Execution |
US8495607B2 (en) * | 2010-03-01 | 2013-07-23 | International Business Machines Corporation | Performing aggressive code optimization with an ability to rollback changes made by the aggressive optimizations |
-
2012
- 2012-02-01 JP JP2012019524A patent/JP5840014B2/ja not_active Expired - Fee Related
-
2013
- 2013-01-31 US US13/755,020 patent/US8869128B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
US8869128B2 (en) | 2014-10-21 |
US20130198498A1 (en) | 2013-08-01 |
JP2013156971A (ja) | 2013-08-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5840014B2 (ja) | コンパイル方法、プログラムおよび情報処理装置 | |
US9207916B2 (en) | Simulation apparatus, method and medium | |
US7568189B2 (en) | Code translation and pipeline optimization | |
JP4844971B2 (ja) | インタープリタの最適化をプログラム・コード変換の間に実行する方法及び装置 | |
KR101332499B1 (ko) | 시뮬레이션 장치, 방법, 및 기록 매체 | |
KR102112081B1 (ko) | 언어 가상 머신에서 고-사용 중간 코드를 식별하는 방법 및 디바이스 | |
US10268462B2 (en) | Emulation device, emulation method, and recording medium storing emulation program | |
US9465595B2 (en) | Computing apparatus, computing method, and computing program | |
KR20110070468A (ko) | 인스트루먼테이션 실행 장치 및 방법 | |
TWI502495B (zh) | 以機器指令取代編譯器內建輔助函數之方法、裝置及電腦程式產品 | |
US20240231864A9 (en) | Hybrid just in time load module compiler with performance optimizations | |
US20160196156A1 (en) | Simulation apparatus, simulation method, and computer product | |
US10402510B2 (en) | Calculating device, calculation method, and calculation program | |
US11029929B2 (en) | Using emulation to improve startup time for just-in-time compilation | |
US9606779B2 (en) | Data processing system and data simulation method in the system | |
JP6519228B2 (ja) | データ配置決定装置、データ配置決定プログラム及びデータ配置決定方法 | |
Helmstetter et al. | Fast instruction set simulation using LLVM-based dynamic translation | |
KR101088516B1 (ko) | 수행 중 선행 컴파일링을 이용한 내장형 시스템을 위한 자바 컴파일링 방법 | |
JP6295914B2 (ja) | プログラマブルコントローラシステム、その支援装置、プログラマブルコントローラ | |
US20170177772A1 (en) | Information processing device that executes simulation and a simulation method | |
Guan et al. | The optimizations in dynamic binary translation | |
WO2007131089A2 (en) | Code translation and pipeline optimization | |
US9880841B2 (en) | Computation method for computing performance value when processor executes code, computation apparatus for computing performance value when processor executes code, and computer readable storage medium storing computation program for computing performance value when processor executes code | |
Kressel et al. | Evaluating the Impact of Optimizations for Dynamic Binary Modification on 64-bit RISC-V | |
Hanser | Performance of the SHA-3 Candidates in Java |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20140901 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20150924 |
|
TRDD | Decision of grant or rejection written | ||
RD14 | Notification of resignation of power of sub attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7434 Effective date: 20151020 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20151020 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20151110 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5840014 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |