(57)【要約】【課題】バス競合等の動作環境の条件を考慮した実行サイクル数の計測が可能で、シミュレーションの実行速度が速いシミュレーション装置を提供する。【解決手段】シミュレーション装置１００は、プロセッサの命令セットに含まれる命令を複数実行するプログラムのシミュレーションを行う。バスモデル部２０８は、プログラムの命令ごとに、プログラムを記憶するメモリ２０４に対するアクセス要求を受け付け、バスの調停のシミュレーションを行って、バスの使用権が得られるまでのプロセッサのサイクル数を算出する。サイクル数累算部２０１は、バスモデル部２０８により算出された命令ごとのサイクル数に基づき、プログラムの実行に要するサイクル数を計算する。【選択図】図１
2014194746.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサの命令セットに含まれる命令を複数実行するプログラムのシミュレーションを行うシミュレーション装置において、
前記プログラムの命令ごとに、前記プログラムを記憶するメモリに対するアクセス要求を受け付け、バスの調停のシミュレーションを行って、前記バスの使用権が得られるまでの前記プロセッサのサイクル数を算出するバスモデル部と、
前記バスモデル部により算出された命令ごとのサイクル数に基づき、前記プログラムの実行に要するサイクル数を計算するサイクル数累算部と
を備えることを特徴とするシミュレーション装置。
【請求項２】
前記命令セットに含まれる命令の種別ごとに、命令の実行に要する前記プロセッサのサイクル数を記憶する命令情報データベースと、
前記プログラムの命令ごとに、前記メモリに対するアクセス要求を受け付け、該当する命令の種別に対応するサイクル数を前記命令情報データベースから抽出するバスインタフェース部と
をさらに備え、
前記サイクル数累算部は、前記バスモデル部により算出された命令ごとのサイクル数に加えて、前記バスインタフェース部により抽出された命令ごとのサイクル数に基づき、前記プログラムの実行に要するサイクル数を計算することを特徴とする請求項１のシミュレーション装置。
【請求項３】
前記メモリに対するキャッシュとして機能する命令キャッシュ部
をさらに備え、
前記バスモデル部は、前記プログラムの命令ごとに、前記メモリに対するアクセス要求を前記バスインタフェース部から受け付け、
前記バスインタフェース部は、前記メモリに対するアクセス要求として前記プログラムの命令で用いられるオペランドのデータのロード要求を受け付けた場合、該当するオペランドのデータが前記命令キャッシュ部に記憶されていなければ、当該ロード要求を前記バスモデル部に行い、該当するオペランドのデータが前記命令キャッシュ部に記憶されていれば、当該ロード要求を前記バスモデル部に行わないことを特徴とする請求項２のシミュレーション装置。
【請求項４】
前記バスモデル部は、前記プログラムの命令ごとに、前記メモリに対するアクセス要求を前記バスインタフェース部から受け付けるとともに、前記メモリに対するアクセス要求を前記バスインタフェース部以外からも受け付け、１つのアクセス要求の処理中は前記バスが使用中であると判断することを特徴とする請求項２のシミュレーション装置。
【請求項５】
前記プログラムの命令ごとに、前記メモリに対するアクセス要求を前記バスモデル部から受け付け、前記メモリに対するアクセスの遅延を予め定められた前記プロセッサのサイクル数として出力するメモリインタフェース部
をさらに備え、
前記バスモデル部は、前記メモリに対するアクセス要求を受け付けた場合、前記バスの使用権が得られるまで待機せずに、当該アクセス要求を前記メモリインタフェース部に行い、
前記サイクル数累算部は、前記バスモデル部により算出された命令ごとのサイクル数に加えて、前記メモリインタフェース部により抽出された命令ごとのサイクル数に基づき、前記プログラムの実行に要するサイクル数を計算することを特徴とする請求項１のシミュレーション装置。
【請求項６】
前記メモリのアドレスの範囲ごとに、前記メモリに対するアクセスの遅延を前記プロセッサのサイクル数で記憶するメモリアクセスレイテンシデータベースと、
前記プログラムの命令ごとに、前記メモリに対するアクセス要求を受け付け、該当する前記メモリのアドレスに対応するサイクル数を前記メモリアクセスレイテンシデータベースから抽出するメモリインタフェース部と
をさらに備え、
前記サイクル数累算部は、前記バスモデル部により算出された命令ごとのサイクル数に加えて、前記メモリインタフェース部により抽出された命令ごとのサイクル数に基づき、前記プログラムの実行に要するサイクル数を計算することを特徴とする請求項１のシミュレーション装置。
【請求項７】
前記メモリには、前記プログラムとして、前記プログラムの命令のデータが記憶されるとともに、前記プログラムの命令で用いられるオペランドのデータが記憶され、
前記バスモデル部は、前記プログラムの命令ごとに、前記メモリに対するアクセス要求として前記メモリからのデータのロード要求と前記メモリへのデータのストア要求とのいずれかを受け付けることを特徴とする請求項１から６のいずれかのシミュレーション装置。
【請求項８】
プロセッサの命令セットに含まれる命令を複数実行するプログラムのシミュレーションを行うシミュレーション方法において、
バスモデル部が、前記プログラムの命令ごとに、前記プログラムを記憶するメモリに対するアクセス要求を受け付け、バスの調停のシミュレーションを行って、前記バスの使用権が得られるまでの前記プロセッサのサイクル数を算出し、
サイクル数累算部が、前記バスモデル部により算出された命令ごとのサイクル数に基づき、前記プログラムの実行に要するサイクル数を計算することを特徴とするシミュレーション方法。
【請求項９】
プロセッサの命令セットに含まれる命令を複数実行するプログラムのシミュレーションを行うコンピュータに、
前記プログラムの命令ごとに、前記プログラムを記憶するメモリに対するアクセス要求を受け付け、バスの調停のシミュレーションを行って、前記バスの使用権が得られるまでの前記プロセッサのサイクル数を算出するバスモデル処理と、
前記バスモデル処理により算出された命令ごとのサイクル数に基づき、前記プログラムの実行に要するサイクル数を計算するサイクル数累算処理と
を実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、シミュレーション装置及びシミュレーション方法及びプログラムに関するものである。
【背景技術】
【０００２】
近年の電子技術の発展により、高性能なプロセッサが普及している。民生分野の情報家電等の複雑なシステムにおいては小型化、高性能化及びコスト削減のためにシステムＬＳＩ（Ｌａｒｇｅ・Ｓｃａｌｅ・Ｉｎｔｅｇｒａｔｉｏｎ）を開発して使用している（ここでは、ＶＬＳＩ（Ｖｅｒｙ・Ｌａｒｇｅ・Ｓｃａｌｅ・Ｉｎｔｅｇｒａｔｉｏｎ）等も含む一般的な集積回路の意味で「ＬＳＩ」という用語を用いている）。近年のシステムＬＳＩはプロセッサ、メモリ、キャッシュメモリ、バス、ハードウェアエンジン等からなる複合的な大規模システムになっており、開発したシステムＬＳＩが目標性能を実現できているかを確認するために、設計段階でのシミュレーションによるシステムＬＳＩの性能評価への要望が高まっている。
【０００３】
近年、ハードウェアの設計手法として、Ｖｅｒｉｌｏｇ−ＨＤＬ（Ｈａｒｄｗａｒｅ・Ｄｅｓｃｒｉｐｔｉｏｎ・Ｌａｎｇｕａｇｅ）やＶＨＤＬ（Ｖｅｒｙ−ｈｉｇｈ−ｓｐｅｅｄ−ｉｎｔｅｇｒａｔｅｄ−ｃｉｒｃｕｉｔｓ・Ｈａｒｄｗａｒｅ・Ｄｅｓｃｒｉｐｔｉｏｎ・Ｌａｎｇｕａｇｅ）等のハードウェア記述言語を用いたレジスタトランスファレベル（ＲＴＬ）設計が普及している。ハードウェア記述言語を用いると、クロック、フリップフロップ、レジスタ、演算器等を論理回路レベルで記述することができるため、クロックレベルでのハードウェアの詳細な動作のシミュレーションを行うことが可能である。
【０００４】
しかし、シミュレーション速度が遅く、大規模なシステムＬＳＩで大規模なソフトウェアのシミュレーションを行うには膨大な時間がかかるという課題があった。
【０００５】
従来のシステムＬＳＩに実装されるプロセッサにおいては、命令セットを命令列として実行する命令セットシミュレータ（ＩＳＳ）が一般に知られている。命令セットシミュレータは、ソフトウェアエンジニアやプログラマが開発対象のハードウェアを入手する前にプログラムをデバッグできるように開発されるのが一般的である。
【０００６】
図７は、一般的な命令セットシミュレータ７００の構成を示すブロック図である。
【０００７】
図７において、命令セットシミュレータ７００は、命令デコード・実行部８００、サイクル数累算部８０１、メモリアクセス部８０２を備える。
【０００８】
メモリ８０４にプログラムコード８０３を格納した上で、シミュレーションが開始される。
【０００９】
命令デコード・実行部８００は、メモリアクセス部８０２を介してメモリ８０４に格納されているプログラムコード８０３内の命令をロードし、命令の内容を解読し、実行に必要な情報を準備する。その後、命令デコード・実行部８００は、解読した命令を実行し、メモリアクセスが発生した場合は、メモリアクセス部８０２を介してメモリ８０４からデータをロードしたり、メモリ８０４へデータをストアしたりする。
【００１０】
また、命令デコード・実行部８００は、実施した命令の種別、演算処理の繰り返し回数、メモリアクセスの基本レイテンシを基に、１つの命令の実行に要したサイクル数を算出し、サイクル数累算部８０１に渡す。サイクル数累算部８０１は、命令デコード・実行部８００から受け取ったサイクル数を累算することにより、シミュレーション開始から要したサイクル数を算出する。
【００１１】
このような構成により、命令セットシミュレータ７００では、実行する命令の演算処理時間やメモリアクセスレイテンシ、命令キューの状態を考慮し、各命令の実行に必要なサイクル数を算出・累算することで、命令実行時間を見積もることが可能である。
【００１２】
命令セットシミュレータ７００は、ハードウェアのようなパイプライン構造やサイクル精度の動作を行わず、抽象度の高い概念になっているために、Ｖｅｒｉｌｏｇ−ＨＤＬやＶＨＤＬ等のハードウェア記述言語と比較し、高速にシミュレーションを実行することができる。
【００１３】
しかし、バス競合等の動作環境の条件を考慮せずに命令ごとに予め決められた実行サイクル数を使用するため、シミュレーションは高速だが見積もられた実行時間の誤差が大きいという課題があった。
【００１４】
一方、命令セットシミュレータでは不可能なサイクル精度のハードウェア検証を可能にし、ＲＴＬの実行速度の遅さを改善する手法がある（例えば、特許文献１参照）。この手法では、プロセッサの動作をフェッチステージ、実行ステージ、メモリ及びライトバックステージの３段のステージに集約し、それぞれのステージで必要に応じてウェイト制御を行うプロセッサモデルを用いる。プロセッサモデルが外部のバスモデルと通信するデータをトランザクションとして定義し、プロセッサモデルはバス使用リクエスト、アドレス、データ転送量、リード／ライト区分を含む情報をバスモデルへ渡し、バスモデルからバス使用許可が得られるとトランザクションを一括して転送する。
【先行技術文献】
【特許文献】
【００１５】
【特許文献１】特開２００６−３１８２０９号公報
【発明の概要】
【発明が解決しようとする課題】
【００１６】
上述した従来の手法では、シミュレーション実行速度がＶｅｒｉｌｏｇ−ＨＤＬやＶＨＤＬ等のハードウェア記述言語より速くなるものの、複数ステージを並列実行する必要があるため、一般的な命令セットシミュレータよりも速度が低下することが課題となる。
【００１７】
また、命令セットシミュレータとは内部構成が大幅に異なるため、ソフトウェアをデバッグするための命令セットシミュレータとは別にシステム検証用のシミュレータを開発する必要がある。
【００１８】
本発明は、例えば、バス競合等の動作環境の条件を考慮した実行サイクル数の計測が可能で、シミュレーションの実行速度が速いシミュレーション装置を提供することを目的とする。
【課題を解決するための手段】
【００１９】
本発明の一の態様に係るシミュレーション装置は、
プロセッサの命令セットに含まれる命令を複数実行するプログラムのシミュレーションを行うシミュレーション装置であり、
前記プログラムの命令ごとに、前記プログラムを記憶するメモリに対するアクセス要求を受け付け、バスの調停のシミュレーションを行って、前記バスの使用権が得られるまでの前記プロセッサのサイクル数を算出するバスモデル部と、
前記バスモデル部により算出された命令ごとのサイクル数に基づき、前記プログラムの実行に要するサイクル数を計算するサイクル数累算部とを備える。
【発明の効果】
【００２０】
本発明の一の態様によれば、バス競合等の動作環境の条件を考慮した実行サイクル数の計測が可能で、シミュレーションの実行速度が速いシミュレーション装置を提供することが可能となる。
【図面の簡単な説明】
【００２１】
【図１】実施の形態１に係るシミュレーション装置の構成を示すブロック図。
【図２】実施の形態１に係る命令情報データベースに格納されている命令サイクル数情報の一例を示す表。
【図３】実施の形態１に係るシミュレーション装置の動作タイミングの一例を示すタイミング図。
【図４】実施の形態２に係るシミュレーション装置の構成を示すブロック図。
【図５】実施の形態２に係るメモリアクセスレイテンシデータベースに格納されているメモリアクセスレイテンシの一例を示す表。
【図６】実施の形態１及び２に係るシミュレーション装置のハードウェア構成の一例を示す図。
【図７】一般的な命令セットシミュレータの構成を示すブロック図。
【発明を実施するための形態】
【００２２】
以下、本発明の実施の形態について、図を用いて説明する。
【００２３】
実施の形態１．
図１は、本実施の形態に係るシミュレーション装置１００の構成を示すブロック図である。
【００２４】
図１において、シミュレーション装置１００は、命令デコード・実行部２００、サイクル数累算部２０１、メモリアクセス部２０２、命令バスＩ／Ｆ部２０５（命令バスインタフェース部）、オペランドバスＩ／Ｆ部２０６（オペランドバスインタフェース部）、命令情報データベース２０７、バスモデル部２０８、メモリＩ／Ｆ部２０９（メモリインタフェース部）を備える。
【００２５】
また、シミュレーション装置１００は、メモリ２０４のほか、図示していないプロセッサ、入力装置、出力装置、メモリ２０４以外の記憶装置等のハードウェアを備える。ハードウェアはシミュレーション装置１００の各部によって利用される。例えば、プロセッサは、シミュレーション装置１００の各部でデータや情報の演算、加工、読み取り、書き込み等を行うために利用される。メモリ２０４やその他の記憶装置は、そのデータや情報を記憶するために利用される。また、入力装置は、そのデータや情報を入力するために、出力装置は、そのデータや情報を出力するために利用される。
【００２６】
シミュレーション装置１００は、各部の動作により、プログラムコード２０３のシミュレーションを行う。プログラムコード２０３は、プロセッサの命令セットに含まれる命令を複数実行するプログラムである。メモリ２０４には、プログラムコード２０３として、プログラムコード２０３の命令のデータが記憶されるとともに、プログラムコード２０３の命令で用いられるオペランドのデータが記憶される。
【００２７】
命令デコード・実行部２００は、プログラムコード２０３で定められた順序で、プログラムコード２０３の命令を実行するためのメモリ２０４に対するアクセス要求を命令バスＩ／Ｆ部２０５及びオペランドバスＩ／Ｆ部２０６に行う（入力する）。命令デコード・実行部２００は、メモリ２０４に対するアクセス要求を命令バスＩ／Ｆ部２０５あるいはオペランドバスＩ／Ｆ部２０６に行った後、命令バスＩ／Ｆ部２０５あるいはオペランドバスＩ／Ｆ部２０６（要求先）から応答が返されると、プログラムコード２０３の次の命令を実行するためのメモリ２０４に対するアクセス要求を命令バスＩ／Ｆ部２０５あるいはオペランドバスＩ／Ｆ部２０６に行う（入力する）。
【００２８】
命令情報データベース２０７は、プロセッサの命令セットに含まれる命令の種別ごとに、命令の実行に要するプロセッサのサイクル数を記憶装置により予め記憶する。
【００２９】
命令バスＩ／Ｆ部２０５は、バスインタフェース部の一例であり、プログラムコード２０３の命令ごとに、メモリ２０４に対するアクセス要求としてプログラムコード２０３の命令のデータのロード要求を命令デコード・実行部２００から受け付け、当該ロード要求をバスモデル部２０８に行う（入力する）。命令バスＩ／Ｆ部２０５は、プログラムコード２０３の命令のデータのロード要求をバスモデル部２０８に行った後、バスモデル部２０８から応答が返されると、命令デコード・実行部２００に応答を返す（入力する）。
【００３０】
オペランドバスＩ／Ｆ部２０６は、バスインタフェース部の一例であり、プログラムコード２０３の命令ごとに、メモリ２０４に対するアクセス要求としてプログラムコード２０３の命令で用いられるオペランドのデータのロード要求又はストア要求を命令デコード・実行部２００から受け付け、該当する命令の種別に対応するサイクル数を命令情報データベース２０７から抽出する。また、オペランドバスＩ／Ｆ部２０６は、プログラムコード２０３の命令で用いられるオペランドのデータのロード要求又はストア要求を命令デコード・実行部２００から受け付けた場合、当該ロード要求又は当該ストア要求をバスモデル部２０８に行う（入力する）。オペランドバスＩ／Ｆ部２０６は、プログラムコード２０３の命令で用いられるオペランドのデータのロード要求又はストア要求をバスモデル部２０８に行った後、バスモデル部２０８から応答が返されると、命令デコード・実行部２００に応答を返す（入力する）。
【００３１】
バスモデル部２０８は、プログラムコード２０３の命令ごとに、メモリ２０４に対するアクセス要求を命令バスＩ／Ｆ部２０５及びオペランドバスＩ／Ｆ部２０６から受け付け、バスの調停のシミュレーションを行って、バスの使用権が得られるまでのプロセッサのサイクル数を算出する。また、バスモデル部２０８は、メモリ２０４に対するアクセス要求を命令バスＩ／Ｆ部２０５あるいはオペランドバスＩ／Ｆ部２０６から受け付けた場合、バスの使用権が得られるまで待機せずに、当該アクセス要求をメモリＩ／Ｆ部２０９に行う（入力する）。バスモデル部２０８は、メモリ２０４に対するアクセス要求をメモリＩ／Ｆ部２０９に行った後、メモリＩ／Ｆ部２０９から応答が返されると、命令バスＩ／Ｆ部２０５あるいはオペランドバスＩ／Ｆ部２０６（要求元）に応答を返す（入力する）。
【００３２】
メモリＩ／Ｆ部２０９は、プログラムコード２０３の命令ごとに、メモリ２０４に対するアクセス要求をバスモデル部２０８から受け付け、メモリ２０４に対するアクセスの遅延（アクセスレイテンシ）を予め定められたプロセッサのサイクル数として出力する。また、メモリＩ／Ｆ部２０９は、メモリ２０４に対するアクセス要求をバスモデル部２０８から受け付けた場合、メモリアクセス部２０２を介してメモリ２０４にアクセスする。具体的には、メモリＩ／Ｆ部２０９は、メモリ２０４に対するアクセス要求としてプログラムコード２０３の命令のデータのロード要求を受け付けた場合、該当する命令のデータをメモリ２０４からロードする。メモリＩ／Ｆ部２０９は、メモリ２０４に対するアクセス要求としてプログラムコード２０３の命令で用いられるオペランドのデータのロード要求を受け付けた場合、該当するオペランドのデータをメモリ２０４からロードする。メモリＩ／Ｆ部２０９は、メモリ２０４に対するアクセス要求としてプログラムコード２０３の命令で用いられるオペランドのデータのストア要求を受け付けた場合、該当するオペランドのデータをメモリ２０４へストアする。メモリＩ／Ｆ部２０９は、メモリ２０４にアクセスした後、バスモデル部２０８に応答を返す（入力する）。
【００３３】
サイクル数累算部２０１は、バスモデル部２０８により算出された命令ごとのサイクル数に基づき、プログラムコード２０３の実行に要するサイクル数を計算する。望ましくは、サイクル数累算部２０１は、バスモデル部２０８により算出された命令ごとのサイクル数に加えて、オペランドバスＩ／Ｆ部２０６により抽出された命令ごとのサイクル数、及び／又は、メモリＩ／Ｆ部２０９から出力された命令ごとのサイクル数に基づき、プログラムコード２０３の実行に要するサイクル数を計算する。サイクル数累算部２０１は、計算したサイクル数を出力装置により出力する。
【００３４】
以下では、シミュレーション装置１００の各部の詳細な動作について説明する。
【００３５】
メモリ２０４にプログラムコード２０３を格納した上で、シミュレーションが開始される。
【００３６】
命令デコード・実行部２００は、メモリ２０４に格納されているプログラムコード２０３内の命令ロードを命令バスＩ／Ｆ部２０５に対して要求する。命令バスＩ／Ｆ部２０５は、指示された命令ロードを受けて、バスモデル部２０８に対し、メモリ２０４からのデータロードを要求する。バスモデル部２０８は、指示されたデータロード要求に対し、バス調停を行い、バスが使用中の場合又は命令バスＩ／Ｆ部２０５の要求よりも優先度の高い要求がある場合は命令バスＩ／Ｆ部２０５の要求を保留制御し、命令バスＩ／Ｆ部２０５の要求がバス使用権を得た場合はメモリＩ／Ｆ部２０９に対してデータロードを要求する。
【００３７】
メモリＩ／Ｆ部２０９は、バスモデル部２０８からのデータロード要求を受けて、メモリアクセス部２０２を介してメモリ２０４からデータをロードする。メモリＩ／Ｆ部２０９は、メモリアクセスレイテンシのサイクル数分ウェイトしてから、バスモデル部２０８に対して応答を返す。
【００３８】
バスモデル部２０８は、メモリＩ／Ｆ部２０９からの応答を受けて、命令バスＩ／Ｆ部２０５に応答を返す。なお、バスモデル部２０８は、メモリＩ／Ｆ部２０９に対し、メモリアクセスの要求を出してから応答が返ってくるまでの期間はバス使用中として新規の要求は受け付けない。
【００３９】
命令バスＩ／Ｆ部２０５は、バスモデル部２０８からの応答を受け、ロードした命令データを命令デコード・実行部２００に渡す。
【００４０】
命令デコード・実行部２００は、ロードした命令データを解析後、命令を実行する。命令デコード・実行部２００は、まず、実行する命令の種別をオペランドバスＩ／Ｆ部２０６に通知し、続いて、オペランドデータのロード命令又はストア命令を実行する度にオペランドバスＩ／Ｆ部２０６に対してメモリ２０４からのデータロード又はメモリ２０４へのデータストアを要求し、１つの命令の実行が終了すると、次の命令のデコード処理に移る。
【００４１】
オペランドバスＩ／Ｆ部２０６は、命令デコード・実行部２００からの命令の種別の通知を受けて、命令情報データベース２０７から実行する命令のサイクル数情報を取得する。オペランドバスＩ／Ｆ部２０６は、サイクル数情報に従い、ウェイト制御を行い、メモリアクセスタイミングや次の命令のデコード処理開始タイミングを調整する。
【００４２】
オペランドバスＩ／Ｆ部２０６は、指示されたデータロード又はデータストアを受けて、バスモデル部２０８に対し、メモリ２０４からのデータロード又はデータストアを要求する。バスモデル部２０８は、指示されたデータロード又はデータストアの要求に対し、バス調停を行い、バスが使用中の場合又はオペランドバスＩ／Ｆ部２０６の要求よりも優先度の高い要求がある場合はオペランドバスＩ／Ｆ部２０６の要求を保留制御し、オペランドバスＩ／Ｆ部２０６の要求がバス使用権を得た場合はメモリＩ／Ｆ部２０９に対してデータロードを要求する。
【００４３】
メモリＩ／Ｆ部２０９は、バスモデル部２０８からのデータロード要求を受けて、メモリアクセス部２０２を介してメモリ２０４からデータをロードする。メモリＩ／Ｆ部２０９は、メモリアクセスレイテンシのサイクル数分ウェイトしてから、バスモデル部２０８に対して応答を返す。
【００４４】
バスモデル部２０８は、メモリＩ／Ｆ部２０９からの応答を受けて、オペランドバスＩ／Ｆ部２０６に応答を返す。なお、バスモデル部２０８は、メモリＩ／Ｆ部２０９に対し、メモリアクセスの要求を出してから応答が返ってくるまでの期間はバス使用中として新規の要求は受け付けない。
【００４５】
オペランドバスＩ／Ｆ部２０６は、バスモデル部２０８からの応答を受け、ロードしたオペランドデータを命令デコード・実行部２００に渡すか、あるいは、オペランドデータのストアが完了した旨を命令デコード・実行部２００に通知する。
【００４６】
オペランドバスＩ／Ｆ部２０６は、１つの命令の実行に要したサイクル数、即ち、バスモデル部２０８の保留制御、メモリＩ／Ｆ部２０９のウェイト制御又はオペランドバスＩ／Ｆ部２０６のウェイト制御で使用したサイクル数を、サイクル数累算部２０１に通知する。サイクル数累算部２０１は、オペランドバスＩ／Ｆ部２０６から通知されたサイクル数を累算することにより、シミュレーション開始から要したサイクル数を算出する。
【００４７】
本実施の形態では、命令バスＩ／Ｆ部２０５とオペランドバスＩ／Ｆ部２０６は、シミュレーション実行中に発生する時間概念を持たないメモリアクセス処理から、サイクルレベルのバスアクセスタイミングを生成する機能を有している。また、バスモデル部２０８は、サイクルレベルのバスアクセスシミュレーションを実行することが可能である。
【００４８】
さらに、メモリＩ／Ｆ部２０９は、サイクルレベルのバスアクセスタイミングから時間概念を持たないメモリアクセス処理に変更し、メモリアクセス部２０２を介してメモリ２０４にアクセスしている。
【００４９】
図２は、命令情報データベース２０７に格納されている命令サイクル数情報の一例を示す表である。
【００５０】
図２において、命令情報データベース２０７は、命令種別３００、サイクル数３０１を記憶する列を有する。サイクル数３０１の列は、デコード処理３０２のサイクル数、命令実行前処理３０３のサイクル数、命令実行後処理３０４のサイクル数を記憶する３つの列に分けられている。
【００５１】
この例では、ｌｏａｄ命令３１０のサイクル数、ｍｕｌｔｉｐｌｅ命令３１１のサイクル数、ｓｔｏｒｅ命令３１２のサイクル数、ａｄｄ命令３１３のサイクル数、ｎｏｐ命令３１４のサイクル数を記憶する行がある。なお、命令の種別については、これら５つに限定されるものではなく、プロセッサの命令セットに含まれる全ての命令の種別が網羅されていることが望ましい。
【００５２】
表中で“０”以上のサイクル数は、ウェイト制御で使用されるサイクル数を示しており、“−１”は、処理完了を待たずに次の処理に移行することを意味している。この表では、ｌｏａｄ命令３１０の命令実行後処理３０４とｓｔｏｒｅ命令３１２の命令実行後処理３０４のサイクル数が“−１”になっているため、ｌｏａｄ命令のオペランドロードとｓｔｏｒｅ命令のオペランドストアは、完了を待たずに次命令を開始することを示している。
【００５３】
図３は、シミュレーション装置１００の動作タイミングの一例を示すタイミング図である。
【００５４】
図３では、メモリアクセスレイテンシを２サイクルとし、図２で示したサイクル数によるシミュレーションを行った場合のクロックタイミング４００、処理中命令４０１、命令実行状態４０２のタイミング、メモリアクセス状態４０３のタイミングを示している。
【００５５】
この例では、ｌｏａｄ命令処理４１０、ｍｕｌｔｉｐｌｅ命令処理４１１、ｓｔｏｒｅ命令処理４１２、ａｄｄ命令処理４１３、ｎｏｐ命令処理４１４の順に命令を実行している。
【００５６】
ｌｏａｄ命令処理４１０では、ｌｏａｄ命令デコード処理４２０、ｌｏａｄ命令前処理４２１の順に処理を実行する。命令情報データベース２０７においてｌｏａｄ命令３１０のデコード処理３０２のサイクル数が０サイクルであることから、ｌｏａｄ命令デコード処理４２０が０サイクル期間で終了する。ｌｏａｄ命令デコード処理４２０に伴い、メモリ２０４に対する命令ロード４４０が発生し、次の命令のフェッチ処理が行われる。
【００５７】
命令情報データベース２０７においてｌｏａｄ命令３１０の命令実行前処理３０３のサイクル数が１サイクルであり、ｌｏａｄ命令３１０の命令実行後処理３０４のサイクル数が“−１”であることから、ｌｏａｄ命令前処理４２１が１サイクル期間継続し、ｌｏａｄ命令処理４１０が終了する。ｌｏａｄ命令前処理４２１の完了後に、メモリ２０４に対するオペランドロード４４１が発生する。ｌｏａｄ命令前処理４２１が完了するタイミングでは、命令ロード４４０でメモリアクセスを行っているため、命令ロード４４０の完了後に、オペランドロード４４１が開始される。
【００５８】
ｍｕｌｔｉｐｌｅ命令処理４１１では、ｍｕｌｔｉｐｌｅ命令デコード処理４２２、ｍｕｌｔｉｐｌｅ命令前処理４２３の順に処理を実行する。命令情報データベース２０７においてｍｕｌｔｉｐｌｅ命令３１１のデコード処理３０２のサイクル数が０サイクルであることと、ｍｕｌｔｉｐｌｅ命令デコード処理４２２の開始時に命令ロード４４０でメモリアクセスを行っていることから、命令ロード４４０が完了するまでｍｕｌｔｉｐｌｅ命令デコード処理４２２が継続する。ｍｕｌｔｉｐｌｅ命令デコード処理４２２に伴い、メモリ２０４に対する命令ロード４４２が発生し、次の命令のフェッチ処理が行われる。ｍｕｌｔｉｐｌｅ命令デコード処理４２２の完了タイミングでは、オペランドロード４４１でメモリアクセス中のため、オペランドロード４４１の完了後に、命令ロード４４２が開始される。
【００５９】
命令情報データベース２０７においてｍｕｌｔｉｐｌｅ命令３１１の命令実行前処理３０３のサイクル数が４サイクルであり、ｍｕｌｔｉｐｌｅ命令３１１の命令実行後処理３０４のサイクル数が０サイクルであることから、ｍｕｌｔｉｐｌｅ命令前処理４２３が４サイクル期間継続し、ｍｕｌｔｉｐｌｅ命令処理４１１が終了する。
【００６０】
ｓｔｏｒｅ命令処理４１２では、ｓｔｏｒｅ命令デコード処理４２４、ｓｔｏｒｅ命令前処理４２５の順に処理を実行する。命令情報データベース２０７においてｓｔｏｒｅ命令３１２のデコード処理３０２のサイクル数が０サイクルであることから、ｓｔｏｒｅ命令デコード処理４２４が０サイクル期間で終了する。ｓｔｏｒｅ命令デコード処理４２４に伴い、メモリ２０４に対する命令ロード４４３が発生し、次の命令のフェッチ処理が行われる。
【００６１】
命令情報データベース２０７においてｓｔｏｒｅ命令３１２の命令実行前処理３０３のサイクル数が１サイクルであることから、ｓｔｏｒｅ命令前処理４２５が１サイクル期間継続する。ｓｔｏｒｅ命令前処理４２５の完了後に、４４４のオペランドストアが発生する。ｓｔｏｒｅ命令前処理４２５が完了するタイミングでは、命令ロード４４３がメモリアクセスを行っているため、命令ロード４４３の完了後に、メモリ２０４に対するオペランドストア４４４が開始される。命令情報データベース２０７においてｓｔｏｒｅ命令３１２の命令実行後処理３０４のサイクル数が“−１”であることから、ｓｔｏｒｅ命令前処理４２５の完了でｓｔｏｒｅ命令処理４１２が終了する。
【００６２】
ａｄｄ命令処理４１３では、ａｄｄ命令デコード処理４２６、ａｄｄ命令前処理４２７の順に処理を実行する。命令情報データベース２０７においてａｄｄ命令３１３のデコード処理３０２のサイクル数が０サイクルであるが、ａｄｄ命令デコード処理４２６を開始するタイミングでは、命令ロード４４３での命令フェッチ処理が完了していないため、ａｄｄ命令デコード処理４２６は、命令ロード４４３が完了するまでの１サイクル期間継続される。ａｄｄ命令デコード処理４２６に伴い、メモリ２０４に対する命令ロード４４５が発生し、次の命令のフェッチ処理が行われる。ａｄｄ命令デコード処理４２６の完了後に、メモリ２０４に対するオペランドストア４４４が開始されるため、オペランドストア４４４の完了後に、メモリ２０４に対する命令ロード４４５が開始される。
【００６３】
命令情報データベース２０７においてａｄｄ命令３１３の命令実行前処理３０３のサイクル数が２サイクルで、ａｄｄ命令３１３の命令実行後処理３０４のサイクル数が０サイクルであることから、ａｄｄ命令前処理４２７が２サイクル期間継続し、ａｄｄ命令処理４１３が終了する。
【００６４】
ｎｏｐ命令処理４１４では、ｎｏｐ命令デコード処理４２８、ｎｏｐ命令前処理４２９の順に処理を実行する。命令情報データベース２０７においてｎｏｐ命令３１４のデコード処理３０２のサイクル数が０サイクルであるが、ｎｏｐ命令デコード処理４２８を開始するタイミングでは、命令ロード４４５での命令フェッチ処理が完了していないため、ｎｏｐ命令デコード処理４２８は、命令ロード４４５が完了するまでの２サイクル期間継続される。
【００６５】
命令情報データベース２０７においてｎｏｐ命令３１４の命令実行前処理３０３のサイクル数が１サイクルで、ｎｏｐ命令３１４の命令実行後処理３０４のサイクル数が０サイクルであることから、ｎｏｐ命令前処理４２９が１サイクル期間継続し、ｎｏｐ命令処理４１４が終了する。
【００６６】
命令実行状態４０２で発生するウェイト制御は、オペランドバスＩ／Ｆ部２０６で行われ、メモリアクセス状態４０３で発生するウェイト制御は、メモリＩ／Ｆ部２０９で行われる。図３の例では、ｌｏａｄ命令処理４１０で１サイクル、ｍｕｌｔｉｐｌｅ命令処理４１１で５サイクル、ｓｔｏｒｅ命令処理４１２で１サイクル、ａｄｄ命令処理４１３で３サイクル、ｎｏｐ命令処理４１４で３サイクル使用する。各命令処理で使用するサイクル数は、オペランドバスＩ／Ｆ部２０６からサイクル数累算部２０１に順次転送され、サイクル数累算部２０１でトータルサイクル数１３サイクルが算出される。
【００６７】
図３の例では、ｌｏａｄ命令処理４１０が完了したときに、オペランドロード４４１の完了を待たずに次のｍｕｌｔｉｐｌｅ命令処理４１１が開始するように、オペランドバスＩ／Ｆ部２０６からバスモデル部２０８に対して要求が行われ、応答を待たずに命令デコード・実行部２００における次の命令の処理が開始されている。この例では、オペランドバスＩ／Ｆ部２０６からバスモデル部２０８に要求を出したタイミングで、メモリ２０４からロードしたデータを命令デコード・実行部２００に渡し、シミュレーションを継続して実行し、バスアクセスを同時に実行することにより、バスアクセス処理のパイプライン化による並列処理のシミュレーションを実現している。
【００６８】
以上のように、本実施の形態では、命令デコードで発生した命令ロードによるメモリアクセスと、命令実行で発生したオペランドロード及びオペランドストアによるメモリアクセスの競合によるサイクル精度でシミュレーションを行うことが可能である。
【００６９】
以上説明したように、本実施の形態に係るシミュレーション装置１００は、複数の命令セットを備えたアプリケーションプログラムのプロセッサにおける命令セットレベルのシミュレーションを行う装置であり、シミュレーション実行中に発生する時間概念を持たないメモリアクセス処理から、サイクルレベルのバスアクセスタイミングを生成し、サイクルレベルのバスアクセスシミュレーションを実行することで命令実行サイクル数を算出するものである。
【００７０】
また、シミュレーション装置１００は、シミュレーション実行中に発生する時間概念を持たないメモリアクセス処理から、サイクルレベルのバスアクセスタイミングを生成する機能を、命令データロード用とオペランドデータロード及びストア用で複数持つものである。
【００７１】
また、シミュレーション装置１００は、サイクルレベルのバスアクセスタイミングから時間概念を持たないメモリアクセス処理に変更し、メモリアクセスを行うものである。
【００７２】
また、シミュレーション装置１００は、シミュレーション実行中に発生する時間概念を持たないメモリアクセス処理から、サイクルレベルのバスアクセスタイミングを生成する際に、命令種別に応じたサイクル数データベースを参照するものである。
【００７３】
また、シミュレーション装置１００は、シミュレーション実行中に発生する時間概念を持たないメモリアクセス処理から、サイクルレベルのバスアクセスタイミングを生成し、サイクルレベルのバスアクセスタイミングを行う際に、バスアクセスが完了する前にメモリ２０４からのロードデータの取得とメモリ２０４へのストアデータの保存をし、シミュレーションを実行するものである。
【００７４】
本実施の形態によれば、一般的な命令セットシミュレータに劣らない実行速度を実現可能なシミュレーション装置１００を提供することができる。
【００７５】
また、本実施の形態によれば、一般的な命令セットシミュレータの開発資産を流用し、高精度な実行サイクル数計測が可能なシミュレーション装置１００を提供することができる。
【００７６】
実施の形態２．
本実施の形態について、主に実施の形態１との差異を説明する。
【００７７】
図４は、本実施の形態に係るシミュレーション装置１００の構成を示すブロック図である。
【００７８】
図４において、シミュレーション装置１００は、図１に示した実施の形態１に係るシミュレーション装置１００の各部に加えて、命令キャッシュ部５００（データキャッシュ部）、ＤＭＡ部５０１（ダイレクトメモリアクセス部）、メモリアクセスレイテンシデータベース５０３を備える。
【００７９】
また、シミュレーション装置１００は、（第一）メモリ２０４のほか、第二メモリ５０２を備える。
【００８０】
命令キャッシュ部５００は、命令バスＩ／Ｆ部２０５とバスモデル部２０８との間に配置されており、メモリ２０４に対するキャッシュとして機能する。
【００８１】
ＤＭＡ部５０１は、第二メモリ５０２とともにバスモデル部２０８に接続されており、メモリ２０４と第二メモリ５０２との間で直接データを転送するためのアクセス要求をバスモデル部２０８に行う（入力する）。
【００８２】
メモリアクセスレイテンシデータベース５０３は、メモリＩ／Ｆ部２０９に接続されており、メモリ２０４のアドレスの範囲ごとに、メモリ２０４に対するアクセスの遅延をプロセッサのサイクル数で記憶装置により記憶する。
【００８３】
オペランドバスＩ／Ｆ部２０６は、プログラムコード２０３の命令で用いられるオペランドのデータのロード要求を命令デコード・実行部２００から受け付けた場合、該当するオペランドのデータが命令キャッシュ部５００に記憶されていなければ、当該ロード要求をバスモデル部２０８に行う（入力する）。一方、オペランドバスＩ／Ｆ部２０６は、該当するオペランドのデータが命令キャッシュ部５００に記憶されていれば、当該ロード要求をバスモデル部２０８に行わずに（入力せずに）、命令デコード・実行部２００に応答を返す（入力する）。
【００８４】
バスモデル部２０８は、プログラムコード２０３の命令ごとに、メモリ２０４に対するアクセス要求を命令バスＩ／Ｆ部２０５及びオペランドバスＩ／Ｆ部２０６から受け付けるとともに、メモリ２０４に対するアクセス要求をＤＭＡ部５０１からも受け付け、１つのアクセス要求の処理中は前記バスが使用中であると判断する。
【００８５】
メモリＩ／Ｆ部２０９は、プログラムコード２０３の命令ごとに、メモリ２０４に対するアクセス要求をバスモデル部２０８から受け付け、該当するメモリ２０４のアドレスに対応するサイクル数をメモリアクセスレイテンシデータベース５０３から抽出して出力する。
【００８６】
なお、命令キャッシュ部５００は、一般的なデータアクセスを高速化するための一時記憶装置で、ここではキャッシュアルゴリズムの実装方法は問わない。本実施の形態では、命令キャッシュ部５００をサイクルレベルのバスアクセスシミュレーションが可能なモデルとして実装し、シミュレーション装置１００に組み込むことにより、命令キャッシュ部５００を実装した場合の処理サイクル数の計測を行うことが可能となる。
【００８７】
また、ＤＭＡ部５０１は、一般的なメモリ間で直接データを転送するＤＭＡ装置である。ＤＭＡ部５０１は、メモリ２０４と第二メモリ５０２の間のデータ転送を行う。本実施の形態では、ＤＭＡ部５０１及び第二メモリ５０２をサイクルレベルのバスアクセスシミュレーション可能なモデルとして実装し、シミュレーション装置１００に組み込むことにより、プロセッサ以外のバスアクセスによるバス競合が発生した場合の処理サイクル数の計測を行うことが可能となる。
【００８８】
また、メモリアクセスレイテンシデータベース５０３は、メモリアクセスに要するレイテンシを記憶する装置で、メモリＩ／Ｆ部２０９はメモリアクセスレイテンシデータベース５０３に記憶されているデータに従い、バスモデル部２０８から要求を受け取った後に、メモリアクセスレイテンシのサイクル数分ウェイトしてから、バスモデル部２０８に応答を返す。
【００８９】
図５は、メモリアクセスレイテンシデータベース５０３に格納されているメモリアクセスレイテンシの一例を示す表である。
【００９０】
図５において、メモリアクセスレイテンシデータベース５０３は、メモリ２０４のアドレス範囲６００、メモリ２０４のアクセスレイテンシ６０１を記憶する列を有する。ここでは、メモリ２０４のアドレス範囲ごとに異なるメモリアクセスレイテンシを設定している。このような構成にすることにより、メモリアクセスレイテンシの異なる条件下での処理サイクル数計測を行うことが可能となる。
【００９１】
以上説明したように、本実施の形態に係るシミュレーション装置１００は、シミュレーション実行中に発生する時間概念を持たないメモリアクセス処理から、サイクルレベルのバスアクセスタイミングを生成した後に、サイクルレベルで実行可能なキャッシュメモリ装置を経由し、メモリアクセスを行うものである。
【００９２】
また、シミュレーション装置１００は、プロセッサ以外に、サイクルレベルのバスアクセスタイミングでメモリアクセスを行う装置を搭載したものである。
【００９３】
また、シミュレーション装置１００は、サイクルレベルのバスアクセスタイミングから時間概念を持たないメモリアクセス処理に変更し、メモリアクセスを行う際に、メモリアクセスレイテンシデータベース５０３を参照するものである。
【００９４】
図６は、実施の形態１及び２に係るシミュレーション装置１００のハードウェア構成の一例を示す図である。
【００９５】
図６において、シミュレーション装置１００は、コンピュータであり、ＬＣＤ９０１（Ｌｉｑｕｉｄ・Ｃｒｙｓｔａｌ・Ｄｉｓｐｌａｙ）、キーボード９０２（Ｋ／Ｂ）、マウス９０３、ＦＤＤ９０４（Ｆｌｅｘｉｂｌｅ・Ｄｉｓｋ・Ｄｒｉｖｅ）、ＣＤＤ９０５（Ｃｏｍｐａｃｔ・Ｄｉｓｃ・Ｄｒｉｖｅ）、プリンタ９０６といったハードウェアデバイスを備えている。これらのハードウェアデバイスはケーブルや信号線で接続されている。ＬＣＤ９０１の代わりに、ＣＲＴ（Ｃａｔｈｏｄｅ・Ｒａｙ・Ｔｕｂｅ）、あるいは、その他の表示装置が用いられてもよい。マウス９０３の代わりに、タッチパネル、タッチパッド、トラックボール、ペンタブレット、あるいは、その他のポインティングデバイスが用いられてもよい。
【００９６】
シミュレーション装置１００は、プログラムを実行するＣＰＵ９１１（Ｃｅｎｔｒａｌ・Ｐｒｏｃｅｓｓｉｎｇ・Ｕｎｉｔ）を備えている。ＣＰＵ９１１は、プロセッサの一例である。ＣＰＵ９１１は、バス９１２を介してＲＯＭ９１３（Ｒｅａｄ・Ｏｎｌｙ・Ｍｅｍｏｒｙ）、ＲＡＭ９１４（Ｒａｎｄｏｍ・Ａｃｃｅｓｓ・Ｍｅｍｏｒｙ）、通信ボード９１５、ＬＣＤ９０１、キーボード９０２、マウス９０３、ＦＤＤ９０４、ＣＤＤ９０５、プリンタ９０６、ＨＤＤ９２０（Ｈａｒｄ・Ｄｉｓｋ・Ｄｒｉｖｅ）と接続され、これらのハードウェアデバイスを制御する。ＨＤＤ９２０の代わりに、フラッシュメモリ、光ディスク装置、メモリカードリーダライタ、あるいは、その他の記録媒体が用いられてもよい。
【００９７】
ＲＡＭ９１４は、揮発性メモリの一例である。ＲＯＭ９１３、ＦＤＤ９０４、ＣＤＤ９０５、ＨＤＤ９２０は、不揮発性メモリの一例である。これらは、メモリ２０４及びその他の記憶装置の一例である。通信ボード９１５、キーボード９０２、マウス９０３、ＦＤＤ９０４、ＣＤＤ９０５は、入力装置の一例である。また、通信ボード９１５、ＬＣＤ９０１、プリンタ９０６は、出力装置の一例である。
【００９８】
通信ボード９１５は、ＬＡＮ（Ｌｏｃａｌ・Ａｒｅａ・Ｎｅｔｗｏｒｋ）等に接続されている。通信ボード９１５は、ＬＡＮに限らず、ＩＰ−ＶＰＮ（Ｉｎｔｅｒｎｅｔ・Ｐｒｏｔｏｃｏｌ・Ｖｉｒｔｕａｌ・Ｐｒｉｖａｔｅ・Ｎｅｔｗｏｒｋ）、広域ＬＡＮ、ＡＴＭ（Ａｓｙｎｃｈｒｏｎｏｕｓ・Ｔｒａｎｓｆｅｒ・Ｍｏｄｅ）ネットワークといったＷＡＮ（Ｗｉｄｅ・Ａｒｅａ・Ｎｅｔｗｏｒｋ）、あるいは、インターネットに接続されていても構わない。ＬＡＮ、ＷＡＮ、インターネットは、ネットワークの一例である。
【００９９】
ＨＤＤ９２０には、オペレーティングシステム９２１（ＯＳ）、ウィンドウシステム９２２、プログラム群９２３、ファイル群９２４が記憶されている。プログラム群９２３のプログラムは、ＣＰＵ９１１、オペレーティングシステム９２１、ウィンドウシステム９２２により実行される。プログラム群９２３には、本実施の形態の説明において「〜部」として説明する機能を実行するプログラムが含まれている。プログラムは、ＣＰＵ９１１により読み出され実行される。ファイル群９２４には、本実施の形態の説明において、「〜データ」、「〜情報」、「〜ＩＤ（識別子）」、「〜フラグ」、「〜結果」として説明するデータや情報や信号値や変数値やパラメータが、「〜ファイル」や「〜データベース」や「〜テーブル」の各項目として含まれている。「〜ファイル」や「〜データベース」や「〜テーブル」は、ＲＡＭ９１４やＨＤＤ９２０等の記録媒体に記憶される。ＲＡＭ９１４やＨＤＤ９２０等の記録媒体に記憶されたデータや情報や信号値や変数値やパラメータは、読み書き回路を介してＣＰＵ９１１によりメインメモリやキャッシュメモリに読み出され、抽出、検索、参照、比較、演算、計算、制御、出力、印刷、表示といったＣＰＵ９１１の処理（動作）に用いられる。抽出、検索、参照、比較、演算、計算、制御、出力、印刷、表示といったＣＰＵ９１１の処理中、データや情報や信号値や変数値やパラメータは、メインメモリやキャッシュメモリやバッファメモリに一時的に記憶される。
【０１００】
本実施の形態の説明において用いるブロック図やフローチャートの矢印の部分は主としてデータや信号の入出力を示す。データや信号は、ＲＡＭ９１４等のメモリ、ＦＤＤ９０４のフレキシブルディスク（ＦＤ）、ＣＤＤ９０５のコンパクトディスク（ＣＤ）、ＨＤＤ９２０の磁気ディスク、光ディスク、ＤＶＤ（Ｄｉｇｉｔａｌ・Ｖｅｒｓａｔｉｌｅ・Ｄｉｓｃ）、あるいは、その他の記録媒体に記録される。また、データや信号は、バス９１２、信号線、ケーブル、あるいは、その他の伝送媒体により伝送される。
【０１０１】
本実施の形態の説明において「〜部」として説明するものは、「〜回路」、「〜装置」、「〜機器」であってもよく、また、「〜ステップ」、「〜工程」、「〜手順」、「〜処理」であってもよい。即ち、「〜部」として説明するものは、ＲＯＭ９１３に記憶されたファームウェアで実現されていても構わない。あるいは、「〜部」として説明するものは、ソフトウェアのみ、あるいは、素子、デバイス、基板、配線といったハードウェアのみで実現されていても構わない。あるいは、「〜部」として説明するものは、ソフトウェアとハードウェアとの組み合わせ、あるいは、ソフトウェアとハードウェアとファームウェアとの組み合わせで実現されていても構わない。ファームウェアとソフトウェアは、プログラムとして、フレキシブルディスク、コンパクトディスク、磁気ディスク、光ディスク、ＤＶＤ等の記録媒体に記憶される。プログラムはＣＰＵ９１１により読み出され、ＣＰＵ９１１により実行される。即ち、プログラムは、本実施の形態の説明で述べる「〜部」としてコンピュータを機能させるものである。あるいは、プログラムは、本実施の形態の説明で述べる「〜部」の手順や方法をコンピュータに実行させるものである。
【０１０２】
以上、本発明の実施の形態について説明したが、これらの実施の形態のうち、２つ以上を組み合わせて実施しても構わない。あるいは、これらの実施の形態のうち、１つを部分的に実施しても構わない。あるいは、これらの実施の形態のうち、２つ以上を部分的に組み合わせて実施しても構わない。なお、本発明は、これらの実施の形態に限定されるものではなく、必要に応じて種々の変更が可能である。
【符号の説明】
【０１０３】
１００  シミュレーション装置、２００，８００  命令デコード・実行部、２０１，８０１  サイクル数累算部、２０２，８０２  メモリアクセス部、２０３，８０３  プログラムコード、２０４，８０４  メモリ、２０５  命令バスＩ／Ｆ部、２０６  オペランドバスＩ／Ｆ部、２０７  命令情報データベース、２０８  バスモデル部、２０９  メモリＩ／Ｆ部、３００  命令種別、３０１  サイクル数、３０２  デコード処理、３０３  命令実行前処理、３０４  命令実行後処理、３１０  ｌｏａｄ命令、３１１  ｍｕｌｔｉｐｌｅ命令、３１２  ｓｔｏｒｅ命令、３１３  ａｄｄ命令、３１４  ｎｏｐ命令、４００  クロックタイミング、４０１  処理中命令、４０２  命令実行状態、４０３  メモリアクセス状態、４１０  ｌｏａｄ命令処理、４１１  ｍｕｌｔｉｐｌｅ命令処理、４１２  ｓｔｏｒｅ命令処理、４１３  ａｄｄ命令処理、４１４  ｎｏｐ命令処理、４２０  ｌｏａｄ命令デコード処理、４２１  ｌｏａｄ命令前処理、４２２  ｍｕｌｔｉｐｌｅ命令デコード処理、４２３  ｍｕｌｔｉｐｌｅ命令前処理、４２４  ｓｔｏｒｅ命令デコード処理、４２５  ｓｔｏｒｅ命令前処理、４２６  ａｄｄ命令デコード処理、４２７  ａｄｄ命令前処理、４２８  ｎｏｐ命令デコード処理、４２９  ｎｏｐ命令前処理、４４０，４４２，４４３，４４５  命令ロード、４４１  オペランドロード、４４４  オペランドストア、５００  命令キャッシュ部、５０１  ＤＭＡ部、５０２  第二メモリ、５０３  メモリアクセスレイテンシデータベース、６００  アドレス範囲、６０１  アクセスレイテンシ、７００  命令セットシミュレータ、９０１  ＬＣＤ、９０２  キーボード、９０３  マウス、９０４  ＦＤＤ、９０５  ＣＤＤ、９０６  プリンタ、９１１  ＣＰＵ、９１２  バス、９１３  ＲＯＭ、９１４  ＲＡＭ、９１５  通信ボード、９２０  ＨＤＤ、９２１  オペレーティングシステム、９２２  ウィンドウシステム、９２３  プログラム群、９２４  ファイル群。
【図１】
2014194746.tif 000003
【図２】
2014194746.tif 000004
【図３】
2014194746.tif 000005
【図４】
2014194746.tif 000006
【図５】
2014194746.tif 000007
【図６】
2014194746.tif 000008
【図７】
2014194746.tif 000009