説明

データ処理システム、データ処理装置、及びデータ処理方法

【課題】メモリに書き込まれた所定のビット数の複数のデータから検索対象のデータを検索する速度を向上させる。
【解決手段】それぞれN(Nは正の整数)ビットを有する複数の第1のデータから、当該複数の第1のデータの第1〜第Nビットをそれぞれ有する複数の第2のデータを生成し、メモリの連続する複数の行アドレスに前記複数の第2のデータをそれぞれ書き込む書込部と、前記複数の第2のデータが書き込まれた前記メモリにおける連続するN個の行アドレスごとに、当該N個の行アドレスの一部の検索対象行アドレスに対応する前記第2のデータに検索対象ビットが含まれるか否かを判定する検索部とを有するデータ処理システムは、第2のデータの読み出し回数を減少でき、検索速度を向上できる。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、所定のビット数の複数のデータをメモリに書き込んで、当該メモリに書き込まれた複数のデータから検索対象のデータを検索するための、データ処理システム、データ処理装置、及びデータ処理方法に関する。
【背景技術】
【0002】
所定のビット数の複数のデータを処理するデータ処理装置が知られている(たとえば、特許文献1、2)。かかるデータ処理システムの一例としてのデバッグシステムは、たとえば、検査対象のコンピュータシステムにおいて実行される各種プログラムのデバッグ作業に用いられる。デバッグシステムは、たとえばICE(In-Circuit Emulator)などのエミュレータと、これを制御するホストコンピュータとを備える。エミュレータは、所定のビット数の複数のデータとして、検査対象システムのCPU(Central Processing Unit)が実行する命令ごとの格納アドレス(以下トレースデータ)を順次連続して取り込み、内部のメモリに書き込む。エミュレータは、ホストコンピュータからの要求に応答して、メモリからトレースデータを一部ずつ読み出してホストコンピュータに出力する。すると、ホストコンピュータは、エミュレータから取得したトレースデータから検索対象のトレースデータを検索する。検索対象のトレースデータは、たとえば、実行の有無を確認すべき所定の命令の格納アドレスである。検索の成否により、その命令が実行されたか否かが確認される。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開昭63−231798号公報
【特許文献2】特開平3−121626号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
上記のようなデバッグシステムでは、デバッグ作業の効率化のために、トレースデータの検索速度の向上が望まれる。
【0005】
そこで、本発明の目的は、メモリに書き込まれた所定のビット数の複数のデータから検索対象のデータを検索する速度を向上させるための、データ処理システム等を提供することにある。
【課題を解決するための手段】
【0006】
上記の目的を達成するために、第1の側面におけるデータ処理システムは、それぞれN(Nは正の整数)ビットを有する複数の第1のデータから、当該複数の第1のデータの第1〜第Nビットをそれぞれ有する複数の第2のデータを生成し、メモリの連続する複数の行アドレスに前記複数の第2のデータをそれぞれ書き込む書込部と、前記複数の第2のデータが書き込まれた前記メモリにおける連続するN個の行アドレスごとに、当該N個の行アドレスの一部の検索対象行アドレスに対応する前記第2のデータに検索対象ビットが含まれるか否かを判定する検索部とを有する。
【発明の効果】
【0007】
以下に示す実施形態によれば、所定のビット数の複数のデータをメモリに書き込んで、当該メモリに書き込まれた複数のデータから検索対象のデータを検索する速度を向上させることができる。
【図面の簡単な説明】
【0008】
【図1】本実施形態におけるデータ処理システムの構成例を示す図である。
【図2】トレースデータと書込データの具体例を示す図である。
【図3】書込部8の第1の構成例を示す図である。
【図4】2次元シフトレジスタ30の構成例を示す図である。
【図5】シフトレジスタSRの構成例を示す図である。
【図6】書込部8の動作手順を説明するフローチャート図である。
【図7】書込部8の第2の構成例を示す図である。
【図8】第2の構成例における書込部8の動作タイミングを示す図である。
【図9】検索対象行アドレスと、検索対象ビットの設定方法について説明する図である。
【図10】書込データの例を示す図である。
【図11】検索されるトレースデータの例を示す図である。
【図12】検索部12の動作手順を説明するフローチャート図である。
【図13】変形例における検索部12の動作について説明するフローチャート図である。
【発明を実施するための形態】
【0009】
以下、図面にしたがって実施形態について説明する。但し、適用される技術的範囲はこれらの実施の形態に限定されず、特許請求の範囲に記載された事項とその均等物まで及ぶものである。
【0010】
本実施形態において、データ処理システムは、たとえばデバッグシステムに適用される。
【0011】
図1は、本実施形態におけるデータ処理システムの構成例を示す。
【0012】
図1(A)には、エミュレータ4とホストコンピュータ6とを有するデバッグシステムの例が示される。このデバッグシステムでは、データ処理システム20は、エミュレータに4設けられる書込部8と、ホストコンピュータ6に設けられる検索部12とを有する。ここでは、エミュレータ4が、書込部8を備えたデータ処理装置である。また、ホストコンピュータ6が、検索部12を備えたデータ処理装置である。
【0013】
エミュレータ4は、検査対象のターゲットシステム2からトレースデータを取得してその履歴を記録する、たとえばICEである。ターゲットシステム2は、たとえば、マイクロコンピュータにより制御される、電化製品等のマイクロコンピュータシステムである。ターゲットシステム2では、マイクロコンピュータのCPUが、プログラムメモリに格納された各種プログラムを実行する。プログラムメモリには、各種命令が格納される。トレースデータは、実行される命令ごとの格納アドレスである。エミュレータ4は、トレースデータの履歴を記録するためのメモリ10と、メモリ10のアドレス制御部18を有する。
【0014】
エミュレータ4では、書込部8が、後述する方法によりトレースデータを処理してメモリ10に書き込む。書込部8は、メモリ10にデータを書き込むとき、行アドレスの生成を指示する制御信号をアドレス制御部18に入力する。アドレス制御部18は、これに応答して行アドレスを示す信号、書込みを許可するイネーブル信号等を生成してメモリ10に入力する。こうして、書込部8から転送されるデータがメモリ10に書き込まれる。メモリ10は、行アドレスごとに所定ビット長のデータが読み書きされる、たとえばDRAM(Dynamic Random Access Memory)などの半導体メモリである。
【0015】
ホストコンピュータ6は、エミュレータ4が記録したトレースデータの履歴を一部ずつ取得して、その中から検索対象のトレースデータを検索する。ホストコンピュータ6は、たとえば操作入力部14と表示部16とを備えるパーソナルコンピュータである。ホストコンピュータ6では、そのCPUがROM(Read Only Memory)やハードディスク装置に格納されたデバッグ用プログラムに従って、検索部12として動作する。検索部12は、後述する方法により、エミュレータ4が記録したトレースデータの履歴を一部ずつ取得して、検索対象のトレースデータを検索する。このとき、検索部12は、メモリ10の読み出しアドレスを示す制御信号をアドレス制御部18に入力する。アドレス制御部18は、これに応答して、メモリ10に読出し行アドレスを入力して対応するデータを読み出し、読み出したデータを検索部12に転送する。
【0016】
図1(B)は、検索部12がエミュレータ内に備えられる構成例を示す。この構成例では、検索部12は、ホストコンピュータ6からの制御信号に応答してトレースデータの検索を行い、検索結果をホストコンピュータ6に出力する。検索部12は、たとえば、検索用の回路モジュールである。ここでは、データ処理システム20は、エミュレータに4設けられる書込部8と検索部12とを有する。また、エミュレータ4が、書込部8または検索部12を備えたデータ処理装置である。
【0017】
図1(A)、(B)において、書込部8は、それぞれN(Nは正の整数)ビットを有する複数の第1のデータから、当該複数の第1のデータの第1〜第Nビットをそれぞれ有する複数の第2のデータを生成する。ここでは、第1のデータは、ターゲットシステム2から入力されるトレースデータである。トレースデータは、ターゲットシステムで実行される命令ごとに、順次連続して入力される。トレースデータは、たとえば8ビット長のビット列のデータである。書込部8は、複数のトレースデータの第1〜第8ビットをそれぞれ有する第2のデータを生成する。そして、書込部8は、メモリ10の連続する複数の行アドレスに前記複数の第2のデータをそれぞれ書き込む。以下では、メモリ10に書き込まれる第2のデータを、書込データという。ここでは、メモリ10は、1ワード8ビットのデータが行アドレスごとに読み書きされる。メモリ10では、指示された行アドレスに、書込データが書き込まれる。
【0018】
ここで、図1と併せて図2を参照する。図2(A)には、トレースデータと書込データの具体例が示される。ここでは、連続して書込部8に入力される複数のトレースデータのうち、8個のトレースデータD1_0〜D1_7が示される。また、ここでは、トレースデータD1_0〜D1_7それぞれの第1〜第8ビット「A0」〜「A7」、「B0」〜「B7」、「C0」〜「C7」、・・・、「H0」〜「H7」が示される。書込部8は、トレースデータD1_0〜D1_7の第1〜第8ビットをそれぞれ有する、8個の書込データD2_0〜D2_7を生成する。たとえば、書込データD2_0は、トレースデータD1_0〜D1_7の第1ビット「A0」、「B0」、「C0」、・・・、「H0」を有する。また、たとえば、書込データD2_1は、トレースデータD1_0〜D1_7の第2ビット「A1」・・・、「H1」を有する。同様に、書込データD2_2〜D2_7は、トレースデータD1_0〜D1_7の第3ビット「A2」〜「H2」、第4ビット「A3」〜「H3」、・・・第8ビット「A7」〜「H7」を、それぞれ有する。このような書込データの生成方法は、後に詳述される。そして、書込データD2_0〜D2_7は、メモリ10の8個の連続した行アドレスAdd_0〜Add_7に、書き込まれる。
【0019】
上記のようにしてメモリに書き込まれた複数の書込データの例が、図2(B)に示される。ここでは、メモリ10の行アドレスAdd_0〜Add_n(nは8より大きい正の整数)に、書込データD2_0〜D2_nが書き込まれた状態が示される。
【0020】
ここで、書込部8の詳細な構成例を示す。
【0021】
図3〜図5は、書込部8の第1の構成例を示す。書込部8は、図3に示すように、2次元シフトレジスタ30と、クロック生成部32と、シフト方向制御レジスタ34とを有する。2次元シフトレジスタ30は、図4に示すように、8行R1〜R8、8列C1〜C8の行列状に配置されたシフトレジスタSRを有する。2次元シフトレジスタ30には、クロック生成部32が生成するクロックCLKと、シフト方向制御レジスタ34から出力される制御信号SEL1とが入力される。2次元シフトレジスタ30は、クロックCLKと制御信号SEL1に応答して、入力されるトレースデータD1の行列を入れ替えて書込データD2としてメモリ10に出力する。
【0022】
第1列C1のシフトレジスタSRには、トレースデータD1の第1〜8ビットDI_0〜DI_07がそれぞれ入力される。ここで、図5に、シフトレジスタSRの構成例を示す。図5には、第1列C1〜第3列C3、第1行R1〜第3行R3のシフトレジスタSRが示される。各シフトレジスタSRは、セレクタ40とD型フリップフロップ回路42とを有する。各シフトレジスタSRにおいて、セレクタ40は、制御信号SEL1がたとえば「0」のときに、クロックCLKに同期して入力方向(実線で図示)のデータ転送を受け付ける。また、セレクタ40は、制御信号SEL1がたとえば「1」のときに、クロックCLKに同期して、出力方向(点線で図示)のデータ転送を受け付ける。
【0023】
このようなシフトレジスタSRの動作により、第1列C1のシフトレジスタSRに入力されたトレースデータD1は、クロックCLKに同期して、隣接する列のシフトレジスタに順次転送される。このようにして、8クロックで、8個のトレースデータD1が2次元シフトレジスタ30に格納される。
【0024】
次いで、2次元シフトレジスタ30に格納された8個のトレースデータD1は、クロックCLKに同期して、隣接する行のシフトレジスタSRに、書込データD2として順次転送される。そして、第8行R8のシフトレジスタSRから、書込データの第1〜第8ビットDO_0〜DO_7が順次出力される。このようにして、8クロックで、8個の書込データD2が2次元シフトレジスタから出力される。
【0025】
こうして、16クロックで8個のトレースデータD1から8個の書込データD2が生成される。
【0026】
図6は、書込部8の動作手順を説明するフローチャート図である。書込部8は、ターゲットシステム2から、トレースデータD1が入力される(S2)。書込部8は、トレースデータD1を、2次元シフトレジスタ30に格納する(S4)。そして、書込部8は、1ワード(8ビット)の書込データD2を生成可能なトレースデータD1、つまり8個のトレースデータD1が2次元シフトレジスタ30に格納されたかを判定する(S6)。手順S6での判定結果が「No」のとき、書込部8は、手順S2、S4を実行する。このようにして、8個のトレースデータD1が2次元シフトレジスタ30に格納される。
【0027】
一方、手順S6での判定結果が「Yes」のとき、書込部8は、2次元シフトレジスタ30からトレースデータD1の行列を入れ替えた書込データD2を出力する(S8)。次いで、書込部8は、メモリ10の連続する複数の行アドレスに書込データD2を書き込む(S9)。そして、書込部8は、2次元シフトレジスタ30内のデータの有無を確認する(S10)。2次元シフトレジスタ30内にデータが残っているときには(S10のNo)、書込部8は、行アドレスを1アドレスインクリメントさせ(S12)、手順S8、S9を実行する。一方、2次元シフトレジスタ30内にデータが残っていないときには(S10のYes)、書込部8は、手順S14に進む。このようにして、手順S8、S9が、2次元シフトレジスタ30内のデータがなくなるまで実行され、8個のトレースデータD1から生成された8個の書込データD2がメモリ10に書き込まれる。
【0028】
手順S14で、書込部8は、メモリ10の空き容量の有無と、トレースデータD1の入力の終了を確認する。メモリの空き容量があり、かつ、トレースデータD1の入力が終了していないとき(S14のNo)、手順S2〜S10を実行する。一方、メモリ10の空き容量がないか、または、トレースデータD1の入力が終了したとき(S14のYes)、書込部8は、本処理を終了する。
【0029】
このようにして、それぞれ8ビットを有する複数のトレースデータD1から、当該複数のトレースデータD1の第1〜第8ビットをそれぞれ有する複数の書込データD2が生成され、メモリ10の連続する複数の行アドレスに前記複数の書込データD2がそれぞれ書き込まれる。
【0030】
図7は、書込部8の第2の構成例を示す。この例では、書込部8は、並列動作する2つの2次元シフトレジスタ30_1、30_2を有する。書込部8は、2次元シフトレジスタ30_1、30_2に加え、セレクタ36、38と、セレクタ制御レジスタ50とを有する。2次元シフトレジスタ30_1、30_2は、それぞれ、図4で示した第1の構成例における2次元シフトレジスタ30と同じ構成を有する。セレクタ36は、セレクタ制御レジスタ50が出力する制御信号SEL2に応答して、トレースデータD1の入力先をシフトレジスタ30_1、30_2のいずれかに切り替える。また、セレクタ36は、セレクタ制御レジスタ50が出力する制御信号SEL2に応答して、メモリ10に書き込む書込データD2の出力元を、シフトレジスタ30_1、30_2のいずれかに切り替える。
【0031】
図8は、第2の構成例における書込部8の動作を説明するタイミング図である。図8(A)には、2次元シフトレジスタ30_1または30_2に入力されるトレースデータD1が示される。図8(B)には制御信号SEL2が示される。図8(C)、(D)には、制御信号SEL2の値に対応して、セレクタ36、38の接続先がそれぞれ示される。また、図8(E)、(F)には、制御信号SEL2の値に対応して、2次元シフトレジスタ30_1、30_2の動作がそれぞれ示される。そして、図8(G)には、2次元シフトレジスタ30_1または30_2から出力される書込データD2が示される。
【0032】
図8(B)〜(F)に示すように、制御信号SEL2の値が、たとえば2次元シフトレジスタ30_1を示す「0」のとき、セレクタ36は2次元シフトレジスタ30_1に接続される。そして、2次元シフトレジスタ30_1は、トレースデータを格納する。よって、図8(A)に示すように、トレースデータD1_8、・・・、D1_14、D1_15が2次元シフトレジスタ30_1に格納される。このとき、一方で、セレクタ38は2次元シフトレジスタ30_2に接続される。そして、2次元シフトレジスタ30_2は、書込データを出力する。よって、図8(G)に示すように、書込データD2_0、・・・、D2_6、D2_7が2次元シフトレジスタ30_2から出力される。
【0033】
次に、図8(B)〜(F)に示すように、制御信号SEL2の値が、2次元シフトレジスタ30_2を示す「1」のとき、セレクタ36は2次元シフトレジスタ30_2に接続される。そして、2次元シフトレジスタ30_2は、トレースデータを格納する。よって、図8(A)に示すように、トレースデータD1_16、D1_17、・・・、D1_23が2次元シフトレジスタ30_2に格納される。このとき、一方で、セレクタ38は2次元シフトレジスタ30_1に接続される。そして、2次元シフトレジスタ30_1は、書込データを出力する。よって、図8(G)に示すように、書込データD2_8、D2_9、・・・、D2_15が2次元シフトレジスタ30_2から出力される。
【0034】
このように、セレクタ36、38は、2次元シフトレジスタ30_1、30_2のうち、互いに異なる方を選択する。これにより、2次元シフトレジスタ30_1、30_2の一方が入力されるトレースデータD1を格納するときに、他方が格納済みのトレースデータD1を書込データD2として出力する。
【0035】
上述した第1の構成例では、単一の2次元シフトレジスタ30により、16クロックで8個のトレースデータD1が8個の書込データD2に変換された。これに対し、第2の構成例によれば、2つの2次元シフトレジスタ30_1、30_2が並列動作することで、16クロックで16個のトレースデータD1が16個の書込データD2に変換される。よって、データ処理速度が向上する。
【0036】
次に、図1、図2を参照して、検索部12について説明がなされる。検索部12は、複数の第2のデータ(つまり、書込データD2_0〜D2_n)が書き込まれたメモリ10における連続する8個の行アドレスごとに、当該8個の行アドレスの一部の検索対象行アドレスに対応する書込データに検索対象ビットが含まれるか否かを判定する。たとえば、図2(B)の例において、検索部12は、行アドレスAdd_0〜Add_7(以下、行アドレス群AG[0−7]という)、行アドレス群AG[8−15]、・・・ごとに、当該8個の行アドレスの一部の検索対象行アドレスに対応する書込データに検索対象ビットが含まれるか否かを判定する。
【0037】
検索対象行アドレスと、検索対象ビットは、検索すべきトレースデータのビットパターンに基づき操作者により決定され、操作入力部14からホストコンピュータ6に入力される。検索すべきビットパターンは、たとえば、ターゲットシステム2での実行の有無を確認すべき命令の格納アドレスである。検索対象行アドレスは、たとえば、8個の行アドレスにおいて、第1〜8アドレスのいずれか1個以上の行アドレスである。検索対象行アドレスの数は、操作者により入力され、設定される。また、検索対象ビットは、「1」または「0」のいずれかであり、検索すべきビットパターンに対応した値が、操作者により設定される。あるいは、検索部12は、検索すべきビットパターンが入力されると、検索対象行アドレスと検索対象ビットとを求める処理を行ってもよい。
【0038】
図9は、検索対象行アドレスと、検索対象ビットの設定方法について説明する図である。図9(A)は検索すべきトレースデータのビットパターンの例を示す。ここでは、トレースデータは、上位4ビットと下位4ビットで16進数のアドレスを示す。たとえば、20h番台のアドレスを示すトレースデータは、上位4ビットが、上位ビットから順に、それぞれ「0、0、1、0」である。この場合、検索すべきビットパターンBP1は、上位4ビットが「0、0、1、0」であるビットパターンである。また、たとえば、30h番台のアドレスを示すトレースデータは、上位4ビットが、上位ビットから順に、それぞれ「0、0、1、1」である。この場合、検索すべきビットパターンBP2は、上位4ビットが「0、0、1、1」であるビットパターンである。
【0039】
図9(B)は、検索すべきビットパターンBP1がメモリ10に書き込まれた状態を示す。ここでは、ビットパターンBP1を含む8個のトレースデータから生成された8個の書込データが、行アドレスAdd_0〜Add_7に書き込まれた状態が示される。ここで、ビットパターンBP1の低位ビット側からカウントして5番目の第5ビット「1」を含む書込データは、第5行の行アドレスAdd_4に格納される。よって、この場合、検索対象行アドレスは第5行アドレスである。また、検索対象ビットは「1」である。よって、8個の書込データのうち、第5行アドレスに対応する書込データD2_4に「1」が含まれるかを判定することで、その8個の書込データに検索対象ビットパターンBP1が含まれるかが判定される。
【0040】
また、図9(C)は、検索すべきビットパターンBP2がメモリ10に書き込まれた状態を示す。ここでは、ビットパターンBP2を含む8個のトレースデータから生成された8個の書込データが、行アドレスAdd_0〜Add_7に書き込まれた状態が示される。ここで、ビットパターンBP2の第5ビット「1」、第6ビット「1」を含む書込データは、第5行の行アドレスAdd_4と、第6行の行アドレスAdd_5とにそれぞれ格納される。よって、この場合、検索対象行アドレスは、第5行アドレスと第6行アドレスである。また、第5行アドレスと第6行アドレスの検索対象ビットは、それぞれ「1」である。よって、8個の書込データのうち、第5、第6行アドレスにそれぞれ対応する書込データD2_4、D2_5に「1」が含まれるかを判定することで、その8個の書込データに検索対象ビットパターンBP2が含まれるかが判定される。
【0041】
次に、検索の具体例を、図10〜図12を用いて示す。
【0042】
図10は、書込データの例を示す。図10(A)は、検索すべきビットパターンBP2を示す。図10(B)は、メモリ10の32個の行アドレスAdd_0〜Add_31に、32個の書込データD2_0〜D2_31が書き込まれた状態を示す。図11は、検索すべきビットパターンを含むトレースデータの例を示す。また、図12は、検索部12の動作手順を説明するフローチャート図である。図12の手順に従って、適宜図11を参照しながら、図10の例における検索動作を説明する。
【0043】
まず、操作者により、検索すべきビットパターン、検索対象行アドレス、及び検索対象ビット値が入力され、設定される(S30)。検索すべきビットパターンは、8ビットのうち任意のビットを特定したものであればよい。たとえば、図10(A)のビットパターンBP2は、上位4ビット「0、0、1、1」が指定されるともに、下位4ビットは任意のビットである。また、図10(A)に示すビットパターンBP2に対応する検索対象行は、図8(B)で示したように、低位ビット側からカウントして5番目と6番目の、第5、第6行アドレスである。また、検索対象ビットは「1」である。
【0044】
あるいは、検索部12は、たとえば、検索すべきビットパターンBP2から、「1」を有するビット位置を抽出し、そのビット位置に対応する検索行アドレスを決定するとともに、検索対象ビットを「1」とする処理を行ってもよい。そうすることで、操作者が検索すべきビットパターンを入力するだけで、検索対象行アドレスと検索対象ビットとが設定される。
【0045】
次いで、検索部12は、メモリ10から、8個の行アドレス群ごとに、検索対象行アドレスに対応する書込データを読み出す(S32)。図10(B)の例では、行アドレスAdd_0〜Add_7を有する行アドレス群AG[0−7]において、検索対象行アドレスは、第5行アドレスADD_4と、第6行アドレスADD_5である。よって、それぞれに対応する、書込データD2_4、D2_5が読み出される(矢印Ar1、2)。
【0046】
次いで、検索部12は、読み出した書込データが検索対象ビット値を有するかを判定する(S34)。読み出した書込データが検索対象ビット値を有する場合には、行アドレス群AG[0−7]の書込データD2_0〜D2_7に、検索すべきビットパターンBP2が含まれる蓋然性が有ると判断できる。一方、読み出した書込データが検索対象ビット値を有さない場合には、行アドレス群AG[0−7]の書込データD2_0〜D2_7に、検索すべきビットパターンBP2が含まれないと判断できる。図10(B)の例では、書込データD2_5、D2_6のうち、書込データD2_6のビット値はすべて「0」であり、検索対象ビット「1」を有さない。よって、手順S34の判定結果は、「No」となる。よって、検索部12は、手順S36を実行する。
【0047】
検索部12は、読出し行アドレスを、1つの行アドレス群だけインクリメントさせる(S36)。そして、次の行アドレス群において、検索対象行アドレスに対応する書込データを読み出す(S32)。図10(B)の例では、検索部12は、検索対象行アドレスアドレスADD_4、ADD_5をそれぞれ1つの行アドレス群、つまり8行分インクリメントさせ、検索対象行アドレスアドレスADD_12、ADD_13を求める。そして、検索部12は、行アドレス群AG[8−15]において、検索対象行アドレスアドレスADD_12、ADD_13に対応する書込データD2_12、D2_13を読み出す(矢印Ar3、4)。
【0048】
次いで、検索部12は、読み出した書込データが検索対象ビットを有するかを判定する(S34)。図10(B)では、書込データD2_13がすべて「0」であり、検索対象ビット「1」を有さない。よって、手順S34の判定結果は、「No」となる。よって、検索部12は、手順S36を実行する。
【0049】
検索部12は、読出し行アドレスを、1つの行アドレス群だけインクリメントさせる(S36)。そして、次の行アドレス群において、検索対象行アドレスに対応する書込データを読み出す(S32)。図10(B)では、検索部12は、検索対象行アドレスアドレスADD_12、ADD_13を8行分インクリメントさせ、検索対象行アドレスアドレスADD_20、ADD_21を求める。そして、検索部12は、行アドレス群AG[16−23]において、検索対象行アドレスアドレスADD_20、ADD_21に対応する書込データD2_20、D2_21を読み出す(矢印Ar5、6)。
【0050】
次いで、検索部12は、読み出した書込データが検索対象ビットを有するかを判定する(S34)。図10(B)では、書込データD2_21、D2_22は検索対象ビット「1」を含む。よって、手順S34の判定結果は、「Yes」となる。この場合、行アドレス群AG[16−23]に書き込まれた書込データD2_16〜D2_23には、検索すべきビットパターンBP2が含まれる蓋然性が有ると判断できる。よって、検索部12は、手順S38を実行する。
【0051】
検索部12は、行アドレス群AG[16−23]に書き込まれた書込データD2_16〜D2_23を読み出して行列を入れ替え、もとのトレースデータを復元する(S38)。このとき、検索部12は、書込データD2_16〜D2_23それぞれの第1〜8ビット目を有する8ビット長のデータを生成することで、書込データD2_16〜D2_23が生成される元となったトレースデータを復元できる。なお、検索部12がホストコンピュータ6に設けられる場合、たとえば、ホストコンピュータ6のRAM(Random Access Memory)に書込データを保持させて、行列入れ替え手順を実行する。また、検索部12がエミュレータ4に設けられる場合、たとえば図4で示したような2次元シフトレジスタを用いて行列を入れ替える。
【0052】
このとき復元されるトレースデータD1_16〜D1_23が、図11(A)に示される。検索部12は、復元したトレースデータから、検索対象ビットに対応するビットパターンBP2を有するトレースデータを検索する(S40)。この場合、トレースデータD1_16〜D1_23のうち、トレースデータD1_21は、第5、第6ビットに「1」を有する。しかし、第7ビットも「1」であり、第8ビットが「0」であるので、トレースデータD1_21は、上位4ビットが「0、1、1、1」であり、70h番台のアドレスを有するトレースデータである。よって、ビットパターンBP2が示すような、30h番台のアドレスを有するトレースデータではない。よって、検索部12は、検索すべきビットパターンBP2を有するトレースデータが検索されないと判定し(S44のNo)、再度、手順S36を実行する。
【0053】
検索部12は、読出し行アドレスを、1つの行アドレス群だけインクリメントさせ(S36)、次の行アドレス群において、検索対象行アドレスに対応する書込データを読み出す(S32)。図10(B)の例では、検索部12は、検索対象行アドレスアドレスADD_20、ADD_21を8行分インクリメントさせ、行アドレス群AG[23−31]において検索対象行アドレスアドレスADD_28、ADD_29に対応する書込データD2_28、D2_29を読み出す(矢印Ar7、8)。
【0054】
次いで、検索部12は、読み出した書込データが検索対象ビット値を有するかを判定する(S34)。図10(B)では、書込データD2_29、D2_30は検索対象ビット「1」を有する。よって、手順S34の判定結果は、「Yes」となる。よって、検索部12は、行アドレス群AG[24−31]に書き込まれた書込データD2_24〜D2_31を読み出して行列を入れ替え、もとのトレースデータを復元する(S38)。このとき復元されるトレースデータD1_24〜D1_31が、図11(B)に示される。そして、検索部12は、復元したトレースデータから、検索対象ビットに対応するビットパターンBP2を有するトレースデータを検索する(S40)。この場合、トレースデータD1_28は、第5、第6ビットが「1」であり、第7、第8ビットが「0」であるので、上位4ビットが「0、0、1、1」の30h番台のアドレスを有するトレースデータである。すなわち、トレースデータD1_28は、検索すべきビットパターンBP2を有するトレースデータである。よって、検索部12は、検索対象のビットパターンBPを有するトレースデータが検索されたと判定し(S44のYes)、検索手順を終了する。また、たとえば、検索部12は、たとえば検索結果を表示部16に表示する。これにより、操作者は、検査対処の命令が実行されたことを確認でき、適宜デバッグ作業を行うことができる。
【0055】
ここで、たとえばトレースデータを書込データに変換せずに、メモリ10の行アドレスごとに格納する場合と、上述した実施形態とを比較する。トレースデータをメモリ10の行アドレスごとに格納する場合、検索部は、メモリ10の行アドレスを1行ずつインクリメントさせてトレースデータを1つずつ読み出し、検索すべきビットパターンに一致するか否かを判定することで、検索を行う。よって、その分、検索時間が増大する。これに対し、上述の実施形態によれば、8個の行アドレス群ごとに、そのうちの一部の検索対象行アドレスから書込データを読み出して検索対象ビットが含まれるかを判定する。よって、検索対象ビットが含まれない行アドレス群では、検索対象行アドレス以外の行アドレスから書込データを読み出すことなく、次の行アドレス群の検索に移行できる。よって、検索時間が短縮される。
【0056】
次に、変形例について説明する。変形例では、検索部12は、設定される検索対象行アドレスの数を、行アドレス群における行アドレスの個数の1/2、たとえば8行の1/2である4行以下に抑制する。たとえば、操作者により5行以上の検索対象行アドレスが設定された場合、検索部12は、5行のうち4行の検索対象行アドレスについて、検索対象ビットの検索を行う。検索対象行アドレスとして選択する4行は、たとえば、高位ビットあるいは低位ビットから順に決定される。また、たとえば、設定入力された検索対象行アドレス以外を検索対象行アドレスとしてもよい。あるいは、検索対象行アドレスの再設定を促す情報を表示部16による表示など出力してもよい。さらに、検索対象行アドレスを変更した場合において、検索対象ビットの再設定を促してもよい。たとえば、設定入力された検索対象行アドレス以外を検索対象行アドレスとした場合であって、検索対処ビットが当初入力された値と異なる場合には、操作者はこれを再設定することができる。
【0057】
図13は、変形例における検索部12の動作について説明するフローチャート図である。この動作手順は、図12で示した手順S30の代わりに実行される。検索部12は、検索すべきビットパターン、検索対象行アドレス、及び検索対象ビットの入力を受け付ける(S300)。そして、検索対象行アドレスが、行アドレス群の行数「8」の1/2を上回る「5」以上であるかを判定する(S302)。判定結果が「Yes」のとき、検索部12は、検索対象行アドレスを変更する(S304)。そして、検索部12は、検索対象ビットの変更入力を促す(S306)。
【0058】
このようにすることで、行アドレス群のうちデータ読み出しを省略する行アドレスの数を一定以上に保ち、検索速度を向上させることが可能になる。
【0059】
なお、上述の実施形態では、データ処理システム20がデバッグシステムに適用される場合を示した。しかしながら、所定数のビットを有する複数のデータから所望のビットパターンを有するデータを検索する場合に、本実施形態は適用可能である。たとえば、所定の桁数を有する車両のプレートナンバーを示す複数のデータから、特定のプレートナンバーを検索する車両検索システムに、本実施形態は適用できる。あるいは、所定の桁数を有する電話番号を示す複数のデータから、特定の電話番号を検索する電話番号検索システムに、本実施形態は適用できる。
【0060】
以上の実施の形態をまとめると、次の付記のとおりである。
【0061】
(付記1)
それぞれN(Nは正の整数)ビットを有する複数の第1のデータから、当該複数の第1のデータの第1〜第Nビットをそれぞれ有する複数の第2のデータを生成し、メモリの連続する複数の行アドレスに前記複数の第2のデータをそれぞれ書き込む書込部と、
前記複数の第2のデータが書き込まれた前記メモリにおける連続するN個の行アドレスごとに、当該N個の行アドレスの一部の検索対象行アドレスに対応する前記第2のデータに検索対象ビットが含まれるか否かを判定する検索部とを有するデータ処理システム。
【0062】
(付記2)
付記1において、
前記検索部は、前記検索対象行アドレスに対応する前記第2のデータに前記検索対象ビットが含まれると判定したときには、当該検索対象行アドレスを含むN個の行アドレスに対応する前記第2のデータから、前記検索対象ビットに対応するビットパターンを有する前記第1のデータを検索するデータ処理システム。
【0063】
(付記3)
付記2において、
前記検索対象行アドレスが設定可能であるデータ処理システム。
【0064】
(付記4)
付記1乃至3のいずれかにおいて、
前記検索対象行アドレスの数がN/2以下であるデータ処理システム。
【0065】
(付記5)
それぞれN(Nは正の整数)ビットを有する複数の第1のデータから、当該複数の第1のデータの第1〜第Nビットをそれぞれ有する複数の第2のデータを生成し、メモリの連続する複数の行アドレスに前記複数の第2のデータをそれぞれ書き込む書込部を有し、
前記複数の第2のデータが書き込まれた前記メモリにおける連続するN個の行アドレスごとに、当該N個の行アドレスの一部の検索対象行アドレスに対応する前記第2のデータに検索対象ビットが含まれるか否かが判定されるデータ処理装置。
【0066】
(付記6)
それぞれN(Nは正の整数)ビットを有する複数の第1のデータから、当該複数の第1のデータの第1〜第Nビットをそれぞれ有する複数の第2のデータを生成する書込部により、メモリの連続する複数の行アドレスに前記複数の第2のデータがそれぞれ書き込まれ、
前記メモリにおける連続するN個の行アドレスごとに、当該N個の行アドレスの一部の検索対象行アドレスに対応する前記第2のデータに検索対象ビットが含まれるか否かを判定する検索部を有するデータ処理装置。
【0067】
(付記7)
付記1乃至4のいずれかに記載の書込部と検索部とを有し、
外部装置のプロセッサが実行する命令ごとの当該外部装置のメモリにおけるアドレスが前記第1のデータとして入力され、
前記検索対象行アドレス及び前記検索対象ビットは、実行されたか否かを確認すべき前記命令の前記アドレスに対応する、
デバッグシステム。
【0068】
(付記8)
付記5または6において、
前記第1のデータは、外部装置のプロセッサが実行する命令ごとの当該外部装置のメモリにおけるアドレスを示し、
前記検索対象行アドレス及び前記検索対象ビットは、実行されたか否かを確認すべき前記命令の前記アドレスに対応する、
データ処理装置。
【0069】
(付記9)
それぞれN(Nは正の整数)ビットを有する複数の第1のデータから、当該複数の第1のデータの第1〜第Nビットをそれぞれ有する複数の第2のデータを生成し、
メモリの連続する複数の行アドレスに前記複数の第2のデータをそれぞれ書き込み、
前記複数の第2のデータが書き込まれた前記メモリにおける連続するN個の行アドレスごとに、当該N個の行アドレスの一部の検索対象行アドレスに対応する前記第2のデータに検索対象ビットが含まれるか否かを判定する、
データ処理方法。
【0070】
(付記10)
付記9において、
前記検索対象行アドレスに対応する前記第2のデータに前記検索対象ビットが含まれると判定したときには、当該検索対象行アドレスを含むN個の行アドレスに対応する前記第2のデータから、前記検索対象ビットに対応するビットパターンを有する前記第1のデータを検索する、
データ処理方法。
【符号の説明】
【0071】
8:書込部、10:メモリ、12:検索部、20:データ処理システム

【特許請求の範囲】
【請求項1】
それぞれN(Nは正の整数)ビットを有する複数の第1のデータから、当該複数の第1のデータの第1〜第Nビットをそれぞれ有する複数の第2のデータを生成し、メモリの連続する複数の行アドレスに前記複数の第2のデータをそれぞれ書き込む書込部と、
前記複数の第2のデータが書き込まれた前記メモリにおける連続するN個の行アドレスごとに、当該N個の行アドレスの一部の検索対象行アドレスに対応する前記第2のデータに検索対象ビットが含まれるか否かを判定する検索部とを有するデータ処理システム。
【請求項2】
請求項1において、
前記検索部は、前記検索対象行アドレスに対応する前記第2のデータに前記検索対象ビットが含まれると判定したときには、当該検索対象行アドレスを含むN個の行アドレスに対応する前記第2のデータから、前記検索対象ビットに対応するビットパターンを有する前記第1のデータを検索するデータ処理システム。
【請求項3】
請求項1または2において、
前記検索対象行アドレスが設定可能であるデータ処理システム。
【請求項4】
請求項1乃至3のいずれかに記載の書込部と検索部とを有し、
プロセッサが実行する命令ごとのアドレスを示すデータが前記第1のデータとして入力され、
前記検索対象ビットに対応するアドレスに格納された命令の実行を確認するデバッグシステム。
【請求項5】
それぞれN(Nは正の整数)ビットを有する複数の第1のデータから、当該複数の第1のデータの第1〜第Nビットをそれぞれ有する複数の第2のデータを生成し、
メモリの連続する複数の行アドレスに前記複数の第2のデータをそれぞれ書き込み、
前記複数の第2のデータが書き込まれた前記メモリにおける連続するN個の行アドレスごとに、当該N個の行アドレスの一部の検索対象行アドレスに対応する前記第2のデータに検索対象ビットが含まれるか否かを判定する、
データ処理方法。

【図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