(57)【要約】【課題】データ圧縮方法と、該方法を行う装置を提供する。【解決手段】データ圧縮方法は、以前データブロックと現在データブロックとを含む入力データストリームを受信する段階と、以前データブロックの一部と以前参照データブロックの一部とを比較する第１比較と、現在データブロックと現在参照データブロックとを比較する第２比較とを並列的に実行する段階と、第１比較と第２比較との結果に基づいて、現在データブロックを出力するか、または拡張データブロックを圧縮する段階と、を含み、拡張データブロックは、以前データブロックの一部と現在データブロックとを含む。【選択図】      図２
2014132750.tif 000002
【特許請求の範囲】
【請求項１】
以前データブロックと現在データブロックとを含む入力データストリームを受信する段階と、
前記以前データブロックの一部と以前参照データブロックの一部とを比較する第１比較と、前記現在データブロックと現在参照データブロックとを比較する第２比較とを並列的に実行する段階と、
前記第１比較と前記第２比較との結果に基づいて、前記現在データブロックを出力するか、または拡張データブロックを圧縮する段階と、を含み、
前記拡張データブロックは、前記以前データブロックの前記一部と前記現在データブロックとを含むデータ圧縮方法。
【請求項２】
前記現在参照データブロックが保存された第１メモリ領域と前記以前参照データブロックが保存された第２メモリ領域のそれぞれは、インターリービング方式で割り当てられ、独立してアクセス可能な互いに異なるメモリに具現される請求項１に記載のデータ圧縮方法。
【請求項３】
前記拡張データブロックのサイズと前記現在データブロックのサイズとの比は、帯小数である請求項１に記載のデータ圧縮方法。
【請求項４】
バッファメモリから前記以前参照データブロックの前記一部と前記現在参照データブロックとを並列的にリードする段階をさらに含む請求項１に記載のデータ圧縮方法。
【請求項５】
以前データブロックと現在データブロックとを含む入力データストリームを受信する段階と、
メモリから以前参照データブロックの一部と現在参照データブロックとを並列的にリードする段階と、
前記以前データブロックの一部と前記以前参照データブロックの前記一部とに対する比較と、前記現在データブロックと前記現在参照データブロックとに対する比較とを並列的に行う段階と、
前記以前データブロックの前記一部と前記以前参照データブロックの前記一部とがマッチされ、前記現在データブロックと前記現在参照データブロックとがマッチされる時、拡張データブロックを圧縮する段階と、を含み、
前記拡張データブロックは、前記以前データブロックの前記一部と前記現在データブロックとを含むデータ圧縮方法。
【請求項６】
前記データ圧縮方法は、前記以前データブロックの前記一部の少なくとも一部と前記以前参照データブロックの前記一部とがマッチされず、前記現在データブロックと前記現在参照データブロックとがマッチされない時、前記現在データブロックを選択的に圧縮または圧縮しない段階を含む請求項５に記載のデータ圧縮方法。
【請求項７】
前記メモリは、前記現在参照データブロックが保存された第１メモリ領域と前記以前参照データブロックが保存された第２メモリ領域とを含むバッファメモリであり、前記第１メモリ領域と前記第２メモリ領域のそれぞれは、インターリービング方式で割り当てられ、独立してアクセス可能な互いに異なるメモリに具現される請求項５に記載のデータ圧縮方法。
【請求項８】
第１メモリ領域、第２メモリ領域、及び第３メモリ領域を含むバッファメモリと、
アドレスに応答して、前記第１メモリ領域に保存された以前参照データブロックの一部と前記第２メモリ領域に保存された現在参照データブロックとを出力するバッファメモリコントローラと、
以前データブロックの一部と前記以前参照データブロックの一部とがマッチするか否かと、現在データブロックと前記現在参照データブロックとがマッチするか否かとを判断し、該判断の結果によって、制御情報を生成する比較回路と、
前記制御情報に基づいて、前記現在データブロックを出力するか、圧縮データを出力する圧縮データ生成回路と、を含み、
前記圧縮データは、前記以前データブロックの前記一部と前記現在データブロックとを含む拡張データブロックを圧縮して生成されるデータ圧縮回路。
【請求項９】
前記第１メモリ領域、前記第２メモリ領域、及び前記第３メモリ領域のそれぞれは、インターリービング方式で割り当てられ、独立してアクセス可能な互いに異なるメモリに具現される請求項８に記載のデータ圧縮回路。
【請求項１０】
前記バッファメモリコントローラは、前記第１メモリ領域から前記以前参照データブロックの前記一部と、前記第２メモリ領域から前記現在参照データブロックとを並列的にリードした後、前記現在データブロックを前記第３メモリ領域にライトする請求項８に記載のデータ圧縮回路。
【請求項１１】
前記バッファメモリコントローラは、
前記アドレスを用いて、前記第１メモリ領域に対する第１アドレスと前記第２メモリ領域に対する第２アドレスとを生成するアドレス生成器と、
前記第１アドレスを用いて、前記第１メモリ領域から前記以前参照データブロックの前記一部と、前記第２アドレスを用いて、前記第２メモリ領域から前記現在参照データブロックとを並列的にリードし、前記現在データブロックに対する第３アドレスに基づいて、前記現在データブロックを前記第３メモリ領域にライトするバッファメモリアクセス制御回路と、
を含む請求項８に記載のデータ圧縮回路。
【請求項１２】
前記比較回路は、前記以前データブロックの前記一部と前記以前参照データブロックの前記一部とがマッチするか否かと、前記現在データブロックと前記現在参照データブロックとがマッチするか否かとを並列的に判断する請求項８に記載のデータ圧縮回路。
【請求項１３】
前記比較回路は、
前記以前データブロックの前記一部を保存するレジスタと、
前記レジスタから出力された前記以前データブロックの前記一部と前記バッファメモリコントローラから出力された前記以前参照データブロックの前記一部とがマッチするか否かを判断する第１比較器と、
前記現在データブロックと前記現在参照データブロックとがマッチするか否かを判断する第２比較器と、
前記第１比較器の出力信号と前記第２比較器の出力信号とに基づいて、前記マッチの有無を示すマッチ情報とマッチされたデータ長を示す長さ情報とを出力する長さ計算回路と、
前記以前データブロックの前記一部に対するアドレスと前記現在データブロックに対するアドレスとに基づいて距離情報を出力する距離計算回路と、を含み、
前記制御情報は、前記マッチ情報、前記長さ情報、及び前記距離情報を含む請求項８に記載のデータ圧縮回路。
【請求項１４】
前記圧縮データ生成回路は、
前記マッチ情報に基づいて選択信号を生成する選択信号生成回路と、
前記長さ情報と前記距離情報とに基づいて、前記圧縮データを生成するコード生成回路と、
前記選択信号に応答して、前記現在データブロックまたは前記圧縮データを出力する選択回路と、
を含む請求項１３に記載のデータ圧縮回路。
【請求項１５】
データ保存装置と、
以前データブロックと現在データブロックとを含むデータストリームを出力するホストと、
前記ホストから出力された前記データストリームをデータブロック単位または拡張データブロック単位でマッチするか否かを判断し、該判断の結果によって、前記データストリームを前記データブロック単位または前記拡張データブロック単位で圧縮し、該圧縮されたデータを前記データ保存装置に出力するメモリコントローラと、を含み、
前記メモリコントローラは、
前記以前データブロックに対してマッチするか否かを判断した後、前記以前データブロックの一部と前記現在データブロックとを含む拡張データブロックに対してマッチするか否かを判断するデータ処理装置。
【請求項１６】
前記メモリコントローラは、
第１メモリ領域、第２メモリ領域、及び第３メモリ領域を含むバッファメモリと、
アドレスに応答して、前記第１メモリ領域に保存された以前参照データブロックの一部と前記第２メモリ領域に保存された現在参照データブロックとを並列的に出力するバッファメモリコントローラと、
前記以前データブロックの前記一部と前記以前参照データブロックの前記一部とがマッチするか否かと、前記現在データブロックと前記現在参照データブロックとがマッチするか否かとを並列的に判断し、該判断の結果によって、制御情報を生成する比較回路と、
前記制御情報に基づいて、前記現在データブロックを出力するか、前記拡張データブロックを圧縮して生成された前記圧縮データを出力する圧縮データ生成回路と、
を含む請求項１５に記載のデータ処理装置。
【請求項１７】
前記第１メモリ領域、前記第２メモリ領域、及び前記第３メモリ領域のそれぞれは、インターリービング方式で割り当てられた互いに異なるアドレスを有する互いに異なるメモリに具現される請求項１６に記載のデータ処理装置。
【請求項１８】
前記バッファメモリコントローラは、
前記アドレスを用いて、前記第１メモリ領域に対する第１アドレスと前記第２メモリ領域に対する第２アドレスとを生成するアドレス生成器と、
前記第１アドレスを用いて、前記第１メモリ領域から前記以前参照データブロックの前記一部と、前記第２アドレスを用いて、前記第２メモリ領域から前記現在参照データブロックとを並列的にリードし、前記現在データブロックに対する第３アドレスに基づいて、前記現在データブロックを前記第３メモリ領域にライトするバッファメモリアクセス制御回路と、
を含む請求項１６に記載のデータ処理装置。
【請求項１９】
前記比較回路は、
前記以前データブロックの前記一部を保存するレジスタと、
前記レジスタから出力された前記以前データブロックの前記一部と前記バッファメモリコントローラから出力された前記以前参照データブロックの前記一部とがマッチするか否かを判断する第１比較器と、
前記現在データブロックと前記現在参照データブロックとがマッチするか否かを判断する第２比較器と、
前記第１比較器の出力信号と前記第２比較器の出力信号とに基づいて、前記マッチの有無を示すマッチ情報とマッチされたデータ長を示す長さ情報とを出力する長さ計算回路と、
前記以前データブロックの前記一部に対するアドレスと前記現在データブロックに対するアドレスとに基づいて距離情報を出力する距離計算回路と、を含み、
前記制御情報は、前記マッチ情報、前記長さ情報、及び前記距離情報を含む請求項１６に記載のデータ処理装置。
【請求項２０】
前記圧縮データ生成回路は、
前記マッチ情報に基づいて選択信号を生成する選択信号生成回路と、
前記長さ情報と前記距離情報とに基づいて、前記圧縮データを生成するコード生成回路と、
前記選択信号に応答して、前記現在データブロックまたは前記圧縮データを出力する選択回路と、
を含む請求項１９に記載のデータ処理装置。
【請求項２１】
前記拡張データブロックのサイズと前記現在データブロックのサイズとの比は、整数ではない請求項１５に記載のデータ処理装置。
【請求項２２】
前記データ保存装置は、フラッシュメモリ、ｅＭＭＣ、ＵＦＳ、ＵＳＢフラッシュドライバ、またはＳＳＤである請求項１５に記載のデータ処理装置。
【請求項２３】
前記データ処理装置は、スマートフォン、タブレットＰＣ、モバイルインターネット装置、または電子ブックである請求項１５に記載のデータ処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ圧縮技術に係り、特に、データ圧縮加速化（ｄａｔａ  ｃｏｍｐｒｅｓｓｉｏｎ  ａｃｃｅｌｅｒａｔｉｏｎ）と、データ圧縮加速化時に失なわれるデータ圧縮率（ｄａｔａ  ｃｏｍｐｒｅｓｓｉｏｎ  ｒａｔｉｏ）を補償することができるデータ圧縮方法と、該方法を行う装置とに関する。
【背景技術】
【０００２】
データ圧縮技術は、通信装置及び／またはデータ保存装置に、データの伝送速度を高め、装置の保存空間の活用性を高めるために多様な方式で適用されている。
このデータ圧縮技術は、フラッシュメモリ装置−基盤のデータ保存装置に保存されるデータのサイズを減らすことができるため、保存装置に対するライト回数及び／またはリード回数を減らすことができるだけではなく、保存装置の期待寿命を増加させることができる。
【０００３】
データ保存装置で使われるデータ圧縮方式として、無損失圧縮（ｌｏｓｅｌｅｓｓ  ｃｏｍｐｒｅｓｓｉｏｎ）方式と損失圧縮（ｌｏｓｓｙ  ｃｏｍｐｒｅｓｓｉｏｎ）方式とがある。無損失圧縮方式として、１９７７年と１９７８年とにＡｂｒａｈａｍ  ＬｅｍｐｅｌとＪａｃｏｂ  Ｚｉｖとによって論文として公開された２つの無損失データ圧縮アルゴリズムであるＬＺ７７とＬＺ７８、Ａｂｒａｈａｍ  Ｌｅｍｐｅｌ、Ｊａｃｏｂ  Ｚｉｖ、及びＴｅｒｒｙ  Ｗｅｌｃｈによって創造された一般的な無損失データ圧縮アルゴリズムであるＬＺＷ、またはＬｅｍｐｅｌ−Ｚｉｖ  Ｒｏｓｓ  Ｗｉｌｌｉａｍｓ（ＬＺＲＷ）と呼ばれる無損失データ圧縮アルゴリズムが使われる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】米国特許第６６５８１４８号公報
【特許文献２】米国特許第７４４１１５６号公報
【特許文献３】国際公開２００７−１３８６００号公報
【特許文献４】米国特許出願公開第２００４−０２５０００９号明細書
【特許文献５】米国特許出願公開第２００７−００５０５１４号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本発明が解決しようとする技術的な課題は、データ圧縮加速化と、データ圧縮加速化時に失なわれるデータ圧縮率を補償することができるデータ圧縮方法と、該方法を行う装置とを提供することにある。
【課題を解決するための手段】
【０００６】
本発明の実施形態によるデータ圧縮方法は、以前データブロックと現在データブロックとを含む入力データストリームを受信する段階と、前記以前データブロックの一部と以前参照データブロックの一部とを比較する第１比較と、前記現在データブロックと現在参照データブロックとを比較する第２比較とを並列的に実行する段階と、前記第１比較と前記第２比較との結果に基づいて、前記現在データブロックを出力するか、または拡張データブロックを圧縮する段階と、を含み、前記拡張データブロックは、前記以前データブロックの前記一部と前記現在データブロックとを含む。
【０００７】
前記現在参照データブロックが保存された第１メモリ領域と前記以前参照データブロックが保存された第２メモリ領域のそれぞれは、インターリービング方式で割り当てられ、独立してアクセス可能な互いに異なるメモリに具現される。前記拡張データブロックのサイズと前記現在データブロックのサイズとの比は、帯小数（ｍｉｘｅｄ  ｄｅｃｉｍａｌ）であり得る。
前記データ圧縮方法は、バッファメモリから前記以前参照データブロックの前記一部と前記現在参照データブロックとを並列的にリードする段階をさらに含む。
【０００８】
本発明の実施形態によるデータ圧縮方法は、以前データブロックと現在データブロックとを含む入力データストリームを受信する段階と、メモリから以前参照データブロックの一部と現在参照データブロックとを並列的にリードする段階と、前記以前データブロックの一部と前記以前参照データブロックの前記一部とに対する比較と、前記現在データブロックと前記現在参照データブロックとに対する比較とを並列的に行う段階と、前記以前データブロックの前記一部と前記以前参照データブロックの前記一部とがマッチ（ｍａｔｃｈ）され、前記現在データブロックと前記現在参照データブロックとがマッチされる時、拡張データブロックを圧縮する段階と、を含み、前記拡張データブロックは、前記以前データブロックの前記一部と前記現在データブロックとを含む。
【０００９】
前記データ圧縮方法は、前記以前データブロックの前記一部の少なくとも一部と前記以前参照データブロックの前記一部とがマッチされず、前記現在データブロックと前記現在参照データブロックとがマッチされない時、前記現在データブロックを選択的に圧縮または圧縮しない段階をさらに含む。
前記メモリは、前記現在参照データブロックが保存された第１メモリ領域と前記以前参照データブロックが保存された第２メモリ領域とを含むバッファメモリであり、前記第１メモリ領域と前記第２メモリ領域のそれぞれは、インターリービング方式で割り当てられ、独立してアクセス可能な互いに異なるメモリに具現される。
【００１０】
本発明の実施形態によるデータ圧縮回路は、第１メモリ領域、第２メモリ領域、及び第３メモリ領域を含むバッファメモリと、アドレスに応答して、前記第１メモリ領域に保存された以前参照データブロックの一部と前記第２メモリ領域に保存された現在参照データブロックとを出力するバッファメモリコントローラと、以前データブロックの一部と前記以前参照データブロックの一部とがマッチするか否かと、現在データブロックと前記現在参照データブロックとがマッチするか否かとを判断し、該判断の結果によって、制御情報を生成する比較回路と、前記制御情報に基づいて、前記現在データブロックを出力するか、圧縮データを出力する圧縮データ生成回路と、を含み、前記圧縮データは、前記以前データブロックの前記一部と前記現在データブロックとを含む拡張データブロックを圧縮して生成される。
【００１１】
前記バッファメモリコントローラは、前記第１メモリ領域から前記以前参照データブロックの前記一部と、前記第２メモリ領域から前記現在参照データブロックとを並列的にリードした後、前記現在データブロックを前記第３メモリ領域にライトする。
前記バッファメモリコントローラは、前記アドレスを用いて、前記第１メモリ領域に対する第１アドレスと前記第２メモリ領域に対する第２アドレスとを生成するアドレス生成器と、前記第１アドレスを用いて、前記第１メモリ領域から前記以前参照データブロックの前記一部と、前記第２アドレスを用いて、前記第２メモリ領域から前記現在参照データブロックとを並列的にリードし、前記現在データブロックに対する第３アドレスに基づいて、前記現在データブロックを前記第３メモリ領域にライトするバッファメモリアクセス制御回路と、を含む。
【００１２】
本発明の実施形態によるデータ処理装置は、データ保存装置と、以前データブロックと現在データブロックとを含むデータストリームを出力するホストと、前記ホストから出力された前記データストリームをデータブロック単位または拡張データブロック単位でマッチするか否かを判断し、該判断の結果によって、前記データストリームを前記データブロック単位または前記拡張データブロック単位で圧縮し、該圧縮されたデータを前記データ保存装置に出力するメモリコントローラと、を含み、前記メモリコントローラは、前記以前データブロックに対してマッチするか否かを判断した後、前記以前データブロックの一部と前記現在データブロックとを含む拡張データブロックに対してマッチするか否かを判断する。
【００１３】
前記メモリコントローラは、第１メモリ領域、第２メモリ領域、及び第３メモリ領域を含むバッファメモリと、アドレスに応答して、前記第１メモリ領域に保存された以前参照データブロックの一部と前記第２メモリ領域に保存された現在参照データブロックとを並列的に出力するバッファメモリコントローラと、前記以前データブロックの前記一部と前記以前参照データブロックの前記一部とがマッチするか否かと、前記現在データブロックと前記現在参照データブロックとがマッチするか否かとを並列的に判断し、該判断の結果によって、制御情報を生成する比較回路と、前記制御情報に基づいて、前記現在データブロックを出力するか、前記拡張データブロックを圧縮して生成された前記圧縮データを出力する圧縮データ生成回路と、を含む。
【００１４】
前記第１メモリ領域、前記第２メモリ領域、及び前記第３メモリ領域のそれぞれは、インターリービング方式で割り当てられた互いに異なるアドレスを有する互いに異なるメモリに具現される。
前記拡張データブロックのサイズと前記現在データブロックのサイズとの比は、整数ではない。前記データ保存装置は、フラッシュメモリ、ｅＭＭＣ（ｅｍｂｅｄｄｅｄ  ＭｕｌｔｉＭｅｄｉａ  Ｃａｒｄ）、ＵＦＳ（Ｕｎｉｖｅｒｓａｌ  Ｆｌａｓｈ  Ｓｔｏｒａｇｅ）、ＵＳＢフラッシュドライバ、またはＳＳＤ（Ｓｏｌｉｄ−Ｓｔａｔｅ  Ｄｒｉｖｅ）である。前記データ処理装置は、スマートフォン、タブレットＰＣ、モバイルインターネット装置（ｍｏｂｉｌｅ  ｉｎｔｅｒｎｅｔ  ｄｅｖｉｃｅ）、または電子ブックである。
【発明の効果】
【００１５】
本発明の実施形態によるデータ圧縮方法とデータ圧縮装置は、データブロック単位でデータブロックを圧縮することができるので、データ圧縮速度を増加させうるだけではなく、拡張データブロックを圧縮することができるので、圧縮率の減少を防止することができる。
本発明の実施形態によるデータ圧縮方法とデータ圧縮装置は、インターリーブされたメモリ、または互いに独立してアクセス可能なメモリを使って、拡張参照データブロックを処理するので、圧縮効率を向上させうる。本発明の実施形態によるデータ圧縮方法とデータ圧縮装置は、既に処理されたデータブロックの一部に対しても、以前参照データブロックの一部とマッチするか否かを判断することができるので、データ圧縮率またはデータ圧縮効率を向上させうる。
【図面の簡単な説明】
【００１６】
【図１Ａ】本発明の実施形態によるデータ処理装置のブロック図。
【図１Ｂ】本発明の他の実施形態によるデータ処理装置のブロック図。
【図１Ｃ】本発明の他の実施形態によるデータ処理装置のブロック図。
【図２】図１Ａに示されたデータ圧縮回路のブロック図。
【図３】図２に示されたハッシュキー生成回路のブロック図。
【図４】図２に示されたハッシュキー生成回路の動作を説明する概念図。
【図５】図２に示されたバッファメモリコントローラとバッファメモリのブロック図。
【図６】図２に示されたバッファメモリコントローラのブロック図。
【図７】図２に示された比較回路のブロック図。
【図８】図２に示された圧縮データ生成回路のブロック図。
【図９】図２に示されたデータ圧縮解除回路のブロック図。
【図１０】本発明の一実施形態によるデータ圧縮方法を説明するフローチャート。
【図１１】本発明の他の実施形態によるデータ圧縮方法を説明するフローチャート。
【図１２】図１１に示されたデータ圧縮方法を説明する概念図。
【発明を実施するための形態】
【００１７】
以下、添付した図面を参照して、本発明を詳しく説明する。
図１Ａは、本発明の実施形態によるデータ処理装置のブロック図を示す。図１Ａを参照すれば、データ処理装置１００は、ホスト１１０、メモリコントローラ２００、第１データ保存装置１３０、及び第２データ保存装置１５０を含む。
メモリコントローラ２００と第１データ保存装置１３０は、１つのパッケージ、例えば、マルチチップパッケージ（ｍｕｌｔｉ−ｃｈｉｐ  ｐａｃｋａｇｅ）でパッケージング（ｐａｃｋｉｎｇ）されうる。
【００１８】
データ処理装置１００は、ＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）、データサーバ、または携帯用電子装置（ｐｏｒｔａｂｌｅ  ｅｌｅｃｔｒｏｎｉｃ  ｄｅｖｉｃｅ）として具現可能である。携帯用電子装置は、ラップトップコンピュータ（ｌａｐｔｏｐ  ｃｏｍｐｕｔｅｒ）、携帯電話、スマートフォン（ｓｍａｒｔ  ｐｈｏｎｅ）、タブレット（ｔａｂｌｅｔ）ＰＣ、ＰＤＡ（Ｐｅｒｓｏｎａｌ  Ｄｉｇｉｔａｌ  Ａｓｓｉｓｔａｎｔ）、ＥＤＡ（Ｅｎｔｅｒｐｒｉｓｅ  Ｄｉｇｉｔａｌ  Ａｓｓｉｓｔａｎｔ）、デジタルスチルカメラ（ｄｉｇｉｔａｌ  ｓｔｉｌｌ  ｃａｍｅｒａ）、デジタルビデオカメラ（ｄｉｇｉｔａｌ  ｖｉｄｅｏ  ｃａｍｅｒａ）、ＰＭＰ（Ｐｏｒｔａｂｌｅ  ＭｕｌｔｉｍｅｄｉａＰｌａｙｅｒ）、ＰＮＤ（Ｐｅｒｓｏｎａｌ  Ｎａｖｉｇａｔｉｏｎ  ＤｅｖｉｃｅまたはＰｏｒｔａｂｌｅ  Ｎａｖｉｇａｔｉｏｎ  Ｄｅｖｉｃｅ）、携帯用ゲームコンソール（ｈａｎｄｈｅｌｄ  ｇａｍｅ  ｃｏｎｓｏｌｅ）、モバイルインターネット装置（ｍｏｂｉｌｅ  ｉｎｔｅｒｎｅｔ  ｄｅｖｉｃｅ）、または電子ブック（ｅ−ｂｏｏｋ）として具現可能である。
【００１９】
ホスト１１０は、複数のデータブロックを含む入力データストリームＩＤＳをメモリコントローラ２００に出力することができる。データ圧縮を迅速に処理するために、複数のデータブロックのそれぞれは、Ｎ（Ｎは、２以上の自然数）バイト（ｂｙｔｅ）単位で処理されうる。また、ホスト１１０は、メモリコントローラ２００から出力された出力データストリームＤＤＳを受信することができる。
【００２０】
メモリコントローラ２００は、データブロック単位で複数のデータブロックのそれぞれを処理、例えば、圧縮またはバイパス（ｂｙｐａｓｓ）することができる。また、圧縮率を向上させるために、メモリコントローラ２００は、処理される現在データブロックと以前データブロックとの一部を含む拡張データブロックを圧縮することができる。例えば、拡張データブロックのサイズとデータブロックのサイズとの比は、帯小数、例えば、拡張データブロックのバイトサイズ（ｂｙｔｅ  ｓｉｚｅ）は、データブロックのバイトサイズよりも大きい。しかし、拡張データブロックのバイトサイズは、データブロックのバイトサイズの正確な倍数ではない。
【００２１】
本明細書では、説明の便宜上、データブロックは、４バイトであり、拡張データブロックは、６バイトであると仮定するが、発明の概念は、処理されるバイトの数に限定されるものではない。
メモリコントローラ２００は、ホスト１１０、第１データ保存装置１３０、及び第２データ保存装置１５０の間で送受信するデータ及び／または命令を対応するインターフェースプロトコル（ｉｎｔｅｒｆａｃｅ  ｐｒｏｔｏｃｏｌ）によってインターフェーシング（ｉｎｆｅｒｆａｃｉｎｇ）または処理することができる。
【００２２】
メモリコントローラ２００は、ホストインターフェース２１０、データ圧縮回路（ｄａｔａ  ｃｏｍｐｒｅｓｓｉｏｎ  ｃｉｒｃｕｉｔ）２３０、ＣＰＵ（または、プロセッサ）２４０、第１メモリコントローラ２５０、第２メモリコントローラ２６０、及びデータ圧縮解除回路（ｄａｔａ  ｄｅ−ｃｏｍｐｒｅｓｓｉｏｎ  ｃｉｒｃｕｉｔ）２７０を含む。例えば、メモリコントローラ２００は、システム・オン・チップ（ｓｙｓｔｅｍ  ｏｎ  ｃｈｉｐ：ＳｏＣ）として具現可能である。
【００２３】
ホストインターフェース２１０、例えば、ホストサイドインターフェース（ｈｏｓｔ  ｓｉｄｅ  ｉｎｔｅｒｆａｃｅ）は、ホスト１１０とメモリコントローラ２００との間で送受信するデータ及び／または命令をインターフェーシングする。
例えば、ホストインターフェース２１０は、データ圧縮動作の間には、ホスト１１０から出力された入力データストリームＩＤＳをデータ圧縮回路２３０に伝送し、データ圧縮解除動作の間には、データ圧縮解除回路２７０から出力された圧縮解除されたデータストリームＤＤＳをホスト１１０に伝送する。
【００２４】
データ圧縮回路２３０は、ＣＰＵ２４０の制御によって、データブロック単位でブロックデータを処理（例えば、圧縮またはバイパス）するか、または拡張データを処理（例えば、圧縮）することができる。したがって、データブロックまたは拡張データブロックを処理するデータ圧縮回路２３０は、圧縮処理を加速化しながらも、圧縮率低下を最小化することができる。データ圧縮回路２３０は、エンコーダの機能を行う。
ＣＰＵ２４０は、データバス２４１を通じてデータ圧縮回路２３０、第１メモリコントローラ２５０、第２メモリコントローラ２６０、及びデータ圧縮解除回路２７０のうちの少なくとも１つの動作を制御することができる。
【００２５】
第１メモリコントローラ２５０は、第１データ保存装置１３０のインターフェースプロトコルによって、メモリコントローラ２００と第１データ保存装置１３０との間で送受信するデータ及び／または命令をインターフェーシングすることができる。例えば、第１データ保存装置１３０が、ＮＡＮＤフラッシュメモリである時、第１メモリコントローラ２５０は、ＮＡＮＤフラッシュメモリコントローラとして具現可能である。
【００２６】
第２メモリコントローラ２６０は、第２データ保存装置１５０のインターフェースプロトコルによって、メモリコントローラ２００と第２データ保存装置１５０との間で送受信するデータ及び／または命令をインターフェーシングすることができる。例えば、第２データ保存装置１５０が、ＤＲＡＭである時、第２メモリコントローラ２６０は、ＤＲＡＭコントローラとして具現可能である。
【００２７】
データ圧縮解除回路２７０は、圧縮されたデータを圧縮解除し、この圧縮解除されたデータストリームＤＤＳをホストインターフェース２１０を通じてホスト１１０に伝送しうる。データ圧縮解除回路２７０は、デコーダの機能を行う。
実施形態によって、第１データ保存装置１３０は、フラッシュ−基盤のメモリ、例えば、フラッシュメモリ、ｅＭＭＣ、ＵＦＳ、ＵＳＢフラッシュドライブ（ＵＳＢ  ｆｌａｓｈｄｒｉｖｅ）、またはＳＳＤであり得る。
【００２８】
他の実施形態によって、第１データ保存装置１３０は、不揮発性メモリであり得る。この不揮発性メモリは、ＥＥＰＲＯＭ（Ｅｌｅｃｔｒｉｃａｌｌｙ  Ｅｒａｓａｂｌｅ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｒｅａｄ−Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＭＲＡＭ（Ｍａｇｎｅｔｉｃ  ＲＡＭ）、スピン伝達トルクＭＲＡＭ（Ｓｐｉｎ−Ｔｒａｎｓｆｅｒ  ＴｏｒｑｕｅＭＲＡＭ）、Ｃｏｎｄｕｃｔｉｖｅ  ｂｒｉｄｇｉｎｇ  ＲＡＭ（ＣＢＲＡＭ）、ＦｅＲＡＭ（Ｆｅｒｒｏｅｌｅｃｔｒｉｃ  ＲＡＭ）、ＰＲＡＭ（Ｐｈａｓｅ  ｃｈａｎｇｅ  ＲＡＭ）、抵抗メモリ（Ｒｅｓｉｓｔｉｖｅ  ＲＡＭ：ＲｅＲＡＭ）、ナノチューブＲＲＡＭ（登録商標）（Ｎａｎｏｔｕｂｅ  ＲＲＡＭ）、ポリマーＲＡＭ（Ｐｏｌｙｍｅｒ  ＲＡＭ：ＰｏＲＡＭ）、ナノ浮遊ゲートメモリ（Ｎａｎｏ  Ｆｌｏａｔｉｎｇ  Ｇａｔｅ  Ｍｅｍｏｒｙ：ＮＦＧＭ）、ホログラフィックメモリ（ｈｏｌｏｇｒａｐｈｉｃ  ｍｅｍｏｒｙ）、分子電子メモリ素子（Ｍｏｌｅｃｕｌａｒ  Ｅｌｅｃｔｒｏｎｉｃｓ  Ｍｅｍｏｒｙ  Ｄｅｖｉｃｅ）、または絶縁抵抗変化メモリ（Ｉｎｓｕｌａｔｏｒ  Ｒｅｓｉｓｔａｎｃｅ  ＣｈａｎｇｅＭｅｍｏｒｙ）であり得る。
【００２９】
さらに他の実施形態によって、第１データ保存装置１３０は、ハードディスクドライブ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）であり得る。第２データ保存装置１５０は、ＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）またはＤＤＲ  ＳＤＲＡＭ（Ｄｏｕｂｌｅ  Ｄａｔａ  Ｒａｔｅ  Ｓｙｎｃｈｒｏｎｏｕｓ  ＤｙｎａｍｉｃＲａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）であり得る。
例えば、第１データ保存装置１３０に／から入力／出力されるデータは、第２メモリコントローラ２６０の制御によって第２データ保存装置１５０に臨時保存することができる。
【００３０】
図１Ｂと図１Ｃは、本発明の他の実施形態によるデータ処理装置のブロック図を示す。図１Ａから図１Ｃに示したように、データ圧縮回路２３０及び／またはデータ圧縮解除回路２７０の設計位置は、実施形態によって多様に変更されうる。
例えば、図１Ｂで、データ圧縮回路２３０は、データバス２４１を通じてホストインターフェース２１０から入力データストリームＩＤＳを受信し、データ圧縮解除回路２７０は、データバス２４１を通じてホストインターフェース２１０に出力データストリームＤＤＳを出力する。図１Ｃで、データ圧縮回路２３０とデータ圧縮解除回路２７０は、データバス２４１と第１メモリコントローラ２５０との間に位置する。
【００３１】
図２は、図１Ａに示されたデータ圧縮回路のブロック図を示す。図２を参照すれば、データ圧縮回路２３０は、入力データレジスタ２３１、ハッシュキー（ｈａｓｈ  ｋｅｙ）生成回路２３３、バッファメモリコントローラ２３７、バッファメモリ２３９、比較回路２４１、及び圧縮データ生成回路２４３を含む。
入力データレジスタ２３１は、入力データストリームＩＤＳを受信し、入力データストリームＩＤＳに含まれた複数のデータブロックのそれぞれの遅延（ｄｅｌａｙ）を対応する遅延回路Ｄ１、Ｄ２、及びＤ３を用いて調節し、遅延調節された複数のデータブロックのそれぞれＤＡＴＡ２、ＤＡＴＡ３、及びＤＡＴＡ４を複数の処理回路２３７、２４１、及び２４３のそれぞれに伝送する。
【００３２】
各遅延回路Ｄ１、Ｄ２、及びＤ３の遅延は、各処理回路２３３、２３７、及び２４１の処理時間によって調節される。
入力データレジスタ２３１は、入力データストリームＩＤＳに含まれたデータブロックＤＡＴＡ１をハッシュキー生成回路２３３に伝送し、第１遅延データブロックＤＡＴＡ２をバッファメモリコントローラ２３７に伝送し、第２遅延データブロックＤＡＴＡ３を比較回路２４１に伝送し、第３遅延データブロックＤＡＴＡ４を圧縮データ生成回路２４３に伝送する。遅延を無視すれば、各データブロックＤＡＴＡ１、ＤＡＴＡ２、ＤＡＴＡ３、及びＤＡＴＡ４は、同じデータブロックである。
【００３３】
図３は、図２に示されたハッシュキー生成回路のブロック図を示す。図３を参照すれば、ハッシュキー生成回路２３３は、順次に入力される各データブロック（または、各データパターン）ＤＡＴＡ１に対応するハッシュキーＨｉを生成し、この生成されたハッシュキーＨｉに該当するハッシュキーテーブル２３５のエントリ（ｅｎｔｒｙ）に前記各データブロックが存在する（または、保存された）バッファメモリ２３９に含まれた各保存領域の位置（ｐｏｓｉｔｉｏｎ）またはアドレス（ａｄｄｒｅｓｓ）をライト（ｗｒｉｔｅ）する。
ハッシュキー生成回路２３３は、ハッシュキー生成器２３３−１、第１カウンター２３３−２、及びハッシュキーテーブル２３５を含む。
【００３４】
図４は、図２に示されたハッシュキー生成回路の動作を説明する概念図である。図３と図４とを参照すれば、ハッシュキー生成器２３３−１は、１つのデータブロックを構成するＬ（Ｌは、自然数、説明の便宜上、本明細書で、Ｌ＝４）バイト単位でハッシュキーＨｉを生成し、この生成されたハッシュキーＨｉをハッシュキーテーブル２３５に出力する。
【００３５】
第１カウンタ２３３−２は、各データブロックＤＡＴＡ１に含まれた複数のバイトをバイト単位でカウントし、このカウントの結果によって、第１カウント値ＢＣＮＴをハッシュキーテーブル２３５に出力する。
ハッシュキーテーブル２３５は、ハッシュキーＨｉによって指定されたエントリに第１カウント値ＢＣＮＴを保存する。この際、第１カウント値ＢＣＮＴは、アドレスＡＤＤに対応しうる。
【００３６】
例えば、ハッシュキー生成器２３３−１は、第１処理ユニットＰＵ１、すなわち、４バイト（Ａ１Ａ２Ａ３Ａ４）に相応するハッシュキーＨ０を生成し、カウンタ２３３−２は、４バイト（Ａ１Ａ２Ａ３Ａ４）の開始位置を指示する第１カウント値ＢＣＮＴとしてＯｘ００を生成する。
ハッシュキーテーブル２３５は、ハッシュキーＨ０によって指定されたエントリに第１カウント値ＢＣＮＴまたはアドレスＡＤＤ、すなわち、Ｏｘ００を保存する。この際、ハッシュキーテーブル２３５は、第１処理ユニット（ＰＵ１＝Ａ１Ａ２Ａ３Ａ４）に対するアドレスＡＤＤとしてＯｘ００を出力することができる。
【００３７】
また、ハッシュキー生成器２３３−１は、次の４バイト（Ａ２Ａ３Ａ４Ｂ５）に相応するハッシュキーＨ２を生成し、カウンタ２３３−２は、次の４バイト（Ａ２Ａ３Ａ４Ｂ５）の開始位置を指示する第１カウント値ＢＣＮＴとしてＯｘ０１を生成する。
ハッシュキー生成器２３３−１は、次の４バイト（Ａ３Ａ４Ｂ５Ｂ６）に相応するハッシュキーＨ４を生成し、カウンタ２３３−２は、４バイト（Ａ３Ａ４Ｂ５Ｂ６）の開始位置を指示する第１カウント値ＢＣＮＴとしてＯｘ０２を生成する。ハッシュキー生成器２３３−１は、次の４バイト（Ａ４Ｂ５Ｂ６Ｂ７）に相応するハッシュキーＨ６を生成し、カウンタ２３３−２は、４バイト（Ａ４Ｂ５Ｂ６Ｂ７）の開始位置を指示する第１カウント値ＢＣＮＴとしてＯｘ０３を生成する。
【００３８】
ハッシュキー生成器２３３−１は、第２処理ユニットＰＵ２、すなわち、４バイト（Ｂ５Ｂ６Ｂ７Ｂ８）に相応するハッシュキーＨ８を生成し、カウンタ２３３−２は、４バイト（Ｂ５Ｂ６Ｂ７Ｂ８）の開始位置を指示する第１カウント値ＢＣＮＴとしてＯｘ０４を生成する。この際、ハッシュキーテーブル２３５は、第２処理ユニット（ＰＵ２＝Ｂ５Ｂ６Ｂ７Ｂ８）に対するアドレスＡＤＤとしてＯｘ０４を出力することができる。
【００３９】
ハッシュキー生成器２３３−１は、第３処理ユニットＰＵ３、すなわち、４バイト（Ｃ１Ｃ２Ａ３Ａ４）に相応するハッシュキーを生成し、カウンタ２３３−２は、４バイト（Ｃ１Ｃ２Ａ３Ａ４）の開始位置を指示する第１カウント値ＢＣＮＴとしてＯｘ０８を生成する。この際、ハッシュキーテーブル２３５は、第３処理ユニット（ＰＵ３＝Ｃ１Ｃ２Ａ３Ａ４）に対するアドレスＡＤＤとしてＯｘ０８を出力することができる。
【００４０】
ハッシュキー生成器２３３−１は、第４処理ユニットＰＵ４、すなわち、４バイト（Ｂ１Ｂ２Ｂ３Ｂ４）に相応するハッシュキーＨ１を生成し、カウンタ２３３−２は、４バイト（Ｂ１Ｂ２Ｂ３Ｂ４）の開始位置を指示する第１カウント値ＢＣＮＴとしてＯｘ０Ｃを生成する。この際、ハッシュキーテーブル２３５は、アドレスＡＤＤとしてＯｘ０Ｃを出力することができる。
【００４１】
ハッシュキー生成器２３３−１は、第５処理ユニットＰＵ５、すなわち、４バイト（Ｃ３Ｃ４Ａ３Ａ４）に相応するハッシュキーＨ７を生成し、カウンタ２３３−２は、４バイト（Ｃ３Ｃ４Ａ３Ａ４）の開始位置を指示する第１カウント値ＢＣＮＴとしてＯｘ４０を生成する。この際、ハッシュキーテーブル２３５は、アドレスＡＤＤとしてＯｘ４０を出力することができる。
【００４２】
第４処理ユニット（ＰＵ４＝Ｂ１Ｂ２Ｂ３Ｂ４）と同一の第６処理ユニット（ＰＵ６＝Ｂ１Ｂ２Ｂ３Ｂ４）が、ハッシュキー生成器２３３−１に入力されれば、ハッシュキー生成器２３３−１は、第４処理ユニットＰＵ４に対するハッシュキーＨ１と同一のハッシュキーＨ１を生成し、カウンタ２３３−２は、第６処理ユニットＰＵ６の４バイト（Ｂ１Ｂ２Ｂ３Ｂ４）の開始位置を指示する第１カウント値ＢＣＮＴとしてＯｘ４４を生成する。
【００４３】
この際、ハッシュキーテーブル２３５は、第６処理ユニット（ＰＵ６＝Ｂ１Ｂ２Ｂ３Ｂ４）に対するアドレスＡＤＤとしてＯｘ４４を出力する代わりに、ＯｘＯＣを出力する。この際、ハッシュキーＨ１に相応するエントリのアドレスＡＤＤは、Ｏｘ０ＣからＯｘ４４にアップデートされる。
処理される現在データブロックが、以前データブロックとマッチまたは同一である時、ハッシュキーテーブル２３５は、データブロック単位で生成されたハッシュキーＨｉに対応するアドレスＡＤＤをバッファメモリコントローラ２３７に出力することができる。
【００４４】
図５は、図２に示されたバッファメモリコントローラとバッファメモリとのブロック図を示す。バッファメモリコントローラ２３７は、ハッシュキー生成回路２３３から出力されたアドレスＡＤＤに基づいて、互いに異なるメモリ２３９−１〜２３９−４のうちの何れか１つに保存された以前参照データブロックの一部とメモリ２３９−１〜２３９−４のうちの他の１つに保存された現在参照データブロックとを含む拡張参照データブロックＭＤＡＴＡと、拡張参照データブロックＭＤＡＴＡの開始位置を指示する拡張参照データブロック開始アドレスＭＤＡＴＡ＿ＡＤＤを比較回路２４１に伝送する。
【００４５】
また、バッファメモリコントローラ２３７は、第１遅延データブロックＤＡＴＡ２の開始位置を指示するライトアドレスに応答して、第１遅延データブロックＤＡＴＡ２をインターリーブされた構造を有する複数のメモリ２３９−１〜２３９−４のうちの何れか１つにライトする。
バッファメモリ２３９は、インターリービング（ｉｎｔｅｒｌｅａｖｉｎｇ）方式で割り当てられ、独立してアクセス可能な互いに異なる複数のメモリ２３９−１〜２３９−４を含む。複数のメモリ２３９−１〜２３９−４のそれぞれは、デュアルポート（ｄｕａｌ−ｐｏｒｔ）ＳＲＡＭとして具現可能である。このデュアルポートＳＲＡＭは、シングルポート（ｓｉｎｇｌｅ−ｐｏｒｔ）ＳＲＡＭと異なって、同一のサイクル内でリード動作とライト動作とを同時に行うことができる。
【００４６】
バッファメモリコントローラ２３７が、インターリービング方式で割り当てられた互いに異なるアドレスを有する互いに異なる複数のメモリ２３９−１〜２３９−４を利用できるので、バッファメモリコントローラ２３７は、以前参照データブロックの一部と現在参照データブロックとを同時、または並列的にリード（ｒｅａｄ）することができる。
【００４７】
図６は、図２に示されたバッファメモリコントローラのブロック図を示す。第１処理ユニットＰＵ１、すなわち、最初データブロック（Ａ１Ａ２Ａ３Ａ４）が処理される過程が、図１Ａから図８までを参照して詳しく説明される。
ハッシュキー生成回路２３３から第１処理ユニットＰＵ１に対するハッシュキーＨ０に対応するデータブロック（Ａ１Ａ２Ａ３Ａ４）の開始位置を指示するアドレス（ＡＤＤ＝Ｏｘ００）が入力され、第１遅延データブロック（ＤＡＴＡ２＝Ａ１Ａ２Ａ３Ａ４）が入力データレジスタ２３１を通じて入力されれば、バッファメモリコントローラ２３７のアドレス生成器２３７−１は、現在参照アドレスＡＤＤ＿Ｃと直前（ｉｍｍｅｄｉａｔｅｌｙ  ｐｒｅｖｉｏｕｓ；または、以前（ｐｒｅｖｉｏｕｓ））参照アドレスＡＤＤ＿Ｐとを生成する。
【００４８】
この際、現在参照アドレスＡＤＤ＿Ｃは、ハッシュキー生成回路２３３から出力されたアドレス（ＡＤＤ＝Ｏｘ００）と同一であり、直前参照アドレスＡＤＤ＿Ｐは、すぐ隣接するメモリのメモリ領域のアドレスを示す。第１処理ユニットＰＵ１のデータブロックが最初データブロックである時、直前参照アドレスＡＤＤ＿Ｐは、デフォルトとして設定されたアドレスであり得る。
図６の第２カウンタ２３７−２は、第１遅延データブロック（ＤＡＴＡ２＝Ａ１Ａ２Ａ３Ａ４）の開始位置をカウントし、第２カウント値（ＢＣＮＴ１＝Ｏｘ００）を生成する。この際、第２カウント値ＢＣＮＴ１は、第１遅延データブロック（ＤＡＴＡ２＝Ａ１Ａ２Ａ３Ａ４）が保存されるメモリ領域のアドレスに相応する。
【００４９】
図６では、第２カウンタ２３７−２が示されているが、実施形態によって、第２カウンタ２３７−２が具現されない場合、第２カウント値ＢＣＮＴ１の代わりに、図３の第１カウンタ２３３−２の第１カウント値（ＢＣＮＴ＝Ｏｘ００）が、直接バッファメモリアクセス制御回路２７３−３に入力されうる。
バッファメモリアクセス制御回路２７３−３は、現在参照アドレス（ＡＤＤ＿Ｃ＝Ｏｘ００）に対応する第１メモリ領域ＭＲ１に保存された現在参照データブロック、例えば、４バイト（Ｘ１Ｘ２Ｘ３Ｘ４）とデフォルトとして設定された直前参照アドレスＡＤＤ＿Ｐに対応するメモリ領域に保存された直前参照データブロックの一部、例えば、２バイトを並列的にリードする。ここで、直前参照データブロックは、デフォルトとして選択されたメモリ領域に保存されたデータブロックであり得る。
【００５０】
次いで、バッファメモリアクセス制御回路２７３−３は、アドレス（ＡＤＤ＝Ｏｘ００）に対応する第１メモリ２３９−１の第１メモリ領域ＭＲ１に第１遅延データブロック（ＤＡＴＡ２＝Ａ１Ａ２Ａ３Ａ４）をライトする。したがって、現在参照データブロック（Ｘ１Ｘ２Ｘ３Ｘ４）は、第１遅延データブロック（ＤＡＴＡ２＝Ａ１Ａ２Ａ３Ａ４）にアップデートされる。
【００５１】
バッファメモリアクセス制御回路２７３−３は、直前参照データブロックの一部と第１メモリ領域ＭＲ１に保存された現在参照データブロック（Ｘ１Ｘ２Ｘ３Ｘ４）とを含む拡張参照データブロックＭＤＡＴＡ、例えば、６バイトを比較回路２４１に出力することができる。また、バッファメモリアクセス制御回路２７３−３は、拡張参照データブロックＭＤＡＴＡの開始位置を示す拡張参照データブロック開始アドレスＭＤＡＴＡ＿ＡＤＤを比較回路２４１に出力することができる。
【００５２】
図７は、図２に示された比較回路のブロック図を示す。レジスタ３０１は、第２遅延データブロック（ＤＡＴＡ３＝Ａ１Ａ２Ａ３Ａ４）が入力される直前のデータブロックのうちの一部を保存する。第２遅延データブロック（ＤＡＴＡ３＝Ａ１Ａ２Ａ３Ａ４）が最初データブロックである時、レジスタ３０１に保存された２バイトは、デフォルトとして設定されたデータであり得る。
【００５３】
第１比較器３０３は、レジスタ３０１に保存された２バイトＰＤＡＴＡ１と直前参照データブロックの一部ＰＤＡＴＡとを互いに比較し、この比較の結果によって、第１比較信号ＣＰ１を生成する。それと同時に、または並列的に、第２比較器３０５は、現在参照データブロック（ＲＤＡＴＡ＝Ｘ１Ｘ２Ｘ３Ｘ４）と第２遅延データブロック（ＤＡＴＡ３＝Ａ１Ａ２Ａ３Ａ４）とを互いに比較し、この比較の結果によって、第２比較信号ＣＰ２を生成する。
【００５４】
長さ計算回路３１１は、第１比較信号ＣＰ１と第２比較信号ＣＰ２とに基づいて繰り返しデータ（ｒｅｐｅａｔｅｄ  ｄａｔａ）の長さを示す長さ情報Ｍａｔｃｈ＿ＬＥＮとマッチするか否かを示すマッチ情報Ｍａｔｃｈ＿ＦＬＡＧとを生成する。
レジスタ３０１に保存された２バイトＰＤＡＴＡ１と直前参照データブロックの一部ＰＤＡＴＡとが互いに一致せず、現在参照データブロック（ＲＤＡＴＡ＝Ｘ１Ｘ２Ｘ３Ｘ４）と第２遅延データブロック（ＤＡＴＡ３＝Ａ１Ａ２Ａ３Ａ４）とが互いに一致しないので、長さ計算回路３１１は、第１レベル、例えば、ハイレベルを有するマッチ情報Ｍａｔｃｈ＿ＦＬＡＧを出力することができる。この際、長さ計算回路３１１は、長さ情報Ｍａｔｃｈ＿ＬＥＮを生成しないこともある。
【００５５】
距離計算回路３０９は、拡張参照データブロック開始アドレスＭＤＡＴＡ＿ＡＤＤと第３カウント値ＢＣＮＴ２とに基づいて拡張データブロックの相対的な位置、距離またはオフセット（ｏｆｆｓｅｔ）を示す距離情報Ｍａｔｃｈ＿ＤＩＳを生成することができる。実施形態によって、距離計算回路３０９は、マッチ情報Ｍａｔｃｈ＿ＦＬＡＧに基づいてイネーブルまたはディセーブルされうる。
第３カウンタ３０７は、第２遅延データブロック（ＤＡＴＡ３＝Ａ１Ａ２Ａ３Ａ４）の開始位置をカウントし、このカウントの結果によって、第３カウント値ＢＣＮＴ２を生成することができる。
【００５６】
図７では、第３カウンタ３０７が別途に具現された例が示されているが、実施形態によって、第３カウンタ３０７が具現されない時、カウント値ＢＣＮＴ２の代わりに、図３に示された第１カウンタ２３３−２の第１カウント値ＢＣＮＴが、直接距離計算回路３０９に入力されることもある。
圧縮データ生成回路２４３の動作を制御することができる制御情報ＣＯＭＰは、長さ情報Ｍａｔｃｈ＿ＬＥＮ、マッチ情報Ｍａｔｃｈ＿ＦＬＡＧ、及び距離情報Ｍａｔｃｈ＿ＤＩＳを含む。
【００５７】
図８は、図２に示された圧縮データ生成回路のブロック図を示す。圧縮データ生成回路２４３は、制御情報ＣＯＭＰと第３遅延データブロックＤＡＴＡ４とに基づいてＬＬＤ（ｌｉｔｅｒａｌｓ  ａｎｄ  ｌｅｎｇｔｈ／ｄｉｓｔａｎｃｅ）データを生成することができる。
すなわち、圧縮データ生成回路２４３は、制御情報ＣＯＭＰに基づいて、処理される第３遅延データブロックＤＡＴＡ４が繰り返し（ｒｅｐｅａｔｅｄ）データブロックまたは繰り返しデータパターンであるか否かを判断し、この判断の結果によって、第３遅延データブロックＤＡＴＡ４を圧縮せず、そのまま出力するか、または第３遅延データブロックＤＡＴＡ４を含む拡張データブロックを圧縮することができる。
【００５８】
この際、圧縮されていないデータブロックは、第１エンコーディング方式によって生成されたデータ、例えば、“リテラル（ｌｉｔｅｒａｌ）データ”と言い、圧縮されたデータブロックまたは圧縮された拡張データブロックは、第２エンコーディング方式によって生成されたデータ、例えば、“長さ／距離データ”と言う。例えば、圧縮データ生成回路２４３は、有限状態マシン（ｆｉｎｉｔｅ  ｓｔａｔｅ  ｍａｃｈｉｎｅ）として具現可能である。
【００５９】
選択信号生成回路４０１は、マッチ情報Ｍａｔｃｈ＿ＦＬＡＧに応答して選択信号ＳＥＬを生成する。例えば、マッチ情報Ｍａｔｃｈ＿ＦＬＡＧが第１レベルを有する信号である時、選択回路４０５は、第１レベルを有するマッチ情報Ｍａｔｃｈ＿ＦＬＡＧに応答して、第２遅延データブロック（ＤＡＴＡ４＝Ａ１Ａ２Ａ３Ａ４）を圧縮せず、そのまま出力する。したがって、リテラルデータ（Ａ１Ａ２Ａ３Ａ４）が出力データＤＡＴＡＯとして出力される。引き続き第２処理ユニットＰＵ２のデータブロック（Ｂ５Ｂ６Ｂ７Ｂ８）が処理される過程が、図１Ａから図８までを参照して詳しく説明される。
【００６０】
ハッシュキー生成回路２３３から第２処理ユニットＰＵ２のデータブロック（Ｂ５Ｂ６Ｂ７Ｂ８）の開始位置を指示するアドレス（ＡＤＤ＝Ｏｘ０４）が入力され、第１遅延データブロック（ＤＡＴＡ２＝Ｂ５Ｂ６Ｂ７Ｂ８）が入力データレジスタ２３１を通じて入力されれば、アドレス生成器２３７−１は、現在参照アドレス（ＡＤＤ＿Ｃ＝Ｏｘ０４）と直前参照アドレス（ＡＤＤ＿Ｐ＝Ｏｘ００）とを生成する。
【００６１】
アドレス生成器２３７−１の具現例によって、直前参照アドレスＡＤＤ＿ＰとしてＯｘ０２が出力される時、バッファメモリアクセス制御回路２３７−３は、Ｏｘ０２とＯｘ０３とに保存されたデータを読み取る。また、アドレス生成器２３７−１の具現例によって、直前参照アドレスＡＤＤ＿ＰとしてＯｘ００が出力される時、バッファメモリアクセス制御回路２３７−３は、Ｏｘ０２とＯｘ０３とに保存されたデータを読み取る。
【００６２】
カウンタ２３７−２は、第１遅延データブロック（ＤＡＴＡ２＝Ｂ５Ｂ６Ｂ７Ｂ８）の開始位置をカウントし、このカウントの結果によって、第２カウント値（ＢＣＮＴ１＝Ｏｘ０４）、すなわち、ライトアドレスを生成する。
バッファメモリアクセス制御回路２７３−３は、現在参照アドレス（ＡＤＤ＿Ｃ＝Ｏｘ０４）に対応する第２メモリ２３９−２の第２メモリ領域ＭＲ２に保存された現在参照データブロック（Ｘ５Ｘ６Ｘ７Ｘ８）をリードすると同時に、直前参照アドレス（ＡＤＤ＿Ｐ＝Ｏｘ００）に対応する第１メモリ２３９−１の第１メモリ領域ＭＲ１に保存された直前参照データブロック（Ａ１Ａ２Ａ３Ａ４）の一部、例えば、２バイト（Ａ３Ａ４）をリードする。
【００６３】
そして、バッファメモリアクセス制御回路２７３−３は、ライトアドレス（ＢＣＮＴ１＝Ｏｘ０４、または実施形態によって、ＢＣＮＴ＝Ｏｘ０４）に応答して第２メモリ２３９−２の第２メモリ領域ＭＲ２に第１遅延データブロック（ＤＡＴＡ２＝Ｂ５Ｂ６Ｂ７Ｂ８）をライトする。したがって、第２メモリ領域ＭＲ２に保存された現在参照データブロック（Ｘ５Ｘ６Ｘ７Ｘ８）は、第１遅延データブロック（ＤＡＴＡ２＝Ｂ５Ｂ６Ｂ７Ｂ８）にアップデートされる。
【００６４】
バッファメモリアクセス制御回路２７３−３は、第１メモリ領域ＭＲ１に保存された直前参照データブロック（Ａ１Ａ２Ａ３Ａ４）の一部（Ａ３Ａ４）と第２メモリ領域ＭＲ２に保存された現在参照データブロック（Ｘ５Ｘ６Ｘ７Ｘ８）とを含む拡張参照データブロック（ＭＤＡＴＡ＝Ａ３Ａ４Ｘ５Ｘ６Ｘ７Ｘ８）、例えば、６バイトを比較回路２４１に出力する。また、バッファメモリアクセス制御回路２７３−３は、拡張参照データブロックＭＤＡＴＡの開始位置を示す拡張参照データブロック開始アドレス（ＭＤＡＴＡ＿ＡＤＤ＝Ｏｘ０２）を比較回路２４１に出力することができる。
【００６５】
図７のレジスタ３０１は、第２遅延データブロック（ＤＡＴＡ３＝Ｂ５Ｂ６Ｂ７Ｂ８）が入力される直前の複数のデータブロック（Ａ１Ａ２Ａ３Ａ４）のうちの一部（Ａ３Ａ４）を保存する。
第１比較器３０３は、レジスタ３０１に保存された２バイト（ＰＤＡＴＡ１＝Ａ３Ａ４）と直前参照データブロックの一部（ＰＤＡＴＡ＝Ａ３Ａ４）とを互いに比較し、この比較の結果によって、第１比較信号ＣＰ１を生成する。それと同時に、または並列的に、第２比較器３０５は、現在参照データブロック（ＲＤＡＴＡ＝Ｘ５Ｘ６Ｘ７Ｘ８）と第２遅延データブロック（ＤＡＴＡ３＝Ｂ５Ｂ６Ｂ７Ｂ８）とを互いに比較し、この比較の結果によって、第２比較信号ＣＰ２を生成する。
【００６６】
長さ計算回路３１１は、第１比較信号ＣＰ１と第２比較信号ＣＰ２とに基づいて長さ情報Ｍａｔｃｈ＿ＬＥＮとマッチ情報Ｍａｔｃｈ＿ＦＬＡＧとを生成する。
レジスタ３０１に保存された２バイト（ＰＤＡＴＡ１＝Ａ３Ａ４）と直前参照データブロックの一部（ＰＤＡＴＡ＝Ａ３Ａ４）とが互いに一致し、現在参照データブロック（ＲＤＡＴＡ＝Ｘ５Ｘ６Ｘ７Ｘ８）と第２遅延データブロック（ＤＡＴＡ３＝Ｂ５Ｂ６Ｂ７Ｂ８）とが互いに一致しないので、長さ計算回路３１１は、第１レベル、例えば、ハイレベルを有するマッチ情報Ｍａｔｃｈ＿ＦＬＡＧを出力する。
【００６７】
距離計算回路３０９は、拡張参照データブロック開始アドレス（ＭＤＡＴＡ＿ＡＤＤ＝Ｏｘ０２）とカウント値（ＢＣＮＴ２＝Ｏｘ０４）とに基づいて距離情報Ｍａｔｃｈ＿ＤＩＳを生成する。上述したように、距離計算回路３０９が、マッチ情報Ｍａｔｃｈ＿ＦＬＡＧによってイネーブル（ｅｎａｂｌｅ）またはディセーブル（ｄｉｓａｂｌｅ）される時、距離計算回路３０９は、第１レベルを有するマッチ情報Ｍａｔｃｈ＿ＦＬＡＧに応答してディセーブルされうる。
【００６８】
図８の選択回路４０５は、第１レベルを有するマッチ情報Ｍａｔｃｈ＿ＦＬＡＧに応答して第２遅延データブロック（ＤＡＴＡ４＝Ｂ５Ｂ６Ｂ７Ｂ８）を圧縮せず、そのまま出力する。すなわち、第２遅延データブロック（ＤＡＴＡ４＝Ｂ５Ｂ６Ｂ７Ｂ８）は、リテラルデータＤＡＴＡＯとして出力される。
第３処理ユニットＰＵ３のデータブロック（Ｃ１Ｃ２Ａ３Ａ４）、第４処理ユニットＰＵ４のデータブロック（Ｂ１Ｂ２Ｂ３４Ｂ）、及び第５処理ユニットＰＵ５のデータブロック（Ｃ３Ｃ４Ａ３Ａ４）が処理される過程は、第２処理ユニットＰＵ２のデータブロック（Ｂ５Ｂ６Ｂ７Ｂ８）が処理される過程と実質的に同一または類似している。
したがって、各メモリ領域ＭＲ３、ＭＲ４、及びＭＲ５に保存された各参照データブロックＹ１Ｙ２Ｙ３Ｙ４、Ｙ５Ｙ６Ｙ７Ｙ８、及びＺ１Ｚ２Ｚ３Ｚ４は、各データブロックＣ１Ｃ２Ａ３Ａ４、Ｂ１Ｂ２Ｂ３４Ｂ、及びＣ３Ｃ４Ａ３Ａ４にアップデートされる。
【００６９】
図８の選択回路４０５は、第１レベルを有するマッチ情報Ｍａｔｃｈ＿ＦＬＡＧに応答して、各第３遅延データブロック（ＤＡＴＡ４＝Ｃ１Ｃ２Ａ３Ａ４、Ｂ１Ｂ２Ｂ３４Ｂ、及びＣ３Ｃ４Ａ３Ａ４）を圧縮せず、そのまま出力する。すなわち、各第３遅延データブロック（ＤＡＴＡ４＝Ｃ１Ｃ２Ａ３Ａ４、Ｂ１Ｂ２Ｂ３４Ｂ、及びＣ３Ｃ４Ａ３Ａ４）は、リテラルデータＤＡＴＡＯとして出力される。
【００７０】
第６処理ユニットＰＵ６のデータブロック（Ｂ１Ｂ２Ｂ３Ｂ４）が処理される過程が、図１Ａから図８までを参照して詳しく説明される。
ハッシュキー生成回路２３３は、第６処理ユニットＰＵ６のデータブロック（Ｂ１Ｂ２Ｂ３Ｂ４）に対するハッシュキーＨ１を生成し、この生成されたハッシュキーＨ１に対応するハッシュキーテーブル２３５のエントリに保存された第１カウント値ＢＣＮＴ、例えば、第４処理ユニットＰＵ４のデータブロック（Ｂ１Ｂ２Ｂ３Ｂ４）の開始位置を指示するアドレス（ＡＤＤ＝Ｏｘ０Ｃ）をバッファメモリコントローラ２３７に出力する。
【００７１】
そして、ハッシュキー生成回路２３３は、生成されたハッシュキーＨ１に対応するエントリに保存された第１カウント値ＢＣＮＴ、Ｏｘ０Ｃを第６処理ユニットＰＵ６のデータブロック（Ｂ１Ｂ２Ｂ３Ｂ４）の開始位置を示す第１カウント値ＢＣＮＴ、Ｏｘ４４にアップデートする。したがって、新たなデータブロック（Ｂ１Ｂ２Ｂ３Ｂ４）が入力されれば、ハッシュキー生成回路２３３は、アップデートされた第１カウント値ＢＣＮＴ、Ｏｘ４４をアドレスＡＤＤとして出力する。
【００７２】
バッファメモリコントローラ２３７のアドレス生成器２３７−１は、アドレス（ＡＤＤ＝Ｏｘ０Ｃ）に応答して、現在参照アドレス（ＡＤＤ＿Ｃ＝Ｏｘ０Ｃ）と直前参照アドレス（ＡＤＤ＿Ｐ＝Ｏｘ０８）とを生成する。この際、カウンタ２３７−２は、第１遅延データブロック（ＤＡＴＡ２＝ＰＵ６＝Ｂ１Ｂ２Ｂ３Ｂ４）の開始位置をカウントし、該カウントの結果によって、第２カウント値（ＢＣＮＴ１＝Ｏｘ４４）、すなわち、ライトアドレスを生成する。
【００７３】
図６のバッファメモリアクセス制御回路２７３−３は、現在参照アドレス（ＡＤＤ＿Ｃ＝Ｏｘ０Ｃ）に対応する第４メモリ領域ＭＲ４に保存された現在参照データブロック（Ｂ１Ｂ２Ｂ３Ｂ４）をリードすると同時に、直前参照アドレス（ＡＤＤ＿Ｐ＝Ｏｘ０８）に対応する第３メモリ領域ＭＲ３に保存された直前参照データブロック（Ｃ１Ｃ２Ａ３Ａ４）の一部、例えば、２バイト（Ａ３Ａ４）をリードする。
【００７４】
そして、バッファメモリアクセス制御回路２７３−３は、ライトアドレス（ＡＤＤ＝Ｏｘ４４）に応答して、第２メモリ２３９−２の第６メモリ領域ＭＲ６に第１遅延データブロック（ＤＡＴＡ２＝ＰＵ６＝Ｂ１Ｂ２Ｂ３Ｂ４）をライトする。したがって、第６メモリ領域ＭＲ６に保存された現在参照データブロック（Ｚ５Ｚ６Ｚ７Ｚ８）は、第１遅延データブロック（ＤＡＴＡ２＝ＰＵ６＝Ｂ１Ｂ２Ｂ３Ｂ４）にアップデートされる。
【００７５】
バッファメモリアクセス制御回路２７３−３は、第３メモリ領域ＭＲ３に保存された直前参照データブロック（Ｃ１Ｃ２Ａ３Ａ４）の一部（Ａ３Ａ４）と第４メモリ領域ＭＲ４に保存された現在参照データブロック（Ｂ１Ｂ２Ｂ３Ｂ４）とを含む拡張参照データブロック（ＭＤＡＴＡ＝Ａ３Ａ４Ｂ１Ｂ２Ｂ３Ｂ４）、例えば、６バイトを比較回路２４１に出力することができる。また、バッファメモリアクセス制御回路２７３−３は、拡張参照データブロックＭＤＡＴＡの開始位置を示す拡張参照データブロック開始アドレス（ＭＤＡＴＡ＿ＡＤＤ＝Ｏｘ０Ａ）を比較回路２４１に出力することができる。
【００７６】
レジスタ３０１は、第２遅延データブロック（ＤＡＴＡ３＝ＰＵ６＝Ｂ１Ｂ２Ｂ３Ｂ４）が入力される直前の複数のデータブロック（ＰＵ５＝Ｃ３Ｃ４Ａ３Ａ４）のうちの一部（Ａ３Ａ４）を保存する。
第１比較器３０３は、レジスタ３０１に保存された２バイト（ＰＤＡＴＡ１＝Ａ３Ａ４）と直前参照データブロックの一部（ＰＤＡＴＡ＝Ａ３Ａ４）とを互いに比較し、この比較の結果によって、第１比較信号ＣＰ１を生成する。それと同時に、または並列的に、第２比較器３０５は、現在参照データブロック（ＲＤＡＴＡ＝Ｂ１Ｂ２Ｂ３Ｂ４）と第２遅延データブロック（ＤＡＴＡ３＝ＰＵ６＝Ｂ１Ｂ２Ｂ３Ｂ４）とを互いに比較し、この比較の結果によって、第２比較信号ＣＰ２を生成する。
【００７７】
長さ計算回路３１１は、第１比較信号ＣＰ１と第２比較信号ＣＰ２とに基づいて長さ情報Ｍａｔｃｈ＿ＬＥＮとマッチ情報Ｍａｔｃｈ＿ＦＬＡＧとを生成する。
レジスタ３０１に保存された２バイト（ＰＤＡＴＡ１＝Ａ３Ａ４）と直前参照データブロックの一部（ＰＤＡＴＡ＝Ａ３Ａ４）とが互いに一致し、現在参照データブロック（ＲＤＡＴＡ＝Ｂ１Ｂ２Ｂ３Ｂ４）と第２遅延データブロック（ＤＡＴＡ３＝ＰＵ６＝Ｂ１Ｂ２Ｂ３Ｂ４）とが互いに一致するので、長さ計算回路３１１は、第２レベル、例えば、ローレベルを有するマッチ情報Ｍａｔｃｈ＿ＦＬＡＧを出力する。
【００７８】
距離計算回路３０９は、拡張参照データブロック開始アドレスＭＤＡＴＡ＿ＡＤＤとカウント値ＢＣＮＴ２とに基づいて距離情報Ｍａｔｃｈ＿ＤＩＳを生成する。選択回路４０５は、第２レベルを有するマッチ情報Ｍａｔｃｈ＿ＦＬＡＧに応答して、コード生成回路４０３によって生成されたコード、すなわち、長さ／距離データを出力データＤＡＴＡＯとして出力する。
【００７９】
コード生成回路４０３は、長さ情報Ｍａｔｃｈ＿ＬＥＮと距離情報Ｍａｔｃｈ＿ＤＩＳとに基づいて長さ／距離データ、例えば、圧縮データを生成する。したがって、選択回路４０５は、第５処理ユニットＰＵ５に含まれた２バイト（Ａ３Ａ４）と第６処理ユニットＰＵ６に含まれた４バイト（Ｂ１Ｂ２Ｂ３Ｂ４）とを含む拡張データ、すなわち、６バイトを出力する代わりに、コード、例えば、長さと距離とを示す圧縮データ（［６，５０］）を出力する。
【００８０】
本発明の実施形態によるデータ圧縮回路２３０は、データブロック単位で圧縮有無を判断してデータ圧縮速度を向上させうるだけではなく、拡張データを圧縮することができるので、圧縮率を向上させうる効果がある。
例えば、第１メモリコントローラ２５０は、データ圧縮回路２３０から出力されたデータＤＡＴＡＯの圧縮有無を示すフラグ（ｆｌａｇ）を生成し、該生成されたフラグと共にリテラルデータまたは長さ／距離データを第１データ保存装置１３０に保存することができる。この際、リテラルデータまたは長さ／距離データは、第２データ保存装置１５０を通じて第１データ保存装置１３０に保存することができる。
【００８１】
図９は、図２に示されたデータ圧縮解除回路のブロック図を示す。図９を参照すれば、データ圧縮解除回路２７０は、有限状態マシン（ＦＳＭ）２７１、出力データ生成回路２７３、及び出力データバッファ２７５を含む。
有限状態マシン２７１は、圧縮データ、すなわち、リテラルデータと長さ／距離データとを含む圧縮データＣＤＡＴＡと圧縮有無を示すフラグとを含むヘッダＨＥＡＤＥＲを受信し、ヘッダＨＥＡＤＥＲに基づいて圧縮データＣＤＡＴＡの圧縮解除を指示する制御信号を出力する。
【００８２】
出力データ生成回路２７３は、有限状態マシン２７１から出力された圧縮データＣＤＡＴＡと制御信号とに基づいて圧縮データＣＤＡＴＡに対する圧縮を解除し、圧縮解除されたデータストリームを出力データバッファ２７５に出力する。出力データバッファ２７５は、圧縮解除されたデータストリームＤＤＳをホストインターフェース２１０に伝送する。
【００８３】
図１０は、本発明の一実施形態によるデータ圧縮方法を説明するフローチャートである。図１Ａから図８まで、及び図１０を参照すれば、データ圧縮回路２３０のバッファメモリコントローラ２３７は、ハッシュキー生成回路２３３から出力されたアドレスＡＤＤに基づいて互いに異なる複数のメモリ２３９−１〜２３９−４のそれぞれに保存された以前参照データブロックの一部と現在参照データブロックとを同時に読み取り、これら読み取られたデータを比較回路２４１に伝送する（ステップＳ１１０）。
【００８４】
比較回路２４１は、以前参照データブロックの一部と以前データブロックの一部とを比較すると同時に、現在参照データブロックと現在データブロックとを比較する（ステップＳ１２０）。以前参照データブロックの一部と以前データブロックの一部とが互いにマッチングされ、現在参照データブロックと現在データブロックとが互いにマッチングされる時、圧縮データ生成回路２４３は、以前データブロックの一部と現在データブロックとを含む拡張データブロックを圧縮し、圧縮データ、すなわち、長さ／距離データを出力する（ステップＳ１４０）。
しかし、以前参照データブロックの一部と以前データブロックの一部とが互いにマッチングされ、現在参照データブロックと現在データブロックとが互いにマッチングされない時、現在参照データブロックを圧縮するか、またはバイパスすることができる（ステップＳ１５０）。
【００８５】
上述したように、以前データブロックと以前参照データブロックとがマッチされず、現在データブロックと現在参照データブロックとがマッチされる時、データ圧縮回路２３０は、拡張参照データブロックをバッファメモリ２３９から同時にリードし、このリードされた拡張参照データブロックと拡張データブロックとを同時に比較し、この比較の結果に基づいて、拡張データブロックを圧縮することができる。
ここで、拡張参照データブロックは、以前参照データブロックの一部と現在参照データブロックとを含む。拡張参照データブロックのサイズと現在参照データブロックのサイズとの比は、整数ではない帯小数である。
【００８６】
上述したように、データ圧縮回路２３０は、以前データブロックの繰り返し有無と現在データブロックの繰り返し有無とによって、（ｉ）現在データブロックをリテラルデータとして出力するか、（ii）以前データブロックと現在データブロックとを圧縮して生成された長さ／距離データを出力するか、（iii）以前データブロックの一部と現在データブロックとを含む拡張データブロックを圧縮して生成された長さ／距離データを出力することができる。
拡張データブロックのサイズと現在データブロックのサイズとの比は、整数ではない帯小数である。
【００８７】
図１１は、本発明の他の実施形態によるデータ圧縮方法を説明するフローチャートであり、図１２は、図１１に示されたデータ圧縮方法を説明する概念図である。コーディング位置（ｃｏｄｉｎｇ  ｐｏｓｉｔｉｏｎ）を変更させながら、データブロックを圧縮する方法は、図１Ａ、図１１、及び図１２を参照して詳しく説明される。
【００８８】
図１２に示したように、コーディング位置ＣＤ１、ＣＤ２、及びＣＤ３は、圧縮されるデータブロックの開始位置を意味する。データ圧縮回路２３０は、処理される現在データブロック（ＣＤＢ＝Ａ３Ａ４Ｂ１Ｂ２）と参照データブロックＲＤＢとがマッチするか否か、または繰り返し有無を判断するために、第ｉコーディング位置ＣＤ１で現在データブロック（ＣＤＢ＝Ａ３Ａ４Ｂ１Ｂ２）と第１参照データブロック（ＲＤＢ＝Ａ１Ａ２Ａ３Ａ４）とがマッチするか否かをデータブロック単位で判断する（ステップＳ２１０）。ここで、ｉは、自然数であって、１から始め、Ｎは、自然数３であると仮定する。
【００８９】
第ｉコーディング位置ＣＤ１でマッチングデータブロックが発見されない時（ステップＳ２２０）、すなわち、現在データブロック（ＣＤＢ＝Ａ３Ａ４Ｂ１Ｂ２）と第１参照データブロック（ＲＤＢ＝Ａ１Ａ２Ａ３Ａ４）とがマッチされない時、データ圧縮回路２３０は、第ｉコーディング位置ＣＤ１を第（ｉ＋１）コーディング位置ＣＤ２に変更する（ステップＳ２３０）。（ｉ＋１）が、Ｎよりも小さい時（ステップＳ２５０）、データ圧縮回路２３０は、第（ｉ＋１）コーディング位置ＣＤ２で現在データブロック（ＣＤＢ＝Ａ３Ａ４Ｂ１Ｂ２）と第２参照データブロック（ＲＤＢ＝Ｂ１Ｂ２Ｂ３Ｂ４）とがマッチするか否かをデータブロック単位で判断する（ステップＳ２１０）。
【００９０】
第（ｉ＋１）コーディング位置ＣＤ２でマッチングデータブロックが発見されない時（ステップＳ２２０）、データ圧縮回路２３０は、第（ｉ＋１）コーディング位置ＣＤ２を第（ｉ＋２）コーディング位置ＣＤ３に変更する（ステップＳ２３０）。（ｉ＋１）が、Ｎよりも小さい時（ステップＳ２５０）、データ圧縮回路２３０は、第（ｉ＋２）コーディング位置ＣＤ３で現在データブロック（ＣＤＢ＝Ａ３Ａ４Ｂ１Ｂ２）と第３参照データブロック（ＲＤＢ＝Ａ３Ａ４Ｂ１Ｂ２）とがマッチするか否かをデータブロック単位で判断する（ステップＳ２１０）。
【００９１】
第（ｉ＋２）コーディング位置ＣＤ３でマッチングデータブロックが発見される時（ステップＳ２２０）、データ圧縮回路２３０は、第３参照データブロック（ＲＤＢ＝Ａ３Ａ４Ｂ１Ｂ２）に基づいて現在データブロック（ＣＤＢ＝Ａ３Ａ４Ｂ１Ｂ２）を長さ／距離データに圧縮する（ステップＳ２４０）。しかし、第（ｉ＋２）コーディング位置ＣＤ３でもマッチングデータブロックが発見されない時（ステップＳ２２０）、データ圧縮回路２３０は、第（ｉ＋２）コーディング位置ＣＤ３を第（ｉ＋３）コーディング位置に変更する（ステップＳ２３０）。しかし、（ｉ＋１）が、Ｎよりも大きいので（ステップＳ２５０）、現在データブロック（ＣＤＢ＝Ａ３Ａ４Ｂ１Ｂ２）は、リテラルデータとして出力される（ステップＳ２４０）。
【産業上の利用可能性】
【００９２】
本発明は、データ圧縮回路と、それを含む装置に使われる。
【符号の説明】
【００９３】
１００：データ処理装置
１１０：ホスト
１３０：第１データ保存装置
１５０：第２データ保存装置
２００：メモリコントローラ
２１０：ホストインターフェース
２３０：データ圧縮回路
２３１：入力データレジスタ
２３３：ハッシュキー生成回路
２３７：バッファメモリコントローラ
２３９：バッファメモリ
２４１：比較回路
２４３：圧縮データ生成回路
２４０：ＣＰＵ
２５０：第１メモリコントローラ
２６０：第２メモリコントローラ
２７０：データ圧縮解除回路
【図１Ａ】
2014132750.tif 000003
【図１Ｂ】
2014132750.tif 000004
【図１Ｃ】
2014132750.tif 000005
【図２】
2014132750.tif 000006
【図３】
2014132750.tif 000007
【図４】
2014132750.tif 000008
【図５】
2014132750.tif 000009
【図６】
2014132750.tif 000010
【図７】
2014132750.tif 000011
【図８】
2014132750.tif 000012
【図９】
2014132750.tif 000013
【図１０】
2014132750.tif 000014
【図１１】
2014132750.tif 000015
【図１２】
2014132750.tif 000016