JP6834457B2 - エミュレーション性能算出装置、エミュレーション性能算出システム、エミュレーション性能算出方法、および、エミュレーション性能算出プログラム - Google Patents

エミュレーション性能算出装置、エミュレーション性能算出システム、エミュレーション性能算出方法、および、エミュレーション性能算出プログラム Download PDF

Info

Publication number
JP6834457B2
JP6834457B2 JP2016246188A JP2016246188A JP6834457B2 JP 6834457 B2 JP6834457 B2 JP 6834457B2 JP 2016246188 A JP2016246188 A JP 2016246188A JP 2016246188 A JP2016246188 A JP 2016246188A JP 6834457 B2 JP6834457 B2 JP 6834457B2
Authority
JP
Japan
Prior art keywords
performance
emulation
instruction
execution
program
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
JP2016246188A
Other languages
English (en)
Other versions
JP2018101233A (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.)
NEC Corp
Original Assignee
NEC Corp
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 Corp filed Critical NEC Corp
Priority to JP2016246188A priority Critical patent/JP6834457B2/ja
Publication of JP2018101233A publication Critical patent/JP2018101233A/ja
Application granted granted Critical
Publication of JP6834457B2 publication Critical patent/JP6834457B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)

Description

本発明は、エミュレーション性能算出装置、エミュレーション性能算出システム、エミュレーション性能算出方法、および、エミュレーション性能算出プログラム特に、動的変換方式でエミュレーションした時の性能に関する。
エミュレーションは、或るコンピュータ上で動作するソフトウェアのバイナリコードを、アーキテクチャの異なる別のコンピュータ上で動作させる。エミュレーションの手法として、元のバイナリコードを、動作させたいコンピュータ上で実行中に適宜解釈し、実行可能な形式に動的変換(コンパイルともいう)しながら動作させる手法が特許文献1に開示されている。
図11は、動的変換方式のエミュレーションの流れを説明する図である。動的変換方式のエミュレーションの処理の流れは、以下のようになる。
a)エミュレータは、初回実行時、実行開始アドレス(addr_A)から数個の命令( A )を読み出す。
b)エミュレータは、動的コンパイルを行ってTC(TC_A)を作成し、TC管理テーブルに登録する。ここで、TC(Translated Code)は、動的コンパイルで変換されたコードである。
c)エミュレータは、アドレスを、A → B → C …と順次ずらしながら命令を取り出して、TCを作成しながら、順次実行する。
d)過去に実行済みで、既にTCが作成・登録されていれば、エミュレータは、当該TCを実行する。
特許文献1は、動的変換方式のエミュレーション動作中に、実行頻度の高い部分との命令キャッシュ競合を避けるメモリ管理方法を開示する。
特許文献2は、命令シミュレート中に分岐が発生した時に出力される分岐トレースに基づき、プログラムに含まれる基本ブロックを決定し、基本ブロック単位で実行回数とサイクル数を出力するパフォーマンスアナライザを開示する。
特許文献3は、命令列をシミュレートし、分岐命令の分岐予測結果、および、シミュレートにおける遅延時間とから、プロセッサ方式性能の評価値を算出する、プロセッサ方式性能予測装置を開示する。
特開2005-202614号公報 特開2004-030514号公報 特開平10-320246号公報
動的変換方式のエミュレーションは、一度実行され、既にコンパイルされたコードを再度実行する場合には高速な動作が期待できる。一方、このエミュレーションは、初めて命令を実行するとき、動的なコンパイル処理を行う必要があり、そのオーバヘッドが大きいため動作が低速となる。
動的コンパイル処理の発生割合は、プログラムを実際にエミュレーション環境で実行してみなければが分からず、事前に正しく見積もることは困難である。そのため、このエミュレーションにより実行されるプログラムの実行性能は、事前に見積もることが困難である。
バイナリコードやソースコードを調査することでソフトウェアの構造を解析し、定性的な性能を推定することは可能と考えられる。しかし、プログラムを実際にエミュレータで実行してみると、システムの設定やパラメータの指定など、さまざまな要因で動作が変わり、エミュレーション動作時の実行性能を高い精度で推定することは困難である。オペレーティングシステムが呼び出された場合なども考慮すると、その推定はさらに困難になる。
本発明は、上記課題を解決し、動的変換方式のエミュレーション動作時の実行性能を、対象プログラムをエミュレーションで実行する前に見積もることを可能とする装置等を提供することを目的とする。
本発明の1実施の形態のエミュレーション性能算出装置は、入力されたプログラムを実行して、実行した命令数であるステップ数をカウントするプロセッサと、実行された命令のトレース情報に基づいて、前記プログラムの命令中、1度でも実行されたことが有る命令が格納されている連続アドレスの区間を取得する連続実行区間抽出手段と、1)前記ステップ数と、与えられた命令ごとのエミュレーション性能に基づいて実行性能を見積もり、2)前記アドレス区間内の命令数を得て、当該命令数と、与えられた命令ごとの変換性能に基づいて変換性能を見積もり、3)両者から、前記プログラムを動的変換方式でエミュレーションした時の実行性能見積りを算出する性能算出手段と、を備える。
本発明の1実施の形態のエミュレーション性能算出方法は、実行された命令のトレース情報に基づいて、前記プログラムの命令中、1度でも実行されたことが有る命令が格納されている連続アドレスの区間を取得し、1)前記ステップ数と、与えられた命令ごとのエミュレーション性能に基づいて実行性能を見積もり、2)前記アドレス区間内の命令数を得て、当該命令数と、与えられた命令ごとの変換性能に基づいて変換性能を見積もり、3)両者から、前記プログラムを動的変換方式でエミュレーションした時の実行性能見積りを算出する。
本発明の1実施の形態のエミュレーション性能算出プログラムは、実行された命令のトレース情報に基づいて、実行されたプログラムの命令中、1度でも実行されたことが有る命令が格納されている連続アドレスの区間を取得する連続実行区間抽出処理と、1)前記プログラムを実行して得られたステップ数と、与えられた命令ごとのエミュレーション性能に基づいて実行性能を見積もり、2)前記アドレス区間内の命令数を得て、当該命令数と、与えられた命令ごとの変換性能に基づいて変換性能を見積もり、3)両者から、前記プログラムを動的変換方式でエミュレーションした時の実行性能見積りを算出する性能算出処理と、をコンピュータに実行させる。
本発明にかかるエミュレーション性能算出装置は、動的変換方式のエミュレーション動作時の実行性能を事前に見積もることを可能とする。
図1は、プログラムの実行時に採取されるトレース情報の例を示す図である。 図2は、エミュレーション性能算出装置100が行う連続実行区間を識別と統合の例を示す図である。 図3は、第1の実施の形態にかかるエミュレーション性能見算出システム500の構成を示すブロック図である。 図4は、第1の実施の形態にかかるエミュレーション性能算出装置100の構成を示すブロック図である。 図5は、CPU/FW10の動作フローチャートである。 図6は、連続実行区間抽出部30の動作フローチャートである。 図7は、性能算出部50の動作フローチャートである。 図8は、第2の実施の形態にかかるエミュレーション性能算出装置100の構成を示すブロック図である。 図8は、第5の実施の形態にかかるエミュレーション性能算出装置100の構成を示すブロック図である。 図8は、第6の実施の形態にかかるエミュレーション性能算出装置100の構成を示すブロック図である。 図11は、動的変換方式のエミュレーションの流れを説明する図である。
<第1の実施の形態>
<概要>
本実施の形態にかかるエミュレーション性能算出装置100は、性能算出の対象のソフトウェアを「元の」(本来の)コンピュータである自装置上で実際に動作させ、分岐命令のトレースを採取する。ここで、「元の」コンピュータとは、性能算出の対象のソフトウェアの命令を、エミュレーションを必要とせず直接実行するコンピュータを意味する。
具体的に、エミュレーション性能算出装置100は、分岐命令実行時、処理がジャンプする(分岐GO)場合に、当該分岐命令自身のアドレス、及び、分岐先のアドレスをセットで採取する。ここで、分岐GOは、分岐命令が格納されているアドレスの次のアドレス以外の命令にジャンプすることを意味する。
図1は、プログラムの実行時に採取されるトレース情報の例を示す図である。図1のA)に示すプログラムは、アドレス(以降、addrと略記する)AからaddrBまで順次実行され、addrBでaddrCに分岐し(図1のA)中aの分岐)、その後、addrCからaddrEまでのループを9回実行されている(図中bの分岐)。最後に、プログラムは、ループ途中のaddrDで分岐して(図中cの分岐)ループを脱出している。
図1のB)は、この時取得されるトレース情報を示している。図1のA)のそれぞれの分岐に対し、分岐命令のアドレスと分岐先のアドレスのセットが、分岐した回数分記録されている。例えば、図1のA)中bで示す、9回実行されるループ内の戻りの分岐に対し、分岐命令のアドレスE(ループの終点)と分岐先のアドレスC(ループの始点)のセットが9回分記録されている。
この時、既に出力された一つ前のトレースの「分岐先のアドレス」から、今回出力されたトレースの「分岐命令のアドレス」までが、連続して実行された区間である。連続して実行された区間は、例えば、addrCからaddrE、addrCからaddrD、である。なお、開始点addrAから最初の分岐命令アドレスであるaddrBも連続して実行された区間である。
エミュレーション性能算出装置100は、出力されたトレース情報から、このように連続実行区間を識別し、統合する。ここで、統合は識別された各連続実行区間の和集合を生成することである。
図2は、エミュレーション性能算出装置100が行う連続実行区間を識別と統合の例を示す図である。エミュレーション性能算出装置100は、図2に示す、図1のA)のプログラム実行で採取されたトレース情報のから、a(addrAからaddrB+Δ)、b(addrCからaddrE+Δ)、および、c(addrCからaddrD+Δ)の3区間を識別し、その和集合をとって、aとbの2区間からなる連続実行区間を得る。すなわち、エミュレーション性能算出装置100は、アドレスが重複する区間cを区間bに統合する。
なお、ここで、Δは、連続区間の最後の命令長である。トレース情報は、命令の先頭アドレスを取得するので、区間長を得るために命令長が加算されている。命令長は、誤差範囲として無視されても良い。
和集合を取って得た連続実行区間は、一度でも実行されたことが有る命令が占める領域の区間である。このように得られた連続実行区間は、それぞれ、初回実行時のみ動的コンパイルが動作する。
そのため、トレース採取開始から終了までの動的コンパイルの発生回数は、以下の式(1)で、発生頻度は以下の式(2)で算出できる。
動的コンパイルの発生回数=連続実行区間の合計サイズ/平均命令長・・・(1)

発生頻度=動的コンパイル発生回数/実行された命令数・・・・(2)

実行された命令数(ステップ数とかダイナミックステップ数と呼ばれることも有る)や、平均命令長は計測または算出が可能であるため、連続実行区間がわかれば、動的コンパイルの発生回数や頻度も算出可能である。
本実施の形態のエミュレーション性能算出システム500は、サンプルプログラム301を用いて、エミュレーション環境での動的コンパイル処理時間、及び、変換したコード実行時の単位実行時間を予め測定しておく。その後、エミュレーション性能算出システム500は、性能算出の対象のソフトウェアを元の(エミュレーションを必要としない)コンピュータで実際に動作させる。そして、エミュレーション性能算出システム500は、上記方法で、実行命令数を計測し、動的コンパイル発生回数と頻度を算出することで、エミュレーション動作時の実行性能を以下の式(3)、または、式(4)で算出する。
実行時間見積り=実行命令数×変換コード実行時間+
動的コンパイル発生回数×動的コンパイル処理時間・・・・(3)

実行時間見積り=実行命令数×変換コード実行時間+
実行命令数×動的コンパイル発生頻度×動的コンパイル処理時間・・・・(4)

<構成>
図3は、第1の実施の形態にかかるエミュレーション性能算出システム500の構成を示すブロック図である。エミュレーション性能算出システム500は、ネットワーク400で接続されたエミュレーション装置300と、エミュレーション性能算出装置100を包含する。
エミュレーション装置300は、サンプルプログラム301をエミュレーション部302でエミュレーションし、エミュレーション性能値、例えば、動的コンパイル処理時間、及び、変換したコード実行時の単位実行時間を計測部303で測定する。測定値は、例えば、ネットワーク400を経由して、エミュレーション性能算出装置100に送信される。
エミュレーション装置300は、サンプルプログラム301とは異なる命令セットを持っている。エミュレーション部302は、動的変換方式のエミュレーションを行い、性能算出が行われるプログラムコード13のサービス適用時に使用されるエミュレータと同じようにエミュレーションを行う。
図4は、第1の実施の形態にかかるエミュレーション性能算出装置100の構成を示すブロック図である。なお、図中の矢印は、データ参照・更新例を示すが、データ参照・更新は、これらに限られない。
エミュレーション性能算出装置100は、エミュレーション実行性能を求めるプログラムコード13の、元の(本来の)アーキテクチャで動作するコンピュータである。
エミュレーション性能算出装置100は、CPU/FW10(Central Processing Unit / Firmware)と、分岐命令トレース格納部20と、連続実行区間抽出部30と、連続実行区間格納部40と、性能値算出部50と、サンプル性能格納部60と、を備える。
CPU/FW10は、分岐命令トレース採取・出力部11と、実行命令数カウンタ12と、を備える。CPU/FW10は、与えられたプログラムコード13を実行し、その過程で計測して実行命令数カウンタ12で実行命令数をカウントする。さらに、分岐命令トレース採取・出力部11は、プログラムコード13の実行中に分岐命令による分岐が実行されるとトレース情報を採取する。
分岐命令トレース格納部20には、分岐命令トレース採取・出力部11が、トレース情報として、分岐命令アドレス、及び、その分岐先アドレスのセットを格納する。
性能値算出部50は、カウンタ読み出し部51と、連続実行区間合計サイズ算出部52と、サンプル性能読み出し部53と、性能値計算・出力部54と、を備える。性能値算出部50は、所定契機、例えばプログラムコード13の実行終了時に、性能値計算・出力部54を用いて、エミュレーションの性能、例えば実行時間を計算する。
この時、性能値算出部50は、カウンタ読み出し部51で実行命令数カウンタ12を読み出し、連続実行区間合計サイズ算出部52で、収集された連続実行区間から連続実行区間合計サイズを算出する。さらに、性能値算出部50は、サンプル性能読み出し部53で、サンプル性能格納部60に格納されている動的コンパイル処理時間、及び、変換したコード実行時の単位実行時間を読み出す。
連続実行区間格納部40には、分岐命令トレースから割り出された連続実行区間として、区間の開始アドレス、及び、区間の終了アドレスのセットが連続実行区間抽出部30により格納される。
また、サンプル性能格納部60は、エミュレーション動作させたいアーキテクチャ、例えば、エミュレーション装置300上で、予め測定した性能値、例えば、動的コンパイル処理実行時、及び、動的コンパイルしたコード実行時性能値を格納している。
ここで、エミュレーション性能算出装置100のCPU/FW10と、連続実行区間抽出部30と、性能値算出部50は、論理回路で構成される。連続実行区間抽出部30と、性能値算出部50は、例えば、コンピュータでもあるエミュレーション性能算出装置100に付加的に実装される回路である。
分岐命令トレース格納部20と、連続実行区間格納部40と、サンプル性能格納部60は、半導体メモリ、例えば、エミュレーション性能算出装置100の主記憶装置の一部である。
連続実行区間抽出部30と、性能値算出部50は、ソフトウェアで実装されても良い。CPU/FW10が、図示されないエミュレーション性能算出プログラムを実行することにより、連続実行区間抽出部30と、性能値算出部50として機能する。すなわち、CPU/FW10は、エミュレーション算出プログラムを実行することにより、連続実行区間抽出部30と、性能値算出部50は、が行う処理を実行する。
<動作>
図5は、CPU/FW10の動作フローチャートである。プログラムコード13の実行開始とともに、CPU/FW10が、コードの各命令を逐次実行し、実行命令数カウンタ12が実行した命令数を計上する。ここで、実行した命令が分岐命令であり、かつ、当該分岐命令とは連続しないアドレスへ処理が分岐する場合(分岐GO)、分岐命令トレース採取・出力部11は、当該分岐命令のアドレス、及び、分岐先のアドレスを分岐命令トレース格納部20に格納する。
図6は、連続実行区間抽出部30の動作フローチャートである。連続実行区間抽出部30は、分岐命令トレース格納部20を常に監視している。連続実行区間抽出部30は、トレース情報が格納されたことを検知すると、一つ前のトレース情報の分岐先アドレスから、今回格納されたトレース情報の分岐命令アドレスまでを一つの連続実行区間として、連続実行区間格納部40に格納し、前回トレース情報を削除する。
連続実行区間(仮に区間Aとする)を格納する際、区間Aが、連続実行区間格納部40に既に格納されている連続実行区間(仮に区間Bとする)と一部、または、全部が重複している場合、両区間を、区間Aと区間Bとの和の区間で置き換える。ここで、区間Aと区間Bとの和の区間は、区間Aおよび区間Bの少なくとも一方に含まれているアドレス集合で構成される区間である。
図7は、性能値算出部50の動作フローチャートである。プログラムコード13の実行が終わると、性能値算出部50のカウンタ読み出し部51が実行命令数カウンタ12から実行された総実行命令数を読み出す。その後、連続実行区間合計サイズ算出部52は連続実行区間格納部40から格納された連続実行区間を読み出してその合計サイズを算出し、サンプル性能読み出し部53は、サンプル性能格納部60から格納されている動的コンパイル処理時間、及び、変換したコード実行時の単位実行時間を読み出す。
最後に、性能値計算・出力部54が、当該プログラムコード13のエミュレーション実行にかかる性能値を計算・出力する。この時、性能値計算・出力部54は、前述した、式(1)、式(2)および式(4)を順次使用して計算する。なお、平均命令長は、例えば、パラメータとして、プログラムコード13と共に、エミュレーション性能算出装置100に与えられる。
<本実施の形態の変形例>
性能値は、実行時間以外に、CPU使用時間など、実行/処理した命令数に比例する他の値であっても良い。
性能値計算・出力部54は、前述した、式(1)、および式(3)を順次使用して、当該プログラムのエミュレーション実行にかかる性能値を計算しても良い。
さらに、性能値計算・出力部54は、式(1)による計算の代わりに、連続実行区間に対応するプログラムコード13を走査して、命令コードから命令長を判断して、連続実行区間に含まれる命令数を取得し、その値を、動的コンパイルの発生回数として出力しても良い。
CPU/FW10は、分岐命令のトレース情報の代わりに、全ての命令のアドレス情報を出力しても良い。連続実行区間抽出部30は、プログラムコード13の実行後、そのアドレスシーケンスから連続実行区間を抽出しても良い。
<効果>
第1の効果は、本実施の形態にかかるエミュレーション性能算出装置100は、動的変換方式のエミュレーション動作時の実行性能を、対象プログラムをエミュレーションで実行する前に見積もることが出来ることである。それが可能な理由は、連続実行区間抽出部30が、プログラムの命令中、1度でも実行されたことが有る命令が格納されている連続アドレスの区間を取得するからである。これに基づき、性能値算出部50が、動的変換の発生回数を得て、動的変換の性能を計算する。
異なるアーキテクチャのコンピュータで作られたプログラムを、別のアーキテクチャのコンピュータ上で、一定量ずつ、当該アーキテクチャのコードに動的コンパイルしながら実行していくエミュレーション方式が存在する。本実施の形態のエミュレーション性能算出装置100は、この方式によるエミュレーション実行時の性能を、当該プログラムを元の(本来の)アーキテクチャのコンピュータ上で実行することで、実際にエミュレーション実行することなく見積もることができるのである。
これは、元のコンピュータで実行する際、連続して実行されるコード区間を重複排除して収集し、実行された延べコードの内、動的コンパイルが行われる割合を算出して、動的コンパイルによる性能の揺れを高い精度で見積もることができるからである。
第2の効果は、性能見積もり時のオーバヘッドが小さいことである。その理由は、連続実行区間抽出部30が、分岐命令で処理がジャンプする(分岐GOの)場合のみトレース情報から連続実行区間を得ることが出来るからである。
第3の効果は、プログラム実行と同時に動的コンパイルの発生回数や発生頻度を算出することができることである。本実施の形態にかかるエミュレーション性能算出装置100は、エミュレーション実行時の性能を、元のアーキテクチャのコンピュータ上で実行する時間の中で見積もるようにも出来るのである。その理由は、連続実行区間抽出部30が、トレース採取と並行してトレース情報を分析して、連続実行区間の割り出しを行うからである。
<第2の実施形態>
図8は、第2の実施の形態にかかるエミュレーション性能算出装置100の構成を示すブロック図である。なお、図中の矢印は、データ参照・更新例を示すが、データ参照・更新は、これらに限られない。
第1の実施形態のとの差は、本実施形態のエミュレーション性能算出装置100は、プロセス80を実行する点である。エミュレーション性能算出装置100は、複数のプロセス80を切替えながら並行に実行する。エミュレーション性能算出装置100は、このプロセス80の切り替えを行う、プロセススイッチ部70を備えている。
本実施形態のエミュレーション性能算出装置100のプログラムコード13、分岐命令トレース格納部20、連続実行区間格納部40は、プロセス80ごとに、例えば、プロセス80ごとの固有メモリ空間に存在する。プロセス80は、さらに、命令数カウンタ退避部81を、例えば固有メモリ空間に備えている。
プロセススイッチ部70は、第1のプロセス80から第2のプロセス80に実行プロセス80を切り替えるさい、実行命令数カウンタ12の値を第1のプロセス80の命令数カウンタ退避部81に退避し、第2のプロセス80の命令数カウンタ退避部81から回復する。また、分岐命令トレース採取・出力部11は、分岐トレース採取時は、実行中のプロセス80に対応する分岐命令トレース格納部20に出力する。連続実行区間抽出部30は、連続実行区間を、実行中のプロセス80に対応する連続実行区間格納部40に出力する。
こうすることで、分岐命令トレース格納部20、連続実行区間格納部40、実行命令数カウンタ12は、各プロセス80固有のデータを保持することになる。
これにより、本実施の形態のエミュレーション性能算出装置100は、複数のプロセス80でコンカレントに処理されるプログラムが実行された場合でも、各プロセス80で動作した処理について矛盾なく連続実行区間を収集できる。そして、プロセス80ごとに、第1の実施例と同様に、エミュレーション性能を算出することが可能となる。
<第3の実施の形態>
本実施の形態のエミュレーション性能算出装置100は、分岐命令実行時以外にコンテキストスイッチ発生時にもトレース情報を採取する。
これにより、本実施の形態のエミュレーション性能算出装置100は、マルチプロセッサの環境で、一つのプロセス80が、複数のCPU/FW10にスイッチしながら実行された場合でも、矛盾なく連続実行区間を収集でき、エミュレーション性能を算出することが可能となる。
<第4の実施の形態>
本実施の形態のエミュレーション性能算出装置100において、性能値算出部50は、実行命令数カウンタ12の値が所定数、例えば10万ステップ増加するたびに、図7に示した処理フローで性能計算を実行する。これを実現する為、実行命令数カウンタ12は、値が所定数増加するたびに、割込みを発生して性能値算出部50に通知しても良い。
動的変換方式のエミュレーションでは、実行開始直後に動的コンパイルが多く実施され、中盤以降は既にコンパイルされたコードが繰り返し実行されて、性能が安定するケースが多い。本実施の形態のエミュレーション性能算出装置100が、プログラムコード13の実行開始以降、一定インターバルでエミュレーション性能を算出することにより、安定するまでの性能の推移を確認が可能となり、業務への影響も確認しやすくなる。
<第5の実施の形態>
図9は、第5の実施の形態にかかるエミュレーション性能算出装置100の構成を示すブロック図である。なお、図中の矢印は、データ参照・更新例を示すが、データ参照・更新は、これらに限られない。
第1の実施形態のとの差は、本実施形態のエミュレーション性能算出装置100は、過去データ格納部90を備える点である。
本実施の形態のエミュレーション性能算出装置100において、性能値算出部50は、実行が完了したプログラムコード13の性能値を計算・出力した後、実行命令数と実行時間見積りを過去データ格納部90に格納しておく。
その後、新たに別のプログラムコード13が入力されると、当該別のプログラムコード13を実行して実行命令数を計測し、実行後、性能値算出部50は、以下の式(5)を使用して、当該別のプログラムコード13の実行時間見積もりを算出する。
実行時間見積り=過去データ格納部90内の実行時間見積もりX当該別のプログラムコード13の実行命令数/過去データ格納部90内の実行命令数・・・(5)

エミュレーション性能算出装置100は、動的コンパイルの発生頻度が判明したプログラムコード13と類似し、同程度に動的コンパイルが発生すると考えられるプログラムコード13について、簡単にエミュレーション動作時の概算性能を求めることが出来る。
<第6の実施形態>
図10は、第6の実施の形態にかかるエミュレーション性能算出装置100の構成を示すブロック図である。本実施の形態にかかるエミュレーション性能算出装置100は、入力されたプログラムを実行して、実行した命令数であるステップ数をカウントするCPU/FW10を備える。エミュレーション性能算出装置100は、実行された命令のトレース情報に基づいて、プログラムの命令中、1度でも実行されたことが有る命令が格納されている連続アドレスの区間を取得する連続実行区間抽出部30も備える。
エミュレーション性能算出装置100は、さらに、性能値算出部50も備える。性能値算出部50は、1)ステップ数と、与えられた命令ごとのエミュレーション性能に基づいて実行性能を見積もり、2)アドレス区間内の命令数を得て、当該命令数と、与えられた命令ごとの変換性能に基づいて変換性能を見積もる。性能値算出部50は、1)と2)で求めた両者から、プログラムを動的変換方式でエミュレーションした時の実行性能見積りを算出する。
本実施の形態において、性能値は、実行時間、CPU使用性能など、実行/処理した命令数に比例する値である。
連続実行区間抽出部30は、分岐命令で処理がジャンプする(分岐GOの)場合のトレース情報から連続実行区間を得る。連続実行区間抽出部30は、プログラムの走行で実行された全ての命令のアドレスシーケンスから連続実行区間を得ても良い。
本実施の形態にかかるエミュレーション性能算出装置100は、動的変換方式のエミュレーション動作時の実行性能を、対象プログラムをエミュレーションで実行する前に見積もることが出来る。それが可能な理由は、連続実行区間抽出部30が、プログラムの命令中、1度でも実行されたことが有る命令が格納されている連続アドレスの区間を取得するからである。これに基づき、性能値算出部50が、動的変換の発生回数を得て、動的変換の性能を計算する。
以上、実施形態を参照して本願発明を説明したが、本願発明は上記実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
10 CPU/FW
11 分岐命令トレース採取・出力部
12 実行命令数カウンタ
13 プログラムコード
20 分岐命令トレース格納部
30 連続実行区間抽出部
40 連続実行区間格納部
50 性能値算出部
51 カウンタ読み出し部
52 連続実行区間合計サイズ算出部
53 サンプル性能読み出し部
54 性能値計算・出力部
60 サンプル性能格納部
70 プロセススイッチ部
80 プロセス
81 命令数カウンタ退避部
90 過去データ格納部
100 エミュレーション性能算出装置
300 エミュレーション装置
301 サンプルプログラム
302 エミュレーション部
303 計測部
400 ネットワーク
500 エミュレーション性能算出システム

Claims (9)

  1. 入力されたプログラムを実行して、実行した命令数であるステップ数をカウントするプロセッサと、
    実行された命令のトレース情報に基づいて、前記プログラムの命令中、1度でも実行されたことが有る命令が格納されている連続アドレスの区間を取得する連続実行区間抽出手段と、
    1)前記ステップ数と、与えられた命令ごとのエミュレーション性能に基づいて実行性能を見積もり、2)前記連続アドレスの区間のサイズを得て、当該サイズを与えられた平均命令長で除算することにより、前記連続アドレスの区間内の命令数を得て、当該命令数と、与えられた命令ごとの変換性能に基づいて変換性能を見積もり、3)両者から、前記プログラムを動的変換方式でエミュレーションした時の実行性能見積りを算出する性能算出手段と、を備えるエミュレーション性能算出装置。
  2. 分岐命令トレース格納手段を、さらに備え、
    前記プロセッサは、分岐した分岐命令のアドレスと分岐先のアドレスを含む前記トレース情報を前記分岐命令トレース格納手段に出力し、
    前記連続実行区間抽出手段は、前記分岐命令トレース格納手段に格納されている前記トレース情報の履歴に基づいて分岐と分岐の間の連続実行区間を取得し、前記連続実行区間の和集合を、前記アドレスの区間として出力する、請求項1のエミュレーション性能算出装置。
  3. 前記性能算出手段は、前記プログラムの実行終了後、または、前記ステップ数が所定数増加するたびに前記実行性能見積りを算出する、請求項1乃至請求項2の何れか1項のエミュレーション性能算出装置。
  4. 複数のプロセスを切替えながら並行して実行し、前記プログラムを前記プロセス上で実行するプロセススイッチ手段をさらに備え、
    前記プロセッサは、ステップ数をカウントするカウンタを備え、前記トレース情報を前記プロセスに関連付けられた前記分岐命令トレース格納手段に出力し、
    前記プロセススイッチ手段は、前記プロセスごとに前記カウンタを退避回復し、
    前記連続実行区間抽出手段は、実行中プロセスに関連付けられている前記分岐命令トレース格納手段に格納されている前記トレース情報の履歴に基づいて分岐と分岐の間の連続実行区間を取得する、請求項のエミュレーション性能算出装置。
  5. 過去データ格納手段をさらに備え、
    前記性能算出手段は、前記ステップ数と前記実行性能見積りを前記過去データ格納手段に格納し、新たに入力された前記プログラムの前記ステップ数と前記過去データ格納手段に格納されている前記ステップ数と前記実行性能見積りから、新たに入力された前記プログラムの前記実行性能見積りを算出する、請求項1乃至請求項2の何れか1項のエミュレーション性能算出装置。
  6. サンプルプログラムを、前記動的変換方式でエミュレーションするエミュレーション手段と、前記命令ごとのエミュレーション性能、および、前記命令ごとの変換性能を計測する計測手段を備えた、エミュレーション装置と、
    請求項1乃至請求項2の何れか1項のエミュレーション性能算出装置と、を包含するエミュレーション性能算出システム。
  7. コンピュータが、
    入力されたプログラムを実行して、実行した命令数であるステップ数をカウントし、
    実行された命令のトレース情報に基づいて、前記プログラムの命令中、1度でも実行されたことが有る命令が格納されている連続アドレスの区間を取得し、
    1)前記ステップ数と、与えられた命令ごとのエミュレーション性能に基づいて実行性能を見積もり、2)前記連続アドレスの区間のサイズを得て、当該サイズを与えられた平均命令長で除算することにより、前記連続アドレスの区間内の命令数を得て、当該命令数と、与えられた命令ごとの変換性能に基づいて変換性能を見積もり、3)両者から、前記プログラムを動的変換方式でエミュレーションした時の実行性能見積りを算出する、エミュレーション性能算出方法。
  8. コンピュータが、
    分岐した分岐命令のアドレスと分岐先のアドレスを含む前記トレース情報を分岐命令トレース格納手段に出力し、
    前記分岐命令トレース格納手段に格納されている前記トレース情報の履歴に基づいて分岐と分岐の間の連続実行区間を取得し、前記連続実行区間の和集合を、前記アドレスの区間として出力する、請求項のエミュレーション性能算出方法。
  9. 実行された命令のトレース情報に基づいて、実行されたプログラムの命令中、1度でも実行されたことが有る命令が格納されている連続アドレスの区間を取得する連続実行区間抽出処理と、
    1)前記プログラムを実行して得られたステップ数と、与えられた命令ごとのエミュレーション性能に基づいて実行性能を見積もり、2)前記連続アドレスの区間のサイズを得て、当該サイズを与えられた平均命令長で除算することにより、前記連続アドレスの区間内の命令数を得て、当該命令数と、与えられた命令ごとの変換性能に基づいて変換性能を見積もり、3)両者から、前記プログラムを動的変換方式でエミュレーションした時の実行性能見積りを算出する性能算出処理と、をコンピュータに実行させるエミュレーション性能算出プログラム。
JP2016246188A 2016-12-20 2016-12-20 エミュレーション性能算出装置、エミュレーション性能算出システム、エミュレーション性能算出方法、および、エミュレーション性能算出プログラム Active JP6834457B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2016246188A JP6834457B2 (ja) 2016-12-20 2016-12-20 エミュレーション性能算出装置、エミュレーション性能算出システム、エミュレーション性能算出方法、および、エミュレーション性能算出プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2016246188A JP6834457B2 (ja) 2016-12-20 2016-12-20 エミュレーション性能算出装置、エミュレーション性能算出システム、エミュレーション性能算出方法、および、エミュレーション性能算出プログラム

Publications (2)

Publication Number Publication Date
JP2018101233A JP2018101233A (ja) 2018-06-28
JP6834457B2 true JP6834457B2 (ja) 2021-02-24

Family

ID=62714328

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016246188A Active JP6834457B2 (ja) 2016-12-20 2016-12-20 エミュレーション性能算出装置、エミュレーション性能算出システム、エミュレーション性能算出方法、および、エミュレーション性能算出プログラム

Country Status (1)

Country Link
JP (1) JP6834457B2 (ja)

Also Published As

Publication number Publication date
JP2018101233A (ja) 2018-06-28

Similar Documents

Publication Publication Date Title
US6079032A (en) Performance analysis of computer systems
KR20110070468A (ko) 인스트루먼테이션 실행 장치 및 방법
KR100921514B1 (ko) 성능 예측 기능을 제공하는 소프트웨어 개발 장치 및 방법
JP5029245B2 (ja) プロファイリング方法及びプログラム
US9336055B2 (en) Apparatus and method for predicting processing performance
JP5353227B2 (ja) 性能測定プログラム及び性能測定方法並びに性能測定機能を有する情報処理装置。
JP2006227999A (ja) ボトルネック検出システム、測定対象サーバ、ボトルネック検出方法およびプログラム
US10564992B2 (en) Simulation apparatus and storage medium
US20120331448A1 (en) Coverage measurement apparatus and method and medium
US10089088B2 (en) Computer that performs compiling, compiler program, and link program
US10409636B2 (en) Apparatus and method to correct an execution time of a program executed by a virtual machine
JP2014106972A (ja) 動的ライブラリのプロファイリング方法
JP6834457B2 (ja) エミュレーション性能算出装置、エミュレーション性能算出システム、エミュレーション性能算出方法、および、エミュレーション性能算出プログラム
JP6544054B2 (ja) 情報処理装置、実行情報記録プログラムおよび実行情報記録方法
CN107769987B (zh) 一种报文转发性能评估方法和装置
Asheim et al. Impact of microarchitectural state reuse on serverless functions
JP2008146426A (ja) 模擬ソースプログラム生成プログラム及び装置、並びに情報処理方法
US7971190B2 (en) Machine learning performance analysis tool
JP2008090699A (ja) トレースロギング方法、装置及びプログラム
JP2004030514A (ja) 性能解析方法
JP6503774B2 (ja) プログラム実行解析方法、情報処理装置及びプログラム実行解析プログラム
US20190384687A1 (en) Information processing device, information processing method, and computer readable medium
EP3547141B1 (en) Information processing apparatus, information processing method, and information processing program
RU2390821C1 (ru) Способ динамической инструментации
US20230333987A1 (en) Computer-readable recording medium, information processing method, and information processing device

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20191115

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20200904

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20200915

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20201111

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20201112

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210118

R150 Certificate of patent or registration of utility model

Ref document number: 6834457

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150