(57)【要約】【課題】メモリに書き込まれた所定のビット数の複数のデータから検索対象のデータを検索する速度を向上させる。【解決手段】それぞれＮ（Ｎは正の整数）ビットを有する複数の第１のデータから、当該複数の第１のデータの第１〜第Ｎビットをそれぞれ有する複数の第２のデータを生成し、メモリの連続する複数の行アドレスに前記複数の第２のデータをそれぞれ書き込む書込部と、前記複数の第２のデータが書き込まれた前記メモリにおける連続するＮ個の行アドレスごとに、当該Ｎ個の行アドレスの一部の検索対象行アドレスに対応する前記第２のデータに検索対象ビットが含まれるか否かを判定する検索部とを有するデータ処理システムは、第２のデータの読み出し回数を減少でき、検索速度を向上できる。【選択図】    図８
2012159903.tif 000002
【特許請求の範囲】
【請求項１】
それぞれＮ（Ｎは正の整数）ビットを有する複数の第１のデータから、当該複数の第１のデータの第１〜第Ｎビットをそれぞれ有する複数の第２のデータを生成し、メモリの連続する複数の行アドレスに前記複数の第２のデータをそれぞれ書き込む書込部と、
前記複数の第２のデータが書き込まれた前記メモリにおける連続するＮ個の行アドレスごとに、当該Ｎ個の行アドレスの一部の検索対象行アドレスに対応する前記第２のデータに検索対象ビットが含まれるか否かを判定する検索部とを有するデータ処理システム。
【請求項２】
請求項１において、
前記検索部は、前記検索対象行アドレスに対応する前記第２のデータに前記検索対象ビットが含まれると判定したときには、当該検索対象行アドレスを含むＮ個の行アドレスに対応する前記第２のデータから、前記検索対象ビットに対応するビットパターンを有する前記第１のデータを検索するデータ処理システム。
【請求項３】
請求項１または２において、
前記検索対象行アドレスが設定可能であるデータ処理システム。
【請求項４】
請求項１乃至３のいずれかに記載の書込部と検索部とを有し、
プロセッサが実行する命令ごとのアドレスを示すデータが前記第１のデータとして入力され、
前記検索対象ビットに対応するアドレスに格納された命令の実行を確認するデバッグシステム。
【請求項５】
それぞれＮ（Ｎは正の整数）ビットを有する複数の第１のデータから、当該複数の第１のデータの第１〜第Ｎビットをそれぞれ有する複数の第２のデータを生成し、
メモリの連続する複数の行アドレスに前記複数の第２のデータをそれぞれ書き込み、
前記複数の第２のデータが書き込まれた前記メモリにおける連続するＮ個の行アドレスごとに、当該Ｎ個の行アドレスの一部の検索対象行アドレスに対応する前記第２のデータに検索対象ビットが含まれるか否かを判定する、
データ処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、所定のビット数の複数のデータをメモリに書き込んで、当該メモリに書き込まれた複数のデータから検索対象のデータを検索するための、データ処理システム、データ処理装置、及びデータ処理方法に関する。
【背景技術】
【０００２】
所定のビット数の複数のデータを処理するデータ処理装置が知られている（たとえば、特許文献１、２）。かかるデータ処理システムの一例としてのデバッグシステムは、たとえば、検査対象のコンピュータシステムにおいて実行される各種プログラムのデバッグ作業に用いられる。デバッグシステムは、たとえばＩＣＥ（In-Circuit Emulator）などのエミュレータと、これを制御するホストコンピュータとを備える。エミュレータは、所定のビット数の複数のデータとして、検査対象システムのＣＰＵ（Central Processing Unit）が実行する命令ごとの格納アドレス（以下トレースデータ）を順次連続して取り込み、内部のメモリに書き込む。エミュレータは、ホストコンピュータからの要求に応答して、メモリからトレースデータを一部ずつ読み出してホストコンピュータに出力する。すると、ホストコンピュータは、エミュレータから取得したトレースデータから検索対象のトレースデータを検索する。検索対象のトレースデータは、たとえば、実行の有無を確認すべき所定の命令の格納アドレスである。検索の成否により、その命令が実行されたか否かが確認される。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開昭６３−２３１７９８号公報
【特許文献２】特開平３−１２１６２６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
上記のようなデバッグシステムでは、デバッグ作業の効率化のために、トレースデータの検索速度の向上が望まれる。
【０００５】
そこで、本発明の目的は、メモリに書き込まれた所定のビット数の複数のデータから検索対象のデータを検索する速度を向上させるための、データ処理システム等を提供することにある。
【課題を解決するための手段】
【０００６】
上記の目的を達成するために、第１の側面におけるデータ処理システムは、それぞれＮ（Ｎは正の整数）ビットを有する複数の第１のデータから、当該複数の第１のデータの第１〜第Ｎビットをそれぞれ有する複数の第２のデータを生成し、メモリの連続する複数の行アドレスに前記複数の第２のデータをそれぞれ書き込む書込部と、前記複数の第２のデータが書き込まれた前記メモリにおける連続するＮ個の行アドレスごとに、当該Ｎ個の行アドレスの一部の検索対象行アドレスに対応する前記第２のデータに検索対象ビットが含まれるか否かを判定する検索部とを有する。
【発明の効果】
【０００７】
以下に示す実施形態によれば、所定のビット数の複数のデータをメモリに書き込んで、当該メモリに書き込まれた複数のデータから検索対象のデータを検索する速度を向上させることができる。
【図面の簡単な説明】
【０００８】
【図１】本実施形態におけるデータ処理システムの構成例を示す図である。
【図２】トレースデータと書込データの具体例を示す図である。
【図３】書込部８の第１の構成例を示す図である。
【図４】２次元シフトレジスタ３０の構成例を示す図である。
【図５】シフトレジスタＳＲの構成例を示す図である。
【図６】書込部８の動作手順を説明するフローチャート図である。
【図７】書込部８の第２の構成例を示す図である。
【図８】第２の構成例における書込部８の動作タイミングを示す図である。
【図９】検索対象行アドレスと、検索対象ビットの設定方法について説明する図である。
【図１０】書込データの例を示す図である。
【図１１】検索されるトレースデータの例を示す図である。
【図１２】検索部１２の動作手順を説明するフローチャート図である。
【図１３】変形例における検索部１２の動作について説明するフローチャート図である。
【発明を実施するための形態】
【０００９】
以下、図面にしたがって実施形態について説明する。但し、適用される技術的範囲はこれらの実施の形態に限定されず、特許請求の範囲に記載された事項とその均等物まで及ぶものである。
【００１０】
本実施形態において、データ処理システムは、たとえばデバッグシステムに適用される。
【００１１】
図１は、本実施形態におけるデータ処理システムの構成例を示す。
【００１２】
図１（Ａ）には、エミュレータ４とホストコンピュータ６とを有するデバッグシステムの例が示される。このデバッグシステムでは、データ処理システム２０は、エミュレータに４設けられる書込部８と、ホストコンピュータ６に設けられる検索部１２とを有する。ここでは、エミュレータ４が、書込部８を備えたデータ処理装置である。また、ホストコンピュータ６が、検索部１２を備えたデータ処理装置である。
【００１３】
エミュレータ４は、検査対象のターゲットシステム２からトレースデータを取得してその履歴を記録する、たとえばＩＣＥである。ターゲットシステム２は、たとえば、マイクロコンピュータにより制御される、電化製品等のマイクロコンピュータシステムである。ターゲットシステム２では、マイクロコンピュータのＣＰＵが、プログラムメモリに格納された各種プログラムを実行する。プログラムメモリには、各種命令が格納される。トレースデータは、実行される命令ごとの格納アドレスである。エミュレータ４は、トレースデータの履歴を記録するためのメモリ１０と、メモリ１０のアドレス制御部１８を有する。
【００１４】
エミュレータ４では、書込部８が、後述する方法によりトレースデータを処理してメモリ１０に書き込む。書込部８は、メモリ１０にデータを書き込むとき、行アドレスの生成を指示する制御信号をアドレス制御部１８に入力する。アドレス制御部１８は、これに応答して行アドレスを示す信号、書込みを許可するイネーブル信号等を生成してメモリ１０に入力する。こうして、書込部８から転送されるデータがメモリ１０に書き込まれる。メモリ１０は、行アドレスごとに所定ビット長のデータが読み書きされる、たとえばＤＲＡＭ（Dynamic Random Access Memory）などの半導体メモリである。
【００１５】
ホストコンピュータ６は、エミュレータ４が記録したトレースデータの履歴を一部ずつ取得して、その中から検索対象のトレースデータを検索する。ホストコンピュータ６は、たとえば操作入力部１４と表示部１６とを備えるパーソナルコンピュータである。ホストコンピュータ６では、そのＣＰＵがＲＯＭ（Read Only Memory）やハードディスク装置に格納されたデバッグ用プログラムに従って、検索部１２として動作する。検索部１２は、後述する方法により、エミュレータ４が記録したトレースデータの履歴を一部ずつ取得して、検索対象のトレースデータを検索する。このとき、検索部１２は、メモリ１０の読み出しアドレスを示す制御信号をアドレス制御部１８に入力する。アドレス制御部１８は、これに応答して、メモリ１０に読出し行アドレスを入力して対応するデータを読み出し、読み出したデータを検索部１２に転送する。  
【００１６】
図１（Ｂ）は、検索部１２がエミュレータ内に備えられる構成例を示す。この構成例では、検索部１２は、ホストコンピュータ６からの制御信号に応答してトレースデータの検索を行い、検索結果をホストコンピュータ６に出力する。検索部１２は、たとえば、検索用の回路モジュールである。ここでは、データ処理システム２０は、エミュレータに４設けられる書込部８と検索部１２とを有する。また、エミュレータ４が、書込部８または検索部１２を備えたデータ処理装置である。
【００１７】
図１（Ａ）、（Ｂ）において、書込部８は、それぞれＮ（Ｎは正の整数）ビットを有する複数の第１のデータから、当該複数の第１のデータの第１〜第Ｎビットをそれぞれ有する複数の第２のデータを生成する。ここでは、第１のデータは、ターゲットシステム２から入力されるトレースデータである。トレースデータは、ターゲットシステムで実行される命令ごとに、順次連続して入力される。トレースデータは、たとえば８ビット長のビット列のデータである。書込部８は、複数のトレースデータの第１〜第８ビットをそれぞれ有する第２のデータを生成する。そして、書込部８は、メモリ１０の連続する複数の行アドレスに前記複数の第２のデータをそれぞれ書き込む。以下では、メモリ１０に書き込まれる第２のデータを、書込データという。ここでは、メモリ１０は、１ワード８ビットのデータが行アドレスごとに読み書きされる。メモリ１０では、指示された行アドレスに、書込データが書き込まれる。
【００１８】
ここで、図１と併せて図２を参照する。図２（Ａ）には、トレースデータと書込データの具体例が示される。ここでは、連続して書込部８に入力される複数のトレースデータのうち、８個のトレースデータＤ１＿０〜Ｄ１＿７が示される。また、ここでは、トレースデータＤ１＿０〜Ｄ１＿７それぞれの第１〜第８ビット「Ａ０」〜「Ａ７」、「Ｂ０」〜「Ｂ７」、「Ｃ０」〜「Ｃ７」、・・・、「Ｈ０」〜「Ｈ７」が示される。書込部８は、トレースデータＤ１＿０〜Ｄ１＿７の第１〜第８ビットをそれぞれ有する、８個の書込データＤ２＿０〜Ｄ２＿７を生成する。たとえば、書込データＤ２＿０は、トレースデータＤ１＿０〜Ｄ１＿７の第１ビット「Ａ０」、「Ｂ０」、「Ｃ０」、・・・、「Ｈ０」を有する。また、たとえば、書込データＤ２＿１は、トレースデータＤ１＿０〜Ｄ１＿７の第２ビット「Ａ１」・・・、「Ｈ１」を有する。同様に、書込データＤ２＿２〜Ｄ２＿７は、トレースデータＤ１＿０〜Ｄ１＿７の第３ビット「Ａ２」〜「Ｈ２」、第４ビット「Ａ３」〜「Ｈ３」、・・・第８ビット「Ａ７」〜「Ｈ７」を、それぞれ有する。このような書込データの生成方法は、後に詳述される。そして、書込データＤ２＿０〜Ｄ２＿７は、メモリ１０の８個の連続した行アドレスＡｄｄ＿０〜Ａｄｄ＿７に、書き込まれる。
【００１９】
上記のようにしてメモリに書き込まれた複数の書込データの例が、図２（Ｂ）に示される。ここでは、メモリ１０の行アドレスＡｄｄ＿０〜Ａｄｄ＿ｎ（ｎは８より大きい正の整数）に、書込データＤ２＿０〜Ｄ２＿ｎが書き込まれた状態が示される。
【００２０】
ここで、書込部８の詳細な構成例を示す。
【００２１】
図３〜図５は、書込部８の第１の構成例を示す。書込部８は、図３に示すように、２次元シフトレジスタ３０と、クロック生成部３２と、シフト方向制御レジスタ３４とを有する。２次元シフトレジスタ３０は、図４に示すように、８行Ｒ１〜Ｒ８、８列Ｃ１〜Ｃ８の行列状に配置されたシフトレジスタＳＲを有する。２次元シフトレジスタ３０には、クロック生成部３２が生成するクロックＣＬＫと、シフト方向制御レジスタ３４から出力される制御信号ＳＥＬ１とが入力される。２次元シフトレジスタ３０は、クロックＣＬＫと制御信号ＳＥＬ１に応答して、入力されるトレースデータＤ１の行列を入れ替えて書込データＤ２としてメモリ１０に出力する。
【００２２】
第１列Ｃ１のシフトレジスタＳＲには、トレースデータＤ１の第１〜８ビットＤＩ＿０〜ＤＩ＿０７がそれぞれ入力される。ここで、図５に、シフトレジスタＳＲの構成例を示す。図５には、第１列Ｃ１〜第３列Ｃ３、第１行Ｒ１〜第３行Ｒ３のシフトレジスタＳＲが示される。各シフトレジスタＳＲは、セレクタ４０とＤ型フリップフロップ回路４２とを有する。各シフトレジスタＳＲにおいて、セレクタ４０は、制御信号ＳＥＬ１がたとえば「０」のときに、クロックＣＬＫに同期して入力方向（実線で図示）のデータ転送を受け付ける。また、セレクタ４０は、制御信号ＳＥＬ１がたとえば「１」のときに、クロックＣＬＫに同期して、出力方向（点線で図示）のデータ転送を受け付ける。
【００２３】
このようなシフトレジスタＳＲの動作により、第１列Ｃ１のシフトレジスタＳＲに入力されたトレースデータＤ１は、クロックＣＬＫに同期して、隣接する列のシフトレジスタに順次転送される。このようにして、８クロックで、８個のトレースデータＤ１が２次元シフトレジスタ３０に格納される。
【００２４】
次いで、２次元シフトレジスタ３０に格納された８個のトレースデータＤ１は、クロックＣＬＫに同期して、隣接する行のシフトレジスタＳＲに、書込データＤ２として順次転送される。そして、第８行Ｒ８のシフトレジスタＳＲから、書込データの第１〜第８ビットＤＯ＿０〜ＤＯ＿７が順次出力される。このようにして、８クロックで、８個の書込データＤ２が２次元シフトレジスタから出力される。
【００２５】
こうして、１６クロックで８個のトレースデータＤ１から８個の書込データＤ２が生成される。
【００２６】
図６は、書込部８の動作手順を説明するフローチャート図である。書込部８は、ターゲットシステム２から、トレースデータＤ１が入力される（Ｓ２）。書込部８は、トレースデータＤ１を、２次元シフトレジスタ３０に格納する（Ｓ４）。そして、書込部８は、１ワード（８ビット）の書込データＤ２を生成可能なトレースデータＤ１、つまり８個のトレースデータＤ１が２次元シフトレジスタ３０に格納されたかを判定する（Ｓ６）。手順Ｓ６での判定結果が「Ｎｏ」のとき、書込部８は、手順Ｓ２、Ｓ４を実行する。このようにして、８個のトレースデータＤ１が２次元シフトレジスタ３０に格納される。
【００２７】
一方、手順Ｓ６での判定結果が「Ｙｅｓ」のとき、書込部８は、２次元シフトレジスタ３０からトレースデータＤ１の行列を入れ替えた書込データＤ２を出力する（Ｓ８）。次いで、書込部８は、メモリ１０の連続する複数の行アドレスに書込データＤ２を書き込む（Ｓ９）。そして、書込部８は、２次元シフトレジスタ３０内のデータの有無を確認する（Ｓ１０）。２次元シフトレジスタ３０内にデータが残っているときには（Ｓ１０のＮｏ）、書込部８は、行アドレスを１アドレスインクリメントさせ（Ｓ１２）、手順Ｓ８、Ｓ９を実行する。一方、２次元シフトレジスタ３０内にデータが残っていないときには（Ｓ１０のＹｅｓ）、書込部８は、手順Ｓ１４に進む。このようにして、手順Ｓ８、Ｓ９が、２次元シフトレジスタ３０内のデータがなくなるまで実行され、８個のトレースデータＤ１から生成された８個の書込データＤ２がメモリ１０に書き込まれる。
【００２８】
手順Ｓ１４で、書込部８は、メモリ１０の空き容量の有無と、トレースデータＤ１の入力の終了を確認する。メモリの空き容量があり、かつ、トレースデータＤ１の入力が終了していないとき（Ｓ１４のＮｏ）、手順Ｓ２〜Ｓ１０を実行する。一方、メモリ１０の空き容量がないか、または、トレースデータＤ１の入力が終了したとき（Ｓ１４のＹｅｓ）、書込部８は、本処理を終了する。
【００２９】
このようにして、それぞれ８ビットを有する複数のトレースデータＤ１から、当該複数のトレースデータＤ１の第１〜第８ビットをそれぞれ有する複数の書込データＤ２が生成され、メモリ１０の連続する複数の行アドレスに前記複数の書込データＤ２がそれぞれ書き込まれる。
【００３０】
図７は、書込部８の第２の構成例を示す。この例では、書込部８は、並列動作する２つの２次元シフトレジスタ３０＿１、３０＿２を有する。書込部８は、２次元シフトレジスタ３０＿１、３０＿２に加え、セレクタ３６、３８と、セレクタ制御レジスタ５０とを有する。２次元シフトレジスタ３０＿１、３０＿２は、それぞれ、図４で示した第１の構成例における２次元シフトレジスタ３０と同じ構成を有する。セレクタ３６は、セレクタ制御レジスタ５０が出力する制御信号ＳＥＬ２に応答して、トレースデータＤ１の入力先をシフトレジスタ３０＿１、３０＿２のいずれかに切り替える。また、セレクタ３６は、セレクタ制御レジスタ５０が出力する制御信号ＳＥＬ２に応答して、メモリ１０に書き込む書込データＤ２の出力元を、シフトレジスタ３０＿１、３０＿２のいずれかに切り替える。
【００３１】
図８は、第２の構成例における書込部８の動作を説明するタイミング図である。図８（Ａ）には、２次元シフトレジスタ３０＿１または３０＿２に入力されるトレースデータＤ１が示される。図８（Ｂ）には制御信号ＳＥＬ２が示される。図８（Ｃ）、（Ｄ）には、制御信号ＳＥＬ２の値に対応して、セレクタ３６、３８の接続先がそれぞれ示される。また、図８（Ｅ）、（Ｆ）には、制御信号ＳＥＬ２の値に対応して、２次元シフトレジスタ３０＿１、３０＿２の動作がそれぞれ示される。そして、図８（Ｇ）には、２次元シフトレジスタ３０＿１または３０＿２から出力される書込データＤ２が示される。
【００３２】
図８（Ｂ）〜（Ｆ）に示すように、制御信号ＳＥＬ２の値が、たとえば２次元シフトレジスタ３０＿１を示す「０」のとき、セレクタ３６は２次元シフトレジスタ３０＿１に接続される。そして、２次元シフトレジスタ３０＿１は、トレースデータを格納する。よって、図８（Ａ）に示すように、トレースデータＤ１＿８、・・・、Ｄ１＿１４、Ｄ１＿１５が２次元シフトレジスタ３０＿１に格納される。このとき、一方で、セレクタ３８は２次元シフトレジスタ３０＿２に接続される。そして、２次元シフトレジスタ３０＿２は、書込データを出力する。よって、図８（Ｇ）に示すように、書込データＤ２＿０、・・・、Ｄ２＿６、Ｄ２＿７が２次元シフトレジスタ３０＿２から出力される。
【００３３】
次に、図８（Ｂ）〜（Ｆ）に示すように、制御信号ＳＥＬ２の値が、２次元シフトレジスタ３０＿２を示す「１」のとき、セレクタ３６は２次元シフトレジスタ３０＿２に接続される。そして、２次元シフトレジスタ３０＿２は、トレースデータを格納する。よって、図８（Ａ）に示すように、トレースデータＤ１＿１６、Ｄ１＿１７、・・・、Ｄ１＿２３が２次元シフトレジスタ３０＿２に格納される。このとき、一方で、セレクタ３８は２次元シフトレジスタ３０＿１に接続される。そして、２次元シフトレジスタ３０＿１は、書込データを出力する。よって、図８（Ｇ）に示すように、書込データＤ２＿８、Ｄ２＿９、・・・、Ｄ２＿１５が２次元シフトレジスタ３０＿２から出力される。
【００３４】
このように、セレクタ３６、３８は、２次元シフトレジスタ３０＿１、３０＿２のうち、互いに異なる方を選択する。これにより、２次元シフトレジスタ３０＿１、３０＿２の一方が入力されるトレースデータＤ１を格納するときに、他方が格納済みのトレースデータＤ１を書込データＤ２として出力する。
【００３５】
上述した第１の構成例では、単一の２次元シフトレジスタ３０により、１６クロックで８個のトレースデータＤ１が８個の書込データＤ２に変換された。これに対し、第２の構成例によれば、２つの２次元シフトレジスタ３０＿１、３０＿２が並列動作することで、１６クロックで１６個のトレースデータＤ１が１６個の書込データＤ２に変換される。よって、データ処理速度が向上する。
【００３６】
次に、図１、図２を参照して、検索部１２について説明がなされる。検索部１２は、複数の第２のデータ（つまり、書込データＤ２＿０〜Ｄ２＿ｎ）が書き込まれたメモリ１０における連続する８個の行アドレスごとに、当該８個の行アドレスの一部の検索対象行アドレスに対応する書込データに検索対象ビットが含まれるか否かを判定する。たとえば、図２（Ｂ）の例において、検索部１２は、行アドレスＡｄｄ＿０〜Ａｄｄ＿７（以下、行アドレス群ＡＧ［０−７］という）、行アドレス群ＡＧ［８−１５］、・・・ごとに、当該８個の行アドレスの一部の検索対象行アドレスに対応する書込データに検索対象ビットが含まれるか否かを判定する。
【００３７】
検索対象行アドレスと、検索対象ビットは、検索すべきトレースデータのビットパターンに基づき操作者により決定され、操作入力部１４からホストコンピュータ６に入力される。検索すべきビットパターンは、たとえば、ターゲットシステム２での実行の有無を確認すべき命令の格納アドレスである。検索対象行アドレスは、たとえば、８個の行アドレスにおいて、第１〜８アドレスのいずれか１個以上の行アドレスである。検索対象行アドレスの数は、操作者により入力され、設定される。また、検索対象ビットは、「１」または「０」のいずれかであり、検索すべきビットパターンに対応した値が、操作者により設定される。あるいは、検索部１２は、検索すべきビットパターンが入力されると、検索対象行アドレスと検索対象ビットとを求める処理を行ってもよい。
【００３８】
図９は、検索対象行アドレスと、検索対象ビットの設定方法について説明する図である。図９（Ａ）は検索すべきトレースデータのビットパターンの例を示す。ここでは、トレースデータは、上位４ビットと下位４ビットで１６進数のアドレスを示す。たとえば、２０ｈ番台のアドレスを示すトレースデータは、上位４ビットが、上位ビットから順に、それぞれ「０、０、１、０」である。この場合、検索すべきビットパターンＢＰ１は、上位４ビットが「０、０、１、０」であるビットパターンである。また、たとえば、３０ｈ番台のアドレスを示すトレースデータは、上位４ビットが、上位ビットから順に、それぞれ「０、０、１、１」である。この場合、検索すべきビットパターンＢＰ２は、上位４ビットが「０、０、１、１」であるビットパターンである。
【００３９】
図９（Ｂ）は、検索すべきビットパターンＢＰ１がメモリ１０に書き込まれた状態を示す。ここでは、ビットパターンＢＰ１を含む８個のトレースデータから生成された８個の書込データが、行アドレスＡｄｄ＿０〜Ａｄｄ＿７に書き込まれた状態が示される。ここで、ビットパターンＢＰ１の低位ビット側からカウントして５番目の第５ビット「１」を含む書込データは、第５行の行アドレスＡｄｄ＿４に格納される。よって、この場合、検索対象行アドレスは第５行アドレスである。また、検索対象ビットは「１」である。よって、８個の書込データのうち、第５行アドレスに対応する書込データＤ２＿４に「１」が含まれるかを判定することで、その８個の書込データに検索対象ビットパターンＢＰ１が含まれるかが判定される。
【００４０】
また、図９（Ｃ）は、検索すべきビットパターンＢＰ２がメモリ１０に書き込まれた状態を示す。ここでは、ビットパターンＢＰ２を含む８個のトレースデータから生成された８個の書込データが、行アドレスＡｄｄ＿０〜Ａｄｄ＿７に書き込まれた状態が示される。ここで、ビットパターンＢＰ２の第５ビット「１」、第６ビット「１」を含む書込データは、第５行の行アドレスＡｄｄ＿４と、第６行の行アドレスＡｄｄ＿５とにそれぞれ格納される。よって、この場合、検索対象行アドレスは、第５行アドレスと第６行アドレスである。また、第５行アドレスと第６行アドレスの検索対象ビットは、それぞれ「１」である。よって、８個の書込データのうち、第５、第６行アドレスにそれぞれ対応する書込データＤ２＿４、Ｄ２＿５に「１」が含まれるかを判定することで、その８個の書込データに検索対象ビットパターンＢＰ２が含まれるかが判定される。
【００４１】
次に、検索の具体例を、図１０〜図１２を用いて示す。
【００４２】
図１０は、書込データの例を示す。図１０（Ａ）は、検索すべきビットパターンＢＰ２を示す。図１０（Ｂ）は、メモリ１０の３２個の行アドレスＡｄｄ＿０〜Ａｄｄ＿３１に、３２個の書込データＤ２＿０〜Ｄ２＿３１が書き込まれた状態を示す。図１１は、検索すべきビットパターンを含むトレースデータの例を示す。また、図１２は、検索部１２の動作手順を説明するフローチャート図である。図１２の手順に従って、適宜図１１を参照しながら、図１０の例における検索動作を説明する。
【００４３】
まず、操作者により、検索すべきビットパターン、検索対象行アドレス、及び検索対象ビット値が入力され、設定される（Ｓ３０）。検索すべきビットパターンは、８ビットのうち任意のビットを特定したものであればよい。たとえば、図１０（Ａ）のビットパターンＢＰ２は、上位４ビット「０、０、１、１」が指定されるともに、下位４ビットは任意のビットである。また、図１０（Ａ）に示すビットパターンＢＰ２に対応する検索対象行は、図８（Ｂ）で示したように、低位ビット側からカウントして５番目と６番目の、第５、第６行アドレスである。また、検索対象ビットは「１」である。
【００４４】
あるいは、検索部１２は、たとえば、検索すべきビットパターンＢＰ２から、「１」を有するビット位置を抽出し、そのビット位置に対応する検索行アドレスを決定するとともに、検索対象ビットを「１」とする処理を行ってもよい。そうすることで、操作者が検索すべきビットパターンを入力するだけで、検索対象行アドレスと検索対象ビットとが設定される。
【００４５】
次いで、検索部１２は、メモリ１０から、８個の行アドレス群ごとに、検索対象行アドレスに対応する書込データを読み出す（Ｓ３２）。図１０（Ｂ）の例では、行アドレスＡｄｄ＿０〜Ａｄｄ＿７を有する行アドレス群ＡＧ［０−７］において、検索対象行アドレスは、第５行アドレスＡＤＤ＿４と、第６行アドレスＡＤＤ＿５である。よって、それぞれに対応する、書込データＤ２＿４、Ｄ２＿５が読み出される（矢印Ａｒ１、２）。
【００４６】
次いで、検索部１２は、読み出した書込データが検索対象ビット値を有するかを判定する（Ｓ３４）。読み出した書込データが検索対象ビット値を有する場合には、行アドレス群ＡＧ［０−７］の書込データＤ２＿０〜Ｄ２＿７に、検索すべきビットパターンＢＰ２が含まれる蓋然性が有ると判断できる。一方、読み出した書込データが検索対象ビット値を有さない場合には、行アドレス群ＡＧ［０−７］の書込データＤ２＿０〜Ｄ２＿７に、検索すべきビットパターンＢＰ２が含まれないと判断できる。図１０（Ｂ）の例では、書込データＤ２＿５、Ｄ２＿６のうち、書込データＤ２＿６のビット値はすべて「０」であり、検索対象ビット「１」を有さない。よって、手順Ｓ３４の判定結果は、「Ｎｏ」となる。よって、検索部１２は、手順Ｓ３６を実行する。
【００４７】
検索部１２は、読出し行アドレスを、１つの行アドレス群だけインクリメントさせる（Ｓ３６）。そして、次の行アドレス群において、検索対象行アドレスに対応する書込データを読み出す（Ｓ３２）。図１０（Ｂ）の例では、検索部１２は、検索対象行アドレスアドレスＡＤＤ＿４、ＡＤＤ＿５をそれぞれ１つの行アドレス群、つまり８行分インクリメントさせ、検索対象行アドレスアドレスＡＤＤ＿１２、ＡＤＤ＿１３を求める。そして、検索部１２は、行アドレス群ＡＧ［８−１５］において、検索対象行アドレスアドレスＡＤＤ＿１２、ＡＤＤ＿１３に対応する書込データＤ２＿１２、Ｄ２＿１３を読み出す（矢印Ａｒ３、４）。
【００４８】
次いで、検索部１２は、読み出した書込データが検索対象ビットを有するかを判定する（Ｓ３４）。図１０（Ｂ）では、書込データＤ２＿１３がすべて「０」であり、検索対象ビット「１」を有さない。よって、手順Ｓ３４の判定結果は、「Ｎｏ」となる。よって、検索部１２は、手順Ｓ３６を実行する。
【００４９】
検索部１２は、読出し行アドレスを、１つの行アドレス群だけインクリメントさせる（Ｓ３６）。そして、次の行アドレス群において、検索対象行アドレスに対応する書込データを読み出す（Ｓ３２）。図１０（Ｂ）では、検索部１２は、検索対象行アドレスアドレスＡＤＤ＿１２、ＡＤＤ＿１３を８行分インクリメントさせ、検索対象行アドレスアドレスＡＤＤ＿２０、ＡＤＤ＿２１を求める。そして、検索部１２は、行アドレス群ＡＧ［１６−２３］において、検索対象行アドレスアドレスＡＤＤ＿２０、ＡＤＤ＿２１に対応する書込データＤ２＿２０、Ｄ２＿２１を読み出す（矢印Ａｒ５、６）。
【００５０】
次いで、検索部１２は、読み出した書込データが検索対象ビットを有するかを判定する（Ｓ３４）。図１０（Ｂ）では、書込データＤ２＿２１、Ｄ２＿２２は検索対象ビット「１」を含む。よって、手順Ｓ３４の判定結果は、「Ｙｅｓ」となる。この場合、行アドレス群ＡＧ［１６−２３］に書き込まれた書込データＤ２＿１６〜Ｄ２＿２３には、検索すべきビットパターンＢＰ２が含まれる蓋然性が有ると判断できる。よって、検索部１２は、手順Ｓ３８を実行する。
【００５１】
検索部１２は、行アドレス群ＡＧ［１６−２３］に書き込まれた書込データＤ２＿１６〜Ｄ２＿２３を読み出して行列を入れ替え、もとのトレースデータを復元する（Ｓ３８）。このとき、検索部１２は、書込データＤ２＿１６〜Ｄ２＿２３それぞれの第１〜８ビット目を有する８ビット長のデータを生成することで、書込データＤ２＿１６〜Ｄ２＿２３が生成される元となったトレースデータを復元できる。なお、検索部１２がホストコンピュータ６に設けられる場合、たとえば、ホストコンピュータ６のＲＡＭ（Random Access Memory）に書込データを保持させて、行列入れ替え手順を実行する。また、検索部１２がエミュレータ４に設けられる場合、たとえば図４で示したような２次元シフトレジスタを用いて行列を入れ替える。
【００５２】
このとき復元されるトレースデータＤ１＿１６〜Ｄ１＿２３が、図１１（Ａ）に示される。検索部１２は、復元したトレースデータから、検索対象ビットに対応するビットパターンＢＰ２を有するトレースデータを検索する（Ｓ４０）。この場合、トレースデータＤ１＿１６〜Ｄ１＿２３のうち、トレースデータＤ１＿２１は、第５、第６ビットに「１」を有する。しかし、第７ビットも「１」であり、第８ビットが「０」であるので、トレースデータＤ１＿２１は、上位４ビットが「０、１、１、１」であり、７０ｈ番台のアドレスを有するトレースデータである。よって、ビットパターンＢＰ２が示すような、３０ｈ番台のアドレスを有するトレースデータではない。よって、検索部１２は、検索すべきビットパターンＢＰ２を有するトレースデータが検索されないと判定し（Ｓ４４のＮｏ）、再度、手順Ｓ３６を実行する。
【００５３】
検索部１２は、読出し行アドレスを、１つの行アドレス群だけインクリメントさせ（Ｓ３６）、次の行アドレス群において、検索対象行アドレスに対応する書込データを読み出す（Ｓ３２）。図１０（Ｂ）の例では、検索部１２は、検索対象行アドレスアドレスＡＤＤ＿２０、ＡＤＤ＿２１を８行分インクリメントさせ、行アドレス群ＡＧ［２３−３１］において検索対象行アドレスアドレスＡＤＤ＿２８、ＡＤＤ＿２９に対応する書込データＤ２＿２８、Ｄ２＿２９を読み出す（矢印Ａｒ７、８）。
【００５４】
次いで、検索部１２は、読み出した書込データが検索対象ビット値を有するかを判定する（Ｓ３４）。図１０（Ｂ）では、書込データＤ２＿２９、Ｄ２＿３０は検索対象ビット「１」を有する。よって、手順Ｓ３４の判定結果は、「Ｙｅｓ」となる。よって、検索部１２は、行アドレス群ＡＧ［２４−３１］に書き込まれた書込データＤ２＿２４〜Ｄ２＿３１を読み出して行列を入れ替え、もとのトレースデータを復元する（Ｓ３８）。このとき復元されるトレースデータＤ１＿２４〜Ｄ１＿３１が、図１１（Ｂ）に示される。そして、検索部１２は、復元したトレースデータから、検索対象ビットに対応するビットパターンＢＰ２を有するトレースデータを検索する（Ｓ４０）。この場合、トレースデータＤ１＿２８は、第５、第６ビットが「１」であり、第７、第８ビットが「０」であるので、上位４ビットが「０、０、１、１」の３０ｈ番台のアドレスを有するトレースデータである。すなわち、トレースデータＤ１＿２８は、検索すべきビットパターンＢＰ２を有するトレースデータである。よって、検索部１２は、検索対象のビットパターンＢＰを有するトレースデータが検索されたと判定し（Ｓ４４のＹｅｓ）、検索手順を終了する。また、たとえば、検索部１２は、たとえば検索結果を表示部１６に表示する。これにより、操作者は、検査対処の命令が実行されたことを確認でき、適宜デバッグ作業を行うことができる。
【００５５】
ここで、たとえばトレースデータを書込データに変換せずに、メモリ１０の行アドレスごとに格納する場合と、上述した実施形態とを比較する。トレースデータをメモリ１０の行アドレスごとに格納する場合、検索部は、メモリ１０の行アドレスを１行ずつインクリメントさせてトレースデータを１つずつ読み出し、検索すべきビットパターンに一致するか否かを判定することで、検索を行う。よって、その分、検索時間が増大する。これに対し、上述の実施形態によれば、８個の行アドレス群ごとに、そのうちの一部の検索対象行アドレスから書込データを読み出して検索対象ビットが含まれるかを判定する。よって、検索対象ビットが含まれない行アドレス群では、検索対象行アドレス以外の行アドレスから書込データを読み出すことなく、次の行アドレス群の検索に移行できる。よって、検索時間が短縮される。
【００５６】
次に、変形例について説明する。変形例では、検索部１２は、設定される検索対象行アドレスの数を、行アドレス群における行アドレスの個数の１／２、たとえば８行の１／２である４行以下に抑制する。たとえば、操作者により５行以上の検索対象行アドレスが設定された場合、検索部１２は、５行のうち４行の検索対象行アドレスについて、検索対象ビットの検索を行う。検索対象行アドレスとして選択する４行は、たとえば、高位ビットあるいは低位ビットから順に決定される。また、たとえば、設定入力された検索対象行アドレス以外を検索対象行アドレスとしてもよい。あるいは、検索対象行アドレスの再設定を促す情報を表示部１６による表示など出力してもよい。さらに、検索対象行アドレスを変更した場合において、検索対象ビットの再設定を促してもよい。たとえば、設定入力された検索対象行アドレス以外を検索対象行アドレスとした場合であって、検索対処ビットが当初入力された値と異なる場合には、操作者はこれを再設定することができる。
【００５７】
図１３は、変形例における検索部１２の動作について説明するフローチャート図である。この動作手順は、図１２で示した手順Ｓ３０の代わりに実行される。検索部１２は、検索すべきビットパターン、検索対象行アドレス、及び検索対象ビットの入力を受け付ける（Ｓ３００）。そして、検索対象行アドレスが、行アドレス群の行数「８」の１／２を上回る「５」以上であるかを判定する（Ｓ３０２）。判定結果が「Ｙｅｓ」のとき、検索部１２は、検索対象行アドレスを変更する（Ｓ３０４）。そして、検索部１２は、検索対象ビットの変更入力を促す（Ｓ３０６）。
【００５８】
このようにすることで、行アドレス群のうちデータ読み出しを省略する行アドレスの数を一定以上に保ち、検索速度を向上させることが可能になる。
【００５９】
なお、上述の実施形態では、データ処理システム２０がデバッグシステムに適用される場合を示した。しかしながら、所定数のビットを有する複数のデータから所望のビットパターンを有するデータを検索する場合に、本実施形態は適用可能である。たとえば、所定の桁数を有する車両のプレートナンバーを示す複数のデータから、特定のプレートナンバーを検索する車両検索システムに、本実施形態は適用できる。あるいは、所定の桁数を有する電話番号を示す複数のデータから、特定の電話番号を検索する電話番号検索システムに、本実施形態は適用できる。
【００６０】
以上の実施の形態をまとめると、次の付記のとおりである。
【００６１】
（付記１）
それぞれＮ（Ｎは正の整数）ビットを有する複数の第１のデータから、当該複数の第１のデータの第１〜第Ｎビットをそれぞれ有する複数の第２のデータを生成し、メモリの連続する複数の行アドレスに前記複数の第２のデータをそれぞれ書き込む書込部と、
前記複数の第２のデータが書き込まれた前記メモリにおける連続するＮ個の行アドレスごとに、当該Ｎ個の行アドレスの一部の検索対象行アドレスに対応する前記第２のデータに検索対象ビットが含まれるか否かを判定する検索部とを有するデータ処理システム。
【００６２】
（付記２）
付記１において、
前記検索部は、前記検索対象行アドレスに対応する前記第２のデータに前記検索対象ビットが含まれると判定したときには、当該検索対象行アドレスを含むＮ個の行アドレスに対応する前記第２のデータから、前記検索対象ビットに対応するビットパターンを有する前記第１のデータを検索するデータ処理システム。
【００６３】
（付記３）
付記２において、
前記検索対象行アドレスが設定可能であるデータ処理システム。
【００６４】
（付記４）
付記１乃至３のいずれかにおいて、
前記検索対象行アドレスの数がＮ／２以下であるデータ処理システム。
【００６５】
（付記５）
それぞれＮ（Ｎは正の整数）ビットを有する複数の第１のデータから、当該複数の第１のデータの第１〜第Ｎビットをそれぞれ有する複数の第２のデータを生成し、メモリの連続する複数の行アドレスに前記複数の第２のデータをそれぞれ書き込む書込部を有し、
前記複数の第２のデータが書き込まれた前記メモリにおける連続するＮ個の行アドレスごとに、当該Ｎ個の行アドレスの一部の検索対象行アドレスに対応する前記第２のデータに検索対象ビットが含まれるか否かが判定されるデータ処理装置。
【００６６】
（付記６）
それぞれＮ（Ｎは正の整数）ビットを有する複数の第１のデータから、当該複数の第１のデータの第１〜第Ｎビットをそれぞれ有する複数の第２のデータを生成する書込部により、メモリの連続する複数の行アドレスに前記複数の第２のデータがそれぞれ書き込まれ、
前記メモリにおける連続するＮ個の行アドレスごとに、当該Ｎ個の行アドレスの一部の検索対象行アドレスに対応する前記第２のデータに検索対象ビットが含まれるか否かを判定する検索部を有するデータ処理装置。
【００６７】
（付記７）
付記１乃至４のいずれかに記載の書込部と検索部とを有し、
外部装置のプロセッサが実行する命令ごとの当該外部装置のメモリにおけるアドレスが前記第１のデータとして入力され、
前記検索対象行アドレス及び前記検索対象ビットは、実行されたか否かを確認すべき前記命令の前記アドレスに対応する、
デバッグシステム。
【００６８】
（付記８）
付記５または６において、
前記第１のデータは、外部装置のプロセッサが実行する命令ごとの当該外部装置のメモリにおけるアドレスを示し、
前記検索対象行アドレス及び前記検索対象ビットは、実行されたか否かを確認すべき前記命令の前記アドレスに対応する、
データ処理装置。
【００６９】
（付記９）
それぞれＮ（Ｎは正の整数）ビットを有する複数の第１のデータから、当該複数の第１のデータの第１〜第Ｎビットをそれぞれ有する複数の第２のデータを生成し、
メモリの連続する複数の行アドレスに前記複数の第２のデータをそれぞれ書き込み、
前記複数の第２のデータが書き込まれた前記メモリにおける連続するＮ個の行アドレスごとに、当該Ｎ個の行アドレスの一部の検索対象行アドレスに対応する前記第２のデータに検索対象ビットが含まれるか否かを判定する、
データ処理方法。
【００７０】
（付記１０）
付記９において、
前記検索対象行アドレスに対応する前記第２のデータに前記検索対象ビットが含まれると判定したときには、当該検索対象行アドレスを含むＮ個の行アドレスに対応する前記第２のデータから、前記検索対象ビットに対応するビットパターンを有する前記第１のデータを検索する、
データ処理方法。  
【符号の説明】
【００７１】
８：書込部、１０：メモリ、１２：検索部、２０：データ処理システム
【図１】
2012159903.tif 000003
【図２】
2012159903.tif 000004
【図３】
2012159903.tif 000005
【図４】
2012159903.tif 000006
【図５】
2012159903.tif 000007
【図６】
2012159903.tif 000008
【図７】
2012159903.tif 000009
【図８】
2012159903.tif 000010
【図９】
2012159903.tif 000011
【図１０】
2012159903.tif 000012
【図１１】
2012159903.tif 000013
【図１２】
2012159903.tif 000014
【図１３】
2012159903.tif 000015