JP5614348B2 - 命令処理方法、命令処理装置、及び命令処理プログラム - Google Patents

命令処理方法、命令処理装置、及び命令処理プログラム Download PDF

Info

Publication number
JP5614348B2
JP5614348B2 JP2011061324A JP2011061324A JP5614348B2 JP 5614348 B2 JP5614348 B2 JP 5614348B2 JP 2011061324 A JP2011061324 A JP 2011061324A JP 2011061324 A JP2011061324 A JP 2011061324A JP 5614348 B2 JP5614348 B2 JP 5614348B2
Authority
JP
Japan
Prior art keywords
code
translation
instruction
unit
execution
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.)
Active
Application number
JP2011061324A
Other languages
English (en)
Other versions
JP2012198657A (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 Ltd
Original Assignee
Fujitsu 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 Ltd filed Critical Fujitsu Ltd
Priority to JP2011061324A priority Critical patent/JP5614348B2/ja
Priority to US13/421,419 priority patent/US8856761B2/en
Publication of JP2012198657A publication Critical patent/JP2012198657A/ja
Application granted granted Critical
Publication of JP5614348B2 publication Critical patent/JP5614348B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • G06F9/45516Runtime code conversion or optimisation
    • G06F9/4552Involving translation to a different instruction set architecture, e.g. just-in-time translation in a JVM
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Devices For Executing Special Programs (AREA)

Description

本発明は、命令処理方法、命令処理装置、及び命令処理プログラムに関する。
或るCPUの動作を異なるアーキテクチャのCPUでエミュレーションするために、インタプリタとジャストインタイムコンパイラ(Just−In−Timeコンパイラ:以下、「JITコンパイラ」という。)とが用いられる場合がある。インタプリタは、プログラムの命令を逐次解釈しながら、各命令の実行頻度を監視する。インタプリタは、実行頻度の高い命令について、機械語への翻訳要求をJITコンパイラに入力する。JITコンパイラは、翻訳要求に係る命令を機械語に翻訳(コンパイル)し、翻訳されたコード(以下、「翻訳コード」という。)をコードキャッシュと呼ばれるメモリ領域に記録する。以後、当該命令の実行時には、コードキャッシュに記録された翻訳コードが実行される。その結果、プログラムの実行速度が高速化される。
従来、インタプリタは、命令毎に実行回数を計測し、実行回数が既定の閾値を超えた場合に翻訳要求を行っていた。JITコンパイラが多くの翻訳要求を受けている場合に、閾値を大きくすることも行われている。例えば、インタプリタからの翻訳要求がキューによって管理され、キューの長さに応じて、閾値の増減が図られている。
コードキャッシュに対して所定量以上の翻訳コードが記録された場合、新たな翻訳コードの記録に備えて、既存の翻訳コードの一部又は全部について、コードキャッシュからの破棄が行われる。コードキャッシュにおける翻訳コードの破棄(すなわち、コードキャッシュの空き領域の確保)に関する処理は、一般的に、ガーベージコレクション(Garbage Collection:GC)と呼ばれる。
特表2003−526135号公報 特表2002−519752号公報
GC実行後における命令実行時には、実行対象の命令に対する翻訳コードが存在しない可能性が高くなる。その結果、GC実行前には翻訳コードを用いて高速実行されていた命令に関して、逐次解釈が行われ、性能が低下してしまう可能性がある。
GCによってコードキャッシュから破棄された命令が、GC実行前の程度まで性能が復帰するには、当該命令の実行回数が改めて上記閾値以上となるまでの時間が必要とされた。
1側面では、翻訳コードの破棄による性能の低下期間を短縮することのできる命令処理方法、命令処理装置、及び命令処理プログラムの提供を目的とする。
一案では、命令処理方法は、実行対象プログラムに含まれる命令のうち、逐次解釈による実行回数が閾値以上となった命令の翻訳コードを生成して第一の記憶部に記憶し、所定のタイミングで前記翻訳コードの一部又は全部を前記第一の記憶部より破棄する処理をコンピュータが実行し、前記生成する処理は、前記翻訳コードが破棄されてから所定期間において、前記閾値を前記実行回数に対して相対的に低下させる。
一態様によれば、翻訳コードの破棄による性能の低下期間を短縮することができる。
本発明の実施の形態における情報処理装置のハードウェア構成例を示す図である。 第一の実施の形態における情報処理装置の機能構成例を示す図である。 第一の実施の形態の情報処理装置が実行する処理手順の一例を説明するための図である。 第一の実施の形態の管理テーブルの構成例を示す図である。 第一の実施の形態の逐次解釈部の処理手順の一例を説明するためのフローチャートである。 第二の実施の形態の情報処理装置が実行する処理手順の一例を説明するための図である。 第二の実施の形態の逐次解釈部の処理手順の一例を説明するためのフローチャートである。 翻訳コードに不整合が発生する状況の一例を説明するための図である。 第三の実施の形態の管理テーブルの構成例を示す図である。 第三の実施の形態における情報処理装置の機能構成例を示す図である。 強制破棄フラグ記憶部の構成例を示す図である。 第三の実施の形態のGCの実行処理の処理手順の一例を説明するためのフローチャートである。 第三の実施の形態の逐次解釈部の処理手順の一例を説明するためのフローチャートである。 第四の実施の形態における情報処理装置の機能構成例を示す図である。 第四の実施の形態の翻訳コード破棄部の初期化処理の処理手順の一例を示す図である。 第四の実施の形態のGCの実行処理の処理手順の一例を説明するためのフローチャートである。 第四の実施の形態における翻訳部の処理手順の一例を説明するためのフローチャートである。 第四の実施の形態の逐次解釈部の処理手順の一例を説明するためのフローチャートである。 第五の実施の形態の逐次解釈部の処理手順の一例を説明するためのフローチャートである。
以下、図面に基づいて本発明の実施の形態を説明する。図1は、本発明の実施の形態における情報処理装置のハードウェア構成例を示す図である。図1の情報処理装置10は、それぞれバスBで相互に接続されているドライブ装置100、補助記憶装置102、メモリ装置103、CPU104、及びインタフェース装置105等を有する。
情報処理装置10での処理を実現するプログラムは、記録媒体101によって提供される。プログラムを記録した記録媒体101がドライブ装置100にセットされると、プログラムが記録媒体101からドライブ装置100を介して補助記憶装置102にインストールされる。但し、プログラムのインストールは必ずしも記録媒体101より行う必要はなく、ネットワークを介して他のコンピュータよりダウンロードするようにしてもよい。補助記憶装置102は、インストールされたプログラムを格納すると共に、必要なファイルやデータ等を格納する。
メモリ装置103は、プログラムの起動指示があった場合に、補助記憶装置102からプログラムを読み出して格納する。CPU104は、メモリ装置103に格納されたプログラムに従って情報処理装置10に係る機能を実行する。インタフェース装置105は、ネットワークに接続するためのインタフェースとして用いられる。
なお、記録媒体101の一例としては、CD−ROM、DVDディスク、又はUSBメモリ等の可搬型の記録媒体が挙げられる。また、補助記憶装置102の一例としては、HDD(Hard Disk Drive)又はフラッシュメモリ等が挙げられる。記録媒体101及び補助記憶装置102のいずれについても、コンピュータ読み取り可能な記録媒体に相当する。
図2は、第一の実施の形態における情報処理装置の機能構成例を示す図である。同図において、情報処理装置10は、逐次解釈部11、翻訳要求キュー12、翻訳部13、コードキャッシュ部14、及び翻訳コード破棄部15等を有する。逐次解釈部11、翻訳部13、及び翻訳コード破棄部15は、情報処理装置10にインストールされたプログラムがCPU104に実行させる処理によって実現される。翻訳要求キュー12、コードキャッシュ部14は、例えば、メモリ装置103を用いて実現可能である。
逐次解釈部11は、実行対象プログラムTpのソースコード又は中間的な表現(中間コード)の各命令を逐次的に解釈して実行する。実行対象プログラムTpは、本実施の形態において実行対象とされるプログラムが、メモリ装置103にロードされた状態のデータである。逐次解釈部11は、実行対象プログラムTpが含む命令ごとに、逐次解釈による当該命令の実行回数(すなわち、逐次解釈の実行回数)を計測する。逐次解釈部11は、実行回数が閾値以上となった命令が発生した場合、当該命令のアドレス(すなわち、実行対象プログラムTp内の位置情報)を指定して、翻訳要求を翻訳要求キュー12に入力する。翻訳要求キュー12は、翻訳要求をFIFO(First-In First-Out)のリスト構造で保持する。
なお、厳密には、実行回数は、実行対象プログラムTp内の各分岐命令の分岐先ごとに計測される。分岐命令間に含まれる命令群の実行回数は一致するため、命令ごとに実行回数を計測する必要はないからである。したがって、翻訳要求には、分岐先のアドレスが指定される。
翻訳部13は、翻訳要求キュー12より翻訳要求を取り出し、取り出された翻訳要求に指定されたアドレスに係る命令群を機械語によるネイティブコードに翻訳する。例えば、翻訳要求に指定されたアドレスに係る命令から次の分岐命令までの命令群(命令が一つの場合も含む。)が翻訳される。以下、翻訳部13によって翻訳された(又は生成された)コードを「翻訳コード」という。翻訳部13は、翻訳コードをコードキャッシュ部14に記憶する。
コードキャッシュ部14は、翻訳コードや、翻訳コードの管理情報を記憶するための管理テーブル等を記憶する。
翻訳コード破棄部15は、コードキャッシュ部14に関して、ガーベージコレクション(GC)を実行する。すなわち、翻訳コード破棄部15は、コードキャッシュ部14の空き領域を確保するため、コードキャッシュ部14が記憶する一部又は全部の翻訳コード及び一部又は全部の管理情報等を所定のタイミングで破棄(削除)する。
なお、逐次解釈部11は、「インタプリタ」と呼ばれるプログラムを用いて実現されてもよい。また、翻訳部13は、「ジャストインタイムコンパイラ(Just−In−Timeコンパイラ)」と呼ばれるプログラムを用いて実現されてもよい。更に、翻訳コード破棄部15は、「ガーベージコレクタ」と呼ばれるプログラムを用いて実現されてもよい。
以下、情報処理装置10が実行する処理手順について説明する。図3は、第一の実施の形態の情報処理装置が実行する処理手順の一例を説明するための図である。
実行対象プログラムTpがメモリ装置103にロードされ、実行対象プログラムTpの実行が開始されると、実行対象プログラムTpの終了まで、以下の処理手順が繰り返し実行される。
まず、逐次解釈部11は、実行対象プログラムTpより命令を読み出す(S1)。逐次解釈部11は、読み出された命令が分岐命令でなければ、当該命令を逐次的に解釈し、解釈結果をCPU104に実行させる(S2)。逐次解釈部11は、また、読み出された命令が分岐命令であり、分岐先のアドレスに関してコードキャッシュ部14に翻訳コードが生成されていない場合、分岐先のアドレスに係る命令を逐次的に解釈し、解釈結果をCPU104に実行させる(S2)。
一方、読み出された命令が分岐命令であり、かつ、分岐先のアドレスに関してコードキャッシュ部14に翻訳コードが生成されている場合、逐次解釈部11は、当該翻訳コードをCPU104に実行させる。(S3)。翻訳コードの実行が終了すると、逐次解釈部11に処理制御が復帰する(S4)。
なお、分岐先のアドレスに関して翻訳コードが生成されているか否かや、コードキャッシュ部14内における翻訳コードの位置(アドレス)は、例えば、コードキャッシュ部14内の管理テーブルを参照して判定される。
図4は、第一の実施の形態の管理テーブル14Taの構成例を示す図である。同図において、管理テーブル14Taは、アドレス、実行回数、翻訳済フラグ、翻訳先アドレス等を記憶する。
アドレスは、分岐先の命令のアドレスである。なお、アドレスは、管理テーブル14Taに含まれていなくてもよい。アドレスと管理テーブル14Taの各レコードとの対応付けが別途管理されていてもよい。実行回数は、当該アドレスに係る命令群の逐次的な実行回数である。翻訳済フラグは、当該アドレスに係る命令群に関して翻訳コードが生成されているか否かを示す情報である。例えば、「true」は、翻訳コードは生成されている(翻訳済である)ことを示し、「false」は、翻訳コードは生成されていれていない(翻訳済でない)ことを示す。翻訳先アドレスは、コードキャッシュ部14において、翻訳コードが記憶された位置(アドレス)を示す。また、実行回数は、コードキャッシュ部14外において(すなわち、管理テーブル14Ta外において)管理されてもよい。
したがって、逐次解釈部11は、管理テーブル14Taにおいて、分岐先のアドレスに対応する翻訳済みフラグがtrueであれば、分岐先のアドレスに関して翻訳コードは生成されていると判定する。この場合、逐次解釈部11は、当該アドレスに対応する翻訳先アドレスに基づいて、翻訳コードの記憶位置を特定する。
但し、翻訳済フラグの代わりに、翻訳先アドレスに基づいて、分岐先のアドレスに関して翻訳コードが生成されているか否かが判定されてもよい。すなわち、翻訳先アドレスに値が記録されている場合、分岐先のアドレスに関して翻訳コードは生成されていると判定されてもよい。この場合、管理テーブル14Taに翻訳済フラグは含まれていなくてもよい。
なお、逐次解釈部11は、ステップS2の実行時において、読み出された命令が分岐命令である場合、管理テーブル14Taにおいて、分岐先のアドレスに対応する実行回数に1を加算する。但し、分岐先のアドレスに対応するレコードが無い場合、逐次解釈部11は、当該アドレスに対応するレコードを管理テーブル14Taに追加し、当該レコードの実行回数に1を記録する。
1の加算の結果、実行回数が閾値以上となった場合、逐次解釈部11は、翻訳要求を翻訳要求キュー12に入力する(S5)。翻訳要求には、分岐先の命令のアドレスが指定される。なお、図3の翻訳キュー12内における各矩形は、翻訳要求を表現する。
翻訳部13は、翻訳要求キュー12に入力された翻訳要求を古い順に取り出す(S6)。翻訳部13は、取り出された翻訳要求に指定されたアドレスに係る命令群について翻訳処理を実行する(S7)。翻訳処理によって、当該命令群に関する翻訳コードが生成される。翻訳部13は、生成された翻訳コードをコードキャッシュ部14に記憶する(S8)。翻訳部13は、また、管理テーブル14Taにおいて、当該アドレスに対応する翻訳済フラグを「true」に更新し、当該アドレスに対応する翻訳先アドレスに、翻訳コードが記憶されたアドレスを記録する。
例えば、管理テーブル14Taに新たなレコードが追加され、又は新たな翻訳コードがコードキャッシュ部14に記憶され、コードキャッシュ部14の空き領域が所定量以下になると、翻訳コード破棄部15に対して、GCの実行が要求される(S11又はS12)。
翻訳コード破棄部15は、要求に応じ、GCを実行する(S13)。すなわち、翻訳コード破棄部15は、一部又は全部の翻訳コード、及び管理テーブル14Taの一部又は全部のレコードをコードキャッシュ部14より破棄(削除)する(S13)。その結果、破棄された翻訳コード又はレコードに使用されていたメモリ領域は解放される。
なお、破棄対象が一部の翻訳コードに限定される場合、管理テーブル14Taにおいて破棄されるレコードは、破棄対象の翻訳コードに対応するレコードである。すなわち、破棄対象の翻訳コードのアドレスを翻訳先アドレスとして含むレコードが破棄される。
続いて、翻訳コード破棄部15は、翻訳コード等を破棄した時刻(以下、「GC実行時刻」という。)を、例えば、メモリ装置103に記録する(S14)。
GC実行時刻は、逐次解釈部11が、実行回数に対する閾値を動的に変化させるために用いられる。すなわち、上述したステップS2において、逐次解釈部11は、GC実行時刻から所定期間においては、実質的又は相対的に当該閾値を低下させる。閾値が低下することにより、GC実行時刻から所定期間においては、通常より少ない実行回数でも、翻訳コードが生成されるようになる。したがって、実行頻度の高い命令群に関して、翻訳コードが再生成される時期を早めることができる。その結果、GCの実行による性能の低下期間の短縮化を期待することができる。
図3における逐次解釈部11の処理手順について、更に詳細に説明する。図5は、第一の実施の形態の逐次解釈部の処理手順の一例を説明するためのフローチャートである。なお、同図は、読み出された命令が分岐命令である場合の処理手順を示す。
ステップS110において、逐次解釈部11は、管理テーブル14Taを参照して、分岐先のアドレスに対する翻訳コードの有無を判定する。分岐先のアドレスに対応するレコードが管理テーブル14Taに有り、かつ、当該レコードの翻訳済フラグの値が「true」である場合、逐次解釈部11は、当該翻訳コードは有ると判定する。一方、分岐先のアドレスに対応するレコードが管理テーブル14Taに無い場合、又は当該レコードが管理テーブル14Taに有り、かつ、当該レコードの翻訳済フラグの値が「false」である場合、逐次解釈部11は、当該翻訳コードは無いと判定する。
当該翻訳コードが無い場合(S110でNo)、逐次解釈部11は、分岐先のアドレスの命令を逐次的に解釈し、解釈結果をCPU104に実行させる(S120)。続いて、逐次解釈部11は、管理テーブル14Taにおいて、分岐先のアドレスに対応する実行回数に1を加算する(S130)。但し、分岐先のアドレスに対応するレコードが無い場合、逐次解釈部11は、当該アドレスに対応するレコードを管理テーブル14Taに追加し、当該レコードの実行回数に1を記録する。なお、後述のステップS170における実行回数は、ステップS130において更新又は記録された実行回数である。
続いて、逐次解釈部11は、GC実行時刻がメモリ装置103に記録されているか否かを判定する(S140)。すなわち、実行対象プログラムTpの実行開始後において、GCが実行されたか否かが判定される。GC実行時刻がメモリ装置103に記録されている場合(すなわち、GCが実行されている場合)(S140でYes)、逐次解釈部11は、現在時刻とGC実行時刻の差分(すなわち、GC実行時刻からの経過時間)を算出する(S150)。算出結果は、変数after_gc_timeに代入される。一方、GC実行時刻がメモリ装置103に記録されていない場合(すなわち、GCが実行されていない場合)(S140でNo)、逐次解釈部11は、変数after_gc_timeにMAX_GC_TIMEを代入する(S160)。MAX_GC_TIMEは、GC実行後、実行回数に対する閾値を低下させる期間である。当該期間(MAX_GC_TIME)は、予め決定され、例えば、補助記憶装置102に記録されている。
ステップS150又はS160に続いて、逐次解釈部11は、以下の式(1)が閾値以上であるか否かを判定する(S170)。
MAX_GC_TIME×実行回数/min(after_gc_time,MAX_GC_TIME) ・・・(1)
ここで、min(x,y)は、xとyとの最小値を示す。したがって、after_gc_time<MAX_GC_TIMEの場合(すなわち、GC実行時刻からの経過時間がMAX_GC_TIME未満である場合)、min(after_gc_time,MAX_GC_TIME)の値は、after_gc_timeとなる。一方、after_gc_time≧MAX_GC_TIMEの場合(すなわち、GC実行時刻からの経過時間がMAX_GC_TIME以上である場合)、min(after_gc_time,MAX_GC_TIME)の値は、MAX_GC_TIMEとなる。
上記より、ステップS170では、GC実行時刻からの経過時間がMAX_GC_TIME未満である場合、式(1)の値は、実際の実行回数より大きな値となる。一方、GC実行時刻からの経過時間がMAX_GC_TIME以上である場合、式(1)の値は、実際の実行回数と一致する。したがって、GC実行時刻からの経過時間がMAX_GC_TIME未満である場合、当該経過時間が小さい程、閾値は実質的に小さくなる。一方、GC実行時刻からの経過時間がMAX_GC_TIME以上である場合、閾値は、本来の値となる。
式(1)の値が閾値以上である場合(S170でYes)、逐次解釈部11は、分岐先のアドレスが指定された翻訳要求を生成し、当該翻訳要求を翻訳要求キュー12に入力する(S180)。一方、式(1)の値が閾値未満である場合(S170でNo)、ステップS180は実行されない。
なお、分岐先のアドレスに対する翻訳コードが有る場合(S110でYes)、逐次解釈部11は、管理テーブル14Taにおいて、当該アドレスに対する翻訳先アドレスに記憶されている翻訳コードをCPU104に実行させる(S190)。
なお、上記では、GC実行時刻が記録される例を示したが、時刻を計測するタイマーが用いられてもよい。この場合、図3のステップS14において、翻訳コード破棄部15は、当該タイマーの値を0に初期化する。図5のステップS150において、逐次解釈部11は、その時のタイマーの値をafter_gc_timeに代入する。
次に、第二の実施の形態について説明する。第二の実施の形態では、第一の実施の形態と異なる点について説明する。したがって、特に言及しない点については、第一の実施の形態と同様でよい。
図6は、第二の実施の形態の情報処理装置が実行する処理手順の一例を説明するための図である。図6中、図3と同一部分には同一符号を付し、その説明は省略する。
図6では、図3のステップS14がステップS14aに置き換わっている。ステップS14aにおいて、翻訳コード破棄部15は、GC実行時(GC実行直後)における、コードキャッシュ部14の翻訳コードの残量(以下、「GC実行時翻訳コード量」という。)を、例えば、メモリ装置103に記録する。
GC実行時翻訳コード量は、逐次解釈部11が、実行回数に対する閾値を動的に変化させるために用いられる。すなわち、図6のステップS2において、逐次解釈部11は、GC実行時翻訳コード量から所定量の翻訳コードが生成されるまで(すなわち、GC実行後の翻訳量が所定量になるまで)は、実質的に当該閾値を低下させる。その結果、第一の実施の形態と同様の効果を得ることができる。このように、GC実行後の所定期間は、時刻ではなく、翻訳コード量等、時刻の経過に応じて変化する他の指標を用いて計測されてもよい。
第一の実施の形態における図5は、図7に示されるように置き換えられればよい。図7は、第二の実施の形態の逐次解釈部の処理手順の一例を説明するためのフローチャートである。図7中、図5と同一ステップには同一符号を付し、その説明は省略する。図7では、図5のステップS140、S150、S160、及びS170のそれぞれが、ステップS140a、S150a、S160a、又はS170aに置き換わっている。
ステップS140aにおいて、逐次解釈部11は、GC実行時翻訳コード量がメモリ装置103に記録されているか否かを判定する。GC実行時翻訳コード量がメモリ装置103に記録されている場合(すなわち、GCが実行されている場合)(S140aでYes)、逐次解釈部11は、現在のコードキャッシュ部14における翻訳コードの残量と、GC実行時翻訳コード量との差分(すなわち、GC実行時からの翻訳コード量)を算出する(S150a)。算出結果は、変数after_gc_volに代入される。
一方、一方、GC実行時翻訳コード量がメモリ装置103に記録されていない場合(すなわち、GCが実行されていない場合)(S140aでNo)、逐次解釈部11は、変数after_gc_volにMAX_GC_VOLを代入する(S160a)。上記において、第二の実施の形態では、GC実行後の翻訳量が所定量になるまで閾値が実質的に低下すると述べた。MAX_GC_VOLは、当該所定量を示す。MAX_GC_VOLは、予め決定され、例えば、補助記憶装置102に記録されている。
ステップS150a又はS160bに続いて、逐次解釈部11は、以下の式(2)が閾値以上であるか否かを判定する(S170a)。
MAX_GC_VOL×実行回数/min(after_gc_vol,MAX_GC_VOL) ・・・(2)
式(2)は、第一の実施の形態の式(1)におけるafter_gc_time及びMAX_GC_TIMEのそれぞれが、after_gc_vol又はMAX_GC_VOLに置換されたものである。したがって、GC実行時からの翻訳コード量がMAX_GC_VOL未満である場合、当該翻訳コード量が小さい程、閾値は実質的に小さくなる。一方、GC実行時刻からの経過時間がMAX_GC_VOL以上である場合、閾値は、本来の値となる。
なお、上記第一及び第二の実施の形態において、GC実行時時刻からの経過時間がMAX_GC_TIME未満である場合、又はGC実行時からの翻訳コード量がMAX_GC_VOL未満である場合において、式(1)又は式(2)の値は一定となるようにしてもよい。この場合、例えば、式(1)におけるafter_gc_time又は式(2)におけるafter_gc_volの値を、MAX_GC_TIME/n、又はMAX_GC_VOL/nとしてもよい。ここで、n>1である。その結果、GC実行時時刻からの経過時間がMAX_GC_TIME未満である場合、又はGC実行時からの翻訳コード量がMAX_GC_VOL未満である場合において、閾値の実質的な低下の程度は一定となる。
また、第一及び第二の実施の形態では、所定期間において命令の実行回数を過大評価されることにより、閾値が実質的に低下する例について説明したが、閾値それ自体が動的に変化するようにしてもよい。例えば、翻訳要求キュー12に蓄積されている翻訳要求の数に応じて閾値が変化してもよい。この場合、ステップS170又はS170aにおいて用いられる閾値は、例えば、以下の式(3)に基づいて算出される。
閾値=(翻訳要求キュー12に蓄積されている翻訳要求の数×定数A)+定数B ・・・(3)
例えば、定数A=1024、定数B=1が式(3)に当てはめられて、閾値が算出されてもよい。
次に、第三の実施の形態について説明する。第三の実施の形態では、第一の実施の形態と異なる点について説明する。したがって、特に言及しない点については、第一の実施の形態と同様でよい。
第三の実施の形態では、翻訳コードと実行対象プログラムTpとの間に不整合が発生する場合について考慮する。斯かる不整合の発生は、実行対象プログラムTpが、CPU104と異なるアーキテクチャのCPUのエミュレーションを実現するためのプログラムである場合に、特に顕在化する。すなわち、第三の実施の形態は、実行対象プログラムTp、逐次解釈部11、コードキャッシュ部14、及び翻訳コード翻訳コード破棄部15が、CPU104と異なるアーキテクチャのCPUをエミュレータとして機能する場合に好適である。但し、他の場合に第三の実施の形態が適用されてもよい。
翻訳コードの不整合は、例えば、図8に示されるような状況において発生する。図8は、翻訳コードに不整合が発生する状況の一例を説明するための図である。
同図では、自己書き換えの例が示されている。すなわち、実行対象プログラムTpの命令の実行(逐次的な実行又は当該命令を含む翻訳コードによる実行)により、実行対象プログラムTpの一部の命令Pが動的に書き換えられることがある。このように、プログラムが実行時に自分自身の命令を書き換えることを「自己書き換え」という。この場合、図8において、書き換えられた命令Pを含む翻訳コードCpは、実行対象プログラムTpの現在の状態と異なることになる。すなわち、翻訳コードCpに不整合が発生した状態となる。
不整合な翻訳コードCpの実行は、回避されなければならない。そこで、逐次解釈部11は、不整合な翻訳コードCpに対して無効であることを示す情報を関連付ける。当該情報を関連付けるため、第三の実施の形態の管理テーブル14Tは、例えば、図9に示されるような構成を有する。
図9は、第三の実施の形態の管理テーブルの構成例を示す図である。同図において、管理テーブル14Tbは、アドレスに関連付けて無効化フラグを記憶する。無効化フラグは、当該アドレスに係る翻訳コードが無効であるか否かを示す情報である。無効化フラグの初期値は「false」である。翻訳コードに不整合が発生した又は発生した可能性が有る場合、無効化フラグの値は「true」に更新される。翻訳コードに関して無効化フラグが「true」に更新されることを、本実施の形態において、翻訳コードの無効化という。
逐次解釈部11は、分岐先のアドレスに対する無効化フラグの値が「true」である場合、翻訳コードは実行対象とせずに、改めて、当該分岐先の命令を逐次的に実行する。
本実施の形態において、無効化フラグの更新は、逐次解釈部11によって行われる。或る翻訳コードに不整合が発生したことを検知するために、逐次解釈部11又は翻訳部13は、翻訳コードが生成された命令が属する実行対象プログラムTpのページに関して、ページテーブルのアクセス権として「読み込み可(ReadOnly)」を設定しておく。すなわち、当該ページに対する書き込みは禁止される。その後、実行対象プログラムTpの命令の実行により、当該ページに対して自己書き換えを実行しようとすると、アクセス違反に関する例外が発生する。逐次解釈部11は、当該例外を補足(キャッチ)するためのハンドラを介して、当該例外の発生を検知する。逐次解釈部11は、当該例外の発生を検知すると、当該例外によって通知されたアドレスを含むページに属する翻訳コードに係るアドレスに関して、管理テーブル14Tbの無効化フラグを「true」に更新する。
なお、翻訳コードの不整合は、新たなプロセスが生成された場合やスワッピングが発生した場合等において、仮想アドレスと物理アドレスとのマッピングの変更が必要となったときにも発生する。この場合に関しても、逐次解釈部11は、影響を受ける翻訳コードに関して無効化フラグを「true」にする。
ここで、無効化された翻訳コード及び無効化されていない(有効な)翻訳コードのそれぞれと、GCとの関係について説明する。無効化された翻訳コードは、不要な翻訳コードであり、今後使用することができない翻訳コードである。したがって、当該翻訳コードに関してGCが実行されることによる性能上の不利益は、相対的に小さいものと考えられる。一方、有効な翻訳コードは、今後も使用することができ、また、使用される可能性の有る翻訳コードである。したがって、当該翻訳コードに関してGCが実行されることによる性能上の不利益は、相対的に大きいものと考えられる。
以上に鑑みて、第三の実施の形態では、無効化された翻訳コードと有効な翻訳コードとの間で、GCの実行後の実行回数に対する閾値を変えることができるようにする。すなわち、有効な翻訳コードは、早期に復帰されるように、閾値が実質的に下げられる。
このような制御を実現するため、第三の実施の形態の情報処理装置10は、例えば、図10に示されるような機能構成を有する。
図10は、第三の実施の形態における情報処理装置の機能構成例を示す図である。同図において、情報処理装置10は、強制破棄フラグ記憶部16を更に有する。強制破棄フラグ記憶部16は、例えば、メモリ装置103又は補助記憶装置102を用いて実現可能である。
強制破棄フラグ記憶部16は、有効な翻訳コードであったが、GCの実行により強制的に破棄された翻訳コードを識別するための情報(以下、「強制破棄フラグ」という。)を記憶する。但し、翻訳コードごとに強制破棄フラグを管理するのは、管理情報の増加を招く。そこで、本実施の形態において、強制破棄フラグは、実行対象プログラムTpのページ単位に管理される。
図11は、強制破棄フラグ記憶部の構成例を示す図である。同図に示されるように、強制破棄フラグ記憶部16は、ページアドレスごとに強制破棄フラグを記憶する。ページアドレスは、ページの開始アドレスである。ページのサイズは決まっているため、開始アドレスに基づいて、各ページの範囲が特定される。なお、ページのサイズは、OS(Operating System)によって管理されるページのサイズと必ずしも一致していなくてもよい。
GC実行時に既に無効化されていた翻訳コードを含むページに関しては、強制破棄フラグに「false」が記録され、有効であった翻訳コードのみを含むページに関しては、強制破棄フラグに「true」が記録される。なお、強制破棄フラグは、当該翻訳コードの生成後に、実行対象プログラムTpにおいて当該翻訳コードに対応する命令が更新されていない翻訳コードを示す情報の一例である。
以下、第三の実施の形態の処理手順について説明する。図12は、第三の実施の形態のGCの実行処理の処理手順の一例を説明するためのフローチャートである。同図は、一回のGCにおいて(すなわち、図3のS13の一回の実行において)実行される処理である。
ステップS201において、翻訳コード破棄部15は、強制破棄フラグ記憶部16における、全てのページアドレスに対する強制破棄フラグを「false」に初期化する。続いて、翻訳コード破棄部15は、破棄対象の翻訳コード群を決定する(S202)。破棄対象の決定方法は、公知の方法が用いられればよい。一部の翻訳コードが破棄対象とされてもよいし、全部の翻訳コードが破棄対象とされてもよい。
破棄対象の翻訳コード群が有る場合(S203でYes)、翻訳コード破棄部15は、当該翻訳コード群のうちの一つの翻訳コードを処理対象(以下、「対象翻訳コード」という。)とする(S204)。続いて、翻訳コード破棄部15は、管理テーブル14Tbにおいて、対象翻訳コードに対応するレコードの無効化フラグを参照して、対象翻訳コードは無効化されているか否かを判定する(S205)。すなわち、無効化フラグが「ture」であるか「false」であるかが確認される。
対象翻訳コードが無効化されていない場合(S205でNo)、翻訳コード破棄部15は、実行対象プログラムTpのページの中で、対象翻訳コードが属するページのアドレスを求める(S206)。続いて、翻訳コード破棄部15は、強制破棄フラグ記憶部16において、当該ページのアドレスに対する強制破棄フラグの値を「true」に更新する(S207)。すなわち、対象翻訳コードに関して、対象翻訳コードの生成後、実行対象プログラムTpにおいて対象翻訳コードに対応する命令は更新されていないことを示す情報が強制破棄フラグ記憶部16に記録される。ここでいう更新とは、例えば、自己書き換え等による更新である。
続いて、翻訳コード破棄部15は、対象翻訳コード、及び管理テーブル14Tbにおいて対象翻訳コードに対応するレコード等をコードキャッシュ部14より破棄する(S208)。なお、対象翻訳コードが無効化されている場合(S205でYes)、強制破棄フラグの更新は行われずに、対象翻訳コード等に関して破棄が実行される(S209)。
続いて、翻訳コード破棄部15は、破棄対象の翻訳コード群に属する全ての翻訳コードについてステップS203以降を繰り返す。
図12の処理の結果、強制破棄フラグ記憶部16は、有効であった翻訳コードのみを含むページに関して「true」を記憶した状態となる。
続いて、第三の実施の形態の逐次解釈部11の処理手順について説明する。図13は、第三の実施の形態の逐次解釈部の処理手順の一例を説明するためのフローチャートである。図13中、図5と同一ステップには同一符号を付し、その説明は省略する。図13では、ステップS132及びS133が追加されている。
ステップS132において、逐次解釈部11は、分岐先アドレスを含むページに対する強制破棄フラグの値を強制破棄フラグ記憶部16より取得する。取得された強制破棄フラグの値が「true」である場合(S133でYes)、ステップS140以降が実行される。すなわち、GC実行後の一定期間において、閾値が実質的に下げられる。一方、取得された強制破棄フラグの値が「false」である場合(S133でNo)、ステップS160以降が実行される。すなわち、閾値の実質的な低下は行われない。
なお、図13のステップS140、S150、S160、及びS170のそれぞれは、図7のステップS140a、S150a、S160a、又はS170aに置き換えられてもよい。すなわち、第二の実施の形態と同様に、GC実行後の所定期間が、翻訳コード量によって計測されてもよい。
また、上記では、ページごとに強制破棄フラグが管理される例を示したが、翻訳コードごと(分岐先アドレスごと)に強制破棄フラグが管理されてもよい。この場合、より厳密に、無効化されていた翻訳コードと、有効であった翻訳コードとの閾値を実質的に変えることができる。
上述したように、第三の実施の形態によれば、使用される可能性が有った翻訳コードについて、使用される可能性の無い翻訳コードに比較して、GC実行後の復帰時期を早めることができる。その結果、翻訳コードの破棄による性能の低下期間を短縮することができる。
次に、第四の実施の形態について説明する。第四の実施の形態では、第一の実施の形態と異なる点について説明する。したがって、特に言及しない点については、第一の実施の形態と同様でよい。
図14は、第四の実施の形態における情報処理装置の機能構成例を示す図である。同図において情報処理装置10は、コードキャッシュ部14a及びコードキャッシュ部14bの二つのコードキャッシュ部14を有する。
コードキャッシュ部14a及びコードキャッシュ部14bは、第一の実施の形態のコードキャッシュ部14が二分割されたものでもよいし、第一の実施の形態のコードキャッシュ部14の二つに相当するものであってもよい。
以下、第四の実施の形態の処理手順について説明する。図15は、第四の実施の形態の翻訳コード破棄部の初期化処理の処理手順の一例を示す図である。同図の処理手順は、実行対象プログラムTpの一回の実行に関して、翻訳コード破棄部15が最初に起動される際に実行される。
ステップS301において、翻訳コード破棄部15は、コードキャッシュ部14aがカレントコードキャッシュであることをメモリ装置103に記録する。例えば、カレントコードキャッシュを特定するための変数に、コードキャッシュ部14aの先頭アドレスが代入される。なお、カレントコードキャッシュとは、使用対象とされるコードキャッシュ部14をいう。
図16は、第四の実施の形態のGCの実行処理の処理手順の一例を説明するためのフローチャートである。同図は、一回のGCにおいて(すなわち、図3のS13の一回の実行において)実行される処理である。
ステップS311において、翻訳コード破棄部15は、カレントコードキャッシュは、ラストコードキャッシュであることをメモリ装置103に記録する。例えば、カレントコードキャッシュを特定するための変数の値が、ラストコードキャッシュを特定するための変数に代入される。なお、ラストコードキャッシュとは、最後に使用されたコードキャッシュ部14をいう。
続いて、翻訳コード破棄部15は、コードキャッシュ部14a及びbのうち、ラストコードキャッシュでない方が、カレントコードキャッシュであることをメモリ装置103に記録する(S312)。すなわち、ステップS311及びS312では、カレントコードキャッシュとラストコードキャッシュとの入れ替えが行われる。具体的には、コードキャッシュ部14a及びbのうち、前回のGC実行時から現時点までに使用対象でなかった方が、使用対象(カレントコードキャッシュ)とされる。
続いて、翻訳コード破棄部15は、カレントコードキャッシュについてGCを実行する(S313)。
例えば、図16の開始時点において、コードキャッシュ部14aがカレントコードキャッシュであったとする。コードキャッシュ部14aは、GCが実行されるまで使用されていたため、翻訳コードが記録され、管理テーブル14Tに対する記録等も行われている。
ステップS311及びS312の実行により、コードキャッシュ部14aはラストコードキャッシュとなり、コードキャッシュ部14bがカレントコードキャッシュとなる。したがって、ステップS313では、コードキャッシュ部14bが、GCの対象とされる。その結果、コードキャッシュ部14aに対する記録内容は、退避(又は保存)された状態となる。
このように、第四の実施の形態では、GCまでにカレントコードキャッシュに対して行われた記録内容が退避される。
続いて、図17は、第四の実施の形態における翻訳部の処理手順の一例を説明するためのフローチャートである。図17中、図3と同一ステップ(S6、S7)には同一ステップ番号を付し、その説明は省略する。
図17では、ステップS8の代わりにステップS8aが実行される。ステップS8aにおいて、翻訳部13は、生成された翻訳コードをカレントコードキャッシュに記憶する。また、翻訳部13は、カレントコードキャッシュの管理テーブル14Tにおいて、翻訳要求に指定されたアドレスに対応する翻訳済フラグを「true」に更新し、当該アドレスに対応する翻訳先アドレスに、翻訳コードが記憶されたアドレスを記録する。
続いて、図18は、第四の実施の形態の逐次解釈部の処理手順の一例を説明するためのフローチャートである。図18中、図5と同一ステップには同一符号を付し、その説明は省略する。図13では、ステップS110がステップS110aに置き換えられ、ステップS131が追加されている。
ステップS110aにおいて、逐次解釈部11は、カレントコードキャッシュの管理テーブル14Taを参照して、分岐先のアドレスに対する翻訳コードの有無を判定する。
また、ステップS131において、逐次解釈部11は、ラストコードキャッシュの管理テーブル14Taを参照して、分岐先のアドレスに対する翻訳コードの有無を判定する。ラストコードキャッシュに当該翻訳コードが有る場合(S131でYes)、ステップS140以降が実行される。すなわち、GC実行後の一定期間において、閾値が実質的に下げられる。一方、ラストコードキャッシュに当該翻訳コード無い場合(S131でNo)、ステップS160以降が実行される。すなわち、閾値の実質的な低下は行われない。
なお、図18のステップS140、S150、S160、及びS170のそれぞれは、図7のステップS140a、S150a、S160a、又はS170aに置き換えられてもよい。すなわち、第二の実施の形態と同様に、GC実行後の所定期間が、翻訳コード量によって計測されてもよい。
なお、上記では、カレントコードキャッシュ及びラストコードキャッシュに関して、コードキャッシュ部14a及びコードキャッシュ部14bを入れ替えることにより、カレントコードキャッシュの記憶内容を退避する例について説明した。但し、コードキャッシュ部14aが常に使用対象(カレントコードキャッシュ)とされてもよい。この場合、図16のステップS311及びS312の代わりに、コードキャッシュ部14aの内容が、コードキャッシュ部14bにコピーされる処理が実行されればよい。その結果、GC前のコードキャッシュ部14aの内容を退避することができる。なお、退避対象は、カレントコードキャッシュの記憶内容の全部でなくてよい。翻訳コードが生成されていた命令群を識別可能な情報が退避されればよい。本実施の形態では、管理テーブル14Taにおけるアドレスの値が退避されればよい。
上述したように、第四の実施の形態によれば、過去に翻訳コードが生成されている命令群に関して、実質的に閾値を低下させることができる。したがって、斯かる命令群の翻訳を優先させることができる。過去に翻訳コードが生成されている命令群は、以降の実行頻度も高い傾向にある。したがって、斯かる命令群の翻訳コードの再生成が早期化されることにより、翻訳コードの破棄による性能の低下期間を短縮することができる。
また、全ての命令群に関して一律に閾値が低下される場合に比べて、翻訳コード量の増大を抑制することができる。
なお、ステップS131において、分岐先のアドレスに対する翻訳コードの有無のみではなく、分岐先アドレスに対する実行回数が閾値α以上であるか否かが判定されてもよい。当実行回数が閾値α以上であれば、ステップS140以降が実行され、閾値α未満であれば、ステップS160以降が実行されるようにしてもよい。そうすることで、より実行頻度の高い命令群に翻訳対象を限定することができる。この場合、退避対象には、管理テーブル14Taにおけるアドレスの値に加えて、実行回数の値が含まれるようにすればよい。また、閾値αは、ステップS170において利用される閾値と同じであってもよいし、異なっていてもよい。
次に、第五の実施の形態について説明する。第五の実施の形態は、第三の実施の形態と第四の実施の形態とを組み合わせたものである。したがって、逐次解釈部11は、図19に示される処理を実行する。
図19は、第五の実施の形態の逐次解釈部の処理手順の一例を説明するためのフローチャートである。図19は、図18のステップS131の後に、図16のステップS132及びS133が追加されたものである。同図の処理手順は、図16及び図18等より自明であるため省略する。
第五の実施の形態によれば、第三及び第四の実施の形態の双方の効果を得ることができる。
なお、上記各実施の形態において、翻訳部13は、生成部の一例である。翻訳コード破棄部15は、破棄部の一例である。コードキャッシュ部14は、第一の記憶部の一例である。強制破棄フラグ記憶部16は、第二の記憶部の一例である。
以上、本発明の実施例について詳述したが、本発明は斯かる特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
以上の説明に関し、更に以下の項を開示する。
(付記1)
実行対象プログラムに含まれる命令のうち、逐次解釈による実行回数が閾値以上となった命令の翻訳コードを生成して第一の記憶部に記憶し、
所定のタイミングで前記翻訳コードの一部又は全部を前記第一の記憶部より破棄する処理をコンピュータが実行し、
前記生成する処理は、前記翻訳コードが破棄されてから所定期間において、前記閾値を前記実行回数に対して相対的に低下させる
ことを特徴とする命令処理方法。
(付記2)
前記破棄する処理は、破棄対象の前記翻訳コードの中で、当該翻訳コードの生成後に前記実行対象プログラムにおいて当該翻訳コードに対応する命令が更新されていない翻訳コードを示す情報を第二の記憶部に記憶し、
前記生成する処理は、前記第二の記憶部が記憶する情報が示す前記翻訳コードに関して、破棄されてからの所定期間において前記閾値を低下させる付記1記載の命令処理方法。
(付記3)
前記破棄する処理は、前記第一の記憶部が前記翻訳コードに関連付けて記憶する該翻訳コードに対応する命令の識別情報を退避し、
前記生成する処理は、退避されている前記識別情報に係る命令に関して、破棄されてからの所定期間において前記閾値を低下させる付記1又は2記載の命令処理方法。
(付記4)
実行対象プログラムに含まれる命令のうち、逐次解釈による実行回数が閾値以上となった命令の翻訳コードを生成して第一の記憶部に記憶する生成部と、
所定のタイミングで前記翻訳コードの一部又は全部を前記第一の記憶部より破棄する破棄部とを有し、
前記生成部は、前記翻訳コードが破棄されてから所定期間において、前記閾値を前記実行回数に対して相対的に低下させる命令処理装置。
(付記5)
前記破棄部は、破棄対象の前記翻訳コードの中で、当該翻訳コードの生成後に前記実行対象プログラムにおいて当該翻訳コードに対応する命令が更新されていない翻訳コードを示す情報を第二の記憶部に記憶し、
前記生成部は、前記第二の記憶部が記憶する情報が示す前記翻訳コードに関して、破棄されてからの所定期間において前記閾値を低下させる付記4記載の命令処理装置。
(付記6)
前記破棄部は、前記第一の記憶部が前記翻訳コードに関連付けて記憶する該翻訳コードに対応する命令の識別情報を退避し、
前記生成部は、退避されている前記識別情報に係る命令に関して、破棄されてからの所定期間において前記閾値を低下させる付記4又は5記載の命令処理装置。
(付記7)
実行対象プログラムに含まれる命令のうち、逐次解釈による実行回数が閾値以上となった命令の翻訳コードを生成して第一の記憶部に記憶し、
所定のタイミングで前記翻訳コードの一部又は全部を前記第一の記憶部より破棄する処理をコンピュータに実行させ、
前記生成する処理は、前記翻訳コードが破棄されてから所定期間において、前記閾値を前記実行回数に対して相対的に低下させる命令処理プログラム。
(付記8)
前記破棄する処理は、破棄対象の前記翻訳コードの中で、当該翻訳コードの生成後に前記実行対象プログラムにおいて当該翻訳コードに対応する命令が更新されていない翻訳コードを示す情報を第二の記憶部に記憶し、
前記生成する処理は、前記第二の記憶部が記憶する情報が示す前記翻訳コードに関して、破棄されてからの所定期間において前記閾値を低下させる付記7記載の命令処理プログラム。
(付記9)
前記破棄する処理は、前記第一の記憶部が前記翻訳コードに関連付けて記憶する該翻訳コードに対応する命令の識別情報を退避し、
前記生成する処理は、退避されている前記識別情報に係る命令に関して、破棄されてからの所定期間において前記閾値を低下させる付記7又は8記載の命令処理プログラム。
10 情報処理装置
11 逐次解釈部
12 翻訳要求キュー
13 翻訳部
14 コードキャッシュ部
15 翻訳コード破棄部
16 強制破棄フラグ記憶部
100 ドライブ装置
101 記録媒体
102 補助記憶装置
103 メモリ装置
104 CPU
105 インタフェース装置
B バス

Claims (5)

  1. 実行対象プログラムに含まれる命令のうち、逐次解釈による実行回数が閾値以上となった命令の翻訳コードを生成して第一の記憶部に記憶し、
    所定のタイミングで前記翻訳コードの一部又は全部を前記第一の記憶部より破棄する処理をコンピュータが実行し、
    前記生成する処理は、前記翻訳コードが破棄されてから所定期間において、前記閾値を前記実行回数に対して相対的に低下させる
    ことを特徴とする命令処理方法。
  2. 前記破棄する処理は、破棄対象の前記翻訳コードの中で、当該翻訳コードの生成後に前記実行対象プログラムにおいて当該翻訳コードに対応する命令が更新されていない翻訳コードを示す情報を第二の記憶部に記憶し、
    前記生成する処理は、前記第二の記憶部が記憶する情報が示す前記翻訳コードに関して、破棄されてからの所定期間において前記閾値を低下させる請求項1記載の命令処理方法。
  3. 前記破棄する処理は、前記第一の記憶部が前記翻訳コードに関連付けて記憶する該翻訳コードに対応する命令の識別情報を退避し、
    前記生成する処理は、退避されている前記識別情報に係る命令に関して、破棄されてからの所定期間において前記閾値を低下させる請求項1又は2記載の命令処理方法。
  4. 実行対象プログラムに含まれる命令のうち、逐次解釈による実行回数が閾値以上となった命令の翻訳コードを生成して第一の記憶部に記憶する生成部と、
    所定のタイミングで前記翻訳コードの一部又は全部を前記第一の記憶部より破棄する破棄部とを有し、
    前記生成部は、前記翻訳コードが破棄されてから所定期間において、前記閾値を前記実行回数に対して相対的に低下させる命令処理装置。
  5. 実行対象プログラムに含まれる命令のうち、逐次解釈による実行回数が閾値以上となった命令の翻訳コードを生成して第一の記憶部に記憶し、
    所定のタイミングで前記翻訳コードの一部又は全部を前記第一の記憶部より破棄する処理をコンピュータに実行させ、
    前記生成する処理は、前記翻訳コードが破棄されてから所定期間において、前記閾値を前記実行回数に対して相対的に低下させる命令処理プログラム。
JP2011061324A 2011-03-18 2011-03-18 命令処理方法、命令処理装置、及び命令処理プログラム Active JP5614348B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2011061324A JP5614348B2 (ja) 2011-03-18 2011-03-18 命令処理方法、命令処理装置、及び命令処理プログラム
US13/421,419 US8856761B2 (en) 2011-03-18 2012-03-15 Instruction processing method, instruction processing apparatus, and instruction processing program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2011061324A JP5614348B2 (ja) 2011-03-18 2011-03-18 命令処理方法、命令処理装置、及び命令処理プログラム

Publications (2)

Publication Number Publication Date
JP2012198657A JP2012198657A (ja) 2012-10-18
JP5614348B2 true JP5614348B2 (ja) 2014-10-29

Family

ID=46829427

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011061324A Active JP5614348B2 (ja) 2011-03-18 2011-03-18 命令処理方法、命令処理装置、及び命令処理プログラム

Country Status (2)

Country Link
US (1) US8856761B2 (ja)
JP (1) JP5614348B2 (ja)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9672019B2 (en) 2008-11-24 2017-06-06 Intel Corporation Systems, apparatuses, and methods for a hardware and software system to automatically decompose a program to multiple parallel threads
US10621092B2 (en) 2008-11-24 2020-04-14 Intel Corporation Merging level cache and data cache units having indicator bits related to speculative execution
WO2013048468A1 (en) 2011-09-30 2013-04-04 Intel Corporation Instruction and logic to perform dynamic binary translation
EP2972782A1 (en) * 2013-03-15 2016-01-20 Intel Corporation Path profiling using hardware and software combination
US9891936B2 (en) * 2013-09-27 2018-02-13 Intel Corporation Method and apparatus for page-level monitoring
JP6103541B2 (ja) 2014-03-18 2017-03-29 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation バイナリコードの実行を制御する装置及び方法
GB2533575A (en) * 2014-12-22 2016-06-29 Ibm Elapsed time indications for source code in development environment
US10635465B2 (en) * 2015-03-28 2020-04-28 Intel Corporation Apparatuses and methods to prevent execution of a modified instruction
US20160306847A1 (en) * 2015-04-15 2016-10-20 Futurewei Technologies, Inc. Apparatus and Method for Using Parameterized Intermediate Representation for Just-In-Time Compilation in Database Query Execution Engine
US10282182B2 (en) 2016-09-23 2019-05-07 Intel Corporation Technologies for translation cache management in binary translation systems
US11182205B2 (en) * 2019-01-02 2021-11-23 Mellanox Technologies, Ltd. Multi-processor queuing model

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5995754A (en) * 1997-10-06 1999-11-30 Sun Microsystems, Inc. Method and apparatus for dynamically optimizing byte-coded programs
US6189141B1 (en) * 1998-05-04 2001-02-13 Hewlett-Packard Company Control path evaluating trace designator with dynamically adjustable thresholds for activation of tracing for high (hot) activity and low (cold) activity of flow control
JP3280322B2 (ja) * 1998-05-15 2002-05-13 インターナショナル・ビジネス・マシーンズ・コーポレーション コンパイル方法、フレーム検出方法及び装置、コード破棄方法、並びにコンピュータ
GB9813592D0 (en) 1998-06-25 1998-08-19 Philips Electronics Nv Dynamic memory space allocation
ATE457492T1 (de) * 1998-10-10 2010-02-15 Ibm Programmkodekonvertierung mit verringerter übersetzung
GB9825102D0 (en) 1998-11-16 1999-01-13 Insignia Solutions Plc Computer system
US6470492B2 (en) * 1999-05-14 2002-10-22 Hewlett-Packard Company Low overhead speculative selection of hot traces in a caching dynamic translator
US7577951B2 (en) * 2002-05-30 2009-08-18 Hewlett-Packard Development Company, L.P. Performance of computer programs while they are running
US7103723B2 (en) * 2003-02-25 2006-09-05 Intel Corporation Priority-based code cache management

Also Published As

Publication number Publication date
US8856761B2 (en) 2014-10-07
US20120239912A1 (en) 2012-09-20
JP2012198657A (ja) 2012-10-18

Similar Documents

Publication Publication Date Title
JP5614348B2 (ja) 命令処理方法、命令処理装置、及び命令処理プログラム
US8874877B2 (en) Method and apparatus for preparing a cache replacement catalog
Zhang et al. Fast restore of checkpointed memory using working set estimation
US10558569B2 (en) Cache controller for non-volatile memory
EP3182291A1 (en) System and method for exclusive read caching in a virtualized computing environment
JP5063152B2 (ja) 代替ページのプールを使用してdma書込みページ障害をコンピュータにより管理するための方法、装置、及びコンピュータ・プログラム
WO2012016783A1 (en) A method of managing computer memory, corresponding computer program product; and data storage device therefor
JP7058020B2 (ja) データ・ストレージ・システムにおけるコピー・ソース・ツー・ターゲット管理のための方法、システム及びコンピュータ・プログラム
JP2009026081A (ja) メモリ管理方法、情報処理装置及びメモリ管理プログラム
EP4042305A1 (en) Resource management unit for capturing operating system configuration states and managing malware
US9507657B2 (en) Investigation program, information processing apparatus, and information processing method
US9870400B2 (en) Managed runtime cache analysis
JP2005316632A (ja) キャッシュ制御およびデータ処理システム並びにその処理プログラム
US9141543B1 (en) Systems and methods for writing data from a caching agent to main memory according to a pre-clean criterion
KR20120098068A (ko) 플래시 메모리 배드 블록 관리 장치 및 방법
US20170262328A1 (en) Information processing system, information processing apparatus, information processing method, and computer-readable non-transitory storage medium
US9513824B2 (en) Control method, control device, and recording medium
TW202314498A (zh) 用於記憶體管理機會與記憶體交換任務之運算系統及管理其之方法
US20170039110A1 (en) Computer
US20190236076A1 (en) Computer and cache control method
JP4701611B2 (ja) 動的変換方式のエミュレータ向けメモリ管理方法
US20130019063A1 (en) Storage controller cache page management
JP4371043B2 (ja) ストレージシステム、スナップショット制御方法およびプログラム
US7305661B1 (en) Mechanism for lossless tracing in an architecture having a delay slot
JP5246014B2 (ja) 仮想化プログラム、仮想化処理方法及び装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20131129

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140716

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140825

R150 Certificate of patent (=grant) or registration of utility model

Ref document number: 5614348

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150