(58)【調査した分野】(Int.Cl.,DB名)
前記第4入力データに対するハッシュキーを生成した後、第2システムクロックサイクル内で前記生成されたハッシュキーで前記ハッシュテーブルを検索して前記第4入力データがハッシュヒットであるかを判断し、
第3システムクロックサイクル内で、前記第4入力データで前記キャッシュメモリを検索して前記第4入力データがキャッシュヒットであるかを判断することをさらに含む請求項13に記載のデータ圧縮方法。
【発明を実施するための形態】
【0029】
本発明の利点及び特徴、これらを達成する方法は添付する図面と共に詳細に後述する実施形態において明確になるであろう。しかし、本発明は、以下で開示する実施形態に限定されるものではなく、互いに異なる多様な形態で実現されるものであり、本実施形態は、単に本発明の開示を完全にし、本発明が属する技術分野で通常の知識を有する者に発明の範疇を完全に知らせるために提供されるものであり、本発明は、請求項の範囲によってのみ定義される。図面に表示する構成要素のサイズおよび相対的なサイズは説明を明瞭するため、誇張したものであり得る。明細書全体にかけて同一参照符号は同一構成要素を指称し、「および/または」は、言及されたアイテムのそれぞれおよび一つ以上のすべての組合せを含む。
【0030】
本明細書で使用された用語は実施形態を説明するためであり、本発明を制限しようとするものではない。本明細書で、単数型は例示であり、特に言及しない限り複数型も含む。明細書で使用される「含む(comprises)」および/または「含む(comprising)」は、言及された構成要素、段階、動作および/または素子に関して、一つ以上の他の構成要素、段階、動作および/または素子が存在すること、または追加されることを排除しない。
【0031】
第1、第2などが多様な素子、構成要素を述べるために使用されるが、これら素子、構成要素はこれらの用語によって制限されないことはいうまでもない。これらの用語は、単に一つ構成要素を他の構成要素と区別するために使用するものである。したがって、以下で言及される第1素子や構成要素は本発明の技術的思想内で第2素子や構成要素であり得ることは勿論である。
【0032】
特に定義されない限り、本明細書で使用されるすべての用語(技術および科学的用語を含む)は、本発明が属する技術分野で通常の知識を有する者が共通に理解できる意味として使用され得る。また一般に使用される辞典に定義されている用語は明白に特別に定義されていない限り理想的にまたは過度に解釈しない。
【0033】
以下、
図1ないし
図5を参照して本発明の一実施形態によるデータ圧縮装置について説明する。
【0034】
図1は、本発明の一実施形態によるデータ圧縮装置の例示的なブロック図である。
図2は、
図1に図示するハッシュキー生成器の動作を説明するための図である。
図3は、
図1に図示するハッシュテーブルの例示的な構成を図示する図面である。
図4は、
図1に図示するバッファメモリの例示的な構成を図示する図である。
図5は、
図1に図示するキャッシュメモリの例示的な構成を図示する図である。
【0035】
図1を参照すると、データ圧縮装置1は、ハッシュキー生成器10、制御部20、ハッシュテーブル30、キャッシュメモリ50及びエンコーダ60を含む。
【0036】
ハッシュキー生成器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)に対するハッシュキーとして生成することができる。
【0037】
本発明のいくつかの実施形態で、ハッシュキー生成器10が使用するハッシュ関数(Fhash)としてXOR演算を使用する。具体的には、ハッシュキー生成器10は入力データそれぞれをn(ここで、nは自然数)ビットずつシフト(shift)した後、これらをXOR演算することによってハッシュキーを生成する。
【0038】
例えば、入力データがA0,A1,A2,A3である場合、ハッシュキー生成器はA0に対してはビットシフトせず、A1に対しては1ビットシフトし、A2に対しては2ビットシフトし、A3に対しては3ビットシフトした後、これらをXOR演算して得られた結果をハッシュキーKaとして生成する。しかし、本発明のハッシュキー生成器10が使用するハッシュ関数(Fhash)がこのような例示に制限されるものではなく、必要に応じてハッシュ関数(Fhash)はいくらでもこれと異なる形態に変形できる。
【0039】
制御部20は、ハッシュキー生成器10が生成したハッシュキーに基づいて入力データ(INPUT DATA)に対する圧縮情報(COMPRESSING INFORMATION)を生成した後、これをエンコーダ60に出力する。
【0040】
本実施形態で使用される「部」という用語は、ソフトウェアまたはFPGAまたはASICのようなハードウェア構成要素を意味し、「部」はある役割を果たす。しかし、「部」はソフトウェアまたはハードウェアに限定される意味ではない。「部」は、アドレッシングできる格納媒体にあるように構成されてもよく、一つまたはそれ以上のプロセッサを再生させるように構成され得る。したがって、一例として「部」は、ソフトウェア構成要素、オブジェクト指向のソフトウェア構成要素、クラス構成要素及びタスク構成要素のような構成要素と、プロセス、関数、属性、プロシーザ、サブルーチン、プログラムコードのセグメント、ドライバ、ファームウェア、マイクロコード、回路、データ、データベース、データ構造、テーブル、アレイ、および変数を含み得る。構成要素と「部」から提供される機能はさらに小さい数の構成要素及び「部」に結合されるかまたは追加的な構成要素と「部」にさらに分離できる。
【0041】
具体的には、本実施形態で、制御部20は、入力データに対するハッシュキー(HASH KEY)に基づいてハッシュテーブル30とバッファメモリ40を検索して入力データ(INPUT DATA)がハッシュヒット(hash hit)であるかを判断し、入力データ(INPUT DATA)でキャッシュメモリ50を検索し、入力データがキャッシュヒット(cache hit)であるかを判断した後、これに基づいて入力データ(INPUT DATA)に対する圧縮情報(COMPRESSING INFORMATION)を生成した後、これをエンコーダ60に出力する。
【0042】
先ず、
図3を参照すると、本実施形態によるハッシュテーブル30は図示するようにハッシュキーフィールド、衝突カウンタフィールド、インデックスフィールドを含む。ここで、ハッシュキーフィールドは、ハッシュキー生成器10で生成されたハッシュキーをキー値としてハッシュテーブル30を検索する際に使用するフィールドであり、衝突カウンタフィールドは該当ハッシュキーによってハッシュ衝突(hash collision)が何回生じたかをカウントするフィールドであり、インデックスフィールドはバッファメモリ(
図4の40を参照)内のデータ位置を指示するインデックス値(またはインデックス)を格納したフィールドである。
【0043】
本発明のいくつかの実施形態で、このようなハッシュテーブル30は例えば、SRAM(Static Random Access Memory)で実現されるが、本発明がこれに制限されるものではない。
【0044】
次に、
図4を参照すると、本実施形態によるバッファメモリ40は、例えば、ホストから提供されたデータがバッファリングされて格納されている。本発明のいくつかの実施形態で、このようなバッファメモリ40はSRAMで実現されるが、本発明がこれに制限されるものではない。
【0045】
一方、本発明のいくつかの実施形態で、このようなバッファメモリ40はデータ圧縮装置(
図16の1230を参照)の外部に実現される。すなわち、バッファメモリ40はデータ圧縮装置(
図16の1230を参照)の外部に別途の構成要素(例えば、
図16の1240を参照)として実現される。しかし、本発明がこれに制限されるものではなく、必要に応じてバッファメモリ40はデータ圧縮装置(
図1の1を参照)の内部に実現され得る。
【0046】
バッファメモリ40に格納された入力データは所定インデックスによりその位置が表示されている。
図4を参照すると、例えば、データA0,A1,A2,A3はインデックス8によって指示されており、データB0,B1,B2,B3はインデックス16によって指示されており、データC0,C1,C2,C3はインデックス32によって指示されている。
【0047】
前述したハッシュテーブル(
図3の30を参照)のインデックスフィールドはこのようなバッファメモリ40上のインデックスを意味する。例えば、データA0,A1,A2,A3のハッシュキーはKaであり(
図2を参照)、ハッシュテーブル(
図3の30を参照)でハッシュキーKaによって指示されるインデックスは8である。この際、バッファメモリ40上にインデックス8によって指示される位置にデータA0,A1,A2,A3が存在するため、データが正しくインデックスされていることが分かる。すなわち、ハッシュテーブル(
図3の30を参照)に格納されるそれぞれのハッシュキーは該当インデックス及び衝突カウンタ値と関連して格納される。
【0048】
次に、
図5を参照すると、キャッシュメモリ50は参照カウンタフィールドと、データフィールドと、インデックスフィールドを含む。ここで、参照カウンタフィールドは、該当入力データが何回参照されたかカウントした値を格納するために使用されるフィールドであり、データフィールドは該当入力データが格納されるフィールドであり、インデックスフィールドはバッファメモリ(
図4の40を参照)内に位置したデータのインデックスを格納したフィールドである。
【0049】
例えば、データB0,B1,B2,B3はインデックス16によって指示されており、
図4のバッファメモリ40上にインデックス16によって指示される位置にデータB0,B1,B2,B3が存在するため、データが正しくインデックスされていることが分かる。
【0050】
ハッシュテーブル(
図3の30を参照)及びキャッシュメモリ50である場合、各テーブルの「エントリー(entry)」は前述したように複数の関連フィールドを有する。
【0051】
本発明のいくつかの実施形態で、このようなキャッシュメモリ50は例えば、複数のフリップ−フロップ(flip−flop)で実現される。特に本発明のいくつかの実施形態で、キャッシュメモリ50は複数のフリップ−フロップで構成されたレジスターファイル(register file)であるが、本発明がこれに制限されるものではない。
【0052】
本実施形態による制御部20は、入力データ(INPUT DATA)に対する圧縮情報(COMPRESSING INFORMATION)を生成するため、データ圧縮装置(
図1の1を参照)に含まれた前述したハッシュテーブル30とキャッシュメモリ50を何れも参照する。このような制御部20の具体的な動作については後述する。
【0053】
再び
図1を参照すると、エンコーダ60は制御部20から生成された圧縮情報(COMPRESSING INFORMATION)を提供され、圧縮された入力データ(INPUT DATA)を「出力データ(OUTPUT DATA)」として出力する。このように出力された出力データはデータ格納装置(例えば、不揮発性メモリ装置)に提供して格納される。またこのように出力された出力データは外部回路に提供される。
【0054】
本発明のいくつかの実施形態で、このような出力データ(OUTPUT DATA)は入力データ(INPUT DATA)を位置情報と長さ情報でのみ示すデータである。すなわち、本発明のいくつかの実施形態で使用される圧縮アルゴリズムは入力データ(INPUT DATA)を位置情報と長さ情報でのみ示すことによって圧縮するアルゴリズムである。このようなアルゴリズムの例としては、LZ(Lempel−Ziv)77,LZ78,LZW(Lempel−Ziv−Welch)などのLZ系列アルゴリズムが挙げられるが、本発明がこれに制限されるものではない。本発明の他のいくつかの実施形態で、データの圧縮において、デフレート(Deflate)アルゴリズム、ハフマン(Huffman)アルゴリズム、算術符号化(Arithmetic Coding)アルゴリズムなどが使用される。
【0055】
以下
図1、
図6ないし
図11を参照して本発明の一実施形態によるデータ圧縮方法について説明する。
【0056】
図6は、本発明の一実施形態によるデータ圧縮方法を説明するための順序図である。
図7ないし
図11は、
図6に図示するデータ圧縮方法をさらに具体的に説明するための図である。
【0057】
以下では、理解を深めるため、いくつかを仮定して本実施形態によるデータ圧縮方法について説明する。具体的には、本実施形態による動作を説明する際、ハッシュテーブル30、バッファメモリ40、キャッシュメモリ50の構成がそれぞれ
図3ないし
図5に図示する図と同様であると仮定し、本実施形態によるデータ圧縮方法について説明する。しかし、このような説明方法は理解を深めるためであって、本発明の範囲を制限するためではない。
【0058】
先ず、
図6を参照すると、入力データに対するハッシュキーを生成する(S100)。具体的には
図1を参照すると、例えば、ハッシュキー生成器10は入力データ(INPUT DATA)を提供され、入力データに対するハッシュキーを生成する。
【0059】
次に、
図6を参照すると、生成されたハッシュキーに基づいて入力データがハッシュヒット(hash hit)であるかを判断する(S110)。仮に、判断した結果、入力データがハッシュヒットである場合、ハッシュテーブルを利用して圧縮情報を生成する(S115)。
【0060】
具体的には
図1を参照すると、例えば、制御部20は、先ず生成されたハッシュキーでハッシュテーブル30を検索してハッシュキーと連動するインデックスを抽出する。次いで、制御部20はバッファメモリ40に格納されたデータのうちハッシュテーブル30から抽出されたインデックスによって指示される指示データを抽出する。ここで、ハッシュキーに関連する入力データ(INPUT DATA)が、抽出された指示データと同一である場合、ハッシュヒットが発生する。したがって、制御部20はハッシュテーブル30から抽出したインデックスと指示データに対する長さ情報とを利用して入力データ(INPUT DATA)を圧縮するための圧縮情報を生成する。
【0061】
例えば、データ圧縮装置1の入力データ(INPUT DATA)としてバッファメモリ40上でインデックス44によって指示されるデータC0,C1,C2,C3が入力されたと仮定する(
図4を参照)。
図2を参照すると、このような入力データ(INPUT DATA)に対するハッシュキーはKcであることが分かるので、ハッシュキー生成器10は入力データに対するハッシュキーでKcを制御部20に出力する。
【0062】
ここで、制御部20がハッシュキーKcで
図3に図示するハッシュテーブル30を検索すると、このときのインデックスは32であることが分かる。また、制御部20がバッファメモリ(
図4の40を参照)に格納されたデータのうちインデックス32によって指示される指示データを抽出すると、これもC0,C1,C2,C3であることが分かる。この場合、入力データ(INPUT DATA)と指示データとが互いに同じであるため、ハッシュヒットとなる。したがって、制御部20はハッシュテーブル30から抽出したインデックス(例えば、32)と指示データに対する長さ情報(本実施形態では入力データの一単位が4byteであると仮定する)を利用して入力データ(INPUT DATA)を圧縮するための圧縮情報を生成する。
【0063】
本実施形態では、このようにハッシュテーブル30を利用して入力データ(INPUT DATA)に対する圧縮に成功した場合、キャッシュメモリ50を利用した圧縮有無の判断を省略する(
図6の順序図を参照)。
【0064】
再び、
図6を参照すると、入力データがハッシュヒットではない場合、ハッシュ衝突が生じたかを判断する(S120)。また、ハッシュ衝突が生じた場合、ハッシュテーブルの衝突カウンタを増加させる(S125)。
【0065】
ここで、ハッシュ衝突とは、データ圧縮装置1に入力される入力データ(INPUT DATA)と前述した方法によりバッファメモリ40から抽出した指示データとが異なる場合を意味する。すなわち、データ値は互いに異なるが、ハッシュ関数(Fhash)により生成したハッシュキーが互いに同じである場合、このようなハッシュ衝突が生じる。
【0066】
例えば、今回はデータ入力装置1に入力データ(INPUT DATA)としてバッファメモリ(
図4の40を参照)内にインデックス48によって指示されたD0,D1,D2,D3が入力されると仮定する。この際、ハッシュキー生成器10によって生成されるデータD0,D1,D2,D3のハッシュキーは
図7に図示するようにKaであると仮定する。この際、制御部20がハッシュキーKaで
図3に図示するハッシュテーブル30を検索すると、この場合のインデックスは8であることが分かる。
【0067】
一方、制御部20がバッファメモリ(
図4の40を参照)に格納されたデータのうちインデックス8によって指示される指示データを抽出すると、これはデータA0,A1,A2,A3であることが分かる。したがって、この場合には、入力データD0,D1,D2,D3と指示データA0,A1,A2,A3が互いに同じではないため、ハッシュヒットではなく、ハッシュ衝突が生じる(仮に、入力データに対して生成されたハッシュキーがハッシュテーブル30に存在しない場合(すなわち、Kdと共に最初に生成されたハッシュキーである場合)は、本例示とは異なってハッシュヒットでもなく、ハッシュ衝突も生じない)。
【0068】
したがって、制御部20は、ハッシュキーKaに対する衝突カウンタを1だけ増加させ、ハッシュキーKaに対する衝突カウンタは3になる(
図3に図示するハッシュテーブルでハッシュキーKaに対する衝突カウンタは2であった)。このように増加した衝突カウンタはその後ハッシュテーブル30の衝突カウンタフィールドに反映されるが、これについては後述する。
【0069】
再び
図6を参照すると、入力データがキャッシュヒット(cache hit)であるかを判断する(S130)。そして、入力データがキャッシュヒットである場合、キャッシュメモリを利用して圧縮情報を生成する(S135)。
【0070】
入力データ(INPUT DATA)としてD0,D1,D2,D3が入力される場合、前述したハッシュテーブル30を利用したデータ圧縮は失敗したため、キャッシュメモリ50を利用してデータを圧縮できるのかを判断しなければならない。したがって、制御部20は、入力データ(INPUT DATA)がキャッシュメモリ(例えば、
図5の50を参照)に存在するかを確認する。しかし、
図5に図示するキャッシュメモリ50にD0,D1,D2,D3が存在しないため、この場合、キャッシュヒットではない。したがって、この場合、制御部20はキャッシュメモリを利用して入力データ(INPUT DATA)を圧縮することができない。
【0071】
再び
図6を参照すると、ハッシュキーに対する衝突カウンタがあらかじめ定めた臨界値(threshold)以上であるかを判断する(S140)。そして、仮にハッシュキーに対する衝突カウンタがあらかじめ定めた臨界値以上である場合、キャッシュメモリをアップデートする(S145)。
【0072】
入力データ(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にアップデートされる。
【0073】
この際、このように新規データをキャッシュメモリ50に追加しなければならないが、キャッシュメモリ50で格納空間が不足する場合、本実施形態では参照カウンタフィールド(REFERENCING COUNTER)の値が最も小さいデータを削除し、そこに新規データを追加する。参照カウンタフィールド値が小さいということはキャッシュメモリ50に格納されたデータを利用したデータ圧縮は成功確率が低いと判断できるからである。
【0074】
再び
図6を参照すると、制御部20は入力データが入力ストリームの最後のデータであるかを判断する(S150)。判断結果、最後ではない場合、入力データに関する情報でハッシュテーブルをアップデートする(S160)。前述した入力データ(INPUT DATA)としてD0,D1,D2,D3が入力される例示において、データD0,D1,D2,D3は入力ストリームの最後ではないため(
図4参照)、ハッシュテーブル30に対するアップデートを行う。具体的には、
図9に図示するようにハッシュキーKaに対する衝突カウンタを1だけ増加させ、ハッシュキーKaに対するインデックスを48に変更する。
【0075】
次に、データ入力装置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となる。
【0076】
次に、制御部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)と長さ情報とを利用して圧縮情報を生成できるようになる。
【0077】
一方、ハッシュキー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に変更されたことが分かる。
【0078】
このように本実施形態によるデータ圧縮装置及び方法では、入力データ(INPUT DATA)を圧縮する際、ハッシュテーブル30とキャッシュメモリ50を何れも使用する。このようにハッシュテーブル30とキャッシュメモリ50をすべて使用してデータを圧縮する場合、次のような長所がある。
【0079】
ハッシュテーブル30のみを利用してデータ圧縮を行う場合、前述したようにハッシュ衝突が生じると、データ圧縮が不可能になる。すなわち、互いにハッシュ衝突関係にあるデータが互いに交互に入力データとして入力されるとデータ圧縮率が非常に低くなる。
【0080】
このようなハッシュ衝突現象を防止するため、ハッシュキー値がさらに多様に生成されるようにハッシュ関数を変更する方法が考えられるが、ハッシュテーブルサイズはハードウェアの制限があるため、このような方法を採用することも簡単ではない。
【0081】
しかし、本実施形態では前述したようにハッシュ衝突が生じた入力データを別途のキャッシュメモリ50で管理するため、ハッシュ衝突が生じたデータが互いに交互に入力されるとしてもデータ圧縮率を高めることができる。すなわち、本実施形態ではデータを圧縮するため、ハッシュテーブル30をディクショナリ(dictionary)として使用するものの、ハッシュ衝突が生じたデータをキャッシュメモリ50に格納し、これをサブ−ディクショナリ(sub−dictionary)として使用することによってデータ圧縮率を高めることができる。また、本実施例では前述したようにハッシュ衝突回数が一定臨界値以上になるまでキャッシュメモリ50をアップデートしないため、キャッシュメモリ50に格納されるデータが限りなく増えることも防止できる。すなわち、キャッシュメモリ50内の入力データを格納することに不要なライト作業(write operations)が使用されない。
【0082】
次に、
図1、
図12A及び
図12Bを参照して本発明の他の実施形態によるデータ圧縮方法について説明する。
【0083】
図12A及び
図12Bは、本発明の他の実施形態によるデータ圧縮方法を説明するための順序図である。以下では、前述した実施形態と重複する内容はその説明を簡略にし、その差異点を中心に説明する。
【0084】
先ず、
図12Aを参照すると、入力データに対するハッシュキーを生成する(S200)。また、生成されたハッシュキーに基づいて入力データがハッシュヒット(hash hit)であるかを判断する(S210)。判断結果、入力データがハッシュヒットである場合、ハッシュテーブルを利用して圧縮情報を生成する(S215)。そして、入力データがハッシュヒットではない場合、ハッシュ衝突が生じたかを判断する(S220)。その結果、ハッシュ衝突が生じた場合、ハッシュテーブルの衝突カウンタを増加させる(S225)。以上の動作は前述した実施形態と大きく変わらないため、その詳細な動作に関する説明は省略する。
【0085】
次の
図12Bを参照すると、入力データがキャッシュヒット(cache hit)であるかを判断する(S230)。そして、入力データがキャッシュヒットである場合、入力データに対してすでに生成された圧縮情報があるかを確認する(S232)。その結果、すでに生成された圧縮情報がない場合、キャッシュメモリを利用して圧縮情報を生成する(S235)。
【0086】
仮に、入力データに対してハッシュ衝突が生じず、先立って説明した段階でハッシュテーブル30を利用して圧縮することができた場合、すでに生成された圧縮情報が存在するであろう。しかし、逆にキャッシュヒットが生じたが、すでに生成された圧縮情報がない場合、このような入力データはキャッシュメモリ50を利用して圧縮することのみ可能であることを意味する。したがって、キャッシュヒットが生じたが、すでに生成された圧縮情報がなければ、制御部20はキャッシュメモリ50を利用して圧縮情報を生成する。
【0087】
再び、
図12Bを参照すると、入力データがキャッシュヒットであり、入力データに対してすでに生成された圧縮情報がある場合、キャッシュメモリを利用して入力データを圧縮する際の圧縮率がハッシュテーブルを利用して入力データを圧縮する際の圧縮率より大きいかを確認する(S236)。その結果、キャッシュメモリを利用して入力データを圧縮する際の圧縮率がハッシュテーブルを利用して入力データを圧縮する際の圧縮率より大きい場合、圧縮情報をアップデートする(S238)。すなわち、ハッシュテーブルを利用して生成された既存の圧縮情報はキャッシュメモリを利用して生成した圧縮情報にアップデートする。
【0088】
データを圧縮する過程にこのように入力データがハッシュヒットであると共にキャッシュヒットである場合が生じる。この際、本実施形態による制御部20は両者間の圧縮率を比較して圧縮率が高い方法でデータを圧縮することによってデータ圧縮率を最大まで高めるという長所がある。
【0089】
再び
図12Bを参照すると、ハッシュキーに対する衝突カウンタがあらかじめ定めた臨界値(threshold)以上であるかを判断する(S240)。そして、ハッシュキーに対する衝突カウンタがあらかじめ定めた臨界値以上である場合、キャッシュメモリをアップデートする(S245)。次いで、入力データが入力ストリームの最後であるかを判断する(S250)。判断結果、最後ではない場合、ハッシュテーブルをアップデートする(S260)。以上の動作も先に説明した実施形態と大きく変わらないため、その詳細動作に関する説明は省略する。
【0090】
以上では制御部20が入力データに対してハッシュヒットであるかどうかを先に判断し、キャッシュヒットであるかどうかを後に判断する動作についてのみ説明したが、本発明がこのような例示に制限されるものではない。本発明の他のいくつかの実施形態で、制御部20は以上で説明とは異なって入力データに対してキャッシュヒットであるかどうかを先に判断し、ハッシュヒットであるかどうかを後に判断するように実現され得る。
【0091】
一方、先に説明した本実施形態によるデータ圧縮動作はオンザフライ(on−the−fly)方式により行われる。以下、
図13を参照してこれについてさらに具体的に説明する。
【0092】
図13は、本発明の実施形態によるデータ圧縮方法が行われるタイミングを説明するための図である。
【0093】
図13を参照すると、前述した本実施形態によるデータ圧縮動作は一つのシステムクロックサイクル内で同時に行われる。具体的には、先ず、第1システムクロックサイクルT1内では、第1入力データ(INPUT DATA1)に対するハッシュキー生成動作Pが行われる。
【0094】
次いで、第2システムクロックサイクルT2内では、第2入力データ(INPUT DATA2)に対するハッシュキー生成動作Pと第1入力データ(INPUT DATA1)に対するハッシュヒット有無判断動作Qが同時に行われる。
【0095】
次いで、第3システムクロックサイクルT3内では、第3入力データ(INPUT DATA3)に対するハッシュキー生成動作Pと第2入力データ(INPUT DATA2)に対するハッシュヒット有無判断動作Qと、第1入力データ(INPUT DATA1)に対するキャッシュヒット有無判断動作Rが同時に行われる。
【0096】
次いで、第4システムクロックサイクルT4内では、第4入力データ(INPUT DATA4)に対するハッシュキー生成動作Pと第3入力データ(INPUT DATA3)に対するハッシュヒット有無判断動作Qと、第2入力データ(INPUT DATA2)に対するキャッシュヒット有無判断動作Rと、第1入力データ(INPUT DATA1)を圧縮情報でエンコードする動作Sが同時に行われる。
【0097】
次いで、第5システムクロックサイクルT5内では、第5入力データ(INPUT DATA4)に対するハッシュキー生成動作Pと第4入力データ(INPUT DATA4)に対するハッシュヒット有無判断動作Qと、第3入力データ(INPUT DATA3)に対するキャッシュヒット有無判断動作Rと、第2入力データ(INPUT DATA2)を圧縮情報でエンコードする動作Sと、第1入力データ(INPUT DATA1)に対する圧縮情報を利用してハッシュテーブルをアップデートする動作Tが同時に行われる。
【0098】
すなわち、本発明の実施形態によるデータ圧縮方法では、データ圧縮効率向上のため、前述した圧縮動作がオンザフライ(on−the−fly)方式により並列的に行われる。一方、ここで例示したデータ圧縮に必要な各動作(P〜T)は一つの一例に過ぎなく、並列的に行われる各動作がこのような例示的な動作(P〜T)に制限されるものではない。
【0099】
再び、
図13を参照すると、データ圧縮動作がこのように行われるため、いくつかのシステムクロックサイクル(例えば、T5,T6)ではハッシュテーブル30が同時に読み取り及び書き込みされなければならないことが分かる。具体的には、第5システムクロックサイクルT5内でハッシュテーブル30は第1入力データ(INPUT DATA1)に対する圧縮情報にアップデートされなければならず(すなわち、書き込みされるべきである)、同時に第4入力データ(INPUT DATA4)に対するハッシュヒット有無を判断するため、読み取りされなければならない。したがって、本発明の実施形態によるデータ圧縮装置はこれら動作をサポートできる構造に設計する。
【0100】
例えば、
図1に図示するデータ圧縮装置1のハッシュテーブル30は、一つのシステムクロックサイクル内で同時に読み取り及び書き込みが可能なようにDPSRAM(Dual Port SRAM)で実現される。しかし、本発明がこれに制限されるものではなく、データ圧縮装置の実現方法はいくらでも変形できる。以下、
図14を参照して本発明の他の実施形態によるデータ圧縮装置について説明する。
【0101】
図14は、本発明の他の実施形態によるデータ圧縮装置の例示的なブロック図である。
図14のデータ圧縮装置2はハッシュテーブル31のプロビジョン(provision)及び動作特性以外は
図1のデータ圧縮装置1と実質的に同じである。以下では、先に説明した実施形態と重複する内容はその説明を簡略化し、差異点を中心に説明する。
【0102】
図14を参照すると、本発明の他の実施形態によるデータ圧縮装置2のハッシュテーブル31は、第1ハッシュテーブル31aと第2ハッシュテーブル31bとに区分して実現される。ここで、第1ハッシュテーブル31aと第2ハッシュテーブル31bとは、例えば、SPSRAM(Single Port SRAM)で実現される。このようにハッシュテーブル31がSPSRAMで実現される場合、データ圧縮装置2内でハッシュテーブル31が占める面積が相対的に減り、データ圧縮装置2の小型化が可能な長所があり、データ圧縮装置2が高い周波数のシステムクロックで作動できるため、データ圧縮速度を向上できる。
【0103】
第1ハッシュテーブル31aと第2ハッシュテーブル31bとは、一つのシステムクロックサイクルで互いに異なる動作を交互に行う。
図13に図示する例を参照してさらに具体的に説明すると、第5システムクロックサイクルT5内で第1ハッシュテーブル31aは第1入力データ(INPUT DATA1)に対する圧縮情報にアップデートされ(すなわち、書き込み)、第2ハッシュテーブル31bは第4入力データ(INPUT DATA4)に対するハッシュヒット有無を判断するために読み取られる。
【0104】
進んで、第6システムクロックサイクルT6内で第2ハッシュテーブル31bは第2入力データ(INPUT DATA1)に対する圧縮情報にアップデートされ(すなわち、書き込み)、第1ハッシュテーブル31aは第5入力データ(INPUT DATA5)に対するハッシュヒット有無を判断するために読み取られる。
【0105】
すなわち、第1ハッシュテーブル31aには奇数番目の入力データ1,3,5に関する読み取り及び書き込み動作が行われ、第2ハッシュテーブル31bには偶数番目の入力データ2,4に関する読み取り及び書き込み動作が行われるが、第1ハッシュテーブル31aに対する読み取り動作と第2ハッシュテーブル31bに対する書き込み動作が一つのシステムクロックサイクル内で同時に行われ得るため、本実施形態によるデータ圧縮装置2は
図13に図示する並列的に行われるデータ圧縮動作を円滑に行うことがきる。
【0106】
次に、
図15ないし
図18を参照して本発明のいくつかの実施形態によるメモリシステム及びその応用例について説明する。
【0107】
図15は、本発明のいくつかの実施形態によるメモリシステムを説明するためのブロック図である。
図16は、
図15に図示するコントローラの詳細ブロック図である。
図17は、
図15のメモリシステムの応用例を図示するブロック図である。
図18は、
図17を参照して説明したメモリシステムを含むコンピュータシステムを図示するブロック図である。
【0108】
図15を参照すると、メモリシステム1000は不揮発性メモリ装置1100及びコントローラ1200を含む。
【0109】
不揮発性メモリ装置1100は、例えば、NANDまたはNORで構成されたフラッシュメモリ装置である。しかし、本発明がこのような例示に制限されるものではなく、本発明のいくつかの実施形態で不揮発性メモリ装置1100は、PRAM(Phase−change RAM)、FRAM(登録商標)(Ferroelectric RAM)、RRAM(登録商標)(Resistive RAM)のうち何れか一つである。
【0110】
コントローラ1200はホスト(HOST)及び不揮発性メモリ装置1100に連結される。ホストからの要請に応答し、コントローラ1200は不揮発性メモリ装置1100をアクセスするように構成される。例えば、コントローラ1200は不揮発性メモリ装置1100の読み取り、書き込み、消去、及び背景(background)動作を制御するように構成される。特に、本実施形態で、コントローラ1200はホストから入力データを提供され、入力データを圧縮した出力データを出力する。
【0111】
一方、コントローラ1200は不揮発性メモリ装置1100とホストとの間にインターフェースを提供するように構成される。また、コントローラ1200は不揮発性メモリ装置1100を制御するためのファームウェア(firmware)を駆動するように構成される。例示的に、コントローラ1200はRAM(Random Access Memory)、中央処理処置(central processing unit)、ホストインターフェース(host interface)、及びメモリインターフェース(memory interface)のようなよく知られている構成要素をさらに含む。
【0112】
以下
図16を参照して本発明のいくつかの実施形態によるコントローラ1200の構成についてさらに具体的に説明する。
【0113】
図16を参照すると、コントローラ1200はホストインターフェース1210、RAM1240、データ圧縮装置1230、ECC1250、メモリインターフェース1260及び中央処理処置1220を含む。
【0114】
ホストは、動作命令(例えば、読み取り命令、書き込み命令、または消去命令など)、アドレス及びデータをホストインターフェース1210に出力する。ホストインターフェース1210はホストとコントローラ1200との間のデータ交換を行うためのプロトコルを含む。
【0115】
例示的に、ホストインターフェース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)プロトコルなどのような多様なインターフェースプロトコルのうち少なくとも一つで構成される。
【0116】
RAM1240は、中央処理処置(CPU)1220の動作メモリとして使用されてもよく、DRAMまたはSRAMなどで実現される。本発明のいくつかの実施形態で、RAM1240は前述したバッファメモリ(
図1の40を参照)として使用されてもく、ホストから出力されたデータを臨時に格納できる。
【0117】
データ圧縮装置1230はホストから入力される入力データを圧縮して不揮発性メモリ装置1100に提供するかまたはホストから入力される入力データを不揮発性メモリ装置110にバイパスする。本実施形態で、このような圧縮装置1230では前述した本発明の実施形態によるデータ圧縮装置1,2が採用される。
【0118】
ECC1250は、不揮発性メモリ装置1100から読み出されたデータまたは不揮発性メモリ装置1100に書き込まれるデータに含まれる欠陥を検出及び訂正する。ECC1250はエラー訂正コードを利用して不揮発性メモリ装置1100から読み出されたデータのエラーを検出し、訂正するように構成される。
図16は、ECC1250がコントローラ1200の構成要素として提供されたものを図示するが、本発明がこれに制限されるものではない。本発明の他のいくつかの実施形態で、ECC1250は不揮発性メモリ装置1100の構成要素として提供され得る。
【0119】
メモリインターフェース1260は不揮発性メモリ装置1100とインターフェーシングする。例えば、メモリインターフェース1260はNANDインターフェースまたはNORインターフェースを含む。
【0120】
中央処理処置1220は、コントローラ1200のデータ交換のための種々の制御動作を行う。図面に図示していないが、本発明のいくつかの実施形態によるメモリシステム1000はホストとのインターフェーシングのため、コードデータを格納するROM(図示せず)などがさらに提供され得ることはこの分野の通常的な知識を有する者に自明である。
【0121】
再び
図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)などのようなメモリカードを構成する。
【0122】
本発明のいくつかの実施形態で、コントローラ1200及び不揮発性メモリ装置1100は一つの半導体装置に集積され、半導体ドライブ(SSD、Solid State Drive)を構成する。半導体ドライブ(SSD)は半導体メモリにデータを格納するように構成される格納装置を備える。メモリシステム1000が半導体ドライブ(SSD)として利用される場合、メモリシステム1000に連結されたホストの動作速度が画期的に改善される。
【0123】
他の例として、メモリシステム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装置、またはコンピュータシステムを構成する多様な構成要素のうち一つなどのような電子装置の多様な構成要素のうち一つとして提供される。
【0124】
例示的には、不揮発性メモリ装置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)などのような方式でパッケージ化して実装される。
【0125】
次の
図17を参照すると、メモリシステム2000は不揮発性メモリ装置2100及びコントローラ2200を含む。不揮発性メモリ装置2100は複数の不揮発性メモリチップを含む。複数の不揮発性メモリチップは複数のグループに分割される。複数の不揮発性メモリチップの各グループは一つの共通チャンネルを介してコントローラ2200と通信するように構成される。例えば、複数の不揮発性メモリチップは第1ないし第kチャンネル(CH1〜CHk)を介してコントローラ2200と通信することが図示されている。
【0126】
図17で、一つのチャンネルに複数の不揮発性メモリチップが接続するものと図示している。しかし、一つのチャンネルに一つの不揮発性メモリチップが接続するようにメモリシステム2000が変形され得ることが理解できるであろう。
【0127】
次の
図18を参照すると、コンピュータシステム3000は中央処理装置(CPU)3100、RMA3200(Random Access Memory)、ユーザインターフェース3300、電源3400、及びメモリシステム2000を含む。
【0128】
メモリシステム2000はシステムバス3500を介して中央処理処置3100、RAM3200、ユーザインターフェース3300、及び電源3400に電気的に接続する。ユーザインターフェース3300を介して提供されるかまたは中央処理装置3100によって処理されたデータはメモリシステム2000に格納される。
【0129】
図18で、不揮発性メモリ装置2100はコントローラ2200を介してシステムバス3500に接続することが図示されている。しかし、不揮発性メモリ装置2100はシステムバス3500に直接接続するように構成される。
【0130】
図18で、
図17を参照して説明したメモリシステム2000が提供されることが図示されている。しかし、メモリシステム2000は
図15を参照して説明したメモリシステム1000に代替され得る。
【0131】
例示的には、コンピュータシステム3000は、
図15及び
図17を参照して説明したメモリシステム1000,2000をすべて含むように構成される。
【0132】
図19及び
図20は、本発明のいくつかの実施形態によるメモリシステム及びコンピュータシステムを適用できる例示的な電子装置を説明するための図である。
【0133】
図19は、タブレットPCであり、
図20は、ノートブックを図示する。本発明の実施形態によるメモリシステム1000,2000及びコンピュータシステム3000のうち少なくとも一つは図示するタブレットPCやノートブックなどに使用され得る。本発明のいくつかの実施形態によるメモリシステム1000、2000及びコンピュータシステム3000は例示していない他の電子装置にも適用され得るは当業者に自明である。
【0134】
以上添付する図面を参照して本発明の実施形態について説明したが、本発明は、上記実施形態に限定されるものではなく、互いに異なる多様な形態で製造され得、本発明が属する技術分野で通常の知識を有する者は、本発明の技術的思想や必須の特徴を変更しない範囲で他の具体的な形態で実施され得ることを理解できる。したがって、上記実施形態はすべての面で例示的なものであり、限定的なものではないと理解しなければならない。