(57)【要約】【課題】周辺デバイスが誤ったメモリ領域に対して読み書きを行なうと不具合の原因となり、特に誤ったメモリ領域に書き込みを行なってしまうと、元々書いてあったデータが失われる、いわゆるメモリ破壊が起きてしまい、プログラムの誤動作の原因となってしまう。メモリ破壊系の不具合は手作業により多大なテスト工数をかけて検出しており、課題となっている。【解決手段】複数の模擬マスタと、模擬メモリを有し、計算機の動作をシミュレートするシミュレータにおいて、模擬マスタがアクセスする模擬メモリ領域を指定する手段と、模擬メモリへのアクセスを監視する手段と、模擬マスタによる前記アクセスが、前記指定された領域以外の模擬メモリ上の領域へのアクセスであることを検出する手段と、前記検出がされた際にユーザに通知する手段とを有するシミュレータにより、前記課題を解決する。【選択図】図１
2007272303.tif 000002
【特許請求の範囲】
【請求項１】
複数の模擬マスタと、少なくとも１つの模擬メモリを有し、計算機の動作をシミュレートするシミュレータであって、
模擬マスタがアクセスする模擬メモリ領域を指定する手段と、
模擬メモリへのアクセスを監視する手段と、
模擬マスタによる前記アクセスが、前記指定された領域以外の模擬メモリ上の領域へのアクセスであることを検出する手段と、
前記検出がされた際にユーザに通知する手段とを有するシミュレータ。
【請求項２】
前記模擬メモリ領域を指定する手段は、それぞれの模擬マスタごとに、アクセスする模擬メモリ領域を指定し、
前記検出する手段は、それぞれの模擬マスタによる前記アクセスが、前記模擬マスタごとに指定された領域以外へのアクセスであることを検出することを特徴とする請求項１記載のシミュレータ。
【請求項３】
前記模擬メモリ領域を指定する手段は、前記模擬マスタの１つである模擬中央演算装置による、メモリ操作関数の実行を監視することにより、模擬マスタがアクセスする模擬メモリ領域を指定することを特徴とする請求項１または請求項２記載のシミュレータ。
【請求項４】
前記模擬メモリ領域を指定する手段は、実行するプログラムの変数配置を参照することにより、模擬マスタがアクセスする模擬メモリ領域を指定することを特徴とする請求項１または請求項２記載のシミュレータ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、計算機システムをシミュレートするシミュレータに関するものであり、特にシミュレータを利用したデバッグ作業に関するものである。
【背景技術】
【０００２】
近年のデジタル・オーディオ・ビジュアル製品の発展はめざましく、大規模化・複雑化の一途をたどっている。特に、高品質な映像処理や音声処理に対するニーズの増加が著しい。このような状況から、デジタル・オーディオ・ビジュアル製品を支える計算機システムには、従来からの中央演算装置（以下ＣＰＵと略す）とメモリだけでなく、デジタル・シグナル・プロセッサ（以下ＤＳＰと略す）やダイレクト・メモリ・アクセス（以下ＤＭＡと略す）コントローラなど、多数の周辺デバイスが備わるようになってきている。
【０００３】
ＤＳＰは、デジタル信号処理を行なうものであり、特定の処理に特化した専用の演算装置である。例えば、映像データや音声データの符号化・複合化を行なうものがある。ＤＭＡコントローラは、ＣＰＵを介さずにメモリ転送を行なう装置である。
【０００４】
これらの周辺デバイスは、ＣＰＵを介さずに直接メモリに対して読み書きを行なう。このとき、適切なメモリ領域に対して読み書きを行なう場合は問題ないが、誤ったメモリ領域に対して読み書きを行なうと、他のデータが置かれているメモリ領域を読み書きしてしまうことになる。特に誤ったメモリ領域に書き込みを行なってしまうと、元々書いてあったデータが失われる、いわゆるメモリ破壊が起きてしまい、プログラムの誤動作の原因となってしまう。
【０００５】
ＣＰＵ上で動作するプログラムによるメモリ破壊を検出するための技術は従来から多数存在しているが、周辺デバイスによるメモリ破壊を検出する技術は少なく、デジタル・オーディオ・ビジュアル製品開発における大きな問題となっている。
【０００６】
周辺デバイスによるメモリ破壊には、大きく２つの種類がある。ひとつは、周辺デバイス自体に欠陥があり、正しく設定されたにも関わらず誤ったメモリ領域にアクセスしてしまう場合である。もうひとつは、周辺デバイスを設定する制御プログラムに欠陥があり、誤ったメモリ領域を設定することにより、周辺デバイスが設定通り誤ったメモリ領域にアクセスしてしまう場合である。
【０００７】
また、近年の計算機システムの高性能化に伴い、計算機システムそのものをシミュレートするプログラムを構成して動作させることができるようになっている。すなわち、実際の計算機上でシミュレータが動作し、そのシミュレータ上で仮想的にプログラムが動作するようになる。
【０００８】
シミュレータを利用した環境は、実際のハードウェア上で直接動作させる場合よりも動作速度は劣るが、実際のハードウェアを用意しなくても良いというコスト面での利点や、実際のハードウェアにはない機能を容易に追加できるという利点がある。
【０００９】
本発明は、シミュレータを利用して周辺デバイスによるメモリ破壊の検出を行なう。本発明に関連する既存技術として、特許文献１と、特許文献２の２つが挙げられる。これら２つの発明に関して概略を説明する。
【００１０】
特許文献１は、装置ハードウェアをシミュレートするシミュレータにおいて、ハードウェアへのアクセス動作を指定するコードと、そのアクセス結果を指定するコードを登録しておく。その上で試験診断プログラムを実行させ、登録してあるアクセス動作を指定するコードを実行し、アクセス結果を監視することで、装置ハードウェアの検証を行なうものである。
【００１１】
具体的な使用方法として、プロセッサの数値演算命令において、キャリーフラグやオーバーフローフラグまで含めた動作が適切に行なわれていることの検証が挙げられる。試験診断プログラムは、数値演算命令を実行する。検出項目は、数値演算の結果とキャリーフラグやオーバーフローフラグの値が正しく設定されていることを検出する。監視の対象は、この検査項目の結果である。
【００１２】
この方法では、数値演算の結果の正しさを検証することはできる。しかしながら、ハードウェアがアクセスするメモリ領域を指定する手段がなく、ハードウェアがメモリアクセスを行なったときに、その領域へのアクセスが正しいのか間違っているのかを区別できないため、メモリ破壊を検出することはできない。
【００１３】
特許文献２は、データ転送設定レジスタ内容を監視する機能を有するＤＭＡコントローラである。ＤＭＡレジスタに誤った内容が設定された場合に警告を発する。
【００１４】
この方法では、誤ったレジスタ設定を行なった場合の欠陥を発見できる。しかしながら、実際のＤＭＡコントローラ自体にこの機能を付加する必要があるため製造コストが増加してしまう。また、ＤＭＡコントローラに欠陥があってレジスタ設定値と異なるメモリ領域に転送してしまう場合の不具合の検出ができない。
【特許文献１】特開平０２−１１５９５２号公報
【特許文献２】特開２００３−２８１０７６号公報
【発明の開示】
【発明が解決しようとする課題】
【００１５】
近年の計算機システムは、ＣＰＵを介さずに直接メモリに対して読み書きを行なう周辺デバイスを多数備えている。これらの周辺デバイスが誤ったメモリ領域に対して読み書きを行なうと不具合の原因となり、特に誤ったメモリ領域に書き込みを行なってしまうと、元々書いてあったデータが失われる、いわゆるメモリ破壊が起きてしまい、プログラムの誤動作の原因となってしまう。
【００１６】
このようなメモリ破壊を検出するための有力な技術がなく、メモリ破壊系の不具合は手作業により多大なテスト工数をかけて検出することになり、課題となっている。
【課題を解決するための手段】
【００１７】
複数の模擬マスタと、模擬メモリを有し、計算機の動作をシミュレートするシミュレータにおいて、模擬マスタがアクセスする模擬メモリ領域を指定する手段と、模擬メモリへのアクセスを監視する手段と、模擬マスタによる前記アクセスが、前記指定された領域以外の模擬メモリ上の領域へのアクセスであることを検出する手段と、前記検出がされた際にユーザに通知する手段とを有するシミュレータにより、前記課題を解決する。
【００１８】
すなわち、それぞれの模擬マスタがアクセスして良いメモリ領域を指定しておき、模擬マスタによるメモリアクセスを監視し、アクセスして良いメモリ領域か否かを判別する。これにより、模擬マスタによるメモリアクセスが指定された領域以外へのアクセスであったときを検出し、ユーザに通知する。また、本発明では、これらの手段はシミュレータが有する。
【発明の効果】
【００１９】
本発明にかかるメモリ破壊検出機能付きシミュレータにより、ＣＰＵを介さずに直接メモリに対して読み書きを行なう周辺デバイスによる、誤ったメモリ領域への読み書きを検出することが可能となる。特に、誤ったメモリ領域に書き込みを行なってしまう、いわゆるメモリ破壊を検出することが可能となる。周辺デバイスによるメモリ破壊系の欠陥は検出が困難であり、従来から多大なテスト工数をかけて手作業で発見していたが、本発明により容易に検出ができるようになる。また、本発明は、シミュレータによってメモリ破壊検出を行なうため、実際の製品ハードウェアに搭載される部品に、メモリ破壊検出のための機能を追加する必要がなく、コストの増大を招くことがない。
【発明を実施するための最良の形態】
【００２０】
以下本発明の実施の形態について、図面を参照しながら説明する。
【００２１】
（実施の形態１）
最初に、図１１、図１２、図１３を用いて一般的なシミュレータの構成および動作について説明し、その後に本発明の実施の形態１におけるメモリ破壊検出機能付きシミュレータの構成について説明する。
【００２２】
図１１は、一般的なシミュレータの構成を示す図である。
【００２３】
１１０１はシミュレータである。このシミュレータは、計算機システムをシミュレートするものであり、一般にはソフトウェアプログラムとして実装される。このシミュレータは、実際の製品で使用されるハードウェアと同様の部品構成として、シミュレーションターゲット１１０２を持つ。１１０２はシミュレーションターゲットであり、その中に、模擬マスタ１１０３、模擬中央演算装置１１０４、模擬バス１１０５、模擬メモリ１１０６を持っている。それぞれの部品は実際の製品ハードウェアに搭載される部品の動作をシミュレートする。また、シミュレーションターゲットも実際の製品ハードウェア全体の動作をシミュレートする。このため、実際の製品ハードウェア上で何らかのプログラムを動作させた結果は、このシミュレータ上で動作させたときの結果とほぼ一致する。ただし、シミュレータの動作速度は、実際の製品ハードウェアとは必ずしも一致せず、一般にはシミュレータの方が遅い。また、シミュレーションの忠実さの程度により、計算機システム内での各部品の処理タイミングは、実際の製品ハードウェアと若干異なる場合もある。
【００２４】
１１０３は模擬マスタであり、実際の製品ハードウェアに搭載されるＤＳＰやＤＭＡなどのシミュレートをする。模擬マスタの数は、１つでもそれ以上でも良い。
【００２５】
１１０４は模擬中央演算装置であり、実際の製品ハードウェアの中央演算装置をシミュレートする。模擬中央演算装置の数は、１つでもそれ以上でも良い。模擬中央演算装置も模擬マスタのひとつではあるが、ここでは分けて説明する。
【００２６】
１１０５は模擬バスであり、実際の製品ハードウェアに搭載されるメモリのバスをシミュレートする。模擬バスは、シミュレータを高速化するために簡略化しても省略しても良い。
【００２７】
１１０６は模擬メモリであり、実際の製品ハードウェアに搭載されるメモリをシミュレートする。メモリの種類はＳＤＲＡＭやＦＬＡＳＨメモリなど、いずれでも良い。模擬メモリの数は、１つでもそれ以上でも良い。
【００２８】
図１２は、シミュレータ１１０１において、模擬マスタが動作して模擬メモリに対して読み書きを行なうときの処理順を示す図である。また、図１３は図１２における各ステップにおける信号やデータの流れ方を示す図である。
【００２９】
Ｓ１２０１では、模擬中央演算装置１１０４上で動作するプログラムが、模擬マスタ１１０３の動作を設定する。プログラムは、模擬マスタ１１０３のレジスタに処理内容を設定する。例えば、模擬マスタ１１０３がＤＭＡコントローラであった場合、転送元や転送先や転送サイズなどを設定する。
【００３０】
Ｓ１２０２では、プログラムが、模擬マスタ１１０３に動作を開始するよう指示を出す。例えば、模擬マスタ１１０３がＤＭＡコントローラであった場合、ステップＳ１２０１で設定された処理内容に従ってＤＭＡ転送を開始するよう指示を出す。
【００３１】
Ｓ１２０３では、模擬マスタ１１０３が、設定された処理内容に従って処理を実行する。そのときに演算処理やメモリに対するアクセスを行なう。メモリに対するアクセスでは、模擬バス１１０５を経由して、模擬メモリ１１０６に対して読み書きが行なわれる。例えば、模擬マスタ１１０３がＤＭＡコントローラであった場合、ステップＳ１２０１で設定された内容に従ってＤＭＡ転送を行なう。
【００３２】
Ｓ１２０４では、模擬マスタ１１０３が処理を終了したときに、模擬中央演算装置に割り込み信号を送り、処理が終了した旨を通知する。例えば、模擬マスタ１１０３がＤＭＡコントローラであった場合、ステップＳ１２０３で行なっていた転送が完了したときに割り込みを発する。
【００３３】
次に、本発明の実施の形態１について説明する。
【００３４】
図１は、本発明の実施の形態１におけるメモリ破壊検出機能付きシミュレータの構成を示す図である。
【００３５】
図１の１０７はメモリ領域指定手段であり、模擬マスタ１１０３がアクセスして良いメモリ領域を指定する。模擬マスタ１１０３がアクセスして良いメモリ領域とは、模擬メモリ１１０６内の一定範囲のメモリ領域のうち、模擬マスタ１１０３によるアクセスがプログラムやプログラムの仕様書によって認められている領域のことである。
【００３６】
図１の１０８はメモリアクセス監視手段であり、模擬バス１１０５を流れるメモリアクセスの内容を監視し、メモリ破壊検出が起きたかどうかをする。シミュレータ上でプログラムが動作するとき、模擬中央演算装置１１０４や模擬マスタ１１０３がメモリに対してアクセスを行い、その情報が模擬バス１１０５を通過する。メモリアクセス監視手段１０８は、この模擬バス１１０５を通過するメモリアクセスを監視し、メモリアクセスが起きた領域へのアクセスが正当なものであるかを判別する。詳細については後述する。
【００３７】
図１の１０９はユーザ通知手段であり、メモリ破壊を検出した場合にユーザに通知をする。ユーザに通知する方法として、計算機の画面に印字する方法やログを出力しておく方法などがある。
【００３８】
メモリアクセス監視手段１０８、メモリ領域指定手段１０７、ユーザ通知手段１０９は、メモリ破壊検出をするための手段であって、シミュレータ上には存在するが、実際の製品ハードウェアには搭載されていない機能である。したがって、これらの機能を追加することにより製品ハードウェアのコストが増加してしまうようなことはない。
【００３９】
図２は、実施の形態１におけるメモリ破壊検出を行なうときの処理順を示す図である。
【００４０】
Ｓ２０１では、メモリアクセス監視手段１０８が、模擬バス１１０５を流れるメモリアクセスの内容をフックし、アクセス先アドレスとアクセスサイズを取得する。
【００４１】
Ｓ２０２では、メモリアクセス監視手段１０８が、フックしたメモリアクセスのアクセス元を識別する。すなわち、模擬中央演算装置１１０１からのアクセスなのか、それとも模擬マスタ１１０３からのアクセスなのかを識別する。模擬マスタが複数搭載されている場合はそのうちのどの模擬マスタなのかを識別する。
【００４２】
Ｓ２０３では、識別したアクセス元により処理を分岐させる。アクセス元が模擬マスタ１１０３であればステップＳ２０４に移る。アクセス元が模擬中央演算装置１１０４であれば、そのまま終了する。
【００４３】
ここでアクセス元が中央演算装置の場合に処理を終了させるのは、中央演算装置は通常は全メモリ領域へのアクセスを行なうことができるためである。なお、中央演算装置がアクセスして良いメモリ領域の範囲を制限している場合は、ステップＳ２０４以降の処理と同様の処理を行なっても良い。
【００４４】
Ｓ２０４では、模擬マスタ１１０３がアクセスして良いメモリ領域の範囲を、メモリアクセス監視手段１０８が調べる。このときの、模擬マスタ１１０３がアクセスして良いメモリ領域の範囲はメモリ領域指定手段１０７が指定する。
【００４５】
Ｓ２０５では、模擬マスタ１１０３がアクセスして良いメモリ領域の範囲内にメモリアクセスが収まっているか否かを判別する。範囲内に収まっている場合はそのまま終了する。範囲内に収まっていない場合はステップＳ２０６に移る。
【００４６】
模擬マスタ１１０３がアクセスして良いメモリ領域の範囲内にメモリアクセスが収まっているか否かの判別は、図３のメモリ領域一覧を用いて、メモリアクセス監視手段１０８が行なう。図３の３０１は、模擬マスタ１１０３がアクセスして良い範囲を規定した一覧表である。１つの項目には、開始アドレスと終了アドレスがある。模擬マスタ１１０３からのメモリアクセスが、この表のいずれかの項目の開始アドレスから終了アドレス以内に収まっていれば、アクセスして良い領域であると判定する。メモリ領域一覧３０１へのメモリ領域の登録は、メモリ領域指定手段１０７が行なう。
【００４７】
Ｓ２０６では、模擬マスタがアクセスして良いメモリ領域以外へのアクセスを検出したことになるので、ユーザ通知手段１０９が、ユーザにメモリ破壊が起きた旨を通知する。
【００４８】
実施の形態１におけるメモリ破壊検出機能付きシミュレータでは、メモリ領域指定手段１０７により模擬マスタ１１０３がアクセスしてよいメモリ領域を指定し、模擬マスタ１１０３によるメモリアクセスをメモリアクセス監視手段１０８が監視し、正当なメモリ領域へのアクセスであるのか否かを判別し、正当なメモリ領域以外へのアクセスが起きた場合にユーザ通知手段１０９がユーザにメモリ破壊が起きた旨を通知する。したがって、本発明の実施の形態１におけるメモリ破壊検出機能付きシミュレータにより、メモリ破壊を容易に検出することができるようになる。
【００４９】
（実施の形態２）
図４は、本発明の実施の形態２におけるメモリ破壊検出機能付きシミュレータの構成を示す図である。図１と異なるのは、メモリ領域指定手段１０７が第二メモリ領域指定手段４０７となっている点と、メモリアクセス監視手段１０８が第二メモリアクセス監視手段４０８となっている点である。それ以外の構成要素は図１と同じである。
【００５０】
図６の６０１は、模擬マスタ１１０３がアクセスして良いメモリ領域の範囲を示すメモリ領域一覧である。図３のメモリ領域一覧３０１と異なるのは各メモリ領域項目に、アクセスが許可されている模擬マスタを示す覧が追加されている点である。
【００５１】
実施の形態１における図３のメモリ領域一覧３０１では、模擬マスタ１１０３が複数ある場合にそれらを特に区別していないが、図６のメモリ領域一覧６０１では区別する。すなわち、メモリ領域一覧６０１では、それぞれのメモリ領域ごとにアクセスして良い模擬マスタを個別に指定する。
【００５２】
図４の４０７は、第二メモリ領域指定手段である。第二メモリ領域指定手段４０７は、第二メモリアクセス監視手段４０８に、模擬マスタ１１０３がアクセスして良いメモリ領域を通知する。そのとき、メモリ領域の開始アドレスと終了アドレスの他に、そのメモリ領域にアクセスして良い模擬マスタも通知する。すなわち、メモリ領域ごとにアクセスして良いマスタの情報を割り振る。
【００５３】
図４の４０８は、第二メモリアクセス監視手段である。第二メモリアクセス監視手段４０８は、模擬バス１１０５を流れるメモリアクセスの内容を監視し、メモリ破壊検出が起きたかどうかをする。このとき、メモリアクセスを起こしたマスタを識別し、メモリアクセスが、模擬マスタ１１０３がアクセスして良いメモリ領域の範囲内に収まっているか否かを判別する。
【００５４】
模擬マスタ１１０３がアクセスして良いメモリ領域の範囲内にメモリアクセスが収まっているか否かの判別は、図６のメモリ領域一覧６０１を用いて、第二メモリアクセス監視手段４０８が行なう。すなわち、メモリアクセスが、メモリ領域一覧６０１のいずれかの項目の開始アドレスから終了アドレスの範囲内に収まっているのかを調べ、範囲内に収まっているメモリ領域があった場合、メモリアクセスを行なった模擬マスタがその領域にアクセスして良いのかを調べる。
【００５５】
図５は、実施の形態２におけるメモリ破壊検出を行なうときの処理順を示す図である。図２と異なるのは、ステップＳ２０５がＳ５０４になっている点である。それ以外のステップは図２と同じである。
【００５６】
ステップＳ５０４では、模擬マスタ１１０３がアクセスして良いメモリ領域の範囲内にメモリアクセスが収まっているか否かの判別と、メモリアクセスを引き起こしたマスタがメモリ領域一覧表６０１の該当する項目に記述されているか否かの判別を、第二メモリアクセス監視手段４０８が判別する。範囲内に収まっていて、適切な模擬マスタ１１０３からのアクセスである場合はそのまま終了する。範囲内に収まっていない場合、または異なる模擬マスタ１１０３からのアクセスの場合はステップＳ２０６に移る。
【００５７】
実施の形態２におけるメモリ破壊検出機能付きシミュレータでは、第二メモリ領域指定手段４０７により模擬マスタ１１０３がアクセスしてよいメモリ領域を指定し、模擬マスタ１１０３によるメモリアクセスを第二メモリアクセス監視手段４０８が監視し、正当なメモリ領域へのアクセスであるのか否かを判別し、正当なメモリ領域以外へのアクセスが起きた場合にユーザ通知手段１０９がユーザにメモリ破壊が起きた旨を通知する。特に、それぞれのマスタがアクセスして良いメモリ領域を細かく分けるので、ある模擬マスタが別の模擬マスタ用のメモリ領域に不正アクセスした場合の検出もできるようになる。したがって、本発明の実施の形態２におけるメモリ破壊検出機能付きシミュレータにより、メモリ破壊を容易に検出することができるようになる。
【００５８】
（実施の形態３）
図７は、本発明の実施の形態３におけるメモリ破壊検出機能付きシミュレータの構成を示す図である。図１と異なるのは、メモリ領域指定手段１０７が第三メモリ領域指定手段７０７となっている点である。それ以外の構成要素は図１と同じである。なお、メモリアクセス監視手段１０８は、実施の形態２における第二メモリアクセス監視手段４０８であっても良い。
【００５９】
第三メモリ領域指定手段７０７は、模擬中央演算装置１１０４上で実行されるプログラムの命令を追跡し、メモリ領域を操作する関数が実行された場合に、メモリアクセス監視手段１０８に通知する。例えば、メモリ領域を確保する関数が実行されたときに、確保されたメモリ領域を通知する。メモリアクセス監視手段１０８は、確保されたメモリ領域を、メモリ領域一覧３０１に追加し、監視対象のメモリ領域とする。
【００６０】
図８は、第三メモリ領域指定手段７０７が、模擬中央演算装置１１０４上で実行されるプログラムの命令を追跡して、メモリ領域を操作する関数が実行された場合に、メモリアクセス監視手段１０８に通知するときの処理手順を示した図である。
【００６１】
ステップＳ８０１では、第三メモリ領域指定手段７０７が、模擬中央演算装置１１０４上で実行されるプログラムの全ての命令実行をフックする。なお、特定番地の命令や特定コードの命令のみをフックしても良い。
【００６２】
ステップＳ８０２では、第三メモリ領域指定手段７０７が、フックした命令から命令コードの番地を特定する。
【００６３】
ステップＳ８０３では、第三メモリ領域指定手段７０７が、命令コードの番地から、実行されたコードがメモリ確保関数であるのか否かを判別する。メモリ確保関数の配置はプログラムから特定することができるので、実行されたコードの番地がメモリ確保関数の先頭や末尾であるのか否かを判別する。命令コードの番地がメモリ確保関数でない場合は終了する。命令コードの番地がメモリ確保関数の場合はステップＳ８０４に移る。
【００６４】
ステップＳ８０４では、第三メモリ領域指定手段７０７が、実行されたメモリ確保関数が模擬マスタ１１０３のためのメモリ確保関数か否かを判別する。例えば、メモリ確保関数の引数に、模擬マスタ１１０３用のフラグ情報を元に判別する。なお、これ以外にも、メモリ確保関数が呼び出された位置などの条件から模擬マスタ１１０３用と判定する方法もある。実行されたメモリ確保関数が模擬マスタ１１０３用でない場合は終了する。実行されたメモリ確保関数が模擬マスタ１１０３用の場合はステップＳ８０５に移る。
【００６５】
ステップＳ８０５では、第三メモリ領域指定手段７０７が、実行されたメモリ確保関数によって確保されたメモリ領域を、メモリアクセス監視手段１０８に通知する。
【００６６】
ここでは、メモリ確保関数の場合について説明したが、同様に、メモリ解放関数を追跡して既にメモリ領域一覧３０１に書かれている領域を削除しても良い。また、確保済みのメモリ領域を予約する関数などを追跡してもよい。
【００６７】
実施の形態３におけるメモリ破壊検出機能付きシミュレータでは、第三メモリ領域指定手段７０７により、プログラムが動的に確保するメモリ領域をメモリ破壊検出の監視対象とすることができる。したがって、本発明の実施の形態２におけるメモリ破壊検出機能付きシミュレータにより、メモリ破壊を容易に検出することができるようになる。
【００６８】
（実施の形態４）
図９は、本発明の実施の形態４におけるメモリ破壊検出機能付きシミュレータの構成を示す図である。図１と異なるのは、メモリ領域指定手段１０７が第四メモリ領域指定手段９０７となっている点である。それ以外の構成要素は図１と同じである。なお、メモリアクセス監視手段１０８は、実施の形態２における第二メモリアクセス監視手段４０８であっても良い。
【００６９】
第四メモリ領域指定手段９０７は、プログラムの変数名を受け取り、模擬中央演算装置１１０４上で実行されるプログラムの実行ファイルから、変数に割り当てられているメモリ領域を探索し、メモリアクセス監視手段１０８に通知する。
【００７０】
図１０は、第四メモリ領域指定手段９０７が、プログラムの実行ファイルから変数に割り当てられているメモリ領域を探索し、メモリアクセス監視手段１０８に通知するときの処理手順を示した図である。
【００７１】
Ｓ１００１では、ユーザが、第四のメモリ領域指定手段９０７に、模擬マスタ１１０３がアクセスしてよい変数の変数名を指定する。例えばデバイスドライバ内の静的な配列や構造体などの領域にマスタがアクセスする場合、これらの変数を指定する。
【００７２】
Ｓ１００２では、第四メモリ領域指定手段９０７が、実行するプログラムを探索する。
【００７３】
Ｓ１００３では、第四メモリ領域指定手段９０７が、実行するプログラム内から、ステップＳ１００１で指定された変数の配置を元に、メモリ領域を探索する。
【００７４】
Ｓ１００４では、第四メモリ領域指定手段９０７が、ステップＳ１００３で探索されたメモリ領域を、メモリアクセス監視手段１０８に通知する。
【００７５】
実施の形態４におけるメモリ破壊検出機能付きシミュレータでは、第四メモリ領域指定手段９０７により、プログラムの変数名を元に、メモリ破壊検出の監視対象となるメモリ領域を指定することができる。したがって、本発明の実施の形態２におけるメモリ破壊検出機能付きシミュレータにより、メモリ破壊を容易に検出することができるようになる。
【産業上の利用可能性】
【００７６】
本発明にかかるメモリ破壊検出機能付きシミュレータにより、ＣＰＵを介さずに直接メモリに対して読み書きを行なう周辺デバイスによる、誤ったメモリ領域への読み書きを検出することが可能となる。特に、誤ったメモリ領域に書き込みを行なってしまう、いわゆるメモリ破壊を検出することが可能となる。この結果、多大なテスト工数をかけて手作業で発見しているメモリ破壊系の欠陥が容易に発見できるようになり、有用である。
【００７７】
また、本発明は、シミュレータによりメモリ破壊検出を行なう。このため、実際の製品ハードウェアに搭載される部品に、メモリ破壊検出のための機能を追加する必要がなく、コストの増大を招くことがない。
【図面の簡単な説明】
【００７８】
【図１】本発明の実施の形態１における、メモリ破壊検出機能付きシミュレータの構成を示す図
【図２】本発明の実施の形態１における、メモリ破壊検出を行なうときの処理順を示す図
【図３】本発明の実施の形態１における、模擬マスタがアクセスして良い範囲を規定した図
【図４】本発明の実施の形態２における、メモリ破壊検出機能付きシミュレータの構成を示す図
【図５】本発明の実施の形態２における、メモリ破壊検出を行なうときの処理順を示す図
【図６】本発明の実施の形態２における、模擬マスタがアクセスして良いメモリ領域の範囲を示す図
【図７】本発明の実施の形態３における、メモリ破壊検出機能付きシミュレータの構成を示す図
【図８】本発明の実施の形態３における、メモリ領域を指定する手順を示した図
【図９】本発明の実施の形態４における、メモリ破壊検出機能付きシミュレータの構成を示す図
【図１０】本発明の実施の形態４における、メモリ領域を指定する手順を示した図
【図１１】一般的なシミュレータの構成を示す図
【図１２】一般的なシミュレータにおいて、模擬マスタが動作して模擬メモリに対して読み書きを行なうときの処理順を示す図
【図１３】図１２における各ステップにおける信号やデータの流れ方を示す図
【符号の説明】
【００７９】
１０７    メモリ領域指定手段
１０８    メモリアクセス監視手段
１０９    ユーザ通知手段
３０１    メモリ領域一覧
４０７    第二メモリ領域指定手段
４０８    第二メモリアクセス監視手段
６０１    第二メモリ領域一覧
７０７    第三メモリ領域指定手段
９０７    第四メモリ領域指定手段
１１０１    シミュレータ
１１０２    シミュレーションターゲット
１１０３    模擬マスタ
１１０４    模擬中央演算装置
１１０５    模擬バス
１１０６    模擬メモリ
【図１】
2007272303.tif 000003
【図２】
2007272303.tif 000004
【図３】
2007272303.tif 000005
【図４】
2007272303.tif 000006
【図５】
2007272303.tif 000007
【図６】
2007272303.tif 000008
【図７】
2007272303.tif 000009
【図８】
2007272303.tif 000010
【図９】
2007272303.tif 000011
【図１０】
2007272303.tif 000012
【図１１】
2007272303.tif 000013
【図１２】
2007272303.tif 000014
【図１３】
2007272303.tif 000015