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

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

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

(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2022128110
(43)【公開日】2022-09-01
(54)【発明の名称】メモリシステム
(51)【国際特許分類】
   G06F 12/04 20060101AFI20220825BHJP
   G06F 12/00 20060101ALI20220825BHJP
   H03M 7/40 20060101ALI20220825BHJP
【FI】
G06F12/04 530
G06F12/00 550E
G06F12/00 597U
H03M7/40
【審査請求】未請求
【請求項の数】43
【出願形態】OL
(21)【出願番号】P 2021026455
(22)【出願日】2021-02-22
(71)【出願人】
【識別番号】318010018
【氏名又は名称】キオクシア株式会社
(74)【代理人】
【識別番号】110001737
【氏名又は名称】特許業務法人スズエ国際特許事務所
(72)【発明者】
【氏名】小玉 翔
(72)【発明者】
【氏名】中西 圭里
(72)【発明者】
【氏名】住吉 正人
(72)【発明者】
【氏名】王 哲也
(72)【発明者】
【氏名】及川 恒平
(72)【発明者】
【氏名】深澤 洋平
(72)【発明者】
【氏名】八島 大亮
(72)【発明者】
【氏名】三浦 貴
【テーマコード(参考)】
5B160
5J064
【Fターム(参考)】
5B160AA14
5B160DA08
5J064AA02
5J064BA09
5J064BC02
5J064BC14
5J064BD03
(57)【要約】      (修正有)
【課題】消費電力を抑制し、効率的にデータを圧縮することが可能なメモリシステムを提供する。
【解決手段】メモリシステムは、第1データを圧縮した第2データを出力する圧縮器と、第2データに基づく第3データが書き込まれる不揮発性メモリ(NAND型フラッシュメモリ)と、を具備する。圧縮器は、辞書式符号化部と、エントロピー符号化部と、第1計算部を含む圧縮効率監視部と、ゲーティング制御部と、を含む。辞書式符号化部は、第1データに対する辞書式符号化の結果を出力する。エントロピー符号化部は、辞書式符号化の結果に対するエントロピー符号化の結果を出力する。第1計算部は、辞書式符号化及びエントロピー符号化の圧縮効率を計算する。ゲーティング制御部は、圧縮効率と電力削減レベルとに基づいて、第4データに対する辞書式符号化部及びエントロピー符号化部の動作を制御する。
【選択図】図2
【特許請求の範囲】
【請求項1】
入力された第1データを圧縮した第2データを出力する圧縮器と、
前記圧縮器から出力された第2データに基づく第3データが書き込まれる不揮発性メモリと
を具備し、
前記圧縮器は、
前記第1データに対して辞書式符号化を行い、前記辞書式符号化の結果を出力する辞書式符号化部と、
前記辞書式符号化の結果に対してエントロピー符号化を行い、前記エントロピー符号化の結果を前記第2データとして出力するエントロピー符号化部と、
前記辞書式符号化及び前記エントロピー符号化の圧縮効率を計算する第1計算部と、
前記計算された圧縮効率と、前記圧縮器に入力される電力削減レベルとに基づいて、前記圧縮器に入力された第4データに対する前記辞書式符号化部及び前記エントロピー符号化部のうちの少なくとも一方の動作を制御する第1制御部と
を含む
メモリシステム。
【請求項2】
前記第1制御部によって前記辞書式符号化部の動作がスキップされた場合、前記第4データに対するエントロピー符号化の結果が前記圧縮器から出力され、
前記第1制御部によって前記エントロピー符号化部の動作がスキップされた場合、前記辞書式符号化部の結果が前記圧縮器から出力され、
前記第1制御部によって前記辞書式符号化部及び前記エントロピー符号化部の動作がスキップされた場合、前記第4データが前記圧縮器から出力される
請求項1記載のメモリシステム。
【請求項3】
前記辞書式符号化部によって行われる辞書式符号化は、前記辞書式符号化部に入力されたデータを前記データよりも過去のデータの相対参照に変換する符号化手法であり、
前記エントロピー符号化部によって行われるエントロピー符号化は、前記エントロピー符号化部に入力されたデータを、前記データの出現頻度に応じた符号長の符号に変換する符号化手法である
請求項1または2記載のメモリシステム。
【請求項4】
前記第1計算部は、前記第1データに対する辞書式符号化の結果及び前記辞書式符号化の結果に対するエントロピー符号化の結果に基づいて前記圧縮効率を計算する請求項1~3のいずれか一項に記載のメモリシステム。
【請求項5】
前記第4データを分類する分類部を更に具備し、
前記第1計算部は、前記分類結果に基づいて前記圧縮効率を計算する
請求項4記載のメモリシステム。
【請求項6】
前記辞書式符号化部は、前記辞書式符号化部に入力されたデータを比較的近い過去のデータの相対参照に変換する辞書式符号化を行う第1辞書式符号化部と、前記辞書式符号化部に入力されたデータを比較的遠い過去のデータの相対参照に変換する辞書式符号化を行う第2辞書式符号化部とを含み、
前記第1計算部は、前記第1辞書式符号化部による辞書式符号化の結果及び前記第2辞書式符号化部による辞書式符号化の結果に基づいて、前記第1辞書式符号化部による辞書式符号化及び前記第2辞書式符号化部による辞書式符号化の圧縮効率を計算し、
前記第1制御部は、前記計算された圧縮効率に基づいて、前記第4データに対する前記第1辞書式符号化部及び前記第2辞書式符号化部のうちの少なくとも一方の動作を制御する
請求項4または5記載のメモリシステム。
【請求項7】
前記第2辞書式符号化部は、前記辞書式符号化部に入力されたデータを前記比較的遠い過去のデータのうちの一部の相対参照に変換する辞書式符号化を行う第3辞書式符号化部と、前記辞書式符号化部に入力されたデータを前記比較的遠い過去のデータのうちの他部の相対参照に変換する辞書式符号化を行う第4辞書式符号化部とを含み、
前記第1計算部は、前記第3辞書式符号化部による辞書式符号化の結果及び前記第4辞書式符号化部による辞書式符号化の結果に基づいて、前記第3辞書式符号化部による辞書式符号化及び前記第4辞書式符号化部による辞書式符号化の圧縮効率を計算し、
前記第1制御部は、前記計算された圧縮効率に基づいて、前記第4データに対する前記第3辞書式符号化部及び前記第4辞書式符号化部のうちの少なくとも一方の動作を制御する
請求項6記載のメモリシステム。
【請求項8】
前記辞書式符号化の結果は、複数のシンボルを含み、
前記エントロピー符号化部は、前記シンボル毎の出現頻度を格納する第1頻度テーブルを生成する第1生成部と、前記シンボルを符号に変換するために使用される第1符号化テーブルを前記第1頻度テーブルに基づいて生成する第2生成部と、前記第1符号化テーブルを用いてエントロピー符号化を行う符号化部と、前記第1頻度テーブルと過去の第2頻度テーブルとの類似度を計算する第2計算部とを含み、
前記第1計算部は、前記類似度に基づいて前記エントロピー符号化の圧縮効率を計算し、
前記第1制御部は、前記計算された圧縮効率に基づいて前記第2生成部の動作をスキップし、
前記符号化部は、前記第2生成部の動作がスキップされた場合、過去の第2符号化テーブルを用いてエントロピー符号化を行う
請求項4~7のいずれか一項に記載のメモリシステム。
【請求項9】
前記辞書式符号化の結果は、複数のシンボルを含み、
前記エントロピー符号化部は、前記シンボル毎の出現頻度を格納する第1頻度テーブルを生成する第1生成部と、前記シンボルを符号に変換するために使用される第1符号化テーブルを前記第1頻度テーブルに基づいて生成する第2生成部と、前記第1符号化テーブルを用いてエントロピー符号化を行う符号化部と、前記辞書式符号化の結果に含まれる複数のシンボルとは独立して予め用意されている第3符号化テーブルを用いてエントロピー符号化が行われた場合の符号量を計算する第3計算部とを更に含み、
前記第1計算部は、前記計算された符号量に基づいて前記エントロピー符号化部の圧縮効率を計算し、
前記第1制御部は、前記計算された圧縮効率に基づいて前記第2生成部の動作をスキップし、
前記符号化部は、前記第2生成部の動作がスキップされた場合、前記第3符号化テーブルを用いてエントロピー符号化を行う
請求項4~7のいずれか一項に記載のメモリシステム。
【請求項10】
前記第1計算部は、前記辞書式符号化部及び前記エントロピー符号化部に対してそれぞれ別個の圧縮効率を計算し、
前記第1制御部は、前記第1計算部によって別個に計算された圧縮効率に基づいて前記辞書式符号化部及び前記エントロピー符号化部の各々の動作を制御する
請求項1~5のいずれか一項に記載のメモリシステム。
【請求項11】
前記第1計算部は、前記辞書式符号化部及び前記エントロピー符号化部に対して1つの圧縮効率を計算し、
前記第1制御部は、前記第1計算部によって計算された1つの圧縮効率に基づいて前記辞書式符号化部及び前記エントロピー符号化部の動作を一括して制御する
請求項1~5のいずれか一項に記載のメモリシステム。
【請求項12】
前記第1計算部は、前記第1辞書式符号化部と前記第2辞書式符号化部に対してそれぞれ別個の圧縮効率を計算し、
前記第1制御部は、前記第1計算部によって別個に計算された圧縮効率に基づいて前記第1辞書式符号化部及び前記第2辞書式符号化部の各々の動作を制御する
請求項6記載のメモリシステム。
【請求項13】
前記第1計算部は、前記第3辞書式符号化部と前記第4辞書式符号化部に対してそれぞれ別個の圧縮効率を計算し、
前記第1制御部は、前記第1計算部によって別個に計算された圧縮効率に基づいて前記第3辞書式符号化部及び前記第4辞書式符号化部の各々の動作を制御する
請求項7記載のメモリシステム。
【請求項14】
前記第1計算部は、前記第1及び第2符号化テーブルの各々を用いてエントロピー符号化を行う場合の前記エントロピー符号化部の圧縮効率を別個に計算し、
前記第1制御部は、前記第1計算部によって別個に計算された圧縮効率に基づいて前記第1生成部、前記第2生成部及び前記符号化部の各々の動作を制御する
請求項8記載のメモリシステム。
【請求項15】
前記第1計算部は、前記第1及び第3符号化テーブルの各々を用いてエントロピー符号化を行う場合の前記エントロピー符号化部の圧縮効率を別個に計算し、
前記第1制御部は、前記第1計算部によって別個に計算された圧縮効率に基づいて前記第1生成部、前記第2生成部及び前記符号化部の各々の動作を制御する
請求項9記載のメモリシステム。
【請求項16】
前記辞書式符号化部によって行われる辞書式符号化は前記辞書式符号化部に入力されたデータを前記データよりも過去のデータの相対参照に変換する符号化手法であり、前記辞書式符号化の結果は前記相対参照としてのマッチ長を含み、
前記第1計算部は、前記マッチ長に基づいて前記辞書式符号化部の圧縮効率を計算する
請求項1~15のいずれか一項に記載のメモリシステム。
【請求項17】
前記辞書式符号化部によって行われる辞書式符号化は前記辞書式符号化部に入力されたデータを前記データよりも過去のデータの相対参照に変換する符号化手法であり、前記辞書式符号化の結果は前記相対参照としてのマッチ長を含み、
前記第1計算部は、前記マッチ長に基づく圧縮性能及び消費電力に基づいて前記辞書式符号化部の圧縮効率を計算する
請求項1~15のいずれか一項に記載のメモリシステム。
【請求項18】
前記エントロピー符号化部によって行われるエントロピー符号化は前記エントロピー符号化部に入力されたデータを、前記データの出現頻度に応じた符号長の符号に変換する符号化手法であり、
前記第1計算部は、前記符号長に基づいて前記エントロピー符号化部の圧縮効率を計算する
請求項1~15のいずれか一項に記載のメモリシステム。
【請求項19】
前記エントロピー符号化部によって行われるエントロピー符号化は前記エントロピー符号化部に入力されたデータを、前記データの出現頻度に応じた符号長の符号に変換する符号化手法であり、
前記第1計算部は、前記符号長に基づく圧縮性能及び消費電力に基づいて前記エントロピー符号化部の圧縮効率を計算する
請求項1~15のいずれか一項に記載のメモリシステム。
【請求項20】
前記第1計算部は、前記分類結果に基づく圧縮性能または前記圧縮性能と相関する指標に基づいて前記圧縮効率を計算する請求項5記載のメモリシステム。
【請求項21】
前記第1計算部は、前記分類結果に基づく消費電力または前記消費電力と相関する指標に基づいて前記圧縮効率を計算する請求項5記載のメモリシステム。
【請求項22】
前記第1計算部は、前記圧縮器の少なくとも一部の消費電力に基づいて前記圧縮効率を計算する請求項1~21のいずれか一項に記載のメモリシステム。
【請求項23】
前記不揮発性メモリに書き込まれた第3データに基づく第2データを伸張した第1データを出力する伸張器を更に具備し、
前記第1計算部は、前記伸張器の少なくとも一部の消費電力に基づいて前記圧縮効率を計算する請求項1~21のいずれか一項に記載のメモリシステム。
【請求項24】
前記第1計算部は、前記不揮発性メモリの少なくとも一部の消費電力に基づいて前記圧縮効率を計算する請求項1~21のいずれか一項に記載のメモリシステム。
【請求項25】
前記第1計算部は、前記メモリシステム全体の消費電力に基づいて前記圧縮効率を計算する請求項1~21のいずれか一項に記載のメモリシステム。
【請求項26】
前記圧縮器の動作モードの切り替えを検知する検知部と、
前記検知結果に基づいて前記圧縮器の動作モードを切り替える第2制御部と
を更に具備する請求項1~25のいずれか一項に記載のメモリシステム。
【請求項27】
前記検知部は、前記圧縮効率に基づいて前記圧縮器の動作モードの切り替えを検知する請求項26記載のメモリシステム。
【請求項28】
前記第1計算部は、前記検知結果に基づいて前記圧縮効率を計算する請求項26記載のメモリシステム。
【請求項29】
前記メモリシステムと接続されるホストから発行された書き込みコマンドにおいて指定されている書き込みデータが格納される第4バッファと、
前記書き込みコマンドが格納される内部コマンドキューと
を更に具備し、
前記検知部は、前記第4バッファの空き容量、前記内部コマンドキューに格納されている書き込みコマンドの数、前記ホストに含まれる外部コマンドキューに格納されている書き込みコマンドの数及び前記メモリシステム内で実行されるガベージコレクションに起因する書き込みコマンドの数のうちの少なくとも1つを監視する監視部を更に含み、前記監視結果に基づいて前記圧縮器の動作モードの切り替えを検知する
請求項26~28のいずれか一項に記載のメモリシステム。
【請求項30】
前記辞書式符号化部によって行われる辞書式符号化は前記辞書式符号化部に入力されたデータを前記データよりも過去のデータの相対参照に変換する符号化手法であり、前記辞書式符号化部は、前記過去のデータを格納する第5バッファを含み、
前記第2制御部は、前記検知結果に基づいて、前記辞書式符号化のための前記第5バッファに対する検索回数を制御する
請求項26~28のいずれか一項に記載のメモリシステム。
【請求項31】
前記エントロピー符号化部によって行われるエントロピー符号化は前記エントロピー符号化部に入力されたシンボルを前記シンボルの出現頻度に応じた符号長の符号に変換する符号化手法であり、前記エントロピー符号化部は、前記シンボル毎の出現頻度を格納する第1頻度テーブルを生成する第1生成部を含み、
前記第2制御部は、前記検知結果に基づいて、前記シンボルに符号を割り当てるために前記第1頻度テーブルに格納されている出現頻度に基づいて前記シンボルをソートする回数を制御する
請求項26~28のいずれか一項に記載のメモリシステム。
【請求項32】
前記メモリシステムと接続されるホストから発行された書き込みコマンドにおいて指定されている書き込みデータが格納される第4バッファを更に具備し、
前記辞書式符号化部によって行われる辞書式符号化は前記辞書式符号化部に入力されたデータを前記データよりも過去のデータの相対参照に変換する符号化手法であり、前記辞書式符号化部は、前記過去のデータを格納する第5バッファを含み、
前記検知部は、前記第4バッファの空き容量を監視する監視部を更に含み、前記監視結果に基づいて前記圧縮器の動作モードを決定し、
前記第2制御部は、前記決定された動作モードに基づいて、前記辞書式符号化のための前記第5バッファに対する検索回数を制御する
請求項26~28のいずれか一項に記載のメモリシステム。
【請求項33】
前記メモリシステムと接続されるホストから発行された書き込みコマンドが格納される内部コマンドキューを更に具備し、
前記辞書式符号化部によって行われる辞書式符号化は前記辞書式符号化部に入力されたデータを前記データよりも過去のデータの相対参照に変換する符号化手法であり、前記辞書式符号化部は、前記過去のデータを格納する第5バッファを含み、
前記検知部は、前記内部コマンドキューに格納されている書き込みコマンドの数を監視する監視部を更に含み、前記監視結果に基づいて前記圧縮器の動作モードを決定し、
前記第2制御部は、前記決定された動作モードに基づいて、前記辞書式符号化のための前記第5バッファに対する検索回数を制御する
請求項26~28のいずれか一項に記載のメモリシステム。
【請求項34】
前記辞書式符号化部によって行われる辞書式符号化は前記辞書式符号化部に入力されたデータを前記データよりも過去のデータの相対参照に変換する符号化手法であり、前記辞書式符号化部は、前記過去のデータを格納する第5バッファを含み、
前記検知部は、前記メモリシステムと接続されるホストに含まれる外部コマンドキューに格納されている書き込みコマンドの数を監視する監視部を含み、前記監視結果に基づいて前記圧縮器の動作モードを決定し、
前記第2制御部は、前記決定された動作モードに基づいて、前記辞書式符号化のための前記第5バッファに対する検索回数を制御する
請求項26~28のいずれか一項に記載のメモリシステム。
【請求項35】
前記メモリシステムと接続されるホストから発行された書き込みコマンドにおいて指定されている書き込みデータが格納される第4バッファと、
前記書き込みコマンドが格納される内部コマンドキューと
を更に具備し、
前記辞書式符号化部によって行われる辞書式符号化は前記辞書式符号化部に入力されたデータを前記データよりも過去のデータの相対参照に変換する符号化手法であり、前記辞書式符号化部は、前記過去のデータを格納する第5バッファを含み、
前記検知部は、前記第4バッファの空き容量を監視する第1監視部と、前記内部コマンドキューに格納されている書き込みコマンドの数を監視する第2監視部と、前記ホストに含まれる外部コマンドキューに格納されている書き込みコマンドの数を監視する第3監視部とを更に含み、前記第1~第3監視部の各々による監視結果に基づいて前記圧縮器の動作モードを決定し、
前記第2制御部は、前記決定された動作モードに基づいて、前記辞書式符号化のための前記第5バッファに対する検索回数を制御する
請求項26~28のいずれか一項に記載のメモリシステム。
【請求項36】
前記辞書式符号化部によって行われる辞書式符号化は前記辞書式符号化部に入力されたデータを前記データよりも過去のデータの相対参照に変換する符号化手法であり、前記辞書式符号化部は、前記過去のデータを格納する第5バッファを含み、
前記検知部は、前記メモリシステムと接続されるホストから発行された書き込みコマンドに設けられたフィールドに設定された検索回数に従って前記圧縮器の動作モードを決定し、
前記第2制御部は、前記決定された動作モードに基づいて、前記辞書式符号化のための前記第5バッファに対する検索回数を制御する
請求項26~28のいずれか一項に記載のメモリシステム。
【請求項37】
前記辞書式符号化部によって行われる辞書式符号化は前記辞書式符号化部に入力されたデータを前記データよりも過去のデータの相対参照に変換する符号化手法であり、前記辞書式符号化部は、前記過去のデータを格納する第5バッファを含み、
前記検知部は、前記メモリシステム内で実行されるガベージコレクションに起因する書き込みコマンドの数を監視する監視部を更に含み、前記監視結果に基づいて前記圧縮器の動作モードを決定し、
前記第2制御部は、前記決定された動作モードに基づいて、前記辞書式符号化のための前記第5バッファに対する検索回数を制御する
請求項26~28のいずれか一項に記載のメモリシステム。
【請求項38】
前記メモリシステムと接続されるホストから発行された書き込みコマンドにおいて指定されている書き込みデータが格納される第4バッファを更に具備し、
前記エントロピー符号化部によって行われるエントロピー符号化は前記エントロピー符号化部に入力されたシンボルを前記シンボルの出現頻度に応じた符号長の符号に変換する符号化手法であり、前記エントロピー符号化部は、前記シンボル毎の出現頻度を格納する第1頻度テーブルを生成する第1生成部を含み、
前記検知部は、前記第4バッファの空き容量を監視する監視部を更に含み、前記監視結果に基づいて前記圧縮器の動作モードを決定し、
前記第2制御部は、前記決定された動作モードに基づいて、前記シンボルに符号を割り当てるために前記第1頻度テーブルに格納されている出現頻度に基づいて前記シンボルをソートする回数を制御する
請求項26~28のいずれか一項に記載のメモリシステム。
【請求項39】
前記メモリシステムと接続されるホストから発行される書き込みコマンドが格納される内部コマンドキューを更に具備し、
前記エントロピー符号化部によって行われるエントロピー符号化は前記エントロピー符号化部に入力されたシンボルを前記シンボルの出現頻度に応じた符号長の符号に変換する符号化手法であり、前記エントロピー符号化部は、前記シンボル毎の出現頻度を格納する第1頻度テーブルを生成する第1生成部を含み、
前記検知部は、前記内部コマンドキューに格納されている書き込みコマンドの数を監視する監視部を更に含み、前記監視結果に基づいて前記圧縮器の動作モードを決定し、
前記第2制御部は、前記決定された動作モードに基づいて、前記シンボルに符号を割り当てるために前記第1頻度テーブルに格納されている出現頻度に基づいて前記シンボルをソートする回数を制御する
請求項26~28のいずれか一項に記載のメモリシステム。
【請求項40】
前記エントロピー符号化部によって行われるエントロピー符号化は前記エントロピー符号化部に入力されたシンボルを前記シンボルの出現頻度に応じた符号長の符号に変換する符号化手法であり、前記エントロピー符号化部は、前記シンボル毎の出現頻度を格納する第1頻度テーブルを生成する第1生成部を含み、
前記検知部は、前記メモリシステムと接続されるホストに含まれる外部コマンドキューに格納されている書き込みコマンドの数を監視する監視部を含み、前記監視結果に基づいて前記圧縮器の動作モードを決定し、
前記第2制御部は、前記決定された動作モードに基づいて、前記シンボルに符号を割り当てるために前記第1頻度テーブルに格納されている出現頻度に基づいて前記シンボルをソートする回数を制御する
請求項26~28のいずれか一項に記載のメモリシステム。
【請求項41】
前記メモリシステムと接続されるホストから発行された書き込みコマンドにおいて指定されている書き込みデータが格納される第4バッファと、
前記書き込みコマンドが格納される内部コマンドキューと
を更に具備し、
前記エントロピー符号化部によって行われるエントロピー符号化は前記エントロピー符号化部に入力されたシンボルを前記シンボルの出現頻度に応じた符号長の符号に変換する符号化手法であり、前記エントロピー符号化部は、前記シンボル毎の出現頻度を格納する第1頻度テーブルを生成する第1生成部を含み、
前記検知部は、前記第4バッファの空き容量を監視する第1監視部と、前記内部コマンドキューに格納されている書き込みコマンドの数を監視する第2監視部と、前記ホストに含まれる外部コマンドキューに格納されている書き込みコマンドの数を監視する第3監視部とを更に含み、前記第1~第3監視部の各々による監視結果に基づいて前記圧縮器の動作モードを決定し、
前記第2制御部は、前記決定された動作モードに基づいて、前記シンボルに符号を割り当てるために前記第1頻度テーブルに格納されている出現頻度に基づいて前記シンボルをソートする回数を制御する
請求項26~28のいずれか一項に記載のメモリシステム。
【請求項42】
前記エントロピー符号化部によって行われるエントロピー符号化は前記エントロピー符号化部に入力されたシンボルを前記シンボルの出現頻度に応じた符号長の符号に変換する符号化手法であり、前記エントロピー符号化部は、前記シンボル毎の出現頻度を格納する第1頻度テーブルを生成する第1生成部を含み、
前記検知部は、前記メモリシステムと接続されるホストから発行された書き込みコマンドに設けられたフィールドに設定されたソート回数に従って前記圧縮器の動作モードを決定し、
前記第2制御部は、前記決定された動作モードに基づいて、前記シンボルに符号を割り当てるために前記第1頻度テーブルに格納されている出現頻度に基づいて前記前記シンボルをソートする回数を制御する
請求項26~28のいずれか一項に記載のメモリシステム。
【請求項43】
前記エントロピー符号化部によって行われるエントロピー符号化は前記エントロピー符号化部に入力されたシンボルを前記シンボルの出現頻度に応じた符号長の符号に変換する符号化手法であり、前記エントロピー符号化部は、前記シンボル毎の出現頻度を格納する第1頻度テーブルを生成する第1生成部を含み、
前記検知部は、前記メモリシステム内で実行されるガベージコレクションに起因する書き込みコマンドの数を監視する監視部を更に含み、前記監視結果に基づいて前記圧縮器の動作モードを決定し、
前記第2制御部は、前記決定された動作モードに基づいて、前記シンボルに符号を割り当てるために前記第1頻度テーブルに格納されている出現頻度に基づいて前記シンボルをソートする回数を制御する
請求項26~28のいずれか一項に記載のメモリシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、メモリシステムに関する。
【背景技術】
【0002】
近年では、ホストから発行される書き込みコマンドにおいて指定されている書き込みデータを圧縮した上で不揮発性メモリ(NAND型フラッシュメモリ等)に書き込むことが可能なメモリシステムが知られている。
【0003】
このようなメモリシステムにおいては、不揮発性メモリの記憶領域を有効に活用することができるとともに、例えばガベージコレクション(GC)に起因する当該不揮発性メモリへの書き込み量を低下させることができるため、ライトアンプリフィケーションを減少させることができるという効果を得ることが可能である。
【0004】
一方、上記した書き込みデータの圧縮処理等により、消費電力が増加することが懸念される。メモリシステムの運用コストの最適化を実現するためには、書き込みデータを圧縮することによって増加する消費電力のコストを、当該書き込みデータを圧縮することによって得られる効率(ゲイン)が上回っていることが望ましい。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】米国特許出願公開第2014/0244604号明細書
【発明の概要】
【発明が解決しようとする課題】
【0006】
そこで、本発明が解決しようとする課題は、消費電力を抑制し、効率的にデータを圧縮することが可能なメモリシステムを提供することにある。
【課題を解決するための手段】
【0007】
実施形態によれば、入力された第1データを圧縮した第2データを出力する圧縮器と、前記圧縮器から出力された第2データに基づく第3データが書き込まれる不揮発性メモリとを具備するメモリシステムが提供される。前記圧縮器は、辞書式符号化部と、エントロピー符号化部と、第1計算部と、第1制御部とを含む。前記辞書式符号化部は、前記第1データに対して辞書式符号化を行い、前記辞書式符号化の結果を出力する。前記エントロピー符号化部は、前記辞書式符号化の結果に対してエントロピー符号化を行い、前記エントロピー符号化の結果を前記第2データとして出力する。前記第1計算部は、前記辞書式符号化及び前記エントロピー符号化の圧縮効率を計算する。前記第1制御部は、前記計算された圧縮効率と、前記圧縮器に入力される電力削減レベルとに基づいて、前記圧縮器に入力された第4データに対する前記辞書式符号化部及び前記エントロピー符号化部のうちの少なくとも一方の動作を制御する第1制御部とを含む。
【図面の簡単な説明】
【0008】
図1】第1実施形態に係るメモリシステムのハードウェア構成の一例を概略的に示すブロック図。
図2】第1実施形態における圧縮器の構成の一例を示す図。
図3】第1実施形態における圧縮効率監視部の構成の一例を示す図。
図4】第1実施形態におけるゲーティング制御部の構成の一例を示す図。
図5】第1実施形態における辞書式符号化部に対するゲーティング処理の処理手順の一例を示すフローチャート。
図6】第1実施形態における第1圧縮性能テーブルの一例を示す図。
図7】第1実施形態における第1消費電力テーブルの一例を示す図。
図8】第1実施形態における第1閾値テーブルの一例を示す図。
図9】第1実施形態におけるエントロピー符号化部に対するゲーティング処理の処理手順の一例を示す図。
図10】第1実施形態における第2圧縮性能テーブルの一例を示す図。
図11】第1実施形態における第2消費電力テーブルの一例を示す図。
図12】第1実施形態における第2閾値テーブルの一例を示す図。
図13】第2実施形態における圧縮器の構成の一例を示す図。
図14】第2実施形態におけるパターン分類部の構成の一例を示す図。
図15】第2実施形態における分類テーブルの一例を示す図。
図16】第2実施形態における圧縮効率監視部の構成の一例を示す図。
図17】第2実施形態における第1加算値テーブルの一例を示す図。
図18】第2実施形態における第2加算値テーブルの一例を示す図。
図19】第2実施形態における第3加算値テーブルの一例を示す図。
図20】第2実施形態における第4加算値テーブルの一例を示す図。
図21】第2実施形態における圧縮器の処理手順の一例を示すシーケンスチャート。
図22】第3実施形態における辞書式符号化部の構成の一例を示す図。
図23】第3実施形態における圧縮効率監視部の構成の一例を示す図。
図24】第3実施形態におけるゲーティング制御部の構成の一例を示す図。
図25】第3実施形態におけるゲーティング制御テーブルの一例を示す図。
図26】第4実施形態におけるエントロピー符号化部の構成の一例を示す図。
図27】第4実施形態における圧縮効率監視部の構成の一例を示す図。
図28】第5実施形態における圧縮効率監視部の構成の一例を示す図。
図29】第6実施形態における圧縮器の構成の一例を示す図。
図30】第6実施形態における辞書式符号化部の動作について説明するための図。
図31】第6実施形態におけるエントロピー符号化部の動作について説明するための図。
図32】第6実施形態における動作モードに応じた頻度テーブルのソート回数の一例を示す図。
図33】第6実施形態におけるモード切替検知部の構成の一例を示す図。
図34】第6実施形態における圧縮効率監視部の構成の一例を示す図。
図35】第6実施形態における第3消費電力テーブルの一例を示す図。
図36】第6実施形態における第4消費電力テーブルの一例を示す図。
図37】第7実施形態における第1構成について説明するための図。
図38】第7実施形態における第1動作モードテーブルの一例を示す図。
図39】第7実施形態における第1動作モードテーブルの他の例を示す図。
図40】第7実施形態における第2構成について説明するための図。
図41】第7実施形態における第2動作モードテーブルの一例を示す図。
図42】第7実施形態における第2動作モードテーブルの他の例を示す図。
図43】第7実施形態における第3構成について説明するための図。
図44】第7実施形態における第3動作モードテーブルの一例を示す図。
図45】第7実施形態における第3動作モードテーブルの他の例を示す図。
図46】第7実施形態における第1~第3構成を組み合わせた構成について説明するための図。
図47】第7実施形態における第1~第3構成を組み合わせた構成において用いられる動作モードテーブルの一例を示す図。
図48】第7実施形態における第1~第3構成を組み合わせた構成において用いられる動作モードテーブルの他の例を示す図。
図49】第7実施形態における第4構成について説明するための図。
図50】第7実施形態における第5構成について説明するための図。
【発明を実施するための形態】
【0009】
以下、図面を参照して、各実施形態について説明する。
(第1実施形態)
まず、第1実施形態について説明する。図1は、第1実施形態に係るメモリシステムのハードウェア構成の一例を概略的に示すブロック図である。
【0010】
図1に示すメモリシステム1は、不揮発性メモリにデータを書き込み、当該不揮発性メモリからデータを読み出すように構成された半導体ストレージデバイスである。このメモリシステム1は、例えばソリッドステートドライブ(SSD:Solid State Drive)として実現されることができる。
【0011】
メモリシステム1は、例えばPCI Expressバスのようなシステムバスを介してホスト100に接続可能に構成されている。図1に示すように、メモリシステム1は、コントローラ2、NAND型フラッシュメモリ3及びDRAM(Dynamic Random Access Memory)4を備える。
【0012】
コントローラ2は、メモリシステム1の動作を司る機能を有する。コントローラ2は、ホストインタフェース(I/F)2a、CPU2b、NANDインタフェース(I/F)2c及びDRAMインタフェース(I/F)2d等を含む。なお、ホストインタフェース2a、CPU2b、NANDインタフェース2c及びDRAMインタフェース2dは、例えばバスを介して互いに接続されている。
【0013】
ホストインタフェース2aは、メモリシステム1の外部に配置されるホスト100との通信を実行するように構成されたホストインタフェース回路である。このホストインタフェース2aは、例えばPCI Expressコントローラ等であってもよい。ホストインタフェース2aは、ホスト100から様々なコマンド(要求)を受信する。
【0014】
CPU2bは、ホストインタフェース2a、NANDインタフェース2c及びDRAMインタフェース2dを制御するように構成されたプロセッサである。CPU2bは、メモリシステム1の電源オンに応答してNAND型フラッシュメモリ3または図示しないROM(Read Only Memory)から制御プログラム(ファームウェア)をDRAM4にロードし、当該制御プログラムを実行することによって様々な処理を行う。具体的には、CPU2bは、ホスト100から発行される様々なコマンドに対する処理を実行する。なお、ホスト100から発行されるコマンドに対する処理の一部または全部は、コントローラ2内の専用ハードウェアによって実行されてもよい。
【0015】
NANDインタフェース2cは、CPU2bの制御の下、NAND型フラッシュメモリ3を制御するように構成されたメモリ制御回路である。
【0016】
更に、コントローラ2は、圧縮器(圧縮装置)2e及び伸張器(伸張装置)2fを備える。
【0017】
圧縮器2eは、例えばホスト100から書き込みコマンドが発行された場合に、当該書き込みコマンドにおいて指定されているデータ(書き込みデータ)を入力し、当該データを圧縮するために用いられる。なお、圧縮器2eは、例えば辞書式符号化とエントロピー符号化とを組み合わせた圧縮方式でデータを圧縮する。圧縮器2eにおいて圧縮されたデータ(以下、圧縮データと表記)は、圧縮器2eから出力された後、誤り訂正処理やランダマイズ処理等の所定の処理が実行される。CPU2bは、圧縮データに対して当該所定の処理が実行されたデータをNANDインタフェース2c経由でNAND型フラッシュメモリ3に書き込む。すなわち、CPU2bは、圧縮器2eから出力された圧縮データに基づくデータをNAND型フラッシュメモリ3に書き込む。
【0018】
CPU2bは、例えばホスト100からホストインタフェース2a経由で受信した読み出しコマンドに基づいてNAND型フラッシュメモリ3から圧縮データを読み出す際に、当該読み出しコマンドに基づくデータをNANDインタフェース2c経由でNAND型フラッシュメモリ3から読み出す。読み出されたデータは、当該データに対する誤り訂正処理、ランダマイズの解除処理等の所定の処理が実行された後、圧縮データとしてCPU2bにより伸張器2fへ入力され、伸張器2fは入力された圧縮データを伸張する。すなわち、伸張器2fは、NAND型フラッシュメモリ3から読み出されたデータに基づく圧縮データを伸張する。
【0019】
NAND型フラッシュメモリ3は、不揮発性メモリであり、マトリクス状に配置された複数のメモリセルを含むメモリセルアレイを有する。NAND型フラッシュメモリ3は、2次元構造のNAND型フラッシュメモリであってもよいし、3次元構造のNAND型フラッシュメモリであってもよい。
【0020】
NAND型フラッシュメモリ3のメモリセルアレイは、複数のブロックBLK0~BLKm-1を含む。ブロックBLK0~BLKm-1の各々は多数のページ(ここでは、ページP0~Pn-1)によって編成される。ブロックBLK0~BLKm-1は、消去単位として機能する。ページP0~Pn-1の各々は、同一ワード線に接続された複数のメモリセルを含む。ページP0~Pn-1は、データ書き込み動作及びデータ読み出し動作の単位である。
【0021】
ここでは、メモリシステム1がNAND型フラッシュメモリ3を備えるものとして説明したが、当該メモリシステム1は、不揮発性メモリとして例えばPCM(Phase Change Memory)またはMRAM(Magnetoresistive Random Access Memory)等を備える構成であってもよい。
【0022】
DRAM4は、揮発性メモリであり、例えばコントローラ2(CPU2b)において実行されるソフトウェアの一時的なバッファまたはNAND型フラッシュメモリ3に対する一時的なバッファ等として機能する。
【0023】
ここでは、メモリシステム1がDRAM4を備えるものとして説明したが、当該メモリシステム1は、揮発性メモリとして例えばSRAM(Static Random Access Memory)等を備える構成であってもよい。
【0024】
なお、図1においては圧縮器2e及び伸張器2fがコントローラ2に組み込まれているものとして説明したが、当該圧縮器2e及び伸張器2fは、コントローラ2の外部に設けられていてもよい。
【0025】
更に、本実施形態においては圧縮器2e及び伸張器2fがハードウェアによって実現されるものとして説明するが、当該圧縮器2e及び伸張器2fの一部または全ては、ソフトウェアによって実現されてもよいし、ソフトウェア及びハードウェアの組み合わせによって実現されてもよい。
【0026】
以下、図2を参照して、図1に示す圧縮器2eの構成の一例について説明する。図2に示すように、圧縮器2eは、辞書式符号化部11、エントロピー符号化部12、圧縮効率監視部13及びゲーティング制御部14を含む。
【0027】
なお、圧縮器2eにはホスト100から発行された書き込みコマンドにおいて指定されている書き込みコマンドにおいて指定されている書き込みデータが入力されるが、以下の説明においては、当該書き込みデータを便宜的に非圧縮データと称する。
【0028】
辞書式符号化部11は、圧縮器2eに入力された非圧縮データを入力し、当該非圧縮データに対して辞書式符号化を行う。なお、辞書式符号化とは、非圧縮データ(バイト列)を、当該非圧縮データよりも過去のデータ(バイト列)の相対参照に変換する符号化手法である。
【0029】
辞書式符号化部11は過去のデータを格納しておくバッファ(以下、ヒストリバッファと表記)を含み、辞書式符号化においては、非圧縮データと一致する過去のデータが当該ヒストリバッファ(辞書バッファ)から検索された場合には、辞書式符号化の結果として当該過去のデータが格納されているヒストリバッファ内の位置(つまり、参照開始位置までの距離)及び当該書き込みデータと一致する過去のデータとの一致する長さ(以下、マッチ長と表記)の組が辞書式符号化部11から出力される。一方、非圧縮データと一致する過去のデータがヒストリバッファから検索されない場合には、辞書式符号化の結果として当該非圧縮データが辞書式符号化部11から出力される。
【0030】
なお、本実施形態における辞書式符号化においては例えばLZ77と称されるアルゴリズムを適用可能であるが、当該LZ77が適用される場合、上記したように過去のデータがヒストリバッファから検索されない場合に辞書式符号化の結果として辞書式符号化部11から出力される非圧縮データはリテラルと称される。なお、辞書式符号化において適用されるアルゴリズムはLZ77に限られない。
【0031】
また、本実施形態において、辞書式符号化部11のスループットは、16Byte/cycleである。サイクルとは辞書式符号化部11の処理(動作)単位に相当し、16Byte/cycleの場合、辞書式符号化部11は、非圧縮データをサイクル毎に16Byteずつ入力し、当該サイクル毎に辞書式符号化の結果を出力するように動作する。
【0032】
なお、上記したヒストリバッファのサイズは例えば4KiBであるが、当該ヒストリバッファのサイズは4KiB以外であってもよい。また、上記した非圧縮データが文字列であり、1つの文字が1Byteで表されるものとすると、本実施形態において辞書式符号化の結果として出力されるマッチ長は、例えば最小値が4、最大値が16等となる。
【0033】
エントロピー符号化部12は、辞書式符号化部11から出力された辞書式符号化の結果に対してエントロピー符号化を行う。なお、辞書式符号化の結果には距離、マッチ長及び非圧縮データが含まれ、これらをシンボルと称するものとすると、エントロピー符号化とは、当該シンボル(データ)を、当該シンボルの出現頻度に応じた符号長の符号に変換する符号化手法である。換言すれば、エントロピー符号化によれば、データの出現頻度の違いを利用して異なる符号長の符号を当該データに割り当てることで全体として符号量を削減する符号化手法である。
【0034】
上記したように辞書式符号化部11からは距離、マッチ長及び非圧縮データ等のシンボルが出力されるが、エントロピー符号化部12は、当該シンボルに対するエントロピー符号化の結果として、当該シンボルから変換された符号(当該シンボルに割り当てられた符号)を出力する。
【0035】
なお、本実施形態におけるエントロピー符号化においては、例えばハフマン符号と称されるアルゴリズムを適用可能である。ハフマン符号によれば、辞書式符号化の結果として辞書式符号化部11から出力されたシンボル(距離、マッチ長及び非圧縮データ)を可変長符号化することができる。なお、ハフマン符号化は、予め構築された符号化テーブル(符号木)を用いて符号化を行う静的ハフマン符号化であってもよいし、入力されるシンボル(データ)により符号化テーブル(符号木)を変更する動的ハフマン符号化であってもよい。なお、エントロピー符号化において適用されるアルゴリズムはハフマン符号に限られない
また、本実施形態において、エントロピー符号化部12のスループットは、非圧縮データ換算で16Byte/cycleである。すなわち、エントロピー符号化部12は、サイクル毎に16Byteの非圧縮データに対する辞書式符号化の結果(16Byte非圧縮データ相当の辞書式符号化結果)を入力し、当該サイクル毎にエントロピー符号化の結果(シンボルに割り当てられた符号)を出力するように動作する。
【0036】
なお、エントロピー符号化の結果は圧縮データとして圧縮器2eから出力され、上記したように所定の処理が実行された後に、NAND型フラッシュメモリ3(メモリセルアレイ)に書き込まれる。
【0037】
ここで、圧縮効率監視部13は、上記したようにサイクル毎に辞書式符号化部11及びエントロピー符号化部12から出力される辞書式符号化の結果及びエントロピー符号化の結果を取得(収集)する。圧縮効率監視部13は、取得された辞書式符号化の結果及びエントロピー符号化の結果に基づいて辞書式符号化部11及びエントロピー符号化部12による符号化を監視し、当該辞書式符号化部11(つまり、辞書式符号化)及びエントロピー符号化部12(つまり、エントロピー符号化)の圧縮効率を計算する(見積もる)。なお、圧縮効率監視部13によって計算される圧縮効率とは、電力当たりの圧縮性能に相当する。
【0038】
ゲーティング制御部14は、例えば圧縮器2e(メモリシステム1)の外部において指定される電力削減レベルを入力し、圧縮効率監視部13によって計算された圧縮効率と当該電力削減レベルとに基づいて辞書式符号化部11による辞書式符号化(辞書式符号化処理)及びエントロピー符号化部12によるエントロピー符号化(つまり、エントロピー符号化処理)のクロックゲーティングを制御する。
【0039】
なお、辞書式符号化部11及びエントロピー符号化部12が上記したサイクルに応じたクロック信号に応じて動作するものとすると、例えば辞書式符号化部11がクロックゲーティングされた場合、当該辞書式符号化部11に対するクロック信号が停止され、当該辞書式符号化部11の動作(辞書式符号化処理)はスキップされる。同様に、例えばエントロピー符号化部12がクロックゲーティングされた場合、当該エントロピー符号化部12に対するクロック信号が停止され、当該エントロピー符号化部12の動作(エントロピー符号化処理)はスキップされる。このようにゲーティング制御部14によれば、辞書式符号化部11及びエントロピー符号化部12のうちの少なくとも一方の動作が制御(クロックゲーティング制御)される。
【0040】
また、図2に示すように辞書式符号化部11の前段には非圧縮データを選択的に辞書式符号化部11に渡すための回路111が設けられており、当該辞書式符号化部11の後段にはマルチプレクサに相当する回路112が設けられており、上記した辞書式符号化部11に対するクロックゲーティングは、当該辞書式符号化部11、回路111及び112に対してゲーティング制御部14から制御信号が出力されることによって実現される。
【0041】
同様に、エントロピー符号化部12の前段には辞書式符号化の結果を選択的にエントロピー符号化部12に渡すための回路121が設けられており、当該エントロピー符号化部12の後段にはマルチプレクサに相当する回路122が設けられており、上記したエントロピー符号化部12に対するクロックゲーティングは、当該エントロピー符号化部12、回路121及び122に対してゲーティング制御部14から制御信号が出力されることによって実現される。
【0042】
なお、ゲーティング制御部14によって辞書式符号化部11がクロックゲーティングされ、エントロピー符号化部12がクロックゲーティングされない場合、当該辞書式符号化部11の動作がスキップされる(非圧縮データが辞書式符号化をスルーする)ため、エントロピー符号化部12は非圧縮データ(辞書式符号化なしのSyntaxのデータ)に対するエントロピー符号化を行い、当該エントロピー符号化の結果が圧縮器2eから出力する。
【0043】
一方、ゲーティング制御部14によって辞書式符号化部11がクロックゲーティングされず、エントロピー符号化部12がクロックゲーティングされた場合、エントロピー符号化部12の動作がスキップされる(辞書式符号化の結果がエントロピー符号化をスルーする)ため、当該辞書式符号化の結果(エントロピー符号化なしのSyntaxのデータ)が圧縮器2eから出力される。
【0044】
また、ゲーティング制御部14によって辞書式符号化部11及びエントロピー符号化部12の両方がクロックゲーティングされた場合には、辞書式符号化及びエントロピー符号化の両方をスルーした非圧縮データが圧縮器2eから出力される。
【0045】
上記したゲーティング制御部14によるクロックゲーティングに応じて圧縮器2eから出力された圧縮データ(非圧縮データ、辞書式符号化の結果またはエントロピー符号化の結果)は、上記したように所定の処理が実行された後にNAND型フラッシュメモリ3に書き込まれる。
【0046】
ここでは詳しい説明を省略するが、NAND型フラッシュメモリ3に書き込まれたデータは、ホスト100から発行された読み出しコマンドに基づいて読み出され、伸張器2fで伸張された後にホストに返される。
【0047】
次に、図3を参照して、図2に示す圧縮効率監視部13の構成の一例について説明する。本実施形態において、圧縮効率監視部13は、辞書式符号化部11及びエントロピー符号化部12の圧縮効率をそれぞれ計算するように構成されている。図3に示すように、圧縮効率監視部13は、平均マッチ長計算部13a、第1圧縮性能見積もり部13b、第1消費電力見積もり部13c、第1圧縮効率計算部13d、平均符号長計算部13e、第2圧縮性能見積もり部13f、第2消費電力見積もり部13g及び第2圧縮効率計算部13hを含む。
【0048】
ここで、辞書式符号化部11によって辞書式符号化が行われた場合、当該辞書式符号化部11からは辞書式符号化の結果として距離及びマッチ長の組または非圧縮データがサイクル毎に出力されるが、平均マッチ長計算部13aは、当該サイクル毎に出力される辞書式符号化の結果を取得(入力)し、当該辞書式符号化の結果に基づく平均マッチ長を計算する。具体的には、平均マッチ長計算部13aは、例えば直近Nサイクル分の辞書式符号化の結果(マッチ長)の平均値を平均マッチ長として計算する。各サイクルにおいて平均マッチ長計算部13aへ入力されるマッチ長の数は入力非圧縮データ16Byteをいくつのマッチで符号化できるかにより変化する。入力非圧縮データ16Byteを一つのマッチ(マッチ長=16)で符号化できる場合にサイクル当たりのマッチ長の数が最も少なく1個である。入力非圧縮データ16Byteを全てリテラルで符号化した場合にサイクル当たりのマッチ長の数が最も多くなり16個である(リテラルはマッチ長=0として扱う)。なお、Nは、例えば32である。
【0049】
この場合、平均マッチ長LAVEは、直近の32サイクルのうちのt(0~31)サイクル前に辞書式符号化部11から出力されたマッチ長mの集合をM(t)として、以下の式(1)により計算される。
【数1】
【0050】
なお、辞書式符号化部11から辞書式符号化の結果として非圧縮データ(リテラル)が出力された場合は、マッチ長=0として扱うものとする。
【0051】
第1圧縮性能見積もり部13bは、平均マッチ長計算部13aによって計算された平均マッチ長に基づいて辞書式符号化部11の圧縮性能の見積もりを行う。
【0052】
第1消費電力見積もり部13cは、平均マッチ長計算部13aによって計算された平均マッチ長に基づいて辞書式符号化部11の消費電力の見積もりを行う。
【0053】
第1圧縮効率計算部13dは、第1圧縮性能見積もり部13bによって見積もられた圧縮性能及び第1消費電力見積もり部13cによって見積もられた消費電力に基づいて、辞書式符号化部11の圧縮効率を計算する。第1圧縮効率計算部13dによって計算された辞書式符号化部11の圧縮効率は、圧縮効率監視部13からゲーティング制御部14に出力される。
【0054】
一方、エントロピー符号化部12によってエントロピー符号化が行われた場合、当該エントロピー符号化部12からはエントロピー符号化の結果として辞書式符号化の結果(シンボル)に対して割り当てられた符号がサイクル毎に出力されるが、平均符号長計算部13eは、当該サイクル毎に出力されるエントロピー符号化の結果を取得(入力)し、当該エントロピー符号化の結果に基づく平均符号長を計算する。具体的には、平均符号長計算部13eは、例えば直近のMサイクル分のエントロピー符号化の結果(符号の符号長)の平均値を平均符号長として計算する。各サイクルにおいて平均符号長計算部13eへ入力される符号長の数は辞書式符号化部において入力非圧縮データ16Byteをいくつのマッチで符号化できるかにより変化する。入力非圧縮データ16Byteを一つのマッチ(マッチ長=16)で符号化できる場合にサイクル当たりの符号長の数が最も少なく1個である。入力非圧縮データ16Byteを全てリテラルで符号化した場合にサイクル当たりの符号長の数が最も多くなり16個である。なお、Mは、例えば16である。
【0055】
この場合、平均符号長CAVEは、直近の16サイクルのうちのt(0~15)サイクル前にエントロピー符号化部12から出力された符号の符号長cの集合をC(t)として、以下の式(2)により計算される。
【数2】
【0056】
第2圧縮性能見積もり部13fは、平均符号長計算部13eによって計算された平均符号長に基づいてエントロピー符号化部12の圧縮性能の見積もりを行う。
【0057】
第2消費電力見積もり部13gは、平均符号長計算部13eによって計算された平均符号長に基づいてエントロピー符号化部12の消費電力の見積もりを行う。
【0058】
第2圧縮効率計算部13hは、第2圧縮性能見積もり部13fによって見積もられた圧縮性能及び第2消費電力見積もり部13gによって見積もられた消費電力に基づいて、エントロピー符号化部12の圧縮効率を計算する。第2圧縮効率計算部13hによって計算されたエントロピー符号化部12の圧縮効率は、圧縮効率監視部13からゲーティング制御部14に出力される。
【0059】
次に、図4を参照して、図2に示すゲーティング制御部14の構成の一例について説明する。図4に示すように、ゲーティング制御部14は、第1ゲーティング閾値決定部14a、第2ゲーティング閾値決定部14b、第1ゲーティング判定部14c及び第2ゲーティング判定部14dを含む。
【0060】
ここで、本実施形態においてゲーティング制御部14は、外部において指定された電力削減レベルを入力するように構成されている。
【0061】
この場合、第1ゲーティング閾値決定部14aは、入力された電力削減レベルに基づいて、辞書式符号化部11をクロックゲーティングするための閾値(辞書式符号化部11のゲーティング閾値)を決定する。
【0062】
同様に、第2ゲーティング閾値決定部14bは、入力された電力削減レベルに基づいて、エントロピー符号化部12をクロックゲーティングするための閾値(エントロピー符号化部12のゲーティング閾値)を決定する。
【0063】
第1ゲーティング判定部14cは、第1ゲーティング閾値決定部14aによって決定されたゲーティング閾値及び上記したように圧縮効率監視部13から出力された辞書式符号化部11の圧縮効率に基づいて、辞書式符号化部11をクロックゲーティングする(つまり、辞書式符号化部11の動作をスキップする)か否かを判定する。
【0064】
同様に、第2ゲーティング判定部14dは、第2ゲーティング閾値決定部14bによって決定されたゲーティング閾値及び上記したように圧縮効率監視部13から出力されたエントロピー符号化部12の圧縮効率に基づいて、エントロピー符号化部12をクロックゲーティングする(つまり、エントロピー符号化部12の動作をスキップする)か否かを判定する。
【0065】
第1ゲーティング判定部14cは、当該第1ゲーティング判定部14cによる判定結果に基づいて辞書式符号化部11にクロックゲーティングに関する制御信号を送信することにより、当該辞書式符号化部11の動作を制御する。同様に、第2ゲーティング判定部14dは、当該第2ゲーティング判定部14dによる判定結果に基づいてエントロピー符号化部12にクロックゲーティングに関する制御信号を送信することにより、当該エントロピー符号化部12の動作を制御する。
【0066】
なお、上記したクロックゲーティングに関する制御信号は辞書式符号化部11の前段及び後段に設けられている回路111及び112にも送信されるが、図4においては当該回路111及び112については省略されている。エントロピー符号化部12の前段及び後段に設けられている回路121及び122についても同様である。
【0067】
以下、本実施形態における圧縮器2eの動作について説明する。ここでは、辞書式符号化部11をクロックゲーティングする際の圧縮器2eの処理(以下、辞書式符号化部11に対するゲーティング処理と表記)及びエントロピー符号化部12をクロックゲーティングする際の圧縮器2eの処理(以下、エントロピー符号化部12に対するゲーティング処理と表記)について説明する。なお、以下においては、主に圧縮器2eに含まれる圧縮効率監視部13及びゲーティング制御部14の処理について主に説明する。
【0068】
まず、図5のフローチャートを参照して、辞書式符号化部11に対するゲーティング処理の処理手順の一例について説明する。
【0069】
上記したように辞書式符号化部11において辞書式符号化が行われると、圧縮効率監視部13に含まれる平均マッチ長計算部13aは、当該辞書式符号化の結果を取得する(ステップS1)。ステップS1において取得される辞書式符号化の結果は、1サイクル分の辞書式符号化の結果であり、圧縮効率監視部13(または平均マッチ長計算部13a)内において保持される。
【0070】
次に、上記したようにNサイクル分のマッチ長から平均マッチ長を計算するものとすると、平均マッチ長計算部13aは、Nサイクル分の辞書式符号化の結果が取得されたか否かを判定する(ステップS2)。
【0071】
Nサイクル分の辞書式符号化の結果が取得されていないと判定された場合(ステップS2のNO)、ステップS1に戻って処理が繰り返される。
【0072】
一方、Nサイクル分の辞書式符号化の結果が取得されたと判定された場合(ステップS2のYES)、平均マッチ長計算部13aは、圧縮効率監視部13内に保持されているNサイクル分の辞書式符号化の結果(マッチ長)の平均値を平均マッチ長として計算する(ステップS3)。なお、平均マッチ長の計算については上記した通りであるため、ここではその詳しい説明を省略する。
【0073】
次に、第1圧縮性能見積もり部13bは、ステップS3において計算された平均マッチ長に基づいて、辞書式符号化部11の圧縮性能を見積もる(ステップS4)。
【0074】
なお、本実施形態において、辞書式符号化部11の圧縮性能は、例えば図6に示す第1圧縮性能テーブルを参照して見積もることができるものとする。図6に示すように、第1圧縮性能テーブルには、平均マッチ長の範囲に対応づけて圧縮性能の見積もり値が格納されている。本実施形態においては、平均マッチ長の取り得る値の範囲は0以上16未満であるものとする。なお、第1圧縮性能テーブルにおいては、平均マッチ長が長いほど圧縮性能が高くなる(つまり、高い見積もり値とする)ように定義されている。
【0075】
第1圧縮性能見積もり部13bは、上記した第1圧縮性能テーブルを参照して、ステップS3において計算された平均マッチ長が該当する平均マッチ長の範囲に対応づけて当該第1圧縮性能テーブルに格納されている圧縮性能の見積もり値を取得する。
【0076】
なお、上記した第1圧縮性能テーブルは、圧縮効率監視部13内において予め用意されているものとする。
【0077】
ここでは第1圧縮性能テーブルを用いて辞書式符号化部11の圧縮性能を見積もる場合について説明したが、予め定められている計算式(関数等)を用いるような他の手法により当該圧縮性能を見積もるようにしてもよい。
【0078】
また、第1消費電力見積もり部13cは、ステップS3において計算された平均マッチ長に基づいて、辞書式符号化部11の消費電力を見積もる(ステップS5)。
【0079】
なお、本実施形態において、辞書式符号化部11の消費電力は、例えば図7に示す第1消費電力テーブルを参照して見積もることができるものとする。図7に示すように、第1消費電力テーブルには、平均マッチ長の範囲に対応づけて消費電力の見積もり値が格納されている。なお、第1消費電力テーブルにおいては、平均マッチ長が短いほど消費電力が大きくなる(つまり、高い見積もり値とする)ように定義されている。
【0080】
第1消費電力見積もり部13cは、上記した第1消費電力テーブルを参照して、ステップS3において計算された平均マッチ長が該当する平均マッチ長の範囲に対応づけて当該第1消費電力テーブルに格納されている消費電力の見積もり値を取得する。
【0081】
なお、上記した第1消費電力テーブルによって示される平均マッチ長が短いほど消費電力が大きくなることは例えば知見により予め得られており、当該第1消費電力テーブルは、圧縮効率監視部13内において予め用意されているものとする。
【0082】
ここでは第1消費電力テーブルを用いて辞書式符号化部11の消費電力を見積もる場合について説明したが、予め定められている計算式(関数等)を用いるような他の手法により当該消費電力を見積もるようにしてもよい。
【0083】
図5に示す例では、便宜的に、ステップS4及びS5の順に処理が実行されるものとして説明したが、ステップS4及びS5の処理は入れ替えて実行されてもよい(つまり、ステップS5の処理がステップS4の処理よりも先に実行されてもよい)し、ステップS4及びS5の処理は並列に実行されても構わない。
【0084】
次に、第1圧縮効率計算部13dは、ステップS4の処理が実行されることによって第1圧縮性能見積もり部13bによって取得された圧縮性能の見積もり値及びステップS5の処理が実行されることによって第1消費電力見積もり部13cによって取得された消費電力の見積もり値に基づいて、辞書式符号化部11の圧縮効率を計算する(ステップS6)。ステップS6においては、例えば圧縮性能の見積もり値を消費電力の見積もり値で除算することによって計算されるものとする。なお、ステップS6において算出される辞書式符号化部11の圧縮効率は、例えば0~1の範囲内の値として計算されるものとする。
【0085】
ここで、上記した図6に示す第1圧縮性能テーブル及び図7に示す第1消費電力テーブルを用いて、ステップS6において計算される辞書式符号化部11の圧縮効率について具体的に説明する。
【0086】
まず、ステップS3において計算された平均マッチ長が2.5であるものとすると、第1圧縮性能テーブルを参照することによって、圧縮性能の見積もり値として2が取得される。同様に、第1消費電力テーブルを参照することによって、消費電力の見積もり値として90が取得される。
【0087】
この場合、ステップS6においては、辞書式符号化部11の圧縮効率として、2/90≒0.0222が計算される。
【0088】
上記したようにステップS6において計算された辞書式符号化部11の圧縮効率は、圧縮効率監視部13からゲーティング制御部14に出力される。
【0089】
ここで、上記したゲーティング制御部14に含まれる第1ゲーティング閾値決定部14aは、外部において指定された電力削減レベルに基づいて辞書式符号化部11のゲーティング閾値を決定しているものとする。なお、辞書式符号化部11のゲーティング閾値は、例えば図8に示す第1閾値テーブルを参照して決定することができるものとする。図8に示すように、第1閾値テーブルには、電力削減レベルに対応づけて圧縮効率の閾値(つまり、辞書式符号化部11のゲーティング閾値)が格納されている。
【0090】
なお、本実施形態において、電力削減レベルは例えば0~4の数値で表され(つまり、5段階のレベルで設定され)、第1閾値テーブルにおいては、電力削減レベルが高いほど圧縮効率の閾値が高くなるように定義されている。
【0091】
このような第1閾値テーブルによれば、第1ゲーティング閾値決定部14aは、外部において指定された電力削減レベルに応じた圧縮効率の閾値を辞書式符号化部11のゲーティング閾値として決定することができる。
【0092】
第1ゲーティング判定部14cは、上記したステップS6の処理が実行されることによって圧縮効率監視部13から出力された辞書式符号化部11の圧縮効率を取得し、当該圧縮効率及び辞書式符号化部11のゲーティング閾値を比較することによって、当該辞書式符号化部11をクロックゲーティングするか否かを判定する(ステップS7)。
【0093】
ステップS7においては、辞書式符号化部11の圧縮効率が辞書式符号化部11のゲーティング閾値未満である場合に、辞書式符号化部11をクロックゲーティングする(つまり、辞書式符号化部11に対してクロックゲーティングを発動する)と判定される。一方、辞書式符号化部11の圧縮効率が辞書式符号化部11のゲーティング閾値以上である場合には、辞書式符号化部11をクロックゲーティングしない(つまり、辞書式符号化部11に対してクロックゲーティングを発動しない)と判定される。
【0094】
辞書式符号化部11をクロックゲーティングすると判定された場合(ステップS7のYES)、第1ゲーティング判定部14cは、当該辞書式符号化部11をクロックゲーティングするための制御信号を当該辞書式符号化部11(、回路111及び112)に出力する(ステップS8)。この場合、ステップS8において出力された制御信号に基づいて辞書式符号化部11がクロックゲーティングされ、非圧縮データが当該辞書式符号化部11をスルーする(つまり、辞書式符号化部11の動作がスキップされる)ことになる。
【0095】
一方、辞書式符号化部11をクロックゲーティングしないと判定された場合(ステップS7のNO)、ステップS8の処理は実行されない。この場合、辞書式符号化部11がクロックゲーティングされず、辞書式符号化部11に入力される非圧縮データに対して辞書式符号化が行われることになる。
【0096】
なお、上記した辞書式符号化部11に対するクロックゲーティング(の発動)は、例えばKサイクルの経過により解除されるものとする。換言すれば、辞書式符号化部11に対するクロックゲーティングが発動されると、Kサイクルの間は辞書式符号化が行われない。Kは、例えば32である。辞書式符号化部11に対するクロックゲーティングが解除されると、上記した図5に示す処理が再度実行される。なお、ステップS8の処理が実行されず、辞書式符号化部11がクロックゲーティングされない場合、図5に示す処理が終了した後に当該図5に示す処理が再度実行される。
【0097】
ここで、本実施形態において辞書式符号化部11がクロックゲーティングされることは、圧縮器2eに入力される非圧縮データにかかわらず、辞書式符号化の結果として当該非圧縮データ(リテラル)が出力されることと同じである。このため、辞書式符号化部11よりも後段の処理においては、当該辞書式符号化部11がクロックゲーティングされているか否か(つまり、クロックゲーティングの発動または解除)を認識しておく必要はない。
【0098】
上記した辞書式符号化部11に対するゲーティング処理によれば、辞書式符号化部11による辞書式符号化の結果(実績)に基づいて計算される圧縮効率が辞書式符号化部11のゲーティング閾値未満である場合には、当該辞書式符号化部11をクロックゲーティングすることができる。
【0099】
次に、図9のフローチャートを参照して、エントロピー符号化部12に対するゲーティング処理の処理手順の一例について説明する。
【0100】
上記したようにエントロピー符号化部12においてエントロピー符号化が行われると、圧縮効率監視部13に含まれる平均符号長計算部13eは、当該エントロピー符号化の結果を取得する(ステップS11)。ステップS11において取得されるエントロピー符号化の結果は、1サイクル分の辞書式符号化の結果に対するエントロピー符号化の結果であり、圧縮効率監視部13(または平均符号長計算部13e)内において保持される。
【0101】
次に、上記したようにMサイクル分の符号長から平均符号長を計算するものとすると、平均符号長計算部13eは、Mサイクル分のエントロピー符号化の結果が取得されたか否かを判定する(ステップS12)。
【0102】
Mサイクル分の辞書式符号化の結果が取得されていないと判定された場合(ステップS12のNO)、ステップS11に戻って処理が繰り返される。
【0103】
一方、Mサイクル分の辞書式符号化の結果が取得されたと判定された場合(ステップS12のYES)、平均符号長計算部13eは、圧縮効率監視部13内に保持されているMサイクル分のエントロピー符号化の結果(符号長)の平均値を平均符号長として計算する(ステップS13)。なお、平均符号長の計算については上記した通りであるため、ここではその詳しい説明を省略する。
【0104】
次に、第2圧縮性能見積もり部13fは、ステップS13において計算された平均符号長に基づいて、エントロピー符号化部12の圧縮性能を見積もる(ステップS14)。
【0105】
なお、本実施形態において、エントロピー符号化部12の圧縮性能は、例えば図10に示す第2圧縮性能テーブルを参照して見積もることができるものとする。図10に示すように、第2圧縮性能テーブルには、平均符号長の範囲に対応づけて圧縮性能の見積もり値が格納されている。本実施形態においては、平均符号長の取り得る値の範囲は1以上10未満であるものとする。なお、第2圧縮性能テーブルにおいては、平均符号長が短いほど圧縮性能が高くなる(つまり、高い見積もり値とする)ように定義されている。
【0106】
第2圧縮性能見積もり部13fは、上記した第2圧縮性能テーブルを参照して、ステップS13において計算された平均符号長が該当する平均符号長の範囲に対応づけて当該第2圧縮性能テーブルに格納されている圧縮性能の見積もり値を取得する。
【0107】
なお、上記した第2圧縮性能テーブルは、圧縮効率監視部13内において予め用意されているものとする。
【0108】
ここでは第2圧縮性能テーブルを用いてエントロピー符号化部12の圧縮性能を見積もる場合について説明したが、予め定められている計算式(関数等)を用いるような他の手法により当該圧縮性能を見積もるようにしてもよい。
【0109】
また、第2消費電力見積もり部13gは、ステップS13において計算された平均符号長に基づいて、エントロピー符号化部12の消費電力を見積もる(ステップS15)。
【0110】
なお、本実施形態において、エントロピー符号化部12の消費電力は、例えば図11に示す第2消費電力テーブルを参照して見積もることができるものとする。図11に示すように、第2消費電力テーブルには、平均符号長の範囲に対応づけて消費電力の見積もり値が格納されている。なお、第1消費電力テーブルにおいては、平均符号長が長いほど消費電力が大きくなる(つまり、高い見積もり値とする)ように定義されている。
【0111】
第2消費電力見積もり部13gは、上記した第2消費電力テーブルを参照して、ステップS13において計算された平均符号長が該当する平均符号長の範囲に対応づけて当該第2消費電力テーブルに格納されている消費電力の見積もり値を取得する。
【0112】
なお、上記した第1消費電力テーブルによって示される平均符号長が長いほど消費電力が大きくなることは例えば知見により予め得られており、当該第1消費電力テーブルは、圧縮効率監視部13内において予め用意されているものとする。
【0113】
ここでは第2消費電力テーブルを用いてエントロピー符号化部12の消費電力を見積もる場合について説明したが、予め定められている計算式(関数等)を用いるような他の手法により当該消費電力を見積もるようにしてもよい。
【0114】
図9に示す例では、便宜的に、ステップS14及びS15の順に処理が実行されるものとして説明したが、ステップS14及びS15の処理は入れ替えて実行されてもよい(つまり、ステップS15の処理がステップS14の処理よりも先に実行されてもよい)し、ステップS14及びS15の処理は並列に実行されても構わない。
【0115】
次に、第2圧縮効率計算部13hは、ステップS14の処理が実行されることによって第2圧縮性能見積もり部13fによって取得された圧縮性能の見積もり値及びステップS15の処理が実行されることによって第2消費電力見積もり部13gによって取得された消費電力の見積もり値に基づいて、エントロピー符号化部12の圧縮効率を計算する(ステップS16)。ステップS16においては、例えば圧縮性能の見積もり値を消費電力の見積もり値で除算することによって計算されるものとする。なお、ステップS16において算出されるエントロピー符号化部12の圧縮効率は、上記した辞書式符号化部11の圧縮効率と同様に、例えば0~1の範囲内の値として計算されるものとする。
【0116】
ステップS16において計算されたエントロピー符号化部12の圧縮効率は、圧縮効率監視部13からゲーティング制御部14に出力される。
【0117】
ここで、上記したゲーティング制御部14に含まれる第2ゲーティング閾値決定部14bは、外部において指定された電力削減レベルに基づいてエントロピー符号化部12のゲーティング閾値を決定するものとする。なお、エントロピー符号化部12のゲーティング閾値は、例えば図12に示す第2閾値テーブルを参照して決定することができるものとする。図12に示すように、第2閾値テーブルには、電力削減レベルに対応づけて圧縮効率の閾値(つまり、エントロピー符号化部12のゲーティング閾値)が格納されている。
【0118】
なお、上記したように電力削減レベルは0~4の数値で表され、第2閾値テーブルにおいては、電力削減レベルが高いほど圧縮効率の閾値が高くなるように定義されている。電力削減レベルが高いほど圧縮効率の閾値が高くなる点においては上記した第1閾値テーブルと同様であるが、辞書式符号化とエントロピー符号化との差異を考慮して、例えば電力削減レベル「2」及び「4」に対応づけて第2閾値テーブルに格納されている圧縮効率の閾値は、第1閾値テーブルよりも高くなっている。
【0119】
このような第2閾値テーブルによれば、第2ゲーティング閾値決定部14bは、外部において指定された電力削減レベルに応じた圧縮効率の閾値をエントロピー符号化部12のゲーティング閾値として決定することができる。
【0120】
第2ゲーティング判定部14dは、上記したステップS16の処理が実行されることによって圧縮効率監視部13から出力されたエントロピー符号化部12の圧縮効率を取得し、当該圧縮効率及びエントロピー符号化部12のゲーティング閾値を比較することによって、当該エントロピー符号化部12をクロックゲーティングするか否かを判定する(ステップS17)。
【0121】
ステップS17においては、エントロピー符号化部12の圧縮効率がエントロピー符号化部12のゲーティング閾値未満である場合には、エントロピー符号化部12をクロックゲーティングする(つまり、エントロピー符号化部12に対してクロックゲーティングを発動する)と判定される。一方、エントロピー符号化部12の圧縮効率がエントロピー符号化部12のゲーティング閾値以上である場合には、エントロピー符号化部12をクロックゲーティングしない(つまり、エントロピー符号化部12に対してクロックゲーティングを発動しない)と判定される。
【0122】
エントロピー符号化部12をクロックゲーティングすると判定された場合(ステップS17のYES)、第2ゲーティング判定部14dは、当該エントロピー符号化部12をクロックゲーティングするための制御信号を当該エントロピー符号化部12(、回路121及び122)に出力する(ステップS18)。この場合、ステップS18において出力された制御信号に基づいてエントロピー符号化部12がクロックゲーティングされ、エントロピー符号化の結果が当該エントロピー符号化部12をスルーする(つまり、エントロピー符号化部12の動作がスキップされる)ことになる。
【0123】
一方、エントロピー符号化部12をクロックゲーティングしないと判定された場合(ステップS17のYES)、ステップS18の処理は実行されない。この場合、エントロピー符号化部12がクロックゲーティングされず、エントロピー符号化部12に入力される辞書式符号化の結果に対してエントロピー符号化が行われることになる。
【0124】
なお、上記したエントロピー符号化部12に対するクロックゲーティング(の発動)は、例えばK´サイクルの経過により解除されるものとする。換言すれば、エントロピー符号化部12に対するクロックゲーティングが発動されると、K´サイクルの間はエントロピー符号化が行われない。K´は、例えば64である。エントロピー符号化部12に対するクロックゲーティングが解除されると、上記した図9に示す処理が再度実行される。なお、ステップS18の処理が実行されず、エントロピー符号化部12がクロックゲーティングされない場合、図9に示す処理が終了した後に当該図9に示す処理が再度実行される。
【0125】
ここで、本実施形態において、エントロピー符号化部12がクロックゲーティングされていない場合にはエントロピー符号化の結果が圧縮データとして圧縮器2eから出力され、エントロピー符号化部12がクロックゲーティングされている場合には辞書式符号化の結果が圧縮データとして圧縮器2eから出力されることになる。すなわち、このように圧縮器2eから出力される圧縮データ(NAND型フラッシュメモリ3から読み出された圧縮データ)を伸張器2fが伸張(復号)する場合、エントロピー符号化部12がクロックゲーティングされているか否かに応じて当該伸張器2fにおいて実行される処理が異なる。このため、クロックゲーティングの発動及び解除が切り替えられた場合には、当該切り替わり(Syntaxの切り替わり)を示す符号が圧縮データ(圧縮ストリーム)に追加されるものとする。伸張器2fは、このような符号を参照することによって、圧縮データを適切に伸張することができる。
【0126】
上記したエントロピー符号化部12に対するゲーティング処理によれば、エントロピー符号化部12によるエントロピー符号化の結果(実績)に基づいて計算される圧縮効率がエントロピー符号化部12のゲーティング閾値未満である場合には、当該エントロピー符号化部12をクロックゲーティングすることができる。
【0127】
なお、本実施形態においては図8に示す第1閾値テーブルを用いて辞書式符号化部11のゲーティング閾値を決定するものとして説明したが、当該第1閾値テーブルにおいては、電力削減レベル「0」に対応づけて圧縮効率の閾値「0」が格納されている。また、辞書式符号化部11の圧縮効率は上記したように0~1の範囲の値である。すなわち、電力削減レベルが0である場合には、辞書式符号化部11の圧縮効率は常にゲーティング閾値を上回るため、ステップS7においては常にクロックゲーティングを発動しないと判定される。一方、図8に示す第1閾値テーブルにおいては、電力削減レベル「4」に対応づけて圧縮効率の閾値「1」が格納されている。これによれば、電力削減レベルが4である場合には、辞書式符号化部11の圧縮効率は常にゲーティング閾値を下回るため、ステップS7においては常にクロックゲーティングを発動すると判定される。ここでは辞書式符号化部11のゲーティング閾値について説明したが、図12に示す第2閾値テーブルを用いて決定されるエントロピー符号化部12のゲーティング閾値についても同様である。
【0128】
すなわち、本実施形態においては、例えば電力削減レベルを調整することによって、辞書式符号化部11及びエントロピー符号化部12を常にクロックゲーティングする構成または辞書式符号化部11及びエントロピー符号化部12を常にクロックゲーティングしない構成とすることも可能である。
【0129】
なお、辞書式符号化部11及びエントロピー符号化部12のゲーティング閾値は、電力削減レベルに応じて決定されればよく、例えば第1閾値テーブル及び第2閾値テーブルを用いない手法により決定されても構わない。
【0130】
本実施形態においては辞書式符号化部11に対するゲーティング処理(図5に示す処理)及びエントロピー符号化部12に対するゲーティング処理(図9に示す処理)は、それぞれ独立して実行される場合を想定しているが、これらの処理が互いに同期し、例えば同一ンのタイミングで辞書式符号化部11及びエントロピー符号化部12に対するクロックゲーティングが制御されるような構成としてもよい。
【0131】
また、本実施形態においては、平均マッチ長計算部13aがNサイクル分の辞書式符号化の結果から平均マッチ長を計算し、平均符号長計算部13eがMサイクル分のエントロピー符号化の結果から平均符号長を計算するものとして説明したが、Nは、Mと同一の値であってもよいし、異なっていてもよい。上記した辞書式符号化部11及びエントロピー符号化部12に対するクロックゲーティングが解除されるまでのサイクル数(K及びK´)についても同様である。
【0132】
上記したように本実施形態に係るメモリシステム1は、入力された非圧縮データ(第1データ)を圧縮した圧縮データ(第2データ)を出力する圧縮器2eと当該圧縮器2eから出力された圧縮データに基づくデータ(第3データ)が書き込まれるNAND型フラッシュメモリ3(不揮発性メモリ)とを備え、当該圧縮器2eは、非圧縮データ(第1データ)に対して辞書式符号化を行い、当該辞書式符号化の結果を出力する辞書式符号化部11と、当該辞書式符号化の結果に対してエントロピー符号化を行い、当該エントロピー符号化の結果を圧縮データとして出力するエントロピー符号化部12とを含む。また、本実施形態において、圧縮器2eは、辞書式符号化(辞書式符号化部11)及びエントロピー符号化(エントロピー符号化部12)の圧縮効率を計算し、当該計算された圧縮効率と、圧縮器2eに入力される電力削減レベル(外部において指定された電力削減レベル)とに基づいて、非圧縮データ(第4データ)に対する辞書式符号化部11及びエントロピー符号化部12のうちの少なくとも一方の動作を制御する。
【0133】
具体的には、本実施形態においては、上記した制御に基づいて辞書式符号化部11の動作がスキップされた(つまり、辞書式符号化部11がクロックゲーティングされた)場合、非圧縮データに対するエントロピー符号化の結果が圧縮データとして圧縮器2eから出力される。また、上記した制御に基づいてエントロピー符号化部12の動作がスキップされた(つまり、エントロピー符号化部12がクロックゲーティングされた)場合、辞書式符号化部の結果が圧縮データとして圧縮器2eから出力される。更に、辞書式符号化部11及びエントロピー符号化部12の動作がスキップされた(つまり、辞書式符号化部11及びエントロピー符号化部12がクロックゲーティングされた)場合、非圧縮データが圧縮器2eから出力される。
【0134】
また、本実施形態において、辞書式符号化部11の圧縮効率は当該辞書式符号化部11による辞書式符号化の結果(実績)から計算され、エントロピー符号化部12の圧縮効率は当該エントロピー符号化部12によるエントロピー符号化の結果(実績)から計算される。
【0135】
具体的には、辞書式符号化は非圧縮データを当該データよりも過去のデータの相対参照に変換する符号化手法であり、当該辞書式符号化の結果は当該相対参照としてのマッチ長を含み、当該マッチ長(当該マッチ長に基づく圧縮性能及び消費電力)に基づいて辞書式符号化部11の圧縮効率が計算される。
【0136】
また、エントロピー符号化は、データ(例えば、辞書式符号化の結果)を当該データの出現頻度に応じた符号長の符号に変換する符号化手法であり、当該符号長(当該符号長に基づく圧縮性能及び消費電力)に基づいてエントロピー符号化部12の圧縮効率が計算される。
【0137】
本実施形態においては、このような構成により、辞書式符号化及びエントロピー符号化の結果(圧縮処理結果)から圧縮効率が随時計算され、当該圧縮効率が電力削減レベルから定まる閾値未満である場合には当該辞書式符号化部11及びエントロピー符号化部12がクロックゲーティングされるため、圧縮効率が低いにもかかわらず圧縮処理(辞書式符号化処理及びエントロピー符号化処理)が実行される(電力を消費する)ことを回避することができる。よって、本実施形態においては、電力当たりのゲイン(圧縮性能)を向上させることができ、結果として、消費電力を抑制し、かつ、効率的にデータを圧縮することが可能となる。
【0138】
なお、例えば単に入力される非圧縮データに基づいて圧縮処理をスキップするような構成が考えられるが、このような構成の場合には、当該圧縮処理をスキップするという判定の精度が低くなり、必要な圧縮処理をスキップするまたは不要な圧縮処理をスキップしないといったことが生じる可能性が高い。
【0139】
これに対して、本実施形態においては辞書式符号化部11及びエントロピー符号化部12による符号化結果(つまり、実際の圧縮処理実績の情報)を使用してクロックゲーティングを制御する(圧縮処理のスキップを判定する)構成であるため、上記したように単に入力される非圧縮データに基づいて圧縮処理をスキップするような構成と比較して、圧縮処理のスキップに関する判定精度(つまり、クロックゲーティング制御の精度)を向上させることができる。
【0140】
なお、本実施形態においては、図5及び図9において説明したように辞書式符号化部11及びエントロピー符号化部12に対してそれぞれ別個の圧縮効率が計算され、当該別個に計算された圧縮効率に基づいて辞書式符号化部11及びエントロピー符号化部12の各々の動作が制御される場合について説明したが、圧縮効率監視部13が1つの圧縮効率を計算し、当該1つの圧縮効率に基づいて辞書式符号化部11及びエントロピー符号化部の動作を一括して制御するような構成としても構わない。なお、このような構成における圧縮効率は、例えば上記した辞書式符号化部11の圧縮効率及びエントロピー符号化部12の圧縮効率から計算されてもよく、例えば「α×辞書式符号化部11の圧縮効率+β×エントロピー符号化部12の圧縮効率」によって計算されることができる。このように計算された圧縮効率がゲーティング閾値未満であれば、辞書式符号化部11及びエントロピー符号化部12の両方をクロックゲーティングすることができる。なお、このように計算された圧縮効率がゲーティング閾値以上であれば、辞書式符号化部11及びエントロピー符号化部12の両方がクロックゲーティングされないものとする。このような構成によれば、辞書式符号化部11及びエントロピー符号化部12を包括的にクロックゲーティングすることができる。また、このような構成の場合には、ゲーティング閾値を決定するために上記した第1及び第2閾値テーブル以外の閾値テーブルを用いてもよい。
【0141】
また、本実施形態においては辞書式符号化部11及びエントロピー符号化部12による符号化結果(つまり、実際の圧縮処理実績の情報)を用いて圧縮効率を計算するものとして説明したが、圧縮効率は他の情報を用いて計算されても構わない。
【0142】
(第2実施形態)
次に、第2実施形態について説明する。なお、本実施形態においては、前述した第1実施形態と同様の部分についての詳しい説明を省略し、当該第1実施形態とは異なる部分について主に説明する。また、本実施形態におけるメモリシステムのハードウェア構成については前述した第1実施形態と同様であるため、適宜、図1を用いて説明する。
【0143】
まず、図13を参照して、本実施形態に係るメモリシステム1に備えられる圧縮器2eの構成の一例について説明する。なお、図13においては、前述した図2と同一の部分には同一参照符号を付してその詳しい説明を省略し、当該図2と異なる部分について説明する。
【0144】
本実施形態における圧縮器2eは、パターン分類部15を更に含む点で、前述した第1実施形態とは異なる。
【0145】
パターン分類部15は、メモリシステム1(圧縮器2e)に入力される非圧縮データのデータパターンを解析して当該非圧縮データを分類する。パターン分類部15による分類結果は、圧縮効率監視部13に出力され、辞書式符号化部11及びエントロピー符号化部12の圧縮効率の計算に用いられる。
【0146】
また、前述した第1実施形態においては圧縮器2eに入力された非圧縮データが回路111を介して辞書式符号化部11に選択的に渡されていたが、本実施形態においては、圧縮器2eに入力された非圧縮データがパターン分類部15に入力され、当該パターン分類部15によって分類されたデータが回路111を介して辞書式符号化部11に選択的に渡される。
【0147】
次に、図14を参照して、図13に示すパターン分類部15の構成の一例について説明する。
【0148】
本実施形態において、パターン分類部15は、Pサイクル分の非圧縮データを1ユニットとして分類処理を実行する。すなわち、上記したようにサイクル毎に16Byteずつの非圧縮データが圧縮器2eに入力される場合、パターン分類部15は、16Byte×Pサイクル分のサイズの非圧縮データを解析して当該非圧縮データを分類する。なお、Pは、例えば64である。
【0149】
パターン分類部15は、サイクル毎に入力される非圧縮データ(16Byte)を順次格納するバッファ15aを有している。このバッファ15aには、Pサイクル分の非圧縮データ(例えば、16×64=1024Byte)が格納される。
【0150】
また、サイクル毎にパターン分類部15に入力された非圧縮データ(16Byte)は、平均マッチ長推定部15bに渡される。平均マッチ長推定部15bは、ヒストリバッファ15c、辞書探索部15d及び平均マッチ長計算部15eを含む。なお、ヒストリバッファ15c及び辞書探索部15dは、上記した辞書式符号化部11と同様の辞書式符号化を行う回路(辞書式符号化回路)に相当する。ただし、上記した辞書式符号化部11に含まれるヒストリバッファのサイズが4KiBであるのに対し、ヒストリバッファ15cのサイズは例えば512Byteである。すなわち、平均マッチ長推定部15bにおいては、辞書式符号化部11よりも簡易な辞書式符号化が行われる。
【0151】
ヒストリバッファ15cには512Byteの過去のデータ(非圧縮データ)が格納されており、辞書探索部15dは、平均マッチ長推定部15bに渡された非圧縮データを当該ヒストリバッファ15cから探索する処理(辞書探索処理)を実行する。
【0152】
非圧縮データと一致する過去のデータがヒストリバッファ15cから検索された場合、当該非圧縮データと当該検索された過去のデータとの一致する長さ(マッチ長)が、辞書探索部15dから平均マッチ長計算部15eに出力される。なお、非圧縮データと一致する過去のデータがヒストリバッファ15cから検索されない場合には、マッチ長=0が、辞書探索部15dから平均マッチ長計算部15eに出力される。
【0153】
辞書探索部15dから平均マッチ長計算部15eにはサイクル毎にマッチ長が出力されるため、平均マッチ長計算部15eは、当該サイクル毎に出力されたマッチ長の平均値(平均マッチ長)を計算する。平均マッチ長計算部15eによって計算された平均マッチ長は、当該平均マッチ長計算部15eから分類部15iに出力される。
【0154】
すなわち、平均マッチ長推定部15bは、近傍の過去のデータ(512Byte)に対する辞書式符号化の結果と、過去のデータ全体(辞書式符号化部11に含まれるヒストリバッファに格納されている4KiBの過去のデータ)に対する辞書式符号化の結果に相関関係が存在することを仮定し、Pサイクル分(1ユニット)の非圧縮データの平均マッチ長を推定する。
【0155】
一方、上記した辞書探索部15dによって非圧縮データと一致する過去のデータがヒストリバッファ15cから検索されない場合、当該非圧縮データ(リテラル)は、辞書探索部15dから平均符号長推定部15fに出力される。平均符号長推定部15fは、頻度テーブル15g及び平均符号長計算部15hを含む。
【0156】
頻度テーブル15gは、辞書探索部15dから出力された非圧縮データの出現頻度をカウントするために用いられる。なお、頻度テーブル15gにおいては、上記したPサイクル分の非圧縮データのうち、辞書探索部15dから平均符号長推定部15fに出力された非圧縮データの各々の出現頻度がカウントされる。
【0157】
平均符号長計算部15hは、頻度テーブル15gにおいてカウントされた非圧縮データの各々の出現頻度に基づいて平均符号長を計算する。なお、本実施形態においては、各非圧縮データの出現頻度から計算されるエントロピーを平均符号長として用いる。
【0158】
エントロピーは、非圧縮データ(リテラル)lの集合をL、当該非圧縮データlの出現頻度に基づく出現確率をP(l)として、以下の式(3)により計算される。
【数3】
【0159】
平均符号長計算部15hは、上記した式(3)により計算されるエントロピーを平均符号長として推定する。
【0160】
なお、辞書式符号化の結果としての距離及びマッチ長に対してエントロピー符号化が行われた場合の符号の符号長は、非圧縮データに対してエントロピー符号化が行われた場合と比較して、圧縮データ全体に対して占める割合が小さい傾向にあるため、平均符号長推定部15fにおける平均符号長の推定においては考慮に入れていない(つまり、頻度テーブル15gにおける出現頻度のカウントの対象としていない)。
【0161】
平均符号長計算部15hによって計算された平均符号長は、当該平均符号長計算部15hから分類部15iに出力される。
【0162】
分類部15iは、平均マッチ長計算部15eから出力された平均マッチ長及び平均符号長計算部15hから出力された平均符号長に基づいて、Pサイクル分の非圧縮データ(つまり、バッファ15aに格納されている1024Byteの非圧縮データ)を分類する。
【0163】
なお、非圧縮データの分類は、例えば図15に示す分類テーブルを参照して行われるものとする。図15に示すように、分類テーブルには、平均マッチ長の範囲及び平均符号長の範囲の組み合わせ(分類条件)に対応づけて、非圧縮データのパターン分類(つまり、分類結果)及び当該非圧縮データの傾向が格納されている。すなわち、図15に示す分類テーブルによれば、非圧縮データを9パターンのいずれかに分類することができる。
【0164】
具体的には、分類テーブルには、例えば「0≦平均マッチ長<4,6≦平均符号長<10」に対応づけて、パターン分類「0」及び非圧縮データの傾向「辞書式符号化部、エントロピー符号化部共に低圧縮性能、消費電力大」が格納されている。これによれば、平均マッチ長が0以上4未満であり、平均符号長が6以上10未満である場合、辞書式符号化部11及びエントロピー符号化部12は共に低圧縮性能であり、かつ、消費電力が大きいと推定されるため、パターン分類「0」に分類されることが示されている。ここでは、「0≦平均マッチ長<4,6≦平均符号長<10」の分類条件について説明したが、他の分類条件についても同様である。
【0165】
なお、図15においては、説明の便宜上、分類テーブルに非圧縮データの傾向が格納されているものとして説明したが、当該分類条件及びパターン分類があれば分類は可能であるため、非圧縮データの傾向については分類テーブルから省略されていてもよい。
【0166】
分類部15iによる分類結果(平均マッチ長及び平均符号長から特定されるパターン分類)は、パターン分類部15から圧縮効率監視部13に出力される。
【0167】
なお、図16は、本実施形態における圧縮効率監視部13の構成の一例を示している。本実施形態における圧縮効率監視部13は前述した第1実施形態における各部13a~13hを含むが、第1圧縮効率計算部13d及び第2圧縮効率計算部13hがパターン分類部15から出力される分類結果(パターン分類結果)を考慮して辞書式符号化部11の圧縮効率及びエントロピー符号化部12の圧縮効率を計算する点が前述した第1実施形態とは異なる。
【0168】
具体的には、前述した第1実施形態においては辞書式符号化部11の圧縮性能の見積もり値及び消費電力の見積もり値から当該辞書式符号化部11の圧縮効率を算出するが、本実施形態において、第1圧縮効率計算部13dは、上記したパターン分類結果に応じた加算値を圧縮性能の見積もり値及び消費電力の見積もり値に加算した上で辞書式符号化部11の圧縮効率を算出する。
【0169】
なお、辞書式符号化部11の圧縮性能の見積もり値に加算される加算値は、例えば図17に示す第1加算値テーブルを参照して決定される。図17に示すように、第1加算値テーブルには、パターン分類結果に対応づけて辞書式符号化部11の圧縮性能の見積もり値に加算される加算値が格納されている。図17に示す第1加算値テーブルによれば、上記した図15に示す分類テーブルにおいて辞書式符号化部11が低圧縮性能であるという非圧縮データの傾向に対応づけられているパターン分類結果の場合には、当該パターン分類結果に対応づけられている比較的低い加算値が辞書式符号化部11の圧縮性能の見積もり値に加算される。一方、上記した図15に示す分類テーブルにおいて辞書式符号化部11が高圧縮性能であるという非圧縮データの傾向に対応づけられているパターン分類結果の場合には、当該パターン分類結果に対応づけられている比較的高い加算値が辞書式符号化部11の圧縮性能の見積もり値に加算される。
【0170】
また、辞書式符号化部11の消費電力の見積もり値に加算される加算値は、例えば図18に示す第2加算値テーブルを参照して決定される。図18に示すように、第2加算値テーブルには、パターン分類結果に対応づけて辞書式符号化部11の消費電力の見積もり値に加算される加算値が格納されている。図18に示す第2加算値テーブルによれば、上記した図15に示す分類テーブルにおいて辞書式符号化部11の消費電力が大きいという非圧縮データの傾向に対応づけられているパターン分類結果の場合には、当該パターン分類結果に対応づけられている比較的高い加算値が辞書式符号化部11の消費電力の見積もり値に加算される。一方、上記した図15に示す分類テーブルにおいて辞書式符号化部11の消費電力が小さいという非圧縮データの傾向に対応づけられているパターン分類結果の場合には、当該パターン分類結果に対応づけられている比較的低い加算値が辞書式符号化部11の消費電力の見積もり値に加算される。
【0171】
なお、本実施形態における辞書式符号化部11の圧縮効率は、上記した第1加算値テーブルを参照して決定された加算値が加算された圧縮性能の見積もり値を、第2加算値テーブルを参照して決定された加算値が加算された消費電力の見積もり値で除算することによって計算されればよい。
【0172】
また、前述した第1実施形態においてはエントロピー符号化部12の圧縮性能の見積もり値及び消費電力の見積もり値から当該エントロピー符号化部12の圧縮効率を算出するが、本実施形態において、第2圧縮効率計算部13hは、上記したパターン分類結果に応じた加算値を圧縮性能の見積もり値及び消費電力の見積もり値に加算した上でエントロピー符号化部12の圧縮効率を算出する。
【0173】
なお、エントロピー符号化部12の圧縮性能の見積もり値に加算される加算値は、例えば図19に示す第3加算値テーブルを参照して決定される。図19に示すように、第3加算値テーブルには、パターン分類結果に対応づけてエントロピー符号化部12の圧縮性能の見積もり値に加算される加算値が格納されている。図19に示す第3加算値テーブルによれば、上記した図15に示す分類テーブルにおいてエントロピー符号化部12が低圧縮性能である非圧縮データの傾向に対応づけられているパターン分類結果の場合には、当該パターン分類結果に対応づけられている比較的低い加算値がエントロピー符号化部12の圧縮性能の見積もり値に加算される。一方、上記した図15に示す分類テーブルにおいてエントロピー符号化部12が高圧縮性能であるという非圧縮データの傾向に対応づけられているパターン分類結果の場合には、当該パターン分類結果に対応づけられている比較的高い加算値がエントロピー符号化部12の圧縮性能の見積もり値に加算される。
【0174】
また、エントロピー符号化部12の消費電力の見積もり値に加算される加算値は、例えば図20に示す第4加算値テーブルを参照して決定される。図20に示すように、第4加算値テーブルには、パターン分類結果に対応づけてエントロピー符号化部12の消費電力の見積もり値に加算される加算値が格納されている。図20に示す第4加算値テーブルによれば、上記した図15に示す分類テーブルにおいてエントロピー符号化部12の消費電力が大きいという非圧縮データの傾向に対応づけられているパターン分類結果の場合には、当該パターン分類結果に対応づけられている比較的高い加算値がエントロピー符号化部12の消費電力の見積もり値に加算される。一方、上記した図15に示す分類テーブルにおいてエントロピー符号化部12の消費電力が小さいという非圧縮データの傾向に対応づけられているパターン分類悔過の場合には、当該パターン分類結果に対応づけられている比較的低い加算値がエントロピー符号化部12の消費電力の見積もり値に加算される。
【0175】
なお、本実施形態におけるエントロピー符号化部12の圧縮効率は、上記した第3加算値テーブルを参照して決定された加算値が加算された圧縮性能の見積もり値を、第4加算値テーブルを参照して決定された加算値が加算された消費電力の見積もり値で除算することによって計算されればよい。
【0176】
また、図18に示す第2加算値テーブルに格納されている加算値及び図20に示す第4加算値テーブルに格納されている加算値は、辞書式符号化部11及びエントロピー符号化部12の実際の消費電力等に応じて一部が異なる値となっているが、全て同じ値であってもよい。
【0177】
次に、図21のシーケンスチャートを参照して、本実施形態における圧縮器2eの処理手順の一例について説明する。
【0178】
まず、パターン分類部15は、非圧縮データを入力する(ステップS21)。ステップS21においては、Pサイクル分の16Byteの非圧縮データが順次入力される。なお、ステップS21において入力された非圧縮データ(例えば、1024Byte)は、パターン分類部15に含まれるバッファ15aに格納される。
【0179】
次に、パターン分類部15は、ステップS21において入力された非圧縮データに対してパターン分類処理を実行する(ステップS22)。パターン分類処理はステップS21において入力された非圧縮データを分類する処理であるが、当該パターン分類処理(パターン分類部15によって実行される処理)については上記した通りであるため、ここではその詳しい説明を省略する。
【0180】
ステップS22の処理が実行されると、パターン分類結果がパターン分類部15から圧縮効率監視部13に出力される(ステップS23)。
【0181】
圧縮効率監視部13は、ステップS23においてパターン分類部15から出力されたパターン分類結果に基づいて圧縮効率計算処理を実行する(ステップS24)。
【0182】
なお、圧縮効率計算処理においては、上記したようにパターン分類結果に応じた加算値が加算された圧縮性能の見積もり値及び消費電力の見積もり値に基づいて辞書式符号化部11及びエントロピー符号化部12の圧縮効率が計算される。前述した第1実施形態において説明したように、圧縮性能の見積もり値及び消費電力の見積もり値の計算には辞書式符号化の結果(例えば、Nサイクル分の辞書式符号化の結果)及びエントロピー符号化の結果(例えば、Mサイクル分のエントロピー符号化の結果)が必要であるが、当該辞書式符号化の結果及びエントロピー符号化の結果については、ステップS24の処理が実行される時点で圧縮効率監視部13において辞書式符号化部11及びエントロピー符号化部12から取得(収集)されているものとする。
【0183】
ステップS24の処理が実行されると、辞書式符号化部11及びエントロピー符号化部12の圧縮効率が圧縮効率監視部13からゲーティング制御部14に出力される(ステップS25)。
【0184】
ゲーティング制御部14は、ステップS25において圧縮効率監視部13から出力された圧縮効率に基づいてゲーティング制御処理を実行する(ステップS26)。なお、ゲーティング制御処理は辞書式符号化部11及びエントロピー符号化部12に対するクロックゲーティングを制御する処理であるが、当該ゲーティング制御処理(ゲーティング制御部14によって実行される処理)については前述した第1実施形態において説明した通りであるため、ここではその詳しい説明を省略する。
【0185】
ステップS26の処理が実行されると、パターン分類部15に含まれるバッファ15aに格納されていた非圧縮データ(パターン分類部15によって分類された非圧縮データ)がパターン分類部15から辞書式符号化部11(回路111)に出力される(ステップS27)。
【0186】
上記した図21に示す処理によれば、本実施形態において圧縮器2eに入力された非圧縮データは、当該非圧縮データの分類結果を考慮してクロックゲーティングが制御された辞書式符号化部11及びエントロピー符号化部12によって圧縮(符号化)される。
【0187】
上記したように本実施形態においては、圧縮器2eに入力された非圧縮データを分類し、当該分類結果に基づいて圧縮効率が計算され、当該圧縮効率に基づいてクロックゲーティングが制御された辞書式符号化部11及びエントロピー符号化部12によって当該非圧縮データが圧縮(符号化)される構成であるため、圧縮効率が低いと予測される非圧縮データについては辞書式符号化部11またはエントロピー符号化部12の動作をスキップする(つまり、辞書式符号化部11またはエントロピー符号化部12による符号化をスルーする)ことができる。これによれば、前述した第1実施形態と比較して、圧縮効率の更なる向上が期待できる。
【0188】
更に、本実施形態においては、圧縮器2eに入力される非圧縮データに加えて辞書式符号化の結果及びエントロピー符号化の結果(つまり、辞書式符号化部11及びエントロピー符号化部12の処理実績)を用いてクロックゲーティングを制御するため、圧縮処理のスキップに関する判定処理(クロックゲーティング制御)の精度を向上させることができる。これによれば、適切に圧縮効率を向上させ、消費電力を抑制することが可能となる。
【0189】
なお、本実施形態においては、パターン分類結果に応じた加算値を圧縮性能の見積もり値に加算することによって圧縮効率を計算する(つまり、分類結果に基づく圧縮性能に基づいて圧縮効率を計算する)ものとして説明したが、例えばパターン分類結果に基づいて調整された圧縮性能と相関する指標(例えば、平均マッチ長及び平均符号長)に基づいて圧縮効率を算出する構成としてもよい。
【0190】
同様に、本実施形態においては、パターン分類結果に応じた加算値を消費電力の見積もり値に加算することによって圧縮効率を計算する(つまり、分類結果に基づく消費電力に基づいて圧縮効率を計算する)ものとして説明したが、例えばパターン分類結果に基づいて調整された消費電力と相関する指標(例えば、平均マッチ長及び平均符号長)に基づいて圧縮効率を算出する構成としてもよい。
【0191】
なお、本実施形態においては、辞書式符号化部11のゲーティング閾値及びエントロピー符号化部12のゲーティング閾値が前述した図8に示す第1閾値テーブル及び図12に示す第2閾値テーブルを参照して決定される場合を想定しているが、本実施形態におけるパターン分類結果に応じた加算値を考慮して、例えば当該第1閾値テーブル及び第2閾値テーブルに格納されている閾値を調整する(例えば、閾値を下げる)ようにしてもよい。
【0192】
(第3実施形態)
次に、第3実施形態について説明する。なお、本実施形態においては、前述した各実施形態と同様の部分についての詳しい説明を省略し、当該各実施形態とは異なる部分について主に説明する。また、本実施形態におけるメモリシステムのハードウェア構成については前述した各実施形態と同様であるため、適宜、図1を用いて説明する。
【0193】
前述した各実施形態においては、辞書式符号化部11全体がクロックゲーティングされるものとして説明したが、本実施形態においては、辞書式符号化部11のクロックゲーティングドメインが細分化される点で、前述した各実施形態と異なる。
【0194】
なお、本実施形態においては前述した第2実施形態における辞書式符号化部11が細分化されてクロックゲーティングされる構成について説明し、圧縮器2eの構成については、適宜、図13を用いて説明する。
【0195】
図22は、本実施形態における辞書式符号化部11の構成の一例を示す。図22に示すように、辞書式符号化部11は、第1辞書式符号化部11a、第2辞書式符号化部11b及び第3辞書式符号化部11cを含む。
【0196】
ここで、前述した各実施形態において辞書式符号化部11は非圧縮データをヒストリバッファに格納されている4KiBの過去のデータの相対参照に変換する辞書式符号化を行うが、第1辞書式符号化部11aは、非圧縮データを、当該4KiBの過去のデータのうちの例えば256Byteの過去のデータ(直近の過去のデータ)の相対参照に変換する辞書式符号化を行う。すなわち、第1辞書式符号化部11aは、直近の256Byteの過去のデータ(比較的近い過去のデータ)を参照して辞書式符号化を行う近傍辞書式符号化部に相当する。
【0197】
これに対して、第2辞書式符号化部11b及び第3辞書式符号化部11cは、第1辞書式符号化部11aによって参照されない過去のデータ(比較的遠い過去のデータ)を参照して辞書式符号化を行う遠方辞書式符号化に相当する。
【0198】
具体的には、第2辞書式符号化部11bは、非圧縮データを、比較的遠い過去のデータ(第1辞書式符号化部11aによって参照されない過去のデータ)のうちの一部(のデータ)の相対参照に変換する辞書式符号化を行う。
【0199】
一方、第3辞書式符号化部11cは、非圧縮データを、比較的遠い過去のデータのうちの他部(第2辞書式符号化部11bによって参照されない過去のデータ)の相対参照に変換する辞書式符号化を行う。
【0200】
なお、例えば第2辞書式符号化部11bが参照する過去のデータは第3辞書式符号化部11cが参照する過去のデータよりも新しいものとするが、当該第2辞書式符号化部11bが参照する過去のデータのサイズと第3辞書式符号化部11cが参照する過去のデータのサイズとは同一であってもよいし、異なっていてもよい。
【0201】
本実施形態においては、上記した第1辞書式符号化部11a、第2辞書式符号化部11b及び第3辞書式符号化部11cの全てが動作することによって、前述した各実施形態においてヒストリバッファに格納されている4KiBの過去のデータを参照して辞書式符号化を行う場合と同等の動作となる。
【0202】
なお、第1辞書式符号化部11a、第2辞書式符号化部11b及び第3辞書式符号化部11cの全てが動作した場合には、当該第1辞書式符号化部11a、第2辞書式符号化部11b及び第3辞書式符号化部11cによって行われた辞書式符号化の結果のうち最も符号化効率が高い結果(つまり、マッチ長が最大となる結果)が辞書式符号化部11から出力される。
【0203】
ここで、本実施形態においては、第1辞書式符号化部11a、第2辞書式符号化部11b及び第3辞書式符号化部11cの各々によって行われた辞書式符号化の結果が圧縮効率監視部13に出力され、当該圧縮効率監視部13において第1辞書式符号化部11a、第2辞書式符号化部11b及び第3辞書式符号化部11cの各々の圧縮効率が計算される。これによれば、ゲーティング制御部14は、圧縮効率監視部13によって計算された圧縮効率に基づいて、第1辞書式符号化部11a、第2辞書式符号化部11b及び第3辞書式符号化部11cの各々に対するクロックゲーティングを制御することができる。
【0204】
このため、図22に示す第1辞書式符号化部11a、第2辞書式符号化部11b及び第3辞書式符号化部11cの各々の前段には前述した回路111が設けられており、後段には前述した回路112が設けられている。
【0205】
なお、図23は本実施形態における圧縮効率監視部13の構成の一例を示し、図24は本実施形態におけるゲーティング制御部14の構成の一例を示している。なお、図23及び図24においては、前述した図3及び図4と同様の部分には同一参照符号を付してその詳しい説明を省略する。ここでは、前述した各実施形態と異なる部分について主に述べる。
【0206】
図23に示すように、圧縮効率監視部13は、第1辞書式符号化部11a、第2辞書式符号化部11b及び第3辞書式符号化部11cの各々に対する平均マッチ長計算部13a、第1圧縮性能見積もり部13b、第1消費電力見積もり部13c及び第1圧縮効率計算部13dを含む。このような構成により、圧縮効率監視部13は、第1辞書式符号化部11a、第2辞書式符号化部11b及び第3辞書式符号化部11cの各々の圧縮効率を計算して、ゲーティング制御部14に出力することができる。
【0207】
なお、平均マッチ長計算部13a、第1圧縮性能見積もり部13b、第1消費電力見積もり部13c、第1圧縮効率計算部13dの詳細については前述した通りであるため、ここではその詳しい説明を省略する。また、前述した第1実施形態においては、図6に示す第1圧縮性能テーブルを参照して圧縮性能を見積もり、図7に示す第1消費電力テーブルを参照して消費電力を見積もるものとして説明したが、本実施形態において、第1辞書式符号化部11a、第2辞書式符号化部11b及び第3辞書式符号化部11cの各々に対する第1圧縮性能見積もり部13b及び第1消費電力見積もり部13cが平均マッチ長から圧縮性能及び消費電力を見積もるために参照するテーブルは、図6及び図7に示すものとは異なっていてもよい。
【0208】
また、図24に示すように、ゲーティング制御部14は、上記した圧縮効率監視部13から出力された第1辞書式符号化部11a、第2辞書式符号化部11b及び第3辞書式符号化部11cの各々の圧縮効率に基づいて、第1辞書式符号化部11a、第2辞書式符号化部11b及び第3辞書式符号化部11cの各々をクロックゲーティングするように構成されている。
【0209】
なお、本実施形態においては、第1辞書式符号化部11a、第2辞書式符号化部11b及び第3辞書式符号化部11cの各々を別個にクロックゲーティングすることが可能であるが、当該クロックゲーティングの対象は、例えば図25に示すゲーティング制御テーブルを参照して決定される。図25に示すように、ゲーティング制御テーブルには、圧縮効率と辞書式符号化部11のゲーティング閾値との関係を含むクロックゲーティングの発動条件と、当該発動条件を満たす場合のクロックゲーティングの対象が対応づけて格納されている。図25に示すゲーティング制御テーブルにおいては、圧縮効率がゲーティング閾値未満である第1~第3辞書式符号化部11a~11cがクロックゲーティングの対象として決定される(つまり、動作がスキップされる)ように定義されている。
【0210】
上記したように本実施形態においては、辞書式符号化部11が非圧縮データを比較的近い過去のデータの相対参照に変換する第1辞書式符号化部11a(第1辞書式符号化部)、当該非圧縮データを比較的遠い過去のデータの一部の相対参照に変換する第2辞書式符号化部11b(第3辞書式符号化部)及び当該非圧縮データを比較的遠い過去のデータの他部の相対参照に変換する第3辞書式符号化部11c(第4辞書式符号化部)を含み、当該第1辞書式符号化部11a、第2辞書式符号化部11b及び第3辞書式符号化部11cの各々の圧縮効率が計算され、当該計算された圧縮効率に基づいて第1辞書式符号化部11a、第2辞書式符号化部11b及び第3辞書式符号化部11cが個別にクロックゲーティングされる(第1辞書式符号化部11a、第2辞書式符号化部11b及び第3辞書式符号化部11cのうちの少なくとも1つの動作が制御される)。
【0211】
本実施形態においては、このような構成により、辞書式符号化部11全体をクロックゲーティングするような構成と比較して、より細かい粒度で消費電力を抑制することが可能となり、圧縮効率も向上させることが可能となる。
【0212】
なお、本実施形態においては第1辞書式符号化部11a、第2辞書式符号化部11b及び第3辞書式符号化部11cがクロックゲーティングされるものとして説明したが、例えば第1辞書式符号化部11aを常に動作させ、第2辞書式符号化部11b及び第3辞書式符号化部11cの少なくとも一方の動作を制御する(スキップする)ような構成とすることもできる。
【0213】
更に、第2辞書式符号化部11b及び第3辞書式符号化部11cを1つの辞書式符号化部(第2辞書式符号化部)として構成し、第1辞書式符号化部11a及び当該辞書式符号化部のうちの少なくとも一方の動作を制御するような構成としてもよい。
【0214】
なお、本実施形態においては前述した第2実施形態における辞書式符号化部11が細分化されてクロックゲーティングされる構成について説明したが、本実施形態の構成は、前述した第1実施形態に適用されても構わない。
【0215】
(第4実施形態)
次に、第4実施形態について説明する。なお、本実施形態においては、前述した各実施形態と同様の部分についての詳しい説明を省略し、当該各実施形態とは異なる部分について主に説明する。また、本実施形態におけるメモリシステムのハードウェア構成については前述した各実施形態と同様であるため、適宜、図1を用いて説明する。
【0216】
前述した各実施形態においては、エントロピー符号化部12全体がクロックゲーティングされるものとして説明したが、本実施形態においては、エントロピー符号化部12のクロックゲーティングドメインが細分化される点で、前述した各実施形態と異なる。
【0217】
なお、本実施形態においては前述した第2実施形態におけるエントロピー符号化部12が細分化されてクロックゲーティングされる構成について説明し、圧縮器2eの構成については、適宜、図13を用いて説明する。
【0218】
図26は、本実施形態におけるエントロピー符号化部12の構成の一例を示す。ここで、本実施形態に係るエントロピー符号化部12によって行われるエントロピー符号化(ハフマン符号化)は、動的ハフマン符号化であるものとする。この場合、エントロピー符号化部12は、頻度テーブル生成部12a、符号化テーブル生成部12b、ハフマン符号化部12c及びバッファ12dを含む。
【0219】
まず、エントロピー符号化部12がクロックゲーティングされない場合のエントロピー符号化部12の動作について簡単に説明する。
【0220】
エントロピー符号化部12には辞書式符号化の結果が入力されるが、当該辞書式符号化の結果には、非圧縮データ(リテラル)、距離及びマッチ長が含まれる。なお、辞書式符号化の結果に含まれる非圧縮データ、距離及びマッチ長の各々を便宜的にシンボルと称する。
【0221】
この場合、頻度テーブル生成部12aは、辞書式符号化の結果に含まれる各シンボルの出現頻度を所定のサイズのユニット(例えば、非圧縮データ換算で1024Byte)毎にカウントして、頻度テーブルを生成する。なお、非圧縮データ換算で1024Byteに相当する辞書式符号化の結果は、バッファ12dに格納される。
【0222】
符号化テーブル生成部12bは、頻度テーブル生成部12aによって生成された頻度テーブルに基づいて符号化テーブル(ハフマン符号化テーブル)を生成する。なお、符号化テーブル生成部12bによって生成される符号化テーブルにおいては、シンボル毎に割り当てられる符号が定義される。
【0223】
ハフマン符号化部12cは、符号化テーブル生成部12bによって生成された符号化テーブルを用いて、上記したバッファ12dに格納された辞書式符号化の結果に含まれるシンボルの各々を符号化する。
【0224】
エントロピー符号化部12においては、頻度テーブル生成部12a、符号化テーブル生成部12b、ハフマン符号化部12c及びバッファ12dが上記したように動作することにより、辞書式符号化の結果(各シンボル)に対するエントロピー符号化(ハフマン符号化)を行うことができる。
【0225】
ここで、本実施形態において、クロックゲーティングのドメインは、頻度テーブル生成部12a、符号化テーブル生成部12b及びハフマン符号化部12cに分かれており、当該各ドメインが別個に制御される。このような制御を実現するため、本実施形態におけるエントロピー符号化部12は、上記した頻度テーブル生成部12a、符号化テーブル生成部12b、ハフマン符号化部12c及びバッファ12dに加えて、類似度計算部12e及び圧縮性能推定部12fを更に含む。
【0226】
類似度計算部12eは、1つ前のユニットで使用(生成)された頻度テーブル(つまり、過去の頻度テーブル)12gを保持し、頻度テーブル生成部12aによって生成された頻度テーブル(以下、現在の頻度テーブルと表記)と、当該頻度テーブル12gとの類似度を計算する。
【0227】
以下、類似度計算部12eによって計算される類似度について説明する。まず、現在の頻度テーブルにおいて出現頻度>0である全てのシンボルが1つ前の頻度テーブル12gにおいても出現頻度>0である場合、当該シンボルsの集合をS、当該シンボルsの現在の頻度テーブルにおける出現頻度をFcur(s)、1つ前の頻度テーブル12gにおける出現頻度をFprev(s)とすると、類似度は、以下の式(4)により計算される。
【数4】
【0228】
一方、現在の頻度テーブルにおいて出現頻度>0であり、かつ、1つ前の頻度テーブル12gにおいて出現頻度=0であるシンボルが1つでも存在する場合、類似度=∞とする。
【0229】
すなわち、本実施形態においては、類似度が小さいほど、現在の頻度テーブルと1つ前の頻度テーブル12gとが類似していることを示す。
【0230】
なお、上記した類似度計算部12eによって計算された類似度は、エントロピー符号化部12から圧縮効率監視部13に出力される。
【0231】
圧縮性能推定部12fは、動的ではなくオフラインで静的に生成された(つまり、辞書式符号化の結果に含まれる複数のシンボルとは独立して予め用意された)符号化テーブル(以下、静的符号化テーブルと表記)12hを保持し、動的に生成された符号化テーブル(符号化テーブル生成部12bによって生成された符号化テーブル)に代えて当該静的符号化テーブル12hを使用した場合の圧縮性能を推定する(見積もる)。なお、静的符号化テーブル12hには、上記した符号化テーブル生成部12bによって生成される符号化テーブルと同様に、シンボル毎に割り当てられる符号が定義されている。
【0232】
なお、静的符号化テーブル12hを使用した場合における圧縮性能の見積もりには、静的符号化テーブル12hを使用した場合における推定符号量を使用する。推定符号量は、ユニット(非圧縮データ換算で1024Byte)に対応する辞書式符号化の結果に含まれるシンボルsの集合をS、当該シンボルsの現在の頻度テーブルにおける出現頻度をF(s)、静的符号化テーブル12hにおけるシンボルsの符号長をl(s)として、以下の式(5)により計算される。
【数5】
【0233】
圧縮性能推定部12fによって見積もられた圧縮性能(つまり、圧縮性能推定部12fによって計算された推定符号量)は、エントロピー符号化部12から圧縮効率監視部13に出力される。
【0234】
なお、本実施形態において、エントロピー符号化部12(符号化テーブル生成部12b)には、1つの前の頻度テーブル12gに対応する符号化テーブル(つまり、過去の符号化テーブル)12hが保持されているものとする。
【0235】
また、本実施形態においては、符号化テーブル生成部12bの後段に前述した回路122が設けられており、当該回路122及び静的符号化テーブル12hの後段に当該回路122が設けられている。更に、ハフマン符号化部12cの前段には前述した回路121が設けられており、当該ハフマン符号化部12cの後段には回路122が設けられている。
【0236】
図27は、本実施形態における圧縮効率監視部13の構成の一例を示す。なお、図27においては、図3及び図23と同様の部分には同一参照符号を付してその詳しい説明を省略する。ここでは、前述した各実施形態と異なる部分について主に述べる。
【0237】
図27に示すように、圧縮効率監視部13は、第1決定部13i及び第2決定部13jを含む。
【0238】
第1決定部13iは、エントロピー符号化部12から出力された類似度(現在の頻度テーブルと1つ前の頻度テーブル12gとの類似度)に基づいて、1つ前の頻度テーブル12gを使用するか否かを決定する。なお、第1決定部13iは、例えば類似度が所定の閾値以上である場合には、頻度テーブル12gを使用したとしても圧縮効率が必要以上に低下しないと推定し、頻度テーブル12gを使用すると決定する。一方、第1決定部13iは、例えば類似度が所定の閾値未満である場合に頻度テーブル12gを使用しないと決定する。
【0239】
第1決定部13iによる決定結果は、圧縮効率監視部13からゲーティング制御部14に出力される。
【0240】
第2決定部13jは、エントロピー符号化部12から出力された推定符号量に基づいて、静的符号化テーブル12hを使用するか否かを決定する。なお、第2決定部13jは、例えば推定符号量が所定の閾値未満である場合には、静的符号化テーブル12hを使用したとしても圧縮効率が必要以上に低下しないと推定し、静的符号化テーブル12hを使用すると決定する。一方、第2決定部13jは、例えば推定符号量が所定の閾値以上である場合に静的符号化テーブル12hを使用しないと決定する。
【0241】
第2決定部13jによる決定結果は、圧縮効率監視部13からゲーティング制御部14に出力される。
【0242】
なお、第2圧縮性能見積もり部13fにおいてはエントロピー符号化部12の圧縮性能が見積もられるが、当該圧縮性能の見積もりにおいては、第2決定部13jによる決定結果が考慮される。
【0243】
具体的には、第2決定部13jによって静的符号化テーブル12hを使用すると決定された場合には、上記した推定符号量に基づいてエントロピー符号化部12の圧縮性能が見積もられる。この場合、エントロピー符号化部12の圧縮性能の見積もり値(推定)は、推定符号量が小さいほど大きく、推定符号量が大きいほど小さくなるものとする。
【0244】
一方、第2決定部13jによって静的符号化テーブル12hを使用しないと決定された場合には、前述した各実施形態と同様に平均符号長及び第2圧縮性能テーブルに基づいてエントロピー符号化部12の圧縮性能が見積もられる。
【0245】
また、第2消費電力見積もり部13gにおいてはエントロピー符号化部12の消費電力が見積もられるが、当該消費電力の見積もりにおいては、第1決定部13iによる決定結果及び第2決定部13jによる決定結果が考慮される。
【0246】
具体的には、第1決定部13iによって1つ前の頻度テーブル12gを使用すると決定された場合には、上記した類似度及び平均符号長に基づいてエントロピー符号化部12の消費電力が見積もられる。この場合、エントロピー符号化部12の消費電力の見積もり値(推定値)は、例えば類似度の値が小さいほど図11に示す第2消費電力テーブルに格納されている消費電力の見積もり値に近くなるように調整され、類似度が大きいほど当該第2消費電力テーブルに格納されている消費電力の見積もり値よりも大きくなるように調整される。
【0247】
また、第2決定部13jによって静的符号化テーブル12hを使用すると決定された場合には、上記した推定符号量に基づいてエントロピー符号化部12の消費電力が見積もられる。この場合、エントロピー符号化部12の消費電力の見積もり値(推定値)は、例えば推定符号量が小さいほど小さく、推定符号量が大きいほど大きくなるものとする。
【0248】
なお、第1決定部13iによって1つ前の頻度テーブルを使用すると決定され、かつ、第2決定部13jによって静的符号化テーブル12hを使用すると決定された場合には、第1決定部13iによって1つ前の頻度テーブルを使用すると決定された場合と同様にエントロピー符号化部12の消費電力が見積もられる。
【0249】
また、第1決定部13iによって1つ前の頻度テーブル12gを使用しないと決定され、かつ、第2決定部13jによって静的符号化テーブル12hを使用しないと決定された場合には、前述した各実施形態と同様に平均符号長に基づいてエントロピー符号化部12の消費電力が見積もられる。
【0250】
本実施形態におけるエントロピー符号化部12の圧縮効率は、上記したように見積もられた圧縮性能(の見積もり値)及び消費電力(の見積もり値)に基づいて第2圧縮効率計算部13hによって計算されればよい。
【0251】
また、本実施形態において、ゲーティング制御部14(第2ゲーティング判定部14d)は、上記したようにエントロピー符号化部12の圧縮効率、第1決定部13iによる決定結果及び第2決定部13jによる決定結果に基づいて、エントロピー符号化部12に対するクロックゲーティングを制御する。
【0252】
具体的には、本実施形態におけるクロックゲーティングは、以下の第1~第5条件に従って制御される。
【0253】
第1条件は、エントロピー符号化部12の圧縮効率が電力削減レベルに応じたエントロピー符号化部12のゲーティング閾値未満であることを含む。第1条件を満たす場合には、頻度テーブル生成部12a、符号化テーブル生成部12b及びハフマン符号化部12cをK´サイクルに渡ってクロックゲーティングし、K´サイクルの経過により解除される。換言すれば、第1条件を満たす場合には、エントロピー符号化部12によるエントロピー符号化はK´サイクルの間は行われない。K´は、例えば64である。
【0254】
第2条件は、エントロピー符号化部12の圧縮効率が電力削減レベルに応じたエントロピー符号化部12のゲーティング閾値以上であり、ユニット先頭(バッファ12dに格納されている辞書式符号化が当該バッファ12dから出力されるタイミング)で、1つ前の頻度テーブル12gを使用することが決定されており、かつ、静的符号化テーブル12hを使用することが決定されていることを含む。第2条件を満たす場合には、符号化テーブル生成部12bをクロックゲーティングした上で、1つ前の符号化テーブル12iを使用したハフマン符号化(エントロピー符号化)を1つのユニット全体に渡って行う。
【0255】
第3条件は、エントロピー符号化部12の圧縮効率が電力削減レベルに応じたエントロピー符号化部12のゲーティング閾値以上であり、ユニット先頭で、1つ前の頻度テーブル12gを使用することが決定されており、かつ、静的符号化テーブル12hを使用することが決定されていないことを含む。第3条件を満たす場合には、符号化テーブル生成部12bをクロックゲーティングした上で、1つ前の符号化テーブル12iを使用したハフマン符号化(エントロピー符号化)を1つのユニット全体に渡って行う。
【0256】
第4条件は、エントロピー符号化部12の圧縮効率が電力削減レベルに応じたエントロピー符号化部12のゲーティング閾値以上であり、ユニット先頭で、1つ前の頻度テーブル12gを使用することが決定されておらず、かつ、静的符号化テーブル12hを使用することが決定されていることを含む。第4条件を満たす場合には、符号化テーブル生成部12bをクロックゲーティングした上で、静的符号化テーブル12hを使用したエントロピー符号化(ハフマン符号化)を1つのユニット全体に渡って行う。
【0257】
第5条件は、エントロピー符号化部12の圧縮効率が電力削減レベルに応じたエントロピー符号化部12のゲーティング閾値以上であり、ユニット先頭で、1つ前の頻度テーブル12gを使用することが決定されておらず、かつ、静的符号化テーブル12hを使用することが決定されていないことを含む。第5条件を満たす場合には、現在の頻度テーブルに基づいて動的に符号化テーブルを生成した上で、当該符号化テーブルを用いてハフマン符号化(エントロピー符号化)を行う。
【0258】
なお、上記した第1~第5条件は、当該第1~第5条件の順に優先的に適用される。すなわち、第1条件が最も優先的に適用される条件であり、第5条件は他の第1~第4条件を満たさない場合に適用される条件である。
【0259】
上記したように本実施形態においては、頻度テーブル生成部12aによって生成された頻度テーブル(第1頻度テーブル)と過去の頻度テーブル12g(第2頻度テーブル)との類似度を算出し、当該類似度に基づいてエントロピー符号化部12の圧縮効率を計算し、当該計算された圧縮効率に基づいて符号化テーブル生成部12b(第2生成部)をクロックゲーティングし(符号化テーブル生成部12bの動作をスキップし)、過去の符号化テーブル12i(第2符号化テーブル)を用いてエントロピー符号化(ハフマン符号化)を行う。
【0260】
更に、本実施形態においては、辞書式復号化の結果に含まれる複数のシンボルとは独立して予め用意されている静的符号化テーブル12h(第3符号化テーブル)を用いてエントロピー符号化が行われた場合の推定符号量を計算し、当該計算された推定符号量に基づいてエントロピー符号化部12の圧縮効率を計算し、当該計算された圧縮効率に基づいて符号化テーブル生成部12bをクロックゲーティングし(符号化テーブル生成部12bの動作をスキップし)、静的符号化テーブル12hを用いてエントロピー符号化(ハフマン符号化)を行う。
【0261】
本実施形態においては、このような構成により、エントロピー符号化部12全体をクロックゲーティングするような構成と比較して、より細かい粒度で消費電力を抑制することが可能となり、圧縮効率も向上させることが可能となる。
【0262】
本実施形態においては、1つ前の頻度テーブル12g及び静的符号化テーブル12hの各々を使用するか否かを決定し、当該決定結果に基づいてエントロピー符号化部12の少なくとも一部をクロックゲーティングする構成について説明したが、例えば現在の符号化テーブル(第1符号化テーブル)、1つ前の符号化テーブル12i(第2符号化テーブル)及び静的符号化テーブル12hの各々を用いてエントロピー符号化を行う場合のエントロピー符号化部12の圧縮効率を別個に計算し、最も効率的な圧縮(エントロピー符号化)を行うことができる符号化テーブルを使用するようにエントロピー符号化部12の少なくとも一部をクロックゲーティングする構成としてもよい。
【0263】
また、本実施形態においては1つ前の符号化テーブル12i及び静的符号化テーブル12hの両方を保持する構成であるものとして説明したが、1つ前の符号化テーブル12i及び静的符号化テーブル12hの一方のみを保持する構成としても構わない。
【0264】
なお、本実施形態においては前述した第2実施形態におけるエントロピー符号化部12が細分化されてクロックゲーティングされる構成について説明したが、本実施形態の構成は、前述した他の実施形態に適用されても構わない。
【0265】
(第5実施形態)
次に、第5実施形態について説明する。なお、本実施形態においては、前述した各実施形態と同様の部分についての詳しい説明を省略し、当該各実施形態とは異なる部分について主に説明する。また、本実施形態におけるメモリシステムのハードウェア構成については前述した各実施形態と同様であるため、適宜、図1を用いて説明する。
【0266】
前述した各実施形態においては、辞書式符号化部11及びエントロピー符号化部12の圧縮効率が圧縮性能の見積もり値及び圧縮器2e(の辞書式符号化部11及びエントロピー符号化部12)の消費電力の見積もり値から計算されていたが、本実施形態においては、当該圧縮効率の計算に伸張器2f(の少なくとも一部)の消費電力が考慮される点で、前述した各実施形態とは異なる。
【0267】
なお、本実施形態においては前述した第2実施形態において伸張器2fの消費電力を考慮して圧縮効率を計算する構成について説明し、圧縮器2eの構成については、適宜、図13を用いて説明する。
【0268】
図28は、本実施形態における圧縮効率監視部13の構成の一例を示す。図28に示すように、圧縮効率監視部13は、第3消費電力見積もり部13k及び第4消費電力見積もり部13lを含む。
【0269】
第3消費電力見積もり部13kは、平均マッチ長計算部13aによって計算された平均マッチ長に基づいて伸張器2f(辞書式符号化の結果を復号する辞書式復号部)の消費電力の見積もりを行う。
【0270】
なお、前述した第1実施形態において説明したように、第1消費電力見積もり部13cは前述した図7に示す第1消費電力テーブルを参照して辞書式符号化部11の消費電力を見積もるが、本実施形態において、第3消費電力見積もり部13kは、当該第1消費電力テーブルに相当する消費電力テーブルを参照して、伸張器2fの消費電力を見積もるものとする。この第3消費電力見積もり部13kによって参照される消費電力テーブルには、平均マッチ長の範囲に対応づけて伸張器2fの消費電力の見積もり値が格納されている。
【0271】
本実施形態において、第1圧縮効率計算部13dは、辞書式符号化部11の圧縮性能の見積もり値を、辞書式符号化部11の消費電力の見積もり値及び伸張器2f(辞書式復号部)の消費電力の見積もり値を加算して得られる消費電力の見積もり値で除算することによって計算されるものとする。
【0272】
また、第4消費電力見積もり部13lは、平均符号長計算部13eによって計算された平均符号長に基づいて伸張器2f(エントロピー符号化の結果を復号するエントロピー復号部)の消費電力の見積もりを行う。
【0273】
なお、前述した第1実施形態において説明したように、第2消費電力見積もり部13gは前述した図11に示す第2消費電力テーブルを参照してエントロピー符号化部12の消費電力を見積もるが、本実施形態において、第4消費電力見積もり部13lは、当該第2消費電力テーブルに相当する消費電力テーブルを参照して、伸張器2fの消費電力を見積もるものとする。この第4消費電力見積もり部13lによって参照される消費電力テーブルには、平均符号長の範囲に対応づけて伸張器2fの消費電力の見積もり値が格納されている。
【0274】
本実施形態において、第2圧縮効率計算部13hは、エントロピー符号化部12の圧縮性能の見積もり値を、エントロピー符号化部12の消費電力の見積もり値及び伸張器2f(エントロピー復号部)の消費電力の見積もり値を加算して得られる消費電力の見積もり値で除算することによって計算されるものとする。
【0275】
なお、上記したように伸張器2fの消費電力を考慮して圧縮効率が計算される点以外は前述した第2実施形態と同様であるため、ここではその詳しい説明を省略する。
【0276】
なお、本実施形態においては第3消費電力見積もり部13k及び第4消費電力見積もり部13lを備える構成であるものとして説明したが、例えば第3消費電力見積もり部13k及び第4消費電力見積もり部13lのうちの一方が省略されるような構成であっても構わない。
【0277】
上記したように本実施形態においては、NAND型フラッシュメモリ3に書き込まれたデータに基づく圧縮データを伸張した非圧縮データを出力する伸張器2fの少なくとも一部(例えば、辞書式復号部またはエントロピー復号部)の消費電力(の見積もり値)に基づいて圧縮効率を計算する構成により、当該伸張器2fの消費電力をも考慮したクロックゲーティング制御を実現することが可能となる。
【0278】
なお、本実施形態においては、辞書式符号化部11のゲーティング閾値及びエントロピー符号化部12のゲーティング閾値が前述した図8に示す第1閾値テーブル及び図12に示す第2閾値テーブルを参照して決定される場合を想定しているが、本実施形態における伸張器2fの消費電力を考慮して、例えば当該第1閾値テーブル及び第2閾値テーブルに格納されている閾値を調整する(例えば、閾値を下げる)ようにしてもよい。
【0279】
また、本実施形態においては伸張器2fの消費電力を考慮して圧縮効率を計算する構成について説明したが、当該伸張器2fの消費電力に代えて、例えばNAND型フラッシュメモリ3(不揮発性メモリ)の少なくとも一部の消費電力またはメモリシステム1全体の消費電力を考慮して圧縮効率を計算するような構成とすることも可能である。なお、NAND型フラッシュメモリ3の少なくとも一部の消費電力またはメモリシステム1全体の省電力(の見積もり値)は、伸張器2fの消費電力と同様に、予め用意された消費電力テーブルを参照することによって見積もることができるものとする。
【0280】
更に、本実施形態においては圧縮器2e(辞書式符号化部11及びエントロピー符号化部12)の消費電力及び伸張器2f(辞書式復号部及びエントロピー復号部)の消費電力に基づいて辞書式符号化部11及びエントロピー符号化部12の圧縮効率が計算されるものとして説明したが、当該圧縮効率は、上記した圧縮器2e、伸張器2f、NAND型フラッシュメモリ3及びメモリシステム1全体の消費電力のうちの少なくとも1つに基づいて計算されてもよい。
【0281】
なお、本実施形態においては前述した第2実施形態において伸張器2fの消費電力を考慮して圧縮効率を計算する構成について説明したが、本実施形態の構成は、前述した他の実施形態に適用されても構わない。
【0282】
(第6実施形態)
次に、第6実施形態について説明する。なお、本実施形態においては、前述した各実施形態と同様の部分についての詳しい説明を省略し、当該各実施形態とは異なる部分について主に説明する。また、本実施形態におけるメモリシステムのハードウェア構成については前述した各実施形態と同様であるため、適宜、図1を用いて説明する。
【0283】
本実施形態においては、圧縮器2eの動作モードを動的に切り替える点で、前述した各実施形態とは異なる。
【0284】
なお、本実施形態においては前述した第2実施形態において圧縮器2eの動作モードを動的に切り替える構成について説明する。
【0285】
図29は、本実施形態における圧縮器2eの構成の一例を示す。図29に示すように、圧縮器2eは、モード切替検知部16を含む。
【0286】
モード切替検知部16は、例えばメモリシステム1(SSD)内部の各種リソース(ライトバッファ2gまたは内部コマンドキュー2h)の状態、ホスト100が備えるDRAM上の外部コマンドキュー101の状態またはガベージコレクション(GC)の実施状況を監視することによって、圧縮器2eの動作モードの切り替えを検知する(つまり、切り替え後の動作モードを決定する)。
【0287】
ここで、上記したライトバッファ2g、内部コマンドキュー2h及び外部コマンドキュー101の動作について簡単に説明する。
【0288】
まず、外部コマンドキュー101は、ホスト100のDRAM上に確保された領域であって、メモリシステム1に対する書き込みコマンド及び読み出しコマンドを格納する。外部コマンドキュー101に対するコマンドの追加は、ホスト100に備えられるCPU102によって行われる。一方、外部コマンドキュー101からのコマンドの削除は、メモリシステム1からホスト100に対して当該コマンドの完了が通知された場合に行われる。なお、図29に示す外部コマンドキュー101内に表記されている「W」及び「R」は、それぞれ外部コマンドキュー101に格納されている書き込みコマンド及び読み出しコマンドを表している。
【0289】
内部コマンドキュー2hは、外部コマンドキュー101に格納されたコマンド(つまり、ホスト100から発行されたコマンド)の一部または全部をメモリシステム1内部へコピーして格納する。メモリシステム1に備えられるコントローラ2は、内部コマンドキュー2hに格納されたコマンド(書き込みコマンド及び読み出しコマンド)を順次処理し、処理が完了したコマンドを内部コマンドキュー2hから削除するとともに、コマンドの完了をホスト100に通知する。なお、図29に示す内部コマンドキュー2h内に表記されている「W」及び「R」は、それぞれ内部コマンドキュー2hに格納されている書き込みコマンド及び読み出しコマンドを表している。
【0290】
ライトバッファ2gは、内部コマンドキュー2h内の書き込みコマンドを処理する際、当該書き込みコマンドにおいて指定されている書き込みデータを一時的にバッファする。ライトバッファ2g上の書き込みデータ(非圧縮データ)は、順次読み出されて圧縮器2eに入力される。
【0291】
なお、本実施形態における圧縮器2eの動作モードは、高速低圧縮モード、低速高圧縮モード0及び低速高圧縮モード1の3つであり、圧縮器2eは、通常は高速低圧縮モードで動作する。このため、本実施形態においては、圧縮器2eのスループットを低下させて問題がないと判定される場合には、動作モードの切り替えがモード切替検知部16によって検知され、当該検知結果に基づいて高速低圧縮モードから低速高圧縮モード0または低速高圧縮モード1に動作モードが切り替えられる。
【0292】
圧縮器2eが低速高圧縮モード0で動作する場合、辞書式符号化部11に入力される非圧縮データに対するスループットは、高速低圧縮モード時のスループットの1/2に低下するものとする。また、圧縮器2eが低速高圧縮モード1で動作する場合、辞書式符号化部11に入力される非圧縮データに対するスループットは、高速低圧縮モード時のスループットの1/4に低下するものとする。
【0293】
同様に、圧縮器2eが低速高圧縮モード0で動作する場合、エントロピー符号化部12に入力される辞書式符号化の結果に対するスループットは、高速低圧縮モード時のスループットの1/2に低下するものとする。また、圧縮器2eが低速高圧縮モード1で動作する場合、エントロピー符号化部12に入力される辞書式符号化の結果に対するスループットは、高速低圧縮モード時のスループットの1/4に低下するものとする。
【0294】
以下、本実施形態における動作モード毎の辞書式符号化部11及びエントロピー符号化部12の動作の一例について説明する。
【0295】
まず、図30を参照して、辞書式符号化部11の動作について説明する。本実施形態において、辞書式符号化部11は、ハッシュ値を用いてヒストリバッファに格納されている過去のデータを検索(探索)するように動作するように構成されているものとする。
【0296】
具体的には、辞書式符号化部11は、図30に示すように、過去の非圧縮データ(過去に入力された非圧縮データ)をリングバッファポリシーで格納するヒストリバッファ11dと、当該ヒストリバッファ11dから過去のデータを検索する検索エンジン11eとを含む。
【0297】
また、検索エンジン11eは、ハッシュテーブル11f、ハッシュ計算器11g、セレクタ11h及び比較器11iを含む。
【0298】
ハッシュテーブル11fは、非圧縮データの先頭の数Byte(例えば、4Byte)で計算されるハッシュ値(H値)によってアドレッシングされ、当該ハッシュ値(アドレス)と対応するエントリーには、当該非圧縮データと先頭の数Byteのハッシュ値が一致する、ヒストリバッファ11d上の過去のデータに対するリードポインタが格納されている。
【0299】
非圧縮データが辞書式符号化部11に入力されると、当該非圧縮データの先頭の数Byteのハッシュ値がハッシュ計算器11gにより計算され、当該ハッシュ値に基づいてハッシュテーブル11fからリードポインタが読み出される。このように読み出されたリードポインタに基づいてヒストリバッファ11dから過去の非圧縮データが読み出され、当該読み出された非圧縮データと辞書式符号化部11に入力された非圧縮データとの比較が比較器11iによって行われる。
【0300】
このような比較結果に基づいてマッチ長の計算が行われるが、マッチ結果選択部11jは、このように計算されたマッチ長の中から最大のものを選択し、辞書式符号化の結果として出力する。
【0301】
なお、上記したように辞書式符号化部11に入力された非圧縮データ(つまり、辞書式符号化が行われた非圧縮データ)は、過去の非圧縮データとしてヒストリバッファ11dに格納される。このように非圧縮データがヒストリバッファ11dに格納されると、当該非圧縮データのリードポインタがハッシュ値と対応づけてハッシュテーブル11fに登録される。
【0302】
ここで、上記したようにハッシュテーブル11fを用いて辞書式符号化を行う場合、ハッシュ衝突が生じることにより適切な符号化を行うことができない可能性があるが、このハッシュ衝突に対応するため、ハッシュテーブル11fは、同一のアドレス(ハッシュ値)に対して最大で4つのリードポインタ(D1、D2、D3、D4)を保持することができる。なお、ハッシュテーブル11fにおけるリードポインタは、FIFO Policyで更新される。すなわち、例えば新たなリードポインタがハッシュテーブル11fに登録される場合、最も古いリードポインタ(D4)が破棄される。
【0303】
このような構成によれば、ヒストリバッファ11d上の過去のデータのうち、非圧縮データとマッチする可能性が高いもの(つまり、先頭の数Byteのハッシュ値が一致するもの)のみを選択してヒストリバッファ11dから読み出すため、効率の良い検索処理を実行することが可能となる。
【0304】
なお、ヒストリバッファ11dからの過去のデータの読み出しロジック及びマッチ長を計算するための比較ロジックを削減するため、16Byteの非圧縮データを処理する各サイクルでは1つのハッシュ値に対応づけてハッシュテーブル11fに登録されている4つのリードポインタ(D1、D2、D3、D4)のうちの1つのみがセレクタ11hによって選択され、当該選択されたリードポインタに基づいてヒストリバッファ11dからの過去のデータの読み出しと当該過去のデータに基づくマッチ長の計算が行われる。
【0305】
すなわち、本実施形態において圧縮器2eが高速低圧縮モードで動作する場合、辞書式符号化部11は、各サイクルで1つのリードポインタを用いたヒストリバッファの読み出しとマッチ長の計算のみが可能なように構成されている。
【0306】
ここで、本実施形態において検索エンジン制御部11kは、圧縮器2eの動作モードに応じて上記した辞書式符号化部11(検索エンジン11e)の動作を制御する。この場合、検索エンジン制御部11kは、低速高圧縮モード0及び低速高圧縮モード1において辞書式符号化部11に求められるスループットが低下するのに合わせて、検索エンジン11eによるヒストリバッファ11dの探索量を増加させるように動作する。
【0307】
具体的には、圧縮器2eが高速低圧縮モードで動作する場合、検索エンジン制御部11kは、上記したように各サイクルにおいて非圧縮データの先頭の数Byteのハッシュ値に対応する1つのリードポインタ(最も新しいリードポインタD1)を選択するようにセレクタ11hを制御する。これによれば、圧縮器2eが高速低圧縮モードで動作する場合には、サイクル毎に1つ辞書式符号化の結果が出力される。
【0308】
一方、圧縮器2eが低速高圧縮モード0で動作する場合、検索エンジン制御部11kは、1回目のサイクルにおいて非圧縮データの先頭の数Byteのハッシュ値に対応する1つ目のリードポインタ(最も新しいリードポインタD1)を選択し、2回目のサイクルにおいて当該ハッシュ値に対応する2つ目のリードポインタ(D1の次に新しいリードポインタD2)を選択するようにセレクタ11hを制御する。これによれば、圧縮器2eが低速高圧縮モード0で動作する場合には、2サイクル毎に1つ辞書式符号化の結果が出力される。この場合、上記した高速低圧縮モード時よりもスループットは1/2に低下するが、2つのリードポインタの各々を用いて読み出された過去データに基づいてマッチ長が計算されるため、高速低圧縮モード時より適切な辞書式符号化の結果を出力することができる可能性がある。
【0309】
また、圧縮器2eが低速高圧縮モード1で動作する場合、検索エンジン制御部11kは、1回目のサイクルにおいて非圧縮データの先頭の数Byteのハッシュ値に対応する1つ目のリードポインタ(最も新しいリードポインタD1)を選択し、2回目のサイクルにおいて当該ハッシュ値に対応する2つ目のリードポインタ(D1の次に新しいリードポインタD2)を選択し、3回目のサイクルにおいて当該ハッシュ値に対応する3つ目のリードポインタ(D2の次に新しいリードポインタD3)を選択し、4回目のサイクルにおいて当該ハッシュ値に対応する4つ目のリードポインタ(最も古いリードポインタD4)を選択するようにセレクタ11hを制御する。これによれば、圧縮器2eが低速高圧縮モード1で動作する場合には、4サイクル毎に1つ辞書式符号化の結果が出力される。この場合、上記した高速低圧縮モード時よりもスループットは1/4に低下するが、4つのリードポインタの各々を用いて読み出された過去データに基づいてマッチ長が計算されるため、高速低圧縮モード及び低速高圧縮モード0時より適切な辞書式符号化の結果を出力することができる可能性がある。
【0310】
すなわち、本実施形態においては、低速高圧縮モード0及び低速高圧縮モード1では、非圧縮データのスループットが1/2及び1/4に低下した分、ヒストリバッファ11dからの過去のデータの読み出し及びマッチ長の計算に割り当てるサイクル数を2倍及び4倍に増加させることによって辞書式符号化部11の性能を向上させることができる。
【0311】
次に、図31を参照して、エントロピー符号化部12の動作について説明する。本実施形態において、エントロピー符号化部12は、図31に示すように、頻度テーブル生成部12a、符号化テーブル生成部12b、ハフマン符号化部12c、バッファ12d、頻度テーブルソート回路12j及びソート回路制御部12kを含む。
【0312】
なお、図31に示す頻度テーブル生成部12a、符号化テーブル生成部12b、ハフマン符号化部12c及びバッファ12dについては、図26において説明した頻度テーブル生成部12a、符号化テーブル生成部12b、ハフマン符号化部12c及びバッファ12dと同様であるため、ここではその詳しい説明を省略する。
【0313】
ここで、エントロピー符号化部12においては、頻度テーブル生成部12aが辞書式符号化の結果に含まれるシンボル毎に当該シンボルの出現頻度をカウントすることによって頻度テーブルを生成するのと同時に、当該頻度テーブルのシンボルを出現頻度に基づいてソートする処理(以下、ソート処理と表記)が頻度テーブルソート回路12jによって実行される。
【0314】
符号化テーブル生成部12bは、上記したソート処理が実行された頻度テーブルにおいて上位に位置するシンボル(つまり、出現頻度が高いシンボル)に対して短い符号が割り当てられるような符号化テーブルを生成する。
【0315】
ハフマン符号化部12cは、このように符号化テーブル生成部12bによって生成された符号化テーブルに基づいて、バッファ12dに格納されている辞書式符号化の結果(各シンボル)を符号化する。
【0316】
このようにエントロピー符号化部12においては、出現頻度の高いシンボルに短い符号を割り当てることによって符号化効率を向上させることができる。
【0317】
ところで、上記した頻度テーブルソート回路12jによって実行されるソート処理は、頻度テーブルに対するin-placeなソート処理であり、サイクルが進むにつれて段階的に完全にソートした状態へと漸近していくため、サイクルが進んでいない段階では完全なソート結果が保証されるとは限らない。
【0318】
このため、十分なソート処理が実行されておらず、頻度テーブルの上位に出現頻度が低いシンボルが位置していた場合には、当該出現頻度が低いシンボルに短い符号が割り当てられることになり、効率的な符号化を行うことができない。同様に、頻度テーブルの下位に出現頻度が高いシンボルが位置していた場合には、当該出現頻度が高いシンボルに長い符号が割り当てられることになり、効率的な符号化を行うことができない。
【0319】
このため、本実施形態においてソート回路制御部12kは、圧縮器2eの動作モードに応じて頻度テーブルソート回路12jの動作を制御する。この場合、ソート回路制御部12kは、低速高圧縮モード0及び低速高圧縮モード1においてエントロピー符号化部12に求められるスループットが低下するのに合わせて、頻度テーブルソート回路12jにおけるソート回数を増加させるように動作する。
【0320】
具体的には、ソート回路制御部12kは、動作モードに応じて図32に示すように頻度テーブルソート回路12jを制御する。
【0321】
この場合、圧縮器2eが高速低圧縮モードで動作する場合には、シンボルが1回入力される度に1回のソート処理が実行されるが、圧縮器2eが低速高圧縮モード0で動作する場合には、シンボルが1回入力される度に2回のソート処理が実行される。また、圧縮器2eが低速高圧縮モード1で動作する場合には、シンボルが1回入力される度に4回のソート処理が実行される。
【0322】
すなわち、本実施形態においては、低速高圧縮モード0及び低速高圧縮モード1では、非圧縮データのスループットが1/2及び1/4に低下した分、シンボル当たりのソート処理に割り当てるサイクル数を2倍及び4倍に増加させる。これによれば、頻度テーブルをより正しくソートすることが可能になり、エントロピー符号化部12の性能を向上させることができる。
【0323】
なお、本実施形態において、上記した検索エンジン制御部11k及びソート回路制御部12kは、圧縮器2e(辞書式符号化部11及びエントロピー符号化部12)の動作モードを切り替える動作モード制御部に相当する。
【0324】
次に、図33を参照して、モード切替検知部16の構成について説明する。図33に示すように、モード切替検知部16は、モード切替判定部16a及びモード格納部16bを含む。
【0325】
モード切替判定部16aは、メモリシステム1(SSD)内部の各種リソース(ライトバッファ2gまたは内部コマンドキュー2h)の状態、ホスト100が備えるDRAM上の外部コマンドキュー101の状態またはガベージコレクション(GC)の実施状況に基づいて、圧縮器2eの動作モードを切り替えるか否かを判定する。この場合、モード切替判定部16aは、例えばメモリシステム1(SSD)内部の各種リソース(ライトバッファ2gまたは内部コマンドキュー2h)の状態、ホスト100が備えるDRAM上の外部コマンドキュー101の状態またはガベージコレクション(GC)の実施状況が所定の条件を満たしている場合に、高速低圧縮モードを低速高圧縮モード0または低速高圧縮モード1に切り替えると判定することができる。
【0326】
モード切替判定部16aによって圧縮器2eの動作モードを切り替えると判定された場合、当該切り替え後の動作モードがモード切替判定部16aからモード格納部16bに出力される。モード格納部16bに格納された動作モードは、上記したように辞書式符号化部11及びエントロピー符号化部12に出力される。これにより、辞書式符号化部11及びエントロピー符号化部12は、モード格納部16bに格納された動作モードに従って動作する。
【0327】
なお、モード格納部16bは例えばFlipFlop(F/F)回路によって実現されており、当該モード格納部16bに格納されている動作モードは、サイクル毎に圧縮効率監視部13によって参照される。このように圧縮効率監視部13によって参照された動作モードは、圧縮効率の計算の際に考慮される。なお、モード格納部16b(F/F)は、例えば低速高圧縮モード0または低速高圧縮モード1で所定のサイクル期間に渡って動作した後、高速低圧縮モードで初期化される。
【0328】
一方、圧縮効率監視部13において計算された圧縮効率は、モード切替判定部16aによる判定処理において考慮されてもよい。なお、この場合、圧縮効率監視部13において計算された圧縮効率は当該圧縮効率監視部13内に設けられた圧縮効率格納部(図示せず)に格納され、モード切替判定部16aは、当該圧縮効率格納部に格納された圧縮効率を例えばサイクル毎に参照することができるものとする。圧縮効率格納部は、上記したモード格納部16bと同様にFlipFlop(F/F)回路によって実現されていればよい。
【0329】
すなわち、本実施形態においては、圧縮効率監視部13及びモード切替検知部16(モード切替判定部16a)がサイクル毎にF/Fから出力される動作モード及び圧縮効率を互いに参照し合う構成とすることができる。
【0330】
モード切替検知部16が圧縮効率を参照する構成の場合には、当該圧縮効率が所定の閾値以上であり、かつ、メモリシステム1(SSD)内部の各種リソース(ライトバッファ2gまたは内部コマンドキュー2h)の状態、ホスト100が備えるDRAM上の外部コマンドキュー101の状態またはガベージコレクション(GC)の実施状況が所定の条件を満たしている場合に、例えば高速低圧縮モードを低速高圧縮モード0または低速高圧縮モード1に切り替えると判定することができる。
【0331】
図34は、本実施形態における圧縮効率監視部13の構成の一例を示す。本実施形態においては、辞書式符号化部11及びエントロピー符号化部12の消費電力を見積もる際に、圧縮器2eの動作モードを考慮する。
【0332】
まず、圧縮器2eの動作モードが切り替えられると、同一サイクル期間内に入力される非圧縮データの量が変化する。この場合、平均マッチ長計算部13aは、圧縮器2eの動作モードが高速低圧縮モードである場合には上記した式(1)により平均マッチ長を計算する。一方、圧縮器2eの動作モードが低速高圧縮モード0である場合には、スループットの低下により、辞書式符号化部11が2サイクルに1つのマッチ長(辞書式符号化の結果)を出力するように動作するため、平均マッチ長計算部13a以下の式(6)により平均マッチ長を計算する。
【数6】
【0333】
また、圧縮器2eの動作モードが低速高圧縮モード1である場合には、スループットの更なる低下により、辞書式符号化部11が4サイクルに1つのマッチ長(辞書式符号化の結果)を出力するように動作するため、平均マッチ長計算部13aは、以下の式(7)により平均マッチ長を計算する。
【数7】
【0334】
この場合、第1消費電力見積もり部13cは、前述した図7に示す第1消費電力テーブルに代えて、動作モードが考慮された図35に示す第3消費電力テーブルを参照して、辞書式符号化部11の消費電力を見積もるものとする。なお、図35に示す第3消費電力テーブルにおいては、低速高圧縮モード0及び低速高圧縮モード1時の消費電力が高速低圧縮モード時の消費電力よりも低くなっているが、このような消費電力の低下は、非圧縮データの入力スループットが低下することによる一部ロジックのスイッチング電力の低下を反映したものである。
【0335】
本実施形態において、辞書式符号化部11の圧縮効率は、前述した第1実施形態等において説明した辞書式符号化部11の圧縮性能の見積もり値及び上記した図35に示す第3消費電力テーブルを参照して見積もられた消費電力の見積もり値に基づいて計算されればよい。
【0336】
一方、平均符号長計算部13eは、圧縮器2eの動作モードが高速低圧縮モードである場合には上記した式(2)により平均符号長を計算する。一方、圧縮器2eの動作モードが低速高圧縮モード0である場合には、スループットの低下により、エントロピー符号化部12が2サイクルに1つの符号長(エントロピー符号化の結果)を出力するように動作するため、平均符号長計算部13eは、以下の式(8)により平均符号長を計算する。
【数8】
【0337】
また、圧縮器2eの動作モードが低速高圧縮モード1である場合には、スループットの更なる低下により、エントロピー符号化部12が4サイクルに1つの符号長(エントロピー符号化の結果)を出力するように動作するため、平均符号長計算部13eは、以下の式(9)により平均符号長を計算する。
【数9】
【0338】
この場合、第2消費電力見積もり部13gは、前述した図11に示す第2消費電力テーブルに代えて、動作モードが考慮された図36に示す第4消費電力テーブルを参照して、エントロピー符号化部12の消費電力をも積もるものとする。なお、図36に示す第4消費電力テーブルにおいては、低速高圧縮モード0及び低速高圧縮モード1時の消費電力が高速低圧縮モード時の消費電力よりも低くなっているが、このような消費電力の低下は、辞書式符号化の結果の入力スループットが低下することによる一部ロジックのスイッチング電力の低下を反映したものである。
【0339】
本実施形態において、エントロピー符号化部12の圧縮効率は、前述した第1実施形態等において説明したエントロピー符号化部12の圧縮性能の見積もり値及び上記した図36に示す第4消費電力テーブルを参照して見積もられた消費電力の見積もり値に基づいて計算されればよい。
【0340】
本実施形態においては、辞書式符号化部11の消費電力を見積もる際に図35に示す第3消費電力テーブルを参照し、エントロピー符号化部12の消費電力を見積もる際に図36に示す第4消費電力テーブルを参照するものとして説明したが、動作モードが切り替えられた場合には符号化の性能が変化する(つまり、動作モードの切り替えは符号化の性能に影響を与える)ことから、当該動作モードの切り替え(変更)は平均マッチ長及び平均符号長に反映されると考えられる。このため、圧縮性能については前述した図6に示す第1圧縮性能テーブル及び図10に示す第1圧縮性能テーブルを使用することができる(つまり、圧縮性能テーブルの変更は行われなくてもよい)。
【0341】
上記したように本実施形態においては、圧縮器2eの動作モードの切り替えを検知し、当該検知結果に基づいて圧縮器2eの動作モードを切り替える構成により、例えばメモリシステム1(SSD)内部の各種リソース(ライトバッファ2gまたは内部コマンドキュー2h)の状態、ホスト100が備えるDRAM上の外部コマンドキュー101の状態またはガベージコレクション(GC)の実施状況等に応じて符号化の性能及びスループットを適切に調整することが可能となる。
【0342】
また、本実施形態においては、圧縮器2eの動作モード(つまり、動作モードの切り替えの検知結果)に基づいて圧縮効率を計算する構成により、当該動作モードに応じたクロックゲーティング制御を実現することができる。
【0343】
更に、本実施形態においては、動作モードの切り替えの検知結果に基づいて辞書式符号化のためのヒストリバッファ11d(第5バッファ)に対する検索(探索)回数を制御する構成により、例えば高速低圧縮モードから低速高圧縮モード0または低速高圧縮モード1に切り替えられた場合に辞書式符号化部11の符号化性能を向上させることができる。
【0344】
また、本実施形態においては、動作モードの切り替えの検知結果に基づいて、頻度テーブル(第1テーブル)に格納されている出現頻度に基づいてシンボルをソートする回数を制御する構成により、例えば高速低圧縮モードから低速高圧縮モード0または低速高圧縮モード1に切り替えられた場合にエントロピー符号化部12の符号化性能を向上させることができる。
【0345】
なお、本実施形態においては前述した第2実施形態において圧縮器2eの動作モードを動的に切り替える構成について説明したが、本実施形態の構成は、前述した他の実施形態に適用されても構わない。
【0346】
(第7実施形態)
次に、第7実施形態について説明する。なお、本実施形態においては、前述した各実施形態と同様の部分についての詳しい説明を省略し、当該各実施形態とは異なる部分について主に説明する。また、本実施形態におけるメモリシステムのハードウェア構成については前述した各実施形態と同様であるため、適宜、図1を用いて説明する。
【0347】
前述した第6実施形態においては圧縮効率監視部13において計算される圧縮効率がモード切替判定部16aによる判定処理において考慮されてもよいことを説明したが、本実施形態においては、当該圧縮効率に基づいて圧縮器2eの動作モードを切り替えるか否かを判定する(つまり、動作モードを決定する)構成について具体的に説明する。
【0348】
なお、前述した第6実施形態においてはメモリシステム1(SSD)内部の各種リソース(ライトバッファ2gまたは内部コマンドキュー2h)の状態、ホスト100が備えるDRAM上の外部コマンドキュー101の状態またはガベージコレクション(GC)の実施状況に基づいて、モード切替検知部16に含まれるモード切替判定部16aが圧縮器2eの動作モードを切り替えるか否かを判定するものとして説明したが、本実施形態においては、上記したライトバッファ2g、内部コマンドキュー2h、外部コマンドキュー101及びガベージコレクションの実施状況のうちの少なくとも1つを監視する監視部を備え、当該監視部による監視結果及び辞書式符号化部11の圧縮効率に基づいて動作モードを切り替えるものとする。
【0349】
まず、図37を参照して、辞書式符号化部11の圧縮効率とライトバッファ2gの空き容量とに基づいて動作モードを決定する構成(以下、第1構成と表記)について説明する。
【0350】
第1構成においては、図37に示すように、モード切替検知部16がモード切替判定部16a及びライトバッファ監視部16cを含む。なお、図37においては、前述した第6実施形態において説明したモード格納部16bについては省略されている。
【0351】
ライトバッファ監視部16cは、ライトバッファ2gの空き容量を監視し、当該監視結果をモード切替判定部16aに出力する。
【0352】
モード切替判定部16aは、圧縮効率監視部13において計算された辞書式符号化部11の圧縮効率及びライトバッファ監視部16cから出力された監視結果(ライトバッファ2gの空き容量)に基づいて、圧縮器2eの動作モードを決定する。
【0353】
なお、第1構成において、圧縮器2eの動作モードは、例えば図38に示す第1動作モードテーブルを参照して決定されるものとする。図38に示すように、第1動作モードテーブルには、辞書式符号化部11の圧縮効率及びライトバッファ2gの空き容量に関する条件(動作モードの切り替え条件)及び当該条件を満たす場合に切り替えられる動作モード(つまり、切り替え後の動作モード)が格納されている。
【0354】
具体的には、第1動作モードテーブルにおいては、辞書式符号化部11の圧縮効率が0.03以上であり、かつ、ライトバッファ2gの空き容量が512Byte以上であれば、圧縮器2eの動作モードを低速高圧縮モード0に切り替える(つまり、圧縮器2eの動作モードとして低速高圧縮モード0を決定する)ことが定義されている。
【0355】
また、第1動作モードテーブルにおいては、辞書式符号化部11の圧縮効率が0.03以上であり、かつ、ライトバッファ2gの空き容量が768Byte以上であれば、圧縮器2eの動作モードを低速高圧縮モード0に切り替える(つまり、圧縮器2eの動作モードとして低速高圧縮モード0を決定する)ことが定義されている。
【0356】
このような第1動作モードテーブルによれば、圧縮効率監視部13において計算された辞書式符号化部11の圧縮効率及びライトバッファ監視部16cから出力された監視結果(ライトバッファ2gの空き容量)から圧縮器2eの動作モードを決定することができる。
【0357】
第1動作モードテーブルを参照して低速高圧縮モード0または低速高圧縮モード1が決定された場合、以降例えば64サイクルに渡って当該動作モードが維持された後、高速低圧縮モードに戻るものとする。なお、低速高圧縮モード0及び低速高圧縮モード1時の辞書式符号化部11及びエントロピー符号化部12の動作については前述した第6実施形態において説明した通りであるため、ここではその説明を省略する。以下の説明についても同様である。
【0358】
なお、上記した第1動作モードテーブルにおいて辞書式符号化部11の圧縮効率と比較される0.03は所定の閾値であり、他の値であってもよい。
【0359】
一方、第1動作モードテーブルにおいてライトバッファ2gの空き容量と比較される閾値(512Byte及び768Byte)は、圧縮器2eの動作モードが切り替えられることによって辞書式符号化部11のスループット(ライトバッファ2gから非圧縮データが引き抜かれる速度)が低下したとしても当該ライトバッファ2gがオーバーフローしないために必要となる空き容量に相当し、例えば「(高速低圧縮モード時のスループット-低速高圧縮モード時のスループット)×64」により計算される。
【0360】
具体的には、高速低圧縮モード時のスループットは16Byte/cycleであり、低速高圧縮モード0時のスループットは8Byte/cycleに相当する。このため、低速高圧縮モード0に決定されるためにライトバッファ2gの空き容量と比較される閾値(空き容量)は、(16-8)×64=512Byteである。同様に、高速低圧縮モード時のスループットは16Byte/cycleであり、低速高圧縮モード1時のスループットは4Byte/cycleに相当する。このため、低速高圧縮モード1に決定されるためにライトバッファ2gの空き容量と比較される閾値(空き容量)は、(16-4)×64=768Byteである。
【0361】
上記したように第1構成においては、辞書式符号化部11の圧縮効率及びライトバッファ2gの空き容量に基づいて適切な圧縮器2eの動作モードを決定することができる。
【0362】
ここでは、辞書式符号化部11の圧縮効率を用いるものとして説明したが、エントロピー符号化部12の圧縮効率及びライトバッファ2gの空き容量に基づいて圧縮器2eの動作モードを決定する構成であっても構わない。詳しい説明については省略するが、この場合には、図39に示す第1動作モードテーブルを用いることによって、エントロピー符号化部12の圧縮効率及びライトバッファ2gの空き容量から圧縮器2eの動作モードを決定することができる。
【0363】
なお、上記した第1構成は、辞書式符号化部11の圧縮効率、エントロピー符号化の圧縮効率及びライトバッファ2gの空き容量から圧縮器2eの動作モードを決定する構成であってもよい。
【0364】
次に、図40を参照して、辞書式符号化部11の圧縮効率と内部コマンドキュー2hに格納された書き込みコマンドの数とに基づいて動作モードを決定する構成(以下、第2構成と表記)について説明する。
【0365】
第2構成においては、図40に示すように、モード切替検知部16がモード切替判定部16a及び内部コマンドキュー監視部16dを含む。なお、図40においては、前述した第6実施形態において説明したモード格納部16bについては省略されている。
【0366】
内部コマンドキュー監視部16dは、内部コマンドキュー2hに格納されている書き込みコマンドの数を監視し、当該監視結果をモード切替判定部16aに出力する。
【0367】
モード切替判定部16aは、圧縮効率監視部13において計算された辞書式符号化部11の圧縮効率及び内部コマンドキュー監視部16dから出力された監視結果(内部コマンドキュー2hに格納されている書き込みコマンドの数)に基づいて、圧縮器2eの動作モードを決定する。
【0368】
なお、第2構成において、圧縮器2eの動作モードは、例えば図41に示す第2動作モードテーブルを参照して決定されるものとする。図41に示すように、第2動作モードテーブルには、辞書式符号化部11の圧縮効率及び内部コマンドキュー2hに格納されている書き込みコマンドの数に関する条件(動作モードの切り替え条件)及び当該条件を満たす場合に切り替えられる動作モード(つまり、切り替え後の動作モード)が格納されている。
【0369】
具体的には、第2動作モードテーブルにおいては、辞書式符号化部11の圧縮効率が0.03以上であり、かつ、内部コマンドキュー2hに格納されている書き込みコマンドの数が32以下であれば、圧縮器2eの動作モードを低速高圧縮モード0に切り替える(つまり、圧縮器2eの動作モードとして低速高圧縮モード0を決定する)ことが定義されている。
【0370】
また、第2動作モードテーブルにおいては、辞書式符号化部11の圧縮効率が0.03以上であり、かつ、内部コマンドキュー2hに格納されている書き込みコマンドの数が16以下であれば、圧縮器2eの動作モードを低速高圧縮モード1に切り替える(つまり、圧縮器2eの動作モードとして低速高圧縮モード1を決定する)ことが定義されている。
【0371】
このような第2動作テーブルによれば、辞書式符号化部11の圧縮効率が所定の閾値以上であり、内部コマンドキュー2h内の書き込みコマンドの数が少ない場合に高速低圧縮モードを低速高圧縮モードに切り替えることができる。なお、第2動作テーブルにおいて内部コマンドキュー2hに格納されている書き込みコマンドの数と比較される閾値は、低速高圧縮モード0と決定されるための閾値よりも低速高圧縮モード1と決定されるための閾値の方が大きければよく、図41に示す値と異なっていてもよい。
【0372】
第2動作モードテーブルを参照して低速高圧縮モード0または低速高圧縮モード1が決定された場合、上記したように以降例えば64サイクルに渡って当該動作モードが維持された後、高速低圧縮モードに戻るものとする。
【0373】
上記したように第2構成においては、辞書式符号化部11の圧縮効率及び内部コマンドキュー2hに格納されている書き込みコマンドの数に基づいて適切な圧縮器2eの動作モードを決定することができる。
【0374】
ここでは、辞書式符号化部11の圧縮効率を用いるものとして説明したが、エントロピー符号化部12の圧縮効率及び内部コマンドキュー2hに格納されている書き込みコマンドの数に基づいて圧縮器2eの動作モードを決定する構成であっても構わない。詳しい説明については省略するが、この場合には、図42に示す第2動作モードテーブルを用いることによって、エントロピー符号化部12の圧縮効率及び内部コマンドキュー2hに格納されている書き込みコマンドの数から圧縮器2eの動作モードを決定することができる。
【0375】
なお、上記した第2構成は、辞書式符号化部11の圧縮効率、エントロピー符号化部12の圧縮効率及び内部コマンドキュー2hに格納されている書き込みコマンドの数から圧縮器2eの動作モードを決定する構成であってもよい。
【0376】
次に、図43を参照して、辞書式符号化部11の圧縮効率と外部コマンドキュー101に格納された書き込みコマンドの数とに基づいて動作モードを決定する構成(以下、第3構成と表記)について説明する。
【0377】
第3構成においては、図43に示すように、モード切替検知部16がモード切替判定部16a及び外部コマンドキュー監視部16eを含む。なお、図43においては、前述した第6実施形態において説明したモード格納部16bについては省略されている。
【0378】
外部コマンドキュー監視部16eは、外部コマンドキュー101に格納されている書き込みコマンドの数を監視し、当該監視結果をモード切替判定部16aに出力する。
【0379】
モード切替判定部16aは、圧縮効率監視部13において計算された辞書式符号化部11の圧縮効率及び外部コマンドキュー監視部16eから出力された監視結果(外部コマンドキュー101に格納されている書き込みコマンドの数)に基づいて、圧縮器2eの動作モードを決定する。
【0380】
なお、第3構成において、圧縮器2eの動作モードは、例えば図44に示す第3動作モードテーブルを参照して決定されるものとする。図44に示すように、第3動作モードテーブルには、辞書式符号化部11の圧縮効率及び外部コマンドキュー101に格納されている書き込みコマンドの数に関する条件(動作モードの切り替え条件)及び当該条件を満たす場合に切り替えられる動作モード(つまり、切り替え後の動作モード)が格納されている。
【0381】
具体的には、第3動作モードテーブルにおいては、辞書式符号化部11の圧縮効率が0.03以上であり、かつ、外部コマンドキュー101に格納されている書き込みコマンドの数が64以下であれば、圧縮器2eの動作モードを低速高圧縮モード0に切り替える(つまり、圧縮器2eの動作モードとして低速高圧縮モード0を決定する)ことが定義されている。
【0382】
また、第3動作モードテーブルにおいては、辞書式符号化部11の圧縮効率が0.03以上であり、かつ、内部コマンドキュー2hに格納されている書き込みコマンドの数が32以下であれば、圧縮器2eの動作モードを低速高圧縮モード1に切り替える(つまり、圧縮器2eの動作モードとして低速高圧縮モード1を決定する)ことが定義されている。
【0383】
このような第3動作テーブルによれば、辞書式符号化部11の圧縮効率が所定の閾値以上であり、外部コマンドキュー101内の書き込みコマンドの数が少ない場合に高速低圧縮モードを低速高圧縮モードに切り替えることができる。なお、第3動作テーブルにおいて外部コマンドキュー101に格納されている書き込みコマンドの数と比較される閾値は、低速高圧縮モード0と決定されるための閾値よりも低速高圧縮モード1と決定されるための閾値の方が大きければよく、図44示す値と異なっていてもよい。
【0384】
第3動作モードテーブルを参照して低速高圧縮モード0または低速高圧縮モード1が決定された場合、上記したように以降例えば64サイクルに渡って当該動作モードが維持された後、高速低圧縮モードに戻るものとする。
【0385】
上記したように第3構成においては、辞書式符号化部11の圧縮効率及び外部コマンドキュー101に格納されている書き込みコマンドの数に基づいて適切な圧縮器2eの動作モードを決定することができる。
【0386】
ここでは、辞書式符号化部11の圧縮効率を用いるものとして説明したが、エントロピー符号化部12の圧縮効率及び外部コマンドキュー101に格納されている書き込みコマンドの数に基づいて圧縮器2eの動作モードを決定する構成であっても構わない。詳しい説明については省略するが、この場合には、図45に示す第3動作モードテーブルを用いることによって、エントロピー符号化部12の圧縮効率及び外部コマンドキュー101に格納されている書き込みコマンドの数から圧縮器2eの動作モードを決定することができる。
【0387】
なお、上記した第3構成は、辞書式符号化部11の圧縮効率、エントロピー符号化部12の圧縮効率及び外部コマンドキュー101に格納されている書き込みコマンドの数から圧縮器2eの動作モードを決定する構成であってもよい。
【0388】
なお、図46に示すように、上記した第1~第3構成を組み合わせた構成としてもよい。詳しい説明については省略するが、図46に示す構成においては、モード切替検知部16がライトバッファ監視部16c、内部コマンドキュー監視部16d及び外部コマンドキュー監視部16eを含むことにより、モード切替判定部16aは、圧縮効率監視部13において計算された圧縮効率、ライトバッファ2gの空き容量、内部コマンドキュー2hに格納されている書き込みコマンドの数及び外部コマンドキュー101に格納されている書き込みコマンドの数に基づいて、圧縮器2eの動作モードを決定することができる。この場合、モード切替判定部16aは、例えば図47に示す動作モードテーブルを参照することにより圧縮器2eの動作モードを決定するものとする。
【0389】
また、エントロピー符号化部12の圧縮効率、ライトバッファ2gの空き容量、内部コマンドキュー2hに格納されている書き込みコマンドの数及び外部コマンドキュー101に格納されている書き込みコマンドの数に基づいて、圧縮器2eの動作モードを決定する構成であってもよく、この場合は図48に示す動作モードテーブルを参照すればよい。
【0390】
更に、辞書式符号化部11の圧縮効率、エントロピー符号化部12の圧縮効率、ライトバッファ2gの空き容量、内部コマンドキュー2hに格納されている書き込みコマンドの数及び外部コマンドキュー101に格納されている書き込みコマンドの数に基づいて、圧縮器2eの動作モードを決定する構成であってもよい。
【0391】
次に、図49を参照して、辞書式符号化部11の圧縮効率とガベージコレクション(GC)の実施状況とに基づいて動作モードを決定する構成(以下、第4構成と表記)について説明する。
【0392】
第4構成においては、図49に示すように、モード切替検知部16がモード切替判定部16a及びGC監視部16fを含む。なお、図49においては、前述した第6実施形態において説明したモード格納部16bについては省略されている。
【0393】
ここで、メモリシステム1(SSD)においては、NAND型フラッシュメモリ3(不揮発性メモリ)の不要な記憶領域を解放するためにガベージコレクションが実施されるが、当該ガベージコレクションにおいては、NAND型フラッシュメモリ3(のメモリセルアレイ)上のデータを読み出して、別の位置に書き戻す処理が実行される。このため、ガベージコレクションが実行される際には、当該ガベージコレクションに起因するNAND型フラッシュメモリ3への書き込み処理(つまり、GC用の書き込みコマンド)が発生する。なお、図49に示す内部コマンドキュー2h内に表記されている「G」は、内部コマンドキュー2hに格納されているGC用の書き込みコマンドを表している。
【0394】
このため、第4構成において、GC監視部16fは、ガベージコレクションの実施状況を把握するために、内部コマンドキュー2hに格納されている全ての書き込みコマンド(ホスト100から発行された書き込みコマンド及びGC用の書き込みコマンド)に対するGC用の書き込みコマンドの数の割合を監視し、当該監視結果をモード切替判定部16aに出力する。
【0395】
モード切替判定部16aは、圧縮効率監視部13において計算された辞書式符号化部11の圧縮効率及びGC監視部16fから出力された監視結果(GC用の書き込みコマンドの数の割合)に基づいて、圧縮器2eの動作モードを決定する。
【0396】
なお、第4構成においては、例えば辞書式符号化部11の圧縮効率が所定の閾値以上であり、かつ、GC用の書き込みコマンドの数の割合が第1閾値以上である場合に、圧縮器2eの動作モードを低速高圧縮モード0に切り替える(つまり、圧縮器2eの動作モードとして低速高圧縮モード0を決定する)。また、例えば辞書式符号化部11の圧縮効率が所定の閾値以上であり、かつ、GC用の書き込みコマンドの数の割合が第1閾値よりも大きい第2閾値以上である場合に、圧縮器2eの動作モードを低速高圧縮モード1に切り替える(つまり、圧縮器2eの動作モードとして低速高圧縮モード1を決定する)。なお、GC用の書き込みコマンドの数の割合が閾値以上であることは、圧縮器2eに対する非圧縮データの入力スループット量が内部コマンドキュー2hに格納されている書き込みコマンドの数から想定される量よりも低くなることを意味する。ここではガベージコレクションを実施する際に圧縮データの伸張及び再圧縮を行わない(つまり、圧縮データのままコピーする)ことを前提としているため、GC用の書き込みコマンドの数の割合が大きい場合には圧縮器2eに対する非圧縮データのスループットが低下する。
【0397】
上記したように圧縮器2eの動作モードとして低速高圧縮モード0または低速高圧縮モード1が決定された場合、以降例えば64サイクルに渡って当該動作モードが維持された後、高速低圧縮モードに戻るものとする。
【0398】
上記したように第4構成においては、辞書式符号化部11の圧縮効率及びGC用の書き込みコマンドの数(の割合)に基づいて適切な圧縮器2eの動作モードを決定することができる。
【0399】
ここでは、辞書式符号化部11の圧縮効率を用いるものとして説明したが、エントロピー符号化部12の圧縮効率及びGC用の書き込みコマンドの数に基づいて圧縮器2eの動作モードを決定する構成であっても構わない。
【0400】
なお、上記した第4構成は、辞書式符号化部11の圧縮効率、エントロピー符号化部12の圧縮効率及びGC用の書き込みコマンドの数から圧縮器2eの動作モードを決定する構成であってもよい。
【0401】
本実施形態においては、辞書式符号化部11の圧縮効率と、ライトバッファ2gの空き容量、内部コマンドキュー2hに格納されている書き込みコマンドの数、外部コマンドキュー101に格納されている書き込みコマンドの数及びGC用の書き込みコマンドの数のうちの少なくとも1つとに基づいて圧縮器2eの動作モードを決定する構成(第1~第4構成)について説明したが、圧縮器2eの動作モードは、例えば書き込みコマンドにおいて指定された検索回数に基づいて決定されても構わない。
【0402】
以下、図50を参照して、辞書式符号化部11の圧縮効率と書き込みコマンドにおいて指定された検索回数に基づいて動作モードを決定する構成(以下、第5構成と表記)について説明する。
【0403】
第5構成においては、ホスト100が外部コマンドキュー101に書き込みコマンドを発行する際、対応する書き込みコマンドについて検索回数(ヒストリバッファ11dに対する検索回数)を指定することができるものとする。この場合、書き込みコマンドには回数指定フィールド101aが設けられており、モード切替判定部16aは、当該回数指定フィールド101aにおいて設定(指定)されている検索回数に基づいて圧縮器2eの動作モードを決定する。
【0404】
具体的には、例えば辞書式符号化部11の圧縮効率が所定の閾値以上であり、回数指定フィールドに設定されている検索回数が2回である場合、モード切替判定部16aは、圧縮器2eの動作モードとして低速高圧縮モード0を決定することができる。また、例えば辞書式符号化部11の圧縮効率が所定の閾値以上であり、回数指定フィールド101aに設定されている検索回数が4回である場合、モード切替判定部16aは、圧縮器2eの動作モードとして低速高圧縮モード1を決定することができる。
【0405】
なお、第5構成においては、圧縮器2eの動作モードを決定する際に例えば辞書式符号化部11の圧縮効率を考慮するか否かをフラグを用いて設定することができるものとする。
【0406】
これによれば、例えば辞書式符号化部11の圧縮効率を考慮しないことを示すフラグが設定されている場合には、当該圧縮効率を考慮することなく、回数指定フィールド101aに設定されている検索回数のみに基づいて圧縮器2eの動作モードを決定することができる。
【0407】
なお、上記した回数指定フィールド101aは、内部コマンドキュー2hに格納されている書き込みコマンドから参照することができるものとする。
【0408】
上記したように圧縮器2eの動作モードとして低速高圧縮モード0または低速高圧縮モード1が決定された場合、以降例えば64サイクルに渡って当該動作モードが維持された後、高速低圧縮モードに戻るものとする。
【0409】
上記したように第5構成においては、辞書式符号化部11の圧縮効率及び書き込みコマンドにおいて指定された検索回数に基づいて適切な圧縮器2eの動作モードを決定することができる。
【0410】
ここでは、書き込みコマンドにおいて指定された検索回数に基づいて圧縮器2eの動作モードを決定するものとして説明したが、例えば書き込みコマンド(回数指定フィールド101a)において指定されたソート回数(頻度テーブルのソート回数)に基づいて圧縮器2eの動作モードを決定する構成としてもよい。この場合、書き込みコマンドに指定されたソート回数が2回である場合、モード切替判定部16aは、圧縮器2eの動作モードとして低速高圧縮モード0を決定することができる。また、書き込み指定コマンドに指定されたソート回数が4回である場合、モード切替判定部16aは、圧縮器2eの動作モードとして低速高圧縮モード1を決定することができる。
【0411】
また、ここでは辞書式符号化部11の圧縮効率を用いるものとして説明したが、エントロピー符号化部12の圧縮効率を用いて圧縮器2eの動作モードを決定する構成であっても構わない。
【0412】
なお、辞書式符号化部11の圧縮効率、エントロピー符号化部12の圧縮効率及び書き込みコマンドに指定された検索回数またはソート回数から圧縮器2eの動作モードを決定する構成であってもよい。
【0413】
上記したように本実施形態においては、圧縮効率(辞書式符号化部11またはエントロピー符号化部12の圧縮効率)と、ライトバッファ2gの空き容量、内部コマンドキュー2hに格納されている書き込みコマンドの数、外部コマンドキュー101に格納されている書き込みコマンドの数及びGC用の書き込みコマンドの数のうちの少なくとも1つとに基づいて圧縮器2eの動作モードを決定することにより、圧縮器2e(辞書式符号化部11及びエントロピー符号化部12)を適切な動作モードで動作させることができる。
【0414】
また、本実施形態においては、書き込みコマンドにおいて指定された検索回数またはソート回数に基づいて動作モードが決定されても構わない。このような構成によれば、指定された検索回数及びソート回数に従った動作を圧縮器2eに行わせることが可能となる。
【0415】
なお、本実施形態においては第1~第5構成について主に説明したが、当該第1~第5構成は、適宜、組み合わせても構わない。
【0416】
更に、本実施形態においては、辞書式符号化部11及びエントロピー符号化部12が同一の動作モードで動作することを想定しているが、当該辞書式符号化部11及びエントロピー符号化部12の各々に対して異なる動作モードが決定されるような構成であっても構わない。この場合、例えば辞書式符号化部11の圧縮効率に基づいて辞書式符号化部11の動作モードを決定し、エントロピー符号化部12の圧縮効率に基づいてエントロピー符号化部12の動作モードを決定するような構成としても構わない。
【0417】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものである。
【符号の説明】
【0418】
1…メモリシステム、2…コントローラ、2a…ホストインタフェース、2b…CPU、2c…NANDインタフェース、2d…DRAMインタフェース、2e…圧縮器、2f…伸張器、2g…ライトバッファ、2h…内部コマンドキュー、3…NAND型フラッシュメモリ(不揮発性メモリ)、4…DRAM、11…辞書式符号化部、11a…第1辞書式符号化部、11b…第2辞書式符号化部、11c…第3辞書式符号化部、11d…ヒストリバッファ、11e…検索エンジン、11f…ハッシュテーブル、11g…ハッシュ計算器、11h…セレクタ、11i…比較器、11j…マッチ結果選択部、11k…検索エンジン制御部、12…エントロピー符号化部、12a…頻度テーブル生成部、12b…符号化テーブル生成部、12c…ハフマン符号化部、12d…バッファ、12e…類似度計算部、12f…圧縮性能推定部、12g…頻度テーブル、12h,12i…符号化テーブル、12j…頻度テーブルソート回路、12k…ソート回路制御部、13…圧縮効率監視部、13a…平均マッチ長計算部、13b…第1圧縮性能見積もり部、13c…第1消費電力見積もり部、13d…第1圧縮効率計算部、13e…平均符号長計算部、13f…第2圧縮性能見積もり部、13g…第2消費電力見積もり部、13h…第2圧縮効率計算部、13i…第1決定部、13j…第2決定部、13k…第3消費電力見積もり部、13l…第4消費電力見積もり部、14…ゲーティング制御部、14a…第1ゲーティング閾値決定部、14b…第2ゲーティング閾値決定部、14c…第1ゲーティング判定部、14d…第2ゲーティング判定部、15…パターン分類部、15a…バッファ、15b…平均マッチ長推定部、15c…ヒストリバッファ、15d…辞書探索部、15e…平均マッチ長計算部、15f…平均符号長推定部、15g…頻度テーブル、15h…平均符号長計算部、15i…分類部、16…モード切替検知部、16a…モード切替判定部、16b…モード格納部、16c…ライトバッファ監視部、16d…内部コマンドキュー監視部、16e…外部コマンドキュー監視部、16f…GC監視部、100…ホスト、101…外部コマンドキュー、101a…回数指定フィールド、102…CPU。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19
図20
図21
図22
図23
図24
図25
図26
図27
図28
図29
図30
図31
図32
図33
図34
図35
図36
図37
図38
図39
図40
図41
図42
図43
図44
図45
図46
図47
図48
図49
図50