IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 東芝メモリ株式会社の特許一覧

特開2024-96621変換装置、メモリシステム及び伸張装置
<>
  • 特開-変換装置、メモリシステム及び伸張装置 図1
  • 特開-変換装置、メモリシステム及び伸張装置 図2
  • 特開-変換装置、メモリシステム及び伸張装置 図3
  • 特開-変換装置、メモリシステム及び伸張装置 図4
  • 特開-変換装置、メモリシステム及び伸張装置 図5
  • 特開-変換装置、メモリシステム及び伸張装置 図6
  • 特開-変換装置、メモリシステム及び伸張装置 図7
  • 特開-変換装置、メモリシステム及び伸張装置 図8
  • 特開-変換装置、メモリシステム及び伸張装置 図9
  • 特開-変換装置、メモリシステム及び伸張装置 図10
  • 特開-変換装置、メモリシステム及び伸張装置 図11
  • 特開-変換装置、メモリシステム及び伸張装置 図12
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024096621
(43)【公開日】2024-07-17
(54)【発明の名称】変換装置、メモリシステム及び伸張装置
(51)【国際特許分類】
   H03M 7/40 20060101AFI20240709BHJP
   H03M 7/30 20060101ALI20240709BHJP
   G06F 12/04 20060101ALI20240709BHJP
【FI】
H03M7/40
H03M7/30 Z
G06F12/04 530
【審査請求】未請求
【請求項の数】12
【出願形態】OL
(21)【出願番号】P 2023000242
(22)【出願日】2023-01-04
(71)【出願人】
【識別番号】318010018
【氏名又は名称】キオクシア株式会社
(74)【代理人】
【識別番号】110001737
【氏名又は名称】弁理士法人スズエ国際特許事務所
(72)【発明者】
【氏名】中西 圭里
(72)【発明者】
【氏名】住吉 正人
(72)【発明者】
【氏名】小玉 翔
【テーマコード(参考)】
5B160
5J064
【Fターム(参考)】
5B160DA08
5J064BA09
5J064BB13
5J064BD03
(57)【要約】
【課題】圧縮ストリームのデータ形式を低コストで変換することが可能な変換装置、メモリシステム及び伸張装置を提供することにある。
【解決手段】実施形態に係る変換装置は、デマルチプレクサ部と、第1~第N切出部と、デインターリーブ部とを具備する。デマルチプレクサ部は、第1~第Nサブストリームが順に配置され、当該第1~第Nサブストリームがシンボル列から変換された複数の第1~第N可変長符号を含む第1圧縮ストリームから第1~第Nサブストリームを切り出す。第1~第N切出部は、複数の第1可変長符号~複数の第N可変長符号を第1~第Nサブストリームから切り出す。デインターリーブ部は、複数の第1可変長符号~第N可変長符号をシンボル列に従って並び替え、並び替えられた複数の第1可変長符号~第N可変長符号を含む第2圧縮ストリームを出力する。
【選択図】図6
【特許請求の範囲】
【請求項1】
第1~第Nサブストリーム(Nは2以上の整数)を含み、前記第1~第Nサブストリームが順に配置され、前記第1~第Nサブストリームがシンボル列のうちの複数の第1シンボル~複数の第Nシンボルに対してエントロピー符号化を行うことによって前記複数の第1シンボル~前記複数の第Nシンボルから変換された複数の第1可変長符号~複数の第N可変長符号を含む、第1圧縮ストリームから前記第1~第Nサブストリームを切り出すデマルチプレクサ部と、
前記複数の第1可変長符号~前記複数の第N可変長符号を、前記第1~第Nサブストリームから切り出す第1~第N切出部と、
前記複数の第1可変長符号~前記複数の第N可変長符号を前記シンボル列に従って並び替え、前記並び替えられた前記複数の第1可変長符号~前記複数の第N可変長符号が配置された第2圧縮ストリームを出力するデインターリーブ部と
を具備する変換装置。
【請求項2】
外部から指定された圧縮方式に基づくデータ形式に従ってヘッダ及びフッタを生成する生成部を更に具備し、
前記第2圧縮ストリームは、前記生成されたヘッダ及びフッタが付加されて出力される
請求項1記載の変換装置。
【請求項3】
前記ヘッダは、予め用意されている固定値が設定されることによって生成され、
前記フッタは、前記複数の第1可変長符号~前記複数の第N可変長符号に基づいて計算された誤り検出符号が設定されることによって生成される
請求項2記載の変換装置。
【請求項4】
前記第1圧縮ストリームは、deflate圧縮方式に基づくデータ形式において規定されているdeflateヘッダと前記第1~第Nサブストリームが配置されたペイロードとから構成されており、
前記第2圧縮ストリームは、前記deflateヘッダと前記並び替えられた前記複数の第1可変長符号~前記複数の第N可変長符号が配置されたペイロードとから構成される
請求項1記載の変換装置。
【請求項5】
不揮発性メモリと、
シンボル列を、複数の第1シンボル~複数の第Nシンボルに分割するインターリーブ部と、前記複数の第1シンボル~前記複数の第Nシンボルに対してエントロピー符号化を行うことによって前記複数の第1シンボル~前記複数の第Nシンボルを複数の第1可変長符号~複数の第N可変長符号に変換する第1~第N可変長符号化部と、前記複数の第1可変長符号~前記複数の第N可変長符号を含む第1~第Nサブストリームが順に配置された第1圧縮ストリームを出力するマルチプレクサ部とを備える圧縮装置を備え、前記不揮発性メモリに前記第1圧縮ストリームを格納するコントローラと
を備え、
前記コントローラは、前記不揮発性メモリから前記第1圧縮ストリームを読み出し、
前記コントローラは、
前記読み出された第1圧縮ストリームから前記第1~第Nサブストリームを切り出すデマルチプレクサ部と、前記複数の第1可変長符号~前記複数の第1可変長符号を前記第1~第Nサブストリームから切り出し、前記切り出された複数の第1可変長符号~複数の第N可変長符号に対するエントロピー復号を行うことによって前記複数の第1可変長符号~前記複数の第N可変長符号を前記複数の第1シンボル~前記複数の第Nシンボルに変換する第1~第N可変長復号部と、前記複数の第1可変長符号~前記複数の第N可変長符号から変換された前記複数の第1シンボル~前記複数の第Nシンボルを並び替えることによって前記シンボル列を出力するデインターリーブ部とを備える伸張装置と、
請求項1~4のいずれか一項に記載の変換装置と
を具備し、
前記伸張装置は、外部から第1出力形式が指定された場合に前記シンボル列を出力し、
前記変換装置は、外部から前記第1出力形式とは異なる第2出力形式が指定された場合に前記第2圧縮ストリームを出力する
メモリシステム。
【請求項6】
前記圧縮装置は、前記圧縮装置に入力された非圧縮データに対して辞書式符号化を行うことによって前記デマルチプレクサ部に前記シンボル列を出力する辞書式符号化部を更に備え、
前記伸張装置は、前記デインターリーブ部から出力されたシンボル列に対して辞書式復号を行うことによって前記非圧縮データを出力する辞書式復号部を更に備える
請求項5記載のメモリシステム。
【請求項7】
第1~第Nサブストリーム(Nは2以上の整数)を含み、前記第1~第Nサブストリームが順に配置され、前記第1~第Nサブストリームがシンボル列のうちの複数の第1シンボル~複数の第Nシンボルに対してエントロピー符号化を行うことによって前記複数の第1シンボル~前記第Nシンボルから変換された複数の第1可変長符号~複数の第N可変長符号を含む、第1圧縮ストリームから前記第1~第Nサブストリームを切り出すデマルチプレクサ部と、
前記複数の第1可変長符号~前記複数の第N可変長符号を、前記第1~第Nサブストリームから切り出す第1~第N切出部と、
前記複数の第1可変長符号~前記複数の第N可変長符号に対してエントロピー復号を行うことによって前記複数の第1可変長符号~前記第N可変長符号を前記複数の第1シンボル~前記複数の第Nシンボルに変換する第1~第N復号部と、
外部から第1出力形式が指定された場合に、前記複数の第1可変長符号~前記複数の第N可変長符号から変換された前記複数の第1シンボル~前記複数の第Nシンボルを並び替えることによって前記シンボル列を出力し、外部から前記第1出力形式とは異なる第2出力形式が指定された場合に、前記第1~第Nサブストリームから切り出された前記複数の第1可変長符号~前記複数の第N可変長符号を前記シンボル列に従って並び替え、前記並び替えられた前記複数の第1可変長符号~前記複数の第N可変長符号が配置された第2圧縮ストリームを出力するデインターリーブ部と
を具備する伸張装置。
【請求項8】
外部から指定された圧縮方式に基づくデータ形式に従ってヘッダ及びフッタを生成する生成部を更に具備し、
前記第2圧縮ストリームは、前記生成されたヘッダ及びフッタが付加されて出力される
請求項7記載の伸張装置。
【請求項9】
前記ヘッダは、予め用意されている固定値が設定されることによって生成され、
前記フッタは、前記複数の第1可変長符号~前記複数の第N可変長符号に基づいて計算された誤り検出符号が設定されることによって生成される
請求項8記載の伸張装置。
【請求項10】
前記第1圧縮ストリームは、deflate圧縮方式に基づくデータ形式を有し、deflateヘッダと前記第1~第Nサブストリームが配置されたペイロードとから構成されており、
前記第2圧縮ストリームは、前記deflateヘッダと前記並び替えられた前記複数の第1可変長符号~前記複数の第N可変長符号が配置されたペイロードとから構成される
請求項7記載の伸張装置。
【請求項11】
不揮発性メモリと、
シンボル列を、複数の第1シンボル~複数の第Nシンボルに分割するインターリーブ部と、前記複数の第1シンボル~前記複数の第Nシンボルに対してエントロピー符号化を行うことによって前記複数の第1シンボル~前記複数の第Nシンボルを複数の第1可変長符号~複数の第N可変長符号に変換する第1~第N可変長符号化部と、前記複数の第1可変長符号~前記複数の第N可変長符号を含む第1~第Nサブストリームが順に配置された第1圧縮ストリームを出力するマルチプレクサ部とを備える圧縮装置を備え、前記不揮発性メモリに前記第1圧縮ストリームを格納するコントローラと
を備え、
前記コントローラは、前記不揮発性メモリから前記第1圧縮ストリームを読み出し、
前記コントローラは、請求項7~10のいずれか一項に記載の伸張装置を具備する
メモリシステム。
【請求項12】
前記圧縮装置は、前記圧縮装置に入力された非圧縮データに対して辞書式符号化を行うことによって前記デマルチプレクサ部に前記シンボル列を出力する辞書式符号化部を更に備え、
前記伸張装置は、前記デインターリーブ部から出力されたシンボル列に対して辞書式復号を行うことによって前記非圧縮データを出力する辞書式復号部を更に備える
請求項11記載のメモリシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、変換装置、メモリシステム及び伸張装置に関する。
【背景技術】
【0002】
近年では、例えばホストから書き込みコマンドが発行された際に書き込みデータ(非圧縮データ)を圧縮装置で圧縮して不揮発性メモリに書き込み、当該ホストから読み出しコマンドが発行された際に不揮発性メモリから読み出された読み出しデータ(圧縮データ)を伸張装置で伸張して当該ホストに返すことが行われている。これによれば、不揮発性メモリの記憶領域を有効に活用することができる。
【0003】
ところで、一般的に用いられているdeflateのような圧縮方式においては、可変長符号が順次パッキングされた圧縮ストリーム(圧縮データ)が生成される。このような圧縮ストリームを伸張する際には当該圧縮ストリームにパッキングされている可変長符号を先頭から順に切り出す必要があり、当該圧縮ストリームを伸張する処理を並列化することが困難である。
【0004】
これに対して、インターリーブされた可変長符号がパッキングされた複数の固定幅のサブストリームが順に配置された圧縮ストリームを生成する圧縮方式(以下、第1圧縮方式と表記)が知られている。この第1圧縮方式によれば、圧縮ストリームから複数のサブストリームを容易に分離することができるため、当該複数のサブストリームの各々を並列に処理する(つまり、圧縮ストリームを伸張する処理を並列化する)ことが可能である。
【0005】
ここで、上記した第1圧縮方式において生成された圧縮ストリーム(以下、第1圧縮ストリームと表記)を外部機器に送信(提供)することによって、当該外部機器が第1圧縮ストリームを利用する場合を想定する。
【0006】
この場合、第1圧縮方式は、上記したdeflateのような圧縮方式(以下、第2圧縮方式と表記)とは異なり、一般的に用いられている方式ではないため、第1圧縮ストリームを伸張することが可能な機能が外部機器に用意されていなければ、当該外部機器において第1圧縮ストリームを利用することはできない。
【0007】
このため、例えば第1圧縮ストリームを伸張することによって得られる非圧縮データを第2圧縮方式で再圧縮した圧縮ストリーム(以下、第2圧縮ストリームと表記)を生成し、当該第2圧縮ストリームを外部機器に送信(提供)することが考えられる。この場合、第2圧縮ストリームを伸張することが可能な機能が外部機器に用意されていれば、当該外部機器において第2圧縮ストリームを利用することができる。
【0008】
しかしながら、このような再圧縮に必要なハードウェアを用意する(つまり、第1圧縮ストリームのデータ形式を第2圧縮ストリームのデータ形式に変換するために第2圧縮方式に対応する圧縮装置を設ける)ことはコストが大きい。
【先行技術文献】
【特許文献】
【0009】
【特許文献1】米国特許第10367604号明細書
【発明の概要】
【発明が解決しようとする課題】
【0010】
そこで、本発明が解決しようとする課題は、圧縮ストリームのデータ形式を低コストで変換することが可能な変換装置、メモリシステム及び伸張装置を提供することにある。
【課題を解決するための手段】
【0011】
実施形態に係る変換装置は、デマルチプレクサ部と、第1~第N切出部と、デインターリーブ部とを具備する。前記デマルチプレクサ部は、第1~第Nサブストリーム(Nは2以上の整数)を含み、前記第1~第Nサブストリームが順に配置され、前記第1~第Nサブストリームがシンボル列のうちの複数の第1シンボル~複数の第Nシンボルに対してエントロピー符号化を行うことによって前記複数の第1シンボル~前記複数の第Nシンボルから変換された複数の第1可変長符号~複数の第N可変長符号を含む、第1圧縮ストリームから前記第1~第Nサブストリームを切り出す。前記第1切出部は、前記複数の第1可変長符号~前記複数の第N可変長符号を、前記第1~第Nサブストリームから切り出す。前記デインターリーブ部は、前記複数の第1可変長符号~前記複数の第N可変長符号を前記シンボル列に従って並び替え、前記並び替えられた前記複数の第1可変長符号~前記複数の第N可変長符号が配置された第2圧縮ストリームを出力する。
【図面の簡単な説明】
【0012】
図1】第1実施形態の比較例に係るメモリシステムのハードウェア構成の一例を概略的に示すブロック図。
図2】第1実施形態の比較例における圧縮装置及び伸張装置の構成の一例について説明するための図。
図3】第1実施形態の比較例における圧縮装置の動作の概要について説明するための図。
図4】第1実施形態の比較例における伸張装置の動作の概要について説明するための図。
図5】第1実施形態に係るメモリシステムのハードウェア構成の一例を概略的に示すブロック図。
図6】第1実施形態に係る変換装置の構成の一例について説明するための図。
図7】第1実施形態に係る変換装置の動作の概要について説明するための図。
図8】第1実施形態におけるdeflate形式の圧縮ストリームのデータ構造を示す図。
図9】第1実施形態におけるインターリーブ格納形式とdeflate形式との対応関係を説明するための図。
図10】第1実施形態の変形例に係る変換装置の構成の一例について説明するための図。
図11】第2実施形態に係る伸張装置の構成の一例を示す図。
図12】第2実施形態の変形例に係る伸張装置の構成の一例を示す図。
【発明を実施するための形態】
【0013】
以下、図面を参照して、各実施形態について説明する。
(第1実施形態)
まず、第1実施形態について説明する。図1は、第1実施形態の比較例に係るメモリシステムのハードウェア構成の一例を概略的に示すブロック図である。
【0014】
図1に示すメモリシステム1は、不揮発性メモリにデータを書き込み、当該不揮発性メモリからデータを読み出すように構成された半導体ストレージデバイスである。本実施形態の比較例においては、メモリシステム1が例えばソリッドステートドライブ(SSD:Solid State Drive)として実現されているものとして説明するが、当該メモリシステム1は他のストレージデバイスであってもよい。
【0015】
メモリシステム1は、例えばPCI Expressバスのようなシステムバスを介してホストに接続可能に構成されている。図1に示すように、メモリシステム1は、コントローラ2、NAND型フラッシュメモリ3及びDRAM(Dynamic Random Access Memory)4等を備える。
【0016】
コントローラ2は、メモリシステム1の動作を司る機能を有する。コントローラ2は、ホストインタフェース(I/F)2a、CPU2b、NANDインタフェース(I/F)2c及びDRAMインタフェース(I/F)2d等を含む。なお、ホストインタフェース2a、CPU2b、NANDインタフェース(I/F)2c及びDRAMインタフェース2dは、例えばバスを介して互いに接続されている。
【0017】
ホストインタフェース2aは、メモリシステム1の外部に配置されるホストとの通信を実行するように構成されたホストインタフェース回路である。このホストインタフェース2aは、例えばPCI Expressコントローラ等であってもよい。ホストインタフェース2aは、ホストから様々なコマンド(要求)を受信する。
【0018】
CPU2bは、ホストインタフェース2a、NANDインタフェース2c及びDRAMインタフェース2dを制御するように構成されたプロセッサである。CPU2bは、メモリシステム1の電源オンに応答してNAND型フラッシュメモリ3または図示しないROM(Read Only Memory)から制御プログラム(ファームウェア)をDRAM4にロードし、当該制御プログラムを実行することによって様々な処理を行う。具体的には、CPU2bは、ホストから発行される様々なコマンドに対する処理を実行する。なお、ホストから発行されるコマンドに対する処理の一部または全部は、コントローラ2内の専用のハードウェアによって実行されてもよい。
【0019】
NANDインタフェース2cは、CPU2bの制御の下、NAND型フラッシュメモリ3を制御するように構成されたメモリ制御回路である。
【0020】
DRAMインタフェース2dは、CPU2bの制御の下、DRAM4を制御するように構成されたDRAM制御回路である。
【0021】
更に、コントローラ2は、圧縮装置2e(エンコーダ)及び伸張装置2f(デコーダ)を備える。
【0022】
圧縮装置2eは、例えばホストから書き込みコマンドが発行された場合に、当該書き込みコマンドにおいて指定されているデータ(書き込みデータ)を圧縮するために用いられる。なお、本実施形態の比較例において圧縮装置2eは少なくともエントロピー符号化を行うように構成されていればよいが、当該圧縮装置2eにおいては、例えば辞書式符号化(例えば、LZ77)とエントロピー符号化(例えば、ハフマン符号化)とを組み合わせた圧縮アルゴリズムによりデータを圧縮する方式が採用されているものとする。圧縮装置2eにおいて圧縮されたデータ(以下、圧縮データと表記)は、圧縮装置2eから出力された後、誤り訂正処理やランダマイズ処理等の所定の処理が実行される。CPU2bは、圧縮データに対して所定の処理が実行されたデータをNANDインタフェース2c経由でNAND型フラッシュメモリ3に書き込む。すなわち、CPU2bは、圧縮装置2eから出力された圧縮データに基づくデータをNAND型フラッシュメモリ3に書き込む。
【0023】
CPU2bは、例えばホストからホストインタフェース2a経由で受信した読み出しコマンドに基づいてNAND型フラッシュメモリ3から圧縮データを読み出す際に、当該読み出しコマンドに基づくデータをNANDインタフェース2c経由でNAND型フラッシュメモリ3から読み出す。NAND型フラッシュメモリ3から読み出されたデータは、当該データに対する誤り訂正処理、ランダマイズの解除処理等の所定の処理が実行された後、圧縮データとしてCPU2bにより伸張装置2fへ入力される。伸張装置2fは、入力された圧縮データを伸張する。すなわち、伸張装置2fは、NAND型フラッシュメモリ3から読み出されたデータに基づく圧縮データを伸張する。
【0024】
NAND型フラッシュメモリ3は、不揮発性メモリであり、マトリクス状に配置された複数のメモリセルを含むメモリセルアレイを有する。NAND型フラッシュメモリ3は、2次元構造のNAND型フラッシュメモリであってもよいし、3次元構造のNAND型フラッシュメモリであってもよい。
【0025】
NAND型フラッシュメモリ3のメモリセルアレイは、複数のブロックBLK0~BLKm-1を含む。ブロックBLK0~BLKm-1の各々は多数のページ(ここでは、ページP0~Pn-1)によって構成される。ブロックBLK0~BLKm-1は、消去単位として機能する。ページP0~Pn-1の各々は、同一ワード線に接続された複数のメモリセルを含む。ページP0~Pn-1は、データ書き込み動作及びデータ読み出し動作の単位である。
【0026】
ここではメモリシステム1がNAND型フラッシュメモリ3を備えるものとして説明したが、当該メモリシステム1は、不揮発性メモリとして例えばPCM(Phase Change Memory)またはMRAM(Magnetoresistive Random Access Memory)等を備える構成であってもよい。
【0027】
DRAM4は、揮発性メモリであり、例えばコントローラ2(CPU2b)において実行されるソフトウェアの一時的なバッファまたはNAND型フラッシュメモリ3に対する一時的なバッファ等として機能する。
【0028】
ここではメモリシステム1がDRAM4を備えるものとして説明したが、当該メモリシステム1は、揮発性メモリとして例えばSRAM(Static Random Access Memory)等を備える構成であってもよい。
【0029】
なお、図1においては圧縮装置2e及び伸張装置2fがコントローラ2に組み込まれているものとして説明したが、当該圧縮装置2e及び伸張装置2fは、コントローラ2の外部に設けられていてもよいし、メモリシステム1の外部に設けられていてもよい。
【0030】
更に、本実施形態の比較例においては圧縮装置2e及び伸張装置2fがハードウェアによって実現されるものとして説明するが、当該圧縮装置2e及び伸張装置2fの一部または全ては、ソフトウェアによって実現されてもよいし、ソフトウェア及びハードウェアの組み合わせによって実現されてもよい。
【0031】
以下、図2を参照して、図1に示す圧縮装置2e及び伸張装置2fの構成の一例について説明する。
【0032】
まず、圧縮装置2eの構成について説明する。本実施形態の比較例において、圧縮装置2eは、上記したように辞書式符号化とエントロピー符号化とを組み合わせた圧縮アルゴリズムを用いて、当該圧縮装置2eに入力された書き込みデータ(以下、非圧縮データと表記)を圧縮するように構成されているものとする。
【0033】
図2に示すように、圧縮装置2eは、辞書式符号化部11、符号化テーブル生成部12、インターリーブ部13、エントロピー符号化部14及びマルチプレクサ部15を備える。
【0034】
辞書式符号化部11は、圧縮装置2eに入力された非圧縮データ(入力データ)に対して辞書式符号化(辞書式圧縮)を行う。なお、辞書式符号化とは、辞書式符号化の対象となるデータ(以下、辞書式符号化対象データと表記)を、当該辞書式符号化対象データよりも過去のデータの相対参照に変換する符号化手法である。
【0035】
具体的には、辞書式符号化においては、過去のデータを格納しておくバッファ(以下、ヒストリバッファと表記)を用意し、辞書式符号化対象データと一致する過去のデータが当該ヒストリバッファから検索される。
【0036】
辞書式符号化対象データと一致する過去のデータがヒストリバッファ内に存在しない場合には、当該辞書式符号化対象データを示す情報(以下、リテラル情報と表記)が辞書式符号化の結果として出力される。
【0037】
一方、辞書式符号化対象データと一致する過去のデータがヒストリバッファ内に存在する場合には、辞書式符号化対象データとヒストリバッファ内に存在する過去のデータとが一致する長さを示す情報(以下、マッチ長情報と表記)及び当該過去のデータが格納されているヒストリバッファ内の位置(つまり、ヒストリバッファ内の過去データまでの距離)を示す情報(以下、距離情報と表記)の組が辞書式符号化の結果として出力される。
【0038】
すなわち、辞書式符号化部11は、入力データから部分的に切り出されたデータの各々を辞書式符号化対象データとして辞書式符号化を行い、当該辞書式符号化の結果であるリテラル情報、マッチ長情報及び距離情報の各々を出力するように動作する。
【0039】
なお、辞書式符号化部11から出力される辞書式符号化の結果は、エントロピー符号化の対象となるデータ(以下、エントロピー符号化対象データと表記)に相当する。エントロピー符号化対象データ(例えば、リテラル情報、マッチ長情報及び距離情報)はシンボルと称され、エントロピー符号化を行う場合には、上記した辞書式符号化の結果として順次配置された複数のシンボルから構成されるシンボル列が符号化テーブル生成部12及びインターリーブ部13に入力される。
【0040】
ここで、エントロピー符号化とは、エントロピー符号化対象データ(シンボル列を構成する複数のシンボルの各々)を当該エントロピー符号化対象データの出現頻度に応じた符号長の符号語(つまり、可変長符号)に変換する符号化手法である。エントロピー符号化によれば、エントロピー符号化対象データの出現頻度の違いを利用して、可変長符号を当該エントリピー符号化対象データに割り当てることで全体として符号量(データ量)を削減することができる。
【0041】
なお、エントロピー符号化としては、例えばハフマン符号化が用いられる。エントロピー符号化としてハフマン符号化が用いられる場合、当該ハフマン符号化は、予め構築された符号木(ハフマン木)を用いて符号化を行う静的ハフマン符号化であってもよいし、ハフマン符号化の対象となるデータにより符号木を変更する動的ハフマン符号化であってもよい。ここでは動的ハフマン符号化について説明する。
【0042】
ところで、deflateと称される圧縮方式(以下、deflate圧縮方式と表記)においては、上記したシンボル列を構成する複数のシンボルの各々に対してエントロピー符号化(ハフマン符号化)を行うことによって当該シンボルから変換された可変長符号(ハフマン符号)が順次パッキングされた圧縮ストリーム(圧縮データ)が生成される。換言すれば、deflate圧縮方式においては、可変長符号がシリアライズされた圧縮ストリームが生成される。このような圧縮ストリームを伸張する場合には、当該圧縮ストリームにパッキングされている可変長符号を先頭から順に切り出す必要があるため、伸張並列化が困難である(つまり、圧縮ストリームを伸張する処理のスループットが向上しない)。
【0043】
このため、本実施形態の比較例においては、インターリーブ格納方式と称される圧縮方式を採用する場合を想定する。このインターリーブ格納方式は、上記したdeflate圧縮方式をベースとする圧縮方式であるが、シンボル列を構成する複数のシンボルの各々から変換される可変長符号を固定長単位で複数のサブストリームにインターリーブ格納する点でdeflate圧縮方式とは異なる。
【0044】
符号化テーブル生成部12は、入力されたシンボル列を構成する複数のシンボルの各々の出現頻度に基づいて符号木を構築し、当該符号木から当該シンボルに割り当てる可変長符号が定義されたテーブル(以下、符号化テーブルと表記)を生成する。また、上記したようにインターリーブ格納方式はdeflate圧縮方式をベースとする圧縮方式であるため、符号化テーブル生成部12は、当該deflate圧縮方式に基づくデータ形式(以下、deflate形式と表記)において規定されているヘッダ(以下、deflateヘッダと表記)を生成する。なお、deflateヘッダには、例えば動的ハフマン符号化が用いられていること及び上記した符号化テーブルを生成するための情報等が設定される。
【0045】
インターリーブ部13は、上記したシンボル列を複数のサブシンボル列に分割する。ここでは、シンボル列のうちの複数の第1シンボルから構成される第1サブシンボル列と、当該複数の第1シンボルとは異なる複数の第2シンボルから構成される第2サブシンボル列とに分割されるものとする。インターリーブ部13は、第1及び第2サブシンボル列をエントロピー符号化部14に出力する。
【0046】
エントロピー符号化部14は、第1可変長符号化部141及び第2可変長符号化部142を含む。
【0047】
第1可変長符号化部141は、インターリーブ部13から出力された第1サブシンボル列を入力する。第1可変長符号化部141は、符号化テーブル生成部12によって生成された符号化テーブルを参照して、第1サブシンボル列を構成する複数の第1シンボルの各々に対してエントロピー符号化を行う。これにより、複数の第1シンボルの各々は、複数の第1可変長符号に変換される。このように複数の第1シンボルの各々から変換された複数の第1可変長符号は、第1可変長符号化部141からマルチプレクサ部15に出力される。
【0048】
第2可変長符号化部142は、インターリーブ部13から出力された第2サブシンボル列を入力する。第2可変長符号化部142は、符号化テーブル生成部12によって生成された符号化テーブルを参照して、第2サブシンボル列を構成する複数の第2シンボルの各々に対してエントロピー符号化を行う。これにより、複数の第2シンボルの各々は、複数の第2可変長符号に変換される。このように複数の第2シンボルの各々から変換された複数の第2可変長符号は、第2可変長符号化部142からマルチプレクサ部15に出力される。
【0049】
マルチプレクサ部15は、第1可変長符号化部141から出力された複数の第1可変長符号を入力し、当該複数の第1可変長符号を固定幅のサブストリーム(以下、第1サブストリームと表記)にパッキングする。また、マルチプレクサ部15は、第2可変長符号化部142から出力された複数の第2可変長符号を入力し、当該複数の第2可変長符号を固定幅のサブストリーム(以下、第2サブストリームと表記)にパッキングする。マルチプレクサ部15は、このような第1及び第2サブストリームが順に配置された圧縮ストリームを生成し、当該圧縮ストリームを出力する。なお、マルチプレクサ部15から出力される圧縮ストリームは、上記した符号化テーブル生成部12によって生成されたdeflateヘッダ及び第1及び第2サブストリームが配置されたペイロードから構成されるデータ形式(以下、インターリーブ格納形式と表記)を有する。
【0050】
ここで、図3を参照して、上記した圧縮装置2eの動作の概要について簡単に説明する。図3においては、説明の便宜のために、シンボルs0~s3から構成されるシンボル列100に対してエントロピー符号化が行われる場合を想定している。
【0051】
この場合、インターリーブ部13は、シンボル列100を第1サブシンボル列101及び第2サブシンボル列102に分割する。ここでは、第1サブシンボル列101は、シンボル列100を構成するシンボルs0~s3のうちのシンボルs0及びs2から構成される。一方、第2サブシンボル列102は、シンボル列100を構成するシンボルs0~s3のうちのシンボルs1及びs3から構成される。
【0052】
次に、第1可変長符号化部141は、第1サブシンボル列101を構成するシンボルs0及びs2の各々に対してエントロピー符号化を行うことによって、当該シンボルs0を可変長符号v0に変換し、当該シンボルs2を可変長符号v2に変換する。
【0053】
同様に、第2可変長符号化部142は、第2サブシンボル列102を構成するシンボルs1及びs3の各々に対してエントロピー符号化を行うことによって、当該シンボルs1を可変長符号v1に変換し、当該シンボルs3を可変長符号v3に変換する。
【0054】
マルチプレクサ部15は、第1可変長符号化部141から出力された可変長符号v0及びv2をパッキングして第1サブストリーム103を生成する。また、マルチプレクサ部15は、第2可変長符号化部142から出力された可変長符号v1及びv3をパッキングして第2サブストリーム104を生成する。マルチプレクサ部15は、このように生成された第1サブストリーム103と第2サブストリーム104とが順に配置された圧縮ストリーム105を出力する。
【0055】
このように圧縮装置2e(マルチプレクサ部15)から出力された圧縮ストリーム105(圧縮データ)は、上記した誤り訂正処理やランダマイズ処理等の所定の処理が実行された後にNAND型フラッシュメモリ3に書き込まれる。
【0056】
次に、伸張装置2fの構成について説明する。なお、上記したように圧縮装置2eが辞書式符号化とエントロピー符号化とを組み合わせた圧縮アルゴリズムにより非圧縮データを圧縮するように構成されている場合、伸張装置2fは、圧縮データ(圧縮ストリーム)に対するエントロピー復号及び当該エントロピー復号の結果に対する辞書式復号を行うように構成されている。
【0057】
図2に示すように、伸張装置2fは、符号化テーブル生成部21、デマルチプレクサ部22、エントロピー復号部23、デインターリーブ部24及び辞書式復号部25を含む。
【0058】
上記したようにNAND型フラッシュメモリ3に書き込まれた圧縮ストリームが当該NAND型フラッシュメモリ3から読み出された場合、当該圧縮ストリームは、伸張装置2fに入力される。
【0059】
ここで、圧縮ストリームは上記したようにdeflateヘッダ及びペイロードから構成されるデータ形式(つまり、インターリーブ格納形式)を有しているが、当該deflateヘッダには、上記したエントロピー符号化に用いられた符号化テーブルを生成するための情報が設定されている。このため、符号化テーブル生成部21は、伸張装置2fに入力された圧縮ストリームを構成するdeflateヘッダに設定されている情報に基づいて符号化テーブルを生成(再構成)する。
【0060】
デマルチプレクサ部22は、伸張装置2fに入力された圧縮ストリーム(を構成するペイロード)から第1及び第2サブストリームを切り出す。なお、上記したように圧縮ストリームを構成するペイロードには固定幅の第1及び第2サブストリームが順に配置されているため、デマルチプレクサ部22は、当該固定幅に基づいて当該第1及び第2サブストリームを容易に分離して切り出すことができる。デマルチプレクサ部22は、圧縮ストリームから切り出された第1及び第2サブストリームをエントロピー復号部23に出力する。
【0061】
エントロピー復号部23は、第1可変長復号部231及び第2可変長復号部232を含む。
【0062】
第1可変長復号部231は、デマルチプレクサ部22から出力された第1サブストリームを入力する。第1可変長復号部231は、符号化テーブル生成部21によって生成された符号化テーブルを参照して、第1サブストリームにパッキングされている複数の第1可変長符号(第1サブストリームに含まれる複数の第1可変長符号)の各々を順次切り出し、当該第1可変長符号に対する復号を行う。これによれば、複数の第1可変長符号の各々は、複数の第1シンボルに変換される。このように複数の第1可変長符号から変換された複数の第1シンボルは、第1可変長復号部231からデインターリーブ部24に出力される。
【0063】
第2可変長復号部232は、デマルチプレクサ部22から出力された第2サブストリームを入力する。第2可変長復号部232は、符号化テーブル生成部21によって生成された符号化テーブルを参照して、第2サブストリームにパッキングされている複数の第2可変長符号(第2サブストリームに含まれる複数の第2可変長符号)の各々を順次切り出し、当該第2可変長符号に対する復号を行う。これによれば、複数の第2可変長符号の各々は、複数の第2シンボルに変換される。このように複数の第2可変長符号から変換された複数の第2シンボルは、第2可変長復号部232からデインターリーブ部24に出力される。
【0064】
デインターリーブ部24は、第1可変長復号部231から出力された複数の第1シンボル及び第2可変長復号部232から出力された複数の第2シンボルを入力し、当該複数の第1及び第2シンボルを並び変える。デインターリーブ部24は、並び替えられた複数の第1及び第2シンボルから構成されるシンボル列を辞書式復号部25に出力する。
【0065】
辞書式復号部25は、デインターリーブ部24から出力されたシンボル列を入力し、当該入力されたシンボル列に対して辞書式復号を行う。詳しい説明については省略するが、辞書式復号部25に入力されたシンボル列は上記した辞書式符号化の結果に相当し、辞書式復号部25は、当該シンボル列に対して辞書式復号を行うことにより伸張データ(非圧縮データ)を出力する。
【0066】
ここで、図4を参照して、上記した伸張装置2fの動作の概要について簡単に説明する。図4においては、説明の便宜のために、上記した図3に示す圧縮ストリーム105と同様の圧縮ストリーム200に対してエントロピー復号を行う場合を想定している。
【0067】
この場合、デマルチプレクサ部22は、圧縮ストリーム200から第1サブストリーム201及び第2サブストリーム202を切り出す。なお、第1サブストリーム201は、図3に示す第1サブストリーム103相当し、可変長符号v0及びv2がパッキングされている。また、第2サブストリーム202は、図3に示す第2サブストリーム104に相当し、可変長符号v1及びv3がパッキングされている。
【0068】
次に、第1可変長復号部231は、第1サブストリーム201に含まれる可変長符号v0及びv2を順次切り出す。第1可変長復号部231は、第1サブストリーム201から切り出された可変長符号v0及びv2に対してエントロピー復号を行うことによって、当該可変長符号v0をシンボルs0に変換し、当該可変長符号v2をシンボルs2に変換する。
【0069】
同様に、第2可変長復号部232は、第2サブストリーム202に含まれる可変長符号v1及びv3を順次切り出す。第2可変長復号部232は、第2サブストリーム202から切り出された可変長符号v1及びv3に対してエントロピー復号を行うことによって、当該可変長符号v1をシンボルs1に変換し、当該可変長符号v3をシンボルs3に変換する。
【0070】
デインターリーブ部24は、第1可変長復号部231によって可変長符号v0及びv2から変換されたシンボルs0及びs2と第2可変長復号部232によって可変長符号v1及びv3から変換されたシンボルs1及びs3とを、上記した図3において説明した圧縮装置2eに含まれるインターリーブ部13がシンボルs0~s3から構成されるシンボル列を第1サブシンボル列(シンボルs0及びs2)及び第2サブシンボル列(シンボルs1及びs3)に分割した手順とは逆の手順で並び替える(統合する)。これにより、デインターリーブ部24は、シンボルs0~s3から構成されるシンボル列203を出力することができる。
【0071】
上記したようなインターリーブ格納方式によれば、伸張装置2fにおいて圧縮ストリームから切り出された複数のサブストリームを並列に処理する(並列復号する)ことができるため、高スループットのエントロピー復号を実現する(つまり、伸張スループットを向上させる)ことが可能である。
【0072】
ここで、NAND型フラッシュメモリ3に書き込まれた圧縮ストリーム(以下、インターリーブ格納形式の圧縮ストリームと表記)を外部機器(メモリシステム1を備える情報処理装置とは異なる電子機器等)に送信し、当該インターリーブ格納形式の圧縮ストリームが外部機器において利用されるような場合を想定する。なお、本実施形態において「圧縮ストリームを外部機器に送信する」とは、圧縮ストリームを外部機器に直接送信する場合や外部機器に圧縮ストリームを利用させるために当該外部機器と接続されるサーバ装置(例えば、クラウドコンピューティングサービスを提供するサーバ装置等)に当該圧縮ストリームをアップロードする(送信する)場合等が含まれる。
【0073】
上記したようにインターリーブ格納形式の圧縮ストリームを外部機器が利用するためには、伸張装置2fと同様の機能が当該外部機器に用意されている必要がある。つまり、伸張装置2fと同様の機能が外部機器に用意されていない場合には、当該外部機器は、圧縮ストリームを伸張することができず、当該圧縮ストリーム(を伸張することによって得られる伸張データ)を利用することができない。
【0074】
また、伸張装置2fと同様の機能が外部機器に用意されていない場合には、例えば伸張装置2fから出力される伸張データを外部機器に送信することが考えられるが、当該伸張データ(つまり、非圧縮データ)を送信する場合には帯域使用率が大きくなる。
【0075】
ところで、上記したdeflate圧縮方式は広く普及していることから、外部機器は、当該deflate圧縮方式において圧縮された圧縮ストリーム(つまり、deflate形式の圧縮ストリーム)を伸張する機能を有している可能性が高い。このため、伸張装置2fから出力される伸張データをdeflate圧縮方式において再度圧縮して外部機器に送信することが考えられる。しかしながら、この場合にはdeflate圧縮方式に対応する圧縮装置を用意する必要があり、コストが大きくなる。
【0076】
そこで、本実施形態に係るメモリシステム1は、図5に示すように、インターオペラビリティを考慮してインターリーブ格納形式(つまり、圧縮装置2eにおいて生成された圧縮ストリームのデータ形式)を例えばdeflate形式に低コストで変換するための変換装置2gを更に備える。
【0077】
本実施形態においては変換装置2gがコントローラ2に組み込まれている場合を想定しているが、当該変換装置2gは、コントローラ2の外部に設けられていてもよいし、メモリシステム1の外部に設けられていてもよい。また、本実施形態においては変換装置2gがハードウェアによって実現されるものとして説明するが、当該変換装置2gの一部または全ては、ソフトウェアによって実現されてもよいし、ソフトウェア及びハードウェアの組み合わせによって実現されてもよい。
【0078】
なお、本実施形態に係るメモリシステム1の構成は、変換装置2gを備える点以外は図1等を用いて説明した本実施形態の比較例に係るメモリシステム1と同様である。このため、以下においては、本実施形態の比較例と異なる点について主に説明し、本実施形態の比較例と同様の部分についての説明を省略する。
【0079】
以下、図6を参照して、図5に示す変換装置2gの構成の一例について説明する。図6に示すように、変換装置2gは、デマルチプレクサ部31、第1バッファ32a、第2バッファ32b、第1符号切出部33a、第2符号切出部33b及びデインターリーブ部34を含む。
【0080】
上記したようにNAND型フラッシュメモリ3に書き込まれた圧縮ストリームが当該NAND型フラッシュメモリ3から読み出された場合、当該圧縮ストリームは、変換装置2g(デマルチプレクサ部31)に入力される。なお、変換装置2gに入力される圧縮ストリームは、上記したようにdeflateヘッダ及び複数の可変長符号がインターリーブ格納されたペイロード(つまり、第1及び第2サブストリームが順に配置されたペイロード)から構成されるデータ形式(つまり、インターリーブ格納形式)を有する。
【0081】
デマルチプレクサ部31は、上記した伸張装置2fに備えられるデマルチプレクサ部22と同様に動作し、変換装置2gに入力された圧縮ストリーム(を構成するペイロード)から第1及び第2サブストリームを切り出す。
【0082】
デマルチプレクサ部31によって切り出された第1サブストリームは、例えば第1バッファ32aからの要求に基づいて当該第1バッファ32aに格納される。また、デマルチプレクサ部31によって切り出された第2サブストリームは、例えば第2バッファ32bからの要求に基づいて当該第2バッファ32bに格納される。
【0083】
第1符号切出部33aは、符号化テーブルを参照して第1バッファ32aに符号長を指示することによって当該第1バッファ32aに格納された第1サブストリームから複数の第1可変長符号の各々を切り出す。第1符号切出部33aは、切り出された複数の第1可変長符号の各々をデインターリーブ部34に出力する。
【0084】
第2符号切出部33bは、符号化テーブルを参照して第2バッファ32bに符号長を指示することによって当該第2バッファ32bに格納された第2サブストリームから複数の第2可変長符号の各々を切り出す。第2符号切出部33bは、切り出された複数の第2可変長符号の各々をデインターリーブ部34に出力する。
【0085】
なお、第1符号切出部33a及び第2符号切出部33bによって参照される符号化テーブルは、上記した伸張装置2fに備えられる符号化テーブル生成部21によって生成される符号化テーブルと同様である。このため、第1符号切出部33a及び第2符号切出部33bによって参照される符号化テーブルは、伸張装置2f(符号化テーブル生成部21)において生成されたものであってもよいし、変換装置2gに備えられる符号化テーブル生成部(図示せず)によって生成されたものであってもよい。
【0086】
デインターリーブ部34は、第1符号切出部33aから出力された複数の第1可変長符号及び第2符号切出部33bから出力された複数の第2可変長符号を入力し、当該複数の第1及び第2可変長符号を並び替える。これにより、デインターリーブ部34は、並び替えられた複数の第1及び第2可変長符号が配置された圧縮ストリームを出力する。このようにデインターリーブ部34から出力される圧縮ストリームは、deflateヘッダ及び並び替えられた複数の第1及び第2可変長符号が配置されたペイロードから構成されるデータ形式(つまり、deflate形式)を有する。
【0087】
ここで、図7を参照して、上記した変換装置2gの動作の概要について簡単に説明する。図7においては、説明の便宜のために、上記した図3に示す圧縮ストリーム105と同様の圧縮ストリーム300のデータ形式を変換する場合を想定している。この圧縮ストリーム300は、可変長符号が複数のサブストリームにインターリーブ格納されたインターリーブ格納形式を有する。
【0088】
この場合、デマルチプレクサ部31は、圧縮ストリーム300から第1サブストリーム301及び第2サブストリーム302を切り出す。なお、第1サブストリーム301は図7に示す第1サブストリーム103に相当し、当該第1サブストリーム301には可変長符号v0及びv2がパッキングされている。この第1サブストリーム301は、第1バッファ32aに格納される。また、第2サブストリーム302は図3に示す第2サブストリーム104に相当し、当該第2サブストリーム302には可変長符号v1及びv3がパッキングされている。この第2サブストリーム302は、第2バッファ32bに格納される。
【0089】
次に、第1符号切出部33aは、第1バッファ32aに格納された第1サブストリーム301にパッキングされている可変長符号v0及びv2を順次切り出す。
【0090】
同様に、第2符号切出部33bは、第2バッファ32bに格納された第2サブストリーム302にパッキングされている可変長符号v1及びv3を順次切り出す。
【0091】
デインターリーブ部34は、第1符号切出部33aによって第1サブストリーム301から切り出された可変長符号v0及びv2と第2符号切出部33bによって第2サブストリーム302から切り出された可変長符号v1及びv3とを、伸張装置2fに含まれるデインターリーブ部24がシンボルs0及びs2とシンボルs1及びs3とを並び替えるのと同様の手順で並び替える。これにより、デインターリーブ部34は、deflateヘッダ及び可変長符号v0~v3が順に配置されたペイロードから構成される圧縮ストリーム303を生成することができる。
【0092】
なお、図8は、deflate形式の圧縮ストリームのデータ構造(圧縮データ構造)を示している。なお、deflate形式の圧縮ストリームのデータ構造は、RFC1951において規定されている。
【0093】
図8に示すように、deflate形式の圧縮ストリームは、ヘッダ(deflateヘッダ)及び可変長符号が配置されるペイロードから構成される。詳しい説明については省略するが、上記した動的ハフマン符号化が用いられていることはヘッダ中のBTYPEに設定され、符号化テーブルを生成するための情報はヘッダ中のHLIT、HDIST、HCLEN、Code lengths for the code length alphabet、Code lengths for the literal/length alphabet及びCode lengths for the distance alphabetに設定される。また、ハフマン符号化は予め定められたサイズのブロック毎に符号を構築する手法であるが、ヘッダ中のBFINALには最後のブロックであることが設定される。
【0094】
ここで、インターリーブ格納形式の圧縮ストリームは、圧縮装置2eにインターリーブ部13及びマルチプレクサ部15を設けることによって実現される。換言すれば、圧縮装置2eにインターリーブ部13及びマルチプレクサ部15を設けなければ、deflate形式の圧縮ストリームが圧縮装置2eから出力される。
【0095】
このため、本実施形態においては、図9に示すように、インターリーブ格納形式の圧縮ストリームを構成するペイロードに配置されている可変長符号を並び替えることによって、インターリーブ格納形式(の圧縮ストリームを構成するペイロード)をdeflate形式に変換することができる。
【0096】
ところで、本実施形態においては変換装置2gがインターリーブ格納形式の圧縮ストリームをdeflate形式の圧縮ストリームに変換するものとして説明したが、変換装置2gは、インターリーブ格納形式の圧縮ストリームを、例えばdeflate圧縮方式を利用するgzipと称される圧縮方式に基づくデータ形式(以下、gzip形式と表記)の圧縮ストリームに変換する構成(以下、本実施形態の変形例と表記)であっても構わない。
【0097】
図10は、本実施形態の変形例に係る変換装置2gの構成の一例を示す。なお、図10においては、上記した図6と同様の部分については同一参照符号を付してその詳しい説明を省略する。
【0098】
ここで、gzip形式においては、deflate形式を有する圧縮ストリームに対して、当該gzip形式において規定されているヘッダ(以下、gzipヘッダと表記)及びフッタ(以下、gzipフッタと表記)が付加される。
【0099】
この場合、図10に示す変換装置2gは、ヘッダ/フッタ生成部35を更に備える。ヘッダ/フッタ生成部35は、上記したようにデインターリーブ部34から出力されたdeflate形式の圧縮ストリームを入力し、当該圧縮ストリームに付加されるgzipヘッダ及びgzipフッタを生成する。
【0100】
なお、gzip形式の圧縮ストリームのデータ構造は、RFC1952において規定されている。
【0101】
gzip形式によれば、gzipヘッダには、ID、CM(compression method)、FLG(flags)、MTIME(modification time)、XFL(extra flags)、OS及びXLEN(extra length)が設定される。なお、本実施形態におけるgzipヘッダには、ID、CM、FLG、MTIME、XFL、OS及びXLENとして固定値を設定することができる。このため、ヘッダ/フッタ生成部35は、例えば変換装置2g内部に予め格納(用意)されているID、CM、FLG、MTIME、XFL、OS及びXLENの値(固定値)を設定することによって、gzipヘッダを生成することができる。
【0102】
一方、gzipフッタには、CRC32及びISIZEが設定される。CRC32は、誤り検出符号の一種であり、32ビット長のCRC(cyclic redundancy checksum)である。図10に示すようにヘッダ/フッタ生成部35は計算部351を含み、当該計算部351は、上記したデインターリーブ部34から出力されたdeflate形式の圧縮ストリームを構成するペイロードに配置されている複数の可変長符号に基づいてCRC32を計算する。
【0103】
ISIZEは、圧縮される前のデータのサイズ(元データサイズ)ある。元データサイズは例えば圧縮装置2eが動作する際にホストによって設定された圧縮制御情報に含まれているものとする。この圧縮制御情報は例えば変換装置2g内のレジスタ等に格納されており、ヘッダ/フッタ生成部35は、当該圧縮制御情報を参照することによって元データサイズを取得する。
【0104】
ヘッダ/フッタ生成部35は、上記したように計算されたCRC32(誤り検出符号)及び取得された元データサイズを設定することによってgzipフッタを生成することができる。
【0105】
ヘッダ/フッタ生成部35は、生成されたgzipヘッダ及びgzipフッタをデインターリーブ部34から出力されたdeflate形式の圧縮ストリームに付加することによって得られるgzip形式の圧縮ストリームを出力する。
【0106】
上記したように図10に示す変換装置2gによれば、インターリーブ格納形式をgzip形式に変換することができる。
【0107】
ここではgzip形式について説明したが、本実施形態は、インターリーブ格納形式をzlibと称される圧縮方式に基づくデータ形式(以下、zlib形式と表記)に変換する場合に適用されてもよい。なお、zlib形式の圧縮ストリームのデータ構造はRFC1950において規定されており、gzip形式の場合と同様に、固定値が設定されたヘッダと可変長符号に基づいて計算された誤り検出符号が設定されたフッタとが生成され、当該生成されたヘッダ及びフッタがdeflate形式の圧縮ストリームに付加されればよい。
【0108】
なお、本実施形態においては、NAND型フラッシュメモリ3から読み出された圧縮ストリームを伸張することによって得られた伸張データ(非圧縮データ)を伸張装置2fが出力することができ、データ形式が変換された圧縮ストリームを変換装置2gが出力することができるが、当該出力形式は、NAND型フラッシュメモリ3から圧縮ストリームが読み出される際にメモリシステム1の外部(例えば、ホスト)から指定されるものとする。具体的には、例えば出力形式として「伸張データ」が指定されている場合には、伸張装置2fが動作することによって当該伸張装置2fから伸張データが出力される。一方、例えば出力形式として「データ形式が変換された圧縮ストリーム」が指定されている場合には、変換装置2gが動作することによって当該変換装置2gからデータ形式が変換された圧縮ストリームが出力される。
【0109】
なお、上記した出力形式は、例えばホストから発行される読み出しコマンドにおいて指定されていてもよい。
【0110】
また、本実施形態の変形例においては、変換装置2gから出力される圧縮ストリームのデータ形式が更に外部から指定されてもよい。具体的には、例えば圧縮ストリームのデータ形式として「deflate形式」が指定されている場合には、ヘッダ/フッタ生成部35を動作させることなく、デインターリーブ部34からdeflate形式の圧縮ストリームが出力される。一方、例えば圧縮ストリームのデータ形式として「gzip形式」または「zlib形式」が指定された場合には、ヘッダ/フッタ生成部35を動作させることによって、当該ヘッダ/フッタ生成部35からgzip形式またはzlibの圧縮ストリームが出力される。
【0111】
更に、本実施形態の比較例においてはインターリーブ格納形式の圧縮ストリームを構成するペイロードには例えば固定長(固定幅)の複数のサブストリームが配置されるものとして説明したが、本実施形態においては、伸張装置2f及び変換装置2gにおいて複数のサブストリームを適切に切り出すことが可能であれば、当該サブストリームは固定長でなくても構わない。
【0112】
上記したように本実施形態に係る変換装置2gは、インターリーブ格納形式の圧縮ストリーム(第1圧縮ストリーム)を入力し、当該入力された圧縮ストリームから第1及び第2サブストリームを切り出すデマルチプレクサ部31と、複数の第1可変長符号を第1サブストリームから切り出す第1符号切出部33aと、複数の第2可変長符号を第2サブストリームから切り出す第2符号切出部33bと、第1サブストリームから切り出された複数の第1可変長符号及び第2サブストリームから切り出された複数の第2可変長符号をシンボル列(エントロピー符号化が行われたシンボル列)に従って並び替え、当該並び替えられた複数の第1及び第2可変長符号が配置されたdeflate形式の圧縮ストリーム(第2圧縮ストリーム)を出力するデインターリーブ部34とを備える。
【0113】
なお、本実施形態において、インターリーブ格納形式の圧縮ストリームは、deflateヘッダと複数の第1及び第2可変長符号をそれぞれ含む第1及び第2サブストリームが配置されたペイロードから構成されており、deflate形式の圧縮ストリームは、deflateヘッダと並び替えられた複数の第1及び第2可変長符号が配置されたペイロードから構成される。
【0114】
本実施形態においては、このような構成により、圧縮ストリームのデータ形式を低コストで変換する(つまり、インターリーブ格納形式からdeflate形式への変換を低コストで実現する)ことができる。
【0115】
具体的には、上記したように本実施形態の比較例においてはdeflate圧縮方式に対応する圧縮装置を設ける必要があるのに対して、本実施形態においては、変換装置2gを設けるのみでインターリーブ格納形式をdeflate形式に変換することができる。本実施形態においては変換装置2gを設ける必要はあるが、当該変換装置2gは、圧縮ストリームを構成するペイロードに配置される複数の可変長符号(第1及び第2可変長符号)を並び替える簡易な処理で圧縮ストリームのデータ形式を変換することができるため、非圧縮データをdeflate圧縮方式において再圧縮するための圧縮装置を設ける場合と比較して、低コストで実現することが可能である。
【0116】
また、本実施形態に係る変換装置2gは、メモリシステム1の外部(例えば、ホスト)から指定された圧縮方式に基づくデータ形式(例えば、gzip形式)に従ってヘッダ及びフッタを生成するヘッダ/フッタ生成部35を更に備え、deflate形式の圧縮ストリームに当該ヘッダ及びフッタを付加して出力するような構成であってもよい。この場合、ヘッダは予め用意されている固定値を設定することによって生成され、フッタはペイロードに配置されている複数の可変長符号に基づいて計算される誤り検出符号を設定することによって生成される。このような構成によれば、deflate形式の圧縮ストリームをgzip形式の圧縮ストリームに変換することが可能となる。
【0117】
更に、本実施形態に係るメモリシステム1は圧縮装置2e及びNAND型フラッシュメモリ3(不揮発性メモリ)を備え、当該圧縮装置2eから出力された圧縮ストリーム(インターリーブ格納形式の圧縮ストリーム)は、NAND型フラッシュメモリ3に書き込まれる(格納される)。また、NAND型フラッシュメモリ3から圧縮ストリームが読み出される場合には、外部から指定された出力形式に基づいて伸張データまたはデータ形式が変換された圧縮ストリーム(deflate形式の圧縮ストリーム)が出力される。本実施形態においては、このような構成により、例えばホスト等からの指示に基づいて所望のデータ(伸張データまたはデータ形式が変換された圧縮ストリーム)を出力することが可能となる。
【0118】
なお、本実施形態においては辞書式符号化の結果をシンボルとしてエントロピー符号化を行う(つまり、圧縮装置2eが辞書式符号化部11を備え、伸張装置2fが辞書式復号部25を備える)ものとして説明したが、本実施形態におけるシンボルは、他の形式の情報であっても構わない。
【0119】
また、本実施形態においてはエントロピー符号化としてハフマン符号化について主に説明したが、当該エントロピー符号化は、ハフマン符号化に限定されない。
【0120】
更に、本実施形態においては2つのサブストリームが配置された圧縮ストリーム(インターリーブ格納形式の圧縮ストリーム)がdeflate形式の圧縮ストリームに変換される場合について主に説明したしたが、本実施形態に係る変換装置2gは、少なくとも2つのサブストリームが配置された圧縮ストリームをdeflate形式の圧縮ストリームに変換することを意図している。すなわち、変換装置2gは、例えば第1~第N(Nは2上の整数)サブストリームが順に配置された圧縮ストリームをdeflate形式の圧縮ストリームに変換するように構成されていてもよい。ここで、Nは、例えば2、4、8、16、32、64である。
【0121】
なお、この場合、圧縮装置2eは、N個のサブストリーム(第1~第Nサブストリーム)が順に配置された圧縮ストリームを生成(出力)するように構成されている必要がある。具体的には、圧縮装置2eは、シンボル列をN個のサブシンボル列(第1~第Nサブシンボル列)に分割するインターリーブ部13、当該N個のサブシンボル列に対応するN個の可変長符号化部(第1~第N可変長符号化部)を含むエントロピー符号化部14、当該第1~第N可変長符号化部から出力された第1~第N可変長符号の各々がパッキングされた第1~第Nサブストリームが順に配置された圧縮ストリームを出力するマルチプレクサ部15を備えるように構成されている。また、詳しい説明については省略するが、伸張装置2fは、例えば第1~第N可変長復号部を含むエントロピー復号部を備え、このような圧縮装置2eから出力される圧縮ストリームを伸張することができるように構成されている。
【0122】
上記したように第1~第Nサブストリームが順に配置された圧縮ストリームが圧縮装置2eから出力される場合、変換装置2gは、当該圧縮ストリームから第1~第Nサブストリームを切り出すデマルチプレクサ部31と、当該第1~第Nサブストリームに対応する第1~第Nバッファ及び第1~第N符号切出部と、当該第1~第N符号切出部から出力された可変長符号(複数の第1可変長符号~複数の第N可変長符号)を並び替えるデインターリーブ部34を備えるように構成されていればよい。
【0123】
なお、変換装置2gにおいて、例えば第1~第Nサブストリームのうちの第i(i=1,2,…,N)サブストリームは第iバッファ及び第i符号切出部に対応しており、当該第i符号切出部からは当該第iサブストリームから切り出された複数の第i可変長符号が出力される。すなわち、本実施形態において、例えば「第1~第Nサブストリームから複数の第1可変長符号~複数の第N可変長符号が切り出される」という場合には、第iサブストリームから複数の第i可変長符号が切り出されることを意味しているのであって、当該第iサブストリームから第i可変長符号以外の可変長符号(例えば、第i+1可変長符号または第i-1可変長符号等)が切り出されるような場合は含まない。ここでは変換装置2gについて説明したが、圧縮装置2eにおいては、第1~第Nサブシンボル列のうちの第iサブシンボル列は第i可変長符号化部に対応しており、当該第i可変長符号化部から出力された第i可変長符号が第iサブストリームにパッキングされる。
【0124】
このような構成によれば、N個のサブストリームが配置されたインターリーブ格納形式の圧縮ストリームをdeflate形式の圧縮ストリームに変換することが可能な変換装置2gを実現することができる。ここでは、インターリーブ格納形式の圧縮ストリームをdeflate形式の圧縮ストリームに変換する場合について説明したが、インターリーブ格納形式の圧縮ストリームをgzip形式またはzlib形式の圧縮ストリームに変換する場合についても同様である。
【0125】
(第2実施形態)
次に、第2実施形態について説明する。なお、本実施形態においては、前述した第1実施形態と同様の部分についての詳しい説明を省略し、当該第1実施形態とは異なる部分について主に説明する。
【0126】
前述した第1実施形態においてはメモリシステムが圧縮装置、伸張装置及び変換装置を備えるものとして説明したが、本実施形態においては、伸張装置及び変換装置が一体として構成されている点で当該第1実施形態とは異なる。すなわち、本実施形態に係るメモリシステムが備える伸張装置は、前述した第1実施形態において説明した圧縮ストリームのデータ形式を変換する機能を有する伸張装置(つまり、圧縮データ変換機能付き伸張装置)であるということができる。
【0127】
この場合、本実施形態に係るメモリシステムは前述した図2に示す構成と同様であるため、本実施形態に係るメモリシステム2の構成については図2を用いて説明する。
【0128】
以下、図11を参照して、本実施形態に係る伸張装置2fの構成の一例について説明する。図11に示すように、伸張装置2fは、符号化テーブル生成部41、デマルチプレクサ部42、エントロピー復号部43、デインターリーブ部44及び辞書式復号部45を含む。
【0129】
NAND型フラッシュメモリ3に書き込まれた圧縮ストリーム(インターリーブ格納形式の圧縮ストリーム)が当該NAND型フラッシュメモリ3から読み出された場合、当該圧縮ストリームは、伸張装置2fに入力される。
【0130】
符号化テーブル生成部41は、前述した第1実施形態において説明した伸張装置2fの符号化テーブル生成部21と同様に、伸張装置2fに入力された圧縮ストリームを構成するdeflateヘッダに設定されている情報に基づいて符号化テーブルを生成(再構成)する。
【0131】
デマルチプレクサ部42は、前述した第1実施形態において説明した伸張装置2fのデマルチプレクサ部22及び変換装置2gのデマルチプレクサ部31と同様に、伸張装置2fに入力された圧縮ストリーム(を構成するペイロード)から第1及び第2サブストリームを切り出す。デマルチプレクサ部42は、圧縮ストリームから切り出された第1及び第2サブストリームをエントロピー復号部43に出力する。
【0132】
エントロピー復号部43は、第1可変長復号部431及び第2可変長復号部432を含む。
【0133】
第1可変長復号部431は、第1バッファ431a、第1符号切出部431b及び第1復号部431cを含む。
【0134】
第1バッファ431aは、前述した第1実施形態において説明した変換装置2gの第1バッファ32aと同様に、デマルチプレクサ部42から出力された第1サブストリームを格納する。
【0135】
第1符号切出部431bは、前述した第1実施形態において説明した変換装置2gの第1符号切出部33aと同様に、符号化テーブル生成部41によって生成された符号化テーブルを参照して第1バッファ431aに格納された第1サブストリームから複数の第1可変長符号を切り出す。
【0136】
ここで、本実施形態においては、前述した第1実施形態において説明したように、出力形式がメモリシステム1の外部から指定されるものとする。出力形式として「伸張データ」が指定されている場合、第1符号切出部431bは、第1サブストリームから切り出された複数の第1可変長符号を第1復号部431cに出力する。一方、出力形式として「データ形式が変換された圧縮ストリーム」が指定されている場合、第1符号切出部431bは、第1サブストリームから切り出された複数の第1可変長符号をデインターリーブ部44に出力する。
【0137】
第1復号部431cは、前述した第1実施形態において説明した伸張装置2fの第1可変長復号部231と同様に、符号化テーブル生成部41によって生成された符号化テーブルを参照して、第1符号切出部431bから出力された複数の第1可変長符号の各々に対する復号を行う(つまり、複数の第1可変長符号を複数の第1シンボルに変換する)。このように複数の第1可変長符号から変換された複数の第1シンボルは、第1復号部431cからデインターリーブ部44に出力される。
【0138】
第2可変長復号部は、第2バッファ432a、第2符号切出部432b及び第2復号部432cを含む。
【0139】
第2バッファ432aは、前述した第1実施形態において説明した変換装置2gの第2バッファ32bと同様に、デマルチプレクサ部42から出力された第2サブストリームを格納する。
【0140】
第2符号切出部432bは、前述した第1実施形態において説明した変換装置2gの第2符号切出部33bと同様に、符号化テーブル生成部41によって生成された符号化テーブルを参照して第2バッファ432aに格納された第2サブストリームから複数の第2可変長符号を切り出す。
【0141】
ここで、上記したように出力形式として「伸張データ」が指定されている場合、第2符号切出部432bは、第2サブストリームから切り出された複数の第2可変長符号を第2復号部432cに出力する。一方、出力形式として「データ形式が変換された圧縮ストリーム」が指定されている場合、第2符号切出部432bは、第2サブストリームから切り出された複数の第2可変長符号をデインターリーブ部44に出力する。
【0142】
第2復号部432cは、前述した第1実施形態において説明した伸張装置2fの第2可変長復号部232と同様に、符号化テーブル生成部41によって生成された符号化テーブルを参照して、第2符号切出部432bから出力された複数の第2可変長符号の各々に対する復号を行う(つまり、複数の第2可変長符号を複数の第2シンボルに変換する)。このように複数の第2可変長符号から変換された複数の第2シンボルは、第2復号部432cからデインターリーブ部44に出力される。
【0143】
上記したように出力形式として「伸張データ」が指定されている場合、デインターリーブ部44は、第1復号部431cから出力された複数の第1シンボル及び第2復号部432cから出力された複数の第2シンボルを入力する。デインターリーブ部44は、前述した第1実施形態において説明した伸張装置2fのデインターリーブ部24と同様に、入力された複数の第1及び第2シンボルを並び替える。デインターリーブ部44は、並び替えられた複数の第1及び第2シンボルから構成されるシンボル列を辞書式復号部45に出力する。
【0144】
辞書式復号部45は、前述した第1実施形態において説明した伸張装置2fの辞書式復号部25と同様に、デインターリーブ部44から出力されたシンボル列に対して辞書式復号を行うことにより伸張データを出力する。
【0145】
一方、出力形式として「データ形式が変換された圧縮ストリーム」が指定されている場合、デインターリーブ部44は、第1符号切出部431bから出力された複数の第1可変長符号及び第2符号切出部432bから出力された複数の第2可変長符号を入力する。デインターリーブ部44は、前述した第1実施形態において説明した変換装置2gのデインターリーブ部34と同様に、入力された複数の第1及び第2可変長符号を並び替える。デインターリーブ部44は、並び替えられた複数の第1及び第2可変長符号が配置された圧縮ストリーム(つまり、deflate形式の圧縮ストリーム)を出力する。
【0146】
上記したように図11に示す伸張装置2fは、外部から指定された出力形式に応じてインターリーブ格納形式の圧縮ストリームを伸張することによって得られる伸張データ(非圧縮データ)を出力する機能及び当該インターリーブ格納形式からdeflate形式に変換された圧縮ストリームを出力する(つまり、圧縮ストリームのデータ形式を変換する)機能を有するように構成されている。
【0147】
ここでは伸張装置2fがインターリーブ格納形式の圧縮ストリームをdeflate形式の圧縮ストリームに変換する場合について説明したが、本実施形態に係る伸張装置2fは、インターリーブ格納形式の圧縮ストリームを、例えばgzip形式の圧縮ストリームに変換する構成(以下、本実施形態の変形例と表記)であってもよい。この場合、本実施形態の変形例に係る伸張装置2fは、図12に示すように、ヘッダ/フッタ生成部46を更に含むように構成されていればよい。なお、ヘッダ/フッタ生成部46は、前述した第1実施形態において説明した変換装置2gのヘッダ/フッタ生成部35と同様に構成されており、計算部351と同様の計算部461を含む。このような本実施形態の変形例によれば、デインターリーブ部44から出力されるdeflate形式の圧縮ストリームにヘッダ/フッタ生成部46によって生成されたgzipヘッダ及びgzipフッタを付加することによってgzip形式の圧縮ストリームを出力することができる。
【0148】
上記したように本実施形態においては、圧縮ストリームのデータ形式を低コストで変換する機能を有する伸張装置2f(を備えるメモリシステム1)を実現することができる。このような構成によれば、前述した第1実施形態において説明したように伸張装置2fとは別個の変換装置2gを設ける必要がないため、メモリシステム1の小型化に寄与することが可能となる。
【0149】
なお、詳しい説明については省略するが、本実施形態に係る伸張装置2fは、N個のサブストリームが配置されたインターリーブ格納形式の圧縮ストリームを伸張する機能及び当該インターリーブ格納形式の圧縮ストリームをdeflate形式等の圧縮ストリームに変換する機能を有するように構成されていてもよい。
【0150】
以上述べた少なくとも1つの実施形態によれば、圧縮ストリームのデータ形式を低コストで変換することが可能な変換装置、メモリシステム及び伸張装置を提供することができる。
【0151】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものである。
【符号の説明】
【0152】
1…メモリシステム、2…コントローラ、2a…ホストインタフェース、2b…CPU、2c…NANDインタフェース、2d…DRAMインタフェース、2e…圧縮装置、2f…伸張装置、2g…変換装置、3…NAND型フラッシュメモリ(不揮発性メモリ)、4…DRAM、11…辞書式符号化部、12…符号化テーブル生成部、13…インターリーブ部、14…エントロピー符号化部、15…マルチプレクサ部、21…符号化テーブル生成部、22…デマルチプレクサ部、23…エントロピー復号部、24…デインターリーブ部、25…辞書式復号部、31…デマルチプレクサ部、32a…第1バッファ、32b…第2バッファ、33a…第1符号切出部、33b…第2符号切出部、34…デインターリーブ部、35…ヘッダ/フッタ生成部、41…符号化テーブル生成部、42…デマルチプレクサ部、43…エントロピー復号部、44…デインターリーブ部、45…辞書式復号部、46…ヘッダ/フッタ生成部、141…第1可変長符号化部、142…第2可変長符号化部、231…第1可変長復号部、232…第2可変長復号部、351…計算部、431a…第1バッファ、431b…第1符号切出部、431c…第1復号部、432a…第2バッファ、432b…第2符号切出部、432c…第2復号部、461…計算部。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12