JPH08335177A - プロセッサ動作観察方法及び装置 - Google Patents

プロセッサ動作観察方法及び装置

Info

Publication number
JPH08335177A
JPH08335177A JP7164683A JP16468395A JPH08335177A JP H08335177 A JPH08335177 A JP H08335177A JP 7164683 A JP7164683 A JP 7164683A JP 16468395 A JP16468395 A JP 16468395A JP H08335177 A JPH08335177 A JP H08335177A
Authority
JP
Japan
Prior art keywords
instruction
bus
address
instruction cache
data
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.)
Pending
Application number
JP7164683A
Other languages
English (en)
Inventor
Masami Mori
正実 森
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.)
Oki Electric Industry Co Ltd
Original Assignee
Oki Electric Industry Co Ltd
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 Oki Electric Industry Co Ltd filed Critical Oki Electric Industry Co Ltd
Priority to JP7164683A priority Critical patent/JPH08335177A/ja
Publication of JPH08335177A publication Critical patent/JPH08335177A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Debugging And Monitoring (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

(57)【要約】 【目的】 命令キャッシュを動作させたままプログラム
トレースを行う。 【構成】 CPU2は命令キャッシュ3に命令アドレス
IAで指定した命令が存在するか否かにかかわらず、そ
の命令アドレスIAをメモリアドレスレジスタ10を介
して外部バス5に出力する。この外部バス5は、アドレ
スバスAB、データバスDB、制御バスCBから成る。
プログラムのデバッグ時は、この外部バス5に開発シス
テム7を接続する。この結果、命令キャッシュ3がヒッ
トする場合もCPU2がアクセスした命令を格納した外
部のメモリ6のアドレスやバスステータスがトレースメ
モリ8に格納される。そして、アドレスとバスステータ
スの内容を解析することにより、CPU2における命令
の実行過程を追跡することができる。この場合、メモリ
6から命令キャッシュ3へのキャッシュロード、命令キ
ャッシュ3からCPU2へのフェッチをも含めて実行過
程を追跡できる。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、命令キャッシュを持つ
プロセッサにおけるプログラムの実行過程を観察するた
めのプロセッサ動作観察方法、及び命令キャッシュを内
蔵したプロセッサ装置に関するものである。
【0002】
【従来の技術】一般に、プログラマが計算機のプロセッ
サで実行されるプログラムを作成するためには、デバッ
グという作業が必要である。このようなデバッグでは、
プログラマにより一応作成されたプログラムを実際にプ
ロセッサで実行しながら、いわゆるバグをつぶしてい
く。
【0003】従来、プログラムのデバッグの際は、プロ
セッサの動作の間にプログラムの実行の流れを観察する
方法を利用していた。この種の方法においては、計算機
のハードウェアの構成上、プロセッサと同一の半導体チ
ップ(LSI)上に命令キャッシュが内蔵されている場
合と、プロセッサの搭載されたチップの外部のみに命令
キャッシュが備えられている場合とでは、観察の方法が
異なる。即ち、プロセッサLSIの外部のみに命令キャ
ッシュを持つプロセッサ装置においては、プログラムの
実行過程の観察は、プロセッサの各信号をプローブして
行うことができる。そして、そのプローブ結果により、
比較的容易にデバッグを行うことができる。なぜなら、
この種のプロセッサ装置では、命令フェッチやデータア
クセスが命令キャッシュにヒットするかヒットしないか
にかかわらず、LSI外部と、アドレスやデータを含
む、観察に必要なすべての信号がプロセッサLSIから
入出力されるからである。
【0004】
【発明が解決しようとする課題】しかしながら、上述し
た従来の技術には、次のような課題があった。即ち、現
在、命令キャッシュをプロセッサと同一の半導体チップ
に内蔵することが一般的となっており、このようなチッ
プに内蔵される命令キャッシュを持つプロセッサ装置に
おいては、上述した方法で、プログラムの実行過程の観
察をすることは困難である。この原因は、命令キャッシ
ュにヒットする場合は、大部分のプロセッサの動作がチ
ップ内部のみで行なわれ、チップ外部から観察できない
ことにある。この点について、以下に詳述する。
【0005】まず、このようなプロセッサ装置におい
て、命令キャッシュの動作を禁止せずにデバッグを行う
場合、外部バスをプローブすると、命令フェッチやデー
タアクセスにおいてメモリアクセスが伴う場合に限れ
ば、そのアクセス過程を外部から観察できる。従って、
プロセッサ動作の解析・表示を行うことができ、プログ
ラムをデバッグする時の情報を得ることができる。とこ
ろが、命令キャッシュにヒットした場合は、このような
メモリアクセスが伴わないので、アクセス過程を外部か
ら観察できなくなる。従って、その部分のプロセッサ動
作の解析・表示が行えず、プログラムをデバッグできな
くなってしまった。
【0006】また、上述したプロセッサ装置において、
プログラムの実行過程の観察を行なう方法の一つとし
て、命令キャッシュとのインタフェースを信号ピンとし
て外部に出力する方法がある。ところが、この信号ピン
は電気的な負荷となり、CPUがアクセスする場合に重
大な経路遅延を引き起こすばかりではなく、LSIのピ
ン数が増加し、コストの増大を引き起こしていた。一
方、他の方法としては、デバッグ動作中のプログラム実
行の流れをチップの信号ピンに反映させるため、命令キ
ャッシュ動作を禁止させる方法がある。ところが、命令
キャッシュ動作を禁止させることにより、プロセッサ
は、命令キャッシュが有効である時に比べ、非常に遅く
動作することになるという問題があった。 他方、命令
キャッシュが有効か否かを調べるには命令キャッシュ動
作を観察する側で、ヒットしたかヒットしなかったかの
情報を含めて、完全にエミュレートする必要があり、情
報の収集がめんどうになるという問題もあった。
【0007】
【課題を解決するための手段】
(1)本発明のプロセッサ動作観察方法は、上述した課
題を解決するため、命令キャッシュを内蔵するプロセッ
サの外部と接続するバスに結合された開発システムを使
用して当該プロセッサの実行の過程を観察する場合にお
いて、以下の点を特徴とするものである。 1.外部にアクセスするアドレスとともに、命令キャッシ
ュのアクセスに用いたアドレスを常にバスに出力する。
【0008】2.バスの動作が、命令の命令キャッシュへ
の読み込みか、データ書き込みか、データ読み込みか、
命令キャッシュへのアクセスに用いたアドレスかを区別
するバスステータス信号を、アドレスなどのバス信号と
共に出力する。 3.バスステータス信号と共にアドレスバス及びデータバ
ス、バスアクセスの制御信号のそれぞれの状態を開発シ
ステム内のトレースメモリに格納する。 4.当該開発システム内のトレースメモリに格納されたバ
スの状態情報からプロセッサ内のプログラムの実行過程
を検出する。
【0009】(2)本発明のプロセッサ装置は、上述し
た課題を解決するため、以下の点を特徴とするものであ
る。 1.外部のメモリに格納されている一部の命令及びデータ
のいずれか一方又は双方を転記するキャッシュメモリを
備える。 2.当該キャッシュメモリを同一の半導体チップに搭載
し、当該キャッシュメモリに該当する命令及びデータが
存在するか否かにかかわらず、外部のメモリに対するア
ドレスを外部バスに出力するプロセッサを備える。
【0010】
【作用】
(1)CPU(プロセッサ)は命令キャッシュに命令が
存在するか否かにかかわらず、命令アドレスをメモリア
ドレスレジスタを介して外部バスに出力する。この外部
バスは、アドレスバス、データバス、制御バスから成
る。プログラムのデバッグ時は、この外部バスに開発シ
ステムを接続する。この結果、命令キャッシュがヒット
する場合もCPUがアクセスした命令を格納した外部の
メモリのアドレスがトレースメモリに格納される。そし
て、アドレスバスの内容とバスステータスの内容を解析
することにより、キャッシュロードを含めた命令の実行
過程を追跡することができる。
【0011】(2)プロセッサが搭載される半導体チッ
プ上にキャッシュメモリも内蔵される場合において、プ
ロセッサがキャッシュメモリをアクセスする際、外部バ
スにもアドレスを出力する。この場合、キャッシュメモ
リは、命令キャッシュだけでなく、データキャッシュで
もよい。データキャッシュへのアクセス過程も命令キャ
ッシュへのアクセス過程と同様にトレースメモリに格納
する結果、命令の実行過程の解析とともにデータキャッ
シュの動作も解析することができる。
【0012】
【実施例】以下、本発明の実施例を図面を参照して詳細
に説明する。 (第一の実施例)図1は、本発明のプロセッサ動作観察
方法を適用したプロセッサ装置の第一の実施例のブロッ
ク図である。図示のプロセッサ装置1は、CPU2と同
一の半導体チップ上に命令キャッシュ3を内蔵してい
る。また、その半導体チップ上には、バス制御のための
制御回路4も内蔵されている。このプロセッサ装置1
は、外部バス5を介してメモリ6に接続される。デバッ
グの際は、外部バス5に開発システム7が接続される。
開発システム7は、トレースメモリ8及び表示装置9等
を備えており、外部バス5上に出力された情報を1クロ
ックずつトレースメモリ8に格納し、その格納内容を表
示装置9に表示する。
【0013】外部バス5は、命令フェッチのための命令
バスとデータアクセスのためのデータバスが分離してお
らず、一つのバスとしてまとめられている。これによ
り、開発システム7では、トレースメモリ8に外部バス
5上のアドレスやデータ及びコマンドやストローブなど
が1組として格納される。従って、それらの情報が表示
装置9に表示され、それらの表示情報からどのようなプ
ロセッサの動作が行われたかを解析することが容易とな
る。また、プロセッサ装置1の内部には、CPU2が命
令キャッシュ3又はメモリ6にアクセスするアドレスを
保持するメモリアドレスレジスタ(MA)10が設けら
れている。このメモリアドレスレジスタ10には、命令
キャッシュ3がヒットした時もCPU2からのアドレス
IAが出力される。
【0014】CPU2の内部には、フェッチする命令の
アドレスを保持する命令アドレスレジスタ(IA)、フ
ェッチした命令を保持する命令データレジスタ(I
D)、データをアクセスするアドレスを保持するデータ
アドレスレジスタ(DA)、その書き込みデータあるい
は読み出しデータを保持するデータレジスタ(DD)が
ある。そして、IAとIDは命令キャッシュ3をアクセ
スするように接続されている。命令キャッシュ3への読
み込みを行うため、及びデータアクセスを行うため、I
AとDAはMAに接続されており、命令キャッシュ3と
DDは外部バス5のデータバス(以後、単にデータバス
と記述する)と接続されている。また、MAは、外部バ
ス5のアドレスバスと接続されているだけでなく、読み
込んだ命令を命令キャッシュ3に書き込むため、命令キ
ャッシュ3へも供給されている。
【0015】外部バス5は、メモリ6へのアドレスを供
給するバス(AB)と、メモリ6とデータを転送するデ
ータバス(DB)と、メモリ6へのアクセスを行うため
の読み書き信号とバス状態を示すバスステータス信号の
制御バス(CB)から成る。このうち、制御バスは、制
御回路4やメモリ6と接続されている。プロセッサ装置
1の外部には、前述したように、命令やデータを保持す
るメモリ6が接続されている。外部バス5の各バスA
B、DB、CBは、開発システム7のトレースメモリ8
と接続されている。
【0016】次に、上述したシステムの動作を説明す
る。プロセッサ装置1は、命令キャッシュ3の動作を禁
止せずに動作を行う。即ち、CPU2が命令をフェッチ
する場合、IAに保持されたアドレスで命令キャッシュ
3をアクセスする。一方、プロセッサ装置1のリセット
後は、命令キャッシュ3には何ら命令が保持されていな
い状態となるので、命令キャッシュ3はミスヒットす
る。
【0017】通常のプロセッサ装置では、この場合、ミ
スヒットしたアドレスは、MAに転送され、メモリから
命令キャッシュへの読み込みを開始する。一方、命令キ
ャッシュ3に、IAに該当する命令が保持されている
と、CPU2からのアクセスが命令キャッシュ3にヒッ
トするので、命令キャッシュ3からそのヒットした命令
を読み出し、IDに取り込む。そして、次のクロックの
入力により、IAは次にフェッチするアドレスに変わ
り、同様の動作を行う。これらを操り返すと、ループな
どですでに命令キャッシュ3に読み込んだ命令を再びフ
ェッチする時は、IAが命令キャッシュ3にヒットする
ようになる。
【0018】一方、データをアクセスする場合、DAに
保持されたアドレスをMAに転送し、外部バス5を使っ
て、メモリ6からのデータを転送する。以上は、一般の
プロセッサの動作と同じである。本発明では、命令アド
レスが命令キャッシュ3にヒットし、メモリ6へのアク
セスを必要としない場合でも、図示のように、その時の
アドレスをMAを介して外部バス5に出力する。そし
て、メモリアクセスが伴う命令フェッチやデータアクセ
ス及び命令キャッシュアクセス時の、アドレス(AB)
やデータ(DB)や制御バス(CB)の状態のすべて
を、開発システム7内のトレースメモリ8に記録する。
これにより、そのトレース情報を解析し、プロセッサ動
作の表示を行い、プログラムをデバッグする時の情報と
することができる。
【0019】以後の説明では、プロセッサ装置1が次の
ような動作を行うものである場合に限定して説明を進め
る。即ち、プロセッサ装置1は、命令フェッチ、デコー
ド、実行、メモリアクセス、レジスタ書き込みの5段パ
イプラインから成っているものとする。そして、各ステ
ージは1クロックで動作できるものとする。説明を簡単
にするため、命令フェッチと、データ読み出しのアクセ
スのみでウエイトし、レジスタ競合などではウエイトし
ないものとする。また、命令はすべて1ワード(32ビ
ット)長から成るものとする。更に、命令キャッシュ3
は、1ライン4ワードであり、命令キャッシュ3への読
み込み中は、CPU側からアクセスできないものとす
る。
【0020】トレースを行う場合、命令フェッチでは、
IAが変わるたびに、必ず、MAを経由して、外部バス
5のアドレスバス(AB)を駆動する。1クロックで命
令キャッシュ3のアクセスができるならば、命令キャッ
シュ3にヒットし続ける限り、外部バス5のアドレスバ
スABは1クロックごとに切り替わる。この場合、メモ
リ6のアクセスに必要な制御バスの信号は出力されるこ
とはない。但し、バスステータス信号は、命令フェッチ
を示す。また、データアクセスが行われるなど、命令キ
ャッシュをアクセスするアドレスを外部に供給できない
場合は、命令キャッシュ3のアクセスを待たせる。そし
て、命令キャッシュ3がミスヒットした場合は通常のメ
モリアクセスを行う。また、命令キャッシュ3がヒット
したが、レジスタの競合などの理由で、フェッチが待た
される場合は、その状態を直前のクロックとの間でアド
レスが変化していないことで知ることができる。
【0021】図2に、上述した第一の実施例での外部バ
スに関するタイミング例を示す。図2において、最上部
の縦棒の一つの間隔が1クロック分である。IA、IC
D(IDの入力)、DA、DDi(DDの入出力)、A
B、DB、BS(バスステータス信号)では、斜線で示
した部分は値が不定であることを示す。また、上下の線
がクロスしている部分(例えば、IAの時点t5,t
6,t10,t11)では、そのクロス部分の前後で値
が変化していることを示す。それ以外の白い部分は、あ
る値が確定していることを示す。図示の例では、まだ命
令キャッシュに読み込んでいない命令を分岐すること無
しに実行していて、途中に1度データの読み込みが行わ
れている。
【0022】時点t1からt4で命令キャッシュへの読
み込み中(図中左下の「CACHELOAD」)では、
BSは「IR」つまり命令読み込みを示すので、命令キ
ャッシュへの読み込み中であることが分かる。この場
合、1ライン分読み込みが完了するまで、CPUが命令
キャッシュへのアクセスができないので、IAは変わら
ない。命令キャッシュへの読み込みが完了すると、ま
ず、ミスヒットしたIAで命令キャッシュをアクセスす
る。この場合、順々に4命令分、命令キャッシュから読
み込む。これら4命令は、時点t4からt6とt9から
t11で命令キャッシュにヒットし、そのままバスに、
それらのアドレスを出力する(図中下の「HIT」4
回)。この時、バスは誰も利用しておらず、BSは「I
dle」つまり利用していないことを示すので、命令キ
ャッシュに対し、ABに現れたアドレスでアクセスして
いることが分かる。
【0023】引続き、命令読み込みが行われないので、
命令キャッシュにヒットしていることが分かる。但し、
途中で、データアクセス要求があるので、外部バスをデ
ータアクセスのために利用する。この場合、命令キャッ
シュアクセスのアドレスをアドレスバスに出力できない
ので、命令フェッチを待たせる。データ読み出しアクセ
ス中は「DR」つまりデータ読み込みを示すので、その
時のアドレスとデータが読み出しをしているデータに関
するものである。書き込みについては、図2には示して
いないが、上述と同様である。また、時点t11からt
12で命令キャッシュがミスヒットすると(図中下の
「MISSHIT」)、その次のクロックから命令キャ
ッシュへの読み込みが開始する。ミスヒットした時点の
アドレスは、そのまま、ABに出力されるので、どのア
ドレスでミスヒットしたかが分かる。
【0024】図3及び図4は、上述した第一の実施例で
のプログラムトレース例を示す。図において、左から順
に、外部バスのアドレスバス値(AB)、同バスステー
タス値(BS)、同データバス値(DB)、命令アクセ
ス状態(INST)、データアクセス状態(DAT
A)、実行する命令のニーモニック(MNEMONI
C)である。外部バスのアドレスバス値、同バスステー
タス値、同データバス値は、LSIから外部に出力され
る信号を観測して得られる値である。このトレース例で
は、1クロック毎にサンプルしている。図では、時間
は、上から下へ流れる。
【0025】アドレス及びデータはすべて32ビット
(ワード)長で、アドレス及びデータの値において、分
かりやすいように、有効である部分はその16進数で表
し、有効でない所はXXXXXXXXで示している。こ
れが実際に有効か否かは開発システム内の解折結果によ
り判明する。バスステータス値は、「Idle」では
“−−”で、「命令読み込みアクセス」は“IR”で、
「データ書き込みアクセス」は“DW”で、「データ読
み込みアクセス」は“DR”で示している。命令アクセ
ス状態、データアクセス状態、実行する命令のニーモニ
ックは、トレースメモリに格納された値から、プロセッ
サの動作を解析し、分かりやすく示したものである。
【0026】命令アクセス状態において、「(MISS
HIT)」は命令キャッシュにミスヒットしたことを、
「CACHELOAD」は命令キャッシュに読み込んだ
ことを、「FETCH」は命令キャッシュから命令をフ
ェッチしたことを示す。データアクセス状態において、
「WRITE」はデータ書き込みを、「READ」はデ
ータ読み出しを示す。“()”が付いているところは、
直前のデータアクセスが続いていることを示す。以下、
図の番号に対応して説明する。
【0027】(1) まず、バスステータスが「Idle」
状態なので、その時のアドレスは、命令キャッシュへの
アクセスアドレス(図ではABが0x1260)であ
る。その後、そのアドレスを含むラインが命令キャッシ
ュに読み込まれている。これは、バスステータスが「I
R」であり、アドレスが0x1260を含む4ワードを
読み込んでいることから、先程命令キャッシュにアクセ
スしたアドレス0x1260は、命令キャッシュにミス
ヒットしたことが分かる。この場合、1ワードの読み込
みに3クロック費している。これは、アドレスが変化し
ないこと、あるいは、(図には明示していないが)バス
信号情報から分かる。
【0028】(2) バスステータスが「Idle」状態な
ので、その時のアドレスは、命令キャッシュへのアクセ
スアドレス(図ではABが0x1260)である。その
後、命令キャッシュへの読み込みアクセスが発生しない
ので、命令キャッシュにヒットしたことが分かる。つま
り、アドレス0x1260にある命令がフェッチされた
ことが分かる。そして、パイプライン動作から、その命
令はフェッチ後、2クロック後に実行されることが分か
る。
【0029】どのような命令かは、フェッチアドレスか
ら自明である。そして、これは、ストア命令なので、実
行の次からデータ書き込みアクセスが行われる。このと
き、バスステータスが「DW」を示しているので、この
時のアドレスバス値(図では0x2000)とデータバ
ス値(図では0x01234567)によりデータ書き
込みアクセスが行われていることが分かる。この場合、
1ワードの書き込みに3クロック費している。これは、
アドレス0x2000が変化しないこと、あるいは、
(図には明示していないが)バス信号情報から分かる。
【0030】(3) 同様に、外部バスの情報から0x12
64からの命令をフェッチし、パイプライン動作から、
その2クロック後に実行する。どのような命令かは、フ
ェッチアドレスから自明である。
【0031】(4) 同様に、外部バスの情報から0x12
68からの命令をフェッチし、パイプライン動作から、
その2クロック後に実行する。ところが、この命令はロ
ード命令であり、次のメモリアクセスを行うためにバス
が空いていないので、ストア動作が完了するまで、1ク
ロック待つ。バスが空くと、データ読み込みアクセスが
行われる。即ち、バスステータスが「DR」を示してい
るので、この時のアドレスバス値(図では0x300
0)とデータバス値(図では0x89abcdef)に
よりデータ読み出しアクセスが行われていることが分か
る。この場合、1ワードの読み出しに3クロック費して
いる。これは、アドレス0x3000が変化しないこ
と、あるいは、(図には明示していないが)バス信号情
報から分かる。
【0032】(5) 同様に、外部バスの情報から0x12
6cからの命令をフェッチし、パイプライン動作から、
その2クロック後に実行する。どのような命令かは、フ
ェッチアドレスから自明である。この命令は命令キャッ
シュにヒットしていたが、フェッチが遅らされたのは、
外部バスがデータアクセスに利用されていて、命令キャ
ッシュアクセスのアドレスを外部バスに出力できなかっ
たからである。
【0033】(6) バスステータスが「Idle」状態な
ので、その時のアドレスは、命令キャッシュへのアクセ
スアドレス(図ではABが0x1270)である。その
後、そのアドレスを含むラインが命令キャッシュに読み
込まれている。これは、バスステータスが「IR」であ
り、アドレスが0x1270を含む4ワードを読み込ん
でいることから分かる。これにより、先程命令キャッシ
ュにアクセスしたアドレス0x1270は、命令キャッ
シュにミスヒットしたことが分かる。1ワードの読み込
みに3クロック費している。これは、アドレス0x12
70が変化しないこと、あるいは、(図には明示してい
ないが)バス信号情報から分かる。
【0034】(7) バスステータスが「Idle」状態な
ので、その時のアドレスは、命令キャッシュへのアクセ
スアドレス(図ではABが0x1270)である。その
後、命令キャッシュへの読み込みアクセスが発生しない
ので、命令キャッシュにヒットしたことが分かる。つま
り、アドレス0x1270にある命令がフェッチされた
パイプライン動作から、その2クロック後に実行される
ことが分かる。この命令がどのような命令かは、フェッ
チアドレスから自明である。以後、命令の実行が同様に
行われる。
【0035】(8) そして、同様に、外部バスの情報から
0x1268からの命令をフェッチし、パイプライン動
作から、その命令がその2クロック後に実行されること
が分かる。その命令がどのような命令かは、フェッチア
ドレスから自明である。図示の例では、その命令はロー
ド命令なので、実行の次からデータ読み込みアクセスが
行われる。また、バスステータスが「DR」を示してい
るので、この時のアドレスバス値(図では0x300
4)とデータバス値(図では0x89abcdef)に
よりデータ読み出しアクセスが行われていることが分か
る。この場合、lワードの読み出しに3クロック費して
いる。これは、アドレス0x3004が変化しないこ
と、あるいは、(図には明示していないが)バス信号惰
報から分かる。
【0036】上述した第一の実施例によれば、以下のよ
うな効果がある。即ち、命令キャッシュを内蔵するプロ
セッサにおいて、命令をフェッチする時の命令キャッシ
ュをアクセスするアドレスを、命令キャッシュにヒット
してもミスヒットした時と同じようにバスが空いている
時間にバスに出力する。そして、命令読み込み、データ
書き込み、データ読み込みの各バス動作状態、及び命令
キャッシュアドレスを送出する際のバスが空いている状
態をも制御バスに出力する。これにより、それらのバス
を外部から観測し、パイプライン動作や命令キャッシュ
動作を解析することにより、命令キャッシュを禁止した
時よりも実際の動作に近いプロセッサの実行動作を、把
握することができる。また、命令キャッシュにヒットし
たか否かも容易に把握できる。
【0037】尚、命令フェッチか、データアクセスかな
どを区別するバスステータス信号線は、命令キャッシュ
を無効にしても、開発システムがプロセッサ動作を解析
するため、同種の信号線が必要である。従って、LSI
の信号ピンの増加とはならない。
【0038】(第二の実施例)図5は、本発明の第二の
実施例のブロック図である。図示の装置は、第一の実施
例とほぼ同じであり、同一の部分については同一の符号
を付し、重複する説明を省略する。異なる所は、外部バ
ス5のデータバスDBを命令キャッシュ3とともに、C
PU2のIDにも接続している点である。
【0039】次に、上述した装置の動作を説明する。前
述した第一の実施例では、命令キャッシュへの読み込み
中は、CPU側からアクセスできないものとしたが、第
二の実施例では、命令フェッチするアドレスと同じアド
レスの命令が命令キャッシュに読み込まれる場合、同時
にフェッチできるものとする。
【0040】図6に、上述した第二の実施例での外部バ
スに関するタイミング例を示す。図6の見方は、図2と
同様である。尚、図6において、IDinはIDの入力
を意味し、DDioはDDの入出力を意味する。図6の
例は、後述する図7の(12)のデータ書き込みから図8の
(16)のミスヒットまでに相当する。時点t1からt2で
命令キャッシュからメモリへの書き込み中(図中左下の
「DATAWRITE」)では、BSは「DW」つまり
データ書き込みを示すので、メモリへの書き込み中であ
ることが分かる。
【0041】時点t2からt8で命令キャッシュへの読
み込み中(図中左下の「CACHELOADFETC
H」)では、BSは「IR」つまり命令読み込みを示す
ので、命令キャッシュへの読み込み中であることが分か
る。この場合、1命令分読み込みが完了するまで、IA
は変わらない。この場合、図中の矢印Sameで示すよう
に、IAとABが一致しているので、DBからIDin
への命令フェッチが同時に行われる。命令フェッチが行
われるとIAは次のアドレスに変わる。
【0042】時点t8からt11でデータ読み出しアク
セス中は「DR」つまりデータ読み込みを示すので、そ
の時のアドレスとデータが読み出しをしているデータに
関するものである。また、時点t11からt12で命令
キャッシュがミスヒットすると(図中下の「MISSH
IT」)、その次のクロックから命令キャッシュへの読
み込みが開始する。ミスヒットした時点のアドレスは、
そのまま、ABに出力されるので、どのアドレスでミス
ヒットしたかが分かる。
【0043】図7及び図8は、上述した第二の実施例で
のプログラムトレース例を示す。図の見方は、図3及び
図4と同じであるが、命令アクセス状態において、命令
キャッシュへの読み込みを「CL」と示し、命令キャッ
シュへの読み込みと同時に命令フェッチが行われる場合
は「FETCH+CL」と示す。
【0044】(11) まず、バスステータスが「Idl
e」状態なので、その時のアドレスは、命令キャッシュ
へのアクセスアドレス(図ではABが0x1260)で
ある。その後、そのアドレスを含むラインが命令キャッ
シュに読み込まれている。これは、バスステータスが
「IR」であり、アドレスが0x1260を含む4ワー
ドを読み込んでいることから、先程命令キャッシュにア
クセスしたアドレス0x1260は、命令キャッシュに
ミスヒットしたことが分かる。この場合、lワードの読
み込みに3クロック費している。これは、アドレス0x
1260が変化しないこと、あるいは、(図には明示し
ていないが)バス信号情報から分かる。また、(12)で説
明するが、途中にデータアクセスがはさまれている。
【0045】(12) (11)において、命令キャッシュがミ
スヒットしたアドレスが0x1260と判明しているの
で、そのアドレスの命令が命令キャッシュに読み込まれ
ると同時にフェッチされる。パイプライン動作から、そ
の2クロック後に実行することが分かる。どのような命
令かは、フェッチアドレスから自明である。そして、こ
れは、ストア命令なので、実行の次からデータ書き込み
アクセスが行われるはずである。しかし、バスは、命令
の読み込みに利用されているので、アクセス中のバスア
クセスが終了した時点でデータ書き込みが行われる。バ
スステータスが「DW」を示しているので、この時のア
ドレスバス値(図では0x2000)とデータバス値
(図では0x01234567)によりデータ書き込み
アクセスが行われていることが分かる。この場合、1ワ
ードの書き込みに3クロック費している。これは、アド
レス0x2000が変化しないこと、あるいは、(図に
は明示していないが)バス信号情報から分かる。
【0046】(13) 分岐命令がなければ、(12)でのフェ
ッチアドレス0x1260の次のアドレス0x1264
の命令がフェッチされる。この例では、分岐命令がなか
った。分岐命令の場合は、(18)で説明する。そのアドレ
ス0x1264の命令が命令キャッシュに読み込まれる
と同時にフェッチされる。パイプライン動作から、その
2クロック後に実行することが分かる。どのような命令
かは、フェッチアドレスから自明である。
【0047】(14) 同様に、次のアドレス0x1268
の命令を、命令キャッシュに読み込むと同時にフェッチ
する。パイプライン動作から、その2クロック後に実行
することが分かる。そして、これは、ロード命令なの
で、実行の次からデータ読み出しアクセスが行われるは
ずである。しかし、バスは、命令の読み込みに利用され
ているので、アクセス中のバスアクセスが終了した時点
でデータ読み込みが行われる。バスステータスが「D
R」を示しているので、この時のアドレスバス値(図で
は0x3000)とデータバス値(図では0x89ab
cdef)によりデータ読み出しアクセスが行われてい
ることが分かる。この場合、1ワードの書き込みに3ク
ロック費している。これは、アドレス0x3000が変
化しないこと、あるいは(図には明示していないが)バ
ス信号情報から分かる。
【0048】(15) 同様に、次のアドレス0x126C
の命令が、命令キャッシュに読み込まれると同時にフェ
ッチされる。パイプライン動作から、その命令はその2
クロック後に実行されることがわかる。
【0049】(16) 命令キャッシュヘのアクセスなの
で、バスが空くまでフェッチを待つ。バスが空くと、命
令キャッシュへのアクセスを行なう。外部バスから見る
と、バスステータスが「Idle」状態なので、その時
のアドレスは、命令キャッシュへのアクセスアドレス
(図ではABが0x1270)である。その後、そのア
ドレスを含むラインが命令キャッシュに読み込まれてい
る。これは、バスステータスが「IR」であり、アドレ
スが0x1270を含む4ワードを読み込んでいること
から、先程命令キャッシュにアクセスしたアドレス0x
1270は、命令キャッシュにミスヒットしたことが分
かる。この場合、1ワードの読み込みに3クロック費し
ている。これは、アドレス0x1270が変化しないこ
と、あるいは(図には明示していないが)バス信号情報
から分かる。
【0050】(17) (12)と同様に、命令キャッシュにミ
スヒットしたアドレス0x1270の命令が命令キャッ
シュに読み込まれるのと同時に、フェッチされる。パイ
プライン動作から、この命令は、その2クロック後に実
行されることが分かる。どのような命令かは、フェッチ
アドレスから自明である。
【0051】(18) 同様に、次のアドレス0x1274
の命令が命令キャッシュに読み込まれるのと同時に、フ
ェッチされる。この命令は、パイプライン動作から、そ
の2クロック後に実行されることが分かる。どのような
命令かは、フェッチアドレスから自明である。図示の例
では、この命令は、条件分岐命令であるので、分岐する
可能性がある。(19)ではっきりするが、この例では分岐
する。
【0052】(19) 分岐先の命令をフェッチするが、バ
スが空くまで、フェッチを待つ。バスが空くと、命令キ
ャッシュをアクセスする。この時のアドレスを外部バス
に出力する。外部バスから見ると、バスステータスが
「Idle」状態なので、その時のアドレスは、命令キ
ャッシュへのアクセスアドレス(図ではABが0x12
68)である。その後、このアドレスを含む命令の読み
込みアクセスが行われないので、命令キャッシュにヒッ
トしたことが分かる。
【0053】また、(18)において、分岐するか否かは、
その分岐先であるアドレス0x1268の命令がフェッ
チされたことから、分岐したことが分かる。また、それ
により、アドレス0x127Cはフェッチされなかった
ことが分かる。アドレス0x1268の命令は、パイプ
ライン動作から、命令フェッチの2クロック後に実行さ
れることが分かる。どのような命令かは、フェッチアド
レスから自明である。この命令はロード命令なので、実
行の次のクロックからデータ読み込みアクセスが行われ
る。
【0054】更に、次の情報では、バスステータスが
「DR」を示しているので、この時のアドレスバス値
(図では0x3004)とデータバス値(図では0x8
9abcdef)によりデータ読み出しアクセスが行わ
れていることが分かる。この場合、1ワードの読み出し
に3クロック費やている。これは、アドレス0x300
4が変化しないこと、あるいは、(図には明示していな
いが)バス信号情報から分かる。上述した第二の実施例
によれば、命令フェッチするアドレスと同じアドレスの
命令が命令キャッシュに読み込まれると同時にフェッチ
できる場合でも、第一の実施例と同様の効果を得ること
ができる。
【0055】尚、本発明は上述した実施例に限定される
ものではなく、種々の変形が可能であることはもちろん
である。例えば、上述した第一及び第二の実施例では、
パイプライン構成を5段パイプラインとしたが、別の構
成であっても、ウエイトする要因を特定できるものであ
ればよい。また、命令キャッシュの構成はセットアソシ
ャティブ、フルアソシャティブ等の別を問わない。図
3、図4、図7、図8において、バスステータス信号
(BS)という信号を必要としたが、命令キャッシュへ
の読み込み、命令キャッシュからのフェッチ、データの
読み込み、データ書き込みの区別がつけられる信号があ
れば他の信号でもよい。また、命令フェッチするアドレ
スと同じで命令が命令キャッシュに読み込まれる場合以
外にバッファを設け、タイミングをずらして命令フェッ
チする場合でもよい。
【0056】
【発明の効果】以上説明したように、本発明のプロセッ
サ動作観察方法及び装置によれば、命令キャッシュのヒ
ット時も命令アドレスを外部メモリに出力するようにし
たので、次のような効果がある。即ち、命令キャッシュ
がプロセッサと同一の半導体チップに内蔵されている場
合でも、プログラムの実行過程の観察をすることが容易
となる。つまり、命令キャッシュとのインタフェースを
信号ピンとして外部に出力する必要がないので、余計な
電気的負荷を生ずることがなく、CPUがアクセスする
場合の経路遅延を引き起こすこと等がない。また、命令
キャッシュ動作を禁止させる必要がなく、プロセッサの
実際の動作速度でデバッグを行うことができる。更に、
命令キャッシュにヒットしたかヒットしなかったかの情
報も容易に収集することができる。
【図面の簡単な説明】
【図1】本発明のプロセッサ動作観察方法及び装置の第
一の実施例のブロック図である。
【図2】本発明の第一の実施例における外部バスタイミ
ング例を示すタイムチャートである。
【図3】本発明の第一の実施例におけるトレース例(そ
の1)の説明図である。
【図4】本発明の第一の実施例におけるトレース例(そ
の2)の説明図である。
【図5】本発明のプロセッサ動作観察方法及び装置の第
二の実施例のブロック図である。
【図6】本発明の第二の実施例における外部バスタイミ
ング例を示すタイムチャートである。
【図7】本発明の第二の実施例におけるトレース例(そ
の1)の説明図である。
【図8】本発明の第二の実施例におけるトレース例(そ
の2)の説明図である。
【符号の説明】
1 プロセッサ装置 2 CPU 3 命令キャッシュ 4 制御回路 5 外部バス 6 メモリ 7 開発システム 8 トレースメモリ 9 表示装置 10 メモリアドレスレジスタ

Claims (2)

    【特許請求の範囲】
  1. 【請求項1】 命令キャッシュを内蔵するプロセッサの
    外部と接続するバスに結合された開発システムを使用し
    て当該プロセッサの実行の過程を観察する場合におい
    て、 外部にアクセスするアドレスとともに、前記命令キャッ
    シュのアクセスに用いたアドレスを常に前記バスに出力
    し、 前記バスの動作が、命令の前記命令キャッシュへの読み
    込みか、データ書き込みか、データ読み込みか、前記命
    令キャッシュへのアクセスに用いたアドレスかを区別す
    るバスステータス信号を、前記アドレスと共に出力し、 前記バスステータス信号と共にアドレスバス及びデータ
    バス、バスアクセスの制御信号のそれぞれの状態を開発
    システム内のトレースメモリに格納し、 当該開発システム内のトレースメモリに格納されたバス
    の状態情報から前記プロセッサ内のプログラムの実行過
    程を検出することを特徴とするプロセッサ動作観察方
    法。
  2. 【請求項2】 外部のメモリに格納されている一部の命
    令及びデータのいずれか一方又は双方を転記するキャッ
    シュメモリと、 当該キャッシュメモリを同一の半導体チップに搭載し、
    当該キャッシュメモリに該当する命令及びデータが存在
    するか否かにかかわらず、前記外部のメモリに対するア
    ドレスを外部バスに出力するプロセッサとから成ること
    を特徴とするプロセッサ装置。
JP7164683A 1995-06-07 1995-06-07 プロセッサ動作観察方法及び装置 Pending JPH08335177A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP7164683A JPH08335177A (ja) 1995-06-07 1995-06-07 プロセッサ動作観察方法及び装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP7164683A JPH08335177A (ja) 1995-06-07 1995-06-07 プロセッサ動作観察方法及び装置

Publications (1)

Publication Number Publication Date
JPH08335177A true JPH08335177A (ja) 1996-12-17

Family

ID=15797877

Family Applications (1)

Application Number Title Priority Date Filing Date
JP7164683A Pending JPH08335177A (ja) 1995-06-07 1995-06-07 プロセッサ動作観察方法及び装置

Country Status (1)

Country Link
JP (1) JPH08335177A (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000235510A (ja) * 1999-02-15 2000-08-29 Hitachi Ltd プロセッサおよびそのためのコンパイルプログラム記録媒体
US6453410B1 (en) 1998-07-03 2002-09-17 Nec Corporation Computer system having a cache memory and a tracing function
EP2339453A1 (en) 2009-12-25 2011-06-29 Fujitsu Limited Arithmetic processing unit, information processing device, and control method

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6453410B1 (en) 1998-07-03 2002-09-17 Nec Corporation Computer system having a cache memory and a tracing function
JP2000235510A (ja) * 1999-02-15 2000-08-29 Hitachi Ltd プロセッサおよびそのためのコンパイルプログラム記録媒体
EP2339453A1 (en) 2009-12-25 2011-06-29 Fujitsu Limited Arithmetic processing unit, information processing device, and control method
JP2011150691A (ja) * 2009-12-25 2011-08-04 Fujitsu Ltd 演算処理装置、情報処理装置及び制御方法
US8707014B2 (en) 2009-12-25 2014-04-22 Fujitsu Limited Arithmetic processing unit and control method for cache hit check instruction execution

Similar Documents

Publication Publication Date Title
JP4190114B2 (ja) マイクロコンピュータ
US6446221B1 (en) Debug mechanism for data processing systems
US6321329B1 (en) Executing debug instructions
US6052774A (en) Apparatus and method for identifying exception routines indicated by instruction address issued with an instruction fetch command
US6343358B1 (en) Executing multiple debug instructions
KR0168656B1 (ko) 데이터 처리 시스템
US5345580A (en) Microprocessor device and emulator device thereof
US7689867B2 (en) Multiprocessor breakpoint
US6754856B2 (en) Memory access debug facility
US9201749B2 (en) Diagnosing code using single step execution
US7533302B2 (en) Trace and debug method and system for a processor
JPH11110255A (ja) ソフトウェアをデバッグするための装置および方法
JPH08335177A (ja) プロセッサ動作観察方法及び装置
US5287522A (en) External procedure invocation apparatus utilizing internal branch vector interrupts and vector address generation, in a RISC chip
JPS6383841A (ja) プログラムテスト可能な計算機中央処理装置
CN114580329A (zh) 一种数字信号处理器芯片实时调试方法
JP3349911B2 (ja) マイクロプロセッサ及びその開発支援装置
JP2760228B2 (ja) キャッシュメモリを内蔵したマイクロプロセッサとそのトレースアナライザ
JPS62164140A (ja) デ−タ処理システムの試験方法
JP2666737B2 (ja) トレースメモリ内蔵マイクロプロセッサおよびトレース方法
JPH04284546A (ja) データ処理装置及びそれを用いたシステム開発装置
JPH1011290A (ja) マイクロプロセッサ
JPH07210427A (ja) メモリアクセス監視装置およびメモリアクセス監視方法
JPH1139193A (ja) マイクロプロセッサ
JPH09237201A (ja) マイクロコンピュータアナライザ