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

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

Info

Publication number
JPWO2016189642A1
JPWO2016189642A1 JP2017520112A JP2017520112A JPWO2016189642A1 JP WO2016189642 A1 JPWO2016189642 A1 JP WO2016189642A1 JP 2017520112 A JP2017520112 A JP 2017520112A JP 2017520112 A JP2017520112 A JP 2017520112A JP WO2016189642 A1 JPWO2016189642 A1 JP WO2016189642A1
Authority
JP
Japan
Prior art keywords
code
cache
target
instruction
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.)
Granted
Application number
JP2017520112A
Other languages
English (en)
Other versions
JP6234639B2 (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 JPWO2016189642A1 publication Critical patent/JPWO2016189642A1/ja
Application granted granted Critical
Publication of JP6234639B2 publication Critical patent/JP6234639B2/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
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation
    • G06F8/4441Reducing the execution time required by the program code
    • G06F8/4442Reducing the number of cache misses; Data prefetching
    • 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
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/28Error detection; Error correction; Monitoring by checking the correct order of processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/302Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a software system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3037Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a memory, e.g. virtual memory, cache
    • 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/3409Recording 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 for performance assessment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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; CALCULATING OR 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/0864Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/865Monitoring of software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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; 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Computing Systems (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Debugging And Monitoring (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

シミュレーション装置において、実行部(230)は、バッファ(220)に格納されたホストコードを順次読み込む。実行部(230)は、読み込んだホストコードの命令を実行する。また、実行部(230)は、読み込んだホストコードに対応するターゲットコードである対応コードがタグテーブル(211)に含まれているかどうかを判定する。実行部(230)は、対応コードがタグテーブル(211)に含まれていないと判定した場合、その対応コードについてキャッシュミス時の動作を模擬する。実行部(230)は、模擬した動作に合わせてタグテーブル(211)を更新する。

Description

本発明は、シミュレーション装置及びシミュレーション方法及びシミュレーションプログラムに関するものである。
一般に、CPU(Central・Processing・Unit)とメモリとを含むハードウェアと、ハードウェア上で動作するソフトウェアとで構成されるシステムには、CPUとメモリとの間でCPUが頻繁に読み書きするデータを高速に転送することを目的として、キャッシュが搭載される。メモリとしては、命令を格納する命令メモリと、データを格納するデータメモリとがある。キャッシュとしては、命令を貯めるための命令キャッシュメモリと、データを貯めるためのデータキャッシュメモリとがある。
システムの開発及び検証において、検証対象のシステムであるターゲットシステムのハードウェアモデルと、ターゲットシステムのソフトウェアとを並列動作させて検証するシミュレーション装置がある。ターゲットシステムのハードウェアモデルは、ターゲットシステムのハードウェアをCベース言語のシステムレベル設計言語で記述したものである。ターゲットシステムのソフトウェアは、ターゲットシステムのCPUであるターゲットプロセッサが実行可能なターゲットコードからなる。シミュレーション装置は、ターゲットコードの実行をISS(Instruction・Set・Simulator)で模擬することで、ターゲットシステムを検証する。ISSは、ターゲットコードを、シミュレーション装置のCPUであるホストCPUが実行可能なホストコードに変換し、ホストコードを実行することで、ターゲットコードの実行を模擬する。ISSには、ホストコードを高速に実行するため、最近実行したホストコードを貯めるための命令キャッシュメモリが備えられる。
命令キャッシュメモリを有するホストCPUを使用して、ターゲットシステムのハードウェア及びソフトウェアの協調検証を実行するために、ソフトウェアの検証モデルを生成する技術がある(例えば、特許文献1参照)。この技術では、Cベース言語で記述されたプログラムが分岐又はジャンプ命令で区切られる。区切られた命令群であるBasic・Blockごとに、命令キャッシュメモリがヒットしているか否かを判定する手続きの呼び出しがプログラムに挿入される。呼び出しが挿入された後のプログラムがISSで実行される。これにより、Basic・Blockが実行される度に、命令キャッシュメモリがヒットしているか否かが判定される。命令キャッシュメモリがヒットしていないことが検出されたときには、キャッシュラインフィルを実行するための実行時間が加算される。
特開2006−23852号公報
従来の技術では、ホストCPUの命令キャッシュメモリがヒットしているか否かが判定される。そのため、ターゲットCPUとホストCPUとで命令キャッシュメモリのサイズが異なる場合、ターゲットCPUの命令キャッシュメモリがヒットしない状況でも、ホストCPUの命令キャッシュメモリがヒットしていると判定されることがある。よって、実行時間の見積もりの精度が十分でなく、正確なソフトウェア性能評価が困難である。
従来の技術では、命令キャッシュメモリがヒットしていないことが検出されたときに、命令メモリへのバスアクセス動作が模擬されない。よって、正確なソフトウェア性能評価がますます困難になる。
従来の技術では、命令キャッシュメモリがヒットしているか否かを判定する単位がBasic・Blockであり、キャッシュラインサイズと合わない。よって、判定の精度も低くなり、正確なソフトウェア性能評価が一層困難になる。
従来の技術では、命令キャッシュメモリがヒットしているか否かを判定する手続きの呼び出しを検証対象のプログラムに挿入することで、ソフトウェアの検証モデルが生成される。即ち、ソフトウェアの検証モデルは、特別に変更されたプログラムであるため、ソフトウェアのデバッグには使用できない。
本発明は、シミュレーションにおけるキャッシュミスの判定の精度を向上させることを目的とする。
本発明の一の態様に係るシミュレーション装置は、
命令を示すターゲットコードを記憶するメモリと前記メモリから読み込まれるターゲットコードを格納するためのキャッシュとを有するシステムの動作を模擬するシミュレーション装置であって、
前記メモリに記憶されたターゲットコードが読み込まれるとともに読み込まれたターゲットコードで前記キャッシュが更新される動作であるキャッシュミス時の動作が前記システムにより行われたと仮定した場合の前記キャッシュに格納されるターゲットコードの一覧を記憶する記憶媒体と、
対応するターゲットコードの命令を模擬用の形式で示すホストコードを格納するためのバッファと、
前記バッファに格納されたホストコードを順次読み込み、読み込んだホストコードの命令を実行するとともに、読み込んだホストコードに対応するターゲットコードである対応コードが前記一覧に含まれているかどうかを判定し、前記対応コードが含まれていないと判定した場合、前記対応コードについて前記キャッシュミス時の動作を模擬し、模擬した動作に合わせて前記一覧を更新する実行部とを備える。
本発明では、ホストコードを格納するためのバッファを利用してキャッシュミスの有無を判定するのではなく、キャッシュに格納されるターゲットコードの一覧を管理しておき、この一覧を利用してキャッシュミスの有無を判定する。よって、本発明によれば、シミュレーションにおけるキャッシュミスの判定の精度が向上する。
実施の形態1に係るシミュレーション装置の構成を示すブロック図。 実施の形態1に係るシミュレーション装置のCPUコアモデル部の構成を示すブロック図。 実施の形態1に係るシミュレーション装置の動作を示すフローチャート。 実施の形態1に係るシミュレーション装置が判定コードを付加した後にホストコードを生成及び格納する動作の詳細を示すフローチャート。 実施の形態1に係るシミュレーション装置がキャッシュヒット/ミスを判定する動作を示す図。 実施の形態1に係るシミュレーション装置がキャッシュヒット/ミスを判定する動作の詳細を示すフローチャート。 実施の形態1に係るシミュレーション装置がキャッシュヒット/ミスの判定結果に応じて行う動作の詳細を示すフローチャート。 実施の形態1に係るシミュレーション装置によるシミュレーションの例を示す図。 実施の形態2に係るシミュレーション装置の構成を示すブロック図。 実施の形態2に係るシミュレーション装置のCPUコアモデル部の構成を示すブロック図。 実施の形態2に係るシミュレーション装置の動作を示すフローチャート。 実施の形態2に係るシミュレーション装置が判定コードを付加した後にホストコードを生成及び格納する動作の詳細を示すフローチャート。 実施の形態3に係るシミュレーション装置のCPUコアモデル部の構成を示すブロック図。 本発明の実施の形態に係るシミュレーション装置のハードウェア構成例を示す図。
以下、本発明の実施の形態について、図を用いて説明する。なお、各図中、同一又は相当する部分には、同一符号を付している。実施の形態の説明において、同一又は相当する部分については、その説明を適宜省略又は簡略化する。
実施の形態1.
本実施の形態に係る装置の構成、本実施の形態に係る装置の動作、本実施の形態の効果を順番に説明する。
***構成の説明***
図1を参照して、本実施の形態に係る装置であるシミュレーション装置100の構成を説明する。
シミュレーション装置100は、ISS部200と、ハードウェアモデル部300とを備える。シミュレーション装置100は、ISS部200上でソフトウェアモデル400を動作させることで、ターゲットシステムの動作を模擬する。ターゲットシステムは、各種ハードウェアを有するシステムである。ターゲットシステムのハードウェアとしては、命令メモリと、データメモリと、命令キャッシュメモリ及びデータキャッシュメモリを有するターゲットCPUと、バスと、I/O(Input/Output)インタフェースと、周辺装置とがある。命令メモリは、命令を示すターゲットコードを記憶するメモリである。命令キャッシュメモリは、メモリから読み込まれるターゲットコードを格納するためのキャッシュである。以下の説明では、命令メモリのことを単に「ターゲットシステムのメモリ」と呼び、命令キャッシュメモリのことを単に「ターゲットシステムのキャッシュ」と呼ぶ場合がある。
ソフトウェアモデル400は、ターゲットシステムで動作する検証対象のソフトウェアである。即ち、ソフトウェアモデル400は、ターゲットCPUが実行可能なターゲットコードからなる。よって、ISS部200は、ターゲットコードを、ホストCPUが実行可能なホストコードに変換し、ホストコードを実行することで、ソフトウェアモデル400を動作させる。
ISS部200は、CPUコアモデル部201と、命令メモリモデル部202とを備える。CPUコアモデル部201は、ターゲットCPU又はターゲットCPUのコアの機能モデルを用いてターゲットCPUの機能を模擬する。命令メモリモデル部202は、命令メモリの機能モデルを用いてターゲットシステムの命令メモリの機能を模擬する。
ハードウェアモデル部300は、外部I/Oモデル部301と、周辺装置モデル部302と、データメモリモデル部303と、CPUバスモデル部304とを備える。外部I/Oモデル部301は、システム外部とのI/Oインタフェースの機能モデルを用いてターゲットシステムのI/Oインタフェースの機能を模擬する。周辺装置モデル部302は、周辺装置の機能モデルを用いてターゲットシステムの周辺装置の機能を模擬する。データメモリモデル部303は、データメモリの機能モデルを用いてターゲットシステムのデータメモリの機能を模擬する。CPUバスモデル部304は、バスの機能モデルを用いてターゲットシステムのバスの機能を模擬する。
ソフトウェアモデル400は、C言語等の高級言語を用いて記述される。ハードウェアの機能モデルは、C言語等の高級言語、又は、HDL(Hardware・Description・Language)を用いて記述される。
図2を参照して、CPUコアモデル部201の構成を説明する。
CPUコアモデル部201は、記憶媒体210と、バッファ220とを備える。
記憶媒体210は、キャッシュミス時の動作がターゲットシステムにより行われたと仮定した場合のターゲットシステムのキャッシュに格納されるターゲットコードの一覧を記憶する。「キャッシュミス時の動作」とは、ターゲットシステムのメモリに記憶されたターゲットコードが読み込まれるとともに読み込まれたターゲットコードでターゲットシステムのキャッシュが更新される動作のことである。本実施の形態において、上記一覧は、タグテーブル211として記憶媒体210に記憶される。タグテーブル211については、後で図を用いて説明する。
バッファ220は、対応コードの命令を模擬用の形式で示すホストコードを格納するために利用される。「対応コード」とは、そのホストコードに対応するターゲットコード、即ち、そのホストコードの変換元になったターゲットコードのことである。本実施の形態において、バッファ220は、ターゲットシステムのキャッシュよりも容量が大きい。
CPUコアモデル部201は、さらに、実行部230と、フェッチ部240と、生成部250とを備える。
実行部230は、フェッチ部240を利用して、バッファ220に格納されたホストコードを順次読み込む。実行部230は、読み込んだホストコードの命令を実行する。また、実行部230は、読み込んだホストコードに対応するターゲットコードである対応コードがタグテーブル211に含まれているかどうかを判定する。実行部230は、対応コードがタグテーブル211に含まれていないと判定した場合、フェッチ部240を利用して、その対応コードについてキャッシュミス時の動作を模擬する。実行部230は、模擬した動作に合わせてタグテーブル211を更新する。本実施の形態において、実行部230は、選択部231と、キャッシュ判定部232と、命令実行部233と、アドレス生成部234と、バッファ判定部235と、インタフェース部236と、仮想フェッチ制御部237とを有する。各部の動作については、後で図を用いて説明する。
実行部230は、バッファ220に格納されていないホストコードの命令を次に実行する場合、フェッチ部240を利用して、そのホストコードに対応するターゲットコードである次コードについてキャッシュミス時の動作を模擬する。実行部230は、模擬した動作に合わせてタグテーブル211を更新する。
生成部250は、バッファ220に格納されているホストコードに対応するターゲットコードについてキャッシュミス時の動作が実行部230により模擬された場合には何もしない。一方、生成部250は、バッファ220に格納されていないホストコードに対応するターゲットコードである次コードについてキャッシュミス時の動作が実行部230により模擬された場合には、その次コードに対応するホストコードを生成する。生成部250は、生成したホストコードをバッファ220に格納する。本実施の形態において、生成部250は、第1生成部251と、付加部252と、第2生成部253と、管理部254とを有する。各部の動作については、後で図を用いて説明する。
生成部250は、生成するホストコードに、ターゲットシステムのキャッシュのキャッシュミスが発生するかどうかを判定するよう指示する判定コードを付加する。実行部230は、読み込んだホストコードに判定コードが付加されている場合に、対応コードがタグテーブル211に含まれているかどうかを判定する。本実施の形態において、生成部250は、1つの命令ごとに判定コードを付加する。即ち、生成部250は、ターゲットコードをホストコードに変換する際に、必ず判定コードを付加する。
***動作の説明***
図3を参照して、シミュレーション装置100の動作を説明する。シミュレーション装置100の動作は、本実施の形態に係るシミュレーション方法に相当する。シミュレーション装置100の動作は、本実施の形態に係るシミュレーションプログラムの処理手順に相当する。
ステップS11において、アドレス生成部234は、次に実行するターゲットコードのアドレスを生成する。アドレス生成部234は、生成したアドレスをバッファ判定部235へ出力する。バッファ判定部235は、アドレス生成部234より入力されたアドレスのターゲットコードに対応するホストコードがバッファ220に格納されているか否かを判定する。バッファ判定部235は、判定結果を選択部231へ出力する。選択部231は、バッファ判定部235より入力された判定結果に基づき、次に実行するターゲットコードをフェッチ部240にフェッチさせるか、次に実行するターゲットコードに対応するホストコードをキャッシュ判定部232へ出力するかを選択する。次に実行するターゲットコードに対応するホストコードがバッファ220に格納されていない場合、フローはステップS12に進む。次に実行するターゲットコードに対応するホストコードがバッファ220に格納されている場合、フローはステップS17に進む。
ステップS12において、選択部231は、ステップS11で生成されたアドレスをアドレス生成部234からフェッチ部240に入力する。フェッチ部240は、命令メモリモデル部202の当該アドレスから、次に実行するターゲットコードをフェッチする。これにより、キャッシュミス時の動作が模擬される。
ステップS13において、フェッチ部240は、ステップS12でフェッチしたターゲットコードが分岐又はジャンプ命令かを判定する。フェッチしたターゲットコードが分岐及びジャンプ命令でなかった場合、フローはステップS12に戻る。即ち、フェッチ部240は、フェッチを続ける。フェッチしたターゲットコードが分岐又はジャンプ命令であった場合、フローはステップS14に進む。即ち、フェッチ部240は、フェッチを止める。
ステップS14において、管理部254は、ステップS12でフェッチされたターゲットコードに対応するホストコード分の空きがバッファ220にあるか否かを判定する。空きがない場合、フローはステップS15に進む。空きがある場合、フローはステップS16に進む。
ステップS15において、管理部254は、古いホストコードをバッファ220から追い出す。ステップS15の後、フローはステップS16に進む。
ステップS16において、第1生成部251は、1つの命令ごとに、ステップS12でフェッチされたターゲットコードを中間コードへ変換する。付加部252は、ターゲットコードの1つの命令に対応する中間コードに判定コードを付加する。第2生成部253は、判定コードが付加された中間コードをホストコードへ変換し、ホストコードをバッファ220へ格納する。ここで、「中間コード」とは、ISS部200がソフトウェアをISS部200固有の処理に分解又は変換するときに使用するコードのことであり、store命令、load命令、add命令といった一般的な命令群で構成される。ステップS16の後、フローはステップS19に進む。
ステップS17において、選択部231は、次に実行するターゲットコードに対応するホストコードをバッファ220から読み出す。選択部231は、読み出したホストコードと、ステップS11で生成されたアドレスとをキャッシュ判定部232へ出力する。キャッシュ判定部232は、選択部231より入力されたホストコードに含まれる判定コードを実行することで、ターゲットシステムでキャッシュヒットが発生しているか否かを判定する。ターゲットシステムでキャッシュヒットが発生していない、即ち、キャッシュミスが発生している場合、フローはステップS18に進む。ターゲットシステムでキャッシュヒットが発生している、即ち、キャッシュミスが発生していない場合、フローはステップS19に進む。
ステップS18において、キャッシュ判定部232は仮想フェッチ制御部237へ仮想命令フェッチを指示する。仮想フェッチ制御部237は、フェッチ部240を通して命令メモリモデル部202へ仮想命令フェッチを行う。「仮想命令フェッチ」とは、ホストコードの生成及び格納を伴わずにキャッシュミス時の動作の模擬のみを行うことである。即ち、ステップS18では、ステップS12と同等の処理が行われるが、その処理の後にステップS13からステップS16のような処理は行われない。ステップS18の後、フローはステップS19に進む。
ステップS19において、命令実行部233は、ステップS16で生成されたホストコード、或いは、ステップS17でキャッシュ判定部232に入力されたホストコードの判定コード以外の部分を実行する。命令実行部233は、インタフェース部236を介して、実行結果をCPUバスモデル部304へ出力する。
ステップS20において、命令実行部233は、ソフトウェアモデル400の実行が完了したか否かを判定する。実行が完了していなければ、フローはステップS11に戻る。実行が完了していれば、フローは終了する。
上記のように、ステップS11において、次に実行するホストコードがバッファ220内にある場合は、ステップS17からステップS19において、そのホストコードが読み出されて実行される。これにより、シミュレーションの高速実行が可能となる。
ステップS11において、次に実行するホストコードがバッファ220内にない場合は、ステップS12からステップS16において、ターゲットコードがフェッチされてホストコードに変換され、ステップS19において、そのホストコードが実行される。
本実施の形態では、キャッシュミス時の動作がステップS12だけでなく、ステップS18でも模擬される。仮にキャッシュミス時の動作がステップS12でしか模擬されないとすると、バッファ220内で処理がループした場合に、ステップS12の処理が実行されない。即ち、キャッシュミス時の動作が模擬されない。しかし、バッファ220内で処理がループする状況でも、バッファ220よりも容量が小さいターゲットシステムのキャッシュではキャッシュミスが起きる場合がある。本実施の形態では、そのような場合にも、ステップS17でキャッシュミスが検知され、ステップS18の処理が実行される。即ち、キャッシュミス時の動作が模擬される。したがって、正確なソフトウェア性能評価が可能となる。
図4を参照して、シミュレーション装置100が判定コードを付加した後にホストコードを生成及び格納する動作を説明する。この動作は、図3のステップS16の処理に相当する。図4には、判定コードを付加する一連の動作のフローだけでなく、コード変換の例も示しているが、この例は、ターゲットコード、中間コード、ホストコードの記述形式及び記述内容を限定するものではない。
ステップS21において、第1生成部251は、ターゲットコードを中間コードへ変換する。中間コードは、前述したように、ISS部200固有の命令コードである。ターゲットコードを中間コードへ変換することで様々なプロセッサの命令コードをISS部200で扱うことが可能になる。図4の例では、load命令である1つのターゲットコードが、2つのmovi_i64命令と1つのld_i64命令とである3つの中間コードへ変換されているが、ISS部200の仕様に応じて、1つの命令、又は、別の命令の組み合わせからなる中間コードへ変換されてもよい。add命令である別のターゲットコードについても同じである。
ステップS22において、付加部252は、ステップS21の出力である中間コードへ判定コードを付加する。判定コードは、ISS部200固有の命令コードの1つとして実装される。図4の例では、判定コードが「cache_chk」と記述されているが、任意の名称に変更されてよい。判定コードが付加される箇所は、ターゲットコードから変換された中間コードの先頭である。
ステップS23において、第2生成部253は、ステップS22の出力である、判定コードが付加された中間コードをホストコードへ変換する。
ステップS24において、図3のステップS12でフェッチされたターゲットコード全てに対し、ホストコードへの変換が完了したか否かが確認される。全てのターゲットコードに対して変換が完了していない場合、フローはステップS21に戻り、次のターゲットコードが中間コードへ変換される。全てのターゲットコードに対して変換が完了している場合、フローはステップS25に進む。
ステップS25において、第2生成部253は、ステップS23で生成したホストコードをバッファ220へ格納する。
上記のように、本実施の形態では、キャッシュヒット/ミスを判定するように指示する判定コードがターゲットコードではなく、中間コードに付加されるため、ソフトウェアモデル400に特別な変更が必要ない。したがって、ソフトウェアモデル400をソフトウェアのデバッグに使用できる。
なお、1つのターゲットコードに対してステップS21からステップS23の一連の処理が実行されてから、次のターゲットコードに対して同じ一連の処理が実行される代わりに、フェッチされたターゲットコード全てに対してステップS21からステップS23の処理が順番に実行されてもよい。
図5及び図6を参照して、シミュレーション装置100がキャッシュヒット/ミスを判定する動作を説明する。この動作は、図3のステップS17の処理に相当する。
キャッシュヒット/ミスの判定は、ターゲットコードのアドレスであるターゲットアドレス500と、前述したタグテーブル211とを使用して行われる。
ターゲットアドレス500は、ターゲットシステムのメモリからターゲットコードをフェッチする際に使用されるアドレスそのものである。ターゲットアドレス500は、タグ501と、キャッシュインデックス502と、ブロックオフセット503とに分けられる。タグ501及びキャッシュインデックス502のビット幅は、キャッシュ構成によって適宜決められるが、ターゲットアドレス500が32ビットであるとき、タグ501を6ビット、キャッシュインデックス502を9ビットとすることができる。この場合、ターゲットアドレス500のMSB(Most・Significant・Bit)側の6ビットがタグ501、その次の9ビットがキャッシュインデックス502、残りの17ビットがブロックオフセット503となる。
タグテーブル211は、ターゲットシステムのキャッシュに格納されるターゲットコードを識別するタグ212を格納する。ターゲットコードがターゲットシステムのキャッシュに格納されたと仮定したとき、そのターゲットコードのフェッチ元であるターゲットアドレス500に含まれるタグ501は、タグテーブル211に新たなタグ212として格納される。タグテーブル211においてタグ501が格納される位置は、タグ501と同じターゲットアドレス500に含まれるキャッシュインデックス502によって決まる。即ち、キャッシュインデックス502は、タグテーブル211のアドレスであり、タグ212がタグテーブル211のどこに保持されているかを示す。なお、タグテーブル211は、タグ212のほかに、タグ212のヒット率、使用頻度等のソフトウェア性能評価で必要となる情報を格納してもよい。
ステップS31において、キャッシュ判定部232は、選択部231よりターゲットアドレス500の入力を受ける。キャッシュ判定部232は、入力されたターゲットアドレス500に含まれるキャッシュインデックス502を使用して、タグテーブル211へアクセスすることで、タグテーブル211からタグ212を取得する。
ステップS32において、キャッシュ判定部232は、ステップS31で取得したタグ212と、選択部231より入力されたターゲットアドレス500に含まれるタグ501とを比較することで、キャッシュヒット/ミスを判定する。タグ212,501が同じであれば、フローはステップS33に進む。タグ212,501が同じでなければ、フローはステップS34に進む。
ステップS33において、キャッシュ判定部232は、キャッシュヒット/ミスの判定結果510としてキャッシュヒットを出力する。具体的には、キャッシュ判定部232は、判定結果510を表すキャッシュヒット/ミスフラグを「キャッシュヒット」として生成する。キャッシュ判定部232は、生成したキャッシュヒット/ミスフラグを出力する。キャッシュヒット/ミスフラグは、1ビットで判定結果510を表す。本実施の形態では、「1」が「キャッシュヒット」、「0」が「キャッシュミス」を表す。
ステップS34において、キャッシュ判定部232は、更新イネーブルフラグ520を出力することで、ステップS31でアクセスしたタグテーブル211の内容を、選択部231より入力されたターゲットアドレス500に含まれるタグ501に変更する。
ステップS35において、キャッシュ判定部232は、キャッシュヒット/ミスの判定結果510としてキャッシュミスを出力する。具体的には、キャッシュ判定部232は、判定結果510を表すキャッシュヒット/ミスフラグを「キャッシュミス」として生成する。キャッシュ判定部232は、生成したキャッシュヒット/ミスフラグを出力する。
なお、図3のステップS12においても、キャッシュ判定部232は、選択部231よりターゲットアドレス500の入力とタグテーブル211の更新指示とを受けて、ステップS34と同等の処理を行う。即ち、キャッシュ判定部232は、更新イネーブルフラグ520を出力することで、選択部231より入力されたターゲットアドレス500に含まれるキャッシュインデックス502に対応するタグテーブル211の内容を、選択部231より入力されたターゲットアドレス500に含まれるタグ501に変更する。
図7を参照して、シミュレーション装置100がキャッシュヒット/ミスの判定結果510に応じて行う動作を説明する。この動作の一部は、図3のステップS18の処理に相当する。
ステップS41において、仮想フェッチ制御部237は、キャッシュ判定部232よりキャッシュヒット/ミスフラグの入力を受ける。仮想フェッチ制御部237は、入力されたキャッシュヒット/ミスフラグによって表されるキャッシュヒット/ミスの判定結果510がキャッシュヒットであるか否かを判定する。判定結果510がキャッシュヒットであれば、フローはステップS42に進む。判定結果510がキャッシュミスであれば、フローはステップS43に進む。
ステップS42において、仮想フェッチ制御部237は、仮想命令フェッチフラグを「未実行」として生成する。仮想フェッチ制御部237は、生成した仮想命令フェッチフラグを出力する。仮想命令フェッチフラグは、1ビットで仮想命令フェッチを実行すべきかどうかを表す。本実施の形態では、「1」が「実行」、「0」が「未実行」を表す。
ステップS43において、仮想フェッチ制御部237は、仮想命令フェッチアドレスを生成する。仮想命令フェッチアドレスは、ターゲットアドレス500と同じか、或いは、ターゲットアドレス500をターゲットシステムのキャッシュのラインサイズに合わせて成形したアドレスである。
ステップS44において、仮想フェッチ制御部237は、仮想命令フェッチフラグを「実行」として生成する。仮想フェッチ制御部237は、生成した仮想命令フェッチフラグを出力する。
仮想命令フェッチフラグは、フェッチ部240に入力される。フェッチ部240は、仮想命令フェッチアドレスが「実行」である場合、ステップS43で生成された仮想命令フェッチアドレスを使用して、命令メモリモデル部202からターゲットコードをフェッチする。フェッチ部240は、フェッチしたターゲットコードを破棄してもよいし、仮想命令フェッチ用のレジスタ等に一定期間保持してもよい。
図8を参照して、シミュレーション装置100によるシミュレーションの例X11を説明する。
例X11では、12個の命令A〜Lからなるソフトウェアが、2ラインの命令キャッシュメモリを有するターゲットシステムで動作する。命令A〜Lが順に実行された後、命令E〜H、命令A〜Dが順に実行される。命令は、ターゲットシステムのキャッシュに空いているラインが空いていれば、そのラインへ格納され、全てのラインが埋まっていれば、古い命令に上書き更新される。シミュレーション装置100のバッファ220は、ターゲットシステムの仕様によらず、十分な容量を有している。
図8の上段は、ターゲットシステムのメモリ内の命令配置と、ターゲットシステムのキャッシュの状態(1)〜(4)における命令格納状況とを示している。図8の下段は、左から右に向かって時間の経過を表すとともに、各時点におけるターゲットシステムのキャッシュの状態と、シミュレーション装置100でフェッチ及び実行される命令と、実機であるターゲットシステムでフェッチ及び実行される命令とを表している。図中、A〜Lが命令、Feがフェッチ、Fexが命令Xのフェッチ、Caがターゲットシステムのキャッシュへのアクセス、BFeが仮想命令フェッチを表している。また、ADが命令A〜Dのホストコード、EHが命令E〜Hのホストコード、ILが命令I〜Lのホストコードを表している。シミュレーション装置100のフェッチは1命令単位であるが、ターゲットシステムのフェッチは4命令単位である。一般的なシステムでは、1命令1バイトであり、1メモリアドレスに4バイト分の命令が格納されるため、このように仮定している。
ターゲットシステムのキャッシュの状態は、シミュレーション装置100では、タグテーブル211によって管理される。
まず、命令A〜Dが実行される。シミュレーション装置100及びターゲットシステムのそれぞれにおいて、キャッシュミスが発生し、命令A〜Dがフェッチされる。ターゲットシステムのキャッシュの2ライン中1ライン目が命令A〜Dで埋まる。これにより、ターゲットシステムのキャッシュが状態(1)になる。命令A〜Dは、シミュレーション装置100のバッファ220にも格納されていない。よって、命令A〜Dは、まとめてホストコードへ変換され、バッファ220に格納される。
次に、命令E〜Hが実行される。シミュレーション装置100及びターゲットシステムのそれぞれにおいて、キャッシュミスが発生し、命令E〜Hがフェッチされる。ターゲットシステムのキャッシュの2ライン中、空いている2ライン目が命令E〜Hで埋まる。これにより、ターゲットシステムのキャッシュが状態(2)になる。命令E〜Hは、シミュレーション装置100のバッファ220にも格納されていない。よって、命令E〜Hは、まとめてホストコードへ変換され、バッファ220に格納される。この時点でバッファ220には、命令A〜D、命令E〜Hのホストコードが格納されている。
次に、命令I〜Lが実行される。シミュレーション装置100及びターゲットシステムのそれぞれにおいて、キャッシュミスが発生し、命令I〜Lがフェッチされる。ターゲットシステムのキャッシュの2ラインがいずれも埋まっているため、古い方の命令A〜Dが命令I〜Lで上書き更新される。これにより、ターゲットシステムのキャッシュが状態(3)になる。命令I〜Lは、シミュレーション装置100のバッファ220にも格納されていない。よって、命令I〜Lは、まとめてホストコードへ変換され、バッファ220に格納される。この時点でバッファ220には、命令A〜D、命令E〜H、命令I〜Lのホストコードが格納されている。
次に、命令E〜Hが再び実行される。シミュレーション装置100及びターゲットシステムのそれぞれにおいて、キャッシュヒットが発生する。そのため、命令E〜Hはフェッチされず、キャッシュアクセスにより取得される。命令E〜Hは、シミュレーション装置100のバッファ220にも格納されている。よって、シミュレーション装置100では、命令E〜Hのホストコードがバッファ220から取得される。
次に、命令A〜Dが再び実行される。シミュレーション装置100及びターゲットシステムのそれぞれにおいて、キャッシュミスが発生し、命令A〜Dがフェッチされる。ターゲットシステムのキャッシュの2ラインがいずれも埋まっているため、古い方の命令E〜Hが命令A〜Dで上書き更新される。これにより、ターゲットシステムのキャッシュが状態(4)になる。命令A〜Dは、シミュレーション装置100のバッファ220には格納されている。よって、シミュレーション装置100では、命令A〜Dのホストコードがバッファ220から取得される。即ち、シミュレーション装置100で命令A〜Dがフェッチされる動作は、仮想命令フェッチとして実施される。
以後同様に、シミュレーション装置100では、バッファ220にホストコードが格納されていても、キャッシュミスが発生する状況では、仮想命令フェッチが実施される。これにより、実機と同等のメモリアクセス動作が模擬される。
***効果の説明***
本実施の形態では、ホストコードを格納するためのバッファ220を利用してキャッシュミスの有無を判定するのではなく、ターゲットシステムのキャッシュに格納されるターゲットコードの一覧を管理しておき、この一覧を利用してキャッシュミスの有無を判定する。よって、本実施の形態によれば、シミュレーションにおけるキャッシュミスの判定の精度が向上する。
本実施の形態では、ソフトウェアへ変更を加えることなく、バッファ220を利用してシミュレーションの高速実行を可能としつつ、ハードウェアとソフトウェアとの協調シミュレーションを実行することができる。この協調シミュレーションでは、ターゲットシステムのキャッシュヒット/ミスの判定とキャッシュミスの発生時の命令メモリアクセス動作とを模擬することができる。本実施の形態に係るシミュレーション装置100を用いることで、正確なソフトウェアの性能評価を実施することができる。
***他の構成***
ターゲットシステムのキャッシュに格納されるターゲットコードの一覧は、本実施の形態ではタグ212を格納するタグテーブル211として管理されるが、ターゲットコードを識別可能な別の情報を格納するテーブル又はその他のデータ構造として管理されてもよい。
実施の形態2.
本実施の形態に係る装置の構成、本実施の形態に係る装置の動作、本実施の形態の効果を順番に説明する。主に実施の形態1との差異を説明する。
***構成の説明***
図9を参照して、本実施の形態に係る装置であるシミュレーション装置100の構成を説明する。
本実施の形態において、シミュレーション装置100は、キャッシュライン情報600を保持する。他の部分については、図1に示した実施の形態1のものと同じである。
図10を参照して、CPUコアモデル部201の構成を説明する。
実施の形態1において、生成部250は、1つの命令ごとに判定コードを付加する。一方、本実施の形態において、生成部250は、ターゲットシステムのキャッシュのラインサイズ分の命令ごとに判定コードを付加する。
本実施の形態では、付加部252に対し、キャッシュライン情報600が供給される。他の部分については、図2に示した実施の形態1のものと同じである。
***動作の説明***
図11を参照して、シミュレーション装置100の動作を説明する。シミュレーション装置100の動作は、本実施の形態に係るシミュレーション方法に相当する。シミュレーション装置100の動作は、本実施の形態に係るシミュレーションプログラムの処理手順に相当する。
ステップS11からステップS15、及び、ステップS17からステップS20の処理については、図3に示した実施の形態1のものと同じである。本実施の形態では、ステップS16の代わりに、ステップS16’の処理が実行される。ステップS16’では、キャッシュライン情報600が供給される。
ステップS16’において、第1生成部251は、1つの命令ごとに、ステップS12でフェッチされたターゲットコードを中間コードへ変換する。付加部252は、キャッシュライン情報600を参照して、キャッシュライン分の命令に対応する中間コードに判定コードを付加する。第2生成部253は、判定コードが付加された中間コードをホストコードへ変換し、ホストコードをバッファ220へ格納する。
図12を参照して、シミュレーション装置100が判定コードを付加した後にホストコードを生成及び格納する動作を説明する。この動作は、図11のステップS16’の処理に相当する。図12には、図4と同じように、判定コードを付加する一連の動作のフローだけでなく、コード変換の例も示しているが、この例は、ターゲットコード、中間コード、ホストコードの記述形式及び記述内容を限定するものではない。
ステップS21において、第1生成部251は、ターゲットコードを中間コードへ変換する。ステップS21の後、フローはステップS26に進む。
ステップS26において、付加部252は、ステップS21の処理が、キャッシュライン情報600によって示されたキャッシュライン分実行されたか否かを判定する。ステップS21の処理がキャッシュライン分実行されていない場合、フローがステップS21に戻り、次のターゲットコードが中間コードへ変換される。ステップS21の処理がキャッシュライン分実行された場合、フローはステップS22に進む。
ステップS22において、付加部252は、ステップS21の出力であるキャッシュライン分の中間コードへ判定コードを付加する。
ステップS23からステップS25の処理については、図4に示した実施の形態1のものと同じである。
本実施の形態においても、図8に示した例X11と同じシミュレーションが実施できる。
***効果の説明***
本実施の形態では、ソフトウェアへ変更を加えることなく、バッファ220を利用してシミュレーションの高速実行を可能としつつ、ハードウェアとソフトウェアとの協調シミュレーションを実行することができる。この協調シミュレーションでは、ターゲットシステムのキャッシュヒット/ミスの判定とキャッシュミスの発生時の命令メモリアクセス動作とをキャッシュライン単位で模擬することができる。本実施の形態に係るシミュレーション装置100を用いることで、正確なソフトウェアの性能評価を実施することができる。
実施の形態3.
本実施の形態について、主に実施の形態1との差異を説明する。
本実施の形態に係るシミュレーション装置100の構成については、図1に示した実施の形態1のものと同じである。
図13を参照して、CPUコアモデル部201の構成を説明する。
本実施の形態では、実行部230が、キャッシュ判定部232を有していない。実施の形態1においてキャッシュ判定部232が行っている処理は、命令実行部233によって行われる。
本実施の形態において、ターゲットシステムのキャッシュのキャッシュヒットが発生しているか否かの判定は、命令実行部233で行われる。判定方法は、実施の形態1又は実施の形態2と同じでよいが、他の方法でもよい。キャッシュヒットが発生しているか否かの判定結果510は、命令実行部233から仮想フェッチ制御部237へ送られる。判定結果510がキャッシュミスであった場合、仮想フェッチ制御部237は仮想命令フェッチを実施する。
以下では、図14を参照して、本発明の実施の形態に係るシミュレーション装置100のハードウェア構成例を説明する。
シミュレーション装置100は、コンピュータである。シミュレーション装置100は、プロセッサ901、補助記憶装置902、メモリ903、通信装置904、入力インタフェース905、ディスプレイインタフェース906といったハードウェアを備える。プロセッサ901は、信号線910を介して他のハードウェアと接続され、これら他のハードウェアを制御する。入力インタフェース905は、入力装置907に接続されている。ディスプレイインタフェース906は、ディスプレイ908に接続されている。
プロセッサ901は、プロセッシングを行うIC(Integrated・Circuit)である。プロセッサ901は、ホストCPUに相当する。
補助記憶装置902は、例えば、ROM(Read・Only・Memory)、フラッシュメモリ、又は、HDD(Hard・Disk・Drive)である。
メモリ903は、例えば、プロセッサ901のワークエリア等として利用されるRAM(Random・Access・Memory)である。メモリ903は、記憶媒体210及びバッファ220に相当する。
通信装置904は、データを受信するレシーバ921及びデータを送信するトランスミッタ922を含む。通信装置904は、例えば、通信チップ又はNIC(Network・Interface・Card)である。通信装置904は、ネットワークに接続され、ネットワークを介してシミュレーション装置100を制御するために利用される。
入力インタフェース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には、実行部230、フェッチ部240、生成部250といった「部」の機能を実現するプログラムが記憶されている。このプログラムは、メモリ903にロードされ、プロセッサ901に読み込まれ、プロセッサ901によって実行される。補助記憶装置902には、OS(Operating・System)も記憶されている。OSの少なくとも一部がメモリ903にロードされ、プロセッサ901はOSを実行しながら、「部」の機能を実現するプログラムを実行する。
図14では、1つのプロセッサ901が示されているが、シミュレーション装置100が複数のプロセッサ901を備えていてもよい。そして、複数のプロセッサ901が「部」の機能を実現するプログラムを連携して実行してもよい。
「部」の処理の結果を示す情報やデータや信号値や変数値は、補助記憶装置902、メモリ903、又は、プロセッサ901内のレジスタ又はキャッシュメモリに記憶される。
「部」を「サーキットリ」で提供してもよい。また、「部」を「回路」又は「工程」又は「手順」又は「処理」に読み替えてもよい。「回路」及び「サーキットリ」は、プロセッサ901だけでなく、ロジックIC、GA(Gate・Array)、ASIC(Application・Specific・Integrated・Circuit)、FPGA(Field−Programmable・Gate・Array)といった他の種類の処理回路をも包含する概念である。
以上、本発明の実施の形態について説明したが、これらの実施の形態のうち、いくつかを組み合わせて実施しても構わない。或いは、これらの実施の形態のうち、いずれか1つ又はいくつかを部分的に実施しても構わない。例えば、これらの実施の形態の説明において「部」として説明するもののうち、いずれか1つのみを採用してもよいし、いくつかの任意の組み合わせを採用してもよい。なお、本発明は、これらの実施の形態に限定されるものではなく、必要に応じて種々の変更が可能である。
100 シミュレーション装置、200 ISS部、201 CPUコアモデル部、202 命令メモリモデル部、210 記憶媒体、211 タグテーブル、212 タグ、220 バッファ、230 実行部、231 選択部、232 キャッシュ判定部、233 命令実行部、234 アドレス生成部、235 バッファ判定部、236 インタフェース部、237 仮想フェッチ制御部、240 フェッチ部、250 生成部、251 第1生成部、252 付加部、253 第2生成部、254 管理部、300 ハードウェアモデル部、301 外部I/Oモデル部、302 周辺装置モデル部、303 データメモリモデル部、304 CPUバスモデル部、400 ソフトウェアモデル、500 ターゲットアドレス、501 タグ、502 キャッシュインデックス、503 ブロックオフセット、510 判定結果、520 更新イネーブルフラグ、600 キャッシュライン情報、901 プロセッサ、902 補助記憶装置、903 メモリ、904 通信装置、905 入力インタフェース、906 ディスプレイインタフェース、907 入力装置、908 ディスプレイ、910 信号線、911 ケーブル、912 ケーブル、921 レシーバ、922 トランスミッタ。

Claims (9)

  1. 命令を示すターゲットコードを記憶するメモリと前記メモリから読み込まれるターゲットコードを格納するためのキャッシュとを有するシステムの動作を模擬するシミュレーション装置であって、
    前記メモリに記憶されたターゲットコードが読み込まれるとともに読み込まれたターゲットコードで前記キャッシュが更新される動作であるキャッシュミス時の動作が前記システムにより行われたと仮定した場合の前記キャッシュに格納されるターゲットコードの一覧を記憶する記憶媒体と、
    対応するターゲットコードの命令を模擬用の形式で示すホストコードを格納するためのバッファと、
    前記バッファに格納されたホストコードを順次読み込み、読み込んだホストコードの命令を実行するとともに、読み込んだホストコードに対応するターゲットコードである対応コードが前記一覧に含まれているかどうかを判定し、前記対応コードが含まれていないと判定した場合、前記対応コードについて前記キャッシュミス時の動作を模擬し、模擬した動作に合わせて前記一覧を更新する実行部と
    を備えるシミュレーション装置。
  2. 前記実行部は、前記バッファに格納されていないホストコードの命令を次に実行する場合、そのホストコードに対応するターゲットコードである次コードについて前記キャッシュミス時の動作を模擬し、模擬した動作に合わせて前記一覧を更新し、
    前記シミュレーション装置は、さらに、
    前記次コードについて前記キャッシュミス時の動作が前記実行部により模擬された場合、前記次コードに対応するホストコードを生成し、生成したホストコードを前記バッファに格納する生成部
    を備える請求項1に記載のシミュレーション装置。
  3. 前記生成部は、生成するホストコードに、前記キャッシュのキャッシュミスが発生するかどうかを判定するよう指示する判定コードを付加し、
    前記実行部は、読み込んだホストコードに前記判定コードが付加されている場合、前記対応コードが前記一覧に含まれているかどうかを判定する請求項2に記載のシミュレーション装置。
  4. 前記生成部は、1つの命令ごとに前記判定コードを付加する請求項3に記載のシミュレーション装置。
  5. 前記生成部は、前記キャッシュのラインサイズ分の命令ごとに前記判定コードを付加する請求項3に記載のシミュレーション装置。
  6. 前記バッファは、前記キャッシュよりも容量が大きい請求項1から5のいずれか1項に記載のシミュレーション装置。
  7. 前記一覧は、前記キャッシュに格納されるターゲットコードを識別するタグを格納するタグテーブルとして前記記憶媒体に記憶される請求項1から6のいずれか1項に記載のシミュレーション装置。
  8. 命令を示すターゲットコードを記憶するメモリと前記メモリから読み込まれるターゲットコードを格納するためのキャッシュとを有するシステムの動作を模擬するシミュレーション方法であって、
    前記メモリに記憶されたターゲットコードが読み込まれるとともに読み込まれたターゲットコードで前記キャッシュが更新される動作であるキャッシュミス時の動作が前記システムにより行われたと仮定した場合の前記キャッシュに格納されるターゲットコードの一覧を記憶する記憶媒体と、対応するターゲットコードの命令を模擬用の形式で示すホストコードを格納するためのバッファとを備えるコンピュータが、前記バッファに格納されたホストコードを順次読み込み、読み込んだホストコードの命令を実行するとともに、読み込んだホストコードに対応するターゲットコードである対応コードが前記一覧に含まれているかどうかを判定し、前記対応コードが含まれていないと判定した場合、前記対応コードについて前記キャッシュミス時の動作を模擬し、模擬した動作に合わせて前記一覧を更新するシミュレーション方法。
  9. 命令を示すターゲットコードを記憶するメモリと前記メモリから読み込まれるターゲットコードを格納するためのキャッシュとを有するシステムの動作を模擬するシミュレーションプログラムであって、
    前記メモリに記憶されたターゲットコードが読み込まれるとともに読み込まれたターゲットコードで前記キャッシュが更新される動作であるキャッシュミス時の動作が前記システムにより行われたと仮定した場合の前記キャッシュに格納されるターゲットコードの一覧を記憶する記憶媒体と、対応するターゲットコードの命令を模擬用の形式で示すホストコードを格納するためのバッファとを備えるコンピュータに、
    前記バッファに格納されたホストコードを順次読み込み、読み込んだホストコードの命令を実行するとともに、読み込んだホストコードに対応するターゲットコードである対応コードが前記一覧に含まれているかどうかを判定し、前記対応コードが含まれていないと判定した場合、前記対応コードについて前記キャッシュミス時の動作を模擬し、模擬した動作に合わせて前記一覧を更新する処理
    を実行させるシミュレーションプログラム。
JP2017520112A 2015-05-26 2015-05-26 シミュレーション装置及びシミュレーション方法及びシミュレーションプログラム Active JP6234639B2 (ja)

Applications Claiming Priority (1)

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

Publications (2)

Publication Number Publication Date
JPWO2016189642A1 true JPWO2016189642A1 (ja) 2017-08-17
JP6234639B2 JP6234639B2 (ja) 2017-11-22

Family

ID=57393918

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017520112A Active JP6234639B2 (ja) 2015-05-26 2015-05-26 シミュレーション装置及びシミュレーション方法及びシミュレーションプログラム

Country Status (3)

Country Link
US (1) US20180143890A1 (ja)
JP (1) JP6234639B2 (ja)
WO (1) WO2016189642A1 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019152792A1 (en) * 2018-02-02 2019-08-08 Dover Microsystems, Inc. Systems and methods for policy linking and/or loading for secure initialization
WO2019213061A1 (en) 2018-04-30 2019-11-07 Dover Microsystems, Inc. Systems and methods for checking safety properties
TW202022679A (zh) 2018-11-06 2020-06-16 美商多佛微系統公司 用於停滯主處理器的系統和方法
US11841956B2 (en) 2018-12-18 2023-12-12 Dover Microsystems, Inc. Systems and methods for data lifecycle protection
US12079197B2 (en) 2019-10-18 2024-09-03 Dover Microsystems, Inc. Systems and methods for updating metadata

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014241031A (ja) * 2013-06-11 2014-12-25 富士通株式会社 計算装置、計算方法、および計算プログラム

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014241031A (ja) * 2013-06-11 2014-12-25 富士通株式会社 計算装置、計算方法、および計算プログラム

Also Published As

Publication number Publication date
JP6234639B2 (ja) 2017-11-22
WO2016189642A1 (ja) 2016-12-01
US20180143890A1 (en) 2018-05-24

Similar Documents

Publication Publication Date Title
JP6234639B2 (ja) シミュレーション装置及びシミュレーション方法及びシミュレーションプログラム
CN101410812B (zh) 用于迁移受到输入/输出设备访问的数据的方法和设备
CN107436762A (zh) 一种寄存器代码文件生成方法、装置和电子设备
US7895376B2 (en) Hardware configuration information system, method, and computer program product
US20120011490A1 (en) Development system
US8886512B2 (en) Simulation apparatus, computer-readable recording medium, and method
JP6667733B2 (ja) シミュレーション装置、シミュレーション方法およびシミュレーションプログラム
JP2007094986A (ja) シミュレーション装置およびシミュレーション方法
JP6545417B2 (ja) シミュレーション装置、シミュレーション方法およびシミュレーションプログラム
CN114237705A (zh) 验证方法、装置、电子设备和计算机可读存储介质
JP6318976B2 (ja) デバッグ回路、デバッガ装置、半導体装置及びデバッグ方法
US20150106916A1 (en) Leveraging a peripheral device to execute a machine instruction
JP6234640B2 (ja) シミュレーション装置及びシミュレーション方法及びシミュレーションプログラム
KR102466551B1 (ko) 데이터 기록 방법, 장치 및 전자 기기
JP2012018641A (ja) ソフトウェア開発システム
JP2013122740A (ja) データ処理装置、変換装置、データ処理システム、変換方法、および変換プログラム
JP2018121245A (ja) 通信装置、通信仕様差分抽出方法及び通信仕様差分抽出プログラム
JP2007219893A (ja) ファームウェア評価システムおよびファームウェア評価方法
JP6331400B2 (ja) 検証方法、検証装置および検証プログラム
JP6239212B1 (ja) シミュレーション装置、シミュレーション方法及びシミュレーションプログラム
WO2018163387A1 (ja) 解析装置、解析方法及び解析プログラム
JP2014099215A (ja) マルチコアプロセッサシステム、マルチコアプロセッサシステムの制御方法、およびマルチコアプロセッサシステムの制御プログラム
JP5597584B2 (ja) 命令実行分析装置及び命令実行分析方法及びプログラム
JP2012022640A (ja) ソフトウェア開発システム
JP2000231495A (ja) 仮想マシン

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

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

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250