JP2001195263A - コンパイル装置、コンパイル方法、および、コンパイル用プログラムを記録した記録媒体 - Google Patents

コンパイル装置、コンパイル方法、および、コンパイル用プログラムを記録した記録媒体

Info

Publication number
JP2001195263A
JP2001195263A JP2000007537A JP2000007537A JP2001195263A JP 2001195263 A JP2001195263 A JP 2001195263A JP 2000007537 A JP2000007537 A JP 2000007537A JP 2000007537 A JP2000007537 A JP 2000007537A JP 2001195263 A JP2001195263 A JP 2001195263A
Authority
JP
Japan
Prior art keywords
code
data
access
instruction
address
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.)
Withdrawn
Application number
JP2000007537A
Other languages
English (en)
Inventor
Manabu Ezaki
学 江崎
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.)
NEC IC Microcomputer Systems Co Ltd
Original Assignee
NEC IC Microcomputer Systems 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 NEC IC Microcomputer Systems Co Ltd filed Critical NEC IC Microcomputer Systems Co Ltd
Priority to JP2000007537A priority Critical patent/JP2001195263A/ja
Publication of JP2001195263A publication Critical patent/JP2001195263A/ja
Withdrawn legal-status Critical Current

Links

Landscapes

  • Devices For Executing Special Programs (AREA)

Abstract

(57)【要約】 【課題】プログラムの実行速度を向上させる。 【解決手段】データ再配置部115により、マシン上も
しくはシミュレータ上の一時目的コードの実行によるデ
ータコードのアクセス回数をアドレスおよびアクセスサ
イズごとに記録したデータアクセス情報に基づき、アク
セス頻度の高いデータコードを検出し、1命令でアクセ
ス可能なデータコード領域に再配置する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明はコンパイル装置に関
し、特に、コードスケジューリングを行うコンパイル装
置に関する。
【0002】
【従来の技術】従来、この種のコンパイル装置は、コン
ピュータ構成のデータ処理装置により構成され、記録媒
体に記録されたコンパイル用プログラムまたはコンパイ
ラの読み取り実行により実現され、ソースプログラムの
コードを入力し、マイクロプロセッサに対応してプログ
ラムの実行速度を高める目的コードを出力するために用
いられている。
【0003】たとえば、パイプライン方式のマイクロプ
ロセッサにおいて、命令間のコンフリクトを回避させつ
つプログラムの実行速度を高めるために、コンパイラに
より、互いに依存関係のない複数の命令に関しては、他
の命令の結果を待っている遅延時間が短い命令を自動的
に前に配置するようにした命令コードのスケジューリン
グ方式が提案されている。
【0004】また、現在、マイクロプロセッサは、CP
Uとメモリとの間に高速、小容量のキャッシュメモリを
配置し、メモリに置かれたデータコードへのアクセスの
高速化を図っているものが一般的となっている。しか
し、必要なデータコードがキャッシュ上に存在しないキ
ャッシュミスに起因する実行速度低下が残っており、こ
の機能低下を低減するために、コンパイラにより、命令
実行時のキャッシュミス・ペナルティを小さくするため
の命令スケジューリングを行う方式が考案されている。
【0005】図7は、たとえば、特開平10−3339
16号公報に開示されている従来のコンパイル装置を示
すブロック図である。図7(A)を参照すると、この従
来のコンパイル装置102は、記録媒体に記録されたコ
ンパイル用プログラムまたはコンパイラの実行によるソ
フトウェア機能手段としてフロントエンド110,バッ
クエンド111を備え、バックエンド111は、さら
に、コードスケジューリング部112,目的コード生成
部113とを備える。
【0006】フロントエンド110は、たとえば、C言
語、JAVA言語、FORTRAN言語などの高級言語
で記述された入力コードを入力し、入力コードの字句解
析、構文解析を行う。
【0007】コードスケジューリング部112は、有効
設定された場合、目的コードをマシンもしくはシミュレ
ータで実行して得られるプロファイルデータを基にキャ
ッシュミスペナルティをできるだけ小さくするために命
令コードのスケジューリングを行う。なお、無効設定さ
れた場合は、不動作である。
【0008】目的コード生成部113は、マシン上もし
くはシミュレータ上で実行可能な目的コードを生成す
る。
【0009】また、図7(B)は、図7(A)における
コードスケジューリング部112の詳細構成例を示すブ
ロック図である。このコードスケジューリング部112
は、さらに、プロファイルデータ解析部130、およ
び、コードスケジューリング実行部131を備える。
【0010】プロファイルデータ解析部130は、目的
コードをマシン上もしくはシミュレータ上で実行して得
られるCPU動作を記録したプロファイルデータを解析
し、キャッシュミス・ペナルティ発生部分を検出する。
また、コードスケジューリング実行部131で利用する
ためのキャッシュ動作情報を出力する。ここで、このキ
ャッシュ動作情報とは、キャッシュミスしたデータを主
記憶からキャッシュに読み込む動作が各動作クロックで
行われている否かを表わす。
【0011】コードスケジューリング実行部131は、
プロファイルデータ解析部130により得られたキャッ
シュ動作情報を基に、プロファイルデータ解析部130
で検出したキャッシュミス・ペナルティを軽減するため
の命令コードの再スケジューリングを行う。
【0012】図8は、この従来のコンパイル装置を用い
た処理例を示すフローチャートである。この従来のコン
パイル装置を用いた処理を簡単に説明する。
【0013】まず、処理ステップ520において、フロ
ントエンド110により、入力コードの字句解析、構文
解析を行い、バックエンド111のコードスケジューリ
ング部112を無効にして、目的コード生成部113に
より、解析結果に基づき一時目的コードを生成する。
【0014】次に、処理ステップ615において、マシ
ン上もしくはシミュレータ上で一時目的コードを実行
し、この一時目的コードの実行によるCPU動作を記録
したプロファイルデータを生成する。
【0015】最後に、処理ステップ521において、バ
ックエンド111のコードスケジューリング部112を
有効にして、プロファイルデータに基づいて、実行を低
下させるキャッシュミス・ペナルティを解析し、キャッ
シュペナルティをできるだけ小さくするために一時目的
コードを再スケジューリングするコードスケジューリン
グ処理を行い、目的コード生成部113により、最終的
な目的コードを生成し、その実行速度を向上させてい
た。
【0016】
【発明が解決しようとする課題】マイクロプロセッサ
は、一般的に、機械語命令のデータコードアクセス命令
において、アクセスできるデータコードのディスプレー
スメントに制限があり、例えば、16ビット・ディスプ
レースメントの値しかとることができない。このため、
従来のコンパイラ技術においては、データコード領域の
任意の位置にポインタを設定し、そのポインタをポイン
タ専用のためのレジスタに格納することにより、そのレ
ジスタからのオフセット(ディスプレースメント)でデ
ータコード領域をアクセスし、そのポインタの近辺にデ
ータコードサイズの小さいデータコードをできるだけ多
く配置することにより、できるだけ多くのデータコード
を1命令のデータコードアクセス命令でアクセスし、実
行速度を向上させるという技術がある。
【0017】しかし、依然として、アクセスできるデー
タコードのディスプレースメントの範囲外にあるデータ
コードにおいては、1命令でアクセスすることができ
ず、複数命令でアクセスしなければならないため、アク
セスできるデータコードのディスプレースメントの範囲
外にあるデータコードへのアクセス頻度が高いプログラ
ムにおいては、実行速度が低下するという問題がある。
【0018】次に、上記問題が生じる理由について、図
面を参照して説明する。図9,図10は、データコード
アクセス命令のディスプレースメントとして16ビット
の値までしかとることができないマイクロプロセッサに
対するデータコード領域,命令コードの例を示す説明図
である。
【0019】図9に示す「ポインタ」は、データコード
領域を高速にアクセスするための、データコード領域の
任意の位置を示すポインタを示し、この「ポインタ」か
ら16ビット・ディスプレースメントでアクセスできる
データコード領域901に「Sdata」が配置されて
いる。このため、「Sdata」は、図10(A)に示
すように、データコードアクセス命令ld.wにより1
命令でアクセスすることができ、このデータコードアク
セス命令ld.wは、図10のポインタを示す[gp]
からのディスプレースメント$Sdataに格納されて
いるSdataの値を取り出し、汎用レジスタr20へ
格納している。
【0020】しかし、図9中の「Data」,「Dat
a1」は、「ポインタ」から16ビット・ディスプレー
スメントでアクセスできないデータコード領域900,
データコード領域901に配置されており、図10
(B)に示すように、データコードアクセス命令の16
ビット・ディスプレースメント指定では表現できないた
め、2命令を必要とし、まず、命令movhiにより、
Dataの上位16ビットを取り出し、汎用レジスタr
1に格納し、次に、データコードアクセス命令ld.w
により、前述のDataの下位16ビットと前述の汎用
レジスタr1で32ビットのディスプレースメントを表
現し、Dataの値を取り出して汎用レジスタr20に
格納している。このため、16ビット・ディスプレース
メントでアクセスできないデータコード領域900,デ
ータコード領域901に配置されているデータコードへ
のアクセス頻度が高いプログラムにおいては、実行速度
が低下するという問題がある。
【0021】また、従来のコンパイラにおいて、データ
コード領域のどこにどのデータコードを配置するかを指
定することが可能な技術が存在するが、データコードの
アクセス頻度を知る手段がないため、効率的にアクセス
頻度の高いデータコードを16ビット・ディスプレース
メントでアクセス可能なデータコード領域に配置するこ
とが困難であった。
【0022】従って、本発明の目的は、目的コード中の
データコードを再配置し、プログラムの実行速度を向上
させることにある。
【0023】
【課題を解決するための手段】そのため、本発明のコン
パイル装置は、入力コードの字句および構文の解析結果
に基づき一時目的コードを生成し、マシン上もしくはシ
ミュレータ上の前記一時目的コードの実行によるデータ
コードのアクセス回数をアドレスおよびアクセスサイズ
ごとに記録したデータアクセス情報に基づきアクセス頻
度の高いデータコードを検出し1命令でアクセス可能な
データコード領域に再配置し、目的コードを生成してい
る。
【0024】また、前記データアクセス情報を参照し
て、アドレスごとのアクセス頻度の高い順にデータコー
ドをソートし、同一アドレスで最も大きいアクセスサイ
ズのデータコードを選択して、1命令でアクセス可能な
データコード領域にアクセス頻度順に再配置し、再配置
後のアドレスを前記データアクセス情報にそれぞれ付加
し再配置情報として出力するデータ再配置実行部と、前
記一時目的コードを1命令コードずつ読み出し、データ
コードアクセス命令であり且つそのアクセスアドレスが
前記再配置情報の再配置前のアドレスと一致する場合、
一致したデータコードアクセス命令のアクセスアドレス
を前記配置後のアドレスに置き換え命令コードを補正す
る命令コード補正部とを備えている。
【0025】また、マシン上もしくはシミュレータ上の
前記一時目的コードの実行によるCPU動作を記録した
プロファイルデータコードに基づき、命令コードの再ス
ケジューリングを行っている。
【0026】また、本発明のコンパイル方法は、入力コ
ードの字句および構文の解析結果に基づき一時目的コー
ドを生成し、マシン上もしくはシミュレータ上の前記一
時目的コードの実行によるデータコードのアクセス回数
をアドレスおよびアクセスサイズごとに記録したデータ
アクセス情報に基づきアクセス頻度の高いデータコード
を検出し1命令でアクセス可能なデータコード領域に再
配置し、目的コードを生成している。
【0027】また、前記データアクセス情報を参照し
て、アドレスごとのアクセス頻度の高い順にデータコー
ドをソートし、同一アドレスで最も大きいアクセスサイ
ズのデータコードを選択して、1命令でアクセス可能な
データコード領域にアクセス頻度順に再配置し、再配置
後のアドレスを前記データアクセス情報にそれぞれ付加
し再配置情報として出力するデータ再配置実行ステップ
と、前記一時目的コードを1命令コードずつ読み出し、
データコードアクセス命令であり且つそのアクセスアド
レスが前記再配置情報の再配置前のアドレスと一致する
場合、一致したデータコードアクセス命令のアクセスア
ドレスを前記配置後のアドレスに置き換え命令コードを
補正する命令コード補正ステップとを含んでいる。
【0028】また、マシン上もしくはシミュレータ上の
前記一時目的コードの実行によるCPU動作を記録した
プロファイルデータコードに基づき、命令コードの再ス
ケジューリングを行っている。
【0029】
【発明の実施の形態】次に、本発明について図面を参照
して説明する。図1は、本発明のコンパイル装置の実施
形態を示すブロック図である。図1(A)を参照する
と、本実施形態のコンパイル装置102は、記録媒体に
記録されたコンパイル用プログラムまたはコンパイラの
実行によるソフトウェア機能手段としてフロントエンド
110,バックエンド111を備え、バックエンド11
1は、さらに、コードスケジューリング部112,目的
コード生成部113,データ再配置部115とを備え
る。このデータ再配置部115以外の各ブロック110
〜114は、図7に示した従来のコンパイル装置102
の各ブロックと同ブロックであり、重複説明を省略す
る。
【0030】本実施形態のコンパイル装置の特徴である
データ再配置部115は、有効設定された場合、入力コ
ードの解析結果に基づき一時的に生成された一時目的コ
ードのマシン上もしくはシミュレータ上の実行によるデ
ータコードのアクセス回数をアドレスおよびアクセスサ
イズごとに記録したデータアクセス情報に基づき、アク
セス頻度の高いデータコードを検出し1命令でアクセス
可能なデータコード領域に再配置する。
【0031】図2は、このデータ再配置部115で参照
されるデータアクセス情報の内容例を示す説明図であ
る。このデータアクセス情報は、「アドレス」、「アク
セスサイズ」、「アクセス回数」で構成されており、
「アドレス」は、データコードがアクセスされた時のデ
ータコードが格納されているアドレスを示し、「アクセ
スサイズ」は、データコードがアクセスされた時のデー
タコードのアクセスサイズを示し、「アクセス回数」
は、データコードがアクセスされた回数を示す。
【0032】さらに、このデータ再配置部115は、図
1(B)に示すように、データ再配置実行部120,命
令コード補正部121とを備える。
【0033】データ再配置実行部120は、データアク
セス情報を参照して、アドレスごとのアクセス頻度の高
い順にデータコードをソートし、同一アドレスで最も大
きいアクセスサイズのデータコードを選択して、1命令
でアクセス可能なデータコード領域にアクセス頻度順に
再配置し、再配置後のアドレスをデータアクセス情報に
それぞれ付加し再配置情報として出力する。図3は、こ
の再配置情報の例を示す説明図である。
【0034】命令コード補正部121は、一時目的コー
ドを1命令コードずつ読み出し、データコードアクセス
命令であり且つそのアクセスアドレスが再配置情報の再
配置前のアドレスと一致する場合、一致したデータコー
ドアクセス命令のアクセスアドレスを配置後のアドレス
に置き換え命令コードを補正する。
【0035】図4は、本実施形態のコンパイル装置を用
いた処理例を示すフローチャートである。本実施例のコ
ンパイル装置を用いた全体の処理について、図4を参照
して説明する。
【0036】まず、処理ステップ200において、フロ
ントエンド110により、入力コードの字句解析、構文
解析を行い、バックエンド111のコードスケジューリ
ング部112,データ再配置部115を無効にして、目
的コード生成部113により、解析結果に基づき一時目
的コードを生成する。
【0037】次に、処理ステップ615において、マシ
ン上もしくはシミュレータ上で前述一時目的コードを実
行し、プロファイルデータおよびデータアクセス情報を
生成する。
【0038】最後に、処理ステップ201において、バ
ックエンド111のコードスケジューリング部112を
有効にして、プロファイルデータに基づいて、実行を低
下させるキャッシュミス・ペナルティを解析し、キャッ
シュペナルティをできるだけ小さくするために一時目的
コードを再スケジューリングするコードスケジューリン
グ処理を行い、バックエンド111のデータ再配置部1
15を有効にして、データアクセス情報に基づいて、ア
クセス頻度の高いデータコードを1命令でアクセス可能
なデータコード領域へ再配置するデータ再配置処理を行
い、目的コード生成部113により、最終的な目的コー
ドを生成する。
【0039】図5,図6は、この処理ステップ201に
おける、データ再配置部115によるデータ再配置処理
の詳細処理を示すフローチャートであり、図1(B)に
示すデータ再配置部115のデータ再配置実行部12
0,命令コード補正部121による詳細処理例をそれぞ
れ示す。次に、図5,図6を参照して、データ再配置部
115によるデータ再配置処理の詳細処理を説明する。
【0040】まず、処理ステップ210において、デー
タアクセス情報を基に、アドレスごとのアクセス頻度の
高い順にデータコードをソートし、ソートデータへ出力
する。
【0041】次に、処理ステップ211において、ソー
トデータからのアクセス頻度の高いアドレス順にデータ
コードを取り出し、処理ステップ212において、取り
出した同アドレスのデータコードの中で最も大きなアク
セスサイズのデータコードを検索選択し、処理ステップ
213において、1命令でアクセス可能なデータコード
領域へ移動し、図3に示すように、データアクセス情報
に配置後アドレスを付加し、再配置情報として出力す
る。
【0042】次に、処理ステップ214において、高速
にアクセス可能なデータコード領域の空領域がまだ残っ
ている場合、処理ステップ215へと進み、ソートデー
タの全アドレス終了であれば、図6のコード補正処理部
121による処理へ進み、全アドレス終了でなければ、
処理ステップ211へと戻り、以上の処理を繰り返す。
【0043】また、処理ステップ214において、1命
令でアクセス可能なデータコード領域の空領域がなくな
った場合、処理ステップ216へと進み、ソートデータ
の残りアドレスのデータコードを低速にしかアクセスで
きないデータコード領域へ移動し、再配置情報へ再配置
情報を出力し、図6に示すコード補正処理部121によ
るコード補正処理に進む。
【0044】図6に示すコード補正処理部121による
コード補正処理では、まず、処理ステップ300におい
て、一時目的コードから1命令コードを取り出す。
【0045】次に、処理ステップ301において、命令
コードを最後まで読み出したかの判定を行い、最後まで
読み出したならば、目的コード生成部113へと進む。
処理ステップ301において、まだ読み込むべき命令コ
ードが残っていれば、処理ステップ302へと進む。
【0046】処理ステップ302において、処理ステッ
プ300で読み出した命令コードがデータコードアクセ
ス命令でなければ、処理ステップ300へと戻り、次の
命令コードを読み出す。処理ステップ302において命
令コードがデータコードアクセス命令であれば、処理ス
テップ303へと進み、再配置情報内を検索し、データ
コードアクセス命令のアクセスアドレスと再配置情報内
の配置前アドレスとが一致するエントリを探す。
【0047】最後に、処理ステップ304において、処
理ステップ303で一致するエントリが見つかった場
合、処理ステップ305へと進み、データコードアクセ
ス命令のアクセスアドレスを処理ステップ303で一致
したエントリの配置後アドレスに置き換え、処理ステッ
プ300へと戻り、以上の処理を繰り返す。また、処理
ステップ304において、処理ステップ303で一致す
るエントリが見つからなかった場合、処理ステップ30
0へと戻り、以上の処理を繰り返す。
【0048】たとえば、本実施形態のコンパイル装置に
おいて、次に示すC言語における共用体のコード例のよ
うに、アクセスサイズが異なるが同じデータ領域をアク
セスする入力コードをコンパイルする場合、 データアクセス情報は、次に示すようになり、 同一アドレスのデータコードにおいて、小さいアクセス
サイズのデータコードのアクセス回数が、大きいアクセ
スサイズのデータコードのアクセス回数より多い場合が
ある。
【0049】この場合、データ再配置部115によるデ
ータ再配置処理において、アクセス頻度の高いデータコ
ードを優先して再配置を行うため、の2バイトのデー
タコードが再配置の対象となるが、のデータコード領
域はの4バイトのデータコードでもアクセスされてい
るため、4バイトのデータコードが分断されないよう
に、最も大きいアクセスサイズであるの4バイトのデ
ータコードを再配置の対象として選択する。つまり、同
じデータ領域をアクセスしているがアクセスサイズが異
なる場合、より大きなアクセスサイズでアクセスされて
いるデータコードを1つの単位としてデータコード領域
の再配置を行う。
【0050】本実施形態のコンパイル装置では、このデ
ータ再配置部115によるデータ再配置処理を行うた
め、コンパイル生成された目的コードがマシン上もしく
はシミュレータ上で実行された場合、アクセス頻度の高
いデータコード領域へのアクセスが高速になり、プログ
ラムの実行速度が向上する。
【0051】
【発明の効果】以上説明したように、本発明によるコン
パイル装置は、アクセス頻度の高いデータコードを1命
令でアクセス可能なデータコード領域へ再配置すること
により、プログラムの実行速度が向上するなどの効果が
ある。
【0052】特に、データコード領域のデータコードに
対してループ処理が行われる場合、著しい効果がある。
たとえば、あるデータコード領域内の値を0に初期化す
るため100回のループを必要とするプログラム例にお
いて、データコード領域が2命令でなく1命令でアクセ
ス可能な目的コードの場合、100命令分の実行時間だ
け、プログラムの実行速度が向上する。
【図面の簡単な説明】
【図1】本発明のコンパイル装置の実施形態を示すブロ
ック図である。
【図2】図1(A)に示すデータアクセス情報の例を示
す説明図である。
【図3】図1(B)のデータ再配置実行部120が出力
する再配置情報の例を示す説明図である。
【図4】図1のコンパイル装置を用いた処理例を示すフ
ローチャートである。
【図5】図1(B)に示すデータ再配置実行部120に
よる詳細処理例を示すフローチャートである。
【図6】図1(B)に示す命令コード補正部121によ
る詳細処理例を示すフローチャートである。
【図7】従来のコンパイル装置の例を示すブロック図で
ある。
【図8】図7の従来のコンパイル装置を用いた処理例を
示すフローチャートである。
【図9】マイクロプロセッサに対するデータコード領域
の例を示す説明図である。
【図10】マイクロプロセッサに対する命令コードの例
を示す説明図である。
【符号の説明】
102 コンパイル装置 110 フロントエンド 111 バックエンド 112 コードスケジューリング部 113 目的コード生成部 115 データ再配置部 120 データ再配置実行部 121 コード補正処理部 130 プロファイルデータ解析部 131 コードスケジューリング実行部 200〜615 ステップ 900〜902 データコード領域

Claims (9)

    【特許請求の範囲】
  1. 【請求項1】 入力コードの字句および構文の解析結果
    に基づき一時目的コードを生成し、マシン上もしくはシ
    ミュレータ上の前記一時目的コードの実行によるデータ
    コードのアクセス回数をアドレスおよびアクセスサイズ
    ごとに記録したデータアクセス情報に基づきアクセス頻
    度の高いデータコードを検出し1命令でアクセス可能な
    データコード領域に再配置し、目的コードを生成するコ
    ンパイル装置。
  2. 【請求項2】 前記データアクセス情報を参照して、ア
    ドレスごとのアクセス頻度の高い順にデータコードをソ
    ートし、同一アドレスで最も大きいアクセスサイズのデ
    ータコードを選択して、1命令でアクセス可能なデータ
    コード領域にアクセス頻度順に再配置し、再配置後のア
    ドレスを前記データアクセス情報にそれぞれ付加し再配
    置情報として出力するデータ再配置実行部と、前記一時
    目的コードを1命令コードずつ読み出し、データコード
    アクセス命令であり且つそのアクセスアドレスが前記再
    配置情報の再配置前のアドレスと一致する場合、一致し
    たデータコードアクセス命令のアクセスアドレスを前記
    配置後のアドレスに置き換え命令コードを補正する命令
    コード補正部とを備える、請求項1記載のコンパイル装
    置。
  3. 【請求項3】 マシン上もしくはシミュレータ上の前記
    一時目的コードの実行によるCPU動作を記録したプロ
    ファイルデータコードに基づき、命令コードの再スケジ
    ューリングを行う、請求項1記載のコンパイル装置。
  4. 【請求項4】 入力コードの字句および構文の解析結果
    に基づき一時目的コードを生成し、マシン上もしくはシ
    ミュレータ上の前記一時目的コードの実行によるデータ
    コードのアクセス回数をアドレスおよびアクセスサイズ
    ごとに記録したデータアクセス情報に基づきアクセス頻
    度の高いデータコードを検出し1命令でアクセス可能な
    データコード領域に再配置し、目的コードを生成するコ
    ンパイル方法。
  5. 【請求項5】 前記データアクセス情報を参照して、ア
    ドレスごとのアクセス頻度の高い順にデータコードをソ
    ートし、同一アドレスで最も大きいアクセスサイズのデ
    ータコードを選択して、1命令でアクセス可能なデータ
    コード領域にアクセス頻度順に再配置し、再配置後のア
    ドレスを前記データアクセス情報にそれぞれ付加し再配
    置情報として出力するデータ再配置実行ステップと、前
    記一時目的コードを1命令コードずつ読み出し、データ
    コードアクセス命令であり且つそのアクセスアドレスが
    前記再配置情報の再配置前のアドレスと一致する場合、
    一致したデータコードアクセス命令のアクセスアドレス
    を前記配置後のアドレスに置き換え命令コードを補正す
    る命令コード補正ステップとを含む、請求項4記載のコ
    ンパイル方法。
  6. 【請求項6】 マシン上もしくはシミュレータ上の前記
    一時目的コードの実行によるCPU動作を記録したプロ
    ファイルデータコードに基づき、命令コードの再スケジ
    ューリングを行う、請求項4記載のコンパイル方法。
  7. 【請求項7】 入力コードの字句および構文の解析結果
    に基づき一時目的コードを生成し、マシン上もしくはシ
    ミュレータ上の前記一時目的コードの実行によるデータ
    コードのアクセス回数をアドレスおよびアクセスサイズ
    ごとに記録したデータアクセス情報に基づきアクセス頻
    度の高いデータコードを検出し1命令でアクセス可能な
    データコード領域に再配置し、目的コードを生成する処
    理をコンピュータに実行させるコンパイル用プログラム
    を記録した記録媒体。
  8. 【請求項8】 前記データアクセス情報を参照して、ア
    ドレスごとのアクセス頻度の高い順にデータコードをソ
    ートし、同一アドレスで最も大きいアクセスサイズのデ
    ータコードを選択して、1命令でアクセス可能なデータ
    コード領域にアクセス頻度順に再配置し、再配置後のア
    ドレスを前記データアクセス情報にそれぞれ付加し再配
    置情報として出力するデータ再配置実行ステップと、前
    記一時目的コードを1命令コードずつ読み出し、データ
    コードアクセス命令であり且つそのアクセスアドレスが
    前記再配置情報の再配置前のアドレスと一致する場合、
    一致したデータコードアクセス命令のアクセスアドレス
    を前記配置後のアドレスに置き換え命令コードを補正す
    る命令コード補正ステップ理とを含む、請求項7記載
    の、コンパイル用プログラムを記録した記録媒体。
  9. 【請求項9】 マシン上もしくはシミュレータ上の前記
    一時目的コードの実行によるCPU動作を記録したプロ
    ファイルデータコードに基づき、命令コードの再スケジ
    ューリングを行う、請求項7記載の、コンパイル用プロ
    グラムを記録した記録媒体。
JP2000007537A 2000-01-17 2000-01-17 コンパイル装置、コンパイル方法、および、コンパイル用プログラムを記録した記録媒体 Withdrawn JP2001195263A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2000007537A JP2001195263A (ja) 2000-01-17 2000-01-17 コンパイル装置、コンパイル方法、および、コンパイル用プログラムを記録した記録媒体

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2000007537A JP2001195263A (ja) 2000-01-17 2000-01-17 コンパイル装置、コンパイル方法、および、コンパイル用プログラムを記録した記録媒体

Publications (1)

Publication Number Publication Date
JP2001195263A true JP2001195263A (ja) 2001-07-19

Family

ID=18535915

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000007537A Withdrawn JP2001195263A (ja) 2000-01-17 2000-01-17 コンパイル装置、コンパイル方法、および、コンパイル用プログラムを記録した記録媒体

Country Status (1)

Country Link
JP (1) JP2001195263A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPWO2008093399A1 (ja) * 2007-01-30 2010-05-20 富士通株式会社 演算処理装置、情報処理装置及び演算処理装置の制御方法

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPWO2008093399A1 (ja) * 2007-01-30 2010-05-20 富士通株式会社 演算処理装置、情報処理装置及び演算処理装置の制御方法
JP4491500B2 (ja) * 2007-01-30 2010-06-30 富士通株式会社 演算処理装置、情報処理装置及び演算処理装置の制御方法
US8671246B2 (en) 2007-01-30 2014-03-11 Fujitsu Limited Information processing system and information processing method

Similar Documents

Publication Publication Date Title
US5966539A (en) Link time optimization with translation to intermediate program and following optimization techniques including program analysis code motion live variable set generation order analysis, dead code elimination and load invariant analysis
US5530964A (en) Optimizing assembled code for execution using execution statistics collection, without inserting instructions in the code and reorganizing the code based on the statistics collected
EP1280056B1 (en) Generation of debugging information
JP3417984B2 (ja) キャッシュ競合削減コンパイル方法
JP3707727B2 (ja) プログラムの最適化方法及びこれを用いたコンパイラ
US6269438B1 (en) Method for identifying hard-to-predict branches to enhance processor performance
CN1302385C (zh) 编译装置
JP3933380B2 (ja) コンパイラ
JP4841861B2 (ja) 演算処理装置及びデータ転送処理の実行方法
EP1039382B1 (en) Memory access optimizing method
EP0373361A2 (en) Generating efficient code for a computer with dissimilar register spaces
US20070011664A1 (en) Device and method for generating an instruction set simulator
US8352686B2 (en) Method and system for data prefetching for loops based on linear induction expressions
JP2005216177A (ja) コンフィグラブル・プロセッサの設計装置、設計方法、ライブラリの最適化方法、プロセッサ、及びプロセッサを備えた半導体装置の製造方法
US8286145B2 (en) Program re-writing apparatus
US6567975B1 (en) Method and apparatus for inserting data prefetch operations using data flow analysis
US6574713B1 (en) Heuristic for identifying loads guaranteed to hit in processor cache
US7313787B2 (en) Compiler and method for optimizing object codes for hierarchical memories
JP4462676B2 (ja) プログラム変換装置、コンパイラ装置およびプログラム変換プログラムを記録したコンピュータ読み取り可能な記録媒体
JP2001195263A (ja) コンパイル装置、コンパイル方法、および、コンパイル用プログラムを記録した記録媒体
JP3758984B2 (ja) マイクロプロセッサ用目的コードの最適化装置、最適化方法及び最適化プログラムを記録した記録媒体
Marks Compilation to compact code
EP1387265A1 (en) Optimised code generation
JPH02176938A (ja) 機械語命令最適化方式
Nonaka et al. Design and Implementation of Superinstructions for JavaScript Virtual Machine Generation System for Embedded Systems eJSTK

Legal Events

Date Code Title Description
A300 Withdrawal of application because of no request for examination

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20070403