(57)【特許請求の範囲】
【請求項１】
データ圧縮装置において、
入力バッファに伝送されるデータを分析し、該分析結果に基づいて分析コードを生成させるデータパターン分析器と、
前記分析コードに基づいて、前記入力バッファから出力された前記データを選択的に圧縮するデータ圧縮管理器と、  を含み、
前記データパターン分析器は、前記データに含まれた複数のシンボルのそれぞれの頻度数をカウントし、該カウントされた頻度数の最大頻度数と最小頻度数とのうちの何れか１つと基準値との比較結果に基づいて、前記分析コードを生成させる
ことを特徴とするデータ圧縮装置。
【請求項２】
前記データパターン分析器は、前記データに含まれた複数のシンボルのそれぞれの頻度数をカウントし、前記複数のシンボルのそれぞれにコードワードを割り当て、閾値と前記データの圧縮された後の予測サイズとの比較結果に基づいて、前記分析コードを生成させ、
前記予測サイズは、前記複数のシンボルのそれぞれの前記頻度数と前記複数のシンボルのそれぞれに割り当てられた前記コードワードのビット数とに基づいて計算される
ことを特徴とする請求項１に記載のデータ圧縮装置。
【請求項３】
前記データパターン分析器は、
前記データのヘッダに含まれ、前記データの圧縮の有無を指示する指示ビットに基づいて制御信号を出力するヘッダ分析器と、
活性化された前記制御信号に応答してイネーブルされ、前記データに含まれた複数のシンボルのそれぞれの頻度数をカウントし、前記複数のシンボルのそれぞれにコードワードを割り当て、閾値と前記データの圧縮された後の予測サイズとの比較結果に基づいて、前記分析コードを生成させる予測器と、を含み、
前記予測サイズは、前記複数のシンボルのそれぞれの前記頻度数と前記複数のシンボルのそれぞれに割り当てられた前記コードワードのビット数とに基づいて計算される
ことを特徴とする請求項１に記載のデータ圧縮装置。
【請求項４】
前記データパターン分析器は、
前記データに含まれた複数のシンボルのそれぞれの頻度数をカウントし、前記複数のシンボルのそれぞれにコードワードを割り当てるパターン分析器と、
前記パターン分析器から出力された前記複数のシンボルのそれぞれの前記頻度数と前記複数のシンボルのそれぞれに割り当てられた前記コードワードを受信し、閾値と前記データの圧縮された後の予測サイズとの比較結果に基づいて、前記分析コードを生成させる予測器と、を含み、
前記予測サイズは、前記複数のシンボルのそれぞれの前記頻度数と前記複数のシンボルのそれぞれに割り当てられた前記コードワードのビット数とに基づいて計算される
ことを特徴とする請求項１に記載のデータ圧縮装置。
【請求項５】
前記データ圧縮管理器は、
前記分析コードを保存するためのメモリと、
前記入力バッファから出力された前記データを圧縮し、圧縮データを出力するプロセッサと、
前記メモリに保存された前記分析コードに基づいて、前記入力バッファから出力された前記データを不揮発性メモリ装置と前記プロセッサとのうちの何れか１つに出力する選択器と、を含む
ことを特徴とする請求項１に記載のデータ圧縮装置。
【請求項６】
前記プロセッサは、前記入力バッファから出力された前記データの各シンボルを順次に圧縮し、以前に圧縮されたシンボルと同じシンボルは圧縮せず、シンボルの間の関係を表わす情報を出力する
ことを特徴とする請求項５に記載のデータ圧縮装置。
【請求項７】
不揮発性メモリ装置と、
バッファされたデータを選択的に圧縮するデータ圧縮装置と、を含み、
前記データ圧縮装置は、
前記データをバッファリングする入力バッファと、
前記データが、前記入力バッファに伝送される間に、前記データを分析し、前記データの分析結果に基づいて分析コードを生成させるデータパターン分析器と、
前記分析コードに基づいて、前記バッファされたデータを選択的に圧縮するデータ圧縮管理器と、を含み、
前記データパターン分析器は、前記データに含まれた複数のシンボルのそれぞれの頻度数をカウントし、該カウントされた頻度数の最大頻度数と最小頻度数とのうちの何れか１つと基準値との比較結果に基づいて、前記分析コードとして出力する
ことを特徴とするデータ処理装置。
【請求項８】
前記データパターン分析器は、前記データに含まれた複数のシンボルのそれぞれの頻度数をカウントし、前記複数のシンボルのそれぞれにコードワードを割り当て、閾値と前記データの圧縮された後の予測サイズとの比較結果に基づいて、前記分析コードを生成させ、
前記予測サイズは、前記複数のシンボルのそれぞれの前記頻度数と前記複数のシンボルのそれぞれに割り当てられた前記コードワードのビット数とに基づいて計算される
ことを特徴とする請求項７に記載のデータ処理装置。
【請求項９】
前記データ圧縮管理器は、
前記分析コードを保存するためのメモリと、
前記バッファされたデータを圧縮し、前記圧縮データを出力するプロセッサと、
前記メモリに保存された前記分析コードに基づいて、前記バッファされたデータを前記不揮発性メモリ装置と前記プロセッサとのうちの何れか１つに出力する選択器と、を含む
ことを特徴とする請求項７に記載のデータ処理装置。
【請求項１０】
前記データ処理装置は、ＳＳＤ（ｓｏｌｉｄ  ｓｔａｔｅ  ｄｒｉｖｅ）である
ことを特徴とする請求項７に記載のデータ処理装置。
【請求項１１】
前記データ圧縮装置は、前記不揮発性メモリ装置を制御するメモリコントローラの内部に集積された
ことを特徴とする請求項７に記載のデータ処理装置。
【請求項１２】
データ圧縮装置において、
データのパターンと、前記データのヘッダに含まれた指示ビットの値のうちの１つに基づいて、前記データを選択的に圧縮するデータ圧縮管理器とを含み、前記パターンと前記指示ビットのそれぞれは、前記データが圧縮データであるか否かを指示し、
前記データ圧縮装置は、前記データが、ヘッダ情報を含むか否かを決定するデータパターン分析器をさらに含み、前記データが、前記ヘッダ情報を含む時、前記データ圧縮管理器は、前記指示ビットに基づいて、前記データを選択的に圧縮し、
前記データが、前記ヘッダ情報を含まない時、前記データ圧縮管理器は、前記データのパターンに基づいて、前記データを選択的に圧縮し、
前記データが、前記ヘッダ情報を含まない時、前記データパターン分析器は、前記データに含まれた各シンボルの頻度数をカウントし、該カウントされた頻度数のうちの最大頻度数と最小頻度数とのうちの１つと基準値とを比較し、前記データ圧縮管理器は、比較結果に基づいて、前記データを選択的に圧縮する
ことを特徴とするデータ圧縮装置。
【請求項１３】
データ圧縮装置において、
データのパターンと、前記データのヘッダに含まれた指示ビットの値のうちの１つに基づいて、前記データを選択的に圧縮するデータ圧縮管理器とを含み、前記パターンと前記指示ビットのそれぞれは、前記データが圧縮データであるか否かを指示し、
前記データ圧縮装置は、前記データが、ヘッダ情報を含むか否かを決定するデータパターン分析器をさらに含み、前記データが、前記ヘッダ情報を含む時、前記データ圧縮管理器は、前記指示ビットに基づいて、前記データを選択的に圧縮し、
前記データが、前記ヘッダ情報を含まない時、前記データ圧縮管理器は、前記データのパターンに基づいて、前記データを選択的に圧縮し、
前記データが、前記ヘッダ情報を含まない時、前記データパターン分析器は、前記データに含まれた各シンボルの頻度数をカウントし、前記複数のシンボルのそれぞれにコードワードを割り当て、前記複数のシンボルのそれぞれの前記頻度数と前記複数のシンボルのそれぞれに割り当てられた前記コードワードのビット数とに基づいて、前記データの圧縮された後のサイズを予測し、前記予測したサイズと閾値とを比較し、前記データ圧縮管理器は、前記予測したサイズと前記閾値との比較結果に基づいて、前記データを選択的に圧縮する
ことを特徴とするデータ圧縮装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施例は、データ圧縮技術に係り、特に、データを分析し、該分析結果によって、前記データの圧縮の有無を決定することができるデータ圧縮装置、その動作方法、及びそれを含むデータ処理装置に関する。
【背景技術】
【０００２】
データ圧縮は、データをさらに小さな保存空間に効率的に保存するための技術または前記技術の実際の適用を意味する。従来のデータの圧縮は、エンコーディング（ｅｎｃｏｄｉｎｇ）過程とデコーディング（ｄｅｃｏｄｉｎｇ）過程とを含む。エンコーディング過程の間に、データのサイズは減少する。デコーディング過程の間にエンコードされたデータ（ｅｎｃｏｄｅｄ  ｄａｔａ）は、元のデータ（ｏｒｉｇｉｎａｌ  ｄａｔａ）に復元される。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
本発明が解決しようとする技術的な課題は、データ圧縮時間を減少させるために、データが入力バッファに伝送される途中で、前記データを分析し、該分析結果によって、前記データの圧縮の有無を決定することができるデータ圧縮方法と該方法を行う装置とを提供するところにある。
【課題を解決するための手段】
【０００４】
本発明の実施例によるデータを圧縮する方法は、分析器を用いて、前記データの圧縮の有無を決定するために、前記データを分析する段階と、前記データが入力バッファでバッファリングされる間に分析結果を生成させる段階と、前記分析結果に基づいてバッファされたデータ（ｂｕｆｆｅｒｅｄ  ｄａｔａ）を選択的に圧縮する段階と、を含む。
【０００５】
実施例によって、前記データを分析する段階は、前記データのヘッダ（ｈｅａｄｅｒ）に含まれ、前記データの圧縮の有無を指示する指示ビットを分析し、前記分析結果は、前記指示ビットの分析結果に基づいて生成される。他の実施例によって、前記データを分析する段階は、前記データに含まれた複数のシンボル（ｓｙｍｂｏｌｓ）のそれぞれの頻度数（ｆｒｅｑｕｅｎｃｙ）をカウント（ｃｏｕｎｔ）する段階と、カウントされた頻度数の最大頻度数（ｍａｘｉｍｕｍ  ｆｒｅｑｕｅｎｃｙ）と最小頻度数（ｍｉｎｉｍｕｍ  ｆｒｗｑｕｅｎｃｙ）とのうちの何れか１つと基準値とを比較する段階と、を含み、前記分析結果は、比較結果に基づいて生成される。
【０００６】
また他の実施例によって、前記データを分析する段階は、前記データに含まれた複数のシンボルのそれぞれの頻度数をカウントする段階と、前記複数のシンボルのそれぞれにコードワード（ｃｏｄｅｗｏｒｄ）を割り当てる段階と、前記複数のシンボルのそれぞれの前記頻度数と前記複数のシンボルのそれぞれに割り当てられた前記コードワードのビット数とに基づいて、圧縮される前記データの予測サイズ（ｅｓｔｉｍａｔｅｄ  ｓｉｚｅ）を計算する段階と、前記予測サイズと基準データのサイズとを比較する段階と、を含み、前記分析結果は、比較結果に基づいて生成される。
【０００７】
さらに他の実施例によって、前記データを分析する段階は、前記データのヘッダに含まれ、前記データの圧縮の有無を指示する指示ビットを分析する段階と、前記指示ビットの分析結果に基づいて、前記データに含まれた複数のシンボルのそれぞれの頻度数をカウントする段階と、カウントされた頻度数の最大頻度数と最小頻度数とのうちの何れか１つと基準値とを比較する段階と、を含み、前記分析結果は、比較結果に基づいて生成される。
【０００８】
前記バッファされたデータを選択的に圧縮する段階は、前記分析結果をメモリに保存する段階と、前記メモリに保存された前記分析結果に基づいて、プロセッサ（ｐｒｏｃｅｓｓｏｒ）を用いて、前記バッファされたデータを選択的に圧縮する段階と、を含む。
【０００９】
前記データについての分析は、前記入力バッファから前記バッファされたデータが出力される以前に完了する。
【００１０】
本発明の一実施例によるデータ圧縮装置は、入力バッファに伝送されるデータを分析し、該分析結果に基づいて分析コードを生成させるデータパターン分析器と、前記分析コードに基づいて、前記入力バッファから出力された前記データを選択的に圧縮するデータ圧縮管理器と、を含む。
【００１１】
実施例によって、前記データパターン分析器は、前記データのヘッダに含まれ、前記データの圧縮の有無を表わす指示ビットを分析し、前記指示ビットの分析結果に基づいて、前記分析コードを生成させる。
【００１２】
他の実施例によって、前記データパターン分析器は、前記データに含まれた複数のシンボルのそれぞれの頻度数をカウントし、該カウントされた頻度数の最大頻度数と最小頻度数とのうちの何れか１つと基準値との比較結果に基づいて、前記分析コードを生成させる。
【００１３】
また他の実施例によって、前記データパターン分析器は、前記データに含まれた複数のシンボルのそれぞれの頻度数をカウントし、前記複数のシンボルのそれぞれにコードワードを割り当て、基準データのサイズと圧縮される前記データの予測サイズとの比較結果に基づいて、前記分析コードを生成させ、前記予測サイズは、前記複数のシンボルのそれぞれの前記頻度数と前記複数のシンボルのそれぞれに割り当てられた前記コードワードのビット数とに基づいて計算される。
【００１４】
さらに他の実施例によって、前記データパターン分析器は、前記データのヘッダに含まれ、前記データの圧縮の有無を指示する指示ビットに基づいて制御信号を出力するヘッダ分析器と、活性化された前記制御信号に応答してイネーブル（ｅｎａｂｌｅ）され、前記データに含まれた複数のシンボルのそれぞれの頻度数をカウントし、前記複数のシンボルのそれぞれにコードワードを割り当て、基準データのサイズと圧縮される前記データの予測サイズとの比較結果に基づいて、前記分析コードを生成させ、前記予測サイズは、前記複数のシンボルのそれぞれの前記頻度数と前記複数のシンボルのそれぞれに割り当てられた前記コードワードのビット数とに基づいて計算される。
【００１５】
さらに他の実施例によって、前記データパターン分析器は、前記データに含まれた複数のシンボルのそれぞれの頻度数をカウントし、前記複数のシンボルのそれぞれにコードワードを割り当てるパターン分析器と、前記パターン分析器から出力された前記複数のシンボルのそれぞれの前記頻度数と前記複数のシンボルのそれぞれに割り当てられた前記コードワードを受信し、基準データのサイズと圧縮される前記データの予測サイズとの比較結果に基づいて、前記分析コードを生成させ、前記予測サイズは、前記複数のシンボルのそれぞれの前記頻度数と前記複数のシンボルのそれぞれに割り当てられた前記コードワードのビット数とに基づいて計算される。
【００１６】
前記データ圧縮管理器は、前記分析コードを保存するためのメモリと、前記入力バッファから出力された前記データを圧縮し、圧縮データを出力するプロセッサと、前記メモリに保存された前記分析コードに基づいて、前記入力バッファから出力された前記データを不揮発性メモリ装置と前記プロセッサとのうちの何れか１つに出力する選択器と、を含む。前記プロセッサは、前記入力バッファから出力された前記データの各シンボルを順次に圧縮し、前記データ内で圧縮されない重複される複数のシンボルの間の関係を指示する情報を出力する。
【００１７】
本発明の実施例によるデータ処理装置は、不揮発性メモリ装置と、バッファされたデータを選択的に圧縮するデータ圧縮装置と、を含み、前記データ圧縮装置は、前記データをバッファリングする入力バッファと、前記データが、前記入力バッファに伝送される間に、前記データを分析し、前記データの分析結果に基づいて分析コードを生成させるデータパターン分析器と、前記分析コードに基づいて、前記バッファされたデータを選択的に圧縮するデータ圧縮管理器と、を含む。
【００１８】
前記データ処理装置は、ＳＳＤ（ｓｏｌｉｄ  ｓｔａｔｅ  ｄｒｉｖｅ）、スマートカード、メモリカード、スマートフォン（ｓｍａｒｔ  ｐｈｏｎｅ）またはタブレット（ｔａｂｌｅｔ）ＰＣとして具現されうる。前記データ圧縮装置は、前記不揮発性メモリ装置を制御するメモリコントローラの内部に集積される。
【００１９】
本発明の他の実施例によって、データを圧縮する方法は、入力バッファに伝送されるデータを横取りする（ｉｎｔｅｒｃｅｐｔ）段階と、横取りしたデータを分析し、該分析結果を出力する段階と、前記分析結果に基づいて、圧縮データと前記入力バッファから出力された前記データとのうちの１つを出力する段階と、を含み、前記圧縮データは、前記入力バッファの前記データを圧縮して生成されたデータである。
【００２０】
前記データは、１つまたはそれ以上のビットを含み、前記入力バッファによってバッファされたデータは、前記データの整数倍である。
【００２１】
本発明の他の実施例によるデータを圧縮する方法は、データ圧縮装置で、前記データのパターンと前記データのヘッダに含まれた指示ビットの値とのうちの１つに基づいてデータを選択的に圧縮する段階を含み、前記パターンと前記指示ビットのそれぞれは、前記データが圧縮データであるか否かを指示する。
【００２２】
前記データを圧縮する方法は、前記データが、ヘッダ情報を含むか否かを決定する段階をさらに含み、前記データが、前記ヘッダ情報を含む時、前記データは、前記指示ビットに基づいて選択的に圧縮される。前記データが、前記ヘッダ情報を含まない時、前記データは、前記データのパターンに基づいて選択的に圧縮される。
【００２３】
本発明の他の実施例によるデータ圧縮装置は、データのパターンと、前記データのヘッダに含まれた指示ビットの値のうちの１つに基づいて、前記データを選択的に圧縮するデータ圧縮管理器とを含み、前記パターンと前記指示ビットのそれぞれは、前記データが圧縮データであるか否かを指示する。
【００２４】
前記データ圧縮装置は、前記データが、ヘッダ情報を含むか否かを決定するデータパターン分析器をさらに含み、前記データが、前記ヘッダ情報を含む時、前記データ圧縮管理器は、前記指示ビットに基づいて、前記データを選択的に圧縮する。前記データが、前記ヘッダ情報を含まない時、前記データ圧縮管理器は、前記データのパターンに基づいて、前記データを選択的に圧縮する。
【００２５】
前記データパターン分析器は、前記データに含まれた各シンボルの頻度数をカウントし、該カウントされた頻度数のうちの最大頻度数と最小頻度数とのうちの１つと基準値とを比較し、前記データ圧縮管理器は、比較結果に基づいて、前記データを選択的に圧縮する。
【００２６】
前記データパターン分析器は、前記データに含まれた各シンボルの頻度数をカウントし、前記複数のシンボルのそれぞれにコードワードを割り当て、前記複数のシンボルのそれぞれの前記頻度数と前記複数のシンボルのそれぞれに割り当てられた前記コードワードのビット数とに基づいて、圧縮される前記データのサイズを予測し、前記予測サイズと基準サイズとを比較し、前記データ圧縮管理器は、前記予測サイズと前記基準サイズとの比較結果に基づいて、前記データを選択的に圧縮する。
【発明の効果】
【００２７】
本発明の実施例によるデータ圧縮装置とその動作方法は、データが入力バッファに伝送される途中で、前記データのパターンを分析し、該分析結果によって、前記データの圧縮の有無を決定することができるので、前記データを圧縮する時間を減少させることができる。
【図面の簡単な説明】
【００２８】
【図１Ａ】本発明の一実施例によるデータ圧縮装置のブロック図を示す。
【図１Ｂ】図１Ａの入力バッファから出力されるバッファされたデータの出力タイミング図を示す。
【図１Ｃ】図１Ｂに示されたバッファされたデータの構造を示す図である。
【図２】本発明の他の実施例によるデータ圧縮装置のブロック図を示す。
【図３】図２に示されたデータパターン分析器の動作を説明するためのテーブルである。
【図４】本発明のまた他の実施例によるデータ圧縮装置のブロック図を示す。
【図５】本発明のさらに他の実施例によるデータ圧縮装置のブロック図を示す。
【図６】データ圧縮装置の動作を説明するためのフローチャートである。
【図７】データ圧縮装置の他の動作を説明するためのフローチャートである。
【図８】データ圧縮装置のまた他の動作を説明するためのフローチャートである。
【図９】静的ハフマンコーディング規則を用いるパターン分析器の動作を説明するためのフローチャートである。
【図１０】動的ハフマンコーディング規則を用いるパターン分析器の動作を説明するためのフローチャートである。
【図１１】本発明の実施例によるデータ圧縮装置を含むデータ処理システムの一実施例を示す図である。
【図１２】本発明の実施例によるデータ圧縮装置を含むデータ処理システムの他の実施例を示す図である。
【図１３】本発明のさらに他の実施例によるデータ圧縮装置のブロック図を示す。
【図１４】データ圧縮装置のさらに他の動作を説明するためのフローチャートである。
【図１５】データ圧縮装置のさらに他の動作を説明するためのフローチャートである。
【発明を実施するための形態】
【００２９】
以下、添付した図面を参照して、本発明を詳しく説明する。
図１Ａは、本発明の一実施例によるデータ圧縮装置１０Ａのブロック図を示す。図１Ｂは、図１Ａの入力バッファから出力されるバッファされたデータの出力タイミング図を示す。図１Ｃは、図１Ｂに示されたバッファされたデータの構造を示す。
【００３０】
図１Ａから図１Ｃを参照すると、データ圧縮装置１０Ａは、データパターン分析器２０Ａ、入力バッファ３０、及びデータ圧縮管理器（ｄａｔａ  ｃｏｍｐｒｅｓｓｉｏｎ  ｍａｎａｇｅｒ）４０を含む。実施例によって、データ圧縮装置１０Ａは、出力バッファ５０をさらに含みうる。データ圧縮装置１０Ａは、集積回路、本明細書に記載のハードウェアまたは類似ハードウェアとして具現されうる。
【００３１】
データパターン分析器２０Ａは、入力データＤＡＴＡのパターンを分析することができるハードウェアまたはプロセッサとして具現されうる。データ圧縮管理器４０は、データパターン分析器２０Ａから出力された分析結果ＩＮＦ１によって、入力バッファ３０によってバッファされたデータＢＤｉを選択的に圧縮することができるハードウェアまたはプロセッサとして具現されうる。
【００３２】
データパターン分析器２０Ａは、入力バッファ３０に伝送される入力データＤＡＴＡのパターンを分析し、該分析されたパターンに基づいて分析コードＩＮＦ１、例えば、分析結果を出力することができる。
【００３３】
データパターン分析器２０Ａは、分析コードＩＮＦ１の形態を有する分析結果をデータ圧縮管理器４０に出力する。図１Ａを参照すると、データパターン分析器２０Ａは、ヘッダ分析器２１を含む。ヘッダ分析器２１は、入力データＤＡＴＡのヘッダＨＥＡＤＥＲに含まれた指示ビットを分析し、前記指示ビットの分析結果によって分析コードＩＮＦ１を発生させる。分析コードＩＮＦ１は、１ビットまたはそれ以上のビットとして具現されうる。すなわち、分析コードＩＮＦ１は、１つのビットのコードまたはマルチビットコード（ｍｕｌｔｉ−ｂｉｔ  ｃｏｄｅ）であり得る。
【００３４】
ヘッダＨＥＡＤＥＲに含まれた指示ビットは、入力データＤＡＴＡのボディーデータＤＡＴＡ１の圧縮の有無を表わす。前述したように、前記指示ビットは、１ビットまたはそれ以上のビットを含みうる。
【００３５】
例えば、ボディーデータＤＡＴＡ１が、圧縮データ（ｃｏｍｐｒｅｓｓｅｄ  ｄａｔａ；例えば、マルチメディアデータ（ｍｕｌｔｉ−ｍｅｄｉａ  ｄａｔａ））である時、ヘッダＨＥＡＤＥＲに含まれた指示ビットは、第１値、例えば、１を有しうる。しかし、ボディーデータＤＡＴＡ１が、圧縮されていないデータ（ｕｎｃｏｍｐｒｅｓｓｅｄ  ｄａｔａ）である時、ヘッダＨＥＡＤＥＲに含まれた指示ビットは、前記第１値と異なる第２値、例えば、０を有しうる。この際、ヘッダ分析器２１は、前記指示ビットが、前記第１値を有する時、前記第１値を有する分析コードＩＮＦ１を出力し、前記指示ビットが、前記第２値を有する時、前記第２値を有する分析コードＩＮＦ１を出力する。
【００３６】
入力バッファ３０は、データバスを通じて入力された入力データＤＡＴＡをバッファリングし、該バッファされたデータＢＤｉを出力する。例えば、入力データＤＡＴＡが、‘ａ’個のビットを含むマルチビットデータである時、バッファされたデータＢＤｉは、‘ｂ’個のビットを含むマルチビットデータであり得る。ここで、‘ａ’と‘ｂ’は、自然数であり、ａ＝ｂまたはｂは、‘ａ’の整数倍であり得る。
【００３７】
例えば、入力データＤＡＴＡが、８ビットデータであり、バッファされたデータＢＤｉが、６４ビットデータである時、データパターン分析器２０Ａは、時間間隔Ｔ以内に８ビット入力データの各セット（ｓｅｔ）のパターンを分析することができる。入力バッファ３０は、８個の入力データＤＡＴＡがいずれも入力される時、活性化されるイネーブル信号ＥＮによって、各バッファされたデータＢＤｉ（ｉ＝０、１、２、３、．．．）を出力することができる。
【００３８】
図１Ａを参照すると、データ圧縮管理器４０は、データパターン分析器２０Ａから出力された分析コードＩＮＦ１に基づいてバッファされたデータＢＤｉを選択的に圧縮する。
【００３９】
データ圧縮管理器４０は、入力バッファ３０から出力されたバッファされたデータＢＤｉの１つまたはバッファされたデータＢＤｉを圧縮して生成された圧縮データＣＤＡＴＡを出力する。すなわち、データ圧縮管理器４０は、バッファされたデータＢＤｉの圧縮をバイパスするか、または圧縮データＣＤＡＴＡを生成させるためにバッファされたデータＢＤｉを圧縮する。例えば、分析コードＩＮＦ１が、第２値、例えば、０である時、データ圧縮管理器４０は、圧縮データＣＤＡＴＡを生成させるために入力バッファ３０から出力されたバッファされたデータＢＤｉを圧縮し、圧縮データＣＤＡＴＡを出力バッファ５０に出力する。一方、分析コードＩＮＦ１が、第１値、例えば、１である時、データ圧縮管理器４０は、入力バッファ３０から出力されたバッファされたデータＢＤｉを圧縮せず、バッファされたデータＢＤｉを出力バッファ５０に出力する。
【００４０】
図１Ａに示したように、データ圧縮管理器４０は、メモリ４１、プロセッサ４３、及び選択器４５を含む。メモリ４１は、分析コードＩＮＦ１を受信して保存する。
【００４１】
メモリ４１に保存された分析コードＩＮＦ１またはＩＮＦ２に基づいて、選択器４５は、バッファされたデータＢＤｉを出力バッファ５０に出力するか、または圧縮のためにバッファされたデータＢＤｉをプロセッサ４３に伝送する。例えば、分析コードＩＮＦ１が、第１値を有する時、選択器４５は、バッファされたデータＢＤｉを出力バッファ５０に出力する。しかし、分析コードＩＮＦ１が、第２値を有する時、選択器４５は、圧縮のためにバッファされたデータＢＤｉをプロセッサ４３に出力する。
【００４２】
プロセッサ４３は、圧縮データＣＤＡＴＡを生成させるために選択器４５から出力されたバッファされたデータＢＤｉを圧縮し、圧縮データＣＤＡＴＡを出力バッファ５０に出力する。
【００４３】
図１Ｃを参照すると、プロセッサ４３は、各シンボルＡ１、Ａ２、及びＡ３を順次に圧縮し、以前に圧縮されたシンボルと同じシンボルは圧縮せず、シンボルの間の関係を表わす情報を出力することができる。例えば、プロセッサ４３は、最初のシンボルＡ１は圧縮し、四番目のシンボルＡ１は圧縮しない。選択的に、プロセッサ４３は、バッファされたデータＢＤｉのあらゆるシンボルを圧縮することもできる。
【００４４】
図１Ａを参照すると、出力バッファ５０は、データ圧縮管理器４０から出力されたデータ、例えば、バッファされたデータＢＤｉまたは圧縮データＣＤＡＴＡを受信してバッファリングすることができる。
【００４５】
図１Ａを参照して説明したように、データパターン分析器２０Ａは、入力データＤＡＴＡが入力バッファ３０に伝送される途中で、及び／または入力データＤＡＴＡが入力バッファ３０によってバッファリングされる途中で、入力データＤＡＴＡのパターン、例えば、ヘッダＨＥＡＤＥＲに含まれた指示ビットを分析する。データパターン分析器２０Ａは、分析結果に基づいて分析コードＩＮＦ１をデータ圧縮管理器４０に伝送しうる。データ圧縮管理器４０は、分析結果ＩＮＦ１に基づいてバッファされたデータＢＤｉを圧縮の有無を決定することができる。
【００４６】
データ圧縮管理器４０は、各入力データＤＡＴＡのパターンを分析するために、入力バッファ３０に保存された各入力データＤＡＴＡまたは各バッファされたデータＢＤｉを別途にリードする必要がないので、データ圧縮速度は改善されうる。
【００４７】
図２は、本発明の他の実施例によるデータ圧縮装置のブロック図を示す。図１Ａから図１Ｃに示された入力データＤＡＴＡとは異なって、図２に示された入力データＤＡＴＡは、ボディーデータＤＡＴＡ１が圧縮データであるか否かを指示する指示ビットを含むヘッダを含まない。
【００４８】
図２のデータ圧縮装置１０Ｂは、データパターン分析器２０Ｂ、入力バッファ３０、及びデータ圧縮管理器４０を含む。実施例によって、データ圧縮装置１０Ｂは、出力バッファ５０をさらに含みうる。
【００４９】
データパターン分析器２０Ｂは、パターン分析器２３を含む。入力データＤＡＴＡが、入力バッファ３０に伝送される時、パターン分析器２３は、入力データＤＡＴＡを受信し、入力データＤＡＴＡのパターンを分析し、該分析結果に基づいて分析コードＩＮＦ２を出力する。この場合、パターン分析器２３は、次にバッファされたデータ（図１ＢのＤ１）が出力される前までも、図１ＣのバッファされたデータＤ０に含まれた各入力データについてのパターンを分析することができる。
【００５０】
パターン分析器２３は、入力データＤＡＴＡに含まれた複数のシンボルのそれぞれの頻度数をカウントし、最大頻度数（または、最小頻度数）と基準値とを比較し、該比較結果を分析結果ＩＮＦ２としてデータ圧縮管理器４０に出力する。１つのシンボルは、ｋ（ｋは、自然数、例えば、ｋ＝８）ビットを含みうる。
【００５１】
図３は、図２に示されたデータパターン分析器の動作を説明するためのテーブルである。図２と図３とを参照すると、パターン分析器２３は、入力データＤＡＴＡに含まれた複数のシンボルＡＡ、ＢＢ、ＣＣ、ＤＤ、ＥＥ、ＦＦ、．．．のそれぞれの頻度数１０、１００、１０００、２、５、５０、．．．を決定する。パターン分析器２３は、最大頻度数（または、最小頻度数）と基準値とを比較する。
【００５２】
前記最大頻度数が、前記基準値より大きい場合、すなわち、前記最大頻度数に相応するシンボルの反復回数が多い場合、パターン分析器２３は、第２値、例えば、０を有する分析コードＩＮＦ２を圧縮管理器４０に出力する。第２値を有する分析コードＩＮＦ２は、入力データＤＡＴＡがデータ圧縮管理器４０によって必ず圧縮されなければならないことを指示する。
【００５３】
第２値を有する分析コードＩＮＦ２に応答して、データ圧縮管理器４０は、入力バッファ３０から出力されたバッファされたデータＢＤｉを圧縮し、圧縮データＣＤＡＴＡを直接または出力バッファ５０を通じて不揮発性メモリ装置、例えば、フラッシュ（ｆｌａｓｈ）メモリ装置に出力することができる。
【００５４】
しかし、前記最大頻度数が、前記基準値より小さいか、同じである時、パターン分析器２３は、第１値を有する分析コードＩＮＦ２をデータ圧縮管理器４０に出力する。第１値を有する分析コードＩＮＦ２は、バッファされたデータＢＤｉがデータ圧縮管理器４０によって圧縮される必要がないことを指示する。第１値を有する分析コードＩＮＦ２に応答して、データ圧縮管理器４０は、バッファされたデータＢＤｉの圧縮をバイパス（ｂｙｐａｓｓ）し、バッファされたデータＢＤｉを直接または出力バッファ５０を通じて不揮発性メモリ装置、例えば、フラッシュメモリ装置に出力することができる。
【００５５】
図４は、本発明のまた他の実施例によるデータ圧縮装置のブロック図を示す。図４を参照すると、データ圧縮装置１０Ｃは、データパターン分析器２０Ｃ、入力バッファ３０、及びデータ圧縮管理器４０を含む。実施例によって、データ圧縮装置１０Ｃは、出力バッファ５０をさらに含みうる。
【００５６】
データパターン分析器２０Ｃは、ヘッダ分析器２５と予測器２６とを含む。
ヘッダ分析器２５は、入力データＤＡＴＡのヘッダＨＥＡＤＥＲに含まれた指示ビットを分析する。前記指示ビットによって、ヘッダ分析器２５は、制御信号を予測器２６に出力し、第１制御コードをデータ圧縮管理器４０に出力する。前記制御信号は、予測器２６の動作を制御し、前記第１制御コードは、データ圧縮管理器４０の動作を制御することができる。
【００５７】
例えば、ボディーＤＡＴＡ１に含まれたデータが、圧縮されたデータであることを表わす第１値、例えば、１を有する指示ビットによって、ヘッダ分析器２５は、第１値を有する制御信号、例えば、ローレベル（ｌｏｗ  ｌｅｖｅｌ）を有する制御信号を予測器２６に出力して予測器２６の動作をディセーブル（ｄｉｓａｂｌｅ）させる。また、ヘッダ分析器２５は、第１制御コードをデータ圧縮管理器４０に出力することができる。前記第１制御コードは、バッファされたデータＢＤｉの圧縮のバイパスをデータ圧縮管理器４０に指示する。
【００５８】
ボディーＤＡＴＡ１に含まれたデータが、圧縮されていないデータであることを表わす第２値、例えば、０を有する指示ビットによって、ヘッダ分析器２５は、制御信号、例えば、ハイレベル（ｈｉｇｈ  ｌｅｖｅｌ）を有する制御信号を予測器２６に出力して予測器２６の動作をイネーブルさせる。予測器２６がイネーブルされれば、予測器２６は、図３に示したように、入力データＤＡＴＡ、例えば、ボディーＤＡＴＡ１に含まれた各シンボルＡＡ、ＢＢ、ＣＣ、ＤＤ、ＥＥ、ＦＦ、．．．の各頻度数１０、１００、１０００、２、５、５０、．．．をカウントする。
【００５９】
図４を参照すると、予測器２６は、コーディング（ｃｏｄｉｎｇ）規則に基づいて各シンボルＡＡ、ＢＢ、ＣＣ、ＤＤ、ＥＥ、ＦＦ、．．．に各コードワード１０１１、１０１、１０、１０１０１、１０００１、１１０、．．．を割り当てる。次いで、予測器２６は、各シンボルＡＡ、ＢＢ、ＣＣ、ＤＤ、ＥＥ、ＦＦ、．．．の各頻度数１０、１００、１０００、２、５、５０、．．．と各シンボルＡＡ、ＢＢ、ＣＣ、ＤＤ、ＥＥ、ＦＦ、．．．に割り当てられた各コードワード１０１１、１０１、１０、１０１０１、１０００１、１１０、．．．のビット数４、３、２、５、５、３、．．．とに基づいて圧縮データＣＤＡＴＡのサイズを予測する。次いで、予測器２６は、圧縮データの予測されたサイズ（以下、‘予測データＥＣＤＡＴＡ’と称する）と基準データのサイズとを比較し、該比較結果をデータ圧縮管理器４０に出力する。
【００６０】
予測器２６は、数式１によって予測データＥＣＤＡＴＡのサイズを計算する。
【００６１】
【数１】
0005881416.tif 000002
【００６２】
数式１で、“ｎ”は、自然数であり、ボディーＤＡＴＡ１に含まれたデータのシンボル（ｓｙｍｂｏｌ）の総数を表わし、“ｆｉ”は、ｉ番目のシンボルの頻度数を表わし、“Ｂｉ”は、ｉ番目のシンボルに割り当てられたコードワードのビット数を表わす。例えば、図３を参照すると、シンボルＡＡの頻度数は１０であり、シンボルＡＡに割り当てられたコードワード１０１１のビット数は３であり、シンボルＣＣの頻度数は１，０００であり、シンボルＣＣに割り当てられたコードワード１０のビット数は２である。
【００６３】
さらに具体的な例で、入力データＤＡＴＡのサイズが５Ｋｂｙｔｅであり、基準データのサイズが３Ｋｂｙｔｅであり、数式１によって計算された予測データＥＣＤＡＴＡのサイズが３Ｋｂｙｔｅより大きい時、予測器２６は、バッファされたデータＢＤｉの圧縮をバイパスさせることを指示する第２制御コードを出力する。一方、数式１によって計算された予測データＥＣＤＡＴＡのサイズが３Ｋｂｙｔｅより小さい時、予測器２６は、バッファされたデータＢＤｉを圧縮させることを指示する第２制御コードを出力する。例えば、基準データのサイズは、入力データＤＡＴＡのサイズのｃ（ｃは、小数、例えば、０．６）倍であり得る。
【００６４】
図４に示された分析コードＩＮＦ３は、ヘッダＨＥＡＤＥＲに含まれた指示ビットによって発生した第１制御コードと、予測データＥＣＤＡＴＡのサイズと基準データのサイズとの比較結果に基づいて発生した第２制御コードとを含む。
【００６５】
図１Ａから図４を参照して説明したように、次の場合、バッファされたデータＢＤｉは、圧縮なしにデータ圧縮管理器４０から出力される。
【００６６】
ボディーＤＡＴＡ１に含まれたデータが既に圧縮された場合；または、ボディーＤＡＴＡ１に含まれたデータが圧縮されていないデータであり、予測データＥＣＤＡＴＡのサイズが、基準データのサイズより大きい場合。
【００６７】
図４を参照すると、データ圧縮管理器４０は、データパターン分析器２０Ｃから出力された分析コードＩＮＦ３を分析し、該分析結果によってバッファされたデータＢＤｉまたは圧縮データＣＤＡＴＡを出力する。
【００６８】
ボディーＤＡＴＡ１に含まれたデータが圧縮されていないデータであり、予測データＥＣＤＡＴＡのサイズが、基準データのサイズより小さい時、データ圧縮管理器４０は、データパターン分析器２０Ｃから出力された分析コードＩＮＦ３によってバッファされたデータＢＤｉを圧縮し、圧縮データＣＤＡＴＡを出力する。
【００６９】
前述したように、それぞれの入力データＤＡＴＡが、入力バッファ３０に伝送される間に、データパターン分析器２０Ｃは、それぞれの入力データＤＡＴＡのパターンを分析し、分析コードＩＮＦ３をデータ圧縮管理器４０に伝送する。データ圧縮管理器４０は、分析コードＩＮＦ３によってバッファされたデータＢＤｉを選択的に圧縮することができる。
【００７０】
図５は、本発明のさらに他の実施例によるデータ圧縮装置のブロック図を示す。
図５を参照すると、データ圧縮装置１０Ｄは、データパターン分析器２０Ｄ、入力バッファ３０、及びデータ圧縮管理器４０を含む。実施例によって、データ圧縮装置１０Ｄは、出力バッファ５０をさらに含みうる。データパターン分析器２０Ｄは、パターン分析器２７と予測器２８とを含む。データ圧縮装置１０Ｄの動作は、図３を参照して説明される。
【００７１】
図３と図５とを参照すると、パターン分析器２７は、入力データＤＡＴＡに含まれた各シンボルＡＡ、ＢＢ、ＣＣ、ＤＤ、ＥＥ、ＦＦ、．．．の各頻度数１０、１００、１０００、２、５、５０、．．．をカウントし、各シンボルＡＡ、ＢＢ、ＣＣ、ＤＤ、ＥＥ、ＦＦ、．．．にコーディング規則に基づいて各コードワード１０１１、１０１、１０、１０１０１、１０００１、１１０、．．．を割り当てる。そして、パターン分析器２７は、各シンボルＡＡ、ＢＢ、ＣＣ、ＤＤ、ＥＥ、ＦＦ、．．．の各頻度数１０、１００、１０００、２、５、５０、．．．と各シンボルＡＡ、ＢＢ、ＣＣ、ＤＤ、ＥＥ、ＦＦ、．．．に割り当てられた各コードワード１０１１、１０１、１０、１０１０１、１０００１、１１０、．．．とを予測器２８に伝送する。
【００７２】
予測器２８は、各シンボルＡＡ、ＢＢ、ＣＣ、ＤＤ、ＥＥ、ＦＦ、．．．の各頻度数１０、１００、１０００、２、５、５０、．．．と各シンボルＡＡ、ＢＢ、ＣＣ、ＤＤ、ＥＥ、ＦＦ、．．．に割り当てられた各コードワード１０１１、１０１、１０、１０１０１、１０００１、１１０、．．．の各ビット数４、３、２、５、５、３、．．．とに基づいて圧縮データＥＣＤＡＴＡのサイズを数式１によって予測する。予測器２８は、予測データＥＣＤＡＴＡのサイズと基準データのサイズとを比較し、該比較結果によって分析コードＩＮＦ４を生成させ、分析コードＩＮＦ４をデータ圧縮管理器４０に出力する。
【００７３】
予測データＥＣＤＡＴＡのサイズが、基準データのサイズより小さい時（例えば、圧縮効率に優れる時）、データ圧縮管理器４０は、データパターン分析器２０Ｄから出力された分析コードＩＮＦ４、例えば、第２値、例えば、０によってバッファされたデータＢＤｉを圧縮し、圧縮データＣＤＡＴＡを出力バッファ５０に出力する。
【００７４】
しかし、予測データＥＣＤＡＴＡのサイズが、基準データのサイズより大きい時（例えば、圧縮効率が劣る時）、データ圧縮管理器４０は、データパターン分析器２０Ｄから出力された分析コードＩＮＦ４、例えば、第１値、例えば、１によってバッファされたデータＢＤｉを出力する。
【００７５】
例えば、予測データＥＣＤＡＴＡのサイズが、基準データのサイズより小さいことは、優れた圧縮効率（ｓｕｐｅｒｉｏｒ  ｃｏｍｐｒｅｓｓｉｏｎ  ｅｆｆｉｃｉｅｎｃｙ）を表し、予測データＥＣＤＡＴＡのサイズが、基準データのサイズより大きいことは、劣った圧縮効率（ｉｎｆｅｒｉｏｒ  ｃｏｍｐｒｅｓｓｉｏｎ  ｅｆｆｉｃｉｅｎｃｙ）を表わす。
【００７６】
図１３は、本発明のさらに他の実施例によるデータ圧縮装置のブロック図を示す。図１３を参照すると、データ圧縮装置１３１０は、データパターン分析器１３２０、入力バッファ３０、及びデータ圧縮管理器４０を含む。実施例によって、データ圧縮装置１３１０は、出力バッファ５０をさらに含みうる。
【００７７】
データパターン分析器１３２０は、ヘッダ分析器１３２５とパターン分析器１３２７とを含む。図１３に示されたデータパターン分析器１３２０は、データパターン分析器１３２０がヘッダ分析器１３２５とパターン分析器１３２７とを含むものを除けば、図１のデータパターン分析器２０Ａと図２のデータパターン分析器２０Ｂと類似している。
【００７８】
データ圧縮装置１３１０の例示的な動作は、図６に示されたフローチャートを参照して詳しく説明される。
【００７９】
図１３を参照すると、ヘッダ分析器１３２５は、入力データＤＡＴＡがヘッダＨＥＡＤＥＲを含むか否かを検出する。入力データＤＡＴＡがヘッダＨＥＡＤＥＲを含めば、ヘッダ分析器１３２５は、入力データＤＡＴＡのヘッダＨＥＡＤＥＲに含まれた指示ビットを分析し、前記指示ビットの分析に基づいて分析コードＩＮＦ１を生成させる。
【００８０】
図１３を参照して説明された分析コードＩＮＦ１と前記指示ビットは、図１Ａを参照して説明された分析コードＩＮＦ１と前記指示ビットと同一または実質的に同一である。
【００８１】
図１Ａに示したように、ヘッダ分析器１３２５は、前記指示ビットが、前記第１値、例えば、１を有する時、第１値、例えば、１を有する分析コードＩＮＦ１を出力する。しかし、ヘッダ分析器１３２５は、前記指示ビットが、前記第２値、例えば、０を有する時、第２値、例えば、０を有する分析コードＩＮＦ１を出力する。
【００８２】
図１３を参照すると、またデータパターン分析器１３２０は、パターン分析器１３２７を含む。ヘッダ分析器１３２５が、入力データＤＡＴＡからヘッダＨＥＡＤＥＲを検出することができなければ、パターン分析器１３２７は、入力データＤＡＴＡを受信し、入力データＤＡＴＡのパターンを分析し、該分析結果に基づいて分析コードＩＮＦ２を出力する。この場合、パターン分析器１３２７は、各入力データＤＡＴＡのパターンを分析する。
【００８３】
パターン分析器１３２７は、入力データＤＡＴＡに含まれた各シンボルの各頻度数をカウントし、最大頻度数（または、最小頻度数）と基準値とを比較し、該比較結果を分析結果ＩＮＦ２としてデータ圧縮管理器４０に出力する。前述したように、１つのシンボルは、ｋビットを含み、ｋは、自然数であり、例えば、ｋ＝８であり得る。
【００８４】
入力バッファ３０は、データバスを通じて受信された入力データＤＡＴＡをバッファリングし、該バッファされたデータＢＤｉを出力する。例えば、入力データＤＡＴＡが、‘ａ’個のビットを含むマルチビットデータである時、バッファされたデータＢＤｉは、‘ｂ’個のビットを含むマルチビットデータであり得る。ここで、‘ａ’と‘ｂ’は、自然数であり、ａ＝ｂまたはｂは、‘ａ’の整数倍であり得る。
【００８５】
図１を参照すると、データ圧縮管理器４０は、データパターン分析器１３２０から出力された分析コードＩＮＦ１またはＩＮＦ２に基づいてバッファされたデータＢＤｉを選択的に圧縮することができる。そして、データ圧縮管理器４０は、入力バッファ３０から出力されたバッファされたデータＢＤｉの１つまたはバッファされたデータＢＤｉを圧縮して生成された圧縮データＣＤＡＴＡを出力する。すなわち、データ圧縮管理器４０は、バッファされたデータＢＤｉの圧縮をバイパスするか、または圧縮データＣＤＡＴＡを生成させるためにバッファされたデータＢＤｉを圧縮する。
【００８６】
例えば、分析コードＩＮＦ１またはＩＮＦ２が、第２値、例えば、０である時、データ圧縮管理器４０は、圧縮データＣＤＡＴＡを生成させるために入力バッファ３０から出力されたバッファされたデータＢＤｉを圧縮し、圧縮データＣＤＡＴＡを出力バッファ５０に出力する。一方、分析コードＩＮＦ１またはＩＮＦ２が、第１値、例えば、１である時、データ圧縮管理器４０は、入力バッファ３０から出力されたバッファされたデータＢＤｉを圧縮せず、バッファされたデータＢＤｉを出力バッファ５０に出力する。
【００８７】
図１Ａに示したように、データ圧縮管理器４０は、メモリ４１、プロセッサ４３、及び選択器４５を含む。メモリ４１は、分析コードＩＮＦ１またはＩＮＦ２を受信して保存する。
【００８８】
メモリ４１に保存された分析コードＩＮＦ１またはＩＮＦ２に基づいて、選択器４５は、バッファされたデータＢＤｉを出力バッファ５０に出力するか、または圧縮のためにバッファされたデータＢＤｉをプロセッサ４３に伝送する。例えば、分析コードＩＮＦ１またはＩＮＦ２が、第１値を有する時、選択器４５は、バッファされたデータＢＤｉを出力バッファ５０に出力する。しかし、分析コードＩＮＦ１またはＩＮＦ２が、第２値を有する時、選択器４５は、圧縮のためにバッファされたデータＢＤｉをプロセッサ４３に出力する。
【００８９】
プロセッサ４３は、圧縮データＣＤＡＴＡを生成させるために選択器４５から出力されたバッファされたデータＢＤｉを圧縮し、圧縮データＣＤＡＴＡを出力バッファ５０に出力する。
【００９０】
出力バッファ５０は、データ圧縮管理器４０から出力されたデータ、例えば、バッファされたデータＢＤｉまたは圧縮データＣＤＡＴＡを受信してバッファリングすることができる。そして、出力バッファ５０から出力されたデータＢＤｉまたはＣＤＡＴＡは、不揮発性メモリに出力される。
【００９１】
図６は、データ圧縮装置の動作を説明するためのフローチャートである。図６を参照して説明される方法は、ヘッダ分析器とパターン分析器とを含むデータパターン分析器を含むデータ圧縮装置と共に使われる。このようなデータ圧縮装置についての実施例は、図１３に示される。図６に示された方法は、図１３に示されたデータ圧縮装置１３１０に関連する。
【００９２】
図１と図１３とを参照すると、ヘッダ分析器１３２５は、入力データＤＡＴＡがヘッダを含むか否かを検索する（ステップＳ１０）。ヘッダ分析器１３２５が、入力データＤＡＴＡがヘッダＨＥＡＤＥＲを含むと決定すれば（ステップＳ２０）、ヘッダ分析器１３２５は、ヘッダＨＥＡＤＥＲに含まれた指示ビットに基づいて、入力データＤＡＴＡが既に圧縮されたか否かを決定する（ステップＳ３０）。ヘッダＨＥＡＤＥＲに含まれた指示ビットが、ボディーＤＡＴＡ１に含まれたデータが圧縮されたデータであることを指示する時、ヘッダ分析器１３２５は、入力データＤＡＴＡが既に圧縮されたと決定する。
【００９３】
ヘッダ分析器１３２５が、ボディーＤＡＴＡ１が既に圧縮されたデータであると決定すれば（ステップＳ３０）、ヘッダ分析器１３２５は、入力データＤＡＴＡが既に圧縮されたことを指示する分析コードＩＮＦ１をデータ圧縮管理器４０に伝送する。したがって、データ圧縮管理器４０は、バッファされたデータＢＤｉを圧縮せず、バッファされたデータＢＤｉを出力バッファ５０に出力するか、または圧縮をバイパスする（ステップＳ３２）。データ圧縮管理器４０によってバイパスされたバッファされたデータＢＤｉは、直接または出力バッファ５０を通じて不揮発性メモリ装置に保存することができる。
【００９４】
ステップＳ３０の判断結果、ヘッダ分析器１３２５が、ボディーＤＡＴＡ１に含まれたデータが圧縮されていないデータであると決定すれば、ヘッダ分析器１３２５は、ボディーＤＡＴＡ１に含まれたデータが圧縮されていないデータであることを指示する分析コードＩＮＦ１をデータ圧縮管理器４０に伝送する。分析コードＩＮＦ１に応答して、データ圧縮管理器４０は、圧縮データＣＤＡＴＡを生成させるためにバッファされたデータＢＤｉを圧縮する（ステップＳ３４）。データ圧縮管理器４０から出力された圧縮データＣＤＡＴＡは、直接または出力バッファ５０を通じて不揮発性メモリ装置に保存することができる（ステップＳ３６）。
【００９５】
図６のステップＳ２０で、ヘッダ分析器１３２５が、入力データＤＡＴＡにヘッダＨＥＡＤＥＲが存在しないと決定すれば、図７を参照して次の過程が説明される。
【００９６】
図７は、データ圧縮装置の他の動作を説明するためのフローチャートである。図７に示された方法は、データ圧縮装置１０Ｂ、１０Ｃ、及び／または１３１０と共に説明されうる。説明の便宜上、図７のフローチャートは、図２に示されたデータ圧縮装置１０Ｂを参照して説明される。しかし、データ圧縮装置１３１０は、図７のフローチャートに対応する動作を行うことができる。
【００９７】
図７を参照すると、図２に示されたパターン分析器２３は、入力データＤＡＴＡのパターンを検索する（ステップＳ４２）。そして、パターン分析器２３は、入力データＤＡＴＡのパターンを分析する（ステップＳ４２）。例えば、パターン分析器２３は、入力データＤＡＴＡに含まれた複数のシンボルのそれぞれの頻度数をカウントする。パターン分析器２３は、カウントされた頻度数のうちの最大頻度数（または、最小頻度数）と基準値とを比較する（ステップＳ４４）。
【００９８】
ステップＳ４４の比較結果、前記最大頻度数（または、最小頻度数）が、前記基準値より大きいか、同じである時、パターン分析器２３は、バッファされたデータＢＤｉが圧縮されなければならないことを指示する分析コードＩＮＦ２をデータ圧縮管理器４０に伝送する。分析コードＩＮＦ２に応答して、データ圧縮管理器４０は、バッファされたデータＢＤｉを圧縮する（ステップＳ４６）。そして、圧縮データＣＤＡＴＡは、直接または出力バッファ５０を通じて不揮発性メモリ装置に保存される（ステップＳ５０）。
【００９９】
ステップＳ４４の比較結果、前記最大頻度数（または、最小頻度数）が、前記基準値より小さい時、パターン分析器２３は、バッファされたデータＢＤｉが圧縮される必要がないことを指示する分析コードＩＮＦ２をデータ圧縮管理器４０に伝送する。分析コードＩＮＦ２に応答して、データ圧縮管理器４０は、バッファされたデータＢＤｉを圧縮せず（例えば、圧縮をバイパスし）、バッファされたデータＢＤｉを出力バッファ５０に出力する（ステップＳ４８）。
【０１００】
図８は、データ圧縮装置のまた他の動作を説明するためのフローチャートである。図８に示された方法は、図５のデータ圧縮装置１０Ｄで実行可能である。図８を参照すると、図５のパターン分析器２７は、入力データＤＡＴＡのパターンを検索する（ステップＳ４０）。
【０１０１】
パターン分析器２７は、入力データＤＡＴＡに含まれた複数のシンボルのそれぞれの頻度数をカウントし、コーディング規則に基づいて、前記複数のシンボルのそれぞれにコードワードを割り当て、前記複数のシンボルのそれぞれの頻度数と前記複数のシンボルのそれぞれに割り当てられたコードワードを予測器２８に出力する（ステップＳ６０）。
【０１０２】
予測器２８は、パターン分析器２７から出力された前記複数のシンボルのそれぞれの頻度数と前記複数のシンボルのそれぞれに割り当てられたコードワードのビット数とを用いて、数式１によって予測データＥＣＤＡＴＡのサイズを計算する（ステップＳ８０）。
【０１０３】
予測器２８は、予測データのサイズＥＣＤＡＴＡと基準データのサイズとを比較する（ステップＳ８２）。予測データＣＤＡＴＡのサイズが、前記基準データのサイズより大きい時、予測器２８は、バッファされたデータＢＤｉの圧縮が必要ないことを指示する分析コードＩＮＦ４をデータ圧縮管理器４０に伝送する。したがって、データ圧縮管理器４０は、バッファされたデータＢＤｉを圧縮せず、バッファされたデータＢＤｉを出力バッファ５０に出力する（ステップＳ８４）。次いで、出力バッファ５０に保存されたバッファされたデータＢＤｉは、不揮発性メモリ装置に保存される（ステップＳ８８）。
【０１０４】
予測データＥＣＡＤＡＴのサイズが、前記基準データのサイズより小さいか、同じである時、予測器２８は、バッファされたデータＢＤｉの圧縮を指示する分析コードＩＮＦ４をデータ圧縮管理器４０に伝送する。したがって、データ圧縮管理器４０は、バッファされたデータＢＤｉを圧縮し（ステップＳ８６）、圧縮データＣＤＡＴＡは、直接または出力バッファ５０を通じて不揮発性メモリ装置に保存される（ステップＳ８８）。
【０１０５】
パターン分析器２７は、入力データＤＡＴＡに含まれた複数のシンボルのそれぞれの頻度数をカウントし、コーディング規則に基づいて、前記複数のシンボルのそれぞれにコードワードを割り当てる。
【０１０６】
前記コーディング規則は、ハフマンコーディング規則（Ｈｕｆｆｍａｎ  ｃｏｄｉｎｇｒｕｌｅ）、ＬＺＷコーディング規則（Ｌｅｍｐｅｌ  Ｚｉｐ  Ｗｅｌｃｈ  ｒｕｌｅ）、算術コーディング規則（Ａｒｉｔｈｍｅｔｉｃ  ｃｏｄｉｎｇ  ｒｕｌｅ）、ＲＬＥ（Ｒｕｎ  Ｌｅｎｇｔｈ  Ｅｎｃｏｄｉｎｇ）、または他の適当なコーディング規則であり得る。また、前記ハフマンコーディング規則は、静的ハフマンコーディング規則と動的ハフマンコーディング規則とを含む。
【０１０７】
図９は、静的ハフマンコーディング規則を用いるパターン分析器の動作を説明するためのフローチャートである。図５と図９とを参照すると、パターン分析器２７は、入力データＤＡＴＡのパターンを検索する（ステップＳ４０）。入力データＤＡＴＡに含まれたシンボルが発見される度に（ステップＳ６１）、パターン分析器２７は、当該シンボルの頻度数を＋１増加させる（ステップＳ６２）。
【０１０８】
パターン分析器２７は、入力データＤＡＴＡが、いずれも入力されたか（または、入力データＤＡＴＡの端部に到逹したか）を決定する（ステップＳ６３）。入力データＤＡＴＡが、いずれも入力された時（または、入力データＤＡＴＡの端部に到逹した時）、パターン分析器２７は、入力データＤＡＴＡに含まれた複数のシンボルのそれぞれの頻度数をカウントし、コーディング規則（例えば、静的ハフマンコーディング規則）に基づいて、前記複数のシンボルのそれぞれにコードワードを割り当てる（ステップＳ６４）。
【０１０９】
ステップＳ６３で、入力データＤＡＴＡが、いずれも入力されなかった時（または、入力データＤＡＴＡの端部に到逹しなかった時）、前記方法は、ステップＳ４０に戻り、入力データＤＡＴＡの次のシンボルについて前述した段階を引き続き行う。
【０１１０】
ステップＳ６１で、パターン分析器２７は、入力データＤＡＴＡでシンボルを発見することができない時、ステップＳ６３を行う。
【０１１１】
図１０は、動的ハフマンコーディング規則を用いるパターン分析器の動作を説明するためのフローチャートである。図５と図１０とを参照すると、パターン分析器２７は、入力データＤＡＴＡのパターンを検索する（ステップＳ４０）。入力データＤＡＴＡに含まれたシンボルが発見されれば（ステップＳ６６）、パターン分析器２７は、前記シンボルが新たなシンボルであるか否かを判断する（ステップＳ６７）。前記シンボルが新たなシンボルであれば、パターン分析器２７は、前記シンボルをシンボルリスト（ｓｙｍｂｏｌ  ｌｉｓｔ）に追加し（ステップＳ６８）、当該シンボルの頻度数を＋１増加させる（ステップＳ６９）。
【０１１２】
パターン分析器２７は、入力データＤＡＴＡが、いずれも入力されたか否かを確認する。入力データＤＡＴＡが、いずれも入力された時（ステップＳ７０）、パターン分析器２７は、入力データＤＡＴＡに含まれた複数のシンボルのそれぞれの頻度数をカウントし、コーディング規則（例えば、動的ハフマンコーディング規則）に基づいて、前記複数のシンボルのそれぞれにコードワードを割り当てる（ステップＳ７１）。
【０１１３】
ステップＳ７０で、入力データＤＡＴＡが、いずれも入力されなかった時、前記方法は、ステップＳ４０に戻り、入力データＤＡＴＡの残りの部分について前述した段階を引き続き行う。
【０１１４】
発見されたシンボルが新たなシンボルではない時（ステップＳ６７）、当該シンボルの頻度数を＋１増加させる（ステップＳ６９）。シンボルが、入力データＤＡＴＡで発見されない時、ステップＳ７０が行われる。
【０１１５】
図１４は、データ圧縮装置のさらに他の動作を説明するためのフローチャートである。図１４に示された方法は、図１Ａのデータ圧縮装置１０Ａで行われる。図１Ａと図１４とを参照すると、ヘッダ分析器２１は、ヘッダＨＥＡＤＥＲに含まれた指示ビットに基づいて入力データＤＡＴＡが既に圧縮されたか否かを決定する（ステップＳ１４０２）。
【０１１６】
ヘッダＨＥＡＤＥＲに含まれた指示ビットが、ボディーＤＡＴＡ１に含まれたデータが圧縮されたデータであることを指示する時、ヘッダ分析器２１は、入力データＤＡＴＡが既に圧縮されたと決定する。ヘッダ分析器２１が、ボディーＤＡＴＡ１に含まれたデータが圧縮されたデータであると決定すれば（ステップＳ１４０２）、ヘッダ分析器２１は、前記データが既に圧縮されたデータであることを指示する分析コードＩＮＦ１をデータ圧縮管理器４０に伝送する。したがって、データ圧縮管理器４０は、圧縮していないバッファされたデータＢＤｉを出力バッファ５０に伝送する（ステップＳ１４０４）。データ圧縮管理器４０によってバイパスされたバッファされたデータＢＤｉは、直接または出力バッファ５０を通じて不揮発性メモリ装置に保存される（ステップＳ１４０８）。
【０１１７】
ヘッダ分析器２１が、ボディーＤＡＴＡ１に含まれたデータが圧縮されていないデータであると決定すれば（ステップＳ１４０２）、ヘッダ分析器２１は、ボディーＤＡＴＡ１に含まれたデータが圧縮されていないデータであることを指示する分析コードＩＮＦ１をデータ圧縮管理器４０に伝送する。
【０１１８】
分析コードＩＮＦ１に応答して、データ圧縮管理器４０は、圧縮データＣＤＡＴＡを生成させるためにバッファされたデータＢＤｉを圧縮する（ステップＳ１４０４）。データ圧縮管理器４０から出力された圧縮データＣＤＡＴＡは、直接または出力バッファ５０を通じて不揮発性メモリ装置に保存される（ステップＳ１４０８）。
【０１１９】
図１５は、データ圧縮装置のさらに他の動作を説明するためのフローチャートである。図１５に示された方法は、図４のデータ圧縮装置１０Ｃで行われる。
【０１２０】
ヘッダ分析器２５は、入力データＤＡＴＡのヘッダＨＥＡＤＥＲに含まれた指示ビットを分析して、入力データＤＡＴＡが、圧縮されたデータであるか否かを決定する（ステップＳ１５０２）。ボディーＤＡＴＡ１に含まれたデータが、圧縮されたデータであることを指示する第１値、例えば、１を有する指示ビットによって、ヘッダ分析器２５は、第１値を有する制御信号、例えば、ローレベルを有する制御信号を予測器２６に出力して予測器２６の動作をディセーブル（ｄｉｓａｂｌｅ）させる（ステップＳ１５０４）。
ヘッダ分析器２５は、バッファされたデータＢＤｉの圧縮のバイパスをデータ圧縮管理器４０に命令することができる分析コードＩＮＦ３をデータ圧縮管理器４０に出力する（ステップＳ１５０６）。
【０１２１】
ボディーＤＡＴＡ１に含まれたデータが、圧縮されていないデータであることを表わす第２値、例えば、０を有する指示ビットによって（ステップＳ１５０２）、ヘッダ分析器２５は、制御信号、例えば、ハイレベルを有する制御信号を予測器２６に出力して予測器２６の動作をイネーブルさせる（ステップＳ１５０８）。
【０１２２】
予測器２６は、図４を参照して説明したように、圧縮データＣＤＡＴＡのサイズを予測することができる（ステップＳ１５１０）。予測器２６は、圧縮データ（以下、‘予測データＥＣＤＡＴＡ’と称する）の予測されたサイズと基準データのサイズとを比較する（ステップＳ１５１２）。
【０１２３】
予測データＥＣＤＡＴＡのサイズが、基準データのサイズより大きい時、予測器２６は、バッファされたデータＢＤｉが圧縮される必要がないことを指示する分析コードＩＮＦ３をデータ圧縮管理器４０に伝送する。したがって、データ圧縮管理器４０は、圧縮されていないバッファされたデータＢＤｉを出力バッファ５０に伝送する（ステップＳ１５０６）。出力バッファ５０に保存されたバッファされたデータＢＤｉは、直接または出力バッファ５０を通じて不揮発性メモリ装置に保存される（ステップＳ１５１６）。
【０１２４】
予測データＥＣＤＡＴＡのサイズが、基準データのサイズより小さいか、同じである時、予測器２６は、バッファされたデータＢＤｉは必ず圧縮されなければならないことを指示する分析コードＩＮＦ３をデータ圧縮管理器４０に伝送する。分析コードＩＮＦ３に応答して、データ圧縮管理器４０は、バッファされたデータＢＤｉを圧縮する（ステップＳ１５１４）。圧縮データＣＤＡＴＡは、直接または出力バッファ５０を通じて不揮発性メモリ装置に保存される（ステップＳ１５１６）。
【０１２５】
図１１は、本発明の実施例によるデータ圧縮装置を含むデータ処理システムの一実施例を示す。データ処理システム１００は、データ圧縮装置１０Ａ、１０Ｂ、１０Ｃ、１０Ｄ、または１３１０を含みうる。データ処理システム１００は、ＳＳＤ（ｓｏｌｉｄ  ｓｔａｔｅ  ｄｒｉｖｅ）として具現されうる。また、データ処理システム１００は、データパターン分析器２０Ａ、２０Ｂ、２０Ｃ、２０Ｄ、または１３２０（総括的に２０）を含みうる。
【０１２６】
図１１を参照すると、データ処理システムまたはデータ処理装置１００は、メモリコントローラ９０と複数のフラッシュメモリ装置１４１とを含む。メモリコントローラ９０は、データパターン分析器２０を含むホストインターフェース１０１、データ圧縮管理器４０、メインプロセッサ１１０、揮発性メモリ１２０、及びフラッシュ管理コントローラ（Ｆｌａｓｈ  Ｍａｎａｇｅｍｅｎｔ  Ｃｏｎｔｒｏｌｌｅｒ、ＦＭＣ）１４０を含む。各構成要素４０、１０１、１１０、１２０、及び１４０は、データバス１００−１を通じて互いにデータ通信を行うことができる。
【０１２７】
ホストインターフェース１０１は、ホスト（図示せず）とメモリコントローラ９０でデータ通信のためのインターフェース機能を行う。ＤＲＡＭ（ｄｙｎａｍｉｃ  ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ）として具現された揮発性メモリ１２０は、図１Ａ、図２、図４、図５、または図１３に示された入力バッファ３０と出力バッファ５０との機能を共に行うことができる。
【０１２８】
ホストから出力された入力データＤＡＴＡが、第１データ経路ＰＡＴＨ１を通じて揮発性メモリ１２０に伝送される途中で、データパターン分析器２０は、入力データＤＡＴＡを受信し、入力データＤＡＴＡのパターンを分析する。入力データＤＡＴＡのパターンは、図１から図１０、図１３、図１４、及び図１５を参照して説明された方法によって分析されうる。
【０１２９】
データパターン分析器２０は、データバス１００−１を通じて分析結果による分析コードＩＮＦ１、ＩＮＦ２、ＩＮＦ３、またはＩＮＦ４をデータ圧縮管理器４０に伝送する。
【０１３０】
分析コードＩＮＦ１、ＩＮＦ２、ＩＮＦ３、またはＩＮＦ４が、データが圧縮される必要がないことを指示する時、データ圧縮管理器４０は、第２データ経路ＰＡＴＨ２を通じて揮発性メモリ１２０の入力バッファ３０からリードされたバッファされたデータＢＤｉを圧縮せず、揮発性メモリ１２０の出力バッファ５０に保存する。
【０１３１】
しかし、分析コードＩＮＦ１、ＩＮＦ２、ＩＮＦ３、またはＩＮＦ４が、データが圧縮されなければならないことを指示する時、データ圧縮管理器４０は、第２データ経路ＰＡＴＨ２を通じて揮発性メモリ１２０の入力バッファ３０からリードされたバッファされたデータＢＤｉを圧縮し、圧縮データＣＤＡＴＡを揮発性メモリ１２０の出力バッファ５０に保存する。
【０１３２】
揮発性メモリ１２０の出力バッファ５０に保存されたデータ、すなわち、バッファされたデータＢＤｉまたは圧縮データＣＤＡＴＡは、第３データ経路ＰＡＴＨ３を通じてＦＭＣ１４０に伝送される。そして、バッファされたデータＢＤｉまたは圧縮データＣＤＡＴＡは、ＦＭＣ１４０の制御によって複数のフラッシュメモリ装置１４１のうちの少なくとも１つのフラッシュメモリ装置に伝送される。
【０１３３】
図１２は、本発明の実施例によるデータ圧縮装置を含むデータ処理システムの他の実施例を示す。図１２のデータ処理システム２００は、データ圧縮装置１０Ａ、１０Ｂ、１０Ｃ、１０Ｄ、または１３１０を含みうる。図１２を参照すると、データ処理システムまたはデータ処理装置２００は、スマートカード（ｓｍａｒｔ  ｃａｒｄ）またはメモリカード（ｍｅｍｏｒｙ  ｃａｒｄ）として具現されうる。データ処理システム２００は、カードインターフェース２１０、メモリコントローラ２２０、及び不揮発性メモリ装置２３０を含む。
【０１３４】
メモリコントローラ２２０は、データ圧縮装置１０Ａ、１０Ｂ、１０Ｃ、１０Ｄ、または１３１０（総括的に１０に表示する）を含む。実施例によって、データ圧縮装置１０は、メモリコントローラ２２０の外部に具現されることもある。
【０１３５】
カードインターフェース２１０は、メモリコントローラ２２０とホスト（図示せず）との間で送受信するデータの交換を制御する。メモリコントローラ２２０は、不揮発性メモリ装置２３０の動作、例えば、プログラム（ｐｒｏｇｒａｍ）動作、リード（ｒｅａｄ）動作、及び／またはイレーズ（ｅｒａｓｅ）動作を制御する。
【０１３６】
ホストから出力され、カードインターフェース２１０を通じて入力されたデータＤＡＴＡが、入力バッファ３０に伝送される途中で、データ圧縮装置１０は、データＤＡＴＡのパターンを分析する。該分析結果に基づいて、データ圧縮装置１０は、バッファされたデータＢＤｉを選択的に圧縮し、バッファされたデータＢＤｉまたは圧縮データＣＤＡＴＡを不揮発性メモリ装置２３０に出力する。
【産業上の利用可能性】
【０１３７】
本発明は、データ圧縮装置とそれを含むデータ処理装置に利用されうる。
【符号の説明】
【０１３８】
１０Ａ、１０Ｂ、１０Ｃ、及び１０Ｄ：データ圧縮装置
２０Ａ、２０Ｂ、２０Ｃ、及び２０Ｄ：データパターン分析器
３０：入力バッファ
４０：データ圧縮管理器
４１：メモリ
４３：プロセッサ
４５：選択器
１０１：ホスト装置
１１０：メインプロセッサ
１２０：ＤＲＡＭ
１４０：フラッシュ管理コントローラ
２１０：カードインターフェース
２２０：メモリコントローラ
２３０：メモリ装置
【図１Ａ】
0005881416.tif 000003
【図１Ｂ】
0005881416.tif 000004
【図１Ｃ】
0005881416.tif 000005
【図２】
0005881416.tif 000006
【図３】
0005881416.tif 000007
【図４】
0005881416.tif 000008
【図５】
0005881416.tif 000009
【図６】
0005881416.tif 000010
【図７】
0005881416.tif 000011
【図８】
0005881416.tif 000012
【図９】
0005881416.tif 000013
【図１０】
0005881416.tif 000014
【図１１】
0005881416.tif 000015
【図１２】
0005881416.tif 000016
【図１３】
0005881416.tif 000017
【図１４】
0005881416.tif 000018
【図１５】
0005881416.tif 000019