JP6234640B2 - シミュレーション装置及びシミュレーション方法及びシミュレーションプログラム - Google Patents

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

Info

Publication number
JP6234640B2
JP6234640B2 JP2017520179A JP2017520179A JP6234640B2 JP 6234640 B2 JP6234640 B2 JP 6234640B2 JP 2017520179 A JP2017520179 A JP 2017520179A JP 2017520179 A JP2017520179 A JP 2017520179A JP 6234640 B2 JP6234640 B2 JP 6234640B2
Authority
JP
Japan
Prior art keywords
buffer
code
program
host code
host
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2017520179A
Other languages
English (en)
Other versions
JPWO2016189725A1 (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.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric 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 Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Publication of JPWO2016189725A1 publication Critical patent/JPWO2016189725A1/ja
Application granted granted Critical
Publication of JP6234640B2 publication Critical patent/JP6234640B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/28Error detection; Error correction; Monitoring by checking the correct order of processing
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/20Design optimisation, verification or simulation
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation
    • G06F8/4441Reducing the execution time required by the program code
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/865Monitoring of software
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/885Monitoring specific for caches
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Quality & Reliability (AREA)
  • Computer Hardware Design (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • Debugging And Monitoring (AREA)

Description

本発明は、シミュレーション装置及びシミュレーション方法及びシミュレーションプログラムに関するものである。
電子デバイスを用いたシステム、特に組み込みシステムの開発では、ハードウェア及びソフトウェアの両方の開発が必要となる。しかしながら、一般的には、ソフトウェアは、ソフトウェアを実行するハードウェアが完成しないと動作させることができない。そのため、従来は、ソフトウェア及びハードウェアの両方の開発が伴うシステム開発を行う場合、システムを構成するハードウェアの設計を先に完了させて、次に、完成したハードウェア上でソフトウェアを動かしてシステム全体の動作確認を行う手法がとられていた。
このような従来の開発フローでは、ソフトウェアを含めたシステム全体の動作検証が開発工程の最後の方になる。よって、不具合が発覚した場合の手戻りによるリスクが大きいという課題が潜在的に存在する。この潜在的なリスクは、システムが大きく、複雑になるに従って、システムの品質並びに開発コストに強く影響するようになる。
近年、電子技術の発展により電子部品が小型化、高性能化する一方で、電子部品を用いて構成されるシステムは大きく、複雑化している。そのため、上記のような従来の開発フローの潜在的なリスクが無視できなくなってきている。このリスクを回避するため、近年では、ISS(Instruction・Set・Simulator)を用いたエミュレーション技術が注目されている。ISSは、任意のプロセッサ及び周辺装置の動作をコンピュータ上で模擬し、コンピュータ上で模擬したプロセッサ及び周辺装置により任意のソフトウェアを実行することができる。よって、システムを構成するハードウェアの完成前に、システムに載せるソフトウェアの動作確認を行うことができる。つまり、ISSを用いることで、従来の開発フローでは不可能であったハードウェアの完成前におけるソフトウェアの検証が可能となる。また、ソフトウェアの動作検証だけでなく、開発の初期段階で決定されるハードウェアアーキテクチャの動作確認及び性能計測も可能となる。これによって、従来の開発フローに潜在的に存在していた後工程での不具合の発生リスクをフロントローディングにより回避できる。
ISSは、任意のプログラムであるゲストコードの実行を模擬する際、任意のコンピュータであるホスト上で動作するソフトウェアとして実現される。そのため、巨大なシステムのプログラムの実行をISSで模擬する場合には、実行速度が課題となる。
実行速度を改善するための方法がいくつか提案されている。
特許文献1には、ISSを動的バイナリ変換により実行する際のレジスタマッピングを効率化することで、ISSの実行を高速化する方法が記載されている。
特許文献2には、ISSをソフトウェアの動作検証だけでなく、システムの性能分析にも活用するために、周辺装置、特にバスの調停を模擬する方法が記載されている。
特開2012−3761号公報 特開2014−194746号公報
プロセッサは、キャッシュを備えることにより、キャッシュを備えない場合と比較してソフトウェアの実行速度を数倍から10倍程度に改善している。したがって、ISSの実行を高速化しつつ、システムの性能を精度良く計測するには、キャッシュを用いた動作を精度良く、かつ、高速に模擬する必要がある。しかしながら、特許文献1に記載された方法では、システムの性能を計測することができない。特許文献2に記載された方法では、システムの性能を計測することはできるが、キャッシュのシミュレーションを高速に実行することは考慮されていない。
本発明は、キャッシュを用いた動作を精度良く、かつ、高速に模擬することを目的とする。
本発明の一の態様に係るシミュレーション装置は、
プログラムの命令の読み込みにキャッシュを用いるシステムでの前記プログラムの実行を模擬するシミュレーション装置であって、
前記プログラムの命令が前記システムでの実行形式で記述されたゲストコードを記憶する記憶媒体と、
前記プログラムの命令が前記シミュレーション装置での実行形式で記述されたホストコードを格納するためのバッファと、
前記バッファに格納されたホストコードに記述された命令を実行する実行部と、
前記実行部により次に実行される命令である次命令が記述されたホストコードが前記バッファに格納されていない場合、当該次命令が記述されたゲストコードを含む、前記プログラムの命令が前記キャッシュに格納される単位であるキャッシュラインのサイズ分のゲストコード群を前記記憶媒体から読み取り、読み取ったゲストコード群を変換して、当該次命令が記述されたホストコードを含むホストコード群を生成し、生成したホストコード群をホストコードブロックとしてまとめて前記バッファに書き込む処理部とを備える。
本発明では、ゲストコードをホストコードに変換する際に、キャッシュラインのサイズ分のゲストコード群をホストコード群に変換し、当該ホストコード群をホストコードブロックとしてまとめてバッファに書き込むことで、キャッシュを用いた動作を精度良く、かつ、高速に模擬することが可能となる。
実施の形態1に係るシミュレーション装置の構成を示すブロック図。 実施の形態1に係るシミュレーション装置の動作を示すフローチャート。 実施の形態1に係るシミュレーション装置の動作を示すフローチャート。 実施の形態1に係るシミュレーション装置の動作を示すフローチャート。 本発明の実施の形態に係るシミュレーション装置のハードウェア構成例を示す図。
以下、本発明の実施の形態について、図を用いて説明する。なお、各図中、同一又は相当する部分には、同一符号を付している。実施の形態の説明において、同一又は相当する部分については、その説明を適宜省略又は簡略化する。
実施の形態1.
本実施の形態に係る装置の構成、本実施の形態に係る装置の動作、本実施の形態の効果を順番に説明する。
***構成の説明***
図1を参照して、本実施の形態に係る装置であるシミュレーション装置100の構成を説明する。
シミュレーション装置100は、ISSを実行することで、システムの性能を計測するコンピュータである。即ち、シミュレーション装置100は、「ホスト」に相当する。シミュレーション装置100によって性能が計測されるシステムは、「ゲスト」に相当する。
「ゲスト」であるシステムでは、プロセッサが、プログラムの命令をメモリから読み込み、読み込んだ命令を実行することで、プログラムを実行する。プロセッサにより命令が読み込まれる際には、キャッシュが用いられる。即ち、「ゲスト」は、プログラムの命令の読み込みにキャッシュを用いるシステムである。
プログラムは、複数のゲストコード201からなる。ゲストコード201は、プログラムの命令が「ゲスト」で実行可能な形式、即ち、「ゲスト」での実行形式で記述されたコードである。
「ホスト」であるシミュレーション装置100は、「ゲスト」でのプログラムの実行を模擬して、「ゲスト」でのプログラムの実行時間の推定値301を計算する。シミュレーション装置100は、複数のゲストコード201からなるプログラムの実行を模擬するために、それぞれのゲストコード201をホストコード202に変換する。ホストコード202は、プログラムの命令が「ホスト」で実行可能な形式、即ち、「ホスト」での実行形式で記述されたコードである。本実施の形態において、ホストコード202は、バイナリコードである。
本実施の形態では、「ホスト」であるシミュレーション装置100が、ゲストコード201をホストコード202に変換する際に、キャッシュラインのサイズ分のゲストコード群をホストコード群に変換し、当該ホストコード群をホストコードブロックとしてまとめてバッファ120に書き込む。これにより、キャッシュを用いた動作を精度良く、かつ、高速に模擬することが可能となる。
図1に示すように、シミュレーション装置100は、記憶媒体110と、バッファ120とを備える。
記憶媒体110は、ゲストコード201と、ペナルティ情報211とを記憶する。ゲストコード201は、前述したように、プログラムの命令が、「ゲスト」であるシステムでの実行形式で記述されたコードである。ペナルティ情報211は、キャッシュのミスの発生時における「ゲスト」でのプログラムの命令の読み込み時間を示す情報である。即ち、ペナルティ情報211は、キャッシュペナルティを示す情報である。
記憶媒体110は、さらに、時間情報212を記憶する。時間情報212は、「ゲスト」であるシステムでプログラムの命令の実行にかかる時間を示す情報である。即ち、時間情報212は、命令実行時間を示す情報である。
記憶媒体110は、さらに、コード長情報221と、ライン情報222と、ブロック情報231と、アドレス対応表232と、サイズ情報241と、アルゴリズム情報242と、構造情報243とを記憶する。コード長情報221は、ゲストコード201のサイズを示す情報である。ライン情報222は、キャッシュラインのサイズを示す情報である。キャッシュラインとは、プログラムの命令がキャッシュに格納される単位のことである。ブロック情報231は、後述するゲストコードブロックの属性を示す情報である。アドレス対応表232は、後述するホストコードブロックがバッファ120のどのアドレスに格納されているかを記録した表である。サイズ情報241は、キャッシュのサイズを示す情報である。アルゴリズム情報242は、キャッシュラインの入れ替えアルゴリズムとして、どのようなアルゴリズムが「ゲスト」で使用されるかを示す情報である。構造情報243は、キャッシュのデータ格納構造として、どのような構造が「ゲスト」で使用されるかを示す情報である。
バッファ120は、ホストコード202を格納するためのメモリである。ホストコード202は、前述したように、プログラムの命令が、「ホスト」であるシミュレーション装置100での実行形式で記述されたコードである。
本実施の形態では、「ホスト」であるシミュレーション装置100のバッファ120、ホストコード202、ホストコードブロックが、それぞれ「ゲスト」であるシステムのキャッシュ、ゲストコード201、ゲストコードブロックに対応している。本実施の形態では、バッファ120に関連する動作を、キャッシュに関連する動作に近づけることで、シミュレーションの精度を向上させている。
シミュレーション装置100は、さらに、実行部130と、処理部140と、計算部150とを備える。
実行部130は、バッファ120に格納されたホストコード202に記述された命令を実行する。
具体的には、実行部130は、次に実行する命令が記述されたホストコードブロックのバッファ120内のアドレスを、記憶媒体110に記憶されたアドレス対応表232から取得する。実行部130は、取得したアドレスを指定して、バッファ120からホストコードブロックを取得する。実行部130は、取得したホストコードブロックを実行する。「ホストコードブロックを実行する」とは、ホストコードブロックに含まれる各ホストコード202に記述された命令を実行するということである。
処理部140は、実行部130により次に実行される命令である次命令が記述されたホストコード202がバッファ120に格納されていない場合、当該次命令が記述されたゲストコード201を含む、キャッシュラインのサイズ分のゲストコード群を記憶媒体110から読み取る。処理部140は、読み取ったゲストコード群を変換して、当該次命令が記述されたホストコード202を含むホストコード群を生成する。処理部140は、生成したホストコード群をホストコードブロックとしてまとめてバッファ120に書き込む。
このように、バッファ120にホストコード202を格納する単位をキャッシュラインに合わせることで、キャッシュの動作を精度良く模擬することが可能となる。また、次に実行される命令が記述されたホストコード202がバッファ120に格納されている場合は、そのホストコード202を利用することで、ホストコード202を生成する処理を省略できるため、シミュレーションを高速化することができる。
なお、処理部140は、ゲストコード201を1つずつホストコード202に変換してもよいが、本実施の形態では、キャッシュラインのサイズと同じ数量のゲストコード201からゲストコードブロックを生成し、ゲストコードブロックを一括してホストコードブロックに変換する。
本実施の形態において、処理部140は、バッファ120に格納されたホストコードブロックに対応するゲストコードの合計サイズと(ゲストシステムの)キャッシュのサイズとを比較することで、生成したホストコード群を格納するための空き領域がバッファ120にあるかどうかを判定する。空き領域がない場合、処理部140は、いずれかのホストコードブロックをバッファ120から削除する。このように、バッファ120の実際の容量ではなく、「ゲスト」のキャッシュの容量を基準に、空き領域の有無を判定することで、キャッシュの動作を精度良く模擬することが可能となる。なお、「ホストコードブロックに対応するゲストコード」とは、ホストコードブロックの元となったゲストコードのことである。
処理部140は、上記のようにいずれかのホストコードブロックをバッファ120から削除する際には、キャッシュのミスの発生時に「ゲスト」であるシステムが一部の命令をキャッシュから削除するアルゴリズムと同じアルゴリズムを用いる。これにより、キャッシュの動作をさらに精度良く模擬することが可能となる。
本実施の形態において、処理部140は、ブロック生成部141と、バッファ検索部142と、ブロック変換部143とを有する。
ブロック生成部141は、アドレスを指定して、記憶媒体110からゲストコード201を取得する。ブロック生成部141は、記憶媒体110に記憶されたコード長情報221を参照して、ゲストコード201のサイズの数値を取得する。ブロック生成部141は、記憶媒体110に記憶されたライン情報222を参照して、キャッシュラインのサイズの数値を取得する。ブロック生成部141は、取得した数値を用いて、ゲストコード201からゲストコードブロックを生成する。ブロック生成部141は、生成したゲストコードブロックをブロック変換部143に対して出力する。ブロック生成部141は、生成したゲストコードブロックに関するブロック情報231をバッファ検索部142に対して出力する。
バッファ検索部142は、ブロック生成部141からブロック情報231を取得する。バッファ検索部142は、ブロック情報231を記憶媒体110に書き込む。バッファ検索部142は、ブロック変換部143からホストコードブロックを取得する。バッファ検索部142は、取得したホストコードブロックをバッファ120に格納する。バッファ検索部142は、バッファ120でホストコードブロックが格納されたアドレスをアドレス対応表232に記録する。ホストコードブロックを格納するための空き領域がバッファ120に存在しない場合、バッファ検索部142は、空き領域の作り方を決定するため、記憶媒体110に記憶されたサイズ情報241とアルゴリズム情報242と構造情報243とを参照する。
ブロック変換部143は、ブロック生成部141からゲストコードブロックを取得する。ブロック変換部143は、ゲストコードブロックをホストコードブロックに変換し、ホストコードブロックをバッファ検索部142に対して出力する。
計算部150は、「ゲスト」でのプログラムの実行時間の推定値301を計算する。その際に、計算部150は、新たなホストコードブロックがバッファ120に書き込まれる度に、記憶媒体110に記憶されたペナルティ情報211が示す読み込み時間を推定値301に加算する。
なお、計算部150によって読み込み時間が加算されるタイミングは、新たなホストコードブロックがバッファ120に書き込まれる前でもよいし、新たなホストコードブロックがバッファ120に書き込まれるのと同時でもよいし、新たなホストコードブロックがバッファ120に書き込まれた後でもよい。いずれの場合でも、「新たなホストコードブロックがバッファ120に書き込まれる度に」読み込み時間が加算されることになる。即ち、処理部140により新たなホストコードブロックがバッファ120に書き込まれるのは、実行部130により次に実行される命令が記述されたホストコード202がバッファ120に格納されていないという状況が発生した場合であるから、計算部150は、そのような状況が発生したことを検知した時点以降であれば、いつ読み込み時間を加算してもよい。そのため、本実施の形態では、計算部150が、新たなホストコードブロックがバッファ120に書き込まれるのを待たず、処理部140によって記憶媒体110からキャッシュラインのサイズ分のゲストコード群が取得されたことを検知した時点で、読み込み時間を加算する。
前述したように、本実施の形態では、キャッシュラインのサイズと同じ数量のゲストコード群に対応するホストコード群がホストコードブロックとしてまとめてバッファ120に書き込まれる。そのため、計算部150は、ホストコードブロックがバッファ120に書き込まれる度に、ペナルティ情報211が示す読み込み時間を推定値301に加算する。
ペナルティ情報211は、望ましくは、キャッシュのミスの発生時に「ゲスト」であるシステムでプログラムの命令の読み込みにかかる時間を、プログラムの命令の読み込み元であるメモリのアドレス範囲ごとに示す情報である。このような情報を用いることで、計算部150により推定値301に加算される時間が、一律の時間ではなく、より現実に即した時間になるため、より精確な推定値301が得られる。
計算部150は、さらに、バッファ120に格納されたホストコード202に記述された命令が実行部130により実行される度に、記憶媒体110に記憶された時間情報212が示す時間を推定値301に加算する。
本実施の形態において、計算部150は、ペナルティ計算部151と、時間計算部152とを有する。
ペナルティ計算部151は、ブロック生成部141の動作を監視する。ペナルティ計算部151は、ブロック生成部141が記憶媒体110からキャッシュラインのサイズ分のゲストコード群を取得した場合に、記憶媒体110に記憶されたペナルティ情報211を参照して、キャッシュペナルティを推定値301に加算する。
時間計算部152は、実行部130の動作を監視する。時間計算部152は、実行部130がホストコードブロックを実行した場合に、記憶媒体110に記憶された時間情報212を参照して、命令実行時間を推定値301に加算する。
***動作の説明***
図2及び図3及び図4を参照して、シミュレーション装置100の動作を説明する。シミュレーション装置100の動作は、本実施の形態に係るシミュレーション方法に相当する。シミュレーション装置100の動作は、本実施の形態に係るシミュレーションプログラムの処理手順に相当する。
図2は、シミュレーション装置100がゲストコードブロックを生成する手順を示している。図1に示した構成要素の中では、特に、記憶媒体110と、処理部140のブロック生成部141とが、この手順に関連する。
ステップS11の実施に先立ち、記憶媒体110にはゲストコード201が格納される。ブロック生成部141が外部からの開始アドレスの指示を受けると、ステップS11からフローが開始される。
ステップS11において、ブロック生成部141は、指示されたアドレスに従って、記憶媒体110に対し、ゲストコード201の読み出しのためのアドレスを指定する。記憶媒体110は、指定されたアドレスに格納されているゲストコード201を返す。ブロック生成部141は、返されたゲストコード201のコード長を、コード長情報221を参照してチェックし、図示していない一時バッファにゲストコード201を保持する。
ステップS12において、ブロック生成部141は、ライン情報222を参照し、一時バッファに保持されているゲストコード201の総コード長が、キャッシュラインのサイズと同じになっているかどうかをチェックする。キャッシュラインのサイズとは、「ゲスト」であるシステムに備えられているキャッシュのキャッシュラインのサイズのことである。
ステップS12のチェックの結果、一時バッファに保持されているゲストコード201の総コード長が、キャッシュラインのサイズと同じになっていない場合、フローはステップS11に戻る。同じになっている場合、フローはステップS13に進む。
ステップS13において、ブロック生成部141は、一時バッファ内のゲストコード201群を1つのゲストコードブロックとしてまとめて出力する。同時に、ブロック生成部141は、ゲストコードブロックに関する情報をブロック情報231として出力する。ブロック情報231には、ゲストコードブロックに含まれるゲストコード201の数及び総コード長、各ゲストコード201のアドレス情報等が含まれる。
図3は、シミュレーション装置100が、図2のフローで行われたゲストコードの読み出しが実ハードウェアで実行された場合の処理時間を計算する手順、及び、シミュレーション装置100が、ゲストコードブロックをホストコードブロックに変換し、ホストコードブロックをバッファ120に格納する手順を示している。図1に示した構成要素の中では、特に、記憶媒体110と、バッファ120と、処理部140のバッファ検索部142と、処理部140のブロック変換部143と、計算部150のペナルティ計算部151とが、この手順に関連する。
ステップS21において、ペナルティ計算部151は、ブロック生成部141が生成したブロック情報231と、ペナルティ情報211とを参照して、キャッシュペナルティを計算する。キャッシュペナルティとは、ゲストコードブロックに含まれる複数のゲストコード201が実ハードウェア上で読み出される場合に必要となる読み出し時間のことである。実ハードウェアでは、ゲストコード201はメモリ上に置かれている。メモリからゲストコード201を読み出すには、メモリ性能によって異なる読み出しレイテンシが必要となる。読み出しレイテンシとは、読み出し時間のことである。ペナルティ情報211は、読み出しレイテンシを、実ハードウェアで定義されるアドレスマップと関連付けてデータベース化したものである。よって、ペナルティ計算部151は、ブロック情報231に含まれるゲストコード201のアドレス情報をキーとして、ペナルティ情報211に含まれる、アドレスに対応する読み出しレイテンシを抽出する。ペナルティ計算部151は、抽出した読み出しレイテンシから、ゲストコードブロックに含まれる複数のゲストコード201が実ハードウェア上で読み出される場合の読み出し時間を計算する。
ステップS21に並行して、ステップS22において、ブロック変換部143は、ゲストコードブロックの形式を「ホスト」が実行可能な形式に変換して、ホストコードブロックを生成する。
ステップS23において、バッファ検索部142は、ブロック変換部143が生成したホストコードブロックを格納するためのバッファ120の空き領域を検索する。検索にあたって、バッファ検索部142は、バッファ120そのものの空き領域があるかどうかではなく、現在バッファ120に記録されているホストコードブロックに対応するゲストコードの総サイズと、サイズ情報241で示されたキャッシュのサイズとの差である空きがあるかどうかを判定する。ホストコードブロックに対応するゲストコードの総サイズがキャッシュのサイズよりも小さければ、空きがあることになる。なお、バッファ120そのもののサイズは、キャッシュのサイズよりも大きければ、どのような大きさであってもよい。
バッファ120に空き領域がない場合、フローはステップS24に進む。バッファ120に空き領域がある場合、フローはステップS25に進む。
ステップS24において、バッファ検索部142は、アルゴリズム情報242及び構造情報243を参照して、バッファ120からホストコードブロックを追い出して空き領域を作る。アルゴリズム情報242は、「ゲスト」で使用されるキャッシュのライン入れ替え方式が、LRU(Least・Recently・Used)アルゴリズム、LFU(Least・Frequently・Used)アルゴリズム等のいずれかであるかを示す情報である。構造情報243は、「ゲスト」で使用されるキャッシュのデータ格納構造が、ダイレクトマップ方式、セットアソシアティブ方式、フルアソシアティブ方式等のいずれであるかを示す情報である。構造情報243には、方式によってはway数、バンク数等の情報も含まれる。
ステップS24の後、フローはステップS25に進む。
ステップS25において、バッファ検索部142は、ブロック変換部143が生成したホストコードブロックをバッファ120の空き領域に格納する。バッファ検索部142は、ホストコードブロックの変換元であるゲストコードブロックのブロック情報231と、バッファ120でホストコードブロックを格納したアドレスとを対にして、アドレス対応表232に記録する。ここで記録された情報は図4のフローで使用される。
図4は、シミュレーション装置100がホストコードブロックを実行し、ゲストコードが実ハードウェアで実行された場合の処理時間を計算する手順を示している。図1に示した構成要素の中では、特に、記憶媒体110と、バッファ120と、実行部130と、処理部140のバッファ検索部142と、計算部150の時間計算部152とが、この手順に関連する。
ステップS31において、バッファ検索部142は、バッファ120に格納したホストコードブロックを実行部130に出力する。実行部130は、入力されたホストコードブロックを、「ホスト」のCPU(Central・Processing・Unit)により実行して、ホストコードブロックの変換元であるゲストコードブロックが実ハードウェア上で実行された場合の動作のシミュレーション結果を出力する。なお、実行部130は、現在実行中のホストコードブロックに含まれる最後のホストコード202まで実行するか、又は、分岐命令或いはジャンプ命令により、現在実行中のホストコードブロック外のアドレスに飛ぶ直前のホストコード202まで実行する。
ステップS32において、時間計算部152は、実行部130が実行したホストコードブロックに対応するゲストコードブロックのブロック情報231と、時間情報212とを参照して、ゲストコードブロックが実ハードウェアで実行された場合の命令実行時間を計算する。なお、ステップS31とステップS32は、並行して実施されることが望ましい。
実行部130は、ステップS31で実行したホストコードブロックが終端に達しているかどうかをチェックする。終端に達していた場合、フローは終了する。即ち、シミュレーションが完了する。終端に達しておらず、シミュレーションの実行継続が必要である場合、フローはステップS33に進む。
ステップS33において、実行部130は、現在のホストコードブロックの実行完了通知とともに、次に実行するホストコードのアドレスをジャンプ先アドレスとしてバッファ検索部142に通知する。
ステップS34において、バッファ検索部142は、アドレス対応表232を参照して、バッファ120内で、実行部130から通知されたジャンプ先アドレスに対応するホストコードブロックを検索する。
検索の結果、バッファ120内に該当するホストコードブロックが存在する場合、フローはステップS34に進む。この場合、キャッシュヒットが発生したとみなすことができる。検索の結果、バッファ120内に該当するホストコードブロックが存在しない場合、フローはステップS11に戻る。この場合、キャッシュミスが発生したとみなすことができる。
ステップS34において、バッファ検索部142は、そのホストコードブロックをバッファ120から読み出して実行部130に出力する。
ステップS34の後、フローはステップS31に戻る。
***効果の説明***
本実施の形態では、ゲストコード201をホストコード202に変換する際に、キャッシュラインのサイズ分のゲストコード群をホストコード群に変換し、当該ホストコード群をホストコードブロックとしてまとめてバッファ120に書き込むことで、キャッシュを用いた動作を精度良く、かつ、高速に模擬することが可能となる。
本実施の形態では、バッファ120に次に実行するホストコードブロックが存在する場合は、図2及び図3のフローをスキップすることができる。よって、高速にシミュレーションを実行することが可能である。さらに、バッファ120の空き検索の動作が実ハードウェアのキャッシュ検索の動作と等価となる。また、図2のフローにおけるゲストコード201の読み出しの動作が実ハードウェアでのキャッシュミス発生時の外部メモリアクセスの動作と等価となる。そのため、これらの動作を監視し、実ハードウェアでの動作に置き換えて時間を計算するだけで、キャッシュヒット及びキャッシュミスの動作を含むシステムの性能の計測が高速に精度良く行える。
実ハードウェアでは、キャッシュにラインサイズ単位で命令が置かれる。仮にゲストコード201からホストコード202への変換がラインサイズとは異なる単位で行われるとすると、キャッシュのヒット及びミスを判定するためには、次のような煩雑な動作が必要となる。
(1)変換済コード群に対応する変換前コード群にどれだけのサイズのゲストコード201が含まれていたかを計算する。変換済コード群とは、ホストコード群のことである。変換前コード群とは、ゲストコード群のことである。
(2)(1)の結果をキャッシュのラインサイズと比較して、変換前コード群がキャッシュのどのラインに格納されているかを計算する。
(3)(2)の結果からキャッシュのヒット及びミスを判定する。
本実施の形態では、ゲストコード201からホストコード202への変換がラインサイズ単位で行われるため、上記のような煩雑な動作は不要となり、バッファの検索を行うだけで、キャッシュのヒット及びミスを判定することができる。即ち、変換済コード群がバッファにあれば、キャッシュのヒットが生じ、変換済コード群がバッファになければ、キャッシュのミスが生じたと判定できる。よって、動作が簡単かつ正確になる。
以下では、図5を参照して、本発明の実施の形態に係るシミュレーション装置100のハードウェア構成例を説明する。
シミュレーション装置100は、コンピュータである。シミュレーション装置100は、プロセッサ901、補助記憶装置902、メモリ903、通信装置904、入力インタフェース905、ディスプレイインタフェース906といったハードウェアを備える。プロセッサ901は、信号線910を介して他のハードウェアと接続され、これら他のハードウェアを制御する。入力インタフェース905は、入力装置907に接続されている。ディスプレイインタフェース906は、ディスプレイ908に接続されている。
プロセッサ901は、プロセッシングを行うIC(Integrated・Circuit)である。プロセッサ901は、例えば、CPU、DSP(Digital・Signal・Processor)、又は、GPU(Graphics・Processing・Unit)である。
補助記憶装置902は、例えば、ROM(Read・Only・Memory)、フラッシュメモリ、又は、HDD(Hard・Disk・Drive)である。
メモリ903は、例えば、RAM(Random・Access・Memory)である。記憶媒体110及びバッファ120は、メモリ903により実現することができる。なお、記憶媒体110は、補助記憶装置902とメモリ903との組み合わせにより実現してもよい。例えば、ゲストコード201がメモリ903に記憶され、ペナルティ情報211等、ゲストコード201以外の情報が補助記憶装置902に記憶されてもよい。
通信装置904は、データを受信するレシーバ921及びデータを送信するトランスミッタ922を含む。通信装置904は、例えば、通信チップ又はNIC(Network・Interface・Card)である。
入力インタフェース905は、入力装置907のケーブル911が接続されるポートである。入力インタフェース905は、例えば、USB(Universal・Serial・Bus)端子である。
ディスプレイインタフェース906は、ディスプレイ908のケーブル912が接続されるポートである。ディスプレイインタフェース906は、例えば、USB端子又はHDMI(登録商標)(High・Definition・Multimedia・Interface)端子である。
入力装置907は、例えば、マウス、タッチペン、キーボード、又は、タッチパネルである。
ディスプレイ908は、例えば、LCD(Liquid・Crystal・Display)である。
補助記憶装置902には、実行部130、処理部140、計算部150といった「部」の機能を実現するプログラムが記憶されている。このプログラムは、メモリ903にロードされ、プロセッサ901に読み込まれ、プロセッサ901によって実行される。補助記憶装置902には、OS(Operating・System)も記憶されている。OSの少なくとも一部がメモリ903にロードされ、プロセッサ901はOSを実行しながら、「部」の機能を実現するプログラムを実行する。
図5では、1つのプロセッサ901が示されているが、シミュレーション装置100が複数のプロセッサ901を備えていてもよい。そして、複数のプロセッサ901が「部」の機能を実現するプログラムを連携して実行してもよい。
「部」の処理の結果を示す情報やデータや信号値や変数値は、補助記憶装置902、メモリ903、又は、プロセッサ901内のレジスタ又はキャッシュメモリに記憶される。
「部」を「サーキットリ」で提供してもよい。また、「部」を「回路」又は「工程」又は「手順」又は「処理」に読み替えてもよい。「回路」及び「サーキットリ」は、プロセッサ901だけでなく、ロジックIC、GA(Gate・Array)、ASIC(Application・Specific・Integrated・Circuit)、FPGA(Field−Programmable・Gate・Array)といった他の種類の処理回路をも包含する概念である。
以上、本発明の実施の形態について説明したが、この実施の形態を部分的に実施しても構わない。例えば、この実施の形態の説明において「部」として説明するもののうち、いずれか1つのみを採用してもよいし、いくつかの任意の組み合わせを採用してもよい。なお、本発明は、この実施の形態に限定されるものではなく、必要に応じて種々の変更が可能である。
100 シミュレーション装置、110 記憶媒体、120 バッファ、130 実行部、140 処理部、141 ブロック生成部、142 バッファ検索部、143 ブロック変換部、150 計算部、151 ペナルティ計算部、152 時間計算部、201 ゲストコード、202 ホストコード、211 ペナルティ情報、212 時間情報、221 コード長情報、222 ライン情報、231 ブロック情報、232 アドレス対応表、241 サイズ情報、242 アルゴリズム情報、243 構造情報、301 推定値、901 プロセッサ、902 補助記憶装置、903 メモリ、904 通信装置、905 入力インタフェース、906 ディスプレイインタフェース、907 入力装置、908 ディスプレイ、910 信号線、911 ケーブル、912 ケーブル、921 レシーバ、922 トランスミッタ。

Claims (8)

  1. プログラムの命令の読み込みにキャッシュを用いるシステムでの前記プログラムの実行を模擬するシミュレーション装置であって、
    前記プログラムの命令が前記システムでの実行形式で記述されたゲストコードを記憶する記憶媒体と、
    前記プログラムの命令が前記シミュレーション装置での実行形式で記述されたホストコードを格納するためのバッファと、
    前記バッファに格納されたホストコードに記述された命令を実行する実行部と、
    前記実行部により次に実行される命令である次命令が記述されたホストコードが前記バッファに格納されていない場合、当該次命令が記述されたゲストコードを含む、前記プログラムの命令が前記キャッシュに格納される単位であるキャッシュラインのサイズ分のゲストコード群を前記記憶媒体から読み取り、読み取ったゲストコード群を変換して、当該次命令が記述されたホストコードを含むホストコード群を生成し、生成したホストコード群をホストコードブロックとしてまとめて前記バッファに書き込む処理部と
    を備えるシミュレーション装置。
  2. 前記処理部は、前記バッファに格納されたホストコードブロックに対応するゲストコードの合計サイズと前記キャッシュのサイズとを比較することで、生成したホストコード群を格納するための空き領域が前記バッファにあるかどうかを判定し、前記空き領域がない場合、いずれかのホストコードブロックを前記バッファから削除する請求項1に記載のシミュレーション装置。
  3. 前記処理部は、前記キャッシュのミスの発生時に前記システムが一部の命令を前記キャッシュから削除するアルゴリズムと同じアルゴリズムを用いて、いずれかのホストコードブロックを前記バッファから削除する請求項2に記載のシミュレーション装置。
  4. 前記システムでの前記プログラムの実行時間の推定値を計算する計算部
    をさらに備え、
    前記記憶媒体は、前記キャッシュのミスの発生時における前記システムでの前記プログラムの命令の読み込み時間を示すペナルティ情報を記憶し、
    前記計算部は、新たなホストコードブロックが前記バッファに書き込まれる度に、前記記憶媒体に記憶されたペナルティ情報が示す読み込み時間を前記推定値に加算する請求項1から3のいずれか1項に記載のシミュレーション装置。
  5. 前記ペナルティ情報は、前記キャッシュのミスの発生時に前記システムで前記プログラムの命令の読み込みにかかる時間を、前記プログラムの命令の読み込み元であるメモリのアドレス範囲ごとに示す情報である請求項4に記載のシミュレーション装置。
  6. 前記記憶媒体は、前記システムで前記プログラムの命令の実行にかかる時間を示す時間情報を記憶し、
    前記計算部は、前記バッファに格納されたホストコードに記述された命令が前記実行部により実行される度に、前記記憶媒体に記憶された時間情報が示す時間を前記推定値に加算する請求項4又は5に記載のシミュレーション装置。
  7. プログラムの命令の読み込みにキャッシュを用いるシステムでの前記プログラムの実行を模擬するシミュレーション方法であって、
    前記プログラムの命令が前記システムでの実行形式で記述されたゲストコードを記憶する記憶媒体と、前記プログラムの命令がコンピュータでの実行形式で記述されたホストコードを格納するためのバッファとを備える前記コンピュータが、前記バッファに格納されたホストコードに記述された命令を実行し、
    前記コンピュータが、次に実行する命令である次命令が記述されたホストコードが前記バッファに格納されていない場合、当該次命令が記述されたゲストコードを含む、前記プログラムの命令が前記キャッシュに格納される単位であるキャッシュラインのサイズ分のゲストコード群を前記記憶媒体から読み取り、読み取ったゲストコード群を変換して、当該次命令が記述されたホストコードを含むホストコード群を生成し、生成したホストコード群をホストコードブロックとしてまとめて前記バッファに書き込むシミュレーション方法。
  8. プログラムの命令の読み込みにキャッシュを用いるシステムでの前記プログラムの実行を模擬するシミュレーションプログラムであって、
    前記プログラムの命令が前記システムでの実行形式で記述されたゲストコードを記憶する記憶媒体と、前記プログラムの命令がコンピュータでの実行形式で記述されたホストコードを格納するためのバッファとを備える前記コンピュータに、
    前記バッファに格納されたホストコードに記述された命令を実行する処理と、
    次に実行される命令である次命令が記述されたホストコードが前記バッファに格納されていない場合、当該次命令が記述されたゲストコードを含む、前記プログラムの命令が前記キャッシュに格納される単位であるキャッシュラインのサイズ分のゲストコード群を前記記憶媒体から読み取り、読み取ったゲストコード群を変換して、当該次命令が記述されたホストコードを含むホストコード群を生成し、生成したホストコード群をホストコードブロックとしてまとめて前記バッファに書き込む処理と
    を実行させるシミュレーションプログラム。
JP2017520179A 2015-05-28 2015-05-28 シミュレーション装置及びシミュレーション方法及びシミュレーションプログラム Expired - Fee Related JP6234640B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2015/065374 WO2016189725A1 (ja) 2015-05-28 2015-05-28 シミュレーション装置及びシミュレーション方法及びシミュレーションプログラム

Publications (2)

Publication Number Publication Date
JPWO2016189725A1 JPWO2016189725A1 (ja) 2017-07-27
JP6234640B2 true JP6234640B2 (ja) 2017-11-22

Family

ID=57393826

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017520179A Expired - Fee Related JP6234640B2 (ja) 2015-05-28 2015-05-28 シミュレーション装置及びシミュレーション方法及びシミュレーションプログラム

Country Status (3)

Country Link
US (1) US10176001B2 (ja)
JP (1) JP6234640B2 (ja)
WO (1) WO2016189725A1 (ja)

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5790825A (en) * 1995-11-08 1998-08-04 Apple Computer, Inc. Method for emulating guest instructions on a host computer through dynamic recompilation of host instructions
US6980946B2 (en) * 2001-03-15 2005-12-27 Microsoft Corporation Method for hybrid processing of software instructions of an emulated computer system
US7496494B2 (en) * 2002-09-17 2009-02-24 International Business Machines Corporation Method and system for multiprocessor emulation on a multiprocessor host system
US7568189B2 (en) * 2006-05-03 2009-07-28 Sony Computer Entertainment Inc. Code translation and pipeline optimization
US8176280B2 (en) * 2008-02-25 2012-05-08 International Business Machines Corporation Use of test protection instruction in computing environments that support pageable guests
US8479176B2 (en) 2010-06-14 2013-07-02 Intel Corporation Register mapping techniques for efficient dynamic binary translation
US20120173851A1 (en) * 2010-12-30 2012-07-05 International Business Machines Corporation Mechanism for maintaining dynamic register-level memory-mode flags in a virtual machine system
US8666723B2 (en) * 2011-08-31 2014-03-04 Oregon State Board Of Higher Education On Behalf Of Portland State University System and methods for generating and managing a virtual device
JP2014194746A (ja) 2013-02-28 2014-10-09 Mitsubishi Electric Corp シミュレーション装置及びシミュレーション方法及びプログラム
JP6163898B2 (ja) * 2013-06-11 2017-07-19 富士通株式会社 計算装置、計算方法、および計算プログラム
US9785454B2 (en) * 2013-07-25 2017-10-10 Login VSI B.V. Virtual session benchmarking tool for measuring performance and/or scalability of centralized desktop environments
US9946538B2 (en) * 2014-05-12 2018-04-17 Intel Corporation Method and apparatus for providing hardware support for self-modifying code
US9389897B1 (en) * 2014-12-18 2016-07-12 International Business Machines Corporation Exiting multiple threads of a simulation environment in a computer

Also Published As

Publication number Publication date
WO2016189725A1 (ja) 2016-12-01
US10176001B2 (en) 2019-01-08
US20180136956A1 (en) 2018-05-17
JPWO2016189725A1 (ja) 2017-07-27

Similar Documents

Publication Publication Date Title
JP6234639B2 (ja) シミュレーション装置及びシミュレーション方法及びシミュレーションプログラム
US11263150B2 (en) Testing address translation cache
US10437949B1 (en) Scheduling events in hardware design language simulation
US20180349533A1 (en) Capturing Time-Slice of Emulation Data for Offline Embedded Software Debug
CN114662427B (zh) 一种逻辑系统设计的调试方法及设备
CN108008715A (zh) 基于fpga的系统功率评估装置与方法
CN107533473A (zh) 用于仿真的高效波形生成
US20130013283A1 (en) Distributed multi-pass microarchitecture simulation
JP6667733B2 (ja) シミュレーション装置、シミュレーション方法およびシミュレーションプログラム
CN103324515A (zh) 仿真期间存储器步移序列加速的方法和系统
JP6471615B2 (ja) 性能情報生成プログラム、性能情報生成方法及び情報処理装置
JP5454349B2 (ja) 性能推定装置
US12293137B2 (en) Processor core simulator including trace-based coherent cache driven memory traffic generator
JP5040625B2 (ja) Lsiの電力見積方法及びその装置
JP6234640B2 (ja) シミュレーション装置及びシミュレーション方法及びシミュレーションプログラム
US20120089386A1 (en) Simulation apparatus, computer-readable recording medium, and method
CN118170597A (zh) 指令验证方法、装置、电子设备和存储介质
US20190369997A1 (en) Simulation device, simulation method, and computer readable medium
CN114237705B (zh) 验证方法、装置、电子设备和计算机可读存储介质
US10666255B1 (en) System and method for compacting X-pessimism fixes for gate-level logic simulation
JP2014194746A (ja) シミュレーション装置及びシミュレーション方法及びプログラム
CN114186396A (zh) 芯片的仿真测试方法、装置、设备及系统
JP2017215096A (ja) シミュレーション装置、シミュレーション方法及びシミュレーションプログラム
JP5597584B2 (ja) 命令実行分析装置及び命令実行分析方法及びプログラム
US20180196907A1 (en) Architecture generating device

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170330

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20171024

R150 Certificate of patent or registration of utility model

Ref document number: 6234640

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees