JP5520390B2 - データ要素列を処理する装置及び方法 - Google Patents

データ要素列を処理する装置及び方法 Download PDF

Info

Publication number
JP5520390B2
JP5520390B2 JP2012550757A JP2012550757A JP5520390B2 JP 5520390 B2 JP5520390 B2 JP 5520390B2 JP 2012550757 A JP2012550757 A JP 2012550757A JP 2012550757 A JP2012550757 A JP 2012550757A JP 5520390 B2 JP5520390 B2 JP 5520390B2
Authority
JP
Japan
Prior art keywords
data element
search
data
output
path
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
JP2012550757A
Other languages
English (en)
Other versions
JPWO2012090564A1 (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 JP2012550757A priority Critical patent/JP5520390B2/ja
Publication of JPWO2012090564A1 publication Critical patent/JPWO2012090564A1/ja
Application granted granted Critical
Publication of JP5520390B2 publication Critical patent/JP5520390B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1064Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in cache or content addressable memories
    • 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/3088Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method employing the use of a dictionary, e.g. LZ78
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/04Protocols for data compression, e.g. ROHC

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Error Detection And Correction (AREA)

Description

本発明は、データ要素列を処理する装置及び方法に関する。特に、本発明は、データ要素列の第1の部分データ要素列を第2の部分データ要素列の位置に基づいて処理する装置及び方法に関する。
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周期で信号が通過すべき経路の長さを半分にして高速化している。
ところで、これらの文字列検索方法では、文字を構成する個々のビットを連想メモリ(CAM)のメモリセルに保持している。このようなメモリセルには、高密度に実装されればされるほど、宇宙線等の影響により、ソフトエラーと呼ばれるエラーが起こる場合があるという宿命がある。通常のメモリでは、信頼性をあげるために、パリティチェック等のエラー検出回路を設けることがあるので、本出願人は、CAMについても、パリティビットを別途設け、パリティエラー検出を行うことを提案している(例えば、特許文献4参照)。
CAMのメモリセルにエラーが発生すると、その時点で処理が中断するため、それを避けるためには、本来は、ECC等のエラー訂正回路を内蔵するほうがよい。しかしながら、CAMでは、バイトごとにECC回路を内蔵する必要があり、回路規模が大きくなり過ぎるため、特許文献4では、パリティチェック回路だけを内蔵している。また、このパリティチェック回路に関しても、普通に内蔵すると回路規模が大きくなるため、回路規模を最小に抑える工夫を行っている。
特開平7−114577号公報 特開平8−147986号公報 特開平8−242176号公報 国際公開2010/050282号パンフレット
例えば特許文献4に記載したようなCAMにおいて、あるパケットの圧縮中にパリティエラーが発生したとしても、そのパケットの処理を継続できることが望まれる。そして、このことは、一般に、CAMを用いた処理を行うに当たって、CAMに記憶されたデータに誤りが発生した場合にも望まれることである。
本発明の目的は、CAMに記憶されたデータに誤りが発生していなければCAMを用いて行う処理を、CAMに記憶されたデータに誤りが発生しても継続できるようにすることにある。
かかる目的のもと、本発明は、データ要素列の第1の部分データ要素列を、データ要素列の第2の部分データ要素列の位置に基づいて処理する装置であって、データ要素列の少なくとも一部を構成する複数のデータ要素の各データ要素を、データ要素列における各データ要素の位置に応じたアドレスに記憶し、検索データ要素が与えられた場合に、検索データ要素に一致する一致データ要素を複数のデータ要素の1つとして記憶していれば、一致データ要素が記憶されているアドレスを出力する連想メモリと、入力されたデータ要素を検索データ要素として連想メモリに与え、連想メモリから出力されたアドレスを出力する第1のパスと、入力されたデータ要素を検索データ要素として連想メモリに与えることなく出力する第2のパスと、第1の部分データ要素列に含まれる特定のデータ要素の入力に応じて、第1のパスが特定のデータ要素を検索データ要素として連想メモリに与えた場合に、検索データ要素に一致する一致データ要素に誤りが発生していなければ、第1のパスから出力されたアドレスに応じて決まる第2の部分データ要素列の位置を用いて第1の部分データ要素列を処理し、検索データ要素に一致する一致データ要素に誤りが発生していれば、第2のパスから出力された特定のデータ要素を用いて第1の部分データ要素列を処理する処理部とを含む、装置を提供する。
ここで、第2のパスは、第1のパスからアドレスが出力されるのと同期してデータ要素を出力するようなパイプライン構成を有する、ものであってよい。
また、本発明は、データ要素列の第1の部分データ要素列を、データ要素列の第2の部分データ要素列の位置及び長さの情報で置換することにより、データ要素列を圧縮する装置であって、データ要素列の少なくとも一部を構成する複数のデータ要素の各データ要素を、データ要素列における各データ要素の位置に応じたアドレスに記憶し、検索データ要素が与えられた場合に、検索データ要素に一致する一致データ要素を複数のデータ要素の1つとして記憶していれば、一致データ要素が記憶されているアドレスを出力する連想メモリと、検索データ要素が連想メモリに与えられた場合に、それまでに与えられた検索データ要素の列に一致する一致データ要素の列が連想メモリに記憶されていれば、連想メモリから出力されるアドレスに基づいて、一致データ要素の列が記憶されていることを示す列存在情報と、一致データ要素の列が記憶されているアドレスを示す列アドレス情報とを生成する生成回路と、入力されたデータ要素を検索データ要素として連想メモリに与え、生成回路により生成された列存在情報と列アドレス情報とを出力する第1のパスと、入力されたデータ要素を検索データ要素として連想メモリに与えることなく出力する第2のパスと、第1の部分データ要素列に含まれる特定のデータ要素の入力に応じて、第1のパスが特定のデータ要素を検索データ要素として連想メモリに与えた場合に、検索データ要素に一致する一致データ要素に誤りが発生していないことを1つの条件として、第1の部分データ要素列を、第1のパスからの列存在情報の連続出力回数と第1のパスから出力された列アドレス情報とに応じて決まる第2の部分データ要素列の位置及び長さの情報で置換する処理を行い、検索データ要素に一致する一致データ要素に誤りが発生していれば、第2のパスから出力された特定のデータ要素を用いて、第1の部分データ要素列を部分的に非圧縮とする処理を行う処理部とを含む、装置も提供する。
ここで、処理部は、第1のパスが特定のデータ要素を検索データ要素として連想メモリに与えた場合に、1つの条件に加え、第1のパスからの列存在情報の連続出力回数が所定数を超えたことを更に1つの条件として、連続出力回数と第1のパスから出力された列アドレス情報とに応じて決まる第2の部分データ要素列の位置及び長さの情報で置換する処理を行う、ものであってよい。
また、処理部は、第1のパスが特定のデータ要素を検索データ要素として連想メモリに与えた場合に、第1のパスからの列存在情報の連続出力回数が所定数を超えなかったならば、第2のパスから出力された特定のデータ要素を用いて、第1の部分データ要素列を部分的に非圧縮とする処理を行う、ものであってよい。
また、第2のパスは、第1のパスから列存在情報と列アドレス情報とが出力されるのと同期してデータ要素を出力するようなパイプライン構成を有する、ものであってよい。
更に、本発明は、データ要素列の第1の部分データ要素列を、データ要素列の第2の部分データ要素列の位置及び長さの情報で置換することにより、データ要素列を圧縮する装置であって、データ要素列の少なくとも一部を構成する複数のデータ要素の各データ要素と各データ要素に対応するパリティ要素とを、データ要素列における各データ要素の位置に応じたアドレスに記憶し、検索データ要素が与えられた場合に、検索データ要素に一致する一致データ要素を複数のデータ要素の1つとして記憶していれば、一致データ要素が記憶されているアドレスを出力する連想メモリと、検索データ要素が連想メモリに与えられた場合に、それまでに与えられた検索データ要素の列に一致する一致データ要素の列が連想メモリに記憶されていれば、連想メモリから出力されるアドレスに基づいて、一致データ要素の列が記憶されていることを示す列存在情報と、一致データ要素の列が記憶されているアドレスを示す列アドレス情報とを生成する生成回路と、検索データ要素が連想メモリに与えられた場合に、検索データ要素に一致する一致データ要素が連想メモリに記憶されていれば、一致データ要素が記憶されているアドレスに記憶されたパリティ要素の値が、検索データ要素から生成されるかどうかを判定する判定回路と、入力されたデータ要素を検索データ要素として連想メモリに与え、生成回路により生成された列存在情報と列アドレス情報とを出力する第1のパスと、入力されたデータ要素を検索データ要素として連想メモリに与えることなく出力する第2のパスと、第1の部分データ要素列に含まれる特定のデータ要素の入力に応じて、第1のパスが特定のデータ要素を検索データ要素として連想メモリに与えた場合に、判定回路によりパリティ要素の値が生成されると判定されたという条件、及び、第1のパスからの列存在情報の連続出力回数が所定数を超えたという条件の両方が満たされれば、第1の部分データ要素列を、連続出力回数と第1のパスから出力された列アドレス情報とに応じて決まる第2の部分データ要素列の位置及び長さの情報で置換する処理を行い、判定回路によりパリティ要素の値が生成されないと判定されたという条件、及び、第1のパスからの列存在情報の連続出力回数が所定数を超えなかったという条件の少なくともいずれか一方が満たされれば、第2のパスから出力された特定のデータ要素を用いて、第1の部分データ要素列の特定のデータ要素の部分を非圧縮とする処理を行う処理部とを含む、装置も提供する。
更にまた、本発明は、データ要素列の第1の部分データ要素列を、データ要素列の第2の部分データ要素列の位置に基づいて処理する方法であって、データ要素列の少なくとも一部を構成する複数のデータ要素の各データ要素を、データ要素列における各データ要素の位置に応じたアドレスに記憶し、検索データ要素が与えられた場合に、検索データ要素に一致する一致データ要素を複数のデータ要素の1つとして記憶していれば、一致データ要素が記憶されているアドレスを出力する連想メモリと、入力されたデータ要素を検索データ要素として連想メモリに与え、連想メモリから出力されたアドレスを出力する第1のパスと、入力されたデータ要素を検索データ要素として連想メモリに与えることなく出力する第2のパスとを含み、第1の部分データ要素列に含まれる特定のデータ要素の入力に応じて、第1のパスが特定のデータ要素を検索データ要素として連想メモリに与えた場合に、検索データ要素に一致する一致データ要素に誤りが発生しているかどうかを判定するステップと、一致データ要素に誤りが発生していないと判定されれば、第1のパスから出力されたアドレスを用いて第1の部分データ要素列を処理し、一致データ要素に誤りが発生していると判定されれば、第2のパスから出力された特定のデータ要素を用いて第1の部分データ要素列を処理するステップとを含む、方法も提供する。
本発明によれば、CAMに記憶されたデータに誤りが発生していなければCAMを用いて行う処理を、CAMに記憶されたデータに誤りが発生しても継続できる。
本発明の実施の形態が適用されるマイクロコンピュータの構成例を示した図である。 本発明の実施の形態における繰り返しデータ検索回路の構成例を示したブロック図である。 連想メモリセルの構成例を示した回路図である。 パリティメモリセルの構成例を示した回路図である。 本発明の実施の形態における比較結果制御回路の構成例を示したブロック図である。 (a)乃至(e)は本発明の実施の形態における比較結果制御回路の動作を説明するための概念図である。 文字列検索でパリティエラーが発生した場合の具体例を示した図である。 通常の繰り返しデータ検索装置及びデータ圧縮コントローラの構成例を示した図である。 本発明の実施の形態における繰り返しデータ検索装置及びデータ圧縮コントローラの構成例を示した図である。 本発明の実施の形態におけるデータ圧縮コントローラの動作例を示したフローチャートである。 本発明の実施の形態におけるデータ圧縮コントローラの動作例を示したフローチャートである。 図10のフローチャートにおける圧縮データ出力処理の内容を示したフローチャートである。
以下、添付図面を参照して、本発明の実施の形態について詳細に説明する。
図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セル列毎にアドレスが付与されている。
また、CAMセルアレイ26には、図に太線の「○」で示すN+1個のパリティメモリセル24も1列に配置されている。CAMセルアレイ26にはN+1本の読出しパリティ線RPL0〜RPLN、1組の書込みパリティ線対WPL,WPL'も配置されており、各パリティメモリセル24は、ワード線WL0〜WLNの何れか、及び、読出しパリティ線RPL0〜RPLNの何れかに各々接続され、書込みパリティ線対WPL,WPL'に接続されている。
N+1個のパリティメモリセル24は、各々同一の構成を有している。図4に示すように、パリティメモリセル24の構成は、図3のCAMセル28の構成とほぼ同一である。但し、パリティメモリセル24は、CAMセル28に含まれるN−MOSFET38、40、42を有しておらず、NOT回路30、32のループに保持されるデータがそのまま読み出されるように、NOT回路30の出力端は読出しパリティ線RPLに接続されている。
尚、CAMセルアレイ26では、各パリティメモリセル24にもアドレスが付与されている。
再び図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セル列への所定の検索データの書込みが行われる。
また、書込みバッファ56にはパリティ生成器54が接続されており、書込みバッファ56からパリティ生成器54に検索データが順次入力される。パリティ生成器54には書込みパリティ線対WPL,WPL'が接続されており、入力された検索データに基づいてパリティビットを算出すると共に、タイミングコントローラ50から入力されたクロックSRに同期したタイミングで、算出したパリティビットに応じて書込みパリティ線対WPL,WPL'のレベルを変化させる(ビット線対を駆動する)。パリティ生成器54がパリティビットに応じてビット線対を駆動している間に、所定のパリティメモリセル24へのパリティビットの書込みが行われる。また、パリティ生成器54には検索パリティ線SPLも接続されており、算出したパリティビットに応じて検索パリティ線SPLのレベルを変化させる。
タイミングコントローラ50にはアドレスデコーダ52も接続されており、クロックSRはアドレスデコーダ52にも出力される。アドレスデコーダ52はデータ圧縮コントローラ22に接続されており、データ圧縮コントローラ22から検索データの書込みを行うCAMセル列のアドレス(書込みアドレスWADR)が指定される。アドレスデコーダ52にはワード線WL0〜WLNが接続されており、クロックSRと同期したタイミングで、より詳しくは書込みバッファ56が所定の検索データに応じて各ビット線対を駆動している期間内で、かつ、各CAMセル列に記憶されたデータと所定の検索データとの比較が行われた後に、指定された書込みアドレスWADRに対応するワード線をアサートし(イネーブルとし)、所定の検索データを指定されたアドレスに対応するCAMセル列に書き込むと共に、その所定の検索データから算出したパリティビットを指定されたアドレスに対応するパリティメモリセル24に書き込む。
また、タイミングコントローラ50には、各々マッチ線MATCH0〜MATCHNに接続されたN+1個のマッチ線コントローラ58〜58も各々接続されており、クロックSRはマッチ線コントローラ58〜58の各々にも出力される。マッチ線コントローラ58〜58は、入力されたクロックSRに基づき各CAMセル列に記憶されたデータと検索データとの比較に先立ってマッチ線MATCH0〜MATCHNをハイレベルにチャージ(プリチャージ)する。このマッチ線コントローラ58〜58によるマッチ線のプリチャージは、書込みバッファ56が所定の検索データに応じた各ビット線対の駆動を終了してから、次の検索データに応じた各ビット線対の駆動を開始するまでの期間内に行われる。
また、マッチ線MATCH0〜MATCHNは、比較結果制御回路60に各々接続されている。図5に示すように、比較結果制御回路60は、ラッチ62〜62、信号生成回路64〜64、ラッチ66〜66を備えている。尚、図5では、マッチ線コントローラ58〜58の図示を省略している。また、図5では信号生成回路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も参照)。
尚、図5にはブロック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に出力する。
また、比較結果制御回路60は、EXOR回路82〜82、NAND回路84〜84も備えている。以下ではこれらの回路のうち読出しパリティ線RPL1に対応する回路部分についてのみ説明する。
読出しパリティ線RPL1はEXOR回路82の2個の入力端の一方に接続されており、EXOR回路82の2個の入力端の他方には検索パリティ線SPLが接続されている。EXOR回路82の出力端はNAND回路84の2個の入力端の一方に接続されており、NAND回路84の2個の入力端の他方はラッチ62の出力端に接続されている。また、NAND回路84の出力端はOR回路86の1個の入力端にインバータを介して接続されており、OR回路86の他の入力端にはNAND回路84、84〜84の出力端がインバータを介して接続されている。OR回路86の出力端はOR回路88の1個の入力端に接続されており、OR回路88の他の入力端には、他の繰り返しデータ検索回路21のOR回路86の出力端が接続されている。OR回路88から出力されたパリティエラー信号PEはデータ圧縮コントローラ22に出力される(図2も参照)。
次に、本実施の形態の作用として、まず、繰り返しデータ検索回路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の入力に同期して繰り返される。
また、このとき、繰り返しデータ検索回路21は、各CAMセル列に記憶されている文字データのパリティチェックも行うので、パリティチェック動作についても説明する。
EXOR回路82は、パリティ生成器54から出力された検索パリティ線SPLのレベルと、パリティメモリセル24から出力された読出しパリティ線RPLのレベルとを比較し、一致する場合にはローレベルの信号を出力し、不一致の場合にはハイレベルの信号を出力する。
ラッチ62から出力された信号がハイレベルにされ、データの一致を示し、かつ、EXOR回路82から出力された信号がローレベルにされ、パリティビットの一致を示す場合、又は、ラッチ62から出力された信号がローレベルにされ、データの不一致を示す場合、NAND回路84は、ハイレベルの信号を出力する。
一方、ラッチ62から出力された信号がハイレベルにされ、データの一致を示し、かつ、EXOR回路82から出力された信号がハイレベルにされ、パリティビットの不一致を示す場合、NAND回路84は、ローレベルの信号を出力する。
そして、NAND回路84〜84から出力される信号の少なくとも1つがローレベルである場合に、OR回路86は、ハイレベルの信号を出力し、OR回路88は、パリティエラー信号PEをデータ圧縮コントローラ22に出力する。
尚、上記説明において、文字データはデータ要素の一例であり、パリティビットはパリティ要素の一例である。また、ORFBが「1」である場合の信号は、検索データ要素の列に一致する一致データ要素の列が記憶されていることを示す列存在情報の一例であり、MADRは、検索データ要素の列に一致する一致データ要素の列が記憶されているアドレスを示す列アドレス情報の一例であり、信号生成回路64、ラッチ66、第1プライオリティエンコーダ74、第2プライオリティエンコーダ76、OR回路78、OR回路80からなる部分は生成回路の一例である。更に、ラッチ62、EXOR回路82、NAND回路84、OR回路86、OR回路88からなる部分は判定回路の一例である。
次に、比較結果制御回路60の動作について、図6を参照して説明する。尚、図6では元データがテキストデータであり、アドレス「0」〜「5」のCAMセル列に既に「ABABBC」の文字データ列が順に記憶されており、かつ、検索データとして「ABBBC…」の順に文字データが入力された場合を例として示しており、ラッチ62〜62をML0〜ML5、ラッチ66〜66をPS0〜PS5と称している。また、以下では他の繰り返しデータ検索装置においては比較動作の結果が連続して「不一致」となっているものとする。
図6(a)に示すように、検索データとして、まず「A」の文字データが入力されると、アドレス「0」及び「2」のCAMセル列(図6では太枠で示す)で比較結果が「一致」となり、マッチ線MATCH0〜MATCH5のうちマッチ線MATCH0及びMATCH2以外はローレベルにディスチャージされ、マッチ線MATCH0及びMATCH2のみがハイレベルのまま維持される。各マッチ線MATCH0〜MATCH5のレベルは比較結果制御回路60のラッチML0〜ML5に各々保持された後に、次の周期で信号生成回路64〜64に各々出力される。
図6(a)に示すように、このときはラッチPS0〜PS5に保持されているレベルがローレベル(図6では「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にそのまま保持される(図6(b)参照)。
図6(b)に示すように、次の検索データとして「B」の文字データが入力されると、アドレス「1」、「3」、「4」のCAMセル列で比較結果が「一致」となり、各マッチ線のレベル(マッチ線MATCH1,3,5のみがハイレベル)はラッチML0〜ML5に各々保持される。そして次の周期では、ラッチML1、ML3、ML5の出力が各々ハイレベルになると共に、ラッチPS0、PS2(即ちラッチML1、ML3の前段のラッチPS)の出力が各々ハイレベルとなるので、図6(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となる。
図6(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のみハイレベルを保持することになる。
続いて図6(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にそのまま保持される。
更に、図6(e)に示すように次の検索データとして「C」の文字データが入力されるとマッチ線MATCH5のみがハイレベルとなり、各マッチ線のレベルがラッチML0〜ML5に各々一旦保持された後に、信号生成回路64〜64に各々出力される。このときには、ラッチML5からのみハイレベルの信号が出力され、前段のラッチPS4からもハイレベルの信号が出力されるので、AND回路70〜70から出力される信号のうちAND回路70から出力される信号のみがハイレベルとなる。従って、OR回路78から出力されるフィードバック信号ORFB0はハイレベルで維持され、一致アドレスMADR0はPS1に対応するアドレス「1」となる。
このように、繰り返しデータ検索回路21は、1クロックで1文字の一致を検索でき、他の方法に比べ圧倒的に高速な文字列検索を可能にするものである。具体的には、1文字入力されるごとに、入力された文字をCAMセルアレイ26内の全ての文字と同時に比較できるので、高速な検索が可能となっている。
ここで、繰り返しデータ検索回路21において、パリティエラーが発生した場合について考える。
図7は、繰り返しデータ検索回路21による繰り返しデータ検索動作でパリティエラーが発生した場合について示したものである。
まず、CAMセルアレイ26に「IBMisIB」までの文字列が順次格納されたとする。また、CAMセルアレイ26には各文字に対応するパリティビット(「p」で表す)も格納されているとする。尚、図において、CAMセルアレイ26の左側に記載した数字は、CAMの各セル列のアドレスを示しており、ワード線WLN(マッチ線MATCHN、読出しパリティ線RPLN)のNの値に対応する。
この状態で、繰り返しデータ検索回路21は、続く文字列「IBMi」が書込みバッファ56に1文字ずつ入力されると、CAMセルアレイ26に格納された文字列と順次比較を行う。即ち、1文字目の「I」が書込みバッファ56に入力されると、アドレス0の文字データがこれと一致するので、マッチ線MATCH0をハイレベルの状態で維持する。また、2文字目の「B」が書込みバッファ56に入力されると、アドレス1の文字データがこれと一致するので、マッチ線MATCH1をハイレベルの状態で維持する。更に、3文字目の「M」が書込みバッファ56に入力されると、アドレス2の文字データがこれと一致するので、マッチ線MATCH2をハイレベルの状態で維持する。
その後、4文字目の「i」が書込みバッファ56に入力された時点で、マッチ線MATCH3はハイレベルの状態で維持されるものの、パリティエラーが検出されたとする(図中、「×」で示す)。その原因としては、例えば、本来別の文字であったものが、ノイズによるビットフリップ等により、文字「i」と同じビットの並びになってしまったことが考えられる。これにより、このときの文字「i」との一致は信頼できなくなる。つまり、CAMセルアレイ26のデータは信頼性が保証できなくなる。従って、これ以上処理することができなくなり、この時点で繰り返しデータ検索回路21の処理を中断する必要がある。
この場合、通常は、最初から全てをやり直すという方法が採られる。つまり、パリティエラーが起きたことをデータ供給元に伝え、再度データを最初から流してもらう。
このとき、ノイズ等により一時的にパリティエラーが発生したのであれば、再度データを流してもらうことにより、エラーを回復することが可能である。しかしながら、CAMセルアレイ26のビットの破損等により、一時的ではなく、恒久的にパリティエラーが発生する場合は、CAMセルアレイ26の故障であって、回復は不能となる。
このようにパリティエラーが発生した場合に最初からやり直す場合の構成について説明する。
図8は、この場合の繰り返しデータ検索装置20及びデータ圧縮コントローラ22の構成例(一部)を示した図である。
図示するように、繰り返しデータ検索装置20は、図2〜図6で述べた繰り返しデータ検索回路21を含む。また、データ圧縮コントローラ22は、繰り返しデータ検索回路21から出力された文字データ(文字コード)を保持するフリップフロップ90と、繰り返しデータ検索回路21から出力された一致アドレス(図2のMADR)を保持するフリップフロップ92と、繰り返しデータ検索回路21から文字列一致信号(図2のORFB)が連続して出力された回数をカウントするカウンタ94と、繰り返しデータ検索回路21から出力されたパリティエラー信号(図2のPE)を保持するフリップフロップ96とを含む。更に、データ圧縮コントローラ22は、カウンタ94のカウント結果に基づき、フリップフロップ90が保持する文字データ、及び、フリップフロップ92が保持する一致アドレスとカウンタ94のカウント結果のセットの何れかを選択して出力するセレクタ98も含む。
次に、この構成例における繰り返しデータ検索装置20及びデータ圧縮コントローラ22の動作について説明する。
まず、繰り返しデータ検索回路21に1バイト単位で文字データが入力される。尚、図には明記していないが、この文字データの入力元はデータ圧縮コントローラ22である。 繰り返しデータ検索回路21は、入力された文字データをCAMに順次書き込むと共に、それまでに書き込まれた全ての文字データと比較し、一致する文字データが存在すれば、文字列一致信号として「1」を出力する。但し、この文字列一致信号として、単に1文字が一致しただけでは「1」は出力せず、2文字以上連続して一致した場合に「1」を出力する。そして、文字列が一致している間は「1」を出力し続ける。つまり、文字列一致信号として、1クロック分「1」が出力され、すぐ次のクロックで「0」に落ちた場合、これは2文字一致を表す。また、文字列一致信号として、2クロック分「1」が出力され、次のクロックで「0」に落ちた場合、これは3文字一致を表す。以下同様に、Kクロック分「1」が出力され、次のクロックで「0」に落ちた場合、これはK+1文字の一致を表す。従って、データ圧縮コントローラ22は、文字列一致信号をカウンタ94によりカウントすることで、何文字一致したかを検出することができる。
また、繰り返しデータ検索回路21は、文字データの一致があったCAMのアドレスを一致アドレスとして出力し、フリップフロップ92がこれを保持する。
更に、繰り返しデータ検索回路21は、文字データの一致があってもなくても、入力された文字データを出力し、フリップフロップ90がこれを保持する。尚、この文字データは、文字データの一致がなかった場合に非圧縮のデータとして必要となるものである。
これにより、セレクタ98は、文字データの一致がなかった場合は、フリップフロップ90にて保持された文字データを出力し、文字データの一致があった場合は、フリップフロップ92にて保持された一致アドレス及びカウンタ94でカウントされた回数(文字データの連続一致数)を出力する。
但し、この構成例において、繰り返しデータ検索回路21内でパリティエラーが発生した場合、繰り返しデータ検索回路21はパリティエラー信号として「1」をデータ圧縮コントローラ22に出力する。これにより、データ圧縮コントローラ22は、文字列一致信号及び文字コードが信頼できないことを認識する。この場合は圧縮処理を継続することができないため、圧縮対象データを流し直すことになる。
そこで、本実施の形態では、繰り返しデータ検索回路21内でパリティエラーが発生した場合、繰り返しデータ検索回路21の処理を一旦中断しても、圧縮データの信頼性を確保できるようにする。
図9は、本実施の形態における繰り返しデータ検索装置20及びデータ圧縮コントローラ22の構成例(一部)を示した図である。
図示するように、繰り返しデータ検索装置20は、図8の構成に加え、フリップフロップ100、100、100、100を含む。また、データ圧縮コントローラ22は、図8のフリップフロップ90に代えて、フリップフロップ100から出力された文字データを保持するフリップフロップ102を含み、加えて、カウンタ94のカウント結果及びフリップフロップ96からのパリティエラー信号に基づいてセレクタ98に出力する信号を生成する信号生成回路104を含む。本実施の形態では、処理部の一例として、データ圧縮コントローラ22を設けている。
ところで、図において、圧縮データパスは、第1のパスの一例であり、繰り返しデータ検索回路21の検索結果による圧縮を行うためのパスである。一方、非圧縮データパスは、第2のパスの一例であり、入力された文字データをそのまま流すパスである。つまり、本実施の形態では、2つのパスを設けることで、繰り返しデータ検索装置20をリダンダントな構成としている。
次に、本実施の形態における繰り返しデータ検索装置20及びデータ圧縮コントローラ22の動作について説明する。
繰り返しデータ検索回路21が一致アドレス及び文字列一致信号を出力し、フリップフロップ92が一致アドレスを保持し、カウンタ94が連続一致回数をカウントするところまでは、図8と同様である。
但し、本実施の形態では、図8のように繰り返しデータ検索回路21内を通った文字データではなく、繰り返しデータ検索回路21の外に設けられたフリップフロップ100、100、100、100を通った文字データが、フリップフロップ102に保持される。
そして、繰り返しデータ検索回路21内でパリティエラーが発生し、繰り返しデータ検索回路21がパリティエラー信号を出力した場合、信号生成回路104は、非圧縮データパスのデータを選択することを指示する信号をセレクタ98に出力する。これにより、セレクタ98は、フリップフロップ102に保持された文字データを選択し、データ圧縮コントローラ22の処理部分に出力する。
一方、繰り返しデータ検索回路21内でパリティエラーが発生しておらず、繰り返しデータ検索回路21がパリティエラー信号を出力していない場合、信号生成回路104は、連続して一致した文字数が2以下であれば、非圧縮データパスのデータを選択することを指示する信号をセレクタ98に出力する。これにより、セレクタ98は、フリップフロップ102に保持された文字データを選択し、データ圧縮コントローラ22の処理部分に出力する。また、連続して一致した文字数が3以上であれば、圧縮データパスのデータを選択することを指示する信号をセレクタ98に出力する。これにより、セレクタ98は、フリップフロップ92に保持された文字データとカウンタ94のカウント結果とのセットを選択し、データ圧縮コントローラ22の処理部分に出力する。尚、連続して一致した文字数が2以下の場合に非圧縮データパスのデータを選択し、3以上の場合に圧縮データパスのデータを選択するようにしたのは、連続して一致した文字数が2以下の場合に一致文字列の位置と長さを用いて圧縮しても圧縮効果が得られないためである。
図7の例の場合、最初の「IBM」まではパリティエラーが発生していないので、繰り返しデータ検索回路21は正常に動作しており、セレクタ97は「IBM」の3文字が一致したとして(0,3)というデータを出力する。その後、パリティエラーが発生したため、セレクタ98は、4文字目として文字データ「i」をそのまま出力する。つまり、出力されるデータは、順に、(0,3)、「i」となる。
一方、繰り返しデータ検索回路21内でパリティエラーが発生していない場合は、「IBMi」まで4文字が一致したことになるので、セレクタ98は、(0,4)を出力する。
本実施の形態では、このような構成を採用したことにより、圧縮データパスでパリティエラーが発生したとしても、非圧縮データパスに元データが残っているため、データが消えてしまうことはない。従って、パリティエラーが発生した場合、圧縮されたデータは無効となるので、圧縮率は下がることになるが、処理が中断されることはなく、正しいデータが出力されるという効果がある。
尚、図9の圧縮データパスにある繰り返しデータ検索回路21は、文字データが1クロックごとに1文字(1バイト)ずつ入力され、入力された文字データが4段のパイプラインで処理される構成となっている。即ち、1クロック目で文字データがCAMセルアレイ26に書き込まれ、2クロック目で文字データの一致がラッチ62に保持され、3クロック目でその文字データの直前までの文字列の一致がラッチ66に保持され、4クロック目で一致アドレスがフリップフロップ92に保持される。そのため、一致アドレス及び文字列一致信号は、文字データが入力されてから4クロック後に出力されることになる。従って、非圧縮データパスも、フリップフロップ100、100、100、100という4段のパイプライン構成として、圧縮データパスと段数を合わせる必要がある。但し、この段数は、あくまで一例であり、圧縮データパスの段数がK段であれば、非圧縮データパスの段数もK段とする必要がある。
次に、本実施の形態におけるデータ圧縮コントローラ22の動作について説明する。
図10−1及び図10−2は、データ圧縮コントローラ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では、文字C0のデータが非圧縮データパスに渡されると共に、圧縮データパスに渡されて前述した検索動作が行われる。
次に、データ圧縮コントローラ22は、パリティエラー信号PEがハイレベルになったか否かを判定する(ステップ207)。パリティエラー信号PEがハイレベルになっており、判定が肯定された場合の処理は後述する。パリティエラー信号PEがローレベルになっており、判定が否定された場合、データ圧縮コントローラ22は、繰り返しデータ検索装置20から出力される文字列一致信号ORFBがハイレベルになったか否か判定する(ステップ208)。このときには、先のステップ200で各ラッチ62及び各ラッチ66をリセットしたことに伴って文字列一致信号ORFBはローレベルで維持されるので、判定が否定されてステップ210へ移行する。そこで、データ圧縮コントローラ22は、今回の比較動作が所定の元データに対する第1回目の比較動作であるか否か判定し(ステップ210)、判定が肯定された場合はステップ212で圧縮データの出力処理を行うことなくステップ214へ移行する。前述したように文字列一致信号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の圧縮データ出力処理が行われる。
図11に示すように、データ圧縮コントローラ22は、この圧縮データ出力処理で、一致長MLENが0か否か判定する(ステップ229)。前回のパリティエラー信号PEがハイレベルであった場合は、後述する処理によりそれまでの全てのデータが出力され一致長MLENが0になっているので、圧縮データとしてデータを出力することなく、図10−1のフローチャートのステップ214へ移行する。
ステップ229で判定が否定された場合、データ圧縮コントローラ22は、一致長MLENが2か否か判定する(ステップ230)。前回の比較結果は「一致」であるが、前々回の比較結果が「一致」でない場合は判定が肯定され、圧縮データとして、前々回検索文字C2のデータを出力し(ステップ236)、次いで前回検索文字C1のデータを出力し(ステップ238)、その後に図10−1のフローチャートのステップ214へ移行する。
ステップ230で判定が否定された場合、データ圧縮コントローラ22は、一致長MLENが1か否かを判定する(ステップ232)。前回の比較結果が「一致」でない場合は判定が肯定され、圧縮データとして前回検索文字C1のデータを出力し(ステップ238)、その後に図10−1のフローチャートのステップ214へ移行する。
ところで、図10−1のフローチャートにおいてステップ208の判定が肯定された場合には、一致長MLENをカウントアップし(ステップ216)、その後にステップ218へ移行する。従って、文字列一致信号ORFBがハイレベルとなっている間は圧縮データの出力は行われない。
また、前回の比較動作でハイレベルとなっていた文字列一致信号ORFBがローレベルに変化してステップ210の判定が否定された場合は、2文字以上の長さの繰り返し文字列の末尾が検出された場合であるので、ステップ212で圧縮データ出力処理が行われる。このときは、前回及び前々回の比較結果が共に「一致」であれば、先に説明したステップ216で一致長MLENがカウントアップされて3以上になっているので、ステップ229、ステップ230及びステップ232の判定が共に否定され、ステップ234へ移行する。
そこで、データ圧縮コントローラ22は、繰り返し文字列を圧縮するための圧縮コードを求める。本実施の形態では、繰り返し文字列と同一の文字列の位置を指し示すポインタを表す第1のコードと、繰り返し文字列の長さを表す第2のコードとで構成された圧縮コードを用いており、第1のコードとして一致アドレスMADRと一致長MLENとの差に1を加えた値(MADR−MLEN+1)を、第2のコードとして一致長MLENを各々設定し、出力する(ステップ234)。これにより、データ圧縮コントローラ22から出力される圧縮データの長さは、元データよりも短くなる。
尚、この圧縮コードを出力するにあたり、圧縮した文字列を復元する際に圧縮コードと文字データとを区別できるようにするために、データ圧縮コントローラ22は文字データと圧縮コードとの間に区切りを表すコードも挿入する。このように、繰り返し文字列が発見される毎にステップ234が実行され、発見された繰り返し文字列が圧縮コードに変換されて出力されることにより、元データの冗長性が取り除かれ、元データが圧縮データに圧縮されることになる。
また、図10−1のフローチャートのステップ207の判定が肯定された場合は、図10−2のフローチャートのステップ240へ移行し、この判定が否定されることによりステップ242の圧縮データ出力処理が行われる。この圧縮データ出力処理については、図11のフローチャートを参照して既に述べたので説明を省略する。
パリティエラー信号PEがハイレベルになった場合は、文字列一致信号ORFBが信頼できないので、この時点で、繰り返しデータ検索装置20の非圧縮データパス経由で得た文字C0を出力する(ステップ244)。そして、一致長MLENに「0」を代入して(ステップ246)、図10−1のフローチャートのステップ218へ移行し、その後は上記処理を継続する。
上述の処理を繰り返し、元データからの文字Cのデータの取り出し位置が元データの末尾に到達するとステップ204の判定が肯定され、データ圧縮コントローラ22は、圧縮データ出力処理を再び行う(ステップ224)。このとき、一致長MLENの値が3以上であれば、ステップ234で圧縮コードの出力が行われるが、一致長MLENの値が2の場合には、ステップ236及びステップ238で圧縮データとして前々回検索文字C2のデータ及び前回検索文字C1のデータを、一致長MLENの値が1の場合には、ステップ238で圧縮データとして前回検索文字C1のデータを、それぞれ出力し、処理を終了する。
尚、この動作例では、圧縮コードのうち第1のコードとして、繰り返し文字列と同一の文字列の位置を指し示すポインタを用いたが、前述した例に従い、繰り返し文字列と同一の文字列の位置と繰り返し文字列の位置との距離を用いてもよい。この場合、WADRから上記繰り返し文字列と同一の文字列の位置を減算して得られた値を第1のコードとすればよい。
以上、本発明の実施の形態について説明した。
このように、本実施の形態では、繰り返しデータ検索装置20内に、入力された文字データをそのまま流す非圧縮データパスと、入力された文字データに連続して一致するCAM内の文字列の位置及び長さを出力する圧縮データパスとを設け、CAMにパリティエラーが発生すると、非圧縮データパスからの文字データを用いるようにした。これにより、CAM内の文字データにパリティエラーが発生しても、文字データを用いた処理を中断することなく継続できるようになる。
また、パリティエラーが発生するケースをまとめると、以下のようになる。
・ケース1:一時的な場合
これは、宇宙線、ノイズ等の影響で偶発的に一度だけ起きる場合である。この場合は、再度データを読み出せば、エラーは発生しない。
・ケース2:セルが故障した場合
通常、CAM等のメモリセルは、工場出荷時にテストされているので、最初から壊れて出荷されることは殆どない。従って、動作中に故障した場合がこれにあたる。
本実施の形態は、ケース1、ケース2の両方において有効である。
ケース1は、一時的なものなので、一時的に圧縮率が下がるだけである。ケース2は、故障したセルがヒットしたときは常に圧縮率が下がることになる。しかしながら、本実施の形態によれば、何れの場合も、データ自体が壊れるわけではないので、問題にはならない。
尚、本実施の形態では、文字列のある部分を別の部分の位置及び長さの情報で置換することにより文字列を圧縮することを前提にしたが、文字列のある部分を別の部分の位置に基づいて処理することを前提にしてもよい。その場合、圧縮データパスを、CAMセルアレイ26の文字データが入力される部分からその文字データに一致する文字データのアドレスが出力される部分までのパスとし、非圧縮データパスを、圧縮データパスからアドレスが出力されるのと同期して文字データを出力するようなパイプライン構成を有するパスとしてもよい。
また、本実施の形態では、パリティビットをCAMセルアレイ26に記憶したが、CAMセルアレイ26以外の別のメモリに記憶してもよい。また、CAMセルアレイ26に記憶されたデータに発生する誤りとして、パリティエラーを挙げたが、パリティエラー以外の誤りが発生する場合であっても本発明は同様に適用可能である。
以上、本発明を実施の形態を用いて説明したが、本発明の技術的範囲は上記実施の形態には限定されない。本発明の精神及び範囲から逸脱することなく様々に変更したり代替態様を採用したりすることが可能なことは、当業者に明らかである。
20…繰り返しデータ検索装置、21…繰り返しデータ検索回路、22…データ圧縮コントローラ、24…パリティメモリセル、26…CAMセルアレイ、28…CAMセル、52…アドレスデコーダ、54…パリティ生成器、60…比較結果制御回路、64…信号生成回路、74…第1プライオリティエンコーダ、76…第2プライオリティエンコーダ、90,92,96,100,102…フリップフロップ、94…カウンタ、98…セレクタ

Claims (7)

  1. データ要素列の第1の部分データ要素列を、当該データ要素列の第2の部分データ要素列の位置に基づいて処理する装置であって、
    前記データ要素列各データ要素と当該各データ要素に対応するパリティ要素とを、当該データ要素列における当該各データ要素の位置に応じたアドレスに記憶し、検索データ要素が与えられた場合に、それまでに与えられた検索データ要素の列を記憶していれば、当該検索データ要素の列を記憶しているアドレスを示す列アドレス信号を出力し、当該検索データ要素に対応する当該パリティ要素の値が当該検索データ要素から生成されなければ、パリティエラー信号を前記列アドレス信号とは別に出力する検索回路と、
    入力されたデータ要素を前記検索データ要素として前記検索回路に与え、当該検索回路から出力された前記列アドレス信号を出力する第1のパスと、
    入力されたデータ要素を前記検索データ要素として前記検索回路に与えることなく出力する第2のパスと、
    前記第1の部分データ要素列に含まれる特定のデータ要素の入力に応じて、前記第1のパスが当該特定のデータ要素を前記検索データ要素として前記検索回路に与えた場合に、当該検索回路から前記パリティエラー信号が出力されなければ、前記第1のパスから出力された前記列アドレス信号に応じて決まる前記第2の部分データ要素列の位置を用いて当該第1の部分データ要素列を処理し、当該検索回路から前記パリティエラー信号が出力されれば、前記第2のパスから出力された当該特定のデータ要素を用いて当該第1の部分データ要素列を処理する処理部と
    を含む、装置。
  2. 前記第2のパスは、前記第1のパスから前記列アドレス信号が出力されるのと同期して前記データ要素を出力するようなパイプライン構成を有する、請求項1の装置。
  3. データ要素列の第1の部分データ要素列を、当該データ要素列の第2の部分データ要素列の位置及び長さの情報で置換することにより、当該データ要素列を圧縮する装置であって、
    前記データ要素列各データ要素と当該各データ要素に対応するパリティ要素とを、当該データ要素列における当該各データ要素の位置に応じたアドレスに記憶し、検索データ要素が与えられた場合に、各アドレスに記憶しているデータ要素が当該検索データ要素に一致していればデータ一致信号を出力し、各アドレスに記憶しているパリティ要素の値を示すパリティ信号を出力する連想メモリと、
    前記検索データ要素が前記連想メモリに与えられた場合に、それまでに与えられた検索データ要素の列当該連想メモリに記憶されていれば、当該連想メモリから出力される前記データ一致信号に基づいて、当該検索データ要素の列が記憶されていることを示す列存在信号と、当該検索データ要素の列が記憶されているアドレスを示す列アドレス信号とを生成する第1の生成回路と、
    前記検索データ要素が前記連想メモリに与えられた場合に、当該連想メモリから出力される前記パリティ信号により示される当該検索データ要素に対応する前記パリティ要素の値が当該検索データ要素から生成されなければ、パリティエラー信号を前記列存在信号及び前記列アドレス信号とは別に生成する第2の生成回路と、
    入力されたデータ要素を前記検索データ要素として前記連想メモリに与え、前記第1の生成回路により生成された前記列存在信号と前記列アドレス信号とを出力する第1のパスと、
    入力されたデータ要素を前記検索データ要素として前記連想メモリに与えることなく出力する第2のパスと、
    前記第1の部分データ要素列に含まれる特定のデータ要素の入力に応じて、前記第1のパスが当該特定のデータ要素を前記検索データ要素として前記連想メモリに与えた場合に、前記第2の生成回路により前記パリティエラー信号が生成されていないことを1つの条件として、当該第1の部分データ要素列を、前記第1のパスからの当該列存在信号の連続出力回数と前記第1のパスから出力された前記列アドレス信号とに応じて決まる前記第2の部分データ要素列の位置及び長さの情報で置換する処理を行い、前記第2の生成回路により前記パリティエラー信号が生成されていれば、前記第2のパスから出力された当該特定のデータ要素を用いて、当該第1の部分データ要素列を部分的に非圧縮とする処理を行う処理部と
    を含む、装置。
  4. 前記処理部は、前記第1のパスが前記特定のデータ要素を前記検索データ要素として前記連想メモリに与えた場合に、前記1つの条件に加え、前記第1のパスからの前記列存在信号の連続出力回数が所定数を超えたことを更に1つの条件として、当該連続出力回数と前記第1のパスから出力された前記列アドレス信号とに応じて決まる前記第2の部分データ要素列の位置及び長さの情報で置換する処理を行う、請求項3の装置。
  5. 前記処理部は、前記第1のパスが前記特定のデータ要素を前記検索データ要素として前記連想メモリに与えた場合に、前記第1のパスからの前記列存在信号の連続出力回数が所定数を超えなかったならば、前記第2のパスから出力された当該特定のデータ要素を用いて、当該第1の部分データ要素列を部分的に非圧縮とする処理を行う、請求項3又は請求項4の装置。
  6. 前記第2のパスは、前記第1のパスから前記列存在信号と前記列アドレス信号とが出力されるのと同期して前記データ要素を出力するようなパイプライン構成を有する、請求項3乃至請求項5の何れかの装置。
  7. データ要素列の第1の部分データ要素列を、当該データ要素列の第2の部分データ要素列の位置に基づいて処理する方法であって、
    前記データ要素列各データ要素と当該各データ要素に対応するパリティ要素とを、当該データ要素列における当該各データ要素の位置に応じたアドレスに記憶し、検索データ要素が与えられた場合に、それまでに与えられた検索データ要素の列を記憶していれば、当該検索データ要素の列を記憶しているアドレスを示す列アドレス信号を出力し、当該検索データ要素に対応する当該パリティ要素の値が当該検索データ要素から生成されなければ、パリティエラー信号を前記列アドレス信号とは別に出力する検索回路と、
    入力されたデータ要素を前記検索データ要素として前記検索回路に与え、当該検索回路から出力された前記列アドレス信号を出力する第1のパスと、
    入力されたデータ要素を前記検索データ要素として前記検索回路に与えることなく出力する第2のパスと
    を含み、
    前記第1の部分データ要素列に含まれる特定のデータ要素の入力に応じて、前記第1のパスが当該特定のデータ要素を前記検索データ要素として前記検索回路に与えた場合に、当該検索回路から前記パリティエラー信号が出力されているかどうかを判定するステップと、
    前記パリティエラー信号が出力されていないと判定されれば、前記第1のパスから出力された前記列アドレス信号に応じて決まる前記第2の部分データ要素列の位置を用いて前記第1の部分データ要素列を処理し、前記パリティエラー信号が出力されていると判定されれば、前記第2のパスから出力された当該特定のデータ要素を用いて前記第1の部分データ要素列を処理するステップと
    を含む、方法。
JP2012550757A 2010-12-28 2011-10-04 データ要素列を処理する装置及び方法 Active JP5520390B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2012550757A JP5520390B2 (ja) 2010-12-28 2011-10-04 データ要素列を処理する装置及び方法

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
JP2010293933 2010-12-28
JP2010293933 2010-12-28
JP2012550757A JP5520390B2 (ja) 2010-12-28 2011-10-04 データ要素列を処理する装置及び方法
PCT/JP2011/072891 WO2012090564A1 (ja) 2010-12-28 2011-10-04 データ要素列を処理する装置及び方法

Publications (2)

Publication Number Publication Date
JPWO2012090564A1 JPWO2012090564A1 (ja) 2014-06-05
JP5520390B2 true JP5520390B2 (ja) 2014-06-11

Family

ID=46382688

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012550757A Active JP5520390B2 (ja) 2010-12-28 2011-10-04 データ要素列を処理する装置及び方法

Country Status (6)

Country Link
US (1) US9043676B2 (ja)
JP (1) JP5520390B2 (ja)
CN (1) CN103283149B (ja)
DE (1) DE112011104620T5 (ja)
GB (1) GB2500524A (ja)
WO (1) WO2012090564A1 (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9372887B2 (en) 2010-12-28 2016-06-21 International Business Machines Corporation Compression ratio improvement by lazy match evaluation on the string search CAM
CN103840835A (zh) * 2012-11-26 2014-06-04 艺伦半导体技术股份有限公司 一种数据解压缩方法及装置
JP6834335B2 (ja) * 2016-10-17 2021-02-24 Tdk株式会社 不揮発性連想メモリ
JP2019008845A (ja) * 2017-06-22 2019-01-17 ルネサスエレクトロニクス株式会社 半導体装置
US11573834B2 (en) * 2019-08-22 2023-02-07 Micron Technology, Inc. Computational partition for a multi-threaded, self-scheduling reconfigurable computing fabric
WO2023210643A1 (ja) * 2022-04-26 2023-11-02 克己 井上 全文検索プロセッサ
JP7475078B2 (ja) * 2022-04-26 2024-04-26 克己 井上 全文検索プロセッサ

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63177242A (ja) * 1987-01-19 1988-07-21 Hitachi Ltd 連想メモリのパリテイチエツク方法
JPH05252047A (ja) * 1992-03-04 1993-09-28 Fujitsu Ltd データ圧縮・復元処理における誤り制御処理方式
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> データ圧縮用検索装置
JP2010268146A (ja) * 2009-05-13 2010-11-25 Internatl Business Mach Corp <Ibm> データが記憶された位置を選択する装置及び方法

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4558302A (en) * 1983-06-20 1985-12-10 Sperry Corporation High speed data compression and decompression apparatus and method
JPS6488827A (en) * 1987-09-30 1989-04-03 Matsushita Electric Ind Co Ltd Data processor
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 インターナショナル・ビジネス・マシーンズ・コーポレ−ション 連想メモリの制御回路及び連想メモリ装置
JP3129248B2 (ja) * 1997-07-18 2001-01-29 日本電気株式会社 2次元配列コードを用いた文字列検索方法
GB0001707D0 (en) * 2000-01-25 2000-03-15 Btg Int Ltd Data compression having more effective compression
US20040022312A1 (en) 2002-07-31 2004-02-05 Jones Simon R. Lossless data compression
JP2005175940A (ja) 2003-12-11 2005-06-30 Matsushita Electric Ind Co Ltd データ圧縮装置
JP4983526B2 (ja) * 2007-10-15 2012-07-25 富士ゼロックス株式会社 データ処理装置及びデータ処理プログラム
EP2357654B1 (en) 2008-10-28 2015-11-25 International Business Machines Corporation Parallel content addressable memory

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63177242A (ja) * 1987-01-19 1988-07-21 Hitachi Ltd 連想メモリのパリテイチエツク方法
JPH05252047A (ja) * 1992-03-04 1993-09-28 Fujitsu Ltd データ圧縮・復元処理における誤り制御処理方式
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> データ圧縮用検索装置
JP2010268146A (ja) * 2009-05-13 2010-11-25 Internatl Business Mach Corp <Ibm> データが記憶された位置を選択する装置及び方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
JPN7013004331; 宮武久忠: '検索時パリティチェック機能を有する高速並列型連想メモリ' PROVISION 第67号, 201011, pp.87-93 *

Also Published As

Publication number Publication date
CN103283149A (zh) 2013-09-04
WO2012090564A1 (ja) 2012-07-05
GB2500524A (en) 2013-09-25
CN103283149B (zh) 2016-05-11
JPWO2012090564A1 (ja) 2014-06-05
US20130283135A1 (en) 2013-10-24
DE112011104620T5 (de) 2013-10-02
GB201310822D0 (en) 2013-07-31
US9043676B2 (en) 2015-05-26

Similar Documents

Publication Publication Date Title
JP5520390B2 (ja) データ要素列を処理する装置及び方法
KR101750662B1 (ko) 데이터 에러 교정용 회로, 장치, 및 방법
US11120867B2 (en) Hardware compression with search string matching
US7408824B2 (en) Ferroelectric memory with spare memory cell array and ECC circuit
TW201913686A (zh) 錯誤檢查糾正解碼方法與裝置
JP2008130221A (ja) 半導体メモリ装置及びその装置のリダンダンシ方法
TW202006544A (zh) 利用錯誤更正碼進行資料位元錯誤的偵測與更正
KR20170112630A (ko) 반도체장치 및 반도체시스템
US8677079B2 (en) Selecting a position where data is stored
US20150052413A1 (en) Decoding of ldpc code
US20170186500A1 (en) Memory circuit defect correction
KR20200033688A (ko) 에러 정정 회로 및 이의 동작 방법
JP2009271852A (ja) 半導体記憶装置
JP5284069B2 (ja) メモリシステム及びメモリアクセス方法
WO2014109107A1 (ja) 不揮発性半導体記憶装置及びそのテスト方法
US20220223220A1 (en) Memory device and methof for error detection
US20180122494A1 (en) Raid decoding architecture with reduced bandwidth
US20090319867A1 (en) Memory system and memory access method
JP2021141369A (ja) メモリシステム
JP2020150515A (ja) 誤り訂正回路及びメモリシステム
KR102085690B1 (ko) 오류 정정 기능을 구비한 플래시 메모리 저장 장치 및 그 구동 방법
TWI723515B (zh) 記憶體裝置及其資料存取方法
JP2023032889A (ja) 半導体装置
CN112540866A (zh) 存储器装置及其数据存取方法
JP2013191227A (ja) メモリアクセス装置

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

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

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

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150