JP5520391B2 - 検索開始点を決定する装置及び方法 - Google Patents

検索開始点を決定する装置及び方法 Download PDF

Info

Publication number
JP5520391B2
JP5520391B2 JP2012550766A JP2012550766A JP5520391B2 JP 5520391 B2 JP5520391 B2 JP 5520391B2 JP 2012550766 A JP2012550766 A JP 2012550766A JP 2012550766 A JP2012550766 A JP 2012550766A JP 5520391 B2 JP5520391 B2 JP 5520391B2
Authority
JP
Japan
Prior art keywords
data element
circuit
column
data
output
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.)
Active
Application number
JP2012550766A
Other languages
English (en)
Other versions
JPWO2012090584A1 (ja
Inventor
清志 西野
伸宜 田中
博 道司
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.)
International Business Machines Corp
Original Assignee
International Business Machines 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 International Business Machines Corp filed Critical International Business Machines Corp
Priority to JP2012550766A priority Critical patent/JP5520391B2/ja
Publication of JPWO2012090584A1 publication Critical patent/JPWO2012090584A1/ja
Application granted granted Critical
Publication of JP5520391B2 publication Critical patent/JP5520391B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/21Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
    • G11C11/34Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
    • G11C11/40Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
    • G11C11/41Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming static cells with positive feedback, i.e. cells not needing refreshing or charge regeneration, e.g. bistable multivibrator or Schmitt trigger
    • G11C11/413Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing, timing or power reduction
    • G11C11/417Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing, timing or power reduction for memory cells of the field-effect type
    • G11C11/418Address circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C15/00Digital stores in which information comprising one or more characteristic parts is written into the store and in which information is read-out by searching for one or more of these characteristic parts, i.e. associative or content-addressed stores
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/284Relational databases
    • 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/95Retrieval from the web
    • G06F16/951Indexing; Web crawling techniques
    • 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/95Retrieval from the web
    • G06F16/953Querying, e.g. by the use of web search engines
    • G06F16/9535Search customisation based on user profiles and personalisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q30/00Commerce
    • G06Q30/02Marketing; Price estimation or determination; Fundraising
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/21Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
    • G11C11/34Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
    • G11C11/40Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
    • G11C11/41Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming static cells with positive feedback, i.e. cells not needing refreshing or charge regeneration, e.g. bistable multivibrator or Schmitt trigger
    • G11C11/413Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing, timing or power reduction
    • G11C11/417Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing, timing or power reduction for memory cells of the field-effect type
    • G11C11/419Read-write [R-W] circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C15/00Digital stores in which information comprising one or more characteristic parts is written into the store and in which information is read-out by searching for one or more of these characteristic parts, i.e. associative or content-addressed stores
    • G11C15/04Digital stores in which information comprising one or more characteristic parts is written into the store and in which information is read-out by searching for one or more of these characteristic parts, i.e. associative or content-addressed stores using semiconductor elements
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/3084Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method
    • H03M7/3086Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method employing a sliding window, e.g. LZ77

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • General Engineering & Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • Finance (AREA)
  • Accounting & Taxation (AREA)
  • Development Economics (AREA)
  • Strategic Management (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Computer Hardware Design (AREA)
  • Entrepreneurship & Innovation (AREA)
  • Game Theory and Decision Science (AREA)
  • Economics (AREA)
  • Marketing (AREA)
  • General Business, Economics & Management (AREA)
  • Computational Linguistics (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Description

本発明は、検索開始点を決定する装置及び方法に関する。特に、本発明は、第1のデータ要素列に基づいて第2のデータ要素列を検索する際の第1のデータ要素列における検索開始点を決定する装置及び方法に関する。
deflate圧縮(RFC1951)は、現在コンピュータで広く用いられているデータ圧縮形式であるZLIB(RFC1950)、GZIP(RFC1952)のベースとなる圧縮方法である。deflate圧縮は2種類の圧縮アルゴリズムの連結で成り立っており、前段部分はLZ77符号化を用いている。LZ77符号化では、データ中の文字列の繰り返し部分を検索し、その文字列を繰り返し部分の位置及び長さで置き換えることによってデータを圧縮する。例えば、「IBM is IBM」という文字列をLZ77符号化する場合、2つ目の「IBM」は繰り返しであるため、この部分が圧縮される。具体的には、「7文字前から3文字長が繰り返される」ということを表す「7,3」のような符号に置き換えられて圧縮される。この場合、繰り返し部分の文字長が長いほど圧縮率は高くなる。
ここで、deflate圧縮の仕様では、文字列の繰り返し部分の検索をその文字列から最大32Kバイト前までのデータに対して行うことになっており、文字列の繰り返し部分の検索に膨大な文字列比較処理が必要となる。
従って、これをソフトウェアで行おうとすると、処理に時間がかかってしまう。ソフトウェアでは、通常、ハッシュ法により、検索時間の短縮を図ることになる。しかしながら、ハッシュ法では、同じハッシュ値を持つ文字列が多い場合、その一部が捨てられてしまうことがある。つまり、全ての文字列を完全に検索することは、処理時間とバッファ容量を考慮すると難しいという問題があった。
そこで、本出願人は、ハードウェアで全ての文字列を完全に検索できる方法を提案している(例えば、特許文献1〜3参照)。しかも、この方法では、文字列の検索を極めて高速に行うことができる。
特許文献1では、連想メモリセル列に順に記憶された被検索文字列(BABCABB…)に対して検索文字列(ABCA)を検索する場合、最初の文字(A)との比較動作は全てのセル列で行い、次の文字(B)との比較動作は前回一致したセル列と隣り合うアドレス(2),(5)のセル列のみで行い、次の文字(C)との比較動作は同様にアドレス(3),(6)のセル列のみで行い、最後の文字(A)との比較動作は同様にアドレス(4)のセル列のみで行うことにより、短時間で検索処理が終了するようにしている。
特許文献2では、マッチ線のスイッチング素子を挟んで接地端の反対側の部分と電源との間に第1のスイッチング手段を設け、第1のスイッチング手段を、連想メモリが比較結果に応じてスイッチング素子をオン又はオフしている期間又は比較前の準備期間内の一部の期間オンさせることにより、貫通電流が流れている期間を短くし、消費電力を低減している。
特許文献3では、書込みバッファの検索文字とCAMの各セル列に記憶されている文字データとの比較結果を第1ラッチ、第2ラッチに順次保持し、信号生成回路が、入力信号がローであれば第1ラッチの出力と前段の第3ラッチの出力とのANDを、入力信号がハイであれば第1ラッチの出力と前段の第2ラッチの出力とのANDを、第3ラッチを介してプライオリティエンコーダに出力すると共にOR回路に出力し、第1及び第2プライオリティエンコーダが、入力信号のORを出力し、OR回路から出力された信号が第4ラッチ及び別のOR回路を経由して各信号生成回路に入力されるようにすることにより、クロックの1周期で信号が通過すべき経路の長さを半分にして高速化している。
特開平7−114577号公報 特開平8−147986号公報 特開平8−242176号公報
ところで、特許文献1〜3に記載された文字列検索装置では、1文字以上の文字列の一致を、最初に一致した文字からトレースすることにより判断する。多くの圧縮対象データに対してこの方法は有効である。しかしながら、同一部分を有する長さの異なる複数の文字列がオーバーラップして存在し、この複数の文字列に同一部分が末尾にある文字列と先頭にある文字列とが含まれ、後者の方が長いケースもある。このようなケースに対応するには、文字列の複数のトレースを並行して行う必要がある。
本発明の目的は、同一部分を有する長さの異なる複数の文字列が存在する検索対象から長い方の文字列を効果的に検出することにある。
かかる目的のもと、本発明は、第1のデータ要素列に基づいて第2のデータ要素列を検索する際の第1のデータ要素列における検索開始点を決定する装置であって、第2のデータ要素列を構成する複数のデータ要素の各データ要素を、第2のデータ要素列における各データ要素の位置に応じたアドレスに記憶し、検索データ要素が与えられた場合に、検索データ要素に一致する一致データ要素を複数のデータ要素の1つとして記憶していれば、一致データ要素が記憶されているアドレスを出力する連想メモリと、各生成回路が、検索データ要素が連想メモリに与えられた場合に、それまでに与えられた検索データ要素の列のうちの各生成回路に対して決められた個別開始点で始まる列に一致する一致データ要素の列が連想メモリに記憶されていれば、連想メモリから出力されるアドレスに基づいて、一致データ要素の列が記憶されていることを示す列存在情報を生成する生成回路である複数の生成回路と、第1のデータ要素列を構成するデータ要素を検索データ要素として順次連想メモリに与えることによって複数の生成回路の各々により順次生成された複数の列存在情報に基づいて、検索開始点を決定する決定部とを含む、装置を提供する。
ここで、決定部は、複数の生成回路のうちの特定の生成回路による列存在情報の連続生成回数が、連続生成回数が多いと認められるための所定の条件を満たす場合に、特定の生成回路に対して決められた個別開始点を、検索開始点として決定する、ものであってよい。
そして、所定の条件は、特定の生成回路による列存在情報の連続生成回数が、複数の生成回路のうちの他の生成回路による列存在情報の連続生成回数の何れよりも多いという条件を含む、ものであってよい。
また、本発明は、データ要素列の第1の部分データ要素列を、データ要素列の第2の部分データ要素列の位置及び長さの情報で置換することにより、データ要素列を圧縮する装置であって、データ要素列の少なくとも一部を構成する複数のデータ要素の各データ要素を、データ要素列における各データ要素の位置に応じたアドレスに記憶し、検索データ要素が与えられた場合に、検索データ要素に一致する一致データ要素を複数のデータ要素の1つとして記憶していれば、一致データ要素が記憶されているアドレスを出力する連想メモリと、各生成回路が、検索データ要素が連想メモリに与えられた場合に、それまでに与えられた検索データ要素の列のうちの各生成回路に対して決められた個別開始点で始まる列に一致する一致データ要素の列が連想メモリに記憶されていれば、連想メモリから出力されるアドレスに基づいて、一致データ要素の列が記憶されていることを示す列存在情報と、一致データ要素の列が記憶されているアドレスを示す列アドレス情報とを生成する生成回路である複数の生成回路と、第1の部分データ要素列を構成するデータ要素を検索データ要素として順次連想メモリに与えることによって複数の生成回路の各々により順次生成された複数の列存在情報及び複数の列アドレス情報に基づいて、第2の部分データ要素列の位置及び長さを決定する決定部とを含む、装置も提供する。
更に、本発明は、データ要素列の第1の部分データ要素列を、データ要素列の第2の部分データ要素列の位置及び長さの情報で置換することにより、データ要素列を圧縮する装置であって、データ要素列の少なくとも一部を構成する複数のデータ要素の各データ要素を、データ要素列における各データ要素の位置に応じたアドレスに記憶し、検索データ要素が与えられた場合に、検索データ要素に一致する一致データ要素を複数のデータ要素の1つとして記憶していれば、一致データ要素が記憶されているアドレスを出力する連想メモリと、検索データ要素が連想メモリに与えられた場合に、それまでに与えられた検索データ要素の列のうちの基準データ要素で始まる列に一致する一致データ要素の列が連想メモリに記憶されていれば、連想メモリから出力されるアドレスに基づいて、一致データ要素の列が記憶されていることを示す第1の列存在情報と、一致データ要素の列が記憶されているアドレスを示す第1の列アドレス情報とを生成する基本生成回路と、J番目の拡張生成回路が、検索データ要素が連想メモリに与えられた場合に、それまでに与えられた検索データ要素の列のうちの基準データ要素からJ番目のデータ要素で始まる列に一致する一致データ要素の列が連想メモリに記憶されていれば、連想メモリから出力されるアドレスに基づいて、一致データ要素の列が記憶されていることを示す第1の列存在情報と、一致データ要素の列が記憶されているアドレスを示す第1の列アドレス情報とを生成する拡張生成回路であるK個の拡張生成回路(Kは自然数、JはK以下の自然数)と、検索データ要素が連想メモリに与えられた場合に、基本生成回路及びK個の拡張生成回路の何れかにより第1の列存在情報が生成されていれば、それまでに与えられた検索データ要素の列のうちの基準データ要素以降の何れかのデータ要素で始まる列に一致する一致データ要素の列が連想メモリに記憶されていることを示す第2の列存在情報を出力する第1の出力回路と、検索データ要素が連想メモリに与えられた場合に、基本生成回路及びK個の拡張生成回路のうち、第1の列存在情報を生成している少なくとも1つの生成回路が生成する第1の列アドレス情報を、第2の列アドレス情報として出力する第2の出力回路と、第1の部分データ要素列を構成するデータ要素を検索データ要素として順次連想メモリに与え、第1の出力回路から第2の列存在情報が出力されなくなる直前に第2の出力回路から出力された第2の列アドレス情報に応じて、第2の部分データ要素列の位置を決定し、第1の出力回路からの第2の列存在情報の連続出力回数に応じて、第2の部分データ要素列の長さを決定する決定部とを含む、装置も提供する。
更にまた、本発明は、第1のデータ要素列に基づいて第2のデータ要素列を検索する際の第1のデータ要素列における検索開始点を決定する方法であって、第2のデータ要素列を構成する複数のデータ要素の各データ要素を、第2のデータ要素列における各データ要素の位置に応じたアドレスに記憶し、検索データ要素が与えられた場合に、検索データ要素に一致する一致データ要素を複数のデータ要素の1つとして記憶していれば、一致データ要素が記憶されているアドレスを出力する連想メモリを含み、複数の生成回路の各生成回路が、検索データ要素が連想メモリに与えられた場合に、それまでに与えられた検索データ要素の列のうちの各生成回路に対して決められた個別開始点で始まる列に一致する一致データ要素の列が連想メモリに記憶されていれば、連想メモリから出力されるアドレスに基づいて、一致データ要素の列が記憶されていることを示す列存在情報を生成するステップと、第1のデータ要素列を構成するデータ要素を検索データ要素として順次連想メモリに与えることによって複数の生成回路の各々により順次生成された複数の列存在情報に基づいて、検索開始点を決定するステップとを含む、方法も提供する。
本発明によれば、同一部分を有する長さの異なる複数の文字列が存在する検索対象から長い方の文字列を効果的に検出することができる。
本発明の実施の形態が適用されるマイクロコンピュータの構成例を示した図である。 本発明の実施の形態における繰り返しデータ検索回路の構成例を示したブロック図である。 連想メモリセルの構成例を示した回路図である。 本発明の実施の形態における比較結果制御回路の構成例を示したブロック図である。 (a)乃至(e)は本実施の形態における比較結果制御回路の動作を説明するための概念図である。 複数の文字列のトレースを並行して行うことが必要になる文字列検索の具体例を示した図である。 本発明の実施の形態における繰り返しデータ検索装置の構成例を示した図である。 本発明の実施の形態における繰り返しデータ検索装置の構成例を示した図である。 (a)、(b)は本発明の実施の形態の繰り返しデータ検索回路及びトレース回路における動作を説明するための概念図である。 (c)、(d)は本発明の実施の形態の繰り返しデータ検索回路及びトレース回路における動作を説明するための概念図である。 (e)、(f)は本発明の実施の形態の繰り返しデータ検索回路及びトレース回路における動作を説明するための概念図である。 本発明の実施の形態におけるデータ圧縮コントローラの動作例を示したフローチャートである。 図9のフローチャートにおける圧縮データ出力処理の内容を示したフローチャートである。
以下、添付図面を参照して、本発明の実施の形態について詳細に説明する。
図1は、本実施の形態が適用されるマイクロコンピュータ10の構成(一部)を示す。マイクロコンピュータ10は、CPU12、ROM14、RAM16を備えており、これらはアドレスバス、データバス、コントロールバス等からなるバス18を介して互いに接続されている。
また、マイクロコンピュータ10は、本実施の形態における複数の繰り返しデータ検索装置20a、20b、…を備えており、これらは、繰り返しデータ検索装置の作動を制御するデータ圧縮コントローラ22を介してバス18に接続されている。尚、繰り返しデータ検索装置20a、20b、…は各々同一の構成であり、本実施の形態ではP+1個の繰り返しデータ検索装置が設けられている。以下ではP+1個の繰り返しデータ検索装置を「繰り返しデータ検索装置20」と総称してその構成を説明すると共に、個々の繰り返しデータ検索装置については「ブロック0」〜「ブロックP」と称して区別する。
図2は、本実施の形態における繰り返しデータ検索装置20のベースとなる繰り返しデータ検索回路21を示した図である。
繰り返しデータ検索回路21は、図に「○」で示す多数の連想メモリセル(以下、連想メモリをCAMという)28がマトリクス状に配置されて構成されたCAMセルアレイ26を備えている。CAMセルアレイ26にはN+1本のワード線WL0〜WLN、N+1本のマッチ線MATCH0〜MATCHN、M+1組のビット線対BL0,BL0'〜BLM,BLM'が各々マトリクス状に配置されており、各CAMセル28は、ワード線WL0〜WLNの何れか、マッチ線MATCH0〜MATCHNの何れか、及び、ビット線対BL0,BL0'〜BLM,BLM'の何れかに各々接続されている。
多数のCAMセル28は、各々同一の構成を有している。図3に示すように、CAMセル28は、互いの入力端と出力端とが接続された2個のNOT回路30、32を備えている。このNOT回路30、32のループが、1ビットのデータを記憶する記憶回路(SRAM型)を構成する。NOT回路30の出力端はN−MOSFET34のソースに、NOT回路32の出力端は同じくN−MOSFET36のソースに各々接続されており、N−MOSFET34、36のゲートは各々ワード線WLに接続されている。また、N−MOSFET34、36のドレインは各々ビット線BL,BL'に接続されている。
ここで、CAMセル28に1ビットのデータを書き込む場合には、ワード線WLはハイレベルとされ、ビット線BLは書き込むデータDに対応したレベル(Dが「1」の場合はハイレベル、「0」の場合はローレベル)とされ、ビット線BL'はビット線BLのレベルに対して反転したレベル(ビット線BLがハイレベルの場合はローレベル、ビット線BLがローレベルの場合はハイレベル)とされる。これにより、N−MOSFET34、36がオンし、ビット線BL又はBL'を介して供給されたデータがNOT回路30、32のループに保持される。
また、NOT回路30の出力端はN−MOSFET38のゲートに、NOT回路32の出力端はN−MOSFET40のゲートに各々接続されている。尚、NOT回路32からはデータDを反転したデータ(Q’)が出力され、NOT回路30からはデータQ’を反転したデータQ(=D)が出力される。N−MOSFET38、40のドレインは各々ビット線BL',BLに接続されており、ソースはN−MOSFET42のゲートに接続されている。N−MOSFET42のドレインはマッチ線MATCHに接続され、ソースは接地されている。
尚、本実施の形態では、同一のワード線及びマッチ線に、一例としてM+1個のCAMセル28を接続しており、同一のワード線及びマッチ線に接続された複数のCAMセル28(以下、これらをCAMセル列という)にM+1ビットのデータを記憶できるようにしている。また、CAMセルアレイ26では、CAMセル列毎にアドレスが付与されている。
再び図2を参照すると、繰り返しデータ検索回路21はタイミングコントローラ50を備えている。タイミングコントローラ50はデータ圧縮コントローラ22に接続されている。データ圧縮コントローラ22からタイミングコントローラ50に検索指示SEARCHが入力されると、繰り返しデータ検索回路21は、入力された検索データをCAMセルアレイ26の各CAMセル列に記憶されたデータと比較し、次に検索データをCAMセルアレイ26の何れかのCAMセル列に書き込むことを繰り返す「検索」モードを実行する。
タイミングコントローラ50にはデータ圧縮コントローラ22からシステムクロックCLOCKが入力され、システムクロックCLOCKと同期したクロックSRを生成し出力する。クロックSRはタイミングコントローラ50に接続された書込みバッファ56に出力される。
書込みバッファ56はデータ圧縮コントローラ22に接続されており、コントーラ22から検索データが順次入力される。書込みバッファ56にはビット線対BL0,BL0'〜BLM,BLM'が各々接続されており、入力された検索データを保持すると共に、タイミングコントローラ50から入力されたクロックSRに同期したタイミングで、保持している検索データの値に応じてビット線対BL0,BL0'〜BLM,BLM'のレベルを変化させる(ビット線対を駆動する)。書込みバッファ56が所定の検索データに応じて各ビット線対を駆動している間に、各CAMセル列に記憶されたデータとその所定の検索データとの比較、及び、所定のCAMセル列への所定の検索データの書込みが行われる。
タイミングコントローラ50にはアドレスデコーダ52も接続されており、クロックSRはアドレスデコーダ52にも出力される。アドレスデコーダ52はデータ圧縮コントローラ22に接続されており、データ圧縮コントローラ22から検索データの書込みを行うCAMセル列のアドレス(書込みアドレスWADR)が指定される。アドレスデコーダ52にはワード線WL0〜WLNが接続されており、クロックSRと同期したタイミングで、より詳しくは書込みバッファ56が所定の検索データに応じて各ビット線対を駆動している期間内で、かつ、各CAMセル列に記憶されたデータと所定の検索データとの比較が行われた後に、指定された書込みアドレスWADRに対応するCAMセル列のワード線をアサートし(イネーブルとし)、所定の検索データを指定されたアドレスに対応するCAMセル列に書き込む。
また、タイミングコントローラ50には、各々マッチ線MATCH0〜MATCHNに接続されたN+1個のマッチ線コントローラ58〜58も各々接続されており、クロックSRはマッチ線コントローラ58〜58の各々にも出力される。マッチ線コントローラ58〜58は、入力されたクロックSRに基づき各CAMセル列に記憶されたデータと検索データとの比較に先立ってマッチ線MATCH0〜MATCHNをハイレベルにチャージ(プリチャージ)する。このマッチ線コントローラ58〜58によるマッチ線のプリチャージは、書込みバッファ56が所定の検索データに応じた各ビット線対の駆動を終了してから、次の検索データに応じた各ビット線対の駆動を開始するまでの期間内に行われる。
また、マッチ線MATCH0〜MATCHNは、比較結果制御回路60に各々接続されている。図4に示すように、比較結果制御回路60は、ラッチ62〜62、信号生成回路64〜64、ラッチ66〜66を備えている。尚、図4では、マッチ線コントローラ58〜58の図示を省略している。また、図4では信号生成回路64〜64のうち、マッチ線MATCH1に接続された信号生成回路64についてのみ具体的な構成を示しているが、他の信号生成回路も各々同一の構成であり、以下では比較結果制御回路60のうちマッチ線MATCH1に対応する回路部分についてのみ説明する。
マッチ線MATCH1はラッチ62の入力端に接続されており、ラッチ62の出力端は信号生成回路64のAND回路68、70に各々2個設けられた入力端の一方に各々接続されている。AND回路68の2個の入力端の他方にはOR回路72の出力端が接続されており、OR回路72の2個の入力端の一方、及び、AND回路70の2個の入力端の他方は、前段のラッチ66の出力端に各々接続されている。AND回路68の出力端はラッチ66の入力端に接続されており、ラッチ66の出力端は前記と同様に、次段の信号生成回路64の図示しないOR回路72及びAND回路70の入力端に各々接続されている。また、ラッチ66の出力端は第1プライオリティエンコーダ74の入力端にも接続されている。更に、AND回路70の出力端はOR回路78の1個の入力端に接続されており、OR回路78の他の入力端には図示しないAND回路70、70〜70の出力端が接続されている。OR回路78の出力端はOR回路80の1個の入力端に接続されており、OR回路80の他の入力端には、他の繰り返しデータ検索回路21のOR回路78の出力端が接続されている。OR回路80の出力端は、信号生成回路64〜64のOR回路72〜72の入力端に図示しないインバータを介して接続されており(OR回路72のみ図示)、OR回路72〜72には、OR回路80から出力されたフィードバック信号ORFBが反転されて入力される。また、OR回路80から出力されたフィードバック信号ORFBはデータ圧縮コントローラ22にも出力される(図2も参照)。
尚、図4にはブロック0の繰り返しデータ検索回路21の比較結果制御回路60を示しており、信号生成回路64のOR回路72の2個の入力端の一方は、ブロックPの比較結果制御回路60のラッチ66の出力端に接続されている。また、ブロック0の比較結果制御回路60のラッチ66の出力端は、ブロック1の比較結果制御回路60のOR回路72の2個の入力端の一方に接続されている(図2も参照)。
第1プライオリティエンコーダ74の出力端は第2プライオリティエンコーダ76の入力端に接続されている。第1プライオリティエンコーダ74は、比較結果制御回路60の66〜66から各々入力された信号のうち「検索」動作を行った後に入力信号がハイレベルとなっている信号に対応するアドレスをエンコードして一致アドレスMADR0として第2プライオリティエンコーダ76に出力すると共に、ラッチ66〜66から各々入力された信号の論理和を一致信号MSIG0として第2プライオリティエンコーダ76に出力する。尚、ラッチ66〜66から入力された信号のうちの複数の信号がハイレベルであった場合には、一致アドレスMADR0として、予め定められた基準に従って優先順位の高い連想メモリセル列のアドレス、例えば、最も低いアドレス、又は、その時点の書込みアドレスWADRに最も近いアドレスを出力する。尚、後者のアドレスを出力するのは、圧縮に用いる距離情報が小さくてすむので、結果として圧縮率が高くなるという理由による。
また、第2プライオリティエンコーダ76の入力端には、他の繰り返しデータ検索回路21の第1プライオリティエンコーダ74から出力された一致アドレスMADR及び一致信号MSIGも入力される。第2プライオリティエンコーダ76の出力端はデータ圧縮コントローラ22に接続されている。
第2プライオリティエンコーダ76は第1プライオリティエンコーダ74とほぼ同様の構成であり、複数の第1プライオリティエンコーダ74から各々入力されたアドレスMADR0〜MADRPのうち、MSIG0〜MSIGPがハイレベルであるものの中から予め定められた基準に従い優先順位の高いアドレス、例えば、最も低いアドレスにそのブロックのアドレス(複数の繰り返しデータ検索装置に各々付与されたアドレス)を付加したアドレス、又は、その時点の書込みアドレスWADRに最も近いアドレスを一致アドレスMADRとしてデータ圧縮コントローラ22に出力すると共に、複数の第1プライオリティエンコーダ74から各々入力された一致信号MSIG0〜MSIGPの論理和を表す信号を一致信号MSIGとしてデータ圧縮コントローラ22に出力する。
次に、本実施の形態の作用として、まず、繰り返しデータ検索回路21における比較動作について説明する。被圧縮データ(元データ)の圧縮を行う場合、データ圧縮コントローラ22は後述するように元データから所定ビット長の単位データを検索データとして順次取り出し、検索指示SEARCH、書込みアドレスWADRと共に繰り返しデータ検索回路21に順次出力する。
検索指示SEARCHが入力されると、繰り返しデータ検索回路21ではタイミングコントローラ50から書込みバッファ56、アドレスデコーダ52及びマッチ線コントローラ58〜58にクロックSRが出力され、マッチ線コントローラ58ではCAMセルアレイ26における比較動作に先立ってマッチ線MATCH0〜MATCHNのプリチャージを行い、書込みバッファ56では入力された検索データを保持すると共に、検索データに応じてビット線対BL0,BL0'〜BLM,BLM'を駆動する。
CAMセルアレイ26の各CAMセル28では、NOT回路30から出力されるデータQが「1」(ハイレベル)であればN−MOSFET38がオンしており、NOT回路32から出力されるデータQ’が「1」であればN−MOSFET40がオンしている。従って、NOT回路30、32のループに保持されているデータQ(Q’)とビット線対BL,BL'を介して供給されるデータD(D')とが一致している場合にはN−MOSFET42はオンしないが、不一致の場合にはN−MOSFET38、40のうちオンしている方のN−MOSFETのドレインからソースに電流が流れ、N−MOSFET42がオンする。これにより、プリチャージされたマッチ線MATCHのレベルはローレベルに低下される(ディスチャージ)。
上記のデータの比較はCAMセル28の各々で同時に行なわれる。ところで、1本のマッチ線MATCHには複数のCAMセル28(CAMセル列)が接続されているので、クロックSRの1周期のほぼ前半で、CAMセル列に記憶されている文字データと入力された文字データとを比較する比較動作が完了し、各マッチ線は、接続されている全てのCAMセル28でN−MOSFET42がオンしなかった場合、即ちCAMセル列に記憶されている文字データと書込みバッファ56に入力された文字データとが一致していた場合にのみハイレベルの状態で維持され、不一致であった場合にはローレベルとされることになる。
クロックSRの1周期の後半には、入力された書込みアドレスWADRに対応するCAMセル列のワード線がアドレスデコーダ52によりアサートされ(イネーブルとされ)、そのCAMセル列に検索データが書き込まれる。そして、CAMセル列への検索データの書込みが終了しワード線がローレベルにされると共に書込みバッファ56による各ビット線対の駆動が停止されると、マッチ線コントローラ58により各マッチ線のプリチャージが再び行われる。
以上の動作(比較動作)はクロックSRの1周期の間に行われ、データ圧縮コントローラ22からの検索データ、検索指示SEARCH、書込みアドレスWADRの入力に同期して繰り返される。
尚、上記説明において、文字データはデータ要素の一例である。また、ORFBが「1」である場合の信号は、一致データ要素の列が記憶されていることを示す列存在情報、第1の列存在情報の一例であり、MADRは、一致データ要素の列が記憶されているアドレスを示す列アドレス情報、第1の列アドレス情報の一例であり、信号生成回路64、ラッチ66、第1プライオリティエンコーダ74、第2プライオリティエンコーダ76、OR回路78からなる部分は生成回路、特に基本生成回路の一例である。更に、データ圧縮コントローラ22は、検索開始点、データ要素列の位置及び長さを決定する決定部の一例である。
次に、比較結果制御回路60の動作について、図5を参照して説明する。尚、図5では元データがテキストデータであり、アドレス「0」〜「5」のCAMセル列に既に「ABABBC」の文字データ列が順に記憶されており、かつ、検索データとして「ABBBC…」の順に文字データが入力された場合を例として示しており、ラッチ62〜62をML0〜ML5、ラッチ66〜66をPS0〜PS5と称している。また、以下では他の繰り返しデータ検索装置においては比較動作の結果が連続して「不一致」となっているものとする。
図5(a)に示すように、検索データとして、まず「A」の文字データが入力されると、アドレス「0」及び「2」のCAMセル列(図5では太枠で示す)で比較結果が「一致」となり、マッチ線MATCH0〜MATCH5のうちマッチ線MATCH0及びMATCH2以外はローレベルにディスチャージされ、マッチ線MATCH0及びMATCH2のみがハイレベルのまま維持される。各マッチ線MATCH0〜MATCH5のレベルは比較結果制御回路60のラッチML0〜ML5に各々保持された後に、次の周期で信号生成回路64〜64に各々出力される。
図5(a)に示すように、このときはラッチPS0〜PS5に保持されているレベルがローレベル(図5では「0」:図示していないラッチPS6〜PSN、及び、他のブロックのラッチPS0〜PSNについても同様とする)であるので、AND回路70〜70から出力される信号は何れもローレベルとなり、OR回路78から出力されるフィードバック信号ORFB0及びOR回路80から出力されるフィードバック信号ORFBもローレベルとなる。このように本実施の形態では、1文字のみ一致したのみ、即ち1回の比較動作で比較結果が「一致」となったCAMセル列があったのみではフィードバック信号ORFBはハイレベルとはならない。またフィードバック信号ORFBがローレベルであるので、OR回路72〜72の出力は何れもハイレベルとなり、ラッチML0〜ML5から出力された信号のレベルはラッチPS0〜PS5にそのまま保持される(図5(b)参照)。
図5(b)に示すように、次の検索データとして「B」の文字データが入力されると、アドレス「1」、「3」、「4」のCAMセル列で比較結果が「一致」となり、各マッチ線のレベル(マッチ線MATCH1,3,5のみがハイレベル)はラッチML0〜ML5に各々保持される。そして次の周期では、ラッチML1、ML3、ML5の出力が各々ハイレベルになると共に、ラッチPS0、PS2(即ちラッチML1、ML3の前段のラッチPS)の出力が各々ハイレベルとなるので、図5(b)に示すようにAND回路70、70から出力される信号がハイレベルとなり、OR回路78から出力されるフィードバック信号ORFB0、OR回路80から出力されるフィードバック信号ORFBが各々ハイレベルになる。
このように、フィードバック信号ORFBは2文字以上連続して一致した場合、即ち続けて入力された複数の検索データからなるデータ列がCAMセルアレイ26に記憶されていた場合にのみハイレベルとなる。尚、第1プライオリティエンコーダ74が一致アドレスMADR0として最も低いアドレスを出力するものであるとすると、一致アドレスMADR0はPS0に対応するアドレス「0」となる。また、第2プライオリティエンコーダ76から出力される一致アドレスMADRについては、他の繰り返しデータ検索装置から入力される一致アドレスの値にも依存するが、他の繰り返しデータ検索装置でデータが一致していない場合には、一致アドレスMADRの下位側のビットの値は一致アドレスMADR0の値に等しくなる。また一致アドレスMADRの上位側のビットの値は、一致したエンコーダブロックのアドレス(複数の繰り返しデータ検索装置の各々に付与されたアドレス)となるが、この場合はアドレス0のブロックなので全て0となる。
図5(c)に示すように、次の検索データとして「B」の文字データが入力されると、前回と同じマッチ線がハイレベルとなり、各マッチ線のレベルがラッチML0〜ML5に各々一旦保持された後に、信号生成回路64〜64に各々出力される。このときには、出力がハイレベルとなるラッチML1、ML3、ML4のうち前段のラッチPSの出力もハイレベルであるラッチはラッチML4のみであるので、AND回路70、70、70から出力される信号のうちAND回路70から出力される信号のみがハイレベルとなる。従って、OR回路78から出力されるフィードバック信号ORFB0はハイレベルで維持され、一致アドレスMADR0はPS4に対応するアドレス「4」となる。
また、フィードバック信号ORFBがハイレベルで維持されるので、現在のサイクルをmとすると、アドレスnのラッチPSには、アドレスnのラッチMLの出力ML(n,m)と、前段のラッチPSの出力PS(n-1,m)との論理積に相当する信号が出力される。この結果、ラッチPS4のみハイレベルを保持することになる。
続いて図5(d)に示すように、次の検索データとして「B」の文字データが入力される。この場合、ラッチML0〜ML5に各々一旦保持された後に信号生成回路64〜64に各々入力される各マッチ線のレベルは前回と同じであるが、ハイレベルの信号を出力するラッチML1、ML3、ML4の何れについても、前段のラッチPSから出力される信号がローレベルであるので、AND回路70〜70から出力される信号は何れもローレベルとなり、フィードバック信号ORFB0及びフィードバック信号ORFBもローレベルとなる。またフィードバック信号ORFBがローレベルになると、各信号生成回路64〜64のOR回路72〜72の出力信号が各々ハイレベルとなるので、ラッチML1〜ML5から出力された信号のレベルはラッチPS0〜PS5にそのまま保持される。
更に、図5(e)に示すように次の検索データとして「C」の文字データが入力されるとマッチ線MATCH5のみがハイレベルとなり、各マッチ線のレベルがラッチML0〜ML5に各々一旦保持された後に、信号生成回路64〜64に各々出力される。このときには、ラッチML5からのみハイレベルの信号が出力され、前段のラッチPS4からもハイレベルの信号が出力されるので、AND回路70〜70から出力される信号のうちAND回路70から出力される信号のみがハイレベルとなる。従って、OR回路78から出力されるフィードバック信号ORFB0はハイレベルで維持され、一致アドレスMADR0はPS1に対応するアドレス「1」となる。
このように、繰り返しデータ検索回路21は、1文字入力されるごとにCAMセルアレイ26全体からその文字に一致する文字を検索する機能と、一致する文字があった文字についてその直前までの文字列が一致していたかの情報を保持する機能とを有しており、他の方法に比べ圧倒的に高速な文字列検索を可能にするものである。
ここで、問題となるのは、文字列のトレースをどのように開始するかという点である。通常は最初の1文字が一致した位置で文字列のトレースを開始する。そうすることで、ある程度効果的な文字列圧縮を行うことは可能である。しかしながら、圧縮対象文字列によっては、最初の1文字が一致した位置でトレースを開始することが、必ずしも最良の圧縮に結び付くわけではない。
図6に、このような文字列検索の例を示す。
この例では、図6(a)に示すように、「A」から「Y」まで10文字(枠で囲んで示す)が入力された状態で、この10文字からなる文字列を対象として、新たに入力される文字列「ABCDEF」に一致する文字列を検索する。
このとき、最初に一致した文字からトレースすると、図6(b)のような圧縮結果が得られる。即ち、まず、文字列「ABC」に一致する文字列(太枠で囲んで示す)が見つかり、次に、新たに入力された文字列のうちの残りの文字列「DEF」に一致する文字列(太枠で囲んで示す)が見つかる。これにより、文字列「ABCDEF」は「<10,3><7,3>」に置き換えられ、圧縮が実現される。
これに対し、最初に一致した文字を捨てて、2文字目が一致した位置からトレースすると、図6(c)のような圧縮結果が得られる。即ち、文字列「BCDEF」に一致する文字列(太枠で囲んで示す)が見つかる。これにより、文字列「ABCDEF」は「A<7,5>」に置き換えられ、図6(b)よりも高い圧縮率となっている。
この場合に、最初の文字の一致を捨てた方がよいのかどうかや、何文字目までの一致を捨てるのが最良なのかは、圧縮対象データの属性次第である。従って、実際の適用には、複数のトレースを同時に行い、文字列の一致が途切れたトレースは切り捨て、文字列の一致が最も長く続いているトレースを選択する必要がある。
そこで、本実施の形態では、図2〜図5で述べたバイトの一致検出機構をそのまま利用し、この機能に複数の文字列トレース機構をカスケード接続した。これにより、複数の文字列トレース機構は、トレースの開始を各機構の段数分遅らせた文字列の一致検索を効果的に同時進行させ、全てのトレースの中から文字列一致が最長のものを選択する。言い換えると、図2〜図5で述べた装置の大部分の面積を占める一致文字検出機構はそのまま利用し、文字列のトレース機構のみを複数個実装することで、ハードウェアリソースの増加を最小限に保ち、スループットを低下させることなく、文字列検索機能を強化する。
図7−1及び図7−2は、本実施の形態における繰り返しデータ検索装置20の構成例を示したものである。
図7−1に示すように、繰り返しデータ検索装置20は、繰り返しデータ検索回路21と、トレース回路100、100、…、100とを含む。
繰り返しデータ検索回路21は、内部構成については図2〜図4で説明したものと同様であるが、トレース回路100、100、…、100を接続したことにより、外部の回路との間で信号の入出力を行う構成について若干構成が異なっているので、その構成が異なる部分のみを説明する。尚、図では、図4のラッチ62〜62をまとめてラッチ62とし、図4のラッチ66〜66をまとめてラッチ66としている。また、図4と同様、AND回路68〜68、AND回路70〜70、OR回路72〜72のうち、AND回路68、AND回路70、OR回路72のみを示している。但し、添字は省略している。
図7−1に示すように、繰り返しデータ検索回路21は、OR回路78と、JKフリップフロップ102とを更に含む。OR回路78の出力端はOR回路84の1個の入力端に接続され、OR回路84の出力端はインバータを介してOR回路72の2個の入力端の一方に接続されている。また、OR回路78の出力端はJKフリップフロップ102のJ入力端にも接続され、OR回路84の出力端はJKフリップフロップ102のK入力端にインバータを介して接続されている。
また、図4では、第1プライオリティエンコーダ74及び第2のプライオリティエンコーダ76を設けていたが、ここでは、第2プライオリティエンコーダ76に相当するプライオリティエンコーダ82のみを設けている。即ち、図4では、CAMセルアレイ26から第1プライオリティエンコーダ74までが繰り返しデータ検索回路21であったが、この図では、CAMセルアレイ26から第2プライオリティエンコーダ76に相当するプライオリティエンコーダ82までが繰り返しデータ検索回路21になっている。
トレース回路100、100、…、100は各々同一の構成であるので、トレース回路100で代表して述べる(J=1,2,…,K)。
トレース回路100は、繰り返しデータ検索回路21のCAMセルアレイ26及びラッチ62を除く部分とほぼ同様の構成である。即ち、トレース回路100は、ラッチ106J0〜106JN、AND回路108J0〜108JN、AND回路110J0〜110JN、OR回路112J0〜112JN、OR回路114、プライオリティエンコーダ116を有しており、これらは各々、繰り返しデータ検索回路21のラッチ66〜66、AND回路68〜68、AND回路70〜70、OR回路72〜72、OR回路78、プライオリティエンコーダ82に相当する。尚、トレース回路100についても、ラッチ106J0〜106JNをまとめてラッチ106としている。また、AND回路108J0〜108JN、AND回路110J0〜110JN、OR回路112J0〜112JNのうち、AND回路108J1、AND回路110J1、OR回路112J1のみを示している。但し、2つ目の添字(CAMセル列のアドレスを表す添字)は省略している。
図7−1に示すように、トレース回路100は、OR回路114と、JKフリップフロップ102J+1と、AND回路104とを含む。OR回路114の出力端はOR回路84の1個の入力端に接続されている。また、OR回路114の出力端はJKフリップフロップ102J+1のJ入力端にも接続され、OR回路84の出力端はJKフリップフロップ102J+1のK入力端にインバータを介して接続されている(J=Kのときは除く)。更に、OR回路84の出力端はAND回路104の2個の入力端の一方に接続され、AND回路104の2個の入力端の他方にはJKフリップフロップ102J−1の出力端が接続されている。
また、図7−2に示すように、繰り返しデータ検索装置20は、タイミング調整回路群86と、フリップフロップ群88と、OR回路90と、デコーダ92と、フリップフロップ群94と、セレクタ96とを更に含む。
タイミング調整回路群86は、AND回路118〜118と、Dフリップフロップ120〜120とを含む。AND回路118の2個の入力端の一方は繰り返しデータ検索回路21のOR回路78の出力端に接続され、AND回路118の2個の入力端の他方はDフリップフロップ120の出力端に接続されている。また、Dフリップフロップ120のデータ入力端は接地されており、クロック入力端はOR回路78の出力端に接続されている。AND回路118の2個の入力端の一方はトレース回路100のOR回路114の出力端に接続され、AND回路118の2個の入力端の他方はDフリップフロップ120の出力端に接続されている。また、Dフリップフロップ120のデータ入力端は接地されており、クロック入力端はOR回路114の出力端に接続されている(J=1,2,…,K)。
フリップフロップ群88は、フリップフロップ12201〜1220K、12211〜1221(K−1)、…、122(K−1)1を含む。フリップフロップ122J1〜122J(K−J)は(K−J)段フリップフロップを構成し、フリップフロップ122J(K−J)の入力端はAND回路118の出力端に接続され、フリップフロップ122J1の出力端はOR回路90及びデコーダ92の入力端に接続されている(J=1,2,…,K−1)。尚、AND回路118の出力端は直接OR回路90及びデコーダ92の入力端に接続されている。
フリップフロップ群94は、フリップフロップ12401〜1240K、12411〜1241(K−1)、…、124(K−1)1を含む。フリップフロップ12401〜1240KはK段フリップフロップを構成し、フリップフロップ1240Kの入力端は繰り返しデータ検索回路21のプライオリティエンコーダ82の出力端に接続され、フリップフロップ12401の出力端はセレクタ96の入力端に接続されている。また、フリップフロップ124J1〜124J(K−J)は(K−J)段フリップフロップを構成し、フリップフロップ124J(K−J)の入力端はトレース回路100のプライオリティエンコーダ116の出力端に接続され、フリップフロップ124J1の出力端はセレクタ96の入力端に接続されている(J=1,2,…,K−1)。尚、プライオリティエンコーダ116の出力端は直接セレクタ96の入力端に接続されている。
尚、上記説明において、ラッチ106、AND回路108、AND回路110、OR回路112、OR回路114、プライオリティエンコーダ116からなる部分は生成回路、特にJ番目の拡張生成回路の一例である。また、OR回路90は第1の出力回路の一例であり、セレクタ96は第2の出力回路の一例である。
次に、本実施の形態における繰り返しデータ検索装置20の動作について、図8−1〜図8−3を参照して説明する。尚、図8−1〜図8−3では元データがテキストデータであり、アドレス「0」〜「9」のCAMセル列に既に「ABCXBCDEFY」の文字データ列が順に記憶されており、かつ、検索データとして「ABCDEF」の順に文字データが入力された場合を例として示しており、トレース回路100の数を5としている。また、ラッチ62〜62をML0〜ML9、ラッチ66〜669をPS00〜PS09、ラッチ10610〜10619をPS10〜PS19、ラッチ10620〜10629をPS20〜PS29、…、ラッチ10650〜10659をPS50〜PS59と称している。更に、繰り返しデータ検索回路21、トレース回路100、100、…、100の各々において、複数のPSに「1」が保持されていた場合、プライオリティエンコーダ82、116、116、…、116は、最も低いアドレスを選択して出力するものとする。
図8−1(a)に示すように、検索データとして、まず「A」の文字データが入力されると、アドレス「0」のCAMセル列で比較結果が「一致」となるので、ラッチML0に保持されるレベルがハイレベルとなる。
このとき、ラッチPS00〜PS09に保持されているレベルがローレベルであるので、AND回路70〜70から出力される信号は何れもローレベルとなり、OR回路78から出力されるフィードバック信号ORFB-0もローレベルとなる。
ラッチPS10〜PS19、…、PS50〜PS59に保持されているレベルがローレベルであるので、AND回路11010〜11019、…、11050〜11059から出力される信号は何れもローレベルとなり、OR回路114、…、114から出力されるフィードバック信号ORFB-1、…、ORFB-5もローレベルとなる。
このようにフィードバック信号ORFB-0、ORFB-1、…、ORFB-5がローレベルであることから、OR回路84から出力される信号はローレベルとなるので、OR回路72〜72の出力は何れもハイレベルとなり、ラッチML0〜ML9から出力された信号のレベルはラッチPS00〜PS09にそのまま保持される。これにより、ラッチPS00〜PS09のうち、ラッチPS00が保持するレベルのみがハイレベルとなっているので、プライオリティエンコーダ82は、一致アドレスMADR-0としてアドレス「0」を出力する(図8−1(b)参照)。
また、OR回路78から出力されるローレベルの信号がJKフリップフロップ102のJ入力端に入力され、OR回路84から出力されるローレベルの信号を反転したハイレベルの信号がJKフリップフロップ102のK入力端に入力されることにより、JKフリップフロップ102に保持されるレベルはローレベルとなる。
図8−1(b)に示すように、次の検索データとして「B」の文字データが入力されると、アドレス「1」、「4」のCAMセル列で比較結果が「一致」となるので、ラッチML1、ML4に保持されるレベルがハイレベルとなる。
このとき、ラッチPS00に保持されているレベルがハイレベルであるので、AND回路70から出力される信号はハイレベルとなり、OR回路78から出力されるフィードバック信号ORFB-0もハイレベルとなる。
ラッチPS10〜PS19、…、PS50〜PS59に保持されているレベルがローレベルであるので、AND回路11010〜11019、…、11050〜11059から出力される信号は何れもローレベルとなり、OR回路114、…、114から出力されるフィードバック信号ORFB-1、…、ORFB-5もローレベルとなる。
このようにフィードバック信号ORFB-0がハイレベルであることから、OR回路84から出力される信号もハイレベルとなるので、ラッチML0〜ML9から出力された信号のレベルと前段のラッチPSから出力された信号との論理積がラッチPS00〜PS09に保持される。これにより、ラッチPS00〜PS09のうち、ラッチPS1が保持するレベルのみがハイレベルとなっているので、プライオリティエンコーダ82は、一致アドレスMADR-0としてアドレス「1」を出力する(図8−2(c)のPS0欄参照)。
JKフリップフロップ102に保持されていたレベルはローレベルであり、AND回路104から出力される信号もローレベルとなるので、OR回路11210〜11219の出力は何れもハイレベルとなり、ラッチML0〜ML9から出力された信号のレベルはラッチPS10〜PS19にそのまま保持される。これにより、ラッチPS10〜PS19のうち、ラッチPS11、PS14が保持するレベルがハイレベルとなっているので、プライオリティエンコーダ116は、一致アドレスMADR-1としてアドレス「1」を出力する(図8−2(c)のPS1欄参照)。
また、OR回路78から出力されるハイレベルの信号がJKフリップフロップ102のJ入力端に入力され、OR回路84から出力されるハイレベルの信号を反転したローレベルの信号がJKフリップフロップ102のK入力端に入力されることにより、JKフリップフロップ102に保持されるレベルはハイレベルとなる。
OR回路114から出力されるローレベルの信号がJKフリップフロップ102のJ入力端に入力され、OR回路84から出力されるローレベルの信号を反転したハイレベルの信号がJKフリップフロップ102のK入力端に入力されることにより、JKフリップフロップ102に保持されるレベルはローレベルとなる。
図8−2(c)に示すように、次の検索データとして「C」の文字データが入力されると、アドレス「2」、「5」のCAMセル列で比較結果が「一致」となるので、ラッチML2、ML5に保持されるレベルがハイレベルとなる。
このとき、ラッチPS01に保持されているレベルがハイレベルであるので、AND回路70から出力される信号はハイレベルとなり、OR回路78から出力されるフィードバック信号ORFB-0もハイレベルとなる。
ラッチPS11、PS14に保持されているレベルがハイレベルであるので、AND回路11011、11014から出力される信号はハイレベルとなり、OR回路114から出力されるフィードバック信号ORFB-1もハイレベルとなる。
ラッチPS20〜PS29、…、PS50〜PS59に保持されているレベルがローレベルであるので、AND回路11020〜11029、…、11050〜11059から出力される信号は何れもローレベルとなり、OR回路114、…、114から出力されるフィードバック信号ORFB-2、…、ORFB-5もローレベルとなる。
このようにフィードバック信号ORFB-0、ORFB-1がハイレベルであることから、OR回路84から出力される信号もハイレベルとなるので、ラッチML0〜ML9から出力された信号のレベルと前段のラッチPS0から出力された信号との論理積がラッチPS00〜PS09に保持される。これにより、ラッチPS00〜PS09のうち、ラッチPS02が保持するレベルのみがハイレベルとなっているので、プライオリティエンコーダ82は、一致アドレスMADR-0としてアドレス「2」を出力する(図8−2(d)のPS0欄参照)。
JKフリップフロップ102に保持されていたレベル及びOR回路84から出力される信号はハイレベルであり、AND回路104から出力される信号もハイレベルとなるので、ラッチML0〜ML9から出力された信号のレベルと前段のラッチPS1から出力された信号との論理積がラッチPS10〜PS19に保持される。これにより、ラッチPS10〜PS19のうち、ラッチPS12、PS15が保持するレベルがハイレベルとなっているので、プライオリティエンコーダ116は、一致アドレスMADR-1としてアドレス「2」を出力する(図8−2(d)のPS1欄参照)。
JKフリップフロップ102に保持されていたレベルはローレベルであり、AND回路104から出力される信号もローレベルとなるので、OR回路11220〜11229の出力は何れもハイレベルとなり、ラッチML0〜ML9から出力された信号のレベルはラッチPS10〜PS19にそのまま保持される。これにより、ラッチPS20〜P29のうち、ラッチPS22、PS25が保持するレベルがハイレベルとなっているので、プライオリティエンコーダ116は、一致アドレスMADR-2としてアドレス「2」を出力する(図8−2(d)のPS2欄参照)。
また、OR回路78から出力されるハイレベルの信号がJKフリップフロップ102のJ入力端に入力され、OR回路84から出力されるハイレベルの信号を反転したローレベルの信号がJKフリップフロップ102のK入力端に入力されることにより、JKフリップフロップ102に保持されるレベルはハイレベルとなる。
OR回路114から出力されるハイレベルの信号がJKフリップフロップ102のJ入力端に入力され、OR回路84から出力されるハイレベルの信号を反転したローレベルの信号がJKフリップフロップ102のK入力端に入力されることにより、JKフリップフロップ102に保持されるレベルはハイレベルとなる。
OR回路114から出力されるローレベルの信号がJKフリップフロップ102のJ入力端に入力され、OR回路84から出力されるハイレベルの信号を反転したローレベルの信号がJKフリップフロップ102のK入力端に入力されることにより、JKフリップフロップ102に保持されるレベルはローレベルとなる。
図8−2(d)に示すように、次の検索データとして「D」の文字データが入力されると、アドレス「6」のCAMセル列で比較結果が「一致」となるので、ラッチML6に保持されるレベルがハイレベルとなる。
このとき、ラッチML6の前段のラッチPS05に保持されているレベルはローレベルであり、また、ラッチPS02に保持されているレベルはハイレベルであるが後段のラッチML3に保持されているレベルはローレベルであるので、AND回路70〜70から出力される信号は何れもローレベルとなり、OR回路78から出力されるフィードバック信号ORFB-0もローレベルとなる。
ラッチPS12、PS15、PS22、PS25に保持されているレベルがハイレベルであるので、AND回路11010〜11019、11020〜11029から出力される信号は何れもハイレベルとなり、OR回路114、114から出力されるフィードバック信号ORFB-1、ORFB-2もハイレベルとなる。
ラッチPS30〜PS39、…、PS50〜PS59に保持されているレベルがローレベルであるので、AND回路11030〜11039、…、11050〜11059から出力される信号は何れもローレベルとなり、OR回路114、…、114から出力されるフィードバック信号ORFB-3、…、ORFB-5もローレベルとなる。
このようにフィードバック信号ORFB-1、ORFB-2がハイレベルであることから、OR回路84から出力される信号もハイレベルとなるので、ラッチML0〜ML9から出力された信号のレベルと前段のラッチPS0から出力された信号との論理積がラッチPS00〜PS09に保持される(図8−3(e)のPS0欄参照)。即ち、検索データとの一致がここで途切れたので、ラッチPS00〜PS09に保持されているレベルはローレベルとなっている。
JKフリップフロップ102、102に保持されていたレベル及びOR回路84から出力される信号はハイレベルであり、AND回路104、104から出力される信号もハイレベルとなるので、ラッチML0〜ML9から出力された信号のレベルと前段のラッチPS1、PS2から出力された信号の各々との論理積がラッチPS10〜PS19、PS20〜PS29に保持される。これにより、ラッチPS10〜PS19、PS20〜PS29のうち、ラッチPS16、PS26が保持するレベルがハイレベルとなっているので、プライオリティエンコーダ116、1162は、一致アドレスMADR-1、MADR-2としてアドレス「6」を出力する(図8−3(e)のPS1欄、PS2欄参照)。
JKフリップフロップ102に保持されていたレベルはローレベルであり、AND回路104から出力される信号もローレベルとなるので、OR回路11230〜11239の出力は何れもハイレベルとなり、ラッチML0〜ML9から出力された信号のレベルはラッチPS30〜PS39にそのまま保持される。これにより、ラッチPS30〜PS39のうち、ラッチPS36が保持するレベルがハイレベルとなっているので、プライオリティエンコーダ116は、一致アドレスMADR-3としてアドレス「6」を出力する(図8−3(e)のPS3欄参照)。
また、OR回路78から出力されるローレベルの信号がJKフリップフロップ102のJ入力端に入力され、OR回路84から出力されるハイレベルの信号を反転したローレベルの信号がJKフリップフロップ102のK入力端に入力されることにより、JKフリップフロップ102に保持されるレベルはハイレベルとなる。
OR回路114、114から出力されるハイレベルの信号がJKフリップフロップ102、102のJ入力端に入力され、OR回路84から出力されるハイレベルの信号を反転したローレベルの信号がJKフリップフロップ102、102のK入力端に入力されることにより、JKフリップフロップ102、102に保持されるレベルはハイレベルとなる。
OR回路114から出力されるローレベルの信号がJKフリップフロップ102のJ入力端に入力され、OR回路84から出力されるハイレベルの信号を反転したローレベルの信号がJKフリップフロップ102のK入力端に入力されることにより、JKフリップフロップ102に保持されるレベルはローレベルとなる。
図8−3(e)に示すように、次の検索データとして「E」の文字データが入力されると、アドレス「7」のCAMセル列で比較結果が「一致」となるので、ラッチML6に保持されるレベルがハイレベルとなる。
このとき、ラッチPS00〜PS09に保持されているレベルがローレベルであるので、AND回路70〜70から出力される信号は何れもローレベルとなり、OR回路78から出力されるフィードバック信号ORFB-0もローレベルとなる。
ラッチPS16、PS26、PS36に保持されているレベルがハイレベルであるので、AND回路11010〜11019、11020〜11029、11030〜11039から出力される信号は何れもハイレベルとなり、OR回路114、114、114から出力されるフィードバック信号ORFB-1、ORFB-2、ORFB-3もハイレベルとなる。
ラッチPS40〜PS49、PS50〜PS59に保持されているレベルがローレベルであるので、AND回路11040〜11049、11050〜11059から出力される信号は何れもローレベルとなり、OR回路114、114から出力されるフィードバック信号ORFB-4、ORFB-5もローレベルとなる。
このようにフィードバック信号ORFB-1、ORFB-2、ORFB-3がハイレベルであることから、OR回路84から出力される信号もハイレベルとなるので、ラッチML0〜ML9から出力された信号のレベルと前段のラッチPS0から出力された信号との論理積がラッチPS00〜PS09に保持される(図8−3(f)のPS0欄参照)。
JKフリップフロップ102、102、102に保持されていたレベル及びOR回路84から出力される信号はハイレベルであり、AND回路104、104、104から出力される信号もハイレベルとなるので、ラッチML0〜ML9から出力された信号のレベルと前段のラッチPS1、PS2、PS3から出力された信号の各々との論理積がラッチPS10〜PS19、PS20〜PS29、PS30〜PS39に保持される。これにより、ラッチPS10〜PS19、PS20〜PS29、PS30〜PS39のうち、ラッチPS17、PS27、PS37が保持するレベルがハイレベルとなっているので、プライオリティエンコーダ116、116、116は、一致アドレスMADR-1、MADR-2、MADR-3としてアドレス「7」を出力する(図8−3(f)のPS1欄、PS2欄、PS3欄参照)。
JKフリップフロップ102に保持されていたレベルはローレベルであり、AND回路104から出力される信号もローレベルとなるので、OR回路11240〜11249の出力は何れもハイレベルとなり、ラッチML0〜ML9から出力された信号のレベルはラッチPS40〜PS49にそのまま保持される。これにより、ラッチPS40〜PS49のうち、ラッチPS47が保持するレベルがハイレベルとなっているので、プライオリティエンコーダ116は、一致アドレスMADR-4としてアドレス「7」を出力する(図8−3(f)のPS4欄参照)。
以上の動作で文字データが入力されるごとに出力されたORFB-0〜ORFB-K(上記例ではK=5)はAND回路118〜118を経由してデコーダ92へと出力される。ここで、本実施の形態では、OR回路84からのフィードバック信号ORFBがローレベルになると、Dフリップフロップ120〜120がハイレベルに設定され、ORFB-0〜ORFB-KがAND回路118〜118を通過できるようになっている。一方で、ORFB-0〜ORFB-Kのレベルが一旦ハイレベルになった後にローレベルになると、Dフリップフロップ120〜120のクロック入力端から入力されるレベルがローレベルからハイレベルになり、ORFB-0〜ORFB-KがAND回路118〜118を通過できないようになる。
また、同じく文字データが入力されるごとに出力されたMADR-0〜MADR-5はセレクタ96へと出力される。
但し、本実施の形態では、ORFB-Jを伝える経路上のデコーダ92の前にK−J段のフリップフロップ122を設け、MADR-Jを伝える経路上のセレクタ96の前にK−J段のフリップフロップ124を設けている(J=1,2,…,K−1)。また、ORFB-K、MADR-Kを伝える経路上のデコーダ92、セレクタ96の前にはフリップフロップを設けていない。これにより、ORFB-0〜ORFB-5及びMADR-0〜MADR-5は、上記動作で基準とした文字データの入力タイミングに同期したタイミングでデコーダ92及びセレクタ96に届くのではなく、フリップフロップの段数分ずれたタイミングでデコーダ92及びセレクタ96に届くようになっている。
そこで、次に、デコーダ92及びセレクタ96が信号を受け取るタイミングを基準として、繰り返しデータ検索装置20の動作を説明する。尚、図8−1〜図8−3には示していないが、以下では、図8−3(f)の文字データ「F」で文字列の一致は終了することを前提にする。即ち、文字データ「F」の次の文字データが入力されると、ORFB-0〜ORFB-5はローレベルになるものとする。また、デコーダ92は、ORFB-0〜ORFB-5のうちハイレベルになっているORFBの番号をセレクタ96に伝え、セレクタ96は、デコーダ92から伝えられた番号のMADRのうち、最小の番号のMADRを選択するものとする。
まず、デコーダ92が図8−1(b)で出力されたORFB-0をフリップフロップ12201から受け取る時点を考える。この時点において、デコーダ92は、図8−2(c)で出力されたORFB-1をフリップフロップ12211から、図8−2(d)で出力されたORFB-2をフリップフロップ12221から、図8−3(e)で出力されたORFB-3をフリップフロップ12231から、図8−3(f)で出力されたORFB-4をフリップフロップ12241から、図8−3(f)以降に出力されたORFB-5(ローレベル)をプライオリティエンコーダ116から受け取る。この場合、ORFB-0〜ORFB-4がハイレベルなので、OR回路90からデータ圧縮コントローラ22へ出力されるConsolidated ORFB(以下、「C-ORFB」と略記する)はハイレベルとなる。また、デコーダ92は、ORFB-0〜ORFB-4がハイレベルであることをセレクタ96に伝え、セレクタ96は、MADR-0を選択し、アドレス「0」をデータ圧縮コントローラ22に出力する。
次に、デコーダ92は、図8−2(c)で出力されたORFB-0をフリップフロップ12201から、図8−2(d)で出力されたORFB-1をフリップフロップ12211から、図8−3(e)で出力されたORFB-2をフリップフロップ12221から、図8−3(f)で出力されたORFB-3をフリップフロップ12231から、図8−3(f)以降に出力されたORFB-4、ORFB-5(何れもローレベル)を各々、フリップフロップ12241、プライオリティエンコーダ116から受け取る。この場合、ORFB-0〜ORFB-3がハイレベルなので、OR回路90からデータ圧縮コントローラ22へ出力されるC-ORFBはハイレベルとなる。また、デコーダ92は、ORFB-0〜ORFB-3がハイレベルであることをセレクタ96に伝え、セレクタ96は、MADR-0を選択し、アドレス「1」をデータ圧縮コントローラ22に出力する。
次に、デコーダ92は、図8−2(d)で出力されたORFB-0をフリップフロップ12201から、図8−3(e)で出力されたORFB-1をフリップフロップ12211から、図8−3(f)で出力されたORFB-2をフリップフロップ12221から、図8−3(f)以降に出力されたORFB-3〜ORFB-5(何れもローレベル)を各々、フリップフロップ12231、フリップフロップ12241、プライオリティエンコーダ116から受け取る。この場合、ORFB-1、ORFB-2がハイレベルなので、OR回路90からデータ圧縮コントローラ22へ出力されるC-ORFBはハイレベルとなる。また、デコーダ92は、ORFB-1、ORFB-2がハイレベルであることをセレクタ96に伝え、セレクタ96は、MADR-1を選択し、アドレス「6」をデータ圧縮コントローラ22に出力する。図8−1〜図8−3の例では、「A」からトレースした場合、この時点で文字列の一致が途切れるので、デコーダ92はORFB-0をセレクタ96に伝えず、セレクタ96がORFB-0を選択しないようにしている。
次に、デコーダ92は、図8−3(e)で出力されたORFB-0をフリップフロップ12201から、図8−3(f)で出力されたORFB-1をフリップフロップ12211から、図8−3(f)以降に出力されたORFB-2〜ORFB-5(何れもローレベル)を各々、フリップフロップ12221、フリップフロップ12231、フリップフロップ12241、プライオリティエンコーダ116から受け取る。この場合、ORFB-1がハイレベルなので、OR回路90からデータ圧縮コントローラ22へ出力されるC-ORFBはハイレベルとなる。また、デコーダ92は、ORFB-1がハイレベルであることをセレクタ96に伝え、セレクタ96は、MADR-1を選択し、アドレス「7」をデータ圧縮コントローラ22に出力する。
次に、デコーダ92は、図8−3(f)で出力されたORFB-0をフリップフロップ12201から、図8−3(f)以降に出力されたORFB-1〜ORFB-5(何れもローレベル)を各々、フリップフロップ12211、フリップフロップ12221、フリップフロップ12231、フリップフロップ12241、プライオリティエンコーダ116から受け取る。この場合、ORFB-1〜ORFB-5は何れもローレベルなので、OR回路90からデータ圧縮コントローラ22へ出力されるC-ORFBはローレベルとなる。
従って、データ圧縮コントローラ22は、C-ORFBがローレベルになる直前にセレクタ96から受け取った「7」を一致アドレスとして用いることになる。
次に、本実施の形態におけるデータ圧縮コントローラ22の動作について説明する。
図9は、データ圧縮コントローラ22における処理を示したフローチャートである。尚、この処理は、データ圧縮コントローラ22にバス18を介して圧縮すべきデータ(元データ)が転送され、CPU12から元データの圧縮が指示されると実行される。
データ圧縮コントローラ22は、まず、繰り返しデータ検索装置20の比較結果制御回路60のラッチ62〜62、ラッチ66〜66を各々リセットする(ステップ200)。次に、一致長MLENを「1」に、書込みアドレスWADRを「0」に各々初期設定する(ステップ202)。そして、繰り返しデータ検索装置20への元データの出力が終了したか否か判定する(ステップ204)。判定が否定された場合には、元データから先頭の1文字に対応する文字C0のデータを検索データとして取り出し、繰り返しデータ検索装置20に検索指示SEARCH、書込みアドレスWADRと共に出力する(ステップ206)。これにより、繰り返しデータ検索装置20では前述した検索動作が行われる。
次に、データ圧縮コントローラ22は、繰り返しデータ検索装置20から出力される文字列一致信号C-ORFBがハイレベルになったか否か判定する(ステップ208)。このときには、先のステップ200で各ラッチ62及び各ラッチ66をリセットしたことに伴って文字列一致信号C-ORFBはローレベルで維持されるので、判定が否定されてステップ210へ移行する。そこで、データ圧縮コントローラ22は、今回の比較動作が所定の元データに対する第1回目の比較動作であるか否か判定し(ステップ210)、判定が肯定された場合はステップ212で圧縮データの出力処理を行うことなくステップ214へ移行する。前述したORFBと同様、文字列一致信号C-ORFBも2文字以上連続して一致しないとハイレベルにならないため、比較結果「不一致」が続いている場合は後述するように圧縮データとして前回検索した文字を出力する。従って、この時点では圧縮データとして出力すべきデータがないためステップ212を実行しない。
その後、データ圧縮コントローラ22は、一致長MLENに「1」を代入し(ステップ214)、ステップ218へ移行する。そして、前々回検索文字C2に前回検索文字C1のデータを、前回検索文字C1に今回の文字C0のデータを、各々設定し(ステップ218)、現在の書込みアドレスWADR(第1回目の比較動作では0)に対応するCAMセル列に文字C0のデータを書き込む(ステップ220)。この書込み処理は、実際にはアドレスデコーダ52によって書込みアドレスWADRに対応するCAMセル列のワード線をアサートする(イネーブルにする)ことにより行われる。また、データ圧縮コントローラ22は、次の書込みアドレスWADRとして、書込みアドレスWADRに1を加算し(従って文字データはCAMセル列のアドレスの昇順に書き込まれる)、CAMセルアレイ26のサイズN+1で除した余りを設定する(ステップ222)。
これにより全てのCAMセル列にデータを書き込んだ後は、アドレス「0」のCAMセル列にデータが書き込まれるので、CAMセルアレイ26が所謂リングバッファとして用いられ、CAMセルアレイ26のオーバフロー等が発生することはない。
ステップ222の処理を行った後はステップ204へ戻る。ステップ204の判定が否定された場合にはステップ206以降の処理を再度実行するが、ステップ206では前回検索文字C1に続く文字C0のデータが検索データとして元データから取り出され、検索指示SEARCH、書込みアドレスWADRと共に繰り返しデータ検索装置20へ出力される。そしてステップ208の判定が否定された場合はステップ210へ移行し、この判定が否定されることによりステップ212の圧縮データ出力処理が行われる。
図10に示すように、データ圧縮コントローラ22は、この圧縮データ出力処理で、一致長MLENが2か否か判定する(ステップ230)。前回の比較結果は「一致」であるが、前々回の比較結果が「一致」でない場合は判定が肯定され、圧縮データとして、前々回検索文字C2のデータを出力し(ステップ236)、次いで前回検索文字C1のデータを出力し(ステップ238)、その後に図9のフローチャートのステップ214へ移行する。
ステップ230で判定が否定された場合、データ圧縮コントローラ22は、一致長MLENが1か否かを判定する(ステップ232)。前回の比較結果が「一致」でない場合は判定が肯定され、圧縮データとして前回検索文字C1のデータを出力し(ステップ238)、その後に図9のフローチャートのステップ214へ移行する。
ところで、図9のフローチャートにおいてステップ208の判定が肯定された場合には、一致長MLENをカウントアップし(ステップ216)、その後にステップ218へ移行する。従って、文字列一致信号C-ORFBがハイレベルとなっている間は圧縮データの出力は行われない。
また、前回の比較動作でハイレベルとなっていた文字列一致信号C-ORFBがローレベルに変化してステップ210の判定が否定された場合は、2文字以上の長さの繰り返し文字列の末尾が検出された場合であるので、ステップ212で圧縮データ出力処理が行われる。このときは、前回及び前々回の比較結果が共に「一致」であれば、先に説明したステップ216で一致長MLENがカウントアップされて3以上になっているので、ステップ230及びステップ232の判定が共に否定され、ステップ234へ移行する。
そこで、データ圧縮コントローラ22は、繰り返し文字列を圧縮するための圧縮コードを求める。本実施の形態では、繰り返し文字列と同一の文字列の位置を指し示すポインタを表す第1のコードと、繰り返し文字列の長さを表す第2のコードとで構成された圧縮コードを用いており、第1のコードとして一致アドレスMADRと一致長MLENとの差に1を加えた値(MADR−MLEN+1)を、第2のコードとして一致長MLENを各々設定し、出力する(ステップ234)。これにより、データ圧縮コントローラ22から出力される圧縮データの長さは、元データよりも短くなる。
尚、この圧縮コードを出力するにあたり、圧縮した文字列を復元する際に圧縮コードと文字データとを区別できるようにするために、データ圧縮コントローラ22は文字データと圧縮コードとの間に区切りを表すコードも挿入する。このように、繰り返し文字列が発見される毎にステップ234が実行され、発見された繰り返し文字列が圧縮コードに変換されて出力されることにより、元データの冗長性が取り除かれ、元データが圧縮データに圧縮されることになる。
上述の処理を繰り返し、元データからの文字Cのデータの取り出し位置が元データの末尾に到達するとステップ204の判定が肯定され、データ圧縮コントローラ22は、圧縮データ出力処理を再び行う(ステップ224)。このとき、一致長MLENの値が3以上であれば、ステップ234で圧縮コードの出力が行われるが、一致長MLENの値が2の場合には、ステップ236及びステップ238で圧縮データとして前々回検索文字C2のデータ及び前回検索文字C1のデータを、一致長MLENの値が1の場合には、ステップ238で圧縮データとして前回検索文字C1のデータを、それぞれ出力し、処理を終了する。
尚、この動作例では、圧縮コードのうち第1のコードとして、繰り返し文字列と同一の文字列の位置を指し示すポインタを用いたが、前述した例に従い、繰り返し文字列と同一の文字列の位置と繰り返し文字列の位置との距離を用いてもよい。この場合、データ圧縮コントローラ22は、繰り返しデータ検索回路21及びトレース回路100、100、…、100のうち、ハイレベルのORFBを最も長く出力し続けていた回路を、繰り返しデータ検索装置20からのDecode Output信号(図7−2参照)に基づいて認識し、その回路におけるトレース開始文字の位置から上記繰り返し文字列と同一の文字列の位置を減算して得られた値を第1のコードとすればよい。
以上、本発明の実施の形態について説明した。
このように、本実施の形態では、入力された文字データに一致する文字データをCAMセルアレイ26から検出して文字列としての一致を判定する繰り返しデータ検索回路21に、1文字ずつずらした検索開始点から文字列としての一致を判定する複数のトレース回路100を接続した。これにより、同一部分を有する長さの異なる複数の文字列が存在する検索対象から長い方の文字列を効果的に検出することが可能となり、圧縮率を向上できるようになった。
ここで、本実施の形態による有効性の検証について述べる。
データ圧縮アルゴリズムの評価用の一般的なデータセットとして、Canterbury Corpusの一連のデータがあるが、例えばその中のkennedy.xls(1,029,744バイト)に関する本実施の形態の有効性を示すデータを以下に示す。尚、このデータは、32KBのCAMを用いてLZ77圧縮を行ったものをFixed Huffman Tableで圧縮し、ハードウェアの振る舞いと等価なソフトウェアモデルで検証することにより得られたものである。
(1)LZ77に繰り返しデータ検索回路21のみを適用した場合、圧縮後のバイト数は417,599となり、圧縮率は0.41となった。
(2)LZ77に繰り返しデータ検索回路21及び1バイト遅らせてトレースする1つのトレース回路100からなる回路を適用した場合、圧縮後のバイト数は302,140ととなり、圧縮率は0.29となった。
繰り返しデータ検索回路21では、各アドレスに10ビット(CAMセルアレイ26に8ビット、ラッチ62に1ビット、ラッチ66に1ビット)の情報が保持されるが、上記では各アドレスに1ビットを追加することで圧縮率が飛躍的に向上することが分かる。
尚、本実施の形態では、文字列のある部分を別の部分の位置及び長さの情報で置換することにより文字列を圧縮することを前提にしたが、文字列のある部に基づいて別の部分を検索する際の検索開始点を決定することを前提にしてもよい。その場合、繰り返しデータ検索回路21及びトレース回路100、100、…、100のうち、ハイレベルのORFBの連続生成回数が最も多い回路が分かればよいので、必ずしもORFBの論理和をとってC-ORFBを求めたり、C-ORFBの連続出力回数をカウントしたりする必要はない。
また、本実施の形態では、ハイレベルのORFBの連続生成回数が最も多い回路に対して予め決められた個別開始点を検索開始点に決定したが、これには限らない。例えば、ハイレベルのORFBの連続生成回数が閾値を超えた時点でトレースを終了し、その時点でハイレベルのORFBを生成している何れかの回路を選択して、その選択された回路に対して予め決められた個別開始点を検索開始点に決定してもよい。即ち、より一般的に言うと、ハイレベルのORFBの連続生成回数が所定の条件を満たす回路に対して予め決められた個別開始点を検索開始点に決定するようなものでよい。
更に、本実施の形態では、繰り返しデータ検索回路21及びトレース回路100、100、…、100に対して個別開始点を1文字ずつずらして設定したが、これには限らない。各回路の間で個別開始点が異なってさえいれば、何文字ずつずらして設定してもよい。
以上、本発明を実施の形態を用いて説明したが、本発明の技術的範囲は上記実施の形態には限定されない。本発明の精神及び範囲から逸脱することなく様々に変更したり代替態様を採用したりすることが可能なことは、当業者に明らかである。
20…繰り返しデータ検索装置、21…繰り返しデータ検索回路、22…データ圧縮コントローラ、26…CAMセルアレイ、28…CAMセル、52…アドレスデコーダ、60…比較結果制御回路、64…信号生成回路、74…第1プライオリティエンコーダ、76…第2プライオリティエンコーダ、90…OR回路、92…デコーダ、96…セレクタ、122,124…フリップフロップ

Claims (3)

  1. データ要素列の第1の部分データ要素列を、当該データ要素列の第2の部分データ要素列の位置及び長さの情報で置換することにより、当該データ要素列を圧縮する装置であって、
    前記データ要素列の少なくとも一部を構成する複数のデータ要素の各データ要素を、当該データ要素列における当該各データ要素の位置に応じたアドレスに記憶し、検索データ要素が与えられた場合に、当該検索データ要素に一致する一致データ要素を当該複数のデータ要素の1つとして記憶していれば、当該一致データ要素が記憶されているアドレスを出力する連想メモリと、
    前記検索データ要素が前記連想メモリに与えられた場合に、それまでに与えられた検索データ要素の列のうちの基準データ要素で始まる列に一致する一致データ要素の列が当該連想メモリに記憶されていれば、当該連想メモリから出力される前記アドレスに基づいて、当該一致データ要素の列が記憶されていることを示す第1の列存在情報と、当該一致データ要素の列が記憶されているアドレスを示す第1の列アドレス情報とを生成する基本生成回路と、
    J番目の拡張生成回路が、前記検索データ要素が前記連想メモリに与えられた場合に、それまでに与えられた検索データ要素の列のうちの前記基準データ要素からJ番目のデータ要素で始まる列に一致する一致データ要素の列が当該連想メモリに記憶されていれば、当該連想メモリから出力される前記アドレスに基づいて、当該一致データ要素の列が記憶されていることを示す第1の列存在情報と、当該一致データ要素の列が記憶されているアドレスを示す第1の列アドレス情報とを生成する拡張生成回路であるK個の拡張生成回路(Kは自然数、JはK以下の自然数)と、
    前記検索データ要素が前記連想メモリに与えられた場合に、前記基本生成回路及び前記K個の拡張生成回路の何れかにより前記第1の列存在情報が生成されていれば、それまでに与えられた検索データ要素の列のうちの前記基準データ要素以降の何れかのデータ要素で始まる列に一致する一致データ要素の列が当該連想メモリに記憶されていることを示す第2の列存在情報を出力する第1の出力回路と、
    前記検索データ要素が前記連想メモリに与えられた場合に、前記基本生成回路及び前記K個の拡張生成回路のうち、前記第1の列存在情報を生成している少なくとも1つの生成回路が生成する前記第1の列アドレス情報を、第2の列アドレス情報として出力する第2の出力回路と、
    前記第1の部分データ要素列を構成するデータ要素を前記検索データ要素として順次前記連想メモリに与え、前記第1の出力回路から前記第2の列存在情報が出力されなくなる直前に前記第2の出力回路から出力された前記第2の列アドレス情報に応じて、前記第2の部分データ要素列の位置を決定し、前記第1の出力回路からの前記第2の列存在情報の連続出力回数に応じて、前記第2の部分データ要素列の長さを決定する決定部と
    を含む、装置。
  2. 前記決定部は、複数の生成回路のうちの特定の生成回路による前記列存在情報の連続生成回数が、当該連続生成回数が多いと認められるための所定の条件を満たす場合に、当該特定の生成回路に対して決められた個別開始点を、検索開始点として決定する、請求項1の装置。
  3. 前記所定の条件は、前記特定の生成回路による前記列存在情報の連続生成回数が、前記複数の生成回路のうちの他の生成回路による前記列存在情報の連続生成回数の何れよりも多いという条件を含む、請求項2の装置。
JP2012550766A 2010-12-28 2011-11-01 検索開始点を決定する装置及び方法 Active JP5520391B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2012550766A JP5520391B2 (ja) 2010-12-28 2011-11-01 検索開始点を決定する装置及び方法

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
JP2010293990 2010-12-28
JP2010293990 2010-12-28
JP2012550766A JP5520391B2 (ja) 2010-12-28 2011-11-01 検索開始点を決定する装置及び方法
PCT/JP2011/075170 WO2012090584A1 (ja) 2010-12-28 2011-11-01 検索開始点を決定する装置及び方法

Publications (2)

Publication Number Publication Date
JPWO2012090584A1 JPWO2012090584A1 (ja) 2014-06-05
JP5520391B2 true JP5520391B2 (ja) 2014-06-11

Family

ID=46382705

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012550766A Active JP5520391B2 (ja) 2010-12-28 2011-11-01 検索開始点を決定する装置及び方法

Country Status (5)

Country Link
US (2) US9372887B2 (ja)
JP (1) JP5520391B2 (ja)
CN (1) CN103270699B (ja)
DE (1) DE112011104633B4 (ja)
WO (1) WO2012090584A1 (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8766827B1 (en) * 2013-03-15 2014-07-01 Intel Corporation Parallel apparatus for high-speed, highly compressed LZ77 tokenization and Huffman encoding for deflate compression
CN103425739B (zh) * 2013-07-09 2016-09-14 国云科技股份有限公司 一种字符串匹配方法
US9537504B1 (en) * 2015-09-25 2017-01-03 Intel Corporation Heterogeneous compression architecture for optimized compression ratio
JP6480304B2 (ja) * 2015-11-06 2019-03-06 日本電信電話株式会社 信号探索方法、装置、及びプログラム
JP2019008845A (ja) * 2017-06-22 2019-01-17 ルネサスエレクトロニクス株式会社 半導体装置
WO2023210643A1 (ja) * 2022-04-26 2023-11-02 克己 井上 全文検索プロセッサ
JP7475078B2 (ja) 2022-04-26 2024-04-26 克己 井上 全文検索プロセッサ

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07114577A (ja) * 1993-07-16 1995-05-02 Internatl Business Mach Corp <Ibm> データ検索装置、データ圧縮装置及び方法
JPH08242176A (ja) * 1994-12-28 1996-09-17 Internatl Business Mach Corp <Ibm> データ圧縮用検索装置
JP2005175940A (ja) * 2003-12-11 2005-06-30 Matsushita Electric Ind Co Ltd データ圧縮装置
JP2010268146A (ja) * 2009-05-13 2010-11-25 Internatl Business Mach Corp <Ibm> データが記憶された位置を選択する装置及び方法

Family Cites Families (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2760790B2 (ja) * 1986-10-09 1998-06-04 株式会社日立製作所 データ処理装置
JPS63177242A (ja) 1987-01-19 1988-07-21 Hitachi Ltd 連想メモリのパリテイチエツク方法
JP2693338B2 (ja) 1992-03-04 1997-12-24 富士通株式会社 データ圧縮・復元処理における誤り制御処理方式
US5455576A (en) * 1992-12-23 1995-10-03 Hewlett Packard Corporation Apparatus and methods for Lempel Ziv data compression with improved management of multiple dictionaries in content addressable memory
US5602764A (en) * 1993-12-22 1997-02-11 Storage Technology Corporation Comparing prioritizing memory for string searching in a data compression system
US5798719A (en) * 1994-07-29 1998-08-25 Discovision Associates Parallel Huffman decoder
US5883588A (en) 1994-10-04 1999-03-16 Nec Corporation Data compression system and data compression device for improving data compression rate and coding speed
JP3117375B2 (ja) 1994-11-28 2000-12-11 インターナショナル・ビジネス・マシーンズ・コーポレ−ション 連想メモリの制御回路及び連想メモリ装置
US5729228A (en) * 1995-07-06 1998-03-17 International Business Machines Corp. Parallel compression and decompression using a cooperative dictionary
US5951623A (en) * 1996-08-06 1999-09-14 Reynar; Jeffrey C. Lempel- Ziv data compression technique utilizing a dictionary pre-filled with frequent letter combinations, words and/or phrases
US5798718A (en) 1997-05-12 1998-08-25 Lexmark International, Inc. Sliding window data compression method and apparatus
US6191710B1 (en) * 1998-12-30 2001-02-20 Intel Corp. Data compression and decompression method and system for data compression and decompression
GB2346470B (en) 1999-02-05 2003-10-29 Advanced Risc Mach Ltd Bitmap font data storage within data processing systems
US6505270B1 (en) * 1999-07-02 2003-01-07 Lara Technology, Inc. Content addressable memory having longest prefix matching function
GB0001707D0 (en) 2000-01-25 2000-03-15 Btg Int Ltd Data compression having more effective compression
US6615310B1 (en) * 2000-05-18 2003-09-02 International Business Machines Corporation Lossless data compressor with all CAM words available
ATE435492T1 (de) * 2000-11-21 2009-07-15 Aspex Technology Ltd Verbesserungen im bezug auf inhaltsadressierbare speicheranordnungen
WO2002082304A1 (en) * 2001-04-06 2002-10-17 Specht Donald F String search neuron for artificial neural networks
JP3913004B2 (ja) 2001-05-28 2007-05-09 キヤノン株式会社 データ圧縮方法及び装置及びコンピュータプログラム及び記憶媒体
US7050317B1 (en) * 2002-03-15 2006-05-23 Integrated Device Technology, Inc. Content addressable memory (CAM) devices that support power saving longest prefix match operations and methods of operating same
US6771525B2 (en) * 2002-05-31 2004-08-03 Mosaid Technologies Incorporated Method and apparatus for performing variable word width searches in a content addressable memory
US20040022312A1 (en) 2002-07-31 2004-02-05 Jones Simon R. Lossless data compression
US7487542B2 (en) * 2004-01-14 2009-02-03 International Business Machines Corporation Intrusion detection using a network processor and a parallel pattern detection engine
US7706242B2 (en) * 2004-02-25 2010-04-27 Ricoh Company, Ltd. Optical disk, signal generation method, clock signal generation method, and optical disk device
JP2005353238A (ja) * 2004-06-14 2005-12-22 Renesas Technology Corp 連想メモリ
US7937510B1 (en) * 2005-02-01 2011-05-03 Altera Corporation Lempel Ziv compression architecture
US7783654B1 (en) * 2006-09-19 2010-08-24 Netlogic Microsystems, Inc. Multiple string searching using content addressable memory
US7899977B2 (en) * 2006-12-08 2011-03-01 Pandya Ashish A Programmable intelligent search memory
US8532299B2 (en) * 2007-05-29 2013-09-10 Denso Wave Incorporated Method for producing two-dimensional code and reader for reading the two-dimensional code
CN102197435B (zh) 2008-10-28 2014-08-13 国际商业机器公司 并行联想存储器
JP5584895B2 (ja) * 2009-10-08 2014-09-10 ルネサスエレクトロニクス株式会社 半導体信号処理装置
JP5520390B2 (ja) 2010-12-28 2014-06-11 インターナショナル・ビジネス・マシーンズ・コーポレーション データ要素列を処理する装置及び方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07114577A (ja) * 1993-07-16 1995-05-02 Internatl Business Mach Corp <Ibm> データ検索装置、データ圧縮装置及び方法
JPH08242176A (ja) * 1994-12-28 1996-09-17 Internatl Business Mach Corp <Ibm> データ圧縮用検索装置
JP2005175940A (ja) * 2003-12-11 2005-06-30 Matsushita Electric Ind Co Ltd データ圧縮装置
JP2010268146A (ja) * 2009-05-13 2010-11-25 Internatl Business Mach Corp <Ibm> データが記憶された位置を選択する装置及び方法

Also Published As

Publication number Publication date
DE112011104633T5 (de) 2013-10-02
US20160372179A1 (en) 2016-12-22
CN103270699B (zh) 2016-08-10
CN103270699A (zh) 2013-08-28
DE112011104633B4 (de) 2016-11-10
US20130297649A1 (en) 2013-11-07
JPWO2012090584A1 (ja) 2014-06-05
WO2012090584A1 (ja) 2012-07-05
US9372887B2 (en) 2016-06-21
US11120867B2 (en) 2021-09-14

Similar Documents

Publication Publication Date Title
JP5520391B2 (ja) 検索開始点を決定する装置及び方法
KR101585037B1 (ko) 하이브리드 터너리 컨텐츠 어드레스가능 메모리
US9385748B2 (en) Parallel dictionary-based compression encoder
JP6062578B2 (ja) 3値連想メモリ(tcam)のための静的nandセル
KR101960101B1 (ko) 패턴 인식 프로세서들을 위한 다중 레벨 계층 라우팅 행렬들
US8677079B2 (en) Selecting a position where data is stored
KR100880867B1 (ko) 데이터 비트 인버전 플래그(dbi) 생성용 회로
JP5520390B2 (ja) データ要素列を処理する装置及び方法
JP2012514789A (ja) パターン認識プロセッサの電力消費管理のための方法およびシステム
WO2021139268A1 (zh) 敏感词检测方法、装置、计算机设备及存储介质
US10078646B2 (en) Hardware efficient fingerprinting
CN111143513A (zh) 一种敏感词识别方法、装置及电子设备
CN113539334A (zh) 用于物理不可克隆函数的测量机制
US10997139B2 (en) Search apparatus and search method
TWI807822B (zh) 三態內容可定址記憶體
US20240212780A1 (en) Digital verify failbit count (vfc) circuit
US20240212765A1 (en) Digital verify failbit count (vfc) circuit
US20240106459A1 (en) Compression device and compression method
US20240212766A1 (en) Digital verify failbit count (vfc) circuit
GB2501195A (en) Device and method for determining search starting point
Huang Multi-valued equal-weight codes for self-checking and matching

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140224

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20140318

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140404

R150 Certificate of patent or registration of utility model

Ref document number: 5520391

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150