(57)【要約】ＣＡＭに記憶されたデータに誤りが発生していなければＣＡＭを用いて行う処理を、ＣＡＭに記憶されたデータに誤りが発生しても継続できるようにする。入力された文字コードは圧縮データパスと非圧縮データパスとに供給される。圧縮データパスでは、繰り返しデータ検索回路２１が、ＣＡＭ内の文字列の一致アドレスと、ＣＡＭ内の文字列の一致を示す文字列一致信号とを出力する。一方、非圧縮データパスでは、フリップフロップ１００１〜１００４が文字コードをそのまま流す。セレクタ９８は、繰り返しデータ検索回路２１からパリティエラー信号が出力されておらず、文字列一致信号の連続出力回数が３以上である場合、圧縮データパスからの一致アドレスと文字列一致信号の連続出力回数とを出力し、それ以外は、非圧縮データパスからの文字コードを出力する。
2012090564.tif 000002
【特許請求の範囲】
【請求項１】
データ要素列の第１の部分データ要素列を、当該データ要素列の第２の部分データ要素列の位置に基づいて処理する装置であって、
前記データ要素列の少なくとも一部を構成する複数のデータ要素の各データ要素を、当該データ要素列における当該各データ要素の位置に応じたアドレスに記憶し、検索データ要素が与えられた場合に、当該検索データ要素に一致する一致データ要素を当該複数のデータ要素の１つとして記憶していれば、当該一致データ要素が記憶されているアドレスを出力する連想メモリと、
入力されたデータ要素を前記検索データ要素として前記連想メモリに与え、当該連想メモリから出力された前記アドレスを出力する第１のパスと、
入力されたデータ要素を前記検索データ要素として前記連想メモリに与えることなく出力する第２のパスと、
前記第１の部分データ要素列に含まれる特定のデータ要素の入力に応じて、前記第１のパスが当該特定のデータ要素を前記検索データ要素として前記連想メモリに与えた場合に、当該検索データ要素に一致する一致データ要素に誤りが発生していなければ、前記第１のパスから出力された前記アドレスに応じて決まる前記第２の部分データ要素列の位置を用いて当該第１の部分データ要素列を処理し、当該検索データ要素に一致する一致データ要素に誤りが発生していれば、前記第２のパスから出力された当該特定のデータ要素を用いて当該第１の部分データ要素列を処理する処理部と
を含む、装置。
【請求項２】
前記第２のパスは、前記第１のパスから前記アドレスが出力されるのと同期して前記データ要素を出力するようなパイプライン構成を有する、請求項１の装置。
【請求項３】
データ要素列の第１の部分データ要素列を、当該データ要素列の第２の部分データ要素列の位置及び長さの情報で置換することにより、当該データ要素列を圧縮する装置であって、
前記データ要素列の少なくとも一部を構成する複数のデータ要素の各データ要素を、当該データ要素列における当該各データ要素の位置に応じたアドレスに記憶し、検索データ要素が与えられた場合に、当該検索データ要素に一致する一致データ要素を当該複数のデータ要素の１つとして記憶していれば、当該一致データ要素が記憶されているアドレスを出力する連想メモリと、
前記検索データ要素が前記連想メモリに与えられた場合に、それまでに与えられた検索データ要素の列に一致する一致データ要素の列が当該連想メモリに記憶されていれば、当該連想メモリから出力される前記アドレスに基づいて、当該一致データ要素の列が記憶されていることを示す列存在情報と、当該一致データ要素の列が記憶されているアドレスを示す列アドレス情報とを生成する生成回路と、
入力されたデータ要素を前記検索データ要素として前記連想メモリに与え、前記生成回路により生成された前記列存在情報と前記列アドレス情報とを出力する第１のパスと、
入力されたデータ要素を前記検索データ要素として前記連想メモリに与えることなく出力する第２のパスと、
前記第１の部分データ要素列に含まれる特定のデータ要素の入力に応じて、前記第１のパスが当該特定のデータ要素を前記検索データ要素として前記連想メモリに与えた場合に、当該検索データ要素に一致する一致データ要素に誤りが発生していないことを１つの条件として、当該第１の部分データ要素列を、前記第１のパスからの当該列存在情報の連続出力回数と前記第１のパスから出力された前記列アドレス情報とに応じて決まる前記第２の部分データ要素列の位置及び長さの情報で置換する処理を行い、当該検索データ要素に一致する一致データ要素に誤りが発生していれば、前記第２のパスから出力された当該特定のデータ要素を用いて、当該第１の部分データ要素列を部分的に非圧縮とする処理を行う処理部と
を含む、装置。
【請求項４】
前記処理部は、前記第１のパスが前記特定のデータ要素を前記検索データ要素として前記連想メモリに与えた場合に、前記１つの条件に加え、前記第１のパスからの前記列存在情報の連続出力回数が所定数を超えたことを更に１つの条件として、当該連続出力回数と前記第１のパスから出力された前記列アドレス情報とに応じて決まる前記第２の部分データ要素列の位置及び長さの情報で置換する処理を行う、請求項３の装置。
【請求項５】
前記処理部は、前記第１のパスが前記特定のデータ要素を前記検索データ要素として前記連想メモリに与えた場合に、前記第１のパスからの前記列存在情報の連続出力回数が所定数を超えなかったならば、前記第２のパスから出力された当該特定のデータ要素を用いて、当該第１の部分データ要素列を部分的に非圧縮とする処理を行う、請求項３又は請求項４の装置。
【請求項６】
前記第２のパスは、前記第１のパスから前記列存在情報と前記列アドレス情報とが出力されるのと同期して前記データ要素を出力するようなパイプライン構成を有する、請求項３乃至請求項５の何れかの装置。
【請求項７】
データ要素列の第１の部分データ要素列を、当該データ要素列の第２の部分データ要素列の位置及び長さの情報で置換することにより、当該データ要素列を圧縮する装置であって、
前記データ要素列の少なくとも一部を構成する複数のデータ要素の各データ要素と当該各データ要素に対応するパリティ要素とを、当該データ要素列における当該各データ要素の位置に応じたアドレスに記憶し、検索データ要素が与えられた場合に、当該検索データ要素に一致する一致データ要素を当該複数のデータ要素の１つとして記憶していれば、当該一致データ要素が記憶されているアドレスを出力する連想メモリと、
前記検索データ要素が前記連想メモリに与えられた場合に、それまでに与えられた検索データ要素の列に一致する一致データ要素の列が当該連想メモリに記憶されていれば、当該連想メモリから出力される前記アドレスに基づいて、当該一致データ要素の列が記憶されていることを示す列存在情報と、当該一致データ要素の列が記憶されているアドレスを示す列アドレス情報とを生成する生成回路と、
前記検索データ要素が前記連想メモリに与えられた場合に、当該検索データ要素に一致する一致データ要素が前記連想メモリに記憶されていれば、当該一致データ要素が記憶されているアドレスに記憶された前記パリティ要素の値が、当該検索データ要素から生成されるかどうかを判定する判定回路と、
入力されたデータ要素を前記検索データ要素として前記連想メモリに与え、前記生成回路により生成された前記列存在情報と前記列アドレス情報とを出力する第１のパスと、
入力されたデータ要素を前記検索データ要素として前記連想メモリに与えることなく出力する第２のパスと、
前記第１の部分データ要素列に含まれる特定のデータ要素の入力に応じて、前記第１のパスが当該特定のデータ要素を前記検索データ要素として前記連想メモリに与えた場合に、前記判定回路により前記パリティ要素の値が生成されると判定されたという条件、及び、前記第１のパスからの前記列存在情報の連続出力回数が所定数を超えたという条件の両方が満たされれば、当該第１の部分データ要素列を、当該連続出力回数と前記第１のパスから出力された前記列アドレス情報とに応じて決まる前記第２の部分データ要素列の位置及び長さの情報で置換する処理を行い、前記判定回路により前記パリティ要素の値が生成されないと判定されたという条件、及び、前記第１のパスからの前記列存在情報の連続出力回数が前記所定数を超えなかったという条件の少なくともいずれか一方が満たされれば、前記第２のパスから出力された当該特定のデータ要素を用いて、当該第１の部分データ要素列の当該特定のデータ要素の部分を非圧縮とする処理を行う処理部と
を含む、装置。
【請求項８】
データ要素列の第１の部分データ要素列を、当該データ要素列の第２の部分データ要素列の位置に基づいて処理する方法であって、
前記データ要素列の少なくとも一部を構成する複数のデータ要素の各データ要素を、当該データ要素列における当該各データ要素の位置に応じたアドレスに記憶し、検索データ要素が与えられた場合に、当該検索データ要素に一致する一致データ要素を当該複数のデータ要素の１つとして記憶していれば、当該一致データ要素が記憶されているアドレスを出力する連想メモリと、
入力されたデータ要素を前記検索データ要素として前記連想メモリに与え、当該連想メモリから出力された前記アドレスを出力する第１のパスと、
入力されたデータ要素を前記検索データ要素として前記連想メモリに与えることなく出力する第２のパスと
を含み、
前記第１の部分データ要素列に含まれる特定のデータ要素の入力に応じて、前記第１のパスが当該特定のデータ要素を前記検索データ要素として前記連想メモリに与えた場合に、当該検索データ要素に一致する一致データ要素に誤りが発生しているかどうかを判定するステップと、
前記一致データ要素に誤りが発生していないと判定されれば、前記第１のパスから出力された前記アドレスを用いて前記第１の部分データ要素列を処理し、前記一致データ要素に誤りが発生していると判定されれば、前記第２のパスから出力された当該特定のデータ要素を用いて前記第１の部分データ要素列を処理するステップと
を含む、方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ要素列を処理する装置及び方法に関する。特に、本発明は、データ要素列の第１の部分データ要素列を第２の部分データ要素列の位置に基づいて処理する装置及び方法に関する。
【背景技術】
【０００２】
ｄｅｆｌａｔｅ圧縮（ＲＦＣ１９５１）は、現在コンピュータで広く用いられているデータ圧縮形式であるＺＬＩＢ（ＲＦＣ１９５０）、ＧＺＩＰ（ＲＦＣ１９５２）のベースとなる圧縮方法であり、ＬＺ７７符号化を用いている。ＬＺ７７符号化では、データ中の文字列の繰り返し部分を検索し、その文字列を繰り返し部分の位置及び長さで置き換えることによってデータを圧縮する。例えば、「ＩＢＭ  ｉｓ  ＩＢＭ」という文字列をＬＺ７７符号化する場合、２つ目の「ＩＢＭ」は繰り返しであるため、この部分が圧縮される。具体的には、「７文字前から３文字長が繰り返される」ということを表す「７，３」のような符号に置き換えられて圧縮される。この場合、繰り返し部分の文字長が長いほど圧縮率は高くなる。【０００３】
ここで、ｄｅｆｌａｔｅ圧縮の仕様では、文字列の繰り返し部分の検索をその文字列から最大３２Ｋバイト前までのデータに対して行うことになっており、文字列の繰り返し部分の検索に膨大な文字列比較処理が必要となる。
従って、これをソフトウェアで行おうとすると、処理に時間がかかってしまう。ソフトウェアでは、通常、ハッシュ法により、検索時間の短縮を図ることになる。しかしながら、ハッシュ法では、同じハッシュ値を持つ文字列が多い場合、その一部が捨てられてしまうことがある。つまり、全ての文字列を完全に検索することは、処理時間とバッファ容量を考慮すると難しいという問題があった。【０００４】
そこで、本出願人は、ハードウェアで全ての文字列を完全に検索できる方法を提案している（例えば、特許文献１〜３参照）。しかも、この方法では、文字列の検索を極めて高速に行うことができる。【０００５】
特許文献１では、連想メモリセル列に順に記憶された被検索文字列(BABCABB…)に対して検索文字列(ABCA)を検索する場合、最初の文字(A)との比較動作は全てのセル列で行い、次の文字(B)との比較動作は前回一致したセル列と隣り合うアドレス(2),(5)のセル列のみで行い、次の文字(C)との比較動作は同様にアドレス(3),(6)のセル列のみで行い、最後の文字(A)との比較動作は同様にアドレス(4)のセル列のみで行うことにより、短時間で検索処理が終了するようにしている。【０００６】
特許文献２では、マッチ線のスイッチング素子を挟んで接地端の反対側の部分と電源との間に第１のスイッチング手段を設け、第１のスイッチング手段を、連想メモリが比較結果に応じてスイッチング素子をオン又はオフしている期間又は比較前の準備期間内の一部の期間オンさせることにより、貫通電流が流れている期間を短くし、消費電力を低減している。【０００７】
特許文献３では、書込みバッファの検索文字とＣＡＭの各セル列に記憶されている文字データとの比較結果を第１ラッチ、第２ラッチに順次保持し、信号生成回路が、入力信号がローであれば第１ラッチの出力と前段の第３ラッチの出力とのＡＮＤを、入力信号がハイであれば第１ラッチの出力と前段の第２ラッチの出力とのＡＮＤを、第３ラッチを介してプライオリティエンコーダに出力すると共にＯＲ回路に出力し、第１及び第２プライオリティエンコーダが、入力信号のＯＲを出力し、ＯＲ回路から出力された信号が第４ラッチ及び別のＯＲ回路を経由して各信号生成回路に入力されるようにすることにより、クロックの１周期で信号が通過すべき経路の長さを半分にして高速化している。【０００８】
ところで、これらの文字列検索方法では、文字を構成する個々のビットを連想メモリ（ＣＡＭ）のメモリセルに保持している。このようなメモリセルには、高密度に実装されればされるほど、宇宙線等の影響により、ソフトエラーと呼ばれるエラーが起こる場合があるという宿命がある。通常のメモリでは、信頼性をあげるために、パリティチェック等のエラー検出回路を設けることがあるので、本出願人は、ＣＡＭについても、パリティビットを別途設け、パリティエラー検出を行うことを提案している（例えば、特許文献４参照）。【０００９】
ＣＡＭのメモリセルにエラーが発生すると、その時点で処理が中断するため、それを避けるためには、本来は、ＥＣＣ等のエラー訂正回路を内蔵するほうがよい。しかしながら、ＣＡＭでは、バイトごとにＥＣＣ回路を内蔵する必要があり、回路規模が大きくなり過ぎるため、特許文献４では、パリティチェック回路だけを内蔵している。また、このパリティチェック回路に関しても、普通に内蔵すると回路規模が大きくなるため、回路規模を最小に抑える工夫を行っている。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開平７−１１４５７７号公報
【特許文献２】特開平８−１４７９８６号公報
【特許文献３】特開平８−２４２１７６号公報
【特許文献４】国際公開２０１０／０５０２８２号パンフレット
【発明の概要】
【発明が解決しようとする課題】
【００１１】
例えば特許文献４に記載したようなＣＡＭにおいて、あるパケットの圧縮中にパリティエラーが発生したとしても、そのパケットの処理を継続できることが望まれる。そして、このことは、一般に、ＣＡＭを用いた処理を行うに当たって、ＣＡＭに記憶されたデータに誤りが発生した場合にも望まれることである。【００１２】
本発明の目的は、ＣＡＭに記憶されたデータに誤りが発生していなければＣＡＭを用いて行う処理を、ＣＡＭに記憶されたデータに誤りが発生しても継続できるようにすることにある。
【課題を解決するための手段】
【００１３】
かかる目的のもと、本発明は、データ要素列の第１の部分データ要素列を、データ要素列の第２の部分データ要素列の位置に基づいて処理する装置であって、データ要素列の少なくとも一部を構成する複数のデータ要素の各データ要素を、データ要素列における各データ要素の位置に応じたアドレスに記憶し、検索データ要素が与えられた場合に、検索データ要素に一致する一致データ要素を複数のデータ要素の１つとして記憶していれば、一致データ要素が記憶されているアドレスを出力する連想メモリと、入力されたデータ要素を検索データ要素として連想メモリに与え、連想メモリから出力されたアドレスを出力する第１のパスと、入力されたデータ要素を検索データ要素として連想メモリに与えることなく出力する第２のパスと、第１の部分データ要素列に含まれる特定のデータ要素の入力に応じて、第１のパスが特定のデータ要素を検索データ要素として連想メモリに与えた場合に、検索データ要素に一致する一致データ要素に誤りが発生していなければ、第１のパスから出力されたアドレスに応じて決まる第２の部分データ要素列の位置を用いて第１の部分データ要素列を処理し、検索データ要素に一致する一致データ要素に誤りが発生していれば、第２のパスから出力された特定のデータ要素を用いて第１の部分データ要素列を処理する処理部とを含む、装置を提供する。【００１４】
ここで、第２のパスは、第１のパスからアドレスが出力されるのと同期してデータ要素を出力するようなパイプライン構成を有する、ものであってよい。【００１５】
また、本発明は、データ要素列の第１の部分データ要素列を、データ要素列の第２の部分データ要素列の位置及び長さの情報で置換することにより、データ要素列を圧縮する装置であって、データ要素列の少なくとも一部を構成する複数のデータ要素の各データ要素を、データ要素列における各データ要素の位置に応じたアドレスに記憶し、検索データ要素が与えられた場合に、検索データ要素に一致する一致データ要素を複数のデータ要素の１つとして記憶していれば、一致データ要素が記憶されているアドレスを出力する連想メモリと、検索データ要素が連想メモリに与えられた場合に、それまでに与えられた検索データ要素の列に一致する一致データ要素の列が連想メモリに記憶されていれば、連想メモリから出力されるアドレスに基づいて、一致データ要素の列が記憶されていることを示す列存在情報と、一致データ要素の列が記憶されているアドレスを示す列アドレス情報とを生成する生成回路と、入力されたデータ要素を検索データ要素として連想メモリに与え、生成回路により生成された列存在情報と列アドレス情報とを出力する第１のパスと、入力されたデータ要素を検索データ要素として連想メモリに与えることなく出力する第２のパスと、第１の部分データ要素列に含まれる特定のデータ要素の入力に応じて、第１のパスが特定のデータ要素を検索データ要素として連想メモリに与えた場合に、検索データ要素に一致する一致データ要素に誤りが発生していないことを１つの条件として、第１の部分データ要素列を、第１のパスからの列存在情報の連続出力回数と第１のパスから出力された列アドレス情報とに応じて決まる第２の部分データ要素列の位置及び長さの情報で置換する処理を行い、検索データ要素に一致する一致データ要素に誤りが発生していれば、第２のパスから出力された特定のデータ要素を用いて、第１の部分データ要素列を部分的に非圧縮とする処理を行う処理部とを含む、装置も提供する。【００１６】
ここで、処理部は、第１のパスが特定のデータ要素を検索データ要素として連想メモリに与えた場合に、１つの条件に加え、第１のパスからの列存在情報の連続出力回数が所定数を超えたことを更に１つの条件として、連続出力回数と第１のパスから出力された列アドレス情報とに応じて決まる第２の部分データ要素列の位置及び長さの情報で置換する処理を行う、ものであってよい。
また、処理部は、第１のパスが特定のデータ要素を検索データ要素として連想メモリに与えた場合に、第１のパスからの列存在情報の連続出力回数が所定数を超えなかったならば、第２のパスから出力された特定のデータ要素を用いて、第１の部分データ要素列を部分的に非圧縮とする処理を行う、ものであってよい。
また、第２のパスは、第１のパスから列存在情報と列アドレス情報とが出力されるのと同期してデータ要素を出力するようなパイプライン構成を有する、ものであってよい。【００１７】
更に、本発明は、データ要素列の第１の部分データ要素列を、データ要素列の第２の部分データ要素列の位置及び長さの情報で置換することにより、データ要素列を圧縮する装置であって、データ要素列の少なくとも一部を構成する複数のデータ要素の各データ要素と各データ要素に対応するパリティ要素とを、データ要素列における各データ要素の位置に応じたアドレスに記憶し、検索データ要素が与えられた場合に、検索データ要素に一致する一致データ要素を複数のデータ要素の１つとして記憶していれば、一致データ要素が記憶されているアドレスを出力する連想メモリと、検索データ要素が連想メモリに与えられた場合に、それまでに与えられた検索データ要素の列に一致する一致データ要素の列が連想メモリに記憶されていれば、連想メモリから出力されるアドレスに基づいて、一致データ要素の列が記憶されていることを示す列存在情報と、一致データ要素の列が記憶されているアドレスを示す列アドレス情報とを生成する生成回路と、検索データ要素が連想メモリに与えられた場合に、検索データ要素に一致する一致データ要素が連想メモリに記憶されていれば、一致データ要素が記憶されているアドレスに記憶されたパリティ要素の値が、検索データ要素から生成されるかどうかを判定する判定回路と、入力されたデータ要素を検索データ要素として連想メモリに与え、生成回路により生成された列存在情報と列アドレス情報とを出力する第１のパスと、入力されたデータ要素を検索データ要素として連想メモリに与えることなく出力する第２のパスと、第１の部分データ要素列に含まれる特定のデータ要素の入力に応じて、第１のパスが特定のデータ要素を検索データ要素として連想メモリに与えた場合に、判定回路によりパリティ要素の値が生成されると判定されたという条件、及び、第１のパスからの列存在情報の連続出力回数が所定数を超えたという条件の両方が満たされれば、第１の部分データ要素列を、連続出力回数と第１のパスから出力された列アドレス情報とに応じて決まる第２の部分データ要素列の位置及び長さの情報で置換する処理を行い、判定回路によりパリティ要素の値が生成されないと判定されたという条件、及び、第１のパスからの列存在情報の連続出力回数が所定数を超えなかったという条件の少なくともいずれか一方が満たされれば、第２のパスから出力された特定のデータ要素を用いて、第１の部分データ要素列の特定のデータ要素の部分を非圧縮とする処理を行う処理部とを含む、装置も提供する。【００１８】
更にまた、本発明は、データ要素列の第１の部分データ要素列を、データ要素列の第２の部分データ要素列の位置に基づいて処理する方法であって、データ要素列の少なくとも一部を構成する複数のデータ要素の各データ要素を、データ要素列における各データ要素の位置に応じたアドレスに記憶し、検索データ要素が与えられた場合に、検索データ要素に一致する一致データ要素を複数のデータ要素の１つとして記憶していれば、一致データ要素が記憶されているアドレスを出力する連想メモリと、入力されたデータ要素を検索データ要素として連想メモリに与え、連想メモリから出力されたアドレスを出力する第１のパスと、入力されたデータ要素を検索データ要素として連想メモリに与えることなく出力する第２のパスとを含み、第１の部分データ要素列に含まれる特定のデータ要素の入力に応じて、第１のパスが特定のデータ要素を検索データ要素として連想メモリに与えた場合に、検索データ要素に一致する一致データ要素に誤りが発生しているかどうかを判定するステップと、一致データ要素に誤りが発生していないと判定されれば、第１のパスから出力されたアドレスを用いて第１の部分データ要素列を処理し、一致データ要素に誤りが発生していると判定されれば、第２のパスから出力された特定のデータ要素を用いて第１の部分データ要素列を処理するステップとを含む、方法も提供する。
【発明の効果】
【００１９】
本発明によれば、ＣＡＭに記憶されたデータに誤りが発生していなければＣＡＭを用いて行う処理を、ＣＡＭに記憶されたデータに誤りが発生しても継続できる。
【図面の簡単な説明】
【００２０】
【図１】本発明の実施の形態が適用されるマイクロコンピュータの構成例を示した図である。
【図２】本発明の実施の形態における繰り返しデータ検索回路の構成例を示したブロック図である。
【図３】連想メモリセルの構成例を示した回路図である。
【図４】パリティメモリセルの構成例を示した回路図である。
【図５】本発明の実施の形態における比較結果制御回路の構成例を示したブロック図である。
【図６】（ａ）乃至（ｅ）は本発明の実施の形態における比較結果制御回路の動作を説明するための概念図である。
【図７】文字列検索でパリティエラーが発生した場合の具体例を示した図である。
【図８】通常の繰り返しデータ検索装置及びデータ圧縮コントローラの構成例を示した図である。
【図９】本発明の実施の形態における繰り返しデータ検索装置及びデータ圧縮コントローラの構成例を示した図である。
【図１０−１】本発明の実施の形態におけるデータ圧縮コントローラの動作例を示したフローチャートである。
【図１０−２】本発明の実施の形態におけるデータ圧縮コントローラの動作例を示したフローチャートである。
【図１１】図１０のフローチャートにおける圧縮データ出力処理の内容を示したフローチャートである。
【発明を実施するための形態】
【００２１】
以下、添付図面を参照して、本発明の実施の形態について詳細に説明する。
図１は、本実施の形態が適用されるマイクロコンピュータ１０の構成（一部）を示す。マイクロコンピュータ１０は、ＣＰＵ１２、ＲＯＭ１４、ＲＡＭ１６を備えており、これらはアドレスバス、データバス、コントロールバス等からなるバス１８を介して互いに接続されている。
【００２２】
また、マイクロコンピュータ１０は、本実施の形態における複数の繰り返しデータ検索装置２０ａ、２０ｂ、…を備えており、これらは、繰り返しデータ検索装置の作動を制御するデータ圧縮コントローラ２２を介してバス１８に接続されている。尚、繰り返しデータ検索装置２０ａ、２０ｂ、…は各々同一の構成であり、本実施の形態ではＰ＋１個の繰り返しデータ検索装置が設けられている。以下ではＰ＋１個の繰り返しデータ検索装置を「繰り返しデータ検索装置２０」と総称してその構成を説明すると共に、個々の繰り返しデータ検索装置については「ブロック０」〜「ブロックＰ」と称して区別する。
【００２３】
図２は、本実施の形態における繰り返しデータ検索装置２０の一部を構成する繰り返しデータ検索回路２１を示した図である。
繰り返しデータ検索回路２１は、図に「○」で示す多数の連想メモリセル（以下、連想メモリをＣＡＭという）２８がマトリクス状に配置されて構成されたＣＡＭセルアレイ２６を備えている。ＣＡＭセルアレイ２６にはＮ＋１本のワード線WL0〜WLN、Ｎ＋１本のマッチ線MATCH0〜MATCHN、Ｍ＋１組のビット線対BL0,BL0'〜BLM,BLM'が各々マトリクス状に配置されており、各ＣＡＭセル２８は、ワード線WL0〜WLNの何れか、マッチ線MATCH0〜MATCHNの何れか、及び、ビット線対BL0,BL0'〜BLM,BLM'の何れかに各々接続されている。
【００２４】
多数のＣＡＭセル２８は、各々同一の構成を有している。図３に示すように、ＣＡＭセル２８は、互いの入力端と出力端とが接続された２個のＮＯＴ回路３０、３２を備えている。このＮＯＴ回路３０、３２のループが、１ビットのデータを記憶する記憶回路（ＳＲＡＭ型）を構成する。ＮＯＴ回路３０の出力端はＮ−ＭＯＳＦＥＴ３４のソースに、ＮＯＴ回路３２の出力端は同じくＮ−ＭＯＳＦＥＴ３６のソースに各々接続されており、Ｎ−ＭＯＳＦＥＴ３４、３６のゲートは各々ワード線WLに接続されている。また、Ｎ−ＭＯＳＦＥＴ３４、３６のドレインは各々ビット線BL,BL'に接続されている。
【００２５】
ここで、ＣＡＭセル２８に１ビットのデータを書き込む場合には、ワード線WLはハイレベルとされ、ビット線BLは書き込むデータＤに対応したレベル（Ｄが「１」の場合はハイレベル、「０」の場合はローレベル）とされ、ビット線BL'はビット線BLのレベルに対して反転したレベル（ビット線BLがハイレベルの場合はローレベル、ビット線BLがローレベルの場合はハイレベル）とされる。これにより、Ｎ−ＭＯＳＦＥＴ３４、３６がオンし、ビット線BL又はBL'を介して供給されたデータがＮＯＴ回路３０、３２のループに保持される。
【００２６】
また、ＮＯＴ回路３０の出力端はＮ−ＭＯＳＦＥＴ３８のゲートに、ＮＯＴ回路３２の出力端はＮ−ＭＯＳＦＥＴ４０のゲートに各々接続されている。尚、ＮＯＴ回路３２からはデータＤを反転したデータ（Ｑ’）が出力され、ＮＯＴ回路３０からはデータＱ’を反転したデータＱ（＝Ｄ）が出力される。Ｎ−ＭＯＳＦＥＴ３８、４０のドレインは各々ビット線BL',BLに接続されており、ソースはＮ−ＭＯＳＦＥＴ４２のゲートに接続されている。Ｎ−ＭＯＳＦＥＴ４２のドレインはマッチ線MATCHに接続され、ソースは接地されている。
【００２７】
尚、本実施の形態では、同一のワード線及びマッチ線に、一例としてＭ＋１個のＣＡＭセル２８を接続しており、同一のワード線及びマッチ線に接続された複数のＣＡＭセル２８（以下、これらをＣＡＭセル列という）にＭ＋１ビットのデータを記憶できるようにしている。また、ＣＡＭセルアレイ２６では、ＣＡＭセル列毎にアドレスが付与されている。
【００２８】
また、ＣＡＭセルアレイ２６には、図に太線の「○」で示すＮ＋１個のパリティメモリセル２４も１列に配置されている。ＣＡＭセルアレイ２６にはＮ＋１本の読出しパリティ線RPL0〜RPLN、１組の書込みパリティ線対WPL,WPL'も配置されており、各パリティメモリセル２４は、ワード線WL0〜WLNの何れか、及び、読出しパリティ線RPL0〜RPLNの何れかに各々接続され、書込みパリティ線対WPL,WPL'に接続されている。
【００２９】
Ｎ＋１個のパリティメモリセル２４は、各々同一の構成を有している。図４に示すように、パリティメモリセル２４の構成は、図３のＣＡＭセル２８の構成とほぼ同一である。但し、パリティメモリセル２４は、ＣＡＭセル２８に含まれるＮ−ＭＯＳＦＥＴ３８、４０、４２を有しておらず、ＮＯＴ回路３０、３２のループに保持されるデータがそのまま読み出されるように、ＮＯＴ回路３０の出力端は読出しパリティ線RPLに接続されている。
尚、ＣＡＭセルアレイ２６では、各パリティメモリセル２４にもアドレスが付与されている。
【００３０】
再び図２を参照すると、繰り返しデータ検索回路２１はタイミングコントローラ５０を備えている。タイミングコントローラ５０はデータ圧縮コントローラ２２に接続されている。データ圧縮コントローラ２２からタイミングコントローラ５０に検索指示SEARCHが入力されると、繰り返しデータ検索回路２１は、入力された検索データをＣＡＭセルアレイ２６の各ＣＡＭセル列に記憶されたデータと比較し、次に検索データをＣＡＭセルアレイ２６の何れかのＣＡＭセル列に書き込むことを繰り返す「検索」モードを実行する。
【００３１】
タイミングコントローラ５０にはデータ圧縮コントローラ２２からシステムクロックCLOCKが入力され、システムクロックCLOCKと同期したクロックSRを生成し出力する。クロックSRはタイミングコントローラ５０に接続された書込みバッファ５６に出力される。
【００３２】
書込みバッファ５６はデータ圧縮コントローラ２２に接続されており、コントーラ２２から検索データが順次入力される。書込みバッファ５６にはビット線対BL0,BL0'〜BLM,BLM'が各々接続されており、入力された検索データを保持すると共に、タイミングコントローラ５０から入力されたクロックSRに同期したタイミングで、保持している検索データの値に応じてビット線対BL0,BL0'〜BLM,BLM'のレベルを変化させる（ビット線対を駆動する）。書込みバッファ５６が所定の検索データに応じて各ビット線対を駆動している間に、各ＣＡＭセル列に記憶されたデータとその所定の検索データとの比較、及び、所定のＣＡＭセル列への所定の検索データの書込みが行われる。
【００３３】
また、書込みバッファ５６にはパリティ生成器５４が接続されており、書込みバッファ５６からパリティ生成器５４に検索データが順次入力される。パリティ生成器５４には書込みパリティ線対WPL,WPL'が接続されており、入力された検索データに基づいてパリティビットを算出すると共に、タイミングコントローラ５０から入力されたクロックSRに同期したタイミングで、算出したパリティビットに応じて書込みパリティ線対WPL,WPL'のレベルを変化させる（ビット線対を駆動する）。パリティ生成器５４がパリティビットに応じてビット線対を駆動している間に、所定のパリティメモリセル２４へのパリティビットの書込みが行われる。また、パリティ生成器５４には検索パリティ線SPLも接続されており、算出したパリティビットに応じて検索パリティ線SPLのレベルを変化させる。
【００３４】
タイミングコントローラ５０にはアドレスデコーダ５２も接続されており、クロックSRはアドレスデコーダ５２にも出力される。アドレスデコーダ５２はデータ圧縮コントローラ２２に接続されており、データ圧縮コントローラ２２から検索データの書込みを行うＣＡＭセル列のアドレス（書込みアドレスWADR）が指定される。アドレスデコーダ５２にはワード線WL0〜WLNが接続されており、クロックSRと同期したタイミングで、より詳しくは書込みバッファ５６が所定の検索データに応じて各ビット線対を駆動している期間内で、かつ、各ＣＡＭセル列に記憶されたデータと所定の検索データとの比較が行われた後に、指定された書込みアドレスWADRに対応するワード線をアサートし（イネーブルとし）、所定の検索データを指定されたアドレスに対応するＣＡＭセル列に書き込むと共に、その所定の検索データから算出したパリティビットを指定されたアドレスに対応するパリティメモリセル２４に書き込む。
【００３５】
また、タイミングコントローラ５０には、各々マッチ線MATCH0〜MATCHNに接続されたＮ＋１個のマッチ線コントローラ５８０〜５８Ｎも各々接続されており、クロックSRはマッチ線コントローラ５８０〜５８Ｎの各々にも出力される。マッチ線コントローラ５８０〜５８Ｎは、入力されたクロックSRに基づき各ＣＡＭセル列に記憶されたデータと検索データとの比較に先立ってマッチ線MATCH0〜MATCHNをハイレベルにチャージ（プリチャージ）する。このマッチ線コントローラ５８０〜５８Ｎによるマッチ線のプリチャージは、書込みバッファ５６が所定の検索データに応じた各ビット線対の駆動を終了してから、次の検索データに応じた各ビット線対の駆動を開始するまでの期間内に行われる。
【００３６】
また、マッチ線MATCH0〜MATCHNは、比較結果制御回路６０に各々接続されている。図５に示すように、比較結果制御回路６０は、ラッチ６２０〜６２Ｎ、信号生成回路６４０〜６４Ｎ、ラッチ６６０〜６６Ｎを備えている。尚、図５では、マッチ線コントローラ５８０〜５８Ｎの図示を省略している。また、図５では信号生成回路６４０〜６４Ｎのうち、マッチ線MATCH1に接続された信号生成回路６４１についてのみ具体的な構成を示しているが、他の信号生成回路も各々同一の構成であり、以下では比較結果制御回路６０のうちマッチ線MATCH1に対応する回路部分についてのみ説明する。
【００３７】
マッチ線MATCH1はラッチ６２１の入力端に接続されており、ラッチ６２１の出力端は信号生成回路６４１のＡＮＤ回路６８１、７０１に各々２個設けられた入力端の一方に各々接続されている。ＡＮＤ回路６８１の２個の入力端の他方にはＯＲ回路７２１の出力端が接続されており、ＯＲ回路７２１の２個の入力端の一方、及び、ＡＮＤ回路７０１の２個の入力端の他方は、前段のラッチ６６０の出力端に各々接続されている。ＡＮＤ回路６８１の出力端はラッチ６６１の入力端に接続されており、ラッチ６６１の出力端は前記と同様に、次段の信号生成回路６４２の図示しないＯＲ回路７２２及びＡＮＤ回路７０２の入力端に各々接続されている。また、ラッチ６６１の出力端は第１プライオリティエンコーダ７４の入力端にも接続されている。更に、ＡＮＤ回路７０１の出力端はＯＲ回路７８の１個の入力端に接続されており、ＯＲ回路７８の他の入力端には図示しないＡＮＤ回路７００、７０２〜７０Ｎの出力端が接続されている。ＯＲ回路７８の出力端はＯＲ回路８０の１個の入力端に接続されており、ＯＲ回路８０の他の入力端には、他の繰り返しデータ検索回路２１のＯＲ回路７８の出力端が接続されている。ＯＲ回路８０の出力端は、信号生成回路６４０〜６４ＮのＯＲ回路７２０〜７２Ｎの入力端に図示しないインバータを介して接続されており（ＯＲ回路７２１のみ図示）、ＯＲ回路７２０〜７２Ｎには、ＯＲ回路８０から出力されたフィードバック信号ORFBが反転されて入力される。また、ＯＲ回路８０から出力されたフィードバック信号ORFBはデータ圧縮コントローラ２２にも出力される（図２も参照）。
【００３８】
尚、図５にはブロック０の繰り返しデータ検索回路２１の比較結果制御回路６０を示しており、信号生成回路６４０のＯＲ回路７２０の２個の入力端の一方は、ブロックＰの比較結果制御回路６０のラッチ６６Ｎの出力端に接続されている。また、ブロック０の比較結果制御回路６０のラッチ６６Ｎの出力端は、ブロック１の比較結果制御回路６０のＯＲ回路７２０の２個の入力端の一方に接続されている（図２も参照）。
【００３９】
第１プライオリティエンコーダ７４の出力端は第２プライオリティエンコーダ７６の入力端に接続されている。第１プライオリティエンコーダ７４は、比較結果制御回路６０の６６０〜６６Ｎから各々入力された信号のうち「検索」動作を行った後に入力信号がハイレベルとなっている信号に対応するアドレスをエンコードして一致アドレスMADR0として第２プライオリティエンコーダ７６に出力すると共に、ラッチ６６０〜６６Ｎから各々入力された信号の論理和を一致信号MSIG0として第２プライオリティエンコーダ７６に出力する。尚、ラッチ６６０〜６６Ｎから入力された信号のうちの複数の信号がハイレベルであった場合には、一致アドレスMADR0として、予め定められた基準に従って優先順位の高い連想メモリセル列のアドレス、例えば、最も低いアドレス、又は、その時点の書込みアドレスWADRに最も近いアドレスを出力する。尚、後者のアドレスを出力するのは、圧縮に用いる距離情報が小さくてすむので、結果として圧縮率が高くなるという理由による。
【００４０】
また、第２プライオリティエンコーダ７６の入力端には、他の繰り返しデータ検索回路２１の第１プライオリティエンコーダ７４から出力された一致アドレスMADR及び一致信号MSIGも入力される。第２プライオリティエンコーダ７６の出力端はデータ圧縮コントローラ２２に接続されている。
【００４１】
第２プライオリティエンコーダ７６は第１プライオリティエンコーダ７４とほぼ同様の構成であり、複数の第１プライオリティエンコーダ７４から各々入力されたアドレスMADR0〜MADRPのうち、MSIG0〜MSIGPがハイレベルであるものの中から予め定められた基準に従い優先順位の高いアドレス、例えば、最も低いアドレスにそのブロックのアドレス（複数の繰り返しデータ検索装置に各々付与されたアドレス）を付加したアドレス、又は、その時点の書込みアドレスWADRに最も近いアドレスを一致アドレスMADRとしてデータ圧縮コントローラ２２に出力すると共に、複数の第１プライオリティエンコーダ７４から各々入力された一致信号MSIG0〜MSIGPの論理和を表す信号を一致信号MSIGとしてデータ圧縮コントローラ２２に出力する。
【００４２】
また、比較結果制御回路６０は、ＥＸＯＲ回路８２０〜８２Ｎ、ＮＡＮＤ回路８４０〜８４Ｎも備えている。以下ではこれらの回路のうち読出しパリティ線RPL1に対応する回路部分についてのみ説明する。
【００４３】
読出しパリティ線RPL1はＥＸＯＲ回路８２１の２個の入力端の一方に接続されており、ＥＸＯＲ回路８２１の２個の入力端の他方には検索パリティ線SPLが接続されている。ＥＸＯＲ回路８２１の出力端はＮＡＮＤ回路８４１の２個の入力端の一方に接続されており、ＮＡＮＤ回路８４１の２個の入力端の他方はラッチ６２１の出力端に接続されている。また、ＮＡＮＤ回路８４１の出力端はＯＲ回路８６の１個の入力端にインバータを介して接続されており、ＯＲ回路８６の他の入力端にはＮＡＮＤ回路８４０、８４２〜８４Ｎの出力端がインバータを介して接続されている。ＯＲ回路８６の出力端はＯＲ回路８８の１個の入力端に接続されており、ＯＲ回路８８の他の入力端には、他の繰り返しデータ検索回路２１のＯＲ回路８６の出力端が接続されている。ＯＲ回路８８から出力されたパリティエラー信号PEはデータ圧縮コントローラ２２に出力される（図２も参照）。
【００４４】
次に、本実施の形態の作用として、まず、繰り返しデータ検索回路２１における比較動作について説明する。被圧縮データ（元データ）の圧縮を行う場合、データ圧縮コントローラ２２は後述するように元データから所定ビット長の単位データを検索データとして順次取り出し、検索指示SEARCH、書込みアドレスWADRと共に繰り返しデータ検索回路２１に順次出力する。
【００４５】
検索指示SEARCHが入力されると、繰り返しデータ検索回路２１ではタイミングコントローラ５０から書込みバッファ５６、アドレスデコーダ５２及びマッチ線コントローラ５８０〜５８ＮにクロックSRが出力され、マッチ線コントローラ５８ではＣＡＭセルアレイ２６における比較動作に先立ってマッチ線MATCH0〜MATCHNのプリチャージを行い、書込みバッファ５６では入力された検索データを保持すると共に、検索データに応じてビット線対BL0,BL0'〜BLM,BLM'を駆動する。
【００４６】
ＣＡＭセルアレイ２６の各ＣＡＭセル２８では、ＮＯＴ回路３０から出力されるデータＱが「１」（ハイレベル）であればＮ−ＭＯＳＦＥＴ３８がオンしており、ＮＯＴ回路３２から出力されるデータＱ’が「１」であればＮ−ＭＯＳＦＥＴ４０がオンしている。従って、ＮＯＴ回路３０、３２のループに保持されているデータＱ（Ｑ’）とビット線対BL,BL'を介して供給されるデータＤ（Ｄ')とが一致している場合にはＮ−ＭＯＳＦＥＴ４２はオンしないが、不一致の場合にはＮ−ＭＯＳＦＥＴ３８、４０のうちオンしている方のＮ−ＭＯＳＦＥＴのドレインからソースに電流が流れ、Ｎ−ＭＯＳＦＥＴ４２がオンする。これにより、プリチャージされたマッチ線MATCHのレベルはローレベルに低下される（ディスチャージ）。
【００４７】
上記のデータの比較はＣＡＭセル２８の各々で同時に行なわれる。ところで、１本のマッチ線MATCHには複数のＣＡＭセル２８（ＣＡＭセル列）が接続されているので、クロックSRの１周期のほぼ前半で、ＣＡＭセル列に記憶されている文字データと入力された文字データとを比較する比較動作が完了し、各マッチ線は、接続されている全てのＣＡＭセル２８でＮ−ＭＯＳＦＥＴ４２がオンしなかった場合、即ちＣＡＭセル列に記憶されている文字データと書込みバッファ５６に入力された文字データとが一致していた場合にのみハイレベルの状態で維持され、不一致であった場合にはローレベルとされることになる。
【００４８】
クロックSRの１周期の後半には、入力された書込みアドレスWADRに対応するＣＡＭセル列のワード線がアドレスデコーダ５２によりアサートされ（イネーブルとされ）、そのＣＡＭセル列に検索データが書き込まれる。そして、ＣＡＭセル列への検索データの書込みが終了しワード線がローレベルにされると共に書込みバッファ５６による各ビット線対の駆動が停止されると、マッチ線コントローラ５８により各マッチ線のプリチャージが再び行われる。
【００４９】
以上の動作（比較動作）はクロックSRの１周期の間に行われ、データ圧縮コントローラ２２からの検索データ、検索指示SEARCH、書込みアドレスWADRの入力に同期して繰り返される。
【００５０】
また、このとき、繰り返しデータ検索回路２１は、各ＣＡＭセル列に記憶されている文字データのパリティチェックも行うので、パリティチェック動作についても説明する。
ＥＸＯＲ回路８２は、パリティ生成器５４から出力された検索パリティ線SPLのレベルと、パリティメモリセル２４から出力された読出しパリティ線RPLのレベルとを比較し、一致する場合にはローレベルの信号を出力し、不一致の場合にはハイレベルの信号を出力する。
【００５１】
ラッチ６２から出力された信号がハイレベルにされ、データの一致を示し、かつ、ＥＸＯＲ回路８２から出力された信号がローレベルにされ、パリティビットの一致を示す場合、又は、ラッチ６２から出力された信号がローレベルにされ、データの不一致を示す場合、ＮＡＮＤ回路８４は、ハイレベルの信号を出力する。
一方、ラッチ６２から出力された信号がハイレベルにされ、データの一致を示し、かつ、ＥＸＯＲ回路８２から出力された信号がハイレベルにされ、パリティビットの不一致を示す場合、ＮＡＮＤ回路８４は、ローレベルの信号を出力する。
【００５２】
そして、ＮＡＮＤ回路８４０〜８４Ｎから出力される信号の少なくとも１つがローレベルである場合に、ＯＲ回路８６は、ハイレベルの信号を出力し、ＯＲ回路８８は、パリティエラー信号PEをデータ圧縮コントローラ２２に出力する。
【００５３】
尚、上記説明において、文字データはデータ要素の一例であり、パリティビットはパリティ要素の一例である。また、ORFBが「１」である場合の信号は、検索データ要素の列に一致する一致データ要素の列が記憶されていることを示す列存在情報の一例であり、MADRは、検索データ要素の列に一致する一致データ要素の列が記憶されているアドレスを示す列アドレス情報の一例であり、信号生成回路６４、ラッチ６６、第１プライオリティエンコーダ７４、第２プライオリティエンコーダ７６、ＯＲ回路７８、ＯＲ回路８０からなる部分は生成回路の一例である。更に、ラッチ６２、ＥＸＯＲ回路８２、ＮＡＮＤ回路８４、ＯＲ回路８６、ＯＲ回路８８からなる部分は判定回路の一例である。
【００５４】
次に、比較結果制御回路６０の動作について、図６を参照して説明する。尚、図６では元データがテキストデータであり、アドレス「０」〜「５」のＣＡＭセル列に既に「ＡＢＡＢＢＣ」の文字データ列が順に記憶されており、かつ、検索データとして「ＡＢＢＢＣ…」の順に文字データが入力された場合を例として示しており、ラッチ６２０〜６２５をML0〜ML5、ラッチ６６０〜６６５をPS0〜PS5と称している。また、以下では他の繰り返しデータ検索装置においては比較動作の結果が連続して「不一致」となっているものとする。
【００５５】
図６（ａ）に示すように、検索データとして、まず「Ａ」の文字データが入力されると、アドレス「０」及び「２」のＣＡＭセル列（図６では太枠で示す）で比較結果が「一致」となり、マッチ線MATCH0〜MATCH5のうちマッチ線MATCH0及びMATCH2以外はローレベルにディスチャージされ、マッチ線MATCH0及びMATCH2のみがハイレベルのまま維持される。各マッチ線MATCH0〜MATCH5のレベルは比較結果制御回路６０のラッチML0〜ML5に各々保持された後に、次の周期で信号生成回路６４０〜６４５に各々出力される。
【００５６】
図６（ａ）に示すように、このときはラッチPS0〜PS5に保持されているレベルがローレベル（図６では「０」：図示していないラッチPS6〜PSN、及び、他のブロックのラッチPS0〜PSNについても同様とする）であるので、ＡＮＤ回路７００〜７０５から出力される信号は何れもローレベルとなり、ＯＲ回路７８から出力されるフィードバック信号ORFB0及びＯＲ回路８０から出力されるフィードバック信号ORFBもローレベルとなる。このように本実施の形態では、１文字のみ一致したのみ、即ち１回の比較動作で比較結果が「一致」となったＣＡＭセル列があったのみではフィードバック信号ORFBはハイレベルとはならない。またフィードバック信号ORFBがローレベルであるので、ＯＲ回路７２０〜７２５の出力は何れもハイレベルとなり、ラッチML0〜ML5から出力された信号のレベルはラッチPS0〜PS5にそのまま保持される（図６（ｂ）参照）。
【００５７】
図６（ｂ）に示すように、次の検索データとして「Ｂ」の文字データが入力されると、アドレス「１」、「３」、「４」のＣＡＭセル列で比較結果が「一致」となり、各マッチ線のレベル（マッチ線MATCH1,3,5のみがハイレベル）はラッチML0〜ML5に各々保持される。そして次の周期では、ラッチML1、ML3、ML5の出力が各々ハイレベルになると共に、ラッチPS0、PS2（即ちラッチML1、ML3の前段のラッチPS）の出力が各々ハイレベルとなるので、図６（ｂ）に示すようにＡＮＤ回路７０１、７０３から出力される信号がハイレベルとなり、ＯＲ回路７８から出力されるフィードバック信号ORFB0、ＯＲ回路８０から出力されるフィードバック信号ORFBが各々ハイレベルになる。
【００５８】
このように、フィードバック信号ORFBは２文字以上連続して一致した場合、即ち続けて入力された複数の検索データからなるデータ列がＣＡＭセルアレイ２６に記憶されていた場合にのみハイレベルとなる。尚、第１プライオリティエンコーダ７４が一致アドレスMADR0として最も低いアドレスを出力するものであるとすると、一致アドレスMADR0はPS0に対応するアドレス「０」となる。また、第２プライオリティエンコーダ７６から出力される一致アドレスMADRについては、他の繰り返しデータ検索装置から入力される一致アドレスの値にも依存するが、他の繰り返しデータ検索装置でデータが一致していない場合には、一致アドレスMADRの下位側のビットの値は一致アドレスMADR0の値に等しくなる。また一致アドレスMADRの上位側のビットの値は、一致したエンコーダブロックのアドレス（複数の繰り返しデータ検索装置の各々に付与されたアドレス）となるが、この場合はアドレス０のブロックなので全て０となる。
【００５９】
図６（ｃ）に示すように、次の検索データとして「Ｂ」の文字データが入力されると、前回と同じマッチ線がハイレベルとなり、各マッチ線のレベルがラッチML0〜ML5に各々一旦保持された後に、信号生成回路６４０〜６４５に各々出力される。このときには、出力がハイレベルとなるラッチML1、ML3、ML4のうち前段のラッチPSの出力もハイレベルであるラッチはラッチML4のみであるので、ＡＮＤ回路７０１、７０３、７０４から出力される信号のうちＡＮＤ回路７０４から出力される信号のみがハイレベルとなる。従って、ＯＲ回路７８から出力されるフィードバック信号ORFB0はハイレベルで維持され、一致アドレスMADR0はPS4に対応するアドレス「４」となる。
【００６０】
また、フィードバック信号ORFBがハイレベルで維持されるので、現在のサイクルをｍとすると、アドレスｎのラッチPSには、アドレスｎのラッチMLの出力ML(n,m)と、前段のラッチPSの出力PS(n-1,m)との論理積に相当する信号が出力される。この結果、ラッチPS4のみハイレベルを保持することになる。
【００６１】
続いて図６（ｄ）に示すように、次の検索データとして「Ｂ」の文字データが入力される。この場合、ラッチML0〜ML5に各々一旦保持された後に信号生成回路６４０〜６４５に各々入力される各マッチ線のレベルは前回と同じであるが、ハイレベルの信号を出力するラッチML1、ML3、ML4の何れについても、前段のラッチPSから出力される信号がローレベルであるので、ＡＮＤ回路７００〜７０５から出力される信号は何れもローレベルとなり、フィードバック信号ORFB0及びフィードバック信号ORFBもローレベルとなる。またフィードバック信号ORFBがローレベルになると、各信号生成回路６４０〜６４５のＯＲ回路７２０〜７２５の出力信号が各々ハイレベルとなるので、ラッチML1〜ML5から出力された信号のレベルはラッチPS0〜PS5にそのまま保持される。
【００６２】
更に、図６（ｅ）に示すように次の検索データとして「Ｃ」の文字データが入力されるとマッチ線MATCH5のみがハイレベルとなり、各マッチ線のレベルがラッチML0〜ML5に各々一旦保持された後に、信号生成回路６４０〜６４５に各々出力される。このときには、ラッチML5からのみハイレベルの信号が出力され、前段のラッチPS4からもハイレベルの信号が出力されるので、ＡＮＤ回路７００〜７０５から出力される信号のうちＡＮＤ回路７０５から出力される信号のみがハイレベルとなる。従って、ＯＲ回路７８から出力されるフィードバック信号ORFB0はハイレベルで維持され、一致アドレスMADR0はPS1に対応するアドレス「１」となる。
【００６３】
このように、繰り返しデータ検索回路２１は、１クロックで１文字の一致を検索でき、他の方法に比べ圧倒的に高速な文字列検索を可能にするものである。具体的には、１文字入力されるごとに、入力された文字をＣＡＭセルアレイ２６内の全ての文字と同時に比較できるので、高速な検索が可能となっている。
【００６４】
ここで、繰り返しデータ検索回路２１において、パリティエラーが発生した場合について考える。
図７は、繰り返しデータ検索回路２１による繰り返しデータ検索動作でパリティエラーが発生した場合について示したものである。
まず、ＣＡＭセルアレイ２６に「ＩＢＭｉｓＩＢ」までの文字列が順次格納されたとする。また、ＣＡＭセルアレイ２６には各文字に対応するパリティビット（「ｐ」で表す）も格納されているとする。尚、図において、ＣＡＭセルアレイ２６の左側に記載した数字は、ＣＡＭの各セル列のアドレスを示しており、ワード線WLN（マッチ線MATCHN、読出しパリティ線RPLN）のＮの値に対応する。
【００６５】
この状態で、繰り返しデータ検索回路２１は、続く文字列「ＩＢＭｉ」が書込みバッファ５６に１文字ずつ入力されると、ＣＡＭセルアレイ２６に格納された文字列と順次比較を行う。即ち、１文字目の「Ｉ」が書込みバッファ５６に入力されると、アドレス０の文字データがこれと一致するので、マッチ線MATCH0をハイレベルの状態で維持する。また、２文字目の「Ｂ」が書込みバッファ５６に入力されると、アドレス１の文字データがこれと一致するので、マッチ線MATCH1をハイレベルの状態で維持する。更に、３文字目の「Ｍ」が書込みバッファ５６に入力されると、アドレス２の文字データがこれと一致するので、マッチ線MATCH2をハイレベルの状態で維持する。
【００６６】
その後、４文字目の「ｉ」が書込みバッファ５６に入力された時点で、マッチ線MATCH3はハイレベルの状態で維持されるものの、パリティエラーが検出されたとする（図中、「×」で示す）。その原因としては、例えば、本来別の文字であったものが、ノイズによるビットフリップ等により、文字「ｉ」と同じビットの並びになってしまったことが考えられる。これにより、このときの文字「ｉ」との一致は信頼できなくなる。つまり、ＣＡＭセルアレイ２６のデータは信頼性が保証できなくなる。従って、これ以上処理することができなくなり、この時点で繰り返しデータ検索回路２１の処理を中断する必要がある。
この場合、通常は、最初から全てをやり直すという方法が採られる。つまり、パリティエラーが起きたことをデータ供給元に伝え、再度データを最初から流してもらう。
このとき、ノイズ等により一時的にパリティエラーが発生したのであれば、再度データを流してもらうことにより、エラーを回復することが可能である。しかしながら、ＣＡＭセルアレイ２６のビットの破損等により、一時的ではなく、恒久的にパリティエラーが発生する場合は、ＣＡＭセルアレイ２６の故障であって、回復は不能となる。
【００６７】
このようにパリティエラーが発生した場合に最初からやり直す場合の構成について説明する。
図８は、この場合の繰り返しデータ検索装置２０及びデータ圧縮コントローラ２２の構成例（一部）を示した図である。
図示するように、繰り返しデータ検索装置２０は、図２〜図６で述べた繰り返しデータ検索回路２１を含む。また、データ圧縮コントローラ２２は、繰り返しデータ検索回路２１から出力された文字データ（文字コード）を保持するフリップフロップ９０と、繰り返しデータ検索回路２１から出力された一致アドレス（図２のMADR）を保持するフリップフロップ９２と、繰り返しデータ検索回路２１から文字列一致信号（図２のORFB）が連続して出力された回数をカウントするカウンタ９４と、繰り返しデータ検索回路２１から出力されたパリティエラー信号（図２のPE）を保持するフリップフロップ９６とを含む。更に、データ圧縮コントローラ２２は、カウンタ９４のカウント結果に基づき、フリップフロップ９０が保持する文字データ、及び、フリップフロップ９２が保持する一致アドレスとカウンタ９４のカウント結果のセットの何れかを選択して出力するセレクタ９８も含む。  
【００６８】
次に、この構成例における繰り返しデータ検索装置２０及びデータ圧縮コントローラ２２の動作について説明する。
まず、繰り返しデータ検索回路２１に１バイト単位で文字データが入力される。尚、図には明記していないが、この文字データの入力元はデータ圧縮コントローラ２２である。  繰り返しデータ検索回路２１は、入力された文字データをＣＡＭに順次書き込むと共に、それまでに書き込まれた全ての文字データと比較し、一致する文字データが存在すれば、文字列一致信号として「１」を出力する。但し、この文字列一致信号として、単に１文字が一致しただけでは「１」は出力せず、２文字以上連続して一致した場合に「１」を出力する。そして、文字列が一致している間は「１」を出力し続ける。つまり、文字列一致信号として、１クロック分「１」が出力され、すぐ次のクロックで「０」に落ちた場合、これは２文字一致を表す。また、文字列一致信号として、２クロック分「１」が出力され、次のクロックで「０」に落ちた場合、これは３文字一致を表す。以下同様に、Ｋクロック分「１」が出力され、次のクロックで「０」に落ちた場合、これはＫ＋１文字の一致を表す。従って、データ圧縮コントローラ２２は、文字列一致信号をカウンタ９４によりカウントすることで、何文字一致したかを検出することができる。
【００６９】
また、繰り返しデータ検索回路２１は、文字データの一致があったＣＡＭのアドレスを一致アドレスとして出力し、フリップフロップ９２がこれを保持する。
更に、繰り返しデータ検索回路２１は、文字データの一致があってもなくても、入力された文字データを出力し、フリップフロップ９０がこれを保持する。尚、この文字データは、文字データの一致がなかった場合に非圧縮のデータとして必要となるものである。
【００７０】
これにより、セレクタ９８は、文字データの一致がなかった場合は、フリップフロップ９０にて保持された文字データを出力し、文字データの一致があった場合は、フリップフロップ９２にて保持された一致アドレス及びカウンタ９４でカウントされた回数（文字データの連続一致数）を出力する。
【００７１】
但し、この構成例において、繰り返しデータ検索回路２１内でパリティエラーが発生した場合、繰り返しデータ検索回路２１はパリティエラー信号として「１」をデータ圧縮コントローラ２２に出力する。これにより、データ圧縮コントローラ２２は、文字列一致信号及び文字コードが信頼できないことを認識する。この場合は圧縮処理を継続することができないため、圧縮対象データを流し直すことになる。
【００７２】
そこで、本実施の形態では、繰り返しデータ検索回路２１内でパリティエラーが発生した場合、繰り返しデータ検索回路２１の処理を一旦中断しても、圧縮データの信頼性を確保できるようにする。
図９は、本実施の形態における繰り返しデータ検索装置２０及びデータ圧縮コントローラ２２の構成例（一部）を示した図である。
図示するように、繰り返しデータ検索装置２０は、図８の構成に加え、フリップフロップ１００１、１００２、１００３、１００４を含む。また、データ圧縮コントローラ２２は、図８のフリップフロップ９０に代えて、フリップフロップ１００４から出力された文字データを保持するフリップフロップ１０２を含み、加えて、カウンタ９４のカウント結果及びフリップフロップ９６からのパリティエラー信号に基づいてセレクタ９８に出力する信号を生成する信号生成回路１０４を含む。本実施の形態では、処理部の一例として、データ圧縮コントローラ２２を設けている。
【００７３】
ところで、図において、圧縮データパスは、第１のパスの一例であり、繰り返しデータ検索回路２１の検索結果による圧縮を行うためのパスである。一方、非圧縮データパスは、第２のパスの一例であり、入力された文字データをそのまま流すパスである。つまり、本実施の形態では、２つのパスを設けることで、繰り返しデータ検索装置２０をリダンダントな構成としている。
【００７４】
次に、本実施の形態における繰り返しデータ検索装置２０及びデータ圧縮コントローラ２２の動作について説明する。
繰り返しデータ検索回路２１が一致アドレス及び文字列一致信号を出力し、フリップフロップ９２が一致アドレスを保持し、カウンタ９４が連続一致回数をカウントするところまでは、図８と同様である。
【００７５】
但し、本実施の形態では、図８のように繰り返しデータ検索回路２１内を通った文字データではなく、繰り返しデータ検索回路２１の外に設けられたフリップフロップ１００１、１００２、１００３、１００４を通った文字データが、フリップフロップ１０２に保持される。
【００７６】
そして、繰り返しデータ検索回路２１内でパリティエラーが発生し、繰り返しデータ検索回路２１がパリティエラー信号を出力した場合、信号生成回路１０４は、非圧縮データパスのデータを選択することを指示する信号をセレクタ９８に出力する。これにより、セレクタ９８は、フリップフロップ１０２に保持された文字データを選択し、データ圧縮コントローラ２２の処理部分に出力する。
【００７７】
一方、繰り返しデータ検索回路２１内でパリティエラーが発生しておらず、繰り返しデータ検索回路２１がパリティエラー信号を出力していない場合、信号生成回路１０４は、連続して一致した文字数が２以下であれば、非圧縮データパスのデータを選択することを指示する信号をセレクタ９８に出力する。これにより、セレクタ９８は、フリップフロップ１０２に保持された文字データを選択し、データ圧縮コントローラ２２の処理部分に出力する。また、連続して一致した文字数が３以上であれば、圧縮データパスのデータを選択することを指示する信号をセレクタ９８に出力する。これにより、セレクタ９８は、フリップフロップ９２に保持された文字データとカウンタ９４のカウント結果とのセットを選択し、データ圧縮コントローラ２２の処理部分に出力する。尚、連続して一致した文字数が２以下の場合に非圧縮データパスのデータを選択し、３以上の場合に圧縮データパスのデータを選択するようにしたのは、連続して一致した文字数が２以下の場合に一致文字列の位置と長さを用いて圧縮しても圧縮効果が得られないためである。
【００７８】
図７の例の場合、最初の「ＩＢＭ」まではパリティエラーが発生していないので、繰り返しデータ検索回路２１は正常に動作しており、セレクタ９７は「ＩＢＭ」の３文字が一致したとして（０，３）というデータを出力する。その後、パリティエラーが発生したため、セレクタ９８は、４文字目として文字データ「ｉ」をそのまま出力する。つまり、出力されるデータは、順に、（０，３）、「ｉ」となる。
一方、繰り返しデータ検索回路２１内でパリティエラーが発生していない場合は、「ＩＢＭｉ」まで４文字が一致したことになるので、セレクタ９８は、（０，４）を出力する。
【００７９】
本実施の形態では、このような構成を採用したことにより、圧縮データパスでパリティエラーが発生したとしても、非圧縮データパスに元データが残っているため、データが消えてしまうことはない。従って、パリティエラーが発生した場合、圧縮されたデータは無効となるので、圧縮率は下がることになるが、処理が中断されることはなく、正しいデータが出力されるという効果がある。
【００８０】
尚、図９の圧縮データパスにある繰り返しデータ検索回路２１は、文字データが１クロックごとに１文字（１バイト）ずつ入力され、入力された文字データが４段のパイプラインで処理される構成となっている。即ち、１クロック目で文字データがＣＡＭセルアレイ２６に書き込まれ、２クロック目で文字データの一致がラッチ６２に保持され、３クロック目でその文字データの直前までの文字列の一致がラッチ６６に保持され、４クロック目で一致アドレスがフリップフロップ９２に保持される。そのため、一致アドレス及び文字列一致信号は、文字データが入力されてから４クロック後に出力されることになる。従って、非圧縮データパスも、フリップフロップ１００１、１００２、１００３、１００４という４段のパイプライン構成として、圧縮データパスと段数を合わせる必要がある。但し、この段数は、あくまで一例であり、圧縮データパスの段数がＫ段であれば、非圧縮データパスの段数もＫ段とする必要がある。
【００８１】
次に、本実施の形態におけるデータ圧縮コントローラ２２の動作について説明する。
図１０−１及び図１０−２は、データ圧縮コントローラ２２における処理を示したフローチャートである。尚、この処理は、データ圧縮コントローラ２２にバス１８を介して圧縮すべきデータ（元データ）が転送され、ＣＰＵ１２から元データの圧縮が指示されると実行される。
【００８２】
データ圧縮コントローラ２２は、まず、繰り返しデータ検索装置２０の比較結果制御回路６０のラッチ６２０〜６２Ｎ、ラッチ６６０〜６６Ｎを各々リセットする（ステップ２００）。次に、一致長MLENを「１」に、書込みアドレスWADRを「０」に各々初期設定する（ステップ２０２）。そして、繰り返しデータ検索装置２０への元データの出力が終了したか否か判定する（ステップ２０４）。判定が否定された場合には、元データから先頭の１文字に対応する文字Ｃ０のデータを検索データとして取り出し、繰り返しデータ検索装置２０に検索指示SEARCH、書込みアドレスWADRと共に出力する（ステップ２０６）。これにより、繰り返しデータ検索装置２０では、文字Ｃ０のデータが非圧縮データパスに渡されると共に、圧縮データパスに渡されて前述した検索動作が行われる。
【００８３】
次に、データ圧縮コントローラ２２は、パリティエラー信号PEがハイレベルになったか否かを判定する（ステップ２０７）。パリティエラー信号PEがハイレベルになっており、判定が肯定された場合の処理は後述する。パリティエラー信号PEがローレベルになっており、判定が否定された場合、データ圧縮コントローラ２２は、繰り返しデータ検索装置２０から出力される文字列一致信号ORFBがハイレベルになったか否か判定する（ステップ２０８）。このときには、先のステップ２００で各ラッチ６２及び各ラッチ６６をリセットしたことに伴って文字列一致信号ORFBはローレベルで維持されるので、判定が否定されてステップ２１０へ移行する。そこで、データ圧縮コントローラ２２は、今回の比較動作が所定の元データに対する第１回目の比較動作であるか否か判定し（ステップ２１０）、判定が肯定された場合はステップ２１２で圧縮データの出力処理を行うことなくステップ２１４へ移行する。前述したように文字列一致信号ORFBは２文字以上連続して一致しないとハイレベルにならないため、比較結果「不一致」が続いている場合は後述するように圧縮データとして前回検索した文字を出力する。従って、この時点では圧縮データとして出力すべきデータがないためステップ２１２を実行しない。
【００８４】
その後、データ圧縮コントローラ２２は、一致長MLENに「１」を代入し（ステップ２１４）、ステップ２１８へ移行する。そして、前々回検索文字Ｃ２に前回検索文字Ｃ１のデータを、前回検索文字Ｃ１に今回の文字Ｃ０のデータを、各々設定し（ステップ２１８）、現在の書込みアドレスWADR（第１回目の比較動作では０）に対応するＣＡＭセル列に文字Ｃ０のデータを書き込む（ステップ２２０）。この書込み処理は、実際にはアドレスデコーダ５２によって書込みアドレスWADRに対応するＣＡＭセル列のワード線をアサートする（イネーブルにする）ことにより行われる。また、データ圧縮コントローラ２２は、次の書込みアドレスWADRとして、書込みアドレスWADRに１を加算し（従って文字データはＣＡＭセル列のアドレスの昇順に書き込まれる）、ＣＡＭセルアレイ２６のサイズＮ＋１で除した余りを設定する（ステップ２２２）。
【００８５】
これにより全てのＣＡＭセル列にデータを書き込んだ後は、アドレス「０」のＣＡＭセル列にデータが書き込まれるので、ＣＡＭセルアレイ２６が所謂リングバッファとして用いられ、ＣＡＭセルアレイ２６のオーバフロー等が発生することはない。
【００８６】
ステップ２２２の処理を行った後はステップ２０４へ戻る。ステップ２０４の判定が否定された場合にはステップ２０６以降の処理を再度実行するが、ステップ２０６では前回検索文字Ｃ１に続く文字Ｃ０のデータが検索データとして元データから取り出され、検索指示SEARCH、書込みアドレスWADRと共に繰り返しデータ検索装置２０へ出力される。そしてステップ２０８の判定が否定された場合はステップ２１０へ移行し、この判定が否定されることによりステップ２１２の圧縮データ出力処理が行われる。
【００８７】
図１１に示すように、データ圧縮コントローラ２２は、この圧縮データ出力処理で、一致長MLENが０か否か判定する（ステップ２２９）。前回のパリティエラー信号PEがハイレベルであった場合は、後述する処理によりそれまでの全てのデータが出力され一致長MLENが０になっているので、圧縮データとしてデータを出力することなく、図１０−１のフローチャートのステップ２１４へ移行する。
ステップ２２９で判定が否定された場合、データ圧縮コントローラ２２は、一致長MLENが２か否か判定する（ステップ２３０）。前回の比較結果は「一致」であるが、前々回の比較結果が「一致」でない場合は判定が肯定され、圧縮データとして、前々回検索文字Ｃ２のデータを出力し（ステップ２３６）、次いで前回検索文字Ｃ１のデータを出力し（ステップ２３８）、その後に図１０−１のフローチャートのステップ２１４へ移行する。
ステップ２３０で判定が否定された場合、データ圧縮コントローラ２２は、一致長MLENが１か否かを判定する（ステップ２３２）。前回の比較結果が「一致」でない場合は判定が肯定され、圧縮データとして前回検索文字Ｃ１のデータを出力し（ステップ２３８）、その後に図１０−１のフローチャートのステップ２１４へ移行する。
【００８８】
ところで、図１０−１のフローチャートにおいてステップ２０８の判定が肯定された場合には、一致長MLENをカウントアップし（ステップ２１６）、その後にステップ２１８へ移行する。従って、文字列一致信号ORFBがハイレベルとなっている間は圧縮データの出力は行われない。
【００８９】
また、前回の比較動作でハイレベルとなっていた文字列一致信号ORFBがローレベルに変化してステップ２１０の判定が否定された場合は、２文字以上の長さの繰り返し文字列の末尾が検出された場合であるので、ステップ２１２で圧縮データ出力処理が行われる。このときは、前回及び前々回の比較結果が共に「一致」であれば、先に説明したステップ２１６で一致長MLENがカウントアップされて３以上になっているので、ステップ２２９、ステップ２３０及びステップ２３２の判定が共に否定され、ステップ２３４へ移行する。
【００９０】
そこで、データ圧縮コントローラ２２は、繰り返し文字列を圧縮するための圧縮コードを求める。本実施の形態では、繰り返し文字列と同一の文字列の位置を指し示すポインタを表す第１のコードと、繰り返し文字列の長さを表す第２のコードとで構成された圧縮コードを用いており、第１のコードとして一致アドレスMADRと一致長MLENとの差に１を加えた値（MADR−MLEN＋１）を、第２のコードとして一致長MLENを各々設定し、出力する（ステップ２３４）。これにより、データ圧縮コントローラ２２から出力される圧縮データの長さは、元データよりも短くなる。
【００９１】
尚、この圧縮コードを出力するにあたり、圧縮した文字列を復元する際に圧縮コードと文字データとを区別できるようにするために、データ圧縮コントローラ２２は文字データと圧縮コードとの間に区切りを表すコードも挿入する。このように、繰り返し文字列が発見される毎にステップ２３４が実行され、発見された繰り返し文字列が圧縮コードに変換されて出力されることにより、元データの冗長性が取り除かれ、元データが圧縮データに圧縮されることになる。
【００９２】
また、図１０−１のフローチャートのステップ２０７の判定が肯定された場合は、図１０−２のフローチャートのステップ２４０へ移行し、この判定が否定されることによりステップ２４２の圧縮データ出力処理が行われる。この圧縮データ出力処理については、図１１のフローチャートを参照して既に述べたので説明を省略する。
パリティエラー信号PEがハイレベルになった場合は、文字列一致信号ORFBが信頼できないので、この時点で、繰り返しデータ検索装置２０の非圧縮データパス経由で得た文字Ｃ０を出力する（ステップ２４４）。そして、一致長MLENに「０」を代入して（ステップ２４６）、図１０−１のフローチャートのステップ２１８へ移行し、その後は上記処理を継続する。
【００９３】
上述の処理を繰り返し、元データからの文字Ｃのデータの取り出し位置が元データの末尾に到達するとステップ２０４の判定が肯定され、データ圧縮コントローラ２２は、圧縮データ出力処理を再び行う（ステップ２２４）。このとき、一致長MLENの値が３以上であれば、ステップ２３４で圧縮コードの出力が行われるが、一致長MLENの値が２の場合には、ステップ２３６及びステップ２３８で圧縮データとして前々回検索文字Ｃ２のデータ及び前回検索文字Ｃ１のデータを、一致長MLENの値が１の場合には、ステップ２３８で圧縮データとして前回検索文字Ｃ１のデータを、それぞれ出力し、処理を終了する。
【００９４】
尚、この動作例では、圧縮コードのうち第１のコードとして、繰り返し文字列と同一の文字列の位置を指し示すポインタを用いたが、前述した例に従い、繰り返し文字列と同一の文字列の位置と繰り返し文字列の位置との距離を用いてもよい。この場合、WADRから上記繰り返し文字列と同一の文字列の位置を減算して得られた値を第１のコードとすればよい。
【００９５】
以上、本発明の実施の形態について説明した。
このように、本実施の形態では、繰り返しデータ検索装置２０内に、入力された文字データをそのまま流す非圧縮データパスと、入力された文字データに連続して一致するＣＡＭ内の文字列の位置及び長さを出力する圧縮データパスとを設け、ＣＡＭにパリティエラーが発生すると、非圧縮データパスからの文字データを用いるようにした。これにより、ＣＡＭ内の文字データにパリティエラーが発生しても、文字データを用いた処理を中断することなく継続できるようになる。
【００９６】
また、パリティエラーが発生するケースをまとめると、以下のようになる。
・ケース１：一時的な場合
これは、宇宙線、ノイズ等の影響で偶発的に一度だけ起きる場合である。この場合は、再度データを読み出せば、エラーは発生しない。
・ケース２：セルが故障した場合
通常、ＣＡＭ等のメモリセルは、工場出荷時にテストされているので、最初から壊れて出荷されることは殆どない。従って、動作中に故障した場合がこれにあたる。
本実施の形態は、ケース１、ケース２の両方において有効である。
ケース１は、一時的なものなので、一時的に圧縮率が下がるだけである。ケース２は、故障したセルがヒットしたときは常に圧縮率が下がることになる。しかしながら、本実施の形態によれば、何れの場合も、データ自体が壊れるわけではないので、問題にはならない。
【００９７】
尚、本実施の形態では、文字列のある部分を別の部分の位置及び長さの情報で置換することにより文字列を圧縮することを前提にしたが、文字列のある部分を別の部分の位置に基づいて処理することを前提にしてもよい。その場合、圧縮データパスを、ＣＡＭセルアレイ２６の文字データが入力される部分からその文字データに一致する文字データのアドレスが出力される部分までのパスとし、非圧縮データパスを、圧縮データパスからアドレスが出力されるのと同期して文字データを出力するようなパイプライン構成を有するパスとしてもよい。
【００９８】
また、本実施の形態では、パリティビットをＣＡＭセルアレイ２６に記憶したが、ＣＡＭセルアレイ２６以外の別のメモリに記憶してもよい。また、ＣＡＭセルアレイ２６に記憶されたデータに発生する誤りとして、パリティエラーを挙げたが、パリティエラー以外の誤りが発生する場合であっても本発明は同様に適用可能である。
【００９９】
以上、本発明を実施の形態を用いて説明したが、本発明の技術的範囲は上記実施の形態には限定されない。本発明の精神及び範囲から逸脱することなく様々に変更したり代替態様を採用したりすることが可能なことは、当業者に明らかである。
【符号の説明】
【０１００】
２０…繰り返しデータ検索装置、２１…繰り返しデータ検索回路、２２…データ圧縮コントローラ、２４…パリティメモリセル、２６…ＣＡＭセルアレイ、２８…ＣＡＭセル、５２…アドレスデコーダ、５４…パリティ生成器、６０…比較結果制御回路、６４…信号生成回路、７４…第１プライオリティエンコーダ、７６…第２プライオリティエンコーダ、９０，９２，９６，１００，１０２…フリップフロップ、９４…カウンタ、９８…セレクタ
【図１】
2012090564.tif 000003
【図２】
2012090564.tif 000004
【図３】
2012090564.tif 000005
【図４】
2012090564.tif 000006
【図５】
2012090564.tif 000007
【図６】
2012090564.tif 000008
【図７】
2012090564.tif 000009
【図８】
2012090564.tif 000010
【図９】
2012090564.tif 000011
【図１０−１】
2012090564.tif 000012
【図１０−２】
2012090564.tif 000013
【図１１】
2012090564.tif 000014
【手続補正書】
【提出日】平成26年2月24日(2014.2.24)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
データ要素列の第１の部分データ要素列を、当該データ要素列の第２の部分データ要素列の位置に基づいて処理する装置であって、
前記データ要素列の各データ要素と当該各データ要素に対応するパリティ要素とを、当該データ要素列における当該各データ要素の位置に応じたアドレスに記憶し、検索データ要素が与えられた場合に、それまでに与えられた検索データ要素の列を記憶していれば、当該検索データ要素の列を記憶しているアドレスを示す列アドレス信号を出力し、当該検索データ要素に対応する当該パリティ要素の値が当該検索データ要素から生成されなければ、パリティエラー信号を前記列アドレス信号とは別に出力する検索回路と、
入力されたデータ要素を前記検索データ要素として前記検索回路に与え、当該検索回路から出力された前記列アドレス信号を出力する第１のパスと、
入力されたデータ要素を前記検索データ要素として前記検索回路に与えることなく出力する第２のパスと、
前記第１の部分データ要素列に含まれる特定のデータ要素の入力に応じて、前記第１のパスが当該特定のデータ要素を前記検索データ要素として前記検索回路に与えた場合に、当該検索回路から前記パリティエラー信号が出力されなければ、前記第１のパスから出力された前記列アドレス信号に応じて決まる前記第２の部分データ要素列の位置を用いて当該第１の部分データ要素列を処理し、当該検索回路から前記パリティエラー信号が出力されれば、前記第２のパスから出力された当該特定のデータ要素を用いて当該第１の部分データ要素列を処理する処理部と
を含む、装置。
【請求項２】
前記第２のパスは、前記第１のパスから前記列アドレス信号が出力されるのと同期して前記データ要素を出力するようなパイプライン構成を有する、請求項１の装置。
【請求項３】
データ要素列の第１の部分データ要素列を、当該データ要素列の第２の部分データ要素列の位置及び長さの情報で置換することにより、当該データ要素列を圧縮する装置であって、
前記データ要素列の各データ要素と当該各データ要素に対応するパリティ要素とを、当該データ要素列における当該各データ要素の位置に応じたアドレスに記憶し、検索データ要素が与えられた場合に、各アドレスに記憶しているデータ要素が当該検索データ要素に一致していればデータ一致信号を出力し、各アドレスに記憶しているパリティ要素の値を示すパリティ信号を出力する連想メモリと、
前記検索データ要素が前記連想メモリに与えられた場合に、それまでに与えられた検索データ要素の列が当該連想メモリに記憶されていれば、当該連想メモリから出力される前記データ一致信号に基づいて、当該検索データ要素の列が記憶されていることを示す列存在信号と、当該検索データ要素の列が記憶されているアドレスを示す列アドレス信号とを生成する第１の生成回路と、
前記検索データ要素が前記連想メモリに与えられた場合に、当該連想メモリから出力される前記パリティ信号により示される当該検索データ要素に対応する前記パリティ要素の値が当該検索データ要素から生成されなければ、パリティエラー信号を前記列存在信号及び前記列アドレス信号とは別に生成する第２の生成回路と、
入力されたデータ要素を前記検索データ要素として前記連想メモリに与え、前記第１の生成回路により生成された前記列存在信号と前記列アドレス信号とを出力する第１のパスと、
入力されたデータ要素を前記検索データ要素として前記連想メモリに与えることなく出力する第２のパスと、
前記第１の部分データ要素列に含まれる特定のデータ要素の入力に応じて、前記第１のパスが当該特定のデータ要素を前記検索データ要素として前記連想メモリに与えた場合に、前記第２の生成回路により前記パリティエラー信号が生成されていないことを１つの条件として、当該第１の部分データ要素列を、前記第１のパスからの当該列存在信号の連続出力回数と前記第１のパスから出力された前記列アドレス信号とに応じて決まる前記第２の部分データ要素列の位置及び長さの情報で置換する処理を行い、前記第２の生成回路により前記パリティエラー信号が生成されていれば、前記第２のパスから出力された当該特定のデータ要素を用いて、当該第１の部分データ要素列を部分的に非圧縮とする処理を行う処理部と
を含む、装置。
【請求項４】
前記処理部は、前記第１のパスが前記特定のデータ要素を前記検索データ要素として前記連想メモリに与えた場合に、前記１つの条件に加え、前記第１のパスからの前記列存在信号の連続出力回数が所定数を超えたことを更に１つの条件として、当該連続出力回数と前記第１のパスから出力された前記列アドレス信号とに応じて決まる前記第２の部分データ要素列の位置及び長さの情報で置換する処理を行う、請求項３の装置。
【請求項５】
前記処理部は、前記第１のパスが前記特定のデータ要素を前記検索データ要素として前記連想メモリに与えた場合に、前記第１のパスからの前記列存在信号の連続出力回数が所定数を超えなかったならば、前記第２のパスから出力された当該特定のデータ要素を用いて、当該第１の部分データ要素列を部分的に非圧縮とする処理を行う、請求項３又は請求項４の装置。
【請求項６】
前記第２のパスは、前記第１のパスから前記列存在信号と前記列アドレス信号とが出力されるのと同期して前記データ要素を出力するようなパイプライン構成を有する、請求項３乃至請求項５の何れかの装置。
【請求項７】
データ要素列の第１の部分データ要素列を、当該データ要素列の第２の部分データ要素列の位置に基づいて処理する方法であって、
前記データ要素列の各データ要素と当該各データ要素に対応するパリティ要素とを、当該データ要素列における当該各データ要素の位置に応じたアドレスに記憶し、検索データ要素が与えられた場合に、それまでに与えられた検索データ要素の列を記憶していれば、当該検索データ要素の列を記憶しているアドレスを示す列アドレス信号を出力し、当該検索データ要素に対応する当該パリティ要素の値が当該検索データ要素から生成されなければ、パリティエラー信号を前記列アドレス信号とは別に出力する検索回路と、
入力されたデータ要素を前記検索データ要素として前記検索回路に与え、当該検索回路から出力された前記列アドレス信号を出力する第１のパスと、
入力されたデータ要素を前記検索データ要素として前記検索回路に与えることなく出力する第２のパスと
を含み、
前記第１の部分データ要素列に含まれる特定のデータ要素の入力に応じて、前記第１のパスが当該特定のデータ要素を前記検索データ要素として前記検索回路に与えた場合に、当該検索回路から前記パリティエラー信号が出力されているかどうかを判定するステップと、
前記パリティエラー信号が出力されていないと判定されれば、前記第１のパスから出力された前記列アドレス信号に応じて決まる前記第２の部分データ要素列の位置を用いて前記第１の部分データ要素列を処理し、前記パリティエラー信号が出力されていると判定されれば、前記第２のパスから出力された当該特定のデータ要素を用いて前記第１の部分データ要素列を処理するステップと
を含む、方法。
【国際調査報告】
2012090564.tif 000015
2012090564.tif 000016
2012090564.tif 000017
2012090564.tif 000018