JP2006309430A - コンパイラによる最適化方法 - Google Patents
コンパイラによる最適化方法 Download PDFInfo
- Publication number
- JP2006309430A JP2006309430A JP2005129903A JP2005129903A JP2006309430A JP 2006309430 A JP2006309430 A JP 2006309430A JP 2005129903 A JP2005129903 A JP 2005129903A JP 2005129903 A JP2005129903 A JP 2005129903A JP 2006309430 A JP2006309430 A JP 2006309430A
- Authority
- JP
- Japan
- Prior art keywords
- range
- language program
- processing
- instruction
- compiler
- 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.)
- Pending
Links
Images
Landscapes
- Devices For Executing Special Programs (AREA)
Abstract
【解決手段】 コンパイラは、入力された高級言語プログラムに、実行される確率が高い分岐先処理を指定する記述が含まれている場合には、指定された分岐先処理に相当する命令コードを分岐命令の直後または後続命令の直前に配置する。また、コンパイラは、入力された高級言語プログラムに、下位処理を有する処理を指定する記述が含まれている場合には、キャッシュメモリ内の格納位置が重複しないように、当該処理およびその下位処理に相当する命令コードを配置する。
【選択図】 図1
Description
図1〜図3を参照して、本発明の第1の実施形態に係るコンパイラによる最適化処理の実行例を説明する。図1は、機械語プログラムに含まれる命令コードをキャッシュメモリのライン上に配置した様子を示す図である。図1に示す命令コードは、図2に示すPAD図で表された処理に相当する。図2に示す処理では、まず条件判定処理が行われ、次に判定結果に従い分岐先処理1〜4のいずれかが行われ、その後に後続処理が行われる。この処理に相当する命令コードは、図1に示すように、条件判定処理に相当する命令コード(以下、分岐命令という)、分岐先処理1〜4に相当する命令コード(以下、分岐先命令1〜4という)、および、後続処理に相当する命令コード(以下、後続命令という)を含んでいる。
第1の実施形態に係るコンパイラは、入力された高級言語プログラムに高優先度の分岐先処理を指定する記述が含まれている場合には、高優先度の分岐先処理に相当する命令コードを分岐命令の直後に配置する。この方法では、高優先度の分岐先処理に相当する命令コードのサイズや、分岐命令および後続命令の配置位置によっては、キャッシュミスの発生を十分に抑制できない場合がある。
SZ0= (高優先度の分岐先処理に相当する命令コードの終端アドレス)
−(高優先度の分岐先処理に相当する命令コードの先頭アドレス)
SZ1=(分岐命令を含むラインの終端アドレス)−(分岐命令の終端アドレス)
SZ2=(後続命令の先頭アドレス)−(後続命令を含むラインの先頭アドレス)
図11は、プログラム実行中にサブルーチンが階層的に呼び出される様子を示す図である。図11では、処理Aから処理Bが呼び出され、処理Bから処理Cが呼び出され、処理Cから処理Dが呼び出され、処理Dから処理Eが呼び出されている。以下、処理A〜Eに相当する命令コードを、それぞれ、処理コードA〜Eという。
Snop= (上位命令コードの終端アドレス)
−(下位命令コードの先頭アドレス)
20、50…連結部
S11…プリプロセッサディレクティブ解析ステップ
S12…分岐構造処理ステップ
S13…命令コード生成ステップ
S21…結合ステップ
S31、S52…範囲決定ステップ
S32…分岐命令生成ステップ
S33、S54…配置決定ステップ
S40…配置選択ステップ
S51…1次結合ステップ
S53…アドレス重複解析ステップ
S55…配置ステップ
Claims (14)
- 高級言語プログラムを機械語プログラムに変換するコンパイラによって実行される最適化方法であって、
前記高級言語プログラムに含まれる記述に基づき、前記機械語プログラムの一部を処理範囲として決定する範囲決定ステップと、
前記処理範囲内にある命令コードの配置位置を決定する配置決定ステップとを備えた、コンパイラによる最適化方法。 - 前記高級言語プログラムには、高優先度の分岐先処理を指定する記述が含まれており、
前記範囲決定ステップは、前記機械語プログラムのうちで前記高優先度の分岐先処理を含む分岐ブロックに相当する部分を前記処理範囲として選択し、
前記配置決定ステップは、前記処理範囲内にある命令コードの配置位置を分岐先処理ごとに決定することを特徴とする、請求項1に記載のコンパイラによる最適化方法。 - 前記配置決定ステップは、前記高級言語プログラム内の分岐先処理の記述順序と、前記機械語プログラム内の相当する命令コードの配置順序とが異なるように、前記処理範囲内にある命令コードの配置位置を決定する場合があることを特徴とする、請求項2に記載のコンパイラによる最適化方法。
- 前記配置決定ステップは、前記高優先度の分岐先処理に相当する命令コードの配置位置として、前記処理範囲内の先頭部分に配置される分岐命令の直後の位置を選択することを特徴とする、請求項2に記載のコンパイラによる最適化方法。
- 前記配置決定ステップは、前記高優先度の分岐先処理に相当する命令コードの配置位置として、前記処理範囲内の次に配置される命令コードの直前の位置を選択することを特徴とする、請求項2に記載のコンパイラによる最適化方法。
- 前記配置決定ステップは、前記高優先度の分岐先処理に相当する命令コードのサイズと、キャッシュメモリを備えたコンピュータが前記機械語プログラムを実行する際の前記キャッシュメモリの残りライン容量とに基づき、当該命令コードの配置位置として、前記処理範囲の先頭部分に配置される分岐命令の直後の位置、および、前記処理範囲の次に配置される命令コードの直前の位置のいずれかを選択することを特徴とする、請求項2に記載のコンパイラによる最適化方法。
- 前記高級言語プログラムには、前記キャッシュメモリのラインサイズを指定する記述が含まれていることを特徴とする、請求項6に記載のコンパイラによる最適化方法。
- 前記高級言語プログラムには、下位処理を有する高優先度の処理を指定する記述が含まれており、
前記範囲決定ステップは、前記機械語プログラムのうちで前記高優先度の処理および当該処理の下位処理に相当する部分を前記処理範囲として選択し、
前記配置決定ステップは、キャッシュメモリを備えたコンピュータが前記機械語プログラムを実行する際に、前記処理範囲内にある命令コードの前記キャッシュメモリにおける格納位置が互いに重複しないように、前記処理範囲内にある命令コードの配置位置を下位処理ごとに決定することを特徴とする、請求項1に記載のコンパイラによる最適化方法。 - 前記高級言語プログラムには、第1の範囲を指定する記述が含まれており、
前記範囲決定ステップは、前記機械語プログラムのうちで前記第1の範囲に相当する部分を前記処理範囲として選択することを特徴とする、請求項1に記載のコンパイラによる最適化方法。 - 前記高級言語プログラムには、前記第1の範囲内にある第2の範囲を指定する記述がさらに含まれており、
前記範囲決定ステップは、前記機械語プログラムのうちで前記第1の範囲から前記第2の範囲を除いた部分に相当する部分を前記処理範囲として選択することを特徴とする、請求項9に記載のコンパイラによる最適化方法。 - 前記高級言語プログラムには、第1の範囲を指定する記述が含まれており、
前記範囲決定ステップは、前記機械語プログラムのうちで前記第1の範囲の外に相当する部分を前記処理範囲として選択することを特徴とする、請求項1に記載のコンパイラによる最適化方法。 - 前記高級言語プログラムには、前記第1の範囲内にある第2の範囲を指定する記述がさらに含まれており、
前記範囲決定ステップは、前記機械語プログラムのうちで前記第1の範囲から前記第2の範囲を除いた部分の外に相当する部分を前記処理範囲として選択することを特徴とする、請求項11に記載のコンパイラによる最適化方法。 - 高級言語プログラムを機械語プログラムに変換する処理および最適化処理をコンピュータに実行させるためのコンパイラであって、前記最適化処理として、
前記高級言語プログラムに含まれる記述に基づき、前記機械語プログラムの一部を処理範囲として決定する範囲決定ステップと、
前記処理範囲内にある命令コードの配置位置を決定する配置決定ステップとを、コンピュータに実行させるためのコンパイラ。 - 高級言語プログラムを機械語プログラムに変換する処理および最適化処理をコンピュータに実行させるためのコンパイラを記録したコンピュータ読み取り可能な記録媒体であって、前記最適化処理として、
前記高級言語プログラムに含まれる記述に基づき、前記機械語プログラムの一部を処理範囲として決定する範囲決定ステップと、
前記処理範囲内にある命令コードの配置位置を決定する配置決定ステップとを、コンピュータに実行させるためのコンパイラを記録したコンピュータ読み取り可能な記録媒体。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005129903A JP2006309430A (ja) | 2005-04-27 | 2005-04-27 | コンパイラによる最適化方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005129903A JP2006309430A (ja) | 2005-04-27 | 2005-04-27 | コンパイラによる最適化方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2006309430A true JP2006309430A (ja) | 2006-11-09 |
Family
ID=37476258
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2005129903A Pending JP2006309430A (ja) | 2005-04-27 | 2005-04-27 | コンパイラによる最適化方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2006309430A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2010010678A1 (ja) * | 2008-07-22 | 2010-01-28 | パナソニック株式会社 | プログラム最適化方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS5960640A (ja) * | 1982-09-30 | 1984-04-06 | Fujitsu Ltd | コンパイラ処理方法 |
JPH07271607A (ja) * | 1994-03-31 | 1995-10-20 | Nec Corp | 選択頻度順プログラム自動修正方式 |
JP2000222218A (ja) * | 1999-02-01 | 2000-08-11 | Fujitsu Ltd | コンパイル装置および記録媒体 |
JP2002024031A (ja) * | 2000-07-07 | 2002-01-25 | Sharp Corp | オブジェクトコードの再合成方法および生成方法 |
JP2002099427A (ja) * | 2000-09-25 | 2002-04-05 | Toshiba Corp | プログラムの開発方法、プログラムの開発システム及びマイクロプロセッサ |
-
2005
- 2005-04-27 JP JP2005129903A patent/JP2006309430A/ja active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS5960640A (ja) * | 1982-09-30 | 1984-04-06 | Fujitsu Ltd | コンパイラ処理方法 |
JPH07271607A (ja) * | 1994-03-31 | 1995-10-20 | Nec Corp | 選択頻度順プログラム自動修正方式 |
JP2000222218A (ja) * | 1999-02-01 | 2000-08-11 | Fujitsu Ltd | コンパイル装置および記録媒体 |
JP2002024031A (ja) * | 2000-07-07 | 2002-01-25 | Sharp Corp | オブジェクトコードの再合成方法および生成方法 |
JP2002099427A (ja) * | 2000-09-25 | 2002-04-05 | Toshiba Corp | プログラムの開発方法、プログラムの開発システム及びマイクロプロセッサ |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2010010678A1 (ja) * | 2008-07-22 | 2010-01-28 | パナソニック株式会社 | プログラム最適化方法 |
JP2010026851A (ja) * | 2008-07-22 | 2010-02-04 | Panasonic Corp | コンパイラによる最適化方法 |
CN102099786A (zh) * | 2008-07-22 | 2011-06-15 | 松下电器产业株式会社 | 程序优化方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11216258B2 (en) | Direct function call substitution using preprocessor | |
US9798528B2 (en) | Software solution for cooperative memory-side and processor-side data prefetching | |
JP4374221B2 (ja) | コンピュータシステムおよび記録媒体 | |
WO2010010678A1 (ja) | プログラム最適化方法 | |
US6539541B1 (en) | Method of constructing and unrolling speculatively counted loops | |
JP4844971B2 (ja) | インタープリタの最適化をプログラム・コード変換の間に実行する方法及び装置 | |
US6834383B2 (en) | Method for binary-level branch reversal on computer architectures supporting predicated execution | |
US8990786B2 (en) | Program optimizing apparatus, program optimizing method, and program optimizing article of manufacture | |
US20020066081A1 (en) | Speculative caching scheme for fast emulation through statically predicted execution traces in a caching dynamic translator | |
JP5579694B2 (ja) | 復帰スタックを管理する方法および装置 | |
JP2016536665A (ja) | 推論的ベクトル演算の実行を制御するためのデータ処理装置及び方法 | |
US9465595B2 (en) | Computing apparatus, computing method, and computing program | |
US8359435B2 (en) | Optimization of software instruction cache by line re-ordering | |
JPWO2009004709A1 (ja) | 間接分岐処理プログラムおよび間接分岐処理方法 | |
US20140157248A1 (en) | Conversion apparatus, method of converting, and non-transient computer-readable recording medium having conversion program stored thereon | |
JP2008003882A (ja) | コンパイラプログラム,リストベクトルの領域割当て最適化方法,コンパイル処理装置およびコンパイラプログラムを記録したコンピュータ読み取り可能な記録媒体 | |
US8166252B2 (en) | Processor and prefetch support program | |
US20160011889A1 (en) | Simulation method and storage medium | |
JP2006309430A (ja) | コンパイラによる最適化方法 | |
JP2009020695A (ja) | 情報処理装置及びシステム | |
JP4473626B2 (ja) | コンパイラ、記録媒体、コンパイル装置、通信端末装置及びコンパイル方法 | |
US8745599B2 (en) | Probabilistic pointer analysis method using SSA form | |
JP2002014868A (ja) | メモリ参照動作検出機構を有するマイクロプロセッサおよびコンパイル方法 | |
US20220269508A1 (en) | Methods and systems for nested stream prefetching for general purpose central processing units | |
US6430682B1 (en) | Reliable branch predictions for real-time applications |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Effective date: 20080310 Free format text: JAPANESE INTERMEDIATE CODE: A621 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20100426 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20110315 |
|
A521 | Written amendment |
Effective date: 20110510 Free format text: JAPANESE INTERMEDIATE CODE: A523 |
|
A131 | Notification of reasons for refusal |
Effective date: 20110531 Free format text: JAPANESE INTERMEDIATE CODE: A131 |
|
A521 | Written amendment |
Effective date: 20110727 Free format text: JAPANESE INTERMEDIATE CODE: A523 |
|
A131 | Notification of reasons for refusal |
Effective date: 20110812 Free format text: JAPANESE INTERMEDIATE CODE: A131 |
|
RD02 | Notification of acceptance of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7422 Effective date: 20110826 |
|
A02 | Decision of refusal |
Effective date: 20111201 Free format text: JAPANESE INTERMEDIATE CODE: A02 |