JP6512733B2 - データ圧縮方法と、該方法を行う装置 - Google Patents

データ圧縮方法と、該方法を行う装置 Download PDF

Info

Publication number
JP6512733B2
JP6512733B2 JP2013262636A JP2013262636A JP6512733B2 JP 6512733 B2 JP6512733 B2 JP 6512733B2 JP 2013262636 A JP2013262636 A JP 2013262636A JP 2013262636 A JP2013262636 A JP 2013262636A JP 6512733 B2 JP6512733 B2 JP 6512733B2
Authority
JP
Japan
Prior art keywords
data block
data
current
address
memory area
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
JP2013262636A
Other languages
English (en)
Other versions
JP2014132750A5 (ja
JP2014132750A (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.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics Co Ltd
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 Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of JP2014132750A publication Critical patent/JP2014132750A/ja
Publication of JP2014132750A5 publication Critical patent/JP2014132750A5/ja
Application granted granted Critical
Publication of JP6512733B2 publication Critical patent/JP6512733B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0608Saving storage space on storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • G06F3/0641De-duplication techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/3084Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method
    • H03M7/3086Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method employing a sliding window, e.g. LZ77
    • 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/60General implementation details not specific to a particular type of compression
    • H03M7/6064Selection of Compressor
    • H03M7/6082Selection strategies

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Software Systems (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Description

本発明は、データ圧縮技術に係り、特に、データ圧縮加速化(data compression acceleration)と、データ圧縮加速化時に失なわれるデータ圧縮率(data compression ratio)を補償することができるデータ圧縮方法と、該方法を行う装置とに関する。
データ圧縮技術は、通信装置及び/またはデータ保存装置に、データの伝送速度を高め、装置の保存空間の活用性を高めるために多様な方式で適用されている。
このデータ圧縮技術は、フラッシュメモリ装置−基盤のデータ保存装置に保存されるデータのサイズを減らすことができるため、保存装置に対するライト回数及び/またはリード回数を減らすことができるだけではなく、保存装置の期待寿命を増加させることができる。
データ保存装置で使われるデータ圧縮方式として、無損失圧縮(loseless compression)方式と損失圧縮(lossy compression)方式とがある。無損失圧縮方式として、1977年と1978年とにAbraham LempelとJacob Zivとによって論文として公開された2つの無損失データ圧縮アルゴリズムであるLZ77とLZ78、Abraham Lempel、Jacob Ziv、及びTerry Welchによって創造された一般的な無損失データ圧縮アルゴリズムであるLZW、またはLempel−Ziv Ross Williams(LZRW)と呼ばれる無損失データ圧縮アルゴリズムが使われる。
米国特許第6658148号公報 米国特許第7441156号公報 国際公開2007−138600号公報 米国特許出願公開第2004−0250009号明細書 米国特許出願公開第2007−0050514号明細書
本発明が解決しようとする技術的な課題は、データ圧縮加速化と、データ圧縮加速化時に失なわれるデータ圧縮率を補償することができるデータ圧縮方法と、該方法を行う装置とを提供することにある。
本発明の実施形態によるデータ圧縮方法は、以前データブロックと現在データブロックとを含む入力データストリームを受信する段階と、前記以前データブロックの一部と以前参照データブロックの一部とを比較する第1比較と、前記現在データブロックと現在参照データブロックとを比較する第2比較とを並列的に実行する段階と、前記第1比較と前記第2比較との結果に基づいて、前記現在データブロックを出力するか、または拡張データブロックを圧縮する段階と、を含み、前記拡張データブロックは、前記以前データブロックの前記一部と前記現在データブロックとを含む。
前記現在参照データブロックが保存された第1メモリ領域と前記以前参照データブロックが保存された第2メモリ領域のそれぞれは、インターリービング方式で割り当てられ、独立してアクセス可能な互いに異なるメモリに具現される。前記拡張データブロックのサイズと前記現在データブロックのサイズとの比は、帯小数(mixed decimal)であり得る。
前記データ圧縮方法は、バッファメモリから前記以前参照データブロックの前記一部と前記現在参照データブロックとを並列的にリードする段階をさらに含む。
本発明の実施形態によるデータ圧縮方法は、以前データブロックと現在データブロックとを含む入力データストリームを受信する段階と、メモリから以前参照データブロックの一部と現在参照データブロックとを並列的にリードする段階と、前記以前データブロックの一部と前記以前参照データブロックの前記一部とに対する比較と、前記現在データブロックと前記現在参照データブロックとに対する比較とを並列的に行う段階と、前記以前データブロックの前記一部と前記以前参照データブロックの前記一部とがマッチ(match)され、前記現在データブロックと前記現在参照データブロックとがマッチされる時、拡張データブロックを圧縮する段階と、を含み、前記拡張データブロックは、前記以前データブロックの前記一部と前記現在データブロックとを含む。
前記データ圧縮方法は、前記以前データブロックの前記一部の少なくとも一部と前記以前参照データブロックの前記一部とがマッチされず、前記現在データブロックと前記現在参照データブロックとがマッチされない時、前記現在データブロックを選択的に圧縮または圧縮しない段階をさらに含む。
前記メモリは、前記現在参照データブロックが保存された第1メモリ領域と前記以前参照データブロックが保存された第2メモリ領域とを含むバッファメモリであり、前記第1メモリ領域と前記第2メモリ領域のそれぞれは、インターリービング方式で割り当てられ、独立してアクセス可能な互いに異なるメモリに具現される。
本発明の実施形態によるデータ圧縮回路は、第1メモリ領域、第2メモリ領域、及び第3メモリ領域を含むバッファメモリと、アドレスに応答して、前記第1メモリ領域に保存された以前参照データブロックの一部と前記第2メモリ領域に保存された現在参照データブロックとを出力するバッファメモリコントローラと、以前データブロックの一部と前記以前参照データブロックの一部とがマッチするか否かと、現在データブロックと前記現在参照データブロックとがマッチするか否かとを判断し、該判断の結果によって、制御情報を生成する比較回路と、前記制御情報に基づいて、前記現在データブロックを出力するか、圧縮データを出力する圧縮データ生成回路と、を含み、前記圧縮データは、前記以前データブロックの前記一部と前記現在データブロックとを含む拡張データブロックを圧縮して生成される。
前記バッファメモリコントローラは、前記第1メモリ領域から前記以前参照データブロックの前記一部と、前記第2メモリ領域から前記現在参照データブロックとを並列的にリードした後、前記現在データブロックを前記第3メモリ領域にライトする。
前記バッファメモリコントローラは、前記アドレスを用いて、前記第1メモリ領域に対する第1アドレスと前記第2メモリ領域に対する第2アドレスとを生成するアドレス生成器と、前記第1アドレスを用いて、前記第1メモリ領域から前記以前参照データブロックの前記一部と、前記第2アドレスを用いて、前記第2メモリ領域から前記現在参照データブロックとを並列的にリードし、前記現在データブロックに対する第3アドレスに基づいて、前記現在データブロックを前記第3メモリ領域にライトするバッファメモリアクセス制御回路と、を含む。
本発明の実施形態によるデータ処理装置は、データ保存装置と、以前データブロックと現在データブロックとを含むデータストリームを出力するホストと、前記ホストから出力された前記データストリームをデータブロック単位または拡張データブロック単位でマッチするか否かを判断し、該判断の結果によって、前記データストリームを前記データブロック単位または前記拡張データブロック単位で圧縮し、該圧縮されたデータを前記データ保存装置に出力するメモリコントローラと、を含み、前記メモリコントローラは、前記以前データブロックに対してマッチするか否かを判断した後、前記以前データブロックの一部と前記現在データブロックとを含む拡張データブロックに対してマッチするか否かを判断する。
前記メモリコントローラは、第1メモリ領域、第2メモリ領域、及び第3メモリ領域を含むバッファメモリと、アドレスに応答して、前記第1メモリ領域に保存された以前参照データブロックの一部と前記第2メモリ領域に保存された現在参照データブロックとを並列的に出力するバッファメモリコントローラと、前記以前データブロックの前記一部と前記以前参照データブロックの前記一部とがマッチするか否かと、前記現在データブロックと前記現在参照データブロックとがマッチするか否かとを並列的に判断し、該判断の結果によって、制御情報を生成する比較回路と、前記制御情報に基づいて、前記現在データブロックを出力するか、前記拡張データブロックを圧縮して生成された前記圧縮データを出力する圧縮データ生成回路と、を含む。
前記第1メモリ領域、前記第2メモリ領域、及び前記第3メモリ領域のそれぞれは、インターリービング方式で割り当てられた互いに異なるアドレスを有する互いに異なるメモリに具現される。
前記拡張データブロックのサイズと前記現在データブロックのサイズとの比は、整数ではない。前記データ保存装置は、フラッシュメモリ、eMMC(embedded MultiMedia Card)、UFS(Universal Flash Storage)、USBフラッシュドライバ、またはSSD(Solid−State Drive)である。前記データ処理装置は、スマートフォン、タブレットPC、モバイルインターネット装置(mobile internet device)、または電子ブックである。
本発明の実施形態によるデータ圧縮方法とデータ圧縮装置は、データブロック単位でデータブロックを圧縮することができるので、データ圧縮速度を増加させうるだけではなく、拡張データブロックを圧縮することができるので、圧縮率の減少を防止することができる。
本発明の実施形態によるデータ圧縮方法とデータ圧縮装置は、インターリーブされたメモリ、または互いに独立してアクセス可能なメモリを使って、拡張参照データブロックを処理するので、圧縮効率を向上させうる。本発明の実施形態によるデータ圧縮方法とデータ圧縮装置は、既に処理されたデータブロックの一部に対しても、以前参照データブロックの一部とマッチするか否かを判断することができるので、データ圧縮率またはデータ圧縮効率を向上させうる。
本発明の実施形態によるデータ処理装置のブロック図。 本発明の他の実施形態によるデータ処理装置のブロック図。 本発明の他の実施形態によるデータ処理装置のブロック図。 図1Aに示されたデータ圧縮回路のブロック図。 図2に示されたハッシュキー生成回路のブロック図。 図2に示されたハッシュキー生成回路の動作を説明する概念図。 図2に示されたバッファメモリコントローラとバッファメモリのブロック図。 図2に示されたバッファメモリコントローラのブロック図。 図2に示された比較回路のブロック図。 図2に示された圧縮データ生成回路のブロック図。 図2に示されたデータ圧縮解除回路のブロック図。 本発明の一実施形態によるデータ圧縮方法を説明するフローチャート。 本発明の他の実施形態によるデータ圧縮方法を説明するフローチャート。 図11に示されたデータ圧縮方法を説明する概念図。
以下、添付した図面を参照して、本発明を詳しく説明する。
図1Aは、本発明の実施形態によるデータ処理装置のブロック図を示す。図1Aを参照すれば、データ処理装置100は、ホスト110、メモリコントローラ200、第1データ保存装置130、及び第2データ保存装置150を含む。
メモリコントローラ200と第1データ保存装置130は、1つのパッケージ、例えば、マルチチップパッケージ(multi−chip package)でパッケージング(packing)されうる。
データ処理装置100は、PC(Personal Computer)、データサーバ、または携帯用電子装置(portable electronic device)として具現可能である。携帯用電子装置は、ラップトップコンピュータ(laptop computer)、携帯電話、スマートフォン(smart phone)、タブレット(tablet)PC、PDA(Personal Digital Assistant)、EDA(Enterprise Digital Assistant)、デジタルスチルカメラ(digital still camera)、デジタルビデオカメラ(digital video camera)、PMP(Portable MultimediaPlayer)、PND(Personal Navigation DeviceまたはPortable Navigation Device)、携帯用ゲームコンソール(handheld game console)、モバイルインターネット装置(mobile internet device)、または電子ブック(e−book)として具現可能である。
ホスト110は、複数のデータブロックを含む入力データストリームIDSをメモリコントローラ200に出力することができる。データ圧縮を迅速に処理するために、複数のデータブロックのそれぞれは、N(Nは、2以上の自然数)バイト(byte)単位で処理されうる。また、ホスト110は、メモリコントローラ200から出力された出力データストリームDDSを受信することができる。
メモリコントローラ200は、データブロック単位で複数のデータブロックのそれぞれを処理、例えば、圧縮またはバイパス(bypass)することができる。また、圧縮率を向上させるために、メモリコントローラ200は、処理される現在データブロックと以前データブロックとの一部を含む拡張データブロックを圧縮することができる。例えば、拡張データブロックのサイズとデータブロックのサイズとの比は、帯小数、例えば、拡張データブロックのバイトサイズ(byte size)は、データブロックのバイトサイズよりも大きい。しかし、拡張データブロックのバイトサイズは、データブロックのバイトサイズの正確な倍数ではない。
本明細書では、説明の便宜上、データブロックは、4バイトであり、拡張データブロックは、6バイトであると仮定するが、発明の概念は、処理されるバイトの数に限定されるものではない。
メモリコントローラ200は、ホスト110、第1データ保存装置130、及び第2データ保存装置150の間で送受信するデータ及び/または命令を対応するインターフェースプロトコル(interface protocol)によってインターフェーシング(inferfacing)または処理することができる。
メモリコントローラ200は、ホストインターフェース210、データ圧縮回路(data compression circuit)230、CPU(または、プロセッサ)240、第1メモリコントローラ250、第2メモリコントローラ260、及びデータ圧縮解除回路(data de−compression circuit)270を含む。例えば、メモリコントローラ200は、システム・オン・チップ(system on chip:SoC)として具現可能である。
ホストインターフェース210、例えば、ホストサイドインターフェース(host side interface)は、ホスト110とメモリコントローラ200との間で送受信するデータ及び/または命令をインターフェーシングする。
例えば、ホストインターフェース210は、データ圧縮動作の間には、ホスト110から出力された入力データストリームIDSをデータ圧縮回路230に伝送し、データ圧縮解除動作の間には、データ圧縮解除回路270から出力された圧縮解除されたデータストリームDDSをホスト110に伝送する。
データ圧縮回路230は、CPU240の制御によって、データブロック単位でブロックデータを処理(例えば、圧縮またはバイパス)するか、または拡張データを処理(例えば、圧縮)することができる。したがって、データブロックまたは拡張データブロックを処理するデータ圧縮回路230は、圧縮処理を加速化しながらも、圧縮率低下を最小化することができる。データ圧縮回路230は、エンコーダの機能を行う。
CPU240は、データバス241を通じてデータ圧縮回路230、第1メモリコントローラ250、第2メモリコントローラ260、及びデータ圧縮解除回路270のうちの少なくとも1つの動作を制御することができる。
第1メモリコントローラ250は、第1データ保存装置130のインターフェースプロトコルによって、メモリコントローラ200と第1データ保存装置130との間で送受信するデータ及び/または命令をインターフェーシングすることができる。例えば、第1データ保存装置130が、NANDフラッシュメモリである時、第1メモリコントローラ250は、NANDフラッシュメモリコントローラとして具現可能である。
第2メモリコントローラ260は、第2データ保存装置150のインターフェースプロトコルによって、メモリコントローラ200と第2データ保存装置150との間で送受信するデータ及び/または命令をインターフェーシングすることができる。例えば、第2データ保存装置150が、DRAMである時、第2メモリコントローラ260は、DRAMコントローラとして具現可能である。
データ圧縮解除回路270は、圧縮されたデータを圧縮解除し、この圧縮解除されたデータストリームDDSをホストインターフェース210を通じてホスト110に伝送しうる。データ圧縮解除回路270は、デコーダの機能を行う。
実施形態によって、第1データ保存装置130は、フラッシュ−基盤のメモリ、例えば、フラッシュメモリ、eMMC、UFS、USBフラッシュドライブ(USB flashdrive)、またはSSDであり得る。
他の実施形態によって、第1データ保存装置130は、不揮発性メモリであり得る。この不揮発性メモリは、EEPROM(Electrically Erasable Programmable Read−Only Memory)、MRAM(Magnetic RAM)、スピン伝達トルクMRAM(Spin−Transfer TorqueMRAM)、Conductive bridging RAM(CBRAM)、FeRAM(Ferroelectric RAM)、PRAM(Phase change RAM)、抵抗メモリ(Resistive RAM:ReRAM)、ナノチューブRRAM(登録商標)(Nanotube RRAM)、ポリマーRAM(Polymer RAM:PoRAM)、ナノ浮遊ゲートメモリ(Nano Floating Gate Memory:NFGM)、ホログラフィックメモリ(holographic memory)、分子電子メモリ素子(Molecular Electronics Memory Device)、または絶縁抵抗変化メモリ(Insulator Resistance ChangeMemory)であり得る。
さらに他の実施形態によって、第1データ保存装置130は、ハードディスクドライブ(Hard Disk Drive)であり得る。第2データ保存装置150は、DRAM(Dynamic Random Access Memory)またはDDR SDRAM(Double Data Rate Synchronous DynamicRandom Access Memory)であり得る。
例えば、第1データ保存装置130に/から入力/出力されるデータは、第2メモリコントローラ260の制御によって第2データ保存装置150に臨時保存することができる。
図1Bと図1Cは、本発明の他の実施形態によるデータ処理装置のブロック図を示す。図1Aから図1Cに示したように、データ圧縮回路230及び/またはデータ圧縮解除回路270の設計位置は、実施形態によって多様に変更されうる。
例えば、図1Bで、データ圧縮回路230は、データバス241を通じてホストインターフェース210から入力データストリームIDSを受信し、データ圧縮解除回路270は、データバス241を通じてホストインターフェース210に出力データストリームDDSを出力する。図1Cで、データ圧縮回路230とデータ圧縮解除回路270は、データバス241と第1メモリコントローラ250との間に位置する。
図2は、図1Aに示されたデータ圧縮回路のブロック図を示す。図2を参照すれば、データ圧縮回路230は、入力データレジスタ231、ハッシュキー(hash key)生成回路233、バッファメモリコントローラ237、バッファメモリ239、比較回路241、及び圧縮データ生成回路243を含む。
入力データレジスタ231は、入力データストリームIDSを受信し、入力データストリームIDSに含まれた複数のデータブロックのそれぞれの遅延(delay)を対応する遅延回路D1、D2、及びD3を用いて調節し、遅延調節された複数のデータブロックのそれぞれDATA2、DATA3、及びDATA4を複数の処理回路237、241、及び243のそれぞれに伝送する。
各遅延回路D1、D2、及びD3の遅延は、各処理回路233、237、及び241の処理時間によって調節される。
入力データレジスタ231は、入力データストリームIDSに含まれたデータブロックDATA1をハッシュキー生成回路233に伝送し、第1遅延データブロックDATA2をバッファメモリコントローラ237に伝送し、第2遅延データブロックDATA3を比較回路241に伝送し、第3遅延データブロックDATA4を圧縮データ生成回路243に伝送する。遅延を無視すれば、各データブロックDATA1、DATA2、DATA3、及びDATA4は、同じデータブロックである。
図3は、図2に示されたハッシュキー生成回路のブロック図を示す。図3を参照すれば、ハッシュキー生成回路233は、順次に入力される各データブロック(または、各データパターン)DATA1に対応するハッシュキーHiを生成し、この生成されたハッシュキーHiに該当するハッシュキーテーブル235のエントリ(entry)に前記各データブロックが存在する(または、保存された)バッファメモリ239に含まれた各保存領域の位置(position)またはアドレス(address)をライト(write)する。
ハッシュキー生成回路233は、ハッシュキー生成器233−1、第1カウンター233−2、及びハッシュキーテーブル235を含む。
図4は、図2に示されたハッシュキー生成回路の動作を説明する概念図である。図3と図4とを参照すれば、ハッシュキー生成器233−1は、1つのデータブロックを構成するL(Lは、自然数、説明の便宜上、本明細書で、L=4)バイト単位でハッシュキーHiを生成し、この生成されたハッシュキーHiをハッシュキーテーブル235に出力する。
第1カウンタ233−2は、各データブロックDATA1に含まれた複数のバイトをバイト単位でカウントし、このカウントの結果によって、第1カウント値BCNTをハッシュキーテーブル235に出力する。
ハッシュキーテーブル235は、ハッシュキーHiによって指定されたエントリに第1カウント値BCNTを保存する。この際、第1カウント値BCNTは、アドレスADDに対応しうる。
例えば、ハッシュキー生成器233−1は、第1処理ユニットPU1、すなわち、4バイト(A1A2A3A4)に相応するハッシュキーH0を生成し、カウンタ233−2は、4バイト(A1A2A3A4)の開始位置を指示する第1カウント値BCNTとしてOx00を生成する。
ハッシュキーテーブル235は、ハッシュキーH0によって指定されたエントリに第1カウント値BCNTまたはアドレスADD、すなわち、Ox00を保存する。この際、ハッシュキーテーブル235は、第1処理ユニット(PU1=A1A2A3A4)に対するアドレスADDとしてOx00を出力することができる。
また、ハッシュキー生成器233−1は、次の4バイト(A2A3A4B5)に相応するハッシュキーH2を生成し、カウンタ233−2は、次の4バイト(A2A3A4B5)の開始位置を指示する第1カウント値BCNTとしてOx01を生成する。
ハッシュキー生成器233−1は、次の4バイト(A3A4B5B6)に相応するハッシュキーH4を生成し、カウンタ233−2は、4バイト(A3A4B5B6)の開始位置を指示する第1カウント値BCNTとしてOx02を生成する。ハッシュキー生成器233−1は、次の4バイト(A4B5B6B7)に相応するハッシュキーH6を生成し、カウンタ233−2は、4バイト(A4B5B6B7)の開始位置を指示する第1カウント値BCNTとしてOx03を生成する。
ハッシュキー生成器233−1は、第2処理ユニットPU2、すなわち、4バイト(B5B6B7B8)に相応するハッシュキーH8を生成し、カウンタ233−2は、4バイト(B5B6B7B8)の開始位置を指示する第1カウント値BCNTとしてOx04を生成する。この際、ハッシュキーテーブル235は、第2処理ユニット(PU2=B5B6B7B8)に対するアドレスADDとしてOx04を出力することができる。
ハッシュキー生成器233−1は、第3処理ユニットPU3、すなわち、4バイト(C1C2A3A4)に相応するハッシュキーを生成し、カウンタ233−2は、4バイト(C1C2A3A4)の開始位置を指示する第1カウント値BCNTとしてOx08を生成する。この際、ハッシュキーテーブル235は、第3処理ユニット(PU3=C1C2A3A4)に対するアドレスADDとしてOx08を出力することができる。
ハッシュキー生成器233−1は、第4処理ユニットPU4、すなわち、4バイト(B1B2B3B4)に相応するハッシュキーH1を生成し、カウンタ233−2は、4バイト(B1B2B3B4)の開始位置を指示する第1カウント値BCNTとしてOx0Cを生成する。この際、ハッシュキーテーブル235は、アドレスADDとしてOx0Cを出力することができる。
ハッシュキー生成器233−1は、第5処理ユニットPU5、すなわち、4バイト(C3C4A3A4)に相応するハッシュキーH7を生成し、カウンタ233−2は、4バイト(C3C4A3A4)の開始位置を指示する第1カウント値BCNTとしてOx40を生成する。この際、ハッシュキーテーブル235は、アドレスADDとしてOx40を出力することができる。
第4処理ユニット(PU4=B1B2B3B4)と同一の第6処理ユニット(PU6=B1B2B3B4)が、ハッシュキー生成器233−1に入力されれば、ハッシュキー生成器233−1は、第4処理ユニットPU4に対するハッシュキーH1と同一のハッシュキーH1を生成し、カウンタ233−2は、第6処理ユニットPU6の4バイト(B1B2B3B4)の開始位置を指示する第1カウント値BCNTとしてOx44を生成する。
この際、ハッシュキーテーブル235は、第6処理ユニット(PU6=B1B2B3B4)に対するアドレスADDとしてOx44を出力する代わりに、OxOCを出力する。この際、ハッシュキーH1に相応するエントリのアドレスADDは、Ox0CからOx44にアップデートされる。
処理される現在データブロックが、以前データブロックとマッチまたは同一である時、ハッシュキーテーブル235は、データブロック単位で生成されたハッシュキーHiに対応するアドレスADDをバッファメモリコントローラ237に出力することができる。
図5は、図2に示されたバッファメモリコントローラとバッファメモリとのブロック図を示す。バッファメモリコントローラ237は、ハッシュキー生成回路233から出力されたアドレスADDに基づいて、互いに異なるメモリ239−1〜239−4のうちの何れか1つに保存された以前参照データブロックの一部とメモリ239−1〜239−4のうちの他の1つに保存された現在参照データブロックとを含む拡張参照データブロックMDATAと、拡張参照データブロックMDATAの開始位置を指示する拡張参照データブロック開始アドレスMDATA_ADDを比較回路241に伝送する。
また、バッファメモリコントローラ237は、第1遅延データブロックDATA2の開始位置を指示するライトアドレスに応答して、第1遅延データブロックDATA2をインターリーブされた構造を有する複数のメモリ239−1〜239−4のうちの何れか1つにライトする。
バッファメモリ239は、インターリービング(interleaving)方式で割り当てられ、独立してアクセス可能な互いに異なる複数のメモリ239−1〜239−4を含む。複数のメモリ239−1〜239−4のそれぞれは、デュアルポート(dual−port)SRAMとして具現可能である。このデュアルポートSRAMは、シングルポート(single−port)SRAMと異なって、同一のサイクル内でリード動作とライト動作とを同時に行うことができる。
バッファメモリコントローラ237が、インターリービング方式で割り当てられた互いに異なるアドレスを有する互いに異なる複数のメモリ239−1〜239−4を利用できるので、バッファメモリコントローラ237は、以前参照データブロックの一部と現在参照データブロックとを同時、または並列的にリード(read)することができる。
図6は、図2に示されたバッファメモリコントローラのブロック図を示す。第1処理ユニットPU1、すなわち、最初データブロック(A1A2A3A4)が処理される過程が、図1Aから図8までを参照して詳しく説明される。
ハッシュキー生成回路233から第1処理ユニットPU1に対するハッシュキーH0に対応するデータブロック(A1A2A3A4)の開始位置を指示するアドレス(ADD=Ox00)が入力され、第1遅延データブロック(DATA2=A1A2A3A4)が入力データレジスタ231を通じて入力されれば、バッファメモリコントローラ237のアドレス生成器237−1は、現在参照アドレスADD_Cと直前(immediately previous;または、以前(previous))参照アドレスADD_Pとを生成する。
この際、現在参照アドレスADD_Cは、ハッシュキー生成回路233から出力されたアドレス(ADD=Ox00)と同一であり、直前参照アドレスADD_Pは、すぐ隣接するメモリのメモリ領域のアドレスを示す。第1処理ユニットPU1のデータブロックが最初データブロックである時、直前参照アドレスADD_Pは、デフォルトとして設定されたアドレスであり得る。
図6の第2カウンタ237−2は、第1遅延データブロック(DATA2=A1A2A3A4)の開始位置をカウントし、第2カウント値(BCNT1=Ox00)を生成する。この際、第2カウント値BCNT1は、第1遅延データブロック(DATA2=A1A2A3A4)が保存されるメモリ領域のアドレスに相応する。
図6では、第2カウンタ237−2が示されているが、実施形態によって、第2カウンタ237−2が具現されない場合、第2カウント値BCNT1の代わりに、図3の第1カウンタ233−2の第1カウント値(BCNT=Ox00)が、直接バッファメモリアクセス制御回路273−3に入力されうる。
バッファメモリアクセス制御回路273−3は、現在参照アドレス(ADD_C=Ox00)に対応する第1メモリ領域MR1に保存された現在参照データブロック、例えば、4バイト(X1X2X3X4)とデフォルトとして設定された直前参照アドレスADD_Pに対応するメモリ領域に保存された直前参照データブロックの一部、例えば、2バイトを並列的にリードする。ここで、直前参照データブロックは、デフォルトとして選択されたメモリ領域に保存されたデータブロックであり得る。
次いで、バッファメモリアクセス制御回路273−3は、アドレス(ADD=Ox00)に対応する第1メモリ239−1の第1メモリ領域MR1に第1遅延データブロック(DATA2=A1A2A3A4)をライトする。したがって、現在参照データブロック(X1X2X3X4)は、第1遅延データブロック(DATA2=A1A2A3A4)にアップデートされる。
バッファメモリアクセス制御回路273−3は、直前参照データブロックの一部と第1メモリ領域MR1に保存された現在参照データブロック(X1X2X3X4)とを含む拡張参照データブロックMDATA、例えば、6バイトを比較回路241に出力することができる。また、バッファメモリアクセス制御回路273−3は、拡張参照データブロックMDATAの開始位置を示す拡張参照データブロック開始アドレスMDATA_ADDを比較回路241に出力することができる。
図7は、図2に示された比較回路のブロック図を示す。レジスタ301は、第2遅延データブロック(DATA3=A1A2A3A4)が入力される直前のデータブロックのうちの一部を保存する。第2遅延データブロック(DATA3=A1A2A3A4)が最初データブロックである時、レジスタ301に保存された2バイトは、デフォルトとして設定されたデータであり得る。
第1比較器303は、レジスタ301に保存された2バイトPDATA1と直前参照データブロックの一部PDATAとを互いに比較し、この比較の結果によって、第1比較信号CP1を生成する。それと同時に、または並列的に、第2比較器305は、現在参照データブロック(RDATA=X1X2X3X4)と第2遅延データブロック(DATA3=A1A2A3A4)とを互いに比較し、この比較の結果によって、第2比較信号CP2を生成する。
長さ計算回路311は、第1比較信号CP1と第2比較信号CP2とに基づいて繰り返しデータ(repeated data)の長さを示す長さ情報Match_LENとマッチするか否かを示すマッチ情報Match_FLAGとを生成する。
レジスタ301に保存された2バイトPDATA1と直前参照データブロックの一部PDATAとが互いに一致せず、現在参照データブロック(RDATA=X1X2X3X4)と第2遅延データブロック(DATA3=A1A2A3A4)とが互いに一致しないので、長さ計算回路311は、第1レベル、例えば、ハイレベルを有するマッチ情報Match_FLAGを出力することができる。この際、長さ計算回路311は、長さ情報Match_LENを生成しないこともある。
距離計算回路309は、拡張参照データブロック開始アドレスMDATA_ADDと第3カウント値BCNT2とに基づいて拡張データブロックの相対的な位置、距離またはオフセット(offset)を示す距離情報Match_DISを生成することができる。実施形態によって、距離計算回路309は、マッチ情報Match_FLAGに基づいてイネーブルまたはディセーブルされうる。
第3カウンタ307は、第2遅延データブロック(DATA3=A1A2A3A4)の開始位置をカウントし、このカウントの結果によって、第3カウント値BCNT2を生成することができる。
図7では、第3カウンタ307が別途に具現された例が示されているが、実施形態によって、第3カウンタ307が具現されない時、カウント値BCNT2の代わりに、図3に示された第1カウンタ233−2の第1カウント値BCNTが、直接距離計算回路309に入力されることもある。
圧縮データ生成回路243の動作を制御することができる制御情報COMPは、長さ情報Match_LEN、マッチ情報Match_FLAG、及び距離情報Match_DISを含む。
図8は、図2に示された圧縮データ生成回路のブロック図を示す。圧縮データ生成回路243は、制御情報COMPと第3遅延データブロックDATA4とに基づいてLLD(literals and length/distance)データを生成することができる。
すなわち、圧縮データ生成回路243は、制御情報COMPに基づいて、処理される第3遅延データブロックDATA4が繰り返し(repeated)データブロックまたは繰り返しデータパターンであるか否かを判断し、この判断の結果によって、第3遅延データブロックDATA4を圧縮せず、そのまま出力するか、または第3遅延データブロックDATA4を含む拡張データブロックを圧縮することができる。
この際、圧縮されていないデータブロックは、第1エンコーディング方式によって生成されたデータ、例えば、“リテラル(literal)データ”と言い、圧縮されたデータブロックまたは圧縮された拡張データブロックは、第2エンコーディング方式によって生成されたデータ、例えば、“長さ/距離データ”と言う。例えば、圧縮データ生成回路243は、有限状態マシン(finite state machine)として具現可能である。
選択信号生成回路401は、マッチ情報Match_FLAGに応答して選択信号SELを生成する。例えば、マッチ情報Match_FLAGが第1レベルを有する信号である時、選択回路405は、第1レベルを有するマッチ情報Match_FLAGに応答して、第2遅延データブロック(DATA4=A1A2A3A4)を圧縮せず、そのまま出力する。したがって、リテラルデータ(A1A2A3A4)が出力データDATAOとして出力される。引き続き第2処理ユニットPU2のデータブロック(B5B6B7B8)が処理される過程が、図1Aから図8までを参照して詳しく説明される。
ハッシュキー生成回路233から第2処理ユニットPU2のデータブロック(B5B6B7B8)の開始位置を指示するアドレス(ADD=Ox04)が入力され、第1遅延データブロック(DATA2=B5B6B7B8)が入力データレジスタ231を通じて入力されれば、アドレス生成器237−1は、現在参照アドレス(ADD_C=Ox04)と直前参照アドレス(ADD_P=Ox00)とを生成する。
アドレス生成器237−1の具現例によって、直前参照アドレスADD_PとしてOx02が出力される時、バッファメモリアクセス制御回路237−3は、Ox02とOx03とに保存されたデータを読み取る。また、アドレス生成器237−1の具現例によって、直前参照アドレスADD_PとしてOx00が出力される時、バッファメモリアクセス制御回路237−3は、Ox02とOx03とに保存されたデータを読み取る。
カウンタ237−2は、第1遅延データブロック(DATA2=B5B6B7B8)の開始位置をカウントし、このカウントの結果によって、第2カウント値(BCNT1=Ox04)、すなわち、ライトアドレスを生成する。
バッファメモリアクセス制御回路273−3は、現在参照アドレス(ADD_C=Ox04)に対応する第2メモリ239−2の第2メモリ領域MR2に保存された現在参照データブロック(X5X6X7X8)をリードすると同時に、直前参照アドレス(ADD_P=Ox00)に対応する第1メモリ239−1の第1メモリ領域MR1に保存された直前参照データブロック(A1A2A3A4)の一部、例えば、2バイト(A3A4)をリードする。
そして、バッファメモリアクセス制御回路273−3は、ライトアドレス(BCNT1=Ox04、または実施形態によって、BCNT=Ox04)に応答して第2メモリ239−2の第2メモリ領域MR2に第1遅延データブロック(DATA2=B5B6B7B8)をライトする。したがって、第2メモリ領域MR2に保存された現在参照データブロック(X5X6X7X8)は、第1遅延データブロック(DATA2=B5B6B7B8)にアップデートされる。
バッファメモリアクセス制御回路273−3は、第1メモリ領域MR1に保存された直前参照データブロック(A1A2A3A4)の一部(A3A4)と第2メモリ領域MR2に保存された現在参照データブロック(X5X6X7X8)とを含む拡張参照データブロック(MDATA=A3A4X5X6X7X8)、例えば、6バイトを比較回路241に出力する。また、バッファメモリアクセス制御回路273−3は、拡張参照データブロックMDATAの開始位置を示す拡張参照データブロック開始アドレス(MDATA_ADD=Ox02)を比較回路241に出力することができる。
図7のレジスタ301は、第2遅延データブロック(DATA3=B5B6B7B8)が入力される直前の複数のデータブロック(A1A2A3A4)のうちの一部(A3A4)を保存する。
第1比較器303は、レジスタ301に保存された2バイト(PDATA1=A3A4)と直前参照データブロックの一部(PDATA=A3A4)とを互いに比較し、この比較の結果によって、第1比較信号CP1を生成する。それと同時に、または並列的に、第2比較器305は、現在参照データブロック(RDATA=X5X6X7X8)と第2遅延データブロック(DATA3=B5B6B7B8)とを互いに比較し、この比較の結果によって、第2比較信号CP2を生成する。
長さ計算回路311は、第1比較信号CP1と第2比較信号CP2とに基づいて長さ情報Match_LENとマッチ情報Match_FLAGとを生成する。
レジスタ301に保存された2バイト(PDATA1=A3A4)と直前参照データブロックの一部(PDATA=A3A4)とが互いに一致し、現在参照データブロック(RDATA=X5X6X7X8)と第2遅延データブロック(DATA3=B5B6B7B8)とが互いに一致しないので、長さ計算回路311は、第1レベル、例えば、ハイレベルを有するマッチ情報Match_FLAGを出力する。
距離計算回路309は、拡張参照データブロック開始アドレス(MDATA_ADD=Ox02)とカウント値(BCNT2=Ox04)とに基づいて距離情報Match_DISを生成する。上述したように、距離計算回路309が、マッチ情報Match_FLAGによってイネーブル(enable)またはディセーブル(disable)される時、距離計算回路309は、第1レベルを有するマッチ情報Match_FLAGに応答してディセーブルされうる。
図8の選択回路405は、第1レベルを有するマッチ情報Match_FLAGに応答して第2遅延データブロック(DATA4=B5B6B7B8)を圧縮せず、そのまま出力する。すなわち、第2遅延データブロック(DATA4=B5B6B7B8)は、リテラルデータDATAOとして出力される。
第3処理ユニットPU3のデータブロック(C1C2A3A4)、第4処理ユニットPU4のデータブロック(B1B2B34B)、及び第5処理ユニットPU5のデータブロック(C3C4A3A4)が処理される過程は、第2処理ユニットPU2のデータブロック(B5B6B7B8)が処理される過程と実質的に同一または類似している。
したがって、各メモリ領域MR3、MR4、及びMR5に保存された各参照データブロックY1Y2Y3Y4、Y5Y6Y7Y8、及びZ1Z2Z3Z4は、各データブロックC1C2A3A4、B1B2B34B、及びC3C4A3A4にアップデートされる。
図8の選択回路405は、第1レベルを有するマッチ情報Match_FLAGに応答して、各第3遅延データブロック(DATA4=C1C2A3A4、B1B2B34B、及びC3C4A3A4)を圧縮せず、そのまま出力する。すなわち、各第3遅延データブロック(DATA4=C1C2A3A4、B1B2B34B、及びC3C4A3A4)は、リテラルデータDATAOとして出力される。
第6処理ユニットPU6のデータブロック(B1B2B3B4)が処理される過程が、図1Aから図8までを参照して詳しく説明される。
ハッシュキー生成回路233は、第6処理ユニットPU6のデータブロック(B1B2B3B4)に対するハッシュキーH1を生成し、この生成されたハッシュキーH1に対応するハッシュキーテーブル235のエントリに保存された第1カウント値BCNT、例えば、第4処理ユニットPU4のデータブロック(B1B2B3B4)の開始位置を指示するアドレス(ADD=Ox0C)をバッファメモリコントローラ237に出力する。
そして、ハッシュキー生成回路233は、生成されたハッシュキーH1に対応するエントリに保存された第1カウント値BCNT、Ox0Cを第6処理ユニットPU6のデータブロック(B1B2B3B4)の開始位置を示す第1カウント値BCNT、Ox44にアップデートする。したがって、新たなデータブロック(B1B2B3B4)が入力されれば、ハッシュキー生成回路233は、アップデートされた第1カウント値BCNT、Ox44をアドレスADDとして出力する。
バッファメモリコントローラ237のアドレス生成器237−1は、アドレス(ADD=Ox0C)に応答して、現在参照アドレス(ADD_C=Ox0C)と直前参照アドレス(ADD_P=Ox08)とを生成する。この際、カウンタ237−2は、第1遅延データブロック(DATA2=PU6=B1B2B3B4)の開始位置をカウントし、該カウントの結果によって、第2カウント値(BCNT1=Ox44)、すなわち、ライトアドレスを生成する。
図6のバッファメモリアクセス制御回路273−3は、現在参照アドレス(ADD_C=Ox0C)に対応する第4メモリ領域MR4に保存された現在参照データブロック(B1B2B3B4)をリードすると同時に、直前参照アドレス(ADD_P=Ox08)に対応する第3メモリ領域MR3に保存された直前参照データブロック(C1C2A3A4)の一部、例えば、2バイト(A3A4)をリードする。
そして、バッファメモリアクセス制御回路273−3は、ライトアドレス(ADD=Ox44)に応答して、第2メモリ239−2の第6メモリ領域MR6に第1遅延データブロック(DATA2=PU6=B1B2B3B4)をライトする。したがって、第6メモリ領域MR6に保存された現在参照データブロック(Z5Z6Z7Z8)は、第1遅延データブロック(DATA2=PU6=B1B2B3B4)にアップデートされる。
バッファメモリアクセス制御回路273−3は、第3メモリ領域MR3に保存された直前参照データブロック(C1C2A3A4)の一部(A3A4)と第4メモリ領域MR4に保存された現在参照データブロック(B1B2B3B4)とを含む拡張参照データブロック(MDATA=A3A4B1B2B3B4)、例えば、6バイトを比較回路241に出力することができる。また、バッファメモリアクセス制御回路273−3は、拡張参照データブロックMDATAの開始位置を示す拡張参照データブロック開始アドレス(MDATA_ADD=Ox0A)を比較回路241に出力することができる。
レジスタ301は、第2遅延データブロック(DATA3=PU6=B1B2B3B4)が入力される直前の複数のデータブロック(PU5=C3C4A3A4)のうちの一部(A3A4)を保存する。
第1比較器303は、レジスタ301に保存された2バイト(PDATA1=A3A4)と直前参照データブロックの一部(PDATA=A3A4)とを互いに比較し、この比較の結果によって、第1比較信号CP1を生成する。それと同時に、または並列的に、第2比較器305は、現在参照データブロック(RDATA=B1B2B3B4)と第2遅延データブロック(DATA3=PU6=B1B2B3B4)とを互いに比較し、この比較の結果によって、第2比較信号CP2を生成する。
長さ計算回路311は、第1比較信号CP1と第2比較信号CP2とに基づいて長さ情報Match_LENとマッチ情報Match_FLAGとを生成する。
レジスタ301に保存された2バイト(PDATA1=A3A4)と直前参照データブロックの一部(PDATA=A3A4)とが互いに一致し、現在参照データブロック(RDATA=B1B2B3B4)と第2遅延データブロック(DATA3=PU6=B1B2B3B4)とが互いに一致するので、長さ計算回路311は、第2レベル、例えば、ローレベルを有するマッチ情報Match_FLAGを出力する。
距離計算回路309は、拡張参照データブロック開始アドレスMDATA_ADDとカウント値BCNT2とに基づいて距離情報Match_DISを生成する。選択回路405は、第2レベルを有するマッチ情報Match_FLAGに応答して、コード生成回路403によって生成されたコード、すなわち、長さ/距離データを出力データDATAOとして出力する。
コード生成回路403は、長さ情報Match_LENと距離情報Match_DISとに基づいて長さ/距離データ、例えば、圧縮データを生成する。したがって、選択回路405は、第5処理ユニットPU5に含まれた2バイト(A3A4)と第6処理ユニットPU6に含まれた4バイト(B1B2B3B4)とを含む拡張データ、すなわち、6バイトを出力する代わりに、コード、例えば、長さと距離とを示す圧縮データ([6,50])を出力する。
本発明の実施形態によるデータ圧縮回路230は、データブロック単位で圧縮有無を判断してデータ圧縮速度を向上させうるだけではなく、拡張データを圧縮することができるので、圧縮率を向上させうる効果がある。
例えば、第1メモリコントローラ250は、データ圧縮回路230から出力されたデータDATAOの圧縮有無を示すフラグ(flag)を生成し、該生成されたフラグと共にリテラルデータまたは長さ/距離データを第1データ保存装置130に保存することができる。この際、リテラルデータまたは長さ/距離データは、第2データ保存装置150を通じて第1データ保存装置130に保存することができる。
図9は、図2に示されたデータ圧縮解除回路のブロック図を示す。図9を参照すれば、データ圧縮解除回路270は、有限状態マシン(FSM)271、出力データ生成回路273、及び出力データバッファ275を含む。
有限状態マシン271は、圧縮データ、すなわち、リテラルデータと長さ/距離データとを含む圧縮データCDATAと圧縮有無を示すフラグとを含むヘッダHEADERを受信し、ヘッダHEADERに基づいて圧縮データCDATAの圧縮解除を指示する制御信号を出力する。
出力データ生成回路273は、有限状態マシン271から出力された圧縮データCDATAと制御信号とに基づいて圧縮データCDATAに対する圧縮を解除し、圧縮解除されたデータストリームを出力データバッファ275に出力する。出力データバッファ275は、圧縮解除されたデータストリームDDSをホストインターフェース210に伝送する。
図10は、本発明の一実施形態によるデータ圧縮方法を説明するフローチャートである。図1Aから図8まで、及び図10を参照すれば、データ圧縮回路230のバッファメモリコントローラ237は、ハッシュキー生成回路233から出力されたアドレスADDに基づいて互いに異なる複数のメモリ239−1〜239−4のそれぞれに保存された以前参照データブロックの一部と現在参照データブロックとを同時に読み取り、これら読み取られたデータを比較回路241に伝送する(ステップS110)。
比較回路241は、以前参照データブロックの一部と以前データブロックの一部とを比較すると同時に、現在参照データブロックと現在データブロックとを比較する(ステップS120)。以前参照データブロックの一部と以前データブロックの一部とが互いにマッチングされ、現在参照データブロックと現在データブロックとが互いにマッチングされる時、圧縮データ生成回路243は、以前データブロックの一部と現在データブロックとを含む拡張データブロックを圧縮し、圧縮データ、すなわち、長さ/距離データを出力する(ステップS140)。
しかし、以前参照データブロックの一部と以前データブロックの一部とが互いにマッチングされ、現在参照データブロックと現在データブロックとが互いにマッチングされない時、現在参照データブロックを圧縮するか、またはバイパスすることができる(ステップS150)。
上述したように、以前データブロックと以前参照データブロックとがマッチされず、現在データブロックと現在参照データブロックとがマッチされる時、データ圧縮回路230は、拡張参照データブロックをバッファメモリ239から同時にリードし、このリードされた拡張参照データブロックと拡張データブロックとを同時に比較し、この比較の結果に基づいて、拡張データブロックを圧縮することができる。
ここで、拡張参照データブロックは、以前参照データブロックの一部と現在参照データブロックとを含む。拡張参照データブロックのサイズと現在参照データブロックのサイズとの比は、整数ではない帯小数である。
上述したように、データ圧縮回路230は、以前データブロックの繰り返し有無と現在データブロックの繰り返し有無とによって、(i)現在データブロックをリテラルデータとして出力するか、(ii)以前データブロックと現在データブロックとを圧縮して生成された長さ/距離データを出力するか、(iii)以前データブロックの一部と現在データブロックとを含む拡張データブロックを圧縮して生成された長さ/距離データを出力することができる。
拡張データブロックのサイズと現在データブロックのサイズとの比は、整数ではない帯小数である。
図11は、本発明の他の実施形態によるデータ圧縮方法を説明するフローチャートであり、図12は、図11に示されたデータ圧縮方法を説明する概念図である。コーディング位置(coding position)を変更させながら、データブロックを圧縮する方法は、図1A、図11、及び図12を参照して詳しく説明される。
図12に示したように、コーディング位置CD1、CD2、及びCD3は、圧縮されるデータブロックの開始位置を意味する。データ圧縮回路230は、処理される現在データブロック(CDB=A3A4B1B2)と参照データブロックRDBとがマッチするか否か、または繰り返し有無を判断するために、第iコーディング位置CD1で現在データブロック(CDB=A3A4B1B2)と第1参照データブロック(RDB=A1A2A3A4)とがマッチするか否かをデータブロック単位で判断する(ステップS210)。ここで、iは、自然数であって、1から始め、Nは、自然数3であると仮定する。
第iコーディング位置CD1でマッチングデータブロックが発見されない時(ステップS220)、すなわち、現在データブロック(CDB=A3A4B1B2)と第1参照データブロック(RDB=A1A2A3A4)とがマッチされない時、データ圧縮回路230は、第iコーディング位置CD1を第(i+1)コーディング位置CD2に変更する(ステップS230)。(i+1)が、Nよりも小さい時(ステップS250)、データ圧縮回路230は、第(i+1)コーディング位置CD2で現在データブロック(CDB=A3A4B1B2)と第2参照データブロック(RDB=B1B2B3B4)とがマッチするか否かをデータブロック単位で判断する(ステップS210)。
第(i+1)コーディング位置CD2でマッチングデータブロックが発見されない時(ステップS220)、データ圧縮回路230は、第(i+1)コーディング位置CD2を第(i+2)コーディング位置CD3に変更する(ステップS230)。(i+1)が、Nよりも小さい時(ステップS250)、データ圧縮回路230は、第(i+2)コーディング位置CD3で現在データブロック(CDB=A3A4B1B2)と第3参照データブロック(RDB=A3A4B1B2)とがマッチするか否かをデータブロック単位で判断する(ステップS210)。
第(i+2)コーディング位置CD3でマッチングデータブロックが発見される時(ステップS220)、データ圧縮回路230は、第3参照データブロック(RDB=A3A4B1B2)に基づいて現在データブロック(CDB=A3A4B1B2)を長さ/距離データに圧縮する(ステップS240)。しかし、第(i+2)コーディング位置CD3でもマッチングデータブロックが発見されない時(ステップS220)、データ圧縮回路230は、第(i+2)コーディング位置CD3を第(i+3)コーディング位置に変更する(ステップS230)。しかし、(i+1)が、Nよりも大きいので(ステップS250)、現在データブロック(CDB=A3A4B1B2)は、リテラルデータとして出力される(ステップS240)。
本発明は、データ圧縮回路と、それを含む装置に使われる。
100:データ処理装置
110:ホスト
130:第1データ保存装置
150:第2データ保存装置
200:メモリコントローラ
210:ホストインターフェース
230:データ圧縮回路
231:入力データレジスタ
233:ハッシュキー生成回路
237:バッファメモリコントローラ
239:バッファメモリ
241:比較回路
243:圧縮データ生成回路
240:CPU
250:第1メモリコントローラ
260:第2メモリコントローラ
270:データ圧縮解除回路

Claims (24)

  1. データ圧縮処理の対象となる現在データブロックと、前記現在データブロックに先行して入力された以前データブロックとを含む入力データストリームを受信する段階と、
    前記現在及び以前データブロックの遅延を対応する遅延回路を用いてそれぞれ調節し、第1遅延データブロックと第2遅延データブロックと第3遅延データブロックとを生成する段階と、を含み、
    前記第2遅延データブロックを前記現在データブロックとし、
    前記第2遅延データブロックの直前に受信されレジスタに格納されているデータブロックを直前データブロックとし、
    前記第1遅延データブロックに対応して生成されたハッシュキーに対応するアドレスを開始位置とするデータブロックを現在参照データブロックとし、
    該現在参照データブロックに係るアドレスに隣接するメモリのメモリ領域のアドレスに係るデータブロックを以前参照データブロックとし、
    前記直前データブロック中の、前記現在データブロックに連続するデータブロックの一部分のみと前記以前参照データブロック中の、前記現在参照データブロックに連続するデータブロックの一部分のみとを比較する第1比較と、
    前記第2遅延データブロックのすべてと前記現在参照データブロックのすべてとを比較する第2比較とを並列的に実行する段階と、
    前記第1比較と前記第2比較との結果に基づいて、前記第3遅延データブロックを出力するか、または拡張データブロックを圧縮して出力するかを選択する段階を含み、
    前記拡張データブロックは、前記直前データブロックの前記一部と前記第3遅延データブロックとを含み、
    前記現在データブロックのサイズは、前記直前データブロックの前記一部のサイズよりも大きく、
    前記現在参照データブロックのサイズは、前記以前参照データブロックの前記一部のサイズよりも大きいデータ圧縮方法。
  2. 前記現在参照データブロックが保存された第1メモリ領域と前記以前参照データブロックが保存された第2メモリ領域のそれぞれは、インターリービング方式で割り当てられ、独立してアクセス可能な互いに異なるメモリに具現される請求項1に記載のデータ圧縮方法。
  3. 前記拡張データブロックのサイズと前記現在データブロックのサイズとの比は、帯小数である請求項1に記載のデータ圧縮方法。
  4. バッファメモリから前記以前参照データブロックの前記一部と前記現在参照データブロックとを並列的にリードする段階をさらに含む請求項1に記載のデータ圧縮方法。
  5. データ圧縮処理の対象となる現在データブロックと、前記現在データブロックに先行して入力された以前データブロックとを含む入力データストリームを受信する段階と、
    前記現在及び以前データブロックの遅延を対応する遅延回路を用いてそれぞれ調節し、第1遅延データブロックと第2遅延データブロックと第3遅延データブロックとを生成する段階と、を含み、
    前記第2遅延データブロックを前記現在データブロックとし、
    前記第2遅延データブロックの直前に受信されレジスタに格納されているデータブロックを直前データブロックとし、
    前記第1遅延データブロックに対応して生成されたハッシュキーに対応するアドレスを開始位置とするデータブロックを現在参照データブロックとし、
    該現在参照データブロックに係るアドレスに隣接するメモリのメモリ領域のアドレスに係るデータブロックを以前参照データブロックとし、
    メモリから前記以前参照データブロック中の、前記現在参照データブロックに連続するデータブロックの一部分のみと、前記現在参照データブロックとを並列的にリードする段階と、
    前記直前データブロック中の、前記現在データブロックに連続するデータブロックの一部分のみと前記以前参照データブロック中の、前記現在参照データブロックに連続するデータブロックの一部分のみとを比較する第1比較と、
    前記第2遅延データブロックのすべてと前記現在参照データブロックのすべてとを比較する第2比較とを並列的に実行する段階と、
    前記第1比較の結果と前記第2比較の結果とが共にマッチングする時、拡張データブロックを圧縮する段階とを含み、
    前記第1比較と前記第2比較との結果に基づいて、前記第3遅延データブロックを出力するか、または拡張データブロックを圧縮して出力するかを選択する段階とを含み、
    前記拡張データブロックは、前記直前データブロックの前記一部と前記第3遅延データブロックとを含み、
    前記現在データブロックのサイズは、前記直前データブロックの前記一部のサイズよりも大きく、
    前記現在参照データブロックのサイズは、前記以前参照データブロックの前記一部のサイズよりも大きいデータ圧縮方法。
  6. 前記メモリは、前記現在参照データブロックが保存された第1メモリ領域と前記以前参照データブロックが保存された第2メモリ領域とを含むバッファメモリであり、前記第1メモリ領域と前記第2メモリ領域のそれぞれは、インターリービング方式で割り当てられ、独立してアクセス可能な互いに異なるメモリに具現される請求項5に記載のデータ圧縮方法。
  7. 前記拡張データブロックのサイズと前記現在データブロックのサイズとの比は、帯小数である請求項5に記載のデータ圧縮方法。
  8. 第1メモリ領域、第2メモリ領域、及び第3メモリ領域を含むバッファメモリと、
    ハッシュキー生成回路から出力されたアドレスに応答して、前記第1メモリ領域に保存された以前参照データブロックの一部のみと前記第2メモリ領域に保存された前記一部に連続する現在参照データブロックとを出力するバッファメモリコントローラと、
    入力データストリームを受信し、前記入力データストリームに含まれた現在データブロックの遅延を、対応する遅延回路を用いてそれぞれ調節し、第1遅延データブロックと第2遅延データブロックと第3遅延データブロックとを生成する入力データレジスタと、
    前記第2遅延データブロックの直前に受信されて格納されているデータブロックを直前データブロックとし、前記直前データブロック中の、前記現在データブロックに連続するデータブロックの一部分のみと前記以前参照データブロックの前記一部分のみとがマッチングするか否かと、前記第2遅延データブロックと前記現在参照データブロックとがマッチングするか否かとを判断し、該判断の結果によって、制御情報を生成する比較回路と、
    前記制御情報に基づいて、前記第3遅延データブロックを出力するか、圧縮データを出力する圧縮データ生成回路と、を含み、
    前記圧縮データは、前記直前データブロックの前記一部みと前記第3遅延データブロックとを含む拡張データブロックを圧縮して生成され、
    前記現在データブロックのサイズは、前記直前データブロックの前記一部のサイズよりも大きく、
    前記現在参照データブロックのサイズは、前記以前参照データブロックの前記一部のサイズよりも大きいデータ圧縮回路。
  9. 前記第1メモリ領域、前記第2メモリ領域、及び前記第3メモリ領域のそれぞれは、インターリービング方式で割り当てられ、独立してアクセス可能な互いに異なるメモリに具現される請求項8に記載のデータ圧縮回路。
  10. 前記バッファメモリコントローラは、前記第1メモリ領域から前記以前参照データブロックの前記一部と、前記第2メモリ領域から前記現在参照データブロックとを並列的にリードした後、前記現在データブロックを前記第3メモリ領域にライトする請求項8に記載のデータ圧縮回路。
  11. 前記バッファメモリコントローラは、
    前記アドレスを用いて、前記第1メモリ領域に対する第1アドレスと前記第2メモリ領域に対する第2アドレスとを生成するアドレス生成器と、
    前記第1アドレスを用いて、前記第1メモリ領域から前記以前参照データブロックの前記一部と、前記第2アドレスを用いて、前記第2メモリ領域から前記現在参照データブロックとを並列的にリードし、前記現在データブロックに対する第3アドレスに基づいて、前記現在データブロックを前記第3メモリ領域にライトするバッファメモリアクセス制御回路と、
    を含む請求項8に記載のデータ圧縮回路。
  12. 前記比較回路は、前記以前参照データブロックの前記一部と前記直前データブロックの前記一部とがマッチするか否かと、前記現在参照データブロックのすべてと前記第3遅延データブロックのすべてとがマッチするか否かとを並列的に判断する請求項8に記載のデータ圧縮回路。
  13. 前記比較回路は、
    前記直前データブロックの前記一部を保存するレジスタと、
    前記レジスタから出力された前記直前データブロックの前記一部と前記バッファメモリコントローラから出力された前記以前参照データブロックの前記一部とがマッチするか否かを判断する第1比較器と、
    前記第2遅延データブロックと前記現在参照データブロックとがマッチするか否かを判断する第2比較器と、
    前記第1比較器の出力信号と前記第2比較器の出力信号とに基づいて、前記マッチングの有無を示すマッチング情報とマッチングされたデータ長を示す長さ情報とを出力する長さ計算回路と、
    前記直前データブロックの前記一部に対するアドレスと前記現在データブロックに対するアドレスとに基づいて距離情報を出力する距離計算回路と、を含み、
    前記制御情報は、前記マッチング情報、前記長さ情報、及び前記距離情報を含む請求項8に記載のデータ圧縮回路。
  14. 前記圧縮データ生成回路は、
    前記マッチング情報に基づいて選択信号を生成する選択信号生成回路と、
    前記長さ情報と前記距離情報とに基づいて、前記圧縮データを生成するコード生成回路と、
    前記選択信号に応答して、前記現在データブロックまたは前記圧縮データを出力する選択回路と、
    を含む請求項13に記載のデータ圧縮回路。
  15. データ保存装置と、
    データ圧縮処理の対象となる現在データブロックと、前記現在データブロックに先行して入力された以前データブロックとを含むデータストリームを出力するホストと、
    前記現在データブロックを受信し、前記現在データブロックの遅延を対応する遅延回路を用いてそれぞれ調節し、第1遅延データブロックと第2遅延データブロックと第3遅延データブロックとを生成する入力データレジスタを含むメモリコントローラと、を含み、
    前記メモリコントローラは、前記ホストからの前記データストリームにおけるデータブロックまたはそれぞれの拡張データブロックのマッチング特性を判断し、該判断の結果によって、前記データストリームにおける前記第3遅延データブロックを出力するかまたは前記拡張データブロックを圧縮し、該圧縮されたデータを前記データ保存装置に出力し、
    前記第2遅延データブロックを前記現在データブロックとし、
    前記第2遅延データブロックの直前に受信され前記入力データレジスタに格納されているデータブロックを直前データブロックとし、
    前記第1遅延データブロックに対応して生成されたハッシュキーに対応するアドレスを開始位置とするデータブロックを現在参照データブロックとし、
    該現在参照データブロックに係るアドレスに隣接するメモリ領域のアドレスに係るデータブロックを以前参照データブロックとし、
    前記メモリコントローラは、前記現在データブロックのマッチング特性を判断した後、前記直前データブロック中の、前記現在データブロックに連続するデータブロックの一部分と前記第遅延データブロックとを含む拡張データブロックのマッチング特性を判断し、
    前記メモリコントローラは、前記直前データブロック中の、前記現在データブロックに連続するデータブロックの一部分のみと前記以前参照データブロックの、前記現在参照データブロックに連続するデータブロックの一部分のみとがマッチングするか否かと、前記第2遅延データブロックと前記現在参照データブロックとがマッチングするか否かとを並列的に判断する比較回路をさらに含み、
    前記現在データブロックのサイズは、前記直前データブロックの前記一部のサイズよりも大きく、
    前記現在参照データブロックのサイズは、前記以前参照データブロックの前記一部のサイズよりも大きいデータ処理装置。
  16. 前記メモリコントローラは、
    第1メモリ領域、第2メモリ領域、及び第3メモリ領域を含むバッファメモリと、
    アドレスに応答して、前記第1メモリ領域に保存された前記以前参照データブロックの前記一部と前記第2メモリ領域に保存された前記現在参照データブロックとを並列的に出力するバッファメモリコントローラと、さらに、判断の結果によって、制御情報を生成する前記比較回路と、
    前記制御情報に基づいて、前記現在データブロックを出力するか、前記拡張データブロックを圧縮して生成された前記圧縮データを出力する圧縮データ生成回路と、
    をさらに含む請求項15に記載のデータ処理装置。
  17. 前記第1メモリ領域、前記第2メモリ領域、及び前記第3メモリ領域のそれぞれは、インターリービング方式で割り当てられた互いに異なるアドレスを有する互いに異なるメモリに具現される請求項16に記載のデータ処理装置。
  18. 前記バッファメモリコントローラは、
    前記アドレスを用いて、前記第1メモリ領域に対する第1アドレスと前記第2メモリ領域に対する第2アドレスとを生成するアドレス生成器と、
    前記第1アドレスを用いて、前記第1メモリ領域から前記以前参照データブロックの前記一部と、前記第2アドレスを用いて、前記第2メモリ領域から前記現在参照データブロックとを並列的にリードし、前記現在データブロックに対する第3アドレスに基づいて、前記現在データブロックを前記第3メモリ領域にライトするバッファメモリアクセス制御回路と、
    を含む請求項16に記載のデータ処理装置。
  19. 前記比較回路は、
    前記直前データブロックの前記一部を保存するレジスタと、
    前記レジスタから出力された前記直前データブロックの前記一部と前記バッファメモリコントローラから出力された前記以前参照データブロックの前記一部とがマッチするか否かを判断する第1比較器と、
    前記現在データブロックと前記現在参照データブロックとがマッチするか否かを判断する第2比較器と、
    前記第1比較器の出力信号と前記第2比較器の出力信号とに基づいて、前記マッチングの有無を示すマッチング情報とマッチングされたデータ長を示す長さ情報とを出力する長さ計算回路と、
    前記直前データブロックの前記一部に対するアドレスと前記現在データブロックに対するアドレスとに基づいて距離情報を出力する距離計算回路と、を含み、
    前記制御情報は、前記マッチング情報、前記長さ情報、及び前記距離情報を含む請求項16に記載のデータ処理装置。
  20. 前記圧縮データ生成回路は、
    前記マッチング情報に基づいて選択信号を生成する選択信号生成回路と、
    前記長さ情報と前記距離情報とに基づいて、前記圧縮データを生成するコード生成回路と、
    前記選択信号に応答して、前記現在データブロックまたは前記圧縮データを出力する選択回路と、
    を含む請求項19に記載のデータ処理装置。
  21. 前記拡張データブロックのサイズと前記現在データブロックのサイズとの比は、整数ではない請求項15に記載のデータ処理装置。
  22. 前記データ保存装置は、フラッシュメモリ、eMMC、UFS、USBフラッシュドライブ、またはSSDである請求項15に記載のデータ処理装置。
  23. 前記データ保存装置は、ハードディスクドライブである請求項15に記載のデータ処理装置。
  24. 前記データ処理装置は、スマートフォン、タブレットPC、モバイルインターネット装置、または電子ブックである請求項15に記載のデータ処理装置。
JP2013262636A 2013-01-02 2013-12-19 データ圧縮方法と、該方法を行う装置 Active JP6512733B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020130000074A KR101992274B1 (ko) 2013-01-02 2013-01-02 데이터 압축 방법과 상기 방법을 수행할 수 있는 장치들
KR10-2013-0000074 2013-01-02

Publications (3)

Publication Number Publication Date
JP2014132750A JP2014132750A (ja) 2014-07-17
JP2014132750A5 JP2014132750A5 (ja) 2016-12-22
JP6512733B2 true JP6512733B2 (ja) 2019-05-15

Family

ID=50150526

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013262636A Active JP6512733B2 (ja) 2013-01-02 2013-12-19 データ圧縮方法と、該方法を行う装置

Country Status (5)

Country Link
US (1) US9280287B2 (ja)
EP (1) EP2752760B1 (ja)
JP (1) JP6512733B2 (ja)
KR (1) KR101992274B1 (ja)
CN (1) CN103916131B (ja)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9438940B2 (en) 2014-04-07 2016-09-06 The Nielsen Company (Us), Llc Methods and apparatus to identify media using hash keys
CN105790768B (zh) * 2014-12-19 2018-12-25 珠海全志科技股份有限公司 数据存储方法和系统
CN104485967B (zh) * 2015-01-08 2017-10-03 中山大学 由序列通项表达式驱动的并行计算传输列表实时压缩方法
US10542457B2 (en) 2015-04-20 2020-01-21 Qualcomm Incorporated Enhanced compression formats for data compression
US20170038978A1 (en) * 2015-08-05 2017-02-09 HGST Netherlands B.V. Delta Compression Engine for Similarity Based Data Deduplication
US10394724B2 (en) 2016-08-22 2019-08-27 Qualcomm Incorporated Low power data transfer for memory subsystem using data pattern checker to determine when to suppress transfers based on specific patterns
US10809928B2 (en) 2017-06-02 2020-10-20 Western Digital Technologies, Inc. Efficient data deduplication leveraging sequential chunks or auxiliary databases
US10503608B2 (en) 2017-07-24 2019-12-10 Western Digital Technologies, Inc. Efficient management of reference blocks used in data deduplication
CN107622781B (zh) * 2017-10-12 2020-05-19 华中科技大学 一种提升三层忆阻器写性能的编解码方法
CN111124940B (zh) * 2018-10-31 2022-03-22 深信服科技股份有限公司 一种基于全闪存阵列的空间回收方法及系统
CN112070652A (zh) * 2019-06-10 2020-12-11 上海赜睿信息科技有限公司 数据压缩、解压方法、可读存储介质和电子设备
KR20200143611A (ko) 2019-06-14 2020-12-24 삼성전자주식회사 스토리지 장치 및 스토리지 장치의 동작 방법
CN114077554B (zh) * 2022-01-20 2022-06-21 广州匠芯创科技有限公司 一种数据解码方法、系统、设备及介质

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2259824B (en) * 1991-09-19 1995-01-18 Sony Broadcast & Communication Data compression
US5371499A (en) * 1992-02-28 1994-12-06 Intersecting Concepts, Inc. Data compression using hashing
US5521597A (en) * 1993-08-02 1996-05-28 Mircosoft Corporation Data compression for network transport
US5977977A (en) * 1995-08-04 1999-11-02 Microsoft Corporation Method and system for multi-pass rendering
US5990955A (en) * 1997-10-03 1999-11-23 Innovacom Inc. Dual encoding/compression method and system for picture quality/data density enhancement
JP3541930B2 (ja) * 1998-08-13 2004-07-14 富士通株式会社 符号化装置及び復号化装置
JP2000148656A (ja) * 1998-11-09 2000-05-30 Mitsubishi Electric Corp メモリシステム
US6819271B2 (en) 1999-01-29 2004-11-16 Quickshift, Inc. Parallel compression and decompression system and method having multiple parallel compression and decompression engines
US6601104B1 (en) * 1999-03-11 2003-07-29 Realtime Data Llc System and methods for accelerated data storage and retrieval
US6658148B1 (en) 2000-06-06 2003-12-02 Matsushita Electric Works, Ltd. Image processing method and apparatus
US6763444B2 (en) * 2001-05-08 2004-07-13 Micron Technology, Inc. Read/write timing calibration of a memory array using a row or a redundant row
TWI220959B (en) * 2003-06-05 2004-09-11 Carry Computer Eng Co Ltd Storage device with optimized compression management mechanism
AU2004301746B2 (en) * 2003-07-21 2008-04-10 Fraunhoffer-Gesellschaft Zur Forderung Der Angewandten Forschung E.V. Audio file format conversion
US7321991B2 (en) 2004-01-10 2008-01-22 Hynix Semiconductor Inc. Semiconductor memory device having advanced test mode
US20060069857A1 (en) 2004-09-24 2006-03-30 Nec Laboratories America, Inc. Compression system and method
US20060106870A1 (en) * 2004-11-16 2006-05-18 International Business Machines Corporation Data compression using a nested hierarchy of fixed phrase length dictionaries
US7215259B2 (en) 2005-06-03 2007-05-08 Quantum Corporation Data compression with selective encoding of short matches
EP2033128A4 (en) 2006-05-31 2012-08-15 Ibm METHOD AND SYSTEM FOR DATA TRANSFORMATION OF LOGIC OBJECTS FOR STORAGE PURPOSES
CN101212682B (zh) * 2007-12-22 2011-06-15 深圳市同洲电子股份有限公司 一种运动搜索区域的数据加载装置和方法
JP5481809B2 (ja) * 2008-08-12 2014-04-23 富士通株式会社 コンパレータ回路及びそれを有するアナログデジタルコンバータ
CN101478311B (zh) * 2009-01-22 2010-10-20 浙江大学 bzip2压缩算法硬件加速实现方法
CN101505427A (zh) * 2009-02-20 2009-08-12 杭州爱威芯科技有限公司 视频压缩编码算法中的运动估计装置
WO2010113454A1 (ja) * 2009-03-31 2010-10-07 パナソニック株式会社 記録媒体、再生装置、及び集積回路
KR20120090194A (ko) * 2011-02-07 2012-08-17 삼성전자주식회사 데이터 처리 장치 및 이를 포함하는 데이터 처리 시스템

Also Published As

Publication number Publication date
US9280287B2 (en) 2016-03-08
EP2752760A2 (en) 2014-07-09
CN103916131A (zh) 2014-07-09
EP2752760A3 (en) 2015-07-29
KR20140088319A (ko) 2014-07-10
KR101992274B1 (ko) 2019-09-30
US20140189279A1 (en) 2014-07-03
EP2752760B1 (en) 2019-03-20
JP2014132750A (ja) 2014-07-17
CN103916131B (zh) 2019-05-28

Similar Documents

Publication Publication Date Title
JP6512733B2 (ja) データ圧縮方法と、該方法を行う装置
US20190196907A1 (en) Compression techniques for distributed data
US20190087115A1 (en) Method and system for in-line deduplication in a storage drive based on a non-collision hash
TWI648622B (zh) 快閃記憶體之壓縮、讀取方法及應用其方法的裝置
JP6366249B2 (ja) データ圧縮装置及び方法、データ圧縮装置を含むメモリシステム
US9696910B2 (en) Data compression and management
KR101759658B1 (ko) 메모리 장치 및 메모리 시스템
US9864542B2 (en) Data deduplication using a solid state drive controller
US10877668B2 (en) Storage node offload of residual part of a portion of compressed and distributed data to a second storage node for decompression
US10579591B1 (en) Incremental block compression
US9836248B2 (en) In-memory data compression complementary to host data compression
CN106664098B (zh) 用于将二进制映射到三进制及其反转的装置和方法
US9176977B2 (en) Compression/decompression accelerator protocol for software/hardware integration
US9934234B2 (en) Adaptive rate compression hash processor
KR20180048938A (ko) 하드웨어-가속화된 스토리지 압축
KR102072412B1 (ko) 데이터 압축 회로의 동작 방법과 상기 방법을 수행할 수 있는 장치들
CN105630529A (zh) Fpga配置文件的加载方法和解码器
US11481125B2 (en) Storage device and storage system performing offloaded tasks from host
KR20230091001A (ko) 압축된 연속 취소 알고리즘을 통한 높은 처리량의 극 ecc 디코딩
CN117856797A (zh) 数据压缩方法及相关装置

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20161108

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20161108

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20171127

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180109

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180405

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180918

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20181213

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190409

R150 Certificate of patent or registration of utility model

Ref document number: 6512733

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250