JP7010683B2 - データ処理装置、メモリシステム及びデータ処理方法 - Google Patents

データ処理装置、メモリシステム及びデータ処理方法 Download PDF

Info

Publication number
JP7010683B2
JP7010683B2 JP2017235923A JP2017235923A JP7010683B2 JP 7010683 B2 JP7010683 B2 JP 7010683B2 JP 2017235923 A JP2017235923 A JP 2017235923A JP 2017235923 A JP2017235923 A JP 2017235923A JP 7010683 B2 JP7010683 B2 JP 7010683B2
Authority
JP
Japan
Prior art keywords
data
address
unit
adr
predicted value
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2017235923A
Other languages
English (en)
Other versions
JP2019102027A (ja
Inventor
琢也 松尾
淳 松村
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Kioxia Corp
Original Assignee
Kioxia Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Kioxia Corp filed Critical Kioxia Corp
Priority to JP2017235923A priority Critical patent/JP7010683B2/ja
Priority to US16/115,237 priority patent/US10686468B2/en
Publication of JP2019102027A publication Critical patent/JP2019102027A/ja
Application granted granted Critical
Publication of JP7010683B2 publication Critical patent/JP7010683B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/40Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/40Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
    • H03M7/42Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code using table look-up for the coding or decoding process, e.g. using read-only memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • G06F9/3806Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/3068Precoding preceding compression, e.g. Burrows-Wheeler transformation
    • H03M7/3071Prediction
    • H03M7/3075Space
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/60General implementation details not specific to a particular type of compression
    • H03M7/6064Selection of Compressor
    • H03M7/607Selection between different types of compressors
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/61Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Memory System (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Description

以下の実施形態は、一般的に、データ処理装置、メモリシステム及びデータ処理方法に関する。
通常、記憶装置は、データ管理のために、ホストやプログラム等がデータにアクセスする際に使用する論理アドレスと、実際にデータが格納されているデバイス上の物理位置を示す物理アドレスとを対応させるためのアドレス変換テーブル(論物変換テーブルともいう)を保持している。
特開2005-301885号公報 特開2010-146326号公報 特開2013-196115号公報
本発明の一つの実施形態は、論物変換テーブルのデータ量を削減することが可能なデータ処理装置、メモリシステム及びデータ処理方法を提供することを目的とする。
一実施形態によれば、複数の第1データそれぞれと複数の第2データそれぞれとの対応関係に関するデータを圧縮するデータ処理装置は、複数の符号化処理のうちのいずれかを用いて前記第2データそれぞれを符号化することで、前記第2データそれぞれの符号化データを生成する圧縮部と、前記複数の第2データのうちの1つを選択し、前記選択中の第2データに対して第1予測値を求める第1の予測部と、前記圧縮部が前記選択中の第2データに対して実行する符号化処理を前記第1予測値に基づいて前記複数の符号化処理のなかから決定する決定部とを備え、前記圧縮部は、前記決定部で決定された符号化処理に従って前記第2データそれぞれを符号化することで、前記対応関係に関するデータの圧縮データを生成する。
図1は、第1の実施形態に係るデータ処理装置の概略構成例を示すブロック図である。 図2は、第1の実施形態に係る入力データの入力から圧縮データの出力までの流れの一例を説明するための図である。 図3は、第1の実施形態に係るデータ処理装置が実行する圧縮動作の一例を示すフローチャートである。 図4は、第1の実施形態に係る予測値算出動作の一例を示すフローチャートである。 図5は、第1の実施形態に係る符号化処理決定動作の一例を示すフローチャートである。 図6は、第1の実施形態に係る圧縮動作の一例を示すフローチャートである。 図7は、第2の実施形態に係る予測値算出動作の一例を示すフローチャートである。 図8は、第3の実施形態に係る入力データの入力から圧縮データの出力までの流れの一例を説明するための図である。 図9は、第3の実施形態に係る予測値算出動作の一例を示すフローチャートである。 図10は、第4の実施形態に係るデータ処理装置の概略構成例を示すブロック図である。 図11は、第4の実施形態に係るデータ処理装置が実行する伸張動作の一例を示すフローチャートである。 図12は、第4の実施形態に係る解析動作の一例を示すフローチャートである。 図13は、第4の本実施形態に係る予測値算出動作の一例を示すフローチャートである。 図14は、第4の本実施形態に係る予測値算出動作の他の一例を示すフローチャートである。 図15は、第4の本実施形態に係る予測値算出動作の更に他の一例を示すフローチャートである。 図16は、第4の実施形態に係る伸張動作の一例を示すフローチャートである。 図17は、第5の実施形態に係るメモリシステムの概略構成例を示すブロック図である。 図18に、第5の実施形態に係るメモリシステムのより具体的な構成例を示すブロック図である。
以下に添付図面を参照して、実施形態に係るデータ処理装置、メモリシステム及びデータ処理方法を詳細に説明する。なお、以下の実施形態により本発明が限定されるものではない。
(第1の実施形態)
まず、第1の実施形態について、図面を参照して詳細に説明する。図1は、第1の実施形態に係るデータ処理装置の概略構成例を示すブロック図である。図1に示すように、第1の実施形態に係るデータ処理装置100は、予測部101、決定部102及び圧縮部103を備える。予測部101、決定部102及び圧縮部103は、例えばSoC(System-on-a-Chip)等のハードウェアで実現されてもよい。
データ処理装置100には、圧縮対象のデータを含むデータ(以下、入力データという)が入力される。圧縮対象のデータは、例えば、メモリに関する物理アドレス空間上の物理アドレスと論理アドレス空間上の論理アドレスとの対応関係を保持するルックアップテーブル(以下、論物変換テーブルという)のような、互いに関連するデータの対応関係に関するデータの一部又は全部である。例えば入力データを論物変換テーブルとした場合、圧縮対象のデータを、論物変換テーブルに含まれる一部又は全部の物理アドレスとすることができる。以下では、圧縮対象のデータを、論物変換テーブルにおける物理アドレスとした場合を例に挙げて説明する。その場合、以下の説明におけるアドレスデータとは、論理アドレスに対応付けられた物理アドレスを意味する。また、圧縮対象のデータを物理アドレスとした場合、入力データに論理アドレスが含まれていることは必須ではない。入力データに論理アドレスを含めない場合、入力データ中の物理アドレスに対応する論理アドレスは、別途所定のメモリを用いて管理されてもよいし、後述する圧縮部103が生成する圧縮データに「論理アドレス0x00000000から0xFFFFFFFFまでの物理アドレス」や「論理アドレス0x00000000から1000個分の物理アドレス」などのメタデータを付加する構成により管理されてもよい。
予測部101は、データ処理装置100に入力された入力データに含まれる圧縮対象のデータ(アドレスデータ)に対する予測値を算出する。具体的には、予測部101は、入力データにおける複数のアドレスデータを、例えばラウンドロビン方式に従って順番に処理対象のデータとし、現時点で処理対象としているアドレスデータの予測値を、入力データにおける他のアドレスデータに基づいて算出する。例えば、予測部101は、現時点で処理対象としているアドレスデータの予測値を、当該アドレスデータよりも前に処理対象とされて予測値が算出されたアドレスデータ(以下、処理済みアドレスという)に基づいて算出する。なお、予測値とは、処理対象のアドレスデータとして予測された物理アドレスである。
例えば、予測部101は、n(nは1以上の整数)番目のアドレスデータadr(n)の予測値pred(n)を、当該アドレスデータadr(n)よりm(mは1以上n-1以下の整数)つ前に処理された処理済みアドレスadr(n-m)に基づいて算出する。これにより算出される予測値pred(n)は、例えば、adr(n-m)+α(αは任意の値)とすることができる。具体的には、mが1である場合を例に挙げると、予測部101は、処理対象であるアドレスデータadr(n)の直前に処理された処理済みアドレスadr(n-1)に基づいて、アドレスデータadr(n)の予測値pred(n)(=adr(n-1)+α)を算出する。
ただし、処理対象のアドレスデータが1番目のアドレスデータadr(1)である場合、予測値算出の基となる処理済みアドレスが存在しない。そこで、そのような場合には、1番目のアドレスデータadr(1)に対する予測値pred(1)に、予め定めておいた所定の予測値を用いることとしてもよいし、1番目のアドレスデータadr(1)に対しては予測値を求めないこととしてもよい。
また、mは固定された値でなくてもよい。例えば入力データにおける複数のアドレスデータを2以上のグループに区分けし、それぞれのグループに属するアドレスデータに対して同じ処理済みアドレスを使用して予測値が算出されるように、mが設定されてもよい。また、入力データにおける1番目のアドレスデータadr(1)から得られた処理済みアドレスadr(1)に基づいて、2番目以降のアドレスデータadr(n)に対する予測値pred(n)(=ard(1)+α)が算出されてもよい。その場合、mは、処理対象のアドレスデータadr(n)と1番目のアドレスデータadr(1)との処理順序の距離、すなわち、m=n-1となる。
決定部102は、処理対象のアドレスデータadr(n)と予測部101によって算出された予測値pred(n)との差分値diff(n)に基づいて、圧縮部103が実行する符号化処理を決定する。例えば決定部102は、差分値diff(n)の絶対値を閾値判定することで、圧縮部103が実行する符号化処理を決定する。その場合、決定部102は、例えば、差分値diff(n)の絶対値が予め設定しておいた閾値以下であれば第1の符号化処理を圧縮部103が当該アドレスデータadr(n)に対して実行する符号化処理として決定し、差分値diff(n)の絶対値が閾値よりも大きければ第1の符号化処理とは異なる第2の符号化処理を圧縮部103が当該アドレスデータadr(n)に対して実行する符号化処理として決定する。
なお、閾値判定に用いる閾値は、予め定められた値であってよい。また、閾値は、ビット数(N(Nは自然数)ビット)であってもよいし、実数値であってもよい。さらに、閾値は、動作の途中で変更されてもよい。例えば、動作の過程で差分値diff(n)の絶対値が閾値(Nビット)以下となった判定結果が一定回数以上連続した場合、決定部102は、閾値を1デクリメントしてN-1ビットとし、その後の動作において、差分値diff(n)の絶対値が閾値(N-1ビット)より大きくなった場合に、閾値をNビットにリセットするように動作してもよい。
また、決定部102は、差分値diff(n)が0と等しい場合には、第1及び第2の符号化処理とは異なる第3の符号化処理を、圧縮部103が当該アドレスデータadr(n)に対して実行する符号化処理として決定してもよい。また、例えば、決定部102は、不良ブロックのアドレスなど、特定のアドレスが処理対象のアドレスデータである場合には、上述した符号化処理とは異なる他の符号化処理(第4の符号化処理という)を、圧縮部103の符号化処理として決定してもよい。
さらに、決定部102は、処理対象のアドレスデータadr(n)に対して設定された符号化処理を特定するための情報を、各アドレスデータadr(n)に対して設定する。この情報には、例えばフラグ(以下、処理フラグflag(n)という)を用いることができる。
処理フラグflag(n)には、圧縮部103が実行する符号化処理を個別に特定するために必要十分なビット数のフラグが用いられる。例えば、圧縮部103が3種類の符号化処理を実行する場合、処理フラグflag(n)には、3種類以上の値を取ることが可能な2ビットのフラグを用いることができる。以下の説明では、例として、処理フラグflag(n)に2ビットフラグを用い、第1の符号化処理を示す処理フラグflag(n)を“00”とし、第2の符号化処理を示す処理フラグflag(n)を“01”とし、第3の符号化処理を示すフラグを“10”とする。
圧縮部103は、決定部102で決定された符号化処理に従って入力データを圧縮し、それにより得られた圧縮データを出力する。具体的には、圧縮部103は、入力データに含まれるアドレスデータadr(n)それぞれに対して決定部102が決定した符号化処理(第1の符号化処理、第2の符号化処理、第3の符号化処理等のいずれか)を実行することで、入力データよりもデータ量が削減された圧縮データを生成し、この生成した圧縮データを出力する。
例えば、第1の符号化処理では、圧縮部103は、処理対象のアドレスデータadr(n)と予測部101によって算出された予測値pred(n)との差分値diff(n)を符号化する。具体的には、圧縮部103は、処理対象のアドレスデータadr(n)と予測値pred(n)との差分値diff(n)と、当該アドレスデータadr(n)に対して設定された処理フラグflag(n)(=00)とを、処理対象のアドレスデータadr(n)に対して実行した第1の符号化処理の結果(符号化データ)として出力する。
また、第2の符号化処理では、圧縮部103は、処理対象のアドレスデータadr(n)を符号化する。具体的には、圧縮部103は、処理対象のアドレスデータadr(n)自体と、当該アドレスデータadr(n)に対して設定された処理フラグflag(n)(=01)とを、処理対象のアドレスデータadr(n)に対して実行した第2の符号化処理の結果(符号化データ)として出力する。
さらに、第3の符号化処理では、圧縮部103は、処理対象のアドレスデータadr(n)に対して設定された処理フラグflag(n)を符号化する。すなわち、圧縮部103は、処理対象のアドレスデータadr(n)に対して設定された処理フラグflag(n)(=10)を、処理対象のアドレスデータadr(n)に対して実行した第3の符号化処理の結果(符号化データ)として出力する。
次に、データ処理装置100が入力データを入力して圧縮データを出力するまでの流れを、図2に示す例を用いて説明する。なお、図2に示す例では、入力データを、論理アドレス1~10それぞれに対して対応付けられた物理アドレスとする。また、m=1、α=1とし、決定部102の閾値判定で用いられる閾値を2ビットとする。さらに、物理アドレス0xFFFFFFFFを無効アドレスとする。
入力データの生成(又は抽出)に用いられる論物変換テーブルにおいて、論理アドレス1~3には、連続する物理アドレス0x00000000~0x00000002が対応付けられている。また、論理アドレス4~6には、無効アドレスである物理アドレス0xFFFFFFFFがそれぞれ対応付けられている。さらに、論理アドレス7~8には、連続する物理アドレス0x00000006~0x00000007が対応付けられている。さらにまた、論理アドレス9及び10には、1つ飛びの物理アドレス0x00000009及び0x0000000Bが対応付けられている。
データ処理装置100に入力された入力データは、予測部101、決定部102及び圧縮部103に直接又は他の部を経由してそれぞれ入力される。予測部101は、各物理アドレスを処理対象のアドレスデータadr(n)(本説明では、nは1~10までの整数)として、例えばラウンドロビン方式に従って順番に選択する。そして、予測部101は、選択中であるアドレスデータadr(n)に対する予測値pred(n)(=adr(n-m)+α)を順次算出する。図2に示す例では、論理アドレス2~4に対応付けられた物理アドレスadr(2)~adr(4)については、連続する物理アドレス0x00000001~0x00000003が予測値pred(2)~pred(4)として算出され、論理アドレス5~7に対応付けられた物理アドレスadr(5)~adr(7)には物理アドレス0x00000000が予測値pred(5)~pred(7)として算出され、論理アドレス8~9に対応付けられた物理アドレスadr(8)~adr(9)には連続する物理アドレス0x00000007~0x00000008が予測値pred(8)~pred(9)として算出され、論理アドレス10に対応付けられた物理アドレスadr(10)には直前の物理アドレスadr(9)(=0x00000009)の次の物理アドレス0x0000000Aが予測値pred(9)として算出される。なお、nが1である場合、すなわち、先頭のアドレスデータadr(1)に関しては、それよりも前に処理されたアドレスデータが存在しない。そのため本例では、予測部101は、アドレスデータadr(1)の予測値の算出を行なわず、例えば予め設定しておいた所定の予測値がアドレスデータadr(1)の予測値pred(1)として選択される。その後、予測部101は、各アドレスデータadr(n)に対して算出又は選択した予測値pred(n)を決定部102に入力する。
決定部102は、予測部101によって算出された予測値pred(n)をアドレスデータadr(n)から引算することで、それぞれのアドレスデータadr(n)に関する差分値diff(n)(=adr(n)-pred(n))を算出する。なお、本例では、先頭のアドレスデータadr(1)に対する予測値pred(1)として、差分値diff(1)が閾値(本例では2)以上となる値が設定されているものとする。
つづいて、決定部102は、算出した差分値diff(n)を閾値判定し、その結果に基づいて、それぞれのアドレスデータadr(n)に対して圧縮部103が実行する符号化処理を特定するための処理フラグflag(n)を特定する。
その後、決定部102は、各アドレスデータadr(n)に対して算出した差分値diff(n)と、各アドレスデータadr(n)に対して特定した処理フラグflag(n)とを決定部102に入力する。
圧縮部103は、入力された各アドレスデータadr(n)に対する符号化処理を各アドレスデータadr(n)に対する処理フラグflag(n)に従って特定する。つづいて、圧縮部103は、個々のアドレスデータadr(n)に対して特定した符号化処理に従って、個々のアドレスデータadr(n)の符号化処理を実行する。図2に示す例では、例えば、第1の符号化処理が特定されたアドレスデータadr(9)及びadr(10)については、圧縮部103は、処理フラグflag(=00)と、差分値diff(9)又はdiff(10)とを符号化データcd(9)及びcd(10)として出力する第1の符号化処理を実行する。また、第2の符号化処理が特定されたアドレスデータadr(1),adr(4),adr(5),adr(6)及びadr(7)については、圧縮部103は、処理フラグflag(=01)と、アドレスデータadr(1)、adr(4),adr(5),adr(6)又はadr(7)とを符号化データcd(1)、cd(4),cd(5),cd(6)及びcd(7)として出力する第2の符号化処理を実行する。さらに、第3の符号化処理が特定されたアドレスデータadr(2),adr(3)及びadr(8)については、圧縮部103は、処理フラグflag(=10)を符号化データcd(2)、cd(3)及びcd(8)として出力する第3の符号化処理を実行する。
以上のようにして圧縮部103から出力された符号化データcd(n)よりなる圧縮データは、データ処理装置100に入力された入力データよりもデータ量が削減されたデータとなっている。なお、圧縮部103から出力された圧縮データは、例えばハフマン符号などの可変長符号化等で更に符号化されてもよい。それにより、さらにデータを圧縮してデータ量を削減することが可能となる。
次に、本実施形態に係るデータ処理装置100の動作例について、図面を用いて詳細に説明する。図3は、本実施形態に係るデータ処理装置が実行する圧縮動作の一例を示すフローチャートである。
図3に示すように、本実施形態に係る圧縮動作では、データ処理装置100は、まず、外部から圧縮対象のデータ(入力データ)を入力する(ステップS100)。次に、データ処理装置100は、入力データを予測部101に入力して、入力データにおける各アドレスデータadr(n)に対して予測値pred(n)を算出する(ステップS200)。次に、データ処理装置100は、入力データ及び予測値pred(n)を決定部102に入力し、決定部102において各アドレスデータadr(n)と予測値pred(n)との差分値diff(n)を算出し、算出した差分値diff(n)を閾値判定し、この判定結果に基づいて、入力データにおける各アドレスデータadr(n)に対する符号化処理を決定する(ステップS300)。次に、データ処理装置100は、入力データ、差分値diff(n)、及び各アドレスデータadr(n)に対して決定された符号化処理を特定するための処理フラグflag(n)を圧縮部103に入力し、処理フラグflag(n)で特定される符号化処理にて各アドレスデータadr(n)を符号化することで、入力データに対する圧縮データを生成する(ステップS400)。その後、データ処理装置100は、生成した圧縮データを出力し(ステップS500)、本動作を終了する。
つづいて、図3のステップS200において予測部101が実行する予測値算出動作について説明する。図4は、本実施形態に係る予測値算出動作の一例を示すフローチャートである。
図4に示すように、予測部101は、入力データを入力すると(ステップS201)、入力データにおける処理対象のアドレスデータを特定するための変数nに1を代入する(ステップS202)。
つぎに、予測部101は、nが1であるか否か、すなわち、処理対象となるアドレスデータadr(n)が先頭のアドレスデータadr(1)であるか否かを判定する(ステップS203)。nが1である場合(ステップS203のYES)、予測部101は、アドレスデータadr(1)に対する予測値として予め設定しておいた所定の予測値pred(1)を選択し、(ステップS204)、ステップS207へ進む。一方、nが1ではない場合(ステップS203のNO)、予測部101は、入力データにおけるn番目のアドレスデータadr(n)を処理対象として選択する(ステップS205)。つづいて、予測部101は、上述したように、例えば、選択されているアドレスデータadr(n)よりmつ前に処理された処理済みアドレスadr(n-m)に基づいて予測値pred(n)(=adr(n-m)+α)を算出し(ステップS206)、ステップS207へ進む。なお、本説明では、都合上、mが1であるとする。また、ステップS204では、予測部101は、予め設定しておいた所定の予測値pred(1)を先頭のアドレスデータadr(1)に対する予測値としたが、これに限定されず、例えば、アドレスデータadr(1)に対する予測値を無し(null)と決定してもよい。
ステップS207では、予測部101は、決定又は算出した予測値pred(n)を決定部102へ出力する。ただし、予測部101は、算出した予測値pred(n)を所定のメモリ領域にストックしておき、全てのアドレスデータadr(n)に対する予測値pred(n)の算出が完了した後に、ストックしておいた予測値pred(n)を一括して決定部102へ出力してもよい。つぎに、予測部101は、nがnの最大値n_max、すなわち、選択中のアドレスデータadr(n)が入力データにおける最後のアドレスデータadr(n_max)であるか否かを判定し(ステップS208)、nがnの最大値n_maxでない場合(ステップS208のNO)、ステップS209へ進み、変数nを1インクリメントして、ステップS203へリターンする。一方、nがnの最大値n_maxである場合(ステップS208のYES)、予測部101は、図3に示す動作へリターンする。
つづいて、図3のステップS300において決定部102が実行する符号化処理決定動作について説明する。図5は、本実施形態に係る符号化処理決定動作の一例を示すフローチャートである。なお、図5に示す動作、すなわち図3のステップS300の動作は、図4に示す予測部101の動作の実行中に並行して逐次実行される、いわゆるパイプライン処理であってよい。
図5に示すように、決定部102は、例えば予測部101を介して入力データを入力すると(ステップS301)、処理対象のアドレスデータを特定するための変数nに1を代入し(ステップS302)、入力データにおけるn番目のアドレスデータadr(n)を処理対象として選択する(ステップS303)。つづいて、決定部102は、選択中のアドレスデータadr(n)に対して算出された予測値pred(n)が予測部101から入力されるのを待機し(ステップS304のNO)、入力された場合(ステップS304のYES)、選択されているアドレスデータadr(n)と予測値pred(n)との差分値diff(n)を算出する(ステップS305)。なお、ステップS305において各アドレスデータadr(n)に対して算出された差分値diff(n)は、所定のメモリ領域に格納されて保持される。
次に、決定部102は、差分値diff(n)が0であるか否かを判定する(ステップS306)。差分値diff(n)が0であった場合(ステップS306のYES)、決定部102は、ステップS310へ進み、アドレスデータadr(n)に対する処理フラグflag(n)に、第3の符号化処理を指定する“10”を設定し、ステップS311へ進む。一方、差分値diff(n)が0でない場合(ステップS306のNO)、決定部102は、差分値diff(n)の絶対値に対する閾値判定を実行する(ステップS307)。
閾値判定の結果、差分値diff(n)の絶対値が閾値以下であった場合(ステップS307のYES)、決定部102は、ステップS308へ進み、アドレスデータadr(n)に対する処理フラグflag(n)に、第1の符号化処理を指定する“00”を設定し、ステップS311へ進む。一方、差分値diff(n)の絶対値が閾値よりも大きい場合(ステップS307のNO)、決定部102は、ステップS309へ進み、アドレスデータadr(n)に対する処理フラグflag(n)に、第2の符号化処理を指定する“01”を設定し、ステップS311へ進む。
なお、ステップS308~S310で設定された処理フラグflag(n)は、例えば不図示のフラグメモリにおいて管理される。
ステップS311では、決定部102は、各アドレスデータadr(n)に対して算出した差分値diff(n)と、各アドレスデータadr(n)に対して設定した処理フラグflag(n)とを圧縮部103へ出力する。つづいて、決定部102は、nがnの最大値n_maxであるか否かを判定し(ステップS312)、nがnの最大値n_maxでない場合(ステップS312のNO)、ステップS313へ進み、変数nを1インクリメントして、ステップS303へリターンする。一方、nがnの最大値n_maxである場合(ステップS312のYES)、決定部102は、図3に示す動作へリターンする。
つづいて、図3のステップS400において圧縮部103が実行する圧縮動作について説明する。図6は、本実施形態に係る圧縮動作の一例を示すフローチャートである。なお、図6に示す動作、すなわち図3のステップS400の動作は、図5に示す決定部102の動作の実行中に並行して逐次実行される、いわゆるパイプライン処理であってよい。
図6に示すように、圧縮部103は、例えば決定部102を介して入力データを入力すると(ステップS401)、処理対象のアドレスデータを特定するための変数nに1を代入し(ステップS402)、入力データにおけるn番目のアドレスデータadr(n)を処理対象として選択する(ステップS403)。
次に、圧縮部103は、選択中のアドレスデータadr(n)に対して特定された差分値diff(n)及び処理フラグflag(n)が決定部102から入力されるのを待機し(ステップS404のNO)、入力された場合(ステップS404のYES)、選択されているアドレスデータadr(n)の処理フラグflag(n)を確認する(ステップS405)。処理フラグflag(n)が“00”である場合(ステップS405のflag(n)=00)、圧縮部103は、当該アドレスデータadr(n)については、処理フラグflag(n)と差分値diff(n)とを符号化データcd(n)として出力する第1の符号化処理を実行し(ステップS406)、ステップS409へ進む。
また、処理フラグflag(n)が“01”である場合(ステップS405のflag(n)=01)、圧縮部103は、当該アドレスデータadr(n)については、処理フラグflag(n)とアドレスデータadr(n)とを符号化データcd(n)として出力する第2の符号化処理を実行し(ステップS407)、ステップS409へ進む。
さらに、処理フラグflag(n)が“10”である場合(ステップS405のflag(n)=10)、圧縮部103は、当該アドレスデータadr(n)については、処理フラグflag(n)を符号化データcd(n)として出力する第3の符号化処理を実行し(ステップS408)、ステップS409へ進む。
なお、ステップS406~S408で出力された符号化データは、所定のメモリ領域に格納されて保持される。
ステップS409では、圧縮部103は、nがnの最大値n_maxであるか否かを判定し、nがnの最大値n_maxでない場合(ステップS409のNO)、ステップS410へ進み、変数nを1インクリメントして、ステップS403へリターンする。一方、nがnの最大値n_maxである場合(ステップS409のYES)、圧縮部103は、図3に示す動作へリターンする。これにより、所定のメモリ領域内には、入力データを圧縮した圧縮データが蓄積される。
以上のように、本実施形態によれば、例えば、処理対象のアドレスデータadr(n)と予測値pred(n)とが一致する場合、又は、これらの差分値diff(n)が閾値以下である場合に、アドレスデータadr(n)を除外するか、又は、アドレスデータadr(n)を差分値diff(n)に置き換える符号化処理を実行する。その結果、入力データに対してデータ量が削減された圧縮データを生成することが可能となる。
例えば、物理アドレス空間上で連続する2つの物理アドレスを処理対象とし、2番目の物理アドレスの予測値を直前である1番目の物理アドレスを1インクリメントした物理アドレスとした場合には、2番目の物理アドレスと予測値との差分値diff(n)が0となるため、第3の符号化処理によって2番目の物理アドレスが処理フラグflag(n)に置き換えられる。その結果、論物変換テーブルのデータ量が削減される。
(第2の実施形態)
次に、第2の実施形態について、図面を参照して詳細に説明する。以下では、第1の実施形態と同様の説明についてはそれを引用することで重複する説明を省略し、第1の実施形態と異なる箇所に注目して説明する。
第2の実施形態に係るデータ処理装置は、第1の実施形態で例示したデータ処理装置100と同様の構成であってよい。すなわち、図1に示したように、第2の実施形態に係るデータ処理装置100は、予測部101、決定部102及び圧縮部103を備える。ただし、本実施形態では、予測部101の動作が以下のような動作となる。
本実施形態に係る予測部101は、処理対象のアドレスデータadr(n)に対する予測値pred(n)を算出する際、予測値算出の基となる処理済みアドレスadr(n-m)が有効データ(本説明では有効アドレス)か無効データ(本説明では無効アドレス)かに応じて異なる予測値pred(n)を算出する。
具体的には、予測部101は、例えば、処理済みアドレスadr(n-m)が有効アドレスであれば、処理済みアドレスadr(n-m)に第1の所定値αを加算することで、有効アドレス用の第1の予測値pred1(n)(=adr(n-m)+α)を算出する。一方、処理済みアドレスadr(n-m)が無効アドレスである場合、予測部101は、処理済みアドレスadr(n-m)に第1の所定値αとは異なる第2の所定値βを加算することで、無効アドレス用の第2の予測値pred2(n)(=adr(n-m)+β)を算出する。なお、第1の所定値αと同様、第2の所定値βは、任意の値であってよい。
例えば、m=1、α=1及びβ=0とした場合、予測値生成の基となる処理済みアドレスadr(n-m)は、処理対象のアドレスデータadr(n)の直前に処理されたアドレスデータadr(n-1)となる。そこで、直前の処理済みアドレスadr(n-1)が有効データであれば、予測部101は、直前の処理済みアドレスadr(n-1)に1(=α)を加算して第1の予測値pred1(n)(=adr(n-1)+1)を算出する。一方、直前の処理済みアドレスadr(n-1)が無効データであれば、予測部101は、直前の処理済みアドレスadr(n-1)をそのまま第2の予測値pred2(n)とする(β=0)。
このような予測値算出のアルゴリズムによれば、例えば、上述の例のように、m=1、α=1及びβ=0とした場合、物理アドレス空間において連続している有効アドレスが処理対象となる期間、及び、無効アドレスが連続して処理対象となる期間、これらの期間において2番目以降に処理対象とされるアドレスデータadr(n)に対して決定部102が算出する差分値diff(n)が0となる。その結果、これらのアドレスデータadr(n)に対する符号化処理として第3の符号化処理が決定されるため、圧縮データのデータ量をより削減することが可能となる。
なお、入力データにおける各アドレスデータadr(n)が有効アドレスであるか無効アドレスであるかについては、予め定義されているものとする。具体的には、無効アドレスとして特定のアドレスデータ(0xFFFFFFFF等)を設定しておいてもよいし、予め物理アドレス空間における無効アドレスを特定し、特定された無効アドレスを不図示のメモリ等で管理しておいてもよい。また、複数の無効アドレスがあってもよい。なお、無効アドレスとは、例えば、フリーブロックや無効データが格納されているブロックや、セル破壊などの不良等によって使用できないブロック等を示す物理アドレスである。
次に、本実施形態に係るデータ処理装置100の動作例について説明する。本実施形態に係るデータ処理装置100が実行する圧縮動作は、第1の実施形態において図3~図6を用いて例示した圧縮動作と同様であってよい。ただし、本実施形態では、予測部101が実行する予測値算出動作が、図7に示す動作に置き換えられる。
図7に示すように、本実施形態に係る予測部101が実行する予測値算出動作は、図4に示す動作と同様の動作において、図4におけるステップS206及びS207の動作がステップS221~S224に示す動作に置き換えられている。
すなわち、本動作では、予測部101は、選択したアドレスデータadr(n)が先頭のアドレスデータadr(1)でなく(ステップS203のNO)、入力データにおけるn番目のアドレスデータadr(n)を処理対象として選択すると(ステップS205)、つづいて、予測値pred(n)の算出に用いる処理済みアドレスadr(n-m)が有効アドレスであるか否かを判定する(ステップS221)。処理済みアドレスadr(n-m)が有効アドレスである場合(ステップS221のYES)、予測部101は、例えば第1の所定値αを用いることで、有効アドレス用の第1の予測値pred1(n)(=adr(n-m)+α)を算出し(ステップS222)、ステップS224へ進む。一方、処理済みアドレスadr(n-m)が無効アドレスである場合(ステップS221のNO)、予測部101は、例えば第2の所定値βを用いることで、無効アドレス用の第2の予測値pred2(n)(=adr(n-m)+β)を算出し(ステップS223)、ステップS224へ進む。ステップS224では、予測部101は、図4のステップS207と同様に、ステップS204で決定された所定の予測値pred(1)、又は、ステップS222若しくはS223で算出された第1の予測値pred1(n)若しくは第2の予測値pred2(n)を決定部102へ出力する。
以上のように、本実施形態によれば、予測値算出に用いる処理済みアドレスadr(n-m)が有効アドレスであるか無効アドレスであるかに応じて、予測値pred(n)の算出方法を適応的に切り替えることが可能となる。例えば、m=1、α=1及びβ=0とした場合、物理アドレス空間において連続している有効アドレスが処理対象となる期間、及び、無効アドレスが連続して処理対象となる期間、これらの期間において2番目以降に処理対象とされるアドレスデータadr(n)に対して決定部102が算出する差分値diff(n)が0となる。その結果、これらのアドレスデータadr(n)に対する符号化処理として第3の符号化処理が決定されるため、圧縮データのデータ量をより削減することが可能となる。
その他の構成、動作及び効果については、上述した実施形態と同様であるため、ここでは詳細な説明を省略する。
(第3の実施形態)
次に、第3の実施形態について、図面を参照して詳細に説明する。以下では、第1又は第2の実施形態と同様の説明についてはそれを引用することで重複する説明を省略し、第1又は第2の実施形態と異なる箇所に注目して説明する。
第3の実施形態に係るデータ処理装置は、第1及び2の実施形態で例示したデータ処理装置100と同様の構成であってよい。すなわち、図1に示したように、第3の実施形態のデータ処理装置100は、予測部101、決定部102及び圧縮部103を備える。ただし、本実施形態では、予測部101の動作が以下のような動作となる。
本実施形態に係る予測部101は、処理対象のアドレスデータadr(n)に対する予測値pred(n)を算出する際、第2の実施形態と同様に、予測値算出の基となる処理済みアドレスadr(n-m)が有効データ(本説明では有効アドレス)か無効データ(本説明では無効アドレス)かに応じて異なる予測値pred(n)を算出する。ただし、本実施形態では、処理済みアドレスadr(n-m)が無効アドレスであって、且つ、処理対象のアドレスデータadr(n)が有効アドレスである場合には、更に異なる予測値pred(n)を算出する。
具体的には、予測部101は、例えば、処理済みアドレスadr(n-m)が有効アドレスであれば、第2の実施形態と同様に、処理済みアドレスadr(n-m)に第1の所定値αを加算して第1の予測値pred1(n)を算出する。また、処理済みアドレスadr(n-m)が無効アドレスで、且つ、処理対象のアドレスデータadr(n)も無効アドレスである場合、予測部101は、処理済みアドレスadr(n-m)に第2の所定値βを加算して第2の予測値pred2(n)を算出する。さらに、処理済みアドレスadr(n-m)が無効アドレスで、且つ、処理対象のアドレスデータadr(n)が有効アドレスである場合、予測部101は、全ての処理済みアドレスのうちの直近の有効アドレスである処理済みアドレスadr(n-k)(kは1以上n未満の整数)に基づいて第3の予測値pred3(n)を算出する。例えば、予測部は、処理済みアドレスadr(n-k)に第3の所定値γを加算することで、第3の予測値pred3(n)を算出する。なお、第3の所定値γは、例えば、直近の有効アドレスである処理済みアドレスadr(n-k)から処理対象のアドレスデータadr(n)までの処理順序の距離Lとすることができる。
例えば、m=1、α=1、β=0及びγ=Lとした場合、予測値生成の基となる処理済みアドレスadr(n-m)は、処理対象のアドレスデータadr(n)の直前に処理されたアドレスデータadr(n-1)か、もしくは、直近の有効アドレスであるアドレスデータadr(n-k)となる。そこで、直前の処理済みアドレスadr(n-1)が有効アドレスであれば、予測部101は、直前の処理済みアドレスadr(n-1)に1(=α)を加算して第1の予測値pred1(n)(=adr(n-1)+1)を算出する。一方、直前の処理済みアドレスadr(n-1)が無効アドレスである場合、予測部101は、処理対象のアドレスデータadr(n)も無効アドレスであれば、直前の処理済みアドレスadr(n-1)をそのまま第2の予測値pred2(n)とし(β=0)、処理対象のアドレスデータadr(n)が有効アドレスであれば、処理済みアドレスのうちの直近の有効アドレスである処理済みアドレスadr(n-k)にL(=γ)を加算して第3の予測値pred3(n)(=adr(n-k)+L)を算出する。
ここで、本実施形態における、データ処理装置100が入力データを入力して圧縮データを出力するまでの流れを、図8に示す例を用いて説明する。図8に示す例では、第1の実施形態において図2を用いて説明した例と同様に、入力データが論物変換テーブルにおいて論理アドレス1~10に対応する物理アドレスであり、m=1、α=1、β=0、γ(=L)を直近の有効アドレスである処理済みアドレスadr(n-k)から処理対象のアドレスデータadr(n)までの処理順序の距離とし、決定部102の閾値判定で用いられる閾値を2ビットとする。また、物理アドレス0xFFFFFFFFを無効アドレスとする。
図2に示す例と同様に、入力データの生成(又は抽出)に用いられる論物変換テーブルにおいて、論理アドレス1~3には、連続する物理アドレス0x00000000~0x00000002が対応付けられ、論理アドレス4~6には、無効アドレスである物理アドレス0xFFFFFFFFがそれぞれ対応付けられている。また、論理アドレス7~8には、連続する物理アドレス0x00000006~0x00000007が対応付けられ、論理アドレス9及び10には、1つ飛びの物理アドレス0x00000009及び0x0000000Bが対応付けられている。
このような入力データに対し、予測部101は、処理対象のアドレスデータadr(n)を例えばラウンドロビン方式に従って順番に選択して予測値pred(n)を順次算出する。そこで、図8に示す例では、物理アドレスadr(2)~adr(4)及adr(8)~adr(10)については、直前の処理済みアドレスが有効アドレスであるので、直前の処理済みアドレスadr(1)~adr(3)及びadr(7)~adr(9)からそれぞれ予測値pred1(2)~pred1(4)及びpred1(8)~pred1(10)が算出される。一方、物理アドレスadr(5)~adr(6)については、直前の処理済みアドレスadr(4)~adr(5)が無効アドレスであり、且つ、当該物理アドレスadr(5)~adr(6)も無効アドレスであるので、直前の処理済みアドレスadr(4)~adr(5)からそれぞれ予測値pred2(5)~pred2(6)が算出される。さらに、物理アドレスadr(7)については、直前の処理済みアドレスadr(6)が無効アドレスであり、且つ、当該物理アドレスadr(7)が有効アドレスであるので、直近の有効アドレスである処理済みアドレスadr(3)から予測値pred3(7)が算出される。なお、この場合、処理対象の物理データadr(7)から直近の有効アドレスである処理済みアドレスadr(3)までの処理順序の距離Lが4であるため、第3の所定値γは4となる。
決定部102及び圧縮部103は、以上のようにして算出された予測値pred(n)に対し、第1の実施形態と同様の動作を実行することで、差分値diff(n)及び処理フラグflag(n)を求め、求められた処理フラグflag(n)に基づいてアドレスデータadr(n)に符号化処理を実行することで、圧縮データを生成する。したがって、図8に示す例では、アドレスデータadr(7)に対する差分値diff(7)が0となり、それにより、アドレスデータadr(7)に対する処理フラグflag(7)として、第3の符号化処理を示す“10”が設定される。
ただし、予測値算出のために直近の有効アドレスを用いたアドレスデータadr(n)に関しては、これを伸張する際に、予測値算出時に直近の有効アドレスを用いたことを特定できる必要がある。そこで、本実施形態では、図8における処理フラグflag(7)に例示するように、符号化処理を特定するための処理フラグ(本例では10)に、直近の有効アドレスを用いて予測値pred(n)を算出したことを示す情報を付加してもよい。この付加情報は、処理フラグと区別するために、例えば処理フラグとして使用されていない値(例えば“11”)を用いることができる。
次に、本実施形態に係るデータ処理装置100の動作例について説明する。本実施形態に係るデータ処理装置100が実行する圧縮動作は、第1の実施形態において図3~図6を用いて例示した圧縮動作と同様であってよい。ただし、本実施形態では、予測部101が実行する予測値算出動作が、図9に示す動作に置き換えられる。
図9に示すように、本実施形態に係る予測部101が実行する予測値算出動作は、図4に示す動作と同様の動作において、図4におけるステップS206及びS207の動作がステップS221~S223及びステップS241~S243に示す動作に置き換えられている。これらの動作において、ステップS221~S223の動作は、図7に示すステップS221~S223の動作と同様であってよい。
すなわち、本動作では、予測部101は、ステップS221の判断において、処理済みアドレスadr(n-m)が有効アドレスでない場合(ステップS221のNO)、処理対象のアドレスデータadr(n)が有効アドレスであるか否かを判定する(ステップS241)。アドレスデータadr(n)が有効アドレスでない場合(ステップS241のNO)、すなわち、処理済みアドレスadr(n-m)とアドレスデータadr(n)との両方が無効アドレスである場合、予測部101は、図7のステップS223に示す動作と同様に、例えば第2の所定値βを用いることで、無効アドレス用の第2の予測値pred2(n)(=adr(n-m)+β)を算出し(ステップS223)、ステップS243へ進む。一方、アドレスデータadr(n)が有効アドレスである場合(ステップS241のYES)、すなわち、処理済みアドレスadr(n-m)が無効アドレスであってアドレスデータadr(n)が有効アドレスである場合、予測部101は、全ての処理済みアドレスのうちの直近の有効アドレスである処理済みアドレスadr(n-k)に基づき、例えば第3の所定値γを用いることで、第3の予測値pred3(n)(=adr(n-k)+γ)を算出し(ステップS242)、ステップS243へ進む。ステップS243では、予測部101は、図4のステップS207と同様に、ステップS204で決定された所定の予測値pred(1)、又は、ステップS222、S223若しくはS242で算出された第1の予測値pred1(n)、第2の予測値pred2(n)若しくは第3予測値pred3(n)を決定部102へ出力する。
以上のように、本実施形態によれば、予測値算出に用いる処理済みアドレスadr(n-m)が無効アドレスである場合、処理対象のアドレスデータadr(n)が有効アドレスか無効アドレスかに応じて、予測値pred(n)の算出方法を適応的に切り替えることが可能となる。それにより、例えば処理済みアドレスadr(n-m)に無効アドレスが継続する状況において処理対象のアドレスデータadr(n)が無効アドレスから有効アドレスに切り替わった際には、直近の有効アドレスを用いて予測値pred(n)を算出することが可能となる。具体的には、例えば論物変換テーブルに登録された連続する有効アドレスの途中の一部が無効アドレスに書き換えられた場合であっても、無効アドレスから有効アドレスに切り替わった物理アドレスに対しては、直近の有効アドレスに基づいて予測値pred(n)を算出することが可能となる。その結果、符号化データcd(n)をより小さくすることができるため、圧縮データのデータ量をより削減することが可能となる。
その他の構成、動作及び効果については、上述した実施形態と同様であるため、ここでは詳細な説明を省略する。
(第4の実施形態)
次に、第4の実施形態について、図面を参照して詳細に説明する。第4の実施形態では、第1~第3の実施形態で例示したデータ処理装置100によって得られた圧縮データを伸張する構成を備えたデータ処理装置について、例を挙げて説明する。なお、以下では、第1~第3の実施形態のいずれかと同様の説明についてはそれを引用することで重複する説明を省略し、第1~第3の実施形態と異なる箇所に注目して説明する。
図10は、第4の実施形態に係るデータ処理装置の概略構成例を示すブロック図である。図10に示すデータ処理装置400において、入力データを圧縮するための構成である予測部101、決定部102及び圧縮部103は、第1~第3の実施形態のいずれかで例示した予測部101、決定部102及び圧縮部103と同様であってよい。ただし、説明の都合上、予測部101を、第1の予測部101と称する。
また、データ処理装置400は、圧縮データを伸張するための構成として、解析部404と、第2の予測部405と、伸張部406とを備える。解析部404、第2の予測部405及び伸張部406は、例えばSoC(System-on-a-Chip)等のハードウェアにより実現されてもよい。その際、解析部404、第2の予測部405及び伸張部406は、第1の予測部101、決定部102及び圧縮部103を構成するチップと同じチップに作り込まれてもよい。
本実施形態において、第1の予測部101、決定部102及び圧縮部103の構成及び動作は、第1~第3の実施形態のいずれかと同様であってよいため、ここでは詳細な説明を省略する。
解析部404は、圧縮データにおける個々の符号化データcd(n)を解析することにより、符号化データcd(n)に含まれる処理フラグflag(n)等を解析情報として取得する。具体的には、解析部404は、個々の符号化データcd(n)に含まれる処理フラグflag(n)を解析情報として特定するとともに、必要に応じて、符号化データcd(n)に含まれるアドレスデータadr(n)や差分値diff(n)を解析情報として特定する。また、解析部404は、符号化データに、直近の有効アドレスを用いて予測値predD(n)を算出したことを示す付加情報が含まれている場合には、この付加情報を解析情報として特定し、さらに、符号化データが可変長符号化等で更に符号化されている場合には、符号化データを復号するために必要な情報等を解析情報として特定する。そして、解析部404は、取得した解析情報と圧縮データとを第2の予測部405に入力する。
第2の予測部405は、解析部404から圧縮データ及び解析情報を受け付けると、各符号化データcd(n)に関する予測値predD(n)を、必要に応じて算出する。
例えば、圧縮データが第1の実施形態に係る第1の予測部101、決定部102及び圧縮部103によって圧縮されたデータである場合、第2の予測部405は、処理対象の符号化データcd(n)が第1の符号化処理又は第3の符号化処理で符号化されたデータであることが解析情報に基づいて特定されると、当該符号化データcd(n)より前に実行された復号処理により得られた物理アドレス(以下、伸張済みアドレスという)dec(n-m)を用いて予測値predD(n)(=dec(n-m)+α)を算出する。ここで、m及びαは、第1の実施形態と同様であってよい。
また、圧縮データが第2の実施形態に係る第1の予測部101、決定部102及び圧縮部103によって圧縮されたデータである場合、第2の予測部405は、処理対象の符号化データcd(n)が第1の符号化処理又は第3の符号化処理で符号化されたデータであることが解析情報に基づいて特定されると、当該符号化データcd(n)より前に実行された復号処理により得られた物理アドレス(以下、伸張済みアドレスという)dec(n-m)を用いて予測値predD(n)を算出する。その際、予測値算出の基とする伸張済みアドレスdec(n-m)が有効アドレスであれば、第2の予測部405は、第1の所定値αを用いて予測値predD(n)(=dec(n-m)+α)を算出する。一方、伸張済みアドレスdec(n-m)が無効アドレスであれば、第2の予測部405は、第2の所定値βを用いて予測値predD(n)(=dec(n-m)+β)を算出する。ここで、m、α及びβは、第2の実施形態と同様であってよい。
さらに、圧縮データが第3の実施形態に係る第1の予測部101、決定部102及び圧縮部103によって圧縮されたデータである場合、第2の予測部405は、処理対象の符号化データcd(n)が第1の符号化処理又は第3の符号化処理で符号化されたデータであることが解析情報に基づいて特定されると、当該符号化データcd(n)より前に実行された復号処理により得られた物理アドレス(以下、伸張済みアドレスという)dec(n-m)を用いて予測値predD(n)を算出する。その際、予測値算出の基とする伸張済みアドレスdec(n-m)が有効アドレスであれば、第2の予測部405は、第1の所定値αを用いて予測値predD(n)(=dec(n-m)+α)を算出する。一方、伸張済みアドレスdec(n-m)が無効アドレスである場合、第2の予測部405は、解析情報(例えば付加情報)に基づいて、直近の有効アドレスである伸張済みアドレスadr(n-k)を用いるか否かを判定する。つづいて、第2の予測部405は、伸張済みアドレスadr(n-k)を用いないと判定した場合、伸張済みアドレスadr(n-m)に第2の所定値βを用いて予測値predD(n)(=dec(n-m)+β)を算出し、伸張済みアドレスadr(n-k)を用いると判定した場合、この伸張済みアドレスadr(n-k)に第3の所定値γを用いて予測値predD(n)(=dec(n-k)+γ)を算出する。ここで、k、m、α、β及びγは、第3の実施形態と同様であってよい。
なお、図10に示す構成において、第1の予測部101、決定部102及び圧縮部103が第1又は第2の実施形態に係る第1の予測部101、決定部102及び圧縮部103である場合、解析情報を用いずに予測値predD(n)を算出することが可能である。その場合、圧縮データの入力及び伸張部406への入力に対して、解析部404及び第2の予測部405が並列に設けられてもよい。
また、圧縮データが第1~第3の実施形態のいずれの第1の予測部101、決定部102及び圧縮部103によって圧縮されたデータである場合であっても、処理対象の符号化データcd(n)が第2の符号化処理で符号化されたデータである場合には、符号化データcd(n)にアドレスデータadr(n)が含まれている。そのため、そのような場合には、第2の予測部405による予測値predD(n)の算出が省略されてもよいし、算出された予測値predD(n)の伸張部406への入力が省略されてもよいし、伸張部406での予測値predD(n)の使用が省略されてもよい。
伸張部406は、第2の予測部405及び/又は解析部404から、圧縮データと、各符号化データcd(n)の予測値predD(n)と、各符号化データcd(n)に対して決定された復号処理とを入力すると、これらに基づいて各符号化データcd(n)を復号することで、入力データを復元して出力する。具体的には、伸張部406は、各符号化データcd(n)に対し、第1の復号処理、第2の復号処理及び第3の復号処理のいずれかを実行する。なお、復元された入力データは、第1の予測部101に入力された入力データと同じである。
第1の復号処理では、伸張部406は、処理対象の符号化データcd(n)に含まれる差分値diff(n)に基づく解析情報と、予測値predD(n)とから、符号化データcd(n)を復号してアドレスデータadr(n)を復元する。具体的には、伸張部406は、解析情報から差分値diff(n)を抽出し、この差分値diff(n)と予測値predD(n)とを加算する。これにより、第1の符号化処理により符号化された符号化データcd(n)が復号されて、アドレスデータadr(n)が復元される。
また、第2の復号処理では、伸張部406は、処理対象の符号化データcd(n)に含まれるアドレスデータadr(n)に基づく解析情報から、符号化データcd(n)を復号してアドレスデータadr(n)を復元する。具体的には、伸張部406は、解析情報からアドレスデータadr(n)を抽出し、このアドレスデータadr(n)を復号データとする。これにより、第2の符号化処理により符号化された符号化データcd(n)が復号されて、アドレスデータadr(n)が復元される。
さらに、第3の復号処理では、伸張部406は、予測値predD(n)から符号化データcd(n)の復号データを生成する。具体的には、伸張部406は、予測値predD(n)を復号データとする。これにより、第3の符号化処理により符号化された符号化データcd(n)が復号されて、アドレスデータadr(n)が復元される。
次に、本実施形態に係るデータ処理装置400の動作例について、図面を用いて詳細に説明する。ただし、本実施形態に係る圧縮動作は、第1~第3の実施形態で例示した圧縮動作と同様であってよいため、ここでは詳細な説明を省略する。
図11は、本実施形態に係るデータ処理装置が実行する伸張動作の一例を示すフローチャートである。図11に示すように、本実施形態に係る伸張動作では、データ処理装置400は、まず、外部から伸張対象の圧縮データを入力する(ステップS600)。次に、データ処理装置400は、圧縮データを解析部404に入力し、圧縮データにおける個々の符号化データcd(n)を解析することで、符号化データcd(n)に含まれる処理フラグflag(n)等を解析情報として取得する(ステップS700)。次に、データ処理装置400は、圧縮データ及び解析情報を第2の予測部405に入力して、圧縮データにおける各符号化データcd(n)に対して予測値predD(n)を算出する(ステップS800)。次に、データ処理装置400は、圧縮データ、解析情報及び予測値predD(n)を伸張部406に入力し、解析情報に含まれる処理フラグflag(n)で特定される復号処理にて各符号化データcd(n)を復号することで、圧縮データを伸張して入力データを復元する(ステップS900)。その後、データ処理装置400は、復元した入力データを出力し(ステップS1000)、本動作を終了する。
つづいて、図11のステップS700において解析部404が実行する解析動作について説明する。図12は、本実施形態に係る解析動作の一例を示すフローチャートである。
図12に示すように、解析部404は、圧縮データを入力すると(ステップS701)、圧縮データにおける処理対象の符号化データcd(n)を特定するための変数nに1を代入する(ステップS702)。
つぎに、解析部404は、圧縮データにおけるn番目の符号化データcd(n)を処理対象として選択する(ステップS703)。つづいて、解析部404は、選択した符号化データcd(n)を解析することで、符号化データcd(n)に含まれる処理フラグflag(n)等を取得するとともに、必要に応じて、アドレスデータadr(n)、差分値diff(n)、付加情報等を特定し(ステップS704)、特定したアドレスデータadr(n)、差分値diff(n)、付加情報等(解析情報)を第2の予測部405へ出力する(ステップS705)。なお、解析部404は、特定したこれらの情報を解析情報として所定のメモリ領域にストックしておき、全ての符号化データcd(n)に対する解析が完了した後に、ストックしておいた解析情報を一括して第2の予測部405へ出力してもよい。
つぎに、解析部404は、nがnの最大値n_max、すなわち、選択中の符号化データcd(n)が圧縮データにおける最後の符号化スデータcd(n_max)であるか否かを判定し(ステップS706)、nがnの最大値n_maxでない場合(ステップS706のNO)、ステップS707へ進み、変数nを1インクリメントして、ステップS703へリターンする。一方、nがnの最大値n_maxである場合(ステップS706のYES)、予測部101は、図11に示す動作へリターンする。
つづいて、図11のステップS800において第2の予測部405が実行する予測値算出動作について説明する。
図13は、本実施形態に係る予測値算出動作の一例を示すフローチャートであって、第1の実施形態に係る圧縮動作により生成された圧縮データを伸張する際に実行される予測値算出動作の一例を示すフローチャートである。なお、図13に示す動作、すなわち図11のステップS800の動作は、図12に示す予測部404の動作の実行中に並行して逐次実行される、いわゆるパイプライン処理であってよい。
図13に示すように、第1の実施形態に係る圧縮動作により生成された圧縮データに対して第2の予測部405が実行する予測値算出動作では、第2の予測部405は、例えば解析部404を介して圧縮データを入力すると(ステップS801)、処理対象の符号化データcd(n)を特定するための変数nに1を代入し(ステップS802)、圧縮データにおけるn番目の符号化データcd(n)を処理対象として選択する(ステップS803)。つづいて、第2の予測部405は、選択中の符号化データcd(n)に対して特定された解析情報が解析部404から入力されるのを待機し(ステップS804のNO)、入力された場合(ステップS804のYES)、上述において説明したように、当該符号化データcd(n)の解析情報に含まれている処理フラグflag(n)等に基づいて、符号化データcd(n)に対する予測値predD(n)を算出する(ステップS805)。つづいて、第2の予測部405は、算出した予測値predD(n)を符号化データcd(n)の解析情報と共に伸張部103へ出力し(ステップS806)、ステップS807へ進む。なお、第2の予測部405は、算出された予測値predD(n)を解析情報と共にストックしておき、全ての符号化データcd(n)に対する予測値predD(n)の算出が完了した後に、ストックしておいた予測値predD(n)及び解析情報を一括して伸張部406へ出力してもよい。
ステップS807では、第2の予測部405は、nがnの最大値n_maxであるか否かを判定し、nがnの最大値n_maxでない場合(ステップS807のNO)、ステップS808へ進み、変数nを1インクリメントして、ステップS803へリターンする。一方、nがnの最大値n_maxである場合(ステップS807のYES)、第2の予測部405は、図11に示す動作へリターンする。
また、図14は、本実施形態に係る予測値算出動作の他の一例を示すフローチャートであって、第2の実施形態に係る圧縮動作により生成された圧縮データを伸張する際に実行される予測値算出動作の一例を示すフローチャートである。なお、図14において、図13と同様の動作については、それを引用することで重複する説明を省略する。また、図14に示す動作は、図13に示した動作と同様に、図12に示す予測部404の動作の実行中に並行して逐次実行される、いわゆるパイプライン処理であってよい。
図14に示すように、第2の実施形態に係る圧縮動作により生成された圧縮データに対して第2の予測部405が実行する予測値算出動作は、図13に示す動作と同様の動作において、図13におけるステップS805及びS806の動作がステップS821~S824に示す動作に置き換えられている。
すなわち、本動作では、第2の予測部405は、選択した符号化データcd(n)の解析情報を解析部404から入力すると(ステップS804のYES)、予測値predD(n)の算出に用いる伸張済みデータdec(n-m)が有効アドレスであるか否かを判定する(ステップS821)。伸張済みアドレスdec(n-m)が有効アドレスである場合(ステップS821のYES)、第2の予測部405は、例えば第1の所定値αを用いることで、有効アドレス用の第1の予測値predD1(n)(=dec(n-m)+α)を算出し(ステップS822)、ステップS824へ進む。一方、伸張済みアドレスdec(n-m)が無効アドレスである場合(ステップS821のNO)、第2の予測部405は、例えば第2の所定値βを用いることで、無効アドレス用の第2の予測値predD2(n)(=dec(n-m)+β)を算出し(ステップS823)、ステップS824へ進む。ステップS824では、第2の予測部405は、図13のステップS807と同様に、ステップS822又はS823で算出された第1の予測値predD1(n)又は第2の予測値predD2(n)を符号化データcd(n)の解析情報と共に伸張部406へ出力する。
さらに、図15は、本実施形態に係る予測値算出動作の更に他の一例を示すフローチャートであって、第3の実施形態に係る圧縮動作により生成された圧縮データを伸張する際に実行される予測値算出動作の一例を示すフローチャートである。なお、図15において、図13又は図14と同様の動作については、それを引用することで重複する説明を省略する。また、図15に示す動作は、図13に示した動作と同様に、図12に示す予測部404の動作の実行中に並行して逐次実行される、いわゆるパイプライン処理であってよい。
図15に示すように、第3の実施形態に係る圧縮動作により生成された圧縮データに対して第2の予測部405が実行する予測値算出動作は、図13に示す動作と同様の動作において、図13におけるステップS805及びS806の動作がステップS821~S823及びステップS841~S843に示す動作に置き換えられている。これらの動作において、ステップS821~S823の動作は、図14に示すステップS821~S823の動作と同様であってよい。
すなわち、本動作では、第2の予測部405は、ステップS821の判断において、伸張済みアドレスdec(n-m)が有効アドレスでない場合(ステップS821のNO)、選択中の符号化データcd(n)の解析情報に付加情報が含まれているか否かを判断する(ステップS841)。付加情報とは、第3の実施形態においても説明したように、当該符号化データcd(n)を生成する際に、規定のアドレスデータadr(n-m)ではなく、直近の有効アドレスであるアドレスデータadr(n-k)を用いて予測値pred(n)を算出したことを示す情報である。符号化データcd(n)の解析情報に付加情報が含まれていない場合(ステップS841のNO)、第2の予測部405は、図14のステップS823に示す動作と同様に、例えば第2の所定値βを用いることで、無効アドレス用の第2の予測値predD2(n)(=dec(n-m)+β)を算出し(ステップS823)、ステップS843へ進む。一方、符号化データcd(n)の解析情報に付加情報が含まれている場合(ステップS841のYES)、第2の予測部405は、全ての伸張済みアドレスのうちの直近の有効アドレスである伸張済みアドレスdec(n-k)に基づき、例えば第3の所定値γを用いることで、第3の予測値predD3(n)(=dec(n-k)+γ)を算出し(ステップS842)、ステップS843へ進む。ステップS843では、第2の予測部405は、図13のステップS807と同様に、ステップS822、S823又はS842で算出された第1の予測値predD1(n)、第2の予測値predD2(n)又は第3の予測値predD3(n)を符号化データcd(n)の解析情報と共に伸張部406へ出力する。
つづいて、図11のステップS900において伸張部406が実行する伸張動作について説明する。図16は、本実施形態に係る伸張動作の一例を示すフローチャートである。なお、図16に示す動作、すなわち図11のステップS900の動作は、図13~図15のいずれかに示す第2の予測部405の動作の実行中に並行して逐次実行される、いわゆるパイプライン処理であってよい。
図16に示すように、伸張部406は、例えば第2の予測部405を介して圧縮データを入力すると(ステップS901)、処理対象の符号化データcd(n)を特定するための変数nに1を代入し(ステップS902)、圧縮データにおけるn番目の符号化データcd(n)を処理対象として選択する(ステップS903)。つづいて、伸張部406は、選択中の符号化データcd(n)に対して特定された予測値及び解析情報が第2の予測部405から入力されるのを待機し(ステップS904のNO)、入力された場合(ステップS904のYES)、選択された符号化データcd(n)の解析情報に含まれる処理フラグflag(n)を特定する(ステップS905)。
処理フラグflag(n)が“00”である場合(ステップS905のflag(n)=00)、すなわち、符号化データcd(n)が第1の符号化処理により符号化されたデータである場合、伸張部406は、解析情報に含まれる予測値predD(n)と差分値diff(n)とを加算することで、符号化データcd(n)の復号データを生成する第1の復号処理を実行し(ステップS906)、ステップS909へ進む。なお、生成された復号データは、所定のメモリ領域に蓄積される。
処理フラグflag(n)が“01”である場合(ステップS905のflag(n)=01)、すなわち、符号化データcd(n)が第2の符号化処理により符号化されたデータである場合、伸張部406は、解析情報に含まれるアドレスデータadr(n)を符号化データcd(n)の復号データとする第2の復号処理を実行し(ステップS907)、ステップS909へ進む。なお、生成された復号データは、所定のメモリ領域に蓄積される。
処理フラグflag(n)が“10”である場合(ステップS905のflag(n)=10)、すなわち、符号化データcd(n)が第1の符号化処理により符号化されたデータである場合、伸張部406は、当該符号化データcd(n)に対して算出された予測値predD(n)を符号化データcd(n)の復号データとする第3の復号処理を実行し(ステップS908)、ステップS909へ進む。なお、生成された復号データは、所定のメモリ領域に蓄積される。
ステップS909では、伸張部406は、nがnの最大値n_maxであるか否かを判定し、nがnの最大値n_maxでない場合(ステップS909のNO)、ステップS910へ進み、変数nを1インクリメントして、ステップS903へリターンする。一方、nがnの最大値n_maxである場合(ステップS909のYES)、伸張部406は、図11に示す動作へリターンする。これにより、所定のメモリ領域内には、圧縮データを伸張することで得られたオリジナルの入力データが蓄積される。
以上のように、本実施形態によれば、第1~3の実施形態に係る圧縮動作によって効率的に圧縮されたデータを的確に伸張することが可能なデータ処理装置400を実現することができる。
その他の構成、動作及び効果については、上述した実施形態と同様であるため、ここでは詳細な説明を省略する。
(第5の実施形態)
次に、第5の実施形態について、図面を参照して詳細に説明する。第5の実施形態では、第4の実施形態で例示したデータ処理装置400を記憶装置(以下、メモリシステムという)に適用した場合について、図面を用いて詳細に説明する。なお、以下では、第1~第4の実施形態のいずれかと同様の説明についてはそれを引用することで、重複する説明を省略する。
図17は、本実施形態に係るメモリシステムの概略構成例を示すブロック図である。図17に示すように、本実施形態に係るメモリシステム500は、データ処理装置400と、データ処理装置400から出力された圧縮データ511を格納する不揮発性メモリ510とを備える。この構成において、不揮発性メモリ510は、データを不揮発に記憶する不揮発性メモリであり、例えば、NAND型フラッシュメモリ(以下、単にNANDメモリという)である。ただし、NANDメモリに限らず、3次元構造フラッシュメモリ、ReRAM(Resistive Random Access Memory)、FeRAM(Ferroelectric Random Access Memory)等、NANDメモリ以外の種々の記憶媒体が不揮発性メモリ510の代わりに使用されてもよい。また、不揮発性メモリ510が半導体メモリであることは必須ではなく、半導体メモリ以外の種々の記憶媒体に対して本実施形態を適用することも可能である。
つづいて、図18に、本実施形態に係るメモリシステム500のより具体的な構成例を示す。図18に示すように、メモリシステム500は、メモリコントローラ520と不揮発性メモリ510とを備える。このようなメモリシステム500は、外部装置であるホスト530と接続可能である。ホスト530は、例えば、パーソナルコンピュータ、携帯端末などの電子機器であってよい。
メモリシステム500は、いわゆるSSD(Solid State Drive)や、メモリコントローラ520と不揮発性メモリ510とが1つのパッケージとして構成されるメモリカード等、不揮発性メモリ510を備える種々のメモリシステムであってよい。
メモリコントローラ520は、ホスト530からの書込み要求に従って不揮発性メモリ510への書込みを制御する。また、ホスト530からの読出し要求に従って不揮発性メモリ510からの読み出しを制御する。メモリコントローラ520は、ホストI/F(ホストインタフェース)527、メモリI/F(メモリインタフェース)523、制御部521、符号化/復号部(コーデック)524、データバッファ522及びRAM(Random Access Memory)528を備える。ホストI/F527、メモリI/F523、制御部521、コーデック524、データバッファ522及びRAM528は、内部バス529で相互に接続されている。
ホストI/F527は、ホスト530との間のインタフェース規格に従った処理を実施し、ホスト530から受信した命令、書込み対象のユーザデータなどを内部バス529に出力する。また、ホストI/F527は、不揮発性メモリ510から読み出されて復元されたユーザデータ、制御部521からの応答などをホスト530へ送信する。
メモリI/F523は、制御部521の指示に基づいて、不揮発性メモリ510への書込み処理を行う。また、メモリI/F523は、制御部521の指示に基づいて、不揮発性メモリ510からの読み出し処理を行う。
データバッファ522は、メモリコントローラ520がホスト530から受信したユーザデータを不揮発性メモリ510へ記憶するまでに一時格納する。また、データバッファ522は、不揮発性メモリ510から読み出されて復元されたユーザデータをホスト530へ送信するまでに一時格納する。データバッファ522には、例えば、SRAM(Static Random Access Memory)やDRAM(Dynamic Random Access Memory)やSDRAM(Synchronous Dynamic Random Access Memory)などの汎用メモリを用いることができる。
コーデック524は、データバッファ522に一旦格納されたユーザデータを符号化して不揮発性メモリ510へ書き込まれる符号語を生成する符号化器525と、不揮発性メモリ510から読み出された受信語を復号してユーザデータを復元する復号器526とを含む。なお、コーデック524により符号化されるデータには、ユーザデータ以外にも、論物変換テーブルなど、メモリコントローラ520内部で用いる制御データ等が含まれてもよい。また、コーデック524の符号化方式には、例えば、第1の実施形態で例示したハフマン符号などの可変長符号を用いた符号化方式の他、BCH(Bose-Chaudhuri-Hocquenghem)符号のような代数的符号を用いた符号化方式や、LDPC(Low-Density Parity-Check)符号のような疎グラフに基づく符号を用いた符号化方式等を採用することができる。
制御部521は、メモリシステム500の各構成要素を統括的に制御する。制御部521は、ホスト530からホストI/F527経由で命令を受けた場合に、その命令に従った制御を行う。例えば、制御部521は、ホスト530からの書き込み要求に従って、当該書込み要求と共にホスト530から受信してデータバッファ522内に蓄積されたユーザデータの不揮発性メモリ510への書き込みをメモリI/F523へ指示する。また、制御部521は、ホスト530からの読出し要求に従って、不揮発性メモリ510からのユーザデータの読み出しをメモリI/F523へ指示する。
また、制御部521は、ホスト530から受信したユーザデータの論理アドレス空間上の格納位置を示す論理アドレスと、実際にユーザデータが格納された物理アドレス空間上の格納領域を示す物理アドレスとの対応関係を管理する。この対応関係の管理は、論物変換テーブルを用いて行なわれる。そこで、制御部521は、ホスト530から書込み要求を受信した場合、当該書込み要求と共にホスト530から受信してデータバッファ522に蓄積されたユーザデータに対し、不揮発性メモリ510上の格納領域(メモリ領域)を決定し、決定した格納領域を示す物理アドレスとホスト530から通知された論理アドレスとを対応付けて論物変換テーブルに格納する。また、制御部521は、ホスト530から読出し要求を受信した場合、当該読出し要求により指定された論理アドレスを上述の論物変換テーブルを用いて物理アドレスに変換し、該物理アドレスからの読出しをメモリI/F523へ指示する。
制御部521によって管理される論物変換テーブルは、例えば、不揮発性メモリ510内の所定の領域に格納される。そこで、本実施形態では、不揮発性メモリ510内に格納する論物変換テーブルを、上述した第1~第3の実施形態に係る圧縮動作によって圧縮する。不揮発性メモリ510内の論物変換テーブルを圧縮データ511とすることで、不揮発性メモリ510内に論物変換テーブルが占める割合を低減することができる。その結果、不揮発性メモリ510のメモリ効率を高めることが可能となる。
また、不揮発性メモリ510内の論物変換テーブル(又はその圧縮データ511)は、必要に応じてその一部又は全部が読み出され、キャッシュデータ512としてRAM528内に格納される。RAM528は、例えば、メモリシステム500内に設けられて制御部521の作業領域として使用されるキャッシュメモリであり、ロードされたファームウエアや各種変換テーブルなどの種々のデータを記憶する。このRAM528は、メモリコントローラ520内に設けられてもよいし、メモリコントローラ520とは別に独立して設けられてもよい。また、RAM528には、例えば、DRAMやSRAMなどを用いることができる。
キャッシュメモリであるRAM528は、通常、不揮発性メモリ510よりもアクセス時の遅延時間が短い。そのため、論物変換テーブルの一部又は全部をキャッシュデータ512としてRAM528内に格納しておくことで、制御部521が論理アドレスを物理アドレスに変化する際の遅延時間を小さくし、メモリシステム500のレイテンシを小さくすることが可能となる。
また、論物変換テーブルにおけるより多くのデータ(論理アドレスと物理アドレスとの対応関係)をRAM528にキャッシュすることで、制御部521が論理アドレスを物理アドレスに変化する際のキャッシュヒット率を高めることが可能となる。そこで、本実施形態では、RAM528内に格納するキャッシュデータ512(論物変換テーブルの一部又は全部)を、上述した第1~第3の実施形態に係る圧縮動作によって圧縮する。キャッシュデータ512を圧縮データとする。これにより、多くのデータ(論理アドレスと物理アドレスとの対応関係)をRAM528にキャッシュすることが可能となるため、制御部521が論理アドレスを物理アドレスに変化する際のキャッシュヒット率が高められ、その結果、メモリシステム500のレイテンシをより小さくすることが可能となる。
なお、本実施形態において、図17に示したデータ処理装置400は、例えば、メモリコントローラ520内の制御部521によって実現される。ただし、これに限定されず、制御部521とは別構成のデータ処理装置400が内部バス529に接続される構成など、種々変更することが可能である。
以上のように、本実施形態によれば、不揮発性メモリ510内に格納されている論物変換テーブルを、上述した第1~第3の実施形態に係る圧縮動作によって効率的に圧縮することが可能となる。それにより、不揮発性メモリ510内に論物変換テーブル(圧縮データ511)が占める割合を低減することができ、その結果、不揮発性メモリ510のメモリ効率を高めることが可能となる。
また、本実施形態によれば、キャッシュメモリであるRAM528内のキャッシュデータ512を、上述した第1~第3の実施形態に係る圧縮動作によって効率的に圧縮することが可能となる。それにより、多くのデータ(論理アドレスと物理アドレスとの対応関係)をRAM528にキャッシュすることができるため、制御部521が論理アドレスを物理アドレスに変化する際のキャッシュヒット率が高めることが可能となる。その結果、メモリシステム500のレイテンシをより小さくすることが可能となる。
なお、第1~第3の実施形態に係る圧縮動作によって圧縮されてRAM528内に格納されるデータは、キャッシュデータ512に限られず、ファームウエアや各種変換テーブルなどの種々のデータを対象とすることが可能である。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
100,400…データ処理装置、101…予測部(第1の予測部)、102…決定部、103…圧縮部、404…解析部、405…第2の予測部、406…伸張部、500…メモリシステム、510…不揮発性メモリ、511…圧縮データ、512…キャッシュデータ、521…制御部、522…データバッファ、523…メモリI/F、524…コーデック、525…符号化器、526…復号器、527…ホストI/F、528…RAM、529…内部バス、530…ホスト

Claims (18)

  1. 複数の第1データそれぞれと複数の第2データそれぞれとの対応関係に関するデータを圧縮するデータ処理装置であって、
    複数の符号化処理のうちのいずれかを用いて前記第2データそれぞれを符号化することで、前記第2データそれぞれの符号化データを生成する圧縮部と、
    前記複数の第2データのうちの1つを選択し、前記選択中の第2データに対して第1予測値を求める第1の予測部と、
    前記選択中の第2データと、当該選択中の第2データに対して前記第1の予測部が算出した前記第1予測値との差分値に基づいて、前記圧縮部が前記選択中の第2データに対して実行する符号化処理を前記複数の符号化処理のなかから決定する決定部と、
    を備え、
    前記圧縮部は、前記決定部で決定された符号化処理に従って前記第2データそれぞれを符号化することで、前記対応関係に関するデータの圧縮データを生成し、
    前記第1の予測部は、前記複数の第2データのうち、前記選択中の第2データとは異なる第2データに基づいて前記第1予測値を求める、
    データ処理装置。
  2. 前記圧縮部は、前記差分値を前記符号化データとして出力する第1の符号化処理と、前記選択中の第2データを前記符号化データとして出力する第2の符号化処理とを選択的に実行し、
    前記決定部は、前記差分値の絶対値が所定の閾値以下の場合、前記圧縮部が前記選択中の第2データに対して実行する前記符号化処理を前記第1の符号化処理に決定し、前記差分値の絶対値が所定の閾値より大きい場合、前記圧縮部が前記選択中の第2データに対して実行する前記符号化処理を前記第2の符号化処理に決定する
    請求項に記載のデータ処理装置。
  3. 前記決定部は、前記選択中の第2データに対して前記圧縮部が実行する符号化処理として決定した符号化処理を特定するためのフラグを設定し、
    前記符号化データは、前記フラグを更に含む
    請求項に記載のデータ処理装置。
  4. 前記圧縮部は、前記フラグを前記符号化データとして出力する第3の符号化処理をさらに選択的に実行し、
    前記決定部は、前記差分値が0である場合、前記圧縮部が前記選択中の第2データに対して実行する前記符号化処理を前記第3の符号化処理に決定する
    請求項に記載のデータ処理装置。
  5. 前記第1の予測部は、前記複数の第2データのうち最初に選択された第2データに関しては、所定の値を前記第1予測値として選択するか、若しくは、前記第1予測値を求めないこととし、2番目以降に選択された第2データに関しては、前記複数の第2データのうちの他の第2データに基づいて前記第1予測値を算出する請求項1に記載のデータ処理装置。
  6. 前記第1の予測部は、前記他の第2データが有効データである場合、第1のパラメータを用いて前記第1予測値を算出し、前記他の第2データが無効データである場合、前記第1のパラメータとは異なる第2のパラメータを用いて前記第1予測値を算出する請求項に記載のデータ処理装置。
  7. 前記第1の予測部は、前記他の第2データが無効データである場合であって且つ前記選択中の第2データが有効データである場合、前記複数の第2データのうちの有効データである更に他の第2データに基づいて前記第1予測値を算出する請求項に記載のデータ処理装置。
  8. 前記第1の予測部は、前記更に他の第2データに基づいて前記第1予測値を算出したことを示す付加情報を生成し、
    前記圧縮部は、前記付加情報が生成された前記第2データの前記符号化データに前記付加情報を含める
    請求項に記載のデータ処理装置。
  9. 前記対応関係に関するデータは、ルックアップテーブルである請求項1に記載のデータ処理装置。
  10. 複数の復号処理のうちのいずれかを用いて複数の前記符号化データそれぞれを復号することで、前記圧縮データを伸張して前記対応関係に関するデータを復元する伸張部と、
    前記複数の符号化データのうちの1つを選択し、前記選択中の符号化データを解析し、当該解析の結果に基づいて、前記選択中の符号化データに対して前記伸張部が実行する復号処理を前記複数の復号処理のなかから決定する解析部と、
    前記選択中の符号化データの第2予測値を求める第2の予測部と、
    を備え、
    前記伸張部は、前記解析部で決定された復号処理に従って前記選択中の符号化データを復号するとともに、前記解析部による前記解析の結果に基づき、前記第2データが含まれていない前記選択中の符号化データに対しては前記第2の予測部で算出された前記第2予測値を用いて復号する
    請求項1に記載のデータ処理装置。
  11. 各符号化データは、各第2データに対して前記圧縮部が実行した符号化処理を特定するためのフラグが含まれ、
    前記解析部は、前記選択中の符号化データを解析することで、当該選択中の符号化データに含まれる前記フラグを特定し、前記特定したフラグに基づいて、前記選択中の符号化データに対して前記伸張部が実行する前記復号処理を前記複数の復号処理のなかから決定する
    請求項1に記載のデータ処理装置。
  12. 前記第2の予測部は、前記複数の符号化データのうち最初に選択された符号化データに関しては、所定の値を前記第2予測値として選択するか、若しくは、前記第2予測値を求めないこととし、2番目以降に選択された符号化データに関しては、前記複数の符号化データのうちの他の符号化データに基づいて前記第2予測値を算出する請求項1に記載のデータ処理装置。
  13. 前記第2の予測部は、前記他の符号化データが有効データである場合、第3のパラメータを用いて前記第2予測値を算出し、前記他の符号化データが無効データである場合、前記第3のパラメータとは異なる第4のパラメータを用いて前記第2予測値を算出する請求項1に記載のデータ処理装置。
  14. 前記第2の予測部は、前記他の符号化データが無効データである場合であって且つ前記選択中の符号化データが有効データである場合、前記複数の符号化データのうちの有効データである更に他の符号化データに基づいて前記第2予測値を算出する請求項1に記載のデータ処理装置。
  15. 前記第1の予測部は、前記複数の第2データのうち最初に選択された第2データに関しては、所定の値を前記第1予測値として選択するか、若しくは、前記第1予測値を求めないこととし、2番目以降に選択された第2データに関しては、前記複数の第2データのうちの他の第2データに基づいて前記第1予測値を算出し、
    前記第1の予測部は、前記他の第2データが無効データである場合であって且つ前記選択中の第2データが有効データである場合、前記複数の第2データのうちの有効データである更に他の第2データに基づいて前記第1予測値を算出するとともに、前記更に他の第2データに基づいて前記第1予測値を算出したことを示す付加情報を生成し、
    前記圧縮部は、前記付加情報が生成された前記第2データの前記符号化データに前記付加情報を含め、
    前記第2の予測部は、前記解析部による解析の結果、前記選択中の符号化データに前記付加情報が含まれている場合、前記複数の符号化データのうちの前記有効データである前記他の符号化データに基づいて前記第2予測値を算出する
    請求項1に記載のデータ処理装置。
  16. 前記第1データは、メモリに関する論理アドレス空間上の論理アドレスであり、
    前記第2データは、前記メモリに関する物理アドレス空間上の物理アドレスであり、
    前記対応関係に関するデータは、前記物理アドレスと前記論理アドレスとの対応関係を保持するデータである
    請求項1に記載のデータ処理装置。
  17. 請求項1に記載のデータ処理装置と、
    前記データ処理装置から出力された前記圧縮データを格納する不揮発性メモリと、
    を備えるメモリシステム。
  18. 複数の第1データそれぞれと複数の第2データそれぞれとの対応関係に関するデータを圧縮するデータ処理装置のデータ処理方法であって
    前記複数の第2データのうちの1つを選択し、前記選択中の第2データに対して第1予測値を求める第ステップと、
    前記選択中の第2データと、当該選択中の第2データに対して前記第1ステップで算出した前記第1予測値との差分値に基づいて、前記選択中の第2データに対して実行する符号化処理を複数の符号化処理のなかから決定する第ステップと、
    前記複数の符号化処理のうち前記第2ステップで決定した符号化処理を用いて前記第2データそれぞれを符号化することで、前記第2データそれぞれの符号化データを生成して、前記対応関係に関するデータの圧縮データを生成する第3ステップと、
    を備え、
    前記第1ステップでは、前記複数の第2データのうち、前記選択中の第2データとは異なる第2データに基づいて前記第1予測値を求める、
    データ処理方法。
JP2017235923A 2017-12-08 2017-12-08 データ処理装置、メモリシステム及びデータ処理方法 Active JP7010683B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2017235923A JP7010683B2 (ja) 2017-12-08 2017-12-08 データ処理装置、メモリシステム及びデータ処理方法
US16/115,237 US10686468B2 (en) 2017-12-08 2018-08-28 Data processing apparatus, memory system, and method of processing data

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2017235923A JP7010683B2 (ja) 2017-12-08 2017-12-08 データ処理装置、メモリシステム及びデータ処理方法

Publications (2)

Publication Number Publication Date
JP2019102027A JP2019102027A (ja) 2019-06-24
JP7010683B2 true JP7010683B2 (ja) 2022-01-26

Family

ID=66697436

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017235923A Active JP7010683B2 (ja) 2017-12-08 2017-12-08 データ処理装置、メモリシステム及びデータ処理方法

Country Status (2)

Country Link
US (1) US10686468B2 (ja)
JP (1) JP7010683B2 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110347432B (zh) * 2019-06-17 2021-09-14 海光信息技术股份有限公司 处理器、分支预测器及其数据处理方法、分支预测方法
US11791938B2 (en) * 2019-09-26 2023-10-17 Nvidia Corporation Parity check decoding
CN110765031B (zh) * 2019-09-27 2022-08-12 Oppo广东移动通信有限公司 数据存储方法、装置、移动终端及存储介质
JP2022043907A (ja) * 2020-09-04 2022-03-16 日新電機株式会社 監視装置および制御方法
JP2023070797A (ja) 2021-11-10 2023-05-22 キオクシア株式会社 メモリシステムおよび方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009265728A (ja) 2008-04-22 2009-11-12 Sony Corp 情報処理装置および方法、プログラムおよび記録媒体
US20130246689A1 (en) 2012-03-16 2013-09-19 Kabushiki Kaisha Toshiba Memory system, data management method, and computer

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005301885A (ja) 2004-04-15 2005-10-27 Kobe Steel Ltd データ記憶媒体へのアクセス方法,情報処理装置,データ記憶媒体へのアクセスプログラム
KR101353304B1 (ko) * 2008-10-24 2014-01-21 에스케이 텔레콤주식회사 적응적 보간 필터 계수를 이용한 영상 부호화/복호화 방법 및 장치
JP2010146326A (ja) 2008-12-19 2010-07-01 Toshiba Storage Device Corp 記憶装置、その制御方法及びその記憶装置を用いた電子装置
US9996461B1 (en) * 2014-09-24 2018-06-12 Marvell International Ltd. Dynamic differential compression for storage device look-up table
US10592248B2 (en) * 2016-08-30 2020-03-17 Advanced Micro Devices, Inc. Branch target buffer compression

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009265728A (ja) 2008-04-22 2009-11-12 Sony Corp 情報処理装置および方法、プログラムおよび記録媒体
US20130246689A1 (en) 2012-03-16 2013-09-19 Kabushiki Kaisha Toshiba Memory system, data management method, and computer
JP2013196115A (ja) 2012-03-16 2013-09-30 Toshiba Corp メモリシステム

Also Published As

Publication number Publication date
US10686468B2 (en) 2020-06-16
JP2019102027A (ja) 2019-06-24
US20190181881A1 (en) 2019-06-13

Similar Documents

Publication Publication Date Title
JP7010683B2 (ja) データ処理装置、メモリシステム及びデータ処理方法
TWI648622B (zh) 快閃記憶體之壓縮、讀取方法及應用其方法的裝置
US20180276114A1 (en) Memory controller
JP2008065834A (ja) フュージョンメモリ装置及び方法
US20150256201A1 (en) Memory controller, storage device, and memory control method
US8674858B2 (en) Method for compression and real-time decompression of executable code
TW201011774A (en) Data collection and compression in a solid state storage device
US10396827B2 (en) Data storage device
JPWO2009022531A1 (ja) データ圧縮伸張方法
US10193579B2 (en) Storage control device, storage system, and storage control method
JP2014132750A (ja) データ圧縮方法と、該方法を行う装置
KR20190052366A (ko) 컨트롤러 및 컨트롤러의 동작방법
JP2020149195A (ja) メモリシステム
US20160078051A1 (en) Data pattern detecting device, semiconductor device including the same, and operating method thereof
US20170077958A1 (en) Memory system and memory control method
US9444490B2 (en) Method of operating data compression circuit and devices to perform the same
US11424761B2 (en) Multiple symbol decoder
US11899934B2 (en) Compression device, compression and decompression device, and memory system
WO2014030189A1 (ja) 圧縮プログラム、圧縮方法、圧縮装置、伸張プログラム、伸張方法、伸張装置およびデータ転送システム
US20220076122A1 (en) Arithmetic apparatus and arithmetic method
JP2022121983A (ja) 文字列検索装置及びメモリシステム
JP6471012B2 (ja) 半導体メモリ、記憶装置、上位装置、データ処理システム、データ書き込み装置、データ書き込みプログラム、制御プログラム及びデータ書き込み方法
JP2021174472A (ja) ストレージシステム
JP6437428B2 (ja) 不揮発性半導体メモリのコントローラ
JP2021149389A (ja) メモリシステム

Legal Events

Date Code Title Description
A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20180905

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200915

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210915

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20211005

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20211203

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20211214

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220113

R150 Certificate of patent or registration of utility model

Ref document number: 7010683

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150