(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024132456
(43)【公開日】2024-10-01
(54)【発明の名称】制御プログラム、制御方法、及び情報処理装置
(51)【国際特許分類】
G06F 13/14 20060101AFI20240920BHJP
G06F 13/36 20060101ALI20240920BHJP
【FI】
G06F13/14 310B
G06F13/36 520Z
【審査請求】未請求
【請求項の数】13
【出願形態】OL
(21)【出願番号】P 2023043222
(22)【出願日】2023-03-17
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.PYTHON
(71)【出願人】
【識別番号】302062931
【氏名又は名称】ルネサスエレクトロニクス株式会社
(74)【代理人】
【識別番号】100103894
【弁理士】
【氏名又は名称】家入 健
(72)【発明者】
【氏名】新井 英一
(57)【要約】
【課題】高速なシミュレーションを適切に行うことが可能な制御プログラムを提供すること。
【解決手段】本開示にかかる制御プログラムは、シミュレーション対象のプログラムを実行する仮想環境V1を備える情報処理装置に対して、制御方法を実行させるものである。仮想環境V1は、バスマスタ101と、インターコネクト102と、インターコネクト102を介してバスマスタ101に接続するバススレーブ103と、を備える。制御方法は、バスマスタ101からバススレーブ103にバスアクセスを行うためのポインタがポインタ保持部1010に保持されているか否かに応じて、異なる経路でバスマスタ101がバススレーブ103にバスアクセスするアクセス処理ステップと、バススレーブ103が、バスマスタ101からのバスアクセスに起因して所定の動作を実行する動作実行ステップと、を備える。
【選択図】
図5
【特許請求の範囲】
【請求項1】
シミュレーション対象のプログラムを実行する仮想環境を備える情報処理装置に対して、制御方法を実行させる制御プログラムであって、
前記仮想環境は、バスマスタと、インターコネクトと、前記インターコネクトを介して前記バスマスタに接続するバススレーブと、を備え、
前記制御方法は、
前記バスマスタから前記バススレーブにバスアクセスを行うためのポインタが保持部に保持されているか否かに応じて、異なる経路で前記バスマスタが前記バススレーブにバスアクセスするアクセス処理ステップと、
前記バススレーブが、前記バスマスタからのバスアクセスに起因して所定の動作を実行する動作実行ステップと、を備え、
前記アクセス処理ステップでは、前記バスマスタは、
前記ポインタが保持されている場合、前記ポインタに基づいて前記バススレーブに直接バスアクセスし、
前記ポインタが保持されていない場合、前記インターコネクトを経由して前記バススレーブにバスアクセスする
制御プログラム。
【請求項2】
前記制御方法は、
前記保持部に前記ポインタが保持されていない場合、前記インターコネクトを介して前記バスマスタが前記バススレーブから前記ポインタを取得するポインタ取得ステップと、
取得された前記ポインタを、前記バスマスタが前記保持部に保持させるポインタ保持ステップと、をさらに備える
請求項1に記載の制御プログラム。
【請求項3】
前記制御方法は、
シミュレーションの速度が異なる複数のシミュレーションレベルから、シミュレーションレベルを選択するレベル選択ステップをさらに備え、
前記アクセス処理ステップでは、前記バスマスタは、選択されたシミュレーションレベルに対応する経路で前記バススレーブにバスアクセスする
請求項1又は2に記載の制御プログラム。
【請求項4】
前記アクセス処理ステップでは、前記バスマスタは、
前記レベル選択ステップにおいて速度重視のシミュレーションレベルが選択された場合、前記バススレーブに直接バスアクセスし、
前記速度重視のシミュレーションレベル以外のシミュレーションレベルが選択された場合、前記インターコネクトを経由して前記バススレーブにバスアクセスする
請求項3に記載の制御プログラム。
【請求項5】
前記仮想環境は、前記バスマスタから前記バススレーブへのバスアクセスにおいて経由される第1インターコネクトと、経由されない第2インターコネクトと、を含む複数の前記インターコネクトを有し、
前記アクセス処理ステップでは、前記バスマスタから前記第1インターコネクトにバスアクセスを行うための経由ポインタが前記保持部に保持されているか否かにさらに応じて、異なる経路で前記バスマスタが前記バススレーブにバスアクセスし、
前記アクセス処理ステップでは、前記バスマスタは、前記ポインタ及び前記経由ポインタが保持されている場合、選択されたシミュレーションレベルに対応する経路で前記バススレーブにバスアクセスする
請求項3に記載の制御プログラム。
【請求項6】
前記制御方法は、
前記保持部に前記経由ポインタが保持されていない場合、前記バスマスタが前記第1インターコネクトから前記経由ポインタを取得する経由ポインタ取得ステップと、
取得された前記経由ポインタを、前記バスマスタが前記保持部に保持させる経由ポインタ保持ステップと、をさらに備える
請求項5に記載の制御プログラム。
【請求項7】
前記アクセス処理ステップでは、前記バスマスタは、
前記レベル選択ステップにおいて速度重視のシミュレーションレベルが選択された場合、前記バススレーブに直接バスアクセスし、
前記速度重視のシミュレーションレベル以外の所定のシミュレーションレベルが選択された場合、前記第1インターコネクトを経由し、かつ、前記第2インターコネクトを経由しない経路で、前記バススレーブにバスアクセスする
請求項5に記載の制御プログラム。
【請求項8】
前記仮想環境は、前記バスマスタから前記バススレーブへのバスアクセスを制限する機能を有するIP(Intellectual Property)部を前記第1インターコネクトとして備える
請求項5に記載の制御プログラム。
【請求項9】
前記仮想環境は、複数の前記第1インターコネクトを備え、
複数の前記第1インターコネクトは、前記バスマスタと前記第2インターコネクトとの間、及び、前記第2インターコネクトと前記バススレーブとの間、にそれぞれ少なくとも1つ配置されている
請求項5に記載の制御プログラム。
【請求項10】
シミュレーション対象のプログラムを実行する仮想環境を備える情報処理装置が実行する制御方法であって、
前記仮想環境は、バスマスタと、インターコネクトと、前記インターコネクトを介して前記バスマスタに接続するバススレーブと、を備え、
前記バスマスタから前記バススレーブにバスアクセスを行うためのポインタが保持部に保持されているか否かに応じて、異なる経路で前記バスマスタが前記バススレーブにバスアクセスするアクセス処理ステップと、
前記バススレーブが、前記バスマスタからのバスアクセスに起因して所定の動作を実行する動作実行ステップと、を備え、
前記アクセス処理ステップでは、前記バスマスタは、
前記ポインタが保持されている場合、前記ポインタに基づいて前記バススレーブに直接バスアクセスし、
前記ポインタが保持されていない場合、前記インターコネクトを経由して前記バススレーブにバスアクセスする
制御方法。
【請求項11】
前記保持部に前記ポインタが保持されていない場合、前記インターコネクトを介して前記バスマスタが前記バススレーブから前記ポインタを取得するポインタ取得ステップと、
取得された前記ポインタを、前記バスマスタが前記保持部に保持させるポインタ保持ステップと、をさらに備える
請求項10に記載の制御方法。
【請求項12】
シミュレーション対象のプログラムを実行する仮想環境を備える情報処理装置であって、
前記仮想環境は、バスマスタと、インターコネクトと、前記インターコネクトを介して前記バスマスタに接続するバススレーブと、を備え、
前記バスマスタは、
前記バスマスタから前記バススレーブにバスアクセスを行うためのポインタを保持する保持部と、
前記ポインタが保持部に保持されているか否かに応じて、異なる経路で前記バススレーブにバスアクセスするアクセス処理部と、を有し、
前記バススレーブは、
前記バスマスタからのバスアクセスに起因して所定の動作を実行する動作実行部を有し、
前記アクセス処理部は、
前記ポインタが保持されている場合、前記ポインタに基づいて前記バススレーブに直接バスアクセスし、
前記ポインタが保持されていない場合、前記インターコネクトを経由して前記バススレーブにバスアクセスする
情報処理装置。
【請求項13】
前記バスマスタは、前記ポインタを取得するポインタ取得部をさらに備え、
前記ポインタ取得部は、前記ポインタが保持されていない場合、前記インターコネクトを介して前記バススレーブから前記ポインタを取得し、
前記保持部は、取得された前記ポインタを保持する
請求項12に記載の情報処理装置。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、制御プログラム、制御方法、及び情報処理装置に関し、例えば、仮想環境を実現可能な制御プログラム、制御方法、及び情報処理装置に関する。
【背景技術】
【0002】
仮想環境を用いてソフトウェアを実行させ、シミュレーションを行う技術が知られている。関連する技術として、特許文献1は、所定の組込み機器用の組込みプログラムを実行する仮想環境を備える情報処理装置を開示する。
【0003】
特許文献1が開示する情報処理装置は、組込みプログラムのシミュレーションの実行中に、周辺IP(Intellectual Property)のレジスタへのRead又はWriteを行うためのバスアクセスが発生した場合、仮想CPU(Central Processing Unit)部は、アクセス先のアドレスやサイズを含むRead又はWriteのアクセス命令であるトランザクションを、仮想バス部に向けて送信する。仮想バス部のアクセス処理部は、バスアクセスを受け付けて、バスアクセスのアクセス先がアクセス先リストに存在するか否かを判定する。アクセス先がアクセス先リストに存在する場合、アクセス処理部は、アクセス先がスタブ領域か否かを判定する。アクセス先がスタブ領域である場合、アクセス処理部は、トランザクションに基づいてスタブ領域へ直接アクセスを行う。また、アクセス先がスタブ領域でない場合、アクセス処理部は、アクセス先へトランザクションを送信する。
【先行技術文献】
【特許文献】
【0004】
【発明の概要】
【発明が解決しようとする課題】
【0005】
SoC(System on a Chip)のバストポロジは、年々複雑化しており、バストランザクションのシミュレーション高速化が重要視されている。通常、バストポロジを含むシミュレータの場合、バスマスタからバススレーブまでの間のバスインターコネクトのバスアクセスAPI(Application Programming Interface)を順々にコールすること(例えば、SystemCのb_transport等)で、writeやreadなどのバスアクセスを行う。インターコネクトを経由して、バスマスタからバススレーブへのAPIアクセスを行う場合、インターコネクトの数に比例してシミュレーション速度が低下する。特許文献1に開示されているような情報処理装置には、シミュレーションを高速化することが求められている。
【0006】
その他の課題と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
【課題を解決するための手段】
【0007】
一実施の形態によれば、本開示にかかる制御プログラムは、シミュレーション対象のプログラムを実行する仮想環境を備える情報処理装置に対して、制御方法を実行させる制御プログラムである。仮想環境は、バスマスタと、インターコネクトと、インターコネクトを介してバスマスタに接続するバススレーブと、を備える。制御方法は、アクセス処理ステップと、動作実行ステップと、を備える。アクセス処理ステップは、バスマスタからバススレーブにバスアクセスを行うためのポインタが保持部に保持されているか否かに応じて、異なる経路でバスマスタがバススレーブにバスアクセスする。動作実行ステップは、バススレーブが、バスマスタからのバスアクセスに起因して所定の動作を実行する。アクセス処理ステップでは、バスマスタは、ポインタが保持されている場合、ポインタに基づいてバススレーブに直接バスアクセスし、ポインタが保持されていない場合、インターコネクトを経由してバススレーブにバスアクセスする
【0008】
一実施の形態によれば、本開示にかかる制御方法は、シミュレーション対象のプログラムを実行する仮想環境を備える情報処理装置が実行する制御方法である。仮想環境は、バスマスタと、インターコネクトと、インターコネクトを介してバスマスタに接続するバススレーブと、を備える。制御方法は、アクセス処理ステップと、動作実行ステップと、を備える。アクセス処理ステップでは、バスマスタからバススレーブにバスアクセスを行うためのポインタが保持部に保持されているか否かに応じて、異なる経路でバスマスタがバススレーブにバスアクセスする。動作実行ステップでは、バススレーブが、バスマスタからのバスアクセスに起因して所定の動作を実行する。アクセス処理ステップでは、バスマスタは、ポインタが保持されている場合、ポインタに基づいてバススレーブに直接バスアクセスし、ポインタが保持されていない場合、インターコネクトを経由してバススレーブにバスアクセスする。
【0009】
一実施の形態によれば、本開示にかかる情報処理装置は、シミュレーション対象のプログラムを実行する仮想環境を備える情報処理装置である。仮想環境は、バスマスタと、インターコネクトと、インターコネクトを介してバスマスタに接続するバススレーブと、を備える。バスマスタは、保持部と、アクセス処理部と、を有する。保持部は、バスマスタからバススレーブにバスアクセスを行うためのポインタを保持する。アクセス処理部は、ポインタが保持部に保持されているか否かに応じて、異なる経路でバススレーブにバスアクセスする。バススレーブは、バスマスタからのバスアクセスに起因して所定の動作を実行する動作実行部を有する。アクセス処理部は、ポインタが保持されている場合、ポインタに基づいてバススレーブに直接バスアクセスし、ポインタが保持されていない場合、インターコネクトを経由してバススレーブにバスアクセスする。
【発明の効果】
【0010】
前記一実施の形態によれば、高速なシミュレーションを適切に行うことが可能な制御プログラム、制御方法、及び情報処理装置を提供することができる。
【図面の簡単な説明】
【0011】
【
図1】
図1は、実施形態1にかかる情報処理装置の構成を示すブロック図である。
【
図2】
図2は、実施形態1にかかる仮想環境を模式的に示す図である。
【
図3】
図3は、実施形態1にかかるバスアクセス処理を模式的に示す図である。
【
図4】
図4は、実施形態1にかかるバスアクセス処理を模式的に示す図である。
【
図5】
図5は、実施形態1にかかるバスアクセス処理の流れを説明するためのフローチャートである。
【
図6】
図6は、実施形態2にかかる情報処理装置のハードウェア構成を説明するためのブロック図である。
【
図7】
図7は、実施形態2にかかるソフトウェア構成を説明するためのブロック図である。
【
図8】
図8は、
図7で示されるソフトウェア構成におけるデータの流れを模式的に示す図である。
【
図9】
図9は、実施形態2にかかるバスアクセス処理の流れを説明するためのフローチャートである。
【
図10】
図10は、実施形態3にかかるソフトウェア構成を説明するためのブロック図である。
【
図11】
図11は、
図10で示されるソフトウェア構成におけるデータの流れを模式的に示す図である。
【
図12】
図12は、実施形態3にかかるバスアクセス処理の流れを説明するためのフローチャートである。
【
図13】
図13は、実施形態4にかかるソフトウェア構成を説明するためのブロック図である。
【
図14】
図14は、
図13で示されるソフトウェア構成におけるデータの流れを模式的に示す図である。
【
図15】
図15は、実施形態4にかかるバスマスタからガードにバスアクセスするための経由ポインタを取得する処理の流れを説明するためのフローチャートである。
【
図16】
図16は、実施形態4にかかるバスアクセス処理の流れを説明するためのフローチャートである。
【
図17】
図17は、実施形態4にかかる複数の第1インターコネクトを備える仮想環境を示す図である。
【発明を実施するための形態】
【0012】
上述した課題に対し、シミュレーション高速化のためのバスアクセスとして、バススレーブのメモリのポインタに対して、バスマスタが、値を直接読み書きする手法(SystemCのDMIアクセス等)を用いることが考えられる。このような手法用いた場合、インターコネクトを介さず、バスマスタからバススレーブに直接アクセスを行うことができるので、シミュレーションを高速化することができる。
【0013】
しかしながら、このような手法は、Read又はWriteを実行するバススレーブ(例えば、ROM(Read Only Memory)やRAM(Random Access Memory))に対しては使用することができるが、バスマスタからのアクセスに応じてRead又はWrite以外のスレーブ動作を行うように構成されたバススレーブに対しては使用することができない。
【0014】
例えば、バススレーブがタイマである場合を想定する。この場合、バスマスタは、タイマにバスアクセスし、タイマの記憶領域に対してタイマの起動をリクエストする。タイマは、バスマスタからのリクエストに応じて、タイマ動作を実行する。そのため、Read又はWriteを行うバススレーブに使用できる上述の手法を、Read又はWrite以外の動作を実行するタイマのようなバススレーブには適用できない。
【0015】
さらに近年は、ROMやRAMに対してもFuSa(Functional Safety:機能安全)やSecurity目的のスレーブ動作が実装される場合が多い。FuSaやSecurityを目的としないROMやRAMがバススレーブとして用いられる機会は減少している。そのため、上述したような手法が適用される範囲は狭まってきており、近年では、上記手法を用いることでシミュレーションの高速化を図ることが難しくなっている。そのため、シミュレーション速度の低下に繋がっている。
【0016】
説明の明確化のため、以下の記載及び図面は、適宜、省略、及び簡略化がなされている。また、様々な処理を行う機能ブロックとして図面に記載される各要素は、ハードウェア的には、CPU、メモリ、その他の回路で構成することができ、ソフトウェア的には、CPUがメモリに格納されたプログラムを実行することによって実現される。したがって、これらの機能ブロックがハードウェアのみ、ソフトウェアのみ、またはそれらの組合せによっていろいろな形で実現できることは当業者には理解されるところであり、いずれかに限定されるものではない。なお、各図面において、同一の要素には同一の符号が付されており、必要に応じて重複説明は省略されている。
【0017】
プログラムは、様々なタイプの非一時的なコンピュータ可読媒体(non-transitory computer readable medium)又は実体のある記憶媒体(tangible storage medium)に格納されてもよい。限定ではなく例として、非一時的なコンピュータ可読媒体又は実体のある記憶媒体は、RAM、ROM、フラッシュメモリ、SSD(solid-state drive)又はその他のメモリ技術、CD-ROM、DVD(digital versatile disc)、Blu-ray(登録商標)ディスク又はその他の光ディスクストレージ、磁気カセット、磁気テープ、磁気ディスクストレージ又はその他の磁気ストレージデバイスを含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体(transitory computer readable medium)又は通信媒体上で送信されてもよい。限定ではなく例として、一時的なコンピュータ可読媒体又は通信媒体は、電気的、光学的、音響的、又はその他の形式の伝搬信号を含む。
【0018】
<実施形態1>
(情報処理装置1000の構成)
初めに、
図1を参照して、実施形態1について説明する。
図1は、本実施形態にかかる情報処理装置1000の構成を示すブロック図である。情報処理装置1000は、シミュレーション対象のプログラムを実行する仮想環境V1を備えている。情報処理装置1000は、本実施形態にかかる制御プログラムを実行することで、上述したメモリ上に仮想環境V1を実現し得る。
【0019】
仮想環境V1は、バスマスタ101と、インターコネクト102と、インターコネクトを介してバスマスタ101に接続するバススレーブ103と、を備えている。バススレーブ103は、バスマスタ101からのバスアクセスに起因して所定の動作を実行する動作実行部1030を備えている。
【0020】
バスマスタ101は、ポインタ保持部1010及びアクセス処理部1011を備えている。ポインタ保持部1010は、バスマスタ101からバススレーブ103へのバスアクセスを行うためのポインタを保持する。
【0021】
アクセス処理部1011は、ポインタがポインタ保持部1010に保持されているか否かに応じて異なる経路でバススレーブ103にバスアクセスする。また、アクセス処理部1011は、バススレーブ103に所定の動作を実行させる。そして、アクセス処理部1011は、ポインタ保持部1010にポインタが保持されている場合、ポインタに基づいてバススレーブ103に直接バスアクセスし、ポインタが保持されていない場合、インターコネクトを経由してバススレーブ103にバスアクセスする。
【0022】
ここで、
図2を参照して、仮想環境V1について説明する。
図2は、仮想環境V1を模式的に示す図である。仮想環境V1は、バスマスタ101と、インターコネクト102-1、102-2、・・・、102-5と、これらのインターコネクトを介してバスマスタ101に接続するバススレーブ103と、を備えている。以下では、インターコネクト102-1、102-2、・・・、102-5のそれぞれを、単にインターコネクト102と称して説明する場合がある。
【0023】
インターコネクト102の数が増えるほど、バスマスタ101からバススレーブ103へのバスアクセスにかかる時間は長くなる。例えば、プログラムの開発段階においてシミュレーションを行う場合、インターコネクト102の数や構成によっては、シミュレーションにかかる時間が長くなり、効率的なシミュレーションを行うことが難しい場合がある。
【0024】
図3及び
図4は、本実施形態にかかるバスアクセス処理を模式的に示す図である。なお、ここでは、インターコネクト102を1つのみ示している。図に示されるts1及びts2は、バスマスタ101からバススレーブ103にバスアクセスを行うためのポインタを示している。
【0025】
図3は、バスマスタ101とバススレーブ103との間にあるインターコネクト102のバスアクセスAPIを順々にコールする場合の処理F1を示している。また、
図4は、バスマスタ101が、ポインタに基づいて、バススレーブ103に直接バスアクセスする処理F2を示している。
【0026】
バスマスタ101のアクセス処理部1011は、ポインタ保持部1010にポインタが保持されていない場合、インターコネクト102を経由してバススレーブ103にバスアクセスする。バススレーブ103の動作実行部1030は、アクセス処理部1011からのバスアクセスに起因して、所定の動作を実行する。
【0027】
また、アクセス処理部1011は、ポインタがポインタ保持部1010に保持されている場合、当該ポインタに基づいて、バススレーブ103に直接バスアクセスする。バススレーブ103の動作実行部1030は、バスマスタ101からのバスアクセスに起因して、例えば、コード1031又は1032に示される命令に従いタイマを起動する。
【0028】
このようにすることで、アクセス処理部1011は、ポインタが保持されている場合、高速なシミュレーションを行うことができる。また、バススレーブ103は、バスマスタ101からのバスアクセスに起因して、所定の動作を実行することができるので、上述したFuSaやSecurity目的と用途としたバススレーブをシミュレーションに用いることができる。
【0029】
(バスアクセス処理の流れ)
続いて、
図5を参照して、本実施形態にかかるバスアクセス処理について説明する。
図5は、本実施形態にかかるバスアクセス処理の流れを説明するためのフローチャートである。
【0030】
まず、シミュレーション対象のプログラムを用いたシミュレーションの実行中に、バスマスタ101からバススレーブ103へのバスアクセスが発生したとする。バスマスタ101のアクセス処理部1011は、ポインタ保持部1010を参照し、該当アドレスのポインタがポインタ保持部1010に保持されているか否かを判定する(S1)。
【0031】
該当アドレスのポインタが保持されていると判定した場合(S1のYES)、アクセス処理部1011は、当該ポインタを用いてバススレーブ103に直接バスアクセスする(S4)。
【0032】
該当アドレスのポインタが保持されていないと判定した場合(S1のNO)、アクセス処理部1011は、インターコネクトを経由してバススレーブ103にバスアクセスする(S2)。アクセス処理部1011は、バススレーブ103に所定の動作を実行させる(S3)。バススレーブ103の動作実行部1030は、バスマスタ101からのバスアクセスに起因して所定の動作を実行する。
【0033】
以上説明したように、本実施形態にかかる情報処理装置1000が実現する仮想環境V1では、アクセス処理部1011は、ポインタ保持部1010にポインタが保持されているか否かに応じて異なる経路でバススレーブ103にバスアクセスする。アクセス処理部1011は、ポインタが保持されている場合、ポインタに基づいてバススレーブ103に直接バスアクセスし、ポインタが保持されていない場合、インターコネクト102を経由してバススレーブ103にバスアクセスする。このようにすることで、本実施形態にかかる情報処理装置1000によれば、高速なシミュレーションを適切に行うことができる。
【0034】
<実施形態2>
続いて、実施形態2について説明する。実施形態2は、上述した実施形態1の具体例である。
【0035】
(情報処理装置100の構成)
まず、
図6を参照して、本実施形態にかかる情報処理装置100について説明する。
図6は、情報処理装置100のハードウェア構成を説明するためのブロック図である。情報処理装置100は、上述した情報処理装置1000の一例である。情報処理装置100は、シミュレーション対象のプログラムを実行する仮想環境を備えている。
【0036】
情報処理装置100は、例えば、マイクロコンピュータ(不図示)の仮想環境を実現するコンピュータシステムの一例である。情報処理装置100は、表示装置200及び入力装置300と接続される。
【0037】
表示装置200は、情報処理装置100からの指示により画面表示を行う。入力装置300は、情報処理装置100に対してユーザの指示の入力を行う。入力装置300は、例えば、ユーザから文字情報の入力を受け付けるキーボードや、表示装置200の画面上における任意の位置を指定し、その位置に表示されていたアイコン等に応じた指示の入力を受け付けるマウス等である。但し、情報処理装置100に接続される装置はこれらに限定されない。
【0038】
情報処理装置100は、CPU110と、メインメモリ120と、ハードディスク130とを備える。CPU110は、所定のプログラムを読み込み実行する制御装置である。メインメモリ120は、例えば、RAM等の揮発性記憶装置である。ハードディスク130は、不揮発性記憶装置である。ハードディスク130は、OS(Operating System)131、仮想環境プログラム(制御プログラム)132、シミュレーション用データ133、及び対象プログラム135等を記憶する。
【0039】
OS131は、情報処理装置100を動作させるための基本ソフトである。仮想環境プログラム132は、例えば、組込み機器であるマイクロコンピュータをソフトウェア的に実現し、当該マイクロコンピュータ上での対象プログラム135の実行をシミュレーションするためのソフトウェアである。仮想環境プログラム132は、シミュレーション対象のプログラムを実行する仮想環境を備える情報処理装置に対して、制御方法を実行させる。仮想環境は、バスマスタと、インターコネクトと、インターコネクトを介してバスマスタに接続するバススレーブと、を備えている。制御方法は、バスマスタからバススレーブにバスアクセスを行うためのポインタが保持部に保持されているか否かに応じて、異なる経路でバスマスタがバススレーブにバスアクセスするアクセス処理ステップを備えている。また、制御方法は、バススレーブが、バスマスタからのバスアクセスに起因して所定の動作を実行する動作実行ステップをさらに備えている。アクセス処理ステップでは、バスマスタは、ポインタが保持されている場合、ポインタに基づいてバススレーブに直接バスアクセスする。また、アクセス処理ステップでは、バスマスタは、ポインタが保持されていない場合、インターコネクトを経由してバススレーブにバスアクセスする。
【0040】
シミュレーション用データ133は、前記シミュレーションに用いられる各種データである。シミュレーション用データ133は、例えば、シミュレータの各機能を実現するプログラム、シミュレーションの対象となる機器の情報を含み得る。対象プログラム135は、シミュレーションの対象となるプログラムである。対象プログラム135は、例えば、所定の組込み機器上で実行するために開発されたソフトウェアなどであってよい。対象プログラム135は、デバッグ等の目的により、仮想環境プログラム132により実行される。
【0041】
ここで、CPU110は、ハードディスク130に保存されたOS131、仮想環境プログラム132、シミュレーション用データ133、及び対象プログラム135をメインメモリ120にロードする。そして、CPU110は、メインメモリ120にロードされたOS131及び仮想環境プログラム132を実行する。また、CPU110は、仮想環境プログラム132の実行により対象プログラム135を実行する。そのため、情報処理装置100は、対象プログラム135を実行する仮想環境を備えるものといえる。
【0042】
(ソフトウェア構成)
続いて、
図7及び
図8を参照して、本実施形態にかかるソフトウェア構成について説明する。
図7は、本実施形態にかかるソフトウェア構成を説明するためのブロック図である。また、
図8は、
図7で示されるソフトウェア構成におけるデータの流れを模式的に示す図である。なお、同図において示される一方向矢印は、情報(データ又は信号など)の流れを端的に示したものであり、情報の双方向性を排除するものではない。以降の図においても同様である。また、
図8では、インターコネクトの例として、バス2のみを示しているが、インターコネクトの数及び種別はこれに限られない。
【0043】
図7では、OS131上で仮想環境プログラム132が動作し、仮想環境プログラム132上で対象プログラム135が動作することを示している。
【0044】
仮想環境プログラム132は、本実施形態にかかる仮想環境V2を実現するためのプログラムの一例である。図に示されるように、仮想環境V2は、バスマスタ1、バス2、及び周辺IP部1320を備えている。バスマスタ1、バス2、及び周辺IP部1320のそれぞれは、仮想環境プログラム132を実行することで、メインメモリ120上において仮想的に実現される。バスマスタ1、バス2、及び周辺IP部1320は、例えば、クラスとして定義され、仮想環境プログラム132の実行時にそれぞれがインスタンス化されることにより実現される。
【0045】
図8に示されるように、仮想環境V2は、バスマスタ1と、バス2を介してバスマスタ1に接続するバススレーブ3と、を備えている。ここでは、インターコネクトの一例としてバス2を用いて説明する。
【0046】
バスマスタ1は、上述したバスマスタ101の一例である。バスマスタ1は、ポインタ要求部10、ポインタ保持部11、及びアクセス処理部12を備えている。バスマスタ1は、例えば、CPU又はDMA(Direct Memory Access)コントローラなどであるが、これらに限られない。
【0047】
ポインタ要求部10は、バス2を介して、ポインタを取得するポインタ取得部として機能する。ポインタ要求部10は、ポインタ保持部11にポインタが保持されていない場合、バス2を介してバススレーブ3からポインタを取得する。具体的には、ポインタ要求部10は、バススレーブ3に対し、ポインタの通知を要求するためのポインタ要求を出力する。ポインタ要求部10は、取得したポインタをポインタ保持部11に保持させる。
【0048】
ポインタ保持部11は、上述したポインタ保持部1010の一例である。ポインタ保持部11は、バスマスタ1からバススレーブ3へのバスアクセスを行うためのポインタを保持する。
【0049】
アクセス処理部12は、上述したアクセス処理部1011の一例である。アクセス処理部12は、ポインタがポインタ保持部11に保持されているか否かに応じて異なる経路でバススレーブ3にバスアクセスする。また、アクセス処理部12は、バススレーブ3に所定の動作を実行させる。
【0050】
アクセス処理部12は、ポインタ保持部11にポインタが保持されている場合、ポインタに基づいてバススレーブ3に直接バスアクセスする。
図8では、当該バスアクセスの流れが矢印A1で示されている。ポインタ保持部11にポインタが保持されていない場合、アクセス処理部12は、バス2経由してバススレーブ3にバスアクセスする。具体的には、アクセス処理部12は、バススレーブ3に対するアクセス要求をアクセス伝達部21に出力し、アクセス伝達部21を介してバススレーブ3へのアクセス要求を行う。
【0051】
バス2は、インターコネクトの一例である。バス2は、ポインタ伝達部20及びアクセス伝達部21を備えている。
【0052】
ポインタ伝達部20は、バスマスタ1とバススレーブ3との間で、ポインタに関するデータを伝達する。例えば、ポインタ伝達部20は、バスマスタ1から受け取ったポインタ要求をバススレーブ3に伝達する。また、ポインタ伝達部20は、バススレーブ3から通知されたポインタをポインタ要求部10に伝達する。
【0053】
アクセス伝達部21は、バスマスタ1とバススレーブ3との間で、バスアクセスに関するデータを伝達する。例えば、アクセス伝達部21は、バスマスタ1からのアクセス要求をバススレーブ3に伝達する。
【0054】
周辺IP部1320は、バススレーブ3を備えている。バススレーブ3は、上述したバススレーブ103の一例である。バススレーブ3は、バスマスタ1からのバスアクセスに起因して、所定の動作を実行する機能を有している。バススレーブ3は、例えば、レジスタに対応する機能を備えるものであってよい。この場合、バススレーブ3は、本来はハードウェアであるレジスタをソフトウェア上で実現したものである。レジスタに限らず、他のIPがバススレーブ3として用いられてもよい。
【0055】
バススレーブ3は、ポインタ通知部30、処理情報保持部31、及び動作実行部32を備えている。ポインタ通知部30は、バスマスタ1からのポインタ要求に応じて、バス2を介して、バスマスタ1にポインタを通知する。
【0056】
処理情報保持部31は、動作実行部32の処理に関連する処理情報を保持する。例えば、処理情報保持部31は、上述したような、Read又はWriteの機能を単に有するものであってもよい。処理情報保持部31は、例えば、アクセス処理部12から動作実行部32への書き込みがあった場合、書き込み値を保持する。処理情報は、バスマスタ1からの要求に応じて用いられ得る。例えば、バスマスタ1のアクセス処理部12は、処理情報保持部31に保持された処理情報を取得して、動作実行部32において所定の動作が実行されたか否かを判定する。
【0057】
動作実行部32は、上述した動作実行部1030の一例である。動作実行部32は、バスマスタ1からのバスアクセスに起因して所定の動作を実行する。動作実行部32は、例えば、APIに対応する機能を有する。
【0058】
ここで、所定の動作は、バスマスタ1からのバスアクセスをトリガとして、動作実行部32が行う動作を示している。動作実行部32は、バスマスタ1から直接バスアクセスされた場合、及び、バスマスタ1からバス2を経由してバスアクセスされた場合に、所定の動作を実行する。所定の動作は、例えば、タイマの起動、A/D変換などであるが、これらに限られない。
【0059】
例えば、先述した手法が適用可能な、Read又はWriteの機能のみを備えるメモリ等におけるRead又はWriteの処理は、ここでは、バスマスタ1からのバスアクセスに起因する所定の動作には含まれない。例えば、上述した処理情報の例では、動作実行部32は、アクセス処理部12からの要求に応じて、処理情報保持部31に保持された処理情報を読み出して、動作実行部32に返す処理を行う。しかしながら、このような単なるRead動作などは、ここでは、バスマスタ1からのバスアクセスに起因する所定の動作には含まれない。
【0060】
(バスアクセス処理の流れ)
続いて、
図9を参照して、本実施形態にかかるバスアクセス処理について説明する。
図9は、本実施形態にかかるバスアクセス処理の流れを説明するためのフローチャートである。
【0061】
まず、対象プログラム135のシミュレーションの実行中に、バスマスタ1からバススレーブ3へのバスアクセスが発生したとする。バスマスタ1のアクセス処理部12は、ポインタ保持部11を参照し、該当アドレスのポインタが保持されているか否かを判定する(S11)。ポインタは、バススレーブ3の動作実行部32に対応するAPIをコールするための情報である。
【0062】
該当アドレスのポインタが保持されていると判定した場合(S11のYES)、アクセス処理部12は、当該ポインタを用いてバススレーブ3の動作実行部32に直接バスアクセスする(S21)。これにより、動作実行部32は動作を実行する(S19)。また、動作実行部32は、処理情報保持部31に対して読み書きを行い、処理情報保持部31に処理情報を保持させる(S20)。処理情報は、例えば、動作実行部32の動作に対応する書き込み値である。処理情報保持部31は、メモリ領域に処理情報を保持する。
【0063】
ステップS11において、該当アドレスのポインタが保持されていないと判定した場合(S11のNO)、バスマスタ1のポインタ要求部10は、バススレーブ3に対するポインタ要求を出力する(S12)。これにより、ポインタ要求部10は、バススレーブ3に対してポインタの通知を要求する。
【0064】
バス2のポインタ伝達部20は、ポインタ要求を伝達する(S13)。バススレーブ3のポインタ通知部30は、ポインタ要求に応じてポインタを通知する(S14)。ポインタ伝達部20は、通知されたポインタをポインタ要求部10に伝達する(S15)。これにより、ポインタ要求部10は、バス2を経由してバススレーブ3からポインタを取得することができる。
【0065】
ポインタ要求部10は、取得したポインタをポインタ保持部11に保持させる(S16)。このようにすることで、次回のバスアクセス時において、アクセス処理部12は、ポインタ保持部11を参照し、動作実行部32に直接バスアクセスすることができる。
【0066】
また、アクセス処理部12は、バス2を経由してバススレーブ3へのバスアクセスを行う(S17)。アクセス処理部12は、バススレーブ3に対するアクセス要求をアクセス伝達部21に出力する。これにより、アクセス処理部12はバススレーブ3へのバスアクセスを要求する。アクセス伝達部21は、アクセス要求を伝達する(S18)。
【0067】
動作実行部32は、アクセス要求を受け取り、動作を実行する(S19)。動作実行部32は、動作の実行に関する値を処理情報保持部31に保持させる(S20)。
【0068】
なお、上述した処理の順序は一例である。処理の順序は適宜変更され得る。例えば、上述の説明では、ステップS11のNOの場合において、ステップS12~S16においてポインタの要求及び保持を行い、ステップS17~S20においてバススレーブ3へのバスアクセス及び値の保持を行ったが、先にステップS17~S20の処理を行い、その後にステップS12~S16の処理を行うようにしてもよい。
【0069】
以上説明したように、本実施形態にかかる仮想環境プログラム132が実行する処理では、仮想環境V2において、バススレーブ3は、バスマスタ1からのバスアクセスに応じて所定の動作を実行する動作実行部32を有している。また、バスマスタ1は、バススレーブ3へのバスアクセスを行うためのポインタを保持するポインタ保持部11と、ポインタがポインタ保持部11に保持されているか否かに応じて、異なる経路でバススレーブにバスアクセスするアクセス処理部12と、を有している。
【0070】
アクセス処理部12は、ポインタ保持部11にポインタが保持されている場合、ポインタに基づいてバススレーブに直接バスアクセスし、ポインタが保持されていない場合、バス2を経由してバススレーブにバスアクセスする。また、ポインタ要求部10は、ポインタが保持されていない場合に、バス2を介してバススレーブ3からポインタを取得する。
【0071】
このようにすることで、シミュレーション開始後の初回のバスアクセスでは、バスマスタ1は、バス2を経由してバススレーブ3へのバスアクセスを行いつつ、動作実行部32に対応するAPIをコールするためのポインタを取得する。これにより、バスマスタ1は、次回以降のバスアクセスにおいて、当該ポインタを用いて動作実行部32のAPIを直接コールして、バスアクセスを行うことができる。
【0072】
このようにすることで、インターコネクトが複数存在した場合であっても、2回目以降のバスアクセスにおいて、インターコネクトの数に依存せずAPIコール1回分の時間で、スレーブ動作を損なわずバスアクセスが可能となる。これにより、本実施形態にかかる情報処理装置1000によれば、ハードウェアと同様のバス構成のまま、スレーブ動作を損なわずに、バスアクセスシミュレーションの高速化を適切に実現することができる。
【0073】
<実施形態3>
続いて、実施形態3について説明する。実施形態3は、上述した実施形態2の変形例である。実施形態2にかかる仮想環境V2は、初回のシミュレーションでは、インターコネクトであるバス2を経由してバスアクセスを行い、2回目以降のシミュレーションではバス2を経由せずに直接バスアクセスを行うものであった。本実施形態にかかる仮想環境V3は、2回目以降のシミュレーションにおいて、インターコネクトを経由するか否かの選択を可能とするものである。
【0074】
以下では、実施形態2と異なる点を中心に説明し、実施形態2と重複する点については適宜説明を省略する。本実施形態にかかる情報処理装置100aの構成は、実施形態2にかかる情報処理装置100(
図6を参照)と概ね同様であるので図示を省略する。情報処理装置100aのハードディスク130は、仮想環境プログラム132に代えて仮想環境プログラム132aを備えている。情報処理装置100aは、仮想環境プログラム132aを実行することで、仮想環境V3を実現する。
【0075】
(ソフトウェア構成)
図10及び
図11を参照して、本実施形態にかかるソフトウェア構成について説明する。
図10は、本実施形態にかかるソフトウェア構成を説明するためのブロック図である。また、
図11は、
図10で示されるソフトウェア構成におけるデータの流れを模式的に示す図である。
【0076】
図10に示されるように、本実施形態にかかる仮想環境プログラム132aは、実施形態2にかかる仮想環境プログラム132(
図7を参照)に加え、レベル選択部4を備えている。レベル選択部4は、ポインタ要求部10に接続している。レベル選択部4は、シミュレーションの速度が異なる複数のシミュレーションレベルから、シミュレーションレベルを選択する。
【0077】
シミュレーションレベルは、シミュレーションにおいて、速度を重視するか、又は精度を重視するか、を示す情報である。シミュレーションレベルは、例えば、速度を重視する「高速」、及び、精度を重視する「高精度」などの2段階で表される。2段階のシミュレーションレベルは、バスマスタ1からバススレーブ3へのバスアクセスの経路にそれぞれ対応する。
【0078】
レベル選択部4は、例えば、入力装置300を介してユーザの入力を受け付けて、シミュレーションレベルを選択する。また、レベル選択部4は、ユーザの入力を受け付けて、シミュレーションレベルを切り替える。レベル選択部4は、選択されたシミュレーションレベルをバスマスタ1のポインタ要求部10に出力する。ポインタ要求部10は、選択されたシミュレーションレベルを図示しない記憶部に記憶する。バスマスタ1のアクセス処理部12aは、選択されたシミュレーションレベルを当該記憶部から取得する。
【0079】
アクセス処理部12aは、レベル選択部4で選択されたレベルに対応する経路でバススレーブ3にバスアクセスする。アクセス処理部12aは、レベル選択部4において速度重視のシミュレーションレベルが選択された場合、バススレーブ3に直接バスアクセスする。また、アクセス処理部12aは、速度重視のシミュレーションレベル以外のシミュレーションレベルが選択された場合、バス2を経由してバススレーブにバスアクセスする。速度重視のシミュレーションレベル以外のシミュレーションレベルは、例えば、精度重視のシミュレーションレベルである。
【0080】
例えば、シミュレーションレベルが「高速」であるとする。アクセス処理部12aは、バス2を経由せずに、バスマスタ1からバススレーブ3に直接バスアクセスする。
図11では、バススレーブ3に直接アクセスする場合の経路が矢印A1で示されている。
【0081】
また、例えば、シミュレーションレベルが「高精度」であるとする。アクセス処理部12aは、バス2を経由してバススレーブ3にバスアクセスする。この場合、アクセス処理部12aは、実施形態2のアクセス処理部12と同様にして、バス2のアクセス伝達部21を経由してバススレーブ3にバスアクセスする。
【0082】
このように、アクセス処理部12aは、選択されたシミュレーションレベルに応じて異なる経路を選択して、当該経路を用いてバススレーブ3へのバスアクセスを行う。このようにすることで、情報処理装置100aは、速度又は精度を重視したシミュレーションを行うことができる。
【0083】
なお、例えば、
図10及び
図11の例では、1つのバスマスタ1と、1つのバススレーブ3のみを示しているが、実際の環境では、複数のバスマスタが1つのバススレーブに対してバスアクセスを行う場合がある。このような場合、バスアクセスの衝突を回避するために、優先度の低いバスマスタは、優先度の高いバスマスタからのバスアクセスが終了するまで待ち状態となる。そのため、待ち状態が解消されるまでの待ち時間が発生する。
【0084】
このような場合、プログラムの実行結果をシミュレートすることはできるが、プログラム実行にかかる時間を正しくシミュレートすることができない。例えば、プログラムの実行結果が正しいことは確認できたとしても、実行にかかる時間が性能目標を満たさない場合がある。したがって、このような場合、ユーザは、精度重視のシミュレーションを行うとよい。
【0085】
(バスアクセス処理の流れ)
続いて、
図12を参照して、本実施形態にかかるバスアクセス処理について説明する。
図12は、本実施形態にかかるバスアクセス処理の流れを説明するためのフローチャートである。なお、初回のシミュレーションにおけるポインタの取得などにかかる処理は、
図9を用いて説明した実施形態2と同様である。ここでは、シミュレーションが2回目以降であることを前提として説明を行う。
【0086】
まず、レベル選択部4は、シミュレーションレベルが選択されたか否かを判定する(S31)。シミュレーションレベルが選択されたと判定した場合(S31のYES)、レベル選択部4は、選択されたシミュレーションレベルが「高速」であるか、又は「高精度」であるかを判定する(S32)。シミュレーションレベルが「高速」であると判定した場合(S32の「高速」)、アクセス処理部12aは、バス2を経由せず、バススレーブ3に直接バスアクセスする(S33)。
【0087】
シミュレーションレベルが「高精度」であると判定した場合(S32の「高精度」)、又は、シミュレーションレベルが選択されていないと判定した場合(S31のNO)、アクセス処理部12aは、バス2を経由してバスアクセスする(S34)。
【0088】
なお、ここでは、2回目以降のシミュレーションを前提としたが、レベル選択部4は、初回のシミュレーションにおいて、「高速」を選択してもよい。この場合、実施形態2と同様にしてポインタを取得する処理を行うことで、アクセス処理部12aは、初回からバススレーブ3に直接バスアクセスすることができる。
【0089】
以上説明したように、本実施形態にかかる仮想環境プログラム132aが実行する処理では、仮想環境V3において、レベル選択部4は、シミュレーションレベルを選択する。また、バスマスタ1のアクセス処理部12aは、選択されたシミュレーションレベルに対応する経路でバススレーブ3にアクセスする。
【0090】
このように、レベル選択部4を追加することで、シミュレータを作り替えることなく、コンフィグレーションにより、速度重視及び精度重視の両シミュレーションに対応可能となる。特に、Python I/F等による速度・精度シミュレーションの動的切替の要求は多い。具体的には、例えば、Linux(登録商標)ブート等、特に重要でないシミュレーション期間は速度重視でシミュレーションを実行し、ユーザが着目するポイントに到達後は精度重視に切り替えることができる。このようにすることで、効率的にシミュレーションを行うことができる。
【0091】
<実施形態4>
続いて、実施形態4について説明する。実施形態4は、上述した実施形態3の変形例である。実施形態3にかかる仮想環境V3は、選択されたシミュレーションレベルに応じて、対応する2段階の経路を用いたバスアクセスを可能とするものであった。実施形態3では、全てのインターコネクトを省いた速度重視のシミュレーション、又は、全てのインターコネクトを含めた精度重視のシミュレーションという両極端なシミュレーション方法から選択する必要がある。
【0092】
近年、FuSaやSecurity用途のシミュレーションニーズも高まっている。本実施形態は、シミュレーション対象としたいIPにポインタ通知部、ポインタ要求部、及びポインタ保持部を設けることで、任意のIPを含めたバスアクセスに関する高速なシミュレーションを可能とするものである。
【0093】
以下では、実施形態2及び3と異なる点を中心に説明し、これらの実施形態と重複する点については適宜説明を省略する。本実施形態にかかる情報処理装置100bの構成は、実施形態2にかかる情報処理装置100(
図6を参照)と概ね同様であるので図示を省略する。情報処理装置100bのハードディスク130は、仮想環境プログラム132に代えて仮想環境プログラム132bを備えている。情報処理装置100bは、仮想環境プログラム132bを実行することで、仮想環境V4を実現する。仮想環境V4は、複数のインターコネクトを備えている。
【0094】
(ソフトウェア構成)
図13及び
図14を参照して、本実施形態にかかるソフトウェア構成について説明する。
図13は、本実施形態にかかるソフトウェア構成を説明するためのブロック図である。また、
図14は、
図13で示されるソフトウェア構成におけるデータの流れを模式的に示す図である。
【0095】
図14に示されるように、仮想環境V4は、バスマスタ1からバススレーブ3へのバスアクセスにおいて経由される第1インターコネクトと、経由されない第2インターコネクトと、含む複数のインターコネクトを有している。第1インターコネクトは、バスアクセスの経由対象のインターコネクトであり、第2インターコネクトは、バスアクセスの経由対象でないインターコネクトである。バスマスタ1からバススレーブ3へのバスアクセスにおいて、バスマスタ1から出力されたデータは、第1インターコネクトを経由してバススレーブ3に到達する。また、当該バスアクセスにおいて、バスマスタ1から出力されたデータは、第2インターコネクトを経由せずにバススレーブ3に到達する。ここでは、第1インターコネクトはガード5であり、第2インターコネクトはバス2であるものとして説明する。
【0096】
図13に示されるように、本実施形態にかかる仮想環境プログラム132bは、実施形態3にかかる仮想環境プログラム132a(
図10を参照)の周辺IP部1320に対応する周辺IP部1320aを備えている。周辺IP部1320aは、バススレーブ3に加え、ガード5を備えている。ガード5は、バスマスタ1からバススレーブ3へのバスアクセスを制限する機能を有するインターコネクトの一例である。
【0097】
ガード5は、ポインタ通知部50、ポインタ要求部51、ポインタ保持部52、及び動作実行部53を備えている。ポインタ通知部50は、ポインタ要求部10aからの経由ポインタ要求に応じて経由ポインタを通知する。経由ポインタは、ガード5の動作実行部53に対応するAPIをコールするための情報である。
【0098】
ポインタ要求部51は、バススレーブ3のポインタ通知部30に対し、ポインタ要求を出力する。これにより、ポインタ要求部51は、バススレーブ3に対してポインタの通知を要求する。また、ポインタ要求部51は、ポインタ通知部30から取得したポインタを、ポインタ保持部52に保持させる。
【0099】
ポインタ保持部52は、ポインタ要求部51で取得されたポインタを保持する。動作実行部53は、バススレーブ3の動作実行部32にアクセスする。これにより、動作実行部53は、必要なIPのスレーブ動作を損なわずにシミュレーションを実施する。
【0100】
レベル選択部4aは、上述した速度重視及び精度重視のシミュレーションレベルに加え、これらのいずれにも該当しない所定のシミュレーションレベルを選択し得る。レベル選択部4aは、所定のシミュレーションレベルとして、機能安全に関するシミュレーションレベルをさらに選択する。例えば、レベル選択部4aは、上述した「高速」に加え、FuSaに関するシミュレーションレベル「FuSa」を選択可能に構成される。シミュレーションレベル「FuSa」は、機能安全を重視するシミュレーションレベルである。例えば、シミュレーションレベル「FuSa」が選択された場合、シミュレーションレベル「高速」の場合よりも、多くのインターコネクトを経由したバスアクセスによりシミュレーションが実施される。そのため、この場合、速度よりも機能安全を重視したシミュレーションを実施することができる。また、シミュレーションレベル「FuSa」が選択された場合、シミュレーションレベル「高精度」よりも少ないインターコネクトを経由したバスアクセスによりシミュレーションが実施される。そのため、この場合、シミュレーションレベル「高精度」の場合よりも、高速なシミュレーションを実施することができる。本実施形態では、「高速」、「高精度」、及び「FuSa」の3段階のシミュレーションレベルが設定され得る。また、経由するインターコネクトの選択により、さらに多くの段階のシミュレーションレベルが設定され得る。
【0101】
バスマスタ1のポインタ要求部10aは、ポインタ保持部11に経由ポインタが保持されていない場合、ガード5から経由ポインタを取得する経由ポインタ取得部としても機能する。ポインタ要求部10aは、該当アドレスの経由ポインタが保持されていないと判定した場合、ガード5に対する経由ポインタ要求を出力する。これにより、ポインタ要求部10aは、ガード5に対して経由ポインタの通知を要求する。ポインタ要求部10aは、ガード5から取得した経由ポインタをポインタ保持部11に保持させる。
【0102】
アクセス処理部12bは、バスマスタ1からガード5にバスアクセスを行うための経由ポインタがポインタ保持部11に保持されているか否かにさらに応じて、異なる経路でバススレーブ3にバスアクセスする。また、アクセス処理部12bは、レベル選択部4aから出力されたシミュレーションレベルをポインタ要求部10a及び不図示の記憶部を介して取得する。
【0103】
アクセス処理部12bは、ポインタ保持部11にポインタ及び経由ポインタが保持されている場合、レベル選択部4aにおいて選択されたシミュレーションレベルに対応する経路でバススレーブ3にバスアクセスする。例えば、経由ポインタが保持されており、かつ、シミュレーションレベルが、「FuSa」である場合、アクセス処理部12bは、動作実行部53に直接バスアクセスする。また、動作実行部53は、動作実行部32に対してバスアクセスする。これにより、アクセス処理部12bは、バス2を経由せず、ガード5のみを経由して、バススレーブ3に対してバスアクセスする。
図14では、当該バスアクセスにかかる経路が矢印A2で示されている。
【0104】
また、アクセス処理部12bは、レベル選択部4aにおいて速度重視のシミュレーションレベル「高速」が選択された場合、バススレーブ3に直接バスアクセスする。
図14では、当該バスアクセスにかかる経路が矢印A1で示されている。
【0105】
バスマスタ1のポインタ保持部11は、バスマスタ1からガード5にバスアクセスを行うための経由ポインタをさらに保持する。レベル選択部4aは、機能安全に関するシミュレーションレベルをさらに選択する。アクセス処理部12bは、ポインタ及び経由ポインタがポインタ保持部11に保持されている場合、選択されたシミュレーションレベルに対応する経路でバススレーブ3にバスアクセスする。
【0106】
続いて、
図15及び
図16を参照して、本実施形態にかかるバスアクセス処理について説明する。
図15は、本実施形態にかかるバスマスタ1からガード5にバスアクセスするための経由ポインタを取得する処理の流れを説明するためのフローチャートである。また、
図16は、本実施形態にかかるバスアクセス処理の流れを説明するためのフローチャートである。なお、バスマスタ1からバススレーブ3に直接バスアクセスするためのポインタの取得にかかる処理は、
図9を用いて説明した実施形態2と同様である。
【0107】
(経由ポインタを取得する処理の流れ)
まず、
図15を参照して、経由ポインタ取得する処理の流れについて説明する。ここでは、バスマスタ1がガード5にバスアクセスするための経由ポインタの取得にかかる処理について説明する。
【0108】
まず、対象プログラム135のシミュレーションの実行中に、バスマスタ1からバススレーブ3へのバスアクセスが発生したとする。バスマスタ1のアクセス処理部12bは、ポインタ保持部11を参照し、バスマスタ1がガード5にバスアクセスするための経由ポインタが保持されているか否かを判定する(S41)。経由ポインタは、ガード5の動作実行部53に対応するAPIをコールするための情報である。
【0109】
該当アドレスの経由ポインタが保持されていると判定した場合(S41のYES)は処理を終了する。該当アドレスの経由ポインタが保持されていないと判定した場合(S41のNO)、バスマスタ1のポインタ要求部10aは、ガード5に対する経由ポインタ要求を出力する(S42)。これにより、ポインタ要求部10aは、ガード5に対して経由ポインタの通知を要求する。
【0110】
バス2のポインタ伝達部20は、経由ポインタ要求を伝達する(S43)。ガード5のポインタ通知部50は、経由ポインタ要求に応じて経由ポインタを通知する(S44)。ポインタ伝達部20は、通知された経由ポインタをポインタ要求部10aに伝達する(S45)。これにより、ポインタ要求部10aは、バス2を経由してガード5から経由ポインタを取得することができる。
【0111】
ポインタ要求部10aは、取得した経由ポインタをポインタ保持部11に保持させる(S46)。このようにすることで、アクセス処理部12bは、ポインタ保持部11を参照し、動作実行部53に直接バスアクセスすることができる。
【0112】
続いて、ガード5のポインタ要求部51は、バススレーブ3のポインタ通知部30に対し、ポインタ要求を出力する(S47)。これにより、ポインタ要求部51は、バススレーブ3に対してポインタの通知を要求する。また、ポインタ要求部51は、ポインタ通知部30から取得したポインタを、ポインタ保持部52に保持させる(S48)。なお、上述した処理の順序は一例であり、処理の順序は適宜変更され得る。
【0113】
(バスアクセス処理の流れ)
続いて、
図16を参照して、本実施形態にかかるバスアクセス処理の流れを説明する。まず、レベル選択部4aは、シミュレーションレベルが選択されたか否かを判定する(S51)。シミュレーションレベルが選択されたと判定した場合(S51のYES)、レベル選択部4aは、選択されたシミュレーションレベルが「高速」であるか、又は「FuSa」であるかを判定する(S52)。シミュレーションレベルが「高速」であると判定した場合(S52の「高速」)、アクセス処理部12bは、バス2を経由せず、バススレーブ3に直接バスアクセスする(S53)。
【0114】
シミュレーションレベルが「FuSa」であると判定した場合(S52の「FuSa」)、又は、シミュレーションレベルが選択されていないと判定した場合(S51のNO)、アクセス処理部12bは、ガード5の動作実行部53にバスアクセスすることでガード5を経由して、バススレーブ3に対してバスアクセスする(S54)。アクセス処理部12bは、バスマスタ1とガード5との間にあるバス2については経由しない。動作実行部53は、動作実行部32にアクセスすることで、必要なIPのスレーブ動作を損なわずにシミュレーションを実施することができる。
【0115】
以上説明したように、本実施形態にかかる仮想環境プログラム132bが実行する処理では、仮想環境V4は、経由対象である第1インターコネクトと、経由対象でない第2インターコネクトと、を備えている。インターコネクトを経由対象とするか否かは、ユーザが選択可能である。仮想環境V4において、レベル選択部4aは、機能安全に関するシミュレーションレベルを選択する。また、バスマスタ1のアクセス処理部12bは、選択されたシミュレーションレベルに対応する経路でバススレーブ3にアクセスする。
【0116】
このようにすることで、シミュレーション対象のIPを選択することが可能なため、例えばガード5以外のインターコネクトを省き、高速なFuSa目的のシミュレーションが実施可能となる。また、本実施形態では、シミュレータを作り替えることなく、コンフィグレーションにより様々なシミュレーションを実行することができる。これにより、バスマスタ及びバススレーブ間の全てのインターコネクトを省いた速度重視のシミュレーション、全てのインターコネクトを含めた精度重視のシミュレーション、及び必要なIPを含めたシミュレーション等、様々なシミュレーションに対応可能となる。
【0117】
具体的には、不正アクセスをGuard IPでガードするシミュレーションにはGuardモデルは必須であるが、Arbiterやバスブリッジ等、及びその他のインターコネクトは不要である。この場合、バスマスタ及びバススレーブに加え、Guardモデルのみをシミュレーション対象とする。一方、バストラフィックをシミュレートする場合、Arbiter等のバスタイミングに影響を及ぼすインターコネクトのみを対象とし、Guard等のIPは除外する。
【0118】
なお、仮想環境V4は、複数の第1インターコネクトを備えてもよい。
図17は、複数の第1インターコネクトを備える仮想環境V4aを示す図である。仮想環境V4aは、複数の第1インターコネクトとして、上述したガード5に加え、ECC(Error Correction Code)機能を実現するECCエンコーダ6及びECCデコーダ7をさらに備えている。
【0119】
ECCは、エラーコレクションを行うIPの一例である。ECCエンコーダ6及びECCデコーダ7は、バス2に対するECC機能を構成する。バスマスタ1がバスアクセスのデータを出力した後、ECCエンコーダ6で出力したデータについてビット反転を検出するためのエンコードデータを付加し、バススレーブ3に到達する直前でデコードし、ビット反転を検出し、必要に応じて補正を行う。通常、ECCはシミュレーションの対象外であるが、ECCの補正アルゴリズム検証を行う場合などに、ECCエンコーダ6及びECCデコーダ7を経由対象とすることができる。
【0120】
ECCエンコーダ6は、ポインタ通知部60、ポインタ要求部61、ポインタ保持部62、及び動作実行部63を備えている。また、ECCデコーダ7は、ポインタ通知部70、ポインタ要求部71、ポインタ保持部72、及び動作実行部73を備えている。ECCエンコーダ6及びECCデコーダ7が備えるこれらの機能は、ガード5が備えるポインタ通知部50、ポインタ要求部51、ポインタ保持部52、及び動作実行部53とそれぞれ対応するものであるので、詳細な説明を省略する。
【0121】
アクセス処理部12bは、レベル選択部4aから出力されたシミュレーションレベルをポインタ要求部10及び不図示の記憶部を介して取得する。アクセス処理部12bは、取得されたシミュレーションレベルに対応する経路(A2)でガード5にアクセスする。動作実行部53は、レベル選択部4aから出力されたシミュレーションレベルをポインタ要求部51及び不図示の記憶部を介して取得する。動作実行部53は、取得されたシミュレーションレベルに対応する経路(A2)でバススレーブ3にアクセスする。
【0122】
複数の第1インターコネクトは、バスマスタ1とバススレーブ3との間の任意の位置に配置され得る。例えば、複数の第1インターコネクトは、バスマスタ1と第2インターコネクトとの間、及び、第2インターコネクトとバススレーブ3との間、にそれぞれ少なくとも1つ配置され得る。
図17の例では、ECCエンコーダ6は、バスマスタ1とバス2との間に配置されている。また、ガード5及びECCデコーダ7は、バス2とバススレーブ3との間にそれぞれ配置されている。本実施形態によれば、複数の第1インターコネクトと、第2インターコネクトと、の配置によらず、効率的なシミュレーションを行うことができる。
【0123】
以上、実施形態1~4にかかる情報処理装置について説明した。なお、上述した情報処理装置1000、100、100a、及び100bの構成は一例に過ぎず、適宜変更され得る。例えば、これらの情報処理装置の各構成要素の一部又は全部が複数の情報処理装置や回路等により実現される場合には、複数の情報処理装置や回路等は、集中配置されてもよいし、分散配置されてもよい。例えば、情報処理装置や回路等は、クライアントサーバシステム、クラウドコンピューティングシステム等、各々が通信ネットワークを介して接続される形態として実現されてもよい。また、実施形態にかかる情報処理装置の機能がSaaS(Software as a Service)形式で提供されてもよい。
【0124】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。また、上述した実施形態は任意に組み合わせて実行可能である。例えば、実施形態1~4のうち一部又は全部を組み合わせて実現することができる。
【符号の説明】
【0125】
1 バスマスタ
2 バス
3 バススレーブ
4 レベル選択部
4a レベル選択部
5 ガード
6 ECCエンコーダ
7 ECCデコーダ
10 ポインタ要求部
10a ポインタ要求部
11 ポインタ保持部
12 アクセス処理部
12a アクセス処理部
12b アクセス処理部
20 ポインタ伝達部
21 アクセス伝達部
30 ポインタ通知部
31 処理情報保持部
32 動作実行部
50 ポインタ通知部
51 ポインタ要求部
52 ポインタ保持部
53 動作実行部
60 ポインタ通知部
61 ポインタ要求部
62 ポインタ保持部
63 動作実行部
70 ポインタ通知部
71 ポインタ要求部
72 ポインタ保持部
73 動作実行部
100 情報処理装置
100a 情報処理装置
100b 情報処理装置
101 バスマスタ
102 インターコネクト
102-1~102-5 インターコネクト
103 バススレーブ
120 メインメモリ
130 ハードディスク
132 仮想環境プログラム
132a 仮想環境プログラム
132b 仮想環境プログラム
133 シミュレーション用データ
135 対象プログラム
200 表示装置
300 入力装置
1000 情報処理装置
1010 ポインタ保持部
1011 アクセス処理部
1030 動作実行部
1031 コード
1032 コード
1320 周辺IP部
1320a 周辺IP部
F1 処理
F2 処理
V1 仮想環境
V2 仮想環境
V3 仮想環境
V4 仮想環境
V4a 仮想環境