(57)【特許請求の範囲】
【請求項１】
複数のタスクを実行する１つ以上のプロセッサと、前記複数のタスクによって共有されるダイレクトメモリアクセスコントローラとを有するシステムＬＳＩの動作を検証するシミュレーション装置であって、
前記ダイレクトメモリアクセスコントローラによる転送開始と転送終了とを監視する監視手段と、
前記プロセッサが実行しているタスク番号を取得する取得手段と、
前記監視手段による監視の結果得られた前記転送開始に基づいて前記取得手段により取得したタスク番号を、前記ダイレクトメモリアクセスコントローラを起動したタスク番号として保持し、保持しているタスク番号を前記監視手段による監視の結果得られた前記転送終了に基づいて解放し、前記保持しているタスク番号と、起動されたダイレクトメモリアクセスコントローラを示す情報と、をシミュレーション結果として関連付けて出力する関連付け手段と、
を備えることを特徴とするシミュレーション装置。
【請求項２】
複数のタスクを実行する１つ以上のプロセッサと、前記複数のタスクによって共有されるダイレクトメモリアクセスコントローラとを有するシステムＬＳＩの動作を検証するシミュレーション方法であって、
監視手段が、前記ダイレクトメモリアクセスコントローラによる転送開始と転送終了とを監視する監視工程と、
取得手段が、前記プロセッサが実行しているタスク番号を取得する取得工程と、
関連付け手段が、前記監視工程による監視の結果得られた前記転送開始に基づいて前記取得手段により取得したタスク番号を、前記ダイレクトメモリアクセスコントローラを起動したタスク番号として保持し、保持しているタスク番号を前記監視手段による監視の結果得られた前記転送終了に基づいて解放し、前記保持しているタスク番号と、起動されたダイレクトメモリアクセスコントローラを示す情報と、をシミュレーション結果として関連付けて出力する関連付け工程と、
を有することを特徴とするシミュレーション方法。
【請求項３】
複数のタスクを実行する１つ以上のプロセッサと、前記複数のタスクによって共有されるダイレクトメモリアクセスコントローラとを有するシステムＬＳＩの動作を検証するシミュレーション手順をコンピュータに実行させるためのプログラムであって、
前記ダイレクトメモリアクセスコントローラによる転送開始と転送終了とを監視する監視手順と、
前記プロセッサが実行しているタスク番号を取得する取得手順と、
前記監視手順による監視の結果得られた前記転送開始に基づいて前記取得手段により取得したタスク番号を、前記ダイレクトメモリアクセスコントローラを起動したタスク番号として保持し、保持しているタスク番号を前記監視手段による監視の結果得られた前記転送終了に基づいて解放し、前記保持しているタスク番号と、起動されたダイレクトメモリアクセスコントローラを示す情報と、をシミュレーション結果として関連付けて出力する関連付け手順と、
をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、シミュレーション装置及び方法に関するものである。
【背景技術】
【０００２】
ハードウェア及びソフトウェアを結合した協調シミュレーションは、システムＬＳＩの開発において、ソフトウェアの早期開発や、ハードウェアアーキテクチャ探索、システムの性能検証、などを行うために広く用いられている。
【０００３】
近年、組み込みシステムでは、システムの高機能化に伴う制御の複雑化により、リアルタイムＯＳを用いたマルチタスクプログラムの実行が一般的である。また、リアルタイムＯＳを用いることで、複数のソフトウェア開発者が個別にタスクを開発することが可能となる。そして、最終的に各ソフトウェア開発者が開発した複数のタスクはシステムとして組み合わせて実行される。
【０００４】
一方、組み込みシステムで、リアルタイムＯＳを用いたマルチタスクプログラムを実行する場合に、複数のタスクが共通のハードウェア資源を使用することが多い。このため、タスク間でハードウェア資源の競合問題が発生する（例えば、特許文献１参照）。
【０００５】
尚、このハードウェア資源の競合問題とは、以下のように、複数タスクが同一のハードウェア資源を使用する際に起こる問題である。
（１）複数タスクが共通の外部メモリを使用する場合、あるタスクが書き込んだデータを別のタスクが上書きしてしまう。
（２）複数タスクが共通のＤＭＡＣを使用する場合、あるタスクが使用中に別のタスクが使用しようとして設定を変えてしまう。
（３）複数タスクが同一のキャッシュメモリを使用する場合、あるタスクが使用中のデータを別のタスクが追い出し、次に使用するときに再び外部メモリからキャッシュにデータを読みこまなければならない。
【０００６】
このようなハードウェア資源の競合問題は、ハードウェアの意図しない動作や、意図しない多大なバストランザクションを発生させる。その結果、システムの誤動作、システムの性能低下、共有のハードウェア資源でデータの破壊、等の不具合が生じる。
【０００７】
特に、複数のソフトウェア開発者が個別にタスクを開発した場合、開発者間での整合が取れていなければ、タスク間でのハードウェア資源の競合問題はより顕著に現れてくる。そのため、ソフトウェア開発者は、予めハードウェア及びソフトウェア協調検証でマルチタスクのシステム動作を検証している。
【特許文献１】特開平06-175865号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
従来、ハードウェア及びソフトウェア協調検証装置では、システム動作を解析するために、システムバスに流れるデータを監視し、ソフトウェアの動作を解析するバス解析手法が用いられている。このバス解析手法では、バス上に発生するトランザクションとハードウェア資源とを関連付けた情報を提供している。例えば、ハードウェア資源はマスタデバイスやスレーブデバイスである。そして、トランザクションが発生したときのマスタＩＤを確認し、どのマスタデバイスがどのくらいのトランザクションを発しているかを、バスマスタ毎のバス負荷の情報として提供している。また、トランザクションが発生したときのアドレスを確認し、どのスレーブデバイスに対してアクセスが多いか、等の情報も提供している。
【０００９】
しかし、ハードウェア及びソフトウェア協調検証で、ハードウェア資源の競合が問題となり得るマルチタスクのプログラム動作を検証する場合、ソフトウェア開発者には、どのトランザクションがどのタスクに起因しているか、という情報が必要になる。なぜなら、ソフトウェア開発者が検証でシステムの誤動作や、システムの性能低下を確認した場合、その原因はタスク間のハードウェア資源の競合問題である可能性があり、解析や修正等はタスク単位で行うからである。
【００１０】
従来のトランザクションとハードウェア資源とを関連付けた情報では、ハードウェア資源の競合問題を起こしていることの発見や、引き起こしているタスクの早期把握が困難である。
【００１１】
例えば、キャッシュを有するプロセッサの場合、バスに発生するトランザクションはキャッシュの使用方法に大きく依存する。マルチタスクのプログラムでは、個別にタスクを動作させている時にはキャッシュは１つのタスクのみで占有できるのでソフトウェア開発者が意図したキャッシュの使い方ができ、トランザクションの発生を抑えられる。
【００１２】
しかし、複数のタスクを動作させると、あるタスクで使用しているキャッシュのデータを別のタスクが追い出して使用する状況が起こる。即ち、データを追い出されたタスクが次に使用するときにはキャッシュミスが起こり、キャッシュ内のデータを追い出して外部メモリから読み込むことになる。その結果、ソフトウェア開発者が意図しないトランザクションが発生し、システムの性能が低下することがある。
【００１３】
従来のハードウェア及びソフトウェア協調検証の解析手法では、バストランザクションが増えることは確認できるが、その要因を特定することは困難であった。
【００１４】
本発明は、上記課題を解決するためになされたもので、バスアクセスとそのアクセスを実行したタスクとを関連付けて出力することを目的とする。
【課題を解決するための手段】
【００１５】
本発明は、複数のタスクを実行する１つ以上のプロセッサと、前記複数のタスクによって共有されるダイレクトメモリアクセスコントローラとを有するシステムＬＳＩの動作を検証するシミュレーション装置であって、
前記ダイレクトメモリアクセスコントローラによる転送開始と転送終了とを監視する監視手段と、
前記プロセッサが実行しているタスク番号を取得する取得手段と、
前記監視手段による監視の結果得られた前記転送開始に基づいて前記取得手段により取得したタスク番号を、前記ダイレクトメモリアクセスコントローラを起動したタスク番号として保持し、保持しているタスク番号を前記監視手段による監視の結果得られた前記転送終了に基づいて解放し、前記保持しているタスク番号と、起動されたダイレクトメモリアクセスコントローラを示す情報と、をシミュレーション結果として関連付けて出力する関連付け手段と、
を備えることを特徴とする。
【００１７】
また、本発明は、複数のタスクを実行する１つ以上のプロセッサと、前記複数のタスクによって共有されるダイレクトメモリアクセスコントローラとを有するシステムＬＳＩの動作を検証するシミュレーション方法であって、
監視手段が、前記ダイレクトメモリアクセスコントローラによる転送開始と転送終了とを監視する監視工程と、
取得手段が、前記プロセッサが実行しているタスク番号を取得する取得工程と、
関連付け手段が、前記監視工程による監視の結果得られた前記転送開始に基づいて前記取得手段により取得したタスク番号を、前記ダイレクトメモリアクセスコントローラを起動したタスク番号として保持し、保持しているタスク番号を前記監視手段による監視の結果得られた前記転送終了に基づいて解放し、前記保持しているタスク番号と、起動されたダイレクトメモリアクセスコントローラを示す情報と、をシミュレーション結果として関連付けて出力する関連付け工程と、
を有することを特徴とする。
【発明の効果】
【００１９】
本発明によれば、例えば、複数のタスクが共有のダイレクトメモリコントローラを使用する場合、あるタスクが使用中に別のタスクが使用しようとして設定を変えてしまうという現象を好適にシミュレーション結果としてユーザに分かり易く提示することができる。
【発明を実施するための最良の形態】
【００２０】
以下、図面を参照しながら発明を実施するための最良の形態について詳細に説明する。
【００２１】
［第１の実施形態］
図１は、第１の実施形態におけるシミュレーション装置の構成の一例を示す図である。図１において、１０１は検証対象のシステムＬＳＩであり、複数のタスクを実行する１つ以上のプロセッサ１０２と、複数のタスクが共有するハードウェア資源１０３とを含み、それぞれシステムバス１０４に接続されている。
【００２２】
１０５はハードウェア資源１０３の動作を監視するハードウェア監視部であり、ハードウェア資源１０３がバスのトランザクションを発生させる動作などを監視する。１０６は各々のプロセッサ１０２が実行しているタスク番号を取得するタスク情報取得部である。１０７はハードウェア動作監視部１０５が得た監視動作情報と、タスク情報取得部１０６が得たタスク情報とを関連付ける関連付け部である。そして、関連付け部１０７はハードウェア資源１０３の動作の変化を捉え、その動作に起因するタスク番号を特定した情報を解析結果１０８としてハードディスクに格納又は不図示のモニタに表示する。
【００２３】
図２は、図１に示すハードウェア資源１０３の具体的な一様態を示す図である。図２において、２０１〜２０８は図１に示す１０１〜１０８にそれぞれ対応し、ここではハードウェア資源１０３をＤＭＡコントローラ２０３としたものである。このシミュレーション装置では、複数のタスクによって共有されるＤＭＡコントローラ２０３の動作と、ＤＭＡコントローラ２０３に起因するタスク番号とを特定した情報を解析結果２０８として提供する。尚、この解析結果２０８は、シミュレーション装置のハードディスクに記憶され、タスクのトレースに利用される。
【００２４】
以上の構成を有する第１の実施形態におけるシミュレーション装置の動作について説明する。最初に、図３を用いて、タスク情報取得部２０６について説明する。
【００２５】
図３は、プロセッサ２０２とそれを制御するプログラムとの関係を示す図である。図３に示すプロセッサ２０２において、３１０は命令セットシミュレータ（ＩＳＳ）であり、特定の命令セットに基づき実際のプロセッサと同様の動作を行うシミュレーションモデルである。３０１はリアルタイムＯＳ、３０２はタスクプログラムであり、このプロセッサ２０２と共に、マルチタスク環境を提供する。このリアルタイムＯＳ３０１は、発生したイベントに応じてプロセッサ２０２にタスクプログラム３０２の各タスクを実行させる。また、各タスクの切り替え（コンテキストスイッチ）は、タスクの状態と優先度に応じてリアルタイムＯＳ３０１内のスケジューラによって選択される。
【００２６】
通常、リアルタイムＯＳ３０１は、図４に示すタスク制御ブロック（ＴＣＢ）を有しており、このタスク制御ブロック（ＴＣＢ）に格納されているタスク情報に応じてタスクのスケジューリングを行う。
【００２７】
図４は、タスク制御ブロック（ＴＣＢ）の構成例を示す図である。図４に示すように、タスク制御ブロック（ＴＣＢ）は、タスク毎にタスク番号、コンテキスト情報、タスクの優先度、及びタスクポインタを有する。尚、コンテキスト情報は、タスクを中断した際のＣＰＵのプログラムカウンタ、スタックポインタ、汎用レジスタなどの各種情報である。また、タスクポインタは、タスクプログラムが存在するメモリアドレス情報（ポインタ）である。
【００２８】
また、リアルタイムＯＳ３０１は、コンテキストスイッチが実行される際にタスク制御ブロック（ＴＣＢ）から同時にカレントタスクに対するタスク番号を取得する。ここで、タスク情報取得部２０６はプロセッサ２０２が実行する命令をトレースし、コンテキストスイッチが実行される毎に、リアルタイムＯＳ３０１が取得したカレントタスクのタスク番号を取得して記憶する。そして、タスク情報取得部２０６は記憶したタスク番号を関連付け部２０７に通知する。
【００２９】
次に、図５及び図６を用いて、ＤＭＡコントローラ２０３及びハードウェア動作監視部２０５の動作について説明する。
【００３０】
図５は、ＤＭＡコントローラ２０３の制御レジスタの一覧を示す図である。図５に示すように、制御レジスタは、アドレスレジスタ５０１、転送長レジスタ５０２、転送モードレジスタ５０３、及び転送制御レジスタ５０４で構成されている。このアドレスレジスタ５０１には、ＤＭＡの転送先アドレスが指定される。また、転送長レジスタ５０２には、ＤＭＡ転送の転送長が指定される。更に、転送モードレジスタ５０３には、バースト転送などのＤＭＡ転送の転送モードが指定される。そして、転送制御レジスタ５０４はＤＭＡ転送の起動と停止を制御するためのレジスタである。
【００３１】
尚、レジスタ一覧は、説明のために分かり易く例示したものであり、ここに示す構成に限定されるものではない。
【００３２】
図６は、プロセッサ２０２の制御フローとＤＭＡコントローラ２０３の動作との関係を示す図である。まず、プロセッサ２０２が制御フローを開始すると、ＤＭＡコントローラ２０３のアドレスレジスタ５０１に転送先のアドレスを設定する（Ｓ６０１）。そして、プロセッサ２０２は、ＤＭＡコントローラ２０３の転送長レジスタ５０２にＤＭＡ転送の転送長を設定する（Ｓ６０２）。次に、プロセッサ２０２は、ＤＭＡコントローラ２０３の転送モードレジスタ５０３にバースト転送などの転送モードを設定する（Ｓ６０３）。次に、プロセッサ２０２は、ＤＭＡコントローラ２０３の転送制御レジスタ５０４の起動ビットをセットする（Ｓ６０４）。
【００３３】
これにより、ＤＭＡコントローラ２０３が、制御レジスタ５０１〜５０４に設定された値に基づいてＤＭＡ転送を開始する（Ｓ６０５）。尚、一旦ＤＭＡ転送が開始されると、ＤＭＡコントローラ２０３は、プロセッサ２０２とは独立して動作するため、プロセッサ２０２で実行されているタスク３０２との依存関係はなくなる。
【００３４】
次に、ＤＭＡコントローラ２０３において、設定された転送長のＤＭＡ転送が完了すると、転送制御レジスタ５０４の起動ビットをクリアし、終了割り込みをプロセッサ２０２に伝えることにより一連のＤＭＡ転送を完了する（Ｓ６０６）。また、プロセッサ２０２は、ＤＭＡコントローラ２０３がＤＭＡ転送を実行中に、転送制御レジスタ５０４の停止ビットをセットすることによりＤＭＡ転送を中断させることができる（Ｓ６０７）。この場合、起動ビットは、自動的にクリアされる。
【００３５】
上述のハードウェア動作監視部２０５は、常に転送制御レジスタ５０４の起動ビットを監視しており、起動ビットがセットされるとＤＭＡ転送が実行中と認識し、クリアされるとＤＭＡ転送が停止したと認識する。そして、ハードウェア動作監視部２０５は、ＤＭＡ転送の動作情報を関連付け部２０７に通知する。
【００３６】
次に、図７を用いて、プロセッサ２０２の制御フロー及びＤＭＡコントローラ２０３と関連付け部２０７の動作との関係について説明する。尚、図７に示す制御フローとＤＭＡコントローラ２０３の動作は図６に示すものと同じである。
【００３７】
図７は、図６に示す制御フロー及びＤＭＡＣ動作とタスク関連付けとの関係を示す図である。上述したように、プロセッサ２０２が制御フローを開始し、制御レジスタ５０１〜５０３の設定を行い、ＤＭＡコントローラ２０３の転送制御レジスタ５０４の起動ビットをセットする（Ｓ６０４）。これにより、ハードウェア動作監視部２０５は、関連付け部２０７にＤＭＡコントローラ２０３の起動情報を通知する。この時、関連付け部２０７はタスク情報取得部２０６から通知されているカレントタスクのタスク番号をＤＭＡコントローラ２０３の起動タスク情報として記憶する（Ｓ７０１）。
【００３８】
一方、転送長レジスタ５０２に設定された転送長のＤＭＡ転送が終了し（Ｓ６０６）、ＤＭＡコントローラ２０３が起動ビットをクリアすると、ハードウェア動作監視部２０５は、関連付け部２０７にＤＭＡコントローラ２０３の停止情報を通知する。これにより、関連付け部２０７は、記憶していたＤＭＡコントローラ２０３の起動タスク情報を開放する（Ｓ７０２）。また、プロセッサ２０２がＤＭＡコントローラ２０３の起動中に、転送制御レジスタ５０４の停止ビットをセットし（Ｓ６０７）、ＤＭＡ転送を中断した場合、起動ビットは自動的にクリアされる。そのため、ハードウェア動作監視部２０５は、関連付け部２０７にＤＭＡコントローラ２０３の停止情報を通知する。この場合も、上述した場合と同様に、関連付け部２０７は記憶していたＤＭＡコントローラ２０３の起動タスク情報を開放する（Ｓ７０１）。
【００３９】
以上により、関連付け部２０７は、ＤＭＡコントローラ２０３が起動中はそれを起動したタスク情報を記憶しており、ＤＭＡコントローラ２０３が実行するＤＭＡ転送とそれを起動したタスク情報を関連付けることが可能となる。
【００４０】
また、複数のＤＭＡコントローラを有するシステムＬＳＩでは、ハードウェア動作監視部２０５が関連付け部２０７に対してＤＭＡコントローラ毎に起動と停止情報を通知するよう構成する。これにより、関連付け部２０７がＤＭＡコントローラ毎に起動したタスク情報を記憶することも可能となる。
【００４１】
図８は、関連付け部２０７における複数のＤＭＡコントローラとそれを起動したタスク情報の関連付け結果の一様態を示す図である。図８に示すように、シミュレーション時間に対して起動された複数のＤＭＡコントローラの番号と、それを起動したタスク番号とが記憶される。
【００４２】
尚、このように対応付けされた情報は、トランザクション情報などと組み合わせて様々な形式で解析結果２０８として出力することが可能である。
【００４３】
図９は、第１の実施形態における解析結果２０８の一例を示す図である。これは、従来のバストランザクション情報にタスク番号を関連付けて示した結果である。これにより、複数のＤＭＡコントローラが間違った領域にＤＭＡ転送を行ったなどの意図しない動作を実行したタスクを容易に特定することができる。また、プログラムの修正も容易となる。更に、プロセッサ２０２とは独立して動作する複数のＤＭＡコントローラにタスクを関連付けることで、従来のＣＰＵのみのタスク別バス占有率に比べてシステム全体のタスク別バス占有率として詳細化することができる。そのため、より効果的なシステム全体の性能評価を行うことが可能となる。
【００４４】
以上説明したように第１の実施形態によれば、マルチタスク動作状況下でＤＭＡコントローラが行うＤＭＡ転送と、それが起因するタスク情報を関連付けた情報を提供することで、ＤＭＡコントローラを使用するタスクを容易に特定することが可能となる。従って、プログラム開発（デバッグ）期間を短縮させ、プログラムの最適化によりシステム全体の性能を向上させることが可能となる。
【００４５】
［第２の実施形態］
次に、図面を参照しながら本発明に係る第２の実施形態について詳細に説明する。第１の実施形態では、ハードウェア資源としてのＤＭＡコントローラを例に挙げて説明したが、第２の実施形態ではキャッシュを例に挙げて説明する。
【００４６】
図１０は、第２の実施形態におけるシミュレーション装置の構成の一例を示す図である。図１０において、１００１は検証対象のシステムＬＳＩであり、複数のタスクを実行する１つ以上のプロセッサ１００２と、複数のタスクが共有するハードウェア資源としてのキャッシュ１００３がシステムバス１００４に接続されている。
【００４７】
１００５はキャッシュ１００３の動作を監視するハードウェア監視部であり、キャッシュ１００３がバスのトランザクションを発生させる動作などを監視する。１００６はプロセッサ１００２が実行しているタスク番号を取得するタスク情報取得部である。１００７はハードウェア動作監視部１００５が得た監視動作情報と、タスク情報取得部１００６が得たタスク情報とを関連付ける関連付け部である。
【００４８】
ここで、関連付け部１００７は複数のタスクが共有するキャッシュ１００３を制御するキャッシュコントローラが発生するバスのトランザクションと、タスク番号とを特定した情報を解析結果１００８として提供する。更に、このキャッシュ１００３から追い出されたデータのタスクと、追い出したタスクとを関連付けた情報を提供する。１００９はシステムのメインメモリである。
【００４９】
以上の構成を有する第２の実施形態におけるシミュレーション装置の動作について説明する。この第２の実施形態も、図３に示すリアルタイムＯＳ３０１及びタスクプログラム３０２がプロセッサ１００２と共に、マルチタスク環境を提供する。そして、プロセッサ１００２は、図４に示すタスク制御ブロックに格納されているタスク情報に応じてタスクのスケジューリングを行う。また、タスク情報取得部１００６の動作は、第１の実施形態と同様であり、その説明は省略する。
【００５０】
次に、図１１及び図１２を用いて、キャッシュ１００３とキャッシュの動作を監視するハードウェア動作監視部１００５の動作について説明する。
【００５１】
図１１は、キャッシュ１００３を制御する制御系の構成の一例を示す図である。ここで、キャッシュ書き込み方式はライトバック方式とする。
【００５２】
図１１において、１１０１はキャッシュメモリであり、ダーティフラグ領域１１０２、タグ領域１１０３、データ領域１１０４が割り当てられている。このダーティフラグ領域１１０２には、キャッシュラインをメインメモリ１００９へ書き戻す必要があるか否かを示すダーティフラグが格納される。また、タグ領域１１０３には、メインメモリ１００９のアドレス情報を示すタグが格納される。更に、データ領域１１０４には、メインメモリ１００９のコピーデータが格納される。
【００５３】
第２の実施形態におけるキャッシュ１００３は、一回のアクセス単位であるキャッシュラインを４ワードとし、キャッシュライン毎にダーティフラグ１１０２、タグ１１０３を持つものとする。そして、マッピング方式は、ダイレクトマッピング方式とし、アクセスするキャッシュのアドレスはプロセッサアドレス１１０８で一意に決定する。ここでは、キャッシュメモリ１１０１のサイズを４Ｋバイトとし、アドレスは下位１２ビットで決定し、その他のビットをタグ１１０３に格納する。
【００５４】
１１０５はキャッシュメモリ１１０１の読み書きを制御するキャッシュコントローラであり、ヒット判定部１１０６及びデータ転送部１１０７を有する。ヒット判定部１１０６はプロセッサアドレス１１０８とタグ１１０３との比較を行い、プロセッサの要求データがキャッシュメモリ１１０１内に存在するか否かを判定する。ここでは、プロセッサアドレス１１０８とタグ１１０３とが一致する場合、存在すると判定して「ヒット」とする。また、一致しない場合、存在しないと判定して「ミスヒット」とする。
【００５５】
データ転送部１１０７は、ヒット判定部１１０６の判定に従ってプロセッサ１００２との間のデータ転送１１０９や、キャッシュメモリ１１０１とシステムバス１００４との間のデータ転送１１１０を行う。
【００５６】
ここで、図１２を用いて、プロセッサ１００２がメインメモリ１００９へアクセスする際のキャッシュコントローラ１１０５の動作について説明する。まずプロセッサ１００２がアクセスするデータがキャッシュ１００３に格納されていない場合の動作について説明する。
【００５７】
図１２は、キャッシュコントローラ１１０５の動作を示すフローチャートである。まず、プロセッサ１００２からメインメモリ１００９へのアクセスであれば（Ｓ１２０１）、ヒット判定部１１０６がプロセッサアドレス１１０８とタグ１１０３とを比較し、ヒットかミスヒットかを判定する（Ｓ１２０２）。ここで、プロセッサアドレス１１０８とタグ１１０３とが一致していなければミスヒットとなり、リプレースするキャッシュラインを選択する（Ｓ１２０３）。このリプレースするキャッシュラインは、プロセッサアドレス１１０８から一意に決定する。
【００５８】
次に、選択したキャッシュラインのダーティフラグ１１０２がセットされているか否かを判定する（Ｓ１２０４）。ここで、ダーティフラグ１１０２がセットされていればキャッシュライン分のデータをメインメモリ１００９へライトバックし、ダーティフラグ１１０２をクリアする（Ｓ１２０５）。そして、キャッシュコントローラ１１０５はシステムバス１００４へライトトランザクションを発生させる。また、ダーティフラグ１１０２がセットされていなければメインメモリ１００９へのライトバックは行わない。
【００５９】
次に、ライトバックが終了後、或いはキャッシュラインが選択された後、メインメモリ１００９からキャッシュ１００３へキャッシュライン分のデータをリードし、キャッシュを更新する（Ｓ１２０６）。このキャッシュ更新をキャッシュフィルと呼ぶ。このとき、システムバス１００４へリードトランザクションを発生させる。
【００６０】
キャッシュフィル後、プロセッサ１００２のアクセスがライトアクセスであるか否かを判定する（Ｓ１２０７）。ここで、ライトアクセスであれば、プロセッサ１００２からのデータをキャッシュメモリ１１０１に書き込み、ダーティフラグを立てる（Ｓ１２０８）。また、ライトアクセスでなければ、キャッシュメモリ１１０１から読み出したデータをプロセッサ１００２へ渡す（Ｓ１２０９）。
【００６１】
尚、この例では、キャッシュフィル後にプロセッサ処理実行を許可する制御とするが、これに制限されるものではない。
【００６２】
次に、プロセッサ１００２がアクセスするデータがキャッシュメモリ１１０１内に格納されている場合の動作について説明する。この場合、上述したヒット判定（Ｓ１２０２）によりヒットと判定され、Ｓ１２０７へ進み、プロセッサ１００２のアクセスがライトアクセスであるか否かを判定する。ここで、ライトアクセスであれば、プロセッサ１００２からのデータをキャッシュメモリ１１０１に書き込み、ダーティフラグ１１０２を立てる（Ｓ１２０８）。また、ライトアクセスでなければ、キャッシュメモリ１１０１から読み出したデータをプロセッサ１００２へ渡す（Ｓ１２０９）。この場合、システムバス１００４のトランザクションは発生しない。
【００６３】
また、ハードウェア動作監視部１００５は、キャッシュ１００３におけるヒット判定部１１０６、ダーティフラグ１１０２、プロセッサアドレス１１０８を監視する。そして、ハードウェア動作監視部１００５は、キャッシュメモリ１１０１の更新時に、関連付け部１００７に更新を通知すると共に、プロセッサアドレス１１０８を渡す。
【００６４】
次に、図１３及び図１４を用いて、プロセッサ１００２によって実行されるタスクと、キャッシュ１００３における動作とを関連付ける関連付け部１００７の動作について説明する。
【００６５】
図１３は、関連付け部１００７で生成される関連付けテーブルの構成例を示す図である。図１３において、１３０１はキャッシュメモリ１１０１のアドレスであり、１３０２はタグ、１３０３はキャッシュメモリ１１０１にデータを入れたタスク番号である。ここで、アドレス１３０１及びタグ１３０２はハードウェア動作監視部１００５から受け取ったプロセッサアドレス１１０８により決定する。そして、タスク番号１３０３はタスク情報取得部１００６から受け取ったタスク情報により決定する。
【００６６】
図１３に示す例では、キャッシュメモリ１１０１の0x000番地にメインメモリ１００９のアドレス0xa8000000のデータが存在し、タスク２が使用中であることが示されている。また、キャッシュメモリ１１０１の0x010番地にメインメモリ１００９のアドレス0xa8000010のデータが存在し、タスク２が使用中であることが示されている。更に、キャッシュメモリ１１０１の0x020番地にメインメモリ１００９のアドレス0x8130f020のデータが存在し、タスク１が使用中であることが示されている。
【００６７】
次に、図１４を用いて、プロセッサ１００２の動作、キャッシュコントローラ１１０５が発生するシステムバストランザクション、及び関連付け部１００７の基本動作について説明する。
【００６８】
図１４は、システムバストランザクションのモニタ例を示す図である。まず、タスク０がメインメモリ１００９のアドレス0xa0000180にシングルリードアクセスを行う（Ｓ１４０１）。これにより、キャッシュコントローラ１１０５は初期状態ではキャッシュメモリ１１０１にデータが格納されていないのでミスヒットと判定する。そして、メインメモリ１００９のデータをリード転送し、キャッシュフィルする。このとき、システムバス１００４にキャッシュライン分のリードトランザクションを発生させる（Ｓ１４１１）。このリード転送が終了すると、次のプロセッサ処理が実行される。
【００６９】
ここで、キャッシュメモリ１１０１は更新されたので、関連付け部１００７は関連付けテーブルを更新する。この場合、プロセッサアドレス１１０８が「0xa0000180」なので、アドレス１３０１を「0x180」、タグ１３０２を「0xa0000」とする。そして、user task１３０３はタスク情報取得部１００６から受け取り、「０」とする（Ｓ１４２１）。
【００７０】
次に、タスク１がメインメモリ１００９のアドレス0x81000180にシングルライトアクセスを行う（Ｓ１４０２）。これにより、キャッシュコントローラ１１０５はヒット判定部１１０６がアドレス0x180、タグ0xa0000と比較し、一致しないのでミスヒットと判定し、ダーティフラグ１１０２をチェックする。アドレス0x180に対してライトは行われておらず、ダーティフラグ１１０２はセットされていないのでライトバックは行われない。そして、メインメモリ１００９のデータをリード転送し、データを上書きしてキャッシュフィルする。このとき、システムバス１００４にキャッシュライン分のリードトランザクションを発生させる（Ｓ１４１２）。このリード転送が終了すると、キャッシュメモリ１１０１にデータを書き込み、ダーティフラグ１１０２をセットする。
【００７１】
ここで、キャッシュメモリ１１０１は更新されたので、関連付け部１００７は関連付けテーブルを更新する。この場合、プロセッサアドレス１１０８が「0x81000180」なので、アドレス１３０１を「0x180」、タグ１３０２を「0x81000」とする。そして、user task１３０３はタスク情報取得部１００６から受け取り、「１」とする（Ｓ１４２２）。
【００７２】
次に、タスク０がメインメモリ１００９のアドレス0xa0000184にシングルリードアクセスを行う（Ｓ１４０３）。これにより、キャッシュコントローラ１１０５はヒット判定部１１０６がアドレス0x180、タグ0x81000と比較し、一致しないのでミスヒットと判定し、ダーティフラグ１１０２をチェックする。アドレス0x180のダーティフラグ１１０２は、Ｓ１４１２でセットされたので、キャッシュライン分のデータをメインメモリ１００９へライトバックする。このとき、システムバス１００４にキャッシュライン分のライトトランザクションを発生させる（Ｓ１４１３）。ライト転送が終了すると、メインメモリ１００９のデータをリード転送し、キャッシュフィルする。このとき、システムバス１００４にキャッシュライン分のリードトランザクションを発生させる（Ｓ１４１４）。このリード転送が終了すると、次のタスクの処理が実行される。
【００７３】
ここで、キャッシュメモリ１１０１は更新されるので、関連付け部１００７は関連付けテーブルを更新する。この場合、プロセッサアドレス１１０８が「0xa0000180」なので、アドレス１３０１を「0x180」、タグ１３０２を「0xa0000」とする。そして、user task１３０３はタスク情報取得部１００６から受け取り、「０」とする（Ｓ１４２３）。
【００７４】
次に、タスク２がメインメモリ１００９のアドレス0x000ff180にシングルリードアクセスを行う（Ｓ１４０４）。これにより、キャッシュコントローラ１１０５はヒット判定部１１０６がアドレス0x180、タグ0xa0000と比較し、一致しないのでミスヒットと判定し、ダーティフラグ１１０２をチェックする。アドレス0x180に対してライトは行われておらず、ダーティフラグ１１０２はセットされていないので、ライトバックはしない。ここでは、メインメモリ１００９のデータをリード転送し、データを上書きしてキャッシュフィルする。このとき、システムバス１００４にキャッシュライン分のリードトランザクションを発生させる（Ｓ１４１５）。リード転送が終了すると、次のタスクの処理が実行される。
【００７５】
ここで、キャッシュメモリ１１０１は更新されるので、関連付け部１００７は関連付けテーブルを更新する。この場合、プロセッサアドレス１１０８が「0x000ff180」なので、アドレス１３０１を「0x180」、タグ１３０２を「0x000ff」とする。そして、user task１３０３はタスク情報取得部１００６から受け取り、「２」とする（Ｓ１４２４）。そして、関連付けテーブルのuser taskは次の更新まで保持される。
【００７６】
以上の動作は、タスク０に着目すると、Ｓ１４０１の動作でタスク０のデータをキャッシュフィルするが、Ｓ１４０２の動作でタスク１によって上書きされて、ライトされる。そのため、Ｓ１４０３の動作でタスク０はミスヒットとなり、タスク１のデータのライトバックと再度キャッシュフィルしなければならない。その直後、Ｓ１４０４の動作で再度上書きされる。
【００７７】
タスク０のみのシングルタスクで動作させているときは、Ｓ１４０１の動作でキャッシュフィルすれば、Ｓ１４０３の動作ではヒットとなり、バスのトランザクションは発生しない。しかしながら、タスク１やタスク２が同時動作するマルチタスクのプログラムでは、共有しているキャッシュの競合が起こり、タスク０のみで動作させているときよりも多くのバストランザクションが発生し、動作も遅くなる。
【００７８】
即ち、タスク０のソフトウェア開発者は、図１４に示すようなシステムバストランザクションのモニタで、なぜトランザクションが増加したか、動作が遅くなったか、その要因を特定することは困難である。
【００７９】
図１５は、第２の実施形態におけるシステムバストランザクションのモニタ例を示す図である。図１５に示すように、システムバストランザクションとして、キャッシュライン使用中のタスク番号と、現在のタスク番号とをモニタする。このキャッシュライン使用中のタスク番号は、アクセス対象のキャッシュラインを使用中のタスク番号であり、このタスク番号はタスク管理テーブルを参照して取得する。また、現在のタスク番号は、タスク情報取得部１００６から受け取る情報である。
【００８０】
Ｓ１５１１のキャッシュフィルのトランザクションでは、使用されていないキャッシュラインをタスク０が使用することが示されている。次に、Ｓ１５１２のキャッシュフィルのトランザクションでは、タスク０が使用中のキャッシュラインデータをタスク１が上書きして使用することが示されている。また、Ｓ１５１３のライトバックのトランザクションでは、タスク１が使用中のキャッシュラインデータをタスク０が使用することが示されている。Ｓ１５１４、Ｓ１５１５も同様に、夫々のトランザクションに対してどのタスクが使用しているキャッシュラインをどのタスクが使用するかが示されている。
【００８１】
即ち、システムバス１００４のトランザクションと、それが起因するタスク情報を関連付けた情報が示されている。
【００８２】
また、システムバストランザクションにおけるキャッシュラインを使用中のタスク番号及び現在のタスク番号は、キャッシュから追い出されるタスクと追い出すタスクとの関係としても示されている。
【００８３】
ここで、タスク０に着目すると、図１５に示すように、タスク０はＳ１５１２でタスク１に追い出され、Ｓ１５１３でタスク１をライトバックしなければならない、Ｓ１５１５で再びタスク２に追い出されている。そのため、トランザクションが増加し、動作が遅くなったことが分かる。
【００８４】
第２の実施形態では、マッピング方式としてダイレクトマッピング方式のキャッシュを説明したが、フルアソシエイティブ、セットアソシエイティブ方式のキャッシュについても本発明を適用することができる。
【００８５】
ハードウェア動作監視部１００５が、対応するキャッシュコントローラ１１０５に存在するキャッシュメモリ１１０１のアドレスを決定する信号を監視し、関連付け部１００７に渡すことで、更新すべき関連付けテーブルのアドレスを決定できる。また、ウェイ毎にキャッシュメモリが有る場合は、関連付けテーブルを複数用意することで、本発明を適用することができ、同様の効果が得られる。
【００８６】
以上説明したように第２の実施形態によれば、マルチタスク動作状況下で、キャッシュコントローラが発生するバスのトランザクションとそれが起因するタスク情報を関連付けた情報を提供する。更に、キャッシュから追い出されたデータのタスクと追い出したタスクを関連付けた情報を提供することで、ソフトウェア開発者が意図したキャッシュメモリの使い方がされていないことの早期発見や原因の解析が容易となる。
【００８７】
尚、本発明は複数の機器（例えば、ホストコンピュータ，インターフェース機器，リーダ，プリンタなど）から構成されるシステムに適用しても、１つの機器からなる装置（例えば、複写機，ファクシミリ装置など）に適用しても良い。
【００８８】
また、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記録媒体を、システム或いは装置に供給し、そのシステム或いは装置のコンピュータ（ＣＰＵ若しくはＭＰＵ）が記録媒体に格納されたプログラムコードを読出し実行する。これによっても、本発明の目的が達成されることは言うまでもない。
【００８９】
この場合、記録媒体から読出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記憶した記録媒体は本発明を構成することになる。
【００９０】
このプログラムコードを供給するための記録媒体としては、例えばフロッピー（登録商標）ディスク，ハードディスク，光ディスク，光磁気ディスク，ＣＤ−ＲＯＭ，ＣＤ−Ｒ，磁気テープ，不揮発性のメモリカード，ＲＯＭなどを用いることができる。
【００９１】
また、コンピュータが読出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、次の場合も含まれることは言うまでもない。即ち、プログラムコードの指示に基づき、コンピュータ上で稼働しているＯＳ（オペレーティングシステム）などが実際の処理の一部又は全部を行い、その処理により前述した実施形態の機能が実現される場合。
【００９２】
更に、記録媒体から読出されたプログラムコードがコンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込む。その後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部又は全部を行い、その処理により前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【図面の簡単な説明】
【００９３】
【図１】第１の実施形態におけるシミュレーション装置の構成の一例を示す図である。
【図２】図１に示すハードウェア資源１０３の具体的な一様態を示す図である。
【図３】プロセッサ２０２とそれを制御するプログラムとの関係を示す図である。
【図４】タスク制御ブロック（ＴＣＢ）の構成例を示す図である。
【図５】ＤＭＡコントローラ２０３の制御レジスタの一覧を示す図である。
【図６】プロセッサ２０２の制御フローとＤＭＡコントローラ２０３の動作との関係を示す図である。
【図７】図６に示す制御フロー及びＤＭＡＣ動作とタスク関連付けとの関係を示す図である。
【図８】関連付け部２０７における複数のＤＭＡコントローラとそれを起動したタスク情報の関連付け結果の一様態を示す図である。
【図９】第１の実施形態における解析結果２０８の一例を示す図である。
【図１０】第２の実施形態におけるシミュレーション装置の構成の一例を示す図である。
【図１１】キャッシュ２０３を制御する制御系の構成の一例を示す図である。
【図１２】キャッシュコントローラ１１０５の動作を示すフローチャートである。
【図１３】関連付け部１００７で生成される関連付けテーブルの構成例を示す図である。
【図１４】システムバストランザクションのモニタ例を示す図である。
【図１５】第２の実施形態におけるシステムバストランザクションのモニタ例を示す図である。
【符号の説明】
【００９４】
１０１  システムＬＳＩ
１０２  プロセッサ
１０３  ハードウェア資源
１０４  システムバス
１０５  ハードウェア動作監視部
１０６  タスク情報取得部
１０７  関連付け部
１０８  解析結果
２０１  システムＬＳＩ
２０２  プロセッサ
２０３  ＤＭＡコントローラ
２０４  システムバス
２０５  ハードウェア動作監視部
２０６  タスク情報取得部
２０７  関連付け部
２０８  解析結果
３０１  リアルタイムＯＳ
３０２  タスクプログラム
３１０  命令セットシミュレータ（ＩＳＳ）
５０１  アドレスレジスタ
５０２  転送長レジスタ
５０３  転送モードレジスタ
５０４  転送制御レジスタ
【図１】
0005121134.tif 000002
【図２】
0005121134.tif 000003
【図３】
0005121134.tif 000004
【図４】
0005121134.tif 000005
【図５】
0005121134.tif 000006
【図６】
0005121134.tif 000007
【図７】
0005121134.tif 000008
【図８】
0005121134.tif 000009
【図９】
0005121134.tif 000010
【図１０】
0005121134.tif 000011
【図１１】
0005121134.tif 000012
【図１２】
0005121134.tif 000013
【図１３】
0005121134.tif 000014
【図１４】
0005121134.tif 000015
【図１５】
0005121134.tif 000016