JP2007274051A - バイト列探索器及び探索方法 - Google Patents

バイト列探索器及び探索方法 Download PDF

Info

Publication number
JP2007274051A
JP2007274051A JP2006093844A JP2006093844A JP2007274051A JP 2007274051 A JP2007274051 A JP 2007274051A JP 2006093844 A JP2006093844 A JP 2006093844A JP 2006093844 A JP2006093844 A JP 2006093844A JP 2007274051 A JP2007274051 A JP 2007274051A
Authority
JP
Japan
Prior art keywords
match
byte
bit
mismatch
register
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
JP2006093844A
Other languages
English (en)
Inventor
Toshihide Fujiyoshi
吉 敏 英 藤
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.)
Toshiba Corp
Original Assignee
Toshiba Corp
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 Toshiba Corp filed Critical Toshiba Corp
Priority to JP2006093844A priority Critical patent/JP2007274051A/ja
Priority to US11/727,893 priority patent/US20070244889A1/en
Publication of JP2007274051A publication Critical patent/JP2007274051A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/903Querying
    • G06F16/90335Query processing
    • G06F16/90339Query processing by using parallel associative memories or content-addressable memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/903Querying
    • G06F16/90335Query processing
    • G06F16/90344Query processing by using string matching techniques

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

【課題】バイト列の探索処理速度を向上させることが可能なバイト列探索器及び探索方法を提供する。
【解決手段】連続するaバイトから成る探索対象バイト列を探索するバイト列探索器であって、nバイトのデータを与えられて格納する入力バッファ11と、入力バッファからnバイトのデータを与えられ、探索対象バイト列における第1バイト〜第aバイトと比較して、バイト単位での一致/不一致を示すそれぞれ1バイトの第1〜第aの比較結果を出力する比較器21〜23と、比較器から第1〜第aの比較結果を与えられてそれぞれ格納する一致/不一致マップレジスタ31〜33と、一致/不一致マップレジスタ31を上位ビット側に(a−1)ビットだけシフトし、一致/不一致マップレジスタ32を上位ビット側に(aC2)ビットだけシフトし、対応する一致/不一致マップレジスタ31〜33における対応するビット位置の値でAND演算を行い、1バイトの演算結果を出力するAND回路41とを備える。
【選択図】図1

Description

本発明は、バイト列探索器及び探索方法に関する。
MP4といった所定のファイルフォーマットから、音楽や動画データが格納されている位置を特定するためには、ヘッダ情報を参照すればよい(例えば、非特許文献1参照)。
しかしながら、例えば、H.264の圧縮データのビットストリームから複数の動画データを復号する際には、ヘッダ情報がないため、ビットストリームに含まれる各動画データの先頭に配置されたスタートコードを探索する必要がある。このスタートコードとは、特定のバイト列(以下、探索対象バイト列と称する)から構成されている。
このような探索対象バイト列を、専用の回路なしに一般の中央処理装置(以下、CPUと称する)で探索する場合には、逐次処理が必要になる。逐次処理とはすなわち、ビットストリームの先頭から1バイトずつ、探索対象バイト列との比較を実行することであり、例えば探索対象バイト列が、第1乃至第3に至る3バイトから成る場合には以下のような処理が必要となる。
(A)ビットストリームの先頭から1バイトを読み込み、これと探索対象バイト列の第1バイトとを比較する。合致すれば(B)に進む。合致しないときは、先に比較した1バイトに続く次の1バイトを読み込み、探索対象バイト列の第1バイトと比較する。合致するまで、1バイトの読み込みと第1バイトとの比較を繰り返す。
(B)ビットストリームから(A)にて比較した1バイトに続く次の1バイトを読み込み、これと探索対象バイト列の第2バイトと比較する。合致すれば(C)に進む。合致しないときは、(A)に戻り、(A)にて比較した1バイトに続く次の1バイトから比較をやり直す。
(C)ビットストリームから(B)にて比較した1バイトに続く次の1バイトを読み込み、これと探索対象バイト列の第3バイトとを比較する。合致すれば終了する。合致しないときは(A)に戻り、(A)にて比較した1バイトに続く次の1バイトから比較をやり直す。
しかし、このような逐次処理に基づく従来の手法には、次のような制約があるため、高速な回路プロセスを用いたとしても、過去の探索履歴が有効活用できないために、処理速度を上げることが難しいという問題があった。
1)1回の手順で処理可能なビットストリームが1バイトに限定されること。
2)a(aは2以上の整数)バイトから成る探索対象バイト列の第k(kは2以上、a以下の整数)バイトで不一致となった場合、第1番目のバイトから第(k−1)番目のバイトのビットストリームの内容が既知であるにもかかわらず、第k番目のバイトの探索をするために、第1番目のバイトの次の第2番目のバイトの位置からやり直すこと。
ISO 14496−14
本発明は上記事情に鑑み、バイト列の探索処理速度を向上させることが可能なバイト列探索器及び探索方法を提供することを目的とする。
本発明の一態様によるバイト列探索器は、
連続するa(aは、2以上の整数)バイトから成る探索対象バイト列を探索するバイト列探索器であって、
外部から入力されたnバイト数(nは、a以上の整数)を有する第1のデータと、前記探索対象バイト列における第1バイトから第aバイトに至るまでのいずれか1つのバイトとを比較して、バイト単位での一致/不一致の比較結果を出力するa個の比較器と、
前記比較器の比較結果を用いて論理演算を実行することによって、連続するaバイトのバイト列の有無を出力する論理演算回路とを備え、
前記a個の比較器は、前記探索対象バイト列における第1バイトから第aバイトに至るまで、お互いに別々の1つを選択して、並列して比較結果の出力を実行することを特徴とする。
また、本発明の一態様によるバイト列探索器は、
連続するa(aは、2以上の整数)バイトから成る探索対象バイト列を探索するバイト列探索器であって、
n(nは、a以上の整数)バイトのデータを与えられて格納する入力バッファと、
前記入力バッファから前記nバイトのデータを与えられ、前記探索対象バイト列における第1バイト、第j(jは1<j<aの範囲における連続する整数)バイト、第aバイトと比較して、バイト単位での一致/不一致を示すそれぞれ1バイトずつの第1、第j、第aの比較結果を出力する比較器と、
前記比較器から前記第1、第j、第aの比較結果を与えられてそれぞれ格納する第1、第j、第aの一致/不一致マップレジスタと、
前記第1〜第aの一致/不一致マップレジスタに最下位ビット(以下、LSBという)から順にそれぞれの前記第1〜第aの比較結果のデータが詰められて格納されるときは、
前記第1の一致/不一致マップレジスタを上位ビット側に(a−1)ビットだけシフトし、前記第jの一致/不一致マップレジスタを上位ビット側に(a−j)ビットだけシフトし、前記第(a−1)の一致/不一致マップレジスタを上位ビット側に1ビットだけシフトし、対応する前記第1、第j、第aの一致/不一致マップレジスタにおける対応するビット位置の値でAND演算を行い、1バイトの演算結果を出力し、
あるいは、前記第1〜第aの一致/不一致マップレジスタに最上位ビット(以下、MSBという)から順にそれぞれの前記第1〜第aの比較結果のデータが詰められて格納されるときは、
前記第1の一致/不一致マップレジスタを下位ビット側に(a−1)ビットだけシフトし、前記第jの一致/不一致マップレジスタを下位ビット側に(a−j)ビットだけシフトし、前記第(a−1)の一致/不一致マップレジスタを下位ビット側に1ビットだけシフトし、対応する前記第1、第j、第aの一致/不一致マップレジスタにおける対応するビット位置の値でAND演算を行い、1バイトの演算結果を出力するAND回路と、
を備えることを特徴とするバイト列探索器。
あるいは、本発明の一態様によるバイト列探索器は、
連続するa(aは、2以上の整数)バイトから成る探索対象バイト列を探索するバイト列探索器であって、
n(nは、a以上の整数)バイトのデータを与えられて格納する入力バッファと、
前記入力バッファから前記nバイトのデータを与えられ、前記探索対象バイト列における第1バイトと比較して、バイト単位での一致/不一致を示す1バイトの第1の比較結果を出力する第1の比較器と、
前記入力バッファから前記nバイトのデータを与えられ、前記探索対象バイト列における第j(jは1<j<aの範囲における連続する整数)バイトと比較して、バイト単位での一致/不一致を示す1バイトの第jの比較結果を出力する第jの比較器と、
前記入力バッファから前記nバイトのデータを与えられ、前記探索対象バイト列における第aバイトと比較して、バイト単位での一致/不一致を示す1バイトの第aの比較結果を出力する第aの比較器と、
前記第1の比較器から前記第1の比較結果を与えられて格納する第1の一致/不一致マップレジスタと、
前記第jの比較器から前記第jの比較結果を与えられて格納する第jの一致/不一致マップレジスタと、
前記第aの比較器から前記第aの比較結果を与えられて格納する第aの一致/不一致マップレジスタと、
前記第1〜第aの一致/不一致マップレジスタにLSBから順にそれぞれの前記第1〜第aの比較結果のデータが詰められて格納されるときは、
前記第aの一致/不一致マップレジスタに格納された前記第aの比較結果における第1ビットの値と、不一致を示す値とを示す値との間でAND演算を行い、
前記第aの一致/不一致マップレジスタに格納された前記第aの比較結果における第jビットの値と、前記第(a−(j−1))の一致/不一致マップレジスタに格納された前記第(a−(j−1))の比較結果における第(j−1)ビットの値と、不一致を示す値との間でAND演算を行い、
前記第aの一致/不一致マップレジスタに格納された前記第aの比較結果における第n/8ビットの値と、前記第(a−(j−1))の一致/不一致マップレジスタに格納された前記第(a−(j−1))の比較結果における第((n/8)−(j−1))ビットの値と、前記第1の一致/不一致マップレジスタに格納された前記第1の比較結果における第1のビットの値との間でAND演算を行い、1バイトの演算結果を出力し、
あるいは、前記第1〜第aの一致/不一致マップレジスタにMSBから順にそれぞれの前記第1〜第aの比較結果のデータが詰められて格納されるときは、
前記第aの一致/不一致マップレジスタに格納された前記第aの比較結果における第1ビットの値と、前記第(a−(j−1))の一致/不一致マップレジスタに格納された前記第(a−(j−1))の比較結果における第jビットの値と、前記第1の一致/不一致マップレジスタに格納された前記第1の比較結果における第(a−(j−1))ビットの値との間でAND演算を行い、
前記第aの一致/不一致マップレジスタに格納された前記第aの比較結果における第jビットの値と、前記第(a−(j−1))の一致/不一致マップレジスタに格納された前記第(a−(j−1))の比較結果における第(j+1)ビットの値と、前記第1の一致/不一致マップレジスタに格納された前記第1の比較結果における第aビットの値との間でAND演算を行い、
前記第aの一致/不一致マップレジスタに格納された前記第aの比較結果における第n/8ビットの値と、不一致を示す値との間でAND演算を行い、1バイトの演算結果を出力するAND回路と、
前記AND回路の演算結果を与えられて保持するバリディティレジスタと、
を備え、
前記バリディティレジスタにおいて一致を示す値が格納されたビット位置が、前記入力バッファに格納された前記データにおける前記探索対象バイト列の第aバイトの位置に対応していることを特徴とする。
あるいはまた、本発明の一態様によるバイト列探索器は、
連続するa(aは、2以上の整数)バイトから成る探索対象バイト列を探索するバイト列探索器であって、
n(nは、a以上の整数)バイトのデータを与えられて格納する入力バッファと、
前記入力バッファから前記nバイトのデータを与えられ、前記探索対象バイト列における第1バイトと比較して、バイト単位での一致/不一致を示す1バイトの第1の比較結果を出力する第1の比較器と、
前記入力バッファから前記nバイトのデータを与えられ、前記探索対象バイト列における第j(jは1<j<aの範囲における連続する整数)バイトと比較して、バイト単位での一致/不一致を示す1バイトの第jの比較結果を出力する第jの比較器と、
前記入力バッファから前記nバイトのデータを与えられ、前記探索対象バイト列における第aバイトと比較して、バイト単位での一致/不一致を示す1バイトの第aの比較結果を出力する第aの比較器と、
前記第1の比較器から前記第1の比較結果を与えられて格納する第1の一致/不一致マップレジスタと、
前記第jの比較器から前記第jの比較結果を与えられて格納する第jの一致/不一致マップレジスタと、
前記第aの比較器から前記第aの比較結果を与えられて格納する第aの一致/不一致マップレジスタと、
前記第1〜第aの一致/不一致マップレジスタにLSBから順にそれぞれの前記第1〜第aの比較結果のデータが詰められて格納されるときは、
前記第1の一致/不一致マップレジスタに前回格納されていた前記第1の比較結果における第n/8のビット、第(n/8−(a−j))のビットを与えられて格納する第1のレジスタと、
前記第jの一致/不一致マップレジスタに前回格納されていた前記第jの比較結果における第n/8のビット、第(n/8−(a−(n+1)))のビットを与えられて格納する第jのレジスタと、
前記第(a−1)の一致/不一致マップレジスタに前回格納されていた前記第(a−1)の比較結果における第n/8のビットを与えられて格納する第(a−1)のレジスタと、
前記第aの一致/不一致マップレジスタに格納された前記第aの比較結果における第1ビットの値と、前記第(a−(j−1))のレジスタに格納された前記第(n/8−(n−2))ビットの値と、前記第1のレジスタの前記第(a−(j−1))ビットの値との間でAND演算を行い、
前記第aの一致/不一致マップレジスタに格納された前記第aの比較結果における第jビットの値と、前記(a−(j−1))の一致/不一致マップレジスタに格納された前記第(a−(j−1))の比較結果における第(j−1)ビットの値と、前記1のレジスタの前記第(a−j)ビットの値との間でAND演算を行い、
前記第aの一致/不一致マップレジスタに格納された前記第aの比較結果における第n/8ビットの値と、前記第(a−(j−1))の一致/不一致マップレジスタに格納された前記第(a−(j−1))の比較結果における第(n/8−(j−1))ビットの値と、前記第1の一致/不一致マップレジスタに格納された前記第1の比較結果における第(8−(a−1))のビットの値との間でAND演算を行い、1バイトの演算結果を出力するAND回路、
あるいは、前記第1〜第aの一致/不一致マップレジスタにMSBから順にそれぞれの前記第1〜第aの比較結果のデータが詰められて格納されるときは、
前記第1の一致/不一致マップレジスタに前回格納されていた前記第1の比較結果における第1のビット、第(a−(j−1))のビットを与えられて格納する第1のレジスタと、
前記第jの一致/不一致マップレジスタに前回格納されていた前記第jの比較結果における第1のビット、第(a−j)のビットを与えられて格納する第jのレジスタと、
前記第(a−1)の一致/不一致マップレジスタに前回格納されていた前記第(a−1)の比較結果における第1のビットを与えられて格納する第(a−1)のレジスタと、
前記第aの一致/不一致マップレジスタに格納された前記第aの比較結果における第1ビットの値と、前記第(a−(j−1))の一致/不一致マップレジスタに格納された前記第(a−(j−1))の比較結果における前記第jビットの値と、前記第1の一致/不一致マップレジスタに格納された前記第1の比較結果における前記第(a−1)ビットの値との間でAND演算を行い、
前記第aの一致/不一致マップレジスタに格納された前記第aの比較結果における第jビットの値と、前記(a−(j−1))の一致/不一致マップレジスタに格納された前記第(a−(j−1))の比較結果における第(j+1)ビットの値と、前記1の一致/不一致マップレジスタに格納された前記aビットの値との間でAND演算を行い、
前記第aの一致/不一致マップレジスタに格納された前記第aの比較結果における第(n/8−1)ビットの値と、前記第(a−(j−1))の一致/不一致マップレジスタに格納された前記第(a−(j−1))の比較結果における第(n/8−(n−2))ビットの値と、前記第1のレジスタに格納された前記第1の比較結果における第(a−(j−1))のビットの値との間でAND演算を行い、
前記第aの一致/不一致マップレジスタに格納された前記第aの比較結果における第n/8ビットの値と、前記第(a−(j−1))のレジスタに格納された前記第(a−(j−1))の比較結果における第(j−1)ビットの値と、前記第1のレジスタに格納された前記第1の比較結果における第(a−1)のビットの値との間でAND演算を行い、1バイトの演算結果を出力するAND回路と、
前記AND回路の演算結果を与えられて保持するバリディティレジスタと、
を備え、
前記バリディティレジスタにおいて一致を示す値が格納されたビット位置が、前記入力バッファに格納された前記データにおける前記探索対象バイト列の第aバイトの位置とが対応していることを特徴とする。
以下、本発明の実施の形態によるバイト列探索器及び探索方法について、図面を参照して説明する。
本実施の形態は、探索対象バイト列が以下の性質を持っていることを利用してバイト列探索処理を高速に実行するものである。
I)探索対象バイト列の最大長(aバイト;aは2以上の整数)が定まっている。
II)連続してバイト単位で配置された複数バイトから成るコードを探索対象とする。
尚、探索対象バイト列の最大長は、その一例としてここでは3バイト(24ビット)であるとする。
(1)実施の形態1
本実施の形態1によるバイト列探索器の構成を図1に示す。
尚、本実施の形態1によるバイト列探索器では、レジスタの最下位ビット(LSB)から順に上位ビットへ向けてデータが詰められて格納されていくスモールエンディアンの場合に相当する。
このバイト列探索器は、入力バッファ11、バイト単位比較器21〜23、一致/不一致マップレジスタ31〜33、AND回路41、及び出力レジスタ42を備えている。
本実施の形態1によるバイト列探索方法における処理の手順を、図2のフローチャートに示す。
図2におけるステップS10として、入力バッファ11が、図示されていない外部の装置から転送されてきたビットストリームのうち、例えば64ビット、即ち8バイト分のデータを格納する。ここで、本実施の形態では8バイトの例を示したが、これに限らず他のバイト数であってもよい。
図示されない外部の装置から送信されたデータのビットストリームは、例えば図3に示されたH.264のデータのようにバイトアラインされたデータである。このビットストリームには複数の動画データが含まれており、各々の複数の動画データは、その先頭が図3に示された、第1バイト、第2バイト、及び第3バイトからなるスタートコードである。この第1バイト、第2バイト、及び第3バイトが、探索対象バイト列である。
ステップS11として、入力バッファ11に保持された8バイト分のデータがバイト単位比較器21に与えられる。バイト単位比較器21は、このデータと、探索対象バイト列に含まれる8ビット分の第1バイトのデータ101とを比較し、バイト単位での一致又は不一致を判定する。
ステップS14として、この判定結果は、8ビットの一致/不一致マップレジスタ31に与えられる。バイト単位で一致した箇所には、対応するビットに例えば「1」、不一致のビットには「0」が書き込まれる。
これにより、入力バッファ11のデータと、探索対象バイト列の第1バイトのデータ101とのバイト単位での一致/不一致を示すマップが作成される。
このステップS11及びS14と並行して、ステップS12として、入力バッファ11に保持されたデータがバイト単位比較器22に与えられる。バイト単位比較器22は、このデータと、探索対象バイト列の第2バイトのデータ102とを比較して、バイト単位での一致又は不一致を判定する。
ステップS15として、この判定結果が一致/不一致マップレジスタ32の各ビットに与えられ、第2バイトのデータ102との一致/不一致マップが作成される。
同様に、ステップS13として、入力バッファ11から8バイトのデータがバイト単位比較器23に与えられる。バイト単位比較器23は、このデータと、探索対象バイト列の第3バイトのデータ103とを比較し、バイト単位での一致又は不一致を判定する。
ステップS16として、この判定結果が一致/不一致マップレジスタ33の各ビットに与えられ、第3バイトのデータ103との一致/不一致マップが作成される。
ここで、入力バッファ11、比較器21〜21を有するバイト単位比較器21、一致/不一致マップレジスタ31の接続関係を図4に示す。入力バッファ11に格納された8バイトのデータのうち、0〜7ビット、8〜15ビット、…、56〜63ビットにおけるそれぞれ1バイトずつ8組のデータが、それぞれ対応する比較器21、21、…、21に与えられる。
一方、第1バイトのデータ101のデータが全ての比較器21〜21に与えられ、入力バッファ11からのデータとそれぞれ比較される。比較された結果が、一致/不一致マップレジスタ31の0〜7ビットに与えられて保持される。
ステップS17として、AND回路41が、一致/不一致マップレジスタ31〜33の各ビット毎に論理演算、具体的にはAND演算を行う。ここで、図1及び図2のステップS17に示されたように、一致/不一致マップレジスタ31が左方向(上位ビット側)へ2ビット、一致/不一致マップレジスタ32が左方向へ1ビットそれぞれシフトされた状態で、各ビット毎にAND演算を行う。
即ち、一致/不一致マップレジスタ33に保持された第3バイトに関する一致/不一致を示す第1ビットと、不一致を示す値「0」と、「0」とでAND演算を行う。
一致/不一致マップレジスタ33に保持された第3バイトに関する一致/不一致を示す第2ビットと、一致/不一致マップレジスタ32に保持された第2バイトに関する一致/不一致を示す第1ビットと、「0」とでAND演算を行う。
一致/不一致マップレジスタ33に保持された第3バイトに関する一致/不一致を示す第3ビットと、一致/不一致マップレジスタ32に保持された第2バイトに関する一致/不一致を示す第2ビットと、一致/不一致マップレジスタ31に保持された第1バイトに関する一致/不一致を示す第1ビットとでAND演算を行う。
一致/不一致マップレジスタ33に保持された第3バイトに関する一致/不一致を示す第j+2(jは1以上で、ビット数(n−2)以下、ここでは6以下の整数)ビットと、一致/不一致マップレジスタ32に保持された第2バイトに関する一致/不一致を示す第j+1ビットと、一致/不一致マップレジスタ31に保持された第1バイトに関する一致/不一致を示す第jビットとでAND演算を行う。
一致/不一致マップレジスタ33に保持された第3バイトに関する一致/不一致を示す第8ビットと、一致/不一致マップレジスタ32に保持された第2バイトに関する一致/不一致マップを示す第7ビットと、一致/不一致マップレジスタ31に関する第1バイトに関する一致/不一致を示す第6ビットとでAND演算を行う。
このように、一致/不一致マップレジスタ31〜33の間で1ビットずつずれた位置同士の間でAND演算を行っていく。
そして、AND演算の結果が、各ビット毎にバリディティレジスタ42に与えられて保持される。これにより、第1〜第3バイトの一致/不一致マップが作成されることになる。
ステップS18において、バリディティレジスタ42において、3バイトの検索対象バイト列が検索されたことを示す「1」の値が格納されたビットが存在する場合は、処理を終了する。そして、このビット位置に対応した箇所において、入力バッファ11中に3ビットから成る探索対象バイト列が存在することになる。
ここで、バリディティレジスタ42における「1」の値が保持されたビット位置とは、探索対象バイト列の第3バイトにおけるビット位置に相当する。
ステップS18において、バリディティレジスタ42のいずれのビットにおいても「1」が存在しない場合は、ステップS19へ移行する。
ステップS19では、入力バッファ11が格納可能なバイト数、ここでは8バイト分ポインタi(iは1以上の整数)を+1進めて、ビットストリームから次の8バイトのデータを受け取って格納する。そして、ステップS10へ戻り、同様の処理を繰り返す。
本実施の形態1によれば、次のような作用、効果が得られる。探索対象バイト列における各バイト毎の一致/不一致の判定処理を、並列に実行することができる。これにより、CPUを用いた逐次処理と比べて大幅に高速化を図ることが可能である。
また最終的に、3バイトの探索対象バイト列と入力バッファ11のデータとが一致したバイト位置を示す一致/不一致マップを得るまでの手順において、ビットストリームからデータを読む動作は、一致/不一致の判定処理を行うために行う1回だけでよい。このため、CPUを用いた逐次処理の際に見られたような「読み直し」による無駄が発生しない。
さらに、本実施の形態1によるバイト列探索器の回路構成は、バイト単位比較器21〜23、AND回路41の他、入力バッファ11、一致/不一致マップレジスタ31〜33、及びバリディティレジスタ42といった小規模なレジスタ群であって、回路面積は小さく消費電力は軽微である。よって、コスト低減に寄与することができる。
また、AND回路41における演算論理も単純であるので、高速動作が可能である。
(2)実施の形態2
本実施の形態2によるバイト列探索器の構成を図5に示す。
尚、本実施の形態2によるバイト列探索器では、上記実施の形態1と同様にスモールエンディアンの場合に相当する。
上記実施の形態1では、入力バッファ11に取り込んだ8バイト分のデータの中に、3バイトから成る探索対象バイトの全てが含まれている場合にのみ、探索を行うことができる。
これに対し本実施の形態2では、入力バッファ11に格納された8バイトのデータと、その境界を超えて前又は後に続くデータとに跨って3バイトの探索対象バイトが存在する場合にも探索が可能な構成を備えている。
本実施の形態2によるバイト列探索器は、図5に示されたように、探索対象バイトの第1バイトの一致/不一致のマップを格納する一致/不一致マップレジスタ31において、前回の入力バッファ11の格納データに対する探索対象バイトの第1バイトの一致/不一致を示すマップの第7、第8ビットのデータ61を格納するレジスタ51を備える。
このレジスタ51に格納されたデータ61は、今回の入力バッファ11の格納データに対する探索対象バイトの第1バイトの一致/不一致を示すマップの第1ビットの右側(最下位ビット側)に、2ビットのデータ62として配置されたイメージとなる。
同様に、探索対象バイトの第2バイトの一致/不一致のマップを格納する一致/不一致マップレジスタ32において、前回の入力バッファ11の格納データに対する探索対象バイトの第2バイトの一致/不一致を示すマップの第8ビットのデータ63を格納するレジスタ52を備える。
このレジスタ52に格納されたデータ63は、今回の入力バッファ11の格納データに対する探索対象バイトの第2バイトの一致/不一致を示すマップの第1ビットの右側に、1ビットのデータ64として配置されたイメージとなる。
そして、本実施の形態2では、AND回路41において、次のようなAND演算が行われる。
一致/不一致マップレジスタ33に保持された第3バイトに関する一致/不一致を示す第1ビットと、一致/不一致マップレジスタ32に前回保持され今回レジスタ52に保持された第2バイトに関する一致/不一致を示す第8ビットと、一致/不一致マップレジスタ31に前回保持され今回レジスタ51に保持された第1バイトに関する一致/不一致を示す第7ビットとで、AND演算を行う。
一致/不一致マップレジスタ33に保持された第3バイトに関する一致/不一致を示す第2ビットと、一致/不一致マップレジスタ32に保持された第2バイトに関する一致/不一致を示す第1ビットと、一致/不一致マップレジスタ31に前回保持され今回レジスタ51に保持された第1バイトに関する一致/不一致を示す第8ビットとで、AND演算を行う。
一致/不一致マップレジスタ33に保持された第3バイトに関する一致/不一致を示す第3ビットと、一致/不一致マップレジスタ32に保持された第2バイトに関する一致/不一致を示す第2ビットと、一致/不一致マップレジスタ31に保持された第1バイトに関する一致/不一致を示す第1ビットとでAND演算を行う。
一致/不一致マップレジスタ33に保持された第3バイトに関する一致/不一致を示す第j+2(jは1以上で、ビット数(n−2)以下、ここでは6以下の整数)ビットと、一致/不一致マップレジスタ32に保持された第2バイトに関する一致/不一致を示す第j+1ビットと、一致/不一致マップレジスタ31に保持された第1バイトに関する一致/不一致を示す第jビットとでAND演算を行う。
一致/不一致マップレジスタ33に保持された第3バイトに関する一致/不一致を示す第8ビットと、一致/不一致マップレジスタ32に保持された第2バイトに関する一致/不一致マップを示す第7ビットと、一致/不一致マップレジスタ31に関する第1バイトに関する一致/不一致を示す第6ビットとでAND演算を行う。
AND回路41における演算結果は、上記実施の形態1と同様にバリディティレジスタ42に保持される。
本実施の形態2によれば、入力レジスタ11に保持可能な8バイト分のデータと、その境界を超えてその前又は後に続くデータとに跨って3バイトの探索対象バイトが存在する場合にも、探索することが可能である。
(3)実施の形態3
本発明の実施の形態3によるバイト単位比較器について、その構成を示した図6を用いて説明する。本実施の形態3によるバイト列探索器では、レジスタの最上位ビット(MSB)から順に下位ビットへ向けてデータが詰めて格納されていくビッグエンディアンの場合に相当する。他の構成は、上記実施の形態1と同様であり、説明を省略する。
上記実施の形態1では、図2に示されたフローチャートに従ってバイト探索処理が行われるが、本実施の形態では図7に示されたフローチャートで処理が行われる。
ここで、図2に示された上記実施の形態1と図7に示された本実施の形態3とでは、ステップS17における、AND回路41が一致/不一致マップレジスタ31〜33の各ビット毎にAND演算を行うときのデータが相違する。
本実施の形態3では、一致/不一致マップレジスタ31が右方向(下位ビット側)へ2ビット、一致/不一致マップレジスタ32が右方向へ1ビットそれぞれシフトされた状態で、各ビット毎にAND演算を行う。
即ち、一致/不一致マップレジスタ33に保持された第3バイトに関する一致/不一致を示す第1ビットと、一致/不一致マップレジスタ32に保持された第2バイトに関する一致/不一致を示す第2ビットと、一致/不一致マップレジスタ31に保持された第1バイトに関する一致/不一致を示す第3ビットとでAND演算を行う。
一致/不一致マップレジスタ33に保持された第3バイトに関する一致/不一致を示す第2ビットと、一致/不一致マップレジスタ32に保持された第3バイトに関する一致/不一致を示す第3ビットと、一致/不一致マップレジスタ31に保持された第1バイトに関する一致/不一致を示す第4ビットとでAND演算を行う。
一致/不一致マップレジスタ33に保持された第3バイトに関する一致/不一致を示す第jビットと、一致/不一致マップレジスタ32に保持された第2バイトに関する一致/不一致を示す第j+1ビットと、一致/不一致マップレジスタ31に保持された第1バイトに関する一致/不一致を示す第j+2ビットとでAND演算を行う。
一致/不一致マップレジスタ33に保持された第3バイトに関する一致/不一致を示す第7ビットと、一致/不一致マップレジスタ32に保持された第2バイトに関する一致/不一致マップを示す第8ビットと、不一致を示す値「0」とでAND演算を行う。
一致/不一致マップレジスタ33に保持された第3バイトに関する一致/不一致を示す第8ビットと、値「0」と、値「0」とでAND演算を行う。このように、一致/不一致マップレジスタ31〜33の間で1ビットずつずれた位置同士の間でAND演算を行っていく。
以下の動作は上記実施の形態1と同様に、AND演算の結果が、各ビット毎にバリディティレジスタ42に与えられて保持される。これにより、第1〜第3バイトの一致/不一致マップが作成されることになる。
本実施の形態3によれば、上記実施の形態1と同様に、探索対象バイト列における各バイト毎の一致/不一致の判定処理を、並列に実行することができるので、CPUを用いた逐次処理と比べて大幅に高速化を図ることが可能である。
(4)実施の形態4
本発明の実施の形態4によるバイト単位比較器の構成を、図8に示す。本実施の形態4によるバイト列探索器では、上記実施の形態3と同様にビッグエンディアンの場合に相当する。
本実施の形態4では、上記実施の形態2と同様に、入力バッファ11に格納された8バイトのデータと、その境界を超えて前又は後に続くデータとに跨って3バイトの探索対象バイトが存在する場合にも探索が可能である。
本実施の形態4では、上記実施の形態2と異なり、探索対象バイトの第1バイトの一致/不一致のマップを格納する一致/不一致マップレジスタ31において、前回の入力バッファ11の格納データに対する探索対象バイトの第1バイトの一致/不一致を示すマップの第1、第2ビットのデータ65を格納するレジスタ51を備える。
このレジスタ51に格納されたデータ65は、今回の入力バッファ11の格納データに対する探索対象バイトの第1バイトの一致/不一致を示すマップの第1ビットの左側(最上位ビット側)に、2ビットのデータ66として配置されたイメージとなる。
同様に、探索対象バイトの第2バイトの一致/不一致のマップを格納する一致/不一致マップレジスタ32において、前回の入力バッファ11の格納データに対する探索対象バイトの第2バイトの一致/不一致を示すマップの第1ビットのデータ67を格納するレジスタ52を備える。
このレジスタ52に格納されたデータ67は、今回の入力バッファ11の格納データに対する探索対象バイトの第2バイトの一致/不一致を示すマップの第1ビットの左側に、1ビットのデータ68として配置されたイメージとなる。他の構成は上記実施の形態2と同様であり、説明を省略する。
本実施の形態4では、AND回路41において、次のようなAND演算が行われる。
一致/不一致マップレジスタ33に保持された第3バイトに関する一致/不一致を示す第1ビットと、一致/不一致マップレジスタ32に保持された第2バイトに関する一致/不一致を示す第2ビットと、一致/不一致マップレジスタ31に保持された第1バイトに関する一致/不一致を示す第3ビットとで、AND演算を行う。
一致/不一致マップレジスタ33に保持された第3バイトに関する一致/不一致を示す第2ビットと、一致/不一致マップレジスタ32に保持された第2バイトに関する一致/不一致を示す第3ビットと、一致/不一致マップレジスタ31に保持された第1バイトに関する一致/不一致を示す第4ビットとで、AND演算を行う。
一致/不一致マップレジスタ33に保持された第3バイトに関する一致/不一致を示す第jビットと、一致/不一致マップレジスタ32に保持された第2バイトに関する一致/不一致を示す第j+1ビットと、一致/不一致マップレジスタ31に保持された第1バイトに関する一致/不一致を示す第j+2ビットとでAND演算を行う。
一致/不一致マップレジスタ33に保持された第3バイトに関する一致/不一致を示す第7ビットと、一致/不一致マップレジスタ32に保持された第2バイトに関する一致/不一致マップを示す第8ビットと、一致/不一致マップレジスタ32に前回保持され今回レジスタ51に保持された第1バイトに関する一致/不一致を示す第1ビットとでAND演算を行う。
一致/不一致マップレジスタ33に保持された第3バイトに関する一致/不一致を示す第8ビットと、一致/不一致マップレジスタ32に前回保持され今回レジスタ52に保持された第2バイトに関する一致/不一致を示す第2ビットと、一致/不一致マップレジスタ31に前回保持され今回レジスタ51に保持された第1バイトに関する一致/不一致を示す第2ビットとでAND演算を行う。
AND回路41における演算結果は、上記実施の形態2と同様にバリディティレジスタ42に保持される。
本実施の形態4によれば、上記実施の形態2と同様に、入力レジスタ11に保持可能な8バイト分のデータと、その境界を超えてその前又は後に続くデータとに跨って3バイトの探索対象バイトが存在する場合にも、探索することが可能である。
上述した実施の形態はいずれも一例であり、本発明を限定するものではなく、本発明の技術的範囲内において様々に変形することができる。例えば、上記実施の形態では探索対象バイト列が3バイトから成る場合を例にとっているが、2バイト以上であればいかなるバイト数であってもよい。また、例えば、上記実施の形態では、一致の場合には「1」、不一致の場合には「0」となる一致/不一致マップレジスタ31〜33と、AND演算を実行するAND回路41を用いる場合を例にとっているが、一致の場合には「0」、不一致の場合には「1」となる一致/不一致マップレジスタと、OR演算を実行するOR回路を用いてもよい。
また、本発明における他の実施態様として、以下の態様も含む。
例えば、一態様による、連続するa(aは、2以上の整数)バイトから成る探索対象バイト列を探索するバイト列探索方法であって、
n(nは、a以上の整数)バイトのデータと、前記探索対象バイト列における第1バイト、第j(jは1<j<aの範囲における連続する整数)バイト、第aバイトとを比較して、バイト単位での一致/不一致を示すそれぞれ1バイトの第1、第j、第aの比較結果を、比較器により生成するステップと、
第1、第j、第aの一致/不一致マップレジスタに、前記第1、第j、第aの比較結果をそれぞれ格納するステップと、
前記第1〜第aの一致/不一致マップレジスタにLSBから順にそれぞれの前記第1〜第aの比較結果のデータが詰められて格納されるときは、
前記第1の一致/不一致マップレジスタを上位ビット側に(a−1)ビットだけシフトし、前記第jの一致/不一致マップレジスタを上位ビット側に(a−j)ビットだけシフトし、前記第(a−1)の一致/不一致マップレジスタを上位ビット側に1ビットだけシフトし、対応する前記第1、第j、第aの一致/不一致マップレジスタにおける対応するビット位置の値で、AND回路によりAND演算を行い、8ビットの演算結果を生成し、
あるいは、前記第1〜第aの一致/不一致マップレジスタにMSBから順にそれぞれの前記第1〜第aの比較結果のデータが詰められて格納されるときは、
前記第1の一致/不一致マップレジスタを下位ビット側に(a−1)ビットだけシフトし、前記第jの一致/不一致マップレジスタを下位ビット側に(a−j)ビットだけシフトし、前記第(a−1)の一致/不一致マップレジスタを下位ビット側に1ビットだけシフトし、対応する前記第1、第j、第aの一致/不一致マップレジスタにおける対応するビット位置の値で、AND回路によりAND演算を行い、8ビットの演算結果を生成するステップと、
を備えることを特徴とするバイト列探索方法。
あるいは、他の態様としての、連続するa(aは、2以上の整数)バイトから成る探索対象バイト列を探索するバイト列探索方法であって、
入力バッファに、n(nは、a以上の整数)バイトのデータを与えて格納するステップと、
前記入力バッファから前記nバイトのデータを第1の比較器に与えて、前記探索対象バイト列における第1バイトと比較して、バイト単位での一致/不一致を示すnビットの第1の比較結果を生成するステップと、
前記入力バッファから前記nバイトのデータを第j(jは1<j<aの範囲における連続する整数)の比較器に与えて、前記探索対象バイト列における第jバイトと比較して、バイト単位での一致/不一致を示すnビットの第jの比較結果を生成するステップと、
前記入力バッファから前記nバイトのデータを第aの比較器に与えて、前記探索対象バイト列における第aバイトと比較して、バイト単位での一致/不一致を示すnビットの第aの比較結果を生成するステップと、
前記第1の比較器から前記第1の比較結果を第1の一致/不一致マップレジスタに与えて格納するステップと、
前記第jの比較器から前記第jの比較結果を第jの一致/不一致マップレジスタに与えて格納するステップと、
前記第aの比較器から前記第aの比較結果を第aの一致/不一致マップレジスタに与えて格納するステップと、
AND回路により、前記第1〜第aの一致/不一致マップレジスタにLSBから順にそれぞれの前記第1〜第aの比較結果のデータが詰められて格納されるときは、
前記第aの一致/不一致マップレジスタに格納された前記第aの比較結果における第1ビットの値と、不一致を示す値との間でAND演算を行い、
前記第aの一致/不一致マップレジスタに格納された前記第aの比較結果における第jビットの値と、前記第(a−(j−1))の一致/不一致マップレジスタに格納された前記第(a−1)の比較結果における第1ビットの値と、不一致を示す値との間でAND演算を行い、
前記第aの一致/不一致マップレジスタに格納された前記第aの比較結果における第n/8ビットの値と、前記第(a−(n−1))の一致/不一致マップレジスタに格納された前記第(a−(n−1))の比較結果における第(n/8−1)ビットの値と、前記第1の一致/不一致マップレジスタに格納された前記第1の比較結果における第1のビットの値との間でAND演算を行い、8ビットの演算結果を生成し、
あるいは、前記第1〜第aの一致/不一致マップレジスタにMSBから順にそれぞれの前記第1〜第aの比較結果のデータが詰められて格納されるときは、
前記第aの一致/不一致マップレジスタに格納された前記第aの比較結果における第1ビットの値と、前記第(a−(j−1))の一致/不一致マップレジスタに格納された第(a−(j−1))の比較結果における第jビットの値と、前記第1の一致/不一致マップレジスタに格納された前記第1の比較結果における第(a−1)ビットの値との間でAND演算を行い、
前記第aの一致/不一致マップレジスタに格納された前記第aの比較結果における第jビットの値と、前記第(a−(j−1))の一致/不一致マップレジスタに格納された前記第(a−(j−1))の比較結果における第(j+1)ビットの値と、前記第1の一致/不一致マップレジスタに格納された前記第1の比較結果における第aビットの値との間でAND演算を行い、
前記第aの一致/不一致マップレジスタに格納された前記第aの比較結果における第n/8ビットの値と、不一致を示す値との間でAND演算を行い、8ビットの演算結果を生成するステップと、
前記演算結果をバリディティレジスタに与えて格納するステップと、
を備え、
前記バリディティレジスタにおいて一致を示す値が格納されたビット位置が、前記入力バッファに格納された前記データにおける前記探索対象バイト列の第aバイトの位置に対応していることを特徴とするバイト列探索方法。
本発明の実施の形態1によるバイト列探索器の構成を示したブロック図。 同実施の形態1によるバイト列探索方法の手順を示したフローチャート。 同実施の形態1によるバイト列探索器に入力するH.264の動画データのビットストリームの構成を示す説明図。 同実施の形態1によるバイト列探索器に含まれるバイト単位比較器の構成を示した回路図。 本発明の実施の形態2によるバイト列探索器の構成を示したブロック図。 本発明の実施の形態3によるバイト列探索器の構成を示したブロック図。 同実施の形態3によるバイト列探索方法の手順を示したフローチャート。 本発明の実施の形態4によるバイト列探索器の構成を示したブロック図。
符号の説明
11 入力バッファ
21〜23 バイト単位比較器
31〜33 一致/不一致マップレジスタ
41 AND回路
42 出力バッファ

Claims (5)

  1. 連続するa(aは、2以上の整数)バイトから成る探索対象バイト列を探索するバイト列探索器であって、
    外部から入力されたnバイト数(nは、a以上の整数)を有する第1のデータと、前記探索対象バイト列における第1バイトから第aバイトに至るまでのいずれか1つのバイトとを比較して、バイト単位での一致/不一致の比較結果を出力するa個の比較器と、
    前記比較器の比較結果を用いて論理演算を実行することによって、連続するaバイトのバイト列の有無を出力する論理演算回路とを備え、
    前記a個の比較器は、前記探索対象バイト列における第1バイトから第aバイトに至るまで、お互いに別々の1つを選択して、並列して比較結果の出力を実行することを特徴とするバイト列探索器。
  2. 前記論理演算回路は、
    前記比較器を用いて出力された、前記第1のデータに続く所定のバイト数を有する第2のデータの比較結果に加えて、
    前記第1のデータと、前記探索対象バイト列における第1バイトから第a−1バイトに至るまでのバイトとを比較結果の一部を用いて、連続するaバイトのバイト列の有無を出力することを特徴とする請求項1に記載のバイト列探索器。
  3. 連続するa(aは、2以上の整数)バイトから成る探索対象バイト列を探索するバイト列探索器であって、
    n(nは、a以上の整数)バイトのデータを与えられて格納する入力バッファと、
    前記入力バッファから前記nバイトのデータを与えられ、前記探索対象バイト列における第1バイト、第j(jは1<j<aの範囲における連続する整数)バイト、第aバイトと比較して、バイト単位での一致/不一致を示すそれぞれ1バイトずつの第1、第j、第aの比較結果を出力する比較器と、
    前記比較器から前記第1、第j、第aの比較結果を与えられてそれぞれ格納する第1、第j、第aの一致/不一致マップレジスタと、
    前記第1〜第aの一致/不一致マップレジスタに最下位ビット(以下、LSBという)から順にそれぞれの前記第1〜第aの比較結果のデータが詰められて格納されるときは、
    前記第1の一致/不一致マップレジスタを上位ビット側に(a−1)ビットだけシフトし、前記第jの一致/不一致マップレジスタを上位ビット側に(a−j)ビットだけシフトし、前記第(a−1)の一致/不一致マップレジスタを上位ビット側に1ビットだけシフトし、対応する前記第1、第j、第aの一致/不一致マップレジスタにおける対応するビット位置の値でAND演算を行い、1バイトの演算結果を出力し、
    あるいは、前記第1〜第aの一致/不一致マップレジスタに最上位ビット(以下、MSBという)から順にそれぞれの前記第1〜第aの比較結果のデータが詰められて格納されるときは、
    前記第1の一致/不一致マップレジスタを下位ビット側に(a−1)ビットだけシフトし、前記第jの一致/不一致マップレジスタを下位ビット側に(a−j)ビットだけシフトし、前記第(a−1)の一致/不一致マップレジスタを下位ビット側に1ビットだけシフトし、対応する前記第1、第j、第aの一致/不一致マップレジスタにおける対応するビット位置の値でAND演算を行い、1バイトの演算結果を出力するAND回路と、
    を備えることを特徴とするバイト列探索器。
  4. 連続するa(aは、2以上の整数)バイトから成る探索対象バイト列を探索するバイト列探索器であって、
    n(nは、a以上の整数)バイトのデータを与えられて格納する入力バッファと、
    前記入力バッファから前記nバイトのデータを与えられ、前記探索対象バイト列における第1バイトと比較して、バイト単位での一致/不一致を示す1バイトの第1の比較結果を出力する第1の比較器と、
    前記入力バッファから前記nバイトのデータを与えられ、前記探索対象バイト列における第j(jは1<j<aの範囲における連続する整数)バイトと比較して、バイト単位での一致/不一致を示す1バイトの第jの比較結果を出力する第jの比較器と、
    前記入力バッファから前記nバイトのデータを与えられ、前記探索対象バイト列における第aバイトと比較して、バイト単位での一致/不一致を示す1バイトの第aの比較結果を出力する第aの比較器と、
    前記第1の比較器から前記第1の比較結果を与えられて格納する第1の一致/不一致マップレジスタと、
    前記第jの比較器から前記第jの比較結果を与えられて格納する第jの一致/不一致マップレジスタと、
    前記第aの比較器から前記第aの比較結果を与えられて格納する第aの一致/不一致マップレジスタと、
    前記第1〜第aの一致/不一致マップレジスタにLSBから順にそれぞれの前記第1〜第aの比較結果のデータが詰められて格納されるときは、
    前記第aの一致/不一致マップレジスタに格納された前記第aの比較結果における第1ビットの値と、不一致を示す値とを示す値との間でAND演算を行い、
    前記第aの一致/不一致マップレジスタに格納された前記第aの比較結果における第jビットの値と、前記第(a−(j−1))の一致/不一致マップレジスタに格納された前記第(a−(j−1))の比較結果における第(j−1)ビットの値と、不一致を示す値との間でAND演算を行い、
    前記第aの一致/不一致マップレジスタに格納された前記第aの比較結果における第n/8ビットの値と、前記第(a−(j−1))の一致/不一致マップレジスタに格納された前記第(a−(j−1))の比較結果における第((n/8)−(j−1))ビットの値と、前記第1の一致/不一致マップレジスタに格納された前記第1の比較結果における第1のビットの値との間でAND演算を行い、1バイトの演算結果を出力し、
    あるいは、前記第1〜第aの一致/不一致マップレジスタにMSBから順にそれぞれの前記第1〜第aの比較結果のデータが詰められて格納されるときは、
    前記第aの一致/不一致マップレジスタに格納された前記第aの比較結果における第1ビットの値と、前記第(a−(j−1))の一致/不一致マップレジスタに格納された前記第(a−(j−1))の比較結果における第jビットの値と、前記第1の一致/不一致マップレジスタに格納された前記第1の比較結果における第(a−(j−1))ビットの値との間でAND演算を行い、
    前記第aの一致/不一致マップレジスタに格納された前記第aの比較結果における第jビットの値と、前記第(a−(j−1))の一致/不一致マップレジスタに格納された前記第(a−(j−1))の比較結果における第(j+1)ビットの値と、前記第1の一致/不一致マップレジスタに格納された前記第1の比較結果における第aビットの値との間でAND演算を行い、
    前記第aの一致/不一致マップレジスタに格納された前記第aの比較結果における第n/8ビットの値と、不一致を示す値との間でAND演算を行い、1バイトの演算結果を出力するAND回路と、
    前記AND回路の演算結果を与えられて保持するバリディティレジスタと、
    を備え、
    前記バリディティレジスタにおいて一致を示す値が格納されたビット位置が、前記入力バッファに格納された前記データにおける前記探索対象バイト列の第aバイトの位置に対応していることを特徴とするバイト列探索器。
  5. 連続するa(aは、2以上の整数)バイトから成る探索対象バイト列を探索するバイト列探索器であって、
    n(nは、a以上の整数)バイトのデータを与えられて格納する入力バッファと、
    前記入力バッファから前記nバイトのデータを与えられ、前記探索対象バイト列における第1バイトと比較して、バイト単位での一致/不一致を示す1バイトの第1の比較結果を出力する第1の比較器と、
    前記入力バッファから前記nバイトのデータを与えられ、前記探索対象バイト列における第j(jは1<j<aの範囲における連続する整数)バイトと比較して、バイト単位での一致/不一致を示す1バイトの第jの比較結果を出力する第jの比較器と、
    前記入力バッファから前記nバイトのデータを与えられ、前記探索対象バイト列における第aバイトと比較して、バイト単位での一致/不一致を示す1バイトの第aの比較結果を出力する第aの比較器と、
    前記第1の比較器から前記第1の比較結果を与えられて格納する第1の一致/不一致マップレジスタと、
    前記第jの比較器から前記第jの比較結果を与えられて格納する第jの一致/不一致マップレジスタと、
    前記第aの比較器から前記第aの比較結果を与えられて格納する第aの一致/不一致マップレジスタと、
    前記第1〜第aの一致/不一致マップレジスタにLSBから順にそれぞれの前記第1〜第aの比較結果のデータが詰められて格納されるときは、
    前記第1の一致/不一致マップレジスタに前回格納されていた前記第1の比較結果における第n/8のビット、第(n/8−(a−j))のビットを与えられて格納する第1のレジスタと、
    前記第jの一致/不一致マップレジスタに前回格納されていた前記第jの比較結果における第n/8のビット、第(n/8−(a−(n+1)))のビットを与えられて格納する第jのレジスタと、
    前記第(a−1)の一致/不一致マップレジスタに前回格納されていた前記第(a−1)の比較結果における第n/8のビットを与えられて格納する第(a−1)のレジスタと、
    前記第aの一致/不一致マップレジスタに格納された前記第aの比較結果における第1ビットの値と、前記第(a−(j−1))のレジスタに格納された前記第(n/8−(n−2))ビットの値と、前記第1のレジスタの前記第(a−(j−1))ビットの値との間でAND演算を行い、
    前記第aの一致/不一致マップレジスタに格納された前記第aの比較結果における第jビットの値と、前記(a−(j−1))の一致/不一致マップレジスタに格納された前記第(a−(j−1))の比較結果における第(j−1)ビットの値と、前記1のレジスタの前記第(a−j)ビットの値との間でAND演算を行い、
    前記第aの一致/不一致マップレジスタに格納された前記第aの比較結果における第n/8ビットの値と、前記第(a−(j−1))の一致/不一致マップレジスタに格納された前記第(a−(j−1))の比較結果における第(n/8−(j−1))ビットの値と、前記第1の一致/不一致マップレジスタに格納された前記第1の比較結果における第(8−(a−1))のビットの値との間でAND演算を行い、1バイトの演算結果を出力するAND回路、
    あるいは、前記第1〜第aの一致/不一致マップレジスタにMSBから順にそれぞれの前記第1〜第aの比較結果のデータが詰められて格納されるときは、
    前記第1の一致/不一致マップレジスタに前回格納されていた前記第1の比較結果における第1のビット、第(a−(j−1))のビットを与えられて格納する第1のレジスタと、
    前記第jの一致/不一致マップレジスタに前回格納されていた前記第jの比較結果における第1のビット、第(a−j)のビットを与えられて格納する第jのレジスタと、
    前記第(a−1)の一致/不一致マップレジスタに前回格納されていた前記第(a−1)の比較結果における第1のビットを与えられて格納する第(a−1)のレジスタと、
    前記第aの一致/不一致マップレジスタに格納された前記第aの比較結果における第1ビットの値と、前記第(a−(j−1))の一致/不一致マップレジスタに格納された前記第(a−(j−1))の比較結果における前記第jビットの値と、前記第1の一致/不一致マップレジスタに格納された前記第1の比較結果における前記第(a−1)ビットの値との間でAND演算を行い、
    前記第aの一致/不一致マップレジスタに格納された前記第aの比較結果における第jビットの値と、前記(a−(j−1))の一致/不一致マップレジスタに格納された前記第(a−(j−1))の比較結果における第(j+1)ビットの値と、前記1の一致/不一致マップレジスタに格納された前記aビットの値との間でAND演算を行い、
    前記第aの一致/不一致マップレジスタに格納された前記第aの比較結果における第(n/8−1)ビットの値と、前記第(a−(j−1))の一致/不一致マップレジスタに格納された前記第(a−(j−1))の比較結果における第(n/8−(n−2))ビットの値と、前記第1のレジスタに格納された前記第1の比較結果における第(a−(j−1))のビットの値との間でAND演算を行い、
    前記第aの一致/不一致マップレジスタに格納された前記第aの比較結果における第n/8ビットの値と、前記第(a−(j−1))のレジスタに格納された前記第(a−(j−1))の比較結果における第(j−1)ビットの値と、前記第1のレジスタに格納された前記第1の比較結果における第(a−1)のビットの値との間でAND演算を行い、1バイトの演算結果を出力するAND回路と、
    前記AND回路の演算結果を与えられて保持するバリディティレジスタと、
    を備え、
    前記バリディティレジスタにおいて一致を示す値が格納されたビット位置が、前記入力バッファに格納された前記データにおける前記探索対象バイト列の第aバイトの位置とが対応していることを特徴とするバイト列探索器。
JP2006093844A 2006-03-30 2006-03-30 バイト列探索器及び探索方法 Pending JP2007274051A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2006093844A JP2007274051A (ja) 2006-03-30 2006-03-30 バイト列探索器及び探索方法
US11/727,893 US20070244889A1 (en) 2006-03-30 2007-03-28 Byte string searching apparatus and searching method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006093844A JP2007274051A (ja) 2006-03-30 2006-03-30 バイト列探索器及び探索方法

Publications (1)

Publication Number Publication Date
JP2007274051A true JP2007274051A (ja) 2007-10-18

Family

ID=38606053

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006093844A Pending JP2007274051A (ja) 2006-03-30 2006-03-30 バイト列探索器及び探索方法

Country Status (2)

Country Link
US (1) US20070244889A1 (ja)
JP (1) JP2007274051A (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101259556B1 (ko) * 2008-12-22 2013-04-30 한국전자통신연구원 데이터의 송신 장치 및 그 방법
GB201314231D0 (en) * 2013-08-08 2013-09-25 Harwood William T Data Comparator Store

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6057849U (ja) * 1983-09-21 1985-04-22 株式会社日立製作所 情報検索装置

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5862374A (en) * 1989-09-14 1999-01-19 Megaword International Pty. Ltd. Search method and circuit
US5649149A (en) * 1994-08-01 1997-07-15 Cypress Semiconductor Corporation Integrated content addressable memory array with processing logical and a host computer interface
US6154468A (en) * 1996-10-24 2000-11-28 Philips Electronics North America Corporation Fast sync-byte search scheme for packet framing
US6654389B1 (en) * 1999-11-23 2003-11-25 International Business Machines Corporation System and method for searching patterns in real-time over a shared media
JP2001231044A (ja) * 2000-02-14 2001-08-24 Nec Corp Mpeg画像復号装置および方法
US7292607B2 (en) * 2002-02-04 2007-11-06 Sartre Satire Llc Method and circuit for processing data in communication networks
US7466724B2 (en) * 2004-10-14 2008-12-16 Tektronix, Inc. Apparatus and method of analyzing packetized data spanning over multiple clock cycles

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6057849U (ja) * 1983-09-21 1985-04-22 株式会社日立製作所 情報検索装置

Also Published As

Publication number Publication date
US20070244889A1 (en) 2007-10-18

Similar Documents

Publication Publication Date Title
US9647684B2 (en) Memory-based history search
US8078593B1 (en) Dictionary architecture and methodology for revision-tolerant data de-duplication
KR101651911B1 (ko) 수축 압축을 위한 고속의 고도로 압축된 lz77 토큰화 및 허프만 인코딩을 위한 병렬 장치
JP4555088B2 (ja) データ内のパターンの高速文脈サーチ及び特徴付けを実行するためのプログラム可能な規則処理装置
TWI486810B (zh) 在狀態機晶格中之計數器操作
TWI489779B (zh) 狀態機晶格中之布林邏輯
JP3898712B2 (ja) 3バイトのエスケープ・オペコードを使用した命令セットの拡張
RU2629440C2 (ru) Устройство и способ для ускорения операций сжатия и распаковки
EP0677927A2 (en) Character string pattern matching for compression and the like using minimal cycles per character
US20170024466A1 (en) System and method for natural language processing using synthetic text
US9473168B1 (en) Systems, methods, and apparatuses for compression using hardware and software
US8947272B2 (en) Decoding encoded data
US7068192B1 (en) System and method for encoding and decoding variable-length data
US20130185319A1 (en) Compression pattern matching
JP2007274051A (ja) バイト列探索器及び探索方法
WO2007108395A1 (ja) 可変長符号の復号装置および復号方法
US10579375B2 (en) Method to build reconfigurable variable length comparators
CN107656756A (zh) 查找第一个目标数的方法和装置、查找单元和处理器
US20040108946A1 (en) Decoding bit streams compressed with compression techniques employing variable length codes
US20060015704A1 (en) Operation apparatus and instruction code executing method
JP2005275880A (ja) 字句をデータに変換する装置、方法及びプログラム
JP2005260285A (ja) データ圧縮装置
JPWO2004088539A1 (ja) 構文解析方法及び構文解析のためのプログラマブル・プロセッサ・ユニット
JP2000181680A (ja) コード検出回路
JPH0444466A (ja) 不等長符号復号回路

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080804

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20100602

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100611

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20101029