JP5278624B2 - シミュレーション装置,方法,およびプログラム - Google Patents

シミュレーション装置,方法,およびプログラム Download PDF

Info

Publication number
JP5278624B2
JP5278624B2 JP2012538489A JP2012538489A JP5278624B2 JP 5278624 B2 JP5278624 B2 JP 5278624B2 JP 2012538489 A JP2012538489 A JP 2012538489A JP 2012538489 A JP2012538489 A JP 2012538489A JP 5278624 B2 JP5278624 B2 JP 5278624B2
Authority
JP
Japan
Prior art keywords
execution
instruction
simulation
result
code
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
JP2012538489A
Other languages
English (en)
Other versions
JPWO2012049728A1 (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
Application granted granted Critical
Publication of JP5278624B2 publication Critical patent/JP5278624B2/ja
Publication of JPWO2012049728A1 publication Critical patent/JPWO2012049728A1/ja
Active 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/33Design verification, e.g. functional simulation or model checking
    • 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
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3457Performance evaluation by simulation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2115/00Details relating to the type of the circuit
    • G06F2115/10Processors

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • Debugging And Monitoring (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Description

本発明は,仮想的にモデル化されたシステム中でのプロセッサの命令実行について,性能または電力のシミュレーション情報を取得する処理技術に関する。
システムが複雑化して,複数プロセッサ(たとえばCPU)を搭載するマルチコア構成が一般的となっている現況では,各コア(CPU)の機能,性能,電力等のシミュレーション処理について,より高い処理速度や処理精度を実現することが要求されている。
機能,性能,消費電力のシミュレーションで,評価対象となるターゲットCPUを,ホストCPUで動作させる場合のターゲットCPUの命令コード(ターゲットコード)からホストCPUの命令コード(ホストコード)への変換手法として,インタープリタ方式またはJIT(Just-in-Time)コンパイラ方式を採用することが知られている。
JITコンパイラ方式によるシミュレーションでは,シミュレーション対象であるターゲットCPUについて,実行中のプログラムに出現するターゲットCPUの命令を,シミュレーションを実行するホストCPUの命令に置き換え,以降では,その置き換えた命令を実行している。そのため,JITコンパイラ方式の処理は,インタープリタ方式の処理に比べて高速であり,CPUの機能シミュレーションでは,特に高速性が求められる場合にJITコンパイル方式が採用されていた。
JITコンパイラ方式を採用するCPUの性能シミュレーションも提案されている。
しかし,クロックごとに各ユニットが独立して動作できるようにした上で,次々に命令を投入・並列で実行するパイプライン処理の制御では,処理実行の度にCPUの内部状態が変化することから,一旦生成したホスト命令を繰り返し利用するというJITコンパイラ方式の利点が活かせない。
そのため,一般的に,パイプライン処理やアウトオブオーダ処理を制御するようなCPUに対する性能シミュレーションや電力シミュレーションには,JIPコンパイラ方式は適さないとされている。
米国特許6,751,583 B1
上記のように,パイプライン処理やアウトオブオーダ処理を制御するCPUに対する機能,性能,電力のシミュレーションにインタープリタ方式を採用する場合,一般的に,処理速度が非常に遅くなり,現実的な手法として活用できないという問題があった。
また,昨今の高速なCPUの場合,機能シミュレーションにJITコンパイラ方式を採用した場合に,なんとか実用的な速度で処理が行える。
しかし,性能や電力のシミュレーションにJITコンパイラ方式を採用した場合に,ターゲットCPUではパイプラインの制御により処理の前後の状況は多様であり,内部状態に対応した膨大なシミュレーション用コードの追加とその命令実行が必要なため,処理負担が非常に大きいものとなる。
さらに,性能シミュレーションで,ターゲットCPUで見込まれる実行遅延に対するタイミングの適応を行うためにも,ホストコードに膨大なシミュレーション用コードを追加する必要がある。例えば,ロード命令(LD:load)のサイクルシミュレーションを実行する際に,この命令によるキャッシュアクセスで,キャッシュミスまたはキャッシュヒットのどちらが生じるか,キャッシュミスの場合に全タイミングを計上し,考慮するべきペナルティサイクルがあるかなどを調べるために,これらの条件記述をホストコードに追加する必要がある。
しかし,一方で,高い動作性を維持するために,機能コードに追加される性能シミュレーション(サイクルシミュレーション)用のコード量をできる限り抑制する必要がある。
本発明は,高速なシミュレーションを行える技術を提供することを目的とする。
本発明の一態様として開示するシミュレーション装置は,パイプライン処理を制御するターゲットプロセッサに対するプログラムの命令実行のシミュレーションを実行するシミュレーション装置であって,1)前記プログラムのコードを所定のブロックに分割し,前記ブロックに含まれる命令のうち,該命令の実行結果が外部環境に依存する外部依存命令の処理の実行結果を予測結果として設定する処理と,前記予測結果を前提とする命令実行の機能シミュレーションを行い,前記ブロックに含まれる命令の実行タイミングを示すタイミング情報を得て,前記機能シミュレーションの結果と前記タイミング情報とをもとに,前記予測結果での外部依存命令の実行時間を算出する処理と,前記機能シミュレーションの結果をもとに,前記予測結果を前提とする命令実行の性能シミュレーションを,前記ターゲットプロセッサを動作させるホストプロセッサに実行させるホストコードを生成する処理とを行うコード変換部と,2)前記ホストプロセッサが前記生成されたホストコードを実行した実行結果において,該ホストコードに含まれる外部依存命令の実行結果が前記予測結果と異なる場合に,該外部依存命令の所定の遅延時間と前記外部依存命令の前後に実行される命令の実行時間とを用いて求めた補正値で,前記予測結果での外部依存命令の実行時間を補正して,前記機能シミュレーションでの該外部依存命令の実行時間とするシミュレーション実行部とを,備える。
また,本発明の別の一態様として開示するシミュレーション方法は,前記シミュレーション装置が実行する各処理ステップを備えるものである。
さらに,本発明の別の一態様として開示するシミュレーションプログラムは,コンピュータに,前記シミュレーション方法を実行させるためのものである。
開示されたシミュレーション装置によれば,高速にシミュレーションを行うことが可能となる。
本発明の一実施態様として開示するシミュレーション装置の構成例を示す図である。 ブロックに含まれる命令の例を示す図である。 タイミング情報の例を示す図である。 図2に示す命令実行のタイミング例を示す図である。 サイクルシミュレーション用コードが組み込まれる例を示す図である。 シミュレーション装置の補正部の処理動作を示す図である。 シミュレーション装置の補正部のLD命令の実行結果に対する補正例を示す図である。 シミュレーション装置の補正部のLD命令の実行結果に対する補正例を示す図である。 補正部123のLD命令の実行結果に対する補正例を示す図である。 シミュレーション装置のコード変換部の概要処理フロー図である。 シミュレーション装置のシミュレーション実行部の概要処理フロー図である。 外部依存命令の一例として,ロード(ld)命令の処理についての予測結果の判定および補正の処理フロー例を示す図である。 別の実施形態におけるシミュレーション装置の構成例を示す図である。 シミュレーション装置の電力シミュレーション情報生成部の実施例を示す図である。
図1は,本発明の一実施態様として開示するシミュレーション装置の構成例を示す図である。
シミュレーション装置1は,パイプライン処理を制御するターゲットCPUにおける命令実行の性能シミュレーションを実行する装置である。
ターゲットCPUは,シミュレーションの対象となるCPUの制御モデルである。シミュレーション装置1は,ターゲットCPUの命令実行の性能シミュレーションとして各命令のサイクルシミュレーション情報を出力する。
ここで,ターゲットCPUは,例えばARMアーキテクチャのCPUである。ホストCPUに相当するシミュレーション装置1は,例えばX86アーキテクチャのCPUを搭載するコンピュータである。
シミュレーション装置1は,コード変換部11とシミュレーション実行部12とシミュレーション情報収集部13とを有する。
コード変換部11は,ターゲットCPUのプログラムの実行時に,ターゲットCPUが実行するプログラムのコード(ターゲットコード)から,シミュレーションを実行するホストCPUのコード(ホストコード)を生成する処理部である。
コード変換部11は,ブロック分割部111,予測シミュレーション実行部113,コード生成部115を有する。
ブロック分割部111は,シミュレーション装置1に入力されたプログラムのターゲットコードを,所定のブロックに分割する。分割されるブロック単位は,例えば,一般的なベーシックブロック(分岐から次の分岐前までのコード)単位でよく,または,予め定められた任意のコード単位でよい。
図2は,ブロックに含まれる命令の例を示す図である。
図2に示すように,あるブロックには,ターゲットコードの3つの命令;(1)“LD r1,r2”(ロード);(2)“MULT r3,r4, r5(乗算)”;(3)“ADD r2,r5, r6(加算)”の命令が含まれ,(1)〜(3)の順でターゲットCPUのパイプラインに投入されて実行されるとする。各命令のr1〜r6は,レジスタ(アドレス)を表す。
予測シミュレーション実行部113は,タイミング情報3と予測情報4とを得て,入力されたブロックをある実行結果を前提とした条件下で実行する性能シミュレーションを行う処理部である。
タイミング情報3は,ターゲットコードの各命令について,命令実行時の各処理要素(段階)と使用可能なレジスタとの対応を示す情報と,命令のうち外部依存命令ごとに,実行結果に応じた遅延時間を定めるペナルティ時間(ペナルティサイクル数)とを示す情報である。
外部依存命令は,外部環境が関係する処理を行う命令,例えば,ロード命令またはストア命令などのように,命令の実行結果がターゲットCPU外の外部環境に依存するような処理,例えば,命令キャッシュ,データキャッシュ,TLB検索などであったり,さらには,分岐予測,コール/リターンのスタックなどの処理を行う命令である。
図3は,タイミング情報3の例を示す図である。
図3に示すタイミング情報3では,LD命令について,ソースレジスタrs1(r1)は1番目の処理要素(e1)で,宛先レジスタrd(r2)は2番目の処理要素(e2)で使用可能であることを表す。
また,MULT命令では,第1ソースレジスタrs1(r3)は1番目の処理要素(e1),第2ソースレジスタrs2(r4)は2番目の処理要素(e2),宛先レジスタrd(r5)は3番目の処理要素(e3)で,それぞれ使用可能であることを示す。また,ADD命令では,第1ソースレジスタrs1(r2),第2ソースレジスタrs2(r5)は1番目の処理要素(e1),宛先レジスタrd(r6)は2番目の処理要素(e2)で使用可能であることを示す。
図4は,図2に示すブロックの各命令の実行タイミング例を示す図である。
図3に示すタイミング情報3から,パイプラインに各命令が投入されるタイミングは,LD命令の実行開始がタイミングtとすると,MULT命令はタイミングt+1,ADD命令はタイミングt+2となる。
ADD命令の第1ソースレジスタ(r2)と第2ソースレジスタ(r5)は,LD命令とMULT命令で使用されているため,ADD命令の開始は,LD命令とMULT命令の実行完了のタイミングt+4以降となり,2サイクル分の待機時間(2サイクル分のストール)が生じる。
したがって,図4(A)に示すように,図2に示すブロックをシミュレーションした場合に,LD命令の実行結果がキャッシュヒットであるケースでは,ブロックの実行時間が6サイクルであることがわかる。
図4(B)は,図2に示すブロックのLD命令の実行結果がキャッシュミスである場合のタイミング例を表す。
LD命令の結果がキャッシュミスであると,タイミング情報3に,ペナルティとして,再実行に十分と考えられる任意の時間(ここでは6サイクル分)が設定されているため,このペナルティサイクルが遅延時間として追加される。したがって,2番目の処理要素(e2)の実行は,タイミングt+7に遅延する。LD命令の次に実行されるMULT命令は,遅延の影響を受けずにそのまま実行されるが,ADD命令は,LD命令の実行完了のタイミングt+8以降となり,4サイクル分の待機時間(4サイクル分のストール)が生じる。
したがって,図4(B)に示すように,図2に示すブロックの命令実行をシミュレーションした場合に,LD命令の実行結果がキャッシュミスであるケースでは,実行時間が10サイクルとなることがわかる。
予測情報4は,ターゲットコードの外部依存命令の処理において,生じる確率が高い実行結果(予測結果)を定めた情報である。予測情報には,例えば,
「命令キャッシュ:予測=ヒット,
データキャッシュ:予測=ヒット,
TLB検索:予測=ヒット,
分岐予測:予測=ヒット,
コール/リターン:予測=ヒット,…
が定められる。
予測シミュレーション実行部113は,上記の予測情報4をもとに,入力されたブロックに含まれる外部依存命令の予測結果を設定し,タイミング情報3を参照して,設定した予測結果を前提とする場合(予測ケース)の命令を実行して,命令実行の進み具合をシミュレーションする。予測シミュレーション実行部113は,シミュレーション結果として,ブロックに含まれる各命令の実行時間(所要サイクル数)を求める。
コード生成部115は,予測シミュレーション実行部113のシミュレーション結果をもとに,処理したブロックに対応するホストコードとして,設定された予測ケースにおける命令実行時の性能シミュレーションを行うためのホストコード(性能シミュレーション用ホストコード)を生成する処理部である。
コード生成部115は,ブロックのターゲットコードをもとに,外部依存命令が予測結果である予測ケースの場合の命令実行を行うホストコードを生成し,さらに,各命令の実行時間を加算して,ブロックの処理時間を計算する処理を行うシミュレーション用コードを組み込む。
例えば,コード生成部115は,データのLD命令の予測結果として“キャッシュヒット”が設定されている処理については,そのブロック内のLD命令によるキャッシュアクセスが“ヒット”である場合の処理実行をシミュレーションして,この予測ケースでの実行時間を求め,LD命令によるキャッシュアクセスが“ミス”である場合の実行時間は,予測ケースである“ヒット”時の実行時間の加算/減算を用いた補正計算により求める処理を行うホストコードを生成する。
シミュレーション実行部12は,コード生成部115が生成したホストコードを実行して,プログラム(ターゲットコード)を実行するターゲットCPUの命令実行の機能および性能シミュレーションを行う処理部である。
シミュレーション実行部12は,コード実行部121,補正部123を有する。
コード実行部121は,ホストコードを用いて,プログラム(ターゲットコード)を実行する処理部である。
補正部123は,プログラムの実行中に,外部依存命令の実行結果が,設定されていた予測結果と異なる場合(予測外ケース)に,その命令の実行時間を,既に求めた予想ケースでの実行時間を補正して求める処理部である。
補正部123は,外部依存命令に与えられるペナルティ時間,外部依存命令の前後で実行される命令の実行時間,1つ前の命令の遅延時間などを用いて補正を行う。なお,補正処理の詳細は後述する。
シミュレーション情報収集部13は,性能シミュレーションの実行結果として,各命令の実行時間を含むログ情報(シミュレーション情報)5を収集する処理部である。
以下に,シミュレーション装置1の処理の流れを説明する。
〔コード変換処理〕
(1) シミュレーション装置1のコード変換部11のブロック分割部111は,ターゲットプログラム2のターゲットコードを得て記憶部(図1に図示しない)に保持し,保持したターゲットコードを任意のブロックに分割する(図2参照)。
(2) 予測シミュレーション実行部113は,入力されるターゲットプログラム2に関するタイミング情報3,予測情報4を得て記憶部に保存する。
そして,予測シミュレーション実行部113は,予測情報4をもとに,分割されたブロックの外部依存命令のそれぞれについて予測結果を設定する。例えば,予測シミュレーション実行部113は,図2に示すブロックの命令のうち,LD命令のデータキャッシュの予測結果として「ヒット」を設定する。
(3) 予測シミュレーション実行部113は,ブロックのコードを解釈して,設定された予測結果を前提とする場合の命令実行をシミュレーションする。すなわち,予測シミュレーション実行部113は,図4(A)に示すタイミング例の命令実行をシミュレーションすることになる。
(4) 次に,コード生成部115は,予測ケースのシミュレーション結果をもとに,ターゲットコードからホストコードを生成する。さらに,コード生成部115は,ターゲットコードから変換したホストコード(機能コードのみ)に,性能シミュレーション(サイクルシミュレーション)を実行するためのサイクルシミュレーション用コードを組み込む。
図5(A)は,ターゲットコードから機能シミュレーションのホストコードが生成される例を示す図,図5(B)は,機能シミュレーションのホストコードに,サイクルシミュレーション用コードが組み込まれる例を示す図である。
図5(A)に示すように,ターゲットコードInst_Aは,ホストコードHost_Inst_A0_func,Host_Inst_A1_funcに変換され,ターゲットコードInst_Bは,ホストコードHost_Inst_B0_func,Host_Inst_B1_func,Host_Inst_B2_func,…に変換されて,機能コードのみのホストコードが生成される。
さらに,機能コードのみのホストコードに,ターゲットコードInst_Aのサイクルシミュレーション用コードHost_Inst_A2_cycle,Host_Inst_A3_cycleが,ターゲットコードInst_Bのサイクルシミュレーション用コードHost_Inst_B4_cycle,Host_Inst_B5_cycleが,それぞれ組み込まれる。
サイクルシミュレーション用コードは,各命令の実行時間(所要サイクル数)を定数化し,各命令の実行時間を合計してブロックの処理時間を求めるコードである。これにより,ブロック実行中の進み具合を示す情報を得ることができる。
ここで,ホストコードのうち,機能コード,外部依存命令以外の命令についてのサイクルシミュレーション用コードは既知のコードを使用して実施できるので,具体例の説明を省略する。外部依存命令についてのサイクルシミュレーション用コードは,補正処理を呼び出すヘルパー関数として用意される。ヘルパー関数については後述する。
〔シミュレーション処理〕
(1) シミュレーション実行部12のコード実行部121は,コード変換部11が生成したホストコードを用いて,ターゲットプログラム2の性能シミュレーションを行う。
コード実行部121は,ターゲットプログラム2の命令実行をシミュレーションし,各命令の実行時間を得ていく。
(2) コード実行部121は,シミュレーションの実行中に,外部依存命令(例えばLD命令)を検出した場合に,その実行結果が,設定された予測結果と異なっているかを判定し,実行結果が予測結果と違っている場合に,補正部123の起動を要求する。例えば,命令「LD,r1,r2」を検出し,データキャッシュの予測結果(キャッシュヒット)と,実際の実行結果(キャッシュミス)とが異なっていた場合に,補正部123が呼び出される。
(3) 補正部123は,呼び出しを受けて起動し,検出された命令「LD,r1,r2」の実行時間(サイクル数)を補正する。さらに,補正部123は,この補正により,次命令の実行タイミングt+nも変更する。
補正部123は,外部依存命令の実行結果が予測結果と異なる度に,命令の実行時間を補正する。ここで,予測ケースでの外部依存命令の実行時間は既に定数化されているため,補正部123は,予測外ケースでの外部依存命令の実行時間を,その命令に対するペナルティ時間,前後に実行される命令の実行時間,前に処理された命令の遅延時間等の値を単に加算または減算して計算することができる。
図6は,補正部123の処理動作を示す図である。
補正部123は,ヘルパー関数モジュールとして実施される。
本実施形態では,例えば,LD命令のキャッシュの実行結果ごとにシミュレーションを行う従来の関数「cache_ld(address)」の代わりに,ヘルパー関数「cache_ld(address,rep_delay,pre_delay)」がホストコードに組み込まれることにより,実現している。
ヘルパー関数の“rep_delay”は,このロード(ld)命令の返り値を使用する次の命令の実行までに,ペナルティ時間のうち遅延時間として処理されなかった時間(猶予時間)である。“pre_delay”は,1つ前の命令から受ける遅延時間である。“−1”は,前の命令に遅延がないことを示す。“rep_delay”と“pre_delay”は,性能シミュレーション結果とタイミング情報3との静的分析処理の結果から得られる時間情報である。
図6に示す動作例では,補正部123は,現タイミングcurrent_timeと1つ前のld命令の実行タイミングpreld_timeとの差が,1つ前のld命令の遅延時間分pre_delayを超えているときは,1つ前のld命令の実行タイミングpreld_timeと現タイミングcurrent_timeまでの時間で遅延時間pre_delayを調整して有効遅延時間avail_delayを求める。
次に,補正部123は,実行結果がキャッシュミスであれば,予測結果の誤りであり,有効遅延時間avail_delayにキャッシュミス時のペナルティ時間cache_miss_latencyを加算して,猶予時間rep_delayをもとに,LD命令の実行時間を補正する。
図7〜図9は,補正部123のLD命令の実行結果に対する補正例を示す図である。
図7は,1つのキャッシュ処理が実行されるケースで1つのキャッシュミスが生じた場合の補正例を説明するための図である。
図7の例では,以下の3命令のシミュレーションが実行される。
「ld [r1],r2 :[r1]→r2;
mult r3,r4,r5 :r3*r4→r5;
add r2,r5,r6 :r2+r5→r6」
図7(A)は,予測結果が「キャッシュヒット」の場合の命令実行タイミングのチャート例を示す図である。この予測ケースにおいて,3番目に実行されるadd命令に,2サイクルストールが生じている。
図7(B)は,予測結果と異なる「キャッシュミス」の場合の命令実行タイミングのチャート例を示す図である。この予測ミスのケースでは,ld命令の実行結果がキャッシュミスであると,ペナルティサイクル(6サイクル)分の遅延が生じる。そのため,mult命令は,遅延の影響を受けずに実行されるが,add命令の実行は,ld命令の完了を待つため,4サイクル分遅延することになる。
図7(C)は,補正部123による補正後の命令実行タイミングチャートの例を示す図である。
補正部123は,ld命令の実行結果がキャッシュミスであるので(予測結果のミス),残りの実行時間(2−1=1サイクル)に所定のキャッシュミス時のペナルティ時間(6サイクル)を加算して有効遅延時間(7サイクル)とする。有効遅延時間は,最大の遅延時間となる。
さらに,補正部123は,次のmult命令の実行時間(3サイクル)を得て,次命令の実行時間が遅延時間を超過しないと判定して,有効遅延時間から次命令の実行時間を差し引いた時間(7−3=4サイクル)を,ld命令の遅延が生じた実行時間(遅延時間)とする。
また,補正部123は,有効遅延時間から上記の遅延時間を差し引いた時間(3サイクル)を猶予時間とする。猶予時間は,ペナルティとしての遅延が猶予された時間である。
補正部123は,ヘルパー関数cache_ld(addr,rep_delay,pre_delay)で,猶予時間rep_delay=3,前命令の遅延時間pre_delay=−1(遅延なし)を返す。
この補正により,ld命令の実行時間は,実行された時間と遅延時間を加算した実行時間(1+4=5サイクル)となり,実行完了のタイミングtから,後続のmult命令,add命令の実行時間が計算される。
すなわち,補正したld命令の実行時間(5サイクル)に,予測シミュレーション実行部113の処理結果(予測結果による予測シミュレーションの結果)で求められていたmult命令とadd命令の各々の実行時間(3サイクル,3サイクル)を単純に加算するだけで,このブロックの実行時間(サイクル数)を得ることができる。
よって,実行結果が予測と異なる命令の実行時間のみを加算または減算による補正処理を行って,その他の命令については,予測結果にもとづくシミュレーション時に求められた実行時間を加算するだけで,高精度に,キャッシュミス時のシミュレーションの実行サイクル数をも求めることができる。
図7(D)は,シミュレーション装置1の処理と比較するために,従来技術によるキャッシュミス時のサイクル数を単純な加算により求めた場合の誤差の大きさを示す図である。図7(D)の場合には,ld命令の遅延時間をそのまま加算しているため,実際には,ld命令の実行中に実行が完了するmult命令の実行タイミングのずれによる誤差が生じていることがわかる。
図8は,2つのキャッシュ処理が実行されるケースで2つのキャッシュミスが生じた場合の補正例を説明するための図である。
図8の例では,以下の5命令のシミュレーションが実行される。
「ld [r1],r2 :[r1]→r2;
ld [r3],r4 :[r3]→r4;
mult r5,r6,r7 :r5*r6→r7;
add r2,r4,r2 :r2+r4→r2;
add r2,r7,r2 :r2+r7→r2」
図8(A)は,2つのキャッシュ処理での予測結果が「キャッシュヒット」の場合の命令実行タイミングのチャート例を示す図である。この予測ケースでは,2つのld命令が,2サイクル分(通常の1サイクル+付加した1サイクル)をあけて実行されるものとする。
図8(B)は,2つのキャッシュ処理の両方が予測結果と異なる「キャッシュミス」の場合の命令実行タイミングのチャート例を示す図である。この予測ミスのケースでは,2つのld命令のそれぞれでキャッシュミスがあり,ペナルティサイクル(6サイクル)分の遅延が生じる。しかし,2つのld命令の遅延時間は重なる時間があり,mult命令も,遅延の影響を受けずに実行され,2つのadd命令の実行が2つめのld命令の完了まで遅延することになる。
図8(C)は,補正部123による補正後の命令実行タイミングチャートの例を示す図である。
補正部123は,図7を用いて説明したように,タイミングtにおいて,1つめのld命令の遅延時間を補正し,ヘルパー関数cache_ld(addr,3,−1)を返す。
次に,現タイミングtにおいて,補正部123は,2つめのld命令の実行結果がキャッシュミスであるので(予測結果のミス),このld命令の残りの実行時間にペナルティサイクル(6)を追加して有効遅延時間(1+6=7サイクル)とする。
補正部123は,有効遅延時間から,現タイミングtまでに消費した遅延時間(<現タイミングt−前命令の実行タイミングt>−設定された間隔)を差し引いて,現タイミングtから超過した有効遅延時間を求め(7−(6−2)=3サイクル),この超過した有効遅延時間を,2つめのld命令の実行時間とする。
さらに,補正部123は,超過した有効遅延時間から本来の実行時間を差し引いて(3−1=2サイクル),前命令の遅延時間とする。
また,補正部123は,有効遅延時間から,現タイミングtまでに消費した遅延時間と現タイミングtで超過した有効遅延時間との合計を差し引いて(7−(3+3)=1サイクル),猶予時間とする。
補正部123は,タイミングtにおいて,2つめのld命令の遅延時間を補正した後,ヘルパー関数cache_ld(addr,2,1)を返す。
この補正により,現タイミングtに補正値(3サイクル)を付加したタイミングがld命令の実行完了のタイミングとなり,そのタイミングから,以降のmult命令,add命令の実行時間が加算されていくことになる。
図8(D)は,シミュレーション装置1の処理と比較するために,従来技術によるキャッシュミス時のサイクル数を単純な加算により求めた場合の誤差の大きさを示す図である。図8(D)の場合には,2つのld命令それぞれに与えられたペナルティにもとづく遅延時間をそのまま加算しているため,大きな誤差(9サイクル)が生じていることがわかる。図8(C)に示す補正部123の処理でも,図8(B)に示すように正しくシミュレーションされる場合に比べて誤差(1サイクル)があるが,従来手法に比べて,非常に高精度に求められることがわかる。
図9は,2つのキャッシュ処理が実行されるケースで1つのキャッシュミスが生じた場合の補正例を説明するための図である。図9の例では,図8で示す説明例と同様の5つの命令のシミュレーションが実行される。
図9(A)は,2つのキャッシュ処理での予測結果が「キャッシュヒット」の場合の命令実行タイミングのチャート例を示す図である。この予測ケースでは,図8(A)の場合と同様に,2つのld命令が,2サイクル分(通常の1サイクル+付加した1サイクル)をあけて実行されるものとする。
図9(B)は,1つめのld命令が予測結果と異なる「キャッシュミス」となり,2つめのld命令の結果が予測結果(キャッシュヒット)である場合の命令実行タイミングのチャート例を示す図である。この予測ミスのケースでは,2つのld命令のそれぞれにペナルティサイクル(6サイクル)分の遅延が生じる。しかし,2つのld命令の遅延時間は重なる時間があり,mult命令も,遅延の影響を受けずに実行され,2つのadd命令の実行が2つめのld命令の完了まで遅延することになる。
図9(C)は,補正部123による補正後の命令実行タイミングチャートの例を示す図である。
補正部123は,図7を用いて説明したように,タイミングtにおいて,1つめのld命令の遅延時間を補正し,ヘルパー関数cache_ld(addr,3,−1)を返す。
次に,現タイミングtにおいて,補正部123は,2つめのld命令の実行結果がキャッシュヒットであるので(予測結果),このld命令の実行開始から現タイミングtまでの時間<t−t−設定された間隔(6−0−2=4サイクル)>が,このld命令の実行時間(2サイクル)より大きいかを判断する。
補正部123は,2つめのld命令の実行開始から現タイミングtまでの時間が,このld命令の実行時間(2サイクル)より大きいので,現タイミングtを,次のmult命令の実行タイミングとする。
そして,補正部123は,2つめのld命令の実行完了から現タイミングt1までの時間を(2サイクル),次の命令に対する遅延時間として扱い,前命令の遅延時間pre_delay=2とする。また,補正部123は,1つめのld命令の有効遅延時間から,現タイミングtまでに消費した遅延時間と現タイミングtで超過した有効遅延時間との合計を差し引いて(7−(6+0)=1サイクル),猶予時間rep_delay=1とし,ヘルパー関数cache_ld(addr,1,2)を返す。
図9(D)は,シミュレーション装置1の処理と比較するために,従来技術によるキャッシュミス時のサイクル数を単純な加算により求めた場合の誤差の大きさを示す図である。図9(D)の場合には,1つめのld命令のペナルティによる遅延時間をそのまま加算しているため誤差が生じていることがわかる。
図10は,シミュレーション装置1のコード変換部11の概要処理フロー図である。
シミュレーション装置1において,コード変換部11のブロック分割部111は,ターゲットプログラムのコード(ターゲットオード)を所定の単位のブロックに分割して入力する(ステップS1)。
予測シミュレーション実行部113は,ブロックの命令を分析して,外部依存命令を検出して(ステップS2),検出した全ての命令について,予測情報4をもとに,確率が高い実行結果を予測ケースとして決定する(ステップS3)。
さらに,予測シミュレーション実行部113は,タイミング情報3を参照して,ブロックの各命令について予測結果として設定された実行結果を前提とする性能シミュレーションを実行する(ステップS4)。
コード生成部115は,シミュレーション結果をもとに,シミュレーション実行部12が実行する性能シミュレーション用ホストコードを生成する(ステップS5)。
以上のステップS1〜S5の処理により,設定された実行結果の場合(予測ケース)での機能コードに,ターゲットCPUの性能をシミュレーションするコードが組み込まれたホストコードが出力される。
図11は,シミュレーション装置1のシミュレーション実行部12の概要処理フロー図である。
シミュレーション装置1において,シミュレーション実行部12のコード実行部121は,コード生成部115が生成したホストコードを実行し,性能シミュレーションを行う(ステップS10)。コード実行部121は,実行中に外部依存命令を検出すると(ステップS11),その命令の実行結果が予測結果として設定されたものと同じであるかを判定する(ステップS12)。外部依存命令の実行結果が設定された予測結果と同じではない場合にのみ(ステップS12のN),補正部123が呼び出され,補正部123は,その外部依存命令の実行時間を補正する(ステップS13)。
そして,シミュレーション情報収集部13は,ターゲットプログラムに相当するホストコード全てのシミュレーション処理についてのシミュレーション情報5を出力する(ステップS14)。
以上のステップS10〜S14の処理ステップにより,ターゲットプログラム2を実行するターゲットCPUのシミュレーション情報(サイクルシミュレーション情報)5が出力される。
図12は,外部依存命令の一例として,ロード(ld)命令の処理についての予測結果の判定および補正の処理フロー例を示す図である。
コード実行部121は,処理中のブロックの命令から,外部依存命令を検出すると,補正部123に相当するヘルパー関数を呼び出す(ステップS20)。
コード実行部121は,ld命令で,キャッシュアクセスが要求されているかを判定し(ステップS21),キャッシュアクセスが要求されていれば(ステップS21のY),キャッシュアクセスをシミュレーションする(ステップS22)。キャッシュアクセスの結果が“キャッシュミス”であれば(ステップS23の“ミス”),補正部123は,ld命令の実行時間(サイクル数)の補正を行い(ステップS24),補正された実行時間(サイクル数)を出力する(ステップS25)。
ステップS21で,キャッシュアクセスが要求されていない場合(ステップS21のN),または,要求されたキャッシュアクセスが“キャッシュヒット”であれば(ステップS23の“ヒット”),補正部123は,未補正の予測された実行時間(サイクル数)を出力する(ステップS26)。
図13は,別の実施形態におけるシミュレーション装置1の構成例を示す図である。
シミュレーション装置1は,図1に示す構成例に,さらに,電力シミュレーション情報生成部15を備える。
電力シミュレーション情報生成部15は,電力情報6を得て,シミュレーション情報収集部13が出力したシミュレーション情報5をもとに,ブロックの実行時の消費電力を計算し,電力シミュレーション情報7として出力する処理部である。
図14は,電力シミュレーション情報生成部15を,性能シミュレーション用のホストコードに組み込む関数(電力シミュレーション関数)として実施した場合の例を示す図である。
電力情報6として,LD命令,MULT命令,ADD命令の1実行当たりの消費電力が,それぞれ4u[W],0.5u[W],0.3u[W]と設定されている。
電力シミュレーション関数Host_Inst_A−C_powerは,シミュレーションで実行された各命令の実行回数にもとづいて,電力を計算する。
次に,シミュレーション装置1のハードウェア構成例を説明する。
シミュレーション装置1は,演算装置(CPU),一時記憶装置(DRAM,フラッシュメモリ等),永続性記憶装置(HDD,フラッシュメモリ等),およびネットワークNとのネットワークインターフェースを有するコンピュータPCと,入力装置(キーボード,マウス等)と出力装置(ディスプレイ,プリンタ等)とによって実施することができる。
また,シミュレーション装置1は,コンピュータPCが実行可能なプログラムによって実施することができる。この場合に,シミュレーション装置1が有すべき機能の処理内容を記述したプログラムが提供される。提供されたプログラムをコンピュータPCが実行することによって,上記で説明したシミュレーション装置1の処理機能がコンピュータPC上で実現される。
なお,コンピュータPCは,可搬型記録媒体から直接プログラムを読み取り,そのプログラムに従った処理を実行することもできる。また,コンピュータPCは,サーバコンピュータからプログラムが転送されるごとに,逐次,受け取ったプログラムに従った処理を実行することもできる。
さらに,このプログラムは,コンピュータPCで読み取り可能な記録媒体に記録しておくことができる。
以上説明したように,シミュレーション装置1によれば,パイプライン処理を制御するCPUの命令実行の性能シミュレーションを高速に行うことが可能となる。
シミュレーション装置1は,JITコンパイラ方式のように,ターゲットCPUのプログラムのコード変換処理において,コード変換部11が,分割したブロックごとに,外部依存命令の実行結果を予測した場合(予測ケース)での実行について機能シミュレーションを行い,タイミング情報3をもとに各命令の実行時間を定数化しておく。
シミュレーション装置1のコード変換部11では,予測ケース以外の実行についての性能シミュレーション情報(サイクルシミュレーション情報)を得るためのシミュレーション実行コードをホストコードに組み込む代わりに,予測ケースでの命令の実行時間の補正処理を行うコードを組み込む。
また,シミュレーション装置1のシミュレーション実行部12では,予測ケースの場合の命令実行について性能シミュレーションを行い,予測外ケースでのシミュレーションの代わりに,その命令に対する遅延時間,前後に実行される命令の実行時間等を用いて,予測ケースでの実行時間を補正して,外部依存命令の実行時間を得る。
そのため,従来に比べて,機能コードに追加するシミュレーション用コード量を少なくすることができ,性能シミュレーション処理の負荷増大を抑制しつつ,高速に行うことが可能となる。
また,シミュレーション装置1では,予測ケースを前提として機能シミュレーションを行うことにより,1つのケース(予測ケース)における各命令の実行時間を,静的分析処理により得ておき,予測ケース以外のケースにおける命令の実行時間は,予測ケースでの実行時間を,ペナルティ時間,前後に実行される命令の実行時間,前の命令の遅延時間等の加算または減算により補正する。
シミュレーション装置1によれば,CPUを含むシステムの性能,電力のシミュレーションを高速に実施することが可能となり,従来では現実レベルでの実行が困難であった,大規模なシステム全体の性能,電力の評価や解析,予測などを容易に行えるようになる。
さらに,シミュレーション装置1によれば,電力情報と性能シミュレーション情報とをもとに,プログラムの消費電力シミュレーションを,高速かつ高精度に行うことが可能となる。
よって,各ケースでの性能シミュレーションを行う必要がなく,性能シミュレーション処理の負荷増大を抑制しつつ,高精度に行うという効果を奏する。
1 シミュレーション装置
11 コード変換部
111 ブロック分割部
113 予測シミュレーション実行部
115 コード生成部
12 シミュレーション実行部
121 コード実行部
123 補正部
13 シミュレーション情報収集部
15 電力シミュレーション情報生成部
2 ターゲットプログラム
3 タイミング情報
4 予測情報
5 シミュレーション情報
6 電力情報
7 電力シミュレーション情報

Claims (5)

  1. パイプライン処理を制御するターゲットプロセッサに対するプログラムの命令実行のシミュレーションを実行するシミュレーション装置であって,
    前記プログラムのコードを所定のブロックに分割し,前記ブロックに含まれる命令のうち,該命令の実行結果が外部環境に依存する外部依存命令の処理の実行結果を予測結果として設定する処理と,前記予測結果を前提とする命令実行の機能シミュレーションを行い,前記ブロックに含まれる命令の実行タイミングを示すタイミング情報を得て,前記機能シミュレーションの結果と前記タイミング情報とをもとに,前記予測結果での外部依存命令の実行時間を算出する処理と,前記機能シミュレーションの結果をもとに,前記予測結果を前提とする命令実行の性能シミュレーションを,前記ターゲットプロセッサを動作させるホストプロセッサに実行させるホストコードを生成する処理とを行うコード変換部と,
    前記ホストプロセッサが前記生成されたホストコードを実行した実行結果において,該ホストコードに含まれる外部依存命令の実行結果が前記予測結果と異なる場合に,該外部依存命令の所定の遅延時間と前記外部依存命令の前後に実行される命令の実行時間とを用いて求めた補正値で,前記予測結果での外部依存命令の実行時間を補正して,前記機能シミュレーションでの該外部依存命令の実行時間とするシミュレーション実行部とを,備える
    ことを特徴とするシミュレーション装置。
  2. 前記シミュレーション実行部は,前記外部依存命令の次に実行される次命令の実行時間が,前記外部依存命令に付加される遅延時間を超えない場合に,前記次命令の実行時間を前記補正値として前記外部依存命令の遅延時間から減算する処理を行う
    ことを特徴とする請求項1に記載のシミュレーション装置。
  3. 前記ホストコードの命令セットの各命令の1実行当たりの消費電力量を定めた電力情報を得て,前記電力情報と前記機能シミュレーションの結果とをもとに,前記ブロックの実行時の電力シミュレーション情報を求める電力シミュレーション情報生成部を備える
    ことを特徴とする請求項1または請求項2に記載のシミュレーション装置。
  4. パイプライン処理を制御するターゲットプロセッサに対するプログラムの命令実行のシミュレーションを実行するシミュレーション方法であって,
    ホストCPUが,
    前記プログラムのコードを所定のブロックに分割し,前記ブロックに含まれる命令のうち,該命令の実行結果が外部環境に依存する外部依存命令の処理の実行結果を予測結果として設定する処理過程と,
    前記予測結果を前提とする命令実行の機能シミュレーションを行い,前記ブロックに含まれる命令の実行タイミングを示すタイミング情報を得て,前記機能シミュレーション結果と前記タイミング情報とをもとに,前記予測結果での外部依存命令の実行時間を算出する処理過程と,
    前記機能シミュレーション結果をもとに,前記予測結果を前提とする命令実行の性能シミュレーションを,前記ターゲットプロセッサを動作させるホストプロセッサに実行させるホストコードを生成する処理過程と,
    前記ホストプロセッサが前記生成されたホストコードを実行した実行結果において,該ホストコードに含まれる外部依存命令の実行結果が前記予測結果と異なる場合に,該外部依存命令の所定の遅延時間と前記外部依存命令の前後に実行される命令の実行時間とを用いて求めた補正値で,前記予測結果での外部依存命令の実行時間を補正して,前記機能シミュレーションでの該外部依存命令の実行時間とする処理過程とを,実行する
    ことを特徴とするシミュレーション方法。
  5. パイプライン処理を制御するターゲットプロセッサに対するプログラムの命令実行のシミュレーションを実行させるためのシミュレーションプログラムであって,
    ホストCPUに,
    前記プログラムのコードを所定のブロックに分割し,前記ブロックに含まれる命令のうち,実行結果が外部環境に依存する外部依存命令の処理の実行結果を予測結果として設定する処理と,
    前記予測結果を前提とする命令実行の機能シミュレーションを行い,前記ブロックに含まれる命令の実行タイミングを示すタイミング情報を得て,前記機能シミュレーション結果と前記タイミング情報とをもとに,前記予測結果での外部依存命令の実行時間を算出する処理と,
    前記機能シミュレーション結果をもとに,前記予測結果を前提とする命令実行の性能シミュレーションを,前記ターゲットプロセッサを動作させるホストプロセッサに実行させるホストコードを生成する処理と,
    前記ホストプロセッサが前記生成されたホストコードを実行した実行結果において,該ホストコードに含まれる外部依存命令の実行結果が前記予測結果と異なる場合に,該外部依存命令の所定の遅延時間と前記外部依存命令の前後に実行される命令の実行時間とを用いて求めた補正値で,前記予測結果での外部依存命令の実行時間を補正して,前記機能シミュレーションでの該外部依存命令の実行時間とする処理とを,実行させる
    ことを特徴とするシミュレーションプログラム。
JP2012538489A 2010-10-12 2010-10-12 シミュレーション装置,方法,およびプログラム Active JP5278624B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2010/067866 WO2012049728A1 (ja) 2010-10-12 2010-10-12 シミュレーション装置,方法,およびプログラム

Publications (2)

Publication Number Publication Date
JP5278624B2 true JP5278624B2 (ja) 2013-09-04
JPWO2012049728A1 JPWO2012049728A1 (ja) 2014-02-24

Family

ID=45937980

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012538489A Active JP5278624B2 (ja) 2010-10-12 2010-10-12 シミュレーション装置,方法,およびプログラム

Country Status (5)

Country Link
US (1) US9207916B2 (ja)
EP (1) EP2629197B1 (ja)
JP (1) JP5278624B2 (ja)
CN (1) CN103154890B (ja)
WO (1) WO2012049728A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8758129B2 (en) 2010-10-06 2014-06-24 Aristocrat Technologies Australia Pty Limited Gaming system and method of gaming in which symbol reels selectively rotate in less than a full rotation

Families Citing this family (80)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5961971B2 (ja) * 2011-10-12 2016-08-03 富士通株式会社 シミュレーション装置,方法,およびプログラム
US20140089645A1 (en) * 2012-09-27 2014-03-27 Texas Instruments Incorporated Processor with execution unit interoperation
JP6064765B2 (ja) * 2013-04-18 2017-01-25 富士通株式会社 シミュレーション装置、シミュレーション方法、およびシミュレーションプログラム
JP6264844B2 (ja) * 2013-11-01 2018-01-24 富士通株式会社 シミュレーション方法、シミュレーションプログラム、およびシミュレーション装置
US9678773B1 (en) 2014-09-30 2017-06-13 Amazon Technologies, Inc. Low latency computational capacity provisioning
US9600312B2 (en) 2014-09-30 2017-03-21 Amazon Technologies, Inc. Threading as a service
US10048974B1 (en) 2014-09-30 2018-08-14 Amazon Technologies, Inc. Message-based computation request scheduling
US9146764B1 (en) 2014-09-30 2015-09-29 Amazon Technologies, Inc. Processing event messages for user requests to execute program code
US9830193B1 (en) 2014-09-30 2017-11-28 Amazon Technologies, Inc. Automatic management of low latency computational capacity
US9715402B2 (en) 2014-09-30 2017-07-25 Amazon Technologies, Inc. Dynamic code deployment and versioning
US9323556B2 (en) 2014-09-30 2016-04-26 Amazon Technologies, Inc. Programmatic event detection and message generation for requests to execute program code
US9413626B2 (en) 2014-12-05 2016-08-09 Amazon Technologies, Inc. Automatic management of resource sizing
US9733967B2 (en) 2015-02-04 2017-08-15 Amazon Technologies, Inc. Security protocols for low latency execution of program code
US9588790B1 (en) 2015-02-04 2017-03-07 Amazon Technologies, Inc. Stateful virtual compute system
US9930103B2 (en) 2015-04-08 2018-03-27 Amazon Technologies, Inc. Endpoint management system providing an application programming interface proxy service
US9785476B2 (en) 2015-04-08 2017-10-10 Amazon Technologies, Inc. Endpoint management system and virtual compute system
US9811434B1 (en) 2015-12-16 2017-11-07 Amazon Technologies, Inc. Predictive management of on-demand code execution
US10754701B1 (en) 2015-12-16 2020-08-25 Amazon Technologies, Inc. Executing user-defined code in response to determining that resources expected to be utilized comply with resource restrictions
JP6740607B2 (ja) 2015-12-18 2020-08-19 富士通株式会社 シミュレーションプログラム、情報処理装置、シミュレーション方法
US9910713B2 (en) 2015-12-21 2018-03-06 Amazon Technologies, Inc. Code execution request routing
US10067801B1 (en) 2015-12-21 2018-09-04 Amazon Technologies, Inc. Acquisition and maintenance of compute capacity
US10891145B2 (en) 2016-03-30 2021-01-12 Amazon Technologies, Inc. Processing pre-existing data sets at an on demand code execution environment
US11132213B1 (en) 2016-03-30 2021-09-28 Amazon Technologies, Inc. Dependency-based process of pre-existing data sets at an on demand code execution environment
US10282229B2 (en) * 2016-06-28 2019-05-07 Amazon Technologies, Inc. Asynchronous task management in an on-demand network code execution environment
US10102040B2 (en) 2016-06-29 2018-10-16 Amazon Technologies, Inc Adjusting variable limit on concurrent code executions
US10203990B2 (en) 2016-06-30 2019-02-12 Amazon Technologies, Inc. On-demand network code execution with cross-account aliases
US10277708B2 (en) 2016-06-30 2019-04-30 Amazon Technologies, Inc. On-demand network code execution with cross-account aliases
US10061613B1 (en) 2016-09-23 2018-08-28 Amazon Technologies, Inc. Idempotent task execution in on-demand network code execution systems
US10884787B1 (en) 2016-09-23 2021-01-05 Amazon Technologies, Inc. Execution guarantees in an on-demand network code execution system
US11119813B1 (en) 2016-09-30 2021-09-14 Amazon Technologies, Inc. Mapreduce implementation using an on-demand network code execution system
CN111295658B (zh) * 2017-11-10 2023-05-09 三菱电机株式会社 模拟装置、模拟方法和计算机能读取的存储介质
US10564946B1 (en) 2017-12-13 2020-02-18 Amazon Technologies, Inc. Dependency handling in an on-demand network code execution system
US10353678B1 (en) 2018-02-05 2019-07-16 Amazon Technologies, Inc. Detecting code characteristic alterations due to cross-service calls
US10733085B1 (en) 2018-02-05 2020-08-04 Amazon Technologies, Inc. Detecting impedance mismatches due to cross-service calls
US10831898B1 (en) 2018-02-05 2020-11-10 Amazon Technologies, Inc. Detecting privilege escalations in code including cross-service calls
US10725752B1 (en) 2018-02-13 2020-07-28 Amazon Technologies, Inc. Dependency handling in an on-demand network code execution system
US10776091B1 (en) 2018-02-26 2020-09-15 Amazon Technologies, Inc. Logging endpoint in an on-demand code execution system
US10853115B2 (en) 2018-06-25 2020-12-01 Amazon Technologies, Inc. Execution of auxiliary functions in an on-demand network code execution system
US10649749B1 (en) 2018-06-26 2020-05-12 Amazon Technologies, Inc. Cross-environment application of tracing information for improved code execution
US11146569B1 (en) 2018-06-28 2021-10-12 Amazon Technologies, Inc. Escalation-resistant secure network services using request-scoped authentication information
US10949237B2 (en) 2018-06-29 2021-03-16 Amazon Technologies, Inc. Operating system customization in an on-demand network code execution system
WO2020017264A1 (ja) * 2018-07-19 2020-01-23 日立オートモティブシステムズ株式会社 シミュレーション装置、及びその方法、並びにecu装置
US11099870B1 (en) 2018-07-25 2021-08-24 Amazon Technologies, Inc. Reducing execution times in an on-demand network code execution system using saved machine states
US11099917B2 (en) 2018-09-27 2021-08-24 Amazon Technologies, Inc. Efficient state maintenance for execution environments in an on-demand code execution system
US11243953B2 (en) 2018-09-27 2022-02-08 Amazon Technologies, Inc. Mapreduce implementation in an on-demand network code execution system and stream data processing system
US11943093B1 (en) 2018-11-20 2024-03-26 Amazon Technologies, Inc. Network connection recovery after virtual machine transition in an on-demand network code execution system
US10706193B1 (en) * 2018-12-04 2020-07-07 Xilinx, Inc. Computer processing during simulation of a circuit design
US10884812B2 (en) 2018-12-13 2021-01-05 Amazon Technologies, Inc. Performance-based hardware emulation in an on-demand network code execution system
JP7310465B2 (ja) * 2018-12-27 2023-07-19 オムロン株式会社 同期制御装置、同期制御システム、同期制御方法、及びシミュレーション装置
US11010188B1 (en) 2019-02-05 2021-05-18 Amazon Technologies, Inc. Simulated data object storage using on-demand computation of data objects
US11861386B1 (en) 2019-03-22 2024-01-02 Amazon Technologies, Inc. Application gateways in an on-demand network code execution system
US11119809B1 (en) 2019-06-20 2021-09-14 Amazon Technologies, Inc. Virtualization-based transaction handling in an on-demand network code execution system
US11115404B2 (en) 2019-06-28 2021-09-07 Amazon Technologies, Inc. Facilitating service connections in serverless code executions
US11159528B2 (en) 2019-06-28 2021-10-26 Amazon Technologies, Inc. Authentication to network-services using hosted authentication information
US11190609B2 (en) 2019-06-28 2021-11-30 Amazon Technologies, Inc. Connection pooling for scalable network services
US11023311B2 (en) 2019-09-27 2021-06-01 Amazon Technologies, Inc. On-demand code execution in input path of data uploaded to storage service in multiple data portions
US11656892B1 (en) 2019-09-27 2023-05-23 Amazon Technologies, Inc. Sequential execution of user-submitted code and native functions
US11106477B2 (en) 2019-09-27 2021-08-31 Amazon Technologies, Inc. Execution of owner-specified code during input/output path to object storage service
US11416628B2 (en) 2019-09-27 2022-08-16 Amazon Technologies, Inc. User-specific data manipulation system for object storage service based on user-submitted code
US10908927B1 (en) 2019-09-27 2021-02-02 Amazon Technologies, Inc. On-demand execution of object filter code in output path of object storage service
US10996961B2 (en) 2019-09-27 2021-05-04 Amazon Technologies, Inc. On-demand indexing of data in input path of object storage service
US11055112B2 (en) 2019-09-27 2021-07-06 Amazon Technologies, Inc. Inserting executions of owner-specified code into input/output path of object storage service
US11394761B1 (en) 2019-09-27 2022-07-19 Amazon Technologies, Inc. Execution of user-submitted code on a stream of data
US11263220B2 (en) 2019-09-27 2022-03-01 Amazon Technologies, Inc. On-demand execution of object transformation code in output path of object storage service
US11550944B2 (en) 2019-09-27 2023-01-10 Amazon Technologies, Inc. Code execution environment customization system for object storage service
US11023416B2 (en) 2019-09-27 2021-06-01 Amazon Technologies, Inc. Data access control system for object storage service based on owner-defined code
US11386230B2 (en) 2019-09-27 2022-07-12 Amazon Technologies, Inc. On-demand code obfuscation of data in input path of object storage service
US11250007B1 (en) 2019-09-27 2022-02-15 Amazon Technologies, Inc. On-demand execution of object combination code in output path of object storage service
US11360948B2 (en) 2019-09-27 2022-06-14 Amazon Technologies, Inc. Inserting owner-specified data processing pipelines into input/output path of object storage service
US11119826B2 (en) 2019-11-27 2021-09-14 Amazon Technologies, Inc. Serverless call distribution to implement spillover while avoiding cold starts
US10942795B1 (en) 2019-11-27 2021-03-09 Amazon Technologies, Inc. Serverless call distribution to utilize reserved capacity without inhibiting scaling
CN111324948B (zh) * 2020-02-10 2023-04-25 上海兆芯集成电路有限公司 模拟方法及模拟系统
US11714682B1 (en) 2020-03-03 2023-08-01 Amazon Technologies, Inc. Reclaiming computing resources in an on-demand code execution system
US11188391B1 (en) 2020-03-11 2021-11-30 Amazon Technologies, Inc. Allocating resources to on-demand code executions under scarcity conditions
US11775640B1 (en) 2020-03-30 2023-10-03 Amazon Technologies, Inc. Resource utilization-based malicious task detection in an on-demand code execution system
US11550713B1 (en) 2020-11-25 2023-01-10 Amazon Technologies, Inc. Garbage collection in distributed systems using life cycled storage roots
US11593270B1 (en) 2020-11-25 2023-02-28 Amazon Technologies, Inc. Fast distributed caching using erasure coded object parts
US11388210B1 (en) 2021-06-30 2022-07-12 Amazon Technologies, Inc. Streaming analytics using a serverless compute system
US11968280B1 (en) 2021-11-24 2024-04-23 Amazon Technologies, Inc. Controlling ingestion of streaming data to serverless function executions
US12015603B2 (en) 2021-12-10 2024-06-18 Amazon Technologies, Inc. Multi-tenant mode for serverless code execution

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10254944A (ja) * 1997-01-08 1998-09-25 Toshiba Corp パワーシミュレーション装置、パワーシミュレーション方法、及びパワーシミュレーションプログラムを記録した機械読み取り可能な記録媒体
JP2000222245A (ja) * 1999-01-28 2000-08-11 Toshiba Corp プログラム実行時間評価装置、ソースプログラム実行時間評価装置、プログラム実行時間評価方法、及びソースプログラム実行時間評価方法
JP2004227204A (ja) * 2003-01-22 2004-08-12 Hitachi Ltd 性能予測方法
JP2006023852A (ja) * 2004-07-06 2006-01-26 Handotai Rikougaku Kenkyu Center:Kk ソフトウェア検証モデル生成方法

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6263302B1 (en) * 1999-10-29 2001-07-17 Vast Systems Technology Corporation Hardware and software co-simulation including simulating the cache of a target processor
US6751583B1 (en) * 1999-10-29 2004-06-15 Vast Systems Technology Corporation Hardware and software co-simulation including simulating a target processor using binary translation
US7200738B2 (en) * 2002-04-18 2007-04-03 Micron Technology, Inc. Reducing data hazards in pipelined processors to provide high processor utilization
US7603546B2 (en) * 2004-09-28 2009-10-13 Intel Corporation System, method and apparatus for dependency chain processing
JP2008176453A (ja) * 2007-01-17 2008-07-31 Nec Electronics Corp シミュレーション装置
CN101799750B (zh) * 2009-02-11 2015-05-06 上海芯豪微电子有限公司 一种数据处理的方法与装置
JP5961971B2 (ja) * 2011-10-12 2016-08-03 富士通株式会社 シミュレーション装置,方法,およびプログラム

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10254944A (ja) * 1997-01-08 1998-09-25 Toshiba Corp パワーシミュレーション装置、パワーシミュレーション方法、及びパワーシミュレーションプログラムを記録した機械読み取り可能な記録媒体
JP2000222245A (ja) * 1999-01-28 2000-08-11 Toshiba Corp プログラム実行時間評価装置、ソースプログラム実行時間評価装置、プログラム実行時間評価方法、及びソースプログラム実行時間評価方法
JP2004227204A (ja) * 2003-01-22 2004-08-12 Hitachi Ltd 性能予測方法
JP2006023852A (ja) * 2004-07-06 2006-01-26 Handotai Rikougaku Kenkyu Center:Kk ソフトウェア検証モデル生成方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8758129B2 (en) 2010-10-06 2014-06-24 Aristocrat Technologies Australia Pty Limited Gaming system and method of gaming in which symbol reels selectively rotate in less than a full rotation

Also Published As

Publication number Publication date
EP2629197A1 (en) 2013-08-21
US9207916B2 (en) 2015-12-08
JPWO2012049728A1 (ja) 2014-02-24
CN103154890A (zh) 2013-06-12
EP2629197A4 (en) 2017-12-13
WO2012049728A1 (ja) 2012-04-19
CN103154890B (zh) 2016-04-13
EP2629197B1 (en) 2019-09-11
US20130227534A1 (en) 2013-08-29

Similar Documents

Publication Publication Date Title
JP5278624B2 (ja) シミュレーション装置,方法,およびプログラム
JP5961971B2 (ja) シミュレーション装置,方法,およびプログラム
Fields et al. Focusing processor policies via critical-path prediction
US20110197174A1 (en) Method, System and Computer Readable Medium for Generating Software Transaction-Level Modeling (TLM) Model
US10564992B2 (en) Simulation apparatus and storage medium
US9465595B2 (en) Computing apparatus, computing method, and computing program
Wang et al. Fast and accurate cache modeling in source-level simulation of embedded software
JP5817324B2 (ja) 補正装置、補正方法、および補正プログラム
US7684971B1 (en) Method and system for improving simulation performance
Van Biesbrouck et al. Efficient sampling startup for sampled processor simulation
US10402510B2 (en) Calculating device, calculation method, and calculation program
WO2015045472A1 (ja) シミュレーション装置、シミュレーション方法およびシミュレーションプログラム
Mutlu et al. Understanding the effects of wrong-path memory references on processor performance
US20160011889A1 (en) Simulation method and storage medium
Larson et al. Compiler controlled value prediction using branch predictor based confidence
JP6740607B2 (ja) シミュレーションプログラム、情報処理装置、シミュレーション方法
JP5440083B2 (ja) シミュレーション装置、方法およびプログラム
US20150127318A1 (en) Apparatus and method for simulating an operation of an out-of-order processor
Posadas et al. Static Write Buffer Cache Modeling to Increase Host-Compiled Simulation Accuracy
US9880841B2 (en) Computation method for computing performance value when processor executes code, computation apparatus for computing performance value when processor executes code, and computer readable storage medium storing computation program for computing performance value when processor executes code
Whitham et al. Predictable out-of-order execution using virtual traces
Manjunath et al. Static Analysis of CPU Execution Time Using Implict Path Enumeration Techniques

Legal Events

Date Code Title Description
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: 20130423

R150 Certificate of patent or registration of utility model

Ref document number: 5278624

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150