JP4974638B2 - シミュレーション装置及びシミュレーション方法 - Google Patents

シミュレーション装置及びシミュレーション方法 Download PDF

Info

Publication number
JP4974638B2
JP4974638B2 JP2006281737A JP2006281737A JP4974638B2 JP 4974638 B2 JP4974638 B2 JP 4974638B2 JP 2006281737 A JP2006281737 A JP 2006281737A JP 2006281737 A JP2006281737 A JP 2006281737A JP 4974638 B2 JP4974638 B2 JP 4974638B2
Authority
JP
Japan
Prior art keywords
cache
task
monitoring
processor
address
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2006281737A
Other languages
English (en)
Other versions
JP2008097530A (ja
JP2008097530A5 (ja
Inventor
哲夫 内山
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Canon Inc
Original Assignee
Canon Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Canon Inc filed Critical Canon Inc
Priority to JP2006281737A priority Critical patent/JP4974638B2/ja
Publication of JP2008097530A publication Critical patent/JP2008097530A/ja
Publication of JP2008097530A5 publication Critical patent/JP2008097530A5/ja
Application granted granted Critical
Publication of JP4974638B2 publication Critical patent/JP4974638B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Description

本発明は、システムLSIのハードウェア及びソフトウェアの協調シミュレーションにおけるシミュレーション装置に関するものである。
ハードウェア及びソフトウェアを結合した協調シミュレーションは、システムLSIの開発において、ソフトウェアの早期開発や、ハードウェアアーキテクチャ探索、システムの性能検証、などを行うために広く用いられている。
近年、組み込みシステムでは、システムの高機能化に伴う制御の複雑化により、リアルタイムOSを用いたマルチタスクプログラムの実行が一般的である。また、リアルタイムOSを用いることで、複数のソフトウェア開発者が個別にタスクを開発することが可能となる。そして、最終的に各ソフトウェア開発者が開発した複数のタスクはシステムとして組み合わせて実行される。
一方、組み込みシステムで、リアルタイムOSを用いたマルチタスクプログラムを実行する場合に、複数のタスクが共通のハードウェア資源を使用することが多い。このため、タスク間でハードウェア資源の競合問題が発生する(例えば、特許文献1参照)。
尚、このハードウェア資源の競合問題とは、以下のように、複数タスクが同一のハードウェア資源を使用する際に起こる問題である。
(1)複数タスクが共通の外部メモリを使用する場合、あるタスクが書き込んだデータを別のタスクが上書きしてしまう。
(2)複数タスクが共通のDMACを使用する場合、あるタスクが使用中に別のタスクが使用しようとして設定を変えてしまう。
(3)複数タスクが同一のキャッシュメモリを使用する場合、あるタスクが使用中のデータを別のタスクが追い出し、次に使用するときに再び外部メモリからキャッシュにデータを読みこまなければならない。
このようなハードウェア資源の競合問題は、ハードウェアの意図しない動作や、意図しない多大なバストランザクションを発生させる。その結果、システムの誤動作、システムの性能低下、共有のハードウェア資源でデータの破壊、等の不具合が生じる。
特に、複数のソフトウェア開発者が個別にタスクを開発した場合、開発者間での整合が取れていなければ、タスク間でのハードウェア資源の競合問題はより顕著に現れてくる。そのため、ソフトウェア開発者は、予めハードウェア及びソフトウェア協調検証でマルチタスクのシステム動作を検証している。
特開平06-175865号公報
従来、ハードウェア及びソフトウェア協調検証装置では、システム動作を解析するために、システムバスに流れるデータを監視し、ソフトウェアの動作を解析するバス解析手法が用いられている。このバス解析手法では、バス上に発生するトランザクションとハードウェア資源とを関連付けた情報を提供している。例えば、ハードウェア資源はマスタデバイスやスレーブデバイスである。そして、トランザクションが発生したときのマスタIDを確認し、どのマスタデバイスがどのくらいのトランザクションを発しているかを、バスマスタ毎のバス負荷の情報として提供している。また、トランザクションが発生したときのアドレスを確認し、どのスレーブデバイスに対してアクセスが多いか、等の情報も提供している。
しかし、ハードウェア及びソフトウェア協調検証で、ハードウェア資源の競合が問題となり得るマルチタスクのプログラム動作を検証する場合、ソフトウェア開発者には、どのトランザクションがどのタスクに起因しているか、という情報が必要になる。なぜなら、ソフトウェア開発者が検証でシステムの誤動作や、システムの性能低下を確認した場合、その原因はタスク間のハードウェア資源の競合問題である可能性があり、解析や修正等はタスク単位で行うからである。
従来のトランザクションとハードウェア資源とを関連付けた情報では、ハードウェア資源の競合問題を起こしていることの発見や、引き起こしているタスクの早期把握が困難である。
例えば、キャッシュを有するプロセッサの場合、バスに発生するトランザクションはキャッシュの使用方法に大きく依存する。マルチタスクのプログラムでは、個別にタスクを動作させている時にはキャッシュは1つのタスクのみで占有できるのでソフトウェア開発者が意図したキャッシュの使い方ができ、トランザクションの発生を抑えられる。
しかし、複数のタスクを動作させると、あるタスクで使用しているキャッシュのデータを別のタスクが追い出して使用する状況が起こる。即ち、追い出されたデータをタスクが次に使用するときにはキャッシュミスが起こり、キャッシュ内のデータを追い出して外部メモリから読み込むことになる。その結果、ソフトウェア開発者が意図しないトランザクションが発生し、システムの性能が低下することがある。
また、共用バスに接続されたマルチプロセッサシステムにおいて、複数のプロセッサがキャッシュを備える場合、それぞれのキャッシュのスヌープ機能を用いてメモリのコヒーレンシを保つ。キャッシュ書き込み方式がライトスルー方式の場合、スヌープ機能は他のプロセッサによる共有データの更新(Write)をバストランザクションから検知し、キャッシュラインを無効の状態に設定する。
プロセッサ1とプロセッサ2との間で共有データがそれぞれのキャッシュ内に存在し、その共有データをプロセッサ2が更新すると、プロセッサ1のスヌープ機能はプロセッサ2のライトトランザクションを検知する。そして、プロセッサ1の共有データ含むキャッシュラインを無効にする。このような無効化により、シングルプロセッサシステムでは起こりえないキャッシュミスが発生し、マルチプロセッサシステムの性能を十分に引き出せないことがある。
従来のハードウェア及びソフトウェア協調検証の解析手法では、バストランザクションが増えることは確認できるが、その要因を特定することは困難であった。
本発明は、複数のプロセッサによって共有されるキャッシュのキャッシュミスの原因を特定可能とすることを目的とする。
本発明は、複数のタスクを実行する複数のプロセッサと、前記複数のプロセッサによって共有されるキャッシュとを具備するシステムLSIをシミュレーションするシミュレーション装置であって、前記キャッシュに対応するキャッシュコントローラとプロセッサアドレスとを監視する監視手段と、前記複数のプロセッサが実行しているタスクのタスク情報を取得する取得手段と、前記監視手段での監視結果と前記取得手段で取得されたタスク情報とを関連付ける関連付け手段とを有し、前記監視手段は、前記キャッシュの更新を検出すると前記キャッシュが更新されたことと、前記キャッシュの更新に関するプロセッサアドレスとを前記関連付け手段に通知し、前記関連付け手段は、前記キャッシュコントローラが前記キャッシュを更新するために発生したトランザクションと前記プロセッサアドレスから決定されるアドレスおよびタグとを関連付け、シミュレーション結果として表示することを特徴とする。
また、本発明は、複数のタスクを実行する複数のプロセッサと、前記複数のプロセッサによって共有されるキャッシュとを具備するシステムLSIをシミュレーションするシミュレーション方法であって、監視手段が、前記キャッシュに対応するキャッシュコントローラとプロセッサアドレスとを監視する監視工程と、取得手段が、前記複数のプロセッサが実行しているタスクのタスク情報を取得する取得工程と、関連付け手段が、前記監視工程での監視結果と前記取得工程で取得されたタスク情報とを関連付ける関連付け工程とを有し、前記監視工程は、前記キャッシュの更新を検出すると前記キャッシュが更新されたことと、前記キャッシュの更新に関するプロセッサアドレスとを前記関連付け手段に通知し、前記関連付け工程は、前記キャッシュコントローラが前記キャッシュを更新するために発生したトランザクションと前記プロセッサアドレスから決定されるアドレスおよびタグとを関連付け、シミュレーション結果として表示することを特徴とする。
本発明によれば、キャッシュの更新に伴うトランザクションとアドレスとタグとの関連付けをユーザへ提供し、ユーザはキャッシュフィルの原因とスヌープされたこととの関係を効率的に確認することができる。
以下、図面を参照しながら発明を実施するための最良の形態について詳細に説明する。
図1は、本実施形態におけるシミュレーション装置の構成の一例を示す図である。図1において、101は検証対象のシステムLSIであり、複数のタスクを実行する1つ以上のプロセッサ(CPU)102と、複数のタスクが共有するハードウェア資源103とを含み、それぞれシステムバス104に接続されている。
105はハードウェア資源103の動作を監視するハードウェア動作監視部であり、ハードウェア資源103がバス104にトランザクションを発生させる動作などを監視する。106は各プロセッサ102が実行しているタスク番号を取得するタスク情報取得部である。107はハードウェア動作監視部105が得た監視動作情報と、タスク情報取得部106が得たタスク情報とを関連付ける関連付け部である。そして、関連付け部107はハードウェア資源103の動作の変化を捉え、その動作に起因するタスク番号を特定した情報を解析結果108としてハードディスクに格納又は不図示のモニタに表示する。
図2は、図1に示すハードウェア資源103の具体的な構成の一例を示す図である。図1との違いは具体的にプロセッサ201、202が図示され、ハードウェア資源103が具体的にキャッシュ211、212として図示されていることである。109はシステムのメインメモリである。
図2において、キャッシュ211はプロセッサ201がタスクを実行する際に使用する専用キャッシュである。また、キャッシュ212はプロセッサ202がタスクを実行する際に使用する専用キャッシュである。
尚、ここでは説明を簡単にするために、2つのプロセッサ201、202は同じ機能を有するプロセッサとし、2つのキャッシュ211、212も同じ機能を有するキャッシュとする。しかし、これに限定されるものではなく、異なる機能を有するものでも良い。
また、キャッシュ211、212は、キャッシュメモリとスヌープ機能付きキャッシュコントローラとから構成され、その詳細な構成については更に後述する。
ここで、シミュレーション装置は、複数のタスクによって共有されるキャッシュメモリを制御するスヌープ機能付きキャッシュコントローラが発生するバス104のトランザクションと、それに起因するタスク番号を特定した情報を提供する。
次に、本実施形態におけるシミュレーション装置の動作を、図3〜図10を用いて説明する。まず、タスク情報取得部106の機能を、図3及び図4を用いて説明する。
図3は、プロセッサとプロセッサのプログラムとの関係を示す図である。図3において、301及び303はリアルタイムOSである。302及び304はタスクプログラムである。本実施形態では、リアルタイムOS301及び303は同じリアルタイムOSとし、タスクプログラム302及び304も同じタスクプログラムとする。また、プロセッサ201及び202は命令セットシミュレータ(ISS)を備えたシミュレーションモデルであり、特定の命令セットに基づき、実際のプロセッサと同様の動作を行う。
ここで、リアルタイムOS301の制御に従ってプロセッサ201がタスクプログラム302を実行することにより、マルチタスク機能を実現する。尚、マルチタスク機能は、リアルタイムOS303、タスクプログラム304及びプロセッサ202の構成においても同様である。
リアルタイムOS301は、発生したイベントに応じて各タスクを実行する。タスクの切り替え(コンテキストスイッチ)は、タスクの状態と優先度に応じてリアルタイムOS301内のスケジューラによって選択される。通常、リアルタイムOS301は、図4に示すタスク制御ブロック(TCB)を有しており、タスク制御ブロック(TCB)に格納されたタスク情報に応じてタスクのスケジューリングを行う。
図4は、タスク制御ブロック(TCB)の構成の一例を示す図である。図4に示すように、タスク情報は、タスク番号、コンテキスト情報、優先度、タスクポインタなどで構成されている。ここで、タスク番号は、タスクを識別するための番号である。コンテキスト情報は、タスクを中断した際の各プロセッサのプログラムカウンタ、スタックポインタ、汎用レジスタなどの情報である。優先度は、タスクの優先度を示す情報である。そして、タスクポインタは、タスクが存在するメモリアドレス情報(ポインタ)である。
また、リアルタイムOS301は、コンテキストスイッチが実行される際にタスク制御ブロック(TCB)から同時にカレントタスクに対応するタスク番号を取得する。更に、タスク情報取得部106は、プロセッサ201が実行する命令をトレースし、コンテキストスイッチが実行される毎にリアルタイムOS301が取得したカレントタスクのタスク番号を取得して記憶する。ここで記憶したタスク番号は関連付け部107に通知する。
また、リアルタイムOS301と同様に、リアルタイムOS303でも上述したタスク制御を実行し、タスク情報取得部106は、プロセッサ202で動作するタスクの情報も上述した説明と同様に取得し、関連付け部107に通知する。
次に、キャッシュ211及び212の動作を監視するハードウェア動作監視部105の機能を、図5を用いて説明する。尚、キャッシュ212に関しては、キャッシュ211と同一であるため、説明は省略する。
図5は、キャッシュメモリ及びキャッシュコントローラの構成の一例を示す図である。尚、キャッシュ書き込み方式はライトスルー方式とする。
図5において、501はキャッシュメモリであり、その内部には状態フラグ領域502、タグ領域503、データ領域504が割り当てられている。状態フラグ領域502は、有効フラグ領域521とダーティフラグ領域522からなる。この有効フラグ領域521には、キャッシュデータが有効か無効かを示す有効フラグが格納される。また、ダーティフラグ領域522には、キャッシュラインをメインメモリへ書き戻す必要があるか否かを示すダーティフラグが格納される。
タグ領域503は、メインメモリ109のアドレス情報を示すタグが格納される領域である。データ領域504は、メインメモリ109のコピーデータが格納される領域である。
本実施形態のキャッシュは、一回のアクセス単位であるキャッシュラインを4ワードとし、キャッシュライン毎に有効フラグ、ダーティフラグ、タグを持つものとする。また、マッピング方式はダイレクトマッピング方式とし、アクセスするキャッシュのアドレスはプロセッサアドレス508で一意に決まる。ここでは、キャッシュのサイズを4KBとし、アドレスは下位12ビットで決定し、その他のビットをタグ領域503に格納する。
505はキャッシュメモリ501の読み書きを制御するキャッシュコントローラであり、ヒット判定部506、データ転送部507、バススヌープ部511を有する。ここで、ヒット判定部506は、プロセッサアドレス508とタグ領域503のタグとを比較し、プロセッサの要求データがキャッシュメモリ501内に存在するか否かを判定する。ここで、存在する場合はヒット、存在しない場合はミスヒットとなる。
データ転送部507は、上述のヒット判定部506の判定に従ってプロセッサ201とキャッシュメモリ501間のデータ転送やキャッシュメモリ501とシステムバス104間のデータ転送を行う。そして、バススヌープ部511は、トランザクションを監視し、状態フラグ領域502の状態を更新する。
次に、キャッシュメモリ501を制御するキャッシュコントローラ505の処理手順を、図6を用いて説明する。尚、最初に、プロセッサ201がメインメモリ109へリードアクセスする場合を説明し、その後、プロセッサ201がライトアクセスする場合を説明する。
図6は、キャッシュコントローラ505の処理手順を示すフローチャートである。まず、ステップS601でプロセッサ201がメモリアクセスを開始するのを待ち、アクセスを開始すると、ステップS602へ処理を進める。ステップS602では、そのアクセスがメインメモリ109へのリードアクセスか否かを判定し、リードアクセスの場合には、ステップS603へ処理を進める。
ステップS603では、ヒット判定部506がプロセッサアドレス508と有効フラグがオンのタグ領域503のタグとを比較し、ヒット又はミスヒットを判定する。ここで、アドレスが一致しなければ、ミスヒットと判定し、ステップS604へ処理を進め、リプレースするキャッシュラインを選択する。リプレースするキャッシュラインはプロセッサアドレス508から一意に決定する。
次に、ステップS605で、データ転送部507がメインメモリ109からキャッシュ211へキャッシュライン分のデータをリードし、キャッシュメモリ501を更新する(以下、キャッシュフィルと称す)。このとき、バススヌープ部511が有効フラグをオンし、システムバス104へリードトランザクションを発生させる。
キャッシュフィル後、ステップS606では、データ転送部507がキャッシュメモリ501からデータを読み出し、プロセッサデータ509として転送する。
また、ステップS603で、アドレスが一致し、ヒット判定部506がヒットと判定すると、ステップS606へ処理を進める。ステップS606では、データ転送部507がキャッシュメモリ501からデータを読み出し、プロセッサデータ509として転送する。ここでは、キャッシュフィル後に、プロセッサ処理実行を許可する制御とするが、これに制限されるものではない。
一方、ステップS602で、プロセッサ201のアクセスがライトアクセスの場合には、ステップS607へ処理を進める。
ステップS607では、ヒット判定部506がプロセッサアドレス508と有効フラグがオンのタグ領域503のタグとを比較し、ヒット又はミスヒットを判定する。ここで、アドレスが一致すれば、ヒットと判定し、ステップS608へ処理を進め、データ転送部507がプロセッサデータ509をキャッシュメモリ501に書き込む。その後、ステップS609で、データ転送部507は、プロセッサデータ509をメインメモリ109に書き込む。
また、ステップS607で、アドレスが一致せず、ヒット判定部506がミスヒットと判定すると、ステップS609へ処理を進める。この場合、キャッシュメモリ501への書き込みは発生せず、データ転送部507がプロセッサデータ509をメインメモリ109に書き込むだけである。ここでは、メインメモリ109への書き込み後に、プロセッサ処理実行を許可する制御とするが、これに制限されるものではない。
次に、マルチプロセッサシステムのスヌープ機能により、キャッシュ内の同一アドレスのデータが他のプロセッサにより更新(ライト)された場合に、キャッシュを無効化する処理手順を、図7を用いて説明する。
図7は、本実施形態における他のプロセッサのトランザクション検出時にバススヌープ部511が有効フラグをオフする処理手順を示すフローチャートである。まず、ステップS701で、バススヌープ部511は、他のプロセッサが発行したシステムバス104のトランザクションを検出すると、ステップS702へ処理を進める。
ステップS702では、ステップS701で検出したトランザクションがリードトランザクションかライトトランザクションかを判別する。ここで、リードトランザクションの場合は、この処理を終了し、ライトトランザクションの場合は、ステップS703へ処理を進める。
ステップS703では、ヒット判定部506がプロセッサアドレス508とタグ領域503のタグとを比較する。ここで、アドレスがミスヒットした場合、この処理を終了し、アドレスがヒットした場合、ステップS704へ処理を進め、そのアドレスの有効フラグ領域521の有効フラグを無効な状態(オフ)に更新する。
本実施形態では、上述したキャッシュのヒット判定、有効フラグ、プロセッサアドレス、バススヌープ部511によるライトトランザクションのヒット判定をハードウェア動作監視部105が監視している。そして、キャッシュ211が更新されると、ハードウェア動作監視部105は関連付け部107に更新を通知し、プロセッサアドレスを渡す。
尚、ハードウェア動作監視部105は、キャッシュ211と同様に、キャッシュ212の動作も同様に監視している。
ここで、ハードウェア動作監視部105からキャッシュ211及び212の更新を通知された際に、関連付け部107によって生成されるタスク管理テーブルを、図8を用いて説明する。尚、タスク管理テーブルは、キャッシュ211及び212に存在するデータに各プロセッサのタスクを関連付けたテーブルである。
図8は、本実施形態におけるタスク管理テーブルの構成を示す図である。図8において、801〜804はキャッシュ211用のタスク管理テーブルの構成要素である。801はキャッシュ211のアドレス、802はタグ、803はデータを更新したタスク番号、804はスヌープしたタスク番号を示す。
尚、スヌープしたタスクとは、バススヌープ部511によって有効フラグ領域521を無効にした要因となるタスクである。また、アドレス801とタグ802はハードウェア動作監視部105からのプロセッサアドレスにより決定される。また、タスク番号803とスヌープしたタスク番号804はタスク情報取得部106から受け取ったタスク情報により決定する。
そして、タスク番号803とスヌープしたタスク番号804のタスク番号は「X−Y」の形式で表され、Xはプロセッサ番号、Yはタスク番号を意味する。ここで、プロセッサ番号の“1”はプロセッサ201に対応し、プロセッサ番号の“2”はプロセッサ202に対応する。
一方、805〜808はキャッシュ212用のタスク管理テーブルの構成要素であり、キャッシュ211用の801〜804と同様である。
図8に示す例では、キャッシュ211の0x180番地にはアドレス0x81000180のデータが存在し、プロセッサ201のタスク0が使用中で、プロセッサ202のタスク1によってスヌープされている。キャッシュ211の0x190番地にはアドレス0xa8000190のデータが存在し、プロセッサ201のタスク3が使用中である。キャッシュ211の0x200番地にはアドレス0x8130f200のデータが存在し、プロセッサ201のタスク4が使用中である。また、キャッシュ212の0x180番地にはアドレス0x81000180のデータが存在し、プロセッサ202のタスク1が使用中である。キャッシュ212の0x190番地には0x9a000190のデータが存在し、プロセッサ202のタスク5が使用中である。キャッシュ212の0x200番地にはアドレス0x8130f200のデータが存在し、プロセッサ202のタスク6が使用中で、プロセッサ201のタスク4によってスヌープされている。
ここで、プロセッサ201及び202が以下の動作を行う際に、それぞれのキャッシュコントローラ505が発生するシステムバストランザクションと関連付け部107の動作を、図9を用いて説明する。
図9は、プロセッサの動作により発生するシステムバストランザクションとタスク管理テーブルの関係を示す図である。
T1:プロセッサ201がメインメモリ109のアドレス0x81000180にシングルリードアクセス(タスク番号:1−0)。キャッシュ211のキャッシュコントローラ505は、初期状態ではキャッシュメモリ501にデータが格納されていないので、ミスヒットと判定する。その結果、メインメモリ109のデータをリード転送し、キャッシュフィルし、システムバス104にキャッシュライン分のリードトランザクション901を発生させる。リード転送が終了すると、プロセッサ処理が実行される。
キャッシュ211のキャッシュメモリ501が更新されたので、タスク管理テーブルを更新する。更新すべきラインのアドレスは0x180であり、タグ0x81000、追い出したタスクの番号は1−0である(907)。尚、追い出したタスクは、キャッシュラインを新たに使用するタスクである。
T2:プロセッサ202がメインメモリ109のアドレス0x8100018cにシングルリードアクセス(タスク番号:2−1)。キャッシュ212のキャッシュコントローラ505は、初期状態ではキャッシュメモリ501にデータが格納されていないので、ミスヒットと判定する。その結果、メインメモリ109のデータをリード転送し、キャッシュフィルし、システムバス104にキャッシュライン分のリードトランザクション902を発生させる。リード転送が終了すると、プロセッサ処理が実行される。
キャッシュ212のキャッシュメモリ501が更新されたので、タスク管理テーブルを更新する。更新すべきラインのアドレスは0x180であり、タグ0x81000、追い出したタスクの番号は2−1である(908)。
T3:プロセッサ202がメインメモリ109のアドレス0x8100018cにシングルライトアクセス(タスク番号:2−1)。キャッシュ212のキャッシュコントローラ505は、アドレス0x180の有効フラグがオンのタグ0x81000と比較する。一致するため、ヒットと判定し、キャッシュ212内の該当アドレスにデータをライトする。更に、メインメモリ109へもライトを行うために、システムバス104にライトトランザクション903を発生させる。ライト転送が終了すると、プロセッサ処理が実行される。
キャッシュ211のキャッシュコントローラ505が、このライトトランザクションをスヌープし、ライトトランザクションのアドレスから決定されるタグの値と、アドレスに該当するキャッシュライン(アドレス0x180)のタグとを比較する。その結果、0x81000で一致するため、ヒットと判定し、アドレス0x180のラインに対して有効フラグをオフにする。
キャッシュ211のキャッシュメモリ501が更新されたので、キャッシュ211用のタスク管理テーブルを更新する。更新すべきラインはアドレス0x180であり、スヌープしたタスクの番号は2−1である(910)。
T4:プロセッサ201がメインメモリ109のアドレス0x81000184にシングルリードアクセス(タスク番号:1−0)。キャッシュ211のキャッシュコントローラ505は、アドレス0x180の有効フラグをチェックする。有効フラグは、キャッシュ211のスヌープ機能によりスヌープされ、オフとなっている。そのため、キャッシュ211のキャッシュコントローラ505はメインメモリ109のデータをリード転送し、データを上書きしてキャッシュフィルする。そして、システムバス104にキャッシュライン分のリードトランザクション904を発生させ、アドレス0x180に対する有効フラグをオンにする。リード転送が終了すると、プロセッサ処理が実行される。
キャッシュ211のキャッシュメモリ501が更新されたので、タスク管理テーブルを更新する。更新すべきラインはアドレス0x180であり、タグ0x81000、追い出されたタスクの番号は1−0、追い出したタスクの番号も1−0であり、スヌープしたタスクの番号の項目はクリアされる(911)。尚、追い出されたタスクは、スヌープによりキャッシュのラインが無効化され、キャッシュから追い出されたプロセッサのタスクである。
T5:プロセッサ201がメインメモリ109のアドレス0x81000184にシングルライトアクセス(タスク番号:1−0)。キャッシュ211のキャッシュコントローラ505は、アドレス0x180の有効フラグがオンのタグ0x81000と比較する。一致するため、ヒットと判定し、キャッシュ211内の該当アドレスにデータをライトする。更に、メインメモリ109へもライトを行うために、システムバス104にライトトランザクション905を発生させる。ライト転送が終了すると、プロセッサ処理が実行される。
キャッシュ212のキャッシュコントローラ505が、このライトトランザクションをスヌープし、ライトトランザクションのアドレスから決定されるタグの値と、アドレスに該当するキャッシュライン(アドレス0x180)のタグとを比較する。その結果、0x81000で一致するため、ヒットと判定し、アドレス0x180のラインに対して有効フラグをオフにする。
キャッシュ212のキャッシュメモリ501が更新されたので、キャッシュ212用のタスク管理テーブルを更新する。更新すべきラインはアドレス0x180であり、スヌープしたタスクの番号は1−0である(913)。
T6:プロセッサ202がメインメモリ109のアドレス0x82000188にシングルリードアクセス(タスク番号:2−2)。キャッシュ212のキャッシュコントローラ505は、アドレス0x180の有効フラグをチェックする。有効フラグは、キャッシュ212のスヌープ機能によってスヌープされ、オフとなっている。そのため、キャッシュ212のキャッシュコントローラ505はメインメモリ109のデータをリード転送し、データを上書きしてキャッシュフィルする。更に、システムバス104にキャッシュライン分のリードトランザクション906を発生させ、アドレス0x180に対する有効フラグをオンにする。リード転送が終了すると、プロセッサ処理が実行される。
キャッシュ212のキャッシュメモリ501が更新されたので、タスク管理テーブルを更新する。更新すべきラインはアドレス0x180であり、タグ0x82000、追い出されたタスクの番号は2−1、追い出したタスクの番号は2−2であり、スヌープしたタスクの番号の項目はクリアされる(914)。
以上の動作は、プロセッサ201のタスク0に着目すると、T1の動作で、タスク0がデータをキャッシュフィルするが、T3の動作で、プロセッサ202のタスク1によって上述のデータはスヌープされる。そのため、T4の動作で、タスク0がミスヒットとなり、再度キャッシュフィルしなければならない。タスク0とタスク1をシングルプロセッサで動作させている時は、T1の動作でキャッシュフィルすれば、T4の動作ではヒットとなり、バスのトランザクションは発生しない。
しかし、共有バスに接続されたマルチプロセッサシステムでは、メモリのコヒーレンシを保つためにスヌープによるキャッシュラインの無効化が起こり、シングルプロセッサで動作させている時より多くのバストランザクションが発生する。即ち、タスク0とタスク1のそれぞれのソフトウェア開発者は、図9に示すようなシステムバストランザクションのモニタだけでは、なぜトランザクションが増加したか、その要因を特定することは困難である。
そこで、本実施形態における関連付け部107では、システムバストランザクションを発生させたタスクの番号を関連付け、解析結果108としてモニタ画面に表示可能としている。
図10は、システムバストランザクションと、それが起因するタスクと、スヌープしたタスクを関連付けた解析結果を示す図である。尚、プロセッサ201及び202の動作とキャッシュ211及び212のそれぞれのタスク管理テーブルの内容は、図9に示すものと同じである。
図10において、915は追い出されたタスク番号であり、スヌープによりキャッシュのラインが無効化され、キャッシュから追い出されたプロセッサのタスクの番号である。916は追い出したタスク番号であり、追い出したタスク番号916はタスク情報取得部106から受け取る。917はスヌープしたタスク番号である。追い出されたタスク番号915とスヌープしたタスク番号917は、更新前のタスク管理テーブルを参照して取得する。
まず、918に示すキャッシュフィルのトランザクションでは、使用されていないキャッシュ211のアドレス0x180のラインをプロセッサ201のタスク0が使用することが示されている。
次に、919に示すキャッシュフィルのトランザクションでは、使用されていないキャッシュ212のアドレス0x180のラインをプロセッサ202のタスク1が使用することが示されている。
次に、920に示すライトトランザクションでは、キャッシュ212のアドレス0x180のラインをプロセッサ202のタスク1が使用することが示されている。
次に、921に示すキャッシュフィルのトランザクションでは、917に示すスヌープしたタスク番号によりキャッシュ211のアドレス0x180のラインがプロセッサ202のタスク1のライトで無効化されたことが示されている。また、915に示す追い出されたタスク番号によりキャッシュ211のアドレス0x180のラインを使用していたプロセッサ21のタスク0が追い出されたことが示されている。このように、システムバス104のトランザクション、追い出されたタスク情報、追い出したタスク情報及びスヌープしたタスク情報の関連付けが示されている。
次に、922に示すライトトランザクションでは、キャッシュ211のアドレス0x180のラインをプロセッサ201のタスク0が使用することが示されている。
そして、923に示すキャッシュフィルのトランザクションでは、キャッシュ212のアドレス0x180のラインに対するものだが、保持されたタグの値0x81000と現在のタグの値0x82000が異なっている。そのため、キャッシュフィルの原因はスヌープされたこととは無関係であり、スヌープしたタスク番号は存在せず、追い出されたタスク番号(2−1)と追い出したタスク番号(2−2)が示されている。
図10に示す解析結果108によれば、キャッシュ211のアドレス0x180のラインは、タスク1のライトトランザクション発生時のスヌープにより、キャッシュフィルが無効化されている。従って、同じメインメモリ109のアドレスのデータをキャッシュフィルしなければならないために、トランザクションが増加していることが分かる。
本実施形態では、マッピング方式としてダイレクトマッピング方式のキャッシュを説明したが、フルアソシエイティブ、セットアソシエイティブ方式のキャッシュについても、本発明を適用することができる。その場合、対応するキャッシュコントローラに存在するキャッシュメモリのアドレスを決定する信号をハードウェア動作監視部105が監視し、関連付け部107に渡すことで、更新すべきタスク管理テーブルのアドレスが決定できる。また、ウェイ毎にキャッシュメモリが存在する場合は、タスク管理テーブルを複数用意することで、本発明を適用することができ、同様の効果が得られる。
本実施形態では、メインメモリへの書き込みはライトスルー方式のプロセッサを説明した。しかし、ライトバック方式のプロセッサの場合、各キャッシュコントローラはキャッシュへの書き込みが発生すると、その内容を他のキャッシュコントローラに通知するため、システムバス上にスヌープ専用のトランザクションを発生する。各キャッシュコントローラはその情報を検出し、キャッシュの制御を行う。
そのため、関連付け部107で、スヌープ専用のトランザクションとタスク情報を関連付けることにより、本発明を適用することが可能で、同様の効果が得られる。
上述したように、シミュレーション装置により共有バスに接続されたマルチプロセッサシステムにおいて、スヌープ機能付きキャッシュコントローラが発生するバスのトランザクションとタスク情報を関連付ける。更に、そのトランザクションが、他のプロセッサの動作が原因で発生した場合、原因となる他のプロセッサのタスク情報を関連付けて提供する。関連付けられた情報から、マルチプロセッサシステム特有のバストランザクションが発生する原因を容易に特定することで、ソフトウェア開発者が意図したキャッシュメモリの使い方がされていないことの早期発見、原因の解析を容易にする。
尚、本発明は複数の機器(例えば、ホストコンピュータ,インターフェース機器,リーダ,プリンタなど)から構成されるシステムに適用しても、1つの機器からなる装置(例えば、複写機,ファクシミリ装置など)に適用しても良い。
また、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記録媒体を、システム或いは装置に供給し、そのシステム或いは装置のコンピュータ(CPU若しくはMPU)が記録媒体に格納されたプログラムコードを読出し実行する。これによっても、本発明の目的が達成されることは言うまでもない。
この場合、記録媒体から読出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記憶した記録媒体は本発明を構成することになる。
このプログラムコードを供給するための記録媒体としては、例えばフロッピー(登録商標)ディスク,ハードディスク,光ディスク,光磁気ディスク,CD−ROM,CD−R,磁気テープ,不揮発性のメモリカード,ROMなどを用いることができる。
また、コンピュータが読出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、次の場合も含まれることは言うまでもない。即ち、プログラムコードの指示に基づき、コンピュータ上で稼働しているOS(オペレーティングシステム)などが実際の処理の一部又は全部を行い、その処理により前述した実施形態の機能が実現される場合。
更に、記録媒体から読出されたプログラムコードがコンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込む。その後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPUなどが実際の処理の一部又は全部を行い、その処理により前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
本実施形態におけるシミュレーション装置の構成の一例を示す図である。 図1に示すハードウェア資源103の具体的な構成の一例を示す図である。 プロセッサとプロセッサのプログラムとの関係を示す図である。 タスク制御ブロック(TCB)の構成の一例を示す図である。 キャッシュメモリ及びキャッシュコントローラの構成の一例を示す図である。 キャッシュコントローラ505の処理手順を示すフローチャートである。 本実施形態における他のプロセッサのトランザクション検出時にバススヌープ部511が有効フラグをオフする処理手順を示すフローチャートである。 本実施形態におけるタスク管理テーブルの構成を示す図である。 プロセッサの動作により発生するシステムバストランザクションとタスク管理テーブルの関係を示す図である。 システムバストランザクションと、それが起因するタスクと、スヌープしたタスクを関連付けた解析結果を示す図である。
符号の説明
101 システムLSI
102 プロセッサ
103 ハードウェア資源
104 システムバス
105 ハードウェア動作監視部
106 タスク情報取得部
107 関連付け部
108 解析結果
109 メインメモリ
201 プロセッサ
202 プロセッサ
211 キャッシュ
212 キャッシュ
301 リアルタイムOS
302 タスクプログラム
303 リアルタイムOS
304 タスクプログラム
501 キャッシュメモリ
502 状態フラグ領域
503 タグ領域
504 キャッシュデータ
505 キャッシュコントローラ
506 ヒット判定部
507 データ転送部
508 プロセッサアドレス
509 プロセッサデータ
511 バススヌープ部
521 有効フラグ領域
522 ダーティフラグ領域

Claims (6)

  1. 複数のタスクを実行する複数のプロセッサと、前記複数のプロセッサによって共有されるキャッシュとを具備するシステムLSIをシミュレーションするシミュレーション装置であって、
    前記キャッシュに対応するキャッシュコントローラとプロセッサアドレスとを監視する監視手段と、
    前記複数のプロセッサが実行しているタスクのタスク情報を取得する取得手段と、
    前記監視手段での監視結果と前記取得手段で取得されたタスク情報とを関連付ける関連付け手段とを有し、
    前記監視手段は、前記キャッシュの更新を検出すると前記キャッシュが更新されたことと、前記キャッシュの更新に関するプロセッサアドレスとを前記関連付け手段に通知し、
    前記関連付け手段は、前記キャッシュコントローラが前記キャッシュを更新するために発生したトランザクションと前記プロセッサアドレスから決定されるアドレスおよびタグとを関連付け、シミュレーション結果として表示することを特徴とするシミュレーション装置。
  2. 前記キャッシュはスヌープ機能付きキャッシュを含み、
    前記関連付け手段は、前記スヌープ機能付きキャッシュから追い出されたタスクと前記スヌープ機能付きキャッシュをスヌープしたタスクを前記トランザクションに関連付け、シミュレーション結果として表示することを特徴とする請求項1記載のシミュレーション装置。
  3. 複数のタスクを実行する複数のプロセッサと、前記複数のプロセッサによって共有されるキャッシュとを具備するシステムLSIをシミュレーションするシミュレーション方法であって、
    監視手段が、前記キャッシュに対応するキャッシュコントローラとプロセッサアドレスとを監視する監視工程と、
    取得手段が、前記複数のプロセッサが実行しているタスクのタスク情報を取得する取得工程と、
    関連付け手段が、前記監視工程での監視結果と前記取得工程で取得されたタスク情報とを関連付ける関連付け工程とを有し、
    前記監視工程は、前記キャッシュの更新を検出すると前記キャッシュが更新されたことと、前記キャッシュの更新に関するプロセッサアドレスとを前記関連付け手段に通知し、
    前記関連付け工程は、前記キャッシュコントローラが前記キャッシュを更新するために発生したトランザクションと前記プロセッサアドレスから決定されるアドレスおよびタグとを関連付け、シミュレーション結果として表示することを特徴とするシミュレーション方法。
  4. 前記キャッシュはスヌープ機能付きキャッシュを含み、
    前記関連付け工程は、前記スヌープ機能付きキャッシュから追い出されたタスクと前記スヌープ機能付きキャッシュをスヌープしたタスクを前記トランザクションに関連付け、シミュレーション結果として表示することを特徴とする請求項3記載のシミュレーション方法。
  5. 複数のタスクを実行する複数のプロセッサと、前記複数のプロセッサによって共有されるキャッシュとを具備するシステムLSIをシミュレーションするコンピュータに、
    前記キャッシュに対応するキャッシュコントローラとプロセッサアドレスとを監視する監視手順と、
    前記複数のプロセッサが実行しているタスクのタスク情報を取得する取得手順と、前記監視手順での監視結果と前記取得手順で取得されたタスク情報とを関連付ける関連付け手順とを実行させ、
    前記監視手順は、前記キャッシュの更新を検出すると前記キャッシュが更新されたことと、前記キャッシュの更新に関するプロセッサアドレスとを通知し、
    前記関連付け手順は、前記キャッシュコントローラが前記キャッシュを更新するために発生したトランザクションと前記プロセッサアドレスから決定されるアドレスおよびタグとを関連付け、シミュレーション結果として表示することを特徴とするプログラム。
  6. 前記キャッシュはスヌープ機能付きキャッシュを含み、
    前記関連付け手順は、前記スヌープ機能付きキャッシュから追い出されたタスクと前記スヌープ機能付きキャッシュをスヌープしたタスクを前記トランザクションに関連付け、シミュレーション結果として表示することを特徴とする請求項5記載のプログラム。
JP2006281737A 2006-10-16 2006-10-16 シミュレーション装置及びシミュレーション方法 Active JP4974638B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2006281737A JP4974638B2 (ja) 2006-10-16 2006-10-16 シミュレーション装置及びシミュレーション方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006281737A JP4974638B2 (ja) 2006-10-16 2006-10-16 シミュレーション装置及びシミュレーション方法

Publications (3)

Publication Number Publication Date
JP2008097530A JP2008097530A (ja) 2008-04-24
JP2008097530A5 JP2008097530A5 (ja) 2009-11-26
JP4974638B2 true JP4974638B2 (ja) 2012-07-11

Family

ID=39380281

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006281737A Active JP4974638B2 (ja) 2006-10-16 2006-10-16 シミュレーション装置及びシミュレーション方法

Country Status (1)

Country Link
JP (1) JP4974638B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5471841B2 (ja) * 2010-05-28 2014-04-16 富士通株式会社 検証支援プログラム、論理検証装置、および検証支援方法

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3339708B2 (ja) * 1992-10-21 2002-10-28 株式会社東芝 イベント記録方式
US6237059B1 (en) * 1997-11-26 2001-05-22 Compaq Computer Corporation Method for estimating statistics of properties of memory system interactions among contexts in a computer system
US7130967B2 (en) * 2003-12-10 2006-10-31 International Business Machines Corporation Method and system for supplier-based memory speculation in a memory subsystem of a data processing system
JP2006221474A (ja) * 2005-02-10 2006-08-24 Canon Inc シミュレーション装置及びその履歴情報記録方法
JP3958336B2 (ja) * 2005-10-03 2007-08-15 松下電器産業株式会社 インターフェースの設計方法

Also Published As

Publication number Publication date
JP2008097530A (ja) 2008-04-24

Similar Documents

Publication Publication Date Title
JP6802287B2 (ja) キャッシュ・メモリ・アクセス
US9892803B2 (en) Cache management request fusing
US5524233A (en) Method and apparatus for controlling an external cache memory wherein the cache controller is responsive to an interagent communication for performing cache control operations
KR101025354B1 (ko) 가상 트랜잭션 메모리를 위한 글로벌 오버플로우 방법
JP5360299B2 (ja) マルチコアプロセッサシステム、キャッシュコヒーレンシ制御方法、およびキャッシュコヒーレンシ制御プログラム
JP5100176B2 (ja) マルチプロセッサシステム
CN106897230B (zh) 用于处理原子更新操作的装置和方法
JP5329983B2 (ja) デバッグ支援装置
JP2007011580A (ja) 情報処理装置
JPH0619786A (ja) キャッシュコヒーレンスを維持する方法及び装置
US20200192800A1 (en) An apparatus and method for managing capability metadata
CN115176237B (zh) 具有混合回写和透写的数据高速缓存
US5999721A (en) Method and system for the determination of performance characteristics of a cache design by simulating cache operations utilizing a cache output trace
JP4974638B2 (ja) シミュレーション装置及びシミュレーション方法
US7831963B2 (en) Method for tracing a program executed on a system comprising a plurality of processing units, and a system comprising a plurality of processing units
US20240086195A1 (en) Monitor exclusive instruction
CN108572926B (zh) 一种用于同步中央处理器所属缓存的方法和装置
JP5163061B2 (ja) マルチプロセッサシステム、マイクロプロセッサ、及びマイクロプロセッサの障害処理方法
TWI243999B (en) Apparatus and related method for maintaining read caching data of south bridge with north bridge
US20230280904A1 (en) Monitoring memory locations to identify whether data stored at the memory locations has been modified
US11556472B1 (en) Data processing system having masters that adapt to agents with differing retry behaviors
JP5121134B2 (ja) シミュレーション装置及びシミュレーション方法
JP5614483B2 (ja) マルチコアプロセッサシステム、キャッシュコヒーレンシ制御方法、およびキャッシュコヒーレンシ制御プログラム
JP2011203803A (ja) デバッグ支援装置及びデバッグ支援用プログラム
US20060259701A1 (en) Providing cache status information across multiple cache levels

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20091014

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20091014

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110218

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110418

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20111107

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20120409

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120410

R151 Written notification of patent or utility model registration

Ref document number: 4974638

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150420

Year of fee payment: 3