(57)【特許請求の範囲】
【請求項１】
ロジック部に含まれるレジスタ類の状態を、時系列的にトレースデータとして採取する方式であって、トレースデータ記憶手段とこの記憶手段へ書き込む際のアドレスを作成し保持するアドレス回路と記録間隔カウンタと制御手段とを備え、制御手段は、前記レジスタ類を機能動作上複数のレジスタ群にグループ化した場合、各レジスタ群についてそれが動作中であることを示す前記レジスタ類の一部のビットをイベントフラグとし、イベントフラグの何れかのビットがオンしたサイクルについてのみ前記レジスタ類の状態及び記録間隔カウンタ値をトレース記憶手段に書き込み、前記アドレス回路を歩進し、前記記録間隔カウンタをリセットし、前記書込みがなければ、記録間隔カウンタを毎サイクルカウントアップし、動作中のサイクルについてレジスタ類の状態を記録間隔と共に、逐次採取することを特徴とするトレースデータ採取方式。
【請求項２】
前記ロジック部を含むＬＳＩの中に、前記トレースデータ記憶手段と前記アドレス回路と前記記録間隔カウンタと前記制御手段とを備えたことを特徴とする請求項１記載のトレースデータ採取方式。
【請求項３】
前記ロジック部を含むＬＳＩの中に、前記トレースデータ記憶手段と前記アドレス回路と前記記録間隔カウンタと前記制御手段と、トレースデータ記憶手段の読出レジスタとを備え、少なくとも前記アドレス回路と読出レジスタは、通常入力の他これと排他的にシフトモードで有効となるシフトパス入力を有し、制御手段はシフトモード時のシフトインでのみ設定される読出状態フラグと、シフトモード時のシフトインで設定され、シフトモード解除後のクロック信号でリセットされる読出指示フラグを有し、読出レジスタのシフトアウト及び読出指示フラグのシフトインと、シフトモードを解除しての記憶手段の読出しとを交互に行ないトレースデータ記憶手段を読み出すことを特徴とする請求項２記載のトレースデータ採取方式。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ＬＳＩ内部のレジスタ状態或いは装置内部のレジスタ状態を採取する方式に関し、特に大規模な処理機能を有するＬＳＩの機能的な最終デバッグ評価、や性能問題を解析する為のトレースデータを採取する方式に関する。
【０００２】
【従来の技術】
従来、新規にＬＳＩを開発する場合の機能的なデバッグは主にその設計段階でＬＳＩの機能記述に対し、テストパターンを用いシミュレーションすることで遂行される。
【０００３】
例えば高速のプロセッサを実現する大規模なＬＳＩ等においても、設計段階で上記基本機能の事前デバッグを行ってからＬＳＩを試作する。しかし、この様なＬＳＩでは、稀に発生するバグや性能上の問題を洗い出す為に実使用環境に近い最終評価を量産前に行っておくことが必要で、シミュレーションではモデル設定が膨大となり結局試作ＬＳＩに対しオペレーティングシステムや多数のアプリケーションプログラムを用いた評価を行うことになる。
【０００４】
この様な評価デバッグで、動作不良や性能不足が検出された際に解析が容易に行える様にＬＳＩにレジスタ状態を採取するトレーサを内蔵させる（特にクロック周期が極めて小さい場合には、Ｉ／Ｏ端子よりプローブを介して外部のトレーサに採取する方式では正確に採取出来ない為）。
【０００５】
ところが、従来のＬＳＩ内蔵のトレーサでは、トレースデータ記憶部の容量がＬＳＩ内蔵のため限りがあるにも拘わらず、問題となるプログラムの一連の処理を実行させ、毎サイクルデータを記憶部に取り込む為しばしば溢れが生じ一連の処理の一部しかトレース出来ないこともある。
【０００６】
【発明が解決しようとする課題】
上記従来のトレースデータ採取方式では、ＬＳＩ内に備えた複数のレジスタのうち状態解析に必要なレジスタの出力をラップラウンドで毎サイクル記録していた為、ＬＳＩに実装可能なハードウェア量の制限によって、短時間間隔のレジスタ状態データしか採取できないと言う問題があった。
【０００７】
本発明は、ハードウェア規模を大幅に増大することなくＬＳＩ内部のレジスタ状態のトレース時間を長くすることを目的とし、主に、解析に必要の無いデータを採取しない様に工夫することで長時間のレジスタ状態を採取を実現する。
【０００８】
【課題を解決するための手段】
本発明の第１のトレースデータ採取方式は、ロジック部に含まれるレジスタ類の状態を、時系列的にトレースデータとして採取する方式であって、トレースデータ記憶手段とこの記憶手段へ書き込む際のアドレスを作成し保持するアドレス回路と記録間隔カウンタと制御手段とを備え、制御手段は、前記レジスタ類を機能動作上複数のレジスタ群にグループ化した場合、各レジスタ群についてそれが動作中であることを示す前記レジスタ類の一部のビットをイベントフラグとし、イベントフラグの何れかのビットがオンしたサイクルについてのみ前記レジスタ類の状態及び記録間隔カウンタ値をトレース記憶手段に書き込み、前記アドレス回路を歩進し、前記記録間隔カウンタをリセットし、前記書込みがなければ、記録間隔カウンタを毎サイクルカウントアップし、動作中のサイクルについてレジスタ類の状態を記録間隔と共に、逐次採取することを特徴とする。
【００１３】
本発明の第２のトレースデータ採取方式は、前記第１のトレースデータ採取方式に於いて、前記ロジック部を含むＬＳＩの中に、前記トレースデータ記憶手段と前記アドレス回路と前記記録間隔カウンタと前記制御手段とを備えたことを特徴とする。
【００１４】
本発明の第３のトレースデータ採取方式は、前記第２のトレースデータ採取方式に於いて、前記ロジック部を含むＬＳＩの中に、前記トレースデータ記憶手段と前記アドレス回路と前記記録間隔カウンタと前記制御手段と、トレースデータ記憶手段の読出レジスタとを備え、少なくとも前記アドレス回路と読出レジスタは、通常入力の他これと排他的にシフトモードで有効となるシフトパス入力を有し、制御手段はシフトモード時のシフトインでのみ設定される読出状態フラグと、シフトモード時のシフトインで設定され、シフトモード解除後のクロック信号でリセットされる読出指示フラグを有し、読出レジスタのシフトアウト及び読出指示フラグのシフトインと、シフトモードを解除しての記憶手段の読出しとを交互に行ないトレースデータ記憶手段を読み出すことを特徴とする。
【００１５】
【発明の実施の形態】
次に、本発明の第１実施形態について図面を参照し説明する。図１は本実施形態のＬＳＩ内蔵のトレースデータ採取方式を示すブロック図である。
【００１６】
本図を参照し、ロジック部１には多数のレジスタ類（レジスタ、カウンタ、制御用のフリップフロップ等のクロックで動作する順序回路）が存在する。これらＬＳＩの状態解析に必要なレジスタ類を、例えばＬＳＩにおける機能により複数のブロックに区切り、それぞれをＧＲＰ（グループ）−Ａレジスタ群１２１、ＧＲＰ−Ｂレジスタ群１２２、・・ＧＲＰ−Ｄレジスタ群１２４とする。
【００１７】
ＬＳＩがプロセッサであれば例えば命令キャッシュ部、命令コードデコード部、アドレス計算部、オペランドデータ準備部、レジスタオペランド準備部、ページング機構、オペランドキャッシュ、演算処理起動部、各種演算部、レジスタ更新部、インストラクションカウンタ部、プログラムステータスレジスタ部、割り込み処理部等の機能上のブロックに区切られる。各ブロックを一つのレジスタ群とする。
【００１８】
そして各ブロックについて、これが動作中であることを示すイベントフラグを選定する。図１では説明を簡潔にするため各グループのイベントフラグを１ビットとしているがこれに限定するものでなく、イベントフラグの集合が、各ブロックの動作中表示をカバーしていればよい。
【００１９】
本実施形態では制御手段として、ＯＲ回路２と、ＡＮＤ回路２１と、ＯＲ回路３１、４１と読出状態フラグ６、読出指示フラグ６１、ＡＮＤ回路２２、６２を有し、アドレス回路はアドレスカウンタ３とする。
【００２０】
複数ビットで構成されたＡレジスタ群のうち、採取すべきあるイベントフラグが点灯した場合、該イベントフラグの出力をＯＲ（論理和）回路２に出力する。
【００２１】
ＯＲ回路２は、各レジスタ群のイベントフラグ１１１〜１１４を受信すると受信した各イベントフラグをＯＲし、トレースオン状態（トレース開始条件成立から終了条件迄）であればＡＮＤ回路２１はデータ登録指示を出力しトレースデータ、記録間隔の記憶手段８への書込を指示する。又、記録間隔カウンタ４へのリセット指示を出力する。
【００２２】
アドレスカウンタ３は出力が記憶手段８のアドレスに接続され、データ登録時のアドレスを指定する。又、データ登録指示を受信すると、インクリメント動作を行い次サイクルでアドレス出力が＋１される。
【００２３】
記録間隔カウンタ４は、クロックに同期して毎サイクルカウントアップし、カウンタリセット指示を受信した次サイクルで該カウンタをリセットするインクリメントカウンタである。
【００２４】
記憶手段８は、ＡＮＤ回路２１からの指示信号を受信し、採取すべき各レジスタ群の出力と、記録間隔カウンタ４の出力を記録する。
【００２５】
読出レジスタ９は記憶手段８に記憶されたデータ、記録間隔を読み出す際に使用されるレジスタである。例えば図示する様に、記憶手段８の上位データ、下位データと言う様に順次読み出すことでビット数を低減している。
【００２６】
読出状態フラグ（ＲＭＤＦ）６は記憶手段８の読出モードであることを示し、シフトインでのみオン、オフされるフリップフロップであり、読出モードで記憶手段８の書込を禁止している。
【００２７】
読出指示フラグ（ＲＤＦ）６１は記憶手段８の読み出しの１サイクルのみオンする、シフトイン可能で且つ通常入力は「０」であるフリップフロップである。
【００２８】
ロジック部１の各レジスタ群、アドレスカウンタ３、記録間隔カウンタ４、読出フラグ６、読出レジスタ９を構成するフリップフロップは通常入力の他にシフトイン入力も有し、又シフトモード信号が供給されておりシフトモード時は通常入力がディスエイブルされ、シフトイン入力が有効（イネーブル）となり、クロックに同期して上記レジスタ群、カウンタ、レジスタが一つのシフトレジスタとして動作する。
【００２９】
従って、読み出し動作は、アドレスカウンタ３に読出す先頭アドレスを、読出指示６１に「１」をそれぞれシフトインし、通常モード（シフトモードオフ）にしクロックを供給すると最初の１サイクルのみ読出指示６１がオンしているので読出レジスタ９に先頭アドレスのデータが読み出され、アドレスカウンタ３が＋１される。
【００３０】
そして読出レジスタ９の値をシフトアウトしデータを読み出す。以降読出指示フラグ６１への「１」のシフトイン、通常モードに戻してのクロックを供給、読出レジスタ９のシフトアウトの一連の動作を繰り返すことで記憶手段８のデータを順次読み出す。この様にすることで、読み出しの為にＬＳＩの入出力端子が増加しない様に工夫している。
【００３１】
次に本実施例の具体例について図２のタイミングチャートと図３（Ａ）の記憶手段８のイメージを用いて説明する。レジスタ群Ａ〜Ｄは先頭１ビットのイベントフラグと２ビットのデータで構成されているものと仮定する（実際にはイベントフラグは１〜２ビット、データは数十ビット以上であるが説明の便宜上簡素化する）。
【００３２】
先ずトレースＯＮ状態のセットサイクルでアドレスカウンタ３、記録間隔カウンタ４が共にリセットされる。この次サイクルをクロック０とするとクロック０においてレジスタ群Ｂのイベントフラグがセットされると、ＡＮＤ回路２１は記憶手段８に対して登録指示を出力すると共に、記録間隔カウンタ４のリセット指示を出力する。この時、アドレスカウンタ３の示すアドレスが「００」番地であり、クロック０の時点で出力されるレジスタ群Ａ〜Ｄの出力と記録間隔カウンタ４の出力「００」が記憶装置の「００」番地に登録される。
【００３３】
アドレスカウンタ３は、ＡＮＤ回路２１から登録指示を受信すると、次サイクルにおいて＋１されて「０１」となる。又、記録間隔カウンタ４は、登録指示を受信すると、次サイクルにおいてリセットされて「０」となる。
【００３４】
以降クロック１〜３のサイクルではいずれかのレジスタ群のイベントフラグがセットされており、各サイクルの全レジスタ群のデータ、間隔カウント「０」が記憶手段８のアドレス「０１」から「０３」に順次書き込まれる。
【００３５】
クロック４〜７のサイクルではいずれのイベントフラグもリセット状態の為、登録指示はオフでありアドレスカウンタ３は「０４」に保持され、登録間隔カウンタ４は毎サイクルカウントアップする。
【００３６】
クロック８において、レジスタ群Ｃのイベントフラグがセットされると、ＡＮＤ回路２１は登録指示を出力し記憶手段８のアドレス「０４」に同様に書き込み、アドレスカウンタ３のカウントアップ、記録間隔カウンタ４のリセット指示を出力する。クロック９〜１１のサイクルではいずれかのレジスタ群のイベントフラグがセットされており、記憶手段８のアドレス「０５」〜「０７」へ順次書き込まれる。
【００３７】
尚、図３の（Ｂ）に従来方式によるトレースイメージを示す。図示の様にクロック０〜１１の各サイクルのレジスタ値が記憶手段８のアドレス「００」〜「１１」に順次書き込まれる。
【００３８】
従って、本実施例では、従来０〜１１番地を使用していたものを０〜７番地で採取することが可能となり、従来方式より長時間のＬＳＩ内部データが採取可能となる。
【００３９】
本実施例ではレジスタ群Ａ〜Ｄやアドレスカウンタ３、記録間隔カウンタ４、読出状態フラグ６、読出指示フラグ６１、読出レジスタ９はシフトパスを有し読出レジスタ９の出力はシフトパスによる読み出を行うとしたが他の実施例ではシフトパスや、これによる読み出しに限定するものではない。
【００４０】
又、本実施形態の更に他の実施例は装置のトレースデータ採取方式であり、構成は前記と同様であるが、ロジック部１やロジック部１のレジスタ類の状態を採取する記憶手段８、アドレスカウンタ３、記録間隔カウンタ４、制御手段はＬＳＩである必要はなく配線基板上の回路であってもよい。
【００４１】
次に、本発明の第２実施形態について図面を参照し説明する。本実施形態ではトレースモードを縮退モードに切り替えると、イベントフラグの何れかがオン状態で、イベントフラグ全体の値が変化せず連続する場合に、イベントフラグが同一値の２回目以降のサイクルを１エントリに縮退して記録する機能を追加した方式である。
【００４２】
縮退時には、継続した回数（０オリジン）を記録間隔カウントの代わりに記憶手段８に格納する。従って記憶手段８への書き込みデータとして、カウントフィールドの値が記録間隔、継続カウントの何れであるかを示す１ビットのフラグを追加し、カウント値が記録間隔であればこのフラグを「０」とし、継続カウントであれば「１」として格納する。
【００４３】
図４は本実施形態のＬＳＩ内蔵のトレースデータ採取方式を示すブロック図である。本実施形態では制御手段として、ＯＲ回路２と、ＡＮＤ回路２１と、ＯＲ回路４１と読出状態フラグ６、読出指示フラグ６１、ＡＮＤ回路２２、６２の他、アドレスカウンタ３のカウントアップ論理回路、控えアドレスレジスタ３２のストローブ論理回路、セレクタ３３、４２の選択論理回路を有する。
【００４４】
尚、論理回路は論理式のみ図示する。論理式の＃、・、＋はそれぞれＮＯＴ（否定）、論理積、論理和を意味する。
【００４５】
又、制御手段は、イベントフラグ全ビット値の継続を検出する手段として、前サイクルにおける各レジスタ群のイベントフラグ値を保持する控えＥＦレジスタ５１と、これと現サイクルのイベントフラグ値の一致を検出するマッチャ５２を有し、継続サイクル数のカウント手段として、マッチャ５２の一致出力でカウントアップされ一致出力オフであればリセットされる継続カウンタ５を有する。
【００４６】
継続カウンタ５の出力は、セレクタ４２に入力され、セレクタ４２にて０−記録間隔カウント（−はビット結合を示す）と１−継続カウントを切り替え、記憶手段８に書き込む。これによりカウントとして記録間隔を書き込む際には前記フラグを「０」とし、継続カウントを書き込む場合は「１」とする。
【００４７】
更に制御手段は、縮退モードを指示する縮退モードフラグ（ＳＭＤ）７を有する。
【００４８】
アドレス回路として、アドレスカウンタ３と、イベントフラグ値が継続する２サイクル目のアドレスカンタ３の値を控える控えアドレスレジスタ３２、アドレスカウンタ３の出力と控えアドレスレジスタ３２出力とを切り替えるセレクタ３３を有している。
【００４９】
アドレスカウンタ３のカウントアップ条件は、縮退モードでなければ前記と同様の登録指示であり、縮退モードであれば、継続カウントが０（継続カウンタ５の出力が０）或いは一致出力オフで登録指示された時となる。即ち、同一のイベントフラグ値が継続する１回目、２回目のサイクルではカウントアップ指示し、以降は抑止される。
【００５０】
控えアドレスレジスタ３２は継続カウントが０、且つ一致（マッチャ５２出力）がオンで登録指示がある時にストローブする。即ち、同一のイベントフラグ値が連続する２回目のサイクルでストローブする。
【００５１】
セレクタ３３では、縮退モードで継続カウントが０でなく、一致出力オンであれば控えアドレスレジスタ３２を選択し記憶手段８へのアドレスとする。即ち、同一のイベントフラグ値が継続する３回目以降のサイクルでは控えアドレスレジスタ３２を選択し、２回目以降同一のアドレスに書込み継続カウントを更新する。セレクタ４２の選択論理もセレクタ３３のそれと同様である。
【００５２】
次に本実施形態の具体例について図５のタイムチャート、図６（Ａ）の記憶手段８のイメージを用いて説明する。レジスタ群Ａ〜Ｄの構成は前記と同様と仮定する。
【００５３】
先ずトレースＯＮのセットサイクルでアドレスカウンタ３、記録間隔カウンタ４が共にリセットされ、次サイクルをクロック０とするとクロック０〜３においてレジスタ群Ａ、Ｂ、Ｃ、Ｄのイベントフラグが順次セットされる。従ってクロック０〜３の各サイクルではＡＮＤ回路２１は記憶手段８に対して登録指示、アドレスカウンタ３のインクリメント指示、記録間隔カウンタ４のリセット指示を出力する。これにより各サイクルのデータとカウント値の意味を示すフラグとしての「０」、記録間隔カウントとしての「０」が記憶手段８の「００」〜「０３」番地に書き込まれる。
【００５４】
クロック３〜６では、レジスタ群Ａ〜Ｄのイベントフラグ値が「００１１」でクロック４〜６では前サイクルのイベントフラグ値が継続しているため一致出力がオンする。この一致出力により継続カウンタ５が、クロック５〜７にかけて１、２、３とカウントアップされる。
【００５５】
アドレスカウンタ３のカウントアップ指示は、クロック４ではオンとなるが、一致カウントが１以上で且つ一致出力オンのクロック５、６では抑止される。又クロック８では全イベントフラグがオフのため登録指示が出力されず抑止される。従って、アドレスカウンタ３はクロック４で「４」となり、クロック５で「５」となりクロック８で「６」にクロック１０で「７」になる。
【００５６】
又クロック４では、継続カウントが０で一致出力がオンであり、アドレスカウンタ３の値「４」が控えアドレスレジスタ３２にストローブされる。
【００５７】
継続カウントが０でない（１以上）で且つ一致出力がオンしている、クロック５、６のサイクルでは、セレクタ３３に控えアドレスレジスタ３２の方を選択させる。これによりクロック５、６のサイクルではクロック４のサイクルと同じ
「０４」番地への書込を行う。
【００５８】
同様にクロック５、６のサイクルでは、セレクタ４２に前記「１−継続カウント」の方を選択させる。これによりクロック５、６のサイクルでは「０４」番地のフラグのセット、継続カウントの更新を行う。
【００５９】
以上の動作により、記憶手段８には図６（Ａ）に示すデータや、フラグ、カウントが採取される。
【００６０】
図６（Ｂ）に前記第１実施形態の方式によるトレースイメージを示す。本図（Ａ）と比較すると、（Ｂ）の「０４」番地〜「０６」番地の記録が（Ａ）では「０４」番地に縮退し記録される。
【００６１】
この様に、縮退モードでトレースすれば、少なくともイベントフラグの状態についてはより長時間に亘る採取が出来る。従って、動作不良の原因調査や、性能解析の初期段階で調査、解析対象とする処理シーケンスの全体が大規模であっても、縮退モードでトレースを行なえばその結果で処理シーケンス全体の動作のアウトラインを把握出来る。
【００６２】
そして調査、解析対象の処理シーケンスを絞り込み縮退モードオフで詳細なトレースするという様にすれば、動作不良の原因調査や、性能問題の解析を効率的進めることが出来る。
【００６３】
本実施形態の他の実施例ではシフトパスや、これによる読み出しに限定するものではない。又、本実施形態の更に他の実施例は装置のトレースデータ採取方式であり、構成は図４と同様であるが、ロジック部１やロジック部１のレジスタ類の状態を採取する記憶手段８、アドレスカウンタ３やその周辺回路、記録間隔カウンタ４、継続カウンタ５やその周辺回路、制御手段はＬＳＩである必要はなく配線基板上の回路であってもよい。
【００６４】
本実施形態ではイベントフラグに着目し、その値が継続するときに縮退させる様にしている為、トレースデータの書込機能のゲート数の増加が少なくて済む。又、一致検出回路等の遅延時間の増加も少なく、記憶手段８の書込周期へ極力影響しないようにしている。
【００６５】
【発明の効果】
本発明のトレースデータ採取方式は、ＬＳＩや装置の多数のレジスタを複数のレジスタ群にグループ化し、各グループでイベントフラグを選定し、いずれかのイベントフラグがオンしている時のみ、レジスタ群の値を記録間隔と共に記録するので有効なデータとその発生タイミングのみが記録され、従来より長時間に亘るトレースが可能という第１の効果を有する。
【００６６】
本発明のトレースデータ採取方式の第２実施形態は、上記に加え同一のイベントフラグ値が継続する場合には、継続するサイクルの記録を縮退させて記録する手段も有しているので、対象とするＬＳＩや装置のレジスタ状態のアウトラインをより長時間に亘って採取可能という第２の効果も有する。
【図面の簡単な説明】
【図１】本発明の第１実施形態のＬＳＩ内蔵のトレースデータ採取方式を示すブロック図。
【図２】本発明の第１実施形態のトレース具体例の登録動作を説明する為のタイミングチャート。
【図３】（Ａ）は具体例について本発明の第１実施形態の方式で記憶手段８に採取したデータのイメージ図で、（Ｂ）は従来方式で採取したデータのイメージ図。
【図４】本発明の第２実施形態のＬＳＩ内蔵のトレースデータ採取方式を示すブロック図。
【図５】本発明の第２実施形態のトレース具体例の登録動作を説明する為のタイミングチャート。
【図６】（Ａ）は他の具体例について本発明の第２実施形態の方式で記憶手段８に採取したデータのイメージ図で、（Ｂ）は第２実施形態の方式で採取したデータのイメージ図。
【符号の説明】
１    ロジック部
３    アドレスカウンタ
４    記録間隔カウンタ
５    継続カウンタ
６    読出状態フラグ
７    縮退モードフラグ
８    記憶手段
９    読出レジスタ
３２    控えアドレスレジスタ
３３、４２    セレクタ
５１    控えＥＦレジスタ
５２    マッチャ
６１    読出指示フラグ
１１１〜１１４  イベントフラグ
１２１〜１２４  レジスタ群
【図１】
0003711884.tif 000002
【図２】
0003711884.tif 000003
【図３】
0003711884.tif 000004
【図４】
0003711884.tif 000005
【図５】
0003711884.tif 000006
【図６】
0003711884.tif 000007