JP5082716B2 - プログラム変換装置、プログラム変換方法およびプログラム変換プログラム - Google Patents

プログラム変換装置、プログラム変換方法およびプログラム変換プログラム Download PDF

Info

Publication number
JP5082716B2
JP5082716B2 JP2007244312A JP2007244312A JP5082716B2 JP 5082716 B2 JP5082716 B2 JP 5082716B2 JP 2007244312 A JP2007244312 A JP 2007244312A JP 2007244312 A JP2007244312 A JP 2007244312A JP 5082716 B2 JP5082716 B2 JP 5082716B2
Authority
JP
Japan
Prior art keywords
branch
program
penalty
conversion
instruction
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
JP2007244312A
Other languages
English (en)
Other versions
JP2009075874A (ja
Inventor
茂 木村
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.)
Fujitsu Semiconductor Ltd
Original Assignee
Fujitsu Semiconductor 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 Fujitsu Semiconductor Ltd filed Critical Fujitsu Semiconductor Ltd
Priority to JP2007244312A priority Critical patent/JP5082716B2/ja
Priority to US12/219,864 priority patent/US8352928B2/en
Publication of JP2009075874A publication Critical patent/JP2009075874A/ja
Application granted granted Critical
Publication of JP5082716B2 publication Critical patent/JP5082716B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)
  • Devices For Executing Special Programs (AREA)
  • Advance Control (AREA)

Description

この発明は、静的分岐予測付きの条件付き分岐命令を含むバイナリプログラムの成立予測ビットを書き換えるプログラム変換装置、プログラム変換方法およびプログラム変換プログラムに関する。
近時、パイプライン処理を行う計算機には、パイプライン処理の流れ作業の処理順を乱さないようにするために、条件付き分岐命令(Conditional Branch)の成立または不成立を予測する分岐予測機能が実装されている。この機能を有する計算機は、成立が予測された分岐命令を実行するとき、分岐条件が成立したと仮定して後続の命令群をプリフェッチする。予測がはずれた場合には、プリフェッチしていた命令群を破棄して、分岐条件が成立しなかった場合の命令群をプリフェッチし直すため、余分な時間、すなわち分岐ペナルティが発生する。
分岐予測機能の一つに、ソフトウェアから明示的に分岐方向を指定する静的分岐予測機能がある。この静的分岐予測機能に関する提案として、バイナリプログラムを、分岐予測手段を備えた計算機で実行されるバイナリプログラムに変換するバイナリプログラム変換装置が公知である。
図20は、従来のバイナリプログラム変換装置の構成を示す図である。図20に示すように、このバイナリプログラム変換装置は、バイナリプログラム変換ツール4とトレーサ2からなる。トレーサ2は、複数の命令ブロックからなる変換前バイナリプログラム1を予め実行し、その際に収集した実行情報に基づいてトレース情報3を生成する。トレース情報3は、変換前バイナリプログラム1の実行時に採取された動作履歴(トレース情報)をバイナリプログラム単位や命令ブロック単位に集計した結果である。
また、命令ブロックは、分岐命令やジャンプ命令やコール命令等の制御転送命令ごとに区切られたバイナリプログラムの部分や、その先頭が分岐命令の分岐先となるラベルとなるようにプログラムの領域を区切ることで定義されるブロックである。バイナリプログラム変換ツール4は、そのトレース情報3を受けて、変換前のバイナリプログラム1から変換後のバイナリプログラム5を生成する。
その際、バイナリプログラム変換ツール4は、計算機が上位方向(または下位方向)の番地への分岐命令に対して分岐の実行確率を低く予測する特性を有する場合に、分岐の発生頻度の低い分岐命令については上位方向(または下位方向)の番地への分岐命令となり、分岐の発生頻度の高い分岐命令については、下位方向(または上位方向)の番地への分岐命令となるように、複数の命令ブロックの配置を変更する。また、バイナリプログラム変換ツール4は、分岐の発生頻度の高い分岐命令については、その分岐前の命令ブロックに対応する部分と分岐後の命令ブロックに対応する部分とが連続するように、複数の命令ブロックの配置を変更する(例えば、特許文献1参照。)。
特開2001−273138号公報(段落[0011]〜[0020]、[0038])
しかしながら、前記特許文献1に開示された従来の技術では、次のような問題点がある。第1に、命令列が他の命令列に置き換えられたり、命令ブロックが移動させられるため、命令コード長が増減し、コードサイズが拡大することがある。そのため、容量サイズの制限が厳しい組み込みシステムには不適当である。第2に、組み込みシステムの場合、トレース情報は、シミュレータにより取得される。通常、そのシミュレータで実行される実行形式プログラムと、組み込みシステムが実際に搭載される装置(以下、実機とする)で実行される実行形式プログラムが異なるため、シミュレータにより取得したトレース情報をそのまま用いて、実機用の実行形式プログラムを加工することができない。
第3に、同一の分岐命令の実行経路が複数ある場合について考慮されていないため、分岐予測に対応したプログラムを作成または加工する際に、いずれの実行経路から得られるトレース情報を用いればよいのか、ということが不明である。第4に、分岐命令において分岐するか否かの判断基準が、トレース情報を取得する際のプログラム実行時に分岐が成立した回数にのみ基づいており、分岐ペナルティを反映した判断基準となっていない。そのため、分岐予測の的中率は良くても、分岐ペナルティが十分に削減されない場合がある。
この発明は、上述した従来技術による問題点を解消するため、組み込みシステムで実行されるバイナリプログラムの条件付き分岐命令の成立予測ビットを書き換えるのに適したプログラム変換装置、プログラム変換方法およびプログラム変換プログラムを提供することを目的とする。また、複数の実行経路で実行され得る分岐命令の分岐予測が複数の実行経路を考慮して平均的な確率で行われるように、バイナリプログラムの条件付き分岐命令の成立予測ビットを書き換えることができるプログラム変換装置、プログラム変換方法およびプログラム変換プログラムを提供することを目的とする。さらに、分岐ペナルティが削減されるように、バイナリプログラムの条件付き分岐命令の成立予測ビットを書き換えることができるプログラム変換装置、プログラム変換方法およびプログラム変換プログラムを提供することを目的とする。
上述した課題を解決し、目的を達成するため、本発明にかかるプログラム変換装置、プログラム変換方法およびプログラム変換プログラムは、以下の特徴を有する。分岐トレース情報取得手段、バイナリプログラム変換手段および実行形式プログラム生成手段を備える。分岐トレース情報取得手段により、変換前オブジェクトプログラムを用いて生成された第1の実行形式プログラムを実行して、条件付き分岐命令の分岐成立状況に関する分岐トレース情報を取得する。バイナリプログラム変換手段により、分岐トレース情報と、分岐予測が外れたときの分岐ペナルティに基づいて、変換前オブジェクトプログラムの対応する条件付き分岐命令の成立予測ビットを書き換えた変換後オブジェクトプログラムを生成する。実行形式プログラム生成手段により、変換後オブジェクトプログラムを用いて第2の実行形式プログラムを生成する。
条件付き分岐命令の実行経路が複数ある場合には、分岐トレースマージ手段により、その複数の実行経路のそれぞれから得られる分岐トレース情報を結合して、バイナリプログラム変換手段で用いられる分岐トレース情報とする。分岐トレース情報では、第1の実行形式プログラムにおける条件付き分岐命令の物理アドレスが得られる。従って、バイナリプログラム変換手段は、この物理アドレスと、第1の実行形式プログラムにおける変換前オブジェクトプログラムのオフセットアドレスの差分から、変換前オブジェクトプログラムにおける条件付き分岐命令の相対アドレスを求め、この相対アドレスで特定される命令を、変換前オブジェクトプログラムにおける成立予測ビットの書き換え対象とする。
前記第2の実行形式プログラムが、例えば、組み込みシステムの実機に搭載されるプログラムである場合には、前記第1の実行形式プログラムは、シミュレータで実行されるプログラムとなる。つまり、第1の実行形式プログラムは、変換前オブジェクトプログラムとシミュレータ用オブジェクトプログラムをリンクして生成されるシミュレータ用実行形式プログラムである。そして、このシミュレータ用実行形式プログラムをシミュレータで実行することにより、分岐トレース情報が得られる。この分岐トレース情報に基づいて、変換前オブジェクトプログラムの成立予測ビットを書き換えることによって、変換後オブジェクトプログラムが得られる。第2の実行形式プログラムは、実機用実行形式プログラムであり、変換後オブジェクトプログラムと実機用オブジェクトプログラムをリンクして生成される。
この発明によれば、オブジェクトプログラムにおける条件付き分岐命令の成立予測ビットを書き換えるだけなので、コードサイズを拡大させずに済む。また、実機でのプログラムの実行形式がシミュレータでの実行形式と異なる場合でも、シミュレータから得られる分岐トレース情報に基づいて、条件付き分岐命令の成立予測ビットを書き換えた実機用実行形式プログラムが得られる。従って、容量サイズの制限が厳しい組み込みシステムにも適用できる。また、条件付き分岐命令の実行経路が複数ある場合でも、その複数の実行経路での条件付き分岐命令の分岐成立状況が反映される。また、条件付き分岐命令の分岐成立状況だけでなく、分岐ペナルティも反映される。
本発明にかかるプログラム変換装置、プログラム変換方法およびプログラム変換プログラムによれば、組み込みシステムで実行されるバイナリプログラムの条件付き分岐命令の成立予測ビットを書き換えることができる。また、複数の実行経路で実行され得る分岐命令の分岐予測が複数の実行経路を考慮して平均的な確率で行われるように、あるいは、分岐ペナルティが削減されるように、バイナリプログラムの条件付き分岐命令の成立予測ビットを書き換えることができるという効果を奏する。
以下に添付図面を参照して、この発明にかかるプログラム変換装置、プログラム変換方法およびプログラム変換プログラムの好適な実施の形態を詳細に説明する。ここでは、主として、条件付き分岐命令の分岐成立状況に関する分岐トレース情報をシミュレータで取得する場合について説明する。
(プログラム変換装置のハードウェア構成)
まず、この発明の実施の形態にかかるプログラム変換装置のハードウェア構成について説明する。図1は、この発明の実施の形態にかかるプログラム変換装置のハードウェア構成を示すブロック図である。
図1において、プログラム変換装置は、CPU101と、ROM102と、RAM103と、HDD(ハードディスクドライブ)104と、HD(ハードディスク)105と、FDD(フレキシブルディスクドライブ)106と、着脱可能な記録媒体の一例としてのFD(フレキシブルディスク)107と、ディスプレイ108と、I/F(インターフェース)109と、キーボード110と、マウス111と、スキャナ112と、プリンタ113と、を備えている。また、各構成部は、バス100によってそれぞれ接続されている。
ここで、CPU101は、プログラム変換装置の全体の制御を司る。ROM102は、ブートプログラムなどのプログラムを記憶している。RAM103は、CPU101のワークエリアとして使用される。HDD104は、CPU101の制御に従ってHD105に対するデータのリード/ライトを制御する。HD105は、HDD104の制御で書き込まれたデータを記憶する。
FDD106は、CPU101の制御に従ってFD107に対するデータのリード/ライトを制御する。FD107は、FDD106の制御で書き込まれたデータを記憶したり、FD107に記憶されたデータをプログラム変換装置に読み取らせたりする。
また、着脱可能な記録媒体として、FD107のほか、CD−ROM(CD−R、CD−RW)、MO、DVD(Digital Versatile Disk)、メモリーカードなどであってもよい。ディスプレイ108は、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する。このディスプレイ108は、例えば、CRT、TFT液晶ディスプレイ、プラズマディスプレイなどを採用することができる。
I/F109は、通信回線を通じてインターネットなどのネットワーク114に接続され、このネットワーク114を介して他の装置に接続される。そして、I/F109は、ネットワーク114と内部のインターフェースを司り、外部装置からのデータの入出力を制御する。I/F109には、例えばモデムやLANアダプタなどを採用することができる。
キーボード110は、文字、数字、各種指示などの入力のためのキーを備え、データの入力を行う。また、タッチパネル式の入力パッドやテンキーなどであってもよい。マウス111は、カーソルの移動や範囲選択、あるいはウィンドウの移動やサイズの変更などを行う。ポインティングデバイスとして同様に機能を備えるものであれば、トラックボールやジョイスティックなどであってもよい。
スキャナ112は、画像を光学的に読み取り、プログラム変換装置内に画像データを取り込む。なお、スキャナ112は、OCR機能を持たせてもよい。また、プリンタ113は、画像データや文書データを印刷する。プリンタ113には、例えば、レーザプリンタやインクジェットプリンタを採用することができる。
(プログラム変換装置の機能的構成)
次に、この発明の実施の形態にかかるプログラム変換装置の機能的構成について説明する。図2は、この発明の実施の形態にかかるプログラム変換装置の機能的構成を示す図である。図2に示すように、プログラム変換装置は、バイナリプログラム変換ツール11、分岐トレースマージツール12、リンカ13,14およびシミュレータ15を備えている。リンカ13は、変換前オブジェクトプログラム21とシミュレータ用オブジェクトプログラム22をリンクして、シミュレータ用実行形式プログラム23を生成する。
シミュレータ15は、分岐トレース情報取得手段としての機能を有し、シミュレータ用実行形式プログラム23を実行して分岐トレース情報を生成する。シミュレータ用実行形式プログラム23に条件付き分岐命令の実行経路が複数ある場合には、シミュレータ15は、第1の実行経路、第2の実行経路および第mの実行経路のそれぞれに対して第1の分岐トレース情報24、第2の分岐トレース情報25および第mの分岐トレース情報26を出力する。ここで、mは2以上の整数である。分岐トレースマージツール12は、これら第1の分岐トレース情報24、第2の分岐トレース情報25および第mの分岐トレース情報26を結合(マージ)して、最終的な分岐トレース情報27を生成する。
バイナリプログラム変換ツール11は、シミュレータ用実行形式プログラム23、分岐トレース情報27および分岐ペナルティテーブル28に基づいて、変換前オブジェクトプログラム21の条件付き分岐命令の成立予測ビットを書き換えた変換後オブジェクトプログラム29を生成する。バイナリプログラム変換ツール11の詳細な構成については、後述する(A)。リンカ14は、実行形式プログラム生成手段としての機能を有し、変換後オブジェクトプログラム29と実機用オブジェクトプログラム30をリンクして、組み込みシステムを搭載する実機で実行される実機用実行形式プログラム31を生成する。
なお、上述したバイナリプログラム変換ツール11、分岐トレースマージツール12、リンカ13,14およびシミュレータ15は、具体的には、例えば、図1に示したROM102、RAM103、HD105などの記録媒体に記録されたプログラムを、CPU101が実行することによって、またはI/F109によって、その機能を実現する。
(プログラム変換処理手順)
次に、この発明の実施の形態にかかるプログラム変換装置の処理手順について説明する。図3は、この発明の実施の形態にかかるプログラム変換装置の処理手順を示す図である。図3に示すように、プログラム変換処理が開始されると、まず、リンカ13により、変換前オブジェクトプログラム21とシミュレータ用オブジェクトプログラム22をリンクして、シミュレータ用実行形式プログラム23を作成する(ステップS301)。
次いで、シミュレータ15により、シミュレータ用実行形式プログラム23を実行して、分岐トレース情報27を取得する(ステップS302)。上述したように、条件付き分岐命令の実行経路が複数ある場合には、分岐トレース情報27は、分岐トレースマージツール12により、実行経路ごとに得られる分岐トレース情報24,25,26を結合したものとなる。分岐トレースマージツール12による分岐トレース情報の結合処理の詳細については、後述する(D)。
次いで、バイナリプログラム変換ツール11により、分岐トレース情報27と分岐ペナルティテーブル28に基づいて、変換前オブジェクトプログラム21の条件付き分岐命令の成立予測ビットを書き換え、変換後オブジェクトプログラム29を作成する(ステップS303)。バイナリプログラム変換ツール11による成立予測ビットの書き換え処理の詳細については、後述する(C)。次いで、リンカ14により、変換後オブジェクトプログラム29と実機用オブジェクトプログラム30をリンクして、実機用実行形式プログラム31を作成する(ステップS304)。このようにして、条件付き分岐命令の成立予測ビットが書き換えられた実機用実行形式プログラム31が得られる。
(A.バイナリプログラム変換ツールの構成)
図4は、バイナリプログラム変換ツールの構成を示す図である。図4に示すように、バイナリプログラム変換ツール11は、算出処理部41、判定処理部42、入力部43、位置処理部44、書き換え処理部45、出力部46および統計情報出力部47を備えている。算出処理部41は、分岐トレース情報27と分岐ペナルティテーブル28に基づいて、条件付き分岐命令ごとに総分岐ペナルティの差分を算出する。総分岐ペナルティの差分は、成立予測ビットの書き換えが必要であるか否かの判定を行う際の指標として用いられる。
判定処理部42は、条件付き分岐命令ごとに、総分岐ペナルティの差分に基づいて、成立予測ビットを書き換えるか否かを判定する。入力部43は、変換前オブジェクトプログラム21の入力を受け付ける。位置処理部44は、シミュレータ用実行形式プログラム23および分岐トレース情報27に基づいて、条件付き分岐命令ごとに、変換前オブジェクトプログラム21における当該条件付き分岐命令のアドレスを特定する。位置処理部44によるアドレス特定処理については、後述する(B)。
書き換え処理部45は、判定処理部42により成立予測ビットの書き換えが必要であると判定された条件付き分岐命令の成立予測ビットを書き換える。その書き換えの対象は、変換前オブジェクトプログラム21の、位置処理部44により特定されたアドレスにある条件付き分岐命令である。出力部46は、成立予測ビットの書き換えが済んだ変換後オブジェクトプログラム29を出力する。統計情報出力部47は、成立予測ビットが書き換えられた箇所の統計情報32を出力する。
図5に、条件付き分岐命令の成立予測ビットが2ビットである例を示す。この例では、成立予測ビットの値は、分岐すると予測する場合には2進数で10(10進数で2)または11(10進数で3)に設定され、分岐しないと予測する場合には2進数で00(10進数で0)または01(10進数で1)に設定される。そして、コンパイラまたはアセンブラにより機械語に展開される。
図6に、変換前オブジェクトプログラム21の一例を示す。図6において、#の直後の数字(0または3)は、成立予測ビットを10進数で表した値である。従って、1行目のアドレス0x00200020の後に#3とあるのは、成立予測ビットの値が2進数で11であり、分岐すると予測されていることを表している。
図7に、分岐トレース情報27の一例を示す。図7においては、シミュレータ15での実行時に、図6に示す変換前オブジェクトプログラム21のアドレス0x00200020の条件付き分岐命令について、4回分岐が成立し、12回分岐が成立しなかったことを表している。
図8に、分岐ペナルティテーブル28の一例を示す。図8に示す例では、分岐すると予測しているとき(フラグ:T)に、分岐しなかった場合には分岐ペナルティとして3が発生し、分岐した場合には分岐ペナルティとして1が発生する。また、分岐しないと予測しているとき(フラグ:F)に、分岐した場合には分岐ペナルティとして3が発生し、分岐しなかった場合にはペナルティが発生しない。それぞれの分岐ペナルティの値は、プロセッサに依存する。ここで、フラグは、成立予測ビットの値が2進数で10または11である場合にTとし、2進数で00または01である場合にFとする。
図9に、変換後オブジェクトプログラム29の一例を示す。図9に示す例では、図6に示す変換前オブジェクトプログラム21のアドレス0x00200020、0x00200048および0x00200068の各成立予測ビット(図9に四角で囲む部分)が書き換えられている。
図10に、統計情報32の一例を示す。図10には、統計情報32として、適用対象オブジェクトプログラムa.objに条件付き分岐命令が123個あり、そのうちの98個で成立予測ビットが書き換えられており、その書き換えの適用率が79.67%であるという情報が得られたことが示されている。図10において、左端のアップデート欄に「U」とあるのは、成立予測ビットが書き換えられたことを表している。
(B.アドレス特定処理の説明)
図11は、位置処理部によるアドレス特定処理を説明する図である。図11に示すように、シミュレータ15でシミュレータ用実行形式プログラム(a.abs)23を実行することにより分岐トレース情報27が得られる。ここで、アドレス0x00200030の関数名funcS1(分岐トレース情報27に☆印で示す)の分岐命令について、変換前オブジェクトプログラム(a.obj)21におけるアドレスを特定する場合を例にして説明する。
分岐トレース情報27として取得したアドレス(αとする)は、シミュレータ空間での論理アドレスであり(シミュレータ用実行形式プログラム23に☆印で示す)、オブジェクトプログラムにおける分岐命令のアドレスには対応していない。そこで、この分岐命令に対応するオブジェクトプログラムと、コードセクション内の先頭からの相対アドレス、すなわちオフセットアドレス(βとする)を求める。一般に、実行形式プログラムには、オブジェクトプログラム名とそのコードセクション内の先頭からの相対アドレスが格納されている。例えば、最も標準的な実行形式プログラムの規格であるELF(Executable and Linking Format)では、これらの情報は、シンボルテーブルに格納されている。なお、これは実行形式プログラムの規格によらない。
そして、これらのアドレスαとβから、変換前オブジェクトプログラム21における分岐命令のアドレス(γとする)を求める(変換前オブジェクトプログラム21に☆印で示す)。γは、次の(1)式で求められる。位置処理部44は、変換前オブジェクトプログラム21内のこのγのアドレスにある命令が分岐命令であることを確認する。分岐命令でない場合には、位置処理部44は、エラーを発生する。
γ=α−β ・・・(1)
(C.成立予測ビットの書き換え処理手順)
図12は、成立予測ビットの書き換え処理手順の説明に用いられる分岐ペナルティテーブルを示す図である。図12に示すように、分岐すると予測しているとき(フラグ:T)に、分岐しなかった場合の分岐ペナルティをP(T:n)とし、分岐した場合の分岐ペナルティをP(T:t)とする。また、分岐しないと予測しているとき(フラグ:F)に、分岐しなかった場合の分岐ペナルティをP(F:n)とし、分岐した場合の分岐ペナルティをP(F:t)とする。
図13は、成立予測ビットの書き換え処理手順の説明に用いられる分岐トレース情報を示す図である。図13に示すように、取得した分岐トレース情報27の分岐番号をk(kは1からnまでの自然数)とし、この分岐番号kを用いて分岐命令をPkと表し、分岐命令Pkの分岐成立回数および分岐不成立回数を、それぞれ、Pk(t)およびPk(n)とする。
図14は、成立予測ビットの書き換え処理手順を示す図である。図14に示すように、成立予測ビットの書き換え処理が開始されると、まず、算出処理部41により、分岐ペナルティテーブル28に基づいて、分岐が成立すると予測する場合の合計ペナルティP(T)と、分岐が成立しないと予測する場合の合計ペナルティP(F)を算出する(ステップS1401)。P(T)およびP(F)は、それぞれ、次の(2)式および(3)式で求められる。
P(T)=P(T:n)×Pk(n)+P(T:t)×Pk(t) ・・・(2)
P(F)=P(F:n)×Pk(n)+P(F:t)×Pk(t) ・・・(3)
次いで、分岐番号kを1とし(ステップS1402)、算出処理部41により、分岐命令Pkでの分岐成立回数Pk(t)および分岐不成立回数Pk(n)に基づいて、総分岐ペナルティの差分(δPk)を算出する(ステップS1403)。δPkは、次の(4)式で求められる。
δPk=P(F)−P(T) ・・・(4)
次いで、判定処理部42により、δPkが0以上であるか否かを判定する(ステップS1404)。δPkが0以上である場合(ステップS1404:Yes)、分岐命令Pkの成立予測ビットを分岐成立(フラグ:T)に設定する(ステップS1405)。一方、δPkが0よりも小さい場合(ステップS1404:No)、分岐命令Pkの成立予測ビットを分岐不成立(フラグ:F)に設定する(ステップS1406)。
次いで、書き換え処理部45により、ステップS1405またはステップS1406で設定された成立予測ビットと、分岐命令Pkの元の成立予測ビットとが一致するか否かを判定する(ステップS1407)。一致しない場合(ステップS1407:No)、変換前オブジェクトプログラム21の分岐命令Pkの成立予測ビットを、ステップS1405またはステップS1406で設定された成立予測ビットに書き換える(ステップS1408)。一致する場合(ステップS1407:Yes)、成立予測ビットの書き換えは行われない。
次いで、分岐番号kをインクリメントし(ステップS1409)、kの値が[n+1]に達したか否かを判定する(ステップS1410)。kが[n+1]に達するまで(ステップS1410:No)、前記ステップS1403からステップS1410までを繰り返す。kが[n+1]に達したら(ステップS1410:Yes)、出力部46により変換後オブジェクトプログラム29を出力するとともに、統計情報出力部47により統計情報32を出力し(ステップS1411)、成立予測ビットの書き換え処理を終了する。
(D.分岐トレース情報の結合処理手順)
図15は、分岐トレース情報の結合処理手順を示す図である。図15に示すように、分岐トレース情報の結合処理が開始されると、まず、分岐トレースマージツール12により、実行経路ごとの分岐トレース情報24,25,26(図2参照)を読み込む(ステップS1501)。次いで、分岐トレースマージツール12により、読み込んだ複数の分岐トレース情報をマージする。
具体的には、同一分岐アドレスの分岐成立回数を加算する。分岐不成立回数についても同様に加算する(ステップS1502)。これにより、複数の実行経路で取得した分岐トレース情報の平均的な分岐の割合を取得することができる。マージする分岐トレース情報が多いほど、各分岐命令での分岐精度が向上する。そして、マージして得られた分岐トレース情報を出力し(ステップS1503)、分岐トレース情報の結合処理を終了する。
分岐トレース情報を結合する際に、分岐成立回数および分岐不成立回数を単純に加算してもよいが、分岐トレース情報ごとに意味や実行頻度などのプログラム特性に応じた演算式を定義し、重み付けをして加算することもできる。例えば、第1の分岐トレース情報、第2の分岐トレース情報および第mの分岐トレース情報の分岐成立回数(または分岐不成立回数)をそれぞれBR1、BR2およびBRmとし、それぞれの重み付け係数をC1、C2およびCmとし、データ個数をjとすると、重み付け後の分岐トレース情報の分岐成立回数(または分岐不成立回数)Cは、次の(5)式で求められる。
C=ΣCm×BRm (m=1、2、…、j) ・・・(5)
図16に、第1の分岐トレース情報24と第2の分岐トレース情報25を結合した分岐トレース情報27の一例を示す。通常は、第1の分岐トレース情報24の重み付け係数C1と第2の分岐トレース情報25の重み付け係数C2は、ともに1であるが、ここでは、C1が1であり、C2が2である場合を説明する。これは、適用プログラムにおいて、第2の分岐トレース情報25の価値が第1の分岐トレース情報24の価値よりも大きいと定義されるケースに相当する。この場合、マージ後の分岐トレース情報27の分岐成立回数(または分岐不成立回数)Cは、次の(6)式で求められる。
C=BR1+2×BR2 ・・・(6)
(分岐トレース情報を実機環境から取得する例)
組み込みシステムを搭載する機器の場合、実機環境で分岐トレース情報を取得することもできる。図17は、分岐トレース情報を実機環境から取得する装置の機能的構成を示す図である。図17に示すように、この装置は、ICEやJ−TAGなどのトレース取得専用回路51および分岐トレース情報加工ソフトウェア52を備えている。トレース取得専用回路51および分岐トレース情報加工ソフトウェア52は、分岐トレース情報取得手段としての機能を有する。
トレース取得専用回路51は、実機で実機用実行形式プログラム61を実行しているときに、実機(ハードウェア)から時系列ハードウェアトレース情報62を取得する。ハードウェアから時系列ハードウェアトレース情報を取得することについては、特開昭57−124088号公報または特許第3909080号公報に開示されている。従って、ここでは、これらの公報に開示されている技術を利用することとして、説明を省略する。分岐トレース情報加工ソフトウェア52は、時系列ハードウェアトレース情報62に基づいて、分岐成立回数と分岐不成立回数を取得し、分岐トレース情報63を作成する。図18に、時系列ハードウェアトレース情報の一例を示す。
図19は、分岐トレース情報加工ソフトウェアによる分岐トレース情報の出力処理手順を示す図である。図19に示すように、分岐トレース情報加工ソフトウェア52による分岐トレース情報の出力処理が開始されると、まず、トレース取得専用回路51から出力された時系列ハードウェアトレース情報62を読み込む(ステップS1901)。次いで、1要素ごとにトレース情報を読み込む(ステップS1902)。次いで、分岐元アドレスごとに分岐成立回数と分岐不成立回数を求める(ステップS1903)。
そして、トレース情報の有無を判定し(ステップS1904)、読み込んでいないトレース情報が残っている間(ステップS1904:No)、前記ステップS1902からステップS1904を繰り返す。読み込んでいないトレース情報がなくなったら(ステップS1904:Yes)、全ての分岐アドレスについて、実機用実行形式プログラム61のシンボルアドレス情報との照合を行い、対応する関数名を取得する(ステップS1905)。最後に、分岐トレース情報63を出力して(ステップS1906)、分岐トレース情報加工ソフトウェアによる処理を終了する。このようにして実機環境から取得した分岐トレース情報63を用いても、上述したシミュレータ15により分岐トレース情報27を取得した場合と同様に、変換前オブジェクトプログラム21の成立予測ビットを書き換えて、変換後オブジェクトプログラム29を得ることができる。
以上説明したように、実施の形態によれば、変換前オブジェクトプログラム21における条件付き分岐命令の成立予測ビットを書き換えるだけなので、コードサイズを拡大させずに済む。また、実機用実行形式プログラム31の実行形式がシミュレータ用実行形式プログラム23の実行形式と異なる場合でも、シミュレータ15から得られる分岐トレース情報27に基づいて変換前オブジェクトプログラム21の条件付き分岐命令の成立予測ビットを書き換えるので、条件付き分岐命令の成立予測ビットを書き換えた実機用実行形式プログラム31が得られる。従って、容量サイズの制限が厳しい組み込みシステムにも適用できるので、組み込みシステムで実行されるバイナリプログラムの条件付き分岐命令の成立予測ビットを書き換えることができる。
また、複数の実行経路での条件付き分岐命令の分岐成立状況が反映されるので、複数の実行経路で実行され得る分岐命令の分岐予測が複数の実行経路を考慮して平均的な確率で行われるように、バイナリプログラムの条件付き分岐命令の成立予測ビットを書き換えることができる。さらに、条件付き分岐命令の分岐成立状況だけでなく、分岐ペナルティも反映されるので、分岐ペナルティが削減されるように、バイナリプログラムの条件付き分岐命令の成立予測ビットを書き換えることができる。
また、実施の形態によれば、以下のような効果も得られる。条件付き分岐命令の成立予測ビットを書き換えるだけなので、プログラム品質が劣化することがなく、安全である。ソースコードプログラムを加工する代わりに、より単純なバイナリプログラムを加工するので、容易に新機能を活用することができる。プログラム利用者は、開発者の再翻訳作業を待たずに新しいバイナリプログラムを生成して利用することができる。なお、ソースコードの管理が適切に行われていなければ、再翻訳作業が不可能であったり、大きな危険を伴うことになるが、実施の形態では、このような不都合は生じない。
また、オブジェクトプログラムの成立予測ビットのみを書き換えるので、実行形式プログラムの種々の実行形式ごとに分岐トレース情報を取得し直す手間が省ける。また、実機やシミュレータの環境に関係なく、オブジェクトプログラムを加工することができる。また、統計情報が出力されるので、バイナリプログラムの変換結果から逆算してソースコードプログラムに反映させることもできる。ソースコードプログラムに反映させることによって、他プラットフォームへの移植もソースコードレベルで行うことができる。
なお、本実施の形態で説明したプログラム変換プログラムは、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。このプログラムは、ハードディスク、フレキシブルディスク、CD−ROM、MO、DVD等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される
(付記1)変換前オブジェクトプログラムを用いて生成された第1の実行形式プログラムを実行して、条件付き分岐命令の分岐成立状況に関する分岐トレース情報を取得する分岐トレース情報取得手段と、前記分岐トレース情報取得手段により取得した分岐トレース情報に基づいて、前記変換前オブジェクトプログラムの対応する条件付き分岐命令の成立予測ビットを書き換えた変換後オブジェクトプログラムを生成するバイナリプログラム変換手段と、前記バイナリプログラム変換手段により変換された変換後オブジェクトプログラムを用いて第2の実行形式プログラムを生成する実行形式プログラム生成手段と、を備えることを特徴とするプログラム変換装置。
(付記2)前記条件付き分岐命令の複数の実行経路のそれぞれから得られる分岐トレース情報を結合する分岐トレースマージ手段、をさらに備えることを特徴とする付記1に記載のプログラム変換装置。
(付記3)前記第1の実行形式プログラムにおける前記条件付き分岐命令の物理アドレスと、同第1の実行形式プログラムにおける前記変換前オブジェクトプログラムのオフセットアドレスの差分から、同変換前オブジェクトプログラムにおける同条件付き分岐命令の相対アドレスを求め、該相対アドレスで特定される命令を、同変換前オブジェクトプログラムにおける成立予測ビットの書き換え対象とする位置処理手段、をさらに備えることを特徴とする付記1または2に記載のプログラム変換装置。
(付記4)前記バイナリプログラム変換手段は、さらに、分岐予測が外れたときの分岐ペナルティに基づいて、前記変換前オブジェクトプログラムの条件付き分岐命令の成立予測ビットを書き換えることを特徴とする付記1〜3のいずれか一つに記載のプログラム変換装置。
(付記5)条件付き分岐命令の分岐成立状況に関する分岐トレース情報に基づいて、変換前オブジェクトプログラムの対応する条件付き分岐命令の成立予測ビットを書き換えた変換後オブジェクトプログラムを生成する第1のステップと、前記変換後オブジェクトプログラムを用いて実行形式プログラムを生成する第2のステップと、を含むことを特徴とするプログラム変換方法。
(付記6)前記第1のステップにおいて、前記分岐トレース情報として、前記条件付き分岐命令の複数の実行経路のそれぞれから得られる分岐トレース情報を結合した情報を用いることを特徴とする付記5に記載のプログラム変換方法。
(付記7)前記条件付き分岐命令の複数の実行経路の実行頻度に応じた重み付けを行って、各実行経路に対する分岐トレース情報を結合することを特徴とする付記6に記載のプログラム変換方法。
(付記8)前記第1のステップにおいて、前記分岐トレース情報として、前記変換前オブジェクトプログラムとシミュレータ用オブジェクトプログラムをリンクしてシミュレータ用実行形式プログラムを生成し、該シミュレータ用実行形式プログラムをシミュレータで実行することにより生成される情報を用いることを特徴とする付記5〜7のいずれか一つに記載のプログラム変換方法。
(付記9)前記第1のステップにおいて、前記シミュレータ用実行形式プログラムにおける前記条件付き分岐命令の物理アドレスと、同シミュレータ用実行形式プログラムにおける前記変換前オブジェクトプログラムのオフセットアドレスの差分から、同変換前オブジェクトプログラムにおける同条件付き分岐命令の相対アドレスを求め、該相対アドレスにより特定される命令が条件付き分岐命令である場合に成立予測ビットを書き換えることを特徴とする付記8に記載のプログラム変換方法。
(付記10)前記第1のステップにおいて、前記分岐トレース情報として、組み込みシステムで実行形式プログラムを実行することにより生成される情報を用いることを特徴とする付記5〜7のいずれか一つに記載のプログラム変換方法。
(付記11)前記第1のステップにおいて、前記実行形式プログラムにおける前記条件付き分岐命令の物理アドレスと、同実行形式プログラムにおける前記変換前オブジェクトプログラムのオフセットアドレスの差分から、同変換前オブジェクトプログラムにおける同条件付き分岐命令の相対アドレスを求め、該相対アドレスにより特定される命令が条件付き分岐命令である場合に成立予測ビットを書き換えることを特徴とする付記10に記載のプログラム変換方法。
(付記12)前記第1のステップにおいて、さらに、分岐予測が外れたときの分岐ペナルティに基づいて、前記変換前オブジェクトプログラムの条件付き分岐命令の成立予測ビットを書き換えることを特徴とする付記5〜11のいずれか一つに記載のプログラム変換方法。
(付記13)前記分岐ペナルティは、前記実行形式プログラムを実行するプロセッサに固有の値であることを特徴とする付記12に記載のプログラム変換方法。
(付記14)条件付き分岐命令の分岐成立状況に関する分岐トレース情報に基づいて、変換前オブジェクトプログラムの対応する条件付き分岐命令の成立予測ビットを書き換えた変換後オブジェクトプログラムを生成する第1のステップと、前記変換後オブジェクトプログラムを用いて実行形式プログラムを生成する第2のステップと、をコンピュータに実行させることを特徴とするプログラム変換プログラム。
(付記15)前記第1のステップの前に、前記変換前オブジェクトプログラムとシミュレータ用オブジェクトプログラムをリンクしてシミュレータ用実行形式プログラムを生成する第3のステップと、前記シミュレータ用実行形式プログラムをシミュレータで実行して、前記第1のステップで用いられる分岐トレース情報を生成する第4のステップと、をさらに含むことを特徴とする付記14に記載のプログラム変換プログラム。
(付記16)前記第1のステップの前に、組み込みシステムで実行形式プログラムを実行して、前記第1のステップで用いられる分岐トレース情報を生成する第5のステップ、をさらに含むことを特徴とする付記14に記載のプログラム変換プログラム。
(付記17)前記条件付き分岐命令の複数の実行経路のそれぞれから得られる分岐トレース情報を結合して、前記第1のステップで用いられる分岐トレース情報を生成することを特徴とする付記15または16に記載のプログラム変換プログラム。
(付記18)前記条件付き分岐命令の複数の実行経路の実行頻度に応じた重み付けを行って、各実行経路に対する分岐トレース情報を結合することを特徴とする付記17に記載のプログラム変換プログラム。
(付記19)前記第1のステップにおいて、さらに、分岐予測が外れたときの分岐ペナルティに基づいて、前記変換前オブジェクトプログラムの条件付き分岐命令の成立予測ビットを書き換えることを特徴とする付記14〜18のいずれか一つに記載のプログラム変換プログラム。
以上のように、本発明にかかるプログラム変換装置、プログラム変換方法およびプログラム変換プログラムは、パイプライン処理を行う計算機用プログラムの作成に有用であり、特に、高速処理が要求される計算機用プログラムの作成に適している。
この発明の実施の形態にかかるプログラム変換装置のハードウェア構成を示すブロック図である。 この発明の実施の形態にかかるプログラム変換装置の機能的構成を示す図である。 この発明の実施の形態にかかるプログラム変換装置の処理手順を示す図である。 この発明の実施の形態にかかるプログラム変換装置のバイナリプログラム変換ツールの構成を示す図である。 条件付き分岐命令の成立予測ビットを説明する図である。 変換前オブジェクトプログラムの一例を示す図である。 分岐トレース情報の一例を示す図である。 分岐ペナルティテーブルの一例を示す図である。 変換後オブジェクトプログラムの一例を示す図である。 統計情報の一例を示す図である。 この発明の実施の形態にかかるプログラム変換装置の位置処理部によるアドレス特定処理を説明する図である。 成立予測ビットの書き換え処理手順の説明に用いられる分岐ペナルティテーブルを示す図である。 成立予測ビットの書き換え処理手順の説明に用いられる分岐トレース情報を示す図である。 この発明の実施の形態にかかるプログラム変換装置のバイナリプログラム変換ツールによる成立予測ビットの書き換え処理手順を示す図である。 この発明の実施の形態にかかるプログラム変換装置の分岐トレースマージツールによる分岐トレース情報の結合処理手順を示す図である。 2つの分岐トレース情報を結合した場合の分岐トレース情報の一例を示す図である。 分岐トレース情報を実機環境から取得する装置の機能的構成を示す図である。 時系列ハードウェアトレース情報の一例を示す図である。 分岐トレース情報加工ソフトウェアによる分岐トレース情報の出力処理手順を示す図である。 従来のバイナリプログラム変換装置の構成を示す図である。
符号の説明
11 バイナリプログラム変換ツール
12 分岐トレースマージツール
13、14 リンカ
15 シミュレータ
21 変換前オブジェクトプログラム
22 シミュレータ用オブジェクトプログラム
23 シミュレータ用実行形式プログラム
27 分岐トレース情報
29 変換後オブジェクトプログラム
31 実機用実行形式プログラム
44 位置処理部

Claims (7)

  1. 変換前オブジェクトプログラムを用いて生成された第1の実行形式プログラムを実行して、条件付き分岐命令の分岐成立状況に関する分岐トレース情報を取得するとともに、分岐すると予測しているときに分岐しなかった場合の第1の分岐ペナルティ、分岐すると予測しているときに分岐した場合の第2の分岐ペナルティ、分岐しないと予測しているときに分岐しなかった場合の第3の分岐ペナルティ、および分岐しないと予測しているときに分岐した場合の第4の分岐ペナルティを規定した分岐ペナルティテーブルを取得する分岐トレース情報取得手段と、
    前記分岐トレース情報取得手段により取得した分岐トレース情報および分岐ペナルティテーブルを参照して、前記条件付き分岐命令の分岐成立回数および分岐不成立回数と、前記第1の分岐ペナルティおよび前記第2の分岐ペナルティと、に基づいて、分岐が成立すると予測する場合の第1の合計ペナルティを算出するとともに、前記条件付き分岐命令の分岐成立回数および分岐不成立回数と、前記第3の分岐ペナルティおよび前記第4の分岐ペナルティと、に基づいて、分岐が成立しないと予測する場合の第2の合計ペナルティを算出し、前記第1の合計ペナルティと前記第2の合計ペナルティとの差分に応じて、前記変換前オブジェクトプログラムの対応する条件付き分岐命令の成立予測ビットを、分岐成立または分岐不成立に書き換え、書き換えた変換後オブジェクトプログラムを生成するバイナリプログラム変換手段と、
    前記バイナリプログラム変換手段により変換された変換後オブジェクトプログラムを用いて第2の実行形式プログラムを生成する実行形式プログラム生成手段と、
    を備えることを特徴とするプログラム変換装置。
  2. 前記条件付き分岐命令の複数の実行経路のそれぞれから得られる分岐トレース情報を結合する分岐トレースマージ手段、
    をさらに備えることを特徴とする請求項1に記載のプログラム変換装置。
  3. 条件付き分岐命令の分岐成立状況に関する分岐トレース情報と、分岐すると予測しているときに分岐しなかった場合の第1の分岐ペナルティ、分岐すると予測しているときに分岐した場合の第2の分岐ペナルティ、分岐しないと予測しているときに分岐しなかった場合の第3の分岐ペナルティ、および分岐しないと予測しているときに分岐した場合の第4の分岐ペナルティを規定した分岐ペナルティテーブルと、を参照して、前記条件付き分岐命令の分岐成立回数および分岐不成立回数と、前記第1の分岐ペナルティおよび前記第2の分岐ペナルティと、に基づいて、分岐が成立すると予測する場合の第1の合計ペナルティを算出するとともに、前記条件付き分岐命令の分岐成立回数および分岐不成立回数と、前記第3の分岐ペナルティおよび前記第4の分岐ペナルティと、に基づいて、分岐が成立しないと予測する場合の第2の合計ペナルティを算出し、前記第1の合計ペナルティと前記第2の合計ペナルティとの差分に応じて、変換前オブジェクトプログラムの対応する条件付き分岐命令の成立予測ビットを、分岐成立または分岐不成立に書き換え、書き換えた変換後オブジェクトプログラムを生成して、記憶装置に記憶する第1のステップと、
    前記変換後オブジェクトプログラムを用いて実行形式プログラムを生成して、前記記憶装置に記憶する第2のステップと、
    を含むことを特徴とするプログラム変換方法。
  4. 前記第1のステップにおいて、前記分岐トレース情報として、前記条件付き分岐命令の複数の実行経路のそれぞれから得られる分岐トレース情報を結合した情報を用いることを特徴とする請求項に記載のプログラム変換方法。
  5. 前記第1のステップにおいて、前記分岐トレース情報として、前記変換前オブジェクトプログラムとシミュレータ用オブジェクトプログラムをリンクしてシミュレータ用実行形式プログラムを生成し、該シミュレータ用実行形式プログラムをシミュレータで実行することにより生成される情報を用いることを特徴とする請求項3または4に記載のプログラム変換方法。
  6. 前記第1のステップにおいて、前記シミュレータ用実行形式プログラムにおける前記条件付き分岐命令の物理アドレスと、同シミュレータ用実行形式プログラムにおける前記変換前オブジェクトプログラムのオフセットアドレスの差分から、同変換前オブジェクトプログラムにおける同条件付き分岐命令の相対アドレスを求め、該相対アドレスにより特定される条件付き分岐命令成立予測ビットを書き換えることを特徴とする請求項に記載のプログラム変換方法。
  7. 条件付き分岐命令の分岐成立状況に関する分岐トレース情報と、分岐すると予測しているときに分岐しなかった場合の第1の分岐ペナルティ、分岐すると予測しているときに分岐した場合の第2の分岐ペナルティ、分岐しないと予測しているときに分岐しなかった場合の第3の分岐ペナルティ、および分岐しないと予測しているときに分岐した場合の第4の分岐ペナルティを規定した分岐ペナルティテーブルと、を参照して、前記条件付き分岐命令の分岐成立回数および分岐不成立回数と、前記第1の分岐ペナルティおよび前記第2の分岐ペナルティと、に基づいて、分岐が成立すると予測する場合の第1の合計ペナルティを算出するとともに、前記条件付き分岐命令の分岐成立回数および分岐不成立回数と、前記第3の分岐ペナルティおよび前記第4の分岐ペナルティと、に基づいて、分岐が成立しないと予測する場合の第2の合計ペナルティを算出し、前記第1の合計ペナルティと前記第2の合計ペナルティとの差分に応じて、変換前オブジェクトプログラムの対応する条件付き分岐命令の成立予測ビットを、分岐成立または分岐不成立に書き換え、書き換えた変換後オブジェクトプログラムを生成して、記憶装置に記憶する第1のステップと、
    前記変換後オブジェクトプログラムを用いて実行形式プログラムを生成して、前記記憶装置に記憶する第2のステップと、
    をコンピュータに実行させることを特徴とするプログラム変換プログラム。
JP2007244312A 2007-09-20 2007-09-20 プログラム変換装置、プログラム変換方法およびプログラム変換プログラム Expired - Fee Related JP5082716B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2007244312A JP5082716B2 (ja) 2007-09-20 2007-09-20 プログラム変換装置、プログラム変換方法およびプログラム変換プログラム
US12/219,864 US8352928B2 (en) 2007-09-20 2008-07-29 Program conversion apparatus, program conversion method, and computer product

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007244312A JP5082716B2 (ja) 2007-09-20 2007-09-20 プログラム変換装置、プログラム変換方法およびプログラム変換プログラム

Publications (2)

Publication Number Publication Date
JP2009075874A JP2009075874A (ja) 2009-04-09
JP5082716B2 true JP5082716B2 (ja) 2012-11-28

Family

ID=40472969

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007244312A Expired - Fee Related JP5082716B2 (ja) 2007-09-20 2007-09-20 プログラム変換装置、プログラム変換方法およびプログラム変換プログラム

Country Status (2)

Country Link
US (1) US8352928B2 (ja)
JP (1) JP5082716B2 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9703667B2 (en) * 2015-02-22 2017-07-11 International Business Machines Corporation Hardware-based edge profiling
US10209962B2 (en) 2017-02-06 2019-02-19 International Business Machines Corporation Reconstructing a high level compilable program from an instruction trace
US10146530B1 (en) * 2017-07-12 2018-12-04 International Business Machines Corporation Simulating and evaluating code branch merge

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS57124088A (en) 1981-01-23 1982-08-02 Mitsubishi Electric Corp Intermittent stopping system for refrigerator
JPS62214444A (ja) * 1986-03-17 1987-09-21 Fujitsu Ltd シミユレ−シヨン方法
EP0404068A3 (en) * 1989-06-20 1991-12-27 Fujitsu Limited Branch instruction executing device
JPH03278241A (ja) * 1990-03-28 1991-12-09 Nec Corp プログラムデバッグ方式
JPH04362745A (ja) * 1991-06-10 1992-12-15 Agency Of Ind Science & Technol 命令トレース装置
JP3278241B2 (ja) 1993-05-14 2002-04-30 富士写真フイルム株式会社 電子写真式製版印刷版の作成方法
JPH0816378A (ja) * 1994-06-30 1996-01-19 Fujitsu Ltd プログラム・リバース解析方法および装置
JP3550748B2 (ja) * 1994-09-20 2004-08-04 富士通株式会社 コンパイラ装置
JP3494489B2 (ja) * 1994-11-30 2004-02-09 株式会社ルネサステクノロジ 命令処理装置
AU3666697A (en) * 1996-08-20 1998-03-06 Idea Corporation A method for identifying hard-to-predict branches to enhance processor performance
JP3425069B2 (ja) * 1996-10-28 2003-07-07 富士通株式会社 バイナリ・プログラム変換装置および方法
US6591414B2 (en) 1996-10-28 2003-07-08 Fujitsu Limited Binary program conversion apparatus, binary program conversion method and program recording medium
US5857104A (en) * 1996-11-26 1999-01-05 Hewlett-Packard Company Synthetic dynamic branch prediction
US5838962A (en) * 1997-04-09 1998-11-17 Hewlett-Packard Company Interrupt driven dynamic adjustment of branch predictions
US6205545B1 (en) * 1998-04-30 2001-03-20 Hewlett-Packard Company Method and apparatus for using static branch predictions hints with dynamically translated code traces to improve performance
US6115809A (en) * 1998-04-30 2000-09-05 Hewlett-Packard Company Compiling strong and weak branching behavior instruction blocks to separate caches for dynamic and static prediction
US20020066081A1 (en) * 2000-02-09 2002-05-30 Evelyn Duesterwald Speculative caching scheme for fast emulation through statically predicted execution traces in a caching dynamic translator
JP2001273138A (ja) 2000-03-24 2001-10-05 Fujitsu Ltd プログラム変換装置および方法
US7178133B1 (en) * 2001-04-30 2007-02-13 Mips Technologies, Inc. Trace control based on a characteristic of a processor's operating state
US7168066B1 (en) * 2001-04-30 2007-01-23 Mips Technologies, Inc. Tracing out-of order load data
US7181728B1 (en) * 2001-04-30 2007-02-20 Mips Technologies, Inc. User controlled trace records
US7185234B1 (en) * 2001-04-30 2007-02-27 Mips Technologies, Inc. Trace control from hardware and software
US20030005422A1 (en) * 2001-07-02 2003-01-02 Nicolai Kosche Technique for improving the prediction rate of dynamically unpredictable branches
US7207035B2 (en) * 2001-08-23 2007-04-17 International Business Machines Corporation Apparatus and method for converting an instruction and data trace to an executable program
US7159101B1 (en) * 2003-05-28 2007-01-02 Mips Technologies, Inc. System and method to trace high performance multi-issue processors
JP4485772B2 (ja) * 2003-09-17 2010-06-23 財団法人福岡県産業・科学技術振興財団 推定装置、推定方法及び推定処理を実行させるためのコンピュータプログラム及びそのプログラムを記録したコンピュータ読み取り可能な記録媒体
JP3909080B2 (ja) 2006-03-13 2007-04-25 株式会社ルネサステクノロジ データプロセッサ

Also Published As

Publication number Publication date
US20090083526A1 (en) 2009-03-26
JP2009075874A (ja) 2009-04-09
US8352928B2 (en) 2013-01-08

Similar Documents

Publication Publication Date Title
JP3919771B2 (ja) 機械翻訳システム、その制御装置、及びコンピュータプログラム
JP6492238B2 (ja) ユーザ入力予測
JP3424520B2 (ja) プログラム変換装置とデバッグ装置
CN102148852A (zh) 字体子集的动态流式传输
JP2005108184A6 (ja) 機械翻訳システム、その制御装置、及びコンピュータプログラム
JP2006252557A (ja) コンピュータ・プログラム・コードの開発オブジェクトの管理方法および開発オブジェクトの管理システム
JP2004362249A (ja) 翻訳知識最適化装置、翻訳知識最適化のためのコンピュータプログラム、コンピュータ及び記憶媒体
JP2008059279A (ja) 文字列出力処理を最適化する技術
JP5082716B2 (ja) プログラム変換装置、プログラム変換方法およびプログラム変換プログラム
US9465595B2 (en) Computing apparatus, computing method, and computing program
JP2007188443A (ja) 検証支援プログラム、該プログラムを記録した記録媒体、検証支援装置、および検証支援方法
JP2000040005A (ja) プログラム変換装置
US7979853B2 (en) Compiler device, method, program and recording medium
JP2017204164A (ja) プログラム分析方法、プログラム分析装置および分析プログラム
US20220114478A1 (en) System and method for enhancing inference models based on prediction data
JP5791097B2 (ja) 対訳フレーズ学習装置、フレーズベース統計的機械翻訳装置、対訳フレーズ学習方法、および対訳フレーズ生産方法
US7966474B2 (en) System, method and computer program product for translating storage elements
US20210365252A1 (en) Instruction translation support method and information processing apparatus
CN113919330A (zh) 语种识别方法、信息分发方法以及设备、介质
JP5900486B2 (ja) 関連仕様対応付けシステム、関連仕様対応付け方法およびプログラム
JP3943582B2 (ja) 対訳文対応付け装置
JP5431633B2 (ja) 性能チューニングプログラム、該プログラムを記録した記録媒体、性能チューニング装置、および性能チューニング方法
JP2008041002A (ja) 文書処理装置および文書処理プログラム
JP2007323299A (ja) レビュー実施順序決定装置、レビュー実施順序決定プログラム、レビュー実施順序決定プログラムが格納された記録媒体およびレビュー実施順序決定方法
JP2013257670A (ja) プロセッサ、圧縮装置、圧縮方法、および圧縮プログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100526

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20120427

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120522

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120723

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

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120820

R150 Certificate of patent or registration of utility model

Ref document number: 5082716

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150914

Year of fee payment: 3

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees