JP6740607B2 - シミュレーションプログラム、情報処理装置、シミュレーション方法 - Google Patents

シミュレーションプログラム、情報処理装置、シミュレーション方法 Download PDF

Info

Publication number
JP6740607B2
JP6740607B2 JP2015247976A JP2015247976A JP6740607B2 JP 6740607 B2 JP6740607 B2 JP 6740607B2 JP 2015247976 A JP2015247976 A JP 2015247976A JP 2015247976 A JP2015247976 A JP 2015247976A JP 6740607 B2 JP6740607 B2 JP 6740607B2
Authority
JP
Japan
Prior art keywords
simulation
execution
instruction
main memory
result
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
JP2015247976A
Other languages
English (en)
Other versions
JP2017111768A (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 JP2015247976A priority Critical patent/JP6740607B2/ja
Priority to US15/299,509 priority patent/US10671780B2/en
Publication of JP2017111768A publication Critical patent/JP2017111768A/ja
Application granted granted Critical
Publication of JP6740607B2 publication Critical patent/JP6740607B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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
    • G06F2115/00Details relating to the type of the circuit
    • G06F2115/10Processors

Description

本発明は、シミュレーションプログラム、情報処理装置、およびシミュレーション方法に関する。
機能、性能、消費電力のシミュレーションにおいて、評価対象であるターゲットCPUの命令コード(ターゲットコード)からホストCPUの命令コード(ホストコード)への変換手法として、インタープリタ方式またはJust-in-Time(JIT)コンパイラ方式が知られている。
JITコンパイラ方式によるシミュレーションでは、シミュレーション対象であるターゲットCPUについて、実行中のプログラムに出現するターゲットCPUの命令を、シミュレーションを実行するホストCPUの命令に置き換え、以降では、その置き換えた命令を実行している。そのため、JITコンパイラ方式の処理は、インタープリタ方式の処理に比べて高速であり、CPUの機能シミュレーションでは、特に高速性が求められる場合にJITコンパイル方式が採用されていた。JITコンパイラ方式を採用するCPUの性能シミュレーションも提案されている。
CPUの性能シミュレーションを高速に行うことが可能なシミュレーション装置が知られている(例えば、特許文献1参照)。
また、高密度、高速、且つバイトアクセス可能(ロード・ストア命令でアクセス可能)な不揮発性メモリ(Non-Volatile Random Access Memory:NVRAM)が開発されている。このような不揮発性メモリとしては、例えば、相変化メモリ(Phase Change Random Access Memory:PCM)、抵抗変化型メモリ(Resistance Random Access Memory:ReRAM)、または磁気抵抗メモリ(Magnetoresistive Random Access Memory:MRAM)がある。そして、揮発性メモリ(例えば、Dynamic Random Access Memory:DRAM)と不揮発性メモリの両方を主記憶装置として用いたハイブリッドメモリシステムが登場している。
国際公開第2012/049728号 特開2014−182836号公報 特開2014−153965号公報
従来の性能シミュレーションでは、主記憶装置に用いるメモリは1種類であることが前提であるため、2種類のメモリ(例えば、DRAMとNVRAM)を主記憶装置に用いるハイブリッドメモリシステムの性能シミュレーションを行うことが困難である。
本発明の課題は、複数の種類のメモリを主記憶装置に用いた装置の性能シミュレーションを行うことである。
実施の形態に係るシミュレーションプログラムは、ターゲットプロセッサに対するプログラムの命令実行のシミュレーションをコンピュータに実行させる。
前記シミュレーションプログラムは、前記コンピュータに、前記プログラムのコードに含まれる主記憶アクセス命令の処理の実行結果を予測結果として設定させる。
前記シミュレーションプログラムは、前記コンピュータに、前記予測結果を前提とする命令実行の機能シミュレーションを行い、前記主記憶アクセス命令の実行タイミングを示すタイミング情報を得て、前記機能シミュレーションの結果と前記タイミング情報とをもとに、前記予測結果での主記憶アクセス命令の実行時間を算出させる。
前記シミュレーションプログラムは、前記コンピュータに、前記機能シミュレーションの結果をもとに、前記予測結果を前提とする命令実行の性能シミュレーションに用いられる、前記主記憶アクセス命令を含むホストコードを生成し、前記生成されたホストコードを実行させる。
前記シミュレーションプログラムは、前記コンピュータに、前記ホストコードに含まれる前記主記憶アクセス命令におけるキャッシュアクセスの実行結果が前記予測結果と異なる場合に、前記主記憶アクセス命令においてアクセスする主記憶装置として用いられているメモリデバイスの種類を、前記キャッシュアクセスのシミュレーション時におけるキャッシュのアドレスに基づいて判定させる。
前記シミュレーションプログラムは、前記コンピュータに、前記メモリデバイスの種類の判定結果に応じた補正値を用いて、前記予測結果での主記憶アクセス命令の実行時間を補正して、前記機能シミュレーションでの前記主記憶アクセス命令の実行時間とさせる。
実施の形態のシミュレーションプログラムによれば、複数の種類のメモリを主記憶装置に用いた装置の性能シミュレーションを行うことができる。
ハイブリッドメモリシステムの構成例(その1)である。 ハイブリッドメモリシステムの構成例(その2)である。 第1の実施の形態に係るシミュレーション装置の構成図である。 ブロックに含まれる命令の例を示す図である。 タイミング情報の例を示す図である。 図3に示す命令実行のタイミング例を示す図である。 図3に示す命令実行のタイミング例を示す図である。 ターゲットコードから機能シミュレーションのホストコードが生成される例を示す図である。 機能シミュレーションのホストコードにサイクルシミュレーション用コードが組み込まれる例を示す図である。 第1の実施の形態に係るシミュレーション装置のホストコード生成処理のフローチャートである。 第1の実施の形態に係るシミュレーション装置のシミュレーション処理のフローチャートである。 第1の実施の形態に係る補正部(ヘルパー関数)の呼び出し処理の詳細なフローチャートである。 補正部によるLDR命令の実行結果に対する補正例を示す図である。 補正部によるLDR命令の実行結果に対する補正例を示す図である。 補正部によるLDR命令の実行結果に対する補正例を示す図である。 従来のLDR命令の実行結果に対する補正例を示す図である。 第2の実施の形態に係るシミュレーション装置の構成図である。 第2の実施の形態に係る補正部(ヘルパー関数)の呼び出し処理の詳細なフローチャートである。 第2の実施の形態に係るヘルパー関数呼び出し命令の書き換え後の補正部(ヘルパー関数)の呼び出し処理の詳細なフローチャート(その1)である。 第2の実施の形態に係るヘルパー関数呼び出し命令の書き換え後の補正部(ヘルパー関数)の呼び出し処理の詳細なフローチャート(その2)である。 第3の実施の形態に係るシミュレーション装置の構成図である。 第3の実施の形態に係るシミュレーション装置のホストコード生成処理のフローチャートである。 情報処理装置(コンピュータ)の構成図である。
以下、図面を参照しながら実施の形態について説明する。
初めに、実施の形態において、シミュレーションの対象となるCPU(ターゲットCPU)を含むハイブリッドメモリシステムについて説明する。
ハイブリッドメモリシステムは、揮発性メモリと不揮発性メモリ(NVRAM)の両方を主記憶装置として用いたシステムである。主記憶装置に対して、CPUはロード命令およびストア命令でアクセス可能である。揮発性メモリは、例えば、DRAMである。不揮発性メモリは、例えば、相変化メモリ(PCM)、抵抗変化型メモリ(ReRAM)、または磁気抵抗メモリ(MRAM)である。
図1Aは、ハイブリッドメモリシステムの構成例(その1)である。
ハイブリッドメモリシステム11は、CPU12、DRAM13、およびNVRAM14を備える。CPU12、DRAM13、およびNVRAM14は、バス15を介して接続している。
CPU12はキャッシュ(不図示)を有し、CPU12がデータを読み出す場合に、当該データがキャッシュに格納されていれば、キャッシュからデータを読み出す。データがキャッシュに格納されていなければ、DRAM13またはNVRAM14からデータを読み出す。
図1Bは、ハイブリッドメモリシステムの構成例(その2)である。
ハイブリッドメモリシステム21は、CPU22、DRAM23、およびNVRAM24を備える。CPU22とDRAM23はバス25−1を介して接続し、DRAM23とNVRAM24は、バス25−2を介して接続している。ハイブリッドメモリシステム21において、DRAM23はNVRAM24のキャッシュとして動作する。
CPU22はキャッシュ(不図示)を有し、CPU22がデータを読み出す場合に、当該データがキャッシュに格納されていれば、キャッシュからデータを読み出す。データがキャッシュに格納されていなければ、DRAM23またはNVRAM24からデータを読み出す。
(第1の実施の形態)
図2は、第1の実施の形態に係るシミュレーション装置の構成図である。
シミュレーション装置101は、パイプライン処理を制御するターゲットCPUにおける命令実行の性能シミュレーションを実行する装置である。シミュレーション装置101は、例えば、サーバやパーソナルコンピュータ(PC)等の情報処理装置である。
ターゲットCPUは、シミュレーションの対象となるCPUの制御モデルである。シミュレーション装置101は、ターゲットCPUの命令実行の性能シミュレーションとして各命令のサイクルシミュレーション情報を出力する。
ここで、ターゲットCPUは、例えばARMアーキテクチャのCPUである。ホストCPUに相当するシミュレーション装置101は、例えばx86アーキテクチャのCPUを搭載するコンピュータである。実施の形態において、ターゲットCPUは、ハイブリッドメモリシステムに搭載されたCPUとする。
シミュレーション装置101は、コード変換部110、シミュレーション実行部120、およびシミュレーション情報収集部130を有する。
コード変換部110は、ターゲットCPUのプログラムの実行時に、ターゲットCPUが実行するプログラムのコード(ターゲットコード)から、シミュレーションを実行するホストCPUのコード(ホストコード)を生成する処理部である。
コード変換部110は、ブロック分割部111、予測シミュレーション実行部113、コード生成部115を有する。
ブロック分割部111は、シミュレーション装置101に入力されたプログラムのターゲットコードを、所定のブロックに分割する。分割されるブロック単位は、例えば、一般的なベーシックブロック(分岐から次の分岐前までのコード)単位でよく、または、予め定められた任意のコード単位でよい。
図3は、ブロックに含まれる命令の例を示す図である。
図3に示すように、あるブロックには、ターゲットコードの3つの命令;(1)“LDR [r1],r2”(ロード);(2)“MUL r3,r4, r5(乗算)”;(3)“ADD r2,r5, r6(加算)”の命令が含まれ、(1)〜(3)の順でターゲットCPUのパイプラインに投入されて実行されるとする。各命令のr1〜r6は、レジスタ(アドレス)を表す。
予測シミュレーション実行部113は、タイミング情報301と予測情報401とを得て、入力されたブロックをある実行結果を前提とした条件下で実行する性能シミュレーションを行う処理部である。
タイミング情報301は、ターゲットコードの各命令について、命令実行時の各処理要素(段階)と使用可能なレジスタとの対応を示す情報と、命令のうち外部依存命令ごとに、実行結果に応じた遅延時間を定めるペナルティ時間(ペナルティサイクル数)とを示す情報である。
外部依存命令は、外部環境が関係する処理を行う命令、例えば、ロード命令またはストア命令を含む主記憶アクセス命令などのように、命令の実行結果がターゲットCPU外の外部環境に依存するような処理、例えば、命令キャッシュ、データキャッシュ、TLB検索などであったり、さらには、分岐予測、コール/リターンのスタックなどの処理を行う命令である。
図4は、タイミング情報301の例を示す図である。
図4に示すタイミング情報301では、LDR命令について、ソースレジスタrs1(r1)は1番目の処理要素(e1)で、宛先レジスタrd(r2)は2番目の処理要素(e2)で使用可能であることを表す。タイミング情報301は、LDR命令について、キャッシュミス時のペナルティを示す情報を含む。詳細には、キャッシュミス時にターゲットCPUがアクセスする主記憶装置がDRAMの場合とNVRAMの場合のそれぞれのペナルティ(サイクル)を示す情報を含む。図4のタイミング情報301において、キャッシュミス時にターゲットCPUがアクセスする主記憶装置がDRAMの場合、ペナルティは6サイクル、キャッシュミス時にターゲットCPUがアクセスする主記憶装置がNVRAMの場合、ペナルティは22サイクルである。
また、MUL命令では、第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)で使用可能であることを示す。
図5Aおよび5Bは、図3に示すブロックの各命令の実行タイミング例を示す図である。
図4に示すタイミング情報301から、パイプラインに各命令が投入されるタイミングは、LDR命令の実行開始がタイミングtとすると、MUL命令はタイミングt+1、ADD命令はタイミングt+2となる。
ADD命令の第1ソースレジスタ(r2)と第2ソースレジスタ(r5)は、LDR命令とMUL命令で使用されているため、ADD命令の開始は、LDR命令とMUL命令の実行完了のタイミングt+4以降となり、2サイクル分の待機時間(2サイクル分のストール)が生じる。
したがって、図5Aに示すように、図3に示すブロックをシミュレーションした場合に、LDR命令の実行結果がキャッシュヒットであるケースでは、ブロックの実行時間が6サイクルであることがわかる。
図5Bは、図3に示すブロックのLDR命令の実行結果がキャッシュミスである場合のタイミング例を表す。
LDR命令の結果がキャッシュミスであり且つCPUがアクセスする主記憶装置がDRAMであるとすると、タイミング情報301に、ペナルティとして、再実行に十分と考えられる任意の時間(ここでは6サイクル分)が設定されているため、このペナルティサイクルが遅延時間として追加される。したがって、2番目の処理要素(e2)の実行は、タイミングt+7に遅延する。LDR命令の次に実行されるMUL命令は、遅延の影響を受けずにそのまま実行されるが、ADD命令は、LDR命令の実行完了のタイミングt+8以降となり、4サイクル分の待機時間(4サイクル分のストール)が生じる。
したがって、図5Bに示すように、図3に示すブロックの命令実行をシミュレーションした場合に、LDR命令の実行結果がキャッシュミスであり且つCPUがアクセスする主記憶装置がDRAMであるケースでは、実行時間が10サイクルとなることがわかる。
予測情報401は、ターゲットコードの外部依存命令の処理において、生じる確率が高い実行結果(予測結果)を定めた情報である。予測情報401には、例えば、下記のような情報が定められている。
・命令キャッシュ:予測=ヒット
・データキャッシュ:予測=ヒット
・TLB検索:予測=ヒット
・分岐予測:予測=ヒット
・コール/リターン:予測=ヒット
予測シミュレーション実行部113は、上記の予測情報401をもとに、入力されたブロックに含まれる外部依存命令の予測結果を設定し、タイミング情報301を参照して、設定した予測結果を前提とする場合(予測ケース)の命令を実行して、命令実行の進み具合をシミュレーションする。予測シミュレーション実行部113は、シミュレーション結果として、ブロックに含まれる各命令の実行時間(所要サイクル数)を求める。
コード生成部115は、予測シミュレーション実行部113のシミュレーション結果をもとに、処理したブロックに対応するホストコードとして、設定された予測ケースにおける命令実行時の性能シミュレーションを行うためのホストコード(性能シミュレーション用ホストコード)を生成する処理部である。
コード生成部115は、ブロックのターゲットコードをもとに、外部依存命令が予測結果である予測ケースの場合の命令実行を行うホストコードを生成し、さらに、各命令の実行時間を加算して、ブロックの処理時間を計算する処理を行うシミュレーション用コードを組み込む。
例えば、コード生成部115は、データのLDR命令の予測結果として“キャッシュヒット”が設定されている処理については、そのブロック内のLDR命令によるキャッシュアクセスが“ヒット”である場合の処理実行をシミュレーションして、この予測ケースでの実行時間を求め、LDR命令によるキャッシュアクセスが“ミス”である場合の実行時間は、予測ケースである“ヒット”時の実行時間に対する加算を用いた補正計算により求める処理を行うホストコードを生成する。
シミュレーション実行部120は、コード生成部115が生成したホストコードを実行して、プログラム(ターゲットコード)を実行するターゲットCPUの命令実行の機能および性能シミュレーションを行う処理部である。
シミュレーション実行部120は、コード実行部121、補正部123、および判定部125を有する。
コード実行部121は、ホストコードを用いて、プログラム(ターゲットコード)を実行する処理部である。
補正部123は、プログラムの実行中に、外部依存命令の実行結果が、設定されていた予測結果と異なる場合(予測外ケース)に、判定部125による判定結果に基づいて、その命令の実行時間を、既に求めた予測ケースでの実行時間を補正して求める。
補正部123は、外部依存命令に与えられるペナルティ時間、外部依存命令の前後で実行される命令の実行時間、1つ前の命令の遅延時間などを用いて補正を行う。なお、補正処理の詳細は後述する。
判定部125は、プログラムの実行中に、外部依存命令の実行結果が、設定されていた予測結果と異なる場合(予測外ケース)に、ターゲットCPUがアクセスする主記憶装置の種類を判定する。
シミュレーション情報収集部130は、性能シミュレーションの実行結果として、各命令の実行時間を含むシミュレーション情報501を収集する。
以下に、シミュレーション装置101の処理の流れを説明する。
〔コード変換処理〕
(1) シミュレーション装置101のコード変換部110のブロック分割部111は、ターゲットプログラム201のターゲットコードを得て記憶部(図2に図示しない)に保持し、保持したターゲットコードを任意のブロックに分割する(図3参照)。
(2) 予測シミュレーション実行部113は、入力されるターゲットプログラム201に関するタイミング情報301、予測情報401を得て記憶部に保存する。
そして、予測シミュレーション実行部113は、予測情報401をもとに、分割されたブロックの外部依存命令のそれぞれについて予測結果を設定する。例えば、予測シミュレーション実行部113は、図4に示すブロックの命令のうち、LDR命令のデータキャッシュの予測結果として「ヒット」を設定する。
(3) 予測シミュレーション実行部113は、ブロックのコードを解釈して、設定された予測結果を前提とする場合の命令実行をシミュレーションする。すなわち、予測シミュレーション実行部113は、図5Aに示すタイミング例の命令実行をシミュレーションすることになる。
(4) 次に、コード生成部115は、予測ケースのシミュレーション結果をもとに、ターゲットコードからホストコードを生成する。さらに、コード生成部115は、ターゲットコードから変換したホストコード(機能コードのみ)に、性能シミュレーション(サイクルシミュレーション)を実行するためのサイクルシミュレーション用コードを組み込む。
図6Aは、ターゲットコードから機能シミュレーションのホストコードが生成される例を示す図、図6Bは、機能シミュレーションのホストコードにサイクルシミュレーション用コードが組み込まれる例を示す図である。
図6Aに示すように、ターゲットコード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) シミュレーション実行部120のコード実行部121は、コード変換部110が生成したホストコードを用いて、ターゲットプログラム201の性能シミュレーションを行う。
コード実行部121は、ターゲットプログラム201の命令実行をシミュレーションし、各命令の実行時間を得ていく。
(2) コード実行部121は、シミュレーションの実行中に、外部依存命令(例えばLDR命令)を検出した場合に、補正部123が呼び出される。
(3) 補正部123は、外部依存命令の実行結果が、設定された予測結果と異なっているかを判定し、実行結果が予測結果と違っている場合に、補正する。例えば、命令「LDR [r1],r2」が検出され、データキャッシュの予測結果(キャッシュヒット)と、実際の実行結果(キャッシュミス)と、が異なっていた場合に、補正部123は、検出された命令「LDR [r1],r2」の実行時間(サイクル数)を補正する。さらに、補正部123は、この補正により、次命令の実行タイミングt+nも変更する。
補正部123は、外部依存命令の実行結果が予測結果と異なる度に、命令の実行時間を補正する。ここで、予測ケースでの外部依存命令の実行時間は既に定数化されているため、補正部123は、予測外ケースでの外部依存命令の実行時間を、その命令に対するペナルティ時間、前後に実行される命令の実行時間、前に処理された命令の遅延時間等の値を単に加算または減算して計算することができる。
図7は、第1の実施の形態に係るシミュレーション装置のホストコード生成処理のフローチャートである。
ステップS701において、ブロック分割部111は、ターゲットプログラムのコード(ターゲットコード)を所定の単位のブロックに分割する。
ステップS702において、予測シミュレーション実行部113は、ブロックの命令を分析して,外部依存命令を検出する。
ステップS703において、予測シミュレーション実行部113は、検出した全ての命令について、予測情報401をもとに、確率が高い実行結果を予測ケースとして決定する。
ステップS704において、予測シミュレーション実行部113は、タイミング情報301を参照して、ブロックの各命令について予測結果として設定された実行結果を前提とする性能シミュレーションを実行する。
ステップS705において、コード生成部115は、シミュレーション結果をもとに、シミュレーション実行部120が実行する性能シミュレーション用ホストコードを生成する。
以上のステップS701〜S705の処理により,設定された実行結果の場合(予測ケース)での機能コードに,ターゲットCPUの性能をシミュレーションするコードが組み込まれたホストコードが出力される。
図8は、第1の実施の形態に係るシミュレーション装置のシミュレーション処理のフローチャートである。
ステップS710において、コード実行部121は、コード生成部115が生成したホストコードを実行し、性能シミュレーションを行う。
ステップS711において、コード実行部121は、実行中に外部依存命令を検出する。
ステップS712において、コード実行部121は、補正部(ヘルパー関数)の呼び出し処理を行う。尚、補正部(ヘルパー関数)の呼び出し処理の詳細は後述する。
ステップS713において、シミュレーション情報収集部130は,ターゲットプログラムに相当するホストコード全てのシミュレーション処理についてのシミュレーション情報501を出力する。
以上のステップS710〜S713の処理ステップにより、ターゲットプログラム201を実行するターゲットCPUのシミュレーション情報(サイクルシミュレーション情報)501が出力される。
図9は、第1の実施の形態に係る補正部(ヘルパー関数)の呼び出し処理の詳細なフローチャートである。図9は、外部依存命令のうちの一例として、主記憶アクセス命令のロード(LDR)命令の処理についての予測結果の判定および補正の処理を示す。
図9は、図8のステップS712に相当する。
ステップS2720において、コード実行部121は、ヘルパー関数呼出し命令で指定されるヘルパー関数を呼び出す。第1の実施の形態において、ヘルパー関数(判定処理あり)が呼び出され、ヘルパー関数(判定処理あり)により以下のステップS721〜S725,S727,S728が実行される。
ステップS721において、コード実行部121は、LDR命令によりキャッシュアクセスが要求されているかを判定する。キャッシュアクセスが要求されている場合、制御はステップS722に進み、キャッシュアクセスが要求されていない場合、制御はステップS724に進む。
ステップS722において、補正部123は、キャッシュアクセスをシミュレーションする。
ステップS723において、補正部123は、ステップS722のシミュレーションによるキャッシュアクセスの結果を判定する。キャッシュアクセスの結果が“キャッシュヒット”の場合、制御はステップS724に進み、キャッシュアクセスの結果が“キャッシュミス”の場合、制御はステップS725に進む。尚、図9では、“キャッシュヒット”を予測ケースとした場合を説明している。
ステップS724において、補正部123は,未補正の予測された実行時間(サイクル数)を出力する。
ステップS725において、判定部125は、キャッシュミス時にターゲットCPUがアクセスするメモリデバイス(主記憶装置)の種類を判定する。メモリデバイスの種類は、キャッシュアクセスのシミュレーション時のキャッシュのアドレスに基づいて判定される。判定部125は、例えば、メモリデバイスがDRAMである、またはメモリデバイスがNVRAMであると判定する。
ステップS727において、補正部123は、メモリデバイスの判定結果とタイミング情報301に基づいて、LDR命令の実行時間(サイクル数)の補正を行う。例えば、メモリデバイスの判定結果がDRAMである場合、図4のタイミング情報301には「キャッシュミス(DRAM):6」と記載されているので、補正部123は、6サイクルを用いて実行時間(サイクル数)の補正を行う。また、例えば、メモリデバイスの判定結果がNVRAMである場合、図4のタイミング情報301には「キャッシュミス(NVRAM):22」と記載されているので、補正部123は、22サイクルを用いて実行時間(サイクル数)の補正を行う。
ステップS728において、補正部123は、補正された実行時間(サイクル数)を出力する。
図10A〜10Cは、補正部123によるLDR命令の実行結果に対する補正例を示す図である。図10Dは、従来のLDR命令の実行結果に対する補正例を示す図である。
図10A〜10Dは、1つのキャッシュ処理が実行されるケースで1つのキャッシュミスが生じた場合の補正例を説明するための図である。
図10A〜10Dの例では、以下の3命令のシミュレーションが実行される。
「LDR [r1],r2 :[r1]→r2;
MUL r3,r4,r5 :r3*r4→r5;
ADD r2,r5,r6 :r2+r5→r6」
図10Aは、予測結果が「キャッシュヒット」の場合の命令実行タイミングのチャート例を示す図である。この予測ケースにおいて、3番目に実行されるADD命令に、2サイクルストールが生じている。
図10Bは、予測結果と異なる「キャッシュミス」の場合の命令実行タイミングのチャート例を示す図である。この予測ミスのケースでは、LDR命令の実行結果がキャッシュミスであると、ペナルティサイクル(6サイクル)分の遅延が生じる。そのため、MUL命令は、遅延の影響を受けずに実行されるが、ADD命令の実行は、LDR命令の完了を待つため、4サイクル分遅延することになる。
図10Cは、補正部123による補正後の命令実行タイミングチャートの例を示す図である。尚、キャッシュミス時のターゲットCPUのアクセス先のメモリデバイスの種類は、DRAMと判定されたとする。
補正部123は、LDR命令の実行結果がキャッシュミスであるので(予測結果のミス)、残りの実行時間(2−1=1サイクル)に所定のキャッシュミス時のペナルティ時間(6サイクル)を加算して有効遅延時間(7サイクル)とする。有効遅延時間は、最大の遅延時間となる。ここでは、キャッシュミス時のターゲットCPUのアクセス先のメモリデバイスの種類はDRAMと判定されているため、ペナルティ時間として6サイクル加算されている。
さらに、補正部123は、次のMUL命令の実行時間(3サイクル)を得て、次命令の実行時間が遅延時間を超過しないと判定して、有効遅延時間から次命令の実行時間を差し引いた時間(7−3=4サイクル)を、LDR命令の遅延が生じた実行時間(遅延時間)とする。
また、補正部123は、有効遅延時間から上記の遅延時間を差し引いた時間(3サイクル)を猶予時間とする。猶予時間は、ペナルティとしての遅延が猶予された時間である。
この補正により、LDR命令の実行時間は、実行された時間と遅延時間を加算した実行時間(1+4=5サイクル)となり、実行完了のタイミングt1から、後続のMUL命令、ADD命令の実行時間が計算される。
すなわち、補正したLDR命令の実行時間(5サイクル)に、予測シミュレーション実行部113の処理結果(予測結果による予測シミュレーションの結果)で求められていたMUL命令とADD命令の各々の実行時間(3サイクル、3サイクル)を単純に加算するだけで、このブロックの実行時間(サイクル数)を得ることができる。
よって、実行結果が予測と異なる命令の実行時間のみを加算または減算による補正処理を行って、その他の命令については、予測結果にもとづくシミュレーション時に求められた実行時間を加算するだけで、高精度に、キャッシュミス時のシミュレーションの実行サイクル数をも求めることができる。
図10Dは、シミュレーション装置101の処理と比較するために、従来技術によるキャッシュミス時のサイクル数を単純な加算により求めた場合の誤差の大きさを示す図である。図10Dの場合には、LDR命令の遅延時間をそのまま加算しているため、実際には、LDR命令の実行中に実行が完了するMUL命令の実行タイミングのずれによる誤差が生じていることがわかる。
第1の実施の形態に係るシミュレーション装置によれば、キャッシュミス時のアクセス先のメモリの種類に応じたペナルティを用いて実行時間を補正するので、異なる種類のメモリを主記憶装置に用いた装置の性能シミュレーションを行うことができる。
(第2の実施の形態)
第2の実施の形態では、メモリデバイスの種類の判定結果に基づいて、ホストコードのメモリデバイスの種類の判定を行うヘルパー関数を呼び出すヘルパー関数呼び出し命令をメモリデバイスの種類の判定を行わないヘルパー関数を呼び出すヘルパー関数呼び出し命令書き換える。これにより、シミュレーション装置がホストコードを再度実行したときに、初回実行時に比べ、メモリデバイスの種類の判定が省略されるため、シミュレーション時間が短縮される。
図11は、第2の実施の形態に係るシミュレーション装置の構成図である。
シミュレーション装置2101は、コード変換部2110、シミュレーション実行部2120、およびシミュレーション情報収集部2130を有する。コード変換部2110は、ブロック分割部2111、予測シミュレーション予測部2113、およびコード生成部2115を有する。
ブロック分割部2111、予測シミュレーション予測部2113、コード生成部2115およびシミュレーション情報収集部2130は、第1の実施の形態のブロック分割部111、予測シミュレーション予測部113、コード生成部115、およびシミュレーション情報収集部130とそれぞれ同様の機能を有するため説明は省略する。
シミュレーション実行部2120は、コード実行部2121、補正部2123、判定部2125、および最適化部2127を有する。
コード実行部2121は、ヘルパー関数呼び出し命令を含むホストコードを用いて、プログラム(ターゲットコード)を実行する処理部である。
補正部2123は、プログラムの実行中に、外部依存命令の実行結果が、設定されていた予測結果と異なる場合(予測外ケース)に、判定部2125による判定結果に基づいて、その命令の実行時間を、既に求めた予測ケースでの実行時間を補正して求める。
補正部2123は、外部依存命令に与えられるペナルティ時間、外部依存命令の前後で実行される命令の実行時間、1つ前の命令の遅延時間などを用いて補正を行う。なお、補正処理の詳細は後述する。
判定部2125は、プログラムの実行中に、外部依存命令の実行結果が、設定されていた予測結果と異なる場合(予測外ケース)に、ターゲットCPUがアクセスする主記憶装置の種類(DRAMまたはNVRAM)を判定する。
最適化部2127は、判定部2125による判定結果に基づいて、ヘルパー関数の最適化を行う。詳細には、最適化部2127は、判定部2125による判定結果に基づいて、ホストコードに含まれるヘルパー関数を呼び出すヘルパー関数呼出し命令を、判定結果に応じたヘルパー関数を呼び出すヘルパー関数呼出し命令に置き換える。
判定結果に応じたヘルパー関数は、判定結果がDRAMの場合、例えば、図4のタイミング情報301には「キャッシュミス(DRAM):6」と記載されているので、6サイクルを用いて実行時間(サイクル数)の補正を行うヘルパー関数である。判定結果に応じたヘルパー関数は、判定結果がNVRAMの場合、例えば、図4のタイミング情報301には「キャッシュミス(NVRAM):22」と記載されているので、22サイクルを用いて実行時間(サイクル数)の補正を行うヘルパー関数である。
シミュレーション装置2101は、第1の実施の形態のホストコード生成処理と同様の処理でホストコードを生成する。ただし、第2の実施の形態において生成されるホストコードに含まれるヘルパー関数呼出し命令が呼び出すヘルパー関数は、後述のヘルパー関数(最適化あり)とする。
コード実行部2121は、第1の実施の形態のシミュレーション処理(図8)と同様のシミュレーション処理を行う。
以下、第2の実施の形態に係る補正部(ヘルパー関数)の呼び出し処理について説明する。
図12は、第2の実施の形態に係る補正部(ヘルパー関数)の呼び出し処理の詳細なフローチャートである。図12は、外部依存命令のうちの一例として、主記憶(メモリ)アクセス命令のロード(LDR)命令の処理についての予測結果の判定および補正の処理を示す。
ステップS2720において、コード実行部2121は、ヘルパー関数呼出し命令で指定されるヘルパー関数(最適化あり)を呼び出す。呼び出されたヘルパー関数(最適化あり)により、以下のステップS2721〜S2728が実行される。以下に述べるように、ヘルパー関数(最適化あり)は、最適化部2127によるメモリデバイスの判定結果に応じたホストコードに含まれるヘルパー関数呼出し命令の書き換えを行う。
ステップS2721〜S2725,S2727,S2728は、第1の実施の形態のステップS721〜S725,S727,S728とそれぞれ同様の処理であるため説明は省略する。
ステップS2726において、最適化部2127は、ホストコードのヘルパー関数呼び出し命令をS2725の判定結果(DRAMまたはNVRAM)に応じたヘルパー関数を呼び出すヘルパー関数呼出し命令に書き換える。判定結果に応じたヘルパー関数は、判定結果がDRAMの場合、キャッシュミス時にDRAMアクセス時のペナルティを用いて実行時間(サイクル数)の補正を行うヘルパー関数(DRAM)である。DRAMアクセス時のペナルティは、例えば、図4のタイミング情報301に記載の6サイクルである。また、判定結果に応じたヘルパー関数は、判定結果がNVRAMの場合、キャッシュミス時にNVRAMアクセス時のペナルティを用いて実行時間(サイクル数)の補正を行うヘルパー関数(NVRAM)である。NVRAMアクセス時のペナルティは、例えば、図4のタイミング情報301に記載の22サイクルである。
コード実行部2121は、シミュレーション処理を再度実行する場合、図12に示す処理によりヘルパー関数呼び出し命令が書き換えられたホストコードを実行する。
次に、ヘルパー関数(最適化あり)を呼び出すヘルパー関数呼び出し命令がヘルパー関数(DRAM)を呼び出すヘルパー関数呼び出し命令に書き換えられた場合の処理について説明する。
図13は、第2の実施の形態に係るヘルパー関数呼び出し命令の書き換え後の補正部(ヘルパー関数)の呼び出し処理の詳細なフローチャート(その1)である。
ステップS2720’において、コード実行部2121は、ヘルパー関数呼出し命令で指定されるヘルパー関数(DRAM)を呼び出す。呼び出されたヘルパー関数(DRAM)により、以下のステップS2721’〜S2724’,2727’,S2728’が実行される。
ステップS2721’〜S2724’,S2728’は、第1の実施の形態のステップS721〜S724,S728とそれぞれ同様の処理であるため説明は省略する。
ステップS2727’において、補正部2123は、タイミング情報301のキャッシュミス時のDRAMのペナルティ(サイクル)を示す情報(キャッシュミス(DRAM)に基づいて、LDR命令の実行時間(サイクル数)の補正を行う。例えば、図4のタイミング情報301には「キャッシュミス(DRAM):6」と記載されているので、補正部2123は、6サイクルを用いて実行時間(サイクル数)の補正を行う。
次に、ヘルパー関数(最適化あり)を呼び出すヘルパー関数呼び出し命令がヘルパー関数(NVRAM)を呼び出すヘルパー関数呼び出し命令に書き換えられた場合の処理について説明する。
図14は、第2の実施の形態に係るヘルパー関数呼び出し命令の書き換え後の補正部(ヘルパー関数)の呼び出し処理の詳細なフローチャート(その2)である。
ステップS2720’’において、コード実行部2121は、ヘルパー関数呼出し命令で指定されるヘルパー関数(NVRAM)を呼び出す。呼び出されたヘルパー関数(NVRAM)により、以下のステップS2721’’〜S2724’’,2727’’,S2728’’が実行される。
ステップS2721’’〜S2724’’,S2728’’は、第1の実施の形態のステップS721〜S724,S728とそれぞれ同様の処理であるため説明は省略する。
ステップS2727’’において、補正部2123は、タイミング情報301のキャッシュミス時のNVRAMのペナルティ(サイクル)を示す情報(キャッシュミス(NVRAM)に基づいて、LDR命令の実行時間(サイクル数)の補正を行う。例えば、図4のタイミング情報301には「キャッシュミス(NVRAM):22」と記載されているので、補正部2123は、22サイクルを用いて実行時間(サイクル数)の補正を行う。
第2の実施の形態に係るシミュレーション装置は、メモリデバイスの判定結果に応じて、メモリデバイスの種類の判定を行うヘルパー関数を呼び出すヘルパー関数呼出し命令を、メモリデバイスの種類の判定を行わないヘルパー関数を呼び出すヘルパー関数呼出し命令に書き換えている。これにより、第2の実施の形態に係るシミュレーション装置よれば、再度ホストコードを実行する場合に、メモリデバイスの種類の判定を行わないので、シミュレーション時間を短縮できる。
(第3の実施の形態)
例えば、ターゲットCPUがARMプロセッサの場合、ターゲットCPUは、カーネルモード(特権モード)とユーザモードの2つの動作モードを有する。カーネルモードは、ユーザモードよりもターゲットCPUの動作の制限が小さいモードである。ユーザモードは、カーネルモードよりもターゲットCPUの動作の制限が大きいモードである。カーネルモードではカーネルなどが記憶されたシステム領域にアクセスすることが出来る。
第3の実施の形態のシミュレーション装置は、ターゲットCPUのモードに応じたヘルパー関数を用いて、ホストコードを生成する。
図15は、第3の実施の形態に係るシミュレーション装置の構成図である。
シミュレーション装置3101は、コード変換部3110、シミュレーション実行部3120、およびシミュレーション情報収集部3130を有する。
シミュレーション情報収集部3130は、第1の実施の形態のシミュレーション情報収集部130と同様の機能を有するため説明は省略する。
コード変換部3110は、ターゲットCPUのプログラムの実行時に、ターゲットCPUが実行するプログラムのコード(ターゲットコード)から、シミュレーションを実行するホストCPUのコード(ホストコード)を生成する処理部である。
コード変換部3110は、ブロック分割部3111、予測シミュレーション実行部3113、コード生成部3115を有する。
ブロック分割部3111は第1の実施の形態のブロック分割部111と同様の機能を有するため説明は省略する。
予測シミュレーション実行部3113は、予測情報401をもとに、入力されたブロックに含まれる外部依存命令の予測結果を設定し、タイミング情報301を参照して、設定した予測結果を前提とする場合(予測ケース)の命令を実行して、命令実行の進み具合をシミュレーションする。予測シミュレーション実行部3113は、シミュレーション結果として、ブロックに含まれる各命令の実行時間(所要サイクル数)を求める。予測シミュレーション実行部3113は、外部命令実行時のターゲットCPUのモードを判定する。
コード生成部3115は、予測シミュレーション実行部3113のシミュレーション結果をもとに、処理したブロックに対応するホストコードとして、設定された予測ケースにおける命令実行時の性能シミュレーションを行うためのホストコード(性能シミュレーション用ホストコード)を生成する処理部である。
コード生成部3115は、ブロックのターゲットコードをもとに、外部依存命令が予測結果である予測ケースの場合の命令実行を行うホストコードを生成し、さらに、各命令の実行時間を加算して、ブロックの処理時間を計算する処理を行うシミュレーション用コードを組み込む。
例えば、コード生成部3115は、データのLDR命令の予測結果として“キャッシュヒット”が設定されている処理については、そのブロック内のLDR命令によるキャッシュアクセスが“ヒット”である場合の処理実行をシミュレーションして、この予測ケースでの実行時間を求め、LDR命令によるキャッシュアクセスが“ミス”である場合の実行時間は、予測ケースである“ヒット”時の実行時間の加算/減算を用いた補正計算により求める処理を行うホストコードを生成する。
コード生成部3115は、ターゲットコードから変換したホストコード(機能コードのみ)に、性能シミュレーション(サイクルシミュレーション)を実行するためのサイクルシミュレーション用コードを組み込む。コード生成部3115は、ターゲットCPUのモードの判定結果に基づいて、ヘルパー関数を呼び出すヘルパー関数呼び出し命令を含むサイクルシミュレーション用コードを組み込む。
シミュレーション実行部3120は、コード実行部3121、補正部3123、判定部3125、および最適化部3127を有する。
コード実行部3121は、ヘルパー関数呼び出し命令を含むホストコードを用いて、プログラム(ターゲットコード)を実行する処理部である。
補正部3123は、プログラムの実行中に、外部依存命令の実行結果が、設定されていた予測結果と異なる場合(予測外ケース)に、判定部2125による判定結果に基づいて、その命令の実行時間を、既に求めた予測ケースでの実行時間を補正して求める。
補正部3123は、外部依存命令に与えられるペナルティ時間、外部依存命令の前後で実行される命令の実行時間、1つ前の命令の遅延時間などを用いて補正を行う。補正部3123は、第1の実施の形態の補正部123および第2の実施の形態の補正部2123の両方の機能を有する。
判定部3125は、プログラムの実行中に、外部依存命令の実行結果が、設定されていた予測結果と異なる場合(予測外ケース)に、ターゲットCPUがアクセスする主記憶装置の種類(DRAMまたはNVRAM)を判定する。
最適化部3127は、判定部3125による判定結果に基づいて、ヘルパー関数の最適化を行う。詳細には、最適化部2127は、判定部2125による判定結果に基づいて、ホストコードに含まれるヘルパー関数を呼び出すヘルパー関数呼出し命令を、判定結果に応じたヘルパー関数を呼び出すヘルパー関数呼出し命令に置き換える。最適化部3127は、第2の実施の形態の最適化部2127と同様の機能を有する。
以下、第3の実施の形態に係るホストコード生成処理について説明する。
図16は、第3の実施の形態に係るシミュレーション装置のホストコード生成処理のフローチャートである。
ステップS751において、ブロック分割部3111は、ターゲットプログラムのコード(ターゲットコード)を所定の単位のブロックに分割する。
ステップS752において、予測シミュレーション実行部3113は、ブロックの命令を分析して、外部依存命令を検出する。予測シミュレーション実行部3113は、外部依存命令の実行時のターゲットCPUのモードを判定する。ターゲットCPUのモードは、ターゲットCPUの内部状態(システム制御レジスタ)を参照して判定される。または、ターゲットCPUのモードは、命令が格納されているアドレスに基づいて判定される。
ステップS753において、予測シミュレーション実行部3113は、検出した全ての命令について、予測情報401をもとに、確率が高い実行結果を予測ケースとして決定する。
ステップS754において、予測シミュレーション実行部3113は、タイミング情報301を参照して、ブロックの各命令について予測結果として設定された実行結果を前提とする性能シミュレーションを実行する。
ステップS755において、コード生成部3115は、シミュレーション結果およびターゲットCPUのモードの判定結果をもとに、シミュレーション実行部3120が実行する性能シミュレーション用ホストコードを生成する。コード生成部3115は、例えば、ターゲットCPUのモードの判定結果がカーネルモードの場合に、第1の実施の形態で述べたヘルパー関数(判定処理あり)を読み出すヘルパー関数呼び出し命令を含む性能シミュレーション用ホストコードを生成する。コード生成部3115は、例えば、ターゲットCPUのモードの判定結果がユーザモードの場合に、第2の実施の形態で述べたヘルパー関数(最適化あり)を読み出すヘルパー関数呼び出し命令を含む性能シミュレーション用ホストコードを生成する。
以上のステップS751〜S755の処理により,設定された実行結果の場合(予測ケース)での機能コードに、ターゲットCPUの性能をシミュレーションするコードが組み込まれたホストコードが出力される。
第3の実施の形態に係るシミュレーション装置によれば、ターゲットCPUのモードを判定し、判定結果に応じたヘルパー関数を呼び出すヘルパー関数呼び出し命令を含むホストコードを生成している。例えば、ターゲットCPUのモードがカーネルモードの場合、DRAMとNVRAMの両方にアクセスするので、ヘルパー関数(判定処理あり)を呼び出すヘルパー関数を含むホストコードを生成している。ターゲットCPUのモードがカーネルモードの場合、DRAMとNVRAMの両方にアクセスするので、メモリデバイスの種類の判定があるヘルパー関数を用いることで、精度良くシミュレーションを実行可能である。
図17は、情報処理装置(コンピュータ)の構成図である。
実施の形態のシミュレーション装置101,2101、3101は、例えば、図17に示すような情報処理装置(コンピュータ)1によって実現可能である。
情報処理装置1は、CPU2、メモリ3、入力部4、出力部5、記憶部6、記録媒体駆動部7、及びネットワーク接続部8を備え、それらはバス9により互いに接続されている。
CPU2は、情報処理装置1全体を制御する中央処理装置である。CPU2は、コード変換部110,2110,3110、シミュレーション実行部120,2120,3120、およびシミュレーション情報収集部130,2130,3130として動作する。
メモリ3は、プログラム実行の際に、記憶部6(あるいは可搬記録媒体10)に記憶されているプログラムあるいはデータを一時的に格納するRead Only Memory(ROM)やRandom Access Memory(RAM)等のメモリである。CPU2は、メモリ3を利用してプログラムを実行することにより、上述した各種処理を実行する。
この場合、可搬記録媒体10等から読み出されたプログラムコード自体が実施の形態の機能を実現する。
入力装置4は、例えば、キーボード、マウス、タッチパネル、カメラ、またはセンサ等であり、ユーザ又はオペレータからの指示や情報の入力、情報処理装置1で用いられるデータの取得等に用いられる。
出力装置5は、例えば、ディスプレイ、またはプリンタ等である。出力部5は、ユーザ又はオペレータへの問い合わせや処理結果を出力したり、CPU2による制御により動作する装置である。
記憶部6は、例えば、磁気ディスク装置、光ディスク装置、テープ装置等である。情報処理装置1は、記憶部6に、上述のプログラムとデータを保存しておき、必要に応じて、それらをメモリ3に読み出して使用する。メモリ3および記憶部6は、ターゲットプロ部ラム201、タイミング情報301、予測情報401、およびシミュレーション情報501を格納する。
記録媒体駆動部7は、可搬記録媒体10を駆動し、その記録内容にアクセスする。可搬記録媒体としては、メモリカード、フレキシブルディスク、Compact Disk Read Only Memory(CD−ROM)、光ディスク、光磁気ディスク等、任意のコンピュータ読み取り可能な記録媒体が用いられる。ユーザは、この可搬記録媒体10に上述のプログラムとデータを格納しておき、必要に応じて、それらをメモリ3に読み出して使用する。
ネットワーク接続装置8は、Local Area Network(LAN)やWide Area Network(WAN)等の任意の通信ネットワークに接続され、通信に伴うデータ変換を行う通信インターフェースである。ネットワーク接続装置8は、通信ネットワークを介して接続された装置へデータの送信または通信ネットワークを介して接続された装置からデータを受信する。
以上の実施の形態に関し、さらに以下の付記を開示する。
(付記1)
ターゲットプロセッサに対するプログラムの命令実行のシミュレーションをコンピュータに実行させるシミュレーションプログラムであって、
前記プログラムのコードに含まれる主記憶アクセス命令の処理の実行結果を予測結果として設定し、
前記予測結果を前提とする命令実行の機能シミュレーションを行い、前記主記憶アクセス命令の実行タイミングを示すタイミング情報を得て、前記機能シミュレーションの結果と前記タイミング情報とをもとに、前記予測結果での主記憶アクセス命令の実行時間を算出し、
前記機能シミュレーションの結果をもとに、前記予測結果を前提とする命令実行の性能シミュレーションに用いられる、前記主記憶アクセス命令を含むホストコードを生成し、
前記生成されたホストコードを実行し、
前記ホストコードに含まれる前記主記憶アクセス命令におけるキャッシュアクセスの実行結果が前記予測結果と異なる場合に、前記主記憶アクセス命令においてアクセスするメモリの種類を判定し、
前記メモリの種類の判定結果に応じた補正値を用いて、前記予測結果での主記憶アクセス命令の実行時間を補正して、前記機能シミュレーションでの前記主記憶アクセス命令の実行時間とする、
処理を実行させるシミュレーションプログラム。
(付記2)
前記主記憶アクセス命令においてアクセスするメモリの種類を判定する処理を行わず、前記メモリの種類の判定結果に応じた補正値を用いて、前記予測結果での主記憶アクセス命令の実行時間を補正して、前記機能シミュレーションでの前記主記憶アクセス命令の実行時間とする処理を実行させるように、前記メモリの種類の判定結果に基づいて、前記ホストコードを書き換える処理をさらに前記コンピュータに実行させる付記1記載のシミュレーションプログラム。
(付記3)
前記ターゲットプロセッサは、第1のモードと前記第1のモードよりも動作の制限が大きい第2のモードを有し、
前記ホストコードを生成する処理は、
前記主記憶アクセス命令の実行時の前記ターゲットプロセッサが前記第1のモードの場合、前記ホストコードに含まれる前記主記憶アクセス命令におけるキャッシュアクセスの実行結果が前記予測結果と異なる場合に、前記主記憶アクセス命令においてアクセスするメモリの種類を判定し、前記メモリの種類の判定結果に応じた補正値を用いて、前記予測結果での前記主記憶アクセス命令の実行時間を補正して、前記機能シミュレーションでの前記前記主記憶アクセス命令の実行時間とする処理を実行させる前記ホストコードを生成し、
前記主記憶アクセス命令の実行時の前記ターゲットプロセッサが前記第2のモードの場合、前記ホストコードに含まれる前記主記憶アクセス命令におけるキャッシュアクセスの実行結果が前記予測結果と異なる場合に、前記主記憶アクセス命令においてアクセスするメモリの種類を判定し、前記メモリの種類の判定結果に応じた補正値を用いて、前記予測結果での前記主記憶アクセス命令の実行時間を補正して、前記機能シミュレーションでの前記主記憶アクセス命令の実行時間とし、前記主記憶アクセス命令においてアクセスするメモリの種類を判定する処理を行わず、前記メモリの種類の判定結果に応じた補正値を用いて、前記予測結果での前記主記憶アクセス命令の実行時間を補正して、前記機能シミュレーションでの前記主記憶アクセス命令の実行時間とする処理を実行させるように、前記メモリの種類の判定結果に基づいて、前記ホストコードを書き換える処理を実行させる前記ホストコードを生成することを特徴とする付記1記載のシミュレーションプログラム。
(付記4)
ターゲットプロセッサに対するプログラムの命令実行のシミュレーションを実行する情報処理装置であって、
前記プログラムのコードに含まれる主記憶アクセス命令の処理の実行結果を予測結果として設定し、前記予測結果を前提とする命令実行の機能シミュレーションを行い、前記主記憶アクセス命令に含まれる命令の実行タイミングを示すタイミング情報を得て、前記機能シミュレーションの結果と前記タイミング情報とをもとに、前記予測結果での主記憶アクセス命令の実行時間を算出する予測シミュレーション実行部と、
前記機能シミュレーションの結果をもとに、前記予測結果を前提とする命令実行の性能シミュレーションに用いられる前記主記憶アクセス命令を含むホストコードを生成するコード生成部と、
前記生成されたホストコードを実行するコード実行部と、
前記ホストコードに含まれる主記憶アクセス命令におけるキャッシュアクセスの実行結果が前記予測結果と異なる場合に、前記主記憶アクセス命令においてアクセスするメモリの種類を判定する判定部と、
前記メモリの種類の判定結果に応じた補正値を用いて、前記予測結果での主記憶アクセス命令の実行時間を補正して、前記機能シミュレーションでの前記主記憶アクセス命令の実行時間とする補正部と
を備える情報処理装置。
(付記5)
前記主記憶アクセス命令においてアクセスするメモリの種類を判定する処理を行わず、前記メモリの種類の判定結果に応じた補正値を用いて、前記予測結果での主記憶アクセス命令の実行時間を補正して、前記機能シミュレーションでの前記主記憶アクセス命令の実行時間とする処理を前記補正部に実行させるように、前記メモリの種類の判定結果に基づいて、前記ホストコードを書き換える最適化部をさらに備えることを特徴とする付記4記載の情報処理装置。
(付記6)
前記ターゲットプロセッサは、第1のモードと前記第1のモードよりも動作の制限が大きい第2のモードを有し、
前記コード生成部は、
前記主記憶アクセス命令の実行時の前記ターゲットプロセッサが前記第1のモードの場合、前記ホストコードに含まれる前記主記憶アクセス命令におけるキャッシュアクセスの実行結果が前記予測結果と異なる場合に、前記主記憶アクセス命令においてアクセスするメモリの種類を判定し、前記メモリの種類の判定結果に応じた補正値を用いて、前記予測結果での前記主記憶アクセス命令の実行時間を補正して、前記機能シミュレーションでの前記前記主記憶アクセス命令の実行時間とする処理を実行させる前記ホストコードを生成し、
前記主記憶アクセス命令の実行時の前記ターゲットプロセッサが前記第2のモードの場合、前記ホストコードに含まれる前記主記憶アクセス命令におけるキャッシュアクセスの実行結果が前記予測結果と異なる場合に、前記主記憶アクセス命令においてアクセスするメモリの種類を判定し、前記メモリの種類の判定結果に応じた補正値を用いて、前記予測結果での前記主記憶アクセス命令の実行時間を補正して、前記機能シミュレーションでの前記主記憶アクセス命令の実行時間とし、前記主記憶アクセス命令においてアクセスするメモリの種類を判定する処理を行わず、前記メモリの種類の判定結果に応じた補正値を用いて、前記予測結果での前記主記憶アクセス命令の実行時間を補正して、前記機能シミュレーションでの前記主記憶アクセス命令の実行時間とする処理を実行させるように、前記メモリの種類の判定結果に基づいて、前記ホストコードを書き換える処理を実行させる前記ホストコードを生成することを特徴とする付記4記載の情報処理装置。
(付記7)
ターゲットプロセッサに対するプログラムの命令実行のシミュレーションを行うコンピュータが実行するシミュレーション方法であって、
前記プログラムのコードに含まれる主記憶アクセス命令の処理の実行結果を予測結果として設定し、
前記予測結果を前提とする命令実行の機能シミュレーションを行い、前記主記憶命令の実行タイミングを示すタイミング情報を得て、前記機能シミュレーションの結果と前記タイミング情報とをもとに、前記予測結果での主記憶アクセス命令の実行時間を算出し、
前記機能シミュレーションの結果をもとに、前記予測結果を前提とする命令実行の性能シミュレーションに用いられる前記主記憶アクセス命令を含むホストコードを生成し、
前記生成されたホストコードを実行し、前記ホストコードに含まれる前記主記憶アクセス命令におけるキャッシュアクセスの実行結果が前記予測結果と異なる場合に、前記主記憶アクセス命令においてアクセスするメモリの種類を判定し、
前記メモリの種類の判定結果に応じた補正値を用いて、前記予測結果での主記憶アクセス命令の実行時間を補正して、前記機能シミュレーションでの前記主記憶アクセス命令の実行時間とする、
処理を備えるシミュレーション方法。
(付記8)
前記主記憶アクセス命令においてアクセスするメモリの種類を判定する処理を行わず、前記メモリの種類の判定結果に応じた補正値を用いて、前記予測結果での主記憶アクセス命令の実行時間を補正して、前記機能シミュレーションでの前記主記憶アクセス命令の実行時間とする処理を実行させるように、前記メモリの種類の判定結果に基づいて、前記ホストコードを書き換える処理をさらに備える付記7記載のシミュレーション方法。
(付記9)
前記ターゲットプロセッサは、第1のモードと前記第1のモードよりも動作の制限が大きい第2のモードを有し、
前記ホストコードを生成する処理は、
前記主記憶アクセス命令の実行時の前記ターゲットプロセッサが前記第1のモードの場合、前記ホストコードに含まれる前記主記憶アクセス命令におけるキャッシュアクセスの実行結果が前記予測結果と異なる場合に、前記主記憶アクセス命令においてアクセスするメモリの種類を判定し、前記メモリの種類の判定結果に応じた補正値を用いて、前記予測結果での前記主記憶アクセス命令の実行時間を補正して、前記機能シミュレーションでの前記前記主記憶アクセス命令の実行時間とする処理を実行させる前記ホストコードを生成し、
前記主記憶アクセス命令の実行時の前記ターゲットプロセッサが前記第2のモードの場合、前記ホストコードに含まれる前記主記憶アクセス命令におけるキャッシュアクセスの実行結果が前記予測結果と異なる場合に、前記主記憶アクセス命令においてアクセスするメモリの種類を判定し、前記メモリの種類の判定結果に応じた補正値を用いて、前記予測結果での前記主記憶アクセス命令の実行時間を補正して、前記機能シミュレーションでの前記主記憶アクセス命令の実行時間とし、前記主記憶アクセス命令においてアクセスするメモリの種類を判定する処理を行わず、前記メモリの種類の判定結果に応じた補正値を用いて、前記予測結果での前記主記憶アクセス命令の実行時間を補正して、前記機能シミュレーションでの前記主記憶アクセス命令の実行時間とする処理を実行させるように、前記メモリの種類の判定結果に基づいて、前記ホストコードを書き換える処理を実行させる前記ホストコードを生成することを特徴とする付記7記載のシミュレーション方法。
11,21 ハイブリッドメモリシステム
12,22 CPU
13,23 DRAM
14,24 NVRAM
15,25 バス
101,2101,3101 シミュレーション装置
110,2110,3110 コード変換部
111,2111,3111 ブロック分割部
113,2113,3113 予測シミュレーション実行部
115,2115,3115 コード生成部
120,2120,3120 シミュレーション実行部
121,2121,3121 コード実行部
123,2123,3123 補正部
125,2125,3125 判定部
2127,3127 最適化部
130,2130,3130 シミュレーション情報収集部

Claims (5)

  1. ターゲットプロセッサに対するプログラムの命令実行のシミュレーションをコンピュータに実行させるシミュレーションプログラムであって、
    前記プログラムのコードに含まれる主記憶アクセス命令の処理の実行結果を予測結果として設定する処理と、
    前記予測結果を前提とする命令実行の機能シミュレーションを行い、前記主記憶アクセス命令の実行タイミングを示すタイミング情報を得て、前記機能シミュレーションの結果と前記タイミング情報とをもとに、前記予測結果での主記憶アクセス命令の実行時間を算出する処理と、
    前記機能シミュレーションの結果をもとに、前記予測結果を前提とする命令実行の性能シミュレーションに用いられる、前記主記憶アクセス命令を含むホストコードを生成する処理と、
    前記生成されたホストコードを実行する処理と、
    前記ホストコードに含まれる前記主記憶アクセス命令におけるキャッシュアクセスの実行結果が前記予測結果と異なる場合に、前記主記憶アクセス命令においてアクセスする主記憶装置として用いられているメモリデバイスの種類を、前記キャッシュアクセスのシミュレーション時におけるキャッシュのアドレスに基づいて判定する処理と、
    前記メモリデバイスの種類の判定結果に応じた補正値を用いて、前記予測結果での主記憶アクセス命令の実行時間を補正して、前記機能シミュレーションでの前記主記憶アクセス命令の実行時間とする処理と、
    を前記コンピュータに実行させるシミュレーションプログラム。
  2. 前記メモリデバイスの種類の判定結果に応じた補正値を用いて前記予測結果での主記憶アクセス命令の実行時間を補正する前記処理を実行させるように、前記ホストコードを書き換える処理をさらに前記コンピュータに実行させる請求項1記載のシミュレーションプログラム。
  3. 前記ターゲットプロセッサは、第1のモードと前記第1のモードよりも動作の制限が大きい第2のモードを有し、
    前記シミュレーションプログラムは、
    前記主記憶アクセス命令の実行時の前記ターゲットプロセッサが前記第1のモードの場合には、前記ホストコードを生成する処理を前記コンピュータに実行させ、
    前記主記憶アクセス命令の実行時の前記ターゲットプロセッサが前記第2のモードの場合には、前記ホストコードを生成する処理を前記コンピュータに実行させると共に、前記メモリデバイスの種類の判定結果に応じた補正値を用いて前記予測結果での主記憶アクセス命令の実行時間を補正する前記処理を実行させるように、前記ホストコードを書き換える処理をさらに前記コンピュータに実行させることを特徴とする請求項1記載のシミュレーションプログラム。
  4. ターゲットプロセッサに対するプログラムの命令実行のシミュレーションを実行する情報処理装置であって、
    前記プログラムのコードに含まれる主記憶アクセス命令の処理の実行結果を予測結果として設定し、前記予測結果を前提とする命令実行の機能シミュレーションを行い、前記主記憶アクセス命令の実行タイミングを示すタイミング情報を得て、前記機能シミュレーションの結果と前記タイミング情報とをもとに、前記予測結果での主記憶アクセス命令の実行時間を算出する予測シミュレーション実行部と、
    前記機能シミュレーションの結果をもとに、前記予測結果を前提とする命令実行の性能シミュレーションに用いられる、前記主記憶アクセス命令を含むホストコードを生成するコード生成部と、
    前記生成されたホストコードを実行するコード実行部と、
    前記ホストコードに含まれる前記主記憶アクセス命令におけるキャッシュアクセスの実行結果が前記予測結果と異なる場合に、前記主記憶アクセス命令においてアクセスする主記憶装置として用いられているメモリデバイスの種類を、前記キャッシュアクセスのシミュレーション時におけるキャッシュのアドレスに基づいて判定する判定部と、
    前記メモリデバイスの種類の判定結果に応じた補正値を用いて、前記予測結果での主記憶アクセス命令の実行時間を補正して、前記機能シミュレーションでの前記主記憶アクセス命令の実行時間とする補正部と、
    を備える情報処理装置。
  5. ターゲットプロセッサに対するプログラムの命令実行のシミュレーションを行うコンピュータが実行するシミュレーション方法であって、
    前記プログラムのコードに含まれる主記憶アクセス命令の処理の実行結果を予測結果として設定する処理と、
    前記予測結果を前提とする命令実行の機能シミュレーションを行い、前記主記憶アクセス命令の実行タイミングを示すタイミング情報を得て、前記機能シミュレーションの結果と前記タイミング情報とをもとに、前記予測結果での主記憶アクセス命令の実行時間を算出する処理と、
    前記機能シミュレーションの結果をもとに、前記予測結果を前提とする命令実行の性能シミュレーションに用いられる、前記主記憶アクセス命令を含むホストコードを生成する処理と、
    前記生成されたホストコードを実行する処理と、
    前記ホストコードに含まれる前記主記憶アクセス命令におけるキャッシュアクセスの実行結果が前記予測結果と異なる場合に、前記主記憶アクセス命令においてアクセスする主記憶装置として用いられているメモリデバイスの種類を、前記キャッシュアクセスのシミュレーション時におけるキャッシュのアドレスに基づいて判定する処理と、
    前記メモリデバイスの種類の判定結果に応じた補正値を用いて、前記予測結果での主記憶アクセス命令の実行時間を補正して、前記機能シミュレーションでの前記主記憶アクセス命令の実行時間とする処理と、
    を備えるシミュレーション方法。
JP2015247976A 2015-12-18 2015-12-18 シミュレーションプログラム、情報処理装置、シミュレーション方法 Active JP6740607B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2015247976A JP6740607B2 (ja) 2015-12-18 2015-12-18 シミュレーションプログラム、情報処理装置、シミュレーション方法
US15/299,509 US10671780B2 (en) 2015-12-18 2016-10-21 Information processing device that executes simulation and a simulation method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015247976A JP6740607B2 (ja) 2015-12-18 2015-12-18 シミュレーションプログラム、情報処理装置、シミュレーション方法

Publications (2)

Publication Number Publication Date
JP2017111768A JP2017111768A (ja) 2017-06-22
JP6740607B2 true JP6740607B2 (ja) 2020-08-19

Family

ID=59064487

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015247976A Active JP6740607B2 (ja) 2015-12-18 2015-12-18 シミュレーションプログラム、情報処理装置、シミュレーション方法

Country Status (2)

Country Link
US (1) US10671780B2 (ja)
JP (1) JP6740607B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117648226A (zh) * 2024-01-29 2024-03-05 北京开源芯片研究院 一种处理器缓存的工作机制的测试方法以及装置

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6393540B1 (en) * 1998-06-30 2002-05-21 Emc Corporation Moving a logical object from a set of source locations to a set of destination locations using a single command
US7412369B1 (en) * 2000-06-09 2008-08-12 Stmicroelectronics, Inc. System and method for designing and optimizing the memory of an embedded processing system
US7890314B2 (en) * 2007-12-05 2011-02-15 Seagate Technology Llc Method for modeling performance of embedded processors having combined cache and memory hierarchy
JP5278624B2 (ja) 2010-10-12 2013-09-04 富士通株式会社 シミュレーション装置,方法,およびプログラム
US8527704B2 (en) * 2010-11-11 2013-09-03 International Business Machines Corporation Method and apparatus for optimal cache sizing and configuration for large memory systems
JP5961971B2 (ja) 2011-10-12 2016-08-03 富士通株式会社 シミュレーション装置,方法,およびプログラム
JP2013222392A (ja) 2012-04-18 2013-10-28 Mitsubishi Electric Corp 情報処理装置および情報処理方法およびプログラム
JP2014153965A (ja) 2013-02-11 2014-08-25 Kobe Univ 不揮発メモリキャッシュ
US9547594B2 (en) 2013-03-15 2017-01-17 Intel Corporation Instructions to mark beginning and end of non transactional code region requiring write back to persistent storage
JP6064765B2 (ja) * 2013-04-18 2017-01-25 富士通株式会社 シミュレーション装置、シミュレーション方法、およびシミュレーションプログラム
JP6163898B2 (ja) 2013-06-11 2017-07-19 富士通株式会社 計算装置、計算方法、および計算プログラム
US10452539B2 (en) * 2016-07-19 2019-10-22 Sap Se Simulator for enterprise-scale simulations on hybrid main memory systems

Also Published As

Publication number Publication date
JP2017111768A (ja) 2017-06-22
US20170177772A1 (en) 2017-06-22
US10671780B2 (en) 2020-06-02

Similar Documents

Publication Publication Date Title
JP5278624B2 (ja) シミュレーション装置,方法,およびプログラム
JP5961971B2 (ja) シミュレーション装置,方法,およびプログラム
US9465595B2 (en) Computing apparatus, computing method, and computing program
US8261251B2 (en) Modification of array access checking in AIX
US10564992B2 (en) Simulation apparatus and storage medium
JP2001034537A (ja) アドレス変換回路
US8949681B2 (en) Correction apparatus, correction method, and computer product
JP6740607B2 (ja) シミュレーションプログラム、情報処理装置、シミュレーション方法
US20160196156A1 (en) Simulation apparatus, simulation method, and computer product
US20160011889A1 (en) Simulation method and storage medium
JP2004070862A (ja) メモリ資源最適化支援方法、プログラム及び装置
JP2000242529A (ja) プログラム開発支援装置および開発支援システムおよび記録媒体
Prakash et al. Modelling communication overhead for accessing local memories in hardware accelerators
JP3214459B2 (ja) シミュレーション方法及び装置
van der Wijst An Accelerator based on the ρ-VEX Processor: an Exploration using OpenCL
JP2000222245A (ja) プログラム実行時間評価装置、ソースプログラム実行時間評価装置、プログラム実行時間評価方法、及びソースプログラム実行時間評価方法
JP4768214B2 (ja) コンパイル方法、及びデータ処理装置。
US20150127318A1 (en) Apparatus and method for simulating an operation of an out-of-order processor
JPH0234058B2 (ja)
JP2000267901A (ja) ソフトウェア実行システム
JP2000081981A (ja) Cコンパイラ
JP2016139332A (ja) 検証支援方法、検証支援プログラム、および検証支援装置
JPH07121378A (ja) プログラム変換装置およびプログラム変換方法
JPH1166037A (ja) シミュレータ

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180810

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20190424

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190528

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190723

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20190723

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20190723

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20191217

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200127

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200706

R150 Certificate of patent or registration of utility model

Ref document number: 6740607

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150