JP4806054B2 - データが記憶された位置を選択する装置及び方法 - Google Patents

データが記憶された位置を選択する装置及び方法 Download PDF

Info

Publication number
JP4806054B2
JP4806054B2 JP2009116851A JP2009116851A JP4806054B2 JP 4806054 B2 JP4806054 B2 JP 4806054B2 JP 2009116851 A JP2009116851 A JP 2009116851A JP 2009116851 A JP2009116851 A JP 2009116851A JP 4806054 B2 JP4806054 B2 JP 4806054B2
Authority
JP
Japan
Prior art keywords
address
specific
data element
signal
data
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.)
Expired - Fee Related
Application number
JP2009116851A
Other languages
English (en)
Other versions
JP2010268146A (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 JP2009116851A priority Critical patent/JP4806054B2/ja
Priority to US12/775,113 priority patent/US8677079B2/en
Publication of JP2010268146A publication Critical patent/JP2010268146A/ja
Application granted granted Critical
Publication of JP4806054B2 publication Critical patent/JP4806054B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Read Only Memory (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明は、データが記憶された位置を選択する装置及び方法に関する。特に、本発明は、周期的にデータ要素が書き込まれるメモリ内の特定のデータ要素が記憶された複数の位置から特定の位置を選択する装置及び方法に関する。
deflate圧縮(RFC1951)は、現在コンピュータで広く用いられているデータ圧縮形式であるZLIB(RFC1950)、GZIP(RFC1952)のベースとなる圧縮方法であり、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号公報
ところで、ある文字列の繰り返し部分はその文字列に比較的近い位置に出現する確率が高い。そのため、deflate圧縮等の方法では、その文字列に近い位置にある繰り返し部分ほど短いビット長を割り当てることで圧縮率を高めている。
従って、データが周期的に(サイクリックに)書き込まれるメモリにおいて、ある文字列の繰り返し部分が複数の位置に記憶されていた場合、どの位置に記憶された繰り返し部分を選択すればよいかが問題となる。このような場合、特許文献1〜3のようにプライオリティエンコーダを用いて、つまり、メモリ上の位置に関する固定した優先順位で繰り返し部分を選択するのではなく、書込み順序を考慮してその文字列に近い位置にある繰り返し部分を選択できるようにすれば、圧縮率が向上する。つまり、一般的に言えば、データが複数の位置に記憶されている場合に、なるべくそのデータが最近に書き込まれた位置を選択できるようにすることが求められる。
本発明の目的は、データが記憶された複数の位置からそのデータが最近に書き込まれた位置を選択できる可能性を高めることにある。
かかる目的のもと、本発明は、周期的にデータ要素が書き込まれるメモリ内の特定のデータ要素が記憶された複数の位置から特定の位置を選択する装置であって、特定のデータ要素が記憶された複数の位置が、現在の周期においてデータ要素が書き込まれたメモリの特定の領域内の位置を含むかどうかを判定する判定部と、複数の位置が特定の領域内の位置を含むと判定部により判定された場合に、複数の位置のうちの特定の領域内の少なくとも1つの位置を特定の位置として選択し、複数の位置が特定の領域内の位置を含まないと判定部により判定された場合に、複数の位置のうちの少なくとも1つの位置を特定の位置として選択する選択部とを含む、装置を提供する。
ここで、この装置は、特定のデータ要素が記憶された複数の位置の各々を表す複数の信号を発生させる信号発生部を更に含み、選択部は、複数の位置が特定の領域内の位置を含むと判定部により判定された場合に、信号発生部が発生させた複数の信号のうち特定の領域以外の領域内の位置を表す信号をマスクすることによって得られた少なくとも1つの信号に基づいて、特定の領域内の少なくとも1つの位置を選択する、ものであってよい。その場合、この装置は、選択部による信号のマスクに用いられるマスクパターンを記憶する記憶部を更に含み、記憶部は、特定の領域が拡大した場合に、メモリの新たに特定の領域に含まれるようになった領域内の位置を表す信号をマスクしないように変更されたマスクパターンを記憶する、ものであってもよいし、選択部による信号のマスクに用いられるマスクパターンを記憶する記憶部と、特定の領域と特定の領域以外の領域との境界を表す信号に基づいて、マスクパターンを生成する生成部とを更に含む、ものであってもよい。
また、この装置は、特定のデータ要素が記憶された複数の位置の各々を表す複数の信号を発生させる信号発生部を更に含み、判定部は、信号発生部が発生させた複数の信号のうち特定の領域以外の領域内の位置を表す信号をマスクすることによって得られた少なくとも1つの信号に対してOR演算を行った結果に基づいて、特定のデータ要素が記憶された複数の位置が特定の領域内の位置を含むかどうかを判定する、ものであってよい。
また、本発明は、メモリのアドレス順に周期的にデータ要素が書き込まれるメモリ内の特定のデータ要素が記憶された複数のアドレスから特定のアドレスを選択する装置であって、特定のデータ要素が記憶された複数のアドレスの各々を表す複数の信号を発生させる信号発生部と、信号発生部が発生させた複数の信号の何れかが、1つの周期において現在のアドレスよりも先にデータ要素が書き込まれるアドレスを表すかどうかを判定する判定部と、複数の信号の何れかが現在のアドレスよりも先にデータ要素が書き込まれるアドレスを表すと判定部により判定された場合に、複数の信号のうち1つの周期において現在のアドレスよりも後にデータ要素が書き込まれるアドレスを表す信号をマスクすることによって得られた少なくとも1つの信号で構成される信号群を抽出し、複数の信号の何れもが現在のアドレスよりも先にデータ要素が書き込まれるアドレスを表さないと判定部により判定された場合に、複数の信号で構成される信号群を抽出する抽出部と、抽出部により抽出された信号群を構成する信号のうち、1つの周期において最後にデータ要素が書き込まれるアドレスを表す信号を、特定のアドレスを表す信号として出力する出力部とを含む、装置も提供する。
更に、本発明は、周期的にデータ要素が書き込まれるメモリに記憶された複数のデータ要素を参照して特定のデータ要素群を符号化する装置であって、特定のデータ要素群を構成するデータ要素ごとに、データ要素が記憶されたメモリ内の複数の位置を検出する検出部と、特定のデータ要素群を構成するデータ要素ごとに、検出部により検出された複数の位置が、現在の周期においてデータ要素が書き込まれたメモリの特定の領域内の位置を含むかどうかを判定する判定部と、特定のデータ要素群を構成するデータ要素ごとに、複数の位置が特定の領域内の位置を含むと判定部により判定された場合に、複数の位置のうちの特定の領域内の1つの位置を選択し、複数の位置が特定の領域内の位置を含まないと判定部により判定された場合に、複数の位置のうちの1つの位置を選択する選択部と、特定のデータ要素群を構成するデータ要素について選択部により1つの位置が連続して選択された場合に、特定のデータ要素群を構成する特定のデータ要素について選択部により選択された1つの位置と、選択部により1つの位置が連続して選択された回数とを用いて、特定のデータ要素群を符号化する符号化部とを含む、装置も提供する。
更にまた、本発明は、周期的にデータ要素が書き込まれるメモリ内の特定のデータ要素が記憶された複数の位置から特定の位置を選択する方法であって、特定のデータ要素が記憶された複数の位置が、現在の周期においてデータ要素が書き込まれたメモリの特定の領域内の位置を含むかどうかを判定するステップと、複数の位置が特定の領域内の位置を含むと判定された場合に、複数の位置のうちの特定の領域内の少なくとも1つの位置を特定の位置として選択し、複数の位置が特定の領域内の位置を含まないと判定された場合に、複数の位置のうちの少なくとも1つの位置を特定の位置として選択するステップとを含む、方法も提供する。
本発明によれば、データが記憶された複数の位置からそのデータが最近に書き込まれた位置を選択できる可能性を高まる。
本発明の第1の実施の形態が適用されるマイクロコンピュータの構成例を示した図である。 本発明の第1の実施の形態における文字列検索装置の構成例を示したブロック図である。 連想メモリセルの構成例を示した回路図である。 プリチャージコントローラの構成例を示した回路図である。 本発明の第1の実施の形態におけるコントローラの動作例を示したフローチャートである。 一箇所でヒットが起きる文字列検索の具体例を示した図である。 二箇所でヒットが起きる文字列検索の具体例を示した図である。 複数のヒットが起きた場合に選択すべきヒットについて説明するための図である。 本発明の第1の実施の形態におけるアドレス出力回路の第1の構成例を示した図である。 本発明の第1の実施の形態におけるアドレス出力回路の第2の構成例を示した図である。 本発明の第1の実施の形態における文字列検索装置の動作例を示したフローチャートである。 本発明の第2の実施の形態における文字列圧縮コントローラの構成例を示したブロック図である。 本発明の第2の実施の形態における文字列圧縮コントローラの動作例を示したフローチャートである。
以下、添付図面を参照して、本発明の実施の形態について詳細に説明する。
[第1の実施の形態]
図1は、本実施の形態が適用されるマイクロコンピュータ10の構成(一部)を示す。マイクロコンピュータ10は、CPU12、ROM14、RAM16を備えており、これらはアドレスバス、データバス、コントロールバス等からなるバス18を介して互いに接続されている。また、マイクロコンピュータ10は、本実施の形態における文字列検索装置20を備えており、この文字列検索装置20は、文字列検索装置20の作動を制御するコントローラ22を介してバス18に接続されている。
図2は、本実施の形態における文字列検索装置20を示した図である。
文字列検索装置20は、図に「○」で示す多数の連想メモリセル(単位セル)28がマトリクス状に配置されて構成された連想メモリセルアレイ26を備えている。連想メモリセルアレイ26には、M+1本のワード線WL0〜WLM、M+1本のマッチ線MATCH0〜MATCHM、N+1組のビット線対BL0,BL0'〜BLN,BLN'が各々マトリクス状に配置されており、各連想メモリセル28は、ワード線WL0〜WLMの何れか、マッチ線MATCH0〜MATCHMの何れか、及び、ビット線対BL0,BL0'〜BLN,BLN'の何れかに各々接続されている。
多数の連想メモリセル28は、各々同一の構成を有している。図3に示すように、連想メモリセル28は、互いの入力端と出力端とが接続された2個のNOT回路30、32を備えている。このNOT回路30、32のループが、1ビットのデータを記憶する記憶回路(SRAM型)を構成する。NOT回路30の出力端はNチャンネル型のMOSFET34のソースに、NOT回路32の出力端は同じくNチャンネル型のMOSFET36のソースに各々接続されており、MOSFET34、36のゲートは各々ワード線WLに接続されている。また、MOSFET34、36のドレインは各々ビット線BL,BL'に接続されている。
ここで、連想メモリセル28に1ビットのデータを書き込む場合(後述する「書込み」モード)には、ワード線WLはハイレベルとされ、ビット線BLは書き込むデータDに対応したレベル(Dが「1」の場合はハイレベル、「0」の場合はローレベル)とされ、ビット線BL'はビット線BLのレベルに対して反転したレベル(ビット線BLがハイレベルの場合はローレベル、ビット線BLがローレベルの場合はハイレベル)とされる。これにより、MOSFET34、36がオンし、ビット線対BL又はBL'を介して供給されたデータがNOT回路30、32のループに保持される。尚、連想メモリセル28に記憶されたデータを読み取ることも可能となっている(後述する「読取り」モード)。
また、NOT回路30の出力端はMOSFET38のゲートに、NOT回路32の出力端はMOSFET40のゲートに各々接続されている。尚、NOT回路32からはデータDを反転したデータ(Q’)が出力され、NOT回路30からはデータQ’を反転したデータQ(=D)が出力される。MOSFET38、40のドレインは各々ビット線BL',BLに接続されており、ソースはMOSFET42のゲートに接続されている。MOSFET42のドレインはマッチ線MATCHに接続され、ソースは接地されている。
尚、本実施の形態において、同一のワード線及びマッチ線に接続される連想メモリセル28の数は、被検索文字列を構成する1文字を表すビット数(例えばアスキーコード、ISOコード等の場合は8ビット)と一致しており、同一のワード線及びマッチ線に接続される複数の連想メモリセル28(以下、これらを「連想メモリセル列」という)に1文字分の文字データが記憶される。また、連想メモリセルアレイ26では、連想メモリセル列毎にアドレスが付与されている。
ここで、文字データは、データ要素の一例である。また、連想メモリセルアレイ26は、データ要素が記憶された複数の位置の各々を表す複数の信号を発生させる信号発生部、及び、データ要素が記憶されたメモリ内の複数の位置を検出する検出部の一例である。
再び図2を参照すると、文字列検索装置20はタイミングコントローラ50を備えている。また、文字列検索装置20には動作モードとして、連想メモリセルアレイ26に記憶されたデータを読み取る「読取り」モード、連想メモリセルアレイ26にデータを書き込む「書込み」モード、連想メモリセルアレイ26に記憶されたデータに対して検索を行なう「検索」モードが設けられている。タイミングコントローラ50はコントローラ22に接続されており、これらの動作モードは、コントローラ22からタイミングコントローラ50に各々入力される読取り指示READ、書込み指示WRITE、検索指示SEARCHに応じて切り替わる。
また、タイミングコントローラ50にはコントローラ22からシステムクロックCLOCKが入力され、システムクロックCLOCKと同期した4つのクロック(クロックRD、クロックWT-SR、クロックRD-WT、クロックSR)を、3つの動作モードに応じて生成し出力する。
クロックRD-WTは、「読取り」及び「書込み」時にタイミングコントローラ50に接続されたアドレスデコーダ52に出力され、アドレスデコーダ52を作動させる。アドレスデコーダ52はコントローラ22に接続されており、コントローラ22からデータの読取り又は書込みを行なう連想メモリセル列のアドレスが指定される。アドレスデコーダ52にはワード線WL0〜WLMが接続されており、指定されたアドレスに対応する連想メモリセル列のワード線をハイレベルとする。
タイミングコントローラ50にはセンスアンプ54及び書込みバッファ56が接続されており、クロックRDは「読取り」時にセンスアンプ54に出力されてセンスアンプ54を作動させ、クロックWT-SRは「書込み」及び「検索」時に書込みバッファ56に出力されて書込みバッファ56を作動させる。ビット線対BL0,BL0'〜BLN,BLN'はセンスアンプ54及び書込みバッファ56に各々接続されている。また、センスアンプ54及び書込みバッファ56はコントローラ22に接続されている。
センスアンプ54は「読取り」時に、連想メモリセル列の各々の連想メモリセル28に記憶されたデータに応じて変化されたビット線対BL0,BL0'〜BLN,BLN'のレベル(これが読取りデータを表す)を増幅してコントローラ22に出力する。書込みバッファ56は「書込み」及び「検索」時に、コントローラ22から入力されてバッファに記憶されたデータに応じてビット線対BL0,BL0'〜BLN,BLN'のレベルを変化させる(ビット線対を駆動する)。尚、「検索」時には、前述のようにアドレスデコーダ52が作動されずワード線WL0〜WLMは何れもローレベルとされているので、検索データに応じて変化されたビット線対のレベルが連想メモリセル28に取り込まれる、即ち連想メモリセル28に検索データが書き込まれることはない。
また、タイミングコントローラ50にはM+1個のプリチャージコントローラ58〜58が各々接続されており、クロックSRは「検索」動作時にプリチャージコントローラ58〜58に出力され、プリチャージコントローラ58〜58を各々作動させる。プリチャージコントローラ58は端子66を介してコントローラ22に接続されると共にマッチ線MATCH0に接続されており、プリチャージコントローラ58はマッチ線MATCH0及びマッチ線MATCH1に接続されている。プリチャージコントローラ58以降はプリチャージコントローラ58と同様に隣接する2本のマッチ線に接続されている。また、プリチャージコントローラ58はマッチ線MATCHMを介してコントローラ22に接続されている。
プリチャージコントローラ58〜58は同一の構成を有している。図4に示すように、プリチャージコントローラ58はNOR回路70を備えており、NOR回路70の一方の入力端は前段側のマッチ線(例えばプリチャージコントローラ58の場合はマッチ線MATCH0)に接続されている。但し、プリチャージコントローラ58は端子66を介してコントローラ22に接続されており、コントローラ22から入力信号CONTROL-INとして常にローレベルの信号が入力される。また、他方の入力端はコントローラ22に接続されており、通常はローレベルでマッチ線MATCH0〜MATCHMを全てハイレベルにチャージ(プリチャージ)するときにハイレベルとされる信号SET(図2参照)が、コントローラ22からプリチャージコントローラ58〜58の各々に入力される。NOR回路70の出力端はPチャンネル型のMOSFET72のソースに接続されている。MOSFET72のゲートはタイミングコントローラ50に接続されており(図4では図示省略)、「検索」時にはクロックSRが入力される。
また、MOSFET72のドレインにはNOT回路74の入力端及びNOT回路76の出力端が接続されており、このNOT回路74の出力端及びNOT回路76の入力端はNチャンネル型のMOSFET78のドレインに各々接続されている。従って、NOT回路74、76によって記憶回路が構成される。MOSFET78のゲートはタイミングコントローラ50に接続されており、「検索」時にクロックSRが入力される。MOSFET78のソースはNAND回路80の一方の入力端に接続されており、NAND回路80の他方の入力端はタイミングコントローラ50に接続されている。
NAND回路80の出力端はPチャンネル型のMOSFET82のゲートに接続されている。MOSFET82のソースは図示しない電源に接続されており、ドレインは次段側のマッチ線(例えばプリチャージコントローラ58の場合はマッチ線MATCH1)に接続されている。また、タイミングコントローラ50はPチャンネル型のMOSFET84のゲートにも接続されている。MOSFET84のソースは図示しない電源に、ドレインはNOT回路86の入力端に各々接続されている。NOT回路86の入力端はMOSFET78のソースにも接続されている。NOT回路86の出力端はNチャンネル型のMOSFET88のゲートに接続されており、MOSFET88のソースは接地されており、ドレインは前述の次段側のマッチ線に接続されている。
一方、再び図2を参照すると、マッチ線MATCH0〜MATCHMは、各々アドレス出力回路60に接続されている。後述するように、「検索」モードにおいて比較動作を1回行なった後にマッチ線がハイレベルとなっている連想メモリセル列は、記憶しているデータと供給されたデータとが一致した連想メモリセル列である。アドレス出力回路60は、コントローラ22に接続されており、「検索」動作を行なってマッチ線がハイレベルとなっている連想メモリセル列のアドレスMATCH-ADDRESSをコントローラ22に出力する。但し、複数本のマッチ線がハイレベルとなっていた場合には、後述する選択処理によって決定された連想メモリセル列のアドレスをアドレスMATCH-ADDRESSとして出力する。
また、マッチ線MATCH0〜MATCHMは、OR回路62の入力端にも各々接続されている。OR回路62の出力端はコントローラ22に接続されており、OR回路62は、マッチ線MATCH0〜MATCHMの少なくとも1つがハイレベルであるか否かを表す信号、即ち検索データが連想メモリセルアレイ26に記憶されているデータと一致したか否かを表す信号ENTIRE-MATCHをコントローラ22に出力する。
次に、本実施の形態における文字列検索装置20の動作について説明する。
図5は、「検索」モードにおける検索処理の一例として文字列の検索処理を行う際の文字列検索装置20の動作例を示したフローチャートである。尚、このフローチャートは、CPU12からの指示によりコントローラ22が実行する処理の流れを示したものである。また、このとき、連想メモリセルアレイ26の各連想メモリセル28には、既に被検索データとしての文字列データが記憶されているものとする。
検索処理が開始すると、コントローラ22は、まず、RAM16等に記憶されている検索文字列を表す文字列データを取り込む(ステップ200)。次に、取り込んだ検索文字列データの先頭から1文字分の文字データを取り出す(ステップ202)。そして、プリチャージコントローラ58〜58に出力する信号SETを一旦アクティブ(ハイレベル)とする(ステップ204)。
プリチャージコントローラ58〜58のNOR回路70に各々入力される信号SETが一旦ハイレベルとなると、NOR回路70から出力される信号がローレベルとなる。MOSFET72はPチャンネル型であるのでクロックSRがローレベルの間はオンしており、NOR回路70から出力された信号はNOT回路74に入力され、NOT回路74、76のループに保持される。
また、コントローラ22は、検索文字列データから取り出した文字データを書込みバッファ56へ出力すると共に、信号SETを一旦ハイレベルとするのに同期して、タイミングコントローラ50に検索指示SEARCHを出力する(ステップ206)。これにより、タイミングコントローラ50からは書込みバッファ56にクロックWT-SRが出力されると共に、プリチャージコントローラ58〜58にクロックSRが出力されることになる。これにより、プリチャージコントローラ58ではマッチ線MATCHのプリチャージが行われる。
即ち、クロックSRがプリチャージコントローラ58に入力されると、クロックSRがハイレベルのときにはMOSFET72がオフすると共にMOSFET78がオンする。これにより、前述のようにNOT回路74からハイレベルの信号が出力され、NAND回路80の一方の入力端に入力される。NAND回路80の他方の入力端にもハイレベルの信号が入力されるので、NAND回路80から出力される信号がローレベルとなり、MOSFET82がオンしてマッチ線MATCHが図示しない電源に接続される。このとき、MOSFET88はオフしているのでマッチ線MATCHはハイレベルとなる。
更に、クロックSRがローレベルになると、NAND回路80の一方の入力端がローレベルになるのでNAND回路80から出力される信号がハイレベルとなり、MOSFET82がオフする。また、MOSFET78がオフすると共にMOSFET84がオンするので、NOT回路86に図示しない電源からハイレベルの信号が供給され、MOSFET88はオフ状態で維持される。従って、マッチ線MATCHはハイレベルの状態でプリチャージコントローラ58から電気的に切り離されることになる。上記の動作がプリチャージコントローラ58〜58で各々行われることにより、マッチ線MATCH0〜MATCHMがハイレベルにチャージされた状態(プリチャージされた状態)となる。
一方、書込みバッファ56は、クロックWT-SRが入力されると、入力された文字データに応じてビット線対BL0,BL0'〜BLN,BLN'を駆動する。連想メモリセルアレイ26の各連想メモリセル28では、NOT回路30から出力されるデータQが「1」(ハイレベル)であればMOSFET38がオンしており、NOT回路32から出力されるデータQ’が「1」であればMOSFET40がオンしている。従って、NOT回路30、32のループに保持されているデータQ(Q’)とビット線対BL,BL'を介して供給されるデータD(D')とが一致している場合にはMOSFET42はオンしない。これに対し、不一致の場合にはMOSFET38、40のうちオンしている方のMOSFETのドレインからソースに電流が流れ、MOSFET42がオンし、プリチャージされたマッチ線MATCHのレベルはローレベルに低下される(ディスチャージ)。
上記のデータの比較は、クロックSRがローレベルとなっている間に連想メモリセル28の各々で同時に行われる。従って、クロックSRの1周期の間にプリチャージ及びデータの比較が行われることになる。ところで、1本のマッチ線MATCHには複数の連想メモリセル28(連想メモリセル列)が接続されているので、クロックSRの1周期の間に、連想メモリセル列に記憶されている文字データと入力された文字データとを比較する比較動作が完了する。そして、各マッチ線は、接続されている全ての連想メモリセル28でMOSFET42がオンしなかった場合、即ち連想メモリセル列に記憶されている文字データと書込みバッファ56に入力された文字データとが一致していた場合にのみハイレベルの状態で維持され、不一致であった場合にはローレベルとされることになる。
従って、書込みバッファ56に入力された文字データが連想メモリセル列の少なくとも何れか1つに記憶されていた場合には、OR回路62を介して出力される信号ENTIRE-MATCHがハイレベルとなる。また、連想メモリセル列で比較動作が行なわれている間、クロックSRはローレベルとなっており、プリチャージコントローラ58ではMOSFET72がオンするので、各連想メモリセル列の比較結果に応じて変化される各マッチ線MATCHのレベルは、次段のプリチャージコントローラ58のNOT回路74、76に伝達されて保持されることになる(例えばマッチ線MATCH0のレベルはプリチャージコントローラ58に伝達される)。
上記により、次にクロックSRがハイレベルになるとMOSFET78がオンし、プリチャージの場合と同様に、NOT回路74から出力される信号がハイレベルであれば、MOSFET82がオンしてマッチ線MATCHがハイレベルにチャージされる。また、NOT回路74から出力される信号がローレベルの場合には、NOT回路86から出力される信号がハイレベルとなるので、MOSFET88がオンし、マッチ線MATCHはローレベルとされる。このようにして、前段のマッチ線がハイレベルであれば次段のマッチ線がハイレベルとされ、前段のマッチ線がローレベルであれば次段のマッチ線がローレベルとされることになる。尚、マッチ線MATCH0については、コントローラ22からプリチャージコントローラ58に入力される入力信号CONTROL-INにより、1回比較動作を行なった後は必ずローレベルとされる。
一方、コントローラ22は、OR回路62から出力された信号ENTIRE-MATCHがハイレベルか否か判定する(ステップ210)。信号ENTIRE-MATCHがハイレベルの場合には、アドレス出力回路60から出力されたアドレスMATCH-ADDRESSを取り込んで記憶する(ステップ212)。そして、検索が終了したか否か、即ち、検索文字列を構成する全ての文字の文字データを書込みバッファ56へ出力したか否か判定する(ステップ214)。書込みバッファ56へ出力していない文字データがある場合には、検索文字列データから取り出す文字データを1文字分シフトして取り出し、書込みバッファ56へ出力する(ステップ216)。これにより、上記でハイレベルとされたマッチ線に接続されている連想メモリセル列において書込みバッファ56に出力した文字データに対して比較が行われる。
書込みバッファ56へ文字データを出力するとステップ210へ戻り、コントローラ22は、信号ENTIRE-MATCHがハイレベルの間、書込みバッファ56へ出力していない文字データがなくなるまでステップ210〜216の処理を繰り返し、ステップ212が実行される毎に記憶しているアドレス(MATCH-ADDRESS)が更新される。
一方、ステップ214で書込みバッファ56へ出力していない文字データがなくなった場合、コントローラ22は、記憶しているアドレスMATCH-ADDRESSをCPU12に送信して処理を終了する(ステップ218)。また、ステップ210〜216の処理を繰り返している途中で信号ENTIRE-MATCHがローレベルとなった場合には、検索文字列が連想メモリセルアレイ26に記憶されていないと判断できる。このため、コントローラ22は、CPU12に検索が失敗した旨を通知し(ステップ220)、別の検索文字列があるか否か判定する(ステップ222)。
ステップ222で別の検索文字列があると判定された場合にはステップ200へ戻り、コントローラ22は、上記処理を繰り返す。また、ステップ222で別の検索文字列がないと判定された場合、コントローラ22は検索処理を終了する。
尚、図5のフローチャートに示した検索処理は単なる一例であり、例えば検索文字列に最も長く一致する文字列を記憶している連想メモリセル列群のアドレスを求めることも可能である。また、連想メモリセル28は図3に示すSRAM型の構成に限定されるものではなく、図7に示すようなDRAM型とすることもできる。
このように、本実施の形態における文字列検索装置20は、書込みバッファ56に1文字入力される毎に、入力された文字を全ての連想メモリセル列に格納された文字と同時に比較することができるため、高速に検索することが可能である。しかも、1クロックで1文字と一致する部分を検索することが可能であり、極めて高速に検索できるようになっている。
図6は、この文字列検索装置20による文字列検索動作を具体的に示したものである。
まず、太矢印の左側に示すように、連想メモリセルアレイ26に「IBM is」までの文字列が順次格納されたとする。尚、図において、連想メモリセルアレイ26の左側に記載した数字は、各連想メモリセル列のアドレスを示しており、ワード線WLM(マッチ線MATCHM)のMの値に対応する。
この状態で、文字列検索装置20は、続く文字列「IBM.」が書込みバッファ56に1文字ずつ入力されると、連想メモリセルアレイ26に格納された文字列と順次比較を行う。即ち、1文字目の「I」が書込みバッファ56に入力されると、アドレス0の文字データがこれと一致するので、マッチ線MATCH0をハイレベルの状態で維持する。また、2文字目の「B」が書込みバッファ56に入力されると、アドレス1の文字データがこれと一致するので、マッチ線MATCH1をハイレベルの状態で維持する。更に、3文字目の「M」が書込みバッファ56に入力されると、アドレス2の文字データがこれと一致するので、マッチ線MATCH2をハイレベルの状態で維持する。その後、最後の文字「.」(ピリオド)が入力されると、アドレス3の文字データはこれと不一致となるので、マッチ線MATCH3をローレベルとする。
文字列検索装置20では、連続した文字列「IBM」をこのような方法で検出し、太矢印の右側に示すように、最初にヒットしたアドレス(以下、「ヒットアドレス」という)及び一致した文字長(この場合はヒットアドレス0及び文字長3)を出力する。
また、例えば、「IBMisIBMareIBM」のように「IBM」を複数含む文字列の場合は、ヒットが同時に複数の位置で起きることになる。そのような場合、単純にメモリアドレスの大きい(或いは小さい)方をプライオリティエンコーダによって固定的に選択したのでは、つまり、優先順位を固定したのでは、新しく入力される文字を書き込むアドレス(書込みアドレス)に近いヒットアドレスを選択することができない可能性がある。
図7は、このような場合の連想メモリセルアレイ26を用いた文字列検索動作を示したものである。ここでは、「IBMisIBMareIBM」という文字列を例にとる。
まず、(a)の太矢印の左側に示すように、連想メモリセルアレイ26に「IBMisIBMare」までの文字列が順次格納されたとする。尚、この図においても、連想メモリセルアレイ26の左側に記載した数字は、各連想メモリセル列のアドレスを示しており、ワード線WLM(マッチ線MATCHM)のMの値に対応する。また、図の「書込みアドレス」は、図2のアドレスデコーダ52に入力される信号R/W-ADDRESSに相当し、新しく入力されたデータが格納される連想メモリセル列のアドレスである。この書込みアドレスは、データが書き込まれるたびに1ずつ増加していき、一番大きいアドレスに達するとアドレス0に戻り、データの書き込みが継続される。つまり、連想メモリセルアレイ26はリングバッファとなっている。このように、過去のバッファの容量分のデータが連想メモリセルアレイ26には常に存在する。そして、新たに書き込む文字列との一致は、この過去のデータを対象に判定される。(a)の場合、文字列はアドレス0から格納されており、アドレス11が続きの文字が格納される連想メモリセル列を指し示す書込みアドレスとなっている。
この状態で、文字列検索装置20は、続く文字列「IBM」が書込みバッファ56に1文字ずつ入力されると、連想メモリセルアレイ26に格納された文字列と順次比較を行う。即ち、1文字目の「I」が書込みバッファ56に入力されると、アドレス0及び5の文字データがこれと一致するので、マッチ線MATCH0及びMATCH5をハイレベルの状態で維持する。また、2文字目の「B」が書込みバッファ56に入力されると、アドレス1及び6の文字データがこれと一致するので、マッチ線MATCH1及びMATCH6をハイレベルの状態で維持する。更に、3文字目の「M」が書込みバッファ56に入力されると、アドレス2及び7の文字データがこれと一致するので、マッチ線MATCH2及びMATCH7をハイレベルの状態で維持する。
これで検索対象文字列は終了するが、連想メモリセルアレイ26内に「IBM」の文字列は2つ存在するので、ここでは2箇所でヒットが起きている。
(a)のようにアドレス0から文字列が格納された場合であれば、ヒットした2箇所のうち、固定的な優先順位に従って、アドレスの大きい方を選択すれば、書込みアドレスに近いヒットアドレスであるアドレス5を選択することができる。
ところが、上述したように、連想メモリセルアレイ26はリングバッファとして繰り返し(周期的に)使用されるため、ある時点において、(b)の太矢印の左側に示すように、例えばアドレス10から「IBMisIBMare」までの文字列が格納されていることも考えられる。尚、この場合は、アドレス7が書込みアドレスである。
この状態で、文字列検索装置20は、続く文字列「IBM」が書込みバッファ56に1文字ずつ入力されると、連想メモリセルアレイ26に格納された文字列と順次比較を行う。即ち、1文字目の「I」が書込みバッファ56に入力されると、アドレス1及び10の文字データがこれと一致するので、マッチ線MATCH1及びMATCH10をハイレベルの状態で維持する。また、2文字目の「B」が書込みバッファ56に入力されると、アドレス2及び11の文字データがこれと一致するので、マッチ線MATCH2及びMATCH11をハイレベルの状態で維持する。更に、3文字目の「M」が書込みバッファ56に入力されると、アドレス3及び12の文字データがこれと一致するので、マッチ線MATCH3及びMATCH12をハイレベルの状態で維持する。
これで検索対象文字列は終了するが、連想メモリセルアレイ26内に「IBM」の文字列は2つ存在するので、ここでも2箇所でヒットが起きている。
この場合、ヒットした2箇所のうち、固定的な優先順位に従って、アドレスの大きい方を選択すれば、書込みアドレスに近いヒットアドレスであるアドレス1を選択することができず、書込みアドレスから遠いヒットアドレスであるアドレス10を選択することになってしまう。deflate圧縮等の方法では、ある文字列の繰り返し部分のうち最も近い位置にある繰り返し部分を選択し、近い位置にある繰り返し部分ほど短いビット長の符号を割り当てることで圧縮率を高めているので、(b)のような場合は、圧縮率が低下してしまう。
そこで、本実施の形態では、連想メモリセルアレイ26のどこから文字列が格納されている場合であっても、書込みアドレスからみて書込み順序が最も近いヒットアドレスを選択できるようにした。
複数の位置にある文字列がヒットしたとすると、何れかの文字列を選択しなければならない。deflate圧縮では、書込みアドレスから一致した文字列までの文字数と、一致した文字列に含まれる文字数とを符号化して、圧縮を行う。その場合、書込みアドレスからの文字数が少ないほど割り当てるビット長は短くなるため、複数の位置でヒットした場合に、書込みアドレスから一番近いヒットアドレスを選択することにより、圧縮率を高めることが可能となる(ある文字列の繰り返し部分はその文字列の近くに存在する確率が高いため、このような圧縮方法が採用されている)。deflate圧縮の場合、一番近いヒットアドレスに割り当てるビット長は5ビットですむが、一番遠いヒットアドレスに割り当てるビット長は18ビットとなってしまい、後者は前者の3.6倍となる。従って、最適なものを選択できれば、圧縮率の向上を図ることが可能となる。
図8は、書込みアドレスと複数のヒットアドレスとの位置関係ごとに、最適なヒットアドレスの選択について示したものである。尚、この図でも、連想メモリセルアレイ26の上から下へ向けて昇順にアドレスが割り振られているものとする。
(a)に示したケース1は、書込みアドレスより小さいアドレスに複数のヒットがあった場合である。この場合は、アドレスが最大のヒットアドレスが最適値、即ち、書込みアドレスに最も近いヒットアドレスとなる。
(b)に示したケース2は、書込みアドレスより大きいアドレスに複数のヒットがあった場合である。この場合も、アドレスが最大のヒットアドレスが最適値、即ち、書込みアドレスに最も近いヒットアドレスとなる。
(c)に示したケース3は、書込みアドレスより小さいアドレスに1つ、大きいアドレスに1つのヒットがあった場合である。この場合は、アドレスが小さいヒットアドレスが最適値、即ち、書込みアドレスに最も近いヒットアドレスとなる。
(d)に示したケース4は、書込みアドレスより小さいアドレスに2つ、大きいアドレスに1つのヒットがあった場合である。この場合は、中央にあるヒットアドレスが最適値、即ち、書込みアドレスに最も近いヒットアドレスとなる。
こうしてみると、最適なヒットアドレスを選択することは一見難しそうである。
そこで、書込みアドレスを境界線として、連想メモリセルアレイ26を書込みアドレスより小さいアドレスの領域(以下、「ローアドレス領域」という)と書込みアドレスより大きいアドレスの領域(以下、「ハイアドレス領域」という)の2つの領域に分けて考える。
(1)ローアドレス領域内にヒットアドレスが存在している場合は、ハイアドレス領域内のヒットアドレスは無視した上で、アドレスが最大のヒットアドレスを選択する。
(2)ローアドレス領域内にヒットアドレスが存在していない場合は、単純にアドレスが最大のヒットアドレスを選択する。
以上のような法則を用いることにより、書込みアドレスからみて書込み順序が最も近いヒットアドレスを選択することが可能となる。
この方法をハードウェアで実現するためには、ローアドレス領域とハイアドレス領域とを分けるためのマスクパターンを用いることが考えられる。
図9は、図2の文字列検索装置20におけるアドレス出力回路60の構成例を示した図である。但し、アドレス出力回路60以外の構成も一部示している。
この例では、マスクパターンを、ラッチ(フリップフロップ)90〜90で構成し、ラッチ90〜90のそれぞれが1ビットを保持している。また、マスクパターンは、書込みアドレスが1増加するとラッチ90〜90の全体がシフトするようになっている。
以下、マスクパターンの生成方法を述べる。
(1)リセット時には、マスクパターンを構成するラッチ90〜90をクリアして「0」とする。
(2)データが連想メモリセル列に書き込まれ、書込みアドレスが1増加するたびにマスクパターン全体を1ビットシフトさせる。
(3)書込みアドレスが最大値に達し、アドレス0にラップしたときには、マスクパターンを構成するラッチ90〜90をクリアして「0」とする。
このようなマスクパターンを発生させた後、ローアドレス領域でヒットがあったかどうかをデコードする。即ち、AND回路92〜92が、マッチ線MATCH0〜MATCHMの各々とラッチ90〜90の各々とのANDを取り、OR回路94が、AND回路92〜92から出力された信号のORを取る。これにより、OR回路94から出力される信号LOW-ADDRESS-HITがハイレベルであれば、ローアドレス領域でヒットがあったことが分かり、ローレベルであれば、ローアドレス領域でヒットがなかったことが分かる。
そして、ローアドレス領域でヒットがあった場合には、ハイアドレス領域でのヒットをマスクして、プライオリティエンコーダ102に伝える。
即ち、ローアドレス領域でヒットがあった場合には、OR回路94からのハイレベルの信号LOW-ADDRESS-HITがNAND回路98の一方の入力端に入力される。
ここで、ローアドレス領域については、ラッチ90に「1」が保持されているので(図ではラッチ90〜90)、NOT回路96からローレベルの信号がNAND回路98の他方の入力端に入力される。従って、NAND回路98からはハイレベルの信号がAND回路100の一方の入力端に入力される。これにより、AND回路100からは、マッチ線MATCHのレベルがそのままプライオリティエンコーダ102に入力される。
一方、ハイアドレス領域については、ラッチ90に「0」が保持されているので(図ではラッチ90〜90)、NOT回路96からハイレベルの信号がNAND回路98の他方の入力端に入力される。従って、NAND回路98からはローレベルの信号がAND回路100の一方の入力端に入力される。これにより、AND回路100からは、マッチ線MATCHのレベルに関わらず、ローレベルの信号がプライオリティエンコーダ102に入力される。
その後、プライオリティエンコーダ102は、マッチ線MATCHがハイレベルになったアドレスのうち、最大のアドレスを選択する。
また、ローアドレス領域でヒットがなかった場合には、全領域でのヒットをそのままプライオリティエンコーダ102に伝える。
即ち、ローアドレス領域でヒットがなかった場合には、OR回路94からのローレベルの信号LOW-ADDRESS-HITがNAND回路98の一方の入力端に入力される。
ここで、ローアドレス領域については、ラッチ90に「1」が保持されているので(図ではラッチ90〜90)、NOT回路96からローレベルの信号がNAND回路98の他方の入力端に入力される。従って、NAND回路98からはハイレベルの信号がAND回路100の一方の入力端に入力される。これにより、AND回路100からは、マッチ線MATCHのレベルがそのままプライオリティエンコーダ102に入力される。
一方、ハイアドレス領域については、ラッチ90に「0」が保持されているので(図ではラッチ90〜90)、NOT回路96からハイレベルの信号がNAND回路98の他方の入力端に入力される。従って、NAND回路98からはハイレベルの信号がAND回路100の一方の入力端に入力される。これにより、AND回路100からは、マッチ線MATCHのレベルがそのままプライオリティエンコーダ102に入力される。
その後、プライオリティエンコーダ102は、マッチ線MATCHがハイレベルになったアドレスのうち、最大のアドレスを選択する。
また、マスクパターンをラッチで構成せず、書込みアドレスをデコードすることで生成することも可能である。
図10は、この場合のアドレス出力回路60の構成例を示した図である。但し、アドレス出力回路60以外の構成も一部示している。
この例では、図示するように、アドレスデコーダ52が書込みアドレスに対応して1対1でマスクパターンを生成している。例えば、信号R/W-ADDRESSがアドレス0を示していれば、マスクパターン「1000…00」を生成し、信号R/W-ADDRESSがアドレス1を示していれば、マスクパターン「1100…00」を生成する。このような回路では、マスクパターンのリセット等を行う必要なく、単純である。どちらが好ましいかは、ゲートサイズ、ゲート遅延等を考慮の上で決めればよい。
尚、図9及び図10において、ローアドレス領域は、現在の周期においてデータ要素が書き込まれたメモリの特定の領域の一例であり、ラッチ90とAND回路92とOR回路94とからなる回路は、複数の位置が特定の領域内の位置を含むかどうかを判定する判定部の一例である。また、ラッチ90とNOT回路96とNAND回路98とAND回路100とからなる回路は、複数の位置のうちの特定の領域内の少なくとも1つの位置又は複数の位置のうちの少なくとも1つの位置を選択する選択部の一例であり、複数の信号のうちの少なくとも1つの信号で構成される信号群又は複数の信号で構成される信号群を抽出する抽出部の一例でもある。更に、プライオリティエンコーダ102は、最後にデータ要素が書き込まれるアドレスを表す信号を出力する出力部の一例であり、ラッチ90は、信号のマスクに用いられるマスクパターンを記憶する記憶部の一例であり、アドレスデコーダ52は、マスクパターンを生成する生成部の一例である。
ここで、このようなアドレス出力回路60の動作について説明する。
図11は、アドレス出力回路60の動作例を示したフローチャートである。
アドレス出力回路60は、まず、書込みアドレスのカウントアップを検出する(ステップ901)。
次に、アドレス出力回路60は、マスクパターンを生成する(ステップ902)。尚、ここでのマスクパターンの生成方法としては、図9のようにラッチ90の全体をシフトさせることで生成する方法や、図10のようにアドレスデコーダ52が信号R/W-ADDRESSに基づいて生成する方法が考えられる。
そして、アドレス出力回路60は、ローアドレス領域でヒットがあったかどうかを判定する(ステップ903)。これは、図9及び図10を参照して述べたように、OR回路94においてAND回路92〜92からの信号のORを取ることで判定することができる。
その結果、ローアドレス領域でヒットがあったと判定された場合、ローアドレス領域ではマッチ線MATCHのレベルがそのままプライオリティエンコーダ102に入力され、ハイアドレス領域ではマッチ線MATCHのレベルに関わらずローレベルの信号がプライオリティエンコーダ102に入力される(ステップ904)。
一方、ローアドレス領域でヒットがなかったと判定された場合、ローアドレス領域、ハイアドレス領域共にマッチ線MATCHのレベルがそのままプライオリティエンコーダ102に入力される(ステップ905)。
その後、プライオリティエンコーダ102では、入力されたハイレベルになっているマッチ線MATCHのうち、最大のものをMATCH-ADDRESSとして出力する(ステップ906)。
尚、本実施の形態において、連想メモリセルアレイ26は、上から下へアドレス順にデータが書き込まれるものとしたが、これには限らない。例えば、アドレス順にデータを書き込まないが、1つの周期が終わると全てのアドレスにデータが書き込まれているような書込み順序を採用してもよい。
[第2の実施の形態]
次に、本発明の第2の実施の形態を説明する。尚、第1の実施の形態と同一の部分には同一の符号を付し、説明を省略する。本実施の形態では、第1の実施の形態のコントローラ22に代えて、文字列圧縮コントローラ120が設けられている。
図12は、文字列圧縮コントローラ120を示した図である。
文字列圧縮コントローラ120には、システムクロックCLOCK、圧縮処理を行なう際にローレベルとなる信号ENABLE'、及び、被圧縮文字列データ(元データ)TEXT-INPUTが入力される。文字列圧縮コントローラ120に入力された信号ENABLE'は、データ入力コントローラ136、データ出力コントローラ138、及び、初期設定回路140に各々供給され、圧縮処理を行なう際に各回路を作動させる。また、文字列圧縮コントローラ120に入力された被圧縮文字列データTEXT-INPUTは、データ入力コントローラ136に供給される。
ここで、被圧縮文字列データは、データ要素群の一例であり、文字列圧縮コントローラ120は、データ要素群を符号化する符号化部の一例である。
データ入力コントローラ136は、文字列検索装置20及びデータ出力コントローラ138に接続されている。データ入力コントローラ136は、供給された被圧縮文字列データの先頭から1文字分の文字データを取り出して書込みバッファ56及びデータ出力コントローラ138に出力すると共に、文字列検索装置20に検索指示SEARCH、書込み指示WRITEを順に出力することを、文字データの取り出し位置を文字列データの末尾側へ1文字分ずつシフトしながら繰り返す。これにより、文字列検索装置20では、検索指示SEARCHにより、書込みバッファ56に出力されて保持された文字データに対して各連想メモリセル列に記憶している文字データとの比較動作が行われ、次に書込み指示WRITEにより、保持された文字データが連想メモリセルアレイ26に書き込まれることになる。
一方、初期設定回路140には書込みアドレスカウンタ142が接続されており、更にNAND回路150を介して文字列検索装置20に接続されている。初期設定回路140は信号ENABLE'がローレベルになると、出力信号を一旦アクティブ(ローレベル)とする。これにより、NAND回路150から出力される信号SETが一旦ハイレベルになる。
書込みアドレスカウンタ142は文字列検索装置20及びガベージアドレスコントローラ148に接続されている。書込みアドレスカウンタ142は、連想メモリセルアレイ26のうちの特定の連想メモリセル列のアドレスをカウント値として保持しており、このカウント値をアドレスR/W-ADDRESSとして文字列検索装置20及びガベージアドレスコントローラ148へ出力する。また、書込みアドレスカウンタ142は、初期設定回路140から入力された信号がローレベルになると、保持しているアドレスを「0」(連想メモリセルアレイ26の先頭の連想メモリセル列のアドレス)にリセットすると共に、連想メモリセルアレイ26に対するデータの書込みが行われる毎にカウント値(アドレス)をカウントアップする。
従って、前述の書込み指示WRITEに従って書込みバッファ56に保持された文字データが連想メモリセルアレイ26に書き込まれる際には、アドレスR/W-ADDRESSのカウントアップに伴って文字データが書き込まれる連想メモリセル列が順次シフトしていくことになる。尚、書込みアドレスカウンタ142がワード線WLMに接続された連想メモリセル列(連想メモリセルアレイ26の末尾の連想メモリセル列)のアドレスを保持している状態で、連想メモリセルアレイ26へのデータの書込みが行なわれた場合にも、書込みアドレスカウンタ142はカウント値を「0」にリセットする。
一方、ガベージアドレスコントローラ148は文字列検索装置20に接続されており、文字列検索装置20から信号ENTIRE-MATCH及びアドレスMATCH-ADDRESSが入力される。ガベージアドレスコントローラ148は、書込みアドレスが一巡していないときに、文字列検索装置20における比較動作の結果、信号ENTIRE-MATCHがハイレベルに維持されていた場合には、書込みアドレスカウンタ142から入力されたアドレスR/W-ADDRESSとアドレスMATCH-ADDRESSとを比較する。そして、アドレスMATCH-ADDRESSの方が大きいか等しい場合には、今回の比較動作の結果が無効か否かを表す出力信号FOUNDをアクティブ(ローレベル:無効を表す)とする。尚、ガベージアドレスコントローラ148は、文字列圧縮処理が開始される際にも信号FOUNDをローレベルとする。
ガベージアドレスコントローラ148には一致長カウンタ144及びデータ出力コントローラ138が接続されており、信号FOUNDは一致長カウンタ144及びデータ出力コントローラ138の各々に入力される。また、ガベージアドレスコントローラ148は、前述の信号FOUNDを、NAND回路150を介して信号SETとして文字列検索装置20に出力する。
一致長カウンタ144は、文字列検索装置20で比較動作が行われた後に、ガベージアドレスコントローラ148から入力された信号FOUNDがハイレベルの場合にはカウント値(一致長さ)をカウントアップし、信号FOUNDがローレベルの場合、即ち文字列圧縮処理が開始される際及び今回の比較動作の結果が無効であった場合にはカウント値を「0」にリセットするようになっている。一致長カウンタ144にはデータ出力コントローラ138が接続されており、データ出力コントローラ138にカウント値を一致長M-LENとして出力する。
また、文字列検索装置20にはアドレスレジスタ146が接続されている。アドレスレジスタ146は、文字列検索装置20からアドレスMATCH-ADDRESSを受け、これを保持すると共にアドレスS-ADRとしてデータ出力コントローラ138へ出力する。
データ出力コントローラ138は、一致長カウンタ144から出力された一致長M-LEN及びアドレスレジスタ146から出力されたアドレスS-ADRを保持する。また、入力された信号FOUNDが文字列検索装置20で比較動作が行われた後もハイレベルの状態で継続している場合に、次回以降の比較動作後に信号FOUNDがローレベルに遷移するまで、又は、データ入力コントローラ136が被圧縮文字列データから取り出す文字データが被圧縮文字列データの末尾に到達するまで、入力された文字データの出力を停止する。
そして、次回以降の比較動作後に信号FOUNDがローレベルに遷移した場合、又は、被圧縮文字列データから取り出す文字データが被圧縮文字列データの末尾に到達した場合には、保持しているアドレスS-ADR及び一致長M-LENに基づいて、出力を停止していた間にデータ入力コントローラ136から入力されたデータを、別のデータに置き換えて(圧縮して)、圧縮文字列データCOMP-DATAとして出力する。尚、前回比較動作が行われた後の信号FOUNDがローレベルでかつ今回比較動作が行われた後の信号FOUNDもローレベルである場合には、データ入力コントローラ136から入力されたデータをそのまま出力する。
次に、本実施の形態における文字列圧縮コントローラ120及び文字列検索装置20の動作について説明する。
図13は、圧縮処理を行う際のこれらの装置の動作例を示したフローチャートである。
まず、文字列圧縮コントローラ120は、圧縮処理を開始する指示として、信号ENABLE'及び被圧縮文字列を表す被圧縮文字列データTEXT-INPUTの入力を受ける(ステップ250)。これにより、被圧縮文字列データはデータ入力コントローラ136に保持される。また、初期設定回路140から書込みアドレスカウンタ142及び一致長カウンタ144にリセット信号が出力され、各カウンタのカウント値が「0」にリセットされる。更に、初期設定回路140からNAND回路150を介して文字列検索装置20へ入力される信号SETが一旦ハイレベルとされてプリチャージコントローラ58に入力される。第1の実施の形態でも説明したように、プリチャージコントローラ58は、信号SETがハイレベルになると、クロックSRと同期してマッチ線をハイレベルとする。
次に、データ入力コントローラ136は、圧縮処理が終了したか否かを判定する(ステップ252)。圧縮処理が終了していない場合には、保持している被圧縮文字列データから先頭の1文字に対応する文字データを取り出して文字列検索装置20の書込みバッファ56に出力する(ステップ254)。また、データ入力コントローラ136は、検索指示SEARCHを出力する(ステップ256)。これにより、文字列検索装置20のタイミングコントローラ50からクロックSR及びクロックWT-SRが出力され、第1の実施の形態と同様に連想メモリセル列毎に比較動作が行われる。そして、データ出力コントローラ138は、比較結果が「一致」となった連想メモリセル列が有るか否か、即ち信号FOUNDがハイレベルか否かを判定する(ステップ258)。
ところで、この最初の比較動作では連想メモリセルアレイ26の各連想メモリセル28に文字データを書き込んでいないので、各連想メモリセル28に記憶されているデータは不定であり、比較結果が「一致」となった連想メモリセル列があった(信号ENTIRE-MATCHがハイレベルに維持されていた)としても偶然である。本実施の形態では、書込みアドレスが一巡していないときに、ガベージアドレスコントローラ148において、信号ENTIRE-MATCHがハイレベルに維持されていた場合には入力されたアドレスR/W-ADDRESSとアドレスMATCH-ADDRESSとを比較し、アドレスMATCH-ADDRESSの方が大きいか等しい場合には今回の比較動作の結果は無効であるとして、信号FOUNDをローレベル(「無効」を表す)とする。従って、この時点ではステップ258において比較結果が「一致」となった連想メモリセル列はないと判定されてステップ260へ移行する。
その後、データ出力コントローラ138は、一致長カウンタ144から入力されて保持している一致長さを表すカウント値M-LENが「2」よりも大きいか否か、即ち過去2回の比較動作で何れも「有効」を表す信号FOUNDが出力されたか否かを判定する(ステップ260)。この時点では、保持している一致長M-LENは「0」であるので、ステップ260において一致長M-LENは「2」よりも大きくはないと判定され、データ出力コントローラ138は、データ入力コントローラ136から入力された文字データ、即ち書込みバッファ56に保持された文字データを圧縮データCOMP-DATAとして出力する(ステップ266)。
また、このとき、データ入力コントローラ136からは書込み指示WRITEが出力される。これにより、文字列検索装置20は、書込みバッファ56に保持された文字データを連想メモリセルアレイ26に書き込む(ステップ268)。尚、文字データが書き込まれる連想メモリセル列は、書込みアドレスカウンタ142に保持されているアドレス(このときは「0」)に対応する連想メモリセル列である。
更に、ローレベルの信号FOUNDが、NAND回路150を介してハイレベルの信号SETとして文字列検索装置20に入力され、これによりプリチャージコントローラ58が各マッチ線をハイレベルにチャージする(ステップ270)。そして、書込みアドレスカウンタ142がカウント値のカウントアップを行い(ステップ272)、ステップ252へ戻る。
このように、ステップ258、260の判定結果が「No」である間は、書込みバッファ56に保持された文字データが、データ出力コントローラ138から圧縮文字列データCOMP-DATAとして出力されると共に連想メモリセルアレイ26に記憶される。また、文字データを書き込む連想メモリセル列のアドレスは、前述の書込みアドレスカウンタ142のカウント値のカウントアップに伴って比較動作が行われる毎に順次シフトされる。
一方、書込みバッファ56に保持された文字データと何れかの連想メモリセル列に記憶された文字データとが一致した場合には、ガベージアドレスコントローラ148から出力される信号FOUNDがハイレベル(「有効」を表す)となる。これにより、ステップ258において、データ出力コントローラ138は、比較結果が「一致」となった連想メモリセル列があると判定する。この場合にはステップ266のようにデータの出力は行なわれず、一致長カウンタ144に「有効」を表す信号FOUNDが入力されることによりカウント値がカウントアップされ、このカウント値が一致長M-LENとしてデータ出力コントローラ138に保持される。
また、文字列検索装置20は、連想メモリセルアレイ26への文字データの書込みをステップ268と同様にして行う(ステップ274)。次に、比較動作後マッチ線がハイレベルに維持されている連想メモリセル列の次段の連想メモリセル列のマッチ線のみをハイレベルとし、それ以外の連想メモリセル列はマッチ線をローレベルとする(ステップ276)。そして、書込みアドレスカウンタ142は、カウント値のカウントアップを行い(ステップ278)、ステップ252へ戻る。
このように、ステップ258の判定結果が「Yes」である間は、連想メモリセルアレイ26への文字データの書込み及び一致長M-LENのカウントアップのみが繰り返し行われる。ところで、ステップ258の判定結果が2回以上続けて「Yes」である場合は、書込みバッファ56に連続して入力された文字データからなる文字列が連想メモリセルアレイ26にも記憶されていた場合、即ち被圧縮文字列の中に2文字以上の文字で構成される繰り返し文字列が発見された場合である。ステップ274乃至278の処理が2回以上繰り返された後にステップ258の判定結果が「No」となった場合、即ち過去2回の比較動作では比較結果が「一致」となった連想メモリセル列が有りかつ今回の比較動作では比較結果が「一致」となった連想メモリセル列が無かった場合には次のステップ260の判定結果も「Yes」となり、ステップ262へ移行する。
この場合、データ出力コントローラ138は、上記で発見された繰り返し文字列を圧縮するための圧縮コードを求める。本実施の形態では、既に出力された繰り返し文字列と同一の文字列の位置を指し示すポインタを表す圧縮コードAと、繰り返し文字列の長さを表す圧縮コードBとで構成された圧縮コードを求める(ステップ262)。具体的には、データ出力コントローラ138が保持しているアドレスS-ADRと一致長M-LENとの差(S-ADR - M-LEN)を圧縮コードAとし、一致長M-LENを圧縮コードBとする。その後、データ出力コントローラ138は、上記で求めた圧縮コードA、圧縮コードBを出力する(ステップ264)。
尚、この圧縮コードを出力するにあたり、圧縮した文字列を復元する際に圧縮コードと文字データとを区別できるようにするために、データ出力コントローラ138は、文字データと圧縮コードとの間に区切りを表すコードを挿入する。これにより、データ出力コントローラ138から出力される圧縮文字列データCOMP-DATAの長さは、文字列圧縮コントローラ120に入力された被圧縮文字列データTEXT-INPUTよりも短くなる。上記処理を繰り返すことによって被圧縮文字列データTEXT-INPUTが圧縮文字列データCOMP-DATA に変換されて出力されることになる。
以上、本発明の実施の形態について説明した。
このように、本実施の形態では、連想メモリセルアレイ26の現在のアドレスにおける文字データが複数のアドレスで見つかった場合に、その複数のアドレスの少なくとも一部がローアドレス領域内にあれば、ローアドレス領域内で最大のアドレスを選択し、ローアドレス領域になければ、全ての中で最大のアドレスを選択するようにした。これにより、現在のアドレスにおける文字データに書き込み順が最も近い文字データを選択できるようになった。
そして、現在のアドレスから始まる文字列を、この選択された文字データの位置及び一致する部分の長さで圧縮することにより、従来よりも圧縮率を向上させることができるようになった。
以上、本発明を実施の形態を用いて説明したが、本発明の技術的範囲は上記実施の形態には限定されない。本発明の精神及び範囲から逸脱することなく様々に変更したり代替態様を採用したりすることが可能なことは、当業者に明らかである。
20…文字列検索装置、22…コントローラ、26…連想メモリセルアレイ、28…連想メモリセル、52…アドレスデコーダ、60…アドレス出力回路、102…プライオリティエンコーダ、120…文字列圧縮コントローラ

Claims (8)

  1. メモリの先頭位置から末尾位置までの書込みを1サイクルとしてサイクリックにデータ要素が書き込まれる当該メモリの現在の書込み位置に特定のデータ要素を書き込む際に、当該メモリ内の当該特定のデータ要素が記憶された複数の位置から特定の位置を選択する装置であって、
    前記特定のデータ要素が記憶された前記複数の位置が、前記メモリの前記現在の書込み位置よりも前記先頭位置に近い領域である特定の領域内の位置を含むかどうかを判定する判定部と、
    前記複数の位置が前記特定の領域内の位置を含むと前記判定部により判定された場合に、当該複数の位置のうちの当該特定の領域内の少なくとも1つの位置から、前記末尾位置に最も近い位置を前記特定の位置として選択し、前記複数の位置が前記特定の領域内の位置を含まないと前記判定部により判定された場合に、当該複数の位置から、前記末尾位置に最も近い位置を前記特定の位置として選択する選択部と
    を含む、装置。
  2. 前記特定のデータ要素が記憶された前記複数の位置の各々を表す複数の信号を発生させる信号発生部を更に含み、
    前記選択部は、前記複数の位置が前記特定の領域内の位置を含むと前記判定部により判定された場合に、前記信号発生部が発生させた前記複数の信号のうち前記特定の領域以外の領域内の位置を表す信号をマスクすることによって得られた少なくとも1つの信号に基づいて、当該特定の領域内の少なくとも1つの位置を特定する、請求項1の装置。
  3. 前記選択部による信号のマスクに用いられるマスクパターンを記憶する記憶部を更に含み、
    前記記憶部は、前記特定の領域が拡大した場合に、前記メモリの新たに当該特定の領域に含まれるようになった領域内の位置を表す信号をマスクしないように変更された前記マスクパターンを記憶する、請求項2の装置。
  4. 前記選択部による信号のマスクに用いられるマスクパターンを記憶する記憶部と、
    前記特定の領域と当該特定の領域以外の領域との境界を表す信号に基づいて、前記マスクパターンを生成する生成部と
    を更に含む、請求項2の装置。
  5. 前記特定のデータ要素が記憶された前記複数の位置の各々を表す複数の信号を発生させる信号発生部を更に含み、
    前記判定部は、前記信号発生部が発生させた前記複数の信号のうち前記特定の領域以外の領域内の位置を表す信号をマスクすることによって得られた少なくとも1つの信号に対してOR演算を行った結果に基づいて、前記特定のデータ要素が記憶された前記複数の位置が前記特定の領域内の位置を含むかどうかを判定する、請求項1の装置。
  6. メモリの先頭から末尾までアドレス順に行われる書込みを1回の書込みサイクルとしてサイクリックにデータ要素が書き込まれる当該メモリの現在の書込みアドレスに特定のデータ要素を書き込む際に、当該メモリ内の当該特定のデータ要素が記憶された複数のアドレスから特定のアドレスを選択する装置であって、
    前記特定のデータ要素が記憶された前記複数のアドレスの各々を表す複数の信号を発生させる信号発生部と、
    前記信号発生部が発生させた前記複数の信号の何れかが、前記1回の書込みサイクルにおいて前記現在の書込みアドレスよりも先にデータ要素が書き込まれるアドレスを表すかどうかを判定する判定部と、
    前記複数の信号の何れかが前記1回の書込みサイクルにおいて前記現在の書込みアドレスよりも先にデータ要素が書き込まれるアドレスを表すと前記判定部により判定された場合に、当該複数の信号のうち前記1回の書込みサイクルにおいて前記現在の書込みアドレスよりも後にデータ要素が書き込まれるアドレスを表す信号をマスクすることによって得られた少なくとも1つの信号で構成される信号群を抽出し、前記複数の信号の何れもが前記1回の書込みサイクルにおいて前記現在の書込みアドレスよりも先にデータ要素が書き込まれるアドレスを表さないと前記判定部により判定された場合に、当該複数の信号で構成される信号群を抽出する抽出部と、
    前記抽出部により抽出された前記信号群を構成する信号のうち、前記1回の書込みサイクルにおいて最後にデータ要素が書き込まれるアドレスを表す信号を、前記特定のアドレスを表す信号として出力する出力部と
    を含む、装置。
  7. メモリの先頭位置から末尾位置までの書込みを1サイクルとしてサイクリックにデータ要素が書き込まれる当該メモリの現在の書込み位置に特定のデータ要素群を構成するデータ要素を書き込みながら、当該特定のデータ要素群を符号化する装置であって、
    前記特定のデータ要素群を構成するデータ要素ごとに、当該データ要素が記憶された前記メモリ内の複数の位置を検出する検出部と、
    前記特定のデータ要素群を構成するデータ要素ごとに、前記検出部により検出された前記複数の位置が、前記メモリの前記現在の書込み位置よりも前記先頭位置に近い領域である特定の領域内の位置を含むかどうかを判定する判定部と、
    前記特定のデータ要素群を構成するデータ要素ごとに、前記複数の位置が前記特定の領域内の位置を含むと前記判定部により判定された場合に、当該複数の位置のうちの当該特定の領域内の少なくとも1つの位置から、前記末尾位置に最も近い位置を選択し、前記複数の位置が前記特定の領域内の位置を含まないと前記判定部により判定された場合に、当該複数の位置から、前記末尾位置に最も近い位置を選択する選択部と、
    前記特定のデータ要素群を構成するデータ要素を1つずつ取り出しながら当該データ要素について前記検出部、前記判定部、前記選択部の処理を実行することで、前記選択部により位置が連続して選択された場合に前記選択部により選択された位置と、前記選択部により位置が連続して選択された回数とを用いて、当該特定のデータ要素群を符号化する符号化部と
    を含む、装置。
  8. メモリの先頭位置から末尾位置までの書込みを1サイクルとしてサイクリックにデータ要素が書き込まれる当該メモリの現在の書込み位置に特定のデータ要素を書き込む際に、当該メモリ内の当該特定のデータ要素が記憶された複数の位置から特定の位置を選択する方法であって、
    前記特定のデータ要素が記憶された前記複数の位置が、前記メモリの前記現在の書込み位置よりも前記先頭位置に近い領域である特定の領域内の位置を含むかどうかを判定するステップと、
    前記複数の位置が前記特定の領域内の位置を含むと判定された場合に、当該複数の位置のうちの当該特定の領域内の少なくとも1つの位置から、前記末尾位置に最も近い位置を前記特定の位置として選択し、前記複数の位置が前記特定の領域内の位置を含まないと判定された場合に、当該複数の位置から、前記末尾位置に最も近い位置を前記特定の位置として選択するステップと
    を含む、方法。
JP2009116851A 2009-05-13 2009-05-13 データが記憶された位置を選択する装置及び方法 Expired - Fee Related JP4806054B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2009116851A JP4806054B2 (ja) 2009-05-13 2009-05-13 データが記憶された位置を選択する装置及び方法
US12/775,113 US8677079B2 (en) 2009-05-13 2010-05-06 Selecting a position where data is stored

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009116851A JP4806054B2 (ja) 2009-05-13 2009-05-13 データが記憶された位置を選択する装置及び方法

Publications (2)

Publication Number Publication Date
JP2010268146A JP2010268146A (ja) 2010-11-25
JP4806054B2 true JP4806054B2 (ja) 2011-11-02

Family

ID=43069441

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009116851A Expired - Fee Related JP4806054B2 (ja) 2009-05-13 2009-05-13 データが記憶された位置を選択する装置及び方法

Country Status (2)

Country Link
US (1) US8677079B2 (ja)
JP (1) JP4806054B2 (ja)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8954484B2 (en) * 2009-06-12 2015-02-10 Cray Inc. Inclusive or bit matrix to compare multiple corresponding subfields
US9372887B2 (en) 2010-12-28 2016-06-21 International Business Machines Corporation Compression ratio improvement by lazy match evaluation on the string search CAM
WO2012090564A1 (ja) * 2010-12-28 2012-07-05 インターナショナル・ビジネス・マシーンズ・コーポレーション データ要素列を処理する装置及び方法
GB2501195B (en) * 2011-11-01 2018-02-21 Ibm Apparatus and method for determining search start point
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
US11175923B2 (en) * 2017-02-13 2021-11-16 International Business Machines Corporation Comparing load instruction address fields to store instruction address fields in a table to delay issuing dependent load instructions
US11188503B2 (en) * 2020-02-18 2021-11-30 International Business Machines Corporation Record-based matching in data compression
CN117242490A (zh) * 2021-04-19 2023-12-15 诺基亚技术有限公司 用于以图像文件格式对区域和区域掩码进行信号发送的方法和装置

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63244496A (ja) * 1987-03-31 1988-10-11 Toshiba Corp 内容番地付けメモリ
JPH07114577A (ja) * 1993-07-16 1995-05-02 Internatl Business Mach Corp <Ibm> データ検索装置、データ圧縮装置及び方法
JP3117375B2 (ja) 1994-11-28 2000-12-11 インターナショナル・ビジネス・マシーンズ・コーポレ−ション 連想メモリの制御回路及び連想メモリ装置
JP3007819B2 (ja) * 1994-12-28 2000-02-07 インターナショナル・ビジネス・マシーンズ・コーポレイション データ圧縮用検索装置
JP3141866B2 (ja) * 1999-01-18 2001-03-07 日本電気株式会社 連想記憶装置及び連想メモリ検索方法
JP2001014864A (ja) * 1999-06-29 2001-01-19 Nec Corp 連想メモリ
JP2001184871A (ja) * 1999-12-28 2001-07-06 Toshiba Corp 連想メモリおよびデータバッファ管理装置
JP2003152548A (ja) * 2001-11-14 2003-05-23 Canon Inc データ圧縮における文字列検索方法
US20040022312A1 (en) * 2002-07-31 2004-02-05 Jones Simon R. Lossless data compression
JP2005011499A (ja) * 2003-05-28 2005-01-13 Kawasaki Microelectronics Kk 連想メモリ
US8160372B1 (en) * 2008-01-16 2012-04-17 Google Inc. Optimized backward reference selection with reduced entropy for image compression

Also Published As

Publication number Publication date
US20100293344A1 (en) 2010-11-18
US8677079B2 (en) 2014-03-18
JP2010268146A (ja) 2010-11-25

Similar Documents

Publication Publication Date Title
JP4806054B2 (ja) データが記憶された位置を選択する装置及び方法
US5448733A (en) Data search and compression device and method for searching and compressing repeating data
CN100401425C (zh) 用于在按内容寻址的存储器中执行可变宽度搜索的电路和方法
US11120867B2 (en) Hardware compression with search string matching
JP3007819B2 (ja) データ圧縮用検索装置
JP5520390B2 (ja) データ要素列を処理する装置及び方法
JP2009529172A (ja) エクストラデータを含むページを記憶するメモリーマトリックスを有する電子回路
JP2023120450A (ja) 半導体記憶装置および誤り検出訂正方法
JP2002197873A (ja) 連想メモリ
US6125057A (en) Segmented source memory array
TWI807822B (zh) 三態內容可定址記憶體
US12056052B2 (en) Data L2 cache with split access
KR20140009548A (ko) 메모리 셀들의 프로그래밍
JP3103421B2 (ja) 符号化回路
JPH11273364A (ja) 連想メモリ
US7536395B2 (en) Efficient dynamic register file design for multiple simultaneous bit encodings
JP2004192695A (ja) 連想メモリ装置
JP4159896B2 (ja) 連想メモリ
CN117095722A (zh) 三态内容可寻址存储器
CN115641894A (zh) 用于数据搜索的存储器装置及数据搜索方法
JP2005260285A (ja) データ圧縮装置
JP3819120B2 (ja) 連想メモリ装置に適用される符号化回路
JP2005011499A (ja) 連想メモリ
JP2000293990A (ja) 符号化回路
JPH1055682A (ja) 連想メモリのテスト方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20101216

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110407

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110412

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110622

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: 20110726

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20110726

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110811

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140819

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees