(57)【要約】【課題】バイト列の探索処理速度を向上させることが可能なバイト列探索器及び探索方法を提供する。【解決手段】連続するａバイトから成る探索対象バイト列を探索するバイト列探索器であって、ｎバイトのデータを与えられて格納する入力バッファ１１と、入力バッファからｎバイトのデータを与えられ、探索対象バイト列における第１バイト〜第ａバイトと比較して、バイト単位での一致／不一致を示すそれぞれ１バイトの第１〜第ａの比較結果を出力する比較器２１〜２３と、比較器から第１〜第ａの比較結果を与えられてそれぞれ格納する一致／不一致マップレジスタ３１〜３３と、一致／不一致マップレジスタ３１を上位ビット側に（ａ−１）ビットだけシフトし、一致／不一致マップレジスタ３２を上位ビット側に（ａＣ２）ビットだけシフトし、対応する一致／不一致マップレジスタ３１〜３３における対応するビット位置の値でＡＮＤ演算を行い、１バイトの演算結果を出力するＡＮＤ回路４１とを備える。【選択図】図１
2007274051.tif 000002
【特許請求の範囲】
【請求項１】
連続するａ（ａは、２以上の整数）バイトから成る探索対象バイト列を探索するバイト列探索器であって、
外部から入力されたｎバイト数（ｎは、ａ以上の整数）を有する第１のデータと、前記探索対象バイト列における第１バイトから第ａバイトに至るまでのいずれか1つのバイトとを比較して、バイト単位での一致／不一致の比較結果を出力するａ個の比較器と、
前記比較器の比較結果を用いて論理演算を実行することによって、連続するａバイトのバイト列の有無を出力する論理演算回路とを備え、
前記ａ個の比較器は、前記探索対象バイト列における第１バイトから第ａバイトに至るまで、お互いに別々の１つを選択して、並列して比較結果の出力を実行することを特徴とするバイト列探索器。
【請求項２】
前記論理演算回路は、
前記比較器を用いて出力された、前記第１のデータに続く所定のバイト数を有する第２のデータの比較結果に加えて、
前記第１のデータと、前記探索対象バイト列における第１バイトから第ａ−１バイトに至るまでのバイトとを比較結果の一部を用いて、連続するａバイトのバイト列の有無を出力することを特徴とする請求項１に記載のバイト列探索器。
【請求項３】
連続するａ（ａは、２以上の整数）バイトから成る探索対象バイト列を探索するバイト列探索器であって、
ｎ（ｎは、ａ以上の整数）バイトのデータを与えられて格納する入力バッファと、
前記入力バッファから前記ｎバイトのデータを与えられ、前記探索対象バイト列における第１バイト、第ｊ（ｊは１＜ｊ＜ａの範囲における連続する整数）バイト、第ａバイトと比較して、バイト単位での一致／不一致を示すそれぞれ１バイトずつの第１、第ｊ、第ａの比較結果を出力する比較器と、
前記比較器から前記第１、第ｊ、第ａの比較結果を与えられてそれぞれ格納する第１、第ｊ、第ａの一致／不一致マップレジスタと、
前記第１〜第ａの一致／不一致マップレジスタに最下位ビット（以下、ＬＳＢという）から順にそれぞれの前記第１〜第ａの比較結果のデータが詰められて格納されるときは、
前記第１の一致／不一致マップレジスタを上位ビット側に（ａ−１）ビットだけシフトし、前記第ｊの一致／不一致マップレジスタを上位ビット側に（ａ−ｊ）ビットだけシフトし、前記第（ａ−１）の一致／不一致マップレジスタを上位ビット側に１ビットだけシフトし、対応する前記第１、第ｊ、第ａの一致／不一致マップレジスタにおける対応するビット位置の値でＡＮＤ演算を行い、１バイトの演算結果を出力し、
あるいは、前記第１〜第ａの一致／不一致マップレジスタに最上位ビット（以下、ＭＳＢという）から順にそれぞれの前記第１〜第ａの比較結果のデータが詰められて格納されるときは、
前記第１の一致／不一致マップレジスタを下位ビット側に（ａ−１）ビットだけシフトし、前記第ｊの一致／不一致マップレジスタを下位ビット側に（ａ−ｊ）ビットだけシフトし、前記第（ａ−１）の一致／不一致マップレジスタを下位ビット側に１ビットだけシフトし、対応する前記第１、第ｊ、第ａの一致／不一致マップレジスタにおける対応するビット位置の値でＡＮＤ演算を行い、１バイトの演算結果を出力するＡＮＤ回路と、
を備えることを特徴とするバイト列探索器。
【請求項４】
連続するａ（ａは、２以上の整数）バイトから成る探索対象バイト列を探索するバイト列探索器であって、
ｎ（ｎは、ａ以上の整数）バイトのデータを与えられて格納する入力バッファと、
前記入力バッファから前記ｎバイトのデータを与えられ、前記探索対象バイト列における第１バイトと比較して、バイト単位での一致／不一致を示す１バイトの第１の比較結果を出力する第１の比較器と、
前記入力バッファから前記ｎバイトのデータを与えられ、前記探索対象バイト列における第ｊ（ｊは１＜ｊ＜ａの範囲における連続する整数）バイトと比較して、バイト単位での一致／不一致を示す１バイトの第ｊの比較結果を出力する第ｊの比較器と、
前記入力バッファから前記ｎバイトのデータを与えられ、前記探索対象バイト列における第ａバイトと比較して、バイト単位での一致／不一致を示す１バイトの第ａの比較結果を出力する第ａの比較器と、
前記第１の比較器から前記第１の比較結果を与えられて格納する第１の一致／不一致マップレジスタと、
前記第ｊの比較器から前記第ｊの比較結果を与えられて格納する第ｊの一致／不一致マップレジスタと、
前記第ａの比較器から前記第ａの比較結果を与えられて格納する第ａの一致／不一致マップレジスタと、
前記第１〜第ａの一致／不一致マップレジスタにＬＳＢから順にそれぞれの前記第１〜第ａの比較結果のデータが詰められて格納されるときは、
前記第ａの一致／不一致マップレジスタに格納された前記第ａの比較結果における第１ビットの値と、不一致を示す値とを示す値との間でＡＮＤ演算を行い、
前記第ａの一致／不一致マップレジスタに格納された前記第ａの比較結果における第ｊビットの値と、前記第（ａ−（ｊ−１））の一致／不一致マップレジスタに格納された前記第（ａ−（ｊ−１））の比較結果における第（ｊ−１）ビットの値と、不一致を示す値との間でＡＮＤ演算を行い、
前記第ａの一致／不一致マップレジスタに格納された前記第ａの比較結果における第ｎ／８ビットの値と、前記第（ａ−（ｊ−１））の一致／不一致マップレジスタに格納された前記第（ａ−（ｊ−１））の比較結果における第（（ｎ／８）−（ｊ−１））ビットの値と、前記第１の一致／不一致マップレジスタに格納された前記第１の比較結果における第１のビットの値との間でＡＮＤ演算を行い、１バイトの演算結果を出力し、
あるいは、前記第１〜第ａの一致／不一致マップレジスタにＭＳＢから順にそれぞれの前記第１〜第ａの比較結果のデータが詰められて格納されるときは、
前記第ａの一致／不一致マップレジスタに格納された前記第ａの比較結果における第１ビットの値と、前記第（ａ−（ｊ−１））の一致／不一致マップレジスタに格納された前記第（ａ−（ｊ−１））の比較結果における第ｊビットの値と、前記第１の一致／不一致マップレジスタに格納された前記第１の比較結果における第（ａ−（ｊ−１））ビットの値との間でＡＮＤ演算を行い、
前記第ａの一致／不一致マップレジスタに格納された前記第ａの比較結果における第ｊビットの値と、前記第（ａ−（ｊ−１））の一致／不一致マップレジスタに格納された前記第（ａ−（ｊ−１））の比較結果における第（ｊ＋１）ビットの値と、前記第１の一致／不一致マップレジスタに格納された前記第１の比較結果における第ａビットの値との間でＡＮＤ演算を行い、
前記第ａの一致／不一致マップレジスタに格納された前記第ａの比較結果における第ｎ／８ビットの値と、不一致を示す値との間でＡＮＤ演算を行い、１バイトの演算結果を出力するＡＮＤ回路と、
前記ＡＮＤ回路の演算結果を与えられて保持するバリディティレジスタと、
を備え、
前記バリディティレジスタにおいて一致を示す値が格納されたビット位置が、前記入力バッファに格納された前記データにおける前記探索対象バイト列の第ａバイトの位置に対応していることを特徴とするバイト列探索器。
【請求項５】
連続するａ（ａは、２以上の整数）バイトから成る探索対象バイト列を探索するバイト列探索器であって、
ｎ（ｎは、ａ以上の整数）バイトのデータを与えられて格納する入力バッファと、
前記入力バッファから前記ｎバイトのデータを与えられ、前記探索対象バイト列における第１バイトと比較して、バイト単位での一致／不一致を示す１バイトの第１の比較結果を出力する第１の比較器と、
前記入力バッファから前記ｎバイトのデータを与えられ、前記探索対象バイト列における第ｊ（ｊは１＜ｊ＜ａの範囲における連続する整数）バイトと比較して、バイト単位での一致／不一致を示す１バイトの第ｊの比較結果を出力する第ｊの比較器と、
前記入力バッファから前記ｎバイトのデータを与えられ、前記探索対象バイト列における第ａバイトと比較して、バイト単位での一致／不一致を示す１バイトの第ａの比較結果を出力する第ａの比較器と、
前記第１の比較器から前記第１の比較結果を与えられて格納する第１の一致／不一致マップレジスタと、
前記第ｊの比較器から前記第ｊの比較結果を与えられて格納する第ｊの一致／不一致マップレジスタと、
前記第ａの比較器から前記第ａの比較結果を与えられて格納する第ａの一致／不一致マップレジスタと、
前記第１〜第ａの一致／不一致マップレジスタにＬＳＢから順にそれぞれの前記第１〜第ａの比較結果のデータが詰められて格納されるときは、
前記第１の一致／不一致マップレジスタに前回格納されていた前記第１の比較結果における第ｎ／８のビット、第（ｎ／８−（ａ−ｊ））のビットを与えられて格納する第１のレジスタと、
前記第ｊの一致／不一致マップレジスタに前回格納されていた前記第ｊの比較結果における第ｎ／８のビット、第（ｎ／８−（ａ−（ｎ＋１）））のビットを与えられて格納する第ｊのレジスタと、
前記第（ａ−１）の一致／不一致マップレジスタに前回格納されていた前記第（ａ−１）の比較結果における第ｎ／８のビットを与えられて格納する第（ａ−１）のレジスタと、
前記第ａの一致／不一致マップレジスタに格納された前記第ａの比較結果における第１ビットの値と、前記第（ａ−（ｊ−１））のレジスタに格納された前記第（ｎ／８−（ｎ−２））ビットの値と、前記第１のレジスタの前記第（ａ−（ｊ−１））ビットの値との間でＡＮＤ演算を行い、
前記第ａの一致／不一致マップレジスタに格納された前記第ａの比較結果における第ｊビットの値と、前記（ａ−（ｊ−１））の一致／不一致マップレジスタに格納された前記第（ａ−（ｊ−１））の比較結果における第（ｊ−１）ビットの値と、前記１のレジスタの前記第（ａ−ｊ）ビットの値との間でＡＮＤ演算を行い、
前記第ａの一致／不一致マップレジスタに格納された前記第ａの比較結果における第ｎ／８ビットの値と、前記第（ａ−（ｊ−１））の一致／不一致マップレジスタに格納された前記第（ａ−（ｊ−１））の比較結果における第（ｎ／８−（ｊ−１））ビットの値と、前記第１の一致／不一致マップレジスタに格納された前記第１の比較結果における第（８−（ａ−１））のビットの値との間でＡＮＤ演算を行い、１バイトの演算結果を出力するＡＮＤ回路、
あるいは、前記第１〜第ａの一致／不一致マップレジスタにＭＳＢから順にそれぞれの前記第１〜第ａの比較結果のデータが詰められて格納されるときは、
前記第１の一致／不一致マップレジスタに前回格納されていた前記第１の比較結果における第１のビット、第（ａ−（ｊ−１））のビットを与えられて格納する第１のレジスタと、
前記第ｊの一致／不一致マップレジスタに前回格納されていた前記第ｊの比較結果における第１のビット、第（ａ−ｊ）のビットを与えられて格納する第ｊのレジスタと、
前記第（ａ−１）の一致／不一致マップレジスタに前回格納されていた前記第（ａ−１）の比較結果における第１のビットを与えられて格納する第（ａ−１）のレジスタと、
前記第ａの一致／不一致マップレジスタに格納された前記第ａの比較結果における第１ビットの値と、前記第（ａ−（ｊ−１））の一致／不一致マップレジスタに格納された前記第（ａ−（ｊ−１））の比較結果における前記第ｊビットの値と、前記第１の一致／不一致マップレジスタに格納された前記第１の比較結果における前記第（ａ−１）ビットの値との間でＡＮＤ演算を行い、
前記第ａの一致／不一致マップレジスタに格納された前記第ａの比較結果における第ｊビットの値と、前記（ａ−（ｊ−１））の一致／不一致マップレジスタに格納された前記第（ａ−（ｊ−１））の比較結果における第（ｊ＋１）ビットの値と、前記１の一致／不一致マップレジスタに格納された前記ａビットの値との間でＡＮＤ演算を行い、
前記第ａの一致／不一致マップレジスタに格納された前記第ａの比較結果における第（ｎ／８−１）ビットの値と、前記第（ａ−（ｊ−１））の一致／不一致マップレジスタに格納された前記第（ａ−（ｊ−１））の比較結果における第（ｎ／８−（ｎ−２））ビットの値と、前記第１のレジスタに格納された前記第１の比較結果における第（ａ−（ｊ−１））のビットの値との間でＡＮＤ演算を行い、
前記第ａの一致／不一致マップレジスタに格納された前記第ａの比較結果における第ｎ／８ビットの値と、前記第（ａ−（ｊ−１））のレジスタに格納された前記第（ａ−（ｊ−１））の比較結果における第（ｊ−１）ビットの値と、前記第１のレジスタに格納された前記第１の比較結果における第（ａ−１）のビットの値との間でＡＮＤ演算を行い、１バイトの演算結果を出力するＡＮＤ回路と、
前記ＡＮＤ回路の演算結果を与えられて保持するバリディティレジスタと、
を備え、
前記バリディティレジスタにおいて一致を示す値が格納されたビット位置が、前記入力バッファに格納された前記データにおける前記探索対象バイト列の第ａバイトの位置とが対応していることを特徴とするバイト列探索器。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、バイト列探索器及び探索方法に関する。
【背景技術】
【０００２】
ＭＰ４といった所定のファイルフォーマットから、音楽や動画データが格納されている位置を特定するためには、ヘッダ情報を参照すればよい（例えば、非特許文献１参照）。
【０００３】
しかしながら、例えば、Ｈ．２６４の圧縮データのビットストリームから複数の動画データを復号する際には、ヘッダ情報がないため、ビットストリームに含まれる各動画データの先頭に配置されたスタートコードを探索する必要がある。このスタートコードとは、特定のバイト列（以下、探索対象バイト列と称する）から構成されている。
【０００４】
このような探索対象バイト列を、専用の回路なしに一般の中央処理装置（以下、ＣＰＵと称する）で探索する場合には、逐次処理が必要になる。逐次処理とはすなわち、ビットストリームの先頭から１バイトずつ、探索対象バイト列との比較を実行することであり、例えば探索対象バイト列が、第１乃至第３に至る３バイトから成る場合には以下のような処理が必要となる。
（Ａ）ビットストリームの先頭から１バイトを読み込み、これと探索対象バイト列の第１バイトとを比較する。合致すれば（Ｂ）に進む。合致しないときは、先に比較した１バイトに続く次の１バイトを読み込み、探索対象バイト列の第１バイトと比較する。合致するまで、１バイトの読み込みと第１バイトとの比較を繰り返す。
（Ｂ）ビットストリームから（Ａ）にて比較した１バイトに続く次の１バイトを読み込み、これと探索対象バイト列の第２バイトと比較する。合致すれば（Ｃ）に進む。合致しないときは、（Ａ）に戻り、（Ａ）にて比較した１バイトに続く次の１バイトから比較をやり直す。
（Ｃ）ビットストリームから（Ｂ）にて比較した１バイトに続く次の１バイトを読み込み、これと探索対象バイト列の第３バイトとを比較する。合致すれば終了する。合致しないときは（Ａ）に戻り、（Ａ）にて比較した１バイトに続く次の１バイトから比較をやり直す。
【０００５】
しかし、このような逐次処理に基づく従来の手法には、次のような制約があるため、高速な回路プロセスを用いたとしても、過去の探索履歴が有効活用できないために、処理速度を上げることが難しいという問題があった。
１）１回の手順で処理可能なビットストリームが１バイトに限定されること。
２）ａ（ａは２以上の整数）バイトから成る探索対象バイト列の第ｋ（ｋは２以上、ａ以下の整数）バイトで不一致となった場合、第１番目のバイトから第（ｋ−１）番目のバイトのビットストリームの内容が既知であるにもかかわらず、第ｋ番目のバイトの探索をするために、第１番目のバイトの次の第２番目のバイトの位置からやり直すこと。
【非特許文献１】ＩＳＯ  １４４９６−１４
【発明の開示】
【発明が解決しようとする課題】
【０００６】
本発明は上記事情に鑑み、バイト列の探索処理速度を向上させることが可能なバイト列探索器及び探索方法を提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明の一態様によるバイト列探索器は、
連続するａ（ａは、２以上の整数）バイトから成る探索対象バイト列を探索するバイト列探索器であって、
外部から入力されたｎバイト数（ｎは、ａ以上の整数）を有する第１のデータと、前記探索対象バイト列における第１バイトから第ａバイトに至るまでのいずれか1つのバイトとを比較して、バイト単位での一致／不一致の比較結果を出力するａ個の比較器と、
前記比較器の比較結果を用いて論理演算を実行することによって、連続するａバイトのバイト列の有無を出力する論理演算回路とを備え、
前記ａ個の比較器は、前記探索対象バイト列における第１バイトから第ａバイトに至るまで、お互いに別々の１つを選択して、並列して比較結果の出力を実行することを特徴とする。
【０００８】
また、本発明の一態様によるバイト列探索器は、
連続するａ（ａは、２以上の整数）バイトから成る探索対象バイト列を探索するバイト列探索器であって、
ｎ（ｎは、ａ以上の整数）バイトのデータを与えられて格納する入力バッファと、
前記入力バッファから前記ｎバイトのデータを与えられ、前記探索対象バイト列における第１バイト、第ｊ（ｊは１＜ｊ＜ａの範囲における連続する整数）バイト、第ａバイトと比較して、バイト単位での一致／不一致を示すそれぞれ１バイトずつの第１、第ｊ、第ａの比較結果を出力する比較器と、
前記比較器から前記第１、第ｊ、第ａの比較結果を与えられてそれぞれ格納する第１、第ｊ、第ａの一致／不一致マップレジスタと、
前記第１〜第ａの一致／不一致マップレジスタに最下位ビット（以下、ＬＳＢという）から順にそれぞれの前記第１〜第ａの比較結果のデータが詰められて格納されるときは、
前記第１の一致／不一致マップレジスタを上位ビット側に（ａ−１）ビットだけシフトし、前記第ｊの一致／不一致マップレジスタを上位ビット側に（ａ−ｊ）ビットだけシフトし、前記第（ａ−１）の一致／不一致マップレジスタを上位ビット側に１ビットだけシフトし、対応する前記第１、第ｊ、第ａの一致／不一致マップレジスタにおける対応するビット位置の値でＡＮＤ演算を行い、１バイトの演算結果を出力し、
あるいは、前記第１〜第ａの一致／不一致マップレジスタに最上位ビット（以下、ＭＳＢという）から順にそれぞれの前記第１〜第ａの比較結果のデータが詰められて格納されるときは、
前記第１の一致／不一致マップレジスタを下位ビット側に（ａ−１）ビットだけシフトし、前記第ｊの一致／不一致マップレジスタを下位ビット側に（ａ−ｊ）ビットだけシフトし、前記第（ａ−１）の一致／不一致マップレジスタを下位ビット側に１ビットだけシフトし、対応する前記第１、第ｊ、第ａの一致／不一致マップレジスタにおける対応するビット位置の値でＡＮＤ演算を行い、１バイトの演算結果を出力するＡＮＤ回路と、
を備えることを特徴とするバイト列探索器。
【０００９】
あるいは、本発明の一態様によるバイト列探索器は、
連続するａ（ａは、２以上の整数）バイトから成る探索対象バイト列を探索するバイト列探索器であって、
ｎ（ｎは、ａ以上の整数）バイトのデータを与えられて格納する入力バッファと、
前記入力バッファから前記ｎバイトのデータを与えられ、前記探索対象バイト列における第１バイトと比較して、バイト単位での一致／不一致を示す１バイトの第１の比較結果を出力する第１の比較器と、
前記入力バッファから前記ｎバイトのデータを与えられ、前記探索対象バイト列における第ｊ（ｊは１＜ｊ＜ａの範囲における連続する整数）バイトと比較して、バイト単位での一致／不一致を示す１バイトの第ｊの比較結果を出力する第ｊの比較器と、
前記入力バッファから前記ｎバイトのデータを与えられ、前記探索対象バイト列における第ａバイトと比較して、バイト単位での一致／不一致を示す１バイトの第ａの比較結果を出力する第ａの比較器と、
前記第１の比較器から前記第１の比較結果を与えられて格納する第１の一致／不一致マップレジスタと、
前記第ｊの比較器から前記第ｊの比較結果を与えられて格納する第ｊの一致／不一致マップレジスタと、
前記第ａの比較器から前記第ａの比較結果を与えられて格納する第ａの一致／不一致マップレジスタと、
前記第１〜第ａの一致／不一致マップレジスタにＬＳＢから順にそれぞれの前記第１〜第ａの比較結果のデータが詰められて格納されるときは、
前記第ａの一致／不一致マップレジスタに格納された前記第ａの比較結果における第１ビットの値と、不一致を示す値とを示す値との間でＡＮＤ演算を行い、
前記第ａの一致／不一致マップレジスタに格納された前記第ａの比較結果における第ｊビットの値と、前記第（ａ−（ｊ−１））の一致／不一致マップレジスタに格納された前記第（ａ−（ｊ−１））の比較結果における第（ｊ−１）ビットの値と、不一致を示す値との間でＡＮＤ演算を行い、
前記第ａの一致／不一致マップレジスタに格納された前記第ａの比較結果における第ｎ／８ビットの値と、前記第（ａ−（ｊ−１））の一致／不一致マップレジスタに格納された前記第（ａ−（ｊ−１））の比較結果における第（（ｎ／８）−（ｊ−１））ビットの値と、前記第１の一致／不一致マップレジスタに格納された前記第１の比較結果における第１のビットの値との間でＡＮＤ演算を行い、１バイトの演算結果を出力し、
あるいは、前記第１〜第ａの一致／不一致マップレジスタにＭＳＢから順にそれぞれの前記第１〜第ａの比較結果のデータが詰められて格納されるときは、
前記第ａの一致／不一致マップレジスタに格納された前記第ａの比較結果における第１ビットの値と、前記第（ａ−（ｊ−１））の一致／不一致マップレジスタに格納された前記第（ａ−（ｊ−１））の比較結果における第ｊビットの値と、前記第１の一致／不一致マップレジスタに格納された前記第１の比較結果における第（ａ−（ｊ−１））ビットの値との間でＡＮＤ演算を行い、
前記第ａの一致／不一致マップレジスタに格納された前記第ａの比較結果における第ｊビットの値と、前記第（ａ−（ｊ−１））の一致／不一致マップレジスタに格納された前記第（ａ−（ｊ−１））の比較結果における第（ｊ＋１）ビットの値と、前記第１の一致／不一致マップレジスタに格納された前記第１の比較結果における第ａビットの値との間でＡＮＤ演算を行い、
前記第ａの一致／不一致マップレジスタに格納された前記第ａの比較結果における第ｎ／８ビットの値と、不一致を示す値との間でＡＮＤ演算を行い、１バイトの演算結果を出力するＡＮＤ回路と、
前記ＡＮＤ回路の演算結果を与えられて保持するバリディティレジスタと、
を備え、
前記バリディティレジスタにおいて一致を示す値が格納されたビット位置が、前記入力バッファに格納された前記データにおける前記探索対象バイト列の第ａバイトの位置に対応していることを特徴とする。
【００１０】
あるいはまた、本発明の一態様によるバイト列探索器は、
連続するａ（ａは、２以上の整数）バイトから成る探索対象バイト列を探索するバイト列探索器であって、
ｎ（ｎは、ａ以上の整数）バイトのデータを与えられて格納する入力バッファと、
前記入力バッファから前記ｎバイトのデータを与えられ、前記探索対象バイト列における第１バイトと比較して、バイト単位での一致／不一致を示す１バイトの第１の比較結果を出力する第１の比較器と、
前記入力バッファから前記ｎバイトのデータを与えられ、前記探索対象バイト列における第ｊ（ｊは１＜ｊ＜ａの範囲における連続する整数）バイトと比較して、バイト単位での一致／不一致を示す１バイトの第ｊの比較結果を出力する第ｊの比較器と、
前記入力バッファから前記ｎバイトのデータを与えられ、前記探索対象バイト列における第ａバイトと比較して、バイト単位での一致／不一致を示す１バイトの第ａの比較結果を出力する第ａの比較器と、
前記第１の比較器から前記第１の比較結果を与えられて格納する第１の一致／不一致マップレジスタと、
前記第ｊの比較器から前記第ｊの比較結果を与えられて格納する第ｊの一致／不一致マップレジスタと、
前記第ａの比較器から前記第ａの比較結果を与えられて格納する第ａの一致／不一致マップレジスタと、
前記第１〜第ａの一致／不一致マップレジスタにＬＳＢから順にそれぞれの前記第１〜第ａの比較結果のデータが詰められて格納されるときは、
前記第１の一致／不一致マップレジスタに前回格納されていた前記第１の比較結果における第ｎ／８のビット、第（ｎ／８−（ａ−ｊ））のビットを与えられて格納する第１のレジスタと、
前記第ｊの一致／不一致マップレジスタに前回格納されていた前記第ｊの比較結果における第ｎ／８のビット、第（ｎ／８−（ａ−（ｎ＋１）））のビットを与えられて格納する第ｊのレジスタと、
前記第（ａ−１）の一致／不一致マップレジスタに前回格納されていた前記第（ａ−１）の比較結果における第ｎ／８のビットを与えられて格納する第（ａ−１）のレジスタと、
前記第ａの一致／不一致マップレジスタに格納された前記第ａの比較結果における第１ビットの値と、前記第（ａ−（ｊ−１））のレジスタに格納された前記第（ｎ／８−（ｎ−２））ビットの値と、前記第１のレジスタの前記第（ａ−（ｊ−１））ビットの値との間でＡＮＤ演算を行い、
前記第ａの一致／不一致マップレジスタに格納された前記第ａの比較結果における第ｊビットの値と、前記（ａ−（ｊ−１））の一致／不一致マップレジスタに格納された前記第（ａ−（ｊ−１））の比較結果における第（ｊ−１）ビットの値と、前記１のレジスタの前記第（ａ−ｊ）ビットの値との間でＡＮＤ演算を行い、
前記第ａの一致／不一致マップレジスタに格納された前記第ａの比較結果における第ｎ／８ビットの値と、前記第（ａ−（ｊ−１））の一致／不一致マップレジスタに格納された前記第（ａ−（ｊ−１））の比較結果における第（ｎ／８−（ｊ−１））ビットの値と、前記第１の一致／不一致マップレジスタに格納された前記第１の比較結果における第（８−（ａ−１））のビットの値との間でＡＮＤ演算を行い、１バイトの演算結果を出力するＡＮＤ回路、
あるいは、前記第１〜第ａの一致／不一致マップレジスタにＭＳＢから順にそれぞれの前記第１〜第ａの比較結果のデータが詰められて格納されるときは、
前記第１の一致／不一致マップレジスタに前回格納されていた前記第１の比較結果における第１のビット、第（ａ−（ｊ−１））のビットを与えられて格納する第１のレジスタと、
前記第ｊの一致／不一致マップレジスタに前回格納されていた前記第ｊの比較結果における第１のビット、第（ａ−ｊ）のビットを与えられて格納する第ｊのレジスタと、
前記第（ａ−１）の一致／不一致マップレジスタに前回格納されていた前記第（ａ−１）の比較結果における第１のビットを与えられて格納する第（ａ−１）のレジスタと、
前記第ａの一致／不一致マップレジスタに格納された前記第ａの比較結果における第１ビットの値と、前記第（ａ−（ｊ−１））の一致／不一致マップレジスタに格納された前記第（ａ−（ｊ−１））の比較結果における前記第ｊビットの値と、前記第１の一致／不一致マップレジスタに格納された前記第１の比較結果における前記第（ａ−１）ビットの値との間でＡＮＤ演算を行い、
前記第ａの一致／不一致マップレジスタに格納された前記第ａの比較結果における第ｊビットの値と、前記（ａ−（ｊ−１））の一致／不一致マップレジスタに格納された前記第（ａ−（ｊ−１））の比較結果における第（ｊ＋１）ビットの値と、前記１の一致／不一致マップレジスタに格納された前記ａビットの値との間でＡＮＤ演算を行い、
前記第ａの一致／不一致マップレジスタに格納された前記第ａの比較結果における第（ｎ／８−１）ビットの値と、前記第（ａ−（ｊ−１））の一致／不一致マップレジスタに格納された前記第（ａ−（ｊ−１））の比較結果における第（ｎ／８−（ｎ−２））ビットの値と、前記第１のレジスタに格納された前記第１の比較結果における第（ａ−（ｊ−１））のビットの値との間でＡＮＤ演算を行い、
前記第ａの一致／不一致マップレジスタに格納された前記第ａの比較結果における第ｎ／８ビットの値と、前記第（ａ−（ｊ−１））のレジスタに格納された前記第（ａ−（ｊ−１））の比較結果における第（ｊ−１）ビットの値と、前記第１のレジスタに格納された前記第１の比較結果における第（ａ−１）のビットの値との間でＡＮＤ演算を行い、１バイトの演算結果を出力するＡＮＤ回路と、
前記ＡＮＤ回路の演算結果を与えられて保持するバリディティレジスタと、
を備え、
前記バリディティレジスタにおいて一致を示す値が格納されたビット位置が、前記入力バッファに格納された前記データにおける前記探索対象バイト列の第ａバイトの位置とが対応していることを特徴とする。
【発明を実施するための最良の形態】
【００１１】
以下、本発明の実施の形態によるバイト列探索器及び探索方法について、図面を参照して説明する。
【００１２】
本実施の形態は、探索対象バイト列が以下の性質を持っていることを利用してバイト列探索処理を高速に実行するものである。
Ｉ）探索対象バイト列の最大長（ａバイト；ａは２以上の整数）が定まっている。
II）連続してバイト単位で配置された複数バイトから成るコードを探索対象とする。
【００１３】
尚、探索対象バイト列の最大長は、その一例としてここでは３バイト（２４ビット）であるとする。
【００１４】
（１）実施の形態１
本実施の形態１によるバイト列探索器の構成を図１に示す。
【００１５】
尚、本実施の形態１によるバイト列探索器では、レジスタの最下位ビット（ＬＳＢ）から順に上位ビットへ向けてデータが詰められて格納されていくスモールエンディアンの場合に相当する。
【００１６】
このバイト列探索器は、入力バッファ１１、バイト単位比較器２１〜２３、一致／不一致マップレジスタ３１〜３３、ＡＮＤ回路４１、及び出力レジスタ４２を備えている。
【００１７】
本実施の形態１によるバイト列探索方法における処理の手順を、図２のフローチャートに示す。
【００１８】
図２におけるステップＳ１０として、入力バッファ１１が、図示されていない外部の装置から転送されてきたビットストリームのうち、例えば６４ビット、即ち８バイト分のデータを格納する。ここで、本実施の形態では８バイトの例を示したが、これに限らず他のバイト数であってもよい。
【００１９】
図示されない外部の装置から送信されたデータのビットストリームは、例えば図３に示されたＨ．２６４のデータのようにバイトアラインされたデータである。このビットストリームには複数の動画データが含まれており、各々の複数の動画データは、その先頭が図３に示された、第１バイト、第２バイト、及び第３バイトからなるスタートコードである。この第１バイト、第２バイト、及び第３バイトが、探索対象バイト列である。
【００２０】
ステップＳ１１として、入力バッファ１１に保持された８バイト分のデータがバイト単位比較器２１に与えられる。バイト単位比較器２１は、このデータと、探索対象バイト列に含まれる８ビット分の第１バイトのデータ１０１とを比較し、バイト単位での一致又は不一致を判定する。
【００２１】
ステップＳ１４として、この判定結果は、８ビットの一致／不一致マップレジスタ３１に与えられる。バイト単位で一致した箇所には、対応するビットに例えば「１」、不一致のビットには「０」が書き込まれる。
【００２２】
これにより、入力バッファ１１のデータと、探索対象バイト列の第１バイトのデータ１０１とのバイト単位での一致／不一致を示すマップが作成される。
【００２３】
このステップＳ１１及びＳ１４と並行して、ステップＳ１２として、入力バッファ１１に保持されたデータがバイト単位比較器２２に与えられる。バイト単位比較器２２は、このデータと、探索対象バイト列の第２バイトのデータ１０２とを比較して、バイト単位での一致又は不一致を判定する。
【００２４】
ステップＳ１５として、この判定結果が一致／不一致マップレジスタ３２の各ビットに与えられ、第２バイトのデータ１０２との一致／不一致マップが作成される。
【００２５】
同様に、ステップＳ１３として、入力バッファ１１から８バイトのデータがバイト単位比較器２３に与えられる。バイト単位比較器２３は、このデータと、探索対象バイト列の第３バイトのデータ１０３とを比較し、バイト単位での一致又は不一致を判定する。
【００２６】
ステップＳ１６として、この判定結果が一致／不一致マップレジスタ３３の各ビットに与えられ、第３バイトのデータ１０３との一致／不一致マップが作成される。
【００２７】
ここで、入力バッファ１１、比較器２１０〜２１７を有するバイト単位比較器２１、一致／不一致マップレジスタ３１の接続関係を図４に示す。入力バッファ１１に格納された８バイトのデータのうち、０〜７ビット、８〜１５ビット、…、５６〜６３ビットにおけるそれぞれ１バイトずつ８組のデータが、それぞれ対応する比較器２１０、２１１、…、２１７に与えられる。
【００２８】
一方、第１バイトのデータ１０１のデータが全ての比較器２１０〜２１７に与えられ、入力バッファ１１からのデータとそれぞれ比較される。比較された結果が、一致／不一致マップレジスタ３１の０〜７ビットに与えられて保持される。
【００２９】
ステップＳ１７として、ＡＮＤ回路４１が、一致／不一致マップレジスタ３１〜３３の各ビット毎に論理演算、具体的にはＡＮＤ演算を行う。ここで、図１及び図２のステップＳ１７に示されたように、一致／不一致マップレジスタ３１が左方向（上位ビット側）へ２ビット、一致／不一致マップレジスタ３２が左方向へ１ビットそれぞれシフトされた状態で、各ビット毎にＡＮＤ演算を行う。
【００３０】
即ち、一致／不一致マップレジスタ３３に保持された第３バイトに関する一致／不一致を示す第１ビットと、不一致を示す値「０」と、「０」とでＡＮＤ演算を行う。
【００３１】
一致／不一致マップレジスタ３３に保持された第３バイトに関する一致／不一致を示す第２ビットと、一致／不一致マップレジスタ３２に保持された第２バイトに関する一致／不一致を示す第１ビットと、「０」とでＡＮＤ演算を行う。
【００３２】
一致／不一致マップレジスタ３３に保持された第３バイトに関する一致／不一致を示す第３ビットと、一致／不一致マップレジスタ３２に保持された第２バイトに関する一致／不一致を示す第２ビットと、一致／不一致マップレジスタ３１に保持された第１バイトに関する一致／不一致を示す第１ビットとでＡＮＤ演算を行う。
【００３３】
一致／不一致マップレジスタ３３に保持された第３バイトに関する一致／不一致を示す第ｊ＋２（ｊは１以上で、ビット数（ｎ−２）以下、ここでは６以下の整数）ビットと、一致／不一致マップレジスタ３２に保持された第２バイトに関する一致／不一致を示す第ｊ＋１ビットと、一致／不一致マップレジスタ３１に保持された第１バイトに関する一致／不一致を示す第ｊビットとでＡＮＤ演算を行う。
【００３４】
一致／不一致マップレジスタ３３に保持された第３バイトに関する一致／不一致を示す第８ビットと、一致／不一致マップレジスタ３２に保持された第２バイトに関する一致／不一致マップを示す第７ビットと、一致／不一致マップレジスタ３１に関する第１バイトに関する一致／不一致を示す第６ビットとでＡＮＤ演算を行う。
【００３５】
このように、一致／不一致マップレジスタ３１〜３３の間で１ビットずつずれた位置同士の間でＡＮＤ演算を行っていく。
【００３６】
そして、ＡＮＤ演算の結果が、各ビット毎にバリディティレジスタ４２に与えられて保持される。これにより、第１〜第３バイトの一致／不一致マップが作成されることになる。
【００３７】
ステップＳ１８において、バリディティレジスタ４２において、３バイトの検索対象バイト列が検索されたことを示す「１」の値が格納されたビットが存在する場合は、処理を終了する。そして、このビット位置に対応した箇所において、入力バッファ１１中に３ビットから成る探索対象バイト列が存在することになる。
【００３８】
ここで、バリディティレジスタ４２における「１」の値が保持されたビット位置とは、探索対象バイト列の第３バイトにおけるビット位置に相当する。
【００３９】
ステップＳ１８において、バリディティレジスタ４２のいずれのビットにおいても「１」が存在しない場合は、ステップＳ１９へ移行する。
【００４０】
ステップＳ１９では、入力バッファ１１が格納可能なバイト数、ここでは８バイト分ポインタｉ（ｉは１以上の整数）を＋１進めて、ビットストリームから次の８バイトのデータを受け取って格納する。そして、ステップＳ１０へ戻り、同様の処理を繰り返す。
【００４１】
本実施の形態１によれば、次のような作用、効果が得られる。探索対象バイト列における各バイト毎の一致／不一致の判定処理を、並列に実行することができる。これにより、ＣＰＵを用いた逐次処理と比べて大幅に高速化を図ることが可能である。
【００４２】
また最終的に、３バイトの探索対象バイト列と入力バッファ１１のデータとが一致したバイト位置を示す一致／不一致マップを得るまでの手順において、ビットストリームからデータを読む動作は、一致／不一致の判定処理を行うために行う１回だけでよい。このため、ＣＰＵを用いた逐次処理の際に見られたような「読み直し」による無駄が発生しない。
【００４３】
さらに、本実施の形態１によるバイト列探索器の回路構成は、バイト単位比較器２１〜２３、ＡＮＤ回路４１の他、入力バッファ１１、一致／不一致マップレジスタ３１〜３３、及びバリディティレジスタ４２といった小規模なレジスタ群であって、回路面積は小さく消費電力は軽微である。よって、コスト低減に寄与することができる。
【００４４】
また、ＡＮＤ回路４１における演算論理も単純であるので、高速動作が可能である。
【００４５】
（２）実施の形態２
本実施の形態２によるバイト列探索器の構成を図５に示す。
【００４６】
尚、本実施の形態２によるバイト列探索器では、上記実施の形態１と同様にスモールエンディアンの場合に相当する。
【００４７】
上記実施の形態１では、入力バッファ１１に取り込んだ８バイト分のデータの中に、３バイトから成る探索対象バイトの全てが含まれている場合にのみ、探索を行うことができる。
【００４８】
これに対し本実施の形態２では、入力バッファ１１に格納された８バイトのデータと、その境界を超えて前又は後に続くデータとに跨って３バイトの探索対象バイトが存在する場合にも探索が可能な構成を備えている。
【００４９】
本実施の形態２によるバイト列探索器は、図５に示されたように、探索対象バイトの第１バイトの一致／不一致のマップを格納する一致／不一致マップレジスタ３１において、前回の入力バッファ１１の格納データに対する探索対象バイトの第１バイトの一致／不一致を示すマップの第７、第８ビットのデータ６１を格納するレジスタ５１を備える。
【００５０】
このレジスタ５１に格納されたデータ６１は、今回の入力バッファ１１の格納データに対する探索対象バイトの第１バイトの一致／不一致を示すマップの第１ビットの右側（最下位ビット側）に、２ビットのデータ６２として配置されたイメージとなる。
【００５１】
同様に、探索対象バイトの第２バイトの一致／不一致のマップを格納する一致／不一致マップレジスタ３２において、前回の入力バッファ１１の格納データに対する探索対象バイトの第２バイトの一致／不一致を示すマップの第８ビットのデータ６３を格納するレジスタ５２を備える。
【００５２】
このレジスタ５２に格納されたデータ６３は、今回の入力バッファ１１の格納データに対する探索対象バイトの第２バイトの一致／不一致を示すマップの第１ビットの右側に、１ビットのデータ６４として配置されたイメージとなる。
【００５３】
そして、本実施の形態２では、ＡＮＤ回路４１において、次のようなＡＮＤ演算が行われる。
【００５４】
一致／不一致マップレジスタ３３に保持された第３バイトに関する一致／不一致を示す第１ビットと、一致／不一致マップレジスタ３２に前回保持され今回レジスタ５２に保持された第２バイトに関する一致／不一致を示す第８ビットと、一致／不一致マップレジスタ３１に前回保持され今回レジスタ５１に保持された第１バイトに関する一致／不一致を示す第７ビットとで、ＡＮＤ演算を行う。
【００５５】
一致／不一致マップレジスタ３３に保持された第３バイトに関する一致／不一致を示す第２ビットと、一致／不一致マップレジスタ３２に保持された第２バイトに関する一致／不一致を示す第１ビットと、一致／不一致マップレジスタ３１に前回保持され今回レジスタ５１に保持された第１バイトに関する一致／不一致を示す第８ビットとで、ＡＮＤ演算を行う。
【００５６】
一致／不一致マップレジスタ３３に保持された第３バイトに関する一致／不一致を示す第３ビットと、一致／不一致マップレジスタ３２に保持された第２バイトに関する一致／不一致を示す第２ビットと、一致／不一致マップレジスタ３１に保持された第１バイトに関する一致／不一致を示す第１ビットとでＡＮＤ演算を行う。
【００５７】
一致／不一致マップレジスタ３３に保持された第３バイトに関する一致／不一致を示す第ｊ＋２（ｊは１以上で、ビット数（ｎ−２）以下、ここでは６以下の整数）ビットと、一致／不一致マップレジスタ３２に保持された第２バイトに関する一致／不一致を示す第ｊ＋１ビットと、一致／不一致マップレジスタ３１に保持された第１バイトに関する一致／不一致を示す第ｊビットとでＡＮＤ演算を行う。
【００５８】
一致／不一致マップレジスタ３３に保持された第３バイトに関する一致／不一致を示す第８ビットと、一致／不一致マップレジスタ３２に保持された第２バイトに関する一致／不一致マップを示す第７ビットと、一致／不一致マップレジスタ３１に関する第１バイトに関する一致／不一致を示す第６ビットとでＡＮＤ演算を行う。
【００５９】
ＡＮＤ回路４１における演算結果は、上記実施の形態１と同様にバリディティレジスタ４２に保持される。
【００６０】
本実施の形態２によれば、入力レジスタ１１に保持可能な８バイト分のデータと、その境界を超えてその前又は後に続くデータとに跨って３バイトの探索対象バイトが存在する場合にも、探索することが可能である。
【００６１】
（３）実施の形態３
本発明の実施の形態３によるバイト単位比較器について、その構成を示した図６を用いて説明する。本実施の形態３によるバイト列探索器では、レジスタの最上位ビット（ＭＳＢ）から順に下位ビットへ向けてデータが詰めて格納されていくビッグエンディアンの場合に相当する。他の構成は、上記実施の形態１と同様であり、説明を省略する。
【００６２】
上記実施の形態１では、図２に示されたフローチャートに従ってバイト探索処理が行われるが、本実施の形態では図７に示されたフローチャートで処理が行われる。
【００６３】
ここで、図２に示された上記実施の形態１と図７に示された本実施の形態３とでは、ステップＳ１７における、ＡＮＤ回路４１が一致／不一致マップレジスタ３１〜３３の各ビット毎にＡＮＤ演算を行うときのデータが相違する。
【００６４】
本実施の形態３では、一致／不一致マップレジスタ３１が右方向（下位ビット側）へ２ビット、一致／不一致マップレジスタ３２が右方向へ１ビットそれぞれシフトされた状態で、各ビット毎にＡＮＤ演算を行う。
【００６５】
即ち、一致／不一致マップレジスタ３３に保持された第３バイトに関する一致／不一致を示す第１ビットと、一致／不一致マップレジスタ３２に保持された第２バイトに関する一致／不一致を示す第２ビットと、一致／不一致マップレジスタ３１に保持された第１バイトに関する一致／不一致を示す第３ビットとでＡＮＤ演算を行う。
【００６６】
一致／不一致マップレジスタ３３に保持された第３バイトに関する一致／不一致を示す第２ビットと、一致／不一致マップレジスタ３２に保持された第３バイトに関する一致／不一致を示す第３ビットと、一致／不一致マップレジスタ３１に保持された第１バイトに関する一致／不一致を示す第４ビットとでＡＮＤ演算を行う。
【００６７】
一致／不一致マップレジスタ３３に保持された第３バイトに関する一致／不一致を示す第ｊビットと、一致／不一致マップレジスタ３２に保持された第２バイトに関する一致／不一致を示す第ｊ＋１ビットと、一致／不一致マップレジスタ３１に保持された第１バイトに関する一致／不一致を示す第ｊ＋２ビットとでＡＮＤ演算を行う。
【００６８】
一致／不一致マップレジスタ３３に保持された第３バイトに関する一致／不一致を示す第７ビットと、一致／不一致マップレジスタ３２に保持された第２バイトに関する一致／不一致マップを示す第８ビットと、不一致を示す値「０」とでＡＮＤ演算を行う。
【００６９】
一致／不一致マップレジスタ３３に保持された第３バイトに関する一致／不一致を示す第８ビットと、値「０」と、値「０」とでＡＮＤ演算を行う。このように、一致／不一致マップレジスタ３１〜３３の間で１ビットずつずれた位置同士の間でＡＮＤ演算を行っていく。
【００７０】
以下の動作は上記実施の形態１と同様に、ＡＮＤ演算の結果が、各ビット毎にバリディティレジスタ４２に与えられて保持される。これにより、第１〜第３バイトの一致／不一致マップが作成されることになる。
【００７１】
本実施の形態３によれば、上記実施の形態１と同様に、探索対象バイト列における各バイト毎の一致／不一致の判定処理を、並列に実行することができるので、ＣＰＵを用いた逐次処理と比べて大幅に高速化を図ることが可能である。
【００７２】
（４）実施の形態４
本発明の実施の形態４によるバイト単位比較器の構成を、図８に示す。本実施の形態４によるバイト列探索器では、上記実施の形態３と同様にビッグエンディアンの場合に相当する。
【００７３】
本実施の形態４では、上記実施の形態２と同様に、入力バッファ１１に格納された８バイトのデータと、その境界を超えて前又は後に続くデータとに跨って３バイトの探索対象バイトが存在する場合にも探索が可能である。
【００７４】
本実施の形態４では、上記実施の形態２と異なり、探索対象バイトの第１バイトの一致／不一致のマップを格納する一致／不一致マップレジスタ３１において、前回の入力バッファ１１の格納データに対する探索対象バイトの第１バイトの一致／不一致を示すマップの第１、第２ビットのデータ６５を格納するレジスタ５１を備える。
【００７５】
このレジスタ５１に格納されたデータ６５は、今回の入力バッファ１１の格納データに対する探索対象バイトの第１バイトの一致／不一致を示すマップの第１ビットの左側（最上位ビット側）に、２ビットのデータ６６として配置されたイメージとなる。
【００７６】
同様に、探索対象バイトの第２バイトの一致／不一致のマップを格納する一致／不一致マップレジスタ３２において、前回の入力バッファ１１の格納データに対する探索対象バイトの第２バイトの一致／不一致を示すマップの第１ビットのデータ６７を格納するレジスタ５２を備える。
【００７７】
このレジスタ５２に格納されたデータ６７は、今回の入力バッファ１１の格納データに対する探索対象バイトの第２バイトの一致／不一致を示すマップの第１ビットの左側に、１ビットのデータ６８として配置されたイメージとなる。他の構成は上記実施の形態２と同様であり、説明を省略する。
【００７８】
本実施の形態４では、ＡＮＤ回路４１において、次のようなＡＮＤ演算が行われる。
【００７９】
一致／不一致マップレジスタ３３に保持された第３バイトに関する一致／不一致を示す第１ビットと、一致／不一致マップレジスタ３２に保持された第２バイトに関する一致／不一致を示す第２ビットと、一致／不一致マップレジスタ３１に保持された第１バイトに関する一致／不一致を示す第３ビットとで、ＡＮＤ演算を行う。
【００８０】
一致／不一致マップレジスタ３３に保持された第３バイトに関する一致／不一致を示す第２ビットと、一致／不一致マップレジスタ３２に保持された第２バイトに関する一致／不一致を示す第３ビットと、一致／不一致マップレジスタ３１に保持された第１バイトに関する一致／不一致を示す第４ビットとで、ＡＮＤ演算を行う。
【００８１】
一致／不一致マップレジスタ３３に保持された第３バイトに関する一致／不一致を示す第ｊビットと、一致／不一致マップレジスタ３２に保持された第２バイトに関する一致／不一致を示す第ｊ＋１ビットと、一致／不一致マップレジスタ３１に保持された第１バイトに関する一致／不一致を示す第ｊ＋２ビットとでＡＮＤ演算を行う。
【００８２】
一致／不一致マップレジスタ３３に保持された第３バイトに関する一致／不一致を示す第７ビットと、一致／不一致マップレジスタ３２に保持された第２バイトに関する一致／不一致マップを示す第８ビットと、一致／不一致マップレジスタ３２に前回保持され今回レジスタ５１に保持された第１バイトに関する一致／不一致を示す第１ビットとでＡＮＤ演算を行う。
【００８３】
一致／不一致マップレジスタ３３に保持された第３バイトに関する一致／不一致を示す第８ビットと、一致／不一致マップレジスタ３２に前回保持され今回レジスタ５２に保持された第２バイトに関する一致／不一致を示す第２ビットと、一致／不一致マップレジスタ３１に前回保持され今回レジスタ５１に保持された第１バイトに関する一致／不一致を示す第２ビットとでＡＮＤ演算を行う。
【００８４】
ＡＮＤ回路４１における演算結果は、上記実施の形態２と同様にバリディティレジスタ４２に保持される。
【００８５】
本実施の形態４によれば、上記実施の形態２と同様に、入力レジスタ１１に保持可能な８バイト分のデータと、その境界を超えてその前又は後に続くデータとに跨って３バイトの探索対象バイトが存在する場合にも、探索することが可能である。
【００８６】
上述した実施の形態はいずれも一例であり、本発明を限定するものではなく、本発明の技術的範囲内において様々に変形することができる。例えば、上記実施の形態では探索対象バイト列が３バイトから成る場合を例にとっているが、２バイト以上であればいかなるバイト数であってもよい。また、例えば、上記実施の形態では、一致の場合には「１」、不一致の場合には「０」となる一致／不一致マップレジスタ３１〜３３と、ＡＮＤ演算を実行するＡＮＤ回路４１を用いる場合を例にとっているが、一致の場合には「０」、不一致の場合には「１」となる一致／不一致マップレジスタと、ＯＲ演算を実行するＯＲ回路を用いてもよい。
【００８７】
また、本発明における他の実施態様として、以下の態様も含む。
【００８８】
例えば、一態様による、連続するａ（ａは、２以上の整数）バイトから成る探索対象バイト列を探索するバイト列探索方法であって、
ｎ（ｎは、ａ以上の整数）バイトのデータと、前記探索対象バイト列における第１バイト、第ｊ（ｊは１＜ｊ＜ａの範囲における連続する整数）バイト、第ａバイトとを比較して、バイト単位での一致／不一致を示すそれぞれ１バイトの第１、第ｊ、第ａの比較結果を、比較器により生成するステップと、
第１、第ｊ、第ａの一致／不一致マップレジスタに、前記第１、第ｊ、第ａの比較結果をそれぞれ格納するステップと、
前記第１〜第ａの一致／不一致マップレジスタにＬＳＢから順にそれぞれの前記第１〜第ａの比較結果のデータが詰められて格納されるときは、
前記第１の一致／不一致マップレジスタを上位ビット側に（ａ−１）ビットだけシフトし、前記第ｊの一致／不一致マップレジスタを上位ビット側に（ａ−ｊ）ビットだけシフトし、前記第（ａ−１）の一致／不一致マップレジスタを上位ビット側に１ビットだけシフトし、対応する前記第１、第ｊ、第ａの一致／不一致マップレジスタにおける対応するビット位置の値で、ＡＮＤ回路によりＡＮＤ演算を行い、8ビットの演算結果を生成し、
あるいは、前記第１〜第ａの一致／不一致マップレジスタにＭＳＢから順にそれぞれの前記第１〜第ａの比較結果のデータが詰められて格納されるときは、
前記第１の一致／不一致マップレジスタを下位ビット側に（ａ−１）ビットだけシフトし、前記第ｊの一致／不一致マップレジスタを下位ビット側に（ａ−ｊ）ビットだけシフトし、前記第（ａ−１）の一致／不一致マップレジスタを下位ビット側に１ビットだけシフトし、対応する前記第１、第ｊ、第ａの一致／不一致マップレジスタにおける対応するビット位置の値で、ＡＮＤ回路によりＡＮＤ演算を行い、8ビットの演算結果を生成するステップと、
を備えることを特徴とするバイト列探索方法。
【００８９】
あるいは、他の態様としての、連続するａ（ａは、２以上の整数）バイトから成る探索対象バイト列を探索するバイト列探索方法であって、
入力バッファに、ｎ（ｎは、ａ以上の整数）バイトのデータを与えて格納するステップと、
前記入力バッファから前記ｎバイトのデータを第１の比較器に与えて、前記探索対象バイト列における第１バイトと比較して、バイト単位での一致／不一致を示すｎビットの第１の比較結果を生成するステップと、
前記入力バッファから前記ｎバイトのデータを第ｊ（ｊは１＜ｊ＜ａの範囲における連続する整数）の比較器に与えて、前記探索対象バイト列における第ｊバイトと比較して、バイト単位での一致／不一致を示すｎビットの第ｊの比較結果を生成するステップと、
前記入力バッファから前記ｎバイトのデータを第ａの比較器に与えて、前記探索対象バイト列における第ａバイトと比較して、バイト単位での一致／不一致を示すｎビットの第ａの比較結果を生成するステップと、
前記第１の比較器から前記第１の比較結果を第１の一致／不一致マップレジスタに与えて格納するステップと、
前記第ｊの比較器から前記第ｊの比較結果を第ｊの一致／不一致マップレジスタに与えて格納するステップと、
前記第ａの比較器から前記第ａの比較結果を第ａの一致／不一致マップレジスタに与えて格納するステップと、
ＡＮＤ回路により、前記第１〜第ａの一致／不一致マップレジスタにＬＳＢから順にそれぞれの前記第１〜第ａの比較結果のデータが詰められて格納されるときは、
前記第ａの一致／不一致マップレジスタに格納された前記第ａの比較結果における第１ビットの値と、不一致を示す値との間でＡＮＤ演算を行い、
前記第ａの一致／不一致マップレジスタに格納された前記第ａの比較結果における第ｊビットの値と、前記第（ａ−（ｊ−１））の一致／不一致マップレジスタに格納された前記第（ａ−１）の比較結果における第１ビットの値と、不一致を示す値との間でＡＮＤ演算を行い、
前記第ａの一致／不一致マップレジスタに格納された前記第ａの比較結果における第ｎ／８ビットの値と、前記第（ａ−（ｎ−１））の一致／不一致マップレジスタに格納された前記第（ａ−（ｎ−１））の比較結果における第（ｎ／８−１）ビットの値と、前記第１の一致／不一致マップレジスタに格納された前記第１の比較結果における第１のビットの値との間でＡＮＤ演算を行い、8ビットの演算結果を生成し、
あるいは、前記第１〜第ａの一致／不一致マップレジスタにＭＳＢから順にそれぞれの前記第１〜第ａの比較結果のデータが詰められて格納されるときは、
前記第ａの一致／不一致マップレジスタに格納された前記第ａの比較結果における第１ビットの値と、前記第（ａ−（ｊ−１））の一致／不一致マップレジスタに格納された第（ａ−（ｊ−１））の比較結果における第ｊビットの値と、前記第１の一致／不一致マップレジスタに格納された前記第１の比較結果における第（ａ−１）ビットの値との間でＡＮＤ演算を行い、
前記第ａの一致／不一致マップレジスタに格納された前記第ａの比較結果における第ｊビットの値と、前記第（ａ−（ｊ−１））の一致／不一致マップレジスタに格納された前記第（ａ−（ｊ−１））の比較結果における第（ｊ＋１）ビットの値と、前記第１の一致／不一致マップレジスタに格納された前記第１の比較結果における第ａビットの値との間でＡＮＤ演算を行い、
前記第ａの一致／不一致マップレジスタに格納された前記第ａの比較結果における第ｎ／８ビットの値と、不一致を示す値との間でＡＮＤ演算を行い、8ビットの演算結果を生成するステップと、
前記演算結果をバリディティレジスタに与えて格納するステップと、
を備え、
前記バリディティレジスタにおいて一致を示す値が格納されたビット位置が、前記入力バッファに格納された前記データにおける前記探索対象バイト列の第ａバイトの位置に対応していることを特徴とするバイト列探索方法。
【図面の簡単な説明】
【００９０】
【図１】本発明の実施の形態１によるバイト列探索器の構成を示したブロック図。
【図２】同実施の形態１によるバイト列探索方法の手順を示したフローチャート。
【図３】同実施の形態１によるバイト列探索器に入力するＨ．２６４の動画データのビットストリームの構成を示す説明図。
【図４】同実施の形態１によるバイト列探索器に含まれるバイト単位比較器の構成を示した回路図。
【図５】本発明の実施の形態２によるバイト列探索器の構成を示したブロック図。
【図６】本発明の実施の形態３によるバイト列探索器の構成を示したブロック図。
【図７】同実施の形態３によるバイト列探索方法の手順を示したフローチャート。
【図８】本発明の実施の形態４によるバイト列探索器の構成を示したブロック図。
【符号の説明】
【００９１】
１１  入力バッファ
２１〜２３  バイト単位比較器
３１〜３３  一致／不一致マップレジスタ
４１  ＡＮＤ回路
４２  出力バッファ
【図１】
2007274051.tif 000003
【図２】
2007274051.tif 000004
【図３】
2007274051.tif 000005
【図４】
2007274051.tif 000006
【図５】
2007274051.tif 000007
【図６】
2007274051.tif 000008
【図７】
2007274051.tif 000009
【図８】
2007274051.tif 000010