JP6366249B2 - データ圧縮装置及び方法、データ圧縮装置を含むメモリシステム - Google Patents

データ圧縮装置及び方法、データ圧縮装置を含むメモリシステム Download PDF

Info

Publication number
JP6366249B2
JP6366249B2 JP2013214521A JP2013214521A JP6366249B2 JP 6366249 B2 JP6366249 B2 JP 6366249B2 JP 2013214521 A JP2013214521 A JP 2013214521A JP 2013214521 A JP2013214521 A JP 2013214521A JP 6366249 B2 JP6366249 B2 JP 6366249B2
Authority
JP
Japan
Prior art keywords
input data
data
hash
hit
hash table
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
JP2013214521A
Other languages
English (en)
Other versions
JP2014082762A (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 JP2014082762A publication Critical patent/JP2014082762A/ja
Application granted granted Critical
Publication of JP6366249B2 publication Critical patent/JP6366249B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • 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

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)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明は、データ圧縮装置及び方法、データ圧縮装置を含むメモリシステムに関する。
データを圧縮する技術は、データ格納装置からまたはデータ格納装置にデータを伝送する際に必要なエネルギーを低くし、かつ伝送速度を高め、制限された格納空間の活用を高めるために多様な方式で用いられる。すなわち、データ格納装置から読み取られ、またはデータ格納装置に書き込まれるデータのサイズを、データ圧縮技術を適用して減らせるのであれば、データ格納装置によって行われる読み取り及び書き込みの全体回数が減少する。また、減少した読み取り/書き込みの回数によってデータ格納装置の期待寿命が増加する。
本発明が解決しようとする技術的課題は、データ圧縮率を向上させることができるデータ圧縮方法を提供することである。
本発明が解決しようとする他の技術的課題は、データ圧縮率が向上したデータ圧縮装置を提供することである。
本発明が解決しようとするまた他の技術的課題は、前記データ圧縮装置を採用して製品期待寿命が向上したメモリシステムを提供することである。
本発明の技術的課題は、上述した技術的課題に制限されず、上述していないまた他の技術的課題は次の記載から当業者に明確に理解できるであろう。
前記技術的課題を達成するための本発明の一実施形態によるデータ圧縮方法は、入力データが提供され、前記入力データに対するハッシュキー(hash key)を生成し、生成されたハッシュキーでハッシュテーブルを検索し、前記入力データがハッシュヒット(hash hit)であると判断すると、前記ハッシュテーブルを利用して前記入力データを圧縮し、入力データでキャッシュメモリを検索して入力データがキャッシュヒットであると判断すると、前記キャッシュメモリを利用して前記入力データを圧縮することを含む。
本発明のいくつかの実施形態で、前記入力データがハッシュヒットであるかを判断することは、前記生成されたハッシュキーで前記ハッシュテーブルから前記入力データに対するインデックスを抽出し、バッファメモリに格納されたデータのうち前記抽出されたインデックスによって指示される指示データを抽出し、前記入力データと前記指示データとが同一である場合、前記入力データをハッシュヒットと判断することを含み得る。この際、前記ハッシュテーブルを利用して前記入力データを圧縮することは、前記ハッシュテーブルから抽出した前記インデックスと前記指示データに対する長さ情報とを利用して前記入力データを圧縮することを含み得る。
本発明のいくつかの実施形態で、前記入力データがキャッシュヒットであるかを判断することは、前記キャッシュメモリに前記入力データが存在するかを判断することを含み得る。この際、前記キャッシュメモリを利用して前記入力データを圧縮することは、前記キャッシュメモリから抽出した前記入力データに対するインデックスと前記キャッシュメモリに格納された前記入力データに対する長さ情報とを利用して前記入力データを圧縮することを含み得る。
本発明のいくつかの実施形態で、前記データ圧縮方法は前記入力データがハッシュヒットではないと判断すると、ハッシュ衝突が生じたかを判断し、前記ハッシュ衝突が生じた場合、前記ハッシュキーに対する衝突カウンタを増加させ、前記ハッシュキーに対する衝突カウンタがあらかじめ定めた臨界値以上である場合、前記キャッシュメモリをアップデートすることをさらに含み得る。また、前記データ圧縮方法は前記キャッシュメモリをアップデートした後、前記ハッシュテーブルをアップデートすることをさらに含み得る。
本発明のいくつかの実施形態で、前記入力データがキャッシュヒットであるかを判断することは、前記入力データがハッシュヒットであるかを判断した後に行われ得る。
本発明のいくつかの実施形態で、前記データ圧縮方法は、前記入力データがハッシュヒットであると共にキャッシュヒットである場合、前記ハッシュテーブルを利用して前記入力データを圧縮する際の第1圧縮率と前記キャッシュメモリを利用して前記入力データを圧縮する際の第2圧縮率とを比較し、圧縮率がさらに高い方法により前記入力データを圧縮することをさらに含み得る。
本発明のいくつかの実施形態で、前記データ圧縮方法は前記入力データを圧縮して生成した出力データを不揮発性メモリ装置に出力することをさらに含み得る。
前記技術的課題を達成するための本発明の他の実施形態によるデータ圧縮方法は、第1入力データに対して生成されたハッシュキーでハッシュテーブルを検索して第1入力データがハッシュヒットであるかを判断して、第1入力データと異なる第2入力データでキャッシュメモリを検索して第2入力データがキャッシュヒットであるかを判断することを含み、第1入力データがハッシュヒットであるかを判断することと、第2入力データがキャッシュヒットであるかを判断することは第1システムクロックサイクル内で同時に行われ得る。
本発明のいくつかの実施形態で、前記データ圧縮方法は前記第2入力データと異なる第3入力データに対する圧縮結果に基づいて前記ハッシュテーブルをアップデートすることをさらに含み、前記第1入力データがハッシュヒットであるかを判断することと、前記ハッシュテーブルをアップデートすることは前記第1システムクロックサイクル内で同時に行われ得る。
本発明のいくつかの実施形態で、前記データ圧縮方法は前記第3入力データと異なる第4入力データに対するハッシュキーを生成することと、前記第4入力データと異なる第5入力データに対する圧縮結果に基づいて前記第5入力データをエンコードすることをさらに含み、前記第1入力データがハッシュヒットであるかを判断することと、前記第4入力データに対するハッシュキーを生成することと、前記第5入力データをエンコードすることは前記第1システムクロックサイクル内で同時に行われ得る。
本発明のいくつかの実施形態で、前記データ圧縮方法は前記第4入力データに対するハッシュキーを生成した後、第2システムクロックサイクル内で前記生成されたハッシュキーで前記ハッシュテーブルを検索して前記第4入力データがハッシュヒットであるかを判断し、第3システムクロックサイクル内で、前記第4入力データで前記キャッシュメモリを検索して前記第4入力データがキャッシュヒットであるかを判断することをさらに含み得る。この際、前記第2システムクロックサイクルは前記第3システムクロックサイクルより先行することができる。
前記他の技術的課題を達成するための本発明の一実施形態によるデータ圧縮装置は、入力データが提供され、入力データに対するハッシュキーを出力するハッシュキー生成器、ハッシュキーでハッシュテーブルを検索して入力データがハッシュヒットであるかを判断し、入力データがハッシュヒットではないと判断した場合、入力データでキャッシュメモリを検索して入力データがキャッシュヒットであるかを判断した後、入力データに対する圧縮情報を出力する制御部、および制御部から提供された圧縮情報に基づいて入力データをエンコードし、入力データを圧縮した出力データを出力するエンコーダを含む。
本発明のいくつかの実施形態で、前記ハッシュテーブルは第1ハッシュテーブルと第2ハッシュテーブルとを含み、第1システムクロックサイクル内で前記制御部は前記入力データが前記第1ハッシュテーブルからハッシュヒットであるかを判断し、第2システムクロックサイクル内で前記制御部は前記入力データが第2ハッシュテーブルからハッシュヒットであるかを判断できる。この際、前記第1ハッシュテーブルと前記第2ハッシュテーブルとはSPSRAM(Single Port SRAM)で実現され得る。
本発明のいくつかの実施形態で、前記ハッシュテーブルはDPSRAM(Dual Port SRAM)で実現され得る。
本発明のいくつかの実施形態で、前記ハッシュテーブルはハッシュ衝突回数をカウントする衝突カウンタフィールドを含み得る。
本発明のいくつかの実施形態で、前記キャッシュメモリは複数のフリップ−フロップで実現され得る。
本発明のいくつかの実施形態で、前記データ圧縮装置は前記ハッシュテーブルと前記キャッシュメモリとがインデックスするSRAMで実現されたバッファメモリをさらに含み得る。この際、前記出力データは前記入力データの位置情報と長さ情報とを含み得る。
前記また他の技術的課題を達成するための本発明の一実施形態によるメモリシステムは、ホストから入力データが提供され、入力データを圧縮した出力データを出力するコントローラ、および出力データを格納する不揮発性メモリ装置を含み、コントローラは、出力データを生成するためのハッシュテーブルとキャッシュメモリとを含むデータ圧縮装置を含み、データ圧縮装置は、入力データに基づいて生成されたハッシュキーで前記ハッシュテーブルを検索して入力データがハッシュヒットであると判断すると、ハッシュテーブルを利用して出力データを生成し、入力データでキャッシュメモリを検索して入力データがキャッシュヒットであると判断すると、キャッシュメモリを利用して前記出力データを生成する。
本発明のいくつかの実施形態で、前記メモリシステムは前記ハッシュテーブルと前記キャッシュメモリとがインデックスするバッファメモリをさらに含み得る。
本発明のいくつかの実施形態で、前記不揮発性メモリ装置は複数の不揮発性メモリチップを含み、前記複数の不揮発性メモリチップは複数のグループに分割され、前記複数の不揮発性メモリチップの各グループは一つの共通チャンネルを介して前記コントローラと通信することができる。
その他実施形態の具体的な内容は詳細な説明及び図面に含まれている。
本発明の一実施形態によるデータ圧縮装置の例示的なブロック図である。 図1に図示するハッシュキー生成器の動作を説明するための図である。 図1に図示するハッシュテーブルの例示的な構成を図示する図である。 図1に図示するバッファメモリの例示的な構成を図示する図である。 図1に図示するキャッシュメモリの例示的な構成を図示する図である。 本発明の一実施形態によるデータ圧縮方法を説明するための順序図である。 図6に図示するデータ圧縮方法をさらに具体的に説明するための図である。 図6に図示するデータ圧縮方法をさらに具体的に説明するための図である。 図6に図示するデータ圧縮方法をさらに具体的に説明するための図である。 図6に図示するデータ圧縮方法をさらに具体的に説明するための図である。 図6に図示するデータ圧縮方法をさらに具体的に説明するための図である。 本発明の他の実施形態によるデータ圧縮方法を説明するための順序図である。 本発明の他の実施形態によるデータ圧縮方法を説明するための順序図である。 本発明の実施形態によるデータ圧縮方法が行われるタイミングを説明するための図である。 本発明の他の実施形態によるデータ圧縮装置の例示的なブロック図である。 本発明のいくつかの実施形態によるメモリシステムを説明するためのブロック図である。 図15に図示するコントローラの詳細ブロック図である。 図15のメモリシステムの応用例を図示するブロック図である。 図17を参照して説明されたメモリシステムを含むコンピュータシステムを図示するブロック図である。 本発明のいくつかの実施形態によるメモリシステムを適用できる例示的な電子装置を説明するための図である。 本発明のいくつかの実施形態によるメモリシステムを適用できる例示的な電子装置を説明するための図である。
本発明の利点及び特徴、これらを達成する方法は添付する図面と共に詳細に後述する実施形態において明確になるであろう。しかし、本発明は、以下で開示する実施形態に限定されるものではなく、互いに異なる多様な形態で実現されるものであり、本実施形態は、単に本発明の開示を完全にし、本発明が属する技術分野で通常の知識を有する者に発明の範疇を完全に知らせるために提供されるものであり、本発明は、請求項の範囲によってのみ定義される。図面に表示する構成要素のサイズおよび相対的なサイズは説明を明瞭するため、誇張したものであり得る。明細書全体にかけて同一参照符号は同一構成要素を指称し、「および/または」は、言及されたアイテムのそれぞれおよび一つ以上のすべての組合せを含む。
本明細書で使用された用語は実施形態を説明するためであり、本発明を制限しようとするものではない。本明細書で、単数型は例示であり、特に言及しない限り複数型も含む。明細書で使用される「含む(comprises)」および/または「含む(comprising)」は、言及された構成要素、段階、動作および/または素子に関して、一つ以上の他の構成要素、段階、動作および/または素子が存在すること、または追加されることを排除しない。
第1、第2などが多様な素子、構成要素を述べるために使用されるが、これら素子、構成要素はこれらの用語によって制限されないことはいうまでもない。これらの用語は、単に一つ構成要素を他の構成要素と区別するために使用するものである。したがって、以下で言及される第1素子や構成要素は本発明の技術的思想内で第2素子や構成要素であり得ることは勿論である。
特に定義されない限り、本明細書で使用されるすべての用語(技術および科学的用語を含む)は、本発明が属する技術分野で通常の知識を有する者が共通に理解できる意味として使用され得る。また一般に使用される辞典に定義されている用語は明白に特別に定義されていない限り理想的にまたは過度に解釈しない。
以下、図1ないし図5を参照して本発明の一実施形態によるデータ圧縮装置について説明する。
図1は、本発明の一実施形態によるデータ圧縮装置の例示的なブロック図である。図2は、図1に図示するハッシュキー生成器の動作を説明するための図である。図3は、図1に図示するハッシュテーブルの例示的な構成を図示する図面である。図4は、図1に図示するバッファメモリの例示的な構成を図示する図である。図5は、図1に図示するキャッシュメモリの例示的な構成を図示する図である。
図1を参照すると、データ圧縮装置1は、ハッシュキー生成器10、制御部20、ハッシュテーブル30、キャッシュメモリ50及びエンコーダ60を含む。
ハッシュキー生成器10は、入力データ(INPUT DATA)を提供され、入力データ(INPUT DATA)に対するハッシュキー(HASH KEY)を出力することができる。例えば、図2を参照すると、図示するように入力データ(INPUT DATA)がA0,A1,A2,A3である場合、ハッシュキー生成器10はKaというハッシュキーを生成し、入力データ(INPUT DATA)がそれぞれB0,B1,B2,B3、C0,C1,C2,C3である場合、ハッシュキー生成器10はKb、Kcをそれぞれの入力データ(INPUT DATA)に対するハッシュキーとして生成することができる。
本発明のいくつかの実施形態で、ハッシュキー生成器10が使用するハッシュ関数(Fhash)としてXOR演算を使用する。具体的には、ハッシュキー生成器10は入力データそれぞれをn(ここで、nは自然数)ビットずつシフト(shift)した後、これらをXOR演算することによってハッシュキーを生成する。
例えば、入力データがA0,A1,A2,A3である場合、ハッシュキー生成器はA0に対してはビットシフトせず、A1に対しては1ビットシフトし、A2に対しては2ビットシフトし、A3に対しては3ビットシフトした後、これらをXOR演算して得られた結果をハッシュキーKaとして生成する。しかし、本発明のハッシュキー生成器10が使用するハッシュ関数(Fhash)がこのような例示に制限されるものではなく、必要に応じてハッシュ関数(Fhash)はいくらでもこれと異なる形態に変形できる。
制御部20は、ハッシュキー生成器10が生成したハッシュキーに基づいて入力データ(INPUT DATA)に対する圧縮情報(COMPRESSING INFORMATION)を生成した後、これをエンコーダ60に出力する。
本実施形態で使用される「部」という用語は、ソフトウェアまたはFPGAまたはASICのようなハードウェア構成要素を意味し、「部」はある役割を果たす。しかし、「部」はソフトウェアまたはハードウェアに限定される意味ではない。「部」は、アドレッシングできる格納媒体にあるように構成されてもよく、一つまたはそれ以上のプロセッサを再生させるように構成され得る。したがって、一例として「部」は、ソフトウェア構成要素、オブジェクト指向のソフトウェア構成要素、クラス構成要素及びタスク構成要素のような構成要素と、プロセス、関数、属性、プロシーザ、サブルーチン、プログラムコードのセグメント、ドライバ、ファームウェア、マイクロコード、回路、データ、データベース、データ構造、テーブル、アレイ、および変数を含み得る。構成要素と「部」から提供される機能はさらに小さい数の構成要素及び「部」に結合されるかまたは追加的な構成要素と「部」にさらに分離できる。
具体的には、本実施形態で、制御部20は、入力データに対するハッシュキー(HASH KEY)に基づいてハッシュテーブル30とバッファメモリ40を検索して入力データ(INPUT DATA)がハッシュヒット(hash hit)であるかを判断し、入力データ(INPUT DATA)でキャッシュメモリ50を検索し、入力データがキャッシュヒット(cache hit)であるかを判断した後、これに基づいて入力データ(INPUT DATA)に対する圧縮情報(COMPRESSING INFORMATION)を生成した後、これをエンコーダ60に出力する。
先ず、図3を参照すると、本実施形態によるハッシュテーブル30は図示するようにハッシュキーフィールド、衝突カウンタフィールド、インデックスフィールドを含む。ここで、ハッシュキーフィールドは、ハッシュキー生成器10で生成されたハッシュキーをキー値としてハッシュテーブル30を検索する際に使用するフィールドであり、衝突カウンタフィールドは該当ハッシュキーによってハッシュ衝突(hash collision)が何回生じたかをカウントするフィールドであり、インデックスフィールドはバッファメモリ(図4の40を参照)内のデータ位置を指示するインデックス値(またはインデックス)を格納したフィールドである。
本発明のいくつかの実施形態で、このようなハッシュテーブル30は例えば、SRAM(Static Random Access Memory)で実現されるが、本発明がこれに制限されるものではない。
次に、図4を参照すると、本実施形態によるバッファメモリ40は、例えば、ホストから提供されたデータがバッファリングされて格納されている。本発明のいくつかの実施形態で、このようなバッファメモリ40はSRAMで実現されるが、本発明がこれに制限されるものではない。
一方、本発明のいくつかの実施形態で、このようなバッファメモリ40はデータ圧縮装置(図16の1230を参照)の外部に実現される。すなわち、バッファメモリ40はデータ圧縮装置(図16の1230を参照)の外部に別途の構成要素(例えば、図16の1240を参照)として実現される。しかし、本発明がこれに制限されるものではなく、必要に応じてバッファメモリ40はデータ圧縮装置(図1の1を参照)の内部に実現され得る。
バッファメモリ40に格納された入力データは所定インデックスによりその位置が表示されている。図4を参照すると、例えば、データA0,A1,A2,A3はインデックス8によって指示されており、データB0,B1,B2,B3はインデックス16によって指示されており、データC0,C1,C2,C3はインデックス32によって指示されている。
前述したハッシュテーブル(図3の30を参照)のインデックスフィールドはこのようなバッファメモリ40上のインデックスを意味する。例えば、データA0,A1,A2,A3のハッシュキーはKaであり(図2を参照)、ハッシュテーブル(図3の30を参照)でハッシュキーKaによって指示されるインデックスは8である。この際、バッファメモリ40上にインデックス8によって指示される位置にデータA0,A1,A2,A3が存在するため、データが正しくインデックスされていることが分かる。すなわち、ハッシュテーブル(図3の30を参照)に格納されるそれぞれのハッシュキーは該当インデックス及び衝突カウンタ値と関連して格納される。
次に、図5を参照すると、キャッシュメモリ50は参照カウンタフィールドと、データフィールドと、インデックスフィールドを含む。ここで、参照カウンタフィールドは、該当入力データが何回参照されたかカウントした値を格納するために使用されるフィールドであり、データフィールドは該当入力データが格納されるフィールドであり、インデックスフィールドはバッファメモリ(図4の40を参照)内に位置したデータのインデックスを格納したフィールドである。
例えば、データB0,B1,B2,B3はインデックス16によって指示されており、図4のバッファメモリ40上にインデックス16によって指示される位置にデータB0,B1,B2,B3が存在するため、データが正しくインデックスされていることが分かる。
ハッシュテーブル(図3の30を参照)及びキャッシュメモリ50である場合、各テーブルの「エントリー(entry)」は前述したように複数の関連フィールドを有する。
本発明のいくつかの実施形態で、このようなキャッシュメモリ50は例えば、複数のフリップ−フロップ(flip−flop)で実現される。特に本発明のいくつかの実施形態で、キャッシュメモリ50は複数のフリップ−フロップで構成されたレジスターファイル(register file)であるが、本発明がこれに制限されるものではない。
本実施形態による制御部20は、入力データ(INPUT DATA)に対する圧縮情報(COMPRESSING INFORMATION)を生成するため、データ圧縮装置(図1の1を参照)に含まれた前述したハッシュテーブル30とキャッシュメモリ50を何れも参照する。このような制御部20の具体的な動作については後述する。
再び図1を参照すると、エンコーダ60は制御部20から生成された圧縮情報(COMPRESSING INFORMATION)を提供され、圧縮された入力データ(INPUT DATA)を「出力データ(OUTPUT DATA)」として出力する。このように出力された出力データはデータ格納装置(例えば、不揮発性メモリ装置)に提供して格納される。またこのように出力された出力データは外部回路に提供される。
本発明のいくつかの実施形態で、このような出力データ(OUTPUT DATA)は入力データ(INPUT DATA)を位置情報と長さ情報でのみ示すデータである。すなわち、本発明のいくつかの実施形態で使用される圧縮アルゴリズムは入力データ(INPUT DATA)を位置情報と長さ情報でのみ示すことによって圧縮するアルゴリズムである。このようなアルゴリズムの例としては、LZ(Lempel−Ziv)77,LZ78,LZW(Lempel−Ziv−Welch)などのLZ系列アルゴリズムが挙げられるが、本発明がこれに制限されるものではない。本発明の他のいくつかの実施形態で、データの圧縮において、デフレート(Deflate)アルゴリズム、ハフマン(Huffman)アルゴリズム、算術符号化(Arithmetic Coding)アルゴリズムなどが使用される。
以下図1、図6ないし図11を参照して本発明の一実施形態によるデータ圧縮方法について説明する。
図6は、本発明の一実施形態によるデータ圧縮方法を説明するための順序図である。図7ないし図11は、図6に図示するデータ圧縮方法をさらに具体的に説明するための図である。
以下では、理解を深めるため、いくつかを仮定して本実施形態によるデータ圧縮方法について説明する。具体的には、本実施形態による動作を説明する際、ハッシュテーブル30、バッファメモリ40、キャッシュメモリ50の構成がそれぞれ図3ないし図5に図示する図と同様であると仮定し、本実施形態によるデータ圧縮方法について説明する。しかし、このような説明方法は理解を深めるためであって、本発明の範囲を制限するためではない。
先ず、図6を参照すると、入力データに対するハッシュキーを生成する(S100)。具体的には図1を参照すると、例えば、ハッシュキー生成器10は入力データ(INPUT DATA)を提供され、入力データに対するハッシュキーを生成する。
次に、図6を参照すると、生成されたハッシュキーに基づいて入力データがハッシュヒット(hash hit)であるかを判断する(S110)。仮に、判断した結果、入力データがハッシュヒットである場合、ハッシュテーブルを利用して圧縮情報を生成する(S115)。
具体的には図1を参照すると、例えば、制御部20は、先ず生成されたハッシュキーでハッシュテーブル30を検索してハッシュキーと連動するインデックスを抽出する。次いで、制御部20はバッファメモリ40に格納されたデータのうちハッシュテーブル30から抽出されたインデックスによって指示される指示データを抽出する。ここで、ハッシュキーに関連する入力データ(INPUT DATA)が、抽出された指示データと同一である場合、ハッシュヒットが発生する。したがって、制御部20はハッシュテーブル30から抽出したインデックスと指示データに対する長さ情報とを利用して入力データ(INPUT DATA)を圧縮するための圧縮情報を生成する。
例えば、データ圧縮装置1の入力データ(INPUT DATA)としてバッファメモリ40上でインデックス44によって指示されるデータC0,C1,C2,C3が入力されたと仮定する(図4を参照)。図2を参照すると、このような入力データ(INPUT DATA)に対するハッシュキーはKcであることが分かるので、ハッシュキー生成器10は入力データに対するハッシュキーでKcを制御部20に出力する。
ここで、制御部20がハッシュキーKcで図3に図示するハッシュテーブル30を検索すると、このときのインデックスは32であることが分かる。また、制御部20がバッファメモリ(図4の40を参照)に格納されたデータのうちインデックス32によって指示される指示データを抽出すると、これもC0,C1,C2,C3であることが分かる。この場合、入力データ(INPUT DATA)と指示データとが互いに同じであるため、ハッシュヒットとなる。したがって、制御部20はハッシュテーブル30から抽出したインデックス(例えば、32)と指示データに対する長さ情報(本実施形態では入力データの一単位が4byteであると仮定する)を利用して入力データ(INPUT DATA)を圧縮するための圧縮情報を生成する。
本実施形態では、このようにハッシュテーブル30を利用して入力データ(INPUT DATA)に対する圧縮に成功した場合、キャッシュメモリ50を利用した圧縮有無の判断を省略する(図6の順序図を参照)。
再び、図6を参照すると、入力データがハッシュヒットではない場合、ハッシュ衝突が生じたかを判断する(S120)。また、ハッシュ衝突が生じた場合、ハッシュテーブルの衝突カウンタを増加させる(S125)。
ここで、ハッシュ衝突とは、データ圧縮装置1に入力される入力データ(INPUT DATA)と前述した方法によりバッファメモリ40から抽出した指示データとが異なる場合を意味する。すなわち、データ値は互いに異なるが、ハッシュ関数(Fhash)により生成したハッシュキーが互いに同じである場合、このようなハッシュ衝突が生じる。
例えば、今回はデータ入力装置1に入力データ(INPUT DATA)としてバッファメモリ(図4の40を参照)内にインデックス48によって指示されたD0,D1,D2,D3が入力されると仮定する。この際、ハッシュキー生成器10によって生成されるデータD0,D1,D2,D3のハッシュキーは図7に図示するようにKaであると仮定する。この際、制御部20がハッシュキーKaで図3に図示するハッシュテーブル30を検索すると、この場合のインデックスは8であることが分かる。
一方、制御部20がバッファメモリ(図4の40を参照)に格納されたデータのうちインデックス8によって指示される指示データを抽出すると、これはデータA0,A1,A2,A3であることが分かる。したがって、この場合には、入力データD0,D1,D2,D3と指示データA0,A1,A2,A3が互いに同じではないため、ハッシュヒットではなく、ハッシュ衝突が生じる(仮に、入力データに対して生成されたハッシュキーがハッシュテーブル30に存在しない場合(すなわち、Kdと共に最初に生成されたハッシュキーである場合)は、本例示とは異なってハッシュヒットでもなく、ハッシュ衝突も生じない)。
したがって、制御部20は、ハッシュキーKaに対する衝突カウンタを1だけ増加させ、ハッシュキーKaに対する衝突カウンタは3になる(図3に図示するハッシュテーブルでハッシュキーKaに対する衝突カウンタは2であった)。このように増加した衝突カウンタはその後ハッシュテーブル30の衝突カウンタフィールドに反映されるが、これについては後述する。
再び図6を参照すると、入力データがキャッシュヒット(cache hit)であるかを判断する(S130)。そして、入力データがキャッシュヒットである場合、キャッシュメモリを利用して圧縮情報を生成する(S135)。
入力データ(INPUT DATA)としてD0,D1,D2,D3が入力される場合、前述したハッシュテーブル30を利用したデータ圧縮は失敗したため、キャッシュメモリ50を利用してデータを圧縮できるのかを判断しなければならない。したがって、制御部20は、入力データ(INPUT DATA)がキャッシュメモリ(例えば、図5の50を参照)に存在するかを確認する。しかし、図5に図示するキャッシュメモリ50にD0,D1,D2,D3が存在しないため、この場合、キャッシュヒットではない。したがって、この場合、制御部20はキャッシュメモリを利用して入力データ(INPUT DATA)を圧縮することができない。
再び図6を参照すると、ハッシュキーに対する衝突カウンタがあらかじめ定めた臨界値(threshold)以上であるかを判断する(S140)。そして、仮にハッシュキーに対する衝突カウンタがあらかじめ定めた臨界値以上である場合、キャッシュメモリをアップデートする(S145)。
入力データ(INPUT DATA)としてD0,D1,D2,D3が入力される場合、ハッシュキーKaに対する衝突カウンタが3になることについて前述した。ここで、あらかじめ定めた臨界値が3(threshold = 3)であると仮定すると、先立って衝突カウンタが1増加することによって、ハッシュキーKaに対する衝突カウンタはあらかじめ定めた臨界値以上になる。したがって、制御部20は図8に図示するようにキャッシュメモリ50をアップデートする。この際、キャッシュメモリ50にはハッシュ衝突と関連する入力データが格納される。この場合、バッファメモリ40上でインデックス8によって指示されるデータA0,A1,A2,A3とバッファメモリ40上でインデックス48によって指示されるデータD0,D1,D2,D3とがキャッシュメモリ50にアップデートされる。
この際、このように新規データをキャッシュメモリ50に追加しなければならないが、キャッシュメモリ50で格納空間が不足する場合、本実施形態では参照カウンタフィールド(REFERENCING COUNTER)の値が最も小さいデータを削除し、そこに新規データを追加する。参照カウンタフィールド値が小さいということはキャッシュメモリ50に格納されたデータを利用したデータ圧縮は成功確率が低いと判断できるからである。
再び図6を参照すると、制御部20は入力データが入力ストリームの最後のデータであるかを判断する(S150)。判断結果、最後ではない場合、入力データに関する情報でハッシュテーブルをアップデートする(S160)。前述した入力データ(INPUT DATA)としてD0,D1,D2,D3が入力される例示において、データD0,D1,D2,D3は入力ストリームの最後ではないため(図4参照)、ハッシュテーブル30に対するアップデートを行う。具体的には、図9に図示するようにハッシュキーKaに対する衝突カウンタを1だけ増加させ、ハッシュキーKaに対するインデックスを48に変更する。
次に、データ入力装置1の入力データ(INPUT DATA)としてバッファメモリ(図4の40)上のインデックス64によって指示されるA0,A1,A2,A3が入力されると仮定する。ハッシュキー生成器10は入力データ(INPUT DATA)に対するハッシュキーとしてKaを生成する(図2を参照)。ハッシュキーが生成されると、制御部20は生成されたハッシュキーKaでハッシュテーブル(図9参照)を検索して入力データ(INPUT DATA)がハッシュヒットであるかを判断する。しかし、先立って、ハッシュキーKaに対するインデックスが48に変更されたため、バッファメモリ(図4の40を参照)から抽出した指示データはD0,D1,D2,D3となる。したがって、この場合入力データA0,A1,A2,A3に対するハッシュヒットは生じない。一方、この場合、ハッシュ衝突が前と同様に生じたため、ハッシュキーKaに対する衝突カウンタは4となる。
次に、制御部20はキャッシュメモリ(図8の50を参照)に入力データA0,A1,A2,A3が存在するかを検索して入力データA0,A1,A2,A3がキャッシュヒットであるかを判断する。この場合、先だってキャッシュメモリ(図8の50を参照)がハッシュ衝突と関連するデータにアップデートされたため、キャッシュメモリ(図8の50を参照)内に入力データA0,A1,A2,A3が存在する。すなわち、制御部20はキャッシュメモリ(図8の50を参照)を検索して入力データA0,A1,A2,A3のインデックスが8であることが分かる。制御部20は、キャッシュメモリ(例えば、図8の50を参照)から検索した入力データA0,A1,A2,A3の位置情報(例えば、インデックス8)と長さ情報とを利用して圧縮情報を生成できるようになる。
一方、ハッシュキーKaに対する衝突カウンタが4になったので、あらかじめ定めた臨界値(例えば、3)以上になる。したがって、制御部20は図10に図示するようにキャッシュメモリ50をアップデートする。この際、キャッシュメモリ50にはすでにハッシュ衝突と関連するデータ(A0,A1,A2,A3)、(D0,D1,D2,D3)が格納されているため、図示するように入力データA0,A1,A2,A3の参照カウンタのみ増加させる。次いで、依然として入力データA0,A1,A2,A3は入力ストリームの最後ではないため、ハッシュテーブル30を図11のようにアップデートする。図11を参照すると、ハッシュキーKaに対する衝突カウンタが4に増加し、インデックスフィールドが64に変更されたことが分かる。
このように本実施形態によるデータ圧縮装置及び方法では、入力データ(INPUT DATA)を圧縮する際、ハッシュテーブル30とキャッシュメモリ50を何れも使用する。このようにハッシュテーブル30とキャッシュメモリ50をすべて使用してデータを圧縮する場合、次のような長所がある。
ハッシュテーブル30のみを利用してデータ圧縮を行う場合、前述したようにハッシュ衝突が生じると、データ圧縮が不可能になる。すなわち、互いにハッシュ衝突関係にあるデータが互いに交互に入力データとして入力されるとデータ圧縮率が非常に低くなる。
このようなハッシュ衝突現象を防止するため、ハッシュキー値がさらに多様に生成されるようにハッシュ関数を変更する方法が考えられるが、ハッシュテーブルサイズはハードウェアの制限があるため、このような方法を採用することも簡単ではない。
しかし、本実施形態では前述したようにハッシュ衝突が生じた入力データを別途のキャッシュメモリ50で管理するため、ハッシュ衝突が生じたデータが互いに交互に入力されるとしてもデータ圧縮率を高めることができる。すなわち、本実施形態ではデータを圧縮するため、ハッシュテーブル30をディクショナリ(dictionary)として使用するものの、ハッシュ衝突が生じたデータをキャッシュメモリ50に格納し、これをサブ−ディクショナリ(sub−dictionary)として使用することによってデータ圧縮率を高めることができる。また、本実施例では前述したようにハッシュ衝突回数が一定臨界値以上になるまでキャッシュメモリ50をアップデートしないため、キャッシュメモリ50に格納されるデータが限りなく増えることも防止できる。すなわち、キャッシュメモリ50内の入力データを格納することに不要なライト作業(write operations)が使用されない。
次に、図1、図12A及び図12Bを参照して本発明の他の実施形態によるデータ圧縮方法について説明する。
図12A及び図12Bは、本発明の他の実施形態によるデータ圧縮方法を説明するための順序図である。以下では、前述した実施形態と重複する内容はその説明を簡略にし、その差異点を中心に説明する。
先ず、図12Aを参照すると、入力データに対するハッシュキーを生成する(S200)。また、生成されたハッシュキーに基づいて入力データがハッシュヒット(hash hit)であるかを判断する(S210)。判断結果、入力データがハッシュヒットである場合、ハッシュテーブルを利用して圧縮情報を生成する(S215)。そして、入力データがハッシュヒットではない場合、ハッシュ衝突が生じたかを判断する(S220)。その結果、ハッシュ衝突が生じた場合、ハッシュテーブルの衝突カウンタを増加させる(S225)。以上の動作は前述した実施形態と大きく変わらないため、その詳細な動作に関する説明は省略する。
次の図12Bを参照すると、入力データがキャッシュヒット(cache hit)であるかを判断する(S230)。そして、入力データがキャッシュヒットである場合、入力データに対してすでに生成された圧縮情報があるかを確認する(S232)。その結果、すでに生成された圧縮情報がない場合、キャッシュメモリを利用して圧縮情報を生成する(S235)。
仮に、入力データに対してハッシュ衝突が生じず、先立って説明した段階でハッシュテーブル30を利用して圧縮することができた場合、すでに生成された圧縮情報が存在するであろう。しかし、逆にキャッシュヒットが生じたが、すでに生成された圧縮情報がない場合、このような入力データはキャッシュメモリ50を利用して圧縮することのみ可能であることを意味する。したがって、キャッシュヒットが生じたが、すでに生成された圧縮情報がなければ、制御部20はキャッシュメモリ50を利用して圧縮情報を生成する。
再び、図12Bを参照すると、入力データがキャッシュヒットであり、入力データに対してすでに生成された圧縮情報がある場合、キャッシュメモリを利用して入力データを圧縮する際の圧縮率がハッシュテーブルを利用して入力データを圧縮する際の圧縮率より大きいかを確認する(S236)。その結果、キャッシュメモリを利用して入力データを圧縮する際の圧縮率がハッシュテーブルを利用して入力データを圧縮する際の圧縮率より大きい場合、圧縮情報をアップデートする(S238)。すなわち、ハッシュテーブルを利用して生成された既存の圧縮情報はキャッシュメモリを利用して生成した圧縮情報にアップデートする。
データを圧縮する過程にこのように入力データがハッシュヒットであると共にキャッシュヒットである場合が生じる。この際、本実施形態による制御部20は両者間の圧縮率を比較して圧縮率が高い方法でデータを圧縮することによってデータ圧縮率を最大まで高めるという長所がある。
再び図12Bを参照すると、ハッシュキーに対する衝突カウンタがあらかじめ定めた臨界値(threshold)以上であるかを判断する(S240)。そして、ハッシュキーに対する衝突カウンタがあらかじめ定めた臨界値以上である場合、キャッシュメモリをアップデートする(S245)。次いで、入力データが入力ストリームの最後であるかを判断する(S250)。判断結果、最後ではない場合、ハッシュテーブルをアップデートする(S260)。以上の動作も先に説明した実施形態と大きく変わらないため、その詳細動作に関する説明は省略する。
以上では制御部20が入力データに対してハッシュヒットであるかどうかを先に判断し、キャッシュヒットであるかどうかを後に判断する動作についてのみ説明したが、本発明がこのような例示に制限されるものではない。本発明の他のいくつかの実施形態で、制御部20は以上で説明とは異なって入力データに対してキャッシュヒットであるかどうかを先に判断し、ハッシュヒットであるかどうかを後に判断するように実現され得る。
一方、先に説明した本実施形態によるデータ圧縮動作はオンザフライ(on−the−fly)方式により行われる。以下、図13を参照してこれについてさらに具体的に説明する。
図13は、本発明の実施形態によるデータ圧縮方法が行われるタイミングを説明するための図である。
図13を参照すると、前述した本実施形態によるデータ圧縮動作は一つのシステムクロックサイクル内で同時に行われる。具体的には、先ず、第1システムクロックサイクルT1内では、第1入力データ(INPUT DATA1)に対するハッシュキー生成動作Pが行われる。
次いで、第2システムクロックサイクルT2内では、第2入力データ(INPUT DATA2)に対するハッシュキー生成動作Pと第1入力データ(INPUT DATA1)に対するハッシュヒット有無判断動作Qが同時に行われる。
次いで、第3システムクロックサイクルT3内では、第3入力データ(INPUT DATA3)に対するハッシュキー生成動作Pと第2入力データ(INPUT DATA2)に対するハッシュヒット有無判断動作Qと、第1入力データ(INPUT DATA1)に対するキャッシュヒット有無判断動作Rが同時に行われる。
次いで、第4システムクロックサイクルT4内では、第4入力データ(INPUT DATA4)に対するハッシュキー生成動作Pと第3入力データ(INPUT DATA3)に対するハッシュヒット有無判断動作Qと、第2入力データ(INPUT DATA2)に対するキャッシュヒット有無判断動作Rと、第1入力データ(INPUT DATA1)を圧縮情報でエンコードする動作Sが同時に行われる。
次いで、第5システムクロックサイクルT5内では、第5入力データ(INPUT DATA4)に対するハッシュキー生成動作Pと第4入力データ(INPUT DATA4)に対するハッシュヒット有無判断動作Qと、第3入力データ(INPUT DATA3)に対するキャッシュヒット有無判断動作Rと、第2入力データ(INPUT DATA2)を圧縮情報でエンコードする動作Sと、第1入力データ(INPUT DATA1)に対する圧縮情報を利用してハッシュテーブルをアップデートする動作Tが同時に行われる。
すなわち、本発明の実施形態によるデータ圧縮方法では、データ圧縮効率向上のため、前述した圧縮動作がオンザフライ(on−the−fly)方式により並列的に行われる。一方、ここで例示したデータ圧縮に必要な各動作(P〜T)は一つの一例に過ぎなく、並列的に行われる各動作がこのような例示的な動作(P〜T)に制限されるものではない。
再び、図13を参照すると、データ圧縮動作がこのように行われるため、いくつかのシステムクロックサイクル(例えば、T5,T6)ではハッシュテーブル30が同時に読み取り及び書き込みされなければならないことが分かる。具体的には、第5システムクロックサイクルT5内でハッシュテーブル30は第1入力データ(INPUT DATA1)に対する圧縮情報にアップデートされなければならず(すなわち、書き込みされるべきである)、同時に第4入力データ(INPUT DATA4)に対するハッシュヒット有無を判断するため、読み取りされなければならない。したがって、本発明の実施形態によるデータ圧縮装置はこれら動作をサポートできる構造に設計する。
例えば、図1に図示するデータ圧縮装置1のハッシュテーブル30は、一つのシステムクロックサイクル内で同時に読み取り及び書き込みが可能なようにDPSRAM(Dual Port SRAM)で実現される。しかし、本発明がこれに制限されるものではなく、データ圧縮装置の実現方法はいくらでも変形できる。以下、図14を参照して本発明の他の実施形態によるデータ圧縮装置について説明する。
図14は、本発明の他の実施形態によるデータ圧縮装置の例示的なブロック図である。図14のデータ圧縮装置2はハッシュテーブル31のプロビジョン(provision)及び動作特性以外は図1のデータ圧縮装置1と実質的に同じである。以下では、先に説明した実施形態と重複する内容はその説明を簡略化し、差異点を中心に説明する。
図14を参照すると、本発明の他の実施形態によるデータ圧縮装置2のハッシュテーブル31は、第1ハッシュテーブル31aと第2ハッシュテーブル31bとに区分して実現される。ここで、第1ハッシュテーブル31aと第2ハッシュテーブル31bとは、例えば、SPSRAM(Single Port SRAM)で実現される。このようにハッシュテーブル31がSPSRAMで実現される場合、データ圧縮装置2内でハッシュテーブル31が占める面積が相対的に減り、データ圧縮装置2の小型化が可能な長所があり、データ圧縮装置2が高い周波数のシステムクロックで作動できるため、データ圧縮速度を向上できる。
第1ハッシュテーブル31aと第2ハッシュテーブル31bとは、一つのシステムクロックサイクルで互いに異なる動作を交互に行う。図13に図示する例を参照してさらに具体的に説明すると、第5システムクロックサイクルT5内で第1ハッシュテーブル31aは第1入力データ(INPUT DATA1)に対する圧縮情報にアップデートされ(すなわち、書き込み)、第2ハッシュテーブル31bは第4入力データ(INPUT DATA4)に対するハッシュヒット有無を判断するために読み取られる。
進んで、第6システムクロックサイクルT6内で第2ハッシュテーブル31bは第2入力データ(INPUT DATA1)に対する圧縮情報にアップデートされ(すなわち、書き込み)、第1ハッシュテーブル31aは第5入力データ(INPUT DATA5)に対するハッシュヒット有無を判断するために読み取られる。
すなわち、第1ハッシュテーブル31aには奇数番目の入力データ1,3,5に関する読み取り及び書き込み動作が行われ、第2ハッシュテーブル31bには偶数番目の入力データ2,4に関する読み取り及び書き込み動作が行われるが、第1ハッシュテーブル31aに対する読み取り動作と第2ハッシュテーブル31bに対する書き込み動作が一つのシステムクロックサイクル内で同時に行われ得るため、本実施形態によるデータ圧縮装置2は図13に図示する並列的に行われるデータ圧縮動作を円滑に行うことがきる。
次に、図15ないし図18を参照して本発明のいくつかの実施形態によるメモリシステム及びその応用例について説明する。
図15は、本発明のいくつかの実施形態によるメモリシステムを説明するためのブロック図である。図16は、図15に図示するコントローラの詳細ブロック図である。図17は、図15のメモリシステムの応用例を図示するブロック図である。図18は、図17を参照して説明したメモリシステムを含むコンピュータシステムを図示するブロック図である。
図15を参照すると、メモリシステム1000は不揮発性メモリ装置1100及びコントローラ1200を含む。
不揮発性メモリ装置1100は、例えば、NANDまたはNORで構成されたフラッシュメモリ装置である。しかし、本発明がこのような例示に制限されるものではなく、本発明のいくつかの実施形態で不揮発性メモリ装置1100は、PRAM(Phase−change RAM)、FRAM(登録商標)(Ferroelectric RAM)、RRAM(登録商標)(Resistive RAM)のうち何れか一つである。
コントローラ1200はホスト(HOST)及び不揮発性メモリ装置1100に連結される。ホストからの要請に応答し、コントローラ1200は不揮発性メモリ装置1100をアクセスするように構成される。例えば、コントローラ1200は不揮発性メモリ装置1100の読み取り、書き込み、消去、及び背景(background)動作を制御するように構成される。特に、本実施形態で、コントローラ1200はホストから入力データを提供され、入力データを圧縮した出力データを出力する。
一方、コントローラ1200は不揮発性メモリ装置1100とホストとの間にインターフェースを提供するように構成される。また、コントローラ1200は不揮発性メモリ装置1100を制御するためのファームウェア(firmware)を駆動するように構成される。例示的に、コントローラ1200はRAM(Random Access Memory)、中央処理処置(central processing unit)、ホストインターフェース(host interface)、及びメモリインターフェース(memory interface)のようなよく知られている構成要素をさらに含む。
以下図16を参照して本発明のいくつかの実施形態によるコントローラ1200の構成についてさらに具体的に説明する。
図16を参照すると、コントローラ1200はホストインターフェース1210、RAM1240、データ圧縮装置1230、ECC1250、メモリインターフェース1260及び中央処理処置1220を含む。
ホストは、動作命令(例えば、読み取り命令、書き込み命令、または消去命令など)、アドレス及びデータをホストインターフェース1210に出力する。ホストインターフェース1210はホストとコントローラ1200との間のデータ交換を行うためのプロトコルを含む。
例示的に、ホストインターフェース1210はUSB(Universal Serial Bus)プロトコル、MMC(multimedia card)プロトコル、PCI(peripheral component interconnection)プロトコル、PCI−E(PCI−express)プロトコル、ATA(Advanced Technology Attachment)プロトコル、Serial−ATAプロトコル、Parallel−ATAプロトコル、SCSI(small computer small interface)プロトコル、ESDI(enhanced small disk interface)プロトコル、及びIDE(Integrated Drive Electronics)プロトコルなどのような多様なインターフェースプロトコルのうち少なくとも一つで構成される。
RAM1240は、中央処理処置(CPU)1220の動作メモリとして使用されてもよく、DRAMまたはSRAMなどで実現される。本発明のいくつかの実施形態で、RAM1240は前述したバッファメモリ(図1の40を参照)として使用されてもく、ホストから出力されたデータを臨時に格納できる。
データ圧縮装置1230はホストから入力される入力データを圧縮して不揮発性メモリ装置1100に提供するかまたはホストから入力される入力データを不揮発性メモリ装置110にバイパスする。本実施形態で、このような圧縮装置1230では前述した本発明の実施形態によるデータ圧縮装置1,2が採用される。
ECC1250は、不揮発性メモリ装置1100から読み出されたデータまたは不揮発性メモリ装置1100に書き込まれるデータに含まれる欠陥を検出及び訂正する。ECC1250はエラー訂正コードを利用して不揮発性メモリ装置1100から読み出されたデータのエラーを検出し、訂正するように構成される。図16は、ECC1250がコントローラ1200の構成要素として提供されたものを図示するが、本発明がこれに制限されるものではない。本発明の他のいくつかの実施形態で、ECC1250は不揮発性メモリ装置1100の構成要素として提供され得る。
メモリインターフェース1260は不揮発性メモリ装置1100とインターフェーシングする。例えば、メモリインターフェース1260はNANDインターフェースまたはNORインターフェースを含む。
中央処理処置1220は、コントローラ1200のデータ交換のための種々の制御動作を行う。図面に図示していないが、本発明のいくつかの実施形態によるメモリシステム1000はホストとのインターフェーシングのため、コードデータを格納するROM(図示せず)などがさらに提供され得ることはこの分野の通常的な知識を有する者に自明である。
再び図15を参照すると、コントローラ1200及び不揮発性メモリ装置1100は一つの半導体装置に集積される。例示的に、コントローラ1200及び不揮発性メモリ装置1100は一つの半導体装置に集積され、メモリカードを構成する。例えば、コントローラ1200及び不揮発性メモリ装置1100は、一つの半導体装置に集積され、PCカード(PCMCIA、personal computer memory card international association)、コンパクトフラッシュ(登録商標)カード(CF)、スマートメディアカード(SM、SMC)、メモリスティック、マルチメディアカード(MMC、RS−MMC、MMCmicro)、SDカード(SD、miniSD、microSD、SDHC)、ユニバーサルフラッシュ記憶装置(UFS)などのようなメモリカードを構成する。
本発明のいくつかの実施形態で、コントローラ1200及び不揮発性メモリ装置1100は一つの半導体装置に集積され、半導体ドライブ(SSD、Solid State Drive)を構成する。半導体ドライブ(SSD)は半導体メモリにデータを格納するように構成される格納装置を備える。メモリシステム1000が半導体ドライブ(SSD)として利用される場合、メモリシステム1000に連結されたホストの動作速度が画期的に改善される。
他の例として、メモリシステム1000は、コンピュータ、UMPC(Ultra MobilePC)、ワークステーション、ネットブック(net−book)、PDA(Personal Digital Assistants)、ポータブル(portable)コンピュータ、ウェブタブレット(web tablet)、無線電話機(wireless phone)、モバイルフォン(mobile phone)、スマートフォン(smart phone)、e−ブック(e−book)、PMP(portable multimedia player)、携帯用ゲーム機、ナビゲーション(navigation)装置、ブラックボックス(black box)、デジタルカメラ(digital camera)、3次元テレビ(3−dimensional television)、デジタルオーディオレコーダー(digital audio recorder)、デジタルオーディオプレーヤー(digital audio player)、デジタル画像レコーダー(digital picture recorder)、デジタル画像プレーヤー(digital picture player)、デジタル動画レコーダー(digital video recorder)、デジタル動画プレーヤー(digital video player)、情報を無線環境で送受信できる装置、ホームネットワークを構成する多様な電子装置のうち一つ、コンピューターネットワークを構成する多様な電子装置のうち一つ、テレマティクスネットワークを構成する多様な電子装置のうち一つ、RFID装置、またはコンピュータシステムを構成する多様な構成要素のうち一つなどのような電子装置の多様な構成要素のうち一つとして提供される。
例示的には、不揮発性メモリ装置1100またはメモリシステム1000は多様な形態のパッケージで実装される。例えば、不揮発性メモリ装置1100またはシステム1000はPackage on Package(PoP)、Ball grid arrays(BGAs)、Chip scale packages(CSPs)、Plastic Leaded Chip Carrier(PLCC)、Plastic Dual In Line Package(PDIP)、Die in Waffle Pack、Die in Wafer Form、Chip On Board(COB)、Ceramic Dual In Line Package(CERDIP)、Plastic Metric Quad Flat Pack(MQFP)、Thin Quad Flatpack(TQFP)、Small Outline(SOIC)、Shrink Small Outline Package(SSOP)、Thin Small Outline(TSOP)、Thin Quad Flatpack(TQFP)、System In Package(SIP)、Multi Chip Package(MCP)、Wafer−level Fabricated Package(WFP)、Wafer−Level Processed Stack Package(WSP)などのような方式でパッケージ化して実装される。
次の図17を参照すると、メモリシステム2000は不揮発性メモリ装置2100及びコントローラ2200を含む。不揮発性メモリ装置2100は複数の不揮発性メモリチップを含む。複数の不揮発性メモリチップは複数のグループに分割される。複数の不揮発性メモリチップの各グループは一つの共通チャンネルを介してコントローラ2200と通信するように構成される。例えば、複数の不揮発性メモリチップは第1ないし第kチャンネル(CH1〜CHk)を介してコントローラ2200と通信することが図示されている。
図17で、一つのチャンネルに複数の不揮発性メモリチップが接続するものと図示している。しかし、一つのチャンネルに一つの不揮発性メモリチップが接続するようにメモリシステム2000が変形され得ることが理解できるであろう。
次の図18を参照すると、コンピュータシステム3000は中央処理装置(CPU)3100、RMA3200(Random Access Memory)、ユーザインターフェース3300、電源3400、及びメモリシステム2000を含む。
メモリシステム2000はシステムバス3500を介して中央処理処置3100、RAM3200、ユーザインターフェース3300、及び電源3400に電気的に接続する。ユーザインターフェース3300を介して提供されるかまたは中央処理装置3100によって処理されたデータはメモリシステム2000に格納される。
図18で、不揮発性メモリ装置2100はコントローラ2200を介してシステムバス3500に接続することが図示されている。しかし、不揮発性メモリ装置2100はシステムバス3500に直接接続するように構成される。
図18で、図17を参照して説明したメモリシステム2000が提供されることが図示されている。しかし、メモリシステム2000は図15を参照して説明したメモリシステム1000に代替され得る。
例示的には、コンピュータシステム3000は、図15及び図17を参照して説明したメモリシステム1000,2000をすべて含むように構成される。
図19及び図20は、本発明のいくつかの実施形態によるメモリシステム及びコンピュータシステムを適用できる例示的な電子装置を説明するための図である。
図19は、タブレットPCであり、図20は、ノートブックを図示する。本発明の実施形態によるメモリシステム1000,2000及びコンピュータシステム3000のうち少なくとも一つは図示するタブレットPCやノートブックなどに使用され得る。本発明のいくつかの実施形態によるメモリシステム1000、2000及びコンピュータシステム3000は例示していない他の電子装置にも適用され得るは当業者に自明である。
以上添付する図面を参照して本発明の実施形態について説明したが、本発明は、上記実施形態に限定されるものではなく、互いに異なる多様な形態で製造され得、本発明が属する技術分野で通常の知識を有する者は、本発明の技術的思想や必須の特徴を変更しない範囲で他の具体的な形態で実施され得ることを理解できる。したがって、上記実施形態はすべての面で例示的なものであり、限定的なものではないと理解しなければならない。
10 ハッシュキー生成器
20 制御部
30 ハッシュテーブル
40 バッファメモリ
50 キャッシュメモリ
60 エンコーダ

Claims (25)

  1. 入力データを提供され、前記入力データに対するハッシュキーを生成し、
    前記生成されたハッシュキーで、バッファメモリ内の入力データに対応するデータの位置を示す第1インデックスを有するハッシュテーブルを検索し前記入力データがハッシュヒットであると判断すると、前記ハッシュテーブルの前記第1インデックスを利用して前記入力データを圧縮し、
    前記入力データがハッシュヒットでないと判断された場合、前記入力データで、前記バッファメモリ内の前記入力データに対応するデータの位置を示す第2インデックスを有するキャッシュメモリを検索し前記入力データがキャッシュヒットであると判断すると、前記キャッシュメモリの前記第2インデックスを利用して前記入力データを圧縮することを含むデータ圧縮方法。
  2. 前記入力データがハッシュヒットであるかを判断することは、
    前記生成されたハッシュキーで前記ハッシュテーブルから前記入力データに対する前記第1インデックスを抽出し、
    バッファメモリに格納されたデータのうち前記抽出された第1インデックスによって指示される指示データを抽出し、
    前記入力データと前記指示データとが同一である場合、前記入力データをハッシュヒットであると判断することを含む請求項1に記載のデータ圧縮方法。
  3. 前記ハッシュテーブルを利用して前記入力データを圧縮することは、
    前記ハッシュテーブルから抽出した前記第1インデックスと前記指示データに対する長さ情報とを利用して前記入力データを圧縮することを含む請求項2に記載のデータ圧縮方法。
  4. 前記入力データがキャッシュヒットであるかを判断することは、
    前記キャッシュメモリに前記入力データが存在するかを判断することを含む請求項1に記載のデータ圧縮方法。
  5. 前記キャッシュメモリを利用して前記入力データを圧縮することは、
    前記キャッシュメモリから抽出した前記入力データに対する前記第2インデックスと前記キャッシュメモリに格納された前記入力データに対する長さ情報とを利用して前記入力データを圧縮することを含む請求項4に記載のデータ圧縮方法。
  6. 前記入力データがハッシュヒットではないと判断すると、ハッシュ衝突が生じたかを判断し、
    前記ハッシュ衝突が生じた場合、前記ハッシュキーに対する衝突カウンタを増加させ、
    前記ハッシュキーに対する衝突カウンタがあらかじめ定めた臨界値以上である場合、前記キャッシュメモリをアップデートすることをさらに含む請求項1に記載のデータ圧縮方法。
  7. 前記キャッシュメモリをアップデートした後、前記ハッシュテーブルをアップデートすることをさらに含む請求項6に記載のデータ圧縮方法。
  8. 前記入力データが前記キャッシュヒットであるかを判断することは、前記入力データが前記ハッシュヒットであるかを判断した後に行われる請求項1に記載のデータ圧縮方法。
  9. 前記入力データが前記ハッシュヒットまたは前記キャッシュヒットである場合、前記ハッシュテーブルを利用して前記入力データを圧縮する際の第1圧縮率と前記キャッシュメモリを利用して前記入力データを圧縮する際の第2圧縮率とを比較し、圧縮率が高い方法により前記入力データを圧縮することをさらに含む請求項8に記載のデータ圧縮方法。
  10. 前記入力データを圧縮して生成した出力データを不揮発性メモリ装置に出力することをさらに含む請求項1に記載のデータ圧縮方法。
  11. 第1入力データに対して生成されたハッシュキーでハッシュテーブルを検索して前記第1入力データがハッシュヒットであるかを判断し、前記第1入力データがハッシュヒットであると判断すると、前記ハッシュテーブルの第1インデックスを利用して前記第1入力データを圧縮し、
    前記第1入力データと異なる第2入力データでキャッシュメモリを検索して前記第2入力データがキャッシュヒットであるかを判断し、前記第2入力データがキャッシュヒットであると判断すると、前記キャッシュメモリの第2インデックスを利用して前記第2入力データを圧縮することを含み、
    前記第1インデックスは、バッファメモリ内の入力データに対応するデータの位置を示し、
    前記第2インデックスは、前記バッファメモリ内の前記入力データに対応するデータの位置を示し、
    前記第1入力データがハッシュヒットであるかを判断することと、前記第2入力データがキャッシュヒットであるかを判断することは第1システムクロックサイクル内で同時に行われるデータ圧縮方法。
  12. 前記第2入力データと異なる第3入力データに対する圧縮結果に基づいて前記ハッシュテーブルをアップデートすることをさらに含み、
    前記第1入力データがハッシュヒットであるかを判断することと、前記ハッシュテーブルをアップデートすることは前記第1システムクロックサイクル内で同時に行われる請求項11に記載のデータ圧縮方法。
  13. 前記第3入力データと異なる第4入力データに対するハッシュキーを生成することと、
    前記第4入力データと異なる第5入力データに対する圧縮結果に基づいて前記第5入力データをエンコードすることをさらに含み、
    前記第1入力データがハッシュヒットであるかを判断することと、前記第4入力データに対するハッシュキーを生成することと、前記第5入力データをエンコードすることは前記第1システムクロックサイクル内で同時に行われる請求項12に記載のデータ圧縮方法。
  14. 前記第4入力データに対するハッシュキーを生成した後、第2システムクロックサイクル内で前記生成されたハッシュキーで前記ハッシュテーブルを検索して前記第4入力データがハッシュヒットであるかを判断し、
    第3システムクロックサイクル内で、前記第4入力データで前記キャッシュメモリを検索して前記第4入力データがキャッシュヒットであるかを判断することをさらに含む請求項13に記載のデータ圧縮方法。
  15. 入力データを提供され、前記入力データに対するハッシュキーを出力するハッシュキー生成器と、
    前記ハッシュキーでハッシュテーブルを検索して前記入力データがハッシュヒットであるかどうかを判断し、前記入力データがハッシュヒットではないと判断した場合、前記入力データでキャッシュメモリを検索して前記入力データがキャッシュヒットであるかを判断した後、前記入力データに対する圧縮情報を出力する制御部と、
    前記制御部から提供された前記圧縮情報に基づいて前記入力データをエンコードし、前記入力データを圧縮した出力データを出力するエンコーダを含むデータ圧縮装置。
  16. 前記ハッシュテーブルは第1ハッシュテーブルと第2ハッシュテーブルとを含み、
    第1システムクロックサイクル内で前記制御部は前記入力データが前記第1ハッシュテーブルでハッシュヒットであるかを判断し、第2システムクロックサイクル内で前記制御部は前記前記入力データが第2ハッシュテーブルでハッシュヒットであるかを判断する請求項15に記載のデータ圧縮装置。
  17. 前記第1ハッシュテーブルと前記第2ハッシュテーブルとは、SPSRAM(Single Port SRAM)で実現される請求項16に記載のデータ圧縮装置。
  18. 前記ハッシュテーブルは、DPSRAM(Dual Port SRAM)で実現される請求項15に記載のデータ圧縮装置。
  19. 前記ハッシュテーブルは、ハッシュ衝突回数をカウントする衝突カウンタフィールドを含む請求項15に記載のデータ圧縮装置。
  20. 前記キャッシュメモリは、複数のフリップ−フロップで実現される請求項15に記載のデータ圧縮装置。
  21. 前記ハッシュテーブルと前記キャッシュメモリとがインデックスするSRAMで実現されたバッファメモリをさらに含む請求項15に記載のデータ圧縮装置。
  22. 前記出力データは、前記入力データの位置情報と長さ情報とを含む請求項15に記載のデータ圧縮装置。
  23. ホストから入力データを提供され、前記入力データを圧縮した出力データを出力するコントローラと、
    前記出力データを格納する不揮発性メモリ装置を含み、
    前記コントローラは、前記出力データを生成するための、バッファメモリ内の入力データに対応するデータの位置を示す第1インデックスを有するハッシュテーブルと前記バッファメモリ内の前記入力データに対応するデータの位置を示す第2インデックスを有するキャッシュメモリとを含むデータ圧縮装置を含み、
    前記データ圧縮装置は、
    前記入力データに基づいて生成されたハッシュキーで前記ハッシュテーブルを検索して前記入力データがハッシュヒットであると判断する場合、前記ハッシュテーブルの前記第1インデックスを利用して前記出力データを生成し、前記入力データがハッシュヒットでないと判断され、前記入力データで前記キャッシュメモリを検索して前記入力データがキャッシュヒットであると判断する場合、前記キャッシュメモリの前記第1インデックスを利用して前記出力データを生成するメモリシステム。
  24. 前記ハッシュテーブルと前記キャッシュメモリとがインデックスするバッファメモリをさらに含む請求項23に記載のメモリシステム。
  25. 前記不揮発性メモリ装置は、複数の不揮発性メモリチップを含み、
    前記複数の不揮発性メモリチップは複数のグループに分割され、
    前記複数の不揮発性メモリチップの各グループは一つの共通チャンネルを介して前記コントローラと通信する請求項23に記載のメモリシステム。
JP2013214521A 2012-10-15 2013-10-15 データ圧縮装置及び方法、データ圧縮装置を含むメモリシステム Active JP6366249B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020120114265A KR101956031B1 (ko) 2012-10-15 2012-10-15 데이터 압축 장치 및 방법, 데이터 압축 장치를 포함하는 메모리 시스템
KR10-2012-0114265 2012-10-15

Publications (2)

Publication Number Publication Date
JP2014082762A JP2014082762A (ja) 2014-05-08
JP6366249B2 true JP6366249B2 (ja) 2018-08-01

Family

ID=50453388

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013214521A Active JP6366249B2 (ja) 2012-10-15 2013-10-15 データ圧縮装置及び方法、データ圧縮装置を含むメモリシステム

Country Status (4)

Country Link
US (1) US9407286B2 (ja)
JP (1) JP6366249B2 (ja)
KR (1) KR101956031B1 (ja)
CN (1) CN103729307B (ja)

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9424946B2 (en) * 2013-02-08 2016-08-23 Seagate Technology Llc Non-volatile buffering to enable sloppy writes and fast write verification
KR20150134718A (ko) * 2014-05-22 2015-12-02 에스케이플래닛 주식회사 압축 방식을 이용한 데이터 소스 관리 장치 및 방법
US9407287B2 (en) 2014-10-21 2016-08-02 Huawei Technologies Co., Ltd. Parallel history search and encoding for dictionary-based compression
KR102307539B1 (ko) 2015-04-07 2021-09-30 에스케이플래닛 주식회사 클라우드 스트리밍 서비스 시스템, 프로세스 단축을 이용한 이미지 클라우드 스트리밍 서비스 방법 및 이를 위한 장치
US9515678B1 (en) * 2015-05-11 2016-12-06 Via Alliance Semiconductor Co., Ltd. Hardware data compressor that directly huffman encodes output tokens from LZ77 engine
US10027346B2 (en) 2015-05-11 2018-07-17 Via Alliance Semiconductor Co., Ltd. Hardware data compressor that maintains sorted symbol list concurrently with input block scanning
US9509336B1 (en) 2015-05-11 2016-11-29 Via Alliance Semiconductor Co., Ltd. Hardware data compressor that pre-huffman encodes to decide whether to huffman encode a matched string or a back pointer thereto
US9503122B1 (en) 2015-05-11 2016-11-22 Via Alliance Semiconductor Co., Ltd. Hardware data compressor that sorts hash chains based on node string match probabilities
US9509335B1 (en) 2015-05-11 2016-11-29 Via Alliance Semiconductor Co., Ltd. Hardware data compressor that constructs and uses dynamic-prime huffman code tables
US9509337B1 (en) 2015-05-11 2016-11-29 Via Alliance Semiconductor Co., Ltd. Hardware data compressor using dynamic hash algorithm based on input block type
US9628111B2 (en) * 2015-05-11 2017-04-18 Via Alliance Semiconductor Co., Ltd. Hardware data compressor with multiple string match search hash tables each based on different hash size
US10152389B2 (en) * 2015-06-19 2018-12-11 Western Digital Technologies, Inc. Apparatus and method for inline compression and deduplication
JP6536243B2 (ja) * 2015-07-16 2019-07-03 富士通株式会社 符号化プログラム、符号化装置、符号化方法、照合プログラム、照合装置および照合方法
US9690488B2 (en) * 2015-10-19 2017-06-27 Intel Corporation Data compression using accelerator with multiple search engines
US9992381B2 (en) * 2016-02-24 2018-06-05 Ricoh Company, Ltd. Color hash table reuse for print job processing
US9742959B1 (en) * 2016-02-24 2017-08-22 Ricoh Company, Ltd. Mechanism for color management cache reinitialization optimization
US10120581B2 (en) * 2016-03-30 2018-11-06 Qualcomm Incorporated Generating compressed data streams with lookback pre-fetch instructions for pre-fetching decompressed data from a lookback buffer
KR102544118B1 (ko) * 2016-04-27 2023-06-16 엘에스일렉트릭(주) 해시충돌 최소화를 위한 해시 테이블 장치
CN108141225B (zh) * 2016-07-14 2020-10-27 华为技术有限公司 使用simd引擎的通用数据压缩
CN106775560A (zh) * 2016-11-30 2017-05-31 四川长虹电子部品有限公司 Usb音频输出装置及其处理方法
US9793919B1 (en) * 2016-12-08 2017-10-17 Advanced Micro Devices, Inc. Compression of frequent data values across narrow links
US10185718B1 (en) 2017-08-23 2019-01-22 The Nielsen Company (Us), Llc Index compression and decompression
CN107766564B (zh) * 2017-11-07 2020-02-21 上海携程商务有限公司 记录式数据压缩方法、装置、电子设备、存储介质
KR102157354B1 (ko) * 2017-11-20 2020-09-17 삼성전자 주식회사 효율적으로 압축된 캐시 라인의 저장 및 처리를 위한 시스템 및 방법
CN110704419A (zh) * 2018-06-21 2020-01-17 中兴通讯股份有限公司 数据结构、数据索引方法、装置及设备、存储介质
CN110362502B (zh) * 2019-06-26 2021-05-04 中国科学院信息工程研究所 链式哈希栈的影子缓存优化方法和装置
CN113515229B (zh) * 2020-04-09 2024-04-09 伊姆西Ip控股有限责任公司 存储数据的方法、装置和计算机程序产品
US11533173B2 (en) * 2020-06-11 2022-12-20 Lognovations Holdings, Llc Systems and methods for compression and encryption of data
US11797508B1 (en) * 2023-06-02 2023-10-24 Black Cape Inc. Systems and methods for geospatial correlation

Family Cites Families (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5371499A (en) 1992-02-28 1994-12-06 Intersecting Concepts, Inc. Data compression using hashing
JPH05252049A (ja) * 1992-03-05 1993-09-28 Fujitsu Ltd データ圧縮処理方式及びデータ復元処理方式
JPH06242923A (ja) 1993-02-19 1994-09-02 Hitachi Ltd データ圧縮処理装置およびデータ伸張処理装置
JP2770798B2 (ja) * 1995-08-29 1998-07-02 日本電気株式会社 商品コード検索方式
JP3778375B2 (ja) * 1995-12-28 2006-05-24 ソニー株式会社 可変長符号化方法および装置、並びに可変長復号化方法および装置
JP3859044B2 (ja) 1998-09-11 2006-12-20 富士ゼロックス株式会社 インデクス作成方法および検索方法
US6208273B1 (en) * 1999-01-29 2001-03-27 Interactive Silicon, Inc. System and method for performing scalable embedded parallel data compression
JP4261779B2 (ja) * 2000-03-31 2009-04-30 富士通株式会社 データ圧縮装置および方法
US6842832B1 (en) * 2000-08-25 2005-01-11 International Business Machines Corporation Reclaim space reserve for a compressed memory system
US7047382B2 (en) * 2000-11-29 2006-05-16 Quickshift, Inc. System and method for managing compression and decompression and decompression of system memory in a computer system
JP2002334114A (ja) * 2001-05-10 2002-11-22 Allied Tereshisu Kk テーブル管理方法及び装置
US6426711B1 (en) * 2001-05-14 2002-07-30 Unisys Corporation Character table implemented data compression method and apparatus
US7093099B2 (en) * 2002-12-12 2006-08-15 Alacritech, Inc. Native lookup instruction for file-access processor searching a three-level lookup cache for variable-length keys
JP4551172B2 (ja) * 2004-09-29 2010-09-22 富士通株式会社 電子文書保管装置、プログラム及び電子文書参照装置
CA2647259A1 (en) * 2006-03-24 2007-10-04 University Of Mississippi High-speed data compression based on set associative cache mapping techniques
US8085171B2 (en) 2006-03-24 2011-12-27 University Of Mississippi High-speed data compression based on set associative cache mapping techniques
US7844581B2 (en) 2006-12-01 2010-11-30 Nec Laboratories America, Inc. Methods and systems for data management using multiple selection criteria
US8111707B2 (en) * 2007-12-20 2012-02-07 Packeteer, Inc. Compression mechanisms for control plane—data plane processing architectures
JP5131915B2 (ja) 2008-03-31 2013-01-30 国立大学法人 東京大学 パケット符号化方法および装置ならびに復号方法および装置
US7984028B2 (en) * 2008-05-21 2011-07-19 Applied Micro Circuits Corporation System and method for application of hash function in telecommunication and networking
JP5012674B2 (ja) * 2008-06-03 2012-08-29 日本電気株式会社 Ipパケット制御装置におけるソフトウェア検索方法
US8161211B2 (en) 2009-02-25 2012-04-17 Hitachi, Ltd. Storage system and data processing method for the same
KR101049699B1 (ko) * 2009-07-17 2011-07-15 (주)이스트소프트 데이터의 압축방법
US8200641B2 (en) 2009-09-11 2012-06-12 Dell Products L.P. Dictionary for data deduplication
CA2812421A1 (en) * 2009-09-25 2011-03-31 Farzad Khalvati System, method and computer program for automated window memoization
US8380688B2 (en) * 2009-11-06 2013-02-19 International Business Machines Corporation Method and apparatus for data compression
JP2011229093A (ja) * 2010-04-23 2011-11-10 Hitachi Ltd ネットワーク装置
US10338928B2 (en) * 2011-05-20 2019-07-02 Oracle International Corporation Utilizing a stack head register with a call return stack for each instruction fetch

Also Published As

Publication number Publication date
JP2014082762A (ja) 2014-05-08
US20140108362A1 (en) 2014-04-17
KR101956031B1 (ko) 2019-03-11
CN103729307A (zh) 2014-04-16
KR20140047916A (ko) 2014-04-23
US9407286B2 (en) 2016-08-02
CN103729307B (zh) 2018-01-26

Similar Documents

Publication Publication Date Title
JP6366249B2 (ja) データ圧縮装置及び方法、データ圧縮装置を含むメモリシステム
US10554224B2 (en) Method and apparatus for processing data with polar encoding
TWI459197B (zh) 資料寫入方法、記憶體控制器與記憶體儲存裝置
US8593307B2 (en) Methods of compressing data in storage device
KR101867282B1 (ko) 비휘발성 메모리 장치의 가비지 컬렉션 방법
KR101992274B1 (ko) 데이터 압축 방법과 상기 방법을 수행할 수 있는 장치들
US10817474B2 (en) Adaptive rate compression hash processor
TWI666643B (zh) 非依電性記憶體裝置及其資料去重複方法
CN105528183A (zh) 一种存储数据的方法及存储设备
TWI536749B (zh) 解碼方法、記憶體儲存裝置與記憶體控制電路單元
TWI707234B (zh) 資料儲存裝置與資料處理方法
US9594629B2 (en) Data error correction from cached error correction information
US9444490B2 (en) Method of operating data compression circuit and devices to perform the same
CN115509961A (zh) 实体存储对照表产生装置及方法
CN106155916B (zh) 数据储存装置以及数据读取方法
TWI545576B (zh) 資料寫入方法、記憶體控制電路單元以及記憶體儲存裝置
US9275758B2 (en) Error detection circuit and semiconductor integrated circuit using the same
TWI835381B (zh) 資料加密的錯誤偵測裝置
TWI808902B (zh) 資料加密的錯誤偵測裝置
US11494263B2 (en) Controller and method of operating the same
TW202420088A (zh) 資料加密的錯誤偵測裝置

Legal Events

Date Code Title Description
RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20141226

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20161006

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20171027

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20171204

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180207

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180703

R150 Certificate of patent or registration of utility model

Ref document number: 6366249

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

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250