(57)【要約】  シミュレーション装置において、実行部（２３０）は、バッファ（２２０）に格納されたホストコードを順次読み込む。実行部（２３０）は、読み込んだホストコードの命令を実行する。また、実行部（２３０）は、読み込んだホストコードに対応するターゲットコードである対応コードがタグテーブル（２１１）に含まれているかどうかを判定する。実行部（２３０）は、対応コードがタグテーブル（２１１）に含まれていないと判定した場合、その対応コードについてキャッシュミス時の動作を模擬する。実行部（２３０）は、模擬した動作に合わせてタグテーブル（２１１）を更新する。
2016189642.tif 000002
【特許請求の範囲】
【請求項１】
命令を示すターゲットコードを記憶するメモリと前記メモリから読み込まれるターゲットコードを格納するためのキャッシュとを有するシステムの動作を模擬するシミュレーション装置であって、
前記メモリに記憶されたターゲットコードが読み込まれるとともに読み込まれたターゲットコードで前記キャッシュが更新される動作であるキャッシュミス時の動作が前記システムにより行われたと仮定した場合の前記キャッシュに格納されるターゲットコードの一覧を記憶する記憶媒体と、
対応するターゲットコードの命令を模擬用の形式で示すホストコードを格納するためのバッファと、
前記バッファに格納されたホストコードを順次読み込み、読み込んだホストコードの命令を実行するとともに、読み込んだホストコードに対応するターゲットコードである対応コードが前記一覧に含まれているかどうかを判定し、前記対応コードが含まれていないと判定した場合、前記対応コードについて前記キャッシュミス時の動作を模擬し、模擬した動作に合わせて前記一覧を更新する実行部と
を備えるシミュレーション装置。
【請求項２】
前記実行部は、前記バッファに格納されていないホストコードの命令を次に実行する場合、そのホストコードに対応するターゲットコードである次コードについて前記キャッシュミス時の動作を模擬し、模擬した動作に合わせて前記一覧を更新し、
前記シミュレーション装置は、さらに、
前記次コードについて前記キャッシュミス時の動作が前記実行部により模擬された場合、前記次コードに対応するホストコードを生成し、生成したホストコードを前記バッファに格納する生成部
を備える請求項１に記載のシミュレーション装置。
【請求項３】
前記生成部は、生成するホストコードに、前記キャッシュのキャッシュミスが発生するかどうかを判定するよう指示する判定コードを付加し、
前記実行部は、読み込んだホストコードに前記判定コードが付加されている場合、前記対応コードが前記一覧に含まれているかどうかを判定する請求項２に記載のシミュレーション装置。
【請求項４】
前記生成部は、１つの命令ごとに前記判定コードを付加する請求項３に記載のシミュレーション装置。
【請求項５】
前記生成部は、前記キャッシュのラインサイズ分の命令ごとに前記判定コードを付加する請求項３に記載のシミュレーション装置。
【請求項６】
前記バッファは、前記キャッシュよりも容量が大きい請求項１から５のいずれか１項に記載のシミュレーション装置。
【請求項７】
前記一覧は、前記キャッシュに格納されるターゲットコードを識別するタグを格納するタグテーブルとして前記記憶媒体に記憶される請求項１から６のいずれか１項に記載のシミュレーション装置。
【請求項８】
命令を示すターゲットコードを記憶するメモリと前記メモリから読み込まれるターゲットコードを格納するためのキャッシュとを有するシステムの動作を模擬するシミュレーション方法であって、
前記メモリに記憶されたターゲットコードが読み込まれるとともに読み込まれたターゲットコードで前記キャッシュが更新される動作であるキャッシュミス時の動作が前記システムにより行われたと仮定した場合の前記キャッシュに格納されるターゲットコードの一覧を記憶する記憶媒体と、対応するターゲットコードの命令を模擬用の形式で示すホストコードを格納するためのバッファとを備えるコンピュータが、前記バッファに格納されたホストコードを順次読み込み、読み込んだホストコードの命令を実行するとともに、読み込んだホストコードに対応するターゲットコードである対応コードが前記一覧に含まれているかどうかを判定し、前記対応コードが含まれていないと判定した場合、前記対応コードについて前記キャッシュミス時の動作を模擬し、模擬した動作に合わせて前記一覧を更新するシミュレーション方法。
【請求項９】
命令を示すターゲットコードを記憶するメモリと前記メモリから読み込まれるターゲットコードを格納するためのキャッシュとを有するシステムの動作を模擬するシミュレーションプログラムであって、
前記メモリに記憶されたターゲットコードが読み込まれるとともに読み込まれたターゲットコードで前記キャッシュが更新される動作であるキャッシュミス時の動作が前記システムにより行われたと仮定した場合の前記キャッシュに格納されるターゲットコードの一覧を記憶する記憶媒体と、対応するターゲットコードの命令を模擬用の形式で示すホストコードを格納するためのバッファとを備えるコンピュータに、
前記バッファに格納されたホストコードを順次読み込み、読み込んだホストコードの命令を実行するとともに、読み込んだホストコードに対応するターゲットコードである対応コードが前記一覧に含まれているかどうかを判定し、前記対応コードが含まれていないと判定した場合、前記対応コードについて前記キャッシュミス時の動作を模擬し、模擬した動作に合わせて前記一覧を更新する処理
を実行させるシミュレーションプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、シミュレーション装置及びシミュレーション方法及びシミュレーションプログラムに関するものである。
【背景技術】
【０００２】
一般に、ＣＰＵ（Ｃｅｎｔｒａｌ・Ｐｒｏｃｅｓｓｉｎｇ・Ｕｎｉｔ）とメモリとを含むハードウェアと、ハードウェア上で動作するソフトウェアとで構成されるシステムには、ＣＰＵとメモリとの間でＣＰＵが頻繁に読み書きするデータを高速に転送することを目的として、キャッシュが搭載される。メモリとしては、命令を格納する命令メモリと、データを格納するデータメモリとがある。キャッシュとしては、命令を貯めるための命令キャッシュメモリと、データを貯めるためのデータキャッシュメモリとがある。【０００３】
システムの開発及び検証において、検証対象のシステムであるターゲットシステムのハードウェアモデルと、ターゲットシステムのソフトウェアとを並列動作させて検証するシミュレーション装置がある。ターゲットシステムのハードウェアモデルは、ターゲットシステムのハードウェアをＣベース言語のシステムレベル設計言語で記述したものである。ターゲットシステムのソフトウェアは、ターゲットシステムのＣＰＵであるターゲットプロセッサが実行可能なターゲットコードからなる。シミュレーション装置は、ターゲットコードの実行をＩＳＳ（Ｉｎｓｔｒｕｃｔｉｏｎ・Ｓｅｔ・Ｓｉｍｕｌａｔｏｒ）で模擬することで、ターゲットシステムを検証する。ＩＳＳは、ターゲットコードを、シミュレーション装置のＣＰＵであるホストＣＰＵが実行可能なホストコードに変換し、ホストコードを実行することで、ターゲットコードの実行を模擬する。ＩＳＳには、ホストコードを高速に実行するため、最近実行したホストコードを貯めるための命令キャッシュメモリが備えられる。【０００４】
命令キャッシュメモリを有するホストＣＰＵを使用して、ターゲットシステムのハードウェア及びソフトウェアの協調検証を実行するために、ソフトウェアの検証モデルを生成する技術がある（例えば、特許文献１参照）。この技術では、Ｃベース言語で記述されたプログラムが分岐又はジャンプ命令で区切られる。区切られた命令群であるＢａｓｉｃ・Ｂｌｏｃｋごとに、命令キャッシュメモリがヒットしているか否かを判定する手続きの呼び出しがプログラムに挿入される。呼び出しが挿入された後のプログラムがＩＳＳで実行される。これにより、Ｂａｓｉｃ・Ｂｌｏｃｋが実行される度に、命令キャッシュメモリがヒットしているか否かが判定される。命令キャッシュメモリがヒットしていないことが検出されたときには、キャッシュラインフィルを実行するための実行時間が加算される。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００６−２３８５２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
従来の技術では、ホストＣＰＵの命令キャッシュメモリがヒットしているか否かが判定される。そのため、ターゲットＣＰＵとホストＣＰＵとで命令キャッシュメモリのサイズが異なる場合、ターゲットＣＰＵの命令キャッシュメモリがヒットしない状況でも、ホストＣＰＵの命令キャッシュメモリがヒットしていると判定されることがある。よって、実行時間の見積もりの精度が十分でなく、正確なソフトウェア性能評価が困難である。【０００７】
従来の技術では、命令キャッシュメモリがヒットしていないことが検出されたときに、命令メモリへのバスアクセス動作が模擬されない。よって、正確なソフトウェア性能評価がますます困難になる。【０００８】
従来の技術では、命令キャッシュメモリがヒットしているか否かを判定する単位がＢａｓｉｃ・Ｂｌｏｃｋであり、キャッシュラインサイズと合わない。よって、判定の精度も低くなり、正確なソフトウェア性能評価が一層困難になる。【０００９】
従来の技術では、命令キャッシュメモリがヒットしているか否かを判定する手続きの呼び出しを検証対象のプログラムに挿入することで、ソフトウェアの検証モデルが生成される。即ち、ソフトウェアの検証モデルは、特別に変更されたプログラムであるため、ソフトウェアのデバッグには使用できない。【００１０】
本発明は、シミュレーションにおけるキャッシュミスの判定の精度を向上させることを目的とする。
【課題を解決するための手段】
【００１１】
本発明の一の態様に係るシミュレーション装置は、
命令を示すターゲットコードを記憶するメモリと前記メモリから読み込まれるターゲットコードを格納するためのキャッシュとを有するシステムの動作を模擬するシミュレーション装置であって、
前記メモリに記憶されたターゲットコードが読み込まれるとともに読み込まれたターゲットコードで前記キャッシュが更新される動作であるキャッシュミス時の動作が前記システムにより行われたと仮定した場合の前記キャッシュに格納されるターゲットコードの一覧を記憶する記憶媒体と、
対応するターゲットコードの命令を模擬用の形式で示すホストコードを格納するためのバッファと、
前記バッファに格納されたホストコードを順次読み込み、読み込んだホストコードの命令を実行するとともに、読み込んだホストコードに対応するターゲットコードである対応コードが前記一覧に含まれているかどうかを判定し、前記対応コードが含まれていないと判定した場合、前記対応コードについて前記キャッシュミス時の動作を模擬し、模擬した動作に合わせて前記一覧を更新する実行部とを備える。
【発明の効果】
【００１２】
本発明では、ホストコードを格納するためのバッファを利用してキャッシュミスの有無を判定するのではなく、キャッシュに格納されるターゲットコードの一覧を管理しておき、この一覧を利用してキャッシュミスの有無を判定する。よって、本発明によれば、シミュレーションにおけるキャッシュミスの判定の精度が向上する。
【図面の簡単な説明】
【００１３】
【図１】実施の形態１に係るシミュレーション装置の構成を示すブロック図。
【図２】実施の形態１に係るシミュレーション装置のＣＰＵコアモデル部の構成を示すブロック図。
【図３】実施の形態１に係るシミュレーション装置の動作を示すフローチャート。
【図４】実施の形態１に係るシミュレーション装置が判定コードを付加した後にホストコードを生成及び格納する動作の詳細を示すフローチャート。
【図５】実施の形態１に係るシミュレーション装置がキャッシュヒット／ミスを判定する動作を示す図。
【図６】実施の形態１に係るシミュレーション装置がキャッシュヒット／ミスを判定する動作の詳細を示すフローチャート。
【図７】実施の形態１に係るシミュレーション装置がキャッシュヒット／ミスの判定結果に応じて行う動作の詳細を示すフローチャート。
【図８】実施の形態１に係るシミュレーション装置によるシミュレーションの例を示す図。
【図９】実施の形態２に係るシミュレーション装置の構成を示すブロック図。
【図１０】実施の形態２に係るシミュレーション装置のＣＰＵコアモデル部の構成を示すブロック図。
【図１１】実施の形態２に係るシミュレーション装置の動作を示すフローチャート。
【図１２】実施の形態２に係るシミュレーション装置が判定コードを付加した後にホストコードを生成及び格納する動作の詳細を示すフローチャート。
【図１３】実施の形態３に係るシミュレーション装置のＣＰＵコアモデル部の構成を示すブロック図。
【図１４】本発明の実施の形態に係るシミュレーション装置のハードウェア構成例を示す図。
【発明を実施するための形態】
【００１４】
以下、本発明の実施の形態について、図を用いて説明する。なお、各図中、同一又は相当する部分には、同一符号を付している。実施の形態の説明において、同一又は相当する部分については、その説明を適宜省略又は簡略化する。
【００１５】
実施の形態１．
本実施の形態に係る装置の構成、本実施の形態に係る装置の動作、本実施の形態の効果を順番に説明する。
【００１６】
＊＊＊構成の説明＊＊＊
図１を参照して、本実施の形態に係る装置であるシミュレーション装置１００の構成を説明する。
【００１７】
シミュレーション装置１００は、ＩＳＳ部２００と、ハードウェアモデル部３００とを備える。シミュレーション装置１００は、ＩＳＳ部２００上でソフトウェアモデル４００を動作させることで、ターゲットシステムの動作を模擬する。ターゲットシステムは、各種ハードウェアを有するシステムである。ターゲットシステムのハードウェアとしては、命令メモリと、データメモリと、命令キャッシュメモリ及びデータキャッシュメモリを有するターゲットＣＰＵと、バスと、Ｉ／Ｏ（Ｉｎｐｕｔ／Ｏｕｔｐｕｔ）インタフェースと、周辺装置とがある。命令メモリは、命令を示すターゲットコードを記憶するメモリである。命令キャッシュメモリは、メモリから読み込まれるターゲットコードを格納するためのキャッシュである。以下の説明では、命令メモリのことを単に「ターゲットシステムのメモリ」と呼び、命令キャッシュメモリのことを単に「ターゲットシステムのキャッシュ」と呼ぶ場合がある。
【００１８】
ソフトウェアモデル４００は、ターゲットシステムで動作する検証対象のソフトウェアである。即ち、ソフトウェアモデル４００は、ターゲットＣＰＵが実行可能なターゲットコードからなる。よって、ＩＳＳ部２００は、ターゲットコードを、ホストＣＰＵが実行可能なホストコードに変換し、ホストコードを実行することで、ソフトウェアモデル４００を動作させる。
【００１９】
ＩＳＳ部２００は、ＣＰＵコアモデル部２０１と、命令メモリモデル部２０２とを備える。ＣＰＵコアモデル部２０１は、ターゲットＣＰＵ又はターゲットＣＰＵのコアの機能モデルを用いてターゲットＣＰＵの機能を模擬する。命令メモリモデル部２０２は、命令メモリの機能モデルを用いてターゲットシステムの命令メモリの機能を模擬する。
【００２０】
ハードウェアモデル部３００は、外部Ｉ／Ｏモデル部３０１と、周辺装置モデル部３０２と、データメモリモデル部３０３と、ＣＰＵバスモデル部３０４とを備える。外部Ｉ／Ｏモデル部３０１は、システム外部とのＩ／Ｏインタフェースの機能モデルを用いてターゲットシステムのＩ／Ｏインタフェースの機能を模擬する。周辺装置モデル部３０２は、周辺装置の機能モデルを用いてターゲットシステムの周辺装置の機能を模擬する。データメモリモデル部３０３は、データメモリの機能モデルを用いてターゲットシステムのデータメモリの機能を模擬する。ＣＰＵバスモデル部３０４は、バスの機能モデルを用いてターゲットシステムのバスの機能を模擬する。
【００２１】
ソフトウェアモデル４００は、Ｃ言語等の高級言語を用いて記述される。ハードウェアの機能モデルは、Ｃ言語等の高級言語、又は、ＨＤＬ（Ｈａｒｄｗａｒｅ・Ｄｅｓｃｒｉｐｔｉｏｎ・Ｌａｎｇｕａｇｅ）を用いて記述される。
【００２２】
図２を参照して、ＣＰＵコアモデル部２０１の構成を説明する。
【００２３】
ＣＰＵコアモデル部２０１は、記憶媒体２１０と、バッファ２２０とを備える。
【００２４】
記憶媒体２１０は、キャッシュミス時の動作がターゲットシステムにより行われたと仮定した場合のターゲットシステムのキャッシュに格納されるターゲットコードの一覧を記憶する。「キャッシュミス時の動作」とは、ターゲットシステムのメモリに記憶されたターゲットコードが読み込まれるとともに読み込まれたターゲットコードでターゲットシステムのキャッシュが更新される動作のことである。本実施の形態において、上記一覧は、タグテーブル２１１として記憶媒体２１０に記憶される。タグテーブル２１１については、後で図を用いて説明する。
【００２５】
バッファ２２０は、対応コードの命令を模擬用の形式で示すホストコードを格納するために利用される。「対応コード」とは、そのホストコードに対応するターゲットコード、即ち、そのホストコードの変換元になったターゲットコードのことである。本実施の形態において、バッファ２２０は、ターゲットシステムのキャッシュよりも容量が大きい。
【００２６】
ＣＰＵコアモデル部２０１は、さらに、実行部２３０と、フェッチ部２４０と、生成部２５０とを備える。
【００２７】
実行部２３０は、フェッチ部２４０を利用して、バッファ２２０に格納されたホストコードを順次読み込む。実行部２３０は、読み込んだホストコードの命令を実行する。また、実行部２３０は、読み込んだホストコードに対応するターゲットコードである対応コードがタグテーブル２１１に含まれているかどうかを判定する。実行部２３０は、対応コードがタグテーブル２１１に含まれていないと判定した場合、フェッチ部２４０を利用して、その対応コードについてキャッシュミス時の動作を模擬する。実行部２３０は、模擬した動作に合わせてタグテーブル２１１を更新する。本実施の形態において、実行部２３０は、選択部２３１と、キャッシュ判定部２３２と、命令実行部２３３と、アドレス生成部２３４と、バッファ判定部２３５と、インタフェース部２３６と、仮想フェッチ制御部２３７とを有する。各部の動作については、後で図を用いて説明する。
【００２８】
実行部２３０は、バッファ２２０に格納されていないホストコードの命令を次に実行する場合、フェッチ部２４０を利用して、そのホストコードに対応するターゲットコードである次コードについてキャッシュミス時の動作を模擬する。実行部２３０は、模擬した動作に合わせてタグテーブル２１１を更新する。
【００２９】
生成部２５０は、バッファ２２０に格納されているホストコードに対応するターゲットコードについてキャッシュミス時の動作が実行部２３０により模擬された場合には何もしない。一方、生成部２５０は、バッファ２２０に格納されていないホストコードに対応するターゲットコードである次コードについてキャッシュミス時の動作が実行部２３０により模擬された場合には、その次コードに対応するホストコードを生成する。生成部２５０は、生成したホストコードをバッファ２２０に格納する。本実施の形態において、生成部２５０は、第１生成部２５１と、付加部２５２と、第２生成部２５３と、管理部２５４とを有する。各部の動作については、後で図を用いて説明する。
【００３０】
生成部２５０は、生成するホストコードに、ターゲットシステムのキャッシュのキャッシュミスが発生するかどうかを判定するよう指示する判定コードを付加する。実行部２３０は、読み込んだホストコードに判定コードが付加されている場合に、対応コードがタグテーブル２１１に含まれているかどうかを判定する。本実施の形態において、生成部２５０は、１つの命令ごとに判定コードを付加する。即ち、生成部２５０は、ターゲットコードをホストコードに変換する際に、必ず判定コードを付加する。
【００３１】
＊＊＊動作の説明＊＊＊
図３を参照して、シミュレーション装置１００の動作を説明する。シミュレーション装置１００の動作は、本実施の形態に係るシミュレーション方法に相当する。シミュレーション装置１００の動作は、本実施の形態に係るシミュレーションプログラムの処理手順に相当する。
【００３２】
ステップＳ１１において、アドレス生成部２３４は、次に実行するターゲットコードのアドレスを生成する。アドレス生成部２３４は、生成したアドレスをバッファ判定部２３５へ出力する。バッファ判定部２３５は、アドレス生成部２３４より入力されたアドレスのターゲットコードに対応するホストコードがバッファ２２０に格納されているか否かを判定する。バッファ判定部２３５は、判定結果を選択部２３１へ出力する。選択部２３１は、バッファ判定部２３５より入力された判定結果に基づき、次に実行するターゲットコードをフェッチ部２４０にフェッチさせるか、次に実行するターゲットコードに対応するホストコードをキャッシュ判定部２３２へ出力するかを選択する。次に実行するターゲットコードに対応するホストコードがバッファ２２０に格納されていない場合、フローはステップＳ１２に進む。次に実行するターゲットコードに対応するホストコードがバッファ２２０に格納されている場合、フローはステップＳ１７に進む。
【００３３】
ステップＳ１２において、選択部２３１は、ステップＳ１１で生成されたアドレスをアドレス生成部２３４からフェッチ部２４０に入力する。フェッチ部２４０は、命令メモリモデル部２０２の当該アドレスから、次に実行するターゲットコードをフェッチする。これにより、キャッシュミス時の動作が模擬される。
【００３４】
ステップＳ１３において、フェッチ部２４０は、ステップＳ１２でフェッチしたターゲットコードが分岐又はジャンプ命令かを判定する。フェッチしたターゲットコードが分岐及びジャンプ命令でなかった場合、フローはステップＳ１２に戻る。即ち、フェッチ部２４０は、フェッチを続ける。フェッチしたターゲットコードが分岐又はジャンプ命令であった場合、フローはステップＳ１４に進む。即ち、フェッチ部２４０は、フェッチを止める。
【００３５】
ステップＳ１４において、管理部２５４は、ステップＳ１２でフェッチされたターゲットコードに対応するホストコード分の空きがバッファ２２０にあるか否かを判定する。空きがない場合、フローはステップＳ１５に進む。空きがある場合、フローはステップＳ１６に進む。
【００３６】
ステップＳ１５において、管理部２５４は、古いホストコードをバッファ２２０から追い出す。ステップＳ１５の後、フローはステップＳ１６に進む。
【００３７】
ステップＳ１６において、第１生成部２５１は、１つの命令ごとに、ステップＳ１２でフェッチされたターゲットコードを中間コードへ変換する。付加部２５２は、ターゲットコードの１つの命令に対応する中間コードに判定コードを付加する。第２生成部２５３は、判定コードが付加された中間コードをホストコードへ変換し、ホストコードをバッファ２２０へ格納する。ここで、「中間コード」とは、ＩＳＳ部２００がソフトウェアをＩＳＳ部２００固有の処理に分解又は変換するときに使用するコードのことであり、ｓｔｏｒｅ命令、ｌｏａｄ命令、ａｄｄ命令といった一般的な命令群で構成される。ステップＳ１６の後、フローはステップＳ１９に進む。
【００３８】
ステップＳ１７において、選択部２３１は、次に実行するターゲットコードに対応するホストコードをバッファ２２０から読み出す。選択部２３１は、読み出したホストコードと、ステップＳ１１で生成されたアドレスとをキャッシュ判定部２３２へ出力する。キャッシュ判定部２３２は、選択部２３１より入力されたホストコードに含まれる判定コードを実行することで、ターゲットシステムでキャッシュヒットが発生しているか否かを判定する。ターゲットシステムでキャッシュヒットが発生していない、即ち、キャッシュミスが発生している場合、フローはステップＳ１８に進む。ターゲットシステムでキャッシュヒットが発生している、即ち、キャッシュミスが発生していない場合、フローはステップＳ１９に進む。
【００３９】
ステップＳ１８において、キャッシュ判定部２３２は仮想フェッチ制御部２３７へ仮想命令フェッチを指示する。仮想フェッチ制御部２３７は、フェッチ部２４０を通して命令メモリモデル部２０２へ仮想命令フェッチを行う。「仮想命令フェッチ」とは、ホストコードの生成及び格納を伴わずにキャッシュミス時の動作の模擬のみを行うことである。即ち、ステップＳ１８では、ステップＳ１２と同等の処理が行われるが、その処理の後にステップＳ１３からステップＳ１６のような処理は行われない。ステップＳ１８の後、フローはステップＳ１９に進む。
【００４０】
ステップＳ１９において、命令実行部２３３は、ステップＳ１６で生成されたホストコード、或いは、ステップＳ１７でキャッシュ判定部２３２に入力されたホストコードの判定コード以外の部分を実行する。命令実行部２３３は、インタフェース部２３６を介して、実行結果をＣＰＵバスモデル部３０４へ出力する。
【００４１】
ステップＳ２０において、命令実行部２３３は、ソフトウェアモデル４００の実行が完了したか否かを判定する。実行が完了していなければ、フローはステップＳ１１に戻る。実行が完了していれば、フローは終了する。
【００４２】
上記のように、ステップＳ１１において、次に実行するホストコードがバッファ２２０内にある場合は、ステップＳ１７からステップＳ１９において、そのホストコードが読み出されて実行される。これにより、シミュレーションの高速実行が可能となる。
【００４３】
ステップＳ１１において、次に実行するホストコードがバッファ２２０内にない場合は、ステップＳ１２からステップＳ１６において、ターゲットコードがフェッチされてホストコードに変換され、ステップＳ１９において、そのホストコードが実行される。
【００４４】
本実施の形態では、キャッシュミス時の動作がステップＳ１２だけでなく、ステップＳ１８でも模擬される。仮にキャッシュミス時の動作がステップＳ１２でしか模擬されないとすると、バッファ２２０内で処理がループした場合に、ステップＳ１２の処理が実行されない。即ち、キャッシュミス時の動作が模擬されない。しかし、バッファ２２０内で処理がループする状況でも、バッファ２２０よりも容量が小さいターゲットシステムのキャッシュではキャッシュミスが起きる場合がある。本実施の形態では、そのような場合にも、ステップＳ１７でキャッシュミスが検知され、ステップＳ１８の処理が実行される。即ち、キャッシュミス時の動作が模擬される。したがって、正確なソフトウェア性能評価が可能となる。
【００４５】
図４を参照して、シミュレーション装置１００が判定コードを付加した後にホストコードを生成及び格納する動作を説明する。この動作は、図３のステップＳ１６の処理に相当する。図４には、判定コードを付加する一連の動作のフローだけでなく、コード変換の例も示しているが、この例は、ターゲットコード、中間コード、ホストコードの記述形式及び記述内容を限定するものではない。
【００４６】
ステップＳ２１において、第１生成部２５１は、ターゲットコードを中間コードへ変換する。中間コードは、前述したように、ＩＳＳ部２００固有の命令コードである。ターゲットコードを中間コードへ変換することで様々なプロセッサの命令コードをＩＳＳ部２００で扱うことが可能になる。図４の例では、ｌｏａｄ命令である１つのターゲットコードが、２つのｍｏｖｉ＿ｉ６４命令と１つのｌｄ＿ｉ６４命令とである３つの中間コードへ変換されているが、ＩＳＳ部２００の仕様に応じて、１つの命令、又は、別の命令の組み合わせからなる中間コードへ変換されてもよい。ａｄｄ命令である別のターゲットコードについても同じである。
【００４７】
ステップＳ２２において、付加部２５２は、ステップＳ２１の出力である中間コードへ判定コードを付加する。判定コードは、ＩＳＳ部２００固有の命令コードの１つとして実装される。図４の例では、判定コードが「ｃａｃｈｅ＿ｃｈｋ」と記述されているが、任意の名称に変更されてよい。判定コードが付加される箇所は、ターゲットコードから変換された中間コードの先頭である。
【００４８】
ステップＳ２３において、第２生成部２５３は、ステップＳ２２の出力である、判定コードが付加された中間コードをホストコードへ変換する。
【００４９】
ステップＳ２４において、図３のステップＳ１２でフェッチされたターゲットコード全てに対し、ホストコードへの変換が完了したか否かが確認される。全てのターゲットコードに対して変換が完了していない場合、フローはステップＳ２１に戻り、次のターゲットコードが中間コードへ変換される。全てのターゲットコードに対して変換が完了している場合、フローはステップＳ２５に進む。
【００５０】
ステップＳ２５において、第２生成部２５３は、ステップＳ２３で生成したホストコードをバッファ２２０へ格納する。
【００５１】
上記のように、本実施の形態では、キャッシュヒット／ミスを判定するように指示する判定コードがターゲットコードではなく、中間コードに付加されるため、ソフトウェアモデル４００に特別な変更が必要ない。したがって、ソフトウェアモデル４００をソフトウェアのデバッグに使用できる。
【００５２】
なお、１つのターゲットコードに対してステップＳ２１からステップＳ２３の一連の処理が実行されてから、次のターゲットコードに対して同じ一連の処理が実行される代わりに、フェッチされたターゲットコード全てに対してステップＳ２１からステップＳ２３の処理が順番に実行されてもよい。
【００５３】
図５及び図６を参照して、シミュレーション装置１００がキャッシュヒット／ミスを判定する動作を説明する。この動作は、図３のステップＳ１７の処理に相当する。
【００５４】
キャッシュヒット／ミスの判定は、ターゲットコードのアドレスであるターゲットアドレス５００と、前述したタグテーブル２１１とを使用して行われる。
【００５５】
ターゲットアドレス５００は、ターゲットシステムのメモリからターゲットコードをフェッチする際に使用されるアドレスそのものである。ターゲットアドレス５００は、タグ５０１と、キャッシュインデックス５０２と、ブロックオフセット５０３とに分けられる。タグ５０１及びキャッシュインデックス５０２のビット幅は、キャッシュ構成によって適宜決められるが、ターゲットアドレス５００が３２ビットであるとき、タグ５０１を６ビット、キャッシュインデックス５０２を９ビットとすることができる。この場合、ターゲットアドレス５００のＭＳＢ（Ｍｏｓｔ・Ｓｉｇｎｉｆｉｃａｎｔ・Ｂｉｔ）側の６ビットがタグ５０１、その次の９ビットがキャッシュインデックス５０２、残りの１７ビットがブロックオフセット５０３となる。
【００５６】
タグテーブル２１１は、ターゲットシステムのキャッシュに格納されるターゲットコードを識別するタグ２１２を格納する。ターゲットコードがターゲットシステムのキャッシュに格納されたと仮定したとき、そのターゲットコードのフェッチ元であるターゲットアドレス５００に含まれるタグ５０１は、タグテーブル２１１に新たなタグ２１２として格納される。タグテーブル２１１においてタグ５０１が格納される位置は、タグ５０１と同じターゲットアドレス５００に含まれるキャッシュインデックス５０２によって決まる。即ち、キャッシュインデックス５０２は、タグテーブル２１１のアドレスであり、タグ２１２がタグテーブル２１１のどこに保持されているかを示す。なお、タグテーブル２１１は、タグ２１２のほかに、タグ２１２のヒット率、使用頻度等のソフトウェア性能評価で必要となる情報を格納してもよい。
【００５７】
ステップＳ３１において、キャッシュ判定部２３２は、選択部２３１よりターゲットアドレス５００の入力を受ける。キャッシュ判定部２３２は、入力されたターゲットアドレス５００に含まれるキャッシュインデックス５０２を使用して、タグテーブル２１１へアクセスすることで、タグテーブル２１１からタグ２１２を取得する。
【００５８】
ステップＳ３２において、キャッシュ判定部２３２は、ステップＳ３１で取得したタグ２１２と、選択部２３１より入力されたターゲットアドレス５００に含まれるタグ５０１とを比較することで、キャッシュヒット／ミスを判定する。タグ２１２，５０１が同じであれば、フローはステップＳ３３に進む。タグ２１２，５０１が同じでなければ、フローはステップＳ３４に進む。
【００５９】
ステップＳ３３において、キャッシュ判定部２３２は、キャッシュヒット／ミスの判定結果５１０としてキャッシュヒットを出力する。具体的には、キャッシュ判定部２３２は、判定結果５１０を表すキャッシュヒット／ミスフラグを「キャッシュヒット」として生成する。キャッシュ判定部２３２は、生成したキャッシュヒット／ミスフラグを出力する。キャッシュヒット／ミスフラグは、１ビットで判定結果５１０を表す。本実施の形態では、「１」が「キャッシュヒット」、「０」が「キャッシュミス」を表す。
【００６０】
ステップＳ３４において、キャッシュ判定部２３２は、更新イネーブルフラグ５２０を出力することで、ステップＳ３１でアクセスしたタグテーブル２１１の内容を、選択部２３１より入力されたターゲットアドレス５００に含まれるタグ５０１に変更する。
【００６１】
ステップＳ３５において、キャッシュ判定部２３２は、キャッシュヒット／ミスの判定結果５１０としてキャッシュミスを出力する。具体的には、キャッシュ判定部２３２は、判定結果５１０を表すキャッシュヒット／ミスフラグを「キャッシュミス」として生成する。キャッシュ判定部２３２は、生成したキャッシュヒット／ミスフラグを出力する。
【００６２】
なお、図３のステップＳ１２においても、キャッシュ判定部２３２は、選択部２３１よりターゲットアドレス５００の入力とタグテーブル２１１の更新指示とを受けて、ステップＳ３４と同等の処理を行う。即ち、キャッシュ判定部２３２は、更新イネーブルフラグ５２０を出力することで、選択部２３１より入力されたターゲットアドレス５００に含まれるキャッシュインデックス５０２に対応するタグテーブル２１１の内容を、選択部２３１より入力されたターゲットアドレス５００に含まれるタグ５０１に変更する。
【００６３】
図７を参照して、シミュレーション装置１００がキャッシュヒット／ミスの判定結果５１０に応じて行う動作を説明する。この動作の一部は、図３のステップＳ１８の処理に相当する。
【００６４】
ステップＳ４１において、仮想フェッチ制御部２３７は、キャッシュ判定部２３２よりキャッシュヒット／ミスフラグの入力を受ける。仮想フェッチ制御部２３７は、入力されたキャッシュヒット／ミスフラグによって表されるキャッシュヒット／ミスの判定結果５１０がキャッシュヒットであるか否かを判定する。判定結果５１０がキャッシュヒットであれば、フローはステップＳ４２に進む。判定結果５１０がキャッシュミスであれば、フローはステップＳ４３に進む。
【００６５】
ステップＳ４２において、仮想フェッチ制御部２３７は、仮想命令フェッチフラグを「未実行」として生成する。仮想フェッチ制御部２３７は、生成した仮想命令フェッチフラグを出力する。仮想命令フェッチフラグは、１ビットで仮想命令フェッチを実行すべきかどうかを表す。本実施の形態では、「１」が「実行」、「０」が「未実行」を表す。
【００６６】
ステップＳ４３において、仮想フェッチ制御部２３７は、仮想命令フェッチアドレスを生成する。仮想命令フェッチアドレスは、ターゲットアドレス５００と同じか、或いは、ターゲットアドレス５００をターゲットシステムのキャッシュのラインサイズに合わせて成形したアドレスである。
【００６７】
ステップＳ４４において、仮想フェッチ制御部２３７は、仮想命令フェッチフラグを「実行」として生成する。仮想フェッチ制御部２３７は、生成した仮想命令フェッチフラグを出力する。
【００６８】
仮想命令フェッチフラグは、フェッチ部２４０に入力される。フェッチ部２４０は、仮想命令フェッチアドレスが「実行」である場合、ステップＳ４３で生成された仮想命令フェッチアドレスを使用して、命令メモリモデル部２０２からターゲットコードをフェッチする。フェッチ部２４０は、フェッチしたターゲットコードを破棄してもよいし、仮想命令フェッチ用のレジスタ等に一定期間保持してもよい。
【００６９】
図８を参照して、シミュレーション装置１００によるシミュレーションの例Ｘ１１を説明する。
【００７０】
例Ｘ１１では、１２個の命令Ａ〜Ｌからなるソフトウェアが、２ラインの命令キャッシュメモリを有するターゲットシステムで動作する。命令Ａ〜Ｌが順に実行された後、命令Ｅ〜Ｈ、命令Ａ〜Ｄが順に実行される。命令は、ターゲットシステムのキャッシュに空いているラインが空いていれば、そのラインへ格納され、全てのラインが埋まっていれば、古い命令に上書き更新される。シミュレーション装置１００のバッファ２２０は、ターゲットシステムの仕様によらず、十分な容量を有している。
【００７１】
図８の上段は、ターゲットシステムのメモリ内の命令配置と、ターゲットシステムのキャッシュの状態（１）〜（４）における命令格納状況とを示している。図８の下段は、左から右に向かって時間の経過を表すとともに、各時点におけるターゲットシステムのキャッシュの状態と、シミュレーション装置１００でフェッチ及び実行される命令と、実機であるターゲットシステムでフェッチ及び実行される命令とを表している。図中、Ａ〜Ｌが命令、Ｆｅがフェッチ、Ｆｅｘが命令Ｘのフェッチ、Ｃａがターゲットシステムのキャッシュへのアクセス、ＢＦｅが仮想命令フェッチを表している。また、ＡＤが命令Ａ〜Ｄのホストコード、ＥＨが命令Ｅ〜Ｈのホストコード、ＩＬが命令Ｉ〜Ｌのホストコードを表している。シミュレーション装置１００のフェッチは１命令単位であるが、ターゲットシステムのフェッチは４命令単位である。一般的なシステムでは、１命令１バイトであり、１メモリアドレスに４バイト分の命令が格納されるため、このように仮定している。
【００７２】
ターゲットシステムのキャッシュの状態は、シミュレーション装置１００では、タグテーブル２１１によって管理される。
【００７３】
まず、命令Ａ〜Ｄが実行される。シミュレーション装置１００及びターゲットシステムのそれぞれにおいて、キャッシュミスが発生し、命令Ａ〜Ｄがフェッチされる。ターゲットシステムのキャッシュの２ライン中１ライン目が命令Ａ〜Ｄで埋まる。これにより、ターゲットシステムのキャッシュが状態（１）になる。命令Ａ〜Ｄは、シミュレーション装置１００のバッファ２２０にも格納されていない。よって、命令Ａ〜Ｄは、まとめてホストコードへ変換され、バッファ２２０に格納される。
【００７４】
次に、命令Ｅ〜Ｈが実行される。シミュレーション装置１００及びターゲットシステムのそれぞれにおいて、キャッシュミスが発生し、命令Ｅ〜Ｈがフェッチされる。ターゲットシステムのキャッシュの２ライン中、空いている２ライン目が命令Ｅ〜Ｈで埋まる。これにより、ターゲットシステムのキャッシュが状態（２）になる。命令Ｅ〜Ｈは、シミュレーション装置１００のバッファ２２０にも格納されていない。よって、命令Ｅ〜Ｈは、まとめてホストコードへ変換され、バッファ２２０に格納される。この時点でバッファ２２０には、命令Ａ〜Ｄ、命令Ｅ〜Ｈのホストコードが格納されている。
【００７５】
次に、命令Ｉ〜Ｌが実行される。シミュレーション装置１００及びターゲットシステムのそれぞれにおいて、キャッシュミスが発生し、命令Ｉ〜Ｌがフェッチされる。ターゲットシステムのキャッシュの２ラインがいずれも埋まっているため、古い方の命令Ａ〜Ｄが命令Ｉ〜Ｌで上書き更新される。これにより、ターゲットシステムのキャッシュが状態（３）になる。命令Ｉ〜Ｌは、シミュレーション装置１００のバッファ２２０にも格納されていない。よって、命令Ｉ〜Ｌは、まとめてホストコードへ変換され、バッファ２２０に格納される。この時点でバッファ２２０には、命令Ａ〜Ｄ、命令Ｅ〜Ｈ、命令Ｉ〜Ｌのホストコードが格納されている。
【００７６】
次に、命令Ｅ〜Ｈが再び実行される。シミュレーション装置１００及びターゲットシステムのそれぞれにおいて、キャッシュヒットが発生する。そのため、命令Ｅ〜Ｈはフェッチされず、キャッシュアクセスにより取得される。命令Ｅ〜Ｈは、シミュレーション装置１００のバッファ２２０にも格納されている。よって、シミュレーション装置１００では、命令Ｅ〜Ｈのホストコードがバッファ２２０から取得される。
【００７７】
次に、命令Ａ〜Ｄが再び実行される。シミュレーション装置１００及びターゲットシステムのそれぞれにおいて、キャッシュミスが発生し、命令Ａ〜Ｄがフェッチされる。ターゲットシステムのキャッシュの２ラインがいずれも埋まっているため、古い方の命令Ｅ〜Ｈが命令Ａ〜Ｄで上書き更新される。これにより、ターゲットシステムのキャッシュが状態（４）になる。命令Ａ〜Ｄは、シミュレーション装置１００のバッファ２２０には格納されている。よって、シミュレーション装置１００では、命令Ａ〜Ｄのホストコードがバッファ２２０から取得される。即ち、シミュレーション装置１００で命令Ａ〜Ｄがフェッチされる動作は、仮想命令フェッチとして実施される。
【００７８】
以後同様に、シミュレーション装置１００では、バッファ２２０にホストコードが格納されていても、キャッシュミスが発生する状況では、仮想命令フェッチが実施される。これにより、実機と同等のメモリアクセス動作が模擬される。
【００７９】
＊＊＊効果の説明＊＊＊
本実施の形態では、ホストコードを格納するためのバッファ２２０を利用してキャッシュミスの有無を判定するのではなく、ターゲットシステムのキャッシュに格納されるターゲットコードの一覧を管理しておき、この一覧を利用してキャッシュミスの有無を判定する。よって、本実施の形態によれば、シミュレーションにおけるキャッシュミスの判定の精度が向上する。
【００８０】
本実施の形態では、ソフトウェアへ変更を加えることなく、バッファ２２０を利用してシミュレーションの高速実行を可能としつつ、ハードウェアとソフトウェアとの協調シミュレーションを実行することができる。この協調シミュレーションでは、ターゲットシステムのキャッシュヒット／ミスの判定とキャッシュミスの発生時の命令メモリアクセス動作とを模擬することができる。本実施の形態に係るシミュレーション装置１００を用いることで、正確なソフトウェアの性能評価を実施することができる。
【００８１】
＊＊＊他の構成＊＊＊
ターゲットシステムのキャッシュに格納されるターゲットコードの一覧は、本実施の形態ではタグ２１２を格納するタグテーブル２１１として管理されるが、ターゲットコードを識別可能な別の情報を格納するテーブル又はその他のデータ構造として管理されてもよい。
【００８２】
実施の形態２．
本実施の形態に係る装置の構成、本実施の形態に係る装置の動作、本実施の形態の効果を順番に説明する。主に実施の形態１との差異を説明する。
【００８３】
＊＊＊構成の説明＊＊＊
図９を参照して、本実施の形態に係る装置であるシミュレーション装置１００の構成を説明する。
【００８４】
本実施の形態において、シミュレーション装置１００は、キャッシュライン情報６００を保持する。他の部分については、図１に示した実施の形態１のものと同じである。
【００８５】
図１０を参照して、ＣＰＵコアモデル部２０１の構成を説明する。
【００８６】
実施の形態１において、生成部２５０は、１つの命令ごとに判定コードを付加する。一方、本実施の形態において、生成部２５０は、ターゲットシステムのキャッシュのラインサイズ分の命令ごとに判定コードを付加する。
【００８７】
本実施の形態では、付加部２５２に対し、キャッシュライン情報６００が供給される。他の部分については、図２に示した実施の形態１のものと同じである。
【００８８】
＊＊＊動作の説明＊＊＊
図１１を参照して、シミュレーション装置１００の動作を説明する。シミュレーション装置１００の動作は、本実施の形態に係るシミュレーション方法に相当する。シミュレーション装置１００の動作は、本実施の形態に係るシミュレーションプログラムの処理手順に相当する。
【００８９】
ステップＳ１１からステップＳ１５、及び、ステップＳ１７からステップＳ２０の処理については、図３に示した実施の形態１のものと同じである。本実施の形態では、ステップＳ１６の代わりに、ステップＳ１６’の処理が実行される。ステップＳ１６’では、キャッシュライン情報６００が供給される。
【００９０】
ステップＳ１６’において、第１生成部２５１は、１つの命令ごとに、ステップＳ１２でフェッチされたターゲットコードを中間コードへ変換する。付加部２５２は、キャッシュライン情報６００を参照して、キャッシュライン分の命令に対応する中間コードに判定コードを付加する。第２生成部２５３は、判定コードが付加された中間コードをホストコードへ変換し、ホストコードをバッファ２２０へ格納する。
【００９１】
図１２を参照して、シミュレーション装置１００が判定コードを付加した後にホストコードを生成及び格納する動作を説明する。この動作は、図１１のステップＳ１６’の処理に相当する。図１２には、図４と同じように、判定コードを付加する一連の動作のフローだけでなく、コード変換の例も示しているが、この例は、ターゲットコード、中間コード、ホストコードの記述形式及び記述内容を限定するものではない。
【００９２】
ステップＳ２１において、第１生成部２５１は、ターゲットコードを中間コードへ変換する。ステップＳ２１の後、フローはステップＳ２６に進む。
【００９３】
ステップＳ２６において、付加部２５２は、ステップＳ２１の処理が、キャッシュライン情報６００によって示されたキャッシュライン分実行されたか否かを判定する。ステップＳ２１の処理がキャッシュライン分実行されていない場合、フローがステップＳ２１に戻り、次のターゲットコードが中間コードへ変換される。ステップＳ２１の処理がキャッシュライン分実行された場合、フローはステップＳ２２に進む。
【００９４】
ステップＳ２２において、付加部２５２は、ステップＳ２１の出力であるキャッシュライン分の中間コードへ判定コードを付加する。
【００９５】
ステップＳ２３からステップＳ２５の処理については、図４に示した実施の形態１のものと同じである。
【００９６】
本実施の形態においても、図８に示した例Ｘ１１と同じシミュレーションが実施できる。
【００９７】
＊＊＊効果の説明＊＊＊
本実施の形態では、ソフトウェアへ変更を加えることなく、バッファ２２０を利用してシミュレーションの高速実行を可能としつつ、ハードウェアとソフトウェアとの協調シミュレーションを実行することができる。この協調シミュレーションでは、ターゲットシステムのキャッシュヒット／ミスの判定とキャッシュミスの発生時の命令メモリアクセス動作とをキャッシュライン単位で模擬することができる。本実施の形態に係るシミュレーション装置１００を用いることで、正確なソフトウェアの性能評価を実施することができる。
【００９８】
実施の形態３．
本実施の形態について、主に実施の形態１との差異を説明する。
【００９９】
本実施の形態に係るシミュレーション装置１００の構成については、図１に示した実施の形態１のものと同じである。
【０１００】
図１３を参照して、ＣＰＵコアモデル部２０１の構成を説明する。
【０１０１】
本実施の形態では、実行部２３０が、キャッシュ判定部２３２を有していない。実施の形態１においてキャッシュ判定部２３２が行っている処理は、命令実行部２３３によって行われる。
【０１０２】
本実施の形態において、ターゲットシステムのキャッシュのキャッシュヒットが発生しているか否かの判定は、命令実行部２３３で行われる。判定方法は、実施の形態１又は実施の形態２と同じでよいが、他の方法でもよい。キャッシュヒットが発生しているか否かの判定結果５１０は、命令実行部２３３から仮想フェッチ制御部２３７へ送られる。判定結果５１０がキャッシュミスであった場合、仮想フェッチ制御部２３７は仮想命令フェッチを実施する。
【０１０３】
以下では、図１４を参照して、本発明の実施の形態に係るシミュレーション装置１００のハードウェア構成例を説明する。
【０１０４】
シミュレーション装置１００は、コンピュータである。シミュレーション装置１００は、プロセッサ９０１、補助記憶装置９０２、メモリ９０３、通信装置９０４、入力インタフェース９０５、ディスプレイインタフェース９０６といったハードウェアを備える。プロセッサ９０１は、信号線９１０を介して他のハードウェアと接続され、これら他のハードウェアを制御する。入力インタフェース９０５は、入力装置９０７に接続されている。ディスプレイインタフェース９０６は、ディスプレイ９０８に接続されている。
【０１０５】
プロセッサ９０１は、プロセッシングを行うＩＣ（Ｉｎｔｅｇｒａｔｅｄ・Ｃｉｒｃｕｉｔ）である。プロセッサ９０１は、ホストＣＰＵに相当する。
【０１０６】
補助記憶装置９０２は、例えば、ＲＯＭ（Ｒｅａｄ・Ｏｎｌｙ・Ｍｅｍｏｒｙ）、フラッシュメモリ、又は、ＨＤＤ（Ｈａｒｄ・Ｄｉｓｋ・Ｄｒｉｖｅ）である。
【０１０７】
メモリ９０３は、例えば、プロセッサ９０１のワークエリア等として利用されるＲＡＭ（Ｒａｎｄｏｍ・Ａｃｃｅｓｓ・Ｍｅｍｏｒｙ）である。メモリ９０３は、記憶媒体２１０及びバッファ２２０に相当する。
【０１０８】
通信装置９０４は、データを受信するレシーバ９２１及びデータを送信するトランスミッタ９２２を含む。通信装置９０４は、例えば、通信チップ又はＮＩＣ（Ｎｅｔｗｏｒｋ・Ｉｎｔｅｒｆａｃｅ・Ｃａｒｄ）である。通信装置９０４は、ネットワークに接続され、ネットワークを介してシミュレーション装置１００を制御するために利用される。
【０１０９】
入力インタフェース９０５は、入力装置９０７のケーブル９１１が接続されるポートである。入力インタフェース９０５は、例えば、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ・Ｓｅｒｉａｌ・Ｂｕｓ）端子である。
【０１１０】
ディスプレイインタフェース９０６は、ディスプレイ９０８のケーブル９１２が接続されるポートである。ディスプレイインタフェース９０６は、例えば、ＵＳＢ端子又はＨＤＭＩ（登録商標）（Ｈｉｇｈ・Ｄｅｆｉｎｉｔｉｏｎ・Ｍｕｌｔｉｍｅｄｉａ・Ｉｎｔｅｒｆａｃｅ）端子である。
【０１１１】
入力装置９０７は、例えば、マウス、タッチペン、キーボード、又は、タッチパネルである。
【０１１２】
ディスプレイ９０８は、例えば、ＬＣＤ（Ｌｉｑｕｉｄ・Ｃｒｙｓｔａｌ・Ｄｉｓｐｌａｙ）である。
【０１１３】
記録媒体である補助記憶装置９０２には、実行部２３０、フェッチ部２４０、生成部２５０といった「部」の機能を実現するプログラムが記憶されている。このプログラムは、メモリ９０３にロードされ、プロセッサ９０１に読み込まれ、プロセッサ９０１によって実行される。補助記憶装置９０２には、ＯＳ（Ｏｐｅｒａｔｉｎｇ・Ｓｙｓｔｅｍ）も記憶されている。ＯＳの少なくとも一部がメモリ９０３にロードされ、プロセッサ９０１はＯＳを実行しながら、「部」の機能を実現するプログラムを実行する。
【０１１４】
図１４では、１つのプロセッサ９０１が示されているが、シミュレーション装置１００が複数のプロセッサ９０１を備えていてもよい。そして、複数のプロセッサ９０１が「部」の機能を実現するプログラムを連携して実行してもよい。
【０１１５】
「部」の処理の結果を示す情報やデータや信号値や変数値は、補助記憶装置９０２、メモリ９０３、又は、プロセッサ９０１内のレジスタ又はキャッシュメモリに記憶される。
【０１１６】
「部」を「サーキットリ」で提供してもよい。また、「部」を「回路」又は「工程」又は「手順」又は「処理」に読み替えてもよい。「回路」及び「サーキットリ」は、プロセッサ９０１だけでなく、ロジックＩＣ、ＧＡ（Ｇａｔｅ・Ａｒｒａｙ）、ＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ・Ｓｐｅｃｉｆｉｃ・Ｉｎｔｅｇｒａｔｅｄ・Ｃｉｒｃｕｉｔ）、ＦＰＧＡ（Ｆｉｅｌｄ−Ｐｒｏｇｒａｍｍａｂｌｅ・Ｇａｔｅ・Ａｒｒａｙ）といった他の種類の処理回路をも包含する概念である。
【０１１７】
以上、本発明の実施の形態について説明したが、これらの実施の形態のうち、いくつかを組み合わせて実施しても構わない。或いは、これらの実施の形態のうち、いずれか１つ又はいくつかを部分的に実施しても構わない。例えば、これらの実施の形態の説明において「部」として説明するもののうち、いずれか１つのみを採用してもよいし、いくつかの任意の組み合わせを採用してもよい。なお、本発明は、これらの実施の形態に限定されるものではなく、必要に応じて種々の変更が可能である。
【符号の説明】
【０１１８】
１００  シミュレーション装置、２００  ＩＳＳ部、２０１  ＣＰＵコアモデル部、２０２  命令メモリモデル部、２１０  記憶媒体、２１１  タグテーブル、２１２  タグ、２２０  バッファ、２３０  実行部、２３１  選択部、２３２  キャッシュ判定部、２３３  命令実行部、２３４  アドレス生成部、２３５  バッファ判定部、２３６  インタフェース部、２３７  仮想フェッチ制御部、２４０  フェッチ部、２５０  生成部、２５１  第１生成部、２５２  付加部、２５３  第２生成部、２５４  管理部、３００  ハードウェアモデル部、３０１  外部Ｉ／Ｏモデル部、３０２  周辺装置モデル部、３０３  データメモリモデル部、３０４  ＣＰＵバスモデル部、４００  ソフトウェアモデル、５００  ターゲットアドレス、５０１  タグ、５０２  キャッシュインデックス、５０３  ブロックオフセット、５１０  判定結果、５２０  更新イネーブルフラグ、６００  キャッシュライン情報、９０１  プロセッサ、９０２  補助記憶装置、９０３  メモリ、９０４  通信装置、９０５  入力インタフェース、９０６  ディスプレイインタフェース、９０７  入力装置、９０８  ディスプレイ、９１０  信号線、９１１  ケーブル、９１２  ケーブル、９２１  レシーバ、９２２  トランスミッタ。
【図１】
2016189642.tif 000003
【図２】
2016189642.tif 000004
【図３】
2016189642.tif 000005
【図４】
2016189642.tif 000006
【図５】
2016189642.tif 000007
【図６】
2016189642.tif 000008
【図７】
2016189642.tif 000009
【図８】
2016189642.tif 000010
【図９】
2016189642.tif 000011
【図１０】
2016189642.tif 000012
【図１１】
2016189642.tif 000013
【図１２】
2016189642.tif 000014
【図１３】
2016189642.tif 000015
【図１４】
2016189642.tif 000016
【国際調査報告】
2016189642.tif 000017
2016189642.tif 000018