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