(57)【要約】【課題】データ圧縮方法を提供する。【解決手段】データ圧縮方法は、入力データを提供されて入力データに対するハッシュキーを生成し、生成されたハッシュキーでハッシュテーブルを検索して入力データがハッシュヒットであると判断すると、ハッシュテーブルを利用して入力データを圧縮し、入力データでキャッシュメモリを検索して入力データがキャッシュヒットであると判断すると、キャッシュメモリを利用して前記入力データを圧縮することを含む。【選択図】図６
2014082762.tif 000002
【特許請求の範囲】
【請求項１】
入力データを提供され、前記入力データに対するハッシュキーを生成し、
前記生成されたハッシュキーでハッシュテーブルを検索して前記入力データがハッシュヒットであると判断すると、前記ハッシュテーブルを利用して前記入力データを圧縮し、
前記入力データでキャッシュメモリを検索して前記入力データがキャッシュヒットであると判断すると、前記キャッシュメモリを利用して前記入力データを圧縮することを含むデータ圧縮方法。
【請求項２】
前記入力データがハッシュヒットであるかを判断することは、
前記生成されたハッシュキーで前記ハッシュテーブルから前記入力データに対するインデックスを抽出し、
バッファメモリに格納されたデータのうち前記抽出されたインデックスによって指示される指示データを抽出し、
前記入力データと前記指示データとが同一である場合、前記入力データをハッシュヒットであると判断することを含む請求項１に記載のデータ圧縮方法。
【請求項３】
前記ハッシュテーブルを利用して前記入力データを圧縮することは、
前記ハッシュテーブルから抽出した前記インデックスと前記指示データに対する長さ情報とを利用して前記入力データを圧縮することを含む請求項２に記載のデータ圧縮方法。
【請求項４】
前記入力データがキャッシュヒットであるかを判断することは、
前記キャッシュメモリに前記入力データが存在するかを判断することを含む請求項１に記載のデータ圧縮方法。
【請求項５】
前記キャッシュメモリを利用して前記入力データを圧縮することは、
前記キャッシュメモリから抽出した前記入力データに対するインデックスと前記キャッシュメモリに格納された前記入力データに対する長さ情報とを利用して前記入力データを圧縮することを含む請求項４に記載のデータ圧縮方法。
【請求項６】
前記入力データがハッシュヒットではないと判断すると、ハッシュ衝突が生じたかを判断し、
前記ハッシュ衝突が生じた場合、前記ハッシュキーに対する衝突カウンタを増加させ、
前記ハッシュキーに対する衝突カウンタがあらかじめ定めた臨界値以上である場合、前記キャッシュメモリをアップデートすることをさらに含む請求項１に記載のデータ圧縮方法。
【請求項７】
前記キャッシュメモリをアップデートした後、前記ハッシュテーブルをアップデートすることをさらに含む請求項６に記載のデータ圧縮方法。
【請求項８】
前記入力データがキャッシュヒットであるかを判断することは、前記入力データがハッシュヒットであるかを判断した後に行われる請求項１に記載のデータ圧縮方法。
【請求項９】
前記入力データがハッシュヒットであると共にキャッシュヒットである場合、前記ハッシュテーブルを利用して前記入力データを圧縮する際の第１圧縮率と前記キャッシュメモリを利用して前記入力データを圧縮する際の第２圧縮率とを比較し、圧縮率が高い方法により前記入力データを圧縮することをさらに含む請求項８に記載のデータ圧縮方法。
【請求項１０】
前記入力データを圧縮して生成した出力データを不揮発性メモリ装置に出力することをさらに含む請求項１に記載のデータ圧縮方法。
【請求項１１】
第１入力データに対して生成されたハッシュキーでハッシュテーブルを検索して前記第１入力データがハッシュヒットであるかを判断し、
前記第１入力データと異なる第２入力データでキャッシュメモリを検索して前記第２入力データがキャッシュヒットであるかを判断することを含み、
前記第１入力データがハッシュヒットであるかを判断することと、前記第２入力データがキャッシュヒットであるかを判断することは第１システムクロックサイクル内で同時に行われるデータ圧縮方法。
【請求項１２】
前記第２入力データと異なる第３入力データに対する圧縮結果に基づいて前記ハッシュテーブルをアップデートすることをさらに含み、
前記第１入力データがハッシュヒットであるかを判断することと、前記ハッシュテーブルをアップデートすることは前記第１システムクロックサイクル内で同時に行われる請求項１１に記載のデータ圧縮方法。
【請求項１３】
前記第３入力データと異なる第４入力データに対するハッシュキーを生成することと、
前記第４入力データと異なる第５入力データに対する圧縮結果に基づいて前記第５入力データをエンコードすることをさらに含み、
前記第１入力データがハッシュヒットであるかを判断することと、前記第４入力データに対するハッシュキーを生成することと、前記第５入力データをエンコードすることは前記第１システムクロックサイクル内で同時に行われる請求項１２に記載のデータ圧縮方法。
【請求項１４】
前記第４入力データに対するハッシュキーを生成した後、第２システムクロックサイクル内で前記生成されたハッシュキーで前記ハッシュテーブルを検索して前記第４入力データがハッシュヒットであるかを判断し、
第３システムクロックサイクル内で、前記第４入力データで前記キャッシュメモリを検索して前記第４入力データがキャッシュヒットであるかを判断することをさらに含む請求項１３に記載のデータ圧縮方法。
【請求項１５】
前記第２システムクロックサイクルは、前記第３システムクロックサイクルより先行する請求項１４に記載のデータ圧縮方法。
【請求項１６】
入力データを提供され、前記入力データに対するハッシュキーを出力するハッシュキー生成器と、
前記ハッシュキーでハッシュテーブルを検索して前記入力データがハッシュヒットであるかどうかを判断し、前記入力データがハッシュヒットではないと判断した場合、前記入力データでキャッシュメモリを検索して前記入力データがキャッシュヒットであるかを判断した後、前記入力データに対する圧縮情報を出力する制御部と、
前記制御部から提供された前記圧縮情報に基づいて前記入力データをエンコードし、前記入力データを圧縮した出力データを出力するエンコーダを含むデータ圧縮装置。
【請求項１７】
前記ハッシュテーブルは第１ハッシュテーブルと第２ハッシュテーブルとを含み、
第１システムクロックサイクル内で前記制御部は前記入力データが前記第１ハッシュテーブルでハッシュヒットであるかを判断し、第２システムクロックサイクル内で前記制御部は前記前記入力データが第２ハッシュテーブルでハッシュヒットであるかを判断する請求項１６に記載のデータ圧縮装置。
【請求項１８】
前記第１ハッシュテーブルと前記第２ハッシュテーブルとは、ＳＰＳＲＡＭ（Ｓｉｎｇｌｅ  Ｐｏｒｔ  ＳＲＡＭ）で実現される請求項１７に記載のデータ圧縮装置。
【請求項１９】
前記ハッシュテーブルは、ＤＰＳＲＡＭ（Ｄｕａｌ  Ｐｏｒｔ  ＳＲＡＭ）で実現される請求項１６に記載のデータ圧縮装置。
【請求項２０】
前記ハッシュテーブルは、ハッシュ衝突回数をカウントする衝突カウンタフィールドを含む請求項１６に記載のデータ圧縮装置。
【請求項２１】
前記キャッシュメモリは、複数のフリップ−フロップで実現される請求項１６に記載のデータ圧縮装置。
【請求項２２】
前記ハッシュテーブルと前記キャッシュメモリとがインデックスするＳＲＡＭで実現されたバッファメモリをさらに含む請求項１６に記載のデータ圧縮装置。
【請求項２３】
前記出力データは、前記入力データの位置情報と長さ情報とを含む請求項１６に記載のデータ圧縮装置。
【請求項２４】
ホストから入力データを提供され、前記入力データを圧縮した出力データを出力するコントローラと、
前記出力データを格納する不揮発性メモリ装置を含み、
前記コントローラは、前記出力データを生成するためのハッシュテーブルとキャッシュメモリとを含むデータ圧縮装置を含み、
前記データ圧縮装置は、
前記入力データに基づいて生成されたハッシュキーで前記ハッシュテーブルを検索して前記入力データがハッシュヒットであると判断する場合、前記ハッシュテーブルを利用して前記出力データを生成するか、または前記入力データで前記キャッシュメモリを検索して前記入力データがキャッシュヒットであると判断する場合、前記キャッシュメモリを利用して前記出力データを生成するメモリシステム。
【請求項２５】
前記ハッシュテーブルと前記キャッシュメモリとがインデックスするバッファメモリをさらに含む請求項２４に記載のメモリシステム。
【請求項２６】
前記不揮発性メモリ装置は、複数の不揮発性メモリチップを含み、
前記複数の不揮発性メモリチップは複数のグループに分割され、
前記複数の不揮発性メモリチップの各グループは一つの共通チャンネルを介して前記コントローラと通信する請求項２４に記載のメモリシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ圧縮装置及び方法、データ圧縮装置を含むメモリシステムに関する。
【背景技術】
【０００２】
データを圧縮する技術は、データ格納装置からまたはデータ格納装置にデータを伝送する際に必要なエネルギーを低くし、かつ伝送速度を高め、制限された格納空間の活用を高めるために多様な方式で用いられる。すなわち、データ格納装置から読み取られ、またはデータ格納装置に書き込まれるデータのサイズを、データ圧縮技術を適用して減らせるのであれば、データ格納装置によって行われる読み取り及び書き込みの全体回数が減少する。また、減少した読み取り／書き込みの回数によってデータ格納装置の期待寿命が増加する。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
本発明が解決しようとする技術的課題は、データ圧縮率を向上させることができるデータ圧縮方法を提供することである。
【０００４】
本発明が解決しようとする他の技術的課題は、データ圧縮率が向上したデータ圧縮装置を提供することである。
【０００５】
本発明が解決しようとするまた他の技術的課題は、前記データ圧縮装置を採用して製品期待寿命が向上したメモリシステムを提供することである。
【０００６】
本発明の技術的課題は、上述した技術的課題に制限されず、上述していないまた他の技術的課題は次の記載から当業者に明確に理解できるであろう。
【課題を解決するための手段】
【０００７】
前記技術的課題を達成するための本発明の一実施形態によるデータ圧縮方法は、入力データが提供され、前記入力データに対するハッシュキー（ｈａｓｈ  ｋｅｙ）を生成し、生成されたハッシュキーでハッシュテーブルを検索し、前記入力データがハッシュヒット（ｈａｓｈ  ｈｉｔ）であると判断すると、前記ハッシュテーブルを利用して前記入力データを圧縮し、入力データでキャッシュメモリを検索して入力データがキャッシュヒットであると判断すると、前記キャッシュメモリを利用して前記入力データを圧縮することを含む。
【０００８】
本発明のいくつかの実施形態で、前記入力データがハッシュヒットであるかを判断することは、前記生成されたハッシュキーで前記ハッシュテーブルから前記入力データに対するインデックスを抽出し、バッファメモリに格納されたデータのうち前記抽出されたインデックスによって指示される指示データを抽出し、前記入力データと前記指示データとが同一である場合、前記入力データをハッシュヒットと判断することを含み得る。この際、前記ハッシュテーブルを利用して前記入力データを圧縮することは、前記ハッシュテーブルから抽出した前記インデックスと前記指示データに対する長さ情報とを利用して前記入力データを圧縮することを含み得る。
【０００９】
本発明のいくつかの実施形態で、前記入力データがキャッシュヒットであるかを判断することは、前記キャッシュメモリに前記入力データが存在するかを判断することを含み得る。この際、前記キャッシュメモリを利用して前記入力データを圧縮することは、前記キャッシュメモリから抽出した前記入力データに対するインデックスと前記キャッシュメモリに格納された前記入力データに対する長さ情報とを利用して前記入力データを圧縮することを含み得る。
【００１０】
本発明のいくつかの実施形態で、前記データ圧縮方法は前記入力データがハッシュヒットではないと判断すると、ハッシュ衝突が生じたかを判断し、前記ハッシュ衝突が生じた場合、前記ハッシュキーに対する衝突カウンタを増加させ、前記ハッシュキーに対する衝突カウンタがあらかじめ定めた臨界値以上である場合、前記キャッシュメモリをアップデートすることをさらに含み得る。また、前記データ圧縮方法は前記キャッシュメモリをアップデートした後、前記ハッシュテーブルをアップデートすることをさらに含み得る。
【００１１】
本発明のいくつかの実施形態で、前記入力データがキャッシュヒットであるかを判断することは、前記入力データがハッシュヒットであるかを判断した後に行われ得る。
【００１２】
本発明のいくつかの実施形態で、前記データ圧縮方法は、前記入力データがハッシュヒットであると共にキャッシュヒットである場合、前記ハッシュテーブルを利用して前記入力データを圧縮する際の第１圧縮率と前記キャッシュメモリを利用して前記入力データを圧縮する際の第２圧縮率とを比較し、圧縮率がさらに高い方法により前記入力データを圧縮することをさらに含み得る。
【００１３】
本発明のいくつかの実施形態で、前記データ圧縮方法は前記入力データを圧縮して生成した出力データを不揮発性メモリ装置に出力することをさらに含み得る。
【００１４】
前記技術的課題を達成するための本発明の他の実施形態によるデータ圧縮方法は、第１入力データに対して生成されたハッシュキーでハッシュテーブルを検索して第１入力データがハッシュヒットであるかを判断して、第１入力データと異なる第２入力データでキャッシュメモリを検索して第２入力データがキャッシュヒットであるかを判断することを含み、第１入力データがハッシュヒットであるかを判断することと、第２入力データがキャッシュヒットであるかを判断することは第１システムクロックサイクル内で同時に行われ得る。
【００１５】
本発明のいくつかの実施形態で、前記データ圧縮方法は前記第２入力データと異なる第３入力データに対する圧縮結果に基づいて前記ハッシュテーブルをアップデートすることをさらに含み、前記第１入力データがハッシュヒットであるかを判断することと、前記ハッシュテーブルをアップデートすることは前記第１システムクロックサイクル内で同時に行われ得る。
【００１６】
本発明のいくつかの実施形態で、前記データ圧縮方法は前記第３入力データと異なる第４入力データに対するハッシュキーを生成することと、前記第４入力データと異なる第５入力データに対する圧縮結果に基づいて前記第５入力データをエンコードすることをさらに含み、前記第１入力データがハッシュヒットであるかを判断することと、前記第４入力データに対するハッシュキーを生成することと、前記第５入力データをエンコードすることは前記第１システムクロックサイクル内で同時に行われ得る。
【００１７】
本発明のいくつかの実施形態で、前記データ圧縮方法は前記第４入力データに対するハッシュキーを生成した後、第２システムクロックサイクル内で前記生成されたハッシュキーで前記ハッシュテーブルを検索して前記第４入力データがハッシュヒットであるかを判断し、第３システムクロックサイクル内で、前記第４入力データで前記キャッシュメモリを検索して前記第４入力データがキャッシュヒットであるかを判断することをさらに含み得る。この際、前記第２システムクロックサイクルは前記第３システムクロックサイクルより先行することができる。
【００１８】
前記他の技術的課題を達成するための本発明の一実施形態によるデータ圧縮装置は、入力データが提供され、入力データに対するハッシュキーを出力するハッシュキー生成器、ハッシュキーでハッシュテーブルを検索して入力データがハッシュヒットであるかを判断し、入力データがハッシュヒットではないと判断した場合、入力データでキャッシュメモリを検索して入力データがキャッシュヒットであるかを判断した後、入力データに対する圧縮情報を出力する制御部、および制御部から提供された圧縮情報に基づいて入力データをエンコードし、入力データを圧縮した出力データを出力するエンコーダを含む。
【００１９】
本発明のいくつかの実施形態で、前記ハッシュテーブルは第１ハッシュテーブルと第２ハッシュテーブルとを含み、第１システムクロックサイクル内で前記制御部は前記入力データが前記第１ハッシュテーブルからハッシュヒットであるかを判断し、第２システムクロックサイクル内で前記制御部は前記入力データが第２ハッシュテーブルからハッシュヒットであるかを判断できる。この際、前記第１ハッシュテーブルと前記第２ハッシュテーブルとはＳＰＳＲＡＭ（Ｓｉｎｇｌｅ  Ｐｏｒｔ  ＳＲＡＭ）で実現され得る。
【００２０】
本発明のいくつかの実施形態で、前記ハッシュテーブルはＤＰＳＲＡＭ（Ｄｕａｌ  Ｐｏｒｔ  ＳＲＡＭ）で実現され得る。
【００２１】
本発明のいくつかの実施形態で、前記ハッシュテーブルはハッシュ衝突回数をカウントする衝突カウンタフィールドを含み得る。
【００２２】
本発明のいくつかの実施形態で、前記キャッシュメモリは複数のフリップ−フロップで実現され得る。
【００２３】
本発明のいくつかの実施形態で、前記データ圧縮装置は前記ハッシュテーブルと前記キャッシュメモリとがインデックスするＳＲＡＭで実現されたバッファメモリをさらに含み得る。この際、前記出力データは前記入力データの位置情報と長さ情報とを含み得る。
【００２４】
前記また他の技術的課題を達成するための本発明の一実施形態によるメモリシステムは、ホストから入力データが提供され、入力データを圧縮した出力データを出力するコントローラ、および出力データを格納する不揮発性メモリ装置を含み、コントローラは、出力データを生成するためのハッシュテーブルとキャッシュメモリとを含むデータ圧縮装置を含み、データ圧縮装置は、入力データに基づいて生成されたハッシュキーで前記ハッシュテーブルを検索して入力データがハッシュヒットであると判断すると、ハッシュテーブルを利用して出力データを生成し、入力データでキャッシュメモリを検索して入力データがキャッシュヒットであると判断すると、キャッシュメモリを利用して前記出力データを生成する。
【００２５】
本発明のいくつかの実施形態で、前記メモリシステムは前記ハッシュテーブルと前記キャッシュメモリとがインデックスするバッファメモリをさらに含み得る。
【００２６】
本発明のいくつかの実施形態で、前記不揮発性メモリ装置は複数の不揮発性メモリチップを含み、前記複数の不揮発性メモリチップは複数のグループに分割され、前記複数の不揮発性メモリチップの各グループは一つの共通チャンネルを介して前記コントローラと通信することができる。
【００２７】
その他実施形態の具体的な内容は詳細な説明及び図面に含まれている。
【図面の簡単な説明】
【００２８】
【図１】本発明の一実施形態によるデータ圧縮装置の例示的なブロック図である。
【図２】図１に図示するハッシュキー生成器の動作を説明するための図である。
【図３】図１に図示するハッシュテーブルの例示的な構成を図示する図である。
【図４】図１に図示するバッファメモリの例示的な構成を図示する図である。
【図５】図１に図示するキャッシュメモリの例示的な構成を図示する図である。
【図６】本発明の一実施形態によるデータ圧縮方法を説明するための順序図である。
【図７】図６に図示するデータ圧縮方法をさらに具体的に説明するための図である。
【図８】図６に図示するデータ圧縮方法をさらに具体的に説明するための図である。
【図９】図６に図示するデータ圧縮方法をさらに具体的に説明するための図である。
【図１０】図６に図示するデータ圧縮方法をさらに具体的に説明するための図である。
【図１１】図６に図示するデータ圧縮方法をさらに具体的に説明するための図である。
【図１２Ａ】本発明の他の実施形態によるデータ圧縮方法を説明するための順序図である。
【図１２Ｂ】本発明の他の実施形態によるデータ圧縮方法を説明するための順序図である。
【図１３】本発明の実施形態によるデータ圧縮方法が行われるタイミングを説明するための図である。
【図１４】本発明の他の実施形態によるデータ圧縮装置の例示的なブロック図である。
【図１５】本発明のいくつかの実施形態によるメモリシステムを説明するためのブロック図である。
【図１６】図１５に図示するコントローラの詳細ブロック図である。
【図１７】図１５のメモリシステムの応用例を図示するブロック図である。
【図１８】図１７を参照して説明されたメモリシステムを含むコンピュータシステムを図示するブロック図である。
【図１９】本発明のいくつかの実施形態によるメモリシステムを適用できる例示的な電子装置を説明するための図である。
【図２０】本発明のいくつかの実施形態によるメモリシステムを適用できる例示的な電子装置を説明するための図である。
【発明を実施するための形態】
【００２９】
本発明の利点及び特徴、これらを達成する方法は添付する図面と共に詳細に後述する実施形態において明確になるであろう。しかし、本発明は、以下で開示する実施形態に限定されるものではなく、互いに異なる多様な形態で実現されるものであり、本実施形態は、単に本発明の開示を完全にし、本発明が属する技術分野で通常の知識を有する者に発明の範疇を完全に知らせるために提供されるものであり、本発明は、請求項の範囲によってのみ定義される。図面に表示する構成要素のサイズおよび相対的なサイズは説明を明瞭するため、誇張したものであり得る。明細書全体にかけて同一参照符号は同一構成要素を指称し、「および／または」は、言及されたアイテムのそれぞれおよび一つ以上のすべての組合せを含む。
【００３０】
本明細書で使用された用語は実施形態を説明するためであり、本発明を制限しようとするものではない。本明細書で、単数型は例示であり、特に言及しない限り複数型も含む。明細書で使用される「含む（ｃｏｍｐｒｉｓｅｓ）」および／または「含む（ｃｏｍｐｒｉｓｉｎｇ）」は、言及された構成要素、段階、動作および／または素子に関して、一つ以上の他の構成要素、段階、動作および／または素子が存在すること、または追加されることを排除しない。
【００３１】
第１、第２などが多様な素子、構成要素を述べるために使用されるが、これら素子、構成要素はこれらの用語によって制限されないことはいうまでもない。これらの用語は、単に一つ構成要素を他の構成要素と区別するために使用するものである。したがって、以下で言及される第１素子や構成要素は本発明の技術的思想内で第２素子や構成要素であり得ることは勿論である。
【００３２】
特に定義されない限り、本明細書で使用されるすべての用語（技術および科学的用語を含む）は、本発明が属する技術分野で通常の知識を有する者が共通に理解できる意味として使用され得る。また一般に使用される辞典に定義されている用語は明白に特別に定義されていない限り理想的にまたは過度に解釈しない。
【００３３】
以下、図１ないし図５を参照して本発明の一実施形態によるデータ圧縮装置について説明する。
【００３４】
図１は、本発明の一実施形態によるデータ圧縮装置の例示的なブロック図である。図２は、図１に図示するハッシュキー生成器の動作を説明するための図である。図３は、図１に図示するハッシュテーブルの例示的な構成を図示する図面である。図４は、図１に図示するバッファメモリの例示的な構成を図示する図である。図５は、図１に図示するキャッシュメモリの例示的な構成を図示する図である。
【００３５】
図１を参照すると、データ圧縮装置１は、ハッシュキー生成器１０、制御部２０、ハッシュテーブル３０、キャッシュメモリ５０及びエンコーダ６０を含む。
【００３６】
ハッシュキー生成器１０は、入力データ（ＩＮＰＵＴ  ＤＡＴＡ）を提供され、入力データ（ＩＮＰＵＴ  ＤＡＴＡ）に対するハッシュキー（ＨＡＳＨ  ＫＥＹ）を出力することができる。例えば、図２を参照すると、図示するように入力データ（ＩＮＰＵＴ  ＤＡＴＡ）がＡ０，Ａ１，Ａ２，Ａ３である場合、ハッシュキー生成器１０はＫａというハッシュキーを生成し、入力データ（ＩＮＰＵＴ  ＤＡＴＡ）がそれぞれＢ０，Ｂ１，Ｂ２，Ｂ３、Ｃ０，Ｃ１，Ｃ２，Ｃ３である場合、ハッシュキー生成器１０はＫｂ、Ｋｃをそれぞれの入力データ（ＩＮＰＵＴ  ＤＡＴＡ）に対するハッシュキーとして生成することができる。
【００３７】
本発明のいくつかの実施形態で、ハッシュキー生成器１０が使用するハッシュ関数（Ｆｈａｓｈ）としてＸＯＲ演算を使用する。具体的には、ハッシュキー生成器１０は入力データそれぞれをｎ（ここで、ｎは自然数）ビットずつシフト（ｓｈｉｆｔ）した後、これらをＸＯＲ演算することによってハッシュキーを生成する。
【００３８】
例えば、入力データがＡ０，Ａ１，Ａ２，Ａ３である場合、ハッシュキー生成器はＡ０に対してはビットシフトせず、Ａ１に対しては１ビットシフトし、Ａ２に対しては２ビットシフトし、Ａ３に対しては３ビットシフトした後、これらをＸＯＲ演算して得られた結果をハッシュキーＫａとして生成する。しかし、本発明のハッシュキー生成器１０が使用するハッシュ関数（Ｆｈａｓｈ）がこのような例示に制限されるものではなく、必要に応じてハッシュ関数（Ｆｈａｓｈ）はいくらでもこれと異なる形態に変形できる。
【００３９】
制御部２０は、ハッシュキー生成器１０が生成したハッシュキーに基づいて入力データ（ＩＮＰＵＴ  ＤＡＴＡ）に対する圧縮情報（ＣＯＭＰＲＥＳＳＩＮＧ  ＩＮＦＯＲＭＡＴＩＯＮ）を生成した後、これをエンコーダ６０に出力する。
【００４０】
本実施形態で使用される「部」という用語は、ソフトウェアまたはＦＰＧＡまたはＡＳＩＣのようなハードウェア構成要素を意味し、「部」はある役割を果たす。しかし、「部」はソフトウェアまたはハードウェアに限定される意味ではない。「部」は、アドレッシングできる格納媒体にあるように構成されてもよく、一つまたはそれ以上のプロセッサを再生させるように構成され得る。したがって、一例として「部」は、ソフトウェア構成要素、オブジェクト指向のソフトウェア構成要素、クラス構成要素及びタスク構成要素のような構成要素と、プロセス、関数、属性、プロシーザ、サブルーチン、プログラムコードのセグメント、ドライバ、ファームウェア、マイクロコード、回路、データ、データベース、データ構造、テーブル、アレイ、および変数を含み得る。構成要素と「部」から提供される機能はさらに小さい数の構成要素及び「部」に結合されるかまたは追加的な構成要素と「部」にさらに分離できる。
【００４１】
具体的には、本実施形態で、制御部２０は、入力データに対するハッシュキー（ＨＡＳＨ  ＫＥＹ）に基づいてハッシュテーブル３０とバッファメモリ４０を検索して入力データ（ＩＮＰＵＴ  ＤＡＴＡ）がハッシュヒット（ｈａｓｈ  ｈｉｔ）であるかを判断し、入力データ（ＩＮＰＵＴ  ＤＡＴＡ）でキャッシュメモリ５０を検索し、入力データがキャッシュヒット（ｃａｃｈｅ  ｈｉｔ）であるかを判断した後、これに基づいて入力データ（ＩＮＰＵＴ  ＤＡＴＡ）に対する圧縮情報（ＣＯＭＰＲＥＳＳＩＮＧ  ＩＮＦＯＲＭＡＴＩＯＮ）を生成した後、これをエンコーダ６０に出力する。
【００４２】
先ず、図３を参照すると、本実施形態によるハッシュテーブル３０は図示するようにハッシュキーフィールド、衝突カウンタフィールド、インデックスフィールドを含む。ここで、ハッシュキーフィールドは、ハッシュキー生成器１０で生成されたハッシュキーをキー値としてハッシュテーブル３０を検索する際に使用するフィールドであり、衝突カウンタフィールドは該当ハッシュキーによってハッシュ衝突（ｈａｓｈ  ｃｏｌｌｉｓｉｏｎ）が何回生じたかをカウントするフィールドであり、インデックスフィールドはバッファメモリ（図４の４０を参照）内のデータ位置を指示するインデックス値（またはインデックス）を格納したフィールドである。
【００４３】
本発明のいくつかの実施形態で、このようなハッシュテーブル３０は例えば、ＳＲＡＭ（Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）で実現されるが、本発明がこれに制限されるものではない。
【００４４】
次に、図４を参照すると、本実施形態によるバッファメモリ４０は、例えば、ホストから提供されたデータがバッファリングされて格納されている。本発明のいくつかの実施形態で、このようなバッファメモリ４０はＳＲＡＭで実現されるが、本発明がこれに制限されるものではない。
【００４５】
一方、本発明のいくつかの実施形態で、このようなバッファメモリ４０はデータ圧縮装置（図１６の１２３０を参照）の外部に実現される。すなわち、バッファメモリ４０はデータ圧縮装置（図１６の１２３０を参照）の外部に別途の構成要素（例えば、図１６の１２４０を参照）として実現される。しかし、本発明がこれに制限されるものではなく、必要に応じてバッファメモリ４０はデータ圧縮装置（図１の１を参照）の内部に実現され得る。
【００４６】
バッファメモリ４０に格納された入力データは所定インデックスによりその位置が表示されている。図４を参照すると、例えば、データＡ０，Ａ１，Ａ２，Ａ３はインデックス８によって指示されており、データＢ０，Ｂ１，Ｂ２，Ｂ３はインデックス１６によって指示されており、データＣ０，Ｃ１，Ｃ２，Ｃ３はインデックス３２によって指示されている。
【００４７】
前述したハッシュテーブル（図３の３０を参照）のインデックスフィールドはこのようなバッファメモリ４０上のインデックスを意味する。例えば、データＡ０，Ａ１，Ａ２，Ａ３のハッシュキーはＫａであり（図２を参照）、ハッシュテーブル（図３の３０を参照）でハッシュキーＫａによって指示されるインデックスは８である。この際、バッファメモリ４０上にインデックス８によって指示される位置にデータＡ０，Ａ１，Ａ２，Ａ３が存在するため、データが正しくインデックスされていることが分かる。すなわち、ハッシュテーブル（図３の３０を参照）に格納されるそれぞれのハッシュキーは該当インデックス及び衝突カウンタ値と関連して格納される。
【００４８】
次に、図５を参照すると、キャッシュメモリ５０は参照カウンタフィールドと、データフィールドと、インデックスフィールドを含む。ここで、参照カウンタフィールドは、該当入力データが何回参照されたかカウントした値を格納するために使用されるフィールドであり、データフィールドは該当入力データが格納されるフィールドであり、インデックスフィールドはバッファメモリ（図４の４０を参照）内に位置したデータのインデックスを格納したフィールドである。
【００４９】
例えば、データＢ０，Ｂ１，Ｂ２，Ｂ３はインデックス１６によって指示されており、図４のバッファメモリ４０上にインデックス１６によって指示される位置にデータＢ０，Ｂ１，Ｂ２，Ｂ３が存在するため、データが正しくインデックスされていることが分かる。
【００５０】
ハッシュテーブル（図３の３０を参照）及びキャッシュメモリ５０である場合、各テーブルの「エントリー（ｅｎｔｒｙ）」は前述したように複数の関連フィールドを有する。
【００５１】
本発明のいくつかの実施形態で、このようなキャッシュメモリ５０は例えば、複数のフリップ−フロップ（ｆｌｉｐ−ｆｌｏｐ）で実現される。特に本発明のいくつかの実施形態で、キャッシュメモリ５０は複数のフリップ−フロップで構成されたレジスターファイル（ｒｅｇｉｓｔｅｒ  ｆｉｌｅ）であるが、本発明がこれに制限されるものではない。
【００５２】
本実施形態による制御部２０は、入力データ（ＩＮＰＵＴ  ＤＡＴＡ）に対する圧縮情報（ＣＯＭＰＲＥＳＳＩＮＧ  ＩＮＦＯＲＭＡＴＩＯＮ）を生成するため、データ圧縮装置（図１の１を参照）に含まれた前述したハッシュテーブル３０とキャッシュメモリ５０を何れも参照する。このような制御部２０の具体的な動作については後述する。
【００５３】
再び図１を参照すると、エンコーダ６０は制御部２０から生成された圧縮情報（ＣＯＭＰＲＥＳＳＩＮＧ  ＩＮＦＯＲＭＡＴＩＯＮ）を提供され、圧縮された入力データ（ＩＮＰＵＴ  ＤＡＴＡ）を「出力データ（ＯＵＴＰＵＴ  ＤＡＴＡ）」として出力する。このように出力された出力データはデータ格納装置（例えば、不揮発性メモリ装置）に提供して格納される。またこのように出力された出力データは外部回路に提供される。
【００５４】
本発明のいくつかの実施形態で、このような出力データ（ＯＵＴＰＵＴ  ＤＡＴＡ）は入力データ（ＩＮＰＵＴ  ＤＡＴＡ）を位置情報と長さ情報でのみ示すデータである。すなわち、本発明のいくつかの実施形態で使用される圧縮アルゴリズムは入力データ（ＩＮＰＵＴ  ＤＡＴＡ）を位置情報と長さ情報でのみ示すことによって圧縮するアルゴリズムである。このようなアルゴリズムの例としては、ＬＺ（Ｌｅｍｐｅｌ−Ｚｉｖ）７７，ＬＺ７８，ＬＺＷ（Ｌｅｍｐｅｌ−Ｚｉｖ−Ｗｅｌｃｈ）などのＬＺ系列アルゴリズムが挙げられるが、本発明がこれに制限されるものではない。本発明の他のいくつかの実施形態で、データの圧縮において、デフレート（Ｄｅｆｌａｔｅ）アルゴリズム、ハフマン（Ｈｕｆｆｍａｎ）アルゴリズム、算術符号化（Ａｒｉｔｈｍｅｔｉｃ  Ｃｏｄｉｎｇ）アルゴリズムなどが使用される。
【００５５】
以下図１、図６ないし図１１を参照して本発明の一実施形態によるデータ圧縮方法について説明する。
【００５６】
図６は、本発明の一実施形態によるデータ圧縮方法を説明するための順序図である。図７ないし図１１は、図６に図示するデータ圧縮方法をさらに具体的に説明するための図である。
【００５７】
以下では、理解を深めるため、いくつかを仮定して本実施形態によるデータ圧縮方法について説明する。具体的には、本実施形態による動作を説明する際、ハッシュテーブル３０、バッファメモリ４０、キャッシュメモリ５０の構成がそれぞれ図３ないし図５に図示する図と同様であると仮定し、本実施形態によるデータ圧縮方法について説明する。しかし、このような説明方法は理解を深めるためであって、本発明の範囲を制限するためではない。
【００５８】
先ず、図６を参照すると、入力データに対するハッシュキーを生成する（Ｓ１００）。具体的には図１を参照すると、例えば、ハッシュキー生成器１０は入力データ（ＩＮＰＵＴ  ＤＡＴＡ）を提供され、入力データに対するハッシュキーを生成する。
【００５９】
次に、図６を参照すると、生成されたハッシュキーに基づいて入力データがハッシュヒット（ｈａｓｈ  ｈｉｔ）であるかを判断する（Ｓ１１０）。仮に、判断した結果、入力データがハッシュヒットである場合、ハッシュテーブルを利用して圧縮情報を生成する（Ｓ１１５）。
【００６０】
具体的には図１を参照すると、例えば、制御部２０は、先ず生成されたハッシュキーでハッシュテーブル３０を検索してハッシュキーと連動するインデックスを抽出する。次いで、制御部２０はバッファメモリ４０に格納されたデータのうちハッシュテーブル３０から抽出されたインデックスによって指示される指示データを抽出する。ここで、ハッシュキーに関連する入力データ（ＩＮＰＵＴ  ＤＡＴＡ）が、抽出された指示データと同一である場合、ハッシュヒットが発生する。したがって、制御部２０はハッシュテーブル３０から抽出したインデックスと指示データに対する長さ情報とを利用して入力データ（ＩＮＰＵＴ  ＤＡＴＡ）を圧縮するための圧縮情報を生成する。
【００６１】
例えば、データ圧縮装置１の入力データ（ＩＮＰＵＴ  ＤＡＴＡ）としてバッファメモリ４０上でインデックス４４によって指示されるデータＣ０，Ｃ１，Ｃ２，Ｃ３が入力されたと仮定する（図４を参照）。図２を参照すると、このような入力データ（ＩＮＰＵＴ  ＤＡＴＡ）に対するハッシュキーはＫｃであることが分かるので、ハッシュキー生成器１０は入力データに対するハッシュキーでＫｃを制御部２０に出力する。
【００６２】
ここで、制御部２０がハッシュキーＫｃで図３に図示するハッシュテーブル３０を検索すると、このときのインデックスは３２であることが分かる。また、制御部２０がバッファメモリ（図４の４０を参照）に格納されたデータのうちインデックス３２によって指示される指示データを抽出すると、これもＣ０，Ｃ１，Ｃ２，Ｃ３であることが分かる。この場合、入力データ（ＩＮＰＵＴ  ＤＡＴＡ）と指示データとが互いに同じであるため、ハッシュヒットとなる。したがって、制御部２０はハッシュテーブル３０から抽出したインデックス（例えば、３２）と指示データに対する長さ情報（本実施形態では入力データの一単位が４ｂｙｔｅであると仮定する）を利用して入力データ（ＩＮＰＵＴ  ＤＡＴＡ）を圧縮するための圧縮情報を生成する。
【００６３】
本実施形態では、このようにハッシュテーブル３０を利用して入力データ（ＩＮＰＵＴ  ＤＡＴＡ）に対する圧縮に成功した場合、キャッシュメモリ５０を利用した圧縮有無の判断を省略する（図６の順序図を参照）。
【００６４】
再び、図６を参照すると、入力データがハッシュヒットではない場合、ハッシュ衝突が生じたかを判断する（Ｓ１２０）。また、ハッシュ衝突が生じた場合、ハッシュテーブルの衝突カウンタを増加させる（Ｓ１２５）。
【００６５】
ここで、ハッシュ衝突とは、データ圧縮装置１に入力される入力データ（ＩＮＰＵＴ  ＤＡＴＡ）と前述した方法によりバッファメモリ４０から抽出した指示データとが異なる場合を意味する。すなわち、データ値は互いに異なるが、ハッシュ関数（Ｆｈａｓｈ）により生成したハッシュキーが互いに同じである場合、このようなハッシュ衝突が生じる。
【００６６】
例えば、今回はデータ入力装置１に入力データ（ＩＮＰＵＴ  ＤＡＴＡ）としてバッファメモリ（図４の４０を参照）内にインデックス４８によって指示されたＤ０，Ｄ１，Ｄ２，Ｄ３が入力されると仮定する。この際、ハッシュキー生成器１０によって生成されるデータＤ０，Ｄ１，Ｄ２，Ｄ３のハッシュキーは図７に図示するようにＫａであると仮定する。この際、制御部２０がハッシュキーＫａで図３に図示するハッシュテーブル３０を検索すると、この場合のインデックスは８であることが分かる。
【００６７】
一方、制御部２０がバッファメモリ（図４の４０を参照）に格納されたデータのうちインデックス８によって指示される指示データを抽出すると、これはデータＡ０，Ａ１，Ａ２，Ａ３であることが分かる。したがって、この場合には、入力データＤ０，Ｄ１，Ｄ２，Ｄ３と指示データＡ０，Ａ１，Ａ２，Ａ３が互いに同じではないため、ハッシュヒットではなく、ハッシュ衝突が生じる（仮に、入力データに対して生成されたハッシュキーがハッシュテーブル３０に存在しない場合（すなわち、Ｋｄと共に最初に生成されたハッシュキーである場合）は、本例示とは異なってハッシュヒットでもなく、ハッシュ衝突も生じない）。
【００６８】
したがって、制御部２０は、ハッシュキーＫａに対する衝突カウンタを１だけ増加させ、ハッシュキーＫａに対する衝突カウンタは３になる（図３に図示するハッシュテーブルでハッシュキーＫａに対する衝突カウンタは２であった）。このように増加した衝突カウンタはその後ハッシュテーブル３０の衝突カウンタフィールドに反映されるが、これについては後述する。
【００６９】
再び図６を参照すると、入力データがキャッシュヒット（ｃａｃｈｅ  ｈｉｔ）であるかを判断する（Ｓ１３０）。そして、入力データがキャッシュヒットである場合、キャッシュメモリを利用して圧縮情報を生成する（Ｓ１３５）。
【００７０】
入力データ（ＩＮＰＵＴ  ＤＡＴＡ）としてＤ０，Ｄ１，Ｄ２，Ｄ３が入力される場合、前述したハッシュテーブル３０を利用したデータ圧縮は失敗したため、キャッシュメモリ５０を利用してデータを圧縮できるのかを判断しなければならない。したがって、制御部２０は、入力データ（ＩＮＰＵＴ  ＤＡＴＡ）がキャッシュメモリ（例えば、図５の５０を参照）に存在するかを確認する。しかし、図５に図示するキャッシュメモリ５０にＤ０，Ｄ１，Ｄ２，Ｄ３が存在しないため、この場合、キャッシュヒットではない。したがって、この場合、制御部２０はキャッシュメモリを利用して入力データ（ＩＮＰＵＴ  ＤＡＴＡ）を圧縮することができない。
【００７１】
再び図６を参照すると、ハッシュキーに対する衝突カウンタがあらかじめ定めた臨界値（ｔｈｒｅｓｈｏｌｄ）以上であるかを判断する（Ｓ１４０）。そして、仮にハッシュキーに対する衝突カウンタがあらかじめ定めた臨界値以上である場合、キャッシュメモリをアップデートする（Ｓ１４５）。
【００７２】
入力データ（ＩＮＰＵＴ  ＤＡＴＡ）としてＤ０，Ｄ１，Ｄ２，Ｄ３が入力される場合、ハッシュキーＫａに対する衝突カウンタが３になることについて前述した。ここで、あらかじめ定めた臨界値が３（ｔｈｒｅｓｈｏｌｄ  ＝  ３）であると仮定すると、先立って衝突カウンタが１増加することによって、ハッシュキーＫａに対する衝突カウンタはあらかじめ定めた臨界値以上になる。したがって、制御部２０は図８に図示するようにキャッシュメモリ５０をアップデートする。この際、キャッシュメモリ５０にはハッシュ衝突と関連する入力データが格納される。この場合、バッファメモリ４０上でインデックス８によって指示されるデータＡ０，Ａ１，Ａ２，Ａ３とバッファメモリ４０上でインデックス４８によって指示されるデータＤ０，Ｄ１，Ｄ２，Ｄ３とがキャッシュメモリ５０にアップデートされる。
【００７３】
この際、このように新規データをキャッシュメモリ５０に追加しなければならないが、キャッシュメモリ５０で格納空間が不足する場合、本実施形態では参照カウンタフィールド（ＲＥＦＥＲＥＮＣＩＮＧ  ＣＯＵＮＴＥＲ）の値が最も小さいデータを削除し、そこに新規データを追加する。参照カウンタフィールド値が小さいということはキャッシュメモリ５０に格納されたデータを利用したデータ圧縮は成功確率が低いと判断できるからである。
【００７４】
再び図６を参照すると、制御部２０は入力データが入力ストリームの最後のデータであるかを判断する（Ｓ１５０）。判断結果、最後ではない場合、入力データに関する情報でハッシュテーブルをアップデートする（Ｓ１６０）。前述した入力データ（ＩＮＰＵＴ  ＤＡＴＡ）としてＤ０，Ｄ１，Ｄ２，Ｄ３が入力される例示において、データＤ０，Ｄ１，Ｄ２，Ｄ３は入力ストリームの最後ではないため（図４参照）、ハッシュテーブル３０に対するアップデートを行う。具体的には、図９に図示するようにハッシュキーＫａに対する衝突カウンタを１だけ増加させ、ハッシュキーＫａに対するインデックスを４８に変更する。
【００７５】
次に、データ入力装置１の入力データ（ＩＮＰＵＴ  ＤＡＴＡ）としてバッファメモリ（図４の４０）上のインデックス６４によって指示されるＡ０，Ａ１，Ａ２，Ａ３が入力されると仮定する。ハッシュキー生成器１０は入力データ（ＩＮＰＵＴ  ＤＡＴＡ）に対するハッシュキーとしてＫａを生成する（図２を参照）。ハッシュキーが生成されると、制御部２０は生成されたハッシュキーＫａでハッシュテーブル（図９参照）を検索して入力データ（ＩＮＰＵＴ  ＤＡＴＡ）がハッシュヒットであるかを判断する。しかし、先立って、ハッシュキーＫａに対するインデックスが４８に変更されたため、バッファメモリ（図４の４０を参照）から抽出した指示データはＤ０，Ｄ１，Ｄ２，Ｄ３となる。したがって、この場合入力データＡ０，Ａ１，Ａ２，Ａ３に対するハッシュヒットは生じない。一方、この場合、ハッシュ衝突が前と同様に生じたため、ハッシュキーＫａに対する衝突カウンタは４となる。
【００７６】
次に、制御部２０はキャッシュメモリ（図８の５０を参照）に入力データＡ０，Ａ１，Ａ２，Ａ３が存在するかを検索して入力データＡ０，Ａ１，Ａ２，Ａ３がキャッシュヒットであるかを判断する。この場合、先だってキャッシュメモリ（図８の５０を参照）がハッシュ衝突と関連するデータにアップデートされたため、キャッシュメモリ（図８の５０を参照）内に入力データＡ０，Ａ１，Ａ２，Ａ３が存在する。すなわち、制御部２０はキャッシュメモリ（図８の５０を参照）を検索して入力データＡ０，Ａ１，Ａ２，Ａ３のインデックスが８であることが分かる。制御部２０は、キャッシュメモリ（例えば、図８の５０を参照）から検索した入力データＡ０，Ａ１，Ａ２，Ａ３の位置情報（例えば、インデックス８）と長さ情報とを利用して圧縮情報を生成できるようになる。
【００７７】
一方、ハッシュキーＫａに対する衝突カウンタが４になったので、あらかじめ定めた臨界値（例えば、３）以上になる。したがって、制御部２０は図１０に図示するようにキャッシュメモリ５０をアップデートする。この際、キャッシュメモリ５０にはすでにハッシュ衝突と関連するデータ（Ａ０，Ａ１，Ａ２，Ａ３）、（Ｄ０，Ｄ１，Ｄ２，Ｄ３）が格納されているため、図示するように入力データＡ０，Ａ１，Ａ２，Ａ３の参照カウンタのみ増加させる。次いで、依然として入力データＡ０，Ａ１，Ａ２，Ａ３は入力ストリームの最後ではないため、ハッシュテーブル３０を図１１のようにアップデートする。図１１を参照すると、ハッシュキーＫａに対する衝突カウンタが４に増加し、インデックスフィールドが６４に変更されたことが分かる。
【００７８】
このように本実施形態によるデータ圧縮装置及び方法では、入力データ（ＩＮＰＵＴ  ＤＡＴＡ）を圧縮する際、ハッシュテーブル３０とキャッシュメモリ５０を何れも使用する。このようにハッシュテーブル３０とキャッシュメモリ５０をすべて使用してデータを圧縮する場合、次のような長所がある。
【００７９】
ハッシュテーブル３０のみを利用してデータ圧縮を行う場合、前述したようにハッシュ衝突が生じると、データ圧縮が不可能になる。すなわち、互いにハッシュ衝突関係にあるデータが互いに交互に入力データとして入力されるとデータ圧縮率が非常に低くなる。
【００８０】
このようなハッシュ衝突現象を防止するため、ハッシュキー値がさらに多様に生成されるようにハッシュ関数を変更する方法が考えられるが、ハッシュテーブルサイズはハードウェアの制限があるため、このような方法を採用することも簡単ではない。
【００８１】
しかし、本実施形態では前述したようにハッシュ衝突が生じた入力データを別途のキャッシュメモリ５０で管理するため、ハッシュ衝突が生じたデータが互いに交互に入力されるとしてもデータ圧縮率を高めることができる。すなわち、本実施形態ではデータを圧縮するため、ハッシュテーブル３０をディクショナリ（ｄｉｃｔｉｏｎａｒｙ）として使用するものの、ハッシュ衝突が生じたデータをキャッシュメモリ５０に格納し、これをサブ−ディクショナリ（ｓｕｂ−ｄｉｃｔｉｏｎａｒｙ）として使用することによってデータ圧縮率を高めることができる。また、本実施例では前述したようにハッシュ衝突回数が一定臨界値以上になるまでキャッシュメモリ５０をアップデートしないため、キャッシュメモリ５０に格納されるデータが限りなく増えることも防止できる。すなわち、キャッシュメモリ５０内の入力データを格納することに不要なライト作業（ｗｒｉｔｅ  ｏｐｅｒａｔｉｏｎｓ）が使用されない。
【００８２】
次に、図１、図１２Ａ及び図１２Ｂを参照して本発明の他の実施形態によるデータ圧縮方法について説明する。
【００８３】
図１２Ａ及び図１２Ｂは、本発明の他の実施形態によるデータ圧縮方法を説明するための順序図である。以下では、前述した実施形態と重複する内容はその説明を簡略にし、その差異点を中心に説明する。
【００８４】
先ず、図１２Ａを参照すると、入力データに対するハッシュキーを生成する（Ｓ２００）。また、生成されたハッシュキーに基づいて入力データがハッシュヒット（ｈａｓｈ  ｈｉｔ）であるかを判断する（Ｓ２１０）。判断結果、入力データがハッシュヒットである場合、ハッシュテーブルを利用して圧縮情報を生成する（Ｓ２１５）。そして、入力データがハッシュヒットではない場合、ハッシュ衝突が生じたかを判断する（Ｓ２２０）。その結果、ハッシュ衝突が生じた場合、ハッシュテーブルの衝突カウンタを増加させる（Ｓ２２５）。以上の動作は前述した実施形態と大きく変わらないため、その詳細な動作に関する説明は省略する。
【００８５】
次の図１２Ｂを参照すると、入力データがキャッシュヒット（ｃａｃｈｅ  ｈｉｔ）であるかを判断する（Ｓ２３０）。そして、入力データがキャッシュヒットである場合、入力データに対してすでに生成された圧縮情報があるかを確認する（Ｓ２３２）。その結果、すでに生成された圧縮情報がない場合、キャッシュメモリを利用して圧縮情報を生成する（Ｓ２３５）。
【００８６】
仮に、入力データに対してハッシュ衝突が生じず、先立って説明した段階でハッシュテーブル３０を利用して圧縮することができた場合、すでに生成された圧縮情報が存在するであろう。しかし、逆にキャッシュヒットが生じたが、すでに生成された圧縮情報がない場合、このような入力データはキャッシュメモリ５０を利用して圧縮することのみ可能であることを意味する。したがって、キャッシュヒットが生じたが、すでに生成された圧縮情報がなければ、制御部２０はキャッシュメモリ５０を利用して圧縮情報を生成する。
【００８７】
再び、図１２Ｂを参照すると、入力データがキャッシュヒットであり、入力データに対してすでに生成された圧縮情報がある場合、キャッシュメモリを利用して入力データを圧縮する際の圧縮率がハッシュテーブルを利用して入力データを圧縮する際の圧縮率より大きいかを確認する（Ｓ２３６）。その結果、キャッシュメモリを利用して入力データを圧縮する際の圧縮率がハッシュテーブルを利用して入力データを圧縮する際の圧縮率より大きい場合、圧縮情報をアップデートする（Ｓ２３８）。すなわち、ハッシュテーブルを利用して生成された既存の圧縮情報はキャッシュメモリを利用して生成した圧縮情報にアップデートする。
【００８８】
データを圧縮する過程にこのように入力データがハッシュヒットであると共にキャッシュヒットである場合が生じる。この際、本実施形態による制御部２０は両者間の圧縮率を比較して圧縮率が高い方法でデータを圧縮することによってデータ圧縮率を最大まで高めるという長所がある。
【００８９】
再び図１２Ｂを参照すると、ハッシュキーに対する衝突カウンタがあらかじめ定めた臨界値（ｔｈｒｅｓｈｏｌｄ）以上であるかを判断する（Ｓ２４０）。そして、ハッシュキーに対する衝突カウンタがあらかじめ定めた臨界値以上である場合、キャッシュメモリをアップデートする（Ｓ２４５）。次いで、入力データが入力ストリームの最後であるかを判断する（Ｓ２５０）。判断結果、最後ではない場合、ハッシュテーブルをアップデートする（Ｓ２６０）。以上の動作も先に説明した実施形態と大きく変わらないため、その詳細動作に関する説明は省略する。
【００９０】
以上では制御部２０が入力データに対してハッシュヒットであるかどうかを先に判断し、キャッシュヒットであるかどうかを後に判断する動作についてのみ説明したが、本発明がこのような例示に制限されるものではない。本発明の他のいくつかの実施形態で、制御部２０は以上で説明とは異なって入力データに対してキャッシュヒットであるかどうかを先に判断し、ハッシュヒットであるかどうかを後に判断するように実現され得る。
【００９１】
一方、先に説明した本実施形態によるデータ圧縮動作はオンザフライ（ｏｎ−ｔｈｅ−ｆｌｙ）方式により行われる。以下、図１３を参照してこれについてさらに具体的に説明する。
【００９２】
図１３は、本発明の実施形態によるデータ圧縮方法が行われるタイミングを説明するための図である。
【００９３】
図１３を参照すると、前述した本実施形態によるデータ圧縮動作は一つのシステムクロックサイクル内で同時に行われる。具体的には、先ず、第１システムクロックサイクルＴ１内では、第１入力データ（ＩＮＰＵＴ  ＤＡＴＡ１）に対するハッシュキー生成動作Ｐが行われる。
【００９４】
次いで、第２システムクロックサイクルＴ２内では、第２入力データ（ＩＮＰＵＴ  ＤＡＴＡ２）に対するハッシュキー生成動作Ｐと第１入力データ（ＩＮＰＵＴ  ＤＡＴＡ１）に対するハッシュヒット有無判断動作Ｑが同時に行われる。
【００９５】
次いで、第３システムクロックサイクルＴ３内では、第３入力データ（ＩＮＰＵＴ  ＤＡＴＡ３）に対するハッシュキー生成動作Ｐと第２入力データ（ＩＮＰＵＴ  ＤＡＴＡ２）に対するハッシュヒット有無判断動作Ｑと、第１入力データ（ＩＮＰＵＴ  ＤＡＴＡ１）に対するキャッシュヒット有無判断動作Ｒが同時に行われる。
【００９６】
次いで、第４システムクロックサイクルＴ４内では、第４入力データ（ＩＮＰＵＴ  ＤＡＴＡ４）に対するハッシュキー生成動作Ｐと第３入力データ（ＩＮＰＵＴ  ＤＡＴＡ３）に対するハッシュヒット有無判断動作Ｑと、第２入力データ（ＩＮＰＵＴ  ＤＡＴＡ２）に対するキャッシュヒット有無判断動作Ｒと、第１入力データ（ＩＮＰＵＴ  ＤＡＴＡ１）を圧縮情報でエンコードする動作Ｓが同時に行われる。
【００９７】
次いで、第５システムクロックサイクルＴ５内では、第５入力データ（ＩＮＰＵＴ  ＤＡＴＡ４）に対するハッシュキー生成動作Ｐと第４入力データ（ＩＮＰＵＴ  ＤＡＴＡ４）に対するハッシュヒット有無判断動作Ｑと、第３入力データ（ＩＮＰＵＴ  ＤＡＴＡ３）に対するキャッシュヒット有無判断動作Ｒと、第２入力データ（ＩＮＰＵＴ  ＤＡＴＡ２）を圧縮情報でエンコードする動作Ｓと、第１入力データ（ＩＮＰＵＴ  ＤＡＴＡ１）に対する圧縮情報を利用してハッシュテーブルをアップデートする動作Ｔが同時に行われる。
【００９８】
すなわち、本発明の実施形態によるデータ圧縮方法では、データ圧縮効率向上のため、前述した圧縮動作がオンザフライ（ｏｎ−ｔｈｅ−ｆｌｙ）方式により並列的に行われる。一方、ここで例示したデータ圧縮に必要な各動作（Ｐ〜Ｔ）は一つの一例に過ぎなく、並列的に行われる各動作がこのような例示的な動作（Ｐ〜Ｔ）に制限されるものではない。
【００９９】
再び、図１３を参照すると、データ圧縮動作がこのように行われるため、いくつかのシステムクロックサイクル（例えば、Ｔ５，Ｔ６）ではハッシュテーブル３０が同時に読み取り及び書き込みされなければならないことが分かる。具体的には、第５システムクロックサイクルＴ５内でハッシュテーブル３０は第１入力データ（ＩＮＰＵＴ  ＤＡＴＡ１）に対する圧縮情報にアップデートされなければならず（すなわち、書き込みされるべきである）、同時に第４入力データ（ＩＮＰＵＴ  ＤＡＴＡ４）に対するハッシュヒット有無を判断するため、読み取りされなければならない。したがって、本発明の実施形態によるデータ圧縮装置はこれら動作をサポートできる構造に設計する。
【０１００】
例えば、図１に図示するデータ圧縮装置１のハッシュテーブル３０は、一つのシステムクロックサイクル内で同時に読み取り及び書き込みが可能なようにＤＰＳＲＡＭ（Ｄｕａｌ  Ｐｏｒｔ  ＳＲＡＭ）で実現される。しかし、本発明がこれに制限されるものではなく、データ圧縮装置の実現方法はいくらでも変形できる。以下、図１４を参照して本発明の他の実施形態によるデータ圧縮装置について説明する。
【０１０１】
図１４は、本発明の他の実施形態によるデータ圧縮装置の例示的なブロック図である。図１４のデータ圧縮装置２はハッシュテーブル３１のプロビジョン（ｐｒｏｖｉｓｉｏｎ）及び動作特性以外は図１のデータ圧縮装置１と実質的に同じである。以下では、先に説明した実施形態と重複する内容はその説明を簡略化し、差異点を中心に説明する。
【０１０２】
図１４を参照すると、本発明の他の実施形態によるデータ圧縮装置２のハッシュテーブル３１は、第１ハッシュテーブル３１ａと第２ハッシュテーブル３１ｂとに区分して実現される。ここで、第１ハッシュテーブル３１ａと第２ハッシュテーブル３１ｂとは、例えば、ＳＰＳＲＡＭ（Ｓｉｎｇｌｅ  Ｐｏｒｔ  ＳＲＡＭ）で実現される。このようにハッシュテーブル３１がＳＰＳＲＡＭで実現される場合、データ圧縮装置２内でハッシュテーブル３１が占める面積が相対的に減り、データ圧縮装置２の小型化が可能な長所があり、データ圧縮装置２が高い周波数のシステムクロックで作動できるため、データ圧縮速度を向上できる。
【０１０３】
第１ハッシュテーブル３１ａと第２ハッシュテーブル３１ｂとは、一つのシステムクロックサイクルで互いに異なる動作を交互に行う。図１３に図示する例を参照してさらに具体的に説明すると、第５システムクロックサイクルＴ５内で第１ハッシュテーブル３１ａは第１入力データ（ＩＮＰＵＴ  ＤＡＴＡ１）に対する圧縮情報にアップデートされ（すなわち、書き込み）、第２ハッシュテーブル３１ｂは第４入力データ（ＩＮＰＵＴ  ＤＡＴＡ４）に対するハッシュヒット有無を判断するために読み取られる。
【０１０４】
進んで、第６システムクロックサイクルＴ６内で第２ハッシュテーブル３１ｂは第２入力データ（ＩＮＰＵＴ  ＤＡＴＡ１）に対する圧縮情報にアップデートされ（すなわち、書き込み）、第１ハッシュテーブル３１ａは第５入力データ（ＩＮＰＵＴ  ＤＡＴＡ５）に対するハッシュヒット有無を判断するために読み取られる。
【０１０５】
すなわち、第１ハッシュテーブル３１ａには奇数番目の入力データ１，３，５に関する読み取り及び書き込み動作が行われ、第２ハッシュテーブル３１ｂには偶数番目の入力データ２，４に関する読み取り及び書き込み動作が行われるが、第１ハッシュテーブル３１ａに対する読み取り動作と第２ハッシュテーブル３１ｂに対する書き込み動作が一つのシステムクロックサイクル内で同時に行われ得るため、本実施形態によるデータ圧縮装置２は図１３に図示する並列的に行われるデータ圧縮動作を円滑に行うことがきる。
【０１０６】
次に、図１５ないし図１８を参照して本発明のいくつかの実施形態によるメモリシステム及びその応用例について説明する。
【０１０７】
図１５は、本発明のいくつかの実施形態によるメモリシステムを説明するためのブロック図である。図１６は、図１５に図示するコントローラの詳細ブロック図である。図１７は、図１５のメモリシステムの応用例を図示するブロック図である。図１８は、図１７を参照して説明したメモリシステムを含むコンピュータシステムを図示するブロック図である。
【０１０８】
図１５を参照すると、メモリシステム１０００は不揮発性メモリ装置１１００及びコントローラ１２００を含む。
【０１０９】
不揮発性メモリ装置１１００は、例えば、ＮＡＮＤまたはＮＯＲで構成されたフラッシュメモリ装置である。しかし、本発明がこのような例示に制限されるものではなく、本発明のいくつかの実施形態で不揮発性メモリ装置１１００は、ＰＲＡＭ（Ｐｈａｓｅ−ｃｈａｎｇｅ  ＲＡＭ）、ＦＲＡＭ（登録商標）（Ｆｅｒｒｏｅｌｅｃｔｒｉｃ  ＲＡＭ）、ＲＲＡＭ（登録商標）（Ｒｅｓｉｓｔｉｖｅ  ＲＡＭ）のうち何れか一つである。
【０１１０】
コントローラ１２００はホスト（ＨＯＳＴ）及び不揮発性メモリ装置１１００に連結される。ホストからの要請に応答し、コントローラ１２００は不揮発性メモリ装置１１００をアクセスするように構成される。例えば、コントローラ１２００は不揮発性メモリ装置１１００の読み取り、書き込み、消去、及び背景（ｂａｃｋｇｒｏｕｎｄ）動作を制御するように構成される。特に、本実施形態で、コントローラ１２００はホストから入力データを提供され、入力データを圧縮した出力データを出力する。
【０１１１】
一方、コントローラ１２００は不揮発性メモリ装置１１００とホストとの間にインターフェースを提供するように構成される。また、コントローラ１２００は不揮発性メモリ装置１１００を制御するためのファームウェア（ｆｉｒｍｗａｒｅ）を駆動するように構成される。例示的に、コントローラ１２００はＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、中央処理処置（ｃｅｎｔｒａｌ  ｐｒｏｃｅｓｓｉｎｇ  ｕｎｉｔ）、ホストインターフェース（ｈｏｓｔ  ｉｎｔｅｒｆａｃｅ）、及びメモリインターフェース（ｍｅｍｏｒｙ  ｉｎｔｅｒｆａｃｅ）のようなよく知られている構成要素をさらに含む。
【０１１２】
以下図１６を参照して本発明のいくつかの実施形態によるコントローラ１２００の構成についてさらに具体的に説明する。
【０１１３】
図１６を参照すると、コントローラ１２００はホストインターフェース１２１０、ＲＡＭ１２４０、データ圧縮装置１２３０、ＥＣＣ１２５０、メモリインターフェース１２６０及び中央処理処置１２２０を含む。
【０１１４】
ホストは、動作命令（例えば、読み取り命令、書き込み命令、または消去命令など）、アドレス及びデータをホストインターフェース１２１０に出力する。ホストインターフェース１２１０はホストとコントローラ１２００との間のデータ交換を行うためのプロトコルを含む。
【０１１５】
例示的に、ホストインターフェース１２１０はＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）プロトコル、ＭＭＣ（ｍｕｌｔｉｍｅｄｉａ  ｃａｒｄ）プロトコル、ＰＣＩ（ｐｅｒｉｐｈｅｒａｌ  ｃｏｍｐｏｎｅｎｔ  ｉｎｔｅｒｃｏｎｎｅｃｔｉｏｎ）プロトコル、ＰＣＩ−Ｅ（ＰＣＩ−ｅｘｐｒｅｓｓ）プロトコル、ＡＴＡ（Ａｄｖａｎｃｅｄ  Ｔｅｃｈｎｏｌｏｇｙ  Ａｔｔａｃｈｍｅｎｔ）プロトコル、Ｓｅｒｉａｌ−ＡＴＡプロトコル、Ｐａｒａｌｌｅｌ−ＡＴＡプロトコル、ＳＣＳＩ（ｓｍａｌｌ  ｃｏｍｐｕｔｅｒ  ｓｍａｌｌ  ｉｎｔｅｒｆａｃｅ）プロトコル、ＥＳＤＩ（ｅｎｈａｎｃｅｄ  ｓｍａｌｌ  ｄｉｓｋ  ｉｎｔｅｒｆａｃｅ）プロトコル、及びＩＤＥ（Ｉｎｔｅｇｒａｔｅｄ  Ｄｒｉｖｅ  Ｅｌｅｃｔｒｏｎｉｃｓ）プロトコルなどのような多様なインターフェースプロトコルのうち少なくとも一つで構成される。
【０１１６】
ＲＡＭ１２４０は、中央処理処置（ＣＰＵ）１２２０の動作メモリとして使用されてもよく、ＤＲＡＭまたはＳＲＡＭなどで実現される。本発明のいくつかの実施形態で、ＲＡＭ１２４０は前述したバッファメモリ（図１の４０を参照）として使用されてもく、ホストから出力されたデータを臨時に格納できる。
【０１１７】
データ圧縮装置１２３０はホストから入力される入力データを圧縮して不揮発性メモリ装置１１００に提供するかまたはホストから入力される入力データを不揮発性メモリ装置１１０にバイパスする。本実施形態で、このような圧縮装置１２３０では前述した本発明の実施形態によるデータ圧縮装置１，２が採用される。
【０１１８】
ＥＣＣ１２５０は、不揮発性メモリ装置１１００から読み出されたデータまたは不揮発性メモリ装置１１００に書き込まれるデータに含まれる欠陥を検出及び訂正する。ＥＣＣ１２５０はエラー訂正コードを利用して不揮発性メモリ装置１１００から読み出されたデータのエラーを検出し、訂正するように構成される。図１６は、ＥＣＣ１２５０がコントローラ１２００の構成要素として提供されたものを図示するが、本発明がこれに制限されるものではない。本発明の他のいくつかの実施形態で、ＥＣＣ１２５０は不揮発性メモリ装置１１００の構成要素として提供され得る。
【０１１９】
メモリインターフェース１２６０は不揮発性メモリ装置１１００とインターフェーシングする。例えば、メモリインターフェース１２６０はＮＡＮＤインターフェースまたはＮＯＲインターフェースを含む。
【０１２０】
中央処理処置１２２０は、コントローラ１２００のデータ交換のための種々の制御動作を行う。図面に図示していないが、本発明のいくつかの実施形態によるメモリシステム１０００はホストとのインターフェーシングのため、コードデータを格納するＲＯＭ（図示せず）などがさらに提供され得ることはこの分野の通常的な知識を有する者に自明である。
【０１２１】
再び図１５を参照すると、コントローラ１２００及び不揮発性メモリ装置１１００は一つの半導体装置に集積される。例示的に、コントローラ１２００及び不揮発性メモリ装置１１００は一つの半導体装置に集積され、メモリカードを構成する。例えば、コントローラ１２００及び不揮発性メモリ装置１１００は、一つの半導体装置に集積され、ＰＣカード（ＰＣＭＣＩＡ、ｐｅｒｓｏｎａｌ  ｃｏｍｐｕｔｅｒ  ｍｅｍｏｒｙ  ｃａｒｄ  ｉｎｔｅｒｎａｔｉｏｎａｌ  ａｓｓｏｃｉａｔｉｏｎ）、コンパクトフラッシュ（登録商標）カード（ＣＦ）、スマートメディアカード（ＳＭ、ＳＭＣ）、メモリスティック、マルチメディアカード（ＭＭＣ、ＲＳ−ＭＭＣ、ＭＭＣｍｉｃｒｏ）、ＳＤカード（ＳＤ、ｍｉｎｉＳＤ、ｍｉｃｒｏＳＤ、ＳＤＨＣ）、ユニバーサルフラッシュ記憶装置（ＵＦＳ）などのようなメモリカードを構成する。
【０１２２】
本発明のいくつかの実施形態で、コントローラ１２００及び不揮発性メモリ装置１１００は一つの半導体装置に集積され、半導体ドライブ（ＳＳＤ、Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）を構成する。半導体ドライブ（ＳＳＤ）は半導体メモリにデータを格納するように構成される格納装置を備える。メモリシステム１０００が半導体ドライブ（ＳＳＤ）として利用される場合、メモリシステム１０００に連結されたホストの動作速度が画期的に改善される。
【０１２３】
他の例として、メモリシステム１０００は、コンピュータ、ＵＭＰＣ（Ｕｌｔｒａ  ＭｏｂｉｌｅＰＣ）、ワークステーション、ネットブック（ｎｅｔ−ｂｏｏｋ）、ＰＤＡ（Ｐｅｒｓｏｎａｌ  Ｄｉｇｉｔａｌ  Ａｓｓｉｓｔａｎｔｓ）、ポータブル（ｐｏｒｔａｂｌｅ）コンピュータ、ウェブタブレット（ｗｅｂ  ｔａｂｌｅｔ）、無線電話機（ｗｉｒｅｌｅｓｓ  ｐｈｏｎｅ）、モバイルフォン（ｍｏｂｉｌｅ  ｐｈｏｎｅ）、スマートフォン（ｓｍａｒｔ  ｐｈｏｎｅ）、ｅ−ブック（ｅ−ｂｏｏｋ）、ＰＭＰ（ｐｏｒｔａｂｌｅ  ｍｕｌｔｉｍｅｄｉａ  ｐｌａｙｅｒ）、携帯用ゲーム機、ナビゲーション（ｎａｖｉｇａｔｉｏｎ）装置、ブラックボックス（ｂｌａｃｋ  ｂｏｘ）、デジタルカメラ（ｄｉｇｉｔａｌ  ｃａｍｅｒａ）、３次元テレビ（３−ｄｉｍｅｎｓｉｏｎａｌ  ｔｅｌｅｖｉｓｉｏｎ）、デジタルオーディオレコーダー（ｄｉｇｉｔａｌ  ａｕｄｉｏ  ｒｅｃｏｒｄｅｒ）、デジタルオーディオプレーヤー（ｄｉｇｉｔａｌ  ａｕｄｉｏ  ｐｌａｙｅｒ）、デジタル画像レコーダー（ｄｉｇｉｔａｌ  ｐｉｃｔｕｒｅ  ｒｅｃｏｒｄｅｒ）、デジタル画像プレーヤー（ｄｉｇｉｔａｌ  ｐｉｃｔｕｒｅ  ｐｌａｙｅｒ）、デジタル動画レコーダー（ｄｉｇｉｔａｌ  ｖｉｄｅｏ  ｒｅｃｏｒｄｅｒ）、デジタル動画プレーヤー（ｄｉｇｉｔａｌ  ｖｉｄｅｏ  ｐｌａｙｅｒ）、情報を無線環境で送受信できる装置、ホームネットワークを構成する多様な電子装置のうち一つ、コンピューターネットワークを構成する多様な電子装置のうち一つ、テレマティクスネットワークを構成する多様な電子装置のうち一つ、ＲＦＩＤ装置、またはコンピュータシステムを構成する多様な構成要素のうち一つなどのような電子装置の多様な構成要素のうち一つとして提供される。
【０１２４】
例示的には、不揮発性メモリ装置１１００またはメモリシステム１０００は多様な形態のパッケージで実装される。例えば、不揮発性メモリ装置１１００またはシステム１０００はＰａｃｋａｇｅ  ｏｎ  Ｐａｃｋａｇｅ（ＰｏＰ）、Ｂａｌｌ  ｇｒｉｄ  ａｒｒａｙｓ（ＢＧＡｓ）、Ｃｈｉｐ  ｓｃａｌｅ  ｐａｃｋａｇｅｓ（ＣＳＰｓ）、Ｐｌａｓｔｉｃ  Ｌｅａｄｅｄ  Ｃｈｉｐ  Ｃａｒｒｉｅｒ（ＰＬＣＣ）、Ｐｌａｓｔｉｃ  Ｄｕａｌ  Ｉｎ  Ｌｉｎｅ  Ｐａｃｋａｇｅ（ＰＤＩＰ）、Ｄｉｅ  ｉｎ  Ｗａｆｆｌｅ  Ｐａｃｋ、Ｄｉｅ  ｉｎ  Ｗａｆｅｒ  Ｆｏｒｍ、Ｃｈｉｐ  Ｏｎ  Ｂｏａｒｄ（ＣＯＢ）、Ｃｅｒａｍｉｃ  Ｄｕａｌ  Ｉｎ  Ｌｉｎｅ  Ｐａｃｋａｇｅ（ＣＥＲＤＩＰ）、Ｐｌａｓｔｉｃ  Ｍｅｔｒｉｃ  Ｑｕａｄ  Ｆｌａｔ  Ｐａｃｋ（ＭＱＦＰ）、Ｔｈｉｎ  Ｑｕａｄ  Ｆｌａｔｐａｃｋ（ＴＱＦＰ）、Ｓｍａｌｌ  Ｏｕｔｌｉｎｅ（ＳＯＩＣ）、Ｓｈｒｉｎｋ  Ｓｍａｌｌ  Ｏｕｔｌｉｎｅ  Ｐａｃｋａｇｅ（ＳＳＯＰ）、Ｔｈｉｎ  Ｓｍａｌｌ  Ｏｕｔｌｉｎｅ（ＴＳＯＰ）、Ｔｈｉｎ  Ｑｕａｄ  Ｆｌａｔｐａｃｋ（ＴＱＦＰ）、Ｓｙｓｔｅｍ  Ｉｎ  Ｐａｃｋａｇｅ（ＳＩＰ）、Ｍｕｌｔｉ  Ｃｈｉｐ  Ｐａｃｋａｇｅ（ＭＣＰ）、Ｗａｆｅｒ−ｌｅｖｅｌ  Ｆａｂｒｉｃａｔｅｄ  Ｐａｃｋａｇｅ（ＷＦＰ）、Ｗａｆｅｒ−Ｌｅｖｅｌ  Ｐｒｏｃｅｓｓｅｄ  Ｓｔａｃｋ  Ｐａｃｋａｇｅ（ＷＳＰ）などのような方式でパッケージ化して実装される。
【０１２５】
次の図１７を参照すると、メモリシステム２０００は不揮発性メモリ装置２１００及びコントローラ２２００を含む。不揮発性メモリ装置２１００は複数の不揮発性メモリチップを含む。複数の不揮発性メモリチップは複数のグループに分割される。複数の不揮発性メモリチップの各グループは一つの共通チャンネルを介してコントローラ２２００と通信するように構成される。例えば、複数の不揮発性メモリチップは第１ないし第ｋチャンネル（ＣＨ１〜ＣＨｋ）を介してコントローラ２２００と通信することが図示されている。
【０１２６】
図１７で、一つのチャンネルに複数の不揮発性メモリチップが接続するものと図示している。しかし、一つのチャンネルに一つの不揮発性メモリチップが接続するようにメモリシステム２０００が変形され得ることが理解できるであろう。
【０１２７】
次の図１８を参照すると、コンピュータシステム３０００は中央処理装置（ＣＰＵ）３１００、ＲＭＡ３２００（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ユーザインターフェース３３００、電源３４００、及びメモリシステム２０００を含む。
【０１２８】
メモリシステム２０００はシステムバス３５００を介して中央処理処置３１００、ＲＡＭ３２００、ユーザインターフェース３３００、及び電源３４００に電気的に接続する。ユーザインターフェース３３００を介して提供されるかまたは中央処理装置３１００によって処理されたデータはメモリシステム２０００に格納される。
【０１２９】
図１８で、不揮発性メモリ装置２１００はコントローラ２２００を介してシステムバス３５００に接続することが図示されている。しかし、不揮発性メモリ装置２１００はシステムバス３５００に直接接続するように構成される。
【０１３０】
図１８で、図１７を参照して説明したメモリシステム２０００が提供されることが図示されている。しかし、メモリシステム２０００は図１５を参照して説明したメモリシステム１０００に代替され得る。
【０１３１】
例示的には、コンピュータシステム３０００は、図１５及び図１７を参照して説明したメモリシステム１０００，２０００をすべて含むように構成される。
【０１３２】
図１９及び図２０は、本発明のいくつかの実施形態によるメモリシステム及びコンピュータシステムを適用できる例示的な電子装置を説明するための図である。
【０１３３】
図１９は、タブレットＰＣであり、図２０は、ノートブックを図示する。本発明の実施形態によるメモリシステム１０００，２０００及びコンピュータシステム３０００のうち少なくとも一つは図示するタブレットＰＣやノートブックなどに使用され得る。本発明のいくつかの実施形態によるメモリシステム１０００、２０００及びコンピュータシステム３０００は例示していない他の電子装置にも適用され得るは当業者に自明である。
【０１３４】
以上添付する図面を参照して本発明の実施形態について説明したが、本発明は、上記実施形態に限定されるものではなく、互いに異なる多様な形態で製造され得、本発明が属する技術分野で通常の知識を有する者は、本発明の技術的思想や必須の特徴を変更しない範囲で他の具体的な形態で実施され得ることを理解できる。したがって、上記実施形態はすべての面で例示的なものであり、限定的なものではないと理解しなければならない。
【符号の説明】
【０１３５】
１０    ハッシュキー生成器
２０    制御部
３０    ハッシュテーブル
４０    バッファメモリ
５０    キャッシュメモリ
６０    エンコーダ
【図１】
2014082762.tif 000003
【図２】
2014082762.tif 000004
【図３】
2014082762.tif 000005
【図４】
2014082762.tif 000006
【図５】
2014082762.tif 000007
【図６】
2014082762.tif 000008
【図７】
2014082762.tif 000009
【図８】
2014082762.tif 000010
【図９】
2014082762.tif 000011
【図１０】
2014082762.tif 000012
【図１１】
2014082762.tif 000013
【図１２Ａ】
2014082762.tif 000014
【図１２Ｂ】
2014082762.tif 000015
【図１４】
2014082762.tif 000016
【図１５】
2014082762.tif 000017
【図１６】
2014082762.tif 000018
【図１７】
2014082762.tif 000019
【図１８】
2014082762.tif 000020
【図１９】
2014082762.tif 000021
【図２０】
2014082762.tif 000022
【図１３】
2014082762.tif 000023