JP2001282546A - プログラム変換装置、プログラム変換方法及びプログラム記録媒体 - Google Patents

プログラム変換装置、プログラム変換方法及びプログラム記録媒体

Info

Publication number
JP2001282546A
JP2001282546A JP2000095966A JP2000095966A JP2001282546A JP 2001282546 A JP2001282546 A JP 2001282546A JP 2000095966 A JP2000095966 A JP 2000095966A JP 2000095966 A JP2000095966 A JP 2000095966A JP 2001282546 A JP2001282546 A JP 2001282546A
Authority
JP
Japan
Prior art keywords
program
basic block
function
optimization
variable
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.)
Granted
Application number
JP2000095966A
Other languages
English (en)
Other versions
JP3431568B2 (ja
Inventor
Shuichi Takayama
秀一 高山
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Panasonic Holdings Corp
Original Assignee
Matsushita Electric Industrial Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Matsushita Electric Industrial Co Ltd filed Critical Matsushita Electric Industrial Co Ltd
Priority to JP2000095966A priority Critical patent/JP3431568B2/ja
Publication of JP2001282546A publication Critical patent/JP2001282546A/ja
Application granted granted Critical
Publication of JP3431568B2 publication Critical patent/JP3431568B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Abstract

(57)【要約】 【課題】 本発明は、プログラムの制御フローを辿って
実行頻度情報を取得できない場合においてもソースプロ
グラムを解析して得られる情報に基づいて効果的な最適
化を行うプログラム変換装置を提供する。 【解決手段】 静的最適化部1051において、計数部
112はソースプログラムを解析することによりアクセ
ス箇所数を計数し、第1算出部114は基本ブロックア
クセス頻度推定値を算出し、第2算出部116は関数ア
クセス頻度推定値を算出する。これらの数値はそれぞ
れ、プログラム実行時のプログラム全体並びに各基本ブ
ロック及び各関数における変数のアクセス頻度を推定す
るものと考えられる。静的最適化部1051は、変数、
基本ブロック及び関数について、それぞれ変数最適化部
113、基本ブロック最適化部115及び関数最適化部
117により、前記数値の大きな順に適用対象を選択し
て最適化を行う。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、プログラム変換装
置に関し、特にプログラムを最適化する技術に関する。
【0002】
【従来の技術】近年、ソフトウェア開発において、開発
効率及び保守性の向上を指向して、人にとって理解しや
すい高水準言語を用いた開発が主流となっている。この
開発においては、高水準言語を用いて人が記述したソー
スプログラムから、プログラム変換装置が目的プログラ
ムを生成する。
【0003】プログラム変換装置が生成する目的プログ
ラムは、アセンブラ等を用いて人が作成する目的プログ
ラムに比べると、一般に実行時間が長くコードサイズが
大きい。このため、実行時間がより短くコードサイズが
より小さいプログラムを生成することが、プログラム変
換装置に求められている。
【0004】実行時間を短縮しかつコードサイズを削減
する目的でプログラムを変換すること、若しくは、実行
時間の短縮又はコードサイズの削減の少なくとも一方を
目的としてプログラムを変換することを最適化という。
【0005】最適化の一例として、変数に対して、アク
セス頻度に応じて動作速度の異なるハードウェア資源を
割り付ける手法がある。この手法によれば、プログラム
変換装置は、アクセス頻度の低い変数に対して低速の主
記憶装置を割り付け、アクセス頻度の高い変数に対して
高速のレジスタを割り付ける。これにより、目的プログ
ラムの実行において、変数の代入及び参照に要する時間
が全体として短縮される。
【0006】レジスタ割付の対象とする変数を選択する
基準の一例として、ソースプログラムを解析してループ
の入れ子構造を知り、より深いループ内においてアクセ
スされる変数から順にレジスタを割り付ける方法があ
る。
【0007】最適化の他の例として、インライン展開と
呼ばれる手法がある。インライン展開とは、関数(戻り
値を返さないいわゆる手続きをも含む)の呼び出し箇所
に対して当該関数のコードそのものを生成する手法であ
る。通常、プログラム変換装置は、関数のコードを呼び
出し箇所とは別の一箇所に生成し、関数を呼び出す各個
所には当該関数のコードへの分岐に関するコードのみを
生成する。インライン展開された呼び出し箇所には関数
のコードそのものが存在するため、当該個所の実行にお
いては分岐に関するコードの実行時間が短縮される。
【0008】関数のコードサイズは、多くの場合、分岐
に関するコードサイズよりも大きく、インライン展開す
ることによりその差に相当するコードサイズが増加す
る。実行時間を短縮しつつもコードサイズの増加を抑え
るため、プログラム変換装置は呼び出し頻度の高い関数
についてインライン展開を行う。例えば、ソースプログ
ラムを解析してループの入れ子構造を知り、より深いル
ープ内において呼び出される関数を優先してインライン
展開する。
【0009】このように、プログラム変換装置は、一例
として、ソースプログラムを解析してループの入れ子構
造を知り、より深いループはより多くの回数実行される
という予測の下に、変数のアクセス頻度及び関数の呼び
出し頻度としてループの深さを代用して、最適化の適用
対象を選択する。これにより、レジスタの個数やコード
サイズ等のハードウェア資源の使用量を制限しつつ、よ
り効果的な最適化を図っている。
【0010】最適化の適用対象を選択する他の方法に、
プロファイラを用いる方法がある。プロファイラは、ソ
ースプログラムが有する制御フローを辿ることによりプ
ログラムの実行時においてプログラムの各構成要素が実
行される頻度を計数する。例えば、各変数がアクセスさ
れる頻度及び各関数が呼び出される頻度を計数する。当
該計数された頻度情報を、プロファイル情報と呼ぶ。プ
ログラム変換装置は、プロファイラに対してソースプロ
グラムを与え、当該ソースプログラムについてプロファ
イラが計数したプロファイル情報を取得する。
【0011】プログラム変換装置は、取得したプロファ
イル情報から変数がアクセスされる回数を知り、アクセ
ス回数の少ない変数に対して動作速度の遅い主記憶装置
を割り付け、アクセス回数の多い変数に対して動作速度
の速いレジスタを割り付ける。また同様に、関数が呼び
出される回数を知り、呼び出し回数の多い関数について
インライン展開する。
【0012】このように、プロファイラを用いるプログ
ラム変換装置は、プロファイル情報に応じて最適化の適
用対象を選択するため、プログラムの動作に即した非常
に効果的な最適化を実施する。
【0013】
【発明が解決しようとする課題】しかしながら、前記従
来技術のプログラム変換装置において、プロファイル情
報が取得できない場合がある。プロファイラそのものが
開発途中である場合や、目的プログラムが例えばハード
ウェアに同期して動作することが必須な制御プログラム
であって、制御フローを辿るための実時間性のない動作
がそもそも不可能な場合などである。
【0014】この場合には、従来技術のプログラム変換
装置は、前記説明したように、ソースプログラムを解析
して得られるループの深さ等をアクセス頻度に代用して
最適化の適用対象を選択するが、この方法で行う最適化
は十分でなく、利用者の要請を満たす効果が得られない
場合があるという問題がある。
【0015】上記の問題に鑑み、本発明は、プロファイ
ル情報が取得できない場合においても、ソースプログラ
ムを解析して得られる情報に基づいて効果的な最適化を
行うプログラム変換装置の提供を目的とする。
【0016】
【課題を解決するための手段】上記問題を解決するた
め、本発明のプログラム変換装置は、最適化機能を有す
るプログラム変換装置であって、プログラムにおいて変
数をアクセスする命令が記述された箇所数を、変数ごと
に計数する計数部と、計数された箇所数の多い順に、変
数について最適化を行う変数最適化部とから構成される
静的最適化手段を備える。
【0017】上記問題を解決するため、本発明のプログ
ラム変換方法は、最適化ステップを有するプログラム変
換方法であって、プログラムにおいて変数をアクセスす
る命令が記述された箇所数を、変数ごとに計数する計数
サブステップと、計数された箇所数の多い順に、変数に
ついて最適化を行う変数最適化サブステップとを有する
静的最適化ステップを有する。
【0018】上記問題を解決するため、本発明のプログ
ラム記録媒体は、最適化機能を有するプログラム変換装
置において用いられるプログラムを記録したコンピュー
タ読取り可能なプログラム記録媒体であって、変換対象
となるプログラムにおいて変数をアクセスする命令が記
述された箇所数を変数ごとに計数する計数サブステップ
と、計数された箇所数の多い順に変数について最適化を
行う変数最適化サブステップとを含む静的最適化ステッ
プからなるプログラムを記録する。
【0019】
【発明の実施の形態】本実施の形態におけるプログラム
変換装置について説明する。 <全体構成>本実施の形態におけるプログラム変換装置
は、ソースプログラムを目的プログラムに変換する装置
であり、図1に示すように、字句解析部102、構文解
析部103、中間コード生成部104、中間コード最適
化部105、目的プログラム生成部106、受付部10
9、及び、制御部110から構成される。
【0020】プログラム変換装置100は、具体的に
は、プロセッサ、プログラムを記憶しているROM(R
ead Only Memory)、作業用のRAM
(Random Access Memory)等のソ
フトウェア及びハードウェアにより実現される。前記各
部の機能は、ROMに記憶されているプログラムをプロ
セッサが実行することにより実現される。前記各部の間
におけるデータの受け渡しは、RAM等のハードウェア
を介して行われる。
【0021】字句解析部102は、入力されたソースプ
ログラム101を解析し、ソースプログラム101を構
成する字句を認識する。構文解析部103は、字句解析
部102が認識した字句に基づいてソースプログラム1
01の構文を解析する。中間コード生成部104は、構
文解析部103が解析した構文の意味を中間言語を用い
て表した中間コードを生成する。
【0022】中間コード最適化部105は、静的最適化
部1051と、プロファイラ1053を含む動的最適化
部1052とからなり、中間コード生成部104が生成
した中間コードを最適化する。目的プログラム生成部1
06は、中間コード最適化部105が最適化した中間コ
ードに従って目的プログラム107を生成する。
【0023】受付部109は、プログラム変換装置の動
作条件を指定する動作パラメータ108を受け付ける。
動作パラメータ108は、前記静的最適化部1051又
は動的最適化部1052の何れを用いて最適化を行うか
の指定を含む。制御部110は、受け付けた動作パラメ
ータに応じてプログラム変換装置100を構成する各部
を動作させる。
【0024】本実施の形態において、中間コード最適化
部105以外の構成は、一般的なプログラム変換装置に
おいて従来実施されている技術であるため、詳細な説明
を省略する。 <中間コード最適化部>中間コード最適化部105は、
受付部109が受け付けた動作パラメータ108に応じ
て制御部110が行う指示に従い、静的最適化部105
1又は動的最適化部1052の何れかを用いて最適化を
行う。動作パラメータ108は、静的最適化部1051
又は動的最適化部1052の何れを用いて最適化を行う
かの指定を含む。当該指定は、プロファイル情報の取得
可否を判断して、利用者が行う。利用者は、否と判断し
た場合、すなわちプロファイラが未完成である等の場合
には静的最適化部1051、可と判断した場合には動的
最適化部1052を用いる旨を指定する。
【0025】静的最適化部1051は、ソースプログラ
ム101を解析することにより変数に対して参照及び代
入を行う命令が記述された箇所数を計数し、計数した箇
所数に基づいて、プログラム実行時のプログラム全体、
並びに、各基本ブロック及び各関数における変数のアク
セス頻度を推定し、推定した頻度の大きな順に、変数、
基本ブロック及び関数を選択して最適化を行う。
【0026】動的最適化部1052は、プロファイラ1
053を用いて構成される。プロファイラ1053は、
ソースプログラム101が有する制御フローを辿ること
により、プログラム実行時のプログラム全体、並びに、
各基本ブロック及び各関数における変数のアクセス頻度
を計数する。動的最適化部1052は、プロファイラ1
053が計数した頻度の大きな変数、基本ブロック及び
関数を優先して最適化する。なお、動的最適化部105
2が行うプロファイラを用いた最適化は、従来技術によ
り行われるものであり、ここでは詳細な説明を省略す
る。
【0027】以下、静的最適化部について、詳しく説明
する。 <静的最適化部>図2は、静的最適化部1051を示す
ブロック図である。同図に示すように、静的最適化部1
051は、基本ブロック解析部111、計数部112、
変数最適化部113、第1算出部114、基本ブロック
最適化部115、第2算出部116、及び、関数最適化
部117からなる。
【0028】基本ブロック解析部111は、中間コード
生成部104が生成した中間コードを解析して、基本ブ
ロック、基本ブロック間の制御フローを抽出する。基本
ブロック解析部111が行うこの処理は、一般的なプロ
グラム変換装置において広く実施されている技術である
ため、詳細な説明を省略する。 <計数部>計数部112は、アクセス箇所数テーブル2
00を有している。図3にアクセス箇所数テーブル20
0の一例を示す。アクセス箇所数テーブル200は、変
数ごとに、変数名、参照箇所数、代入箇所数、及びアク
セス箇所数を記録する欄を有している。
【0029】計数部112は、ソースプログラムに記述
された各変数について、当該変数に対して参照及び代入
を行う命令が記述された箇所をプログラムの全体におい
て計数して参照箇所数及び代入箇所数を求め、さらに両
箇所数を合計してアクセス箇所数を求める。計数部11
2は、変数名、並びに、求めた参照箇所数、代入箇所数
及びアクセス箇所数を、アクセス箇所数テーブル200
のそれぞれの欄に記録する。
【0030】アクセス箇所数は、次のような意味を有す
る。
【0031】アクセス箇所数は、変数をアクセスする命
令が記述された箇所数であり、当該変数が実行時にアク
セスされる頻度を推定するものと考えられる。すなわ
ち、アクセス箇所数は、当該変数について最適化を行っ
た場合の効果の大きさを表すと考えられる。プログラム
変換装置100は、アクセス箇所数の大きな順に変数に
ついて最適化を行うことにより、効果的な最適化を実施
する。 <アクセス箇所数算出処理>図4は、計数部112が行
うアクセス箇所数算出処理を示すフローチャート、図5
は、説明のために用いるソースプログラムの一例、図6
は、図5のソースプログラムから中間コード生成部10
4が生成した中間コードである。図6の中間コードにお
いて、第1欄は関数、第2欄はラベル、第3欄は基本ブ
ロック、第4欄は命令コードを表している。以下、図4
のフローチャートを参照しながらアクセス箇所数算出処
理について説明する。
【0032】計数部112は、ソースプログラムを解析
してソースプログラムに記述された変数を知り、各変数
についてアクセス箇所数テーブル200の変数名欄に変
数名を、参照箇所数欄及び代入箇所数欄に0を、それぞ
れ記録する(ステップS01)。
【0033】次に計数部112は、中間コードに含まれ
る命令を順次取り出し(ステップS02)、当該命令が
変数に対して参照又は代入を行うか否かを判断し(ステ
ップS03)、命令が変数の値を参照する場合は(ステ
ップS04)当該命令によって参照される変数について
アクセス箇所数テーブル200の参照箇所数欄を1増や
し(ステップS05)、命令が変数に値を代入する場合
は(ステップS06)当該命令によって代入される変数
について同テーブルの代入箇所数欄を1増やす(ステッ
プS07)。
【0034】さらに計数部112は、アクセス箇所数テ
ーブル200の各変数について参照箇所数と代入箇所数
とを加算し同テーブルのアクセス箇所数欄に記録する
(ステップS09)。
【0035】図3のアクセス箇所数テーブル200の内
容は、図5のソースプログラム及び図6の中間コードに
ついてアクセス箇所数算出処理を行った結果を示してい
る。 <変数最適化部>変数最適化部113は、アクセス箇所
数が大きい順に、目的プログラムを動作させるハードウ
ェアが備えるレジスタと同数の変数について、割り付け
るレジスタを中間コードに記録する。 <変数最適化処理>図7は、変数最適化処理を示すフロ
ーチャートである。以下、図7のフローチャートを参照
しながら、変数最適化処理について説明する。
【0036】変数最適化部113は、アクセス箇所数テ
ーブル200の各行をアクセス箇所数の大きい順に並べ
替え(ステップS10)、アクセス箇所数の上位、目的
プログラムを動作させるハードウェアが有するレジスタ
と同数の変数の各々に対して相異なるレジスタを対応付
け(ステップS11)、中間コードにおいて前記変数が
記述された各箇所に、対応付けたレジスタ名を挿入する
(ステップS12)。
【0037】図8の中間コードは、図6の中間コードに
対して関数最適化処理を行った結果を示している。ここ
で、目的プログラムを動作させるハードウェアは2個の
レジスタr0、r1を備えるものとして、アクセス箇所
数の上位2個の変数a、bにレジスタr0、r1をそれ
ぞれ対応付ける。図8の中間コードにおいて表記a:r
0は、変数aが記述された箇所にレジスタ名r0が挿入
されたことを表している。当該表記に従って、目的プロ
グラム生成部106は、変数の値をレジスタに保持して
動作するような目的プログラムを生成する。 <第1算出部>第1算出部114は、基本ブロックアク
セス頻度テーブル300を有している。図9に基本ブロ
ックアクセス頻度テーブル300の一例を示す。基本ブ
ロックアクセス頻度テーブル300は、基本ブロックご
とに、基本ブロック名、参照箇所数合計、代入箇所数合
計、及び基本ブロックアクセス頻度推定値を記録する欄
を有している。
【0038】第1算出部114は、中間コードに記述さ
れた各基本ブロックにおいて、各変数に対して参照及び
代入を行う命令が記述された箇所をそれぞれ計数する。
次に、計数したそれぞれの箇所数に、前記計数部112
により計数された参照箇所数及び代入箇所数をそれぞ
れ、変数ごとに乗じて合計して参照箇所数合計及び代入
箇所数合計を求める。さらにそれらを加算して基本ブロ
ックアクセス頻度推定値を算出する。第1算出部114
は、基本ブロック名、並びに、求めた参照箇所数合計、
代入箇所数合計及び基本ブロックアクセス頻度推定値
を、基本ブロックアクセス頻度テーブル300のそれぞ
れの欄に記録する。
【0039】基本ブロックアクセス頻度推定値は、次の
ような意味を有する。
【0040】基本ブロックアクセス頻度推定値は、基本
ブロックにおいて、変数をアクセスする命令が記述され
た箇所数に、変数毎に計数部112が求めたアクセス箇
所数で重み付けをして合計した値であり、当該基本ブロ
ックにおいて実行時に変数がアクセスされる頻度を推定
するものと考えられる。すなわち、基本ブロックアクセ
ス頻度推定値は、当該基本ブロックについて最適化を行
った場合の効果の大きさを表すと考えられる。プログラ
ム変換装置100は、基本ブロックアクセス頻度推定値
の大きな基本ブロックを優先して最適化することによ
り、効果的な最適化を実施する。 <基本ブロックアクセス頻度推定値算出処理>図10
は、基本ブロックアクセス頻度推定値算出処理を示すフ
ローチャートである。以下、図10のフローチャート及
び前記図7の中間コードを参照しながら、基本ブロック
アクセス頻度推定値算出処理について説明する。
【0041】第1算出部114は、中間コードに記述さ
れた各基本ブロックについて、基本ブロックアクセス頻
度テーブル300の基本ブロック名欄に基本ブロック名
を、参照箇所数合計欄及び代入箇所数合計欄に0を、そ
れぞれ記録する(ステップS20)。
【0042】次に第1算出部114は、中間コードに記
述された基本ブロックごとに(ステップS21)、基本
ブロックに含まれる命令を順次取り出し(ステップS2
2)、当該命令が変数に対して参照又は代入を行うか否
かを判断し(ステップS23)、命令が変数の値を参照
する場合は(ステップS24)アクセス箇所数テーブル
200に記録された当該参照される変数の参照箇所数を
基本ブロックアクセス頻度テーブル300の当該基本ブ
ロックの参照箇所数合計欄に加え(ステップS25)、
命令が変数に値を代入する場合は(ステップS26)ア
クセス箇所数テーブル200に記録された当該代入され
る変数の代入箇所数を基本ブロックアクセス頻度テーブ
ル300の当該基本ブロックの代入箇所数合計欄に加え
る(ステップS27)。
【0043】さらに第1算出部114は、基本ブロック
アクセス頻度テーブル300の各基本ブロックについて
参照箇所数と代入箇所数とを加算し同テーブルの基本ブ
ロックアクセス頻度推定値欄に記録する(ステップS3
0)。
【0044】図9の基本ブロックアクセス頻度テーブル
300の内容は、図6の中間コードについて基本ブロッ
クアクセス頻度推定値算出処理を行った結果を示してい
る。 <基本ブロック最適化部>基本ブロック最適化部115
は、プログラムおいて条件分岐命令を用いて構成され、
条件成立時に基本ブロックX、条件不成立時に基本ブロ
ックYが択一的に実行された後、他の同一の基本ブロッ
クZにおいて処理が継続する制御構造(以降、単純IF
文構造と称する)を有する箇所において、基本ブロック
Yが基本ブロックアクセス頻度推定値に関して基本ブロ
ックXよりも大きい場合には、分岐条件の反転及び基本
ブロックの入れ替えを行う。
【0045】このコード変換は、次のような意味を有す
る。
【0046】一般に、前記単純IF文構造をとる箇所に
おいて条件不成立時に実行される基本ブロックYは、そ
の最後尾において基本ブロックZへの無条件分岐命令を
実行するため、基本ブロックXに比べて実行時間の点で
不利である。従って、基本ブロックアクセス頻度推定値
に関してより大きな基本ブロックが条件不成立時に実行
される場合には、前記のコード変換を行うことにより、
処理の等価性を保ちながら処理時間に関して最適化を行
う。 <基本ブロック最適化処理>図11は、基本ブロック最
適化処理を示すフローチャートである。以下、図11の
フローチャートを参照しながら、基本ブロック最適化処
理について説明する。
【0047】基本ブロック最適化部115は、変数最適
化部113から中間コードを入力され、当該中間コード
から命令を順次取り出し(ステップS40)、命令が条
件分岐命令であれば(ステップS41)、当該命令に後
続する基本ブロックが単純IF文構造をとるか否かを判
断し(ステップS42)、単純IF文構造をとる場合
は、条件成立時及び条件不成立時に実行される基本ブロ
ックを基本ブロックアクセス頻度推定値に関して比較し
(ステップS43)、後者がより大きい場合には、当該
条件分岐命令の分岐条件を反転し、最後尾の無条件分岐
命令を除き双方の基本ブロックの命令を入れ替える(ス
テップS44)。
【0048】図8は、基本ブロック最適化処理を行う前
の中間コードを示している。当該中間コードにおいて、
条件分岐命令BGE L1の成立時に基本ブロックB
3、不成立時に基本ブロックB2が実行される。基本ブ
ロックB2及びB3は、何れの実行後も基本ブロックB
4において実行が継続される単純IF文構造をとる。基
本ブロックB2は基本ブロックB4において実行を継続
するため、最後尾に無条件分岐命令BRA L2を有し
ている。
【0049】図9の基本ブロックアクセス頻度テーブル
300に記録されたように、条件成立時に実行される基
本ブロックB3の基本ブロックアクセス頻度推定値が1
0、条件不成立時に実行される基本ブロックB2が同じ
く13であり、後者がより大きいため、基本ブロック最
適化部115は、前記のコード変換を行う。
【0050】基本ブロック最適化部115は、条件分岐
命令BGE L1の分岐条件を反転してBLT L1と
し、基本ブロックB2及びB3について無条件命令BR
AL2を除く命令を入れ替える。
【0051】図12の中間コードは、図8の中間コード
に対して基本ブロック最適化部115が基本ブロック最
適化処理を行った結果を示している。 <第2算出部>第2算出部116は、関数アクセス頻度
テーブル400を有している。図13に関数アクセス頻
度テーブル400の一例を示す。関数アクセス頻度テー
ブル400は、関数ごとに、関数名、参照箇所数合計、
集計された代入箇所数合計、及び関数アクセス頻度推定
値を記録する欄を有している。
【0052】第2算出部116は、中間コードに記述さ
れた各関数において、各変数に対して参照及び代入を行
う命令が記述された箇所をそれぞれ計数する。次に、計
数したそれぞれの箇所数に、前記計数部112により計
数された参照箇所数及び代入箇所数をそれぞれ、変数ご
とに乗じて合計して参照箇所数合計及び代入箇所数合計
を求める。さらにそれらを加算して関数アクセス頻度推
定値を算出する。第2算出部116は、基本ブロック
名、並びに、求めた参照箇所数合計、代入箇所数合計及
び関数アクセス頻度推定値を、関数アクセス頻度テーブ
ル400のそれぞれの欄に記録する。
【0053】関数アクセス頻度推定値は、次のような意
味を有する。
【0054】関数アクセス頻度推定値は、関数におい
て、変数をアクセスする命令が記述された箇所数に、変
数毎に計数部112が求めたアクセス箇所数で重み付け
をして合計した値であり、当該関数において実行時に変
数がアクセスされる頻度を推定するものと考えられる。
すなわち、関数アクセス頻度推定値は、当該関数につい
て最適化を行った場合の効果の大きさを表すと考えられ
る。プログラム変換装置100は、関数アクセス頻度推
定値の大きな関数を優先して最適化することにより、効
果的な最適化を実施する。 <関数アクセス頻度推定値算出処理>図14は、関数ア
クセス頻度推定値算出処理を示すフローチャートであ
る。以下説明する各処理についてその特徴を明示するた
め、前記用いたソースプログラムとは異なる例を用いて
説明する。図15は、以下説明のために用いるソースプ
ログラムの一例、図16は、図15のソースプログラム
から中間コード生成部104が生成した中間コード、図
17は、図15のソースプログラム及び図16の中間コ
ードに基づいて計数部112が記録したアクセス箇所数
テーブル200である。以下、図14のフローチャート
を参照しながら、関数アクセス頻度推定値算出処理につ
いて説明する。
【0055】第2算出部116は、中間コードに記述さ
れた各関数について、関数アクセス頻度テーブル400
の関数名欄に関数名を、参照箇所数合計欄及び代入箇所
数合計欄に0を、それぞれ記録する(ステップS5
0)。
【0056】次に第2算出部116は、中間コードに記
述された関数ごとに(ステップS51)、関数に含まれ
る命令を順次取り出し(ステップS52)、当該命令が
変数に対して参照又は代入を行うか否かを判断し(ステ
ップS53)、命令が変数の値を参照する場合は(ステ
ップS54)アクセス箇所数テーブル200に記録され
た当該参照される変数の参照箇所数を関数アクセス頻度
テーブル400の当該基本ブロックの参照箇所数欄に加
え(ステップS55)、命令が変数に値を代入する場合
は(ステップS56)アクセス箇所数テーブル200に
記録された当該代入される変数の代入箇所数を関数アク
セス頻度テーブル400の当該基本ブロックの代入箇所
数欄に加える(ステップS57)。
【0057】さらに第2算出部116は、関数アクセス
頻度テーブル400の各基本ブロックについて参照箇所
数と代入箇所数とを加算し同テーブルの関数アクセス頻
度推定値欄に記録する(ステップS60)。
【0058】図13の関数アクセス頻度テーブル400
の内容は、図16の中間コードについて関数アクセス頻
度推定値算出処理を行った結果を示している。 <関数最適化部>関数最適化部117は、関数アクセス
頻度推定値が最も大きな関数についてインライン展開を
行う。 <関数最適化処理>図18は、第3最適化処理を示すフ
ローチャートである。以下、図18のフローチャートを
参照しながら、関数最適化処理について説明する。
【0059】関数最適化部117は、基本ブロック最適
化部115から中間コードを入力され、当該中間コード
に含まれる関数のうち、関数アクセス頻度テーブル40
0から関数アクセス頻度推定値に関して最も大きい関数
を見つけ(ステップS70)、当該関数を中間コードに
おいてインライン展開する(ステップS71)。
【0060】図16は関数最適化部117が関数最適化
処理を行う前の中間コードを示している。図13の関数
アクセス頻度テーブルを参照すれば、関数sub1が関
数アクセス頻度推定値の最大値3を有するため、関数s
ub1についてインライン展開する。
【0061】図19の中間コードは、図16の中間コー
ドに対して関数最適化部117が関数最適化処理を行っ
た結果を示している。なお、本処理の結果を特に強調す
るため、前記変数最適化部113が行った変数最適化処
理(レジスタ割付)の結果の表示を省略した。 <まとめ>以上説明したように、静的最適化部1051
において、計数部112は、変数についてアクセス箇所
数を計数し、第1算出部114は、基本ブロックについ
て基本ブロックアクセス頻度推定値を算出し、第2算出
部116は、関数について関数アクセス頻度推定値を算
出する。これらの数値はそれぞれ、プログラム実行時の
プログラム全体並びに各基本ブロック及び各関数におけ
る変数のアクセス頻度を推定するものと考えられる。す
なわち、これらの数値はそれぞれ、変数、基本ブロック
及び関数について最適化を行った場合の効果の大きさを
表すと考えられる。
【0062】静的最適化部1051は、変数、基本ブロ
ック及び関数について、前記数値の大きな順に適用対象
を選択して最適化を行う。変数最適化部113は、アク
セス箇所数が大きい順に、目的プログラムを動作させる
ハードウェアが備えるレジスタと同数の変数をレジスタ
割り付けし、基本ブロック最適化部115は、単純IF
構造において大きな基本ブロックアクセス頻度推定値を
有する基本ブロックが分岐条件成立時に実行されるよう
コード変換し、関数最適化部117は、関数アクセス頻
度推定値が最も大きな関数についてインライン展開を行
う。
【0063】このように、プログラム変換装置100
は、プロファイル情報が取得できない場合には、静的最
適化部1051を用いて最適化の適用対象を適切に選択
し、効果的な最適化を実施する。
【0064】また、プログラム変換装置100は、プロ
ファイル情報が取得できる場合には、動的最適化部10
52を用いてプロファイル情報に基づいて最適化の適用
対象を選択し、プログラムの動作に即した非常に効果的
な最適化を実施する。 <変形例>なお、前記説明において、計数部112は、
アクセス箇所数算出処理において参照箇所数と代入箇所
数とを加算してアクセス箇所数を求めるとしたが、参照
箇所数又は代入箇所数の何れか一方をアクセス箇所数と
してもよく、また双方に重み付けをして加算した結果を
アクセス箇所数としてもよい。
【0065】なお、同様に、第1算出部114は、基本
ブロックアクセス頻度推定値算出処理において、参照箇
所数合計又は代入箇所数合計の何れか一方を基本ブロッ
クアクセス頻度推定値としてもよく、また双方に重み付
けをして加算した結果を基本ブロックアクセス頻度推定
値としてもよい。
【0066】なお、同様に、第2算出部116は、関数
アクセス頻度推定値算出処理において、参照箇所数合計
又は代入箇所数合計の何れか一方を関数アクセス頻度推
定値としてもよく、また双方に重み付けをして加算した
結果を関数アクセス頻度推定値としてもよい。
【0067】
【発明の効果】本発明のプログラム変換装置は、最適化
機能を有するプログラム変換装置であって、プログラム
において変数をアクセスする命令が記述された箇所数を
変数ごとに計数する計数部と、計数された箇所数の多い
順に変数について最適化を行う変数最適化部とから構成
される静的最適化手段を備える。
【0068】この構成によれば、静的最適化手段は、プ
ログラム実行時の変数のアクセス頻度を表すと考えられ
る前記箇所数を計数し、当該箇所数の大きい順に変数に
ついて最適化を行う。当該箇所数の計数はソースプログ
ラムを解析することにより実現できるものであり、プロ
ファイル情報が取得できない場合においても、本プログ
ラム変換装置は効果的な最適化を実施できる。
【0069】前記プログラムは基本ブロックから構成さ
れ、前記静的最適化手段は、さらに、各基本ブロックに
おいて変数をアクセスする命令が記述された箇所数と前
記計数部により計数された箇所数とを変数ごとに乗じて
合計した値である基本ブロックアクセス頻度推定値を算
出する第1算出部と、算出された基本ブロックアクセス
頻度推定値の大きい基本ブロックを優先して最適化する
基本ブロック最適化部とを備えてもよい。
【0070】この構成によれば、静的最適化手段は、プ
ログラム実行時の基本ブロックにおける変数のアクセス
頻度を表すと考えられる前記基本ブロックアクセス頻度
推定値を算出し、当該基本ブロックアクセス頻度推定値
の大きい基本ブロックを優先して最適化する。当該基本
ブロックアクセス頻度推定値の算出はソースプログラム
を解析することにより実現できるものであり、プロファ
イル情報が取得できない場合においても、本プログラム
変換装置は効果的な最適化を実施できる。
【0071】前記プログラムは関数から構成され、前記
静的最適化手段は、さらに、各関数において変数をアク
セスする命令が記述された箇所数と前記計数部により計
数された箇所数とを変数ごとに乗じて合計した値である
関数アクセス頻度推定値を算出する第2算出部と、算出
された関数アクセス頻度推定値の大きい関数を優先して
最適化する関数最適化部とを備えてもよい。
【0072】この構成によれば、静的最適化手段は、プ
ログラム実行時の関数における変数のアクセス頻度を表
すと考えられる前記関数アクセス頻度推定値を計数し、
当該関数アクセス頻度推定値の大きい関数を優先して最
適化する。当該関数アクセス頻度推定値の算出はソース
プログラムを解析することにより実現できるものであ
り、プロファイル情報が取得できない場合においても、
本プログラム変換装置は効果的な最適化を実施できる。
【0073】前記プログラム変換装置は、さらに、前記
プログラムが有する制御フローを辿ることによりプログ
ラムの実行時において各変数がアクセスされる回数並び
に各基本ブロック及び各関数が実行される回数を計数
し、変数、基本ブロック及び関数のそれぞれについて前
記計数された回数の多いものを優先して最適化する動的
最適化手段と、前記静的最適化手段又は動的最適化手段
の何れかの指定を受け付ける受付手段と、指定された最
適化手段に対して最適化を実行させる制御手段とを備え
てもよい。
【0074】この構成によれば、本プログラム変換装置
は、プロファイル情報が取得できる場合には、動的最適
化手段を用いて、プログラムの制御フローを辿ってアク
セス頻度を計数し、計数したアクセス頻度の大きな変
数、基本ブロック及び関数を優先して最適化を行うた
め、プログラムの動作に即した非常に効果的な最適化を
実施できる。さらに、プロファイル情報が取得できない
場合には、静的最適化手段を用いて最適化を行うことが
できるため、前記静的最適化手段について述べた各効果
をも有する。
【0075】前記アクセスとは、変数に値を代入し又は
代入された値を参照し若しくはその何れかを行うことで
あってもよい。
【0076】この構成によれば、変数に対する代入操作
又は参照操作の何れかに特化した最適化を行うことがで
きるため、例えば目的プログラムを動作させるハードウ
ェアにおいて変数に対する代入操作及び参照操作に要す
る時間が異なる場合に、より効果的な最適化を実施でき
る。
【0077】前記変数最適化部は、前記計数部により計
数された箇所数の多い順に変数をレジスタに割り付けて
もよい。
【0078】この構成によれば、計数された箇所数の多
い順に、変数について具体的な最適化を行うことができ
る。
【0079】前記基本ブロック最適化部は、プログラム
おいて条件分岐命令を用いて構成され、条件成立時及び
条件不成立時に相異なる基本ブロックが択一的に実行さ
れた後、他の同一の基本ブロックにおいて処理が継続す
る制御構造を有する箇所において、条件不成立時に実行
される基本ブロックが前記第1算出部により算出された
基本ブロックアクセス頻度推定値に関して条件成立時に
実行される基本ブロックよりも大きい場合には、分岐条
件の反転及び基本ブロックの入れ替えを行ってもよい。
【0080】この構成によれば、算出された基本ブロッ
クアクセス頻度推定値の大きい基本ブロックを優先して
具体的な最適化を行うことができる。
【0081】前記関数最適化部は、前記第2算出部によ
り算出された関数アクセス頻度推定値の大きい関数を優
先してインライン展開してもよい。
【0082】この構成によれば、算出された関数アクセ
ス頻度推定値の大きい関数を優先して具体的な最適化を
行うことができる。
【0083】本発明のプログラム変換方法は、最適化ス
テップを有するプログラム変換方法であって、プログラ
ムにおいて変数をアクセスする命令が記述された箇所数
を変数ごとに計数する計数サブステップと、計数された
箇所数の多い順に変数について最適化を行う変数最適化
サブステップとを有する静的最適化ステップを有するこ
とを特徴とする。
【0084】この構成によれば、静的最適化ステップ
は、プログラム実行時の変数のアクセス頻度を表すと考
えられる前記箇所数を計数し、当該箇所数の大きい順に
変数について最適化を行う。当該箇所数の計数はソース
プログラムを解析することにより実現できるものであ
り、プロファイル情報が取得できない場合においても、
本プログラム変換方法は効果的な最適化を実施できる。
【0085】前記プログラムは基本ブロックから構成さ
れ、前記静的最適化ステップは、さらに、各基本ブロッ
クにおいて変数をアクセスする命令が記述された箇所数
と前記計数サブステップにより計数された箇所数とを変
数ごとに乗じて合計した値である基本ブロックアクセス
頻度推定値を算出する第1算出サブステップと、算出さ
れた基本ブロックアクセス頻度推定値の大きい基本ブロ
ックを優先して最適化する基本ブロック最適化サブステ
ップとを有してもよい。
【0086】この構成によれば、静的最適化ステップ
は、プログラム実行時の基本ブロックにおける変数のア
クセス頻度を表すと考えられる前記基本ブロックアクセ
ス頻度推定値を算出し、当該基本ブロックアクセス頻度
推定値の大きい基本ブロックを優先して最適化する。当
該基本ブロックアクセス頻度推定値の算出はソースプロ
グラムを解析することにより実現できるものであり、プ
ロファイル情報が取得できない場合においても、本プロ
グラム変換方法は効果的な最適化を実施できる。
【0087】前記プログラムは関数から構成され、前記
静的最適化ステップは、さらに、各関数において変数を
アクセスする命令が記述された箇所数と前記計数サブス
テップにより計数された箇所数とを変数ごとに乗じて合
計した値である関数アクセス頻度推定値を算出する第2
算出サブステップと、算出された関数アクセス頻度推定
値の大きい関数を優先して最適化する関数最適化サブス
テップとを有してもよい。
【0088】この構成によれば、静的最適化ステップ
は、プログラム実行時の関数における変数のアクセス頻
度を表すと考えられる前記関数アクセス頻度推定値を計
数し、当該関数アクセス頻度推定値の大きい関数を優先
して最適化する。当該関数アクセス頻度推定値の算出は
ソースプログラムを解析することにより実現できるもの
であり、プロファイル情報が取得できない場合において
も、本プログラム変換方法は効果的な最適化を実施でき
る。
【0089】前記プログラム変換方法は、さらに、前記
プログラムが有する制御フローを辿ることによりプログ
ラムの実行時において各変数がアクセスされる回数並び
に各基本ブロック及び各関数が実行される回数を計数
し、変数、基本ブロック及び関数のそれぞれについて前
記計数された回数の多いものを優先して最適化する動的
最適化ステップと、前記静的最適化ステップ又は動的最
適化ステップの何れかの指定を受け付ける受付ステップ
と、指定された最適化ステップに対して最適化を実行さ
せる制御ステップとを有してもよい。
【0090】この構成によれば、本プログラム変換方法
は、プロファイル情報が取得できる場合には、動的最適
化ステップを用いて、プログラムの制御フローを辿って
アクセス頻度を計数し、計数したアクセス頻度の大きな
変数、基本ブロック及び関数を優先して最適化するた
め、プログラムの動作に即した非常に効果的な最適化を
実施できる。さらに、プロファイル情報が取得できない
場合には、静的最適化ステップを用いて最適化を行うこ
とができるため、前記静的最適化ステップについて述べ
た各効果をも有する。
【0091】本発明のプログラム記録媒体は、最適化機
能を有するプログラム変換装置において用いられるプロ
グラムを記録したコンピュータ読取り可能なプログラム
記録媒体であって、変換対象となるプログラムにおいて
変数をアクセスする命令が記述された箇所数を変数ごと
に計数する計数サブステップと、計数された箇所数の多
い順に変数について最適化を行う変数最適化サブステッ
プとを含む静的最適化ステップからなるプログラムを記
録する。
【0092】この構成によれば、静的最適化ステップ
は、プログラム実行時の変数のアクセス頻度を表すと考
えられる前記箇所数を計数し、当該箇所数の大きい順に
変数について最適化を行う。当該箇所数の計数はソース
プログラムを解析することにより実現できるものであ
り、プロファイル情報が取得できない場合においても、
本プログラム記録媒体に記録されるプログラムは効果的
な最適化を実施できる。
【0093】前記変換対象となるプログラムは基本ブロ
ックから構成され、前記静的最適化ステップは、さら
に、各基本ブロックにおいて変数をアクセスする命令が
記述された箇所サブステップと前記計数部により計数さ
れた箇所数とを変数ごとに乗じて合計した値である基本
ブロックアクセス頻度推定値を算出する第1算出サブス
テップと、算出された基本ブロックアクセス頻度推定値
の大きい基本ブロックを優先して最適化する基本ブロッ
ク最適化サブステップとを含んでもよい。
【0094】この構成によれば、静的最適化ステップ
は、プログラム実行時の基本ブロックにおける変数のア
クセス頻度を表すと考えられる前記基本ブロックアクセ
ス頻度推定値を算出し、当該基本ブロックアクセス頻度
推定値の大きい基本ブロックを優先して最適化する。当
該基本ブロックアクセス頻度推定値の算出はソースプロ
グラムを解析することにより実現できるものであり、プ
ロファイル情報が取得できない場合においても、本プロ
グラム記録媒体に記録されるプログラムは効果的な最適
化を実施できる。
【0095】前記変換対象となるプログラムは関数から
構成され、前記静的最適化ステップは、さらに、各関数
において変数をアクセスする命令が記述された箇所サブ
ステップと前記計数部により計数された箇所数とを変数
ごとに乗じて合計した値である関数アクセス頻度推定値
を算出する第2算出サブステップと、算出された関数ア
クセス頻度推定値の大きい関数を優先して最適化する関
数最適化サブステップとを含んでもよい。
【0096】この構成によれば、静的最適化ステップ
は、プログラム実行時の関数における変数のアクセス頻
度を表すと考えられる前記関数アクセス頻度推定値を計
数し、当該関数アクセス頻度推定値の大きい関数を優先
して最適化する。当該関数アクセス頻度推定値の算出は
ソースプログラムを解析することにより実現できるもの
であり、プロファイル情報が取得できない場合において
も、本プログラム記録媒体に記録されるプログラムは効
果的な最適化を実施できる。
【0097】前記プログラム記録媒体が記録するプログ
ラムは、さらに、前記変換対象となるプログラムが有す
る制御フローを辿ることにより当該プログラムの実行時
において各変数がアクセスされる回数並びに各基本ブロ
ック及び各関数が実行される回数を計数し、変数、基本
ブロック及び関数のそれぞれについて前記計数された回
数の多いものを優先して最適化する動的最適化ステップ
と、前記静的最適化ステップ又は動的最適化ステップの
何れかの指定を受け付ける受付ステップと、指定された
最適化ステップに対して最適化を実行させる制御ステッ
プとからなるものであってもよい。
【0098】この構成によれば、本プログラム記録媒体
が記録するプログラムは、プロファイル情報が取得でき
る場合には、動的最適化ステップを用いて、変換対象と
なるプログラムの制御フローを辿ってアクセス頻度を計
数し、計数したアクセス頻度の大きな変数、基本ブロッ
ク及び関数を優先して最適化するため、プログラムの動
作に即した非常に効果的な最適化を実施できる。さら
に、プロファイル情報が取得できない場合には、静的最
適化ステップを用いて最適化を行うことができるため、
前記静的最適化ステップについて述べた各効果をも有す
る。
【図面の簡単な説明】
【図1】プログラム変換装置の機能ブロック図である。
【図2】静的最適化部の機能ブロック図である。
【図3】アクセス箇所数テーブルの一例である。
【図4】アクセス箇所数算出処理を示すフローチャート
である。
【図5】ソースプログラムの一例である。
【図6】図5のソースプログラムから生成された中間コ
ードである。
【図7】変数最適化処理を示すフローチャートである。
【図8】図6の中間コードに対して変数最適化処理を行
った結果の中間コードである。
【図9】基本ブロックアクセス頻度テーブルの一例であ
る。
【図10】基本ブロックアクセス頻度推定値算出処理を
示すフローチャートである。
【図11】基本ブロック最適化処理を示すフローチャー
トである。
【図12】図8の中間コードに対して基本ブロック最適
化処理を行った結果の中間コードである。
【図13】関数アクセス頻度テーブルの一例である。
【図14】関数アクセス頻度推定値算出処理を示すフロ
ーチャートである。
【図15】ソースプログラムの一例である。
【図16】図15のソースプログラムから生成された中
間コードである。
【図17】アクセス箇所数テーブルの一例である。
【図18】関数最適化処理を示すフローチャートであ
る。
【図19】図16の中間コードに対して関数最適化処理
を行った結果の中間コードである。
【符号の説明】
100 プログラム変換装置 101 ソースプログラム 102 字句解析部 103 構文解析部 104 中間コード生成部 105 中間コード最適化部 106 目的プログラム生成部 107 目的プログラム 108 動作パラメータ 109 受付部 110 制御部 111 基本ブロック解析部 112 計数部 113 変数最適化部 114 第1算出部 115 基本ブロック最適化部 116 第2算出部 117 関数最適化部 200 アクセス箇所数テーブル 300 基本ブロックアクセス頻度テーブル 400 関数アクセス頻度テーブル 1051 静的最適化部 1052 動的最適化部 1053 プロファイラ

Claims (16)

    【特許請求の範囲】
  1. 【請求項1】 最適化機能を有するプログラム変換装置
    であって、 プログラムにおいて変数をアクセスする命令が記述され
    た箇所数を変数ごとに計数する計数部と、 計数された箇所数の多い順に変数について最適化を行う
    変数最適化部とから構成される静的最適化手段を備える
    ことを特徴とするプログラム変換装置。
  2. 【請求項2】 前記プログラムは基本ブロックから構成
    され、 前記静的最適化手段は、さらに、 各基本ブロックにおいて変数をアクセスする命令が記述
    された箇所数と前記計数部により計数された箇所数とを
    変数ごとに乗じて合計した値である基本ブロックアクセ
    ス頻度推定値を算出する第1算出部と、 算出された基本ブロックアクセス頻度推定値の大きい基
    本ブロックを優先して最適化する基本ブロック最適化部
    とを備えることを特徴とする請求項1記載のプログラム
    変換装置。
  3. 【請求項3】 前記プログラムは関数から構成され、 前記静的最適化手段は、さらに、 各関数において変数をアクセスする命令が記述された箇
    所数と前記計数部により計数された箇所数とを変数ごと
    に乗じて合計した値である関数アクセス頻度推定値を算
    出する第2算出部と、 算出された関数アクセス頻度推定値の大きい関数を優先
    して最適化する関数最適化部とを備えることを特徴とす
    る請求項2記載のプログラム変換装置。
  4. 【請求項4】 前記プログラム変換装置は、さらに、 前記プログラムが有する制御フローを辿ることによりプ
    ログラムの実行時において各変数がアクセスされる回数
    並びに各基本ブロック及び各関数が実行される回数を計
    数し、変数、基本ブロック及び関数のそれぞれについて
    前記計数された回数の多いものを優先して最適化する動
    的最適化手段と、 前記静的最適化手段又は動的最適化手段の何れかの指定
    を受け付ける受付手段と、 指定された最適化手段に対して最適化を実行させる制御
    手段とを備えることを特徴とする請求項3記載のプログ
    ラム変換装置。
  5. 【請求項5】 前記アクセスとは、 変数に値を代入し又は代入された値を参照し若しくはそ
    の何れかを行うことであることを特徴とする請求項1乃
    至4のいずれか1項に記載のプログラム変換装置。
  6. 【請求項6】 前記変数最適化部は、前記計数部により
    計数された箇所数の多い順に変数をレジスタに割り付け
    ることを特徴とする請求項1記載のプログラム変換装
    置。
  7. 【請求項7】 前記基本ブロック最適化部は、プログラ
    ムおいて条件分岐命令を用いて構成され、条件成立時及
    び条件不成立時に相異なる基本ブロックが択一的に実行
    された後、他の同一の基本ブロックにおいて処理が継続
    する制御構造を有する箇所において、条件不成立時に実
    行される基本ブロックが前記第1算出部により算出され
    た基本ブロックアクセス頻度推定値に関して条件成立時
    に実行される基本ブロックよりも大きい場合には、分岐
    条件の反転及び基本ブロックの入れ替えを行うことを特
    徴とする請求項2記載のプログラム変換装置。
  8. 【請求項8】 前記関数最適化部は、前記第2算出部に
    より算出された関数アクセス頻度推定値の大きい関数を
    優先してインライン展開することを特徴とする請求項3
    記載のプログラム変換装置。
  9. 【請求項9】 最適化ステップを有するプログラム変換
    方法であって、 プログラムにおいて変数をアクセスする命令が記述され
    た箇所数を変数ごとに計数する計数サブステップと、 計数された箇所数の多い順に変数について最適化を行う
    変数最適化サブステップとを有する静的最適化ステップ
    を有することを特徴とするプログラム変換方法。
  10. 【請求項10】 前記プログラムは基本ブロックから構
    成され、 前記静的最適化ステップは、さらに、 各基本ブロックにおいて変数をアクセスする命令が記述
    された箇所数と前記計数サブステップにより計数された
    箇所数とを変数ごとに乗じて合計した値である基本ブロ
    ックアクセス頻度推定値を算出する第1算出サブステッ
    プと、 算出された基本ブロックアクセス頻度推定値の大きい基
    本ブロックを優先して最適化する基本ブロック最適化サ
    ブステップとを有することを特徴とする請求項8記載の
    プログラム変換方法。
  11. 【請求項11】 前記プログラムは関数から構成され、 前記静的最適化ステップは、さらに、 各関数において変数をアクセスする命令が記述された箇
    所数と前記計数サブステップにより計数された箇所数と
    を変数ごとに乗じて合計した値である関数アクセス頻度
    推定値を算出する第2算出サブステップと、 算出された関数アクセス頻度推定値の大きい関数を優先
    して最適化する関数最適化サブステップとを有すること
    を特徴とする請求項9記載のプログラム変換方法。
  12. 【請求項12】 前記プログラム変換方法は、さらに、 前記プログラムが有する制御フローを辿ることによりプ
    ログラムの実行時において各変数がアクセスされる回数
    並びに各基本ブロック及び各関数が実行される回数を計
    数し、変数、基本ブロック及び関数のそれぞれについて
    前記計数された回数の多いものを優先して最適化する動
    的最適化ステップと、 前記静的最適化ステップ又は動的最適化ステップの何れ
    かの指定を受け付ける受付ステップと、 指定された最適化ステップに対して最適化を実行させる
    制御ステップと を有するることを特徴とする請求項10記載のプログラ
    ム変換方法。
  13. 【請求項13】 最適化機能を有するプログラム変換装
    置において用いられるプログラムを記録したコンピュー
    タ読取り可能なプログラム記録媒体であって、 変換対象となるプログラムにおいて変数をアクセスする
    命令が記述された箇所数を変数ごとに計数する計数サブ
    ステップと、 計数された箇所数の多い順に変数について最適化を行う
    変数最適化サブステップとを含む静的最適化ステップか
    らなるプログラムを記録することを特徴とするプログラ
    ム記録媒体。
  14. 【請求項14】 前記変換対象となるプログラムは基本
    ブロックから構成され、 前記静的最適化ステップは、さらに、 各基本ブロックにおいて変数をアクセスする命令が記述
    された箇所数と前記計数サブステップにより計数された
    箇所数とを変数ごとに乗じて合計した値である基本ブロ
    ックアクセス頻度推定値を算出する第1算出サブステッ
    プと、 算出された基本ブロックアクセス頻度推定値の大きい基
    本ブロックを優先して最適化する基本ブロック最適化サ
    ブステップとを含むことを特徴とする請求項12記載の
    プログラム記録媒体。
  15. 【請求項15】 前記変換対象となるプログラムは関数
    から構成され、 前記静的最適化ステップは、さらに、 各関数において変数をアクセスする命令が記述された箇
    所数と前記計数サブステップにより計数された箇所数と
    を変数ごとに乗じて合計した値である関数アクセス頻度
    推定値を算出する第2算出サブステップと、 算出された関数アクセス頻度推定値の大きい関数を優先
    して最適化する関数最適化サブステップとを含むことを
    特徴とする請求項13記載のプログラム記録媒体。
  16. 【請求項16】 前記プログラム記録媒体が記録するプ
    ログラムは、さらに、 前記変換対象となるプログラムが有する制御フローを辿
    ることにより当該プログラムの実行時において各変数が
    アクセスされる回数並びに各基本ブロック及び各関数が
    実行される回数を計数し、変数、基本ブロック及び関数
    のそれぞれについて前記計数された回数の多いものを優
    先して最適化する動的最適化ステップと、 前記静的最適化ステップ又は動的最適化ステップの何れ
    かの指定を受け付ける受付ステップと、 指定された最適化ステップに対して最適化を実行させる
    制御ステップとからなることを特徴とする請求項14記
    載のプログラム記録媒体。
JP2000095966A 2000-03-30 2000-03-30 プログラム変換装置、プログラム変換方法及びプログラム記録媒体 Expired - Fee Related JP3431568B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2000095966A JP3431568B2 (ja) 2000-03-30 2000-03-30 プログラム変換装置、プログラム変換方法及びプログラム記録媒体

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2000095966A JP3431568B2 (ja) 2000-03-30 2000-03-30 プログラム変換装置、プログラム変換方法及びプログラム記録媒体

Publications (2)

Publication Number Publication Date
JP2001282546A true JP2001282546A (ja) 2001-10-12
JP3431568B2 JP3431568B2 (ja) 2003-07-28

Family

ID=18610793

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000095966A Expired - Fee Related JP3431568B2 (ja) 2000-03-30 2000-03-30 プログラム変換装置、プログラム変換方法及びプログラム記録媒体

Country Status (1)

Country Link
JP (1) JP3431568B2 (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009251996A (ja) * 2008-04-08 2009-10-29 Nippon Telegr & Teleph Corp <Ntt> 処理装置、処理方法およびそのプログラム
JP2014186728A (ja) * 2013-03-15 2014-10-02 Fujitsu Ltd ソフトウェアプログラムの効率を高める方法及びプロセッサ
JP2015184737A (ja) * 2014-03-20 2015-10-22 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation インライニングのための方法及びそのコンピュータ・プログラム、並びに、当該インライニングを実行するためのコンピュータ
US9760354B2 (en) 2015-04-28 2017-09-12 Fujitsu Limited Information processing apparatus and compiling method
KR20220040204A (ko) * 2020-09-23 2022-03-30 재단법인대구경북과학기술원 하이브리드 메모리 제어 장치 및 방법

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009251996A (ja) * 2008-04-08 2009-10-29 Nippon Telegr & Teleph Corp <Ntt> 処理装置、処理方法およびそのプログラム
JP2014186728A (ja) * 2013-03-15 2014-10-02 Fujitsu Ltd ソフトウェアプログラムの効率を高める方法及びプロセッサ
JP2015184737A (ja) * 2014-03-20 2015-10-22 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation インライニングのための方法及びそのコンピュータ・プログラム、並びに、当該インライニングを実行するためのコンピュータ
US9760354B2 (en) 2015-04-28 2017-09-12 Fujitsu Limited Information processing apparatus and compiling method
KR20220040204A (ko) * 2020-09-23 2022-03-30 재단법인대구경북과학기술원 하이브리드 메모리 제어 장치 및 방법
KR102480944B1 (ko) 2020-09-23 2022-12-22 재단법인대구경북과학기술원 하이브리드 메모리 제어 장치 및 방법

Also Published As

Publication number Publication date
JP3431568B2 (ja) 2003-07-28

Similar Documents

Publication Publication Date Title
US9965324B2 (en) Process grouping for improved cache and memory affinity
US5950009A (en) Method and apparatus for profile-based reordering of program portions in a computer program
US6725448B1 (en) System to optimally create parallel processes and recording medium
JP2720910B2 (ja) データ処理システムの作業負荷を管理するための装置及び方法
US20110209157A1 (en) Resource allocation method, program, and resource allocation apparatus
US20160328218A1 (en) Program execution device and compiler system
CN113641701B (zh) 一种数据查询方法、系统、异构加速平台及存储介质
JPH11272476A (ja) バイトコードされたプログラムを動的に最適化するための方法及び装置
JPH10124325A (ja) 変数の最適配置方法、変数の最適配置装置及び変数の最適配置プログラムを格納したコンピュータ読み取り可能な記録媒体
US9280350B2 (en) Methods and apparatus to perform adaptive pre-fetch operations in managed runtime environments
JP2011022993A (ja) マルチパス動的プロファイリングのためのコンピュータに実行させる方法、システム及びコンピュータ・プログラム
CN106648755B (zh) 一种在安卓art环境中动态加载dex的方法及装置
US6360360B1 (en) Object-oriented compiler mechanism for automatically selecting among multiple implementations of objects
US9389889B2 (en) Application server for optimizing timing of performing dynamic compilation
JP2001282546A (ja) プログラム変換装置、プログラム変換方法及びプログラム記録媒体
JP3339317B2 (ja) 動的情報利用型プログラム最適化装置
US20070011440A1 (en) Processor and processing method
JP2004118367A (ja) コンピュータ装置及びプログラム実行方法
US20120017070A1 (en) Compile system, compile method, and storage medium storing compile program
JP2910676B2 (ja) 負荷均等化装置
JP3309810B2 (ja) プログラムリンクシステム、方法及び記録媒体
CN116048978B (zh) 一种软件服务性能自适应测试方法、系统、终端及介质
JP2007200240A (ja) 情報処理装置及び情報処理方法
JP2002041310A (ja) クラス動的バインドシステムおよび方法
CN117290240A (zh) 依赖程序的生成方法和装置、存储介质及电子设备

Legal Events

Date Code Title Description
FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20080523

Year of fee payment: 5

LAPS Cancellation because of no payment of annual fees