(57)【要約】【課題】シミュレータにおいて、キャッシュの一貫性に異常が発生する可能性のあるメモリ領域へのアクセスを検出するキャッシュ一貫性異常検出装置を提供すること。【解決手段】メモリ領域特定手段ＡＡ０７が、キャッシュの一貫性に異常が発生する可能性があるメモリ領域（模擬中央演算装置ＡＡ０４が書き込みを行った後、キャッシュのクリーン命令が実行されていないメモリ領域、ならびに、模擬中央演算装置ＡＡ０４が書き込みもしくは読み込みを行った後、キャッシュの無効化命令が実行されていないメモリ領域）を特定し、メモリアクセス監視手段ＡＡ０８が、模擬マスタＡＡ０３によるメモリアクセスを監視することで、キャッシュに一貫性の異常が生じる可能性のあるメモリアクセスを判別し、ユーザ通知手段ＡＡ０９が、キャッシュの一貫性に異常が生じた可能性がある旨を通知する。【選択図】図１
2008186348.tif 000002
【特許請求の範囲】
【請求項１】
キャッシュを有する中央演算装置の動作をシミュレートするシミュレータであって、
前記シミュレータは、模擬中央演算装置と模擬マスタと模擬メモリとを有し、前記模擬演算装置と前記模擬マスタと前記模擬メモリが模擬バスを介して接続するシミュレーションターゲットを備え、
前記模擬マスタが前記模擬メモリにアクセスすることにより、前記模擬中央演算装置のキャッシュのデータと前記模擬メモリのデータとに一貫性の異常が生じる可能性のあるメモリ領域を特定するメモリ領域特定手段と、
前記メモリ領域特定手段の指示に基づき、前記模擬中央演算装置のキャッシュのデータと前記模擬メモリのデータとに一貫性の異常が生じる可能性のあるメモリ領域を管理する記憶手段と、
前記模擬バスを流れる前記模擬メモリへのアクセスを監視する監視手段と、
前記模擬メモリへのアクセスが、前記模擬マスタからのアクセスである場合に、前記記憶手段に管理されている前記メモリ領域に基づき、前記模擬中央演算装置のキャッシュのデータと前記模擬メモリのデータとに一貫性の異常が生じる可能性のあるメモリ領域へのアクセスを検出する検出手段とを有することを特徴とするキャッシュ一貫性異常検出装置。
【請求項２】
前記メモリ領域特定手段は、前記模擬中央演算装置の命令実行を監視し、メモリ書き込み命令とキャッシュのクリーン命令の対象メモリ領域を取得し、前記記憶手段を参照して、前記模擬中央演算装置が書き込みを行った後キャッシュのクリーン命令が実行されていないメモリ領域を特定し、特定したメモリ領域を前記記憶手段に追加することを特徴とする請求項１記載のキャッシュ一貫性異常検出装置。
【請求項３】
前記模擬中央演算装置は、模擬プロセッサコアと模擬キャッシュを備えており、
前記模擬キャッシュは、対象のメモリ領域がキャッシュ上で書き換えられたか否かを示すＤｉｒｔｙビットを有しており、
前記メモリ領域特定手段は、前記模擬キャッシュに記憶するメモリ領域入れ替え時の入れ替えメモリ領域を監視し、前記メモリ領域に対応するＤｉｒｔｙビットが有効か無効かを判断し、前記模擬中央演算装置が書き込みを行った後キャッシュのクリーン命令が実行されていないメモリ領域を特定し、特定したメモリ領域を前記記憶手段に追加することを特徴とする請求項１記載のキャッシュ一貫性異常検出装置。
【請求項４】
前記メモリ領域特定手段は、前記模擬中央演算装置の命令実行を監視し、メモリ書き込み命令とメモリ読み込み命令とキャッシュの無効化命令の対象メモリ領域を取得し、前記記憶手段を参照して、前記模擬中央演算装置が書き込みもしくは読み込みを行った後キャッシュの無効化命令が実行されていないメモリ領域を特定し、特定したメモリ領域を前記記憶手段に追加することを特徴とする請求項１記載のキャッシュ一貫性異常検出装置。
【請求項５】
前記模擬中央演算装置は、模擬プロセッサコアと模擬キャッシュを備えており、
前記模擬キャッシュは、対象のメモリ領域が有効か否かを示すＶａｌｉｄビットを有しており、
前記メモリ領域特定手段は、前記模擬キャッシュに記憶するメモリ領域入れ替え時の入れ替えメモリ領域を監視し、前記メモリ領域に対応するＶａｌｉｄビットが有効か無効かを判断し、前記模擬中央演算装置が書き込みもしくは読み込みを行った後キャッシュの無効化命令が実行されていないメモリ領域を特定し、特定したメモリ領域を前記記憶手段に追加することを特徴とする請求項１記載のキャッシュ一貫性異常検出装置。
【請求項６】
前記メモリ領域特定手段は、特定したメモリ領域のアドレス情報を論理アドレスから物理アドレスへ変換し、前記メモリ領域を前記記憶手段に登録することを特徴とした請求項１記載のキャッシュ一貫性異常検出装置。
【請求項７】
前記メモリ領域特定手段は、特定したメモリ領域のアドレス情報を論理アドレスからバスアドレスへ変換し、前記メモリ領域を前記記憶手段に登録することを特徴とした請求項１記載のキャッシュ一貫性異常検出装置。
【請求項８】
前記検出手段が、一貫性の異常が生じる可能性のあるメモリ領域へのアクセスを検出した場合、前記検出手段から通知を受け取り、外部に出力する通知手段を有することを特徴とする請求項１記載のキャッシュ一貫性異常検出装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、計算機システムにおけるハードウェアとソフトウェアの動作を他のパソコンやワークステーションなどで模擬するシミュレータに関するものであり、特に、ソフトウェアによるハードウェアの制御の異常検出に関連する。
【背景技術】
【０００２】
近年の計算機システムにおいて、中央演算装置は、中央演算装置と比較して低速なメモリへのアクセス時のレイテンシを軽減するためのキャッシュと呼ばれる高速なローカルメモリを備えている。以下、高速なローカルメモリを「キャッシュ」、低速なメモリを「メモリ」と記載する。また、計算機システムは、前述したメモリや、中央演算装置を介さず直接メモリに対して読み書きを行うデジタル・シグナル・プロセッサ（以下ＤＳＰと略す）、ダイレクト・メモリ・アクセス（以下ＤＭＡと略す）コントローラといった周辺デバイスを多数備えている。なお、計算機システムとは、ハードウェアとして中央演算装置とメモリと前述した周辺デバイスを備え、これらのハードウェアをソフトウェアで制御するシステムのことであり、一つの機器に組み込まれることで、その機器の動作の制御を行うものである。具体的には、デジタルカメラやテレビ受像機などのＡＶ機器や、携帯電話やファクシミリなどの通信機器、パソコンやＰＤＡなどの情報機器などの製品に計算機システムが搭載され、これらの製品の動作の制御を行う。
【０００３】
一般にキャッシュは中央演算装置に付属する形で用いられるため、周辺デバイスからは直接アクセスできない。キャッシュを使用する場合、あるメモリ領域において、キャッシュ上のデータとメモリ上のデータは一時的に異なる可能性がある。このため、周辺デバイスがメモリ上のデータへアクセスする際は、キャッシュの一貫性を維持するための仕組みが必要である。
【０００４】
キャッシュ上のデータとメモリ上のデータが一時的に異なるケースとして、周辺デバイスがメモリを読み込む場合について説明する。ここで、中央演算装置が、あるメモリ領域に対して書き込み命令を実行し、それによってキャッシュ上のデータのみが書き換わったとする。このキャッシュ上のデータがメモリ上のデータに反映される前の状態で、周辺デバイスが当該メモリ領域のデータを読み込んでしまうと、キャッシュ上には新しいデータが、メモリ上には古いデータが存在するため、周辺デバイスは誤って古いデータを使用することになる。
【０００５】
次に、周辺デバイスがメモリに書き込む場合について説明する。ここで、中央演算装置が、あるメモリ領域に対してデータを書き込む、もしくは読み込む命令を実行し、それによって当該メモリ領域のデータがキャッシュ上に存在するものとする。この状態で、周辺デバイスが当該メモリ領域にデータを書き込んでしまうと、キャッシュ上には古いデータが、メモリ上には新しいデータが存在するため、中央演算装置は誤って古いデータを使用することになる。
【０００６】
従来のキャッシュの一貫性を維持するための技術として、ハードウェアでキャッシュの一貫性を維持するものがあった（例えば、特許文献１参照）。この方法では、代替バスマスタがバスをスヌープし、キャッシュのエントリを選択的に書き戻して、キャッシュの一貫性を維持していた。
【０００７】
発明のもう一つの背景として、近年の計算機システムの高性能化に伴い、計算機システムのハードウェアとソフトウェアの動作そのものをシミュレートするプログラムを構成して動作させることができる技術がある。すなわち、検証対象の計算機システムとは他の計算機上でシミュレータが動作し、そのシミュレータ上で検証対象のハードウェアとソフトウェアの動作を仮想的に実行することで、動作の検証を行う。
【０００８】
シミュレータを利用した環境は、検証対象の計算機システムのハードウェア上で直接動作させる場合よりも動作速度が劣る。しかし、実際のハードウェアを用意しなくても良いというコスト面での利点や、実際のハードウェアにはない機能を容易に追加できるという利点、実際のハードウェアの登場よりも早い時期にソフトウェアを動作させ、その検証を開始できるという利点がある。
【０００９】
従来の装置ハードウェアをシミュレートするシミュレータの技術として、ハードウェアへのアクセス動作を指定するコードと、そのアクセス結果を指定するコードを登録しておき、その上で試験診断プログラムを実行させ、登録してあるアクセス動作を指定するコードを実行し、アクセス結果を監視することで、装置ハードウェアの検証を行うものがあった（例えば、特許文献２参照）。
【００１０】
このシミュレータの具体的な使用方法としては、プロセッサの数値演算命令において、キャリーフラグやオーバーフローフラグまで含めた動作が適切に行なわれていることの検証が挙げられる。試験診断プログラムは、数値演算命令を実行する。検出項目は、数値演算の結果とキャリーフラグやオーバーフローフラグの値が正しく設定されていることを検出する。監視の対象は、この検査項目の結果である。
【特許文献１】米国特許第５１１９４８５号明細書
【特許文献２】特開平０２−１１５９５２号公報
【発明の開示】
【発明が解決しようとする課題】
【００１１】
しかしながら、ハードウェアでキャッシュの一貫性を維持する従来の技術では、キャッシュの一貫性を維持するための機構を実際のハードウェア上に付加することになり、製造コストが増加し、また、消費電力も増大するという課題を有していた。
【００１２】
また、実際のハードウェア上に機構を付加するのでなく、装置ハードウェアをシミュレートするシミュレータの技術では、数値演算の結果の正しさを検証することはできる。しかしながら、ハードウェアがアクセスするメモリ領域を指定する手段がなく、ハードウェアがメモリアクセスを行なった時に、そのメモリアクセスによってキャッシュの一貫性異常が生じるかどうかを判別することはできないという課題を有していた。
【００１３】
本発明は、前記従来の課題を解決するものであって、シミュレータにおいて、キャッシュの一貫性に異常が発生する可能性のあるメモリ領域へのアクセスを検出するキャッシュ一貫性異常検出装置を提供することを目的とする。
【課題を解決するための手段】
【００１４】
前記従来の課題を解決するために、本発明のキャッシュ一貫性異常検出装置は、キャッシュを有する中央演算装置の動作をシミュレートするシミュレータであって、前記シミュレータは、模擬中央演算装置と模擬マスタと模擬メモリとを有し、前記模擬演算装置と前記模擬マスタと前記模擬メモリが模擬バスを介して接続するシミュレーションターゲットを備え、前記模擬マスタが前記模擬メモリにアクセスすることにより、前記模擬中央演算装置のキャッシュのデータと前記模擬メモリのデータとに一貫性の異常が生じる可能性のあるメモリ領域を特定するメモリ領域特定手段と、前記メモリ領域特定手段の指示に基づき、前記模擬中央演算装置のキャッシュのデータと前記模擬メモリのデータとに一貫性の異常が生じる可能性のあるメモリ領域を管理する記憶手段と、前記模擬バスを流れる前記模擬メモリへのアクセスを監視する監視手段と、前記模擬メモリへのアクセスが、前記模擬マスタからのアクセスである場合に、前記記憶手段に管理されている前記メモリ領域に基づき、前記模擬中央演算装置のキャッシュのデータと前記模擬メモリのデータとに一貫性の異常が生じる可能性のあるメモリ領域へのアクセスを検出する検出手段とを有することを特徴とする。
【００１５】
本構成によって、キャッシュとメモリの一方にのみ新しいデータが存在し、他方には古いデータが存在する可能性があるメモリ領域を特定し、模擬マスタ又は模擬中央演算装置による古いデータへのアクセスを検出することができる。
【発明の効果】
【００１６】
本発明のキャッシュの一貫性異常検出装置によれば、シミュレータにおいて、キャッシュの一貫性に異常が発生する可能性のあるメモリ領域へのアクセスを検出することが可能となる。
【発明を実施するための最良の形態】
【００１７】
以下本発明の実施の形態について、図面を参照しながら説明する。
【００１８】
図１は、本発明の実施の形態におけるシミュレータの構成を示すブロック図である。図１のシミュレータは、本発明のキャッシュ一貫性異常検出装置を備えている。
【００１９】
ＡＡ０１はシミュレータである。このシミュレータは、計算機システムの動作をシミュレートするものであり、ＰＣ（パソコン）などのソフトウェアプログラムとして実装される。シミュレート対象の計算機システムは、ハードウェアとして中央演算装置とメモリと前述した周辺デバイスとこれらを接続するバスとを備え、これらのハードウェアをソフトウェアで制御するシステムであり、一つの機器に組み込まれることで、その機器の動作の制御を行うものである。具体的には、デジタルカメラやテレビ受像機などのＡＶ機器や、携帯電話やファクシミリなどの通信機器、パソコンやＰＤＡなどの情報機器などの製品に、この計算機システムが搭載され、これらの製品の動作の制御を行う。このシミュレータは、シミュレート対象の計算機システムのハードウェアと同様の構成を持つシミュレーションターゲットＡＡ０２を備えている。
【００２０】
ＡＡ０２はシミュレーションターゲットであり、模擬マスタＡＡ０３、模擬中央演算装置ＡＡ０４、模擬バスＡＡ０５、模擬メモリＡＡ０６を備えている。各構成要素は、シミュレート対象の計算機システムの周辺デバイス（マスタ）、中央演算装置、バス、メモリに対応しており、各々の動作をシミュレートする。また、シミュレーションターゲットＡＡ０２は、シミュレート対象の計算機システムのハードウェア全体の動作をシミュレートする。これにより、シミュレート対象の計算機システムで特定の動作を実行した結果は、このシミュレータ上で同じ特定の動作を実行した結果とほぼ一致する。
【００２１】
ＡＡ０３は模擬マスタであり、シミュレート対象の計算機システムの周辺デバイス、具体的には、ＤＳＰやＤＭＡコントローラなどに対応しており、これらの動作をシミュレートする。模擬マスタの数は、１つでもそれ以上でも良い。
【００２２】
ＡＡ０４は模擬中央演算装置であり、シミュレート対象の計算機システムの中央演算装置に対応しており、この動作をシミュレートする。模擬中央演算装置の数は、１つでもそれ以上でも良い。模擬中央演算装置も模擬マスタのひとつではあるが、ここでは分けて説明する。また、ここではシミュレート対象の計算機システムが備える中央演算装置に、キャッシュが付属するものとして説明する。ただし、キャッシュのシミュレーションは、キャッシュの代わりに直接メモリにアクセスするといった方法などにより簡略化、省略しても良い。
【００２３】
ＡＡ０５は模擬バスであり、シミュレート対象の計算機システムのバスに対応する。具体的には、メモリと接続するバスに対応し、メモリと周辺デバイス間、またはメモリと中央演算装置間の動作をシミュレートする。模擬バスは、シミュレータを高速化するために簡略化しても省略しても良い。
【００２４】
ＡＡ０６は模擬メモリであり、シミュレート対象の計算機システムのメモリに対応しており、この動作をシミュレートする。メモリの種類はシンクロナス・ダイナミック・ランダム・アクセス・メモリ（以下ＳＤＲＡＭと略す）やフラッシュ・メモリなどである。模擬メモリの数は、１つでもそれ以上でも良い。
【００２５】
ＡＡ１１はＰＣであり、シミュレータはこのＰＣ上のソフトウェアプログラムとして動作する。ここでは、一例としてＰＣを挙げているが、ワークステーションなどであっても良い。
【００２６】
ＡＡ１２は表示装置である。ＣＲＴや液晶などのディスプレイやプリンタといった、ユーザへ情報を表示するためのものである。
【００２７】
ＡＡ１３は入力装置である。キーボードやマウスといった、ユーザが情報を入力するためのものである。
【００２８】
ＡＡ０７はメモリ領域特定手段であり、模擬マスタＡＡ０３が模擬メモリＡＡ０６にアクセスすることにより、模擬中央演算装置ＡＡ０４のキャッシュのデータと模擬メモリＡＡ０６のデータに、一貫性の異常が生じる可能性のあるメモリ領域を特定する。模擬中央演算装置ＡＡ０４のキャッシュの一貫性に異常が生じる可能性があるメモリ領域とは、模擬メモリＡＡ０６内の一定範囲のメモリ領域の内、模擬中央演算装置ＡＡ０４が書き込みを行ったことにより、キャッシュ上のデータのみが書き換わり、模擬メモリＡＡ０６上のデータに反映されていないメモリ領域（キャッシュのクリーン命令が実行されていないメモリ領域）と、模擬中央演算装置ＡＡ０４が読み込みもしくは書き込みを行ったことにより、キャッシュ上と模擬メモリＡＡ０６上の両方にデータが存在するメモリ領域（キャッシュの無効化命令が実行されていないメモリ領域）のことである。このメモリ領域の特定処理は、メモリ領域管理データベースＡＡ１０で管理されているメモリ領域の情報を用いて行う。さらに、メモリ領域管理データベースＡＡ１０に対して、特定したメモリ領域の追加、削除、参照などを指示することで、メモリ領域管理データベースＡＡ１０の情報の更新処理や参照処理を行う。
【００２９】
ＡＡ０８はメモリアクセス監視手段であり、模擬バスＡＡ０５を流れるメモリアクセスの内容を監視し、キャッシュの一貫性に異常が生じるアクセスかどうかを判別する。シミュレータ上でプログラムが動作するとき、模擬中央演算装置ＡＡ０４や模擬マスタＡＡ０３が模擬メモリＡＡ０６に対してアクセスを行うと、その情報（メモリＡＡ０６に対する命令）は模擬バスＡＡ０５を通過する。メモリアクセス監視手段ＡＡ０８は、この模擬バスＡＡ０５を通過するメモリアクセスを監視し、メモリアクセスが起きた領域へのアクセスが、キャッシュの一貫性に異常を生じさせるものか否かを判別する。なお、この判別処理は、メモリ領域特定手段ＡＡ０７を介してメモリ領域管理データベースＡＡ１０で管理しているメモリ領域の情報を用いて行う。
【００３０】
ＡＡ０９はユーザ通知手段であり、メモリアクセス監視手段ＡＡ０８がキャッシュの一貫性に異常が発生する可能性のあるメモリアクセスを検出した場合、メモリアクセス監視手段ＡＡ０８から通知を受け、ユーザに通知する。ユーザに通知する方法として、計算機の画面に表示する方法やログを出力しておく方法などがある。
【００３１】
ＡＡ１０はメモリ領域管理データベースであり、メモリ領域特定手段ＡＡ０８によるメモリ領域の追加、削除、参照などの命令に基づき、管理するメモリ領域を操作、参照することができる。模擬マスタＡＡ０３が模擬メモリＡＡ０６にアクセスすることにより、模擬中央演算装置ＡＡ０４のキャッシュのデータと模擬メモリＡＡ０６のデータに、一貫性の異常が生じる可能性のある領域を管理する。詳細については図５にて説明する。
【００３２】
以上の構成により、シミュレーションターゲットＡＡ０２の動作中に、メモリ領域特定手段ＡＡ０７が、模擬中央演算装置ＡＡ０４の実行する命令に基づいてキャッシュの一貫性に異常が発生させる可能性があるメモリ領域を特定し、特定したメモリ領域をメモリ領域管理データベースＡＡ１０で管理し、メモリアクセス監視手段ＡＡ０８が、模擬メモリＡＡ０６へのアクセス状況を監視し、メモリ領域管理データベースＡＡ１０で管理されているメモリ領域へのアクセスを検出することで、キャッシュの一貫性に異常が発生する可能性があるメモリ領域へのアクセスを検出することが可能となる。
【００３３】
メモリ領域特定手段ＡＡ０７、メモリアクセス監視手段ＡＡ０８、ユーザ通知手段ＡＡ０９、メモリ領域管理データベースＡＡ１０は、キャッシュの一貫性異常を検出するための手段、データベースであって、シミュレータ上には存在するが、この計算機システムが搭載された製品ハードウェアには搭載する必要がない機能である。したがって、これらの機能を追加することによる製品ハードウェアのコストを増加することなしに、キャッシュの一貫性についての検証を行うことが可能となる。
【００３４】
図２は、本発明の実施の形態におけるメモリ領域特定手段ＡＡ０７が、キャッシュの一貫性に異常が発生する可能性があるメモリ領域を特定する際の処理手順の一例を示した図である。この特定するメモリ領域とは、（１）模擬中央演算装置ＡＡ０４が書き込みを行った後、キャッシュのクリーン命令が実行されていないメモリ領域と、（２）模擬中央演算装置ＡＡ０４が書き込みもしくは読み込みを行った後、キャッシュの無効化命令が実行されていないメモリ領域のことである。
【００３５】
ステップＢＢ０１では、メモリ領域特定手段ＡＡ０７は、模擬中央演算装置ＡＡ０４の命令実行をフックし、実行する命令を取得する。
【００３６】
ステップＢＢ０２では、メモリ領域特定手段ＡＡ０７は、取得した命令がメモリ読み込み命令かどうかで処理を分岐させる。メモリ読み込み命令であれば（ステップＢＢ０２がＹＥＳ）、ステップＢＢ０３に移る。メモリ読み込み命令でなければ（ステップＢＢ０２がＮＯ）、ステップＢＢ０４に移る。
【００３７】
ステップＢＢ０３では、メモリ領域特定手段ＡＡ０７は、フックした命令から読み込み先メモリ領域を特定する。
【００３８】
ステップＢＢ０４では、メモリ領域特定手段ＡＡ０７は、取得した命令がメモリ書き込み命令かどうかで処理を分岐させる。メモリ書き込み命令であれば（ステップＢＢ０４がＹＥＳ）、ステップＢＢ０５に移る。メモリ書き込み命令でなければ（ステップＢＢ０４がＮＯ）、ステップＢＢ１０に移る。
【００３９】
ステップＢＢ０５では、メモリ領域特定手段ＡＡ０７は、フックした命令から書き込み先メモリ領域を特定する。
【００４０】
ステップＢＢ０６では、メモリ領域特定手段ＡＡ０７は、特定したメモリ領域が、模擬中央演算装置ＡＡ０４がこの命令以前の命令で書き込みを行った後、キャッシュのクリーン命令が実行されていないメモリ領域かどうかをメモリ領域管理データベースＡＡ１０に問い合わせ、その結果で処理を分岐させる。特定したメモリ領域に一部でも、メモリ領域管理データベースＡＡ１０が管理する、模擬中央演算装置ＡＡ０４がこの命令以前の命令で書き込みを行った後、キャッシュのクリーン命令が実行されていないメモリ領域に含まれないメモリ領域が存在したら（ステップＢＢ０６がＹＥＳ）、ステップＢＢ０７に移る。特定したメモリ領域がメモリ領域管理データベースＡＡ１０が管理するメモリ領域に完全に含まれている場合は（ステップＢＢ０６がＮＯ）、ステップＢＢ０８に移る。
【００４１】
ステップＢＢ０７では、メモリ領域特定手段ＡＡ０７は、特定したメモリ領域（模擬中央演算装置ＡＡ０４が書き込みを行った後、キャッシュのクリーン命令が実行されていないメモリ領域）を、メモリ領域管理データベースＡＡ１０に追加する。なお、メモリ領域特定手段ＡＡ０７が、ステップＢＢ０６で、一部のみ新規追加対象のメモリ領域であると判断した場合、新規追加対象の一部のみメモリ領域管理データベースＡＡ１０に追加する処理を行なってもよい。また、メモリ領域特定手段ＡＡ０７は、特定したメモリ領域のアドレス情報を論理アドレスから物理アドレスへ変換し、メモリ領域管理データベースＡＡ１０に登録してもよく、同様に、特定したメモリ領域のアドレス情報を論理アドレスからバスアドレスへ変換し、メモリ領域管理データベースＡＡ１０に登録しても良い。特定したメモリ領域のアドレスの物理アドレスやバスアドレスへのアドレス変換を行うかどうかは、模擬バスＡＡ０５および模擬メモリＡＡ０６の実装（模擬の程度）によって変わるが、メモリアクセス監視手段ＡＡ０８がメモリアクセスをフックするときに得られるアドレスの形式に一致させるのが実装上容易である。
【００４２】
ステップＢＢ０８では、メモリ領域特定手段ＡＡ０７は、特定したメモリ領域が、模擬中央演算装置ＡＡ０４がこの命令以前の命令で書き込み、もしくは読み込みを行った後、キャッシュの無効化命令が実行されていないメモリ領域かどうかをメモリ領域管理データベースＡＡ１０に問い合わせ、その結果で処理を分岐させる。特定したメモリ領域に一部でも、メモリ領域管理データベースＡＡ１０が管理する、模擬中央演算装置ＡＡ０４がこの命令以前の命令で書き込み、もしくは読み込みを行った後、キャッシュの無効化命令が実行されていないメモリ領域に含まれないメモリ領域が存在したら（ステップＢＢ０８がＹＥＳ）、ステップＢＢ０９に移る。特定したメモリ領域がメモリ領域管理データベースＡＡ１０が管理するメモリ領域に完全に含まれている場合は（ステップＢＢ０８がＮＯ）、処理を終了する。
【００４３】
ステップＢＢ０９では、メモリ領域特定手段ＡＡ０７は、特定したメモリ領域（模擬中央演算装置ＡＡ０４が書き込みもしくは読み込みを行った後、キャッシュの無効化命令が実行されていないメモリ領域）を、メモリ管理データベースＡＡ１０に追加する。なお、ステップＢＢ０８で、一部のみ新規追加対象のメモリ領域であると判断した場合、新規追加対象の一部のみメモリ領域管理データベースＡＡ１０に追加する処理を行なってもよい。また、メモリ領域特定手段ＡＡ０７は、特定したメモリ領域のアドレス情報を論理アドレスから物理アドレスへ変換し、メモリ領域管理データベースＡＡ１０に登録してもよく、同様に、特定したメモリ領域のアドレス情報を論理アドレスからバスアドレスへ変換し、メモリ領域管理データベースＡＡ１０に登録しても良い。特定したメモリ領域のアドレスの物理アドレスやバスアドレスへのアドレス変換を行うかどうかは、模擬バスＡＡ０５および模擬メモリＡＡ０６の実装（模擬の程度）によって変わるが、メモリアクセス監視手段ＡＡ０８がメモリアクセスをフックするときに得られるアドレスの形式に一致させるのが実装上容易である。
【００４４】
ステップＢＢ１０では、メモリ領域特定手段ＡＡ０７は、取得した命令がキャッシュの無効化命令かどうかで処理を分岐させる。キャッシュの無効化命令であれば（ステップＢＢ１０がＹＥＳ）、ステップＢＢ１１に移る。キャッシュの無効化命令でない場合は（ステップＢＢ１０がＮＯ）、ステップＢＢ１４に移る。
【００４５】
ステップＢＢ１１では、メモリ領域特定手段ＡＡ０７は、キャッシュの無効化命令から無効化対象となるメモリ領域を特定する。
【００４６】
ステップＢＢ１２では、メモリ領域特定手段ＡＡ０７は、特定したキャッシュの無効化対象となるメモリ領域が、模擬中央演算装置ＡＡ０４が書き込みもしくは読み込みを行った後、キャッシュの無効化命令が実行されていないメモリ領域に含まれているかどうかをメモリ領域管理データベースＡＡ１０に問い合わせ、その結果で処理を分岐させる。含まれている場合（ステップＢＢ１２がＹＥＳ）、ステップＢＢ１３に移る。含まれていない場合は（ステップＢＢ１２がＮＯ）、処理を終了する。
【００４７】
ステップＢＢ１３では、メモリ領域特定手段ＡＡ０７は、無効化対象となるメモリ領域を、メモリ領域管理データベースＡＡ１０から削除する。
【００４８】
ステップＢＢ１４では、メモリ領域特定手段ＡＡ０７は、取得した命令がキャッシュのクリーン命令かどうかで処理を分岐させる。キャッシュのクリーン命令であれば（ステップＢＢ１４がＹＥＳ）、ステップＢＢ１５に移る。キャッシュのクリーン命令でない場合は（ステップＢＢ１４がＮＯ）、処理を終了する。
【００４９】
ステップＢＢ１５では、キャッシュのクリーン命令からクリーン対象となるメモリ領域を特定する。
【００５０】
ステップＢＢ１６では、メモリ領域特定手段ＡＡ０７は、特定したキャッシュのクリーン対象となるメモリ領域が、模擬中央演算装置ＡＡ０４が書き込みを行った後、キャッシュのクリーン命令が実行されていないメモリ領域に含まれているかどうかをメモリ領域管理データベースＡＡ１０に問い合わせ、その結果で処理を分岐させる。含まれている場合（ステップＢＢ１６がＹＥＳ）、ステップＢＢ１７に移る。含まれていない場合は（ステップＢＢ１６がＮＯ）、処理を終了する。
【００５１】
ステップＢＢ１７では、クリーン対象となるメモリ領域を、模擬中央演算装置ＡＡ０４が書き込み、もしくは読み込みを行った後、キャッシュのクリーン命令が実行されていないメモリ領域から削除する。
【００５２】
図２による処理手順を行うことにより、メモリ領域特定手段ＡＡ０７は、模擬中央演算装置ＡＡ０４の実行する命令に基づいてキャッシュの一貫性に異常を発生させる可能性があるメモリ領域を特定することができる。
【００５３】
図３は、本発明の実施の形態におけるメモリアクセス監視手段ＡＡ０８が、キャッシュの一貫性に異常が生じる可能性があるアクセスを検出する際の処理手順の一例を示した図である。ここでは、模擬中央演算装置ＡＡ０４が書き込みを行った後、キャッシュのクリーン命令が実行されていないメモリ領域を、模擬マスタＡＡ０３が読み込むことで、キャッシュの一貫性に異常が生じる可能性のあるアクセスを検出するときの処理手順について説明する。
【００５４】
ステップＣＣ０１では、メモリアクセス監視手段ＡＡ０８は、模擬バスＡＡ０５を流れる模擬メモリＡＡ０６への読み込みアクセスの内容をフックし、メモリアクセスのアクセス元とアクセス対象のメモリ領域の情報を取得する。
【００５５】
ステップＣＣ０２では、メモリアクセス監視手段ＡＡ０８は、フックしたメモリアクセスのアクセス元を識別する。すなわち、模擬中央演算装置ＡＡ０４からのアクセスなのか、それとも模擬マスタＡＡ０３からのアクセスなのかを識別する。
【００５６】
ステップＣＣ０３では、メモリアクセス監視手段ＡＡ０８は、識別したアクセス元に基づき処理を分岐させる。アクセス元が模擬マスタＡＡ０３であれば（ステップＣＣ０３がＮＯ）、ステップＣＣ０４に移る。アクセス元が模擬中央演算装置ＡＡ０４であれば（ステップＣＣ０３がＹＥＳ）、処理を終了する。ここでアクセス元が模擬中央演算装置ＡＡ０４の場合に処理を終了させるのは、模擬中央演算装置ＡＡ０４からのアクセスの場合、模擬中央演算装置ＡＡ０４にはキャッシュが付属していることから、キャッシュの一貫性に異常は生じないためである。
【００５７】
ステップＣＣ０４では、メモリアクセス監視手段ＡＡ０８は、フックしたメモリアクセスのアクセス対象のメモリ領域が、模擬中央演算装置ＡＡ０４が書き込みを行った後、キャッシュのクリーン命令が実行されていないメモリ領域に含まれるかどうかを調べる。このとき、当該のメモリ領域の情報は、メモリ領域管理データベースＡＡ１０をメモリ領域特定手段ＡＡ０７が参照することで得ることができる。また、メモリアクセス監視手段ＡＡ０８は、メモリ領域管理データベースＡＡ１０に格納されているか否かで、キャッシュのクリーン命令が実行されていないメモリ領域か否かを判断することができる。
【００５８】
ステップＣＣ０５では、メモリアクセス監視手段ＡＡ０８は、ステップＣＣ０４で調べた結果に基づき、処理を分岐させる。フックしたメモリアクセスのアクセス対象のメモリ領域が、模擬中央演算装置ＡＡ０４が書き込みを行った後、キャッシュのクリーン命令が実行されていないメモリ領域に含まれていない場合（ステップＣＣ０５がＮＯ）、アクセスによってキャッシュの一貫性に異常は生じないため、処理を終了する。一部でも含まれている場合（ステップＣＣ０５がＹＥＳ）、ステップＣＣ０６に移る。
【００５９】
ステップＣＣ０６では、メモリアクセス監視手段ＡＡ０８が、キャッシュの一貫性に異常が生じる可能性があることをユーザ通知手段ＡＡ０９に通知し、通知を受けたユーザ通知手段ＡＡ０９が、キャッシュの一貫性に異常が生じた可能性があることを画面に出力表示する。なお、ここでは、画面に出力表示するとしたが、音声で表示しても、印刷してもよい。また、メモリアクセス監視手段ＡＡ０８からの通知をログとして蓄積し、複数の通知情報を一度に出力することも可能である。
【００６０】
図３による処理手順を採用することにより、模擬中央演算装置ＡＡ０４が書き込みを行った後、キャッシュクリーン命令が実行されていないメモリ領域に対する、模擬マスタＡＡ０３の読み込みアクセスを検出し、ユーザに通知することができる。
【００６１】
図４は、本発明の実施の形態におけるメモリアクセス監視手段ＡＡ０８が、キャッシュの一貫性に異常が生じる可能性があるアクセスを検出する際の処理手順の一例を示した図である。ここでは、模擬中央演算装置ＡＡ０４が書き込みもしくは読み込みを行った後、キャッシュの無効化命令が実行されていないメモリ領域に、模擬マスタＡＡ０３が書き込むことで、キャッシュの一貫性に異常が生じる可能性のあるアクセスを検出するときの処理手順について説明する。
【００６２】
ステップＥＥ０１では、メモリアクセス監視手段ＡＡ０８は、模擬バスＡＡ０５を流れる模擬メモリＡＡ０６への書き込みアクセスの内容をフックし、メモリアクセスのアクセス元とアクセス対象のメモリ領域の情報を取得する。
【００６３】
ステップＥＥ０２では、メモリアクセス監視手段ＡＡ０８は、フックしたメモリアクセスのアクセス元を識別する。すなわち、模擬中央演算装置ＡＡ０４からのアクセスなのか、それとも模擬マスタＡＡ０３からのアクセスなのかを識別する。
【００６４】
ステップＥＥ０３では、メモリアクセス監視手段ＡＡ０８は、識別したアクセス元に基づき処理を分岐させる。アクセス元が模擬マスタＡＡ０３であれば（ステップＥＥ０３がＮＯ）、ステップＥＥ０４に移る。アクセス元が模擬中央演算装置ＡＡ０４であれば（ステップＥＥ０３がＹＥＳ）、処理を終了する。ここでアクセス元が模擬中央演算装置ＡＡ０４の場合に処理を終了させるのは、模擬中央演算装置ＡＡ０４からのアクセスの場合、模擬中央演算装置ＡＡ０４にはキャッシュが付属していることから、キャッシュの一貫性に異常は生じないためである。
【００６５】
ステップＥＥ０４では、メモリアクセス監視手段ＡＡ０８は、フックしたメモリアクセスのアクセス対象のメモリ領域が、模擬中央演算装置ＡＡ０４が書き込みもしくは読み込みを行った後、キャッシュの無効化命令が実行されていないメモリ領域に含まれるかどうかを調べる。このとき、当該のメモリ領域の情報は、メモリ領域管理データベースＡＡ１０をメモリ領域特定手段ＡＡ０７が参照することで得ることができる。また、メモリアクセス監視手段ＡＡ０８は、メモリ領域管理データベースＡＡ１０に格納されているか否かで、キャッシュの無効化命令が実行されていないメモリ領域か否かを判断することができる。
【００６６】
ステップＥＥ０５では、メモリアクセス監視手段ＡＡ０８は、ステップＥＥ４で調べた結果に基づき、処理を分岐させる。フックしたメモリアクセスのアクセス対象のメモリ領域が、模擬中央演算装置ＡＡ０４が書き込みもしくは読み込みを行った後、キャッシュの無効化命令が実行されていないメモリ領域に含まれていない場合（ステップＥＥ０５がＮＯ）、アクセスによってキャッシュの一貫性に異常は生じないため、処理を終了する。含まれている場合（ステップＥＥ０５がＹＥＳ）、ステップＥＥ０６に移る。
【００６７】
ステップＥＥ０６では、メモリアクセス監視手段ＡＡ０８が、キャッシュの一貫性に異常が生じる可能性があることをユーザ通知手段ＡＡ０９に通知し、通知を受けたユーザ通知手段ＡＡ０９が、ユーザにキャッシュの一貫性に異常が生じた可能性があることを画面に出力表示する。なお、ここでは、画面に出力表示するとしたが、音声で表示しても、印刷してもよい。また、メモリアクセス監視手段ＡＡ０８からの通知をログとして蓄積し、複数の通知情報を一度に出力することも可能である。
【００６８】
図４による処理手順を採用することにより、模擬中央演算装置ＡＡ０４が書き込みもしくは読み込みを行った後、キャッシュ無効化命令が実行されていないメモリ領域に対する、模擬マスタＡＡ０３の書き込みアクセスを検出し、ユーザに通知することができる。
【００６９】
図５は、本発明の実施の形態におけるメモリ領域管理データベースＡＡ１０でメモリ領域の情報を管理する管理方法の例を示している。ここでは、メモリ領域の情報をリストで管理する例を示す。このリストは、模擬中央演算装置ＡＡ０４が書き込みを行った後、キャッシュのクリーン命令が実行されていないメモリ領域と、模擬中央演算装置ＡＡ０４が読み込みもしくは書き込みを行った後、キャッシュの無効化命令が実行されていないメモリ領域の情報を保持するために用いる。模擬中央演算装置ＡＡ０４が書き込みを行った後、キャッシュのクリーン命令が実行されていないメモリ領域と、模擬中央演算装置ＡＡ０４が読み込みもしくは書き込みを行った後、キャッシュの無効化命令が実行されていないメモリ領域は、それぞれ独立し、このリストを２つ用いて管理する。リストの構造は、２つとも同一で良いため、ここではリスト１つのみを例に取って記載する。一つのメモリ領域の情報は、開始アドレスと終了アドレスと、次のメモリ領域へのポインタを備えている。なお、本発明の実施の形態のメモリ領域管理データベースＡＡ１０として、リスト構造の例を示しているが、テーブル形式など別の管理方法を用いてもよい。メモリ領域特定手段ＡＡ０７によるメモリ領域の追加、削除、参照などの指示に基づき、メモリ領域管理データベースＡＡ１０で管理するメモリ領域の情報の更新や参照を行う。
【００７０】
図６は、本発明の実施の形態における、ユーザ通知の表示の一例を示した図である。キャッシュの一貫性異常の検出がなされると、ユーザ通知手段ＡＡ０９は表示装置ＡＡ１２へデバッグ情報を送る。そして、表示装置ＡＡ１２は、そのデバッグ情報を画面表示する。
【００７１】
ＧＧ０１は、ユーザ通知手段ＡＡ０９が表示装置ＡＡ１２へ送るデバッグ情報を示したものである。
【００７２】
ＧＧ０２は、表示装置ＡＡ１３が表示する異常の検出を示す画面表示の一例である。ここでは、キャッシュの一貫性に異常が生じた際の、キャッシュ一致不具合、不具合発生時の命令アドレス、不具合発生箇所の物理アドレスを、表示内容の例として挙げている。
【００７３】
図６で示される表示により、ユーザは異常の発生箇所を容易に知ることができる。
【００７４】
図７は、本発明の実施の形態における、模擬中央演算装置ＡＡ０４とメモリ領域特定手段ＡＡ０７の構成の一例を示した図である。模擬中央演算装置ＡＡ０４は、模擬プロセッサコアＨＨ０１と、模擬キャッシュＨＨ０２からなる。
【００７５】
ＨＨ０１は、模擬中央演算装置ＡＡ０４における演算処理を模擬する模擬プロセッサコアである。
【００７６】
ＨＨ０２は、模擬中央演算装置ＡＡ０４におけるキャッシュを模擬する模擬キャッシュである。
【００７７】
模擬プロセッサコアＨＨ０１は、模擬キャッシュＨＨ０２を介してメモリ読み書き命令を実行する。模擬キャッシュＨＨ０２は、模擬プロセッサコアＨＨ０１が要求するデータを自身が記憶している場合、模擬バスＡＡ０５へメモリアクセスの要求は行わず、自身が記憶するデータを模擬プロセッサコアに渡す。模擬プロセッサコアＨＨ０１が要求するデータを模擬キャッシュＨＨ０２が記憶していない場合、模擬キャッシュＨＨ０２は模擬バスＡＡ０５へメモリアクセスを要求し、模擬バスＡＡ０５から当該データの受け渡しを行う。このとき模擬キャッシュＨＨ０２は、新たに受け取ったデータを記憶する。模擬キャッシュＨＨ０２は、新たに受け取ったデータを記憶するための空きが無い場合、それまでに記憶していたデータを、模擬メモリへの書き戻しが必要なければ削除し、書き戻しが必要であれば、模擬バスＡＡ０５にメモリ書き込みを要求してデータを渡す。
【００７８】
メモリ領域特定手段ＡＡ０７は、模擬プロセッサコアＨＨ０１および模擬キャッシュＨＨ０２を監視することで、模擬マスタがアクセスするとキャッシュの一貫性に異常が生じる可能性があるメモリ領域を特定することができる。
【００７９】
本実施の形態では、模擬プロセッサコアＨＨ０１における命令実行の監視のみでメモリ領域を特定する方法について説明している。しかし、模擬マスタがアクセスするとキャッシュの一貫性に異常が生じる可能性があるメモリ領域の特定は、模擬キャッシュＨＨ０２で一時的に記憶するメモリ領域入れ替え時の当該入れ替えメモリ領域の監視と、当該メモリ領域が有効であることを示すＶａｌｉｄビットもしくは当該メモリ領域がキャッシュ上で書き換えられたことを示すＤｉｒｔｙビットの監視と、模擬プロセッサコアＨＨ０１におけるキャッシュ無効化命令、キャッシュクリーン命令実行の監視を併用することでも可能である。模擬キャッシュＨＨ０２のＤｉｒｔｙビット、Ｖａｌｉｄビットを用いて模擬マスタがアクセスするとキャッシュの一貫性に異常が生じる可能性があるメモリ領域を特定する方法については、図８にて説明する。
【００８０】
図７の模擬中央演算装置ＡＡ０４とメモリ領域特定手段ＡＡ０７の構成により、模擬マスタがアクセスするとキャッシュの一貫性に異常が生じる可能性があるメモリ領域を特定することができる。
【００８１】
図８は、模擬キャッシュＨＨ０２で記憶する情報の一例について示した図である。ここでは、Ｖａｌｉｄビット、Ｄｉｒｔｙビットを持つダイレクトマップ方式のキャッシュで記憶する情報を例として挙げるが、ｎウェイセットアソシアティブ方式、フルアソシアティブ方式などの異なる方式のキャッシュでもよい。また、記憶するデータとして、４語のメモリ領域を用いたが、メモリ領域のサイズはこれと異なってもよい。なお、模擬キャッシュＨＨ０２上に模擬プロセッサコアＨＨ０１が必要とするデータが存在しない場合に用いる模擬バスへのアクセス回路や、模擬プロセッサコアＨＨ０１の要求するデータのアドレスから、そのデータが模擬キャッシュＨＨ０２上に存在するかどうかを調べ、存在した場合にデータを出力する回路などの記載は省略している。
【００８２】
ＩＩ０１は、キャッシュのインデックスである。
【００８３】
ＩＩ０２は、キャッシュのＶａｌｉｄビットである。ＶａｌｉｄビットＩＩ０２は、そのエントリに記憶するメモリ領域が有効であるかどうかを示している。模擬プロセッサコアＨＨ０１がメモリ領域に対してキャッシュの無効化命令を実行すると、当該メモリ領域を格納したエントリのＶａｌｉｄビットは無効となる。また、模擬プロセッサコアＨＨ０１がメモリ読み書き命令を実行し、データを模擬キャッシュＨＨ０２に一時的に記憶すると、データを格納した当該エントリのＶａｌｉｄビットは有効となる。
【００８４】
ＩＩ０３は、キャッシュのＤｉｒｔｙビットである。ＤｉｒｔｙビットＩＩ０３は、そのエントリに記憶するメモリ領域のデータが、キャッシュ上で書き換えられたかどうかを示している。模擬プロセッサコアＨＨ０１がメモリ領域に対してのキャッシュのクリーン命令を実行すると、当該メモリ領域を格納したエントリのＤｉｒｔｙビットは無効となる。また、模擬プロセッサコアＨＨ０１がメモリ書き込み命令を実行すると、当該メモリ領域を格納したエントリのＤｉｒｔｙビットは有効となる。模擬プロセッサコアがメモリ読み込み命令を実行し、模擬キャッシュＨＨ０２で一時的に記憶するメモリ領域を変更する場合、当該メモリ領域を格納するエントリのＤｉｒｔｙビットは無効となる。
【００８５】
ＩＩ０４は、キャッシュのタグである。
【００８６】
ＩＩ０５は、キャッシュで一時的に記憶するデータ（メモリ領域）である。
【００８７】
模擬キャッシュＨＨ０２のＤｉｒｔｙビット、Ｖａｌｉｄビットを用いて模擬マスタがアクセスするとキャッシュの一貫性に異常が生じる可能性があるメモリ領域を特定する場合、メモリ領域特定手段ＡＡ０７は、模擬キャッシュＨＨ０２で一時的に記憶するメモリ領域入れ替えを監視する。
【００８８】
メモリ領域特定手段ＡＡ０７は、模擬キャッシュＨＨ０２で一時的に記憶するメモリ領域入れ替え時の入れ替えメモリ領域を監視し、キャッシュから追い出されるメモリ領域を特定する。このとき、メモリ領域特定手段ＡＡ０７は、追い出されるメモリ領域のエントリを調べ、Ｄｉｒｔｙビットが有効であれば、当該メモリ領域を模擬中央演算装置ＡＡ０４が書き込みを行った後、キャッシュのクリーン命令が実行されていないメモリ領域として、メモリ領域管理データベースＡＡ１０に追加する。また、メモリ領域特定手段ＡＡ０７は、追い出されるメモリ領域のエントリを調べ、Ｖａｌｉｄビットが有効であれば、当該メモリ領域を模擬中央演算装置ＡＡ０４が書き込みを行った後、キャッシュの無効化命令が実行されていないメモリ領域として、メモリ領域管理データベースＡＡ１０に追加する。
【００８９】
図８で示されるキャッシュの情報を用いることにより、模擬マスタがアクセスするとキャッシュの一貫性に異常が生じる可能性があるメモリ領域を特定しても良い。
【００９０】
以上により、本発明のキャッシュの一貫性異常検出装置によれば、メモリ領域特定手段ＡＡ０７が、キャッシュの一貫性に異常が発生する可能性があるメモリ領域（模擬中央演算装置ＡＡ０４が書き込みを行った後、キャッシュのクリーン命令が実行されていないメモリ領域、ならびに、模擬中央演算装置ＡＡ０４が書き込みもしくは読み込みを行った後、キャッシュの無効化命令が実行されていないメモリ領域）を特定する。また、メモリアクセス監視手段ＡＡ０８が、模擬マスタＡＡ０３によるメモリアクセスを監視することで、キャッシュに一貫性の異常が生じる可能性のあるメモリアクセスを判別し、ユーザ通知手段ＡＡ０９が、キャッシュの一貫性に異常が生じた可能性がある旨を通知する。つまり、本発明のキャッシュの一貫性異常検出装置によれば、シミュレータにおいて、キャッシュの一貫性に異常が発生する可能性のあるメモリ領域へのアクセスを検出することが可能となる。
【００９１】
キャッシュに記憶するメモリ領域が入れ替わると、当該メモリ領域はクリーン命令後、無効化命令が実行されたのに相当した状態となる。このため、適切にキャッシュのクリーン命令、もしくは無効化命令が実行されていなくても問題は発生しない。しかし、キャッシュに一時的に記憶しているメモリ領域が入れ替わるかどうかは、そのときどきの状況に依存するため、入れ替わらない場合に、キャッシュの一貫性に異常が発生する可能性がある。本発明のキャッシュの一貫性異常検出装置によれば、このキャッシュに一時的に記憶しているメモリ領域の入れ替え状況に依存せず、キャッシュのクリーン命令、もしくは無効化命令が実行されていないメモリ領域に対する周辺デバイスのアクセスを検出することができる。
【００９２】
また、シミュレータによって検出を行うため、製品ハードウェアで検証できるより早い段階で、キャッシュの一貫性についての検証が可能である。
【００９３】
さらに、シミュレータによって検出を行うため、キャッシュの一貫性異常検証のための機能を製品ハードウェアに搭載する必要がなく、製品ハードウェアのコストを増加することなしに、キャッシュの一貫性についての検証を行うことが可能となる。
【産業上の利用可能性】
【００９４】
本発明にかかるキャッシュの一貫性異常検出装置は、シミュレータによる異常検出機能を有し、組み込み機器の開発におけるテストやデバック用途に有用である。特に、ソフトウェアによりハードウェア制御を行う機器の検証に有用である。
【図面の簡単な説明】
【００９５】
【図１】本発明の実施の形態におけるキャッシュの一貫性異常検出装置の構成の一例を示すブロック図
【図２】本発明の実施の形態におけるメモリ領域特定手段ＡＡ０７が、キャッシュの一貫性に異常が発生する可能性があるメモリ領域を特定する際の処理手順の一例を示した図
【図３】本発明の実施の形態におけるメモリアクセス監視手段ＡＡ０８が、キャッシュの一貫性に異常が生じる可能性があるアクセスを検出する際の処理手順の一例を示した図
【図４】本発明の実施の形態におけるメモリアクセス監視手段ＡＡ０８が、キャッシュの一貫性に異常が生じる可能性があるアクセスを検出する際の処理手順の一例を示した図
【図５】本発明の実施の形態におけるメモリ領域管理データベースＡＡ１０で管理するメモリ領域の情報の一例を示す図
【図６】本発明の実施の形態におけるユーザ通知の表示の一例を示した図
【図７】本発明の実施の形態における模擬中央演算装置ＡＡ０４の構成の一例を示すブロック図
【図８】本発明の実施の形態における模擬キャッシュＨＨ０２が記憶する情報の一例を示した図
【符号の説明】
【００９６】
ＡＡ０１    シミュレータ
ＡＡ０２    シミュレーションターゲット
ＡＡ０３    模擬マスタ
ＡＡ０４    模擬中央演算装置
ＡＡ０５    模擬バス
ＡＡ０６    模擬メモリ
ＡＡ０７    メモリ領域特定手段
ＡＡ０８    メモリアクセス監視手段
ＡＡ０９    ユーザ通知手段
ＡＡ１０    メモリ領域管理データベース
ＡＡ１１    ＰＣ
ＡＡ１２    表示装置
ＡＡ１３    入力装置
ＧＧ０１    デバッグ情報
ＧＧ０２    異常の検出を示す画面表示
ＨＨ０１    模擬プロセッサコア
ＨＨ０２    模擬キャッシュ
【図１】
2008186348.tif 000003
【図２】
2008186348.tif 000004
【図３】
2008186348.tif 000005
【図４】
2008186348.tif 000006
【図５】
2008186348.tif 000007
【図６】
2008186348.tif 000008
【図７】
2008186348.tif 000009
【図８】
2008186348.tif 000010