(57)【要約】【課題】キャッシュメモリを有するプロセッサで実行されるプログラムのキャッシュメモリに係るデータ解析を支援してデバッグ作業効率を向上させる。【解決手段】キャッシュメモリ３００のデータ解析でデータ表示指定アドレスとしてプログラムで用いられるメインメモリアドレスを入力する。デバッグ支援装置１０は入力されたメモリアドレスをデータベース６００のキャッシュメモリ構成情報を用いてアドレス変換を行い、その変換されたアドレスでキャッシュメモリの読み出しアクセスを行い、そのアクセス結果を表示するようにする。【選択図】図２
2010003171.tif 000002
【特許請求の範囲】
【請求項１】
メインメモリとキャッシュメモリとを有するプロセッサで実行されるプログラムのデバ
ッグ支援装置であって、
前記キャッシュメモリからデータを読み出し表示するためのコマンドを入力するコマン
ド入力手段と、
メインメモリアドレスを入力するメモリアドレス入力手段と、
前記キャッシュメモリの構成情報を入力するメモリ構成情報入力手段と、
前記メモリ構成情報入力手段によって入力されたキャッシュメモリ構成情報に基づいて
前記メインメモリアドレスを第１タグアドレスとキャッシュメモリのアクセスアドレスと
に変換するアドレス変換手段と、
前記アドレス変換手段で変換された前記アクセスアドレスによって前記キャッシュメモ
リをアクセスするアクセス手段と、
前記アクセス手段によってアクセスされた前記キャッシュメモリから前記アクセスアド
レスに対応するデータに含まれる第２タグアドレスおよび記憶データを読み出すデータ読
み出し手段と、
前記データ読み出し手段によって読み出された前記第２タグアドレスと前記アドレス変
換手段で変換された前記第１タグアドレスとを比較するタグアドレス比較手段と、
前記タグアドレス比較手段の比較結果が一致して前記キャッシュメモリがヒットしてい
ると判定した場合、前記キャッシュメモリから読み出した前記記憶データを、前記メイン
メモリアドレスとともに表示するキャッシュメモリ表示手段と、
を有することを特徴とするデバッグ支援装置。
【請求項２】
前記メモリアドレス入力手段から数値表現以外のメモリアドレス情報が入力され、
前記メモリアドレス情報がソースプログラムに含まれるシンボルの場合は、前記ソース
プログラムをコンパイルするコンパイラが出力するデバッグ情報を用いて、前記シンボル
を第２メインメモリアドレスに変換し、
前記メモリアドレス情報が前記プロセッサのレジスタを指定している場合は、前記プロ
セッサの該当するレジスタのデータを読み出して第３メインメモリアドレスに変換し、
キャッシュメモリ表示手段は、前記第２メインメモリアドレスおよび又は前記第３メイ
ンメモリアドレスを用いて前記キャッシュメモリにアクセスし、前記キャッシュメモリが
ヒットしていると判定された場合、前記キャッシュメモリに記憶されたデータを表示する
と共に、前記シンボルおよびまたは前記レジスタを含むメモリアドレス情報を表示するこ
とを特徴とする請求項１に記載のデバッグ支援装置。
【請求項３】
メインメモリとキャッシュメモリとを有するプロセッサで実行されるプログラムのデバ
ッグ支援装置であって、
前記キャッシュメモリからデータを読み出し表示するためのコマンドを入力するコマン
ド入力手段と、
メインメモリアドレスを入力するアドレス入力手段と、
前記キャッシュメモリの構成情報を入力するメモリ構成情報入力手段と、
前記メモリ構成情報入力手段によって入力されたキャッシュメモリ構成情報に基づいて
前記メインメモリアドレスを第１タグアドレスとキャッシュメモリのアクセスアドレスに
変換するアドレス変換手段と、
前記アドレス変換手段で変換された前記アクセスアドレスによって前記キャッシュメモ
リをアクセスするアクセス手段と、
前記アクセス手段によってアクセスされた前記キャッシュメモリから前記アクセスアド
レスに対応するデータに含まれる第２タグアドレスを読み出すデータ読み出し手段と、
前記データ読み出し手段によって読み出された前記第２タグアドレスと前記アドレス変
換手段で変換された前記第１タグアドレスとを比較するタグアドレス比較手段と、
前記タグアドレス比較手段の比較結果が一致して前記キャッシュメモリがヒットしてい
ると判定された場合、前記キャッシュメモリから第１データを読み出すと共に、メインメ
モリから前記メインメモリアドレスの第２データを読み出して、前記第１データと前記第
２データとを比較するデータ比較手段と、
前記キャッシュメモリから読み出した前記第１データ、前記メインメモリアドレスと、
前記データ比較手段における結果情報を表示するキャッシュメモリ表示手段と、
を有することを特徴とするデバッグ支援装置。
【請求項４】
メインメモリとそれぞれのキャッシュメモリとを有する少なくとも第１、第２のプロセ
ッサで実行されるプログラムのデバッグ支援装置であって、
前記第１、第２のプロセッサの一つを指定する入力手段と、
前記入力手段で指定されたプロセッサが有するキャッシュメモリのデータを読み出し表
示するコマンドを入力するコマンド入力手段と、
メインメモリアドレスを入力するアドレス入力手段と、
前記入力手段で指定された第１プロセッサの第１キャッシュメモリの構成情報を入力す
る第１のメモリ構成情報入力手段と、
前記第１のメモリ構成情報入力手段で入力された第１のキャッシュメモリ構成情報に基
づいて前記メインメモリアドレスを第１タグアドレスと前記第１キャッシュメモリの第１
アクセスアドレスに変換する第１のアドレス変換手段と、
前記第１アクセスアドレスを用いて前記第１キャッシュメモリをアクセスする第１のア
クセス手段と、
前記第１のアクセス手段によってアクセスされた前記第１キャッシュメモリの前記第１
アクセスアドレスに対応するデータに含まれる第２タグアドレスを読み出す第１のデータ
読み出し手段と、
前記第１のデータ読み出し手段によって読み出された前記第２タグアドレスと前記アド
レス変換手段で変換された前記第１タグアドレスとを比較する第１のタグアドレス比較手
段と、
前記第１のタグアドレス比較手段の比較結果が一致して前記第１キャッシュメモリがヒ
ットしていると判定された時、前記入力手段で指定されなかった第２プロセッサの第２キ
ャッシュメモリの構成情報を入力する第２のメモリ構成情報入力手段と、
前記第２のメモリ構成情報入力手段で入力された前記第２キャッシュメモリ構成情報に
基づいて前記メインメモリアドレスを第３タグアドレスと前記第２キャッシュメモリの第
２アクセスアドレスに変換する第２のアドレス変換手段と、
前記第２のアクセスアドレスを用いて前記第２キャッシュメモリにアクセスする第２の
アクセス手段と、
前記第２のアクセス手段によってアクセスされた前記第２キャッシュメモリの前記第２
のアクセスアドレスに対応するデータに含まれる第４タグアドレスを読み出す第２のデー
タ読み出し手段と、
前記第２のデータ読み出し手段によって読み出された前記第４タグアドレスと前記第２
のアドレス変換手段で変換された前記第３タグアドレスとを比較する第２のタグアドレス
比較手段と、
前記第２のタグアドレス比較手段の比較結果が一致して第２プロセッサの第２キャッシ
ュメモリがヒットしていると判定された場合、前記第１キャッシュメモリから読み出した
第１データと前記第２キャッシュメモリから読み出した第２データとを比較するデータ比
較手段と、
前記第１のタグアドレス比較手段によって前記第１キャッシュメモリがヒットし、前記
第２のタグアドレス比較手段によって前記第２キャッシュメモリがヒットしていると判定
された場合、前記第１プロセッサの第１キャッシュメモリから読み出した前記第１データ
、前記メインメモリアドレス、および前記データ比較手段による比較結果情報とを表示す
るキャッシュメモリ表示手段と、
を有することを特徴とするデバッグ支援装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、キャッシュメモリを有する計算機システムのプログラムのデバッグ支援装置
に関する。
【背景技術】
【０００２】
最近のマイクロプロセッサは、命令キャッシュメモリやデータキャッシュメモリを内蔵
して処理性能を向上させるものが多い。しかしながら、回路規模や消費電力などの制約か
ら、キャッシュメモリ構成や制御を複雑にしてキャッシュメモリの性能の向上を図るので
はなく、メインメモリのブロックとキャッシュメモリのブロックの対応方式もダイレクト
マップ方式や２−ｗａｙセットアソシエティブ方式として、キャッシュメモリの制御回路
などを簡素化することが多い。
【０００３】
更に、キャッシュメモリとメインメモリとの間のデータ転送の一部の管理機能を、プロ
グラムで制御できるようにして、不要なデータ転送を削減したりしてマイクロプロセッサ
を含むシステム全体の性能向上を図ることができるようになっている。このような場合、
プログラム開発のデバッグ作業において、キャッシュメモリに記憶されたデータを解析す
る必要があり、マイクロプロセッサのキャッシュメモリのデータを表示できるデバッガが
提供されている（例えば、非特許文献１参照。）。
【非特許文献１】”ＳｕｐｅｒＨ（ＴＭ）  ＲＩＳＣ  ｅｎｇｉｎｅ  シミュレータ／デバッガ  ユーザーズマニュアル”、［online］、２００７年７月２５日、株式会社  ルネサス  テクノロジーズ、［平成１９年９月１９日検索］、インターネット＜ＵＲＬ：http://documentation.renesas.com/jpn/products/tool/rjj10b0218_sh.pdf＞（第９７−１０２頁）
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、非特許文献１のデバッガでは、キャッシュメモリの構成要素に従ってキ
ャッシュメモリをインデックスアドレス順にタグアドレス情報とともに記憶されたデータ
を並べて表示するようになっていて、記憶されたデータの例えばメインメモリアドレスと
の関係を、一意的に把握することは難しい状況があった。
【０００５】
本発明は、上記問題を解決するためになされたもので、プログラム開発者がキャッシュ
メモリに記憶されたプログラムやデータを解析する場合に、キャッシュメモリの物理的な
メモリ構成要素ではなく、メインメモリアドレスによってキャッシュメモリのデータを指
定するようにすることで、キャッシュメモリの記憶内容にかかわるプログラムや処理性能
未達などの不具合のデバッグを容易に行えるデバッグ支援装置を提供することを目的とす
る。
【課題を解決するための手段】
【０００６】
上記目的を達成するために、本発明のデバッグ支援装置は、メインメモリとキャッシュ
メモリとを有するプロセッサで実行されるプログラムのデバッグ支援装置であって、前記
キャッシュメモリからデータを読み出し表示するためのコマンドを入力するコマンド入力
手段と、メインメモリアドレスを入力するメモリアドレス入力手段と、前記キャッシュメ
モリの構成情報を入力するメモリ構成情報入力手段と、前記メモリ構成情報入力手段によ
って入力されたキャッシュメモリ構成情報に基づいて前記メインメモリアドレスを第１タ
グアドレスとキャッシュメモリのアクセスアドレスとに変換するアドレス変換手段と、  
前記アドレス変換手段で変換された前記アクセスアドレスによって前記キャッシュメモリ
をアクセスするアクセス手段と、前記アクセス手段によってアクセスされた前記キャッシ
ュメモリから前記アクセスアドレスに対応するデータに含まれる第２タグアドレスおよび
記憶データを読み出すデータ読み出し手段と、前記データ読み出し手段によって読み出さ
れた前記第２タグアドレスと前記アドレス変換手段で変換された前記第１タグアドレスと
を比較するタグアドレス比較手段と、前記タグアドレス比較手段の比較結果が一致して前
記キャッシュメモリがヒットしていると判定した場合、前記キャッシュメモリから読み出
した前記記憶データを、前記メインメモリアドレスとともに表示するキャッシュメモリ表
示手段とを有することを特徴とする。
【発明の効果】
【０００７】
本発明によれば、メインメモリアドレスベースで表示されるオブジェクトプログラムの
デバッグ作業において、キャッシュメモリに読み込まれたデータ解析の必要からキャッシ
ュメモリの内容表示を行わせる場合に、キャッシュメモリのハードウェア構成に基づいて
メインメモリアドレスをキャッシュメモリのアクセスアドレスに変換することなく表示さ
せることが可能となるため、プログラムデバッグの効率を向上させることができる。
【発明を実施するための最良の形態】
【０００８】
以下、本発明の実施例を説明する。
【実施例１】
【０００９】
本発明の第１の実施例を図１乃至図８を参照して説明する。
【００１０】
図１は、本発明のデバッグ支援装置の一実施形態として動作するコンピュータのハード
ウェア構成を示すブロック図である。
【００１１】
コンピュータ１は、図１に示すように、アプリケーションプログラムやＯＳなどのプロ
グラムを実行するＣＰＵ２、ＣＰＵ２が実行するプログラムを展開記憶するメモリユニッ
ト３、メモリユニット３に展開記憶されるプログラムやデータを保存記憶する記憶装置／
補助記憶装置４、ＣＰＵ２がプログラム実行時に文字やアイコンや画像情報を表示する画
像表示装置５、ＣＰＵ２がプログラム実行時に文字入力や位置指定などの入力を行うキー
ボード／マウス６がデータ、アドレス、制御バスを含むシステムバス７を介して相互に接
続されている。また、記憶装置／補助記憶装置４には取り外し可能な不揮発性記憶媒体を
含むことができる。
【００１２】
図２は、実施例１のデバッグ支援装置１０の構成を示すブロック図である。
【００１３】
デバッグ支援装置１０は、図１のコンピュータ１にデバッグ支援プログラムがインスト
ールされ実行されることによって構成されるもので、デバッグ対象のプロセッサシステム
のメインメモリのアドレス情報とデバッグ動作指示コマンドとが入力されるコマンド／ア
ドレス入力部２０と、デバッグ対象のプロセッサシステムのキャッシュメモリの構成情報
が入力されるキャッシュメモリ構成情報入力部３０と、入力されたアドレス情報を入力さ
れたキャッシュメモリ構成情報を用いてキャッシュメモリアクセスアドレス情報に変換す
るアドレス変換部４０と、変換されたキャッシュメモリアクセスアドレス情報でキャッシ
ュメモリにアクセスして、データが存在すれば記憶されたデータを読み出すキャッシュメ
モリ読出し部５０と、入力されたアドレス情報と変換されたキャッシュメモリアクセスア
ドレス情報でキャッシュメモリにアクセスした時のデータの有無情報とデータが存在した
時に読み出したデータとを表示するキャッシュメモリ表示部６０から構成されている。
【００１４】
ここで、実施例１に係るデバッグ支援装置１０のデバッグ対象のプロセッサシステムに
ついて説明する。デバッグ対象のプロセッサシステムは、図３のブロック図に概略構成を
示すように、プロセッサ１００がメモリバス４００を介してメインメモリ５００と接続さ
れている。
【００１５】
プロセッサ１００は、プログラムを実行するプロセッサコア２００とキャッシュメモリ
３００から構成され、メモリバス４００を介してプロセッサコア２００に読み込まれ実行
されるプログラムやデータが記憶されるメインメモリ５００と接続されている。
【００１６】
キャッシュメモリ３００は、メインメモリ５００に比べて小容量で高速アクセス可能な
メモリを用いて構成され、プロセッサコア２００がメインメモリ５００に記憶された／す
るプログラムやデータへアクセスする時に、プログラムやデータを一時蓄えて、プロセッ
サコア２００のプログラムやデータへのアクセスを高速化する。また、プロセッサ１００
には図示を省略するがＩＯポートやバスインターフェースなど外部とのインターフェース
回路を含むことができる。
【００１７】
キャッシュメモリ３００は、例えば富田眞治著「第２版コンピュータアーキテクチャ」
（２００２年４月３０日発行：丸善株式会社）の１７０頁乃至１７３頁に基本原理が説明
されているキャッシュメモリである。そして、プロセッサコア２００とメインメモリ５０
０との間のメモリアクセス動作に介在してプロセッサコア２００の高速動作を実現するた
め、メインメモリ５００などとは異なるメモリ構成や読み出し書き込み制御回路を有して
いるが、本発明の実施例の説明に関係の深い読み出し動作に係る構成とその動作の様子を
以下に詳しく説明する。
【００１８】
図４は、キャッシュメモリ３００の読み出し動作に係る回路構成を示すブロック図であ
る。この実施例のキャッシュメモリ３００は、メモリサイズ１Ｋバイト、ラインサイズ３
２バイト、連想度１のダイレクトマップ方式のキャッシュメモリである。プロセッサコア
２００が出力する読み出しアドレスを入力して、該当アドレスのデータがキャッシュメモ
リ３００に記憶されている（以下「ヒット」と表現する）場合に、その該当アドレスから
のデータをプロセッサコア２００に出力する。キャッシュメモリ３００は、図４に示すよ
うにデコーダ３１０と、タグアドレスを記憶するタグアドレス部３２０とデータを記憶す
るデータ部３３０とから成るメモリセル部３４０と、読み出しアドレスのデータがキャッ
シュメモリに記憶されて「ヒット」しているか、記憶されていない（以下「ミス」と表現
する）かを判定するタグアドレス比較回路３５０と、「ヒット」した時にデータ部３３０
から該当アドレスのデータを選択出力する選択回路３６０から構成される。
【００１９】
図５は、プロセッサコア２００のメモリアクセスによってキャッシュメモリ３００にデ
ータが記憶されている時の、メモリセル部３４０に記憶されたデータの状態を示す図であ
る。
【００２０】
ここで、図３乃至図５を参照しながら、プロセッサコア２００がバイト長のデータ読み
出し命令（ＬＢ：Ｌｏａｄ  Ｂｙｔｅ）を実行してメインメモリ５００からデータを読み
出す時を例に、キャッシュメモリ３００の動作を説明する。プロセッサコア２００は、デ
ータ読み出し命令を読み込み（フェッチ）、解釈（デコード）して、データ読み出し命令
で設定された方法によりアクセスするメモリアドレスを計算し、３２ビット長のメモリア
ドレスを出力してメモリ読み出し動作を開始する。プロセッサコア２００から図４に示す
メモリアドレス２１０が出力されると、最初に、プロセッサ１００に内蔵されているキャ
ッシュメモリ３００にアクセスが行われる。
【００２１】
例えば、「０ｘ０３ＥＢ３３Ｅ０」（０ｘは１６進表示であることを示す）番地へのア
クセスが行われると、メモリアドレス２１０に含まれる５ビット長のインデックス（Ｉｎ
ｄｅｘ）アドレス「０ｘ１Ｆ」がキャッシュメモリ３００のデコーダ３１０に入力される
。
【００２２】
これにより、デコーダ３１０の出力３１０［０ｘ１Ｆ］がアクティブとなり、メモリセ
ル部３４０のタグアドレス部３２０から「０ｘ００ＦＡＣＣ」が読み出されて、タグアド
レス比較回路３５０に入力される。一方、タグアドレス比較回路３５０の他方の入力には
メモリアドレス２１０に含まれる２２ビット長のタグアドレス（Ｔａｇ）として「０ｘ０
０ＦＡＣＣ」が入力される。
【００２３】
この場合、タグアドレス比較回路３５０の２つのタグアドレス入力が一致するのでメモ
リセル部３４０にアクセスされたアドレスのデータが存在していることを示す「ヒット」
信号（例えば、Ｈｉｇｈ）がキャッシュメモリ３００から出力される。そして、選択回路
３６０にはメモリアドレス２１０に含まれる５ビット長のオフセットアドレス（Ｂｏｆ）
として「０ｘ００」が入力されているので、デコーダ３１０の出力３１０［０ｘ１Ｆ］が
アクティブとなってメモリセル部３４０から読み出されたデータ部３３０［０ｘ００］の
内容「０ｘ２８」（図５を参照）がバイト長のデータとしてプロセッサコア２００へ出力
される。
【００２４】
しかし、タグアドレス比較回路３５０の２つのタグアドレス入力の値が異なる時は、該
当するアドレスのデータがキャッシュメモリ３００に存在しないことを示す「ミス」信号
（例えば、Ｌｏｗ）がキャッシュメモリ３００から出力されて、プロセッサコア２００は
メインメモリ５００からのデータ読み出し動作を行う。このメインメモリ５００からのデ
ータの読み出しは、読出し処理速度が遅いことやメモリバス４００の信号伝達速度が遅い
ことなどからキャッシュメモリ３００からの読み出しに比べて読み出し速度が遅くなる。
また、キャッシュメモリ３００へのアクセスで「ミス」が発生した場合、プロセッサシス
テムの構成方法により異なるが「ミス」の信号を割込み信号として用いて、メモリアクセ
スの局所性などを利用したキャッシュメモリ３００のヒット率（キャッシュメモリからの
読み出し回数／メモリ読み出し回数）を高めるために、例えば連続するアドレスのデータ
をメインメモリ５００からキャッシュメモリ３００にあらかじめ読み込む処理を行って、
キャッシュメモリ３００を内蔵することによるシステム性能向上が図られる。
【００２５】
次に、プロセッサ１００上で実行されるプログラムのデバッグ作業について説明する。
プロセッサ１００が実行するプログラムの開発は、プログラム開発環境を構成する以下の
各種アプリケーションプログラム群（エディタ、コンパイラ、リンカ、シミュレータなど
）が用意されたコンピュータ１上で行われる。まず、プロセッサ１００上で実行されて所
望の機能を実現するプログラムは、エディタを用いてＣ言語やアセンブラ言語などで記述
したソースプログラム［ファイル］が作成される。次に、ソースプログラム［ファイル］
はコンパイラでコンパイルされて、プロセッサ１００上で実行される（オブジェクト）プ
ログラム［ファイル］が作成される。そして、必要に応じてリンカでプログラムのリンク
が行われて最終的に実行可能な（オブジェクト）プログラム［ファイル］が作成される。
次に、（オブジェクト）プログラム［ファイル］は、プロセッサ１００のシステム環境の
動作を模擬するシミュレータに読み込み展開（ロード）される。そして、シミュレータに
よってプロセッサ１００上でプログラムが実行される様子を模擬（シミュレーション）動
作させて、プログラムの検証作業を行い、検証作業で不具合が発見されると、デバッグ作
業が行われる。
【００２６】
実施例１のデバッグ支援装置１０を用いたデバッグ作業では、プロセッサ１００上で実
行される（オブジェクト）プログラムの動作が所望と異なり不具合が発生したと判定され
る時点で、デバッグ支援装置１０の図示しないブロックで入力設定したブレークポイント
やコマンドによって、シミュレータの模擬動作を停止させる。そしてデバッグ作業者は、
デバッグ支援装置１０を用いて、シミュレータ停止時点のプロセッサシステムの図示しな
い状態記憶部にアクセスして各種情報を表示させ、必要に応じて情報の書き換えを行い、
そして指定したプログラムの実行時点からシミュレータの模擬動作を再開させたりしてデ
バッグ作業を行う。各種情報としては、プロセッサ１００のレジスタやキャッシュメモリ
３００やメインメモリ５００上のデータや実行中のプログラムコードなどがある。
【００２７】
次に、実施例１のデバッグ支援装置１０でキャッシュメモリ３００の内容を表示する場
合の処理手順を説明する。
【００２８】
図６は、デバッグ支援装置１０にキャッシュメモリ３００の内容を表示するコマンドが
入力され、そのデータ表示指定アドレスとしてメインメモリ５００のメモリアドレスが入
力された時の処理手順を示すフローチャートである。図７および図８はコマンド実行結果
の表示例である。図７は入力されたメモリアドレスに対応するデータがキャッシュメモリ
３００に記憶されていて「ヒット」した場合で、図８は入力されたメモリアドレスに対応
するデータがキャッシュメモリ３００に記憶されていなくて「ミス」した時の表示例であ
る。
【００２９】
最初に、デバッグ支援装置１０のコマンド／アドレス入力部２０より、キャッシュメモ
リ３００の読み出しコマンドとキャッシュメモリ３００のデータ表示指定アドレス情報と
なるメインメモリアドレスとが入力される（ステップＳ１００）。
【００３０】
次に、キャッシュメモリ構成情報入力部３０の入力操作によりデータベース６００より
キャッシュメモリ構成情報が読み込まれて、その構成情報に従って入力されたメインメモ
リアドレスをアドレス変換部４０でキャッシュメモリアクセス情報（タグアドレスおよび
インデックスアドレスおよびオフセットアドレス）に変換する（ステップＳ２００）。
【００３１】
すなわち、データベース６００より読み出されたキャッシュメモリ３００のメモリサイ
ズ１Ｋバイト、ラインサイズ３２バイト、連想度１などの構成情報から、３２ビット長の
メインメモリアドレス［３１：０］（［Ｎ：Ｍ］は、Ｎビット目（Ｎは２のＮ乗を示す）
からＭビット目までのビットレンジがあることを示す）の中の３１ビット目〜１０ビット
目までの２２ビット長のタグアドレスに変換され、９ビット目〜５ビット目までの５ビッ
ト長のインデックスアドレスに変換され、４ビット目〜０ビット目までの５ビット長のオ
フセットアドレスに変換される。
【００３２】
例えば、図７のアドレス表示部７Ａに示された、３２ビット長のメインメモリアドレス
の「０ｘ１０３０００２２」が入力されると、タグアドレスは「０ｘ０４０Ｃ００」に、
インデックスアドレスは「００００１」（２進表示）に、オフセットアドレスは「０００
１０」（２進表示）に変換される。
【００３３】
次に、キャッシュメモリ読出し部５０は、アドレス変換部４０で変換されたキャッシュ
メモリアクセス情報を用いてキャッシュメモリ３００のメモリ読み出しアクセス動作を行
う（ステップＳ３００）。
【００３４】
インデックスアドレスとして「００００１」がキャッシュメモリ３００に入力される場
合、まず、キャッシュメモリ読出し部５０では、デコーダ３１０［０ｘ０１］の出力で指
定されるメモリセル部３４０に記憶されたデータが読み出される。例えば、図５に示すよ
うなデータが記憶されているメモリセル部３４０の場合は、デコーダ３１０［０ｘ０１］
の出力がアクティブとなって読み出し指定されるタグアドレス部３２０の第２行目の「０
ｘ０４０Ｃ０」と、データ部３３０の第２行目の「０ｘ０Ａ」、「０ｘ６７」、「０ｘ０
０」、・・・、「０ｘ２Ａ」、「０ｘ０２」の１ライン分のデータ（３２バイト）が読み
出される。
【００３５】
次に、キャッシュメモリ読出し部５０は、キャッシュメモリ３００のタグアドレス比較
回路３５０に入力される２つのタグアドレスの値を比較し、比較結果からキャッシュメモ
リアクセスが「ヒット」したかを調べる（ステップＳ４００）。２つのタグアドレスが不
一致でキャッシュメモリアクセスが「ミス」の時はステップＳ５００に進み、２つのタグ
アドレスが一致してキャッシュメモリアクセスが「ヒット」した時はステップＳ６００に
進む。
【００３６】
キャッシュメモリアクセスの「ヒット」判定と同様に、デバッグ支援装置１０は、メモ
リアドレス２１０より変換された２２ビットのタグアドレスＴａｇ（メモリアドレス２１
０［３１：１０］）情報と、デコーダ３１０［０１］がアクティブとなって選択されるメ
モリセル部３４０のタグアドレス部３２０より出力される２２ビット長のタグアドレス情
報とをタグアドレス比較回路３５０で比較して、その比較結果によって判定を行う。すな
わち、２つのタグアドレスの値が異なる場合は、メモリアドレス２１０のデータがキャッ
シュメモリ３００に記憶されていない「ミス」であるとし、２つのタグアドレスの値が一
致する場合はメモリアドレス２１０のデータがキャッシュメモリ３００に記憶されている
「ヒット」であるとする。
【００３７】
そして、デバッグ支援装置１０は、「ヒット」しない場合、キャッシュメモリ表示部６
０にコマンドで指定されたメインメモリアドレス２１０のデータがキャッシュメモリ３０
０に無いことを表示し（ステップＳ５００）、キャッシュメモリ３００の内容を表示する
コマンドの処理を終了する。
【００３８】
図８は、指定されたメインメモリアドレス「０ｘ１０５０００２２」８Ａのデータがキ
ャッシュメモリ３００に存在しない時に、キャッシュメモリ表示部６０に表示される例を
示している。すなわち、キャッシュメモリ３００のメモリセル部３４０に図５に示す内容
のデータが記憶されている場合に、メモリアドレスとして「０ｘ１０５０００２２」が入
力されると、変換されたインデックスアドレス（Ｉｎｄｅｘ）は「００００１」で、デコ
ーダ３１０［０ｘ０１］の出力がアクティブとなって指定されるメモリセル部３４０の第
２行目のタグアドレス部３２０から読み出されるタグアドレス（Ｔａｇ）は「０ｘ０４０
Ｃ００」となる。一方、メモリアドレス２１０から変換されたタグアドレスは「０ｘ０４
１４００」であるので、タグアドレス比較回路３５０では２つのタグアドレスの値は不一
致となり、指定したメモリアドレス２１０のデータはキャッシュメモリ３００には記憶さ
れていないと判定され、その判定結果がキャッシュメモリ表示部６０にメッセージ８Ｇが
表示される。なお、表示画面の内容は、例示であってメモリアクセスが「ミス」したこと
を示す内容であれば、他の表現を用いてもよい。
【００３９】
そしてまた、デバッグ支援装置１０は、「ヒット」した時は、キャッシュメモリ表示部
６０にコマンドで指定されたメインメモリアドレス２１０とともに、該当アドレスのキャ
ッシュメモリ３００に記憶されたデータを表示し（ステップＳ６００）、キャッシュメモ
リ３００の内容を表示するコマンドの処理を終了する。
【００４０】
図７は、指定されたメモリアドレスのデータがキャッシュメモリ３００に存在する時に
、メモリアドレス「０ｘ１０３０００２２」７Ａを表示するとともに、該当するアドレス
のデータ（この例では１ライン分のキャッシュメモリのデータを同時に表示していて、オ
フセットアドレス「０００１０」で指定されるデータ、即ち図７のデータ「０ｘ００」７
Ｂが強調表示されている例を示している。
【００４１】
すなわち、図５に示すようにキャッシュメモリ３００にデータが記憶されている場合に
、メモリアドレス「０ｘ１０３０００２２」が入力されると、変換されたインデックスア
ドレス（Ｉｎｄｅｘ）は「０ｘ０１」７Ｃで、デコーダ３１０［０ｘ０１］の出力がアク
ティブとなって指定されたメモリセル部３４０の第２行目のタグアドレス部３２０から読
み出されるタグアドレス（Ｔａｇ）は「０ｘ０４０Ｃ００」となる。一方、メモリアドレ
スから変換されたタグアドレス（Ｔａｇ）も「０ｘ０４０Ｃ００」であるので、タグアド
レス比較回路３５０では２つのタグアドレス値は一致して、指定されたメモリアドレス「
０ｘ１０３０００２２」がキャッシュメモリ３００に記憶されていると判定される。そし
て、デコーダ３１０［０ｘ０１］の出力がアクティブとなって指定されるメモリセル部３
４０の第２行目の１ライン分（３２バイト）のデータ部３３０の中からオフセットアドレ
ス「０００１０」で指定されたデータ部３３０［０ｘ０２］の「０ｘ００」がシミュレー
タのプロセッサ１００の状態記憶部より読み出される。なお、表示の内容は、例示であっ
てメモリアクセスが「ヒット」し、そのデータが「０ｘ００」であることを示す内容であ
れば、他の表現を用いてもよい。
【００４２】
上述した第１の実施例によれば、キャッシュメモリの内容表示をメモリアドレス指定で
行えるようになり、キャッシュメモリに記憶されたデータを考慮しながらプログラムのデ
バッグ作業を行う場合にも、メインメモリ上にロードされ展開されるオブジェクトプログ
ラムのデバッグ作業と同様に作業することができる。そして、キャッシュメモリの内容を
確認する場合にキャッシュメモリの構成情報から、タグアドレスやインデックスアドレス
などへの煩雑な変換と比較作業を行う必要がなくなり、デバッグ作業の効率が向上する。
【実施例２】
【００４３】
次に、本発明の第２の実施例に係るデバッグ支援装置を、図１、図３乃至図５、および
図９乃至図１２を参照して説明する。図９は、実施例２のデバッグ支援装置１１の構成を
示すブロック図である。図１０は、デバッグ支援装置１１にキャッシュメモリ３００の内
容を表示するコマンドが入力され、そのデータ表示指定アドレスとしてレジスタ番号また
はソースプログラムで使用されたシンボルが入力された時の処理手順を示すフローチャー
トである。図１１および図１２はコマンド実行結果の表示例である。
【００４４】
この実施例２に係るデバッグ支援装置１１の構成と処理手順において、上記実施例１に
係るデバッグ支援装置１０と同一部分には同一符号を付し、詳細な説明を省略する。また
、デバッグ対象のキャッシュメモリ３００を内蔵するプロセッサ１００と、その内蔵され
たキャッシュメモリ３００に記憶されたデータも同一であるとする。
【００４５】
この実施例２のデバッグ支援装置が実施例１と異なる点は、キャッシュメモリ３００の
内容を表示するコマンド処理において、プロセッサ１００のレジスタ番号またはソースプ
ログラム記述で使用されたシンボルを用いてメモリアドレスが指定されることである。
【００４６】
このデバッグ支援装置１１は、図１のコンピュータ１にデバッグ支援プログラムがイン
ストールされ実行されることによって構成されるもので、図９に示すように、シンボルと
メモリアドレスの対応関係を示すデバッグ情報を入力するデバッグ情報入力部７０と、メ
インメモリのアドレス情報とデバッグ動作指示コマンドが入力され、アドレス情報として
レジスタ番号やシンボルなどが入力された場合に入力されたデバッグ情報を用いて数値表
現のアドレス情報に変換するコマンド／アドレス入力部２１と、キャッシュメモリの構成
情報が入力されるキャッシュメモリ構成情報入力部３０と、入力または変換された数値表
現のアドレス情報を入力されたキャッシュメモリ構成情報を用いてキャッシュメモリアク
セスアドレス情報に変換するアドレス変換部４０と、変換されたキャッシュメモリアクセ
スアドレス情報でキャッシュメモリにアクセスしてデータが存在すれば記憶されたデータ
を読み出すキャッシュメモリ読出し部５０と、入力されたアドレス情報（および変換され
た数値表現のアドレス情報）と変換されたキャッシュメモリアクセスアドレス情報でキャ
ッシュメモリにアクセスした時のデータの有無情報とデータが存在した時に読み出したデ
ータを表示するキャッシュメモリ表示部６０から構成されている。
【００４７】
デバッグ情報は、プログラム開発作業において、ソースプログラム［ファイル］をコン
パイラでコンパイルしてオブジェクトプログラム［ファイル］を作成する時に、デバッグ
オプションを指定すると、デバッグ支援装置などに参照されてデバッグ作業を支援する情
報［ファイル］として作成される。デバッグ情報には、例えば、ソースプログラム記述で
使用されたシンボルとメモリアドレス情報との対応を示す情報などがある。なお、以下の
説明で使用するデバッグ情報は、シンボルに対応するアドレス情報が相対アドレス情報の
場合は、リンカによって最終的な実行プログラムを作成する時のリンク情報などを用いて
、数値表現されたメモリアドレス情報に変換されているものとする。
【００４８】
次に、実施例２のデバッグ支援装置１１でキャッシュメモリ３００の内容を表示する場
合の処理手順を説明する。
【００４９】
図１０は、デバッグ支援装置１１にキャッシュメモリ３００の内容を表示するコマンド
が入力され、そのデータ表示指定アドレスとしてメインメモリ５００のメモリアドレスま
たはレジスタ番号またはシンボルが入力された時の処理手順を示すフローチャートである
。
【００５０】
図１１および図１２は、コマンド実行結果の表示例である。図１１は、ソースプログラ
ムで使用されたシンボルで指定されたメモリアドレスのデータがキャッシュメモリ３００
に記憶されていて「ヒット」した場合の表示例で、図１２は、プロセッサ１００のレジス
タ番号１０が指定されレジスタ番号１０に記憶されているデータをメモリアドレスとした
時のデータがキャッシュメモリ３００に記憶されていて「ヒット」した場合の表示例であ
る。
【００５１】
最初に、デバッグ支援装置１１のコマンド／アドレス入力部２１よりキャッシュメモリ
３００の読み出しコマンドと、データ表示指定アドレス情報とが入力される（ステップＳ
１１０）。
【００５２】
次に、入力されたデータ表示指定アドレス情報の種類を調べる（ステップＳ１１１）。
そして、メインメモリアドレスの場合はステップＳ２００に進み、レジスタ番号の場合は
ステップＳ１１３に進み、シンボルの場合はステップＳ１１２に進む。
【００５３】
データ表示指定アドレス情報の種類の判定は、ステップＳ１１０で入力された文字列の
アドレス指定部の文字列をあらかじめ定められた順序に従って比較することで行う。即ち
、入力された文字列が２進や１６進表現のあらかじめ定められた識別子（例えば、本実施
例の説明の数値表現では、２進表現の場合はかぎ括弧で括って識別子を省略可能とし、１
６進表現の場合はかぎ括弧で括って”０ｘ”を識別子としている）から始まる数値の場合
はメインメモリアドレスとして判定し、「＄ｒ」で始まる場合はレジスタ番号として判定
し、その他の場合はシンボルとして判定する。デバッグ支援装置の仕様で、８進や１０進
表現の識別子や、識別子の省略可能な数値表現が定められている場合は、そのように判定
できるように文字列比較を行い識別子に続く文字列が数値変換処理される。また、プロセ
ッサのレジスタを番号以外で指定が可能な場合は、例えばその指定文字列の先頭に「＄」
が付与されて入力された場合は、その指定レジスタの内容を指定アドレス情報とするよう
に処理される。
【００５４】
次に、データ表示指定アドレス情報がレジスタ番号の場合、シミュレータ上のプロセッ
サ１００に内蔵されるレジスタ情報記憶部より、指定された番号のレジスタ情報を読み出
し（ステップＳ１１３）、ステップＳ２００に進む。
【００５５】
デバッグ支援装置１１は、シミュレータ停止時点の図示しないプロセッサシステム状態
記憶部の情報を読み出す手順を用いて、プロセッサ１００の指定されたレジスタ番号のレ
ジスタに記憶されている数値をメモリアドレス情報として読み出す。
【００５６】
次に、データ表示指定アドレス情報がシンボル表現の場合は、デバッグ情報データベー
ス６１０（図１０を参照：図９にも記載）よりデバッグ情報を読み出して、シンボルをメ
インメモリアドレス情報に変換し（ステップＳ１１２）、ステップＳ２００に進む。
【００５７】
デバッグ情報には、シンボルと数値表現のメインメモリアドレス情報の対応が示されて
いるので、デバッグ支援装置１１はソフトウェア処理で一般的に用いられるテキストサー
チなどの手法を用いてデバッグ情報データベース６１０を探索して、シンボルと一致する
シンボルに対応するメインメモリアドレスを読み出す。
【００５８】
次に、キャッシュメモリ構成情報入力部３０からの指令でデータベース６００よりキャ
ッシュメモリ構成情報が読み込まれて、その構成情報に従って入力されたメインメモリア
ドレスをアドレス変換部４０でキャッシュメモリアクセス情報（タグアドレスおよびイン
デックスアドレスおよびオフセットアドレス）に変換する（ステップＳ２００）。
【００５９】
次に、キャッシュメモリ読出し部５０は、変換されたインデックスアドレス情報を用い
てキャッシュメモリ３００のメモリ読み出しアクセス動作を行う（ステップＳ３００）。
【００６０】
次に、キャッシュメモリ読出し部５０は、キャッシュメモリ３００のタグアドレス比較
回路３５０に入力される２つのタグアドレスの値を比較し、比較結果からキャッシュメモ
リアクセスが「ヒット」したかを調べる（ステップＳ４００）。２つのタグアドレスが不
一致でキャッシュメモリアクセスが「ミス」の時は、ステップＳ５１０に進み、２つのタ
グアドレスが一致してキャッシュメモリアクセスが「ヒット」した時はステップＳ６１０
に進む。
【００６１】
そして、デバッグ支援装置１１は、「ヒット」しない場合、キャッシュメモリ表示部６
０にコマンドで指定されたメインメモリアドレス（およびデータ表示指定アドレス情報）
のデータがキャッシュメモリ３００に無いことを表示し（ステップＳ５１０）、キャッシ
ュメモリ３００の内容を表示するコマンドの処理を終了する。
【００６２】
そしてまた、デバッグ支援装置１１は、「ヒット」した時は、キャッシュメモリ表示部
６０にコマンドで指定されたメインメモリアドレス（およびデータ表示指定アドレス情報
）を表示するとともに、該当アドレスのキャッシュメモリ３００に記憶されたデータを表
示し（ステップＳ６１０）、キャッシュメモリ３００の内容を表示するコマンドの処理を
終了する。
【００６３】
図１１の表示画面は、データ表示指定アドレス情報がシンボルでデバッグ情報を用いて
変換されたメインメモリアドレスで指定されたメモリアドレスのデータがキャッシュメモ
リ３００に存在する場合に、例えば、関数ｆｕｎｃ＿ａを定義するプログラムの開始アド
レスを示すシンボル「ｆｕｎｃ＿ａ」１１Ａを表示するとともに、シンボルの対応するメ
モリアドレス「０ｘ１０３０００２２」のデータが表示装置に表示される例を示している
。この例では、１ライン分のキャッシュメモリ３００のデータを同時に表示していて、オ
フセットアドレスで指定されるデータ「０ｘ００」１１Ｂが強調表示されている。なお、
表示の内容は、例示であってメモリアクセスが「ヒット」し、そのデータが「０ｘ００」
であることを示す内容であれば、他の表現を用いてもよい。
【００６４】
図１２は、データ表示指定アドレス情報がレジスタ番号であって、プロセッサ１００の
該当レジスタに記憶されているメモリアドレスがキャッシュメモリ３００に存在する場合
に、レジスタ番号「＄ｒ１０」を表示するとともに、該当するアドレスのデータが表示さ
れる例を示している。この例では、１ライン分のキャッシュメモリのデータを同時に表示
していて、オフセットアドレスで指定されるデータ「０ｘ００」１２Ｂが強調表示されて
いる。なお、表示の内容は、例示であってメモリアクセスが「ヒット」し、そのデータが
「０ｘ００」であることを示す内容であれば、他の表現を用いてもよい。
【００６５】
上述した第２の実施例によれば、キャッシュメモリの内容表示をメモリアドレス指定に
加えてソースプログラムで使用したシンボルによる指定、およびレジスタの内容による指
定で行えるようになり、キャッシュメモリの内容を確認する場合にキャッシュメモリの構
成情報から、タグアドレスやインデックスアドレスなどへの煩雑な変換と比較作業を行う
必要がなくなるだけでなく、プログラム解析をよりデバッグ担当者に理解しやすい表現で
行うことができて、デバッグ効率が向上する。
【００６６】
すなわち、キャッシュメモリに記憶されたデータを考慮しながらプログラムのデバッグ
作業を行う場合に、ソースプログラム作成時に使用したシンボルによって参照することが
できるので、オブジェクトプログラムのロードされたメモリアドレスなどを確認すること
なく、プログラム作成時に使用した情報を利用したデバッグ作業とすることができる。ま
た、デバッグで停止させた時点のプロセッサのレジスタの内容に基づいて、キャッシュメ
モリに記憶されたデータを参照することができるので、その時点のプログラムで割り付け
られたレジスタの機能などを考慮しながら解析作業に集中できるので、デバッグ効率が向
上する。
【００６７】
また、上述の実施例２では、コマンド／アドレス入力部２１で入力されたデータ表示指
定アドレス情報を単一の表示形式のものとして説明したが、メモリアドレスやシンボルや
プログラムで定義された変数（この値はデバッグ情報を用いて変数に割り付けられたメモ
リアドレスやレジスタの内容を読み出すことで得られる）やレジスタ番号や定数などを四
則演算子で結合した数式表現であってもよく、その演算結果をキャッシュメモリのデータ
表示指定アドレス情報とすることで、ソースプログラム記述表現に従ってデバッグ作業を
容易に進めることができるので、更にデバッグ効率が向上する。
【実施例３】
【００６８】
次に、本発明の第３の実施例に係るデバッグ支援装置を、図１、図３乃至図５、および
図１３乃至図１５を参照して説明する。図１３は、実施例３のデバッグ支援装置１２の構
成を示すブロック図である。図１４は、デバッグ支援装置１２にキャッシュメモリ３００
の内容を表示するコマンドが入力され、そのデータ表示指定アドレスとしてメモリアドレ
スが入力された時の処理手順を示すフローチャートである。図１５は、コマンド実行結果
の表示例である。
【００６９】
この実施例３に係るデバッグ支援装置１２の構成と処理手順において、上記実施例１に
係るデバッグ支援装置１０と同一部分には同一符号を付し、詳細な説明を省略する。また
、デバッグ対象のキャッシュメモリを内蔵するプロセッサ１００とその内蔵されたキャッ
シュメモリ３００に記憶されたデータも同一であるとする。
【００７０】
この実施例３のデバッグ支援装置が実施例１と異なる点は、キャッシュメモリ３００の
内容を表示するコマンド処理において、入力されたメモリアドレスのデータをキャッシュ
メモリ３００から読み出すとともにメインメモリ５００からも読み出して、データ比較を
行い、比較結果を表示することである。
【００７１】
図１３に示すようにデバッグ支援装置１２は、図１のコンピュータ１にデバッグ支援プ
ログラムがインストールされ実行されることによって構成されるもので、デバッグ対象の
プロセッサシステムのメインメモリのアドレス情報とデバッグ動作指示コマンドが入力さ
れるコマンド／アドレス入力部２０と、キャッシュメモリの構成情報が入力されるキャッ
シュメモリ構成情報入力部３０と、入力されたアドレス情報を入力されたキャッシュメモ
リ構成情報を用いてキャッシュメモリアクセスアドレス情報に変換するアドレス変換部４
０と、変換されたキャッシュメモリアクセスアドレス情報によりキャッシュメモリにアク
セスして、データが存在すれば記憶されたデータを読み出すキャッシュメモリ読出し部５
０と、入力されたメインメモリのアドレス情報でメインメモリにアクセスしてデータを読
み出すメインメモリ読み出し部８０と、キャッシュメモリ読み出し部５０で読み出された
データとメインメモリ読み出し部８０で読み出されたデータとを比較する読み出しデータ
比較部９０と、入力されたアドレス情報と変換されたキャッシュメモリアクセスアドレス
情報でキャッシュメモリにアクセスした時のデータの有無情報とデータが存在した時に読
み出したデータとメインメモリから読み出したデータとを比較した比較結果とを表示する
キャッシュメモリ表示部６０から構成されている。
【００７２】
次に、実施例３のデバッグ支援装置１２でキャッシュメモリ３００の内容を表示する場
合の処理手順を説明する。
【００７３】
図１４は、デバッグ支援装置１２にキャッシュメモリ３００の内容を表示するコマンド
が入力され、そのデータ表示指定アドレスとしてメインメモリ５００のメモリアドレスが
入力された時の処理手順を示すフローチャートである。図１５は、コマンド実行結果の表
示例で、入力されたメモリアドレスのデータはキャッシュメモリ３００に記憶されていて
「ヒット」したが、そのキャッシュメモリ３００に記憶されているデータがメインメモリ
５００から読み出されたデータと一致しない時の表示例である。
【００７４】
最初に、デバッグ支援装置１２のコマンド／アドレス入力部２０よりキャッシュメモリ
３００の読み出し表示及びメインメモリとのデータ比較コマンドと、キャッシュメモリ３
００のデータ表示指定アドレス情報であるメインメモリアドレスとが入力される（ステッ
プＳ１２０）。
【００７５】
次に、キャッシュメモリ構成情報入力部３０からの指令でデータベース６００よりキャ
ッシュメモリ構成情報が読み込まれて、その構成情報に従って入力されたメインメモリア
ドレスをアドレス変換部４０でキャッシュメモリアクセス情報（タグアドレスおよびイン
デックスアドレスおよびオフセットアドレス）に変換する（ステップＳ２００）。
【００７６】
次に、デバッグ支援装置１２は、アドレス変換部４０で変換されたキャッシュメモリア
クセス情報を用いて、キャッシュメモリ３００のメモリ読み出しアクセス動作を行う（ス
テップＳ３００）。
【００７７】
次に、キャッシュメモリ読出し部５０は、キャッシュメモリ３００のタグアドレス比較
回路３５０に入力される２つのタグアドレスの値を比較し、比較結果からキャッシュメモ
リアクセスが「ヒット」したかを調べる（ステップＳ４００）。２つのタグアドレスが不
一致でキャッシュメモリアクセスが「ミス」の場合はステップＳ５２０に進み、２つのタ
グアドレスが一致してキャッシュメモリアクセスが「ヒット」した場合はステップＳ７０
０に進む。
【００７８】
そして、「ヒット」しない場合、デバッグ支援装置１２は、キャッシュメモリ表示部６
０にコマンドで指定されたメインメモリアドレスのデータがキャッシュメモリに無いこと
を表示し（ステップＳ５２０）、キャッシュメモリ３００の読み出し表示及びメインメモ
リとのデータ比較コマンドの処理を終了する。
【００７９】
そしてまた、「ヒット」した場合、デバッグ支援装置１２は、メインメモリ読み出し部
８０がコマンド／アドレス入力部２０から入力されたメモリアドレスをメインメモリ５０
０から読み出す（ステップＳ７００）。
【００８０】
次に、読み出しデータ比較部９０では、キャッシュメモリ読み出し部５０で読み出した
データとメインメモリ読み出し部８０で読み出したデータとが比較される（ステップＳ８
００）。比較した結果データが一致した場合はステップＳ６２０に進み、不一致の場合は
ステップＳ６３０に進む。
【００８１】
そして、データが一致した場合、デバッグ支援装置１２は、キャッシュメモリ表示部６
０にコマンドで指定されたメインメモリアドレスを表示するとともに、該当アドレスのキ
ャッシュメモリ３００に記憶されたデータの表示及びキャッシュメモリ３００のデータが
メインメモリ５００のデータと一致している（ハザード状態でない）ことを表示し（ステ
ップＳ６２０）、キャッシュメモリ３００の読み出し表示及びメインメモリとのデータ比
較コマンドの処理を終了する。
【００８２】
そしてまた、データが不一致の場合、デバッグ支援装置１２は、キャッシュメモリ表示
部６０にコマンドで指定されたメインメモリアドレスを表示するとともに、該当アドレス
のキャッシュメモリ３００に記憶されたデータの表示及びキャッシュメモリ３００のデー
タとメインメモリ５００のデータとが一致していない（ハザード状態である）ことを表示
し（ステップＳ６３０）、キャッシュメモリ３００の読み出し表示及びメインメモリとの
データ比較コマンドの処理を終了する。
【００８３】
図１５は、指定されたメモリアドレスのデータがキャッシュメモリ３００に存在して、
メモリアドレス「１０３０００２２」１５Ａを表示するとともに、該当するアドレスのデ
ータが表示される。この例では１ライン分のキャッシュメモリ３００のデータを同時に表
示していて、オフセットアドレスで指定されるデータ「０ｘ００」１５Ｂが強調表示され
ている。また、キャッシュメモリ３００のデータがメインメモリアドレスの指し示すメイ
ンメモリ５００上のデータとは一致せず、ハザード状態であることが表示される例を示し
ている。図１５にはハザード状態の有無を示す欄１５Ｄが設けられていて、ハザード状態
の場合はその表示欄に「Ｈａｚａｒｄ」１５Ｅのチェックマークが表示される。なお、表
示の内容は、例示であってメモリアクセスが「ヒット」し、そのデータが「０ｘ００」で
あり、そのキャッシュメモリ３００から読み出されたデータが同じアドレスのメインメモ
リ５００上のデータと不一致であることを示す内容であれば、他の表現を用いてもよい。
【００８４】
上述した第３の実施例によれば、キャッシュメモリの内容表示をメモリアドレス指定で
行えるようになり、キャッシュメモリに記憶されたデータを考慮しながらプログラムのデ
バッグ作業を行う場合にも、メインメモリ上にロードされ展開されるオブジェクトプログ
ラムのデバッグ作業と同様に作業することができる。そして、キャッシュメモリの内容を
確認する場合にキャッシュメモリの構成情報から、タグアドレスやインデックスアドレス
などへの煩雑な変換と比較作業を行う必要がなくなり、デバッグ作業の効率が向上する。
【００８５】
更に、特に組込み用途のプロセッサシステムでは、回路規模や消費電力の制約からプロ
セッサ以外の周辺回路などからメインメモリへデータの書き込みが行われた場合に、プロ
セッサのキャッシュメモリに読み込まれたデータとの整合性を管理維持する回路を備えて
いないことがあり、周辺回路などからのメインメモリへのアクセス制御プログラムの不具
合や、プロセッサが演算結果などのデータをメモリに書き込む場合に、高速なキャッシュ
メモリにのみ書き込みを行い、その後プログラムでキャッシュメモリからメインメモリに
書き戻すような制御手順としている場合のプログラム処理の不具合などで、本来一致すべ
きキャッシュメモリとメインメモリのデータに不一致が生じてハザード状態となることが
あるので、その不一致の有無をキャッシュメモリの内容表示と同時に行わせるようにする
ことができて、不具合発生時のデータ解析が容易となってデバッグ作業の効率が向上する
。
【実施例４】
【００８６】
次に、本発明の第４の実施例に係るデバッグ支援装置を、図１、図３乃至図５、および
図１６乃至図２０を参照して説明する。図１６は、実施例４のデバッグ支援装置１３の構
成を示すブロック図である。図１７は、デバッグ支援装置１３のデバッグ対象の第１のプ
ロセッサ１００＃１と第２のプロセッサ１００＃２とがメモリバス４００を介してメイン
メモリ５００に接続されるプロセッサシステムの概略構成を示すブロック図である。図１
８は、デバッグ支援装置１３に第１のプロセッサ１００＃１に内蔵されるキャッシュメモ
リ３００＃１の内容を表示するコマンドが入力され、そのデータ表示指定アドレスとして
メモリアドレスが入力された時の処理手順を示すフローチャートである。図１９および図
２０は、コマンド実行結果の表示例である。
【００８７】
この実施例４に係るデバッグ支援装置１３の構成と処理手順において、上記実施例１に
係るデバッグ支援装置１０と同一部分には同一符号を付し、詳細な説明を省略する。また
、図１７に示すデバッグ対象のキャッシュメモリを内蔵する第１のプロセッサ１００＃１
と第２のプロセッサ１００＃２は、実施例１のプロセッサ１００と同一の構成で、そして
プロセッサ１００＃１に内蔵されたキャッシュメモリ３００＃１に記憶されたデータは実
施例１のキャッシュメモリ３００と同一であるとする。
【００８８】
この実施例４のデバッグ支援装置が実施例１と異なる点は、入力された番号のプロセッ
サのキャッシュメモリの内容を表示するコマンド処理において、入力されたメモリアドレ
スが入力された番号のプロセッサのキャッシュメモリから読み出すとともに、異なる番号
のプロセッサのキャッシュメモリからも読み出して、そのデータ比較を行い、比較結果を
表示することである。
【００８９】
このデバッグ支援装置１３は、図１のコンピュータ１にデバッグ支援プログラムがイン
ストールされ実行されることによって構成されるもので、図１６に示すように、デバッグ
対象のプロセッサ番号とプロセッサシステムのメインメモリのアドレス情報とデバッグ動
作指示コマンドが入力されるコマンド／アドレス／プロセッサ番号入力部２２と、プロセ
ッサに応じたキャッシュメモリの構成情報が入力されるキャッシュメモリ構成情報入力部
３０および３１と、入力されたアドレス情報を入力されたキャッシュメモリ構成情報を用
いてプロセッサに応じたキャッシュメモリアクセスアドレス情報に変換するアドレス変換
部４０および４１と、プロセッサに応じて変換されたキャッシュメモリアクセスアドレス
情報でそれぞれのプロセッサ番号のプロセッサに内蔵されたキャッシュメモリにアクセス
してデータが存在すれば記憶されたデータを読み出すキャッシュメモリ読出し部５０およ
び５１と、キャッシュメモリ読み出し部５０で読み出されたデータとキャッシュメモリ読
み出し部５１で読み出されたデータとを比較する読み出しデータ比較部９１と、入力され
たメインメモリアドレス情報と変換されたキャッシュメモリアクセスアドレス情報で入力
されたプロセッサ番号のプロセッサのキャッシュメモリにアクセスした時のデータの有無
情報とデータが存在した時に読み出したデータと、変換されたキャッシュメモリアクセス
アドレス情報で入力されたプロセッサ番号と異なるプロセッサのキャッシュメモリにアク
セスした時のデータの有無情報とデータが存在した時に読み出したデータとを比較した比
較結果とを表示するキャッシュメモリ表示部６０から構成されている。
【００９０】
次に、実施例４のデバッグ支援装置１３によってプロセッサ番号１のプロセッサ１００
＃１のキャッシュメモリ３００＃１の内容を表示する場合の処理手順を説明する。
【００９１】
図１８は、デバッグ支援装置１３にプロセッサ番号として「１」が入力され、プロセッ
サ１００＃１に内蔵する第１キャッシュメモリ３００＃１の内容を表示するコマンドが入
力され、そのデータ表示指定アドレスとしてメインメモリ５００のメモリアドレスが入力
された時の処理手順を示すフローチャートである。図１９および図２０は、コマンド実行
結果の表示例で、図１９は、入力指定されたメモリアドレスが入力された番号の第１プロ
セッサ１００＃１の第１キャッシュメモリ３００＃１に記憶されていて「ヒット」し、入
力された番号と異なるプロセッサ番号２の第２プロセッサ１００＃２の第２キャッシュメ
モリ３００＃２には入力されたメモリアドレスのデータが記憶されていなくて「ミス」し
た場合の表示例である。図２０は、入力されたメモリアドレスのデータが、プロセッサ番
号１の第１プロセッサ１００＃１の第１キャッシュメモリ３００＃１とプロセッサ番号２
の第２プロセッサ１００＃２の第２キャッシュメモリ３００＃２でそれぞれ「ヒット」し
、それぞれ読み出された２つのデータの値が異なっていた場合の表示例である。
【００９２】
最初に、デバッグ支援装置１３のコマンド／アドレス／プロセッサ番号入力部２２より
キャッシュメモリの読み出し表示、及びデータ比較コマンドとキャッシュメモリのデータ
表示指定アドレス情報であるメインメモリアドレスと、プロセッサ番号とが入力される（
ステップＳ１３０）。
【００９３】
次に、キャッシュメモリ構成情報入力部３０によってデータベース６００より入力され
たプロセッサ番号「１」で指定された第１プロセッサ１００＃１に内蔵される第１キャッ
シュメモリ３００＃１のキャッシュメモリ構成情報が読み込まれて、その構成情報に従っ
て入力されたメインメモリアドレスをアドレス変換部４０でキャッシュメモリアクセス情
報（タグアドレスおよびインデックスアドレスおよびオフセットアドレス）に変換する（
ステップＳ２００）。
【００９４】
次に、デバッグ支援装置１３は、アドレス変換部４０で変換されたキャッシュメモリア
クセス情報を用いて第１キャッシュメモリ３００＃１のメモリ読み出しアクセス動作を行
う（ステップＳ３００）。
【００９５】
次に、キャッシュメモリ読出し部５０は、第１キャッシュメモリ３００＃１のタグアド
レス比較回路３５０に入力される２つのタグアドレスの値を比較し、比較結果からキャッ
シュメモリアクセスが「ヒット」したかを調べる（ステップＳ４００）。２つのタグアド
レスが不一致でキャッシュメモリアクセスが「ミス」の場合はステップＳ５３０に進み、
２つのタグアドレスが一致してキャッシュメモリアクセスが「ヒット」した場合はステッ
プＳ２１０に進む。
【００９６】
そして、指定された番号のプロセッサのキャッシュメモリアクセスが「ヒット」しない
場合、デバッグ支援装置１３は、キャッシュメモリ表示部６０にコマンドで指定されたメ
インメモリアドレスのデータが指定されたプロセッサのキャッシュメモリ３００＃１に無
いことを表示し（ステップＳ５３０）、指定された番号のプロセッサのキャッシュメモリ
３００＃１の読み出し表示、及び指定と異なる番号のプロセッサのキャッシュメモリのデ
ータ比較コマンドの処理を終了する。
【００９７】
そしてまた、指定された番号のプロセッサのキャッシュメモリアクセスが「ヒット」し
た場合、デバッグ支援装置１３は、キャッシュメモリ構成情報入力部３１によってデータ
ベース６００よりコマンドで入力指定されたプロセッサ番号と異なるプロセッサ１００＃
２に内蔵されるキャッシュメモリ３００＃２のキャッシュメモリ構成情報が読み込まれて
、その構成情報に従って入力されたメインメモリアドレスをアドレス変換部４１でキャッ
シュメモリアクセス情報（タグアドレスおよびインデックスアドレスおよびオフセットア
ドレス）に変換する（ステップＳ２１０）。
【００９８】
次に、デバッグ支援装置１３は、アドレス変換部４１で変換されたキャッシュメモリア
クセス情報を用いてキャッシュメモリ３００＃２のメモリ読み出しアクセス動作を行う（
ステップＳ３１０）。
【００９９】
次に、キャッシュメモリ読出し部５１は、キャッシュメモリ３００＃２のタグアドレス
比較回路３５０に入力される２つのタグアドレスの値を比較し、比較結果からキャッシュ
メモリアクセスが「ヒット」したかを調べる（ステップＳ４１０）。２つのタグアドレス
が不一致でキャッシュメモリアクセスが「ミス」の場合はステップＳ６４０に進み、２つ
のタグアドレスが一致してキャッシュメモリアクセスが「ヒット」した場合はステップＳ
９００に進む。
【０１００】
そして、指定と異なる番号のプロセッサのキャッシュメモリアクセスが「ヒット」しな
い場合、デバッグ支援装置１３は、指定された番号「１」のプロセッサのキャッシュメモ
リアクセスは「ヒット」しているので、キャッシュメモリ表示部６０にコマンドで指定さ
れたプロセッサ番号とメインメモリアドレスを表示するとともに、該当アドレスのキャッ
シュメモリ３００＃１に記憶されたデータを表示するとともに、コマンドで指定されたメ
インメモリアドレスのデータが指定と異なる番号「２」のプロセッサのキャッシュメモリ
３００＃２に無いことを表示し（ステップＳ６４０）、指定された番号のプロセッサのキ
ャッシュメモリの読み出し表示、及び指定と異なる番号のプロセッサのキャッシュメモリ
のデータ比較コマンドの処理を終了する。
【０１０１】
そしてまた、デバッグ支援装置１３は、読み出しデータ比較部９１で、キャッシュメモ
リ読み出し部５０で読み出したデータ（キャッシュメモリ３００＃１のデータ）とキャッ
シュメモリ読み出し部５１で読み出したデータ（キャッシュメモリ３００＃２のデータ）
を比較する（ステップＳ９００）。比較した結果データが一致した場合はステップＳ６５
０に進み、データが不一致の場合はステップＳ６６０に進む。
【０１０２】
そして、指定されたメモリアドレスに該当する複数のプロセッサのキャッシュメモリに
記憶されたデータが一致した場合、デバッグ支援装置１３は、キャッシュメモリ表示部６
０にコマンドで指定されたプロセッサ番号「１」とメインメモリアドレスを表示するとと
もに、キャッシュメモリ３００＃１のメインメモリアドレスに対応して記憶されたデータ
を表示するとともに、キャッシュメモリ３００＃１のデータとキャッシュメモリ３００＃
２のデータとが一致している（ハザード状態でない）ことを表示し（ステップＳ６５０）
、指定された番号のプロセッサのキャッシュメモリの読み出し表示、及び指定と異なる番
号のプロセッサのキャッシュメモリのデータ比較コマンドの処理を終了する。
【０１０３】
そしてまた、指定されたメモリアドレスに該当する複数のプロセッサのキャッシュメモ
リに記憶されたデータが不一致の場合、デバッグ支援装置１３は、キャッシュメモリ表示
部６０にコマンドで指定されたプロセッサ番号「１」とメインメモリアドレスを表示する
とともに、該当アドレスのキャッシュメモリ３００＃１に記憶されたデータを表示すると
ともに、キャッシュメモリ３００＃１のデータとキャッシュメモリ３００＃２のデータと
が一致していない（ハザード状態である）ことを表示し（ステップＳ６６０）、指定され
た番号のプロセッサのキャッシュメモリの読み出し表示、及び指定と異なる番号のプロセ
ッサのキャッシュメモリのデータ比較コマンドの処理を終了する。
【０１０４】
図１９は、指定されたメモリアドレスのデータが指定されたプロセッサのキャッシュメ
モリ３００＃１に存在して、メモリアドレス「１０３０００２２」１９Ａと、プロセッサ
番号「１」１９Ｆを表示するとともに、該当するアドレスのデータの表示例を示している
。この例では、１ライン分のキャッシュメモリ３００＃１のデータを同時に表示していて
、オフセットアドレスで指定されるデータ「０ｘ００」１９Bが強調表示されている。ま
た、指定されたメインメモリアドレスのデータが指定されないプロセッサ（この実施例で
はプロセッサ１００＃２）のキャッシュメモリ３００＃２には存在しないことを示すメッ
セージ１９Ｇが表示される。なお、表示の内容は、例示であって指定された番号のプロセ
ッサのキャッシュメモリアクセスが「ヒット」し、そのデータが「０ｘ００」であり、プ
ロセッサシステムで指定されなかった番号のプロセッサのキャッシュメモリアクセスが「
ミス」であることを示す内容であれば、他の表現を用いてもよい。
【０１０５】
図２０は、指定されたメモリアドレスのデータが指定されたプロセッサのキャッシュメ
モリ３００＃１に存在して、メモリアドレス「１０３０００２２」２０Ａと、プロセッサ
番号「１」２０Ｆを表示するとともに、該当するアドレスのデータの表示例を示している
。この例では、１ライン分のキャッシュメモリ３００＃１のデータを同時に表示していて
、オフセットアドレスで指定されるデータ「０ｘ００」２０Ｂが強調表示されている。ま
た、指定されたメインメモリアドレスのデータが指定されないプロセッサ（この実施例で
はプロセッサ１００＃２）のキャッシュメモリ３００＃２に存在したものの、キャッシュ
メモリ３００＃１、３００＃２からの２つのデータが一致しない（ハザード状態である）
ことが表示される。この例では、ハザード状態は、ハザード表示欄２０Ｄに、ハザードが
生じているプロセッサ番号はメッセージ欄２０Ｇに表示されている。なお、表示の内容は
、例示であって指定されたメモリアドレスで複数のプロセッサのキャッシュメモリアクセ
スで「ヒット」し、指定されたプロセッサ番号のプロセッサのキャッシュメモリのデータ
が「０ｘ００」であり、「ヒット」した指定と異なる番号のプロセッサのキャッシュメモ
リアクセスで読み出されたデータの値が指定されたプロセッサのキャッシュメモリのデー
タと異なっていてハザード状態であることを示す内容であれば、他の表現を用いてもよい
。
【０１０６】
上述した第４の実施形態によれば、キャッシュメモリの内容表示をメモリアドレス指定
で行えるようになり、キャッシュメモリに記憶されたデータを考慮しながらプログラムの
デバッグ作業を行う場合にも、メインメモリ上にロードされ展開されるオブジェクトプロ
グラムのデバッグ作業と同様に作業することができる。そして、キャッシュメモリの内容
を確認する場合にキャッシュメモリの構成情報から、タグアドレスやインデックスアドレ
スなどへの煩雑な変換と比較作業を行う必要がなくなり、デバッグ作業の効率が向上する
。
【０１０７】
更に、特に組込み用途のプロセッサシステムの場合でハードウェア規模や消費電力の増
加を抑制するためなどの理由で複数のプロセッサ間のキャッシュメモリに記憶されたデー
タの整合性を管理維持する回路を備えていないことが多く、このような場合、複数のプロ
セッサがメインメモリ上のデータを共有しながら並列動作する時には、プログラムの不具
合やプロセッサの処理順序などで、本来一致すべき各プロセッサのキャッシュメモリのデ
ータ間で不一致が生じてハザード状態となることがあるので、その不一致の有無をキャッ
シュメモリの内容表示と同時に行わせることができて、複数のプロセッサの並列動作状態
のデータ解析が容易となってデバッグ作業の効率が向上する。
【０１０８】
また、上述の実施例４のデバッグ支援装置１３では、比較対象のプロセッサを１個とし
たが、メモリバス４００に接続されるキャッシュメモリを内蔵する全てのプロセッサを対
象とするようにしても良いし、各プロセッサやキャッシュメモリが異なる構成であっても
良い。
【０１０９】
以上の本発明のデバッグ支援装置は、コマンドでキャッシュメモリのデータ表示を行う
ものとしたが、従来のデバッグ支援装置でメインメモリやレジスタなどのデータを表示し
、表示されたデータを更新コマンドで指定された値に書き換えるのと同様に、更新コマン
ドで表示されたキャッシュメモリのデータを指定された値に書き換えられるようにしても
良い。このようにすることで、キャッシュメモリに読み込まれたデータを任意の値に書き
換えられるので、例えば不具合と推定されるデータを期待値にしてシミュレーションを再
開させてその結果を確認することが可能となりデバッグ作業の効率が向上する。
【０１１０】
また、本発明のデバッグ支援装置は、キャッシュメモリのデータをシミュレータの状態
記憶部より読み出すとしたが、キャッシュメモリへのアクセスを特殊な命令などで可能と
するプロセッサでは、その命令などを用いたアクセス方法でデータを読み出すようにして
も良い。このようにすることで、シミュレータの状態記憶部の記憶形式からの変換プログ
ラムや処理手順が不要となり、デバッグ支援装置の信頼性を向上させることができる。本
発明は以上の構成に限定されるものではなく、種々の変形が可能である。
【図面の簡単な説明】
【０１１１】
【図１】本発明のデバッグ支援装置が動作するコンピュータの構成を示すブロック図。
【図２】本実施例１のデバッグ支援装置の構成を示すブロック図。
【図３】本実施例１乃至３のデバッグ支援装置のデバッグ対象のプロセッサシステムの構成を示すブロック図。
【図４】本実施例のプロセッサのキャッシュメモリの読み出し動作に係る回路構成を示すブロック図。
【図５】本実施例のプロセッサのキャッシュメモリのメモリセル部に書き込まれた一部のデータを示す図。
【図６】本実施例１のデバッグ支援装置のコマンド処理手順を示すフローチャート図。
【図７】本実施例１のデバッグ支援装置のコマンド実行結果の表示例。
【図８】本実施例１のデバッグ支援装置のコマンド実行結果の表示例。
【図９】本実施例２のデバッグ支援装置の構成を示すブロック図。
【図１０】本実施例２のデバッグ支援装置のコマンド処理手順を示すフローチャート図。
【図１１】本実施例２のデバッグ支援装置のコマンド実行結果の表示例。
【図１２】本実施例２のデバッグ支援装置のコマンド実行結果の表示例。
【図１３】本実施例３のデバッグ支援装置の構成を示すブロック図。
【図１４】本実施例３のデバッグ支援装置のコマンド処理手順を示すフローチャート図。
【図１５】本実施例３のデバッグ支援装置のコマンド実行結果の表示例。
【図１６】本実施例４のデバッグ支援装置の構成を示すブロック図。
【図１７】本実施例４のデバッグ支援装置のデバッグ対象のプロセッサシステムの構成を示すブロック図。
【図１８】本実施例４のデバッグ支援装置のコマンド処理手順を示すフローチャート図。
【図１９】本実施例４のデバッグ支援装置のコマンド実行結果の表示例。
【図２０】本実施例４のデバッグ支援装置のコマンド実行結果の表示例。
【符号の説明】
【０１１２】
１  コンピュータ
２  ＣＰＵ
３  メモリユニット
４  記憶装置／補助記憶装置
５  画像表示装置
６  キーボード／マウス
７  システムバス
１０、１１、１２、１３  デバッグ支援装置
２０、２１  コマンド／アドレス入力部
２２  コマンド／アドレス／プロセッサ番号入力部
３０、３１  キャッシュメモリ構成情報入力部
４０、４１  アドレス変換部
５０、５１  キャッシュメモリ読み出し部
６０、６１  キャッシュメモリ表示部
７０  デバッグ情報入力部
８０  メインメモリ読み出し部
９０、９１  データ比較部
１００  プロセッサ
２００  プロセッサコア
２１０  メモリアドレスレジスタ
３００  キャッシュメモリ
３１０  デコーダ
３２０  タグアドレス部
３３０  データ部
３４０  メモリセル部
３５０  タグアドレス比較回路
３６０  選択回路
４００  メモリバス
５００  メインメモリ
６００  キャッシュメモリ構成情報データベース
６１０  デバッグ情報データベース
【図１】
2010003171.tif 000003
【図２】
2010003171.tif 000004
【図３】
2010003171.tif 000005
【図４】
2010003171.tif 000006
【図５】
2010003171.tif 000007
【図６】
2010003171.tif 000008
【図７】
2010003171.tif 000009
【図８】
2010003171.tif 000010
【図９】
2010003171.tif 000011
【図１０】
2010003171.tif 000012
【図１１】
2010003171.tif 000013
【図１２】
2010003171.tif 000014
【図１３】
2010003171.tif 000015
【図１４】
2010003171.tif 000016
【図１５】
2010003171.tif 000017
【図１６】
2010003171.tif 000018
【図１７】
2010003171.tif 000019
【図１８】
2010003171.tif 000020
【図１９】
2010003171.tif 000021
【図２０】
2010003171.tif 000022