JP3758984B2 - マイクロプロセッサ用目的コードの最適化装置、最適化方法及び最適化プログラムを記録した記録媒体 - Google Patents

マイクロプロセッサ用目的コードの最適化装置、最適化方法及び最適化プログラムを記録した記録媒体 Download PDF

Info

Publication number
JP3758984B2
JP3758984B2 JP2001104924A JP2001104924A JP3758984B2 JP 3758984 B2 JP3758984 B2 JP 3758984B2 JP 2001104924 A JP2001104924 A JP 2001104924A JP 2001104924 A JP2001104924 A JP 2001104924A JP 3758984 B2 JP3758984 B2 JP 3758984B2
Authority
JP
Japan
Prior art keywords
code
data
instruction
access
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.)
Expired - Fee Related
Application number
JP2001104924A
Other languages
English (en)
Other versions
JP2002304302A (ja
Inventor
学 江崎
Original Assignee
Necマイクロシステム株式会社
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マイクロシステム株式会社 filed Critical Necマイクロシステム株式会社
Priority to JP2001104924A priority Critical patent/JP3758984B2/ja
Publication of JP2002304302A publication Critical patent/JP2002304302A/ja
Application granted granted Critical
Publication of JP3758984B2 publication Critical patent/JP3758984B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Description

【0001】
【発明の属する技術分野】
本発明はマイクロプロセッサ用目的コードの最適化装置、最適化方法及び最適化プログラムを記録した記録媒体に関し、特にマイクロプロセッサ用目的コードの最適化処理を行うコンパイラが生成した一次目的コードの命令コードを解析して1命令でアクセス可能な命令コードを生成するための二次目的コードを生成するマイクロプロセッサ用目的コードの最適化装置、最適化方法及び最適化プログラムを記録した記録媒体に関する。
【0002】
【従来の技術】
従来、この種のマイクロプロセッサ用目的コードの最適化処理は、データ処理装置によるコンパイル用プログラム又はコンパイラの読み取り実行により実現され、ソースプログラムのコード(コンパイラが生成した一次目的コード)を入力し、マイクロプロセッサに対応してプログラムの実行速度を高める目的コード(二次目的コード)を出力するために用いられている。
【0003】
ここで、コンパイラが生成した一次目的コードとは、C言語、FORTRAN,COBOLなどの高級プログラミング言語を、目的とするCPU上の機械語命令コード及びデータコードに翻訳したものを意味する。
【0004】
例えば、パイプライン方式のマイクロプロセッサにおいて、命令間のコンフリクトを回避させつつプログラムの実行速度を高めるために、互いに依存関係のない複数の命令に関しては、コンパイラによって、他の命令の結果を待っている遅延時間が短い命令を自動的に前に配置するようにした命令コードのスケジューリング方式が提案されている。
【0005】
また、現在、マイクロプロセッサは、CPUと主メモリとの間に高速、小容量のキャッシュメモリを配置し、主メモリに置かれたデータコードへのアクセスの高速化を図っているものが一般的となっている。しかし、必要なデータコードがキャッシュ上に存在しないキャッシュミスに起因する実行速度低下が依然として残っており、この実行速度低下を低減するために、コンパイラにより、命令実行時のキャッシュミス・ペナルティを小さくするための命令スケジューリングを行う方式が考案されている。
【0006】
特開平10−333916号公報記載の従来のマイクロプロセッサ用目的コードの最適化装置であるコンパイル装置をブロックで示す図13(A)を参照すると、この従来のマイクロプロセッサ用目的コードの最適化装置は、記録媒体に記録されたコンパイル用プログラムである入力コードF5をプロファイルデータF2を用いてコンパイルして目的コードF100を生成するコンパイル部2と、目的コードF100をシミュレーションしプロファイルデータF2を生成するマシン又はシミュレータであるシミュレータ100とを備える。
【0007】
入力コードF5は、例えば、C言語、JAVA言語、FORTRAN言語などの高級言語で記述したものである。
【0008】
コンパイル部2は、入力コードF5の実行を行うソフトウェア機能手段として、入力コードF5の供給を受けこの入力コードF5の字句解析及び構文解析を行うフロントエンド21と、後述するバックエンド22とを備える。
【0009】
バックエンド22は、目的コードF100のシミュレーション結果であるプロファイルデータF2を基にキャッシュミスペナルティをできるだけ小さくするために命令コードのスケジューリングを行うコードスケジューリング部221と、コードスケジューリング部221のコードスケジューリング結果に基づきシミュレータ100上で実行可能な目的コードF100を生成する目的コード生成部222とを備える。
【0010】
シミュレータ100の構成例をブロックで示す図13(B)を参照すると、このシミュレータ100は、コンパイル部2が生成した目的コードである一次目的コードF100の命令コードの解析を行う命令コード解析部11と、解析した命令コードの実行を行う命令シミュレーション部12と、プロファイルデータの生成を行いプロファイルデータF2に格納するプロファイルデータ生成部13とを備える。
【0011】
次に、図13(A),(B)を参照して、従来のマイクロプロセッサ用目的コードの最適化装置の動作について説明すると、まず、コンパイル部2のフロントエンド21は、入力コードF5の供給を受けこの入力コードF5の字句解析及び構文解析を行い、解析結果をバックエンド22に供給する。
【0012】
次に、バックエンド22のコードスケジューリング部221は、有効設定された場合に、プロファイルデータF2を基にキャッシュミスペナルティをできるだけ小さくするために命令コードのスケジューリングを行う。無効設定された場合は不動作となり、何も実行しない。
【0013】
有効設定の場合、まず、コードスケジューリング部221は、目的コードF100をシミュレータ100で実行して得たCPU動作の記録であるプロファイルデータF2を解析しキャッシュミスペナルティ発生部分を検出するとともにコードスケジューリング実行部224で利用するためのキャッシュ動作情報を生成する。次に、このキャッシュ動作情報に基づき検出したキャッシュミスペナルティを軽減するための命令コードの再スケジューリングを行う。
【0014】
ここで、キャッシュ動作情報とは、キャッシュミスしたデータを主記憶からキャッシュに読み込む動作が各動作クロックで行われている否かを表わす情報である。
【0015】
目的コード生成部222は、コードスケジューリング部221の命令コードの再スケジューリング結果を受け、シミュレータ100上で実行可能な目的コードを生成し、目的コードF100に出力する。
【0016】
シミュレータ100は、まず、命令コード解析部11において、コンパイル部2が生成した一次目的コードである目的コードF100の命令コード(以下一次命令コード)の解析を行う。次に、命令シミュレーション部12において、解析した一次命令コードの実行を行う。最後に、プロファイルデータ生成部13において、プロファイルデータの生成を行い、プロファイルデータF2へ出力する。
【0017】
このように従来技術では、シミュレータ100上で実行して得られるプロファイルデータF2を基に、実行速度を低下させるキャッシュミスペナルティを解析し、キャッシュミスペナルティをできるだけ小さくするために目的コードF100を再スケジューリングするコードスケジューリング処理を行い、目的コード生成部222により、最終的な目的コードF100を生成し、その実行速度を向上させていた。
【0018】
マイクロプロセッサは、一般的に、機械語命令のデータコードアクセス命令において、アクセスできるデータコードのディスプレースメント(オフセット)に制限があり、例えば、ディスプレースメントとして16ビットの値までしかとることができない。このため、従来のマイクロプロセッサ用目的コードの最適化装置においては、データコード領域の任意の位置にポインタを設定し、そのポインタをポインタ専用のレジスタに格納することにより、そのレジスタからのオフセット(ディスプレースメント)を用いてデータコード領域をアクセスする。そのポインタの近辺にサイズの小さいデータコードをできるだけ多く配置することにより、できるだけ多くのデータコードを1命令のデータコードアクセス命令でアクセスし、実行速度を向上させるという技術がある。
【0019】
しかし、依然として、アクセスできるデータコードのディスプレースメントの範囲外にあるデータコード(以下、ディスプレースメント範囲外データコード)においては、1命令でアクセスすることができず、複数命令でアクセスしなければならないため、ディスプレースメント範囲外データコードへのアクセス頻度が高いプログラムにおいては、実行速度が低下するという問題がある。
【0020】
次に、データコードアクセス命令がディスプレースメントとして16ビットの値までしかとることができない(以下、16ビットディスプレースメント)マイクロプロセッサに対するデータコード領域を説明図で示す図14(A)及び命令コードの例を示す図14(B),(C)を参照して、上記問題が生じる理由について説明する。
【0021】
図14(A)を参照すると、この図に示すポインタP1は、データコード領域を高速にアクセスするためのデータコード領域の任意の位置を示すポインタを示し、このポインタP1から16ビットディスプレースメントでアクセスできるデータコード領域901に「Sdata」が配置されている。このため、「Sdata」は、図14(B)に示すように、データコードアクセス命令ld.wにより1命令でアクセスすることができ、このデータコードアクセス命令ld.wは、図14(A)のポインタを示す[gp]からのディスプレースメント$Sdataに格納されているSdataの値を取り出し、汎用レジスタr20へ格納している。
【0022】
しかし、図14(A)中の「Data」,「Data1」は、ポインタP1から16ビットディスプレースメントでアクセスできないデータコード領域900,901にそれぞれ配置されており、図14(C)に示すように、データコードアクセス命令の16ビットディスプレースメント指定では表現できないため、2命令を必要とする。まず、命令movhiにより、Dataの上位16ビットを取り出し、汎用レジスタr1に格納し、次に、データコードアクセス命令ld.wにより、前記のDataの下位16ビットと前記の汎用レジスタr1で32ビットのディスプレースメントを表現し、Dataの値を取り出して汎用レジスタr20に格納している。このため、16ビットディスプレースメントでアクセスできないデータコード領域900,901に配置されているデータコードへのアクセス頻度が高いプログラムにおいては、実行速度が低下する。
【0023】
また、従来技術において、データコード領域のどこにどのデータコードを配置するかを指定することが可能な技術が存在するが、データコードのアクセス頻度を知る手段がないため、効率的にアクセス頻度の高いデータコードを16ビットディスプレースメントでアクセス可能なデータコード領域に配置することが困難であった。
【0024】
【発明が解決しようとする課題】
上述した従来のマイクロプロセッサ用目的コードの最適化装置、最適化方法及び最適化プログラムを記録した記録媒体は、コンパイル部が生成した一次目的コードの命令コード(以下一次命令コード)の解析を行い、次に、解析した一次命令コードの実行を行い、最後に、プロファイルデータの生成を行っており、シミュレータ上で実行して得られるプロファイルデータを基に、実行速度を低下させるキャッシュミスペナルティを解析し、キャッシュミスペナルティをできるだけ小さくするために目的コードを再スケジューリングするコードスケジューリング処理を行い、目的コード生成部により、最終的な目的コードを生成し、その実行速度を向上させていたが、アクセスできるデータコードのディスプレースメントの範囲外にあるデータコード(以下、ディスプレースメント範囲外データコード)においては、1命令でアクセスすることができず、複数命令でアクセスしなければならないため、ディスプレースメント範囲外データコードへのアクセス頻度が高いプログラムにおいては、実行速度が低下するという欠点があった。
【0025】
本発明の目的は、ディスプレースメント範囲外データコードであっても、目的コード中のデータコードを再配置し、プログラムの実行速度を向上させるマイクロプロセッサ用目的コードの最適化装置、最適化方法及び最適化プログラムを記録した記録媒体を提供することにある。
【0026】
【課題を解決するための手段】
請求項1記載の発明のマイクロプロセッサ用目的コードの最適化装置は、記録媒体に記録されたコンパイル用プログラムである入力コードをプロファイルデータを用いてコンパイルして一次目的コードを生成するコンパイル部と、前記一次目的コードをシミュレーションし前記プロファイルデータを生成するシミュレータとを備えるマイクロプロセッサ用目的コードの最適化装置において、
前記シミュレータが、前記コンパイル部が生成した前記一次目的コードの命令コードを解析してこの命令コード対応処理の実行である命令コード実行を行い、前記命令コード実行によるデータコードのアクセス回数をアドレス及びアクセス対象のデータコードのサイズ毎に記録したデータアクセス情報に基づきアクセス頻度の高いデータコードを検出し、1命令でアクセス可能なデータコード領域であるキャッシュ領域に再配置して二次目的コードを生成し、前記二次目的コードの命令コードを解析して前記命令コード実行を行うことにより、高速のシミュレーション実行を可能とすることを特徴とするものである。
【0027】
また、請求項2記載の発明は、請求項1記載のマイクロプロセッサ用目的コードの最適化装置において、前記シミュレータが、前記コンパイル部で生成した目的コードである一次目的コード又は前記シミュレータが生成した目的コードである二次目的コードのいずれか一方(以下目的コード)の命令コードの解析を行う命令コード解析部と、
解析した前記命令コードの実行を行う命令シミュレーション部と、
前記命令コードの実行の結果に基づき前記プロファイルデータを生成するプロファイルデータ生成部と、
前記一次目的コード中のデータアクセス命令の解析を行い、このデータアクセスアドレス(以下アドレス)とデータアクセスサイズ(以下サイズ)をデータアクセス情報に出力するデータアクセス情報生成部と、
前記データアクセス情報を参照してアドレス毎のアクセス頻度の降順にデータコードをソートし、同一アドレスでの最大サイズの前記データコードを選択データコードとして選択し、前記キャッシュ領域に前記アクセス頻度の降順に前記選択データコードを再配置し命令コードを補正するデータ再配置部と、
前記データ再配置部が再配置したデータ及び補正した命令コードを前記二次目的コードとして生成する二次目的コード生成部とを備えて構成されている。
【0028】
また、請求項3記載の発明は、請求項2記載のマイクロプロセッサ用目的コードの最適化装置において、前記データアクセス情報生成部が、前記一次目的コード中の前記データアクセス命令の解析を行い、前記データアクセスアドレスとサイズを検出するデータアクセス命令解析部と、
前記データアクセス命令解析部で検出した前記データアドレスと前記データアクセスサイズとを前記データアクセス情報に出力するデータアクセス情報出力部とを備えて構成されている。
【0029】
また、請求項4記載の発明は、請求項2記載のマイクロプロセッサ用目的コードの最適化装置において、前記データ再配置部が、前記データアクセス情報を参照しアドレス毎にアクセス頻度の降順にデータコードをソートして最大サイズのデータコードを選択し、前記キャッシュ領域にアクセス頻度の降順に再配置し、再配置後のアドレスを前記データアクセス情報にそれぞれ付加し再配置情報として出力するデータ再配置実行部と、
読み出した前記目的コードがデータコードアクセス命令でありかつそのアクセスアドレスが前記再配置情報の再配置前のアクセスアドレスと一致する場合に前記目的コードのアクセスアドレスを配置後のアクセスアドレスに置き換え命令コードを補正する命令コード補正部とを備えて構成されている。
【0030】
請求項5記載の発明のマイクロプロセッサ用目的コードの最適化方法は、記録媒体に記録されたコンパイル用プログラムである入力コードをプロファイルデータを用いてコンパイルして一次目的コードを生成し、前記一次目的コードをシミュレーションし前記プロファイルデータを生成するマイクロプロセッサ用目的コードの最適化方法において、
前記シミュレーションが、前記コンパイルにより生成した前記一次目的コードの命令コードを解析してこの命令コード対応処理の実行である命令コード実行を行い、前記命令コード実行によるデータコードのアクセス回数をアドレス及びアクセス対象のデータコードのサイズ毎に記録したデータアクセス情報に基づきアクセス頻度の高いデータコードを検出し、1命令でアクセス可能なデータコード領域であるキャッシュ領域に再配置して二次目的コードを生成し、前記二次目的コードの命令コードを解析して前記命令コード実行を行うことにより、高速のシミュレーション実行を可能とすることを特徴とするものである。
【0031】
請求項6記載の発明のマイクロプロセッサ用目的コードの最適化方法は、記録媒体に記録されたコンパイル用プログラムである入力コードをプロファイルデータを用いてコンパイルして一次目的コードを生成し、前記一次目的コードをシミュレーションし前記プロファイルデータを生成するマイクロプロセッサ用目的コードの最適化方法において、
前記一次目的コードの命令コードの解析を行う命令コード解析ステップと、
解析した前記一次命令コードの実行を行う命令シミュレーションステップと、前記一次命令コードの実行の結果に基づき前記プロファイルデータの生成を行うプロファイルデータ生成ステップと、
前記命令コード中のデータアクセス命令の解析を行い、データのアクセスアドレスとアクセスサイズを検出し、検出したデータの前記アクセスアドレスと前記アクセスサイズをデータアクセス情報に格納するデータアクセス情報生成ステップと、
前記データアクセス情報生成ステップで生成した前記データコードのアクセス回数を前記アクセスアドレス及び前記アクセスサイズ毎に記録した前記データアクセス情報に基づきアクセス頻度の降順に前記データコードを検出して1命令でアクセス可能なデータコード領域であるキャッシュ領域に前記アクセス頻度の降順に再配置し命令コードを補正するデータ再配置ステップと、
前記データ再配置ステップで補正した前記目的コードを二次目的コードとして生成する二次目的コード生成ステップとを有することを特徴とするものである。
【0032】
また、請求項7記載の発明は、請求項5記載のマイクロプロセッサ用目的コードの最適化方法において、前記命令コード解析ステップが、前記シミュレーションの入力となる前記目的コードが、前記コンパイルにより生成された前記一次目的コードであるか、前記シミュレーションにより生成された前記二次目的コードであるかの判定を行う一次/二次目的コード判定ステップと、
前記一次/二次目的コード判定ステップで前記一次目的コードであれば、この一次目的コードの命令コードの解析を行う一次目的コード解析ステップと、
前記一次/二次目的コード判定ステップで前記二次目的コードであれば、この二次目的コードの命令コードの解析を行う二次目的コード解析ステップとを有することを特徴とするものである。
【0033】
また、請求項8記載の発明は、請求項6記載のマイクロプロセッサ用目的コードの最適化方法において、前記データアクセス情報生成ステップが、前記命令コード中の前記データアクセス命令の解析を行い、このデータアクセス命令の前記データアクセスアドレスと前記アクセスサイズを検出するデータアクセス命令解析ステップと、
検出した前記データアクセスアドレスと前記アクセスサイズを前記データアクセス情報に出力し、前記データアクセス情報内のアクセス回数をインクリメントするデータアクセス情報出力ステップとを有することを特徴とするものである。
【0034】
また、請求項9記載の発明は、請求項6記載のマイクロプロセッサ用目的コードの最適化方法において、前記データ再配置ステップが、前記データアクセス情報を参照して、アドレス毎にアクセス頻度の降順にデータコードをソートして最大アクセスサイズのデータコードを選択データコードとして選択し、この選択データコードを前記キャッシュ領域にアクセス頻度の降順に再配置し、再配置後のアドレスを前記データアクセス情報にそれぞれ付加し再配置情報として出力するデータ再配置実行ステップと、
前記目的コードを1命令コードずつ読み出し、前記目的コードがデータコードアクセス命令でありかつそのアクセスアドレスが前記再配置情報の再配置前のアクセスアドレスと一致する場合、一致したデータコードアクセス命令のアクセスアドレスを配置後のアクセスアドレスに置き換えて命令コードを補正する命令コード補正ステップとを有することを特徴とするものである。
【0035】
また、請求項10記載の発明は、請求項8記載のマイクロプロセッサ用目的コードの最適化方法において、前記データアクセス命令解析ステップが、前記命令コード中の前記データアクセス命令がデータアクセス命令であるか否かの判定を行い前記データアクセス命令でなければ命令コード終了判定ステップに進むデータアクセス命令判定ステップと、
前記データアクセス命令判定ステップで前記データアクセス命令であれば前記データアクセス命令中のデータアクセスアドレスと前記アクセスサイズの取り出しを行うアドレスサイズ取り出しステップと、
前記アドレスサイズ取り出しステップで取り出した前記データアクセスアドレスと前記アクセスサイズに該当する前記データアクセス情報中のエントリを検索する該当エントリ検索ステップと、
前記データアクセス情報に該当エントリがある場合、該当エントリアクセス回数インクリメントステップに進む該当エントリ有り判定ステップと、
前記該当エントリのアクセス回数をインクリメントする該当エントリアクセス回数インクリメントステップと、
前記該当エントリ有り判定ステップで前記データアクセス情報に前記該当エントリがない場合新規に、前記アドレスサイズ取り出しステップで取り出した前記データアクセスアドレスと前記アクセスサイズのエントリを前記データアクセス情報へ追加する新規エントリ追加ステップと、
命令コードの終了であるか否かの判定を行い、終了でなければ命令コード解析ステップへと戻り、終了であればデータ再配置ステップへ進む前記命令コード終了判定ステップとを有することを特徴とするものである。
【0036】
また、請求項11記載の発明は、請求項9記載のマイクロプロセッサ用目的コードの最適化方法において、前記データ再配置実行ステップが、前記データアクセス情報に基づきアドレス毎のアクセス頻度の降順に前記データコードをソートしソートデータを生成するデータソートステップと、
前記ソートデータからアクセス頻度の降順にデータコードを取り出すデータ取り出しステップと、
取り出したアクセスアドレスと同一アドレスの前記データコードの中で最大アクセスサイズのデータコードを検索し選択データコードとして選択する最大サイズエントリ検索ステップと、
前記選択データコードを前記キャッシュ領域に移動するキャッシュ領域移動ステップと、
前記データアクセス情報に配置後アドレスを付加し、再配置情報として出力する再配置情報出力ステップと、
前記キャッシュ領域の空領域が無いかの判定を行い前記キャッシュ領域の空領域がまだ残っている場合後述のデータ終了判定ステップへ進み、前記キャッシュ領域の空領域がなくなった場合、後述の非キャッシュ領域移動ステップへ進む空きキャッシュ領域無し判定ステップと、
前記ソートデータの全アドレスの終了であれば、前記命令コード補正ステップへ進み、全アドレス終了でなければ、前記データ取り出しステップへ戻り、以上の処理を繰り返す前記データ終了判定ステップと、
前記ソートデータの残りのアクセスアドレスのデータコードを低速でのアクセス可能なデータコード領域である非キャッシュ領域へ移動し、前記再配置情報へ前記再配置情報を出力し、前記命令コード補正ステップに進む前記非キャッシュ領域移動ステップとを有することを特徴とするものである。
【0037】
また、請求項12記載の発明は、請求項9記載のマイクロプロセッサ用目的コードの最適化方法において、前記命令コード補正ステップが、前記一次目的コードから1命令コードを取り出す1命令コード取り出しステップと、
前記命令コードを最後まで読み出したかの判定を行い、最後まで読み出したならば、終了し、まだ読み込むべき命令コードが残っていれば、後述のアクセス命令判定ステップへ進む命令コード終了判定ステップと、
前記1命令コード取り出しステップで読み出した前記命令コードが前記データコードアクセス命令でなければ、前記1命令コード取り出しステップへ戻り、前記命令コードが前記データコードアクセス命令であれば、次の一致検索ステップへ進む前記アクセス命令判定ステップと、
前記再配置情報内を検索し、前記データコードアクセス命令のアクセスアドレスと前記再配置情報内の配置前アドレスとが一致するエントリである一致エントリを探す前記一致検索ステップと、
前記一致検索ステップで前記一致エントリが見つかった場合、次の置換ステップへ進み、前記1命令コード取り出しステップへ戻り、以上の処理を反復し、前記一致検索ステップで前記一致エントリが見つからなかった場合、前記1命令コード取り出しステップへ戻り、以上の処理を反復する一致判定ステップと、
データコードアクセス命令のアドレスを前記一致エントリの配置後アドレスに置き換える前記置換ステップとを有することを特徴とするものである。
【0038】
また、請求項13記載の発明は、請求項9記載のマイクロプロセッサ用目的コードの最適化方法において、前記データ再配置実行ステップが、前記データアクセス情報に基づきアドレス毎のアクセス頻度の降順に前記データコードをソートしソートデータを生成するデータソートステップと、
前記ソートデータからアクセス頻度の降順にデータコードを取り出すデータ取り出しステップと、
取り出したアクセスアドレスと同一アドレスの前記データコードの中で最大アクセスサイズのデータコードを検索し選択データコードとして選択する最大サイズエントリ検索ステップと、
前記キャッシュ領域の空領域が無いかの判定を行い前記キャッシュ領域の空領域がまだ残っている場合後述のキャッシュ領域移動ステップへ進み、前記キャッシュ領域の空領域がなくなった場合、後述の非キャッシュ領域移動ステップへ進む空きキャッシュ領域無し判定ステップと、
前記選択データコードを前記キャッシュ領域に移動するキャッシュ領域移動ステップと、
前記ソートデータの残りのアクセスアドレスのデータコードを低速でのアクセス可能なデータコード領域である非キャッシュ領域へ移動する前記非キャッシュ領域移動ステップと、
前記データアクセス情報に配置後アドレスを付加し、再配置情報として出力する再配置情報出力ステップと、
前記ソートデータの全アドレスの終了であれば、前記命令コード補正ステップへ進み、全アドレス終了でなければ、前記データ取り出しステップへ戻り、以上の処理を繰り返す前記データ終了判定ステップとを有することを特徴とするものである。
【0039】
また、請求項14記載の発明は、請求項9記載のマイクロプロセッサ用目的コードの最適化方法において、前記命令コード補正ステップが、前記再配置情報から1エントリを取り出す再配置情報取り出しステップと、
前記再配置情報の終わりまで検索したか否かの判定を行い、前記再配置情報の終わりであれば終了し、前記再配置情報の終わりでなければ次の第1の1命令コード取り出しステップへ進む再配置情報終了判定ステップと、
前記一次目的コードから1命令コードを取り出す前記第1の1命令コード取り出しステップと、
前記1命令コード取り出しステップで読み出した前記命令コードが前記データコードアクセス命令でなければ、前記1命令コード取り出しステップへ戻り、前記命令コードが前記データコードアクセス命令であれば、次の配置後アドレス置換ステップへ進むアクセス命令判定ステップと、
前記再配置情報内を検索し、前記データコードアクセス命令のアクセスアドレスと前記再配置情報内の配置前アドレスとが一致する一致エントリを探し、前記一致エントリの配置後アドレスへの置換処理を行う前記配置後アドレス置換ステップと、
前記一次目的コードから1命令コードを取り出す第2の1命令コード取り出しステップと、
前記命令の終了か否かの判定を行い、終了でなければ前記アクセス命令判定ステップへ戻り、以下の処理を反復し、終了であれば前記再配置情報取り出しステップへ戻り以下の処理を反復する命令コード終了判定ステップとを有することを特徴とするものである。
【0040】
請求項15記載の発明のマイクロプロセッサ用目的コードの最適化プログラムを記録した記録媒体は、コンパイル用プログラムである入力コードをプロファイルデータを用いてコンパイルして一次目的コードを生成し、前記一次目的コードをシミュレーションし前記プロファイルデータを生成するマイクロプロセッサ用目的コードの最適化プログラムを記録した記録媒体において、
前記シミュレーションが、前記コンパイルにより生成した前記一次目的コードの命令コードを解析してこの命令コード対応処理の実行である命令コード実行を行い、前記命令コード実行によるデータコードのアクセス回数をアドレス及びアクセス対象のデータコードのサイズ毎に記録したデータアクセス情報に基づきアクセス頻度の高いデータコードを検出し、1命令でアクセス可能なデータコード領域であるキャッシュ領域に再配置して二次目的コードを生成し、前記二次目的コードの命令コードを解析して前記命令コード実行を行うことにより、高速のシミュレーション実行を可能とすることを特徴とするものである。
【0041】
請求項16記載の発明のマイクロプロセッサ用目的コードの最適化プログラムを記録した記録媒体は、コンパイル用プログラムである入力コードをプロファイルデータを用いてコンパイルして一次目的コードを生成し、前記一次目的コードをシミュレーションし前記プロファイルデータを生成するマイクロプロセッサ用目的コードの最適化プログラムを記録した記録媒体において、
前記一次目的コードの命令コードの解析を行う命令コード解析ステップと、
解析した前記一次命令コードの実行を行う命令シミュレーションステップと、前記一次命令コードの実行の結果に基づき前記プロファイルデータの生成を行うプロファイルデータ生成ステップと、
前記命令コード中のデータアクセス命令の解析を行い、データのアクセスアドレスとアクセスサイズを検出し、検出したデータの前記アクセスアドレスと前記アクセスサイズをデータアクセス情報に格納するデータアクセス情報生成ステップと、
前記データアクセス情報生成ステップで生成した前記データコードのアクセス回数を前記アクセスアドレス及び前記アクセスサイズ毎に記録した前記データアクセス情報に基づきアクセス頻度の降順に前記データコードを検出して1命令でアクセス可能なデータコード領域であるキャッシュ領域に前記アクセス頻度の降順に再配置し命令コードを補正するデータ再配置ステップと、
前記データ再配置ステップで補正した前記目的コードを二次目的コードとして生成する二次目的コード生成ステップとを有することを特徴とするものである。
【0042】
【発明の実施の形態】
次に、本発明の実施の形態について図面を参照して詳細に説明する。
【0043】
本実施の形態のマイクロプロセッサ用目的コードの最適化装置及び最適化方法は、記録媒体に記録されたコンパイル用プログラムである入力コードをプロファイルデータを用いてコンパイルして一次目的コードを生成するコンパイル部と、上記一次目的コードをシミュレーションし上記プロファイルデータを生成するシミュレータとを備えるマイクロプロセッサ用目的コードの最適化装置において、上記シミュレータが、上記コンパイル部が生成した上記一次目的コードの命令コードを解析してこの命令コード対応処理の実行である命令コード実行を行い、上記命令コード実行によるデータコードのアクセス回数をアドレス及びアクセス対象のデータコードのサイズ毎に記録したデータアクセス情報に基づきアクセス頻度の高いデータコードを検出し、1命令でアクセス可能なデータコード領域であるキャッシュ領域に再配置して二次目的コードを生成し、この二次目的コードの命令コードを解析して上記命令コード実行を行うことにより、高速のシミュレーション実行を可能とすることを特徴とするものである。
【0044】
ここで、コンパイラが生成した一次目的コードとは、C言語、FORTRAN,COBOLなどの高級プログラミング言語を、目的とするCPU上の機械語命令コード及びデータコードに翻訳したものを意味する。
【0045】
また、1命令でアクセス可能なデータコード領域、すなわち、キャッシュ領域とは、一般的なキャッシュメモリ(以下キャッシュ)だけではなく、例えば、従来技術の図4で説明したポインタP1の16ビットディスプレースメント範囲の領域901のようなデータコード記憶領域を意味する。
【0046】
次に、本発明の実施の形態を図13と共通の構成要素には共通の参照文字/数字を付して同様にブロックで示す図2(A)を参照すると、この図に示す本実施の形態のマイクロプロセッサ用目的コードの最適化装置は、記録媒体に記録されたコンパイル用プログラムである入力コードF5をプロファイルデータF2を用いてコンパイルして一次目的コードF1を生成するコンパイル部2と、一次目的コードF1をシミュレーションしプロファイルデータF2を生成するとともに二次目的コードF4を生成するマシン又はシミュレータであるシミュレータ1とを備える。
【0047】
シミュレータ1は、一次目的コードF1から読み出した一次命令コードを解析してこの一次命令コードの命令コード実行をシミュレーションしてプロファイルデータF1を生成し、命令コード実行に伴うデータコードのアクセス回数をアドレス及びアクセスサイズ毎に記録したデータアクセス情報F3を生成し、このデータアクセス情報F3に基づきアクセス頻度の高いデータコードを検出し、1命令でアクセス可能なデータコード領域に再配置し、二次目的コードF4を生成する。
【0048】
入力コードF5は、例えば、C言語、JAVA言語、FORTRAN言語などの高級言語で記述したものである。
【0049】
コンパイル部2は、入力コードF5の実行を行うソフトウェア機能手段として、入力コードF5の供給を受けこの入力コードF5の字句解析及び構文解析を行うフロントエンド21と、後述するバックエンド22とを備える。
【0050】
バックエンド22は、一次目的コードF1/二次目的コードF4のシミュレーション結果であるプロファイルデータF2を基にキャッシュミスペナルティをできるだけ小さくするために命令コードのスケジューリングを行うコードスケジューリング部221と、コードスケジューリング部221のコードスケジューリング結果に基づきシミュレータ1上で実行可能な一次目的コードF1を生成する目的コード生成部222とを備える。
【0051】
コードスケジューリング部221の構成例をブロックで示す図2(B)を参照すると、このコードスケジューリング部221は、一次目的コードF1のシミュレーション結果であるプロファイルデータF2を解析しキャッシュミスペナルティ発生部分を検出するとともにコードスケジューリング実行部224で利用するためのキャッシュ動作情報を出力するプロファイルデータ解析部223と、上記キャッシュ動作情報に基づき検出したキャッシュミスペナルティ軽減のための命令コードの再スケジューリングを行うコードスケジューリング実行部224とを備える。
【0052】
ここで、このキャッシュ動作情報とは、キャッシュミスしたデータを主記憶からキャッシュに読み込む動作が各動作クロックで行われている否かを表わす情報である。
【0053】
本実施の形態を特徴付けるシミュレータ1の構成を図13(B)と共通の構成要素には共通の参照文字/数字を付して同様にブロックで示す図1(A)を参照すると、従来と共通のコンパイル部2で生成した目的コードである一次目的コードF1又はシミュレータ1が生成した二次目的コードF4(以下、一次又は二次目的コードの両方を指す場合を目的コードFXと呼ぶ)の命令コードの解析を行う命令コード解析部11と、解析した命令コードの実行を行う命令シミュレーション部12と、プロファイルデータの生成を行いプロファイルデータファイルF2(以下特記ない限りファイルを省略し、例えばプロファイルデータF2等と呼ぶ)に格納するプロファイルデータ生成部13とに加えて、コンパイル部2で生成した一次目的コードF1中のデータアクセス命令の解析を行い、このデータアクセスアドレス(以下アドレス)とデータアクセスサイズ(以下サイズ:データアクセスアドレスとデータアクセスサイズをデータアドレスとサイズと省略)をデータアクセス情報F3に出力するデータアクセス情報生成部14と、データアクセス情報F3を参照してアドレス毎のアクセス頻度の高い順(降順)にデータコードをソートし、同一アドレスでの最大サイズのデータコードを選択データコードとして選択し、1命令でアクセス可能なデータコード領域(以下キャッシュ領域)にアクセス頻度の降順に選択データコードを再配置し命令コードを補正するデータ再配置部15と、データ再配置部15が再配置したデータ及び補正した命令コードを二次目的コードF4として生成する二次目的コード生成部16とを備える。
【0054】
データアクセス情報生成部14の構成をブロックで示す図1(B)を参照すると、このデータアクセス情報生成部14は、コンパイル部2で生成した一次目的コード中のデータアクセス命令の解析を行い、アドレス及びサイズを検出するデータアクセス命令解析部141と、データアクセス命令解析部で検出したデータアドレスとサイズをデータアクセス情報F3に出力するデータアクセス情報出力部142とを備える。
【0055】
データ再配置部15の構成をブロックで示す図1(C)を参照すると、このデータ再配置部15は、データアクセス情報F3を参照しアドレス毎にアクセス頻度の降順にデータコードをソートして最大サイズのデータコードを選択し、キャッシュ領域にアクセス頻度順に再配置し、再配置後のアドレスをデータアクセス情報F3にそれぞれ付加し再配置情報として出力するデータ再配置実行部151と、読み出した目的コードFXがデータコードアクセス命令でありかつその(目的コードFXの)アドレスが再配置情報の再配置前のアドレスと一致する場合に目的コードのアクセスを配置後のアドレスに置き換え命令コードを補正する命令コード補正部152とを備える。
【0056】
次に、図1、図2、及び本実施の形態のシミュレータ1の処理をフローチャートで示す図3を参照して本実施の形態の動作について説明すると、まず、コンパイル部2のフロントエンド21は、入力コードF5の供給を受けこの入力コードF5の字句解析及び構文解析を行い、解析結果をバックエンド22に供給する。
【0057】
次に、バックエンド22のコードスケジューリング部221は、有効設定された場合に、プロファイルデータF2を基にキャッシュミスペナルティをできるだけ小さくするために命令コードのスケジューリングを行う。無効設定された場合は不動作となり、何も実行しない。
【0058】
有効設定の場合、まず、コードスケジューリング部221のプロファイルデータ解析部223は、目的コードFXをシミュレータ1で実行して得たCPU動作の記録であるプロファイルデータF2を解析しキャッシュミスペナルティ発生部分を検出するとともにコードスケジューリング実行部224で利用するためのキャッシュ動作情報を出力し、コードスケジューリング実行部224に供給する。次に、コードスケジューリング実行部224は、供給を受けたキャッシュ動作情報に基づきプロファイルデータ解析部223で検出したキャッシュミスペナルティを軽減するための命令コードの再スケジューリングを行う。
【0059】
目的コード生成部222は、コードスケジューリング実行部224の命令コードの再スケジューリング結果を受け、シミュレータ1上で実行可能な目的コードを生成し、一次目的コードF1に出力する。
【0060】
シミュレータ1では、まず、命令コード解析部11が、コンパイル部2が生成した一次目的コードF1の命令コード(以下一次命令コード)の解析を行う(命令コード解析ステップS1)。次に、命令シミュレーション部12が、解析した一次命令コードの実行を行う(命令シミュレーションステップS2)。次に、プロファイルデータ生成部13が、一次命令コードの実行結果に基づきプロファイルデータの生成を行い、プロファイルデータF2へ出力する(プロファイルデータ生成ステップS3)。ここまでは、従来と同様の処理である。
【0061】
次に、データアクセス情報生成部14は、命令コード中のデータアクセス命令の解析を行い、データのアドレスとサイズを検出し、検出したデータのアドレスとサイズをデータアクセス情報F3に格納する(データアクセス情報生成ステップS4)。
【0062】
まず、データアクセス命令解析部141は、有効設定された場合、命令コード中のデータアクセス命令の解析を行い、このデータアクセス命令のデータアドレスとサイズを検出する(データアクセス命令解析ステップS41)。次に、データアクセス情報出力部142は、有効設定された場合、データアクセス命令解析部141で検出したデータアドレスとサイズをデータアクセス情報F3に出力し、データアクセス情報F3内のアクセス回数をインクリメントする(データアクセス情報出力ステップS42)。
【0063】
データアクセス情報生成部14で生成されるデータアクセス情報F3の内容例を説明図で示す図7(A)を参照すると、このデータアクセス情報は、「アドレス」、「アクセスサイズ」、「アクセス回数」とから構成されている。ここで、「アドレス」は、アクセス時のデータコードの格納アドレスを示し、「アクセスサイズ」は、アクセス時のデータコードのサイズを示し、「アクセス回数」は、データコードのアクセス回数を示す。
【0064】
データ再配置部15は、有効設定された場合、データアクセス情報生成部14が生成したデータコードのアクセス回数をアドレス及びアクセスサイズ毎に記録したデータアクセス情報F3に基づき、アクセス頻度の高い順、すなわち降順にデータコードを検出して1命令でアクセス可能なデータコード領域、すなわち、キャッシュ領域にアクセス頻度の降順に再配置し命令コードを補正する(データ再配置ステップS5)。
【0065】
このデータ再配置ステップS5は、まず、データ再配置実行部151で、データアクセス情報F3を参照して、アドレス毎にアクセス頻度の降順にデータコードをソートして最大アクセスサイズのデータコードを選択データコードとして選択し、この選択データコードをキャッシュ領域にアクセス頻度の降順に再配置し、再配置後のアドレスをデータアクセス情報F3にそれぞれ付加し再配置情報として出力する(データ再配置実行ステップS51)。図7(B)は再配置情報の記述例を示す。
【0066】
次に、命令コード補正部152で、目的コードFXを1命令コードずつ読み出し、この目的コードFXがデータコードアクセス命令でありかつそのアドレスが再配置情報の再配置前のアドレスと一致する場合、一致したデータコードアクセス命令のアドレスを配置後のアドレスに置き換えて命令コードを補正する(命令コード補正ステップS52)。
【0067】
二次目的コード生成部16は、命令コード補正部15により補正された目的コードを二次目的コードF4として生成する(二次目的コード生成ステップS6)。
【0068】
データアクセス命令解析部141のデータアクセス命令解析ステップS41とデータアクセス情報出力部142のデータアクセス情報出力ステップS42の各々の処理をそれぞれフローチャートで示す図4を併せて参照してデータアクセス情報生成ステップS4の詳細処理について説明すると、データアクセス命令解析ステップS41は、まず、データアクセス命令判定ステップS411で、命令シミュレーション部12が実行した命令コードがデータアクセス命令であるか否かの判定を行う。データアクセス命令であれば次のアドレスサイズ取り出しステップS412へと進む。データアクセス命令でなければ命令コード終了判定ステップS425へと進む。
【0069】
次に、アドレスサイズ取り出しステップS412において、データアクセス命令中のデータアドレスとサイズの取り出しを行う。
【0070】
次に、該当エントリ検索ステップS421において、アドレスサイズ取り出しステップS412において取り出したデータアドレスとサイズに該当する装置内部の直接アクセス記憶データであるデータアクセス情報F3中のエントリを検索する。
【0071】
次に、該当エントリ有り判定ステップS422で直接アクセス記憶データであるデータアクセス情報F3に該当エントリがある場合、該当エントリアクセス回数インクリメントステップS423へと進む。該当エントリアクセス回数インクリメントステップS423で、該当エントリのアクセス回数をインクリメントする。該当エントリ有り判定ステップS422でデータアクセス情報に該当エントリがない場合新規エントリ追加ステップS424へと進み、新規に、アドレスサイズ取り出しステップS412で取り出したデータアドレスとサイズのエントリをデータアクセス情報F3へ追加する。
【0072】
最後に、命令コード終了判定ステップS425で、命令コードの終了であるか否かの判定を行い、終了でなければ命令コード解析ステップS1へと戻る。終了であればデータ再配置ステップS5へと進む。
【0073】
次に、データ再配置実行部151のデータ再配置実行ステップS51と命令コード補正部152の命令コード補正ステップS52の各々の処理をそれぞれフローチャートで示す図5,図6を併せて参照してデータ再配置ステップS5の詳細処理について説明すると、まず、データ再配置実行ステップS51は、データソートステップS511で、データアクセス情報F3を基に、アドレス毎のアクセス頻度の高い順(降順)にデータコードをソートし、ソートデータF6に出力する。
【0074】
次に、データ取り出しステップS512で、ソートデータF6からアクセス頻度の降順にデータコードを取り出し、最大サイズエントリ検索ステップS513で、取り出したアドレスと同一アドレスのデータコードの中で最大アクセスサイズのデータコードを検索選択し、このデータコードをキャッシュ領域移動ステップS514で1命令でアクセス可能なデータ領域であるキャッシュ領域に移動し、再配置情報出力ステップS515でデータアクセス情報に配置後アドレスを付加し、再配置情報F7として出力する。図7(B)は、この再配置情報F7の例を示す説明図である。
【0075】
次に、空きキャッシュ領域無し判定ステップS516で、キャッシュ領域の空領域がまだ残っている場合、データ終了判定ステップS518へ進み、ソートデータの全アドレスの終了であれば、命令コード補正ステップS52へ進み、全アドレス終了でなければ、データ取り出しステップS512へ戻り、以上の処理を繰り返す。
【0076】
また、空きキャッシュ領域無し判定ステップS516で、キャッシュ領域の空領域がなくなった場合、残りデータ移動ステップS517へ進み、ソートデータの残りのアドレスのデータコードを低速にしかアクセスできないデータコード領域である非キャッシュ領域へ移動し、再配置情報F7へ再配置情報を出力し、命令コード補正ステップS52に進む。
【0077】
命令コード補正ステップS52では、まず、1命令コード取り出しステップS521で、一次目的コードF1から1命令コードを取り出す。
【0078】
次に、命令コード終了判定ステップS522において、命令コードを最後まで読み出したかの判定を行い、最後まで読み出したならば、この命令コード補正ステップS52を終了し、二次目的コード生成ステップS6へ進む。
【0079】
命令コード終了判定ステップS522で、まだ読み込むべき命令コードが残っていれば、アクセス命令判定ステップS523へ進む。
アクセス命令判定ステップS523において、1命令コード取り出しステップS521で読み出した命令コードがデータコードアクセス命令でなければ、1命令コード取り出しステップS521へ戻り、次の命令コードを読み出す。命令コードがデータコードアクセス命令であれば、一致検索ステップS524へと進み、再配置情報F7内を検索し、データコードアクセス命令のアドレスと再配置情報F7内の配置前アドレスとが一致するエントリを探す。
【0080】
最後に、一致判定ステップS525にて、一致検索ステップS524で一致するエントリである一致エントリが見つかった場合、置換ステップS526へ進み、データコードアクセス命令のアドレスを上記一致エントリの配置後アドレスに置き換え、1命令コード取り出しステップS521へ戻り、以上の処理を反復する。また、一致検索ステップS524で一致エントリが見つからなかった場合、1命令コード取り出しステップS521へ戻り、以上の処理を反復する。
【0081】
例えば、本実施形態のマイクロプロセッサ用目的コードの最適化装置において、図12(A)に示すようなC言語における共用体のコード例のように、アクセスサイズが異なるが同一データ領域をアクセスする入力コードをコンパイルする場合、データアクセス情報F3は、図12(B)に示すようになり、同一アドレスのデータコードにおいて、小さいサイズのデータコードのアクセス回数が、大きいサイズのデータコードのアクセス回数より多い場合がある。
【0082】
この場合、データ再配置ステップS5において、アクセス頻度の高いデータコードを優先して再配置を行うため、番号2の2バイトのデータコードが再配置の対象となるが、この番号2のデータコード領域は番号1の4バイトのデータコードでもアクセスされているため、4バイトのデータコードが分断されないように、最大のアクセスサイズである番号1の4バイトのデータコードを再配置の対象として選択する。つまり、同一データ領域をアクセスしているがアクセスサイズが異なる場合、より大きなアクセスサイズでアクセスされているデータコードを1つの単位としてデータコード領域の再配置を行う。
【0083】
以上説明したように、本実施の形態を特徴付けるシミュレータ1は、データアクセス情報生成部14がデータアクセス情報F3を生成し、データ再配置部15が、高アクセス頻度のデータをキャッシュ領域に再配置処理するため、二次目的コード生成部6が生成した目的コードを再度シミュレータ1上で実行する場合、高アクセス頻度のデータコード領域へのアクセスが高速化し、プログラムの実行速度が向上する。
【0084】
特に、データコード領域内のデータコードに対してループ処理を行う場合、著しい効果がある。例えば、あるデータコード領域内の値を0に初期化するため100回のループを必要とするプログラム例において、データコード領域が2命令でなく1命令でアクセス可能な目的コードの場合、100命令分の実行時間だけ、プログラムの実行速度が向上する。
【0085】
次に、本発明の第2の実施の形態を特徴付けるデータアクセス情報生成ステップS4Aの処理を図4と共通の構成要素には共通の参照文字/数字を付して同様にフローチャートで示す図8を参照すると、この図に示す本実施の形態のデータアクセス情報生成ステップS4Aの前述の第1の実施の形態のデータアクセス情報生成ステップS4との相違点は、内部の直接アクセス記憶データであるデータアクセス情報F3の代わりに外部記憶装置である外部データアクセス情報F3Aを有し、該当エントリ検索ステップS421の代わりに外部データアクセス情報F3Aを検索する該当エントリ検索ステップS421Aを有することである。
【0086】
図8を参照して本実施の形態のデータアクセス情報生成ステップS4Aの処理について第1の実施の形態との相違点を重点的に説明すると、データアクセス命令解析ステップS411及びアドレスサイズ取り出しステップS412は第1の実施の形態と同一の処理を行う。すなわち、ステップS411でデータアクセス命令であるか否かの判定を行い、ステップS412でデータアクセス命令中のアドレスとサイズの取り出しを行う。
【0087】
次に、該当エントリ検索ステップS421Aで、取り出したデータアドレスとサイズに該当する外部記憶データである外部データアクセス情報F3A中のエントリを検索する。
【0088】
以下、該当エントリ有り判定ステップS422、該当エントリアクセス回数インクリメントステップS423、新規エントリ追加ステップS424及び命令コード終了判定ステップS425は第1の実施の形態と同一の処理を行う。
【0089】
次に、本発明の第3の実施の形態を特徴付けるデータ再配置実行ステップS51Aの処理を図5と共通の構成要素には共通の参照文字/数字を付して同様にフローチャートで示す図9を参照すると、この図に示す本実施の形態のデータ再配置実行ステップS51Aの前述の第1の実施の形態のデータ再配置実行ステップS51との相違点は、最大サイズエントリ検索ステップS513の次に、空きキャッシュ領域無し判定ステップS516と、空きキャッシュ領域無し判定ステップS516で空きキャッシュ領域がある場合はキャッシュ領域にデータを移動するキャッシュ領域移動ステップS514と、空きキャッシュ領域がない場合キャッシュ領域以外の領域である非キャッシュ領域にデータを移動する非キャッシュ領域移動ステップS517とを行い、ャッシュ領域移動ステップS514と非キャッシュ領域移動ステップS517の処理後再配置情報出力ステップS515と、データ終了判定ステップS517を行うことである。
【0090】
図9を参照して本実施の形態のデータ再配置実行ステップS51Aの処理について第1の実施の形態との相違点を重点的に説明すると、まず、データソートステップS511で、データアクセス情報F3に基づきアドレス毎のアクセス頻度の降順にデータコードをソートし、ソートデータF6に出力する。次に、データ取り出しステップS512で、ソートデータF6からアクセス頻度の降順にデータコードを取り出し、最大サイズエントリ検索ステップS513で、取り出したアドレスと同一アドレスのデータコード中で最大アクセスサイズのデータコードを検索選択する。
【0091】
次に、空きキャッシュ領域無し判定ステップS516で、空きキャッシュ領域がまだ残っている場合、キャッシュ領域移動ステップS514へと進み、このキャッシュ領域移動ステップS514で、最大サイズエントリ検索ステップS513で選択したデータコードをキャッシュ領域へ移動する。空きキャッシュ領域が無い場合、非キャッシュ領域移動ステップS517へと進み、非キャッシュ領域移動ステップS517において選択したデータコードを非キャッシュ領域に移動する。
【0092】
以下第1の実施の形態と同様に、再配置情報出力ステップS515で、データアクセス情報に配置後アドレスを付加し、再配置情報として出力し、データ終了判定ステップS518で終了判定を行う。
【0093】
次に、本発明の第4の実施の形態を特徴付ける命令コード補正ステップS52Aの処理を図6と共通の構成要素には共通の参照文字/数字を付して同様にフローチャートで示す図10を参照して第1の実施の形態との相違点を重点的に説明すると、この図に示す本実施の形態の命令コード補正ステップS52Aは、まず、再配置情報取り出しステップS527で再配置情報F7から1エントリを取り出す。
【0094】
次に、再配置情報終了判定ステップS528で、再配置情報F7の終わりまで検索したか否かの判定を行い、再配置情報F7の終わりであれば終了し、二次目的コード生成ステップS6へ進む。再配置情報F7の終わりでなければ1命令コード取り出しステップS521へ進む。
【0095】
次に、1命令コード取り出しステップS521において、一次目的コードF1の先頭から1命令コードを取り出す。
【0096】
次に、アクセス命令判定ステップS523で、1命令コード取り出しステップS521で読み出した命令コードがデータコードアクセス命令でなければ、1命令コード取り出しステップS521へと戻り、次の命令コードを読み出す。命令コードがデータコードアクセス命令であれば、配置後アドレス置換ステップS530へと進み、再配置情報内を検索し、データコードアクセス命令のアクセスアドレスと再配置情報内の配置前アドレスとが一致する一致エントリを探し、この一致エントリの配置後アドレスへの置換処理を行う。
【0097】
次に、1命令コード取り出しステップS531において、一次目的コードから次の1命令を取り出す。
【0098】
最後に、命令コード終了判定ステップS522において、命令の終了か否かの判定を行い、終了でなければ、アクセス命令判定ステップS523へ戻り、以下の処理を繰り返す。命令の終了であれば、再配置情報取り出しステップS527へ戻り以下の処理を繰り返す。
【0099】
次に、本発明の第5の実施の形態を特徴付ける命令コード解析ステップS1の処理をフローチャートで示す図11を参照すると、この命令コード解析ステップS1は、シミュレータ1の入力(シミュレーションの入力)となる目的コードが、コンパイル部2によるコンパイルの結果から生成された一次目的コードF1であるか、シミュレータ1により生成された二次目的コードF4であるかの判定を行う(一次/二次目的コード判定ステップS11)。
【0100】
次に、コンパイル部2から生成された一次目的コードF1であれば、一次目的コード解析ステップS12へ進み、この一次目的コードF1の命令コードの解析を行う。
【0101】
また、シミュレータ1から生成された二次目的コードF4であれば、一次目的コード解析ステップS13へ進み、この二次目的コードF4の命令コードの解析を行う。
【0102】
【発明の効果】
以上説明したように、本発明のマイクロプロセッサ用目的コードの最適化装置、最適化方法及び最適化プログラムを記録した記録媒体は、本発明を特徴付けるシミュレータが、コンパイル部が生成した一次目的コードの命令コードを解析してこの命令コード対応処理の実行である命令コード実行を行い、この命令コード実行によるデータコードのアクセス回数をアドレス及びアクセス対象のデータコードのサイズ毎に記録したデータアクセス情報に基づきアクセス頻度の高いデータコードを検出し、1命令でアクセス可能なデータコード領域であるキャッシュ領域に再配置して二次目的コードを生成し、この二次目的コードの命令コードを解析して上記命令コード実行を行うことにより、高アクセス頻度のデータコード領域へのアクセスを高速化でき、プログラムの実行速度が向上するという効果がある。
【0103】
特に、データコード領域内のデータコードに対してループ処理を行う場合、著しい効果がある。例えば、あるデータコード領域内の値を0に初期化するため100回のループを必要とするプログラム例において、データコード領域が2命令でなく1命令でアクセス可能な目的コードの場合、100命令分の実行時間だけ、プログラムの実行速度が向上する。
【図面の簡単な説明】
【図1】本発明の第1の実施の形態のマイクロプロセッサ用目的コードの最適化装置を特徴付けるシミュレーション装置を示すブロック図である。
【図2】本実施の形態のマイクロプロセッサ用目的コードの最適化装置を示すブロック図である。
【図3】本実施の形態のシミュレーション装置の処理動作であるシミュレーション方法の一例を示すフローチャートである。
【図4】図3のデータアクセス命令解析処理の詳細処理を示すフローチャートである。
【図5】図3のデータ再配置部15によるデータ再配置処理の詳細処理を示すフローチャートである。
【図6】データ再配置部によるデータ再配置処理の詳細処理を示すフローチャートである。
【図7】再配置情報の一例を示す説明図である。
【図8】本発明の第2の実施の形態を特徴付けるデータアクセス情報生成部の詳細処理を示すフローチャートである。
【図9】本発明の第3の実施の形態を特徴付けるデータアクセス情報解析部の詳細処理を示すフローチャートである。
【図10】本発明の第4の実施の形態を特徴付けるコード補正処理部の詳細処理を示すフローチャートである。
【図11】本発明の第5の実施の形態を特徴付ける命令コード解析部の詳細処理を示すフローチャートである。
【図12】C言語における共用体のコードのデータアクセス情報の一例を示す説明図である。
【図13】従来のマイクロプロセッサ用目的コードの最適化装置の一例を示すブロック図である。
【図14】データコードアクセス命令のディスプレースメントとして16ビットの値までしかとることができないマイクロプロセッサに対するデータコード領域,命令コードの例を示す説明図である。
【符号の説明】
1,100 シミュレータ
2 コンパイル部
11 命令コード解析部
12 命令シミュレーション部
13 プロファイルデータ生成部
14 データアクセス情報生成部
15 データ再配置部
16 二次目的コード生成部
21 フロントエンド
22 バックエンド
141 データアクセス命令解析部
142 データアクセス情報出力部
151 データ再配置実行部
152 命令コード補正部
221 コードスケジューリング部
222 目的コード生成部
223 プロファイルデータ解析部
224 コードスケジューリング実行部
F1 一次目的コード
F2 プロファイルデータ
F3,F3A データアクセス情報
F4 二次目的コード
F5 入力コード
F6 ソートデータ
F7 配置情報
F100 目的コード

Claims (16)

  1. コンパイラが生成した一次目的コードをシミュレーションするシミュレータを備えるマイクロプロセッサ用目的コードの最適化装置において、
    前記シミュレータが、前記一次目的コードの命令コードを解析して前記命令コードを実行し、前記命令コード実行によるデータコードのアクセス回数、アドレス及びアクセス対象のデータコードのサイズ毎に記録したデータアクセス情報を生成し、前記データアクセス情報に基づいて選択したデータコードを、1命令でアクセス可能なデータコード領域であるキャッシュ領域に再配置して二次目的コードを生成することを特徴とするマイクロプロセッサ用目的コードの最適化装置。
  2. 前記シミュレータが、前記一次目的コード中のデータアクセス命令の解析を行い、前記データアクセス命令によりアクセスされるデータアクセスアドレス(以下アドレス)とデータアクセスサイズ(以下サイズ)、及びデータアクセス回数をデータアクセス情報として出力するデータアクセス情報生成部と、
    前記データアクセス情報を参照してアドレス毎のアクセス頻度の降順にデータコードをソートし、同一アドレスでの最大サイズの前記データコードを選択データコードとして選択し、前記キャッシュ領域に前記アクセス頻度の降順に前記選択データコードを再配置し命令コードを補正するデータ再配置部と、
    前記データ再配置部が再配置したデータ及び補正した命令コードを前記二次目的コードとして生成する二次目的コード生成部とを備えることを特徴とする請求項1記載のマイクロプロセッサ用目的コードの最適化装置。
  3. 前記データアクセス情報生成部が、前記一次目的コード中の前記データアクセス命令の解析を行い、前記データアクセスアドレスとサイズを検出するデータアクセス命令解析部と、
    前記データアクセス命令解析部で検出した前記データアドレスと前記データアクセスサイズとを前記データアクセス情報に出力するデータアクセス情報出力部とを備えることを特徴とする請求項2記載のマイクロプロセッサ用目的コードの最適化装置。
  4. 前記データ再配置部が、前記データアクセス情報を参照しアドレス毎にアクセス頻度の降順にデータコードをソートして最大サイズのデータコードを選択し、前記キャッシュ領域にアクセス頻度の降順に再配置し、再配置後のアドレスを前記データアクセス情報にそれぞれ付加し再配置情報として出力するデータ再配置実行部と、
    読み出した前記目的コードがデータコードアクセス命令でありかつそのアクセスアドレスが前記再配置情報の再配置前のアクセスアドレスと一致する場合に前記目的コードのアクセスアドレスを配置後のアクセスアドレスに置き換え命令コードを補正する命令コード補正部とを備えることを特徴とする請求項2記載のマイクロプロセッサ用目的コードの最適化装置。
  5. コンパイラが生成した一次目的コードをシミュレーションするシミュレータを備えるマイクロプロセッサ用目的コードの最適化装置による目的コードの最適化方法であって、
    前記シミュレータが、前記一次目的コードの命令コードを解析して前記命令コードを実行し、前記命令コード実行によるデータコードのアクセス回数、アドレス及びアクセス対象のデータコードのサイズ毎に記録したデータアクセス情報を生成し、前記データアクセス情報に基づいて選択したデータコードを、1命令でアクセス可能なデータコード領域であるキャッシュ領域に再配置して二次目的コードを生成することを特徴とするマイクロプロセッサ用目的コードの最適化方法。
  6. コンパイラが生成した一次目的コードをシミュレーションするシミュレータを備えるマイクロプロセッサ用目的コードの最適化装置による目的コードの最適化方法であって、
    前記シミュレータが実行する処理ステップが、前記一次目的コードの命令コードの解析を行う命令コード解析ステップと、
    解析した前記命令コードを実行する命令シミュレーションステップと、
    前記命令コード中のデータアクセス命令の解析を行い、データのアクセスアドレスとアクセスサイズ、及びアクセス回数を検出してデータアクセス情報を生成するデータアクセス情報生成ステップと
    前記データアクセス情報生成ステップで生成した前記データコードのアクセス回数を前記アクセスアドレス及び前記アクセスサイズ毎に記録した前記データアクセス情報に基づいて選択したデータコードを、1命令でアクセス可能なデータコード領域であるキャッシュ領域に再配置し命令コードを補正するデータ再配置ステップと、
    前記データ再配置ステップで再配置したデータ及び補正した命令コードを二次目的コードとして生成する二次目的コード生成ステップとを有することを特徴とするマイクロプロセッサ用目的コードの最適化方法。
  7. 前記命令コード解析ステップが、前記シミュレーションの入力となる前記目的コードが、前記コンパイルにより生成された前記一次目的コードであるか、前記シミュレーションにより生成された前記二次目的コードであるかの判定を行う一次/二次目的コード判定ステップと、前記一次/二次目的コード判定ステップで前記一次目的コードであれば、この一次目的コードの命令コードの解析を行う一次目的コード解析ステップと、
    前記一次/二次目的コード判定ステップで前記二次目的コードであれば、この二次目的コードの命令コードの解析を行う二次目的コード解析ステップとを有することを特徴とする請求項6記載のマイクロプロセッサ用目的コードの最適化方法。
  8. 前記データアクセス情報生成ステップが、前記命令コード中の前記データアクセス命令の解析を行い、このデータアクセス命令の前記データアクセスアドレスと前記アクセスサイズを検出するデータアクセス命令解析ステップと、
    検出した前記データアクセスアドレスと前記アクセスサイズを前記データアクセス情報に出力し、前記データアクセス情報内のアクセス回数をインクリメントするデータアクセス情報出力ステップとを有することを特徴とする請求項6記載のマイクロプロセッサ用目的コードの最適化方法。
  9. 前記データ再配置ステップが、前記データアクセス情報を参照して、アドレス毎にアクセス頻度の降順にデータコードをソートして最大アクセスサイズのデータコードを選択データコードとして選択し、この選択データコードを前記キャッシュ領域にアクセス頻度の降順に再配置し、再配置後のアドレスを前記データアクセス情報にそれぞれ付加し再配置情報として出力するデータ再配置実行ステップと、
    前記目的コードを1命令コードずつ読み出し、前記目的コードがデータコードアクセス命令でありかつそのアクセスアドレスが前記再配置情報の再配置前のアクセスアドレスと一致する場合、一致したデータコードアクセス命令のアクセスアドレスを配置後のアクセスアドレスに置き換えて命令コードを補正する命令コード補正ステップとを有することを特徴とする請求項6記載のマイクロプロセッサ用目的コードの最適化方法。
  10. 前記データアクセス命令解析ステップが、前記命令コード中の前記データアクセス命令がデータアクセス命令であるか否かの判定を行い前記データアクセス命令でなければ命令コード終了判定ステップに進むデータアクセス命令判定ステップと、
    前記データアクセス命令判定ステップで前記データアクセス命令であれば前記データアクセス命令中のデータアクセスアドレスと前記アクセスサイズの取り出しを行うアドレスサイズ取り出しステップと、
    前記アドレスサイズ取り出しステップで取り出した前記データアクセスアドレスと前記アクセスサイズに該当する前記データアクセス情報中のエントリを検索する該当エントリ検索ステップと、
    前記データアクセス情報に該当エントリがある場合、該当エントリアクセス回数インクリメントステップに進む該当エントリ有り判定ステップと、
    前記該当エントリのアクセス回数をインクリメントする該当エントリアクセス回数インクリメントステップと、
    前記該当エントリ有り判定ステップで前記データアクセス情報に前記該当エントリがない場合新規に、前記アドレスサイズ取り出しステップで取り出した前記データアクセスアドレスと前記アクセスサイズのエントリを前記データアクセス情報へ追加する新規エントリ追加ステップと、
    命令コードの終了であるか否かの判定を行い、終了でなければ命令コード解析ステップへと戻り、終了であればデータ再配置ステップへ進む前記命令コード終了判定ステップとを有することを特徴とする請求項8記載のマイクロプロセッサ用目的コードの最適化方法。
  11. 前記データ再配置実行ステップが、前記データアクセス情報に基づきアドレス毎のアクセス頻度の降順に前記データコードをソートしソートデータを生成するデータソートステップと、
    前記ソートデータからアクセス頻度の降順にデータコードを取り出すデータ取り出しステップと、取り出したアクセスアドレスと同一アドレスの前記データコードの中で最大アクセスサイズのデータコードを検索し選択データコードとして選択する最大サイズエントリ検索ステップと、
    前記選択データコードを前記キャッシュ領域に移動するキャッシュ領域移動ステップと、前記データアクセス情報に配置後アドレスを付加し、再配置情報として出力する再配置情報出力ステップと、
    前記キャッシュ領域の空領域が無いかの判定を行い前記キャッシュ領域の空領域がまだ残っている場合後述のデータ終了判定ステップへ進み、前記キャッシュ領域の空領域がなくなった場合、後述の非キャッシュ領域移動ステップへ進む空きキャッシュ領域無し判定ステップと、
    前記ソートデータの全アドレスの終了であれば、前記命令コード補正ステップへ進み、全アドレス終了でなければ、前記データ取り出しステップへ戻り、以上の処理を繰り返す前記データ終了判定ステップと、
    前記ソートデータの残りのアクセスアドレスのデータコードを低速でのアクセス可能なデータコード領域である非キャッシュ領域へ移動し、前記再配置情報へ前記再配置情報を出力し、前記命令コード補正ステップに進む前記非キャッシュ領域移動ステップとを有することを特徴とする請求項9記載のマイクロプロセッサ用目的コードの最適化方法。
  12. 前記命令コード補正ステップが、前記一次目的コードから1命令コードを取り出す1命令コード取り出しステップと、
    前記命令コードを最後まで読み出したかの判定を行い、最後まで読み出したならば、終了し、まだ読み込むべき命令コードが残っていれば、後述のアクセス命令判定ステップへ進む命令コード終了判定ステップと、
    前記1命令コード取り出しステップで読み出した前記命令コードが前記データコードアクセス命令でなければ、前記1命令コード取り出しステップへ戻り、前記命令コードが前記データコードアクセス命令であれば、次の一致検索ステップへ進む前記アクセス命令判定ステップと、
    前記再配置情報内を検索し、前記データコードアクセス命令のアクセスアドレスと前記再配置情報内の配置前アドレスとが一致するエントリである一致エントリを探す前記一致検索ステップと、
    前記一致検索ステップで前記一致エントリが見つかった場合、次の置換ステップへ進み、前記1命令コード取り出しステップへ戻り、以上の処理を反復し、前記一致検索ステップで前記一致エントリが見つからなかった場合、前記1命令コード取り出しステップへ戻り、以上の処理を反復する一致判定ステップと、
    データコードアクセス命令のアドレスを前記一致エントリの配置後アドレスに置き換える前記置換ステップとを有することを特徴とする請求項9記載のマイクロプロセッサ用目的コードの最適化方法。
  13. 前記データ再配置実行ステップが、前記データアクセス情報に基づきアドレス毎のアクセス頻度の降順に前記データコードをソートしソートデータを生成するデータソートステップと、
    前記ソートデータからアクセス頻度の降順にデータコードを取り出すデータ取り出しステップと、
    取り出したアクセスアドレスと同一アドレスの前記データコードの中で最大アクセスサイズのデータコードを検索し選択データコードとして選択する最大サイズエントリ検索ステップと、
    前記キャッシュ領域の空領域が無いかの判定を行い前記キャッシュ領域の空領域がまだ残っている場合後述のキャッシュ領域移動ステップへ進み、前記キャッシュ領域の空領域がなくなった場合、後述の非キャッシュ領域移動ステップへ進む空きキャッシュ領域無し判定ステップと、
    前記選択データコードを前記キャッシュ領域に移動するキャッシュ領域移動ステップと、前記ソートデータの残りのアクセスアドレスのデータコードを低速でのアクセス可能なデータコード領域である非キャッシュ領域へ移動する前記非キャッシュ領域移動ステップと、
    前記データアクセス情報に配置後アドレスを付加し、再配置情報として出力する再配置情報出力ステップと、
    前記ソートデータの全アドレスの終了であれば、前記命令コード補正ステップへ進み、全アドレス終了でなければ、前記データ取り出しステップへ戻り、以上の処理を繰り返す前記データ終了判定ステップとを有することを特徴とする請求項9記載のマイクロプロセッサ用目的コードの最適化方法。
  14. 前記命令コード補正ステップが、前記再配置情報から1エントリを取り出す再配置情報取り出しステップと、
    前記再配置情報の終わりまで検索したか否かの判定を行い、前記再配置情報の終わりであれば終了し、前記再配置情報の終わりでなければ次の第1の1命令コード取り出しステップへ進む再配置情報終了判定ステップと、
    前記一次目的コードから1命令コードを取り出す前記第1の1命令コード取り出しステップと、
    前記1命令コード取り出しステップで読み出した前記命令コードが前記データコードアクセス命令でなければ、前記1命令コード取り出しステップへ戻り、前記命令コードが前記データコードアクセス命令であれば、次の配置後アドレス置換ステップへ進むアクセス命令判定ステップと、
    前記再配置情報内を検索し、前記データコードアクセス命令のアクセスアドレスと前記再配置情報内の配置前アドレスとが一致する一致エントリを探し、前記一致エントリの配置後アドレスへの置換処理を行う前記配置後アドレス置換ステップと、
    前記一次目的コードから1命令コードを取り出す第2の1命令コード取り出しステップと、
    前記命令の終了か否かの判定を行い、終了でなければ前記アクセス命令判定ステップへ戻り、以下の処理を反復し、終了であれば前記再配置情報取り出しステップへ戻り以下の処理を反復する命令コード終了判定ステップとを有することを特徴とする請求項9記載のマイクロプロセッサ用目的コードの最適化方法。
  15. コンパイラが生成した一次目的コードをシミュレーションするシミュレータを備えるマイクロプロセッサ用目的コードの最適化装置によって目的コードを最適化するためのプログラムを記録した記録媒体であって、
    前記シミュレータを、前記一次目的コードの命令コードを解析して前記命令コードを実行し、前記命令コード実行によるデータコードのアクセス回数をアドレス及びアクセス対象のデータコードのサイズ毎に記録したデータアクセス情報を生成し、前記データアクセス情報に基づきデータコードを選択し、1命令でアクセス可能なデータコード領域であるキャッシュ領域に再配置して二次目的コードを生成する手段として機能させるためのマイクロプロセッサ用目的コードの最適化プログラムを記憶した記憶媒体。
  16. コンパイラが生成した一次目的コードをシミュレーションするシミュレータを備えるマイクロプロセッサ用目的コードの最適化装置による目的コード最適化するためのプログラムを記録した記録媒体であって、
    前記シミュレータに、前記一次目的コードの命令コードの解析を行う命令コード解析ステップと、
    解析した前記命令コードを実行する命令シミュレーションステップと、
    前記命令コード中のデータアクセス命令の解析を行い、データのアクセスアドレスとアクセスサイズ、及びアクセス回数を検出してデータアクセス情報を生成するデータアクセス情報生成ステップと、
    前記データアクセス情報生成ステップで生成した前記データコードのアクセス回数を前記アクセスアドレス及び前記アクセスサイズ毎に記録した前記データアクセス情報に基づき前記データコードを選択し、1命令でアクセス可能なデータコード領域であるキャッシュ領域に再配置し命令コードを補正するデータ再配置ステップと、
    前記データ再配置ステップで補正した前記目的コードを二次目的コードとして生成する二次目的コード生成ステップとを実行させるためのマイクロプロセッサ用目的コードの最適化プログラムを記憶した記憶媒体。
JP2001104924A 2001-04-03 2001-04-03 マイクロプロセッサ用目的コードの最適化装置、最適化方法及び最適化プログラムを記録した記録媒体 Expired - Fee Related JP3758984B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2001104924A JP3758984B2 (ja) 2001-04-03 2001-04-03 マイクロプロセッサ用目的コードの最適化装置、最適化方法及び最適化プログラムを記録した記録媒体

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2001104924A JP3758984B2 (ja) 2001-04-03 2001-04-03 マイクロプロセッサ用目的コードの最適化装置、最適化方法及び最適化プログラムを記録した記録媒体

Publications (2)

Publication Number Publication Date
JP2002304302A JP2002304302A (ja) 2002-10-18
JP3758984B2 true JP3758984B2 (ja) 2006-03-22

Family

ID=18957710

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001104924A Expired - Fee Related JP3758984B2 (ja) 2001-04-03 2001-04-03 マイクロプロセッサ用目的コードの最適化装置、最適化方法及び最適化プログラムを記録した記録媒体

Country Status (1)

Country Link
JP (1) JP3758984B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100594249B1 (ko) 2004-02-13 2006-06-30 삼성전자주식회사 데이터 저장 시스템에서의 적응적 데이터 액세스 제어방법 및 이를 이용한 디스크 드라이브
JP5719278B2 (ja) 2011-11-11 2015-05-13 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation 情報処理装置、プロファイル対象決定プログラム及び方法

Also Published As

Publication number Publication date
JP2002304302A (ja) 2002-10-18

Similar Documents

Publication Publication Date Title
US7571432B2 (en) Compiler apparatus for optimizing high-level language programs using directives
JP3933380B2 (ja) コンパイラ
US7200843B2 (en) Retrieval of symbol attributes
US20070011664A1 (en) Device and method for generating an instruction set simulator
US8886887B2 (en) Uniform external and internal interfaces for delinquent memory operations to facilitate cache optimization
EP1280056A1 (en) Generation of debugging information
US7243195B2 (en) Software managed cache optimization system and method for multi-processing systems
EP1039382B1 (en) Memory access optimizing method
JP2015507793A (ja) データベース管理システムにおけるマイクロ特化の方法
US8352686B2 (en) Method and system for data prefetching for loops based on linear induction expressions
JP2005182790A (ja) 自己記述型ソフトウェアイメージ更新コンポーネント
US8276130B2 (en) Method and compiler of compiling a program
US20130139137A1 (en) Systems and Methods for Customizing Optimization/Transformation/ Processing Strategies
JP4957017B2 (ja) 性能チューニング方法及び装置、プログラム及び記憶媒体
JP2000035893A (ja) デ―タ処理システムの配列の静的初期化方法、デ―タ処理方法、並びにデ―タ処理システム及びその制御手順をコンピュ―タに実行させるプログラムを記憶したコンピュ―タ読み取り可能な記憶媒体
JP2012038231A (ja) バイナリコードを最適化するコンパイル方法、及びそのコンパイラシステム、並びにコンピュータ・プログラム
US6829760B1 (en) Runtime symbol table for computer programs
CN111159062A (zh) 一种缓存数据的调度方法、装置、cpu芯片及服务器
US6715140B1 (en) Program trace method and apparatus, and storage medium
US7228528B2 (en) Building inter-block streams from a dynamic execution trace for a program
JP3758984B2 (ja) マイクロプロセッサ用目的コードの最適化装置、最適化方法及び最適化プログラムを記録した記録媒体
US7100155B1 (en) Software set-value profiling and code reuse
Mantripragada et al. A new framework for integrated global local scheduling
US8402445B2 (en) Program translation method and notifying instruction inserting method
JP2001195263A (ja) コンパイル装置、コンパイル方法、および、コンパイル用プログラムを記録した記録媒体

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20050801

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20050809

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20051007

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: 20051206

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20051227

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees