JP2023044846A - データ伸長装置、データ圧縮装置、及びメモリシステム - Google Patents
データ伸長装置、データ圧縮装置、及びメモリシステム Download PDFInfo
- Publication number
- JP2023044846A JP2023044846A JP2021152935A JP2021152935A JP2023044846A JP 2023044846 A JP2023044846 A JP 2023044846A JP 2021152935 A JP2021152935 A JP 2021152935A JP 2021152935 A JP2021152935 A JP 2021152935A JP 2023044846 A JP2023044846 A JP 2023044846A
- Authority
- JP
- Japan
- Prior art keywords
- payload
- circuit
- data
- packet
- generation circuit
- 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.)
- Pending
Links
- 230000006837 decompression Effects 0.000 title claims abstract description 67
- 238000013144 data compression Methods 0.000 title claims description 51
- 238000012545 processing Methods 0.000 claims abstract description 63
- 238000001514 detection method Methods 0.000 claims abstract description 18
- 238000000926 separation method Methods 0.000 claims abstract description 5
- 238000000034 method Methods 0.000 claims description 25
- 238000007906 compression Methods 0.000 claims description 6
- 230000006835 compression Effects 0.000 claims description 6
- 239000000872 buffer Substances 0.000 description 80
- 238000010586 diagram Methods 0.000 description 18
- 230000000694 effects Effects 0.000 description 6
- 238000004891 communication Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 238000012937 correction Methods 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 239000000470 constituent Substances 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion 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/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/40—Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
- H03M7/4093—Variable length to variable length coding
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion 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/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/40—Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
- H03M7/42—Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code using table look-up for the coding or decoding process, e.g. using read-only memory
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion 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/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/60—General implementation details not specific to a particular type of compression
- H03M7/6005—Decoder aspects
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Memory System (AREA)
Abstract
【課題】データ伸長処理のスループットを向上する。【解決手段】実施形態によれば、データ伸長装置は、ヘッダ内の境界情報に基づいて、圧縮ストリーム内のヘッダとペイロードとの境界を検出する検出回路111と、前記ヘッダと前記ペイロードとを分離する分離回路112と、前記ヘッダ内の圧縮された符号化テーブルを伸長する第1伸長回路113と、前記第1伸長回路の出力を用いて、前記ペイロードを伸長する第2伸長回路115とを含む。【選択図】図3
Description
本発明の実施形態は、データ伸長装置、データ圧縮装置、及びメモリシステムに関する。
NAND型フラッシュメモリなどの不揮発性半導体メモリを搭載したSSD(Solid State Drive)を用いたメモリシステムが知られている。
エントロピー符号化方式の圧縮データフォーマットとして、動的ハフマン(Huffman)符号が知られている。例えばデフレート規格の1つであるRFC(Request For Comments)1951に準じた動的ハフマン符号化による圧縮ストリームには、圧縮されたハフマン符号化テーブルを含むヘッダと、ハフマン符号化されたデータを含むペイロードとの組が複数個含まれている。
本発明の一実施形態では、データ伸長処理のスループットを向上できるデータ伸長装置を提供する。
実施形態に係るデータ伸長装置は、ヘッダ内の境界情報に基づいて、圧縮ストリーム内のヘッダとペイロードとの境界を検出する検出回路と、ヘッダとペイロードとを分離する分離回路と、ヘッダ内の圧縮された符号化テーブルを伸長する第1伸長回路と、第1伸長回路の出力を用いて、ペイロードを伸長する第2伸長回路と、を含む。
以下に、実施形態について図面を参照して説明する。図面は模式的なものである。なお、以下の説明において、略同一の機能及び構成を有する構成要素については、同一符号を付す。参照符号を構成する文字の後の数字は、同様の構成を有する要素同士を区別するために用いられる。
1.第1実施形態
1.1 構成
1.1.1 データ処理装置の構成
まず、図1を参照して、メモリシステムを有するデータ処理装置1の構成の一例を説明する。図1は、データ処理装置1の全体構成の一例を示すブロック図である。
1.1 構成
1.1.1 データ処理装置の構成
まず、図1を参照して、メモリシステムを有するデータ処理装置1の構成の一例を説明する。図1は、データ処理装置1の全体構成の一例を示すブロック図である。
図1に示すように、データ処理装置1は、ホストデバイス2及びメモリシステム3を含む。なお、ホストデバイス2には、複数のメモリシステム3が接続されていてもよい。
ホストデバイス2は、メモリシステム3にアクセスする情報処理装置(コンピューティングデバイス)である。ホストデバイス2は、メモリシステム3を制御する。より具体的には、例えば、ホストデバイス2は、メモリシステム3にデータの書き込み動作または読み出し動作を要求(命令)する。
メモリシステム3は、例えば、不揮発性メモリを備えたSSD(Solid State Drive)である。メモリシステム3は、例えばホストバスを介してホストデバイス2に接続される。なお、メモリシステム3は、無線通信を介してホストデバイス2に接続されてもよい。
1.1.2 メモリシステムの構成
引き続き図1を参照して、メモリシステム3の構成の一例について説明する。
引き続き図1を参照して、メモリシステム3の構成の一例について説明する。
図1に示すように、メモリシステム3は、メモリコントローラ10及び不揮発性メモリ20を含む。
メモリコントローラ10は、ホストデバイス2からの要求(命令)に応答して、不揮発性メモリ20に対してデータの読み出し動作、書き込み動作、及び消去動作等を命令する。また、メモリコントローラ10は、不揮発性メモリ20のメモリ空間を管理する。
不揮発性メモリ20は、例えば、複数のメモリチップ21を含む。メモリチップ21は、例えば、NAND型フラッシュメモリであってもよい。
次に、メモリコントローラ10の内部構成について説明する。メモリコントローラ10は、ホストインターフェイス回路11、プロセッサ(CPU;Central Processing Unit)12、内蔵メモリ(RAM;Random Access Memory)13、バッファメモリ14、データ圧縮装置15、データ伸長装置16、及びメモリインターフェイス回路17を含む。これらの回路は、例えばメモリバスにより互いに接続されている。なお、メモリコントローラ10の各機能は専用回路で実現されてもよいし、プロセッサがファームウェアを実行することにより実現されてもよい。
ホストインターフェイス回路11は、ホストバスを介してホストデバイス2と接続され、ホストデバイス2との通信を司る。ホストインターフェイス回路11は、CPU12及びバッファメモリ14に、ホストデバイス2から受信した要求及びデータをそれぞれ転送する。また、ホストインターフェイス回路11は、CPU12の命令に応答して、バッファメモリ14内のデータをホストデバイス2へ転送する。
CPU12は、メモリコントローラ10全体の動作を制御する。例えば、CPU12は、ホストデバイス2から受信した要求に基づいて、不揮発性メモリ20に書き込み動作、読み出し動作、及び消去動作を命令する。また、例えば、CPU12は、データ圧縮装置15にデータの圧縮処理を命令する。CPU12は、データ伸長装置16にデータの伸長処理を命令する。
また、CPU12は、ウェアレベリング等、不揮発性メモリ20を管理するための様々な処理を実行する。更に、CPU12は、各種の演算を実行する。例えば、CPU12は、データの暗号化処理やランダマイズ処理等を実行する。
内蔵メモリ13は、例えばDRAM等の半導体メモリであり、CPU12の作業領域として使用される。内蔵メモリ13は、不揮発性メモリ20を管理するためのファームウェアや、各種の管理テーブル等を保持する。
バッファメモリ14は、メモリコントローラ10が不揮発性メモリ20から受信した読み出しデータや、ホストデバイス2から受信した入力データ等を一時的に保持する。
データ圧縮装置15は、CPU12の制御に基づいて、入力データを圧縮するエンコーダである。本実施形態では、データ圧縮装置15は、動的ハフマン符号化による圧縮ストリームを生成する。ハフマン符号化とは、出現頻度の高いシンボルほど、短い符号長(少ないビット数)の符号語を割り当てる圧縮技術である。圧縮ストリームは、圧縮されたハフマン符号化テーブルを含むヘッダと、ハフマン符号化されたデータを含むペイロードとの組(以下、「ブロック」と表記する)を複数個含む。より具体的には、データ圧縮装置15は、例えば、入力データを予め設定されたシンボル数を含むユニット(以下、「シンボルユニット」と表記する)に分割する。なお、シンボルユニットに含まれるシンボル数は1個以上であればよい。データ圧縮装置15は、シンボルユニット(分割された入力データ)毎に、ヘッダとペイロードとを含むブロックを生成する。圧縮ストリームが、例えば、書き込みデータとして、不揮発性メモリ20に書き込まれる。圧縮ストリームの詳細については後述する。圧縮ストリームがデータ圧縮装置15で生成された後、CPU12は、圧縮ストリームに対する誤り訂正符号化処理等の所定の処理を実行し、圧縮ストリームに対して所定の処理が実行されたデータをメモリインターフェイス回路17経由で不揮発性メモリ20へ書き込んでもよい。すなわち、CPU12は、データ圧縮装置15で生成された圧縮ストリームに基づくデータを不揮発性メモリ20へ書き込んでもよい。
データ伸長装置16は、CPU12の制御に基づいて、圧縮ストリーム(圧縮データ)を伸長するデコーダである。データ伸長装置16は、圧縮されたハフマン符号化テーブルを伸長(復元)する。CPU12は、メモリインターフェイス回路17経由で不揮発性メモリ20から読み出したデータに対して誤り訂正処理等の所定の処理を実行した後、読み出したデータに対して所定の処理が実行されたデータを圧縮ストリームとしてデータ伸長装置16に伸長させてもよい。すなわち、データ伸長装置16は、不揮発性メモリ20から読み出されたデータに基づく圧縮ストリームを伸長してもよい。そして、データ伸長装置16は、復元したハフマン符号化テーブルを用いて、ペイロードを復号する。
メモリインターフェイス回路17は、バスを介して不揮発性メモリ20と接続され、不揮発性メモリ20との通信を司る。メモリインターフェイス回路17は、不揮発性メモリ20と、データ及び各種信号の送受信を行う。
1.1.3 データ圧縮装置
次に、図2を参照して、データ圧縮装置15の構成の一例について説明する。図2は、データ圧縮装置15のブロック図である。
次に、図2を参照して、データ圧縮装置15の構成の一例について説明する。図2は、データ圧縮装置15のブロック図である。
図2に示すように、データ圧縮装置15は、頻度テーブル生成回路101、符号化テーブル生成回路102、ペイロード生成回路103、遅延バッファ104、ペイロードサイズカウンタ105、及び境界情報追加回路106を含む。
頻度テーブル生成回路101は、頻度テーブルを生成する回路である。より具体的には、頻度テーブル生成回路101は、シンボルユニット(分割された入力データ)毎に、シンボルの種類毎の出現頻度を算出する。そして、頻度テーブル生成回路101は、算出結果に基づいて、シンボルユニット毎に異なる頻度テーブルを生成する。シンボルユニットは、圧縮ストリームにおける1つのブロックのペイロードに対応する。頻度テーブル生成回路101は、頻度テーブルに基づいて、シンボル出現頻度情報を生成し、符号化テーブル生成回路102に送信する。
符号化テーブル生成回路102は、入力データに基づいてハフマン符号化テーブルを生成する回路である。より具体的には、頻度テーブル生成回路101から受信したシンボル出現頻度情報に基づいて、シンボルユニット内の各シンボルに可変符号長のハフマン符号語を割り当てる。このとき、符号化テーブル生成回路102は、出現頻度の高いシンボルの符号長が短くなるように、各シンボルにハフマン符号語を割り当てる。そして、符号化テーブル生成回路102は、シンボルとハフマン符号語との関係を示すハフマン符号化テーブルを生成する。なお、符号化テーブル生成回路102は、頻度テーブル生成回路101と同様に、シンボルユニット毎に異なるハフマン符号化テーブルを生成する。
また、符号化テーブル生成回路102は、ハフマン符号化テーブルを圧縮する。そして、符号化テーブル生成回路102は、圧縮されていないハフマン符号化テーブルと、圧縮されたハフマン符号化テーブル(以下、「圧縮ハフマン符号化テーブル」とも表記する)をペイロード生成回路103に送信する。
ペイロード生成回路103は、シンボルユニット(入力データ)と圧縮されていないハフマン符号化テーブルとに基づいて、ペイロードを生成する。ペイロードは、可変符号長の複数のハフマン符号語を含む。このため、ペイロード毎に、ペイロードサイズは異なる。なお、ペイロードは、ペイロードの最後に、ペイロードの終端を表す終端記号を含んでいてもよい。ペイロード生成回路103は、圧縮ハフマン符号化テーブル及びペイロードを、遅延バッファ104に送信する。また、ペイロード生成回路103は、ペイロードを、ペイロードサイズカウンタ105に送信する。
遅延バッファ104は、圧縮ハフマン符号化テーブル及びペイロードのバッファとして機能する。遅延バッファ104は、ペイロード生成回路103から受信した圧縮ハフマン符号化テーブル及びペイロードを遅延させて境界情報追加回路106に送信する。
ペイロードサイズカウンタ105は、ペイロードのデータサイズ(ビット数)をカウントして、ペイロードサイズの情報を生成する。ペイロードサイズカウンタ105は、境界情報として、ペイロードサイズの情報を境界情報追加回路106に送信する。すなわち、ペイロードサイズカウンタ105は、境界情報を生成する。境界情報は、圧縮ストリームにおいて、ペイロードの終端位置を示す情報である。換言すれば、境界情報は、ペイロードと次のブロックのヘッダとの境界位置を示す情報である。なお、境界情報は、ブロック内のヘッダとペイロードの境界を示す情報を含んでいてもよい。
境界情報追加回路106は、境界情報を、ペイロードの前に追加する。境界情報追加回路106は、境界情報及び圧縮ハフマン符号化テーブルを含むヘッダを生成する。なお、境界情報は、ヘッダ内において、圧縮ハフマン符号化テーブルの前に配置されてもよいし、圧縮ハフマン符号化テーブルの後に配置されてもよい。更に、境界情報は、圧縮ハフマン符号化テーブルデータ及びペイロードデータにインタリーブさせて配置されてもよい。境界情報追加回路106は、圧縮ストリームの1つのブロックとして、ヘッダとペイロードとの組を出力する。
1.1.4 データ伸長装置
次に、図3を参照して、データ伸長装置16の構成の一例について説明する。図3は、データ伸長装置16のブロック図である。
次に、図3を参照して、データ伸長装置16の構成の一例について説明する。図3は、データ伸長装置16のブロック図である。
図3に示すように、データ伸長装置16は、境界検出回路111、デマルチプレクサ(DEMUX:de-multiplexer)112、符号化テーブル復元回路113、遅延バッファ114、及びペイロード復号回路115を含む。
境界検出回路111は、圧縮ストリームにおける各ブロックの境界及びブロック内のヘッダとペイロードの境界を検出する。境界検出回路111は、検出した境界に基づいて、制御信号をDEMUX112に送信する。例えば、境界検出回路111は、圧縮ストリームがヘッダである期間、制御信号をLow(“L”)レベルとし、圧縮ストリームがペイロードである期間、制御信号をHigh(“H”)レベルとする。
境界検出回路111は、圧縮ストリームを受信する。そして、境界検出回路111は、例えば、圧縮ストリーム内の境界情報からペイロードサイズを抽出する。また、境界検出回路111は、符号化テーブル復元回路113からヘッダ終了信号を受信する。ヘッダ終了信号は、符号化テーブル復元回路113が、ヘッダの終端を検知したことを示す信号である。例えば、ヘッダ終了信号は、符号化テーブル復元回路113がヘッダの終端を検知した場合に、“L”レベルから“H”レベルにされる。
境界検出回路111は、“H”レベルのヘッダ終了信号を受信すると、制御信号を“L”レベルから“H”レベルに切り替える。そして、境界検出回路111は、境界情報(ペイロードサイズの情報)に基づいて、圧縮ストリームのペイロードをカウントする。境界検出回路111は、カウント数がペイロードサイズに達すると、すなわち、圧縮ストリームがペイロードと次にブロックのヘッダとの境界に達すると、制御信号を“H”レベルから“L”レベルに切り替える。境界検出回路111は、圧縮ストリームのブロック毎に、上記動作を繰り返す。
DEMUX112は、境界検出回路111から受信した制御信号に基づいて、圧縮ストリームをヘッダとペイロードに分離する分離回路である。DEMUX112は、制御信号が“L”レベルの期間、ヘッダを符号化テーブル復元回路113に送信し、制御信号が“H”レベルの期間、ペイロードを遅延バッファ114に送信する。
符号化テーブル復元回路113は、ヘッダ内の圧縮ハフマン符号化テーブルを復元するデコード回路(伸長回路)である。符号化テーブル復元回路113は、復元したハフマン符号化テーブルをペイロード復号回路115に送信する。また、符号化テーブル復元回路113は、ヘッダの終端を検知すると、“H”レベルのヘッダ終了信号を境界検出回路111に送信する。
遅延バッファ114は、DEMUX112から受信したペイロードのバッファとして機能する。遅延バッファ114は、1つまたは複数のブロックのペイロードを保持し得る。遅延バッファ114は、例えばペイロード復号回路115の要求に基づいて、要求されたブロックのペイロードを、ペイロード復号回路115に送信する。
ペイロード復号回路115は、ハフマン符号化テーブルに基づいて、ペイロードを復号するデコード回路(伸長回路)である。ペイロード復号回路115は、復号したシンボル(データ)を出力する。ペイロード復号回路115は、テーブルバッファ116を含む。テーブルバッファ116は、1つまたは複数のブロックのハフマン符号化テーブルを保持し得る。ペイロード復号回路115は、テーブルバッファ116に格納されたハフマン符号化テーブルに基づいて、対応するペイロードを復号する。
1.2 頻度テーブル
次に、図4を参照して、頻度テーブルの一例について説明する。図4は、頻度テーブルの一例である。以下では、入力データ(入力シンボル)が、5つのシンボル“A”~“E”の組み合わせである場合について説明する。
次に、図4を参照して、頻度テーブルの一例について説明する。図4は、頻度テーブルの一例である。以下では、入力データ(入力シンボル)が、5つのシンボル“A”~“E”の組み合わせである場合について説明する。
図4に示すように、例えば、頻度テーブルは、シンボル毎に、固定長符号と出現頻度とを示す。5つのシンボル“A”~“E”を固定長符号で表す場合、例えば3ビットデータが割り当てられる。図4の例では、シンボル“A”には、固定長符号“000”が割り当てられる。シンボル“B”には、固定長符号“001”が割り当てられる。シンボル“C”には、固定長符号“010”が割り当てられる。シンボル“D”には、固定長符号“011”が割り当てられる。シンボル“E”には、固定長符号“100”が割り当てられる。すなわち、入力データは、固定長符号“000”、“001”、“010”、“011”、及び“100”の組み合わせである。
頻度テーブル生成回路101は、予め設定されたシンボル(固定長符号)の種類毎に、固定長符号の出現頻度を算出する。すなわち、頻度テーブル生成回路101は、シンボルユニット内における各シンボルの出現回数をカウントする。図4の例は、シンボルユニット内のシンボル(固定長符号)数が20である場合を示している。例えば、シンボル“A”の出現頻度は、6である。シンボル“B”の出現頻度は、7である。シンボル“C”の出現頻度は、4である。シンボル“D”の出現頻度は、1である。シンボル“E”の出現頻度は、2である。
1.3 ハフマン符号化テーブル
次に、図5を参照して、ハフマン符号化テーブルの一例について説明する。図5は、ハフマン符号化テーブルの一例である。
次に、図5を参照して、ハフマン符号化テーブルの一例について説明する。図5は、ハフマン符号化テーブルの一例である。
図5に示すように、例えば、ハフマン符号化テーブルは、シンボル毎に、固定長符号とハフマン符号語の可変符号長(ビット数)とハフマン符号語とを示す。例えば、ハフマン符号化テーブルが、図4を用いて説明した頻度テーブルに基づいて生成される場合、シンボルの出現頻度は、“B”>“A”>“C”>“E”>“D”の順である。この場合、シンボル“B”の符号長には1が割り当てられる。シンボル“A”の符号長には2が割り当てられる。シンボル“C”の符号長には3が割り当てられる。シンボル“E”の符号長には4が割り当てられる。シンボル“D”の符号長には4が割り当てられる。次に、シンボル毎にハフマン符号語を割り当てると、例えば、シンボル“B”には、ハフマン符号語“0”が割り当てられる。シンボル“A”には、ハフマン符号語“10”が割り当てられる。シンボル“C”には、ハフマン符号語“110”が割り当てられる。シンボル“E”には、ハフマン符号語“1110”が割り当てられる。シンボル“D”には、ハフマン符号語“1111”が割り当てられる。
1.4 圧縮ストリームの構成
次に、図6を参照して、圧縮ストリームの構成の一例について説明する。図6は、圧縮ストリームの一例を示す図である。
次に、図6を参照して、圧縮ストリームの構成の一例について説明する。図6は、圧縮ストリームの一例を示す図である。
図6に示すように、圧縮ストリームは、複数のブロックの繰り返しである。例えば、圧縮ストリーム内のブロック数をM(Mは2以上の整数)とすると、N(Nは1以上且つMM以下の整数)番目のブロックは、境界情報及び圧縮ハフマン符号化テーブルを含むヘッダと、ハフマン符号化されたシンボル(すなわち複数のハフマン符号語)を含むペイロードとにより構成される。他のブロックも同様の構成である。ハフマン符号語は、可変長符号であるため、N番目のブロックのペイロードサイズと、別のブロック(例えば、(N+1)番目のブロック)のペイロードサイズとは、異なる。
1.5 データ圧縮処理
次に、図7を参照して、データ圧縮処理(圧縮ストリームの生成処理)の一例について説明する。図7は、データ圧縮装置15におけるデータ圧縮処理の流れを示すフローチャートである。
次に、図7を参照して、データ圧縮処理(圧縮ストリームの生成処理)の一例について説明する。図7は、データ圧縮装置15におけるデータ圧縮処理の流れを示すフローチャートである。
図7に示すように、まず、データ圧縮装置15は、入力データ(入力シンボル)を受信すると、ブロックの番号を表す変数Nを1に設定する(ステップS11)。すなわち、データ圧縮装置15は、まず1番目のブロックの生成を開始する。
頻度テーブル生成回路101は、シンボルユニットに対応する頻度テーブルを生成する(ステップS12)。そして、頻度テーブル生成回路101は、頻度テーブルに基づくシンボル出現頻度情報を符号化テーブル生成回路102に送信する(ステップS13)。
符号化テーブル生成回路102は、シンボル出現頻度情報に基づいて、ハフマン符号化テーブルを生成する(ステップS14)。更に符号化テーブル生成回路102は、ハフマン符号化テーブルを圧縮して、圧縮ハフマン符号化テーブルを生成する(ステップS15)。符号化テーブル生成回路102は、ハフマン符号化テーブル及び圧縮ハフマン符号化テーブルを、この順番に並べて、ペイロード生成回路103に送信する。
ペイロード生成回路103は、ハフマン符号化テーブルを用いて、シンボルユニットをハフマン符号化し、ペイロードを生成する(ステップS16)。ペイロード生成回路103は、圧縮ハフマン符号化テーブル及びペイロードを、遅延バッファ104に送信する。また、ペイロード生成回路103は、ペイロードをペイロードサイズカウンタ105に送信する。
ペイロードサイズカウンタ105は、ペイロードのデータサイズをカウントする(ステップS17)。ペイロードサイズカウンタ105は、境界情報として、ペイロードサイズの情報を、境界情報追加回路106に送信する。
境界情報追加回路106は、境界情報をヘッダに追加する(ステップS18)。これにより、境界情報及び圧縮ハフマン符号化テーブルを含むヘッダが生成される。データ圧縮装置15は、ヘッダ及びペイロードを、圧縮ストリームにおけるN番目のブロックとして出力する。
入力データ(次のシンボルユニット)が残っている場合(ステップS19_Yes)、データ圧縮装置15は、変数Nをカウントアップする(ステップS20)。そして、データ圧縮装置15は、ステップS12に進み、次のブロックを生成する。
入力データ(次のシンボルユニット)が残っていない場合(ステップS19_No)、すんわち、N=Mの場合、データ圧縮装置15は、データの圧縮処理を終了する。
1.6 データ伸長処理
次に、図8を参照して、データ伸長処理について説明する。図8は、データ伸長装置16におけるデータ伸長処理時のデータの流れを示す図である。
次に、図8を参照して、データ伸長処理について説明する。図8は、データ伸長装置16におけるデータ伸長処理時のデータの流れを示す図である。
図8に示すように、データ伸長処理は、圧縮ハフマン符号化テーブルの復元処理と、ペイロードの復号処理とを含む。本実施形態のデータ伸長装置16は、圧縮ストリームを受信すると、圧縮ハフマン符号化テーブルの復元処理と、異なるブロックのペイロードの復号処理と並列に実行する。
より具体的には、例えば、データ伸長装置16は、圧縮ストリームを受信する。符号化テーブル復元回路113は、例えば、N番目のブロックのヘッダ内の圧縮ハフマン符号化テーブル(単に「N番目のテーブル」とも表記する)を受信すると、N番目のテーブルの復元処理を行う。N番目のテーブルの復元処理が終わるまで、N番目のブロックのペイロード(単に、「N番目のペイロード」とも表記する)は、遅延バッファ114にて保持される。N番目のテーブルの復元処理が終了すると、符号化テーブル復元回路113は、復元したN番目のテーブルをペイロード復号回路115のテーブルバッファ116に送信する。ペイロード復号回路115は、遅延バッファ114からN番目のペイロードを受信する。そして、ペイロード復号回路115は、N番目のペイロードの復号処理を実行する。
ペイロード復号回路115がN番目のペイロードの復号処理を実行している間に、符号化テーブル復元回路113は、(N+1)番目のテーブルの復元処理を行う。すなわち、N番目のペイロードの復号処理と、(N+1)番目のテーブルの復元処理が並列に処理される。換言すれば、異なるブロックのペイロードの復号処理と、圧縮ハフマン符号化テーブルの復元処理とが、並列に実行される。
(N+1)番目のテーブルの復元処理が終わるまで、(N+1)番目のペイロードは、遅延バッファ114にて保持される。(N+1)番目のテーブルの復元処理が終了すると、符号化テーブル復元回路113は、復元した(N+1)番目のテーブルをペイロード復号回路115のテーブルバッファ116に送信する。ペイロード復号回路115は、N番目のペイロードの復号処理が終了すると、遅延バッファ114から(N+1)番目のペイロードを受信する。そして、ペイロード復号回路115は、(N+1)番目のペイロードの復号処理を実行する。
ペイロード復号回路115が(N+1)番目のペイロードの復号処理を実行している間、符号化テーブル復元回路113は、(N+2)番目のテーブルの復元処理を行う。すなわち、(N+1)番目のペイロードの復号処理と、(N+2)番目のテーブルの復元処理が並列に処理される。
(N+2)番目のテーブルの復元処理が終わるまで、(N+2)番目のペイロードは、遅延バッファ114にて保持される。(N+2)番目のテーブルの復元処理が終了すると、符号化テーブル復元回路113は、復元した(N+2)番目のテーブルをペイロード復号回路115のテーブルバッファ116に送信する。ペイロード復号回路115は、(N+1)番目のペイロードの復号処理が終了すると、遅延バッファ114から(N+2)番目のペイロードを受信する。そして、ペイロード復号回路115は、(N+2)番目のペイロードの復号処理を実行する。
上述のように、ペイロード復号回路115がN番目のペイロードの復号処理を実行している間に、符号化テーブル生成回路102は、先のブロックの圧縮ハフマン符号化テーブルの復元処理を実行する。このため、ペイロード復号回路115は、圧縮ハフマン符号化テーブルの復元処理の終了を待たずに、各ブロックのペイロードの復号処理を、連続して実行できる。
なお、図8の例では、符号化テーブル復元回路113は、N番目のペイロードの復号処理の間に、(N+1)番目の圧縮ハフマン符号化テーブルの復元処理を実行する場合について説明したが、これに限定されない。符号化テーブル復元回路113は、N番目のペイロードの復号処理の間に、(N+2)番目以降の圧縮ハフマン符号化テーブルの復元処理を実行してもよい。すなわち、ペイロード復号回路115がN番目のペイロードの復号処理している間に、符号化テーブル復元回路113は、(N+K)番目の圧縮ハフマン符号化テーブルの復元処理を並列に実行する。このとき、Kは1以上の整数であり、且つ(N+K)はM以下の整数である。
1.7 本実施形態に係る効果
本実施形態に係る構成であれば、メモリシステム3は、データ伸長処理のスループットを向上できる。本効果につき、詳述する。
本実施形態に係る構成であれば、メモリシステム3は、データ伸長処理のスループットを向上できる。本効果につき、詳述する。
ブロック毎に圧縮ハフマン符号化テーブル(ヘッダ)とハフマン符号化されたデータ(ペイロード)を有する圧縮ストリームを伸長する場合、圧縮ハフマン符号化テーブルを復元した後に、復元したハフマン符号化テーブルを用いてペイロードの復号処理が実行される。したがって、ブロック毎に圧縮ハフマン符号化テーブルの復元処理とペイロードの復号処理とが繰り返される。このため、各ブロックの復号されたデータ(シンボル)の出力の間に、圧縮ハフマン符号化テーブルの復元処理による出力ブランクが発生する。
これに対し、本実施形態に係る構成であれば、データ伸長装置16は、圧縮ハフマン符号化テーブルの復元処理と、異なるブロックのペイロードの復号処理とを並列に実行できる。換言すれば、ペイロード復号回路115がN番目のブロックのペイロードの復号処理を実行している間に、符号化テーブル復元回路113は、(N+K)番目のブロックの圧縮ハフマン符号化テーブルの復元処理を実行できる。これにより、データ伸長装置16は、圧縮ハフマン符号化テーブルの復元処理による出力ブランクが発生することなく、各ブロックの復号されたデータを連続して出力できる。よって、メモリシステム3は、データ伸長処理のスループットを向上できる。
また、本実施形態に係る構成であれば、データ圧縮装置15は、ペイロードサイズの情報を含む境界情報を生成できる。そして、データ圧縮装置15は、境界情報と圧縮ハフマン符号化テーブルを含むヘッダを生成できる。境界情報により、データ伸長装置16は、圧縮ハフマン符号化テーブルの復元処理及びペイロードの復号処理を実行する前に、ブロックと次のブロックの境界を検出できる。
2.第2実施形態
次に、第2実施形態について説明する。第2実施形態では、第1実施形態とは異なるデータ圧縮装置15の構成について説明する。以下、第1実施形態と異なる点を中心に説明する。
次に、第2実施形態について説明する。第2実施形態では、第1実施形態とは異なるデータ圧縮装置15の構成について説明する。以下、第1実施形態と異なる点を中心に説明する。
2.1 データ圧縮装置
図9を参照して、データ圧縮装置15の構成の一例について説明する。図9は、データ圧縮装置15のブロック図である。
図9を参照して、データ圧縮装置15の構成の一例について説明する。図9は、データ圧縮装置15のブロック図である。
図9に示すように、データ圧縮装置15は、頻度テーブル生成回路101、符号化テーブル生成回路102、ペイロード生成回路103、境界情報追加回路106、及びペイロードサイズ演算回路201を含む。頻度テーブル生成回路101、符号化テーブル生成回路102、ペイロード生成回路103、境界情報追加回路106は、第1実施形態の図2の説明と同様である。
ペイロードサイズ演算回路201は、頻度テーブル生成回路101からシンボル出現頻度情報を受信し、符号化テーブル生成回路102から各シンボルの符号長の情報を受信する。ペイロードサイズ演算回路201は、式1に基づいて、ペイロードサイズを算出する、すなわち、境界情報を生成する。
すなわち、ペイロードサイズ演算回路201は、シンボルユニット内の全シンボルについて、出現頻度と可変符号長との積を求め、その総和を算出する。より具体的には、例えば、シンボルユニット内のシンボルが図4及び図5で説明した関係にある場合、そのページサイズは、2×6(シンボル“A”)+1×7(シンボル“B”)+3×4(シンボル“C”)+4×1(シンボル“D”)+4×2(シンボル“E”)=43(bit)となる。
ペイロードサイズ演算回路201は、算出したペイロードサイズを境界情報追加回路106に送信する。
2.2 本実施形態に係る効果
本実施形態に係る構成であれば、第1実施形態と同様の効果が得られる。更に、本実施形態に係る構成では、ペイロード生成より前にペイロードサイズが計算できる。そのため、遅延バッファは不要となり、圧縮装置の回路実装コストと出力レイテンシを削減できる。
本実施形態に係る構成であれば、第1実施形態と同様の効果が得られる。更に、本実施形態に係る構成では、ペイロード生成より前にペイロードサイズが計算できる。そのため、遅延バッファは不要となり、圧縮装置の回路実装コストと出力レイテンシを削減できる。
3.第3実施形態
次に、第3実施形態について説明する。第3実施形態では、ペイロードの生成及び復号の方法として、インタリーブを適用する場合(以下、「インタリーブ格納方式」と表記する)について説明する。以下、第1及び第2実施形態と異なる点を中心に説明する。
次に、第3実施形態について説明する。第3実施形態では、ペイロードの生成及び復号の方法として、インタリーブを適用する場合(以下、「インタリーブ格納方式」と表記する)について説明する。以下、第1及び第2実施形態と異なる点を中心に説明する。
3.1 データ圧縮装置
まず、図10を参照して、データ圧縮装置15の構成の一例について説明する。図10は、データ圧縮装置15のブロック図である。
まず、図10を参照して、データ圧縮装置15の構成の一例について説明する。図10は、データ圧縮装置15のブロック図である。
本実施形態のデータ圧縮装置15は、インタリーブ格納方式によりハフマン符号化を実行する。この場合、複数のハフマン符号語を含む複数の固定長パケットが生成される。そして、複数のパケットを含むペイロードが構成される。
図10に示すように、データ圧縮装置15は、頻度テーブル生成回路101、符号化テーブル生成回路102、ペイロード生成回路103、境界情報追加回路106、及びペイロードサイズ予測回路301を含む。頻度テーブル生成回路101、符号化テーブル生成回路102、境界情報追加回路106は、第1実施形態の図2の説明と同様である。
本実施形態のペイロード生成回路103は、複数のチャネルに接続された複数のパケット生成ユニットを含む。ペイロード生成回路103の構成の詳細については後述する。ペイロード生成回路103は、複数のパケット生成ユニットにより、パケット生成の並列処理を実行する。パケットは固定長のため、パケットが、ハフマン符号語により全て埋まらない場合がある。この場合、パケットには、無効データが挿入される。以下、パケットの一部に無効データ(パディング)が挿入されている場合を「一部パディング」と表記する。パケット内が全て無効データである場合を「全部パディング」と表記する。なお、一部パディング及び全部パディングは、各チャネルにおいて、最大で1つずつ発生し得る。
ペイロードサイズ予測回路301は、ペイロードサイズを予測する。インタリーブ格納方式では、一部パディング及び全部パディングが発生し得る。このため、ペイロードサイズ予測回路301は、ペイロードサイズが取り得る最大値を予測する。
ペイロードサイズ予測回路301は、頻度テーブル生成回路101からシンボル出現頻度情報を受信し、符号化テーブル生成回路102からシンボルの符号長の情報を受信する。また、ペイロードサイズ予測回路301は、ペイロード生成回路103からパケットサイズ及びチャネル数(すなわち、並列処理数)の情報を受信する。ペイロードサイズ予測回路301は、予測ペイロードサイズとして、全シンボルの符号長の総和と、パディングの予測値(最大値)との和を算出する。
より具体的には、ペイロードサイズ予測回路301は、全シンボルの出現頻度と可変符号長との積を求め、その総和を、データサイズ(A)として算出する。なお、データサイズ(A)は、第2実施形態の式1により算出される。
ペイロードサイズ予測回路301は、一部パディングにおけるパディングサイズ(パディングのデータサイズ)の最大値とチャネル数との積を、データサイズ(B)として算出する。一部パディングにおけるパディングサイズの最大値は、パケット内に1ビットのデータが存在している場合である。したがって、データサイズ(B)の算出式は、(B)=(パケットサイズ-1)×チャネル数、である。
ペイロードサイズ予測回路301は、全部パディングにおけるパディングサイズ(すなわちパケットサイズ)とチャネル数との積を、データサイズ(C)として算出する。したがって、データサイズ(C)の算出式は、(C)=パケットサイズ×チャネル数、である。従って、データサイズ(B)とデータサイズ(C)との和は、チャネル数とパケットサイズの2倍から1ビット引いた値との積である。換言すれば、データサイズ(B)とデータサイズ(C)との和は、ペイロード生成回路103における符号化の並列処理数(またはペイロード復号回路115における復号化の並列処理数)とパケットサイズの2倍未満の最大値とを積算したデータサイズとも言える。
ペイロードサイズ予測回路301は、(A)+(B)+(C)の演算結果を、予測ペイロードサイズとして、境界情報追加回路106に送信する。
3.1.1 ペイロード生成回路の構成
次に、図11を参照して、ペイロード生成回路103の構成の一例について説明する。図11は、ペイロード生成回路103の構成を示すブロック図である。なお、図11の例は、ペイロード生成回路103が2チャネル構成である場合について説明するが、これに限定されない。ペイロード生成回路103は、3チャネル以上の構成であってもよい。
次に、図11を参照して、ペイロード生成回路103の構成の一例について説明する。図11は、ペイロード生成回路103の構成を示すブロック図である。なお、図11の例は、ペイロード生成回路103が2チャネル構成である場合について説明するが、これに限定されない。ペイロード生成回路103は、3チャネル以上の構成であってもよい。
図11に示すように、ペイロード生成回路103は、インタリーブ回路1001、パケット生成ユニット1002a及び1002b、並びに固定長パケットマルチプレクサ(MUX:multiplexer)1003を含む。
インタリーブ回路1001は、シンボルユニットを複数のシンボル列に分解して、複数のチャネルに振り分ける。図11の例では、インタリーブ回路1001は、2つのチャネルCH-A及びCH-Bを有する。
パケット生成ユニット1002aは、パケットを生成するユニットである。パケット生成ユニット1002aは、チャネルCH-Aに接続される。
パケット生成ユニット1002aは、符号化回路1011a、パケット生成回路1012a、及びパケット要求生成回路1013aを含む。
符号化回路1011aは、シンボル列をハフマン符号化する回路である。符号化回路1011aは、インタリーブ回路1001のチャネルCH-Aに接続される。符号化回路1011aは、チャネルCH-Aを介して受信したシンボル列のハフマン符号語を生成する。符号化回路1011aは、ハフマン符号語をパケット生成回路1012aに送信する。また、符号化回路1011aは、シンボル列の符号長の情報をパケット要求生成回路1013aに送信する。
パケット生成回路1012aは、パケットを生成する回路である。パケット生成回路1012aは、ハフマン符号語を受信した順番に充填して、固定長パケットを生成する。なお。パケットの固定長は、任意に設計可能である。パケット生成回路1012aは、パケットを固定長パケットMUX1003に送信する。
パケット要求生成回路1013aは、パケット要求を生成する回路である。パケット要求とは、データ伸長装置16において後述する複数のパケット復号ユニットがパケットを要求する際に送信する信号である。ペイロードを生成する際に、パケットの並び順は、データ伸長装置16内でパケットを要求される順序と同じになるようにする。このため、パケット要求生成回路1013aは、データ伸長装置16におけるパケット要求を模擬的に生成する。パケット要求生成回路1013aは、パケット要求を固定長パケットMUX1003に送信する。
パケット生成ユニット1002bは、パケットを生成するユニットである。パケット生成ユニット1002bは、チャネルCH-Bに接続される。
パケット生成ユニット1002bは、符号化回路1011b、パケット生成回路1012b、及びパケット要求生成回路1013bを含む。なお、パケット生成ユニット1002bの内部構成とは、パケット生成ユニット1002aの内部構成と同じであるため、パケット生成ユニット1002bの内部構成については説明を省略する。
固定長パケットMUX1003は、パケット生成ユニット1002a及び1002bが生成したパケットをパケット要求に基づいて並べて、ペイロードを生成する。
3.2 データ伸長装置
次に、データ伸長装置16の構成の一例について説明する。本実施形態のデータ伸長装置16の構成は、第1実施形態の図3と同じであるが、ペイロード復号回路115は、インタリーブ格納方式に対応した構成となっている。以下、ペイロード復号回路115の内部構成について説明する。
次に、データ伸長装置16の構成の一例について説明する。本実施形態のデータ伸長装置16の構成は、第1実施形態の図3と同じであるが、ペイロード復号回路115は、インタリーブ格納方式に対応した構成となっている。以下、ペイロード復号回路115の内部構成について説明する。
3.2.1 ペイロード復号回路の構成
図12を参照して、ペイロード復号回路115の構成の一例について説明する。図12は、ペイロード復号回路115の構成を示すブロック図である。なお、図12の例は、ペイロード復号回路115が2チャネル構成である場合について説明するが、これに限定されない。ペイロード復号回路115は、3チャネル以上の構成であってもよい。ペイロード復号回路115は、ペイロード生成回路103と同じチャネル数を有していればよい。
図12を参照して、ペイロード復号回路115の構成の一例について説明する。図12は、ペイロード復号回路115の構成を示すブロック図である。なお、図12の例は、ペイロード復号回路115が2チャネル構成である場合について説明するが、これに限定されない。ペイロード復号回路115は、3チャネル以上の構成であってもよい。ペイロード復号回路115は、ペイロード生成回路103と同じチャネル数を有していればよい。
図12に示すように、ペイロード復号回路115は、固定長パケットDEMUX1101、パケット復号ユニット1102a及び1102b、並びにデインタリーブ回路1103を含む。
固定長パケットDEMUX1101は、ペイロードを固定長パケットに分解する。そして、固定長パケットDEMUX1101は、パケット要求に基づいて、パケットを複数のチャネルに振り分ける。図12の例では、固定長パケットDEMUX1101は、2つのチャネルCH-A及びCH-Bを有する。
パケット復号ユニット1102aは、パケット(ハフマン符号語)を復号するユニットである。パケット復号ユニット1102aは、チャネルCH-Aに接続される。
パケット復号ユニット1102aは、パケットバッファ1111a、復号回路1112a、及びパケット要求生成回路1113aを含む。
パケットバッファ1111aは、パケットのバッファである。パケットバッファ1111aは、チャネルCH-Aを介して受信したパケットを保持する。
復号回路1112aは、ハフマン符号化テーブルに基づいて、パケットを復号するデコード回路である。復号回路1112aは、受信したパケットの先頭から復号する。復号回路1112aは、パケットバッファ1111a内のデータの残量が、パケットサイズよりも多い場合に、復号処理を実行する。復号回路1112aは、復号したシンボル列をデインタリーブ回路1103に送信する。また、復号回路1112aは、シンボル列の符号長の情報をパケット要求生成回路1113aに送信する。
パケット要求生成回路1113aは、パケット要求を生成する回路である。パケット要求生成回路1113aの回路構成は、パケット生成ユニット1002aにおけるパケット要求生成回路1013aと同様である。パケット要求生成回路1113aは、受信した符号長からパケットバッファ1111a内のデータの残量を演算する。パケット要求生成回路1113aは、パケットバッファ1111a内のデータの残量がパケットサイズよりも少ない場合、固定長パケットDEMUX1101にパケット要求を送信する。
パケット復号ユニット1102bは、パケットを復号するユニットである。パケット復号ユニット1102bは、チャネルCH-Bに接続される。
パケット復号ユニット1102bは、パケットバッファ1111b、復号回路1112b、及びパケット要求生成回路1113bを含む。なお、パケット復号ユニット1102bの内部構成は、パケット復号ユニット1102aの内部構成と、同じであるため、パケット復号ユニット1102bの内部構成については説明を省略する。
デインタリーブ回路1103は、受信したシンボル列を受信した順番に並べて、シンボル(データ)を出力する。
3.3 パケット要求の生成フロー
次に、図13を参照して、パケット生成ユニット1002a及び1002b、並びにパケット復号ユニット1102a及び1102bにおけるパケット要求の生成フローについて説明する。図13は、パケット要求の生成方法を示すフローチャートである。
次に、図13を参照して、パケット生成ユニット1002a及び1002b、並びにパケット復号ユニット1102a及び1102bにおけるパケット要求の生成フローについて説明する。図13は、パケット要求の生成方法を示すフローチャートである。
パケット生成ユニット1002aのパケット要求生成回路1013a及びパケット生成ユニット1002bのパケット要求生成回路1013bは、パケット復号ユニット1102aのパケット要求生成回路1113a及びパケット復号ユニット1102bのパケット要求生成回路1113bにおけるパケット要求を模擬的に生成している。このため、以下の説明では、限定しない場合、パケット復号ユニット1102aのパケット要求生成回路1113aに着目して説明する。
図13に示すように、まず、パケット要求生成回路1113aは、パケットバッファ1111aに保持されているデータ量(以下、「バッファ量」と表記する)及びサイクル数を0に設定する。(ステップS101)。サイクル数は、シンボル列毎に繰り返す復号化(またはハフマン符号化)のサイクル数を示している。
次に、パケット要求生成回路1113aは、バッファ量がハフマン符号語の最大符号長以上であるか確認する(ステップS102)。
バッファ量が最大符号長以上ではない場合(ステップS102_No)、ステップS106に進む。
バッファ量が最大符号長以上である場合(ステップS102_Yes)、パケット復号ユニット1102a(1102b)の復号回路1112a(1112b)は、シンボル列の復号化を実行する(ステップS103)。なお、パケット要求生成回路が、パケット生成ユニット1002a(1002b)内のパケット要求生成回路1013a(1013b)である場合には、符号化回路1011a(1011b)が、シンボル列のハフマン符号化を実行する。
次に、パケット要求生成回路1113aは、対象のシンボル列がブロック(シンボルユニット)の終端のデータであるか確認する(ステップS104)。
シンボル列がブロックの終端のデータである場合(ステップS104_Yes)、パケット要求生成回路1113aは、パケットの要求を終了する。
他方で、シンボル列がブロックの終端のデータではない場合(ステップS104_No)、パケット要求生成回路1113aは、バッファ量から対象のシンボル列のハフマン符号語のハフマン符号長(ビット数)を減算する(ステップS105)。
バッファ量がパケットサイズ未満である場合(ステップS106_Yes)、パケット要求生成回路1113aは、固定長パケットDEMUX1101にパケットを要求する。すなわち、パケット要求生成回路1113aは、当該サイクルにおけるパケット要求=1を設定する(ステップS107)。
次に、パケット要求生成回路1113aは、バッファ量に、パケットサイズを加算する(ステップS108)。
他方で、バッファ量がパケットサイズ未満ではない場合(ステップS106_No)、パケット要求生成回路1113aは、固定長パケットDEMUX1101にパケットを要求しない。すなわち、パケット要求生成回路1113aは、当該サイクルにおけるパケット要求=0を設定する(ステップS109)。
次に、パケット要求生成回路1113aは、サイクル数をカウントアップした後(ステップS110)、ステップS102に進み、次のシンボル列についての処理を実行する。
3.4 ペイロード生成の具体例
次に、図14及び図15を参照して、インタリーブを適用したペイロード生成の具体例について説明する。図14及び図15は、ペイロード生成時のデータの流れを示すフローチャートである。以下では、パケットサイズが16ビットである場合について説明する。
次に、図14及び図15を参照して、インタリーブを適用したペイロード生成の具体例について説明する。図14及び図15は、ペイロード生成時のデータの流れを示すフローチャートである。以下では、パケットサイズが16ビットである場合について説明する。
図14に示すように、インタリーブ回路1001は、シンボルユニットを受信すると、複数のシンボル列に分割する。図14の例では、8つのシンボル列S0~S7に分割される。そして、インタリーブ回路1001は、例えば、チャネルCH-Aに接続されたパケット生成ユニット1002aに偶数シンボル列S0、S2、S4、及びS6を分配し、チャネルCH-Bに接続されたパケット生成ユニット1002bに奇数シンボル列S1、S3、S5、及びS7を分配する。
パケット生成ユニット1002aの符号化回路1011aは、偶数シンボル列S0、S2、S4、及びS6をそれぞれハフマン符号化し、ハフマン符号語HS0、HS2、HS4、及びHS6を生成する。例えば、ハフマン符号語HS0、HS2、HS4、及びHS6の符号長を5ビット、6ビット、13ビット、及び1ビットとする。また、パケット生成ユニット1002bの符号化回路1011bは、奇数シンボル列S1、S3、S5、及びS7をそれぞれハフマン符号化し、ハフマン符号語HS1、HS3、HS5、及びHS7を生成する。例えば、ハフマン符号語HS1、HS3、HS5、及びHS7の符号長を、15ビット、15ビット、15ビット、及び15ビットとする。この場合、最大符号長は15ビットである。
このとき、パケット要求生成回路1013a(1013b)は、符号化回路1011a(1011b)から受信した符号長の情報に基づいて、パケット要求を生成する。
まず、図14の紙面左側のチャネルCH-Aに対応するテーブルを参照して、パケット生成ユニット1002aにおけるパケット要求の生成について説明する。
パケット要求生成回路1013aは、まず、最初のサイクルC0では、バッファ量として0を設定する。このため、パケット要求生成回路1013aは、パケット要求=1を設定する。
次のサイクルC1では、バッファ量が0+16=16となる。バッファ量が最大符号長(15ビット)以上であるため、パケット生成回路1012aは、サイクルC1におけるシンボル列として、シンボル列S0を設定する。例えば、シンボル列S0のハフマン符号語HS0のハフマン符号長が5ビットである場合、バッファ量は16-5=11ビットとなる。バッファ量がパケットサイズ(16ビット)未満となるため、パケット要求生成回路1013aは、パケット要求=1を設定する。
次のサイクルC2では、バッファ量が11+16=27ビットとなる。バッファ量が最大符号長以上であるため、パケット生成回路1012aは、サイクルC2におけるシンボル列として、シンボル列S2を設定する。例えば、シンボル列S2のハフマン符号語HS2のハフマン符号長が6ビットである場合、バッファ量は27-6=21ビットとなる。バッファ量がパケットサイズ以上となるため、パケット要求生成回路1013aは、パケット要求=0を設定する。
次のサイクルC3では、バッファ量が21ビットとなる。バッファ量が最大符号長以上であるため、パケット生成回路1012aは、サイクルC3におけるシンボル列として、シンボル列S4を設定する。例えば、シンボル列S4のハフマン符号語HS4のハフマン符号長が13ビットである場合、バッファ量は21-13=8ビットとなる。バッファ量がパケットサイズ未満となるため、パケット要求生成回路1013aは、パケット要求=1を設定する。
次のサイクルC4では、バッファ量が8+16=24ビットとなる。バッファ量が最大符号長以上であるため、パケット生成回路1012aは、サイクルC4におけるシンボル列として、シンボル列S6を設定する。シンボル列S6は、チャネルCH-Aにおけるブロックの終端のデータであるため、パケット要求生成回路1013aは、パケット要求の生成を終了する。
次に、図14の紙面右側のチャネルCH-Bに対応するテーブルを参照して、パケット生成ユニット1002bにおけるパケット要求の生成について説明する。
パケット要求生成回路1013bは、まず、最初のサイクルC0では、バッファ量として0を設定する。このため、パケット要求生成回路1013bは、パケット要求=1を設定する。
次のサイクルC1では、バッファ量が0+16=16となる。バッファ量が最大符号長以上であるため、パケット生成回路1012bは、サイクルC1におけるシンボル列として、シンボル列S1を設定する。例えば、シンボル列S1のハフマン符号語HS1のハフマン符号長が15ビットである場合、バッファ量は16-15=1ビットとなる。バッファ量がパケットサイズ未満となるため、パケット要求生成回路1013bは、パケット要求=1を設定する。
次のサイクルC2では、バッファ量が1+16=17となる。バッファ量が最大符号長以上であるため、パケット生成回路1012bは、サイクルC2におけるシンボル列として、シンボル列S3を設定する。例えば、シンボル列S3のハフマン符号語HS3のハフマン符号長が15ビットである場合、バッファ量は17-15=2ビットとなる。バッファ量がパケットサイズ未満となるため、パケット要求生成回路1013bは、パケット要求=1を設定する。
次のサイクルC3では、バッファ量が2+16=18となる。バッファ量が最大符号長以上であるため、パケット生成回路1012bは、サイクルC3におけるシンボル列として、シンボル列S5を設定する。例えば、シンボル列S5のハフマン符号語HS5のハフマン符号長が15ビットである場合、バッファ量は18-15=3ビットとなる。バッファ量がパケットサイズ未満となるため、パケット要求生成回路1013bは、パケット要求=1を設定する。
次のサイクルC4では、バッファ量が3+16=19ビットとなる。バッファ量が最大符号長以上であるため、パケット生成回路1012bは、サイクルC4におけるシンボル列として、シンボル列S7を設定する。シンボル列S7は、チャネルCH-Bにおけるブロックの終端のデータであるため、パケット要求生成回路1013bは、パケット要求の生成を終了する。
図15に示すように、パケット生成回路1012a(1012b)は、符号化回路1011a(1011b)から受信したハフマン符号語に基づいて、パケットを生成する。
より具体的には、パケット生成回路1012aは、ハフマン符号語HS0及びHS2、並びにハフマン符号語HS4の一部を含むパケットP_A1を生成する。パケットP_A1は、パケット要求(1)に対応する。次に、パケット生成回路1012aは、ハフマン符号語HS4の残りの部分及びハフマン符号語HS6を含むパケットP_A2を生成する。このとき、パケットP_A2の余りの部分には、一部パディングが挿入される。パケットP_A2は、パケット要求(3)に対応する。また、パケット生成回路1012aは、全部パディングであるパケットP_A3を生成する。パケットP_A3は、パケット要求(6)に対応する。
パケット生成回路1012bは、ハフマン符号語HS1及びハフマン符号語HS3の一部を含むパケットP_B1を生成する。パケットP_B1は、パケット要求(2)に対応する。次に、パケット生成回路1012bは、ハフマン符号語HS3の残りの部分及びハフマン符号語HS5の一部を含むパケットP_B2を生成する。パケットP_B2は、パケット要求(4)に対応する。次に、パケット生成回路1012bは、ハフマン符号語HS5の残りの部分及びハフマン符号語HS7の一部を含むパケットP_B3を生成する。パケットP_B3は、パケット要求(5)に対応する。次に、パケット生成回路1012bは、ハフマン符号語HS7の残りの部分を含むパケットP_B4を生成する。このとき、パケットP_B4の余りの部分には、一部パディングが挿入される。パケットP_B4は、パケット要求(7)に対応する。
固定長パケットMUX1003は、パケット要求生成回路1013a及び1013bから受信したパケット要求(1)~(7)に基づいて、パケット生成回路1012a及び1012bから受信した複数のパケットを配置し、ペイロードを生成する。図15の例では、パケットP_A1、パケットP_B1、パケットP_A2(一部パディング含む)、パケットP_B2、パケットP_B3、パケットP_A3(全部パディング)、パケットP_B4(一部パディング含む)が順に配置される。
3.5 ペイロード復号の具体例
次に、図16及び図17を参照して、インタリーブを適用したペイロード復号の具体例について説明する。図16及び図17は、ペイロード復号時のデータの流れを示すフローチャートである。
次に、図16及び図17を参照して、インタリーブを適用したペイロード復号の具体例について説明する。図16及び図17は、ペイロード復号時のデータの流れを示すフローチャートである。
図16に示すように、固定長パケットDEMUX1101は、ペイロードを受信すると、パケットに分割する。そして、固定長パケットDEMUX1101は、パケット要求生成回路1113a及び1113bから受信したパケット要求に基づいて、分割したパケットを、パケット復号ユニット1102a及び1102bに分配する。例えば、チャネルCH-Aに接続されたパケット復号ユニット1102aにパケットP_A1、P_A2、及びP_A3が送信され、チャネルCH-Bに接続されたパケット生成ユニット1002bにパケットP_B1、P_B2、P_B3、及びP_B4が送信される。
図17に示すように、復号回路1112aは、ハフマン符号語HS0、HS2、HS4、及びHS6を復号して、シンボル列S0、S2、S4、及びS6を生成する。復号回路1112bは、ハフマン符号語HS1、HS3、HS5、及びHS7を復号して、シンボル列S1、S3、S5、及びS7を生成する。
デインタリーブ回路1103は、復号回路1112a及び1112bから受信したシンボル列S0~S7を順番に並べて、シンボル(データ)を出力する。
3.6 本実施形態に係る効果
本実施形態に係る構成であれば、ペイロードがパディングを含む場合においても、ペイロードサイズを予測することができる。これにより、第2実施形態と同様の効果が得られる。
本実施形態に係る構成であれば、ペイロードがパディングを含む場合においても、ペイロードサイズを予測することができる。これにより、第2実施形態と同様の効果が得られる。
更に、本実施形態に係る構成であれば、インタリーブ格納方式を適用することにより、データ伸長処理のスループットを向上できる。
4.その他
上記実施形態によれば、データ伸長装置は、ヘッダ内の境界情報に基づいて、圧縮ストリーム内のヘッダとペイロードとの境界を検出する検出回路(111)と、ヘッダとペイロードとを分離する分離回路(112)と、ヘッダ内の圧縮された符号化テーブルを伸長する第1伸長回路(113)と、第1伸長回路の出力を用いて、ペイロードを伸長する第2伸長回路(115)と、を含む。
上記実施形態によれば、データ伸長装置は、ヘッダ内の境界情報に基づいて、圧縮ストリーム内のヘッダとペイロードとの境界を検出する検出回路(111)と、ヘッダとペイロードとを分離する分離回路(112)と、ヘッダ内の圧縮された符号化テーブルを伸長する第1伸長回路(113)と、第1伸長回路の出力を用いて、ペイロードを伸長する第2伸長回路(115)と、を含む。
上記実施形態を適用することにより、スループットを向上できるデータ伸長装置を提供できる。
なお、実施形態は上記説明した形態に限定されるものではなく、種々の変形が可能である。
例えば、上記実施形態では、動的ハフマン符号を適用した場合について説明したが、これに限定されない。符号化テーブルとデータとを圧縮して圧縮ストリームを生成する他の方式が用いられてもよい。
更に、上記実施形態では、メモリシステム3内にデータ圧縮装置15及びデータ伸長装置16が設けられている場合について説明したが、これに限定されない。データ圧縮装置15及びデータ伸長装置16は、ホストデバイス2内に設けられてもよいし、不揮発性メモリ20内に設けられてもよい。または、データ圧縮装置15及びデータ伸長装置16を含む単体のデータ圧縮伸長装置が設けられてもよい。
実施形態は例示であり、発明の範囲はそれらに限定されない。
1…データ処理装置、2…ホストデバイス、3…メモリシステム、
10…メモリコントローラ、11…ホストインターフェイス回路、12…CPU、13…内蔵メモリ、14…バッファメモリ、15…データ圧縮装置、16…データ伸長装置、17…メモリインターフェイス回路、20…不揮発性メモリ、21…メモリチップ、101…頻度テーブル生成回路、102…符号化テーブル生成回路、103…ペイロード生成回路、104、114…遅延バッファ、105…ペイロードサイズカウンタ、106…境界情報追加回路、111…境界検出回路、112…DEMUX、113…符号化テーブル復元回路、115…ペイロード復号回路、116…テーブルバッファ、201…ペイロードサイズ演算回路、301…ペイロードサイズ予測回路、1001…インタリーブ回路、1002a、1002b…パケット生成ユニット、1003…固定長パケットMUX、1011a、1011b…符号化回路、1012a、1012b…パケット生成回路、1013a、1013b…パケット要求生成回路、1101…固定長パケットDEMUX、1102a、1102b…パケット復号ユニット、1103…デインタリーブ回路、1111a、1111b…パケットバッファ、1112a、1112b…復号回路、1113a、1113b…パケット要求生成回路
10…メモリコントローラ、11…ホストインターフェイス回路、12…CPU、13…内蔵メモリ、14…バッファメモリ、15…データ圧縮装置、16…データ伸長装置、17…メモリインターフェイス回路、20…不揮発性メモリ、21…メモリチップ、101…頻度テーブル生成回路、102…符号化テーブル生成回路、103…ペイロード生成回路、104、114…遅延バッファ、105…ペイロードサイズカウンタ、106…境界情報追加回路、111…境界検出回路、112…DEMUX、113…符号化テーブル復元回路、115…ペイロード復号回路、116…テーブルバッファ、201…ペイロードサイズ演算回路、301…ペイロードサイズ予測回路、1001…インタリーブ回路、1002a、1002b…パケット生成ユニット、1003…固定長パケットMUX、1011a、1011b…符号化回路、1012a、1012b…パケット生成回路、1013a、1013b…パケット要求生成回路、1101…固定長パケットDEMUX、1102a、1102b…パケット復号ユニット、1103…デインタリーブ回路、1111a、1111b…パケットバッファ、1112a、1112b…復号回路、1113a、1113b…パケット要求生成回路
Claims (10)
- ヘッダ内の境界情報に基づいて、圧縮ストリーム内の前記ヘッダとペイロードとの境界を検出する検出回路と、
前記ヘッダと前記ペイロードとを分離する分離回路と、
前記ヘッダ内の圧縮された符号化テーブルを伸長する第1伸長回路と、
前記第1伸長回路の出力を用いて、前記ペイロードを伸長する第2伸長回路と
を備える、
データ伸長装置。 - 前記圧縮ストリームは、複数の前記ヘッダと前記ペイロードとの組を含み、
前記第1伸長回路における前記複数の組の(N+K)番目(N及びKは1以上の整数)の前記符号化テーブルの伸長処理と、前記第2伸長回路における前記複数の組のN番目の圧縮された前記ペイロードの伸長処理と、が並列に実行される
請求項1に記載のデータ伸長装置。 - 前記符号化テーブルはハフマン符号化テーブルであり、
前記ペイロードは、前記ハフマン符号化テーブルに基づいて符号化されたデータを含む、
請求項1または2に記載のデータ伸長装置。 - 入力データに基づいて符号化テーブルを生成する符号化テーブル生成回路と、
前記符号化テーブルに基づいて前記入力データを符号化し、ペイロードを生成するペイロード生成回路と、
境界情報を生成する境界情報生成回路と、
前記ペイロードの前に前記境界情報を追加して、圧縮ストリームを生成する境界情報追加回路と、
を備える、
データ圧縮装置。 - 前記境界情報生成回路は、ペイロードサイズをカウントして、前記境界情報を生成する、
請求項4に記載のデータ圧縮装置。 - 前記入力データ内のシンボル出現頻度を算出し、シンボル出現頻度情報を生成する頻度情報生成回路を更に備え、
前記符号化テーブル生成回路は、シンボル符号長情報を生成し、
前記境界情報生成回路は、前記シンボル出現頻度情報及び前記シンボル符号長情報を用いてペイロードサイズを算出して、前記境界情報を生成する、
請求項4に記載のデータ圧縮装置。 - 前記入力データ内のシンボル出現頻度を算出し、シンボル出現頻度情報を生成する頻度情報生成回路を更に備え、
前記符号化テーブル生成回路は、シンボル符号長情報を生成し、
前記ペイロードは、パディングを含み、
前記境界情報生成回路は、前記シンボル出現頻度情報及び前記シンボル符号長情報を用いて算出したデータサイズと、前記パディングのデータサイズとに基づいて、前記境界情報を生成する、
請求項4に記載のデータ圧縮装置。 - 前記境界情報生成回路は、前記シンボル出現頻度情報及び前記シンボル符号長情報を用いて算出した前記データサイズに、前記ペイロード生成回路における符号化の並列処理数と前記パディングの前記データサイズの2倍未満の最大値との積を加算して、前記境界情報を生成する、
請求項7に記載のデータ圧縮装置。 - 前記符号化テーブルはハフマン符号化テーブルであり、
前記ペイロードは、前記ハフマン符号化テーブルに基づいて符号化された前記入力データを含む、
請求項4乃至7のいずれか一項に記載のデータ圧縮装置。 - 請求項1に記載のデータ伸長装置と、
請求項4に記載のデータ圧縮装置と
を備える、
メモリシステム。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2021152935A JP2023044846A (ja) | 2021-09-21 | 2021-09-21 | データ伸長装置、データ圧縮装置、及びメモリシステム |
US17/696,756 US11824566B2 (en) | 2021-09-21 | 2022-03-16 | Data decompression device, data compression device, and memory system |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2021152935A JP2023044846A (ja) | 2021-09-21 | 2021-09-21 | データ伸長装置、データ圧縮装置、及びメモリシステム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2023044846A true JP2023044846A (ja) | 2023-04-03 |
Family
ID=85573060
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2021152935A Pending JP2023044846A (ja) | 2021-09-21 | 2021-09-21 | データ伸長装置、データ圧縮装置、及びメモリシステム |
Country Status (2)
Country | Link |
---|---|
US (1) | US11824566B2 (ja) |
JP (1) | JP2023044846A (ja) |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH1174868A (ja) * | 1996-09-02 | 1999-03-16 | Toshiba Corp | 情報伝送方法およびその方法が適用される情報伝送システムにおける符号化装置/復号化装置、並びに符号化・多重化装置/復号化・逆多重化装置 |
WO2000046989A1 (fr) * | 1999-02-05 | 2000-08-10 | Sony Corporation | Dispositifs de codage et de decodage et methodes correspondantes, systeme de codage et procede correspondant |
JP3693636B2 (ja) | 2002-08-27 | 2005-09-07 | シャープ株式会社 | 映像符号化装置及び映像復号化装置 |
JP4758494B2 (ja) | 2009-04-21 | 2011-08-31 | インターナショナル・ビジネス・マシーンズ・コーポレーション | ビット長を符号に変換する回路及び方法 |
US20130099946A1 (en) * | 2011-10-21 | 2013-04-25 | International Business Machines Corporation | Data Compression Utilizing Variable and Limited Length Codes |
US8933824B1 (en) | 2013-08-28 | 2015-01-13 | International Business Machines Corporation | Hardware decompression of deflate encoded data with multiple blocks |
JP2016139958A (ja) | 2015-01-28 | 2016-08-04 | 富士ゼロックス株式会社 | 情報処理装置及びプログラム |
-
2021
- 2021-09-21 JP JP2021152935A patent/JP2023044846A/ja active Pending
-
2022
- 2022-03-16 US US17/696,756 patent/US11824566B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US20230086658A1 (en) | 2023-03-23 |
US11824566B2 (en) | 2023-11-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR20120096749A (ko) | 메모리 장치 및 메모리 시스템 | |
US20100274926A1 (en) | High-speed inline data compression inline with an eight byte data path | |
US10303402B2 (en) | Data compression using partial statistics | |
WO1992017844A1 (en) | Solid-state ram data storage for virtual memory computer using fixed-size swap pages | |
WO2015019484A1 (ja) | データ圧縮装置およびデータ伸張装置 | |
KR20120084180A (ko) | 데이터 압축 장치, 이의 동작 방법, 및 이를 포함하는 데이터 처리 장치 | |
KR20150033663A (ko) | 데이터 압축 및 관리 | |
US20140122964A1 (en) | Error checking and correction method for determining an error correction code length and related error checking and correction circuit | |
JP2021527376A (ja) | データ圧縮 | |
US20190004738A1 (en) | Methods for accelerating compression and apparatuses using the same | |
JP2023044846A (ja) | データ伸長装置、データ圧縮装置、及びメモリシステム | |
US7446679B1 (en) | Compression and decompression of configuration data for programmable logic devices | |
CN105573775A (zh) | Fpga配置文件加载方法和解码器 | |
JP2023007760A (ja) | 圧縮装置及び伸張装置 | |
WO1999062181A1 (fr) | Procede et dispositif de protection contre les erreurs | |
JP7358279B2 (ja) | メモリシステム | |
JP2010050697A (ja) | 画像圧縮伸張装置および画像圧縮伸張方法 | |
JP2005521324A (ja) | 損失のないデータの圧縮および圧縮解除方法および装置 | |
JP2022162930A (ja) | ウェイトデータ圧縮方法、ウェイトデータ伸長方法、ウェイトデータ圧縮装置及びウェイトデータ伸長装置 | |
US10411733B2 (en) | Data compression and decompression | |
US11855772B2 (en) | High throughput polar ECC decoding via compressed successive cancellation algorithm | |
JP7305609B2 (ja) | 受信したデータを処理する装置 | |
US20240223211A1 (en) | Conversion device, memory system, decompression device, and method | |
CN103810054A (zh) | 错误检查及校正方法以及相关错误检查及校正电路 | |
US20240204796A1 (en) | Code table generation device, memory system, and code table generation method |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
RD01 | Notification of change of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7421 Effective date: 20230106 |