説明

デバッグ支援装置

【課題】キャッシュメモリを有するプロセッサで実行されるプログラムのキャッシュメモ
リに係るデータ解析を支援してデバッグ作業効率を向上させる。
【解決手段】キャッシュメモリ300のデータ解析でデータ表示指定アドレスとしてプロ
グラムで用いられるメインメモリアドレスを入力する。デバッグ支援装置10は入力され
たメモリアドレスをデータベース600のキャッシュメモリ構成情報を用いてアドレス変
換を行い、その変換されたアドレスでキャッシュメモリの読み出しアクセスを行い、その
アクセス結果を表示するようにする。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、キャッシュメモリを有する計算機システムのプログラムのデバッグ支援装置
に関する。
【背景技術】
【0002】
最近のマイクロプロセッサは、命令キャッシュメモリやデータキャッシュメモリを内蔵
して処理性能を向上させるものが多い。しかしながら、回路規模や消費電力などの制約か
ら、キャッシュメモリ構成や制御を複雑にしてキャッシュメモリの性能の向上を図るので
はなく、メインメモリのブロックとキャッシュメモリのブロックの対応方式もダイレクト
マップ方式や2−wayセットアソシエティブ方式として、キャッシュメモリの制御回路
などを簡素化することが多い。
【0003】
更に、キャッシュメモリとメインメモリとの間のデータ転送の一部の管理機能を、プロ
グラムで制御できるようにして、不要なデータ転送を削減したりしてマイクロプロセッサ
を含むシステム全体の性能向上を図ることができるようになっている。このような場合、
プログラム開発のデバッグ作業において、キャッシュメモリに記憶されたデータを解析す
る必要があり、マイクロプロセッサのキャッシュメモリのデータを表示できるデバッガが
提供されている(例えば、非特許文献1参照。)。
【非特許文献1】”SuperH(TM) RISC engine シミュレータ/デバッガ ユーザーズマニュアル”、[online]、2007年7月25日、株式会社 ルネサス テクノロジーズ、[平成19年9月19日検索]、インターネット<URL:http://documentation.renesas.com/jpn/products/tool/rjj10b0218_sh.pdf>(第97−102頁)
【発明の開示】
【発明が解決しようとする課題】
【0004】
しかしながら、非特許文献1のデバッガでは、キャッシュメモリの構成要素に従ってキ
ャッシュメモリをインデックスアドレス順にタグアドレス情報とともに記憶されたデータ
を並べて表示するようになっていて、記憶されたデータの例えばメインメモリアドレスと
の関係を、一意的に把握することは難しい状況があった。
【0005】
本発明は、上記問題を解決するためになされたもので、プログラム開発者がキャッシュ
メモリに記憶されたプログラムやデータを解析する場合に、キャッシュメモリの物理的な
メモリ構成要素ではなく、メインメモリアドレスによってキャッシュメモリのデータを指
定するようにすることで、キャッシュメモリの記憶内容にかかわるプログラムや処理性能
未達などの不具合のデバッグを容易に行えるデバッグ支援装置を提供することを目的とす
る。
【課題を解決するための手段】
【0006】
上記目的を達成するために、本発明のデバッグ支援装置は、メインメモリとキャッシュ
メモリとを有するプロセッサで実行されるプログラムのデバッグ支援装置であって、前記
キャッシュメモリからデータを読み出し表示するためのコマンドを入力するコマンド入力
手段と、メインメモリアドレスを入力するメモリアドレス入力手段と、前記キャッシュメ
モリの構成情報を入力するメモリ構成情報入力手段と、前記メモリ構成情報入力手段によ
って入力されたキャッシュメモリ構成情報に基づいて前記メインメモリアドレスを第1タ
グアドレスとキャッシュメモリのアクセスアドレスとに変換するアドレス変換手段と、
前記アドレス変換手段で変換された前記アクセスアドレスによって前記キャッシュメモリ
をアクセスするアクセス手段と、前記アクセス手段によってアクセスされた前記キャッシ
ュメモリから前記アクセスアドレスに対応するデータに含まれる第2タグアドレスおよび
記憶データを読み出すデータ読み出し手段と、前記データ読み出し手段によって読み出さ
れた前記第2タグアドレスと前記アドレス変換手段で変換された前記第1タグアドレスと
を比較するタグアドレス比較手段と、前記タグアドレス比較手段の比較結果が一致して前
記キャッシュメモリがヒットしていると判定した場合、前記キャッシュメモリから読み出
した前記記憶データを、前記メインメモリアドレスとともに表示するキャッシュメモリ表
示手段とを有することを特徴とする。
【発明の効果】
【0007】
本発明によれば、メインメモリアドレスベースで表示されるオブジェクトプログラムの
デバッグ作業において、キャッシュメモリに読み込まれたデータ解析の必要からキャッシ
ュメモリの内容表示を行わせる場合に、キャッシュメモリのハードウェア構成に基づいて
メインメモリアドレスをキャッシュメモリのアクセスアドレスに変換することなく表示さ
せることが可能となるため、プログラムデバッグの効率を向上させることができる。
【発明を実施するための最良の形態】
【0008】
以下、本発明の実施例を説明する。
【実施例1】
【0009】
本発明の第1の実施例を図1乃至図8を参照して説明する。
【0010】
図1は、本発明のデバッグ支援装置の一実施形態として動作するコンピュータのハード
ウェア構成を示すブロック図である。
【0011】
コンピュータ1は、図1に示すように、アプリケーションプログラムやOSなどのプロ
グラムを実行するCPU2、CPU2が実行するプログラムを展開記憶するメモリユニッ
ト3、メモリユニット3に展開記憶されるプログラムやデータを保存記憶する記憶装置/
補助記憶装置4、CPU2がプログラム実行時に文字やアイコンや画像情報を表示する画
像表示装置5、CPU2がプログラム実行時に文字入力や位置指定などの入力を行うキー
ボード/マウス6がデータ、アドレス、制御バスを含むシステムバス7を介して相互に接
続されている。また、記憶装置/補助記憶装置4には取り外し可能な不揮発性記憶媒体を
含むことができる。
【0012】
図2は、実施例1のデバッグ支援装置10の構成を示すブロック図である。
【0013】
デバッグ支援装置10は、図1のコンピュータ1にデバッグ支援プログラムがインスト
ールされ実行されることによって構成されるもので、デバッグ対象のプロセッサシステム
のメインメモリのアドレス情報とデバッグ動作指示コマンドとが入力されるコマンド/ア
ドレス入力部20と、デバッグ対象のプロセッサシステムのキャッシュメモリの構成情報
が入力されるキャッシュメモリ構成情報入力部30と、入力されたアドレス情報を入力さ
れたキャッシュメモリ構成情報を用いてキャッシュメモリアクセスアドレス情報に変換す
るアドレス変換部40と、変換されたキャッシュメモリアクセスアドレス情報でキャッシ
ュメモリにアクセスして、データが存在すれば記憶されたデータを読み出すキャッシュメ
モリ読出し部50と、入力されたアドレス情報と変換されたキャッシュメモリアクセスア
ドレス情報でキャッシュメモリにアクセスした時のデータの有無情報とデータが存在した
時に読み出したデータとを表示するキャッシュメモリ表示部60から構成されている。
【0014】
ここで、実施例1に係るデバッグ支援装置10のデバッグ対象のプロセッサシステムに
ついて説明する。デバッグ対象のプロセッサシステムは、図3のブロック図に概略構成を
示すように、プロセッサ100がメモリバス400を介してメインメモリ500と接続さ
れている。
【0015】
プロセッサ100は、プログラムを実行するプロセッサコア200とキャッシュメモリ
300から構成され、メモリバス400を介してプロセッサコア200に読み込まれ実行
されるプログラムやデータが記憶されるメインメモリ500と接続されている。
【0016】
キャッシュメモリ300は、メインメモリ500に比べて小容量で高速アクセス可能な
メモリを用いて構成され、プロセッサコア200がメインメモリ500に記憶された/す
るプログラムやデータへアクセスする時に、プログラムやデータを一時蓄えて、プロセッ
サコア200のプログラムやデータへのアクセスを高速化する。また、プロセッサ100
には図示を省略するがIOポートやバスインターフェースなど外部とのインターフェース
回路を含むことができる。
【0017】
キャッシュメモリ300は、例えば富田眞治著「第2版コンピュータアーキテクチャ」
(2002年4月30日発行:丸善株式会社)の170頁乃至173頁に基本原理が説明
されているキャッシュメモリである。そして、プロセッサコア200とメインメモリ50
0との間のメモリアクセス動作に介在してプロセッサコア200の高速動作を実現するた
め、メインメモリ500などとは異なるメモリ構成や読み出し書き込み制御回路を有して
いるが、本発明の実施例の説明に関係の深い読み出し動作に係る構成とその動作の様子を
以下に詳しく説明する。
【0018】
図4は、キャッシュメモリ300の読み出し動作に係る回路構成を示すブロック図であ
る。この実施例のキャッシュメモリ300は、メモリサイズ1Kバイト、ラインサイズ3
2バイト、連想度1のダイレクトマップ方式のキャッシュメモリである。プロセッサコア
200が出力する読み出しアドレスを入力して、該当アドレスのデータがキャッシュメモ
リ300に記憶されている(以下「ヒット」と表現する)場合に、その該当アドレスから
のデータをプロセッサコア200に出力する。キャッシュメモリ300は、図4に示すよ
うにデコーダ310と、タグアドレスを記憶するタグアドレス部320とデータを記憶す
るデータ部330とから成るメモリセル部340と、読み出しアドレスのデータがキャッ
シュメモリに記憶されて「ヒット」しているか、記憶されていない(以下「ミス」と表現
する)かを判定するタグアドレス比較回路350と、「ヒット」した時にデータ部330
から該当アドレスのデータを選択出力する選択回路360から構成される。
【0019】
図5は、プロセッサコア200のメモリアクセスによってキャッシュメモリ300にデ
ータが記憶されている時の、メモリセル部340に記憶されたデータの状態を示す図であ
る。
【0020】
ここで、図3乃至図5を参照しながら、プロセッサコア200がバイト長のデータ読み
出し命令(LB:Load Byte)を実行してメインメモリ500からデータを読み
出す時を例に、キャッシュメモリ300の動作を説明する。プロセッサコア200は、デ
ータ読み出し命令を読み込み(フェッチ)、解釈(デコード)して、データ読み出し命令
で設定された方法によりアクセスするメモリアドレスを計算し、32ビット長のメモリア
ドレスを出力してメモリ読み出し動作を開始する。プロセッサコア200から図4に示す
メモリアドレス210が出力されると、最初に、プロセッサ100に内蔵されているキャ
ッシュメモリ300にアクセスが行われる。
【0021】
例えば、「0x03EB33E0」(0xは16進表示であることを示す)番地へのア
クセスが行われると、メモリアドレス210に含まれる5ビット長のインデックス(In
dex)アドレス「0x1F」がキャッシュメモリ300のデコーダ310に入力される

【0022】
これにより、デコーダ310の出力310[0x1F]がアクティブとなり、メモリセ
ル部340のタグアドレス部320から「0x00FACC」が読み出されて、タグアド
レス比較回路350に入力される。一方、タグアドレス比較回路350の他方の入力には
メモリアドレス210に含まれる22ビット長のタグアドレス(Tag)として「0x0
0FACC」が入力される。
【0023】
この場合、タグアドレス比較回路350の2つのタグアドレス入力が一致するのでメモ
リセル部340にアクセスされたアドレスのデータが存在していることを示す「ヒット」
信号(例えば、High)がキャッシュメモリ300から出力される。そして、選択回路
360にはメモリアドレス210に含まれる5ビット長のオフセットアドレス(Bof)
として「0x00」が入力されているので、デコーダ310の出力310[0x1F]が
アクティブとなってメモリセル部340から読み出されたデータ部330[0x00]の
内容「0x28」(図5を参照)がバイト長のデータとしてプロセッサコア200へ出力
される。
【0024】
しかし、タグアドレス比較回路350の2つのタグアドレス入力の値が異なる時は、該
当するアドレスのデータがキャッシュメモリ300に存在しないことを示す「ミス」信号
(例えば、Low)がキャッシュメモリ300から出力されて、プロセッサコア200は
メインメモリ500からのデータ読み出し動作を行う。このメインメモリ500からのデ
ータの読み出しは、読出し処理速度が遅いことやメモリバス400の信号伝達速度が遅い
ことなどからキャッシュメモリ300からの読み出しに比べて読み出し速度が遅くなる。
また、キャッシュメモリ300へのアクセスで「ミス」が発生した場合、プロセッサシス
テムの構成方法により異なるが「ミス」の信号を割込み信号として用いて、メモリアクセ
スの局所性などを利用したキャッシュメモリ300のヒット率(キャッシュメモリからの
読み出し回数/メモリ読み出し回数)を高めるために、例えば連続するアドレスのデータ
をメインメモリ500からキャッシュメモリ300にあらかじめ読み込む処理を行って、
キャッシュメモリ300を内蔵することによるシステム性能向上が図られる。
【0025】
次に、プロセッサ100上で実行されるプログラムのデバッグ作業について説明する。
プロセッサ100が実行するプログラムの開発は、プログラム開発環境を構成する以下の
各種アプリケーションプログラム群(エディタ、コンパイラ、リンカ、シミュレータなど
)が用意されたコンピュータ1上で行われる。まず、プロセッサ100上で実行されて所
望の機能を実現するプログラムは、エディタを用いてC言語やアセンブラ言語などで記述
したソースプログラム[ファイル]が作成される。次に、ソースプログラム[ファイル]
はコンパイラでコンパイルされて、プロセッサ100上で実行される(オブジェクト)プ
ログラム[ファイル]が作成される。そして、必要に応じてリンカでプログラムのリンク
が行われて最終的に実行可能な(オブジェクト)プログラム[ファイル]が作成される。
次に、(オブジェクト)プログラム[ファイル]は、プロセッサ100のシステム環境の
動作を模擬するシミュレータに読み込み展開(ロード)される。そして、シミュレータに
よってプロセッサ100上でプログラムが実行される様子を模擬(シミュレーション)動
作させて、プログラムの検証作業を行い、検証作業で不具合が発見されると、デバッグ作
業が行われる。
【0026】
実施例1のデバッグ支援装置10を用いたデバッグ作業では、プロセッサ100上で実
行される(オブジェクト)プログラムの動作が所望と異なり不具合が発生したと判定され
る時点で、デバッグ支援装置10の図示しないブロックで入力設定したブレークポイント
やコマンドによって、シミュレータの模擬動作を停止させる。そしてデバッグ作業者は、
デバッグ支援装置10を用いて、シミュレータ停止時点のプロセッサシステムの図示しな
い状態記憶部にアクセスして各種情報を表示させ、必要に応じて情報の書き換えを行い、
そして指定したプログラムの実行時点からシミュレータの模擬動作を再開させたりしてデ
バッグ作業を行う。各種情報としては、プロセッサ100のレジスタやキャッシュメモリ
300やメインメモリ500上のデータや実行中のプログラムコードなどがある。
【0027】
次に、実施例1のデバッグ支援装置10でキャッシュメモリ300の内容を表示する場
合の処理手順を説明する。
【0028】
図6は、デバッグ支援装置10にキャッシュメモリ300の内容を表示するコマンドが
入力され、そのデータ表示指定アドレスとしてメインメモリ500のメモリアドレスが入
力された時の処理手順を示すフローチャートである。図7および図8はコマンド実行結果
の表示例である。図7は入力されたメモリアドレスに対応するデータがキャッシュメモリ
300に記憶されていて「ヒット」した場合で、図8は入力されたメモリアドレスに対応
するデータがキャッシュメモリ300に記憶されていなくて「ミス」した時の表示例であ
る。
【0029】
最初に、デバッグ支援装置10のコマンド/アドレス入力部20より、キャッシュメモ
リ300の読み出しコマンドとキャッシュメモリ300のデータ表示指定アドレス情報と
なるメインメモリアドレスとが入力される(ステップS100)。
【0030】
次に、キャッシュメモリ構成情報入力部30の入力操作によりデータベース600より
キャッシュメモリ構成情報が読み込まれて、その構成情報に従って入力されたメインメモ
リアドレスをアドレス変換部40でキャッシュメモリアクセス情報(タグアドレスおよび
インデックスアドレスおよびオフセットアドレス)に変換する(ステップS200)。
【0031】
すなわち、データベース600より読み出されたキャッシュメモリ300のメモリサイ
ズ1Kバイト、ラインサイズ32バイト、連想度1などの構成情報から、32ビット長の
メインメモリアドレス[31:0]([N:M]は、Nビット目(Nは2のN乗を示す)
からMビット目までのビットレンジがあることを示す)の中の31ビット目〜10ビット
目までの22ビット長のタグアドレスに変換され、9ビット目〜5ビット目までの5ビッ
ト長のインデックスアドレスに変換され、4ビット目〜0ビット目までの5ビット長のオ
フセットアドレスに変換される。
【0032】
例えば、図7のアドレス表示部7Aに示された、32ビット長のメインメモリアドレス
の「0x10300022」が入力されると、タグアドレスは「0x040C00」に、
インデックスアドレスは「00001」(2進表示)に、オフセットアドレスは「000
10」(2進表示)に変換される。
【0033】
次に、キャッシュメモリ読出し部50は、アドレス変換部40で変換されたキャッシュ
メモリアクセス情報を用いてキャッシュメモリ300のメモリ読み出しアクセス動作を行
う(ステップS300)。
【0034】
インデックスアドレスとして「00001」がキャッシュメモリ300に入力される場
合、まず、キャッシュメモリ読出し部50では、デコーダ310[0x01]の出力で指
定されるメモリセル部340に記憶されたデータが読み出される。例えば、図5に示すよ
うなデータが記憶されているメモリセル部340の場合は、デコーダ310[0x01]
の出力がアクティブとなって読み出し指定されるタグアドレス部320の第2行目の「0
x040C0」と、データ部330の第2行目の「0x0A」、「0x67」、「0x0
0」、・・・、「0x2A」、「0x02」の1ライン分のデータ(32バイト)が読み
出される。
【0035】
次に、キャッシュメモリ読出し部50は、キャッシュメモリ300のタグアドレス比較
回路350に入力される2つのタグアドレスの値を比較し、比較結果からキャッシュメモ
リアクセスが「ヒット」したかを調べる(ステップS400)。2つのタグアドレスが不
一致でキャッシュメモリアクセスが「ミス」の時はステップS500に進み、2つのタグ
アドレスが一致してキャッシュメモリアクセスが「ヒット」した時はステップS600に
進む。
【0036】
キャッシュメモリアクセスの「ヒット」判定と同様に、デバッグ支援装置10は、メモ
リアドレス210より変換された22ビットのタグアドレスTag(メモリアドレス21
0[31:10])情報と、デコーダ310[01]がアクティブとなって選択されるメ
モリセル部340のタグアドレス部320より出力される22ビット長のタグアドレス情
報とをタグアドレス比較回路350で比較して、その比較結果によって判定を行う。すな
わち、2つのタグアドレスの値が異なる場合は、メモリアドレス210のデータがキャッ
シュメモリ300に記憶されていない「ミス」であるとし、2つのタグアドレスの値が一
致する場合はメモリアドレス210のデータがキャッシュメモリ300に記憶されている
「ヒット」であるとする。
【0037】
そして、デバッグ支援装置10は、「ヒット」しない場合、キャッシュメモリ表示部6
0にコマンドで指定されたメインメモリアドレス210のデータがキャッシュメモリ30
0に無いことを表示し(ステップS500)、キャッシュメモリ300の内容を表示する
コマンドの処理を終了する。
【0038】
図8は、指定されたメインメモリアドレス「0x10500022」8Aのデータがキ
ャッシュメモリ300に存在しない時に、キャッシュメモリ表示部60に表示される例を
示している。すなわち、キャッシュメモリ300のメモリセル部340に図5に示す内容
のデータが記憶されている場合に、メモリアドレスとして「0x10500022」が入
力されると、変換されたインデックスアドレス(Index)は「00001」で、デコ
ーダ310[0x01]の出力がアクティブとなって指定されるメモリセル部340の第
2行目のタグアドレス部320から読み出されるタグアドレス(Tag)は「0x040
C00」となる。一方、メモリアドレス210から変換されたタグアドレスは「0x04
1400」であるので、タグアドレス比較回路350では2つのタグアドレスの値は不一
致となり、指定したメモリアドレス210のデータはキャッシュメモリ300には記憶さ
れていないと判定され、その判定結果がキャッシュメモリ表示部60にメッセージ8Gが
表示される。なお、表示画面の内容は、例示であってメモリアクセスが「ミス」したこと
を示す内容であれば、他の表現を用いてもよい。
【0039】
そしてまた、デバッグ支援装置10は、「ヒット」した時は、キャッシュメモリ表示部
60にコマンドで指定されたメインメモリアドレス210とともに、該当アドレスのキャ
ッシュメモリ300に記憶されたデータを表示し(ステップS600)、キャッシュメモ
リ300の内容を表示するコマンドの処理を終了する。
【0040】
図7は、指定されたメモリアドレスのデータがキャッシュメモリ300に存在する時に
、メモリアドレス「0x10300022」7Aを表示するとともに、該当するアドレス
のデータ(この例では1ライン分のキャッシュメモリのデータを同時に表示していて、オ
フセットアドレス「00010」で指定されるデータ、即ち図7のデータ「0x00」7
Bが強調表示されている例を示している。
【0041】
すなわち、図5に示すようにキャッシュメモリ300にデータが記憶されている場合に
、メモリアドレス「0x10300022」が入力されると、変換されたインデックスア
ドレス(Index)は「0x01」7Cで、デコーダ310[0x01]の出力がアク
ティブとなって指定されたメモリセル部340の第2行目のタグアドレス部320から読
み出されるタグアドレス(Tag)は「0x040C00」となる。一方、メモリアドレ
スから変換されたタグアドレス(Tag)も「0x040C00」であるので、タグアド
レス比較回路350では2つのタグアドレス値は一致して、指定されたメモリアドレス「
0x10300022」がキャッシュメモリ300に記憶されていると判定される。そし
て、デコーダ310[0x01]の出力がアクティブとなって指定されるメモリセル部3
40の第2行目の1ライン分(32バイト)のデータ部330の中からオフセットアドレ
ス「00010」で指定されたデータ部330[0x02]の「0x00」がシミュレー
タのプロセッサ100の状態記憶部より読み出される。なお、表示の内容は、例示であっ
てメモリアクセスが「ヒット」し、そのデータが「0x00」であることを示す内容であ
れば、他の表現を用いてもよい。
【0042】
上述した第1の実施例によれば、キャッシュメモリの内容表示をメモリアドレス指定で
行えるようになり、キャッシュメモリに記憶されたデータを考慮しながらプログラムのデ
バッグ作業を行う場合にも、メインメモリ上にロードされ展開されるオブジェクトプログ
ラムのデバッグ作業と同様に作業することができる。そして、キャッシュメモリの内容を
確認する場合にキャッシュメモリの構成情報から、タグアドレスやインデックスアドレス
などへの煩雑な変換と比較作業を行う必要がなくなり、デバッグ作業の効率が向上する。
【実施例2】
【0043】
次に、本発明の第2の実施例に係るデバッグ支援装置を、図1、図3乃至図5、および
図9乃至図12を参照して説明する。図9は、実施例2のデバッグ支援装置11の構成を
示すブロック図である。図10は、デバッグ支援装置11にキャッシュメモリ300の内
容を表示するコマンドが入力され、そのデータ表示指定アドレスとしてレジスタ番号また
はソースプログラムで使用されたシンボルが入力された時の処理手順を示すフローチャー
トである。図11および図12はコマンド実行結果の表示例である。
【0044】
この実施例2に係るデバッグ支援装置11の構成と処理手順において、上記実施例1に
係るデバッグ支援装置10と同一部分には同一符号を付し、詳細な説明を省略する。また
、デバッグ対象のキャッシュメモリ300を内蔵するプロセッサ100と、その内蔵され
たキャッシュメモリ300に記憶されたデータも同一であるとする。
【0045】
この実施例2のデバッグ支援装置が実施例1と異なる点は、キャッシュメモリ300の
内容を表示するコマンド処理において、プロセッサ100のレジスタ番号またはソースプ
ログラム記述で使用されたシンボルを用いてメモリアドレスが指定されることである。
【0046】
このデバッグ支援装置11は、図1のコンピュータ1にデバッグ支援プログラムがイン
ストールされ実行されることによって構成されるもので、図9に示すように、シンボルと
メモリアドレスの対応関係を示すデバッグ情報を入力するデバッグ情報入力部70と、メ
インメモリのアドレス情報とデバッグ動作指示コマンドが入力され、アドレス情報として
レジスタ番号やシンボルなどが入力された場合に入力されたデバッグ情報を用いて数値表
現のアドレス情報に変換するコマンド/アドレス入力部21と、キャッシュメモリの構成
情報が入力されるキャッシュメモリ構成情報入力部30と、入力または変換された数値表
現のアドレス情報を入力されたキャッシュメモリ構成情報を用いてキャッシュメモリアク
セスアドレス情報に変換するアドレス変換部40と、変換されたキャッシュメモリアクセ
スアドレス情報でキャッシュメモリにアクセスしてデータが存在すれば記憶されたデータ
を読み出すキャッシュメモリ読出し部50と、入力されたアドレス情報(および変換され
た数値表現のアドレス情報)と変換されたキャッシュメモリアクセスアドレス情報でキャ
ッシュメモリにアクセスした時のデータの有無情報とデータが存在した時に読み出したデ
ータを表示するキャッシュメモリ表示部60から構成されている。
【0047】
デバッグ情報は、プログラム開発作業において、ソースプログラム[ファイル]をコン
パイラでコンパイルしてオブジェクトプログラム[ファイル]を作成する時に、デバッグ
オプションを指定すると、デバッグ支援装置などに参照されてデバッグ作業を支援する情
報[ファイル]として作成される。デバッグ情報には、例えば、ソースプログラム記述で
使用されたシンボルとメモリアドレス情報との対応を示す情報などがある。なお、以下の
説明で使用するデバッグ情報は、シンボルに対応するアドレス情報が相対アドレス情報の
場合は、リンカによって最終的な実行プログラムを作成する時のリンク情報などを用いて
、数値表現されたメモリアドレス情報に変換されているものとする。
【0048】
次に、実施例2のデバッグ支援装置11でキャッシュメモリ300の内容を表示する場
合の処理手順を説明する。
【0049】
図10は、デバッグ支援装置11にキャッシュメモリ300の内容を表示するコマンド
が入力され、そのデータ表示指定アドレスとしてメインメモリ500のメモリアドレスま
たはレジスタ番号またはシンボルが入力された時の処理手順を示すフローチャートである

【0050】
図11および図12は、コマンド実行結果の表示例である。図11は、ソースプログラ
ムで使用されたシンボルで指定されたメモリアドレスのデータがキャッシュメモリ300
に記憶されていて「ヒット」した場合の表示例で、図12は、プロセッサ100のレジス
タ番号10が指定されレジスタ番号10に記憶されているデータをメモリアドレスとした
時のデータがキャッシュメモリ300に記憶されていて「ヒット」した場合の表示例であ
る。
【0051】
最初に、デバッグ支援装置11のコマンド/アドレス入力部21よりキャッシュメモリ
300の読み出しコマンドと、データ表示指定アドレス情報とが入力される(ステップS
110)。
【0052】
次に、入力されたデータ表示指定アドレス情報の種類を調べる(ステップS111)。
そして、メインメモリアドレスの場合はステップS200に進み、レジスタ番号の場合は
ステップS113に進み、シンボルの場合はステップS112に進む。
【0053】
データ表示指定アドレス情報の種類の判定は、ステップS110で入力された文字列の
アドレス指定部の文字列をあらかじめ定められた順序に従って比較することで行う。即ち
、入力された文字列が2進や16進表現のあらかじめ定められた識別子(例えば、本実施
例の説明の数値表現では、2進表現の場合はかぎ括弧で括って識別子を省略可能とし、1
6進表現の場合はかぎ括弧で括って”0x”を識別子としている)から始まる数値の場合
はメインメモリアドレスとして判定し、「$r」で始まる場合はレジスタ番号として判定
し、その他の場合はシンボルとして判定する。デバッグ支援装置の仕様で、8進や10進
表現の識別子や、識別子の省略可能な数値表現が定められている場合は、そのように判定
できるように文字列比較を行い識別子に続く文字列が数値変換処理される。また、プロセ
ッサのレジスタを番号以外で指定が可能な場合は、例えばその指定文字列の先頭に「$」
が付与されて入力された場合は、その指定レジスタの内容を指定アドレス情報とするよう
に処理される。
【0054】
次に、データ表示指定アドレス情報がレジスタ番号の場合、シミュレータ上のプロセッ
サ100に内蔵されるレジスタ情報記憶部より、指定された番号のレジスタ情報を読み出
し(ステップS113)、ステップS200に進む。
【0055】
デバッグ支援装置11は、シミュレータ停止時点の図示しないプロセッサシステム状態
記憶部の情報を読み出す手順を用いて、プロセッサ100の指定されたレジスタ番号のレ
ジスタに記憶されている数値をメモリアドレス情報として読み出す。
【0056】
次に、データ表示指定アドレス情報がシンボル表現の場合は、デバッグ情報データベー
ス610(図10を参照:図9にも記載)よりデバッグ情報を読み出して、シンボルをメ
インメモリアドレス情報に変換し(ステップS112)、ステップS200に進む。
【0057】
デバッグ情報には、シンボルと数値表現のメインメモリアドレス情報の対応が示されて
いるので、デバッグ支援装置11はソフトウェア処理で一般的に用いられるテキストサー
チなどの手法を用いてデバッグ情報データベース610を探索して、シンボルと一致する
シンボルに対応するメインメモリアドレスを読み出す。
【0058】
次に、キャッシュメモリ構成情報入力部30からの指令でデータベース600よりキャ
ッシュメモリ構成情報が読み込まれて、その構成情報に従って入力されたメインメモリア
ドレスをアドレス変換部40でキャッシュメモリアクセス情報(タグアドレスおよびイン
デックスアドレスおよびオフセットアドレス)に変換する(ステップS200)。
【0059】
次に、キャッシュメモリ読出し部50は、変換されたインデックスアドレス情報を用い
てキャッシュメモリ300のメモリ読み出しアクセス動作を行う(ステップS300)。
【0060】
次に、キャッシュメモリ読出し部50は、キャッシュメモリ300のタグアドレス比較
回路350に入力される2つのタグアドレスの値を比較し、比較結果からキャッシュメモ
リアクセスが「ヒット」したかを調べる(ステップS400)。2つのタグアドレスが不
一致でキャッシュメモリアクセスが「ミス」の時は、ステップS510に進み、2つのタ
グアドレスが一致してキャッシュメモリアクセスが「ヒット」した時はステップS610
に進む。
【0061】
そして、デバッグ支援装置11は、「ヒット」しない場合、キャッシュメモリ表示部6
0にコマンドで指定されたメインメモリアドレス(およびデータ表示指定アドレス情報)
のデータがキャッシュメモリ300に無いことを表示し(ステップS510)、キャッシ
ュメモリ300の内容を表示するコマンドの処理を終了する。
【0062】
そしてまた、デバッグ支援装置11は、「ヒット」した時は、キャッシュメモリ表示部
60にコマンドで指定されたメインメモリアドレス(およびデータ表示指定アドレス情報
)を表示するとともに、該当アドレスのキャッシュメモリ300に記憶されたデータを表
示し(ステップS610)、キャッシュメモリ300の内容を表示するコマンドの処理を
終了する。
【0063】
図11の表示画面は、データ表示指定アドレス情報がシンボルでデバッグ情報を用いて
変換されたメインメモリアドレスで指定されたメモリアドレスのデータがキャッシュメモ
リ300に存在する場合に、例えば、関数func_aを定義するプログラムの開始アド
レスを示すシンボル「func_a」11Aを表示するとともに、シンボルの対応するメ
モリアドレス「0x10300022」のデータが表示装置に表示される例を示している
。この例では、1ライン分のキャッシュメモリ300のデータを同時に表示していて、オ
フセットアドレスで指定されるデータ「0x00」11Bが強調表示されている。なお、
表示の内容は、例示であってメモリアクセスが「ヒット」し、そのデータが「0x00」
であることを示す内容であれば、他の表現を用いてもよい。
【0064】
図12は、データ表示指定アドレス情報がレジスタ番号であって、プロセッサ100の
該当レジスタに記憶されているメモリアドレスがキャッシュメモリ300に存在する場合
に、レジスタ番号「$r10」を表示するとともに、該当するアドレスのデータが表示さ
れる例を示している。この例では、1ライン分のキャッシュメモリのデータを同時に表示
していて、オフセットアドレスで指定されるデータ「0x00」12Bが強調表示されて
いる。なお、表示の内容は、例示であってメモリアクセスが「ヒット」し、そのデータが
「0x00」であることを示す内容であれば、他の表現を用いてもよい。
【0065】
上述した第2の実施例によれば、キャッシュメモリの内容表示をメモリアドレス指定に
加えてソースプログラムで使用したシンボルによる指定、およびレジスタの内容による指
定で行えるようになり、キャッシュメモリの内容を確認する場合にキャッシュメモリの構
成情報から、タグアドレスやインデックスアドレスなどへの煩雑な変換と比較作業を行う
必要がなくなるだけでなく、プログラム解析をよりデバッグ担当者に理解しやすい表現で
行うことができて、デバッグ効率が向上する。
【0066】
すなわち、キャッシュメモリに記憶されたデータを考慮しながらプログラムのデバッグ
作業を行う場合に、ソースプログラム作成時に使用したシンボルによって参照することが
できるので、オブジェクトプログラムのロードされたメモリアドレスなどを確認すること
なく、プログラム作成時に使用した情報を利用したデバッグ作業とすることができる。ま
た、デバッグで停止させた時点のプロセッサのレジスタの内容に基づいて、キャッシュメ
モリに記憶されたデータを参照することができるので、その時点のプログラムで割り付け
られたレジスタの機能などを考慮しながら解析作業に集中できるので、デバッグ効率が向
上する。
【0067】
また、上述の実施例2では、コマンド/アドレス入力部21で入力されたデータ表示指
定アドレス情報を単一の表示形式のものとして説明したが、メモリアドレスやシンボルや
プログラムで定義された変数(この値はデバッグ情報を用いて変数に割り付けられたメモ
リアドレスやレジスタの内容を読み出すことで得られる)やレジスタ番号や定数などを四
則演算子で結合した数式表現であってもよく、その演算結果をキャッシュメモリのデータ
表示指定アドレス情報とすることで、ソースプログラム記述表現に従ってデバッグ作業を
容易に進めることができるので、更にデバッグ効率が向上する。
【実施例3】
【0068】
次に、本発明の第3の実施例に係るデバッグ支援装置を、図1、図3乃至図5、および
図13乃至図15を参照して説明する。図13は、実施例3のデバッグ支援装置12の構
成を示すブロック図である。図14は、デバッグ支援装置12にキャッシュメモリ300
の内容を表示するコマンドが入力され、そのデータ表示指定アドレスとしてメモリアドレ
スが入力された時の処理手順を示すフローチャートである。図15は、コマンド実行結果
の表示例である。
【0069】
この実施例3に係るデバッグ支援装置12の構成と処理手順において、上記実施例1に
係るデバッグ支援装置10と同一部分には同一符号を付し、詳細な説明を省略する。また
、デバッグ対象のキャッシュメモリを内蔵するプロセッサ100とその内蔵されたキャッ
シュメモリ300に記憶されたデータも同一であるとする。
【0070】
この実施例3のデバッグ支援装置が実施例1と異なる点は、キャッシュメモリ300の
内容を表示するコマンド処理において、入力されたメモリアドレスのデータをキャッシュ
メモリ300から読み出すとともにメインメモリ500からも読み出して、データ比較を
行い、比較結果を表示することである。
【0071】
図13に示すようにデバッグ支援装置12は、図1のコンピュータ1にデバッグ支援プ
ログラムがインストールされ実行されることによって構成されるもので、デバッグ対象の
プロセッサシステムのメインメモリのアドレス情報とデバッグ動作指示コマンドが入力さ
れるコマンド/アドレス入力部20と、キャッシュメモリの構成情報が入力されるキャッ
シュメモリ構成情報入力部30と、入力されたアドレス情報を入力されたキャッシュメモ
リ構成情報を用いてキャッシュメモリアクセスアドレス情報に変換するアドレス変換部4
0と、変換されたキャッシュメモリアクセスアドレス情報によりキャッシュメモリにアク
セスして、データが存在すれば記憶されたデータを読み出すキャッシュメモリ読出し部5
0と、入力されたメインメモリのアドレス情報でメインメモリにアクセスしてデータを読
み出すメインメモリ読み出し部80と、キャッシュメモリ読み出し部50で読み出された
データとメインメモリ読み出し部80で読み出されたデータとを比較する読み出しデータ
比較部90と、入力されたアドレス情報と変換されたキャッシュメモリアクセスアドレス
情報でキャッシュメモリにアクセスした時のデータの有無情報とデータが存在した時に読
み出したデータとメインメモリから読み出したデータとを比較した比較結果とを表示する
キャッシュメモリ表示部60から構成されている。
【0072】
次に、実施例3のデバッグ支援装置12でキャッシュメモリ300の内容を表示する場
合の処理手順を説明する。
【0073】
図14は、デバッグ支援装置12にキャッシュメモリ300の内容を表示するコマンド
が入力され、そのデータ表示指定アドレスとしてメインメモリ500のメモリアドレスが
入力された時の処理手順を示すフローチャートである。図15は、コマンド実行結果の表
示例で、入力されたメモリアドレスのデータはキャッシュメモリ300に記憶されていて
「ヒット」したが、そのキャッシュメモリ300に記憶されているデータがメインメモリ
500から読み出されたデータと一致しない時の表示例である。
【0074】
最初に、デバッグ支援装置12のコマンド/アドレス入力部20よりキャッシュメモリ
300の読み出し表示及びメインメモリとのデータ比較コマンドと、キャッシュメモリ3
00のデータ表示指定アドレス情報であるメインメモリアドレスとが入力される(ステッ
プS120)。
【0075】
次に、キャッシュメモリ構成情報入力部30からの指令でデータベース600よりキャ
ッシュメモリ構成情報が読み込まれて、その構成情報に従って入力されたメインメモリア
ドレスをアドレス変換部40でキャッシュメモリアクセス情報(タグアドレスおよびイン
デックスアドレスおよびオフセットアドレス)に変換する(ステップS200)。
【0076】
次に、デバッグ支援装置12は、アドレス変換部40で変換されたキャッシュメモリア
クセス情報を用いて、キャッシュメモリ300のメモリ読み出しアクセス動作を行う(ス
テップS300)。
【0077】
次に、キャッシュメモリ読出し部50は、キャッシュメモリ300のタグアドレス比較
回路350に入力される2つのタグアドレスの値を比較し、比較結果からキャッシュメモ
リアクセスが「ヒット」したかを調べる(ステップS400)。2つのタグアドレスが不
一致でキャッシュメモリアクセスが「ミス」の場合はステップS520に進み、2つのタ
グアドレスが一致してキャッシュメモリアクセスが「ヒット」した場合はステップS70
0に進む。
【0078】
そして、「ヒット」しない場合、デバッグ支援装置12は、キャッシュメモリ表示部6
0にコマンドで指定されたメインメモリアドレスのデータがキャッシュメモリに無いこと
を表示し(ステップS520)、キャッシュメモリ300の読み出し表示及びメインメモ
リとのデータ比較コマンドの処理を終了する。
【0079】
そしてまた、「ヒット」した場合、デバッグ支援装置12は、メインメモリ読み出し部
80がコマンド/アドレス入力部20から入力されたメモリアドレスをメインメモリ50
0から読み出す(ステップS700)。
【0080】
次に、読み出しデータ比較部90では、キャッシュメモリ読み出し部50で読み出した
データとメインメモリ読み出し部80で読み出したデータとが比較される(ステップS8
00)。比較した結果データが一致した場合はステップS620に進み、不一致の場合は
ステップS630に進む。
【0081】
そして、データが一致した場合、デバッグ支援装置12は、キャッシュメモリ表示部6
0にコマンドで指定されたメインメモリアドレスを表示するとともに、該当アドレスのキ
ャッシュメモリ300に記憶されたデータの表示及びキャッシュメモリ300のデータが
メインメモリ500のデータと一致している(ハザード状態でない)ことを表示し(ステ
ップS620)、キャッシュメモリ300の読み出し表示及びメインメモリとのデータ比
較コマンドの処理を終了する。
【0082】
そしてまた、データが不一致の場合、デバッグ支援装置12は、キャッシュメモリ表示
部60にコマンドで指定されたメインメモリアドレスを表示するとともに、該当アドレス
のキャッシュメモリ300に記憶されたデータの表示及びキャッシュメモリ300のデー
タとメインメモリ500のデータとが一致していない(ハザード状態である)ことを表示
し(ステップS630)、キャッシュメモリ300の読み出し表示及びメインメモリとの
データ比較コマンドの処理を終了する。
【0083】
図15は、指定されたメモリアドレスのデータがキャッシュメモリ300に存在して、
メモリアドレス「10300022」15Aを表示するとともに、該当するアドレスのデ
ータが表示される。この例では1ライン分のキャッシュメモリ300のデータを同時に表
示していて、オフセットアドレスで指定されるデータ「0x00」15Bが強調表示され
ている。また、キャッシュメモリ300のデータがメインメモリアドレスの指し示すメイ
ンメモリ500上のデータとは一致せず、ハザード状態であることが表示される例を示し
ている。図15にはハザード状態の有無を示す欄15Dが設けられていて、ハザード状態
の場合はその表示欄に「Hazard」15Eのチェックマークが表示される。なお、表
示の内容は、例示であってメモリアクセスが「ヒット」し、そのデータが「0x00」で
あり、そのキャッシュメモリ300から読み出されたデータが同じアドレスのメインメモ
リ500上のデータと不一致であることを示す内容であれば、他の表現を用いてもよい。
【0084】
上述した第3の実施例によれば、キャッシュメモリの内容表示をメモリアドレス指定で
行えるようになり、キャッシュメモリに記憶されたデータを考慮しながらプログラムのデ
バッグ作業を行う場合にも、メインメモリ上にロードされ展開されるオブジェクトプログ
ラムのデバッグ作業と同様に作業することができる。そして、キャッシュメモリの内容を
確認する場合にキャッシュメモリの構成情報から、タグアドレスやインデックスアドレス
などへの煩雑な変換と比較作業を行う必要がなくなり、デバッグ作業の効率が向上する。
【0085】
更に、特に組込み用途のプロセッサシステムでは、回路規模や消費電力の制約からプロ
セッサ以外の周辺回路などからメインメモリへデータの書き込みが行われた場合に、プロ
セッサのキャッシュメモリに読み込まれたデータとの整合性を管理維持する回路を備えて
いないことがあり、周辺回路などからのメインメモリへのアクセス制御プログラムの不具
合や、プロセッサが演算結果などのデータをメモリに書き込む場合に、高速なキャッシュ
メモリにのみ書き込みを行い、その後プログラムでキャッシュメモリからメインメモリに
書き戻すような制御手順としている場合のプログラム処理の不具合などで、本来一致すべ
きキャッシュメモリとメインメモリのデータに不一致が生じてハザード状態となることが
あるので、その不一致の有無をキャッシュメモリの内容表示と同時に行わせるようにする
ことができて、不具合発生時のデータ解析が容易となってデバッグ作業の効率が向上する

【実施例4】
【0086】
次に、本発明の第4の実施例に係るデバッグ支援装置を、図1、図3乃至図5、および
図16乃至図20を参照して説明する。図16は、実施例4のデバッグ支援装置13の構
成を示すブロック図である。図17は、デバッグ支援装置13のデバッグ対象の第1のプ
ロセッサ100#1と第2のプロセッサ100#2とがメモリバス400を介してメイン
メモリ500に接続されるプロセッサシステムの概略構成を示すブロック図である。図1
8は、デバッグ支援装置13に第1のプロセッサ100#1に内蔵されるキャッシュメモ
リ300#1の内容を表示するコマンドが入力され、そのデータ表示指定アドレスとして
メモリアドレスが入力された時の処理手順を示すフローチャートである。図19および図
20は、コマンド実行結果の表示例である。
【0087】
この実施例4に係るデバッグ支援装置13の構成と処理手順において、上記実施例1に
係るデバッグ支援装置10と同一部分には同一符号を付し、詳細な説明を省略する。また
、図17に示すデバッグ対象のキャッシュメモリを内蔵する第1のプロセッサ100#1
と第2のプロセッサ100#2は、実施例1のプロセッサ100と同一の構成で、そして
プロセッサ100#1に内蔵されたキャッシュメモリ300#1に記憶されたデータは実
施例1のキャッシュメモリ300と同一であるとする。
【0088】
この実施例4のデバッグ支援装置が実施例1と異なる点は、入力された番号のプロセッ
サのキャッシュメモリの内容を表示するコマンド処理において、入力されたメモリアドレ
スが入力された番号のプロセッサのキャッシュメモリから読み出すとともに、異なる番号
のプロセッサのキャッシュメモリからも読み出して、そのデータ比較を行い、比較結果を
表示することである。
【0089】
このデバッグ支援装置13は、図1のコンピュータ1にデバッグ支援プログラムがイン
ストールされ実行されることによって構成されるもので、図16に示すように、デバッグ
対象のプロセッサ番号とプロセッサシステムのメインメモリのアドレス情報とデバッグ動
作指示コマンドが入力されるコマンド/アドレス/プロセッサ番号入力部22と、プロセ
ッサに応じたキャッシュメモリの構成情報が入力されるキャッシュメモリ構成情報入力部
30および31と、入力されたアドレス情報を入力されたキャッシュメモリ構成情報を用
いてプロセッサに応じたキャッシュメモリアクセスアドレス情報に変換するアドレス変換
部40および41と、プロセッサに応じて変換されたキャッシュメモリアクセスアドレス
情報でそれぞれのプロセッサ番号のプロセッサに内蔵されたキャッシュメモリにアクセス
してデータが存在すれば記憶されたデータを読み出すキャッシュメモリ読出し部50およ
び51と、キャッシュメモリ読み出し部50で読み出されたデータとキャッシュメモリ読
み出し部51で読み出されたデータとを比較する読み出しデータ比較部91と、入力され
たメインメモリアドレス情報と変換されたキャッシュメモリアクセスアドレス情報で入力
されたプロセッサ番号のプロセッサのキャッシュメモリにアクセスした時のデータの有無
情報とデータが存在した時に読み出したデータと、変換されたキャッシュメモリアクセス
アドレス情報で入力されたプロセッサ番号と異なるプロセッサのキャッシュメモリにアク
セスした時のデータの有無情報とデータが存在した時に読み出したデータとを比較した比
較結果とを表示するキャッシュメモリ表示部60から構成されている。
【0090】
次に、実施例4のデバッグ支援装置13によってプロセッサ番号1のプロセッサ100
#1のキャッシュメモリ300#1の内容を表示する場合の処理手順を説明する。
【0091】
図18は、デバッグ支援装置13にプロセッサ番号として「1」が入力され、プロセッ
サ100#1に内蔵する第1キャッシュメモリ300#1の内容を表示するコマンドが入
力され、そのデータ表示指定アドレスとしてメインメモリ500のメモリアドレスが入力
された時の処理手順を示すフローチャートである。図19および図20は、コマンド実行
結果の表示例で、図19は、入力指定されたメモリアドレスが入力された番号の第1プロ
セッサ100#1の第1キャッシュメモリ300#1に記憶されていて「ヒット」し、入
力された番号と異なるプロセッサ番号2の第2プロセッサ100#2の第2キャッシュメ
モリ300#2には入力されたメモリアドレスのデータが記憶されていなくて「ミス」し
た場合の表示例である。図20は、入力されたメモリアドレスのデータが、プロセッサ番
号1の第1プロセッサ100#1の第1キャッシュメモリ300#1とプロセッサ番号2
の第2プロセッサ100#2の第2キャッシュメモリ300#2でそれぞれ「ヒット」し
、それぞれ読み出された2つのデータの値が異なっていた場合の表示例である。
【0092】
最初に、デバッグ支援装置13のコマンド/アドレス/プロセッサ番号入力部22より
キャッシュメモリの読み出し表示、及びデータ比較コマンドとキャッシュメモリのデータ
表示指定アドレス情報であるメインメモリアドレスと、プロセッサ番号とが入力される(
ステップS130)。
【0093】
次に、キャッシュメモリ構成情報入力部30によってデータベース600より入力され
たプロセッサ番号「1」で指定された第1プロセッサ100#1に内蔵される第1キャッ
シュメモリ300#1のキャッシュメモリ構成情報が読み込まれて、その構成情報に従っ
て入力されたメインメモリアドレスをアドレス変換部40でキャッシュメモリアクセス情
報(タグアドレスおよびインデックスアドレスおよびオフセットアドレス)に変換する(
ステップS200)。
【0094】
次に、デバッグ支援装置13は、アドレス変換部40で変換されたキャッシュメモリア
クセス情報を用いて第1キャッシュメモリ300#1のメモリ読み出しアクセス動作を行
う(ステップS300)。
【0095】
次に、キャッシュメモリ読出し部50は、第1キャッシュメモリ300#1のタグアド
レス比較回路350に入力される2つのタグアドレスの値を比較し、比較結果からキャッ
シュメモリアクセスが「ヒット」したかを調べる(ステップS400)。2つのタグアド
レスが不一致でキャッシュメモリアクセスが「ミス」の場合はステップS530に進み、
2つのタグアドレスが一致してキャッシュメモリアクセスが「ヒット」した場合はステッ
プS210に進む。
【0096】
そして、指定された番号のプロセッサのキャッシュメモリアクセスが「ヒット」しない
場合、デバッグ支援装置13は、キャッシュメモリ表示部60にコマンドで指定されたメ
インメモリアドレスのデータが指定されたプロセッサのキャッシュメモリ300#1に無
いことを表示し(ステップS530)、指定された番号のプロセッサのキャッシュメモリ
300#1の読み出し表示、及び指定と異なる番号のプロセッサのキャッシュメモリのデ
ータ比較コマンドの処理を終了する。
【0097】
そしてまた、指定された番号のプロセッサのキャッシュメモリアクセスが「ヒット」し
た場合、デバッグ支援装置13は、キャッシュメモリ構成情報入力部31によってデータ
ベース600よりコマンドで入力指定されたプロセッサ番号と異なるプロセッサ100#
2に内蔵されるキャッシュメモリ300#2のキャッシュメモリ構成情報が読み込まれて
、その構成情報に従って入力されたメインメモリアドレスをアドレス変換部41でキャッ
シュメモリアクセス情報(タグアドレスおよびインデックスアドレスおよびオフセットア
ドレス)に変換する(ステップS210)。
【0098】
次に、デバッグ支援装置13は、アドレス変換部41で変換されたキャッシュメモリア
クセス情報を用いてキャッシュメモリ300#2のメモリ読み出しアクセス動作を行う(
ステップS310)。
【0099】
次に、キャッシュメモリ読出し部51は、キャッシュメモリ300#2のタグアドレス
比較回路350に入力される2つのタグアドレスの値を比較し、比較結果からキャッシュ
メモリアクセスが「ヒット」したかを調べる(ステップS410)。2つのタグアドレス
が不一致でキャッシュメモリアクセスが「ミス」の場合はステップS640に進み、2つ
のタグアドレスが一致してキャッシュメモリアクセスが「ヒット」した場合はステップS
900に進む。
【0100】
そして、指定と異なる番号のプロセッサのキャッシュメモリアクセスが「ヒット」しな
い場合、デバッグ支援装置13は、指定された番号「1」のプロセッサのキャッシュメモ
リアクセスは「ヒット」しているので、キャッシュメモリ表示部60にコマンドで指定さ
れたプロセッサ番号とメインメモリアドレスを表示するとともに、該当アドレスのキャッ
シュメモリ300#1に記憶されたデータを表示するとともに、コマンドで指定されたメ
インメモリアドレスのデータが指定と異なる番号「2」のプロセッサのキャッシュメモリ
300#2に無いことを表示し(ステップS640)、指定された番号のプロセッサのキ
ャッシュメモリの読み出し表示、及び指定と異なる番号のプロセッサのキャッシュメモリ
のデータ比較コマンドの処理を終了する。
【0101】
そしてまた、デバッグ支援装置13は、読み出しデータ比較部91で、キャッシュメモ
リ読み出し部50で読み出したデータ(キャッシュメモリ300#1のデータ)とキャッ
シュメモリ読み出し部51で読み出したデータ(キャッシュメモリ300#2のデータ)
を比較する(ステップS900)。比較した結果データが一致した場合はステップS65
0に進み、データが不一致の場合はステップS660に進む。
【0102】
そして、指定されたメモリアドレスに該当する複数のプロセッサのキャッシュメモリに
記憶されたデータが一致した場合、デバッグ支援装置13は、キャッシュメモリ表示部6
0にコマンドで指定されたプロセッサ番号「1」とメインメモリアドレスを表示するとと
もに、キャッシュメモリ300#1のメインメモリアドレスに対応して記憶されたデータ
を表示するとともに、キャッシュメモリ300#1のデータとキャッシュメモリ300#
2のデータとが一致している(ハザード状態でない)ことを表示し(ステップS650)
、指定された番号のプロセッサのキャッシュメモリの読み出し表示、及び指定と異なる番
号のプロセッサのキャッシュメモリのデータ比較コマンドの処理を終了する。
【0103】
そしてまた、指定されたメモリアドレスに該当する複数のプロセッサのキャッシュメモ
リに記憶されたデータが不一致の場合、デバッグ支援装置13は、キャッシュメモリ表示
部60にコマンドで指定されたプロセッサ番号「1」とメインメモリアドレスを表示する
とともに、該当アドレスのキャッシュメモリ300#1に記憶されたデータを表示すると
ともに、キャッシュメモリ300#1のデータとキャッシュメモリ300#2のデータと
が一致していない(ハザード状態である)ことを表示し(ステップS660)、指定され
た番号のプロセッサのキャッシュメモリの読み出し表示、及び指定と異なる番号のプロセ
ッサのキャッシュメモリのデータ比較コマンドの処理を終了する。
【0104】
図19は、指定されたメモリアドレスのデータが指定されたプロセッサのキャッシュメ
モリ300#1に存在して、メモリアドレス「10300022」19Aと、プロセッサ
番号「1」19Fを表示するとともに、該当するアドレスのデータの表示例を示している
。この例では、1ライン分のキャッシュメモリ300#1のデータを同時に表示していて
、オフセットアドレスで指定されるデータ「0x00」19Bが強調表示されている。ま
た、指定されたメインメモリアドレスのデータが指定されないプロセッサ(この実施例で
はプロセッサ100#2)のキャッシュメモリ300#2には存在しないことを示すメッ
セージ19Gが表示される。なお、表示の内容は、例示であって指定された番号のプロセ
ッサのキャッシュメモリアクセスが「ヒット」し、そのデータが「0x00」であり、プ
ロセッサシステムで指定されなかった番号のプロセッサのキャッシュメモリアクセスが「
ミス」であることを示す内容であれば、他の表現を用いてもよい。
【0105】
図20は、指定されたメモリアドレスのデータが指定されたプロセッサのキャッシュメ
モリ300#1に存在して、メモリアドレス「10300022」20Aと、プロセッサ
番号「1」20Fを表示するとともに、該当するアドレスのデータの表示例を示している
。この例では、1ライン分のキャッシュメモリ300#1のデータを同時に表示していて
、オフセットアドレスで指定されるデータ「0x00」20Bが強調表示されている。ま
た、指定されたメインメモリアドレスのデータが指定されないプロセッサ(この実施例で
はプロセッサ100#2)のキャッシュメモリ300#2に存在したものの、キャッシュ
メモリ300#1、300#2からの2つのデータが一致しない(ハザード状態である)
ことが表示される。この例では、ハザード状態は、ハザード表示欄20Dに、ハザードが
生じているプロセッサ番号はメッセージ欄20Gに表示されている。なお、表示の内容は
、例示であって指定されたメモリアドレスで複数のプロセッサのキャッシュメモリアクセ
スで「ヒット」し、指定されたプロセッサ番号のプロセッサのキャッシュメモリのデータ
が「0x00」であり、「ヒット」した指定と異なる番号のプロセッサのキャッシュメモ
リアクセスで読み出されたデータの値が指定されたプロセッサのキャッシュメモリのデー
タと異なっていてハザード状態であることを示す内容であれば、他の表現を用いてもよい

【0106】
上述した第4の実施形態によれば、キャッシュメモリの内容表示をメモリアドレス指定
で行えるようになり、キャッシュメモリに記憶されたデータを考慮しながらプログラムの
デバッグ作業を行う場合にも、メインメモリ上にロードされ展開されるオブジェクトプロ
グラムのデバッグ作業と同様に作業することができる。そして、キャッシュメモリの内容
を確認する場合にキャッシュメモリの構成情報から、タグアドレスやインデックスアドレ
スなどへの煩雑な変換と比較作業を行う必要がなくなり、デバッグ作業の効率が向上する

【0107】
更に、特に組込み用途のプロセッサシステムの場合でハードウェア規模や消費電力の増
加を抑制するためなどの理由で複数のプロセッサ間のキャッシュメモリに記憶されたデー
タの整合性を管理維持する回路を備えていないことが多く、このような場合、複数のプロ
セッサがメインメモリ上のデータを共有しながら並列動作する時には、プログラムの不具
合やプロセッサの処理順序などで、本来一致すべき各プロセッサのキャッシュメモリのデ
ータ間で不一致が生じてハザード状態となることがあるので、その不一致の有無をキャッ
シュメモリの内容表示と同時に行わせることができて、複数のプロセッサの並列動作状態
のデータ解析が容易となってデバッグ作業の効率が向上する。
【0108】
また、上述の実施例4のデバッグ支援装置13では、比較対象のプロセッサを1個とし
たが、メモリバス400に接続されるキャッシュメモリを内蔵する全てのプロセッサを対
象とするようにしても良いし、各プロセッサやキャッシュメモリが異なる構成であっても
良い。
【0109】
以上の本発明のデバッグ支援装置は、コマンドでキャッシュメモリのデータ表示を行う
ものとしたが、従来のデバッグ支援装置でメインメモリやレジスタなどのデータを表示し
、表示されたデータを更新コマンドで指定された値に書き換えるのと同様に、更新コマン
ドで表示されたキャッシュメモリのデータを指定された値に書き換えられるようにしても
良い。このようにすることで、キャッシュメモリに読み込まれたデータを任意の値に書き
換えられるので、例えば不具合と推定されるデータを期待値にしてシミュレーションを再
開させてその結果を確認することが可能となりデバッグ作業の効率が向上する。
【0110】
また、本発明のデバッグ支援装置は、キャッシュメモリのデータをシミュレータの状態
記憶部より読み出すとしたが、キャッシュメモリへのアクセスを特殊な命令などで可能と
するプロセッサでは、その命令などを用いたアクセス方法でデータを読み出すようにして
も良い。このようにすることで、シミュレータの状態記憶部の記憶形式からの変換プログ
ラムや処理手順が不要となり、デバッグ支援装置の信頼性を向上させることができる。本
発明は以上の構成に限定されるものではなく、種々の変形が可能である。
【図面の簡単な説明】
【0111】
【図1】本発明のデバッグ支援装置が動作するコンピュータの構成を示すブロック図。
【図2】本実施例1のデバッグ支援装置の構成を示すブロック図。
【図3】本実施例1乃至3のデバッグ支援装置のデバッグ対象のプロセッサシステムの構成を示すブロック図。
【図4】本実施例のプロセッサのキャッシュメモリの読み出し動作に係る回路構成を示すブロック図。
【図5】本実施例のプロセッサのキャッシュメモリのメモリセル部に書き込まれた一部のデータを示す図。
【図6】本実施例1のデバッグ支援装置のコマンド処理手順を示すフローチャート図。
【図7】本実施例1のデバッグ支援装置のコマンド実行結果の表示例。
【図8】本実施例1のデバッグ支援装置のコマンド実行結果の表示例。
【図9】本実施例2のデバッグ支援装置の構成を示すブロック図。
【図10】本実施例2のデバッグ支援装置のコマンド処理手順を示すフローチャート図。
【図11】本実施例2のデバッグ支援装置のコマンド実行結果の表示例。
【図12】本実施例2のデバッグ支援装置のコマンド実行結果の表示例。
【図13】本実施例3のデバッグ支援装置の構成を示すブロック図。
【図14】本実施例3のデバッグ支援装置のコマンド処理手順を示すフローチャート図。
【図15】本実施例3のデバッグ支援装置のコマンド実行結果の表示例。
【図16】本実施例4のデバッグ支援装置の構成を示すブロック図。
【図17】本実施例4のデバッグ支援装置のデバッグ対象のプロセッサシステムの構成を示すブロック図。
【図18】本実施例4のデバッグ支援装置のコマンド処理手順を示すフローチャート図。
【図19】本実施例4のデバッグ支援装置のコマンド実行結果の表示例。
【図20】本実施例4のデバッグ支援装置のコマンド実行結果の表示例。
【符号の説明】
【0112】
1 コンピュータ
2 CPU
3 メモリユニット
4 記憶装置/補助記憶装置
5 画像表示装置
6 キーボード/マウス
7 システムバス
10、11、12、13 デバッグ支援装置
20、21 コマンド/アドレス入力部
22 コマンド/アドレス/プロセッサ番号入力部
30、31 キャッシュメモリ構成情報入力部
40、41 アドレス変換部
50、51 キャッシュメモリ読み出し部
60、61 キャッシュメモリ表示部
70 デバッグ情報入力部
80 メインメモリ読み出し部
90、91 データ比較部
100 プロセッサ
200 プロセッサコア
210 メモリアドレスレジスタ
300 キャッシュメモリ
310 デコーダ
320 タグアドレス部
330 データ部
340 メモリセル部
350 タグアドレス比較回路
360 選択回路
400 メモリバス
500 メインメモリ
600 キャッシュメモリ構成情報データベース
610 デバッグ情報データベース

【特許請求の範囲】
【請求項1】
メインメモリとキャッシュメモリとを有するプロセッサで実行されるプログラムのデバ
ッグ支援装置であって、
前記キャッシュメモリからデータを読み出し表示するためのコマンドを入力するコマン
ド入力手段と、
メインメモリアドレスを入力するメモリアドレス入力手段と、
前記キャッシュメモリの構成情報を入力するメモリ構成情報入力手段と、
前記メモリ構成情報入力手段によって入力されたキャッシュメモリ構成情報に基づいて
前記メインメモリアドレスを第1タグアドレスとキャッシュメモリのアクセスアドレスと
に変換するアドレス変換手段と、
前記アドレス変換手段で変換された前記アクセスアドレスによって前記キャッシュメモ
リをアクセスするアクセス手段と、
前記アクセス手段によってアクセスされた前記キャッシュメモリから前記アクセスアド
レスに対応するデータに含まれる第2タグアドレスおよび記憶データを読み出すデータ読
み出し手段と、
前記データ読み出し手段によって読み出された前記第2タグアドレスと前記アドレス変
換手段で変換された前記第1タグアドレスとを比較するタグアドレス比較手段と、
前記タグアドレス比較手段の比較結果が一致して前記キャッシュメモリがヒットしてい
ると判定した場合、前記キャッシュメモリから読み出した前記記憶データを、前記メイン
メモリアドレスとともに表示するキャッシュメモリ表示手段と、
を有することを特徴とするデバッグ支援装置。
【請求項2】
前記メモリアドレス入力手段から数値表現以外のメモリアドレス情報が入力され、
前記メモリアドレス情報がソースプログラムに含まれるシンボルの場合は、前記ソース
プログラムをコンパイルするコンパイラが出力するデバッグ情報を用いて、前記シンボル
を第2メインメモリアドレスに変換し、
前記メモリアドレス情報が前記プロセッサのレジスタを指定している場合は、前記プロ
セッサの該当するレジスタのデータを読み出して第3メインメモリアドレスに変換し、
キャッシュメモリ表示手段は、前記第2メインメモリアドレスおよび又は前記第3メイ
ンメモリアドレスを用いて前記キャッシュメモリにアクセスし、前記キャッシュメモリが
ヒットしていると判定された場合、前記キャッシュメモリに記憶されたデータを表示する
と共に、前記シンボルおよびまたは前記レジスタを含むメモリアドレス情報を表示するこ
とを特徴とする請求項1に記載のデバッグ支援装置。
【請求項3】
メインメモリとキャッシュメモリとを有するプロセッサで実行されるプログラムのデバ
ッグ支援装置であって、
前記キャッシュメモリからデータを読み出し表示するためのコマンドを入力するコマン
ド入力手段と、
メインメモリアドレスを入力するアドレス入力手段と、
前記キャッシュメモリの構成情報を入力するメモリ構成情報入力手段と、
前記メモリ構成情報入力手段によって入力されたキャッシュメモリ構成情報に基づいて
前記メインメモリアドレスを第1タグアドレスとキャッシュメモリのアクセスアドレスに
変換するアドレス変換手段と、
前記アドレス変換手段で変換された前記アクセスアドレスによって前記キャッシュメモ
リをアクセスするアクセス手段と、
前記アクセス手段によってアクセスされた前記キャッシュメモリから前記アクセスアド
レスに対応するデータに含まれる第2タグアドレスを読み出すデータ読み出し手段と、
前記データ読み出し手段によって読み出された前記第2タグアドレスと前記アドレス変
換手段で変換された前記第1タグアドレスとを比較するタグアドレス比較手段と、
前記タグアドレス比較手段の比較結果が一致して前記キャッシュメモリがヒットしてい
ると判定された場合、前記キャッシュメモリから第1データを読み出すと共に、メインメ
モリから前記メインメモリアドレスの第2データを読み出して、前記第1データと前記第
2データとを比較するデータ比較手段と、
前記キャッシュメモリから読み出した前記第1データ、前記メインメモリアドレスと、
前記データ比較手段における結果情報を表示するキャッシュメモリ表示手段と、
を有することを特徴とするデバッグ支援装置。
【請求項4】
メインメモリとそれぞれのキャッシュメモリとを有する少なくとも第1、第2のプロセ
ッサで実行されるプログラムのデバッグ支援装置であって、
前記第1、第2のプロセッサの一つを指定する入力手段と、
前記入力手段で指定されたプロセッサが有するキャッシュメモリのデータを読み出し表
示するコマンドを入力するコマンド入力手段と、
メインメモリアドレスを入力するアドレス入力手段と、
前記入力手段で指定された第1プロセッサの第1キャッシュメモリの構成情報を入力す
る第1のメモリ構成情報入力手段と、
前記第1のメモリ構成情報入力手段で入力された第1のキャッシュメモリ構成情報に基
づいて前記メインメモリアドレスを第1タグアドレスと前記第1キャッシュメモリの第1
アクセスアドレスに変換する第1のアドレス変換手段と、
前記第1アクセスアドレスを用いて前記第1キャッシュメモリをアクセスする第1のア
クセス手段と、
前記第1のアクセス手段によってアクセスされた前記第1キャッシュメモリの前記第1
アクセスアドレスに対応するデータに含まれる第2タグアドレスを読み出す第1のデータ
読み出し手段と、
前記第1のデータ読み出し手段によって読み出された前記第2タグアドレスと前記アド
レス変換手段で変換された前記第1タグアドレスとを比較する第1のタグアドレス比較手
段と、
前記第1のタグアドレス比較手段の比較結果が一致して前記第1キャッシュメモリがヒ
ットしていると判定された時、前記入力手段で指定されなかった第2プロセッサの第2キ
ャッシュメモリの構成情報を入力する第2のメモリ構成情報入力手段と、
前記第2のメモリ構成情報入力手段で入力された前記第2キャッシュメモリ構成情報に
基づいて前記メインメモリアドレスを第3タグアドレスと前記第2キャッシュメモリの第
2アクセスアドレスに変換する第2のアドレス変換手段と、
前記第2のアクセスアドレスを用いて前記第2キャッシュメモリにアクセスする第2の
アクセス手段と、
前記第2のアクセス手段によってアクセスされた前記第2キャッシュメモリの前記第2
のアクセスアドレスに対応するデータに含まれる第4タグアドレスを読み出す第2のデー
タ読み出し手段と、
前記第2のデータ読み出し手段によって読み出された前記第4タグアドレスと前記第2
のアドレス変換手段で変換された前記第3タグアドレスとを比較する第2のタグアドレス
比較手段と、
前記第2のタグアドレス比較手段の比較結果が一致して第2プロセッサの第2キャッシ
ュメモリがヒットしていると判定された場合、前記第1キャッシュメモリから読み出した
第1データと前記第2キャッシュメモリから読み出した第2データとを比較するデータ比
較手段と、
前記第1のタグアドレス比較手段によって前記第1キャッシュメモリがヒットし、前記
第2のタグアドレス比較手段によって前記第2キャッシュメモリがヒットしていると判定
された場合、前記第1プロセッサの第1キャッシュメモリから読み出した前記第1データ
、前記メインメモリアドレス、および前記データ比較手段による比較結果情報とを表示す
るキャッシュメモリ表示手段と、
を有することを特徴とするデバッグ支援装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate


【公開番号】特開2010−3171(P2010−3171A)
【公開日】平成22年1月7日(2010.1.7)
【国際特許分類】
【出願番号】特願2008−162358(P2008−162358)
【出願日】平成20年6月20日(2008.6.20)
【出願人】(000003078)株式会社東芝 (54,554)
【Fターム(参考)】